commit 40e2f8ee3e13e0e653b60c0997b338a57cdfb5a3 Author: 9700X_PC <9700X_PC@gmail.com> Date: Sun Jan 18 08:36:51 2026 +0900 Initial commit: Handover system with recovered files and train data diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a2f01e7 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +venv/ +build/ +__pycache__ \ No newline at end of file diff --git a/ARCHITECTURE.md b/ARCHITECTURE.md new file mode 100644 index 0000000..f6ad139 --- /dev/null +++ b/ARCHITECTURE.md @@ -0,0 +1,516 @@ +# 전동차 업무 인수인계 및 고장관리 프로그램 아키텍처 + +## 1. 프로젝트 개요 + +### 1.1 목적 +- 전동차 운용실의 24시간 교대 근무 환경에서 업무 인수인계 및 고장관리를 위한 윈도우 데스크톱 애플리케이션 +- 기존 엑셀 매크로 기반 시스템을 현대적인 GUI 애플리케이션으로 대체 + +### 1.2 기술 스택 +- **Frontend**: PySide6 (Qt for Python) +- **Database**: SQLite (로컬) → Supabase (원격, 추후 연동) +- **Font**: GmarketSans +- **Platform**: Windows Native + +### 1.3 설계 원칙 +- 모듈화된 구조로 유지보수성 확보 +- 상속 기반 확장성 설계 +- 상세한 로깅 및 주석 +- 현대적이고 미려한 커스텀 UI + +--- + +## 2. 프로젝트 구조 + +``` +handover/ +├── main.py # 진입점 +├── requirements.txt # 의존성 패키지 +├── ARCHITECTURE.md # 아키텍처 문서 +├── config.ini # 설정 파일 +├── assets/ # 리소스 +│ ├── fonts/ # 폰트 파일 +│ │ └── GmarketSans/ +│ ├── icons/ # 아이콘 +│ ├── images/ # 이미지 +│ └── styles/ # QSS 스타일시트 +│ ├── dark_theme.qss +│ └── light_theme.qss +│ +├── core/ # 핵심 모듈 +│ ├── __init__.py +│ ├── constants.py # 상수 정의 +│ ├── config.py # 설정 관리 +│ ├── logger.py # 로깅 시스템 +│ ├── signals.py # 전역 시그널 +│ └── exceptions.py # 커스텀 예외 +│ +├── database/ # 데이터베이스 모듈 +│ ├── __init__.py +│ ├── db_manager.py # DB 연결 관리 +│ ├── models.py # 데이터 모델 정의 +│ ├── crud.py # CRUD 연산 +│ ├── migrations.py # DB 마이그레이션 +│ └── sync_manager.py # 원격 DB 동기화 (추후) +│ +├── services/ # 비즈니스 로직 +│ ├── __init__.py +│ ├── auth_service.py # 인증/권한 서비스 +│ ├── weather_service.py # 날씨 정보 서비스 +│ ├── update_service.py # 업데이트 서비스 +│ ├── backup_service.py # 백업 서비스 +│ └── notification_service.py # 알림 서비스 +│ +├── ui/ # UI 모듈 +│ ├── __init__.py +│ ├── main_window.py # 메인 윈도우 +│ │ +│ ├── base/ # 기본 UI 컴포넌트 +│ │ ├── __init__.py +│ │ ├── base_widget.py # 기본 위젯 클래스 +│ │ ├── base_dialog.py # 기본 다이얼로그 클래스 +│ │ ├── base_section.py # 기본 섹션 클래스 +│ │ └── base_table.py # 기본 테이블 클래스 +│ │ +│ ├── components/ # 재사용 가능 컴포넌트 +│ │ ├── __init__.py +│ │ ├── custom_button.py # 커스텀 버튼 +│ │ ├── custom_input.py # 커스텀 입력 필드 +│ │ ├── custom_table.py # 커스텀 테이블 +│ │ ├── custom_calendar.py # 커스텀 캘린더 +│ │ ├── toggle_switch.py # 토글 스위치 +│ │ ├── dropdown.py # 드롭다운 +│ │ ├── splitter.py # 분리바 +│ │ ├── popup_widget.py # 팝업 위젯 +│ │ └── train_info_popup.py # 편성 정보 팝업 +│ │ +│ ├── panels/ # 패널 (영역별 UI) +│ │ ├── __init__.py +│ │ ├── info_bar.py # 상단 인포바 (10%) +│ │ ├── status_bar.py # 하단 상태바 (10%) +│ │ ├── content_panel.py # 중앙 컨텐츠 (80%) +│ │ ├── section_panel.py # 왼쪽 섹션 패널 (70%) +│ │ └── todo_panel.py # 오른쪽 Todo 패널 (30%) +│ │ +│ ├── sections/ # 섹션별 UI +│ │ ├── __init__.py +│ │ ├── instruction_section.py # 지시 섹션 +│ │ ├── fault_section.py # 고장 섹션 +│ │ ├── work_section.py # 작업 섹션 +│ │ └── misc_section.py # 기타 섹션 +│ │ +│ ├── dialogs/ # 다이얼로그 +│ │ ├── __init__.py +│ │ ├── login_dialog.py # 로그인 다이얼로그 +│ │ ├── settings_dialog.py # 설정 다이얼로그 +│ │ ├── user_management_dialog.py # 사용자 관리 +│ │ ├── input_dialog.py # 입력 다이얼로그 +│ │ ├── train_input_dialog.py # 편성 입력 다이얼로그 +│ │ ├── todo_input_dialog.py # Todo 입력 다이얼로그 +│ │ └── memo_input_dialog.py # 메모 입력 다이얼로그 +│ │ +│ └── widgets/ # Todo/메모 관련 위젯 +│ ├── __init__.py +│ ├── daily_inspection.py # 일상검수 편성 위젯 +│ ├── todo_list.py # 할일 목록 위젯 +│ └── memo_widget.py # 메모 위젯 +│ +└── utils/ # 유틸리티 + ├── __init__.py + ├── helpers.py # 헬퍼 함수 + ├── validators.py # 유효성 검사 + ├── formatters.py # 포맷터 + └── common_methods.py # 공통 메서드 (편성 팝업 등) +``` + +--- + +## 3. 모듈 의존성 다이어그램 + +``` +┌─────────────────────────────────────────────────────────────────────────┐ +│ main.py │ +│ (Application Entry) │ +└──────────────────────────────────┬──────────────────────────────────────┘ + │ + ▼ +┌─────────────────────────────────────────────────────────────────────────┐ +│ MainWindow (UI) │ +│ ui/main_window.py │ +└──────┬───────────────────────────┬──────────────────────────────────────┘ + │ │ + ▼ ▼ +┌──────────────┐ ┌─────────────────────────────────────────────────┐ +│ Services │ │ UI Modules │ +│ ────────── │ │ ───────────────────────────────────────────── │ +│ auth_service │◄────────┤ ┌──────────┐ ┌──────────┐ ┌──────────────┐ │ +│ weather_srv │ │ │ info_bar │ │ sections │ │ todo_panel │ │ +│ update_srv │ │ └──────────┘ └──────────┘ └──────────────┘ │ +│ backup_srv │ │ │ │ │ │ +└──────┬───────┘ │ ▼ ▼ ▼ │ + │ │ ┌─────────────────────────────────────────┐ │ + │ │ │ Base Components │ │ + │ │ │ base_widget, base_section, base_table │ │ + │ │ └─────────────────────────────────────────┘ │ + │ └─────────────────────────┬───────────────────────┘ + │ │ + ▼ ▼ +┌─────────────────────────────────────────────────────────────────────────┐ +│ Core Module │ +│ config, logger, constants, signals │ +└──────────────────────────────────┬──────────────────────────────────────┘ + │ + ▼ +┌─────────────────────────────────────────────────────────────────────────┐ +│ Database Module │ +│ db_manager, models, crud, sync │ +└─────────────────────────────────────────────────────────────────────────┘ +``` + +--- + +## 4. UI 레이아웃 구조 + +``` +┌─────────────────────────────────────────────────────────────────────────┐ +│ Title Bar │ +│ [앱 아이콘] 전동차 인수인계 시스템 [─][□][X] │ +├─────────────────────────────────────────────────────────────────────────┤ +│ Menu Bar │ +│ [파일] [편집] [보기] [설정] [도움말] │ +├─────────────────────────────────────────────────────────────────────────┤ +│ INFO BAR (10%) │ +│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌──────────────────┐ │ +│ │ 2026.01.03 │ A팀 │ 주간 │ 팀변경 │ 🌤 서울 -3°C 맑음 │ │ +│ └─────────┘ └─────────┘ └─────────┘ └─────────┘ └──────────────────┘ │ +├─────────────────────────────────────────────────────────────────────────┤ +│ CONTENT AREA (80%) │ +│ ┌───────────────────────────────────┬─────────────────────────────┐ │ +│ │ SECTION PANEL (70%) │ TODO PANEL (30%) │◄──┼── Splitter +│ │ ┌───────────────────────────┐ │ ┌───────────────────────┐ │ │ +│ │ │ [지시][고장][작업][기타] │ │ │ 일상검수 (30%) │ │ │ +│ │ │ ─────────────────────────│ │ │ ┌─────┬─────────────┐│ │ │ +│ │ │ 날짜 │팀│내용 │확인 │ │ │ │주간 │①②③④⑤ ││ │ │ +│ │ │──────┼──┼────────┼─────│ │ │ │야간 │①②③④⑤ ││ │ │ +│ │ │01/03 │A │지시내용1│✓✓✓ │ │ │ └─────┴─────────────┘│ │ │ +│ │ │01/02 │B │지시내용2│✓✓✗ │ │ ├───────────────────────┤ │ │ +│ │ │... │ │ │ │ │ │ 할일 목록 (35%) │ │ │ +│ │ └───────────────────────────┘ │ │ ┌─────────────────┐ │ │ │ +│ │ │ │ │□ 점검 사항 1 │ │ │ │ +│ │ │ │ │☑ 점검 사항 2 │ │ │ │ +│ │ │ │ └─────────────────┘ │ │ │ +│ │ │ ├───────────────────────┤ │ │ +│ │ │ │ 메모 (35%) │ │ │ +│ │ │ │ ┌─────────────────┐ │ │ │ +│ │ │ │ │ 메모 내용... │ │ │ │ +│ │ │ │ └─────────────────┘ │ │ │ +│ │ │ └───────────────────────┘ │ │ +│ └───────────────────────────────────┴─────────────────────────────┘ │ +├─────────────────────────────────────────────────────────────────────────┤ +│ STATUS BAR (10%) │ +│ [접속자: 홍길동(검수팀)] [DB상태: 정상] [마지막 동기화: 10:30] [v1.0.0] │ +└─────────────────────────────────────────────────────────────────────────┘ +``` + +--- + +## 5. 데이터베이스 스키마 + +### 5.1 사용자 테이블 (users) +```sql +CREATE TABLE users ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + username TEXT UNIQUE NOT NULL, + password_hash TEXT NOT NULL, + name TEXT NOT NULL, + department TEXT NOT NULL, -- 검수팀, 운전팀, 차량팀 등 + role TEXT NOT NULL, -- admin, editor, viewer + is_active BOOLEAN DEFAULT 1, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP +); +``` + +### 5.2 팀 테이블 (teams) +```sql +CREATE TABLE teams ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + name TEXT NOT NULL, -- A팀, B팀, C팀, D팀 + shift_type TEXT, -- 주간, 야간 + is_active BOOLEAN DEFAULT 1, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP +); +``` + +### 5.3 지시 섹션 (instructions) +```sql +CREATE TABLE instructions ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + created_date DATE NOT NULL, + created_team TEXT NOT NULL, + instructor TEXT, -- 지시자 + instruction_content TEXT NOT NULL, -- 지시내용 + instruction_date DATE, -- 지시일자 + is_continuous BOOLEAN DEFAULT 0, -- 지속여부 + team_confirmations TEXT, -- JSON: {"A": true, "B": false, ...} + is_completed BOOLEAN DEFAULT 0, + completed_at DATETIME, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP, + created_by INTEGER REFERENCES users(id) +); +``` + +### 5.4 고장 섹션 (faults) +```sql +CREATE TABLE faults ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + created_date DATE NOT NULL, + created_team TEXT NOT NULL, + occurrence_date DATE, -- 발생일자 + train_number TEXT, -- 편성 + car_number TEXT, -- 호차 + fault_code TEXT, -- 고장코드 + device_category TEXT, -- 장치분류 + occurrence_station TEXT, -- 발생역 + occurrence_time TIME, -- 발생시간 + fault_content TEXT, -- 고장내용 + action_content TEXT, -- 조치내용 + action_team TEXT, -- 조치팀 + team_confirmations TEXT, -- JSON + is_completed BOOLEAN DEFAULT 0, + completed_at DATETIME, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP, + created_by INTEGER REFERENCES users(id) +); +``` + +### 5.5 작업 섹션 (works) +```sql +CREATE TABLE works ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + created_date DATE NOT NULL, + created_team TEXT NOT NULL, + work_date DATE, -- 작업일정 + work_entity TEXT, -- 작업주체 + target_train TEXT, -- 대상편성 + target_device TEXT, -- 대상기기 + work_content TEXT, -- 작업내용 + remarks TEXT, -- 특이사항 + team_confirmations TEXT, -- JSON + is_completed BOOLEAN DEFAULT 0, + completed_at DATETIME, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP, + created_by INTEGER REFERENCES users(id) +); +``` + +### 5.6 기타 섹션 (miscs) +```sql +CREATE TABLE miscs ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + created_date DATE NOT NULL, + created_team TEXT NOT NULL, + reporter TEXT, -- 전달자 + report_content TEXT, -- 전달내용 + remarks TEXT, -- 특이사항 + related_document TEXT, -- 관련문서 + team_confirmations TEXT, -- JSON + is_completed BOOLEAN DEFAULT 0, + completed_at DATETIME, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP, + created_by INTEGER REFERENCES users(id) +); +``` + +### 5.7 일상검수 (daily_inspections) +```sql +CREATE TABLE daily_inspections ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + inspection_date DATE NOT NULL, + shift_type TEXT NOT NULL, -- 주간, 야간 + slot_number INTEGER NOT NULL, -- 1~5 + train_number TEXT, -- 편성번호 + cleaning_type TEXT, -- 없음, 중청소, 대청소 + has_work BOOLEAN DEFAULT 0, -- 작업 여부 + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP, + created_by INTEGER REFERENCES users(id) +); +``` + +### 5.8 할일 목록 (todos) +```sql +CREATE TABLE todos ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + todo_date DATE NOT NULL, + target_train TEXT, -- 대상편성 + schedule TEXT, -- 일정 + content TEXT NOT NULL, -- 내용 + is_completed BOOLEAN DEFAULT 0, + completed_at DATETIME, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP, + created_by INTEGER REFERENCES users(id) +); +``` + +### 5.9 메모 (memos) +```sql +CREATE TABLE memos ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + memo_date DATE NOT NULL, + content TEXT NOT NULL, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP, + created_by INTEGER REFERENCES users(id) +); +``` + +### 5.10 설정 (settings) +```sql +CREATE TABLE settings ( + key TEXT PRIMARY KEY, + value TEXT, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP +); +``` + +--- + +## 6. 클래스 상속 구조 + +### 6.1 위젯 상속 구조 +``` +QWidget + └── BaseWidget + ├── InfoBar + ├── StatusBar + ├── ContentPanel + │ ├── SectionPanel + │ └── TodoPanel + └── BaseSection + ├── InstructionSection + ├── FaultSection + ├── WorkSection + └── MiscSection +``` + +### 6.2 다이얼로그 상속 구조 +``` +QDialog + └── BaseDialog + ├── LoginDialog + ├── SettingsDialog + ├── UserManagementDialog + └── InputDialog + ├── TrainInputDialog + ├── TodoInputDialog + └── MemoInputDialog +``` + +### 6.3 테이블 상속 구조 +``` +QTableWidget + └── BaseTable + └── SectionTable + ├── InstructionTable + ├── FaultTable + ├── WorkTable + └── MiscTable +``` + +--- + +## 7. 권한 시스템 + +### 7.1 부서별 권한 +| 부서 | 역할 | 권한 | +|------|------|------| +| 검수팀 | admin | 모든 CRUD 가능, 사용자 관리, 설정 변경 | +| 기타 부서 | viewer | 조회만 가능 | + +### 7.2 권한 확인 플로우 +``` +사용자 로그인 + ↓ +권한 확인 (department, role) + ↓ +UI 요소 활성화/비활성화 + ↓ +DB 작업 시 권한 재확인 +``` + +--- + +## 8. 공통 메서드 (편성 팝업 등) + +### 8.1 TrainInfoMixin +```python +class TrainInfoMixin: + """편성 정보 관련 공통 기능을 제공하는 Mixin 클래스""" + + def show_train_popup(self, train_number: str, position: QPoint): + """마우스 호버 시 편성의 최근 고장 목록을 팝업으로 표시""" + pass + + def get_recent_faults(self, train_number: str, limit: int = 10) -> List[dict]: + """특정 편성의 최근 고장 목록 조회""" + pass + + def open_train_detail(self, train_number: str): + """편성 상세 정보 다이얼로그 열기""" + pass +``` + +--- + +## 9. 업데이트 시스템 + +### 9.1 업데이트 플로우 +``` +앱 시작 + ↓ +버전 확인 (주기적: 1시간마다) + ↓ +새 버전 발견 시 알림 + ↓ +사용자 확인 후 다운로드 + ↓ +앱 재시작 후 업데이트 적용 +``` + +--- + +## 10. 로깅 시스템 + +### 10.1 로그 레벨 +- DEBUG: 상세 디버그 정보 +- INFO: 일반 정보 +- WARNING: 경고 +- ERROR: 오류 +- CRITICAL: 심각한 오류 + +### 10.2 로그 저장 +- 파일: logs/app_YYYYMMDD.log +- 최대 보관: 30일 +- 로테이션: 일별 + +--- + +## 11. 테마 시스템 + +### 11.1 지원 테마 +- Light Theme: 밝은 테마 +- Dark Theme: 어두운 테마 + +### 11.2 커스텀 스타일 +- GmarketSans 폰트 적용 +- 현대적인 둥근 모서리 +- 그라데이션 효과 +- 애니메이션 전환 + + diff --git a/HandoverSystem.spec b/HandoverSystem.spec new file mode 100644 index 0000000..27a00e3 --- /dev/null +++ b/HandoverSystem.spec @@ -0,0 +1,45 @@ +# -*- mode: python ; coding: utf-8 -*- + + +a = Analysis( + ['main.py'], + pathex=[], + binaries=[], + datas=[('assets', 'assets'), ('config.ini', '.'), ('database', 'database')], + hiddenimports=[], + hookspath=[], + hooksconfig={}, + runtime_hooks=[], + excludes=[], + noarchive=False, + optimize=0, +) +pyz = PYZ(a.pure) + +exe = EXE( + pyz, + a.scripts, + [], + exclude_binaries=True, + name='HandoverSystem', + debug=False, + bootloader_ignore_signals=False, + strip=False, + upx=True, + console=False, + disable_windowed_traceback=False, + argv_emulation=False, + target_arch=None, + codesign_identity=None, + entitlements_file=None, + icon=['assets\\icons\\app_icon.ico'], +) +coll = COLLECT( + exe, + a.binaries, + a.datas, + strip=False, + upx=True, + upx_exclude=[], + name='HandoverSystem', +) diff --git a/assets/icons/app_icon.ico b/assets/icons/app_icon.ico new file mode 100644 index 0000000..3d1a806 Binary files /dev/null and b/assets/icons/app_icon.ico differ diff --git a/assets/styles/dark_theme.qss b/assets/styles/dark_theme.qss new file mode 100644 index 0000000..cab57b3 --- /dev/null +++ b/assets/styles/dark_theme.qss @@ -0,0 +1,350 @@ +/* + * 다크 테마 스타일시트 + * 전동차 업무 인수인계 시스템 + */ + +/* ======================================== + 기본 위젯 + ======================================== */ + +QWidget { + background-color: #0f172a; + color: #f8fafc; + font-family: 'GmarketSans', sans-serif; +} + +QMainWindow { + background-color: #0f172a; +} + +/* ======================================== + 라벨 + ======================================== */ + +QLabel { + color: #f8fafc; +} + +QLabel[class="secondary"] { + color: #94a3b8; +} + +QLabel[class="title"] { + font-size: 18px; + font-weight: bold; +} + +/* ======================================== + 버튼 + ======================================== */ + +QPushButton { + background-color: #334155; + color: #f8fafc; + border: none; + border-radius: 8px; + padding: 10px 20px; + font-weight: 500; +} + +QPushButton:hover { + background-color: #475569; +} + +QPushButton:pressed { + background-color: #1e293b; +} + +QPushButton:disabled { + background-color: #1e293b; + color: #64748b; +} + +QPushButton[class="primary"] { + background-color: #3b82f6; + color: white; +} + +QPushButton[class="primary"]:hover { + background-color: #2563eb; +} + +QPushButton[class="danger"] { + background-color: #ef4444; + color: white; +} + +QPushButton[class="danger"]:hover { + background-color: #dc2626; +} + +/* ======================================== + 입력 필드 + ======================================== */ + +QLineEdit { + background-color: #1e293b; + color: #f8fafc; + border: 2px solid #334155; + border-radius: 8px; + padding: 10px 14px; + selection-background-color: #3b82f6; +} + +QLineEdit:focus { + border-color: #3b82f6; +} + +QLineEdit:disabled { + background-color: #334155; + color: #64748b; +} + +QTextEdit { + background-color: #1e293b; + color: #f8fafc; + border: 2px solid #334155; + border-radius: 8px; + padding: 10px; + selection-background-color: #3b82f6; +} + +QTextEdit:focus { + border-color: #3b82f6; +} + +/* ======================================== + 콤보박스 + ======================================== */ + +QComboBox { + background-color: #1e293b; + color: #f8fafc; + border: 2px solid #334155; + border-radius: 8px; + padding: 10px 14px; + min-height: 20px; +} + +QComboBox:hover { + border-color: #3b82f6; +} + +QComboBox::drop-down { + border: none; + width: 30px; +} + +QComboBox::down-arrow { + image: none; + border-left: 5px solid transparent; + border-right: 5px solid transparent; + border-top: 6px solid #f8fafc; + margin-right: 10px; +} + +QComboBox QAbstractItemView { + background-color: #1e293b; + color: #f8fafc; + border: 1px solid #334155; + border-radius: 8px; + selection-background-color: #3b82f6; +} + +/* ======================================== + 테이블 + ======================================== */ + +QTableWidget { + background-color: #0f172a; + color: #f8fafc; + border: 1px solid #334155; + border-radius: 8px; + gridline-color: transparent; +} + +QTableWidget::item { + padding: 8px; + border-bottom: 1px solid #334155; +} + +QTableWidget::item:selected { + background-color: #3b82f6; + color: white; +} + +QTableWidget::item:hover { + background-color: #1e3a5f; +} + +QHeaderView::section { + background-color: #334155; + color: #f8fafc; + padding: 12px 8px; + border: none; + border-bottom: 2px solid #334155; + font-weight: bold; +} + +/* ======================================== + 스크롤바 + ======================================== */ + +QScrollBar:vertical { + background-color: #1e293b; + width: 10px; + border-radius: 5px; +} + +QScrollBar::handle:vertical { + background-color: #475569; + border-radius: 5px; + min-height: 20px; +} + +QScrollBar::handle:vertical:hover { + background-color: #3b82f6; +} + +QScrollBar::add-line:vertical, +QScrollBar::sub-line:vertical { + height: 0; +} + +QScrollBar:horizontal { + background-color: #1e293b; + height: 10px; + border-radius: 5px; +} + +QScrollBar::handle:horizontal { + background-color: #475569; + border-radius: 5px; + min-width: 20px; +} + +QScrollBar::handle:horizontal:hover { + background-color: #3b82f6; +} + +/* ======================================== + 탭 위젯 + ======================================== */ + +QTabWidget::pane { + background-color: #1e293b; + border: 1px solid #334155; + border-radius: 12px; + border-top-left-radius: 0; +} + +QTabBar::tab { + background-color: #1e293b; + color: #94a3b8; + border: 1px solid #334155; + border-bottom: none; + padding: 12px 24px; + margin-right: 4px; + border-top-left-radius: 8px; + border-top-right-radius: 8px; +} + +QTabBar::tab:selected { + background-color: #3b82f6; + color: white; + border-color: #3b82f6; +} + +QTabBar::tab:hover:!selected { + background-color: #334155; +} + +/* ======================================== + 메뉴 + ======================================== */ + +QMenuBar { + background-color: #1e293b; + color: #f8fafc; + border-bottom: 1px solid #334155; +} + +QMenuBar::item { + padding: 8px 16px; + border-radius: 4px; +} + +QMenuBar::item:selected { + background-color: #334155; +} + +QMenu { + background-color: #1e293b; + color: #f8fafc; + border: 1px solid #334155; + border-radius: 8px; + padding: 4px; +} + +QMenu::item { + padding: 8px 24px; + border-radius: 4px; +} + +QMenu::item:selected { + background-color: #334155; +} + +QMenu::separator { + height: 1px; + background-color: #334155; + margin: 4px 8px; +} + +/* ======================================== + 체크박스 + ======================================== */ + +QCheckBox { + color: #f8fafc; + spacing: 8px; +} + +QCheckBox::indicator { + width: 18px; + height: 18px; + border-radius: 4px; +} + +QCheckBox::indicator:unchecked { + border: 2px solid #64748b; + background-color: transparent; +} + +QCheckBox::indicator:checked { + border: 2px solid #22c55e; + background-color: #22c55e; +} + +/* ======================================== + 프레임 + ======================================== */ + +QFrame[frameShape="4"], +QFrame[frameShape="5"] { + color: #334155; +} + +/* ======================================== + 툴팁 + ======================================== */ + +QToolTip { + background-color: #1e293b; + color: #f8fafc; + border: 1px solid #334155; + border-radius: 6px; + padding: 8px; +} + + diff --git a/assets/styles/light_theme.qss b/assets/styles/light_theme.qss new file mode 100644 index 0000000..9a6f78d --- /dev/null +++ b/assets/styles/light_theme.qss @@ -0,0 +1,350 @@ +/* + * 라이트 테마 스타일시트 + * 전동차 업무 인수인계 시스템 + */ + +/* ======================================== + 기본 위젯 + ======================================== */ + +QWidget { + background-color: #f8fafc; + color: #1e293b; + font-family: 'GmarketSans', sans-serif; +} + +QMainWindow { + background-color: #f8fafc; +} + +/* ======================================== + 라벨 + ======================================== */ + +QLabel { + color: #1e293b; +} + +QLabel[class="secondary"] { + color: #64748b; +} + +QLabel[class="title"] { + font-size: 18px; + font-weight: bold; +} + +/* ======================================== + 버튼 + ======================================== */ + +QPushButton { + background-color: #e2e8f0; + color: #1e293b; + border: none; + border-radius: 8px; + padding: 10px 20px; + font-weight: 500; +} + +QPushButton:hover { + background-color: #cbd5e1; +} + +QPushButton:pressed { + background-color: #94a3b8; +} + +QPushButton:disabled { + background-color: #f1f5f9; + color: #94a3b8; +} + +QPushButton[class="primary"] { + background-color: #3b82f6; + color: white; +} + +QPushButton[class="primary"]:hover { + background-color: #2563eb; +} + +QPushButton[class="danger"] { + background-color: #ef4444; + color: white; +} + +QPushButton[class="danger"]:hover { + background-color: #dc2626; +} + +/* ======================================== + 입력 필드 + ======================================== */ + +QLineEdit { + background-color: #ffffff; + color: #1e293b; + border: 2px solid #e2e8f0; + border-radius: 8px; + padding: 10px 14px; + selection-background-color: #3b82f6; +} + +QLineEdit:focus { + border-color: #3b82f6; +} + +QLineEdit:disabled { + background-color: #f1f5f9; + color: #94a3b8; +} + +QTextEdit { + background-color: #ffffff; + color: #1e293b; + border: 2px solid #e2e8f0; + border-radius: 8px; + padding: 10px; + selection-background-color: #3b82f6; +} + +QTextEdit:focus { + border-color: #3b82f6; +} + +/* ======================================== + 콤보박스 + ======================================== */ + +QComboBox { + background-color: #ffffff; + color: #1e293b; + border: 2px solid #e2e8f0; + border-radius: 8px; + padding: 10px 14px; + min-height: 20px; +} + +QComboBox:hover { + border-color: #3b82f6; +} + +QComboBox::drop-down { + border: none; + width: 30px; +} + +QComboBox::down-arrow { + image: none; + border-left: 5px solid transparent; + border-right: 5px solid transparent; + border-top: 6px solid #1e293b; + margin-right: 10px; +} + +QComboBox QAbstractItemView { + background-color: #ffffff; + color: #1e293b; + border: 1px solid #e2e8f0; + border-radius: 8px; + selection-background-color: #3b82f6; +} + +/* ======================================== + 테이블 + ======================================== */ + +QTableWidget { + background-color: #ffffff; + color: #1e293b; + border: 1px solid #e2e8f0; + border-radius: 8px; + gridline-color: transparent; +} + +QTableWidget::item { + padding: 8px; + border-bottom: 1px solid #e2e8f0; +} + +QTableWidget::item:selected { + background-color: #3b82f6; + color: white; +} + +QTableWidget::item:hover { + background-color: #dbeafe; +} + +QHeaderView::section { + background-color: #e2e8f0; + color: #1e293b; + padding: 12px 8px; + border: none; + border-bottom: 2px solid #e2e8f0; + font-weight: bold; +} + +/* ======================================== + 스크롤바 + ======================================== */ + +QScrollBar:vertical { + background-color: #f8fafc; + width: 10px; + border-radius: 5px; +} + +QScrollBar::handle:vertical { + background-color: #cbd5e1; + border-radius: 5px; + min-height: 20px; +} + +QScrollBar::handle:vertical:hover { + background-color: #3b82f6; +} + +QScrollBar::add-line:vertical, +QScrollBar::sub-line:vertical { + height: 0; +} + +QScrollBar:horizontal { + background-color: #f8fafc; + height: 10px; + border-radius: 5px; +} + +QScrollBar::handle:horizontal { + background-color: #cbd5e1; + border-radius: 5px; + min-width: 20px; +} + +QScrollBar::handle:horizontal:hover { + background-color: #3b82f6; +} + +/* ======================================== + 탭 위젯 + ======================================== */ + +QTabWidget::pane { + background-color: #ffffff; + border: 1px solid #e2e8f0; + border-radius: 12px; + border-top-left-radius: 0; +} + +QTabBar::tab { + background-color: #f1f5f9; + color: #64748b; + border: 1px solid #e2e8f0; + border-bottom: none; + padding: 12px 24px; + margin-right: 4px; + border-top-left-radius: 8px; + border-top-right-radius: 8px; +} + +QTabBar::tab:selected { + background-color: #3b82f6; + color: white; + border-color: #3b82f6; +} + +QTabBar::tab:hover:!selected { + background-color: #e2e8f0; +} + +/* ======================================== + 메뉴 + ======================================== */ + +QMenuBar { + background-color: #ffffff; + color: #1e293b; + border-bottom: 1px solid #e2e8f0; +} + +QMenuBar::item { + padding: 8px 16px; + border-radius: 4px; +} + +QMenuBar::item:selected { + background-color: #f1f5f9; +} + +QMenu { + background-color: #ffffff; + color: #1e293b; + border: 1px solid #e2e8f0; + border-radius: 8px; + padding: 4px; +} + +QMenu::item { + padding: 8px 24px; + border-radius: 4px; +} + +QMenu::item:selected { + background-color: #f1f5f9; +} + +QMenu::separator { + height: 1px; + background-color: #e2e8f0; + margin: 4px 8px; +} + +/* ======================================== + 체크박스 + ======================================== */ + +QCheckBox { + color: #1e293b; + spacing: 8px; +} + +QCheckBox::indicator { + width: 18px; + height: 18px; + border-radius: 4px; +} + +QCheckBox::indicator:unchecked { + border: 2px solid #94a3b8; + background-color: transparent; +} + +QCheckBox::indicator:checked { + border: 2px solid #22c55e; + background-color: #22c55e; +} + +/* ======================================== + 프레임 + ======================================== */ + +QFrame[frameShape="4"], +QFrame[frameShape="5"] { + color: #e2e8f0; +} + +/* ======================================== + 툴팁 + ======================================== */ + +QToolTip { + background-color: #ffffff; + color: #1e293b; + border: 1px solid #e2e8f0; + border-radius: 6px; + padding: 8px; +} + + diff --git a/config.ini b/config.ini new file mode 100644 index 0000000..de7b6aa --- /dev/null +++ b/config.ini @@ -0,0 +1,159 @@ +[app] +language = ko +theme = dark +font_family = GmarketSans +font_size = 13 +auto_save = True +auto_save_interval = 30 +check_updates = True +update_check_interval = 3600 +start_minimized = False +minimize_to_tray = True +show_notifications = True + +[layout] +info_bar_ratio = 10.0 +content_area_ratio = 80.0 +status_bar_ratio = 10.0 +section_panel_ratio = 70.0 +todo_panel_ratio = 29.0 +daily_inspection_ratio = 30.0 +todo_list_ratio = 35.0 +memo_ratio = 35.0 +window_width = 1685 +window_height = 900 +window_x = 149 +window_y = 41 + +[database] +db_path = D:\py_train\handover\data\handover.db +backup_enabled = True +backup_interval = 86400 +backup_count = 7 +sync_enabled = False +sync_url = +sync_key = +sync_interval = 300 + +[weather] +enabled = True +api_key = +location_lat = 35.1796 +location_lon = 129.0756 +location_name = 부산 +update_interval = 1800 +forecast_unit = 1시간 단위 + +[user] +current_team = 1팀 +current_shift = 주간 +last_user_id = 0 +remember_login = True +field_settings = "\"\\\"\\\\\\\"\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"{}\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\"\\\\\\\"\\\"\"" + +[ui_font] +info_bar_title_family = GmarketSans +info_bar_title_size = 16 +info_bar_title_weight = bold +info_bar_content_family = GmarketSans +info_bar_content_size = 14 +info_bar_content_weight = normal +section_title_family = GmarketSans +section_title_size = 16 +section_title_weight = bold +section_header_family = GmarketSans +section_header_size = 13 +section_header_weight = bold +section_content_family = GmarketSans +section_content_size = 13 +section_content_weight = normal +todo_title_family = GmarketSans +todo_title_size = 14 +todo_title_weight = bold +todo_content_family = GmarketSans +todo_content_size = 13 +todo_content_weight = normal +memo_title_family = GmarketSans +memo_title_size = 14 +memo_title_weight = bold +memo_content_family = GmarketSans +memo_content_size = 13 +memo_content_weight = normal +daily_title_family = GmarketSans +daily_title_size = 14 +daily_title_weight = bold +daily_content_family = GmarketSans +daily_content_size = 13 +daily_content_weight = normal +daily_train_family = GmarketSans +daily_train_size = 15 +daily_train_weight = bold +status_content_family = GmarketSans +status_content_size = 12 +status_content_weight = normal +dialog_title_family = GmarketSans +dialog_title_size = 14 +dialog_title_weight = bold +dialog_label_family = GmarketSans +dialog_label_size = 12 +dialog_label_weight = normal +dialog_input_family = GmarketSans +dialog_input_size = 12 +dialog_input_weight = normal +dialog_button_family = GmarketSans +dialog_button_size = 12 +dialog_button_weight = medium + +[train] +train_1_type = A +train_2_type = B +train_3_type = A +train_4_type = B +train_5_type = A +train_6_type = B +train_7_type = B +train_8_type = B +train_9_type = B +train_10_type = B +train_11_type = A +train_12_type = B +train_13_type = B +train_14_type = B +train_15_type = A +train_16_type = B +train_17_type = A +train_18_type = B +train_19_type = A +train_20_type = B +train_21_type = A +train_22_type = B +train_23_type = A +train_24_type = B +train_25_type = A +train_26_type = B +train_27_type = A +train_28_type = B +train_29_type = A +train_30_type = B +train_31_type = A +train_32_type = B +train_33_type = B +train_34_type = B +train_35_type = B +train_36_type = B +train_37_type = B +train_38_type = B +train_39_type = B +train_40_type = B +train_41_type = B +train_42_type = B +train_43_type = B +train_44_type = B +train_45_type = B +train_46_type = B +train_47_type = B +train_48_type = B +train_49_type = A +train_50_type = B +train_51_type = A + diff --git a/convert_icon.py b/convert_icon.py new file mode 100644 index 0000000..e1858a4 --- /dev/null +++ b/convert_icon.py @@ -0,0 +1,12 @@ +from PIL import Image +import os + +png_path = "C:/Users/Administrator/.gemini/antigravity/brain/10e61a12-dee5-4d3c-8d60-b27a2836a655/app_icon_1768574231881.png" +ico_path = "d:/py_train/handover/assets/icons/app_icon.ico" + +# Ensure directory exists +os.makedirs(os.path.dirname(ico_path), exist_ok=True) + +img = Image.open(png_path) +img.save(ico_path, format='ICO', sizes=[(256, 256)]) +print(f"Icon saved to {ico_path}") diff --git a/core/__init__.py b/core/__init__.py new file mode 100644 index 0000000..d3ce073 --- /dev/null +++ b/core/__init__.py @@ -0,0 +1,40 @@ +# -*- coding: utf-8 -*- +""" +Core 모듈 패키지 +핵심 기능을 제공하는 모듈들의 집합 + +이 패키지는 다음을 포함합니다: +- constants: 상수 정의 +- config: 설정 관리 +- settings_manager: 설정 DB 관리 (SQLite) +- logger: 로깅 시스템 +- signals: 전역 시그널 +- exceptions: 커스텀 예외 +""" + +from .constants import * +from .config import ConfigManager +from .settings_manager import ( + SettingsManager, get_settings_manager, + FieldSetting, TrainInfo, StationInfo, + ManufacturerInfo, FaultCodeInfo +) +from .logger import setup_logger, get_logger +from .signals import GlobalSignals +from .exceptions import * + +__all__ = [ + 'ConfigManager', + 'SettingsManager', + 'get_settings_manager', + 'FieldSetting', + 'TrainInfo', + 'StationInfo', + 'ManufacturerInfo', + 'FaultCodeInfo', + 'setup_logger', + 'get_logger', + 'GlobalSignals', +] + + diff --git a/core/config.py b/core/config.py new file mode 100644 index 0000000..3f86bbf --- /dev/null +++ b/core/config.py @@ -0,0 +1,909 @@ +# -*- coding: utf-8 -*- +""" +설정 관리 모듈 +애플리케이션의 설정을 관리합니다. + +이 모듈은 다음 기능을 제공합니다: +- 설정 파일 읽기/쓰기 +- 기본 설정 값 관리 +- 런타임 설정 변경 +- 설정 유효성 검사 +""" + +import os +import json +import configparser +from pathlib import Path +from typing import Any, Dict, Optional, Union, List +from dataclasses import dataclass, field, asdict + +from .constants import ( + CONFIG_FILE, + DATA_DIR, + LAYOUT_RATIOS, + FONT_FAMILY, + FONT_SIZES, + UI_FONT_SETTINGS, +) +from .logger import get_logger + +# 로거 설정 +logger = get_logger(__name__) + + +# ============================================================================ +# 설정 데이터 클래스 +# ============================================================================ + +@dataclass +class AppSettings: + """애플리케이션 일반 설정""" + language: str = "ko" + theme: str = "dark" + font_family: str = FONT_FAMILY + font_size: int = FONT_SIZES["body"] + auto_save: bool = True + auto_save_interval: int = 30 # 초 + check_updates: bool = True + update_check_interval: int = 3600 # 초 + start_minimized: bool = False + minimize_to_tray: bool = True + show_notifications: bool = True + + +@dataclass +class LayoutSettings: + """레이아웃 설정""" + info_bar_ratio: float = LAYOUT_RATIOS["info_bar"] + content_area_ratio: float = LAYOUT_RATIOS["content_area"] + status_bar_ratio: float = LAYOUT_RATIOS["status_bar"] + section_panel_ratio: float = LAYOUT_RATIOS["section_panel"] + todo_panel_ratio: float = LAYOUT_RATIOS["todo_panel"] + daily_inspection_ratio: float = LAYOUT_RATIOS["daily_inspection"] + todo_list_ratio: float = LAYOUT_RATIOS["todo_list"] + memo_ratio: float = LAYOUT_RATIOS["memo"] + window_width: int = 1600 + window_height: int = 900 + window_x: int = -1 # -1은 화면 중앙 + window_y: int = -1 + + +@dataclass +class DatabaseSettings: + """데이터베이스 설정""" + db_path: str = str(DATA_DIR / "handover.db") + backup_enabled: bool = True + backup_interval: int = 86400 # 24시간 + backup_count: int = 7 + sync_enabled: bool = False + sync_url: str = "" + sync_key: str = "" + sync_interval: int = 300 # 5분 + + +@dataclass +class WeatherSettings: + """날씨 설정""" + enabled: bool = True + api_key: str = "" + location_lat: float = 35.1796 # 부산 기본값 + location_lon: float = 129.0756 + location_name: str = "부산" + update_interval: int = 1800 # 30분 + forecast_unit: str = "1시간 단위" # 1시간 단위 또는 3시간 단위 + + +@dataclass +class FieldSetting: + """필드 설정 데이터 클래스""" + name: str = "" + visible: bool = True + width: int = 100 + display_format: Optional[str] = None # "full", "short", "month_day" 등 + + +@dataclass +class UserSettings: + """사용자 설정 (런타임)""" + current_team: str = "1팀" + current_shift: str = "주간" + last_user_id: int = 0 + remember_login: bool = True + # 필드 설정: 팀별로 섹션별 필드 설정 저장 + # 형식: {"팀명": {"섹션명": [FieldSetting, ...], ...}, ...} + field_settings: Dict[str, Dict[str, List[Dict[str, Any]]]] = field(default_factory=dict) + + +@dataclass +class TrainSettings: + """편성 설정 (A: 구형, B: 신형)""" + # 기본값: 홀수=A(구형), 짝수=B(신형) + # 신평 차량: 6,7,8,9,13,16,32~48 + train_1_type: str = "A" + train_2_type: str = "B" + train_3_type: str = "A" + train_4_type: str = "B" + train_5_type: str = "A" + train_6_type: str = "B" + train_7_type: str = "B" + train_8_type: str = "B" + train_9_type: str = "B" + train_10_type: str = "B" + train_11_type: str = "A" + train_12_type: str = "B" + train_13_type: str = "B" + train_14_type: str = "B" + train_15_type: str = "A" + train_16_type: str = "B" + train_17_type: str = "A" + train_18_type: str = "B" + train_19_type: str = "A" + train_20_type: str = "B" + train_21_type: str = "A" + train_22_type: str = "B" + train_23_type: str = "A" + train_24_type: str = "B" + train_25_type: str = "A" + train_26_type: str = "B" + train_27_type: str = "A" + train_28_type: str = "B" + train_29_type: str = "A" + train_30_type: str = "B" + train_31_type: str = "A" + train_32_type: str = "B" + train_33_type: str = "B" + train_34_type: str = "B" + train_35_type: str = "B" + train_36_type: str = "B" + train_37_type: str = "B" + train_38_type: str = "B" + train_39_type: str = "B" + train_40_type: str = "B" + train_41_type: str = "B" + train_42_type: str = "B" + train_43_type: str = "B" + train_44_type: str = "B" + train_45_type: str = "B" + train_46_type: str = "B" + train_47_type: str = "B" + train_48_type: str = "B" + train_49_type: str = "A" + train_50_type: str = "B" + train_51_type: str = "A" + + +@dataclass +class UIFontSettings: + """UI 폰트 설정""" + # 인포바 + info_bar_title_family: str = FONT_FAMILY + info_bar_title_size: int = 16 + info_bar_title_weight: str = "bold" + info_bar_content_family: str = FONT_FAMILY + info_bar_content_size: int = 14 + info_bar_content_weight: str = "normal" + + # 섹션 + section_title_family: str = FONT_FAMILY + section_title_size: int = 16 + section_title_weight: str = "bold" + section_header_family: str = FONT_FAMILY + section_header_size: int = 13 + section_header_weight: str = "bold" + section_content_family: str = FONT_FAMILY + section_content_size: int = 13 + section_content_weight: str = "normal" + + # 할일 + todo_title_family: str = FONT_FAMILY + todo_title_size: int = 14 + todo_title_weight: str = "bold" + todo_content_family: str = FONT_FAMILY + todo_content_size: int = 13 + todo_content_weight: str = "normal" + + # 메모 + memo_title_family: str = FONT_FAMILY + memo_title_size: int = 14 + memo_title_weight: str = "bold" + memo_content_family: str = FONT_FAMILY + memo_content_size: int = 13 + memo_content_weight: str = "normal" + + # 일상검수 + daily_title_family: str = FONT_FAMILY + daily_title_size: int = 14 + daily_title_weight: str = "bold" + daily_content_family: str = FONT_FAMILY + daily_content_size: int = 13 + daily_content_weight: str = "normal" + daily_train_family: str = FONT_FAMILY + daily_train_size: int = 15 + daily_train_weight: str = "bold" + + # 상태바 + status_content_family: str = FONT_FAMILY + status_content_size: int = 12 + status_content_weight: str = "normal" + + # 다이얼로그 + dialog_title_family: str = FONT_FAMILY + dialog_title_size: int = 14 + dialog_title_weight: str = "bold" + dialog_label_family: str = FONT_FAMILY + dialog_label_size: int = 12 + dialog_label_weight: str = "normal" + dialog_input_family: str = FONT_FAMILY + dialog_input_size: int = 12 + dialog_input_weight: str = "normal" + dialog_button_family: str = FONT_FAMILY + dialog_button_size: int = 12 + dialog_button_weight: str = "medium" + + +@dataclass +class FieldSetting: + """필드 설정 데이터 클래스""" + name: str + visible: bool = True + width: int = 100 + display_format: Optional[str] = None # "full", "short", "month_day" 등 + + +@dataclass +class AllSettings: + """모든 설정을 통합하는 클래스""" + app: AppSettings = field(default_factory=AppSettings) + layout: LayoutSettings = field(default_factory=LayoutSettings) + database: DatabaseSettings = field(default_factory=DatabaseSettings) + weather: WeatherSettings = field(default_factory=WeatherSettings) + user: UserSettings = field(default_factory=UserSettings) + ui_font: UIFontSettings = field(default_factory=UIFontSettings) + train: TrainSettings = field(default_factory=TrainSettings) + + +# ============================================================================ +# 설정 관리자 클래스 +# ============================================================================ + +class ConfigManager: + """ + 설정 관리자 클래스 + + 싱글톤 패턴을 사용하여 애플리케이션 전역에서 하나의 인스턴스만 사용합니다. + 설정 파일의 읽기/쓰기 및 런타임 설정 변경을 담당합니다. + + Attributes: + config_path: 설정 파일 경로 + settings: 현재 설정 객체 + + Examples: + >>> config = ConfigManager() + >>> config.get('app', 'theme') + 'dark' + >>> config.set('app', 'theme', 'light') + >>> config.save() + """ + + _instance: Optional['ConfigManager'] = None + + def __new__(cls, config_path: Path = None): + """싱글톤 패턴 구현""" + if cls._instance is None: + cls._instance = super().__new__(cls) + cls._instance._initialized = False + return cls._instance + + def __init__(self, config_path: Path = None): + """ + 설정 관리자 초기화 + + Args: + config_path: 설정 파일 경로 (기본값: CONFIG_FILE) + """ + # 이미 초기화된 경우 건너뛰기 + if self._initialized: + return + + self.config_path = config_path or CONFIG_FILE + self.settings = AllSettings() + self._parser = configparser.ConfigParser() + + # 필드 설정 파일 경로 (레거시, 마이그레이션용) + self.field_settings_file = DATA_DIR / "field_settings.json" + + # SettingsManager 인스턴스 (지연 로딩) + self._settings_manager = None + + # 설정 파일 로드 + self.load() + + # 필드 설정 로드 (JSON -> SQLite 마이그레이션 포함) + self._load_field_settings() + + self._initialized = True + logger.info(f"설정 관리자 초기화 완료: {self.config_path}") + + def load(self) -> bool: + """ + 설정 파일에서 설정을 로드합니다. + + Returns: + 로드 성공 여부 + """ + try: + if self.config_path.exists(): + self._parser.read(self.config_path, encoding='utf-8') + self._load_settings_from_parser() + logger.info("설정 파일 로드 완료") + return True + else: + logger.warning("설정 파일이 없습니다. 기본 설정을 사용합니다.") + self._create_default_config() + return False + except Exception as e: + logger.error(f"설정 파일 로드 실패: {e}") + self._create_default_config() + return False + + def save(self) -> bool: + """ + 현재 설정을 파일에 저장합니다. + + Returns: + 저장 성공 여부 + """ + try: + self._save_settings_to_parser() + + # 부모 디렉토리 생성 + self.config_path.parent.mkdir(parents=True, exist_ok=True) + + with open(self.config_path, 'w', encoding='utf-8') as f: + self._parser.write(f) + + logger.info("설정 파일 저장 완료") + return True + except Exception as e: + logger.error(f"설정 파일 저장 실패: {e}") + return False + + def get(self, section: str, key: str, default: Any = None) -> Any: + """ + 설정 값을 가져옵니다. + + Args: + section: 설정 섹션 (app, layout, database, weather, user) + key: 설정 키 + default: 기본값 + + Returns: + 설정 값 + + Examples: + >>> config.get('app', 'theme') + 'dark' + """ + try: + section_obj = getattr(self.settings, section, None) + if section_obj is None: + logger.warning(f"존재하지 않는 섹션: {section}") + return default + + value = getattr(section_obj, key, default) + return value + except Exception as e: + logger.error(f"설정 값 가져오기 실패: {section}.{key} - {e}") + return default + + def set(self, section: str, key: str, value: Any) -> bool: + """ + 설정 값을 변경합니다. + + Args: + section: 설정 섹션 + key: 설정 키 + value: 새로운 값 + + Returns: + 변경 성공 여부 + + Examples: + >>> config.set('app', 'theme', 'light') + True + """ + try: + section_obj = getattr(self.settings, section, None) + if section_obj is None: + logger.warning(f"존재하지 않는 섹션: {section}") + return False + + if not hasattr(section_obj, key): + logger.warning(f"존재하지 않는 키: {section}.{key}") + return False + + setattr(section_obj, key, value) + logger.debug(f"설정 변경: {section}.{key} = {value}") + return True + except Exception as e: + logger.error(f"설정 값 변경 실패: {section}.{key} - {e}") + return False + + def get_section(self, section: str) -> Optional[Dict[str, Any]]: + """ + 설정 섹션 전체를 딕셔너리로 반환합니다. + + Args: + section: 설정 섹션 + + Returns: + 섹션 설정 딕셔너리 + """ + try: + section_obj = getattr(self.settings, section, None) + if section_obj is None: + return None + return asdict(section_obj) + except Exception as e: + logger.error(f"섹션 가져오기 실패: {section} - {e}") + return None + + def reset_to_default(self, section: str = None): + """ + 설정을 기본값으로 초기화합니다. + + Args: + section: 초기화할 섹션 (None이면 전체 초기화) + """ + if section: + if section == 'app': + self.settings.app = AppSettings() + elif section == 'layout': + self.settings.layout = LayoutSettings() + elif section == 'database': + self.settings.database = DatabaseSettings() + elif section == 'weather': + self.settings.weather = WeatherSettings() + elif section == 'user': + self.settings.user = UserSettings() + elif section == 'ui_font': + self.settings.ui_font = UIFontSettings() + elif section == 'train': + self.settings.train = TrainSettings() + logger.info(f"섹션 '{section}' 기본값으로 초기화") + else: + self.settings = AllSettings() + logger.info("전체 설정 기본값으로 초기화") + + def _load_settings_from_parser(self): + """파서에서 설정 객체로 로드""" + for section_name in ['app', 'layout', 'database', 'weather', 'user', 'ui_font', 'train']: + if self._parser.has_section(section_name): + section_obj = getattr(self.settings, section_name) + for key in self._parser.options(section_name): + if hasattr(section_obj, key): + raw_value = self._parser.get(section_name, key) + # 타입 변환 + expected_type = type(getattr(section_obj, key)) + converted_value = self._convert_value(raw_value, expected_type) + setattr(section_obj, key, converted_value) + + def _save_settings_to_parser(self): + """설정 객체에서 파서로 저장""" + for section_name in ['app', 'layout', 'database', 'weather', 'user', 'ui_font', 'train']: + if not self._parser.has_section(section_name): + self._parser.add_section(section_name) + + section_obj = getattr(self.settings, section_name) + section_dict = asdict(section_obj) + + for key, value in section_dict.items(): + # 필드 설정은 JSON으로 저장 + if key == 'field_settings': + self._parser.set(section_name, key, json.dumps(value, ensure_ascii=False)) + else: + self._parser.set(section_name, key, str(value)) + + def _create_default_config(self): + """기본 설정 파일 생성""" + self.settings = AllSettings() + self.save() + logger.info("기본 설정 파일 생성 완료") + + @staticmethod + def _convert_value(value: str, target_type: type) -> Any: + """ + 문자열 값을 대상 타입으로 변환합니다. + + Args: + value: 변환할 문자열 + target_type: 대상 타입 + + Returns: + 변환된 값 + """ + if target_type == bool: + return value.lower() in ('true', 'yes', '1', 'on') + elif target_type == int: + return int(value) + elif target_type == float: + return float(value) + else: + return value + + # ======================================================================== + # 편의 메서드 + # ======================================================================== + + @property + def theme(self) -> str: + """현재 테마 반환""" + return self.settings.app.theme + + @theme.setter + def theme(self, value: str): + """테마 설정""" + self.settings.app.theme = value + + @property + def current_team(self) -> str: + """현재 팀 반환""" + return self.settings.user.current_team + + @current_team.setter + def current_team(self, value: str): + """현재 팀 설정""" + self.settings.user.current_team = value + + @property + def current_shift(self) -> str: + """현재 근무 유형 반환""" + return self.settings.user.current_shift + + @current_shift.setter + def current_shift(self, value: str): + """현재 근무 유형 설정""" + self.settings.user.current_shift = value + + def get_layout_sizes(self) -> Dict[str, float]: + """레이아웃 크기 비율 반환""" + return asdict(self.settings.layout) + + def get_ui_font(self, area: str, style: str) -> Dict[str, Any]: + """ + UI 영역별 폰트 설정 가져오기 + + Args: + area: 영역 (info_bar, section, todo, memo, daily, status, dialog) + style: 스타일 (title, content, header, label, input, button, train 등) + + Returns: + {"family": str, "size": int, "weight": str} + + Examples: + >>> config.get_ui_font("section", "title") + {"family": "GmarketSans", "size": 16, "weight": "bold"} + """ + ui_font = self.settings.ui_font + + # 영역과 스타일 조합으로 속성 이름 생성 + prefix = area.replace("_", "") # info_bar -> infobar + + # 영역별 prefix 매핑 + area_map = { + "info_bar": "info_bar", + "section": "section", + "todo": "todo", + "memo": "memo", + "daily": "daily", + "daily_inspection": "daily", + "status": "status", + "status_bar": "status", + "dialog": "dialog", + } + + prefix = area_map.get(area, area) + + # 속성 이름 생성 + family_attr = f"{prefix}_{style}_family" + size_attr = f"{prefix}_{style}_size" + weight_attr = f"{prefix}_{style}_weight" + + # 기본값 + default = {"family": FONT_FAMILY, "size": 13, "weight": "normal"} + + try: + return { + "family": getattr(ui_font, family_attr, default["family"]), + "size": getattr(ui_font, size_attr, default["size"]), + "weight": getattr(ui_font, weight_attr, default["weight"]), + } + except AttributeError: + logger.warning(f"UI 폰트 설정을 찾을 수 없음: {area}.{style}") + return default + + def set_ui_font(self, area: str, style: str, family: str = None, size: int = None, weight: str = None): + """ + UI 영역별 폰트 설정 변경 + + Args: + area: 영역 + style: 스타일 + family: 폰트 패밀리 (None이면 변경 안함) + size: 폰트 크기 (None이면 변경 안함) + weight: 폰트 굵기 (None이면 변경 안함) + """ + ui_font = self.settings.ui_font + + area_map = { + "info_bar": "info_bar", + "section": "section", + "todo": "todo", + "memo": "memo", + "daily": "daily", + "daily_inspection": "daily", + "status": "status", + "status_bar": "status", + "dialog": "dialog", + } + + prefix = area_map.get(area, area) + + if family is not None: + setattr(ui_font, f"{prefix}_{style}_family", family) + if size is not None: + setattr(ui_font, f"{prefix}_{style}_size", size) + if weight is not None: + setattr(ui_font, f"{prefix}_{style}_weight", weight) + + logger.debug(f"UI 폰트 설정 변경: {area}.{style}") + + @property + def ui_font_settings(self) -> 'UIFontSettings': + """UI 폰트 설정 반환""" + return self.settings.ui_font + + # ======================================================================== + # 필드 설정 관리 메서드 (SettingsManager 사용) + # ======================================================================== + + def _get_settings_manager(self): + """SettingsManager 인스턴스 반환 (지연 로딩)""" + if not hasattr(self, '_settings_manager') or self._settings_manager is None: + from .settings_manager import get_settings_manager + self._settings_manager = get_settings_manager() + return self._settings_manager + + def _load_field_settings(self): + """ + 필드 설정 로드 (레거시 JSON -> SQLite DB 마이그레이션) + + 기존 JSON 파일이 있으면 SQLite DB로 마이그레이션하고, + 이후에는 DB에서 직접 로드합니다. + """ + try: + settings_mgr = self._get_settings_manager() + + # 기존 JSON 파일 마이그레이션 체크 + if self.field_settings_file.exists(): + logger.info("기존 JSON 필드 설정을 SQLite DB로 마이그레이션합니다.") + self._migrate_json_to_db() + + # 기존 section_field_settings.json 파일도 마이그레이션 체크 + old_settings_file = DATA_DIR / "section_field_settings.json" + if old_settings_file.exists(): + logger.info("기존 section_field_settings.json을 SQLite DB로 마이그레이션합니다.") + self._migrate_old_json_to_db(old_settings_file) + + logger.info("필드 설정 로드 완료 (SQLite DB 사용)") + + except Exception as e: + logger.error(f"필드 설정 로드 실패: {e}") + + def _migrate_json_to_db(self): + """JSON 파일을 SQLite DB로 마이그레이션""" + try: + with open(self.field_settings_file, 'r', encoding='utf-8') as f: + data = json.load(f) + + settings_mgr = self._get_settings_manager() + from .settings_manager import FieldSetting as DBFieldSetting + + for team, sections_data in data.items(): + for section_name, fields_data in sections_data.items(): + fields = [] + for field_data in fields_data: + field = DBFieldSetting( + name=field_data.get('name', ''), + visible=field_data.get('visible', True), + width=field_data.get('width', 100), + display_format=field_data.get('display_format') + ) + fields.append(field) + settings_mgr.save_field_settings(team, section_name, fields) + + # 마이그레이션 완료 후 기존 파일 백업 + backup_file = self.field_settings_file.with_suffix('.json.bak') + self.field_settings_file.rename(backup_file) + logger.info(f"JSON 파일을 SQLite DB로 마이그레이션 완료, 백업: {backup_file}") + + except Exception as e: + logger.error(f"JSON 마이그레이션 실패: {e}") + + def _migrate_old_json_to_db(self, old_file): + """기존 형식의 JSON 파일을 SQLite DB로 마이그레이션""" + try: + with open(old_file, 'r', encoding='utf-8') as f: + old_data = json.load(f) + + settings_mgr = self._get_settings_manager() + from .settings_manager import FieldSetting as DBFieldSetting + + for team, team_data in old_data.items(): + sections = team_data.get("sections", {}) + for section_name, section_data in sections.items(): + fields_data = section_data.get("fields", []) + fields = [] + for field_data in fields_data: + field = DBFieldSetting( + name=field_data.get('name', ''), + visible=field_data.get('visible', True), + width=field_data.get('width', 100), + display_format=field_data.get('display_format') + ) + fields.append(field) + settings_mgr.save_field_settings(team, section_name, fields) + + # 마이그레이션 완료 후 기존 파일 백업 + backup_file = old_file.with_suffix('.json.bak') + old_file.rename(backup_file) + logger.info(f"기존 JSON 파일을 SQLite DB로 마이그레이션 완료, 백업: {backup_file}") + + except Exception as e: + logger.error(f"기존 JSON 마이그레이션 실패: {e}") + + def save_field_settings( + self, + team: str, + section_name: str, + fields: List[FieldSetting] + ): + """ + 필드 설정 저장 (SQLite DB 사용) + + Args: + team: 팀 이름 (예: "1팀") + section_name: 섹션 이름 (예: "고장") + fields: 필드 설정 리스트 + """ + try: + settings_mgr = self._get_settings_manager() + from .settings_manager import FieldSetting as DBFieldSetting + + # FieldSetting -> DBFieldSetting 변환 + db_fields = [] + for f in fields: + db_field = DBFieldSetting( + name=f.name, + visible=f.visible, + width=f.width, + display_format=f.display_format + ) + db_fields.append(db_field) + + settings_mgr.save_field_settings(team, section_name, db_fields) + logger.info(f"필드 설정 저장 완료: {team} - {section_name}") + except Exception as e: + logger.error(f"필드 설정 저장 실패: {e}") + raise + + def load_field_settings( + self, + team: str, + section_name: str + ) -> Optional[List[FieldSetting]]: + """ + 필드 설정 로드 (SQLite DB 사용) + + Args: + team: 팀 이름 + section_name: 섹션 이름 + + Returns: + 필드 설정 리스트 (없으면 None) + """ + try: + settings_mgr = self._get_settings_manager() + db_fields = settings_mgr.load_field_settings(team, section_name) + + if not db_fields: + return None + + # DBFieldSetting -> FieldSetting 변환 + fields = [] + for f in db_fields: + field = FieldSetting( + name=f.name, + visible=f.visible, + width=f.width, + display_format=f.display_format + ) + fields.append(field) + + return fields + except Exception as e: + logger.error(f"필드 설정 로드 실패: {e}") + return None + + def get_field_setting( + self, + team: str, + section_name: str, + field_name: str + ) -> Optional[FieldSetting]: + """ + 특정 필드 설정 가져오기 + + Args: + team: 팀 이름 + section_name: 섹션 이름 + field_name: 필드 이름 + + Returns: + 필드 설정 (없으면 None) + """ + fields = self.load_field_settings(team, section_name) + if not fields: + return None + + for field_setting in fields: + if field_setting.name == field_name: + return field_setting + + return None + + def apply_field_settings_to_fields( + self, + team: str, + section_name: str, + fields: List[Any] # FieldConfig 리스트 + ): + """ + 저장된 설정을 필드에 적용 + + Args: + team: 팀 이름 + section_name: 섹션 이름 + fields: FieldConfig 리스트 + """ + settings_mgr = self._get_settings_manager() + settings_mgr.apply_field_settings_to_fields(team, section_name, fields) + logger.debug(f"필드 설정 적용 완료: {team} - {section_name}") + + def reset_team_field_settings(self, team: str): + """팀별 필드 설정 초기화""" + settings_mgr = self._get_settings_manager() + settings_mgr.reset_team_field_settings(team) + logger.info(f"팀 필드 설정 초기화: {team}") + + def reset_all_field_settings(self): + """모든 필드 설정 초기화""" + settings_mgr = self._get_settings_manager() + settings_mgr.reset_all_field_settings() + logger.info("모든 필드 설정 초기화 완료") + + +# ============================================================================ +# 모듈 레벨 편의 함수 +# ============================================================================ + +def get_config() -> ConfigManager: + """ + 설정 관리자 인스턴스를 반환합니다. + + Returns: + ConfigManager 인스턴스 + """ + return ConfigManager() + + diff --git a/core/constants.py b/core/constants.py new file mode 100644 index 0000000..48004af --- /dev/null +++ b/core/constants.py @@ -0,0 +1,369 @@ +# -*- coding: utf-8 -*- +""" +상수 정의 모듈 +애플리케이션 전역에서 사용되는 상수들을 정의합니다. + +이 모듈은 다음을 포함합니다: +- 애플리케이션 정보 +- 팀 및 권한 관련 상수 +- UI 관련 상수 +- 데이터베이스 관련 상수 +- 파일 경로 상수 +""" + +import os +from pathlib import Path +from typing import Dict, List, Tuple + +# ============================================================================ +# 애플리케이션 정보 +# ============================================================================ + +APP_NAME = "전동차 업무 인수인계 시스템 (Created by ChoiKH)" +APP_NAME_EN = "Train Handover System" +APP_VERSION = "1.0.0" +APP_AUTHOR = "검수팀" +APP_DESCRIPTION = "전동차 운용실 업무 인수인계 및 고장관리 프로그램" + +# ============================================================================ +# 경로 상수 +# ============================================================================ + +# 프로젝트 루트 디렉토리 +ROOT_DIR = Path(__file__).parent.parent.absolute() + +# 데이터 디렉토리 +DATA_DIR = ROOT_DIR / "data" +LOGS_DIR = ROOT_DIR / "logs" +ASSETS_DIR = ROOT_DIR / "assets" +FONTS_DIR = ASSETS_DIR / "fonts" +ICONS_DIR = ASSETS_DIR / "icons" +IMAGES_DIR = ASSETS_DIR / "images" +STYLES_DIR = ASSETS_DIR / "styles" + +# 데이터베이스 파일 +DB_FILE = DATA_DIR / "handover.db" + +# 설정 파일 +CONFIG_FILE = ROOT_DIR / "config.ini" + +# ============================================================================ +# 팀 관련 상수 +# ============================================================================ + +# 팀 목록 +TEAMS: List[str] = ["1팀", "2팀", "3팀", "4팀"] + +# 근무 유형 +SHIFT_TYPES: Dict[str, str] = { + "day": "주간", + "night": "야간", +} + +# 팀 직책 +TEAM_POSITIONS: Dict[str, Dict] = { + "vice_leader": { + "name": "부팀장", + "count": 2, # 각 팀당 2명 + }, + "operator": { + "name": "운용", + "count": 3, # 각 팀당 2~3명 + }, +} + +# ============================================================================ +# 부서 및 권한 관련 상수 +# ============================================================================ + +# 부서 목록 +DEPARTMENTS: List[str] = [ + "검수팀", + "운전팀", + "차량팀", + "관제팀", + "기타", +] + +# 역할 목록 +ROLES: Dict[str, str] = { + "admin": "관리자", + "editor": "편집자", + "viewer": "조회자", +} + +# 부서별 기본 권한 +DEPARTMENT_PERMISSIONS: Dict[str, str] = { + "검수팀": "admin", # 모든 권한 + "운전팀": "viewer", # 조회만 + "차량팀": "viewer", # 조회만 + "관제팀": "viewer", # 조회만 + "기타": "viewer", # 조회만 +} + +# ============================================================================ +# 청소 유형 상수 +# ============================================================================ + +CLEANING_TYPES: Dict[str, Dict] = { + "none": { + "name": "없음", + "color": None, + "shape": None, + }, + "medium": { + "name": "중청소", + "color": "#3498db", # 파란색 + "shape": "rectangle", + }, + "large": { + "name": "대청소", + "color": "#e74c3c", # 빨간색 + "shape": "circle", + }, +} + +# ============================================================================ +# 고장 코드 관련 상수 +# ============================================================================ + +# JSON 데이터 파일 경로 +FAULT_DATA_FILE = DATA_DIR / "fault_data.json" + +# JSON에서 데이터 로드 +def _load_fault_data(): + """고장 관련 데이터를 JSON 파일에서 로드""" + import json + try: + if FAULT_DATA_FILE.exists(): + with open(FAULT_DATA_FILE, 'r', encoding='utf-8') as f: + data = json.load(f) + return data + else: + # 기본값 반환 + return { + "train_numbers": [], + "stations": [], + "column_numbers": [], + "device_categories": [ + "추진장치", "제동장치", "출입문", "냉난방", "조명", + "방송", "ATC/ATO", "집전장치", "차체", "대차", "기타" + ], + "fault_codes": [] + } + except (json.JSONDecodeError, IOError, OSError): + # 로드 실패 시 기본값 반환 + return { + "train_numbers": [], + "stations": [], + "column_numbers": [], + "device_categories": [ + "추진장치", "제동장치", "출입문", "냉난방", "조명", + "방송", "ATC/ATO", "집전장치", "차체", "대차", "기타" + ], + "fault_codes": [] + } + +# 고장 데이터 로드 +_fault_data = _load_fault_data() + +# 편성번호 목록 +TRAIN_NUMBERS: List[str] = _fault_data.get("train_numbers", []) + +# 역 목록 +STATIONS: List[str] = _fault_data.get("stations", []) + +# 열번 목록 +COLUMN_NUMBERS: List[str] = _fault_data.get("column_numbers", []) + +# 장치 분류 +DEVICE_CATEGORIES: List[str] = _fault_data.get("device_categories", [ + "추진장치", "제동장치", "출입문", "냉난방", "조명", + "방송", "ATC/ATO", "집전장치", "차체", "대차", "기타" +]) + +# 고장코드 목록 +FAULT_CODES: List[str] = _fault_data.get("fault_codes", []) + +# 고장출처 목록 +FAULT_SOURCES: List[str] = [ + "일상검수", + "출고검수", + "도착검수", + "입고기관사", + "상태권", + "직원모니터링", + "기타" +] + +# ============================================================================ +# UI 관련 상수 +# ============================================================================ + +# 레이아웃 비율 (퍼센트) +LAYOUT_RATIOS: Dict[str, float] = { + "info_bar": 10.0, # 상단 인포바 + "content_area": 80.0, # 중앙 컨텐츠 + "status_bar": 10.0, # 하단 상태바 + "section_panel": 60.0, # 섹션 패널 (컨텐츠 내 좌측) + "todo_panel": 40.0, # Todo 패널 (컨텐츠 내 우측) + "daily_inspection": 30.0, # 일상검수 영역 + "todo_list": 35.0, # 할일 목록 영역 + "memo": 35.0, # 메모 영역 +} + +# 폰트 설정 +FONT_FAMILY = "GmarketSans" +FONT_SIZES: Dict[str, int] = { + "title": 18, + "heading": 16, + "subheading": 14, + "body": 13, + "small": 11, + "tiny": 9, +} + +# UI 영역별 폰트 설정 +UI_FONT_SETTINGS: Dict[str, Dict] = { + # 인포바 + "info_bar": { + "title": {"family": FONT_FAMILY, "size": 16, "weight": "bold"}, + "content": {"family": FONT_FAMILY, "size": 14, "weight": "normal"}, + "small": {"family": FONT_FAMILY, "size": 12, "weight": "normal"}, + }, + # 섹션 (지시, 고장, 작업, 기타) + "section": { + "title": {"family": FONT_FAMILY, "size": 16, "weight": "bold"}, + "header": {"family": FONT_FAMILY, "size": 13, "weight": "bold"}, + "content": {"family": FONT_FAMILY, "size": 13, "weight": "normal"}, + "small": {"family": FONT_FAMILY, "size": 11, "weight": "normal"}, + }, + # 할일 목록 + "todo": { + "title": {"family": FONT_FAMILY, "size": 14, "weight": "bold"}, + "content": {"family": FONT_FAMILY, "size": 13, "weight": "normal"}, + "small": {"family": FONT_FAMILY, "size": 11, "weight": "normal"}, + }, + # 메모 + "memo": { + "title": {"family": FONT_FAMILY, "size": 14, "weight": "bold"}, + "content": {"family": FONT_FAMILY, "size": 13, "weight": "normal"}, + }, + # 일상검수 + "daily_inspection": { + "title": {"family": FONT_FAMILY, "size": 14, "weight": "bold"}, + "content": {"family": FONT_FAMILY, "size": 12, "weight": "normal"}, + "train_number": {"family": FONT_FAMILY, "size": 13, "weight": "bold"}, + }, + # 상태바 + "status_bar": { + "content": {"family": FONT_FAMILY, "size": 12, "weight": "normal"}, + }, + # 다이얼로그 + "dialog": { + "title": {"family": FONT_FAMILY, "size": 12, "weight": "bold"}, + "label": {"family": FONT_FAMILY, "size": 10, "weight": "normal"}, + "input": {"family": FONT_FAMILY, "size": 10, "weight": "normal"}, + "button": {"family": FONT_FAMILY, "size": 10, "weight": "medium"}, + }, +} + +# 테마 색상 (다크 테마) +DARK_THEME_COLORS: Dict[str, str] = { + "primary": "#3498db", + "secondary": "#2ecc71", + "accent": "#e74c3c", + "warning": "#f39c12", + "background": "#1a1a2e", + "surface": "#16213e", + "card": "#0f3460", + "text_primary": "#ffffff", + "text_secondary": "#a0a0a0", + "border": "#2d3748", + "hover": "#4a5568", + "success": "#48bb78", + "error": "#fc8181", +} + +# 테마 색상 (라이트 테마) +LIGHT_THEME_COLORS: Dict[str, str] = { + "primary": "#2980b9", + "secondary": "#27ae60", + "accent": "#c0392b", + "warning": "#d68910", + "background": "#f5f7fa", + "surface": "#ffffff", + "card": "#ffffff", + "text_primary": "#2c3e50", + "text_secondary": "#7f8c8d", + "border": "#e0e0e0", + "hover": "#ecf0f1", + "success": "#2ecc71", + "error": "#e74c3c", +} + +# ============================================================================ +# 일상검수 관련 상수 +# ============================================================================ + +# 일상검수 슬롯 수 +DAILY_INSPECTION_SLOTS = 5 + +# ============================================================================ +# 시간 관련 상수 +# ============================================================================ + +# 업데이트 체크 주기 (초) +UPDATE_CHECK_INTERVAL = 3600 # 1시간 + +# 날씨 정보 갱신 주기 (초) +WEATHER_UPDATE_INTERVAL = 1800 # 30분 + +# 자동 저장 주기 (초) +AUTO_SAVE_INTERVAL = 30 # 30초 + +# 로그 파일 보관 기간 (일) +LOG_RETENTION_DAYS = 30 + +# ============================================================================ +# 날씨 API 관련 상수 +# ============================================================================ + +# 기상청 API (예시) +WEATHER_API_URL = "https://api.openweathermap.org/data/2.5/weather" +WEATHER_API_KEY = "" # 설정 파일에서 로드 + +# 기본 위치 (서울) +DEFAULT_LOCATION: Dict[str, float] = { + "lat": 37.5665, + "lon": 126.9780, + "name": "서울", +} + +# ============================================================================ +# 데이터베이스 관련 상수 +# ============================================================================ + +# 테이블 이름 +TABLE_NAMES: Dict[str, str] = { + "users": "users", + "teams": "teams", + "instructions": "instructions", + "faults": "faults", + "works": "works", + "miscs": "miscs", + "daily_inspections": "daily_inspections", + "todos": "todos", + "memos": "memos", + "settings": "settings", +} + +# 팀 확인 상태 기본값 +DEFAULT_TEAM_CONFIRMATIONS = { + "1팀": False, + "2팀": False, + "3팀": False, + "4팀": False, +} + + diff --git a/core/dia_data_loader.py b/core/dia_data_loader.py new file mode 100644 index 0000000..c7b6151 --- /dev/null +++ b/core/dia_data_loader.py @@ -0,0 +1,142 @@ +# -*- coding: utf-8 -*- +""" +열차 운행 데이터 로더 모듈 +dia_data.json 파일을 로드하고 열번과 역명으로 시간을 추정하는 기능을 제공합니다. +""" + +import json +from pathlib import Path +from datetime import time, date +from typing import Optional, Dict, List +from core.logger import get_logger + +logger = get_logger(__name__) + +# 전역 캐시 +_dia_data_cache: Optional[List[Dict]] = None + + +def load_dia_data() -> List[Dict]: + """ + dia_data.json 파일을 로드합니다. + + Returns: + 운행 데이터 리스트 + """ + global _dia_data_cache + + if _dia_data_cache is not None: + return _dia_data_cache + + try: + # data 디렉토리에서 파일 찾기 + data_dir = Path(__file__).parent.parent / "data" + dia_file = data_dir / "dia_data.json" + + if not dia_file.exists(): + logger.warning(f"dia_data.json 파일을 찾을 수 없습니다: {dia_file}") + return [] + + with open(dia_file, 'r', encoding='utf-8') as f: + _dia_data_cache = json.load(f) + + logger.info(f"dia_data.json 로드 완료: {len(_dia_data_cache)}개 레코드") + return _dia_data_cache + + except Exception as e: + logger.error(f"dia_data.json 로드 실패: {e}") + return [] + + +def estimate_time_by_column_station( + column_number: str, + station: str, + occurrence_date: Optional[date] = None +) -> Optional[time]: + """ + 열번과 역명으로 발생 시간을 추정합니다. + + Args: + column_number: 열번 (예: "2002", "1017") + station: 역명 (예: "노포", "신평") + occurrence_date: 발생일 (평일/주말 판단용) + + Returns: + 추정 시간 또는 None + """ + if not column_number or not station: + return None + + try: + # 열번을 정수로 변환 + column_num = int(column_number) + except (ValueError, TypeError): + return None + + # 요일 구분 판단 + if occurrence_date: + weekday = occurrence_date.weekday() # 0=월요일, 6=일요일 + if weekday < 5: # 월~금 + day_type = "평일" + elif weekday == 5: # 토요일 + day_type = "토요일" + else: # 일요일 + day_type = "일요일/공휴일" + else: + day_type = "평일" # 기본값은 평일 + + # 데이터 로드 + dia_data = load_dia_data() + + # 매칭되는 데이터 찾기 + for record in dia_data: + if (record.get("열번") == column_num and + record.get("역명") == station and + record.get("요일구분") == day_type): + + time_str = record.get("시간", "") + if time_str: + try: + # "06:22:30" 형식을 time 객체로 변환 + parts = time_str.split(":") + if len(parts) >= 2: + hour = int(parts[0]) + minute = int(parts[1]) + return time(hour, minute) + except (ValueError, IndexError): + continue + + return None + + +def get_stations_by_column( + column_number: str, + day_type: str = "평일" +) -> List[str]: + """ + 열번으로 해당 열차가 정차하는 역 목록을 반환합니다. + + Args: + column_number: 열번 + day_type: 요일 구분 (평일, 토요일, 일요일/공휴일) + + Returns: + 역명 리스트 + """ + try: + column_num = int(column_number) + except (ValueError, TypeError): + return [] + + dia_data = load_dia_data() + stations = set() + + for record in dia_data: + if (record.get("열번") == column_num and + record.get("요일구분") == day_type): + station = record.get("역명") + if station: + stations.add(station) + + return sorted(list(stations)) + diff --git a/core/exceptions.py b/core/exceptions.py new file mode 100644 index 0000000..73f2fb0 --- /dev/null +++ b/core/exceptions.py @@ -0,0 +1,361 @@ +# -*- coding: utf-8 -*- +""" +커스텀 예외 모듈 +애플리케이션에서 사용되는 커스텀 예외 클래스들을 정의합니다. + +각 예외는 특정 오류 상황을 명확하게 나타내며, +적절한 오류 처리를 가능하게 합니다. +""" + + +class HandoverBaseException(Exception): + """ + 애플리케이션 기본 예외 클래스 + + 모든 커스텀 예외의 기반 클래스입니다. + """ + + def __init__(self, message: str = "알 수 없는 오류가 발생했습니다."): + self.message = message + super().__init__(self.message) + + def __str__(self): + return f"[{self.__class__.__name__}] {self.message}" + + +# ============================================================================ +# 데이터베이스 관련 예외 +# ============================================================================ + +class DatabaseException(HandoverBaseException): + """데이터베이스 관련 기본 예외""" + pass + + +class DatabaseConnectionError(DatabaseException): + """데이터베이스 연결 실패 예외""" + + def __init__(self, message: str = "데이터베이스 연결에 실패했습니다."): + super().__init__(message) + + +class DatabaseQueryError(DatabaseException): + """데이터베이스 쿼리 실행 실패 예외""" + + def __init__(self, message: str = "데이터베이스 쿼리 실행에 실패했습니다.", query: str = None): + self.query = query + if query: + message = f"{message} (Query: {query[:100]}...)" + super().__init__(message) + + +class RecordNotFoundError(DatabaseException): + """레코드를 찾을 수 없는 예외""" + + def __init__(self, table: str = None, record_id: int = None): + message = "레코드를 찾을 수 없습니다." + if table and record_id: + message = f"테이블 '{table}'에서 ID {record_id}인 레코드를 찾을 수 없습니다." + super().__init__(message) + + +class DuplicateRecordError(DatabaseException): + """중복 레코드 예외""" + + def __init__(self, message: str = "중복된 레코드가 존재합니다."): + super().__init__(message) + + +# ============================================================================ +# 인증/권한 관련 예외 +# ============================================================================ + +class AuthException(HandoverBaseException): + """인증 관련 기본 예외""" + pass + + +class AuthenticationError(AuthException): + """인증 실패 예외""" + + def __init__(self, message: str = "인증에 실패했습니다."): + super().__init__(message) + + +class InvalidCredentialsError(AuthException): + """잘못된 자격 증명 예외""" + + def __init__(self, message: str = "아이디 또는 비밀번호가 올바르지 않습니다."): + super().__init__(message) + + +class PermissionDeniedError(AuthException): + """권한 없음 예외""" + + def __init__(self, action: str = None): + message = "이 작업을 수행할 권한이 없습니다." + if action: + message = f"'{action}' 작업을 수행할 권한이 없습니다." + super().__init__(message) + + +class SessionExpiredError(AuthException): + """세션 만료 예외""" + + def __init__(self, message: str = "세션이 만료되었습니다. 다시 로그인해주세요."): + super().__init__(message) + + +class UserNotActiveError(AuthException): + """비활성 사용자 예외""" + + def __init__(self, message: str = "비활성화된 계정입니다. 관리자에게 문의하세요."): + super().__init__(message) + + +# ============================================================================ +# 설정 관련 예외 +# ============================================================================ + +class ConfigException(HandoverBaseException): + """설정 관련 기본 예외""" + pass + + +class ConfigFileNotFoundError(ConfigException): + """설정 파일을 찾을 수 없는 예외""" + + def __init__(self, filepath: str = None): + message = "설정 파일을 찾을 수 없습니다." + if filepath: + message = f"설정 파일을 찾을 수 없습니다: {filepath}" + super().__init__(message) + + +class ConfigParseError(ConfigException): + """설정 파일 파싱 오류 예외""" + + def __init__(self, message: str = "설정 파일 파싱에 실패했습니다."): + super().__init__(message) + + +class InvalidConfigValueError(ConfigException): + """잘못된 설정 값 예외""" + + def __init__(self, key: str = None, value: str = None): + message = "잘못된 설정 값입니다." + if key: + message = f"잘못된 설정 값입니다: {key}={value}" + super().__init__(message) + + +# ============================================================================ +# 유효성 검사 관련 예외 +# ============================================================================ + +class ValidationException(HandoverBaseException): + """유효성 검사 관련 기본 예외""" + pass + + +class InvalidInputError(ValidationException): + """잘못된 입력 예외""" + + def __init__(self, field: str = None, message: str = None): + if message: + error_message = message + elif field: + error_message = f"'{field}' 필드의 입력값이 올바르지 않습니다." + else: + error_message = "입력값이 올바르지 않습니다." + super().__init__(error_message) + + +class RequiredFieldError(ValidationException): + """필수 필드 누락 예외""" + + def __init__(self, field: str = None): + message = "필수 필드가 누락되었습니다." + if field: + message = f"필수 필드 '{field}'이(가) 누락되었습니다." + super().__init__(message) + + +class InvalidDateFormatError(ValidationException): + """잘못된 날짜 형식 예외""" + + def __init__(self, value: str = None, expected_format: str = "YYYY-MM-DD"): + message = f"잘못된 날짜 형식입니다. 예상 형식: {expected_format}" + if value: + message = f"'{value}'은(는) 올바른 날짜 형식이 아닙니다. 예상 형식: {expected_format}" + super().__init__(message) + + +class InvalidTimeFormatError(ValidationException): + """잘못된 시간 형식 예외""" + + def __init__(self, value: str = None, expected_format: str = "HH:MM"): + message = f"잘못된 시간 형식입니다. 예상 형식: {expected_format}" + if value: + message = f"'{value}'은(는) 올바른 시간 형식이 아닙니다. 예상 형식: {expected_format}" + super().__init__(message) + + +# ============================================================================ +# 네트워크 관련 예외 +# ============================================================================ + +class NetworkException(HandoverBaseException): + """네트워크 관련 기본 예외""" + pass + + +class NetworkConnectionError(NetworkException): + """네트워크 연결 실패 예외""" + + def __init__(self, message: str = "네트워크 연결에 실패했습니다."): + super().__init__(message) + + +class APIRequestError(NetworkException): + """API 요청 실패 예외""" + + def __init__(self, url: str = None, status_code: int = None): + message = "API 요청에 실패했습니다." + if url and status_code: + message = f"API 요청 실패: {url} (상태 코드: {status_code})" + super().__init__(message) + + +class SyncError(NetworkException): + """동기화 실패 예외""" + + def __init__(self, message: str = "데이터 동기화에 실패했습니다."): + super().__init__(message) + + +# ============================================================================ +# 업데이트 관련 예외 +# ============================================================================ + +class UpdateException(HandoverBaseException): + """업데이트 관련 기본 예외""" + pass + + +class UpdateCheckError(UpdateException): + """업데이트 확인 실패 예외""" + + def __init__(self, message: str = "업데이트 확인에 실패했습니다."): + super().__init__(message) + + +class UpdateDownloadError(UpdateException): + """업데이트 다운로드 실패 예외""" + + def __init__(self, message: str = "업데이트 다운로드에 실패했습니다."): + super().__init__(message) + + +class UpdateInstallError(UpdateException): + """업데이트 설치 실패 예외""" + + def __init__(self, message: str = "업데이트 설치에 실패했습니다."): + super().__init__(message) + + +# ============================================================================ +# 파일 관련 예외 +# ============================================================================ + +class FileException(HandoverBaseException): + """파일 관련 기본 예외""" + pass + + +class FileNotFoundError(FileException): + """파일을 찾을 수 없는 예외""" + + def __init__(self, filepath: str = None): + message = "파일을 찾을 수 없습니다." + if filepath: + message = f"파일을 찾을 수 없습니다: {filepath}" + super().__init__(message) + + +class FileReadError(FileException): + """파일 읽기 실패 예외""" + + def __init__(self, filepath: str = None): + message = "파일 읽기에 실패했습니다." + if filepath: + message = f"파일 읽기에 실패했습니다: {filepath}" + super().__init__(message) + + +class FileWriteError(FileException): + """파일 쓰기 실패 예외""" + + def __init__(self, filepath: str = None): + message = "파일 쓰기에 실패했습니다." + if filepath: + message = f"파일 쓰기에 실패했습니다: {filepath}" + super().__init__(message) + + +# ============================================================================ +# 내보내기 +# ============================================================================ + +__all__ = [ + # 기본 예외 + 'HandoverBaseException', + + # 데이터베이스 예외 + 'DatabaseException', + 'DatabaseConnectionError', + 'DatabaseQueryError', + 'RecordNotFoundError', + 'DuplicateRecordError', + + # 인증/권한 예외 + 'AuthException', + 'AuthenticationError', + 'InvalidCredentialsError', + 'PermissionDeniedError', + 'SessionExpiredError', + 'UserNotActiveError', + + # 설정 예외 + 'ConfigException', + 'ConfigFileNotFoundError', + 'ConfigParseError', + 'InvalidConfigValueError', + + # 유효성 검사 예외 + 'ValidationException', + 'InvalidInputError', + 'RequiredFieldError', + 'InvalidDateFormatError', + 'InvalidTimeFormatError', + + # 네트워크 예외 + 'NetworkException', + 'NetworkConnectionError', + 'APIRequestError', + 'SyncError', + + # 업데이트 예외 + 'UpdateException', + 'UpdateCheckError', + 'UpdateDownloadError', + 'UpdateInstallError', + + # 파일 예외 + 'FileException', + 'FileNotFoundError', + 'FileReadError', + 'FileWriteError', +] + + diff --git a/core/logger.py b/core/logger.py new file mode 100644 index 0000000..baaf4e4 --- /dev/null +++ b/core/logger.py @@ -0,0 +1,365 @@ +# -*- coding: utf-8 -*- +""" +로깅 시스템 모듈 +애플리케이션의 로깅 기능을 설정하고 관리합니다. + +이 모듈은 다음 기능을 제공합니다: +- 파일 및 콘솔 로깅 +- 일별 로그 로테이션 +- 로그 레벨 필터링 +- 상세한 로그 포맷팅 +""" + +import os +import sys +import logging +from datetime import datetime +from pathlib import Path +from logging.handlers import RotatingFileHandler, TimedRotatingFileHandler +from typing import Optional + +from .constants import LOGS_DIR, LOG_RETENTION_DAYS, APP_NAME + + +# ============================================================================ +# 로그 포맷 정의 +# ============================================================================ + +# 콘솔 로그 포맷 (간략) +CONSOLE_FORMAT = "%(asctime)s | %(levelname)-8s | %(name)s | %(message)s" + +# 파일 로그 포맷 (상세) +FILE_FORMAT = ( + "%(asctime)s | %(levelname)-8s | %(name)s | " + "%(filename)s:%(lineno)d | %(funcName)s | %(message)s" +) + +# 날짜 포맷 +DATE_FORMAT = "%Y-%m-%d %H:%M:%S" + + +# ============================================================================ +# 커스텀 로그 필터 +# ============================================================================ + +class LevelFilter(logging.Filter): + """ + 특정 레벨 이상의 로그만 통과시키는 필터 + + Args: + level: 최소 로그 레벨 + """ + + def __init__(self, level: int): + super().__init__() + self.level = level + + def filter(self, record: logging.LogRecord) -> bool: + return record.levelno >= self.level + + +class ModuleFilter(logging.Filter): + """ + 특정 모듈의 로그만 통과시키는 필터 + + Args: + modules: 허용할 모듈 이름 리스트 + """ + + def __init__(self, modules: list): + super().__init__() + self.modules = modules + + def filter(self, record: logging.LogRecord) -> bool: + return any(record.name.startswith(module) for module in self.modules) + + +# ============================================================================ +# 커스텀 핸들러 +# ============================================================================ + +class ColoredConsoleHandler(logging.StreamHandler): + """ + 컬러 콘솔 출력 핸들러 + + 로그 레벨에 따라 다른 색상으로 출력합니다. + Windows 콘솔에서도 ANSI 색상 코드를 지원합니다. + """ + + # ANSI 색상 코드 + COLORS = { + 'DEBUG': '\033[36m', # Cyan + 'INFO': '\033[32m', # Green + 'WARNING': '\033[33m', # Yellow + 'ERROR': '\033[31m', # Red + 'CRITICAL': '\033[35m', # Magenta + 'RESET': '\033[0m', # Reset + } + + def __init__(self, stream=None): + super().__init__(stream) + # Windows에서 ANSI 색상 코드 활성화 + if sys.platform == 'win32': + try: + import ctypes + kernel32 = ctypes.windll.kernel32 + kernel32.SetConsoleMode( + kernel32.GetStdHandle(-11), 7 + ) + except Exception: + pass + + def emit(self, record: logging.LogRecord): + try: + # 색상 코드 추가 + color = self.COLORS.get(record.levelname, self.COLORS['RESET']) + reset = self.COLORS['RESET'] + + # 원본 메시지 백업 + original_msg = record.msg + + # 색상 적용 + record.msg = f"{color}{record.msg}{reset}" + record.levelname = f"{color}{record.levelname}{reset}" + + super().emit(record) + + # 원본 메시지 복원 + record.msg = original_msg + + except Exception: + self.handleError(record) + + +# ============================================================================ +# 로거 설정 함수 +# ============================================================================ + +def setup_logger( + name: str = APP_NAME, + level: int = logging.DEBUG, + log_to_file: bool = True, + log_to_console: bool = True, + log_dir: Optional[Path] = None +) -> logging.Logger: + """ + 로거를 설정하고 반환합니다. + + 이 함수는 애플리케이션 시작 시 한 번 호출되어야 합니다. + 로그는 콘솔과 파일에 동시에 기록됩니다. + + Args: + name: 로거 이름 (기본값: 앱 이름) + level: 로그 레벨 (기본값: DEBUG) + log_to_file: 파일 로깅 활성화 여부 + log_to_console: 콘솔 로깅 활성화 여부 + log_dir: 로그 디렉토리 경로 (기본값: LOGS_DIR) + + Returns: + 설정된 Logger 객체 + + Examples: + >>> logger = setup_logger() + >>> logger.info("애플리케이션이 시작되었습니다.") + """ + # 로거 생성 + logger = logging.getLogger(name) + logger.setLevel(level) + + # 기존 핸들러 제거 (중복 방지) + logger.handlers.clear() + + # 콘솔 핸들러 설정 + if log_to_console: + console_handler = ColoredConsoleHandler(sys.stdout) + console_handler.setLevel(logging.INFO) + console_formatter = logging.Formatter(CONSOLE_FORMAT, DATE_FORMAT) + console_handler.setFormatter(console_formatter) + logger.addHandler(console_handler) + + # 파일 핸들러 설정 + if log_to_file: + # 로그 디렉토리 생성 + log_directory = log_dir or LOGS_DIR + log_directory.mkdir(parents=True, exist_ok=True) + + # 로그 파일 경로 + log_filename = log_directory / f"app_{datetime.now().strftime('%Y%m%d')}.log" + + # 일별 로테이션 핸들러 + file_handler = TimedRotatingFileHandler( + filename=log_filename, + when='midnight', + interval=1, + backupCount=LOG_RETENTION_DAYS, + encoding='utf-8' + ) + file_handler.setLevel(logging.DEBUG) + file_formatter = logging.Formatter(FILE_FORMAT, DATE_FORMAT) + file_handler.setFormatter(file_formatter) + logger.addHandler(file_handler) + + # 에러 전용 파일 핸들러 + error_filename = log_directory / f"error_{datetime.now().strftime('%Y%m%d')}.log" + error_handler = TimedRotatingFileHandler( + filename=error_filename, + when='midnight', + interval=1, + backupCount=LOG_RETENTION_DAYS, + encoding='utf-8' + ) + error_handler.setLevel(logging.ERROR) + error_handler.setFormatter(file_formatter) + logger.addHandler(error_handler) + + # 로거가 루트 로거로 전파되지 않도록 설정 + logger.propagate = False + + return logger + + +def get_logger(name: str = None) -> logging.Logger: + """ + 지정된 이름의 로거를 반환합니다. + + 모듈별로 별도의 로거를 사용할 때 호출합니다. + + Args: + name: 로거 이름 (기본값: 호출 모듈의 __name__) + + Returns: + Logger 객체 + + Examples: + >>> logger = get_logger(__name__) + >>> logger.debug("디버그 메시지") + """ + if name is None: + # 호출자의 모듈 이름 가져오기 + import inspect + frame = inspect.currentframe() + if frame and frame.f_back: + name = frame.f_back.f_globals.get('__name__', APP_NAME) + else: + name = APP_NAME + + return logging.getLogger(name) + + +def set_log_level(level: int, logger_name: str = None): + """ + 로거의 로그 레벨을 변경합니다. + + Args: + level: 새로운 로그 레벨 + logger_name: 로거 이름 (기본값: 루트 로거) + + Examples: + >>> set_log_level(logging.WARNING) + """ + logger = logging.getLogger(logger_name) if logger_name else logging.getLogger() + logger.setLevel(level) + + for handler in logger.handlers: + handler.setLevel(level) + + +def cleanup_old_logs(log_dir: Optional[Path] = None, days: int = LOG_RETENTION_DAYS): + """ + 오래된 로그 파일을 삭제합니다. + + Args: + log_dir: 로그 디렉토리 경로 + days: 보관 기간 (일) + """ + import time + + log_directory = log_dir or LOGS_DIR + if not log_directory.exists(): + return + + now = time.time() + cutoff = now - (days * 86400) # days to seconds + + for log_file in log_directory.glob("*.log*"): + if log_file.stat().st_mtime < cutoff: + try: + log_file.unlink() + except Exception as e: + print(f"로그 파일 삭제 실패: {log_file} - {e}") + + +# ============================================================================ +# 로그 유틸리티 함수 +# ============================================================================ + +def log_function_call(logger: logging.Logger): + """ + 함수 호출을 로깅하는 데코레이터 + + Args: + logger: 사용할 로거 + + Returns: + 데코레이터 함수 + + Examples: + >>> @log_function_call(logger) + ... def my_function(x, y): + ... return x + y + """ + def decorator(func): + def wrapper(*args, **kwargs): + logger.debug(f"호출: {func.__name__}(args={args}, kwargs={kwargs})") + try: + result = func(*args, **kwargs) + logger.debug(f"완료: {func.__name__} -> {result}") + return result + except Exception as e: + logger.error(f"예외 발생: {func.__name__} -> {e}") + raise + return wrapper + return decorator + + +def log_exception(logger: logging.Logger, exc: Exception, extra_info: str = None): + """ + 예외를 상세하게 로깅합니다. + + Args: + logger: 사용할 로거 + exc: 예외 객체 + extra_info: 추가 정보 + """ + import traceback + + error_message = f"예외 발생: {type(exc).__name__}: {exc}" + if extra_info: + error_message = f"{extra_info} - {error_message}" + + logger.error(error_message) + logger.debug(f"스택 트레이스:\n{traceback.format_exc()}") + + +# ============================================================================ +# 모듈 레벨 기본 로거 +# ============================================================================ + +# 기본 로거 (모듈 로드 시 설정되지 않음) +_default_logger: Optional[logging.Logger] = None + + +def get_default_logger() -> logging.Logger: + """ + 기본 로거를 반환합니다. + + 로거가 설정되지 않은 경우 기본 설정으로 초기화합니다. + """ + global _default_logger + + if _default_logger is None: + _default_logger = setup_logger() + + return _default_logger + + diff --git a/core/settings_manager.py b/core/settings_manager.py new file mode 100644 index 0000000..54b06c9 --- /dev/null +++ b/core/settings_manager.py @@ -0,0 +1,892 @@ +# -*- coding: utf-8 -*- +""" +설정 관리자 모듈 (Settings Manager) +사용자 설정을 별도의 SQLite 데이터베이스로 관리합니다. + +이 모듈은 다음 기능을 제공합니다: +- 사용자 설정 저장/로드 (SQLite DB) +- 팀별 필드 설정 관리 +- 마스터 데이터 관리 (편성, 역명, 제조사 등) +- Supabase 동기화 준비 + +향후 Supabase 통합 시: +- 로컬 DB는 오프라인 캐시로 사용 +- 온라인 시 Supabase와 동기화 +- 충돌 해결 전략 적용 +""" + +import sqlite3 +import json +import threading +from pathlib import Path +from typing import Optional, List, Dict, Any, Tuple +from contextlib import contextmanager +from dataclasses import dataclass, asdict +from datetime import datetime + +from .constants import DATA_DIR, TEAMS +from .logger import get_logger + +logger = get_logger(__name__) + + +# ============================================================================ +# 데이터 클래스 +# ============================================================================ + +@dataclass +class FieldSetting: + """필드 설정 데이터 클래스""" + name: str + visible: bool = True + width: int = 100 + display_format: Optional[str] = None # "full", "short", "month_day" 등 + + +@dataclass +class TrainInfo: + """편성 정보 데이터 클래스 (마스터 데이터)""" + train_number: str # 편성번호 (예: "101A") + train_type: str = "B" # A: 구형, B: 신형 + manufacturer: str = "" # 제조사 + manufacture_year: int = 0 # 제조년도 + depot: str = "" # 소속 차량사업소 + is_active: bool = True + + +@dataclass +class StationInfo: + """역 정보 데이터 클래스 (마스터 데이터)""" + station_code: str # 역 코드 + station_name: str # 역명 + line_number: int = 1 # 호선 + order: int = 0 # 순서 + is_active: bool = True + + +@dataclass +class ManufacturerInfo: + """제조사 정보 데이터 클래스""" + id: int + name: str # 제조사명 + + +@dataclass +class FaultCodeInfo: + """고장 코드 정보 데이터 클래스""" + f_code: str # 고장 코드 + f_code_num: Optional[int] = None # 고장 코드 번호 + f_name: Optional[str] = None # 고장명 + car_type: Optional[str] = None # 차량 타입 + f_class: Optional[str] = None # 고장 분류 + fault_name: Optional[str] = None # 고장 상세명 + grade: Optional[str] = None # 등급 + device: Optional[str] = None # 장치 + fault_detail: Optional[str] = None # 고장 상세 + fault_action: Optional[str] = None # 조치 방법 + manufacturer: Optional[str] = None # 제조사 + + +# ============================================================================ +# SQL 스키마 +# ============================================================================ + +SETTINGS_DB_SCHEMA = """ +-- 사용자 설정 테이블 (키-값 형태) +CREATE TABLE IF NOT EXISTS user_settings ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + team TEXT NOT NULL, -- 운용당무 (1팀, 2팀, 3팀, 4팀) + category TEXT NOT NULL, -- 설정 카테고리 (field_settings, ui_settings, etc.) + key TEXT NOT NULL, -- 설정 키 + value TEXT, -- JSON 형태의 값 + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP, + UNIQUE(team, category, key) +); + +-- 필드 설정 테이블 (섹션별 필드 설정) +CREATE TABLE IF NOT EXISTS field_settings ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + team TEXT NOT NULL, -- 운용당무 + section_name TEXT NOT NULL, -- 섹션 이름 (지시, 고장, 작업, 기타) + field_name TEXT NOT NULL, -- 필드 이름 + visible INTEGER DEFAULT 1, -- 표시 여부 + width INTEGER DEFAULT 100, -- 너비 + display_format TEXT, -- 표시 형식 + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP, + UNIQUE(team, section_name, field_name) +); + +-- 편성 정보 테이블 (마스터 데이터) +CREATE TABLE IF NOT EXISTS train_info ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + train_number TEXT UNIQUE NOT NULL, -- 편성번호 + train_type TEXT DEFAULT 'B', -- A: 구형, B: 신형 + manufacturer TEXT, -- 제조사 + manufacture_year INTEGER, -- 제조년도 + depot TEXT, -- 소속 차량사업소 + is_active INTEGER DEFAULT 1, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP, + synced_at DATETIME -- Supabase 동기화 시간 +); + +-- 역 정보 테이블 (마스터 데이터) +CREATE TABLE IF NOT EXISTS station_info ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + station_code TEXT UNIQUE NOT NULL, -- 역 코드 + station_name TEXT NOT NULL, -- 역명 + line_number INTEGER DEFAULT 1, -- 호선 + "order" INTEGER DEFAULT 0, -- 순서 + is_active INTEGER DEFAULT 1, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP, + synced_at DATETIME -- Supabase 동기화 시간 +); + +-- 제조사 정보 테이블 (마스터 데이터) +CREATE TABLE IF NOT EXISTS manufacturer_info ( + id INTEGER PRIMARY KEY, + name TEXT UNIQUE NOT NULL, -- 제조사명 + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP, + synced_at DATETIME -- Supabase 동기화 시간 +); + +-- 고장 코드 테이블 (마스터 데이터) +CREATE TABLE IF NOT EXISTS fault_code_info ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + f_code TEXT NOT NULL, -- 고장 코드 + f_code_num INTEGER, -- 고장 코드 번호 + f_name TEXT, -- 고장명 + car_type TEXT, -- 차량 타입 + f_class TEXT, -- 고장 분류 + fault_name TEXT, -- 고장 상세명 + grade TEXT, -- 등급 + device TEXT, -- 장치 + fault_detail TEXT, -- 고장 상세 + fault_action TEXT, -- 조치 방법 + manufacturer TEXT, -- 제조사 + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP, + synced_at DATETIME, -- Supabase 동기화 시간 + UNIQUE(f_code, car_type, manufacturer) +); + +-- 동기화 상태 테이블 +CREATE TABLE IF NOT EXISTS sync_status ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + table_name TEXT UNIQUE NOT NULL, -- 테이블 이름 + last_synced_at DATETIME, -- 마지막 동기화 시간 + last_sync_hash TEXT, -- 마지막 동기화 해시 (변경 감지용) + status TEXT DEFAULT 'pending' -- pending, syncing, synced, error +); + +-- 인덱스 생성 +CREATE INDEX IF NOT EXISTS idx_user_settings_team ON user_settings(team); +CREATE INDEX IF NOT EXISTS idx_field_settings_team_section ON field_settings(team, section_name); +CREATE INDEX IF NOT EXISTS idx_train_info_number ON train_info(train_number); +CREATE INDEX IF NOT EXISTS idx_station_info_name ON station_info(station_name); +CREATE INDEX IF NOT EXISTS idx_manufacturer_name ON manufacturer_info(name); +CREATE INDEX IF NOT EXISTS idx_fault_code ON fault_code_info(f_code); +CREATE INDEX IF NOT EXISTS idx_fault_code_car_type ON fault_code_info(car_type); +""" + + +# ============================================================================ +# 설정 관리자 클래스 +# ============================================================================ + +class SettingsManager: + """ + 설정 관리자 클래스 + + 사용자 설정을 별도의 SQLite 데이터베이스로 관리합니다. + Supabase 통합을 고려한 구조로 설계되었습니다. + + Examples: + >>> settings = SettingsManager() + >>> settings.save_field_settings("1팀", "고장", [FieldSetting("train_number", True, 80)]) + >>> fields = settings.load_field_settings("1팀", "고장") + """ + + _instance: Optional['SettingsManager'] = None + _lock = threading.Lock() + + def __new__(cls): + """싱글톤 패턴""" + with cls._lock: + if cls._instance is None: + cls._instance = super().__new__(cls) + cls._instance._initialized = False + return cls._instance + + def __init__(self): + """초기화""" + if self._initialized: + return + + self.db_path = DATA_DIR / "settings.db" + self._local = threading.local() + + # 데이터 디렉토리 생성 + DATA_DIR.mkdir(parents=True, exist_ok=True) + + # 데이터베이스 초기화 + self._init_database() + + self._initialized = True + logger.info(f"설정 관리자 초기화 완료: {self.db_path}") + + def _init_database(self): + """데이터베이스 초기화""" + try: + with self.get_connection() as conn: + conn.executescript(SETTINGS_DB_SCHEMA) + conn.commit() + logger.info("설정 데이터베이스 스키마 생성 완료") + except Exception as e: + logger.error(f"설정 데이터베이스 초기화 실패: {e}") + raise + + @contextmanager + def get_connection(self): + """스레드별 연결 관리""" + if not hasattr(self._local, 'conn') or self._local.conn is None: + self._local.conn = sqlite3.connect( + self.db_path, + check_same_thread=False, + detect_types=sqlite3.PARSE_DECLTYPES + ) + self._local.conn.row_factory = sqlite3.Row + + try: + yield self._local.conn + except Exception as e: + self._local.conn.rollback() + raise e + + def close(self): + """연결 종료""" + if hasattr(self._local, 'conn') and self._local.conn: + self._local.conn.close() + self._local.conn = None + + # ======================================================================== + # 필드 설정 관리 + # ======================================================================== + + def save_field_settings( + self, + team: str, + section_name: str, + fields: List[FieldSetting] + ): + """ + 필드 설정 저장 + + Args: + team: 팀 이름 (예: "1팀") + section_name: 섹션 이름 (예: "고장") + fields: 필드 설정 리스트 + """ + try: + with self.get_connection() as conn: + cursor = conn.cursor() + + for field in fields: + cursor.execute(""" + INSERT OR REPLACE INTO field_settings + (team, section_name, field_name, visible, width, display_format, updated_at) + VALUES (?, ?, ?, ?, ?, ?, ?) + """, ( + team, + section_name, + field.name, + 1 if field.visible else 0, + field.width, + field.display_format, + datetime.now().isoformat() + )) + + conn.commit() + logger.info(f"필드 설정 저장 완료: {team} - {section_name} ({len(fields)}개 필드)") + + except Exception as e: + logger.error(f"필드 설정 저장 실패: {e}") + raise + + def load_field_settings( + self, + team: str, + section_name: str + ) -> Optional[List[FieldSetting]]: + """ + 필드 설정 로드 + + Args: + team: 팀 이름 + section_name: 섹션 이름 + + Returns: + 필드 설정 리스트 (없으면 None) + """ + try: + with self.get_connection() as conn: + cursor = conn.cursor() + cursor.execute(""" + SELECT field_name, visible, width, display_format + FROM field_settings + WHERE team = ? AND section_name = ? + """, (team, section_name)) + + rows = cursor.fetchall() + if not rows: + return None + + fields = [] + for row in rows: + field = FieldSetting( + name=row['field_name'], + visible=bool(row['visible']), + width=row['width'] or 100, + display_format=row['display_format'] + ) + fields.append(field) + + return fields + + except Exception as e: + logger.error(f"필드 설정 로드 실패: {e}") + return None + + def apply_field_settings_to_fields( + self, + team: str, + section_name: str, + fields: List[Any] # FieldConfig 리스트 + ): + """ + 저장된 설정을 필드에 적용 + + Args: + team: 팀 이름 + section_name: 섹션 이름 + fields: FieldConfig 리스트 + """ + saved_fields = self.load_field_settings(team, section_name) + if not saved_fields: + return + + # 필드 이름으로 매핑 + saved_dict = {f.name: f for f in saved_fields} + + # 각 필드에 설정 적용 + for field in fields: + if field.name in saved_dict: + saved = saved_dict[field.name] + field.visible = saved.visible + field.width = saved.width + if saved.display_format is not None: + field.display_format = saved.display_format + + logger.debug(f"필드 설정 적용 완료: {team} - {section_name}") + + def reset_team_field_settings(self, team: str): + """팀별 필드 설정 초기화""" + try: + with self.get_connection() as conn: + cursor = conn.cursor() + cursor.execute("DELETE FROM field_settings WHERE team = ?", (team,)) + conn.commit() + logger.info(f"팀 필드 설정 초기화: {team}") + except Exception as e: + logger.error(f"팀 필드 설정 초기화 실패: {e}") + + def reset_all_field_settings(self): + """모든 필드 설정 초기화""" + try: + with self.get_connection() as conn: + cursor = conn.cursor() + cursor.execute("DELETE FROM field_settings") + conn.commit() + logger.info("모든 필드 설정 초기화 완료") + except Exception as e: + logger.error(f"모든 필드 설정 초기화 실패: {e}") + + # ======================================================================== + # 사용자 설정 관리 (일반 키-값) + # ======================================================================== + + def save_setting( + self, + team: str, + category: str, + key: str, + value: Any + ): + """ + 일반 설정 저장 + + Args: + team: 팀 이름 + category: 카테고리 (예: "ui_settings", "preferences") + key: 설정 키 + value: 설정 값 (JSON 직렬화 가능해야 함) + """ + try: + with self.get_connection() as conn: + cursor = conn.cursor() + + # 값을 JSON 문자열로 변환 + json_value = json.dumps(value, ensure_ascii=False) + + cursor.execute(""" + INSERT OR REPLACE INTO user_settings + (team, category, key, value, updated_at) + VALUES (?, ?, ?, ?, ?) + """, (team, category, key, json_value, datetime.now().isoformat())) + + conn.commit() + logger.debug(f"설정 저장: {team}/{category}/{key}") + + except Exception as e: + logger.error(f"설정 저장 실패: {e}") + raise + + def load_setting( + self, + team: str, + category: str, + key: str, + default: Any = None + ) -> Any: + """ + 일반 설정 로드 + + Args: + team: 팀 이름 + category: 카테고리 + key: 설정 키 + default: 기본값 + + Returns: + 설정 값 + """ + try: + with self.get_connection() as conn: + cursor = conn.cursor() + cursor.execute(""" + SELECT value FROM user_settings + WHERE team = ? AND category = ? AND key = ? + """, (team, category, key)) + + row = cursor.fetchone() + if row: + return json.loads(row['value']) + return default + + except Exception as e: + logger.error(f"설정 로드 실패: {e}") + return default + + def load_settings_by_category( + self, + team: str, + category: str + ) -> Dict[str, Any]: + """ + 카테고리별 모든 설정 로드 + + Args: + team: 팀 이름 + category: 카테고리 + + Returns: + 설정 딕셔너리 {key: value} + """ + try: + with self.get_connection() as conn: + cursor = conn.cursor() + cursor.execute(""" + SELECT key, value FROM user_settings + WHERE team = ? AND category = ? + """, (team, category)) + + result = {} + for row in cursor.fetchall(): + try: + result[row['key']] = json.loads(row['value']) + except json.JSONDecodeError: + result[row['key']] = row['value'] + + return result + + except Exception as e: + logger.error(f"카테고리 설정 로드 실패: {e}") + return {} + + # ======================================================================== + # 마스터 데이터 관리 + # ======================================================================== + + def save_train_info(self, train: TrainInfo): + """편성 정보 저장""" + try: + with self.get_connection() as conn: + cursor = conn.cursor() + cursor.execute(""" + INSERT OR REPLACE INTO train_info + (train_number, train_type, manufacturer, manufacture_year, depot, is_active, updated_at) + VALUES (?, ?, ?, ?, ?, ?, ?) + """, ( + train.train_number, + train.train_type, + train.manufacturer, + train.manufacture_year, + train.depot, + 1 if train.is_active else 0, + datetime.now().isoformat() + )) + conn.commit() + except Exception as e: + logger.error(f"편성 정보 저장 실패: {e}") + raise + + def load_train_info(self, train_number: str) -> Optional[TrainInfo]: + """편성 정보 로드""" + try: + with self.get_connection() as conn: + cursor = conn.cursor() + cursor.execute(""" + SELECT * FROM train_info WHERE train_number = ? + """, (train_number,)) + + row = cursor.fetchone() + if row: + return TrainInfo( + train_number=row['train_number'], + train_type=row['train_type'], + manufacturer=row['manufacturer'] or "", + manufacture_year=row['manufacture_year'] or 0, + depot=row['depot'] or "", + is_active=bool(row['is_active']) + ) + return None + except Exception as e: + logger.error(f"편성 정보 로드 실패: {e}") + return None + + def get_all_trains(self, active_only: bool = True) -> List[TrainInfo]: + """모든 편성 정보 조회""" + try: + with self.get_connection() as conn: + cursor = conn.cursor() + + if active_only: + cursor.execute("SELECT * FROM train_info WHERE is_active = 1 ORDER BY train_number") + else: + cursor.execute("SELECT * FROM train_info ORDER BY train_number") + + trains = [] + for row in cursor.fetchall(): + train = TrainInfo( + train_number=row['train_number'], + train_type=row['train_type'], + manufacturer=row['manufacturer'] or "", + manufacture_year=row['manufacture_year'] or 0, + depot=row['depot'] or "", + is_active=bool(row['is_active']) + ) + trains.append(train) + + return trains + except Exception as e: + logger.error(f"편성 정보 조회 실패: {e}") + return [] + + def save_station_info(self, station: StationInfo): + """역 정보 저장""" + try: + with self.get_connection() as conn: + cursor = conn.cursor() + cursor.execute(""" + INSERT OR REPLACE INTO station_info + (station_code, station_name, line_number, "order", is_active, updated_at) + VALUES (?, ?, ?, ?, ?, ?) + """, ( + station.station_code, + station.station_name, + station.line_number, + station.order, + 1 if station.is_active else 0, + datetime.now().isoformat() + )) + conn.commit() + except Exception as e: + logger.error(f"역 정보 저장 실패: {e}") + raise + + def get_all_stations(self, line_number: int = None, active_only: bool = True) -> List[StationInfo]: + """모든 역 정보 조회""" + try: + with self.get_connection() as conn: + cursor = conn.cursor() + + query = "SELECT * FROM station_info" + params = [] + + conditions = [] + if active_only: + conditions.append("is_active = 1") + if line_number: + conditions.append("line_number = ?") + params.append(line_number) + + if conditions: + query += " WHERE " + " AND ".join(conditions) + + query += ' ORDER BY "order"' + + cursor.execute(query, params) + + stations = [] + for row in cursor.fetchall(): + station = StationInfo( + station_code=row['station_code'], + station_name=row['station_name'], + line_number=row['line_number'], + order=row['order'], + is_active=bool(row['is_active']) + ) + stations.append(station) + + return stations + except Exception as e: + logger.error(f"역 정보 조회 실패: {e}") + return [] + + # ======================================================================== + # 제조사 정보 관리 + # ======================================================================== + + def save_manufacturer_info(self, manufacturer: 'ManufacturerInfo'): + """제조사 정보 저장""" + try: + with self.get_connection() as conn: + cursor = conn.cursor() + cursor.execute(""" + INSERT OR REPLACE INTO manufacturer_info + (id, name, updated_at, synced_at) + VALUES (?, ?, ?, ?) + """, ( + manufacturer.id, + manufacturer.name, + datetime.now().isoformat(), + datetime.now().isoformat() + )) + conn.commit() + except Exception as e: + logger.error(f"제조사 정보 저장 실패: {e}") + raise + + def get_all_manufacturers(self) -> List['ManufacturerInfo']: + """모든 제조사 정보 조회""" + try: + with self.get_connection() as conn: + cursor = conn.cursor() + cursor.execute("SELECT * FROM manufacturer_info ORDER BY name") + + manufacturers = [] + for row in cursor.fetchall(): + mfr = ManufacturerInfo( + id=row['id'], + name=row['name'] + ) + manufacturers.append(mfr) + + return manufacturers + except Exception as e: + logger.error(f"제조사 정보 조회 실패: {e}") + return [] + + # ======================================================================== + # 고장 코드 정보 관리 + # ======================================================================== + + def save_fault_code_info(self, fault_code: 'FaultCodeInfo'): + """고장 코드 정보 저장""" + try: + with self.get_connection() as conn: + cursor = conn.cursor() + cursor.execute(""" + INSERT OR REPLACE INTO fault_code_info + (f_code, f_code_num, f_name, car_type, f_class, fault_name, + grade, device, fault_detail, fault_action, manufacturer, + updated_at, synced_at) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) + """, ( + fault_code.f_code, + fault_code.f_code_num, + fault_code.f_name, + fault_code.car_type, + fault_code.f_class, + fault_code.fault_name, + fault_code.grade, + fault_code.device, + fault_code.fault_detail, + fault_code.fault_action, + fault_code.manufacturer, + datetime.now().isoformat(), + datetime.now().isoformat() + )) + conn.commit() + except Exception as e: + logger.error(f"고장 코드 정보 저장 실패: {e}") + raise + + def get_fault_codes( + self, + car_type: str = None, + manufacturer: str = None + ) -> List['FaultCodeInfo']: + """고장 코드 정보 조회""" + try: + with self.get_connection() as conn: + cursor = conn.cursor() + + query = "SELECT * FROM fault_code_info" + params = [] + conditions = [] + + if car_type: + conditions.append("car_type = ?") + params.append(car_type) + if manufacturer: + conditions.append("manufacturer = ?") + params.append(manufacturer) + + if conditions: + query += " WHERE " + " AND ".join(conditions) + + query += " ORDER BY f_code_num" + + cursor.execute(query, params) + + codes = [] + for row in cursor.fetchall(): + code = FaultCodeInfo( + f_code=row['f_code'], + f_code_num=row['f_code_num'], + f_name=row['f_name'], + car_type=row['car_type'], + f_class=row['f_class'], + fault_name=row['fault_name'], + grade=row['grade'], + device=row['device'], + fault_detail=row['fault_detail'], + fault_action=row['fault_action'], + manufacturer=row['manufacturer'] + ) + codes.append(code) + + return codes + except Exception as e: + logger.error(f"고장 코드 정보 조회 실패: {e}") + return [] + + def search_fault_codes(self, keyword: str) -> List['FaultCodeInfo']: + """고장 코드 검색""" + try: + with self.get_connection() as conn: + cursor = conn.cursor() + + search_term = f"%{keyword}%" + cursor.execute(""" + SELECT * FROM fault_code_info + WHERE f_code LIKE ? OR f_name LIKE ? OR fault_name LIKE ? OR device LIKE ? + ORDER BY f_code_num + """, (search_term, search_term, search_term, search_term)) + + codes = [] + for row in cursor.fetchall(): + code = FaultCodeInfo( + f_code=row['f_code'], + f_code_num=row['f_code_num'], + f_name=row['f_name'], + car_type=row['car_type'], + f_class=row['f_class'], + fault_name=row['fault_name'], + grade=row['grade'], + device=row['device'], + fault_detail=row['fault_detail'], + fault_action=row['fault_action'], + manufacturer=row['manufacturer'] + ) + codes.append(code) + + return codes + except Exception as e: + logger.error(f"고장 코드 검색 실패: {e}") + return [] + + # ======================================================================== + # Supabase 동기화 준비 + # ======================================================================== + + def get_sync_status(self, table_name: str) -> Dict[str, Any]: + """동기화 상태 조회""" + try: + with self.get_connection() as conn: + cursor = conn.cursor() + cursor.execute(""" + SELECT * FROM sync_status WHERE table_name = ? + """, (table_name,)) + + row = cursor.fetchone() + if row: + return { + 'table_name': row['table_name'], + 'last_synced_at': row['last_synced_at'], + 'last_sync_hash': row['last_sync_hash'], + 'status': row['status'] + } + return {'table_name': table_name, 'status': 'never_synced'} + except Exception as e: + logger.error(f"동기화 상태 조회 실패: {e}") + return {'table_name': table_name, 'status': 'error'} + + def update_sync_status( + self, + table_name: str, + status: str = 'synced', + sync_hash: str = None + ): + """동기화 상태 업데이트""" + try: + with self.get_connection() as conn: + cursor = conn.cursor() + cursor.execute(""" + INSERT OR REPLACE INTO sync_status + (table_name, last_synced_at, last_sync_hash, status) + VALUES (?, ?, ?, ?) + """, ( + table_name, + datetime.now().isoformat(), + sync_hash, + status + )) + conn.commit() + except Exception as e: + logger.error(f"동기화 상태 업데이트 실패: {e}") + + +# ============================================================================ +# 모듈 레벨 편의 함수 +# ============================================================================ + +def get_settings_manager() -> SettingsManager: + """설정 관리자 인스턴스 반환""" + return SettingsManager() + diff --git a/core/signals.py b/core/signals.py new file mode 100644 index 0000000..129455b --- /dev/null +++ b/core/signals.py @@ -0,0 +1,209 @@ +# -*- coding: utf-8 -*- +""" +전역 시그널 모듈 +애플리케이션 전역에서 사용되는 시그널들을 정의합니다. + +Qt 시그널/슬롯 메커니즘을 사용하여 모듈 간 느슨한 결합을 유지합니다. +이 모듈을 통해 서로 다른 모듈 간에 이벤트를 전파할 수 있습니다. +""" + +from PySide6.QtCore import QObject, Signal +from typing import Optional + + +class GlobalSignals(QObject): + """ + 전역 시그널 클래스 + + 싱글톤 패턴을 사용하여 애플리케이션 전역에서 하나의 인스턴스만 사용합니다. + 다양한 모듈 간 통신에 사용되는 시그널들을 정의합니다. + + Attributes: + data_changed: 데이터 변경 시그널 + user_logged_in: 사용자 로그인 시그널 + theme_changed: 테마 변경 시그널 + team_changed: 팀 변경 시그널 + ... + + Examples: + >>> signals = GlobalSignals() + >>> signals.data_changed.emit("instructions") + >>> signals.user_logged_in.connect(self.on_user_login) + """ + + _instance: Optional['GlobalSignals'] = None + + # ======================================================================== + # 데이터 관련 시그널 + # ======================================================================== + + # 데이터 변경 시그널 (테이블명: str) + data_changed = Signal(str) + + # 레코드 생성 시그널 (테이블명: str, 레코드 ID: int) + record_created = Signal(str, int) + + # 레코드 업데이트 시그널 (테이블명: str, 레코드 ID: int) + record_updated = Signal(str, int) + + # 레코드 삭제 시그널 (테이블명: str, 레코드 ID: int) + record_deleted = Signal(str, int) + + # 데이터 동기화 완료 시그널 + sync_completed = Signal() + + # 데이터 동기화 오류 시그널 (오류 메시지: str) + sync_error = Signal(str) + + # ======================================================================== + # 사용자/인증 관련 시그널 + # ======================================================================== + + # 사용자 로그인 시그널 (사용자 ID: int, 사용자명: str) + user_logged_in = Signal(int, str) + + # 사용자 로그아웃 시그널 + user_logged_out = Signal() + + # 권한 변경 시그널 (새 권한: str) + permission_changed = Signal(str) + + # ======================================================================== + # 팀/근무 관련 시그널 + # ======================================================================== + + # 팀 변경 시그널 (새 팀명: str) + team_changed = Signal(str) + + # 근무 유형 변경 시그널 (새 근무 유형: str - "주간" 또는 "야간") + shift_changed = Signal(str) + + # ======================================================================== + # UI 관련 시그널 + # ======================================================================== + + # 테마 변경 시그널 (테마명: str) + theme_changed = Signal(str) + + # 레이아웃 변경 시그널 + layout_changed = Signal() + + # 섹션 탭 변경 시그널 (섹션명: str) + section_tab_changed = Signal(str) + + # 상태바 메시지 시그널 (메시지: str, 타임아웃: int) + status_message = Signal(str, int) + + # 알림 시그널 (제목: str, 메시지: str, 유형: str) + notification = Signal(str, str, str) + + # ======================================================================== + # 날씨 관련 시그널 + # ======================================================================== + + # 날씨 정보 업데이트 시그널 (날씨 데이터: dict를 JSON 문자열로) + weather_updated = Signal(str) + + # 날씨 업데이트 오류 시그널 (오류 메시지: str) + weather_error = Signal(str) + + # 날씨 지역 변경 시그널 + weather_location_changed = Signal() + + # 날씨 새로고침 요청 시그널 + weather_refresh_requested = Signal() + + # ======================================================================== + # 업데이트 관련 시그널 + # ======================================================================== + + # 업데이트 가능 시그널 (새 버전: str) + update_available = Signal(str) + + # 업데이트 진행 시그널 (진행률: int) + update_progress = Signal(int) + + # 업데이트 완료 시그널 + update_completed = Signal() + + # 업데이트 오류 시그널 (오류 메시지: str) + update_error = Signal(str) + + # ======================================================================== + # 편성 관련 시그널 + # ======================================================================== + + # 편성 선택 시그널 (편성번호: str) + train_selected = Signal(str) + + # 편성 정보 팝업 요청 시그널 (편성번호: str, x 위치: int, y 위치: int) + show_train_popup = Signal(str, int, int) + + # 편성 정보 팝업 숨김 시그널 + hide_train_popup = Signal() + + # ======================================================================== + # 일상검수 관련 시그널 + # ======================================================================== + + # 일상검수 편성 변경 시그널 (근무 유형: str, 슬롯 번호: int, 편성번호: str) + daily_inspection_changed = Signal(str, int, str) + + # ======================================================================== + # Todo/메모 관련 시그널 + # ======================================================================== + + # Todo 추가 시그널 (Todo ID: int) + todo_added = Signal(int) + + # Todo 완료 상태 변경 시그널 (Todo ID: int, 완료 여부: bool) + todo_status_changed = Signal(int, bool) + + # 메모 변경 시그널 (메모 ID: int) + memo_changed = Signal(int) + + # ======================================================================== + # 시스템 시그널 + # ======================================================================== + + # 애플리케이션 종료 요청 시그널 + app_quit_requested = Signal() + + # 에러 발생 시그널 (에러 타입: str, 에러 메시지: str) + error_occurred = Signal(str, str) + + # 디버그 메시지 시그널 (메시지: str) + debug_message = Signal(str) + + def __new__(cls): + """싱글톤 패턴 구현""" + if cls._instance is None: + cls._instance = super().__new__(cls) + return cls._instance + + def __init__(self): + """초기화""" + # QObject 초기화는 한 번만 수행 + if not hasattr(self, '_initialized'): + super().__init__() + self._initialized = True + + +# ============================================================================ +# 모듈 레벨 편의 함수 +# ============================================================================ + +def get_signals() -> GlobalSignals: + """ + 전역 시그널 인스턴스를 반환합니다. + + Returns: + GlobalSignals 인스턴스 + + Examples: + >>> signals = get_signals() + >>> signals.data_changed.emit("instructions") + """ + return GlobalSignals() + + diff --git a/core/supabase_client.py b/core/supabase_client.py new file mode 100644 index 0000000..69b1a75 --- /dev/null +++ b/core/supabase_client.py @@ -0,0 +1,634 @@ +# -*- coding: utf-8 -*- +""" +Supabase 클라이언트 모듈 +Supabase REST API를 통해 마스터 데이터를 동기화합니다. + +지원 테이블: +- Trains: 편성 정보 +- Stations: 역 정보 +- Manufacturer: 제조사 정보 +- Car_Identity: 차량 식별 정보 +- Fault_Code_Table: 고장 코드 테이블 +""" + +import requests +from typing import Optional, List, Dict, Any +from dataclasses import dataclass +from datetime import datetime +import json + +from .logger import get_logger +from .settings_manager import ( + get_settings_manager, TrainInfo, StationInfo, + ManufacturerInfo, FaultCodeInfo +) + +logger = get_logger(__name__) + + +# ============================================================================ +# Supabase 설정 +# ============================================================================ + +SUPABASE_URL = "http://122.35.47.72:8000" # Kong API Gateway (기본 포트) +# 대체 포트: 3000 (PostgREST 직접), 54321 (Supabase Studio 기본) +SUPABASE_ANON_KEY = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJyb2xlIjoiYW5vbiIsImlzcyI6InN1cGFiYXNlIiwiaWF0IjoxNzU4NTUxNjY2LCJleHAiOjQxMDI0NDQ4MDB9.jMCGL3Q-N2o_l7JQE_HrO7Uoct86CMgLsVxpabisG4I" + + +# ============================================================================ +# 데이터 클래스 (Supabase 테이블 매핑) +# ============================================================================ + +@dataclass +class SupabaseTrainInfo: + """Supabase Trains 테이블 매핑""" + id: int + train_set: Optional[int] = None # 편성번호 (예: 1, 2, 3...) + train_id: Optional[str] = None # 편성 ID (예: "101") + car_num: Optional[int] = None # 호차 수 + car_type: Optional[str] = None # 차량 타입 + manufacturer: Optional[str] = None # 제조사 + is_new: Optional[bool] = None # 신형 여부 + date_of_Commercial_Service: Optional[str] = None # 영업 개시일 + date_of_Introduction: Optional[str] = None # 도입일 + introduction_stage: Optional[str] = None # 도입 단계 + service_nickname: Optional[str] = None # 서비스 별명 + + +@dataclass +class SupabaseStationInfo: + """Supabase Stations 테이블 매핑""" + id: str + line_number: Optional[int] = None # 호선 + station_id: Optional[float] = None # 역 ID + station_name: Optional[str] = None # 역명 + station_map: Optional[str] = None # 역 지도 + is_underground: Optional[bool] = None # 지하 여부 + is_island: Optional[bool] = None # 섬식 승강장 + is_exchange: Optional[bool] = None # 환승역 + is_end: Optional[bool] = None # 종착역 + has_siding_track: Optional[bool] = None # 측선 여부 + has_signal_room: Optional[bool] = None # 신호실 여부 + + +@dataclass +class ManufacturerInfo: + """Supabase Manufacturer 테이블 매핑""" + id: int + manufact: Optional[str] = None # 제조사명 + + +@dataclass +class FaultCodeInfo: + """Supabase Fault_Code_Table 테이블 매핑""" + id: str + f_code: Optional[str] = None # 고장 코드 + f_code_num: Optional[int] = None # 고장 코드 번호 + f_name: Optional[str] = None # 고장명 + car_type: Optional[str] = None # 차량 타입 + f_class: Optional[str] = None # 고장 분류 + fault_name: Optional[str] = None # 고장 상세명 + grade: Optional[str] = None # 등급 + device: Optional[str] = None # 장치 + fault_detail: Optional[str] = None # 고장 상세 + fault_reaction: Optional[str] = None # 고장 반응 + fault_action: Optional[str] = None # 조치 방법 + alias_name: Optional[str] = None # 별칭 + manufacturer: Optional[str] = None # 제조사 + + +# ============================================================================ +# Supabase 클라이언트 +# ============================================================================ + +class SupabaseClient: + """ + Supabase REST API 클라이언트 + + Docker로 운영 중인 Supabase에서 마스터 데이터를 조회합니다. + + Examples: + >>> client = SupabaseClient() + >>> trains = client.get_trains() + >>> stations = client.get_stations() + """ + + _instance: Optional['SupabaseClient'] = None + + def __new__(cls): + """싱글톤 패턴""" + if cls._instance is None: + cls._instance = super().__new__(cls) + cls._instance._initialized = False + return cls._instance + + def __init__(self): + """초기화""" + if self._initialized: + return + + self.base_url = SUPABASE_URL + self.anon_key = SUPABASE_ANON_KEY + self.headers = { + "apikey": self.anon_key, + "Authorization": f"Bearer {self.anon_key}", + "Content-Type": "application/json", + "Prefer": "return=representation" + } + + self._initialized = True + logger.info(f"Supabase 클라이언트 초기화: {self.base_url}") + + def _request( + self, + method: str, + endpoint: str, + params: Dict[str, Any] = None, + data: Dict[str, Any] = None, + timeout: int = 30 + ) -> Optional[List[Dict[str, Any]]]: + """ + Supabase REST API 요청 + + Args: + method: HTTP 메서드 (GET, POST, PATCH, DELETE) + endpoint: API 엔드포인트 (테이블명) + params: 쿼리 파라미터 + data: 요청 바디 + timeout: 타임아웃 (초) + + Returns: + 응답 데이터 리스트 (실패 시 None) + """ + url = f"{self.base_url}/rest/v1/{endpoint}" + + try: + logger.debug(f"Supabase 요청: {method} {url}") + logger.debug(f" Headers: apikey=***{self.anon_key[-10:]}") + logger.debug(f" Params: {params}") + + response = requests.request( + method=method, + url=url, + headers=self.headers, + params=params, + json=data, + timeout=timeout + ) + + logger.debug(f" 응답 상태: {response.status_code}") + + if response.status_code == 200: + result = response.json() + logger.debug(f" 응답 데이터 수: {len(result) if isinstance(result, list) else 'N/A'}") + return result + else: + logger.error(f"Supabase 요청 실패: {response.status_code} - {response.text[:200]}") + return None + + except requests.exceptions.Timeout: + logger.error(f"Supabase 요청 타임아웃: {endpoint}") + return None + except requests.exceptions.ConnectionError as e: + logger.error(f"Supabase 연결 실패: {endpoint} - {e}") + return None + except Exception as e: + logger.error(f"Supabase 요청 오류: {e}") + return None + + # ======================================================================== + # 편성 정보 (Trains) + # ======================================================================== + + def get_trains(self) -> List[SupabaseTrainInfo]: + """ + Supabase에서 편성 정보 조회 + + Returns: + 편성 정보 리스트 + """ + data = self._request("GET", "Trains", params={"order": "train_set.asc"}) + + if not data: + return [] + + trains = [] + for row in data: + train = SupabaseTrainInfo( + id=row.get("id"), + train_set=row.get("train_set"), + train_id=row.get("train_id"), + car_num=row.get("car_num"), + car_type=row.get("car_type"), + manufacturer=row.get("manufacturer"), + is_new=row.get("is_new"), + date_of_Commercial_Service=row.get("date_of_Commercial_Service"), + date_of_Introduction=row.get("date_of_Introduction"), + introduction_stage=row.get("introduction_stage"), + service_nickname=row.get("service_nickname") + ) + trains.append(train) + + logger.info(f"Supabase에서 {len(trains)}개 편성 정보 조회 완료") + return trains + + # ======================================================================== + # 역 정보 (Stations) + # ======================================================================== + + def get_stations(self, line_number: int = None) -> List[SupabaseStationInfo]: + """ + Supabase에서 역 정보 조회 + + Args: + line_number: 호선 (None이면 전체) + + Returns: + 역 정보 리스트 + """ + params = {"order": "station_id.asc"} + if line_number: + params["line_number"] = f"eq.{line_number}" + + data = self._request("GET", "Stations", params=params) + + if not data: + return [] + + stations = [] + for row in data: + station = SupabaseStationInfo( + id=row.get("id"), + line_number=row.get("line_number"), + station_id=row.get("station_id"), + station_name=row.get("station_name"), + station_map=row.get("station_map"), + is_underground=row.get("is_underground"), + is_island=row.get("is_island"), + is_exchange=row.get("is_exchange"), + is_end=row.get("is_end"), + has_siding_track=row.get("has_siding_track"), + has_signal_room=row.get("has_signal_room") + ) + stations.append(station) + + logger.info(f"Supabase에서 {len(stations)}개 역 정보 조회 완료") + return stations + + # ======================================================================== + # 제조사 정보 (Manufacturer) + # ======================================================================== + + def get_manufacturers(self) -> List[ManufacturerInfo]: + """ + Supabase에서 제조사 정보 조회 + + Returns: + 제조사 정보 리스트 + """ + data = self._request("GET", "Manufacturer", params={"order": "id.asc"}) + + if not data: + return [] + + manufacturers = [] + for row in data: + mfr = ManufacturerInfo( + id=row.get("id"), + manufact=row.get("manufact") + ) + manufacturers.append(mfr) + + logger.info(f"Supabase에서 {len(manufacturers)}개 제조사 정보 조회 완료") + return manufacturers + + # ======================================================================== + # 고장 코드 정보 (Fault_Code_Table) + # ======================================================================== + + def get_fault_codes(self, car_type: str = None, manufacturer: str = None) -> List[FaultCodeInfo]: + """ + Supabase에서 고장 코드 조회 + + Args: + car_type: 차량 타입 필터 + manufacturer: 제조사 필터 + + Returns: + 고장 코드 리스트 + """ + params = {"order": "f_code_num.asc"} + if car_type: + params["car_type"] = f"eq.{car_type}" + if manufacturer: + params["manufacturer"] = f"eq.{manufacturer}" + + data = self._request("GET", "Fault_Code_Table", params=params) + + if not data: + return [] + + codes = [] + for row in data: + code = FaultCodeInfo( + id=row.get("id"), + f_code=row.get("f_code"), + f_code_num=row.get("f_code_num"), + f_name=row.get("f_name"), + car_type=row.get("car_type"), + f_class=row.get("f_class"), + fault_name=row.get("fault_name"), + grade=row.get("grade"), + device=row.get("device"), + fault_detail=row.get("fault_detail"), + fault_reaction=row.get("fault_reaction"), + fault_action=row.get("fault_action"), + alias_name=row.get("alias_name"), + manufacturer=row.get("manufacturer") + ) + codes.append(code) + + logger.info(f"Supabase에서 {len(codes)}개 고장 코드 조회 완료") + return codes + + # ======================================================================== + # 연결 테스트 + # ======================================================================== + + def test_connection(self) -> bool: + """ + Supabase 연결 테스트 + + Returns: + 연결 성공 여부 + """ + try: + # 간단한 쿼리로 연결 테스트 + data = self._request("GET", "Manufacturer", params={"limit": "1"}) + if data is not None: + logger.info("Supabase 연결 테스트 성공") + return True + return False + except Exception as e: + logger.error(f"Supabase 연결 테스트 실패: {e}") + return False + + +# ============================================================================ +# 동기화 매니저 +# ============================================================================ + +class SupabaseSyncManager: + """ + Supabase 데이터 동기화 매니저 + + Supabase에서 마스터 데이터를 가져와 로컬 SQLite DB에 저장합니다. + """ + + def __init__(self): + self.client = SupabaseClient() + self.settings = get_settings_manager() + + def sync_trains(self) -> int: + """ + 편성 정보 동기화 + + Returns: + 동기화된 레코드 수 + """ + logger.info("편성 정보 동기화 시작...") + + try: + # Supabase에서 데이터 조회 + supabase_trains = self.client.get_trains() + + if not supabase_trains: + logger.warning("Supabase에서 편성 정보를 가져오지 못했습니다.") + return 0 + + # 로컬 DB에 저장 + count = 0 + for train in supabase_trains: + # 편성번호 생성 (train_set 또는 train_id 사용) + train_number = str(train.train_set) if train.train_set else train.train_id + if not train_number: + continue + + # TrainInfo 객체 생성 + train_info = TrainInfo( + train_number=train_number, + train_type="B" if train.is_new else "A", # 신형=B, 구형=A + manufacturer=train.manufacturer or "", + manufacture_year=0, # 도입일에서 추출 가능 + depot="", # Supabase에 없음 + is_active=True + ) + + # 도입일에서 년도 추출 + if train.date_of_Introduction: + try: + year = int(train.date_of_Introduction[:4]) + train_info.manufacture_year = year + except (ValueError, TypeError): + pass + + self.settings.save_train_info(train_info) + count += 1 + + # 동기화 상태 업데이트 + self.settings.update_sync_status("train_info", "synced") + + logger.info(f"편성 정보 동기화 완료: {count}개") + return count + + except Exception as e: + logger.error(f"편성 정보 동기화 실패: {e}") + self.settings.update_sync_status("train_info", "error") + return 0 + + def sync_stations(self, line_number: int = 1) -> int: + """ + 역 정보 동기화 + + Args: + line_number: 호선 (기본값: 1호선) + + Returns: + 동기화된 레코드 수 + """ + logger.info(f"{line_number}호선 역 정보 동기화 시작...") + + try: + # Supabase에서 데이터 조회 + supabase_stations = self.client.get_stations(line_number) + + if not supabase_stations: + logger.warning("Supabase에서 역 정보를 가져오지 못했습니다.") + return 0 + + # 로컬 DB에 저장 + count = 0 + for station in supabase_stations: + if not station.station_name: + continue + + # StationInfo 객체 생성 + station_info = StationInfo( + station_code=str(int(station.station_id)) if station.station_id else "", + station_name=station.station_name, + line_number=station.line_number or line_number, + order=int(station.station_id) if station.station_id else 0, + is_active=True + ) + + self.settings.save_station_info(station_info) + count += 1 + + # 동기화 상태 업데이트 + self.settings.update_sync_status("station_info", "synced") + + logger.info(f"역 정보 동기화 완료: {count}개") + return count + + except Exception as e: + logger.error(f"역 정보 동기화 실패: {e}") + self.settings.update_sync_status("station_info", "error") + return 0 + + def sync_manufacturers(self) -> int: + """ + 제조사 정보 동기화 + + Returns: + 동기화된 레코드 수 + """ + logger.info("제조사 정보 동기화 시작...") + + try: + # Supabase에서 데이터 조회 + supabase_manufacturers = self.client.get_manufacturers() + + if not supabase_manufacturers: + logger.warning("Supabase에서 제조사 정보를 가져오지 못했습니다.") + return 0 + + # 로컬 DB에 저장 + count = 0 + for mfr in supabase_manufacturers: + if not mfr.manufact: + continue + + # ManufacturerInfo 객체 생성 + manufacturer_info = ManufacturerInfo( + id=mfr.id, + name=mfr.manufact + ) + + self.settings.save_manufacturer_info(manufacturer_info) + count += 1 + + # 동기화 상태 업데이트 + self.settings.update_sync_status("manufacturer_info", "synced") + + logger.info(f"제조사 정보 동기화 완료: {count}개") + return count + + except Exception as e: + logger.error(f"제조사 정보 동기화 실패: {e}") + self.settings.update_sync_status("manufacturer_info", "error") + return 0 + + def sync_fault_codes(self, car_type: str = None, manufacturer: str = None) -> int: + """ + 고장 코드 동기화 + + Args: + car_type: 차량 타입 필터 + manufacturer: 제조사 필터 + + Returns: + 동기화된 레코드 수 + """ + logger.info("고장 코드 동기화 시작...") + + try: + # Supabase에서 데이터 조회 + supabase_codes = self.client.get_fault_codes(car_type, manufacturer) + + if not supabase_codes: + logger.warning("Supabase에서 고장 코드를 가져오지 못했습니다.") + return 0 + + # 로컬 DB에 저장 + count = 0 + for code in supabase_codes: + if not code.f_code: + continue + + # FaultCodeInfo 객체 생성 + fault_code_info = FaultCodeInfo( + f_code=code.f_code, + f_code_num=code.f_code_num, + f_name=code.f_name, + car_type=code.car_type, + f_class=code.f_class, + fault_name=code.fault_name, + grade=code.grade, + device=code.device, + fault_detail=code.fault_detail, + fault_action=code.fault_action, + manufacturer=code.manufacturer + ) + + self.settings.save_fault_code_info(fault_code_info) + count += 1 + + # 동기화 상태 업데이트 + self.settings.update_sync_status("fault_code_info", "synced") + + logger.info(f"고장 코드 동기화 완료: {count}개") + return count + + except Exception as e: + logger.error(f"고장 코드 동기화 실패: {e}") + self.settings.update_sync_status("fault_code_info", "error") + return 0 + + def sync_all(self) -> Dict[str, int]: + """ + 모든 마스터 데이터 동기화 + + Returns: + 테이블별 동기화 결과 {테이블명: 레코드수} + """ + results = {} + + # 편성 정보 + results["trains"] = self.sync_trains() + + # 역 정보 (1호선) + results["stations"] = self.sync_stations(line_number=1) + + # 제조사 정보 + results["manufacturers"] = self.sync_manufacturers() + + # 고장 코드 (많으면 시간이 걸리므로 선택적으로 호출) + # results["fault_codes"] = self.sync_fault_codes() + + return results + + +# ============================================================================ +# 모듈 레벨 함수 +# ============================================================================ + +def get_supabase_client() -> SupabaseClient: + """Supabase 클라이언트 인스턴스 반환""" + return SupabaseClient() + + +def sync_master_data() -> Dict[str, int]: + """마스터 데이터 동기화 실행""" + sync_manager = SupabaseSyncManager() + return sync_manager.sync_all() + diff --git a/core/train_parser.py b/core/train_parser.py new file mode 100644 index 0000000..8f40ce4 --- /dev/null +++ b/core/train_parser.py @@ -0,0 +1,340 @@ +# -*- coding: utf-8 -*- +""" +열차 정보 파싱 모듈 +열번과 역명에서 발생 시간을 유추하고, +입력된 정보를 파싱하는 기능을 제공합니다. + +기능: +- 열번에서 열차 종별, 방향 추출 +- 열번과 역명으로 발생 시간 추정 +- 고장 정보 자동 파싱 +""" + +import re +from datetime import date, time, datetime +from typing import Optional, Dict, Tuple, List, Any +from dataclasses import dataclass + +from core.logger import get_logger + +logger = get_logger(__name__) + + +@dataclass +class ColumnNumberInfo: + """열번 정보""" + raw: str # 원본 열번 + train_type: str # 열차 종별 (정기, 회송, 시운전, 구간, 임시) + direction: str # 방향 (상행, 하행) + sequence: int # 순번 + is_valid: bool # 유효 여부 + + +@dataclass +class ParsedFaultInfo: + """파싱된 고장 정보""" + occurrence_date: Optional[date] = None + occurrence_time: Optional[time] = None + column_number: str = "" + train_number: str = "" + car_number: str = "" + occurrence_station: str = "" + device_category: str = "" + fault_code: str = "" + fault_content: str = "" + action_content: str = "" + fault_source: str = "" + raw_text: str = "" + + +class TrainParser: + """ + 열차 정보 파싱 클래스 + + 열번에서 열차 종별과 방향을 추출하고, + 열번과 역명으로 발생 시간을 추정합니다. + """ + + # 1호선 열차 종별 (1000자리) + TRAIN_TYPES = { + 1: ("정기", "up"), # 상행 정기 + 2: ("정기", "down"), # 하행 정기 + 3: ("회송", "up"), # 상행 회송 + 4: ("회송", "down"), # 하행 회송 + 5: ("시운전", "up"), # 상행 시운전 + 6: ("시운전", "down"), # 하행 시운전 + 7: ("구간", "up"), # 상행 구간 + 8: ("구간", "down"), # 하행 구간 + 9: ("임시", "both"), # 임시 + } + + # 방향 판단 (1자리: 홀수=상행, 짝수=하행) + @staticmethod + def get_direction_from_last_digit(digit: int) -> str: + """마지막 자리로 방향 판단""" + return "up" if digit % 2 == 1 else "down" + + def __init__(self): + """초기화""" + self._crud = None + + @property + def crud(self): + """CRUD 매니저 (지연 로딩)""" + if self._crud is None: + from database.crud import get_crud + self._crud = get_crud() + return self._crud + + def parse_column_number(self, column_number: str) -> ColumnNumberInfo: + """ + 열번 파싱 + + Args: + column_number: 열번 (예: "1001", "2034", "3511") + + Returns: + ColumnNumberInfo: 열번 정보 + + Examples: + >>> parser = TrainParser() + >>> info = parser.parse_column_number("1001") + >>> print(info.train_type, info.direction) + 정기 상행 + """ + column_number = column_number.strip() + + # 4자리 숫자 검증 + if not column_number or not column_number.isdigit(): + return ColumnNumberInfo( + raw=column_number, + train_type="", + direction="", + sequence=0, + is_valid=False + ) + + if len(column_number) != 4: + return ColumnNumberInfo( + raw=column_number, + train_type="", + direction="", + sequence=0, + is_valid=False + ) + + # 각 자리 추출 + d1000 = int(column_number[0]) # 1000자리: 열차 종별 + d100 = int(column_number[1]) # 100자리 + d10 = int(column_number[2]) # 10자리 + d1 = int(column_number[3]) # 1자리: 방향 판단 + + # 열차 종별 + train_type_info = self.TRAIN_TYPES.get(d1000, ("알수없음", "unknown")) + train_type = train_type_info[0] + + # 방향 (1자리 기준) + direction = self.get_direction_from_last_digit(d1) + direction_text = "상행" if direction == "up" else "하행" + + # 순번 (100자리 + 10자리) + sequence = d100 * 10 + d10 + + return ColumnNumberInfo( + raw=column_number, + train_type=train_type, + direction=direction_text, + sequence=sequence, + is_valid=True + ) + + def estimate_time( + self, + column_number: str, + station: str, + occurrence_date: Optional[date] = None + ) -> Optional[time]: + """ + 열번과 역명으로 발생 시간 추정 + + Args: + column_number: 열번 + station: 역명 + occurrence_date: 발생일 (평일/주말 판단용) + + Returns: + 추정 시간 또는 None + """ + if not column_number or not station: + return None + + try: + return self.crud.estimate_time_by_column_station( + column_number, station, occurrence_date + ) + except Exception as e: + logger.warning(f"시간 추정 실패: {column_number}, {station} - {e}") + return None + + def parse_train_number(self, train_number: str) -> Tuple[int, str]: + """ + 편성번호 파싱 + + Args: + train_number: 편성번호 (예: "132B", "101A") + + Returns: + (숫자 부분, 접미사) 튜플 + + Examples: + >>> parser = TrainParser() + >>> num, suffix = parser.parse_train_number("132B") + >>> print(num, suffix) + 132 B + """ + train_number = train_number.strip().upper() + + if not train_number: + return 0, "" + + # 숫자와 접미사 분리 + match = re.match(r'^(\d+)([AB])?$', train_number) + if match: + num = int(match.group(1)) + suffix = match.group(2) or "" + return num, suffix + + return 0, "" + + def format_train_number(self, num: int, suffix: str = "") -> str: + """ + 편성번호 포맷팅 + + Args: + num: 숫자 부분 (예: 132) + suffix: 접미사 (예: "A", "B") + + Returns: + 포맷된 편성번호 (예: "132B") + """ + if num <= 0: + return "" + + if suffix: + return f"{num}{suffix}" + return str(num) + + def get_train_display(self, train_number: str) -> str: + """ + 편성번호 표시용 텍스트 반환 + + 테이블에서 중간 2자리만 표시할 때 사용 + + Args: + train_number: 편성번호 (예: "132B") + + Returns: + 표시용 텍스트 (예: "32") + """ + if not train_number: + return "" + + # 숫자 부분에서 마지막 2자리 추출 + match = re.match(r'^\d*(\d{2})[AB]?$', train_number.strip()) + if match: + return match.group(1) + + return train_number + + def parse_fault_text(self, text: str) -> ParsedFaultInfo: + """ + 고장 텍스트 자동 파싱 + + 복사/붙여넣기 된 고장 정보를 파싱하여 각 필드로 분리합니다. + + Args: + text: 고장 정보 텍스트 + + Returns: + ParsedFaultInfo: 파싱된 고장 정보 + """ + result = ParsedFaultInfo(raw_text=text) + + if not text: + return result + + lines = text.strip().split('\n') + + # 날짜 패턴 찾기 + date_pattern = r'(\d{4}[-./]\d{2}[-./]\d{2}|\d{2}[-./]\d{2}[-./]\d{2})' + time_pattern = r'(\d{2}:\d{2}(?::\d{2})?)' + + for line in lines: + # 날짜 추출 + date_match = re.search(date_pattern, line) + if date_match and not result.occurrence_date: + date_str = date_match.group(1).replace('/', '-').replace('.', '-') + try: + if len(date_str) == 8: # YY-MM-DD + result.occurrence_date = datetime.strptime(date_str, "%y-%m-%d").date() + else: # YYYY-MM-DD + result.occurrence_date = datetime.strptime(date_str, "%Y-%m-%d").date() + except ValueError: + pass + + # 시간 추출 + time_match = re.search(time_pattern, line) + if time_match and not result.occurrence_time: + time_str = time_match.group(1) + try: + if len(time_str) == 5: # HH:MM + result.occurrence_time = datetime.strptime(time_str, "%H:%M").time() + else: # HH:MM:SS + result.occurrence_time = datetime.strptime(time_str, "%H:%M:%S").time() + except ValueError: + pass + + # 편성번호 추출 (예: 132B, 101A) + train_match = re.search(r'\b(1\d{2}[AB])\b', line) + if train_match and not result.train_number: + result.train_number = train_match.group(1) + + # 열번 추출 (4자리 숫자) + column_match = re.search(r'\b([1-9]\d{3})\b', line) + if column_match and not result.column_number: + result.column_number = column_match.group(1) + + # 호차 추출 (1~8) + car_match = re.search(r'\b([1-8])호차?\b', line) + if car_match and not result.car_number: + result.car_number = car_match.group(1) + + # 역명 추출 (xx역) + station_match = re.search(r'([가-힣]+역)', line) + if station_match and not result.occurrence_station: + result.occurrence_station = station_match.group(1) + + # 나머지 텍스트는 고장내용으로 + if not result.fault_content and lines: + result.fault_content = '\n'.join(lines) + + return result + + +# 싱글톤 인스턴스 +_parser_instance: Optional[TrainParser] = None + + +def get_train_parser() -> TrainParser: + """ + TrainParser 싱글톤 인스턴스 반환 + + Returns: + TrainParser 인스턴스 + """ + global _parser_instance + if _parser_instance is None: + _parser_instance = TrainParser() + return _parser_instance + + diff --git a/data/common_data.db b/data/common_data.db new file mode 100644 index 0000000..fd23fe1 Binary files /dev/null and b/data/common_data.db differ diff --git a/data/db_to_json.py b/data/db_to_json.py new file mode 100644 index 0000000..1a70d4f --- /dev/null +++ b/data/db_to_json.py @@ -0,0 +1,111 @@ +import pandas as pd +import json + +def load_and_convert_excel(file_path, sheet_name, day_type): + """ + 엑셀 시트를 읽고 Long 형식으로 변환합니다. + + Args: + file_path: 엑셀 파일 경로 + sheet_name: 시트 이름 (weekday, saturday, sunday) + day_type: 요일 구분 (평일, 토요일, 일요일/공휴일) + + Returns: + 변환된 DataFrame + """ + # 엑셀 시트 읽기 + df = pd.read_excel(file_path, sheet_name=sheet_name) + + # 불필요한 컬럼 제거 (Unnamed: 0, 기지, 열번.1) + # 기지 컬럼은 역이 아니므로 제외 + drop_cols = ['Unnamed: 0', '기지', '열번.1'] + df = df.drop(columns=[col for col in drop_cols if col in df.columns], errors='ignore') + + # 고정할 컬럼 (메타 정보) + id_vars = ['상하', '입출고', 'DIA', '열번'] + + # 역명 컬럼 (id_vars 이후 모든 컬럼) + station_columns = [col for col in df.columns if col not in id_vars] + + # Wide to Long 변환 (Melt) + df_long = pd.melt( + df, + id_vars=id_vars, + value_vars=station_columns, + var_name='역명', + value_name='시간' + ) + + # 시간 데이터가 없는 행(정차하지 않거나 데이터 없음) 제거 + df_long = df_long.dropna(subset=['시간']) + df_long = df_long[df_long['시간'].astype(str).str.strip() != ''] + + # 요일 구분 추가 + df_long['요일구분'] = day_type + + # 입출고가 NaN인 경우 빈 문자열로 변환 + df_long['입출고'] = df_long['입출고'].fillna('') + + # 데이터 타입 정리 + df_long['DIA'] = df_long['DIA'].astype(int) + df_long['열번'] = df_long['열번'].astype(int) + + return df_long + + +def convert_dia_to_json(excel_path, output_path=None): + """ + dia.xlsx 파일의 모든 시트를 읽어 JSON으로 변환합니다. + + Args: + excel_path: dia.xlsx 파일 경로 + output_path: 저장할 JSON 파일 경로 (None이면 저장하지 않음) + + Returns: + 변환된 전체 데이터 (list of dict) + """ + # 시트별 요일구분 매핑 + sheet_mapping = { + 'weekday': '평일', + 'saturday': '토요일', + 'sunday': '일요일/공휴일' + } + + all_data = [] + + for sheet_name, day_type in sheet_mapping.items(): + print(f"처리 중: {sheet_name} ({day_type})") + df_long = load_and_convert_excel(excel_path, sheet_name, day_type) + all_data.append(df_long) + print(f" - {len(df_long)}개 레코드 변환 완료") + + # 모든 데이터 합치기 + df_combined = pd.concat(all_data, ignore_index=True) + + # 컬럼 순서 정리 + column_order = ['상하', '입출고', 'DIA', '열번', '역명', '시간', '요일구분'] + df_combined = df_combined[column_order] + + # JSON 변환 + json_data = df_combined.to_dict(orient='records') + + # 파일 저장 + if output_path: + with open(output_path, 'w', encoding='utf-8') as f: + json.dump(json_data, f, ensure_ascii=False, indent=4) + print(f"\nJSON 파일 저장 완료: {output_path}") + print(f"총 {len(json_data)}개 레코드") + + return json_data + + +if __name__ == "__main__": + # 실행 + excel_file = "dia.xlsx" + output_file = "dia_data.json" + + result = convert_dia_to_json(excel_file, output_file) + + # 결과 샘플 출력 + print("\n=== 변환 결과 샘플 (처음 5개) ===") + print(json.dumps(result[:5], ensure_ascii=False, indent=4)) diff --git a/data/dia.xlsx b/data/dia.xlsx new file mode 100644 index 0000000..d58f71e Binary files /dev/null and b/data/dia.xlsx differ diff --git a/data/dia_data.json b/data/dia_data.json new file mode 100644 index 0000000..c13f3a9 --- /dev/null +++ b/data/dia_data.json @@ -0,0 +1,368363 @@ +[ + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "노포", + "시간": "06:22:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "노포", + "시간": "06:32:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2050, + "역명": "노포", + "시간": "09:17:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "노포", + "시간": "06:08:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "노포", + "시간": "06:23:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "노포", + "시간": "09:08:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1085, + "역명": "노포", + "시간": "09:17:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2108, + "역명": "노포", + "시간": "12:02:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1139, + "역명": "노포", + "시간": "12:12:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2162, + "역명": "노포", + "시간": "14:58:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1193, + "역명": "노포", + "시간": "15:08:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2216, + "역명": "노포", + "시간": "17:55:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1261, + "역명": "노포", + "시간": "18:02:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2282, + "역명": "노포", + "시간": "20:46:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1323, + "역명": "노포", + "시간": "20:57:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "노포", + "시간": "06:36:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "노포", + "시간": "06:50:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2058, + "역명": "노포", + "시간": "09:36:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1095, + "역명": "노포", + "시간": "09:49:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2118, + "역명": "노포", + "시간": "12:35:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1149, + "역명": "노포", + "시간": "12:45:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2172, + "역명": "노포", + "시간": "15:30:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1203, + "역명": "노포", + "시간": "15:40:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2226, + "역명": "노포", + "시간": "18:25:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1277, + "역명": "노포", + "시간": "18:34:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2294, + "역명": "노포", + "시간": "21:22:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "노포", + "시간": "06:48:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1025, + "역명": "노포", + "시간": "07:02:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2062, + "역명": "노포", + "시간": "09:46:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1097, + "역명": "노포", + "시간": "09:56:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2120, + "역명": "노포", + "시간": "12:41:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1151, + "역명": "노포", + "시간": "12:51:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2174, + "역명": "노포", + "시간": "15:37:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1205, + "역명": "노포", + "시간": "15:46:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2228, + "역명": "노포", + "시간": "18:33:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1281, + "역명": "노포", + "시간": "18:42:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2296, + "역명": "노포", + "시간": "21:28:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1333, + "역명": "노포", + "시간": "21:40:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2338, + "역명": "노포", + "시간": "00:31:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2008, + "역명": "노포", + "시간": "07:00:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1029, + "역명": "노포", + "시간": "07:12:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2066, + "역명": "노포", + "시간": "09:56:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2010, + "역명": "노포", + "시간": "07:12:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1033, + "역명": "노포", + "시간": "07:22:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2070, + "역명": "노포", + "시간": "10:06:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1103, + "역명": "노포", + "시간": "10:15:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2126, + "역명": "노포", + "시간": "13:01:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1157, + "역명": "노포", + "시간": "13:11:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2180, + "역명": "노포", + "시간": "15:56:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1213, + "역명": "노포", + "시간": "16:10:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2236, + "역명": "노포", + "시간": "18:57:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1293, + "역명": "노포", + "시간": "19:07:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2304, + "역명": "노포", + "시간": "21:52:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1337, + "역명": "노포", + "시간": "22:00:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1003, + "역명": "노포", + "시간": "05:18:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2020, + "역명": "노포", + "시간": "08:05:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1059, + "역명": "노포", + "시간": "08:14:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2088, + "역명": "노포", + "시간": "11:00:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1121, + "역명": "노포", + "시간": "11:14:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2144, + "역명": "노포", + "시간": "13:59:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1175, + "역명": "노포", + "시간": "14:09:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2198, + "역명": "노포", + "시간": "16:55:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1235, + "역명": "노포", + "시간": "17:06:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2260, + "역명": "노포", + "시간": "19:50:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1309, + "역명": "노포", + "시간": "20:01:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2320, + "역명": "노포", + "시간": "22:47:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1347, + "역명": "노포", + "시간": "22:54:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2012, + "역명": "노포", + "시간": "07:24:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1039, + "역명": "노포", + "시간": "07:34:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2074, + "역명": "노포", + "시간": "10:18:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1107, + "역명": "노포", + "시간": "10:28:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2130, + "역명": "노포", + "시간": "13:14:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1161, + "역명": "노포", + "시간": "13:24:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2184, + "역명": "노포", + "시간": "16:09:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1217, + "역명": "노포", + "시간": "16:21:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2240, + "역명": "노포", + "시간": "19:05:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1297, + "역명": "노포", + "시간": "19:17:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 8, + "열번": 2308, + "역명": "노포", + "시간": "22:04:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 9, + "열번": 2022, + "역명": "노포", + "시간": "08:11:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1063, + "역명": "노포", + "시간": "08:22:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 9, + "열번": 2090, + "역명": "노포", + "시간": "11:06:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2014, + "역명": "노포", + "시간": "07:36:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1045, + "역명": "노포", + "시간": "07:46:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 11, + "열번": 1005, + "역명": "노포", + "시간": "05:29:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2024, + "역명": "노포", + "시간": "08:17:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1065, + "역명": "노포", + "시간": "08:26:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2092, + "역명": "노포", + "시간": "11:12:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1123, + "역명": "노포", + "시간": "11:20:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2146, + "역명": "노포", + "시간": "14:06:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1177, + "역명": "노포", + "시간": "14:16:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2200, + "역명": "노포", + "시간": "17:01:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1237, + "역명": "노포", + "시간": "17:11:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 11, + "열번": 2262, + "역명": "노포", + "시간": "19:55:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2016, + "역명": "노포", + "시간": "07:47:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1051, + "역명": "노포", + "시간": "07:58:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2082, + "역명": "노포", + "시간": "10:42:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1115, + "역명": "노포", + "시간": "10:54:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2138, + "역명": "노포", + "시간": "13:40:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1169, + "역명": "노포", + "시간": "13:50:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "노포", + "시간": "16:35:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1227, + "역명": "노포", + "시간": "16:46:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2252, + "역명": "노포", + "시간": "19:30:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1303, + "역명": "노포", + "시간": "19:37:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2314, + "역명": "노포", + "시간": "22:22:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1343, + "역명": "노포", + "시간": "22:31:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1007, + "역명": "노포", + "시간": "05:40:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2028, + "역명": "노포", + "시간": "08:27:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1071, + "역명": "노포", + "시간": "08:38:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2096, + "역명": "노포", + "시간": "11:24:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1127, + "역명": "노포", + "시간": "11:33:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2150, + "역명": "노포", + "시간": "14:19:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1181, + "역명": "노포", + "시간": "14:29:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2204, + "역명": "노포", + "시간": "17:13:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1241, + "역명": "노포", + "시간": "17:21:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2266, + "역명": "노포", + "시간": "20:05:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1313, + "역명": "노포", + "시간": "20:17:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2324, + "역명": "노포", + "시간": "23:07:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 13, + "열번": 1351, + "역명": "노포", + "시간": "23:16:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 14, + "열번": 1001, + "역명": "노포", + "시간": "05:08:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2018, + "역명": "노포", + "시간": "07:56:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1055, + "역명": "노포", + "시간": "08:06:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1009, + "역명": "노포", + "시간": "05:51:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2032, + "역명": "노포", + "시간": "08:37:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1075, + "역명": "노포", + "시간": "08:47:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2100, + "역명": "노포", + "시간": "11:36:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1131, + "역명": "노포", + "시간": "11:46:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2154, + "역명": "노포", + "시간": "14:32:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1185, + "역명": "노포", + "시간": "14:42:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2208, + "역명": "노포", + "시간": "17:30:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1249, + "역명": "노포", + "시간": "17:38:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2274, + "역명": "노포", + "시간": "20:25:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2026, + "역명": "노포", + "시간": "08:22:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1067, + "역명": "노포", + "시간": "08:30:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2036, + "역명": "노포", + "시간": "08:46:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2030, + "역명": "노포", + "시간": "08:32:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1073, + "역명": "노포", + "시간": "08:42:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2098, + "역명": "노포", + "시간": "11:30:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1129, + "역명": "노포", + "시간": "11:40:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2152, + "역명": "노포", + "시간": "14:25:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1183, + "역명": "노포", + "시간": "14:35:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2206, + "역명": "노포", + "시간": "17:25:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1247, + "역명": "노포", + "시간": "17:34:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2272, + "역명": "노포", + "시간": "20:20:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1317, + "역명": "노포", + "시간": "20:33:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2326, + "역명": "노포", + "시간": "23:17:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 18, + "열번": 7931, + "역명": "노포", + "시간": "23:31:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 19, + "열번": 1011, + "역명": "노포", + "시간": "06:02:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2038, + "역명": "노포", + "시간": "08:50:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1079, + "역명": "노포", + "시간": "08:58:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2102, + "역명": "노포", + "시간": "11:43:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1133, + "역명": "노포", + "시간": "11:53:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2156, + "역명": "노포", + "시간": "14:38:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1187, + "역명": "노포", + "시간": "14:48:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2210, + "역명": "노포", + "시간": "17:35:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1253, + "역명": "노포", + "시간": "17:46:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2278, + "역명": "노포", + "시간": "20:35:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2034, + "역명": "노포", + "시간": "08:41:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 20, + "열번": 1077, + "역명": "노포", + "시간": "08:52:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 21, + "열번": 1013, + "역명": "노포", + "시간": "06:13:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2042, + "역명": "노포", + "시간": "08:59:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1083, + "역명": "노포", + "시간": "09:10:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2106, + "역명": "노포", + "시간": "11:56:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1137, + "역명": "노포", + "시간": "12:06:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2160, + "역명": "노포", + "시간": "14:51:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1191, + "역명": "노포", + "시간": "15:01:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2214, + "역명": "노포", + "시간": "17:45:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1257, + "역명": "노포", + "시간": "17:54:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2280, + "역명": "노포", + "시간": "20:40:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1321, + "역명": "노포", + "시간": "20:49:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2330, + "역명": "노포", + "시간": "23:39:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2040, + "역명": "노포", + "시간": "08:55:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1081, + "역명": "노포", + "시간": "09:04:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2104, + "역명": "노포", + "시간": "11:49:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1135, + "역명": "노포", + "시간": "11:59:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2158, + "역명": "노포", + "시간": "14:45:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1189, + "역명": "노포", + "시간": "14:55:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2212, + "역명": "노포", + "시간": "17:40:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1255, + "역명": "노포", + "시간": "17:50:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2044, + "역명": "노포", + "시간": "09:04:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "노포", + "시간": "09:13:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1087, + "역명": "노포", + "시간": "09:23:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2110, + "역명": "노포", + "시간": "12:09:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1141, + "역명": "노포", + "시간": "12:19:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2164, + "역명": "노포", + "시간": "15:04:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1195, + "역명": "노포", + "시간": "15:14:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2218, + "역명": "노포", + "시간": "18:00:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1265, + "역명": "노포", + "시간": "18:10:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 24, + "열번": 2286, + "역명": "노포", + "시간": "20:58:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "노포", + "시간": "06:41:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2054, + "역명": "노포", + "시간": "09:26:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1091, + "역명": "노포", + "시간": "09:36:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2114, + "역명": "노포", + "시간": "12:22:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1145, + "역명": "노포", + "시간": "12:32:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2168, + "역명": "노포", + "시간": "15:17:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1199, + "역명": "노포", + "시간": "15:27:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2222, + "역명": "노포", + "시간": "18:13:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1271, + "역명": "노포", + "시간": "18:22:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2290, + "역명": "노포", + "시간": "21:10:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1329, + "역명": "노포", + "시간": "21:21:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2336, + "역명": "노포", + "시간": "00:14:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2052, + "역명": "노포", + "시간": "09:22:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1089, + "역명": "노포", + "시간": "09:30:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2112, + "역명": "노포", + "시간": "12:15:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1143, + "역명": "노포", + "시간": "12:25:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2166, + "역명": "노포", + "시간": "15:11:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1197, + "역명": "노포", + "시간": "15:21:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2220, + "역명": "노포", + "시간": "18:09:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1269, + "역명": "노포", + "시간": "18:18:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2288, + "역명": "노포", + "시간": "21:04:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1327, + "역명": "노포", + "시간": "21:13:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 26, + "열번": 2334, + "역명": "노포", + "시간": "00:03:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1023, + "역명": "노포", + "시간": "06:57:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 27, + "열번": 2060, + "역명": "노포", + "시간": "09:41:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2056, + "역명": "노포", + "시간": "09:31:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1093, + "역명": "노포", + "시간": "09:43:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2116, + "역명": "노포", + "시간": "12:28:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1147, + "역명": "노포", + "시간": "12:38:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2170, + "역명": "노포", + "시간": "15:24:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1201, + "역명": "노포", + "시간": "15:34:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2224, + "역명": "노포", + "시간": "18:21:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1275, + "역명": "노포", + "시간": "18:30:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2292, + "역명": "노포", + "시간": "21:16:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1331, + "역명": "노포", + "시간": "21:30:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1027, + "역명": "노포", + "시간": "07:07:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2064, + "역명": "노포", + "시간": "09:51:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1099, + "역명": "노포", + "시간": "10:02:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2122, + "역명": "노포", + "시간": "12:48:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1153, + "역명": "노포", + "시간": "12:58:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2176, + "역명": "노포", + "시간": "15:43:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1207, + "역명": "노포", + "시간": "15:52:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2230, + "역명": "노포", + "시간": "18:37:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1283, + "역명": "노포", + "시간": "18:46:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 29, + "열번": 2298, + "역명": "노포", + "시간": "21:34:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1037, + "역명": "노포", + "시간": "07:30:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1031, + "역명": "노포", + "시간": "07:17:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2068, + "역명": "노포", + "시간": "10:01:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1101, + "역명": "노포", + "시간": "10:09:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2124, + "역명": "노포", + "시간": "12:54:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1155, + "역명": "노포", + "시간": "13:04:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2178, + "역명": "노포", + "시간": "15:50:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1209, + "역명": "노포", + "시간": "15:58:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2232, + "역명": "노포", + "시간": "18:45:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1287, + "역명": "노포", + "시간": "18:54:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2300, + "역명": "노포", + "시간": "21:40:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1335, + "역명": "노포", + "시간": "21:50:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 32, + "열번": 1049, + "역명": "노포", + "시간": "07:54:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1035, + "역명": "노포", + "시간": "07:26:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2072, + "역명": "노포", + "시간": "10:12:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1105, + "역명": "노포", + "시간": "10:22:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2128, + "역명": "노포", + "시간": "13:07:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1159, + "역명": "노포", + "시간": "13:17:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2182, + "역명": "노포", + "시간": "16:03:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1215, + "역명": "노포", + "시간": "16:16:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2238, + "역명": "노포", + "시간": "19:01:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1295, + "역명": "노포", + "시간": "19:12:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2306, + "역명": "노포", + "시간": "21:58:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 33, + "열번": 1339, + "역명": "노포", + "시간": "22:10:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 34, + "열번": 1061, + "역명": "노포", + "시간": "08:18:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1041, + "역명": "노포", + "시간": "07:38:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2076, + "역명": "노포", + "시간": "10:24:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1109, + "역명": "노포", + "시간": "10:35:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2132, + "역명": "노포", + "시간": "13:20:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1163, + "역명": "노포", + "시간": "13:30:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2186, + "역명": "노포", + "시간": "16:16:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1219, + "역명": "노포", + "시간": "16:26:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 35, + "열번": 2242, + "역명": "노포", + "시간": "19:09:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 36, + "열번": 8904, + "역명": "노포", + "시간": "17:19:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1245, + "역명": "노포", + "시간": "17:30:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 36, + "열번": 2270, + "역명": "노포", + "시간": "20:15:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1315, + "역명": "노포", + "시간": "20:25:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1043, + "역명": "노포", + "시간": "07:42:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2078, + "역명": "노포", + "시간": "10:30:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1111, + "역명": "노포", + "시간": "10:41:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2134, + "역명": "노포", + "시간": "13:27:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1165, + "역명": "노포", + "시간": "13:37:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2188, + "역명": "노포", + "시간": "16:22:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1221, + "역명": "노포", + "시간": "16:31:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 37, + "열번": 2246, + "역명": "노포", + "시간": "19:17:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 38, + "열번": 8906, + "역명": "노포", + "시간": "17:50:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 38, + "열번": 1259, + "역명": "노포", + "시간": "17:58:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 39, + "열번": 1047, + "역명": "노포", + "시간": "07:50:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2080, + "역명": "노포", + "시간": "10:36:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1113, + "역명": "노포", + "시간": "10:48:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2136, + "역명": "노포", + "시간": "13:33:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1167, + "역명": "노포", + "시간": "13:43:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2190, + "역명": "노포", + "시간": "16:29:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1225, + "역명": "노포", + "시간": "16:41:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 39, + "열번": 2250, + "역명": "노포", + "시간": "19:25:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 40, + "열번": 8908, + "역명": "노포", + "시간": "18:05:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 40, + "열번": 1267, + "역명": "노포", + "시간": "18:14:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 41, + "열번": 1053, + "역명": "노포", + "시간": "08:02:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2084, + "역명": "노포", + "시간": "10:48:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1117, + "역명": "노포", + "시간": "11:01:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2140, + "역명": "노포", + "시간": "13:46:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1171, + "역명": "노포", + "시간": "13:56:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2194, + "역명": "노포", + "시간": "16:42:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1229, + "역명": "노포", + "시간": "16:51:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2254, + "역명": "노포", + "시간": "19:35:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1305, + "역명": "노포", + "시간": "19:45:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2316, + "역명": "노포", + "시간": "22:29:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1345, + "역명": "노포", + "시간": "22:42:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 42, + "열번": 8910, + "역명": "노포", + "시간": "18:17:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 42, + "열번": 1273, + "역명": "노포", + "시간": "18:26:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 43, + "열번": 1057, + "역명": "노포", + "시간": "08:10:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2086, + "역명": "노포", + "시간": "10:54:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1119, + "역명": "노포", + "시간": "11:07:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2142, + "역명": "노포", + "시간": "13:53:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1173, + "역명": "노포", + "시간": "14:03:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2196, + "역명": "노포", + "시간": "16:48:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1233, + "역명": "노포", + "시간": "17:01:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2258, + "역명": "노포", + "시간": "19:45:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1307, + "역명": "노포", + "시간": "19:53:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 43, + "열번": 2318, + "역명": "노포", + "시간": "22:37:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 44, + "열번": 8912, + "역명": "노포", + "시간": "18:29:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 44, + "열번": 1279, + "역명": "노포", + "시간": "18:38:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 45, + "열번": 1069, + "역명": "노포", + "시간": "08:34:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2094, + "역명": "노포", + "시간": "11:18:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1125, + "역명": "노포", + "시간": "11:27:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2148, + "역명": "노포", + "시간": "14:12:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1179, + "역명": "노포", + "시간": "14:22:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2202, + "역명": "노포", + "시간": "17:07:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1239, + "역명": "노포", + "시간": "17:16:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2264, + "역명": "노포", + "시간": "20:00:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1311, + "역명": "노포", + "시간": "20:09:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2322, + "역명": "노포", + "시간": "22:57:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 45, + "열번": 1349, + "역명": "노포", + "시간": "23:06:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 46, + "열번": 8914, + "역명": "노포", + "시간": "18:41:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 46, + "열번": 1285, + "역명": "노포", + "시간": "18:50:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 47, + "열번": 1211, + "역명": "노포", + "시간": "16:04:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 47, + "열번": 2234, + "역명": "노포", + "시간": "18:49:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 47, + "열번": 1289, + "역명": "노포", + "시간": "18:58:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 47, + "열번": 2302, + "역명": "노포", + "시간": "21:46:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 48, + "열번": 8916, + "역명": "노포", + "시간": "18:53:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 48, + "열번": 1291, + "역명": "노포", + "시간": "19:02:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 49, + "열번": 1223, + "역명": "노포", + "시간": "16:36:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 49, + "열번": 2248, + "역명": "노포", + "시간": "19:21:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 49, + "열번": 1301, + "역명": "노포", + "시간": "19:29:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 49, + "열번": 2312, + "역명": "노포", + "시간": "22:16:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 50, + "열번": 2244, + "역명": "노포", + "시간": "19:13:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 50, + "열번": 1299, + "역명": "노포", + "시간": "19:22:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 50, + "열번": 2310, + "역명": "노포", + "시간": "22:10:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 50, + "열번": 1341, + "역명": "노포", + "시간": "22:20:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 51, + "열번": 1231, + "역명": "노포", + "시간": "16:56:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 51, + "열번": 2256, + "역명": "노포", + "시간": "19:40:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 52, + "열번": 6906, + "역명": "노포", + "시간": "10:39:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 52, + "열번": 5905, + "역명": "노포", + "시간": "10:51:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 53, + "열번": 1243, + "역명": "노포", + "시간": "17:26:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 53, + "열번": 2268, + "역명": "노포", + "시간": "20:10:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 54, + "열번": 6910, + "역명": "노포", + "시간": "14:22:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 54, + "열번": 5907, + "역명": "노포", + "시간": "14:32:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 55, + "열번": 1251, + "역명": "노포", + "시간": "17:42:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 55, + "열번": 2276, + "역명": "노포", + "시간": "20:30:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 55, + "열번": 1319, + "역명": "노포", + "시간": "20:41:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 55, + "열번": 2328, + "역명": "노포", + "시간": "23:27:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 57, + "열번": 1263, + "역명": "노포", + "시간": "18:06:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 57, + "열번": 2284, + "역명": "노포", + "시간": "20:52:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 57, + "열번": 1325, + "역명": "노포", + "시간": "21:05:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 57, + "열번": 2332, + "역명": "노포", + "시간": "23:51:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 59, + "열번": 5901, + "역명": "노포", + "시간": "09:59:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 59, + "열번": 6902, + "역명": "노포", + "시간": "12:44:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 61, + "열번": 5903, + "역명": "노포", + "시간": "13:27:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 61, + "열번": 5904, + "역명": "노포", + "시간": "16:12:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 63, + "열번": 3903, + "역명": "노포", + "시간": "13:40:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "범어사", + "시간": "06:19:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "범어사", + "시간": "06:34:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2050, + "역명": "범어사", + "시간": "09:14:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "범어사", + "시간": "06:06:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "범어사", + "시간": "06:25:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "범어사", + "시간": "09:05:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1085, + "역명": "범어사", + "시간": "09:18:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2108, + "역명": "범어사", + "시간": "11:59:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1139, + "역명": "범어사", + "시간": "12:14:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2162, + "역명": "범어사", + "시간": "14:55:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1193, + "역명": "범어사", + "시간": "15:09:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2216, + "역명": "범어사", + "시간": "17:52:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1261, + "역명": "범어사", + "시간": "18:03:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2282, + "역명": "범어사", + "시간": "20:43:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1323, + "역명": "범어사", + "시간": "20:58:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "범어사", + "시간": "06:33:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "범어사", + "시간": "06:52:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2058, + "역명": "범어사", + "시간": "09:33:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1095, + "역명": "범어사", + "시간": "09:51:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2118, + "역명": "범어사", + "시간": "12:32:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1149, + "역명": "범어사", + "시간": "12:46:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2172, + "역명": "범어사", + "시간": "15:27:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1203, + "역명": "범어사", + "시간": "15:41:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2226, + "역명": "범어사", + "시간": "18:22:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1277, + "역명": "범어사", + "시간": "18:35:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2294, + "역명": "범어사", + "시간": "21:19:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "범어사", + "시간": "06:45:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1025, + "역명": "범어사", + "시간": "07:03:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2062, + "역명": "범어사", + "시간": "09:43:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1097, + "역명": "범어사", + "시간": "09:57:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2120, + "역명": "범어사", + "시간": "12:38:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1151, + "역명": "범어사", + "시간": "12:53:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2174, + "역명": "범어사", + "시간": "15:34:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1205, + "역명": "범어사", + "시간": "15:47:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2228, + "역명": "범어사", + "시간": "18:30:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1281, + "역명": "범어사", + "시간": "18:43:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2296, + "역명": "범어사", + "시간": "21:25:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1333, + "역명": "범어사", + "시간": "21:41:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2338, + "역명": "범어사", + "시간": "00:28:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2008, + "역명": "범어사", + "시간": "06:57:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1029, + "역명": "범어사", + "시간": "07:13:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2066, + "역명": "범어사", + "시간": "09:53:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2010, + "역명": "범어사", + "시간": "07:09:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1033, + "역명": "범어사", + "시간": "07:23:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2070, + "역명": "범어사", + "시간": "10:03:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1103, + "역명": "범어사", + "시간": "10:17:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2126, + "역명": "범어사", + "시간": "12:58:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1157, + "역명": "범어사", + "시간": "13:12:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2180, + "역명": "범어사", + "시간": "15:53:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1213, + "역명": "범어사", + "시간": "16:11:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2236, + "역명": "범어사", + "시간": "18:54:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1293, + "역명": "범어사", + "시간": "19:08:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2304, + "역명": "범어사", + "시간": "21:49:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1337, + "역명": "범어사", + "시간": "22:01:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1003, + "역명": "범어사", + "시간": "05:20:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2020, + "역명": "범어사", + "시간": "08:02:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1059, + "역명": "범어사", + "시간": "08:15:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2088, + "역명": "범어사", + "시간": "10:57:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1121, + "역명": "범어사", + "시간": "11:15:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2144, + "역명": "범어사", + "시간": "13:56:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1175, + "역명": "범어사", + "시간": "14:11:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2198, + "역명": "범어사", + "시간": "16:52:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1235, + "역명": "범어사", + "시간": "17:07:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2260, + "역명": "범어사", + "시간": "19:47:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1309, + "역명": "범어사", + "시간": "20:02:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2320, + "역명": "범어사", + "시간": "22:44:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1347, + "역명": "범어사", + "시간": "22:55:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2012, + "역명": "범어사", + "시간": "07:21:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1039, + "역명": "범어사", + "시간": "07:35:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2074, + "역명": "범어사", + "시간": "10:15:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1107, + "역명": "범어사", + "시간": "10:30:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2130, + "역명": "범어사", + "시간": "13:11:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1161, + "역명": "범어사", + "시간": "13:25:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2184, + "역명": "범어사", + "시간": "16:06:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1217, + "역명": "범어사", + "시간": "16:22:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2240, + "역명": "범어사", + "시간": "19:02:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1297, + "역명": "범어사", + "시간": "19:18:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 8, + "열번": 2308, + "역명": "범어사", + "시간": "22:01:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 9, + "열번": 2022, + "역명": "범어사", + "시간": "08:08:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1063, + "역명": "범어사", + "시간": "08:23:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 9, + "열번": 2090, + "역명": "범어사", + "시간": "11:03:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2014, + "역명": "범어사", + "시간": "07:33:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1045, + "역명": "범어사", + "시간": "07:47:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 11, + "열번": 1005, + "역명": "범어사", + "시간": "05:31:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2024, + "역명": "범어사", + "시간": "08:14:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1065, + "역명": "범어사", + "시간": "08:27:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2092, + "역명": "범어사", + "시간": "11:09:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1123, + "역명": "범어사", + "시간": "11:22:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2146, + "역명": "범어사", + "시간": "14:03:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1177, + "역명": "범어사", + "시간": "14:17:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2200, + "역명": "범어사", + "시간": "16:58:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1237, + "역명": "범어사", + "시간": "17:12:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 11, + "열번": 2262, + "역명": "범어사", + "시간": "19:52:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2016, + "역명": "범어사", + "시간": "07:44:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1051, + "역명": "범어사", + "시간": "07:59:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2082, + "역명": "범어사", + "시간": "10:39:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1115, + "역명": "범어사", + "시간": "10:56:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2138, + "역명": "범어사", + "시간": "13:37:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1169, + "역명": "범어사", + "시간": "13:51:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "범어사", + "시간": "16:32:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1227, + "역명": "범어사", + "시간": "16:47:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2252, + "역명": "범어사", + "시간": "19:27:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1303, + "역명": "범어사", + "시간": "19:38:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2314, + "역명": "범어사", + "시간": "22:19:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1343, + "역명": "범어사", + "시간": "22:32:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1007, + "역명": "범어사", + "시간": "05:42:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2028, + "역명": "범어사", + "시간": "08:24:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1071, + "역명": "범어사", + "시간": "08:39:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2096, + "역명": "범어사", + "시간": "11:21:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1127, + "역명": "범어사", + "시간": "11:35:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2150, + "역명": "범어사", + "시간": "14:16:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1181, + "역명": "범어사", + "시간": "14:30:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2204, + "역명": "범어사", + "시간": "17:10:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1241, + "역명": "범어사", + "시간": "17:22:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2266, + "역명": "범어사", + "시간": "20:02:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1313, + "역명": "범어사", + "시간": "20:18:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2324, + "역명": "범어사", + "시간": "23:04:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 13, + "열번": 1351, + "역명": "범어사", + "시간": "23:17:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 14, + "열번": 1001, + "역명": "범어사", + "시간": "05:09:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2018, + "역명": "범어사", + "시간": "07:53:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1055, + "역명": "범어사", + "시간": "08:07:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1009, + "역명": "범어사", + "시간": "05:53:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2032, + "역명": "범어사", + "시간": "08:34:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1075, + "역명": "범어사", + "시간": "08:48:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2100, + "역명": "범어사", + "시간": "11:33:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1131, + "역명": "범어사", + "시간": "11:48:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2154, + "역명": "범어사", + "시간": "14:29:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1185, + "역명": "범어사", + "시간": "14:43:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2208, + "역명": "범어사", + "시간": "17:27:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1249, + "역명": "범어사", + "시간": "17:39:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2274, + "역명": "범어사", + "시간": "20:22:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2026, + "역명": "범어사", + "시간": "08:19:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1067, + "역명": "범어사", + "시간": "08:31:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2036, + "역명": "범어사", + "시간": "08:43:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2030, + "역명": "범어사", + "시간": "08:29:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1073, + "역명": "범어사", + "시간": "08:43:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2098, + "역명": "범어사", + "시간": "11:27:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1129, + "역명": "범어사", + "시간": "11:41:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2152, + "역명": "범어사", + "시간": "14:22:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1183, + "역명": "범어사", + "시간": "14:37:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2206, + "역명": "범어사", + "시간": "17:22:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1247, + "역명": "범어사", + "시간": "17:35:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2272, + "역명": "범어사", + "시간": "20:17:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1317, + "역명": "범어사", + "시간": "20:34:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2326, + "역명": "범어사", + "시간": "23:14:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 18, + "열번": 7931, + "역명": "범어사", + "시간": "23:32:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 19, + "열번": 1011, + "역명": "범어사", + "시간": "06:04:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2038, + "역명": "범어사", + "시간": "08:47:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1079, + "역명": "범어사", + "시간": "09:00:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2102, + "역명": "범어사", + "시간": "11:40:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1133, + "역명": "범어사", + "시간": "11:54:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2156, + "역명": "범어사", + "시간": "14:35:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1187, + "역명": "범어사", + "시간": "14:50:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2210, + "역명": "범어사", + "시간": "17:32:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1253, + "역명": "범어사", + "시간": "17:47:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2278, + "역명": "범어사", + "시간": "20:32:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2034, + "역명": "범어사", + "시간": "08:38:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 20, + "열번": 1077, + "역명": "범어사", + "시간": "08:54:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 21, + "열번": 1013, + "역명": "범어사", + "시간": "06:15:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2042, + "역명": "범어사", + "시간": "08:56:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1083, + "역명": "범어사", + "시간": "09:12:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2106, + "역명": "범어사", + "시간": "11:53:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1137, + "역명": "범어사", + "시간": "12:07:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2160, + "역명": "범어사", + "시간": "14:48:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1191, + "역명": "범어사", + "시간": "15:03:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2214, + "역명": "범어사", + "시간": "17:42:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1257, + "역명": "범어사", + "시간": "17:55:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2280, + "역명": "범어사", + "시간": "20:37:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1321, + "역명": "범어사", + "시간": "20:50:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2330, + "역명": "범어사", + "시간": "23:36:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2040, + "역명": "범어사", + "시간": "08:52:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1081, + "역명": "범어사", + "시간": "09:06:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2104, + "역명": "범어사", + "시간": "11:46:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1135, + "역명": "범어사", + "시간": "12:01:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2158, + "역명": "범어사", + "시간": "14:42:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1189, + "역명": "범어사", + "시간": "14:56:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2212, + "역명": "범어사", + "시간": "17:37:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1255, + "역명": "범어사", + "시간": "17:51:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2044, + "역명": "범어사", + "시간": "09:01:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "범어사", + "시간": "09:10:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1087, + "역명": "범어사", + "시간": "09:25:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2110, + "역명": "범어사", + "시간": "12:06:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1141, + "역명": "범어사", + "시간": "12:20:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2164, + "역명": "범어사", + "시간": "15:01:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1195, + "역명": "범어사", + "시간": "15:16:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2218, + "역명": "범어사", + "시간": "17:57:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1265, + "역명": "범어사", + "시간": "18:11:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 24, + "열번": 2286, + "역명": "범어사", + "시간": "20:55:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "범어사", + "시간": "06:43:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2054, + "역명": "범어사", + "시간": "09:23:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1091, + "역명": "범어사", + "시간": "09:38:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2114, + "역명": "범어사", + "시간": "12:19:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1145, + "역명": "범어사", + "시간": "12:33:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2168, + "역명": "범어사", + "시간": "15:14:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1199, + "역명": "범어사", + "시간": "15:29:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2222, + "역명": "범어사", + "시간": "18:10:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1271, + "역명": "범어사", + "시간": "18:23:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2290, + "역명": "범어사", + "시간": "21:07:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1329, + "역명": "범어사", + "시간": "21:22:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2336, + "역명": "범어사", + "시간": "00:12:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2052, + "역명": "범어사", + "시간": "09:19:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1089, + "역명": "범어사", + "시간": "09:31:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2112, + "역명": "범어사", + "시간": "12:12:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1143, + "역명": "범어사", + "시간": "12:27:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2166, + "역명": "범어사", + "시간": "15:08:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1197, + "역명": "범어사", + "시간": "15:22:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2220, + "역명": "범어사", + "시간": "18:06:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1269, + "역명": "범어사", + "시간": "18:19:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2288, + "역명": "범어사", + "시간": "21:01:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1327, + "역명": "범어사", + "시간": "21:14:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 26, + "열번": 2334, + "역명": "범어사", + "시간": "00:00:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1023, + "역명": "범어사", + "시간": "06:58:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 27, + "열번": 2060, + "역명": "범어사", + "시간": "09:38:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2056, + "역명": "범어사", + "시간": "09:28:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1093, + "역명": "범어사", + "시간": "09:44:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2116, + "역명": "범어사", + "시간": "12:25:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1147, + "역명": "범어사", + "시간": "12:40:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2170, + "역명": "범어사", + "시간": "15:21:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1201, + "역명": "범어사", + "시간": "15:35:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2224, + "역명": "범어사", + "시간": "18:18:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1275, + "역명": "범어사", + "시간": "18:31:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2292, + "역명": "범어사", + "시간": "21:13:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1331, + "역명": "범어사", + "시간": "21:31:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1027, + "역명": "범어사", + "시간": "07:08:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2064, + "역명": "범어사", + "시간": "09:48:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1099, + "역명": "범어사", + "시간": "10:04:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2122, + "역명": "범어사", + "시간": "12:45:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1153, + "역명": "범어사", + "시간": "12:59:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2176, + "역명": "범어사", + "시간": "15:40:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1207, + "역명": "범어사", + "시간": "15:53:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2230, + "역명": "범어사", + "시간": "18:34:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1283, + "역명": "범어사", + "시간": "18:47:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 29, + "열번": 2298, + "역명": "범어사", + "시간": "21:31:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1037, + "역명": "범어사", + "시간": "07:31:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1031, + "역명": "범어사", + "시간": "07:18:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2068, + "역명": "범어사", + "시간": "09:58:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1101, + "역명": "범어사", + "시간": "10:10:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2124, + "역명": "범어사", + "시간": "12:51:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1155, + "역명": "범어사", + "시간": "13:06:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2178, + "역명": "범어사", + "시간": "15:47:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1209, + "역명": "범어사", + "시간": "15:59:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2232, + "역명": "범어사", + "시간": "18:42:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1287, + "역명": "범어사", + "시간": "18:55:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2300, + "역명": "범어사", + "시간": "21:37:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1335, + "역명": "범어사", + "시간": "21:51:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 32, + "열번": 1049, + "역명": "범어사", + "시간": "07:55:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1035, + "역명": "범어사", + "시간": "07:27:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2072, + "역명": "범어사", + "시간": "10:09:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1105, + "역명": "범어사", + "시간": "10:23:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2128, + "역명": "범어사", + "시간": "13:04:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1159, + "역명": "범어사", + "시간": "13:19:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2182, + "역명": "범어사", + "시간": "16:00:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1215, + "역명": "범어사", + "시간": "16:17:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2238, + "역명": "범어사", + "시간": "18:58:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1295, + "역명": "범어사", + "시간": "19:13:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2306, + "역명": "범어사", + "시간": "21:55:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 33, + "열번": 1339, + "역명": "범어사", + "시간": "22:11:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 34, + "열번": 1061, + "역명": "범어사", + "시간": "08:19:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1041, + "역명": "범어사", + "시간": "07:39:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2076, + "역명": "범어사", + "시간": "10:21:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1109, + "역명": "범어사", + "시간": "10:36:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2132, + "역명": "범어사", + "시간": "13:17:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1163, + "역명": "범어사", + "시간": "13:32:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2186, + "역명": "범어사", + "시간": "16:13:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1219, + "역명": "범어사", + "시간": "16:27:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 35, + "열번": 2242, + "역명": "범어사", + "시간": "19:06:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 36, + "열번": 8904, + "역명": "범어사", + "시간": "17:16:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1245, + "역명": "범어사", + "시간": "17:31:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 36, + "열번": 2270, + "역명": "범어사", + "시간": "20:12:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1315, + "역명": "범어사", + "시간": "20:26:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1043, + "역명": "범어사", + "시간": "07:43:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2078, + "역명": "범어사", + "시간": "10:27:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1111, + "역명": "범어사", + "시간": "10:43:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2134, + "역명": "범어사", + "시간": "13:24:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1165, + "역명": "범어사", + "시간": "13:38:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2188, + "역명": "범어사", + "시간": "16:19:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1221, + "역명": "범어사", + "시간": "16:32:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 37, + "열번": 2246, + "역명": "범어사", + "시간": "19:14:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 38, + "열번": 8906, + "역명": "범어사", + "시간": "17:47:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 38, + "열번": 1259, + "역명": "범어사", + "시간": "17:59:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 39, + "열번": 1047, + "역명": "범어사", + "시간": "07:51:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2080, + "역명": "범어사", + "시간": "10:33:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1113, + "역명": "범어사", + "시간": "10:49:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2136, + "역명": "범어사", + "시간": "13:30:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1167, + "역명": "범어사", + "시간": "13:45:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2190, + "역명": "범어사", + "시간": "16:26:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1225, + "역명": "범어사", + "시간": "16:42:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 39, + "열번": 2250, + "역명": "범어사", + "시간": "19:22:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 40, + "열번": 8908, + "역명": "범어사", + "시간": "18:02:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 40, + "열번": 1267, + "역명": "범어사", + "시간": "18:15:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 41, + "열번": 1053, + "역명": "범어사", + "시간": "08:03:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2084, + "역명": "범어사", + "시간": "10:45:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1117, + "역명": "범어사", + "시간": "11:02:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2140, + "역명": "범어사", + "시간": "13:43:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1171, + "역명": "범어사", + "시간": "13:58:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2194, + "역명": "범어사", + "시간": "16:39:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1229, + "역명": "범어사", + "시간": "16:52:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2254, + "역명": "범어사", + "시간": "19:32:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1305, + "역명": "범어사", + "시간": "19:46:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2316, + "역명": "범어사", + "시간": "22:26:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1345, + "역명": "범어사", + "시간": "22:43:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 42, + "열번": 8910, + "역명": "범어사", + "시간": "18:14:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 42, + "열번": 1273, + "역명": "범어사", + "시간": "18:27:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 43, + "열번": 1057, + "역명": "범어사", + "시간": "08:11:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2086, + "역명": "범어사", + "시간": "10:51:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1119, + "역명": "범어사", + "시간": "11:09:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2142, + "역명": "범어사", + "시간": "13:50:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1173, + "역명": "범어사", + "시간": "14:04:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2196, + "역명": "범어사", + "시간": "16:45:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1233, + "역명": "범어사", + "시간": "17:02:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2258, + "역명": "범어사", + "시간": "19:42:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1307, + "역명": "범어사", + "시간": "19:54:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 43, + "열번": 2318, + "역명": "범어사", + "시간": "22:34:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 44, + "열번": 8912, + "역명": "범어사", + "시간": "18:26:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 44, + "열번": 1279, + "역명": "범어사", + "시간": "18:39:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 45, + "열번": 1069, + "역명": "범어사", + "시간": "08:35:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2094, + "역명": "범어사", + "시간": "11:15:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1125, + "역명": "범어사", + "시간": "11:28:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2148, + "역명": "범어사", + "시간": "14:09:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1179, + "역명": "범어사", + "시간": "14:24:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2202, + "역명": "범어사", + "시간": "17:04:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1239, + "역명": "범어사", + "시간": "17:17:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2264, + "역명": "범어사", + "시간": "19:57:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1311, + "역명": "범어사", + "시간": "20:10:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2322, + "역명": "범어사", + "시간": "22:54:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 45, + "열번": 1349, + "역명": "범어사", + "시간": "23:07:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 46, + "열번": 8914, + "역명": "범어사", + "시간": "18:38:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 46, + "열번": 1285, + "역명": "범어사", + "시간": "18:51:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 47, + "열번": 1211, + "역명": "범어사", + "시간": "16:05:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 47, + "열번": 2234, + "역명": "범어사", + "시간": "18:46:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 47, + "열번": 1289, + "역명": "범어사", + "시간": "18:59:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 47, + "열번": 2302, + "역명": "범어사", + "시간": "21:43:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 48, + "열번": 8916, + "역명": "범어사", + "시간": "18:50:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 48, + "열번": 1291, + "역명": "범어사", + "시간": "19:03:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 49, + "열번": 1223, + "역명": "범어사", + "시간": "16:37:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 49, + "열번": 2248, + "역명": "범어사", + "시간": "19:18:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 49, + "열번": 1301, + "역명": "범어사", + "시간": "19:30:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 49, + "열번": 2312, + "역명": "범어사", + "시간": "22:13:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 50, + "열번": 2244, + "역명": "범어사", + "시간": "19:10:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 50, + "열번": 1299, + "역명": "범어사", + "시간": "19:23:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 50, + "열번": 2310, + "역명": "범어사", + "시간": "22:07:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 50, + "열번": 1341, + "역명": "범어사", + "시간": "22:21:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 51, + "열번": 1231, + "역명": "범어사", + "시간": "16:57:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 51, + "열번": 2256, + "역명": "범어사", + "시간": "19:37:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 52, + "열번": 6906, + "역명": "범어사", + "시간": "10:36:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 52, + "열번": 5905, + "역명": "범어사", + "시간": "10:52:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 53, + "열번": 1243, + "역명": "범어사", + "시간": "17:27:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 53, + "열번": 2268, + "역명": "범어사", + "시간": "20:07:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 54, + "열번": 6910, + "역명": "범어사", + "시간": "14:19:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 54, + "열번": 5907, + "역명": "범어사", + "시간": "14:33:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 55, + "열번": 1251, + "역명": "범어사", + "시간": "17:43:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 55, + "열번": 2276, + "역명": "범어사", + "시간": "20:27:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 55, + "열번": 1319, + "역명": "범어사", + "시간": "20:42:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 55, + "열번": 2328, + "역명": "범어사", + "시간": "23:24:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 57, + "열번": 1263, + "역명": "범어사", + "시간": "18:07:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 57, + "열번": 2284, + "역명": "범어사", + "시간": "20:49:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 57, + "열번": 1325, + "역명": "범어사", + "시간": "21:06:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 57, + "열번": 2332, + "역명": "범어사", + "시간": "23:48:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 59, + "열번": 5901, + "역명": "범어사", + "시간": "10:00:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 59, + "열번": 6902, + "역명": "범어사", + "시간": "12:41:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 61, + "열번": 5903, + "역명": "범어사", + "시간": "13:28:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 61, + "열번": 5904, + "역명": "범어사", + "시간": "16:09:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "남산", + "시간": "06:18:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "남산", + "시간": "06:36:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2050, + "역명": "남산", + "시간": "09:13:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "남산", + "시간": "06:04:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "남산", + "시간": "06:27:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "남산", + "시간": "09:04:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1085, + "역명": "남산", + "시간": "09:20:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2108, + "역명": "남산", + "시간": "11:58:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1139, + "역명": "남산", + "시간": "12:16:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2162, + "역명": "남산", + "시간": "14:53:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1193, + "역명": "남산", + "시간": "15:11:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2216, + "역명": "남산", + "시간": "17:50:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1261, + "역명": "남산", + "시간": "18:05:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2282, + "역명": "남산", + "시간": "20:41:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1323, + "역명": "남산", + "시간": "21:00:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "남산", + "시간": "06:31:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "남산", + "시간": "06:54:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2058, + "역명": "남산", + "시간": "09:31:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1095, + "역명": "남산", + "시간": "09:53:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2118, + "역명": "남산", + "시간": "12:30:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1149, + "역명": "남산", + "시간": "12:48:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2172, + "역명": "남산", + "시간": "15:26:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1203, + "역명": "남산", + "시간": "15:43:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2226, + "역명": "남산", + "시간": "18:20:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1277, + "역명": "남산", + "시간": "18:37:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2294, + "역명": "남산", + "시간": "21:17:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "남산", + "시간": "06:44:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1025, + "역명": "남산", + "시간": "07:05:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2062, + "역명": "남산", + "시간": "09:41:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1097, + "역명": "남산", + "시간": "09:59:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2120, + "역명": "남산", + "시간": "12:37:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1151, + "역명": "남산", + "시간": "12:55:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2174, + "역명": "남산", + "시간": "15:32:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1205, + "역명": "남산", + "시간": "15:49:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2228, + "역명": "남산", + "시간": "18:28:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1281, + "역명": "남산", + "시간": "18:45:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2296, + "역명": "남산", + "시간": "21:23:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1333, + "역명": "남산", + "시간": "21:43:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2338, + "역명": "남산", + "시간": "00:26:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2008, + "역명": "남산", + "시간": "06:56:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1029, + "역명": "남산", + "시간": "07:15:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2066, + "역명": "남산", + "시간": "09:51:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2010, + "역명": "남산", + "시간": "07:08:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1033, + "역명": "남산", + "시간": "07:25:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2070, + "역명": "남산", + "시간": "10:01:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1103, + "역명": "남산", + "시간": "10:19:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2126, + "역명": "남산", + "시간": "12:56:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1157, + "역명": "남산", + "시간": "13:14:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2180, + "역명": "남산", + "시간": "15:52:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1213, + "역명": "남산", + "시간": "16:13:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2236, + "역명": "남산", + "시간": "18:52:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1293, + "역명": "남산", + "시간": "19:10:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2304, + "역명": "남산", + "시간": "21:47:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1337, + "역명": "남산", + "시간": "22:03:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1003, + "역명": "남산", + "시간": "05:22:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2020, + "역명": "남산", + "시간": "08:00:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1059, + "역명": "남산", + "시간": "08:17:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2088, + "역명": "남산", + "시간": "10:55:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1121, + "역명": "남산", + "시간": "11:17:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2144, + "역명": "남산", + "시간": "13:55:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1175, + "역명": "남산", + "시간": "14:13:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2198, + "역명": "남산", + "시간": "16:50:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1235, + "역명": "남산", + "시간": "17:09:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2260, + "역명": "남산", + "시간": "19:45:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1309, + "역명": "남산", + "시간": "20:04:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2320, + "역명": "남산", + "시간": "22:42:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1347, + "역명": "남산", + "시간": "22:57:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2012, + "역명": "남산", + "시간": "07:20:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1039, + "역명": "남산", + "시간": "07:37:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2074, + "역명": "남산", + "시간": "10:13:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1107, + "역명": "남산", + "시간": "10:32:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2130, + "역명": "남산", + "시간": "13:09:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1161, + "역명": "남산", + "시간": "13:27:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2184, + "역명": "남산", + "시간": "16:05:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1217, + "역명": "남산", + "시간": "16:24:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2240, + "역명": "남산", + "시간": "19:00:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1297, + "역명": "남산", + "시간": "19:20:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 8, + "열번": 2308, + "역명": "남산", + "시간": "21:59:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 9, + "열번": 2022, + "역명": "남산", + "시간": "08:06:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1063, + "역명": "남산", + "시간": "08:25:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 9, + "열번": 2090, + "역명": "남산", + "시간": "11:01:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2014, + "역명": "남산", + "시간": "07:32:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1045, + "역명": "남산", + "시간": "07:49:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 11, + "열번": 1005, + "역명": "남산", + "시간": "05:33:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2024, + "역명": "남산", + "시간": "08:12:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1065, + "역명": "남산", + "시간": "08:29:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2092, + "역명": "남산", + "시간": "11:07:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1123, + "역명": "남산", + "시간": "11:24:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2146, + "역명": "남산", + "시간": "14:01:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1177, + "역명": "남산", + "시간": "14:19:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2200, + "역명": "남산", + "시간": "16:56:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1237, + "역명": "남산", + "시간": "17:14:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 11, + "열번": 2262, + "역명": "남산", + "시간": "19:50:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2016, + "역명": "남산", + "시간": "07:43:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1051, + "역명": "남산", + "시간": "08:01:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2082, + "역명": "남산", + "시간": "10:37:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1115, + "역명": "남산", + "시간": "10:58:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2138, + "역명": "남산", + "시간": "13:35:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1169, + "역명": "남산", + "시간": "13:53:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "남산", + "시간": "16:31:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1227, + "역명": "남산", + "시간": "16:49:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2252, + "역명": "남산", + "시간": "19:25:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1303, + "역명": "남산", + "시간": "19:40:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2314, + "역명": "남산", + "시간": "22:17:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1343, + "역명": "남산", + "시간": "22:34:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1007, + "역명": "남산", + "시간": "05:44:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2028, + "역명": "남산", + "시간": "08:23:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1071, + "역명": "남산", + "시간": "08:41:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2096, + "역명": "남산", + "시간": "11:19:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1127, + "역명": "남산", + "시간": "11:37:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2150, + "역명": "남산", + "시간": "14:14:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1181, + "역명": "남산", + "시간": "14:32:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2204, + "역명": "남산", + "시간": "17:08:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1241, + "역명": "남산", + "시간": "17:24:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2266, + "역명": "남산", + "시간": "20:00:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1313, + "역명": "남산", + "시간": "20:20:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2324, + "역명": "남산", + "시간": "23:02:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 13, + "열번": 1351, + "역명": "남산", + "시간": "23:19:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 14, + "열번": 1001, + "역명": "남산", + "시간": "05:11:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2018, + "역명": "남산", + "시간": "07:52:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1055, + "역명": "남산", + "시간": "08:09:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1009, + "역명": "남산", + "시간": "05:55:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2032, + "역명": "남산", + "시간": "08:32:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1075, + "역명": "남산", + "시간": "08:50:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2100, + "역명": "남산", + "시간": "11:32:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1131, + "역명": "남산", + "시간": "11:50:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2154, + "역명": "남산", + "시간": "14:27:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1185, + "역명": "남산", + "시간": "14:45:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2208, + "역명": "남산", + "시간": "17:25:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1249, + "역명": "남산", + "시간": "17:41:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2274, + "역명": "남산", + "시간": "20:20:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2026, + "역명": "남산", + "시간": "08:18:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1067, + "역명": "남산", + "시간": "08:33:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2036, + "역명": "남산", + "시간": "08:41:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2030, + "역명": "남산", + "시간": "08:28:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1073, + "역명": "남산", + "시간": "08:45:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2098, + "역명": "남산", + "시간": "11:25:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1129, + "역명": "남산", + "시간": "11:43:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2152, + "역명": "남산", + "시간": "14:21:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1183, + "역명": "남산", + "시간": "14:39:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2206, + "역명": "남산", + "시간": "17:20:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1247, + "역명": "남산", + "시간": "17:37:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2272, + "역명": "남산", + "시간": "20:15:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1317, + "역명": "남산", + "시간": "20:36:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2326, + "역명": "남산", + "시간": "23:12:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 18, + "열번": 7931, + "역명": "남산", + "시간": "23:34:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 19, + "열번": 1011, + "역명": "남산", + "시간": "06:06:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2038, + "역명": "남산", + "시간": "08:46:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1079, + "역명": "남산", + "시간": "09:02:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2102, + "역명": "남산", + "시간": "11:38:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1133, + "역명": "남산", + "시간": "11:56:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2156, + "역명": "남산", + "시간": "14:34:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1187, + "역명": "남산", + "시간": "14:52:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2210, + "역명": "남산", + "시간": "17:30:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1253, + "역명": "남산", + "시간": "17:49:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2278, + "역명": "남산", + "시간": "20:30:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2034, + "역명": "남산", + "시간": "08:37:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 20, + "열번": 1077, + "역명": "남산", + "시간": "08:56:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 21, + "열번": 1013, + "역명": "남산", + "시간": "06:17:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2042, + "역명": "남산", + "시간": "08:55:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1083, + "역명": "남산", + "시간": "09:14:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2106, + "역명": "남산", + "시간": "11:51:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1137, + "역명": "남산", + "시간": "12:09:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2160, + "역명": "남산", + "시간": "14:47:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1191, + "역명": "남산", + "시간": "15:05:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2214, + "역명": "남산", + "시간": "17:40:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1257, + "역명": "남산", + "시간": "17:57:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2280, + "역명": "남산", + "시간": "20:35:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1321, + "역명": "남산", + "시간": "20:52:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2330, + "역명": "남산", + "시간": "23:34:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2040, + "역명": "남산", + "시간": "08:50:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1081, + "역명": "남산", + "시간": "09:08:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2104, + "역명": "남산", + "시간": "11:45:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1135, + "역명": "남산", + "시간": "12:03:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2158, + "역명": "남산", + "시간": "14:40:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1189, + "역명": "남산", + "시간": "14:58:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2212, + "역명": "남산", + "시간": "17:35:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1255, + "역명": "남산", + "시간": "17:53:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2044, + "역명": "남산", + "시간": "08:59:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "남산", + "시간": "09:08:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1087, + "역명": "남산", + "시간": "09:27:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2110, + "역명": "남산", + "시간": "12:04:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1141, + "역명": "남산", + "시간": "12:22:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2164, + "역명": "남산", + "시간": "15:00:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1195, + "역명": "남산", + "시간": "15:18:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2218, + "역명": "남산", + "시간": "17:55:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1265, + "역명": "남산", + "시간": "18:13:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 24, + "열번": 2286, + "역명": "남산", + "시간": "20:53:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "남산", + "시간": "06:45:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2054, + "역명": "남산", + "시간": "09:22:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1091, + "역명": "남산", + "시간": "09:40:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2114, + "역명": "남산", + "시간": "12:17:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1145, + "역명": "남산", + "시간": "12:35:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2168, + "역명": "남산", + "시간": "15:13:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1199, + "역명": "남산", + "시간": "15:31:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2222, + "역명": "남산", + "시간": "18:08:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1271, + "역명": "남산", + "시간": "18:25:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2290, + "역명": "남산", + "시간": "21:05:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1329, + "역명": "남산", + "시간": "21:24:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2336, + "역명": "남산", + "시간": "00:10:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2052, + "역명": "남산", + "시간": "09:17:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1089, + "역명": "남산", + "시간": "09:33:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2112, + "역명": "남산", + "시간": "12:11:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1143, + "역명": "남산", + "시간": "12:29:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2166, + "역명": "남산", + "시간": "15:06:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1197, + "역명": "남산", + "시간": "15:24:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2220, + "역명": "남산", + "시간": "18:04:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1269, + "역명": "남산", + "시간": "18:21:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2288, + "역명": "남산", + "시간": "20:59:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1327, + "역명": "남산", + "시간": "21:16:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 26, + "열번": 2334, + "역명": "남산", + "시간": "23:58:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1023, + "역명": "남산", + "시간": "07:00:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 27, + "열번": 2060, + "역명": "남산", + "시간": "09:36:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2056, + "역명": "남산", + "시간": "09:26:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1093, + "역명": "남산", + "시간": "09:46:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2116, + "역명": "남산", + "시간": "12:24:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1147, + "역명": "남산", + "시간": "12:42:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2170, + "역명": "남산", + "시간": "15:19:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1201, + "역명": "남산", + "시간": "15:37:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2224, + "역명": "남산", + "시간": "18:16:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1275, + "역명": "남산", + "시간": "18:33:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2292, + "역명": "남산", + "시간": "21:11:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1331, + "역명": "남산", + "시간": "21:33:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1027, + "역명": "남산", + "시간": "07:10:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2064, + "역명": "남산", + "시간": "09:46:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1099, + "역명": "남산", + "시간": "10:06:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2122, + "역명": "남산", + "시간": "12:43:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1153, + "역명": "남산", + "시간": "13:01:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2176, + "역명": "남산", + "시간": "15:39:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1207, + "역명": "남산", + "시간": "15:55:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2230, + "역명": "남산", + "시간": "18:32:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1283, + "역명": "남산", + "시간": "18:49:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 29, + "열번": 2298, + "역명": "남산", + "시간": "21:29:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1037, + "역명": "남산", + "시간": "07:33:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1031, + "역명": "남산", + "시간": "07:20:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2068, + "역명": "남산", + "시간": "09:56:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1101, + "역명": "남산", + "시간": "10:12:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2124, + "역명": "남산", + "시간": "12:50:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1155, + "역명": "남산", + "시간": "13:08:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2178, + "역명": "남산", + "시간": "15:45:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1209, + "역명": "남산", + "시간": "16:01:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2232, + "역명": "남산", + "시간": "18:40:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1287, + "역명": "남산", + "시간": "18:57:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2300, + "역명": "남산", + "시간": "21:35:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1335, + "역명": "남산", + "시간": "21:53:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 32, + "열번": 1049, + "역명": "남산", + "시간": "07:57:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1035, + "역명": "남산", + "시간": "07:29:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2072, + "역명": "남산", + "시간": "10:07:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1105, + "역명": "남산", + "시간": "10:25:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2128, + "역명": "남산", + "시간": "13:03:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1159, + "역명": "남산", + "시간": "13:21:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2182, + "역명": "남산", + "시간": "15:58:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1215, + "역명": "남산", + "시간": "16:19:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2238, + "역명": "남산", + "시간": "18:56:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1295, + "역명": "남산", + "시간": "19:15:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2306, + "역명": "남산", + "시간": "21:53:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 33, + "열번": 1339, + "역명": "남산", + "시간": "22:13:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 34, + "열번": 1061, + "역명": "남산", + "시간": "08:21:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1041, + "역명": "남산", + "시간": "07:41:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2076, + "역명": "남산", + "시간": "10:19:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1109, + "역명": "남산", + "시간": "10:38:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2132, + "역명": "남산", + "시간": "13:16:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1163, + "역명": "남산", + "시간": "13:34:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2186, + "역명": "남산", + "시간": "16:11:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1219, + "역명": "남산", + "시간": "16:29:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 35, + "열번": 2242, + "역명": "남산", + "시간": "19:04:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 36, + "열번": 8904, + "역명": "남산", + "시간": "17:14:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1245, + "역명": "남산", + "시간": "17:33:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 36, + "열번": 2270, + "역명": "남산", + "시간": "20:10:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1315, + "역명": "남산", + "시간": "20:28:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1043, + "역명": "남산", + "시간": "07:45:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2078, + "역명": "남산", + "시간": "10:25:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1111, + "역명": "남산", + "시간": "10:45:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2134, + "역명": "남산", + "시간": "13:22:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1165, + "역명": "남산", + "시간": "13:40:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2188, + "역명": "남산", + "시간": "16:18:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1221, + "역명": "남산", + "시간": "16:34:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 37, + "열번": 2246, + "역명": "남산", + "시간": "19:12:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 38, + "열번": 8906, + "역명": "남산", + "시간": "17:45:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 38, + "열번": 1259, + "역명": "남산", + "시간": "18:01:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 39, + "열번": 1047, + "역명": "남산", + "시간": "07:53:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2080, + "역명": "남산", + "시간": "10:31:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1113, + "역명": "남산", + "시간": "10:51:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2136, + "역명": "남산", + "시간": "13:29:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1167, + "역명": "남산", + "시간": "13:47:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2190, + "역명": "남산", + "시간": "16:24:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1225, + "역명": "남산", + "시간": "16:44:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 39, + "열번": 2250, + "역명": "남산", + "시간": "19:20:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 40, + "열번": 8908, + "역명": "남산", + "시간": "18:00:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 40, + "열번": 1267, + "역명": "남산", + "시간": "18:17:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 41, + "열번": 1053, + "역명": "남산", + "시간": "08:05:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2084, + "역명": "남산", + "시간": "10:43:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1117, + "역명": "남산", + "시간": "11:04:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2140, + "역명": "남산", + "시간": "13:42:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1171, + "역명": "남산", + "시간": "14:00:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2194, + "역명": "남산", + "시간": "16:37:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1229, + "역명": "남산", + "시간": "16:54:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2254, + "역명": "남산", + "시간": "19:30:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1305, + "역명": "남산", + "시간": "19:48:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2316, + "역명": "남산", + "시간": "22:24:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1345, + "역명": "남산", + "시간": "22:45:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 42, + "열번": 8910, + "역명": "남산", + "시간": "18:12:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 42, + "열번": 1273, + "역명": "남산", + "시간": "18:29:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 43, + "열번": 1057, + "역명": "남산", + "시간": "08:13:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2086, + "역명": "남산", + "시간": "10:49:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1119, + "역명": "남산", + "시간": "11:11:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2142, + "역명": "남산", + "시간": "13:48:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1173, + "역명": "남산", + "시간": "14:06:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2196, + "역명": "남산", + "시간": "16:44:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1233, + "역명": "남산", + "시간": "17:04:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2258, + "역명": "남산", + "시간": "19:40:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1307, + "역명": "남산", + "시간": "19:56:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 43, + "열번": 2318, + "역명": "남산", + "시간": "22:32:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 44, + "열번": 8912, + "역명": "남산", + "시간": "18:24:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 44, + "열번": 1279, + "역명": "남산", + "시간": "18:41:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 45, + "열번": 1069, + "역명": "남산", + "시간": "08:37:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2094, + "역명": "남산", + "시간": "11:13:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1125, + "역명": "남산", + "시간": "11:30:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2148, + "역명": "남산", + "시간": "14:08:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1179, + "역명": "남산", + "시간": "14:26:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2202, + "역명": "남산", + "시간": "17:02:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1239, + "역명": "남산", + "시간": "17:19:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2264, + "역명": "남산", + "시간": "19:55:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1311, + "역명": "남산", + "시간": "20:12:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2322, + "역명": "남산", + "시간": "22:52:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 45, + "열번": 1349, + "역명": "남산", + "시간": "23:09:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 46, + "열번": 8914, + "역명": "남산", + "시간": "18:36:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 46, + "열번": 1285, + "역명": "남산", + "시간": "18:53:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 47, + "열번": 1211, + "역명": "남산", + "시간": "16:07:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 47, + "열번": 2234, + "역명": "남산", + "시간": "18:44:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 47, + "열번": 1289, + "역명": "남산", + "시간": "19:01:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 47, + "열번": 2302, + "역명": "남산", + "시간": "21:41:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 48, + "열번": 8916, + "역명": "남산", + "시간": "18:48:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 48, + "열번": 1291, + "역명": "남산", + "시간": "19:05:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 49, + "열번": 1223, + "역명": "남산", + "시간": "16:39:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 49, + "열번": 2248, + "역명": "남산", + "시간": "19:16:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 49, + "열번": 1301, + "역명": "남산", + "시간": "19:32:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 49, + "열번": 2312, + "역명": "남산", + "시간": "22:11:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 50, + "열번": 2244, + "역명": "남산", + "시간": "19:08:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 50, + "열번": 1299, + "역명": "남산", + "시간": "19:25:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 50, + "열번": 2310, + "역명": "남산", + "시간": "22:05:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 50, + "열번": 1341, + "역명": "남산", + "시간": "22:23:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 51, + "열번": 1231, + "역명": "남산", + "시간": "16:59:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 51, + "열번": 2256, + "역명": "남산", + "시간": "19:35:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 52, + "열번": 6906, + "역명": "남산", + "시간": "10:34:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 52, + "열번": 5905, + "역명": "남산", + "시간": "10:54:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 53, + "열번": 1243, + "역명": "남산", + "시간": "17:29:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 53, + "열번": 2268, + "역명": "남산", + "시간": "20:05:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 54, + "열번": 6910, + "역명": "남산", + "시간": "14:17:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 54, + "열번": 5907, + "역명": "남산", + "시간": "14:35:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 55, + "열번": 1251, + "역명": "남산", + "시간": "17:45:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 55, + "열번": 2276, + "역명": "남산", + "시간": "20:25:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 55, + "열번": 1319, + "역명": "남산", + "시간": "20:44:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 55, + "열번": 2328, + "역명": "남산", + "시간": "23:22:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 57, + "열번": 1263, + "역명": "남산", + "시간": "18:09:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 57, + "열번": 2284, + "역명": "남산", + "시간": "20:47:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 57, + "열번": 1325, + "역명": "남산", + "시간": "21:08:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 57, + "열번": 2332, + "역명": "남산", + "시간": "23:46:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 59, + "열번": 5901, + "역명": "남산", + "시간": "10:02:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 59, + "열번": 6902, + "역명": "남산", + "시간": "12:40:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 61, + "열번": 5903, + "역명": "남산", + "시간": "13:30:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 61, + "열번": 5904, + "역명": "남산", + "시간": "16:08:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "두실", + "시간": "06:16:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "두실", + "시간": "06:37:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2050, + "역명": "두실", + "시간": "09:11:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "두실", + "시간": "06:02:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "두실", + "시간": "06:28:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "두실", + "시간": "09:02:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1085, + "역명": "두실", + "시간": "09:22:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2108, + "역명": "두실", + "시간": "11:56:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1139, + "역명": "두실", + "시간": "12:17:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2162, + "역명": "두실", + "시간": "14:51:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1193, + "역명": "두실", + "시간": "15:13:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2216, + "역명": "두실", + "시간": "17:48:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1261, + "역명": "두실", + "시간": "18:07:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2282, + "역명": "두실", + "시간": "20:39:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1323, + "역명": "두실", + "시간": "21:02:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "두실", + "시간": "06:29:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "두실", + "시간": "06:55:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2058, + "역명": "두실", + "시간": "09:29:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1095, + "역명": "두실", + "시간": "09:54:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2118, + "역명": "두실", + "시간": "12:28:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1149, + "역명": "두실", + "시간": "12:50:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2172, + "역명": "두실", + "시간": "15:24:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1203, + "역명": "두실", + "시간": "15:45:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2226, + "역명": "두실", + "시간": "18:18:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1277, + "역명": "두실", + "시간": "18:39:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2294, + "역명": "두실", + "시간": "21:15:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "두실", + "시간": "06:42:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1025, + "역명": "두실", + "시간": "07:07:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2062, + "역명": "두실", + "시간": "09:39:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1097, + "역명": "두실", + "시간": "10:01:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2120, + "역명": "두실", + "시간": "12:35:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1151, + "역명": "두실", + "시간": "12:56:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2174, + "역명": "두실", + "시간": "15:30:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1205, + "역명": "두실", + "시간": "15:51:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2228, + "역명": "두실", + "시간": "18:26:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1281, + "역명": "두실", + "시간": "18:47:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2296, + "역명": "두실", + "시간": "21:21:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1333, + "역명": "두실", + "시간": "21:45:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2338, + "역명": "두실", + "시간": "00:25:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2008, + "역명": "두실", + "시간": "06:54:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1029, + "역명": "두실", + "시간": "07:17:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2066, + "역명": "두실", + "시간": "09:49:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2010, + "역명": "두실", + "시간": "07:06:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1033, + "역명": "두실", + "시간": "07:27:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2070, + "역명": "두실", + "시간": "09:59:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1103, + "역명": "두실", + "시간": "10:20:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2126, + "역명": "두실", + "시간": "12:54:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1157, + "역명": "두실", + "시간": "13:16:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2180, + "역명": "두실", + "시간": "15:50:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1213, + "역명": "두실", + "시간": "16:15:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2236, + "역명": "두실", + "시간": "18:50:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1293, + "역명": "두실", + "시간": "19:12:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2304, + "역명": "두실", + "시간": "21:45:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1337, + "역명": "두실", + "시간": "22:05:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1003, + "역명": "두실", + "시간": "05:23:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2020, + "역명": "두실", + "시간": "07:58:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1059, + "역명": "두실", + "시간": "08:19:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2088, + "역명": "두실", + "시간": "10:53:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1121, + "역명": "두실", + "시간": "11:19:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2144, + "역명": "두실", + "시간": "13:53:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1175, + "역명": "두실", + "시간": "14:14:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2198, + "역명": "두실", + "시간": "16:48:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1235, + "역명": "두실", + "시간": "17:11:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2260, + "역명": "두실", + "시간": "19:43:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1309, + "역명": "두실", + "시간": "20:06:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2320, + "역명": "두실", + "시간": "22:40:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1347, + "역명": "두실", + "시간": "22:59:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2012, + "역명": "두실", + "시간": "07:18:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1039, + "역명": "두실", + "시간": "07:39:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2074, + "역명": "두실", + "시간": "10:11:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1107, + "역명": "두실", + "시간": "10:33:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2130, + "역명": "두실", + "시간": "13:07:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1161, + "역명": "두실", + "시간": "13:29:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2184, + "역명": "두실", + "시간": "16:03:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1217, + "역명": "두실", + "시간": "16:26:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2240, + "역명": "두실", + "시간": "18:58:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1297, + "역명": "두실", + "시간": "19:22:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 8, + "열번": 2308, + "역명": "두실", + "시간": "21:57:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 9, + "열번": 2022, + "역명": "두실", + "시간": "08:04:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1063, + "역명": "두실", + "시간": "08:27:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 9, + "열번": 2090, + "역명": "두실", + "시간": "10:59:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2014, + "역명": "두실", + "시간": "07:30:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1045, + "역명": "두실", + "시간": "07:51:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 11, + "열번": 1005, + "역명": "두실", + "시간": "05:34:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2024, + "역명": "두실", + "시간": "08:10:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1065, + "역명": "두실", + "시간": "08:31:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2092, + "역명": "두실", + "시간": "11:05:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1123, + "역명": "두실", + "시간": "11:25:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2146, + "역명": "두실", + "시간": "13:59:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1177, + "역명": "두실", + "시간": "14:21:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2200, + "역명": "두실", + "시간": "16:54:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1237, + "역명": "두실", + "시간": "17:16:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 11, + "열번": 2262, + "역명": "두실", + "시간": "19:48:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2016, + "역명": "두실", + "시간": "07:41:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1051, + "역명": "두실", + "시간": "08:03:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2082, + "역명": "두실", + "시간": "10:35:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1115, + "역명": "두실", + "시간": "10:59:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2138, + "역명": "두실", + "시간": "13:33:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1169, + "역명": "두실", + "시간": "13:55:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "두실", + "시간": "16:29:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1227, + "역명": "두실", + "시간": "16:51:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2252, + "역명": "두실", + "시간": "19:23:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1303, + "역명": "두실", + "시간": "19:42:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2314, + "역명": "두실", + "시간": "22:15:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1343, + "역명": "두실", + "시간": "22:36:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1007, + "역명": "두실", + "시간": "05:45:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2028, + "역명": "두실", + "시간": "08:21:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1071, + "역명": "두실", + "시간": "08:43:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2096, + "역명": "두실", + "시간": "11:17:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1127, + "역명": "두실", + "시간": "11:38:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2150, + "역명": "두실", + "시간": "14:12:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1181, + "역명": "두실", + "시간": "14:34:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2204, + "역명": "두실", + "시간": "17:06:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1241, + "역명": "두실", + "시간": "17:26:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2266, + "역명": "두실", + "시간": "19:58:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1313, + "역명": "두실", + "시간": "20:22:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2324, + "역명": "두실", + "시간": "23:00:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 13, + "열번": 1351, + "역명": "두실", + "시간": "23:21:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 14, + "열번": 1001, + "역명": "두실", + "시간": "05:13:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2018, + "역명": "두실", + "시간": "07:50:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1055, + "역명": "두실", + "시간": "08:11:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1009, + "역명": "두실", + "시간": "05:56:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2032, + "역명": "두실", + "시간": "08:30:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1075, + "역명": "두실", + "시간": "08:52:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2100, + "역명": "두실", + "시간": "11:30:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1131, + "역명": "두실", + "시간": "11:51:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2154, + "역명": "두실", + "시간": "14:25:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1185, + "역명": "두실", + "시간": "14:47:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2208, + "역명": "두실", + "시간": "17:23:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1249, + "역명": "두실", + "시간": "17:43:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2274, + "역명": "두실", + "시간": "20:18:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2026, + "역명": "두실", + "시간": "08:16:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1067, + "역명": "두실", + "시간": "08:35:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2036, + "역명": "두실", + "시간": "08:39:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2030, + "역명": "두실", + "시간": "08:26:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1073, + "역명": "두실", + "시간": "08:47:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2098, + "역명": "두실", + "시간": "11:23:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1129, + "역명": "두실", + "시간": "11:45:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2152, + "역명": "두실", + "시간": "14:19:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1183, + "역명": "두실", + "시간": "14:40:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2206, + "역명": "두실", + "시간": "17:18:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1247, + "역명": "두실", + "시간": "17:39:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2272, + "역명": "두실", + "시간": "20:13:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1317, + "역명": "두실", + "시간": "20:38:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2326, + "역명": "두실", + "시간": "23:10:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 18, + "열번": 7931, + "역명": "두실", + "시간": "23:36:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 19, + "열번": 1011, + "역명": "두실", + "시간": "06:07:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2038, + "역명": "두실", + "시간": "08:44:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1079, + "역명": "두실", + "시간": "09:03:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2102, + "역명": "두실", + "시간": "11:36:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1133, + "역명": "두실", + "시간": "11:58:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2156, + "역명": "두실", + "시간": "14:32:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1187, + "역명": "두실", + "시간": "14:53:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2210, + "역명": "두실", + "시간": "17:28:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1253, + "역명": "두실", + "시간": "17:51:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2278, + "역명": "두실", + "시간": "20:28:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2034, + "역명": "두실", + "시간": "08:35:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 20, + "열번": 1077, + "역명": "두실", + "시간": "08:57:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 21, + "열번": 1013, + "역명": "두실", + "시간": "06:18:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2042, + "역명": "두실", + "시간": "08:53:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1083, + "역명": "두실", + "시간": "09:15:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2106, + "역명": "두실", + "시간": "11:49:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1137, + "역명": "두실", + "시간": "12:11:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2160, + "역명": "두실", + "시간": "14:45:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1191, + "역명": "두실", + "시간": "15:06:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2214, + "역명": "두실", + "시간": "17:38:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1257, + "역명": "두실", + "시간": "17:59:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2280, + "역명": "두실", + "시간": "20:33:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1321, + "역명": "두실", + "시간": "20:54:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2330, + "역명": "두실", + "시간": "23:32:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2040, + "역명": "두실", + "시간": "08:48:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1081, + "역명": "두실", + "시간": "09:09:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2104, + "역명": "두실", + "시간": "11:43:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1135, + "역명": "두실", + "시간": "12:04:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2158, + "역명": "두실", + "시간": "14:38:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1189, + "역명": "두실", + "시간": "15:00:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2212, + "역명": "두실", + "시간": "17:33:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1255, + "역명": "두실", + "시간": "17:55:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2044, + "역명": "두실", + "시간": "08:57:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "두실", + "시간": "09:06:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1087, + "역명": "두실", + "시간": "09:28:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2110, + "역명": "두실", + "시간": "12:02:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1141, + "역명": "두실", + "시간": "12:24:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2164, + "역명": "두실", + "시간": "14:58:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1195, + "역명": "두실", + "시간": "15:19:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2218, + "역명": "두실", + "시간": "17:53:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1265, + "역명": "두실", + "시간": "18:15:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 24, + "열번": 2286, + "역명": "두실", + "시간": "20:51:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "두실", + "시간": "06:46:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2054, + "역명": "두실", + "시간": "09:20:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1091, + "역명": "두실", + "시간": "09:41:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2114, + "역명": "두실", + "시간": "12:15:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1145, + "역명": "두실", + "시간": "12:37:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2168, + "역명": "두실", + "시간": "15:11:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1199, + "역명": "두실", + "시간": "15:32:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2222, + "역명": "두실", + "시간": "18:06:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1271, + "역명": "두실", + "시간": "18:27:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2290, + "역명": "두실", + "시간": "21:03:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1329, + "역명": "두실", + "시간": "21:26:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2336, + "역명": "두실", + "시간": "00:08:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2052, + "역명": "두실", + "시간": "09:15:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1089, + "역명": "두실", + "시간": "09:35:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2112, + "역명": "두실", + "시간": "12:09:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1143, + "역명": "두실", + "시간": "12:30:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2166, + "역명": "두실", + "시간": "15:04:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1197, + "역명": "두실", + "시간": "15:26:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2220, + "역명": "두실", + "시간": "18:02:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1269, + "역명": "두실", + "시간": "18:23:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2288, + "역명": "두실", + "시간": "20:57:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1327, + "역명": "두실", + "시간": "21:18:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 26, + "열번": 2334, + "역명": "두실", + "시간": "23:56:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1023, + "역명": "두실", + "시간": "07:02:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 27, + "열번": 2060, + "역명": "두실", + "시간": "09:34:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2056, + "역명": "두실", + "시간": "09:24:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1093, + "역명": "두실", + "시간": "09:48:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2116, + "역명": "두실", + "시간": "12:22:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1147, + "역명": "두실", + "시간": "12:43:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2170, + "역명": "두실", + "시간": "15:17:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1201, + "역명": "두실", + "시간": "15:39:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2224, + "역명": "두실", + "시간": "18:14:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1275, + "역명": "두실", + "시간": "18:35:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2292, + "역명": "두실", + "시간": "21:09:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1331, + "역명": "두실", + "시간": "21:35:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1027, + "역명": "두실", + "시간": "07:12:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2064, + "역명": "두실", + "시간": "09:44:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1099, + "역명": "두실", + "시간": "10:07:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2122, + "역명": "두실", + "시간": "12:41:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1153, + "역명": "두실", + "시간": "13:03:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2176, + "역명": "두실", + "시간": "15:37:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1207, + "역명": "두실", + "시간": "15:57:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2230, + "역명": "두실", + "시간": "18:30:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1283, + "역명": "두실", + "시간": "18:51:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 29, + "열번": 2298, + "역명": "두실", + "시간": "21:27:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1037, + "역명": "두실", + "시간": "07:35:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1031, + "역명": "두실", + "시간": "07:22:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2068, + "역명": "두실", + "시간": "09:54:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1101, + "역명": "두실", + "시간": "10:14:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2124, + "역명": "두실", + "시간": "12:48:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1155, + "역명": "두실", + "시간": "13:09:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2178, + "역명": "두실", + "시간": "15:43:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1209, + "역명": "두실", + "시간": "16:03:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2232, + "역명": "두실", + "시간": "18:38:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1287, + "역명": "두실", + "시간": "18:59:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2300, + "역명": "두실", + "시간": "21:33:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1335, + "역명": "두실", + "시간": "21:55:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 32, + "열번": 1049, + "역명": "두실", + "시간": "07:59:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1035, + "역명": "두실", + "시간": "07:31:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2072, + "역명": "두실", + "시간": "10:05:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1105, + "역명": "두실", + "시간": "10:27:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2128, + "역명": "두실", + "시간": "13:01:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1159, + "역명": "두실", + "시간": "13:22:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2182, + "역명": "두실", + "시간": "15:56:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1215, + "역명": "두실", + "시간": "16:21:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2238, + "역명": "두실", + "시간": "18:54:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1295, + "역명": "두실", + "시간": "19:17:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2306, + "역명": "두실", + "시간": "21:51:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 33, + "열번": 1339, + "역명": "두실", + "시간": "22:15:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 34, + "열번": 1061, + "역명": "두실", + "시간": "08:23:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1041, + "역명": "두실", + "시간": "07:43:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2076, + "역명": "두실", + "시간": "10:17:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1109, + "역명": "두실", + "시간": "10:40:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2132, + "역명": "두실", + "시간": "13:14:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1163, + "역명": "두실", + "시간": "13:35:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2186, + "역명": "두실", + "시간": "16:09:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1219, + "역명": "두실", + "시간": "16:31:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 35, + "열번": 2242, + "역명": "두실", + "시간": "19:02:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 36, + "열번": 8904, + "역명": "두실", + "시간": "17:12:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1245, + "역명": "두실", + "시간": "17:35:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 36, + "열번": 2270, + "역명": "두실", + "시간": "20:08:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1315, + "역명": "두실", + "시간": "20:30:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1043, + "역명": "두실", + "시간": "07:47:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2078, + "역명": "두실", + "시간": "10:23:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1111, + "역명": "두실", + "시간": "10:46:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2134, + "역명": "두실", + "시간": "13:20:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1165, + "역명": "두실", + "시간": "13:42:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2188, + "역명": "두실", + "시간": "16:16:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1221, + "역명": "두실", + "시간": "16:36:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 37, + "열번": 2246, + "역명": "두실", + "시간": "19:10:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 38, + "열번": 8906, + "역명": "두실", + "시간": "17:43:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 38, + "열번": 1259, + "역명": "두실", + "시간": "18:03:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 39, + "열번": 1047, + "역명": "두실", + "시간": "07:55:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2080, + "역명": "두실", + "시간": "10:29:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1113, + "역명": "두실", + "시간": "10:53:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2136, + "역명": "두실", + "시간": "13:27:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1167, + "역명": "두실", + "시간": "13:48:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2190, + "역명": "두실", + "시간": "16:22:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1225, + "역명": "두실", + "시간": "16:46:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 39, + "열번": 2250, + "역명": "두실", + "시간": "19:18:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 40, + "열번": 8908, + "역명": "두실", + "시간": "17:58:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 40, + "열번": 1267, + "역명": "두실", + "시간": "18:19:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 41, + "열번": 1053, + "역명": "두실", + "시간": "08:07:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2084, + "역명": "두실", + "시간": "10:41:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1117, + "역명": "두실", + "시간": "11:06:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2140, + "역명": "두실", + "시간": "13:40:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1171, + "역명": "두실", + "시간": "14:01:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2194, + "역명": "두실", + "시간": "16:35:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1229, + "역명": "두실", + "시간": "16:56:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2254, + "역명": "두실", + "시간": "19:28:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1305, + "역명": "두실", + "시간": "19:50:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2316, + "역명": "두실", + "시간": "22:22:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1345, + "역명": "두실", + "시간": "22:47:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 42, + "열번": 8910, + "역명": "두실", + "시간": "18:10:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 42, + "열번": 1273, + "역명": "두실", + "시간": "18:31:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 43, + "열번": 1057, + "역명": "두실", + "시간": "08:15:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2086, + "역명": "두실", + "시간": "10:47:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1119, + "역명": "두실", + "시간": "11:12:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2142, + "역명": "두실", + "시간": "13:46:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1173, + "역명": "두실", + "시간": "14:08:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2196, + "역명": "두실", + "시간": "16:42:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1233, + "역명": "두실", + "시간": "17:06:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2258, + "역명": "두실", + "시간": "19:38:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1307, + "역명": "두실", + "시간": "19:58:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 43, + "열번": 2318, + "역명": "두실", + "시간": "22:30:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 44, + "열번": 8912, + "역명": "두실", + "시간": "18:22:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 44, + "열번": 1279, + "역명": "두실", + "시간": "18:43:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 45, + "열번": 1069, + "역명": "두실", + "시간": "08:39:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2094, + "역명": "두실", + "시간": "11:11:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1125, + "역명": "두실", + "시간": "11:32:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2148, + "역명": "두실", + "시간": "14:06:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1179, + "역명": "두실", + "시간": "14:27:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2202, + "역명": "두실", + "시간": "17:00:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1239, + "역명": "두실", + "시간": "17:21:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2264, + "역명": "두실", + "시간": "19:53:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1311, + "역명": "두실", + "시간": "20:14:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2322, + "역명": "두실", + "시간": "22:50:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 45, + "열번": 1349, + "역명": "두실", + "시간": "23:11:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 46, + "열번": 8914, + "역명": "두실", + "시간": "18:34:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 46, + "열번": 1285, + "역명": "두실", + "시간": "18:55:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 47, + "열번": 1211, + "역명": "두실", + "시간": "16:09:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 47, + "열번": 2234, + "역명": "두실", + "시간": "18:42:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 47, + "열번": 1289, + "역명": "두실", + "시간": "19:03:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 47, + "열번": 2302, + "역명": "두실", + "시간": "21:39:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 48, + "열번": 8916, + "역명": "두실", + "시간": "18:46:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 48, + "열번": 1291, + "역명": "두실", + "시간": "19:07:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 49, + "열번": 1223, + "역명": "두실", + "시간": "16:41:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 49, + "열번": 2248, + "역명": "두실", + "시간": "19:14:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 49, + "열번": 1301, + "역명": "두실", + "시간": "19:34:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 49, + "열번": 2312, + "역명": "두실", + "시간": "22:09:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 50, + "열번": 2244, + "역명": "두실", + "시간": "19:06:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 50, + "열번": 1299, + "역명": "두실", + "시간": "19:27:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 50, + "열번": 2310, + "역명": "두실", + "시간": "22:03:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 50, + "열번": 1341, + "역명": "두실", + "시간": "22:25:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 51, + "열번": 1231, + "역명": "두실", + "시간": "17:01:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 51, + "열번": 2256, + "역명": "두실", + "시간": "19:33:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 52, + "열번": 6906, + "역명": "두실", + "시간": "10:32:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 52, + "열번": 5905, + "역명": "두실", + "시간": "10:56:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 53, + "열번": 1243, + "역명": "두실", + "시간": "17:31:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 53, + "열번": 2268, + "역명": "두실", + "시간": "20:03:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 54, + "열번": 6910, + "역명": "두실", + "시간": "14:15:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 54, + "열번": 5907, + "역명": "두실", + "시간": "14:37:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 55, + "열번": 1251, + "역명": "두실", + "시간": "17:47:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 55, + "열번": 2276, + "역명": "두실", + "시간": "20:23:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 55, + "열번": 1319, + "역명": "두실", + "시간": "20:46:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 55, + "열번": 2328, + "역명": "두실", + "시간": "23:20:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 57, + "열번": 1263, + "역명": "두실", + "시간": "18:11:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 57, + "열번": 2284, + "역명": "두실", + "시간": "20:45:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 57, + "열번": 1325, + "역명": "두실", + "시간": "21:10:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 57, + "열번": 2332, + "역명": "두실", + "시간": "23:44:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 59, + "열번": 5901, + "역명": "두실", + "시간": "10:04:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 59, + "열번": 6902, + "역명": "두실", + "시간": "12:38:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 61, + "열번": 5903, + "역명": "두실", + "시간": "13:32:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 61, + "열번": 5904, + "역명": "두실", + "시간": "16:06:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "구서", + "시간": "06:14:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "구서", + "시간": "06:39:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2050, + "역명": "구서", + "시간": "09:09:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "구서", + "시간": "06:00:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "구서", + "시간": "06:30:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "구서", + "시간": "09:00:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1085, + "역명": "구서", + "시간": "09:24:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2108, + "역명": "구서", + "시간": "11:54:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1139, + "역명": "구서", + "시간": "12:19:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2162, + "역명": "구서", + "시간": "14:49:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1193, + "역명": "구서", + "시간": "15:15:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2216, + "역명": "구서", + "시간": "17:46:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1261, + "역명": "구서", + "시간": "18:09:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2282, + "역명": "구서", + "시간": "20:37:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1323, + "역명": "구서", + "시간": "21:04:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "구서", + "시간": "06:27:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "구서", + "시간": "06:57:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2058, + "역명": "구서", + "시간": "09:27:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1095, + "역명": "구서", + "시간": "09:56:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2118, + "역명": "구서", + "시간": "12:26:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1149, + "역명": "구서", + "시간": "12:52:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2172, + "역명": "구서", + "시간": "15:22:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1203, + "역명": "구서", + "시간": "15:47:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2226, + "역명": "구서", + "시간": "18:16:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1277, + "역명": "구서", + "시간": "18:41:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2294, + "역명": "구서", + "시간": "21:13:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "구서", + "시간": "06:40:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1025, + "역명": "구서", + "시간": "07:09:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2062, + "역명": "구서", + "시간": "09:37:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1097, + "역명": "구서", + "시간": "10:03:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2120, + "역명": "구서", + "시간": "12:33:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1151, + "역명": "구서", + "시간": "12:58:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2174, + "역명": "구서", + "시간": "15:28:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1205, + "역명": "구서", + "시간": "15:53:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2228, + "역명": "구서", + "시간": "18:24:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1281, + "역명": "구서", + "시간": "18:49:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2296, + "역명": "구서", + "시간": "21:19:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1333, + "역명": "구서", + "시간": "21:47:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2338, + "역명": "구서", + "시간": "00:23:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2008, + "역명": "구서", + "시간": "06:52:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1029, + "역명": "구서", + "시간": "07:19:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2066, + "역명": "구서", + "시간": "09:47:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2010, + "역명": "구서", + "시간": "07:04:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1033, + "역명": "구서", + "시간": "07:29:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2070, + "역명": "구서", + "시간": "09:57:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1103, + "역명": "구서", + "시간": "10:22:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2126, + "역명": "구서", + "시간": "12:52:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1157, + "역명": "구서", + "시간": "13:18:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2180, + "역명": "구서", + "시간": "15:48:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1213, + "역명": "구서", + "시간": "16:17:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2236, + "역명": "구서", + "시간": "18:48:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1293, + "역명": "구서", + "시간": "19:14:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2304, + "역명": "구서", + "시간": "21:43:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1337, + "역명": "구서", + "시간": "22:07:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1003, + "역명": "구서", + "시간": "05:25:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2020, + "역명": "구서", + "시간": "07:56:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1059, + "역명": "구서", + "시간": "08:21:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2088, + "역명": "구서", + "시간": "10:51:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1121, + "역명": "구서", + "시간": "11:21:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2144, + "역명": "구서", + "시간": "13:51:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1175, + "역명": "구서", + "시간": "14:16:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2198, + "역명": "구서", + "시간": "16:46:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1235, + "역명": "구서", + "시간": "17:13:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2260, + "역명": "구서", + "시간": "19:41:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1309, + "역명": "구서", + "시간": "20:08:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2320, + "역명": "구서", + "시간": "22:38:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1347, + "역명": "구서", + "시간": "23:01:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2012, + "역명": "구서", + "시간": "07:16:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1039, + "역명": "구서", + "시간": "07:41:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2074, + "역명": "구서", + "시간": "10:09:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1107, + "역명": "구서", + "시간": "10:35:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2130, + "역명": "구서", + "시간": "13:05:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1161, + "역명": "구서", + "시간": "13:31:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2184, + "역명": "구서", + "시간": "16:01:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1217, + "역명": "구서", + "시간": "16:28:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2240, + "역명": "구서", + "시간": "18:56:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1297, + "역명": "구서", + "시간": "19:24:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 8, + "열번": 2308, + "역명": "구서", + "시간": "21:55:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 9, + "열번": 2022, + "역명": "구서", + "시간": "08:02:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1063, + "역명": "구서", + "시간": "08:29:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 9, + "열번": 2090, + "역명": "구서", + "시간": "10:57:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2014, + "역명": "구서", + "시간": "07:28:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1045, + "역명": "구서", + "시간": "07:53:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 11, + "열번": 1005, + "역명": "구서", + "시간": "05:36:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2024, + "역명": "구서", + "시간": "08:08:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1065, + "역명": "구서", + "시간": "08:33:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2092, + "역명": "구서", + "시간": "11:03:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1123, + "역명": "구서", + "시간": "11:27:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2146, + "역명": "구서", + "시간": "13:57:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1177, + "역명": "구서", + "시간": "14:23:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2200, + "역명": "구서", + "시간": "16:52:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1237, + "역명": "구서", + "시간": "17:18:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 11, + "열번": 2262, + "역명": "구서", + "시간": "19:46:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2016, + "역명": "구서", + "시간": "07:39:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1051, + "역명": "구서", + "시간": "08:05:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2082, + "역명": "구서", + "시간": "10:33:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1115, + "역명": "구서", + "시간": "11:01:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2138, + "역명": "구서", + "시간": "13:31:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1169, + "역명": "구서", + "시간": "13:57:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "구서", + "시간": "16:27:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1227, + "역명": "구서", + "시간": "16:53:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2252, + "역명": "구서", + "시간": "19:21:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1303, + "역명": "구서", + "시간": "19:44:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2314, + "역명": "구서", + "시간": "22:13:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1343, + "역명": "구서", + "시간": "22:38:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1007, + "역명": "구서", + "시간": "05:47:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2028, + "역명": "구서", + "시간": "08:19:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1071, + "역명": "구서", + "시간": "08:45:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2096, + "역명": "구서", + "시간": "11:15:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1127, + "역명": "구서", + "시간": "11:40:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2150, + "역명": "구서", + "시간": "14:10:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1181, + "역명": "구서", + "시간": "14:36:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2204, + "역명": "구서", + "시간": "17:04:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1241, + "역명": "구서", + "시간": "17:28:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2266, + "역명": "구서", + "시간": "19:56:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1313, + "역명": "구서", + "시간": "20:24:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2324, + "역명": "구서", + "시간": "22:58:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 13, + "열번": 1351, + "역명": "구서", + "시간": "23:23:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 14, + "열번": 1001, + "역명": "구서", + "시간": "05:15:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2018, + "역명": "구서", + "시간": "07:48:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1055, + "역명": "구서", + "시간": "08:13:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1009, + "역명": "구서", + "시간": "05:58:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2032, + "역명": "구서", + "시간": "08:28:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1075, + "역명": "구서", + "시간": "08:54:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2100, + "역명": "구서", + "시간": "11:28:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1131, + "역명": "구서", + "시간": "11:53:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2154, + "역명": "구서", + "시간": "14:23:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1185, + "역명": "구서", + "시간": "14:49:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2208, + "역명": "구서", + "시간": "17:21:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1249, + "역명": "구서", + "시간": "17:45:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2274, + "역명": "구서", + "시간": "20:16:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2026, + "역명": "구서", + "시간": "08:14:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1067, + "역명": "구서", + "시간": "08:37:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2036, + "역명": "구서", + "시간": "08:37:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2030, + "역명": "구서", + "시간": "08:24:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1073, + "역명": "구서", + "시간": "08:49:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2098, + "역명": "구서", + "시간": "11:21:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1129, + "역명": "구서", + "시간": "11:47:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2152, + "역명": "구서", + "시간": "14:17:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1183, + "역명": "구서", + "시간": "14:42:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2206, + "역명": "구서", + "시간": "17:16:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1247, + "역명": "구서", + "시간": "17:41:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2272, + "역명": "구서", + "시간": "20:11:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1317, + "역명": "구서", + "시간": "20:40:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2326, + "역명": "구서", + "시간": "23:08:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 18, + "열번": 7931, + "역명": "구서", + "시간": "23:38:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 19, + "열번": 1011, + "역명": "구서", + "시간": "06:09:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2038, + "역명": "구서", + "시간": "08:42:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1079, + "역명": "구서", + "시간": "09:05:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2102, + "역명": "구서", + "시간": "11:34:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1133, + "역명": "구서", + "시간": "12:00:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2156, + "역명": "구서", + "시간": "14:30:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1187, + "역명": "구서", + "시간": "14:55:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2210, + "역명": "구서", + "시간": "17:26:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1253, + "역명": "구서", + "시간": "17:53:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2278, + "역명": "구서", + "시간": "20:26:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2034, + "역명": "구서", + "시간": "08:33:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 20, + "열번": 1077, + "역명": "구서", + "시간": "08:59:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 21, + "열번": 1013, + "역명": "구서", + "시간": "06:20:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2042, + "역명": "구서", + "시간": "08:51:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1083, + "역명": "구서", + "시간": "09:17:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2106, + "역명": "구서", + "시간": "11:47:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1137, + "역명": "구서", + "시간": "12:13:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2160, + "역명": "구서", + "시간": "14:43:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1191, + "역명": "구서", + "시간": "15:08:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2214, + "역명": "구서", + "시간": "17:36:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1257, + "역명": "구서", + "시간": "18:01:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2280, + "역명": "구서", + "시간": "20:31:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1321, + "역명": "구서", + "시간": "20:56:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2330, + "역명": "구서", + "시간": "23:30:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2040, + "역명": "구서", + "시간": "08:46:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1081, + "역명": "구서", + "시간": "09:11:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2104, + "역명": "구서", + "시간": "11:41:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1135, + "역명": "구서", + "시간": "12:06:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2158, + "역명": "구서", + "시간": "14:36:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1189, + "역명": "구서", + "시간": "15:02:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2212, + "역명": "구서", + "시간": "17:31:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1255, + "역명": "구서", + "시간": "17:57:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2044, + "역명": "구서", + "시간": "08:55:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "구서", + "시간": "09:04:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1087, + "역명": "구서", + "시간": "09:30:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2110, + "역명": "구서", + "시간": "12:00:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1141, + "역명": "구서", + "시간": "12:26:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2164, + "역명": "구서", + "시간": "14:56:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1195, + "역명": "구서", + "시간": "15:21:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2218, + "역명": "구서", + "시간": "17:51:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1265, + "역명": "구서", + "시간": "18:17:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 24, + "열번": 2286, + "역명": "구서", + "시간": "20:49:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "구서", + "시간": "06:48:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2054, + "역명": "구서", + "시간": "09:18:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1091, + "역명": "구서", + "시간": "09:43:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2114, + "역명": "구서", + "시간": "12:13:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1145, + "역명": "구서", + "시간": "12:39:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2168, + "역명": "구서", + "시간": "15:09:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1199, + "역명": "구서", + "시간": "15:34:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2222, + "역명": "구서", + "시간": "18:04:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1271, + "역명": "구서", + "시간": "18:29:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2290, + "역명": "구서", + "시간": "21:01:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1329, + "역명": "구서", + "시간": "21:28:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2336, + "역명": "구서", + "시간": "00:06:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2052, + "역명": "구서", + "시간": "09:13:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1089, + "역명": "구서", + "시간": "09:37:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2112, + "역명": "구서", + "시간": "12:07:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1143, + "역명": "구서", + "시간": "12:32:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2166, + "역명": "구서", + "시간": "15:02:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1197, + "역명": "구서", + "시간": "15:28:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2220, + "역명": "구서", + "시간": "18:00:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1269, + "역명": "구서", + "시간": "18:25:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2288, + "역명": "구서", + "시간": "20:55:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1327, + "역명": "구서", + "시간": "21:20:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 26, + "열번": 2334, + "역명": "구서", + "시간": "23:54:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1023, + "역명": "구서", + "시간": "07:04:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 27, + "열번": 2060, + "역명": "구서", + "시간": "09:32:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2056, + "역명": "구서", + "시간": "09:22:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1093, + "역명": "구서", + "시간": "09:50:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2116, + "역명": "구서", + "시간": "12:20:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1147, + "역명": "구서", + "시간": "12:45:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2170, + "역명": "구서", + "시간": "15:15:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1201, + "역명": "구서", + "시간": "15:41:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2224, + "역명": "구서", + "시간": "18:12:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1275, + "역명": "구서", + "시간": "18:37:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2292, + "역명": "구서", + "시간": "21:07:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1331, + "역명": "구서", + "시간": "21:37:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1027, + "역명": "구서", + "시간": "07:14:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2064, + "역명": "구서", + "시간": "09:42:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1099, + "역명": "구서", + "시간": "10:09:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2122, + "역명": "구서", + "시간": "12:39:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1153, + "역명": "구서", + "시간": "13:05:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2176, + "역명": "구서", + "시간": "15:35:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1207, + "역명": "구서", + "시간": "15:59:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2230, + "역명": "구서", + "시간": "18:28:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1283, + "역명": "구서", + "시간": "18:53:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 29, + "열번": 2298, + "역명": "구서", + "시간": "21:25:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1037, + "역명": "구서", + "시간": "07:37:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1031, + "역명": "구서", + "시간": "07:24:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2068, + "역명": "구서", + "시간": "09:52:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1101, + "역명": "구서", + "시간": "10:16:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2124, + "역명": "구서", + "시간": "12:46:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1155, + "역명": "구서", + "시간": "13:11:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2178, + "역명": "구서", + "시간": "15:41:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1209, + "역명": "구서", + "시간": "16:05:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2232, + "역명": "구서", + "시간": "18:36:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1287, + "역명": "구서", + "시간": "19:01:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2300, + "역명": "구서", + "시간": "21:31:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1335, + "역명": "구서", + "시간": "21:57:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 32, + "열번": 1049, + "역명": "구서", + "시간": "08:01:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1035, + "역명": "구서", + "시간": "07:33:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2072, + "역명": "구서", + "시간": "10:03:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1105, + "역명": "구서", + "시간": "10:29:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2128, + "역명": "구서", + "시간": "12:59:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1159, + "역명": "구서", + "시간": "13:24:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2182, + "역명": "구서", + "시간": "15:54:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1215, + "역명": "구서", + "시간": "16:23:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2238, + "역명": "구서", + "시간": "18:52:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1295, + "역명": "구서", + "시간": "19:19:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2306, + "역명": "구서", + "시간": "21:49:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 33, + "열번": 1339, + "역명": "구서", + "시간": "22:17:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 34, + "열번": 1061, + "역명": "구서", + "시간": "08:25:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1041, + "역명": "구서", + "시간": "07:45:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2076, + "역명": "구서", + "시간": "10:15:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1109, + "역명": "구서", + "시간": "10:42:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2132, + "역명": "구서", + "시간": "13:12:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1163, + "역명": "구서", + "시간": "13:37:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2186, + "역명": "구서", + "시간": "16:07:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1219, + "역명": "구서", + "시간": "16:33:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 35, + "열번": 2242, + "역명": "구서", + "시간": "19:00:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 36, + "열번": 8904, + "역명": "구서", + "시간": "17:10:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1245, + "역명": "구서", + "시간": "17:37:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 36, + "열번": 2270, + "역명": "구서", + "시간": "20:06:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1315, + "역명": "구서", + "시간": "20:32:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1043, + "역명": "구서", + "시간": "07:49:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2078, + "역명": "구서", + "시간": "10:21:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1111, + "역명": "구서", + "시간": "10:48:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2134, + "역명": "구서", + "시간": "13:18:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1165, + "역명": "구서", + "시간": "13:44:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2188, + "역명": "구서", + "시간": "16:14:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1221, + "역명": "구서", + "시간": "16:38:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 37, + "열번": 2246, + "역명": "구서", + "시간": "19:08:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 38, + "열번": 8906, + "역명": "구서", + "시간": "17:41:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 38, + "열번": 1259, + "역명": "구서", + "시간": "18:05:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 39, + "열번": 1047, + "역명": "구서", + "시간": "07:57:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2080, + "역명": "구서", + "시간": "10:27:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1113, + "역명": "구서", + "시간": "10:55:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2136, + "역명": "구서", + "시간": "13:25:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1167, + "역명": "구서", + "시간": "13:50:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2190, + "역명": "구서", + "시간": "16:20:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1225, + "역명": "구서", + "시간": "16:48:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 39, + "열번": 2250, + "역명": "구서", + "시간": "19:16:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 40, + "열번": 8908, + "역명": "구서", + "시간": "17:56:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 40, + "열번": 1267, + "역명": "구서", + "시간": "18:21:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 41, + "열번": 1053, + "역명": "구서", + "시간": "08:09:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2084, + "역명": "구서", + "시간": "10:39:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1117, + "역명": "구서", + "시간": "11:08:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2140, + "역명": "구서", + "시간": "13:38:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1171, + "역명": "구서", + "시간": "14:03:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2194, + "역명": "구서", + "시간": "16:33:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1229, + "역명": "구서", + "시간": "16:58:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2254, + "역명": "구서", + "시간": "19:26:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1305, + "역명": "구서", + "시간": "19:52:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2316, + "역명": "구서", + "시간": "22:20:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1345, + "역명": "구서", + "시간": "22:49:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 42, + "열번": 8910, + "역명": "구서", + "시간": "18:08:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 42, + "열번": 1273, + "역명": "구서", + "시간": "18:33:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 43, + "열번": 1057, + "역명": "구서", + "시간": "08:17:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2086, + "역명": "구서", + "시간": "10:45:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1119, + "역명": "구서", + "시간": "11:14:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2142, + "역명": "구서", + "시간": "13:44:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1173, + "역명": "구서", + "시간": "14:10:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2196, + "역명": "구서", + "시간": "16:40:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1233, + "역명": "구서", + "시간": "17:08:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2258, + "역명": "구서", + "시간": "19:36:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1307, + "역명": "구서", + "시간": "20:00:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 43, + "열번": 2318, + "역명": "구서", + "시간": "22:28:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 44, + "열번": 8912, + "역명": "구서", + "시간": "18:20:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 44, + "열번": 1279, + "역명": "구서", + "시간": "18:45:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 45, + "열번": 1069, + "역명": "구서", + "시간": "08:41:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2094, + "역명": "구서", + "시간": "11:09:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1125, + "역명": "구서", + "시간": "11:34:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2148, + "역명": "구서", + "시간": "14:04:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1179, + "역명": "구서", + "시간": "14:29:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2202, + "역명": "구서", + "시간": "16:58:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1239, + "역명": "구서", + "시간": "17:23:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2264, + "역명": "구서", + "시간": "19:51:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1311, + "역명": "구서", + "시간": "20:16:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2322, + "역명": "구서", + "시간": "22:48:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 45, + "열번": 1349, + "역명": "구서", + "시간": "23:13:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 46, + "열번": 8914, + "역명": "구서", + "시간": "18:32:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 46, + "열번": 1285, + "역명": "구서", + "시간": "18:57:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 47, + "열번": 1211, + "역명": "구서", + "시간": "16:11:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 47, + "열번": 2234, + "역명": "구서", + "시간": "18:40:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 47, + "열번": 1289, + "역명": "구서", + "시간": "19:05:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 47, + "열번": 2302, + "역명": "구서", + "시간": "21:37:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 48, + "열번": 8916, + "역명": "구서", + "시간": "18:44:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 48, + "열번": 1291, + "역명": "구서", + "시간": "19:09:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 49, + "열번": 1223, + "역명": "구서", + "시간": "16:43:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 49, + "열번": 2248, + "역명": "구서", + "시간": "19:12:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 49, + "열번": 1301, + "역명": "구서", + "시간": "19:36:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 49, + "열번": 2312, + "역명": "구서", + "시간": "22:07:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 50, + "열번": 2244, + "역명": "구서", + "시간": "19:04:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 50, + "열번": 1299, + "역명": "구서", + "시간": "19:29:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 50, + "열번": 2310, + "역명": "구서", + "시간": "22:01:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 50, + "열번": 1341, + "역명": "구서", + "시간": "22:27:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 51, + "열번": 1231, + "역명": "구서", + "시간": "17:03:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 51, + "열번": 2256, + "역명": "구서", + "시간": "19:31:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 52, + "열번": 6906, + "역명": "구서", + "시간": "10:30:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 52, + "열번": 5905, + "역명": "구서", + "시간": "10:58:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 53, + "열번": 1243, + "역명": "구서", + "시간": "17:33:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 53, + "열번": 2268, + "역명": "구서", + "시간": "20:01:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 54, + "열번": 6910, + "역명": "구서", + "시간": "14:13:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 54, + "열번": 5907, + "역명": "구서", + "시간": "14:39:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 55, + "열번": 1251, + "역명": "구서", + "시간": "17:49:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 55, + "열번": 2276, + "역명": "구서", + "시간": "20:21:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 55, + "열번": 1319, + "역명": "구서", + "시간": "20:48:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 55, + "열번": 2328, + "역명": "구서", + "시간": "23:18:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 57, + "열번": 1263, + "역명": "구서", + "시간": "18:13:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 57, + "열번": 2284, + "역명": "구서", + "시간": "20:43:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 57, + "열번": 1325, + "역명": "구서", + "시간": "21:12:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 57, + "열번": 2332, + "역명": "구서", + "시간": "23:42:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 59, + "열번": 5901, + "역명": "구서", + "시간": "10:06:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 59, + "열번": 6902, + "역명": "구서", + "시간": "12:36:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 61, + "열번": 5903, + "역명": "구서", + "시간": "13:34:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 61, + "열번": 5904, + "역명": "구서", + "시간": "16:04:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "장전", + "시간": "06:12:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "장전", + "시간": "06:41:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2050, + "역명": "장전", + "시간": "09:07:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "장전", + "시간": "05:58:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "장전", + "시간": "06:32:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "장전", + "시간": "08:58:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1085, + "역명": "장전", + "시간": "09:26:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2108, + "역명": "장전", + "시간": "11:52:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1139, + "역명": "장전", + "시간": "12:21:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2162, + "역명": "장전", + "시간": "14:47:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1193, + "역명": "장전", + "시간": "15:17:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2216, + "역명": "장전", + "시간": "17:44:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1261, + "역명": "장전", + "시간": "18:11:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2282, + "역명": "장전", + "시간": "20:35:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1323, + "역명": "장전", + "시간": "21:06:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "장전", + "시간": "06:25:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "장전", + "시간": "06:59:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2058, + "역명": "장전", + "시간": "09:25:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1095, + "역명": "장전", + "시간": "09:58:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2118, + "역명": "장전", + "시간": "12:24:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1149, + "역명": "장전", + "시간": "12:54:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2172, + "역명": "장전", + "시간": "15:20:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1203, + "역명": "장전", + "시간": "15:49:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2226, + "역명": "장전", + "시간": "18:14:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1277, + "역명": "장전", + "시간": "18:43:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2294, + "역명": "장전", + "시간": "21:11:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "장전", + "시간": "06:38:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1025, + "역명": "장전", + "시간": "07:11:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2062, + "역명": "장전", + "시간": "09:35:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1097, + "역명": "장전", + "시간": "10:05:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2120, + "역명": "장전", + "시간": "12:31:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1151, + "역명": "장전", + "시간": "13:00:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2174, + "역명": "장전", + "시간": "15:26:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1205, + "역명": "장전", + "시간": "15:55:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2228, + "역명": "장전", + "시간": "18:22:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1281, + "역명": "장전", + "시간": "18:51:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2296, + "역명": "장전", + "시간": "21:17:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1333, + "역명": "장전", + "시간": "21:49:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2338, + "역명": "장전", + "시간": "00:21:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2008, + "역명": "장전", + "시간": "06:50:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1029, + "역명": "장전", + "시간": "07:21:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2066, + "역명": "장전", + "시간": "09:45:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2010, + "역명": "장전", + "시간": "07:02:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1033, + "역명": "장전", + "시간": "07:31:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2070, + "역명": "장전", + "시간": "09:55:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1103, + "역명": "장전", + "시간": "10:24:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2126, + "역명": "장전", + "시간": "12:50:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1157, + "역명": "장전", + "시간": "13:20:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2180, + "역명": "장전", + "시간": "15:46:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1213, + "역명": "장전", + "시간": "16:19:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2236, + "역명": "장전", + "시간": "18:46:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1293, + "역명": "장전", + "시간": "19:16:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2304, + "역명": "장전", + "시간": "21:41:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1337, + "역명": "장전", + "시간": "22:09:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1003, + "역명": "장전", + "시간": "05:27:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2020, + "역명": "장전", + "시간": "07:54:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1059, + "역명": "장전", + "시간": "08:23:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2088, + "역명": "장전", + "시간": "10:49:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1121, + "역명": "장전", + "시간": "11:23:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2144, + "역명": "장전", + "시간": "13:49:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1175, + "역명": "장전", + "시간": "14:18:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2198, + "역명": "장전", + "시간": "16:44:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1235, + "역명": "장전", + "시간": "17:15:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2260, + "역명": "장전", + "시간": "19:39:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1309, + "역명": "장전", + "시간": "20:10:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2320, + "역명": "장전", + "시간": "22:36:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1347, + "역명": "장전", + "시간": "23:03:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2012, + "역명": "장전", + "시간": "07:14:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1039, + "역명": "장전", + "시간": "07:43:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2074, + "역명": "장전", + "시간": "10:07:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1107, + "역명": "장전", + "시간": "10:37:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2130, + "역명": "장전", + "시간": "13:03:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1161, + "역명": "장전", + "시간": "13:33:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2184, + "역명": "장전", + "시간": "15:59:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1217, + "역명": "장전", + "시간": "16:30:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2240, + "역명": "장전", + "시간": "18:54:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1297, + "역명": "장전", + "시간": "19:26:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 8, + "열번": 2308, + "역명": "장전", + "시간": "21:53:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 9, + "열번": 2022, + "역명": "장전", + "시간": "08:00:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1063, + "역명": "장전", + "시간": "08:31:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 9, + "열번": 2090, + "역명": "장전", + "시간": "10:55:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2014, + "역명": "장전", + "시간": "07:26:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1045, + "역명": "장전", + "시간": "07:55:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 11, + "열번": 1005, + "역명": "장전", + "시간": "05:38:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2024, + "역명": "장전", + "시간": "08:06:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1065, + "역명": "장전", + "시간": "08:35:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2092, + "역명": "장전", + "시간": "11:01:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1123, + "역명": "장전", + "시간": "11:29:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2146, + "역명": "장전", + "시간": "13:55:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1177, + "역명": "장전", + "시간": "14:25:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2200, + "역명": "장전", + "시간": "16:50:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1237, + "역명": "장전", + "시간": "17:20:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 11, + "열번": 2262, + "역명": "장전", + "시간": "19:44:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2016, + "역명": "장전", + "시간": "07:37:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1051, + "역명": "장전", + "시간": "08:07:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2082, + "역명": "장전", + "시간": "10:31:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1115, + "역명": "장전", + "시간": "11:03:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2138, + "역명": "장전", + "시간": "13:29:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1169, + "역명": "장전", + "시간": "13:59:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "장전", + "시간": "16:25:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1227, + "역명": "장전", + "시간": "16:55:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2252, + "역명": "장전", + "시간": "19:19:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1303, + "역명": "장전", + "시간": "19:46:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2314, + "역명": "장전", + "시간": "22:11:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1343, + "역명": "장전", + "시간": "22:40:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1007, + "역명": "장전", + "시간": "05:49:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2028, + "역명": "장전", + "시간": "08:17:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1071, + "역명": "장전", + "시간": "08:47:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2096, + "역명": "장전", + "시간": "11:13:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1127, + "역명": "장전", + "시간": "11:42:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2150, + "역명": "장전", + "시간": "14:08:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1181, + "역명": "장전", + "시간": "14:38:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2204, + "역명": "장전", + "시간": "17:02:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1241, + "역명": "장전", + "시간": "17:30:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2266, + "역명": "장전", + "시간": "19:54:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1313, + "역명": "장전", + "시간": "20:26:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2324, + "역명": "장전", + "시간": "22:56:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 13, + "열번": 1351, + "역명": "장전", + "시간": "23:25:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 14, + "열번": 1001, + "역명": "장전", + "시간": "05:17:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2018, + "역명": "장전", + "시간": "07:46:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1055, + "역명": "장전", + "시간": "08:15:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1009, + "역명": "장전", + "시간": "06:00:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2032, + "역명": "장전", + "시간": "08:26:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1075, + "역명": "장전", + "시간": "08:56:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2100, + "역명": "장전", + "시간": "11:26:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1131, + "역명": "장전", + "시간": "11:55:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2154, + "역명": "장전", + "시간": "14:21:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1185, + "역명": "장전", + "시간": "14:51:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2208, + "역명": "장전", + "시간": "17:19:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1249, + "역명": "장전", + "시간": "17:47:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2274, + "역명": "장전", + "시간": "20:14:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2026, + "역명": "장전", + "시간": "08:12:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1067, + "역명": "장전", + "시간": "08:39:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2036, + "역명": "장전", + "시간": "08:35:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2030, + "역명": "장전", + "시간": "08:22:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1073, + "역명": "장전", + "시간": "08:51:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2098, + "역명": "장전", + "시간": "11:19:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1129, + "역명": "장전", + "시간": "11:49:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2152, + "역명": "장전", + "시간": "14:15:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1183, + "역명": "장전", + "시간": "14:44:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2206, + "역명": "장전", + "시간": "17:14:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1247, + "역명": "장전", + "시간": "17:43:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2272, + "역명": "장전", + "시간": "20:09:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1317, + "역명": "장전", + "시간": "20:42:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2326, + "역명": "장전", + "시간": "23:06:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 18, + "열번": 7931, + "역명": "장전", + "시간": "23:40:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 19, + "열번": 1011, + "역명": "장전", + "시간": "06:11:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2038, + "역명": "장전", + "시간": "08:40:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1079, + "역명": "장전", + "시간": "09:07:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2102, + "역명": "장전", + "시간": "11:32:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1133, + "역명": "장전", + "시간": "12:02:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2156, + "역명": "장전", + "시간": "14:28:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1187, + "역명": "장전", + "시간": "14:57:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2210, + "역명": "장전", + "시간": "17:24:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1253, + "역명": "장전", + "시간": "17:55:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2278, + "역명": "장전", + "시간": "20:24:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2034, + "역명": "장전", + "시간": "08:31:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 20, + "열번": 1077, + "역명": "장전", + "시간": "09:01:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 21, + "열번": 1013, + "역명": "장전", + "시간": "06:22:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2042, + "역명": "장전", + "시간": "08:49:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1083, + "역명": "장전", + "시간": "09:19:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2106, + "역명": "장전", + "시간": "11:45:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1137, + "역명": "장전", + "시간": "12:15:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2160, + "역명": "장전", + "시간": "14:41:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1191, + "역명": "장전", + "시간": "15:10:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2214, + "역명": "장전", + "시간": "17:34:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1257, + "역명": "장전", + "시간": "18:03:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2280, + "역명": "장전", + "시간": "20:29:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1321, + "역명": "장전", + "시간": "20:58:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2330, + "역명": "장전", + "시간": "23:28:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2040, + "역명": "장전", + "시간": "08:44:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1081, + "역명": "장전", + "시간": "09:13:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2104, + "역명": "장전", + "시간": "11:39:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1135, + "역명": "장전", + "시간": "12:08:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2158, + "역명": "장전", + "시간": "14:34:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1189, + "역명": "장전", + "시간": "15:04:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2212, + "역명": "장전", + "시간": "17:29:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1255, + "역명": "장전", + "시간": "17:59:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2044, + "역명": "장전", + "시간": "08:53:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "장전", + "시간": "09:02:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1087, + "역명": "장전", + "시간": "09:32:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2110, + "역명": "장전", + "시간": "11:58:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1141, + "역명": "장전", + "시간": "12:28:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2164, + "역명": "장전", + "시간": "14:54:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1195, + "역명": "장전", + "시간": "15:23:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2218, + "역명": "장전", + "시간": "17:49:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1265, + "역명": "장전", + "시간": "18:19:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 24, + "열번": 2286, + "역명": "장전", + "시간": "20:47:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "장전", + "시간": "06:50:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2054, + "역명": "장전", + "시간": "09:16:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1091, + "역명": "장전", + "시간": "09:45:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2114, + "역명": "장전", + "시간": "12:11:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1145, + "역명": "장전", + "시간": "12:41:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2168, + "역명": "장전", + "시간": "15:07:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1199, + "역명": "장전", + "시간": "15:36:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2222, + "역명": "장전", + "시간": "18:02:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1271, + "역명": "장전", + "시간": "18:31:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2290, + "역명": "장전", + "시간": "20:59:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1329, + "역명": "장전", + "시간": "21:30:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2336, + "역명": "장전", + "시간": "00:04:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2052, + "역명": "장전", + "시간": "09:11:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1089, + "역명": "장전", + "시간": "09:39:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2112, + "역명": "장전", + "시간": "12:05:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1143, + "역명": "장전", + "시간": "12:34:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2166, + "역명": "장전", + "시간": "15:00:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1197, + "역명": "장전", + "시간": "15:30:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2220, + "역명": "장전", + "시간": "17:58:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1269, + "역명": "장전", + "시간": "18:27:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2288, + "역명": "장전", + "시간": "20:53:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1327, + "역명": "장전", + "시간": "21:22:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 26, + "열번": 2334, + "역명": "장전", + "시간": "23:52:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1023, + "역명": "장전", + "시간": "07:06:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 27, + "열번": 2060, + "역명": "장전", + "시간": "09:30:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2056, + "역명": "장전", + "시간": "09:20:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1093, + "역명": "장전", + "시간": "09:52:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2116, + "역명": "장전", + "시간": "12:18:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1147, + "역명": "장전", + "시간": "12:47:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2170, + "역명": "장전", + "시간": "15:13:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1201, + "역명": "장전", + "시간": "15:43:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2224, + "역명": "장전", + "시간": "18:10:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1275, + "역명": "장전", + "시간": "18:39:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2292, + "역명": "장전", + "시간": "21:05:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1331, + "역명": "장전", + "시간": "21:39:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1027, + "역명": "장전", + "시간": "07:16:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2064, + "역명": "장전", + "시간": "09:40:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1099, + "역명": "장전", + "시간": "10:11:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2122, + "역명": "장전", + "시간": "12:37:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1153, + "역명": "장전", + "시간": "13:07:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2176, + "역명": "장전", + "시간": "15:33:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1207, + "역명": "장전", + "시간": "16:01:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2230, + "역명": "장전", + "시간": "18:26:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1283, + "역명": "장전", + "시간": "18:55:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 29, + "열번": 2298, + "역명": "장전", + "시간": "21:23:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1037, + "역명": "장전", + "시간": "07:39:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1031, + "역명": "장전", + "시간": "07:26:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2068, + "역명": "장전", + "시간": "09:50:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1101, + "역명": "장전", + "시간": "10:18:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2124, + "역명": "장전", + "시간": "12:44:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1155, + "역명": "장전", + "시간": "13:13:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2178, + "역명": "장전", + "시간": "15:39:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1209, + "역명": "장전", + "시간": "16:07:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2232, + "역명": "장전", + "시간": "18:34:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1287, + "역명": "장전", + "시간": "19:03:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2300, + "역명": "장전", + "시간": "21:29:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1335, + "역명": "장전", + "시간": "21:59:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 32, + "열번": 1049, + "역명": "장전", + "시간": "08:03:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1035, + "역명": "장전", + "시간": "07:35:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2072, + "역명": "장전", + "시간": "10:01:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1105, + "역명": "장전", + "시간": "10:31:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2128, + "역명": "장전", + "시간": "12:57:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1159, + "역명": "장전", + "시간": "13:26:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2182, + "역명": "장전", + "시간": "15:52:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1215, + "역명": "장전", + "시간": "16:25:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2238, + "역명": "장전", + "시간": "18:50:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1295, + "역명": "장전", + "시간": "19:21:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2306, + "역명": "장전", + "시간": "21:47:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 33, + "열번": 1339, + "역명": "장전", + "시간": "22:19:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 34, + "열번": 1061, + "역명": "장전", + "시간": "08:27:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1041, + "역명": "장전", + "시간": "07:47:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2076, + "역명": "장전", + "시간": "10:13:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1109, + "역명": "장전", + "시간": "10:44:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2132, + "역명": "장전", + "시간": "13:10:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1163, + "역명": "장전", + "시간": "13:39:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2186, + "역명": "장전", + "시간": "16:05:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1219, + "역명": "장전", + "시간": "16:35:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 35, + "열번": 2242, + "역명": "장전", + "시간": "18:58:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 36, + "열번": 8904, + "역명": "장전", + "시간": "17:08:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1245, + "역명": "장전", + "시간": "17:39:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 36, + "열번": 2270, + "역명": "장전", + "시간": "20:04:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1315, + "역명": "장전", + "시간": "20:34:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1043, + "역명": "장전", + "시간": "07:51:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2078, + "역명": "장전", + "시간": "10:19:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1111, + "역명": "장전", + "시간": "10:50:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2134, + "역명": "장전", + "시간": "13:16:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1165, + "역명": "장전", + "시간": "13:46:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2188, + "역명": "장전", + "시간": "16:12:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1221, + "역명": "장전", + "시간": "16:40:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 37, + "열번": 2246, + "역명": "장전", + "시간": "19:06:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 38, + "열번": 8906, + "역명": "장전", + "시간": "17:39:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 38, + "열번": 1259, + "역명": "장전", + "시간": "18:07:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 39, + "열번": 1047, + "역명": "장전", + "시간": "07:59:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2080, + "역명": "장전", + "시간": "10:25:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1113, + "역명": "장전", + "시간": "10:57:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2136, + "역명": "장전", + "시간": "13:23:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1167, + "역명": "장전", + "시간": "13:52:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2190, + "역명": "장전", + "시간": "16:18:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1225, + "역명": "장전", + "시간": "16:50:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 39, + "열번": 2250, + "역명": "장전", + "시간": "19:14:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 40, + "열번": 8908, + "역명": "장전", + "시간": "17:54:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 40, + "열번": 1267, + "역명": "장전", + "시간": "18:23:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 41, + "열번": 1053, + "역명": "장전", + "시간": "08:11:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2084, + "역명": "장전", + "시간": "10:37:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1117, + "역명": "장전", + "시간": "11:10:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2140, + "역명": "장전", + "시간": "13:36:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1171, + "역명": "장전", + "시간": "14:05:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2194, + "역명": "장전", + "시간": "16:31:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1229, + "역명": "장전", + "시간": "17:00:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2254, + "역명": "장전", + "시간": "19:24:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1305, + "역명": "장전", + "시간": "19:54:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2316, + "역명": "장전", + "시간": "22:18:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1345, + "역명": "장전", + "시간": "22:51:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 42, + "열번": 8910, + "역명": "장전", + "시간": "18:06:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 42, + "열번": 1273, + "역명": "장전", + "시간": "18:35:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 43, + "열번": 1057, + "역명": "장전", + "시간": "08:19:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2086, + "역명": "장전", + "시간": "10:43:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1119, + "역명": "장전", + "시간": "11:16:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2142, + "역명": "장전", + "시간": "13:42:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1173, + "역명": "장전", + "시간": "14:12:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2196, + "역명": "장전", + "시간": "16:38:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1233, + "역명": "장전", + "시간": "17:10:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2258, + "역명": "장전", + "시간": "19:34:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1307, + "역명": "장전", + "시간": "20:02:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 43, + "열번": 2318, + "역명": "장전", + "시간": "22:26:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 44, + "열번": 8912, + "역명": "장전", + "시간": "18:18:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 44, + "열번": 1279, + "역명": "장전", + "시간": "18:47:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 45, + "열번": 1069, + "역명": "장전", + "시간": "08:43:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2094, + "역명": "장전", + "시간": "11:07:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1125, + "역명": "장전", + "시간": "11:36:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2148, + "역명": "장전", + "시간": "14:02:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1179, + "역명": "장전", + "시간": "14:31:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2202, + "역명": "장전", + "시간": "16:56:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1239, + "역명": "장전", + "시간": "17:25:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2264, + "역명": "장전", + "시간": "19:49:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1311, + "역명": "장전", + "시간": "20:18:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2322, + "역명": "장전", + "시간": "22:46:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 45, + "열번": 1349, + "역명": "장전", + "시간": "23:15:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 46, + "열번": 8914, + "역명": "장전", + "시간": "18:30:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 46, + "열번": 1285, + "역명": "장전", + "시간": "18:59:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 47, + "열번": 1211, + "역명": "장전", + "시간": "16:13:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 47, + "열번": 2234, + "역명": "장전", + "시간": "18:38:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 47, + "열번": 1289, + "역명": "장전", + "시간": "19:07:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 47, + "열번": 2302, + "역명": "장전", + "시간": "21:35:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 48, + "열번": 8916, + "역명": "장전", + "시간": "18:42:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 48, + "열번": 1291, + "역명": "장전", + "시간": "19:11:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 49, + "열번": 1223, + "역명": "장전", + "시간": "16:45:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 49, + "열번": 2248, + "역명": "장전", + "시간": "19:10:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 49, + "열번": 1301, + "역명": "장전", + "시간": "19:38:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 49, + "열번": 2312, + "역명": "장전", + "시간": "22:05:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 50, + "열번": 2244, + "역명": "장전", + "시간": "19:02:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 50, + "열번": 1299, + "역명": "장전", + "시간": "19:31:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 50, + "열번": 2310, + "역명": "장전", + "시간": "21:59:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 50, + "열번": 1341, + "역명": "장전", + "시간": "22:29:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 51, + "열번": 1231, + "역명": "장전", + "시간": "17:05:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 51, + "열번": 2256, + "역명": "장전", + "시간": "19:29:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 52, + "열번": 6906, + "역명": "장전", + "시간": "10:28:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 52, + "열번": 5905, + "역명": "장전", + "시간": "11:00:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 53, + "열번": 1243, + "역명": "장전", + "시간": "17:35:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 53, + "열번": 2268, + "역명": "장전", + "시간": "19:59:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 54, + "열번": 6910, + "역명": "장전", + "시간": "14:11:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 54, + "열번": 5907, + "역명": "장전", + "시간": "14:41:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 55, + "열번": 1251, + "역명": "장전", + "시간": "17:51:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 55, + "열번": 2276, + "역명": "장전", + "시간": "20:19:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 55, + "열번": 1319, + "역명": "장전", + "시간": "20:50:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 55, + "열번": 2328, + "역명": "장전", + "시간": "23:16:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 57, + "열번": 1263, + "역명": "장전", + "시간": "18:15:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 57, + "열번": 2284, + "역명": "장전", + "시간": "20:41:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 57, + "열번": 1325, + "역명": "장전", + "시간": "21:14:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 57, + "열번": 2332, + "역명": "장전", + "시간": "23:40:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 59, + "열번": 5901, + "역명": "장전", + "시간": "10:08:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 59, + "열번": 6902, + "역명": "장전", + "시간": "12:34:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 61, + "열번": 5903, + "역명": "장전", + "시간": "13:36:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 61, + "열번": 5904, + "역명": "장전", + "시간": "16:02:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "부산대학앞", + "시간": "06:10:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "부산대학앞", + "시간": "06:43:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2050, + "역명": "부산대학앞", + "시간": "09:05:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "부산대학앞", + "시간": "05:56:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "부산대학앞", + "시간": "06:34:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "부산대학앞", + "시간": "08:56:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1085, + "역명": "부산대학앞", + "시간": "09:27:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2108, + "역명": "부산대학앞", + "시간": "11:50:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1139, + "역명": "부산대학앞", + "시간": "12:23:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2162, + "역명": "부산대학앞", + "시간": "14:46:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1193, + "역명": "부산대학앞", + "시간": "15:18:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2216, + "역명": "부산대학앞", + "시간": "17:43:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1261, + "역명": "부산대학앞", + "시간": "18:12:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2282, + "역명": "부산대학앞", + "시간": "20:34:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1323, + "역명": "부산대학앞", + "시간": "21:07:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "부산대학앞", + "시간": "06:24:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "부산대학앞", + "시간": "07:01:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2058, + "역명": "부산대학앞", + "시간": "09:24:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1095, + "역명": "부산대학앞", + "시간": "10:00:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2118, + "역명": "부산대학앞", + "시간": "12:23:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1149, + "역명": "부산대학앞", + "시간": "12:55:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2172, + "역명": "부산대학앞", + "시간": "15:18:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1203, + "역명": "부산대학앞", + "시간": "15:50:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2226, + "역명": "부산대학앞", + "시간": "18:13:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1277, + "역명": "부산대학앞", + "시간": "18:44:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2294, + "역명": "부산대학앞", + "시간": "21:10:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "부산대학앞", + "시간": "06:36:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1025, + "역명": "부산대학앞", + "시간": "07:12:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2062, + "역명": "부산대학앞", + "시간": "09:34:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1097, + "역명": "부산대학앞", + "시간": "10:06:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2120, + "역명": "부산대학앞", + "시간": "12:29:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1151, + "역명": "부산대학앞", + "시간": "13:02:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2174, + "역명": "부산대학앞", + "시간": "15:25:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1205, + "역명": "부산대학앞", + "시간": "15:56:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2228, + "역명": "부산대학앞", + "시간": "18:21:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1281, + "역명": "부산대학앞", + "시간": "18:52:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2296, + "역명": "부산대학앞", + "시간": "21:16:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1333, + "역명": "부산대학앞", + "시간": "21:50:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2338, + "역명": "부산대학앞", + "시간": "00:19:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2008, + "역명": "부산대학앞", + "시간": "06:48:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1029, + "역명": "부산대학앞", + "시간": "07:22:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2066, + "역명": "부산대학앞", + "시간": "09:44:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2010, + "역명": "부산대학앞", + "시간": "07:00:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1033, + "역명": "부산대학앞", + "시간": "07:32:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2070, + "역명": "부산대학앞", + "시간": "09:54:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1103, + "역명": "부산대학앞", + "시간": "10:26:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2126, + "역명": "부산대학앞", + "시간": "12:49:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1157, + "역명": "부산대학앞", + "시간": "13:21:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2180, + "역명": "부산대학앞", + "시간": "15:44:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1213, + "역명": "부산대학앞", + "시간": "16:20:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2236, + "역명": "부산대학앞", + "시간": "18:45:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1293, + "역명": "부산대학앞", + "시간": "19:17:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2304, + "역명": "부산대학앞", + "시간": "21:40:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1337, + "역명": "부산대학앞", + "시간": "22:10:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1003, + "역명": "부산대학앞", + "시간": "05:29:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2020, + "역명": "부산대학앞", + "시간": "07:53:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1059, + "역명": "부산대학앞", + "시간": "08:24:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2088, + "역명": "부산대학앞", + "시간": "10:48:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1121, + "역명": "부산대학앞", + "시간": "11:24:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2144, + "역명": "부산대학앞", + "시간": "13:47:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1175, + "역명": "부산대학앞", + "시간": "14:20:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2198, + "역명": "부산대학앞", + "시간": "16:43:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1235, + "역명": "부산대학앞", + "시간": "17:16:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2260, + "역명": "부산대학앞", + "시간": "19:38:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1309, + "역명": "부산대학앞", + "시간": "20:11:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2320, + "역명": "부산대학앞", + "시간": "22:35:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1347, + "역명": "부산대학앞", + "시간": "23:04:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2012, + "역명": "부산대학앞", + "시간": "07:12:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1039, + "역명": "부산대학앞", + "시간": "07:44:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2074, + "역명": "부산대학앞", + "시간": "10:06:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1107, + "역명": "부산대학앞", + "시간": "10:39:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2130, + "역명": "부산대학앞", + "시간": "13:02:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1161, + "역명": "부산대학앞", + "시간": "13:34:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2184, + "역명": "부산대학앞", + "시간": "15:57:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1217, + "역명": "부산대학앞", + "시간": "16:31:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2240, + "역명": "부산대학앞", + "시간": "18:53:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1297, + "역명": "부산대학앞", + "시간": "19:27:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 8, + "열번": 2308, + "역명": "부산대학앞", + "시간": "21:52:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 9, + "열번": 2022, + "역명": "부산대학앞", + "시간": "07:59:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1063, + "역명": "부산대학앞", + "시간": "08:32:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 9, + "열번": 2090, + "역명": "부산대학앞", + "시간": "10:54:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2014, + "역명": "부산대학앞", + "시간": "07:24:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1045, + "역명": "부산대학앞", + "시간": "07:56:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 11, + "열번": 1005, + "역명": "부산대학앞", + "시간": "05:40:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2024, + "역명": "부산대학앞", + "시간": "08:05:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1065, + "역명": "부산대학앞", + "시간": "08:36:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2092, + "역명": "부산대학앞", + "시간": "11:00:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1123, + "역명": "부산대학앞", + "시간": "11:31:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2146, + "역명": "부산대학앞", + "시간": "13:54:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1177, + "역명": "부산대학앞", + "시간": "14:26:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2200, + "역명": "부산대학앞", + "시간": "16:49:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1237, + "역명": "부산대학앞", + "시간": "17:21:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 11, + "열번": 2262, + "역명": "부산대학앞", + "시간": "19:43:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2016, + "역명": "부산대학앞", + "시간": "07:35:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1051, + "역명": "부산대학앞", + "시간": "08:08:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2082, + "역명": "부산대학앞", + "시간": "10:30:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1115, + "역명": "부산대학앞", + "시간": "11:05:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2138, + "역명": "부산대학앞", + "시간": "13:28:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1169, + "역명": "부산대학앞", + "시간": "14:00:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "부산대학앞", + "시간": "16:23:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1227, + "역명": "부산대학앞", + "시간": "16:56:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2252, + "역명": "부산대학앞", + "시간": "19:18:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1303, + "역명": "부산대학앞", + "시간": "19:47:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2314, + "역명": "부산대학앞", + "시간": "22:10:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1343, + "역명": "부산대학앞", + "시간": "22:41:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1007, + "역명": "부산대학앞", + "시간": "05:51:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2028, + "역명": "부산대학앞", + "시간": "08:15:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1071, + "역명": "부산대학앞", + "시간": "08:48:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2096, + "역명": "부산대학앞", + "시간": "11:12:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1127, + "역명": "부산대학앞", + "시간": "11:44:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2150, + "역명": "부산대학앞", + "시간": "14:07:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1181, + "역명": "부산대학앞", + "시간": "14:39:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2204, + "역명": "부산대학앞", + "시간": "17:01:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1241, + "역명": "부산대학앞", + "시간": "17:31:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2266, + "역명": "부산대학앞", + "시간": "19:53:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1313, + "역명": "부산대학앞", + "시간": "20:27:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2324, + "역명": "부산대학앞", + "시간": "22:55:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 13, + "열번": 1351, + "역명": "부산대학앞", + "시간": "23:27:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 14, + "열번": 1001, + "역명": "부산대학앞", + "시간": "05:19:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2018, + "역명": "부산대학앞", + "시간": "07:44:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1055, + "역명": "부산대학앞", + "시간": "08:16:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1009, + "역명": "부산대학앞", + "시간": "06:02:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2032, + "역명": "부산대학앞", + "시간": "08:25:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1075, + "역명": "부산대학앞", + "시간": "08:57:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2100, + "역명": "부산대학앞", + "시간": "11:24:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1131, + "역명": "부산대학앞", + "시간": "11:57:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2154, + "역명": "부산대학앞", + "시간": "14:20:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1185, + "역명": "부산대학앞", + "시간": "14:52:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2208, + "역명": "부산대학앞", + "시간": "17:18:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1249, + "역명": "부산대학앞", + "시간": "17:48:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2274, + "역명": "부산대학앞", + "시간": "20:13:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2026, + "역명": "부산대학앞", + "시간": "08:10:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1067, + "역명": "부산대학앞", + "시간": "08:40:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2036, + "역명": "부산대학앞", + "시간": "08:34:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2030, + "역명": "부산대학앞", + "시간": "08:20:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1073, + "역명": "부산대학앞", + "시간": "08:52:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2098, + "역명": "부산대학앞", + "시간": "11:18:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1129, + "역명": "부산대학앞", + "시간": "11:50:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2152, + "역명": "부산대학앞", + "시간": "14:13:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1183, + "역명": "부산대학앞", + "시간": "14:46:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2206, + "역명": "부산대학앞", + "시간": "17:13:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1247, + "역명": "부산대학앞", + "시간": "17:44:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2272, + "역명": "부산대학앞", + "시간": "20:08:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1317, + "역명": "부산대학앞", + "시간": "20:43:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2326, + "역명": "부산대학앞", + "시간": "23:05:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 18, + "열번": 7931, + "역명": "부산대학앞", + "시간": "23:42:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 19, + "열번": 1011, + "역명": "부산대학앞", + "시간": "06:13:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2038, + "역명": "부산대학앞", + "시간": "08:38:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1079, + "역명": "부산대학앞", + "시간": "09:09:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2102, + "역명": "부산대학앞", + "시간": "11:31:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1133, + "역명": "부산대학앞", + "시간": "12:03:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2156, + "역명": "부산대학앞", + "시간": "14:26:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1187, + "역명": "부산대학앞", + "시간": "14:59:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2210, + "역명": "부산대학앞", + "시간": "17:23:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1253, + "역명": "부산대학앞", + "시간": "17:56:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2278, + "역명": "부산대학앞", + "시간": "20:23:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2034, + "역명": "부산대학앞", + "시간": "08:29:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 20, + "열번": 1077, + "역명": "부산대학앞", + "시간": "09:03:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 21, + "열번": 1013, + "역명": "부산대학앞", + "시간": "06:24:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2042, + "역명": "부산대학앞", + "시간": "08:47:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1083, + "역명": "부산대학앞", + "시간": "09:21:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2106, + "역명": "부산대학앞", + "시간": "11:44:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1137, + "역명": "부산대학앞", + "시간": "12:16:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2160, + "역명": "부산대학앞", + "시간": "14:39:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1191, + "역명": "부산대학앞", + "시간": "15:12:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2214, + "역명": "부산대학앞", + "시간": "17:33:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1257, + "역명": "부산대학앞", + "시간": "18:04:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2280, + "역명": "부산대학앞", + "시간": "20:28:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1321, + "역명": "부산대학앞", + "시간": "20:59:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2330, + "역명": "부산대학앞", + "시간": "23:27:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2040, + "역명": "부산대학앞", + "시간": "08:43:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1081, + "역명": "부산대학앞", + "시간": "09:15:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2104, + "역명": "부산대학앞", + "시간": "11:37:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1135, + "역명": "부산대학앞", + "시간": "12:10:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2158, + "역명": "부산대학앞", + "시간": "14:33:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1189, + "역명": "부산대학앞", + "시간": "15:05:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2212, + "역명": "부산대학앞", + "시간": "17:28:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1255, + "역명": "부산대학앞", + "시간": "18:00:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2044, + "역명": "부산대학앞", + "시간": "08:52:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "부산대학앞", + "시간": "09:01:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1087, + "역명": "부산대학앞", + "시간": "09:34:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2110, + "역명": "부산대학앞", + "시간": "11:57:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1141, + "역명": "부산대학앞", + "시간": "12:29:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2164, + "역명": "부산대학앞", + "시간": "14:52:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1195, + "역명": "부산대학앞", + "시간": "15:25:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2218, + "역명": "부산대학앞", + "시간": "17:48:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1265, + "역명": "부산대학앞", + "시간": "18:20:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 24, + "열번": 2286, + "역명": "부산대학앞", + "시간": "20:46:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "부산대학앞", + "시간": "06:52:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2054, + "역명": "부산대학앞", + "시간": "09:14:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1091, + "역명": "부산대학앞", + "시간": "09:47:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2114, + "역명": "부산대학앞", + "시간": "12:10:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1145, + "역명": "부산대학앞", + "시간": "12:42:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2168, + "역명": "부산대학앞", + "시간": "15:05:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1199, + "역명": "부산대학앞", + "시간": "15:38:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2222, + "역명": "부산대학앞", + "시간": "18:01:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1271, + "역명": "부산대학앞", + "시간": "18:32:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2290, + "역명": "부산대학앞", + "시간": "20:58:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1329, + "역명": "부산대학앞", + "시간": "21:31:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2336, + "역명": "부산대학앞", + "시간": "00:02:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2052, + "역명": "부산대학앞", + "시간": "09:10:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1089, + "역명": "부산대학앞", + "시간": "09:40:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2112, + "역명": "부산대학앞", + "시간": "12:03:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1143, + "역명": "부산대학앞", + "시간": "12:36:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2166, + "역명": "부산대학앞", + "시간": "14:59:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1197, + "역명": "부산대학앞", + "시간": "15:31:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2220, + "역명": "부산대학앞", + "시간": "17:57:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1269, + "역명": "부산대학앞", + "시간": "18:28:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2288, + "역명": "부산대학앞", + "시간": "20:52:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1327, + "역명": "부산대학앞", + "시간": "21:23:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 26, + "열번": 2334, + "역명": "부산대학앞", + "시간": "23:51:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1023, + "역명": "부산대학앞", + "시간": "07:07:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 27, + "열번": 2060, + "역명": "부산대학앞", + "시간": "09:29:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2056, + "역명": "부산대학앞", + "시간": "09:19:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1093, + "역명": "부산대학앞", + "시간": "09:53:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2116, + "역명": "부산대학앞", + "시간": "12:16:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1147, + "역명": "부산대학앞", + "시간": "12:49:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2170, + "역명": "부산대학앞", + "시간": "15:12:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1201, + "역명": "부산대학앞", + "시간": "15:44:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2224, + "역명": "부산대학앞", + "시간": "18:09:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1275, + "역명": "부산대학앞", + "시간": "18:40:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2292, + "역명": "부산대학앞", + "시간": "21:04:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1331, + "역명": "부산대학앞", + "시간": "21:40:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1027, + "역명": "부산대학앞", + "시간": "07:17:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2064, + "역명": "부산대학앞", + "시간": "09:39:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1099, + "역명": "부산대학앞", + "시간": "10:13:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2122, + "역명": "부산대학앞", + "시간": "12:36:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1153, + "역명": "부산대학앞", + "시간": "13:08:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2176, + "역명": "부산대학앞", + "시간": "15:31:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1207, + "역명": "부산대학앞", + "시간": "16:02:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2230, + "역명": "부산대학앞", + "시간": "18:25:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1283, + "역명": "부산대학앞", + "시간": "18:56:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 29, + "열번": 2298, + "역명": "부산대학앞", + "시간": "21:22:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1037, + "역명": "부산대학앞", + "시간": "07:40:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1031, + "역명": "부산대학앞", + "시간": "07:27:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2068, + "역명": "부산대학앞", + "시간": "09:49:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1101, + "역명": "부산대학앞", + "시간": "10:19:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2124, + "역명": "부산대학앞", + "시간": "12:42:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1155, + "역명": "부산대학앞", + "시간": "13:15:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2178, + "역명": "부산대학앞", + "시간": "15:38:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1209, + "역명": "부산대학앞", + "시간": "16:08:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2232, + "역명": "부산대학앞", + "시간": "18:33:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1287, + "역명": "부산대학앞", + "시간": "19:04:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2300, + "역명": "부산대학앞", + "시간": "21:28:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1335, + "역명": "부산대학앞", + "시간": "22:00:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 32, + "열번": 1049, + "역명": "부산대학앞", + "시간": "08:04:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1035, + "역명": "부산대학앞", + "시간": "07:36:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2072, + "역명": "부산대학앞", + "시간": "10:00:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1105, + "역명": "부산대학앞", + "시간": "10:32:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2128, + "역명": "부산대학앞", + "시간": "12:55:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1159, + "역명": "부산대학앞", + "시간": "13:28:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2182, + "역명": "부산대학앞", + "시간": "15:51:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1215, + "역명": "부산대학앞", + "시간": "16:26:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2238, + "역명": "부산대학앞", + "시간": "18:49:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1295, + "역명": "부산대학앞", + "시간": "19:22:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2306, + "역명": "부산대학앞", + "시간": "21:46:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 33, + "열번": 1339, + "역명": "부산대학앞", + "시간": "22:20:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 34, + "열번": 1061, + "역명": "부산대학앞", + "시간": "08:28:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1041, + "역명": "부산대학앞", + "시간": "07:48:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2076, + "역명": "부산대학앞", + "시간": "10:12:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1109, + "역명": "부산대학앞", + "시간": "10:45:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2132, + "역명": "부산대학앞", + "시간": "13:08:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1163, + "역명": "부산대학앞", + "시간": "13:41:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2186, + "역명": "부산대학앞", + "시간": "16:04:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1219, + "역명": "부산대학앞", + "시간": "16:36:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 35, + "열번": 2242, + "역명": "부산대학앞", + "시간": "18:57:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 36, + "열번": 8904, + "역명": "부산대학앞", + "시간": "17:07:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1245, + "역명": "부산대학앞", + "시간": "17:40:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 36, + "열번": 2270, + "역명": "부산대학앞", + "시간": "20:03:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1315, + "역명": "부산대학앞", + "시간": "20:35:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1043, + "역명": "부산대학앞", + "시간": "07:52:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2078, + "역명": "부산대학앞", + "시간": "10:18:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1111, + "역명": "부산대학앞", + "시간": "10:52:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2134, + "역명": "부산대학앞", + "시간": "13:15:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1165, + "역명": "부산대학앞", + "시간": "13:47:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2188, + "역명": "부산대학앞", + "시간": "16:10:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1221, + "역명": "부산대학앞", + "시간": "16:41:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 37, + "열번": 2246, + "역명": "부산대학앞", + "시간": "19:05:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 38, + "열번": 8906, + "역명": "부산대학앞", + "시간": "17:38:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 38, + "열번": 1259, + "역명": "부산대학앞", + "시간": "18:08:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 39, + "열번": 1047, + "역명": "부산대학앞", + "시간": "08:00:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2080, + "역명": "부산대학앞", + "시간": "10:24:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1113, + "역명": "부산대학앞", + "시간": "10:58:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2136, + "역명": "부산대학앞", + "시간": "13:21:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1167, + "역명": "부산대학앞", + "시간": "13:54:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2190, + "역명": "부산대학앞", + "시간": "16:17:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1225, + "역명": "부산대학앞", + "시간": "16:51:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 39, + "열번": 2250, + "역명": "부산대학앞", + "시간": "19:13:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 40, + "열번": 8908, + "역명": "부산대학앞", + "시간": "17:53:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 40, + "열번": 1267, + "역명": "부산대학앞", + "시간": "18:24:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 41, + "열번": 1053, + "역명": "부산대학앞", + "시간": "08:12:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2084, + "역명": "부산대학앞", + "시간": "10:36:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1117, + "역명": "부산대학앞", + "시간": "11:11:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2140, + "역명": "부산대학앞", + "시간": "13:34:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1171, + "역명": "부산대학앞", + "시간": "14:07:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2194, + "역명": "부산대학앞", + "시간": "16:30:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1229, + "역명": "부산대학앞", + "시간": "17:01:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2254, + "역명": "부산대학앞", + "시간": "19:23:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1305, + "역명": "부산대학앞", + "시간": "19:55:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2316, + "역명": "부산대학앞", + "시간": "22:17:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1345, + "역명": "부산대학앞", + "시간": "22:52:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 42, + "열번": 8910, + "역명": "부산대학앞", + "시간": "18:05:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 42, + "열번": 1273, + "역명": "부산대학앞", + "시간": "18:36:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 43, + "열번": 1057, + "역명": "부산대학앞", + "시간": "08:20:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2086, + "역명": "부산대학앞", + "시간": "10:42:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1119, + "역명": "부산대학앞", + "시간": "11:18:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2142, + "역명": "부산대학앞", + "시간": "13:41:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1173, + "역명": "부산대학앞", + "시간": "14:13:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2196, + "역명": "부산대학앞", + "시간": "16:36:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1233, + "역명": "부산대학앞", + "시간": "17:11:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2258, + "역명": "부산대학앞", + "시간": "19:33:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1307, + "역명": "부산대학앞", + "시간": "20:03:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 43, + "열번": 2318, + "역명": "부산대학앞", + "시간": "22:25:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 44, + "열번": 8912, + "역명": "부산대학앞", + "시간": "18:17:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 44, + "열번": 1279, + "역명": "부산대학앞", + "시간": "18:48:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 45, + "열번": 1069, + "역명": "부산대학앞", + "시간": "08:44:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2094, + "역명": "부산대학앞", + "시간": "11:06:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1125, + "역명": "부산대학앞", + "시간": "11:37:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2148, + "역명": "부산대학앞", + "시간": "14:00:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1179, + "역명": "부산대학앞", + "시간": "14:33:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2202, + "역명": "부산대학앞", + "시간": "16:55:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1239, + "역명": "부산대학앞", + "시간": "17:26:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2264, + "역명": "부산대학앞", + "시간": "19:48:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1311, + "역명": "부산대학앞", + "시간": "20:19:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2322, + "역명": "부산대학앞", + "시간": "22:45:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 45, + "열번": 1349, + "역명": "부산대학앞", + "시간": "23:16:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 46, + "열번": 8914, + "역명": "부산대학앞", + "시간": "18:29:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 46, + "열번": 1285, + "역명": "부산대학앞", + "시간": "19:00:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 47, + "열번": 1211, + "역명": "부산대학앞", + "시간": "16:14:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 47, + "열번": 2234, + "역명": "부산대학앞", + "시간": "18:37:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 47, + "열번": 1289, + "역명": "부산대학앞", + "시간": "19:08:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 47, + "열번": 2302, + "역명": "부산대학앞", + "시간": "21:34:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 48, + "열번": 8916, + "역명": "부산대학앞", + "시간": "18:41:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 48, + "열번": 1291, + "역명": "부산대학앞", + "시간": "19:12:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 49, + "열번": 1223, + "역명": "부산대학앞", + "시간": "16:46:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 49, + "열번": 2248, + "역명": "부산대학앞", + "시간": "19:09:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 49, + "열번": 1301, + "역명": "부산대학앞", + "시간": "19:39:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 49, + "열번": 2312, + "역명": "부산대학앞", + "시간": "22:04:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 50, + "열번": 2244, + "역명": "부산대학앞", + "시간": "19:01:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 50, + "열번": 1299, + "역명": "부산대학앞", + "시간": "19:32:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 50, + "열번": 2310, + "역명": "부산대학앞", + "시간": "21:58:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 50, + "열번": 1341, + "역명": "부산대학앞", + "시간": "22:30:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 51, + "열번": 1231, + "역명": "부산대학앞", + "시간": "17:06:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 51, + "열번": 2256, + "역명": "부산대학앞", + "시간": "19:28:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 52, + "열번": 6906, + "역명": "부산대학앞", + "시간": "10:27:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 52, + "열번": 5905, + "역명": "부산대학앞", + "시간": "11:01:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 53, + "열번": 1243, + "역명": "부산대학앞", + "시간": "17:36:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 53, + "열번": 2268, + "역명": "부산대학앞", + "시간": "19:58:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 54, + "열번": 6910, + "역명": "부산대학앞", + "시간": "14:10:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 54, + "열번": 5907, + "역명": "부산대학앞", + "시간": "14:42:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 55, + "열번": 1251, + "역명": "부산대학앞", + "시간": "17:52:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 55, + "열번": 2276, + "역명": "부산대학앞", + "시간": "20:18:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 55, + "열번": 1319, + "역명": "부산대학앞", + "시간": "20:51:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 55, + "열번": 2328, + "역명": "부산대학앞", + "시간": "23:15:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 57, + "열번": 1263, + "역명": "부산대학앞", + "시간": "18:16:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 57, + "열번": 2284, + "역명": "부산대학앞", + "시간": "20:40:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 57, + "열번": 1325, + "역명": "부산대학앞", + "시간": "21:15:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 57, + "열번": 2332, + "역명": "부산대학앞", + "시간": "23:39:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 59, + "열번": 5901, + "역명": "부산대학앞", + "시간": "10:09:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 59, + "열번": 6902, + "역명": "부산대학앞", + "시간": "12:32:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 61, + "열번": 5903, + "역명": "부산대학앞", + "시간": "13:37:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 61, + "열번": 5904, + "역명": "부산대학앞", + "시간": "16:00:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "온천장", + "시간": "06:08:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "온천장", + "시간": "06:45:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2050, + "역명": "온천장", + "시간": "09:03:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "온천장", + "시간": "05:54:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "온천장", + "시간": "06:36:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "온천장", + "시간": "08:54:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1085, + "역명": "온천장", + "시간": "09:29:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2108, + "역명": "온천장", + "시간": "11:48:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1139, + "역명": "온천장", + "시간": "12:25:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2162, + "역명": "온천장", + "시간": "14:44:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1193, + "역명": "온천장", + "시간": "15:20:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2216, + "역명": "온천장", + "시간": "17:41:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1261, + "역명": "온천장", + "시간": "18:14:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2282, + "역명": "온천장", + "시간": "20:32:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1323, + "역명": "온천장", + "시간": "21:09:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "온천장", + "시간": "06:22:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "온천장", + "시간": "07:03:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2058, + "역명": "온천장", + "시간": "09:22:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1095, + "역명": "온천장", + "시간": "10:02:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2118, + "역명": "온천장", + "시간": "12:21:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1149, + "역명": "온천장", + "시간": "12:57:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2172, + "역명": "온천장", + "시간": "15:16:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1203, + "역명": "온천장", + "시간": "15:52:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2226, + "역명": "온천장", + "시간": "18:11:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1277, + "역명": "온천장", + "시간": "18:46:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2294, + "역명": "온천장", + "시간": "21:08:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "온천장", + "시간": "06:34:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1025, + "역명": "온천장", + "시간": "07:14:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2062, + "역명": "온천장", + "시간": "09:32:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1097, + "역명": "온천장", + "시간": "10:08:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2120, + "역명": "온천장", + "시간": "12:27:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1151, + "역명": "온천장", + "시간": "13:04:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2174, + "역명": "온천장", + "시간": "15:23:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1205, + "역명": "온천장", + "시간": "15:58:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2228, + "역명": "온천장", + "시간": "18:19:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1281, + "역명": "온천장", + "시간": "18:54:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2296, + "역명": "온천장", + "시간": "21:14:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1333, + "역명": "온천장", + "시간": "21:52:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2338, + "역명": "온천장", + "시간": "00:17:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2008, + "역명": "온천장", + "시간": "06:46:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1029, + "역명": "온천장", + "시간": "07:24:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2066, + "역명": "온천장", + "시간": "09:42:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2010, + "역명": "온천장", + "시간": "06:58:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1033, + "역명": "온천장", + "시간": "07:34:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2070, + "역명": "온천장", + "시간": "09:52:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1103, + "역명": "온천장", + "시간": "10:28:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2126, + "역명": "온천장", + "시간": "12:47:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1157, + "역명": "온천장", + "시간": "13:23:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2180, + "역명": "온천장", + "시간": "15:42:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1213, + "역명": "온천장", + "시간": "16:22:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2236, + "역명": "온천장", + "시간": "18:43:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1293, + "역명": "온천장", + "시간": "19:19:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2304, + "역명": "온천장", + "시간": "21:38:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1337, + "역명": "온천장", + "시간": "22:12:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1003, + "역명": "온천장", + "시간": "05:31:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2020, + "역명": "온천장", + "시간": "07:51:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1059, + "역명": "온천장", + "시간": "08:26:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2088, + "역명": "온천장", + "시간": "10:46:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1121, + "역명": "온천장", + "시간": "11:26:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2144, + "역명": "온천장", + "시간": "13:45:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1175, + "역명": "온천장", + "시간": "14:22:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2198, + "역명": "온천장", + "시간": "16:41:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1235, + "역명": "온천장", + "시간": "17:18:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2260, + "역명": "온천장", + "시간": "19:36:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1309, + "역명": "온천장", + "시간": "20:13:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2320, + "역명": "온천장", + "시간": "22:33:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1347, + "역명": "온천장", + "시간": "23:06:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2012, + "역명": "온천장", + "시간": "07:10:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1039, + "역명": "온천장", + "시간": "07:46:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2074, + "역명": "온천장", + "시간": "10:04:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1107, + "역명": "온천장", + "시간": "10:41:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2130, + "역명": "온천장", + "시간": "13:00:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1161, + "역명": "온천장", + "시간": "13:36:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2184, + "역명": "온천장", + "시간": "15:55:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1217, + "역명": "온천장", + "시간": "16:33:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2240, + "역명": "온천장", + "시간": "18:51:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1297, + "역명": "온천장", + "시간": "19:29:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 8, + "열번": 2308, + "역명": "온천장", + "시간": "21:50:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 9, + "열번": 2022, + "역명": "온천장", + "시간": "07:57:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1063, + "역명": "온천장", + "시간": "08:34:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 9, + "열번": 2090, + "역명": "온천장", + "시간": "10:52:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2014, + "역명": "온천장", + "시간": "07:22:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1045, + "역명": "온천장", + "시간": "07:58:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 11, + "열번": 1005, + "역명": "온천장", + "시간": "05:42:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2024, + "역명": "온천장", + "시간": "08:03:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1065, + "역명": "온천장", + "시간": "08:38:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2092, + "역명": "온천장", + "시간": "10:58:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1123, + "역명": "온천장", + "시간": "11:33:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2146, + "역명": "온천장", + "시간": "13:52:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1177, + "역명": "온천장", + "시간": "14:28:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2200, + "역명": "온천장", + "시간": "16:47:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1237, + "역명": "온천장", + "시간": "17:23:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 11, + "열번": 2262, + "역명": "온천장", + "시간": "19:41:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2016, + "역명": "온천장", + "시간": "07:33:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1051, + "역명": "온천장", + "시간": "08:10:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2082, + "역명": "온천장", + "시간": "10:28:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1115, + "역명": "온천장", + "시간": "11:07:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2138, + "역명": "온천장", + "시간": "13:26:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1169, + "역명": "온천장", + "시간": "14:02:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "온천장", + "시간": "16:21:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1227, + "역명": "온천장", + "시간": "16:58:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2252, + "역명": "온천장", + "시간": "19:16:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1303, + "역명": "온천장", + "시간": "19:49:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2314, + "역명": "온천장", + "시간": "22:08:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1343, + "역명": "온천장", + "시간": "22:43:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1007, + "역명": "온천장", + "시간": "05:53:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2028, + "역명": "온천장", + "시간": "08:13:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1071, + "역명": "온천장", + "시간": "08:50:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2096, + "역명": "온천장", + "시간": "11:10:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1127, + "역명": "온천장", + "시간": "11:46:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2150, + "역명": "온천장", + "시간": "14:05:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1181, + "역명": "온천장", + "시간": "14:41:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2204, + "역명": "온천장", + "시간": "16:59:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1241, + "역명": "온천장", + "시간": "17:33:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2266, + "역명": "온천장", + "시간": "19:51:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1313, + "역명": "온천장", + "시간": "20:29:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2324, + "역명": "온천장", + "시간": "22:53:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 13, + "열번": 1351, + "역명": "온천장", + "시간": "23:29:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 14, + "열번": 1001, + "역명": "온천장", + "시간": "05:21:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2018, + "역명": "온천장", + "시간": "07:42:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1055, + "역명": "온천장", + "시간": "08:18:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1009, + "역명": "온천장", + "시간": "06:04:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2032, + "역명": "온천장", + "시간": "08:23:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1075, + "역명": "온천장", + "시간": "08:59:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2100, + "역명": "온천장", + "시간": "11:22:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1131, + "역명": "온천장", + "시간": "11:59:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2154, + "역명": "온천장", + "시간": "14:18:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1185, + "역명": "온천장", + "시간": "14:54:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2208, + "역명": "온천장", + "시간": "17:16:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1249, + "역명": "온천장", + "시간": "17:50:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2274, + "역명": "온천장", + "시간": "20:11:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2026, + "역명": "온천장", + "시간": "08:08:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1067, + "역명": "온천장", + "시간": "08:42:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2036, + "역명": "온천장", + "시간": "08:32:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2030, + "역명": "온천장", + "시간": "08:18:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1073, + "역명": "온천장", + "시간": "08:54:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2098, + "역명": "온천장", + "시간": "11:16:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1129, + "역명": "온천장", + "시간": "11:52:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2152, + "역명": "온천장", + "시간": "14:11:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1183, + "역명": "온천장", + "시간": "14:48:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2206, + "역명": "온천장", + "시간": "17:11:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1247, + "역명": "온천장", + "시간": "17:46:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2272, + "역명": "온천장", + "시간": "20:06:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1317, + "역명": "온천장", + "시간": "20:45:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2326, + "역명": "온천장", + "시간": "23:03:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 18, + "열번": 7931, + "역명": "온천장", + "시간": "23:44:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 19, + "열번": 1011, + "역명": "온천장", + "시간": "06:15:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2038, + "역명": "온천장", + "시간": "08:36:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1079, + "역명": "온천장", + "시간": "09:11:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2102, + "역명": "온천장", + "시간": "11:29:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1133, + "역명": "온천장", + "시간": "12:05:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2156, + "역명": "온천장", + "시간": "14:24:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1187, + "역명": "온천장", + "시간": "15:01:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2210, + "역명": "온천장", + "시간": "17:21:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1253, + "역명": "온천장", + "시간": "17:58:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2278, + "역명": "온천장", + "시간": "20:21:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2034, + "역명": "온천장", + "시간": "08:27:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 20, + "열번": 1077, + "역명": "온천장", + "시간": "09:05:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 21, + "열번": 1013, + "역명": "온천장", + "시간": "06:26:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2042, + "역명": "온천장", + "시간": "08:45:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1083, + "역명": "온천장", + "시간": "09:23:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2106, + "역명": "온천장", + "시간": "11:42:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1137, + "역명": "온천장", + "시간": "12:18:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2160, + "역명": "온천장", + "시간": "14:37:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1191, + "역명": "온천장", + "시간": "15:14:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2214, + "역명": "온천장", + "시간": "17:31:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1257, + "역명": "온천장", + "시간": "18:06:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2280, + "역명": "온천장", + "시간": "20:26:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1321, + "역명": "온천장", + "시간": "21:01:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2330, + "역명": "온천장", + "시간": "23:25:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2040, + "역명": "온천장", + "시간": "08:41:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1081, + "역명": "온천장", + "시간": "09:17:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2104, + "역명": "온천장", + "시간": "11:35:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1135, + "역명": "온천장", + "시간": "12:12:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2158, + "역명": "온천장", + "시간": "14:31:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1189, + "역명": "온천장", + "시간": "15:07:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2212, + "역명": "온천장", + "시간": "17:26:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1255, + "역명": "온천장", + "시간": "18:02:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2044, + "역명": "온천장", + "시간": "08:50:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "온천장", + "시간": "08:59:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1087, + "역명": "온천장", + "시간": "09:36:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2110, + "역명": "온천장", + "시간": "11:55:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1141, + "역명": "온천장", + "시간": "12:31:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2164, + "역명": "온천장", + "시간": "14:50:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1195, + "역명": "온천장", + "시간": "15:27:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2218, + "역명": "온천장", + "시간": "17:46:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1265, + "역명": "온천장", + "시간": "18:22:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 24, + "열번": 2286, + "역명": "온천장", + "시간": "20:44:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "온천장", + "시간": "06:54:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2054, + "역명": "온천장", + "시간": "09:12:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1091, + "역명": "온천장", + "시간": "09:49:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2114, + "역명": "온천장", + "시간": "12:08:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1145, + "역명": "온천장", + "시간": "12:44:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2168, + "역명": "온천장", + "시간": "15:03:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1199, + "역명": "온천장", + "시간": "15:40:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2222, + "역명": "온천장", + "시간": "17:59:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1271, + "역명": "온천장", + "시간": "18:34:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2290, + "역명": "온천장", + "시간": "20:56:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1329, + "역명": "온천장", + "시간": "21:33:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2336, + "역명": "온천장", + "시간": "00:00:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2052, + "역명": "온천장", + "시간": "09:08:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1089, + "역명": "온천장", + "시간": "09:42:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2112, + "역명": "온천장", + "시간": "12:01:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1143, + "역명": "온천장", + "시간": "12:38:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2166, + "역명": "온천장", + "시간": "14:57:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1197, + "역명": "온천장", + "시간": "15:33:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2220, + "역명": "온천장", + "시간": "17:55:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1269, + "역명": "온천장", + "시간": "18:30:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2288, + "역명": "온천장", + "시간": "20:50:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1327, + "역명": "온천장", + "시간": "21:25:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 26, + "열번": 2334, + "역명": "온천장", + "시간": "23:49:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1023, + "역명": "온천장", + "시간": "07:09:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 27, + "열번": 2060, + "역명": "온천장", + "시간": "09:27:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2056, + "역명": "온천장", + "시간": "09:17:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1093, + "역명": "온천장", + "시간": "09:55:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2116, + "역명": "온천장", + "시간": "12:14:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1147, + "역명": "온천장", + "시간": "12:51:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2170, + "역명": "온천장", + "시간": "15:10:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1201, + "역명": "온천장", + "시간": "15:46:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2224, + "역명": "온천장", + "시간": "18:07:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1275, + "역명": "온천장", + "시간": "18:42:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2292, + "역명": "온천장", + "시간": "21:02:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1331, + "역명": "온천장", + "시간": "21:42:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1027, + "역명": "온천장", + "시간": "07:19:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2064, + "역명": "온천장", + "시간": "09:37:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1099, + "역명": "온천장", + "시간": "10:15:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2122, + "역명": "온천장", + "시간": "12:34:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1153, + "역명": "온천장", + "시간": "13:10:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2176, + "역명": "온천장", + "시간": "15:29:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1207, + "역명": "온천장", + "시간": "16:04:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2230, + "역명": "온천장", + "시간": "18:23:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1283, + "역명": "온천장", + "시간": "18:58:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 29, + "열번": 2298, + "역명": "온천장", + "시간": "21:20:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1037, + "역명": "온천장", + "시간": "07:42:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1031, + "역명": "온천장", + "시간": "07:29:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2068, + "역명": "온천장", + "시간": "09:47:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1101, + "역명": "온천장", + "시간": "10:21:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2124, + "역명": "온천장", + "시간": "12:40:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1155, + "역명": "온천장", + "시간": "13:17:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2178, + "역명": "온천장", + "시간": "15:36:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1209, + "역명": "온천장", + "시간": "16:10:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2232, + "역명": "온천장", + "시간": "18:31:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1287, + "역명": "온천장", + "시간": "19:06:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2300, + "역명": "온천장", + "시간": "21:26:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1335, + "역명": "온천장", + "시간": "22:02:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 32, + "열번": 1049, + "역명": "온천장", + "시간": "08:06:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1035, + "역명": "온천장", + "시간": "07:38:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2072, + "역명": "온천장", + "시간": "09:58:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1105, + "역명": "온천장", + "시간": "10:34:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2128, + "역명": "온천장", + "시간": "12:53:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1159, + "역명": "온천장", + "시간": "13:30:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2182, + "역명": "온천장", + "시간": "15:49:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1215, + "역명": "온천장", + "시간": "16:28:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2238, + "역명": "온천장", + "시간": "18:47:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1295, + "역명": "온천장", + "시간": "19:24:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2306, + "역명": "온천장", + "시간": "21:44:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 33, + "열번": 1339, + "역명": "온천장", + "시간": "22:22:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 34, + "열번": 1061, + "역명": "온천장", + "시간": "08:30:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1041, + "역명": "온천장", + "시간": "07:50:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2076, + "역명": "온천장", + "시간": "10:10:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1109, + "역명": "온천장", + "시간": "10:47:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2132, + "역명": "온천장", + "시간": "13:06:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1163, + "역명": "온천장", + "시간": "13:43:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2186, + "역명": "온천장", + "시간": "16:02:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1219, + "역명": "온천장", + "시간": "16:38:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 35, + "열번": 2242, + "역명": "온천장", + "시간": "18:55:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 36, + "열번": 8904, + "역명": "온천장", + "시간": "17:05:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1245, + "역명": "온천장", + "시간": "17:42:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 36, + "열번": 2270, + "역명": "온천장", + "시간": "20:01:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1315, + "역명": "온천장", + "시간": "20:37:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1043, + "역명": "온천장", + "시간": "07:54:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2078, + "역명": "온천장", + "시간": "10:16:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1111, + "역명": "온천장", + "시간": "10:54:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2134, + "역명": "온천장", + "시간": "13:13:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1165, + "역명": "온천장", + "시간": "13:49:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2188, + "역명": "온천장", + "시간": "16:08:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1221, + "역명": "온천장", + "시간": "16:43:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 37, + "열번": 2246, + "역명": "온천장", + "시간": "19:03:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 38, + "열번": 8906, + "역명": "온천장", + "시간": "17:36:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 38, + "열번": 1259, + "역명": "온천장", + "시간": "18:10:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 39, + "열번": 1047, + "역명": "온천장", + "시간": "08:02:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2080, + "역명": "온천장", + "시간": "10:22:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1113, + "역명": "온천장", + "시간": "11:00:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2136, + "역명": "온천장", + "시간": "13:19:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1167, + "역명": "온천장", + "시간": "13:56:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2190, + "역명": "온천장", + "시간": "16:15:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1225, + "역명": "온천장", + "시간": "16:53:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 39, + "열번": 2250, + "역명": "온천장", + "시간": "19:11:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 40, + "열번": 8908, + "역명": "온천장", + "시간": "17:51:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 40, + "열번": 1267, + "역명": "온천장", + "시간": "18:26:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 41, + "열번": 1053, + "역명": "온천장", + "시간": "08:14:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2084, + "역명": "온천장", + "시간": "10:34:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1117, + "역명": "온천장", + "시간": "11:13:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2140, + "역명": "온천장", + "시간": "13:32:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1171, + "역명": "온천장", + "시간": "14:09:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2194, + "역명": "온천장", + "시간": "16:28:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1229, + "역명": "온천장", + "시간": "17:03:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2254, + "역명": "온천장", + "시간": "19:21:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1305, + "역명": "온천장", + "시간": "19:57:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2316, + "역명": "온천장", + "시간": "22:15:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1345, + "역명": "온천장", + "시간": "22:54:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 42, + "열번": 8910, + "역명": "온천장", + "시간": "18:03:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 42, + "열번": 1273, + "역명": "온천장", + "시간": "18:38:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 43, + "열번": 1057, + "역명": "온천장", + "시간": "08:22:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2086, + "역명": "온천장", + "시간": "10:40:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1119, + "역명": "온천장", + "시간": "11:20:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2142, + "역명": "온천장", + "시간": "13:39:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1173, + "역명": "온천장", + "시간": "14:15:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2196, + "역명": "온천장", + "시간": "16:34:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1233, + "역명": "온천장", + "시간": "17:13:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2258, + "역명": "온천장", + "시간": "19:31:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1307, + "역명": "온천장", + "시간": "20:05:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 43, + "열번": 2318, + "역명": "온천장", + "시간": "22:23:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 44, + "열번": 8912, + "역명": "온천장", + "시간": "18:15:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 44, + "열번": 1279, + "역명": "온천장", + "시간": "18:50:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 45, + "열번": 1069, + "역명": "온천장", + "시간": "08:46:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2094, + "역명": "온천장", + "시간": "11:04:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1125, + "역명": "온천장", + "시간": "11:39:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2148, + "역명": "온천장", + "시간": "13:58:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1179, + "역명": "온천장", + "시간": "14:35:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2202, + "역명": "온천장", + "시간": "16:53:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1239, + "역명": "온천장", + "시간": "17:28:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2264, + "역명": "온천장", + "시간": "19:46:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1311, + "역명": "온천장", + "시간": "20:21:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2322, + "역명": "온천장", + "시간": "22:43:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 45, + "열번": 1349, + "역명": "온천장", + "시간": "23:18:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 46, + "열번": 8914, + "역명": "온천장", + "시간": "18:27:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 46, + "열번": 1285, + "역명": "온천장", + "시간": "19:02:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 47, + "열번": 1211, + "역명": "온천장", + "시간": "16:16:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 47, + "열번": 2234, + "역명": "온천장", + "시간": "18:35:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 47, + "열번": 1289, + "역명": "온천장", + "시간": "19:10:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 47, + "열번": 2302, + "역명": "온천장", + "시간": "21:32:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 48, + "열번": 8916, + "역명": "온천장", + "시간": "18:39:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 48, + "열번": 1291, + "역명": "온천장", + "시간": "19:14:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 49, + "열번": 1223, + "역명": "온천장", + "시간": "16:48:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 49, + "열번": 2248, + "역명": "온천장", + "시간": "19:07:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 49, + "열번": 1301, + "역명": "온천장", + "시간": "19:41:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 49, + "열번": 2312, + "역명": "온천장", + "시간": "22:02:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 50, + "열번": 2244, + "역명": "온천장", + "시간": "18:59:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 50, + "열번": 1299, + "역명": "온천장", + "시간": "19:34:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 50, + "열번": 2310, + "역명": "온천장", + "시간": "21:56:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 50, + "열번": 1341, + "역명": "온천장", + "시간": "22:32:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 51, + "열번": 1231, + "역명": "온천장", + "시간": "17:08:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 51, + "열번": 2256, + "역명": "온천장", + "시간": "19:26:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 52, + "열번": 6906, + "역명": "온천장", + "시간": "10:25:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 52, + "열번": 5905, + "역명": "온천장", + "시간": "11:03:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 53, + "열번": 1243, + "역명": "온천장", + "시간": "17:38:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 53, + "열번": 2268, + "역명": "온천장", + "시간": "19:56:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 54, + "열번": 6910, + "역명": "온천장", + "시간": "14:08:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 54, + "열번": 5907, + "역명": "온천장", + "시간": "14:44:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 55, + "열번": 1251, + "역명": "온천장", + "시간": "17:54:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 55, + "열번": 2276, + "역명": "온천장", + "시간": "20:16:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 55, + "열번": 1319, + "역명": "온천장", + "시간": "20:53:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 55, + "열번": 2328, + "역명": "온천장", + "시간": "23:13:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 57, + "열번": 1263, + "역명": "온천장", + "시간": "18:18:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 57, + "열번": 2284, + "역명": "온천장", + "시간": "20:38:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 57, + "열번": 1325, + "역명": "온천장", + "시간": "21:17:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 57, + "열번": 2332, + "역명": "온천장", + "시간": "23:37:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 59, + "열번": 5901, + "역명": "온천장", + "시간": "10:11:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 59, + "열번": 6902, + "역명": "온천장", + "시간": "12:30:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 61, + "열번": 5903, + "역명": "온천장", + "시간": "13:39:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 61, + "열번": 5904, + "역명": "온천장", + "시간": "15:58:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "명륜", + "시간": "06:06:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "명륜", + "시간": "06:47:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2050, + "역명": "명륜", + "시간": "09:01:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "명륜", + "시간": "05:52:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "명륜", + "시간": "06:38:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "명륜", + "시간": "08:52:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1085, + "역명": "명륜", + "시간": "09:31:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2108, + "역명": "명륜", + "시간": "11:46:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1139, + "역명": "명륜", + "시간": "12:27:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2162, + "역명": "명륜", + "시간": "14:42:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1193, + "역명": "명륜", + "시간": "15:22:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2216, + "역명": "명륜", + "시간": "17:39:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1261, + "역명": "명륜", + "시간": "18:16:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2282, + "역명": "명륜", + "시간": "20:30:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1323, + "역명": "명륜", + "시간": "21:11:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "명륜", + "시간": "06:20:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "명륜", + "시간": "07:05:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2058, + "역명": "명륜", + "시간": "09:20:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1095, + "역명": "명륜", + "시간": "10:04:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2118, + "역명": "명륜", + "시간": "12:19:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1149, + "역명": "명륜", + "시간": "12:59:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2172, + "역명": "명륜", + "시간": "15:14:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1203, + "역명": "명륜", + "시간": "15:54:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2226, + "역명": "명륜", + "시간": "18:09:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1277, + "역명": "명륜", + "시간": "18:48:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2294, + "역명": "명륜", + "시간": "21:06:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "명륜", + "시간": "06:32:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1025, + "역명": "명륜", + "시간": "07:16:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2062, + "역명": "명륜", + "시간": "09:30:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1097, + "역명": "명륜", + "시간": "10:10:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2120, + "역명": "명륜", + "시간": "12:25:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1151, + "역명": "명륜", + "시간": "13:06:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2174, + "역명": "명륜", + "시간": "15:21:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1205, + "역명": "명륜", + "시간": "16:00:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2228, + "역명": "명륜", + "시간": "18:17:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1281, + "역명": "명륜", + "시간": "18:56:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2296, + "역명": "명륜", + "시간": "21:12:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1333, + "역명": "명륜", + "시간": "21:54:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2338, + "역명": "명륜", + "시간": "00:15:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2008, + "역명": "명륜", + "시간": "06:44:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1029, + "역명": "명륜", + "시간": "07:26:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2066, + "역명": "명륜", + "시간": "09:40:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2010, + "역명": "명륜", + "시간": "06:56:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1033, + "역명": "명륜", + "시간": "07:36:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2070, + "역명": "명륜", + "시간": "09:50:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1103, + "역명": "명륜", + "시간": "10:30:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2126, + "역명": "명륜", + "시간": "12:45:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1157, + "역명": "명륜", + "시간": "13:25:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2180, + "역명": "명륜", + "시간": "15:40:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1213, + "역명": "명륜", + "시간": "16:24:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2236, + "역명": "명륜", + "시간": "18:41:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1293, + "역명": "명륜", + "시간": "19:21:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2304, + "역명": "명륜", + "시간": "21:36:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1337, + "역명": "명륜", + "시간": "22:14:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1003, + "역명": "명륜", + "시간": "05:33:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2020, + "역명": "명륜", + "시간": "07:49:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1059, + "역명": "명륜", + "시간": "08:28:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2088, + "역명": "명륜", + "시간": "10:44:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1121, + "역명": "명륜", + "시간": "11:28:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2144, + "역명": "명륜", + "시간": "13:43:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1175, + "역명": "명륜", + "시간": "14:24:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2198, + "역명": "명륜", + "시간": "16:39:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1235, + "역명": "명륜", + "시간": "17:20:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2260, + "역명": "명륜", + "시간": "19:34:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1309, + "역명": "명륜", + "시간": "20:15:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2320, + "역명": "명륜", + "시간": "22:31:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1347, + "역명": "명륜", + "시간": "23:08:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2012, + "역명": "명륜", + "시간": "07:08:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1039, + "역명": "명륜", + "시간": "07:48:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2074, + "역명": "명륜", + "시간": "10:02:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1107, + "역명": "명륜", + "시간": "10:43:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2130, + "역명": "명륜", + "시간": "12:58:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1161, + "역명": "명륜", + "시간": "13:38:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2184, + "역명": "명륜", + "시간": "15:53:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1217, + "역명": "명륜", + "시간": "16:35:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2240, + "역명": "명륜", + "시간": "18:49:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1297, + "역명": "명륜", + "시간": "19:31:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 8, + "열번": 2308, + "역명": "명륜", + "시간": "21:48:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 9, + "열번": 2022, + "역명": "명륜", + "시간": "07:55:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1063, + "역명": "명륜", + "시간": "08:36:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 9, + "열번": 2090, + "역명": "명륜", + "시간": "10:50:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2014, + "역명": "명륜", + "시간": "07:20:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1045, + "역명": "명륜", + "시간": "08:00:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 11, + "열번": 1005, + "역명": "명륜", + "시간": "05:44:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2024, + "역명": "명륜", + "시간": "08:01:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1065, + "역명": "명륜", + "시간": "08:40:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2092, + "역명": "명륜", + "시간": "10:56:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1123, + "역명": "명륜", + "시간": "11:35:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2146, + "역명": "명륜", + "시간": "13:50:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1177, + "역명": "명륜", + "시간": "14:30:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2200, + "역명": "명륜", + "시간": "16:45:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1237, + "역명": "명륜", + "시간": "17:25:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 11, + "열번": 2262, + "역명": "명륜", + "시간": "19:39:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2016, + "역명": "명륜", + "시간": "07:31:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1051, + "역명": "명륜", + "시간": "08:12:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2082, + "역명": "명륜", + "시간": "10:26:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1115, + "역명": "명륜", + "시간": "11:09:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2138, + "역명": "명륜", + "시간": "13:24:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1169, + "역명": "명륜", + "시간": "14:04:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "명륜", + "시간": "16:19:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1227, + "역명": "명륜", + "시간": "17:00:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2252, + "역명": "명륜", + "시간": "19:14:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1303, + "역명": "명륜", + "시간": "19:51:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2314, + "역명": "명륜", + "시간": "22:06:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1343, + "역명": "명륜", + "시간": "22:45:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1007, + "역명": "명륜", + "시간": "05:55:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2028, + "역명": "명륜", + "시간": "08:11:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1071, + "역명": "명륜", + "시간": "08:52:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2096, + "역명": "명륜", + "시간": "11:08:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1127, + "역명": "명륜", + "시간": "11:48:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2150, + "역명": "명륜", + "시간": "14:03:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1181, + "역명": "명륜", + "시간": "14:43:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2204, + "역명": "명륜", + "시간": "16:57:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1241, + "역명": "명륜", + "시간": "17:35:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2266, + "역명": "명륜", + "시간": "19:49:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1313, + "역명": "명륜", + "시간": "20:31:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2324, + "역명": "명륜", + "시간": "22:51:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 13, + "열번": 1351, + "역명": "명륜", + "시간": "23:31:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 14, + "열번": 1001, + "역명": "명륜", + "시간": "05:23:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2018, + "역명": "명륜", + "시간": "07:40:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1055, + "역명": "명륜", + "시간": "08:20:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1009, + "역명": "명륜", + "시간": "06:06:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2032, + "역명": "명륜", + "시간": "08:21:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1075, + "역명": "명륜", + "시간": "09:01:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2100, + "역명": "명륜", + "시간": "11:20:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1131, + "역명": "명륜", + "시간": "12:01:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2154, + "역명": "명륜", + "시간": "14:16:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1185, + "역명": "명륜", + "시간": "14:56:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2208, + "역명": "명륜", + "시간": "17:14:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1249, + "역명": "명륜", + "시간": "17:52:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2274, + "역명": "명륜", + "시간": "20:09:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2026, + "역명": "명륜", + "시간": "08:06:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1067, + "역명": "명륜", + "시간": "08:44:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2036, + "역명": "명륜", + "시간": "08:30:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2030, + "역명": "명륜", + "시간": "08:16:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1073, + "역명": "명륜", + "시간": "08:56:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2098, + "역명": "명륜", + "시간": "11:14:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1129, + "역명": "명륜", + "시간": "11:54:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2152, + "역명": "명륜", + "시간": "14:09:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1183, + "역명": "명륜", + "시간": "14:50:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2206, + "역명": "명륜", + "시간": "17:09:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1247, + "역명": "명륜", + "시간": "17:48:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2272, + "역명": "명륜", + "시간": "20:04:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1317, + "역명": "명륜", + "시간": "20:47:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2326, + "역명": "명륜", + "시간": "23:01:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 18, + "열번": 7931, + "역명": "명륜", + "시간": "23:46:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 19, + "열번": 1011, + "역명": "명륜", + "시간": "06:17:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2038, + "역명": "명륜", + "시간": "08:34:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1079, + "역명": "명륜", + "시간": "09:13:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2102, + "역명": "명륜", + "시간": "11:27:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1133, + "역명": "명륜", + "시간": "12:07:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2156, + "역명": "명륜", + "시간": "14:22:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1187, + "역명": "명륜", + "시간": "15:03:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2210, + "역명": "명륜", + "시간": "17:19:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1253, + "역명": "명륜", + "시간": "18:00:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2278, + "역명": "명륜", + "시간": "20:19:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2034, + "역명": "명륜", + "시간": "08:25:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 20, + "열번": 1077, + "역명": "명륜", + "시간": "09:07:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 21, + "열번": 1013, + "역명": "명륜", + "시간": "06:28:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2042, + "역명": "명륜", + "시간": "08:43:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1083, + "역명": "명륜", + "시간": "09:25:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2106, + "역명": "명륜", + "시간": "11:40:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1137, + "역명": "명륜", + "시간": "12:20:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2160, + "역명": "명륜", + "시간": "14:35:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1191, + "역명": "명륜", + "시간": "15:16:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2214, + "역명": "명륜", + "시간": "17:29:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1257, + "역명": "명륜", + "시간": "18:08:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2280, + "역명": "명륜", + "시간": "20:24:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1321, + "역명": "명륜", + "시간": "21:03:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2330, + "역명": "명륜", + "시간": "23:23:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2040, + "역명": "명륜", + "시간": "08:39:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1081, + "역명": "명륜", + "시간": "09:19:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2104, + "역명": "명륜", + "시간": "11:33:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1135, + "역명": "명륜", + "시간": "12:14:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2158, + "역명": "명륜", + "시간": "14:29:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1189, + "역명": "명륜", + "시간": "15:09:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2212, + "역명": "명륜", + "시간": "17:24:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1255, + "역명": "명륜", + "시간": "18:04:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2044, + "역명": "명륜", + "시간": "08:48:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "명륜", + "시간": "08:57:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1087, + "역명": "명륜", + "시간": "09:38:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2110, + "역명": "명륜", + "시간": "11:53:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1141, + "역명": "명륜", + "시간": "12:33:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2164, + "역명": "명륜", + "시간": "14:48:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1195, + "역명": "명륜", + "시간": "15:29:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2218, + "역명": "명륜", + "시간": "17:44:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1265, + "역명": "명륜", + "시간": "18:24:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 24, + "열번": 2286, + "역명": "명륜", + "시간": "20:42:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "명륜", + "시간": "06:56:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2054, + "역명": "명륜", + "시간": "09:10:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1091, + "역명": "명륜", + "시간": "09:51:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2114, + "역명": "명륜", + "시간": "12:06:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1145, + "역명": "명륜", + "시간": "12:46:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2168, + "역명": "명륜", + "시간": "15:01:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1199, + "역명": "명륜", + "시간": "15:42:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2222, + "역명": "명륜", + "시간": "17:57:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1271, + "역명": "명륜", + "시간": "18:36:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2290, + "역명": "명륜", + "시간": "20:54:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1329, + "역명": "명륜", + "시간": "21:35:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2336, + "역명": "명륜", + "시간": "23:58:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2052, + "역명": "명륜", + "시간": "09:06:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1089, + "역명": "명륜", + "시간": "09:44:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2112, + "역명": "명륜", + "시간": "11:59:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1143, + "역명": "명륜", + "시간": "12:40:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2166, + "역명": "명륜", + "시간": "14:55:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1197, + "역명": "명륜", + "시간": "15:35:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2220, + "역명": "명륜", + "시간": "17:53:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1269, + "역명": "명륜", + "시간": "18:32:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2288, + "역명": "명륜", + "시간": "20:48:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1327, + "역명": "명륜", + "시간": "21:27:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 26, + "열번": 2334, + "역명": "명륜", + "시간": "23:47:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1023, + "역명": "명륜", + "시간": "07:11:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 27, + "열번": 2060, + "역명": "명륜", + "시간": "09:25:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2056, + "역명": "명륜", + "시간": "09:15:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1093, + "역명": "명륜", + "시간": "09:57:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2116, + "역명": "명륜", + "시간": "12:12:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1147, + "역명": "명륜", + "시간": "12:53:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2170, + "역명": "명륜", + "시간": "15:08:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1201, + "역명": "명륜", + "시간": "15:48:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2224, + "역명": "명륜", + "시간": "18:05:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1275, + "역명": "명륜", + "시간": "18:44:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2292, + "역명": "명륜", + "시간": "21:00:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1331, + "역명": "명륜", + "시간": "21:44:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1027, + "역명": "명륜", + "시간": "07:21:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2064, + "역명": "명륜", + "시간": "09:35:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1099, + "역명": "명륜", + "시간": "10:17:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2122, + "역명": "명륜", + "시간": "12:32:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1153, + "역명": "명륜", + "시간": "13:12:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2176, + "역명": "명륜", + "시간": "15:27:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1207, + "역명": "명륜", + "시간": "16:06:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2230, + "역명": "명륜", + "시간": "18:21:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1283, + "역명": "명륜", + "시간": "19:00:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 29, + "열번": 2298, + "역명": "명륜", + "시간": "21:18:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1037, + "역명": "명륜", + "시간": "07:44:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1031, + "역명": "명륜", + "시간": "07:31:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2068, + "역명": "명륜", + "시간": "09:45:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1101, + "역명": "명륜", + "시간": "10:23:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2124, + "역명": "명륜", + "시간": "12:38:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1155, + "역명": "명륜", + "시간": "13:19:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2178, + "역명": "명륜", + "시간": "15:34:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1209, + "역명": "명륜", + "시간": "16:12:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2232, + "역명": "명륜", + "시간": "18:29:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1287, + "역명": "명륜", + "시간": "19:08:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2300, + "역명": "명륜", + "시간": "21:24:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1335, + "역명": "명륜", + "시간": "22:04:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 32, + "열번": 1049, + "역명": "명륜", + "시간": "08:08:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1035, + "역명": "명륜", + "시간": "07:40:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2072, + "역명": "명륜", + "시간": "09:56:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1105, + "역명": "명륜", + "시간": "10:36:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2128, + "역명": "명륜", + "시간": "12:51:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1159, + "역명": "명륜", + "시간": "13:32:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2182, + "역명": "명륜", + "시간": "15:47:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1215, + "역명": "명륜", + "시간": "16:30:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2238, + "역명": "명륜", + "시간": "18:45:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1295, + "역명": "명륜", + "시간": "19:26:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2306, + "역명": "명륜", + "시간": "21:42:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 33, + "열번": 1339, + "역명": "명륜", + "시간": "22:24:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 34, + "열번": 1061, + "역명": "명륜", + "시간": "08:32:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1041, + "역명": "명륜", + "시간": "07:52:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2076, + "역명": "명륜", + "시간": "10:08:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1109, + "역명": "명륜", + "시간": "10:49:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2132, + "역명": "명륜", + "시간": "13:04:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1163, + "역명": "명륜", + "시간": "13:45:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2186, + "역명": "명륜", + "시간": "16:00:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1219, + "역명": "명륜", + "시간": "16:40:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 35, + "열번": 2242, + "역명": "명륜", + "시간": "18:53:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 36, + "열번": 8904, + "역명": "명륜", + "시간": "17:03:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1245, + "역명": "명륜", + "시간": "17:44:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 36, + "열번": 2270, + "역명": "명륜", + "시간": "19:59:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1315, + "역명": "명륜", + "시간": "20:39:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1043, + "역명": "명륜", + "시간": "07:56:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2078, + "역명": "명륜", + "시간": "10:14:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1111, + "역명": "명륜", + "시간": "10:56:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2134, + "역명": "명륜", + "시간": "13:11:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1165, + "역명": "명륜", + "시간": "13:51:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2188, + "역명": "명륜", + "시간": "16:06:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1221, + "역명": "명륜", + "시간": "16:45:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 37, + "열번": 2246, + "역명": "명륜", + "시간": "19:01:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 38, + "열번": 8906, + "역명": "명륜", + "시간": "17:34:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 38, + "열번": 1259, + "역명": "명륜", + "시간": "18:12:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 39, + "열번": 1047, + "역명": "명륜", + "시간": "08:04:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2080, + "역명": "명륜", + "시간": "10:20:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1113, + "역명": "명륜", + "시간": "11:02:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2136, + "역명": "명륜", + "시간": "13:17:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1167, + "역명": "명륜", + "시간": "13:58:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2190, + "역명": "명륜", + "시간": "16:13:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1225, + "역명": "명륜", + "시간": "16:55:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 39, + "열번": 2250, + "역명": "명륜", + "시간": "19:09:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 40, + "열번": 8908, + "역명": "명륜", + "시간": "17:49:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 40, + "열번": 1267, + "역명": "명륜", + "시간": "18:28:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 41, + "열번": 1053, + "역명": "명륜", + "시간": "08:16:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2084, + "역명": "명륜", + "시간": "10:32:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1117, + "역명": "명륜", + "시간": "11:15:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2140, + "역명": "명륜", + "시간": "13:30:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1171, + "역명": "명륜", + "시간": "14:11:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2194, + "역명": "명륜", + "시간": "16:26:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1229, + "역명": "명륜", + "시간": "17:05:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2254, + "역명": "명륜", + "시간": "19:19:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1305, + "역명": "명륜", + "시간": "19:59:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2316, + "역명": "명륜", + "시간": "22:13:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1345, + "역명": "명륜", + "시간": "22:56:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 42, + "열번": 8910, + "역명": "명륜", + "시간": "18:01:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 42, + "열번": 1273, + "역명": "명륜", + "시간": "18:40:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 43, + "열번": 1057, + "역명": "명륜", + "시간": "08:24:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2086, + "역명": "명륜", + "시간": "10:38:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1119, + "역명": "명륜", + "시간": "11:22:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2142, + "역명": "명륜", + "시간": "13:37:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1173, + "역명": "명륜", + "시간": "14:17:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2196, + "역명": "명륜", + "시간": "16:32:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1233, + "역명": "명륜", + "시간": "17:15:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2258, + "역명": "명륜", + "시간": "19:29:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1307, + "역명": "명륜", + "시간": "20:07:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 43, + "열번": 2318, + "역명": "명륜", + "시간": "22:21:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 44, + "열번": 8912, + "역명": "명륜", + "시간": "18:13:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 44, + "열번": 1279, + "역명": "명륜", + "시간": "18:52:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 45, + "열번": 1069, + "역명": "명륜", + "시간": "08:48:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2094, + "역명": "명륜", + "시간": "11:02:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1125, + "역명": "명륜", + "시간": "11:41:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2148, + "역명": "명륜", + "시간": "13:56:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1179, + "역명": "명륜", + "시간": "14:37:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2202, + "역명": "명륜", + "시간": "16:51:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1239, + "역명": "명륜", + "시간": "17:30:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2264, + "역명": "명륜", + "시간": "19:44:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1311, + "역명": "명륜", + "시간": "20:23:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2322, + "역명": "명륜", + "시간": "22:41:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 45, + "열번": 1349, + "역명": "명륜", + "시간": "23:20:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 46, + "열번": 8914, + "역명": "명륜", + "시간": "18:25:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 46, + "열번": 1285, + "역명": "명륜", + "시간": "19:04:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 47, + "열번": 1211, + "역명": "명륜", + "시간": "16:18:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 47, + "열번": 2234, + "역명": "명륜", + "시간": "18:33:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 47, + "열번": 1289, + "역명": "명륜", + "시간": "19:12:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 47, + "열번": 2302, + "역명": "명륜", + "시간": "21:30:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 48, + "열번": 8916, + "역명": "명륜", + "시간": "18:37:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 48, + "열번": 1291, + "역명": "명륜", + "시간": "19:16:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 49, + "열번": 1223, + "역명": "명륜", + "시간": "16:50:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 49, + "열번": 2248, + "역명": "명륜", + "시간": "19:05:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 49, + "열번": 1301, + "역명": "명륜", + "시간": "19:43:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 49, + "열번": 2312, + "역명": "명륜", + "시간": "22:00:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 50, + "열번": 2244, + "역명": "명륜", + "시간": "18:57:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 50, + "열번": 1299, + "역명": "명륜", + "시간": "19:36:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 50, + "열번": 2310, + "역명": "명륜", + "시간": "21:54:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 50, + "열번": 1341, + "역명": "명륜", + "시간": "22:34:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 51, + "열번": 1231, + "역명": "명륜", + "시간": "17:10:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 51, + "열번": 2256, + "역명": "명륜", + "시간": "19:24:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 52, + "열번": 6906, + "역명": "명륜", + "시간": "10:23:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 52, + "열번": 5905, + "역명": "명륜", + "시간": "11:05:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 53, + "열번": 1243, + "역명": "명륜", + "시간": "17:40:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 53, + "열번": 2268, + "역명": "명륜", + "시간": "19:54:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 54, + "열번": 6910, + "역명": "명륜", + "시간": "14:06:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 54, + "열번": 5907, + "역명": "명륜", + "시간": "14:46:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 55, + "열번": 1251, + "역명": "명륜", + "시간": "17:56:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 55, + "열번": 2276, + "역명": "명륜", + "시간": "20:14:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 55, + "열번": 1319, + "역명": "명륜", + "시간": "20:55:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 55, + "열번": 2328, + "역명": "명륜", + "시간": "23:11:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 57, + "열번": 1263, + "역명": "명륜", + "시간": "18:20:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 57, + "열번": 2284, + "역명": "명륜", + "시간": "20:36:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 57, + "열번": 1325, + "역명": "명륜", + "시간": "21:19:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 57, + "열번": 2332, + "역명": "명륜", + "시간": "23:35:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 59, + "열번": 5901, + "역명": "명륜", + "시간": "10:13:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 59, + "열번": 6902, + "역명": "명륜", + "시간": "12:28:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 61, + "열번": 5903, + "역명": "명륜", + "시간": "13:41:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 61, + "열번": 5904, + "역명": "명륜", + "시간": "15:56:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "동래", + "시간": "06:05:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "동래", + "시간": "06:49:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2050, + "역명": "동래", + "시간": "09:00:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "동래", + "시간": "05:51:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "동래", + "시간": "06:40:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "동래", + "시간": "08:51:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1085, + "역명": "동래", + "시간": "09:33:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2108, + "역명": "동래", + "시간": "11:45:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1139, + "역명": "동래", + "시간": "12:29:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2162, + "역명": "동래", + "시간": "14:40:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1193, + "역명": "동래", + "시간": "15:24:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2216, + "역명": "동래", + "시간": "17:37:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1261, + "역명": "동래", + "시간": "18:18:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2282, + "역명": "동래", + "시간": "20:28:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1323, + "역명": "동래", + "시간": "21:13:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "동래", + "시간": "06:18:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "동래", + "시간": "07:07:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2058, + "역명": "동래", + "시간": "09:18:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1095, + "역명": "동래", + "시간": "10:06:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2118, + "역명": "동래", + "시간": "12:17:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1149, + "역명": "동래", + "시간": "13:01:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2172, + "역명": "동래", + "시간": "15:13:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1203, + "역명": "동래", + "시간": "15:56:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2226, + "역명": "동래", + "시간": "18:07:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1277, + "역명": "동래", + "시간": "18:50:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2294, + "역명": "동래", + "시간": "21:04:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "동래", + "시간": "06:31:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1025, + "역명": "동래", + "시간": "07:18:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2062, + "역명": "동래", + "시간": "09:28:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1097, + "역명": "동래", + "시간": "10:12:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2120, + "역명": "동래", + "시간": "12:24:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1151, + "역명": "동래", + "시간": "13:08:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2174, + "역명": "동래", + "시간": "15:19:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1205, + "역명": "동래", + "시간": "16:02:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2228, + "역명": "동래", + "시간": "18:15:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1281, + "역명": "동래", + "시간": "18:58:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2296, + "역명": "동래", + "시간": "21:10:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1333, + "역명": "동래", + "시간": "21:56:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2338, + "역명": "동래", + "시간": "00:13:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2008, + "역명": "동래", + "시간": "06:43:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1029, + "역명": "동래", + "시간": "07:28:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2066, + "역명": "동래", + "시간": "09:38:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2010, + "역명": "동래", + "시간": "06:55:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1033, + "역명": "동래", + "시간": "07:38:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2070, + "역명": "동래", + "시간": "09:48:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1103, + "역명": "동래", + "시간": "10:32:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2126, + "역명": "동래", + "시간": "12:43:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1157, + "역명": "동래", + "시간": "13:27:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2180, + "역명": "동래", + "시간": "15:39:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1213, + "역명": "동래", + "시간": "16:26:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2236, + "역명": "동래", + "시간": "18:39:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1293, + "역명": "동래", + "시간": "19:23:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2304, + "역명": "동래", + "시간": "21:34:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1337, + "역명": "동래", + "시간": "22:16:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1003, + "역명": "동래", + "시간": "05:35:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2020, + "역명": "동래", + "시간": "07:47:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1059, + "역명": "동래", + "시간": "08:30:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2088, + "역명": "동래", + "시간": "10:42:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1121, + "역명": "동래", + "시간": "11:30:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2144, + "역명": "동래", + "시간": "13:42:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1175, + "역명": "동래", + "시간": "14:26:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2198, + "역명": "동래", + "시간": "16:37:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1235, + "역명": "동래", + "시간": "17:22:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2260, + "역명": "동래", + "시간": "19:32:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1309, + "역명": "동래", + "시간": "20:17:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2320, + "역명": "동래", + "시간": "22:29:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1347, + "역명": "동래", + "시간": "23:10:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2012, + "역명": "동래", + "시간": "07:07:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1039, + "역명": "동래", + "시간": "07:50:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2074, + "역명": "동래", + "시간": "10:00:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1107, + "역명": "동래", + "시간": "10:45:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2130, + "역명": "동래", + "시간": "12:56:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1161, + "역명": "동래", + "시간": "13:40:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2184, + "역명": "동래", + "시간": "15:52:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1217, + "역명": "동래", + "시간": "16:37:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2240, + "역명": "동래", + "시간": "18:47:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1297, + "역명": "동래", + "시간": "19:33:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 8, + "열번": 2308, + "역명": "동래", + "시간": "21:46:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 9, + "열번": 2022, + "역명": "동래", + "시간": "07:53:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1063, + "역명": "동래", + "시간": "08:38:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 9, + "열번": 2090, + "역명": "동래", + "시간": "10:48:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2014, + "역명": "동래", + "시간": "07:19:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1045, + "역명": "동래", + "시간": "08:02:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 11, + "열번": 1005, + "역명": "동래", + "시간": "05:46:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2024, + "역명": "동래", + "시간": "07:59:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1065, + "역명": "동래", + "시간": "08:42:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2092, + "역명": "동래", + "시간": "10:54:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1123, + "역명": "동래", + "시간": "11:37:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2146, + "역명": "동래", + "시간": "13:48:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1177, + "역명": "동래", + "시간": "14:32:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2200, + "역명": "동래", + "시간": "16:43:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1237, + "역명": "동래", + "시간": "17:27:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 11, + "열번": 2262, + "역명": "동래", + "시간": "19:37:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2016, + "역명": "동래", + "시간": "07:30:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1051, + "역명": "동래", + "시간": "08:14:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2082, + "역명": "동래", + "시간": "10:24:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1115, + "역명": "동래", + "시간": "11:11:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2138, + "역명": "동래", + "시간": "13:22:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1169, + "역명": "동래", + "시간": "14:06:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "동래", + "시간": "16:18:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1227, + "역명": "동래", + "시간": "17:02:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2252, + "역명": "동래", + "시간": "19:12:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1303, + "역명": "동래", + "시간": "19:53:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2314, + "역명": "동래", + "시간": "22:04:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1343, + "역명": "동래", + "시간": "22:47:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1007, + "역명": "동래", + "시간": "05:57:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2028, + "역명": "동래", + "시간": "08:10:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1071, + "역명": "동래", + "시간": "08:54:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2096, + "역명": "동래", + "시간": "11:06:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1127, + "역명": "동래", + "시간": "11:50:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2150, + "역명": "동래", + "시간": "14:01:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1181, + "역명": "동래", + "시간": "14:45:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2204, + "역명": "동래", + "시간": "16:55:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1241, + "역명": "동래", + "시간": "17:37:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2266, + "역명": "동래", + "시간": "19:47:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1313, + "역명": "동래", + "시간": "20:33:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2324, + "역명": "동래", + "시간": "22:49:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 13, + "열번": 1351, + "역명": "동래", + "시간": "23:32:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 14, + "열번": 1001, + "역명": "동래", + "시간": "05:24:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2018, + "역명": "동래", + "시간": "07:39:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1055, + "역명": "동래", + "시간": "08:22:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1009, + "역명": "동래", + "시간": "06:08:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2032, + "역명": "동래", + "시간": "08:19:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1075, + "역명": "동래", + "시간": "09:03:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2100, + "역명": "동래", + "시간": "11:19:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1131, + "역명": "동래", + "시간": "12:03:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2154, + "역명": "동래", + "시간": "14:14:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1185, + "역명": "동래", + "시간": "14:58:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2208, + "역명": "동래", + "시간": "17:12:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1249, + "역명": "동래", + "시간": "17:54:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2274, + "역명": "동래", + "시간": "20:07:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2026, + "역명": "동래", + "시간": "08:05:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1067, + "역명": "동래", + "시간": "08:46:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2036, + "역명": "동래", + "시간": "08:28:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2030, + "역명": "동래", + "시간": "08:15:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1073, + "역명": "동래", + "시간": "08:58:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2098, + "역명": "동래", + "시간": "11:12:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1129, + "역명": "동래", + "시간": "11:56:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2152, + "역명": "동래", + "시간": "14:08:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1183, + "역명": "동래", + "시간": "14:52:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2206, + "역명": "동래", + "시간": "17:07:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1247, + "역명": "동래", + "시간": "17:50:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2272, + "역명": "동래", + "시간": "20:02:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1317, + "역명": "동래", + "시간": "20:49:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2326, + "역명": "동래", + "시간": "22:59:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 18, + "열번": 7931, + "역명": "동래", + "시간": "23:47:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 19, + "열번": 1011, + "역명": "동래", + "시간": "06:19:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2038, + "역명": "동래", + "시간": "08:33:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1079, + "역명": "동래", + "시간": "09:15:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2102, + "역명": "동래", + "시간": "11:25:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1133, + "역명": "동래", + "시간": "12:09:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2156, + "역명": "동래", + "시간": "14:21:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1187, + "역명": "동래", + "시간": "15:05:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2210, + "역명": "동래", + "시간": "17:17:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1253, + "역명": "동래", + "시간": "18:02:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2278, + "역명": "동래", + "시간": "20:17:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2034, + "역명": "동래", + "시간": "08:24:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 20, + "열번": 1077, + "역명": "동래", + "시간": "09:09:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 21, + "열번": 1013, + "역명": "동래", + "시간": "06:30:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2042, + "역명": "동래", + "시간": "08:42:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1083, + "역명": "동래", + "시간": "09:27:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2106, + "역명": "동래", + "시간": "11:38:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1137, + "역명": "동래", + "시간": "12:22:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2160, + "역명": "동래", + "시간": "14:34:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1191, + "역명": "동래", + "시간": "15:18:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2214, + "역명": "동래", + "시간": "17:27:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1257, + "역명": "동래", + "시간": "18:10:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2280, + "역명": "동래", + "시간": "20:22:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1321, + "역명": "동래", + "시간": "21:05:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2330, + "역명": "동래", + "시간": "23:21:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2040, + "역명": "동래", + "시간": "08:37:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1081, + "역명": "동래", + "시간": "09:21:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2104, + "역명": "동래", + "시간": "11:32:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1135, + "역명": "동래", + "시간": "12:16:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2158, + "역명": "동래", + "시간": "14:27:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1189, + "역명": "동래", + "시간": "15:11:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2212, + "역명": "동래", + "시간": "17:22:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1255, + "역명": "동래", + "시간": "18:06:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2044, + "역명": "동래", + "시간": "08:46:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "동래", + "시간": "08:55:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1087, + "역명": "동래", + "시간": "09:40:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2110, + "역명": "동래", + "시간": "11:51:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1141, + "역명": "동래", + "시간": "12:35:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2164, + "역명": "동래", + "시간": "14:47:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1195, + "역명": "동래", + "시간": "15:31:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2218, + "역명": "동래", + "시간": "17:42:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1265, + "역명": "동래", + "시간": "18:26:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 24, + "열번": 2286, + "역명": "동래", + "시간": "20:40:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "동래", + "시간": "06:58:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2054, + "역명": "동래", + "시간": "09:09:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1091, + "역명": "동래", + "시간": "09:53:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2114, + "역명": "동래", + "시간": "12:04:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1145, + "역명": "동래", + "시간": "12:48:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2168, + "역명": "동래", + "시간": "15:00:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1199, + "역명": "동래", + "시간": "15:44:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2222, + "역명": "동래", + "시간": "17:55:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1271, + "역명": "동래", + "시간": "18:38:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2290, + "역명": "동래", + "시간": "20:52:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1329, + "역명": "동래", + "시간": "21:37:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2336, + "역명": "동래", + "시간": "23:57:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2052, + "역명": "동래", + "시간": "09:04:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1089, + "역명": "동래", + "시간": "09:46:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2112, + "역명": "동래", + "시간": "11:58:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1143, + "역명": "동래", + "시간": "12:42:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2166, + "역명": "동래", + "시간": "14:53:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1197, + "역명": "동래", + "시간": "15:37:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2220, + "역명": "동래", + "시간": "17:51:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1269, + "역명": "동래", + "시간": "18:34:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2288, + "역명": "동래", + "시간": "20:46:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1327, + "역명": "동래", + "시간": "21:29:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 26, + "열번": 2334, + "역명": "동래", + "시간": "23:45:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1023, + "역명": "동래", + "시간": "07:13:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 27, + "열번": 2060, + "역명": "동래", + "시간": "09:23:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2056, + "역명": "동래", + "시간": "09:13:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1093, + "역명": "동래", + "시간": "09:59:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2116, + "역명": "동래", + "시간": "12:11:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1147, + "역명": "동래", + "시간": "12:55:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2170, + "역명": "동래", + "시간": "15:06:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1201, + "역명": "동래", + "시간": "15:50:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2224, + "역명": "동래", + "시간": "18:03:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1275, + "역명": "동래", + "시간": "18:46:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2292, + "역명": "동래", + "시간": "20:58:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1331, + "역명": "동래", + "시간": "21:46:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1027, + "역명": "동래", + "시간": "07:23:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2064, + "역명": "동래", + "시간": "09:33:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1099, + "역명": "동래", + "시간": "10:19:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2122, + "역명": "동래", + "시간": "12:30:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1153, + "역명": "동래", + "시간": "13:14:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2176, + "역명": "동래", + "시간": "15:26:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1207, + "역명": "동래", + "시간": "16:08:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2230, + "역명": "동래", + "시간": "18:19:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1283, + "역명": "동래", + "시간": "19:02:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 29, + "열번": 2298, + "역명": "동래", + "시간": "21:16:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1037, + "역명": "동래", + "시간": "07:46:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1031, + "역명": "동래", + "시간": "07:33:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2068, + "역명": "동래", + "시간": "09:43:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1101, + "역명": "동래", + "시간": "10:25:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2124, + "역명": "동래", + "시간": "12:37:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1155, + "역명": "동래", + "시간": "13:21:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2178, + "역명": "동래", + "시간": "15:32:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1209, + "역명": "동래", + "시간": "16:14:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2232, + "역명": "동래", + "시간": "18:27:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1287, + "역명": "동래", + "시간": "19:10:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2300, + "역명": "동래", + "시간": "21:22:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1335, + "역명": "동래", + "시간": "22:06:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 32, + "열번": 1049, + "역명": "동래", + "시간": "08:10:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1035, + "역명": "동래", + "시간": "07:42:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2072, + "역명": "동래", + "시간": "09:54:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1105, + "역명": "동래", + "시간": "10:38:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2128, + "역명": "동래", + "시간": "12:50:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1159, + "역명": "동래", + "시간": "13:34:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2182, + "역명": "동래", + "시간": "15:45:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1215, + "역명": "동래", + "시간": "16:32:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2238, + "역명": "동래", + "시간": "18:43:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1295, + "역명": "동래", + "시간": "19:28:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2306, + "역명": "동래", + "시간": "21:40:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 33, + "열번": 1339, + "역명": "동래", + "시간": "22:26:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 34, + "열번": 1061, + "역명": "동래", + "시간": "08:34:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1041, + "역명": "동래", + "시간": "07:54:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2076, + "역명": "동래", + "시간": "10:06:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1109, + "역명": "동래", + "시간": "10:51:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2132, + "역명": "동래", + "시간": "13:03:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1163, + "역명": "동래", + "시간": "13:47:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2186, + "역명": "동래", + "시간": "15:58:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1219, + "역명": "동래", + "시간": "16:42:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 35, + "열번": 2242, + "역명": "동래", + "시간": "18:51:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 36, + "열번": 8904, + "역명": "동래", + "시간": "17:01:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1245, + "역명": "동래", + "시간": "17:46:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 36, + "열번": 2270, + "역명": "동래", + "시간": "19:57:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1315, + "역명": "동래", + "시간": "20:41:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1043, + "역명": "동래", + "시간": "07:58:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2078, + "역명": "동래", + "시간": "10:12:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1111, + "역명": "동래", + "시간": "10:58:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2134, + "역명": "동래", + "시간": "13:09:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1165, + "역명": "동래", + "시간": "13:53:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2188, + "역명": "동래", + "시간": "16:05:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1221, + "역명": "동래", + "시간": "16:47:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 37, + "열번": 2246, + "역명": "동래", + "시간": "18:59:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 38, + "열번": 8906, + "역명": "동래", + "시간": "17:32:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 38, + "열번": 1259, + "역명": "동래", + "시간": "18:14:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 39, + "열번": 1047, + "역명": "동래", + "시간": "08:06:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2080, + "역명": "동래", + "시간": "10:18:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1113, + "역명": "동래", + "시간": "11:04:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2136, + "역명": "동래", + "시간": "13:16:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1167, + "역명": "동래", + "시간": "14:00:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2190, + "역명": "동래", + "시간": "16:11:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1225, + "역명": "동래", + "시간": "16:57:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 39, + "열번": 2250, + "역명": "동래", + "시간": "19:07:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 40, + "열번": 8908, + "역명": "동래", + "시간": "17:47:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 40, + "열번": 1267, + "역명": "동래", + "시간": "18:30:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 41, + "열번": 1053, + "역명": "동래", + "시간": "08:18:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2084, + "역명": "동래", + "시간": "10:30:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1117, + "역명": "동래", + "시간": "11:17:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2140, + "역명": "동래", + "시간": "13:29:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1171, + "역명": "동래", + "시간": "14:13:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2194, + "역명": "동래", + "시간": "16:24:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1229, + "역명": "동래", + "시간": "17:07:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2254, + "역명": "동래", + "시간": "19:17:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1305, + "역명": "동래", + "시간": "20:01:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2316, + "역명": "동래", + "시간": "22:11:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1345, + "역명": "동래", + "시간": "22:58:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 42, + "열번": 8910, + "역명": "동래", + "시간": "17:59:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 42, + "열번": 1273, + "역명": "동래", + "시간": "18:42:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 43, + "열번": 1057, + "역명": "동래", + "시간": "08:26:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2086, + "역명": "동래", + "시간": "10:36:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1119, + "역명": "동래", + "시간": "11:24:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2142, + "역명": "동래", + "시간": "13:35:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1173, + "역명": "동래", + "시간": "14:19:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2196, + "역명": "동래", + "시간": "16:31:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1233, + "역명": "동래", + "시간": "17:17:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2258, + "역명": "동래", + "시간": "19:27:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1307, + "역명": "동래", + "시간": "20:09:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 43, + "열번": 2318, + "역명": "동래", + "시간": "22:19:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 44, + "열번": 8912, + "역명": "동래", + "시간": "18:11:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 44, + "열번": 1279, + "역명": "동래", + "시간": "18:54:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 45, + "열번": 1069, + "역명": "동래", + "시간": "08:50:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2094, + "역명": "동래", + "시간": "11:00:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1125, + "역명": "동래", + "시간": "11:43:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2148, + "역명": "동래", + "시간": "13:55:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1179, + "역명": "동래", + "시간": "14:39:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2202, + "역명": "동래", + "시간": "16:49:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1239, + "역명": "동래", + "시간": "17:32:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2264, + "역명": "동래", + "시간": "19:42:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1311, + "역명": "동래", + "시간": "20:25:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2322, + "역명": "동래", + "시간": "22:39:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 45, + "열번": 1349, + "역명": "동래", + "시간": "23:22:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 46, + "열번": 8914, + "역명": "동래", + "시간": "18:23:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 46, + "열번": 1285, + "역명": "동래", + "시간": "19:06:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 47, + "열번": 1211, + "역명": "동래", + "시간": "16:20:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 47, + "열번": 2234, + "역명": "동래", + "시간": "18:31:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 47, + "열번": 1289, + "역명": "동래", + "시간": "19:14:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 47, + "열번": 2302, + "역명": "동래", + "시간": "21:28:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 48, + "열번": 8916, + "역명": "동래", + "시간": "18:35:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 48, + "열번": 1291, + "역명": "동래", + "시간": "19:18:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 49, + "열번": 1223, + "역명": "동래", + "시간": "16:52:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 49, + "열번": 2248, + "역명": "동래", + "시간": "19:03:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 49, + "열번": 1301, + "역명": "동래", + "시간": "19:45:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 49, + "열번": 2312, + "역명": "동래", + "시간": "21:58:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 50, + "열번": 2244, + "역명": "동래", + "시간": "18:55:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 50, + "열번": 1299, + "역명": "동래", + "시간": "19:38:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 50, + "열번": 2310, + "역명": "동래", + "시간": "21:52:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 50, + "열번": 1341, + "역명": "동래", + "시간": "22:36:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 51, + "열번": 1231, + "역명": "동래", + "시간": "17:12:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 51, + "열번": 2256, + "역명": "동래", + "시간": "19:22:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 52, + "열번": 6906, + "역명": "동래", + "시간": "10:21:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 52, + "열번": 5905, + "역명": "동래", + "시간": "11:07:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 53, + "열번": 1243, + "역명": "동래", + "시간": "17:42:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 53, + "열번": 2268, + "역명": "동래", + "시간": "19:52:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 54, + "열번": 6910, + "역명": "동래", + "시간": "14:04:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 54, + "열번": 5907, + "역명": "동래", + "시간": "14:48:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 55, + "열번": 1251, + "역명": "동래", + "시간": "17:58:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 55, + "열번": 2276, + "역명": "동래", + "시간": "20:12:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 55, + "열번": 1319, + "역명": "동래", + "시간": "20:57:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 55, + "열번": 2328, + "역명": "동래", + "시간": "23:09:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 57, + "열번": 1263, + "역명": "동래", + "시간": "18:22:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 57, + "열번": 2284, + "역명": "동래", + "시간": "20:34:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 57, + "열번": 1325, + "역명": "동래", + "시간": "21:21:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 57, + "열번": 2332, + "역명": "동래", + "시간": "23:33:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 59, + "열번": 5901, + "역명": "동래", + "시간": "10:15:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 59, + "열번": 6902, + "역명": "동래", + "시간": "12:27:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 61, + "열번": 5903, + "역명": "동래", + "시간": "13:43:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 61, + "열번": 5904, + "역명": "동래", + "시간": "15:55:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "교대앞", + "시간": "06:03:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "교대앞", + "시간": "06:51:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2050, + "역명": "교대앞", + "시간": "08:58:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "교대앞", + "시간": "05:49:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "교대앞", + "시간": "06:42:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "교대앞", + "시간": "08:49:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1085, + "역명": "교대앞", + "시간": "09:35:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2108, + "역명": "교대앞", + "시간": "11:43:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1139, + "역명": "교대앞", + "시간": "12:31:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2162, + "역명": "교대앞", + "시간": "14:38:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1193, + "역명": "교대앞", + "시간": "15:26:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2216, + "역명": "교대앞", + "시간": "17:35:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1261, + "역명": "교대앞", + "시간": "18:20:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2282, + "역명": "교대앞", + "시간": "20:26:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1323, + "역명": "교대앞", + "시간": "21:15:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "교대앞", + "시간": "06:16:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "교대앞", + "시간": "07:09:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2058, + "역명": "교대앞", + "시간": "09:16:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1095, + "역명": "교대앞", + "시간": "10:08:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2118, + "역명": "교대앞", + "시간": "12:15:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1149, + "역명": "교대앞", + "시간": "13:03:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2172, + "역명": "교대앞", + "시간": "15:11:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1203, + "역명": "교대앞", + "시간": "15:58:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2226, + "역명": "교대앞", + "시간": "18:05:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1277, + "역명": "교대앞", + "시간": "18:52:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2294, + "역명": "교대앞", + "시간": "21:02:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "교대앞", + "시간": "06:29:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1025, + "역명": "교대앞", + "시간": "07:20:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2062, + "역명": "교대앞", + "시간": "09:26:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1097, + "역명": "교대앞", + "시간": "10:14:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2120, + "역명": "교대앞", + "시간": "12:22:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1151, + "역명": "교대앞", + "시간": "13:10:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2174, + "역명": "교대앞", + "시간": "15:17:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1205, + "역명": "교대앞", + "시간": "16:04:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2228, + "역명": "교대앞", + "시간": "18:13:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1281, + "역명": "교대앞", + "시간": "19:00:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2296, + "역명": "교대앞", + "시간": "21:08:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1333, + "역명": "교대앞", + "시간": "21:58:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2338, + "역명": "교대앞", + "시간": "00:11:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2008, + "역명": "교대앞", + "시간": "06:41:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1029, + "역명": "교대앞", + "시간": "07:30:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2066, + "역명": "교대앞", + "시간": "09:36:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2010, + "역명": "교대앞", + "시간": "06:53:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1033, + "역명": "교대앞", + "시간": "07:40:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2070, + "역명": "교대앞", + "시간": "09:46:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1103, + "역명": "교대앞", + "시간": "10:34:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2126, + "역명": "교대앞", + "시간": "12:41:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1157, + "역명": "교대앞", + "시간": "13:29:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2180, + "역명": "교대앞", + "시간": "15:37:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1213, + "역명": "교대앞", + "시간": "16:28:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2236, + "역명": "교대앞", + "시간": "18:37:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1293, + "역명": "교대앞", + "시간": "19:25:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2304, + "역명": "교대앞", + "시간": "21:32:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1337, + "역명": "교대앞", + "시간": "22:18:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1003, + "역명": "교대앞", + "시간": "05:37:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2020, + "역명": "교대앞", + "시간": "07:45:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1059, + "역명": "교대앞", + "시간": "08:32:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2088, + "역명": "교대앞", + "시간": "10:40:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1121, + "역명": "교대앞", + "시간": "11:32:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2144, + "역명": "교대앞", + "시간": "13:40:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1175, + "역명": "교대앞", + "시간": "14:28:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2198, + "역명": "교대앞", + "시간": "16:35:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1235, + "역명": "교대앞", + "시간": "17:24:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2260, + "역명": "교대앞", + "시간": "19:30:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1309, + "역명": "교대앞", + "시간": "20:19:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2320, + "역명": "교대앞", + "시간": "22:27:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1347, + "역명": "교대앞", + "시간": "23:12:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2012, + "역명": "교대앞", + "시간": "07:05:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1039, + "역명": "교대앞", + "시간": "07:52:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2074, + "역명": "교대앞", + "시간": "09:58:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1107, + "역명": "교대앞", + "시간": "10:47:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2130, + "역명": "교대앞", + "시간": "12:54:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1161, + "역명": "교대앞", + "시간": "13:42:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2184, + "역명": "교대앞", + "시간": "15:50:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1217, + "역명": "교대앞", + "시간": "16:39:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2240, + "역명": "교대앞", + "시간": "18:45:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1297, + "역명": "교대앞", + "시간": "19:35:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 8, + "열번": 2308, + "역명": "교대앞", + "시간": "21:44:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 9, + "열번": 2022, + "역명": "교대앞", + "시간": "07:51:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1063, + "역명": "교대앞", + "시간": "08:40:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 9, + "열번": 2090, + "역명": "교대앞", + "시간": "10:46:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2014, + "역명": "교대앞", + "시간": "07:17:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1045, + "역명": "교대앞", + "시간": "08:04:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 11, + "열번": 1005, + "역명": "교대앞", + "시간": "05:48:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2024, + "역명": "교대앞", + "시간": "07:57:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1065, + "역명": "교대앞", + "시간": "08:44:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2092, + "역명": "교대앞", + "시간": "10:52:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1123, + "역명": "교대앞", + "시간": "11:39:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2146, + "역명": "교대앞", + "시간": "13:46:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1177, + "역명": "교대앞", + "시간": "14:34:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2200, + "역명": "교대앞", + "시간": "16:41:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1237, + "역명": "교대앞", + "시간": "17:29:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 11, + "열번": 2262, + "역명": "교대앞", + "시간": "19:35:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2016, + "역명": "교대앞", + "시간": "07:28:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1051, + "역명": "교대앞", + "시간": "08:16:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2082, + "역명": "교대앞", + "시간": "10:22:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1115, + "역명": "교대앞", + "시간": "11:13:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2138, + "역명": "교대앞", + "시간": "13:20:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1169, + "역명": "교대앞", + "시간": "14:08:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "교대앞", + "시간": "16:16:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1227, + "역명": "교대앞", + "시간": "17:04:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2252, + "역명": "교대앞", + "시간": "19:10:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1303, + "역명": "교대앞", + "시간": "19:55:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2314, + "역명": "교대앞", + "시간": "22:02:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1343, + "역명": "교대앞", + "시간": "22:49:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1007, + "역명": "교대앞", + "시간": "05:59:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2028, + "역명": "교대앞", + "시간": "08:08:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1071, + "역명": "교대앞", + "시간": "08:56:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2096, + "역명": "교대앞", + "시간": "11:04:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1127, + "역명": "교대앞", + "시간": "11:52:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2150, + "역명": "교대앞", + "시간": "13:59:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1181, + "역명": "교대앞", + "시간": "14:47:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2204, + "역명": "교대앞", + "시간": "16:53:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1241, + "역명": "교대앞", + "시간": "17:39:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2266, + "역명": "교대앞", + "시간": "19:45:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1313, + "역명": "교대앞", + "시간": "20:35:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2324, + "역명": "교대앞", + "시간": "22:47:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 13, + "열번": 1351, + "역명": "교대앞", + "시간": "23:34:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 14, + "열번": 1001, + "역명": "교대앞", + "시간": "05:26:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2018, + "역명": "교대앞", + "시간": "07:37:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1055, + "역명": "교대앞", + "시간": "08:24:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1009, + "역명": "교대앞", + "시간": "06:10:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2032, + "역명": "교대앞", + "시간": "08:17:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1075, + "역명": "교대앞", + "시간": "09:05:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2100, + "역명": "교대앞", + "시간": "11:17:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1131, + "역명": "교대앞", + "시간": "12:05:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2154, + "역명": "교대앞", + "시간": "14:12:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1185, + "역명": "교대앞", + "시간": "15:00:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2208, + "역명": "교대앞", + "시간": "17:10:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1249, + "역명": "교대앞", + "시간": "17:56:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2274, + "역명": "교대앞", + "시간": "20:05:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2026, + "역명": "교대앞", + "시간": "08:03:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1067, + "역명": "교대앞", + "시간": "08:48:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2036, + "역명": "교대앞", + "시간": "08:26:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2030, + "역명": "교대앞", + "시간": "08:13:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1073, + "역명": "교대앞", + "시간": "09:00:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2098, + "역명": "교대앞", + "시간": "11:10:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1129, + "역명": "교대앞", + "시간": "11:58:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2152, + "역명": "교대앞", + "시간": "14:06:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1183, + "역명": "교대앞", + "시간": "14:54:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2206, + "역명": "교대앞", + "시간": "17:05:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1247, + "역명": "교대앞", + "시간": "17:52:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2272, + "역명": "교대앞", + "시간": "20:00:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1317, + "역명": "교대앞", + "시간": "20:51:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2326, + "역명": "교대앞", + "시간": "22:57:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 18, + "열번": 7931, + "역명": "교대앞", + "시간": "23:49:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 19, + "열번": 1011, + "역명": "교대앞", + "시간": "06:21:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2038, + "역명": "교대앞", + "시간": "08:31:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1079, + "역명": "교대앞", + "시간": "09:17:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2102, + "역명": "교대앞", + "시간": "11:23:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1133, + "역명": "교대앞", + "시간": "12:11:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2156, + "역명": "교대앞", + "시간": "14:19:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1187, + "역명": "교대앞", + "시간": "15:07:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2210, + "역명": "교대앞", + "시간": "17:15:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1253, + "역명": "교대앞", + "시간": "18:04:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2278, + "역명": "교대앞", + "시간": "20:15:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2034, + "역명": "교대앞", + "시간": "08:22:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 20, + "열번": 1077, + "역명": "교대앞", + "시간": "09:11:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 21, + "열번": 1013, + "역명": "교대앞", + "시간": "06:32:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2042, + "역명": "교대앞", + "시간": "08:40:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1083, + "역명": "교대앞", + "시간": "09:29:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2106, + "역명": "교대앞", + "시간": "11:36:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1137, + "역명": "교대앞", + "시간": "12:24:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2160, + "역명": "교대앞", + "시간": "14:32:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1191, + "역명": "교대앞", + "시간": "15:20:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2214, + "역명": "교대앞", + "시간": "17:25:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1257, + "역명": "교대앞", + "시간": "18:12:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2280, + "역명": "교대앞", + "시간": "20:20:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1321, + "역명": "교대앞", + "시간": "21:07:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2330, + "역명": "교대앞", + "시간": "23:19:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2040, + "역명": "교대앞", + "시간": "08:35:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1081, + "역명": "교대앞", + "시간": "09:23:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2104, + "역명": "교대앞", + "시간": "11:30:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1135, + "역명": "교대앞", + "시간": "12:18:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2158, + "역명": "교대앞", + "시간": "14:25:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1189, + "역명": "교대앞", + "시간": "15:13:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2212, + "역명": "교대앞", + "시간": "17:20:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1255, + "역명": "교대앞", + "시간": "18:08:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2044, + "역명": "교대앞", + "시간": "08:44:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "교대앞", + "시간": "08:53:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1087, + "역명": "교대앞", + "시간": "09:42:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2110, + "역명": "교대앞", + "시간": "11:49:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1141, + "역명": "교대앞", + "시간": "12:37:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2164, + "역명": "교대앞", + "시간": "14:45:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1195, + "역명": "교대앞", + "시간": "15:33:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2218, + "역명": "교대앞", + "시간": "17:40:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1265, + "역명": "교대앞", + "시간": "18:28:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 24, + "열번": 2286, + "역명": "교대앞", + "시간": "20:38:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "교대앞", + "시간": "07:00:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2054, + "역명": "교대앞", + "시간": "09:07:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1091, + "역명": "교대앞", + "시간": "09:55:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2114, + "역명": "교대앞", + "시간": "12:02:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1145, + "역명": "교대앞", + "시간": "12:50:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2168, + "역명": "교대앞", + "시간": "14:58:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1199, + "역명": "교대앞", + "시간": "15:46:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2222, + "역명": "교대앞", + "시간": "17:53:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1271, + "역명": "교대앞", + "시간": "18:40:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2290, + "역명": "교대앞", + "시간": "20:50:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1329, + "역명": "교대앞", + "시간": "21:39:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2336, + "역명": "교대앞", + "시간": "23:55:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2052, + "역명": "교대앞", + "시간": "09:02:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1089, + "역명": "교대앞", + "시간": "09:48:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2112, + "역명": "교대앞", + "시간": "11:56:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1143, + "역명": "교대앞", + "시간": "12:44:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2166, + "역명": "교대앞", + "시간": "14:51:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1197, + "역명": "교대앞", + "시간": "15:39:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2220, + "역명": "교대앞", + "시간": "17:49:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1269, + "역명": "교대앞", + "시간": "18:36:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2288, + "역명": "교대앞", + "시간": "20:44:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1327, + "역명": "교대앞", + "시간": "21:31:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 26, + "열번": 2334, + "역명": "교대앞", + "시간": "23:43:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1023, + "역명": "교대앞", + "시간": "07:15:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 27, + "열번": 2060, + "역명": "교대앞", + "시간": "09:21:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2056, + "역명": "교대앞", + "시간": "09:11:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1093, + "역명": "교대앞", + "시간": "10:01:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2116, + "역명": "교대앞", + "시간": "12:09:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1147, + "역명": "교대앞", + "시간": "12:57:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2170, + "역명": "교대앞", + "시간": "15:04:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1201, + "역명": "교대앞", + "시간": "15:52:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2224, + "역명": "교대앞", + "시간": "18:01:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1275, + "역명": "교대앞", + "시간": "18:48:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2292, + "역명": "교대앞", + "시간": "20:56:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1331, + "역명": "교대앞", + "시간": "21:48:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1027, + "역명": "교대앞", + "시간": "07:25:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2064, + "역명": "교대앞", + "시간": "09:31:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1099, + "역명": "교대앞", + "시간": "10:21:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2122, + "역명": "교대앞", + "시간": "12:28:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1153, + "역명": "교대앞", + "시간": "13:16:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2176, + "역명": "교대앞", + "시간": "15:24:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1207, + "역명": "교대앞", + "시간": "16:10:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2230, + "역명": "교대앞", + "시간": "18:17:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1283, + "역명": "교대앞", + "시간": "19:04:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 29, + "열번": 2298, + "역명": "교대앞", + "시간": "21:14:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1037, + "역명": "교대앞", + "시간": "07:48:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1031, + "역명": "교대앞", + "시간": "07:35:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2068, + "역명": "교대앞", + "시간": "09:41:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1101, + "역명": "교대앞", + "시간": "10:27:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2124, + "역명": "교대앞", + "시간": "12:35:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1155, + "역명": "교대앞", + "시간": "13:23:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2178, + "역명": "교대앞", + "시간": "15:30:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1209, + "역명": "교대앞", + "시간": "16:16:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2232, + "역명": "교대앞", + "시간": "18:25:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1287, + "역명": "교대앞", + "시간": "19:12:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2300, + "역명": "교대앞", + "시간": "21:20:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1335, + "역명": "교대앞", + "시간": "22:08:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 32, + "열번": 1049, + "역명": "교대앞", + "시간": "08:12:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1035, + "역명": "교대앞", + "시간": "07:44:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2072, + "역명": "교대앞", + "시간": "09:52:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1105, + "역명": "교대앞", + "시간": "10:40:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2128, + "역명": "교대앞", + "시간": "12:48:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1159, + "역명": "교대앞", + "시간": "13:36:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2182, + "역명": "교대앞", + "시간": "15:43:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1215, + "역명": "교대앞", + "시간": "16:34:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2238, + "역명": "교대앞", + "시간": "18:41:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1295, + "역명": "교대앞", + "시간": "19:30:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2306, + "역명": "교대앞", + "시간": "21:38:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 33, + "열번": 1339, + "역명": "교대앞", + "시간": "22:28:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 34, + "열번": 1061, + "역명": "교대앞", + "시간": "08:36:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1041, + "역명": "교대앞", + "시간": "07:56:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2076, + "역명": "교대앞", + "시간": "10:04:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1109, + "역명": "교대앞", + "시간": "10:53:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2132, + "역명": "교대앞", + "시간": "13:01:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1163, + "역명": "교대앞", + "시간": "13:49:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2186, + "역명": "교대앞", + "시간": "15:56:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1219, + "역명": "교대앞", + "시간": "16:44:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 35, + "열번": 2242, + "역명": "교대앞", + "시간": "18:49:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 36, + "열번": 8904, + "역명": "교대앞", + "시간": "16:59:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1245, + "역명": "교대앞", + "시간": "17:48:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 36, + "열번": 2270, + "역명": "교대앞", + "시간": "19:55:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1315, + "역명": "교대앞", + "시간": "20:43:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1043, + "역명": "교대앞", + "시간": "08:00:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2078, + "역명": "교대앞", + "시간": "10:10:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1111, + "역명": "교대앞", + "시간": "11:00:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2134, + "역명": "교대앞", + "시간": "13:07:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1165, + "역명": "교대앞", + "시간": "13:55:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2188, + "역명": "교대앞", + "시간": "16:03:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1221, + "역명": "교대앞", + "시간": "16:49:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 37, + "열번": 2246, + "역명": "교대앞", + "시간": "18:57:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 38, + "열번": 8906, + "역명": "교대앞", + "시간": "17:30:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 38, + "열번": 1259, + "역명": "교대앞", + "시간": "18:16:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 39, + "열번": 1047, + "역명": "교대앞", + "시간": "08:08:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2080, + "역명": "교대앞", + "시간": "10:16:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1113, + "역명": "교대앞", + "시간": "11:06:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2136, + "역명": "교대앞", + "시간": "13:14:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1167, + "역명": "교대앞", + "시간": "14:02:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2190, + "역명": "교대앞", + "시간": "16:09:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1225, + "역명": "교대앞", + "시간": "16:59:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 39, + "열번": 2250, + "역명": "교대앞", + "시간": "19:05:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 40, + "열번": 8908, + "역명": "교대앞", + "시간": "17:45:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 40, + "열번": 1267, + "역명": "교대앞", + "시간": "18:32:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 41, + "열번": 1053, + "역명": "교대앞", + "시간": "08:20:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2084, + "역명": "교대앞", + "시간": "10:28:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1117, + "역명": "교대앞", + "시간": "11:19:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2140, + "역명": "교대앞", + "시간": "13:27:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1171, + "역명": "교대앞", + "시간": "14:15:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2194, + "역명": "교대앞", + "시간": "16:22:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1229, + "역명": "교대앞", + "시간": "17:09:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2254, + "역명": "교대앞", + "시간": "19:15:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1305, + "역명": "교대앞", + "시간": "20:03:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2316, + "역명": "교대앞", + "시간": "22:09:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1345, + "역명": "교대앞", + "시간": "23:00:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 42, + "열번": 8910, + "역명": "교대앞", + "시간": "17:57:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 42, + "열번": 1273, + "역명": "교대앞", + "시간": "18:44:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 43, + "열번": 1057, + "역명": "교대앞", + "시간": "08:28:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2086, + "역명": "교대앞", + "시간": "10:34:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1119, + "역명": "교대앞", + "시간": "11:26:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2142, + "역명": "교대앞", + "시간": "13:33:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1173, + "역명": "교대앞", + "시간": "14:21:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2196, + "역명": "교대앞", + "시간": "16:29:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1233, + "역명": "교대앞", + "시간": "17:19:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2258, + "역명": "교대앞", + "시간": "19:25:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1307, + "역명": "교대앞", + "시간": "20:11:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 43, + "열번": 2318, + "역명": "교대앞", + "시간": "22:17:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 44, + "열번": 8912, + "역명": "교대앞", + "시간": "18:09:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 44, + "열번": 1279, + "역명": "교대앞", + "시간": "18:56:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 45, + "열번": 1069, + "역명": "교대앞", + "시간": "08:52:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2094, + "역명": "교대앞", + "시간": "10:58:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1125, + "역명": "교대앞", + "시간": "11:45:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2148, + "역명": "교대앞", + "시간": "13:53:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1179, + "역명": "교대앞", + "시간": "14:41:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2202, + "역명": "교대앞", + "시간": "16:47:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1239, + "역명": "교대앞", + "시간": "17:34:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2264, + "역명": "교대앞", + "시간": "19:40:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1311, + "역명": "교대앞", + "시간": "20:27:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2322, + "역명": "교대앞", + "시간": "22:37:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 45, + "열번": 1349, + "역명": "교대앞", + "시간": "23:24:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 46, + "열번": 8914, + "역명": "교대앞", + "시간": "18:21:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 46, + "열번": 1285, + "역명": "교대앞", + "시간": "19:08:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 47, + "열번": 1211, + "역명": "교대앞", + "시간": "16:22:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 47, + "열번": 2234, + "역명": "교대앞", + "시간": "18:29:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 47, + "열번": 1289, + "역명": "교대앞", + "시간": "19:16:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 47, + "열번": 2302, + "역명": "교대앞", + "시간": "21:26:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 48, + "열번": 8916, + "역명": "교대앞", + "시간": "18:33:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 48, + "열번": 1291, + "역명": "교대앞", + "시간": "19:20:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 49, + "열번": 1223, + "역명": "교대앞", + "시간": "16:54:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 49, + "열번": 2248, + "역명": "교대앞", + "시간": "19:01:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 49, + "열번": 1301, + "역명": "교대앞", + "시간": "19:47:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 49, + "열번": 2312, + "역명": "교대앞", + "시간": "21:56:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 50, + "열번": 2244, + "역명": "교대앞", + "시간": "18:53:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 50, + "열번": 1299, + "역명": "교대앞", + "시간": "19:40:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 50, + "열번": 2310, + "역명": "교대앞", + "시간": "21:50:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 50, + "열번": 1341, + "역명": "교대앞", + "시간": "22:38:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 51, + "열번": 1231, + "역명": "교대앞", + "시간": "17:14:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 51, + "열번": 2256, + "역명": "교대앞", + "시간": "19:20:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 52, + "열번": 6906, + "역명": "교대앞", + "시간": "10:19:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 52, + "열번": 5905, + "역명": "교대앞", + "시간": "11:09:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 53, + "열번": 1243, + "역명": "교대앞", + "시간": "17:44:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 53, + "열번": 2268, + "역명": "교대앞", + "시간": "19:50:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 54, + "열번": 6910, + "역명": "교대앞", + "시간": "14:02:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 54, + "열번": 5907, + "역명": "교대앞", + "시간": "14:50:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 55, + "열번": 1251, + "역명": "교대앞", + "시간": "18:00:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 55, + "열번": 2276, + "역명": "교대앞", + "시간": "20:10:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 55, + "열번": 1319, + "역명": "교대앞", + "시간": "20:59:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 55, + "열번": 2328, + "역명": "교대앞", + "시간": "23:07:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 57, + "열번": 1263, + "역명": "교대앞", + "시간": "18:24:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 57, + "열번": 2284, + "역명": "교대앞", + "시간": "20:32:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 57, + "열번": 1325, + "역명": "교대앞", + "시간": "21:23:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 57, + "열번": 2332, + "역명": "교대앞", + "시간": "23:31:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 59, + "열번": 5901, + "역명": "교대앞", + "시간": "10:17:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 59, + "열번": 6902, + "역명": "교대앞", + "시간": "12:25:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 61, + "열번": 5903, + "역명": "교대앞", + "시간": "13:45:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 61, + "열번": 5904, + "역명": "교대앞", + "시간": "15:53:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "연산", + "시간": "06:00:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "연산", + "시간": "06:53:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2050, + "역명": "연산", + "시간": "08:55:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "연산", + "시간": "05:45:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "연산", + "시간": "06:44:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "연산", + "시간": "08:46:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1085, + "역명": "연산", + "시간": "09:37:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2108, + "역명": "연산", + "시간": "11:40:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1139, + "역명": "연산", + "시간": "12:33:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2162, + "역명": "연산", + "시간": "14:36:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1193, + "역명": "연산", + "시간": "15:28:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2216, + "역명": "연산", + "시간": "17:33:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1261, + "역명": "연산", + "시간": "18:22:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2282, + "역명": "연산", + "시간": "20:24:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1323, + "역명": "연산", + "시간": "21:17:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "연산", + "시간": "06:14:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "연산", + "시간": "07:11:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2058, + "역명": "연산", + "시간": "09:14:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1095, + "역명": "연산", + "시간": "10:10:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2118, + "역명": "연산", + "시간": "12:13:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1149, + "역명": "연산", + "시간": "13:05:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2172, + "역명": "연산", + "시간": "15:08:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1203, + "역명": "연산", + "시간": "16:00:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2226, + "역명": "연산", + "시간": "18:03:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1277, + "역명": "연산", + "시간": "18:54:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2294, + "역명": "연산", + "시간": "21:00:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "연산", + "시간": "06:26:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1025, + "역명": "연산", + "시간": "07:22:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2062, + "역명": "연산", + "시간": "09:24:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1097, + "역명": "연산", + "시간": "10:16:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2120, + "역명": "연산", + "시간": "12:19:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1151, + "역명": "연산", + "시간": "13:12:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2174, + "역명": "연산", + "시간": "15:15:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1205, + "역명": "연산", + "시간": "16:06:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2228, + "역명": "연산", + "시간": "18:11:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1281, + "역명": "연산", + "시간": "19:02:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2296, + "역명": "연산", + "시간": "21:06:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1333, + "역명": "연산", + "시간": "22:00:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2338, + "역명": "연산", + "시간": "00:07:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2008, + "역명": "연산", + "시간": "06:38:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1029, + "역명": "연산", + "시간": "07:32:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2066, + "역명": "연산", + "시간": "09:34:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2010, + "역명": "연산", + "시간": "06:50:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1033, + "역명": "연산", + "시간": "07:42:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2070, + "역명": "연산", + "시간": "09:44:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1103, + "역명": "연산", + "시간": "10:36:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2126, + "역명": "연산", + "시간": "12:39:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1157, + "역명": "연산", + "시간": "13:31:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2180, + "역명": "연산", + "시간": "15:34:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1213, + "역명": "연산", + "시간": "16:30:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2236, + "역명": "연산", + "시간": "18:35:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1293, + "역명": "연산", + "시간": "19:27:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2304, + "역명": "연산", + "시간": "21:30:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1337, + "역명": "연산", + "시간": "22:20:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1003, + "역명": "연산", + "시간": "05:39:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2020, + "역명": "연산", + "시간": "07:43:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1059, + "역명": "연산", + "시간": "08:34:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2088, + "역명": "연산", + "시간": "10:38:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1121, + "역명": "연산", + "시간": "11:34:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2144, + "역명": "연산", + "시간": "13:37:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1175, + "역명": "연산", + "시간": "14:30:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2198, + "역명": "연산", + "시간": "16:33:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1235, + "역명": "연산", + "시간": "17:26:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2260, + "역명": "연산", + "시간": "19:28:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1309, + "역명": "연산", + "시간": "20:21:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2320, + "역명": "연산", + "시간": "22:25:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1347, + "역명": "연산", + "시간": "23:14:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2012, + "역명": "연산", + "시간": "07:02:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1039, + "역명": "연산", + "시간": "07:54:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2074, + "역명": "연산", + "시간": "09:56:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1107, + "역명": "연산", + "시간": "10:49:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2130, + "역명": "연산", + "시간": "12:52:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1161, + "역명": "연산", + "시간": "13:44:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2184, + "역명": "연산", + "시간": "15:47:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1217, + "역명": "연산", + "시간": "16:41:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2240, + "역명": "연산", + "시간": "18:43:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1297, + "역명": "연산", + "시간": "19:37:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 8, + "열번": 2308, + "역명": "연산", + "시간": "21:42:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 9, + "열번": 2022, + "역명": "연산", + "시간": "07:49:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1063, + "역명": "연산", + "시간": "08:42:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 9, + "열번": 2090, + "역명": "연산", + "시간": "10:44:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2014, + "역명": "연산", + "시간": "07:14:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1045, + "역명": "연산", + "시간": "08:06:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 11, + "열번": 1005, + "역명": "연산", + "시간": "05:50:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2024, + "역명": "연산", + "시간": "07:55:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1065, + "역명": "연산", + "시간": "08:46:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2092, + "역명": "연산", + "시간": "10:50:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1123, + "역명": "연산", + "시간": "11:41:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2146, + "역명": "연산", + "시간": "13:44:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1177, + "역명": "연산", + "시간": "14:36:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2200, + "역명": "연산", + "시간": "16:39:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1237, + "역명": "연산", + "시간": "17:31:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 11, + "열번": 2262, + "역명": "연산", + "시간": "19:33:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2016, + "역명": "연산", + "시간": "07:25:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1051, + "역명": "연산", + "시간": "08:18:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2082, + "역명": "연산", + "시간": "10:20:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1115, + "역명": "연산", + "시간": "11:15:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2138, + "역명": "연산", + "시간": "13:18:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1169, + "역명": "연산", + "시간": "14:10:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "연산", + "시간": "16:13:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1227, + "역명": "연산", + "시간": "17:06:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2252, + "역명": "연산", + "시간": "19:08:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1303, + "역명": "연산", + "시간": "19:57:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2314, + "역명": "연산", + "시간": "22:00:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1343, + "역명": "연산", + "시간": "22:51:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1007, + "역명": "연산", + "시간": "06:01:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2028, + "역명": "연산", + "시간": "08:05:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1071, + "역명": "연산", + "시간": "08:58:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2096, + "역명": "연산", + "시간": "11:02:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1127, + "역명": "연산", + "시간": "11:54:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2150, + "역명": "연산", + "시간": "13:57:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1181, + "역명": "연산", + "시간": "14:49:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2204, + "역명": "연산", + "시간": "16:51:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1241, + "역명": "연산", + "시간": "17:41:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2266, + "역명": "연산", + "시간": "19:43:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1313, + "역명": "연산", + "시간": "20:37:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2324, + "역명": "연산", + "시간": "22:45:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 13, + "열번": 1351, + "역명": "연산", + "시간": "23:36:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 14, + "열번": 1001, + "역명": "연산", + "시간": "05:28:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2018, + "역명": "연산", + "시간": "07:34:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1055, + "역명": "연산", + "시간": "08:26:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1009, + "역명": "연산", + "시간": "06:12:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2032, + "역명": "연산", + "시간": "08:15:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1075, + "역명": "연산", + "시간": "09:07:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2100, + "역명": "연산", + "시간": "11:14:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1131, + "역명": "연산", + "시간": "12:07:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2154, + "역명": "연산", + "시간": "14:10:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1185, + "역명": "연산", + "시간": "15:02:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2208, + "역명": "연산", + "시간": "17:08:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1249, + "역명": "연산", + "시간": "17:58:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2274, + "역명": "연산", + "시간": "20:03:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2026, + "역명": "연산", + "시간": "08:00:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1067, + "역명": "연산", + "시간": "08:50:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2036, + "역명": "연산", + "시간": "08:24:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2030, + "역명": "연산", + "시간": "08:10:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1073, + "역명": "연산", + "시간": "09:02:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2098, + "역명": "연산", + "시간": "11:08:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1129, + "역명": "연산", + "시간": "12:00:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2152, + "역명": "연산", + "시간": "14:03:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1183, + "역명": "연산", + "시간": "14:56:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2206, + "역명": "연산", + "시간": "17:03:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1247, + "역명": "연산", + "시간": "17:54:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2272, + "역명": "연산", + "시간": "19:58:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1317, + "역명": "연산", + "시간": "20:53:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2326, + "역명": "연산", + "시간": "22:55:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 18, + "열번": 7931, + "역명": "연산", + "시간": "23:51:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 19, + "열번": 1011, + "역명": "연산", + "시간": "06:23:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2038, + "역명": "연산", + "시간": "08:28:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1079, + "역명": "연산", + "시간": "09:19:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2102, + "역명": "연산", + "시간": "11:21:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1133, + "역명": "연산", + "시간": "12:13:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2156, + "역명": "연산", + "시간": "14:16:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1187, + "역명": "연산", + "시간": "15:09:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2210, + "역명": "연산", + "시간": "17:13:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1253, + "역명": "연산", + "시간": "18:06:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2278, + "역명": "연산", + "시간": "20:13:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2034, + "역명": "연산", + "시간": "08:19:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 20, + "열번": 1077, + "역명": "연산", + "시간": "09:13:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 21, + "열번": 1013, + "역명": "연산", + "시간": "06:34:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2042, + "역명": "연산", + "시간": "08:37:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1083, + "역명": "연산", + "시간": "09:31:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2106, + "역명": "연산", + "시간": "11:34:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1137, + "역명": "연산", + "시간": "12:26:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2160, + "역명": "연산", + "시간": "14:29:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1191, + "역명": "연산", + "시간": "15:22:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2214, + "역명": "연산", + "시간": "17:23:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1257, + "역명": "연산", + "시간": "18:14:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2280, + "역명": "연산", + "시간": "20:18:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1321, + "역명": "연산", + "시간": "21:09:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2330, + "역명": "연산", + "시간": "23:17:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2040, + "역명": "연산", + "시간": "08:33:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1081, + "역명": "연산", + "시간": "09:25:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2104, + "역명": "연산", + "시간": "11:27:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1135, + "역명": "연산", + "시간": "12:20:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2158, + "역명": "연산", + "시간": "14:23:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1189, + "역명": "연산", + "시간": "15:15:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2212, + "역명": "연산", + "시간": "17:18:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1255, + "역명": "연산", + "시간": "18:10:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2044, + "역명": "연산", + "시간": "08:42:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "연산", + "시간": "08:51:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1087, + "역명": "연산", + "시간": "09:44:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2110, + "역명": "연산", + "시간": "11:47:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1141, + "역명": "연산", + "시간": "12:39:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2164, + "역명": "연산", + "시간": "14:42:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1195, + "역명": "연산", + "시간": "15:35:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2218, + "역명": "연산", + "시간": "17:38:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1265, + "역명": "연산", + "시간": "18:30:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 24, + "열번": 2286, + "역명": "연산", + "시간": "20:36:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "연산", + "시간": "07:02:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2054, + "역명": "연산", + "시간": "09:04:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1091, + "역명": "연산", + "시간": "09:57:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2114, + "역명": "연산", + "시간": "12:00:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1145, + "역명": "연산", + "시간": "12:52:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2168, + "역명": "연산", + "시간": "14:55:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1199, + "역명": "연산", + "시간": "15:48:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2222, + "역명": "연산", + "시간": "17:51:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1271, + "역명": "연산", + "시간": "18:42:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2290, + "역명": "연산", + "시간": "20:48:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1329, + "역명": "연산", + "시간": "21:41:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2336, + "역명": "연산", + "시간": "23:52:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2052, + "역명": "연산", + "시간": "09:00:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1089, + "역명": "연산", + "시간": "09:50:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2112, + "역명": "연산", + "시간": "11:53:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1143, + "역명": "연산", + "시간": "12:46:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2166, + "역명": "연산", + "시간": "14:49:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1197, + "역명": "연산", + "시간": "15:41:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2220, + "역명": "연산", + "시간": "17:47:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1269, + "역명": "연산", + "시간": "18:38:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2288, + "역명": "연산", + "시간": "20:42:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1327, + "역명": "연산", + "시간": "21:33:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 26, + "열번": 2334, + "역명": "연산", + "시간": "23:41:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1023, + "역명": "연산", + "시간": "07:17:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 27, + "열번": 2060, + "역명": "연산", + "시간": "09:19:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2056, + "역명": "연산", + "시간": "09:09:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1093, + "역명": "연산", + "시간": "10:03:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2116, + "역명": "연산", + "시간": "12:06:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1147, + "역명": "연산", + "시간": "12:59:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2170, + "역명": "연산", + "시간": "15:02:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1201, + "역명": "연산", + "시간": "15:54:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2224, + "역명": "연산", + "시간": "17:59:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1275, + "역명": "연산", + "시간": "18:50:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2292, + "역명": "연산", + "시간": "20:54:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1331, + "역명": "연산", + "시간": "21:50:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1027, + "역명": "연산", + "시간": "07:27:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2064, + "역명": "연산", + "시간": "09:29:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1099, + "역명": "연산", + "시간": "10:23:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2122, + "역명": "연산", + "시간": "12:26:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1153, + "역명": "연산", + "시간": "13:18:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2176, + "역명": "연산", + "시간": "15:21:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1207, + "역명": "연산", + "시간": "16:12:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2230, + "역명": "연산", + "시간": "18:15:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1283, + "역명": "연산", + "시간": "19:06:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 29, + "열번": 2298, + "역명": "연산", + "시간": "21:12:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1037, + "역명": "연산", + "시간": "07:50:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1031, + "역명": "연산", + "시간": "07:37:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2068, + "역명": "연산", + "시간": "09:39:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1101, + "역명": "연산", + "시간": "10:29:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2124, + "역명": "연산", + "시간": "12:32:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1155, + "역명": "연산", + "시간": "13:25:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2178, + "역명": "연산", + "시간": "15:28:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1209, + "역명": "연산", + "시간": "16:18:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2232, + "역명": "연산", + "시간": "18:23:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1287, + "역명": "연산", + "시간": "19:14:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2300, + "역명": "연산", + "시간": "21:18:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1335, + "역명": "연산", + "시간": "22:10:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 32, + "열번": 1049, + "역명": "연산", + "시간": "08:14:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1035, + "역명": "연산", + "시간": "07:46:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2072, + "역명": "연산", + "시간": "09:50:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1105, + "역명": "연산", + "시간": "10:42:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2128, + "역명": "연산", + "시간": "12:45:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1159, + "역명": "연산", + "시간": "13:38:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2182, + "역명": "연산", + "시간": "15:41:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1215, + "역명": "연산", + "시간": "16:36:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2238, + "역명": "연산", + "시간": "18:39:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1295, + "역명": "연산", + "시간": "19:32:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2306, + "역명": "연산", + "시간": "21:36:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 33, + "열번": 1339, + "역명": "연산", + "시간": "22:30:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 34, + "열번": 1061, + "역명": "연산", + "시간": "08:38:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1041, + "역명": "연산", + "시간": "07:58:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2076, + "역명": "연산", + "시간": "10:02:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1109, + "역명": "연산", + "시간": "10:55:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2132, + "역명": "연산", + "시간": "12:58:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1163, + "역명": "연산", + "시간": "13:51:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2186, + "역명": "연산", + "시간": "15:54:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1219, + "역명": "연산", + "시간": "16:46:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 35, + "열번": 2242, + "역명": "연산", + "시간": "18:47:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 36, + "열번": 8904, + "역명": "연산", + "시간": "16:57:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1245, + "역명": "연산", + "시간": "17:50:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 36, + "열번": 2270, + "역명": "연산", + "시간": "19:53:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1315, + "역명": "연산", + "시간": "20:45:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1043, + "역명": "연산", + "시간": "08:02:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2078, + "역명": "연산", + "시간": "10:08:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1111, + "역명": "연산", + "시간": "11:02:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2134, + "역명": "연산", + "시간": "13:05:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1165, + "역명": "연산", + "시간": "13:57:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2188, + "역명": "연산", + "시간": "16:00:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1221, + "역명": "연산", + "시간": "16:51:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 37, + "열번": 2246, + "역명": "연산", + "시간": "18:55:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 38, + "열번": 8906, + "역명": "연산", + "시간": "17:28:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 38, + "열번": 1259, + "역명": "연산", + "시간": "18:18:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 39, + "열번": 1047, + "역명": "연산", + "시간": "08:10:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2080, + "역명": "연산", + "시간": "10:14:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1113, + "역명": "연산", + "시간": "11:08:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2136, + "역명": "연산", + "시간": "13:11:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1167, + "역명": "연산", + "시간": "14:04:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2190, + "역명": "연산", + "시간": "16:07:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1225, + "역명": "연산", + "시간": "17:01:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 39, + "열번": 2250, + "역명": "연산", + "시간": "19:03:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 40, + "열번": 8908, + "역명": "연산", + "시간": "17:43:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 40, + "열번": 1267, + "역명": "연산", + "시간": "18:34:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 41, + "열번": 1053, + "역명": "연산", + "시간": "08:22:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2084, + "역명": "연산", + "시간": "10:26:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1117, + "역명": "연산", + "시간": "11:21:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2140, + "역명": "연산", + "시간": "13:24:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1171, + "역명": "연산", + "시간": "14:17:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2194, + "역명": "연산", + "시간": "16:20:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1229, + "역명": "연산", + "시간": "17:11:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2254, + "역명": "연산", + "시간": "19:13:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1305, + "역명": "연산", + "시간": "20:05:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2316, + "역명": "연산", + "시간": "22:07:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1345, + "역명": "연산", + "시간": "23:02:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 42, + "열번": 8910, + "역명": "연산", + "시간": "17:55:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 42, + "열번": 1273, + "역명": "연산", + "시간": "18:46:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 43, + "열번": 1057, + "역명": "연산", + "시간": "08:30:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2086, + "역명": "연산", + "시간": "10:32:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1119, + "역명": "연산", + "시간": "11:28:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2142, + "역명": "연산", + "시간": "13:31:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1173, + "역명": "연산", + "시간": "14:23:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2196, + "역명": "연산", + "시간": "16:26:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1233, + "역명": "연산", + "시간": "17:21:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2258, + "역명": "연산", + "시간": "19:23:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1307, + "역명": "연산", + "시간": "20:13:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 43, + "열번": 2318, + "역명": "연산", + "시간": "22:15:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 44, + "열번": 8912, + "역명": "연산", + "시간": "18:07:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 44, + "열번": 1279, + "역명": "연산", + "시간": "18:58:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 45, + "열번": 1069, + "역명": "연산", + "시간": "08:54:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2094, + "역명": "연산", + "시간": "10:56:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1125, + "역명": "연산", + "시간": "11:47:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2148, + "역명": "연산", + "시간": "13:50:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1179, + "역명": "연산", + "시간": "14:43:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2202, + "역명": "연산", + "시간": "16:45:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1239, + "역명": "연산", + "시간": "17:36:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2264, + "역명": "연산", + "시간": "19:38:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1311, + "역명": "연산", + "시간": "20:29:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2322, + "역명": "연산", + "시간": "22:35:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 45, + "열번": 1349, + "역명": "연산", + "시간": "23:26:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 46, + "열번": 8914, + "역명": "연산", + "시간": "18:19:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 46, + "열번": 1285, + "역명": "연산", + "시간": "19:10:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 47, + "열번": 1211, + "역명": "연산", + "시간": "16:24:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 47, + "열번": 2234, + "역명": "연산", + "시간": "18:27:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 47, + "열번": 1289, + "역명": "연산", + "시간": "19:18:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 47, + "열번": 2302, + "역명": "연산", + "시간": "21:24:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 48, + "열번": 8916, + "역명": "연산", + "시간": "18:31:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 48, + "열번": 1291, + "역명": "연산", + "시간": "19:22:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 49, + "열번": 1223, + "역명": "연산", + "시간": "16:56:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 49, + "열번": 2248, + "역명": "연산", + "시간": "18:59:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 49, + "열번": 1301, + "역명": "연산", + "시간": "19:49:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 49, + "열번": 2312, + "역명": "연산", + "시간": "21:54:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 50, + "열번": 2244, + "역명": "연산", + "시간": "18:51:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 50, + "열번": 1299, + "역명": "연산", + "시간": "19:42:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 50, + "열번": 2310, + "역명": "연산", + "시간": "21:48:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 50, + "열번": 1341, + "역명": "연산", + "시간": "22:40:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 51, + "열번": 1231, + "역명": "연산", + "시간": "17:16:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 51, + "열번": 2256, + "역명": "연산", + "시간": "19:18:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 52, + "열번": 6906, + "역명": "연산", + "시간": "10:17:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 52, + "열번": 5905, + "역명": "연산", + "시간": "11:11:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 53, + "열번": 1243, + "역명": "연산", + "시간": "17:46:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 53, + "열번": 2268, + "역명": "연산", + "시간": "19:48:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 54, + "열번": 6910, + "역명": "연산", + "시간": "14:00:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 54, + "열번": 5907, + "역명": "연산", + "시간": "14:52:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 55, + "열번": 1251, + "역명": "연산", + "시간": "18:02:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 55, + "열번": 2276, + "역명": "연산", + "시간": "20:08:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 55, + "열번": 1319, + "역명": "연산", + "시간": "21:01:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 55, + "열번": 2328, + "역명": "연산", + "시간": "23:05:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 57, + "열번": 1263, + "역명": "연산", + "시간": "18:26:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 57, + "열번": 2284, + "역명": "연산", + "시간": "20:30:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 57, + "열번": 1325, + "역명": "연산", + "시간": "21:25:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 57, + "열번": 2332, + "역명": "연산", + "시간": "23:29:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 59, + "열번": 5901, + "역명": "연산", + "시간": "10:19:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 59, + "열번": 6902, + "역명": "연산", + "시간": "12:22:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 61, + "열번": 5903, + "역명": "연산", + "시간": "13:47:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 61, + "열번": 5904, + "역명": "연산", + "시간": "15:50:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "시청", + "시간": "05:59:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "시청", + "시간": "06:54:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2050, + "역명": "시청", + "시간": "08:54:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "시청", + "시간": "05:43:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "시청", + "시간": "06:45:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "시청", + "시간": "08:45:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1085, + "역명": "시청", + "시간": "09:39:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2108, + "역명": "시청", + "시간": "11:39:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1139, + "역명": "시청", + "시간": "12:34:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2162, + "역명": "시청", + "시간": "14:34:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1193, + "역명": "시청", + "시간": "15:30:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2216, + "역명": "시청", + "시간": "17:31:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1261, + "역명": "시청", + "시간": "18:24:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2282, + "역명": "시청", + "시간": "20:22:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1323, + "역명": "시청", + "시간": "21:19:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "시청", + "시간": "06:12:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "시청", + "시간": "07:12:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2058, + "역명": "시청", + "시간": "09:12:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1095, + "역명": "시청", + "시간": "10:11:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2118, + "역명": "시청", + "시간": "12:11:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1149, + "역명": "시청", + "시간": "13:07:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2172, + "역명": "시청", + "시간": "15:07:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1203, + "역명": "시청", + "시간": "16:02:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2226, + "역명": "시청", + "시간": "18:01:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1277, + "역명": "시청", + "시간": "18:56:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2294, + "역명": "시청", + "시간": "20:58:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "시청", + "시간": "06:25:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1025, + "역명": "시청", + "시간": "07:24:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2062, + "역명": "시청", + "시간": "09:22:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1097, + "역명": "시청", + "시간": "10:18:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2120, + "역명": "시청", + "시간": "12:18:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1151, + "역명": "시청", + "시간": "13:13:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2174, + "역명": "시청", + "시간": "15:13:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1205, + "역명": "시청", + "시간": "16:08:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2228, + "역명": "시청", + "시간": "18:09:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1281, + "역명": "시청", + "시간": "19:04:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2296, + "역명": "시청", + "시간": "21:04:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1333, + "역명": "시청", + "시간": "22:02:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2338, + "역명": "시청", + "시간": "00:06:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2008, + "역명": "시청", + "시간": "06:37:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1029, + "역명": "시청", + "시간": "07:34:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2066, + "역명": "시청", + "시간": "09:32:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2010, + "역명": "시청", + "시간": "06:49:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1033, + "역명": "시청", + "시간": "07:44:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2070, + "역명": "시청", + "시간": "09:42:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1103, + "역명": "시청", + "시간": "10:37:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2126, + "역명": "시청", + "시간": "12:37:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1157, + "역명": "시청", + "시간": "13:33:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2180, + "역명": "시청", + "시간": "15:33:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1213, + "역명": "시청", + "시간": "16:32:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2236, + "역명": "시청", + "시간": "18:33:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1293, + "역명": "시청", + "시간": "19:29:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2304, + "역명": "시청", + "시간": "21:28:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1337, + "역명": "시청", + "시간": "22:22:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1003, + "역명": "시청", + "시간": "05:40:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2020, + "역명": "시청", + "시간": "07:41:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1059, + "역명": "시청", + "시간": "08:36:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2088, + "역명": "시청", + "시간": "10:36:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1121, + "역명": "시청", + "시간": "11:36:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2144, + "역명": "시청", + "시간": "13:36:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1175, + "역명": "시청", + "시간": "14:31:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2198, + "역명": "시청", + "시간": "16:31:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1235, + "역명": "시청", + "시간": "17:28:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2260, + "역명": "시청", + "시간": "19:26:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1309, + "역명": "시청", + "시간": "20:23:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2320, + "역명": "시청", + "시간": "22:23:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1347, + "역명": "시청", + "시간": "23:16:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2012, + "역명": "시청", + "시간": "07:01:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1039, + "역명": "시청", + "시간": "07:56:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2074, + "역명": "시청", + "시간": "09:54:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1107, + "역명": "시청", + "시간": "10:50:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2130, + "역명": "시청", + "시간": "12:50:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1161, + "역명": "시청", + "시간": "13:46:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2184, + "역명": "시청", + "시간": "15:46:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1217, + "역명": "시청", + "시간": "16:43:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2240, + "역명": "시청", + "시간": "18:41:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1297, + "역명": "시청", + "시간": "19:39:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 8, + "열번": 2308, + "역명": "시청", + "시간": "21:40:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 9, + "열번": 2022, + "역명": "시청", + "시간": "07:47:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1063, + "역명": "시청", + "시간": "08:44:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 9, + "열번": 2090, + "역명": "시청", + "시간": "10:42:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2014, + "역명": "시청", + "시간": "07:13:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1045, + "역명": "시청", + "시간": "08:08:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 11, + "열번": 1005, + "역명": "시청", + "시간": "05:51:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2024, + "역명": "시청", + "시간": "07:53:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1065, + "역명": "시청", + "시간": "08:48:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2092, + "역명": "시청", + "시간": "10:48:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1123, + "역명": "시청", + "시간": "11:42:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2146, + "역명": "시청", + "시간": "13:42:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1177, + "역명": "시청", + "시간": "14:38:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2200, + "역명": "시청", + "시간": "16:37:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1237, + "역명": "시청", + "시간": "17:33:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 11, + "열번": 2262, + "역명": "시청", + "시간": "19:31:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2016, + "역명": "시청", + "시간": "07:24:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1051, + "역명": "시청", + "시간": "08:20:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2082, + "역명": "시청", + "시간": "10:18:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1115, + "역명": "시청", + "시간": "11:16:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2138, + "역명": "시청", + "시간": "13:16:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1169, + "역명": "시청", + "시간": "14:12:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "시청", + "시간": "16:12:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1227, + "역명": "시청", + "시간": "17:08:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2252, + "역명": "시청", + "시간": "19:06:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1303, + "역명": "시청", + "시간": "19:59:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2314, + "역명": "시청", + "시간": "21:58:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1343, + "역명": "시청", + "시간": "22:53:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1007, + "역명": "시청", + "시간": "06:02:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2028, + "역명": "시청", + "시간": "08:04:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1071, + "역명": "시청", + "시간": "09:00:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2096, + "역명": "시청", + "시간": "11:00:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1127, + "역명": "시청", + "시간": "11:55:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2150, + "역명": "시청", + "시간": "13:55:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1181, + "역명": "시청", + "시간": "14:51:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2204, + "역명": "시청", + "시간": "16:49:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1241, + "역명": "시청", + "시간": "17:43:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2266, + "역명": "시청", + "시간": "19:41:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1313, + "역명": "시청", + "시간": "20:39:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2324, + "역명": "시청", + "시간": "22:43:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 13, + "열번": 1351, + "역명": "시청", + "시간": "23:38:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 14, + "열번": 1001, + "역명": "시청", + "시간": "05:31:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2018, + "역명": "시청", + "시간": "07:33:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1055, + "역명": "시청", + "시간": "08:28:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1009, + "역명": "시청", + "시간": "06:13:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2032, + "역명": "시청", + "시간": "08:13:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1075, + "역명": "시청", + "시간": "09:09:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2100, + "역명": "시청", + "시간": "11:13:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1131, + "역명": "시청", + "시간": "12:08:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2154, + "역명": "시청", + "시간": "14:08:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1185, + "역명": "시청", + "시간": "15:04:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2208, + "역명": "시청", + "시간": "17:06:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1249, + "역명": "시청", + "시간": "18:00:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2274, + "역명": "시청", + "시간": "20:01:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2026, + "역명": "시청", + "시간": "07:59:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1067, + "역명": "시청", + "시간": "08:52:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2036, + "역명": "시청", + "시간": "08:22:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2030, + "역명": "시청", + "시간": "08:09:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1073, + "역명": "시청", + "시간": "09:04:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2098, + "역명": "시청", + "시간": "11:06:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1129, + "역명": "시청", + "시간": "12:02:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2152, + "역명": "시청", + "시간": "14:02:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1183, + "역명": "시청", + "시간": "14:57:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2206, + "역명": "시청", + "시간": "17:01:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1247, + "역명": "시청", + "시간": "17:56:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2272, + "역명": "시청", + "시간": "19:56:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1317, + "역명": "시청", + "시간": "20:55:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2326, + "역명": "시청", + "시간": "22:53:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 18, + "열번": 7931, + "역명": "시청", + "시간": "23:54:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 19, + "열번": 1011, + "역명": "시청", + "시간": "06:24:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2038, + "역명": "시청", + "시간": "08:27:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1079, + "역명": "시청", + "시간": "09:20:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2102, + "역명": "시청", + "시간": "11:19:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1133, + "역명": "시청", + "시간": "12:15:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2156, + "역명": "시청", + "시간": "14:15:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1187, + "역명": "시청", + "시간": "15:10:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2210, + "역명": "시청", + "시간": "17:11:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1253, + "역명": "시청", + "시간": "18:08:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2278, + "역명": "시청", + "시간": "20:11:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2034, + "역명": "시청", + "시간": "08:18:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 20, + "열번": 1077, + "역명": "시청", + "시간": "09:14:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 21, + "열번": 1013, + "역명": "시청", + "시간": "06:35:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2042, + "역명": "시청", + "시간": "08:36:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1083, + "역명": "시청", + "시간": "09:32:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2106, + "역명": "시청", + "시간": "11:32:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1137, + "역명": "시청", + "시간": "12:28:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2160, + "역명": "시청", + "시간": "14:28:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1191, + "역명": "시청", + "시간": "15:23:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2214, + "역명": "시청", + "시간": "17:21:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1257, + "역명": "시청", + "시간": "18:16:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2280, + "역명": "시청", + "시간": "20:16:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1321, + "역명": "시청", + "시간": "21:11:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2330, + "역명": "시청", + "시간": "23:15:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2040, + "역명": "시청", + "시간": "08:31:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1081, + "역명": "시청", + "시간": "09:26:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2104, + "역명": "시청", + "시간": "11:26:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1135, + "역명": "시청", + "시간": "12:21:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2158, + "역명": "시청", + "시간": "14:21:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1189, + "역명": "시청", + "시간": "15:17:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2212, + "역명": "시청", + "시간": "17:16:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1255, + "역명": "시청", + "시간": "18:12:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2044, + "역명": "시청", + "시간": "08:40:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "시청", + "시간": "08:49:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1087, + "역명": "시청", + "시간": "09:45:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2110, + "역명": "시청", + "시간": "11:45:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1141, + "역명": "시청", + "시간": "12:41:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2164, + "역명": "시청", + "시간": "14:41:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1195, + "역명": "시청", + "시간": "15:36:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2218, + "역명": "시청", + "시간": "17:36:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1265, + "역명": "시청", + "시간": "18:32:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 24, + "열번": 2286, + "역명": "시청", + "시간": "20:34:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "시청", + "시간": "07:03:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2054, + "역명": "시청", + "시간": "09:03:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1091, + "역명": "시청", + "시간": "09:58:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2114, + "역명": "시청", + "시간": "11:58:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1145, + "역명": "시청", + "시간": "12:54:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2168, + "역명": "시청", + "시간": "14:54:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1199, + "역명": "시청", + "시간": "15:49:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2222, + "역명": "시청", + "시간": "17:49:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1271, + "역명": "시청", + "시간": "18:44:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2290, + "역명": "시청", + "시간": "20:46:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1329, + "역명": "시청", + "시간": "21:43:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2336, + "역명": "시청", + "시간": "23:50:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2052, + "역명": "시청", + "시간": "08:58:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1089, + "역명": "시청", + "시간": "09:52:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2112, + "역명": "시청", + "시간": "11:52:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1143, + "역명": "시청", + "시간": "12:47:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2166, + "역명": "시청", + "시간": "14:47:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1197, + "역명": "시청", + "시간": "15:43:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2220, + "역명": "시청", + "시간": "17:45:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1269, + "역명": "시청", + "시간": "18:40:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2288, + "역명": "시청", + "시간": "20:40:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1327, + "역명": "시청", + "시간": "21:35:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 26, + "열번": 2334, + "역명": "시청", + "시간": "23:39:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1023, + "역명": "시청", + "시간": "07:19:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 27, + "열번": 2060, + "역명": "시청", + "시간": "09:17:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2056, + "역명": "시청", + "시간": "09:07:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1093, + "역명": "시청", + "시간": "10:05:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2116, + "역명": "시청", + "시간": "12:05:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1147, + "역명": "시청", + "시간": "13:00:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2170, + "역명": "시청", + "시간": "15:00:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1201, + "역명": "시청", + "시간": "15:56:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2224, + "역명": "시청", + "시간": "17:57:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1275, + "역명": "시청", + "시간": "18:52:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2292, + "역명": "시청", + "시간": "20:52:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1331, + "역명": "시청", + "시간": "21:52:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1027, + "역명": "시청", + "시간": "07:29:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2064, + "역명": "시청", + "시간": "09:27:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1099, + "역명": "시청", + "시간": "10:24:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2122, + "역명": "시청", + "시간": "12:24:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1153, + "역명": "시청", + "시간": "13:20:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2176, + "역명": "시청", + "시간": "15:20:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1207, + "역명": "시청", + "시간": "16:14:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2230, + "역명": "시청", + "시간": "18:13:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1283, + "역명": "시청", + "시간": "19:08:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 29, + "열번": 2298, + "역명": "시청", + "시간": "21:10:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1037, + "역명": "시청", + "시간": "07:52:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1031, + "역명": "시청", + "시간": "07:39:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2068, + "역명": "시청", + "시간": "09:37:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1101, + "역명": "시청", + "시간": "10:31:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2124, + "역명": "시청", + "시간": "12:31:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1155, + "역명": "시청", + "시간": "13:26:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2178, + "역명": "시청", + "시간": "15:26:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1209, + "역명": "시청", + "시간": "16:20:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2232, + "역명": "시청", + "시간": "18:21:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1287, + "역명": "시청", + "시간": "19:16:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2300, + "역명": "시청", + "시간": "21:16:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1335, + "역명": "시청", + "시간": "22:12:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 32, + "열번": 1049, + "역명": "시청", + "시간": "08:16:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1035, + "역명": "시청", + "시간": "07:48:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2072, + "역명": "시청", + "시간": "09:48:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1105, + "역명": "시청", + "시간": "10:44:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2128, + "역명": "시청", + "시간": "12:44:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1159, + "역명": "시청", + "시간": "13:39:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2182, + "역명": "시청", + "시간": "15:39:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1215, + "역명": "시청", + "시간": "16:38:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2238, + "역명": "시청", + "시간": "18:37:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1295, + "역명": "시청", + "시간": "19:34:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2306, + "역명": "시청", + "시간": "21:34:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 33, + "열번": 1339, + "역명": "시청", + "시간": "22:32:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 34, + "열번": 1061, + "역명": "시청", + "시간": "08:40:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1041, + "역명": "시청", + "시간": "08:00:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2076, + "역명": "시청", + "시간": "10:00:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1109, + "역명": "시청", + "시간": "10:57:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2132, + "역명": "시청", + "시간": "12:57:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1163, + "역명": "시청", + "시간": "13:52:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2186, + "역명": "시청", + "시간": "15:52:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1219, + "역명": "시청", + "시간": "16:48:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 35, + "열번": 2242, + "역명": "시청", + "시간": "18:45:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 36, + "열번": 8904, + "역명": "시청", + "시간": "16:55:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1245, + "역명": "시청", + "시간": "17:52:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 36, + "열번": 2270, + "역명": "시청", + "시간": "19:51:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1315, + "역명": "시청", + "시간": "20:47:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1043, + "역명": "시청", + "시간": "08:04:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2078, + "역명": "시청", + "시간": "10:06:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1111, + "역명": "시청", + "시간": "11:03:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2134, + "역명": "시청", + "시간": "13:03:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1165, + "역명": "시청", + "시간": "13:59:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2188, + "역명": "시청", + "시간": "15:59:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1221, + "역명": "시청", + "시간": "16:53:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 37, + "열번": 2246, + "역명": "시청", + "시간": "18:53:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 38, + "열번": 8906, + "역명": "시청", + "시간": "17:26:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 38, + "열번": 1259, + "역명": "시청", + "시간": "18:20:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 39, + "열번": 1047, + "역명": "시청", + "시간": "08:12:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2080, + "역명": "시청", + "시간": "10:12:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1113, + "역명": "시청", + "시간": "11:10:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2136, + "역명": "시청", + "시간": "13:10:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1167, + "역명": "시청", + "시간": "14:05:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2190, + "역명": "시청", + "시간": "16:05:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1225, + "역명": "시청", + "시간": "17:03:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 39, + "열번": 2250, + "역명": "시청", + "시간": "19:01:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 40, + "열번": 8908, + "역명": "시청", + "시간": "17:41:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 40, + "열번": 1267, + "역명": "시청", + "시간": "18:36:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 41, + "열번": 1053, + "역명": "시청", + "시간": "08:24:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2084, + "역명": "시청", + "시간": "10:24:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1117, + "역명": "시청", + "시간": "11:23:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2140, + "역명": "시청", + "시간": "13:23:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1171, + "역명": "시청", + "시간": "14:18:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2194, + "역명": "시청", + "시간": "16:18:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1229, + "역명": "시청", + "시간": "17:13:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2254, + "역명": "시청", + "시간": "19:11:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1305, + "역명": "시청", + "시간": "20:07:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2316, + "역명": "시청", + "시간": "22:05:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1345, + "역명": "시청", + "시간": "23:04:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 42, + "열번": 8910, + "역명": "시청", + "시간": "17:53:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 42, + "열번": 1273, + "역명": "시청", + "시간": "18:48:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 43, + "열번": 1057, + "역명": "시청", + "시간": "08:32:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2086, + "역명": "시청", + "시간": "10:30:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1119, + "역명": "시청", + "시간": "11:29:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2142, + "역명": "시청", + "시간": "13:29:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1173, + "역명": "시청", + "시간": "14:25:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2196, + "역명": "시청", + "시간": "16:25:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1233, + "역명": "시청", + "시간": "17:23:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2258, + "역명": "시청", + "시간": "19:21:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1307, + "역명": "시청", + "시간": "20:15:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 43, + "열번": 2318, + "역명": "시청", + "시간": "22:13:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 44, + "열번": 8912, + "역명": "시청", + "시간": "18:05:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 44, + "열번": 1279, + "역명": "시청", + "시간": "19:00:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 45, + "열번": 1069, + "역명": "시청", + "시간": "08:56:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2094, + "역명": "시청", + "시간": "10:54:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1125, + "역명": "시청", + "시간": "11:49:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2148, + "역명": "시청", + "시간": "13:49:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1179, + "역명": "시청", + "시간": "14:44:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2202, + "역명": "시청", + "시간": "16:43:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1239, + "역명": "시청", + "시간": "17:38:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2264, + "역명": "시청", + "시간": "19:36:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1311, + "역명": "시청", + "시간": "20:31:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2322, + "역명": "시청", + "시간": "22:33:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 45, + "열번": 1349, + "역명": "시청", + "시간": "23:28:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 46, + "열번": 8914, + "역명": "시청", + "시간": "18:17:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 46, + "열번": 1285, + "역명": "시청", + "시간": "19:12:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 47, + "열번": 1211, + "역명": "시청", + "시간": "16:26:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 47, + "열번": 2234, + "역명": "시청", + "시간": "18:25:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 47, + "열번": 1289, + "역명": "시청", + "시간": "19:20:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 47, + "열번": 2302, + "역명": "시청", + "시간": "21:22:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 48, + "열번": 8916, + "역명": "시청", + "시간": "18:29:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 48, + "열번": 1291, + "역명": "시청", + "시간": "19:24:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 49, + "열번": 1223, + "역명": "시청", + "시간": "16:58:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 49, + "열번": 2248, + "역명": "시청", + "시간": "18:57:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 49, + "열번": 1301, + "역명": "시청", + "시간": "19:51:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 49, + "열번": 2312, + "역명": "시청", + "시간": "21:52:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 50, + "열번": 2244, + "역명": "시청", + "시간": "18:49:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 50, + "열번": 1299, + "역명": "시청", + "시간": "19:44:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 50, + "열번": 2310, + "역명": "시청", + "시간": "21:46:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 50, + "열번": 1341, + "역명": "시청", + "시간": "22:42:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 51, + "열번": 1231, + "역명": "시청", + "시간": "17:18:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 51, + "열번": 2256, + "역명": "시청", + "시간": "19:16:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 52, + "열번": 6906, + "역명": "시청", + "시간": "10:15:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 52, + "열번": 5905, + "역명": "시청", + "시간": "11:13:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 53, + "열번": 1243, + "역명": "시청", + "시간": "17:48:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 53, + "열번": 2268, + "역명": "시청", + "시간": "19:46:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 54, + "열번": 6910, + "역명": "시청", + "시간": "13:58:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 54, + "열번": 5907, + "역명": "시청", + "시간": "14:54:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 55, + "열번": 1251, + "역명": "시청", + "시간": "18:04:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 55, + "열번": 2276, + "역명": "시청", + "시간": "20:06:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 55, + "열번": 1319, + "역명": "시청", + "시간": "21:03:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 55, + "열번": 2328, + "역명": "시청", + "시간": "23:03:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 57, + "열번": 1263, + "역명": "시청", + "시간": "18:28:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 57, + "열번": 2284, + "역명": "시청", + "시간": "20:28:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 57, + "열번": 1325, + "역명": "시청", + "시간": "21:27:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 57, + "열번": 2332, + "역명": "시청", + "시간": "23:27:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 59, + "열번": 5901, + "역명": "시청", + "시간": "10:21:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 59, + "열번": 6902, + "역명": "시청", + "시간": "12:21:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 61, + "열번": 5903, + "역명": "시청", + "시간": "13:49:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 61, + "열번": 5904, + "역명": "시청", + "시간": "15:49:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "양정", + "시간": "05:57:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "양정", + "시간": "06:56:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2050, + "역명": "양정", + "시간": "08:52:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "양정", + "시간": "05:42:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "양정", + "시간": "06:47:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "양정", + "시간": "08:43:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1085, + "역명": "양정", + "시간": "09:41:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2108, + "역명": "양정", + "시간": "11:37:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1139, + "역명": "양정", + "시간": "12:36:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2162, + "역명": "양정", + "시간": "14:32:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1193, + "역명": "양정", + "시간": "15:32:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2216, + "역명": "양정", + "시간": "17:29:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1261, + "역명": "양정", + "시간": "18:26:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2282, + "역명": "양정", + "시간": "20:20:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1323, + "역명": "양정", + "시간": "21:21:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "양정", + "시간": "06:10:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "양정", + "시간": "07:14:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2058, + "역명": "양정", + "시간": "09:10:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1095, + "역명": "양정", + "시간": "10:13:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2118, + "역명": "양정", + "시간": "12:09:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1149, + "역명": "양정", + "시간": "13:09:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2172, + "역명": "양정", + "시간": "15:05:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1203, + "역명": "양정", + "시간": "16:04:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2226, + "역명": "양정", + "시간": "17:59:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1277, + "역명": "양정", + "시간": "18:58:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2294, + "역명": "양정", + "시간": "20:56:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "양정", + "시간": "06:23:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1025, + "역명": "양정", + "시간": "07:26:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2062, + "역명": "양정", + "시간": "09:20:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1097, + "역명": "양정", + "시간": "10:20:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2120, + "역명": "양정", + "시간": "12:16:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1151, + "역명": "양정", + "시간": "13:15:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2174, + "역명": "양정", + "시간": "15:11:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1205, + "역명": "양정", + "시간": "16:10:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2228, + "역명": "양정", + "시간": "18:07:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1281, + "역명": "양정", + "시간": "19:06:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2296, + "역명": "양정", + "시간": "21:02:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1333, + "역명": "양정", + "시간": "22:04:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2338, + "역명": "양정", + "시간": "00:04:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2008, + "역명": "양정", + "시간": "06:35:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1029, + "역명": "양정", + "시간": "07:36:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2066, + "역명": "양정", + "시간": "09:30:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2010, + "역명": "양정", + "시간": "06:47:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1033, + "역명": "양정", + "시간": "07:46:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2070, + "역명": "양정", + "시간": "09:40:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1103, + "역명": "양정", + "시간": "10:39:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2126, + "역명": "양정", + "시간": "12:35:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1157, + "역명": "양정", + "시간": "13:35:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2180, + "역명": "양정", + "시간": "15:31:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1213, + "역명": "양정", + "시간": "16:34:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2236, + "역명": "양정", + "시간": "18:31:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1293, + "역명": "양정", + "시간": "19:31:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2304, + "역명": "양정", + "시간": "21:26:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1337, + "역명": "양정", + "시간": "22:24:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1003, + "역명": "양정", + "시간": "05:42:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2020, + "역명": "양정", + "시간": "07:39:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1059, + "역명": "양정", + "시간": "08:38:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2088, + "역명": "양정", + "시간": "10:34:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1121, + "역명": "양정", + "시간": "11:38:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2144, + "역명": "양정", + "시간": "13:34:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1175, + "역명": "양정", + "시간": "14:33:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2198, + "역명": "양정", + "시간": "16:29:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1235, + "역명": "양정", + "시간": "17:30:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2260, + "역명": "양정", + "시간": "19:24:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1309, + "역명": "양정", + "시간": "20:25:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2320, + "역명": "양정", + "시간": "22:21:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1347, + "역명": "양정", + "시간": "23:18:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2012, + "역명": "양정", + "시간": "06:59:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1039, + "역명": "양정", + "시간": "07:58:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2074, + "역명": "양정", + "시간": "09:52:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1107, + "역명": "양정", + "시간": "10:52:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2130, + "역명": "양정", + "시간": "12:48:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1161, + "역명": "양정", + "시간": "13:48:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2184, + "역명": "양정", + "시간": "15:44:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1217, + "역명": "양정", + "시간": "16:45:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2240, + "역명": "양정", + "시간": "18:39:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1297, + "역명": "양정", + "시간": "19:41:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 8, + "열번": 2308, + "역명": "양정", + "시간": "21:38:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 9, + "열번": 2022, + "역명": "양정", + "시간": "07:45:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1063, + "역명": "양정", + "시간": "08:46:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 9, + "열번": 2090, + "역명": "양정", + "시간": "10:40:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2014, + "역명": "양정", + "시간": "07:11:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1045, + "역명": "양정", + "시간": "08:10:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 11, + "열번": 1005, + "역명": "양정", + "시간": "05:53:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2024, + "역명": "양정", + "시간": "07:51:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1065, + "역명": "양정", + "시간": "08:50:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2092, + "역명": "양정", + "시간": "10:46:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1123, + "역명": "양정", + "시간": "11:44:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2146, + "역명": "양정", + "시간": "13:40:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1177, + "역명": "양정", + "시간": "14:40:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2200, + "역명": "양정", + "시간": "16:35:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1237, + "역명": "양정", + "시간": "17:35:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 11, + "열번": 2262, + "역명": "양정", + "시간": "19:29:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2016, + "역명": "양정", + "시간": "07:22:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1051, + "역명": "양정", + "시간": "08:22:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2082, + "역명": "양정", + "시간": "10:16:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1115, + "역명": "양정", + "시간": "11:18:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2138, + "역명": "양정", + "시간": "13:14:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1169, + "역명": "양정", + "시간": "14:14:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "양정", + "시간": "16:10:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1227, + "역명": "양정", + "시간": "17:10:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2252, + "역명": "양정", + "시간": "19:04:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1303, + "역명": "양정", + "시간": "20:01:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2314, + "역명": "양정", + "시간": "21:56:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1343, + "역명": "양정", + "시간": "22:55:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1007, + "역명": "양정", + "시간": "06:04:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2028, + "역명": "양정", + "시간": "08:02:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1071, + "역명": "양정", + "시간": "09:02:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2096, + "역명": "양정", + "시간": "10:58:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1127, + "역명": "양정", + "시간": "11:57:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2150, + "역명": "양정", + "시간": "13:53:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1181, + "역명": "양정", + "시간": "14:53:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2204, + "역명": "양정", + "시간": "16:47:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1241, + "역명": "양정", + "시간": "17:45:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2266, + "역명": "양정", + "시간": "19:39:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1313, + "역명": "양정", + "시간": "20:41:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2324, + "역명": "양정", + "시간": "22:41:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 13, + "열번": 1351, + "역명": "양정", + "시간": "23:40:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 14, + "열번": 1001, + "역명": "양정", + "시간": "05:33:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2018, + "역명": "양정", + "시간": "07:31:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1055, + "역명": "양정", + "시간": "08:30:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1009, + "역명": "양정", + "시간": "06:15:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2032, + "역명": "양정", + "시간": "08:11:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1075, + "역명": "양정", + "시간": "09:11:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2100, + "역명": "양정", + "시간": "11:11:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1131, + "역명": "양정", + "시간": "12:10:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2154, + "역명": "양정", + "시간": "14:06:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1185, + "역명": "양정", + "시간": "15:06:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2208, + "역명": "양정", + "시간": "17:04:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1249, + "역명": "양정", + "시간": "18:02:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2274, + "역명": "양정", + "시간": "19:59:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2026, + "역명": "양정", + "시간": "07:57:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1067, + "역명": "양정", + "시간": "08:54:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2036, + "역명": "양정", + "시간": "08:20:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2030, + "역명": "양정", + "시간": "08:07:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1073, + "역명": "양정", + "시간": "09:06:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2098, + "역명": "양정", + "시간": "11:04:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1129, + "역명": "양정", + "시간": "12:04:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2152, + "역명": "양정", + "시간": "14:00:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1183, + "역명": "양정", + "시간": "14:59:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2206, + "역명": "양정", + "시간": "16:59:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1247, + "역명": "양정", + "시간": "17:58:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2272, + "역명": "양정", + "시간": "19:54:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1317, + "역명": "양정", + "시간": "20:57:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2326, + "역명": "양정", + "시간": "22:51:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 18, + "열번": 7931, + "역명": "양정", + "시간": "23:56:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 19, + "열번": 1011, + "역명": "양정", + "시간": "06:26:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2038, + "역명": "양정", + "시간": "08:25:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1079, + "역명": "양정", + "시간": "09:22:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2102, + "역명": "양정", + "시간": "11:17:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1133, + "역명": "양정", + "시간": "12:17:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2156, + "역명": "양정", + "시간": "14:13:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1187, + "역명": "양정", + "시간": "15:12:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2210, + "역명": "양정", + "시간": "17:09:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1253, + "역명": "양정", + "시간": "18:10:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2278, + "역명": "양정", + "시간": "20:09:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2034, + "역명": "양정", + "시간": "08:16:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 20, + "열번": 1077, + "역명": "양정", + "시간": "09:16:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 21, + "열번": 1013, + "역명": "양정", + "시간": "06:37:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2042, + "역명": "양정", + "시간": "08:34:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1083, + "역명": "양정", + "시간": "09:34:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2106, + "역명": "양정", + "시간": "11:30:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1137, + "역명": "양정", + "시간": "12:30:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2160, + "역명": "양정", + "시간": "14:26:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1191, + "역명": "양정", + "시간": "15:25:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2214, + "역명": "양정", + "시간": "17:19:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1257, + "역명": "양정", + "시간": "18:18:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2280, + "역명": "양정", + "시간": "20:14:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1321, + "역명": "양정", + "시간": "21:13:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2330, + "역명": "양정", + "시간": "23:13:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2040, + "역명": "양정", + "시간": "08:29:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1081, + "역명": "양정", + "시간": "09:28:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2104, + "역명": "양정", + "시간": "11:24:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1135, + "역명": "양정", + "시간": "12:23:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2158, + "역명": "양정", + "시간": "14:19:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1189, + "역명": "양정", + "시간": "15:19:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2212, + "역명": "양정", + "시간": "17:14:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1255, + "역명": "양정", + "시간": "18:14:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2044, + "역명": "양정", + "시간": "08:38:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "양정", + "시간": "08:47:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1087, + "역명": "양정", + "시간": "09:47:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2110, + "역명": "양정", + "시간": "11:43:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1141, + "역명": "양정", + "시간": "12:43:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2164, + "역명": "양정", + "시간": "14:39:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1195, + "역명": "양정", + "시간": "15:38:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2218, + "역명": "양정", + "시간": "17:34:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1265, + "역명": "양정", + "시간": "18:34:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 24, + "열번": 2286, + "역명": "양정", + "시간": "20:32:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "양정", + "시간": "07:05:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2054, + "역명": "양정", + "시간": "09:01:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1091, + "역명": "양정", + "시간": "10:00:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2114, + "역명": "양정", + "시간": "11:56:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1145, + "역명": "양정", + "시간": "12:56:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2168, + "역명": "양정", + "시간": "14:52:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1199, + "역명": "양정", + "시간": "15:51:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2222, + "역명": "양정", + "시간": "17:47:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1271, + "역명": "양정", + "시간": "18:46:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2290, + "역명": "양정", + "시간": "20:44:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1329, + "역명": "양정", + "시간": "21:45:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2336, + "역명": "양정", + "시간": "23:49:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2052, + "역명": "양정", + "시간": "08:56:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1089, + "역명": "양정", + "시간": "09:54:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2112, + "역명": "양정", + "시간": "11:50:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1143, + "역명": "양정", + "시간": "12:49:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2166, + "역명": "양정", + "시간": "14:45:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1197, + "역명": "양정", + "시간": "15:45:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2220, + "역명": "양정", + "시간": "17:43:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1269, + "역명": "양정", + "시간": "18:42:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2288, + "역명": "양정", + "시간": "20:38:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1327, + "역명": "양정", + "시간": "21:37:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 26, + "열번": 2334, + "역명": "양정", + "시간": "23:37:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1023, + "역명": "양정", + "시간": "07:21:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 27, + "열번": 2060, + "역명": "양정", + "시간": "09:15:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2056, + "역명": "양정", + "시간": "09:05:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1093, + "역명": "양정", + "시간": "10:07:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2116, + "역명": "양정", + "시간": "12:03:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1147, + "역명": "양정", + "시간": "13:02:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2170, + "역명": "양정", + "시간": "14:58:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1201, + "역명": "양정", + "시간": "15:58:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2224, + "역명": "양정", + "시간": "17:55:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1275, + "역명": "양정", + "시간": "18:54:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2292, + "역명": "양정", + "시간": "20:50:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1331, + "역명": "양정", + "시간": "21:54:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1027, + "역명": "양정", + "시간": "07:31:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2064, + "역명": "양정", + "시간": "09:25:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1099, + "역명": "양정", + "시간": "10:26:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2122, + "역명": "양정", + "시간": "12:22:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1153, + "역명": "양정", + "시간": "13:22:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2176, + "역명": "양정", + "시간": "15:18:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1207, + "역명": "양정", + "시간": "16:16:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2230, + "역명": "양정", + "시간": "18:11:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1283, + "역명": "양정", + "시간": "19:10:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 29, + "열번": 2298, + "역명": "양정", + "시간": "21:08:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1037, + "역명": "양정", + "시간": "07:54:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1031, + "역명": "양정", + "시간": "07:41:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2068, + "역명": "양정", + "시간": "09:35:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1101, + "역명": "양정", + "시간": "10:33:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2124, + "역명": "양정", + "시간": "12:29:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1155, + "역명": "양정", + "시간": "13:28:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2178, + "역명": "양정", + "시간": "15:24:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1209, + "역명": "양정", + "시간": "16:22:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2232, + "역명": "양정", + "시간": "18:19:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1287, + "역명": "양정", + "시간": "19:18:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2300, + "역명": "양정", + "시간": "21:14:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1335, + "역명": "양정", + "시간": "22:14:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 32, + "열번": 1049, + "역명": "양정", + "시간": "08:18:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1035, + "역명": "양정", + "시간": "07:50:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2072, + "역명": "양정", + "시간": "09:46:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1105, + "역명": "양정", + "시간": "10:46:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2128, + "역명": "양정", + "시간": "12:42:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1159, + "역명": "양정", + "시간": "13:41:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2182, + "역명": "양정", + "시간": "15:37:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1215, + "역명": "양정", + "시간": "16:40:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2238, + "역명": "양정", + "시간": "18:35:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1295, + "역명": "양정", + "시간": "19:36:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2306, + "역명": "양정", + "시간": "21:32:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 33, + "열번": 1339, + "역명": "양정", + "시간": "22:34:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 34, + "열번": 1061, + "역명": "양정", + "시간": "08:42:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1041, + "역명": "양정", + "시간": "08:02:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2076, + "역명": "양정", + "시간": "09:58:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1109, + "역명": "양정", + "시간": "10:59:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2132, + "역명": "양정", + "시간": "12:55:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1163, + "역명": "양정", + "시간": "13:54:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2186, + "역명": "양정", + "시간": "15:50:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1219, + "역명": "양정", + "시간": "16:50:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 35, + "열번": 2242, + "역명": "양정", + "시간": "18:43:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 36, + "열번": 8904, + "역명": "양정", + "시간": "16:53:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1245, + "역명": "양정", + "시간": "17:54:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 36, + "열번": 2270, + "역명": "양정", + "시간": "19:49:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1315, + "역명": "양정", + "시간": "20:49:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1043, + "역명": "양정", + "시간": "08:06:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2078, + "역명": "양정", + "시간": "10:04:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1111, + "역명": "양정", + "시간": "11:05:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2134, + "역명": "양정", + "시간": "13:01:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1165, + "역명": "양정", + "시간": "14:01:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2188, + "역명": "양정", + "시간": "15:57:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1221, + "역명": "양정", + "시간": "16:55:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 37, + "열번": 2246, + "역명": "양정", + "시간": "18:51:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 38, + "열번": 8906, + "역명": "양정", + "시간": "17:24:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 38, + "열번": 1259, + "역명": "양정", + "시간": "18:22:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 39, + "열번": 1047, + "역명": "양정", + "시간": "08:14:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2080, + "역명": "양정", + "시간": "10:10:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1113, + "역명": "양정", + "시간": "11:12:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2136, + "역명": "양정", + "시간": "13:08:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1167, + "역명": "양정", + "시간": "14:07:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2190, + "역명": "양정", + "시간": "16:03:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1225, + "역명": "양정", + "시간": "17:05:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 39, + "열번": 2250, + "역명": "양정", + "시간": "18:59:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 40, + "열번": 8908, + "역명": "양정", + "시간": "17:39:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 40, + "열번": 1267, + "역명": "양정", + "시간": "18:38:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 41, + "열번": 1053, + "역명": "양정", + "시간": "08:26:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2084, + "역명": "양정", + "시간": "10:22:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1117, + "역명": "양정", + "시간": "11:25:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2140, + "역명": "양정", + "시간": "13:21:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1171, + "역명": "양정", + "시간": "14:20:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2194, + "역명": "양정", + "시간": "16:16:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1229, + "역명": "양정", + "시간": "17:15:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2254, + "역명": "양정", + "시간": "19:09:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1305, + "역명": "양정", + "시간": "20:09:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2316, + "역명": "양정", + "시간": "22:03:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1345, + "역명": "양정", + "시간": "23:06:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 42, + "열번": 8910, + "역명": "양정", + "시간": "17:51:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 42, + "열번": 1273, + "역명": "양정", + "시간": "18:50:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 43, + "열번": 1057, + "역명": "양정", + "시간": "08:34:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2086, + "역명": "양정", + "시간": "10:28:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1119, + "역명": "양정", + "시간": "11:31:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2142, + "역명": "양정", + "시간": "13:27:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1173, + "역명": "양정", + "시간": "14:27:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2196, + "역명": "양정", + "시간": "16:23:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1233, + "역명": "양정", + "시간": "17:25:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2258, + "역명": "양정", + "시간": "19:19:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1307, + "역명": "양정", + "시간": "20:17:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 43, + "열번": 2318, + "역명": "양정", + "시간": "22:11:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 44, + "열번": 8912, + "역명": "양정", + "시간": "18:03:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 44, + "열번": 1279, + "역명": "양정", + "시간": "19:02:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 45, + "열번": 1069, + "역명": "양정", + "시간": "08:58:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2094, + "역명": "양정", + "시간": "10:52:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1125, + "역명": "양정", + "시간": "11:51:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2148, + "역명": "양정", + "시간": "13:47:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1179, + "역명": "양정", + "시간": "14:46:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2202, + "역명": "양정", + "시간": "16:41:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1239, + "역명": "양정", + "시간": "17:40:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2264, + "역명": "양정", + "시간": "19:34:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1311, + "역명": "양정", + "시간": "20:33:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2322, + "역명": "양정", + "시간": "22:31:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 45, + "열번": 1349, + "역명": "양정", + "시간": "23:30:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 46, + "열번": 8914, + "역명": "양정", + "시간": "18:15:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 46, + "열번": 1285, + "역명": "양정", + "시간": "19:14:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 47, + "열번": 1211, + "역명": "양정", + "시간": "16:28:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 47, + "열번": 2234, + "역명": "양정", + "시간": "18:23:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 47, + "열번": 1289, + "역명": "양정", + "시간": "19:22:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 47, + "열번": 2302, + "역명": "양정", + "시간": "21:20:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 48, + "열번": 8916, + "역명": "양정", + "시간": "18:27:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 48, + "열번": 1291, + "역명": "양정", + "시간": "19:26:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 49, + "열번": 1223, + "역명": "양정", + "시간": "17:00:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 49, + "열번": 2248, + "역명": "양정", + "시간": "18:55:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 49, + "열번": 1301, + "역명": "양정", + "시간": "19:53:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 49, + "열번": 2312, + "역명": "양정", + "시간": "21:50:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 50, + "열번": 2244, + "역명": "양정", + "시간": "18:47:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 50, + "열번": 1299, + "역명": "양정", + "시간": "19:46:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 50, + "열번": 2310, + "역명": "양정", + "시간": "21:44:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 50, + "열번": 1341, + "역명": "양정", + "시간": "22:44:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 51, + "열번": 1231, + "역명": "양정", + "시간": "17:20:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 51, + "열번": 2256, + "역명": "양정", + "시간": "19:14:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 52, + "열번": 6906, + "역명": "양정", + "시간": "10:13:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 52, + "열번": 5905, + "역명": "양정", + "시간": "11:15:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 53, + "열번": 1243, + "역명": "양정", + "시간": "17:50:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 53, + "열번": 2268, + "역명": "양정", + "시간": "19:44:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 54, + "열번": 6910, + "역명": "양정", + "시간": "13:56:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 54, + "열번": 5907, + "역명": "양정", + "시간": "14:56:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 55, + "열번": 1251, + "역명": "양정", + "시간": "18:06:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 55, + "열번": 2276, + "역명": "양정", + "시간": "20:04:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 55, + "열번": 1319, + "역명": "양정", + "시간": "21:05:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 55, + "열번": 2328, + "역명": "양정", + "시간": "23:01:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 57, + "열번": 1263, + "역명": "양정", + "시간": "18:30:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 57, + "열번": 2284, + "역명": "양정", + "시간": "20:26:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 57, + "열번": 1325, + "역명": "양정", + "시간": "21:29:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 57, + "열번": 2332, + "역명": "양정", + "시간": "23:25:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 59, + "열번": 5901, + "역명": "양정", + "시간": "10:23:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 59, + "열번": 6902, + "역명": "양정", + "시간": "12:19:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 61, + "열번": 5903, + "역명": "양정", + "시간": "13:51:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 61, + "열번": 5904, + "역명": "양정", + "시간": "15:47:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "부전", + "시간": "05:55:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "부전", + "시간": "06:58:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2050, + "역명": "부전", + "시간": "08:50:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "부전", + "시간": "05:40:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "부전", + "시간": "06:49:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "부전", + "시간": "08:41:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1085, + "역명": "부전", + "시간": "09:43:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2108, + "역명": "부전", + "시간": "11:35:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1139, + "역명": "부전", + "시간": "12:38:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2162, + "역명": "부전", + "시간": "14:30:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1193, + "역명": "부전", + "시간": "15:34:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2216, + "역명": "부전", + "시간": "17:27:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1261, + "역명": "부전", + "시간": "18:28:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2282, + "역명": "부전", + "시간": "20:18:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1323, + "역명": "부전", + "시간": "21:23:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "부전", + "시간": "06:08:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "부전", + "시간": "07:16:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2058, + "역명": "부전", + "시간": "09:08:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1095, + "역명": "부전", + "시간": "10:15:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2118, + "역명": "부전", + "시간": "12:07:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1149, + "역명": "부전", + "시간": "13:11:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2172, + "역명": "부전", + "시간": "15:03:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1203, + "역명": "부전", + "시간": "16:06:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2226, + "역명": "부전", + "시간": "17:57:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1277, + "역명": "부전", + "시간": "19:00:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2294, + "역명": "부전", + "시간": "20:54:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "부전", + "시간": "06:21:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1025, + "역명": "부전", + "시간": "07:28:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2062, + "역명": "부전", + "시간": "09:18:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1097, + "역명": "부전", + "시간": "10:22:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2120, + "역명": "부전", + "시간": "12:14:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1151, + "역명": "부전", + "시간": "13:17:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2174, + "역명": "부전", + "시간": "15:09:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1205, + "역명": "부전", + "시간": "16:12:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2228, + "역명": "부전", + "시간": "18:05:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1281, + "역명": "부전", + "시간": "19:08:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2296, + "역명": "부전", + "시간": "21:00:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1333, + "역명": "부전", + "시간": "22:06:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2338, + "역명": "부전", + "시간": "00:02:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2008, + "역명": "부전", + "시간": "06:33:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1029, + "역명": "부전", + "시간": "07:38:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2066, + "역명": "부전", + "시간": "09:28:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2010, + "역명": "부전", + "시간": "06:45:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1033, + "역명": "부전", + "시간": "07:48:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2070, + "역명": "부전", + "시간": "09:38:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1103, + "역명": "부전", + "시간": "10:41:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2126, + "역명": "부전", + "시간": "12:33:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1157, + "역명": "부전", + "시간": "13:37:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2180, + "역명": "부전", + "시간": "15:29:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1213, + "역명": "부전", + "시간": "16:36:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2236, + "역명": "부전", + "시간": "18:29:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1293, + "역명": "부전", + "시간": "19:33:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2304, + "역명": "부전", + "시간": "21:24:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1337, + "역명": "부전", + "시간": "22:26:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1003, + "역명": "부전", + "시간": "05:44:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2020, + "역명": "부전", + "시간": "07:37:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1059, + "역명": "부전", + "시간": "08:40:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2088, + "역명": "부전", + "시간": "10:32:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1121, + "역명": "부전", + "시간": "11:40:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2144, + "역명": "부전", + "시간": "13:32:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1175, + "역명": "부전", + "시간": "14:35:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2198, + "역명": "부전", + "시간": "16:27:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1235, + "역명": "부전", + "시간": "17:32:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2260, + "역명": "부전", + "시간": "19:22:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1309, + "역명": "부전", + "시간": "20:27:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2320, + "역명": "부전", + "시간": "22:19:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1347, + "역명": "부전", + "시간": "23:20:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2012, + "역명": "부전", + "시간": "06:57:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1039, + "역명": "부전", + "시간": "08:00:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2074, + "역명": "부전", + "시간": "09:50:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1107, + "역명": "부전", + "시간": "10:54:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2130, + "역명": "부전", + "시간": "12:46:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1161, + "역명": "부전", + "시간": "13:50:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2184, + "역명": "부전", + "시간": "15:42:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1217, + "역명": "부전", + "시간": "16:47:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2240, + "역명": "부전", + "시간": "18:37:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1297, + "역명": "부전", + "시간": "19:43:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 8, + "열번": 2308, + "역명": "부전", + "시간": "21:36:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 9, + "열번": 2022, + "역명": "부전", + "시간": "07:43:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1063, + "역명": "부전", + "시간": "08:48:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 9, + "열번": 2090, + "역명": "부전", + "시간": "10:38:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2014, + "역명": "부전", + "시간": "07:09:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1045, + "역명": "부전", + "시간": "08:12:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 11, + "열번": 1005, + "역명": "부전", + "시간": "05:55:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2024, + "역명": "부전", + "시간": "07:49:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1065, + "역명": "부전", + "시간": "08:52:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2092, + "역명": "부전", + "시간": "10:44:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1123, + "역명": "부전", + "시간": "11:46:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2146, + "역명": "부전", + "시간": "13:38:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1177, + "역명": "부전", + "시간": "14:42:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2200, + "역명": "부전", + "시간": "16:33:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1237, + "역명": "부전", + "시간": "17:37:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 11, + "열번": 2262, + "역명": "부전", + "시간": "19:27:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2016, + "역명": "부전", + "시간": "07:20:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1051, + "역명": "부전", + "시간": "08:24:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2082, + "역명": "부전", + "시간": "10:14:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1115, + "역명": "부전", + "시간": "11:20:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2138, + "역명": "부전", + "시간": "13:12:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1169, + "역명": "부전", + "시간": "14:16:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "부전", + "시간": "16:08:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1227, + "역명": "부전", + "시간": "17:12:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2252, + "역명": "부전", + "시간": "19:02:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1303, + "역명": "부전", + "시간": "20:03:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2314, + "역명": "부전", + "시간": "21:54:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1343, + "역명": "부전", + "시간": "22:57:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1007, + "역명": "부전", + "시간": "06:06:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2028, + "역명": "부전", + "시간": "08:00:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1071, + "역명": "부전", + "시간": "09:04:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2096, + "역명": "부전", + "시간": "10:56:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1127, + "역명": "부전", + "시간": "11:59:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2150, + "역명": "부전", + "시간": "13:51:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1181, + "역명": "부전", + "시간": "14:55:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2204, + "역명": "부전", + "시간": "16:45:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1241, + "역명": "부전", + "시간": "17:47:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2266, + "역명": "부전", + "시간": "19:37:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1313, + "역명": "부전", + "시간": "20:43:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2324, + "역명": "부전", + "시간": "22:39:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 13, + "열번": 1351, + "역명": "부전", + "시간": "23:42:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 14, + "열번": 1001, + "역명": "부전", + "시간": "05:35:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2018, + "역명": "부전", + "시간": "07:29:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1055, + "역명": "부전", + "시간": "08:32:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1009, + "역명": "부전", + "시간": "06:17:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2032, + "역명": "부전", + "시간": "08:09:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1075, + "역명": "부전", + "시간": "09:13:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2100, + "역명": "부전", + "시간": "11:09:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1131, + "역명": "부전", + "시간": "12:12:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2154, + "역명": "부전", + "시간": "14:04:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1185, + "역명": "부전", + "시간": "15:08:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2208, + "역명": "부전", + "시간": "17:02:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1249, + "역명": "부전", + "시간": "18:04:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2274, + "역명": "부전", + "시간": "19:57:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2026, + "역명": "부전", + "시간": "07:55:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1067, + "역명": "부전", + "시간": "08:56:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2036, + "역명": "부전", + "시간": "08:18:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2030, + "역명": "부전", + "시간": "08:05:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1073, + "역명": "부전", + "시간": "09:08:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2098, + "역명": "부전", + "시간": "11:02:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1129, + "역명": "부전", + "시간": "12:06:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2152, + "역명": "부전", + "시간": "13:58:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1183, + "역명": "부전", + "시간": "15:01:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2206, + "역명": "부전", + "시간": "16:57:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1247, + "역명": "부전", + "시간": "18:00:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2272, + "역명": "부전", + "시간": "19:52:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1317, + "역명": "부전", + "시간": "20:59:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2326, + "역명": "부전", + "시간": "22:49:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 18, + "열번": 7931, + "역명": "부전", + "시간": "23:58:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 19, + "열번": 1011, + "역명": "부전", + "시간": "06:28:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2038, + "역명": "부전", + "시간": "08:23:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1079, + "역명": "부전", + "시간": "09:24:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2102, + "역명": "부전", + "시간": "11:15:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1133, + "역명": "부전", + "시간": "12:19:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2156, + "역명": "부전", + "시간": "14:11:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1187, + "역명": "부전", + "시간": "15:14:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2210, + "역명": "부전", + "시간": "17:07:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1253, + "역명": "부전", + "시간": "18:12:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2278, + "역명": "부전", + "시간": "20:07:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2034, + "역명": "부전", + "시간": "08:14:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 20, + "열번": 1077, + "역명": "부전", + "시간": "09:18:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 21, + "열번": 1013, + "역명": "부전", + "시간": "06:39:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2042, + "역명": "부전", + "시간": "08:32:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1083, + "역명": "부전", + "시간": "09:36:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2106, + "역명": "부전", + "시간": "11:28:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1137, + "역명": "부전", + "시간": "12:32:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2160, + "역명": "부전", + "시간": "14:24:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1191, + "역명": "부전", + "시간": "15:27:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2214, + "역명": "부전", + "시간": "17:17:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1257, + "역명": "부전", + "시간": "18:20:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2280, + "역명": "부전", + "시간": "20:12:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1321, + "역명": "부전", + "시간": "21:15:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2330, + "역명": "부전", + "시간": "23:11:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2040, + "역명": "부전", + "시간": "08:27:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1081, + "역명": "부전", + "시간": "09:30:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2104, + "역명": "부전", + "시간": "11:22:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1135, + "역명": "부전", + "시간": "12:25:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2158, + "역명": "부전", + "시간": "14:17:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1189, + "역명": "부전", + "시간": "15:21:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2212, + "역명": "부전", + "시간": "17:12:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1255, + "역명": "부전", + "시간": "18:16:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2044, + "역명": "부전", + "시간": "08:36:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "부전", + "시간": "08:45:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1087, + "역명": "부전", + "시간": "09:49:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2110, + "역명": "부전", + "시간": "11:41:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1141, + "역명": "부전", + "시간": "12:45:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2164, + "역명": "부전", + "시간": "14:37:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1195, + "역명": "부전", + "시간": "15:40:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2218, + "역명": "부전", + "시간": "17:32:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1265, + "역명": "부전", + "시간": "18:36:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 24, + "열번": 2286, + "역명": "부전", + "시간": "20:30:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "부전", + "시간": "07:07:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2054, + "역명": "부전", + "시간": "08:59:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1091, + "역명": "부전", + "시간": "10:02:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2114, + "역명": "부전", + "시간": "11:54:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1145, + "역명": "부전", + "시간": "12:58:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2168, + "역명": "부전", + "시간": "14:50:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1199, + "역명": "부전", + "시간": "15:53:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2222, + "역명": "부전", + "시간": "17:45:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1271, + "역명": "부전", + "시간": "18:48:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2290, + "역명": "부전", + "시간": "20:42:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1329, + "역명": "부전", + "시간": "21:47:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2336, + "역명": "부전", + "시간": "23:47:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2052, + "역명": "부전", + "시간": "08:54:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1089, + "역명": "부전", + "시간": "09:56:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2112, + "역명": "부전", + "시간": "11:48:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1143, + "역명": "부전", + "시간": "12:51:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2166, + "역명": "부전", + "시간": "14:43:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1197, + "역명": "부전", + "시간": "15:47:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2220, + "역명": "부전", + "시간": "17:41:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1269, + "역명": "부전", + "시간": "18:44:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2288, + "역명": "부전", + "시간": "20:36:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1327, + "역명": "부전", + "시간": "21:39:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 26, + "열번": 2334, + "역명": "부전", + "시간": "23:35:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1023, + "역명": "부전", + "시간": "07:23:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 27, + "열번": 2060, + "역명": "부전", + "시간": "09:13:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2056, + "역명": "부전", + "시간": "09:03:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1093, + "역명": "부전", + "시간": "10:09:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2116, + "역명": "부전", + "시간": "12:01:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1147, + "역명": "부전", + "시간": "13:04:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2170, + "역명": "부전", + "시간": "14:56:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1201, + "역명": "부전", + "시간": "16:00:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2224, + "역명": "부전", + "시간": "17:53:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1275, + "역명": "부전", + "시간": "18:56:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2292, + "역명": "부전", + "시간": "20:48:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1331, + "역명": "부전", + "시간": "21:56:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1027, + "역명": "부전", + "시간": "07:33:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2064, + "역명": "부전", + "시간": "09:23:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1099, + "역명": "부전", + "시간": "10:28:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2122, + "역명": "부전", + "시간": "12:20:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1153, + "역명": "부전", + "시간": "13:24:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2176, + "역명": "부전", + "시간": "15:16:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1207, + "역명": "부전", + "시간": "16:18:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2230, + "역명": "부전", + "시간": "18:09:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1283, + "역명": "부전", + "시간": "19:12:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 29, + "열번": 2298, + "역명": "부전", + "시간": "21:06:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1037, + "역명": "부전", + "시간": "07:56:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1031, + "역명": "부전", + "시간": "07:43:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2068, + "역명": "부전", + "시간": "09:33:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1101, + "역명": "부전", + "시간": "10:35:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2124, + "역명": "부전", + "시간": "12:27:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1155, + "역명": "부전", + "시간": "13:30:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2178, + "역명": "부전", + "시간": "15:22:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1209, + "역명": "부전", + "시간": "16:24:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2232, + "역명": "부전", + "시간": "18:17:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1287, + "역명": "부전", + "시간": "19:20:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2300, + "역명": "부전", + "시간": "21:12:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1335, + "역명": "부전", + "시간": "22:16:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 32, + "열번": 1049, + "역명": "부전", + "시간": "08:20:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1035, + "역명": "부전", + "시간": "07:52:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2072, + "역명": "부전", + "시간": "09:44:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1105, + "역명": "부전", + "시간": "10:48:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2128, + "역명": "부전", + "시간": "12:40:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1159, + "역명": "부전", + "시간": "13:43:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2182, + "역명": "부전", + "시간": "15:35:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1215, + "역명": "부전", + "시간": "16:42:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2238, + "역명": "부전", + "시간": "18:33:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1295, + "역명": "부전", + "시간": "19:38:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2306, + "역명": "부전", + "시간": "21:30:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 33, + "열번": 1339, + "역명": "부전", + "시간": "22:36:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 34, + "열번": 1061, + "역명": "부전", + "시간": "08:44:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1041, + "역명": "부전", + "시간": "08:04:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2076, + "역명": "부전", + "시간": "09:56:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1109, + "역명": "부전", + "시간": "11:01:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2132, + "역명": "부전", + "시간": "12:53:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1163, + "역명": "부전", + "시간": "13:56:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2186, + "역명": "부전", + "시간": "15:48:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1219, + "역명": "부전", + "시간": "16:52:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 35, + "열번": 2242, + "역명": "부전", + "시간": "18:41:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 36, + "열번": 8904, + "역명": "부전", + "시간": "16:51:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1245, + "역명": "부전", + "시간": "17:56:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 36, + "열번": 2270, + "역명": "부전", + "시간": "19:47:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1315, + "역명": "부전", + "시간": "20:51:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1043, + "역명": "부전", + "시간": "08:08:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2078, + "역명": "부전", + "시간": "10:02:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1111, + "역명": "부전", + "시간": "11:07:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2134, + "역명": "부전", + "시간": "12:59:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1165, + "역명": "부전", + "시간": "14:03:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2188, + "역명": "부전", + "시간": "15:55:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1221, + "역명": "부전", + "시간": "16:57:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 37, + "열번": 2246, + "역명": "부전", + "시간": "18:49:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 38, + "열번": 8906, + "역명": "부전", + "시간": "17:22:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 38, + "열번": 1259, + "역명": "부전", + "시간": "18:24:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 39, + "열번": 1047, + "역명": "부전", + "시간": "08:16:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2080, + "역명": "부전", + "시간": "10:08:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1113, + "역명": "부전", + "시간": "11:14:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2136, + "역명": "부전", + "시간": "13:06:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1167, + "역명": "부전", + "시간": "14:09:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2190, + "역명": "부전", + "시간": "16:01:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1225, + "역명": "부전", + "시간": "17:07:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 39, + "열번": 2250, + "역명": "부전", + "시간": "18:57:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 40, + "열번": 8908, + "역명": "부전", + "시간": "17:37:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 40, + "열번": 1267, + "역명": "부전", + "시간": "18:40:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 41, + "열번": 1053, + "역명": "부전", + "시간": "08:28:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2084, + "역명": "부전", + "시간": "10:20:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1117, + "역명": "부전", + "시간": "11:27:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2140, + "역명": "부전", + "시간": "13:19:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1171, + "역명": "부전", + "시간": "14:22:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2194, + "역명": "부전", + "시간": "16:14:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1229, + "역명": "부전", + "시간": "17:17:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2254, + "역명": "부전", + "시간": "19:07:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1305, + "역명": "부전", + "시간": "20:11:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2316, + "역명": "부전", + "시간": "22:01:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1345, + "역명": "부전", + "시간": "23:08:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 42, + "열번": 8910, + "역명": "부전", + "시간": "17:49:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 42, + "열번": 1273, + "역명": "부전", + "시간": "18:52:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 43, + "열번": 1057, + "역명": "부전", + "시간": "08:36:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2086, + "역명": "부전", + "시간": "10:26:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1119, + "역명": "부전", + "시간": "11:33:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2142, + "역명": "부전", + "시간": "13:25:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1173, + "역명": "부전", + "시간": "14:29:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2196, + "역명": "부전", + "시간": "16:21:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1233, + "역명": "부전", + "시간": "17:27:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2258, + "역명": "부전", + "시간": "19:17:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1307, + "역명": "부전", + "시간": "20:19:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 43, + "열번": 2318, + "역명": "부전", + "시간": "22:09:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 44, + "열번": 8912, + "역명": "부전", + "시간": "18:01:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 44, + "열번": 1279, + "역명": "부전", + "시간": "19:04:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 45, + "열번": 1069, + "역명": "부전", + "시간": "09:00:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2094, + "역명": "부전", + "시간": "10:50:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1125, + "역명": "부전", + "시간": "11:53:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2148, + "역명": "부전", + "시간": "13:45:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1179, + "역명": "부전", + "시간": "14:48:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2202, + "역명": "부전", + "시간": "16:39:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1239, + "역명": "부전", + "시간": "17:42:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2264, + "역명": "부전", + "시간": "19:32:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1311, + "역명": "부전", + "시간": "20:35:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2322, + "역명": "부전", + "시간": "22:29:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 45, + "열번": 1349, + "역명": "부전", + "시간": "23:32:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 46, + "열번": 8914, + "역명": "부전", + "시간": "18:13:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 46, + "열번": 1285, + "역명": "부전", + "시간": "19:16:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 47, + "열번": 1211, + "역명": "부전", + "시간": "16:30:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 47, + "열번": 2234, + "역명": "부전", + "시간": "18:21:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 47, + "열번": 1289, + "역명": "부전", + "시간": "19:24:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 47, + "열번": 2302, + "역명": "부전", + "시간": "21:18:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 48, + "열번": 8916, + "역명": "부전", + "시간": "18:25:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 48, + "열번": 1291, + "역명": "부전", + "시간": "19:28:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 49, + "열번": 1223, + "역명": "부전", + "시간": "17:02:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 49, + "열번": 2248, + "역명": "부전", + "시간": "18:53:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 49, + "열번": 1301, + "역명": "부전", + "시간": "19:55:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 49, + "열번": 2312, + "역명": "부전", + "시간": "21:48:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 50, + "열번": 2244, + "역명": "부전", + "시간": "18:45:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 50, + "열번": 1299, + "역명": "부전", + "시간": "19:48:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 50, + "열번": 2310, + "역명": "부전", + "시간": "21:42:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 50, + "열번": 1341, + "역명": "부전", + "시간": "22:46:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 51, + "열번": 1231, + "역명": "부전", + "시간": "17:22:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 51, + "열번": 2256, + "역명": "부전", + "시간": "19:12:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 52, + "열번": 6906, + "역명": "부전", + "시간": "10:11:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 52, + "열번": 5905, + "역명": "부전", + "시간": "11:17:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 53, + "열번": 1243, + "역명": "부전", + "시간": "17:52:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 53, + "열번": 2268, + "역명": "부전", + "시간": "19:42:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 54, + "열번": 6910, + "역명": "부전", + "시간": "13:54:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 54, + "열번": 5907, + "역명": "부전", + "시간": "14:58:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 55, + "열번": 1251, + "역명": "부전", + "시간": "18:08:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 55, + "열번": 2276, + "역명": "부전", + "시간": "20:02:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 55, + "열번": 1319, + "역명": "부전", + "시간": "21:07:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 55, + "열번": 2328, + "역명": "부전", + "시간": "22:59:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 57, + "열번": 1263, + "역명": "부전", + "시간": "18:32:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 57, + "열번": 2284, + "역명": "부전", + "시간": "20:24:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 57, + "열번": 1325, + "역명": "부전", + "시간": "21:31:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 57, + "열번": 2332, + "역명": "부전", + "시간": "23:23:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 59, + "열번": 5901, + "역명": "부전", + "시간": "10:25:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 59, + "열번": 6902, + "역명": "부전", + "시간": "12:17:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 61, + "열번": 5903, + "역명": "부전", + "시간": "13:53:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 61, + "열번": 5904, + "역명": "부전", + "시간": "15:45:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "서면", + "시간": "05:53:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "서면", + "시간": "07:00:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2050, + "역명": "서면", + "시간": "08:48:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "서면", + "시간": "05:37:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "서면", + "시간": "06:51:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "서면", + "시간": "08:39:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1085, + "역명": "서면", + "시간": "09:44:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2108, + "역명": "서면", + "시간": "11:33:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1139, + "역명": "서면", + "시간": "12:40:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2162, + "역명": "서면", + "시간": "14:28:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1193, + "역명": "서면", + "시간": "15:35:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2216, + "역명": "서면", + "시간": "17:25:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1261, + "역명": "서면", + "시간": "18:29:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2282, + "역명": "서면", + "시간": "20:16:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1323, + "역명": "서면", + "시간": "21:24:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "서면", + "시간": "06:06:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "서면", + "시간": "07:18:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2058, + "역명": "서면", + "시간": "09:06:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1095, + "역명": "서면", + "시간": "10:17:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2118, + "역명": "서면", + "시간": "12:05:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1149, + "역명": "서면", + "시간": "13:12:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2172, + "역명": "서면", + "시간": "15:01:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1203, + "역명": "서면", + "시간": "16:07:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2226, + "역명": "서면", + "시간": "17:55:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1277, + "역명": "서면", + "시간": "19:01:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2294, + "역명": "서면", + "시간": "20:52:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "서면", + "시간": "06:19:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1025, + "역명": "서면", + "시간": "07:29:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2062, + "역명": "서면", + "시간": "09:16:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1097, + "역명": "서면", + "시간": "10:23:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2120, + "역명": "서면", + "시간": "12:12:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1151, + "역명": "서면", + "시간": "13:19:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2174, + "역명": "서면", + "시간": "15:07:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1205, + "역명": "서면", + "시간": "16:13:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2228, + "역명": "서면", + "시간": "18:03:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1281, + "역명": "서면", + "시간": "19:09:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2296, + "역명": "서면", + "시간": "20:58:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1333, + "역명": "서면", + "시간": "22:07:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2338, + "역명": "서면", + "시간": "23:59:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2008, + "역명": "서면", + "시간": "06:31:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1029, + "역명": "서면", + "시간": "07:39:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2066, + "역명": "서면", + "시간": "09:26:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2010, + "역명": "서면", + "시간": "06:43:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1033, + "역명": "서면", + "시간": "07:49:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2070, + "역명": "서면", + "시간": "09:36:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1103, + "역명": "서면", + "시간": "10:43:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2126, + "역명": "서면", + "시간": "12:31:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1157, + "역명": "서면", + "시간": "13:38:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2180, + "역명": "서면", + "시간": "15:27:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1213, + "역명": "서면", + "시간": "16:37:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2236, + "역명": "서면", + "시간": "18:27:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1293, + "역명": "서면", + "시간": "19:34:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2304, + "역명": "서면", + "시간": "21:22:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1337, + "역명": "서면", + "시간": "22:27:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1003, + "역명": "서면", + "시간": "05:46:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2020, + "역명": "서면", + "시간": "07:35:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1059, + "역명": "서면", + "시간": "08:41:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2088, + "역명": "서면", + "시간": "10:30:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1121, + "역명": "서면", + "시간": "11:41:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2144, + "역명": "서면", + "시간": "13:30:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1175, + "역명": "서면", + "시간": "14:37:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2198, + "역명": "서면", + "시간": "16:25:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1235, + "역명": "서면", + "시간": "17:33:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2260, + "역명": "서면", + "시간": "19:20:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1309, + "역명": "서면", + "시간": "20:28:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2320, + "역명": "서면", + "시간": "22:17:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1347, + "역명": "서면", + "시간": "23:21:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2012, + "역명": "서면", + "시간": "06:55:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1039, + "역명": "서면", + "시간": "08:01:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2074, + "역명": "서면", + "시간": "09:48:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1107, + "역명": "서면", + "시간": "10:56:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2130, + "역명": "서면", + "시간": "12:44:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1161, + "역명": "서면", + "시간": "13:51:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2184, + "역명": "서면", + "시간": "15:40:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1217, + "역명": "서면", + "시간": "16:48:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2240, + "역명": "서면", + "시간": "18:35:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1297, + "역명": "서면", + "시간": "19:44:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 8, + "열번": 2308, + "역명": "서면", + "시간": "21:34:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 9, + "열번": 2022, + "역명": "서면", + "시간": "07:41:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1063, + "역명": "서면", + "시간": "08:49:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 9, + "열번": 2090, + "역명": "서면", + "시간": "10:36:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2014, + "역명": "서면", + "시간": "07:07:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1045, + "역명": "서면", + "시간": "08:13:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 11, + "열번": 1005, + "역명": "서면", + "시간": "05:57:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2024, + "역명": "서면", + "시간": "07:47:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1065, + "역명": "서면", + "시간": "08:53:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2092, + "역명": "서면", + "시간": "10:42:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1123, + "역명": "서면", + "시간": "11:48:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2146, + "역명": "서면", + "시간": "13:36:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1177, + "역명": "서면", + "시간": "14:43:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2200, + "역명": "서면", + "시간": "16:31:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1237, + "역명": "서면", + "시간": "17:38:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 11, + "열번": 2262, + "역명": "서면", + "시간": "19:25:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2016, + "역명": "서면", + "시간": "07:18:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1051, + "역명": "서면", + "시간": "08:25:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2082, + "역명": "서면", + "시간": "10:12:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1115, + "역명": "서면", + "시간": "11:22:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2138, + "역명": "서면", + "시간": "13:10:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1169, + "역명": "서면", + "시간": "14:17:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "서면", + "시간": "16:06:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1227, + "역명": "서면", + "시간": "17:13:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2252, + "역명": "서면", + "시간": "19:00:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1303, + "역명": "서면", + "시간": "20:04:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2314, + "역명": "서면", + "시간": "21:52:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1343, + "역명": "서면", + "시간": "22:58:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1007, + "역명": "서면", + "시간": "06:08:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2028, + "역명": "서면", + "시간": "07:58:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1071, + "역명": "서면", + "시간": "09:05:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2096, + "역명": "서면", + "시간": "10:54:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1127, + "역명": "서면", + "시간": "12:01:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2150, + "역명": "서면", + "시간": "13:49:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1181, + "역명": "서면", + "시간": "14:56:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2204, + "역명": "서면", + "시간": "16:43:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1241, + "역명": "서면", + "시간": "17:48:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2266, + "역명": "서면", + "시간": "19:35:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1313, + "역명": "서면", + "시간": "20:44:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2324, + "역명": "서면", + "시간": "22:37:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 13, + "열번": 1351, + "역명": "서면", + "시간": "23:44:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 14, + "열번": 1001, + "역명": "서면", + "시간": "05:37:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2018, + "역명": "서면", + "시간": "07:27:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1055, + "역명": "서면", + "시간": "08:33:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1009, + "역명": "서면", + "시간": "06:19:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2032, + "역명": "서면", + "시간": "08:07:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1075, + "역명": "서면", + "시간": "09:14:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2100, + "역명": "서면", + "시간": "11:07:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1131, + "역명": "서면", + "시간": "12:14:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2154, + "역명": "서면", + "시간": "14:02:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1185, + "역명": "서면", + "시간": "15:09:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2208, + "역명": "서면", + "시간": "17:00:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1249, + "역명": "서면", + "시간": "18:05:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2274, + "역명": "서면", + "시간": "19:55:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2026, + "역명": "서면", + "시간": "07:53:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1067, + "역명": "서면", + "시간": "08:57:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2036, + "역명": "서면", + "시간": "08:16:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2030, + "역명": "서면", + "시간": "08:03:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1073, + "역명": "서면", + "시간": "09:09:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2098, + "역명": "서면", + "시간": "11:00:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1129, + "역명": "서면", + "시간": "12:07:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2152, + "역명": "서면", + "시간": "13:56:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1183, + "역명": "서면", + "시간": "15:03:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2206, + "역명": "서면", + "시간": "16:55:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1247, + "역명": "서면", + "시간": "18:01:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2272, + "역명": "서면", + "시간": "19:50:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1317, + "역명": "서면", + "시간": "21:00:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2326, + "역명": "서면", + "시간": "22:47:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 18, + "열번": 7931, + "역명": "서면", + "시간": "00:00:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 19, + "열번": 1011, + "역명": "서면", + "시간": "06:30:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2038, + "역명": "서면", + "시간": "08:21:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1079, + "역명": "서면", + "시간": "09:26:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2102, + "역명": "서면", + "시간": "11:13:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1133, + "역명": "서면", + "시간": "12:20:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2156, + "역명": "서면", + "시간": "14:09:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1187, + "역명": "서면", + "시간": "15:16:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2210, + "역명": "서면", + "시간": "17:05:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1253, + "역명": "서면", + "시간": "18:13:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2278, + "역명": "서면", + "시간": "20:05:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2034, + "역명": "서면", + "시간": "08:12:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 20, + "열번": 1077, + "역명": "서면", + "시간": "09:20:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 21, + "열번": 1013, + "역명": "서면", + "시간": "06:41:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2042, + "역명": "서면", + "시간": "08:30:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1083, + "역명": "서면", + "시간": "09:38:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2106, + "역명": "서면", + "시간": "11:26:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1137, + "역명": "서면", + "시간": "12:33:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2160, + "역명": "서면", + "시간": "14:22:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1191, + "역명": "서면", + "시간": "15:29:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2214, + "역명": "서면", + "시간": "17:15:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1257, + "역명": "서면", + "시간": "18:21:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2280, + "역명": "서면", + "시간": "20:10:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1321, + "역명": "서면", + "시간": "21:16:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2330, + "역명": "서면", + "시간": "23:09:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2040, + "역명": "서면", + "시간": "08:25:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1081, + "역명": "서면", + "시간": "09:32:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2104, + "역명": "서면", + "시간": "11:20:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1135, + "역명": "서면", + "시간": "12:27:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2158, + "역명": "서면", + "시간": "14:15:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1189, + "역명": "서면", + "시간": "15:22:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2212, + "역명": "서면", + "시간": "17:10:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1255, + "역명": "서면", + "시간": "18:17:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2044, + "역명": "서면", + "시간": "08:34:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "서면", + "시간": "08:43:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1087, + "역명": "서면", + "시간": "09:51:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2110, + "역명": "서면", + "시간": "11:39:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1141, + "역명": "서면", + "시간": "12:46:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2164, + "역명": "서면", + "시간": "14:35:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1195, + "역명": "서면", + "시간": "15:42:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2218, + "역명": "서면", + "시간": "17:30:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1265, + "역명": "서면", + "시간": "18:37:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 24, + "열번": 2286, + "역명": "서면", + "시간": "20:28:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "서면", + "시간": "07:09:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2054, + "역명": "서면", + "시간": "08:57:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1091, + "역명": "서면", + "시간": "10:04:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2114, + "역명": "서면", + "시간": "11:52:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1145, + "역명": "서면", + "시간": "12:59:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2168, + "역명": "서면", + "시간": "14:48:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1199, + "역명": "서면", + "시간": "15:55:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2222, + "역명": "서면", + "시간": "17:43:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1271, + "역명": "서면", + "시간": "18:49:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2290, + "역명": "서면", + "시간": "20:40:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1329, + "역명": "서면", + "시간": "21:48:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2336, + "역명": "서면", + "시간": "23:44:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2052, + "역명": "서면", + "시간": "08:52:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1089, + "역명": "서면", + "시간": "09:57:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2112, + "역명": "서면", + "시간": "11:46:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1143, + "역명": "서면", + "시간": "12:53:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2166, + "역명": "서면", + "시간": "14:41:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1197, + "역명": "서면", + "시간": "15:48:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2220, + "역명": "서면", + "시간": "17:39:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1269, + "역명": "서면", + "시간": "18:45:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2288, + "역명": "서면", + "시간": "20:34:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1327, + "역명": "서면", + "시간": "21:40:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 26, + "열번": 2334, + "역명": "서면", + "시간": "23:33:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1023, + "역명": "서면", + "시간": "07:24:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 27, + "열번": 2060, + "역명": "서면", + "시간": "09:11:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2056, + "역명": "서면", + "시간": "09:01:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1093, + "역명": "서면", + "시간": "10:10:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2116, + "역명": "서면", + "시간": "11:59:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1147, + "역명": "서면", + "시간": "13:06:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2170, + "역명": "서면", + "시간": "14:54:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1201, + "역명": "서면", + "시간": "16:01:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2224, + "역명": "서면", + "시간": "17:51:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1275, + "역명": "서면", + "시간": "18:57:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2292, + "역명": "서면", + "시간": "20:46:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1331, + "역명": "서면", + "시간": "21:57:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1027, + "역명": "서면", + "시간": "07:34:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2064, + "역명": "서면", + "시간": "09:21:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1099, + "역명": "서면", + "시간": "10:30:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2122, + "역명": "서면", + "시간": "12:18:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1153, + "역명": "서면", + "시간": "13:25:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2176, + "역명": "서면", + "시간": "15:14:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1207, + "역명": "서면", + "시간": "16:19:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2230, + "역명": "서면", + "시간": "18:07:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1283, + "역명": "서면", + "시간": "19:13:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 29, + "열번": 2298, + "역명": "서면", + "시간": "21:04:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1037, + "역명": "서면", + "시간": "07:57:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1031, + "역명": "서면", + "시간": "07:44:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2068, + "역명": "서면", + "시간": "09:31:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1101, + "역명": "서면", + "시간": "10:36:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2124, + "역명": "서면", + "시간": "12:25:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1155, + "역명": "서면", + "시간": "13:32:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2178, + "역명": "서면", + "시간": "15:20:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1209, + "역명": "서면", + "시간": "16:25:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2232, + "역명": "서면", + "시간": "18:15:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1287, + "역명": "서면", + "시간": "19:21:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2300, + "역명": "서면", + "시간": "21:10:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1335, + "역명": "서면", + "시간": "22:17:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 32, + "열번": 1049, + "역명": "서면", + "시간": "08:21:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1035, + "역명": "서면", + "시간": "07:53:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2072, + "역명": "서면", + "시간": "09:42:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1105, + "역명": "서면", + "시간": "10:49:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2128, + "역명": "서면", + "시간": "12:38:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1159, + "역명": "서면", + "시간": "13:45:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2182, + "역명": "서면", + "시간": "15:33:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1215, + "역명": "서면", + "시간": "16:43:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2238, + "역명": "서면", + "시간": "18:31:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1295, + "역명": "서면", + "시간": "19:39:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2306, + "역명": "서면", + "시간": "21:28:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 33, + "열번": 1339, + "역명": "서면", + "시간": "22:37:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 34, + "열번": 1061, + "역명": "서면", + "시간": "08:45:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1041, + "역명": "서면", + "시간": "08:05:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2076, + "역명": "서면", + "시간": "09:54:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1109, + "역명": "서면", + "시간": "11:02:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2132, + "역명": "서면", + "시간": "12:51:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1163, + "역명": "서면", + "시간": "13:58:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2186, + "역명": "서면", + "시간": "15:46:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1219, + "역명": "서면", + "시간": "16:53:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 35, + "열번": 2242, + "역명": "서면", + "시간": "18:39:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 36, + "열번": 8904, + "역명": "서면", + "시간": "16:49:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1245, + "역명": "서면", + "시간": "17:57:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 36, + "열번": 2270, + "역명": "서면", + "시간": "19:45:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1315, + "역명": "서면", + "시간": "20:52:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1043, + "역명": "서면", + "시간": "08:09:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2078, + "역명": "서면", + "시간": "10:00:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1111, + "역명": "서면", + "시간": "11:09:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2134, + "역명": "서면", + "시간": "12:57:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1165, + "역명": "서면", + "시간": "14:04:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2188, + "역명": "서면", + "시간": "15:53:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1221, + "역명": "서면", + "시간": "16:58:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 37, + "열번": 2246, + "역명": "서면", + "시간": "18:47:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 38, + "열번": 8906, + "역명": "서면", + "시간": "17:20:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 38, + "열번": 1259, + "역명": "서면", + "시간": "18:25:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 39, + "열번": 1047, + "역명": "서면", + "시간": "08:17:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2080, + "역명": "서면", + "시간": "10:06:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1113, + "역명": "서면", + "시간": "11:15:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2136, + "역명": "서면", + "시간": "13:04:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1167, + "역명": "서면", + "시간": "14:11:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2190, + "역명": "서면", + "시간": "15:59:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1225, + "역명": "서면", + "시간": "17:08:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 39, + "열번": 2250, + "역명": "서면", + "시간": "18:55:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 40, + "열번": 8908, + "역명": "서면", + "시간": "17:35:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 40, + "열번": 1267, + "역명": "서면", + "시간": "18:41:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 41, + "열번": 1053, + "역명": "서면", + "시간": "08:29:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2084, + "역명": "서면", + "시간": "10:18:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1117, + "역명": "서면", + "시간": "11:28:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2140, + "역명": "서면", + "시간": "13:17:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1171, + "역명": "서면", + "시간": "14:24:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2194, + "역명": "서면", + "시간": "16:12:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1229, + "역명": "서면", + "시간": "17:18:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2254, + "역명": "서면", + "시간": "19:05:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1305, + "역명": "서면", + "시간": "20:12:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2316, + "역명": "서면", + "시간": "21:59:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1345, + "역명": "서면", + "시간": "23:09:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 42, + "열번": 8910, + "역명": "서면", + "시간": "17:47:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 42, + "열번": 1273, + "역명": "서면", + "시간": "18:53:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 43, + "열번": 1057, + "역명": "서면", + "시간": "08:37:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2086, + "역명": "서면", + "시간": "10:24:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1119, + "역명": "서면", + "시간": "11:35:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2142, + "역명": "서면", + "시간": "13:23:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1173, + "역명": "서면", + "시간": "14:30:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2196, + "역명": "서면", + "시간": "16:19:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1233, + "역명": "서면", + "시간": "17:28:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2258, + "역명": "서면", + "시간": "19:15:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1307, + "역명": "서면", + "시간": "20:20:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 43, + "열번": 2318, + "역명": "서면", + "시간": "22:07:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 44, + "열번": 8912, + "역명": "서면", + "시간": "17:59:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 44, + "열번": 1279, + "역명": "서면", + "시간": "19:05:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 45, + "열번": 1069, + "역명": "서면", + "시간": "09:01:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2094, + "역명": "서면", + "시간": "10:48:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1125, + "역명": "서면", + "시간": "11:54:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2148, + "역명": "서면", + "시간": "13:43:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1179, + "역명": "서면", + "시간": "14:50:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2202, + "역명": "서면", + "시간": "16:37:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1239, + "역명": "서면", + "시간": "17:43:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2264, + "역명": "서면", + "시간": "19:30:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1311, + "역명": "서면", + "시간": "20:36:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2322, + "역명": "서면", + "시간": "22:27:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 45, + "열번": 1349, + "역명": "서면", + "시간": "23:33:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 46, + "열번": 8914, + "역명": "서면", + "시간": "18:11:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 46, + "열번": 1285, + "역명": "서면", + "시간": "19:17:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 47, + "열번": 1211, + "역명": "서면", + "시간": "16:31:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 47, + "열번": 2234, + "역명": "서면", + "시간": "18:19:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 47, + "열번": 1289, + "역명": "서면", + "시간": "19:25:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 47, + "열번": 2302, + "역명": "서면", + "시간": "21:16:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 48, + "열번": 8916, + "역명": "서면", + "시간": "18:23:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 48, + "열번": 1291, + "역명": "서면", + "시간": "19:29:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 49, + "열번": 1223, + "역명": "서면", + "시간": "17:03:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 49, + "열번": 2248, + "역명": "서면", + "시간": "18:51:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 49, + "열번": 1301, + "역명": "서면", + "시간": "19:56:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 49, + "열번": 2312, + "역명": "서면", + "시간": "21:46:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 50, + "열번": 2244, + "역명": "서면", + "시간": "18:43:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 50, + "열번": 1299, + "역명": "서면", + "시간": "19:49:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 50, + "열번": 2310, + "역명": "서면", + "시간": "21:40:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 50, + "열번": 1341, + "역명": "서면", + "시간": "22:47:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 51, + "열번": 1231, + "역명": "서면", + "시간": "17:23:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 51, + "열번": 2256, + "역명": "서면", + "시간": "19:10:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 52, + "열번": 6906, + "역명": "서면", + "시간": "10:09:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 52, + "열번": 5905, + "역명": "서면", + "시간": "11:18:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 53, + "열번": 1243, + "역명": "서면", + "시간": "17:53:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 53, + "열번": 2268, + "역명": "서면", + "시간": "19:40:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 54, + "열번": 6910, + "역명": "서면", + "시간": "13:52:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 54, + "열번": 5907, + "역명": "서면", + "시간": "14:59:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 55, + "열번": 1251, + "역명": "서면", + "시간": "18:09:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 55, + "열번": 2276, + "역명": "서면", + "시간": "20:00:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 55, + "열번": 1319, + "역명": "서면", + "시간": "21:08:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 55, + "열번": 2328, + "역명": "서면", + "시간": "22:57:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 57, + "열번": 1263, + "역명": "서면", + "시간": "18:33:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 57, + "열번": 2284, + "역명": "서면", + "시간": "20:22:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 57, + "열번": 1325, + "역명": "서면", + "시간": "21:32:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 57, + "열번": 2332, + "역명": "서면", + "시간": "23:21:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 59, + "열번": 5901, + "역명": "서면", + "시간": "10:26:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 59, + "열번": 6902, + "역명": "서면", + "시간": "12:15:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 61, + "열번": 5903, + "역명": "서면", + "시간": "13:54:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 61, + "열번": 5904, + "역명": "서면", + "시간": "15:43:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "범내골", + "시간": "05:51:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "범내골", + "시간": "07:02:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2050, + "역명": "범내골", + "시간": "08:46:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "범내골", + "시간": "05:35:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "범내골", + "시간": "06:53:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "범내골", + "시간": "08:37:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1085, + "역명": "범내골", + "시간": "09:47:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2108, + "역명": "범내골", + "시간": "11:31:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1139, + "역명": "범내골", + "시간": "12:42:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2162, + "역명": "범내골", + "시간": "14:26:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1193, + "역명": "범내골", + "시간": "15:38:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2216, + "역명": "범내골", + "시간": "17:23:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1261, + "역명": "범내골", + "시간": "18:32:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2282, + "역명": "범내골", + "시간": "20:14:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1323, + "역명": "범내골", + "시간": "21:27:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "범내골", + "시간": "06:04:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "범내골", + "시간": "07:20:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2058, + "역명": "범내골", + "시간": "09:04:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1095, + "역명": "범내골", + "시간": "10:19:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2118, + "역명": "범내골", + "시간": "12:03:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1149, + "역명": "범내골", + "시간": "13:15:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2172, + "역명": "범내골", + "시간": "14:59:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1203, + "역명": "범내골", + "시간": "16:10:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2226, + "역명": "범내골", + "시간": "17:53:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1277, + "역명": "범내골", + "시간": "19:04:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2294, + "역명": "범내골", + "시간": "20:50:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "범내골", + "시간": "06:17:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1025, + "역명": "범내골", + "시간": "07:32:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2062, + "역명": "범내골", + "시간": "09:14:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1097, + "역명": "범내골", + "시간": "10:26:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2120, + "역명": "범내골", + "시간": "12:10:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1151, + "역명": "범내골", + "시간": "13:21:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2174, + "역명": "범내골", + "시간": "15:05:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1205, + "역명": "범내골", + "시간": "16:16:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2228, + "역명": "범내골", + "시간": "18:01:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1281, + "역명": "범내골", + "시간": "19:12:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2296, + "역명": "범내골", + "시간": "20:56:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1333, + "역명": "범내골", + "시간": "22:10:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2338, + "역명": "범내골", + "시간": "23:57:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2008, + "역명": "범내골", + "시간": "06:29:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1029, + "역명": "범내골", + "시간": "07:42:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2066, + "역명": "범내골", + "시간": "09:24:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2010, + "역명": "범내골", + "시간": "06:41:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1033, + "역명": "범내골", + "시간": "07:52:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2070, + "역명": "범내골", + "시간": "09:34:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1103, + "역명": "범내골", + "시간": "10:45:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2126, + "역명": "범내골", + "시간": "12:29:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1157, + "역명": "범내골", + "시간": "13:41:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2180, + "역명": "범내골", + "시간": "15:25:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1213, + "역명": "범내골", + "시간": "16:40:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2236, + "역명": "범내골", + "시간": "18:25:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1293, + "역명": "범내골", + "시간": "19:37:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2304, + "역명": "범내골", + "시간": "21:20:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1337, + "역명": "범내골", + "시간": "22:30:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1003, + "역명": "범내골", + "시간": "05:48:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2020, + "역명": "범내골", + "시간": "07:33:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1059, + "역명": "범내골", + "시간": "08:44:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2088, + "역명": "범내골", + "시간": "10:28:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1121, + "역명": "범내골", + "시간": "11:44:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2144, + "역명": "범내골", + "시간": "13:28:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1175, + "역명": "범내골", + "시간": "14:39:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2198, + "역명": "범내골", + "시간": "16:23:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1235, + "역명": "범내골", + "시간": "17:36:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2260, + "역명": "범내골", + "시간": "19:18:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1309, + "역명": "범내골", + "시간": "20:31:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2320, + "역명": "범내골", + "시간": "22:15:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1347, + "역명": "범내골", + "시간": "23:24:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2012, + "역명": "범내골", + "시간": "06:53:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1039, + "역명": "범내골", + "시간": "08:04:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2074, + "역명": "범내골", + "시간": "09:46:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1107, + "역명": "범내골", + "시간": "10:58:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2130, + "역명": "범내골", + "시간": "12:42:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1161, + "역명": "범내골", + "시간": "13:54:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2184, + "역명": "범내골", + "시간": "15:38:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1217, + "역명": "범내골", + "시간": "16:51:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2240, + "역명": "범내골", + "시간": "18:33:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1297, + "역명": "범내골", + "시간": "19:47:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 8, + "열번": 2308, + "역명": "범내골", + "시간": "21:32:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 9, + "열번": 2022, + "역명": "범내골", + "시간": "07:39:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1063, + "역명": "범내골", + "시간": "08:52:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 9, + "열번": 2090, + "역명": "범내골", + "시간": "10:34:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2014, + "역명": "범내골", + "시간": "07:05:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1045, + "역명": "범내골", + "시간": "08:16:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 11, + "열번": 1005, + "역명": "범내골", + "시간": "05:59:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2024, + "역명": "범내골", + "시간": "07:45:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1065, + "역명": "범내골", + "시간": "08:56:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2092, + "역명": "범내골", + "시간": "10:40:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1123, + "역명": "범내골", + "시간": "11:50:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2146, + "역명": "범내골", + "시간": "13:34:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1177, + "역명": "범내골", + "시간": "14:46:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2200, + "역명": "범내골", + "시간": "16:29:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1237, + "역명": "범내골", + "시간": "17:41:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 11, + "열번": 2262, + "역명": "범내골", + "시간": "19:23:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2016, + "역명": "범내골", + "시간": "07:16:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1051, + "역명": "범내골", + "시간": "08:28:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2082, + "역명": "범내골", + "시간": "10:10:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1115, + "역명": "범내골", + "시간": "11:24:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2138, + "역명": "범내골", + "시간": "13:08:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1169, + "역명": "범내골", + "시간": "14:20:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "범내골", + "시간": "16:04:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1227, + "역명": "범내골", + "시간": "17:16:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2252, + "역명": "범내골", + "시간": "18:58:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1303, + "역명": "범내골", + "시간": "20:07:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2314, + "역명": "범내골", + "시간": "21:50:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1343, + "역명": "범내골", + "시간": "23:01:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1007, + "역명": "범내골", + "시간": "06:10:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2028, + "역명": "범내골", + "시간": "07:56:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1071, + "역명": "범내골", + "시간": "09:08:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2096, + "역명": "범내골", + "시간": "10:52:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1127, + "역명": "범내골", + "시간": "12:03:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2150, + "역명": "범내골", + "시간": "13:47:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1181, + "역명": "범내골", + "시간": "14:59:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2204, + "역명": "범내골", + "시간": "16:41:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1241, + "역명": "범내골", + "시간": "17:51:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2266, + "역명": "범내골", + "시간": "19:33:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1313, + "역명": "범내골", + "시간": "20:47:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2324, + "역명": "범내골", + "시간": "22:35:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 13, + "열번": 1351, + "역명": "범내골", + "시간": "23:48:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 14, + "열번": 1001, + "역명": "범내골", + "시간": "05:41:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2018, + "역명": "범내골", + "시간": "07:25:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1055, + "역명": "범내골", + "시간": "08:36:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1009, + "역명": "범내골", + "시간": "06:21:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2032, + "역명": "범내골", + "시간": "08:05:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1075, + "역명": "범내골", + "시간": "09:17:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2100, + "역명": "범내골", + "시간": "11:05:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1131, + "역명": "범내골", + "시간": "12:16:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2154, + "역명": "범내골", + "시간": "14:00:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1185, + "역명": "범내골", + "시간": "15:12:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2208, + "역명": "범내골", + "시간": "16:58:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1249, + "역명": "범내골", + "시간": "18:08:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2274, + "역명": "범내골", + "시간": "19:53:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2026, + "역명": "범내골", + "시간": "07:51:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1067, + "역명": "범내골", + "시간": "09:00:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2036, + "역명": "범내골", + "시간": "08:14:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2030, + "역명": "범내골", + "시간": "08:01:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1073, + "역명": "범내골", + "시간": "09:12:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2098, + "역명": "범내골", + "시간": "10:58:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1129, + "역명": "범내골", + "시간": "12:10:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2152, + "역명": "범내골", + "시간": "13:54:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1183, + "역명": "범내골", + "시간": "15:05:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2206, + "역명": "범내골", + "시간": "16:53:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1247, + "역명": "범내골", + "시간": "18:04:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2272, + "역명": "범내골", + "시간": "19:48:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1317, + "역명": "범내골", + "시간": "21:03:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2326, + "역명": "범내골", + "시간": "22:45:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 18, + "열번": 7931, + "역명": "범내골", + "시간": "00:04:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 19, + "열번": 1011, + "역명": "범내골", + "시간": "06:32:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2038, + "역명": "범내골", + "시간": "08:19:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1079, + "역명": "범내골", + "시간": "09:28:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2102, + "역명": "범내골", + "시간": "11:11:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1133, + "역명": "범내골", + "시간": "12:23:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2156, + "역명": "범내골", + "시간": "14:07:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1187, + "역명": "범내골", + "시간": "15:18:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2210, + "역명": "범내골", + "시간": "17:03:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1253, + "역명": "범내골", + "시간": "18:16:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2278, + "역명": "범내골", + "시간": "20:03:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2034, + "역명": "범내골", + "시간": "08:10:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 20, + "열번": 1077, + "역명": "범내골", + "시간": "09:22:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 21, + "열번": 1013, + "역명": "범내골", + "시간": "06:43:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2042, + "역명": "범내골", + "시간": "08:28:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1083, + "역명": "범내골", + "시간": "09:40:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2106, + "역명": "범내골", + "시간": "11:24:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1137, + "역명": "범내골", + "시간": "12:36:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2160, + "역명": "범내골", + "시간": "14:20:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1191, + "역명": "범내골", + "시간": "15:31:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2214, + "역명": "범내골", + "시간": "17:13:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1257, + "역명": "범내골", + "시간": "18:24:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2280, + "역명": "범내골", + "시간": "20:08:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1321, + "역명": "범내골", + "시간": "21:19:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2330, + "역명": "범내골", + "시간": "23:07:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2040, + "역명": "범내골", + "시간": "08:23:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1081, + "역명": "범내골", + "시간": "09:34:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2104, + "역명": "범내골", + "시간": "11:18:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1135, + "역명": "범내골", + "시간": "12:29:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2158, + "역명": "범내골", + "시간": "14:13:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1189, + "역명": "범내골", + "시간": "15:25:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2212, + "역명": "범내골", + "시간": "17:08:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1255, + "역명": "범내골", + "시간": "18:20:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2044, + "역명": "범내골", + "시간": "08:32:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "범내골", + "시간": "08:41:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1087, + "역명": "범내골", + "시간": "09:53:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2110, + "역명": "범내골", + "시간": "11:37:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1141, + "역명": "범내골", + "시간": "12:49:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2164, + "역명": "범내골", + "시간": "14:33:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1195, + "역명": "범내골", + "시간": "15:44:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2218, + "역명": "범내골", + "시간": "17:28:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1265, + "역명": "범내골", + "시간": "18:40:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 24, + "열번": 2286, + "역명": "범내골", + "시간": "20:26:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "범내골", + "시간": "07:11:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2054, + "역명": "범내골", + "시간": "08:55:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1091, + "역명": "범내골", + "시간": "10:06:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2114, + "역명": "범내골", + "시간": "11:50:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1145, + "역명": "범내골", + "시간": "13:02:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2168, + "역명": "범내골", + "시간": "14:46:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1199, + "역명": "범내골", + "시간": "15:57:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2222, + "역명": "범내골", + "시간": "17:41:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1271, + "역명": "범내골", + "시간": "18:52:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2290, + "역명": "범내골", + "시간": "20:38:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1329, + "역명": "범내골", + "시간": "21:51:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2336, + "역명": "범내골", + "시간": "23:42:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2052, + "역명": "범내골", + "시간": "08:50:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1089, + "역명": "범내골", + "시간": "10:00:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2112, + "역명": "범내골", + "시간": "11:44:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1143, + "역명": "범내골", + "시간": "12:55:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2166, + "역명": "범내골", + "시간": "14:39:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1197, + "역명": "범내골", + "시간": "15:51:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2220, + "역명": "범내골", + "시간": "17:37:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1269, + "역명": "범내골", + "시간": "18:48:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2288, + "역명": "범내골", + "시간": "20:32:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1327, + "역명": "범내골", + "시간": "21:43:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 26, + "열번": 2334, + "역명": "범내골", + "시간": "23:31:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1023, + "역명": "범내골", + "시간": "07:27:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 27, + "열번": 2060, + "역명": "범내골", + "시간": "09:09:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2056, + "역명": "범내골", + "시간": "08:59:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1093, + "역명": "범내골", + "시간": "10:13:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2116, + "역명": "범내골", + "시간": "11:57:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1147, + "역명": "범내골", + "시간": "13:08:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2170, + "역명": "범내골", + "시간": "14:52:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1201, + "역명": "범내골", + "시간": "16:04:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2224, + "역명": "범내골", + "시간": "17:49:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1275, + "역명": "범내골", + "시간": "19:00:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2292, + "역명": "범내골", + "시간": "20:44:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1331, + "역명": "범내골", + "시간": "22:00:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1027, + "역명": "범내골", + "시간": "07:37:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2064, + "역명": "범내골", + "시간": "09:19:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1099, + "역명": "범내골", + "시간": "10:32:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2122, + "역명": "범내골", + "시간": "12:16:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1153, + "역명": "범내골", + "시간": "13:28:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2176, + "역명": "범내골", + "시간": "15:12:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1207, + "역명": "범내골", + "시간": "16:22:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2230, + "역명": "범내골", + "시간": "18:05:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1283, + "역명": "범내골", + "시간": "19:16:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 29, + "열번": 2298, + "역명": "범내골", + "시간": "21:02:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1037, + "역명": "범내골", + "시간": "08:00:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1031, + "역명": "범내골", + "시간": "07:47:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2068, + "역명": "범내골", + "시간": "09:29:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1101, + "역명": "범내골", + "시간": "10:39:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2124, + "역명": "범내골", + "시간": "12:23:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1155, + "역명": "범내골", + "시간": "13:34:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2178, + "역명": "범내골", + "시간": "15:18:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1209, + "역명": "범내골", + "시간": "16:28:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2232, + "역명": "범내골", + "시간": "18:13:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1287, + "역명": "범내골", + "시간": "19:24:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2300, + "역명": "범내골", + "시간": "21:08:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1335, + "역명": "범내골", + "시간": "22:20:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 32, + "열번": 1049, + "역명": "범내골", + "시간": "08:24:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1035, + "역명": "범내골", + "시간": "07:56:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2072, + "역명": "범내골", + "시간": "09:40:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1105, + "역명": "범내골", + "시간": "10:52:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2128, + "역명": "범내골", + "시간": "12:36:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1159, + "역명": "범내골", + "시간": "13:47:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2182, + "역명": "범내골", + "시간": "15:31:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1215, + "역명": "범내골", + "시간": "16:46:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2238, + "역명": "범내골", + "시간": "18:29:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1295, + "역명": "범내골", + "시간": "19:42:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2306, + "역명": "범내골", + "시간": "21:26:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 33, + "열번": 1339, + "역명": "범내골", + "시간": "22:40:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 34, + "열번": 1061, + "역명": "범내골", + "시간": "08:48:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1041, + "역명": "범내골", + "시간": "08:08:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2076, + "역명": "범내골", + "시간": "09:52:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1109, + "역명": "범내골", + "시간": "11:05:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2132, + "역명": "범내골", + "시간": "12:49:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1163, + "역명": "범내골", + "시간": "14:00:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2186, + "역명": "범내골", + "시간": "15:44:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1219, + "역명": "범내골", + "시간": "16:56:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 35, + "열번": 2242, + "역명": "범내골", + "시간": "18:37:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 36, + "열번": 8904, + "역명": "범내골", + "시간": "16:47:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1245, + "역명": "범내골", + "시간": "18:00:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 36, + "열번": 2270, + "역명": "범내골", + "시간": "19:43:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1315, + "역명": "범내골", + "시간": "20:55:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1043, + "역명": "범내골", + "시간": "08:12:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2078, + "역명": "범내골", + "시간": "09:58:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1111, + "역명": "범내골", + "시간": "11:11:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2134, + "역명": "범내골", + "시간": "12:55:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1165, + "역명": "범내골", + "시간": "14:07:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2188, + "역명": "범내골", + "시간": "15:51:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1221, + "역명": "범내골", + "시간": "17:01:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 37, + "열번": 2246, + "역명": "범내골", + "시간": "18:45:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 38, + "열번": 8906, + "역명": "범내골", + "시간": "17:18:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 38, + "열번": 1259, + "역명": "범내골", + "시간": "18:28:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 39, + "열번": 1047, + "역명": "범내골", + "시간": "08:20:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2080, + "역명": "범내골", + "시간": "10:04:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1113, + "역명": "범내골", + "시간": "11:18:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2136, + "역명": "범내골", + "시간": "13:02:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1167, + "역명": "범내골", + "시간": "14:13:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2190, + "역명": "범내골", + "시간": "15:57:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1225, + "역명": "범내골", + "시간": "17:11:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 39, + "열번": 2250, + "역명": "범내골", + "시간": "18:53:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 40, + "열번": 8908, + "역명": "범내골", + "시간": "17:33:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 40, + "열번": 1267, + "역명": "범내골", + "시간": "18:44:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 41, + "열번": 1053, + "역명": "범내골", + "시간": "08:32:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2084, + "역명": "범내골", + "시간": "10:16:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1117, + "역명": "범내골", + "시간": "11:31:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2140, + "역명": "범내골", + "시간": "13:15:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1171, + "역명": "범내골", + "시간": "14:26:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2194, + "역명": "범내골", + "시간": "16:10:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1229, + "역명": "범내골", + "시간": "17:21:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2254, + "역명": "범내골", + "시간": "19:03:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1305, + "역명": "범내골", + "시간": "20:15:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2316, + "역명": "범내골", + "시간": "21:57:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1345, + "역명": "범내골", + "시간": "23:12:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 42, + "열번": 8910, + "역명": "범내골", + "시간": "17:45:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 42, + "열번": 1273, + "역명": "범내골", + "시간": "18:56:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 43, + "열번": 1057, + "역명": "범내골", + "시간": "08:40:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2086, + "역명": "범내골", + "시간": "10:22:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1119, + "역명": "범내골", + "시간": "11:37:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2142, + "역명": "범내골", + "시간": "13:21:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1173, + "역명": "범내골", + "시간": "14:33:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2196, + "역명": "범내골", + "시간": "16:17:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1233, + "역명": "범내골", + "시간": "17:31:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2258, + "역명": "범내골", + "시간": "19:13:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1307, + "역명": "범내골", + "시간": "20:23:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 43, + "열번": 2318, + "역명": "범내골", + "시간": "22:05:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 44, + "열번": 8912, + "역명": "범내골", + "시간": "17:57:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 44, + "열번": 1279, + "역명": "범내골", + "시간": "19:08:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 45, + "열번": 1069, + "역명": "범내골", + "시간": "09:04:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2094, + "역명": "범내골", + "시간": "10:46:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1125, + "역명": "범내골", + "시간": "11:57:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2148, + "역명": "범내골", + "시간": "13:41:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1179, + "역명": "범내골", + "시간": "14:52:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2202, + "역명": "범내골", + "시간": "16:35:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1239, + "역명": "범내골", + "시간": "17:46:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2264, + "역명": "범내골", + "시간": "19:28:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1311, + "역명": "범내골", + "시간": "20:39:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2322, + "역명": "범내골", + "시간": "22:25:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 45, + "열번": 1349, + "역명": "범내골", + "시간": "23:36:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 46, + "열번": 8914, + "역명": "범내골", + "시간": "18:09:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 46, + "열번": 1285, + "역명": "범내골", + "시간": "19:20:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 47, + "열번": 1211, + "역명": "범내골", + "시간": "16:34:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 47, + "열번": 2234, + "역명": "범내골", + "시간": "18:17:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 47, + "열번": 1289, + "역명": "범내골", + "시간": "19:28:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 47, + "열번": 2302, + "역명": "범내골", + "시간": "21:14:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 48, + "열번": 8916, + "역명": "범내골", + "시간": "18:21:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 48, + "열번": 1291, + "역명": "범내골", + "시간": "19:32:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 49, + "열번": 1223, + "역명": "범내골", + "시간": "17:06:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 49, + "열번": 2248, + "역명": "범내골", + "시간": "18:49:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 49, + "열번": 1301, + "역명": "범내골", + "시간": "19:59:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 49, + "열번": 2312, + "역명": "범내골", + "시간": "21:44:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 50, + "열번": 2244, + "역명": "범내골", + "시간": "18:41:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 50, + "열번": 1299, + "역명": "범내골", + "시간": "19:52:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 50, + "열번": 2310, + "역명": "범내골", + "시간": "21:38:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 50, + "열번": 1341, + "역명": "범내골", + "시간": "22:50:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 51, + "열번": 1231, + "역명": "범내골", + "시간": "17:26:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 51, + "열번": 2256, + "역명": "범내골", + "시간": "19:08:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 52, + "열번": 6906, + "역명": "범내골", + "시간": "10:07:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 52, + "열번": 5905, + "역명": "범내골", + "시간": "11:21:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 53, + "열번": 1243, + "역명": "범내골", + "시간": "17:56:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 53, + "열번": 2268, + "역명": "범내골", + "시간": "19:38:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 54, + "열번": 6910, + "역명": "범내골", + "시간": "13:50:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 54, + "열번": 5907, + "역명": "범내골", + "시간": "15:02:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 55, + "열번": 1251, + "역명": "범내골", + "시간": "18:12:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 55, + "열번": 2276, + "역명": "범내골", + "시간": "19:58:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 55, + "열번": 1319, + "역명": "범내골", + "시간": "21:11:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 55, + "열번": 2328, + "역명": "범내골", + "시간": "22:55:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 57, + "열번": 1263, + "역명": "범내골", + "시간": "18:36:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 57, + "열번": 2284, + "역명": "범내골", + "시간": "20:20:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 57, + "열번": 1325, + "역명": "범내골", + "시간": "21:35:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 57, + "열번": 2332, + "역명": "범내골", + "시간": "23:19:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 59, + "열번": 5901, + "역명": "범내골", + "시간": "10:29:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 59, + "열번": 6902, + "역명": "범내골", + "시간": "12:13:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 61, + "열번": 5903, + "역명": "범내골", + "시간": "13:57:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 61, + "열번": 5904, + "역명": "범내골", + "시간": "15:41:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "범일", + "시간": "05:49:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "범일", + "시간": "07:04:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2050, + "역명": "범일", + "시간": "08:44:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "범일", + "시간": "05:33:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "범일", + "시간": "06:55:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "범일", + "시간": "08:35:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1085, + "역명": "범일", + "시간": "09:48:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2108, + "역명": "범일", + "시간": "11:29:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1139, + "역명": "범일", + "시간": "12:44:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2162, + "역명": "범일", + "시간": "14:25:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1193, + "역명": "범일", + "시간": "15:39:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2216, + "역명": "범일", + "시간": "17:22:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1261, + "역명": "범일", + "시간": "18:33:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2282, + "역명": "범일", + "시간": "20:13:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1323, + "역명": "범일", + "시간": "21:28:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "범일", + "시간": "06:03:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "범일", + "시간": "07:22:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2058, + "역명": "범일", + "시간": "09:03:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1095, + "역명": "범일", + "시간": "10:21:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2118, + "역명": "범일", + "시간": "12:02:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1149, + "역명": "범일", + "시간": "13:16:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2172, + "역명": "범일", + "시간": "14:57:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1203, + "역명": "범일", + "시간": "16:11:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2226, + "역명": "범일", + "시간": "17:52:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1277, + "역명": "범일", + "시간": "19:05:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2294, + "역명": "범일", + "시간": "20:49:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "범일", + "시간": "06:15:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1025, + "역명": "범일", + "시간": "07:33:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2062, + "역명": "범일", + "시간": "09:13:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1097, + "역명": "범일", + "시간": "10:27:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2120, + "역명": "범일", + "시간": "12:08:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1151, + "역명": "범일", + "시간": "13:23:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2174, + "역명": "범일", + "시간": "15:04:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1205, + "역명": "범일", + "시간": "16:17:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2228, + "역명": "범일", + "시간": "18:00:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1281, + "역명": "범일", + "시간": "19:13:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2296, + "역명": "범일", + "시간": "20:55:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1333, + "역명": "범일", + "시간": "22:11:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2338, + "역명": "범일", + "시간": "23:55:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2008, + "역명": "범일", + "시간": "06:27:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1029, + "역명": "범일", + "시간": "07:43:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2066, + "역명": "범일", + "시간": "09:23:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2010, + "역명": "범일", + "시간": "06:39:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1033, + "역명": "범일", + "시간": "07:53:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2070, + "역명": "범일", + "시간": "09:33:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1103, + "역명": "범일", + "시간": "10:47:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2126, + "역명": "범일", + "시간": "12:28:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1157, + "역명": "범일", + "시간": "13:42:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2180, + "역명": "범일", + "시간": "15:23:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1213, + "역명": "범일", + "시간": "16:41:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2236, + "역명": "범일", + "시간": "18:24:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1293, + "역명": "범일", + "시간": "19:38:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2304, + "역명": "범일", + "시간": "21:19:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1337, + "역명": "범일", + "시간": "22:31:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1003, + "역명": "범일", + "시간": "05:50:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2020, + "역명": "범일", + "시간": "07:32:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1059, + "역명": "범일", + "시간": "08:45:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2088, + "역명": "범일", + "시간": "10:27:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1121, + "역명": "범일", + "시간": "11:45:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2144, + "역명": "범일", + "시간": "13:26:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1175, + "역명": "범일", + "시간": "14:41:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2198, + "역명": "범일", + "시간": "16:22:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1235, + "역명": "범일", + "시간": "17:37:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2260, + "역명": "범일", + "시간": "19:17:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1309, + "역명": "범일", + "시간": "20:32:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2320, + "역명": "범일", + "시간": "22:14:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1347, + "역명": "범일", + "시간": "23:25:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2012, + "역명": "범일", + "시간": "06:51:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1039, + "역명": "범일", + "시간": "08:05:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2074, + "역명": "범일", + "시간": "09:45:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1107, + "역명": "범일", + "시간": "11:00:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2130, + "역명": "범일", + "시간": "12:41:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1161, + "역명": "범일", + "시간": "13:55:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2184, + "역명": "범일", + "시간": "15:36:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1217, + "역명": "범일", + "시간": "16:52:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2240, + "역명": "범일", + "시간": "18:32:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1297, + "역명": "범일", + "시간": "19:48:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 8, + "열번": 2308, + "역명": "범일", + "시간": "21:31:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 9, + "열번": 2022, + "역명": "범일", + "시간": "07:38:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1063, + "역명": "범일", + "시간": "08:53:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 9, + "열번": 2090, + "역명": "범일", + "시간": "10:33:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2014, + "역명": "범일", + "시간": "07:03:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1045, + "역명": "범일", + "시간": "08:17:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 11, + "열번": 1005, + "역명": "범일", + "시간": "06:01:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2024, + "역명": "범일", + "시간": "07:44:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1065, + "역명": "범일", + "시간": "08:57:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2092, + "역명": "범일", + "시간": "10:39:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1123, + "역명": "범일", + "시간": "11:52:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2146, + "역명": "범일", + "시간": "13:33:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1177, + "역명": "범일", + "시간": "14:47:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2200, + "역명": "범일", + "시간": "16:28:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1237, + "역명": "범일", + "시간": "17:42:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 11, + "열번": 2262, + "역명": "범일", + "시간": "19:22:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2016, + "역명": "범일", + "시간": "07:14:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1051, + "역명": "범일", + "시간": "08:29:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2082, + "역명": "범일", + "시간": "10:09:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1115, + "역명": "범일", + "시간": "11:26:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2138, + "역명": "범일", + "시간": "13:07:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1169, + "역명": "범일", + "시간": "14:21:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "범일", + "시간": "16:02:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1227, + "역명": "범일", + "시간": "17:17:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2252, + "역명": "범일", + "시간": "18:57:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1303, + "역명": "범일", + "시간": "20:08:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2314, + "역명": "범일", + "시간": "21:49:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1343, + "역명": "범일", + "시간": "23:02:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1007, + "역명": "범일", + "시간": "06:12:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2028, + "역명": "범일", + "시간": "07:54:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1071, + "역명": "범일", + "시간": "09:09:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2096, + "역명": "범일", + "시간": "10:51:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1127, + "역명": "범일", + "시간": "12:05:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2150, + "역명": "범일", + "시간": "13:46:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1181, + "역명": "범일", + "시간": "15:00:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2204, + "역명": "범일", + "시간": "16:40:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1241, + "역명": "범일", + "시간": "17:52:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2266, + "역명": "범일", + "시간": "19:32:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1313, + "역명": "범일", + "시간": "20:48:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2324, + "역명": "범일", + "시간": "22:34:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 13, + "열번": 1351, + "역명": "범일", + "시간": "23:49:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 14, + "열번": 1001, + "역명": "범일", + "시간": "05:42:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2018, + "역명": "범일", + "시간": "07:23:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1055, + "역명": "범일", + "시간": "08:37:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1009, + "역명": "범일", + "시간": "06:23:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2032, + "역명": "범일", + "시간": "08:04:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1075, + "역명": "범일", + "시간": "09:18:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2100, + "역명": "범일", + "시간": "11:03:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1131, + "역명": "범일", + "시간": "12:18:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2154, + "역명": "범일", + "시간": "13:59:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1185, + "역명": "범일", + "시간": "15:13:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2208, + "역명": "범일", + "시간": "16:57:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1249, + "역명": "범일", + "시간": "18:09:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2274, + "역명": "범일", + "시간": "19:52:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2026, + "역명": "범일", + "시간": "07:49:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1067, + "역명": "범일", + "시간": "09:01:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2036, + "역명": "범일", + "시간": "08:13:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2030, + "역명": "범일", + "시간": "07:59:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1073, + "역명": "범일", + "시간": "09:13:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2098, + "역명": "범일", + "시간": "10:57:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1129, + "역명": "범일", + "시간": "12:11:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2152, + "역명": "범일", + "시간": "13:52:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1183, + "역명": "범일", + "시간": "15:07:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2206, + "역명": "범일", + "시간": "16:52:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1247, + "역명": "범일", + "시간": "18:05:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2272, + "역명": "범일", + "시간": "19:47:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1317, + "역명": "범일", + "시간": "21:04:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2326, + "역명": "범일", + "시간": "22:44:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 18, + "열번": 7931, + "역명": "범일", + "시간": "00:05:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 19, + "열번": 1011, + "역명": "범일", + "시간": "06:34:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2038, + "역명": "범일", + "시간": "08:17:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1079, + "역명": "범일", + "시간": "09:30:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2102, + "역명": "범일", + "시간": "11:10:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1133, + "역명": "범일", + "시간": "12:24:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2156, + "역명": "범일", + "시간": "14:05:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1187, + "역명": "범일", + "시간": "15:20:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2210, + "역명": "범일", + "시간": "17:02:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1253, + "역명": "범일", + "시간": "18:17:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2278, + "역명": "범일", + "시간": "20:02:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2034, + "역명": "범일", + "시간": "08:08:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 20, + "열번": 1077, + "역명": "범일", + "시간": "09:24:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 21, + "열번": 1013, + "역명": "범일", + "시간": "06:45:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2042, + "역명": "범일", + "시간": "08:26:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1083, + "역명": "범일", + "시간": "09:42:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2106, + "역명": "범일", + "시간": "11:23:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1137, + "역명": "범일", + "시간": "12:37:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2160, + "역명": "범일", + "시간": "14:18:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1191, + "역명": "범일", + "시간": "15:33:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2214, + "역명": "범일", + "시간": "17:12:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1257, + "역명": "범일", + "시간": "18:25:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2280, + "역명": "범일", + "시간": "20:07:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1321, + "역명": "범일", + "시간": "21:20:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2330, + "역명": "범일", + "시간": "23:06:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2040, + "역명": "범일", + "시간": "08:22:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1081, + "역명": "범일", + "시간": "09:36:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2104, + "역명": "범일", + "시간": "11:16:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1135, + "역명": "범일", + "시간": "12:31:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2158, + "역명": "범일", + "시간": "14:12:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1189, + "역명": "범일", + "시간": "15:26:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2212, + "역명": "범일", + "시간": "17:07:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1255, + "역명": "범일", + "시간": "18:21:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2044, + "역명": "범일", + "시간": "08:31:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "범일", + "시간": "08:40:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1087, + "역명": "범일", + "시간": "09:55:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2110, + "역명": "범일", + "시간": "11:36:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1141, + "역명": "범일", + "시간": "12:50:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2164, + "역명": "범일", + "시간": "14:31:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1195, + "역명": "범일", + "시간": "15:46:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2218, + "역명": "범일", + "시간": "17:27:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1265, + "역명": "범일", + "시간": "18:41:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 24, + "열번": 2286, + "역명": "범일", + "시간": "20:25:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "범일", + "시간": "07:13:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2054, + "역명": "범일", + "시간": "08:53:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1091, + "역명": "범일", + "시간": "10:08:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2114, + "역명": "범일", + "시간": "11:49:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1145, + "역명": "범일", + "시간": "13:03:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2168, + "역명": "범일", + "시간": "14:44:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1199, + "역명": "범일", + "시간": "15:59:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2222, + "역명": "범일", + "시간": "17:40:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1271, + "역명": "범일", + "시간": "18:53:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2290, + "역명": "범일", + "시간": "20:37:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1329, + "역명": "범일", + "시간": "21:52:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2336, + "역명": "범일", + "시간": "23:40:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2052, + "역명": "범일", + "시간": "08:49:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1089, + "역명": "범일", + "시간": "10:01:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2112, + "역명": "범일", + "시간": "11:42:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1143, + "역명": "범일", + "시간": "12:57:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2166, + "역명": "범일", + "시간": "14:38:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1197, + "역명": "범일", + "시간": "15:52:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2220, + "역명": "범일", + "시간": "17:36:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1269, + "역명": "범일", + "시간": "18:49:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2288, + "역명": "범일", + "시간": "20:31:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1327, + "역명": "범일", + "시간": "21:44:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 26, + "열번": 2334, + "역명": "범일", + "시간": "23:30:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1023, + "역명": "범일", + "시간": "07:28:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 27, + "열번": 2060, + "역명": "범일", + "시간": "09:08:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2056, + "역명": "범일", + "시간": "08:58:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1093, + "역명": "범일", + "시간": "10:14:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2116, + "역명": "범일", + "시간": "11:55:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1147, + "역명": "범일", + "시간": "13:10:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2170, + "역명": "범일", + "시간": "14:51:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1201, + "역명": "범일", + "시간": "16:05:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2224, + "역명": "범일", + "시간": "17:48:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1275, + "역명": "범일", + "시간": "19:01:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2292, + "역명": "범일", + "시간": "20:43:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1331, + "역명": "범일", + "시간": "22:01:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1027, + "역명": "범일", + "시간": "07:38:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2064, + "역명": "범일", + "시간": "09:18:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1099, + "역명": "범일", + "시간": "10:34:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2122, + "역명": "범일", + "시간": "12:15:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1153, + "역명": "범일", + "시간": "13:29:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2176, + "역명": "범일", + "시간": "15:10:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1207, + "역명": "범일", + "시간": "16:23:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2230, + "역명": "범일", + "시간": "18:04:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1283, + "역명": "범일", + "시간": "19:17:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 29, + "열번": 2298, + "역명": "범일", + "시간": "21:01:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1037, + "역명": "범일", + "시간": "08:01:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1031, + "역명": "범일", + "시간": "07:48:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2068, + "역명": "범일", + "시간": "09:28:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1101, + "역명": "범일", + "시간": "10:40:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2124, + "역명": "범일", + "시간": "12:21:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1155, + "역명": "범일", + "시간": "13:36:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2178, + "역명": "범일", + "시간": "15:17:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1209, + "역명": "범일", + "시간": "16:29:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2232, + "역명": "범일", + "시간": "18:12:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1287, + "역명": "범일", + "시간": "19:25:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2300, + "역명": "범일", + "시간": "21:07:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1335, + "역명": "범일", + "시간": "22:21:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 32, + "열번": 1049, + "역명": "범일", + "시간": "08:25:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1035, + "역명": "범일", + "시간": "07:57:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2072, + "역명": "범일", + "시간": "09:39:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1105, + "역명": "범일", + "시간": "10:53:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2128, + "역명": "범일", + "시간": "12:34:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1159, + "역명": "범일", + "시간": "13:49:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2182, + "역명": "범일", + "시간": "15:30:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1215, + "역명": "범일", + "시간": "16:47:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2238, + "역명": "범일", + "시간": "18:28:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1295, + "역명": "범일", + "시간": "19:43:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2306, + "역명": "범일", + "시간": "21:25:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 33, + "열번": 1339, + "역명": "범일", + "시간": "22:41:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 34, + "열번": 1061, + "역명": "범일", + "시간": "08:49:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1041, + "역명": "범일", + "시간": "08:09:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2076, + "역명": "범일", + "시간": "09:51:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1109, + "역명": "범일", + "시간": "11:06:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2132, + "역명": "범일", + "시간": "12:47:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1163, + "역명": "범일", + "시간": "14:02:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2186, + "역명": "범일", + "시간": "15:43:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1219, + "역명": "범일", + "시간": "16:57:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 35, + "열번": 2242, + "역명": "범일", + "시간": "18:36:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 36, + "열번": 8904, + "역명": "범일", + "시간": "16:46:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1245, + "역명": "범일", + "시간": "18:01:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 36, + "열번": 2270, + "역명": "범일", + "시간": "19:42:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1315, + "역명": "범일", + "시간": "20:56:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1043, + "역명": "범일", + "시간": "08:13:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2078, + "역명": "범일", + "시간": "09:57:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1111, + "역명": "범일", + "시간": "11:13:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2134, + "역명": "범일", + "시간": "12:54:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1165, + "역명": "범일", + "시간": "14:08:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2188, + "역명": "범일", + "시간": "15:49:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1221, + "역명": "범일", + "시간": "17:02:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 37, + "열번": 2246, + "역명": "범일", + "시간": "18:44:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 38, + "열번": 8906, + "역명": "범일", + "시간": "17:17:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 38, + "열번": 1259, + "역명": "범일", + "시간": "18:29:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 39, + "열번": 1047, + "역명": "범일", + "시간": "08:21:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2080, + "역명": "범일", + "시간": "10:03:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1113, + "역명": "범일", + "시간": "11:19:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2136, + "역명": "범일", + "시간": "13:00:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1167, + "역명": "범일", + "시간": "14:15:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2190, + "역명": "범일", + "시간": "15:56:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1225, + "역명": "범일", + "시간": "17:12:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 39, + "열번": 2250, + "역명": "범일", + "시간": "18:52:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 40, + "열번": 8908, + "역명": "범일", + "시간": "17:32:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 40, + "열번": 1267, + "역명": "범일", + "시간": "18:45:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 41, + "열번": 1053, + "역명": "범일", + "시간": "08:33:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2084, + "역명": "범일", + "시간": "10:15:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1117, + "역명": "범일", + "시간": "11:32:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2140, + "역명": "범일", + "시간": "13:13:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1171, + "역명": "범일", + "시간": "14:28:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2194, + "역명": "범일", + "시간": "16:09:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1229, + "역명": "범일", + "시간": "17:22:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2254, + "역명": "범일", + "시간": "19:02:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1305, + "역명": "범일", + "시간": "20:16:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2316, + "역명": "범일", + "시간": "21:56:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1345, + "역명": "범일", + "시간": "23:13:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 42, + "열번": 8910, + "역명": "범일", + "시간": "17:44:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 42, + "열번": 1273, + "역명": "범일", + "시간": "18:57:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 43, + "열번": 1057, + "역명": "범일", + "시간": "08:41:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2086, + "역명": "범일", + "시간": "10:21:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1119, + "역명": "범일", + "시간": "11:39:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2142, + "역명": "범일", + "시간": "13:20:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1173, + "역명": "범일", + "시간": "14:34:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2196, + "역명": "범일", + "시간": "16:15:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1233, + "역명": "범일", + "시간": "17:32:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2258, + "역명": "범일", + "시간": "19:12:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1307, + "역명": "범일", + "시간": "20:24:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 43, + "열번": 2318, + "역명": "범일", + "시간": "22:04:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 44, + "열번": 8912, + "역명": "범일", + "시간": "17:56:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 44, + "열번": 1279, + "역명": "범일", + "시간": "19:09:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 45, + "열번": 1069, + "역명": "범일", + "시간": "09:05:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2094, + "역명": "범일", + "시간": "10:45:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1125, + "역명": "범일", + "시간": "11:58:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2148, + "역명": "범일", + "시간": "13:39:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1179, + "역명": "범일", + "시간": "14:54:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2202, + "역명": "범일", + "시간": "16:34:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1239, + "역명": "범일", + "시간": "17:47:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2264, + "역명": "범일", + "시간": "19:27:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1311, + "역명": "범일", + "시간": "20:40:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2322, + "역명": "범일", + "시간": "22:24:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 45, + "열번": 1349, + "역명": "범일", + "시간": "23:37:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 46, + "열번": 8914, + "역명": "범일", + "시간": "18:08:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 46, + "열번": 1285, + "역명": "범일", + "시간": "19:21:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 47, + "열번": 1211, + "역명": "범일", + "시간": "16:35:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 47, + "열번": 2234, + "역명": "범일", + "시간": "18:16:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 47, + "열번": 1289, + "역명": "범일", + "시간": "19:29:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 47, + "열번": 2302, + "역명": "범일", + "시간": "21:13:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 48, + "열번": 8916, + "역명": "범일", + "시간": "18:20:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 48, + "열번": 1291, + "역명": "범일", + "시간": "19:33:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 49, + "열번": 1223, + "역명": "범일", + "시간": "17:07:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 49, + "열번": 2248, + "역명": "범일", + "시간": "18:48:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 49, + "열번": 1301, + "역명": "범일", + "시간": "20:00:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 49, + "열번": 2312, + "역명": "범일", + "시간": "21:43:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 50, + "열번": 2244, + "역명": "범일", + "시간": "18:40:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 50, + "열번": 1299, + "역명": "범일", + "시간": "19:53:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 50, + "열번": 2310, + "역명": "범일", + "시간": "21:37:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 50, + "열번": 1341, + "역명": "범일", + "시간": "22:51:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 51, + "열번": 1231, + "역명": "범일", + "시간": "17:27:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 51, + "열번": 2256, + "역명": "범일", + "시간": "19:07:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 52, + "열번": 6906, + "역명": "범일", + "시간": "10:06:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 52, + "열번": 5905, + "역명": "범일", + "시간": "11:22:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 53, + "열번": 1243, + "역명": "범일", + "시간": "17:57:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 53, + "열번": 2268, + "역명": "범일", + "시간": "19:37:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 54, + "열번": 6910, + "역명": "범일", + "시간": "13:49:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 54, + "열번": 5907, + "역명": "범일", + "시간": "15:03:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 55, + "열번": 1251, + "역명": "범일", + "시간": "18:13:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 55, + "열번": 2276, + "역명": "범일", + "시간": "19:57:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 55, + "열번": 1319, + "역명": "범일", + "시간": "21:12:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 55, + "열번": 2328, + "역명": "범일", + "시간": "22:54:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 57, + "열번": 1263, + "역명": "범일", + "시간": "18:37:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 57, + "열번": 2284, + "역명": "범일", + "시간": "20:19:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 57, + "열번": 1325, + "역명": "범일", + "시간": "21:36:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 57, + "열번": 2332, + "역명": "범일", + "시간": "23:18:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 59, + "열번": 5901, + "역명": "범일", + "시간": "10:30:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 59, + "열번": 6902, + "역명": "범일", + "시간": "12:11:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 61, + "열번": 5903, + "역명": "범일", + "시간": "13:58:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 61, + "열번": 5904, + "역명": "범일", + "시간": "15:39:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "좌천", + "시간": "05:47:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "좌천", + "시간": "07:06:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2050, + "역명": "좌천", + "시간": "08:42:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "좌천", + "시간": "05:31:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "좌천", + "시간": "06:57:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "좌천", + "시간": "08:33:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1085, + "역명": "좌천", + "시간": "09:50:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2108, + "역명": "좌천", + "시간": "11:27:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1139, + "역명": "좌천", + "시간": "12:46:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2162, + "역명": "좌천", + "시간": "14:23:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1193, + "역명": "좌천", + "시간": "15:41:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2216, + "역명": "좌천", + "시간": "17:20:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1261, + "역명": "좌천", + "시간": "18:35:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2282, + "역명": "좌천", + "시간": "20:11:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1323, + "역명": "좌천", + "시간": "21:30:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "좌천", + "시간": "06:01:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "좌천", + "시간": "07:24:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2058, + "역명": "좌천", + "시간": "09:01:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1095, + "역명": "좌천", + "시간": "10:23:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2118, + "역명": "좌천", + "시간": "12:00:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1149, + "역명": "좌천", + "시간": "13:18:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2172, + "역명": "좌천", + "시간": "14:55:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1203, + "역명": "좌천", + "시간": "16:13:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2226, + "역명": "좌천", + "시간": "17:50:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1277, + "역명": "좌천", + "시간": "19:07:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2294, + "역명": "좌천", + "시간": "20:47:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "좌천", + "시간": "06:13:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1025, + "역명": "좌천", + "시간": "07:35:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2062, + "역명": "좌천", + "시간": "09:11:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1097, + "역명": "좌천", + "시간": "10:29:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2120, + "역명": "좌천", + "시간": "12:06:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1151, + "역명": "좌천", + "시간": "13:25:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2174, + "역명": "좌천", + "시간": "15:02:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1205, + "역명": "좌천", + "시간": "16:19:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2228, + "역명": "좌천", + "시간": "17:58:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1281, + "역명": "좌천", + "시간": "19:15:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2296, + "역명": "좌천", + "시간": "20:53:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1333, + "역명": "좌천", + "시간": "22:13:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2338, + "역명": "좌천", + "시간": "23:54:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2008, + "역명": "좌천", + "시간": "06:25:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1029, + "역명": "좌천", + "시간": "07:45:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2066, + "역명": "좌천", + "시간": "09:21:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2010, + "역명": "좌천", + "시간": "06:37:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1033, + "역명": "좌천", + "시간": "07:55:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2070, + "역명": "좌천", + "시간": "09:31:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1103, + "역명": "좌천", + "시간": "10:49:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2126, + "역명": "좌천", + "시간": "12:26:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1157, + "역명": "좌천", + "시간": "13:44:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2180, + "역명": "좌천", + "시간": "15:21:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1213, + "역명": "좌천", + "시간": "16:43:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2236, + "역명": "좌천", + "시간": "18:22:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1293, + "역명": "좌천", + "시간": "19:40:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2304, + "역명": "좌천", + "시간": "21:17:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1337, + "역명": "좌천", + "시간": "22:33:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1003, + "역명": "좌천", + "시간": "05:52:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2020, + "역명": "좌천", + "시간": "07:30:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1059, + "역명": "좌천", + "시간": "08:47:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2088, + "역명": "좌천", + "시간": "10:25:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1121, + "역명": "좌천", + "시간": "11:47:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2144, + "역명": "좌천", + "시간": "13:24:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1175, + "역명": "좌천", + "시간": "14:43:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2198, + "역명": "좌천", + "시간": "16:20:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1235, + "역명": "좌천", + "시간": "17:39:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2260, + "역명": "좌천", + "시간": "19:15:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1309, + "역명": "좌천", + "시간": "20:34:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2320, + "역명": "좌천", + "시간": "22:12:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1347, + "역명": "좌천", + "시간": "23:27:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2012, + "역명": "좌천", + "시간": "06:49:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1039, + "역명": "좌천", + "시간": "08:07:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2074, + "역명": "좌천", + "시간": "09:43:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1107, + "역명": "좌천", + "시간": "11:02:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2130, + "역명": "좌천", + "시간": "12:39:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1161, + "역명": "좌천", + "시간": "13:57:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2184, + "역명": "좌천", + "시간": "15:34:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1217, + "역명": "좌천", + "시간": "16:54:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2240, + "역명": "좌천", + "시간": "18:30:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1297, + "역명": "좌천", + "시간": "19:50:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 8, + "열번": 2308, + "역명": "좌천", + "시간": "21:29:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 9, + "열번": 2022, + "역명": "좌천", + "시간": "07:36:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1063, + "역명": "좌천", + "시간": "08:55:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 9, + "열번": 2090, + "역명": "좌천", + "시간": "10:31:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2014, + "역명": "좌천", + "시간": "07:01:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1045, + "역명": "좌천", + "시간": "08:19:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 11, + "열번": 1005, + "역명": "좌천", + "시간": "06:03:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2024, + "역명": "좌천", + "시간": "07:42:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1065, + "역명": "좌천", + "시간": "08:59:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2092, + "역명": "좌천", + "시간": "10:37:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1123, + "역명": "좌천", + "시간": "11:54:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2146, + "역명": "좌천", + "시간": "13:31:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1177, + "역명": "좌천", + "시간": "14:49:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2200, + "역명": "좌천", + "시간": "16:26:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1237, + "역명": "좌천", + "시간": "17:44:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 11, + "열번": 2262, + "역명": "좌천", + "시간": "19:20:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2016, + "역명": "좌천", + "시간": "07:12:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1051, + "역명": "좌천", + "시간": "08:31:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2082, + "역명": "좌천", + "시간": "10:07:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1115, + "역명": "좌천", + "시간": "11:28:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2138, + "역명": "좌천", + "시간": "13:05:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1169, + "역명": "좌천", + "시간": "14:23:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "좌천", + "시간": "16:00:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1227, + "역명": "좌천", + "시간": "17:19:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2252, + "역명": "좌천", + "시간": "18:55:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1303, + "역명": "좌천", + "시간": "20:10:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2314, + "역명": "좌천", + "시간": "21:47:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1343, + "역명": "좌천", + "시간": "23:04:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1007, + "역명": "좌천", + "시간": "06:14:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2028, + "역명": "좌천", + "시간": "07:52:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1071, + "역명": "좌천", + "시간": "09:11:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2096, + "역명": "좌천", + "시간": "10:49:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1127, + "역명": "좌천", + "시간": "12:07:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2150, + "역명": "좌천", + "시간": "13:44:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1181, + "역명": "좌천", + "시간": "15:02:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2204, + "역명": "좌천", + "시간": "16:38:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1241, + "역명": "좌천", + "시간": "17:54:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2266, + "역명": "좌천", + "시간": "19:30:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1313, + "역명": "좌천", + "시간": "20:50:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2324, + "역명": "좌천", + "시간": "22:32:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 13, + "열번": 1351, + "역명": "좌천", + "시간": "23:51:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 14, + "열번": 1001, + "역명": "좌천", + "시간": "05:44:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2018, + "역명": "좌천", + "시간": "07:21:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1055, + "역명": "좌천", + "시간": "08:39:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1009, + "역명": "좌천", + "시간": "06:25:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2032, + "역명": "좌천", + "시간": "08:02:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1075, + "역명": "좌천", + "시간": "09:20:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2100, + "역명": "좌천", + "시간": "11:01:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1131, + "역명": "좌천", + "시간": "12:20:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2154, + "역명": "좌천", + "시간": "13:57:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1185, + "역명": "좌천", + "시간": "15:15:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2208, + "역명": "좌천", + "시간": "16:55:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1249, + "역명": "좌천", + "시간": "18:11:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2274, + "역명": "좌천", + "시간": "19:50:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2026, + "역명": "좌천", + "시간": "07:47:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1067, + "역명": "좌천", + "시간": "09:03:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2036, + "역명": "좌천", + "시간": "08:11:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2030, + "역명": "좌천", + "시간": "07:57:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1073, + "역명": "좌천", + "시간": "09:15:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2098, + "역명": "좌천", + "시간": "10:55:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1129, + "역명": "좌천", + "시간": "12:13:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2152, + "역명": "좌천", + "시간": "13:50:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1183, + "역명": "좌천", + "시간": "15:09:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2206, + "역명": "좌천", + "시간": "16:50:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1247, + "역명": "좌천", + "시간": "18:07:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2272, + "역명": "좌천", + "시간": "19:45:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1317, + "역명": "좌천", + "시간": "21:06:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2326, + "역명": "좌천", + "시간": "22:42:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 18, + "열번": 7931, + "역명": "좌천", + "시간": "00:07:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 19, + "열번": 1011, + "역명": "좌천", + "시간": "06:36:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2038, + "역명": "좌천", + "시간": "08:15:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1079, + "역명": "좌천", + "시간": "09:32:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2102, + "역명": "좌천", + "시간": "11:08:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1133, + "역명": "좌천", + "시간": "12:26:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2156, + "역명": "좌천", + "시간": "14:03:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1187, + "역명": "좌천", + "시간": "15:22:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2210, + "역명": "좌천", + "시간": "17:00:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1253, + "역명": "좌천", + "시간": "18:19:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2278, + "역명": "좌천", + "시간": "20:00:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2034, + "역명": "좌천", + "시간": "08:06:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 20, + "열번": 1077, + "역명": "좌천", + "시간": "09:26:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 21, + "열번": 1013, + "역명": "좌천", + "시간": "06:47:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2042, + "역명": "좌천", + "시간": "08:24:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1083, + "역명": "좌천", + "시간": "09:44:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2106, + "역명": "좌천", + "시간": "11:21:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1137, + "역명": "좌천", + "시간": "12:39:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2160, + "역명": "좌천", + "시간": "14:16:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1191, + "역명": "좌천", + "시간": "15:35:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2214, + "역명": "좌천", + "시간": "17:10:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1257, + "역명": "좌천", + "시간": "18:27:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2280, + "역명": "좌천", + "시간": "20:05:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1321, + "역명": "좌천", + "시간": "21:22:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2330, + "역명": "좌천", + "시간": "23:04:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2040, + "역명": "좌천", + "시간": "08:20:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1081, + "역명": "좌천", + "시간": "09:38:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2104, + "역명": "좌천", + "시간": "11:14:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1135, + "역명": "좌천", + "시간": "12:33:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2158, + "역명": "좌천", + "시간": "14:10:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1189, + "역명": "좌천", + "시간": "15:28:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2212, + "역명": "좌천", + "시간": "17:05:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1255, + "역명": "좌천", + "시간": "18:23:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2044, + "역명": "좌천", + "시간": "08:29:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "좌천", + "시간": "08:38:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1087, + "역명": "좌천", + "시간": "09:57:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2110, + "역명": "좌천", + "시간": "11:34:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1141, + "역명": "좌천", + "시간": "12:52:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2164, + "역명": "좌천", + "시간": "14:29:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1195, + "역명": "좌천", + "시간": "15:48:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2218, + "역명": "좌천", + "시간": "17:25:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1265, + "역명": "좌천", + "시간": "18:43:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 24, + "열번": 2286, + "역명": "좌천", + "시간": "20:23:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "좌천", + "시간": "07:15:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2054, + "역명": "좌천", + "시간": "08:51:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1091, + "역명": "좌천", + "시간": "10:10:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2114, + "역명": "좌천", + "시간": "11:47:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1145, + "역명": "좌천", + "시간": "13:05:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2168, + "역명": "좌천", + "시간": "14:42:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1199, + "역명": "좌천", + "시간": "16:01:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2222, + "역명": "좌천", + "시간": "17:38:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1271, + "역명": "좌천", + "시간": "18:55:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2290, + "역명": "좌천", + "시간": "20:35:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1329, + "역명": "좌천", + "시간": "21:54:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2336, + "역명": "좌천", + "시간": "23:38:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2052, + "역명": "좌천", + "시간": "08:47:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1089, + "역명": "좌천", + "시간": "10:03:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2112, + "역명": "좌천", + "시간": "11:40:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1143, + "역명": "좌천", + "시간": "12:59:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2166, + "역명": "좌천", + "시간": "14:36:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1197, + "역명": "좌천", + "시간": "15:54:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2220, + "역명": "좌천", + "시간": "17:34:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1269, + "역명": "좌천", + "시간": "18:51:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2288, + "역명": "좌천", + "시간": "20:29:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1327, + "역명": "좌천", + "시간": "21:46:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 26, + "열번": 2334, + "역명": "좌천", + "시간": "23:28:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1023, + "역명": "좌천", + "시간": "07:30:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 27, + "열번": 2060, + "역명": "좌천", + "시간": "09:06:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2056, + "역명": "좌천", + "시간": "08:56:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1093, + "역명": "좌천", + "시간": "10:16:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2116, + "역명": "좌천", + "시간": "11:53:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1147, + "역명": "좌천", + "시간": "13:12:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2170, + "역명": "좌천", + "시간": "14:49:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1201, + "역명": "좌천", + "시간": "16:07:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2224, + "역명": "좌천", + "시간": "17:46:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1275, + "역명": "좌천", + "시간": "19:03:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2292, + "역명": "좌천", + "시간": "20:41:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1331, + "역명": "좌천", + "시간": "22:03:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1027, + "역명": "좌천", + "시간": "07:40:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2064, + "역명": "좌천", + "시간": "09:16:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1099, + "역명": "좌천", + "시간": "10:36:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2122, + "역명": "좌천", + "시간": "12:13:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1153, + "역명": "좌천", + "시간": "13:31:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2176, + "역명": "좌천", + "시간": "15:08:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1207, + "역명": "좌천", + "시간": "16:25:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2230, + "역명": "좌천", + "시간": "18:02:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1283, + "역명": "좌천", + "시간": "19:19:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 29, + "열번": 2298, + "역명": "좌천", + "시간": "20:59:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1037, + "역명": "좌천", + "시간": "08:03:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1031, + "역명": "좌천", + "시간": "07:50:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2068, + "역명": "좌천", + "시간": "09:26:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1101, + "역명": "좌천", + "시간": "10:42:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2124, + "역명": "좌천", + "시간": "12:19:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1155, + "역명": "좌천", + "시간": "13:38:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2178, + "역명": "좌천", + "시간": "15:15:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1209, + "역명": "좌천", + "시간": "16:31:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2232, + "역명": "좌천", + "시간": "18:10:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1287, + "역명": "좌천", + "시간": "19:27:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2300, + "역명": "좌천", + "시간": "21:05:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1335, + "역명": "좌천", + "시간": "22:23:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 32, + "열번": 1049, + "역명": "좌천", + "시간": "08:27:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1035, + "역명": "좌천", + "시간": "07:59:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2072, + "역명": "좌천", + "시간": "09:37:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1105, + "역명": "좌천", + "시간": "10:55:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2128, + "역명": "좌천", + "시간": "12:32:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1159, + "역명": "좌천", + "시간": "13:51:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2182, + "역명": "좌천", + "시간": "15:28:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1215, + "역명": "좌천", + "시간": "16:49:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2238, + "역명": "좌천", + "시간": "18:26:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1295, + "역명": "좌천", + "시간": "19:45:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2306, + "역명": "좌천", + "시간": "21:23:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 33, + "열번": 1339, + "역명": "좌천", + "시간": "22:43:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 34, + "열번": 1061, + "역명": "좌천", + "시간": "08:51:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1041, + "역명": "좌천", + "시간": "08:11:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2076, + "역명": "좌천", + "시간": "09:49:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1109, + "역명": "좌천", + "시간": "11:08:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2132, + "역명": "좌천", + "시간": "12:45:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1163, + "역명": "좌천", + "시간": "14:04:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2186, + "역명": "좌천", + "시간": "15:41:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1219, + "역명": "좌천", + "시간": "16:59:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 35, + "열번": 2242, + "역명": "좌천", + "시간": "18:34:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 36, + "열번": 8904, + "역명": "좌천", + "시간": "16:44:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1245, + "역명": "좌천", + "시간": "18:03:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 36, + "열번": 2270, + "역명": "좌천", + "시간": "19:40:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1315, + "역명": "좌천", + "시간": "20:58:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1043, + "역명": "좌천", + "시간": "08:15:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2078, + "역명": "좌천", + "시간": "09:55:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1111, + "역명": "좌천", + "시간": "11:15:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2134, + "역명": "좌천", + "시간": "12:52:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1165, + "역명": "좌천", + "시간": "14:10:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2188, + "역명": "좌천", + "시간": "15:47:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1221, + "역명": "좌천", + "시간": "17:04:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 37, + "열번": 2246, + "역명": "좌천", + "시간": "18:42:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 38, + "열번": 8906, + "역명": "좌천", + "시간": "17:15:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 38, + "열번": 1259, + "역명": "좌천", + "시간": "18:31:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 39, + "열번": 1047, + "역명": "좌천", + "시간": "08:23:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2080, + "역명": "좌천", + "시간": "10:01:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1113, + "역명": "좌천", + "시간": "11:21:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2136, + "역명": "좌천", + "시간": "12:58:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1167, + "역명": "좌천", + "시간": "14:17:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2190, + "역명": "좌천", + "시간": "15:54:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1225, + "역명": "좌천", + "시간": "17:14:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 39, + "열번": 2250, + "역명": "좌천", + "시간": "18:50:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 40, + "열번": 8908, + "역명": "좌천", + "시간": "17:30:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 40, + "열번": 1267, + "역명": "좌천", + "시간": "18:47:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 41, + "열번": 1053, + "역명": "좌천", + "시간": "08:35:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2084, + "역명": "좌천", + "시간": "10:13:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1117, + "역명": "좌천", + "시간": "11:34:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2140, + "역명": "좌천", + "시간": "13:11:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1171, + "역명": "좌천", + "시간": "14:30:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2194, + "역명": "좌천", + "시간": "16:07:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1229, + "역명": "좌천", + "시간": "17:24:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2254, + "역명": "좌천", + "시간": "19:00:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1305, + "역명": "좌천", + "시간": "20:18:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2316, + "역명": "좌천", + "시간": "21:54:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1345, + "역명": "좌천", + "시간": "23:15:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 42, + "열번": 8910, + "역명": "좌천", + "시간": "17:42:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 42, + "열번": 1273, + "역명": "좌천", + "시간": "18:59:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 43, + "열번": 1057, + "역명": "좌천", + "시간": "08:43:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2086, + "역명": "좌천", + "시간": "10:19:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1119, + "역명": "좌천", + "시간": "11:41:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2142, + "역명": "좌천", + "시간": "13:18:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1173, + "역명": "좌천", + "시간": "14:36:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2196, + "역명": "좌천", + "시간": "16:13:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1233, + "역명": "좌천", + "시간": "17:34:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2258, + "역명": "좌천", + "시간": "19:10:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1307, + "역명": "좌천", + "시간": "20:26:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 43, + "열번": 2318, + "역명": "좌천", + "시간": "22:02:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 44, + "열번": 8912, + "역명": "좌천", + "시간": "17:54:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 44, + "열번": 1279, + "역명": "좌천", + "시간": "19:11:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 45, + "열번": 1069, + "역명": "좌천", + "시간": "09:07:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2094, + "역명": "좌천", + "시간": "10:43:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1125, + "역명": "좌천", + "시간": "12:00:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2148, + "역명": "좌천", + "시간": "13:37:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1179, + "역명": "좌천", + "시간": "14:56:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2202, + "역명": "좌천", + "시간": "16:32:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1239, + "역명": "좌천", + "시간": "17:49:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2264, + "역명": "좌천", + "시간": "19:25:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1311, + "역명": "좌천", + "시간": "20:42:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2322, + "역명": "좌천", + "시간": "22:22:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 45, + "열번": 1349, + "역명": "좌천", + "시간": "23:39:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 46, + "열번": 8914, + "역명": "좌천", + "시간": "18:06:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 46, + "열번": 1285, + "역명": "좌천", + "시간": "19:23:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 47, + "열번": 1211, + "역명": "좌천", + "시간": "16:37:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 47, + "열번": 2234, + "역명": "좌천", + "시간": "18:14:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 47, + "열번": 1289, + "역명": "좌천", + "시간": "19:31:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 47, + "열번": 2302, + "역명": "좌천", + "시간": "21:11:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 48, + "열번": 8916, + "역명": "좌천", + "시간": "18:18:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 48, + "열번": 1291, + "역명": "좌천", + "시간": "19:35:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 49, + "열번": 1223, + "역명": "좌천", + "시간": "17:09:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 49, + "열번": 2248, + "역명": "좌천", + "시간": "18:46:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 49, + "열번": 1301, + "역명": "좌천", + "시간": "20:02:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 49, + "열번": 2312, + "역명": "좌천", + "시간": "21:41:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 50, + "열번": 2244, + "역명": "좌천", + "시간": "18:38:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 50, + "열번": 1299, + "역명": "좌천", + "시간": "19:55:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 50, + "열번": 2310, + "역명": "좌천", + "시간": "21:35:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 50, + "열번": 1341, + "역명": "좌천", + "시간": "22:53:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 51, + "열번": 1231, + "역명": "좌천", + "시간": "17:29:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 51, + "열번": 2256, + "역명": "좌천", + "시간": "19:05:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 52, + "열번": 6906, + "역명": "좌천", + "시간": "10:04:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 52, + "열번": 5905, + "역명": "좌천", + "시간": "11:24:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 53, + "열번": 1243, + "역명": "좌천", + "시간": "17:59:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 53, + "열번": 2268, + "역명": "좌천", + "시간": "19:35:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 54, + "열번": 6910, + "역명": "좌천", + "시간": "13:47:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 54, + "열번": 5907, + "역명": "좌천", + "시간": "15:05:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 55, + "열번": 1251, + "역명": "좌천", + "시간": "18:15:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 55, + "열번": 2276, + "역명": "좌천", + "시간": "19:55:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 55, + "열번": 1319, + "역명": "좌천", + "시간": "21:14:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 55, + "열번": 2328, + "역명": "좌천", + "시간": "22:52:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 57, + "열번": 1263, + "역명": "좌천", + "시간": "18:39:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 57, + "열번": 2284, + "역명": "좌천", + "시간": "20:17:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 57, + "열번": 1325, + "역명": "좌천", + "시간": "21:38:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 57, + "열번": 2332, + "역명": "좌천", + "시간": "23:16:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 59, + "열번": 5901, + "역명": "좌천", + "시간": "10:32:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 59, + "열번": 6902, + "역명": "좌천", + "시간": "12:09:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 61, + "열번": 5903, + "역명": "좌천", + "시간": "14:00:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 61, + "열번": 5904, + "역명": "좌천", + "시간": "15:37:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "부산진", + "시간": "05:46:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "부산진", + "시간": "07:08:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2050, + "역명": "부산진", + "시간": "08:41:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "부산진", + "시간": "05:29:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "부산진", + "시간": "06:59:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "부산진", + "시간": "08:32:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1085, + "역명": "부산진", + "시간": "09:52:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2108, + "역명": "부산진", + "시간": "11:26:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1139, + "역명": "부산진", + "시간": "12:48:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2162, + "역명": "부산진", + "시간": "14:21:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1193, + "역명": "부산진", + "시간": "15:43:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2216, + "역명": "부산진", + "시간": "17:18:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1261, + "역명": "부산진", + "시간": "18:37:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2282, + "역명": "부산진", + "시간": "20:09:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1323, + "역명": "부산진", + "시간": "21:32:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "부산진", + "시간": "05:59:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "부산진", + "시간": "07:26:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2058, + "역명": "부산진", + "시간": "08:59:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1095, + "역명": "부산진", + "시간": "10:25:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2118, + "역명": "부산진", + "시간": "11:58:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1149, + "역명": "부산진", + "시간": "13:20:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2172, + "역명": "부산진", + "시간": "14:54:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1203, + "역명": "부산진", + "시간": "16:15:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2226, + "역명": "부산진", + "시간": "17:48:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1277, + "역명": "부산진", + "시간": "19:09:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2294, + "역명": "부산진", + "시간": "20:45:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "부산진", + "시간": "06:12:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1025, + "역명": "부산진", + "시간": "07:37:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2062, + "역명": "부산진", + "시간": "09:09:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1097, + "역명": "부산진", + "시간": "10:31:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2120, + "역명": "부산진", + "시간": "12:05:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1151, + "역명": "부산진", + "시간": "13:27:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2174, + "역명": "부산진", + "시간": "15:00:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1205, + "역명": "부산진", + "시간": "16:21:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2228, + "역명": "부산진", + "시간": "17:56:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1281, + "역명": "부산진", + "시간": "19:17:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2296, + "역명": "부산진", + "시간": "20:51:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1333, + "역명": "부산진", + "시간": "22:15:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2338, + "역명": "부산진", + "시간": "23:52:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2008, + "역명": "부산진", + "시간": "06:24:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1029, + "역명": "부산진", + "시간": "07:47:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2066, + "역명": "부산진", + "시간": "09:19:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2010, + "역명": "부산진", + "시간": "06:36:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1033, + "역명": "부산진", + "시간": "07:57:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2070, + "역명": "부산진", + "시간": "09:29:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1103, + "역명": "부산진", + "시간": "10:51:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2126, + "역명": "부산진", + "시간": "12:24:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1157, + "역명": "부산진", + "시간": "13:46:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2180, + "역명": "부산진", + "시간": "15:20:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1213, + "역명": "부산진", + "시간": "16:45:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2236, + "역명": "부산진", + "시간": "18:20:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1293, + "역명": "부산진", + "시간": "19:42:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2304, + "역명": "부산진", + "시간": "21:15:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1337, + "역명": "부산진", + "시간": "22:35:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1003, + "역명": "부산진", + "시간": "05:54:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2020, + "역명": "부산진", + "시간": "07:28:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1059, + "역명": "부산진", + "시간": "08:49:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2088, + "역명": "부산진", + "시간": "10:23:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1121, + "역명": "부산진", + "시간": "11:49:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2144, + "역명": "부산진", + "시간": "13:23:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1175, + "역명": "부산진", + "시간": "14:45:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2198, + "역명": "부산진", + "시간": "16:18:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1235, + "역명": "부산진", + "시간": "17:41:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2260, + "역명": "부산진", + "시간": "19:13:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1309, + "역명": "부산진", + "시간": "20:36:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2320, + "역명": "부산진", + "시간": "22:10:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1347, + "역명": "부산진", + "시간": "23:29:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2012, + "역명": "부산진", + "시간": "06:48:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1039, + "역명": "부산진", + "시간": "08:09:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2074, + "역명": "부산진", + "시간": "09:41:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1107, + "역명": "부산진", + "시간": "11:04:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2130, + "역명": "부산진", + "시간": "12:37:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1161, + "역명": "부산진", + "시간": "13:59:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2184, + "역명": "부산진", + "시간": "15:33:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1217, + "역명": "부산진", + "시간": "16:56:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2240, + "역명": "부산진", + "시간": "18:28:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1297, + "역명": "부산진", + "시간": "19:52:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 8, + "열번": 2308, + "역명": "부산진", + "시간": "21:27:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 9, + "열번": 2022, + "역명": "부산진", + "시간": "07:34:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1063, + "역명": "부산진", + "시간": "08:57:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 9, + "열번": 2090, + "역명": "부산진", + "시간": "10:29:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2014, + "역명": "부산진", + "시간": "07:00:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1045, + "역명": "부산진", + "시간": "08:21:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 11, + "열번": 1005, + "역명": "부산진", + "시간": "06:05:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2024, + "역명": "부산진", + "시간": "07:40:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1065, + "역명": "부산진", + "시간": "09:01:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2092, + "역명": "부산진", + "시간": "10:35:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1123, + "역명": "부산진", + "시간": "11:56:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2146, + "역명": "부산진", + "시간": "13:29:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1177, + "역명": "부산진", + "시간": "14:51:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2200, + "역명": "부산진", + "시간": "16:24:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1237, + "역명": "부산진", + "시간": "17:46:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 11, + "열번": 2262, + "역명": "부산진", + "시간": "19:18:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2016, + "역명": "부산진", + "시간": "07:11:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1051, + "역명": "부산진", + "시간": "08:33:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2082, + "역명": "부산진", + "시간": "10:05:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1115, + "역명": "부산진", + "시간": "11:30:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2138, + "역명": "부산진", + "시간": "13:03:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1169, + "역명": "부산진", + "시간": "14:25:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "부산진", + "시간": "15:59:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1227, + "역명": "부산진", + "시간": "17:21:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2252, + "역명": "부산진", + "시간": "18:53:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1303, + "역명": "부산진", + "시간": "20:12:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2314, + "역명": "부산진", + "시간": "21:45:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1343, + "역명": "부산진", + "시간": "23:06:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1007, + "역명": "부산진", + "시간": "06:16:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2028, + "역명": "부산진", + "시간": "07:51:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1071, + "역명": "부산진", + "시간": "09:13:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2096, + "역명": "부산진", + "시간": "10:47:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1127, + "역명": "부산진", + "시간": "12:09:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2150, + "역명": "부산진", + "시간": "13:42:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1181, + "역명": "부산진", + "시간": "15:04:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2204, + "역명": "부산진", + "시간": "16:36:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1241, + "역명": "부산진", + "시간": "17:56:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2266, + "역명": "부산진", + "시간": "19:28:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1313, + "역명": "부산진", + "시간": "20:52:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2324, + "역명": "부산진", + "시간": "22:30:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 13, + "열번": 1351, + "역명": "부산진", + "시간": "23:53:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 14, + "열번": 1001, + "역명": "부산진", + "시간": "05:46:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2018, + "역명": "부산진", + "시간": "07:20:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1055, + "역명": "부산진", + "시간": "08:41:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1009, + "역명": "부산진", + "시간": "06:27:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2032, + "역명": "부산진", + "시간": "08:00:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1075, + "역명": "부산진", + "시간": "09:22:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2100, + "역명": "부산진", + "시간": "11:00:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1131, + "역명": "부산진", + "시간": "12:22:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2154, + "역명": "부산진", + "시간": "13:55:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1185, + "역명": "부산진", + "시간": "15:17:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2208, + "역명": "부산진", + "시간": "16:53:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1249, + "역명": "부산진", + "시간": "18:13:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2274, + "역명": "부산진", + "시간": "19:48:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2026, + "역명": "부산진", + "시간": "07:46:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1067, + "역명": "부산진", + "시간": "09:05:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2036, + "역명": "부산진", + "시간": "08:09:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2030, + "역명": "부산진", + "시간": "07:56:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1073, + "역명": "부산진", + "시간": "09:17:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2098, + "역명": "부산진", + "시간": "10:53:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1129, + "역명": "부산진", + "시간": "12:15:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2152, + "역명": "부산진", + "시간": "13:49:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1183, + "역명": "부산진", + "시간": "15:11:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2206, + "역명": "부산진", + "시간": "16:48:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1247, + "역명": "부산진", + "시간": "18:09:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2272, + "역명": "부산진", + "시간": "19:43:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1317, + "역명": "부산진", + "시간": "21:08:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2326, + "역명": "부산진", + "시간": "22:40:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 18, + "열번": 7931, + "역명": "부산진", + "시간": "00:09:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 19, + "열번": 1011, + "역명": "부산진", + "시간": "06:38:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2038, + "역명": "부산진", + "시간": "08:14:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1079, + "역명": "부산진", + "시간": "09:34:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2102, + "역명": "부산진", + "시간": "11:06:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1133, + "역명": "부산진", + "시간": "12:28:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2156, + "역명": "부산진", + "시간": "14:02:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1187, + "역명": "부산진", + "시간": "15:24:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2210, + "역명": "부산진", + "시간": "16:58:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1253, + "역명": "부산진", + "시간": "18:21:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2278, + "역명": "부산진", + "시간": "19:58:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2034, + "역명": "부산진", + "시간": "08:05:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 20, + "열번": 1077, + "역명": "부산진", + "시간": "09:28:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 21, + "열번": 1013, + "역명": "부산진", + "시간": "06:49:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2042, + "역명": "부산진", + "시간": "08:23:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1083, + "역명": "부산진", + "시간": "09:46:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2106, + "역명": "부산진", + "시간": "11:19:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1137, + "역명": "부산진", + "시간": "12:41:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2160, + "역명": "부산진", + "시간": "14:15:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1191, + "역명": "부산진", + "시간": "15:37:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2214, + "역명": "부산진", + "시간": "17:08:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1257, + "역명": "부산진", + "시간": "18:29:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2280, + "역명": "부산진", + "시간": "20:03:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1321, + "역명": "부산진", + "시간": "21:24:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2330, + "역명": "부산진", + "시간": "23:02:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2040, + "역명": "부산진", + "시간": "08:18:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1081, + "역명": "부산진", + "시간": "09:40:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2104, + "역명": "부산진", + "시간": "11:13:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1135, + "역명": "부산진", + "시간": "12:35:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2158, + "역명": "부산진", + "시간": "14:08:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1189, + "역명": "부산진", + "시간": "15:30:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2212, + "역명": "부산진", + "시간": "17:03:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1255, + "역명": "부산진", + "시간": "18:25:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2044, + "역명": "부산진", + "시간": "08:27:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "부산진", + "시간": "08:36:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1087, + "역명": "부산진", + "시간": "09:59:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2110, + "역명": "부산진", + "시간": "11:32:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1141, + "역명": "부산진", + "시간": "12:54:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2164, + "역명": "부산진", + "시간": "14:28:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1195, + "역명": "부산진", + "시간": "15:50:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2218, + "역명": "부산진", + "시간": "17:23:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1265, + "역명": "부산진", + "시간": "18:45:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 24, + "열번": 2286, + "역명": "부산진", + "시간": "20:21:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "부산진", + "시간": "07:17:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2054, + "역명": "부산진", + "시간": "08:50:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1091, + "역명": "부산진", + "시간": "10:12:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2114, + "역명": "부산진", + "시간": "11:45:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1145, + "역명": "부산진", + "시간": "13:07:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2168, + "역명": "부산진", + "시간": "14:41:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1199, + "역명": "부산진", + "시간": "16:03:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2222, + "역명": "부산진", + "시간": "17:36:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1271, + "역명": "부산진", + "시간": "18:57:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2290, + "역명": "부산진", + "시간": "20:33:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1329, + "역명": "부산진", + "시간": "21:56:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2336, + "역명": "부산진", + "시간": "23:36:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2052, + "역명": "부산진", + "시간": "08:45:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1089, + "역명": "부산진", + "시간": "10:05:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2112, + "역명": "부산진", + "시간": "11:39:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1143, + "역명": "부산진", + "시간": "13:01:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2166, + "역명": "부산진", + "시간": "14:34:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1197, + "역명": "부산진", + "시간": "15:56:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2220, + "역명": "부산진", + "시간": "17:32:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1269, + "역명": "부산진", + "시간": "18:53:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2288, + "역명": "부산진", + "시간": "20:27:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1327, + "역명": "부산진", + "시간": "21:48:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 26, + "열번": 2334, + "역명": "부산진", + "시간": "23:26:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1023, + "역명": "부산진", + "시간": "07:32:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 27, + "열번": 2060, + "역명": "부산진", + "시간": "09:04:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2056, + "역명": "부산진", + "시간": "08:54:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1093, + "역명": "부산진", + "시간": "10:18:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2116, + "역명": "부산진", + "시간": "11:52:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1147, + "역명": "부산진", + "시간": "13:14:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2170, + "역명": "부산진", + "시간": "14:47:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1201, + "역명": "부산진", + "시간": "16:09:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2224, + "역명": "부산진", + "시간": "17:44:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1275, + "역명": "부산진", + "시간": "19:05:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2292, + "역명": "부산진", + "시간": "20:39:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1331, + "역명": "부산진", + "시간": "22:05:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1027, + "역명": "부산진", + "시간": "07:42:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2064, + "역명": "부산진", + "시간": "09:14:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1099, + "역명": "부산진", + "시간": "10:38:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2122, + "역명": "부산진", + "시간": "12:11:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1153, + "역명": "부산진", + "시간": "13:33:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2176, + "역명": "부산진", + "시간": "15:07:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1207, + "역명": "부산진", + "시간": "16:27:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2230, + "역명": "부산진", + "시간": "18:00:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1283, + "역명": "부산진", + "시간": "19:21:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 29, + "열번": 2298, + "역명": "부산진", + "시간": "20:57:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1037, + "역명": "부산진", + "시간": "08:05:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1031, + "역명": "부산진", + "시간": "07:52:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2068, + "역명": "부산진", + "시간": "09:24:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1101, + "역명": "부산진", + "시간": "10:44:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2124, + "역명": "부산진", + "시간": "12:18:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1155, + "역명": "부산진", + "시간": "13:40:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2178, + "역명": "부산진", + "시간": "15:13:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1209, + "역명": "부산진", + "시간": "16:33:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2232, + "역명": "부산진", + "시간": "18:08:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1287, + "역명": "부산진", + "시간": "19:29:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2300, + "역명": "부산진", + "시간": "21:03:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1335, + "역명": "부산진", + "시간": "22:25:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 32, + "열번": 1049, + "역명": "부산진", + "시간": "08:29:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1035, + "역명": "부산진", + "시간": "08:01:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2072, + "역명": "부산진", + "시간": "09:35:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1105, + "역명": "부산진", + "시간": "10:57:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2128, + "역명": "부산진", + "시간": "12:31:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1159, + "역명": "부산진", + "시간": "13:53:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2182, + "역명": "부산진", + "시간": "15:26:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1215, + "역명": "부산진", + "시간": "16:51:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2238, + "역명": "부산진", + "시간": "18:24:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1295, + "역명": "부산진", + "시간": "19:47:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2306, + "역명": "부산진", + "시간": "21:21:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 33, + "열번": 1339, + "역명": "부산진", + "시간": "22:45:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 34, + "열번": 1061, + "역명": "부산진", + "시간": "08:53:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1041, + "역명": "부산진", + "시간": "08:13:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2076, + "역명": "부산진", + "시간": "09:47:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1109, + "역명": "부산진", + "시간": "11:10:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2132, + "역명": "부산진", + "시간": "12:44:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1163, + "역명": "부산진", + "시간": "14:06:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2186, + "역명": "부산진", + "시간": "15:39:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1219, + "역명": "부산진", + "시간": "17:01:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 35, + "열번": 2242, + "역명": "부산진", + "시간": "18:32:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 36, + "열번": 8904, + "역명": "부산진", + "시간": "16:42:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1245, + "역명": "부산진", + "시간": "18:05:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 36, + "열번": 2270, + "역명": "부산진", + "시간": "19:38:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1315, + "역명": "부산진", + "시간": "21:00:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1043, + "역명": "부산진", + "시간": "08:17:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2078, + "역명": "부산진", + "시간": "09:53:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1111, + "역명": "부산진", + "시간": "11:17:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2134, + "역명": "부산진", + "시간": "12:50:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1165, + "역명": "부산진", + "시간": "14:12:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2188, + "역명": "부산진", + "시간": "15:46:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1221, + "역명": "부산진", + "시간": "17:06:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 37, + "열번": 2246, + "역명": "부산진", + "시간": "18:40:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 38, + "열번": 8906, + "역명": "부산진", + "시간": "17:13:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 38, + "열번": 1259, + "역명": "부산진", + "시간": "18:33:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 39, + "열번": 1047, + "역명": "부산진", + "시간": "08:25:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2080, + "역명": "부산진", + "시간": "09:59:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1113, + "역명": "부산진", + "시간": "11:23:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2136, + "역명": "부산진", + "시간": "12:57:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1167, + "역명": "부산진", + "시간": "14:19:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2190, + "역명": "부산진", + "시간": "15:52:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1225, + "역명": "부산진", + "시간": "17:16:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 39, + "열번": 2250, + "역명": "부산진", + "시간": "18:48:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 40, + "열번": 8908, + "역명": "부산진", + "시간": "17:28:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 40, + "열번": 1267, + "역명": "부산진", + "시간": "18:49:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 41, + "열번": 1053, + "역명": "부산진", + "시간": "08:37:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2084, + "역명": "부산진", + "시간": "10:11:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1117, + "역명": "부산진", + "시간": "11:36:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2140, + "역명": "부산진", + "시간": "13:10:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1171, + "역명": "부산진", + "시간": "14:32:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2194, + "역명": "부산진", + "시간": "16:05:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1229, + "역명": "부산진", + "시간": "17:26:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2254, + "역명": "부산진", + "시간": "18:58:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1305, + "역명": "부산진", + "시간": "20:20:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2316, + "역명": "부산진", + "시간": "21:52:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1345, + "역명": "부산진", + "시간": "23:17:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 42, + "열번": 8910, + "역명": "부산진", + "시간": "17:40:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 42, + "열번": 1273, + "역명": "부산진", + "시간": "19:01:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 43, + "열번": 1057, + "역명": "부산진", + "시간": "08:45:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2086, + "역명": "부산진", + "시간": "10:17:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1119, + "역명": "부산진", + "시간": "11:43:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2142, + "역명": "부산진", + "시간": "13:16:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1173, + "역명": "부산진", + "시간": "14:38:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2196, + "역명": "부산진", + "시간": "16:12:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1233, + "역명": "부산진", + "시간": "17:36:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2258, + "역명": "부산진", + "시간": "19:08:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1307, + "역명": "부산진", + "시간": "20:28:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 43, + "열번": 2318, + "역명": "부산진", + "시간": "22:00:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 44, + "열번": 8912, + "역명": "부산진", + "시간": "17:52:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 44, + "열번": 1279, + "역명": "부산진", + "시간": "19:13:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 45, + "열번": 1069, + "역명": "부산진", + "시간": "09:09:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2094, + "역명": "부산진", + "시간": "10:41:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1125, + "역명": "부산진", + "시간": "12:02:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2148, + "역명": "부산진", + "시간": "13:36:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1179, + "역명": "부산진", + "시간": "14:58:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2202, + "역명": "부산진", + "시간": "16:30:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1239, + "역명": "부산진", + "시간": "17:51:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2264, + "역명": "부산진", + "시간": "19:23:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1311, + "역명": "부산진", + "시간": "20:44:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2322, + "역명": "부산진", + "시간": "22:20:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 45, + "열번": 1349, + "역명": "부산진", + "시간": "23:41:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 46, + "열번": 8914, + "역명": "부산진", + "시간": "18:04:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 46, + "열번": 1285, + "역명": "부산진", + "시간": "19:25:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 47, + "열번": 1211, + "역명": "부산진", + "시간": "16:39:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 47, + "열번": 2234, + "역명": "부산진", + "시간": "18:12:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 47, + "열번": 1289, + "역명": "부산진", + "시간": "19:33:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 47, + "열번": 2302, + "역명": "부산진", + "시간": "21:09:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 48, + "열번": 8916, + "역명": "부산진", + "시간": "18:16:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 48, + "열번": 1291, + "역명": "부산진", + "시간": "19:37:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 49, + "열번": 1223, + "역명": "부산진", + "시간": "17:11:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 49, + "열번": 2248, + "역명": "부산진", + "시간": "18:44:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 49, + "열번": 1301, + "역명": "부산진", + "시간": "20:04:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 49, + "열번": 2312, + "역명": "부산진", + "시간": "21:39:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 50, + "열번": 2244, + "역명": "부산진", + "시간": "18:36:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 50, + "열번": 1299, + "역명": "부산진", + "시간": "19:57:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 50, + "열번": 2310, + "역명": "부산진", + "시간": "21:33:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 50, + "열번": 1341, + "역명": "부산진", + "시간": "22:55:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 51, + "열번": 1231, + "역명": "부산진", + "시간": "17:31:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 51, + "열번": 2256, + "역명": "부산진", + "시간": "19:03:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 52, + "열번": 6906, + "역명": "부산진", + "시간": "10:02:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 52, + "열번": 5905, + "역명": "부산진", + "시간": "11:26:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 53, + "열번": 1243, + "역명": "부산진", + "시간": "18:01:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 53, + "열번": 2268, + "역명": "부산진", + "시간": "19:33:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 54, + "열번": 6910, + "역명": "부산진", + "시간": "13:45:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 54, + "열번": 5907, + "역명": "부산진", + "시간": "15:07:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 55, + "열번": 1251, + "역명": "부산진", + "시간": "18:17:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 55, + "열번": 2276, + "역명": "부산진", + "시간": "19:53:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 55, + "열번": 1319, + "역명": "부산진", + "시간": "21:16:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 55, + "열번": 2328, + "역명": "부산진", + "시간": "22:50:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 57, + "열번": 1263, + "역명": "부산진", + "시간": "18:41:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 57, + "열번": 2284, + "역명": "부산진", + "시간": "20:15:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 57, + "열번": 1325, + "역명": "부산진", + "시간": "21:40:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 57, + "열번": 2332, + "역명": "부산진", + "시간": "23:14:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 59, + "열번": 5901, + "역명": "부산진", + "시간": "10:34:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 59, + "열번": 6902, + "역명": "부산진", + "시간": "12:08:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 61, + "열번": 5903, + "역명": "부산진", + "시간": "14:02:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 61, + "열번": 5904, + "역명": "부산진", + "시간": "15:36:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "초량", + "시간": "05:44:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "초량", + "시간": "07:09:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2050, + "역명": "초량", + "시간": "08:39:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "초량", + "시간": "05:28:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "초량", + "시간": "07:00:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "초량", + "시간": "08:30:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1085, + "역명": "초량", + "시간": "09:54:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2108, + "역명": "초량", + "시간": "11:24:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1139, + "역명": "초량", + "시간": "12:49:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2162, + "역명": "초량", + "시간": "14:20:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1193, + "역명": "초량", + "시간": "15:45:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2216, + "역명": "초량", + "시간": "17:17:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1261, + "역명": "초량", + "시간": "18:39:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2282, + "역명": "초량", + "시간": "20:08:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1323, + "역명": "초량", + "시간": "21:34:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "초량", + "시간": "05:58:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "초량", + "시간": "07:27:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2058, + "역명": "초량", + "시간": "08:58:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1095, + "역명": "초량", + "시간": "10:26:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2118, + "역명": "초량", + "시간": "11:57:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1149, + "역명": "초량", + "시간": "13:22:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2172, + "역명": "초량", + "시간": "14:52:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1203, + "역명": "초량", + "시간": "16:17:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2226, + "역명": "초량", + "시간": "17:47:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1277, + "역명": "초량", + "시간": "19:11:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2294, + "역명": "초량", + "시간": "20:44:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "초량", + "시간": "06:10:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1025, + "역명": "초량", + "시간": "07:39:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2062, + "역명": "초량", + "시간": "09:08:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1097, + "역명": "초량", + "시간": "10:33:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2120, + "역명": "초량", + "시간": "12:03:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1151, + "역명": "초량", + "시간": "13:28:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2174, + "역명": "초량", + "시간": "14:59:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1205, + "역명": "초량", + "시간": "16:23:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2228, + "역명": "초량", + "시간": "17:55:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1281, + "역명": "초량", + "시간": "19:19:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2296, + "역명": "초량", + "시간": "20:50:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1333, + "역명": "초량", + "시간": "22:17:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2338, + "역명": "초량", + "시간": "23:50:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2008, + "역명": "초량", + "시간": "06:22:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1029, + "역명": "초량", + "시간": "07:49:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2066, + "역명": "초량", + "시간": "09:18:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2010, + "역명": "초량", + "시간": "06:34:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1033, + "역명": "초량", + "시간": "07:59:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2070, + "역명": "초량", + "시간": "09:28:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1103, + "역명": "초량", + "시간": "10:52:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2126, + "역명": "초량", + "시간": "12:23:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1157, + "역명": "초량", + "시간": "13:48:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2180, + "역명": "초량", + "시간": "15:18:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1213, + "역명": "초량", + "시간": "16:47:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2236, + "역명": "초량", + "시간": "18:19:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1293, + "역명": "초량", + "시간": "19:44:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2304, + "역명": "초량", + "시간": "21:14:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1337, + "역명": "초량", + "시간": "22:37:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1003, + "역명": "초량", + "시간": "05:55:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2020, + "역명": "초량", + "시간": "07:27:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1059, + "역명": "초량", + "시간": "08:51:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2088, + "역명": "초량", + "시간": "10:22:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1121, + "역명": "초량", + "시간": "11:51:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2144, + "역명": "초량", + "시간": "13:21:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1175, + "역명": "초량", + "시간": "14:46:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2198, + "역명": "초량", + "시간": "16:17:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1235, + "역명": "초량", + "시간": "17:43:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2260, + "역명": "초량", + "시간": "19:12:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1309, + "역명": "초량", + "시간": "20:38:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2320, + "역명": "초량", + "시간": "22:09:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1347, + "역명": "초량", + "시간": "23:31:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2012, + "역명": "초량", + "시간": "06:46:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1039, + "역명": "초량", + "시간": "08:11:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2074, + "역명": "초량", + "시간": "09:40:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1107, + "역명": "초량", + "시간": "11:05:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2130, + "역명": "초량", + "시간": "12:36:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1161, + "역명": "초량", + "시간": "14:01:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2184, + "역명": "초량", + "시간": "15:31:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1217, + "역명": "초량", + "시간": "16:58:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2240, + "역명": "초량", + "시간": "18:27:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1297, + "역명": "초량", + "시간": "19:54:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 8, + "열번": 2308, + "역명": "초량", + "시간": "21:26:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 9, + "열번": 2022, + "역명": "초량", + "시간": "07:33:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1063, + "역명": "초량", + "시간": "08:59:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 9, + "열번": 2090, + "역명": "초량", + "시간": "10:28:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2014, + "역명": "초량", + "시간": "06:58:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1045, + "역명": "초량", + "시간": "08:23:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 11, + "열번": 1005, + "역명": "초량", + "시간": "06:06:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2024, + "역명": "초량", + "시간": "07:39:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1065, + "역명": "초량", + "시간": "09:03:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2092, + "역명": "초량", + "시간": "10:34:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1123, + "역명": "초량", + "시간": "11:57:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2146, + "역명": "초량", + "시간": "13:28:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1177, + "역명": "초량", + "시간": "14:53:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2200, + "역명": "초량", + "시간": "16:23:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1237, + "역명": "초량", + "시간": "17:48:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 11, + "열번": 2262, + "역명": "초량", + "시간": "19:17:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2016, + "역명": "초량", + "시간": "07:09:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1051, + "역명": "초량", + "시간": "08:35:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2082, + "역명": "초량", + "시간": "10:04:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1115, + "역명": "초량", + "시간": "11:31:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2138, + "역명": "초량", + "시간": "13:02:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1169, + "역명": "초량", + "시간": "14:27:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "초량", + "시간": "15:57:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1227, + "역명": "초량", + "시간": "17:23:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2252, + "역명": "초량", + "시간": "18:52:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1303, + "역명": "초량", + "시간": "20:14:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2314, + "역명": "초량", + "시간": "21:44:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1343, + "역명": "초량", + "시간": "23:08:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1007, + "역명": "초량", + "시간": "06:17:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2028, + "역명": "초량", + "시간": "07:49:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1071, + "역명": "초량", + "시간": "09:15:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2096, + "역명": "초량", + "시간": "10:46:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1127, + "역명": "초량", + "시간": "12:10:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2150, + "역명": "초량", + "시간": "13:41:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1181, + "역명": "초량", + "시간": "15:06:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2204, + "역명": "초량", + "시간": "16:35:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1241, + "역명": "초량", + "시간": "17:58:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2266, + "역명": "초량", + "시간": "19:27:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1313, + "역명": "초량", + "시간": "20:54:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2324, + "역명": "초량", + "시간": "22:29:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 13, + "열번": 1351, + "역명": "초량", + "시간": "23:54:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 14, + "열번": 1001, + "역명": "초량", + "시간": "05:47:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2018, + "역명": "초량", + "시간": "07:18:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1055, + "역명": "초량", + "시간": "08:43:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1009, + "역명": "초량", + "시간": "06:28:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2032, + "역명": "초량", + "시간": "07:59:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1075, + "역명": "초량", + "시간": "09:24:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2100, + "역명": "초량", + "시간": "10:58:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1131, + "역명": "초량", + "시간": "12:23:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2154, + "역명": "초량", + "시간": "13:54:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1185, + "역명": "초량", + "시간": "15:19:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2208, + "역명": "초량", + "시간": "16:52:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1249, + "역명": "초량", + "시간": "18:15:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2274, + "역명": "초량", + "시간": "19:47:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2026, + "역명": "초량", + "시간": "07:44:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1067, + "역명": "초량", + "시간": "09:07:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2036, + "역명": "초량", + "시간": "08:08:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2030, + "역명": "초량", + "시간": "07:54:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1073, + "역명": "초량", + "시간": "09:19:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2098, + "역명": "초량", + "시간": "10:52:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1129, + "역명": "초량", + "시간": "12:17:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2152, + "역명": "초량", + "시간": "13:47:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1183, + "역명": "초량", + "시간": "15:12:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2206, + "역명": "초량", + "시간": "16:47:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1247, + "역명": "초량", + "시간": "18:11:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2272, + "역명": "초량", + "시간": "19:42:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1317, + "역명": "초량", + "시간": "21:10:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2326, + "역명": "초량", + "시간": "22:39:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 18, + "열번": 7931, + "역명": "초량", + "시간": "00:10:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 19, + "열번": 1011, + "역명": "초량", + "시간": "06:39:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2038, + "역명": "초량", + "시간": "08:12:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1079, + "역명": "초량", + "시간": "09:35:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2102, + "역명": "초량", + "시간": "11:05:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1133, + "역명": "초량", + "시간": "12:30:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2156, + "역명": "초량", + "시간": "14:00:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1187, + "역명": "초량", + "시간": "15:25:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2210, + "역명": "초량", + "시간": "16:57:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1253, + "역명": "초량", + "시간": "18:23:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2278, + "역명": "초량", + "시간": "19:57:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2034, + "역명": "초량", + "시간": "08:03:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 20, + "열번": 1077, + "역명": "초량", + "시간": "09:29:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 21, + "열번": 1013, + "역명": "초량", + "시간": "06:50:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2042, + "역명": "초량", + "시간": "08:21:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1083, + "역명": "초량", + "시간": "09:47:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2106, + "역명": "초량", + "시간": "11:18:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1137, + "역명": "초량", + "시간": "12:43:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2160, + "역명": "초량", + "시간": "14:13:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1191, + "역명": "초량", + "시간": "15:38:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2214, + "역명": "초량", + "시간": "17:07:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1257, + "역명": "초량", + "시간": "18:31:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2280, + "역명": "초량", + "시간": "20:02:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1321, + "역명": "초량", + "시간": "21:26:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2330, + "역명": "초량", + "시간": "23:01:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2040, + "역명": "초량", + "시간": "08:17:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1081, + "역명": "초량", + "시간": "09:41:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2104, + "역명": "초량", + "시간": "11:11:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1135, + "역명": "초량", + "시간": "12:36:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2158, + "역명": "초량", + "시간": "14:07:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1189, + "역명": "초량", + "시간": "15:32:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2212, + "역명": "초량", + "시간": "17:02:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1255, + "역명": "초량", + "시간": "18:27:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2044, + "역명": "초량", + "시간": "08:26:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "초량", + "시간": "08:35:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1087, + "역명": "초량", + "시간": "10:00:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2110, + "역명": "초량", + "시간": "11:31:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1141, + "역명": "초량", + "시간": "12:56:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2164, + "역명": "초량", + "시간": "14:26:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1195, + "역명": "초량", + "시간": "15:51:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2218, + "역명": "초량", + "시간": "17:22:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1265, + "역명": "초량", + "시간": "18:47:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 24, + "열번": 2286, + "역명": "초량", + "시간": "20:20:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "초량", + "시간": "07:18:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2054, + "역명": "초량", + "시간": "08:48:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1091, + "역명": "초량", + "시간": "10:13:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2114, + "역명": "초량", + "시간": "11:44:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1145, + "역명": "초량", + "시간": "13:09:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2168, + "역명": "초량", + "시간": "14:39:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1199, + "역명": "초량", + "시간": "16:04:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2222, + "역명": "초량", + "시간": "17:35:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1271, + "역명": "초량", + "시간": "18:59:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2290, + "역명": "초량", + "시간": "20:32:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1329, + "역명": "초량", + "시간": "21:58:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2336, + "역명": "초량", + "시간": "23:35:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2052, + "역명": "초량", + "시간": "08:44:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1089, + "역명": "초량", + "시간": "10:07:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2112, + "역명": "초량", + "시간": "11:37:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1143, + "역명": "초량", + "시간": "13:02:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2166, + "역명": "초량", + "시간": "14:33:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1197, + "역명": "초량", + "시간": "15:58:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2220, + "역명": "초량", + "시간": "17:31:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1269, + "역명": "초량", + "시간": "18:55:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2288, + "역명": "초량", + "시간": "20:26:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1327, + "역명": "초량", + "시간": "21:50:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 26, + "열번": 2334, + "역명": "초량", + "시간": "23:25:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1023, + "역명": "초량", + "시간": "07:34:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 27, + "열번": 2060, + "역명": "초량", + "시간": "09:03:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2056, + "역명": "초량", + "시간": "08:53:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1093, + "역명": "초량", + "시간": "10:20:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2116, + "역명": "초량", + "시간": "11:50:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1147, + "역명": "초량", + "시간": "13:15:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2170, + "역명": "초량", + "시간": "14:46:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1201, + "역명": "초량", + "시간": "16:11:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2224, + "역명": "초량", + "시간": "17:43:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1275, + "역명": "초량", + "시간": "19:07:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2292, + "역명": "초량", + "시간": "20:38:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1331, + "역명": "초량", + "시간": "22:07:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1027, + "역명": "초량", + "시간": "07:44:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2064, + "역명": "초량", + "시간": "09:13:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1099, + "역명": "초량", + "시간": "10:39:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2122, + "역명": "초량", + "시간": "12:10:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1153, + "역명": "초량", + "시간": "13:35:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2176, + "역명": "초량", + "시간": "15:05:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1207, + "역명": "초량", + "시간": "16:29:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2230, + "역명": "초량", + "시간": "17:59:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1283, + "역명": "초량", + "시간": "19:23:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 29, + "열번": 2298, + "역명": "초량", + "시간": "20:56:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1037, + "역명": "초량", + "시간": "08:07:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1031, + "역명": "초량", + "시간": "07:54:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2068, + "역명": "초량", + "시간": "09:23:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1101, + "역명": "초량", + "시간": "10:46:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2124, + "역명": "초량", + "시간": "12:16:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1155, + "역명": "초량", + "시간": "13:41:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2178, + "역명": "초량", + "시간": "15:12:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1209, + "역명": "초량", + "시간": "16:35:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2232, + "역명": "초량", + "시간": "18:07:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1287, + "역명": "초량", + "시간": "19:31:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2300, + "역명": "초량", + "시간": "21:02:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1335, + "역명": "초량", + "시간": "22:27:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 32, + "열번": 1049, + "역명": "초량", + "시간": "08:31:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1035, + "역명": "초량", + "시간": "08:03:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2072, + "역명": "초량", + "시간": "09:34:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1105, + "역명": "초량", + "시간": "10:59:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2128, + "역명": "초량", + "시간": "12:29:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1159, + "역명": "초량", + "시간": "13:54:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2182, + "역명": "초량", + "시간": "15:25:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1215, + "역명": "초량", + "시간": "16:53:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2238, + "역명": "초량", + "시간": "18:23:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1295, + "역명": "초량", + "시간": "19:49:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2306, + "역명": "초량", + "시간": "21:20:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 33, + "열번": 1339, + "역명": "초량", + "시간": "22:47:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 34, + "열번": 1061, + "역명": "초량", + "시간": "08:55:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1041, + "역명": "초량", + "시간": "08:15:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2076, + "역명": "초량", + "시간": "09:46:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1109, + "역명": "초량", + "시간": "11:12:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2132, + "역명": "초량", + "시간": "12:42:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1163, + "역명": "초량", + "시간": "14:07:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2186, + "역명": "초량", + "시간": "15:38:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1219, + "역명": "초량", + "시간": "17:03:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 35, + "열번": 2242, + "역명": "초량", + "시간": "18:31:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 36, + "열번": 8904, + "역명": "초량", + "시간": "16:41:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1245, + "역명": "초량", + "시간": "18:07:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 36, + "열번": 2270, + "역명": "초량", + "시간": "19:37:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1315, + "역명": "초량", + "시간": "21:02:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1043, + "역명": "초량", + "시간": "08:19:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2078, + "역명": "초량", + "시간": "09:52:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1111, + "역명": "초량", + "시간": "11:18:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2134, + "역명": "초량", + "시간": "12:49:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1165, + "역명": "초량", + "시간": "14:14:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2188, + "역명": "초량", + "시간": "15:44:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1221, + "역명": "초량", + "시간": "17:08:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 37, + "열번": 2246, + "역명": "초량", + "시간": "18:39:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 38, + "열번": 8906, + "역명": "초량", + "시간": "17:12:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 38, + "열번": 1259, + "역명": "초량", + "시간": "18:35:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 39, + "열번": 1047, + "역명": "초량", + "시간": "08:27:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2080, + "역명": "초량", + "시간": "09:58:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1113, + "역명": "초량", + "시간": "11:25:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2136, + "역명": "초량", + "시간": "12:55:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1167, + "역명": "초량", + "시간": "14:20:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2190, + "역명": "초량", + "시간": "15:51:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1225, + "역명": "초량", + "시간": "17:18:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 39, + "열번": 2250, + "역명": "초량", + "시간": "18:47:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 40, + "열번": 8908, + "역명": "초량", + "시간": "17:27:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 40, + "열번": 1267, + "역명": "초량", + "시간": "18:51:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 41, + "열번": 1053, + "역명": "초량", + "시간": "08:39:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2084, + "역명": "초량", + "시간": "10:10:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1117, + "역명": "초량", + "시간": "11:38:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2140, + "역명": "초량", + "시간": "13:08:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1171, + "역명": "초량", + "시간": "14:33:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2194, + "역명": "초량", + "시간": "16:04:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1229, + "역명": "초량", + "시간": "17:28:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2254, + "역명": "초량", + "시간": "18:57:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1305, + "역명": "초량", + "시간": "20:22:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2316, + "역명": "초량", + "시간": "21:51:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1345, + "역명": "초량", + "시간": "23:19:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 42, + "열번": 8910, + "역명": "초량", + "시간": "17:39:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 42, + "열번": 1273, + "역명": "초량", + "시간": "19:03:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 43, + "열번": 1057, + "역명": "초량", + "시간": "08:47:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2086, + "역명": "초량", + "시간": "10:16:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1119, + "역명": "초량", + "시간": "11:44:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2142, + "역명": "초량", + "시간": "13:15:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1173, + "역명": "초량", + "시간": "14:40:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2196, + "역명": "초량", + "시간": "16:10:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1233, + "역명": "초량", + "시간": "17:38:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2258, + "역명": "초량", + "시간": "19:07:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1307, + "역명": "초량", + "시간": "20:30:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 43, + "열번": 2318, + "역명": "초량", + "시간": "21:59:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 44, + "열번": 8912, + "역명": "초량", + "시간": "17:51:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 44, + "열번": 1279, + "역명": "초량", + "시간": "19:15:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 45, + "열번": 1069, + "역명": "초량", + "시간": "09:11:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2094, + "역명": "초량", + "시간": "10:40:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1125, + "역명": "초량", + "시간": "12:04:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2148, + "역명": "초량", + "시간": "13:34:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1179, + "역명": "초량", + "시간": "14:59:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2202, + "역명": "초량", + "시간": "16:29:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1239, + "역명": "초량", + "시간": "17:53:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2264, + "역명": "초량", + "시간": "19:22:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1311, + "역명": "초량", + "시간": "20:46:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2322, + "역명": "초량", + "시간": "22:19:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 45, + "열번": 1349, + "역명": "초량", + "시간": "23:43:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 46, + "열번": 8914, + "역명": "초량", + "시간": "18:03:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 46, + "열번": 1285, + "역명": "초량", + "시간": "19:27:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 47, + "열번": 1211, + "역명": "초량", + "시간": "16:41:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 47, + "열번": 2234, + "역명": "초량", + "시간": "18:11:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 47, + "열번": 1289, + "역명": "초량", + "시간": "19:35:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 47, + "열번": 2302, + "역명": "초량", + "시간": "21:08:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 48, + "열번": 8916, + "역명": "초량", + "시간": "18:15:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 48, + "열번": 1291, + "역명": "초량", + "시간": "19:39:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 49, + "열번": 1223, + "역명": "초량", + "시간": "17:13:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 49, + "열번": 2248, + "역명": "초량", + "시간": "18:43:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 49, + "열번": 1301, + "역명": "초량", + "시간": "20:06:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 49, + "열번": 2312, + "역명": "초량", + "시간": "21:38:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 50, + "열번": 2244, + "역명": "초량", + "시간": "18:35:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 50, + "열번": 1299, + "역명": "초량", + "시간": "19:59:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 50, + "열번": 2310, + "역명": "초량", + "시간": "21:32:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 50, + "열번": 1341, + "역명": "초량", + "시간": "22:57:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 51, + "열번": 1231, + "역명": "초량", + "시간": "17:33:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 51, + "열번": 2256, + "역명": "초량", + "시간": "19:02:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 52, + "열번": 6906, + "역명": "초량", + "시간": "10:01:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 52, + "열번": 5905, + "역명": "초량", + "시간": "11:28:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 53, + "열번": 1243, + "역명": "초량", + "시간": "18:03:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 53, + "열번": 2268, + "역명": "초량", + "시간": "19:32:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 54, + "열번": 6910, + "역명": "초량", + "시간": "13:44:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 54, + "열번": 5907, + "역명": "초량", + "시간": "15:09:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 55, + "열번": 1251, + "역명": "초량", + "시간": "18:19:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 55, + "열번": 2276, + "역명": "초량", + "시간": "19:52:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 55, + "열번": 1319, + "역명": "초량", + "시간": "21:18:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 55, + "열번": 2328, + "역명": "초량", + "시간": "22:49:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 57, + "열번": 1263, + "역명": "초량", + "시간": "18:43:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 57, + "열번": 2284, + "역명": "초량", + "시간": "20:14:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 57, + "열번": 1325, + "역명": "초량", + "시간": "21:42:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 57, + "열번": 2332, + "역명": "초량", + "시간": "23:13:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 59, + "열번": 5901, + "역명": "초량", + "시간": "10:36:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 59, + "열번": 6902, + "역명": "초량", + "시간": "12:06:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 61, + "열번": 5903, + "역명": "초량", + "시간": "14:04:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 61, + "열번": 5904, + "역명": "초량", + "시간": "15:34:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "부산역", + "시간": "05:42:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "부산역", + "시간": "07:11:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2050, + "역명": "부산역", + "시간": "08:37:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "부산역", + "시간": "05:26:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "부산역", + "시간": "07:02:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "부산역", + "시간": "08:28:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1085, + "역명": "부산역", + "시간": "09:55:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2108, + "역명": "부산역", + "시간": "11:22:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1139, + "역명": "부산역", + "시간": "12:51:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2162, + "역명": "부산역", + "시간": "14:18:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1193, + "역명": "부산역", + "시간": "15:46:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2216, + "역명": "부산역", + "시간": "17:15:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1261, + "역명": "부산역", + "시간": "18:40:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2282, + "역명": "부산역", + "시간": "20:06:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1323, + "역명": "부산역", + "시간": "21:35:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "부산역", + "시간": "05:56:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "부산역", + "시간": "07:29:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2058, + "역명": "부산역", + "시간": "08:56:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1095, + "역명": "부산역", + "시간": "10:28:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2118, + "역명": "부산역", + "시간": "11:55:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1149, + "역명": "부산역", + "시간": "13:23:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2172, + "역명": "부산역", + "시간": "14:50:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1203, + "역명": "부산역", + "시간": "16:18:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2226, + "역명": "부산역", + "시간": "17:45:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1277, + "역명": "부산역", + "시간": "19:12:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2294, + "역명": "부산역", + "시간": "20:42:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "부산역", + "시간": "06:08:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1025, + "역명": "부산역", + "시간": "07:40:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2062, + "역명": "부산역", + "시간": "09:06:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1097, + "역명": "부산역", + "시간": "10:34:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2120, + "역명": "부산역", + "시간": "12:01:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1151, + "역명": "부산역", + "시간": "13:30:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2174, + "역명": "부산역", + "시간": "14:57:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1205, + "역명": "부산역", + "시간": "16:24:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2228, + "역명": "부산역", + "시간": "17:53:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1281, + "역명": "부산역", + "시간": "19:20:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2296, + "역명": "부산역", + "시간": "20:48:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1333, + "역명": "부산역", + "시간": "22:18:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2338, + "역명": "부산역", + "시간": "23:49:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2008, + "역명": "부산역", + "시간": "06:20:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1029, + "역명": "부산역", + "시간": "07:50:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2066, + "역명": "부산역", + "시간": "09:16:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2010, + "역명": "부산역", + "시간": "06:32:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1033, + "역명": "부산역", + "시간": "08:00:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2070, + "역명": "부산역", + "시간": "09:26:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1103, + "역명": "부산역", + "시간": "10:54:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2126, + "역명": "부산역", + "시간": "12:21:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1157, + "역명": "부산역", + "시간": "13:49:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2180, + "역명": "부산역", + "시간": "15:16:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1213, + "역명": "부산역", + "시간": "16:48:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2236, + "역명": "부산역", + "시간": "18:17:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1293, + "역명": "부산역", + "시간": "19:45:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2304, + "역명": "부산역", + "시간": "21:12:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1337, + "역명": "부산역", + "시간": "22:38:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1003, + "역명": "부산역", + "시간": "05:57:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2020, + "역명": "부산역", + "시간": "07:25:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1059, + "역명": "부산역", + "시간": "08:52:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2088, + "역명": "부산역", + "시간": "10:20:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1121, + "역명": "부산역", + "시간": "11:52:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2144, + "역명": "부산역", + "시간": "13:19:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1175, + "역명": "부산역", + "시간": "14:48:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2198, + "역명": "부산역", + "시간": "16:15:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1235, + "역명": "부산역", + "시간": "17:44:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2260, + "역명": "부산역", + "시간": "19:10:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1309, + "역명": "부산역", + "시간": "20:39:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2320, + "역명": "부산역", + "시간": "22:07:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1347, + "역명": "부산역", + "시간": "23:32:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2012, + "역명": "부산역", + "시간": "06:44:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1039, + "역명": "부산역", + "시간": "08:12:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2074, + "역명": "부산역", + "시간": "09:38:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1107, + "역명": "부산역", + "시간": "11:07:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2130, + "역명": "부산역", + "시간": "12:34:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1161, + "역명": "부산역", + "시간": "14:02:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2184, + "역명": "부산역", + "시간": "15:29:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1217, + "역명": "부산역", + "시간": "16:59:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2240, + "역명": "부산역", + "시간": "18:25:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1297, + "역명": "부산역", + "시간": "19:55:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 8, + "열번": 2308, + "역명": "부산역", + "시간": "21:24:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 9, + "열번": 2022, + "역명": "부산역", + "시간": "07:31:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1063, + "역명": "부산역", + "시간": "09:00:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 9, + "열번": 2090, + "역명": "부산역", + "시간": "10:26:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2014, + "역명": "부산역", + "시간": "06:56:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1045, + "역명": "부산역", + "시간": "08:24:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 11, + "열번": 1005, + "역명": "부산역", + "시간": "06:08:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2024, + "역명": "부산역", + "시간": "07:37:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1065, + "역명": "부산역", + "시간": "09:04:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2092, + "역명": "부산역", + "시간": "10:32:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1123, + "역명": "부산역", + "시간": "11:59:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2146, + "역명": "부산역", + "시간": "13:26:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1177, + "역명": "부산역", + "시간": "14:54:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2200, + "역명": "부산역", + "시간": "16:21:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1237, + "역명": "부산역", + "시간": "17:49:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 11, + "열번": 2262, + "역명": "부산역", + "시간": "19:15:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2016, + "역명": "부산역", + "시간": "07:07:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1051, + "역명": "부산역", + "시간": "08:36:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2082, + "역명": "부산역", + "시간": "10:02:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1115, + "역명": "부산역", + "시간": "11:33:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2138, + "역명": "부산역", + "시간": "13:00:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1169, + "역명": "부산역", + "시간": "14:28:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "부산역", + "시간": "15:55:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1227, + "역명": "부산역", + "시간": "17:24:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2252, + "역명": "부산역", + "시간": "18:50:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1303, + "역명": "부산역", + "시간": "20:15:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2314, + "역명": "부산역", + "시간": "21:42:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1343, + "역명": "부산역", + "시간": "23:09:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1007, + "역명": "부산역", + "시간": "06:19:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2028, + "역명": "부산역", + "시간": "07:47:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1071, + "역명": "부산역", + "시간": "09:16:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2096, + "역명": "부산역", + "시간": "10:44:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1127, + "역명": "부산역", + "시간": "12:12:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2150, + "역명": "부산역", + "시간": "13:39:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1181, + "역명": "부산역", + "시간": "15:07:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2204, + "역명": "부산역", + "시간": "16:33:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1241, + "역명": "부산역", + "시간": "17:59:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2266, + "역명": "부산역", + "시간": "19:25:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1313, + "역명": "부산역", + "시간": "20:55:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2324, + "역명": "부산역", + "시간": "22:27:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 13, + "열번": 1351, + "역명": "부산역", + "시간": "23:56:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 14, + "열번": 1001, + "역명": "부산역", + "시간": "05:49:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2018, + "역명": "부산역", + "시간": "07:16:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1055, + "역명": "부산역", + "시간": "08:44:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1009, + "역명": "부산역", + "시간": "06:30:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2032, + "역명": "부산역", + "시간": "07:57:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1075, + "역명": "부산역", + "시간": "09:25:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2100, + "역명": "부산역", + "시간": "10:56:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1131, + "역명": "부산역", + "시간": "12:25:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2154, + "역명": "부산역", + "시간": "13:52:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1185, + "역명": "부산역", + "시간": "15:20:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2208, + "역명": "부산역", + "시간": "16:50:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1249, + "역명": "부산역", + "시간": "18:16:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2274, + "역명": "부산역", + "시간": "19:45:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2026, + "역명": "부산역", + "시간": "07:42:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1067, + "역명": "부산역", + "시간": "09:08:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2036, + "역명": "부산역", + "시간": "08:06:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2030, + "역명": "부산역", + "시간": "07:52:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1073, + "역명": "부산역", + "시간": "09:20:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2098, + "역명": "부산역", + "시간": "10:50:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1129, + "역명": "부산역", + "시간": "12:18:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2152, + "역명": "부산역", + "시간": "13:45:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1183, + "역명": "부산역", + "시간": "15:14:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2206, + "역명": "부산역", + "시간": "16:45:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1247, + "역명": "부산역", + "시간": "18:12:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2272, + "역명": "부산역", + "시간": "19:40:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1317, + "역명": "부산역", + "시간": "21:11:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2326, + "역명": "부산역", + "시간": "22:37:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 18, + "열번": 7931, + "역명": "부산역", + "시간": "00:12:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 19, + "열번": 1011, + "역명": "부산역", + "시간": "06:41:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2038, + "역명": "부산역", + "시간": "08:10:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1079, + "역명": "부산역", + "시간": "09:37:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2102, + "역명": "부산역", + "시간": "11:03:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1133, + "역명": "부산역", + "시간": "12:31:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2156, + "역명": "부산역", + "시간": "13:58:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1187, + "역명": "부산역", + "시간": "15:27:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2210, + "역명": "부산역", + "시간": "16:55:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1253, + "역명": "부산역", + "시간": "18:24:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2278, + "역명": "부산역", + "시간": "19:55:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2034, + "역명": "부산역", + "시간": "08:01:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 20, + "열번": 1077, + "역명": "부산역", + "시간": "09:31:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 21, + "열번": 1013, + "역명": "부산역", + "시간": "06:52:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2042, + "역명": "부산역", + "시간": "08:19:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1083, + "역명": "부산역", + "시간": "09:49:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2106, + "역명": "부산역", + "시간": "11:16:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1137, + "역명": "부산역", + "시간": "12:44:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2160, + "역명": "부산역", + "시간": "14:11:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1191, + "역명": "부산역", + "시간": "15:40:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2214, + "역명": "부산역", + "시간": "17:05:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1257, + "역명": "부산역", + "시간": "18:32:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2280, + "역명": "부산역", + "시간": "20:00:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1321, + "역명": "부산역", + "시간": "21:27:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2330, + "역명": "부산역", + "시간": "22:59:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2040, + "역명": "부산역", + "시간": "08:15:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1081, + "역명": "부산역", + "시간": "09:43:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2104, + "역명": "부산역", + "시간": "11:09:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1135, + "역명": "부산역", + "시간": "12:38:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2158, + "역명": "부산역", + "시간": "14:05:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1189, + "역명": "부산역", + "시간": "15:33:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2212, + "역명": "부산역", + "시간": "17:00:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1255, + "역명": "부산역", + "시간": "18:28:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2044, + "역명": "부산역", + "시간": "08:24:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "부산역", + "시간": "08:33:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1087, + "역명": "부산역", + "시간": "10:02:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2110, + "역명": "부산역", + "시간": "11:29:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1141, + "역명": "부산역", + "시간": "12:57:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2164, + "역명": "부산역", + "시간": "14:24:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1195, + "역명": "부산역", + "시간": "15:53:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2218, + "역명": "부산역", + "시간": "17:20:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1265, + "역명": "부산역", + "시간": "18:48:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 24, + "열번": 2286, + "역명": "부산역", + "시간": "20:18:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "부산역", + "시간": "07:20:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2054, + "역명": "부산역", + "시간": "08:46:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1091, + "역명": "부산역", + "시간": "10:15:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2114, + "역명": "부산역", + "시간": "11:42:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1145, + "역명": "부산역", + "시간": "13:10:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2168, + "역명": "부산역", + "시간": "14:37:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1199, + "역명": "부산역", + "시간": "16:06:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2222, + "역명": "부산역", + "시간": "17:33:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1271, + "역명": "부산역", + "시간": "19:00:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2290, + "역명": "부산역", + "시간": "20:30:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1329, + "역명": "부산역", + "시간": "21:59:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2336, + "역명": "부산역", + "시간": "23:33:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2052, + "역명": "부산역", + "시간": "08:42:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1089, + "역명": "부산역", + "시간": "10:08:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2112, + "역명": "부산역", + "시간": "11:35:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1143, + "역명": "부산역", + "시간": "13:04:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2166, + "역명": "부산역", + "시간": "14:31:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1197, + "역명": "부산역", + "시간": "15:59:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2220, + "역명": "부산역", + "시간": "17:29:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1269, + "역명": "부산역", + "시간": "18:56:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2288, + "역명": "부산역", + "시간": "20:24:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1327, + "역명": "부산역", + "시간": "21:51:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 26, + "열번": 2334, + "역명": "부산역", + "시간": "23:23:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1023, + "역명": "부산역", + "시간": "07:35:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 27, + "열번": 2060, + "역명": "부산역", + "시간": "09:01:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2056, + "역명": "부산역", + "시간": "08:51:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1093, + "역명": "부산역", + "시간": "10:21:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2116, + "역명": "부산역", + "시간": "11:48:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1147, + "역명": "부산역", + "시간": "13:17:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2170, + "역명": "부산역", + "시간": "14:44:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1201, + "역명": "부산역", + "시간": "16:12:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2224, + "역명": "부산역", + "시간": "17:41:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1275, + "역명": "부산역", + "시간": "19:08:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2292, + "역명": "부산역", + "시간": "20:36:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1331, + "역명": "부산역", + "시간": "22:08:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1027, + "역명": "부산역", + "시간": "07:45:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2064, + "역명": "부산역", + "시간": "09:11:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1099, + "역명": "부산역", + "시간": "10:41:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2122, + "역명": "부산역", + "시간": "12:08:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1153, + "역명": "부산역", + "시간": "13:36:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2176, + "역명": "부산역", + "시간": "15:03:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1207, + "역명": "부산역", + "시간": "16:30:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2230, + "역명": "부산역", + "시간": "17:57:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1283, + "역명": "부산역", + "시간": "19:24:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 29, + "열번": 2298, + "역명": "부산역", + "시간": "20:54:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1037, + "역명": "부산역", + "시간": "08:08:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1031, + "역명": "부산역", + "시간": "07:55:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2068, + "역명": "부산역", + "시간": "09:21:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1101, + "역명": "부산역", + "시간": "10:47:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2124, + "역명": "부산역", + "시간": "12:14:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1155, + "역명": "부산역", + "시간": "13:43:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2178, + "역명": "부산역", + "시간": "15:10:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1209, + "역명": "부산역", + "시간": "16:36:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2232, + "역명": "부산역", + "시간": "18:05:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1287, + "역명": "부산역", + "시간": "19:32:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2300, + "역명": "부산역", + "시간": "21:00:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1335, + "역명": "부산역", + "시간": "22:28:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 32, + "열번": 1049, + "역명": "부산역", + "시간": "08:32:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1035, + "역명": "부산역", + "시간": "08:04:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2072, + "역명": "부산역", + "시간": "09:32:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1105, + "역명": "부산역", + "시간": "11:00:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2128, + "역명": "부산역", + "시간": "12:27:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1159, + "역명": "부산역", + "시간": "13:56:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2182, + "역명": "부산역", + "시간": "15:23:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1215, + "역명": "부산역", + "시간": "16:54:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2238, + "역명": "부산역", + "시간": "18:21:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1295, + "역명": "부산역", + "시간": "19:50:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2306, + "역명": "부산역", + "시간": "21:18:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 33, + "열번": 1339, + "역명": "부산역", + "시간": "22:48:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 34, + "열번": 1061, + "역명": "부산역", + "시간": "08:56:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1041, + "역명": "부산역", + "시간": "08:16:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2076, + "역명": "부산역", + "시간": "09:44:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1109, + "역명": "부산역", + "시간": "11:13:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2132, + "역명": "부산역", + "시간": "12:40:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1163, + "역명": "부산역", + "시간": "14:09:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2186, + "역명": "부산역", + "시간": "15:36:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1219, + "역명": "부산역", + "시간": "17:04:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 35, + "열번": 2242, + "역명": "부산역", + "시간": "18:29:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 36, + "열번": 8904, + "역명": "부산역", + "시간": "16:39:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1245, + "역명": "부산역", + "시간": "18:08:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 36, + "열번": 2270, + "역명": "부산역", + "시간": "19:35:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1315, + "역명": "부산역", + "시간": "21:03:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1043, + "역명": "부산역", + "시간": "08:20:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2078, + "역명": "부산역", + "시간": "09:50:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1111, + "역명": "부산역", + "시간": "11:20:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2134, + "역명": "부산역", + "시간": "12:47:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1165, + "역명": "부산역", + "시간": "14:15:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2188, + "역명": "부산역", + "시간": "15:42:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1221, + "역명": "부산역", + "시간": "17:09:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 37, + "열번": 2246, + "역명": "부산역", + "시간": "18:37:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 38, + "열번": 8906, + "역명": "부산역", + "시간": "17:10:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 38, + "열번": 1259, + "역명": "부산역", + "시간": "18:36:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 39, + "열번": 1047, + "역명": "부산역", + "시간": "08:28:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2080, + "역명": "부산역", + "시간": "09:56:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1113, + "역명": "부산역", + "시간": "11:26:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2136, + "역명": "부산역", + "시간": "12:53:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1167, + "역명": "부산역", + "시간": "14:22:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2190, + "역명": "부산역", + "시간": "15:49:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1225, + "역명": "부산역", + "시간": "17:19:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 39, + "열번": 2250, + "역명": "부산역", + "시간": "18:45:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 40, + "열번": 8908, + "역명": "부산역", + "시간": "17:25:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 40, + "열번": 1267, + "역명": "부산역", + "시간": "18:52:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 41, + "열번": 1053, + "역명": "부산역", + "시간": "08:40:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2084, + "역명": "부산역", + "시간": "10:08:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1117, + "역명": "부산역", + "시간": "11:39:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2140, + "역명": "부산역", + "시간": "13:06:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1171, + "역명": "부산역", + "시간": "14:35:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2194, + "역명": "부산역", + "시간": "16:02:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1229, + "역명": "부산역", + "시간": "17:29:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2254, + "역명": "부산역", + "시간": "18:55:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1305, + "역명": "부산역", + "시간": "20:23:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2316, + "역명": "부산역", + "시간": "21:49:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1345, + "역명": "부산역", + "시간": "23:20:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 42, + "열번": 8910, + "역명": "부산역", + "시간": "17:37:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 42, + "열번": 1273, + "역명": "부산역", + "시간": "19:04:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 43, + "열번": 1057, + "역명": "부산역", + "시간": "08:48:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2086, + "역명": "부산역", + "시간": "10:14:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1119, + "역명": "부산역", + "시간": "11:46:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2142, + "역명": "부산역", + "시간": "13:13:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1173, + "역명": "부산역", + "시간": "14:41:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2196, + "역명": "부산역", + "시간": "16:08:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1233, + "역명": "부산역", + "시간": "17:39:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2258, + "역명": "부산역", + "시간": "19:05:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1307, + "역명": "부산역", + "시간": "20:31:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 43, + "열번": 2318, + "역명": "부산역", + "시간": "21:57:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 44, + "열번": 8912, + "역명": "부산역", + "시간": "17:49:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 44, + "열번": 1279, + "역명": "부산역", + "시간": "19:16:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 45, + "열번": 1069, + "역명": "부산역", + "시간": "09:12:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2094, + "역명": "부산역", + "시간": "10:38:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1125, + "역명": "부산역", + "시간": "12:05:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2148, + "역명": "부산역", + "시간": "13:32:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1179, + "역명": "부산역", + "시간": "15:01:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2202, + "역명": "부산역", + "시간": "16:27:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1239, + "역명": "부산역", + "시간": "17:54:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2264, + "역명": "부산역", + "시간": "19:20:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1311, + "역명": "부산역", + "시간": "20:47:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2322, + "역명": "부산역", + "시간": "22:17:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 45, + "열번": 1349, + "역명": "부산역", + "시간": "23:44:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 46, + "열번": 8914, + "역명": "부산역", + "시간": "18:01:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 46, + "열번": 1285, + "역명": "부산역", + "시간": "19:28:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 47, + "열번": 1211, + "역명": "부산역", + "시간": "16:42:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 47, + "열번": 2234, + "역명": "부산역", + "시간": "18:09:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 47, + "열번": 1289, + "역명": "부산역", + "시간": "19:36:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 47, + "열번": 2302, + "역명": "부산역", + "시간": "21:06:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 48, + "열번": 8916, + "역명": "부산역", + "시간": "18:13:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 48, + "열번": 1291, + "역명": "부산역", + "시간": "19:40:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 49, + "열번": 1223, + "역명": "부산역", + "시간": "17:14:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 49, + "열번": 2248, + "역명": "부산역", + "시간": "18:41:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 49, + "열번": 1301, + "역명": "부산역", + "시간": "20:07:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 49, + "열번": 2312, + "역명": "부산역", + "시간": "21:36:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 50, + "열번": 2244, + "역명": "부산역", + "시간": "18:33:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 50, + "열번": 1299, + "역명": "부산역", + "시간": "20:00:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 50, + "열번": 2310, + "역명": "부산역", + "시간": "21:30:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 50, + "열번": 1341, + "역명": "부산역", + "시간": "22:58:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 51, + "열번": 1231, + "역명": "부산역", + "시간": "17:34:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 51, + "열번": 2256, + "역명": "부산역", + "시간": "19:00:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 52, + "열번": 6906, + "역명": "부산역", + "시간": "09:59:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 52, + "열번": 5905, + "역명": "부산역", + "시간": "11:29:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 53, + "열번": 1243, + "역명": "부산역", + "시간": "18:04:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 53, + "열번": 2268, + "역명": "부산역", + "시간": "19:30:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 54, + "열번": 6910, + "역명": "부산역", + "시간": "13:42:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 54, + "열번": 5907, + "역명": "부산역", + "시간": "15:10:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 55, + "열번": 1251, + "역명": "부산역", + "시간": "18:20:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 55, + "열번": 2276, + "역명": "부산역", + "시간": "19:50:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 55, + "열번": 1319, + "역명": "부산역", + "시간": "21:19:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 55, + "열번": 2328, + "역명": "부산역", + "시간": "22:47:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 57, + "열번": 1263, + "역명": "부산역", + "시간": "18:44:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 57, + "열번": 2284, + "역명": "부산역", + "시간": "20:12:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 57, + "열번": 1325, + "역명": "부산역", + "시간": "21:43:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 57, + "열번": 2332, + "역명": "부산역", + "시간": "23:11:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 59, + "열번": 5901, + "역명": "부산역", + "시간": "10:37:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 59, + "열번": 6902, + "역명": "부산역", + "시간": "12:04:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 61, + "열번": 5903, + "역명": "부산역", + "시간": "14:05:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 61, + "열번": 5904, + "역명": "부산역", + "시간": "15:32:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "중앙", + "시간": "05:40:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "중앙", + "시간": "07:13:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2050, + "역명": "중앙", + "시간": "08:35:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "중앙", + "시간": "05:24:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "중앙", + "시간": "07:04:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "중앙", + "시간": "08:26:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1085, + "역명": "중앙", + "시간": "09:57:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2108, + "역명": "중앙", + "시간": "11:20:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1139, + "역명": "중앙", + "시간": "12:53:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2162, + "역명": "중앙", + "시간": "14:16:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1193, + "역명": "중앙", + "시간": "15:48:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2216, + "역명": "중앙", + "시간": "17:13:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1261, + "역명": "중앙", + "시간": "18:42:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2282, + "역명": "중앙", + "시간": "20:04:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1323, + "역명": "중앙", + "시간": "21:37:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "중앙", + "시간": "05:54:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "중앙", + "시간": "07:31:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2058, + "역명": "중앙", + "시간": "08:54:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1095, + "역명": "중앙", + "시간": "10:30:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2118, + "역명": "중앙", + "시간": "11:53:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1149, + "역명": "중앙", + "시간": "13:25:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2172, + "역명": "중앙", + "시간": "14:48:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1203, + "역명": "중앙", + "시간": "16:20:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2226, + "역명": "중앙", + "시간": "17:43:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1277, + "역명": "중앙", + "시간": "19:14:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2294, + "역명": "중앙", + "시간": "20:40:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "중앙", + "시간": "06:06:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1025, + "역명": "중앙", + "시간": "07:42:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2062, + "역명": "중앙", + "시간": "09:04:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1097, + "역명": "중앙", + "시간": "10:36:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2120, + "역명": "중앙", + "시간": "11:59:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1151, + "역명": "중앙", + "시간": "13:32:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2174, + "역명": "중앙", + "시간": "14:55:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1205, + "역명": "중앙", + "시간": "16:26:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2228, + "역명": "중앙", + "시간": "17:51:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1281, + "역명": "중앙", + "시간": "19:22:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2296, + "역명": "중앙", + "시간": "20:46:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1333, + "역명": "중앙", + "시간": "22:20:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2338, + "역명": "중앙", + "시간": "23:47:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2008, + "역명": "중앙", + "시간": "06:18:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1029, + "역명": "중앙", + "시간": "07:52:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2066, + "역명": "중앙", + "시간": "09:14:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2010, + "역명": "중앙", + "시간": "06:30:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1033, + "역명": "중앙", + "시간": "08:02:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2070, + "역명": "중앙", + "시간": "09:24:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1103, + "역명": "중앙", + "시간": "10:56:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2126, + "역명": "중앙", + "시간": "12:19:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1157, + "역명": "중앙", + "시간": "13:51:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2180, + "역명": "중앙", + "시간": "15:14:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1213, + "역명": "중앙", + "시간": "16:50:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2236, + "역명": "중앙", + "시간": "18:15:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1293, + "역명": "중앙", + "시간": "19:47:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2304, + "역명": "중앙", + "시간": "21:10:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1337, + "역명": "중앙", + "시간": "22:40:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1003, + "역명": "중앙", + "시간": "05:59:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2020, + "역명": "중앙", + "시간": "07:23:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1059, + "역명": "중앙", + "시간": "08:54:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2088, + "역명": "중앙", + "시간": "10:18:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1121, + "역명": "중앙", + "시간": "11:54:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2144, + "역명": "중앙", + "시간": "13:17:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1175, + "역명": "중앙", + "시간": "14:50:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2198, + "역명": "중앙", + "시간": "16:13:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1235, + "역명": "중앙", + "시간": "17:46:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2260, + "역명": "중앙", + "시간": "19:08:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1309, + "역명": "중앙", + "시간": "20:41:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2320, + "역명": "중앙", + "시간": "22:05:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1347, + "역명": "중앙", + "시간": "23:34:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2012, + "역명": "중앙", + "시간": "06:42:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1039, + "역명": "중앙", + "시간": "08:14:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2074, + "역명": "중앙", + "시간": "09:36:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1107, + "역명": "중앙", + "시간": "11:09:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2130, + "역명": "중앙", + "시간": "12:32:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1161, + "역명": "중앙", + "시간": "14:04:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2184, + "역명": "중앙", + "시간": "15:27:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1217, + "역명": "중앙", + "시간": "17:01:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2240, + "역명": "중앙", + "시간": "18:23:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1297, + "역명": "중앙", + "시간": "19:57:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 8, + "열번": 2308, + "역명": "중앙", + "시간": "21:22:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 9, + "열번": 2022, + "역명": "중앙", + "시간": "07:29:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1063, + "역명": "중앙", + "시간": "09:02:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 9, + "열번": 2090, + "역명": "중앙", + "시간": "10:24:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2014, + "역명": "중앙", + "시간": "06:54:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1045, + "역명": "중앙", + "시간": "08:26:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 11, + "열번": 1005, + "역명": "중앙", + "시간": "06:10:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2024, + "역명": "중앙", + "시간": "07:35:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1065, + "역명": "중앙", + "시간": "09:06:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2092, + "역명": "중앙", + "시간": "10:30:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1123, + "역명": "중앙", + "시간": "12:01:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2146, + "역명": "중앙", + "시간": "13:24:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1177, + "역명": "중앙", + "시간": "14:56:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2200, + "역명": "중앙", + "시간": "16:19:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1237, + "역명": "중앙", + "시간": "17:51:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 11, + "열번": 2262, + "역명": "중앙", + "시간": "19:13:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2016, + "역명": "중앙", + "시간": "07:05:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1051, + "역명": "중앙", + "시간": "08:38:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2082, + "역명": "중앙", + "시간": "10:00:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1115, + "역명": "중앙", + "시간": "11:35:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2138, + "역명": "중앙", + "시간": "12:58:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1169, + "역명": "중앙", + "시간": "14:30:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "중앙", + "시간": "15:53:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1227, + "역명": "중앙", + "시간": "17:26:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2252, + "역명": "중앙", + "시간": "18:48:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1303, + "역명": "중앙", + "시간": "20:17:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2314, + "역명": "중앙", + "시간": "21:40:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1343, + "역명": "중앙", + "시간": "23:11:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1007, + "역명": "중앙", + "시간": "06:21:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2028, + "역명": "중앙", + "시간": "07:45:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1071, + "역명": "중앙", + "시간": "09:18:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2096, + "역명": "중앙", + "시간": "10:42:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1127, + "역명": "중앙", + "시간": "12:14:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2150, + "역명": "중앙", + "시간": "13:37:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1181, + "역명": "중앙", + "시간": "15:09:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2204, + "역명": "중앙", + "시간": "16:31:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1241, + "역명": "중앙", + "시간": "18:01:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2266, + "역명": "중앙", + "시간": "19:23:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1313, + "역명": "중앙", + "시간": "20:57:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2324, + "역명": "중앙", + "시간": "22:25:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 13, + "열번": 1351, + "역명": "중앙", + "시간": "23:58:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 14, + "열번": 1001, + "역명": "중앙", + "시간": "05:51:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2018, + "역명": "중앙", + "시간": "07:14:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1055, + "역명": "중앙", + "시간": "08:46:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1009, + "역명": "중앙", + "시간": "06:32:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2032, + "역명": "중앙", + "시간": "07:55:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1075, + "역명": "중앙", + "시간": "09:27:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2100, + "역명": "중앙", + "시간": "10:54:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1131, + "역명": "중앙", + "시간": "12:27:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2154, + "역명": "중앙", + "시간": "13:50:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1185, + "역명": "중앙", + "시간": "15:22:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2208, + "역명": "중앙", + "시간": "16:48:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1249, + "역명": "중앙", + "시간": "18:18:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2274, + "역명": "중앙", + "시간": "19:43:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2026, + "역명": "중앙", + "시간": "07:40:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1067, + "역명": "중앙", + "시간": "09:10:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2036, + "역명": "중앙", + "시간": "08:04:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2030, + "역명": "중앙", + "시간": "07:50:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1073, + "역명": "중앙", + "시간": "09:22:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2098, + "역명": "중앙", + "시간": "10:48:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1129, + "역명": "중앙", + "시간": "12:20:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2152, + "역명": "중앙", + "시간": "13:43:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1183, + "역명": "중앙", + "시간": "15:16:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2206, + "역명": "중앙", + "시간": "16:43:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1247, + "역명": "중앙", + "시간": "18:14:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2272, + "역명": "중앙", + "시간": "19:38:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1317, + "역명": "중앙", + "시간": "21:13:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2326, + "역명": "중앙", + "시간": "22:35:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 18, + "열번": 7931, + "역명": "중앙", + "시간": "00:14:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 19, + "열번": 1011, + "역명": "중앙", + "시간": "06:43:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2038, + "역명": "중앙", + "시간": "08:08:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1079, + "역명": "중앙", + "시간": "09:39:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2102, + "역명": "중앙", + "시간": "11:01:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1133, + "역명": "중앙", + "시간": "12:33:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2156, + "역명": "중앙", + "시간": "13:56:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1187, + "역명": "중앙", + "시간": "15:29:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2210, + "역명": "중앙", + "시간": "16:53:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1253, + "역명": "중앙", + "시간": "18:26:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2278, + "역명": "중앙", + "시간": "19:53:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2034, + "역명": "중앙", + "시간": "07:59:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 20, + "열번": 1077, + "역명": "중앙", + "시간": "09:33:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 21, + "열번": 1013, + "역명": "중앙", + "시간": "06:54:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2042, + "역명": "중앙", + "시간": "08:17:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1083, + "역명": "중앙", + "시간": "09:51:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2106, + "역명": "중앙", + "시간": "11:14:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1137, + "역명": "중앙", + "시간": "12:46:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2160, + "역명": "중앙", + "시간": "14:09:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1191, + "역명": "중앙", + "시간": "15:42:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2214, + "역명": "중앙", + "시간": "17:03:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1257, + "역명": "중앙", + "시간": "18:34:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2280, + "역명": "중앙", + "시간": "19:58:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1321, + "역명": "중앙", + "시간": "21:29:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2330, + "역명": "중앙", + "시간": "22:57:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2040, + "역명": "중앙", + "시간": "08:13:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1081, + "역명": "중앙", + "시간": "09:45:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2104, + "역명": "중앙", + "시간": "11:07:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1135, + "역명": "중앙", + "시간": "12:40:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2158, + "역명": "중앙", + "시간": "14:03:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1189, + "역명": "중앙", + "시간": "15:35:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2212, + "역명": "중앙", + "시간": "16:58:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1255, + "역명": "중앙", + "시간": "18:30:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2044, + "역명": "중앙", + "시간": "08:22:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "중앙", + "시간": "08:31:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1087, + "역명": "중앙", + "시간": "10:04:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2110, + "역명": "중앙", + "시간": "11:27:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1141, + "역명": "중앙", + "시간": "12:59:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2164, + "역명": "중앙", + "시간": "14:22:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1195, + "역명": "중앙", + "시간": "15:55:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2218, + "역명": "중앙", + "시간": "17:18:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1265, + "역명": "중앙", + "시간": "18:50:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 24, + "열번": 2286, + "역명": "중앙", + "시간": "20:16:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "중앙", + "시간": "07:22:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2054, + "역명": "중앙", + "시간": "08:44:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1091, + "역명": "중앙", + "시간": "10:17:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2114, + "역명": "중앙", + "시간": "11:40:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1145, + "역명": "중앙", + "시간": "13:12:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2168, + "역명": "중앙", + "시간": "14:35:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1199, + "역명": "중앙", + "시간": "16:08:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2222, + "역명": "중앙", + "시간": "17:31:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1271, + "역명": "중앙", + "시간": "19:02:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2290, + "역명": "중앙", + "시간": "20:28:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1329, + "역명": "중앙", + "시간": "22:01:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2336, + "역명": "중앙", + "시간": "23:31:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2052, + "역명": "중앙", + "시간": "08:40:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1089, + "역명": "중앙", + "시간": "10:10:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2112, + "역명": "중앙", + "시간": "11:33:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1143, + "역명": "중앙", + "시간": "13:06:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2166, + "역명": "중앙", + "시간": "14:29:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1197, + "역명": "중앙", + "시간": "16:01:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2220, + "역명": "중앙", + "시간": "17:27:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1269, + "역명": "중앙", + "시간": "18:58:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2288, + "역명": "중앙", + "시간": "20:22:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1327, + "역명": "중앙", + "시간": "21:53:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 26, + "열번": 2334, + "역명": "중앙", + "시간": "23:21:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1023, + "역명": "중앙", + "시간": "07:37:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 27, + "열번": 2060, + "역명": "중앙", + "시간": "08:59:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2056, + "역명": "중앙", + "시간": "08:49:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1093, + "역명": "중앙", + "시간": "10:23:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2116, + "역명": "중앙", + "시간": "11:46:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1147, + "역명": "중앙", + "시간": "13:19:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2170, + "역명": "중앙", + "시간": "14:42:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1201, + "역명": "중앙", + "시간": "16:14:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2224, + "역명": "중앙", + "시간": "17:39:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1275, + "역명": "중앙", + "시간": "19:10:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2292, + "역명": "중앙", + "시간": "20:34:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1331, + "역명": "중앙", + "시간": "22:10:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1027, + "역명": "중앙", + "시간": "07:47:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2064, + "역명": "중앙", + "시간": "09:09:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1099, + "역명": "중앙", + "시간": "10:43:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2122, + "역명": "중앙", + "시간": "12:06:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1153, + "역명": "중앙", + "시간": "13:38:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2176, + "역명": "중앙", + "시간": "15:01:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1207, + "역명": "중앙", + "시간": "16:32:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2230, + "역명": "중앙", + "시간": "17:55:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1283, + "역명": "중앙", + "시간": "19:26:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 29, + "열번": 2298, + "역명": "중앙", + "시간": "20:52:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1037, + "역명": "중앙", + "시간": "08:10:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1031, + "역명": "중앙", + "시간": "07:57:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2068, + "역명": "중앙", + "시간": "09:19:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1101, + "역명": "중앙", + "시간": "10:49:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2124, + "역명": "중앙", + "시간": "12:12:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1155, + "역명": "중앙", + "시간": "13:45:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2178, + "역명": "중앙", + "시간": "15:08:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1209, + "역명": "중앙", + "시간": "16:38:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2232, + "역명": "중앙", + "시간": "18:03:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1287, + "역명": "중앙", + "시간": "19:34:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2300, + "역명": "중앙", + "시간": "20:58:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1335, + "역명": "중앙", + "시간": "22:30:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 32, + "열번": 1049, + "역명": "중앙", + "시간": "08:34:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1035, + "역명": "중앙", + "시간": "08:06:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2072, + "역명": "중앙", + "시간": "09:30:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1105, + "역명": "중앙", + "시간": "11:02:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2128, + "역명": "중앙", + "시간": "12:25:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1159, + "역명": "중앙", + "시간": "13:58:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2182, + "역명": "중앙", + "시간": "15:21:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1215, + "역명": "중앙", + "시간": "16:56:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2238, + "역명": "중앙", + "시간": "18:19:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1295, + "역명": "중앙", + "시간": "19:52:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2306, + "역명": "중앙", + "시간": "21:16:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 33, + "열번": 1339, + "역명": "중앙", + "시간": "22:50:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 34, + "열번": 1061, + "역명": "중앙", + "시간": "08:58:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1041, + "역명": "중앙", + "시간": "08:18:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2076, + "역명": "중앙", + "시간": "09:42:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1109, + "역명": "중앙", + "시간": "11:15:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2132, + "역명": "중앙", + "시간": "12:38:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1163, + "역명": "중앙", + "시간": "14:11:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2186, + "역명": "중앙", + "시간": "15:34:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1219, + "역명": "중앙", + "시간": "17:06:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 35, + "열번": 2242, + "역명": "중앙", + "시간": "18:27:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 36, + "열번": 8904, + "역명": "중앙", + "시간": "16:37:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1245, + "역명": "중앙", + "시간": "18:10:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 36, + "열번": 2270, + "역명": "중앙", + "시간": "19:33:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1315, + "역명": "중앙", + "시간": "21:05:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1043, + "역명": "중앙", + "시간": "08:22:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2078, + "역명": "중앙", + "시간": "09:48:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1111, + "역명": "중앙", + "시간": "11:22:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2134, + "역명": "중앙", + "시간": "12:45:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1165, + "역명": "중앙", + "시간": "14:17:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2188, + "역명": "중앙", + "시간": "15:40:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1221, + "역명": "중앙", + "시간": "17:11:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 37, + "열번": 2246, + "역명": "중앙", + "시간": "18:35:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 38, + "열번": 8906, + "역명": "중앙", + "시간": "17:08:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 38, + "열번": 1259, + "역명": "중앙", + "시간": "18:38:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 39, + "열번": 1047, + "역명": "중앙", + "시간": "08:30:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2080, + "역명": "중앙", + "시간": "09:54:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1113, + "역명": "중앙", + "시간": "11:28:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2136, + "역명": "중앙", + "시간": "12:51:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1167, + "역명": "중앙", + "시간": "14:24:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2190, + "역명": "중앙", + "시간": "15:47:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1225, + "역명": "중앙", + "시간": "17:21:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 39, + "열번": 2250, + "역명": "중앙", + "시간": "18:43:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 40, + "열번": 8908, + "역명": "중앙", + "시간": "17:23:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 40, + "열번": 1267, + "역명": "중앙", + "시간": "18:54:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 41, + "열번": 1053, + "역명": "중앙", + "시간": "08:42:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2084, + "역명": "중앙", + "시간": "10:06:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1117, + "역명": "중앙", + "시간": "11:41:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2140, + "역명": "중앙", + "시간": "13:04:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1171, + "역명": "중앙", + "시간": "14:37:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2194, + "역명": "중앙", + "시간": "16:00:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1229, + "역명": "중앙", + "시간": "17:31:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2254, + "역명": "중앙", + "시간": "18:53:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1305, + "역명": "중앙", + "시간": "20:25:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2316, + "역명": "중앙", + "시간": "21:47:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1345, + "역명": "중앙", + "시간": "23:22:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 42, + "열번": 8910, + "역명": "중앙", + "시간": "17:35:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 42, + "열번": 1273, + "역명": "중앙", + "시간": "19:06:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 43, + "열번": 1057, + "역명": "중앙", + "시간": "08:50:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2086, + "역명": "중앙", + "시간": "10:12:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1119, + "역명": "중앙", + "시간": "11:48:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2142, + "역명": "중앙", + "시간": "13:11:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1173, + "역명": "중앙", + "시간": "14:43:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2196, + "역명": "중앙", + "시간": "16:06:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1233, + "역명": "중앙", + "시간": "17:41:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2258, + "역명": "중앙", + "시간": "19:03:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1307, + "역명": "중앙", + "시간": "20:33:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 43, + "열번": 2318, + "역명": "중앙", + "시간": "21:55:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 44, + "열번": 8912, + "역명": "중앙", + "시간": "17:47:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 44, + "열번": 1279, + "역명": "중앙", + "시간": "19:18:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 45, + "열번": 1069, + "역명": "중앙", + "시간": "09:14:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2094, + "역명": "중앙", + "시간": "10:36:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1125, + "역명": "중앙", + "시간": "12:07:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2148, + "역명": "중앙", + "시간": "13:30:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1179, + "역명": "중앙", + "시간": "15:03:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2202, + "역명": "중앙", + "시간": "16:25:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1239, + "역명": "중앙", + "시간": "17:56:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2264, + "역명": "중앙", + "시간": "19:18:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1311, + "역명": "중앙", + "시간": "20:49:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2322, + "역명": "중앙", + "시간": "22:15:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 45, + "열번": 1349, + "역명": "중앙", + "시간": "23:46:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 46, + "열번": 8914, + "역명": "중앙", + "시간": "17:59:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 46, + "열번": 1285, + "역명": "중앙", + "시간": "19:30:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 47, + "열번": 1211, + "역명": "중앙", + "시간": "16:44:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 47, + "열번": 2234, + "역명": "중앙", + "시간": "18:07:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 47, + "열번": 1289, + "역명": "중앙", + "시간": "19:38:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 47, + "열번": 2302, + "역명": "중앙", + "시간": "21:04:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 48, + "열번": 8916, + "역명": "중앙", + "시간": "18:11:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 48, + "열번": 1291, + "역명": "중앙", + "시간": "19:42:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 49, + "열번": 1223, + "역명": "중앙", + "시간": "17:16:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 49, + "열번": 2248, + "역명": "중앙", + "시간": "18:39:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 49, + "열번": 1301, + "역명": "중앙", + "시간": "20:09:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 49, + "열번": 2312, + "역명": "중앙", + "시간": "21:34:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 50, + "열번": 2244, + "역명": "중앙", + "시간": "18:31:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 50, + "열번": 1299, + "역명": "중앙", + "시간": "20:02:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 50, + "열번": 2310, + "역명": "중앙", + "시간": "21:28:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 50, + "열번": 1341, + "역명": "중앙", + "시간": "23:00:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 51, + "열번": 1231, + "역명": "중앙", + "시간": "17:36:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 51, + "열번": 2256, + "역명": "중앙", + "시간": "18:58:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 52, + "열번": 6906, + "역명": "중앙", + "시간": "09:57:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 52, + "열번": 5905, + "역명": "중앙", + "시간": "11:31:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 53, + "열번": 1243, + "역명": "중앙", + "시간": "18:06:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 53, + "열번": 2268, + "역명": "중앙", + "시간": "19:28:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 54, + "열번": 6910, + "역명": "중앙", + "시간": "13:40:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 54, + "열번": 5907, + "역명": "중앙", + "시간": "15:12:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 55, + "열번": 1251, + "역명": "중앙", + "시간": "18:22:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 55, + "열번": 2276, + "역명": "중앙", + "시간": "19:48:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 55, + "열번": 1319, + "역명": "중앙", + "시간": "21:21:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 55, + "열번": 2328, + "역명": "중앙", + "시간": "22:45:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 57, + "열번": 1263, + "역명": "중앙", + "시간": "18:46:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 57, + "열번": 2284, + "역명": "중앙", + "시간": "20:10:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 57, + "열번": 1325, + "역명": "중앙", + "시간": "21:45:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 57, + "열번": 2332, + "역명": "중앙", + "시간": "23:09:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 59, + "열번": 5901, + "역명": "중앙", + "시간": "10:39:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 59, + "열번": 6902, + "역명": "중앙", + "시간": "12:02:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 61, + "열번": 5903, + "역명": "중앙", + "시간": "14:07:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 61, + "열번": 5904, + "역명": "중앙", + "시간": "15:30:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "남포", + "시간": "05:38:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "남포", + "시간": "07:15:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2050, + "역명": "남포", + "시간": "08:33:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "남포", + "시간": "05:23:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "남포", + "시간": "07:06:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "남포", + "시간": "08:24:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1085, + "역명": "남포", + "시간": "09:59:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2108, + "역명": "남포", + "시간": "11:18:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1139, + "역명": "남포", + "시간": "12:55:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2162, + "역명": "남포", + "시간": "14:14:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1193, + "역명": "남포", + "시간": "15:50:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2216, + "역명": "남포", + "시간": "17:11:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1261, + "역명": "남포", + "시간": "18:44:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2282, + "역명": "남포", + "시간": "20:02:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1323, + "역명": "남포", + "시간": "21:39:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "남포", + "시간": "05:52:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "남포", + "시간": "07:33:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2058, + "역명": "남포", + "시간": "08:52:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1095, + "역명": "남포", + "시간": "10:32:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2118, + "역명": "남포", + "시간": "11:51:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1149, + "역명": "남포", + "시간": "13:27:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2172, + "역명": "남포", + "시간": "14:46:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1203, + "역명": "남포", + "시간": "16:22:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2226, + "역명": "남포", + "시간": "17:41:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1277, + "역명": "남포", + "시간": "19:16:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2294, + "역명": "남포", + "시간": "20:38:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "남포", + "시간": "06:04:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1025, + "역명": "남포", + "시간": "07:44:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2062, + "역명": "남포", + "시간": "09:02:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1097, + "역명": "남포", + "시간": "10:38:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2120, + "역명": "남포", + "시간": "11:57:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1151, + "역명": "남포", + "시간": "13:34:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2174, + "역명": "남포", + "시간": "14:53:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1205, + "역명": "남포", + "시간": "16:28:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2228, + "역명": "남포", + "시간": "17:49:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1281, + "역명": "남포", + "시간": "19:24:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2296, + "역명": "남포", + "시간": "20:44:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1333, + "역명": "남포", + "시간": "22:22:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2338, + "역명": "남포", + "시간": "23:45:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2008, + "역명": "남포", + "시간": "06:16:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1029, + "역명": "남포", + "시간": "07:54:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2066, + "역명": "남포", + "시간": "09:12:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2010, + "역명": "남포", + "시간": "06:28:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1033, + "역명": "남포", + "시간": "08:04:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2070, + "역명": "남포", + "시간": "09:22:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1103, + "역명": "남포", + "시간": "10:58:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2126, + "역명": "남포", + "시간": "12:17:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1157, + "역명": "남포", + "시간": "13:53:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2180, + "역명": "남포", + "시간": "15:12:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1213, + "역명": "남포", + "시간": "16:52:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2236, + "역명": "남포", + "시간": "18:13:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1293, + "역명": "남포", + "시간": "19:49:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2304, + "역명": "남포", + "시간": "21:08:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1337, + "역명": "남포", + "시간": "22:42:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1003, + "역명": "남포", + "시간": "06:01:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2020, + "역명": "남포", + "시간": "07:21:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1059, + "역명": "남포", + "시간": "08:56:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2088, + "역명": "남포", + "시간": "10:16:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1121, + "역명": "남포", + "시간": "11:56:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2144, + "역명": "남포", + "시간": "13:15:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1175, + "역명": "남포", + "시간": "14:52:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2198, + "역명": "남포", + "시간": "16:11:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1235, + "역명": "남포", + "시간": "17:48:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2260, + "역명": "남포", + "시간": "19:06:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1309, + "역명": "남포", + "시간": "20:43:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2320, + "역명": "남포", + "시간": "22:03:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1347, + "역명": "남포", + "시간": "23:36:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2012, + "역명": "남포", + "시간": "06:40:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1039, + "역명": "남포", + "시간": "08:16:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2074, + "역명": "남포", + "시간": "09:34:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1107, + "역명": "남포", + "시간": "11:11:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2130, + "역명": "남포", + "시간": "12:30:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1161, + "역명": "남포", + "시간": "14:06:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2184, + "역명": "남포", + "시간": "15:25:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1217, + "역명": "남포", + "시간": "17:03:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2240, + "역명": "남포", + "시간": "18:21:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1297, + "역명": "남포", + "시간": "19:59:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 8, + "열번": 2308, + "역명": "남포", + "시간": "21:20:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 9, + "열번": 2022, + "역명": "남포", + "시간": "07:27:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1063, + "역명": "남포", + "시간": "09:04:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 9, + "열번": 2090, + "역명": "남포", + "시간": "10:22:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2014, + "역명": "남포", + "시간": "06:52:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1045, + "역명": "남포", + "시간": "08:28:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 11, + "열번": 1005, + "역명": "남포", + "시간": "06:12:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2024, + "역명": "남포", + "시간": "07:33:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1065, + "역명": "남포", + "시간": "09:08:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2092, + "역명": "남포", + "시간": "10:28:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1123, + "역명": "남포", + "시간": "12:03:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2146, + "역명": "남포", + "시간": "13:22:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1177, + "역명": "남포", + "시간": "14:58:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2200, + "역명": "남포", + "시간": "16:17:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1237, + "역명": "남포", + "시간": "17:53:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 11, + "열번": 2262, + "역명": "남포", + "시간": "19:11:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2016, + "역명": "남포", + "시간": "07:03:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1051, + "역명": "남포", + "시간": "08:40:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2082, + "역명": "남포", + "시간": "09:58:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1115, + "역명": "남포", + "시간": "11:37:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2138, + "역명": "남포", + "시간": "12:56:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1169, + "역명": "남포", + "시간": "14:32:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "남포", + "시간": "15:51:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1227, + "역명": "남포", + "시간": "17:28:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2252, + "역명": "남포", + "시간": "18:46:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1303, + "역명": "남포", + "시간": "20:19:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2314, + "역명": "남포", + "시간": "21:38:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1343, + "역명": "남포", + "시간": "23:13:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1007, + "역명": "남포", + "시간": "06:23:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2028, + "역명": "남포", + "시간": "07:43:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1071, + "역명": "남포", + "시간": "09:20:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2096, + "역명": "남포", + "시간": "10:40:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1127, + "역명": "남포", + "시간": "12:16:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2150, + "역명": "남포", + "시간": "13:35:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1181, + "역명": "남포", + "시간": "15:11:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2204, + "역명": "남포", + "시간": "16:29:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1241, + "역명": "남포", + "시간": "18:03:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2266, + "역명": "남포", + "시간": "19:21:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1313, + "역명": "남포", + "시간": "20:59:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2324, + "역명": "남포", + "시간": "22:23:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 13, + "열번": 1351, + "역명": "남포", + "시간": "00:00:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 14, + "열번": 1001, + "역명": "남포", + "시간": "05:53:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2018, + "역명": "남포", + "시간": "07:12:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1055, + "역명": "남포", + "시간": "08:48:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1009, + "역명": "남포", + "시간": "06:34:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2032, + "역명": "남포", + "시간": "07:53:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1075, + "역명": "남포", + "시간": "09:29:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2100, + "역명": "남포", + "시간": "10:52:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1131, + "역명": "남포", + "시간": "12:29:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2154, + "역명": "남포", + "시간": "13:48:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1185, + "역명": "남포", + "시간": "15:24:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2208, + "역명": "남포", + "시간": "16:46:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1249, + "역명": "남포", + "시간": "18:20:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2274, + "역명": "남포", + "시간": "19:41:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2026, + "역명": "남포", + "시간": "07:38:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1067, + "역명": "남포", + "시간": "09:12:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2036, + "역명": "남포", + "시간": "08:02:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2030, + "역명": "남포", + "시간": "07:48:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1073, + "역명": "남포", + "시간": "09:24:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2098, + "역명": "남포", + "시간": "10:46:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1129, + "역명": "남포", + "시간": "12:22:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2152, + "역명": "남포", + "시간": "13:41:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1183, + "역명": "남포", + "시간": "15:18:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2206, + "역명": "남포", + "시간": "16:41:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1247, + "역명": "남포", + "시간": "18:16:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2272, + "역명": "남포", + "시간": "19:36:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1317, + "역명": "남포", + "시간": "21:15:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2326, + "역명": "남포", + "시간": "22:33:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 18, + "열번": 7931, + "역명": "남포", + "시간": "00:16:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 19, + "열번": 1011, + "역명": "남포", + "시간": "06:45:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2038, + "역명": "남포", + "시간": "08:06:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1079, + "역명": "남포", + "시간": "09:41:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2102, + "역명": "남포", + "시간": "10:59:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1133, + "역명": "남포", + "시간": "12:35:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2156, + "역명": "남포", + "시간": "13:54:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1187, + "역명": "남포", + "시간": "15:31:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2210, + "역명": "남포", + "시간": "16:51:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1253, + "역명": "남포", + "시간": "18:28:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2278, + "역명": "남포", + "시간": "19:51:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2034, + "역명": "남포", + "시간": "07:57:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 20, + "열번": 1077, + "역명": "남포", + "시간": "09:35:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 21, + "열번": 1013, + "역명": "남포", + "시간": "06:56:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2042, + "역명": "남포", + "시간": "08:15:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1083, + "역명": "남포", + "시간": "09:53:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2106, + "역명": "남포", + "시간": "11:12:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1137, + "역명": "남포", + "시간": "12:48:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2160, + "역명": "남포", + "시간": "14:07:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1191, + "역명": "남포", + "시간": "15:44:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2214, + "역명": "남포", + "시간": "17:01:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1257, + "역명": "남포", + "시간": "18:36:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2280, + "역명": "남포", + "시간": "19:56:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1321, + "역명": "남포", + "시간": "21:31:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2330, + "역명": "남포", + "시간": "22:55:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2040, + "역명": "남포", + "시간": "08:11:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1081, + "역명": "남포", + "시간": "09:47:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2104, + "역명": "남포", + "시간": "11:05:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1135, + "역명": "남포", + "시간": "12:42:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2158, + "역명": "남포", + "시간": "14:01:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1189, + "역명": "남포", + "시간": "15:37:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2212, + "역명": "남포", + "시간": "16:56:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1255, + "역명": "남포", + "시간": "18:32:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2044, + "역명": "남포", + "시간": "08:20:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "남포", + "시간": "08:29:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1087, + "역명": "남포", + "시간": "10:06:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2110, + "역명": "남포", + "시간": "11:25:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1141, + "역명": "남포", + "시간": "13:01:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2164, + "역명": "남포", + "시간": "14:20:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1195, + "역명": "남포", + "시간": "15:57:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2218, + "역명": "남포", + "시간": "17:16:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1265, + "역명": "남포", + "시간": "18:52:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 24, + "열번": 2286, + "역명": "남포", + "시간": "20:14:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "남포", + "시간": "07:24:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2054, + "역명": "남포", + "시간": "08:42:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1091, + "역명": "남포", + "시간": "10:19:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2114, + "역명": "남포", + "시간": "11:38:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1145, + "역명": "남포", + "시간": "13:14:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2168, + "역명": "남포", + "시간": "14:33:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1199, + "역명": "남포", + "시간": "16:10:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2222, + "역명": "남포", + "시간": "17:29:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1271, + "역명": "남포", + "시간": "19:04:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2290, + "역명": "남포", + "시간": "20:26:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1329, + "역명": "남포", + "시간": "22:03:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2336, + "역명": "남포", + "시간": "23:30:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2052, + "역명": "남포", + "시간": "08:38:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1089, + "역명": "남포", + "시간": "10:12:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2112, + "역명": "남포", + "시간": "11:31:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1143, + "역명": "남포", + "시간": "13:08:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2166, + "역명": "남포", + "시간": "14:27:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1197, + "역명": "남포", + "시간": "16:03:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2220, + "역명": "남포", + "시간": "17:25:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1269, + "역명": "남포", + "시간": "19:00:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2288, + "역명": "남포", + "시간": "20:20:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1327, + "역명": "남포", + "시간": "21:55:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 26, + "열번": 2334, + "역명": "남포", + "시간": "23:19:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1023, + "역명": "남포", + "시간": "07:39:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 27, + "열번": 2060, + "역명": "남포", + "시간": "08:57:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2056, + "역명": "남포", + "시간": "08:47:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1093, + "역명": "남포", + "시간": "10:25:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2116, + "역명": "남포", + "시간": "11:44:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1147, + "역명": "남포", + "시간": "13:21:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2170, + "역명": "남포", + "시간": "14:40:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1201, + "역명": "남포", + "시간": "16:16:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2224, + "역명": "남포", + "시간": "17:37:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1275, + "역명": "남포", + "시간": "19:12:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2292, + "역명": "남포", + "시간": "20:32:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1331, + "역명": "남포", + "시간": "22:12:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1027, + "역명": "남포", + "시간": "07:49:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2064, + "역명": "남포", + "시간": "09:07:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1099, + "역명": "남포", + "시간": "10:45:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2122, + "역명": "남포", + "시간": "12:04:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1153, + "역명": "남포", + "시간": "13:40:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2176, + "역명": "남포", + "시간": "14:59:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1207, + "역명": "남포", + "시간": "16:34:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2230, + "역명": "남포", + "시간": "17:53:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1283, + "역명": "남포", + "시간": "19:28:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 29, + "열번": 2298, + "역명": "남포", + "시간": "20:50:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1037, + "역명": "남포", + "시간": "08:12:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1031, + "역명": "남포", + "시간": "07:59:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2068, + "역명": "남포", + "시간": "09:17:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1101, + "역명": "남포", + "시간": "10:51:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2124, + "역명": "남포", + "시간": "12:10:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1155, + "역명": "남포", + "시간": "13:47:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2178, + "역명": "남포", + "시간": "15:06:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1209, + "역명": "남포", + "시간": "16:40:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2232, + "역명": "남포", + "시간": "18:01:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1287, + "역명": "남포", + "시간": "19:36:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2300, + "역명": "남포", + "시간": "20:56:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1335, + "역명": "남포", + "시간": "22:32:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 32, + "열번": 1049, + "역명": "남포", + "시간": "08:36:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1035, + "역명": "남포", + "시간": "08:08:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2072, + "역명": "남포", + "시간": "09:28:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1105, + "역명": "남포", + "시간": "11:04:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2128, + "역명": "남포", + "시간": "12:23:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1159, + "역명": "남포", + "시간": "14:00:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2182, + "역명": "남포", + "시간": "15:19:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1215, + "역명": "남포", + "시간": "16:58:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2238, + "역명": "남포", + "시간": "18:17:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1295, + "역명": "남포", + "시간": "19:54:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2306, + "역명": "남포", + "시간": "21:14:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 33, + "열번": 1339, + "역명": "남포", + "시간": "22:52:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 34, + "열번": 1061, + "역명": "남포", + "시간": "09:00:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1041, + "역명": "남포", + "시간": "08:20:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2076, + "역명": "남포", + "시간": "09:40:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1109, + "역명": "남포", + "시간": "11:17:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2132, + "역명": "남포", + "시간": "12:36:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1163, + "역명": "남포", + "시간": "14:13:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2186, + "역명": "남포", + "시간": "15:32:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1219, + "역명": "남포", + "시간": "17:08:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 35, + "열번": 2242, + "역명": "남포", + "시간": "18:25:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 36, + "열번": 8904, + "역명": "남포", + "시간": "16:35:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1245, + "역명": "남포", + "시간": "18:12:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 36, + "열번": 2270, + "역명": "남포", + "시간": "19:31:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1315, + "역명": "남포", + "시간": "21:07:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1043, + "역명": "남포", + "시간": "08:24:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2078, + "역명": "남포", + "시간": "09:46:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1111, + "역명": "남포", + "시간": "11:24:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2134, + "역명": "남포", + "시간": "12:43:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1165, + "역명": "남포", + "시간": "14:19:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2188, + "역명": "남포", + "시간": "15:38:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1221, + "역명": "남포", + "시간": "17:13:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 37, + "열번": 2246, + "역명": "남포", + "시간": "18:33:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 38, + "열번": 8906, + "역명": "남포", + "시간": "17:06:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 38, + "열번": 1259, + "역명": "남포", + "시간": "18:40:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 39, + "열번": 1047, + "역명": "남포", + "시간": "08:32:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2080, + "역명": "남포", + "시간": "09:52:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1113, + "역명": "남포", + "시간": "11:30:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2136, + "역명": "남포", + "시간": "12:49:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1167, + "역명": "남포", + "시간": "14:26:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2190, + "역명": "남포", + "시간": "15:45:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1225, + "역명": "남포", + "시간": "17:23:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 39, + "열번": 2250, + "역명": "남포", + "시간": "18:41:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 40, + "열번": 8908, + "역명": "남포", + "시간": "17:21:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 40, + "열번": 1267, + "역명": "남포", + "시간": "18:56:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 41, + "열번": 1053, + "역명": "남포", + "시간": "08:44:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2084, + "역명": "남포", + "시간": "10:04:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1117, + "역명": "남포", + "시간": "11:43:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2140, + "역명": "남포", + "시간": "13:02:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1171, + "역명": "남포", + "시간": "14:39:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2194, + "역명": "남포", + "시간": "15:58:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1229, + "역명": "남포", + "시간": "17:33:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2254, + "역명": "남포", + "시간": "18:51:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1305, + "역명": "남포", + "시간": "20:27:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2316, + "역명": "남포", + "시간": "21:45:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1345, + "역명": "남포", + "시간": "23:24:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 42, + "열번": 8910, + "역명": "남포", + "시간": "17:33:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 42, + "열번": 1273, + "역명": "남포", + "시간": "19:08:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 43, + "열번": 1057, + "역명": "남포", + "시간": "08:52:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2086, + "역명": "남포", + "시간": "10:10:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1119, + "역명": "남포", + "시간": "11:50:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2142, + "역명": "남포", + "시간": "13:09:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1173, + "역명": "남포", + "시간": "14:45:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2196, + "역명": "남포", + "시간": "16:04:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1233, + "역명": "남포", + "시간": "17:43:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2258, + "역명": "남포", + "시간": "19:01:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1307, + "역명": "남포", + "시간": "20:35:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 43, + "열번": 2318, + "역명": "남포", + "시간": "21:53:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 44, + "열번": 8912, + "역명": "남포", + "시간": "17:45:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 44, + "열번": 1279, + "역명": "남포", + "시간": "19:20:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 45, + "열번": 1069, + "역명": "남포", + "시간": "09:16:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2094, + "역명": "남포", + "시간": "10:34:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1125, + "역명": "남포", + "시간": "12:09:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2148, + "역명": "남포", + "시간": "13:28:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1179, + "역명": "남포", + "시간": "15:05:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2202, + "역명": "남포", + "시간": "16:23:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1239, + "역명": "남포", + "시간": "17:58:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2264, + "역명": "남포", + "시간": "19:16:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1311, + "역명": "남포", + "시간": "20:51:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2322, + "역명": "남포", + "시간": "22:13:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 45, + "열번": 1349, + "역명": "남포", + "시간": "23:48:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 46, + "열번": 8914, + "역명": "남포", + "시간": "17:57:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 46, + "열번": 1285, + "역명": "남포", + "시간": "19:32:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 47, + "열번": 1211, + "역명": "남포", + "시간": "16:46:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 47, + "열번": 2234, + "역명": "남포", + "시간": "18:05:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 47, + "열번": 1289, + "역명": "남포", + "시간": "19:40:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 47, + "열번": 2302, + "역명": "남포", + "시간": "21:02:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 48, + "열번": 8916, + "역명": "남포", + "시간": "18:09:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 48, + "열번": 1291, + "역명": "남포", + "시간": "19:44:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 49, + "열번": 1223, + "역명": "남포", + "시간": "17:18:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 49, + "열번": 2248, + "역명": "남포", + "시간": "18:37:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 49, + "열번": 1301, + "역명": "남포", + "시간": "20:11:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 49, + "열번": 2312, + "역명": "남포", + "시간": "21:32:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 50, + "열번": 2244, + "역명": "남포", + "시간": "18:29:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 50, + "열번": 1299, + "역명": "남포", + "시간": "20:04:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 50, + "열번": 2310, + "역명": "남포", + "시간": "21:26:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 50, + "열번": 1341, + "역명": "남포", + "시간": "23:02:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 51, + "열번": 1231, + "역명": "남포", + "시간": "17:38:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 51, + "열번": 2256, + "역명": "남포", + "시간": "18:56:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 52, + "열번": 6906, + "역명": "남포", + "시간": "09:55:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 52, + "열번": 5905, + "역명": "남포", + "시간": "11:33:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 53, + "열번": 1243, + "역명": "남포", + "시간": "18:08:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 53, + "열번": 2268, + "역명": "남포", + "시간": "19:26:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 54, + "열번": 6910, + "역명": "남포", + "시간": "13:38:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 54, + "열번": 5907, + "역명": "남포", + "시간": "15:14:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 55, + "열번": 1251, + "역명": "남포", + "시간": "18:24:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 55, + "열번": 2276, + "역명": "남포", + "시간": "19:46:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 55, + "열번": 1319, + "역명": "남포", + "시간": "21:23:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 55, + "열번": 2328, + "역명": "남포", + "시간": "22:43:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 57, + "열번": 1263, + "역명": "남포", + "시간": "18:48:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 57, + "열번": 2284, + "역명": "남포", + "시간": "20:08:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 57, + "열번": 1325, + "역명": "남포", + "시간": "21:47:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 57, + "열번": 2332, + "역명": "남포", + "시간": "23:07:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 59, + "열번": 5901, + "역명": "남포", + "시간": "10:41:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 59, + "열번": 6902, + "역명": "남포", + "시간": "12:00:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 61, + "열번": 5903, + "역명": "남포", + "시간": "14:09:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 61, + "열번": 5904, + "역명": "남포", + "시간": "15:28:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "자갈치", + "시간": "05:37:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "자갈치", + "시간": "07:16:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2050, + "역명": "자갈치", + "시간": "08:32:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "자갈치", + "시간": "05:21:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "자갈치", + "시간": "07:07:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "자갈치", + "시간": "08:23:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1085, + "역명": "자갈치", + "시간": "10:01:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2108, + "역명": "자갈치", + "시간": "11:17:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1139, + "역명": "자갈치", + "시간": "12:56:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2162, + "역명": "자갈치", + "시간": "14:12:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1193, + "역명": "자갈치", + "시간": "15:52:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2216, + "역명": "자갈치", + "시간": "17:09:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1261, + "역명": "자갈치", + "시간": "18:46:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2282, + "역명": "자갈치", + "시간": "20:00:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1323, + "역명": "자갈치", + "시간": "21:41:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "자갈치", + "시간": "05:50:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "자갈치", + "시간": "07:34:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2058, + "역명": "자갈치", + "시간": "08:50:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1095, + "역명": "자갈치", + "시간": "10:33:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2118, + "역명": "자갈치", + "시간": "11:49:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1149, + "역명": "자갈치", + "시간": "13:29:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2172, + "역명": "자갈치", + "시간": "14:45:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1203, + "역명": "자갈치", + "시간": "16:24:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2226, + "역명": "자갈치", + "시간": "17:39:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1277, + "역명": "자갈치", + "시간": "19:18:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2294, + "역명": "자갈치", + "시간": "20:36:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "자갈치", + "시간": "06:03:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1025, + "역명": "자갈치", + "시간": "07:46:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2062, + "역명": "자갈치", + "시간": "09:00:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1097, + "역명": "자갈치", + "시간": "10:40:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2120, + "역명": "자갈치", + "시간": "11:56:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1151, + "역명": "자갈치", + "시간": "13:35:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2174, + "역명": "자갈치", + "시간": "14:51:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1205, + "역명": "자갈치", + "시간": "16:30:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2228, + "역명": "자갈치", + "시간": "17:47:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1281, + "역명": "자갈치", + "시간": "19:26:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2296, + "역명": "자갈치", + "시간": "20:42:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1333, + "역명": "자갈치", + "시간": "22:24:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2338, + "역명": "자갈치", + "시간": "23:43:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2008, + "역명": "자갈치", + "시간": "06:15:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1029, + "역명": "자갈치", + "시간": "07:56:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2066, + "역명": "자갈치", + "시간": "09:10:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2010, + "역명": "자갈치", + "시간": "06:27:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1033, + "역명": "자갈치", + "시간": "08:06:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2070, + "역명": "자갈치", + "시간": "09:20:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1103, + "역명": "자갈치", + "시간": "10:59:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2126, + "역명": "자갈치", + "시간": "12:15:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1157, + "역명": "자갈치", + "시간": "13:55:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2180, + "역명": "자갈치", + "시간": "15:11:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1213, + "역명": "자갈치", + "시간": "16:54:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2236, + "역명": "자갈치", + "시간": "18:11:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1293, + "역명": "자갈치", + "시간": "19:51:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2304, + "역명": "자갈치", + "시간": "21:06:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1337, + "역명": "자갈치", + "시간": "22:44:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1003, + "역명": "자갈치", + "시간": "06:02:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2020, + "역명": "자갈치", + "시간": "07:19:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1059, + "역명": "자갈치", + "시간": "08:58:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2088, + "역명": "자갈치", + "시간": "10:14:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1121, + "역명": "자갈치", + "시간": "11:58:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2144, + "역명": "자갈치", + "시간": "13:14:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1175, + "역명": "자갈치", + "시간": "14:53:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2198, + "역명": "자갈치", + "시간": "16:09:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1235, + "역명": "자갈치", + "시간": "17:50:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2260, + "역명": "자갈치", + "시간": "19:04:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1309, + "역명": "자갈치", + "시간": "20:45:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2320, + "역명": "자갈치", + "시간": "22:01:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1347, + "역명": "자갈치", + "시간": "23:38:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2012, + "역명": "자갈치", + "시간": "06:39:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1039, + "역명": "자갈치", + "시간": "08:18:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2074, + "역명": "자갈치", + "시간": "09:32:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1107, + "역명": "자갈치", + "시간": "11:12:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2130, + "역명": "자갈치", + "시간": "12:28:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1161, + "역명": "자갈치", + "시간": "14:08:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2184, + "역명": "자갈치", + "시간": "15:24:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1217, + "역명": "자갈치", + "시간": "17:05:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2240, + "역명": "자갈치", + "시간": "18:19:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1297, + "역명": "자갈치", + "시간": "20:01:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 8, + "열번": 2308, + "역명": "자갈치", + "시간": "21:18:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 9, + "열번": 2022, + "역명": "자갈치", + "시간": "07:25:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1063, + "역명": "자갈치", + "시간": "09:06:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 9, + "열번": 2090, + "역명": "자갈치", + "시간": "10:20:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2014, + "역명": "자갈치", + "시간": "06:51:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1045, + "역명": "자갈치", + "시간": "08:30:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 11, + "열번": 1005, + "역명": "자갈치", + "시간": "06:13:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2024, + "역명": "자갈치", + "시간": "07:31:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1065, + "역명": "자갈치", + "시간": "09:10:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2092, + "역명": "자갈치", + "시간": "10:26:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1123, + "역명": "자갈치", + "시간": "12:04:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2146, + "역명": "자갈치", + "시간": "13:20:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1177, + "역명": "자갈치", + "시간": "15:00:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2200, + "역명": "자갈치", + "시간": "16:15:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1237, + "역명": "자갈치", + "시간": "17:55:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 11, + "열번": 2262, + "역명": "자갈치", + "시간": "19:09:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2016, + "역명": "자갈치", + "시간": "07:02:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1051, + "역명": "자갈치", + "시간": "08:42:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2082, + "역명": "자갈치", + "시간": "09:56:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1115, + "역명": "자갈치", + "시간": "11:38:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2138, + "역명": "자갈치", + "시간": "12:54:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1169, + "역명": "자갈치", + "시간": "14:34:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "자갈치", + "시간": "15:50:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1227, + "역명": "자갈치", + "시간": "17:30:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2252, + "역명": "자갈치", + "시간": "18:44:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1303, + "역명": "자갈치", + "시간": "20:21:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2314, + "역명": "자갈치", + "시간": "21:36:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1343, + "역명": "자갈치", + "시간": "23:15:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1007, + "역명": "자갈치", + "시간": "06:24:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2028, + "역명": "자갈치", + "시간": "07:42:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1071, + "역명": "자갈치", + "시간": "09:22:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2096, + "역명": "자갈치", + "시간": "10:38:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1127, + "역명": "자갈치", + "시간": "12:17:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2150, + "역명": "자갈치", + "시간": "13:33:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1181, + "역명": "자갈치", + "시간": "15:13:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2204, + "역명": "자갈치", + "시간": "16:27:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1241, + "역명": "자갈치", + "시간": "18:05:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2266, + "역명": "자갈치", + "시간": "19:19:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1313, + "역명": "자갈치", + "시간": "21:01:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2324, + "역명": "자갈치", + "시간": "22:21:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 13, + "열번": 1351, + "역명": "자갈치", + "시간": "00:01:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 14, + "열번": 1001, + "역명": "자갈치", + "시간": "05:54:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2018, + "역명": "자갈치", + "시간": "07:11:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1055, + "역명": "자갈치", + "시간": "08:50:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1009, + "역명": "자갈치", + "시간": "06:35:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2032, + "역명": "자갈치", + "시간": "07:51:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1075, + "역명": "자갈치", + "시간": "09:31:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2100, + "역명": "자갈치", + "시간": "10:51:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1131, + "역명": "자갈치", + "시간": "12:30:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2154, + "역명": "자갈치", + "시간": "13:46:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1185, + "역명": "자갈치", + "시간": "15:26:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2208, + "역명": "자갈치", + "시간": "16:44:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1249, + "역명": "자갈치", + "시간": "18:22:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2274, + "역명": "자갈치", + "시간": "19:39:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2026, + "역명": "자갈치", + "시간": "07:37:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1067, + "역명": "자갈치", + "시간": "09:14:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2036, + "역명": "자갈치", + "시간": "08:00:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2030, + "역명": "자갈치", + "시간": "07:47:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1073, + "역명": "자갈치", + "시간": "09:26:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2098, + "역명": "자갈치", + "시간": "10:44:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1129, + "역명": "자갈치", + "시간": "12:24:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2152, + "역명": "자갈치", + "시간": "13:40:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1183, + "역명": "자갈치", + "시간": "15:19:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2206, + "역명": "자갈치", + "시간": "16:39:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1247, + "역명": "자갈치", + "시간": "18:18:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2272, + "역명": "자갈치", + "시간": "19:34:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1317, + "역명": "자갈치", + "시간": "21:17:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2326, + "역명": "자갈치", + "시간": "22:31:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 18, + "열번": 7931, + "역명": "자갈치", + "시간": "00:17:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 19, + "열번": 1011, + "역명": "자갈치", + "시간": "06:46:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2038, + "역명": "자갈치", + "시간": "08:05:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1079, + "역명": "자갈치", + "시간": "09:42:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2102, + "역명": "자갈치", + "시간": "10:57:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1133, + "역명": "자갈치", + "시간": "12:37:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2156, + "역명": "자갈치", + "시간": "13:53:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1187, + "역명": "자갈치", + "시간": "15:32:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2210, + "역명": "자갈치", + "시간": "16:49:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1253, + "역명": "자갈치", + "시간": "18:30:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2278, + "역명": "자갈치", + "시간": "19:49:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2034, + "역명": "자갈치", + "시간": "07:56:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 20, + "열번": 1077, + "역명": "자갈치", + "시간": "09:36:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 21, + "열번": 1013, + "역명": "자갈치", + "시간": "06:57:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2042, + "역명": "자갈치", + "시간": "08:14:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1083, + "역명": "자갈치", + "시간": "09:54:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2106, + "역명": "자갈치", + "시간": "11:10:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1137, + "역명": "자갈치", + "시간": "12:50:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2160, + "역명": "자갈치", + "시간": "14:06:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1191, + "역명": "자갈치", + "시간": "15:45:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2214, + "역명": "자갈치", + "시간": "16:59:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1257, + "역명": "자갈치", + "시간": "18:38:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2280, + "역명": "자갈치", + "시간": "19:54:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1321, + "역명": "자갈치", + "시간": "21:33:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2330, + "역명": "자갈치", + "시간": "22:53:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2040, + "역명": "자갈치", + "시간": "08:09:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1081, + "역명": "자갈치", + "시간": "09:48:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2104, + "역명": "자갈치", + "시간": "11:04:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1135, + "역명": "자갈치", + "시간": "12:43:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2158, + "역명": "자갈치", + "시간": "13:59:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1189, + "역명": "자갈치", + "시간": "15:39:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2212, + "역명": "자갈치", + "시간": "16:54:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1255, + "역명": "자갈치", + "시간": "18:34:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2044, + "역명": "자갈치", + "시간": "08:18:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "자갈치", + "시간": "08:27:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1087, + "역명": "자갈치", + "시간": "10:07:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2110, + "역명": "자갈치", + "시간": "11:23:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1141, + "역명": "자갈치", + "시간": "13:03:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2164, + "역명": "자갈치", + "시간": "14:19:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1195, + "역명": "자갈치", + "시간": "15:58:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2218, + "역명": "자갈치", + "시간": "17:14:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1265, + "역명": "자갈치", + "시간": "18:54:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 24, + "열번": 2286, + "역명": "자갈치", + "시간": "20:12:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "자갈치", + "시간": "07:25:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2054, + "역명": "자갈치", + "시간": "08:41:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1091, + "역명": "자갈치", + "시간": "10:20:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2114, + "역명": "자갈치", + "시간": "11:36:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1145, + "역명": "자갈치", + "시간": "13:16:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2168, + "역명": "자갈치", + "시간": "14:32:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1199, + "역명": "자갈치", + "시간": "16:11:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2222, + "역명": "자갈치", + "시간": "17:27:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1271, + "역명": "자갈치", + "시간": "19:06:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2290, + "역명": "자갈치", + "시간": "20:24:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1329, + "역명": "자갈치", + "시간": "22:05:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2336, + "역명": "자갈치", + "시간": "23:28:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2052, + "역명": "자갈치", + "시간": "08:36:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1089, + "역명": "자갈치", + "시간": "10:14:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2112, + "역명": "자갈치", + "시간": "11:30:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1143, + "역명": "자갈치", + "시간": "13:09:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2166, + "역명": "자갈치", + "시간": "14:25:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1197, + "역명": "자갈치", + "시간": "16:05:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2220, + "역명": "자갈치", + "시간": "17:23:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1269, + "역명": "자갈치", + "시간": "19:02:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2288, + "역명": "자갈치", + "시간": "20:18:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1327, + "역명": "자갈치", + "시간": "21:57:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 26, + "열번": 2334, + "역명": "자갈치", + "시간": "23:17:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1023, + "역명": "자갈치", + "시간": "07:41:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 27, + "열번": 2060, + "역명": "자갈치", + "시간": "08:55:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2056, + "역명": "자갈치", + "시간": "08:45:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1093, + "역명": "자갈치", + "시간": "10:27:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2116, + "역명": "자갈치", + "시간": "11:43:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1147, + "역명": "자갈치", + "시간": "13:22:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2170, + "역명": "자갈치", + "시간": "14:38:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1201, + "역명": "자갈치", + "시간": "16:18:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2224, + "역명": "자갈치", + "시간": "17:35:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1275, + "역명": "자갈치", + "시간": "19:14:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2292, + "역명": "자갈치", + "시간": "20:30:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1331, + "역명": "자갈치", + "시간": "22:14:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1027, + "역명": "자갈치", + "시간": "07:51:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2064, + "역명": "자갈치", + "시간": "09:05:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1099, + "역명": "자갈치", + "시간": "10:46:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2122, + "역명": "자갈치", + "시간": "12:02:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1153, + "역명": "자갈치", + "시간": "13:42:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2176, + "역명": "자갈치", + "시간": "14:58:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1207, + "역명": "자갈치", + "시간": "16:36:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2230, + "역명": "자갈치", + "시간": "17:51:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1283, + "역명": "자갈치", + "시간": "19:30:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 29, + "열번": 2298, + "역명": "자갈치", + "시간": "20:48:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1037, + "역명": "자갈치", + "시간": "08:14:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1031, + "역명": "자갈치", + "시간": "08:01:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2068, + "역명": "자갈치", + "시간": "09:15:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1101, + "역명": "자갈치", + "시간": "10:53:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2124, + "역명": "자갈치", + "시간": "12:09:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1155, + "역명": "자갈치", + "시간": "13:48:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2178, + "역명": "자갈치", + "시간": "15:04:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1209, + "역명": "자갈치", + "시간": "16:42:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2232, + "역명": "자갈치", + "시간": "17:59:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1287, + "역명": "자갈치", + "시간": "19:38:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2300, + "역명": "자갈치", + "시간": "20:54:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1335, + "역명": "자갈치", + "시간": "22:34:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 32, + "열번": 1049, + "역명": "자갈치", + "시간": "08:38:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1035, + "역명": "자갈치", + "시간": "08:10:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2072, + "역명": "자갈치", + "시간": "09:26:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1105, + "역명": "자갈치", + "시간": "11:06:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2128, + "역명": "자갈치", + "시간": "12:22:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1159, + "역명": "자갈치", + "시간": "14:01:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2182, + "역명": "자갈치", + "시간": "15:17:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1215, + "역명": "자갈치", + "시간": "17:00:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2238, + "역명": "자갈치", + "시간": "18:15:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1295, + "역명": "자갈치", + "시간": "19:56:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2306, + "역명": "자갈치", + "시간": "21:12:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 33, + "열번": 1339, + "역명": "자갈치", + "시간": "22:54:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 34, + "열번": 1061, + "역명": "자갈치", + "시간": "09:02:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1041, + "역명": "자갈치", + "시간": "08:22:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2076, + "역명": "자갈치", + "시간": "09:38:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1109, + "역명": "자갈치", + "시간": "11:19:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2132, + "역명": "자갈치", + "시간": "12:35:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1163, + "역명": "자갈치", + "시간": "14:14:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2186, + "역명": "자갈치", + "시간": "15:30:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1219, + "역명": "자갈치", + "시간": "17:10:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 35, + "열번": 2242, + "역명": "자갈치", + "시간": "18:23:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 36, + "열번": 8904, + "역명": "자갈치", + "시간": "16:33:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1245, + "역명": "자갈치", + "시간": "18:14:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 36, + "열번": 2270, + "역명": "자갈치", + "시간": "19:29:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1315, + "역명": "자갈치", + "시간": "21:09:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1043, + "역명": "자갈치", + "시간": "08:26:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2078, + "역명": "자갈치", + "시간": "09:44:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1111, + "역명": "자갈치", + "시간": "11:25:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2134, + "역명": "자갈치", + "시간": "12:41:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1165, + "역명": "자갈치", + "시간": "14:21:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2188, + "역명": "자갈치", + "시간": "15:37:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1221, + "역명": "자갈치", + "시간": "17:15:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 37, + "열번": 2246, + "역명": "자갈치", + "시간": "18:31:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 38, + "열번": 8906, + "역명": "자갈치", + "시간": "17:04:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 38, + "열번": 1259, + "역명": "자갈치", + "시간": "18:42:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 39, + "열번": 1047, + "역명": "자갈치", + "시간": "08:34:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2080, + "역명": "자갈치", + "시간": "09:50:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1113, + "역명": "자갈치", + "시간": "11:32:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2136, + "역명": "자갈치", + "시간": "12:48:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1167, + "역명": "자갈치", + "시간": "14:27:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2190, + "역명": "자갈치", + "시간": "15:43:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1225, + "역명": "자갈치", + "시간": "17:25:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 39, + "열번": 2250, + "역명": "자갈치", + "시간": "18:39:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 40, + "열번": 8908, + "역명": "자갈치", + "시간": "17:19:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 40, + "열번": 1267, + "역명": "자갈치", + "시간": "18:58:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 41, + "열번": 1053, + "역명": "자갈치", + "시간": "08:46:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2084, + "역명": "자갈치", + "시간": "10:02:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1117, + "역명": "자갈치", + "시간": "11:45:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2140, + "역명": "자갈치", + "시간": "13:01:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1171, + "역명": "자갈치", + "시간": "14:40:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2194, + "역명": "자갈치", + "시간": "15:56:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1229, + "역명": "자갈치", + "시간": "17:35:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2254, + "역명": "자갈치", + "시간": "18:49:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1305, + "역명": "자갈치", + "시간": "20:29:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2316, + "역명": "자갈치", + "시간": "21:43:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1345, + "역명": "자갈치", + "시간": "23:26:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 42, + "열번": 8910, + "역명": "자갈치", + "시간": "17:31:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 42, + "열번": 1273, + "역명": "자갈치", + "시간": "19:10:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 43, + "열번": 1057, + "역명": "자갈치", + "시간": "08:54:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2086, + "역명": "자갈치", + "시간": "10:08:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1119, + "역명": "자갈치", + "시간": "11:51:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2142, + "역명": "자갈치", + "시간": "13:07:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1173, + "역명": "자갈치", + "시간": "14:47:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2196, + "역명": "자갈치", + "시간": "16:03:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1233, + "역명": "자갈치", + "시간": "17:45:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2258, + "역명": "자갈치", + "시간": "18:59:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1307, + "역명": "자갈치", + "시간": "20:37:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 43, + "열번": 2318, + "역명": "자갈치", + "시간": "21:51:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 44, + "열번": 8912, + "역명": "자갈치", + "시간": "17:43:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 44, + "열번": 1279, + "역명": "자갈치", + "시간": "19:22:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 45, + "열번": 1069, + "역명": "자갈치", + "시간": "09:18:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2094, + "역명": "자갈치", + "시간": "10:32:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1125, + "역명": "자갈치", + "시간": "12:11:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2148, + "역명": "자갈치", + "시간": "13:27:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1179, + "역명": "자갈치", + "시간": "15:06:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2202, + "역명": "자갈치", + "시간": "16:21:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1239, + "역명": "자갈치", + "시간": "18:00:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2264, + "역명": "자갈치", + "시간": "19:14:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1311, + "역명": "자갈치", + "시간": "20:53:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2322, + "역명": "자갈치", + "시간": "22:11:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 45, + "열번": 1349, + "역명": "자갈치", + "시간": "23:50:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 46, + "열번": 8914, + "역명": "자갈치", + "시간": "17:55:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 46, + "열번": 1285, + "역명": "자갈치", + "시간": "19:34:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 47, + "열번": 1211, + "역명": "자갈치", + "시간": "16:48:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 47, + "열번": 2234, + "역명": "자갈치", + "시간": "18:03:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 47, + "열번": 1289, + "역명": "자갈치", + "시간": "19:42:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 47, + "열번": 2302, + "역명": "자갈치", + "시간": "21:00:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 48, + "열번": 8916, + "역명": "자갈치", + "시간": "18:07:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 48, + "열번": 1291, + "역명": "자갈치", + "시간": "19:46:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 49, + "열번": 1223, + "역명": "자갈치", + "시간": "17:20:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 49, + "열번": 2248, + "역명": "자갈치", + "시간": "18:35:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 49, + "열번": 1301, + "역명": "자갈치", + "시간": "20:13:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 49, + "열번": 2312, + "역명": "자갈치", + "시간": "21:30:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 50, + "열번": 2244, + "역명": "자갈치", + "시간": "18:27:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 50, + "열번": 1299, + "역명": "자갈치", + "시간": "20:06:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 50, + "열번": 2310, + "역명": "자갈치", + "시간": "21:24:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 50, + "열번": 1341, + "역명": "자갈치", + "시간": "23:04:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 51, + "열번": 1231, + "역명": "자갈치", + "시간": "17:40:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 51, + "열번": 2256, + "역명": "자갈치", + "시간": "18:54:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 52, + "열번": 6906, + "역명": "자갈치", + "시간": "09:53:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 52, + "열번": 5905, + "역명": "자갈치", + "시간": "11:35:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 53, + "열번": 1243, + "역명": "자갈치", + "시간": "18:10:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 53, + "열번": 2268, + "역명": "자갈치", + "시간": "19:24:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 54, + "열번": 6910, + "역명": "자갈치", + "시간": "13:36:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 54, + "열번": 5907, + "역명": "자갈치", + "시간": "15:16:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 55, + "열번": 1251, + "역명": "자갈치", + "시간": "18:26:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 55, + "열번": 2276, + "역명": "자갈치", + "시간": "19:44:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 55, + "열번": 1319, + "역명": "자갈치", + "시간": "21:25:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 55, + "열번": 2328, + "역명": "자갈치", + "시간": "22:41:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 57, + "열번": 1263, + "역명": "자갈치", + "시간": "18:50:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 57, + "열번": 2284, + "역명": "자갈치", + "시간": "20:06:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 57, + "열번": 1325, + "역명": "자갈치", + "시간": "21:49:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 57, + "열번": 2332, + "역명": "자갈치", + "시간": "23:05:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 59, + "열번": 5901, + "역명": "자갈치", + "시간": "10:43:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 59, + "열번": 6902, + "역명": "자갈치", + "시간": "11:59:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 61, + "열번": 5903, + "역명": "자갈치", + "시간": "14:11:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 61, + "열번": 5904, + "역명": "자갈치", + "시간": "15:27:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "토성", + "시간": "05:34:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "토성", + "시간": "07:19:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2050, + "역명": "토성", + "시간": "08:29:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "토성", + "시간": "05:19:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "토성", + "시간": "07:10:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "토성", + "시간": "08:20:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1085, + "역명": "토성", + "시간": "10:03:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2108, + "역명": "토성", + "시간": "11:14:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1139, + "역명": "토성", + "시간": "12:59:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2162, + "역명": "토성", + "시간": "14:10:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1193, + "역명": "토성", + "시간": "15:54:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2216, + "역명": "토성", + "시간": "17:07:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1261, + "역명": "토성", + "시간": "18:48:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2282, + "역명": "토성", + "시간": "19:58:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1323, + "역명": "토성", + "시간": "21:43:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "토성", + "시간": "05:48:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "토성", + "시간": "07:37:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2058, + "역명": "토성", + "시간": "08:48:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1095, + "역명": "토성", + "시간": "10:36:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2118, + "역명": "토성", + "시간": "11:47:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1149, + "역명": "토성", + "시간": "13:31:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2172, + "역명": "토성", + "시간": "14:42:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1203, + "역명": "토성", + "시간": "16:26:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2226, + "역명": "토성", + "시간": "17:37:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1277, + "역명": "토성", + "시간": "19:20:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2294, + "역명": "토성", + "시간": "20:34:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "토성", + "시간": "06:00:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1025, + "역명": "토성", + "시간": "07:48:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2062, + "역명": "토성", + "시간": "08:58:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1097, + "역명": "토성", + "시간": "10:42:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2120, + "역명": "토성", + "시간": "11:53:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1151, + "역명": "토성", + "시간": "13:38:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2174, + "역명": "토성", + "시간": "14:49:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1205, + "역명": "토성", + "시간": "16:32:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2228, + "역명": "토성", + "시간": "17:45:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1281, + "역명": "토성", + "시간": "19:28:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2296, + "역명": "토성", + "시간": "20:40:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1333, + "역명": "토성", + "시간": "22:26:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2338, + "역명": "토성", + "시간": "23:41:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2008, + "역명": "토성", + "시간": "06:12:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1029, + "역명": "토성", + "시간": "07:58:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2066, + "역명": "토성", + "시간": "09:08:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2010, + "역명": "토성", + "시간": "06:24:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1033, + "역명": "토성", + "시간": "08:08:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2070, + "역명": "토성", + "시간": "09:18:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1103, + "역명": "토성", + "시간": "11:02:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2126, + "역명": "토성", + "시간": "12:13:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1157, + "역명": "토성", + "시간": "13:57:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2180, + "역명": "토성", + "시간": "15:08:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1213, + "역명": "토성", + "시간": "16:56:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2236, + "역명": "토성", + "시간": "18:09:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1293, + "역명": "토성", + "시간": "19:53:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2304, + "역명": "토성", + "시간": "21:04:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1337, + "역명": "토성", + "시간": "22:46:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1003, + "역명": "토성", + "시간": "06:05:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2020, + "역명": "토성", + "시간": "07:17:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1059, + "역명": "토성", + "시간": "09:00:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2088, + "역명": "토성", + "시간": "10:12:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1121, + "역명": "토성", + "시간": "12:00:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2144, + "역명": "토성", + "시간": "13:11:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1175, + "역명": "토성", + "시간": "14:56:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2198, + "역명": "토성", + "시간": "16:07:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1235, + "역명": "토성", + "시간": "17:52:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2260, + "역명": "토성", + "시간": "19:02:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1309, + "역명": "토성", + "시간": "20:47:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2320, + "역명": "토성", + "시간": "21:59:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1347, + "역명": "토성", + "시간": "23:40:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2012, + "역명": "토성", + "시간": "06:36:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1039, + "역명": "토성", + "시간": "08:20:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2074, + "역명": "토성", + "시간": "09:30:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1107, + "역명": "토성", + "시간": "11:15:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2130, + "역명": "토성", + "시간": "12:26:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1161, + "역명": "토성", + "시간": "14:10:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2184, + "역명": "토성", + "시간": "15:21:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1217, + "역명": "토성", + "시간": "17:07:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2240, + "역명": "토성", + "시간": "18:17:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1297, + "역명": "토성", + "시간": "20:03:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 8, + "열번": 2308, + "역명": "토성", + "시간": "21:16:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 9, + "열번": 2022, + "역명": "토성", + "시간": "07:23:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1063, + "역명": "토성", + "시간": "09:08:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 9, + "열번": 2090, + "역명": "토성", + "시간": "10:18:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2014, + "역명": "토성", + "시간": "06:48:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1045, + "역명": "토성", + "시간": "08:32:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 11, + "열번": 1005, + "역명": "토성", + "시간": "06:16:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2024, + "역명": "토성", + "시간": "07:29:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1065, + "역명": "토성", + "시간": "09:12:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2092, + "역명": "토성", + "시간": "10:24:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1123, + "역명": "토성", + "시간": "12:07:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2146, + "역명": "토성", + "시간": "13:18:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1177, + "역명": "토성", + "시간": "15:02:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2200, + "역명": "토성", + "시간": "16:13:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1237, + "역명": "토성", + "시간": "17:57:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 11, + "열번": 2262, + "역명": "토성", + "시간": "19:07:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2016, + "역명": "토성", + "시간": "06:59:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1051, + "역명": "토성", + "시간": "08:44:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2082, + "역명": "토성", + "시간": "09:54:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1115, + "역명": "토성", + "시간": "11:41:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2138, + "역명": "토성", + "시간": "12:52:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1169, + "역명": "토성", + "시간": "14:36:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "토성", + "시간": "15:47:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1227, + "역명": "토성", + "시간": "17:32:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2252, + "역명": "토성", + "시간": "18:42:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1303, + "역명": "토성", + "시간": "20:23:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2314, + "역명": "토성", + "시간": "21:34:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1343, + "역명": "토성", + "시간": "23:17:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1007, + "역명": "토성", + "시간": "06:27:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2028, + "역명": "토성", + "시간": "07:39:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1071, + "역명": "토성", + "시간": "09:24:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2096, + "역명": "토성", + "시간": "10:36:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1127, + "역명": "토성", + "시간": "12:20:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2150, + "역명": "토성", + "시간": "13:31:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1181, + "역명": "토성", + "시간": "15:15:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2204, + "역명": "토성", + "시간": "16:25:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1241, + "역명": "토성", + "시간": "18:07:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2266, + "역명": "토성", + "시간": "19:17:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1313, + "역명": "토성", + "시간": "21:03:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2324, + "역명": "토성", + "시간": "22:19:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 13, + "열번": 1351, + "역명": "토성", + "시간": "00:04:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 14, + "열번": 1001, + "역명": "토성", + "시간": "05:57:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2018, + "역명": "토성", + "시간": "07:08:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1055, + "역명": "토성", + "시간": "08:52:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1009, + "역명": "토성", + "시간": "06:38:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2032, + "역명": "토성", + "시간": "07:49:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1075, + "역명": "토성", + "시간": "09:33:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2100, + "역명": "토성", + "시간": "10:48:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1131, + "역명": "토성", + "시간": "12:33:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2154, + "역명": "토성", + "시간": "13:44:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1185, + "역명": "토성", + "시간": "15:28:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2208, + "역명": "토성", + "시간": "16:42:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1249, + "역명": "토성", + "시간": "18:24:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2274, + "역명": "토성", + "시간": "19:37:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2026, + "역명": "토성", + "시간": "07:34:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1067, + "역명": "토성", + "시간": "09:16:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2036, + "역명": "토성", + "시간": "07:58:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2030, + "역명": "토성", + "시간": "07:44:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1073, + "역명": "토성", + "시간": "09:28:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2098, + "역명": "토성", + "시간": "10:42:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1129, + "역명": "토성", + "시간": "12:26:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2152, + "역명": "토성", + "시간": "13:37:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1183, + "역명": "토성", + "시간": "15:22:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2206, + "역명": "토성", + "시간": "16:37:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1247, + "역명": "토성", + "시간": "18:20:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2272, + "역명": "토성", + "시간": "19:32:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1317, + "역명": "토성", + "시간": "21:19:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2326, + "역명": "토성", + "시간": "22:29:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 18, + "열번": 7931, + "역명": "토성", + "시간": "00:20:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 19, + "열번": 1011, + "역명": "토성", + "시간": "06:49:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2038, + "역명": "토성", + "시간": "08:02:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1079, + "역명": "토성", + "시간": "09:45:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2102, + "역명": "토성", + "시간": "10:55:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1133, + "역명": "토성", + "시간": "12:39:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2156, + "역명": "토성", + "시간": "13:50:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1187, + "역명": "토성", + "시간": "15:35:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2210, + "역명": "토성", + "시간": "16:47:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1253, + "역명": "토성", + "시간": "18:32:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2278, + "역명": "토성", + "시간": "19:47:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2034, + "역명": "토성", + "시간": "07:53:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 20, + "열번": 1077, + "역명": "토성", + "시간": "09:39:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 21, + "열번": 1013, + "역명": "토성", + "시간": "07:00:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2042, + "역명": "토성", + "시간": "08:11:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1083, + "역명": "토성", + "시간": "09:57:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2106, + "역명": "토성", + "시간": "11:08:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1137, + "역명": "토성", + "시간": "12:52:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2160, + "역명": "토성", + "시간": "14:03:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1191, + "역명": "토성", + "시간": "15:48:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2214, + "역명": "토성", + "시간": "16:57:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1257, + "역명": "토성", + "시간": "18:40:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2280, + "역명": "토성", + "시간": "19:52:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1321, + "역명": "토성", + "시간": "21:35:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2330, + "역명": "토성", + "시간": "22:51:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2040, + "역명": "토성", + "시간": "08:07:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1081, + "역명": "토성", + "시간": "09:51:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2104, + "역명": "토성", + "시간": "11:01:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1135, + "역명": "토성", + "시간": "12:46:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2158, + "역명": "토성", + "시간": "13:57:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1189, + "역명": "토성", + "시간": "15:41:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2212, + "역명": "토성", + "시간": "16:52:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1255, + "역명": "토성", + "시간": "18:36:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2044, + "역명": "토성", + "시간": "08:16:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "토성", + "시간": "08:25:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1087, + "역명": "토성", + "시간": "10:10:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2110, + "역명": "토성", + "시간": "11:21:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1141, + "역명": "토성", + "시간": "13:05:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2164, + "역명": "토성", + "시간": "14:16:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1195, + "역명": "토성", + "시간": "16:01:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2218, + "역명": "토성", + "시간": "17:12:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1265, + "역명": "토성", + "시간": "18:56:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 24, + "열번": 2286, + "역명": "토성", + "시간": "20:10:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "토성", + "시간": "07:28:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2054, + "역명": "토성", + "시간": "08:38:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1091, + "역명": "토성", + "시간": "10:23:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2114, + "역명": "토성", + "시간": "11:34:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1145, + "역명": "토성", + "시간": "13:18:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2168, + "역명": "토성", + "시간": "14:29:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1199, + "역명": "토성", + "시간": "16:14:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2222, + "역명": "토성", + "시간": "17:25:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1271, + "역명": "토성", + "시간": "19:08:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2290, + "역명": "토성", + "시간": "20:22:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1329, + "역명": "토성", + "시간": "22:07:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2336, + "역명": "토성", + "시간": "23:26:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2052, + "역명": "토성", + "시간": "08:34:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1089, + "역명": "토성", + "시간": "10:16:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2112, + "역명": "토성", + "시간": "11:27:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1143, + "역명": "토성", + "시간": "13:12:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2166, + "역명": "토성", + "시간": "14:23:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1197, + "역명": "토성", + "시간": "16:07:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2220, + "역명": "토성", + "시간": "17:21:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1269, + "역명": "토성", + "시간": "19:04:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2288, + "역명": "토성", + "시간": "20:16:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1327, + "역명": "토성", + "시간": "21:59:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 26, + "열번": 2334, + "역명": "토성", + "시간": "23:15:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1023, + "역명": "토성", + "시간": "07:43:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 27, + "열번": 2060, + "역명": "토성", + "시간": "08:53:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2056, + "역명": "토성", + "시간": "08:43:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1093, + "역명": "토성", + "시간": "10:29:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2116, + "역명": "토성", + "시간": "11:40:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1147, + "역명": "토성", + "시간": "13:25:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2170, + "역명": "토성", + "시간": "14:36:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1201, + "역명": "토성", + "시간": "16:20:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2224, + "역명": "토성", + "시간": "17:33:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1275, + "역명": "토성", + "시간": "19:16:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2292, + "역명": "토성", + "시간": "20:28:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1331, + "역명": "토성", + "시간": "22:16:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1027, + "역명": "토성", + "시간": "07:53:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2064, + "역명": "토성", + "시간": "09:03:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1099, + "역명": "토성", + "시간": "10:49:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2122, + "역명": "토성", + "시간": "12:00:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1153, + "역명": "토성", + "시간": "13:44:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2176, + "역명": "토성", + "시간": "14:55:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1207, + "역명": "토성", + "시간": "16:38:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2230, + "역명": "토성", + "시간": "17:49:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1283, + "역명": "토성", + "시간": "19:32:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 29, + "열번": 2298, + "역명": "토성", + "시간": "20:46:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1037, + "역명": "토성", + "시간": "08:16:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1031, + "역명": "토성", + "시간": "08:03:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2068, + "역명": "토성", + "시간": "09:13:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1101, + "역명": "토성", + "시간": "10:55:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2124, + "역명": "토성", + "시간": "12:06:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1155, + "역명": "토성", + "시간": "13:51:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2178, + "역명": "토성", + "시간": "15:02:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1209, + "역명": "토성", + "시간": "16:44:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2232, + "역명": "토성", + "시간": "17:57:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1287, + "역명": "토성", + "시간": "19:40:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2300, + "역명": "토성", + "시간": "20:52:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1335, + "역명": "토성", + "시간": "22:36:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 32, + "열번": 1049, + "역명": "토성", + "시간": "08:40:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1035, + "역명": "토성", + "시간": "08:12:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2072, + "역명": "토성", + "시간": "09:24:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1105, + "역명": "토성", + "시간": "11:08:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2128, + "역명": "토성", + "시간": "12:19:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1159, + "역명": "토성", + "시간": "14:04:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2182, + "역명": "토성", + "시간": "15:15:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1215, + "역명": "토성", + "시간": "17:02:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2238, + "역명": "토성", + "시간": "18:13:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1295, + "역명": "토성", + "시간": "19:58:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2306, + "역명": "토성", + "시간": "21:10:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 33, + "열번": 1339, + "역명": "토성", + "시간": "22:56:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 34, + "열번": 1061, + "역명": "토성", + "시간": "09:04:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1041, + "역명": "토성", + "시간": "08:24:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2076, + "역명": "토성", + "시간": "09:36:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1109, + "역명": "토성", + "시간": "11:21:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2132, + "역명": "토성", + "시간": "12:32:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1163, + "역명": "토성", + "시간": "14:17:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2186, + "역명": "토성", + "시간": "15:28:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1219, + "역명": "토성", + "시간": "17:12:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 35, + "열번": 2242, + "역명": "토성", + "시간": "18:21:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 36, + "열번": 8904, + "역명": "토성", + "시간": "16:31:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1245, + "역명": "토성", + "시간": "18:16:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 36, + "열번": 2270, + "역명": "토성", + "시간": "19:27:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1315, + "역명": "토성", + "시간": "21:11:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1043, + "역명": "토성", + "시간": "08:28:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2078, + "역명": "토성", + "시간": "09:42:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1111, + "역명": "토성", + "시간": "11:28:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2134, + "역명": "토성", + "시간": "12:39:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1165, + "역명": "토성", + "시간": "14:23:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2188, + "역명": "토성", + "시간": "15:34:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1221, + "역명": "토성", + "시간": "17:17:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 37, + "열번": 2246, + "역명": "토성", + "시간": "18:29:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 38, + "열번": 8906, + "역명": "토성", + "시간": "17:02:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 38, + "열번": 1259, + "역명": "토성", + "시간": "18:44:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 39, + "열번": 1047, + "역명": "토성", + "시간": "08:36:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2080, + "역명": "토성", + "시간": "09:48:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1113, + "역명": "토성", + "시간": "11:34:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2136, + "역명": "토성", + "시간": "12:45:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1167, + "역명": "토성", + "시간": "14:30:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2190, + "역명": "토성", + "시간": "15:41:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1225, + "역명": "토성", + "시간": "17:27:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 39, + "열번": 2250, + "역명": "토성", + "시간": "18:37:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 40, + "열번": 8908, + "역명": "토성", + "시간": "17:17:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 40, + "열번": 1267, + "역명": "토성", + "시간": "19:00:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 41, + "열번": 1053, + "역명": "토성", + "시간": "08:48:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2084, + "역명": "토성", + "시간": "10:00:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1117, + "역명": "토성", + "시간": "11:47:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2140, + "역명": "토성", + "시간": "12:58:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1171, + "역명": "토성", + "시간": "14:43:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2194, + "역명": "토성", + "시간": "15:54:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1229, + "역명": "토성", + "시간": "17:37:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2254, + "역명": "토성", + "시간": "18:47:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1305, + "역명": "토성", + "시간": "20:31:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2316, + "역명": "토성", + "시간": "21:41:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1345, + "역명": "토성", + "시간": "23:28:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 42, + "열번": 8910, + "역명": "토성", + "시간": "17:29:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 42, + "열번": 1273, + "역명": "토성", + "시간": "19:12:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 43, + "열번": 1057, + "역명": "토성", + "시간": "08:56:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2086, + "역명": "토성", + "시간": "10:06:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1119, + "역명": "토성", + "시간": "11:54:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2142, + "역명": "토성", + "시간": "13:05:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1173, + "역명": "토성", + "시간": "14:49:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2196, + "역명": "토성", + "시간": "16:00:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1233, + "역명": "토성", + "시간": "17:47:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2258, + "역명": "토성", + "시간": "18:57:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1307, + "역명": "토성", + "시간": "20:39:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 43, + "열번": 2318, + "역명": "토성", + "시간": "21:49:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 44, + "열번": 8912, + "역명": "토성", + "시간": "17:41:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 44, + "열번": 1279, + "역명": "토성", + "시간": "19:24:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 45, + "열번": 1069, + "역명": "토성", + "시간": "09:20:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2094, + "역명": "토성", + "시간": "10:30:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1125, + "역명": "토성", + "시간": "12:13:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2148, + "역명": "토성", + "시간": "13:24:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1179, + "역명": "토성", + "시간": "15:09:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2202, + "역명": "토성", + "시간": "16:19:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1239, + "역명": "토성", + "시간": "18:02:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2264, + "역명": "토성", + "시간": "19:12:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1311, + "역명": "토성", + "시간": "20:55:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2322, + "역명": "토성", + "시간": "22:09:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 45, + "열번": 1349, + "역명": "토성", + "시간": "23:52:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 46, + "열번": 8914, + "역명": "토성", + "시간": "17:53:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 46, + "열번": 1285, + "역명": "토성", + "시간": "19:36:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 47, + "열번": 1211, + "역명": "토성", + "시간": "16:50:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 47, + "열번": 2234, + "역명": "토성", + "시간": "18:01:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 47, + "열번": 1289, + "역명": "토성", + "시간": "19:44:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 47, + "열번": 2302, + "역명": "토성", + "시간": "20:58:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 48, + "열번": 8916, + "역명": "토성", + "시간": "18:05:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 48, + "열번": 1291, + "역명": "토성", + "시간": "19:48:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 49, + "열번": 1223, + "역명": "토성", + "시간": "17:22:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 49, + "열번": 2248, + "역명": "토성", + "시간": "18:33:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 49, + "열번": 1301, + "역명": "토성", + "시간": "20:15:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 49, + "열번": 2312, + "역명": "토성", + "시간": "21:28:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 50, + "열번": 2244, + "역명": "토성", + "시간": "18:25:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 50, + "열번": 1299, + "역명": "토성", + "시간": "20:08:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 50, + "열번": 2310, + "역명": "토성", + "시간": "21:22:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 50, + "열번": 1341, + "역명": "토성", + "시간": "23:06:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 51, + "열번": 1231, + "역명": "토성", + "시간": "17:42:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 51, + "열번": 2256, + "역명": "토성", + "시간": "18:52:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 52, + "열번": 6906, + "역명": "토성", + "시간": "09:51:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 52, + "열번": 5905, + "역명": "토성", + "시간": "11:37:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 53, + "열번": 1243, + "역명": "토성", + "시간": "18:12:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 53, + "열번": 2268, + "역명": "토성", + "시간": "19:22:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 54, + "열번": 6910, + "역명": "토성", + "시간": "13:34:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 54, + "열번": 5907, + "역명": "토성", + "시간": "15:18:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 55, + "열번": 1251, + "역명": "토성", + "시간": "18:28:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 55, + "열번": 2276, + "역명": "토성", + "시간": "19:42:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 55, + "열번": 1319, + "역명": "토성", + "시간": "21:27:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 55, + "열번": 2328, + "역명": "토성", + "시간": "22:39:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 57, + "열번": 1263, + "역명": "토성", + "시간": "18:52:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 57, + "열번": 2284, + "역명": "토성", + "시간": "20:04:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 57, + "열번": 1325, + "역명": "토성", + "시간": "21:51:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 57, + "열번": 2332, + "역명": "토성", + "시간": "23:03:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 59, + "열번": 5901, + "역명": "토성", + "시간": "10:45:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 59, + "열번": 6902, + "역명": "토성", + "시간": "11:56:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 61, + "열번": 5903, + "역명": "토성", + "시간": "14:13:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 61, + "열번": 5904, + "역명": "토성", + "시간": "15:24:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "동대신", + "시간": "05:32:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "동대신", + "시간": "07:22:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2050, + "역명": "동대신", + "시간": "08:27:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "동대신", + "시간": "05:16:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "동대신", + "시간": "07:13:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "동대신", + "시간": "08:18:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1085, + "역명": "동대신", + "시간": "10:06:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2108, + "역명": "동대신", + "시간": "11:12:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1139, + "역명": "동대신", + "시간": "13:02:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2162, + "역명": "동대신", + "시간": "14:07:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1193, + "역명": "동대신", + "시간": "15:57:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2216, + "역명": "동대신", + "시간": "17:04:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1261, + "역명": "동대신", + "시간": "18:51:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2282, + "역명": "동대신", + "시간": "19:55:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1323, + "역명": "동대신", + "시간": "21:46:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "동대신", + "시간": "05:45:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "동대신", + "시간": "07:40:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2058, + "역명": "동대신", + "시간": "08:45:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1095, + "역명": "동대신", + "시간": "10:39:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2118, + "역명": "동대신", + "시간": "11:44:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1149, + "역명": "동대신", + "시간": "13:34:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2172, + "역명": "동대신", + "시간": "14:40:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1203, + "역명": "동대신", + "시간": "16:29:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2226, + "역명": "동대신", + "시간": "17:34:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1277, + "역명": "동대신", + "시간": "19:23:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2294, + "역명": "동대신", + "시간": "20:31:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "동대신", + "시간": "05:58:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1025, + "역명": "동대신", + "시간": "07:51:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2062, + "역명": "동대신", + "시간": "08:55:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1097, + "역명": "동대신", + "시간": "10:45:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2120, + "역명": "동대신", + "시간": "11:51:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1151, + "역명": "동대신", + "시간": "13:41:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2174, + "역명": "동대신", + "시간": "14:46:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1205, + "역명": "동대신", + "시간": "16:35:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2228, + "역명": "동대신", + "시간": "17:42:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1281, + "역명": "동대신", + "시간": "19:31:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2296, + "역명": "동대신", + "시간": "20:37:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1333, + "역명": "동대신", + "시간": "22:29:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2338, + "역명": "동대신", + "시간": "23:39:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2008, + "역명": "동대신", + "시간": "06:10:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1029, + "역명": "동대신", + "시간": "08:01:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2066, + "역명": "동대신", + "시간": "09:05:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2010, + "역명": "동대신", + "시간": "06:22:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1033, + "역명": "동대신", + "시간": "08:11:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2070, + "역명": "동대신", + "시간": "09:15:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1103, + "역명": "동대신", + "시간": "11:05:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2126, + "역명": "동대신", + "시간": "12:10:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1157, + "역명": "동대신", + "시간": "14:00:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2180, + "역명": "동대신", + "시간": "15:06:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1213, + "역명": "동대신", + "시간": "16:59:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2236, + "역명": "동대신", + "시간": "18:06:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1293, + "역명": "동대신", + "시간": "19:56:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2304, + "역명": "동대신", + "시간": "21:01:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1337, + "역명": "동대신", + "시간": "22:49:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1003, + "역명": "동대신", + "시간": "06:08:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2020, + "역명": "동대신", + "시간": "07:14:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1059, + "역명": "동대신", + "시간": "09:03:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2088, + "역명": "동대신", + "시간": "10:09:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1121, + "역명": "동대신", + "시간": "12:03:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2144, + "역명": "동대신", + "시간": "13:09:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1175, + "역명": "동대신", + "시간": "14:59:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2198, + "역명": "동대신", + "시간": "16:04:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1235, + "역명": "동대신", + "시간": "17:55:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2260, + "역명": "동대신", + "시간": "18:59:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1309, + "역명": "동대신", + "시간": "20:50:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2320, + "역명": "동대신", + "시간": "21:56:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1347, + "역명": "동대신", + "시간": "23:43:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2012, + "역명": "동대신", + "시간": "06:34:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1039, + "역명": "동대신", + "시간": "08:23:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2074, + "역명": "동대신", + "시간": "09:27:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1107, + "역명": "동대신", + "시간": "11:18:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2130, + "역명": "동대신", + "시간": "12:23:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1161, + "역명": "동대신", + "시간": "14:13:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2184, + "역명": "동대신", + "시간": "15:19:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1217, + "역명": "동대신", + "시간": "17:10:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2240, + "역명": "동대신", + "시간": "18:14:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1297, + "역명": "동대신", + "시간": "20:06:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 8, + "열번": 2308, + "역명": "동대신", + "시간": "21:13:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 9, + "열번": 2022, + "역명": "동대신", + "시간": "07:20:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1063, + "역명": "동대신", + "시간": "09:11:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 9, + "열번": 2090, + "역명": "동대신", + "시간": "10:15:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2014, + "역명": "동대신", + "시간": "06:46:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1045, + "역명": "동대신", + "시간": "08:35:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 11, + "열번": 1005, + "역명": "동대신", + "시간": "06:19:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2024, + "역명": "동대신", + "시간": "07:26:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1065, + "역명": "동대신", + "시간": "09:15:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2092, + "역명": "동대신", + "시간": "10:21:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1123, + "역명": "동대신", + "시간": "12:10:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2146, + "역명": "동대신", + "시간": "13:15:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1177, + "역명": "동대신", + "시간": "15:05:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2200, + "역명": "동대신", + "시간": "16:10:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1237, + "역명": "동대신", + "시간": "18:00:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 11, + "열번": 2262, + "역명": "동대신", + "시간": "19:04:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2016, + "역명": "동대신", + "시간": "06:57:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1051, + "역명": "동대신", + "시간": "08:47:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2082, + "역명": "동대신", + "시간": "09:51:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1115, + "역명": "동대신", + "시간": "11:44:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2138, + "역명": "동대신", + "시간": "12:49:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1169, + "역명": "동대신", + "시간": "14:39:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "동대신", + "시간": "15:45:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1227, + "역명": "동대신", + "시간": "17:35:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2252, + "역명": "동대신", + "시간": "18:39:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1303, + "역명": "동대신", + "시간": "20:26:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2314, + "역명": "동대신", + "시간": "21:31:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1343, + "역명": "동대신", + "시간": "23:20:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1007, + "역명": "동대신", + "시간": "06:30:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2028, + "역명": "동대신", + "시간": "07:37:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1071, + "역명": "동대신", + "시간": "09:27:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2096, + "역명": "동대신", + "시간": "10:33:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1127, + "역명": "동대신", + "시간": "12:23:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2150, + "역명": "동대신", + "시간": "13:28:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1181, + "역명": "동대신", + "시간": "15:18:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2204, + "역명": "동대신", + "시간": "16:22:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1241, + "역명": "동대신", + "시간": "18:10:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2266, + "역명": "동대신", + "시간": "19:14:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1313, + "역명": "동대신", + "시간": "21:06:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2324, + "역명": "동대신", + "시간": "22:16:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 13, + "열번": 1351, + "역명": "동대신", + "시간": "00:07:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 14, + "열번": 1001, + "역명": "동대신", + "시간": "06:00:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2018, + "역명": "동대신", + "시간": "07:06:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1055, + "역명": "동대신", + "시간": "08:55:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1009, + "역명": "동대신", + "시간": "06:41:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2032, + "역명": "동대신", + "시간": "07:46:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1075, + "역명": "동대신", + "시간": "09:36:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2100, + "역명": "동대신", + "시간": "10:46:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1131, + "역명": "동대신", + "시간": "12:36:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2154, + "역명": "동대신", + "시간": "13:41:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1185, + "역명": "동대신", + "시간": "15:31:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2208, + "역명": "동대신", + "시간": "16:39:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1249, + "역명": "동대신", + "시간": "18:27:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2274, + "역명": "동대신", + "시간": "19:34:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2026, + "역명": "동대신", + "시간": "07:32:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1067, + "역명": "동대신", + "시간": "09:19:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2036, + "역명": "동대신", + "시간": "07:55:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2030, + "역명": "동대신", + "시간": "07:42:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1073, + "역명": "동대신", + "시간": "09:31:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2098, + "역명": "동대신", + "시간": "10:39:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1129, + "역명": "동대신", + "시간": "12:29:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2152, + "역명": "동대신", + "시간": "13:35:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1183, + "역명": "동대신", + "시간": "15:25:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2206, + "역명": "동대신", + "시간": "16:34:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1247, + "역명": "동대신", + "시간": "18:23:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2272, + "역명": "동대신", + "시간": "19:29:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1317, + "역명": "동대신", + "시간": "21:22:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2326, + "역명": "동대신", + "시간": "22:26:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 18, + "열번": 7931, + "역명": "동대신", + "시간": "00:23:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 19, + "열번": 1011, + "역명": "동대신", + "시간": "06:52:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2038, + "역명": "동대신", + "시간": "08:00:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1079, + "역명": "동대신", + "시간": "09:48:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2102, + "역명": "동대신", + "시간": "10:52:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1133, + "역명": "동대신", + "시간": "12:42:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2156, + "역명": "동대신", + "시간": "13:48:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1187, + "역명": "동대신", + "시간": "15:38:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2210, + "역명": "동대신", + "시간": "16:44:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1253, + "역명": "동대신", + "시간": "18:35:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2278, + "역명": "동대신", + "시간": "19:44:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2034, + "역명": "동대신", + "시간": "07:51:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 20, + "열번": 1077, + "역명": "동대신", + "시간": "09:42:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 21, + "열번": 1013, + "역명": "동대신", + "시간": "07:03:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2042, + "역명": "동대신", + "시간": "08:09:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1083, + "역명": "동대신", + "시간": "10:00:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2106, + "역명": "동대신", + "시간": "11:05:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1137, + "역명": "동대신", + "시간": "12:55:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2160, + "역명": "동대신", + "시간": "14:01:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1191, + "역명": "동대신", + "시간": "15:51:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2214, + "역명": "동대신", + "시간": "16:54:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1257, + "역명": "동대신", + "시간": "18:43:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2280, + "역명": "동대신", + "시간": "19:49:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1321, + "역명": "동대신", + "시간": "21:38:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2330, + "역명": "동대신", + "시간": "22:48:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2040, + "역명": "동대신", + "시간": "08:04:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1081, + "역명": "동대신", + "시간": "09:54:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2104, + "역명": "동대신", + "시간": "10:59:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1135, + "역명": "동대신", + "시간": "12:49:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2158, + "역명": "동대신", + "시간": "13:54:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1189, + "역명": "동대신", + "시간": "15:44:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2212, + "역명": "동대신", + "시간": "16:49:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1255, + "역명": "동대신", + "시간": "18:39:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2044, + "역명": "동대신", + "시간": "08:13:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "동대신", + "시간": "08:22:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1087, + "역명": "동대신", + "시간": "10:13:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2110, + "역명": "동대신", + "시간": "11:18:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1141, + "역명": "동대신", + "시간": "13:08:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2164, + "역명": "동대신", + "시간": "14:14:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1195, + "역명": "동대신", + "시간": "16:04:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2218, + "역명": "동대신", + "시간": "17:09:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1265, + "역명": "동대신", + "시간": "18:59:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 24, + "열번": 2286, + "역명": "동대신", + "시간": "20:07:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "동대신", + "시간": "07:31:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2054, + "역명": "동대신", + "시간": "08:36:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1091, + "역명": "동대신", + "시간": "10:26:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2114, + "역명": "동대신", + "시간": "11:31:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1145, + "역명": "동대신", + "시간": "13:21:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2168, + "역명": "동대신", + "시간": "14:27:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1199, + "역명": "동대신", + "시간": "16:17:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2222, + "역명": "동대신", + "시간": "17:22:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1271, + "역명": "동대신", + "시간": "19:11:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2290, + "역명": "동대신", + "시간": "20:19:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1329, + "역명": "동대신", + "시간": "22:10:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2336, + "역명": "동대신", + "시간": "23:23:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2052, + "역명": "동대신", + "시간": "08:31:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1089, + "역명": "동대신", + "시간": "10:19:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2112, + "역명": "동대신", + "시간": "11:25:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1143, + "역명": "동대신", + "시간": "13:15:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2166, + "역명": "동대신", + "시간": "14:20:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1197, + "역명": "동대신", + "시간": "16:10:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2220, + "역명": "동대신", + "시간": "17:18:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1269, + "역명": "동대신", + "시간": "19:07:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2288, + "역명": "동대신", + "시간": "20:13:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1327, + "역명": "동대신", + "시간": "22:02:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 26, + "열번": 2334, + "역명": "동대신", + "시간": "23:12:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1023, + "역명": "동대신", + "시간": "07:46:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 27, + "열번": 2060, + "역명": "동대신", + "시간": "08:50:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2056, + "역명": "동대신", + "시간": "08:40:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1093, + "역명": "동대신", + "시간": "10:32:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2116, + "역명": "동대신", + "시간": "11:38:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1147, + "역명": "동대신", + "시간": "13:28:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2170, + "역명": "동대신", + "시간": "14:33:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1201, + "역명": "동대신", + "시간": "16:23:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2224, + "역명": "동대신", + "시간": "17:30:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1275, + "역명": "동대신", + "시간": "19:19:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2292, + "역명": "동대신", + "시간": "20:25:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1331, + "역명": "동대신", + "시간": "22:19:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1027, + "역명": "동대신", + "시간": "07:56:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2064, + "역명": "동대신", + "시간": "09:00:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1099, + "역명": "동대신", + "시간": "10:52:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2122, + "역명": "동대신", + "시간": "11:57:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1153, + "역명": "동대신", + "시간": "13:47:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2176, + "역명": "동대신", + "시간": "14:53:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1207, + "역명": "동대신", + "시간": "16:41:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2230, + "역명": "동대신", + "시간": "17:46:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1283, + "역명": "동대신", + "시간": "19:35:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 29, + "열번": 2298, + "역명": "동대신", + "시간": "20:43:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1037, + "역명": "동대신", + "시간": "08:19:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1031, + "역명": "동대신", + "시간": "08:06:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2068, + "역명": "동대신", + "시간": "09:10:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1101, + "역명": "동대신", + "시간": "10:58:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2124, + "역명": "동대신", + "시간": "12:04:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1155, + "역명": "동대신", + "시간": "13:54:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2178, + "역명": "동대신", + "시간": "14:59:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1209, + "역명": "동대신", + "시간": "16:47:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2232, + "역명": "동대신", + "시간": "17:54:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1287, + "역명": "동대신", + "시간": "19:43:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2300, + "역명": "동대신", + "시간": "20:49:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1335, + "역명": "동대신", + "시간": "22:39:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 32, + "열번": 1049, + "역명": "동대신", + "시간": "08:43:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1035, + "역명": "동대신", + "시간": "08:15:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2072, + "역명": "동대신", + "시간": "09:21:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1105, + "역명": "동대신", + "시간": "11:11:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2128, + "역명": "동대신", + "시간": "12:17:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1159, + "역명": "동대신", + "시간": "14:07:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2182, + "역명": "동대신", + "시간": "15:12:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1215, + "역명": "동대신", + "시간": "17:05:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2238, + "역명": "동대신", + "시간": "18:10:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1295, + "역명": "동대신", + "시간": "20:01:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2306, + "역명": "동대신", + "시간": "21:07:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 33, + "열번": 1339, + "역명": "동대신", + "시간": "22:59:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 34, + "열번": 1061, + "역명": "동대신", + "시간": "09:07:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1041, + "역명": "동대신", + "시간": "08:27:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2076, + "역명": "동대신", + "시간": "09:33:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1109, + "역명": "동대신", + "시간": "11:24:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2132, + "역명": "동대신", + "시간": "12:30:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1163, + "역명": "동대신", + "시간": "14:20:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2186, + "역명": "동대신", + "시간": "15:25:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1219, + "역명": "동대신", + "시간": "17:15:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 35, + "열번": 2242, + "역명": "동대신", + "시간": "18:18:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 36, + "열번": 8904, + "역명": "동대신", + "시간": "16:28:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1245, + "역명": "동대신", + "시간": "18:19:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 36, + "열번": 2270, + "역명": "동대신", + "시간": "19:24:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1315, + "역명": "동대신", + "시간": "21:14:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1043, + "역명": "동대신", + "시간": "08:31:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2078, + "역명": "동대신", + "시간": "09:39:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1111, + "역명": "동대신", + "시간": "11:31:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2134, + "역명": "동대신", + "시간": "12:36:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1165, + "역명": "동대신", + "시간": "14:26:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2188, + "역명": "동대신", + "시간": "15:32:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1221, + "역명": "동대신", + "시간": "17:20:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 37, + "열번": 2246, + "역명": "동대신", + "시간": "18:26:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 38, + "열번": 8906, + "역명": "동대신", + "시간": "16:59:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 38, + "열번": 1259, + "역명": "동대신", + "시간": "18:47:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 39, + "열번": 1047, + "역명": "동대신", + "시간": "08:39:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2080, + "역명": "동대신", + "시간": "09:45:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1113, + "역명": "동대신", + "시간": "11:37:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2136, + "역명": "동대신", + "시간": "12:43:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1167, + "역명": "동대신", + "시간": "14:33:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2190, + "역명": "동대신", + "시간": "15:38:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1225, + "역명": "동대신", + "시간": "17:30:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 39, + "열번": 2250, + "역명": "동대신", + "시간": "18:34:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 40, + "열번": 8908, + "역명": "동대신", + "시간": "17:14:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 40, + "열번": 1267, + "역명": "동대신", + "시간": "19:03:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 41, + "열번": 1053, + "역명": "동대신", + "시간": "08:51:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2084, + "역명": "동대신", + "시간": "09:57:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1117, + "역명": "동대신", + "시간": "11:50:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2140, + "역명": "동대신", + "시간": "12:56:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1171, + "역명": "동대신", + "시간": "14:46:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2194, + "역명": "동대신", + "시간": "15:51:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1229, + "역명": "동대신", + "시간": "17:40:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2254, + "역명": "동대신", + "시간": "18:44:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1305, + "역명": "동대신", + "시간": "20:34:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2316, + "역명": "동대신", + "시간": "21:38:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1345, + "역명": "동대신", + "시간": "23:31:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 42, + "열번": 8910, + "역명": "동대신", + "시간": "17:26:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 42, + "열번": 1273, + "역명": "동대신", + "시간": "19:15:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 43, + "열번": 1057, + "역명": "동대신", + "시간": "08:59:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2086, + "역명": "동대신", + "시간": "10:03:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1119, + "역명": "동대신", + "시간": "11:57:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2142, + "역명": "동대신", + "시간": "13:02:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1173, + "역명": "동대신", + "시간": "14:52:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2196, + "역명": "동대신", + "시간": "15:58:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1233, + "역명": "동대신", + "시간": "17:50:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2258, + "역명": "동대신", + "시간": "18:54:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1307, + "역명": "동대신", + "시간": "20:42:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 43, + "열번": 2318, + "역명": "동대신", + "시간": "21:46:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 44, + "열번": 8912, + "역명": "동대신", + "시간": "17:38:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 44, + "열번": 1279, + "역명": "동대신", + "시간": "19:27:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 45, + "열번": 1069, + "역명": "동대신", + "시간": "09:23:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2094, + "역명": "동대신", + "시간": "10:27:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1125, + "역명": "동대신", + "시간": "12:16:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2148, + "역명": "동대신", + "시간": "13:22:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1179, + "역명": "동대신", + "시간": "15:12:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2202, + "역명": "동대신", + "시간": "16:16:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1239, + "역명": "동대신", + "시간": "18:05:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2264, + "역명": "동대신", + "시간": "19:09:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1311, + "역명": "동대신", + "시간": "20:58:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2322, + "역명": "동대신", + "시간": "22:06:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 45, + "열번": 1349, + "역명": "동대신", + "시간": "23:55:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 46, + "열번": 8914, + "역명": "동대신", + "시간": "17:50:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 46, + "열번": 1285, + "역명": "동대신", + "시간": "19:39:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 47, + "열번": 1211, + "역명": "동대신", + "시간": "16:53:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 47, + "열번": 2234, + "역명": "동대신", + "시간": "17:58:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 47, + "열번": 1289, + "역명": "동대신", + "시간": "19:47:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 47, + "열번": 2302, + "역명": "동대신", + "시간": "20:55:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 48, + "열번": 8916, + "역명": "동대신", + "시간": "18:02:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 48, + "열번": 1291, + "역명": "동대신", + "시간": "19:51:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 49, + "열번": 1223, + "역명": "동대신", + "시간": "17:25:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 49, + "열번": 2248, + "역명": "동대신", + "시간": "18:30:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 49, + "열번": 1301, + "역명": "동대신", + "시간": "20:18:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 49, + "열번": 2312, + "역명": "동대신", + "시간": "21:25:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 50, + "열번": 2244, + "역명": "동대신", + "시간": "18:22:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 50, + "열번": 1299, + "역명": "동대신", + "시간": "20:11:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 50, + "열번": 2310, + "역명": "동대신", + "시간": "21:19:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 50, + "열번": 1341, + "역명": "동대신", + "시간": "23:09:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 51, + "열번": 1231, + "역명": "동대신", + "시간": "17:45:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 51, + "열번": 2256, + "역명": "동대신", + "시간": "18:49:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 52, + "열번": 6906, + "역명": "동대신", + "시간": "09:48:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 52, + "열번": 5905, + "역명": "동대신", + "시간": "11:40:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 53, + "열번": 1243, + "역명": "동대신", + "시간": "18:15:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 53, + "열번": 2268, + "역명": "동대신", + "시간": "19:19:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 54, + "열번": 6910, + "역명": "동대신", + "시간": "13:31:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 54, + "열번": 5907, + "역명": "동대신", + "시간": "15:21:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 55, + "열번": 1251, + "역명": "동대신", + "시간": "18:31:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 55, + "열번": 2276, + "역명": "동대신", + "시간": "19:39:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 55, + "열번": 1319, + "역명": "동대신", + "시간": "21:30:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 55, + "열번": 2328, + "역명": "동대신", + "시간": "22:36:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 57, + "열번": 1263, + "역명": "동대신", + "시간": "18:55:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 57, + "열번": 2284, + "역명": "동대신", + "시간": "20:01:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 57, + "열번": 1325, + "역명": "동대신", + "시간": "21:54:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 57, + "열번": 2332, + "역명": "동대신", + "시간": "23:00:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 59, + "열번": 5901, + "역명": "동대신", + "시간": "10:48:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 59, + "열번": 6902, + "역명": "동대신", + "시간": "11:54:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 61, + "열번": 5903, + "역명": "동대신", + "시간": "14:16:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 61, + "열번": 5904, + "역명": "동대신", + "시간": "15:22:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "서대신", + "시간": "05:30:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "서대신", + "시간": "07:24:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2050, + "역명": "서대신", + "시간": "08:25:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "서대신", + "시간": "05:14:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "서대신", + "시간": "07:15:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "서대신", + "시간": "08:16:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1085, + "역명": "서대신", + "시간": "10:09:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2108, + "역명": "서대신", + "시간": "11:10:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1139, + "역명": "서대신", + "시간": "13:04:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2162, + "역명": "서대신", + "시간": "14:05:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1193, + "역명": "서대신", + "시간": "16:00:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2216, + "역명": "서대신", + "시간": "17:02:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1261, + "역명": "서대신", + "시간": "18:54:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2282, + "역명": "서대신", + "시간": "19:53:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1323, + "역명": "서대신", + "시간": "21:49:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "서대신", + "시간": "05:43:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "서대신", + "시간": "07:42:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2058, + "역명": "서대신", + "시간": "08:43:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1095, + "역명": "서대신", + "시간": "10:41:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2118, + "역명": "서대신", + "시간": "11:42:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1149, + "역명": "서대신", + "시간": "13:37:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2172, + "역명": "서대신", + "시간": "14:38:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1203, + "역명": "서대신", + "시간": "16:32:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2226, + "역명": "서대신", + "시간": "17:32:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1277, + "역명": "서대신", + "시간": "19:26:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2294, + "역명": "서대신", + "시간": "20:29:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "서대신", + "시간": "05:56:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1025, + "역명": "서대신", + "시간": "07:54:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2062, + "역명": "서대신", + "시간": "08:53:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1097, + "역명": "서대신", + "시간": "10:48:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2120, + "역명": "서대신", + "시간": "11:49:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1151, + "역명": "서대신", + "시간": "13:43:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2174, + "역명": "서대신", + "시간": "14:44:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1205, + "역명": "서대신", + "시간": "16:38:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2228, + "역명": "서대신", + "시간": "17:40:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1281, + "역명": "서대신", + "시간": "19:34:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2296, + "역명": "서대신", + "시간": "20:35:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1333, + "역명": "서대신", + "시간": "22:32:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2338, + "역명": "서대신", + "시간": "23:36:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2008, + "역명": "서대신", + "시간": "06:08:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1029, + "역명": "서대신", + "시간": "08:04:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2066, + "역명": "서대신", + "시간": "09:03:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2010, + "역명": "서대신", + "시간": "06:20:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1033, + "역명": "서대신", + "시간": "08:14:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2070, + "역명": "서대신", + "시간": "09:13:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1103, + "역명": "서대신", + "시간": "11:07:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2126, + "역명": "서대신", + "시간": "12:08:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1157, + "역명": "서대신", + "시간": "14:03:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2180, + "역명": "서대신", + "시간": "15:04:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1213, + "역명": "서대신", + "시간": "17:02:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2236, + "역명": "서대신", + "시간": "18:04:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1293, + "역명": "서대신", + "시간": "19:59:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2304, + "역명": "서대신", + "시간": "20:59:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1337, + "역명": "서대신", + "시간": "22:52:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1003, + "역명": "서대신", + "시간": "06:10:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2020, + "역명": "서대신", + "시간": "07:12:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1059, + "역명": "서대신", + "시간": "09:06:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2088, + "역명": "서대신", + "시간": "10:07:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1121, + "역명": "서대신", + "시간": "12:06:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2144, + "역명": "서대신", + "시간": "13:07:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1175, + "역명": "서대신", + "시간": "15:01:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2198, + "역명": "서대신", + "시간": "16:02:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1235, + "역명": "서대신", + "시간": "17:58:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2260, + "역명": "서대신", + "시간": "18:57:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1309, + "역명": "서대신", + "시간": "20:53:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2320, + "역명": "서대신", + "시간": "21:54:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1347, + "역명": "서대신", + "시간": "23:46:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2012, + "역명": "서대신", + "시간": "06:32:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1039, + "역명": "서대신", + "시간": "08:26:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2074, + "역명": "서대신", + "시간": "09:25:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1107, + "역명": "서대신", + "시간": "11:20:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2130, + "역명": "서대신", + "시간": "12:21:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1161, + "역명": "서대신", + "시간": "14:16:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2184, + "역명": "서대신", + "시간": "15:17:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1217, + "역명": "서대신", + "시간": "17:13:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2240, + "역명": "서대신", + "시간": "18:12:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1297, + "역명": "서대신", + "시간": "20:09:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 8, + "열번": 2308, + "역명": "서대신", + "시간": "21:11:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 9, + "열번": 2022, + "역명": "서대신", + "시간": "07:18:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1063, + "역명": "서대신", + "시간": "09:14:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 9, + "열번": 2090, + "역명": "서대신", + "시간": "10:13:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2014, + "역명": "서대신", + "시간": "06:44:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1045, + "역명": "서대신", + "시간": "08:38:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 11, + "열번": 1005, + "역명": "서대신", + "시간": "06:21:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2024, + "역명": "서대신", + "시간": "07:24:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1065, + "역명": "서대신", + "시간": "09:18:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2092, + "역명": "서대신", + "시간": "10:19:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1123, + "역명": "서대신", + "시간": "12:12:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2146, + "역명": "서대신", + "시간": "13:13:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1177, + "역명": "서대신", + "시간": "15:08:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2200, + "역명": "서대신", + "시간": "16:08:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1237, + "역명": "서대신", + "시간": "18:03:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 11, + "열번": 2262, + "역명": "서대신", + "시간": "19:02:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2016, + "역명": "서대신", + "시간": "06:55:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1051, + "역명": "서대신", + "시간": "08:50:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2082, + "역명": "서대신", + "시간": "09:49:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1115, + "역명": "서대신", + "시간": "11:46:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2138, + "역명": "서대신", + "시간": "12:47:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1169, + "역명": "서대신", + "시간": "14:42:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "서대신", + "시간": "15:43:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1227, + "역명": "서대신", + "시간": "17:38:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2252, + "역명": "서대신", + "시간": "18:37:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1303, + "역명": "서대신", + "시간": "20:29:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2314, + "역명": "서대신", + "시간": "21:29:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1343, + "역명": "서대신", + "시간": "23:23:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1007, + "역명": "서대신", + "시간": "06:32:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2028, + "역명": "서대신", + "시간": "07:35:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1071, + "역명": "서대신", + "시간": "09:30:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2096, + "역명": "서대신", + "시간": "10:31:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1127, + "역명": "서대신", + "시간": "12:25:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2150, + "역명": "서대신", + "시간": "13:26:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1181, + "역명": "서대신", + "시간": "15:21:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2204, + "역명": "서대신", + "시간": "16:20:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1241, + "역명": "서대신", + "시간": "18:13:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2266, + "역명": "서대신", + "시간": "19:12:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1313, + "역명": "서대신", + "시간": "21:09:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2324, + "역명": "서대신", + "시간": "22:14:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 13, + "열번": 1351, + "역명": "서대신", + "시간": "00:09:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 14, + "열번": 1001, + "역명": "서대신", + "시간": "06:02:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2018, + "역명": "서대신", + "시간": "07:04:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1055, + "역명": "서대신", + "시간": "08:58:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1009, + "역명": "서대신", + "시간": "06:43:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2032, + "역명": "서대신", + "시간": "07:44:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1075, + "역명": "서대신", + "시간": "09:39:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2100, + "역명": "서대신", + "시간": "10:44:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1131, + "역명": "서대신", + "시간": "12:38:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2154, + "역명": "서대신", + "시간": "13:39:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1185, + "역명": "서대신", + "시간": "15:34:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2208, + "역명": "서대신", + "시간": "16:37:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1249, + "역명": "서대신", + "시간": "18:30:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2274, + "역명": "서대신", + "시간": "19:32:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2026, + "역명": "서대신", + "시간": "07:30:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1067, + "역명": "서대신", + "시간": "09:22:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2036, + "역명": "서대신", + "시간": "07:53:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2030, + "역명": "서대신", + "시간": "07:40:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1073, + "역명": "서대신", + "시간": "09:34:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2098, + "역명": "서대신", + "시간": "10:37:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1129, + "역명": "서대신", + "시간": "12:32:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2152, + "역명": "서대신", + "시간": "13:33:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1183, + "역명": "서대신", + "시간": "15:27:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2206, + "역명": "서대신", + "시간": "16:32:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1247, + "역명": "서대신", + "시간": "18:26:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2272, + "역명": "서대신", + "시간": "19:27:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1317, + "역명": "서대신", + "시간": "21:25:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2326, + "역명": "서대신", + "시간": "22:24:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 18, + "열번": 7931, + "역명": "서대신", + "시간": "00:25:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 19, + "열번": 1011, + "역명": "서대신", + "시간": "06:54:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2038, + "역명": "서대신", + "시간": "07:58:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1079, + "역명": "서대신", + "시간": "09:50:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2102, + "역명": "서대신", + "시간": "10:50:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1133, + "역명": "서대신", + "시간": "12:45:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2156, + "역명": "서대신", + "시간": "13:46:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1187, + "역명": "서대신", + "시간": "15:40:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2210, + "역명": "서대신", + "시간": "16:42:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1253, + "역명": "서대신", + "시간": "18:38:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2278, + "역명": "서대신", + "시간": "19:42:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2034, + "역명": "서대신", + "시간": "07:49:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 20, + "열번": 1077, + "역명": "서대신", + "시간": "09:44:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 21, + "열번": 1013, + "역명": "서대신", + "시간": "07:05:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2042, + "역명": "서대신", + "시간": "08:07:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1083, + "역명": "서대신", + "시간": "10:02:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2106, + "역명": "서대신", + "시간": "11:03:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1137, + "역명": "서대신", + "시간": "12:58:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2160, + "역명": "서대신", + "시간": "13:59:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1191, + "역명": "서대신", + "시간": "15:53:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2214, + "역명": "서대신", + "시간": "16:52:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1257, + "역명": "서대신", + "시간": "18:46:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2280, + "역명": "서대신", + "시간": "19:47:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1321, + "역명": "서대신", + "시간": "21:41:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2330, + "역명": "서대신", + "시간": "22:46:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2040, + "역명": "서대신", + "시간": "08:02:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1081, + "역명": "서대신", + "시간": "09:56:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2104, + "역명": "서대신", + "시간": "10:57:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1135, + "역명": "서대신", + "시간": "12:51:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2158, + "역명": "서대신", + "시간": "13:52:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1189, + "역명": "서대신", + "시간": "15:47:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2212, + "역명": "서대신", + "시간": "16:47:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1255, + "역명": "서대신", + "시간": "18:42:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2044, + "역명": "서대신", + "시간": "08:11:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "서대신", + "시간": "08:20:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1087, + "역명": "서대신", + "시간": "10:15:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2110, + "역명": "서대신", + "시간": "11:16:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1141, + "역명": "서대신", + "시간": "13:11:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2164, + "역명": "서대신", + "시간": "14:12:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1195, + "역명": "서대신", + "시간": "16:06:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2218, + "역명": "서대신", + "시간": "17:07:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1265, + "역명": "서대신", + "시간": "19:02:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 24, + "열번": 2286, + "역명": "서대신", + "시간": "20:05:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "서대신", + "시간": "07:33:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2054, + "역명": "서대신", + "시간": "08:34:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1091, + "역명": "서대신", + "시간": "10:28:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2114, + "역명": "서대신", + "시간": "11:29:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1145, + "역명": "서대신", + "시간": "13:24:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2168, + "역명": "서대신", + "시간": "14:25:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1199, + "역명": "서대신", + "시간": "16:19:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2222, + "역명": "서대신", + "시간": "17:20:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1271, + "역명": "서대신", + "시간": "19:14:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2290, + "역명": "서대신", + "시간": "20:17:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1329, + "역명": "서대신", + "시간": "22:13:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2336, + "역명": "서대신", + "시간": "23:21:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2052, + "역명": "서대신", + "시간": "08:29:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1089, + "역명": "서대신", + "시간": "10:22:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2112, + "역명": "서대신", + "시간": "11:23:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1143, + "역명": "서대신", + "시간": "13:17:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2166, + "역명": "서대신", + "시간": "14:18:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1197, + "역명": "서대신", + "시간": "16:13:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2220, + "역명": "서대신", + "시간": "17:16:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1269, + "역명": "서대신", + "시간": "19:10:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2288, + "역명": "서대신", + "시간": "20:11:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1327, + "역명": "서대신", + "시간": "22:05:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 26, + "열번": 2334, + "역명": "서대신", + "시간": "23:10:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1023, + "역명": "서대신", + "시간": "07:49:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 27, + "열번": 2060, + "역명": "서대신", + "시간": "08:48:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2056, + "역명": "서대신", + "시간": "08:38:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1093, + "역명": "서대신", + "시간": "10:35:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2116, + "역명": "서대신", + "시간": "11:36:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1147, + "역명": "서대신", + "시간": "13:30:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2170, + "역명": "서대신", + "시간": "14:31:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1201, + "역명": "서대신", + "시간": "16:26:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2224, + "역명": "서대신", + "시간": "17:28:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1275, + "역명": "서대신", + "시간": "19:22:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2292, + "역명": "서대신", + "시간": "20:23:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1331, + "역명": "서대신", + "시간": "22:22:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1027, + "역명": "서대신", + "시간": "07:59:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2064, + "역명": "서대신", + "시간": "08:58:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1099, + "역명": "서대신", + "시간": "10:54:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2122, + "역명": "서대신", + "시간": "11:55:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1153, + "역명": "서대신", + "시간": "13:50:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2176, + "역명": "서대신", + "시간": "14:51:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1207, + "역명": "서대신", + "시간": "16:44:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2230, + "역명": "서대신", + "시간": "17:44:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1283, + "역명": "서대신", + "시간": "19:38:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 29, + "열번": 2298, + "역명": "서대신", + "시간": "20:41:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1037, + "역명": "서대신", + "시간": "08:22:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1031, + "역명": "서대신", + "시간": "08:09:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2068, + "역명": "서대신", + "시간": "09:08:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1101, + "역명": "서대신", + "시간": "11:01:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2124, + "역명": "서대신", + "시간": "12:02:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1155, + "역명": "서대신", + "시간": "13:56:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2178, + "역명": "서대신", + "시간": "14:57:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1209, + "역명": "서대신", + "시간": "16:50:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2232, + "역명": "서대신", + "시간": "17:52:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1287, + "역명": "서대신", + "시간": "19:46:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2300, + "역명": "서대신", + "시간": "20:47:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1335, + "역명": "서대신", + "시간": "22:42:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 32, + "열번": 1049, + "역명": "서대신", + "시간": "08:46:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1035, + "역명": "서대신", + "시간": "08:18:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2072, + "역명": "서대신", + "시간": "09:19:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1105, + "역명": "서대신", + "시간": "11:14:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2128, + "역명": "서대신", + "시간": "12:15:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1159, + "역명": "서대신", + "시간": "14:09:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2182, + "역명": "서대신", + "시간": "15:10:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1215, + "역명": "서대신", + "시간": "17:08:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2238, + "역명": "서대신", + "시간": "18:08:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1295, + "역명": "서대신", + "시간": "20:04:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2306, + "역명": "서대신", + "시간": "21:05:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 33, + "열번": 1339, + "역명": "서대신", + "시간": "23:02:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 34, + "열번": 1061, + "역명": "서대신", + "시간": "09:10:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1041, + "역명": "서대신", + "시간": "08:30:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2076, + "역명": "서대신", + "시간": "09:31:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1109, + "역명": "서대신", + "시간": "11:27:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2132, + "역명": "서대신", + "시간": "12:28:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1163, + "역명": "서대신", + "시간": "14:22:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2186, + "역명": "서대신", + "시간": "15:23:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1219, + "역명": "서대신", + "시간": "17:18:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 35, + "열번": 2242, + "역명": "서대신", + "시간": "18:16:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 36, + "열번": 8904, + "역명": "서대신", + "시간": "16:26:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1245, + "역명": "서대신", + "시간": "18:22:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 36, + "열번": 2270, + "역명": "서대신", + "시간": "19:22:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1315, + "역명": "서대신", + "시간": "21:17:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1043, + "역명": "서대신", + "시간": "08:34:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2078, + "역명": "서대신", + "시간": "09:37:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1111, + "역명": "서대신", + "시간": "11:33:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2134, + "역명": "서대신", + "시간": "12:34:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1165, + "역명": "서대신", + "시간": "14:29:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2188, + "역명": "서대신", + "시간": "15:30:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1221, + "역명": "서대신", + "시간": "17:23:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 37, + "열번": 2246, + "역명": "서대신", + "시간": "18:24:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 38, + "열번": 8906, + "역명": "서대신", + "시간": "16:57:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 38, + "열번": 1259, + "역명": "서대신", + "시간": "18:50:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 39, + "열번": 1047, + "역명": "서대신", + "시간": "08:42:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2080, + "역명": "서대신", + "시간": "09:43:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1113, + "역명": "서대신", + "시간": "11:40:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2136, + "역명": "서대신", + "시간": "12:41:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1167, + "역명": "서대신", + "시간": "14:35:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2190, + "역명": "서대신", + "시간": "15:36:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1225, + "역명": "서대신", + "시간": "17:33:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 39, + "열번": 2250, + "역명": "서대신", + "시간": "18:32:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 40, + "열번": 8908, + "역명": "서대신", + "시간": "17:12:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 40, + "열번": 1267, + "역명": "서대신", + "시간": "19:06:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 41, + "열번": 1053, + "역명": "서대신", + "시간": "08:54:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2084, + "역명": "서대신", + "시간": "09:55:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1117, + "역명": "서대신", + "시간": "11:53:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2140, + "역명": "서대신", + "시간": "12:54:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1171, + "역명": "서대신", + "시간": "14:48:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2194, + "역명": "서대신", + "시간": "15:49:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1229, + "역명": "서대신", + "시간": "17:43:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2254, + "역명": "서대신", + "시간": "18:42:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1305, + "역명": "서대신", + "시간": "20:37:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2316, + "역명": "서대신", + "시간": "21:36:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1345, + "역명": "서대신", + "시간": "23:34:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 42, + "열번": 8910, + "역명": "서대신", + "시간": "17:24:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 42, + "열번": 1273, + "역명": "서대신", + "시간": "19:18:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 43, + "열번": 1057, + "역명": "서대신", + "시간": "09:02:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2086, + "역명": "서대신", + "시간": "10:01:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1119, + "역명": "서대신", + "시간": "11:59:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2142, + "역명": "서대신", + "시간": "13:00:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1173, + "역명": "서대신", + "시간": "14:55:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2196, + "역명": "서대신", + "시간": "15:56:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1233, + "역명": "서대신", + "시간": "17:53:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2258, + "역명": "서대신", + "시간": "18:52:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1307, + "역명": "서대신", + "시간": "20:45:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 43, + "열번": 2318, + "역명": "서대신", + "시간": "21:44:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 44, + "열번": 8912, + "역명": "서대신", + "시간": "17:36:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 44, + "열번": 1279, + "역명": "서대신", + "시간": "19:30:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 45, + "열번": 1069, + "역명": "서대신", + "시간": "09:26:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2094, + "역명": "서대신", + "시간": "10:25:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1125, + "역명": "서대신", + "시간": "12:19:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2148, + "역명": "서대신", + "시간": "13:20:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1179, + "역명": "서대신", + "시간": "15:14:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2202, + "역명": "서대신", + "시간": "16:14:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1239, + "역명": "서대신", + "시간": "18:08:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2264, + "역명": "서대신", + "시간": "19:07:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1311, + "역명": "서대신", + "시간": "21:01:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2322, + "역명": "서대신", + "시간": "22:04:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 45, + "열번": 1349, + "역명": "서대신", + "시간": "23:58:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 46, + "열번": 8914, + "역명": "서대신", + "시간": "17:48:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 46, + "열번": 1285, + "역명": "서대신", + "시간": "19:42:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 47, + "열번": 1211, + "역명": "서대신", + "시간": "16:56:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 47, + "열번": 2234, + "역명": "서대신", + "시간": "17:56:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 47, + "열번": 1289, + "역명": "서대신", + "시간": "19:50:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 47, + "열번": 2302, + "역명": "서대신", + "시간": "20:53:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 48, + "열번": 8916, + "역명": "서대신", + "시간": "18:00:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 48, + "열번": 1291, + "역명": "서대신", + "시간": "19:54:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 49, + "열번": 1223, + "역명": "서대신", + "시간": "17:28:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 49, + "열번": 2248, + "역명": "서대신", + "시간": "18:28:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 49, + "열번": 1301, + "역명": "서대신", + "시간": "20:21:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 49, + "열번": 2312, + "역명": "서대신", + "시간": "21:23:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 50, + "열번": 2244, + "역명": "서대신", + "시간": "18:20:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 50, + "열번": 1299, + "역명": "서대신", + "시간": "20:14:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 50, + "열번": 2310, + "역명": "서대신", + "시간": "21:17:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 50, + "열번": 1341, + "역명": "서대신", + "시간": "23:12:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 51, + "열번": 1231, + "역명": "서대신", + "시간": "17:48:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 51, + "열번": 2256, + "역명": "서대신", + "시간": "18:47:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 52, + "열번": 6906, + "역명": "서대신", + "시간": "09:46:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 52, + "열번": 5905, + "역명": "서대신", + "시간": "11:43:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 53, + "열번": 1243, + "역명": "서대신", + "시간": "18:18:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 53, + "열번": 2268, + "역명": "서대신", + "시간": "19:17:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 54, + "열번": 6910, + "역명": "서대신", + "시간": "13:29:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 54, + "열번": 5907, + "역명": "서대신", + "시간": "15:24:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 55, + "열번": 1251, + "역명": "서대신", + "시간": "18:34:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 55, + "열번": 2276, + "역명": "서대신", + "시간": "19:37:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 55, + "열번": 1319, + "역명": "서대신", + "시간": "21:33:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 55, + "열번": 2328, + "역명": "서대신", + "시간": "22:34:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 57, + "열번": 1263, + "역명": "서대신", + "시간": "18:58:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 57, + "열번": 2284, + "역명": "서대신", + "시간": "19:59:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 57, + "열번": 1325, + "역명": "서대신", + "시간": "21:57:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 57, + "열번": 2332, + "역명": "서대신", + "시간": "22:58:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 59, + "열번": 5901, + "역명": "서대신", + "시간": "10:51:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 59, + "열번": 6902, + "역명": "서대신", + "시간": "11:52:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 61, + "열번": 5903, + "역명": "서대신", + "시간": "14:19:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 61, + "열번": 5904, + "역명": "서대신", + "시간": "15:20:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "대티", + "시간": "05:27:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "대티", + "시간": "07:26:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2050, + "역명": "대티", + "시간": "08:22:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "대티", + "시간": "05:11:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "대티", + "시간": "07:17:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "대티", + "시간": "08:13:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1085, + "역명": "대티", + "시간": "10:11:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2108, + "역명": "대티", + "시간": "11:07:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1139, + "역명": "대티", + "시간": "13:06:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2162, + "역명": "대티", + "시간": "14:03:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1193, + "역명": "대티", + "시간": "16:02:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2216, + "역명": "대티", + "시간": "17:00:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1261, + "역명": "대티", + "시간": "18:56:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2282, + "역명": "대티", + "시간": "19:51:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1323, + "역명": "대티", + "시간": "21:51:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "대티", + "시간": "05:41:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "대티", + "시간": "07:44:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2058, + "역명": "대티", + "시간": "08:41:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1095, + "역명": "대티", + "시간": "10:43:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2118, + "역명": "대티", + "시간": "11:40:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1149, + "역명": "대티", + "시간": "13:39:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2172, + "역명": "대티", + "시간": "14:35:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1203, + "역명": "대티", + "시간": "16:34:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2226, + "역명": "대티", + "시간": "17:30:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1277, + "역명": "대티", + "시간": "19:28:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2294, + "역명": "대티", + "시간": "20:27:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "대티", + "시간": "05:53:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1025, + "역명": "대티", + "시간": "07:56:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2062, + "역명": "대티", + "시간": "08:51:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1097, + "역명": "대티", + "시간": "10:50:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2120, + "역명": "대티", + "시간": "11:46:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1151, + "역명": "대티", + "시간": "13:45:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2174, + "역명": "대티", + "시간": "14:42:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1205, + "역명": "대티", + "시간": "16:40:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2228, + "역명": "대티", + "시간": "17:38:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1281, + "역명": "대티", + "시간": "19:36:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2296, + "역명": "대티", + "시간": "20:33:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1333, + "역명": "대티", + "시간": "22:34:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2338, + "역명": "대티", + "시간": "23:34:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2008, + "역명": "대티", + "시간": "06:05:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1029, + "역명": "대티", + "시간": "08:06:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2066, + "역명": "대티", + "시간": "09:01:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2010, + "역명": "대티", + "시간": "06:17:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1033, + "역명": "대티", + "시간": "08:16:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2070, + "역명": "대티", + "시간": "09:11:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1103, + "역명": "대티", + "시간": "11:09:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2126, + "역명": "대티", + "시간": "12:06:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1157, + "역명": "대티", + "시간": "14:05:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2180, + "역명": "대티", + "시간": "15:01:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1213, + "역명": "대티", + "시간": "17:04:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2236, + "역명": "대티", + "시간": "18:02:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1293, + "역명": "대티", + "시간": "20:01:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2304, + "역명": "대티", + "시간": "20:57:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1337, + "역명": "대티", + "시간": "22:54:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1003, + "역명": "대티", + "시간": "06:12:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2020, + "역명": "대티", + "시간": "07:10:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1059, + "역명": "대티", + "시간": "09:08:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2088, + "역명": "대티", + "시간": "10:05:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1121, + "역명": "대티", + "시간": "12:08:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2144, + "역명": "대티", + "시간": "13:04:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1175, + "역명": "대티", + "시간": "15:03:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2198, + "역명": "대티", + "시간": "16:00:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1235, + "역명": "대티", + "시간": "18:00:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2260, + "역명": "대티", + "시간": "18:55:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1309, + "역명": "대티", + "시간": "20:55:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2320, + "역명": "대티", + "시간": "21:52:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1347, + "역명": "대티", + "시간": "23:48:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2012, + "역명": "대티", + "시간": "06:29:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1039, + "역명": "대티", + "시간": "08:28:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2074, + "역명": "대티", + "시간": "09:23:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1107, + "역명": "대티", + "시간": "11:22:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2130, + "역명": "대티", + "시간": "12:19:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1161, + "역명": "대티", + "시간": "14:18:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2184, + "역명": "대티", + "시간": "15:14:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1217, + "역명": "대티", + "시간": "17:15:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2240, + "역명": "대티", + "시간": "18:10:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1297, + "역명": "대티", + "시간": "20:11:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 8, + "열번": 2308, + "역명": "대티", + "시간": "21:09:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 9, + "열번": 2022, + "역명": "대티", + "시간": "07:16:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1063, + "역명": "대티", + "시간": "09:16:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 9, + "열번": 2090, + "역명": "대티", + "시간": "10:11:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2014, + "역명": "대티", + "시간": "06:41:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1045, + "역명": "대티", + "시간": "08:40:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 11, + "열번": 1005, + "역명": "대티", + "시간": "06:23:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2024, + "역명": "대티", + "시간": "07:22:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1065, + "역명": "대티", + "시간": "09:20:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2092, + "역명": "대티", + "시간": "10:17:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1123, + "역명": "대티", + "시간": "12:14:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2146, + "역명": "대티", + "시간": "13:11:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1177, + "역명": "대티", + "시간": "15:10:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2200, + "역명": "대티", + "시간": "16:06:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1237, + "역명": "대티", + "시간": "18:05:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 11, + "열번": 2262, + "역명": "대티", + "시간": "19:00:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2016, + "역명": "대티", + "시간": "06:52:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1051, + "역명": "대티", + "시간": "08:52:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2082, + "역명": "대티", + "시간": "09:47:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1115, + "역명": "대티", + "시간": "11:48:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2138, + "역명": "대티", + "시간": "12:45:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1169, + "역명": "대티", + "시간": "14:44:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "대티", + "시간": "15:40:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1227, + "역명": "대티", + "시간": "17:40:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2252, + "역명": "대티", + "시간": "18:35:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1303, + "역명": "대티", + "시간": "20:31:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2314, + "역명": "대티", + "시간": "21:27:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1343, + "역명": "대티", + "시간": "23:25:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1007, + "역명": "대티", + "시간": "06:34:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2028, + "역명": "대티", + "시간": "07:32:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1071, + "역명": "대티", + "시간": "09:32:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2096, + "역명": "대티", + "시간": "10:29:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1127, + "역명": "대티", + "시간": "12:27:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2150, + "역명": "대티", + "시간": "13:24:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1181, + "역명": "대티", + "시간": "15:23:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2204, + "역명": "대티", + "시간": "16:18:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1241, + "역명": "대티", + "시간": "18:15:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2266, + "역명": "대티", + "시간": "19:10:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1313, + "역명": "대티", + "시간": "21:11:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2324, + "역명": "대티", + "시간": "22:12:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 13, + "열번": 1351, + "역명": "대티", + "시간": "00:11:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 14, + "열번": 1001, + "역명": "대티", + "시간": "06:04:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2018, + "역명": "대티", + "시간": "07:01:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1055, + "역명": "대티", + "시간": "09:00:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1009, + "역명": "대티", + "시간": "06:45:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2032, + "역명": "대티", + "시간": "07:42:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1075, + "역명": "대티", + "시간": "09:41:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2100, + "역명": "대티", + "시간": "10:41:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1131, + "역명": "대티", + "시간": "12:40:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2154, + "역명": "대티", + "시간": "13:37:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1185, + "역명": "대티", + "시간": "15:36:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2208, + "역명": "대티", + "시간": "16:35:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1249, + "역명": "대티", + "시간": "18:32:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2274, + "역명": "대티", + "시간": "19:30:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2026, + "역명": "대티", + "시간": "07:27:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1067, + "역명": "대티", + "시간": "09:24:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2036, + "역명": "대티", + "시간": "07:51:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2030, + "역명": "대티", + "시간": "07:37:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1073, + "역명": "대티", + "시간": "09:36:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2098, + "역명": "대티", + "시간": "10:35:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1129, + "역명": "대티", + "시간": "12:34:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2152, + "역명": "대티", + "시간": "13:30:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1183, + "역명": "대티", + "시간": "15:29:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2206, + "역명": "대티", + "시간": "16:30:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1247, + "역명": "대티", + "시간": "18:28:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2272, + "역명": "대티", + "시간": "19:25:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1317, + "역명": "대티", + "시간": "21:27:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2326, + "역명": "대티", + "시간": "22:22:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 18, + "열번": 7931, + "역명": "대티", + "시간": "00:27:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 19, + "열번": 1011, + "역명": "대티", + "시간": "06:56:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2038, + "역명": "대티", + "시간": "07:55:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1079, + "역명": "대티", + "시간": "09:52:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2102, + "역명": "대티", + "시간": "10:48:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1133, + "역명": "대티", + "시간": "12:47:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2156, + "역명": "대티", + "시간": "13:43:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1187, + "역명": "대티", + "시간": "15:42:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2210, + "역명": "대티", + "시간": "16:40:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1253, + "역명": "대티", + "시간": "18:40:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2278, + "역명": "대티", + "시간": "19:40:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2034, + "역명": "대티", + "시간": "07:46:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 20, + "열번": 1077, + "역명": "대티", + "시간": "09:46:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 21, + "열번": 1013, + "역명": "대티", + "시간": "07:07:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2042, + "역명": "대티", + "시간": "08:04:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1083, + "역명": "대티", + "시간": "10:04:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2106, + "역명": "대티", + "시간": "11:01:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1137, + "역명": "대티", + "시간": "13:00:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2160, + "역명": "대티", + "시간": "13:56:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1191, + "역명": "대티", + "시간": "15:55:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2214, + "역명": "대티", + "시간": "16:50:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1257, + "역명": "대티", + "시간": "18:48:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2280, + "역명": "대티", + "시간": "19:45:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1321, + "역명": "대티", + "시간": "21:43:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2330, + "역명": "대티", + "시간": "22:44:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2040, + "역명": "대티", + "시간": "08:00:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1081, + "역명": "대티", + "시간": "09:58:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2104, + "역명": "대티", + "시간": "10:54:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1135, + "역명": "대티", + "시간": "12:53:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2158, + "역명": "대티", + "시간": "13:50:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1189, + "역명": "대티", + "시간": "15:49:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2212, + "역명": "대티", + "시간": "16:45:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1255, + "역명": "대티", + "시간": "18:44:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2044, + "역명": "대티", + "시간": "08:09:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "대티", + "시간": "08:18:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1087, + "역명": "대티", + "시간": "10:17:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2110, + "역명": "대티", + "시간": "11:14:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1141, + "역명": "대티", + "시간": "13:13:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2164, + "역명": "대티", + "시간": "14:09:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1195, + "역명": "대티", + "시간": "16:08:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2218, + "역명": "대티", + "시간": "17:05:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1265, + "역명": "대티", + "시간": "19:04:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 24, + "열번": 2286, + "역명": "대티", + "시간": "20:03:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "대티", + "시간": "07:35:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2054, + "역명": "대티", + "시간": "08:31:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1091, + "역명": "대티", + "시간": "10:30:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2114, + "역명": "대티", + "시간": "11:27:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1145, + "역명": "대티", + "시간": "13:26:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2168, + "역명": "대티", + "시간": "14:22:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1199, + "역명": "대티", + "시간": "16:21:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2222, + "역명": "대티", + "시간": "17:18:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1271, + "역명": "대티", + "시간": "19:16:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2290, + "역명": "대티", + "시간": "20:15:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1329, + "역명": "대티", + "시간": "22:15:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2336, + "역명": "대티", + "시간": "23:18:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2052, + "역명": "대티", + "시간": "08:27:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1089, + "역명": "대티", + "시간": "10:24:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2112, + "역명": "대티", + "시간": "11:20:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1143, + "역명": "대티", + "시간": "13:19:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2166, + "역명": "대티", + "시간": "14:16:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1197, + "역명": "대티", + "시간": "16:15:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2220, + "역명": "대티", + "시간": "17:14:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1269, + "역명": "대티", + "시간": "19:12:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2288, + "역명": "대티", + "시간": "20:09:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1327, + "역명": "대티", + "시간": "22:07:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 26, + "열번": 2334, + "역명": "대티", + "시간": "23:08:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1023, + "역명": "대티", + "시간": "07:51:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 27, + "열번": 2060, + "역명": "대티", + "시간": "08:46:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2056, + "역명": "대티", + "시간": "08:36:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1093, + "역명": "대티", + "시간": "10:37:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2116, + "역명": "대티", + "시간": "11:33:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1147, + "역명": "대티", + "시간": "13:32:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2170, + "역명": "대티", + "시간": "14:29:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1201, + "역명": "대티", + "시간": "16:28:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2224, + "역명": "대티", + "시간": "17:26:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1275, + "역명": "대티", + "시간": "19:24:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2292, + "역명": "대티", + "시간": "20:21:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1331, + "역명": "대티", + "시간": "22:24:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1027, + "역명": "대티", + "시간": "08:01:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2064, + "역명": "대티", + "시간": "08:56:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1099, + "역명": "대티", + "시간": "10:56:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2122, + "역명": "대티", + "시간": "11:53:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1153, + "역명": "대티", + "시간": "13:52:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2176, + "역명": "대티", + "시간": "14:48:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1207, + "역명": "대티", + "시간": "16:46:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2230, + "역명": "대티", + "시간": "17:42:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1283, + "역명": "대티", + "시간": "19:40:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 29, + "열번": 2298, + "역명": "대티", + "시간": "20:39:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1037, + "역명": "대티", + "시간": "08:24:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1031, + "역명": "대티", + "시간": "08:11:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2068, + "역명": "대티", + "시간": "09:06:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1101, + "역명": "대티", + "시간": "11:03:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2124, + "역명": "대티", + "시간": "11:59:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1155, + "역명": "대티", + "시간": "13:58:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2178, + "역명": "대티", + "시간": "14:55:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1209, + "역명": "대티", + "시간": "16:52:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2232, + "역명": "대티", + "시간": "17:50:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1287, + "역명": "대티", + "시간": "19:48:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2300, + "역명": "대티", + "시간": "20:45:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1335, + "역명": "대티", + "시간": "22:44:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 32, + "열번": 1049, + "역명": "대티", + "시간": "08:48:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1035, + "역명": "대티", + "시간": "08:20:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2072, + "역명": "대티", + "시간": "09:17:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1105, + "역명": "대티", + "시간": "11:16:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2128, + "역명": "대티", + "시간": "12:12:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1159, + "역명": "대티", + "시간": "14:11:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2182, + "역명": "대티", + "시간": "15:08:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1215, + "역명": "대티", + "시간": "17:10:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2238, + "역명": "대티", + "시간": "18:06:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1295, + "역명": "대티", + "시간": "20:06:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2306, + "역명": "대티", + "시간": "21:03:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 33, + "열번": 1339, + "역명": "대티", + "시간": "23:04:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 34, + "열번": 1061, + "역명": "대티", + "시간": "09:12:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1041, + "역명": "대티", + "시간": "08:32:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2076, + "역명": "대티", + "시간": "09:29:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1109, + "역명": "대티", + "시간": "11:29:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2132, + "역명": "대티", + "시간": "12:25:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1163, + "역명": "대티", + "시간": "14:24:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2186, + "역명": "대티", + "시간": "15:21:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1219, + "역명": "대티", + "시간": "17:20:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 35, + "열번": 2242, + "역명": "대티", + "시간": "18:14:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 36, + "열번": 8904, + "역명": "대티", + "시간": "16:24:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1245, + "역명": "대티", + "시간": "18:24:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 36, + "열번": 2270, + "역명": "대티", + "시간": "19:20:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1315, + "역명": "대티", + "시간": "21:19:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1043, + "역명": "대티", + "시간": "08:36:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2078, + "역명": "대티", + "시간": "09:35:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1111, + "역명": "대티", + "시간": "11:35:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2134, + "역명": "대티", + "시간": "12:32:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1165, + "역명": "대티", + "시간": "14:31:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2188, + "역명": "대티", + "시간": "15:27:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1221, + "역명": "대티", + "시간": "17:25:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 37, + "열번": 2246, + "역명": "대티", + "시간": "18:22:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 38, + "열번": 8906, + "역명": "대티", + "시간": "16:55:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 38, + "열번": 1259, + "역명": "대티", + "시간": "18:52:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 39, + "열번": 1047, + "역명": "대티", + "시간": "08:44:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2080, + "역명": "대티", + "시간": "09:41:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1113, + "역명": "대티", + "시간": "11:42:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2136, + "역명": "대티", + "시간": "12:38:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1167, + "역명": "대티", + "시간": "14:37:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2190, + "역명": "대티", + "시간": "15:34:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1225, + "역명": "대티", + "시간": "17:35:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 39, + "열번": 2250, + "역명": "대티", + "시간": "18:30:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 40, + "열번": 8908, + "역명": "대티", + "시간": "17:10:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 40, + "열번": 1267, + "역명": "대티", + "시간": "19:08:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 41, + "열번": 1053, + "역명": "대티", + "시간": "08:56:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2084, + "역명": "대티", + "시간": "09:53:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1117, + "역명": "대티", + "시간": "11:55:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2140, + "역명": "대티", + "시간": "12:51:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1171, + "역명": "대티", + "시간": "14:50:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2194, + "역명": "대티", + "시간": "15:47:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1229, + "역명": "대티", + "시간": "17:45:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2254, + "역명": "대티", + "시간": "18:40:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1305, + "역명": "대티", + "시간": "20:39:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2316, + "역명": "대티", + "시간": "21:34:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1345, + "역명": "대티", + "시간": "23:36:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 42, + "열번": 8910, + "역명": "대티", + "시간": "17:22:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 42, + "열번": 1273, + "역명": "대티", + "시간": "19:20:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 43, + "열번": 1057, + "역명": "대티", + "시간": "09:04:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2086, + "역명": "대티", + "시간": "09:59:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1119, + "역명": "대티", + "시간": "12:01:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2142, + "역명": "대티", + "시간": "12:58:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1173, + "역명": "대티", + "시간": "14:57:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2196, + "역명": "대티", + "시간": "15:53:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1233, + "역명": "대티", + "시간": "17:55:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2258, + "역명": "대티", + "시간": "18:50:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1307, + "역명": "대티", + "시간": "20:47:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 43, + "열번": 2318, + "역명": "대티", + "시간": "21:42:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 44, + "열번": 8912, + "역명": "대티", + "시간": "17:34:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 44, + "열번": 1279, + "역명": "대티", + "시간": "19:32:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 45, + "열번": 1069, + "역명": "대티", + "시간": "09:28:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2094, + "역명": "대티", + "시간": "10:23:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1125, + "역명": "대티", + "시간": "12:21:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2148, + "역명": "대티", + "시간": "13:17:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1179, + "역명": "대티", + "시간": "15:16:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2202, + "역명": "대티", + "시간": "16:12:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1239, + "역명": "대티", + "시간": "18:10:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2264, + "역명": "대티", + "시간": "19:05:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1311, + "역명": "대티", + "시간": "21:03:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2322, + "역명": "대티", + "시간": "22:02:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 45, + "열번": 1349, + "역명": "대티", + "시간": "00:00:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 46, + "열번": 8914, + "역명": "대티", + "시간": "17:46:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 46, + "열번": 1285, + "역명": "대티", + "시간": "19:44:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 47, + "열번": 1211, + "역명": "대티", + "시간": "16:58:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 47, + "열번": 2234, + "역명": "대티", + "시간": "17:54:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 47, + "열번": 1289, + "역명": "대티", + "시간": "19:52:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 47, + "열번": 2302, + "역명": "대티", + "시간": "20:51:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 48, + "열번": 8916, + "역명": "대티", + "시간": "17:58:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 48, + "열번": 1291, + "역명": "대티", + "시간": "19:56:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 49, + "열번": 1223, + "역명": "대티", + "시간": "17:30:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 49, + "열번": 2248, + "역명": "대티", + "시간": "18:26:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 49, + "열번": 1301, + "역명": "대티", + "시간": "20:23:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 49, + "열번": 2312, + "역명": "대티", + "시간": "21:21:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 50, + "열번": 2244, + "역명": "대티", + "시간": "18:18:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 50, + "열번": 1299, + "역명": "대티", + "시간": "20:16:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 50, + "열번": 2310, + "역명": "대티", + "시간": "21:15:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 50, + "열번": 1341, + "역명": "대티", + "시간": "23:14:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 51, + "열번": 1231, + "역명": "대티", + "시간": "17:50:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 51, + "열번": 2256, + "역명": "대티", + "시간": "18:45:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 52, + "열번": 6906, + "역명": "대티", + "시간": "09:44:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 52, + "열번": 5905, + "역명": "대티", + "시간": "11:45:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 53, + "열번": 1243, + "역명": "대티", + "시간": "18:20:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 53, + "열번": 2268, + "역명": "대티", + "시간": "19:15:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 54, + "열번": 6910, + "역명": "대티", + "시간": "13:27:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 54, + "열번": 5907, + "역명": "대티", + "시간": "15:26:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 55, + "열번": 1251, + "역명": "대티", + "시간": "18:36:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 55, + "열번": 2276, + "역명": "대티", + "시간": "19:35:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 55, + "열번": 1319, + "역명": "대티", + "시간": "21:35:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 55, + "열번": 2328, + "역명": "대티", + "시간": "22:32:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 57, + "열번": 1263, + "역명": "대티", + "시간": "19:00:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 57, + "열번": 2284, + "역명": "대티", + "시간": "19:57:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 57, + "열번": 1325, + "역명": "대티", + "시간": "21:59:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 57, + "열번": 2332, + "역명": "대티", + "시간": "22:56:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 59, + "열번": 5901, + "역명": "대티", + "시간": "10:53:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 59, + "열번": 6902, + "역명": "대티", + "시간": "11:49:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 61, + "열번": 5903, + "역명": "대티", + "시간": "14:21:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 61, + "열번": 5904, + "역명": "대티", + "시간": "15:17:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "괴정", + "시간": "05:26:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "괴정", + "시간": "07:28:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2050, + "역명": "괴정", + "시간": "08:21:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "괴정", + "시간": "05:10:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "괴정", + "시간": "07:19:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "괴정", + "시간": "08:12:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1085, + "역명": "괴정", + "시간": "10:12:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2108, + "역명": "괴정", + "시간": "11:06:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1139, + "역명": "괴정", + "시간": "13:08:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2162, + "역명": "괴정", + "시간": "14:01:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1193, + "역명": "괴정", + "시간": "16:03:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2216, + "역명": "괴정", + "시간": "16:58:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1261, + "역명": "괴정", + "시간": "18:57:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2282, + "역명": "괴정", + "시간": "19:49:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1323, + "역명": "괴정", + "시간": "21:52:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "괴정", + "시간": "05:39:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "괴정", + "시간": "07:46:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2058, + "역명": "괴정", + "시간": "08:39:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1095, + "역명": "괴정", + "시간": "10:45:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2118, + "역명": "괴정", + "시간": "11:38:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1149, + "역명": "괴정", + "시간": "13:40:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2172, + "역명": "괴정", + "시간": "14:34:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1203, + "역명": "괴정", + "시간": "16:35:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2226, + "역명": "괴정", + "시간": "17:28:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1277, + "역명": "괴정", + "시간": "19:29:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2294, + "역명": "괴정", + "시간": "20:25:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "괴정", + "시간": "05:52:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1025, + "역명": "괴정", + "시간": "07:57:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2062, + "역명": "괴정", + "시간": "08:49:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1097, + "역명": "괴정", + "시간": "10:51:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2120, + "역명": "괴정", + "시간": "11:45:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1151, + "역명": "괴정", + "시간": "13:47:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2174, + "역명": "괴정", + "시간": "14:40:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1205, + "역명": "괴정", + "시간": "16:41:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2228, + "역명": "괴정", + "시간": "17:36:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1281, + "역명": "괴정", + "시간": "19:37:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2296, + "역명": "괴정", + "시간": "20:31:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1333, + "역명": "괴정", + "시간": "22:35:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2338, + "역명": "괴정", + "시간": "23:32:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2008, + "역명": "괴정", + "시간": "06:04:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1029, + "역명": "괴정", + "시간": "08:07:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2066, + "역명": "괴정", + "시간": "08:59:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2010, + "역명": "괴정", + "시간": "06:16:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1033, + "역명": "괴정", + "시간": "08:17:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2070, + "역명": "괴정", + "시간": "09:09:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1103, + "역명": "괴정", + "시간": "11:11:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2126, + "역명": "괴정", + "시간": "12:04:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1157, + "역명": "괴정", + "시간": "14:06:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2180, + "역명": "괴정", + "시간": "15:00:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1213, + "역명": "괴정", + "시간": "17:05:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2236, + "역명": "괴정", + "시간": "18:00:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1293, + "역명": "괴정", + "시간": "20:02:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2304, + "역명": "괴정", + "시간": "20:55:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1337, + "역명": "괴정", + "시간": "22:55:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1003, + "역명": "괴정", + "시간": "06:14:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2020, + "역명": "괴정", + "시간": "07:08:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1059, + "역명": "괴정", + "시간": "09:09:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2088, + "역명": "괴정", + "시간": "10:03:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1121, + "역명": "괴정", + "시간": "12:09:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2144, + "역명": "괴정", + "시간": "13:03:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1175, + "역명": "괴정", + "시간": "15:05:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2198, + "역명": "괴정", + "시간": "15:58:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1235, + "역명": "괴정", + "시간": "18:01:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2260, + "역명": "괴정", + "시간": "18:53:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1309, + "역명": "괴정", + "시간": "20:56:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2320, + "역명": "괴정", + "시간": "21:50:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1347, + "역명": "괴정", + "시간": "23:49:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2012, + "역명": "괴정", + "시간": "06:28:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1039, + "역명": "괴정", + "시간": "08:29:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2074, + "역명": "괴정", + "시간": "09:21:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1107, + "역명": "괴정", + "시간": "11:24:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2130, + "역명": "괴정", + "시간": "12:17:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1161, + "역명": "괴정", + "시간": "14:19:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2184, + "역명": "괴정", + "시간": "15:13:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1217, + "역명": "괴정", + "시간": "17:16:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2240, + "역명": "괴정", + "시간": "18:08:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1297, + "역명": "괴정", + "시간": "20:12:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 8, + "열번": 2308, + "역명": "괴정", + "시간": "21:07:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 9, + "열번": 2022, + "역명": "괴정", + "시간": "07:14:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1063, + "역명": "괴정", + "시간": "09:17:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 9, + "열번": 2090, + "역명": "괴정", + "시간": "10:09:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2014, + "역명": "괴정", + "시간": "06:40:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1045, + "역명": "괴정", + "시간": "08:41:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 11, + "열번": 1005, + "역명": "괴정", + "시간": "06:25:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2024, + "역명": "괴정", + "시간": "07:20:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1065, + "역명": "괴정", + "시간": "09:21:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2092, + "역명": "괴정", + "시간": "10:15:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1123, + "역명": "괴정", + "시간": "12:16:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2146, + "역명": "괴정", + "시간": "13:09:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1177, + "역명": "괴정", + "시간": "15:11:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2200, + "역명": "괴정", + "시간": "16:04:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1237, + "역명": "괴정", + "시간": "18:06:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 11, + "열번": 2262, + "역명": "괴정", + "시간": "18:58:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2016, + "역명": "괴정", + "시간": "06:51:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1051, + "역명": "괴정", + "시간": "08:53:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2082, + "역명": "괴정", + "시간": "09:45:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1115, + "역명": "괴정", + "시간": "11:50:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2138, + "역명": "괴정", + "시간": "12:43:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1169, + "역명": "괴정", + "시간": "14:45:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "괴정", + "시간": "15:39:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1227, + "역명": "괴정", + "시간": "17:41:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2252, + "역명": "괴정", + "시간": "18:33:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1303, + "역명": "괴정", + "시간": "20:32:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2314, + "역명": "괴정", + "시간": "21:25:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1343, + "역명": "괴정", + "시간": "23:26:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1007, + "역명": "괴정", + "시간": "06:36:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2028, + "역명": "괴정", + "시간": "07:31:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1071, + "역명": "괴정", + "시간": "09:33:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2096, + "역명": "괴정", + "시간": "10:27:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1127, + "역명": "괴정", + "시간": "12:29:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2150, + "역명": "괴정", + "시간": "13:22:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1181, + "역명": "괴정", + "시간": "15:24:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2204, + "역명": "괴정", + "시간": "16:16:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1241, + "역명": "괴정", + "시간": "18:16:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2266, + "역명": "괴정", + "시간": "19:08:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1313, + "역명": "괴정", + "시간": "21:12:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2324, + "역명": "괴정", + "시간": "22:10:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 13, + "열번": 1351, + "역명": "괴정", + "시간": "00:13:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 14, + "열번": 1001, + "역명": "괴정", + "시간": "06:06:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2018, + "역명": "괴정", + "시간": "07:00:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1055, + "역명": "괴정", + "시간": "09:01:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1009, + "역명": "괴정", + "시간": "06:47:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2032, + "역명": "괴정", + "시간": "07:40:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1075, + "역명": "괴정", + "시간": "09:42:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2100, + "역명": "괴정", + "시간": "10:40:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1131, + "역명": "괴정", + "시간": "12:42:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2154, + "역명": "괴정", + "시간": "13:35:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1185, + "역명": "괴정", + "시간": "15:37:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2208, + "역명": "괴정", + "시간": "16:33:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1249, + "역명": "괴정", + "시간": "18:33:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2274, + "역명": "괴정", + "시간": "19:28:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2026, + "역명": "괴정", + "시간": "07:26:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1067, + "역명": "괴정", + "시간": "09:25:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2036, + "역명": "괴정", + "시간": "07:49:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2030, + "역명": "괴정", + "시간": "07:36:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1073, + "역명": "괴정", + "시간": "09:37:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2098, + "역명": "괴정", + "시간": "10:33:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1129, + "역명": "괴정", + "시간": "12:35:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2152, + "역명": "괴정", + "시간": "13:29:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1183, + "역명": "괴정", + "시간": "15:31:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2206, + "역명": "괴정", + "시간": "16:28:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1247, + "역명": "괴정", + "시간": "18:29:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2272, + "역명": "괴정", + "시간": "19:23:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1317, + "역명": "괴정", + "시간": "21:28:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2326, + "역명": "괴정", + "시간": "22:20:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 18, + "열번": 7931, + "역명": "괴정", + "시간": "00:29:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 19, + "열번": 1011, + "역명": "괴정", + "시간": "06:58:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2038, + "역명": "괴정", + "시간": "07:54:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1079, + "역명": "괴정", + "시간": "09:54:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2102, + "역명": "괴정", + "시간": "10:46:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1133, + "역명": "괴정", + "시간": "12:48:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2156, + "역명": "괴정", + "시간": "13:42:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1187, + "역명": "괴정", + "시간": "15:44:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2210, + "역명": "괴정", + "시간": "16:38:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1253, + "역명": "괴정", + "시간": "18:41:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2278, + "역명": "괴정", + "시간": "19:38:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2034, + "역명": "괴정", + "시간": "07:45:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 20, + "열번": 1077, + "역명": "괴정", + "시간": "09:48:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 21, + "열번": 1013, + "역명": "괴정", + "시간": "07:09:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2042, + "역명": "괴정", + "시간": "08:03:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1083, + "역명": "괴정", + "시간": "10:06:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2106, + "역명": "괴정", + "시간": "10:59:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1137, + "역명": "괴정", + "시간": "13:01:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2160, + "역명": "괴정", + "시간": "13:55:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1191, + "역명": "괴정", + "시간": "15:57:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2214, + "역명": "괴정", + "시간": "16:48:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1257, + "역명": "괴정", + "시간": "18:49:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2280, + "역명": "괴정", + "시간": "19:43:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1321, + "역명": "괴정", + "시간": "21:44:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2330, + "역명": "괴정", + "시간": "22:42:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2040, + "역명": "괴정", + "시간": "07:58:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1081, + "역명": "괴정", + "시간": "10:00:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2104, + "역명": "괴정", + "시간": "10:53:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1135, + "역명": "괴정", + "시간": "12:55:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2158, + "역명": "괴정", + "시간": "13:48:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1189, + "역명": "괴정", + "시간": "15:50:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2212, + "역명": "괴정", + "시간": "16:43:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1255, + "역명": "괴정", + "시간": "18:45:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2044, + "역명": "괴정", + "시간": "08:07:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "괴정", + "시간": "08:16:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1087, + "역명": "괴정", + "시간": "10:19:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2110, + "역명": "괴정", + "시간": "11:12:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1141, + "역명": "괴정", + "시간": "13:14:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2164, + "역명": "괴정", + "시간": "14:08:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1195, + "역명": "괴정", + "시간": "16:10:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2218, + "역명": "괴정", + "시간": "17:03:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1265, + "역명": "괴정", + "시간": "19:05:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 24, + "열번": 2286, + "역명": "괴정", + "시간": "20:01:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "괴정", + "시간": "07:37:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2054, + "역명": "괴정", + "시간": "08:30:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1091, + "역명": "괴정", + "시간": "10:32:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2114, + "역명": "괴정", + "시간": "11:25:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1145, + "역명": "괴정", + "시간": "13:27:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2168, + "역명": "괴정", + "시간": "14:21:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1199, + "역명": "괴정", + "시간": "16:23:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2222, + "역명": "괴정", + "시간": "17:16:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1271, + "역명": "괴정", + "시간": "19:17:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2290, + "역명": "괴정", + "시간": "20:13:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1329, + "역명": "괴정", + "시간": "22:16:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2336, + "역명": "괴정", + "시간": "23:17:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2052, + "역명": "괴정", + "시간": "08:25:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1089, + "역명": "괴정", + "시간": "10:25:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2112, + "역명": "괴정", + "시간": "11:19:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1143, + "역명": "괴정", + "시간": "13:21:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2166, + "역명": "괴정", + "시간": "14:14:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1197, + "역명": "괴정", + "시간": "16:16:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2220, + "역명": "괴정", + "시간": "17:12:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1269, + "역명": "괴정", + "시간": "19:13:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2288, + "역명": "괴정", + "시간": "20:07:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1327, + "역명": "괴정", + "시간": "22:08:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 26, + "열번": 2334, + "역명": "괴정", + "시간": "23:06:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1023, + "역명": "괴정", + "시간": "07:52:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 27, + "열번": 2060, + "역명": "괴정", + "시간": "08:44:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2056, + "역명": "괴정", + "시간": "08:34:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1093, + "역명": "괴정", + "시간": "10:38:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2116, + "역명": "괴정", + "시간": "11:32:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1147, + "역명": "괴정", + "시간": "13:34:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2170, + "역명": "괴정", + "시간": "14:27:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1201, + "역명": "괴정", + "시간": "16:29:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2224, + "역명": "괴정", + "시간": "17:24:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1275, + "역명": "괴정", + "시간": "19:25:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2292, + "역명": "괴정", + "시간": "20:19:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1331, + "역명": "괴정", + "시간": "22:25:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1027, + "역명": "괴정", + "시간": "08:02:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2064, + "역명": "괴정", + "시간": "08:54:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1099, + "역명": "괴정", + "시간": "10:58:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2122, + "역명": "괴정", + "시간": "11:51:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1153, + "역명": "괴정", + "시간": "13:53:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2176, + "역명": "괴정", + "시간": "14:47:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1207, + "역명": "괴정", + "시간": "16:47:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2230, + "역명": "괴정", + "시간": "17:40:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1283, + "역명": "괴정", + "시간": "19:41:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 29, + "열번": 2298, + "역명": "괴정", + "시간": "20:37:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1037, + "역명": "괴정", + "시간": "08:25:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1031, + "역명": "괴정", + "시간": "08:12:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2068, + "역명": "괴정", + "시간": "09:04:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1101, + "역명": "괴정", + "시간": "11:04:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2124, + "역명": "괴정", + "시간": "11:58:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1155, + "역명": "괴정", + "시간": "14:00:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2178, + "역명": "괴정", + "시간": "14:53:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1209, + "역명": "괴정", + "시간": "16:53:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2232, + "역명": "괴정", + "시간": "17:48:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1287, + "역명": "괴정", + "시간": "19:49:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2300, + "역명": "괴정", + "시간": "20:43:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1335, + "역명": "괴정", + "시간": "22:45:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 32, + "열번": 1049, + "역명": "괴정", + "시간": "08:49:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1035, + "역명": "괴정", + "시간": "08:21:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2072, + "역명": "괴정", + "시간": "09:15:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1105, + "역명": "괴정", + "시간": "11:17:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2128, + "역명": "괴정", + "시간": "12:11:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1159, + "역명": "괴정", + "시간": "14:13:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2182, + "역명": "괴정", + "시간": "15:06:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1215, + "역명": "괴정", + "시간": "17:11:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2238, + "역명": "괴정", + "시간": "18:04:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1295, + "역명": "괴정", + "시간": "20:07:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2306, + "역명": "괴정", + "시간": "21:01:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 33, + "열번": 1339, + "역명": "괴정", + "시간": "23:05:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 34, + "열번": 1061, + "역명": "괴정", + "시간": "09:13:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1041, + "역명": "괴정", + "시간": "08:33:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2076, + "역명": "괴정", + "시간": "09:27:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1109, + "역명": "괴정", + "시간": "11:30:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2132, + "역명": "괴정", + "시간": "12:24:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1163, + "역명": "괴정", + "시간": "14:26:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2186, + "역명": "괴정", + "시간": "15:19:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1219, + "역명": "괴정", + "시간": "17:21:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 35, + "열번": 2242, + "역명": "괴정", + "시간": "18:12:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 36, + "열번": 8904, + "역명": "괴정", + "시간": "16:22:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1245, + "역명": "괴정", + "시간": "18:25:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 36, + "열번": 2270, + "역명": "괴정", + "시간": "19:18:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1315, + "역명": "괴정", + "시간": "21:20:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1043, + "역명": "괴정", + "시간": "08:37:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2078, + "역명": "괴정", + "시간": "09:33:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1111, + "역명": "괴정", + "시간": "11:37:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2134, + "역명": "괴정", + "시간": "12:30:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1165, + "역명": "괴정", + "시간": "14:32:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2188, + "역명": "괴정", + "시간": "15:26:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1221, + "역명": "괴정", + "시간": "17:26:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 37, + "열번": 2246, + "역명": "괴정", + "시간": "18:20:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 38, + "열번": 8906, + "역명": "괴정", + "시간": "16:53:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 38, + "열번": 1259, + "역명": "괴정", + "시간": "18:53:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 39, + "열번": 1047, + "역명": "괴정", + "시간": "08:45:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2080, + "역명": "괴정", + "시간": "09:39:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1113, + "역명": "괴정", + "시간": "11:43:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2136, + "역명": "괴정", + "시간": "12:37:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1167, + "역명": "괴정", + "시간": "14:39:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2190, + "역명": "괴정", + "시간": "15:32:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1225, + "역명": "괴정", + "시간": "17:36:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 39, + "열번": 2250, + "역명": "괴정", + "시간": "18:28:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 40, + "열번": 8908, + "역명": "괴정", + "시간": "17:08:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 40, + "열번": 1267, + "역명": "괴정", + "시간": "19:09:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 41, + "열번": 1053, + "역명": "괴정", + "시간": "08:57:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2084, + "역명": "괴정", + "시간": "09:51:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1117, + "역명": "괴정", + "시간": "11:56:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2140, + "역명": "괴정", + "시간": "12:50:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1171, + "역명": "괴정", + "시간": "14:52:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2194, + "역명": "괴정", + "시간": "15:45:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1229, + "역명": "괴정", + "시간": "17:46:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2254, + "역명": "괴정", + "시간": "18:38:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1305, + "역명": "괴정", + "시간": "20:40:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2316, + "역명": "괴정", + "시간": "21:32:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1345, + "역명": "괴정", + "시간": "23:37:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 42, + "열번": 8910, + "역명": "괴정", + "시간": "17:20:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 42, + "열번": 1273, + "역명": "괴정", + "시간": "19:21:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 43, + "열번": 1057, + "역명": "괴정", + "시간": "09:05:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2086, + "역명": "괴정", + "시간": "09:57:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1119, + "역명": "괴정", + "시간": "12:03:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2142, + "역명": "괴정", + "시간": "12:56:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1173, + "역명": "괴정", + "시간": "14:58:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2196, + "역명": "괴정", + "시간": "15:52:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1233, + "역명": "괴정", + "시간": "17:56:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2258, + "역명": "괴정", + "시간": "18:48:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1307, + "역명": "괴정", + "시간": "20:48:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 43, + "열번": 2318, + "역명": "괴정", + "시간": "21:40:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 44, + "열번": 8912, + "역명": "괴정", + "시간": "17:32:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 44, + "열번": 1279, + "역명": "괴정", + "시간": "19:33:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 45, + "열번": 1069, + "역명": "괴정", + "시간": "09:29:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2094, + "역명": "괴정", + "시간": "10:21:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1125, + "역명": "괴정", + "시간": "12:22:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2148, + "역명": "괴정", + "시간": "13:16:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1179, + "역명": "괴정", + "시간": "15:18:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2202, + "역명": "괴정", + "시간": "16:10:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1239, + "역명": "괴정", + "시간": "18:11:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2264, + "역명": "괴정", + "시간": "19:03:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1311, + "역명": "괴정", + "시간": "21:04:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2322, + "역명": "괴정", + "시간": "22:00:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 45, + "열번": 1349, + "역명": "괴정", + "시간": "00:01:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 46, + "열번": 8914, + "역명": "괴정", + "시간": "17:44:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 46, + "열번": 1285, + "역명": "괴정", + "시간": "19:45:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 47, + "열번": 1211, + "역명": "괴정", + "시간": "16:59:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 47, + "열번": 2234, + "역명": "괴정", + "시간": "17:52:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 47, + "열번": 1289, + "역명": "괴정", + "시간": "19:53:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 47, + "열번": 2302, + "역명": "괴정", + "시간": "20:49:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 48, + "열번": 8916, + "역명": "괴정", + "시간": "17:56:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 48, + "열번": 1291, + "역명": "괴정", + "시간": "19:57:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 49, + "열번": 1223, + "역명": "괴정", + "시간": "17:31:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 49, + "열번": 2248, + "역명": "괴정", + "시간": "18:24:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 49, + "열번": 1301, + "역명": "괴정", + "시간": "20:24:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 49, + "열번": 2312, + "역명": "괴정", + "시간": "21:19:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 50, + "열번": 2244, + "역명": "괴정", + "시간": "18:16:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 50, + "열번": 1299, + "역명": "괴정", + "시간": "20:17:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 50, + "열번": 2310, + "역명": "괴정", + "시간": "21:13:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 50, + "열번": 1341, + "역명": "괴정", + "시간": "23:15:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 51, + "열번": 1231, + "역명": "괴정", + "시간": "17:51:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 51, + "열번": 2256, + "역명": "괴정", + "시간": "18:43:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 52, + "열번": 6906, + "역명": "괴정", + "시간": "09:42:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 52, + "열번": 5905, + "역명": "괴정", + "시간": "11:46:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 53, + "열번": 1243, + "역명": "괴정", + "시간": "18:21:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 53, + "열번": 2268, + "역명": "괴정", + "시간": "19:13:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 54, + "열번": 6910, + "역명": "괴정", + "시간": "13:25:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 54, + "열번": 5907, + "역명": "괴정", + "시간": "15:27:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 55, + "열번": 1251, + "역명": "괴정", + "시간": "18:37:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 55, + "열번": 2276, + "역명": "괴정", + "시간": "19:33:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 55, + "열번": 1319, + "역명": "괴정", + "시간": "21:36:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 55, + "열번": 2328, + "역명": "괴정", + "시간": "22:30:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 57, + "열번": 1263, + "역명": "괴정", + "시간": "19:01:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 57, + "열번": 2284, + "역명": "괴정", + "시간": "19:55:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 57, + "열번": 1325, + "역명": "괴정", + "시간": "22:00:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 57, + "열번": 2332, + "역명": "괴정", + "시간": "22:54:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 59, + "열번": 5901, + "역명": "괴정", + "시간": "10:54:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 59, + "열번": 6902, + "역명": "괴정", + "시간": "11:48:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 61, + "열번": 5903, + "역명": "괴정", + "시간": "14:22:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 61, + "열번": 5904, + "역명": "괴정", + "시간": "15:16:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "사하", + "시간": "05:24:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "사하", + "시간": "07:30:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2050, + "역명": "사하", + "시간": "08:19:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "사하", + "시간": "05:08:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "사하", + "시간": "07:21:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "사하", + "시간": "08:10:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1085, + "역명": "사하", + "시간": "10:14:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2108, + "역명": "사하", + "시간": "11:04:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1139, + "역명": "사하", + "시간": "13:10:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2162, + "역명": "사하", + "시간": "14:00:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1193, + "역명": "사하", + "시간": "16:05:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2216, + "역명": "사하", + "시간": "16:57:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1261, + "역명": "사하", + "시간": "18:59:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2282, + "역명": "사하", + "시간": "19:48:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1323, + "역명": "사하", + "시간": "21:54:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "사하", + "시간": "05:38:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "사하", + "시간": "07:48:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2058, + "역명": "사하", + "시간": "08:38:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1095, + "역명": "사하", + "시간": "10:47:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2118, + "역명": "사하", + "시간": "11:37:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1149, + "역명": "사하", + "시간": "13:42:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2172, + "역명": "사하", + "시간": "14:32:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1203, + "역명": "사하", + "시간": "16:37:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2226, + "역명": "사하", + "시간": "17:27:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1277, + "역명": "사하", + "시간": "19:31:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2294, + "역명": "사하", + "시간": "20:24:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "사하", + "시간": "05:50:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1025, + "역명": "사하", + "시간": "07:59:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2062, + "역명": "사하", + "시간": "08:48:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1097, + "역명": "사하", + "시간": "10:53:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2120, + "역명": "사하", + "시간": "11:43:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1151, + "역명": "사하", + "시간": "13:49:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2174, + "역명": "사하", + "시간": "14:39:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1205, + "역명": "사하", + "시간": "16:43:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2228, + "역명": "사하", + "시간": "17:35:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1281, + "역명": "사하", + "시간": "19:39:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2296, + "역명": "사하", + "시간": "20:30:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1333, + "역명": "사하", + "시간": "22:37:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2338, + "역명": "사하", + "시간": "23:30:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2008, + "역명": "사하", + "시간": "06:02:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1029, + "역명": "사하", + "시간": "08:09:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2066, + "역명": "사하", + "시간": "08:58:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2010, + "역명": "사하", + "시간": "06:14:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1033, + "역명": "사하", + "시간": "08:19:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2070, + "역명": "사하", + "시간": "09:08:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1103, + "역명": "사하", + "시간": "11:13:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2126, + "역명": "사하", + "시간": "12:03:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1157, + "역명": "사하", + "시간": "14:08:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2180, + "역명": "사하", + "시간": "14:58:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1213, + "역명": "사하", + "시간": "17:07:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2236, + "역명": "사하", + "시간": "17:59:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1293, + "역명": "사하", + "시간": "20:04:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2304, + "역명": "사하", + "시간": "20:54:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1337, + "역명": "사하", + "시간": "22:57:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1003, + "역명": "사하", + "시간": "06:16:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2020, + "역명": "사하", + "시간": "07:07:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1059, + "역명": "사하", + "시간": "09:11:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2088, + "역명": "사하", + "시간": "10:02:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1121, + "역명": "사하", + "시간": "12:11:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2144, + "역명": "사하", + "시간": "13:01:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1175, + "역명": "사하", + "시간": "15:07:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2198, + "역명": "사하", + "시간": "15:57:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1235, + "역명": "사하", + "시간": "18:03:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2260, + "역명": "사하", + "시간": "18:52:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1309, + "역명": "사하", + "시간": "20:58:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2320, + "역명": "사하", + "시간": "21:49:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1347, + "역명": "사하", + "시간": "23:51:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2012, + "역명": "사하", + "시간": "06:26:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1039, + "역명": "사하", + "시간": "08:31:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2074, + "역명": "사하", + "시간": "09:20:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1107, + "역명": "사하", + "시간": "11:26:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2130, + "역명": "사하", + "시간": "12:16:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1161, + "역명": "사하", + "시간": "14:21:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2184, + "역명": "사하", + "시간": "15:11:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1217, + "역명": "사하", + "시간": "17:18:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2240, + "역명": "사하", + "시간": "18:07:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1297, + "역명": "사하", + "시간": "20:14:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 8, + "열번": 2308, + "역명": "사하", + "시간": "21:06:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 9, + "열번": 2022, + "역명": "사하", + "시간": "07:13:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1063, + "역명": "사하", + "시간": "09:19:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 9, + "열번": 2090, + "역명": "사하", + "시간": "10:08:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2014, + "역명": "사하", + "시간": "06:38:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1045, + "역명": "사하", + "시간": "08:43:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 11, + "열번": 1005, + "역명": "사하", + "시간": "06:27:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2024, + "역명": "사하", + "시간": "07:19:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1065, + "역명": "사하", + "시간": "09:23:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2092, + "역명": "사하", + "시간": "10:14:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1123, + "역명": "사하", + "시간": "12:18:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2146, + "역명": "사하", + "시간": "13:08:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1177, + "역명": "사하", + "시간": "15:13:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2200, + "역명": "사하", + "시간": "16:03:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1237, + "역명": "사하", + "시간": "18:08:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 11, + "열번": 2262, + "역명": "사하", + "시간": "18:57:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2016, + "역명": "사하", + "시간": "06:49:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1051, + "역명": "사하", + "시간": "08:55:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2082, + "역명": "사하", + "시간": "09:44:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1115, + "역명": "사하", + "시간": "11:52:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2138, + "역명": "사하", + "시간": "12:42:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1169, + "역명": "사하", + "시간": "14:47:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "사하", + "시간": "15:37:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1227, + "역명": "사하", + "시간": "17:43:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2252, + "역명": "사하", + "시간": "18:32:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1303, + "역명": "사하", + "시간": "20:34:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2314, + "역명": "사하", + "시간": "21:24:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1343, + "역명": "사하", + "시간": "23:28:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1007, + "역명": "사하", + "시간": "06:38:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2028, + "역명": "사하", + "시간": "07:29:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1071, + "역명": "사하", + "시간": "09:35:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2096, + "역명": "사하", + "시간": "10:26:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1127, + "역명": "사하", + "시간": "12:31:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2150, + "역명": "사하", + "시간": "13:21:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1181, + "역명": "사하", + "시간": "15:26:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2204, + "역명": "사하", + "시간": "16:15:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1241, + "역명": "사하", + "시간": "18:18:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2266, + "역명": "사하", + "시간": "19:07:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1313, + "역명": "사하", + "시간": "21:14:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2324, + "역명": "사하", + "시간": "22:09:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 13, + "열번": 1351, + "역명": "사하", + "시간": "00:15:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 14, + "열번": 1001, + "역명": "사하", + "시간": "06:08:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2018, + "역명": "사하", + "시간": "06:58:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1055, + "역명": "사하", + "시간": "09:03:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1009, + "역명": "사하", + "시간": "06:49:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2032, + "역명": "사하", + "시간": "07:39:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1075, + "역명": "사하", + "시간": "09:44:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2100, + "역명": "사하", + "시간": "10:38:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1131, + "역명": "사하", + "시간": "12:44:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2154, + "역명": "사하", + "시간": "13:34:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1185, + "역명": "사하", + "시간": "15:39:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2208, + "역명": "사하", + "시간": "16:32:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1249, + "역명": "사하", + "시간": "18:35:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2274, + "역명": "사하", + "시간": "19:27:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2026, + "역명": "사하", + "시간": "07:24:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1067, + "역명": "사하", + "시간": "09:27:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2036, + "역명": "사하", + "시간": "07:48:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2030, + "역명": "사하", + "시간": "07:34:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1073, + "역명": "사하", + "시간": "09:39:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2098, + "역명": "사하", + "시간": "10:32:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1129, + "역명": "사하", + "시간": "12:37:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2152, + "역명": "사하", + "시간": "13:27:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1183, + "역명": "사하", + "시간": "15:33:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2206, + "역명": "사하", + "시간": "16:27:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1247, + "역명": "사하", + "시간": "18:31:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2272, + "역명": "사하", + "시간": "19:22:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1317, + "역명": "사하", + "시간": "21:30:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2326, + "역명": "사하", + "시간": "22:19:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 18, + "열번": 7931, + "역명": "사하", + "시간": "00:31:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 19, + "열번": 1011, + "역명": "사하", + "시간": "07:00:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2038, + "역명": "사하", + "시간": "07:52:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1079, + "역명": "사하", + "시간": "09:56:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2102, + "역명": "사하", + "시간": "10:45:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1133, + "역명": "사하", + "시간": "12:50:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2156, + "역명": "사하", + "시간": "13:40:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1187, + "역명": "사하", + "시간": "15:46:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2210, + "역명": "사하", + "시간": "16:37:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1253, + "역명": "사하", + "시간": "18:43:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2278, + "역명": "사하", + "시간": "19:37:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2034, + "역명": "사하", + "시간": "07:43:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 20, + "열번": 1077, + "역명": "사하", + "시간": "09:50:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 21, + "열번": 1013, + "역명": "사하", + "시간": "07:11:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2042, + "역명": "사하", + "시간": "08:01:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1083, + "역명": "사하", + "시간": "10:08:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2106, + "역명": "사하", + "시간": "10:58:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1137, + "역명": "사하", + "시간": "13:03:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2160, + "역명": "사하", + "시간": "13:53:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1191, + "역명": "사하", + "시간": "15:59:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2214, + "역명": "사하", + "시간": "16:47:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1257, + "역명": "사하", + "시간": "18:51:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2280, + "역명": "사하", + "시간": "19:42:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1321, + "역명": "사하", + "시간": "21:46:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2330, + "역명": "사하", + "시간": "22:41:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2040, + "역명": "사하", + "시간": "07:57:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1081, + "역명": "사하", + "시간": "10:02:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2104, + "역명": "사하", + "시간": "10:51:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1135, + "역명": "사하", + "시간": "12:57:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2158, + "역명": "사하", + "시간": "13:47:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1189, + "역명": "사하", + "시간": "15:52:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2212, + "역명": "사하", + "시간": "16:42:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1255, + "역명": "사하", + "시간": "18:47:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2044, + "역명": "사하", + "시간": "08:06:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "사하", + "시간": "08:15:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1087, + "역명": "사하", + "시간": "10:21:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2110, + "역명": "사하", + "시간": "11:11:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1141, + "역명": "사하", + "시간": "13:16:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2164, + "역명": "사하", + "시간": "14:06:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1195, + "역명": "사하", + "시간": "16:12:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2218, + "역명": "사하", + "시간": "17:02:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1265, + "역명": "사하", + "시간": "19:07:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 24, + "열번": 2286, + "역명": "사하", + "시간": "20:00:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "사하", + "시간": "07:39:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2054, + "역명": "사하", + "시간": "08:28:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1091, + "역명": "사하", + "시간": "10:34:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2114, + "역명": "사하", + "시간": "11:24:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1145, + "역명": "사하", + "시간": "13:29:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2168, + "역명": "사하", + "시간": "14:19:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1199, + "역명": "사하", + "시간": "16:25:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2222, + "역명": "사하", + "시간": "17:15:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1271, + "역명": "사하", + "시간": "19:19:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2290, + "역명": "사하", + "시간": "20:12:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1329, + "역명": "사하", + "시간": "22:18:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2336, + "역명": "사하", + "시간": "23:15:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2052, + "역명": "사하", + "시간": "08:24:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1089, + "역명": "사하", + "시간": "10:27:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2112, + "역명": "사하", + "시간": "11:17:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1143, + "역명": "사하", + "시간": "13:23:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2166, + "역명": "사하", + "시간": "14:13:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1197, + "역명": "사하", + "시간": "16:18:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2220, + "역명": "사하", + "시간": "17:11:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1269, + "역명": "사하", + "시간": "19:15:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2288, + "역명": "사하", + "시간": "20:06:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1327, + "역명": "사하", + "시간": "22:10:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 26, + "열번": 2334, + "역명": "사하", + "시간": "23:05:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1023, + "역명": "사하", + "시간": "07:54:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 27, + "열번": 2060, + "역명": "사하", + "시간": "08:43:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2056, + "역명": "사하", + "시간": "08:33:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1093, + "역명": "사하", + "시간": "10:40:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2116, + "역명": "사하", + "시간": "11:30:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1147, + "역명": "사하", + "시간": "13:36:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2170, + "역명": "사하", + "시간": "14:26:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1201, + "역명": "사하", + "시간": "16:31:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2224, + "역명": "사하", + "시간": "17:23:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1275, + "역명": "사하", + "시간": "19:27:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2292, + "역명": "사하", + "시간": "20:18:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1331, + "역명": "사하", + "시간": "22:27:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1027, + "역명": "사하", + "시간": "08:04:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2064, + "역명": "사하", + "시간": "08:53:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1099, + "역명": "사하", + "시간": "11:00:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2122, + "역명": "사하", + "시간": "11:50:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1153, + "역명": "사하", + "시간": "13:55:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2176, + "역명": "사하", + "시간": "14:45:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1207, + "역명": "사하", + "시간": "16:49:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2230, + "역명": "사하", + "시간": "17:39:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1283, + "역명": "사하", + "시간": "19:43:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 29, + "열번": 2298, + "역명": "사하", + "시간": "20:36:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1037, + "역명": "사하", + "시간": "08:27:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1031, + "역명": "사하", + "시간": "08:14:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2068, + "역명": "사하", + "시간": "09:03:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1101, + "역명": "사하", + "시간": "11:06:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2124, + "역명": "사하", + "시간": "11:56:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1155, + "역명": "사하", + "시간": "14:02:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2178, + "역명": "사하", + "시간": "14:52:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1209, + "역명": "사하", + "시간": "16:55:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2232, + "역명": "사하", + "시간": "17:47:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1287, + "역명": "사하", + "시간": "19:51:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2300, + "역명": "사하", + "시간": "20:42:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1335, + "역명": "사하", + "시간": "22:47:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 32, + "열번": 1049, + "역명": "사하", + "시간": "08:51:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1035, + "역명": "사하", + "시간": "08:23:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2072, + "역명": "사하", + "시간": "09:14:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1105, + "역명": "사하", + "시간": "11:19:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2128, + "역명": "사하", + "시간": "12:09:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1159, + "역명": "사하", + "시간": "14:15:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2182, + "역명": "사하", + "시간": "15:05:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1215, + "역명": "사하", + "시간": "17:13:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2238, + "역명": "사하", + "시간": "18:03:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1295, + "역명": "사하", + "시간": "20:09:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2306, + "역명": "사하", + "시간": "21:00:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 33, + "열번": 1339, + "역명": "사하", + "시간": "23:07:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 34, + "열번": 1061, + "역명": "사하", + "시간": "09:15:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1041, + "역명": "사하", + "시간": "08:35:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2076, + "역명": "사하", + "시간": "09:26:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1109, + "역명": "사하", + "시간": "11:32:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2132, + "역명": "사하", + "시간": "12:22:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1163, + "역명": "사하", + "시간": "14:28:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2186, + "역명": "사하", + "시간": "15:18:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1219, + "역명": "사하", + "시간": "17:23:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 35, + "열번": 2242, + "역명": "사하", + "시간": "18:11:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 36, + "열번": 8904, + "역명": "사하", + "시간": "16:21:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1245, + "역명": "사하", + "시간": "18:27:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 36, + "열번": 2270, + "역명": "사하", + "시간": "19:17:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1315, + "역명": "사하", + "시간": "21:22:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1043, + "역명": "사하", + "시간": "08:39:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2078, + "역명": "사하", + "시간": "09:32:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1111, + "역명": "사하", + "시간": "11:39:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2134, + "역명": "사하", + "시간": "12:29:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1165, + "역명": "사하", + "시간": "14:34:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2188, + "역명": "사하", + "시간": "15:24:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1221, + "역명": "사하", + "시간": "17:28:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 37, + "열번": 2246, + "역명": "사하", + "시간": "18:19:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 38, + "열번": 8906, + "역명": "사하", + "시간": "16:52:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 38, + "열번": 1259, + "역명": "사하", + "시간": "18:55:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 39, + "열번": 1047, + "역명": "사하", + "시간": "08:47:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2080, + "역명": "사하", + "시간": "09:38:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1113, + "역명": "사하", + "시간": "11:45:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2136, + "역명": "사하", + "시간": "12:35:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1167, + "역명": "사하", + "시간": "14:41:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2190, + "역명": "사하", + "시간": "15:31:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1225, + "역명": "사하", + "시간": "17:38:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 39, + "열번": 2250, + "역명": "사하", + "시간": "18:27:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 40, + "열번": 8908, + "역명": "사하", + "시간": "17:07:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 40, + "열번": 1267, + "역명": "사하", + "시간": "19:11:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 41, + "열번": 1053, + "역명": "사하", + "시간": "08:59:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2084, + "역명": "사하", + "시간": "09:50:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1117, + "역명": "사하", + "시간": "11:58:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2140, + "역명": "사하", + "시간": "12:48:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1171, + "역명": "사하", + "시간": "14:54:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2194, + "역명": "사하", + "시간": "15:44:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1229, + "역명": "사하", + "시간": "17:48:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2254, + "역명": "사하", + "시간": "18:37:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1305, + "역명": "사하", + "시간": "20:42:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2316, + "역명": "사하", + "시간": "21:31:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1345, + "역명": "사하", + "시간": "23:39:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 42, + "열번": 8910, + "역명": "사하", + "시간": "17:19:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 42, + "열번": 1273, + "역명": "사하", + "시간": "19:23:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 43, + "열번": 1057, + "역명": "사하", + "시간": "09:07:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2086, + "역명": "사하", + "시간": "09:56:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1119, + "역명": "사하", + "시간": "12:05:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2142, + "역명": "사하", + "시간": "12:55:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1173, + "역명": "사하", + "시간": "15:00:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2196, + "역명": "사하", + "시간": "15:50:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1233, + "역명": "사하", + "시간": "17:58:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2258, + "역명": "사하", + "시간": "18:47:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1307, + "역명": "사하", + "시간": "20:50:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 43, + "열번": 2318, + "역명": "사하", + "시간": "21:39:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 44, + "열번": 8912, + "역명": "사하", + "시간": "17:31:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 44, + "열번": 1279, + "역명": "사하", + "시간": "19:35:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 45, + "열번": 1069, + "역명": "사하", + "시간": "09:31:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2094, + "역명": "사하", + "시간": "10:20:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1125, + "역명": "사하", + "시간": "12:24:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2148, + "역명": "사하", + "시간": "13:14:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1179, + "역명": "사하", + "시간": "15:20:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2202, + "역명": "사하", + "시간": "16:09:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1239, + "역명": "사하", + "시간": "18:13:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2264, + "역명": "사하", + "시간": "19:02:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1311, + "역명": "사하", + "시간": "21:06:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2322, + "역명": "사하", + "시간": "21:59:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 45, + "열번": 1349, + "역명": "사하", + "시간": "00:03:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 46, + "열번": 8914, + "역명": "사하", + "시간": "17:43:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 46, + "열번": 1285, + "역명": "사하", + "시간": "19:47:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 47, + "열번": 1211, + "역명": "사하", + "시간": "17:01:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 47, + "열번": 2234, + "역명": "사하", + "시간": "17:51:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 47, + "열번": 1289, + "역명": "사하", + "시간": "19:55:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 47, + "열번": 2302, + "역명": "사하", + "시간": "20:48:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 48, + "열번": 8916, + "역명": "사하", + "시간": "17:55:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 48, + "열번": 1291, + "역명": "사하", + "시간": "19:59:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 49, + "열번": 1223, + "역명": "사하", + "시간": "17:33:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 49, + "열번": 2248, + "역명": "사하", + "시간": "18:23:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 49, + "열번": 1301, + "역명": "사하", + "시간": "20:26:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 49, + "열번": 2312, + "역명": "사하", + "시간": "21:18:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 50, + "열번": 2244, + "역명": "사하", + "시간": "18:15:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 50, + "열번": 1299, + "역명": "사하", + "시간": "20:19:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 50, + "열번": 2310, + "역명": "사하", + "시간": "21:12:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 50, + "열번": 1341, + "역명": "사하", + "시간": "23:17:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 51, + "열번": 1231, + "역명": "사하", + "시간": "17:53:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 51, + "열번": 2256, + "역명": "사하", + "시간": "18:42:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 52, + "열번": 6906, + "역명": "사하", + "시간": "09:41:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 52, + "열번": 5905, + "역명": "사하", + "시간": "11:48:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 53, + "열번": 1243, + "역명": "사하", + "시간": "18:23:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 53, + "열번": 2268, + "역명": "사하", + "시간": "19:12:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 54, + "열번": 6910, + "역명": "사하", + "시간": "13:24:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 54, + "열번": 5907, + "역명": "사하", + "시간": "15:29:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 55, + "열번": 1251, + "역명": "사하", + "시간": "18:39:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 55, + "열번": 2276, + "역명": "사하", + "시간": "19:32:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 55, + "열번": 1319, + "역명": "사하", + "시간": "21:38:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 55, + "열번": 2328, + "역명": "사하", + "시간": "22:29:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 57, + "열번": 1263, + "역명": "사하", + "시간": "19:03:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 57, + "열번": 2284, + "역명": "사하", + "시간": "19:54:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 57, + "열번": 1325, + "역명": "사하", + "시간": "22:02:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 57, + "열번": 2332, + "역명": "사하", + "시간": "22:53:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 59, + "열번": 5901, + "역명": "사하", + "시간": "10:56:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 59, + "열번": 6902, + "역명": "사하", + "시간": "11:46:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 61, + "열번": 5903, + "역명": "사하", + "시간": "14:24:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 61, + "열번": 5904, + "역명": "사하", + "시간": "15:14:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "당리", + "시간": "05:22:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "당리", + "시간": "07:31:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2050, + "역명": "당리", + "시간": "08:17:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "당리", + "시간": "05:06:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "당리", + "시간": "07:22:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "당리", + "시간": "08:08:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1085, + "역명": "당리", + "시간": "10:16:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2108, + "역명": "당리", + "시간": "11:02:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1139, + "역명": "당리", + "시간": "13:11:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2162, + "역명": "당리", + "시간": "13:58:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1193, + "역명": "당리", + "시간": "16:07:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2216, + "역명": "당리", + "시간": "16:55:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1261, + "역명": "당리", + "시간": "19:01:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2282, + "역명": "당리", + "시간": "19:46:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1323, + "역명": "당리", + "시간": "21:56:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "당리", + "시간": "05:36:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "당리", + "시간": "07:49:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2058, + "역명": "당리", + "시간": "08:36:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1095, + "역명": "당리", + "시간": "10:48:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2118, + "역명": "당리", + "시간": "11:35:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1149, + "역명": "당리", + "시간": "13:44:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2172, + "역명": "당리", + "시간": "14:30:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1203, + "역명": "당리", + "시간": "16:39:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2226, + "역명": "당리", + "시간": "17:25:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1277, + "역명": "당리", + "시간": "19:33:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2294, + "역명": "당리", + "시간": "20:22:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "당리", + "시간": "05:48:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1025, + "역명": "당리", + "시간": "08:01:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2062, + "역명": "당리", + "시간": "08:46:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1097, + "역명": "당리", + "시간": "10:55:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2120, + "역명": "당리", + "시간": "11:41:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1151, + "역명": "당리", + "시간": "13:50:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2174, + "역명": "당리", + "시간": "14:37:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1205, + "역명": "당리", + "시간": "16:45:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2228, + "역명": "당리", + "시간": "17:33:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1281, + "역명": "당리", + "시간": "19:41:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2296, + "역명": "당리", + "시간": "20:28:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1333, + "역명": "당리", + "시간": "22:39:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2338, + "역명": "당리", + "시간": "23:29:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2008, + "역명": "당리", + "시간": "06:00:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1029, + "역명": "당리", + "시간": "08:11:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2066, + "역명": "당리", + "시간": "08:56:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2010, + "역명": "당리", + "시간": "06:12:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1033, + "역명": "당리", + "시간": "08:21:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2070, + "역명": "당리", + "시간": "09:06:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1103, + "역명": "당리", + "시간": "11:14:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2126, + "역명": "당리", + "시간": "12:01:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1157, + "역명": "당리", + "시간": "14:10:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2180, + "역명": "당리", + "시간": "14:56:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1213, + "역명": "당리", + "시간": "17:09:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2236, + "역명": "당리", + "시간": "17:57:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1293, + "역명": "당리", + "시간": "20:06:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2304, + "역명": "당리", + "시간": "20:52:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1337, + "역명": "당리", + "시간": "22:59:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1003, + "역명": "당리", + "시간": "06:17:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2020, + "역명": "당리", + "시간": "07:05:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1059, + "역명": "당리", + "시간": "09:13:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2088, + "역명": "당리", + "시간": "10:00:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1121, + "역명": "당리", + "시간": "12:13:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2144, + "역명": "당리", + "시간": "12:59:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1175, + "역명": "당리", + "시간": "15:08:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2198, + "역명": "당리", + "시간": "15:55:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1235, + "역명": "당리", + "시간": "18:05:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2260, + "역명": "당리", + "시간": "18:50:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1309, + "역명": "당리", + "시간": "21:00:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2320, + "역명": "당리", + "시간": "21:47:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1347, + "역명": "당리", + "시간": "23:53:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2012, + "역명": "당리", + "시간": "06:24:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1039, + "역명": "당리", + "시간": "08:33:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2074, + "역명": "당리", + "시간": "09:18:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1107, + "역명": "당리", + "시간": "11:27:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2130, + "역명": "당리", + "시간": "12:14:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1161, + "역명": "당리", + "시간": "14:23:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2184, + "역명": "당리", + "시간": "15:09:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1217, + "역명": "당리", + "시간": "17:20:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2240, + "역명": "당리", + "시간": "18:05:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1297, + "역명": "당리", + "시간": "20:16:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 8, + "열번": 2308, + "역명": "당리", + "시간": "21:04:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 9, + "열번": 2022, + "역명": "당리", + "시간": "07:11:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1063, + "역명": "당리", + "시간": "09:21:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 9, + "열번": 2090, + "역명": "당리", + "시간": "10:06:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2014, + "역명": "당리", + "시간": "06:36:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1045, + "역명": "당리", + "시간": "08:45:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 11, + "열번": 1005, + "역명": "당리", + "시간": "06:28:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2024, + "역명": "당리", + "시간": "07:17:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1065, + "역명": "당리", + "시간": "09:25:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2092, + "역명": "당리", + "시간": "10:12:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1123, + "역명": "당리", + "시간": "12:19:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2146, + "역명": "당리", + "시간": "13:06:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1177, + "역명": "당리", + "시간": "15:15:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2200, + "역명": "당리", + "시간": "16:01:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1237, + "역명": "당리", + "시간": "18:10:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 11, + "열번": 2262, + "역명": "당리", + "시간": "18:55:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2016, + "역명": "당리", + "시간": "06:47:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1051, + "역명": "당리", + "시간": "08:57:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2082, + "역명": "당리", + "시간": "09:42:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1115, + "역명": "당리", + "시간": "11:53:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2138, + "역명": "당리", + "시간": "12:40:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1169, + "역명": "당리", + "시간": "14:49:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "당리", + "시간": "15:35:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1227, + "역명": "당리", + "시간": "17:45:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2252, + "역명": "당리", + "시간": "18:30:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1303, + "역명": "당리", + "시간": "20:36:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2314, + "역명": "당리", + "시간": "21:22:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1343, + "역명": "당리", + "시간": "23:30:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1007, + "역명": "당리", + "시간": "06:39:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2028, + "역명": "당리", + "시간": "07:27:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1071, + "역명": "당리", + "시간": "09:37:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2096, + "역명": "당리", + "시간": "10:24:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1127, + "역명": "당리", + "시간": "12:32:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2150, + "역명": "당리", + "시간": "13:19:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1181, + "역명": "당리", + "시간": "15:28:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2204, + "역명": "당리", + "시간": "16:13:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1241, + "역명": "당리", + "시간": "18:20:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2266, + "역명": "당리", + "시간": "19:05:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1313, + "역명": "당리", + "시간": "21:16:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2324, + "역명": "당리", + "시간": "22:07:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 13, + "열번": 1351, + "역명": "당리", + "시간": "00:16:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 14, + "열번": 1001, + "역명": "당리", + "시간": "06:09:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2018, + "역명": "당리", + "시간": "06:56:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1055, + "역명": "당리", + "시간": "09:05:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1009, + "역명": "당리", + "시간": "06:50:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2032, + "역명": "당리", + "시간": "07:37:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1075, + "역명": "당리", + "시간": "09:46:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2100, + "역명": "당리", + "시간": "10:36:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1131, + "역명": "당리", + "시간": "12:45:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2154, + "역명": "당리", + "시간": "13:32:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1185, + "역명": "당리", + "시간": "15:41:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2208, + "역명": "당리", + "시간": "16:30:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1249, + "역명": "당리", + "시간": "18:37:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2274, + "역명": "당리", + "시간": "19:25:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2026, + "역명": "당리", + "시간": "07:22:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1067, + "역명": "당리", + "시간": "09:29:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2036, + "역명": "당리", + "시간": "07:46:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2030, + "역명": "당리", + "시간": "07:32:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1073, + "역명": "당리", + "시간": "09:41:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2098, + "역명": "당리", + "시간": "10:30:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1129, + "역명": "당리", + "시간": "12:39:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2152, + "역명": "당리", + "시간": "13:25:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1183, + "역명": "당리", + "시간": "15:34:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2206, + "역명": "당리", + "시간": "16:25:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1247, + "역명": "당리", + "시간": "18:33:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2272, + "역명": "당리", + "시간": "19:20:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1317, + "역명": "당리", + "시간": "21:32:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2326, + "역명": "당리", + "시간": "22:17:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 18, + "열번": 7931, + "역명": "당리", + "시간": "00:32:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 19, + "열번": 1011, + "역명": "당리", + "시간": "07:01:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2038, + "역명": "당리", + "시간": "07:50:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1079, + "역명": "당리", + "시간": "09:57:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2102, + "역명": "당리", + "시간": "10:43:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1133, + "역명": "당리", + "시간": "12:52:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2156, + "역명": "당리", + "시간": "13:38:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1187, + "역명": "당리", + "시간": "15:47:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2210, + "역명": "당리", + "시간": "16:35:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1253, + "역명": "당리", + "시간": "18:45:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2278, + "역명": "당리", + "시간": "19:35:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2034, + "역명": "당리", + "시간": "07:41:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 20, + "열번": 1077, + "역명": "당리", + "시간": "09:51:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 21, + "열번": 1013, + "역명": "당리", + "시간": "07:12:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2042, + "역명": "당리", + "시간": "07:59:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1083, + "역명": "당리", + "시간": "10:09:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2106, + "역명": "당리", + "시간": "10:56:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1137, + "역명": "당리", + "시간": "13:05:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2160, + "역명": "당리", + "시간": "13:51:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1191, + "역명": "당리", + "시간": "16:00:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2214, + "역명": "당리", + "시간": "16:45:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1257, + "역명": "당리", + "시간": "18:53:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2280, + "역명": "당리", + "시간": "19:40:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1321, + "역명": "당리", + "시간": "21:48:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2330, + "역명": "당리", + "시간": "22:39:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2040, + "역명": "당리", + "시간": "07:55:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1081, + "역명": "당리", + "시간": "10:03:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2104, + "역명": "당리", + "시간": "10:49:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1135, + "역명": "당리", + "시간": "12:58:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2158, + "역명": "당리", + "시간": "13:45:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1189, + "역명": "당리", + "시간": "15:54:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2212, + "역명": "당리", + "시간": "16:40:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1255, + "역명": "당리", + "시간": "18:49:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2044, + "역명": "당리", + "시간": "08:04:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "당리", + "시간": "08:13:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1087, + "역명": "당리", + "시간": "10:22:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2110, + "역명": "당리", + "시간": "11:09:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1141, + "역명": "당리", + "시간": "13:18:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2164, + "역명": "당리", + "시간": "14:04:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1195, + "역명": "당리", + "시간": "16:13:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2218, + "역명": "당리", + "시간": "17:00:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1265, + "역명": "당리", + "시간": "19:09:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 24, + "열번": 2286, + "역명": "당리", + "시간": "19:58:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "당리", + "시간": "07:40:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2054, + "역명": "당리", + "시간": "08:26:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1091, + "역명": "당리", + "시간": "10:35:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2114, + "역명": "당리", + "시간": "11:22:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1145, + "역명": "당리", + "시간": "13:31:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2168, + "역명": "당리", + "시간": "14:17:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1199, + "역명": "당리", + "시간": "16:26:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2222, + "역명": "당리", + "시간": "17:13:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1271, + "역명": "당리", + "시간": "19:21:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2290, + "역명": "당리", + "시간": "20:10:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1329, + "역명": "당리", + "시간": "22:20:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2336, + "역명": "당리", + "시간": "23:13:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2052, + "역명": "당리", + "시간": "08:22:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1089, + "역명": "당리", + "시간": "10:29:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2112, + "역명": "당리", + "시간": "11:15:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1143, + "역명": "당리", + "시간": "13:24:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2166, + "역명": "당리", + "시간": "14:11:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1197, + "역명": "당리", + "시간": "16:20:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2220, + "역명": "당리", + "시간": "17:09:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1269, + "역명": "당리", + "시간": "19:17:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2288, + "역명": "당리", + "시간": "20:04:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1327, + "역명": "당리", + "시간": "22:12:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 26, + "열번": 2334, + "역명": "당리", + "시간": "23:03:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1023, + "역명": "당리", + "시간": "07:56:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 27, + "열번": 2060, + "역명": "당리", + "시간": "08:41:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2056, + "역명": "당리", + "시간": "08:31:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1093, + "역명": "당리", + "시간": "10:42:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2116, + "역명": "당리", + "시간": "11:28:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1147, + "역명": "당리", + "시간": "13:37:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2170, + "역명": "당리", + "시간": "14:24:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1201, + "역명": "당리", + "시간": "16:33:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2224, + "역명": "당리", + "시간": "17:21:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1275, + "역명": "당리", + "시간": "19:29:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2292, + "역명": "당리", + "시간": "20:16:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1331, + "역명": "당리", + "시간": "22:29:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1027, + "역명": "당리", + "시간": "08:06:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2064, + "역명": "당리", + "시간": "08:51:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1099, + "역명": "당리", + "시간": "11:01:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2122, + "역명": "당리", + "시간": "11:48:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1153, + "역명": "당리", + "시간": "13:57:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2176, + "역명": "당리", + "시간": "14:43:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1207, + "역명": "당리", + "시간": "16:51:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2230, + "역명": "당리", + "시간": "17:37:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1283, + "역명": "당리", + "시간": "19:45:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 29, + "열번": 2298, + "역명": "당리", + "시간": "20:34:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1037, + "역명": "당리", + "시간": "08:29:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1031, + "역명": "당리", + "시간": "08:16:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2068, + "역명": "당리", + "시간": "09:01:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1101, + "역명": "당리", + "시간": "11:08:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2124, + "역명": "당리", + "시간": "11:54:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1155, + "역명": "당리", + "시간": "14:03:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2178, + "역명": "당리", + "시간": "14:50:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1209, + "역명": "당리", + "시간": "16:57:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2232, + "역명": "당리", + "시간": "17:45:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1287, + "역명": "당리", + "시간": "19:53:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2300, + "역명": "당리", + "시간": "20:40:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1335, + "역명": "당리", + "시간": "22:49:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 32, + "열번": 1049, + "역명": "당리", + "시간": "08:53:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1035, + "역명": "당리", + "시간": "08:25:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2072, + "역명": "당리", + "시간": "09:12:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1105, + "역명": "당리", + "시간": "11:21:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2128, + "역명": "당리", + "시간": "12:07:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1159, + "역명": "당리", + "시간": "14:16:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2182, + "역명": "당리", + "시간": "15:03:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1215, + "역명": "당리", + "시간": "17:15:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2238, + "역명": "당리", + "시간": "18:01:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1295, + "역명": "당리", + "시간": "20:11:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2306, + "역명": "당리", + "시간": "20:58:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 33, + "열번": 1339, + "역명": "당리", + "시간": "23:09:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 34, + "열번": 1061, + "역명": "당리", + "시간": "09:17:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1041, + "역명": "당리", + "시간": "08:37:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2076, + "역명": "당리", + "시간": "09:24:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1109, + "역명": "당리", + "시간": "11:34:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2132, + "역명": "당리", + "시간": "12:20:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1163, + "역명": "당리", + "시간": "14:29:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2186, + "역명": "당리", + "시간": "15:16:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1219, + "역명": "당리", + "시간": "17:25:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 35, + "열번": 2242, + "역명": "당리", + "시간": "18:09:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 36, + "열번": 8904, + "역명": "당리", + "시간": "16:19:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1245, + "역명": "당리", + "시간": "18:29:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 36, + "열번": 2270, + "역명": "당리", + "시간": "19:15:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1315, + "역명": "당리", + "시간": "21:24:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1043, + "역명": "당리", + "시간": "08:41:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2078, + "역명": "당리", + "시간": "09:30:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1111, + "역명": "당리", + "시간": "11:40:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2134, + "역명": "당리", + "시간": "12:27:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1165, + "역명": "당리", + "시간": "14:36:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2188, + "역명": "당리", + "시간": "15:22:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1221, + "역명": "당리", + "시간": "17:30:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 37, + "열번": 2246, + "역명": "당리", + "시간": "18:17:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 38, + "열번": 8906, + "역명": "당리", + "시간": "16:50:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 38, + "열번": 1259, + "역명": "당리", + "시간": "18:57:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 39, + "열번": 1047, + "역명": "당리", + "시간": "08:49:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2080, + "역명": "당리", + "시간": "09:36:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1113, + "역명": "당리", + "시간": "11:47:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2136, + "역명": "당리", + "시간": "12:33:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1167, + "역명": "당리", + "시간": "14:42:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2190, + "역명": "당리", + "시간": "15:29:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1225, + "역명": "당리", + "시간": "17:40:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 39, + "열번": 2250, + "역명": "당리", + "시간": "18:25:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 40, + "열번": 8908, + "역명": "당리", + "시간": "17:05:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 40, + "열번": 1267, + "역명": "당리", + "시간": "19:13:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 41, + "열번": 1053, + "역명": "당리", + "시간": "09:01:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2084, + "역명": "당리", + "시간": "09:48:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1117, + "역명": "당리", + "시간": "12:00:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2140, + "역명": "당리", + "시간": "12:46:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1171, + "역명": "당리", + "시간": "14:55:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2194, + "역명": "당리", + "시간": "15:42:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1229, + "역명": "당리", + "시간": "17:50:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2254, + "역명": "당리", + "시간": "18:35:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1305, + "역명": "당리", + "시간": "20:44:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2316, + "역명": "당리", + "시간": "21:29:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1345, + "역명": "당리", + "시간": "23:41:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 42, + "열번": 8910, + "역명": "당리", + "시간": "17:17:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 42, + "열번": 1273, + "역명": "당리", + "시간": "19:25:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 43, + "열번": 1057, + "역명": "당리", + "시간": "09:09:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2086, + "역명": "당리", + "시간": "09:54:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1119, + "역명": "당리", + "시간": "12:06:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2142, + "역명": "당리", + "시간": "12:53:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1173, + "역명": "당리", + "시간": "15:02:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2196, + "역명": "당리", + "시간": "15:48:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1233, + "역명": "당리", + "시간": "18:00:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2258, + "역명": "당리", + "시간": "18:45:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1307, + "역명": "당리", + "시간": "20:52:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 43, + "열번": 2318, + "역명": "당리", + "시간": "21:37:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 44, + "열번": 8912, + "역명": "당리", + "시간": "17:29:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 44, + "열번": 1279, + "역명": "당리", + "시간": "19:37:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 45, + "열번": 1069, + "역명": "당리", + "시간": "09:33:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2094, + "역명": "당리", + "시간": "10:18:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1125, + "역명": "당리", + "시간": "12:26:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2148, + "역명": "당리", + "시간": "13:12:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1179, + "역명": "당리", + "시간": "15:21:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2202, + "역명": "당리", + "시간": "16:07:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1239, + "역명": "당리", + "시간": "18:15:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2264, + "역명": "당리", + "시간": "19:00:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1311, + "역명": "당리", + "시간": "21:08:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2322, + "역명": "당리", + "시간": "21:57:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 45, + "열번": 1349, + "역명": "당리", + "시간": "00:05:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 46, + "열번": 8914, + "역명": "당리", + "시간": "17:41:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 46, + "열번": 1285, + "역명": "당리", + "시간": "19:49:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 47, + "열번": 1211, + "역명": "당리", + "시간": "17:03:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 47, + "열번": 2234, + "역명": "당리", + "시간": "17:49:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 47, + "열번": 1289, + "역명": "당리", + "시간": "19:57:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 47, + "열번": 2302, + "역명": "당리", + "시간": "20:46:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 48, + "열번": 8916, + "역명": "당리", + "시간": "17:53:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 48, + "열번": 1291, + "역명": "당리", + "시간": "20:01:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 49, + "열번": 1223, + "역명": "당리", + "시간": "17:35:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 49, + "열번": 2248, + "역명": "당리", + "시간": "18:21:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 49, + "열번": 1301, + "역명": "당리", + "시간": "20:28:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 49, + "열번": 2312, + "역명": "당리", + "시간": "21:16:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 50, + "열번": 2244, + "역명": "당리", + "시간": "18:13:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 50, + "열번": 1299, + "역명": "당리", + "시간": "20:21:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 50, + "열번": 2310, + "역명": "당리", + "시간": "21:10:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 50, + "열번": 1341, + "역명": "당리", + "시간": "23:19:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 51, + "열번": 1231, + "역명": "당리", + "시간": "17:55:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 51, + "열번": 2256, + "역명": "당리", + "시간": "18:40:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 52, + "열번": 6906, + "역명": "당리", + "시간": "09:39:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 52, + "열번": 5905, + "역명": "당리", + "시간": "11:50:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 53, + "열번": 1243, + "역명": "당리", + "시간": "18:25:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 53, + "열번": 2268, + "역명": "당리", + "시간": "19:10:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 54, + "열번": 6910, + "역명": "당리", + "시간": "13:22:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 54, + "열번": 5907, + "역명": "당리", + "시간": "15:31:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 55, + "열번": 1251, + "역명": "당리", + "시간": "18:41:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 55, + "열번": 2276, + "역명": "당리", + "시간": "19:30:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 55, + "열번": 1319, + "역명": "당리", + "시간": "21:40:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 55, + "열번": 2328, + "역명": "당리", + "시간": "22:27:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 57, + "열번": 1263, + "역명": "당리", + "시간": "19:05:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 57, + "열번": 2284, + "역명": "당리", + "시간": "19:52:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 57, + "열번": 1325, + "역명": "당리", + "시간": "22:04:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 57, + "열번": 2332, + "역명": "당리", + "시간": "22:51:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 59, + "열번": 5901, + "역명": "당리", + "시간": "10:58:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 59, + "열번": 6902, + "역명": "당리", + "시간": "11:44:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 61, + "열번": 5903, + "역명": "당리", + "시간": "14:26:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 61, + "열번": 5904, + "역명": "당리", + "시간": "15:12:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "하단", + "시간": "05:20:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "하단", + "시간": "07:33:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2050, + "역명": "하단", + "시간": "08:15:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "하단", + "시간": "05:04:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "하단", + "시간": "07:24:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "하단", + "시간": "08:06:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1085, + "역명": "하단", + "시간": "10:18:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2108, + "역명": "하단", + "시간": "11:00:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1139, + "역명": "하단", + "시간": "13:13:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2162, + "역명": "하단", + "시간": "13:56:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1193, + "역명": "하단", + "시간": "16:09:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2216, + "역명": "하단", + "시간": "16:53:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1261, + "역명": "하단", + "시간": "19:03:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2282, + "역명": "하단", + "시간": "19:44:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1323, + "역명": "하단", + "시간": "21:58:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "하단", + "시간": "05:34:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "하단", + "시간": "07:51:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2058, + "역명": "하단", + "시간": "08:34:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1095, + "역명": "하단", + "시간": "10:50:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2118, + "역명": "하단", + "시간": "11:33:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1149, + "역명": "하단", + "시간": "13:46:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2172, + "역명": "하단", + "시간": "14:28:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1203, + "역명": "하단", + "시간": "16:41:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2226, + "역명": "하단", + "시간": "17:23:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1277, + "역명": "하단", + "시간": "19:35:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2294, + "역명": "하단", + "시간": "20:20:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "하단", + "시간": "05:46:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1025, + "역명": "하단", + "시간": "08:03:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2062, + "역명": "하단", + "시간": "08:44:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1097, + "역명": "하단", + "시간": "10:57:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2120, + "역명": "하단", + "시간": "11:39:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1151, + "역명": "하단", + "시간": "13:52:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2174, + "역명": "하단", + "시간": "14:35:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1205, + "역명": "하단", + "시간": "16:47:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2228, + "역명": "하단", + "시간": "17:31:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1281, + "역명": "하단", + "시간": "19:43:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2296, + "역명": "하단", + "시간": "20:26:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1333, + "역명": "하단", + "시간": "22:41:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2338, + "역명": "하단", + "시간": "23:27:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2008, + "역명": "하단", + "시간": "05:58:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1029, + "역명": "하단", + "시간": "08:13:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2066, + "역명": "하단", + "시간": "08:54:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2010, + "역명": "하단", + "시간": "06:10:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1033, + "역명": "하단", + "시간": "08:23:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2070, + "역명": "하단", + "시간": "09:04:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1103, + "역명": "하단", + "시간": "11:16:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2126, + "역명": "하단", + "시간": "11:59:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1157, + "역명": "하단", + "시간": "14:12:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2180, + "역명": "하단", + "시간": "14:54:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1213, + "역명": "하단", + "시간": "17:11:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2236, + "역명": "하단", + "시간": "17:55:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1293, + "역명": "하단", + "시간": "20:08:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2304, + "역명": "하단", + "시간": "20:50:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1337, + "역명": "하단", + "시간": "23:01:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1003, + "역명": "하단", + "시간": "06:19:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2020, + "역명": "하단", + "시간": "07:03:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1059, + "역명": "하단", + "시간": "09:15:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2088, + "역명": "하단", + "시간": "09:58:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1121, + "역명": "하단", + "시간": "12:15:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2144, + "역명": "하단", + "시간": "12:57:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1175, + "역명": "하단", + "시간": "15:10:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2198, + "역명": "하단", + "시간": "15:53:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1235, + "역명": "하단", + "시간": "18:07:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2260, + "역명": "하단", + "시간": "18:48:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1309, + "역명": "하단", + "시간": "21:02:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2320, + "역명": "하단", + "시간": "21:45:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1347, + "역명": "하단", + "시간": "23:55:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2012, + "역명": "하단", + "시간": "06:22:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1039, + "역명": "하단", + "시간": "08:35:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2074, + "역명": "하단", + "시간": "09:16:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1107, + "역명": "하단", + "시간": "11:29:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2130, + "역명": "하단", + "시간": "12:12:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1161, + "역명": "하단", + "시간": "14:25:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2184, + "역명": "하단", + "시간": "15:07:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1217, + "역명": "하단", + "시간": "17:22:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2240, + "역명": "하단", + "시간": "18:03:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1297, + "역명": "하단", + "시간": "20:18:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 8, + "열번": 2308, + "역명": "하단", + "시간": "21:02:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 9, + "열번": 2022, + "역명": "하단", + "시간": "07:09:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1063, + "역명": "하단", + "시간": "09:23:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 9, + "열번": 2090, + "역명": "하단", + "시간": "10:04:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2014, + "역명": "하단", + "시간": "06:34:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1045, + "역명": "하단", + "시간": "08:47:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 11, + "열번": 1005, + "역명": "하단", + "시간": "06:30:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2024, + "역명": "하단", + "시간": "07:15:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1065, + "역명": "하단", + "시간": "09:27:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2092, + "역명": "하단", + "시간": "10:10:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1123, + "역명": "하단", + "시간": "12:21:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2146, + "역명": "하단", + "시간": "13:04:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1177, + "역명": "하단", + "시간": "15:17:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2200, + "역명": "하단", + "시간": "15:59:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1237, + "역명": "하단", + "시간": "18:12:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 11, + "열번": 2262, + "역명": "하단", + "시간": "18:53:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2016, + "역명": "하단", + "시간": "06:45:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1051, + "역명": "하단", + "시간": "08:59:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2082, + "역명": "하단", + "시간": "09:40:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1115, + "역명": "하단", + "시간": "11:55:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2138, + "역명": "하단", + "시간": "12:38:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1169, + "역명": "하단", + "시간": "14:51:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "하단", + "시간": "15:33:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1227, + "역명": "하단", + "시간": "17:47:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2252, + "역명": "하단", + "시간": "18:28:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1303, + "역명": "하단", + "시간": "20:38:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2314, + "역명": "하단", + "시간": "21:20:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1343, + "역명": "하단", + "시간": "23:32:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1007, + "역명": "하단", + "시간": "06:41:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2028, + "역명": "하단", + "시간": "07:25:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1071, + "역명": "하단", + "시간": "09:39:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2096, + "역명": "하단", + "시간": "10:22:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1127, + "역명": "하단", + "시간": "12:34:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2150, + "역명": "하단", + "시간": "13:17:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1181, + "역명": "하단", + "시간": "15:30:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2204, + "역명": "하단", + "시간": "16:11:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1241, + "역명": "하단", + "시간": "18:22:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2266, + "역명": "하단", + "시간": "19:03:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1313, + "역명": "하단", + "시간": "21:18:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2324, + "역명": "하단", + "시간": "22:05:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 13, + "열번": 1351, + "역명": "하단", + "시간": "00:18:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 14, + "열번": 1001, + "역명": "하단", + "시간": "06:11:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2018, + "역명": "하단", + "시간": "06:54:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1055, + "역명": "하단", + "시간": "09:07:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1009, + "역명": "하단", + "시간": "06:52:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2032, + "역명": "하단", + "시간": "07:35:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1075, + "역명": "하단", + "시간": "09:48:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2100, + "역명": "하단", + "시간": "10:34:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1131, + "역명": "하단", + "시간": "12:47:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2154, + "역명": "하단", + "시간": "13:30:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1185, + "역명": "하단", + "시간": "15:43:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2208, + "역명": "하단", + "시간": "16:28:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1249, + "역명": "하단", + "시간": "18:39:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2274, + "역명": "하단", + "시간": "19:23:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2026, + "역명": "하단", + "시간": "07:20:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1067, + "역명": "하단", + "시간": "09:31:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2036, + "역명": "하단", + "시간": "07:44:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2030, + "역명": "하단", + "시간": "07:30:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1073, + "역명": "하단", + "시간": "09:43:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2098, + "역명": "하단", + "시간": "10:28:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1129, + "역명": "하단", + "시간": "12:41:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2152, + "역명": "하단", + "시간": "13:23:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1183, + "역명": "하단", + "시간": "15:36:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2206, + "역명": "하단", + "시간": "16:23:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1247, + "역명": "하단", + "시간": "18:35:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2272, + "역명": "하단", + "시간": "19:18:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1317, + "역명": "하단", + "시간": "21:34:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2326, + "역명": "하단", + "시간": "22:15:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 18, + "열번": 7931, + "역명": "하단", + "시간": "00:34:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 19, + "열번": 1011, + "역명": "하단", + "시간": "07:03:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2038, + "역명": "하단", + "시간": "07:48:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1079, + "역명": "하단", + "시간": "09:59:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2102, + "역명": "하단", + "시간": "10:41:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1133, + "역명": "하단", + "시간": "12:54:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2156, + "역명": "하단", + "시간": "13:36:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1187, + "역명": "하단", + "시간": "15:49:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2210, + "역명": "하단", + "시간": "16:33:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1253, + "역명": "하단", + "시간": "18:47:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2278, + "역명": "하단", + "시간": "19:33:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2034, + "역명": "하단", + "시간": "07:39:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 20, + "열번": 1077, + "역명": "하단", + "시간": "09:53:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 21, + "열번": 1013, + "역명": "하단", + "시간": "07:14:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2042, + "역명": "하단", + "시간": "07:57:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1083, + "역명": "하단", + "시간": "10:11:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2106, + "역명": "하단", + "시간": "10:54:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1137, + "역명": "하단", + "시간": "13:07:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2160, + "역명": "하단", + "시간": "13:49:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1191, + "역명": "하단", + "시간": "16:02:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2214, + "역명": "하단", + "시간": "16:43:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1257, + "역명": "하단", + "시간": "18:55:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2280, + "역명": "하단", + "시간": "19:38:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1321, + "역명": "하단", + "시간": "21:50:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2330, + "역명": "하단", + "시간": "22:37:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2040, + "역명": "하단", + "시간": "07:53:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1081, + "역명": "하단", + "시간": "10:05:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2104, + "역명": "하단", + "시간": "10:47:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1135, + "역명": "하단", + "시간": "13:00:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2158, + "역명": "하단", + "시간": "13:43:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1189, + "역명": "하단", + "시간": "15:56:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2212, + "역명": "하단", + "시간": "16:38:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1255, + "역명": "하단", + "시간": "18:51:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2044, + "역명": "하단", + "시간": "08:02:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "하단", + "시간": "08:11:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1087, + "역명": "하단", + "시간": "10:24:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2110, + "역명": "하단", + "시간": "11:07:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1141, + "역명": "하단", + "시간": "13:20:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2164, + "역명": "하단", + "시간": "14:02:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1195, + "역명": "하단", + "시간": "16:15:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2218, + "역명": "하단", + "시간": "16:58:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1265, + "역명": "하단", + "시간": "19:11:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 24, + "열번": 2286, + "역명": "하단", + "시간": "19:56:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "하단", + "시간": "07:42:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2054, + "역명": "하단", + "시간": "08:24:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1091, + "역명": "하단", + "시간": "10:37:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2114, + "역명": "하단", + "시간": "11:20:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1145, + "역명": "하단", + "시간": "13:33:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2168, + "역명": "하단", + "시간": "14:15:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1199, + "역명": "하단", + "시간": "16:28:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2222, + "역명": "하단", + "시간": "17:11:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1271, + "역명": "하단", + "시간": "19:23:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2290, + "역명": "하단", + "시간": "20:08:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1329, + "역명": "하단", + "시간": "22:22:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2336, + "역명": "하단", + "시간": "23:11:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2052, + "역명": "하단", + "시간": "08:20:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1089, + "역명": "하단", + "시간": "10:31:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2112, + "역명": "하단", + "시간": "11:13:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1143, + "역명": "하단", + "시간": "13:26:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2166, + "역명": "하단", + "시간": "14:09:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1197, + "역명": "하단", + "시간": "16:22:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2220, + "역명": "하단", + "시간": "17:07:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1269, + "역명": "하단", + "시간": "19:19:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2288, + "역명": "하단", + "시간": "20:02:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1327, + "역명": "하단", + "시간": "22:14:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 26, + "열번": 2334, + "역명": "하단", + "시간": "23:01:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1023, + "역명": "하단", + "시간": "07:58:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 27, + "열번": 2060, + "역명": "하단", + "시간": "08:39:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2056, + "역명": "하단", + "시간": "08:29:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1093, + "역명": "하단", + "시간": "10:44:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2116, + "역명": "하단", + "시간": "11:26:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1147, + "역명": "하단", + "시간": "13:39:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2170, + "역명": "하단", + "시간": "14:22:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1201, + "역명": "하단", + "시간": "16:35:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2224, + "역명": "하단", + "시간": "17:19:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1275, + "역명": "하단", + "시간": "19:31:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2292, + "역명": "하단", + "시간": "20:14:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1331, + "역명": "하단", + "시간": "22:31:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1027, + "역명": "하단", + "시간": "08:08:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2064, + "역명": "하단", + "시간": "08:49:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1099, + "역명": "하단", + "시간": "11:03:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2122, + "역명": "하단", + "시간": "11:46:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1153, + "역명": "하단", + "시간": "13:59:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2176, + "역명": "하단", + "시간": "14:41:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1207, + "역명": "하단", + "시간": "16:53:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2230, + "역명": "하단", + "시간": "17:35:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1283, + "역명": "하단", + "시간": "19:47:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 29, + "열번": 2298, + "역명": "하단", + "시간": "20:32:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1037, + "역명": "하단", + "시간": "08:31:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1031, + "역명": "하단", + "시간": "08:18:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2068, + "역명": "하단", + "시간": "08:59:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1101, + "역명": "하단", + "시간": "11:10:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2124, + "역명": "하단", + "시간": "11:52:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1155, + "역명": "하단", + "시간": "14:05:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2178, + "역명": "하단", + "시간": "14:48:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1209, + "역명": "하단", + "시간": "16:59:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2232, + "역명": "하단", + "시간": "17:43:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1287, + "역명": "하단", + "시간": "19:55:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2300, + "역명": "하단", + "시간": "20:38:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1335, + "역명": "하단", + "시간": "22:51:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 32, + "열번": 1049, + "역명": "하단", + "시간": "08:55:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1035, + "역명": "하단", + "시간": "08:27:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2072, + "역명": "하단", + "시간": "09:10:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1105, + "역명": "하단", + "시간": "11:23:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2128, + "역명": "하단", + "시간": "12:05:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1159, + "역명": "하단", + "시간": "14:18:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2182, + "역명": "하단", + "시간": "15:01:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1215, + "역명": "하단", + "시간": "17:17:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2238, + "역명": "하단", + "시간": "17:59:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1295, + "역명": "하단", + "시간": "20:13:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2306, + "역명": "하단", + "시간": "20:56:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 33, + "열번": 1339, + "역명": "하단", + "시간": "23:11:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 34, + "열번": 1061, + "역명": "하단", + "시간": "09:19:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1041, + "역명": "하단", + "시간": "08:39:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2076, + "역명": "하단", + "시간": "09:22:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1109, + "역명": "하단", + "시간": "11:36:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2132, + "역명": "하단", + "시간": "12:18:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1163, + "역명": "하단", + "시간": "14:31:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2186, + "역명": "하단", + "시간": "15:14:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1219, + "역명": "하단", + "시간": "17:27:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 35, + "열번": 2242, + "역명": "하단", + "시간": "18:07:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 36, + "열번": 8904, + "역명": "하단", + "시간": "16:17:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1245, + "역명": "하단", + "시간": "18:31:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 36, + "열번": 2270, + "역명": "하단", + "시간": "19:13:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1315, + "역명": "하단", + "시간": "21:26:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1043, + "역명": "하단", + "시간": "08:43:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2078, + "역명": "하단", + "시간": "09:28:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1111, + "역명": "하단", + "시간": "11:42:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2134, + "역명": "하단", + "시간": "12:25:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1165, + "역명": "하단", + "시간": "14:38:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2188, + "역명": "하단", + "시간": "15:20:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1221, + "역명": "하단", + "시간": "17:32:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 37, + "열번": 2246, + "역명": "하단", + "시간": "18:15:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 38, + "열번": 8906, + "역명": "하단", + "시간": "16:48:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 38, + "열번": 1259, + "역명": "하단", + "시간": "18:59:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 39, + "열번": 1047, + "역명": "하단", + "시간": "08:51:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2080, + "역명": "하단", + "시간": "09:34:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1113, + "역명": "하단", + "시간": "11:49:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2136, + "역명": "하단", + "시간": "12:31:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1167, + "역명": "하단", + "시간": "14:44:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2190, + "역명": "하단", + "시간": "15:27:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1225, + "역명": "하단", + "시간": "17:42:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 39, + "열번": 2250, + "역명": "하단", + "시간": "18:23:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 40, + "열번": 8908, + "역명": "하단", + "시간": "17:03:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 40, + "열번": 1267, + "역명": "하단", + "시간": "19:15:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 41, + "열번": 1053, + "역명": "하단", + "시간": "09:03:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2084, + "역명": "하단", + "시간": "09:46:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1117, + "역명": "하단", + "시간": "12:02:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2140, + "역명": "하단", + "시간": "12:44:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1171, + "역명": "하단", + "시간": "14:57:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2194, + "역명": "하단", + "시간": "15:40:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1229, + "역명": "하단", + "시간": "17:52:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2254, + "역명": "하단", + "시간": "18:33:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1305, + "역명": "하단", + "시간": "20:46:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2316, + "역명": "하단", + "시간": "21:27:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1345, + "역명": "하단", + "시간": "23:43:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 42, + "열번": 8910, + "역명": "하단", + "시간": "17:15:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 42, + "열번": 1273, + "역명": "하단", + "시간": "19:27:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 43, + "열번": 1057, + "역명": "하단", + "시간": "09:11:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2086, + "역명": "하단", + "시간": "09:52:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1119, + "역명": "하단", + "시간": "12:08:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2142, + "역명": "하단", + "시간": "12:51:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1173, + "역명": "하단", + "시간": "15:04:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2196, + "역명": "하단", + "시간": "15:46:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1233, + "역명": "하단", + "시간": "18:02:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2258, + "역명": "하단", + "시간": "18:43:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1307, + "역명": "하단", + "시간": "20:54:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 43, + "열번": 2318, + "역명": "하단", + "시간": "21:35:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 44, + "열번": 8912, + "역명": "하단", + "시간": "17:27:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 44, + "열번": 1279, + "역명": "하단", + "시간": "19:39:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 45, + "열번": 1069, + "역명": "하단", + "시간": "09:35:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2094, + "역명": "하단", + "시간": "10:16:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1125, + "역명": "하단", + "시간": "12:28:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2148, + "역명": "하단", + "시간": "13:10:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1179, + "역명": "하단", + "시간": "15:23:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2202, + "역명": "하단", + "시간": "16:05:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1239, + "역명": "하단", + "시간": "18:17:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2264, + "역명": "하단", + "시간": "18:58:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1311, + "역명": "하단", + "시간": "21:10:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2322, + "역명": "하단", + "시간": "21:55:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 45, + "열번": 1349, + "역명": "하단", + "시간": "00:07:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 46, + "열번": 8914, + "역명": "하단", + "시간": "17:39:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 46, + "열번": 1285, + "역명": "하단", + "시간": "19:51:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 47, + "열번": 1211, + "역명": "하단", + "시간": "17:05:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 47, + "열번": 2234, + "역명": "하단", + "시간": "17:47:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 47, + "열번": 1289, + "역명": "하단", + "시간": "19:59:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 47, + "열번": 2302, + "역명": "하단", + "시간": "20:44:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 48, + "열번": 8916, + "역명": "하단", + "시간": "17:51:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 48, + "열번": 1291, + "역명": "하단", + "시간": "20:03:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 49, + "열번": 1223, + "역명": "하단", + "시간": "17:37:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 49, + "열번": 2248, + "역명": "하단", + "시간": "18:19:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 49, + "열번": 1301, + "역명": "하단", + "시간": "20:30:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 49, + "열번": 2312, + "역명": "하단", + "시간": "21:14:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 50, + "열번": 2244, + "역명": "하단", + "시간": "18:11:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 50, + "열번": 1299, + "역명": "하단", + "시간": "20:23:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 50, + "열번": 2310, + "역명": "하단", + "시간": "21:08:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 50, + "열번": 1341, + "역명": "하단", + "시간": "23:21:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 51, + "열번": 1231, + "역명": "하단", + "시간": "17:57:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 51, + "열번": 2256, + "역명": "하단", + "시간": "18:38:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 52, + "열번": 6906, + "역명": "하단", + "시간": "09:37:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 52, + "열번": 5905, + "역명": "하단", + "시간": "11:52:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 53, + "열번": 1243, + "역명": "하단", + "시간": "18:27:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 53, + "열번": 2268, + "역명": "하단", + "시간": "19:08:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 54, + "열번": 6910, + "역명": "하단", + "시간": "13:20:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 54, + "열번": 5907, + "역명": "하단", + "시간": "15:33:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 55, + "열번": 1251, + "역명": "하단", + "시간": "18:43:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 55, + "열번": 2276, + "역명": "하단", + "시간": "19:28:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 55, + "열번": 1319, + "역명": "하단", + "시간": "21:42:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 55, + "열번": 2328, + "역명": "하단", + "시간": "22:25:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 57, + "열번": 1263, + "역명": "하단", + "시간": "19:07:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 57, + "열번": 2284, + "역명": "하단", + "시간": "19:50:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 57, + "열번": 1325, + "역명": "하단", + "시간": "22:06:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 57, + "열번": 2332, + "역명": "하단", + "시간": "22:49:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 59, + "열번": 5901, + "역명": "하단", + "시간": "11:00:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 59, + "열번": 6902, + "역명": "하단", + "시간": "11:42:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 61, + "열번": 5903, + "역명": "하단", + "시간": "14:28:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 61, + "열번": 5904, + "역명": "하단", + "시간": "15:10:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "신평", + "시간": "05:18:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "신평", + "시간": "07:36:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2050, + "역명": "신평", + "시간": "08:13:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "신평", + "시간": "05:02:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "신평", + "시간": "07:27:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "신평", + "시간": "08:04:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1085, + "역명": "신평", + "시간": "10:21:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2108, + "역명": "신평", + "시간": "10:58:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1139, + "역명": "신평", + "시간": "13:16:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2162, + "역명": "신평", + "시간": "13:53:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1193, + "역명": "신평", + "시간": "16:12:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2216, + "역명": "신평", + "시간": "16:50:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1261, + "역명": "신평", + "시간": "19:06:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2282, + "역명": "신평", + "시간": "19:41:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1323, + "역명": "신평", + "시간": "22:01:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 2, + "열번": 4030, + "역명": "신평", + "시간": "22:36:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "신평", + "시간": "05:31:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "신평", + "시간": "07:54:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2058, + "역명": "신평", + "시간": "08:31:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1095, + "역명": "신평", + "시간": "10:53:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2118, + "역명": "신평", + "시간": "11:30:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1149, + "역명": "신평", + "시간": "13:49:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2172, + "역명": "신평", + "시간": "14:26:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1203, + "역명": "신평", + "시간": "16:44:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2226, + "역명": "신평", + "시간": "17:20:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1277, + "역명": "신평", + "시간": "19:38:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2294, + "역명": "신평", + "시간": "20:17:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 4, + "열번": 7901, + "역명": "신평", + "시간": "05:06:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "신평", + "시간": "05:44:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1025, + "역명": "신평", + "시간": "08:06:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2062, + "역명": "신평", + "시간": "08:41:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1097, + "역명": "신평", + "시간": "11:00:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2120, + "역명": "신평", + "시간": "11:37:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1151, + "역명": "신평", + "시간": "13:55:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2174, + "역명": "신평", + "시간": "14:32:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1205, + "역명": "신평", + "시간": "16:50:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2228, + "역명": "신평", + "시간": "17:28:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1281, + "역명": "신평", + "시간": "19:46:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2296, + "역명": "신평", + "시간": "20:23:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1333, + "역명": "신평", + "시간": "22:44:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2338, + "역명": "신평", + "시간": "23:24:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 5, + "열번": 7903, + "역명": "신평", + "시간": "05:18:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2008, + "역명": "신평", + "시간": "05:56:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1029, + "역명": "신평", + "시간": "08:16:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2066, + "역명": "신평", + "시간": "08:51:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 6, + "열번": 7905, + "역명": "신평", + "시간": "05:30:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2010, + "역명": "신평", + "시간": "06:08:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1033, + "역명": "신평", + "시간": "08:26:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2070, + "역명": "신평", + "시간": "09:01:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1103, + "역명": "신평", + "시간": "11:19:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2126, + "역명": "신평", + "시간": "11:56:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1157, + "역명": "신평", + "시간": "14:15:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2180, + "역명": "신평", + "시간": "14:52:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1213, + "역명": "신평", + "시간": "17:14:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2236, + "역명": "신평", + "시간": "17:52:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1293, + "역명": "신평", + "시간": "20:11:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2304, + "역명": "신평", + "시간": "20:47:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1337, + "역명": "신평", + "시간": "23:04:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 6, + "열번": 4802, + "역명": "신평", + "시간": "23:39:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1003, + "역명": "신평", + "시간": "06:22:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2020, + "역명": "신평", + "시간": "07:00:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1059, + "역명": "신평", + "시간": "09:18:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2088, + "역명": "신평", + "시간": "09:55:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1121, + "역명": "신평", + "시간": "12:18:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2144, + "역명": "신평", + "시간": "12:55:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1175, + "역명": "신평", + "시간": "15:13:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2198, + "역명": "신평", + "시간": "15:50:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1235, + "역명": "신평", + "시간": "18:10:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2260, + "역명": "신평", + "시간": "18:45:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1309, + "역명": "신평", + "시간": "21:05:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2320, + "역명": "신평", + "시간": "21:42:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1347, + "역명": "신평", + "시간": "23:58:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 7, + "열번": 4810, + "역명": "신평", + "시간": "00:33:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 8, + "열번": 7907, + "역명": "신평", + "시간": "05:42:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2012, + "역명": "신평", + "시간": "06:20:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1039, + "역명": "신평", + "시간": "08:38:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2074, + "역명": "신평", + "시간": "09:13:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1107, + "역명": "신평", + "시간": "11:32:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2130, + "역명": "신평", + "시간": "12:09:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1161, + "역명": "신평", + "시간": "14:28:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2184, + "역명": "신평", + "시간": "15:05:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1217, + "역명": "신평", + "시간": "17:25:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2240, + "역명": "신평", + "시간": "18:00:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1297, + "역명": "신평", + "시간": "20:21:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 8, + "열번": 2308, + "역명": "신평", + "시간": "20:59:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 9, + "열번": 2022, + "역명": "신평", + "시간": "07:06:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1063, + "역명": "신평", + "시간": "09:26:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 9, + "열번": 2090, + "역명": "신평", + "시간": "10:01:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 10, + "열번": 7909, + "역명": "신평", + "시간": "05:54:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2014, + "역명": "신평", + "시간": "06:32:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1045, + "역명": "신평", + "시간": "08:50:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 10, + "열번": 4004, + "역명": "신평", + "시간": "09:27:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 11, + "열번": 1005, + "역명": "신평", + "시간": "06:33:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2024, + "역명": "신평", + "시간": "07:12:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1065, + "역명": "신평", + "시간": "09:30:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2092, + "역명": "신평", + "시간": "10:07:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1123, + "역명": "신평", + "시간": "12:24:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2146, + "역명": "신평", + "시간": "13:01:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1177, + "역명": "신평", + "시간": "15:20:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2200, + "역명": "신평", + "시간": "15:56:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1237, + "역명": "신평", + "시간": "18:15:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 11, + "열번": 2262, + "역명": "신평", + "시간": "18:50:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 12, + "열번": 7911, + "역명": "신평", + "시간": "06:05:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2016, + "역명": "신평", + "시간": "06:43:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1051, + "역명": "신평", + "시간": "09:02:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2082, + "역명": "신평", + "시간": "09:37:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1115, + "역명": "신평", + "시간": "11:58:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2138, + "역명": "신평", + "시간": "12:35:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1169, + "역명": "신평", + "시간": "14:54:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "신평", + "시간": "15:31:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1227, + "역명": "신평", + "시간": "17:50:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2252, + "역명": "신평", + "시간": "18:25:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1303, + "역명": "신평", + "시간": "20:41:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2314, + "역명": "신평", + "시간": "21:17:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1343, + "역명": "신평", + "시간": "23:35:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 12, + "열번": 4806, + "역명": "신평", + "시간": "00:10:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1007, + "역명": "신평", + "시간": "06:44:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2028, + "역명": "신평", + "시간": "07:23:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1071, + "역명": "신평", + "시간": "09:42:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2096, + "역명": "신평", + "시간": "10:19:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1127, + "역명": "신평", + "시간": "12:37:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2150, + "역명": "신평", + "시간": "13:14:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1181, + "역명": "신평", + "시간": "15:33:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2204, + "역명": "신평", + "시간": "16:08:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1241, + "역명": "신평", + "시간": "18:25:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2266, + "역명": "신평", + "시간": "19:00:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1313, + "역명": "신평", + "시간": "21:21:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2324, + "역명": "신평", + "시간": "22:02:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 13, + "열번": 1351, + "역명": "신평", + "시간": "00:21:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 14, + "열번": 1001, + "역명": "신평", + "시간": "06:14:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2018, + "역명": "신평", + "시간": "06:52:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1055, + "역명": "신평", + "시간": "09:10:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 14, + "열번": 4008, + "역명": "신평", + "시간": "09:45:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1009, + "역명": "신평", + "시간": "06:55:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2032, + "역명": "신평", + "시간": "07:32:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1075, + "역명": "신평", + "시간": "09:51:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2100, + "역명": "신평", + "시간": "10:32:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1131, + "역명": "신평", + "시간": "12:50:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2154, + "역명": "신평", + "시간": "13:27:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1185, + "역명": "신평", + "시간": "15:46:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2208, + "역명": "신평", + "시간": "16:25:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1249, + "역명": "신평", + "시간": "18:42:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2274, + "역명": "신평", + "시간": "19:20:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 16, + "열번": 7913, + "역명": "신평", + "시간": "06:41:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2026, + "역명": "신평", + "시간": "07:18:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1067, + "역명": "신평", + "시간": "09:34:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 16, + "열번": 4012, + "역명": "신평", + "시간": "10:09:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2036, + "역명": "신평", + "시간": "07:41:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 18, + "열번": 7915, + "역명": "신평", + "시간": "06:52:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2030, + "역명": "신평", + "시간": "07:28:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1073, + "역명": "신평", + "시간": "09:46:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2098, + "역명": "신평", + "시간": "10:25:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1129, + "역명": "신평", + "시간": "12:44:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2152, + "역명": "신평", + "시간": "13:21:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1183, + "역명": "신평", + "시간": "15:39:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2206, + "역명": "신평", + "시간": "16:20:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1247, + "역명": "신평", + "시간": "18:38:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2272, + "역명": "신평", + "시간": "19:15:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1317, + "역명": "신평", + "시간": "21:37:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2326, + "역명": "신평", + "시간": "22:12:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 18, + "열번": 7931, + "역명": "신평", + "시간": "00:37:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 19, + "열번": 1011, + "역명": "신평", + "시간": "07:06:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2038, + "역명": "신평", + "시간": "07:46:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1079, + "역명": "신평", + "시간": "10:02:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2102, + "역명": "신평", + "시간": "10:38:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1133, + "역명": "신평", + "시간": "12:57:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2156, + "역명": "신평", + "시간": "13:34:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1187, + "역명": "신평", + "시간": "15:52:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2210, + "역명": "신평", + "시간": "16:30:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1253, + "역명": "신평", + "시간": "18:50:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2278, + "역명": "신평", + "시간": "19:30:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 20, + "열번": 7917, + "역명": "신평", + "시간": "07:01:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2034, + "역명": "신평", + "시간": "07:37:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 20, + "열번": 1077, + "역명": "신평", + "시간": "09:56:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 21, + "열번": 1013, + "역명": "신평", + "시간": "07:17:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2042, + "역명": "신평", + "시간": "07:55:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1083, + "역명": "신평", + "시간": "10:14:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2106, + "역명": "신평", + "시간": "10:51:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1137, + "역명": "신평", + "시간": "13:10:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2160, + "역명": "신평", + "시간": "13:47:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1191, + "역명": "신평", + "시간": "16:05:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2214, + "역명": "신평", + "시간": "16:40:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1257, + "역명": "신평", + "시간": "18:58:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2280, + "역명": "신평", + "시간": "19:35:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1321, + "역명": "신평", + "시간": "21:53:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2330, + "역명": "신평", + "시간": "22:34:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 22, + "열번": 7919, + "역명": "신평", + "시간": "07:13:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2040, + "역명": "신평", + "시간": "07:50:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1081, + "역명": "신평", + "시간": "10:08:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2104, + "역명": "신평", + "시간": "10:45:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1135, + "역명": "신평", + "시간": "13:03:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2158, + "역명": "신평", + "시간": "13:40:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1189, + "역명": "신평", + "시간": "15:59:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2212, + "역명": "신평", + "시간": "16:35:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1255, + "역명": "신평", + "시간": "18:54:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 22, + "열번": 4014, + "역명": "신평", + "시간": "19:32:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 23, + "열번": 7921, + "역명": "신평", + "시간": "07:23:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2044, + "역명": "신평", + "시간": "07:59:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 24, + "열번": 7923, + "역명": "신평", + "시간": "07:33:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "신평", + "시간": "08:08:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1087, + "역명": "신평", + "시간": "10:27:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2110, + "역명": "신평", + "시간": "11:04:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1141, + "역명": "신평", + "시간": "13:23:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2164, + "역명": "신평", + "시간": "14:00:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1195, + "역명": "신평", + "시간": "16:18:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2218, + "역명": "신평", + "시간": "16:55:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1265, + "역명": "신평", + "시간": "19:14:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 24, + "열번": 2286, + "역명": "신평", + "시간": "19:53:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "신평", + "시간": "07:45:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2054, + "역명": "신평", + "시간": "08:22:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1091, + "역명": "신평", + "시간": "10:40:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2114, + "역명": "신평", + "시간": "11:17:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1145, + "역명": "신평", + "시간": "13:36:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2168, + "역명": "신평", + "시간": "14:13:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1199, + "역명": "신평", + "시간": "16:31:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2222, + "역명": "신평", + "시간": "17:08:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1271, + "역명": "신평", + "시간": "19:26:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2290, + "역명": "신평", + "시간": "20:05:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1329, + "역명": "신평", + "시간": "22:25:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2336, + "역명": "신평", + "시간": "23:09:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 26, + "열번": 7925, + "역명": "신평", + "시간": "07:42:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2052, + "역명": "신평", + "시간": "08:17:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1089, + "역명": "신평", + "시간": "10:34:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2112, + "역명": "신평", + "시간": "11:11:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1143, + "역명": "신평", + "시간": "13:29:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2166, + "역명": "신평", + "시간": "14:06:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1197, + "역명": "신평", + "시간": "16:25:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2220, + "역명": "신평", + "시간": "17:04:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1269, + "역명": "신평", + "시간": "19:22:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2288, + "역명": "신평", + "시간": "19:59:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1327, + "역명": "신평", + "시간": "22:17:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 26, + "열번": 2334, + "역명": "신평", + "시간": "22:58:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1023, + "역명": "신평", + "시간": "08:01:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 27, + "열번": 2060, + "역명": "신평", + "시간": "08:36:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 28, + "열번": 7927, + "역명": "신평", + "시간": "07:51:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2056, + "역명": "신평", + "시간": "08:26:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1093, + "역명": "신평", + "시간": "10:47:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2116, + "역명": "신평", + "시간": "11:24:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1147, + "역명": "신평", + "시간": "13:42:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2170, + "역명": "신평", + "시간": "14:19:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1201, + "역명": "신평", + "시간": "16:38:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2224, + "역명": "신평", + "시간": "17:16:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1275, + "역명": "신평", + "시간": "19:34:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2292, + "역명": "신평", + "시간": "20:11:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1331, + "역명": "신평", + "시간": "22:34:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 28, + "열번": 4032, + "역명": "신평", + "시간": "23:11:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1027, + "역명": "신평", + "시간": "08:11:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2064, + "역명": "신평", + "시간": "08:46:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1099, + "역명": "신평", + "시간": "11:06:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2122, + "역명": "신평", + "시간": "11:43:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1153, + "역명": "신평", + "시간": "14:02:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2176, + "역명": "신평", + "시간": "14:39:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1207, + "역명": "신평", + "시간": "16:56:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2230, + "역명": "신평", + "시간": "17:32:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1283, + "역명": "신평", + "시간": "19:50:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 29, + "열번": 2298, + "역명": "신평", + "시간": "20:29:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1037, + "역명": "신평", + "시간": "08:34:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 30, + "열번": 4002, + "역명": "신평", + "시간": "09:09:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1031, + "역명": "신평", + "시간": "08:21:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2068, + "역명": "신평", + "시간": "08:56:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1101, + "역명": "신평", + "시간": "11:13:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2124, + "역명": "신평", + "시간": "11:50:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1155, + "역명": "신평", + "시간": "14:08:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2178, + "역명": "신평", + "시간": "14:45:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1209, + "역명": "신평", + "시간": "17:02:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2232, + "역명": "신평", + "시간": "17:40:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1287, + "역명": "신평", + "시간": "19:58:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2300, + "역명": "신평", + "시간": "20:35:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1335, + "역명": "신평", + "시간": "22:54:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 32, + "열번": 1049, + "역명": "신평", + "시간": "08:58:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 32, + "열번": 4006, + "역명": "신평", + "시간": "09:33:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1035, + "역명": "신평", + "시간": "08:30:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2072, + "역명": "신평", + "시간": "09:07:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1105, + "역명": "신평", + "시간": "11:26:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2128, + "역명": "신평", + "시간": "12:03:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1159, + "역명": "신평", + "시간": "14:21:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2182, + "역명": "신평", + "시간": "14:58:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1215, + "역명": "신평", + "시간": "17:20:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2238, + "역명": "신평", + "시간": "17:56:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1295, + "역명": "신평", + "시간": "20:16:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2306, + "역명": "신평", + "시간": "20:53:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 33, + "열번": 1339, + "역명": "신평", + "시간": "23:14:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 34, + "열번": 1061, + "역명": "신평", + "시간": "09:22:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 34, + "열번": 4010, + "역명": "신평", + "시간": "09:57:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1041, + "역명": "신평", + "시간": "08:42:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2076, + "역명": "신평", + "시간": "09:19:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1109, + "역명": "신평", + "시간": "11:39:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2132, + "역명": "신평", + "시간": "12:16:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1163, + "역명": "신평", + "시간": "14:34:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2186, + "역명": "신평", + "시간": "15:11:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1219, + "역명": "신평", + "시간": "17:30:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 35, + "열번": 2242, + "역명": "신평", + "시간": "18:04:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 36, + "열번": 8904, + "역명": "신평", + "시간": "16:15:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1245, + "역명": "신평", + "시간": "18:34:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 36, + "열번": 2270, + "역명": "신평", + "시간": "19:10:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1315, + "역명": "신평", + "시간": "21:29:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 36, + "열번": 4028, + "역명": "신평", + "시간": "22:04:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1043, + "역명": "신평", + "시간": "08:46:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2078, + "역명": "신평", + "시간": "09:25:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1111, + "역명": "신평", + "시간": "11:45:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2134, + "역명": "신평", + "시간": "12:22:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1165, + "역명": "신평", + "시간": "14:41:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2188, + "역명": "신평", + "시간": "15:18:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1221, + "역명": "신평", + "시간": "17:35:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 37, + "열번": 2246, + "역명": "신평", + "시간": "18:12:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 38, + "열번": 8906, + "역명": "신평", + "시간": "16:46:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 38, + "열번": 1259, + "역명": "신평", + "시간": "19:02:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 38, + "열번": 4016, + "역명": "신평", + "시간": "19:37:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 39, + "열번": 1047, + "역명": "신평", + "시간": "08:54:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2080, + "역명": "신평", + "시간": "09:31:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1113, + "역명": "신평", + "시간": "11:52:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2136, + "역명": "신평", + "시간": "12:29:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1167, + "역명": "신평", + "시간": "14:47:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2190, + "역명": "신평", + "시간": "15:24:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1225, + "역명": "신평", + "시간": "17:45:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 39, + "열번": 2250, + "역명": "신평", + "시간": "18:20:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 40, + "열번": 8908, + "역명": "신평", + "시간": "17:01:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 40, + "열번": 1267, + "역명": "신평", + "시간": "19:18:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 40, + "열번": 4018, + "역명": "신평", + "시간": "19:55:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 41, + "열번": 1053, + "역명": "신평", + "시간": "09:06:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2084, + "역명": "신평", + "시간": "09:43:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1117, + "역명": "신평", + "시간": "12:05:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2140, + "역명": "신평", + "시간": "12:42:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1171, + "역명": "신평", + "시간": "15:00:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2194, + "역명": "신평", + "시간": "15:37:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1229, + "역명": "신평", + "시간": "17:55:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2254, + "역명": "신평", + "시간": "18:30:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1305, + "역명": "신평", + "시간": "20:49:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2316, + "역명": "신평", + "시간": "21:24:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1345, + "역명": "신평", + "시간": "23:46:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 41, + "열번": 4808, + "역명": "신평", + "시간": "00:21:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 42, + "열번": 8910, + "역명": "신평", + "시간": "17:13:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 42, + "열번": 1273, + "역명": "신평", + "시간": "19:30:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 42, + "열번": 4020, + "역명": "신평", + "시간": "20:07:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 43, + "열번": 1057, + "역명": "신평", + "시간": "09:14:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2086, + "역명": "신평", + "시간": "09:49:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1119, + "역명": "신평", + "시간": "12:11:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2142, + "역명": "신평", + "시간": "12:48:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1173, + "역명": "신평", + "시간": "15:07:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2196, + "역명": "신평", + "시간": "15:44:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1233, + "역명": "신평", + "시간": "18:05:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2258, + "역명": "신평", + "시간": "18:40:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1307, + "역명": "신평", + "시간": "20:57:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 43, + "열번": 2318, + "역명": "신평", + "시간": "21:32:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 44, + "열번": 8912, + "역명": "신평", + "시간": "17:25:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 44, + "열번": 1279, + "역명": "신평", + "시간": "19:42:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 44, + "열번": 4022, + "역명": "신평", + "시간": "20:19:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 45, + "열번": 1069, + "역명": "신평", + "시간": "09:38:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2094, + "역명": "신평", + "시간": "10:13:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1125, + "역명": "신평", + "시간": "12:31:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2148, + "역명": "신평", + "시간": "13:08:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1179, + "역명": "신평", + "시간": "15:26:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2202, + "역명": "신평", + "시간": "16:02:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1239, + "역명": "신평", + "시간": "18:20:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2264, + "역명": "신평", + "시간": "18:55:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1311, + "역명": "신평", + "시간": "21:13:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2322, + "역명": "신평", + "시간": "21:52:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 45, + "열번": 1349, + "역명": "신평", + "시간": "00:10:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 46, + "열번": 8914, + "역명": "신평", + "시간": "17:37:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 46, + "열번": 1285, + "역명": "신평", + "시간": "19:54:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 46, + "열번": 4024, + "역명": "신평", + "시간": "20:31:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 47, + "열번": 1211, + "역명": "신평", + "시간": "17:08:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 47, + "열번": 2234, + "역명": "신평", + "시간": "17:44:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 47, + "열번": 1289, + "역명": "신평", + "시간": "20:02:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 47, + "열번": 2302, + "역명": "신평", + "시간": "20:41:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 48, + "열번": 8916, + "역명": "신평", + "시간": "17:49:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 48, + "열번": 1291, + "역명": "신평", + "시간": "20:06:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 48, + "열번": 4026, + "역명": "신평", + "시간": "20:43:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 49, + "열번": 1223, + "역명": "신평", + "시간": "17:40:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 49, + "열번": 2248, + "역명": "신평", + "시간": "18:16:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 49, + "열번": 1301, + "역명": "신평", + "시간": "20:33:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 49, + "열번": 2312, + "역명": "신평", + "시간": "21:11:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 50, + "열번": 2244, + "역명": "신평", + "시간": "18:08:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 50, + "열번": 1299, + "역명": "신평", + "시간": "20:26:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 50, + "열번": 2310, + "역명": "신평", + "시간": "21:05:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 50, + "열번": 1341, + "역명": "신평", + "시간": "23:24:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 50, + "열번": 4804, + "역명": "신평", + "시간": "23:59:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 51, + "열번": 1231, + "역명": "신평", + "시간": "18:00:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 51, + "열번": 2256, + "역명": "신평", + "시간": "18:35:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 52, + "열번": 6906, + "역명": "신평", + "시간": "09:35:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 52, + "열번": 5905, + "역명": "신평", + "시간": "11:55:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 52, + "열번": 6908, + "역명": "신평", + "시간": "12:31:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 53, + "열번": 1243, + "역명": "신평", + "시간": "18:30:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 53, + "열번": 2268, + "역명": "신평", + "시간": "19:05:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 54, + "열번": 6910, + "역명": "신평", + "시간": "13:18:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 54, + "열번": 5907, + "역명": "신평", + "시간": "15:36:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 54, + "열번": 6912, + "역명": "신평", + "시간": "16:15:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 55, + "열번": 1251, + "역명": "신평", + "시간": "18:46:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 55, + "열번": 2276, + "역명": "신평", + "시간": "19:25:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 55, + "열번": 1319, + "역명": "신평", + "시간": "21:45:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 55, + "열번": 2328, + "역명": "신평", + "시간": "22:22:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 57, + "열번": 1263, + "역명": "신평", + "시간": "19:10:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 57, + "열번": 2284, + "역명": "신평", + "시간": "19:47:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 57, + "열번": 1325, + "역명": "신평", + "시간": "22:09:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 57, + "열번": 2332, + "역명": "신평", + "시간": "22:46:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 59, + "열번": 5901, + "역명": "신평", + "시간": "11:03:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 59, + "열번": 6902, + "역명": "신평", + "시간": "11:40:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 61, + "열번": 5903, + "역명": "신평", + "시간": "14:31:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 61, + "열번": 5904, + "역명": "신평", + "시간": "15:08:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 63, + "열번": 4904, + "역명": "신평", + "시간": "15:20:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "동매", + "시간": "05:15:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "동매", + "시간": "07:39:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2050, + "역명": "동매", + "시간": "08:10:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "동매", + "시간": "07:30:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "동매", + "시간": "08:01:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1085, + "역명": "동매", + "시간": "10:24:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2108, + "역명": "동매", + "시간": "10:55:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1139, + "역명": "동매", + "시간": "13:19:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2162, + "역명": "동매", + "시간": "13:50:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1193, + "역명": "동매", + "시간": "16:15:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2216, + "역명": "동매", + "시간": "16:47:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1261, + "역명": "동매", + "시간": "19:09:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2282, + "역명": "동매", + "시간": "19:38:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1323, + "역명": "동매", + "시간": "22:04:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "동매", + "시간": "05:28:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "동매", + "시간": "07:57:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2058, + "역명": "동매", + "시간": "08:28:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1095, + "역명": "동매", + "시간": "10:56:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2118, + "역명": "동매", + "시간": "11:27:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1149, + "역명": "동매", + "시간": "13:52:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2172, + "역명": "동매", + "시간": "14:23:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1203, + "역명": "동매", + "시간": "16:47:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2226, + "역명": "동매", + "시간": "17:17:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1277, + "역명": "동매", + "시간": "19:41:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2294, + "역명": "동매", + "시간": "20:14:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 4, + "열번": 7901, + "역명": "동매", + "시간": "05:08:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "동매", + "시간": "05:41:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1025, + "역명": "동매", + "시간": "08:09:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2062, + "역명": "동매", + "시간": "08:38:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1097, + "역명": "동매", + "시간": "11:03:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2120, + "역명": "동매", + "시간": "11:34:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1151, + "역명": "동매", + "시간": "13:58:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2174, + "역명": "동매", + "시간": "14:29:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1205, + "역명": "동매", + "시간": "16:53:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2228, + "역명": "동매", + "시간": "17:25:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1281, + "역명": "동매", + "시간": "19:49:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2296, + "역명": "동매", + "시간": "20:20:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1333, + "역명": "동매", + "시간": "22:47:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2338, + "역명": "동매", + "시간": "23:21:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 5, + "열번": 7903, + "역명": "동매", + "시간": "05:20:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2008, + "역명": "동매", + "시간": "05:53:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1029, + "역명": "동매", + "시간": "08:19:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2066, + "역명": "동매", + "시간": "08:48:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 6, + "열번": 7905, + "역명": "동매", + "시간": "05:32:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2010, + "역명": "동매", + "시간": "06:05:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1033, + "역명": "동매", + "시간": "08:29:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2070, + "역명": "동매", + "시간": "08:58:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1103, + "역명": "동매", + "시간": "11:22:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2126, + "역명": "동매", + "시간": "11:53:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1157, + "역명": "동매", + "시간": "14:18:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2180, + "역명": "동매", + "시간": "14:49:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1213, + "역명": "동매", + "시간": "17:17:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2236, + "역명": "동매", + "시간": "17:49:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1293, + "역명": "동매", + "시간": "20:14:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2304, + "역명": "동매", + "시간": "20:44:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1337, + "역명": "동매", + "시간": "23:07:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1003, + "역명": "동매", + "시간": "06:25:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2020, + "역명": "동매", + "시간": "06:57:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1059, + "역명": "동매", + "시간": "09:21:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2088, + "역명": "동매", + "시간": "09:52:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1121, + "역명": "동매", + "시간": "12:21:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2144, + "역명": "동매", + "시간": "12:52:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1175, + "역명": "동매", + "시간": "15:16:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2198, + "역명": "동매", + "시간": "15:47:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1235, + "역명": "동매", + "시간": "18:13:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2260, + "역명": "동매", + "시간": "18:42:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1309, + "역명": "동매", + "시간": "21:08:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2320, + "역명": "동매", + "시간": "21:39:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1347, + "역명": "동매", + "시간": "00:01:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 8, + "열번": 7907, + "역명": "동매", + "시간": "05:44:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2012, + "역명": "동매", + "시간": "06:17:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1039, + "역명": "동매", + "시간": "08:41:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2074, + "역명": "동매", + "시간": "09:10:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1107, + "역명": "동매", + "시간": "11:35:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2130, + "역명": "동매", + "시간": "12:06:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1161, + "역명": "동매", + "시간": "14:31:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2184, + "역명": "동매", + "시간": "15:02:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1217, + "역명": "동매", + "시간": "17:28:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2240, + "역명": "동매", + "시간": "17:57:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1297, + "역명": "동매", + "시간": "20:24:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 8, + "열번": 2308, + "역명": "동매", + "시간": "20:56:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 9, + "열번": 2022, + "역명": "동매", + "시간": "07:03:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1063, + "역명": "동매", + "시간": "09:29:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 9, + "열번": 2090, + "역명": "동매", + "시간": "09:58:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 10, + "열번": 7909, + "역명": "동매", + "시간": "05:56:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2014, + "역명": "동매", + "시간": "06:29:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1045, + "역명": "동매", + "시간": "08:53:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 11, + "열번": 1005, + "역명": "동매", + "시간": "06:36:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2024, + "역명": "동매", + "시간": "07:09:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1065, + "역명": "동매", + "시간": "09:33:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2092, + "역명": "동매", + "시간": "10:04:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1123, + "역명": "동매", + "시간": "12:27:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2146, + "역명": "동매", + "시간": "12:58:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1177, + "역명": "동매", + "시간": "15:23:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2200, + "역명": "동매", + "시간": "15:53:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1237, + "역명": "동매", + "시간": "18:18:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 11, + "열번": 2262, + "역명": "동매", + "시간": "18:47:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 12, + "열번": 7911, + "역명": "동매", + "시간": "06:07:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2016, + "역명": "동매", + "시간": "06:40:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1051, + "역명": "동매", + "시간": "09:05:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2082, + "역명": "동매", + "시간": "09:34:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1115, + "역명": "동매", + "시간": "12:01:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2138, + "역명": "동매", + "시간": "12:32:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1169, + "역명": "동매", + "시간": "14:57:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "동매", + "시간": "15:28:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1227, + "역명": "동매", + "시간": "17:53:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2252, + "역명": "동매", + "시간": "18:22:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1303, + "역명": "동매", + "시간": "20:44:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2314, + "역명": "동매", + "시간": "21:14:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1343, + "역명": "동매", + "시간": "23:38:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1007, + "역명": "동매", + "시간": "06:47:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2028, + "역명": "동매", + "시간": "07:20:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1071, + "역명": "동매", + "시간": "09:45:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2096, + "역명": "동매", + "시간": "10:16:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1127, + "역명": "동매", + "시간": "12:40:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2150, + "역명": "동매", + "시간": "13:11:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1181, + "역명": "동매", + "시간": "15:36:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2204, + "역명": "동매", + "시간": "16:05:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1241, + "역명": "동매", + "시간": "18:28:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2266, + "역명": "동매", + "시간": "18:57:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1313, + "역명": "동매", + "시간": "21:24:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2324, + "역명": "동매", + "시간": "21:59:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 13, + "열번": 1351, + "역명": "동매", + "시간": "00:24:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 14, + "열번": 1001, + "역명": "동매", + "시간": "06:17:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2018, + "역명": "동매", + "시간": "06:49:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1055, + "역명": "동매", + "시간": "09:13:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1009, + "역명": "동매", + "시간": "06:58:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2032, + "역명": "동매", + "시간": "07:29:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1075, + "역명": "동매", + "시간": "09:54:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2100, + "역명": "동매", + "시간": "10:29:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1131, + "역명": "동매", + "시간": "12:53:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2154, + "역명": "동매", + "시간": "13:24:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1185, + "역명": "동매", + "시간": "15:49:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2208, + "역명": "동매", + "시간": "16:22:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1249, + "역명": "동매", + "시간": "18:45:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2274, + "역명": "동매", + "시간": "19:17:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 16, + "열번": 7913, + "역명": "동매", + "시간": "06:43:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2026, + "역명": "동매", + "시간": "07:15:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1067, + "역명": "동매", + "시간": "09:37:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2036, + "역명": "동매", + "시간": "07:38:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 18, + "열번": 7915, + "역명": "동매", + "시간": "06:54:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2030, + "역명": "동매", + "시간": "07:25:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1073, + "역명": "동매", + "시간": "09:49:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2098, + "역명": "동매", + "시간": "10:22:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1129, + "역명": "동매", + "시간": "12:47:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2152, + "역명": "동매", + "시간": "13:18:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1183, + "역명": "동매", + "시간": "15:42:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2206, + "역명": "동매", + "시간": "16:17:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1247, + "역명": "동매", + "시간": "18:41:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2272, + "역명": "동매", + "시간": "19:12:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1317, + "역명": "동매", + "시간": "21:40:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2326, + "역명": "동매", + "시간": "22:09:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 19, + "열번": 1011, + "역명": "동매", + "시간": "07:09:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2038, + "역명": "동매", + "시간": "07:43:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1079, + "역명": "동매", + "시간": "10:05:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2102, + "역명": "동매", + "시간": "10:35:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1133, + "역명": "동매", + "시간": "13:00:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2156, + "역명": "동매", + "시간": "13:31:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1187, + "역명": "동매", + "시간": "15:55:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2210, + "역명": "동매", + "시간": "16:27:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1253, + "역명": "동매", + "시간": "18:53:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2278, + "역명": "동매", + "시간": "19:27:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 20, + "열번": 7917, + "역명": "동매", + "시간": "07:04:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2034, + "역명": "동매", + "시간": "07:34:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 20, + "열번": 1077, + "역명": "동매", + "시간": "09:59:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 21, + "열번": 1013, + "역명": "동매", + "시간": "07:20:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2042, + "역명": "동매", + "시간": "07:52:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1083, + "역명": "동매", + "시간": "10:17:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2106, + "역명": "동매", + "시간": "10:48:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1137, + "역명": "동매", + "시간": "13:13:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2160, + "역명": "동매", + "시간": "13:44:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1191, + "역명": "동매", + "시간": "16:08:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2214, + "역명": "동매", + "시간": "16:37:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1257, + "역명": "동매", + "시간": "19:01:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2280, + "역명": "동매", + "시간": "19:32:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1321, + "역명": "동매", + "시간": "21:56:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2330, + "역명": "동매", + "시간": "22:31:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 22, + "열번": 7919, + "역명": "동매", + "시간": "07:15:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2040, + "역명": "동매", + "시간": "07:47:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1081, + "역명": "동매", + "시간": "10:11:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2104, + "역명": "동매", + "시간": "10:42:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1135, + "역명": "동매", + "시간": "13:06:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2158, + "역명": "동매", + "시간": "13:37:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1189, + "역명": "동매", + "시간": "16:02:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2212, + "역명": "동매", + "시간": "16:32:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1255, + "역명": "동매", + "시간": "18:57:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 23, + "열번": 7921, + "역명": "동매", + "시간": "07:26:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2044, + "역명": "동매", + "시간": "07:56:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 24, + "열번": 7923, + "역명": "동매", + "시간": "07:36:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "동매", + "시간": "08:05:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1087, + "역명": "동매", + "시간": "10:30:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2110, + "역명": "동매", + "시간": "11:01:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1141, + "역명": "동매", + "시간": "13:26:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2164, + "역명": "동매", + "시간": "13:57:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1195, + "역명": "동매", + "시간": "16:21:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2218, + "역명": "동매", + "시간": "16:52:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1265, + "역명": "동매", + "시간": "19:17:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 24, + "열번": 2286, + "역명": "동매", + "시간": "19:50:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "동매", + "시간": "07:48:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2054, + "역명": "동매", + "시간": "08:19:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1091, + "역명": "동매", + "시간": "10:43:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2114, + "역명": "동매", + "시간": "11:14:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1145, + "역명": "동매", + "시간": "13:39:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2168, + "역명": "동매", + "시간": "14:10:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1199, + "역명": "동매", + "시간": "16:34:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2222, + "역명": "동매", + "시간": "17:05:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1271, + "역명": "동매", + "시간": "19:29:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2290, + "역명": "동매", + "시간": "20:02:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1329, + "역명": "동매", + "시간": "22:28:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2336, + "역명": "동매", + "시간": "23:05:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 26, + "열번": 7925, + "역명": "동매", + "시간": "07:45:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2052, + "역명": "동매", + "시간": "08:14:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1089, + "역명": "동매", + "시간": "10:37:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2112, + "역명": "동매", + "시간": "11:08:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1143, + "역명": "동매", + "시간": "13:32:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2166, + "역명": "동매", + "시간": "14:03:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1197, + "역명": "동매", + "시간": "16:28:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2220, + "역명": "동매", + "시간": "17:01:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1269, + "역명": "동매", + "시간": "19:25:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2288, + "역명": "동매", + "시간": "19:56:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1327, + "역명": "동매", + "시간": "22:20:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 26, + "열번": 2334, + "역명": "동매", + "시간": "22:55:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1023, + "역명": "동매", + "시간": "08:04:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 27, + "열번": 2060, + "역명": "동매", + "시간": "08:33:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 28, + "열번": 7927, + "역명": "동매", + "시간": "07:54:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2056, + "역명": "동매", + "시간": "08:23:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1093, + "역명": "동매", + "시간": "10:50:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2116, + "역명": "동매", + "시간": "11:21:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1147, + "역명": "동매", + "시간": "13:45:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2170, + "역명": "동매", + "시간": "14:16:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1201, + "역명": "동매", + "시간": "16:41:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2224, + "역명": "동매", + "시간": "17:13:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1275, + "역명": "동매", + "시간": "19:37:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2292, + "역명": "동매", + "시간": "20:08:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1331, + "역명": "동매", + "시간": "22:37:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1027, + "역명": "동매", + "시간": "08:14:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2064, + "역명": "동매", + "시간": "08:43:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1099, + "역명": "동매", + "시간": "11:09:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2122, + "역명": "동매", + "시간": "11:40:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1153, + "역명": "동매", + "시간": "14:05:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2176, + "역명": "동매", + "시간": "14:36:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1207, + "역명": "동매", + "시간": "16:59:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2230, + "역명": "동매", + "시간": "17:29:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1283, + "역명": "동매", + "시간": "19:53:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 29, + "열번": 2298, + "역명": "동매", + "시간": "20:26:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1037, + "역명": "동매", + "시간": "08:37:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1031, + "역명": "동매", + "시간": "08:24:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2068, + "역명": "동매", + "시간": "08:53:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1101, + "역명": "동매", + "시간": "11:16:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2124, + "역명": "동매", + "시간": "11:47:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1155, + "역명": "동매", + "시간": "14:11:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2178, + "역명": "동매", + "시간": "14:42:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1209, + "역명": "동매", + "시간": "17:05:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2232, + "역명": "동매", + "시간": "17:37:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1287, + "역명": "동매", + "시간": "20:01:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2300, + "역명": "동매", + "시간": "20:32:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1335, + "역명": "동매", + "시간": "22:57:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 32, + "열번": 1049, + "역명": "동매", + "시간": "09:01:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1035, + "역명": "동매", + "시간": "08:33:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2072, + "역명": "동매", + "시간": "09:04:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1105, + "역명": "동매", + "시간": "11:29:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2128, + "역명": "동매", + "시간": "12:00:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1159, + "역명": "동매", + "시간": "14:24:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2182, + "역명": "동매", + "시간": "14:55:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1215, + "역명": "동매", + "시간": "17:23:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2238, + "역명": "동매", + "시간": "17:53:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1295, + "역명": "동매", + "시간": "20:19:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2306, + "역명": "동매", + "시간": "20:50:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 33, + "열번": 1339, + "역명": "동매", + "시간": "23:17:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 34, + "열번": 1061, + "역명": "동매", + "시간": "09:25:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1041, + "역명": "동매", + "시간": "08:45:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2076, + "역명": "동매", + "시간": "09:16:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1109, + "역명": "동매", + "시간": "11:42:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2132, + "역명": "동매", + "시간": "12:13:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1163, + "역명": "동매", + "시간": "14:37:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2186, + "역명": "동매", + "시간": "15:08:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1219, + "역명": "동매", + "시간": "17:33:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 35, + "열번": 2242, + "역명": "동매", + "시간": "18:01:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1245, + "역명": "동매", + "시간": "18:37:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 36, + "열번": 2270, + "역명": "동매", + "시간": "19:07:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1315, + "역명": "동매", + "시간": "21:32:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1043, + "역명": "동매", + "시간": "08:49:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2078, + "역명": "동매", + "시간": "09:22:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1111, + "역명": "동매", + "시간": "11:48:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2134, + "역명": "동매", + "시간": "12:19:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1165, + "역명": "동매", + "시간": "14:44:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2188, + "역명": "동매", + "시간": "15:15:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1221, + "역명": "동매", + "시간": "17:38:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 37, + "열번": 2246, + "역명": "동매", + "시간": "18:09:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 38, + "열번": 1259, + "역명": "동매", + "시간": "19:05:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 39, + "열번": 1047, + "역명": "동매", + "시간": "08:57:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2080, + "역명": "동매", + "시간": "09:28:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1113, + "역명": "동매", + "시간": "11:55:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2136, + "역명": "동매", + "시간": "12:26:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1167, + "역명": "동매", + "시간": "14:50:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2190, + "역명": "동매", + "시간": "15:21:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1225, + "역명": "동매", + "시간": "17:48:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 39, + "열번": 2250, + "역명": "동매", + "시간": "18:17:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 40, + "열번": 1267, + "역명": "동매", + "시간": "19:21:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 41, + "열번": 1053, + "역명": "동매", + "시간": "09:09:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2084, + "역명": "동매", + "시간": "09:40:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1117, + "역명": "동매", + "시간": "12:08:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2140, + "역명": "동매", + "시간": "12:39:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1171, + "역명": "동매", + "시간": "15:03:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2194, + "역명": "동매", + "시간": "15:34:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1229, + "역명": "동매", + "시간": "17:58:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2254, + "역명": "동매", + "시간": "18:27:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1305, + "역명": "동매", + "시간": "20:52:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2316, + "역명": "동매", + "시간": "21:21:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1345, + "역명": "동매", + "시간": "23:49:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 42, + "열번": 1273, + "역명": "동매", + "시간": "19:33:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 43, + "열번": 1057, + "역명": "동매", + "시간": "09:17:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2086, + "역명": "동매", + "시간": "09:46:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1119, + "역명": "동매", + "시간": "12:14:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2142, + "역명": "동매", + "시간": "12:45:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1173, + "역명": "동매", + "시간": "15:10:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2196, + "역명": "동매", + "시간": "15:41:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1233, + "역명": "동매", + "시간": "18:08:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2258, + "역명": "동매", + "시간": "18:37:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1307, + "역명": "동매", + "시간": "21:00:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 43, + "열번": 2318, + "역명": "동매", + "시간": "21:29:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 44, + "열번": 1279, + "역명": "동매", + "시간": "19:45:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 45, + "열번": 1069, + "역명": "동매", + "시간": "09:41:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2094, + "역명": "동매", + "시간": "10:10:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1125, + "역명": "동매", + "시간": "12:34:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2148, + "역명": "동매", + "시간": "13:05:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1179, + "역명": "동매", + "시간": "15:29:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2202, + "역명": "동매", + "시간": "15:59:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1239, + "역명": "동매", + "시간": "18:23:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2264, + "역명": "동매", + "시간": "18:52:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1311, + "역명": "동매", + "시간": "21:16:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2322, + "역명": "동매", + "시간": "21:49:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 45, + "열번": 1349, + "역명": "동매", + "시간": "00:13:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 46, + "열번": 1285, + "역명": "동매", + "시간": "19:57:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 47, + "열번": 1211, + "역명": "동매", + "시간": "17:11:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 47, + "열번": 2234, + "역명": "동매", + "시간": "17:41:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 47, + "열번": 1289, + "역명": "동매", + "시간": "20:05:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 47, + "열번": 2302, + "역명": "동매", + "시간": "20:38:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 48, + "열번": 1291, + "역명": "동매", + "시간": "20:09:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 49, + "열번": 1223, + "역명": "동매", + "시간": "17:43:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 49, + "열번": 2248, + "역명": "동매", + "시간": "18:13:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 49, + "열번": 1301, + "역명": "동매", + "시간": "20:36:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 49, + "열번": 2312, + "역명": "동매", + "시간": "21:08:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 50, + "열번": 2244, + "역명": "동매", + "시간": "18:05:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 50, + "열번": 1299, + "역명": "동매", + "시간": "20:29:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 50, + "열번": 2310, + "역명": "동매", + "시간": "21:02:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 50, + "열번": 1341, + "역명": "동매", + "시간": "23:27:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 51, + "열번": 1231, + "역명": "동매", + "시간": "18:03:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 51, + "열번": 2256, + "역명": "동매", + "시간": "18:32:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 52, + "열번": 5905, + "역명": "동매", + "시간": "11:58:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 52, + "열번": 6908, + "역명": "동매", + "시간": "12:28:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 53, + "열번": 1243, + "역명": "동매", + "시간": "18:33:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 53, + "열번": 2268, + "역명": "동매", + "시간": "19:02:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 54, + "열번": 5907, + "역명": "동매", + "시간": "15:39:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 54, + "열번": 6912, + "역명": "동매", + "시간": "16:12:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 55, + "열번": 1251, + "역명": "동매", + "시간": "18:49:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 55, + "열번": 2276, + "역명": "동매", + "시간": "19:22:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 55, + "열번": 1319, + "역명": "동매", + "시간": "21:48:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 55, + "열번": 2328, + "역명": "동매", + "시간": "22:19:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 57, + "열번": 1263, + "역명": "동매", + "시간": "19:13:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 57, + "열번": 2284, + "역명": "동매", + "시간": "19:44:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 57, + "열번": 1325, + "역명": "동매", + "시간": "22:12:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 57, + "열번": 2332, + "역명": "동매", + "시간": "22:43:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 59, + "열번": 5901, + "역명": "동매", + "시간": "11:06:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 59, + "열번": 6902, + "역명": "동매", + "시간": "11:37:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 61, + "열번": 5903, + "역명": "동매", + "시간": "14:34:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 61, + "열번": 5904, + "역명": "동매", + "시간": "15:05:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "장림", + "시간": "05:12:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "장림", + "시간": "07:41:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2050, + "역명": "장림", + "시간": "08:07:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "장림", + "시간": "07:32:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "장림", + "시간": "07:58:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1085, + "역명": "장림", + "시간": "10:26:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2108, + "역명": "장림", + "시간": "10:52:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1139, + "역명": "장림", + "시간": "13:21:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2162, + "역명": "장림", + "시간": "13:48:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1193, + "역명": "장림", + "시간": "16:17:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2216, + "역명": "장림", + "시간": "16:45:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1261, + "역명": "장림", + "시간": "19:11:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2282, + "역명": "장림", + "시간": "19:36:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1323, + "역명": "장림", + "시간": "22:06:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "장림", + "시간": "05:26:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "장림", + "시간": "07:59:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2058, + "역명": "장림", + "시간": "08:26:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1095, + "역명": "장림", + "시간": "10:58:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2118, + "역명": "장림", + "시간": "11:25:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1149, + "역명": "장림", + "시간": "13:54:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2172, + "역명": "장림", + "시간": "14:20:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1203, + "역명": "장림", + "시간": "16:49:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2226, + "역명": "장림", + "시간": "17:15:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1277, + "역명": "장림", + "시간": "19:43:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2294, + "역명": "장림", + "시간": "20:12:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 4, + "열번": 7901, + "역명": "장림", + "시간": "05:11:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "장림", + "시간": "05:38:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1025, + "역명": "장림", + "시간": "08:11:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2062, + "역명": "장림", + "시간": "08:36:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1097, + "역명": "장림", + "시간": "11:05:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2120, + "역명": "장림", + "시간": "11:31:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1151, + "역명": "장림", + "시간": "14:00:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2174, + "역명": "장림", + "시간": "14:27:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1205, + "역명": "장림", + "시간": "16:55:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2228, + "역명": "장림", + "시간": "17:23:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1281, + "역명": "장림", + "시간": "19:51:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2296, + "역명": "장림", + "시간": "20:18:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1333, + "역명": "장림", + "시간": "22:49:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2338, + "역명": "장림", + "시간": "23:18:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 5, + "열번": 7903, + "역명": "장림", + "시간": "05:23:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2008, + "역명": "장림", + "시간": "05:50:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1029, + "역명": "장림", + "시간": "08:21:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2066, + "역명": "장림", + "시간": "08:46:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 6, + "열번": 7905, + "역명": "장림", + "시간": "05:35:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2010, + "역명": "장림", + "시간": "06:02:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1033, + "역명": "장림", + "시간": "08:31:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2070, + "역명": "장림", + "시간": "08:56:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1103, + "역명": "장림", + "시간": "11:24:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2126, + "역명": "장림", + "시간": "11:51:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1157, + "역명": "장림", + "시간": "14:20:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2180, + "역명": "장림", + "시간": "14:46:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1213, + "역명": "장림", + "시간": "17:19:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2236, + "역명": "장림", + "시간": "17:47:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1293, + "역명": "장림", + "시간": "20:16:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2304, + "역명": "장림", + "시간": "20:42:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1337, + "역명": "장림", + "시간": "23:09:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1003, + "역명": "장림", + "시간": "06:27:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2020, + "역명": "장림", + "시간": "06:55:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1059, + "역명": "장림", + "시간": "09:23:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2088, + "역명": "장림", + "시간": "09:50:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1121, + "역명": "장림", + "시간": "12:23:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2144, + "역명": "장림", + "시간": "12:49:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1175, + "역명": "장림", + "시간": "15:18:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2198, + "역명": "장림", + "시간": "15:45:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1235, + "역명": "장림", + "시간": "18:15:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2260, + "역명": "장림", + "시간": "18:40:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1309, + "역명": "장림", + "시간": "21:10:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2320, + "역명": "장림", + "시간": "21:37:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1347, + "역명": "장림", + "시간": "00:03:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 8, + "열번": 7907, + "역명": "장림", + "시간": "05:47:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2012, + "역명": "장림", + "시간": "06:14:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1039, + "역명": "장림", + "시간": "08:43:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2074, + "역명": "장림", + "시간": "09:08:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1107, + "역명": "장림", + "시간": "11:37:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2130, + "역명": "장림", + "시간": "12:04:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1161, + "역명": "장림", + "시간": "14:33:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2184, + "역명": "장림", + "시간": "14:59:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1217, + "역명": "장림", + "시간": "17:30:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2240, + "역명": "장림", + "시간": "17:55:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1297, + "역명": "장림", + "시간": "20:26:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 8, + "열번": 2308, + "역명": "장림", + "시간": "20:54:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 9, + "열번": 2022, + "역명": "장림", + "시간": "07:01:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1063, + "역명": "장림", + "시간": "09:31:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 9, + "열번": 2090, + "역명": "장림", + "시간": "09:56:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 10, + "열번": 7909, + "역명": "장림", + "시간": "05:59:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2014, + "역명": "장림", + "시간": "06:26:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1045, + "역명": "장림", + "시간": "08:55:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 11, + "열번": 1005, + "역명": "장림", + "시간": "06:38:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2024, + "역명": "장림", + "시간": "07:07:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1065, + "역명": "장림", + "시간": "09:35:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2092, + "역명": "장림", + "시간": "10:02:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1123, + "역명": "장림", + "시간": "12:29:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2146, + "역명": "장림", + "시간": "12:56:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1177, + "역명": "장림", + "시간": "15:25:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2200, + "역명": "장림", + "시간": "15:51:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1237, + "역명": "장림", + "시간": "18:20:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 11, + "열번": 2262, + "역명": "장림", + "시간": "18:45:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 12, + "열번": 7911, + "역명": "장림", + "시간": "06:10:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2016, + "역명": "장림", + "시간": "06:37:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1051, + "역명": "장림", + "시간": "09:07:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2082, + "역명": "장림", + "시간": "09:32:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1115, + "역명": "장림", + "시간": "12:03:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2138, + "역명": "장림", + "시간": "12:30:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1169, + "역명": "장림", + "시간": "14:59:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "장림", + "시간": "15:25:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1227, + "역명": "장림", + "시간": "17:55:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2252, + "역명": "장림", + "시간": "18:20:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1303, + "역명": "장림", + "시간": "20:46:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2314, + "역명": "장림", + "시간": "21:12:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1343, + "역명": "장림", + "시간": "23:40:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1007, + "역명": "장림", + "시간": "06:49:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2028, + "역명": "장림", + "시간": "07:17:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1071, + "역명": "장림", + "시간": "09:47:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2096, + "역명": "장림", + "시간": "10:14:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1127, + "역명": "장림", + "시간": "12:42:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2150, + "역명": "장림", + "시간": "13:09:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1181, + "역명": "장림", + "시간": "15:38:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2204, + "역명": "장림", + "시간": "16:03:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1241, + "역명": "장림", + "시간": "18:30:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2266, + "역명": "장림", + "시간": "18:55:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1313, + "역명": "장림", + "시간": "21:26:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2324, + "역명": "장림", + "시간": "21:57:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 13, + "열번": 1351, + "역명": "장림", + "시간": "00:27:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 14, + "열번": 1001, + "역명": "장림", + "시간": "06:20:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2018, + "역명": "장림", + "시간": "06:46:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1055, + "역명": "장림", + "시간": "09:15:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1009, + "역명": "장림", + "시간": "07:00:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2032, + "역명": "장림", + "시간": "07:27:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1075, + "역명": "장림", + "시간": "09:56:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2100, + "역명": "장림", + "시간": "10:26:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1131, + "역명": "장림", + "시간": "12:55:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2154, + "역명": "장림", + "시간": "13:22:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1185, + "역명": "장림", + "시간": "15:51:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2208, + "역명": "장림", + "시간": "16:20:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1249, + "역명": "장림", + "시간": "18:47:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2274, + "역명": "장림", + "시간": "19:15:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 16, + "열번": 7913, + "역명": "장림", + "시간": "06:46:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2026, + "역명": "장림", + "시간": "07:12:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1067, + "역명": "장림", + "시간": "09:39:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2036, + "역명": "장림", + "시간": "07:36:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 18, + "열번": 7915, + "역명": "장림", + "시간": "06:57:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2030, + "역명": "장림", + "시간": "07:22:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1073, + "역명": "장림", + "시간": "09:51:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2098, + "역명": "장림", + "시간": "10:20:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1129, + "역명": "장림", + "시간": "12:49:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2152, + "역명": "장림", + "시간": "13:15:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1183, + "역명": "장림", + "시간": "15:44:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2206, + "역명": "장림", + "시간": "16:15:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1247, + "역명": "장림", + "시간": "18:43:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2272, + "역명": "장림", + "시간": "19:10:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1317, + "역명": "장림", + "시간": "21:42:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2326, + "역명": "장림", + "시간": "22:07:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 19, + "열번": 1011, + "역명": "장림", + "시간": "07:11:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2038, + "역명": "장림", + "시간": "07:40:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1079, + "역명": "장림", + "시간": "10:07:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2102, + "역명": "장림", + "시간": "10:33:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1133, + "역명": "장림", + "시간": "13:02:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2156, + "역명": "장림", + "시간": "13:28:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1187, + "역명": "장림", + "시간": "15:57:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2210, + "역명": "장림", + "시간": "16:25:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1253, + "역명": "장림", + "시간": "18:55:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2278, + "역명": "장림", + "시간": "19:25:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 20, + "열번": 7917, + "역명": "장림", + "시간": "07:06:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2034, + "역명": "장림", + "시간": "07:31:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 20, + "열번": 1077, + "역명": "장림", + "시간": "10:01:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 21, + "열번": 1013, + "역명": "장림", + "시간": "07:22:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2042, + "역명": "장림", + "시간": "07:49:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1083, + "역명": "장림", + "시간": "10:19:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2106, + "역명": "장림", + "시간": "10:46:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1137, + "역명": "장림", + "시간": "13:15:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2160, + "역명": "장림", + "시간": "13:41:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1191, + "역명": "장림", + "시간": "16:10:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2214, + "역명": "장림", + "시간": "16:35:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1257, + "역명": "장림", + "시간": "19:03:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2280, + "역명": "장림", + "시간": "19:30:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1321, + "역명": "장림", + "시간": "21:58:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2330, + "역명": "장림", + "시간": "22:29:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 22, + "열번": 7919, + "역명": "장림", + "시간": "07:18:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2040, + "역명": "장림", + "시간": "07:45:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1081, + "역명": "장림", + "시간": "10:13:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2104, + "역명": "장림", + "시간": "10:39:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1135, + "역명": "장림", + "시간": "13:08:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2158, + "역명": "장림", + "시간": "13:35:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1189, + "역명": "장림", + "시간": "16:04:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2212, + "역명": "장림", + "시간": "16:30:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1255, + "역명": "장림", + "시간": "18:59:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 23, + "열번": 7921, + "역명": "장림", + "시간": "07:28:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2044, + "역명": "장림", + "시간": "07:54:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 24, + "열번": 7923, + "역명": "장림", + "시간": "07:38:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "장림", + "시간": "08:03:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1087, + "역명": "장림", + "시간": "10:32:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2110, + "역명": "장림", + "시간": "10:59:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1141, + "역명": "장림", + "시간": "13:28:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2164, + "역명": "장림", + "시간": "13:54:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1195, + "역명": "장림", + "시간": "16:23:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2218, + "역명": "장림", + "시간": "16:50:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1265, + "역명": "장림", + "시간": "19:19:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 24, + "열번": 2286, + "역명": "장림", + "시간": "19:48:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "장림", + "시간": "07:50:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2054, + "역명": "장림", + "시간": "08:16:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1091, + "역명": "장림", + "시간": "10:45:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2114, + "역명": "장림", + "시간": "11:12:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1145, + "역명": "장림", + "시간": "13:41:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2168, + "역명": "장림", + "시간": "14:07:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1199, + "역명": "장림", + "시간": "16:36:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2222, + "역명": "장림", + "시간": "17:03:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1271, + "역명": "장림", + "시간": "19:31:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2290, + "역명": "장림", + "시간": "20:00:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1329, + "역명": "장림", + "시간": "22:30:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2336, + "역명": "장림", + "시간": "23:03:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 26, + "열번": 7925, + "역명": "장림", + "시간": "07:47:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2052, + "역명": "장림", + "시간": "08:12:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1089, + "역명": "장림", + "시간": "10:39:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2112, + "역명": "장림", + "시간": "11:05:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1143, + "역명": "장림", + "시간": "13:34:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2166, + "역명": "장림", + "시간": "14:01:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1197, + "역명": "장림", + "시간": "16:30:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2220, + "역명": "장림", + "시간": "16:59:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1269, + "역명": "장림", + "시간": "19:27:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2288, + "역명": "장림", + "시간": "19:54:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1327, + "역명": "장림", + "시간": "22:22:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 26, + "열번": 2334, + "역명": "장림", + "시간": "22:53:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1023, + "역명": "장림", + "시간": "08:06:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 27, + "열번": 2060, + "역명": "장림", + "시간": "08:31:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 28, + "열번": 7927, + "역명": "장림", + "시간": "07:56:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2056, + "역명": "장림", + "시간": "08:21:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1093, + "역명": "장림", + "시간": "10:52:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2116, + "역명": "장림", + "시간": "11:18:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1147, + "역명": "장림", + "시간": "13:47:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2170, + "역명": "장림", + "시간": "14:14:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1201, + "역명": "장림", + "시간": "16:43:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2224, + "역명": "장림", + "시간": "17:11:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1275, + "역명": "장림", + "시간": "19:39:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2292, + "역명": "장림", + "시간": "20:06:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1331, + "역명": "장림", + "시간": "22:39:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1027, + "역명": "장림", + "시간": "08:16:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2064, + "역명": "장림", + "시간": "08:41:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1099, + "역명": "장림", + "시간": "11:11:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2122, + "역명": "장림", + "시간": "11:38:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1153, + "역명": "장림", + "시간": "14:07:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2176, + "역명": "장림", + "시간": "14:33:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1207, + "역명": "장림", + "시간": "17:01:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2230, + "역명": "장림", + "시간": "17:27:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1283, + "역명": "장림", + "시간": "19:55:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 29, + "열번": 2298, + "역명": "장림", + "시간": "20:24:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1037, + "역명": "장림", + "시간": "08:39:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1031, + "역명": "장림", + "시간": "08:26:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2068, + "역명": "장림", + "시간": "08:51:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1101, + "역명": "장림", + "시간": "11:18:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2124, + "역명": "장림", + "시간": "11:44:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1155, + "역명": "장림", + "시간": "14:13:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2178, + "역명": "장림", + "시간": "14:40:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1209, + "역명": "장림", + "시간": "17:07:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2232, + "역명": "장림", + "시간": "17:35:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1287, + "역명": "장림", + "시간": "20:03:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2300, + "역명": "장림", + "시간": "20:30:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1335, + "역명": "장림", + "시간": "22:59:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 32, + "열번": 1049, + "역명": "장림", + "시간": "09:03:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1035, + "역명": "장림", + "시간": "08:35:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2072, + "역명": "장림", + "시간": "09:02:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1105, + "역명": "장림", + "시간": "11:31:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2128, + "역명": "장림", + "시간": "11:57:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1159, + "역명": "장림", + "시간": "14:26:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2182, + "역명": "장림", + "시간": "14:53:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1215, + "역명": "장림", + "시간": "17:25:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2238, + "역명": "장림", + "시간": "17:51:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1295, + "역명": "장림", + "시간": "20:21:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2306, + "역명": "장림", + "시간": "20:48:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 33, + "열번": 1339, + "역명": "장림", + "시간": "23:19:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 34, + "열번": 1061, + "역명": "장림", + "시간": "09:27:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1041, + "역명": "장림", + "시간": "08:47:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2076, + "역명": "장림", + "시간": "09:14:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1109, + "역명": "장림", + "시간": "11:44:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2132, + "역명": "장림", + "시간": "12:10:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1163, + "역명": "장림", + "시간": "14:39:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2186, + "역명": "장림", + "시간": "15:06:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1219, + "역명": "장림", + "시간": "17:35:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 35, + "열번": 2242, + "역명": "장림", + "시간": "17:59:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1245, + "역명": "장림", + "시간": "18:39:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 36, + "열번": 2270, + "역명": "장림", + "시간": "19:05:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1315, + "역명": "장림", + "시간": "21:34:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1043, + "역명": "장림", + "시간": "08:51:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2078, + "역명": "장림", + "시간": "09:20:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1111, + "역명": "장림", + "시간": "11:50:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2134, + "역명": "장림", + "시간": "12:17:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1165, + "역명": "장림", + "시간": "14:46:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2188, + "역명": "장림", + "시간": "15:12:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1221, + "역명": "장림", + "시간": "17:40:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 37, + "열번": 2246, + "역명": "장림", + "시간": "18:07:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 38, + "열번": 1259, + "역명": "장림", + "시간": "19:07:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 39, + "열번": 1047, + "역명": "장림", + "시간": "08:59:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2080, + "역명": "장림", + "시간": "09:26:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1113, + "역명": "장림", + "시간": "11:57:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2136, + "역명": "장림", + "시간": "12:23:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1167, + "역명": "장림", + "시간": "14:52:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2190, + "역명": "장림", + "시간": "15:19:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1225, + "역명": "장림", + "시간": "17:50:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 39, + "열번": 2250, + "역명": "장림", + "시간": "18:15:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 40, + "열번": 1267, + "역명": "장림", + "시간": "19:23:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 41, + "열번": 1053, + "역명": "장림", + "시간": "09:11:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2084, + "역명": "장림", + "시간": "09:38:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1117, + "역명": "장림", + "시간": "12:10:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2140, + "역명": "장림", + "시간": "12:36:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1171, + "역명": "장림", + "시간": "15:05:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2194, + "역명": "장림", + "시간": "15:32:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1229, + "역명": "장림", + "시간": "18:00:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2254, + "역명": "장림", + "시간": "18:25:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1305, + "역명": "장림", + "시간": "20:54:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2316, + "역명": "장림", + "시간": "21:19:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1345, + "역명": "장림", + "시간": "23:51:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 42, + "열번": 1273, + "역명": "장림", + "시간": "19:35:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 43, + "열번": 1057, + "역명": "장림", + "시간": "09:19:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2086, + "역명": "장림", + "시간": "09:44:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1119, + "역명": "장림", + "시간": "12:16:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2142, + "역명": "장림", + "시간": "12:43:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1173, + "역명": "장림", + "시간": "15:12:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2196, + "역명": "장림", + "시간": "15:38:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1233, + "역명": "장림", + "시간": "18:10:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2258, + "역명": "장림", + "시간": "18:35:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1307, + "역명": "장림", + "시간": "21:02:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 43, + "열번": 2318, + "역명": "장림", + "시간": "21:27:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 44, + "열번": 1279, + "역명": "장림", + "시간": "19:47:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 45, + "열번": 1069, + "역명": "장림", + "시간": "09:43:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2094, + "역명": "장림", + "시간": "10:08:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1125, + "역명": "장림", + "시간": "12:36:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2148, + "역명": "장림", + "시간": "13:02:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1179, + "역명": "장림", + "시간": "15:31:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2202, + "역명": "장림", + "시간": "15:57:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1239, + "역명": "장림", + "시간": "18:25:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2264, + "역명": "장림", + "시간": "18:50:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1311, + "역명": "장림", + "시간": "21:18:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2322, + "역명": "장림", + "시간": "21:47:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 45, + "열번": 1349, + "역명": "장림", + "시간": "00:15:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 46, + "열번": 1285, + "역명": "장림", + "시간": "19:59:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 47, + "열번": 1211, + "역명": "장림", + "시간": "17:13:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 47, + "열번": 2234, + "역명": "장림", + "시간": "17:39:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 47, + "열번": 1289, + "역명": "장림", + "시간": "20:07:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 47, + "열번": 2302, + "역명": "장림", + "시간": "20:36:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 48, + "열번": 1291, + "역명": "장림", + "시간": "20:11:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 49, + "열번": 1223, + "역명": "장림", + "시간": "17:45:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 49, + "열번": 2248, + "역명": "장림", + "시간": "18:11:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 49, + "열번": 1301, + "역명": "장림", + "시간": "20:38:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 49, + "열번": 2312, + "역명": "장림", + "시간": "21:06:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 50, + "열번": 2244, + "역명": "장림", + "시간": "18:03:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 50, + "열번": 1299, + "역명": "장림", + "시간": "20:31:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 50, + "열번": 2310, + "역명": "장림", + "시간": "21:00:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 50, + "열번": 1341, + "역명": "장림", + "시간": "23:29:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 51, + "열번": 1231, + "역명": "장림", + "시간": "18:05:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 51, + "열번": 2256, + "역명": "장림", + "시간": "18:30:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 52, + "열번": 5905, + "역명": "장림", + "시간": "12:00:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 52, + "열번": 6908, + "역명": "장림", + "시간": "12:26:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 53, + "열번": 1243, + "역명": "장림", + "시간": "18:35:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 53, + "열번": 2268, + "역명": "장림", + "시간": "19:00:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 54, + "열번": 5907, + "역명": "장림", + "시간": "15:41:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 54, + "열번": 6912, + "역명": "장림", + "시간": "16:10:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 55, + "열번": 1251, + "역명": "장림", + "시간": "18:51:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 55, + "열번": 2276, + "역명": "장림", + "시간": "19:20:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 55, + "열번": 1319, + "역명": "장림", + "시간": "21:50:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 55, + "열번": 2328, + "역명": "장림", + "시간": "22:17:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 57, + "열번": 1263, + "역명": "장림", + "시간": "19:15:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 57, + "열번": 2284, + "역명": "장림", + "시간": "19:42:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 57, + "열번": 1325, + "역명": "장림", + "시간": "22:14:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 57, + "열번": 2332, + "역명": "장림", + "시간": "22:41:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 59, + "열번": 5901, + "역명": "장림", + "시간": "11:08:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 59, + "열번": 6902, + "역명": "장림", + "시간": "11:34:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 61, + "열번": 5903, + "역명": "장림", + "시간": "14:36:25", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 61, + "열번": 5904, + "역명": "장림", + "시간": "15:02:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "신장림", + "시간": "05:11:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "신장림", + "시간": "07:43:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2050, + "역명": "신장림", + "시간": "08:06:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "신장림", + "시간": "07:34:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "신장림", + "시간": "07:57:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1085, + "역명": "신장림", + "시간": "10:28:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2108, + "역명": "신장림", + "시간": "10:51:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1139, + "역명": "신장림", + "시간": "13:23:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2162, + "역명": "신장림", + "시간": "13:46:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1193, + "역명": "신장림", + "시간": "16:19:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2216, + "역명": "신장림", + "시간": "16:43:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1261, + "역명": "신장림", + "시간": "19:13:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2282, + "역명": "신장림", + "시간": "19:34:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1323, + "역명": "신장림", + "시간": "22:08:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "신장림", + "시간": "05:24:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "신장림", + "시간": "08:01:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2058, + "역명": "신장림", + "시간": "08:24:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1095, + "역명": "신장림", + "시간": "11:00:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2118, + "역명": "신장림", + "시간": "11:23:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1149, + "역명": "신장림", + "시간": "13:56:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2172, + "역명": "신장림", + "시간": "14:19:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1203, + "역명": "신장림", + "시간": "16:51:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2226, + "역명": "신장림", + "시간": "17:13:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1277, + "역명": "신장림", + "시간": "19:45:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2294, + "역명": "신장림", + "시간": "20:10:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 4, + "열번": 7901, + "역명": "신장림", + "시간": "05:12:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "신장림", + "시간": "05:37:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1025, + "역명": "신장림", + "시간": "08:13:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2062, + "역명": "신장림", + "시간": "08:34:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1097, + "역명": "신장림", + "시간": "11:07:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2120, + "역명": "신장림", + "시간": "11:30:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1151, + "역명": "신장림", + "시간": "14:02:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2174, + "역명": "신장림", + "시간": "14:25:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1205, + "역명": "신장림", + "시간": "16:57:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2228, + "역명": "신장림", + "시간": "17:21:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1281, + "역명": "신장림", + "시간": "19:53:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2296, + "역명": "신장림", + "시간": "20:16:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1333, + "역명": "신장림", + "시간": "22:51:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2338, + "역명": "신장림", + "시간": "23:17:25", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 5, + "열번": 7903, + "역명": "신장림", + "시간": "05:24:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2008, + "역명": "신장림", + "시간": "05:49:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1029, + "역명": "신장림", + "시간": "08:23:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2066, + "역명": "신장림", + "시간": "08:44:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 6, + "열번": 7905, + "역명": "신장림", + "시간": "05:36:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2010, + "역명": "신장림", + "시간": "06:01:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1033, + "역명": "신장림", + "시간": "08:33:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2070, + "역명": "신장림", + "시간": "08:54:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1103, + "역명": "신장림", + "시간": "11:26:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2126, + "역명": "신장림", + "시간": "11:49:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1157, + "역명": "신장림", + "시간": "14:22:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2180, + "역명": "신장림", + "시간": "14:45:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1213, + "역명": "신장림", + "시간": "17:21:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2236, + "역명": "신장림", + "시간": "17:45:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1293, + "역명": "신장림", + "시간": "20:18:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2304, + "역명": "신장림", + "시간": "20:40:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1337, + "역명": "신장림", + "시간": "23:11:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1003, + "역명": "신장림", + "시간": "06:29:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2020, + "역명": "신장림", + "시간": "06:53:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1059, + "역명": "신장림", + "시간": "09:25:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2088, + "역명": "신장림", + "시간": "09:48:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1121, + "역명": "신장림", + "시간": "12:25:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2144, + "역명": "신장림", + "시간": "12:48:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1175, + "역명": "신장림", + "시간": "15:20:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2198, + "역명": "신장림", + "시간": "15:43:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1235, + "역명": "신장림", + "시간": "18:17:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2260, + "역명": "신장림", + "시간": "18:38:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1309, + "역명": "신장림", + "시간": "21:12:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2320, + "역명": "신장림", + "시간": "21:35:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1347, + "역명": "신장림", + "시간": "00:05:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 8, + "열번": 7907, + "역명": "신장림", + "시간": "05:48:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2012, + "역명": "신장림", + "시간": "06:13:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1039, + "역명": "신장림", + "시간": "08:45:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2074, + "역명": "신장림", + "시간": "09:06:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1107, + "역명": "신장림", + "시간": "11:39:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2130, + "역명": "신장림", + "시간": "12:02:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1161, + "역명": "신장림", + "시간": "14:35:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2184, + "역명": "신장림", + "시간": "14:58:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1217, + "역명": "신장림", + "시간": "17:32:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2240, + "역명": "신장림", + "시간": "17:53:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1297, + "역명": "신장림", + "시간": "20:28:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 8, + "열번": 2308, + "역명": "신장림", + "시간": "20:52:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 9, + "열번": 2022, + "역명": "신장림", + "시간": "06:59:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1063, + "역명": "신장림", + "시간": "09:33:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 9, + "열번": 2090, + "역명": "신장림", + "시간": "09:54:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 10, + "열번": 7909, + "역명": "신장림", + "시간": "06:00:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2014, + "역명": "신장림", + "시간": "06:25:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1045, + "역명": "신장림", + "시간": "08:57:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 11, + "열번": 1005, + "역명": "신장림", + "시간": "06:40:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2024, + "역명": "신장림", + "시간": "07:05:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1065, + "역명": "신장림", + "시간": "09:37:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2092, + "역명": "신장림", + "시간": "10:00:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1123, + "역명": "신장림", + "시간": "12:31:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2146, + "역명": "신장림", + "시간": "12:54:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1177, + "역명": "신장림", + "시간": "15:27:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2200, + "역명": "신장림", + "시간": "15:49:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1237, + "역명": "신장림", + "시간": "18:22:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 11, + "열번": 2262, + "역명": "신장림", + "시간": "18:43:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 12, + "열번": 7911, + "역명": "신장림", + "시간": "06:11:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2016, + "역명": "신장림", + "시간": "06:36:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1051, + "역명": "신장림", + "시간": "09:09:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2082, + "역명": "신장림", + "시간": "09:30:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1115, + "역명": "신장림", + "시간": "12:05:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2138, + "역명": "신장림", + "시간": "12:28:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1169, + "역명": "신장림", + "시간": "15:01:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "신장림", + "시간": "15:24:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1227, + "역명": "신장림", + "시간": "17:57:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2252, + "역명": "신장림", + "시간": "18:18:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1303, + "역명": "신장림", + "시간": "20:48:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2314, + "역명": "신장림", + "시간": "21:10:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1343, + "역명": "신장림", + "시간": "23:42:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1007, + "역명": "신장림", + "시간": "06:51:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2028, + "역명": "신장림", + "시간": "07:16:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1071, + "역명": "신장림", + "시간": "09:49:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2096, + "역명": "신장림", + "시간": "10:12:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1127, + "역명": "신장림", + "시간": "12:44:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2150, + "역명": "신장림", + "시간": "13:07:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1181, + "역명": "신장림", + "시간": "15:40:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2204, + "역명": "신장림", + "시간": "16:01:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1241, + "역명": "신장림", + "시간": "18:32:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2266, + "역명": "신장림", + "시간": "18:53:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1313, + "역명": "신장림", + "시간": "21:28:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2324, + "역명": "신장림", + "시간": "21:55:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 13, + "열번": 1351, + "역명": "신장림", + "시간": "00:28:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 14, + "열번": 1001, + "역명": "신장림", + "시간": "06:21:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2018, + "역명": "신장림", + "시간": "06:45:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1055, + "역명": "신장림", + "시간": "09:17:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1009, + "역명": "신장림", + "시간": "07:02:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2032, + "역명": "신장림", + "시간": "07:25:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1075, + "역명": "신장림", + "시간": "09:58:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2100, + "역명": "신장림", + "시간": "10:25:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1131, + "역명": "신장림", + "시간": "12:57:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2154, + "역명": "신장림", + "시간": "13:20:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1185, + "역명": "신장림", + "시간": "15:53:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2208, + "역명": "신장림", + "시간": "16:18:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1249, + "역명": "신장림", + "시간": "18:49:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2274, + "역명": "신장림", + "시간": "19:13:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 16, + "열번": 7913, + "역명": "신장림", + "시간": "06:47:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2026, + "역명": "신장림", + "시간": "07:11:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1067, + "역명": "신장림", + "시간": "09:41:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2036, + "역명": "신장림", + "시간": "07:34:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 18, + "열번": 7915, + "역명": "신장림", + "시간": "06:58:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2030, + "역명": "신장림", + "시간": "07:21:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1073, + "역명": "신장림", + "시간": "09:53:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2098, + "역명": "신장림", + "시간": "10:18:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1129, + "역명": "신장림", + "시간": "12:51:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2152, + "역명": "신장림", + "시간": "13:14:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1183, + "역명": "신장림", + "시간": "15:46:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2206, + "역명": "신장림", + "시간": "16:13:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1247, + "역명": "신장림", + "시간": "18:45:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2272, + "역명": "신장림", + "시간": "19:08:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1317, + "역명": "신장림", + "시간": "21:44:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2326, + "역명": "신장림", + "시간": "22:05:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 19, + "열번": 1011, + "역명": "신장림", + "시간": "07:13:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2038, + "역명": "신장림", + "시간": "07:39:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1079, + "역명": "신장림", + "시간": "10:09:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2102, + "역명": "신장림", + "시간": "10:31:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1133, + "역명": "신장림", + "시간": "13:04:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2156, + "역명": "신장림", + "시간": "13:27:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1187, + "역명": "신장림", + "시간": "15:59:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2210, + "역명": "신장림", + "시간": "16:23:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1253, + "역명": "신장림", + "시간": "18:57:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2278, + "역명": "신장림", + "시간": "19:23:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 20, + "열번": 7917, + "역명": "신장림", + "시간": "07:08:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2034, + "역명": "신장림", + "시간": "07:30:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 20, + "열번": 1077, + "역명": "신장림", + "시간": "10:03:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 21, + "열번": 1013, + "역명": "신장림", + "시간": "07:24:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2042, + "역명": "신장림", + "시간": "07:48:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1083, + "역명": "신장림", + "시간": "10:21:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2106, + "역명": "신장림", + "시간": "10:44:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1137, + "역명": "신장림", + "시간": "13:17:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2160, + "역명": "신장림", + "시간": "13:40:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1191, + "역명": "신장림", + "시간": "16:12:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2214, + "역명": "신장림", + "시간": "16:33:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1257, + "역명": "신장림", + "시간": "19:05:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2280, + "역명": "신장림", + "시간": "19:28:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1321, + "역명": "신장림", + "시간": "22:00:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2330, + "역명": "신장림", + "시간": "22:27:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 22, + "열번": 7919, + "역명": "신장림", + "시간": "07:19:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2040, + "역명": "신장림", + "시간": "07:43:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1081, + "역명": "신장림", + "시간": "10:15:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2104, + "역명": "신장림", + "시간": "10:38:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1135, + "역명": "신장림", + "시간": "13:10:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2158, + "역명": "신장림", + "시간": "13:33:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1189, + "역명": "신장림", + "시간": "16:06:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2212, + "역명": "신장림", + "시간": "16:28:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1255, + "역명": "신장림", + "시간": "19:01:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 23, + "열번": 7921, + "역명": "신장림", + "시간": "07:30:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2044, + "역명": "신장림", + "시간": "07:52:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 24, + "열번": 7923, + "역명": "신장림", + "시간": "07:40:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "신장림", + "시간": "08:01:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1087, + "역명": "신장림", + "시간": "10:34:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2110, + "역명": "신장림", + "시간": "10:57:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1141, + "역명": "신장림", + "시간": "13:30:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2164, + "역명": "신장림", + "시간": "13:53:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1195, + "역명": "신장림", + "시간": "16:25:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2218, + "역명": "신장림", + "시간": "16:48:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1265, + "역명": "신장림", + "시간": "19:21:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 24, + "열번": 2286, + "역명": "신장림", + "시간": "19:46:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "신장림", + "시간": "07:52:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2054, + "역명": "신장림", + "시간": "08:15:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1091, + "역명": "신장림", + "시간": "10:47:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2114, + "역명": "신장림", + "시간": "11:10:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1145, + "역명": "신장림", + "시간": "13:43:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2168, + "역명": "신장림", + "시간": "14:06:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1199, + "역명": "신장림", + "시간": "16:38:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2222, + "역명": "신장림", + "시간": "17:01:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1271, + "역명": "신장림", + "시간": "19:33:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2290, + "역명": "신장림", + "시간": "19:58:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1329, + "역명": "신장림", + "시간": "22:32:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2336, + "역명": "신장림", + "시간": "23:01:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 26, + "열번": 7925, + "역명": "신장림", + "시간": "07:49:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2052, + "역명": "신장림", + "시간": "08:10:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1089, + "역명": "신장림", + "시간": "10:41:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2112, + "역명": "신장림", + "시간": "11:04:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1143, + "역명": "신장림", + "시간": "13:36:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2166, + "역명": "신장림", + "시간": "13:59:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1197, + "역명": "신장림", + "시간": "16:32:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2220, + "역명": "신장림", + "시간": "16:57:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1269, + "역명": "신장림", + "시간": "19:29:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2288, + "역명": "신장림", + "시간": "19:52:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1327, + "역명": "신장림", + "시간": "22:24:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 26, + "열번": 2334, + "역명": "신장림", + "시간": "22:51:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1023, + "역명": "신장림", + "시간": "08:08:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 27, + "열번": 2060, + "역명": "신장림", + "시간": "08:29:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 28, + "열번": 7927, + "역명": "신장림", + "시간": "07:58:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2056, + "역명": "신장림", + "시간": "08:19:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1093, + "역명": "신장림", + "시간": "10:54:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2116, + "역명": "신장림", + "시간": "11:17:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1147, + "역명": "신장림", + "시간": "13:49:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2170, + "역명": "신장림", + "시간": "14:12:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1201, + "역명": "신장림", + "시간": "16:45:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2224, + "역명": "신장림", + "시간": "17:09:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1275, + "역명": "신장림", + "시간": "19:41:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2292, + "역명": "신장림", + "시간": "20:04:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1331, + "역명": "신장림", + "시간": "22:41:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1027, + "역명": "신장림", + "시간": "08:18:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2064, + "역명": "신장림", + "시간": "08:39:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1099, + "역명": "신장림", + "시간": "11:13:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2122, + "역명": "신장림", + "시간": "11:36:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1153, + "역명": "신장림", + "시간": "14:09:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2176, + "역명": "신장림", + "시간": "14:32:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1207, + "역명": "신장림", + "시간": "17:03:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2230, + "역명": "신장림", + "시간": "17:25:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1283, + "역명": "신장림", + "시간": "19:57:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 29, + "열번": 2298, + "역명": "신장림", + "시간": "20:22:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1037, + "역명": "신장림", + "시간": "08:41:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1031, + "역명": "신장림", + "시간": "08:28:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2068, + "역명": "신장림", + "시간": "08:49:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1101, + "역명": "신장림", + "시간": "11:20:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2124, + "역명": "신장림", + "시간": "11:43:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1155, + "역명": "신장림", + "시간": "14:15:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2178, + "역명": "신장림", + "시간": "14:38:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1209, + "역명": "신장림", + "시간": "17:09:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2232, + "역명": "신장림", + "시간": "17:33:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1287, + "역명": "신장림", + "시간": "20:05:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2300, + "역명": "신장림", + "시간": "20:28:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1335, + "역명": "신장림", + "시간": "23:01:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 32, + "열번": 1049, + "역명": "신장림", + "시간": "09:05:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1035, + "역명": "신장림", + "시간": "08:37:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2072, + "역명": "신장림", + "시간": "09:00:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1105, + "역명": "신장림", + "시간": "11:33:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2128, + "역명": "신장림", + "시간": "11:56:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1159, + "역명": "신장림", + "시간": "14:28:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2182, + "역명": "신장림", + "시간": "14:51:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1215, + "역명": "신장림", + "시간": "17:27:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2238, + "역명": "신장림", + "시간": "17:49:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1295, + "역명": "신장림", + "시간": "20:23:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2306, + "역명": "신장림", + "시간": "20:46:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 33, + "열번": 1339, + "역명": "신장림", + "시간": "23:21:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 34, + "열번": 1061, + "역명": "신장림", + "시간": "09:29:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1041, + "역명": "신장림", + "시간": "08:49:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2076, + "역명": "신장림", + "시간": "09:12:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1109, + "역명": "신장림", + "시간": "11:46:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2132, + "역명": "신장림", + "시간": "12:09:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1163, + "역명": "신장림", + "시간": "14:41:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2186, + "역명": "신장림", + "시간": "15:04:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1219, + "역명": "신장림", + "시간": "17:37:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 35, + "열번": 2242, + "역명": "신장림", + "시간": "17:57:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1245, + "역명": "신장림", + "시간": "18:41:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 36, + "열번": 2270, + "역명": "신장림", + "시간": "19:03:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1315, + "역명": "신장림", + "시간": "21:36:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1043, + "역명": "신장림", + "시간": "08:53:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2078, + "역명": "신장림", + "시간": "09:18:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1111, + "역명": "신장림", + "시간": "11:52:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2134, + "역명": "신장림", + "시간": "12:15:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1165, + "역명": "신장림", + "시간": "14:48:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2188, + "역명": "신장림", + "시간": "15:11:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1221, + "역명": "신장림", + "시간": "17:42:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 37, + "열번": 2246, + "역명": "신장림", + "시간": "18:05:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 38, + "열번": 1259, + "역명": "신장림", + "시간": "19:09:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 39, + "열번": 1047, + "역명": "신장림", + "시간": "09:01:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2080, + "역명": "신장림", + "시간": "09:24:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1113, + "역명": "신장림", + "시간": "11:59:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2136, + "역명": "신장림", + "시간": "12:22:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1167, + "역명": "신장림", + "시간": "14:54:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2190, + "역명": "신장림", + "시간": "15:17:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1225, + "역명": "신장림", + "시간": "17:52:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 39, + "열번": 2250, + "역명": "신장림", + "시간": "18:13:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 40, + "열번": 1267, + "역명": "신장림", + "시간": "19:25:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 41, + "열번": 1053, + "역명": "신장림", + "시간": "09:13:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2084, + "역명": "신장림", + "시간": "09:36:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1117, + "역명": "신장림", + "시간": "12:12:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2140, + "역명": "신장림", + "시간": "12:35:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1171, + "역명": "신장림", + "시간": "15:07:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2194, + "역명": "신장림", + "시간": "15:30:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1229, + "역명": "신장림", + "시간": "18:02:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2254, + "역명": "신장림", + "시간": "18:23:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1305, + "역명": "신장림", + "시간": "20:56:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2316, + "역명": "신장림", + "시간": "21:17:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1345, + "역명": "신장림", + "시간": "23:53:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 42, + "열번": 1273, + "역명": "신장림", + "시간": "19:37:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 43, + "열번": 1057, + "역명": "신장림", + "시간": "09:21:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2086, + "역명": "신장림", + "시간": "09:42:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1119, + "역명": "신장림", + "시간": "12:18:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2142, + "역명": "신장림", + "시간": "12:41:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1173, + "역명": "신장림", + "시간": "15:14:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2196, + "역명": "신장림", + "시간": "15:37:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1233, + "역명": "신장림", + "시간": "18:12:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2258, + "역명": "신장림", + "시간": "18:33:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1307, + "역명": "신장림", + "시간": "21:04:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 43, + "열번": 2318, + "역명": "신장림", + "시간": "21:25:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 44, + "열번": 1279, + "역명": "신장림", + "시간": "19:49:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 45, + "열번": 1069, + "역명": "신장림", + "시간": "09:45:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2094, + "역명": "신장림", + "시간": "10:06:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1125, + "역명": "신장림", + "시간": "12:38:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2148, + "역명": "신장림", + "시간": "13:01:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1179, + "역명": "신장림", + "시간": "15:33:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2202, + "역명": "신장림", + "시간": "15:55:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1239, + "역명": "신장림", + "시간": "18:27:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2264, + "역명": "신장림", + "시간": "18:48:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1311, + "역명": "신장림", + "시간": "21:20:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2322, + "역명": "신장림", + "시간": "21:45:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 45, + "열번": 1349, + "역명": "신장림", + "시간": "00:17:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 46, + "열번": 1285, + "역명": "신장림", + "시간": "20:01:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 47, + "열번": 1211, + "역명": "신장림", + "시간": "17:15:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 47, + "열번": 2234, + "역명": "신장림", + "시간": "17:37:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 47, + "열번": 1289, + "역명": "신장림", + "시간": "20:09:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 47, + "열번": 2302, + "역명": "신장림", + "시간": "20:34:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 48, + "열번": 1291, + "역명": "신장림", + "시간": "20:13:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 49, + "열번": 1223, + "역명": "신장림", + "시간": "17:47:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 49, + "열번": 2248, + "역명": "신장림", + "시간": "18:09:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 49, + "열번": 1301, + "역명": "신장림", + "시간": "20:40:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 49, + "열번": 2312, + "역명": "신장림", + "시간": "21:04:35", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 50, + "열번": 2244, + "역명": "신장림", + "시간": "18:01:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 50, + "열번": 1299, + "역명": "신장림", + "시간": "20:33:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 50, + "열번": 2310, + "역명": "신장림", + "시간": "20:58:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 50, + "열번": 1341, + "역명": "신장림", + "시간": "23:31:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 51, + "열번": 1231, + "역명": "신장림", + "시간": "18:07:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 51, + "열번": 2256, + "역명": "신장림", + "시간": "18:28:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 52, + "열번": 5905, + "역명": "신장림", + "시간": "12:02:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 52, + "열번": 6908, + "역명": "신장림", + "시간": "12:24:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 53, + "열번": 1243, + "역명": "신장림", + "시간": "18:37:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 53, + "열번": 2268, + "역명": "신장림", + "시간": "18:58:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 54, + "열번": 5907, + "역명": "신장림", + "시간": "15:43:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 54, + "열번": 6912, + "역명": "신장림", + "시간": "16:08:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 55, + "열번": 1251, + "역명": "신장림", + "시간": "18:53:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 55, + "열번": 2276, + "역명": "신장림", + "시간": "19:18:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 55, + "열번": 1319, + "역명": "신장림", + "시간": "21:52:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 55, + "열번": 2328, + "역명": "신장림", + "시간": "22:15:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 57, + "열번": 1263, + "역명": "신장림", + "시간": "19:17:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 57, + "열번": 2284, + "역명": "신장림", + "시간": "19:40:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 57, + "열번": 1325, + "역명": "신장림", + "시간": "22:16:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 57, + "열번": 2332, + "역명": "신장림", + "시간": "22:39:35", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 59, + "열번": 5901, + "역명": "신장림", + "시간": "11:10:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 59, + "열번": 6902, + "역명": "신장림", + "시간": "11:33:05", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 61, + "열번": 5903, + "역명": "신장림", + "시간": "14:38:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 61, + "열번": 5904, + "역명": "신장림", + "시간": "15:01:05", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "낫개", + "시간": "05:08:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "낫개", + "시간": "07:45:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2050, + "역명": "낫개", + "시간": "08:03:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "낫개", + "시간": "07:36:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "낫개", + "시간": "07:54:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1085, + "역명": "낫개", + "시간": "10:30:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2108, + "역명": "낫개", + "시간": "10:48:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1139, + "역명": "낫개", + "시간": "13:25:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2162, + "역명": "낫개", + "시간": "13:44:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1193, + "역명": "낫개", + "시간": "16:21:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2216, + "역명": "낫개", + "시간": "16:41:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1261, + "역명": "낫개", + "시간": "19:15:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2282, + "역명": "낫개", + "시간": "19:32:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1323, + "역명": "낫개", + "시간": "22:10:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "낫개", + "시간": "05:22:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "낫개", + "시간": "08:03:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2058, + "역명": "낫개", + "시간": "08:22:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1095, + "역명": "낫개", + "시간": "11:02:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2118, + "역명": "낫개", + "시간": "11:21:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1149, + "역명": "낫개", + "시간": "13:58:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2172, + "역명": "낫개", + "시간": "14:16:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1203, + "역명": "낫개", + "시간": "16:53:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2226, + "역명": "낫개", + "시간": "17:11:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1277, + "역명": "낫개", + "시간": "19:47:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2294, + "역명": "낫개", + "시간": "20:08:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 4, + "열번": 7901, + "역명": "낫개", + "시간": "05:14:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "낫개", + "시간": "05:34:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1025, + "역명": "낫개", + "시간": "08:15:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2062, + "역명": "낫개", + "시간": "08:32:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1097, + "역명": "낫개", + "시간": "11:09:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2120, + "역명": "낫개", + "시간": "11:27:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1151, + "역명": "낫개", + "시간": "14:04:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2174, + "역명": "낫개", + "시간": "14:23:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1205, + "역명": "낫개", + "시간": "16:59:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2228, + "역명": "낫개", + "시간": "17:19:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1281, + "역명": "낫개", + "시간": "19:55:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2296, + "역명": "낫개", + "시간": "20:14:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1333, + "역명": "낫개", + "시간": "22:53:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2338, + "역명": "낫개", + "시간": "23:15:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 5, + "열번": 7903, + "역명": "낫개", + "시간": "05:26:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2008, + "역명": "낫개", + "시간": "05:46:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1029, + "역명": "낫개", + "시간": "08:25:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2066, + "역명": "낫개", + "시간": "08:42:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 6, + "열번": 7905, + "역명": "낫개", + "시간": "05:38:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2010, + "역명": "낫개", + "시간": "05:58:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1033, + "역명": "낫개", + "시간": "08:35:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2070, + "역명": "낫개", + "시간": "08:52:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1103, + "역명": "낫개", + "시간": "11:28:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2126, + "역명": "낫개", + "시간": "11:47:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1157, + "역명": "낫개", + "시간": "14:24:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2180, + "역명": "낫개", + "시간": "14:42:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1213, + "역명": "낫개", + "시간": "17:23:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2236, + "역명": "낫개", + "시간": "17:43:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1293, + "역명": "낫개", + "시간": "20:20:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2304, + "역명": "낫개", + "시간": "20:38:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1337, + "역명": "낫개", + "시간": "23:13:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1003, + "역명": "낫개", + "시간": "06:31:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2020, + "역명": "낫개", + "시간": "06:51:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1059, + "역명": "낫개", + "시간": "09:27:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2088, + "역명": "낫개", + "시간": "09:46:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1121, + "역명": "낫개", + "시간": "12:27:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2144, + "역명": "낫개", + "시간": "12:45:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1175, + "역명": "낫개", + "시간": "15:22:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2198, + "역명": "낫개", + "시간": "15:41:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1235, + "역명": "낫개", + "시간": "18:19:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2260, + "역명": "낫개", + "시간": "18:36:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1309, + "역명": "낫개", + "시간": "21:14:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2320, + "역명": "낫개", + "시간": "21:33:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1347, + "역명": "낫개", + "시간": "00:07:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 8, + "열번": 7907, + "역명": "낫개", + "시간": "05:50:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2012, + "역명": "낫개", + "시간": "06:10:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1039, + "역명": "낫개", + "시간": "08:47:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2074, + "역명": "낫개", + "시간": "09:04:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1107, + "역명": "낫개", + "시간": "11:41:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2130, + "역명": "낫개", + "시간": "12:00:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1161, + "역명": "낫개", + "시간": "14:37:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2184, + "역명": "낫개", + "시간": "14:55:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1217, + "역명": "낫개", + "시간": "17:34:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2240, + "역명": "낫개", + "시간": "17:51:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1297, + "역명": "낫개", + "시간": "20:30:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 8, + "열번": 2308, + "역명": "낫개", + "시간": "20:50:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 9, + "열번": 2022, + "역명": "낫개", + "시간": "06:57:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1063, + "역명": "낫개", + "시간": "09:35:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 9, + "열번": 2090, + "역명": "낫개", + "시간": "09:52:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 10, + "열번": 7909, + "역명": "낫개", + "시간": "06:02:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2014, + "역명": "낫개", + "시간": "06:22:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1045, + "역명": "낫개", + "시간": "08:59:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 11, + "열번": 1005, + "역명": "낫개", + "시간": "06:42:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2024, + "역명": "낫개", + "시간": "07:03:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1065, + "역명": "낫개", + "시간": "09:39:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2092, + "역명": "낫개", + "시간": "09:58:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1123, + "역명": "낫개", + "시간": "12:33:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2146, + "역명": "낫개", + "시간": "12:52:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1177, + "역명": "낫개", + "시간": "15:29:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2200, + "역명": "낫개", + "시간": "15:47:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1237, + "역명": "낫개", + "시간": "18:24:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 11, + "열번": 2262, + "역명": "낫개", + "시간": "18:41:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 12, + "열번": 7911, + "역명": "낫개", + "시간": "06:13:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2016, + "역명": "낫개", + "시간": "06:33:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1051, + "역명": "낫개", + "시간": "09:11:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2082, + "역명": "낫개", + "시간": "09:28:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1115, + "역명": "낫개", + "시간": "12:07:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2138, + "역명": "낫개", + "시간": "12:26:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1169, + "역명": "낫개", + "시간": "15:03:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "낫개", + "시간": "15:21:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1227, + "역명": "낫개", + "시간": "17:59:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2252, + "역명": "낫개", + "시간": "18:16:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1303, + "역명": "낫개", + "시간": "20:50:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2314, + "역명": "낫개", + "시간": "21:08:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1343, + "역명": "낫개", + "시간": "23:44:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1007, + "역명": "낫개", + "시간": "06:53:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2028, + "역명": "낫개", + "시간": "07:13:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1071, + "역명": "낫개", + "시간": "09:51:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2096, + "역명": "낫개", + "시간": "10:10:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1127, + "역명": "낫개", + "시간": "12:46:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2150, + "역명": "낫개", + "시간": "13:05:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1181, + "역명": "낫개", + "시간": "15:42:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2204, + "역명": "낫개", + "시간": "15:59:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1241, + "역명": "낫개", + "시간": "18:34:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2266, + "역명": "낫개", + "시간": "18:51:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1313, + "역명": "낫개", + "시간": "21:30:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2324, + "역명": "낫개", + "시간": "21:53:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 13, + "열번": 1351, + "역명": "낫개", + "시간": "00:30:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 14, + "열번": 1001, + "역명": "낫개", + "시간": "06:23:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2018, + "역명": "낫개", + "시간": "06:42:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1055, + "역명": "낫개", + "시간": "09:19:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1009, + "역명": "낫개", + "시간": "07:04:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2032, + "역명": "낫개", + "시간": "07:23:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1075, + "역명": "낫개", + "시간": "10:00:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2100, + "역명": "낫개", + "시간": "10:22:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1131, + "역명": "낫개", + "시간": "12:59:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2154, + "역명": "낫개", + "시간": "13:18:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1185, + "역명": "낫개", + "시간": "15:55:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2208, + "역명": "낫개", + "시간": "16:16:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1249, + "역명": "낫개", + "시간": "18:51:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2274, + "역명": "낫개", + "시간": "19:11:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 16, + "열번": 7913, + "역명": "낫개", + "시간": "06:49:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2026, + "역명": "낫개", + "시간": "07:08:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1067, + "역명": "낫개", + "시간": "09:43:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2036, + "역명": "낫개", + "시간": "07:32:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 18, + "열번": 7915, + "역명": "낫개", + "시간": "07:00:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2030, + "역명": "낫개", + "시간": "07:18:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1073, + "역명": "낫개", + "시간": "09:55:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2098, + "역명": "낫개", + "시간": "10:16:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1129, + "역명": "낫개", + "시간": "12:53:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2152, + "역명": "낫개", + "시간": "13:11:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1183, + "역명": "낫개", + "시간": "15:48:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2206, + "역명": "낫개", + "시간": "16:11:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1247, + "역명": "낫개", + "시간": "18:47:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2272, + "역명": "낫개", + "시간": "19:06:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1317, + "역명": "낫개", + "시간": "21:46:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2326, + "역명": "낫개", + "시간": "22:03:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 19, + "열번": 1011, + "역명": "낫개", + "시간": "07:15:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2038, + "역명": "낫개", + "시간": "07:36:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1079, + "역명": "낫개", + "시간": "10:11:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2102, + "역명": "낫개", + "시간": "10:29:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1133, + "역명": "낫개", + "시간": "13:06:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2156, + "역명": "낫개", + "시간": "13:24:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1187, + "역명": "낫개", + "시간": "16:01:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2210, + "역명": "낫개", + "시간": "16:21:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1253, + "역명": "낫개", + "시간": "18:59:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2278, + "역명": "낫개", + "시간": "19:21:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 20, + "열번": 7917, + "역명": "낫개", + "시간": "07:10:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2034, + "역명": "낫개", + "시간": "07:27:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 20, + "열번": 1077, + "역명": "낫개", + "시간": "10:05:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 21, + "열번": 1013, + "역명": "낫개", + "시간": "07:26:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2042, + "역명": "낫개", + "시간": "07:45:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1083, + "역명": "낫개", + "시간": "10:23:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2106, + "역명": "낫개", + "시간": "10:42:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1137, + "역명": "낫개", + "시간": "13:19:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2160, + "역명": "낫개", + "시간": "13:37:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1191, + "역명": "낫개", + "시간": "16:14:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2214, + "역명": "낫개", + "시간": "16:31:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1257, + "역명": "낫개", + "시간": "19:07:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2280, + "역명": "낫개", + "시간": "19:26:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1321, + "역명": "낫개", + "시간": "22:02:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2330, + "역명": "낫개", + "시간": "22:25:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 22, + "열번": 7919, + "역명": "낫개", + "시간": "07:21:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2040, + "역명": "낫개", + "시간": "07:41:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1081, + "역명": "낫개", + "시간": "10:17:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2104, + "역명": "낫개", + "시간": "10:35:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1135, + "역명": "낫개", + "시간": "13:12:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2158, + "역명": "낫개", + "시간": "13:31:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1189, + "역명": "낫개", + "시간": "16:08:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2212, + "역명": "낫개", + "시간": "16:26:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1255, + "역명": "낫개", + "시간": "19:03:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 23, + "열번": 7921, + "역명": "낫개", + "시간": "07:32:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2044, + "역명": "낫개", + "시간": "07:50:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 24, + "열번": 7923, + "역명": "낫개", + "시간": "07:42:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "낫개", + "시간": "07:59:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1087, + "역명": "낫개", + "시간": "10:36:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2110, + "역명": "낫개", + "시간": "10:55:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1141, + "역명": "낫개", + "시간": "13:32:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2164, + "역명": "낫개", + "시간": "13:50:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1195, + "역명": "낫개", + "시간": "16:27:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2218, + "역명": "낫개", + "시간": "16:46:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1265, + "역명": "낫개", + "시간": "19:23:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 24, + "열번": 2286, + "역명": "낫개", + "시간": "19:44:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "낫개", + "시간": "07:54:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2054, + "역명": "낫개", + "시간": "08:12:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1091, + "역명": "낫개", + "시간": "10:49:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2114, + "역명": "낫개", + "시간": "11:08:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1145, + "역명": "낫개", + "시간": "13:45:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2168, + "역명": "낫개", + "시간": "14:03:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1199, + "역명": "낫개", + "시간": "16:40:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2222, + "역명": "낫개", + "시간": "16:59:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1271, + "역명": "낫개", + "시간": "19:35:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2290, + "역명": "낫개", + "시간": "19:56:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1329, + "역명": "낫개", + "시간": "22:34:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2336, + "역명": "낫개", + "시간": "22:59:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 26, + "열번": 7925, + "역명": "낫개", + "시간": "07:51:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2052, + "역명": "낫개", + "시간": "08:08:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1089, + "역명": "낫개", + "시간": "10:43:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2112, + "역명": "낫개", + "시간": "11:01:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1143, + "역명": "낫개", + "시간": "13:38:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2166, + "역명": "낫개", + "시간": "13:57:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1197, + "역명": "낫개", + "시간": "16:34:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2220, + "역명": "낫개", + "시간": "16:55:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1269, + "역명": "낫개", + "시간": "19:31:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2288, + "역명": "낫개", + "시간": "19:50:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1327, + "역명": "낫개", + "시간": "22:26:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 26, + "열번": 2334, + "역명": "낫개", + "시간": "22:49:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1023, + "역명": "낫개", + "시간": "08:10:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 27, + "열번": 2060, + "역명": "낫개", + "시간": "08:27:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 28, + "열번": 7927, + "역명": "낫개", + "시간": "08:00:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2056, + "역명": "낫개", + "시간": "08:17:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1093, + "역명": "낫개", + "시간": "10:56:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2116, + "역명": "낫개", + "시간": "11:14:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1147, + "역명": "낫개", + "시간": "13:51:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2170, + "역명": "낫개", + "시간": "14:10:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1201, + "역명": "낫개", + "시간": "16:47:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2224, + "역명": "낫개", + "시간": "17:07:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1275, + "역명": "낫개", + "시간": "19:43:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2292, + "역명": "낫개", + "시간": "20:02:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1331, + "역명": "낫개", + "시간": "22:43:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1027, + "역명": "낫개", + "시간": "08:20:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2064, + "역명": "낫개", + "시간": "08:37:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1099, + "역명": "낫개", + "시간": "11:15:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2122, + "역명": "낫개", + "시간": "11:34:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1153, + "역명": "낫개", + "시간": "14:11:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2176, + "역명": "낫개", + "시간": "14:29:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1207, + "역명": "낫개", + "시간": "17:05:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2230, + "역명": "낫개", + "시간": "17:23:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1283, + "역명": "낫개", + "시간": "19:59:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 29, + "열번": 2298, + "역명": "낫개", + "시간": "20:20:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1037, + "역명": "낫개", + "시간": "08:43:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1031, + "역명": "낫개", + "시간": "08:30:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2068, + "역명": "낫개", + "시간": "08:47:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1101, + "역명": "낫개", + "시간": "11:22:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2124, + "역명": "낫개", + "시간": "11:40:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1155, + "역명": "낫개", + "시간": "14:17:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2178, + "역명": "낫개", + "시간": "14:36:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1209, + "역명": "낫개", + "시간": "17:11:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2232, + "역명": "낫개", + "시간": "17:31:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1287, + "역명": "낫개", + "시간": "20:07:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2300, + "역명": "낫개", + "시간": "20:26:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1335, + "역명": "낫개", + "시간": "23:03:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 32, + "열번": 1049, + "역명": "낫개", + "시간": "09:07:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1035, + "역명": "낫개", + "시간": "08:39:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2072, + "역명": "낫개", + "시간": "08:58:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1105, + "역명": "낫개", + "시간": "11:35:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2128, + "역명": "낫개", + "시간": "11:53:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1159, + "역명": "낫개", + "시간": "14:30:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2182, + "역명": "낫개", + "시간": "14:49:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1215, + "역명": "낫개", + "시간": "17:29:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2238, + "역명": "낫개", + "시간": "17:47:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1295, + "역명": "낫개", + "시간": "20:25:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2306, + "역명": "낫개", + "시간": "20:44:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 33, + "열번": 1339, + "역명": "낫개", + "시간": "23:23:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 34, + "열번": 1061, + "역명": "낫개", + "시간": "09:31:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1041, + "역명": "낫개", + "시간": "08:51:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2076, + "역명": "낫개", + "시간": "09:10:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1109, + "역명": "낫개", + "시간": "11:48:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2132, + "역명": "낫개", + "시간": "12:06:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1163, + "역명": "낫개", + "시간": "14:43:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2186, + "역명": "낫개", + "시간": "15:02:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1219, + "역명": "낫개", + "시간": "17:39:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 35, + "열번": 2242, + "역명": "낫개", + "시간": "17:55:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1245, + "역명": "낫개", + "시간": "18:43:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 36, + "열번": 2270, + "역명": "낫개", + "시간": "19:01:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1315, + "역명": "낫개", + "시간": "21:38:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1043, + "역명": "낫개", + "시간": "08:55:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2078, + "역명": "낫개", + "시간": "09:16:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1111, + "역명": "낫개", + "시간": "11:54:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2134, + "역명": "낫개", + "시간": "12:13:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1165, + "역명": "낫개", + "시간": "14:50:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2188, + "역명": "낫개", + "시간": "15:08:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1221, + "역명": "낫개", + "시간": "17:44:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 37, + "열번": 2246, + "역명": "낫개", + "시간": "18:03:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 38, + "열번": 1259, + "역명": "낫개", + "시간": "19:11:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 39, + "열번": 1047, + "역명": "낫개", + "시간": "09:03:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2080, + "역명": "낫개", + "시간": "09:22:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1113, + "역명": "낫개", + "시간": "12:01:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2136, + "역명": "낫개", + "시간": "12:19:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1167, + "역명": "낫개", + "시간": "14:56:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2190, + "역명": "낫개", + "시간": "15:15:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1225, + "역명": "낫개", + "시간": "17:54:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 39, + "열번": 2250, + "역명": "낫개", + "시간": "18:11:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 40, + "열번": 1267, + "역명": "낫개", + "시간": "19:27:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 41, + "열번": 1053, + "역명": "낫개", + "시간": "09:15:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2084, + "역명": "낫개", + "시간": "09:34:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1117, + "역명": "낫개", + "시간": "12:14:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2140, + "역명": "낫개", + "시간": "12:32:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1171, + "역명": "낫개", + "시간": "15:09:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2194, + "역명": "낫개", + "시간": "15:28:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1229, + "역명": "낫개", + "시간": "18:04:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2254, + "역명": "낫개", + "시간": "18:21:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1305, + "역명": "낫개", + "시간": "20:58:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2316, + "역명": "낫개", + "시간": "21:15:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1345, + "역명": "낫개", + "시간": "23:55:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 42, + "열번": 1273, + "역명": "낫개", + "시간": "19:39:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 43, + "열번": 1057, + "역명": "낫개", + "시간": "09:23:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2086, + "역명": "낫개", + "시간": "09:40:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1119, + "역명": "낫개", + "시간": "12:20:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2142, + "역명": "낫개", + "시간": "12:39:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1173, + "역명": "낫개", + "시간": "15:16:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2196, + "역명": "낫개", + "시간": "15:34:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1233, + "역명": "낫개", + "시간": "18:14:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2258, + "역명": "낫개", + "시간": "18:31:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1307, + "역명": "낫개", + "시간": "21:06:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 43, + "열번": 2318, + "역명": "낫개", + "시간": "21:23:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 44, + "열번": 1279, + "역명": "낫개", + "시간": "19:51:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 45, + "열번": 1069, + "역명": "낫개", + "시간": "09:47:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2094, + "역명": "낫개", + "시간": "10:04:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1125, + "역명": "낫개", + "시간": "12:40:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2148, + "역명": "낫개", + "시간": "12:58:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1179, + "역명": "낫개", + "시간": "15:35:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2202, + "역명": "낫개", + "시간": "15:53:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1239, + "역명": "낫개", + "시간": "18:29:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2264, + "역명": "낫개", + "시간": "18:46:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1311, + "역명": "낫개", + "시간": "21:22:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2322, + "역명": "낫개", + "시간": "21:43:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 45, + "열번": 1349, + "역명": "낫개", + "시간": "00:19:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 46, + "열번": 1285, + "역명": "낫개", + "시간": "20:03:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 47, + "열번": 1211, + "역명": "낫개", + "시간": "17:17:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 47, + "열번": 2234, + "역명": "낫개", + "시간": "17:35:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 47, + "열번": 1289, + "역명": "낫개", + "시간": "20:11:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 47, + "열번": 2302, + "역명": "낫개", + "시간": "20:32:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 48, + "열번": 1291, + "역명": "낫개", + "시간": "20:15:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 49, + "열번": 1223, + "역명": "낫개", + "시간": "17:49:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 49, + "열번": 2248, + "역명": "낫개", + "시간": "18:07:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 49, + "열번": 1301, + "역명": "낫개", + "시간": "20:42:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 49, + "열번": 2312, + "역명": "낫개", + "시간": "21:02:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 50, + "열번": 2244, + "역명": "낫개", + "시간": "17:59:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 50, + "열번": 1299, + "역명": "낫개", + "시간": "20:35:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 50, + "열번": 2310, + "역명": "낫개", + "시간": "20:56:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 50, + "열번": 1341, + "역명": "낫개", + "시간": "23:33:10", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 51, + "열번": 1231, + "역명": "낫개", + "시간": "18:09:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 51, + "열번": 2256, + "역명": "낫개", + "시간": "18:26:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 52, + "열번": 5905, + "역명": "낫개", + "시간": "12:04:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 52, + "열번": 6908, + "역명": "낫개", + "시간": "12:22:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 53, + "열번": 1243, + "역명": "낫개", + "시간": "18:39:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 53, + "열번": 2268, + "역명": "낫개", + "시간": "18:56:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 54, + "열번": 5907, + "역명": "낫개", + "시간": "15:45:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 54, + "열번": 6912, + "역명": "낫개", + "시간": "16:06:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 55, + "열번": 1251, + "역명": "낫개", + "시간": "18:55:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 55, + "열번": 2276, + "역명": "낫개", + "시간": "19:16:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 55, + "열번": 1319, + "역명": "낫개", + "시간": "21:54:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 55, + "열번": 2328, + "역명": "낫개", + "시간": "22:13:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 57, + "열번": 1263, + "역명": "낫개", + "시간": "19:19:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 57, + "열번": 2284, + "역명": "낫개", + "시간": "19:38:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 57, + "열번": 1325, + "역명": "낫개", + "시간": "22:18:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 57, + "열번": 2332, + "역명": "낫개", + "시간": "22:37:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 59, + "열번": 5901, + "역명": "낫개", + "시간": "11:12:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 59, + "열번": 6902, + "역명": "낫개", + "시간": "11:30:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 61, + "열번": 5903, + "역명": "낫개", + "시간": "14:40:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 61, + "열번": 5904, + "역명": "낫개", + "시간": "14:58:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "다대포항", + "시간": "05:06:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "다대포항", + "시간": "07:47:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2050, + "역명": "다대포항", + "시간": "08:01:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "다대포항", + "시간": "07:38:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "다대포항", + "시간": "07:52:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1085, + "역명": "다대포항", + "시간": "10:32:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2108, + "역명": "다대포항", + "시간": "10:46:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1139, + "역명": "다대포항", + "시간": "13:27:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2162, + "역명": "다대포항", + "시간": "13:42:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1193, + "역명": "다대포항", + "시간": "16:23:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2216, + "역명": "다대포항", + "시간": "16:39:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1261, + "역명": "다대포항", + "시간": "19:17:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2282, + "역명": "다대포항", + "시간": "19:30:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1323, + "역명": "다대포항", + "시간": "22:12:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "다대포항", + "시간": "05:20:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "다대포항", + "시간": "08:05:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2058, + "역명": "다대포항", + "시간": "08:20:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1095, + "역명": "다대포항", + "시간": "11:04:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2118, + "역명": "다대포항", + "시간": "11:19:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1149, + "역명": "다대포항", + "시간": "14:00:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2172, + "역명": "다대포항", + "시간": "14:14:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1203, + "역명": "다대포항", + "시간": "16:55:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2226, + "역명": "다대포항", + "시간": "17:09:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1277, + "역명": "다대포항", + "시간": "19:49:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2294, + "역명": "다대포항", + "시간": "20:06:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 4, + "열번": 7901, + "역명": "다대포항", + "시간": "05:17:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "다대포항", + "시간": "05:32:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1025, + "역명": "다대포항", + "시간": "08:17:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2062, + "역명": "다대포항", + "시간": "08:30:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1097, + "역명": "다대포항", + "시간": "11:11:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2120, + "역명": "다대포항", + "시간": "11:25:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1151, + "역명": "다대포항", + "시간": "14:06:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2174, + "역명": "다대포항", + "시간": "14:21:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1205, + "역명": "다대포항", + "시간": "17:01:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2228, + "역명": "다대포항", + "시간": "17:17:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1281, + "역명": "다대포항", + "시간": "19:57:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2296, + "역명": "다대포항", + "시간": "20:12:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1333, + "역명": "다대포항", + "시간": "22:55:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2338, + "역명": "다대포항", + "시간": "23:13:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 5, + "열번": 7903, + "역명": "다대포항", + "시간": "05:29:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2008, + "역명": "다대포항", + "시간": "05:44:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1029, + "역명": "다대포항", + "시간": "08:27:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2066, + "역명": "다대포항", + "시간": "08:40:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 6, + "열번": 7905, + "역명": "다대포항", + "시간": "05:41:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2010, + "역명": "다대포항", + "시간": "05:56:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1033, + "역명": "다대포항", + "시간": "08:37:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2070, + "역명": "다대포항", + "시간": "08:50:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1103, + "역명": "다대포항", + "시간": "11:30:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2126, + "역명": "다대포항", + "시간": "11:45:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1157, + "역명": "다대포항", + "시간": "14:26:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2180, + "역명": "다대포항", + "시간": "14:40:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1213, + "역명": "다대포항", + "시간": "17:25:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2236, + "역명": "다대포항", + "시간": "17:41:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1293, + "역명": "다대포항", + "시간": "20:22:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2304, + "역명": "다대포항", + "시간": "20:36:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1337, + "역명": "다대포항", + "시간": "23:15:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1003, + "역명": "다대포항", + "시간": "06:33:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2020, + "역명": "다대포항", + "시간": "06:49:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1059, + "역명": "다대포항", + "시간": "09:29:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2088, + "역명": "다대포항", + "시간": "09:44:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1121, + "역명": "다대포항", + "시간": "12:29:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2144, + "역명": "다대포항", + "시간": "12:43:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1175, + "역명": "다대포항", + "시간": "15:24:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2198, + "역명": "다대포항", + "시간": "15:39:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1235, + "역명": "다대포항", + "시간": "18:21:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2260, + "역명": "다대포항", + "시간": "18:34:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1309, + "역명": "다대포항", + "시간": "21:16:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2320, + "역명": "다대포항", + "시간": "21:31:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1347, + "역명": "다대포항", + "시간": "00:09:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 8, + "열번": 7907, + "역명": "다대포항", + "시간": "05:53:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2012, + "역명": "다대포항", + "시간": "06:08:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1039, + "역명": "다대포항", + "시간": "08:49:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2074, + "역명": "다대포항", + "시간": "09:02:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1107, + "역명": "다대포항", + "시간": "11:43:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2130, + "역명": "다대포항", + "시간": "11:58:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1161, + "역명": "다대포항", + "시간": "14:39:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2184, + "역명": "다대포항", + "시간": "14:53:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1217, + "역명": "다대포항", + "시간": "17:36:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2240, + "역명": "다대포항", + "시간": "17:49:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1297, + "역명": "다대포항", + "시간": "20:32:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 8, + "열번": 2308, + "역명": "다대포항", + "시간": "20:48:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 9, + "열번": 2022, + "역명": "다대포항", + "시간": "06:55:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1063, + "역명": "다대포항", + "시간": "09:37:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 9, + "열번": 2090, + "역명": "다대포항", + "시간": "09:50:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 10, + "열번": 7909, + "역명": "다대포항", + "시간": "06:05:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2014, + "역명": "다대포항", + "시간": "06:20:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1045, + "역명": "다대포항", + "시간": "09:01:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 11, + "열번": 1005, + "역명": "다대포항", + "시간": "06:44:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2024, + "역명": "다대포항", + "시간": "07:01:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1065, + "역명": "다대포항", + "시간": "09:41:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2092, + "역명": "다대포항", + "시간": "09:56:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1123, + "역명": "다대포항", + "시간": "12:35:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2146, + "역명": "다대포항", + "시간": "12:50:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1177, + "역명": "다대포항", + "시간": "15:31:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2200, + "역명": "다대포항", + "시간": "15:45:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1237, + "역명": "다대포항", + "시간": "18:26:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 11, + "열번": 2262, + "역명": "다대포항", + "시간": "18:39:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 12, + "열번": 7911, + "역명": "다대포항", + "시간": "06:16:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2016, + "역명": "다대포항", + "시간": "06:31:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1051, + "역명": "다대포항", + "시간": "09:13:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2082, + "역명": "다대포항", + "시간": "09:26:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1115, + "역명": "다대포항", + "시간": "12:09:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2138, + "역명": "다대포항", + "시간": "12:24:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1169, + "역명": "다대포항", + "시간": "15:05:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "다대포항", + "시간": "15:19:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1227, + "역명": "다대포항", + "시간": "18:01:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2252, + "역명": "다대포항", + "시간": "18:14:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1303, + "역명": "다대포항", + "시간": "20:52:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2314, + "역명": "다대포항", + "시간": "21:06:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1343, + "역명": "다대포항", + "시간": "23:46:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1007, + "역명": "다대포항", + "시간": "06:55:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2028, + "역명": "다대포항", + "시간": "07:11:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1071, + "역명": "다대포항", + "시간": "09:53:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2096, + "역명": "다대포항", + "시간": "10:08:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1127, + "역명": "다대포항", + "시간": "12:48:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2150, + "역명": "다대포항", + "시간": "13:03:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1181, + "역명": "다대포항", + "시간": "15:44:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2204, + "역명": "다대포항", + "시간": "15:57:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1241, + "역명": "다대포항", + "시간": "18:36:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2266, + "역명": "다대포항", + "시간": "18:49:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1313, + "역명": "다대포항", + "시간": "21:32:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2324, + "역명": "다대포항", + "시간": "21:51:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 13, + "열번": 1351, + "역명": "다대포항", + "시간": "00:32:55", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 14, + "열번": 1001, + "역명": "다대포항", + "시간": "06:25:55", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2018, + "역명": "다대포항", + "시간": "06:40:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1055, + "역명": "다대포항", + "시간": "09:21:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1009, + "역명": "다대포항", + "시간": "07:06:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2032, + "역명": "다대포항", + "시간": "07:21:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1075, + "역명": "다대포항", + "시간": "10:02:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2100, + "역명": "다대포항", + "시간": "10:20:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1131, + "역명": "다대포항", + "시간": "13:01:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2154, + "역명": "다대포항", + "시간": "13:16:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1185, + "역명": "다대포항", + "시간": "15:57:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2208, + "역명": "다대포항", + "시간": "16:14:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1249, + "역명": "다대포항", + "시간": "18:53:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2274, + "역명": "다대포항", + "시간": "19:09:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 16, + "열번": 7913, + "역명": "다대포항", + "시간": "06:52:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2026, + "역명": "다대포항", + "시간": "07:06:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1067, + "역명": "다대포항", + "시간": "09:45:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2036, + "역명": "다대포항", + "시간": "07:30:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 18, + "열번": 7915, + "역명": "다대포항", + "시간": "07:03:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2030, + "역명": "다대포항", + "시간": "07:16:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1073, + "역명": "다대포항", + "시간": "09:57:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2098, + "역명": "다대포항", + "시간": "10:14:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1129, + "역명": "다대포항", + "시간": "12:55:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2152, + "역명": "다대포항", + "시간": "13:09:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1183, + "역명": "다대포항", + "시간": "15:50:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2206, + "역명": "다대포항", + "시간": "16:09:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1247, + "역명": "다대포항", + "시간": "18:49:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2272, + "역명": "다대포항", + "시간": "19:04:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1317, + "역명": "다대포항", + "시간": "21:48:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2326, + "역명": "다대포항", + "시간": "22:01:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 19, + "열번": 1011, + "역명": "다대포항", + "시간": "07:17:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2038, + "역명": "다대포항", + "시간": "07:34:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1079, + "역명": "다대포항", + "시간": "10:13:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2102, + "역명": "다대포항", + "시간": "10:27:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1133, + "역명": "다대포항", + "시간": "13:08:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2156, + "역명": "다대포항", + "시간": "13:22:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1187, + "역명": "다대포항", + "시간": "16:03:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2210, + "역명": "다대포항", + "시간": "16:19:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1253, + "역명": "다대포항", + "시간": "19:01:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2278, + "역명": "다대포항", + "시간": "19:19:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 20, + "열번": 7917, + "역명": "다대포항", + "시간": "07:12:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2034, + "역명": "다대포항", + "시간": "07:25:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 20, + "열번": 1077, + "역명": "다대포항", + "시간": "10:07:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 21, + "열번": 1013, + "역명": "다대포항", + "시간": "07:28:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2042, + "역명": "다대포항", + "시간": "07:43:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1083, + "역명": "다대포항", + "시간": "10:25:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2106, + "역명": "다대포항", + "시간": "10:40:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1137, + "역명": "다대포항", + "시간": "13:21:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2160, + "역명": "다대포항", + "시간": "13:35:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1191, + "역명": "다대포항", + "시간": "16:16:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2214, + "역명": "다대포항", + "시간": "16:29:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1257, + "역명": "다대포항", + "시간": "19:09:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2280, + "역명": "다대포항", + "시간": "19:24:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1321, + "역명": "다대포항", + "시간": "22:04:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2330, + "역명": "다대포항", + "시간": "22:23:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 22, + "열번": 7919, + "역명": "다대포항", + "시간": "07:24:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2040, + "역명": "다대포항", + "시간": "07:39:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1081, + "역명": "다대포항", + "시간": "10:19:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2104, + "역명": "다대포항", + "시간": "10:33:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1135, + "역명": "다대포항", + "시간": "13:14:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2158, + "역명": "다대포항", + "시간": "13:29:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1189, + "역명": "다대포항", + "시간": "16:10:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2212, + "역명": "다대포항", + "시간": "16:24:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1255, + "역명": "다대포항", + "시간": "19:05:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 23, + "열번": 7921, + "역명": "다대포항", + "시간": "07:34:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2044, + "역명": "다대포항", + "시간": "07:48:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 24, + "열번": 7923, + "역명": "다대포항", + "시간": "07:44:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "다대포항", + "시간": "07:57:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1087, + "역명": "다대포항", + "시간": "10:38:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2110, + "역명": "다대포항", + "시간": "10:53:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1141, + "역명": "다대포항", + "시간": "13:34:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2164, + "역명": "다대포항", + "시간": "13:48:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1195, + "역명": "다대포항", + "시간": "16:29:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2218, + "역명": "다대포항", + "시간": "16:44:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1265, + "역명": "다대포항", + "시간": "19:25:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 24, + "열번": 2286, + "역명": "다대포항", + "시간": "19:42:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "다대포항", + "시간": "07:56:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2054, + "역명": "다대포항", + "시간": "08:10:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1091, + "역명": "다대포항", + "시간": "10:51:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2114, + "역명": "다대포항", + "시간": "11:06:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1145, + "역명": "다대포항", + "시간": "13:47:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2168, + "역명": "다대포항", + "시간": "14:01:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1199, + "역명": "다대포항", + "시간": "16:42:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2222, + "역명": "다대포항", + "시간": "16:57:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1271, + "역명": "다대포항", + "시간": "19:37:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2290, + "역명": "다대포항", + "시간": "19:54:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1329, + "역명": "다대포항", + "시간": "22:36:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2336, + "역명": "다대포항", + "시간": "22:57:50", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 26, + "열번": 7925, + "역명": "다대포항", + "시간": "07:53:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2052, + "역명": "다대포항", + "시간": "08:06:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1089, + "역명": "다대포항", + "시간": "10:45:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2112, + "역명": "다대포항", + "시간": "10:59:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1143, + "역명": "다대포항", + "시간": "13:40:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2166, + "역명": "다대포항", + "시간": "13:55:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1197, + "역명": "다대포항", + "시간": "16:36:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2220, + "역명": "다대포항", + "시간": "16:53:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1269, + "역명": "다대포항", + "시간": "19:33:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2288, + "역명": "다대포항", + "시간": "19:48:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1327, + "역명": "다대포항", + "시간": "22:28:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 26, + "열번": 2334, + "역명": "다대포항", + "시간": "22:47:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1023, + "역명": "다대포항", + "시간": "08:12:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 27, + "열번": 2060, + "역명": "다대포항", + "시간": "08:25:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 28, + "열번": 7927, + "역명": "다대포항", + "시간": "08:02:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2056, + "역명": "다대포항", + "시간": "08:15:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1093, + "역명": "다대포항", + "시간": "10:58:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2116, + "역명": "다대포항", + "시간": "11:12:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1147, + "역명": "다대포항", + "시간": "13:53:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2170, + "역명": "다대포항", + "시간": "14:08:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1201, + "역명": "다대포항", + "시간": "16:49:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2224, + "역명": "다대포항", + "시간": "17:05:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1275, + "역명": "다대포항", + "시간": "19:45:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2292, + "역명": "다대포항", + "시간": "20:00:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1331, + "역명": "다대포항", + "시간": "22:45:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1027, + "역명": "다대포항", + "시간": "08:22:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2064, + "역명": "다대포항", + "시간": "08:35:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1099, + "역명": "다대포항", + "시간": "11:17:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2122, + "역명": "다대포항", + "시간": "11:32:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1153, + "역명": "다대포항", + "시간": "14:13:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2176, + "역명": "다대포항", + "시간": "14:27:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1207, + "역명": "다대포항", + "시간": "17:07:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2230, + "역명": "다대포항", + "시간": "17:21:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1283, + "역명": "다대포항", + "시간": "20:01:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 29, + "열번": 2298, + "역명": "다대포항", + "시간": "20:18:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1037, + "역명": "다대포항", + "시간": "08:45:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1031, + "역명": "다대포항", + "시간": "08:32:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2068, + "역명": "다대포항", + "시간": "08:45:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1101, + "역명": "다대포항", + "시간": "11:24:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2124, + "역명": "다대포항", + "시간": "11:38:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1155, + "역명": "다대포항", + "시간": "14:19:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2178, + "역명": "다대포항", + "시간": "14:34:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1209, + "역명": "다대포항", + "시간": "17:13:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2232, + "역명": "다대포항", + "시간": "17:29:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1287, + "역명": "다대포항", + "시간": "20:09:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2300, + "역명": "다대포항", + "시간": "20:24:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1335, + "역명": "다대포항", + "시간": "23:05:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 32, + "열번": 1049, + "역명": "다대포항", + "시간": "09:09:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1035, + "역명": "다대포항", + "시간": "08:41:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2072, + "역명": "다대포항", + "시간": "08:56:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1105, + "역명": "다대포항", + "시간": "11:37:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2128, + "역명": "다대포항", + "시간": "11:51:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1159, + "역명": "다대포항", + "시간": "14:32:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2182, + "역명": "다대포항", + "시간": "14:47:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1215, + "역명": "다대포항", + "시간": "17:31:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2238, + "역명": "다대포항", + "시간": "17:45:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1295, + "역명": "다대포항", + "시간": "20:27:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2306, + "역명": "다대포항", + "시간": "20:42:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 33, + "열번": 1339, + "역명": "다대포항", + "시간": "23:25:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 34, + "열번": 1061, + "역명": "다대포항", + "시간": "09:33:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1041, + "역명": "다대포항", + "시간": "08:53:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2076, + "역명": "다대포항", + "시간": "09:08:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1109, + "역명": "다대포항", + "시간": "11:50:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2132, + "역명": "다대포항", + "시간": "12:04:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1163, + "역명": "다대포항", + "시간": "14:45:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2186, + "역명": "다대포항", + "시간": "15:00:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1219, + "역명": "다대포항", + "시간": "17:41:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 35, + "열번": 2242, + "역명": "다대포항", + "시간": "17:53:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1245, + "역명": "다대포항", + "시간": "18:45:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 36, + "열번": 2270, + "역명": "다대포항", + "시간": "18:59:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1315, + "역명": "다대포항", + "시간": "21:40:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1043, + "역명": "다대포항", + "시간": "08:57:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2078, + "역명": "다대포항", + "시간": "09:14:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1111, + "역명": "다대포항", + "시간": "11:56:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2134, + "역명": "다대포항", + "시간": "12:11:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1165, + "역명": "다대포항", + "시간": "14:52:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2188, + "역명": "다대포항", + "시간": "15:06:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1221, + "역명": "다대포항", + "시간": "17:46:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 37, + "열번": 2246, + "역명": "다대포항", + "시간": "18:01:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 38, + "열번": 1259, + "역명": "다대포항", + "시간": "19:13:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 39, + "열번": 1047, + "역명": "다대포항", + "시간": "09:05:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2080, + "역명": "다대포항", + "시간": "09:20:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1113, + "역명": "다대포항", + "시간": "12:03:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2136, + "역명": "다대포항", + "시간": "12:17:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1167, + "역명": "다대포항", + "시간": "14:58:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2190, + "역명": "다대포항", + "시간": "15:13:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1225, + "역명": "다대포항", + "시간": "17:56:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 39, + "열번": 2250, + "역명": "다대포항", + "시간": "18:09:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 40, + "열번": 1267, + "역명": "다대포항", + "시간": "19:29:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 41, + "열번": 1053, + "역명": "다대포항", + "시간": "09:17:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2084, + "역명": "다대포항", + "시간": "09:32:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1117, + "역명": "다대포항", + "시간": "12:16:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2140, + "역명": "다대포항", + "시간": "12:30:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1171, + "역명": "다대포항", + "시간": "15:11:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2194, + "역명": "다대포항", + "시간": "15:26:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1229, + "역명": "다대포항", + "시간": "18:06:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2254, + "역명": "다대포항", + "시간": "18:19:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1305, + "역명": "다대포항", + "시간": "21:00:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2316, + "역명": "다대포항", + "시간": "21:13:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1345, + "역명": "다대포항", + "시간": "23:57:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 42, + "열번": 1273, + "역명": "다대포항", + "시간": "19:41:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 43, + "열번": 1057, + "역명": "다대포항", + "시간": "09:25:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2086, + "역명": "다대포항", + "시간": "09:38:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1119, + "역명": "다대포항", + "시간": "12:22:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2142, + "역명": "다대포항", + "시간": "12:37:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1173, + "역명": "다대포항", + "시간": "15:18:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2196, + "역명": "다대포항", + "시간": "15:32:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1233, + "역명": "다대포항", + "시간": "18:16:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2258, + "역명": "다대포항", + "시간": "18:29:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1307, + "역명": "다대포항", + "시간": "21:08:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 43, + "열번": 2318, + "역명": "다대포항", + "시간": "21:21:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 44, + "열번": 1279, + "역명": "다대포항", + "시간": "19:53:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 45, + "열번": 1069, + "역명": "다대포항", + "시간": "09:49:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2094, + "역명": "다대포항", + "시간": "10:02:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1125, + "역명": "다대포항", + "시간": "12:42:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2148, + "역명": "다대포항", + "시간": "12:56:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1179, + "역명": "다대포항", + "시간": "15:37:50", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2202, + "역명": "다대포항", + "시간": "15:51:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1239, + "역명": "다대포항", + "시간": "18:31:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2264, + "역명": "다대포항", + "시간": "18:44:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1311, + "역명": "다대포항", + "시간": "21:24:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2322, + "역명": "다대포항", + "시간": "21:41:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 45, + "열번": 1349, + "역명": "다대포항", + "시간": "00:21:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 46, + "열번": 1285, + "역명": "다대포항", + "시간": "20:05:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 47, + "열번": 1211, + "역명": "다대포항", + "시간": "17:19:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 47, + "열번": 2234, + "역명": "다대포항", + "시간": "17:33:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 47, + "열번": 1289, + "역명": "다대포항", + "시간": "20:13:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 47, + "열번": 2302, + "역명": "다대포항", + "시간": "20:30:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 48, + "열번": 1291, + "역명": "다대포항", + "시간": "20:17:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 49, + "열번": 1223, + "역명": "다대포항", + "시간": "17:51:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 49, + "열번": 2248, + "역명": "다대포항", + "시간": "18:05:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 49, + "열번": 1301, + "역명": "다대포항", + "시간": "20:44:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 49, + "열번": 2312, + "역명": "다대포항", + "시간": "21:00:15", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 50, + "열번": 2244, + "역명": "다대포항", + "시간": "17:57:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 50, + "열번": 1299, + "역명": "다대포항", + "시간": "20:37:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 50, + "열번": 2310, + "역명": "다대포항", + "시간": "20:54:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 50, + "열번": 1341, + "역명": "다대포항", + "시간": "23:35:20", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 51, + "열번": 1231, + "역명": "다대포항", + "시간": "18:11:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 51, + "열번": 2256, + "역명": "다대포항", + "시간": "18:24:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 52, + "열번": 5905, + "역명": "다대포항", + "시간": "12:06:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 52, + "열번": 6908, + "역명": "다대포항", + "시간": "12:20:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 53, + "열번": 1243, + "역명": "다대포항", + "시간": "18:41:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 53, + "열번": 2268, + "역명": "다대포항", + "시간": "18:54:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 54, + "열번": 5907, + "역명": "다대포항", + "시간": "15:47:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 54, + "열번": 6912, + "역명": "다대포항", + "시간": "16:04:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 55, + "열번": 1251, + "역명": "다대포항", + "시간": "18:57:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 55, + "열번": 2276, + "역명": "다대포항", + "시간": "19:14:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 55, + "열번": 1319, + "역명": "다대포항", + "시간": "21:56:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 55, + "열번": 2328, + "역명": "다대포항", + "시간": "22:11:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 57, + "열번": 1263, + "역명": "다대포항", + "시간": "19:21:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 57, + "열번": 2284, + "역명": "다대포항", + "시간": "19:36:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 57, + "열번": 1325, + "역명": "다대포항", + "시간": "22:20:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 57, + "열번": 2332, + "역명": "다대포항", + "시간": "22:35:15", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 59, + "열번": 5901, + "역명": "다대포항", + "시간": "11:14:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 59, + "열번": 6902, + "역명": "다대포항", + "시간": "11:28:45", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 61, + "열번": 5903, + "역명": "다대포항", + "시간": "14:42:20", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 61, + "열번": 5904, + "역명": "다대포항", + "시간": "14:56:45", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "다대포해수욕장", + "시간": "05:04:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "다대포해수욕장", + "시간": "07:50:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2050, + "역명": "다대포해수욕장", + "시간": "07:59:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "다대포해수욕장", + "시간": "07:41:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "다대포해수욕장", + "시간": "07:50:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1085, + "역명": "다대포해수욕장", + "시간": "10:35:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2108, + "역명": "다대포해수욕장", + "시간": "10:44:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1139, + "역명": "다대포해수욕장", + "시간": "13:30:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2162, + "역명": "다대포해수욕장", + "시간": "13:40:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1193, + "역명": "다대포해수욕장", + "시간": "16:26:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2216, + "역명": "다대포해수욕장", + "시간": "16:37:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1261, + "역명": "다대포해수욕장", + "시간": "19:20:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2282, + "역명": "다대포해수욕장", + "시간": "19:28:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1323, + "역명": "다대포해수욕장", + "시간": "22:15:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 2, + "열번": 4030, + "역명": "다대포해수욕장", + "시간": "22:23:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "다대포해수욕장", + "시간": "05:18:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "다대포해수욕장", + "시간": "08:08:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2058, + "역명": "다대포해수욕장", + "시간": "08:18:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1095, + "역명": "다대포해수욕장", + "시간": "11:07:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2118, + "역명": "다대포해수욕장", + "시간": "11:17:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1149, + "역명": "다대포해수욕장", + "시간": "14:03:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2172, + "역명": "다대포해수욕장", + "시간": "14:12:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1203, + "역명": "다대포해수욕장", + "시간": "16:58:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2226, + "역명": "다대포해수욕장", + "시간": "17:07:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1277, + "역명": "다대포해수욕장", + "시간": "19:52:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2294, + "역명": "다대포해수욕장", + "시간": "20:04:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 4, + "열번": 7901, + "역명": "다대포해수욕장", + "시간": "05:19:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "다대포해수욕장", + "시간": "05:30:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1025, + "역명": "다대포해수욕장", + "시간": "08:20:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2062, + "역명": "다대포해수욕장", + "시간": "08:28:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1097, + "역명": "다대포해수욕장", + "시간": "11:14:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2120, + "역명": "다대포해수욕장", + "시간": "11:23:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1151, + "역명": "다대포해수욕장", + "시간": "14:09:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2174, + "역명": "다대포해수욕장", + "시간": "14:19:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1205, + "역명": "다대포해수욕장", + "시간": "17:04:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2228, + "역명": "다대포해수욕장", + "시간": "17:15:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1281, + "역명": "다대포해수욕장", + "시간": "20:00:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2296, + "역명": "다대포해수욕장", + "시간": "20:10:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1333, + "역명": "다대포해수욕장", + "시간": "22:58:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2338, + "역명": "다대포해수욕장", + "시간": "23:11:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 5, + "열번": 7903, + "역명": "다대포해수욕장", + "시간": "05:31:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2008, + "역명": "다대포해수욕장", + "시간": "05:42:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1029, + "역명": "다대포해수욕장", + "시간": "08:30:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2066, + "역명": "다대포해수욕장", + "시간": "08:38:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 6, + "열번": 7905, + "역명": "다대포해수욕장", + "시간": "05:43:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2010, + "역명": "다대포해수욕장", + "시간": "05:54:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1033, + "역명": "다대포해수욕장", + "시간": "08:40:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2070, + "역명": "다대포해수욕장", + "시간": "08:48:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1103, + "역명": "다대포해수욕장", + "시간": "11:33:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2126, + "역명": "다대포해수욕장", + "시간": "11:43:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1157, + "역명": "다대포해수욕장", + "시간": "14:29:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2180, + "역명": "다대포해수욕장", + "시간": "14:38:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1213, + "역명": "다대포해수욕장", + "시간": "17:28:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2236, + "역명": "다대포해수욕장", + "시간": "17:39:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1293, + "역명": "다대포해수욕장", + "시간": "20:25:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2304, + "역명": "다대포해수욕장", + "시간": "20:34:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1337, + "역명": "다대포해수욕장", + "시간": "23:18:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 6, + "열번": 4802, + "역명": "다대포해수욕장", + "시간": "23:26:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1003, + "역명": "다대포해수욕장", + "시간": "06:36:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2020, + "역명": "다대포해수욕장", + "시간": "06:47:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1059, + "역명": "다대포해수욕장", + "시간": "09:32:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2088, + "역명": "다대포해수욕장", + "시간": "09:42:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1121, + "역명": "다대포해수욕장", + "시간": "12:32:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2144, + "역명": "다대포해수욕장", + "시간": "12:41:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1175, + "역명": "다대포해수욕장", + "시간": "15:27:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2198, + "역명": "다대포해수욕장", + "시간": "15:37:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1235, + "역명": "다대포해수욕장", + "시간": "18:24:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2260, + "역명": "다대포해수욕장", + "시간": "18:32:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1309, + "역명": "다대포해수욕장", + "시간": "21:19:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2320, + "역명": "다대포해수욕장", + "시간": "21:29:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1347, + "역명": "다대포해수욕장", + "시간": "00:12:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 7, + "열번": 4810, + "역명": "다대포해수욕장", + "시간": "00:20:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 8, + "열번": 7907, + "역명": "다대포해수욕장", + "시간": "05:55:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2012, + "역명": "다대포해수욕장", + "시간": "06:06:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1039, + "역명": "다대포해수욕장", + "시간": "08:52:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2074, + "역명": "다대포해수욕장", + "시간": "09:00:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1107, + "역명": "다대포해수욕장", + "시간": "11:46:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2130, + "역명": "다대포해수욕장", + "시간": "11:56:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1161, + "역명": "다대포해수욕장", + "시간": "14:42:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2184, + "역명": "다대포해수욕장", + "시간": "14:51:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1217, + "역명": "다대포해수욕장", + "시간": "17:39:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2240, + "역명": "다대포해수욕장", + "시간": "17:47:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1297, + "역명": "다대포해수욕장", + "시간": "20:35:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 8, + "열번": 2308, + "역명": "다대포해수욕장", + "시간": "20:46:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 9, + "열번": 2022, + "역명": "다대포해수욕장", + "시간": "06:53:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1063, + "역명": "다대포해수욕장", + "시간": "09:40:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 9, + "열번": 2090, + "역명": "다대포해수욕장", + "시간": "09:48:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 10, + "열번": 7909, + "역명": "다대포해수욕장", + "시간": "06:07:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2014, + "역명": "다대포해수욕장", + "시간": "06:18:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1045, + "역명": "다대포해수욕장", + "시간": "09:04:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 10, + "열번": 4004, + "역명": "다대포해수욕장", + "시간": "09:14:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 11, + "열번": 1005, + "역명": "다대포해수욕장", + "시간": "06:47:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2024, + "역명": "다대포해수욕장", + "시간": "06:59:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1065, + "역명": "다대포해수욕장", + "시간": "09:44:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2092, + "역명": "다대포해수욕장", + "시간": "09:54:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1123, + "역명": "다대포해수욕장", + "시간": "12:38:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2146, + "역명": "다대포해수욕장", + "시간": "12:48:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1177, + "역명": "다대포해수욕장", + "시간": "15:34:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2200, + "역명": "다대포해수욕장", + "시간": "15:43:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1237, + "역명": "다대포해수욕장", + "시간": "18:29:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 11, + "열번": 2262, + "역명": "다대포해수욕장", + "시간": "18:37:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 12, + "열번": 7911, + "역명": "다대포해수욕장", + "시간": "06:18:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2016, + "역명": "다대포해수욕장", + "시간": "06:29:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1051, + "역명": "다대포해수욕장", + "시간": "09:16:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2082, + "역명": "다대포해수욕장", + "시간": "09:24:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1115, + "역명": "다대포해수욕장", + "시간": "12:12:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2138, + "역명": "다대포해수욕장", + "시간": "12:22:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1169, + "역명": "다대포해수욕장", + "시간": "15:08:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "다대포해수욕장", + "시간": "15:17:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1227, + "역명": "다대포해수욕장", + "시간": "18:04:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2252, + "역명": "다대포해수욕장", + "시간": "18:12:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1303, + "역명": "다대포해수욕장", + "시간": "20:55:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2314, + "역명": "다대포해수욕장", + "시간": "21:04:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1343, + "역명": "다대포해수욕장", + "시간": "23:49:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 12, + "열번": 4806, + "역명": "다대포해수욕장", + "시간": "23:57:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1007, + "역명": "다대포해수욕장", + "시간": "06:58:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2028, + "역명": "다대포해수욕장", + "시간": "07:09:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1071, + "역명": "다대포해수욕장", + "시간": "09:56:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2096, + "역명": "다대포해수욕장", + "시간": "10:06:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1127, + "역명": "다대포해수욕장", + "시간": "12:51:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2150, + "역명": "다대포해수욕장", + "시간": "13:01:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1181, + "역명": "다대포해수욕장", + "시간": "15:47:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2204, + "역명": "다대포해수욕장", + "시간": "15:55:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1241, + "역명": "다대포해수욕장", + "시간": "18:39:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2266, + "역명": "다대포해수욕장", + "시간": "18:47:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1313, + "역명": "다대포해수욕장", + "시간": "21:35:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2324, + "역명": "다대포해수욕장", + "시간": "21:49:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 13, + "열번": 1351, + "역명": "다대포해수욕장", + "시간": "00:35:40", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 14, + "열번": 1001, + "역명": "다대포해수욕장", + "시간": "06:28:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2018, + "역명": "다대포해수욕장", + "시간": "06:38:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1055, + "역명": "다대포해수욕장", + "시간": "09:24:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 14, + "열번": 4008, + "역명": "다대포해수욕장", + "시간": "09:32:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1009, + "역명": "다대포해수욕장", + "시간": "07:09:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2032, + "역명": "다대포해수욕장", + "시간": "07:19:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1075, + "역명": "다대포해수욕장", + "시간": "10:05:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2100, + "역명": "다대포해수욕장", + "시간": "10:18:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1131, + "역명": "다대포해수욕장", + "시간": "13:04:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2154, + "역명": "다대포해수욕장", + "시간": "13:14:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1185, + "역명": "다대포해수욕장", + "시간": "16:00:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2208, + "역명": "다대포해수욕장", + "시간": "16:12:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1249, + "역명": "다대포해수욕장", + "시간": "18:56:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2274, + "역명": "다대포해수욕장", + "시간": "19:07:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 16, + "열번": 7913, + "역명": "다대포해수욕장", + "시간": "06:54:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2026, + "역명": "다대포해수욕장", + "시간": "07:04:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1067, + "역명": "다대포해수욕장", + "시간": "09:48:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 16, + "열번": 4012, + "역명": "다대포해수욕장", + "시간": "09:56:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2036, + "역명": "다대포해수욕장", + "시간": "07:28:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 18, + "열번": 7915, + "역명": "다대포해수욕장", + "시간": "07:05:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2030, + "역명": "다대포해수욕장", + "시간": "07:14:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1073, + "역명": "다대포해수욕장", + "시간": "10:00:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2098, + "역명": "다대포해수욕장", + "시간": "10:12:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1129, + "역명": "다대포해수욕장", + "시간": "12:58:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2152, + "역명": "다대포해수욕장", + "시간": "13:07:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1183, + "역명": "다대포해수욕장", + "시간": "15:53:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2206, + "역명": "다대포해수욕장", + "시간": "16:07:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1247, + "역명": "다대포해수욕장", + "시간": "18:52:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2272, + "역명": "다대포해수욕장", + "시간": "19:02:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1317, + "역명": "다대포해수욕장", + "시간": "21:51:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2326, + "역명": "다대포해수욕장", + "시간": "21:59:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 19, + "열번": 1011, + "역명": "다대포해수욕장", + "시간": "07:20:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2038, + "역명": "다대포해수욕장", + "시간": "07:32:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1079, + "역명": "다대포해수욕장", + "시간": "10:16:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2102, + "역명": "다대포해수욕장", + "시간": "10:25:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1133, + "역명": "다대포해수욕장", + "시간": "13:11:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2156, + "역명": "다대포해수욕장", + "시간": "13:20:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1187, + "역명": "다대포해수욕장", + "시간": "16:06:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2210, + "역명": "다대포해수욕장", + "시간": "16:17:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1253, + "역명": "다대포해수욕장", + "시간": "19:04:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2278, + "역명": "다대포해수욕장", + "시간": "19:17:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 20, + "열번": 7917, + "역명": "다대포해수욕장", + "시간": "07:15:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2034, + "역명": "다대포해수욕장", + "시간": "07:23:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 20, + "열번": 1077, + "역명": "다대포해수욕장", + "시간": "10:10:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 21, + "열번": 1013, + "역명": "다대포해수욕장", + "시간": "07:31:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2042, + "역명": "다대포해수욕장", + "시간": "07:41:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1083, + "역명": "다대포해수욕장", + "시간": "10:28:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2106, + "역명": "다대포해수욕장", + "시간": "10:38:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1137, + "역명": "다대포해수욕장", + "시간": "13:24:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2160, + "역명": "다대포해수욕장", + "시간": "13:33:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1191, + "역명": "다대포해수욕장", + "시간": "16:19:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2214, + "역명": "다대포해수욕장", + "시간": "16:27:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1257, + "역명": "다대포해수욕장", + "시간": "19:12:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2280, + "역명": "다대포해수욕장", + "시간": "19:22:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1321, + "역명": "다대포해수욕장", + "시간": "22:07:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2330, + "역명": "다대포해수욕장", + "시간": "22:21:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 22, + "열번": 7919, + "역명": "다대포해수욕장", + "시간": "07:26:40", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2040, + "역명": "다대포해수욕장", + "시간": "07:37:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1081, + "역명": "다대포해수욕장", + "시간": "10:22:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2104, + "역명": "다대포해수욕장", + "시간": "10:31:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1135, + "역명": "다대포해수욕장", + "시간": "13:17:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2158, + "역명": "다대포해수욕장", + "시간": "13:27:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1189, + "역명": "다대포해수욕장", + "시간": "16:13:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2212, + "역명": "다대포해수욕장", + "시간": "16:22:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1255, + "역명": "다대포해수욕장", + "시간": "19:08:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 22, + "열번": 4014, + "역명": "다대포해수욕장", + "시간": "19:19:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 23, + "열번": 7921, + "역명": "다대포해수욕장", + "시간": "07:37:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2044, + "역명": "다대포해수욕장", + "시간": "07:46:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 24, + "열번": 7923, + "역명": "다대포해수욕장", + "시간": "07:47:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "다대포해수욕장", + "시간": "07:55:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1087, + "역명": "다대포해수욕장", + "시간": "10:41:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2110, + "역명": "다대포해수욕장", + "시간": "10:51:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1141, + "역명": "다대포해수욕장", + "시간": "13:37:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2164, + "역명": "다대포해수욕장", + "시간": "13:46:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1195, + "역명": "다대포해수욕장", + "시간": "16:32:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2218, + "역명": "다대포해수욕장", + "시간": "16:42:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1265, + "역명": "다대포해수욕장", + "시간": "19:28:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 24, + "열번": 2286, + "역명": "다대포해수욕장", + "시간": "19:40:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "다대포해수욕장", + "시간": "07:59:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2054, + "역명": "다대포해수욕장", + "시간": "08:08:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1091, + "역명": "다대포해수욕장", + "시간": "10:54:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2114, + "역명": "다대포해수욕장", + "시간": "11:04:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1145, + "역명": "다대포해수욕장", + "시간": "13:50:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2168, + "역명": "다대포해수욕장", + "시간": "13:59:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1199, + "역명": "다대포해수욕장", + "시간": "16:45:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2222, + "역명": "다대포해수욕장", + "시간": "16:55:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1271, + "역명": "다대포해수욕장", + "시간": "19:40:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2290, + "역명": "다대포해수욕장", + "시간": "19:52:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1329, + "역명": "다대포해수욕장", + "시간": "22:39:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2336, + "역명": "다대포해수욕장", + "시간": "22:55:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 26, + "열번": 7925, + "역명": "다대포해수욕장", + "시간": "07:56:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2052, + "역명": "다대포해수욕장", + "시간": "08:04:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1089, + "역명": "다대포해수욕장", + "시간": "10:48:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2112, + "역명": "다대포해수욕장", + "시간": "10:57:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1143, + "역명": "다대포해수욕장", + "시간": "13:43:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2166, + "역명": "다대포해수욕장", + "시간": "13:53:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1197, + "역명": "다대포해수욕장", + "시간": "16:39:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2220, + "역명": "다대포해수욕장", + "시간": "16:51:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1269, + "역명": "다대포해수욕장", + "시간": "19:36:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2288, + "역명": "다대포해수욕장", + "시간": "19:46:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1327, + "역명": "다대포해수욕장", + "시간": "22:31:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 26, + "열번": 2334, + "역명": "다대포해수욕장", + "시간": "22:45:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1023, + "역명": "다대포해수욕장", + "시간": "08:15:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 27, + "열번": 2060, + "역명": "다대포해수욕장", + "시간": "08:23:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 28, + "열번": 7927, + "역명": "다대포해수욕장", + "시간": "08:05:10", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2056, + "역명": "다대포해수욕장", + "시간": "08:13:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1093, + "역명": "다대포해수욕장", + "시간": "11:01:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2116, + "역명": "다대포해수욕장", + "시간": "11:10:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1147, + "역명": "다대포해수욕장", + "시간": "13:56:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2170, + "역명": "다대포해수욕장", + "시간": "14:06:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1201, + "역명": "다대포해수욕장", + "시간": "16:52:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2224, + "역명": "다대포해수욕장", + "시간": "17:03:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1275, + "역명": "다대포해수욕장", + "시간": "19:48:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2292, + "역명": "다대포해수욕장", + "시간": "19:58:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1331, + "역명": "다대포해수욕장", + "시간": "22:48:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 28, + "열번": 4032, + "역명": "다대포해수욕장", + "시간": "22:58:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1027, + "역명": "다대포해수욕장", + "시간": "08:25:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2064, + "역명": "다대포해수욕장", + "시간": "08:33:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1099, + "역명": "다대포해수욕장", + "시간": "11:20:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2122, + "역명": "다대포해수욕장", + "시간": "11:30:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1153, + "역명": "다대포해수욕장", + "시간": "14:16:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2176, + "역명": "다대포해수욕장", + "시간": "14:25:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1207, + "역명": "다대포해수욕장", + "시간": "17:10:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2230, + "역명": "다대포해수욕장", + "시간": "17:19:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1283, + "역명": "다대포해수욕장", + "시간": "20:04:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 29, + "열번": 2298, + "역명": "다대포해수욕장", + "시간": "20:16:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1037, + "역명": "다대포해수욕장", + "시간": "08:48:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 30, + "열번": 4002, + "역명": "다대포해수욕장", + "시간": "08:56:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1031, + "역명": "다대포해수욕장", + "시간": "08:35:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2068, + "역명": "다대포해수욕장", + "시간": "08:43:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1101, + "역명": "다대포해수욕장", + "시간": "11:27:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2124, + "역명": "다대포해수욕장", + "시간": "11:36:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1155, + "역명": "다대포해수욕장", + "시간": "14:22:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2178, + "역명": "다대포해수욕장", + "시간": "14:32:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1209, + "역명": "다대포해수욕장", + "시간": "17:16:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2232, + "역명": "다대포해수욕장", + "시간": "17:27:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1287, + "역명": "다대포해수욕장", + "시간": "20:12:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2300, + "역명": "다대포해수욕장", + "시간": "20:22:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1335, + "역명": "다대포해수욕장", + "시간": "23:08:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 32, + "열번": 1049, + "역명": "다대포해수욕장", + "시간": "09:12:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 32, + "열번": 4006, + "역명": "다대포해수욕장", + "시간": "09:20:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1035, + "역명": "다대포해수욕장", + "시간": "08:44:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2072, + "역명": "다대포해수욕장", + "시간": "08:54:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1105, + "역명": "다대포해수욕장", + "시간": "11:40:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2128, + "역명": "다대포해수욕장", + "시간": "11:49:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1159, + "역명": "다대포해수욕장", + "시간": "14:35:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2182, + "역명": "다대포해수욕장", + "시간": "14:45:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1215, + "역명": "다대포해수욕장", + "시간": "17:34:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2238, + "역명": "다대포해수욕장", + "시간": "17:43:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1295, + "역명": "다대포해수욕장", + "시간": "20:30:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2306, + "역명": "다대포해수욕장", + "시간": "20:40:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 33, + "열번": 1339, + "역명": "다대포해수욕장", + "시간": "23:28:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 34, + "열번": 1061, + "역명": "다대포해수욕장", + "시간": "09:36:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 34, + "열번": 4010, + "역명": "다대포해수욕장", + "시간": "09:44:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1041, + "역명": "다대포해수욕장", + "시간": "08:56:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2076, + "역명": "다대포해수욕장", + "시간": "09:06:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1109, + "역명": "다대포해수욕장", + "시간": "11:53:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2132, + "역명": "다대포해수욕장", + "시간": "12:02:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1163, + "역명": "다대포해수욕장", + "시간": "14:48:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2186, + "역명": "다대포해수욕장", + "시간": "14:58:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1219, + "역명": "다대포해수욕장", + "시간": "17:44:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 35, + "열번": 2242, + "역명": "다대포해수욕장", + "시간": "17:51:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1245, + "역명": "다대포해수욕장", + "시간": "18:48:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 36, + "열번": 2270, + "역명": "다대포해수욕장", + "시간": "18:57:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1315, + "역명": "다대포해수욕장", + "시간": "21:43:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 36, + "열번": 4028, + "역명": "다대포해수욕장", + "시간": "21:51:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1043, + "역명": "다대포해수욕장", + "시간": "09:00:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2078, + "역명": "다대포해수욕장", + "시간": "09:12:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1111, + "역명": "다대포해수욕장", + "시간": "11:59:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2134, + "역명": "다대포해수욕장", + "시간": "12:09:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1165, + "역명": "다대포해수욕장", + "시간": "14:55:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2188, + "역명": "다대포해수욕장", + "시간": "15:04:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1221, + "역명": "다대포해수욕장", + "시간": "17:49:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 37, + "열번": 2246, + "역명": "다대포해수욕장", + "시간": "17:59:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 38, + "열번": 1259, + "역명": "다대포해수욕장", + "시간": "19:16:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 38, + "열번": 4016, + "역명": "다대포해수욕장", + "시간": "19:24:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 39, + "열번": 1047, + "역명": "다대포해수욕장", + "시간": "09:08:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2080, + "역명": "다대포해수욕장", + "시간": "09:18:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1113, + "역명": "다대포해수욕장", + "시간": "12:06:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2136, + "역명": "다대포해수욕장", + "시간": "12:15:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1167, + "역명": "다대포해수욕장", + "시간": "15:01:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2190, + "역명": "다대포해수욕장", + "시간": "15:11:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1225, + "역명": "다대포해수욕장", + "시간": "17:59:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 39, + "열번": 2250, + "역명": "다대포해수욕장", + "시간": "18:07:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 40, + "열번": 1267, + "역명": "다대포해수욕장", + "시간": "19:32:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 40, + "열번": 4018, + "역명": "다대포해수욕장", + "시간": "19:42:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 41, + "열번": 1053, + "역명": "다대포해수욕장", + "시간": "09:20:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2084, + "역명": "다대포해수욕장", + "시간": "09:30:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1117, + "역명": "다대포해수욕장", + "시간": "12:19:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2140, + "역명": "다대포해수욕장", + "시간": "12:28:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1171, + "역명": "다대포해수욕장", + "시간": "15:14:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2194, + "역명": "다대포해수욕장", + "시간": "15:24:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1229, + "역명": "다대포해수욕장", + "시간": "18:09:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2254, + "역명": "다대포해수욕장", + "시간": "18:17:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1305, + "역명": "다대포해수욕장", + "시간": "21:03:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2316, + "역명": "다대포해수욕장", + "시간": "21:11:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1345, + "역명": "다대포해수욕장", + "시간": "00:00:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 41, + "열번": 4808, + "역명": "다대포해수욕장", + "시간": "00:08:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 42, + "열번": 1273, + "역명": "다대포해수욕장", + "시간": "19:44:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 42, + "열번": 4020, + "역명": "다대포해수욕장", + "시간": "19:54:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 43, + "열번": 1057, + "역명": "다대포해수욕장", + "시간": "09:28:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2086, + "역명": "다대포해수욕장", + "시간": "09:36:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1119, + "역명": "다대포해수욕장", + "시간": "12:25:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2142, + "역명": "다대포해수욕장", + "시간": "12:35:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1173, + "역명": "다대포해수욕장", + "시간": "15:21:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2196, + "역명": "다대포해수욕장", + "시간": "15:30:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1233, + "역명": "다대포해수욕장", + "시간": "18:19:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 43, + "열번": 2258, + "역명": "다대포해수욕장", + "시간": "18:27:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 43, + "열번": 1307, + "역명": "다대포해수욕장", + "시간": "21:11:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 43, + "열번": 2318, + "역명": "다대포해수욕장", + "시간": "21:19:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 44, + "열번": 1279, + "역명": "다대포해수욕장", + "시간": "19:56:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 44, + "열번": 4022, + "역명": "다대포해수욕장", + "시간": "20:06:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 45, + "열번": 1069, + "역명": "다대포해수욕장", + "시간": "09:52:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2094, + "역명": "다대포해수욕장", + "시간": "10:00:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1125, + "역명": "다대포해수욕장", + "시간": "12:45:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2148, + "역명": "다대포해수욕장", + "시간": "12:54:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1179, + "역명": "다대포해수욕장", + "시간": "15:40:30", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2202, + "역명": "다대포해수욕장", + "시간": "15:49:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1239, + "역명": "다대포해수욕장", + "시간": "18:34:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2264, + "역명": "다대포해수욕장", + "시간": "18:42:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 45, + "열번": 1311, + "역명": "다대포해수욕장", + "시간": "21:27:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 45, + "열번": 2322, + "역명": "다대포해수욕장", + "시간": "21:39:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 45, + "열번": 1349, + "역명": "다대포해수욕장", + "시간": "00:24:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 46, + "열번": 1285, + "역명": "다대포해수욕장", + "시간": "20:08:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 46, + "열번": 4024, + "역명": "다대포해수욕장", + "시간": "20:18:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 47, + "열번": 1211, + "역명": "다대포해수욕장", + "시간": "17:22:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 47, + "열번": 2234, + "역명": "다대포해수욕장", + "시간": "17:31:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 47, + "열번": 1289, + "역명": "다대포해수욕장", + "시간": "20:16:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 47, + "열번": 2302, + "역명": "다대포해수욕장", + "시간": "20:28:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 48, + "열번": 1291, + "역명": "다대포해수욕장", + "시간": "20:20:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 48, + "열번": 4026, + "역명": "다대포해수욕장", + "시간": "20:30:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 49, + "열번": 1223, + "역명": "다대포해수욕장", + "시간": "17:54:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 49, + "열번": 2248, + "역명": "다대포해수욕장", + "시간": "18:03:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 49, + "열번": 1301, + "역명": "다대포해수욕장", + "시간": "20:47:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 49, + "열번": 2312, + "역명": "다대포해수욕장", + "시간": "20:58:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 50, + "열번": 2244, + "역명": "다대포해수욕장", + "시간": "17:55:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 50, + "열번": 1299, + "역명": "다대포해수욕장", + "시간": "20:40:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 50, + "열번": 2310, + "역명": "다대포해수욕장", + "시간": "20:52:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 50, + "열번": 1341, + "역명": "다대포해수욕장", + "시간": "23:38:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 50, + "열번": 4804, + "역명": "다대포해수욕장", + "시간": "23:46:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 51, + "열번": 1231, + "역명": "다대포해수욕장", + "시간": "18:14:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 51, + "열번": 2256, + "역명": "다대포해수욕장", + "시간": "18:22:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 52, + "열번": 5905, + "역명": "다대포해수욕장", + "시간": "12:09:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 52, + "열번": 6908, + "역명": "다대포해수욕장", + "시간": "12:18:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 53, + "열번": 1243, + "역명": "다대포해수욕장", + "시간": "18:44:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 53, + "열번": 2268, + "역명": "다대포해수욕장", + "시간": "18:52:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 54, + "열번": 5907, + "역명": "다대포해수욕장", + "시간": "15:50:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 54, + "열번": 6912, + "역명": "다대포해수욕장", + "시간": "16:02:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 55, + "열번": 1251, + "역명": "다대포해수욕장", + "시간": "19:00:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 55, + "열번": 2276, + "역명": "다대포해수욕장", + "시간": "19:12:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 55, + "열번": 1319, + "역명": "다대포해수욕장", + "시간": "21:59:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 55, + "열번": 2328, + "역명": "다대포해수욕장", + "시간": "22:09:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 57, + "열번": 1263, + "역명": "다대포해수욕장", + "시간": "19:24:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 57, + "열번": 2284, + "역명": "다대포해수욕장", + "시간": "19:34:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 57, + "열번": 1325, + "역명": "다대포해수욕장", + "시간": "22:23:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 57, + "열번": 2332, + "역명": "다대포해수욕장", + "시간": "22:33:00", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 59, + "열번": 5901, + "역명": "다대포해수욕장", + "시간": "11:17:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 59, + "열번": 6902, + "역명": "다대포해수욕장", + "시간": "11:26:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 61, + "열번": 5903, + "역명": "다대포해수욕장", + "시간": "14:45:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 61, + "열번": 5904, + "역명": "다대포해수욕장", + "시간": "14:54:30", + "요일구분": "평일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 63, + "열번": 3903, + "역명": "다대포해수욕장", + "시간": "14:58:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 63, + "열번": 4904, + "역명": "다대포해수욕장", + "시간": "15:07:00", + "요일구분": "평일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "노포", + "시간": "06:22:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "노포", + "시간": "06:32:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2050, + "역명": "노포", + "시간": "09:22:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "노포", + "시간": "06:08:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "노포", + "시간": "06:23:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "노포", + "시간": "09:12:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1077, + "역명": "노포", + "시간": "09:23:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2106, + "역명": "노포", + "시간": "12:08:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1137, + "역명": "노포", + "시간": "12:18:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2164, + "역명": "노포", + "시간": "15:04:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1201, + "역명": "노포", + "시간": "15:14:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2230, + "역명": "노포", + "시간": "18:03:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1261, + "역명": "노포", + "시간": "18:11:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2286, + "역명": "노포", + "시간": "20:58:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1305, + "역명": "노포", + "시간": "21:06:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 2, + "열번": 2324, + "역명": "노포", + "시간": "23:51:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "노포", + "시간": "06:36:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "노포", + "시간": "06:50:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2056, + "역명": "노포", + "시간": "09:38:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1085, + "역명": "노포", + "시간": "09:47:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2114, + "역명": "노포", + "시간": "12:32:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1145, + "역명": "노포", + "시간": "12:40:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2172, + "역명": "노포", + "시간": "15:26:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1209, + "역명": "노포", + "시간": "15:36:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2238, + "역명": "노포", + "시간": "18:24:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "노포", + "시간": "06:48:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1023, + "역명": "노포", + "시간": "06:57:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2058, + "역명": "노포", + "시간": "09:44:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1087, + "역명": "노포", + "시간": "09:53:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2116, + "역명": "노포", + "시간": "12:38:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1147, + "역명": "노포", + "시간": "12:46:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2174, + "역명": "노포", + "시간": "15:32:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1211, + "역명": "노포", + "시간": "15:42:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2240, + "역명": "노포", + "시간": "18:30:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1269, + "역명": "노포", + "시간": "18:42:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2294, + "역명": "노포", + "시간": "21:30:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1313, + "역명": "노포", + "시간": "21:40:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2330, + "역명": "노포", + "시간": "00:31:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 5, + "열번": 1001, + "역명": "노포", + "시간": "05:08:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2018, + "역명": "노포", + "시간": "07:56:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1051, + "역명": "노포", + "시간": "08:09:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2082, + "역명": "노포", + "시간": "10:56:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1111, + "역명": "노포", + "시간": "11:05:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2140, + "역명": "노포", + "시간": "13:50:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1173, + "역명": "노포", + "시간": "13:57:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2200, + "역명": "노포", + "시간": "16:43:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1237, + "역명": "노포", + "시간": "16:53:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2264, + "역명": "노포", + "시간": "19:42:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1287, + "역명": "노포", + "시간": "19:54:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2310, + "역명": "노포", + "시간": "22:37:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2008, + "역명": "노포", + "시간": "07:00:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1027, + "역명": "노포", + "시간": "07:09:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2062, + "역명": "노포", + "시간": "09:56:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1091, + "역명": "노포", + "시간": "10:05:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2120, + "역명": "노포", + "시간": "12:50:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1153, + "역명": "노포", + "시간": "13:02:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2180, + "역명": "노포", + "시간": "15:48:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1217, + "역명": "노포", + "시간": "15:58:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2246, + "역명": "노포", + "시간": "18:48:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1273, + "역명": "노포", + "시간": "18:58:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2298, + "역명": "노포", + "시간": "21:46:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1317, + "역명": "노포", + "시간": "22:00:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1003, + "역명": "노포", + "시간": "05:18:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2020, + "역명": "노포", + "시간": "08:05:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1053, + "역명": "노포", + "시간": "08:14:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2084, + "역명": "노포", + "시간": "11:02:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1113, + "역명": "노포", + "시간": "11:11:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2142, + "역명": "노포", + "시간": "13:56:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1177, + "역명": "노포", + "시간": "14:08:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2204, + "역명": "노포", + "시간": "16:54:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1241, + "역명": "노포", + "시간": "17:05:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2268, + "역명": "노포", + "시간": "19:54:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1291, + "역명": "노포", + "시간": "20:10:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2314, + "역명": "노포", + "시간": "22:57:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 7, + "열번": 1329, + "역명": "노포", + "시간": "23:06:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2010, + "역명": "노포", + "시간": "07:12:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1033, + "역명": "노포", + "시간": "07:24:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2066, + "역명": "노포", + "시간": "10:08:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1095, + "역명": "노포", + "시간": "10:17:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2124, + "역명": "노포", + "시간": "13:02:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1157, + "역명": "노포", + "시간": "13:13:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2184, + "역명": "노포", + "시간": "15:59:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1221, + "역명": "노포", + "시간": "16:09:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2248, + "역명": "노포", + "시간": "18:54:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1275, + "역명": "노포", + "시간": "19:06:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 8, + "열번": 2300, + "역명": "노포", + "시간": "21:54:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 9, + "열번": 2022, + "역명": "노포", + "시간": "08:11:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1055, + "역명": "노포", + "시간": "08:19:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2086, + "역명": "노포", + "시간": "11:08:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1115, + "역명": "노포", + "시간": "11:17:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2144, + "역명": "노포", + "시간": "14:02:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1179, + "역명": "노포", + "시간": "14:14:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2206, + "역명": "노포", + "시간": "17:00:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1243, + "역명": "노포", + "시간": "17:11:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 9, + "열번": 2270, + "역명": "노포", + "시간": "20:00:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2012, + "역명": "노포", + "시간": "07:24:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1039, + "역명": "노포", + "시간": "07:39:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2072, + "역명": "노포", + "시간": "10:26:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1101, + "역명": "노포", + "시간": "10:35:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2130, + "역명": "노포", + "시간": "13:20:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1163, + "역명": "노포", + "시간": "13:30:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2190, + "역명": "노포", + "시간": "16:16:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1227, + "역명": "노포", + "시간": "16:26:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2254, + "역명": "노포", + "시간": "19:12:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1279, + "역명": "노포", + "시간": "19:22:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2304, + "역명": "노포", + "시간": "22:10:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1321, + "역명": "노포", + "시간": "22:20:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 11, + "열번": 1005, + "역명": "노포", + "시간": "05:29:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2024, + "역명": "노포", + "시간": "08:17:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1057, + "역명": "노포", + "시간": "08:24:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2088, + "역명": "노포", + "시간": "11:14:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1117, + "역명": "노포", + "시간": "11:23:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2146, + "역명": "노포", + "시간": "14:08:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1181, + "역명": "노포", + "시간": "14:19:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2208, + "역명": "노포", + "시간": "17:05:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1245, + "역명": "노포", + "시간": "17:17:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2272, + "역명": "노포", + "시간": "20:06:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1293, + "역명": "노포", + "시간": "20:18:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2316, + "역명": "노포", + "시간": "23:07:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 11, + "열번": 1331, + "역명": "노포", + "시간": "23:16:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2014, + "역명": "노포", + "시간": "07:36:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1043, + "역명": "노포", + "시간": "07:49:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2074, + "역명": "노포", + "시간": "10:32:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1103, + "역명": "노포", + "시간": "10:41:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2132, + "역명": "노포", + "시간": "13:26:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1165, + "역명": "노포", + "시간": "13:35:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "노포", + "시간": "16:21:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1229, + "역명": "노포", + "시간": "16:31:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2256, + "역명": "노포", + "시간": "19:18:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1281, + "역명": "노포", + "시간": "19:30:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2306, + "역명": "노포", + "시간": "22:18:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1323, + "역명": "노포", + "시간": "22:31:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1009, + "역명": "노포", + "시간": "05:51:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2032, + "역명": "노포", + "시간": "08:37:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1065, + "역명": "노포", + "시간": "08:47:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2094, + "역명": "노포", + "시간": "11:32:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1123, + "역명": "노포", + "시간": "11:40:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2152, + "역명": "노포", + "시간": "14:26:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1187, + "역명": "노포", + "시간": "14:36:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 13, + "열번": 2214, + "역명": "노포", + "시간": "17:22:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2016, + "역명": "노포", + "시간": "07:47:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1049, + "역명": "노포", + "시간": "08:04:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2080, + "역명": "노포", + "시간": "10:50:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1109, + "역명": "노포", + "시간": "10:59:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2138, + "역명": "노포", + "시간": "13:44:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1171, + "역명": "노포", + "시간": "13:52:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2198, + "역명": "노포", + "시간": "16:38:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1235, + "역명": "노포", + "시간": "16:48:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2262, + "역명": "노포", + "시간": "19:36:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1285, + "역명": "노포", + "시간": "19:46:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1011, + "역명": "노포", + "시간": "06:02:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2036, + "역명": "노포", + "시간": "08:47:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1069, + "역명": "노포", + "시간": "08:59:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2098, + "역명": "노포", + "시간": "11:44:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1129, + "역명": "노포", + "시간": "11:56:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2156, + "역명": "노포", + "시간": "14:42:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1193, + "역명": "노포", + "시간": "14:52:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2220, + "역명": "노포", + "시간": "17:38:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1255, + "역명": "노포", + "시간": "17:50:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2280, + "역명": "노포", + "시간": "20:34:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1299, + "역명": "노포", + "시간": "20:42:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2320, + "역명": "노포", + "시간": "23:27:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2026, + "역명": "노포", + "시간": "08:22:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 16, + "열번": 1059, + "역명": "노포", + "시간": "08:29:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2038, + "역명": "노포", + "시간": "08:52:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 18, + "열번": 1007, + "역명": "노포", + "시간": "05:40:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2028, + "역명": "노포", + "시간": "08:27:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1061, + "역명": "노포", + "시간": "08:35:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2090, + "역명": "노포", + "시간": "11:20:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1119, + "역명": "노포", + "시간": "11:29:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2148, + "역명": "노포", + "시간": "14:14:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1183, + "역명": "노포", + "시간": "14:25:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2210, + "역명": "노포", + "시간": "17:11:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1247, + "역명": "노포", + "시간": "17:23:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2040, + "역명": "노포", + "시간": "08:57:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1071, + "역명": "노포", + "시간": "09:05:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2100, + "역명": "노포", + "시간": "11:50:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1131, + "역명": "노포", + "시간": "12:02:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2158, + "역명": "노포", + "시간": "14:48:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1195, + "역명": "노포", + "시간": "14:58:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2222, + "역명": "노포", + "시간": "17:43:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2030, + "역명": "노포", + "시간": "08:32:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1063, + "역명": "노포", + "시간": "08:41:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2092, + "역명": "노포", + "시간": "11:26:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1121, + "역명": "노포", + "시간": "11:34:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2150, + "역명": "노포", + "시간": "14:20:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1185, + "역명": "노포", + "시간": "14:30:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2212, + "역명": "노포", + "시간": "17:16:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1249, + "역명": "노포", + "시간": "17:29:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2274, + "역명": "노포", + "시간": "20:13:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1295, + "역명": "노포", + "시간": "20:26:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2318, + "역명": "노포", + "시간": "23:17:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 20, + "열번": 7931, + "역명": "노포", + "시간": "23:31:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 21, + "열번": 1013, + "역명": "노포", + "시간": "06:13:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2042, + "역명": "노포", + "시간": "09:02:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1073, + "역명": "노포", + "시간": "09:11:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2102, + "역명": "노포", + "시간": "11:56:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1133, + "역명": "노포", + "시간": "12:07:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2160, + "역명": "노포", + "시간": "14:53:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1197, + "역명": "노포", + "시간": "15:03:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2224, + "역명": "노포", + "시간": "17:48:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1257, + "역명": "노포", + "시간": "17:57:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2282, + "역명": "노포", + "시간": "20:42:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1301, + "역명": "노포", + "시간": "20:50:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2322, + "역명": "노포", + "시간": "23:39:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2034, + "역명": "노포", + "시간": "08:42:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1067, + "역명": "노포", + "시간": "08:53:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2096, + "역명": "노포", + "시간": "11:38:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1125, + "역명": "노포", + "시간": "11:45:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2044, + "역명": "노포", + "시간": "09:07:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1075, + "역명": "노포", + "시간": "09:17:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2104, + "역명": "노포", + "시간": "12:02:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1135, + "역명": "노포", + "시간": "12:13:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2162, + "역명": "노포", + "시간": "14:59:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1199, + "역명": "노포", + "시간": "15:09:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2228, + "역명": "노포", + "시간": "17:58:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "노포", + "시간": "09:17:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1079, + "역명": "노포", + "시간": "09:29:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2108, + "역명": "노포", + "시간": "12:14:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1139, + "역명": "노포", + "시간": "12:24:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2166, + "역명": "노포", + "시간": "15:10:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1203, + "역명": "노포", + "시간": "15:20:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2232, + "역명": "노포", + "시간": "18:08:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1263, + "역명": "노포", + "시간": "18:18:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2288, + "역명": "노포", + "시간": "21:06:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1307, + "역명": "노포", + "시간": "21:14:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 24, + "열번": 2326, + "역명": "노포", + "시간": "00:03:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "노포", + "시간": "06:41:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2054, + "역명": "노포", + "시간": "09:32:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1083, + "역명": "노포", + "시간": "09:41:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2112, + "역명": "노포", + "시간": "12:26:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1143, + "역명": "노포", + "시간": "12:35:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2170, + "역명": "노포", + "시간": "15:21:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1207, + "역명": "노포", + "시간": "15:31:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2236, + "역명": "노포", + "시간": "18:18:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1267, + "역명": "노포", + "시간": "18:34:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2292, + "역명": "노포", + "시간": "21:22:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1311, + "역명": "노포", + "시간": "21:30:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2328, + "역명": "노포", + "시간": "00:14:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2052, + "역명": "노포", + "시간": "09:27:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1081, + "역명": "노포", + "시간": "09:35:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2110, + "역명": "노포", + "시간": "12:20:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1141, + "역명": "노포", + "시간": "12:29:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2168, + "역명": "노포", + "시간": "15:15:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1205, + "역명": "노포", + "시간": "15:25:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2234, + "역명": "노포", + "시간": "18:13:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1265, + "역명": "노포", + "시간": "18:26:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2290, + "역명": "노포", + "시간": "21:14:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1309, + "역명": "노포", + "시간": "21:22:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1025, + "역명": "노포", + "시간": "07:04:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2060, + "역명": "노포", + "시간": "09:50:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1089, + "역명": "노포", + "시간": "09:59:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2118, + "역명": "노포", + "시간": "12:44:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1151, + "역명": "노포", + "시간": "12:57:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2178, + "역명": "노포", + "시간": "15:43:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1215, + "역명": "노포", + "시간": "15:53:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2244, + "역명": "노포", + "시간": "18:42:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1271, + "역명": "노포", + "시간": "18:50:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2296, + "역명": "노포", + "시간": "21:38:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 27, + "열번": 1315, + "역명": "노포", + "시간": "21:50:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 28, + "열번": 1029, + "역명": "노포", + "시간": "07:14:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2064, + "역명": "노포", + "시간": "10:02:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1093, + "역명": "노포", + "시간": "10:11:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2122, + "역명": "노포", + "시간": "12:56:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1155, + "역명": "노포", + "시간": "13:08:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2182, + "역명": "노포", + "시간": "15:54:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1219, + "역명": "노포", + "시간": "16:04:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1035, + "역명": "노포", + "시간": "07:29:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2068, + "역명": "노포", + "시간": "10:14:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1097, + "역명": "노포", + "시간": "10:23:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2126, + "역명": "노포", + "시간": "13:08:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1159, + "역명": "노포", + "시간": "13:19:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2186, + "역명": "노포", + "시간": "16:05:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1223, + "역명": "노포", + "시간": "16:15:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 29, + "열번": 2250, + "역명": "노포", + "시간": "19:00:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1031, + "역명": "노포", + "시간": "07:19:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1037, + "역명": "노포", + "시간": "07:34:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2070, + "역명": "노포", + "시간": "10:20:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1099, + "역명": "노포", + "시간": "10:29:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2128, + "역명": "노포", + "시간": "13:14:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1161, + "역명": "노포", + "시간": "13:24:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2188, + "역명": "노포", + "시간": "16:10:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1225, + "역명": "노포", + "시간": "16:20:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2252, + "역명": "노포", + "시간": "19:06:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1277, + "역명": "노포", + "시간": "19:14:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2302, + "역명": "노포", + "시간": "22:02:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1319, + "역명": "노포", + "시간": "22:10:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 32, + "열번": 1041, + "역명": "노포", + "시간": "07:44:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1045, + "역명": "노포", + "시간": "07:54:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2076, + "역명": "노포", + "시간": "10:38:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1105, + "역명": "노포", + "시간": "10:47:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2134, + "역명": "노포", + "시간": "13:32:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1167, + "역명": "노포", + "시간": "13:41:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2194, + "역명": "노포", + "시간": "16:27:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1231, + "역명": "노포", + "시간": "16:37:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 33, + "열번": 2258, + "역명": "노포", + "시간": "19:24:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 34, + "열번": 8904, + "역명": "노포", + "시간": "14:31:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1189, + "역명": "노포", + "시간": "14:41:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 34, + "열번": 2216, + "역명": "노포", + "시간": "17:27:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1251, + "역명": "노포", + "시간": "17:36:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 34, + "열번": 2276, + "역명": "노포", + "시간": "20:20:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1297, + "역명": "노포", + "시간": "20:34:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1047, + "역명": "노포", + "시간": "07:59:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2078, + "역명": "노포", + "시간": "10:44:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1107, + "역명": "노포", + "시간": "10:53:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2136, + "역명": "노포", + "시간": "13:38:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1169, + "역명": "노포", + "시간": "13:46:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2196, + "역명": "노포", + "시간": "16:32:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1233, + "역명": "노포", + "시간": "16:42:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2260, + "역명": "노포", + "시간": "19:30:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1283, + "역명": "노포", + "시간": "19:38:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2308, + "역명": "노포", + "시간": "22:27:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1325, + "역명": "노포", + "시간": "22:42:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 36, + "열번": 2226, + "역명": "노포", + "시간": "17:53:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1259, + "역명": "노포", + "시간": "18:04:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 36, + "열번": 2284, + "역명": "노포", + "시간": "20:50:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1303, + "역명": "노포", + "시간": "20:58:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1127, + "역명": "노포", + "시간": "11:51:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2154, + "역명": "노포", + "시간": "14:37:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1191, + "역명": "노포", + "시간": "14:47:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2218, + "역명": "노포", + "시간": "17:33:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1253, + "역명": "노포", + "시간": "17:43:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 37, + "열번": 2278, + "역명": "노포", + "시간": "20:27:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 39, + "열번": 1149, + "역명": "노포", + "시간": "12:51:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2176, + "역명": "노포", + "시간": "15:37:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1213, + "역명": "노포", + "시간": "15:47:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 39, + "열번": 2242, + "역명": "노포", + "시간": "18:36:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 41, + "열번": 1175, + "역명": "노포", + "시간": "14:03:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2202, + "역명": "노포", + "시간": "16:49:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1239, + "역명": "노포", + "시간": "16:59:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2266, + "역명": "노포", + "시간": "19:48:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1289, + "역명": "노포", + "시간": "20:02:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2312, + "역명": "노포", + "시간": "22:47:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1327, + "역명": "노포", + "시간": "22:54:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "범어사", + "시간": "06:19:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "범어사", + "시간": "06:34:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2050, + "역명": "범어사", + "시간": "09:19:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "범어사", + "시간": "06:06:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "범어사", + "시간": "06:25:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "범어사", + "시간": "09:09:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1077, + "역명": "범어사", + "시간": "09:24:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2106, + "역명": "범어사", + "시간": "12:05:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1137, + "역명": "범어사", + "시간": "12:20:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2164, + "역명": "범어사", + "시간": "15:01:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1201, + "역명": "범어사", + "시간": "15:16:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2230, + "역명": "범어사", + "시간": "18:00:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1261, + "역명": "범어사", + "시간": "18:12:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2286, + "역명": "범어사", + "시간": "20:55:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1305, + "역명": "범어사", + "시간": "21:07:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 2, + "열번": 2324, + "역명": "범어사", + "시간": "23:48:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "범어사", + "시간": "06:33:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "범어사", + "시간": "06:52:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2056, + "역명": "범어사", + "시간": "09:35:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1085, + "역명": "범어사", + "시간": "09:48:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2114, + "역명": "범어사", + "시간": "12:29:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1145, + "역명": "범어사", + "시간": "12:42:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2172, + "역명": "범어사", + "시간": "15:23:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1209, + "역명": "범어사", + "시간": "15:38:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2238, + "역명": "범어사", + "시간": "18:21:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "범어사", + "시간": "06:45:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1023, + "역명": "범어사", + "시간": "06:59:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2058, + "역명": "범어사", + "시간": "09:41:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1087, + "역명": "범어사", + "시간": "09:54:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2116, + "역명": "범어사", + "시간": "12:35:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1147, + "역명": "범어사", + "시간": "12:47:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2174, + "역명": "범어사", + "시간": "15:29:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1211, + "역명": "범어사", + "시간": "15:43:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2240, + "역명": "범어사", + "시간": "18:27:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1269, + "역명": "범어사", + "시간": "18:43:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2294, + "역명": "범어사", + "시간": "21:27:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1313, + "역명": "범어사", + "시간": "21:41:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2330, + "역명": "범어사", + "시간": "00:28:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 5, + "열번": 1001, + "역명": "범어사", + "시간": "05:09:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2018, + "역명": "범어사", + "시간": "07:53:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1051, + "역명": "범어사", + "시간": "08:10:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2082, + "역명": "범어사", + "시간": "10:53:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1111, + "역명": "범어사", + "시간": "11:06:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2140, + "역명": "범어사", + "시간": "13:47:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1173, + "역명": "범어사", + "시간": "13:59:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2200, + "역명": "범어사", + "시간": "16:40:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1237, + "역명": "범어사", + "시간": "16:55:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2264, + "역명": "범어사", + "시간": "19:39:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1287, + "역명": "범어사", + "시간": "19:55:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2310, + "역명": "범어사", + "시간": "22:34:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2008, + "역명": "범어사", + "시간": "06:57:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1027, + "역명": "범어사", + "시간": "07:10:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2062, + "역명": "범어사", + "시간": "09:53:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1091, + "역명": "범어사", + "시간": "10:06:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2120, + "역명": "범어사", + "시간": "12:47:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1153, + "역명": "범어사", + "시간": "13:04:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2180, + "역명": "범어사", + "시간": "15:45:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1217, + "역명": "범어사", + "시간": "16:00:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2246, + "역명": "범어사", + "시간": "18:45:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1273, + "역명": "범어사", + "시간": "18:59:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2298, + "역명": "범어사", + "시간": "21:43:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1317, + "역명": "범어사", + "시간": "22:01:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1003, + "역명": "범어사", + "시간": "05:20:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2020, + "역명": "범어사", + "시간": "08:02:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1053, + "역명": "범어사", + "시간": "08:15:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2084, + "역명": "범어사", + "시간": "10:59:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1113, + "역명": "범어사", + "시간": "11:12:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2142, + "역명": "범어사", + "시간": "13:53:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1177, + "역명": "범어사", + "시간": "14:10:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2204, + "역명": "범어사", + "시간": "16:51:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1241, + "역명": "범어사", + "시간": "17:06:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2268, + "역명": "범어사", + "시간": "19:51:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1291, + "역명": "범어사", + "시간": "20:11:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2314, + "역명": "범어사", + "시간": "22:54:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 7, + "열번": 1329, + "역명": "범어사", + "시간": "23:07:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2010, + "역명": "범어사", + "시간": "07:09:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1033, + "역명": "범어사", + "시간": "07:25:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2066, + "역명": "범어사", + "시간": "10:05:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1095, + "역명": "범어사", + "시간": "10:18:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2124, + "역명": "범어사", + "시간": "12:59:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1157, + "역명": "범어사", + "시간": "13:15:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2184, + "역명": "범어사", + "시간": "15:56:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1221, + "역명": "범어사", + "시간": "16:11:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2248, + "역명": "범어사", + "시간": "18:51:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1275, + "역명": "범어사", + "시간": "19:07:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 8, + "열번": 2300, + "역명": "범어사", + "시간": "21:51:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 9, + "열번": 2022, + "역명": "범어사", + "시간": "08:08:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1055, + "역명": "범어사", + "시간": "08:20:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2086, + "역명": "범어사", + "시간": "11:05:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1115, + "역명": "범어사", + "시간": "11:18:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2144, + "역명": "범어사", + "시간": "13:59:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1179, + "역명": "범어사", + "시간": "14:15:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2206, + "역명": "범어사", + "시간": "16:57:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1243, + "역명": "범어사", + "시간": "17:12:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 9, + "열번": 2270, + "역명": "범어사", + "시간": "19:57:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2012, + "역명": "범어사", + "시간": "07:21:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1039, + "역명": "범어사", + "시간": "07:40:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2072, + "역명": "범어사", + "시간": "10:23:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1101, + "역명": "범어사", + "시간": "10:36:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2130, + "역명": "범어사", + "시간": "13:17:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1163, + "역명": "범어사", + "시간": "13:31:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2190, + "역명": "범어사", + "시간": "16:13:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1227, + "역명": "범어사", + "시간": "16:27:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2254, + "역명": "범어사", + "시간": "19:09:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1279, + "역명": "범어사", + "시간": "19:23:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2304, + "역명": "범어사", + "시간": "22:07:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1321, + "역명": "범어사", + "시간": "22:21:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 11, + "열번": 1005, + "역명": "범어사", + "시간": "05:31:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2024, + "역명": "범어사", + "시간": "08:14:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1057, + "역명": "범어사", + "시간": "08:25:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2088, + "역명": "범어사", + "시간": "11:11:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1117, + "역명": "범어사", + "시간": "11:24:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2146, + "역명": "범어사", + "시간": "14:05:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1181, + "역명": "범어사", + "시간": "14:21:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2208, + "역명": "범어사", + "시간": "17:02:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1245, + "역명": "범어사", + "시간": "17:18:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2272, + "역명": "범어사", + "시간": "20:03:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1293, + "역명": "범어사", + "시간": "20:19:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2316, + "역명": "범어사", + "시간": "23:04:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 11, + "열번": 1331, + "역명": "범어사", + "시간": "23:17:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2014, + "역명": "범어사", + "시간": "07:33:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1043, + "역명": "범어사", + "시간": "07:50:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2074, + "역명": "범어사", + "시간": "10:29:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1103, + "역명": "범어사", + "시간": "10:42:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2132, + "역명": "범어사", + "시간": "13:23:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1165, + "역명": "범어사", + "시간": "13:37:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "범어사", + "시간": "16:18:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1229, + "역명": "범어사", + "시간": "16:33:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2256, + "역명": "범어사", + "시간": "19:15:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1281, + "역명": "범어사", + "시간": "19:31:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2306, + "역명": "범어사", + "시간": "22:15:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1323, + "역명": "범어사", + "시간": "22:32:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1009, + "역명": "범어사", + "시간": "05:53:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2032, + "역명": "범어사", + "시간": "08:34:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1065, + "역명": "범어사", + "시간": "08:48:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2094, + "역명": "범어사", + "시간": "11:29:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1123, + "역명": "범어사", + "시간": "11:41:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2152, + "역명": "범어사", + "시간": "14:23:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1187, + "역명": "범어사", + "시간": "14:37:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 13, + "열번": 2214, + "역명": "범어사", + "시간": "17:19:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2016, + "역명": "범어사", + "시간": "07:44:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1049, + "역명": "범어사", + "시간": "08:05:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2080, + "역명": "범어사", + "시간": "10:47:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1109, + "역명": "범어사", + "시간": "11:00:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2138, + "역명": "범어사", + "시간": "13:41:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1171, + "역명": "범어사", + "시간": "13:53:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2198, + "역명": "범어사", + "시간": "16:35:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1235, + "역명": "범어사", + "시간": "16:49:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2262, + "역명": "범어사", + "시간": "19:33:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1285, + "역명": "범어사", + "시간": "19:47:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1011, + "역명": "범어사", + "시간": "06:04:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2036, + "역명": "범어사", + "시간": "08:44:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1069, + "역명": "범어사", + "시간": "09:00:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2098, + "역명": "범어사", + "시간": "11:41:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1129, + "역명": "범어사", + "시간": "11:58:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2156, + "역명": "범어사", + "시간": "14:39:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1193, + "역명": "범어사", + "시간": "14:54:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2220, + "역명": "범어사", + "시간": "17:35:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1255, + "역명": "범어사", + "시간": "17:51:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2280, + "역명": "범어사", + "시간": "20:31:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1299, + "역명": "범어사", + "시간": "20:43:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2320, + "역명": "범어사", + "시간": "23:24:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2026, + "역명": "범어사", + "시간": "08:19:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 16, + "열번": 1059, + "역명": "범어사", + "시간": "08:30:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2038, + "역명": "범어사", + "시간": "08:49:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 18, + "열번": 1007, + "역명": "범어사", + "시간": "05:42:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2028, + "역명": "범어사", + "시간": "08:24:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1061, + "역명": "범어사", + "시간": "08:36:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2090, + "역명": "범어사", + "시간": "11:17:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1119, + "역명": "범어사", + "시간": "11:30:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2148, + "역명": "범어사", + "시간": "14:11:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1183, + "역명": "범어사", + "시간": "14:26:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2210, + "역명": "범어사", + "시간": "17:08:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1247, + "역명": "범어사", + "시간": "17:24:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2040, + "역명": "범어사", + "시간": "08:54:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1071, + "역명": "범어사", + "시간": "09:06:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2100, + "역명": "범어사", + "시간": "11:47:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1131, + "역명": "범어사", + "시간": "12:03:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2158, + "역명": "범어사", + "시간": "14:45:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1195, + "역명": "범어사", + "시간": "14:59:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2222, + "역명": "범어사", + "시간": "17:40:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2030, + "역명": "범어사", + "시간": "08:29:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1063, + "역명": "범어사", + "시간": "08:42:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2092, + "역명": "범어사", + "시간": "11:23:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1121, + "역명": "범어사", + "시간": "11:36:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2150, + "역명": "범어사", + "시간": "14:17:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1185, + "역명": "범어사", + "시간": "14:32:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2212, + "역명": "범어사", + "시간": "17:13:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1249, + "역명": "범어사", + "시간": "17:30:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2274, + "역명": "범어사", + "시간": "20:10:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1295, + "역명": "범어사", + "시간": "20:27:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2318, + "역명": "범어사", + "시간": "23:14:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 20, + "열번": 7931, + "역명": "범어사", + "시간": "23:32:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 21, + "열번": 1013, + "역명": "범어사", + "시간": "06:15:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2042, + "역명": "범어사", + "시간": "08:59:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1073, + "역명": "범어사", + "시간": "09:12:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2102, + "역명": "범어사", + "시간": "11:53:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1133, + "역명": "범어사", + "시간": "12:09:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2160, + "역명": "범어사", + "시간": "14:50:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1197, + "역명": "범어사", + "시간": "15:05:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2224, + "역명": "범어사", + "시간": "17:45:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1257, + "역명": "범어사", + "시간": "17:58:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2282, + "역명": "범어사", + "시간": "20:39:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1301, + "역명": "범어사", + "시간": "20:51:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2322, + "역명": "범어사", + "시간": "23:36:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2034, + "역명": "범어사", + "시간": "08:39:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1067, + "역명": "범어사", + "시간": "08:54:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2096, + "역명": "범어사", + "시간": "11:35:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1125, + "역명": "범어사", + "시간": "11:47:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2044, + "역명": "범어사", + "시간": "09:04:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1075, + "역명": "범어사", + "시간": "09:18:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2104, + "역명": "범어사", + "시간": "11:59:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1135, + "역명": "범어사", + "시간": "12:14:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2162, + "역명": "범어사", + "시간": "14:56:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1199, + "역명": "범어사", + "시간": "15:10:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2228, + "역명": "범어사", + "시간": "17:55:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "범어사", + "시간": "09:14:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1079, + "역명": "범어사", + "시간": "09:30:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2108, + "역명": "범어사", + "시간": "12:11:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1139, + "역명": "범어사", + "시간": "12:25:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2166, + "역명": "범어사", + "시간": "15:07:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1203, + "역명": "범어사", + "시간": "15:21:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2232, + "역명": "범어사", + "시간": "18:05:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1263, + "역명": "범어사", + "시간": "18:19:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2288, + "역명": "범어사", + "시간": "21:03:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1307, + "역명": "범어사", + "시간": "21:15:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 24, + "열번": 2326, + "역명": "범어사", + "시간": "00:00:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "범어사", + "시간": "06:43:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2054, + "역명": "범어사", + "시간": "09:29:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1083, + "역명": "범어사", + "시간": "09:42:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2112, + "역명": "범어사", + "시간": "12:23:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1143, + "역명": "범어사", + "시간": "12:36:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2170, + "역명": "범어사", + "시간": "15:18:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1207, + "역명": "범어사", + "시간": "15:32:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2236, + "역명": "범어사", + "시간": "18:15:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1267, + "역명": "범어사", + "시간": "18:35:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2292, + "역명": "범어사", + "시간": "21:19:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1311, + "역명": "범어사", + "시간": "21:31:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2328, + "역명": "범어사", + "시간": "00:12:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2052, + "역명": "범어사", + "시간": "09:24:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1081, + "역명": "범어사", + "시간": "09:36:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2110, + "역명": "범어사", + "시간": "12:17:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1141, + "역명": "범어사", + "시간": "12:31:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2168, + "역명": "범어사", + "시간": "15:12:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1205, + "역명": "범어사", + "시간": "15:27:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2234, + "역명": "범어사", + "시간": "18:10:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1265, + "역명": "범어사", + "시간": "18:27:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2290, + "역명": "범어사", + "시간": "21:11:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1309, + "역명": "범어사", + "시간": "21:23:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1025, + "역명": "범어사", + "시간": "07:05:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2060, + "역명": "범어사", + "시간": "09:47:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1089, + "역명": "범어사", + "시간": "10:00:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2118, + "역명": "범어사", + "시간": "12:41:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1151, + "역명": "범어사", + "시간": "12:58:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2178, + "역명": "범어사", + "시간": "15:40:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1215, + "역명": "범어사", + "시간": "15:54:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2244, + "역명": "범어사", + "시간": "18:39:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1271, + "역명": "범어사", + "시간": "18:51:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2296, + "역명": "범어사", + "시간": "21:35:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 27, + "열번": 1315, + "역명": "범어사", + "시간": "21:51:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 28, + "열번": 1029, + "역명": "범어사", + "시간": "07:15:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2064, + "역명": "범어사", + "시간": "09:59:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1093, + "역명": "범어사", + "시간": "10:12:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2122, + "역명": "범어사", + "시간": "12:53:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1155, + "역명": "범어사", + "시간": "13:09:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2182, + "역명": "범어사", + "시간": "15:51:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1219, + "역명": "범어사", + "시간": "16:05:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1035, + "역명": "범어사", + "시간": "07:30:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2068, + "역명": "범어사", + "시간": "10:11:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1097, + "역명": "범어사", + "시간": "10:24:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2126, + "역명": "범어사", + "시간": "13:05:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1159, + "역명": "범어사", + "시간": "13:20:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2186, + "역명": "범어사", + "시간": "16:02:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1223, + "역명": "범어사", + "시간": "16:16:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 29, + "열번": 2250, + "역명": "범어사", + "시간": "18:57:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1031, + "역명": "범어사", + "시간": "07:20:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1037, + "역명": "범어사", + "시간": "07:35:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2070, + "역명": "범어사", + "시간": "10:17:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1099, + "역명": "범어사", + "시간": "10:30:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2128, + "역명": "범어사", + "시간": "13:11:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1161, + "역명": "범어사", + "시간": "13:26:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2188, + "역명": "범어사", + "시간": "16:07:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1225, + "역명": "범어사", + "시간": "16:22:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2252, + "역명": "범어사", + "시간": "19:03:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1277, + "역명": "범어사", + "시간": "19:15:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2302, + "역명": "범어사", + "시간": "21:59:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1319, + "역명": "범어사", + "시간": "22:11:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 32, + "열번": 1041, + "역명": "범어사", + "시간": "07:45:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1045, + "역명": "범어사", + "시간": "07:55:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2076, + "역명": "범어사", + "시간": "10:35:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1105, + "역명": "범어사", + "시간": "10:48:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2134, + "역명": "범어사", + "시간": "13:29:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1167, + "역명": "범어사", + "시간": "13:42:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2194, + "역명": "범어사", + "시간": "16:24:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1231, + "역명": "범어사", + "시간": "16:38:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 33, + "열번": 2258, + "역명": "범어사", + "시간": "19:21:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 34, + "열번": 8904, + "역명": "범어사", + "시간": "14:28:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1189, + "역명": "범어사", + "시간": "14:43:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 34, + "열번": 2216, + "역명": "범어사", + "시간": "17:24:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1251, + "역명": "범어사", + "시간": "17:37:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 34, + "열번": 2276, + "역명": "범어사", + "시간": "20:17:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1297, + "역명": "범어사", + "시간": "20:35:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1047, + "역명": "범어사", + "시간": "08:00:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2078, + "역명": "범어사", + "시간": "10:41:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1107, + "역명": "범어사", + "시간": "10:54:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2136, + "역명": "범어사", + "시간": "13:35:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1169, + "역명": "범어사", + "시간": "13:48:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2196, + "역명": "범어사", + "시간": "16:29:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1233, + "역명": "범어사", + "시간": "16:44:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2260, + "역명": "범어사", + "시간": "19:27:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1283, + "역명": "범어사", + "시간": "19:39:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2308, + "역명": "범어사", + "시간": "22:24:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1325, + "역명": "범어사", + "시간": "22:43:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 36, + "열번": 2226, + "역명": "범어사", + "시간": "17:50:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1259, + "역명": "범어사", + "시간": "18:05:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 36, + "열번": 2284, + "역명": "범어사", + "시간": "20:47:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1303, + "역명": "범어사", + "시간": "20:59:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1127, + "역명": "범어사", + "시간": "11:52:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2154, + "역명": "범어사", + "시간": "14:34:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1191, + "역명": "범어사", + "시간": "14:48:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2218, + "역명": "범어사", + "시간": "17:30:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1253, + "역명": "범어사", + "시간": "17:44:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 37, + "열번": 2278, + "역명": "범어사", + "시간": "20:24:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 39, + "열번": 1149, + "역명": "범어사", + "시간": "12:53:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2176, + "역명": "범어사", + "시간": "15:34:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1213, + "역명": "범어사", + "시간": "15:49:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 39, + "열번": 2242, + "역명": "범어사", + "시간": "18:33:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 41, + "열번": 1175, + "역명": "범어사", + "시간": "14:04:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2202, + "역명": "범어사", + "시간": "16:46:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1239, + "역명": "범어사", + "시간": "17:00:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2266, + "역명": "범어사", + "시간": "19:45:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1289, + "역명": "범어사", + "시간": "20:03:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2312, + "역명": "범어사", + "시간": "22:44:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1327, + "역명": "범어사", + "시간": "22:55:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "남산", + "시간": "06:18:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "남산", + "시간": "06:36:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2050, + "역명": "남산", + "시간": "09:17:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "남산", + "시간": "06:04:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "남산", + "시간": "06:27:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "남산", + "시간": "09:07:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1077, + "역명": "남산", + "시간": "09:26:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2106, + "역명": "남산", + "시간": "12:03:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1137, + "역명": "남산", + "시간": "12:22:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2164, + "역명": "남산", + "시간": "15:00:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1201, + "역명": "남산", + "시간": "15:18:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2230, + "역명": "남산", + "시간": "17:58:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1261, + "역명": "남산", + "시간": "18:14:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2286, + "역명": "남산", + "시간": "20:53:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1305, + "역명": "남산", + "시간": "21:09:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 2, + "열번": 2324, + "역명": "남산", + "시간": "23:46:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "남산", + "시간": "06:31:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "남산", + "시간": "06:54:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2056, + "역명": "남산", + "시간": "09:33:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1085, + "역명": "남산", + "시간": "09:50:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2114, + "역명": "남산", + "시간": "12:27:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1145, + "역명": "남산", + "시간": "12:44:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2172, + "역명": "남산", + "시간": "15:22:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1209, + "역명": "남산", + "시간": "15:40:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2238, + "역명": "남산", + "시간": "18:19:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "남산", + "시간": "06:44:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1023, + "역명": "남산", + "시간": "07:01:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2058, + "역명": "남산", + "시간": "09:39:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1087, + "역명": "남산", + "시간": "09:56:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2116, + "역명": "남산", + "시간": "12:33:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1147, + "역명": "남산", + "시간": "12:49:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2174, + "역명": "남산", + "시간": "15:27:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1211, + "역명": "남산", + "시간": "15:45:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2240, + "역명": "남산", + "시간": "18:25:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1269, + "역명": "남산", + "시간": "18:45:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2294, + "역명": "남산", + "시간": "21:25:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1313, + "역명": "남산", + "시간": "21:43:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2330, + "역명": "남산", + "시간": "00:26:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 5, + "열번": 1001, + "역명": "남산", + "시간": "05:11:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2018, + "역명": "남산", + "시간": "07:52:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1051, + "역명": "남산", + "시간": "08:12:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2082, + "역명": "남산", + "시간": "10:51:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1111, + "역명": "남산", + "시간": "11:08:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2140, + "역명": "남산", + "시간": "13:45:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1173, + "역명": "남산", + "시간": "14:01:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2200, + "역명": "남산", + "시간": "16:39:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1237, + "역명": "남산", + "시간": "16:57:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2264, + "역명": "남산", + "시간": "19:37:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1287, + "역명": "남산", + "시간": "19:57:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2310, + "역명": "남산", + "시간": "22:32:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2008, + "역명": "남산", + "시간": "06:56:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1027, + "역명": "남산", + "시간": "07:12:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2062, + "역명": "남산", + "시간": "09:51:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1091, + "역명": "남산", + "시간": "10:08:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2120, + "역명": "남산", + "시간": "12:45:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1153, + "역명": "남산", + "시간": "13:06:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2180, + "역명": "남산", + "시간": "15:44:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1217, + "역명": "남산", + "시간": "16:02:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2246, + "역명": "남산", + "시간": "18:43:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1273, + "역명": "남산", + "시간": "19:01:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2298, + "역명": "남산", + "시간": "21:41:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1317, + "역명": "남산", + "시간": "22:03:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1003, + "역명": "남산", + "시간": "05:22:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2020, + "역명": "남산", + "시간": "08:00:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1053, + "역명": "남산", + "시간": "08:17:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2084, + "역명": "남산", + "시간": "10:57:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1113, + "역명": "남산", + "시간": "11:14:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2142, + "역명": "남산", + "시간": "13:51:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1177, + "역명": "남산", + "시간": "14:12:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2204, + "역명": "남산", + "시간": "16:50:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1241, + "역명": "남산", + "시간": "17:08:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2268, + "역명": "남산", + "시간": "19:49:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1291, + "역명": "남산", + "시간": "20:13:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2314, + "역명": "남산", + "시간": "22:52:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 7, + "열번": 1329, + "역명": "남산", + "시간": "23:09:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2010, + "역명": "남산", + "시간": "07:08:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1033, + "역명": "남산", + "시간": "07:27:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2066, + "역명": "남산", + "시간": "10:03:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1095, + "역명": "남산", + "시간": "10:20:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2124, + "역명": "남산", + "시간": "12:57:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1157, + "역명": "남산", + "시간": "13:17:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2184, + "역명": "남산", + "시간": "15:55:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1221, + "역명": "남산", + "시간": "16:13:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2248, + "역명": "남산", + "시간": "18:49:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1275, + "역명": "남산", + "시간": "19:09:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 8, + "열번": 2300, + "역명": "남산", + "시간": "21:49:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 9, + "열번": 2022, + "역명": "남산", + "시간": "08:06:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1055, + "역명": "남산", + "시간": "08:22:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2086, + "역명": "남산", + "시간": "11:03:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1115, + "역명": "남산", + "시간": "11:20:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2144, + "역명": "남산", + "시간": "13:57:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1179, + "역명": "남산", + "시간": "14:17:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2206, + "역명": "남산", + "시간": "16:55:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1243, + "역명": "남산", + "시간": "17:14:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 9, + "열번": 2270, + "역명": "남산", + "시간": "19:55:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2012, + "역명": "남산", + "시간": "07:20:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1039, + "역명": "남산", + "시간": "07:42:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2072, + "역명": "남산", + "시간": "10:21:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1101, + "역명": "남산", + "시간": "10:38:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2130, + "역명": "남산", + "시간": "13:15:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1163, + "역명": "남산", + "시간": "13:33:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2190, + "역명": "남산", + "시간": "16:11:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1227, + "역명": "남산", + "시간": "16:29:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2254, + "역명": "남산", + "시간": "19:07:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1279, + "역명": "남산", + "시간": "19:25:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2304, + "역명": "남산", + "시간": "22:05:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1321, + "역명": "남산", + "시간": "22:23:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 11, + "열번": 1005, + "역명": "남산", + "시간": "05:33:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2024, + "역명": "남산", + "시간": "08:12:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1057, + "역명": "남산", + "시간": "08:27:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2088, + "역명": "남산", + "시간": "11:09:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1117, + "역명": "남산", + "시간": "11:26:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2146, + "역명": "남산", + "시간": "14:03:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1181, + "역명": "남산", + "시간": "14:23:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2208, + "역명": "남산", + "시간": "17:01:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1245, + "역명": "남산", + "시간": "17:20:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2272, + "역명": "남산", + "시간": "20:01:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1293, + "역명": "남산", + "시간": "20:21:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2316, + "역명": "남산", + "시간": "23:02:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 11, + "열번": 1331, + "역명": "남산", + "시간": "23:19:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2014, + "역명": "남산", + "시간": "07:32:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1043, + "역명": "남산", + "시간": "07:52:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2074, + "역명": "남산", + "시간": "10:27:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1103, + "역명": "남산", + "시간": "10:44:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2132, + "역명": "남산", + "시간": "13:21:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1165, + "역명": "남산", + "시간": "13:39:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "남산", + "시간": "16:17:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1229, + "역명": "남산", + "시간": "16:35:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2256, + "역명": "남산", + "시간": "19:13:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1281, + "역명": "남산", + "시간": "19:33:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2306, + "역명": "남산", + "시간": "22:13:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1323, + "역명": "남산", + "시간": "22:34:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1009, + "역명": "남산", + "시간": "05:55:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2032, + "역명": "남산", + "시간": "08:32:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1065, + "역명": "남산", + "시간": "08:50:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2094, + "역명": "남산", + "시간": "11:27:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1123, + "역명": "남산", + "시간": "11:43:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2152, + "역명": "남산", + "시간": "14:21:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1187, + "역명": "남산", + "시간": "14:39:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 13, + "열번": 2214, + "역명": "남산", + "시간": "17:17:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2016, + "역명": "남산", + "시간": "07:43:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1049, + "역명": "남산", + "시간": "08:07:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2080, + "역명": "남산", + "시간": "10:45:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1109, + "역명": "남산", + "시간": "11:02:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2138, + "역명": "남산", + "시간": "13:39:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1171, + "역명": "남산", + "시간": "13:55:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2198, + "역명": "남산", + "시간": "16:33:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1235, + "역명": "남산", + "시간": "16:51:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2262, + "역명": "남산", + "시간": "19:31:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1285, + "역명": "남산", + "시간": "19:49:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1011, + "역명": "남산", + "시간": "06:06:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2036, + "역명": "남산", + "시간": "08:42:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1069, + "역명": "남산", + "시간": "09:02:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2098, + "역명": "남산", + "시간": "11:39:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1129, + "역명": "남산", + "시간": "12:00:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2156, + "역명": "남산", + "시간": "14:38:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1193, + "역명": "남산", + "시간": "14:56:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2220, + "역명": "남산", + "시간": "17:33:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1255, + "역명": "남산", + "시간": "17:53:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2280, + "역명": "남산", + "시간": "20:29:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1299, + "역명": "남산", + "시간": "20:45:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2320, + "역명": "남산", + "시간": "23:22:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2026, + "역명": "남산", + "시간": "08:17:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 16, + "열번": 1059, + "역명": "남산", + "시간": "08:32:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2038, + "역명": "남산", + "시간": "08:47:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 18, + "열번": 1007, + "역명": "남산", + "시간": "05:44:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2028, + "역명": "남산", + "시간": "08:22:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1061, + "역명": "남산", + "시간": "08:38:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2090, + "역명": "남산", + "시간": "11:15:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1119, + "역명": "남산", + "시간": "11:32:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2148, + "역명": "남산", + "시간": "14:09:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1183, + "역명": "남산", + "시간": "14:28:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2210, + "역명": "남산", + "시간": "17:06:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1247, + "역명": "남산", + "시간": "17:26:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2040, + "역명": "남산", + "시간": "08:52:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1071, + "역명": "남산", + "시간": "09:08:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2100, + "역명": "남산", + "시간": "11:45:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1131, + "역명": "남산", + "시간": "12:05:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2158, + "역명": "남산", + "시간": "14:43:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1195, + "역명": "남산", + "시간": "15:01:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2222, + "역명": "남산", + "시간": "17:38:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2030, + "역명": "남산", + "시간": "08:27:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1063, + "역명": "남산", + "시간": "08:44:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2092, + "역명": "남산", + "시간": "11:21:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1121, + "역명": "남산", + "시간": "11:38:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2150, + "역명": "남산", + "시간": "14:15:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1185, + "역명": "남산", + "시간": "14:34:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2212, + "역명": "남산", + "시간": "17:12:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1249, + "역명": "남산", + "시간": "17:32:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2274, + "역명": "남산", + "시간": "20:08:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1295, + "역명": "남산", + "시간": "20:29:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2318, + "역명": "남산", + "시간": "23:12:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 20, + "열번": 7931, + "역명": "남산", + "시간": "23:34:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 21, + "열번": 1013, + "역명": "남산", + "시간": "06:17:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2042, + "역명": "남산", + "시간": "08:57:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1073, + "역명": "남산", + "시간": "09:14:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2102, + "역명": "남산", + "시간": "11:51:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1133, + "역명": "남산", + "시간": "12:11:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2160, + "역명": "남산", + "시간": "14:49:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1197, + "역명": "남산", + "시간": "15:07:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2224, + "역명": "남산", + "시간": "17:43:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1257, + "역명": "남산", + "시간": "18:00:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2282, + "역명": "남산", + "시간": "20:37:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1301, + "역명": "남산", + "시간": "20:53:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2322, + "역명": "남산", + "시간": "23:34:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2034, + "역명": "남산", + "시간": "08:37:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1067, + "역명": "남산", + "시간": "08:56:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2096, + "역명": "남산", + "시간": "11:33:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1125, + "역명": "남산", + "시간": "11:49:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2044, + "역명": "남산", + "시간": "09:02:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1075, + "역명": "남산", + "시간": "09:20:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2104, + "역명": "남산", + "시간": "11:57:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1135, + "역명": "남산", + "시간": "12:16:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2162, + "역명": "남산", + "시간": "14:54:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1199, + "역명": "남산", + "시간": "15:12:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2228, + "역명": "남산", + "시간": "17:53:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "남산", + "시간": "09:12:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1079, + "역명": "남산", + "시간": "09:32:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2108, + "역명": "남산", + "시간": "12:09:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1139, + "역명": "남산", + "시간": "12:27:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2166, + "역명": "남산", + "시간": "15:05:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1203, + "역명": "남산", + "시간": "15:23:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2232, + "역명": "남산", + "시간": "18:03:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1263, + "역명": "남산", + "시간": "18:21:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2288, + "역명": "남산", + "시간": "21:01:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1307, + "역명": "남산", + "시간": "21:17:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 24, + "열번": 2326, + "역명": "남산", + "시간": "23:58:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "남산", + "시간": "06:45:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2054, + "역명": "남산", + "시간": "09:27:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1083, + "역명": "남산", + "시간": "09:44:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2112, + "역명": "남산", + "시간": "12:21:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1143, + "역명": "남산", + "시간": "12:38:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2170, + "역명": "남산", + "시간": "15:16:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1207, + "역명": "남산", + "시간": "15:34:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2236, + "역명": "남산", + "시간": "18:13:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1267, + "역명": "남산", + "시간": "18:37:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2292, + "역명": "남산", + "시간": "21:17:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1311, + "역명": "남산", + "시간": "21:33:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2328, + "역명": "남산", + "시간": "00:10:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2052, + "역명": "남산", + "시간": "09:22:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1081, + "역명": "남산", + "시간": "09:38:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2110, + "역명": "남산", + "시간": "12:15:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1141, + "역명": "남산", + "시간": "12:33:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2168, + "역명": "남산", + "시간": "15:11:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1205, + "역명": "남산", + "시간": "15:29:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2234, + "역명": "남산", + "시간": "18:08:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1265, + "역명": "남산", + "시간": "18:29:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2290, + "역명": "남산", + "시간": "21:09:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1309, + "역명": "남산", + "시간": "21:25:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1025, + "역명": "남산", + "시간": "07:07:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2060, + "역명": "남산", + "시간": "09:45:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1089, + "역명": "남산", + "시간": "10:02:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2118, + "역명": "남산", + "시간": "12:39:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1151, + "역명": "남산", + "시간": "13:00:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2178, + "역명": "남산", + "시간": "15:38:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1215, + "역명": "남산", + "시간": "15:56:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2244, + "역명": "남산", + "시간": "18:37:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1271, + "역명": "남산", + "시간": "18:53:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2296, + "역명": "남산", + "시간": "21:33:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 27, + "열번": 1315, + "역명": "남산", + "시간": "21:53:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 28, + "열번": 1029, + "역명": "남산", + "시간": "07:17:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2064, + "역명": "남산", + "시간": "09:57:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1093, + "역명": "남산", + "시간": "10:14:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2122, + "역명": "남산", + "시간": "12:51:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1155, + "역명": "남산", + "시간": "13:11:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2182, + "역명": "남산", + "시간": "15:49:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1219, + "역명": "남산", + "시간": "16:07:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1035, + "역명": "남산", + "시간": "07:32:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2068, + "역명": "남산", + "시간": "10:09:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1097, + "역명": "남산", + "시간": "10:26:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2126, + "역명": "남산", + "시간": "13:03:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1159, + "역명": "남산", + "시간": "13:22:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2186, + "역명": "남산", + "시간": "16:00:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1223, + "역명": "남산", + "시간": "16:18:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 29, + "열번": 2250, + "역명": "남산", + "시간": "18:55:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1031, + "역명": "남산", + "시간": "07:22:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1037, + "역명": "남산", + "시간": "07:37:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2070, + "역명": "남산", + "시간": "10:15:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1099, + "역명": "남산", + "시간": "10:32:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2128, + "역명": "남산", + "시간": "13:09:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1161, + "역명": "남산", + "시간": "13:28:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2188, + "역명": "남산", + "시간": "16:06:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1225, + "역명": "남산", + "시간": "16:24:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2252, + "역명": "남산", + "시간": "19:01:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1277, + "역명": "남산", + "시간": "19:17:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2302, + "역명": "남산", + "시간": "21:57:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1319, + "역명": "남산", + "시간": "22:13:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 32, + "열번": 1041, + "역명": "남산", + "시간": "07:47:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1045, + "역명": "남산", + "시간": "07:57:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2076, + "역명": "남산", + "시간": "10:33:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1105, + "역명": "남산", + "시간": "10:50:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2134, + "역명": "남산", + "시간": "13:27:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1167, + "역명": "남산", + "시간": "13:44:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2194, + "역명": "남산", + "시간": "16:22:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1231, + "역명": "남산", + "시간": "16:40:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 33, + "열번": 2258, + "역명": "남산", + "시간": "19:19:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 34, + "열번": 8904, + "역명": "남산", + "시간": "14:27:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1189, + "역명": "남산", + "시간": "14:45:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 34, + "열번": 2216, + "역명": "남산", + "시간": "17:23:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1251, + "역명": "남산", + "시간": "17:39:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 34, + "열번": 2276, + "역명": "남산", + "시간": "20:15:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1297, + "역명": "남산", + "시간": "20:37:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1047, + "역명": "남산", + "시간": "08:02:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2078, + "역명": "남산", + "시간": "10:39:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1107, + "역명": "남산", + "시간": "10:56:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2136, + "역명": "남산", + "시간": "13:33:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1169, + "역명": "남산", + "시간": "13:50:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2196, + "역명": "남산", + "시간": "16:28:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1233, + "역명": "남산", + "시간": "16:46:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2260, + "역명": "남산", + "시간": "19:25:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1283, + "역명": "남산", + "시간": "19:41:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2308, + "역명": "남산", + "시간": "22:22:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1325, + "역명": "남산", + "시간": "22:45:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 36, + "열번": 2226, + "역명": "남산", + "시간": "17:48:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1259, + "역명": "남산", + "시간": "18:07:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 36, + "열번": 2284, + "역명": "남산", + "시간": "20:45:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1303, + "역명": "남산", + "시간": "21:01:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1127, + "역명": "남산", + "시간": "11:54:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2154, + "역명": "남산", + "시간": "14:32:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1191, + "역명": "남산", + "시간": "14:50:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2218, + "역명": "남산", + "시간": "17:28:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1253, + "역명": "남산", + "시간": "17:46:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 37, + "열번": 2278, + "역명": "남산", + "시간": "20:22:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 39, + "열번": 1149, + "역명": "남산", + "시간": "12:55:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2176, + "역명": "남산", + "시간": "15:33:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1213, + "역명": "남산", + "시간": "15:51:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 39, + "열번": 2242, + "역명": "남산", + "시간": "18:31:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 41, + "열번": 1175, + "역명": "남산", + "시간": "14:06:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2202, + "역명": "남산", + "시간": "16:44:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1239, + "역명": "남산", + "시간": "17:02:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2266, + "역명": "남산", + "시간": "19:43:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1289, + "역명": "남산", + "시간": "20:05:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2312, + "역명": "남산", + "시간": "22:42:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1327, + "역명": "남산", + "시간": "22:57:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "두실", + "시간": "06:16:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "두실", + "시간": "06:37:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2050, + "역명": "두실", + "시간": "09:15:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "두실", + "시간": "06:02:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "두실", + "시간": "06:28:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "두실", + "시간": "09:05:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1077, + "역명": "두실", + "시간": "09:28:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2106, + "역명": "두실", + "시간": "12:01:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1137, + "역명": "두실", + "시간": "12:23:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2164, + "역명": "두실", + "시간": "14:58:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1201, + "역명": "두실", + "시간": "15:19:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2230, + "역명": "두실", + "시간": "17:56:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1261, + "역명": "두실", + "시간": "18:16:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2286, + "역명": "두실", + "시간": "20:51:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1305, + "역명": "두실", + "시간": "21:11:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 2, + "열번": 2324, + "역명": "두실", + "시간": "23:44:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "두실", + "시간": "06:29:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "두실", + "시간": "06:55:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2056, + "역명": "두실", + "시간": "09:31:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1085, + "역명": "두실", + "시간": "09:52:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2114, + "역명": "두실", + "시간": "12:25:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1145, + "역명": "두실", + "시간": "12:45:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2172, + "역명": "두실", + "시간": "15:20:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1209, + "역명": "두실", + "시간": "15:41:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2238, + "역명": "두실", + "시간": "18:17:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "두실", + "시간": "06:42:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1023, + "역명": "두실", + "시간": "07:02:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2058, + "역명": "두실", + "시간": "09:37:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1087, + "역명": "두실", + "시간": "09:58:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2116, + "역명": "두실", + "시간": "12:31:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1147, + "역명": "두실", + "시간": "12:51:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2174, + "역명": "두실", + "시간": "15:25:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1211, + "역명": "두실", + "시간": "15:47:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2240, + "역명": "두실", + "시간": "18:23:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1269, + "역명": "두실", + "시간": "18:47:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2294, + "역명": "두실", + "시간": "21:23:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1313, + "역명": "두실", + "시간": "21:45:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2330, + "역명": "두실", + "시간": "00:25:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 5, + "열번": 1001, + "역명": "두실", + "시간": "05:13:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2018, + "역명": "두실", + "시간": "07:50:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1051, + "역명": "두실", + "시간": "08:14:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2082, + "역명": "두실", + "시간": "10:49:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1111, + "역명": "두실", + "시간": "11:10:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2140, + "역명": "두실", + "시간": "13:43:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1173, + "역명": "두실", + "시간": "14:02:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2200, + "역명": "두실", + "시간": "16:37:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1237, + "역명": "두실", + "시간": "16:58:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2264, + "역명": "두실", + "시간": "19:35:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1287, + "역명": "두실", + "시간": "19:59:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2310, + "역명": "두실", + "시간": "22:30:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2008, + "역명": "두실", + "시간": "06:54:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1027, + "역명": "두실", + "시간": "07:14:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2062, + "역명": "두실", + "시간": "09:49:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1091, + "역명": "두실", + "시간": "10:10:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2120, + "역명": "두실", + "시간": "12:43:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1153, + "역명": "두실", + "시간": "13:07:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2180, + "역명": "두실", + "시간": "15:42:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1217, + "역명": "두실", + "시간": "16:03:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2246, + "역명": "두실", + "시간": "18:41:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1273, + "역명": "두실", + "시간": "19:03:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2298, + "역명": "두실", + "시간": "21:39:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1317, + "역명": "두실", + "시간": "22:05:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1003, + "역명": "두실", + "시간": "05:23:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2020, + "역명": "두실", + "시간": "07:58:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1053, + "역명": "두실", + "시간": "08:19:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2084, + "역명": "두실", + "시간": "10:55:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1113, + "역명": "두실", + "시간": "11:16:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2142, + "역명": "두실", + "시간": "13:49:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1177, + "역명": "두실", + "시간": "14:13:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2204, + "역명": "두실", + "시간": "16:48:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1241, + "역명": "두실", + "시간": "17:10:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2268, + "역명": "두실", + "시간": "19:47:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1291, + "역명": "두실", + "시간": "20:15:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2314, + "역명": "두실", + "시간": "22:50:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 7, + "열번": 1329, + "역명": "두실", + "시간": "23:11:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2010, + "역명": "두실", + "시간": "07:06:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1033, + "역명": "두실", + "시간": "07:29:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2066, + "역명": "두실", + "시간": "10:01:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1095, + "역명": "두실", + "시간": "10:22:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2124, + "역명": "두실", + "시간": "12:55:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1157, + "역명": "두실", + "시간": "13:18:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2184, + "역명": "두실", + "시간": "15:53:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1221, + "역명": "두실", + "시간": "16:14:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2248, + "역명": "두실", + "시간": "18:47:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1275, + "역명": "두실", + "시간": "19:11:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 8, + "열번": 2300, + "역명": "두실", + "시간": "21:47:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 9, + "열번": 2022, + "역명": "두실", + "시간": "08:04:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1055, + "역명": "두실", + "시간": "08:24:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2086, + "역명": "두실", + "시간": "11:01:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1115, + "역명": "두실", + "시간": "11:22:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2144, + "역명": "두실", + "시간": "13:55:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1179, + "역명": "두실", + "시간": "14:19:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2206, + "역명": "두실", + "시간": "16:53:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1243, + "역명": "두실", + "시간": "17:16:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 9, + "열번": 2270, + "역명": "두실", + "시간": "19:53:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2012, + "역명": "두실", + "시간": "07:18:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1039, + "역명": "두실", + "시간": "07:44:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2072, + "역명": "두실", + "시간": "10:19:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1101, + "역명": "두실", + "시간": "10:40:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2130, + "역명": "두실", + "시간": "13:13:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1163, + "역명": "두실", + "시간": "13:35:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2190, + "역명": "두실", + "시간": "16:09:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1227, + "역명": "두실", + "시간": "16:31:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2254, + "역명": "두실", + "시간": "19:05:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1279, + "역명": "두실", + "시간": "19:27:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2304, + "역명": "두실", + "시간": "22:03:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1321, + "역명": "두실", + "시간": "22:25:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 11, + "열번": 1005, + "역명": "두실", + "시간": "05:34:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2024, + "역명": "두실", + "시간": "08:10:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1057, + "역명": "두실", + "시간": "08:29:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2088, + "역명": "두실", + "시간": "11:07:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1117, + "역명": "두실", + "시간": "11:28:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2146, + "역명": "두실", + "시간": "14:01:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1181, + "역명": "두실", + "시간": "14:24:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2208, + "역명": "두실", + "시간": "16:59:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1245, + "역명": "두실", + "시간": "17:22:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2272, + "역명": "두실", + "시간": "19:59:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1293, + "역명": "두실", + "시간": "20:23:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2316, + "역명": "두실", + "시간": "23:00:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 11, + "열번": 1331, + "역명": "두실", + "시간": "23:21:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2014, + "역명": "두실", + "시간": "07:30:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1043, + "역명": "두실", + "시간": "07:54:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2074, + "역명": "두실", + "시간": "10:25:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1103, + "역명": "두실", + "시간": "10:46:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2132, + "역명": "두실", + "시간": "13:19:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1165, + "역명": "두실", + "시간": "13:40:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "두실", + "시간": "16:15:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1229, + "역명": "두실", + "시간": "16:36:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2256, + "역명": "두실", + "시간": "19:11:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1281, + "역명": "두실", + "시간": "19:35:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2306, + "역명": "두실", + "시간": "22:11:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1323, + "역명": "두실", + "시간": "22:36:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1009, + "역명": "두실", + "시간": "05:56:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2032, + "역명": "두실", + "시간": "08:30:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1065, + "역명": "두실", + "시간": "08:52:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2094, + "역명": "두실", + "시간": "11:25:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1123, + "역명": "두실", + "시간": "11:45:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2152, + "역명": "두실", + "시간": "14:19:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1187, + "역명": "두실", + "시간": "14:41:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 13, + "열번": 2214, + "역명": "두실", + "시간": "17:15:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2016, + "역명": "두실", + "시간": "07:41:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1049, + "역명": "두실", + "시간": "08:09:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2080, + "역명": "두실", + "시간": "10:43:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1109, + "역명": "두실", + "시간": "11:04:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2138, + "역명": "두실", + "시간": "13:37:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1171, + "역명": "두실", + "시간": "13:57:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2198, + "역명": "두실", + "시간": "16:31:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1235, + "역명": "두실", + "시간": "16:53:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2262, + "역명": "두실", + "시간": "19:29:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1285, + "역명": "두실", + "시간": "19:51:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1011, + "역명": "두실", + "시간": "06:07:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2036, + "역명": "두실", + "시간": "08:40:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1069, + "역명": "두실", + "시간": "09:04:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2098, + "역명": "두실", + "시간": "11:37:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1129, + "역명": "두실", + "시간": "12:01:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2156, + "역명": "두실", + "시간": "14:36:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1193, + "역명": "두실", + "시간": "14:57:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2220, + "역명": "두실", + "시간": "17:31:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1255, + "역명": "두실", + "시간": "17:55:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2280, + "역명": "두실", + "시간": "20:27:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1299, + "역명": "두실", + "시간": "20:47:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2320, + "역명": "두실", + "시간": "23:20:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2026, + "역명": "두실", + "시간": "08:15:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 16, + "열번": 1059, + "역명": "두실", + "시간": "08:34:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2038, + "역명": "두실", + "시간": "08:45:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 18, + "열번": 1007, + "역명": "두실", + "시간": "05:45:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2028, + "역명": "두실", + "시간": "08:20:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1061, + "역명": "두실", + "시간": "08:40:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2090, + "역명": "두실", + "시간": "11:13:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1119, + "역명": "두실", + "시간": "11:34:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2148, + "역명": "두실", + "시간": "14:07:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1183, + "역명": "두실", + "시간": "14:30:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2210, + "역명": "두실", + "시간": "17:04:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1247, + "역명": "두실", + "시간": "17:28:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2040, + "역명": "두실", + "시간": "08:50:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1071, + "역명": "두실", + "시간": "09:10:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2100, + "역명": "두실", + "시간": "11:43:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1131, + "역명": "두실", + "시간": "12:07:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2158, + "역명": "두실", + "시간": "14:41:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1195, + "역명": "두실", + "시간": "15:03:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2222, + "역명": "두실", + "시간": "17:36:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2030, + "역명": "두실", + "시간": "08:25:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1063, + "역명": "두실", + "시간": "08:46:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2092, + "역명": "두실", + "시간": "11:19:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1121, + "역명": "두실", + "시간": "11:39:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2150, + "역명": "두실", + "시간": "14:13:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1185, + "역명": "두실", + "시간": "14:35:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2212, + "역명": "두실", + "시간": "17:10:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1249, + "역명": "두실", + "시간": "17:34:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2274, + "역명": "두실", + "시간": "20:06:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1295, + "역명": "두실", + "시간": "20:31:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2318, + "역명": "두실", + "시간": "23:10:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 20, + "열번": 7931, + "역명": "두실", + "시간": "23:36:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 21, + "열번": 1013, + "역명": "두실", + "시간": "06:18:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2042, + "역명": "두실", + "시간": "08:55:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1073, + "역명": "두실", + "시간": "09:16:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2102, + "역명": "두실", + "시간": "11:49:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1133, + "역명": "두실", + "시간": "12:12:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2160, + "역명": "두실", + "시간": "14:47:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1197, + "역명": "두실", + "시간": "15:08:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2224, + "역명": "두실", + "시간": "17:41:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1257, + "역명": "두실", + "시간": "18:02:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2282, + "역명": "두실", + "시간": "20:35:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1301, + "역명": "두실", + "시간": "20:55:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2322, + "역명": "두실", + "시간": "23:32:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2034, + "역명": "두실", + "시간": "08:35:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1067, + "역명": "두실", + "시간": "08:58:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2096, + "역명": "두실", + "시간": "11:31:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1125, + "역명": "두실", + "시간": "11:50:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2044, + "역명": "두실", + "시간": "09:00:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1075, + "역명": "두실", + "시간": "09:22:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2104, + "역명": "두실", + "시간": "11:55:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1135, + "역명": "두실", + "시간": "12:18:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2162, + "역명": "두실", + "시간": "14:52:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1199, + "역명": "두실", + "시간": "15:14:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2228, + "역명": "두실", + "시간": "17:51:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "두실", + "시간": "09:10:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1079, + "역명": "두실", + "시간": "09:34:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2108, + "역명": "두실", + "시간": "12:07:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1139, + "역명": "두실", + "시간": "12:29:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2166, + "역명": "두실", + "시간": "15:03:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1203, + "역명": "두실", + "시간": "15:25:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2232, + "역명": "두실", + "시간": "18:01:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1263, + "역명": "두실", + "시간": "18:23:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2288, + "역명": "두실", + "시간": "20:59:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1307, + "역명": "두실", + "시간": "21:19:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 24, + "열번": 2326, + "역명": "두실", + "시간": "23:56:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "두실", + "시간": "06:46:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2054, + "역명": "두실", + "시간": "09:25:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1083, + "역명": "두실", + "시간": "09:46:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2112, + "역명": "두실", + "시간": "12:19:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1143, + "역명": "두실", + "시간": "12:40:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2170, + "역명": "두실", + "시간": "15:14:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1207, + "역명": "두실", + "시간": "15:36:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2236, + "역명": "두실", + "시간": "18:11:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1267, + "역명": "두실", + "시간": "18:39:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2292, + "역명": "두실", + "시간": "21:15:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1311, + "역명": "두실", + "시간": "21:35:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2328, + "역명": "두실", + "시간": "00:08:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2052, + "역명": "두실", + "시간": "09:20:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1081, + "역명": "두실", + "시간": "09:40:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2110, + "역명": "두실", + "시간": "12:13:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1141, + "역명": "두실", + "시간": "12:34:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2168, + "역명": "두실", + "시간": "15:09:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1205, + "역명": "두실", + "시간": "15:30:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2234, + "역명": "두실", + "시간": "18:06:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1265, + "역명": "두실", + "시간": "18:31:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2290, + "역명": "두실", + "시간": "21:07:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1309, + "역명": "두실", + "시간": "21:27:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1025, + "역명": "두실", + "시간": "07:09:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2060, + "역명": "두실", + "시간": "09:43:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1089, + "역명": "두실", + "시간": "10:04:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2118, + "역명": "두실", + "시간": "12:37:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1151, + "역명": "두실", + "시간": "13:02:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2178, + "역명": "두실", + "시간": "15:36:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1215, + "역명": "두실", + "시간": "15:58:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2244, + "역명": "두실", + "시간": "18:35:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1271, + "역명": "두실", + "시간": "18:55:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2296, + "역명": "두실", + "시간": "21:31:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 27, + "열번": 1315, + "역명": "두실", + "시간": "21:55:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 28, + "열번": 1029, + "역명": "두실", + "시간": "07:19:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2064, + "역명": "두실", + "시간": "09:55:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1093, + "역명": "두실", + "시간": "10:16:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2122, + "역명": "두실", + "시간": "12:49:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1155, + "역명": "두실", + "시간": "13:13:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2182, + "역명": "두실", + "시간": "15:47:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1219, + "역명": "두실", + "시간": "16:09:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1035, + "역명": "두실", + "시간": "07:34:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2068, + "역명": "두실", + "시간": "10:07:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1097, + "역명": "두실", + "시간": "10:28:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2126, + "역명": "두실", + "시간": "13:01:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1159, + "역명": "두실", + "시간": "13:24:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2186, + "역명": "두실", + "시간": "15:58:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1223, + "역명": "두실", + "시간": "16:20:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 29, + "열번": 2250, + "역명": "두실", + "시간": "18:53:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1031, + "역명": "두실", + "시간": "07:24:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1037, + "역명": "두실", + "시간": "07:39:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2070, + "역명": "두실", + "시간": "10:13:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1099, + "역명": "두실", + "시간": "10:34:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2128, + "역명": "두실", + "시간": "13:07:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1161, + "역명": "두실", + "시간": "13:29:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2188, + "역명": "두실", + "시간": "16:04:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1225, + "역명": "두실", + "시간": "16:25:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2252, + "역명": "두실", + "시간": "18:59:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1277, + "역명": "두실", + "시간": "19:19:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2302, + "역명": "두실", + "시간": "21:55:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1319, + "역명": "두실", + "시간": "22:15:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 32, + "열번": 1041, + "역명": "두실", + "시간": "07:49:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1045, + "역명": "두실", + "시간": "07:59:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2076, + "역명": "두실", + "시간": "10:31:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1105, + "역명": "두실", + "시간": "10:52:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2134, + "역명": "두실", + "시간": "13:25:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1167, + "역명": "두실", + "시간": "13:46:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2194, + "역명": "두실", + "시간": "16:20:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1231, + "역명": "두실", + "시간": "16:42:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 33, + "열번": 2258, + "역명": "두실", + "시간": "19:17:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 34, + "열번": 8904, + "역명": "두실", + "시간": "14:25:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1189, + "역명": "두실", + "시간": "14:46:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 34, + "열번": 2216, + "역명": "두실", + "시간": "17:21:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1251, + "역명": "두실", + "시간": "17:41:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 34, + "열번": 2276, + "역명": "두실", + "시간": "20:13:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1297, + "역명": "두실", + "시간": "20:39:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1047, + "역명": "두실", + "시간": "08:04:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2078, + "역명": "두실", + "시간": "10:37:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1107, + "역명": "두실", + "시간": "10:58:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2136, + "역명": "두실", + "시간": "13:31:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1169, + "역명": "두실", + "시간": "13:51:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2196, + "역명": "두실", + "시간": "16:26:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1233, + "역명": "두실", + "시간": "16:47:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2260, + "역명": "두실", + "시간": "19:23:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1283, + "역명": "두실", + "시간": "19:43:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2308, + "역명": "두실", + "시간": "22:20:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1325, + "역명": "두실", + "시간": "22:47:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 36, + "열번": 2226, + "역명": "두실", + "시간": "17:46:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1259, + "역명": "두실", + "시간": "18:09:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 36, + "열번": 2284, + "역명": "두실", + "시간": "20:43:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1303, + "역명": "두실", + "시간": "21:03:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1127, + "역명": "두실", + "시간": "11:56:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2154, + "역명": "두실", + "시간": "14:30:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1191, + "역명": "두실", + "시간": "14:52:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2218, + "역명": "두실", + "시간": "17:26:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1253, + "역명": "두실", + "시간": "17:48:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 37, + "열번": 2278, + "역명": "두실", + "시간": "20:20:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 39, + "열번": 1149, + "역명": "두실", + "시간": "12:56:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2176, + "역명": "두실", + "시간": "15:31:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1213, + "역명": "두실", + "시간": "15:52:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 39, + "열번": 2242, + "역명": "두실", + "시간": "18:29:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 41, + "열번": 1175, + "역명": "두실", + "시간": "14:08:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2202, + "역명": "두실", + "시간": "16:42:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1239, + "역명": "두실", + "시간": "17:04:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2266, + "역명": "두실", + "시간": "19:41:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1289, + "역명": "두실", + "시간": "20:07:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2312, + "역명": "두실", + "시간": "22:40:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1327, + "역명": "두실", + "시간": "22:59:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "구서", + "시간": "06:14:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "구서", + "시간": "06:39:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2050, + "역명": "구서", + "시간": "09:13:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "구서", + "시간": "06:00:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "구서", + "시간": "06:30:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "구서", + "시간": "09:03:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1077, + "역명": "구서", + "시간": "09:30:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2106, + "역명": "구서", + "시간": "11:59:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1137, + "역명": "구서", + "시간": "12:25:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2164, + "역명": "구서", + "시간": "14:56:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1201, + "역명": "구서", + "시간": "15:21:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2230, + "역명": "구서", + "시간": "17:54:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1261, + "역명": "구서", + "시간": "18:18:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2286, + "역명": "구서", + "시간": "20:49:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1305, + "역명": "구서", + "시간": "21:13:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 2, + "열번": 2324, + "역명": "구서", + "시간": "23:42:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "구서", + "시간": "06:27:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "구서", + "시간": "06:57:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2056, + "역명": "구서", + "시간": "09:29:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1085, + "역명": "구서", + "시간": "09:54:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2114, + "역명": "구서", + "시간": "12:23:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1145, + "역명": "구서", + "시간": "12:47:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2172, + "역명": "구서", + "시간": "15:18:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1209, + "역명": "구서", + "시간": "15:43:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2238, + "역명": "구서", + "시간": "18:15:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "구서", + "시간": "06:40:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1023, + "역명": "구서", + "시간": "07:04:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2058, + "역명": "구서", + "시간": "09:35:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1087, + "역명": "구서", + "시간": "10:00:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2116, + "역명": "구서", + "시간": "12:29:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1147, + "역명": "구서", + "시간": "12:53:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2174, + "역명": "구서", + "시간": "15:23:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1211, + "역명": "구서", + "시간": "15:49:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2240, + "역명": "구서", + "시간": "18:21:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1269, + "역명": "구서", + "시간": "18:49:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2294, + "역명": "구서", + "시간": "21:21:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1313, + "역명": "구서", + "시간": "21:47:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2330, + "역명": "구서", + "시간": "00:23:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 5, + "열번": 1001, + "역명": "구서", + "시간": "05:15:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2018, + "역명": "구서", + "시간": "07:48:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1051, + "역명": "구서", + "시간": "08:16:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2082, + "역명": "구서", + "시간": "10:47:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1111, + "역명": "구서", + "시간": "11:12:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2140, + "역명": "구서", + "시간": "13:41:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1173, + "역명": "구서", + "시간": "14:04:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2200, + "역명": "구서", + "시간": "16:35:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1237, + "역명": "구서", + "시간": "17:00:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2264, + "역명": "구서", + "시간": "19:33:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1287, + "역명": "구서", + "시간": "20:01:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2310, + "역명": "구서", + "시간": "22:28:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2008, + "역명": "구서", + "시간": "06:52:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1027, + "역명": "구서", + "시간": "07:16:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2062, + "역명": "구서", + "시간": "09:47:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1091, + "역명": "구서", + "시간": "10:12:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2120, + "역명": "구서", + "시간": "12:41:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1153, + "역명": "구서", + "시간": "13:09:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2180, + "역명": "구서", + "시간": "15:40:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1217, + "역명": "구서", + "시간": "16:05:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2246, + "역명": "구서", + "시간": "18:39:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1273, + "역명": "구서", + "시간": "19:05:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2298, + "역명": "구서", + "시간": "21:37:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1317, + "역명": "구서", + "시간": "22:07:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1003, + "역명": "구서", + "시간": "05:25:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2020, + "역명": "구서", + "시간": "07:56:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1053, + "역명": "구서", + "시간": "08:21:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2084, + "역명": "구서", + "시간": "10:53:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1113, + "역명": "구서", + "시간": "11:18:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2142, + "역명": "구서", + "시간": "13:47:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1177, + "역명": "구서", + "시간": "14:15:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2204, + "역명": "구서", + "시간": "16:46:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1241, + "역명": "구서", + "시간": "17:12:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2268, + "역명": "구서", + "시간": "19:45:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1291, + "역명": "구서", + "시간": "20:17:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2314, + "역명": "구서", + "시간": "22:48:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 7, + "열번": 1329, + "역명": "구서", + "시간": "23:13:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2010, + "역명": "구서", + "시간": "07:04:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1033, + "역명": "구서", + "시간": "07:31:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2066, + "역명": "구서", + "시간": "09:59:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1095, + "역명": "구서", + "시간": "10:24:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2124, + "역명": "구서", + "시간": "12:53:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1157, + "역명": "구서", + "시간": "13:20:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2184, + "역명": "구서", + "시간": "15:51:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1221, + "역명": "구서", + "시간": "16:16:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2248, + "역명": "구서", + "시간": "18:45:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1275, + "역명": "구서", + "시간": "19:13:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 8, + "열번": 2300, + "역명": "구서", + "시간": "21:45:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 9, + "열번": 2022, + "역명": "구서", + "시간": "08:02:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1055, + "역명": "구서", + "시간": "08:26:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2086, + "역명": "구서", + "시간": "10:59:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1115, + "역명": "구서", + "시간": "11:24:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2144, + "역명": "구서", + "시간": "13:53:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1179, + "역명": "구서", + "시간": "14:21:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2206, + "역명": "구서", + "시간": "16:51:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1243, + "역명": "구서", + "시간": "17:18:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 9, + "열번": 2270, + "역명": "구서", + "시간": "19:51:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2012, + "역명": "구서", + "시간": "07:16:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1039, + "역명": "구서", + "시간": "07:46:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2072, + "역명": "구서", + "시간": "10:17:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1101, + "역명": "구서", + "시간": "10:42:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2130, + "역명": "구서", + "시간": "13:11:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1163, + "역명": "구서", + "시간": "13:37:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2190, + "역명": "구서", + "시간": "16:07:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1227, + "역명": "구서", + "시간": "16:33:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2254, + "역명": "구서", + "시간": "19:03:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1279, + "역명": "구서", + "시간": "19:29:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2304, + "역명": "구서", + "시간": "22:01:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1321, + "역명": "구서", + "시간": "22:27:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 11, + "열번": 1005, + "역명": "구서", + "시간": "05:36:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2024, + "역명": "구서", + "시간": "08:08:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1057, + "역명": "구서", + "시간": "08:31:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2088, + "역명": "구서", + "시간": "11:05:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1117, + "역명": "구서", + "시간": "11:30:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2146, + "역명": "구서", + "시간": "13:59:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1181, + "역명": "구서", + "시간": "14:26:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2208, + "역명": "구서", + "시간": "16:57:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1245, + "역명": "구서", + "시간": "17:24:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2272, + "역명": "구서", + "시간": "19:57:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1293, + "역명": "구서", + "시간": "20:25:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2316, + "역명": "구서", + "시간": "22:58:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 11, + "열번": 1331, + "역명": "구서", + "시간": "23:23:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2014, + "역명": "구서", + "시간": "07:28:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1043, + "역명": "구서", + "시간": "07:56:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2074, + "역명": "구서", + "시간": "10:23:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1103, + "역명": "구서", + "시간": "10:48:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2132, + "역명": "구서", + "시간": "13:17:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1165, + "역명": "구서", + "시간": "13:42:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "구서", + "시간": "16:13:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1229, + "역명": "구서", + "시간": "16:38:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2256, + "역명": "구서", + "시간": "19:09:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1281, + "역명": "구서", + "시간": "19:37:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2306, + "역명": "구서", + "시간": "22:09:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1323, + "역명": "구서", + "시간": "22:38:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1009, + "역명": "구서", + "시간": "05:58:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2032, + "역명": "구서", + "시간": "08:28:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1065, + "역명": "구서", + "시간": "08:54:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2094, + "역명": "구서", + "시간": "11:23:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1123, + "역명": "구서", + "시간": "11:47:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2152, + "역명": "구서", + "시간": "14:17:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1187, + "역명": "구서", + "시간": "14:43:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 13, + "열번": 2214, + "역명": "구서", + "시간": "17:13:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2016, + "역명": "구서", + "시간": "07:39:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1049, + "역명": "구서", + "시간": "08:11:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2080, + "역명": "구서", + "시간": "10:41:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1109, + "역명": "구서", + "시간": "11:06:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2138, + "역명": "구서", + "시간": "13:35:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1171, + "역명": "구서", + "시간": "13:59:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2198, + "역명": "구서", + "시간": "16:29:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1235, + "역명": "구서", + "시간": "16:55:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2262, + "역명": "구서", + "시간": "19:27:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1285, + "역명": "구서", + "시간": "19:53:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1011, + "역명": "구서", + "시간": "06:09:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2036, + "역명": "구서", + "시간": "08:38:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1069, + "역명": "구서", + "시간": "09:06:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2098, + "역명": "구서", + "시간": "11:35:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1129, + "역명": "구서", + "시간": "12:03:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2156, + "역명": "구서", + "시간": "14:34:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1193, + "역명": "구서", + "시간": "14:59:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2220, + "역명": "구서", + "시간": "17:29:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1255, + "역명": "구서", + "시간": "17:57:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2280, + "역명": "구서", + "시간": "20:25:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1299, + "역명": "구서", + "시간": "20:49:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2320, + "역명": "구서", + "시간": "23:18:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2026, + "역명": "구서", + "시간": "08:13:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 16, + "열번": 1059, + "역명": "구서", + "시간": "08:36:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2038, + "역명": "구서", + "시간": "08:43:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 18, + "열번": 1007, + "역명": "구서", + "시간": "05:47:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2028, + "역명": "구서", + "시간": "08:18:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1061, + "역명": "구서", + "시간": "08:42:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2090, + "역명": "구서", + "시간": "11:11:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1119, + "역명": "구서", + "시간": "11:36:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2148, + "역명": "구서", + "시간": "14:05:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1183, + "역명": "구서", + "시간": "14:32:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2210, + "역명": "구서", + "시간": "17:02:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1247, + "역명": "구서", + "시간": "17:30:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2040, + "역명": "구서", + "시간": "08:48:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1071, + "역명": "구서", + "시간": "09:12:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2100, + "역명": "구서", + "시간": "11:41:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1131, + "역명": "구서", + "시간": "12:09:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2158, + "역명": "구서", + "시간": "14:39:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1195, + "역명": "구서", + "시간": "15:05:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2222, + "역명": "구서", + "시간": "17:34:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2030, + "역명": "구서", + "시간": "08:23:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1063, + "역명": "구서", + "시간": "08:48:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2092, + "역명": "구서", + "시간": "11:17:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1121, + "역명": "구서", + "시간": "11:41:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2150, + "역명": "구서", + "시간": "14:11:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1185, + "역명": "구서", + "시간": "14:37:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2212, + "역명": "구서", + "시간": "17:08:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1249, + "역명": "구서", + "시간": "17:36:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2274, + "역명": "구서", + "시간": "20:04:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1295, + "역명": "구서", + "시간": "20:33:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2318, + "역명": "구서", + "시간": "23:08:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 20, + "열번": 7931, + "역명": "구서", + "시간": "23:38:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 21, + "열번": 1013, + "역명": "구서", + "시간": "06:20:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2042, + "역명": "구서", + "시간": "08:53:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1073, + "역명": "구서", + "시간": "09:18:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2102, + "역명": "구서", + "시간": "11:47:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1133, + "역명": "구서", + "시간": "12:14:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2160, + "역명": "구서", + "시간": "14:45:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1197, + "역명": "구서", + "시간": "15:10:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2224, + "역명": "구서", + "시간": "17:39:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1257, + "역명": "구서", + "시간": "18:04:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2282, + "역명": "구서", + "시간": "20:33:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1301, + "역명": "구서", + "시간": "20:57:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2322, + "역명": "구서", + "시간": "23:30:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2034, + "역명": "구서", + "시간": "08:33:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1067, + "역명": "구서", + "시간": "09:00:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2096, + "역명": "구서", + "시간": "11:29:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1125, + "역명": "구서", + "시간": "11:52:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2044, + "역명": "구서", + "시간": "08:58:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1075, + "역명": "구서", + "시간": "09:24:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2104, + "역명": "구서", + "시간": "11:53:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1135, + "역명": "구서", + "시간": "12:20:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2162, + "역명": "구서", + "시간": "14:50:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1199, + "역명": "구서", + "시간": "15:16:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2228, + "역명": "구서", + "시간": "17:49:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "구서", + "시간": "09:08:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1079, + "역명": "구서", + "시간": "09:36:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2108, + "역명": "구서", + "시간": "12:05:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1139, + "역명": "구서", + "시간": "12:31:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2166, + "역명": "구서", + "시간": "15:01:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1203, + "역명": "구서", + "시간": "15:27:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2232, + "역명": "구서", + "시간": "17:59:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1263, + "역명": "구서", + "시간": "18:25:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2288, + "역명": "구서", + "시간": "20:57:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1307, + "역명": "구서", + "시간": "21:21:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 24, + "열번": 2326, + "역명": "구서", + "시간": "23:54:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "구서", + "시간": "06:48:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2054, + "역명": "구서", + "시간": "09:23:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1083, + "역명": "구서", + "시간": "09:48:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2112, + "역명": "구서", + "시간": "12:17:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1143, + "역명": "구서", + "시간": "12:42:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2170, + "역명": "구서", + "시간": "15:12:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1207, + "역명": "구서", + "시간": "15:38:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2236, + "역명": "구서", + "시간": "18:09:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1267, + "역명": "구서", + "시간": "18:41:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2292, + "역명": "구서", + "시간": "21:13:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1311, + "역명": "구서", + "시간": "21:37:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2328, + "역명": "구서", + "시간": "00:06:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2052, + "역명": "구서", + "시간": "09:18:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1081, + "역명": "구서", + "시간": "09:42:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2110, + "역명": "구서", + "시간": "12:11:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1141, + "역명": "구서", + "시간": "12:36:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2168, + "역명": "구서", + "시간": "15:07:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1205, + "역명": "구서", + "시간": "15:32:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2234, + "역명": "구서", + "시간": "18:04:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1265, + "역명": "구서", + "시간": "18:33:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2290, + "역명": "구서", + "시간": "21:05:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1309, + "역명": "구서", + "시간": "21:29:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1025, + "역명": "구서", + "시간": "07:11:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2060, + "역명": "구서", + "시간": "09:41:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1089, + "역명": "구서", + "시간": "10:06:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2118, + "역명": "구서", + "시간": "12:35:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1151, + "역명": "구서", + "시간": "13:04:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2178, + "역명": "구서", + "시간": "15:34:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1215, + "역명": "구서", + "시간": "16:00:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2244, + "역명": "구서", + "시간": "18:33:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1271, + "역명": "구서", + "시간": "18:57:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2296, + "역명": "구서", + "시간": "21:29:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 27, + "열번": 1315, + "역명": "구서", + "시간": "21:57:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 28, + "열번": 1029, + "역명": "구서", + "시간": "07:21:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2064, + "역명": "구서", + "시간": "09:53:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1093, + "역명": "구서", + "시간": "10:18:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2122, + "역명": "구서", + "시간": "12:47:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1155, + "역명": "구서", + "시간": "13:15:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2182, + "역명": "구서", + "시간": "15:45:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1219, + "역명": "구서", + "시간": "16:11:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1035, + "역명": "구서", + "시간": "07:36:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2068, + "역명": "구서", + "시간": "10:05:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1097, + "역명": "구서", + "시간": "10:30:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2126, + "역명": "구서", + "시간": "12:59:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1159, + "역명": "구서", + "시간": "13:26:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2186, + "역명": "구서", + "시간": "15:56:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1223, + "역명": "구서", + "시간": "16:22:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 29, + "열번": 2250, + "역명": "구서", + "시간": "18:51:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1031, + "역명": "구서", + "시간": "07:26:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1037, + "역명": "구서", + "시간": "07:41:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2070, + "역명": "구서", + "시간": "10:11:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1099, + "역명": "구서", + "시간": "10:36:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2128, + "역명": "구서", + "시간": "13:05:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1161, + "역명": "구서", + "시간": "13:31:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2188, + "역명": "구서", + "시간": "16:02:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1225, + "역명": "구서", + "시간": "16:27:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2252, + "역명": "구서", + "시간": "18:57:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1277, + "역명": "구서", + "시간": "19:21:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2302, + "역명": "구서", + "시간": "21:53:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1319, + "역명": "구서", + "시간": "22:17:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 32, + "열번": 1041, + "역명": "구서", + "시간": "07:51:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1045, + "역명": "구서", + "시간": "08:01:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2076, + "역명": "구서", + "시간": "10:29:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1105, + "역명": "구서", + "시간": "10:54:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2134, + "역명": "구서", + "시간": "13:23:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1167, + "역명": "구서", + "시간": "13:48:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2194, + "역명": "구서", + "시간": "16:18:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1231, + "역명": "구서", + "시간": "16:44:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 33, + "열번": 2258, + "역명": "구서", + "시간": "19:15:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 34, + "열번": 8904, + "역명": "구서", + "시간": "14:23:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1189, + "역명": "구서", + "시간": "14:48:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 34, + "열번": 2216, + "역명": "구서", + "시간": "17:19:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1251, + "역명": "구서", + "시간": "17:43:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 34, + "열번": 2276, + "역명": "구서", + "시간": "20:11:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1297, + "역명": "구서", + "시간": "20:41:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1047, + "역명": "구서", + "시간": "08:06:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2078, + "역명": "구서", + "시간": "10:35:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1107, + "역명": "구서", + "시간": "11:00:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2136, + "역명": "구서", + "시간": "13:29:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1169, + "역명": "구서", + "시간": "13:53:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2196, + "역명": "구서", + "시간": "16:24:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1233, + "역명": "구서", + "시간": "16:49:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2260, + "역명": "구서", + "시간": "19:21:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1283, + "역명": "구서", + "시간": "19:45:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2308, + "역명": "구서", + "시간": "22:18:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1325, + "역명": "구서", + "시간": "22:49:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 36, + "열번": 2226, + "역명": "구서", + "시간": "17:44:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1259, + "역명": "구서", + "시간": "18:11:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 36, + "열번": 2284, + "역명": "구서", + "시간": "20:41:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1303, + "역명": "구서", + "시간": "21:05:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1127, + "역명": "구서", + "시간": "11:58:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2154, + "역명": "구서", + "시간": "14:28:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1191, + "역명": "구서", + "시간": "14:54:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2218, + "역명": "구서", + "시간": "17:24:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1253, + "역명": "구서", + "시간": "17:50:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 37, + "열번": 2278, + "역명": "구서", + "시간": "20:18:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 39, + "열번": 1149, + "역명": "구서", + "시간": "12:58:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2176, + "역명": "구서", + "시간": "15:29:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1213, + "역명": "구서", + "시간": "15:54:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 39, + "열번": 2242, + "역명": "구서", + "시간": "18:27:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 41, + "열번": 1175, + "역명": "구서", + "시간": "14:10:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2202, + "역명": "구서", + "시간": "16:40:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1239, + "역명": "구서", + "시간": "17:06:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2266, + "역명": "구서", + "시간": "19:39:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1289, + "역명": "구서", + "시간": "20:09:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2312, + "역명": "구서", + "시간": "22:38:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1327, + "역명": "구서", + "시간": "23:01:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "장전", + "시간": "06:12:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "장전", + "시간": "06:41:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2050, + "역명": "장전", + "시간": "09:11:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "장전", + "시간": "05:58:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "장전", + "시간": "06:32:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "장전", + "시간": "09:01:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1077, + "역명": "장전", + "시간": "09:32:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2106, + "역명": "장전", + "시간": "11:57:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1137, + "역명": "장전", + "시간": "12:27:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2164, + "역명": "장전", + "시간": "14:54:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1201, + "역명": "장전", + "시간": "15:23:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2230, + "역명": "장전", + "시간": "17:52:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1261, + "역명": "장전", + "시간": "18:20:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2286, + "역명": "장전", + "시간": "20:47:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1305, + "역명": "장전", + "시간": "21:15:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 2, + "열번": 2324, + "역명": "장전", + "시간": "23:40:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "장전", + "시간": "06:25:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "장전", + "시간": "06:59:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2056, + "역명": "장전", + "시간": "09:27:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1085, + "역명": "장전", + "시간": "09:56:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2114, + "역명": "장전", + "시간": "12:21:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1145, + "역명": "장전", + "시간": "12:49:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2172, + "역명": "장전", + "시간": "15:16:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1209, + "역명": "장전", + "시간": "15:45:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2238, + "역명": "장전", + "시간": "18:13:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "장전", + "시간": "06:38:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1023, + "역명": "장전", + "시간": "07:06:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2058, + "역명": "장전", + "시간": "09:33:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1087, + "역명": "장전", + "시간": "10:02:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2116, + "역명": "장전", + "시간": "12:27:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1147, + "역명": "장전", + "시간": "12:55:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2174, + "역명": "장전", + "시간": "15:21:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1211, + "역명": "장전", + "시간": "15:51:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2240, + "역명": "장전", + "시간": "18:19:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1269, + "역명": "장전", + "시간": "18:51:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2294, + "역명": "장전", + "시간": "21:19:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1313, + "역명": "장전", + "시간": "21:49:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2330, + "역명": "장전", + "시간": "00:21:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 5, + "열번": 1001, + "역명": "장전", + "시간": "05:17:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2018, + "역명": "장전", + "시간": "07:46:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1051, + "역명": "장전", + "시간": "08:18:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2082, + "역명": "장전", + "시간": "10:45:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1111, + "역명": "장전", + "시간": "11:14:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2140, + "역명": "장전", + "시간": "13:39:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1173, + "역명": "장전", + "시간": "14:06:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2200, + "역명": "장전", + "시간": "16:33:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1237, + "역명": "장전", + "시간": "17:02:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2264, + "역명": "장전", + "시간": "19:31:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1287, + "역명": "장전", + "시간": "20:03:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2310, + "역명": "장전", + "시간": "22:26:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2008, + "역명": "장전", + "시간": "06:50:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1027, + "역명": "장전", + "시간": "07:18:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2062, + "역명": "장전", + "시간": "09:45:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1091, + "역명": "장전", + "시간": "10:14:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2120, + "역명": "장전", + "시간": "12:39:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1153, + "역명": "장전", + "시간": "13:11:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2180, + "역명": "장전", + "시간": "15:38:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1217, + "역명": "장전", + "시간": "16:07:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2246, + "역명": "장전", + "시간": "18:37:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1273, + "역명": "장전", + "시간": "19:07:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2298, + "역명": "장전", + "시간": "21:35:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1317, + "역명": "장전", + "시간": "22:09:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1003, + "역명": "장전", + "시간": "05:27:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2020, + "역명": "장전", + "시간": "07:54:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1053, + "역명": "장전", + "시간": "08:23:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2084, + "역명": "장전", + "시간": "10:51:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1113, + "역명": "장전", + "시간": "11:20:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2142, + "역명": "장전", + "시간": "13:45:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1177, + "역명": "장전", + "시간": "14:17:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2204, + "역명": "장전", + "시간": "16:44:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1241, + "역명": "장전", + "시간": "17:14:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2268, + "역명": "장전", + "시간": "19:43:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1291, + "역명": "장전", + "시간": "20:19:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2314, + "역명": "장전", + "시간": "22:46:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 7, + "열번": 1329, + "역명": "장전", + "시간": "23:15:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2010, + "역명": "장전", + "시간": "07:02:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1033, + "역명": "장전", + "시간": "07:33:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2066, + "역명": "장전", + "시간": "09:57:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1095, + "역명": "장전", + "시간": "10:26:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2124, + "역명": "장전", + "시간": "12:51:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1157, + "역명": "장전", + "시간": "13:22:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2184, + "역명": "장전", + "시간": "15:49:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1221, + "역명": "장전", + "시간": "16:18:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2248, + "역명": "장전", + "시간": "18:43:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1275, + "역명": "장전", + "시간": "19:15:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 8, + "열번": 2300, + "역명": "장전", + "시간": "21:43:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 9, + "열번": 2022, + "역명": "장전", + "시간": "08:00:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1055, + "역명": "장전", + "시간": "08:28:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2086, + "역명": "장전", + "시간": "10:57:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1115, + "역명": "장전", + "시간": "11:26:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2144, + "역명": "장전", + "시간": "13:51:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1179, + "역명": "장전", + "시간": "14:23:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2206, + "역명": "장전", + "시간": "16:49:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1243, + "역명": "장전", + "시간": "17:20:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 9, + "열번": 2270, + "역명": "장전", + "시간": "19:49:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2012, + "역명": "장전", + "시간": "07:14:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1039, + "역명": "장전", + "시간": "07:48:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2072, + "역명": "장전", + "시간": "10:15:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1101, + "역명": "장전", + "시간": "10:44:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2130, + "역명": "장전", + "시간": "13:09:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1163, + "역명": "장전", + "시간": "13:39:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2190, + "역명": "장전", + "시간": "16:05:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1227, + "역명": "장전", + "시간": "16:35:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2254, + "역명": "장전", + "시간": "19:01:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1279, + "역명": "장전", + "시간": "19:31:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2304, + "역명": "장전", + "시간": "21:59:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1321, + "역명": "장전", + "시간": "22:29:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 11, + "열번": 1005, + "역명": "장전", + "시간": "05:38:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2024, + "역명": "장전", + "시간": "08:06:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1057, + "역명": "장전", + "시간": "08:33:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2088, + "역명": "장전", + "시간": "11:03:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1117, + "역명": "장전", + "시간": "11:32:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2146, + "역명": "장전", + "시간": "13:57:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1181, + "역명": "장전", + "시간": "14:28:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2208, + "역명": "장전", + "시간": "16:55:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1245, + "역명": "장전", + "시간": "17:26:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2272, + "역명": "장전", + "시간": "19:55:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1293, + "역명": "장전", + "시간": "20:27:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2316, + "역명": "장전", + "시간": "22:56:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 11, + "열번": 1331, + "역명": "장전", + "시간": "23:25:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2014, + "역명": "장전", + "시간": "07:26:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1043, + "역명": "장전", + "시간": "07:58:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2074, + "역명": "장전", + "시간": "10:21:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1103, + "역명": "장전", + "시간": "10:50:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2132, + "역명": "장전", + "시간": "13:15:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1165, + "역명": "장전", + "시간": "13:44:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "장전", + "시간": "16:11:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1229, + "역명": "장전", + "시간": "16:40:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2256, + "역명": "장전", + "시간": "19:07:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1281, + "역명": "장전", + "시간": "19:39:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2306, + "역명": "장전", + "시간": "22:07:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1323, + "역명": "장전", + "시간": "22:40:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1009, + "역명": "장전", + "시간": "06:00:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2032, + "역명": "장전", + "시간": "08:26:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1065, + "역명": "장전", + "시간": "08:56:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2094, + "역명": "장전", + "시간": "11:21:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1123, + "역명": "장전", + "시간": "11:49:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2152, + "역명": "장전", + "시간": "14:15:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1187, + "역명": "장전", + "시간": "14:45:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 13, + "열번": 2214, + "역명": "장전", + "시간": "17:11:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2016, + "역명": "장전", + "시간": "07:37:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1049, + "역명": "장전", + "시간": "08:13:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2080, + "역명": "장전", + "시간": "10:39:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1109, + "역명": "장전", + "시간": "11:08:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2138, + "역명": "장전", + "시간": "13:33:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1171, + "역명": "장전", + "시간": "14:01:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2198, + "역명": "장전", + "시간": "16:27:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1235, + "역명": "장전", + "시간": "16:57:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2262, + "역명": "장전", + "시간": "19:25:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1285, + "역명": "장전", + "시간": "19:55:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1011, + "역명": "장전", + "시간": "06:11:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2036, + "역명": "장전", + "시간": "08:36:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1069, + "역명": "장전", + "시간": "09:08:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2098, + "역명": "장전", + "시간": "11:33:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1129, + "역명": "장전", + "시간": "12:05:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2156, + "역명": "장전", + "시간": "14:32:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1193, + "역명": "장전", + "시간": "15:01:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2220, + "역명": "장전", + "시간": "17:27:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1255, + "역명": "장전", + "시간": "17:59:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2280, + "역명": "장전", + "시간": "20:23:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1299, + "역명": "장전", + "시간": "20:51:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2320, + "역명": "장전", + "시간": "23:16:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2026, + "역명": "장전", + "시간": "08:11:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 16, + "열번": 1059, + "역명": "장전", + "시간": "08:38:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2038, + "역명": "장전", + "시간": "08:41:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 18, + "열번": 1007, + "역명": "장전", + "시간": "05:49:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2028, + "역명": "장전", + "시간": "08:16:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1061, + "역명": "장전", + "시간": "08:44:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2090, + "역명": "장전", + "시간": "11:09:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1119, + "역명": "장전", + "시간": "11:38:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2148, + "역명": "장전", + "시간": "14:03:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1183, + "역명": "장전", + "시간": "14:34:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2210, + "역명": "장전", + "시간": "17:00:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1247, + "역명": "장전", + "시간": "17:32:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2040, + "역명": "장전", + "시간": "08:46:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1071, + "역명": "장전", + "시간": "09:14:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2100, + "역명": "장전", + "시간": "11:39:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1131, + "역명": "장전", + "시간": "12:11:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2158, + "역명": "장전", + "시간": "14:37:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1195, + "역명": "장전", + "시간": "15:07:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2222, + "역명": "장전", + "시간": "17:32:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2030, + "역명": "장전", + "시간": "08:21:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1063, + "역명": "장전", + "시간": "08:50:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2092, + "역명": "장전", + "시간": "11:15:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1121, + "역명": "장전", + "시간": "11:43:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2150, + "역명": "장전", + "시간": "14:09:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1185, + "역명": "장전", + "시간": "14:39:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2212, + "역명": "장전", + "시간": "17:06:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1249, + "역명": "장전", + "시간": "17:38:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2274, + "역명": "장전", + "시간": "20:02:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1295, + "역명": "장전", + "시간": "20:35:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2318, + "역명": "장전", + "시간": "23:06:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 20, + "열번": 7931, + "역명": "장전", + "시간": "23:40:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 21, + "열번": 1013, + "역명": "장전", + "시간": "06:22:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2042, + "역명": "장전", + "시간": "08:51:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1073, + "역명": "장전", + "시간": "09:20:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2102, + "역명": "장전", + "시간": "11:45:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1133, + "역명": "장전", + "시간": "12:16:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2160, + "역명": "장전", + "시간": "14:43:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1197, + "역명": "장전", + "시간": "15:12:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2224, + "역명": "장전", + "시간": "17:37:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1257, + "역명": "장전", + "시간": "18:06:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2282, + "역명": "장전", + "시간": "20:31:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1301, + "역명": "장전", + "시간": "20:59:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2322, + "역명": "장전", + "시간": "23:28:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2034, + "역명": "장전", + "시간": "08:31:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1067, + "역명": "장전", + "시간": "09:02:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2096, + "역명": "장전", + "시간": "11:27:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1125, + "역명": "장전", + "시간": "11:54:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2044, + "역명": "장전", + "시간": "08:56:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1075, + "역명": "장전", + "시간": "09:26:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2104, + "역명": "장전", + "시간": "11:51:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1135, + "역명": "장전", + "시간": "12:22:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2162, + "역명": "장전", + "시간": "14:48:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1199, + "역명": "장전", + "시간": "15:18:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2228, + "역명": "장전", + "시간": "17:47:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "장전", + "시간": "09:06:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1079, + "역명": "장전", + "시간": "09:38:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2108, + "역명": "장전", + "시간": "12:03:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1139, + "역명": "장전", + "시간": "12:33:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2166, + "역명": "장전", + "시간": "14:59:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1203, + "역명": "장전", + "시간": "15:29:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2232, + "역명": "장전", + "시간": "17:57:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1263, + "역명": "장전", + "시간": "18:27:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2288, + "역명": "장전", + "시간": "20:55:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1307, + "역명": "장전", + "시간": "21:23:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 24, + "열번": 2326, + "역명": "장전", + "시간": "23:52:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "장전", + "시간": "06:50:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2054, + "역명": "장전", + "시간": "09:21:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1083, + "역명": "장전", + "시간": "09:50:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2112, + "역명": "장전", + "시간": "12:15:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1143, + "역명": "장전", + "시간": "12:44:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2170, + "역명": "장전", + "시간": "15:10:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1207, + "역명": "장전", + "시간": "15:40:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2236, + "역명": "장전", + "시간": "18:07:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1267, + "역명": "장전", + "시간": "18:43:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2292, + "역명": "장전", + "시간": "21:11:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1311, + "역명": "장전", + "시간": "21:39:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2328, + "역명": "장전", + "시간": "00:04:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2052, + "역명": "장전", + "시간": "09:16:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1081, + "역명": "장전", + "시간": "09:44:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2110, + "역명": "장전", + "시간": "12:09:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1141, + "역명": "장전", + "시간": "12:38:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2168, + "역명": "장전", + "시간": "15:05:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1205, + "역명": "장전", + "시간": "15:34:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2234, + "역명": "장전", + "시간": "18:02:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1265, + "역명": "장전", + "시간": "18:35:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2290, + "역명": "장전", + "시간": "21:03:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1309, + "역명": "장전", + "시간": "21:31:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1025, + "역명": "장전", + "시간": "07:13:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2060, + "역명": "장전", + "시간": "09:39:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1089, + "역명": "장전", + "시간": "10:08:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2118, + "역명": "장전", + "시간": "12:33:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1151, + "역명": "장전", + "시간": "13:06:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2178, + "역명": "장전", + "시간": "15:32:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1215, + "역명": "장전", + "시간": "16:02:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2244, + "역명": "장전", + "시간": "18:31:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1271, + "역명": "장전", + "시간": "18:59:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2296, + "역명": "장전", + "시간": "21:27:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 27, + "열번": 1315, + "역명": "장전", + "시간": "21:59:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 28, + "열번": 1029, + "역명": "장전", + "시간": "07:23:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2064, + "역명": "장전", + "시간": "09:51:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1093, + "역명": "장전", + "시간": "10:20:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2122, + "역명": "장전", + "시간": "12:45:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1155, + "역명": "장전", + "시간": "13:17:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2182, + "역명": "장전", + "시간": "15:43:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1219, + "역명": "장전", + "시간": "16:13:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1035, + "역명": "장전", + "시간": "07:38:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2068, + "역명": "장전", + "시간": "10:03:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1097, + "역명": "장전", + "시간": "10:32:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2126, + "역명": "장전", + "시간": "12:57:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1159, + "역명": "장전", + "시간": "13:28:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2186, + "역명": "장전", + "시간": "15:54:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1223, + "역명": "장전", + "시간": "16:24:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 29, + "열번": 2250, + "역명": "장전", + "시간": "18:49:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1031, + "역명": "장전", + "시간": "07:28:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1037, + "역명": "장전", + "시간": "07:43:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2070, + "역명": "장전", + "시간": "10:09:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1099, + "역명": "장전", + "시간": "10:38:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2128, + "역명": "장전", + "시간": "13:03:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1161, + "역명": "장전", + "시간": "13:33:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2188, + "역명": "장전", + "시간": "16:00:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1225, + "역명": "장전", + "시간": "16:29:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2252, + "역명": "장전", + "시간": "18:55:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1277, + "역명": "장전", + "시간": "19:23:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2302, + "역명": "장전", + "시간": "21:51:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1319, + "역명": "장전", + "시간": "22:19:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 32, + "열번": 1041, + "역명": "장전", + "시간": "07:53:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1045, + "역명": "장전", + "시간": "08:03:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2076, + "역명": "장전", + "시간": "10:27:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1105, + "역명": "장전", + "시간": "10:56:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2134, + "역명": "장전", + "시간": "13:21:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1167, + "역명": "장전", + "시간": "13:50:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2194, + "역명": "장전", + "시간": "16:16:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1231, + "역명": "장전", + "시간": "16:46:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 33, + "열번": 2258, + "역명": "장전", + "시간": "19:13:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 34, + "열번": 8904, + "역명": "장전", + "시간": "14:21:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1189, + "역명": "장전", + "시간": "14:50:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 34, + "열번": 2216, + "역명": "장전", + "시간": "17:17:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1251, + "역명": "장전", + "시간": "17:45:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 34, + "열번": 2276, + "역명": "장전", + "시간": "20:09:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1297, + "역명": "장전", + "시간": "20:43:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1047, + "역명": "장전", + "시간": "08:08:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2078, + "역명": "장전", + "시간": "10:33:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1107, + "역명": "장전", + "시간": "11:02:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2136, + "역명": "장전", + "시간": "13:27:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1169, + "역명": "장전", + "시간": "13:55:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2196, + "역명": "장전", + "시간": "16:22:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1233, + "역명": "장전", + "시간": "16:51:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2260, + "역명": "장전", + "시간": "19:19:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1283, + "역명": "장전", + "시간": "19:47:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2308, + "역명": "장전", + "시간": "22:16:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1325, + "역명": "장전", + "시간": "22:51:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 36, + "열번": 2226, + "역명": "장전", + "시간": "17:42:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1259, + "역명": "장전", + "시간": "18:13:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 36, + "열번": 2284, + "역명": "장전", + "시간": "20:39:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1303, + "역명": "장전", + "시간": "21:07:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1127, + "역명": "장전", + "시간": "12:00:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2154, + "역명": "장전", + "시간": "14:26:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1191, + "역명": "장전", + "시간": "14:56:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2218, + "역명": "장전", + "시간": "17:22:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1253, + "역명": "장전", + "시간": "17:52:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 37, + "열번": 2278, + "역명": "장전", + "시간": "20:16:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 39, + "열번": 1149, + "역명": "장전", + "시간": "13:00:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2176, + "역명": "장전", + "시간": "15:27:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1213, + "역명": "장전", + "시간": "15:56:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 39, + "열번": 2242, + "역명": "장전", + "시간": "18:25:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 41, + "열번": 1175, + "역명": "장전", + "시간": "14:12:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2202, + "역명": "장전", + "시간": "16:38:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1239, + "역명": "장전", + "시간": "17:08:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2266, + "역명": "장전", + "시간": "19:37:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1289, + "역명": "장전", + "시간": "20:11:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2312, + "역명": "장전", + "시간": "22:36:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1327, + "역명": "장전", + "시간": "23:03:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "부산대학앞", + "시간": "06:10:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "부산대학앞", + "시간": "06:43:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2050, + "역명": "부산대학앞", + "시간": "09:10:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "부산대학앞", + "시간": "05:56:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "부산대학앞", + "시간": "06:34:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "부산대학앞", + "시간": "09:00:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1077, + "역명": "부산대학앞", + "시간": "09:33:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2106, + "역명": "부산대학앞", + "시간": "11:56:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1137, + "역명": "부산대학앞", + "시간": "12:29:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2164, + "역명": "부산대학앞", + "시간": "14:52:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1201, + "역명": "부산대학앞", + "시간": "15:25:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2230, + "역명": "부산대학앞", + "시간": "17:51:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1261, + "역명": "부산대학앞", + "시간": "18:21:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2286, + "역명": "부산대학앞", + "시간": "20:46:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1305, + "역명": "부산대학앞", + "시간": "21:16:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 2, + "열번": 2324, + "역명": "부산대학앞", + "시간": "23:39:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "부산대학앞", + "시간": "06:24:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "부산대학앞", + "시간": "07:01:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2056, + "역명": "부산대학앞", + "시간": "09:26:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1085, + "역명": "부산대학앞", + "시간": "09:57:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2114, + "역명": "부산대학앞", + "시간": "12:20:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1145, + "역명": "부산대학앞", + "시간": "12:51:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2172, + "역명": "부산대학앞", + "시간": "15:14:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1209, + "역명": "부산대학앞", + "시간": "15:47:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2238, + "역명": "부산대학앞", + "시간": "18:12:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "부산대학앞", + "시간": "06:36:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1023, + "역명": "부산대학앞", + "시간": "07:08:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2058, + "역명": "부산대학앞", + "시간": "09:32:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1087, + "역명": "부산대학앞", + "시간": "10:03:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2116, + "역명": "부산대학앞", + "시간": "12:26:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1147, + "역명": "부산대학앞", + "시간": "12:56:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2174, + "역명": "부산대학앞", + "시간": "15:20:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1211, + "역명": "부산대학앞", + "시간": "15:52:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2240, + "역명": "부산대학앞", + "시간": "18:18:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1269, + "역명": "부산대학앞", + "시간": "18:52:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2294, + "역명": "부산대학앞", + "시간": "21:18:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1313, + "역명": "부산대학앞", + "시간": "21:50:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2330, + "역명": "부산대학앞", + "시간": "00:19:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 5, + "열번": 1001, + "역명": "부산대학앞", + "시간": "05:19:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2018, + "역명": "부산대학앞", + "시간": "07:44:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1051, + "역명": "부산대학앞", + "시간": "08:19:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2082, + "역명": "부산대학앞", + "시간": "10:44:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1111, + "역명": "부산대학앞", + "시간": "11:15:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2140, + "역명": "부산대학앞", + "시간": "13:38:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1173, + "역명": "부산대학앞", + "시간": "14:08:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2200, + "역명": "부산대학앞", + "시간": "16:31:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1237, + "역명": "부산대학앞", + "시간": "17:04:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2264, + "역명": "부산대학앞", + "시간": "19:30:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1287, + "역명": "부산대학앞", + "시간": "20:04:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2310, + "역명": "부산대학앞", + "시간": "22:25:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2008, + "역명": "부산대학앞", + "시간": "06:48:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1027, + "역명": "부산대학앞", + "시간": "07:19:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2062, + "역명": "부산대학앞", + "시간": "09:44:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1091, + "역명": "부산대학앞", + "시간": "10:15:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2120, + "역명": "부산대학앞", + "시간": "12:38:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1153, + "역명": "부산대학앞", + "시간": "13:13:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2180, + "역명": "부산대학앞", + "시간": "15:36:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1217, + "역명": "부산대학앞", + "시간": "16:09:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2246, + "역명": "부산대학앞", + "시간": "18:36:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1273, + "역명": "부산대학앞", + "시간": "19:08:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2298, + "역명": "부산대학앞", + "시간": "21:34:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1317, + "역명": "부산대학앞", + "시간": "22:10:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1003, + "역명": "부산대학앞", + "시간": "05:29:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2020, + "역명": "부산대학앞", + "시간": "07:53:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1053, + "역명": "부산대학앞", + "시간": "08:24:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2084, + "역명": "부산대학앞", + "시간": "10:50:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1113, + "역명": "부산대학앞", + "시간": "11:21:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2142, + "역명": "부산대학앞", + "시간": "13:44:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1177, + "역명": "부산대학앞", + "시간": "14:19:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2204, + "역명": "부산대학앞", + "시간": "16:42:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1241, + "역명": "부산대학앞", + "시간": "17:15:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2268, + "역명": "부산대학앞", + "시간": "19:42:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1291, + "역명": "부산대학앞", + "시간": "20:20:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2314, + "역명": "부산대학앞", + "시간": "22:45:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 7, + "열번": 1329, + "역명": "부산대학앞", + "시간": "23:16:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2010, + "역명": "부산대학앞", + "시간": "07:00:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1033, + "역명": "부산대학앞", + "시간": "07:34:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2066, + "역명": "부산대학앞", + "시간": "09:56:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1095, + "역명": "부산대학앞", + "시간": "10:27:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2124, + "역명": "부산대학앞", + "시간": "12:50:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1157, + "역명": "부산대학앞", + "시간": "13:24:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2184, + "역명": "부산대학앞", + "시간": "15:47:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1221, + "역명": "부산대학앞", + "시간": "16:20:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2248, + "역명": "부산대학앞", + "시간": "18:42:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1275, + "역명": "부산대학앞", + "시간": "19:16:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 8, + "열번": 2300, + "역명": "부산대학앞", + "시간": "21:42:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 9, + "열번": 2022, + "역명": "부산대학앞", + "시간": "07:59:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1055, + "역명": "부산대학앞", + "시간": "08:29:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2086, + "역명": "부산대학앞", + "시간": "10:56:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1115, + "역명": "부산대학앞", + "시간": "11:27:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2144, + "역명": "부산대학앞", + "시간": "13:50:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1179, + "역명": "부산대학앞", + "시간": "14:24:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2206, + "역명": "부산대학앞", + "시간": "16:48:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1243, + "역명": "부산대학앞", + "시간": "17:21:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 9, + "열번": 2270, + "역명": "부산대학앞", + "시간": "19:48:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2012, + "역명": "부산대학앞", + "시간": "07:12:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1039, + "역명": "부산대학앞", + "시간": "07:49:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2072, + "역명": "부산대학앞", + "시간": "10:14:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1101, + "역명": "부산대학앞", + "시간": "10:45:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2130, + "역명": "부산대학앞", + "시간": "13:08:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1163, + "역명": "부산대학앞", + "시간": "13:40:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2190, + "역명": "부산대학앞", + "시간": "16:04:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1227, + "역명": "부산대학앞", + "시간": "16:36:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2254, + "역명": "부산대학앞", + "시간": "19:00:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1279, + "역명": "부산대학앞", + "시간": "19:32:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2304, + "역명": "부산대학앞", + "시간": "21:58:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1321, + "역명": "부산대학앞", + "시간": "22:30:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 11, + "열번": 1005, + "역명": "부산대학앞", + "시간": "05:40:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2024, + "역명": "부산대학앞", + "시간": "08:05:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1057, + "역명": "부산대학앞", + "시간": "08:34:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2088, + "역명": "부산대학앞", + "시간": "11:02:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1117, + "역명": "부산대학앞", + "시간": "11:33:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2146, + "역명": "부산대학앞", + "시간": "13:56:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1181, + "역명": "부산대학앞", + "시간": "14:30:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2208, + "역명": "부산대학앞", + "시간": "16:53:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1245, + "역명": "부산대학앞", + "시간": "17:27:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2272, + "역명": "부산대학앞", + "시간": "19:54:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1293, + "역명": "부산대학앞", + "시간": "20:28:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2316, + "역명": "부산대학앞", + "시간": "22:55:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 11, + "열번": 1331, + "역명": "부산대학앞", + "시간": "23:27:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2014, + "역명": "부산대학앞", + "시간": "07:24:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1043, + "역명": "부산대학앞", + "시간": "07:59:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2074, + "역명": "부산대학앞", + "시간": "10:20:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1103, + "역명": "부산대학앞", + "시간": "10:51:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2132, + "역명": "부산대학앞", + "시간": "13:14:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1165, + "역명": "부산대학앞", + "시간": "13:46:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "부산대학앞", + "시간": "16:09:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1229, + "역명": "부산대학앞", + "시간": "16:42:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2256, + "역명": "부산대학앞", + "시간": "19:06:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1281, + "역명": "부산대학앞", + "시간": "19:40:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2306, + "역명": "부산대학앞", + "시간": "22:06:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1323, + "역명": "부산대학앞", + "시간": "22:41:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1009, + "역명": "부산대학앞", + "시간": "06:02:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2032, + "역명": "부산대학앞", + "시간": "08:25:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1065, + "역명": "부산대학앞", + "시간": "08:57:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2094, + "역명": "부산대학앞", + "시간": "11:20:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1123, + "역명": "부산대학앞", + "시간": "11:50:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2152, + "역명": "부산대학앞", + "시간": "14:14:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1187, + "역명": "부산대학앞", + "시간": "14:46:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 13, + "열번": 2214, + "역명": "부산대학앞", + "시간": "17:10:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2016, + "역명": "부산대학앞", + "시간": "07:35:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1049, + "역명": "부산대학앞", + "시간": "08:14:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2080, + "역명": "부산대학앞", + "시간": "10:38:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1109, + "역명": "부산대학앞", + "시간": "11:09:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2138, + "역명": "부산대학앞", + "시간": "13:32:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1171, + "역명": "부산대학앞", + "시간": "14:02:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2198, + "역명": "부산대학앞", + "시간": "16:26:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1235, + "역명": "부산대학앞", + "시간": "16:58:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2262, + "역명": "부산대학앞", + "시간": "19:24:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1285, + "역명": "부산대학앞", + "시간": "19:56:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1011, + "역명": "부산대학앞", + "시간": "06:13:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2036, + "역명": "부산대학앞", + "시간": "08:35:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1069, + "역명": "부산대학앞", + "시간": "09:09:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2098, + "역명": "부산대학앞", + "시간": "11:32:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1129, + "역명": "부산대학앞", + "시간": "12:07:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2156, + "역명": "부산대학앞", + "시간": "14:30:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1193, + "역명": "부산대학앞", + "시간": "15:03:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2220, + "역명": "부산대학앞", + "시간": "17:26:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1255, + "역명": "부산대학앞", + "시간": "18:00:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2280, + "역명": "부산대학앞", + "시간": "20:22:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1299, + "역명": "부산대학앞", + "시간": "20:52:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2320, + "역명": "부산대학앞", + "시간": "23:15:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2026, + "역명": "부산대학앞", + "시간": "08:10:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 16, + "열번": 1059, + "역명": "부산대학앞", + "시간": "08:39:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2038, + "역명": "부산대학앞", + "시간": "08:40:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 18, + "열번": 1007, + "역명": "부산대학앞", + "시간": "05:51:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2028, + "역명": "부산대학앞", + "시간": "08:15:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1061, + "역명": "부산대학앞", + "시간": "08:45:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2090, + "역명": "부산대학앞", + "시간": "11:08:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1119, + "역명": "부산대학앞", + "시간": "11:39:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2148, + "역명": "부산대학앞", + "시간": "14:02:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1183, + "역명": "부산대학앞", + "시간": "14:35:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2210, + "역명": "부산대학앞", + "시간": "16:59:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1247, + "역명": "부산대학앞", + "시간": "17:33:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2040, + "역명": "부산대학앞", + "시간": "08:45:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1071, + "역명": "부산대학앞", + "시간": "09:15:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2100, + "역명": "부산대학앞", + "시간": "11:38:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1131, + "역명": "부산대학앞", + "시간": "12:12:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2158, + "역명": "부산대학앞", + "시간": "14:36:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1195, + "역명": "부산대학앞", + "시간": "15:08:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2222, + "역명": "부산대학앞", + "시간": "17:31:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2030, + "역명": "부산대학앞", + "시간": "08:20:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1063, + "역명": "부산대학앞", + "시간": "08:51:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2092, + "역명": "부산대학앞", + "시간": "11:14:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1121, + "역명": "부산대학앞", + "시간": "11:45:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2150, + "역명": "부산대학앞", + "시간": "14:08:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1185, + "역명": "부산대학앞", + "시간": "14:41:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2212, + "역명": "부산대학앞", + "시간": "17:04:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1249, + "역명": "부산대학앞", + "시간": "17:39:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2274, + "역명": "부산대학앞", + "시간": "20:01:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1295, + "역명": "부산대학앞", + "시간": "20:36:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2318, + "역명": "부산대학앞", + "시간": "23:05:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 20, + "열번": 7931, + "역명": "부산대학앞", + "시간": "23:42:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 21, + "열번": 1013, + "역명": "부산대학앞", + "시간": "06:24:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2042, + "역명": "부산대학앞", + "시간": "08:50:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1073, + "역명": "부산대학앞", + "시간": "09:21:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2102, + "역명": "부산대학앞", + "시간": "11:44:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1133, + "역명": "부산대학앞", + "시간": "12:18:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2160, + "역명": "부산대학앞", + "시간": "14:41:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1197, + "역명": "부산대학앞", + "시간": "15:14:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2224, + "역명": "부산대학앞", + "시간": "17:36:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1257, + "역명": "부산대학앞", + "시간": "18:07:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2282, + "역명": "부산대학앞", + "시간": "20:30:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1301, + "역명": "부산대학앞", + "시간": "21:00:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2322, + "역명": "부산대학앞", + "시간": "23:27:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2034, + "역명": "부산대학앞", + "시간": "08:30:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1067, + "역명": "부산대학앞", + "시간": "09:03:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2096, + "역명": "부산대학앞", + "시간": "11:26:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1125, + "역명": "부산대학앞", + "시간": "11:56:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2044, + "역명": "부산대학앞", + "시간": "08:55:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1075, + "역명": "부산대학앞", + "시간": "09:27:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2104, + "역명": "부산대학앞", + "시간": "11:50:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1135, + "역명": "부산대학앞", + "시간": "12:23:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2162, + "역명": "부산대학앞", + "시간": "14:47:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1199, + "역명": "부산대학앞", + "시간": "15:19:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2228, + "역명": "부산대학앞", + "시간": "17:46:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "부산대학앞", + "시간": "09:05:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1079, + "역명": "부산대학앞", + "시간": "09:39:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2108, + "역명": "부산대학앞", + "시간": "12:02:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1139, + "역명": "부산대학앞", + "시간": "12:34:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2166, + "역명": "부산대학앞", + "시간": "14:58:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1203, + "역명": "부산대학앞", + "시간": "15:30:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2232, + "역명": "부산대학앞", + "시간": "17:56:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1263, + "역명": "부산대학앞", + "시간": "18:28:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2288, + "역명": "부산대학앞", + "시간": "20:54:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1307, + "역명": "부산대학앞", + "시간": "21:24:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 24, + "열번": 2326, + "역명": "부산대학앞", + "시간": "23:51:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "부산대학앞", + "시간": "06:52:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2054, + "역명": "부산대학앞", + "시간": "09:20:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1083, + "역명": "부산대학앞", + "시간": "09:51:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2112, + "역명": "부산대학앞", + "시간": "12:14:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1143, + "역명": "부산대학앞", + "시간": "12:45:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2170, + "역명": "부산대학앞", + "시간": "15:09:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1207, + "역명": "부산대학앞", + "시간": "15:41:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2236, + "역명": "부산대학앞", + "시간": "18:06:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1267, + "역명": "부산대학앞", + "시간": "18:44:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2292, + "역명": "부산대학앞", + "시간": "21:10:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1311, + "역명": "부산대학앞", + "시간": "21:40:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2328, + "역명": "부산대학앞", + "시간": "00:02:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2052, + "역명": "부산대학앞", + "시간": "09:15:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1081, + "역명": "부산대학앞", + "시간": "09:45:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2110, + "역명": "부산대학앞", + "시간": "12:08:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1141, + "역명": "부산대학앞", + "시간": "12:40:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2168, + "역명": "부산대학앞", + "시간": "15:03:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1205, + "역명": "부산대학앞", + "시간": "15:36:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2234, + "역명": "부산대학앞", + "시간": "18:01:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1265, + "역명": "부산대학앞", + "시간": "18:36:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2290, + "역명": "부산대학앞", + "시간": "21:02:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1309, + "역명": "부산대학앞", + "시간": "21:32:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1025, + "역명": "부산대학앞", + "시간": "07:14:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2060, + "역명": "부산대학앞", + "시간": "09:38:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1089, + "역명": "부산대학앞", + "시간": "10:09:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2118, + "역명": "부산대학앞", + "시간": "12:32:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1151, + "역명": "부산대학앞", + "시간": "13:07:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2178, + "역명": "부산대학앞", + "시간": "15:31:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1215, + "역명": "부산대학앞", + "시간": "16:03:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2244, + "역명": "부산대학앞", + "시간": "18:30:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1271, + "역명": "부산대학앞", + "시간": "19:00:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2296, + "역명": "부산대학앞", + "시간": "21:26:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 27, + "열번": 1315, + "역명": "부산대학앞", + "시간": "22:00:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 28, + "열번": 1029, + "역명": "부산대학앞", + "시간": "07:24:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2064, + "역명": "부산대학앞", + "시간": "09:50:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1093, + "역명": "부산대학앞", + "시간": "10:21:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2122, + "역명": "부산대학앞", + "시간": "12:44:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1155, + "역명": "부산대학앞", + "시간": "13:18:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2182, + "역명": "부산대학앞", + "시간": "15:42:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1219, + "역명": "부산대학앞", + "시간": "16:14:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1035, + "역명": "부산대학앞", + "시간": "07:39:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2068, + "역명": "부산대학앞", + "시간": "10:02:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1097, + "역명": "부산대학앞", + "시간": "10:33:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2126, + "역명": "부산대학앞", + "시간": "12:56:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1159, + "역명": "부산대학앞", + "시간": "13:29:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2186, + "역명": "부산대학앞", + "시간": "15:53:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1223, + "역명": "부산대학앞", + "시간": "16:25:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 29, + "열번": 2250, + "역명": "부산대학앞", + "시간": "18:48:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1031, + "역명": "부산대학앞", + "시간": "07:29:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1037, + "역명": "부산대학앞", + "시간": "07:44:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2070, + "역명": "부산대학앞", + "시간": "10:08:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1099, + "역명": "부산대학앞", + "시간": "10:39:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2128, + "역명": "부산대학앞", + "시간": "13:02:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1161, + "역명": "부산대학앞", + "시간": "13:35:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2188, + "역명": "부산대학앞", + "시간": "15:58:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1225, + "역명": "부산대학앞", + "시간": "16:31:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2252, + "역명": "부산대학앞", + "시간": "18:54:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1277, + "역명": "부산대학앞", + "시간": "19:24:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2302, + "역명": "부산대학앞", + "시간": "21:50:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1319, + "역명": "부산대학앞", + "시간": "22:20:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 32, + "열번": 1041, + "역명": "부산대학앞", + "시간": "07:54:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1045, + "역명": "부산대학앞", + "시간": "08:04:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2076, + "역명": "부산대학앞", + "시간": "10:26:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1105, + "역명": "부산대학앞", + "시간": "10:57:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2134, + "역명": "부산대학앞", + "시간": "13:20:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1167, + "역명": "부산대학앞", + "시간": "13:51:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2194, + "역명": "부산대학앞", + "시간": "16:15:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1231, + "역명": "부산대학앞", + "시간": "16:47:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 33, + "열번": 2258, + "역명": "부산대학앞", + "시간": "19:12:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 34, + "열번": 8904, + "역명": "부산대학앞", + "시간": "14:19:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1189, + "역명": "부산대학앞", + "시간": "14:52:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 34, + "열번": 2216, + "역명": "부산대학앞", + "시간": "17:15:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1251, + "역명": "부산대학앞", + "시간": "17:46:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 34, + "열번": 2276, + "역명": "부산대학앞", + "시간": "20:08:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1297, + "역명": "부산대학앞", + "시간": "20:44:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1047, + "역명": "부산대학앞", + "시간": "08:09:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2078, + "역명": "부산대학앞", + "시간": "10:32:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1107, + "역명": "부산대학앞", + "시간": "11:03:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2136, + "역명": "부산대학앞", + "시간": "13:26:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1169, + "역명": "부산대학앞", + "시간": "13:57:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2196, + "역명": "부산대학앞", + "시간": "16:20:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1233, + "역명": "부산대학앞", + "시간": "16:53:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2260, + "역명": "부산대학앞", + "시간": "19:18:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1283, + "역명": "부산대학앞", + "시간": "19:48:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2308, + "역명": "부산대학앞", + "시간": "22:15:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1325, + "역명": "부산대학앞", + "시간": "22:52:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 36, + "열번": 2226, + "역명": "부산대학앞", + "시간": "17:41:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1259, + "역명": "부산대학앞", + "시간": "18:14:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 36, + "열번": 2284, + "역명": "부산대학앞", + "시간": "20:38:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1303, + "역명": "부산대학앞", + "시간": "21:08:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1127, + "역명": "부산대학앞", + "시간": "12:01:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2154, + "역명": "부산대학앞", + "시간": "14:25:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1191, + "역명": "부산대학앞", + "시간": "14:57:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2218, + "역명": "부산대학앞", + "시간": "17:21:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1253, + "역명": "부산대학앞", + "시간": "17:53:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 37, + "열번": 2278, + "역명": "부산대학앞", + "시간": "20:15:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 39, + "열번": 1149, + "역명": "부산대학앞", + "시간": "13:02:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2176, + "역명": "부산대학앞", + "시간": "15:25:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1213, + "역명": "부산대학앞", + "시간": "15:58:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 39, + "열번": 2242, + "역명": "부산대학앞", + "시간": "18:24:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 41, + "열번": 1175, + "역명": "부산대학앞", + "시간": "14:13:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2202, + "역명": "부산대학앞", + "시간": "16:37:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1239, + "역명": "부산대학앞", + "시간": "17:09:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2266, + "역명": "부산대학앞", + "시간": "19:36:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1289, + "역명": "부산대학앞", + "시간": "20:12:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2312, + "역명": "부산대학앞", + "시간": "22:35:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1327, + "역명": "부산대학앞", + "시간": "23:04:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "온천장", + "시간": "06:08:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "온천장", + "시간": "06:45:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2050, + "역명": "온천장", + "시간": "09:08:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "온천장", + "시간": "05:54:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "온천장", + "시간": "06:36:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "온천장", + "시간": "08:58:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1077, + "역명": "온천장", + "시간": "09:35:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2106, + "역명": "온천장", + "시간": "11:54:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1137, + "역명": "온천장", + "시간": "12:31:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2164, + "역명": "온천장", + "시간": "14:50:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1201, + "역명": "온천장", + "시간": "15:27:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2230, + "역명": "온천장", + "시간": "17:49:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1261, + "역명": "온천장", + "시간": "18:23:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2286, + "역명": "온천장", + "시간": "20:44:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1305, + "역명": "온천장", + "시간": "21:18:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 2, + "열번": 2324, + "역명": "온천장", + "시간": "23:37:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "온천장", + "시간": "06:22:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "온천장", + "시간": "07:03:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2056, + "역명": "온천장", + "시간": "09:24:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1085, + "역명": "온천장", + "시간": "09:59:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2114, + "역명": "온천장", + "시간": "12:18:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1145, + "역명": "온천장", + "시간": "12:53:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2172, + "역명": "온천장", + "시간": "15:12:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1209, + "역명": "온천장", + "시간": "15:49:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2238, + "역명": "온천장", + "시간": "18:10:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "온천장", + "시간": "06:34:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1023, + "역명": "온천장", + "시간": "07:10:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2058, + "역명": "온천장", + "시간": "09:30:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1087, + "역명": "온천장", + "시간": "10:05:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2116, + "역명": "온천장", + "시간": "12:24:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1147, + "역명": "온천장", + "시간": "12:58:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2174, + "역명": "온천장", + "시간": "15:18:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1211, + "역명": "온천장", + "시간": "15:54:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2240, + "역명": "온천장", + "시간": "18:16:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1269, + "역명": "온천장", + "시간": "18:54:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2294, + "역명": "온천장", + "시간": "21:16:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1313, + "역명": "온천장", + "시간": "21:52:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2330, + "역명": "온천장", + "시간": "00:17:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 5, + "열번": 1001, + "역명": "온천장", + "시간": "05:21:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2018, + "역명": "온천장", + "시간": "07:42:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1051, + "역명": "온천장", + "시간": "08:21:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2082, + "역명": "온천장", + "시간": "10:42:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1111, + "역명": "온천장", + "시간": "11:17:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2140, + "역명": "온천장", + "시간": "13:36:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1173, + "역명": "온천장", + "시간": "14:10:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2200, + "역명": "온천장", + "시간": "16:29:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1237, + "역명": "온천장", + "시간": "17:06:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2264, + "역명": "온천장", + "시간": "19:28:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1287, + "역명": "온천장", + "시간": "20:06:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2310, + "역명": "온천장", + "시간": "22:23:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2008, + "역명": "온천장", + "시간": "06:46:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1027, + "역명": "온천장", + "시간": "07:21:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2062, + "역명": "온천장", + "시간": "09:42:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1091, + "역명": "온천장", + "시간": "10:17:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2120, + "역명": "온천장", + "시간": "12:36:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1153, + "역명": "온천장", + "시간": "13:15:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2180, + "역명": "온천장", + "시간": "15:34:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1217, + "역명": "온천장", + "시간": "16:11:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2246, + "역명": "온천장", + "시간": "18:34:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1273, + "역명": "온천장", + "시간": "19:10:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2298, + "역명": "온천장", + "시간": "21:32:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1317, + "역명": "온천장", + "시간": "22:12:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1003, + "역명": "온천장", + "시간": "05:31:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2020, + "역명": "온천장", + "시간": "07:51:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1053, + "역명": "온천장", + "시간": "08:26:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2084, + "역명": "온천장", + "시간": "10:48:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1113, + "역명": "온천장", + "시간": "11:23:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2142, + "역명": "온천장", + "시간": "13:42:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1177, + "역명": "온천장", + "시간": "14:21:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2204, + "역명": "온천장", + "시간": "16:40:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1241, + "역명": "온천장", + "시간": "17:17:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2268, + "역명": "온천장", + "시간": "19:40:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1291, + "역명": "온천장", + "시간": "20:22:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2314, + "역명": "온천장", + "시간": "22:43:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 7, + "열번": 1329, + "역명": "온천장", + "시간": "23:18:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2010, + "역명": "온천장", + "시간": "06:58:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1033, + "역명": "온천장", + "시간": "07:36:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2066, + "역명": "온천장", + "시간": "09:54:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1095, + "역명": "온천장", + "시간": "10:29:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2124, + "역명": "온천장", + "시간": "12:48:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1157, + "역명": "온천장", + "시간": "13:26:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2184, + "역명": "온천장", + "시간": "15:45:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1221, + "역명": "온천장", + "시간": "16:22:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2248, + "역명": "온천장", + "시간": "18:40:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1275, + "역명": "온천장", + "시간": "19:18:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 8, + "열번": 2300, + "역명": "온천장", + "시간": "21:40:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 9, + "열번": 2022, + "역명": "온천장", + "시간": "07:57:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1055, + "역명": "온천장", + "시간": "08:31:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2086, + "역명": "온천장", + "시간": "10:54:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1115, + "역명": "온천장", + "시간": "11:29:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2144, + "역명": "온천장", + "시간": "13:48:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1179, + "역명": "온천장", + "시간": "14:26:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2206, + "역명": "온천장", + "시간": "16:46:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1243, + "역명": "온천장", + "시간": "17:23:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 9, + "열번": 2270, + "역명": "온천장", + "시간": "19:46:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2012, + "역명": "온천장", + "시간": "07:10:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1039, + "역명": "온천장", + "시간": "07:51:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2072, + "역명": "온천장", + "시간": "10:12:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1101, + "역명": "온천장", + "시간": "10:47:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2130, + "역명": "온천장", + "시간": "13:06:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1163, + "역명": "온천장", + "시간": "13:42:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2190, + "역명": "온천장", + "시간": "16:02:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1227, + "역명": "온천장", + "시간": "16:38:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2254, + "역명": "온천장", + "시간": "18:58:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1279, + "역명": "온천장", + "시간": "19:34:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2304, + "역명": "온천장", + "시간": "21:56:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1321, + "역명": "온천장", + "시간": "22:32:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 11, + "열번": 1005, + "역명": "온천장", + "시간": "05:42:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2024, + "역명": "온천장", + "시간": "08:03:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1057, + "역명": "온천장", + "시간": "08:36:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2088, + "역명": "온천장", + "시간": "11:00:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1117, + "역명": "온천장", + "시간": "11:35:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2146, + "역명": "온천장", + "시간": "13:54:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1181, + "역명": "온천장", + "시간": "14:32:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2208, + "역명": "온천장", + "시간": "16:51:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1245, + "역명": "온천장", + "시간": "17:29:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2272, + "역명": "온천장", + "시간": "19:52:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1293, + "역명": "온천장", + "시간": "20:30:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2316, + "역명": "온천장", + "시간": "22:53:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 11, + "열번": 1331, + "역명": "온천장", + "시간": "23:29:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2014, + "역명": "온천장", + "시간": "07:22:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1043, + "역명": "온천장", + "시간": "08:01:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2074, + "역명": "온천장", + "시간": "10:18:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1103, + "역명": "온천장", + "시간": "10:53:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2132, + "역명": "온천장", + "시간": "13:12:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1165, + "역명": "온천장", + "시간": "13:48:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "온천장", + "시간": "16:07:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1229, + "역명": "온천장", + "시간": "16:44:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2256, + "역명": "온천장", + "시간": "19:04:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1281, + "역명": "온천장", + "시간": "19:42:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2306, + "역명": "온천장", + "시간": "22:04:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1323, + "역명": "온천장", + "시간": "22:43:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1009, + "역명": "온천장", + "시간": "06:04:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2032, + "역명": "온천장", + "시간": "08:23:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1065, + "역명": "온천장", + "시간": "08:59:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2094, + "역명": "온천장", + "시간": "11:18:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1123, + "역명": "온천장", + "시간": "11:52:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2152, + "역명": "온천장", + "시간": "14:12:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1187, + "역명": "온천장", + "시간": "14:48:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 13, + "열번": 2214, + "역명": "온천장", + "시간": "17:08:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2016, + "역명": "온천장", + "시간": "07:33:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1049, + "역명": "온천장", + "시간": "08:16:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2080, + "역명": "온천장", + "시간": "10:36:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1109, + "역명": "온천장", + "시간": "11:11:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2138, + "역명": "온천장", + "시간": "13:30:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1171, + "역명": "온천장", + "시간": "14:04:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2198, + "역명": "온천장", + "시간": "16:24:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1235, + "역명": "온천장", + "시간": "17:00:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2262, + "역명": "온천장", + "시간": "19:22:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1285, + "역명": "온천장", + "시간": "19:58:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1011, + "역명": "온천장", + "시간": "06:15:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2036, + "역명": "온천장", + "시간": "08:33:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1069, + "역명": "온천장", + "시간": "09:11:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2098, + "역명": "온천장", + "시간": "11:30:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1129, + "역명": "온천장", + "시간": "12:09:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2156, + "역명": "온천장", + "시간": "14:28:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1193, + "역명": "온천장", + "시간": "15:05:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2220, + "역명": "온천장", + "시간": "17:24:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1255, + "역명": "온천장", + "시간": "18:02:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2280, + "역명": "온천장", + "시간": "20:20:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1299, + "역명": "온천장", + "시간": "20:54:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2320, + "역명": "온천장", + "시간": "23:13:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2026, + "역명": "온천장", + "시간": "08:08:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 16, + "열번": 1059, + "역명": "온천장", + "시간": "08:41:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2038, + "역명": "온천장", + "시간": "08:38:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 18, + "열번": 1007, + "역명": "온천장", + "시간": "05:53:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2028, + "역명": "온천장", + "시간": "08:13:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1061, + "역명": "온천장", + "시간": "08:47:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2090, + "역명": "온천장", + "시간": "11:06:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1119, + "역명": "온천장", + "시간": "11:41:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2148, + "역명": "온천장", + "시간": "14:00:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1183, + "역명": "온천장", + "시간": "14:37:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2210, + "역명": "온천장", + "시간": "16:57:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1247, + "역명": "온천장", + "시간": "17:35:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2040, + "역명": "온천장", + "시간": "08:43:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1071, + "역명": "온천장", + "시간": "09:17:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2100, + "역명": "온천장", + "시간": "11:36:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1131, + "역명": "온천장", + "시간": "12:14:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2158, + "역명": "온천장", + "시간": "14:34:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1195, + "역명": "온천장", + "시간": "15:10:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2222, + "역명": "온천장", + "시간": "17:29:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2030, + "역명": "온천장", + "시간": "08:18:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1063, + "역명": "온천장", + "시간": "08:53:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2092, + "역명": "온천장", + "시간": "11:12:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1121, + "역명": "온천장", + "시간": "11:47:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2150, + "역명": "온천장", + "시간": "14:06:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1185, + "역명": "온천장", + "시간": "14:43:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2212, + "역명": "온천장", + "시간": "17:02:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1249, + "역명": "온천장", + "시간": "17:41:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2274, + "역명": "온천장", + "시간": "19:59:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1295, + "역명": "온천장", + "시간": "20:38:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2318, + "역명": "온천장", + "시간": "23:03:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 20, + "열번": 7931, + "역명": "온천장", + "시간": "23:44:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 21, + "열번": 1013, + "역명": "온천장", + "시간": "06:26:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2042, + "역명": "온천장", + "시간": "08:48:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1073, + "역명": "온천장", + "시간": "09:23:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2102, + "역명": "온천장", + "시간": "11:42:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1133, + "역명": "온천장", + "시간": "12:20:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2160, + "역명": "온천장", + "시간": "14:39:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1197, + "역명": "온천장", + "시간": "15:16:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2224, + "역명": "온천장", + "시간": "17:34:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1257, + "역명": "온천장", + "시간": "18:09:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2282, + "역명": "온천장", + "시간": "20:28:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1301, + "역명": "온천장", + "시간": "21:02:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2322, + "역명": "온천장", + "시간": "23:25:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2034, + "역명": "온천장", + "시간": "08:28:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1067, + "역명": "온천장", + "시간": "09:05:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2096, + "역명": "온천장", + "시간": "11:24:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1125, + "역명": "온천장", + "시간": "11:58:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2044, + "역명": "온천장", + "시간": "08:53:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1075, + "역명": "온천장", + "시간": "09:29:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2104, + "역명": "온천장", + "시간": "11:48:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1135, + "역명": "온천장", + "시간": "12:25:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2162, + "역명": "온천장", + "시간": "14:45:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1199, + "역명": "온천장", + "시간": "15:21:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2228, + "역명": "온천장", + "시간": "17:44:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "온천장", + "시간": "09:03:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1079, + "역명": "온천장", + "시간": "09:41:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2108, + "역명": "온천장", + "시간": "12:00:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1139, + "역명": "온천장", + "시간": "12:36:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2166, + "역명": "온천장", + "시간": "14:56:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1203, + "역명": "온천장", + "시간": "15:32:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2232, + "역명": "온천장", + "시간": "17:54:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1263, + "역명": "온천장", + "시간": "18:30:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2288, + "역명": "온천장", + "시간": "20:52:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1307, + "역명": "온천장", + "시간": "21:26:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 24, + "열번": 2326, + "역명": "온천장", + "시간": "23:49:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "온천장", + "시간": "06:54:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2054, + "역명": "온천장", + "시간": "09:18:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1083, + "역명": "온천장", + "시간": "09:53:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2112, + "역명": "온천장", + "시간": "12:12:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1143, + "역명": "온천장", + "시간": "12:47:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2170, + "역명": "온천장", + "시간": "15:07:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1207, + "역명": "온천장", + "시간": "15:43:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2236, + "역명": "온천장", + "시간": "18:04:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1267, + "역명": "온천장", + "시간": "18:46:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2292, + "역명": "온천장", + "시간": "21:08:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1311, + "역명": "온천장", + "시간": "21:42:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2328, + "역명": "온천장", + "시간": "00:00:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2052, + "역명": "온천장", + "시간": "09:13:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1081, + "역명": "온천장", + "시간": "09:47:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2110, + "역명": "온천장", + "시간": "12:06:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1141, + "역명": "온천장", + "시간": "12:42:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2168, + "역명": "온천장", + "시간": "15:01:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1205, + "역명": "온천장", + "시간": "15:38:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2234, + "역명": "온천장", + "시간": "17:59:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1265, + "역명": "온천장", + "시간": "18:38:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2290, + "역명": "온천장", + "시간": "21:00:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1309, + "역명": "온천장", + "시간": "21:34:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1025, + "역명": "온천장", + "시간": "07:16:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2060, + "역명": "온천장", + "시간": "09:36:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1089, + "역명": "온천장", + "시간": "10:11:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2118, + "역명": "온천장", + "시간": "12:30:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1151, + "역명": "온천장", + "시간": "13:09:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2178, + "역명": "온천장", + "시간": "15:29:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1215, + "역명": "온천장", + "시간": "16:05:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2244, + "역명": "온천장", + "시간": "18:28:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1271, + "역명": "온천장", + "시간": "19:02:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2296, + "역명": "온천장", + "시간": "21:24:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 27, + "열번": 1315, + "역명": "온천장", + "시간": "22:02:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 28, + "열번": 1029, + "역명": "온천장", + "시간": "07:26:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2064, + "역명": "온천장", + "시간": "09:48:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1093, + "역명": "온천장", + "시간": "10:23:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2122, + "역명": "온천장", + "시간": "12:42:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1155, + "역명": "온천장", + "시간": "13:20:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2182, + "역명": "온천장", + "시간": "15:40:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1219, + "역명": "온천장", + "시간": "16:16:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1035, + "역명": "온천장", + "시간": "07:41:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2068, + "역명": "온천장", + "시간": "10:00:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1097, + "역명": "온천장", + "시간": "10:35:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2126, + "역명": "온천장", + "시간": "12:54:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1159, + "역명": "온천장", + "시간": "13:31:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2186, + "역명": "온천장", + "시간": "15:51:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1223, + "역명": "온천장", + "시간": "16:27:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 29, + "열번": 2250, + "역명": "온천장", + "시간": "18:46:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1031, + "역명": "온천장", + "시간": "07:31:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1037, + "역명": "온천장", + "시간": "07:46:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2070, + "역명": "온천장", + "시간": "10:06:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1099, + "역명": "온천장", + "시간": "10:41:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2128, + "역명": "온천장", + "시간": "13:00:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1161, + "역명": "온천장", + "시간": "13:37:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2188, + "역명": "온천장", + "시간": "15:56:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1225, + "역명": "온천장", + "시간": "16:33:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2252, + "역명": "온천장", + "시간": "18:52:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1277, + "역명": "온천장", + "시간": "19:26:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2302, + "역명": "온천장", + "시간": "21:48:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1319, + "역명": "온천장", + "시간": "22:22:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 32, + "열번": 1041, + "역명": "온천장", + "시간": "07:56:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1045, + "역명": "온천장", + "시간": "08:06:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2076, + "역명": "온천장", + "시간": "10:24:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1105, + "역명": "온천장", + "시간": "10:59:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2134, + "역명": "온천장", + "시간": "13:18:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1167, + "역명": "온천장", + "시간": "13:53:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2194, + "역명": "온천장", + "시간": "16:13:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1231, + "역명": "온천장", + "시간": "16:49:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 33, + "열번": 2258, + "역명": "온천장", + "시간": "19:10:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 34, + "열번": 8904, + "역명": "온천장", + "시간": "14:17:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1189, + "역명": "온천장", + "시간": "14:54:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 34, + "열번": 2216, + "역명": "온천장", + "시간": "17:13:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1251, + "역명": "온천장", + "시간": "17:48:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 34, + "열번": 2276, + "역명": "온천장", + "시간": "20:06:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1297, + "역명": "온천장", + "시간": "20:46:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1047, + "역명": "온천장", + "시간": "08:11:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2078, + "역명": "온천장", + "시간": "10:30:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1107, + "역명": "온천장", + "시간": "11:05:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2136, + "역명": "온천장", + "시간": "13:24:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1169, + "역명": "온천장", + "시간": "13:59:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2196, + "역명": "온천장", + "시간": "16:18:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1233, + "역명": "온천장", + "시간": "16:55:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2260, + "역명": "온천장", + "시간": "19:16:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1283, + "역명": "온천장", + "시간": "19:50:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2308, + "역명": "온천장", + "시간": "22:13:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1325, + "역명": "온천장", + "시간": "22:54:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 36, + "열번": 2226, + "역명": "온천장", + "시간": "17:39:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1259, + "역명": "온천장", + "시간": "18:16:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 36, + "열번": 2284, + "역명": "온천장", + "시간": "20:36:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1303, + "역명": "온천장", + "시간": "21:10:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1127, + "역명": "온천장", + "시간": "12:03:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2154, + "역명": "온천장", + "시간": "14:23:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1191, + "역명": "온천장", + "시간": "14:59:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2218, + "역명": "온천장", + "시간": "17:19:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1253, + "역명": "온천장", + "시간": "17:55:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 37, + "열번": 2278, + "역명": "온천장", + "시간": "20:13:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 39, + "열번": 1149, + "역명": "온천장", + "시간": "13:04:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2176, + "역명": "온천장", + "시간": "15:23:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1213, + "역명": "온천장", + "시간": "16:00:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 39, + "열번": 2242, + "역명": "온천장", + "시간": "18:22:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 41, + "열번": 1175, + "역명": "온천장", + "시간": "14:15:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2202, + "역명": "온천장", + "시간": "16:35:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1239, + "역명": "온천장", + "시간": "17:11:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2266, + "역명": "온천장", + "시간": "19:34:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1289, + "역명": "온천장", + "시간": "20:14:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2312, + "역명": "온천장", + "시간": "22:33:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1327, + "역명": "온천장", + "시간": "23:06:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "명륜", + "시간": "06:06:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "명륜", + "시간": "06:47:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2050, + "역명": "명륜", + "시간": "09:06:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "명륜", + "시간": "05:52:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "명륜", + "시간": "06:38:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "명륜", + "시간": "08:56:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1077, + "역명": "명륜", + "시간": "09:37:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2106, + "역명": "명륜", + "시간": "11:52:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1137, + "역명": "명륜", + "시간": "12:33:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2164, + "역명": "명륜", + "시간": "14:48:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1201, + "역명": "명륜", + "시간": "15:29:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2230, + "역명": "명륜", + "시간": "17:47:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1261, + "역명": "명륜", + "시간": "18:25:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2286, + "역명": "명륜", + "시간": "20:42:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1305, + "역명": "명륜", + "시간": "21:20:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 2, + "열번": 2324, + "역명": "명륜", + "시간": "23:35:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "명륜", + "시간": "06:20:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "명륜", + "시간": "07:05:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2056, + "역명": "명륜", + "시간": "09:22:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1085, + "역명": "명륜", + "시간": "10:01:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2114, + "역명": "명륜", + "시간": "12:16:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1145, + "역명": "명륜", + "시간": "12:55:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2172, + "역명": "명륜", + "시간": "15:10:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1209, + "역명": "명륜", + "시간": "15:51:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2238, + "역명": "명륜", + "시간": "18:08:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "명륜", + "시간": "06:32:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1023, + "역명": "명륜", + "시간": "07:12:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2058, + "역명": "명륜", + "시간": "09:28:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1087, + "역명": "명륜", + "시간": "10:07:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2116, + "역명": "명륜", + "시간": "12:22:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1147, + "역명": "명륜", + "시간": "13:00:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2174, + "역명": "명륜", + "시간": "15:16:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1211, + "역명": "명륜", + "시간": "15:56:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2240, + "역명": "명륜", + "시간": "18:14:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1269, + "역명": "명륜", + "시간": "18:56:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2294, + "역명": "명륜", + "시간": "21:14:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1313, + "역명": "명륜", + "시간": "21:54:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2330, + "역명": "명륜", + "시간": "00:15:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 5, + "열번": 1001, + "역명": "명륜", + "시간": "05:23:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2018, + "역명": "명륜", + "시간": "07:40:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1051, + "역명": "명륜", + "시간": "08:23:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2082, + "역명": "명륜", + "시간": "10:40:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1111, + "역명": "명륜", + "시간": "11:19:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2140, + "역명": "명륜", + "시간": "13:34:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1173, + "역명": "명륜", + "시간": "14:12:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2200, + "역명": "명륜", + "시간": "16:27:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1237, + "역명": "명륜", + "시간": "17:08:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2264, + "역명": "명륜", + "시간": "19:26:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1287, + "역명": "명륜", + "시간": "20:08:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2310, + "역명": "명륜", + "시간": "22:21:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2008, + "역명": "명륜", + "시간": "06:44:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1027, + "역명": "명륜", + "시간": "07:23:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2062, + "역명": "명륜", + "시간": "09:40:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1091, + "역명": "명륜", + "시간": "10:19:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2120, + "역명": "명륜", + "시간": "12:34:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1153, + "역명": "명륜", + "시간": "13:17:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2180, + "역명": "명륜", + "시간": "15:32:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1217, + "역명": "명륜", + "시간": "16:13:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2246, + "역명": "명륜", + "시간": "18:32:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1273, + "역명": "명륜", + "시간": "19:12:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2298, + "역명": "명륜", + "시간": "21:30:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1317, + "역명": "명륜", + "시간": "22:14:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1003, + "역명": "명륜", + "시간": "05:33:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2020, + "역명": "명륜", + "시간": "07:49:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1053, + "역명": "명륜", + "시간": "08:28:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2084, + "역명": "명륜", + "시간": "10:46:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1113, + "역명": "명륜", + "시간": "11:25:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2142, + "역명": "명륜", + "시간": "13:40:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1177, + "역명": "명륜", + "시간": "14:23:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2204, + "역명": "명륜", + "시간": "16:38:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1241, + "역명": "명륜", + "시간": "17:19:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2268, + "역명": "명륜", + "시간": "19:38:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1291, + "역명": "명륜", + "시간": "20:24:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2314, + "역명": "명륜", + "시간": "22:41:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 7, + "열번": 1329, + "역명": "명륜", + "시간": "23:20:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2010, + "역명": "명륜", + "시간": "06:56:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1033, + "역명": "명륜", + "시간": "07:38:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2066, + "역명": "명륜", + "시간": "09:52:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1095, + "역명": "명륜", + "시간": "10:31:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2124, + "역명": "명륜", + "시간": "12:46:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1157, + "역명": "명륜", + "시간": "13:28:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2184, + "역명": "명륜", + "시간": "15:43:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1221, + "역명": "명륜", + "시간": "16:24:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2248, + "역명": "명륜", + "시간": "18:38:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1275, + "역명": "명륜", + "시간": "19:20:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 8, + "열번": 2300, + "역명": "명륜", + "시간": "21:38:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 9, + "열번": 2022, + "역명": "명륜", + "시간": "07:55:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1055, + "역명": "명륜", + "시간": "08:33:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2086, + "역명": "명륜", + "시간": "10:52:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1115, + "역명": "명륜", + "시간": "11:31:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2144, + "역명": "명륜", + "시간": "13:46:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1179, + "역명": "명륜", + "시간": "14:28:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2206, + "역명": "명륜", + "시간": "16:44:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1243, + "역명": "명륜", + "시간": "17:25:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 9, + "열번": 2270, + "역명": "명륜", + "시간": "19:44:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2012, + "역명": "명륜", + "시간": "07:08:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1039, + "역명": "명륜", + "시간": "07:53:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2072, + "역명": "명륜", + "시간": "10:10:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1101, + "역명": "명륜", + "시간": "10:49:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2130, + "역명": "명륜", + "시간": "13:04:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1163, + "역명": "명륜", + "시간": "13:44:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2190, + "역명": "명륜", + "시간": "16:00:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1227, + "역명": "명륜", + "시간": "16:40:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2254, + "역명": "명륜", + "시간": "18:56:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1279, + "역명": "명륜", + "시간": "19:36:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2304, + "역명": "명륜", + "시간": "21:54:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1321, + "역명": "명륜", + "시간": "22:34:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 11, + "열번": 1005, + "역명": "명륜", + "시간": "05:44:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2024, + "역명": "명륜", + "시간": "08:01:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1057, + "역명": "명륜", + "시간": "08:38:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2088, + "역명": "명륜", + "시간": "10:58:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1117, + "역명": "명륜", + "시간": "11:37:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2146, + "역명": "명륜", + "시간": "13:52:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1181, + "역명": "명륜", + "시간": "14:34:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2208, + "역명": "명륜", + "시간": "16:49:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1245, + "역명": "명륜", + "시간": "17:31:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2272, + "역명": "명륜", + "시간": "19:50:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1293, + "역명": "명륜", + "시간": "20:32:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2316, + "역명": "명륜", + "시간": "22:51:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 11, + "열번": 1331, + "역명": "명륜", + "시간": "23:31:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2014, + "역명": "명륜", + "시간": "07:20:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1043, + "역명": "명륜", + "시간": "08:03:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2074, + "역명": "명륜", + "시간": "10:16:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1103, + "역명": "명륜", + "시간": "10:55:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2132, + "역명": "명륜", + "시간": "13:10:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1165, + "역명": "명륜", + "시간": "13:50:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "명륜", + "시간": "16:05:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1229, + "역명": "명륜", + "시간": "16:46:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2256, + "역명": "명륜", + "시간": "19:02:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1281, + "역명": "명륜", + "시간": "19:44:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2306, + "역명": "명륜", + "시간": "22:02:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1323, + "역명": "명륜", + "시간": "22:45:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1009, + "역명": "명륜", + "시간": "06:06:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2032, + "역명": "명륜", + "시간": "08:21:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1065, + "역명": "명륜", + "시간": "09:01:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2094, + "역명": "명륜", + "시간": "11:16:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1123, + "역명": "명륜", + "시간": "11:54:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2152, + "역명": "명륜", + "시간": "14:10:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1187, + "역명": "명륜", + "시간": "14:50:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 13, + "열번": 2214, + "역명": "명륜", + "시간": "17:06:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2016, + "역명": "명륜", + "시간": "07:31:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1049, + "역명": "명륜", + "시간": "08:18:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2080, + "역명": "명륜", + "시간": "10:34:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1109, + "역명": "명륜", + "시간": "11:13:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2138, + "역명": "명륜", + "시간": "13:28:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1171, + "역명": "명륜", + "시간": "14:06:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2198, + "역명": "명륜", + "시간": "16:22:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1235, + "역명": "명륜", + "시간": "17:02:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2262, + "역명": "명륜", + "시간": "19:20:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1285, + "역명": "명륜", + "시간": "20:00:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1011, + "역명": "명륜", + "시간": "06:17:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2036, + "역명": "명륜", + "시간": "08:31:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1069, + "역명": "명륜", + "시간": "09:13:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2098, + "역명": "명륜", + "시간": "11:28:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1129, + "역명": "명륜", + "시간": "12:11:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2156, + "역명": "명륜", + "시간": "14:26:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1193, + "역명": "명륜", + "시간": "15:07:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2220, + "역명": "명륜", + "시간": "17:22:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1255, + "역명": "명륜", + "시간": "18:04:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2280, + "역명": "명륜", + "시간": "20:18:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1299, + "역명": "명륜", + "시간": "20:56:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2320, + "역명": "명륜", + "시간": "23:11:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2026, + "역명": "명륜", + "시간": "08:06:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 16, + "열번": 1059, + "역명": "명륜", + "시간": "08:43:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2038, + "역명": "명륜", + "시간": "08:36:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 18, + "열번": 1007, + "역명": "명륜", + "시간": "05:55:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2028, + "역명": "명륜", + "시간": "08:11:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1061, + "역명": "명륜", + "시간": "08:49:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2090, + "역명": "명륜", + "시간": "11:04:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1119, + "역명": "명륜", + "시간": "11:43:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2148, + "역명": "명륜", + "시간": "13:58:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1183, + "역명": "명륜", + "시간": "14:39:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2210, + "역명": "명륜", + "시간": "16:55:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1247, + "역명": "명륜", + "시간": "17:37:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2040, + "역명": "명륜", + "시간": "08:41:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1071, + "역명": "명륜", + "시간": "09:19:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2100, + "역명": "명륜", + "시간": "11:34:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1131, + "역명": "명륜", + "시간": "12:16:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2158, + "역명": "명륜", + "시간": "14:32:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1195, + "역명": "명륜", + "시간": "15:12:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2222, + "역명": "명륜", + "시간": "17:27:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2030, + "역명": "명륜", + "시간": "08:16:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1063, + "역명": "명륜", + "시간": "08:55:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2092, + "역명": "명륜", + "시간": "11:10:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1121, + "역명": "명륜", + "시간": "11:49:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2150, + "역명": "명륜", + "시간": "14:04:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1185, + "역명": "명륜", + "시간": "14:45:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2212, + "역명": "명륜", + "시간": "17:00:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1249, + "역명": "명륜", + "시간": "17:43:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2274, + "역명": "명륜", + "시간": "19:57:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1295, + "역명": "명륜", + "시간": "20:40:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2318, + "역명": "명륜", + "시간": "23:01:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 20, + "열번": 7931, + "역명": "명륜", + "시간": "23:46:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 21, + "열번": 1013, + "역명": "명륜", + "시간": "06:28:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2042, + "역명": "명륜", + "시간": "08:46:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1073, + "역명": "명륜", + "시간": "09:25:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2102, + "역명": "명륜", + "시간": "11:40:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1133, + "역명": "명륜", + "시간": "12:22:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2160, + "역명": "명륜", + "시간": "14:37:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1197, + "역명": "명륜", + "시간": "15:18:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2224, + "역명": "명륜", + "시간": "17:32:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1257, + "역명": "명륜", + "시간": "18:11:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2282, + "역명": "명륜", + "시간": "20:26:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1301, + "역명": "명륜", + "시간": "21:04:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2322, + "역명": "명륜", + "시간": "23:23:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2034, + "역명": "명륜", + "시간": "08:26:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1067, + "역명": "명륜", + "시간": "09:07:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2096, + "역명": "명륜", + "시간": "11:22:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1125, + "역명": "명륜", + "시간": "12:00:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2044, + "역명": "명륜", + "시간": "08:51:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1075, + "역명": "명륜", + "시간": "09:31:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2104, + "역명": "명륜", + "시간": "11:46:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1135, + "역명": "명륜", + "시간": "12:27:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2162, + "역명": "명륜", + "시간": "14:43:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1199, + "역명": "명륜", + "시간": "15:23:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2228, + "역명": "명륜", + "시간": "17:42:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "명륜", + "시간": "09:01:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1079, + "역명": "명륜", + "시간": "09:43:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2108, + "역명": "명륜", + "시간": "11:58:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1139, + "역명": "명륜", + "시간": "12:38:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2166, + "역명": "명륜", + "시간": "14:54:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1203, + "역명": "명륜", + "시간": "15:34:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2232, + "역명": "명륜", + "시간": "17:52:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1263, + "역명": "명륜", + "시간": "18:32:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2288, + "역명": "명륜", + "시간": "20:50:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1307, + "역명": "명륜", + "시간": "21:28:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 24, + "열번": 2326, + "역명": "명륜", + "시간": "23:47:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "명륜", + "시간": "06:56:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2054, + "역명": "명륜", + "시간": "09:16:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1083, + "역명": "명륜", + "시간": "09:55:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2112, + "역명": "명륜", + "시간": "12:10:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1143, + "역명": "명륜", + "시간": "12:49:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2170, + "역명": "명륜", + "시간": "15:05:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1207, + "역명": "명륜", + "시간": "15:45:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2236, + "역명": "명륜", + "시간": "18:02:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1267, + "역명": "명륜", + "시간": "18:48:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2292, + "역명": "명륜", + "시간": "21:06:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1311, + "역명": "명륜", + "시간": "21:44:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2328, + "역명": "명륜", + "시간": "23:58:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2052, + "역명": "명륜", + "시간": "09:11:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1081, + "역명": "명륜", + "시간": "09:49:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2110, + "역명": "명륜", + "시간": "12:04:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1141, + "역명": "명륜", + "시간": "12:44:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2168, + "역명": "명륜", + "시간": "14:59:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1205, + "역명": "명륜", + "시간": "15:40:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2234, + "역명": "명륜", + "시간": "17:57:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1265, + "역명": "명륜", + "시간": "18:40:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2290, + "역명": "명륜", + "시간": "20:58:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1309, + "역명": "명륜", + "시간": "21:36:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1025, + "역명": "명륜", + "시간": "07:18:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2060, + "역명": "명륜", + "시간": "09:34:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1089, + "역명": "명륜", + "시간": "10:13:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2118, + "역명": "명륜", + "시간": "12:28:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1151, + "역명": "명륜", + "시간": "13:11:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2178, + "역명": "명륜", + "시간": "15:27:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1215, + "역명": "명륜", + "시간": "16:07:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2244, + "역명": "명륜", + "시간": "18:26:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1271, + "역명": "명륜", + "시간": "19:04:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2296, + "역명": "명륜", + "시간": "21:22:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 27, + "열번": 1315, + "역명": "명륜", + "시간": "22:04:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 28, + "열번": 1029, + "역명": "명륜", + "시간": "07:28:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2064, + "역명": "명륜", + "시간": "09:46:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1093, + "역명": "명륜", + "시간": "10:25:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2122, + "역명": "명륜", + "시간": "12:40:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1155, + "역명": "명륜", + "시간": "13:22:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2182, + "역명": "명륜", + "시간": "15:38:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1219, + "역명": "명륜", + "시간": "16:18:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1035, + "역명": "명륜", + "시간": "07:43:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2068, + "역명": "명륜", + "시간": "09:58:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1097, + "역명": "명륜", + "시간": "10:37:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2126, + "역명": "명륜", + "시간": "12:52:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1159, + "역명": "명륜", + "시간": "13:33:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2186, + "역명": "명륜", + "시간": "15:49:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1223, + "역명": "명륜", + "시간": "16:29:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 29, + "열번": 2250, + "역명": "명륜", + "시간": "18:44:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1031, + "역명": "명륜", + "시간": "07:33:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1037, + "역명": "명륜", + "시간": "07:48:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2070, + "역명": "명륜", + "시간": "10:04:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1099, + "역명": "명륜", + "시간": "10:43:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2128, + "역명": "명륜", + "시간": "12:58:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1161, + "역명": "명륜", + "시간": "13:39:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2188, + "역명": "명륜", + "시간": "15:54:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1225, + "역명": "명륜", + "시간": "16:35:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2252, + "역명": "명륜", + "시간": "18:50:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1277, + "역명": "명륜", + "시간": "19:28:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2302, + "역명": "명륜", + "시간": "21:46:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1319, + "역명": "명륜", + "시간": "22:24:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 32, + "열번": 1041, + "역명": "명륜", + "시간": "07:58:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1045, + "역명": "명륜", + "시간": "08:08:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2076, + "역명": "명륜", + "시간": "10:22:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1105, + "역명": "명륜", + "시간": "11:01:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2134, + "역명": "명륜", + "시간": "13:16:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1167, + "역명": "명륜", + "시간": "13:55:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2194, + "역명": "명륜", + "시간": "16:11:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1231, + "역명": "명륜", + "시간": "16:51:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 33, + "열번": 2258, + "역명": "명륜", + "시간": "19:08:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 34, + "열번": 8904, + "역명": "명륜", + "시간": "14:15:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1189, + "역명": "명륜", + "시간": "14:56:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 34, + "열번": 2216, + "역명": "명륜", + "시간": "17:11:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1251, + "역명": "명륜", + "시간": "17:50:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 34, + "열번": 2276, + "역명": "명륜", + "시간": "20:04:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1297, + "역명": "명륜", + "시간": "20:48:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1047, + "역명": "명륜", + "시간": "08:13:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2078, + "역명": "명륜", + "시간": "10:28:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1107, + "역명": "명륜", + "시간": "11:07:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2136, + "역명": "명륜", + "시간": "13:22:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1169, + "역명": "명륜", + "시간": "14:01:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2196, + "역명": "명륜", + "시간": "16:16:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1233, + "역명": "명륜", + "시간": "16:57:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2260, + "역명": "명륜", + "시간": "19:14:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1283, + "역명": "명륜", + "시간": "19:52:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2308, + "역명": "명륜", + "시간": "22:11:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1325, + "역명": "명륜", + "시간": "22:56:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 36, + "열번": 2226, + "역명": "명륜", + "시간": "17:37:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1259, + "역명": "명륜", + "시간": "18:18:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 36, + "열번": 2284, + "역명": "명륜", + "시간": "20:34:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1303, + "역명": "명륜", + "시간": "21:12:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1127, + "역명": "명륜", + "시간": "12:05:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2154, + "역명": "명륜", + "시간": "14:21:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1191, + "역명": "명륜", + "시간": "15:01:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2218, + "역명": "명륜", + "시간": "17:17:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1253, + "역명": "명륜", + "시간": "17:57:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 37, + "열번": 2278, + "역명": "명륜", + "시간": "20:11:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 39, + "열번": 1149, + "역명": "명륜", + "시간": "13:06:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2176, + "역명": "명륜", + "시간": "15:21:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1213, + "역명": "명륜", + "시간": "16:02:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 39, + "열번": 2242, + "역명": "명륜", + "시간": "18:20:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 41, + "열번": 1175, + "역명": "명륜", + "시간": "14:17:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2202, + "역명": "명륜", + "시간": "16:33:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1239, + "역명": "명륜", + "시간": "17:13:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2266, + "역명": "명륜", + "시간": "19:32:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1289, + "역명": "명륜", + "시간": "20:16:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2312, + "역명": "명륜", + "시간": "22:31:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1327, + "역명": "명륜", + "시간": "23:08:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "동래", + "시간": "06:05:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "동래", + "시간": "06:49:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2050, + "역명": "동래", + "시간": "09:04:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "동래", + "시간": "05:51:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "동래", + "시간": "06:40:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "동래", + "시간": "08:54:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1077, + "역명": "동래", + "시간": "09:39:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2106, + "역명": "동래", + "시간": "11:50:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1137, + "역명": "동래", + "시간": "12:35:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2164, + "역명": "동래", + "시간": "14:47:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1201, + "역명": "동래", + "시간": "15:31:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2230, + "역명": "동래", + "시간": "17:45:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1261, + "역명": "동래", + "시간": "18:27:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2286, + "역명": "동래", + "시간": "20:40:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1305, + "역명": "동래", + "시간": "21:22:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 2, + "열번": 2324, + "역명": "동래", + "시간": "23:33:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "동래", + "시간": "06:18:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "동래", + "시간": "07:07:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2056, + "역명": "동래", + "시간": "09:20:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1085, + "역명": "동래", + "시간": "10:03:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2114, + "역명": "동래", + "시간": "12:14:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1145, + "역명": "동래", + "시간": "12:57:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2172, + "역명": "동래", + "시간": "15:09:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1209, + "역명": "동래", + "시간": "15:53:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2238, + "역명": "동래", + "시간": "18:06:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "동래", + "시간": "06:31:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1023, + "역명": "동래", + "시간": "07:14:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2058, + "역명": "동래", + "시간": "09:26:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1087, + "역명": "동래", + "시간": "10:09:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2116, + "역명": "동래", + "시간": "12:20:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1147, + "역명": "동래", + "시간": "13:02:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2174, + "역명": "동래", + "시간": "15:14:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1211, + "역명": "동래", + "시간": "15:58:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2240, + "역명": "동래", + "시간": "18:12:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1269, + "역명": "동래", + "시간": "18:58:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2294, + "역명": "동래", + "시간": "21:12:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1313, + "역명": "동래", + "시간": "21:56:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2330, + "역명": "동래", + "시간": "00:13:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 5, + "열번": 1001, + "역명": "동래", + "시간": "05:24:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2018, + "역명": "동래", + "시간": "07:39:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1051, + "역명": "동래", + "시간": "08:25:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2082, + "역명": "동래", + "시간": "10:38:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1111, + "역명": "동래", + "시간": "11:21:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2140, + "역명": "동래", + "시간": "13:32:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1173, + "역명": "동래", + "시간": "14:14:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2200, + "역명": "동래", + "시간": "16:26:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1237, + "역명": "동래", + "시간": "17:10:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2264, + "역명": "동래", + "시간": "19:24:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1287, + "역명": "동래", + "시간": "20:10:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2310, + "역명": "동래", + "시간": "22:19:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2008, + "역명": "동래", + "시간": "06:43:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1027, + "역명": "동래", + "시간": "07:25:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2062, + "역명": "동래", + "시간": "09:38:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1091, + "역명": "동래", + "시간": "10:21:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2120, + "역명": "동래", + "시간": "12:32:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1153, + "역명": "동래", + "시간": "13:19:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2180, + "역명": "동래", + "시간": "15:31:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1217, + "역명": "동래", + "시간": "16:15:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2246, + "역명": "동래", + "시간": "18:30:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1273, + "역명": "동래", + "시간": "19:14:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2298, + "역명": "동래", + "시간": "21:28:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1317, + "역명": "동래", + "시간": "22:16:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1003, + "역명": "동래", + "시간": "05:35:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2020, + "역명": "동래", + "시간": "07:47:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1053, + "역명": "동래", + "시간": "08:30:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2084, + "역명": "동래", + "시간": "10:44:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1113, + "역명": "동래", + "시간": "11:27:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2142, + "역명": "동래", + "시간": "13:38:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1177, + "역명": "동래", + "시간": "14:25:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2204, + "역명": "동래", + "시간": "16:37:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1241, + "역명": "동래", + "시간": "17:21:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2268, + "역명": "동래", + "시간": "19:36:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1291, + "역명": "동래", + "시간": "20:26:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2314, + "역명": "동래", + "시간": "22:39:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 7, + "열번": 1329, + "역명": "동래", + "시간": "23:22:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2010, + "역명": "동래", + "시간": "06:55:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1033, + "역명": "동래", + "시간": "07:40:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2066, + "역명": "동래", + "시간": "09:50:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1095, + "역명": "동래", + "시간": "10:33:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2124, + "역명": "동래", + "시간": "12:44:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1157, + "역명": "동래", + "시간": "13:30:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2184, + "역명": "동래", + "시간": "15:42:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1221, + "역명": "동래", + "시간": "16:26:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2248, + "역명": "동래", + "시간": "18:36:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1275, + "역명": "동래", + "시간": "19:22:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 8, + "열번": 2300, + "역명": "동래", + "시간": "21:36:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 9, + "열번": 2022, + "역명": "동래", + "시간": "07:53:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1055, + "역명": "동래", + "시간": "08:35:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2086, + "역명": "동래", + "시간": "10:50:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1115, + "역명": "동래", + "시간": "11:33:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2144, + "역명": "동래", + "시간": "13:44:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1179, + "역명": "동래", + "시간": "14:30:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2206, + "역명": "동래", + "시간": "16:42:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1243, + "역명": "동래", + "시간": "17:27:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 9, + "열번": 2270, + "역명": "동래", + "시간": "19:42:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2012, + "역명": "동래", + "시간": "07:07:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1039, + "역명": "동래", + "시간": "07:55:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2072, + "역명": "동래", + "시간": "10:08:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1101, + "역명": "동래", + "시간": "10:51:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2130, + "역명": "동래", + "시간": "13:02:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1163, + "역명": "동래", + "시간": "13:46:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2190, + "역명": "동래", + "시간": "15:58:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1227, + "역명": "동래", + "시간": "16:42:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2254, + "역명": "동래", + "시간": "18:54:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1279, + "역명": "동래", + "시간": "19:38:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2304, + "역명": "동래", + "시간": "21:52:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1321, + "역명": "동래", + "시간": "22:36:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 11, + "열번": 1005, + "역명": "동래", + "시간": "05:46:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2024, + "역명": "동래", + "시간": "07:59:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1057, + "역명": "동래", + "시간": "08:40:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2088, + "역명": "동래", + "시간": "10:56:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1117, + "역명": "동래", + "시간": "11:39:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2146, + "역명": "동래", + "시간": "13:50:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1181, + "역명": "동래", + "시간": "14:36:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2208, + "역명": "동래", + "시간": "16:48:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1245, + "역명": "동래", + "시간": "17:33:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2272, + "역명": "동래", + "시간": "19:48:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1293, + "역명": "동래", + "시간": "20:34:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2316, + "역명": "동래", + "시간": "22:49:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 11, + "열번": 1331, + "역명": "동래", + "시간": "23:32:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2014, + "역명": "동래", + "시간": "07:19:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1043, + "역명": "동래", + "시간": "08:05:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2074, + "역명": "동래", + "시간": "10:14:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1103, + "역명": "동래", + "시간": "10:57:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2132, + "역명": "동래", + "시간": "13:08:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1165, + "역명": "동래", + "시간": "13:52:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "동래", + "시간": "16:04:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1229, + "역명": "동래", + "시간": "16:48:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2256, + "역명": "동래", + "시간": "19:00:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1281, + "역명": "동래", + "시간": "19:46:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2306, + "역명": "동래", + "시간": "22:00:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1323, + "역명": "동래", + "시간": "22:47:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1009, + "역명": "동래", + "시간": "06:08:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2032, + "역명": "동래", + "시간": "08:19:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1065, + "역명": "동래", + "시간": "09:03:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2094, + "역명": "동래", + "시간": "11:14:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1123, + "역명": "동래", + "시간": "11:56:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2152, + "역명": "동래", + "시간": "14:08:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1187, + "역명": "동래", + "시간": "14:52:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 13, + "열번": 2214, + "역명": "동래", + "시간": "17:04:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2016, + "역명": "동래", + "시간": "07:30:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1049, + "역명": "동래", + "시간": "08:20:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2080, + "역명": "동래", + "시간": "10:32:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1109, + "역명": "동래", + "시간": "11:15:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2138, + "역명": "동래", + "시간": "13:26:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1171, + "역명": "동래", + "시간": "14:08:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2198, + "역명": "동래", + "시간": "16:20:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1235, + "역명": "동래", + "시간": "17:04:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2262, + "역명": "동래", + "시간": "19:18:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1285, + "역명": "동래", + "시간": "20:02:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1011, + "역명": "동래", + "시간": "06:19:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2036, + "역명": "동래", + "시간": "08:29:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1069, + "역명": "동래", + "시간": "09:15:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2098, + "역명": "동래", + "시간": "11:26:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1129, + "역명": "동래", + "시간": "12:13:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2156, + "역명": "동래", + "시간": "14:25:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1193, + "역명": "동래", + "시간": "15:09:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2220, + "역명": "동래", + "시간": "17:20:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1255, + "역명": "동래", + "시간": "18:06:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2280, + "역명": "동래", + "시간": "20:16:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1299, + "역명": "동래", + "시간": "20:58:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2320, + "역명": "동래", + "시간": "23:09:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2026, + "역명": "동래", + "시간": "08:04:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 16, + "열번": 1059, + "역명": "동래", + "시간": "08:45:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2038, + "역명": "동래", + "시간": "08:34:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 18, + "열번": 1007, + "역명": "동래", + "시간": "05:57:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2028, + "역명": "동래", + "시간": "08:09:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1061, + "역명": "동래", + "시간": "08:51:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2090, + "역명": "동래", + "시간": "11:02:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1119, + "역명": "동래", + "시간": "11:45:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2148, + "역명": "동래", + "시간": "13:56:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1183, + "역명": "동래", + "시간": "14:41:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2210, + "역명": "동래", + "시간": "16:53:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1247, + "역명": "동래", + "시간": "17:39:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2040, + "역명": "동래", + "시간": "08:39:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1071, + "역명": "동래", + "시간": "09:21:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2100, + "역명": "동래", + "시간": "11:32:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1131, + "역명": "동래", + "시간": "12:18:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2158, + "역명": "동래", + "시간": "14:30:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1195, + "역명": "동래", + "시간": "15:14:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2222, + "역명": "동래", + "시간": "17:25:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2030, + "역명": "동래", + "시간": "08:14:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1063, + "역명": "동래", + "시간": "08:57:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2092, + "역명": "동래", + "시간": "11:08:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1121, + "역명": "동래", + "시간": "11:51:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2150, + "역명": "동래", + "시간": "14:02:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1185, + "역명": "동래", + "시간": "14:47:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2212, + "역명": "동래", + "시간": "16:59:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1249, + "역명": "동래", + "시간": "17:45:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2274, + "역명": "동래", + "시간": "19:55:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1295, + "역명": "동래", + "시간": "20:42:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2318, + "역명": "동래", + "시간": "22:59:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 20, + "열번": 7931, + "역명": "동래", + "시간": "23:47:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 21, + "열번": 1013, + "역명": "동래", + "시간": "06:30:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2042, + "역명": "동래", + "시간": "08:44:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1073, + "역명": "동래", + "시간": "09:27:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2102, + "역명": "동래", + "시간": "11:38:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1133, + "역명": "동래", + "시간": "12:24:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2160, + "역명": "동래", + "시간": "14:36:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1197, + "역명": "동래", + "시간": "15:20:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2224, + "역명": "동래", + "시간": "17:30:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1257, + "역명": "동래", + "시간": "18:13:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2282, + "역명": "동래", + "시간": "20:24:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1301, + "역명": "동래", + "시간": "21:06:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2322, + "역명": "동래", + "시간": "23:21:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2034, + "역명": "동래", + "시간": "08:24:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1067, + "역명": "동래", + "시간": "09:09:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2096, + "역명": "동래", + "시간": "11:20:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1125, + "역명": "동래", + "시간": "12:02:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2044, + "역명": "동래", + "시간": "08:49:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1075, + "역명": "동래", + "시간": "09:33:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2104, + "역명": "동래", + "시간": "11:44:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1135, + "역명": "동래", + "시간": "12:29:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2162, + "역명": "동래", + "시간": "14:41:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1199, + "역명": "동래", + "시간": "15:25:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2228, + "역명": "동래", + "시간": "17:40:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "동래", + "시간": "08:59:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1079, + "역명": "동래", + "시간": "09:45:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2108, + "역명": "동래", + "시간": "11:56:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1139, + "역명": "동래", + "시간": "12:40:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2166, + "역명": "동래", + "시간": "14:52:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1203, + "역명": "동래", + "시간": "15:36:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2232, + "역명": "동래", + "시간": "17:50:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1263, + "역명": "동래", + "시간": "18:34:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2288, + "역명": "동래", + "시간": "20:48:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1307, + "역명": "동래", + "시간": "21:30:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 24, + "열번": 2326, + "역명": "동래", + "시간": "23:45:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "동래", + "시간": "06:58:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2054, + "역명": "동래", + "시간": "09:14:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1083, + "역명": "동래", + "시간": "09:57:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2112, + "역명": "동래", + "시간": "12:08:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1143, + "역명": "동래", + "시간": "12:51:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2170, + "역명": "동래", + "시간": "15:03:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1207, + "역명": "동래", + "시간": "15:47:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2236, + "역명": "동래", + "시간": "18:00:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1267, + "역명": "동래", + "시간": "18:50:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2292, + "역명": "동래", + "시간": "21:04:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1311, + "역명": "동래", + "시간": "21:46:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2328, + "역명": "동래", + "시간": "23:57:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2052, + "역명": "동래", + "시간": "09:09:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1081, + "역명": "동래", + "시간": "09:51:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2110, + "역명": "동래", + "시간": "12:02:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1141, + "역명": "동래", + "시간": "12:46:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2168, + "역명": "동래", + "시간": "14:58:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1205, + "역명": "동래", + "시간": "15:42:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2234, + "역명": "동래", + "시간": "17:55:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1265, + "역명": "동래", + "시간": "18:42:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2290, + "역명": "동래", + "시간": "20:56:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1309, + "역명": "동래", + "시간": "21:38:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1025, + "역명": "동래", + "시간": "07:20:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2060, + "역명": "동래", + "시간": "09:32:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1089, + "역명": "동래", + "시간": "10:15:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2118, + "역명": "동래", + "시간": "12:26:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1151, + "역명": "동래", + "시간": "13:13:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2178, + "역명": "동래", + "시간": "15:25:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1215, + "역명": "동래", + "시간": "16:09:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2244, + "역명": "동래", + "시간": "18:24:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1271, + "역명": "동래", + "시간": "19:06:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2296, + "역명": "동래", + "시간": "21:20:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 27, + "열번": 1315, + "역명": "동래", + "시간": "22:06:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 28, + "열번": 1029, + "역명": "동래", + "시간": "07:30:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2064, + "역명": "동래", + "시간": "09:44:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1093, + "역명": "동래", + "시간": "10:27:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2122, + "역명": "동래", + "시간": "12:38:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1155, + "역명": "동래", + "시간": "13:24:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2182, + "역명": "동래", + "시간": "15:36:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1219, + "역명": "동래", + "시간": "16:20:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1035, + "역명": "동래", + "시간": "07:45:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2068, + "역명": "동래", + "시간": "09:56:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1097, + "역명": "동래", + "시간": "10:39:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2126, + "역명": "동래", + "시간": "12:50:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1159, + "역명": "동래", + "시간": "13:35:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2186, + "역명": "동래", + "시간": "15:47:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1223, + "역명": "동래", + "시간": "16:31:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 29, + "열번": 2250, + "역명": "동래", + "시간": "18:42:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1031, + "역명": "동래", + "시간": "07:35:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1037, + "역명": "동래", + "시간": "07:50:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2070, + "역명": "동래", + "시간": "10:02:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1099, + "역명": "동래", + "시간": "10:45:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2128, + "역명": "동래", + "시간": "12:56:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1161, + "역명": "동래", + "시간": "13:41:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2188, + "역명": "동래", + "시간": "15:53:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1225, + "역명": "동래", + "시간": "16:37:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2252, + "역명": "동래", + "시간": "18:48:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1277, + "역명": "동래", + "시간": "19:30:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2302, + "역명": "동래", + "시간": "21:44:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1319, + "역명": "동래", + "시간": "22:26:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 32, + "열번": 1041, + "역명": "동래", + "시간": "08:00:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1045, + "역명": "동래", + "시간": "08:10:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2076, + "역명": "동래", + "시간": "10:20:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1105, + "역명": "동래", + "시간": "11:03:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2134, + "역명": "동래", + "시간": "13:14:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1167, + "역명": "동래", + "시간": "13:57:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2194, + "역명": "동래", + "시간": "16:09:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1231, + "역명": "동래", + "시간": "16:53:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 33, + "열번": 2258, + "역명": "동래", + "시간": "19:06:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 34, + "열번": 8904, + "역명": "동래", + "시간": "14:14:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1189, + "역명": "동래", + "시간": "14:58:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 34, + "열번": 2216, + "역명": "동래", + "시간": "17:10:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1251, + "역명": "동래", + "시간": "17:52:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 34, + "열번": 2276, + "역명": "동래", + "시간": "20:02:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1297, + "역명": "동래", + "시간": "20:50:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1047, + "역명": "동래", + "시간": "08:15:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2078, + "역명": "동래", + "시간": "10:26:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1107, + "역명": "동래", + "시간": "11:09:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2136, + "역명": "동래", + "시간": "13:20:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1169, + "역명": "동래", + "시간": "14:03:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2196, + "역명": "동래", + "시간": "16:15:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1233, + "역명": "동래", + "시간": "16:59:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2260, + "역명": "동래", + "시간": "19:12:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1283, + "역명": "동래", + "시간": "19:54:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2308, + "역명": "동래", + "시간": "22:09:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1325, + "역명": "동래", + "시간": "22:58:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 36, + "열번": 2226, + "역명": "동래", + "시간": "17:35:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1259, + "역명": "동래", + "시간": "18:20:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 36, + "열번": 2284, + "역명": "동래", + "시간": "20:32:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1303, + "역명": "동래", + "시간": "21:14:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1127, + "역명": "동래", + "시간": "12:07:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2154, + "역명": "동래", + "시간": "14:19:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1191, + "역명": "동래", + "시간": "15:03:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2218, + "역명": "동래", + "시간": "17:15:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1253, + "역명": "동래", + "시간": "17:59:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 37, + "열번": 2278, + "역명": "동래", + "시간": "20:09:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 39, + "열번": 1149, + "역명": "동래", + "시간": "13:08:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2176, + "역명": "동래", + "시간": "15:20:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1213, + "역명": "동래", + "시간": "16:04:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 39, + "열번": 2242, + "역명": "동래", + "시간": "18:18:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 41, + "열번": 1175, + "역명": "동래", + "시간": "14:19:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2202, + "역명": "동래", + "시간": "16:31:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1239, + "역명": "동래", + "시간": "17:15:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2266, + "역명": "동래", + "시간": "19:30:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1289, + "역명": "동래", + "시간": "20:18:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2312, + "역명": "동래", + "시간": "22:29:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1327, + "역명": "동래", + "시간": "23:10:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "교대앞", + "시간": "06:03:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "교대앞", + "시간": "06:51:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2050, + "역명": "교대앞", + "시간": "09:02:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "교대앞", + "시간": "05:49:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "교대앞", + "시간": "06:42:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "교대앞", + "시간": "08:52:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1077, + "역명": "교대앞", + "시간": "09:41:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2106, + "역명": "교대앞", + "시간": "11:48:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1137, + "역명": "교대앞", + "시간": "12:37:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2164, + "역명": "교대앞", + "시간": "14:45:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1201, + "역명": "교대앞", + "시간": "15:33:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2230, + "역명": "교대앞", + "시간": "17:43:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1261, + "역명": "교대앞", + "시간": "18:29:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2286, + "역명": "교대앞", + "시간": "20:38:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1305, + "역명": "교대앞", + "시간": "21:24:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 2, + "열번": 2324, + "역명": "교대앞", + "시간": "23:31:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "교대앞", + "시간": "06:16:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "교대앞", + "시간": "07:09:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2056, + "역명": "교대앞", + "시간": "09:18:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1085, + "역명": "교대앞", + "시간": "10:05:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2114, + "역명": "교대앞", + "시간": "12:12:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1145, + "역명": "교대앞", + "시간": "12:59:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2172, + "역명": "교대앞", + "시간": "15:07:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1209, + "역명": "교대앞", + "시간": "15:55:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2238, + "역명": "교대앞", + "시간": "18:04:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "교대앞", + "시간": "06:29:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1023, + "역명": "교대앞", + "시간": "07:16:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2058, + "역명": "교대앞", + "시간": "09:24:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1087, + "역명": "교대앞", + "시간": "10:11:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2116, + "역명": "교대앞", + "시간": "12:18:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1147, + "역명": "교대앞", + "시간": "13:04:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2174, + "역명": "교대앞", + "시간": "15:12:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1211, + "역명": "교대앞", + "시간": "16:00:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2240, + "역명": "교대앞", + "시간": "18:10:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1269, + "역명": "교대앞", + "시간": "19:00:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2294, + "역명": "교대앞", + "시간": "21:10:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1313, + "역명": "교대앞", + "시간": "21:58:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2330, + "역명": "교대앞", + "시간": "00:11:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 5, + "열번": 1001, + "역명": "교대앞", + "시간": "05:26:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2018, + "역명": "교대앞", + "시간": "07:37:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1051, + "역명": "교대앞", + "시간": "08:27:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2082, + "역명": "교대앞", + "시간": "10:36:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1111, + "역명": "교대앞", + "시간": "11:23:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2140, + "역명": "교대앞", + "시간": "13:30:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1173, + "역명": "교대앞", + "시간": "14:16:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2200, + "역명": "교대앞", + "시간": "16:24:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1237, + "역명": "교대앞", + "시간": "17:12:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2264, + "역명": "교대앞", + "시간": "19:22:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1287, + "역명": "교대앞", + "시간": "20:12:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2310, + "역명": "교대앞", + "시간": "22:17:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2008, + "역명": "교대앞", + "시간": "06:41:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1027, + "역명": "교대앞", + "시간": "07:27:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2062, + "역명": "교대앞", + "시간": "09:36:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1091, + "역명": "교대앞", + "시간": "10:23:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2120, + "역명": "교대앞", + "시간": "12:30:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1153, + "역명": "교대앞", + "시간": "13:21:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2180, + "역명": "교대앞", + "시간": "15:29:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1217, + "역명": "교대앞", + "시간": "16:17:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2246, + "역명": "교대앞", + "시간": "18:28:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1273, + "역명": "교대앞", + "시간": "19:16:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2298, + "역명": "교대앞", + "시간": "21:26:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1317, + "역명": "교대앞", + "시간": "22:18:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1003, + "역명": "교대앞", + "시간": "05:37:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2020, + "역명": "교대앞", + "시간": "07:45:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1053, + "역명": "교대앞", + "시간": "08:32:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2084, + "역명": "교대앞", + "시간": "10:42:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1113, + "역명": "교대앞", + "시간": "11:29:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2142, + "역명": "교대앞", + "시간": "13:36:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1177, + "역명": "교대앞", + "시간": "14:27:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2204, + "역명": "교대앞", + "시간": "16:35:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1241, + "역명": "교대앞", + "시간": "17:23:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2268, + "역명": "교대앞", + "시간": "19:34:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1291, + "역명": "교대앞", + "시간": "20:28:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2314, + "역명": "교대앞", + "시간": "22:37:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 7, + "열번": 1329, + "역명": "교대앞", + "시간": "23:24:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2010, + "역명": "교대앞", + "시간": "06:53:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1033, + "역명": "교대앞", + "시간": "07:42:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2066, + "역명": "교대앞", + "시간": "09:48:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1095, + "역명": "교대앞", + "시간": "10:35:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2124, + "역명": "교대앞", + "시간": "12:42:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1157, + "역명": "교대앞", + "시간": "13:32:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2184, + "역명": "교대앞", + "시간": "15:40:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1221, + "역명": "교대앞", + "시간": "16:28:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2248, + "역명": "교대앞", + "시간": "18:34:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1275, + "역명": "교대앞", + "시간": "19:24:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 8, + "열번": 2300, + "역명": "교대앞", + "시간": "21:34:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 9, + "열번": 2022, + "역명": "교대앞", + "시간": "07:51:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1055, + "역명": "교대앞", + "시간": "08:37:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2086, + "역명": "교대앞", + "시간": "10:48:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1115, + "역명": "교대앞", + "시간": "11:35:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2144, + "역명": "교대앞", + "시간": "13:42:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1179, + "역명": "교대앞", + "시간": "14:32:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2206, + "역명": "교대앞", + "시간": "16:40:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1243, + "역명": "교대앞", + "시간": "17:29:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 9, + "열번": 2270, + "역명": "교대앞", + "시간": "19:40:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2012, + "역명": "교대앞", + "시간": "07:05:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1039, + "역명": "교대앞", + "시간": "07:57:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2072, + "역명": "교대앞", + "시간": "10:06:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1101, + "역명": "교대앞", + "시간": "10:53:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2130, + "역명": "교대앞", + "시간": "13:00:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1163, + "역명": "교대앞", + "시간": "13:48:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2190, + "역명": "교대앞", + "시간": "15:56:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1227, + "역명": "교대앞", + "시간": "16:44:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2254, + "역명": "교대앞", + "시간": "18:52:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1279, + "역명": "교대앞", + "시간": "19:40:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2304, + "역명": "교대앞", + "시간": "21:50:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1321, + "역명": "교대앞", + "시간": "22:38:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 11, + "열번": 1005, + "역명": "교대앞", + "시간": "05:48:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2024, + "역명": "교대앞", + "시간": "07:57:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1057, + "역명": "교대앞", + "시간": "08:42:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2088, + "역명": "교대앞", + "시간": "10:54:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1117, + "역명": "교대앞", + "시간": "11:41:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2146, + "역명": "교대앞", + "시간": "13:48:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1181, + "역명": "교대앞", + "시간": "14:38:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2208, + "역명": "교대앞", + "시간": "16:46:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1245, + "역명": "교대앞", + "시간": "17:35:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2272, + "역명": "교대앞", + "시간": "19:46:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1293, + "역명": "교대앞", + "시간": "20:36:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2316, + "역명": "교대앞", + "시간": "22:47:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 11, + "열번": 1331, + "역명": "교대앞", + "시간": "23:34:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2014, + "역명": "교대앞", + "시간": "07:17:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1043, + "역명": "교대앞", + "시간": "08:07:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2074, + "역명": "교대앞", + "시간": "10:12:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1103, + "역명": "교대앞", + "시간": "10:59:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2132, + "역명": "교대앞", + "시간": "13:06:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1165, + "역명": "교대앞", + "시간": "13:54:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "교대앞", + "시간": "16:02:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1229, + "역명": "교대앞", + "시간": "16:50:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2256, + "역명": "교대앞", + "시간": "18:58:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1281, + "역명": "교대앞", + "시간": "19:48:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2306, + "역명": "교대앞", + "시간": "21:58:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1323, + "역명": "교대앞", + "시간": "22:49:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1009, + "역명": "교대앞", + "시간": "06:10:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2032, + "역명": "교대앞", + "시간": "08:17:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1065, + "역명": "교대앞", + "시간": "09:05:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2094, + "역명": "교대앞", + "시간": "11:12:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1123, + "역명": "교대앞", + "시간": "11:58:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2152, + "역명": "교대앞", + "시간": "14:06:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1187, + "역명": "교대앞", + "시간": "14:54:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 13, + "열번": 2214, + "역명": "교대앞", + "시간": "17:02:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2016, + "역명": "교대앞", + "시간": "07:28:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1049, + "역명": "교대앞", + "시간": "08:22:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2080, + "역명": "교대앞", + "시간": "10:30:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1109, + "역명": "교대앞", + "시간": "11:17:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2138, + "역명": "교대앞", + "시간": "13:24:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1171, + "역명": "교대앞", + "시간": "14:10:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2198, + "역명": "교대앞", + "시간": "16:18:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1235, + "역명": "교대앞", + "시간": "17:06:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2262, + "역명": "교대앞", + "시간": "19:16:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1285, + "역명": "교대앞", + "시간": "20:04:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1011, + "역명": "교대앞", + "시간": "06:21:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2036, + "역명": "교대앞", + "시간": "08:27:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1069, + "역명": "교대앞", + "시간": "09:17:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2098, + "역명": "교대앞", + "시간": "11:24:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1129, + "역명": "교대앞", + "시간": "12:15:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2156, + "역명": "교대앞", + "시간": "14:23:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1193, + "역명": "교대앞", + "시간": "15:11:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2220, + "역명": "교대앞", + "시간": "17:18:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1255, + "역명": "교대앞", + "시간": "18:08:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2280, + "역명": "교대앞", + "시간": "20:14:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1299, + "역명": "교대앞", + "시간": "21:00:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2320, + "역명": "교대앞", + "시간": "23:07:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2026, + "역명": "교대앞", + "시간": "08:02:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 16, + "열번": 1059, + "역명": "교대앞", + "시간": "08:47:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2038, + "역명": "교대앞", + "시간": "08:32:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 18, + "열번": 1007, + "역명": "교대앞", + "시간": "05:59:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2028, + "역명": "교대앞", + "시간": "08:07:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1061, + "역명": "교대앞", + "시간": "08:53:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2090, + "역명": "교대앞", + "시간": "11:00:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1119, + "역명": "교대앞", + "시간": "11:47:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2148, + "역명": "교대앞", + "시간": "13:54:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1183, + "역명": "교대앞", + "시간": "14:43:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2210, + "역명": "교대앞", + "시간": "16:51:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1247, + "역명": "교대앞", + "시간": "17:41:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2040, + "역명": "교대앞", + "시간": "08:37:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1071, + "역명": "교대앞", + "시간": "09:23:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2100, + "역명": "교대앞", + "시간": "11:30:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1131, + "역명": "교대앞", + "시간": "12:20:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2158, + "역명": "교대앞", + "시간": "14:28:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1195, + "역명": "교대앞", + "시간": "15:16:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2222, + "역명": "교대앞", + "시간": "17:23:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2030, + "역명": "교대앞", + "시간": "08:12:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1063, + "역명": "교대앞", + "시간": "08:59:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2092, + "역명": "교대앞", + "시간": "11:06:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1121, + "역명": "교대앞", + "시간": "11:53:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2150, + "역명": "교대앞", + "시간": "14:00:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1185, + "역명": "교대앞", + "시간": "14:49:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2212, + "역명": "교대앞", + "시간": "16:57:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1249, + "역명": "교대앞", + "시간": "17:47:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2274, + "역명": "교대앞", + "시간": "19:53:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1295, + "역명": "교대앞", + "시간": "20:44:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2318, + "역명": "교대앞", + "시간": "22:57:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 20, + "열번": 7931, + "역명": "교대앞", + "시간": "23:49:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 21, + "열번": 1013, + "역명": "교대앞", + "시간": "06:32:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2042, + "역명": "교대앞", + "시간": "08:42:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1073, + "역명": "교대앞", + "시간": "09:29:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2102, + "역명": "교대앞", + "시간": "11:36:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1133, + "역명": "교대앞", + "시간": "12:26:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2160, + "역명": "교대앞", + "시간": "14:34:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1197, + "역명": "교대앞", + "시간": "15:22:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2224, + "역명": "교대앞", + "시간": "17:28:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1257, + "역명": "교대앞", + "시간": "18:15:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2282, + "역명": "교대앞", + "시간": "20:22:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1301, + "역명": "교대앞", + "시간": "21:08:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2322, + "역명": "교대앞", + "시간": "23:19:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2034, + "역명": "교대앞", + "시간": "08:22:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1067, + "역명": "교대앞", + "시간": "09:11:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2096, + "역명": "교대앞", + "시간": "11:18:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1125, + "역명": "교대앞", + "시간": "12:04:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2044, + "역명": "교대앞", + "시간": "08:47:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1075, + "역명": "교대앞", + "시간": "09:35:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2104, + "역명": "교대앞", + "시간": "11:42:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1135, + "역명": "교대앞", + "시간": "12:31:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2162, + "역명": "교대앞", + "시간": "14:39:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1199, + "역명": "교대앞", + "시간": "15:27:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2228, + "역명": "교대앞", + "시간": "17:38:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "교대앞", + "시간": "08:57:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1079, + "역명": "교대앞", + "시간": "09:47:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2108, + "역명": "교대앞", + "시간": "11:54:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1139, + "역명": "교대앞", + "시간": "12:42:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2166, + "역명": "교대앞", + "시간": "14:50:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1203, + "역명": "교대앞", + "시간": "15:38:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2232, + "역명": "교대앞", + "시간": "17:48:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1263, + "역명": "교대앞", + "시간": "18:36:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2288, + "역명": "교대앞", + "시간": "20:46:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1307, + "역명": "교대앞", + "시간": "21:32:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 24, + "열번": 2326, + "역명": "교대앞", + "시간": "23:43:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "교대앞", + "시간": "07:00:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2054, + "역명": "교대앞", + "시간": "09:12:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1083, + "역명": "교대앞", + "시간": "09:59:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2112, + "역명": "교대앞", + "시간": "12:06:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1143, + "역명": "교대앞", + "시간": "12:53:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2170, + "역명": "교대앞", + "시간": "15:01:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1207, + "역명": "교대앞", + "시간": "15:49:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2236, + "역명": "교대앞", + "시간": "17:58:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1267, + "역명": "교대앞", + "시간": "18:52:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2292, + "역명": "교대앞", + "시간": "21:02:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1311, + "역명": "교대앞", + "시간": "21:48:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2328, + "역명": "교대앞", + "시간": "23:55:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2052, + "역명": "교대앞", + "시간": "09:07:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1081, + "역명": "교대앞", + "시간": "09:53:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2110, + "역명": "교대앞", + "시간": "12:00:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1141, + "역명": "교대앞", + "시간": "12:48:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2168, + "역명": "교대앞", + "시간": "14:56:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1205, + "역명": "교대앞", + "시간": "15:44:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2234, + "역명": "교대앞", + "시간": "17:53:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1265, + "역명": "교대앞", + "시간": "18:44:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2290, + "역명": "교대앞", + "시간": "20:54:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1309, + "역명": "교대앞", + "시간": "21:40:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1025, + "역명": "교대앞", + "시간": "07:22:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2060, + "역명": "교대앞", + "시간": "09:30:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1089, + "역명": "교대앞", + "시간": "10:17:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2118, + "역명": "교대앞", + "시간": "12:24:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1151, + "역명": "교대앞", + "시간": "13:15:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2178, + "역명": "교대앞", + "시간": "15:23:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1215, + "역명": "교대앞", + "시간": "16:11:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2244, + "역명": "교대앞", + "시간": "18:22:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1271, + "역명": "교대앞", + "시간": "19:08:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2296, + "역명": "교대앞", + "시간": "21:18:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 27, + "열번": 1315, + "역명": "교대앞", + "시간": "22:08:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 28, + "열번": 1029, + "역명": "교대앞", + "시간": "07:32:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2064, + "역명": "교대앞", + "시간": "09:42:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1093, + "역명": "교대앞", + "시간": "10:29:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2122, + "역명": "교대앞", + "시간": "12:36:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1155, + "역명": "교대앞", + "시간": "13:26:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2182, + "역명": "교대앞", + "시간": "15:34:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1219, + "역명": "교대앞", + "시간": "16:22:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1035, + "역명": "교대앞", + "시간": "07:47:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2068, + "역명": "교대앞", + "시간": "09:54:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1097, + "역명": "교대앞", + "시간": "10:41:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2126, + "역명": "교대앞", + "시간": "12:48:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1159, + "역명": "교대앞", + "시간": "13:37:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2186, + "역명": "교대앞", + "시간": "15:45:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1223, + "역명": "교대앞", + "시간": "16:33:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 29, + "열번": 2250, + "역명": "교대앞", + "시간": "18:40:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1031, + "역명": "교대앞", + "시간": "07:37:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1037, + "역명": "교대앞", + "시간": "07:52:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2070, + "역명": "교대앞", + "시간": "10:00:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1099, + "역명": "교대앞", + "시간": "10:47:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2128, + "역명": "교대앞", + "시간": "12:54:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1161, + "역명": "교대앞", + "시간": "13:43:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2188, + "역명": "교대앞", + "시간": "15:51:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1225, + "역명": "교대앞", + "시간": "16:39:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2252, + "역명": "교대앞", + "시간": "18:46:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1277, + "역명": "교대앞", + "시간": "19:32:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2302, + "역명": "교대앞", + "시간": "21:42:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1319, + "역명": "교대앞", + "시간": "22:28:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 32, + "열번": 1041, + "역명": "교대앞", + "시간": "08:02:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1045, + "역명": "교대앞", + "시간": "08:12:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2076, + "역명": "교대앞", + "시간": "10:18:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1105, + "역명": "교대앞", + "시간": "11:05:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2134, + "역명": "교대앞", + "시간": "13:12:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1167, + "역명": "교대앞", + "시간": "13:59:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2194, + "역명": "교대앞", + "시간": "16:07:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1231, + "역명": "교대앞", + "시간": "16:55:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 33, + "열번": 2258, + "역명": "교대앞", + "시간": "19:04:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 34, + "열번": 8904, + "역명": "교대앞", + "시간": "14:12:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1189, + "역명": "교대앞", + "시간": "15:00:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 34, + "열번": 2216, + "역명": "교대앞", + "시간": "17:08:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1251, + "역명": "교대앞", + "시간": "17:54:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 34, + "열번": 2276, + "역명": "교대앞", + "시간": "20:00:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1297, + "역명": "교대앞", + "시간": "20:52:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1047, + "역명": "교대앞", + "시간": "08:17:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2078, + "역명": "교대앞", + "시간": "10:24:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1107, + "역명": "교대앞", + "시간": "11:11:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2136, + "역명": "교대앞", + "시간": "13:18:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1169, + "역명": "교대앞", + "시간": "14:05:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2196, + "역명": "교대앞", + "시간": "16:13:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1233, + "역명": "교대앞", + "시간": "17:01:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2260, + "역명": "교대앞", + "시간": "19:10:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1283, + "역명": "교대앞", + "시간": "19:56:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2308, + "역명": "교대앞", + "시간": "22:07:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1325, + "역명": "교대앞", + "시간": "23:00:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 36, + "열번": 2226, + "역명": "교대앞", + "시간": "17:33:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1259, + "역명": "교대앞", + "시간": "18:22:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 36, + "열번": 2284, + "역명": "교대앞", + "시간": "20:30:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1303, + "역명": "교대앞", + "시간": "21:16:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1127, + "역명": "교대앞", + "시간": "12:09:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2154, + "역명": "교대앞", + "시간": "14:17:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1191, + "역명": "교대앞", + "시간": "15:05:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2218, + "역명": "교대앞", + "시간": "17:13:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1253, + "역명": "교대앞", + "시간": "18:01:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 37, + "열번": 2278, + "역명": "교대앞", + "시간": "20:07:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 39, + "열번": 1149, + "역명": "교대앞", + "시간": "13:10:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2176, + "역명": "교대앞", + "시간": "15:18:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1213, + "역명": "교대앞", + "시간": "16:06:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 39, + "열번": 2242, + "역명": "교대앞", + "시간": "18:16:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 41, + "열번": 1175, + "역명": "교대앞", + "시간": "14:21:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2202, + "역명": "교대앞", + "시간": "16:29:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1239, + "역명": "교대앞", + "시간": "17:17:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2266, + "역명": "교대앞", + "시간": "19:28:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1289, + "역명": "교대앞", + "시간": "20:20:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2312, + "역명": "교대앞", + "시간": "22:27:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1327, + "역명": "교대앞", + "시간": "23:12:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "연산", + "시간": "06:00:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "연산", + "시간": "06:53:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2050, + "역명": "연산", + "시간": "09:00:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "연산", + "시간": "05:45:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "연산", + "시간": "06:44:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "연산", + "시간": "08:50:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1077, + "역명": "연산", + "시간": "09:43:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2106, + "역명": "연산", + "시간": "11:46:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1137, + "역명": "연산", + "시간": "12:39:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2164, + "역명": "연산", + "시간": "14:42:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1201, + "역명": "연산", + "시간": "15:35:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2230, + "역명": "연산", + "시간": "17:41:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1261, + "역명": "연산", + "시간": "18:31:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2286, + "역명": "연산", + "시간": "20:36:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1305, + "역명": "연산", + "시간": "21:26:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 2, + "열번": 2324, + "역명": "연산", + "시간": "23:29:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "연산", + "시간": "06:14:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "연산", + "시간": "07:11:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2056, + "역명": "연산", + "시간": "09:16:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1085, + "역명": "연산", + "시간": "10:07:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2114, + "역명": "연산", + "시간": "12:10:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1145, + "역명": "연산", + "시간": "13:01:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2172, + "역명": "연산", + "시간": "15:04:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1209, + "역명": "연산", + "시간": "15:57:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2238, + "역명": "연산", + "시간": "18:02:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "연산", + "시간": "06:26:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1023, + "역명": "연산", + "시간": "07:18:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2058, + "역명": "연산", + "시간": "09:22:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1087, + "역명": "연산", + "시간": "10:13:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2116, + "역명": "연산", + "시간": "12:16:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1147, + "역명": "연산", + "시간": "13:06:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2174, + "역명": "연산", + "시간": "15:10:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1211, + "역명": "연산", + "시간": "16:02:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2240, + "역명": "연산", + "시간": "18:08:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1269, + "역명": "연산", + "시간": "19:02:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2294, + "역명": "연산", + "시간": "21:08:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1313, + "역명": "연산", + "시간": "22:00:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2330, + "역명": "연산", + "시간": "00:07:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 5, + "열번": 1001, + "역명": "연산", + "시간": "05:28:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2018, + "역명": "연산", + "시간": "07:34:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1051, + "역명": "연산", + "시간": "08:29:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2082, + "역명": "연산", + "시간": "10:34:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1111, + "역명": "연산", + "시간": "11:25:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2140, + "역명": "연산", + "시간": "13:28:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1173, + "역명": "연산", + "시간": "14:18:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2200, + "역명": "연산", + "시간": "16:21:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1237, + "역명": "연산", + "시간": "17:14:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2264, + "역명": "연산", + "시간": "19:20:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1287, + "역명": "연산", + "시간": "20:14:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2310, + "역명": "연산", + "시간": "22:15:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2008, + "역명": "연산", + "시간": "06:38:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1027, + "역명": "연산", + "시간": "07:29:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2062, + "역명": "연산", + "시간": "09:34:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1091, + "역명": "연산", + "시간": "10:25:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2120, + "역명": "연산", + "시간": "12:28:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1153, + "역명": "연산", + "시간": "13:23:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2180, + "역명": "연산", + "시간": "15:26:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1217, + "역명": "연산", + "시간": "16:19:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2246, + "역명": "연산", + "시간": "18:26:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1273, + "역명": "연산", + "시간": "19:18:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2298, + "역명": "연산", + "시간": "21:24:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1317, + "역명": "연산", + "시간": "22:20:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1003, + "역명": "연산", + "시간": "05:39:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2020, + "역명": "연산", + "시간": "07:43:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1053, + "역명": "연산", + "시간": "08:34:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2084, + "역명": "연산", + "시간": "10:40:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1113, + "역명": "연산", + "시간": "11:31:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2142, + "역명": "연산", + "시간": "13:34:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1177, + "역명": "연산", + "시간": "14:29:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2204, + "역명": "연산", + "시간": "16:32:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1241, + "역명": "연산", + "시간": "17:25:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2268, + "역명": "연산", + "시간": "19:32:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1291, + "역명": "연산", + "시간": "20:30:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2314, + "역명": "연산", + "시간": "22:35:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 7, + "열번": 1329, + "역명": "연산", + "시간": "23:26:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2010, + "역명": "연산", + "시간": "06:50:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1033, + "역명": "연산", + "시간": "07:44:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2066, + "역명": "연산", + "시간": "09:46:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1095, + "역명": "연산", + "시간": "10:37:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2124, + "역명": "연산", + "시간": "12:40:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1157, + "역명": "연산", + "시간": "13:34:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2184, + "역명": "연산", + "시간": "15:37:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1221, + "역명": "연산", + "시간": "16:30:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2248, + "역명": "연산", + "시간": "18:32:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1275, + "역명": "연산", + "시간": "19:26:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 8, + "열번": 2300, + "역명": "연산", + "시간": "21:32:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 9, + "열번": 2022, + "역명": "연산", + "시간": "07:49:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1055, + "역명": "연산", + "시간": "08:39:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2086, + "역명": "연산", + "시간": "10:46:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1115, + "역명": "연산", + "시간": "11:37:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2144, + "역명": "연산", + "시간": "13:40:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1179, + "역명": "연산", + "시간": "14:34:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2206, + "역명": "연산", + "시간": "16:38:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1243, + "역명": "연산", + "시간": "17:31:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 9, + "열번": 2270, + "역명": "연산", + "시간": "19:38:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2012, + "역명": "연산", + "시간": "07:02:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1039, + "역명": "연산", + "시간": "07:59:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2072, + "역명": "연산", + "시간": "10:04:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1101, + "역명": "연산", + "시간": "10:55:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2130, + "역명": "연산", + "시간": "12:58:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1163, + "역명": "연산", + "시간": "13:50:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2190, + "역명": "연산", + "시간": "15:54:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1227, + "역명": "연산", + "시간": "16:46:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2254, + "역명": "연산", + "시간": "18:50:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1279, + "역명": "연산", + "시간": "19:42:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2304, + "역명": "연산", + "시간": "21:48:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1321, + "역명": "연산", + "시간": "22:40:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 11, + "열번": 1005, + "역명": "연산", + "시간": "05:50:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2024, + "역명": "연산", + "시간": "07:55:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1057, + "역명": "연산", + "시간": "08:44:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2088, + "역명": "연산", + "시간": "10:52:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1117, + "역명": "연산", + "시간": "11:43:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2146, + "역명": "연산", + "시간": "13:46:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1181, + "역명": "연산", + "시간": "14:40:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2208, + "역명": "연산", + "시간": "16:43:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1245, + "역명": "연산", + "시간": "17:37:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2272, + "역명": "연산", + "시간": "19:44:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1293, + "역명": "연산", + "시간": "20:38:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2316, + "역명": "연산", + "시간": "22:45:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 11, + "열번": 1331, + "역명": "연산", + "시간": "23:36:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2014, + "역명": "연산", + "시간": "07:14:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1043, + "역명": "연산", + "시간": "08:09:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2074, + "역명": "연산", + "시간": "10:10:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1103, + "역명": "연산", + "시간": "11:01:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2132, + "역명": "연산", + "시간": "13:04:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1165, + "역명": "연산", + "시간": "13:56:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "연산", + "시간": "15:59:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1229, + "역명": "연산", + "시간": "16:52:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2256, + "역명": "연산", + "시간": "18:56:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1281, + "역명": "연산", + "시간": "19:50:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2306, + "역명": "연산", + "시간": "21:56:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1323, + "역명": "연산", + "시간": "22:51:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1009, + "역명": "연산", + "시간": "06:12:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2032, + "역명": "연산", + "시간": "08:15:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1065, + "역명": "연산", + "시간": "09:07:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2094, + "역명": "연산", + "시간": "11:10:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1123, + "역명": "연산", + "시간": "12:00:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2152, + "역명": "연산", + "시간": "14:04:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1187, + "역명": "연산", + "시간": "14:56:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 13, + "열번": 2214, + "역명": "연산", + "시간": "17:00:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2016, + "역명": "연산", + "시간": "07:25:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1049, + "역명": "연산", + "시간": "08:24:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2080, + "역명": "연산", + "시간": "10:28:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1109, + "역명": "연산", + "시간": "11:19:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2138, + "역명": "연산", + "시간": "13:22:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1171, + "역명": "연산", + "시간": "14:12:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2198, + "역명": "연산", + "시간": "16:16:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1235, + "역명": "연산", + "시간": "17:08:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2262, + "역명": "연산", + "시간": "19:14:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1285, + "역명": "연산", + "시간": "20:06:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1011, + "역명": "연산", + "시간": "06:23:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2036, + "역명": "연산", + "시간": "08:25:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1069, + "역명": "연산", + "시간": "09:19:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2098, + "역명": "연산", + "시간": "11:22:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1129, + "역명": "연산", + "시간": "12:17:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2156, + "역명": "연산", + "시간": "14:20:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1193, + "역명": "연산", + "시간": "15:13:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2220, + "역명": "연산", + "시간": "17:16:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1255, + "역명": "연산", + "시간": "18:10:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2280, + "역명": "연산", + "시간": "20:12:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1299, + "역명": "연산", + "시간": "21:02:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2320, + "역명": "연산", + "시간": "23:05:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2026, + "역명": "연산", + "시간": "08:00:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 16, + "열번": 1059, + "역명": "연산", + "시간": "08:49:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2038, + "역명": "연산", + "시간": "08:30:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 18, + "열번": 1007, + "역명": "연산", + "시간": "06:01:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2028, + "역명": "연산", + "시간": "08:05:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1061, + "역명": "연산", + "시간": "08:55:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2090, + "역명": "연산", + "시간": "10:58:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1119, + "역명": "연산", + "시간": "11:49:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2148, + "역명": "연산", + "시간": "13:52:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1183, + "역명": "연산", + "시간": "14:45:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2210, + "역명": "연산", + "시간": "16:49:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1247, + "역명": "연산", + "시간": "17:43:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2040, + "역명": "연산", + "시간": "08:35:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1071, + "역명": "연산", + "시간": "09:25:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2100, + "역명": "연산", + "시간": "11:28:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1131, + "역명": "연산", + "시간": "12:22:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2158, + "역명": "연산", + "시간": "14:26:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1195, + "역명": "연산", + "시간": "15:18:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2222, + "역명": "연산", + "시간": "17:21:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2030, + "역명": "연산", + "시간": "08:10:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1063, + "역명": "연산", + "시간": "09:01:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2092, + "역명": "연산", + "시간": "11:04:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1121, + "역명": "연산", + "시간": "11:55:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2150, + "역명": "연산", + "시간": "13:58:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1185, + "역명": "연산", + "시간": "14:51:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2212, + "역명": "연산", + "시간": "16:54:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1249, + "역명": "연산", + "시간": "17:49:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2274, + "역명": "연산", + "시간": "19:51:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1295, + "역명": "연산", + "시간": "20:46:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2318, + "역명": "연산", + "시간": "22:55:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 20, + "열번": 7931, + "역명": "연산", + "시간": "23:51:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 21, + "열번": 1013, + "역명": "연산", + "시간": "06:34:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2042, + "역명": "연산", + "시간": "08:40:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1073, + "역명": "연산", + "시간": "09:31:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2102, + "역명": "연산", + "시간": "11:34:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1133, + "역명": "연산", + "시간": "12:28:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2160, + "역명": "연산", + "시간": "14:31:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1197, + "역명": "연산", + "시간": "15:24:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2224, + "역명": "연산", + "시간": "17:26:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1257, + "역명": "연산", + "시간": "18:17:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2282, + "역명": "연산", + "시간": "20:20:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1301, + "역명": "연산", + "시간": "21:10:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2322, + "역명": "연산", + "시간": "23:17:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2034, + "역명": "연산", + "시간": "08:20:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1067, + "역명": "연산", + "시간": "09:13:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2096, + "역명": "연산", + "시간": "11:16:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1125, + "역명": "연산", + "시간": "12:06:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2044, + "역명": "연산", + "시간": "08:45:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1075, + "역명": "연산", + "시간": "09:37:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2104, + "역명": "연산", + "시간": "11:40:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1135, + "역명": "연산", + "시간": "12:33:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2162, + "역명": "연산", + "시간": "14:37:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1199, + "역명": "연산", + "시간": "15:29:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2228, + "역명": "연산", + "시간": "17:36:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "연산", + "시간": "08:55:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1079, + "역명": "연산", + "시간": "09:49:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2108, + "역명": "연산", + "시간": "11:52:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1139, + "역명": "연산", + "시간": "12:44:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2166, + "역명": "연산", + "시간": "14:48:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1203, + "역명": "연산", + "시간": "15:40:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2232, + "역명": "연산", + "시간": "17:46:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1263, + "역명": "연산", + "시간": "18:38:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2288, + "역명": "연산", + "시간": "20:44:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1307, + "역명": "연산", + "시간": "21:34:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 24, + "열번": 2326, + "역명": "연산", + "시간": "23:41:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "연산", + "시간": "07:02:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2054, + "역명": "연산", + "시간": "09:10:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1083, + "역명": "연산", + "시간": "10:01:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2112, + "역명": "연산", + "시간": "12:04:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1143, + "역명": "연산", + "시간": "12:55:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2170, + "역명": "연산", + "시간": "14:59:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1207, + "역명": "연산", + "시간": "15:51:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2236, + "역명": "연산", + "시간": "17:56:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1267, + "역명": "연산", + "시간": "18:54:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2292, + "역명": "연산", + "시간": "21:00:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1311, + "역명": "연산", + "시간": "21:50:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2328, + "역명": "연산", + "시간": "23:52:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2052, + "역명": "연산", + "시간": "09:05:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1081, + "역명": "연산", + "시간": "09:55:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2110, + "역명": "연산", + "시간": "11:58:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1141, + "역명": "연산", + "시간": "12:50:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2168, + "역명": "연산", + "시간": "14:53:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1205, + "역명": "연산", + "시간": "15:46:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2234, + "역명": "연산", + "시간": "17:51:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1265, + "역명": "연산", + "시간": "18:46:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2290, + "역명": "연산", + "시간": "20:52:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1309, + "역명": "연산", + "시간": "21:42:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1025, + "역명": "연산", + "시간": "07:24:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2060, + "역명": "연산", + "시간": "09:28:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1089, + "역명": "연산", + "시간": "10:19:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2118, + "역명": "연산", + "시간": "12:22:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1151, + "역명": "연산", + "시간": "13:17:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2178, + "역명": "연산", + "시간": "15:21:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1215, + "역명": "연산", + "시간": "16:13:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2244, + "역명": "연산", + "시간": "18:20:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1271, + "역명": "연산", + "시간": "19:10:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2296, + "역명": "연산", + "시간": "21:16:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 27, + "열번": 1315, + "역명": "연산", + "시간": "22:10:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 28, + "열번": 1029, + "역명": "연산", + "시간": "07:34:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2064, + "역명": "연산", + "시간": "09:40:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1093, + "역명": "연산", + "시간": "10:31:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2122, + "역명": "연산", + "시간": "12:34:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1155, + "역명": "연산", + "시간": "13:28:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2182, + "역명": "연산", + "시간": "15:32:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1219, + "역명": "연산", + "시간": "16:24:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1035, + "역명": "연산", + "시간": "07:49:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2068, + "역명": "연산", + "시간": "09:52:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1097, + "역명": "연산", + "시간": "10:43:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2126, + "역명": "연산", + "시간": "12:46:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1159, + "역명": "연산", + "시간": "13:39:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2186, + "역명": "연산", + "시간": "15:43:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1223, + "역명": "연산", + "시간": "16:35:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 29, + "열번": 2250, + "역명": "연산", + "시간": "18:38:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1031, + "역명": "연산", + "시간": "07:39:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1037, + "역명": "연산", + "시간": "07:54:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2070, + "역명": "연산", + "시간": "09:58:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1099, + "역명": "연산", + "시간": "10:49:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2128, + "역명": "연산", + "시간": "12:52:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1161, + "역명": "연산", + "시간": "13:45:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2188, + "역명": "연산", + "시간": "15:48:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1225, + "역명": "연산", + "시간": "16:41:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2252, + "역명": "연산", + "시간": "18:44:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1277, + "역명": "연산", + "시간": "19:34:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2302, + "역명": "연산", + "시간": "21:40:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1319, + "역명": "연산", + "시간": "22:30:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 32, + "열번": 1041, + "역명": "연산", + "시간": "08:04:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1045, + "역명": "연산", + "시간": "08:14:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2076, + "역명": "연산", + "시간": "10:16:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1105, + "역명": "연산", + "시간": "11:07:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2134, + "역명": "연산", + "시간": "13:10:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1167, + "역명": "연산", + "시간": "14:01:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2194, + "역명": "연산", + "시간": "16:05:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1231, + "역명": "연산", + "시간": "16:57:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 33, + "열번": 2258, + "역명": "연산", + "시간": "19:02:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 34, + "열번": 8904, + "역명": "연산", + "시간": "14:09:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1189, + "역명": "연산", + "시간": "15:02:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 34, + "열번": 2216, + "역명": "연산", + "시간": "17:05:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1251, + "역명": "연산", + "시간": "17:56:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 34, + "열번": 2276, + "역명": "연산", + "시간": "19:58:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1297, + "역명": "연산", + "시간": "20:54:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1047, + "역명": "연산", + "시간": "08:19:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2078, + "역명": "연산", + "시간": "10:22:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1107, + "역명": "연산", + "시간": "11:13:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2136, + "역명": "연산", + "시간": "13:16:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1169, + "역명": "연산", + "시간": "14:07:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2196, + "역명": "연산", + "시간": "16:10:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1233, + "역명": "연산", + "시간": "17:03:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2260, + "역명": "연산", + "시간": "19:08:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1283, + "역명": "연산", + "시간": "19:58:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2308, + "역명": "연산", + "시간": "22:05:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1325, + "역명": "연산", + "시간": "23:02:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 36, + "열번": 2226, + "역명": "연산", + "시간": "17:31:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1259, + "역명": "연산", + "시간": "18:24:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 36, + "열번": 2284, + "역명": "연산", + "시간": "20:28:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1303, + "역명": "연산", + "시간": "21:18:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1127, + "역명": "연산", + "시간": "12:11:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2154, + "역명": "연산", + "시간": "14:15:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1191, + "역명": "연산", + "시간": "15:07:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2218, + "역명": "연산", + "시간": "17:11:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1253, + "역명": "연산", + "시간": "18:03:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 37, + "열번": 2278, + "역명": "연산", + "시간": "20:05:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 39, + "열번": 1149, + "역명": "연산", + "시간": "13:12:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2176, + "역명": "연산", + "시간": "15:15:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1213, + "역명": "연산", + "시간": "16:08:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 39, + "열번": 2242, + "역명": "연산", + "시간": "18:14:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 41, + "열번": 1175, + "역명": "연산", + "시간": "14:23:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2202, + "역명": "연산", + "시간": "16:27:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1239, + "역명": "연산", + "시간": "17:19:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2266, + "역명": "연산", + "시간": "19:26:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1289, + "역명": "연산", + "시간": "20:22:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2312, + "역명": "연산", + "시간": "22:25:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1327, + "역명": "연산", + "시간": "23:14:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "시청", + "시간": "05:59:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "시청", + "시간": "06:54:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2050, + "역명": "시청", + "시간": "08:58:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "시청", + "시간": "05:43:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "시청", + "시간": "06:45:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "시청", + "시간": "08:48:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1077, + "역명": "시청", + "시간": "09:45:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2106, + "역명": "시청", + "시간": "11:44:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1137, + "역명": "시청", + "시간": "12:40:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2164, + "역명": "시청", + "시간": "14:41:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1201, + "역명": "시청", + "시간": "15:36:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2230, + "역명": "시청", + "시간": "17:39:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1261, + "역명": "시청", + "시간": "18:33:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2286, + "역명": "시청", + "시간": "20:34:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1305, + "역명": "시청", + "시간": "21:28:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 2, + "열번": 2324, + "역명": "시청", + "시간": "23:27:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "시청", + "시간": "06:12:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "시청", + "시간": "07:12:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2056, + "역명": "시청", + "시간": "09:14:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1085, + "역명": "시청", + "시간": "10:09:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2114, + "역명": "시청", + "시간": "12:08:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1145, + "역명": "시청", + "시간": "13:02:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2172, + "역명": "시청", + "시간": "15:03:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1209, + "역명": "시청", + "시간": "15:58:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2238, + "역명": "시청", + "시간": "18:00:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "시청", + "시간": "06:25:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1023, + "역명": "시청", + "시간": "07:19:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2058, + "역명": "시청", + "시간": "09:20:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1087, + "역명": "시청", + "시간": "10:15:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2116, + "역명": "시청", + "시간": "12:14:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1147, + "역명": "시청", + "시간": "13:08:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2174, + "역명": "시청", + "시간": "15:08:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1211, + "역명": "시청", + "시간": "16:04:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2240, + "역명": "시청", + "시간": "18:06:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1269, + "역명": "시청", + "시간": "19:04:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2294, + "역명": "시청", + "시간": "21:06:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1313, + "역명": "시청", + "시간": "22:02:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2330, + "역명": "시청", + "시간": "00:06:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 5, + "열번": 1001, + "역명": "시청", + "시간": "05:31:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2018, + "역명": "시청", + "시간": "07:33:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1051, + "역명": "시청", + "시간": "08:31:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2082, + "역명": "시청", + "시간": "10:32:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1111, + "역명": "시청", + "시간": "11:27:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2140, + "역명": "시청", + "시간": "13:26:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1173, + "역명": "시청", + "시간": "14:19:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2200, + "역명": "시청", + "시간": "16:20:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1237, + "역명": "시청", + "시간": "17:15:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2264, + "역명": "시청", + "시간": "19:18:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1287, + "역명": "시청", + "시간": "20:16:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2310, + "역명": "시청", + "시간": "22:13:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2008, + "역명": "시청", + "시간": "06:37:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1027, + "역명": "시청", + "시간": "07:31:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2062, + "역명": "시청", + "시간": "09:32:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1091, + "역명": "시청", + "시간": "10:27:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2120, + "역명": "시청", + "시간": "12:26:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1153, + "역명": "시청", + "시간": "13:24:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2180, + "역명": "시청", + "시간": "15:25:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1217, + "역명": "시청", + "시간": "16:20:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2246, + "역명": "시청", + "시간": "18:24:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1273, + "역명": "시청", + "시간": "19:20:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2298, + "역명": "시청", + "시간": "21:22:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1317, + "역명": "시청", + "시간": "22:22:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1003, + "역명": "시청", + "시간": "05:40:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2020, + "역명": "시청", + "시간": "07:41:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1053, + "역명": "시청", + "시간": "08:36:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2084, + "역명": "시청", + "시간": "10:38:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1113, + "역명": "시청", + "시간": "11:33:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2142, + "역명": "시청", + "시간": "13:32:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1177, + "역명": "시청", + "시간": "14:30:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2204, + "역명": "시청", + "시간": "16:31:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1241, + "역명": "시청", + "시간": "17:27:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2268, + "역명": "시청", + "시간": "19:30:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1291, + "역명": "시청", + "시간": "20:32:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2314, + "역명": "시청", + "시간": "22:33:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 7, + "열번": 1329, + "역명": "시청", + "시간": "23:28:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2010, + "역명": "시청", + "시간": "06:49:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1033, + "역명": "시청", + "시간": "07:46:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2066, + "역명": "시청", + "시간": "09:44:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1095, + "역명": "시청", + "시간": "10:39:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2124, + "역명": "시청", + "시간": "12:38:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1157, + "역명": "시청", + "시간": "13:35:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2184, + "역명": "시청", + "시간": "15:36:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1221, + "역명": "시청", + "시간": "16:31:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2248, + "역명": "시청", + "시간": "18:30:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1275, + "역명": "시청", + "시간": "19:28:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 8, + "열번": 2300, + "역명": "시청", + "시간": "21:30:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 9, + "열번": 2022, + "역명": "시청", + "시간": "07:47:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1055, + "역명": "시청", + "시간": "08:41:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2086, + "역명": "시청", + "시간": "10:44:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1115, + "역명": "시청", + "시간": "11:39:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2144, + "역명": "시청", + "시간": "13:38:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1179, + "역명": "시청", + "시간": "14:36:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2206, + "역명": "시청", + "시간": "16:36:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1243, + "역명": "시청", + "시간": "17:33:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 9, + "열번": 2270, + "역명": "시청", + "시간": "19:36:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2012, + "역명": "시청", + "시간": "07:01:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1039, + "역명": "시청", + "시간": "08:01:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2072, + "역명": "시청", + "시간": "10:02:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1101, + "역명": "시청", + "시간": "10:57:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2130, + "역명": "시청", + "시간": "12:56:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1163, + "역명": "시청", + "시간": "13:52:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2190, + "역명": "시청", + "시간": "15:52:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1227, + "역명": "시청", + "시간": "16:48:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2254, + "역명": "시청", + "시간": "18:48:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1279, + "역명": "시청", + "시간": "19:44:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2304, + "역명": "시청", + "시간": "21:46:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1321, + "역명": "시청", + "시간": "22:42:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 11, + "열번": 1005, + "역명": "시청", + "시간": "05:51:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2024, + "역명": "시청", + "시간": "07:53:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1057, + "역명": "시청", + "시간": "08:46:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2088, + "역명": "시청", + "시간": "10:50:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1117, + "역명": "시청", + "시간": "11:45:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2146, + "역명": "시청", + "시간": "13:44:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1181, + "역명": "시청", + "시간": "14:41:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2208, + "역명": "시청", + "시간": "16:42:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1245, + "역명": "시청", + "시간": "17:39:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2272, + "역명": "시청", + "시간": "19:42:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1293, + "역명": "시청", + "시간": "20:40:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2316, + "역명": "시청", + "시간": "22:43:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 11, + "열번": 1331, + "역명": "시청", + "시간": "23:38:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2014, + "역명": "시청", + "시간": "07:13:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1043, + "역명": "시청", + "시간": "08:11:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2074, + "역명": "시청", + "시간": "10:08:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1103, + "역명": "시청", + "시간": "11:03:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2132, + "역명": "시청", + "시간": "13:02:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1165, + "역명": "시청", + "시간": "13:57:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "시청", + "시간": "15:58:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1229, + "역명": "시청", + "시간": "16:53:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2256, + "역명": "시청", + "시간": "18:54:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1281, + "역명": "시청", + "시간": "19:52:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2306, + "역명": "시청", + "시간": "21:54:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1323, + "역명": "시청", + "시간": "22:53:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1009, + "역명": "시청", + "시간": "06:13:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2032, + "역명": "시청", + "시간": "08:13:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1065, + "역명": "시청", + "시간": "09:09:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2094, + "역명": "시청", + "시간": "11:08:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1123, + "역명": "시청", + "시간": "12:02:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2152, + "역명": "시청", + "시간": "14:02:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1187, + "역명": "시청", + "시간": "14:58:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 13, + "열번": 2214, + "역명": "시청", + "시간": "16:58:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2016, + "역명": "시청", + "시간": "07:24:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1049, + "역명": "시청", + "시간": "08:26:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2080, + "역명": "시청", + "시간": "10:26:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1109, + "역명": "시청", + "시간": "11:21:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2138, + "역명": "시청", + "시간": "13:20:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1171, + "역명": "시청", + "시간": "14:14:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2198, + "역명": "시청", + "시간": "16:14:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1235, + "역명": "시청", + "시간": "17:10:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2262, + "역명": "시청", + "시간": "19:12:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1285, + "역명": "시청", + "시간": "20:08:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1011, + "역명": "시청", + "시간": "06:24:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2036, + "역명": "시청", + "시간": "08:23:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1069, + "역명": "시청", + "시간": "09:21:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2098, + "역명": "시청", + "시간": "11:20:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1129, + "역명": "시청", + "시간": "12:18:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2156, + "역명": "시청", + "시간": "14:19:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1193, + "역명": "시청", + "시간": "15:14:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2220, + "역명": "시청", + "시간": "17:14:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1255, + "역명": "시청", + "시간": "18:12:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2280, + "역명": "시청", + "시간": "20:10:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1299, + "역명": "시청", + "시간": "21:04:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2320, + "역명": "시청", + "시간": "23:03:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2026, + "역명": "시청", + "시간": "07:58:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 16, + "열번": 1059, + "역명": "시청", + "시간": "08:51:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2038, + "역명": "시청", + "시간": "08:28:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 18, + "열번": 1007, + "역명": "시청", + "시간": "06:02:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2028, + "역명": "시청", + "시간": "08:03:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1061, + "역명": "시청", + "시간": "08:57:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2090, + "역명": "시청", + "시간": "10:56:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1119, + "역명": "시청", + "시간": "11:51:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2148, + "역명": "시청", + "시간": "13:50:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1183, + "역명": "시청", + "시간": "14:47:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2210, + "역명": "시청", + "시간": "16:47:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1247, + "역명": "시청", + "시간": "17:45:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2040, + "역명": "시청", + "시간": "08:33:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1071, + "역명": "시청", + "시간": "09:27:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2100, + "역명": "시청", + "시간": "11:26:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1131, + "역명": "시청", + "시간": "12:24:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2158, + "역명": "시청", + "시간": "14:24:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1195, + "역명": "시청", + "시간": "15:20:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2222, + "역명": "시청", + "시간": "17:19:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2030, + "역명": "시청", + "시간": "08:08:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1063, + "역명": "시청", + "시간": "09:03:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2092, + "역명": "시청", + "시간": "11:02:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1121, + "역명": "시청", + "시간": "11:56:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2150, + "역명": "시청", + "시간": "13:56:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1185, + "역명": "시청", + "시간": "14:52:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2212, + "역명": "시청", + "시간": "16:53:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1249, + "역명": "시청", + "시간": "17:51:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2274, + "역명": "시청", + "시간": "19:49:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1295, + "역명": "시청", + "시간": "20:48:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2318, + "역명": "시청", + "시간": "22:53:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 20, + "열번": 7931, + "역명": "시청", + "시간": "23:54:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 21, + "열번": 1013, + "역명": "시청", + "시간": "06:35:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2042, + "역명": "시청", + "시간": "08:38:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1073, + "역명": "시청", + "시간": "09:33:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2102, + "역명": "시청", + "시간": "11:32:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1133, + "역명": "시청", + "시간": "12:29:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2160, + "역명": "시청", + "시간": "14:30:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1197, + "역명": "시청", + "시간": "15:25:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2224, + "역명": "시청", + "시간": "17:24:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1257, + "역명": "시청", + "시간": "18:19:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2282, + "역명": "시청", + "시간": "20:18:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1301, + "역명": "시청", + "시간": "21:12:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2322, + "역명": "시청", + "시간": "23:15:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2034, + "역명": "시청", + "시간": "08:18:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1067, + "역명": "시청", + "시간": "09:15:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2096, + "역명": "시청", + "시간": "11:14:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1125, + "역명": "시청", + "시간": "12:07:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2044, + "역명": "시청", + "시간": "08:43:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1075, + "역명": "시청", + "시간": "09:39:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2104, + "역명": "시청", + "시간": "11:38:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1135, + "역명": "시청", + "시간": "12:35:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2162, + "역명": "시청", + "시간": "14:35:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1199, + "역명": "시청", + "시간": "15:31:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2228, + "역명": "시청", + "시간": "17:34:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "시청", + "시간": "08:53:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1079, + "역명": "시청", + "시간": "09:51:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2108, + "역명": "시청", + "시간": "11:50:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1139, + "역명": "시청", + "시간": "12:46:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2166, + "역명": "시청", + "시간": "14:46:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1203, + "역명": "시청", + "시간": "15:42:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2232, + "역명": "시청", + "시간": "17:44:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1263, + "역명": "시청", + "시간": "18:40:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2288, + "역명": "시청", + "시간": "20:42:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1307, + "역명": "시청", + "시간": "21:36:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 24, + "열번": 2326, + "역명": "시청", + "시간": "23:39:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "시청", + "시간": "07:03:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2054, + "역명": "시청", + "시간": "09:08:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1083, + "역명": "시청", + "시간": "10:03:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2112, + "역명": "시청", + "시간": "12:02:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1143, + "역명": "시청", + "시간": "12:57:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2170, + "역명": "시청", + "시간": "14:57:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1207, + "역명": "시청", + "시간": "15:53:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2236, + "역명": "시청", + "시간": "17:54:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1267, + "역명": "시청", + "시간": "18:56:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2292, + "역명": "시청", + "시간": "20:58:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1311, + "역명": "시청", + "시간": "21:52:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2328, + "역명": "시청", + "시간": "23:50:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2052, + "역명": "시청", + "시간": "09:03:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1081, + "역명": "시청", + "시간": "09:57:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2110, + "역명": "시청", + "시간": "11:56:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1141, + "역명": "시청", + "시간": "12:51:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2168, + "역명": "시청", + "시간": "14:52:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1205, + "역명": "시청", + "시간": "15:47:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2234, + "역명": "시청", + "시간": "17:49:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1265, + "역명": "시청", + "시간": "18:48:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2290, + "역명": "시청", + "시간": "20:50:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1309, + "역명": "시청", + "시간": "21:44:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1025, + "역명": "시청", + "시간": "07:26:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2060, + "역명": "시청", + "시간": "09:26:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1089, + "역명": "시청", + "시간": "10:21:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2118, + "역명": "시청", + "시간": "12:20:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1151, + "역명": "시청", + "시간": "13:19:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2178, + "역명": "시청", + "시간": "15:19:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1215, + "역명": "시청", + "시간": "16:15:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2244, + "역명": "시청", + "시간": "18:18:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1271, + "역명": "시청", + "시간": "19:12:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2296, + "역명": "시청", + "시간": "21:14:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 27, + "열번": 1315, + "역명": "시청", + "시간": "22:12:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 28, + "열번": 1029, + "역명": "시청", + "시간": "07:36:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2064, + "역명": "시청", + "시간": "09:38:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1093, + "역명": "시청", + "시간": "10:33:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2122, + "역명": "시청", + "시간": "12:32:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1155, + "역명": "시청", + "시간": "13:30:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2182, + "역명": "시청", + "시간": "15:30:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1219, + "역명": "시청", + "시간": "16:26:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1035, + "역명": "시청", + "시간": "07:51:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2068, + "역명": "시청", + "시간": "09:50:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1097, + "역명": "시청", + "시간": "10:45:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2126, + "역명": "시청", + "시간": "12:44:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1159, + "역명": "시청", + "시간": "13:41:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2186, + "역명": "시청", + "시간": "15:41:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1223, + "역명": "시청", + "시간": "16:37:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 29, + "열번": 2250, + "역명": "시청", + "시간": "18:36:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1031, + "역명": "시청", + "시간": "07:41:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1037, + "역명": "시청", + "시간": "07:56:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2070, + "역명": "시청", + "시간": "09:56:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1099, + "역명": "시청", + "시간": "10:51:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2128, + "역명": "시청", + "시간": "12:50:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1161, + "역명": "시청", + "시간": "13:46:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2188, + "역명": "시청", + "시간": "15:47:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1225, + "역명": "시청", + "시간": "16:42:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2252, + "역명": "시청", + "시간": "18:42:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1277, + "역명": "시청", + "시간": "19:36:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2302, + "역명": "시청", + "시간": "21:38:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1319, + "역명": "시청", + "시간": "22:32:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 32, + "열번": 1041, + "역명": "시청", + "시간": "08:06:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1045, + "역명": "시청", + "시간": "08:16:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2076, + "역명": "시청", + "시간": "10:14:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1105, + "역명": "시청", + "시간": "11:09:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2134, + "역명": "시청", + "시간": "13:08:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1167, + "역명": "시청", + "시간": "14:03:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2194, + "역명": "시청", + "시간": "16:03:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1231, + "역명": "시청", + "시간": "16:59:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 33, + "열번": 2258, + "역명": "시청", + "시간": "19:00:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 34, + "열번": 8904, + "역명": "시청", + "시간": "14:08:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1189, + "역명": "시청", + "시간": "15:03:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 34, + "열번": 2216, + "역명": "시청", + "시간": "17:04:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1251, + "역명": "시청", + "시간": "17:58:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 34, + "열번": 2276, + "역명": "시청", + "시간": "19:56:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1297, + "역명": "시청", + "시간": "20:56:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1047, + "역명": "시청", + "시간": "08:21:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2078, + "역명": "시청", + "시간": "10:20:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1107, + "역명": "시청", + "시간": "11:15:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2136, + "역명": "시청", + "시간": "13:14:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1169, + "역명": "시청", + "시간": "14:08:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2196, + "역명": "시청", + "시간": "16:09:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1233, + "역명": "시청", + "시간": "17:04:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2260, + "역명": "시청", + "시간": "19:06:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1283, + "역명": "시청", + "시간": "20:00:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2308, + "역명": "시청", + "시간": "22:03:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1325, + "역명": "시청", + "시간": "23:04:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 36, + "열번": 2226, + "역명": "시청", + "시간": "17:29:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1259, + "역명": "시청", + "시간": "18:26:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 36, + "열번": 2284, + "역명": "시청", + "시간": "20:26:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1303, + "역명": "시청", + "시간": "21:20:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1127, + "역명": "시청", + "시간": "12:13:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2154, + "역명": "시청", + "시간": "14:13:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1191, + "역명": "시청", + "시간": "15:09:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2218, + "역명": "시청", + "시간": "17:09:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1253, + "역명": "시청", + "시간": "18:05:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 37, + "열번": 2278, + "역명": "시청", + "시간": "20:03:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 39, + "열번": 1149, + "역명": "시청", + "시간": "13:13:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2176, + "역명": "시청", + "시간": "15:14:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1213, + "역명": "시청", + "시간": "16:09:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 39, + "열번": 2242, + "역명": "시청", + "시간": "18:12:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 41, + "열번": 1175, + "역명": "시청", + "시간": "14:25:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2202, + "역명": "시청", + "시간": "16:25:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1239, + "역명": "시청", + "시간": "17:21:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2266, + "역명": "시청", + "시간": "19:24:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1289, + "역명": "시청", + "시간": "20:24:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2312, + "역명": "시청", + "시간": "22:23:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1327, + "역명": "시청", + "시간": "23:16:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "양정", + "시간": "05:57:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "양정", + "시간": "06:56:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2050, + "역명": "양정", + "시간": "08:56:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "양정", + "시간": "05:42:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "양정", + "시간": "06:47:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "양정", + "시간": "08:46:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1077, + "역명": "양정", + "시간": "09:47:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2106, + "역명": "양정", + "시간": "11:42:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1137, + "역명": "양정", + "시간": "12:42:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2164, + "역명": "양정", + "시간": "14:39:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1201, + "역명": "양정", + "시간": "15:38:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2230, + "역명": "양정", + "시간": "17:37:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1261, + "역명": "양정", + "시간": "18:35:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2286, + "역명": "양정", + "시간": "20:32:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1305, + "역명": "양정", + "시간": "21:30:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 2, + "열번": 2324, + "역명": "양정", + "시간": "23:25:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "양정", + "시간": "06:10:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "양정", + "시간": "07:14:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2056, + "역명": "양정", + "시간": "09:12:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1085, + "역명": "양정", + "시간": "10:11:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2114, + "역명": "양정", + "시간": "12:06:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1145, + "역명": "양정", + "시간": "13:04:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2172, + "역명": "양정", + "시간": "15:01:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1209, + "역명": "양정", + "시간": "16:00:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2238, + "역명": "양정", + "시간": "17:58:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "양정", + "시간": "06:23:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1023, + "역명": "양정", + "시간": "07:21:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2058, + "역명": "양정", + "시간": "09:18:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1087, + "역명": "양정", + "시간": "10:17:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2116, + "역명": "양정", + "시간": "12:12:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1147, + "역명": "양정", + "시간": "13:10:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2174, + "역명": "양정", + "시간": "15:06:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1211, + "역명": "양정", + "시간": "16:06:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2240, + "역명": "양정", + "시간": "18:04:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1269, + "역명": "양정", + "시간": "19:06:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2294, + "역명": "양정", + "시간": "21:04:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1313, + "역명": "양정", + "시간": "22:04:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2330, + "역명": "양정", + "시간": "00:04:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 5, + "열번": 1001, + "역명": "양정", + "시간": "05:33:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2018, + "역명": "양정", + "시간": "07:31:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1051, + "역명": "양정", + "시간": "08:33:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2082, + "역명": "양정", + "시간": "10:30:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1111, + "역명": "양정", + "시간": "11:29:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2140, + "역명": "양정", + "시간": "13:24:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1173, + "역명": "양정", + "시간": "14:21:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2200, + "역명": "양정", + "시간": "16:18:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1237, + "역명": "양정", + "시간": "17:17:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2264, + "역명": "양정", + "시간": "19:16:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1287, + "역명": "양정", + "시간": "20:18:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2310, + "역명": "양정", + "시간": "22:11:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2008, + "역명": "양정", + "시간": "06:35:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1027, + "역명": "양정", + "시간": "07:33:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2062, + "역명": "양정", + "시간": "09:30:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1091, + "역명": "양정", + "시간": "10:29:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2120, + "역명": "양정", + "시간": "12:24:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1153, + "역명": "양정", + "시간": "13:26:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2180, + "역명": "양정", + "시간": "15:23:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1217, + "역명": "양정", + "시간": "16:22:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2246, + "역명": "양정", + "시간": "18:22:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1273, + "역명": "양정", + "시간": "19:22:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2298, + "역명": "양정", + "시간": "21:20:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1317, + "역명": "양정", + "시간": "22:24:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1003, + "역명": "양정", + "시간": "05:42:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2020, + "역명": "양정", + "시간": "07:39:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1053, + "역명": "양정", + "시간": "08:38:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2084, + "역명": "양정", + "시간": "10:36:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1113, + "역명": "양정", + "시간": "11:35:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2142, + "역명": "양정", + "시간": "13:30:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1177, + "역명": "양정", + "시간": "14:32:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2204, + "역명": "양정", + "시간": "16:29:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1241, + "역명": "양정", + "시간": "17:29:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2268, + "역명": "양정", + "시간": "19:28:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1291, + "역명": "양정", + "시간": "20:34:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2314, + "역명": "양정", + "시간": "22:31:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 7, + "열번": 1329, + "역명": "양정", + "시간": "23:30:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2010, + "역명": "양정", + "시간": "06:47:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1033, + "역명": "양정", + "시간": "07:48:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2066, + "역명": "양정", + "시간": "09:42:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1095, + "역명": "양정", + "시간": "10:41:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2124, + "역명": "양정", + "시간": "12:36:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1157, + "역명": "양정", + "시간": "13:37:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2184, + "역명": "양정", + "시간": "15:34:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1221, + "역명": "양정", + "시간": "16:33:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2248, + "역명": "양정", + "시간": "18:28:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1275, + "역명": "양정", + "시간": "19:30:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 8, + "열번": 2300, + "역명": "양정", + "시간": "21:28:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 9, + "열번": 2022, + "역명": "양정", + "시간": "07:45:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1055, + "역명": "양정", + "시간": "08:43:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2086, + "역명": "양정", + "시간": "10:42:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1115, + "역명": "양정", + "시간": "11:41:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2144, + "역명": "양정", + "시간": "13:36:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1179, + "역명": "양정", + "시간": "14:38:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2206, + "역명": "양정", + "시간": "16:34:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1243, + "역명": "양정", + "시간": "17:35:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 9, + "열번": 2270, + "역명": "양정", + "시간": "19:34:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2012, + "역명": "양정", + "시간": "06:59:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1039, + "역명": "양정", + "시간": "08:03:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2072, + "역명": "양정", + "시간": "10:00:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1101, + "역명": "양정", + "시간": "10:59:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2130, + "역명": "양정", + "시간": "12:54:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1163, + "역명": "양정", + "시간": "13:54:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2190, + "역명": "양정", + "시간": "15:50:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1227, + "역명": "양정", + "시간": "16:50:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2254, + "역명": "양정", + "시간": "18:46:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1279, + "역명": "양정", + "시간": "19:46:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2304, + "역명": "양정", + "시간": "21:44:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1321, + "역명": "양정", + "시간": "22:44:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 11, + "열번": 1005, + "역명": "양정", + "시간": "05:53:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2024, + "역명": "양정", + "시간": "07:51:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1057, + "역명": "양정", + "시간": "08:48:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2088, + "역명": "양정", + "시간": "10:48:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1117, + "역명": "양정", + "시간": "11:47:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2146, + "역명": "양정", + "시간": "13:42:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1181, + "역명": "양정", + "시간": "14:43:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2208, + "역명": "양정", + "시간": "16:40:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1245, + "역명": "양정", + "시간": "17:41:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2272, + "역명": "양정", + "시간": "19:40:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1293, + "역명": "양정", + "시간": "20:42:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2316, + "역명": "양정", + "시간": "22:41:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 11, + "열번": 1331, + "역명": "양정", + "시간": "23:40:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2014, + "역명": "양정", + "시간": "07:11:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1043, + "역명": "양정", + "시간": "08:13:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2074, + "역명": "양정", + "시간": "10:06:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1103, + "역명": "양정", + "시간": "11:05:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2132, + "역명": "양정", + "시간": "13:00:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1165, + "역명": "양정", + "시간": "13:59:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "양정", + "시간": "15:56:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1229, + "역명": "양정", + "시간": "16:55:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2256, + "역명": "양정", + "시간": "18:52:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1281, + "역명": "양정", + "시간": "19:54:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2306, + "역명": "양정", + "시간": "21:52:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1323, + "역명": "양정", + "시간": "22:55:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1009, + "역명": "양정", + "시간": "06:15:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2032, + "역명": "양정", + "시간": "08:11:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1065, + "역명": "양정", + "시간": "09:11:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2094, + "역명": "양정", + "시간": "11:06:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1123, + "역명": "양정", + "시간": "12:04:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2152, + "역명": "양정", + "시간": "14:00:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1187, + "역명": "양정", + "시간": "15:00:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 13, + "열번": 2214, + "역명": "양정", + "시간": "16:56:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2016, + "역명": "양정", + "시간": "07:22:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1049, + "역명": "양정", + "시간": "08:28:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2080, + "역명": "양정", + "시간": "10:24:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1109, + "역명": "양정", + "시간": "11:23:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2138, + "역명": "양정", + "시간": "13:18:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1171, + "역명": "양정", + "시간": "14:16:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2198, + "역명": "양정", + "시간": "16:12:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1235, + "역명": "양정", + "시간": "17:12:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2262, + "역명": "양정", + "시간": "19:10:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1285, + "역명": "양정", + "시간": "20:10:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1011, + "역명": "양정", + "시간": "06:26:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2036, + "역명": "양정", + "시간": "08:21:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1069, + "역명": "양정", + "시간": "09:23:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2098, + "역명": "양정", + "시간": "11:18:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1129, + "역명": "양정", + "시간": "12:20:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2156, + "역명": "양정", + "시간": "14:17:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1193, + "역명": "양정", + "시간": "15:16:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2220, + "역명": "양정", + "시간": "17:12:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1255, + "역명": "양정", + "시간": "18:14:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2280, + "역명": "양정", + "시간": "20:08:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1299, + "역명": "양정", + "시간": "21:06:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2320, + "역명": "양정", + "시간": "23:01:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2026, + "역명": "양정", + "시간": "07:56:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 16, + "열번": 1059, + "역명": "양정", + "시간": "08:53:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2038, + "역명": "양정", + "시간": "08:26:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 18, + "열번": 1007, + "역명": "양정", + "시간": "06:04:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2028, + "역명": "양정", + "시간": "08:01:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1061, + "역명": "양정", + "시간": "08:59:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2090, + "역명": "양정", + "시간": "10:54:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1119, + "역명": "양정", + "시간": "11:53:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2148, + "역명": "양정", + "시간": "13:48:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1183, + "역명": "양정", + "시간": "14:49:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2210, + "역명": "양정", + "시간": "16:45:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1247, + "역명": "양정", + "시간": "17:47:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2040, + "역명": "양정", + "시간": "08:31:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1071, + "역명": "양정", + "시간": "09:29:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2100, + "역명": "양정", + "시간": "11:24:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1131, + "역명": "양정", + "시간": "12:26:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2158, + "역명": "양정", + "시간": "14:22:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1195, + "역명": "양정", + "시간": "15:22:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2222, + "역명": "양정", + "시간": "17:17:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2030, + "역명": "양정", + "시간": "08:06:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1063, + "역명": "양정", + "시간": "09:05:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2092, + "역명": "양정", + "시간": "11:00:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1121, + "역명": "양정", + "시간": "11:58:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2150, + "역명": "양정", + "시간": "13:54:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1185, + "역명": "양정", + "시간": "14:54:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2212, + "역명": "양정", + "시간": "16:51:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1249, + "역명": "양정", + "시간": "17:53:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2274, + "역명": "양정", + "시간": "19:47:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1295, + "역명": "양정", + "시간": "20:50:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2318, + "역명": "양정", + "시간": "22:51:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 20, + "열번": 7931, + "역명": "양정", + "시간": "23:56:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 21, + "열번": 1013, + "역명": "양정", + "시간": "06:37:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2042, + "역명": "양정", + "시간": "08:36:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1073, + "역명": "양정", + "시간": "09:35:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2102, + "역명": "양정", + "시간": "11:30:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1133, + "역명": "양정", + "시간": "12:31:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2160, + "역명": "양정", + "시간": "14:28:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1197, + "역명": "양정", + "시간": "15:27:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2224, + "역명": "양정", + "시간": "17:22:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1257, + "역명": "양정", + "시간": "18:21:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2282, + "역명": "양정", + "시간": "20:16:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1301, + "역명": "양정", + "시간": "21:14:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2322, + "역명": "양정", + "시간": "23:13:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2034, + "역명": "양정", + "시간": "08:16:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1067, + "역명": "양정", + "시간": "09:17:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2096, + "역명": "양정", + "시간": "11:12:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1125, + "역명": "양정", + "시간": "12:09:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2044, + "역명": "양정", + "시간": "08:41:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1075, + "역명": "양정", + "시간": "09:41:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2104, + "역명": "양정", + "시간": "11:36:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1135, + "역명": "양정", + "시간": "12:37:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2162, + "역명": "양정", + "시간": "14:33:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1199, + "역명": "양정", + "시간": "15:33:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2228, + "역명": "양정", + "시간": "17:32:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "양정", + "시간": "08:51:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1079, + "역명": "양정", + "시간": "09:53:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2108, + "역명": "양정", + "시간": "11:48:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1139, + "역명": "양정", + "시간": "12:48:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2166, + "역명": "양정", + "시간": "14:44:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1203, + "역명": "양정", + "시간": "15:44:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2232, + "역명": "양정", + "시간": "17:42:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1263, + "역명": "양정", + "시간": "18:42:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2288, + "역명": "양정", + "시간": "20:40:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1307, + "역명": "양정", + "시간": "21:38:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 24, + "열번": 2326, + "역명": "양정", + "시간": "23:37:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "양정", + "시간": "07:05:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2054, + "역명": "양정", + "시간": "09:06:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1083, + "역명": "양정", + "시간": "10:05:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2112, + "역명": "양정", + "시간": "12:00:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1143, + "역명": "양정", + "시간": "12:59:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2170, + "역명": "양정", + "시간": "14:55:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1207, + "역명": "양정", + "시간": "15:55:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2236, + "역명": "양정", + "시간": "17:52:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1267, + "역명": "양정", + "시간": "18:58:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2292, + "역명": "양정", + "시간": "20:56:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1311, + "역명": "양정", + "시간": "21:54:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2328, + "역명": "양정", + "시간": "23:49:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2052, + "역명": "양정", + "시간": "09:01:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1081, + "역명": "양정", + "시간": "09:59:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2110, + "역명": "양정", + "시간": "11:54:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1141, + "역명": "양정", + "시간": "12:53:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2168, + "역명": "양정", + "시간": "14:50:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1205, + "역명": "양정", + "시간": "15:49:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2234, + "역명": "양정", + "시간": "17:47:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1265, + "역명": "양정", + "시간": "18:50:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2290, + "역명": "양정", + "시간": "20:48:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1309, + "역명": "양정", + "시간": "21:46:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1025, + "역명": "양정", + "시간": "07:28:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2060, + "역명": "양정", + "시간": "09:24:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1089, + "역명": "양정", + "시간": "10:23:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2118, + "역명": "양정", + "시간": "12:18:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1151, + "역명": "양정", + "시간": "13:21:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2178, + "역명": "양정", + "시간": "15:17:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1215, + "역명": "양정", + "시간": "16:17:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2244, + "역명": "양정", + "시간": "18:16:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1271, + "역명": "양정", + "시간": "19:14:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2296, + "역명": "양정", + "시간": "21:12:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 27, + "열번": 1315, + "역명": "양정", + "시간": "22:14:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 28, + "열번": 1029, + "역명": "양정", + "시간": "07:38:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2064, + "역명": "양정", + "시간": "09:36:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1093, + "역명": "양정", + "시간": "10:35:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2122, + "역명": "양정", + "시간": "12:30:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1155, + "역명": "양정", + "시간": "13:32:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2182, + "역명": "양정", + "시간": "15:28:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1219, + "역명": "양정", + "시간": "16:28:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1035, + "역명": "양정", + "시간": "07:53:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2068, + "역명": "양정", + "시간": "09:48:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1097, + "역명": "양정", + "시간": "10:47:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2126, + "역명": "양정", + "시간": "12:42:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1159, + "역명": "양정", + "시간": "13:43:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2186, + "역명": "양정", + "시간": "15:39:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1223, + "역명": "양정", + "시간": "16:39:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 29, + "열번": 2250, + "역명": "양정", + "시간": "18:34:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1031, + "역명": "양정", + "시간": "07:43:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1037, + "역명": "양정", + "시간": "07:58:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2070, + "역명": "양정", + "시간": "09:54:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1099, + "역명": "양정", + "시간": "10:53:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2128, + "역명": "양정", + "시간": "12:48:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1161, + "역명": "양정", + "시간": "13:48:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2188, + "역명": "양정", + "시간": "15:45:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1225, + "역명": "양정", + "시간": "16:44:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2252, + "역명": "양정", + "시간": "18:40:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1277, + "역명": "양정", + "시간": "19:38:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2302, + "역명": "양정", + "시간": "21:36:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1319, + "역명": "양정", + "시간": "22:34:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 32, + "열번": 1041, + "역명": "양정", + "시간": "08:08:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1045, + "역명": "양정", + "시간": "08:18:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2076, + "역명": "양정", + "시간": "10:12:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1105, + "역명": "양정", + "시간": "11:11:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2134, + "역명": "양정", + "시간": "13:06:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1167, + "역명": "양정", + "시간": "14:05:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2194, + "역명": "양정", + "시간": "16:01:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1231, + "역명": "양정", + "시간": "17:01:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 33, + "열번": 2258, + "역명": "양정", + "시간": "18:58:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 34, + "열번": 8904, + "역명": "양정", + "시간": "14:06:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1189, + "역명": "양정", + "시간": "15:05:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 34, + "열번": 2216, + "역명": "양정", + "시간": "17:02:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1251, + "역명": "양정", + "시간": "18:00:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 34, + "열번": 2276, + "역명": "양정", + "시간": "19:54:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1297, + "역명": "양정", + "시간": "20:58:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1047, + "역명": "양정", + "시간": "08:23:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2078, + "역명": "양정", + "시간": "10:18:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1107, + "역명": "양정", + "시간": "11:17:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2136, + "역명": "양정", + "시간": "13:12:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1169, + "역명": "양정", + "시간": "14:10:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2196, + "역명": "양정", + "시간": "16:07:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1233, + "역명": "양정", + "시간": "17:06:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2260, + "역명": "양정", + "시간": "19:04:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1283, + "역명": "양정", + "시간": "20:02:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2308, + "역명": "양정", + "시간": "22:01:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1325, + "역명": "양정", + "시간": "23:06:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 36, + "열번": 2226, + "역명": "양정", + "시간": "17:27:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1259, + "역명": "양정", + "시간": "18:28:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 36, + "열번": 2284, + "역명": "양정", + "시간": "20:24:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1303, + "역명": "양정", + "시간": "21:22:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1127, + "역명": "양정", + "시간": "12:15:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2154, + "역명": "양정", + "시간": "14:11:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1191, + "역명": "양정", + "시간": "15:11:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2218, + "역명": "양정", + "시간": "17:07:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1253, + "역명": "양정", + "시간": "18:07:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 37, + "열번": 2278, + "역명": "양정", + "시간": "20:01:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 39, + "열번": 1149, + "역명": "양정", + "시간": "13:15:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2176, + "역명": "양정", + "시간": "15:12:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1213, + "역명": "양정", + "시간": "16:11:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 39, + "열번": 2242, + "역명": "양정", + "시간": "18:10:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 41, + "열번": 1175, + "역명": "양정", + "시간": "14:27:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2202, + "역명": "양정", + "시간": "16:23:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1239, + "역명": "양정", + "시간": "17:23:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2266, + "역명": "양정", + "시간": "19:22:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1289, + "역명": "양정", + "시간": "20:26:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2312, + "역명": "양정", + "시간": "22:21:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1327, + "역명": "양정", + "시간": "23:18:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "부전", + "시간": "05:55:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "부전", + "시간": "06:58:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2050, + "역명": "부전", + "시간": "08:54:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "부전", + "시간": "05:40:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "부전", + "시간": "06:49:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "부전", + "시간": "08:44:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1077, + "역명": "부전", + "시간": "09:49:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2106, + "역명": "부전", + "시간": "11:40:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1137, + "역명": "부전", + "시간": "12:44:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2164, + "역명": "부전", + "시간": "14:37:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1201, + "역명": "부전", + "시간": "15:40:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2230, + "역명": "부전", + "시간": "17:35:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1261, + "역명": "부전", + "시간": "18:37:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2286, + "역명": "부전", + "시간": "20:30:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1305, + "역명": "부전", + "시간": "21:32:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 2, + "열번": 2324, + "역명": "부전", + "시간": "23:23:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "부전", + "시간": "06:08:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "부전", + "시간": "07:16:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2056, + "역명": "부전", + "시간": "09:10:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1085, + "역명": "부전", + "시간": "10:13:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2114, + "역명": "부전", + "시간": "12:04:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1145, + "역명": "부전", + "시간": "13:06:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2172, + "역명": "부전", + "시간": "14:59:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1209, + "역명": "부전", + "시간": "16:02:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2238, + "역명": "부전", + "시간": "17:56:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "부전", + "시간": "06:21:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1023, + "역명": "부전", + "시간": "07:23:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2058, + "역명": "부전", + "시간": "09:16:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1087, + "역명": "부전", + "시간": "10:19:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2116, + "역명": "부전", + "시간": "12:10:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1147, + "역명": "부전", + "시간": "13:12:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2174, + "역명": "부전", + "시간": "15:04:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1211, + "역명": "부전", + "시간": "16:08:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2240, + "역명": "부전", + "시간": "18:02:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1269, + "역명": "부전", + "시간": "19:08:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2294, + "역명": "부전", + "시간": "21:02:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1313, + "역명": "부전", + "시간": "22:06:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2330, + "역명": "부전", + "시간": "00:02:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 5, + "열번": 1001, + "역명": "부전", + "시간": "05:35:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2018, + "역명": "부전", + "시간": "07:29:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1051, + "역명": "부전", + "시간": "08:35:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2082, + "역명": "부전", + "시간": "10:28:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1111, + "역명": "부전", + "시간": "11:31:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2140, + "역명": "부전", + "시간": "13:22:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1173, + "역명": "부전", + "시간": "14:23:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2200, + "역명": "부전", + "시간": "16:16:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1237, + "역명": "부전", + "시간": "17:19:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2264, + "역명": "부전", + "시간": "19:14:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1287, + "역명": "부전", + "시간": "20:20:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2310, + "역명": "부전", + "시간": "22:09:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2008, + "역명": "부전", + "시간": "06:33:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1027, + "역명": "부전", + "시간": "07:35:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2062, + "역명": "부전", + "시간": "09:28:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1091, + "역명": "부전", + "시간": "10:31:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2120, + "역명": "부전", + "시간": "12:22:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1153, + "역명": "부전", + "시간": "13:28:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2180, + "역명": "부전", + "시간": "15:21:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1217, + "역명": "부전", + "시간": "16:24:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2246, + "역명": "부전", + "시간": "18:20:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1273, + "역명": "부전", + "시간": "19:24:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2298, + "역명": "부전", + "시간": "21:18:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1317, + "역명": "부전", + "시간": "22:26:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1003, + "역명": "부전", + "시간": "05:44:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2020, + "역명": "부전", + "시간": "07:37:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1053, + "역명": "부전", + "시간": "08:40:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2084, + "역명": "부전", + "시간": "10:34:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1113, + "역명": "부전", + "시간": "11:37:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2142, + "역명": "부전", + "시간": "13:28:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1177, + "역명": "부전", + "시간": "14:34:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2204, + "역명": "부전", + "시간": "16:27:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1241, + "역명": "부전", + "시간": "17:31:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2268, + "역명": "부전", + "시간": "19:26:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1291, + "역명": "부전", + "시간": "20:36:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2314, + "역명": "부전", + "시간": "22:29:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 7, + "열번": 1329, + "역명": "부전", + "시간": "23:32:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2010, + "역명": "부전", + "시간": "06:45:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1033, + "역명": "부전", + "시간": "07:50:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2066, + "역명": "부전", + "시간": "09:40:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1095, + "역명": "부전", + "시간": "10:43:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2124, + "역명": "부전", + "시간": "12:34:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1157, + "역명": "부전", + "시간": "13:39:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2184, + "역명": "부전", + "시간": "15:32:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1221, + "역명": "부전", + "시간": "16:35:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2248, + "역명": "부전", + "시간": "18:26:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1275, + "역명": "부전", + "시간": "19:32:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 8, + "열번": 2300, + "역명": "부전", + "시간": "21:26:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 9, + "열번": 2022, + "역명": "부전", + "시간": "07:43:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1055, + "역명": "부전", + "시간": "08:45:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2086, + "역명": "부전", + "시간": "10:40:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1115, + "역명": "부전", + "시간": "11:43:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2144, + "역명": "부전", + "시간": "13:34:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1179, + "역명": "부전", + "시간": "14:40:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2206, + "역명": "부전", + "시간": "16:32:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1243, + "역명": "부전", + "시간": "17:37:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 9, + "열번": 2270, + "역명": "부전", + "시간": "19:32:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2012, + "역명": "부전", + "시간": "06:57:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1039, + "역명": "부전", + "시간": "08:05:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2072, + "역명": "부전", + "시간": "09:58:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1101, + "역명": "부전", + "시간": "11:01:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2130, + "역명": "부전", + "시간": "12:52:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1163, + "역명": "부전", + "시간": "13:56:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2190, + "역명": "부전", + "시간": "15:48:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1227, + "역명": "부전", + "시간": "16:52:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2254, + "역명": "부전", + "시간": "18:44:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1279, + "역명": "부전", + "시간": "19:48:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2304, + "역명": "부전", + "시간": "21:42:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1321, + "역명": "부전", + "시간": "22:46:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 11, + "열번": 1005, + "역명": "부전", + "시간": "05:55:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2024, + "역명": "부전", + "시간": "07:49:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1057, + "역명": "부전", + "시간": "08:50:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2088, + "역명": "부전", + "시간": "10:46:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1117, + "역명": "부전", + "시간": "11:49:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2146, + "역명": "부전", + "시간": "13:40:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1181, + "역명": "부전", + "시간": "14:45:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2208, + "역명": "부전", + "시간": "16:38:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1245, + "역명": "부전", + "시간": "17:43:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2272, + "역명": "부전", + "시간": "19:38:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1293, + "역명": "부전", + "시간": "20:44:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2316, + "역명": "부전", + "시간": "22:39:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 11, + "열번": 1331, + "역명": "부전", + "시간": "23:42:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2014, + "역명": "부전", + "시간": "07:09:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1043, + "역명": "부전", + "시간": "08:15:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2074, + "역명": "부전", + "시간": "10:04:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1103, + "역명": "부전", + "시간": "11:07:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2132, + "역명": "부전", + "시간": "12:58:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1165, + "역명": "부전", + "시간": "14:01:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "부전", + "시간": "15:54:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1229, + "역명": "부전", + "시간": "16:57:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2256, + "역명": "부전", + "시간": "18:50:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1281, + "역명": "부전", + "시간": "19:56:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2306, + "역명": "부전", + "시간": "21:50:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1323, + "역명": "부전", + "시간": "22:57:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1009, + "역명": "부전", + "시간": "06:17:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2032, + "역명": "부전", + "시간": "08:09:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1065, + "역명": "부전", + "시간": "09:13:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2094, + "역명": "부전", + "시간": "11:04:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1123, + "역명": "부전", + "시간": "12:06:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2152, + "역명": "부전", + "시간": "13:58:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1187, + "역명": "부전", + "시간": "15:02:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 13, + "열번": 2214, + "역명": "부전", + "시간": "16:54:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2016, + "역명": "부전", + "시간": "07:20:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1049, + "역명": "부전", + "시간": "08:30:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2080, + "역명": "부전", + "시간": "10:22:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1109, + "역명": "부전", + "시간": "11:25:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2138, + "역명": "부전", + "시간": "13:16:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1171, + "역명": "부전", + "시간": "14:18:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2198, + "역명": "부전", + "시간": "16:10:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1235, + "역명": "부전", + "시간": "17:14:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2262, + "역명": "부전", + "시간": "19:08:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1285, + "역명": "부전", + "시간": "20:12:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1011, + "역명": "부전", + "시간": "06:28:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2036, + "역명": "부전", + "시간": "08:19:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1069, + "역명": "부전", + "시간": "09:25:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2098, + "역명": "부전", + "시간": "11:16:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1129, + "역명": "부전", + "시간": "12:22:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2156, + "역명": "부전", + "시간": "14:15:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1193, + "역명": "부전", + "시간": "15:18:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2220, + "역명": "부전", + "시간": "17:10:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1255, + "역명": "부전", + "시간": "18:16:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2280, + "역명": "부전", + "시간": "20:06:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1299, + "역명": "부전", + "시간": "21:08:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2320, + "역명": "부전", + "시간": "22:59:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2026, + "역명": "부전", + "시간": "07:54:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 16, + "열번": 1059, + "역명": "부전", + "시간": "08:55:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2038, + "역명": "부전", + "시간": "08:24:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 18, + "열번": 1007, + "역명": "부전", + "시간": "06:06:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2028, + "역명": "부전", + "시간": "07:59:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1061, + "역명": "부전", + "시간": "09:01:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2090, + "역명": "부전", + "시간": "10:52:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1119, + "역명": "부전", + "시간": "11:55:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2148, + "역명": "부전", + "시간": "13:46:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1183, + "역명": "부전", + "시간": "14:51:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2210, + "역명": "부전", + "시간": "16:43:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1247, + "역명": "부전", + "시간": "17:49:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2040, + "역명": "부전", + "시간": "08:29:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1071, + "역명": "부전", + "시간": "09:31:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2100, + "역명": "부전", + "시간": "11:22:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1131, + "역명": "부전", + "시간": "12:28:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2158, + "역명": "부전", + "시간": "14:20:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1195, + "역명": "부전", + "시간": "15:24:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2222, + "역명": "부전", + "시간": "17:15:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2030, + "역명": "부전", + "시간": "08:04:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1063, + "역명": "부전", + "시간": "09:07:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2092, + "역명": "부전", + "시간": "10:58:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1121, + "역명": "부전", + "시간": "12:00:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2150, + "역명": "부전", + "시간": "13:52:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1185, + "역명": "부전", + "시간": "14:56:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2212, + "역명": "부전", + "시간": "16:49:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1249, + "역명": "부전", + "시간": "17:55:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2274, + "역명": "부전", + "시간": "19:45:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1295, + "역명": "부전", + "시간": "20:52:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2318, + "역명": "부전", + "시간": "22:49:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 20, + "열번": 7931, + "역명": "부전", + "시간": "23:58:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 21, + "열번": 1013, + "역명": "부전", + "시간": "06:39:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2042, + "역명": "부전", + "시간": "08:34:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1073, + "역명": "부전", + "시간": "09:37:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2102, + "역명": "부전", + "시간": "11:28:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1133, + "역명": "부전", + "시간": "12:33:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2160, + "역명": "부전", + "시간": "14:26:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1197, + "역명": "부전", + "시간": "15:29:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2224, + "역명": "부전", + "시간": "17:20:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1257, + "역명": "부전", + "시간": "18:23:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2282, + "역명": "부전", + "시간": "20:14:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1301, + "역명": "부전", + "시간": "21:16:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2322, + "역명": "부전", + "시간": "23:11:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2034, + "역명": "부전", + "시간": "08:14:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1067, + "역명": "부전", + "시간": "09:19:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2096, + "역명": "부전", + "시간": "11:10:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1125, + "역명": "부전", + "시간": "12:11:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2044, + "역명": "부전", + "시간": "08:39:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1075, + "역명": "부전", + "시간": "09:43:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2104, + "역명": "부전", + "시간": "11:34:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1135, + "역명": "부전", + "시간": "12:39:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2162, + "역명": "부전", + "시간": "14:31:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1199, + "역명": "부전", + "시간": "15:35:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2228, + "역명": "부전", + "시간": "17:30:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "부전", + "시간": "08:49:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1079, + "역명": "부전", + "시간": "09:55:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2108, + "역명": "부전", + "시간": "11:46:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1139, + "역명": "부전", + "시간": "12:50:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2166, + "역명": "부전", + "시간": "14:42:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1203, + "역명": "부전", + "시간": "15:46:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2232, + "역명": "부전", + "시간": "17:40:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1263, + "역명": "부전", + "시간": "18:44:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2288, + "역명": "부전", + "시간": "20:38:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1307, + "역명": "부전", + "시간": "21:40:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 24, + "열번": 2326, + "역명": "부전", + "시간": "23:35:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "부전", + "시간": "07:07:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2054, + "역명": "부전", + "시간": "09:04:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1083, + "역명": "부전", + "시간": "10:07:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2112, + "역명": "부전", + "시간": "11:58:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1143, + "역명": "부전", + "시간": "13:01:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2170, + "역명": "부전", + "시간": "14:53:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1207, + "역명": "부전", + "시간": "15:57:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2236, + "역명": "부전", + "시간": "17:50:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1267, + "역명": "부전", + "시간": "19:00:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2292, + "역명": "부전", + "시간": "20:54:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1311, + "역명": "부전", + "시간": "21:56:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2328, + "역명": "부전", + "시간": "23:47:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2052, + "역명": "부전", + "시간": "08:59:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1081, + "역명": "부전", + "시간": "10:01:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2110, + "역명": "부전", + "시간": "11:52:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1141, + "역명": "부전", + "시간": "12:55:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2168, + "역명": "부전", + "시간": "14:48:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1205, + "역명": "부전", + "시간": "15:51:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2234, + "역명": "부전", + "시간": "17:45:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1265, + "역명": "부전", + "시간": "18:52:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2290, + "역명": "부전", + "시간": "20:46:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1309, + "역명": "부전", + "시간": "21:48:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1025, + "역명": "부전", + "시간": "07:30:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2060, + "역명": "부전", + "시간": "09:22:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1089, + "역명": "부전", + "시간": "10:25:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2118, + "역명": "부전", + "시간": "12:16:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1151, + "역명": "부전", + "시간": "13:23:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2178, + "역명": "부전", + "시간": "15:15:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1215, + "역명": "부전", + "시간": "16:19:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2244, + "역명": "부전", + "시간": "18:14:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1271, + "역명": "부전", + "시간": "19:16:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2296, + "역명": "부전", + "시간": "21:10:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 27, + "열번": 1315, + "역명": "부전", + "시간": "22:16:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 28, + "열번": 1029, + "역명": "부전", + "시간": "07:40:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2064, + "역명": "부전", + "시간": "09:34:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1093, + "역명": "부전", + "시간": "10:37:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2122, + "역명": "부전", + "시간": "12:28:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1155, + "역명": "부전", + "시간": "13:34:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2182, + "역명": "부전", + "시간": "15:26:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1219, + "역명": "부전", + "시간": "16:30:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1035, + "역명": "부전", + "시간": "07:55:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2068, + "역명": "부전", + "시간": "09:46:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1097, + "역명": "부전", + "시간": "10:49:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2126, + "역명": "부전", + "시간": "12:40:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1159, + "역명": "부전", + "시간": "13:45:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2186, + "역명": "부전", + "시간": "15:37:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1223, + "역명": "부전", + "시간": "16:41:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 29, + "열번": 2250, + "역명": "부전", + "시간": "18:32:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1031, + "역명": "부전", + "시간": "07:45:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1037, + "역명": "부전", + "시간": "08:00:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2070, + "역명": "부전", + "시간": "09:52:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1099, + "역명": "부전", + "시간": "10:55:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2128, + "역명": "부전", + "시간": "12:46:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1161, + "역명": "부전", + "시간": "13:50:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2188, + "역명": "부전", + "시간": "15:43:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1225, + "역명": "부전", + "시간": "16:46:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2252, + "역명": "부전", + "시간": "18:38:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1277, + "역명": "부전", + "시간": "19:40:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2302, + "역명": "부전", + "시간": "21:34:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1319, + "역명": "부전", + "시간": "22:36:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 32, + "열번": 1041, + "역명": "부전", + "시간": "08:10:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1045, + "역명": "부전", + "시간": "08:20:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2076, + "역명": "부전", + "시간": "10:10:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1105, + "역명": "부전", + "시간": "11:13:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2134, + "역명": "부전", + "시간": "13:04:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1167, + "역명": "부전", + "시간": "14:07:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2194, + "역명": "부전", + "시간": "15:59:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1231, + "역명": "부전", + "시간": "17:03:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 33, + "열번": 2258, + "역명": "부전", + "시간": "18:56:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 34, + "열번": 8904, + "역명": "부전", + "시간": "14:04:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1189, + "역명": "부전", + "시간": "15:07:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 34, + "열번": 2216, + "역명": "부전", + "시간": "17:00:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1251, + "역명": "부전", + "시간": "18:02:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 34, + "열번": 2276, + "역명": "부전", + "시간": "19:52:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1297, + "역명": "부전", + "시간": "21:00:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1047, + "역명": "부전", + "시간": "08:25:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2078, + "역명": "부전", + "시간": "10:16:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1107, + "역명": "부전", + "시간": "11:19:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2136, + "역명": "부전", + "시간": "13:10:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1169, + "역명": "부전", + "시간": "14:12:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2196, + "역명": "부전", + "시간": "16:05:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1233, + "역명": "부전", + "시간": "17:08:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2260, + "역명": "부전", + "시간": "19:02:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1283, + "역명": "부전", + "시간": "20:04:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2308, + "역명": "부전", + "시간": "21:59:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1325, + "역명": "부전", + "시간": "23:08:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 36, + "열번": 2226, + "역명": "부전", + "시간": "17:25:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1259, + "역명": "부전", + "시간": "18:30:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 36, + "열번": 2284, + "역명": "부전", + "시간": "20:22:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1303, + "역명": "부전", + "시간": "21:24:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1127, + "역명": "부전", + "시간": "12:17:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2154, + "역명": "부전", + "시간": "14:09:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1191, + "역명": "부전", + "시간": "15:13:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2218, + "역명": "부전", + "시간": "17:05:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1253, + "역명": "부전", + "시간": "18:09:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 37, + "열번": 2278, + "역명": "부전", + "시간": "19:59:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 39, + "열번": 1149, + "역명": "부전", + "시간": "13:17:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2176, + "역명": "부전", + "시간": "15:10:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1213, + "역명": "부전", + "시간": "16:13:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 39, + "열번": 2242, + "역명": "부전", + "시간": "18:08:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 41, + "열번": 1175, + "역명": "부전", + "시간": "14:29:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2202, + "역명": "부전", + "시간": "16:21:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1239, + "역명": "부전", + "시간": "17:25:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2266, + "역명": "부전", + "시간": "19:20:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1289, + "역명": "부전", + "시간": "20:28:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2312, + "역명": "부전", + "시간": "22:19:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1327, + "역명": "부전", + "시간": "23:20:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "서면", + "시간": "05:53:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "서면", + "시간": "07:00:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2050, + "역명": "서면", + "시간": "08:52:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "서면", + "시간": "05:37:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "서면", + "시간": "06:51:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "서면", + "시간": "08:42:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1077, + "역명": "서면", + "시간": "09:50:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2106, + "역명": "서면", + "시간": "11:38:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1137, + "역명": "서면", + "시간": "12:46:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2164, + "역명": "서면", + "시간": "14:35:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1201, + "역명": "서면", + "시간": "15:42:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2230, + "역명": "서면", + "시간": "17:33:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1261, + "역명": "서면", + "시간": "18:38:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2286, + "역명": "서면", + "시간": "20:28:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1305, + "역명": "서면", + "시간": "21:33:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 2, + "열번": 2324, + "역명": "서면", + "시간": "23:21:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "서면", + "시간": "06:06:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "서면", + "시간": "07:18:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2056, + "역명": "서면", + "시간": "09:08:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1085, + "역명": "서면", + "시간": "10:14:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2114, + "역명": "서면", + "시간": "12:02:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1145, + "역명": "서면", + "시간": "13:08:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2172, + "역명": "서면", + "시간": "14:57:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1209, + "역명": "서면", + "시간": "16:04:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2238, + "역명": "서면", + "시간": "17:54:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "서면", + "시간": "06:19:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1023, + "역명": "서면", + "시간": "07:25:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2058, + "역명": "서면", + "시간": "09:14:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1087, + "역명": "서면", + "시간": "10:20:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2116, + "역명": "서면", + "시간": "12:08:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1147, + "역명": "서면", + "시간": "13:13:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2174, + "역명": "서면", + "시간": "15:02:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1211, + "역명": "서면", + "시간": "16:09:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2240, + "역명": "서면", + "시간": "18:00:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1269, + "역명": "서면", + "시간": "19:09:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2294, + "역명": "서면", + "시간": "21:00:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1313, + "역명": "서면", + "시간": "22:07:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2330, + "역명": "서면", + "시간": "23:59:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 5, + "열번": 1001, + "역명": "서면", + "시간": "05:37:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2018, + "역명": "서면", + "시간": "07:27:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1051, + "역명": "서면", + "시간": "08:36:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2082, + "역명": "서면", + "시간": "10:26:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1111, + "역명": "서면", + "시간": "11:32:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2140, + "역명": "서면", + "시간": "13:20:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1173, + "역명": "서면", + "시간": "14:25:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2200, + "역명": "서면", + "시간": "16:14:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1237, + "역명": "서면", + "시간": "17:21:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2264, + "역명": "서면", + "시간": "19:12:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1287, + "역명": "서면", + "시간": "20:21:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2310, + "역명": "서면", + "시간": "22:07:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2008, + "역명": "서면", + "시간": "06:31:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1027, + "역명": "서면", + "시간": "07:36:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2062, + "역명": "서면", + "시간": "09:26:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1091, + "역명": "서면", + "시간": "10:32:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2120, + "역명": "서면", + "시간": "12:20:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1153, + "역명": "서면", + "시간": "13:30:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2180, + "역명": "서면", + "시간": "15:19:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1217, + "역명": "서면", + "시간": "16:26:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2246, + "역명": "서면", + "시간": "18:18:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1273, + "역명": "서면", + "시간": "19:25:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2298, + "역명": "서면", + "시간": "21:16:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1317, + "역명": "서면", + "시간": "22:27:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1003, + "역명": "서면", + "시간": "05:46:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2020, + "역명": "서면", + "시간": "07:35:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1053, + "역명": "서면", + "시간": "08:41:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2084, + "역명": "서면", + "시간": "10:32:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1113, + "역명": "서면", + "시간": "11:38:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2142, + "역명": "서면", + "시간": "13:26:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1177, + "역명": "서면", + "시간": "14:36:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2204, + "역명": "서면", + "시간": "16:25:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1241, + "역명": "서면", + "시간": "17:32:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2268, + "역명": "서면", + "시간": "19:24:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1291, + "역명": "서면", + "시간": "20:37:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2314, + "역명": "서면", + "시간": "22:27:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 7, + "열번": 1329, + "역명": "서면", + "시간": "23:33:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2010, + "역명": "서면", + "시간": "06:43:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1033, + "역명": "서면", + "시간": "07:51:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2066, + "역명": "서면", + "시간": "09:38:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1095, + "역명": "서면", + "시간": "10:44:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2124, + "역명": "서면", + "시간": "12:32:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1157, + "역명": "서면", + "시간": "13:41:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2184, + "역명": "서면", + "시간": "15:30:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1221, + "역명": "서면", + "시간": "16:37:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2248, + "역명": "서면", + "시간": "18:24:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1275, + "역명": "서면", + "시간": "19:33:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 8, + "열번": 2300, + "역명": "서면", + "시간": "21:24:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 9, + "열번": 2022, + "역명": "서면", + "시간": "07:41:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1055, + "역명": "서면", + "시간": "08:46:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2086, + "역명": "서면", + "시간": "10:38:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1115, + "역명": "서면", + "시간": "11:44:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2144, + "역명": "서면", + "시간": "13:32:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1179, + "역명": "서면", + "시간": "14:41:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2206, + "역명": "서면", + "시간": "16:30:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1243, + "역명": "서면", + "시간": "17:38:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 9, + "열번": 2270, + "역명": "서면", + "시간": "19:30:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2012, + "역명": "서면", + "시간": "06:55:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1039, + "역명": "서면", + "시간": "08:06:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2072, + "역명": "서면", + "시간": "09:56:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1101, + "역명": "서면", + "시간": "11:02:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2130, + "역명": "서면", + "시간": "12:50:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1163, + "역명": "서면", + "시간": "13:57:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2190, + "역명": "서면", + "시간": "15:46:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1227, + "역명": "서면", + "시간": "16:53:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2254, + "역명": "서면", + "시간": "18:42:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1279, + "역명": "서면", + "시간": "19:49:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2304, + "역명": "서면", + "시간": "21:40:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1321, + "역명": "서면", + "시간": "22:47:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 11, + "열번": 1005, + "역명": "서면", + "시간": "05:57:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2024, + "역명": "서면", + "시간": "07:47:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1057, + "역명": "서면", + "시간": "08:51:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2088, + "역명": "서면", + "시간": "10:44:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1117, + "역명": "서면", + "시간": "11:50:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2146, + "역명": "서면", + "시간": "13:38:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1181, + "역명": "서면", + "시간": "14:47:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2208, + "역명": "서면", + "시간": "16:36:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1245, + "역명": "서면", + "시간": "17:44:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2272, + "역명": "서면", + "시간": "19:36:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1293, + "역명": "서면", + "시간": "20:45:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2316, + "역명": "서면", + "시간": "22:37:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 11, + "열번": 1331, + "역명": "서면", + "시간": "23:44:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2014, + "역명": "서면", + "시간": "07:07:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1043, + "역명": "서면", + "시간": "08:16:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2074, + "역명": "서면", + "시간": "10:02:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1103, + "역명": "서면", + "시간": "11:08:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2132, + "역명": "서면", + "시간": "12:56:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1165, + "역명": "서면", + "시간": "14:03:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "서면", + "시간": "15:52:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1229, + "역명": "서면", + "시간": "16:59:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2256, + "역명": "서면", + "시간": "18:48:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1281, + "역명": "서면", + "시간": "19:57:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2306, + "역명": "서면", + "시간": "21:48:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1323, + "역명": "서면", + "시간": "22:58:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1009, + "역명": "서면", + "시간": "06:19:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2032, + "역명": "서면", + "시간": "08:07:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1065, + "역명": "서면", + "시간": "09:14:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2094, + "역명": "서면", + "시간": "11:02:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1123, + "역명": "서면", + "시간": "12:07:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2152, + "역명": "서면", + "시간": "13:56:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1187, + "역명": "서면", + "시간": "15:03:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 13, + "열번": 2214, + "역명": "서면", + "시간": "16:52:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2016, + "역명": "서면", + "시간": "07:18:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1049, + "역명": "서면", + "시간": "08:31:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2080, + "역명": "서면", + "시간": "10:20:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1109, + "역명": "서면", + "시간": "11:26:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2138, + "역명": "서면", + "시간": "13:14:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1171, + "역명": "서면", + "시간": "14:19:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2198, + "역명": "서면", + "시간": "16:08:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1235, + "역명": "서면", + "시간": "17:15:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2262, + "역명": "서면", + "시간": "19:06:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1285, + "역명": "서면", + "시간": "20:13:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1011, + "역명": "서면", + "시간": "06:30:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2036, + "역명": "서면", + "시간": "08:17:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1069, + "역명": "서면", + "시간": "09:26:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2098, + "역명": "서면", + "시간": "11:14:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1129, + "역명": "서면", + "시간": "12:24:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2156, + "역명": "서면", + "시간": "14:13:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1193, + "역명": "서면", + "시간": "15:20:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2220, + "역명": "서면", + "시간": "17:08:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1255, + "역명": "서면", + "시간": "18:17:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2280, + "역명": "서면", + "시간": "20:04:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1299, + "역명": "서면", + "시간": "21:09:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2320, + "역명": "서면", + "시간": "22:57:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2026, + "역명": "서면", + "시간": "07:52:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 16, + "열번": 1059, + "역명": "서면", + "시간": "08:56:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2038, + "역명": "서면", + "시간": "08:22:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 18, + "열번": 1007, + "역명": "서면", + "시간": "06:08:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2028, + "역명": "서면", + "시간": "07:57:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1061, + "역명": "서면", + "시간": "09:02:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2090, + "역명": "서면", + "시간": "10:50:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1119, + "역명": "서면", + "시간": "11:56:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2148, + "역명": "서면", + "시간": "13:44:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1183, + "역명": "서면", + "시간": "14:52:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2210, + "역명": "서면", + "시간": "16:41:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1247, + "역명": "서면", + "시간": "17:50:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2040, + "역명": "서면", + "시간": "08:27:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1071, + "역명": "서면", + "시간": "09:32:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2100, + "역명": "서면", + "시간": "11:20:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1131, + "역명": "서면", + "시간": "12:29:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2158, + "역명": "서면", + "시간": "14:18:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1195, + "역명": "서면", + "시간": "15:25:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2222, + "역명": "서면", + "시간": "17:13:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2030, + "역명": "서면", + "시간": "08:02:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1063, + "역명": "서면", + "시간": "09:08:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2092, + "역명": "서면", + "시간": "10:56:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1121, + "역명": "서면", + "시간": "12:02:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2150, + "역명": "서면", + "시간": "13:50:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1185, + "역명": "서면", + "시간": "14:58:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2212, + "역명": "서면", + "시간": "16:47:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1249, + "역명": "서면", + "시간": "17:56:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2274, + "역명": "서면", + "시간": "19:43:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1295, + "역명": "서면", + "시간": "20:53:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2318, + "역명": "서면", + "시간": "22:47:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 20, + "열번": 7931, + "역명": "서면", + "시간": "00:00:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 21, + "열번": 1013, + "역명": "서면", + "시간": "06:41:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2042, + "역명": "서면", + "시간": "08:32:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1073, + "역명": "서면", + "시간": "09:38:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2102, + "역명": "서면", + "시간": "11:26:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1133, + "역명": "서면", + "시간": "12:35:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2160, + "역명": "서면", + "시간": "14:24:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1197, + "역명": "서면", + "시간": "15:31:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2224, + "역명": "서면", + "시간": "17:18:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1257, + "역명": "서면", + "시간": "18:24:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2282, + "역명": "서면", + "시간": "20:12:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1301, + "역명": "서면", + "시간": "21:17:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2322, + "역명": "서면", + "시간": "23:09:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2034, + "역명": "서면", + "시간": "08:12:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1067, + "역명": "서면", + "시간": "09:20:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2096, + "역명": "서면", + "시간": "11:08:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1125, + "역명": "서면", + "시간": "12:13:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2044, + "역명": "서면", + "시간": "08:37:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1075, + "역명": "서면", + "시간": "09:44:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2104, + "역명": "서면", + "시간": "11:32:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1135, + "역명": "서면", + "시간": "12:40:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2162, + "역명": "서면", + "시간": "14:29:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1199, + "역명": "서면", + "시간": "15:36:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2228, + "역명": "서면", + "시간": "17:28:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "서면", + "시간": "08:47:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1079, + "역명": "서면", + "시간": "09:56:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2108, + "역명": "서면", + "시간": "11:44:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1139, + "역명": "서면", + "시간": "12:51:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2166, + "역명": "서면", + "시간": "14:40:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1203, + "역명": "서면", + "시간": "15:47:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2232, + "역명": "서면", + "시간": "17:38:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1263, + "역명": "서면", + "시간": "18:45:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2288, + "역명": "서면", + "시간": "20:36:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1307, + "역명": "서면", + "시간": "21:41:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 24, + "열번": 2326, + "역명": "서면", + "시간": "23:33:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "서면", + "시간": "07:09:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2054, + "역명": "서면", + "시간": "09:02:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1083, + "역명": "서면", + "시간": "10:08:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2112, + "역명": "서면", + "시간": "11:56:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1143, + "역명": "서면", + "시간": "13:02:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2170, + "역명": "서면", + "시간": "14:51:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1207, + "역명": "서면", + "시간": "15:58:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2236, + "역명": "서면", + "시간": "17:48:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1267, + "역명": "서면", + "시간": "19:01:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2292, + "역명": "서면", + "시간": "20:52:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1311, + "역명": "서면", + "시간": "21:57:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2328, + "역명": "서면", + "시간": "23:44:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2052, + "역명": "서면", + "시간": "08:57:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1081, + "역명": "서면", + "시간": "10:02:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2110, + "역명": "서면", + "시간": "11:50:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1141, + "역명": "서면", + "시간": "12:57:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2168, + "역명": "서면", + "시간": "14:46:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1205, + "역명": "서면", + "시간": "15:53:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2234, + "역명": "서면", + "시간": "17:43:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1265, + "역명": "서면", + "시간": "18:53:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2290, + "역명": "서면", + "시간": "20:44:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1309, + "역명": "서면", + "시간": "21:49:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1025, + "역명": "서면", + "시간": "07:31:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2060, + "역명": "서면", + "시간": "09:20:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1089, + "역명": "서면", + "시간": "10:26:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2118, + "역명": "서면", + "시간": "12:14:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1151, + "역명": "서면", + "시간": "13:24:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2178, + "역명": "서면", + "시간": "15:13:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1215, + "역명": "서면", + "시간": "16:20:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2244, + "역명": "서면", + "시간": "18:12:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1271, + "역명": "서면", + "시간": "19:17:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2296, + "역명": "서면", + "시간": "21:08:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 27, + "열번": 1315, + "역명": "서면", + "시간": "22:17:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 28, + "열번": 1029, + "역명": "서면", + "시간": "07:41:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2064, + "역명": "서면", + "시간": "09:32:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1093, + "역명": "서면", + "시간": "10:38:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2122, + "역명": "서면", + "시간": "12:26:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1155, + "역명": "서면", + "시간": "13:35:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2182, + "역명": "서면", + "시간": "15:24:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1219, + "역명": "서면", + "시간": "16:31:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1035, + "역명": "서면", + "시간": "07:56:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2068, + "역명": "서면", + "시간": "09:44:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1097, + "역명": "서면", + "시간": "10:50:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2126, + "역명": "서면", + "시간": "12:38:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1159, + "역명": "서면", + "시간": "13:46:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2186, + "역명": "서면", + "시간": "15:35:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1223, + "역명": "서면", + "시간": "16:42:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 29, + "열번": 2250, + "역명": "서면", + "시간": "18:30:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1031, + "역명": "서면", + "시간": "07:46:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1037, + "역명": "서면", + "시간": "08:01:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2070, + "역명": "서면", + "시간": "09:50:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1099, + "역명": "서면", + "시간": "10:56:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2128, + "역명": "서면", + "시간": "12:44:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1161, + "역명": "서면", + "시간": "13:52:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2188, + "역명": "서면", + "시간": "15:41:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1225, + "역명": "서면", + "시간": "16:48:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2252, + "역명": "서면", + "시간": "18:36:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1277, + "역명": "서면", + "시간": "19:41:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2302, + "역명": "서면", + "시간": "21:32:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1319, + "역명": "서면", + "시간": "22:37:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 32, + "열번": 1041, + "역명": "서면", + "시간": "08:11:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1045, + "역명": "서면", + "시간": "08:21:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2076, + "역명": "서면", + "시간": "10:08:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1105, + "역명": "서면", + "시간": "11:14:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2134, + "역명": "서면", + "시간": "13:02:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1167, + "역명": "서면", + "시간": "14:08:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2194, + "역명": "서면", + "시간": "15:57:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1231, + "역명": "서면", + "시간": "17:04:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 33, + "열번": 2258, + "역명": "서면", + "시간": "18:54:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 34, + "열번": 8904, + "역명": "서면", + "시간": "14:02:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1189, + "역명": "서면", + "시간": "15:09:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 34, + "열번": 2216, + "역명": "서면", + "시간": "16:58:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1251, + "역명": "서면", + "시간": "18:03:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 34, + "열번": 2276, + "역명": "서면", + "시간": "19:50:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1297, + "역명": "서면", + "시간": "21:01:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1047, + "역명": "서면", + "시간": "08:26:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2078, + "역명": "서면", + "시간": "10:14:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1107, + "역명": "서면", + "시간": "11:20:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2136, + "역명": "서면", + "시간": "13:08:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1169, + "역명": "서면", + "시간": "14:14:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2196, + "역명": "서면", + "시간": "16:03:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1233, + "역명": "서면", + "시간": "17:10:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2260, + "역명": "서면", + "시간": "19:00:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1283, + "역명": "서면", + "시간": "20:05:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2308, + "역명": "서면", + "시간": "21:57:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1325, + "역명": "서면", + "시간": "23:09:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 36, + "열번": 2226, + "역명": "서면", + "시간": "17:23:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1259, + "역명": "서면", + "시간": "18:31:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 36, + "열번": 2284, + "역명": "서면", + "시간": "20:20:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1303, + "역명": "서면", + "시간": "21:25:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1127, + "역명": "서면", + "시간": "12:18:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2154, + "역명": "서면", + "시간": "14:07:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1191, + "역명": "서면", + "시간": "15:14:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2218, + "역명": "서면", + "시간": "17:03:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1253, + "역명": "서면", + "시간": "18:10:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 37, + "열번": 2278, + "역명": "서면", + "시간": "19:57:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 39, + "열번": 1149, + "역명": "서면", + "시간": "13:19:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2176, + "역명": "서면", + "시간": "15:08:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1213, + "역명": "서면", + "시간": "16:15:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 39, + "열번": 2242, + "역명": "서면", + "시간": "18:06:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 41, + "열번": 1175, + "역명": "서면", + "시간": "14:30:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2202, + "역명": "서면", + "시간": "16:19:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1239, + "역명": "서면", + "시간": "17:26:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2266, + "역명": "서면", + "시간": "19:18:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1289, + "역명": "서면", + "시간": "20:29:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2312, + "역명": "서면", + "시간": "22:17:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1327, + "역명": "서면", + "시간": "23:21:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "범내골", + "시간": "05:51:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "범내골", + "시간": "07:02:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2050, + "역명": "범내골", + "시간": "08:50:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "범내골", + "시간": "05:35:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "범내골", + "시간": "06:53:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "범내골", + "시간": "08:40:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1077, + "역명": "범내골", + "시간": "09:53:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2106, + "역명": "범내골", + "시간": "11:36:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1137, + "역명": "범내골", + "시간": "12:48:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2164, + "역명": "범내골", + "시간": "14:33:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1201, + "역명": "범내골", + "시간": "15:44:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2230, + "역명": "범내골", + "시간": "17:31:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1261, + "역명": "범내골", + "시간": "18:41:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2286, + "역명": "범내골", + "시간": "20:26:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1305, + "역명": "범내골", + "시간": "21:36:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 2, + "열번": 2324, + "역명": "범내골", + "시간": "23:19:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "범내골", + "시간": "06:04:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "범내골", + "시간": "07:20:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2056, + "역명": "범내골", + "시간": "09:06:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1085, + "역명": "범내골", + "시간": "10:17:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2114, + "역명": "범내골", + "시간": "12:00:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1145, + "역명": "범내골", + "시간": "13:10:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2172, + "역명": "범내골", + "시간": "14:55:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1209, + "역명": "범내골", + "시간": "16:06:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2238, + "역명": "범내골", + "시간": "17:52:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "범내골", + "시간": "06:17:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1023, + "역명": "범내골", + "시간": "07:27:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2058, + "역명": "범내골", + "시간": "09:12:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1087, + "역명": "범내골", + "시간": "10:23:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2116, + "역명": "범내골", + "시간": "12:06:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1147, + "역명": "범내골", + "시간": "13:16:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2174, + "역명": "범내골", + "시간": "15:00:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1211, + "역명": "범내골", + "시간": "16:12:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2240, + "역명": "범내골", + "시간": "17:58:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1269, + "역명": "범내골", + "시간": "19:12:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2294, + "역명": "범내골", + "시간": "20:58:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1313, + "역명": "범내골", + "시간": "22:10:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2330, + "역명": "범내골", + "시간": "23:57:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 5, + "열번": 1001, + "역명": "범내골", + "시간": "05:41:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2018, + "역명": "범내골", + "시간": "07:25:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1051, + "역명": "범내골", + "시간": "08:39:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2082, + "역명": "범내골", + "시간": "10:24:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1111, + "역명": "범내골", + "시간": "11:35:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2140, + "역명": "범내골", + "시간": "13:18:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1173, + "역명": "범내골", + "시간": "14:27:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2200, + "역명": "범내골", + "시간": "16:12:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1237, + "역명": "범내골", + "시간": "17:23:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2264, + "역명": "범내골", + "시간": "19:10:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1287, + "역명": "범내골", + "시간": "20:24:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2310, + "역명": "범내골", + "시간": "22:05:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2008, + "역명": "범내골", + "시간": "06:29:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1027, + "역명": "범내골", + "시간": "07:39:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2062, + "역명": "범내골", + "시간": "09:24:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1091, + "역명": "범내골", + "시간": "10:35:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2120, + "역명": "범내골", + "시간": "12:18:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1153, + "역명": "범내골", + "시간": "13:32:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2180, + "역명": "범내골", + "시간": "15:17:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1217, + "역명": "범내골", + "시간": "16:28:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2246, + "역명": "범내골", + "시간": "18:16:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1273, + "역명": "범내골", + "시간": "19:28:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2298, + "역명": "범내골", + "시간": "21:14:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1317, + "역명": "범내골", + "시간": "22:30:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1003, + "역명": "범내골", + "시간": "05:48:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2020, + "역명": "범내골", + "시간": "07:33:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1053, + "역명": "범내골", + "시간": "08:44:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2084, + "역명": "범내골", + "시간": "10:30:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1113, + "역명": "범내골", + "시간": "11:41:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2142, + "역명": "범내골", + "시간": "13:24:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1177, + "역명": "범내골", + "시간": "14:38:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2204, + "역명": "범내골", + "시간": "16:23:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1241, + "역명": "범내골", + "시간": "17:35:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2268, + "역명": "범내골", + "시간": "19:22:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1291, + "역명": "범내골", + "시간": "20:40:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2314, + "역명": "범내골", + "시간": "22:25:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 7, + "열번": 1329, + "역명": "범내골", + "시간": "23:36:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2010, + "역명": "범내골", + "시간": "06:41:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1033, + "역명": "범내골", + "시간": "07:54:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2066, + "역명": "범내골", + "시간": "09:36:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1095, + "역명": "범내골", + "시간": "10:47:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2124, + "역명": "범내골", + "시간": "12:30:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1157, + "역명": "범내골", + "시간": "13:43:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2184, + "역명": "범내골", + "시간": "15:28:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1221, + "역명": "범내골", + "시간": "16:39:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2248, + "역명": "범내골", + "시간": "18:22:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1275, + "역명": "범내골", + "시간": "19:36:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 8, + "열번": 2300, + "역명": "범내골", + "시간": "21:22:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 9, + "열번": 2022, + "역명": "범내골", + "시간": "07:39:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1055, + "역명": "범내골", + "시간": "08:49:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2086, + "역명": "범내골", + "시간": "10:36:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1115, + "역명": "범내골", + "시간": "11:47:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2144, + "역명": "범내골", + "시간": "13:30:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1179, + "역명": "범내골", + "시간": "14:44:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2206, + "역명": "범내골", + "시간": "16:28:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1243, + "역명": "범내골", + "시간": "17:41:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 9, + "열번": 2270, + "역명": "범내골", + "시간": "19:28:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2012, + "역명": "범내골", + "시간": "06:53:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1039, + "역명": "범내골", + "시간": "08:09:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2072, + "역명": "범내골", + "시간": "09:54:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1101, + "역명": "범내골", + "시간": "11:05:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2130, + "역명": "범내골", + "시간": "12:48:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1163, + "역명": "범내골", + "시간": "14:00:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2190, + "역명": "범내골", + "시간": "15:44:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1227, + "역명": "범내골", + "시간": "16:56:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2254, + "역명": "범내골", + "시간": "18:40:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1279, + "역명": "범내골", + "시간": "19:52:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2304, + "역명": "범내골", + "시간": "21:38:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1321, + "역명": "범내골", + "시간": "22:50:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 11, + "열번": 1005, + "역명": "범내골", + "시간": "05:59:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2024, + "역명": "범내골", + "시간": "07:45:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1057, + "역명": "범내골", + "시간": "08:54:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2088, + "역명": "범내골", + "시간": "10:42:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1117, + "역명": "범내골", + "시간": "11:53:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2146, + "역명": "범내골", + "시간": "13:36:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1181, + "역명": "범내골", + "시간": "14:49:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2208, + "역명": "범내골", + "시간": "16:34:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1245, + "역명": "범내골", + "시간": "17:47:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2272, + "역명": "범내골", + "시간": "19:34:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1293, + "역명": "범내골", + "시간": "20:48:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2316, + "역명": "범내골", + "시간": "22:35:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 11, + "열번": 1331, + "역명": "범내골", + "시간": "23:48:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2014, + "역명": "범내골", + "시간": "07:05:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1043, + "역명": "범내골", + "시간": "08:19:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2074, + "역명": "범내골", + "시간": "10:00:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1103, + "역명": "범내골", + "시간": "11:11:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2132, + "역명": "범내골", + "시간": "12:54:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1165, + "역명": "범내골", + "시간": "14:05:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "범내골", + "시간": "15:50:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1229, + "역명": "범내골", + "시간": "17:01:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2256, + "역명": "범내골", + "시간": "18:46:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1281, + "역명": "범내골", + "시간": "20:00:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2306, + "역명": "범내골", + "시간": "21:46:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1323, + "역명": "범내골", + "시간": "23:01:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1009, + "역명": "범내골", + "시간": "06:21:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2032, + "역명": "범내골", + "시간": "08:05:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1065, + "역명": "범내골", + "시간": "09:17:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2094, + "역명": "범내골", + "시간": "11:00:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1123, + "역명": "범내골", + "시간": "12:10:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2152, + "역명": "범내골", + "시간": "13:54:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1187, + "역명": "범내골", + "시간": "15:06:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 13, + "열번": 2214, + "역명": "범내골", + "시간": "16:50:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2016, + "역명": "범내골", + "시간": "07:16:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1049, + "역명": "범내골", + "시간": "08:34:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2080, + "역명": "범내골", + "시간": "10:18:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1109, + "역명": "범내골", + "시간": "11:29:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2138, + "역명": "범내골", + "시간": "13:12:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1171, + "역명": "범내골", + "시간": "14:22:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2198, + "역명": "범내골", + "시간": "16:06:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1235, + "역명": "범내골", + "시간": "17:18:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2262, + "역명": "범내골", + "시간": "19:04:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1285, + "역명": "범내골", + "시간": "20:16:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1011, + "역명": "범내골", + "시간": "06:32:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2036, + "역명": "범내골", + "시간": "08:15:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1069, + "역명": "범내골", + "시간": "09:29:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2098, + "역명": "범내골", + "시간": "11:12:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1129, + "역명": "범내골", + "시간": "12:26:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2156, + "역명": "범내골", + "시간": "14:11:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1193, + "역명": "범내골", + "시간": "15:22:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2220, + "역명": "범내골", + "시간": "17:06:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1255, + "역명": "범내골", + "시간": "18:20:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2280, + "역명": "범내골", + "시간": "20:02:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1299, + "역명": "범내골", + "시간": "21:12:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2320, + "역명": "범내골", + "시간": "22:55:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2026, + "역명": "범내골", + "시간": "07:50:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 16, + "열번": 1059, + "역명": "범내골", + "시간": "08:59:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2038, + "역명": "범내골", + "시간": "08:20:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 18, + "열번": 1007, + "역명": "범내골", + "시간": "06:10:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2028, + "역명": "범내골", + "시간": "07:55:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1061, + "역명": "범내골", + "시간": "09:05:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2090, + "역명": "범내골", + "시간": "10:48:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1119, + "역명": "범내골", + "시간": "11:59:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2148, + "역명": "범내골", + "시간": "13:42:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1183, + "역명": "범내골", + "시간": "14:55:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2210, + "역명": "범내골", + "시간": "16:39:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1247, + "역명": "범내골", + "시간": "17:53:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2040, + "역명": "범내골", + "시간": "08:25:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1071, + "역명": "범내골", + "시간": "09:35:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2100, + "역명": "범내골", + "시간": "11:18:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1131, + "역명": "범내골", + "시간": "12:32:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2158, + "역명": "범내골", + "시간": "14:16:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1195, + "역명": "범내골", + "시간": "15:28:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2222, + "역명": "범내골", + "시간": "17:11:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2030, + "역명": "범내골", + "시간": "08:00:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1063, + "역명": "범내골", + "시간": "09:11:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2092, + "역명": "범내골", + "시간": "10:54:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1121, + "역명": "범내골", + "시간": "12:04:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2150, + "역명": "범내골", + "시간": "13:48:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1185, + "역명": "범내골", + "시간": "15:00:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2212, + "역명": "범내골", + "시간": "16:45:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1249, + "역명": "범내골", + "시간": "17:59:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2274, + "역명": "범내골", + "시간": "19:41:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1295, + "역명": "범내골", + "시간": "20:56:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2318, + "역명": "범내골", + "시간": "22:45:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 20, + "열번": 7931, + "역명": "범내골", + "시간": "00:04:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 21, + "열번": 1013, + "역명": "범내골", + "시간": "06:43:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2042, + "역명": "범내골", + "시간": "08:30:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1073, + "역명": "범내골", + "시간": "09:41:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2102, + "역명": "범내골", + "시간": "11:24:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1133, + "역명": "범내골", + "시간": "12:37:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2160, + "역명": "범내골", + "시간": "14:22:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1197, + "역명": "범내골", + "시간": "15:33:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2224, + "역명": "범내골", + "시간": "17:16:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1257, + "역명": "범내골", + "시간": "18:27:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2282, + "역명": "범내골", + "시간": "20:10:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1301, + "역명": "범내골", + "시간": "21:20:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2322, + "역명": "범내골", + "시간": "23:07:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2034, + "역명": "범내골", + "시간": "08:10:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1067, + "역명": "범내골", + "시간": "09:23:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2096, + "역명": "범내골", + "시간": "11:06:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1125, + "역명": "범내골", + "시간": "12:15:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2044, + "역명": "범내골", + "시간": "08:35:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1075, + "역명": "범내골", + "시간": "09:47:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2104, + "역명": "범내골", + "시간": "11:30:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1135, + "역명": "범내골", + "시간": "12:43:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2162, + "역명": "범내골", + "시간": "14:27:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1199, + "역명": "범내골", + "시간": "15:39:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2228, + "역명": "범내골", + "시간": "17:26:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "범내골", + "시간": "08:45:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1079, + "역명": "범내골", + "시간": "09:59:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2108, + "역명": "범내골", + "시간": "11:42:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1139, + "역명": "범내골", + "시간": "12:54:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2166, + "역명": "범내골", + "시간": "14:38:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1203, + "역명": "범내골", + "시간": "15:50:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2232, + "역명": "범내골", + "시간": "17:36:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1263, + "역명": "범내골", + "시간": "18:48:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2288, + "역명": "범내골", + "시간": "20:34:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1307, + "역명": "범내골", + "시간": "21:44:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 24, + "열번": 2326, + "역명": "범내골", + "시간": "23:31:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "범내골", + "시간": "07:11:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2054, + "역명": "범내골", + "시간": "09:00:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1083, + "역명": "범내골", + "시간": "10:11:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2112, + "역명": "범내골", + "시간": "11:54:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1143, + "역명": "범내골", + "시간": "13:05:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2170, + "역명": "범내골", + "시간": "14:49:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1207, + "역명": "범내골", + "시간": "16:01:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2236, + "역명": "범내골", + "시간": "17:46:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1267, + "역명": "범내골", + "시간": "19:04:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2292, + "역명": "범내골", + "시간": "20:50:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1311, + "역명": "범내골", + "시간": "22:00:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2328, + "역명": "범내골", + "시간": "23:42:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2052, + "역명": "범내골", + "시간": "08:55:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1081, + "역명": "범내골", + "시간": "10:05:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2110, + "역명": "범내골", + "시간": "11:48:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1141, + "역명": "범내골", + "시간": "12:59:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2168, + "역명": "범내골", + "시간": "14:44:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1205, + "역명": "범내골", + "시간": "15:55:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2234, + "역명": "범내골", + "시간": "17:41:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1265, + "역명": "범내골", + "시간": "18:56:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2290, + "역명": "범내골", + "시간": "20:42:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1309, + "역명": "범내골", + "시간": "21:52:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1025, + "역명": "범내골", + "시간": "07:34:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2060, + "역명": "범내골", + "시간": "09:18:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1089, + "역명": "범내골", + "시간": "10:29:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2118, + "역명": "범내골", + "시간": "12:12:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1151, + "역명": "범내골", + "시간": "13:27:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2178, + "역명": "범내골", + "시간": "15:11:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1215, + "역명": "범내골", + "시간": "16:23:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2244, + "역명": "범내골", + "시간": "18:10:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1271, + "역명": "범내골", + "시간": "19:20:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2296, + "역명": "범내골", + "시간": "21:06:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 27, + "열번": 1315, + "역명": "범내골", + "시간": "22:20:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 28, + "열번": 1029, + "역명": "범내골", + "시간": "07:44:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2064, + "역명": "범내골", + "시간": "09:30:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1093, + "역명": "범내골", + "시간": "10:41:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2122, + "역명": "범내골", + "시간": "12:24:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1155, + "역명": "범내골", + "시간": "13:38:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2182, + "역명": "범내골", + "시간": "15:22:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1219, + "역명": "범내골", + "시간": "16:34:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1035, + "역명": "범내골", + "시간": "07:59:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2068, + "역명": "범내골", + "시간": "09:42:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1097, + "역명": "범내골", + "시간": "10:53:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2126, + "역명": "범내골", + "시간": "12:36:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1159, + "역명": "범내골", + "시간": "13:49:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2186, + "역명": "범내골", + "시간": "15:33:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1223, + "역명": "범내골", + "시간": "16:45:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 29, + "열번": 2250, + "역명": "범내골", + "시간": "18:28:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1031, + "역명": "범내골", + "시간": "07:49:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1037, + "역명": "범내골", + "시간": "08:04:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2070, + "역명": "범내골", + "시간": "09:48:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1099, + "역명": "범내골", + "시간": "10:59:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2128, + "역명": "범내골", + "시간": "12:42:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1161, + "역명": "범내골", + "시간": "13:54:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2188, + "역명": "범내골", + "시간": "15:39:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1225, + "역명": "범내골", + "시간": "16:50:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2252, + "역명": "범내골", + "시간": "18:34:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1277, + "역명": "범내골", + "시간": "19:44:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2302, + "역명": "범내골", + "시간": "21:30:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1319, + "역명": "범내골", + "시간": "22:40:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 32, + "열번": 1041, + "역명": "범내골", + "시간": "08:14:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1045, + "역명": "범내골", + "시간": "08:24:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2076, + "역명": "범내골", + "시간": "10:06:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1105, + "역명": "범내골", + "시간": "11:17:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2134, + "역명": "범내골", + "시간": "13:00:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1167, + "역명": "범내골", + "시간": "14:11:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2194, + "역명": "범내골", + "시간": "15:55:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1231, + "역명": "범내골", + "시간": "17:07:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 33, + "열번": 2258, + "역명": "범내골", + "시간": "18:52:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 34, + "열번": 8904, + "역명": "범내골", + "시간": "14:00:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1189, + "역명": "범내골", + "시간": "15:11:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 34, + "열번": 2216, + "역명": "범내골", + "시간": "16:56:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1251, + "역명": "범내골", + "시간": "18:06:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 34, + "열번": 2276, + "역명": "범내골", + "시간": "19:48:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1297, + "역명": "범내골", + "시간": "21:04:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1047, + "역명": "범내골", + "시간": "08:29:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2078, + "역명": "범내골", + "시간": "10:12:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1107, + "역명": "범내골", + "시간": "11:23:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2136, + "역명": "범내골", + "시간": "13:06:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1169, + "역명": "범내골", + "시간": "14:16:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2196, + "역명": "범내골", + "시간": "16:01:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1233, + "역명": "범내골", + "시간": "17:12:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2260, + "역명": "범내골", + "시간": "18:58:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1283, + "역명": "범내골", + "시간": "20:08:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2308, + "역명": "범내골", + "시간": "21:55:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1325, + "역명": "범내골", + "시간": "23:12:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 36, + "열번": 2226, + "역명": "범내골", + "시간": "17:21:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1259, + "역명": "범내골", + "시간": "18:34:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 36, + "열번": 2284, + "역명": "범내골", + "시간": "20:18:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1303, + "역명": "범내골", + "시간": "21:28:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1127, + "역명": "범내골", + "시간": "12:21:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2154, + "역명": "범내골", + "시간": "14:05:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1191, + "역명": "범내골", + "시간": "15:17:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2218, + "역명": "범내골", + "시간": "17:01:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1253, + "역명": "범내골", + "시간": "18:13:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 37, + "열번": 2278, + "역명": "범내골", + "시간": "19:55:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 39, + "열번": 1149, + "역명": "범내골", + "시간": "13:21:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2176, + "역명": "범내골", + "시간": "15:06:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1213, + "역명": "범내골", + "시간": "16:17:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 39, + "열번": 2242, + "역명": "범내골", + "시간": "18:04:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 41, + "열번": 1175, + "역명": "범내골", + "시간": "14:33:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2202, + "역명": "범내골", + "시간": "16:17:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1239, + "역명": "범내골", + "시간": "17:29:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2266, + "역명": "범내골", + "시간": "19:16:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1289, + "역명": "범내골", + "시간": "20:32:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2312, + "역명": "범내골", + "시간": "22:15:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1327, + "역명": "범내골", + "시간": "23:24:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "범일", + "시간": "05:49:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "범일", + "시간": "07:04:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2050, + "역명": "범일", + "시간": "08:49:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "범일", + "시간": "05:33:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "범일", + "시간": "06:55:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "범일", + "시간": "08:39:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1077, + "역명": "범일", + "시간": "09:54:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2106, + "역명": "범일", + "시간": "11:35:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1137, + "역명": "범일", + "시간": "12:50:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2164, + "역명": "범일", + "시간": "14:31:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1201, + "역명": "범일", + "시간": "15:46:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2230, + "역명": "범일", + "시간": "17:30:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1261, + "역명": "범일", + "시간": "18:42:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2286, + "역명": "범일", + "시간": "20:25:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1305, + "역명": "범일", + "시간": "21:37:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 2, + "열번": 2324, + "역명": "범일", + "시간": "23:18:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "범일", + "시간": "06:03:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "범일", + "시간": "07:22:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2056, + "역명": "범일", + "시간": "09:05:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1085, + "역명": "범일", + "시간": "10:18:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2114, + "역명": "범일", + "시간": "11:59:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1145, + "역명": "범일", + "시간": "13:12:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2172, + "역명": "범일", + "시간": "14:53:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1209, + "역명": "범일", + "시간": "16:08:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2238, + "역명": "범일", + "시간": "17:51:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "범일", + "시간": "06:15:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1023, + "역명": "범일", + "시간": "07:29:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2058, + "역명": "범일", + "시간": "09:11:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1087, + "역명": "범일", + "시간": "10:24:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2116, + "역명": "범일", + "시간": "12:05:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1147, + "역명": "범일", + "시간": "13:17:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2174, + "역명": "범일", + "시간": "14:59:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1211, + "역명": "범일", + "시간": "16:13:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2240, + "역명": "범일", + "시간": "17:57:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1269, + "역명": "범일", + "시간": "19:13:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2294, + "역명": "범일", + "시간": "20:57:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1313, + "역명": "범일", + "시간": "22:11:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2330, + "역명": "범일", + "시간": "23:55:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 5, + "열번": 1001, + "역명": "범일", + "시간": "05:42:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2018, + "역명": "범일", + "시간": "07:23:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1051, + "역명": "범일", + "시간": "08:40:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2082, + "역명": "범일", + "시간": "10:23:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1111, + "역명": "범일", + "시간": "11:36:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2140, + "역명": "범일", + "시간": "13:17:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1173, + "역명": "범일", + "시간": "14:29:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2200, + "역명": "범일", + "시간": "16:10:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1237, + "역명": "범일", + "시간": "17:25:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2264, + "역명": "범일", + "시간": "19:09:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1287, + "역명": "범일", + "시간": "20:25:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2310, + "역명": "범일", + "시간": "22:04:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2008, + "역명": "범일", + "시간": "06:27:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1027, + "역명": "범일", + "시간": "07:40:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2062, + "역명": "범일", + "시간": "09:23:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1091, + "역명": "범일", + "시간": "10:36:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2120, + "역명": "범일", + "시간": "12:17:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1153, + "역명": "범일", + "시간": "13:34:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2180, + "역명": "범일", + "시간": "15:15:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1217, + "역명": "범일", + "시간": "16:30:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2246, + "역명": "범일", + "시간": "18:15:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1273, + "역명": "범일", + "시간": "19:29:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2298, + "역명": "범일", + "시간": "21:13:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1317, + "역명": "범일", + "시간": "22:31:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1003, + "역명": "범일", + "시간": "05:50:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2020, + "역명": "범일", + "시간": "07:32:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1053, + "역명": "범일", + "시간": "08:45:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2084, + "역명": "범일", + "시간": "10:29:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1113, + "역명": "범일", + "시간": "11:42:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2142, + "역명": "범일", + "시간": "13:23:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1177, + "역명": "범일", + "시간": "14:40:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2204, + "역명": "범일", + "시간": "16:21:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1241, + "역명": "범일", + "시간": "17:36:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2268, + "역명": "범일", + "시간": "19:21:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1291, + "역명": "범일", + "시간": "20:41:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2314, + "역명": "범일", + "시간": "22:24:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 7, + "열번": 1329, + "역명": "범일", + "시간": "23:37:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2010, + "역명": "범일", + "시간": "06:39:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1033, + "역명": "범일", + "시간": "07:55:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2066, + "역명": "범일", + "시간": "09:35:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1095, + "역명": "범일", + "시간": "10:48:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2124, + "역명": "범일", + "시간": "12:29:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1157, + "역명": "범일", + "시간": "13:45:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2184, + "역명": "범일", + "시간": "15:26:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1221, + "역명": "범일", + "시간": "16:41:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2248, + "역명": "범일", + "시간": "18:21:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1275, + "역명": "범일", + "시간": "19:37:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 8, + "열번": 2300, + "역명": "범일", + "시간": "21:21:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 9, + "열번": 2022, + "역명": "범일", + "시간": "07:38:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1055, + "역명": "범일", + "시간": "08:50:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2086, + "역명": "범일", + "시간": "10:35:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1115, + "역명": "범일", + "시간": "11:48:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2144, + "역명": "범일", + "시간": "13:29:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1179, + "역명": "범일", + "시간": "14:45:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2206, + "역명": "범일", + "시간": "16:27:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1243, + "역명": "범일", + "시간": "17:42:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 9, + "열번": 2270, + "역명": "범일", + "시간": "19:27:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2012, + "역명": "범일", + "시간": "06:51:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1039, + "역명": "범일", + "시간": "08:10:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2072, + "역명": "범일", + "시간": "09:53:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1101, + "역명": "범일", + "시간": "11:06:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2130, + "역명": "범일", + "시간": "12:47:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1163, + "역명": "범일", + "시간": "14:01:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2190, + "역명": "범일", + "시간": "15:43:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1227, + "역명": "범일", + "시간": "16:57:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2254, + "역명": "범일", + "시간": "18:39:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1279, + "역명": "범일", + "시간": "19:53:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2304, + "역명": "범일", + "시간": "21:37:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1321, + "역명": "범일", + "시간": "22:51:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 11, + "열번": 1005, + "역명": "범일", + "시간": "06:01:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2024, + "역명": "범일", + "시간": "07:44:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1057, + "역명": "범일", + "시간": "08:55:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2088, + "역명": "범일", + "시간": "10:41:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1117, + "역명": "범일", + "시간": "11:54:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2146, + "역명": "범일", + "시간": "13:35:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1181, + "역명": "범일", + "시간": "14:51:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2208, + "역명": "범일", + "시간": "16:32:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1245, + "역명": "범일", + "시간": "17:48:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2272, + "역명": "범일", + "시간": "19:33:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1293, + "역명": "범일", + "시간": "20:49:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2316, + "역명": "범일", + "시간": "22:34:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 11, + "열번": 1331, + "역명": "범일", + "시간": "23:49:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2014, + "역명": "범일", + "시간": "07:03:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1043, + "역명": "범일", + "시간": "08:20:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2074, + "역명": "범일", + "시간": "09:59:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1103, + "역명": "범일", + "시간": "11:12:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2132, + "역명": "범일", + "시간": "12:53:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1165, + "역명": "범일", + "시간": "14:07:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "범일", + "시간": "15:48:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1229, + "역명": "범일", + "시간": "17:03:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2256, + "역명": "범일", + "시간": "18:45:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1281, + "역명": "범일", + "시간": "20:01:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2306, + "역명": "범일", + "시간": "21:45:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1323, + "역명": "범일", + "시간": "23:02:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1009, + "역명": "범일", + "시간": "06:23:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2032, + "역명": "범일", + "시간": "08:04:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1065, + "역명": "범일", + "시간": "09:18:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2094, + "역명": "범일", + "시간": "10:59:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1123, + "역명": "범일", + "시간": "12:11:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2152, + "역명": "범일", + "시간": "13:53:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1187, + "역명": "범일", + "시간": "15:07:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 13, + "열번": 2214, + "역명": "범일", + "시간": "16:49:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2016, + "역명": "범일", + "시간": "07:14:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1049, + "역명": "범일", + "시간": "08:35:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2080, + "역명": "범일", + "시간": "10:17:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1109, + "역명": "범일", + "시간": "11:30:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2138, + "역명": "범일", + "시간": "13:11:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1171, + "역명": "범일", + "시간": "14:23:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2198, + "역명": "범일", + "시간": "16:05:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1235, + "역명": "범일", + "시간": "17:19:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2262, + "역명": "범일", + "시간": "19:03:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1285, + "역명": "범일", + "시간": "20:17:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1011, + "역명": "범일", + "시간": "06:34:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2036, + "역명": "범일", + "시간": "08:14:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1069, + "역명": "범일", + "시간": "09:30:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2098, + "역명": "범일", + "시간": "11:11:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1129, + "역명": "범일", + "시간": "12:28:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2156, + "역명": "범일", + "시간": "14:09:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1193, + "역명": "범일", + "시간": "15:24:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2220, + "역명": "범일", + "시간": "17:05:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1255, + "역명": "범일", + "시간": "18:21:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2280, + "역명": "범일", + "시간": "20:01:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1299, + "역명": "범일", + "시간": "21:13:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2320, + "역명": "범일", + "시간": "22:54:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2026, + "역명": "범일", + "시간": "07:49:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 16, + "열번": 1059, + "역명": "범일", + "시간": "09:00:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2038, + "역명": "범일", + "시간": "08:19:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 18, + "열번": 1007, + "역명": "범일", + "시간": "06:12:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2028, + "역명": "범일", + "시간": "07:54:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1061, + "역명": "범일", + "시간": "09:06:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2090, + "역명": "범일", + "시간": "10:47:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1119, + "역명": "범일", + "시간": "12:00:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2148, + "역명": "범일", + "시간": "13:41:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1183, + "역명": "범일", + "시간": "14:56:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2210, + "역명": "범일", + "시간": "16:38:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1247, + "역명": "범일", + "시간": "17:54:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2040, + "역명": "범일", + "시간": "08:24:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1071, + "역명": "범일", + "시간": "09:36:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2100, + "역명": "범일", + "시간": "11:17:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1131, + "역명": "범일", + "시간": "12:33:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2158, + "역명": "범일", + "시간": "14:15:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1195, + "역명": "범일", + "시간": "15:29:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2222, + "역명": "범일", + "시간": "17:10:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2030, + "역명": "범일", + "시간": "07:59:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1063, + "역명": "범일", + "시간": "09:12:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2092, + "역명": "범일", + "시간": "10:53:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1121, + "역명": "범일", + "시간": "12:06:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2150, + "역명": "범일", + "시간": "13:47:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1185, + "역명": "범일", + "시간": "15:02:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2212, + "역명": "범일", + "시간": "16:43:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1249, + "역명": "범일", + "시간": "18:00:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2274, + "역명": "범일", + "시간": "19:40:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1295, + "역명": "범일", + "시간": "20:57:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2318, + "역명": "범일", + "시간": "22:44:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 20, + "열번": 7931, + "역명": "범일", + "시간": "00:05:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 21, + "열번": 1013, + "역명": "범일", + "시간": "06:45:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2042, + "역명": "범일", + "시간": "08:29:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1073, + "역명": "범일", + "시간": "09:42:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2102, + "역명": "범일", + "시간": "11:23:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1133, + "역명": "범일", + "시간": "12:39:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2160, + "역명": "범일", + "시간": "14:20:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1197, + "역명": "범일", + "시간": "15:35:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2224, + "역명": "범일", + "시간": "17:15:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1257, + "역명": "범일", + "시간": "18:28:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2282, + "역명": "범일", + "시간": "20:09:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1301, + "역명": "범일", + "시간": "21:21:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2322, + "역명": "범일", + "시간": "23:06:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2034, + "역명": "범일", + "시간": "08:09:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1067, + "역명": "범일", + "시간": "09:24:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2096, + "역명": "범일", + "시간": "11:05:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1125, + "역명": "범일", + "시간": "12:17:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2044, + "역명": "범일", + "시간": "08:34:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1075, + "역명": "범일", + "시간": "09:48:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2104, + "역명": "범일", + "시간": "11:29:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1135, + "역명": "범일", + "시간": "12:44:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2162, + "역명": "범일", + "시간": "14:26:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1199, + "역명": "범일", + "시간": "15:40:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2228, + "역명": "범일", + "시간": "17:25:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "범일", + "시간": "08:44:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1079, + "역명": "범일", + "시간": "10:00:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2108, + "역명": "범일", + "시간": "11:41:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1139, + "역명": "범일", + "시간": "12:55:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2166, + "역명": "범일", + "시간": "14:37:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1203, + "역명": "범일", + "시간": "15:51:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2232, + "역명": "범일", + "시간": "17:35:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1263, + "역명": "범일", + "시간": "18:49:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2288, + "역명": "범일", + "시간": "20:33:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1307, + "역명": "범일", + "시간": "21:45:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 24, + "열번": 2326, + "역명": "범일", + "시간": "23:30:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "범일", + "시간": "07:13:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2054, + "역명": "범일", + "시간": "08:59:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1083, + "역명": "범일", + "시간": "10:12:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2112, + "역명": "범일", + "시간": "11:53:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1143, + "역명": "범일", + "시간": "13:06:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2170, + "역명": "범일", + "시간": "14:48:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1207, + "역명": "범일", + "시간": "16:02:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2236, + "역명": "범일", + "시간": "17:45:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1267, + "역명": "범일", + "시간": "19:05:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2292, + "역명": "범일", + "시간": "20:49:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1311, + "역명": "범일", + "시간": "22:01:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2328, + "역명": "범일", + "시간": "23:40:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2052, + "역명": "범일", + "시간": "08:54:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1081, + "역명": "범일", + "시간": "10:06:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2110, + "역명": "범일", + "시간": "11:47:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1141, + "역명": "범일", + "시간": "13:01:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2168, + "역명": "범일", + "시간": "14:42:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1205, + "역명": "범일", + "시간": "15:57:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2234, + "역명": "범일", + "시간": "17:40:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1265, + "역명": "범일", + "시간": "18:57:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2290, + "역명": "범일", + "시간": "20:41:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1309, + "역명": "범일", + "시간": "21:53:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1025, + "역명": "범일", + "시간": "07:35:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2060, + "역명": "범일", + "시간": "09:17:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1089, + "역명": "범일", + "시간": "10:30:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2118, + "역명": "범일", + "시간": "12:11:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1151, + "역명": "범일", + "시간": "13:28:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2178, + "역명": "범일", + "시간": "15:10:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1215, + "역명": "범일", + "시간": "16:24:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2244, + "역명": "범일", + "시간": "18:09:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1271, + "역명": "범일", + "시간": "19:21:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2296, + "역명": "범일", + "시간": "21:05:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 27, + "열번": 1315, + "역명": "범일", + "시간": "22:21:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 28, + "열번": 1029, + "역명": "범일", + "시간": "07:45:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2064, + "역명": "범일", + "시간": "09:29:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1093, + "역명": "범일", + "시간": "10:42:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2122, + "역명": "범일", + "시간": "12:23:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1155, + "역명": "범일", + "시간": "13:39:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2182, + "역명": "범일", + "시간": "15:21:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1219, + "역명": "범일", + "시간": "16:35:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1035, + "역명": "범일", + "시간": "08:00:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2068, + "역명": "범일", + "시간": "09:41:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1097, + "역명": "범일", + "시간": "10:54:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2126, + "역명": "범일", + "시간": "12:35:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1159, + "역명": "범일", + "시간": "13:50:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2186, + "역명": "범일", + "시간": "15:32:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1223, + "역명": "범일", + "시간": "16:46:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 29, + "열번": 2250, + "역명": "범일", + "시간": "18:27:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1031, + "역명": "범일", + "시간": "07:50:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1037, + "역명": "범일", + "시간": "08:05:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2070, + "역명": "범일", + "시간": "09:47:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1099, + "역명": "범일", + "시간": "11:00:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2128, + "역명": "범일", + "시간": "12:41:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1161, + "역명": "범일", + "시간": "13:56:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2188, + "역명": "범일", + "시간": "15:37:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1225, + "역명": "범일", + "시간": "16:52:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2252, + "역명": "범일", + "시간": "18:33:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1277, + "역명": "범일", + "시간": "19:45:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2302, + "역명": "범일", + "시간": "21:29:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1319, + "역명": "범일", + "시간": "22:41:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 32, + "열번": 1041, + "역명": "범일", + "시간": "08:15:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1045, + "역명": "범일", + "시간": "08:25:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2076, + "역명": "범일", + "시간": "10:05:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1105, + "역명": "범일", + "시간": "11:18:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2134, + "역명": "범일", + "시간": "12:59:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1167, + "역명": "범일", + "시간": "14:12:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2194, + "역명": "범일", + "시간": "15:54:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1231, + "역명": "범일", + "시간": "17:08:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 33, + "열번": 2258, + "역명": "범일", + "시간": "18:51:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 34, + "열번": 8904, + "역명": "범일", + "시간": "13:58:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1189, + "역명": "범일", + "시간": "15:13:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 34, + "열번": 2216, + "역명": "범일", + "시간": "16:54:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1251, + "역명": "범일", + "시간": "18:07:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 34, + "열번": 2276, + "역명": "범일", + "시간": "19:47:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1297, + "역명": "범일", + "시간": "21:05:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1047, + "역명": "범일", + "시간": "08:30:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2078, + "역명": "범일", + "시간": "10:11:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1107, + "역명": "범일", + "시간": "11:24:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2136, + "역명": "범일", + "시간": "13:05:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1169, + "역명": "범일", + "시간": "14:18:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2196, + "역명": "범일", + "시간": "15:59:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1233, + "역명": "범일", + "시간": "17:14:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2260, + "역명": "범일", + "시간": "18:57:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1283, + "역명": "범일", + "시간": "20:09:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2308, + "역명": "범일", + "시간": "21:54:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1325, + "역명": "범일", + "시간": "23:13:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 36, + "열번": 2226, + "역명": "범일", + "시간": "17:20:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1259, + "역명": "범일", + "시간": "18:35:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 36, + "열번": 2284, + "역명": "범일", + "시간": "20:17:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1303, + "역명": "범일", + "시간": "21:29:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1127, + "역명": "범일", + "시간": "12:22:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2154, + "역명": "범일", + "시간": "14:04:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1191, + "역명": "범일", + "시간": "15:18:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2218, + "역명": "범일", + "시간": "17:00:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1253, + "역명": "범일", + "시간": "18:14:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 37, + "열번": 2278, + "역명": "범일", + "시간": "19:54:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 39, + "열번": 1149, + "역명": "범일", + "시간": "13:23:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2176, + "역명": "범일", + "시간": "15:04:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1213, + "역명": "범일", + "시간": "16:19:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 39, + "열번": 2242, + "역명": "범일", + "시간": "18:03:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 41, + "열번": 1175, + "역명": "범일", + "시간": "14:34:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2202, + "역명": "범일", + "시간": "16:16:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1239, + "역명": "범일", + "시간": "17:30:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2266, + "역명": "범일", + "시간": "19:15:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1289, + "역명": "범일", + "시간": "20:33:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2312, + "역명": "범일", + "시간": "22:14:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1327, + "역명": "범일", + "시간": "23:25:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "좌천", + "시간": "05:47:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "좌천", + "시간": "07:06:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2050, + "역명": "좌천", + "시간": "08:47:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "좌천", + "시간": "05:31:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "좌천", + "시간": "06:57:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "좌천", + "시간": "08:37:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1077, + "역명": "좌천", + "시간": "09:56:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2106, + "역명": "좌천", + "시간": "11:33:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1137, + "역명": "좌천", + "시간": "12:52:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2164, + "역명": "좌천", + "시간": "14:29:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1201, + "역명": "좌천", + "시간": "15:48:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2230, + "역명": "좌천", + "시간": "17:28:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1261, + "역명": "좌천", + "시간": "18:44:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2286, + "역명": "좌천", + "시간": "20:23:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1305, + "역명": "좌천", + "시간": "21:39:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 2, + "열번": 2324, + "역명": "좌천", + "시간": "23:16:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "좌천", + "시간": "06:01:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "좌천", + "시간": "07:24:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2056, + "역명": "좌천", + "시간": "09:03:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1085, + "역명": "좌천", + "시간": "10:20:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2114, + "역명": "좌천", + "시간": "11:57:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1145, + "역명": "좌천", + "시간": "13:14:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2172, + "역명": "좌천", + "시간": "14:51:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1209, + "역명": "좌천", + "시간": "16:10:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2238, + "역명": "좌천", + "시간": "17:49:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "좌천", + "시간": "06:13:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1023, + "역명": "좌천", + "시간": "07:31:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2058, + "역명": "좌천", + "시간": "09:09:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1087, + "역명": "좌천", + "시간": "10:26:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2116, + "역명": "좌천", + "시간": "12:03:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1147, + "역명": "좌천", + "시간": "13:19:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2174, + "역명": "좌천", + "시간": "14:57:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1211, + "역명": "좌천", + "시간": "16:15:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2240, + "역명": "좌천", + "시간": "17:55:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1269, + "역명": "좌천", + "시간": "19:15:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2294, + "역명": "좌천", + "시간": "20:55:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1313, + "역명": "좌천", + "시간": "22:13:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2330, + "역명": "좌천", + "시간": "23:54:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 5, + "열번": 1001, + "역명": "좌천", + "시간": "05:44:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2018, + "역명": "좌천", + "시간": "07:21:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1051, + "역명": "좌천", + "시간": "08:42:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2082, + "역명": "좌천", + "시간": "10:21:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1111, + "역명": "좌천", + "시간": "11:38:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2140, + "역명": "좌천", + "시간": "13:15:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1173, + "역명": "좌천", + "시간": "14:31:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2200, + "역명": "좌천", + "시간": "16:08:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1237, + "역명": "좌천", + "시간": "17:27:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2264, + "역명": "좌천", + "시간": "19:07:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1287, + "역명": "좌천", + "시간": "20:27:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2310, + "역명": "좌천", + "시간": "22:02:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2008, + "역명": "좌천", + "시간": "06:25:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1027, + "역명": "좌천", + "시간": "07:42:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2062, + "역명": "좌천", + "시간": "09:21:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1091, + "역명": "좌천", + "시간": "10:38:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2120, + "역명": "좌천", + "시간": "12:15:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1153, + "역명": "좌천", + "시간": "13:36:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2180, + "역명": "좌천", + "시간": "15:13:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1217, + "역명": "좌천", + "시간": "16:32:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2246, + "역명": "좌천", + "시간": "18:13:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1273, + "역명": "좌천", + "시간": "19:31:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2298, + "역명": "좌천", + "시간": "21:11:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1317, + "역명": "좌천", + "시간": "22:33:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1003, + "역명": "좌천", + "시간": "05:52:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2020, + "역명": "좌천", + "시간": "07:30:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1053, + "역명": "좌천", + "시간": "08:47:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2084, + "역명": "좌천", + "시간": "10:27:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1113, + "역명": "좌천", + "시간": "11:44:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2142, + "역명": "좌천", + "시간": "13:21:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1177, + "역명": "좌천", + "시간": "14:42:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2204, + "역명": "좌천", + "시간": "16:19:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1241, + "역명": "좌천", + "시간": "17:38:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2268, + "역명": "좌천", + "시간": "19:19:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1291, + "역명": "좌천", + "시간": "20:43:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2314, + "역명": "좌천", + "시간": "22:22:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 7, + "열번": 1329, + "역명": "좌천", + "시간": "23:39:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2010, + "역명": "좌천", + "시간": "06:37:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1033, + "역명": "좌천", + "시간": "07:57:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2066, + "역명": "좌천", + "시간": "09:33:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1095, + "역명": "좌천", + "시간": "10:50:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2124, + "역명": "좌천", + "시간": "12:27:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1157, + "역명": "좌천", + "시간": "13:47:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2184, + "역명": "좌천", + "시간": "15:24:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1221, + "역명": "좌천", + "시간": "16:43:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2248, + "역명": "좌천", + "시간": "18:19:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1275, + "역명": "좌천", + "시간": "19:39:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 8, + "열번": 2300, + "역명": "좌천", + "시간": "21:19:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 9, + "열번": 2022, + "역명": "좌천", + "시간": "07:36:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1055, + "역명": "좌천", + "시간": "08:52:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2086, + "역명": "좌천", + "시간": "10:33:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1115, + "역명": "좌천", + "시간": "11:50:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2144, + "역명": "좌천", + "시간": "13:27:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1179, + "역명": "좌천", + "시간": "14:47:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2206, + "역명": "좌천", + "시간": "16:25:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1243, + "역명": "좌천", + "시간": "17:44:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 9, + "열번": 2270, + "역명": "좌천", + "시간": "19:25:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2012, + "역명": "좌천", + "시간": "06:49:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1039, + "역명": "좌천", + "시간": "08:12:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2072, + "역명": "좌천", + "시간": "09:51:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1101, + "역명": "좌천", + "시간": "11:08:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2130, + "역명": "좌천", + "시간": "12:45:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1163, + "역명": "좌천", + "시간": "14:03:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2190, + "역명": "좌천", + "시간": "15:41:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1227, + "역명": "좌천", + "시간": "16:59:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2254, + "역명": "좌천", + "시간": "18:37:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1279, + "역명": "좌천", + "시간": "19:55:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2304, + "역명": "좌천", + "시간": "21:35:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1321, + "역명": "좌천", + "시간": "22:53:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 11, + "열번": 1005, + "역명": "좌천", + "시간": "06:03:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2024, + "역명": "좌천", + "시간": "07:42:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1057, + "역명": "좌천", + "시간": "08:57:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2088, + "역명": "좌천", + "시간": "10:39:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1117, + "역명": "좌천", + "시간": "11:56:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2146, + "역명": "좌천", + "시간": "13:33:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1181, + "역명": "좌천", + "시간": "14:53:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2208, + "역명": "좌천", + "시간": "16:30:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1245, + "역명": "좌천", + "시간": "17:50:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2272, + "역명": "좌천", + "시간": "19:31:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1293, + "역명": "좌천", + "시간": "20:51:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2316, + "역명": "좌천", + "시간": "22:32:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 11, + "열번": 1331, + "역명": "좌천", + "시간": "23:51:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2014, + "역명": "좌천", + "시간": "07:01:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1043, + "역명": "좌천", + "시간": "08:22:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2074, + "역명": "좌천", + "시간": "09:57:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1103, + "역명": "좌천", + "시간": "11:14:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2132, + "역명": "좌천", + "시간": "12:51:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1165, + "역명": "좌천", + "시간": "14:09:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "좌천", + "시간": "15:46:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1229, + "역명": "좌천", + "시간": "17:05:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2256, + "역명": "좌천", + "시간": "18:43:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1281, + "역명": "좌천", + "시간": "20:03:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2306, + "역명": "좌천", + "시간": "21:43:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1323, + "역명": "좌천", + "시간": "23:04:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1009, + "역명": "좌천", + "시간": "06:25:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2032, + "역명": "좌천", + "시간": "08:02:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1065, + "역명": "좌천", + "시간": "09:20:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2094, + "역명": "좌천", + "시간": "10:57:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1123, + "역명": "좌천", + "시간": "12:13:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2152, + "역명": "좌천", + "시간": "13:51:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1187, + "역명": "좌천", + "시간": "15:09:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 13, + "열번": 2214, + "역명": "좌천", + "시간": "16:47:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2016, + "역명": "좌천", + "시간": "07:12:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1049, + "역명": "좌천", + "시간": "08:37:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2080, + "역명": "좌천", + "시간": "10:15:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1109, + "역명": "좌천", + "시간": "11:32:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2138, + "역명": "좌천", + "시간": "13:09:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1171, + "역명": "좌천", + "시간": "14:25:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2198, + "역명": "좌천", + "시간": "16:03:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1235, + "역명": "좌천", + "시간": "17:21:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2262, + "역명": "좌천", + "시간": "19:01:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1285, + "역명": "좌천", + "시간": "20:19:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1011, + "역명": "좌천", + "시간": "06:36:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2036, + "역명": "좌천", + "시간": "08:12:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1069, + "역명": "좌천", + "시간": "09:32:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2098, + "역명": "좌천", + "시간": "11:09:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1129, + "역명": "좌천", + "시간": "12:30:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2156, + "역명": "좌천", + "시간": "14:07:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1193, + "역명": "좌천", + "시간": "15:26:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2220, + "역명": "좌천", + "시간": "17:03:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1255, + "역명": "좌천", + "시간": "18:23:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2280, + "역명": "좌천", + "시간": "19:59:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1299, + "역명": "좌천", + "시간": "21:15:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2320, + "역명": "좌천", + "시간": "22:52:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2026, + "역명": "좌천", + "시간": "07:47:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 16, + "열번": 1059, + "역명": "좌천", + "시간": "09:02:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2038, + "역명": "좌천", + "시간": "08:17:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 18, + "열번": 1007, + "역명": "좌천", + "시간": "06:14:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2028, + "역명": "좌천", + "시간": "07:52:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1061, + "역명": "좌천", + "시간": "09:08:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2090, + "역명": "좌천", + "시간": "10:45:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1119, + "역명": "좌천", + "시간": "12:02:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2148, + "역명": "좌천", + "시간": "13:39:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1183, + "역명": "좌천", + "시간": "14:58:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2210, + "역명": "좌천", + "시간": "16:36:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1247, + "역명": "좌천", + "시간": "17:56:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2040, + "역명": "좌천", + "시간": "08:22:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1071, + "역명": "좌천", + "시간": "09:38:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2100, + "역명": "좌천", + "시간": "11:15:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1131, + "역명": "좌천", + "시간": "12:35:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2158, + "역명": "좌천", + "시간": "14:13:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1195, + "역명": "좌천", + "시간": "15:31:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2222, + "역명": "좌천", + "시간": "17:08:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2030, + "역명": "좌천", + "시간": "07:57:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1063, + "역명": "좌천", + "시간": "09:14:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2092, + "역명": "좌천", + "시간": "10:51:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1121, + "역명": "좌천", + "시간": "12:08:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2150, + "역명": "좌천", + "시간": "13:45:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1185, + "역명": "좌천", + "시간": "15:04:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2212, + "역명": "좌천", + "시간": "16:41:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1249, + "역명": "좌천", + "시간": "18:02:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2274, + "역명": "좌천", + "시간": "19:38:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1295, + "역명": "좌천", + "시간": "20:59:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2318, + "역명": "좌천", + "시간": "22:42:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 20, + "열번": 7931, + "역명": "좌천", + "시간": "00:07:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 21, + "열번": 1013, + "역명": "좌천", + "시간": "06:47:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2042, + "역명": "좌천", + "시간": "08:27:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1073, + "역명": "좌천", + "시간": "09:44:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2102, + "역명": "좌천", + "시간": "11:21:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1133, + "역명": "좌천", + "시간": "12:41:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2160, + "역명": "좌천", + "시간": "14:18:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1197, + "역명": "좌천", + "시간": "15:37:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2224, + "역명": "좌천", + "시간": "17:13:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1257, + "역명": "좌천", + "시간": "18:30:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2282, + "역명": "좌천", + "시간": "20:07:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1301, + "역명": "좌천", + "시간": "21:23:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2322, + "역명": "좌천", + "시간": "23:04:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2034, + "역명": "좌천", + "시간": "08:07:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1067, + "역명": "좌천", + "시간": "09:26:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2096, + "역명": "좌천", + "시간": "11:03:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1125, + "역명": "좌천", + "시간": "12:19:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2044, + "역명": "좌천", + "시간": "08:32:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1075, + "역명": "좌천", + "시간": "09:50:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2104, + "역명": "좌천", + "시간": "11:27:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1135, + "역명": "좌천", + "시간": "12:46:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2162, + "역명": "좌천", + "시간": "14:24:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1199, + "역명": "좌천", + "시간": "15:42:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2228, + "역명": "좌천", + "시간": "17:23:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "좌천", + "시간": "08:42:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1079, + "역명": "좌천", + "시간": "10:02:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2108, + "역명": "좌천", + "시간": "11:39:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1139, + "역명": "좌천", + "시간": "12:57:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2166, + "역명": "좌천", + "시간": "14:35:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1203, + "역명": "좌천", + "시간": "15:53:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2232, + "역명": "좌천", + "시간": "17:33:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1263, + "역명": "좌천", + "시간": "18:51:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2288, + "역명": "좌천", + "시간": "20:31:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1307, + "역명": "좌천", + "시간": "21:47:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 24, + "열번": 2326, + "역명": "좌천", + "시간": "23:28:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "좌천", + "시간": "07:15:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2054, + "역명": "좌천", + "시간": "08:57:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1083, + "역명": "좌천", + "시간": "10:14:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2112, + "역명": "좌천", + "시간": "11:51:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1143, + "역명": "좌천", + "시간": "13:08:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2170, + "역명": "좌천", + "시간": "14:46:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1207, + "역명": "좌천", + "시간": "16:04:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2236, + "역명": "좌천", + "시간": "17:43:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1267, + "역명": "좌천", + "시간": "19:07:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2292, + "역명": "좌천", + "시간": "20:47:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1311, + "역명": "좌천", + "시간": "22:03:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2328, + "역명": "좌천", + "시간": "23:38:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2052, + "역명": "좌천", + "시간": "08:52:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1081, + "역명": "좌천", + "시간": "10:08:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2110, + "역명": "좌천", + "시간": "11:45:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1141, + "역명": "좌천", + "시간": "13:03:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2168, + "역명": "좌천", + "시간": "14:40:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1205, + "역명": "좌천", + "시간": "15:59:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2234, + "역명": "좌천", + "시간": "17:38:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1265, + "역명": "좌천", + "시간": "18:59:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2290, + "역명": "좌천", + "시간": "20:39:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1309, + "역명": "좌천", + "시간": "21:55:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1025, + "역명": "좌천", + "시간": "07:37:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2060, + "역명": "좌천", + "시간": "09:15:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1089, + "역명": "좌천", + "시간": "10:32:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2118, + "역명": "좌천", + "시간": "12:09:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1151, + "역명": "좌천", + "시간": "13:30:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2178, + "역명": "좌천", + "시간": "15:08:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1215, + "역명": "좌천", + "시간": "16:26:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2244, + "역명": "좌천", + "시간": "18:07:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1271, + "역명": "좌천", + "시간": "19:23:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2296, + "역명": "좌천", + "시간": "21:03:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 27, + "열번": 1315, + "역명": "좌천", + "시간": "22:23:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 28, + "열번": 1029, + "역명": "좌천", + "시간": "07:47:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2064, + "역명": "좌천", + "시간": "09:27:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1093, + "역명": "좌천", + "시간": "10:44:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2122, + "역명": "좌천", + "시간": "12:21:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1155, + "역명": "좌천", + "시간": "13:41:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2182, + "역명": "좌천", + "시간": "15:19:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1219, + "역명": "좌천", + "시간": "16:37:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1035, + "역명": "좌천", + "시간": "08:02:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2068, + "역명": "좌천", + "시간": "09:39:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1097, + "역명": "좌천", + "시간": "10:56:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2126, + "역명": "좌천", + "시간": "12:33:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1159, + "역명": "좌천", + "시간": "13:52:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2186, + "역명": "좌천", + "시간": "15:30:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1223, + "역명": "좌천", + "시간": "16:48:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 29, + "열번": 2250, + "역명": "좌천", + "시간": "18:25:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1031, + "역명": "좌천", + "시간": "07:52:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1037, + "역명": "좌천", + "시간": "08:07:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2070, + "역명": "좌천", + "시간": "09:45:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1099, + "역명": "좌천", + "시간": "11:02:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2128, + "역명": "좌천", + "시간": "12:39:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1161, + "역명": "좌천", + "시간": "13:58:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2188, + "역명": "좌천", + "시간": "15:35:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1225, + "역명": "좌천", + "시간": "16:54:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2252, + "역명": "좌천", + "시간": "18:31:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1277, + "역명": "좌천", + "시간": "19:47:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2302, + "역명": "좌천", + "시간": "21:27:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1319, + "역명": "좌천", + "시간": "22:43:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 32, + "열번": 1041, + "역명": "좌천", + "시간": "08:17:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1045, + "역명": "좌천", + "시간": "08:27:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2076, + "역명": "좌천", + "시간": "10:03:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1105, + "역명": "좌천", + "시간": "11:20:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2134, + "역명": "좌천", + "시간": "12:57:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1167, + "역명": "좌천", + "시간": "14:14:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2194, + "역명": "좌천", + "시간": "15:52:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1231, + "역명": "좌천", + "시간": "17:10:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 33, + "열번": 2258, + "역명": "좌천", + "시간": "18:49:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 34, + "열번": 8904, + "역명": "좌천", + "시간": "13:56:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1189, + "역명": "좌천", + "시간": "15:15:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 34, + "열번": 2216, + "역명": "좌천", + "시간": "16:52:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1251, + "역명": "좌천", + "시간": "18:09:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 34, + "열번": 2276, + "역명": "좌천", + "시간": "19:45:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1297, + "역명": "좌천", + "시간": "21:07:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1047, + "역명": "좌천", + "시간": "08:32:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2078, + "역명": "좌천", + "시간": "10:09:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1107, + "역명": "좌천", + "시간": "11:26:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2136, + "역명": "좌천", + "시간": "13:03:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1169, + "역명": "좌천", + "시간": "14:20:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2196, + "역명": "좌천", + "시간": "15:57:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1233, + "역명": "좌천", + "시간": "17:16:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2260, + "역명": "좌천", + "시간": "18:55:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1283, + "역명": "좌천", + "시간": "20:11:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2308, + "역명": "좌천", + "시간": "21:52:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1325, + "역명": "좌천", + "시간": "23:15:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 36, + "열번": 2226, + "역명": "좌천", + "시간": "17:18:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1259, + "역명": "좌천", + "시간": "18:37:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 36, + "열번": 2284, + "역명": "좌천", + "시간": "20:15:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1303, + "역명": "좌천", + "시간": "21:31:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1127, + "역명": "좌천", + "시간": "12:24:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2154, + "역명": "좌천", + "시간": "14:02:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1191, + "역명": "좌천", + "시간": "15:20:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2218, + "역명": "좌천", + "시간": "16:58:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1253, + "역명": "좌천", + "시간": "18:16:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 37, + "열번": 2278, + "역명": "좌천", + "시간": "19:52:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 39, + "열번": 1149, + "역명": "좌천", + "시간": "13:25:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2176, + "역명": "좌천", + "시간": "15:02:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1213, + "역명": "좌천", + "시간": "16:21:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 39, + "열번": 2242, + "역명": "좌천", + "시간": "18:01:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 41, + "열번": 1175, + "역명": "좌천", + "시간": "14:36:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2202, + "역명": "좌천", + "시간": "16:14:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1239, + "역명": "좌천", + "시간": "17:32:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2266, + "역명": "좌천", + "시간": "19:13:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1289, + "역명": "좌천", + "시간": "20:35:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2312, + "역명": "좌천", + "시간": "22:12:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1327, + "역명": "좌천", + "시간": "23:27:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "부산진", + "시간": "05:46:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "부산진", + "시간": "07:08:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2050, + "역명": "부산진", + "시간": "08:45:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "부산진", + "시간": "05:29:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "부산진", + "시간": "06:59:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "부산진", + "시간": "08:35:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1077, + "역명": "부산진", + "시간": "09:58:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2106, + "역명": "부산진", + "시간": "11:31:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1137, + "역명": "부산진", + "시간": "12:54:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2164, + "역명": "부산진", + "시간": "14:28:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1201, + "역명": "부산진", + "시간": "15:50:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2230, + "역명": "부산진", + "시간": "17:26:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1261, + "역명": "부산진", + "시간": "18:46:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2286, + "역명": "부산진", + "시간": "20:21:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1305, + "역명": "부산진", + "시간": "21:41:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 2, + "열번": 2324, + "역명": "부산진", + "시간": "23:14:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "부산진", + "시간": "05:59:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "부산진", + "시간": "07:26:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2056, + "역명": "부산진", + "시간": "09:01:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1085, + "역명": "부산진", + "시간": "10:22:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2114, + "역명": "부산진", + "시간": "11:55:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1145, + "역명": "부산진", + "시간": "13:16:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2172, + "역명": "부산진", + "시간": "14:50:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1209, + "역명": "부산진", + "시간": "16:12:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2238, + "역명": "부산진", + "시간": "17:47:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "부산진", + "시간": "06:12:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1023, + "역명": "부산진", + "시간": "07:33:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2058, + "역명": "부산진", + "시간": "09:07:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1087, + "역명": "부산진", + "시간": "10:28:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2116, + "역명": "부산진", + "시간": "12:01:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1147, + "역명": "부산진", + "시간": "13:21:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2174, + "역명": "부산진", + "시간": "14:55:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1211, + "역명": "부산진", + "시간": "16:17:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2240, + "역명": "부산진", + "시간": "17:53:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1269, + "역명": "부산진", + "시간": "19:17:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2294, + "역명": "부산진", + "시간": "20:53:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1313, + "역명": "부산진", + "시간": "22:15:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2330, + "역명": "부산진", + "시간": "23:52:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 5, + "열번": 1001, + "역명": "부산진", + "시간": "05:46:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2018, + "역명": "부산진", + "시간": "07:20:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1051, + "역명": "부산진", + "시간": "08:44:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2082, + "역명": "부산진", + "시간": "10:19:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1111, + "역명": "부산진", + "시간": "11:40:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2140, + "역명": "부산진", + "시간": "13:13:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1173, + "역명": "부산진", + "시간": "14:33:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2200, + "역명": "부산진", + "시간": "16:07:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1237, + "역명": "부산진", + "시간": "17:29:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2264, + "역명": "부산진", + "시간": "19:05:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1287, + "역명": "부산진", + "시간": "20:29:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2310, + "역명": "부산진", + "시간": "22:00:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2008, + "역명": "부산진", + "시간": "06:24:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1027, + "역명": "부산진", + "시간": "07:44:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2062, + "역명": "부산진", + "시간": "09:19:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1091, + "역명": "부산진", + "시간": "10:40:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2120, + "역명": "부산진", + "시간": "12:13:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1153, + "역명": "부산진", + "시간": "13:38:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2180, + "역명": "부산진", + "시간": "15:12:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1217, + "역명": "부산진", + "시간": "16:34:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2246, + "역명": "부산진", + "시간": "18:11:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1273, + "역명": "부산진", + "시간": "19:33:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2298, + "역명": "부산진", + "시간": "21:09:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1317, + "역명": "부산진", + "시간": "22:35:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1003, + "역명": "부산진", + "시간": "05:54:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2020, + "역명": "부산진", + "시간": "07:28:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1053, + "역명": "부산진", + "시간": "08:49:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2084, + "역명": "부산진", + "시간": "10:25:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1113, + "역명": "부산진", + "시간": "11:46:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2142, + "역명": "부산진", + "시간": "13:19:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1177, + "역명": "부산진", + "시간": "14:44:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2204, + "역명": "부산진", + "시간": "16:18:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1241, + "역명": "부산진", + "시간": "17:40:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2268, + "역명": "부산진", + "시간": "19:17:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1291, + "역명": "부산진", + "시간": "20:45:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2314, + "역명": "부산진", + "시간": "22:20:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 7, + "열번": 1329, + "역명": "부산진", + "시간": "23:41:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2010, + "역명": "부산진", + "시간": "06:36:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1033, + "역명": "부산진", + "시간": "07:59:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2066, + "역명": "부산진", + "시간": "09:31:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1095, + "역명": "부산진", + "시간": "10:52:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2124, + "역명": "부산진", + "시간": "12:25:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1157, + "역명": "부산진", + "시간": "13:49:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2184, + "역명": "부산진", + "시간": "15:23:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1221, + "역명": "부산진", + "시간": "16:45:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2248, + "역명": "부산진", + "시간": "18:17:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1275, + "역명": "부산진", + "시간": "19:41:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 8, + "열번": 2300, + "역명": "부산진", + "시간": "21:17:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 9, + "열번": 2022, + "역명": "부산진", + "시간": "07:34:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1055, + "역명": "부산진", + "시간": "08:54:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2086, + "역명": "부산진", + "시간": "10:31:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1115, + "역명": "부산진", + "시간": "11:52:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2144, + "역명": "부산진", + "시간": "13:25:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1179, + "역명": "부산진", + "시간": "14:49:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2206, + "역명": "부산진", + "시간": "16:23:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1243, + "역명": "부산진", + "시간": "17:46:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 9, + "열번": 2270, + "역명": "부산진", + "시간": "19:23:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2012, + "역명": "부산진", + "시간": "06:48:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1039, + "역명": "부산진", + "시간": "08:14:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2072, + "역명": "부산진", + "시간": "09:49:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1101, + "역명": "부산진", + "시간": "11:10:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2130, + "역명": "부산진", + "시간": "12:43:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1163, + "역명": "부산진", + "시간": "14:05:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2190, + "역명": "부산진", + "시간": "15:39:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1227, + "역명": "부산진", + "시간": "17:01:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2254, + "역명": "부산진", + "시간": "18:35:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1279, + "역명": "부산진", + "시간": "19:57:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2304, + "역명": "부산진", + "시간": "21:33:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1321, + "역명": "부산진", + "시간": "22:55:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 11, + "열번": 1005, + "역명": "부산진", + "시간": "06:05:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2024, + "역명": "부산진", + "시간": "07:40:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1057, + "역명": "부산진", + "시간": "08:59:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2088, + "역명": "부산진", + "시간": "10:37:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1117, + "역명": "부산진", + "시간": "11:58:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2146, + "역명": "부산진", + "시간": "13:31:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1181, + "역명": "부산진", + "시간": "14:55:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2208, + "역명": "부산진", + "시간": "16:29:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1245, + "역명": "부산진", + "시간": "17:52:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2272, + "역명": "부산진", + "시간": "19:29:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1293, + "역명": "부산진", + "시간": "20:53:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2316, + "역명": "부산진", + "시간": "22:30:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 11, + "열번": 1331, + "역명": "부산진", + "시간": "23:53:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2014, + "역명": "부산진", + "시간": "07:00:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1043, + "역명": "부산진", + "시간": "08:24:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2074, + "역명": "부산진", + "시간": "09:55:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1103, + "역명": "부산진", + "시간": "11:16:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2132, + "역명": "부산진", + "시간": "12:49:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1165, + "역명": "부산진", + "시간": "14:11:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "부산진", + "시간": "15:45:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1229, + "역명": "부산진", + "시간": "17:07:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2256, + "역명": "부산진", + "시간": "18:41:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1281, + "역명": "부산진", + "시간": "20:05:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2306, + "역명": "부산진", + "시간": "21:41:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1323, + "역명": "부산진", + "시간": "23:06:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1009, + "역명": "부산진", + "시간": "06:27:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2032, + "역명": "부산진", + "시간": "08:00:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1065, + "역명": "부산진", + "시간": "09:22:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2094, + "역명": "부산진", + "시간": "10:55:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1123, + "역명": "부산진", + "시간": "12:15:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2152, + "역명": "부산진", + "시간": "13:49:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1187, + "역명": "부산진", + "시간": "15:11:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 13, + "열번": 2214, + "역명": "부산진", + "시간": "16:45:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2016, + "역명": "부산진", + "시간": "07:11:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1049, + "역명": "부산진", + "시간": "08:39:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2080, + "역명": "부산진", + "시간": "10:13:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1109, + "역명": "부산진", + "시간": "11:34:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2138, + "역명": "부산진", + "시간": "13:07:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1171, + "역명": "부산진", + "시간": "14:27:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2198, + "역명": "부산진", + "시간": "16:01:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1235, + "역명": "부산진", + "시간": "17:23:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2262, + "역명": "부산진", + "시간": "18:59:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1285, + "역명": "부산진", + "시간": "20:21:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1011, + "역명": "부산진", + "시간": "06:38:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2036, + "역명": "부산진", + "시간": "08:10:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1069, + "역명": "부산진", + "시간": "09:34:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2098, + "역명": "부산진", + "시간": "11:07:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1129, + "역명": "부산진", + "시간": "12:32:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2156, + "역명": "부산진", + "시간": "14:06:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1193, + "역명": "부산진", + "시간": "15:28:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2220, + "역명": "부산진", + "시간": "17:01:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1255, + "역명": "부산진", + "시간": "18:25:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2280, + "역명": "부산진", + "시간": "19:57:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1299, + "역명": "부산진", + "시간": "21:17:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2320, + "역명": "부산진", + "시간": "22:50:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2026, + "역명": "부산진", + "시간": "07:45:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 16, + "열번": 1059, + "역명": "부산진", + "시간": "09:04:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2038, + "역명": "부산진", + "시간": "08:15:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 18, + "열번": 1007, + "역명": "부산진", + "시간": "06:16:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2028, + "역명": "부산진", + "시간": "07:50:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1061, + "역명": "부산진", + "시간": "09:10:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2090, + "역명": "부산진", + "시간": "10:43:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1119, + "역명": "부산진", + "시간": "12:04:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2148, + "역명": "부산진", + "시간": "13:37:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1183, + "역명": "부산진", + "시간": "15:00:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2210, + "역명": "부산진", + "시간": "16:34:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1247, + "역명": "부산진", + "시간": "17:58:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2040, + "역명": "부산진", + "시간": "08:20:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1071, + "역명": "부산진", + "시간": "09:40:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2100, + "역명": "부산진", + "시간": "11:13:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1131, + "역명": "부산진", + "시간": "12:37:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2158, + "역명": "부산진", + "시간": "14:11:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1195, + "역명": "부산진", + "시간": "15:33:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2222, + "역명": "부산진", + "시간": "17:06:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2030, + "역명": "부산진", + "시간": "07:55:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1063, + "역명": "부산진", + "시간": "09:16:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2092, + "역명": "부산진", + "시간": "10:49:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1121, + "역명": "부산진", + "시간": "12:10:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2150, + "역명": "부산진", + "시간": "13:43:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1185, + "역명": "부산진", + "시간": "15:06:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2212, + "역명": "부산진", + "시간": "16:40:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1249, + "역명": "부산진", + "시간": "18:04:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2274, + "역명": "부산진", + "시간": "19:36:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1295, + "역명": "부산진", + "시간": "21:01:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2318, + "역명": "부산진", + "시간": "22:40:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 20, + "열번": 7931, + "역명": "부산진", + "시간": "00:09:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 21, + "열번": 1013, + "역명": "부산진", + "시간": "06:49:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2042, + "역명": "부산진", + "시간": "08:25:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1073, + "역명": "부산진", + "시간": "09:46:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2102, + "역명": "부산진", + "시간": "11:19:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1133, + "역명": "부산진", + "시간": "12:43:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2160, + "역명": "부산진", + "시간": "14:17:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1197, + "역명": "부산진", + "시간": "15:39:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2224, + "역명": "부산진", + "시간": "17:11:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1257, + "역명": "부산진", + "시간": "18:32:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2282, + "역명": "부산진", + "시간": "20:05:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1301, + "역명": "부산진", + "시간": "21:25:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2322, + "역명": "부산진", + "시간": "23:02:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2034, + "역명": "부산진", + "시간": "08:05:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1067, + "역명": "부산진", + "시간": "09:28:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2096, + "역명": "부산진", + "시간": "11:01:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1125, + "역명": "부산진", + "시간": "12:21:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2044, + "역명": "부산진", + "시간": "08:30:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1075, + "역명": "부산진", + "시간": "09:52:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2104, + "역명": "부산진", + "시간": "11:25:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1135, + "역명": "부산진", + "시간": "12:48:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2162, + "역명": "부산진", + "시간": "14:22:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1199, + "역명": "부산진", + "시간": "15:44:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2228, + "역명": "부산진", + "시간": "17:21:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "부산진", + "시간": "08:40:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1079, + "역명": "부산진", + "시간": "10:04:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2108, + "역명": "부산진", + "시간": "11:37:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1139, + "역명": "부산진", + "시간": "12:59:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2166, + "역명": "부산진", + "시간": "14:33:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1203, + "역명": "부산진", + "시간": "15:55:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2232, + "역명": "부산진", + "시간": "17:31:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1263, + "역명": "부산진", + "시간": "18:53:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2288, + "역명": "부산진", + "시간": "20:29:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1307, + "역명": "부산진", + "시간": "21:49:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 24, + "열번": 2326, + "역명": "부산진", + "시간": "23:26:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "부산진", + "시간": "07:17:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2054, + "역명": "부산진", + "시간": "08:55:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1083, + "역명": "부산진", + "시간": "10:16:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2112, + "역명": "부산진", + "시간": "11:49:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1143, + "역명": "부산진", + "시간": "13:10:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2170, + "역명": "부산진", + "시간": "14:44:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1207, + "역명": "부산진", + "시간": "16:06:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2236, + "역명": "부산진", + "시간": "17:41:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1267, + "역명": "부산진", + "시간": "19:09:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2292, + "역명": "부산진", + "시간": "20:45:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1311, + "역명": "부산진", + "시간": "22:05:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2328, + "역명": "부산진", + "시간": "23:36:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2052, + "역명": "부산진", + "시간": "08:50:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1081, + "역명": "부산진", + "시간": "10:10:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2110, + "역명": "부산진", + "시간": "11:43:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1141, + "역명": "부산진", + "시간": "13:05:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2168, + "역명": "부산진", + "시간": "14:39:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1205, + "역명": "부산진", + "시간": "16:01:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2234, + "역명": "부산진", + "시간": "17:36:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1265, + "역명": "부산진", + "시간": "19:01:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2290, + "역명": "부산진", + "시간": "20:37:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1309, + "역명": "부산진", + "시간": "21:57:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1025, + "역명": "부산진", + "시간": "07:39:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2060, + "역명": "부산진", + "시간": "09:13:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1089, + "역명": "부산진", + "시간": "10:34:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2118, + "역명": "부산진", + "시간": "12:07:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1151, + "역명": "부산진", + "시간": "13:32:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2178, + "역명": "부산진", + "시간": "15:06:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1215, + "역명": "부산진", + "시간": "16:28:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2244, + "역명": "부산진", + "시간": "18:05:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1271, + "역명": "부산진", + "시간": "19:25:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2296, + "역명": "부산진", + "시간": "21:01:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 27, + "열번": 1315, + "역명": "부산진", + "시간": "22:25:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 28, + "열번": 1029, + "역명": "부산진", + "시간": "07:49:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2064, + "역명": "부산진", + "시간": "09:25:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1093, + "역명": "부산진", + "시간": "10:46:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2122, + "역명": "부산진", + "시간": "12:19:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1155, + "역명": "부산진", + "시간": "13:43:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2182, + "역명": "부산진", + "시간": "15:17:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1219, + "역명": "부산진", + "시간": "16:39:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1035, + "역명": "부산진", + "시간": "08:04:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2068, + "역명": "부산진", + "시간": "09:37:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1097, + "역명": "부산진", + "시간": "10:58:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2126, + "역명": "부산진", + "시간": "12:31:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1159, + "역명": "부산진", + "시간": "13:54:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2186, + "역명": "부산진", + "시간": "15:28:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1223, + "역명": "부산진", + "시간": "16:50:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 29, + "열번": 2250, + "역명": "부산진", + "시간": "18:23:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1031, + "역명": "부산진", + "시간": "07:54:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1037, + "역명": "부산진", + "시간": "08:09:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2070, + "역명": "부산진", + "시간": "09:43:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1099, + "역명": "부산진", + "시간": "11:04:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2128, + "역명": "부산진", + "시간": "12:37:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1161, + "역명": "부산진", + "시간": "14:00:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2188, + "역명": "부산진", + "시간": "15:34:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1225, + "역명": "부산진", + "시간": "16:56:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2252, + "역명": "부산진", + "시간": "18:29:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1277, + "역명": "부산진", + "시간": "19:49:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2302, + "역명": "부산진", + "시간": "21:25:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1319, + "역명": "부산진", + "시간": "22:45:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 32, + "열번": 1041, + "역명": "부산진", + "시간": "08:19:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1045, + "역명": "부산진", + "시간": "08:29:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2076, + "역명": "부산진", + "시간": "10:01:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1105, + "역명": "부산진", + "시간": "11:22:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2134, + "역명": "부산진", + "시간": "12:55:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1167, + "역명": "부산진", + "시간": "14:16:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2194, + "역명": "부산진", + "시간": "15:50:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1231, + "역명": "부산진", + "시간": "17:12:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 33, + "열번": 2258, + "역명": "부산진", + "시간": "18:47:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 34, + "열번": 8904, + "역명": "부산진", + "시간": "13:55:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1189, + "역명": "부산진", + "시간": "15:17:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 34, + "열번": 2216, + "역명": "부산진", + "시간": "16:51:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1251, + "역명": "부산진", + "시간": "18:11:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 34, + "열번": 2276, + "역명": "부산진", + "시간": "19:43:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1297, + "역명": "부산진", + "시간": "21:09:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1047, + "역명": "부산진", + "시간": "08:34:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2078, + "역명": "부산진", + "시간": "10:07:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1107, + "역명": "부산진", + "시간": "11:28:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2136, + "역명": "부산진", + "시간": "13:01:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1169, + "역명": "부산진", + "시간": "14:22:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2196, + "역명": "부산진", + "시간": "15:56:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1233, + "역명": "부산진", + "시간": "17:18:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2260, + "역명": "부산진", + "시간": "18:53:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1283, + "역명": "부산진", + "시간": "20:13:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2308, + "역명": "부산진", + "시간": "21:50:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1325, + "역명": "부산진", + "시간": "23:17:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 36, + "열번": 2226, + "역명": "부산진", + "시간": "17:16:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1259, + "역명": "부산진", + "시간": "18:39:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 36, + "열번": 2284, + "역명": "부산진", + "시간": "20:13:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1303, + "역명": "부산진", + "시간": "21:33:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1127, + "역명": "부산진", + "시간": "12:26:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2154, + "역명": "부산진", + "시간": "14:00:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1191, + "역명": "부산진", + "시간": "15:22:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2218, + "역명": "부산진", + "시간": "16:56:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1253, + "역명": "부산진", + "시간": "18:18:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 37, + "열번": 2278, + "역명": "부산진", + "시간": "19:50:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 39, + "열번": 1149, + "역명": "부산진", + "시간": "13:27:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2176, + "역명": "부산진", + "시간": "15:01:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1213, + "역명": "부산진", + "시간": "16:23:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 39, + "열번": 2242, + "역명": "부산진", + "시간": "17:59:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 41, + "열번": 1175, + "역명": "부산진", + "시간": "14:38:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2202, + "역명": "부산진", + "시간": "16:12:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1239, + "역명": "부산진", + "시간": "17:34:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2266, + "역명": "부산진", + "시간": "19:11:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1289, + "역명": "부산진", + "시간": "20:37:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2312, + "역명": "부산진", + "시간": "22:10:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1327, + "역명": "부산진", + "시간": "23:29:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "초량", + "시간": "05:44:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "초량", + "시간": "07:09:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2050, + "역명": "초량", + "시간": "08:44:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "초량", + "시간": "05:28:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "초량", + "시간": "07:00:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "초량", + "시간": "08:34:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1077, + "역명": "초량", + "시간": "10:00:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2106, + "역명": "초량", + "시간": "11:30:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1137, + "역명": "초량", + "시간": "12:55:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2164, + "역명": "초량", + "시간": "14:26:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1201, + "역명": "초량", + "시간": "15:51:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2230, + "역명": "초량", + "시간": "17:25:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1261, + "역명": "초량", + "시간": "18:48:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2286, + "역명": "초량", + "시간": "20:20:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1305, + "역명": "초량", + "시간": "21:43:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 2, + "열번": 2324, + "역명": "초량", + "시간": "23:13:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "초량", + "시간": "05:58:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "초량", + "시간": "07:27:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2056, + "역명": "초량", + "시간": "09:00:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1085, + "역명": "초량", + "시간": "10:24:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2114, + "역명": "초량", + "시간": "11:54:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1145, + "역명": "초량", + "시간": "13:17:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2172, + "역명": "초량", + "시간": "14:48:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1209, + "역명": "초량", + "시간": "16:13:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2238, + "역명": "초량", + "시간": "17:46:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "초량", + "시간": "06:10:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1023, + "역명": "초량", + "시간": "07:34:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2058, + "역명": "초량", + "시간": "09:06:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1087, + "역명": "초량", + "시간": "10:30:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2116, + "역명": "초량", + "시간": "12:00:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1147, + "역명": "초량", + "시간": "13:23:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2174, + "역명": "초량", + "시간": "14:54:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1211, + "역명": "초량", + "시간": "16:19:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2240, + "역명": "초량", + "시간": "17:52:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1269, + "역명": "초량", + "시간": "19:19:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2294, + "역명": "초량", + "시간": "20:52:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1313, + "역명": "초량", + "시간": "22:17:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2330, + "역명": "초량", + "시간": "23:50:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 5, + "열번": 1001, + "역명": "초량", + "시간": "05:47:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2018, + "역명": "초량", + "시간": "07:18:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1051, + "역명": "초량", + "시간": "08:46:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2082, + "역명": "초량", + "시간": "10:18:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1111, + "역명": "초량", + "시간": "11:42:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2140, + "역명": "초량", + "시간": "13:12:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1173, + "역명": "초량", + "시간": "14:34:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2200, + "역명": "초량", + "시간": "16:05:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1237, + "역명": "초량", + "시간": "17:30:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2264, + "역명": "초량", + "시간": "19:04:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1287, + "역명": "초량", + "시간": "20:31:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2310, + "역명": "초량", + "시간": "21:59:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2008, + "역명": "초량", + "시간": "06:22:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1027, + "역명": "초량", + "시간": "07:46:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2062, + "역명": "초량", + "시간": "09:18:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1091, + "역명": "초량", + "시간": "10:42:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2120, + "역명": "초량", + "시간": "12:12:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1153, + "역명": "초량", + "시간": "13:39:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2180, + "역명": "초량", + "시간": "15:10:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1217, + "역명": "초량", + "시간": "16:35:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2246, + "역명": "초량", + "시간": "18:10:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1273, + "역명": "초량", + "시간": "19:35:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2298, + "역명": "초량", + "시간": "21:08:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1317, + "역명": "초량", + "시간": "22:37:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1003, + "역명": "초량", + "시간": "05:55:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2020, + "역명": "초량", + "시간": "07:27:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1053, + "역명": "초량", + "시간": "08:51:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2084, + "역명": "초량", + "시간": "10:24:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1113, + "역명": "초량", + "시간": "11:48:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2142, + "역명": "초량", + "시간": "13:18:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1177, + "역명": "초량", + "시간": "14:45:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2204, + "역명": "초량", + "시간": "16:16:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1241, + "역명": "초량", + "시간": "17:42:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2268, + "역명": "초량", + "시간": "19:16:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1291, + "역명": "초량", + "시간": "20:47:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2314, + "역명": "초량", + "시간": "22:19:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 7, + "열번": 1329, + "역명": "초량", + "시간": "23:43:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2010, + "역명": "초량", + "시간": "06:34:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1033, + "역명": "초량", + "시간": "08:01:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2066, + "역명": "초량", + "시간": "09:30:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1095, + "역명": "초량", + "시간": "10:54:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2124, + "역명": "초량", + "시간": "12:24:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1157, + "역명": "초량", + "시간": "13:50:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2184, + "역명": "초량", + "시간": "15:21:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1221, + "역명": "초량", + "시간": "16:46:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2248, + "역명": "초량", + "시간": "18:16:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1275, + "역명": "초량", + "시간": "19:43:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 8, + "열번": 2300, + "역명": "초량", + "시간": "21:16:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 9, + "열번": 2022, + "역명": "초량", + "시간": "07:33:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1055, + "역명": "초량", + "시간": "08:56:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2086, + "역명": "초량", + "시간": "10:30:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1115, + "역명": "초량", + "시간": "11:54:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2144, + "역명": "초량", + "시간": "13:24:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1179, + "역명": "초량", + "시간": "14:51:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2206, + "역명": "초량", + "시간": "16:22:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1243, + "역명": "초량", + "시간": "17:48:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 9, + "열번": 2270, + "역명": "초량", + "시간": "19:22:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2012, + "역명": "초량", + "시간": "06:46:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1039, + "역명": "초량", + "시간": "08:16:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2072, + "역명": "초량", + "시간": "09:48:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1101, + "역명": "초량", + "시간": "11:12:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2130, + "역명": "초량", + "시간": "12:42:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1163, + "역명": "초량", + "시간": "14:07:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2190, + "역명": "초량", + "시간": "15:38:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1227, + "역명": "초량", + "시간": "17:03:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2254, + "역명": "초량", + "시간": "18:34:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1279, + "역명": "초량", + "시간": "19:59:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2304, + "역명": "초량", + "시간": "21:32:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1321, + "역명": "초량", + "시간": "22:57:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 11, + "열번": 1005, + "역명": "초량", + "시간": "06:06:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2024, + "역명": "초량", + "시간": "07:39:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1057, + "역명": "초량", + "시간": "09:01:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2088, + "역명": "초량", + "시간": "10:36:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1117, + "역명": "초량", + "시간": "12:00:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2146, + "역명": "초량", + "시간": "13:30:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1181, + "역명": "초량", + "시간": "14:56:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2208, + "역명": "초량", + "시간": "16:27:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1245, + "역명": "초량", + "시간": "17:54:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2272, + "역명": "초량", + "시간": "19:28:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1293, + "역명": "초량", + "시간": "20:55:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2316, + "역명": "초량", + "시간": "22:29:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 11, + "열번": 1331, + "역명": "초량", + "시간": "23:54:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2014, + "역명": "초량", + "시간": "06:58:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1043, + "역명": "초량", + "시간": "08:26:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2074, + "역명": "초량", + "시간": "09:54:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1103, + "역명": "초량", + "시간": "11:18:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2132, + "역명": "초량", + "시간": "12:48:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1165, + "역명": "초량", + "시간": "14:12:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "초량", + "시간": "15:43:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1229, + "역명": "초량", + "시간": "17:08:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2256, + "역명": "초량", + "시간": "18:40:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1281, + "역명": "초량", + "시간": "20:07:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2306, + "역명": "초량", + "시간": "21:40:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1323, + "역명": "초량", + "시간": "23:08:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1009, + "역명": "초량", + "시간": "06:28:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2032, + "역명": "초량", + "시간": "07:59:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1065, + "역명": "초량", + "시간": "09:24:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2094, + "역명": "초량", + "시간": "10:54:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1123, + "역명": "초량", + "시간": "12:17:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2152, + "역명": "초량", + "시간": "13:48:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1187, + "역명": "초량", + "시간": "15:13:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 13, + "열번": 2214, + "역명": "초량", + "시간": "16:44:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2016, + "역명": "초량", + "시간": "07:09:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1049, + "역명": "초량", + "시간": "08:41:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2080, + "역명": "초량", + "시간": "10:12:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1109, + "역명": "초량", + "시간": "11:36:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2138, + "역명": "초량", + "시간": "13:06:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1171, + "역명": "초량", + "시간": "14:29:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2198, + "역명": "초량", + "시간": "16:00:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1235, + "역명": "초량", + "시간": "17:25:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2262, + "역명": "초량", + "시간": "18:58:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1285, + "역명": "초량", + "시간": "20:23:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1011, + "역명": "초량", + "시간": "06:39:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2036, + "역명": "초량", + "시간": "08:09:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1069, + "역명": "초량", + "시간": "09:36:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2098, + "역명": "초량", + "시간": "11:06:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1129, + "역명": "초량", + "시간": "12:33:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2156, + "역명": "초량", + "시간": "14:04:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1193, + "역명": "초량", + "시간": "15:29:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2220, + "역명": "초량", + "시간": "17:00:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1255, + "역명": "초량", + "시간": "18:27:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2280, + "역명": "초량", + "시간": "19:56:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1299, + "역명": "초량", + "시간": "21:19:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2320, + "역명": "초량", + "시간": "22:49:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2026, + "역명": "초량", + "시간": "07:44:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 16, + "열번": 1059, + "역명": "초량", + "시간": "09:06:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2038, + "역명": "초량", + "시간": "08:14:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 18, + "열번": 1007, + "역명": "초량", + "시간": "06:17:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2028, + "역명": "초량", + "시간": "07:49:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1061, + "역명": "초량", + "시간": "09:12:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2090, + "역명": "초량", + "시간": "10:42:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1119, + "역명": "초량", + "시간": "12:06:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2148, + "역명": "초량", + "시간": "13:36:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1183, + "역명": "초량", + "시간": "15:02:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2210, + "역명": "초량", + "시간": "16:33:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1247, + "역명": "초량", + "시간": "18:00:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2040, + "역명": "초량", + "시간": "08:19:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1071, + "역명": "초량", + "시간": "09:42:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2100, + "역명": "초량", + "시간": "11:12:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1131, + "역명": "초량", + "시간": "12:39:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2158, + "역명": "초량", + "시간": "14:10:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1195, + "역명": "초량", + "시간": "15:35:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2222, + "역명": "초량", + "시간": "17:05:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2030, + "역명": "초량", + "시간": "07:54:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1063, + "역명": "초량", + "시간": "09:18:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2092, + "역명": "초량", + "시간": "10:48:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1121, + "역명": "초량", + "시간": "12:11:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2150, + "역명": "초량", + "시간": "13:42:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1185, + "역명": "초량", + "시간": "15:07:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2212, + "역명": "초량", + "시간": "16:38:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1249, + "역명": "초량", + "시간": "18:06:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2274, + "역명": "초량", + "시간": "19:35:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1295, + "역명": "초량", + "시간": "21:03:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2318, + "역명": "초량", + "시간": "22:39:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 20, + "열번": 7931, + "역명": "초량", + "시간": "00:10:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 21, + "열번": 1013, + "역명": "초량", + "시간": "06:50:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2042, + "역명": "초량", + "시간": "08:24:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1073, + "역명": "초량", + "시간": "09:48:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2102, + "역명": "초량", + "시간": "11:18:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1133, + "역명": "초량", + "시간": "12:44:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2160, + "역명": "초량", + "시간": "14:15:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1197, + "역명": "초량", + "시간": "15:40:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2224, + "역명": "초량", + "시간": "17:10:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1257, + "역명": "초량", + "시간": "18:34:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2282, + "역명": "초량", + "시간": "20:04:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1301, + "역명": "초량", + "시간": "21:27:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2322, + "역명": "초량", + "시간": "23:01:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2034, + "역명": "초량", + "시간": "08:04:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1067, + "역명": "초량", + "시간": "09:30:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2096, + "역명": "초량", + "시간": "11:00:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1125, + "역명": "초량", + "시간": "12:22:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2044, + "역명": "초량", + "시간": "08:29:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1075, + "역명": "초량", + "시간": "09:54:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2104, + "역명": "초량", + "시간": "11:24:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1135, + "역명": "초량", + "시간": "12:50:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2162, + "역명": "초량", + "시간": "14:21:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1199, + "역명": "초량", + "시간": "15:46:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2228, + "역명": "초량", + "시간": "17:20:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "초량", + "시간": "08:39:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1079, + "역명": "초량", + "시간": "10:06:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2108, + "역명": "초량", + "시간": "11:36:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1139, + "역명": "초량", + "시간": "13:01:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2166, + "역명": "초량", + "시간": "14:32:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1203, + "역명": "초량", + "시간": "15:57:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2232, + "역명": "초량", + "시간": "17:30:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1263, + "역명": "초량", + "시간": "18:55:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2288, + "역명": "초량", + "시간": "20:28:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1307, + "역명": "초량", + "시간": "21:51:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 24, + "열번": 2326, + "역명": "초량", + "시간": "23:25:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "초량", + "시간": "07:18:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2054, + "역명": "초량", + "시간": "08:54:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1083, + "역명": "초량", + "시간": "10:18:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2112, + "역명": "초량", + "시간": "11:48:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1143, + "역명": "초량", + "시간": "13:12:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2170, + "역명": "초량", + "시간": "14:43:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1207, + "역명": "초량", + "시간": "16:08:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2236, + "역명": "초량", + "시간": "17:40:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1267, + "역명": "초량", + "시간": "19:11:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2292, + "역명": "초량", + "시간": "20:44:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1311, + "역명": "초량", + "시간": "22:07:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2328, + "역명": "초량", + "시간": "23:35:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2052, + "역명": "초량", + "시간": "08:49:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1081, + "역명": "초량", + "시간": "10:12:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2110, + "역명": "초량", + "시간": "11:42:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1141, + "역명": "초량", + "시간": "13:06:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2168, + "역명": "초량", + "시간": "14:37:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1205, + "역명": "초량", + "시간": "16:02:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2234, + "역명": "초량", + "시간": "17:35:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1265, + "역명": "초량", + "시간": "19:03:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2290, + "역명": "초량", + "시간": "20:36:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1309, + "역명": "초량", + "시간": "21:59:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1025, + "역명": "초량", + "시간": "07:41:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2060, + "역명": "초량", + "시간": "09:12:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1089, + "역명": "초량", + "시간": "10:36:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2118, + "역명": "초량", + "시간": "12:06:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1151, + "역명": "초량", + "시간": "13:34:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2178, + "역명": "초량", + "시간": "15:05:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1215, + "역명": "초량", + "시간": "16:30:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2244, + "역명": "초량", + "시간": "18:04:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1271, + "역명": "초량", + "시간": "19:27:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2296, + "역명": "초량", + "시간": "21:00:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 27, + "열번": 1315, + "역명": "초량", + "시간": "22:27:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 28, + "열번": 1029, + "역명": "초량", + "시간": "07:51:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2064, + "역명": "초량", + "시간": "09:24:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1093, + "역명": "초량", + "시간": "10:48:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2122, + "역명": "초량", + "시간": "12:18:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1155, + "역명": "초량", + "시간": "13:45:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2182, + "역명": "초량", + "시간": "15:16:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1219, + "역명": "초량", + "시간": "16:41:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1035, + "역명": "초량", + "시간": "08:06:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2068, + "역명": "초량", + "시간": "09:36:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1097, + "역명": "초량", + "시간": "11:00:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2126, + "역명": "초량", + "시간": "12:30:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1159, + "역명": "초량", + "시간": "13:56:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2186, + "역명": "초량", + "시간": "15:27:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1223, + "역명": "초량", + "시간": "16:52:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 29, + "열번": 2250, + "역명": "초량", + "시간": "18:22:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1031, + "역명": "초량", + "시간": "07:56:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1037, + "역명": "초량", + "시간": "08:11:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2070, + "역명": "초량", + "시간": "09:42:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1099, + "역명": "초량", + "시간": "11:06:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2128, + "역명": "초량", + "시간": "12:36:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1161, + "역명": "초량", + "시간": "14:01:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2188, + "역명": "초량", + "시간": "15:32:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1225, + "역명": "초량", + "시간": "16:57:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2252, + "역명": "초량", + "시간": "18:28:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1277, + "역명": "초량", + "시간": "19:51:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2302, + "역명": "초량", + "시간": "21:24:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1319, + "역명": "초량", + "시간": "22:47:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 32, + "열번": 1041, + "역명": "초량", + "시간": "08:21:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1045, + "역명": "초량", + "시간": "08:31:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2076, + "역명": "초량", + "시간": "10:00:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1105, + "역명": "초량", + "시간": "11:24:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2134, + "역명": "초량", + "시간": "12:54:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1167, + "역명": "초량", + "시간": "14:18:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2194, + "역명": "초량", + "시간": "15:49:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1231, + "역명": "초량", + "시간": "17:14:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 33, + "열번": 2258, + "역명": "초량", + "시간": "18:46:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 34, + "열번": 8904, + "역명": "초량", + "시간": "13:53:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1189, + "역명": "초량", + "시간": "15:18:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 34, + "열번": 2216, + "역명": "초량", + "시간": "16:49:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1251, + "역명": "초량", + "시간": "18:13:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 34, + "열번": 2276, + "역명": "초량", + "시간": "19:42:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1297, + "역명": "초량", + "시간": "21:11:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1047, + "역명": "초량", + "시간": "08:36:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2078, + "역명": "초량", + "시간": "10:06:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1107, + "역명": "초량", + "시간": "11:30:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2136, + "역명": "초량", + "시간": "13:00:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1169, + "역명": "초량", + "시간": "14:23:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2196, + "역명": "초량", + "시간": "15:54:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1233, + "역명": "초량", + "시간": "17:19:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2260, + "역명": "초량", + "시간": "18:52:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1283, + "역명": "초량", + "시간": "20:15:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2308, + "역명": "초량", + "시간": "21:49:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1325, + "역명": "초량", + "시간": "23:19:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 36, + "열번": 2226, + "역명": "초량", + "시간": "17:15:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1259, + "역명": "초량", + "시간": "18:41:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 36, + "열번": 2284, + "역명": "초량", + "시간": "20:12:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1303, + "역명": "초량", + "시간": "21:35:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1127, + "역명": "초량", + "시간": "12:28:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2154, + "역명": "초량", + "시간": "13:59:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1191, + "역명": "초량", + "시간": "15:24:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2218, + "역명": "초량", + "시간": "16:55:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1253, + "역명": "초량", + "시간": "18:20:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 37, + "열번": 2278, + "역명": "초량", + "시간": "19:49:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 39, + "열번": 1149, + "역명": "초량", + "시간": "13:28:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2176, + "역명": "초량", + "시간": "14:59:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1213, + "역명": "초량", + "시간": "16:24:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 39, + "열번": 2242, + "역명": "초량", + "시간": "17:58:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 41, + "열번": 1175, + "역명": "초량", + "시간": "14:40:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2202, + "역명": "초량", + "시간": "16:11:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1239, + "역명": "초량", + "시간": "17:36:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2266, + "역명": "초량", + "시간": "19:10:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1289, + "역명": "초량", + "시간": "20:39:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2312, + "역명": "초량", + "시간": "22:09:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1327, + "역명": "초량", + "시간": "23:31:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "부산역", + "시간": "05:42:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "부산역", + "시간": "07:11:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2050, + "역명": "부산역", + "시간": "08:42:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "부산역", + "시간": "05:26:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "부산역", + "시간": "07:02:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "부산역", + "시간": "08:32:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1077, + "역명": "부산역", + "시간": "10:01:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2106, + "역명": "부산역", + "시간": "11:28:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1137, + "역명": "부산역", + "시간": "12:57:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2164, + "역명": "부산역", + "시간": "14:24:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1201, + "역명": "부산역", + "시간": "15:53:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2230, + "역명": "부산역", + "시간": "17:23:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1261, + "역명": "부산역", + "시간": "18:49:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2286, + "역명": "부산역", + "시간": "20:18:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1305, + "역명": "부산역", + "시간": "21:44:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 2, + "열번": 2324, + "역명": "부산역", + "시간": "23:11:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "부산역", + "시간": "05:56:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "부산역", + "시간": "07:29:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2056, + "역명": "부산역", + "시간": "08:58:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1085, + "역명": "부산역", + "시간": "10:25:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2114, + "역명": "부산역", + "시간": "11:52:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1145, + "역명": "부산역", + "시간": "13:19:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2172, + "역명": "부산역", + "시간": "14:46:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1209, + "역명": "부산역", + "시간": "16:15:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2238, + "역명": "부산역", + "시간": "17:44:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "부산역", + "시간": "06:08:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1023, + "역명": "부산역", + "시간": "07:36:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2058, + "역명": "부산역", + "시간": "09:04:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1087, + "역명": "부산역", + "시간": "10:31:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2116, + "역명": "부산역", + "시간": "11:58:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1147, + "역명": "부산역", + "시간": "13:24:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2174, + "역명": "부산역", + "시간": "14:52:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1211, + "역명": "부산역", + "시간": "16:20:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2240, + "역명": "부산역", + "시간": "17:50:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1269, + "역명": "부산역", + "시간": "19:20:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2294, + "역명": "부산역", + "시간": "20:50:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1313, + "역명": "부산역", + "시간": "22:18:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2330, + "역명": "부산역", + "시간": "23:49:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 5, + "열번": 1001, + "역명": "부산역", + "시간": "05:49:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2018, + "역명": "부산역", + "시간": "07:16:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1051, + "역명": "부산역", + "시간": "08:47:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2082, + "역명": "부산역", + "시간": "10:16:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1111, + "역명": "부산역", + "시간": "11:43:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2140, + "역명": "부산역", + "시간": "13:10:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1173, + "역명": "부산역", + "시간": "14:36:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2200, + "역명": "부산역", + "시간": "16:03:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1237, + "역명": "부산역", + "시간": "17:32:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2264, + "역명": "부산역", + "시간": "19:02:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1287, + "역명": "부산역", + "시간": "20:32:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2310, + "역명": "부산역", + "시간": "21:57:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2008, + "역명": "부산역", + "시간": "06:20:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1027, + "역명": "부산역", + "시간": "07:47:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2062, + "역명": "부산역", + "시간": "09:16:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1091, + "역명": "부산역", + "시간": "10:43:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2120, + "역명": "부산역", + "시간": "12:10:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1153, + "역명": "부산역", + "시간": "13:41:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2180, + "역명": "부산역", + "시간": "15:08:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1217, + "역명": "부산역", + "시간": "16:37:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2246, + "역명": "부산역", + "시간": "18:08:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1273, + "역명": "부산역", + "시간": "19:36:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2298, + "역명": "부산역", + "시간": "21:06:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1317, + "역명": "부산역", + "시간": "22:38:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1003, + "역명": "부산역", + "시간": "05:57:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2020, + "역명": "부산역", + "시간": "07:25:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1053, + "역명": "부산역", + "시간": "08:52:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2084, + "역명": "부산역", + "시간": "10:22:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1113, + "역명": "부산역", + "시간": "11:49:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2142, + "역명": "부산역", + "시간": "13:16:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1177, + "역명": "부산역", + "시간": "14:47:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2204, + "역명": "부산역", + "시간": "16:14:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1241, + "역명": "부산역", + "시간": "17:43:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2268, + "역명": "부산역", + "시간": "19:14:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1291, + "역명": "부산역", + "시간": "20:48:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2314, + "역명": "부산역", + "시간": "22:17:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 7, + "열번": 1329, + "역명": "부산역", + "시간": "23:44:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2010, + "역명": "부산역", + "시간": "06:32:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1033, + "역명": "부산역", + "시간": "08:02:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2066, + "역명": "부산역", + "시간": "09:28:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1095, + "역명": "부산역", + "시간": "10:55:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2124, + "역명": "부산역", + "시간": "12:22:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1157, + "역명": "부산역", + "시간": "13:52:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2184, + "역명": "부산역", + "시간": "15:19:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1221, + "역명": "부산역", + "시간": "16:48:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2248, + "역명": "부산역", + "시간": "18:14:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1275, + "역명": "부산역", + "시간": "19:44:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 8, + "열번": 2300, + "역명": "부산역", + "시간": "21:14:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 9, + "열번": 2022, + "역명": "부산역", + "시간": "07:31:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1055, + "역명": "부산역", + "시간": "08:57:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2086, + "역명": "부산역", + "시간": "10:28:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1115, + "역명": "부산역", + "시간": "11:55:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2144, + "역명": "부산역", + "시간": "13:22:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1179, + "역명": "부산역", + "시간": "14:52:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2206, + "역명": "부산역", + "시간": "16:20:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1243, + "역명": "부산역", + "시간": "17:49:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 9, + "열번": 2270, + "역명": "부산역", + "시간": "19:20:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2012, + "역명": "부산역", + "시간": "06:44:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1039, + "역명": "부산역", + "시간": "08:17:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2072, + "역명": "부산역", + "시간": "09:46:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1101, + "역명": "부산역", + "시간": "11:13:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2130, + "역명": "부산역", + "시간": "12:40:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1163, + "역명": "부산역", + "시간": "14:08:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2190, + "역명": "부산역", + "시간": "15:36:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1227, + "역명": "부산역", + "시간": "17:04:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2254, + "역명": "부산역", + "시간": "18:32:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1279, + "역명": "부산역", + "시간": "20:00:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2304, + "역명": "부산역", + "시간": "21:30:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1321, + "역명": "부산역", + "시간": "22:58:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 11, + "열번": 1005, + "역명": "부산역", + "시간": "06:08:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2024, + "역명": "부산역", + "시간": "07:37:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1057, + "역명": "부산역", + "시간": "09:02:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2088, + "역명": "부산역", + "시간": "10:34:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1117, + "역명": "부산역", + "시간": "12:01:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2146, + "역명": "부산역", + "시간": "13:28:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1181, + "역명": "부산역", + "시간": "14:58:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2208, + "역명": "부산역", + "시간": "16:25:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1245, + "역명": "부산역", + "시간": "17:55:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2272, + "역명": "부산역", + "시간": "19:26:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1293, + "역명": "부산역", + "시간": "20:56:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2316, + "역명": "부산역", + "시간": "22:27:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 11, + "열번": 1331, + "역명": "부산역", + "시간": "23:56:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2014, + "역명": "부산역", + "시간": "06:56:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1043, + "역명": "부산역", + "시간": "08:27:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2074, + "역명": "부산역", + "시간": "09:52:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1103, + "역명": "부산역", + "시간": "11:19:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2132, + "역명": "부산역", + "시간": "12:46:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1165, + "역명": "부산역", + "시간": "14:14:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "부산역", + "시간": "15:41:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1229, + "역명": "부산역", + "시간": "17:10:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2256, + "역명": "부산역", + "시간": "18:38:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1281, + "역명": "부산역", + "시간": "20:08:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2306, + "역명": "부산역", + "시간": "21:38:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1323, + "역명": "부산역", + "시간": "23:09:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1009, + "역명": "부산역", + "시간": "06:30:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2032, + "역명": "부산역", + "시간": "07:57:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1065, + "역명": "부산역", + "시간": "09:25:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2094, + "역명": "부산역", + "시간": "10:52:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1123, + "역명": "부산역", + "시간": "12:18:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2152, + "역명": "부산역", + "시간": "13:46:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1187, + "역명": "부산역", + "시간": "15:14:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 13, + "열번": 2214, + "역명": "부산역", + "시간": "16:42:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2016, + "역명": "부산역", + "시간": "07:07:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1049, + "역명": "부산역", + "시간": "08:42:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2080, + "역명": "부산역", + "시간": "10:10:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1109, + "역명": "부산역", + "시간": "11:37:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2138, + "역명": "부산역", + "시간": "13:04:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1171, + "역명": "부산역", + "시간": "14:30:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2198, + "역명": "부산역", + "시간": "15:58:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1235, + "역명": "부산역", + "시간": "17:26:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2262, + "역명": "부산역", + "시간": "18:56:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1285, + "역명": "부산역", + "시간": "20:24:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1011, + "역명": "부산역", + "시간": "06:41:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2036, + "역명": "부산역", + "시간": "08:07:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1069, + "역명": "부산역", + "시간": "09:37:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2098, + "역명": "부산역", + "시간": "11:04:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1129, + "역명": "부산역", + "시간": "12:35:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2156, + "역명": "부산역", + "시간": "14:02:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1193, + "역명": "부산역", + "시간": "15:31:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2220, + "역명": "부산역", + "시간": "16:58:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1255, + "역명": "부산역", + "시간": "18:28:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2280, + "역명": "부산역", + "시간": "19:54:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1299, + "역명": "부산역", + "시간": "21:20:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2320, + "역명": "부산역", + "시간": "22:47:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2026, + "역명": "부산역", + "시간": "07:42:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 16, + "열번": 1059, + "역명": "부산역", + "시간": "09:07:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2038, + "역명": "부산역", + "시간": "08:12:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 18, + "열번": 1007, + "역명": "부산역", + "시간": "06:19:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2028, + "역명": "부산역", + "시간": "07:47:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1061, + "역명": "부산역", + "시간": "09:13:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2090, + "역명": "부산역", + "시간": "10:40:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1119, + "역명": "부산역", + "시간": "12:07:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2148, + "역명": "부산역", + "시간": "13:34:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1183, + "역명": "부산역", + "시간": "15:03:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2210, + "역명": "부산역", + "시간": "16:31:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1247, + "역명": "부산역", + "시간": "18:01:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2040, + "역명": "부산역", + "시간": "08:17:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1071, + "역명": "부산역", + "시간": "09:43:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2100, + "역명": "부산역", + "시간": "11:10:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1131, + "역명": "부산역", + "시간": "12:40:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2158, + "역명": "부산역", + "시간": "14:08:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1195, + "역명": "부산역", + "시간": "15:36:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2222, + "역명": "부산역", + "시간": "17:03:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2030, + "역명": "부산역", + "시간": "07:52:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1063, + "역명": "부산역", + "시간": "09:19:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2092, + "역명": "부산역", + "시간": "10:46:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1121, + "역명": "부산역", + "시간": "12:13:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2150, + "역명": "부산역", + "시간": "13:40:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1185, + "역명": "부산역", + "시간": "15:09:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2212, + "역명": "부산역", + "시간": "16:36:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1249, + "역명": "부산역", + "시간": "18:07:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2274, + "역명": "부산역", + "시간": "19:33:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1295, + "역명": "부산역", + "시간": "21:04:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2318, + "역명": "부산역", + "시간": "22:37:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 20, + "열번": 7931, + "역명": "부산역", + "시간": "00:12:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 21, + "열번": 1013, + "역명": "부산역", + "시간": "06:52:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2042, + "역명": "부산역", + "시간": "08:22:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1073, + "역명": "부산역", + "시간": "09:49:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2102, + "역명": "부산역", + "시간": "11:16:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1133, + "역명": "부산역", + "시간": "12:46:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2160, + "역명": "부산역", + "시간": "14:13:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1197, + "역명": "부산역", + "시간": "15:42:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2224, + "역명": "부산역", + "시간": "17:08:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1257, + "역명": "부산역", + "시간": "18:35:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2282, + "역명": "부산역", + "시간": "20:02:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1301, + "역명": "부산역", + "시간": "21:28:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2322, + "역명": "부산역", + "시간": "22:59:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2034, + "역명": "부산역", + "시간": "08:02:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1067, + "역명": "부산역", + "시간": "09:31:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2096, + "역명": "부산역", + "시간": "10:58:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1125, + "역명": "부산역", + "시간": "12:24:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2044, + "역명": "부산역", + "시간": "08:27:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1075, + "역명": "부산역", + "시간": "09:55:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2104, + "역명": "부산역", + "시간": "11:22:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1135, + "역명": "부산역", + "시간": "12:51:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2162, + "역명": "부산역", + "시간": "14:19:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1199, + "역명": "부산역", + "시간": "15:47:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2228, + "역명": "부산역", + "시간": "17:18:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "부산역", + "시간": "08:37:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1079, + "역명": "부산역", + "시간": "10:07:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2108, + "역명": "부산역", + "시간": "11:34:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1139, + "역명": "부산역", + "시간": "13:02:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2166, + "역명": "부산역", + "시간": "14:30:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1203, + "역명": "부산역", + "시간": "15:58:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2232, + "역명": "부산역", + "시간": "17:28:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1263, + "역명": "부산역", + "시간": "18:56:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2288, + "역명": "부산역", + "시간": "20:26:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1307, + "역명": "부산역", + "시간": "21:52:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 24, + "열번": 2326, + "역명": "부산역", + "시간": "23:23:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "부산역", + "시간": "07:20:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2054, + "역명": "부산역", + "시간": "08:52:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1083, + "역명": "부산역", + "시간": "10:19:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2112, + "역명": "부산역", + "시간": "11:46:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1143, + "역명": "부산역", + "시간": "13:13:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2170, + "역명": "부산역", + "시간": "14:41:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1207, + "역명": "부산역", + "시간": "16:09:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2236, + "역명": "부산역", + "시간": "17:38:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1267, + "역명": "부산역", + "시간": "19:12:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2292, + "역명": "부산역", + "시간": "20:42:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1311, + "역명": "부산역", + "시간": "22:08:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2328, + "역명": "부산역", + "시간": "23:33:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2052, + "역명": "부산역", + "시간": "08:47:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1081, + "역명": "부산역", + "시간": "10:13:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2110, + "역명": "부산역", + "시간": "11:40:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1141, + "역명": "부산역", + "시간": "13:08:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2168, + "역명": "부산역", + "시간": "14:35:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1205, + "역명": "부산역", + "시간": "16:04:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2234, + "역명": "부산역", + "시간": "17:33:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1265, + "역명": "부산역", + "시간": "19:04:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2290, + "역명": "부산역", + "시간": "20:34:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1309, + "역명": "부산역", + "시간": "22:00:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1025, + "역명": "부산역", + "시간": "07:42:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2060, + "역명": "부산역", + "시간": "09:10:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1089, + "역명": "부산역", + "시간": "10:37:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2118, + "역명": "부산역", + "시간": "12:04:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1151, + "역명": "부산역", + "시간": "13:35:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2178, + "역명": "부산역", + "시간": "15:03:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1215, + "역명": "부산역", + "시간": "16:31:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2244, + "역명": "부산역", + "시간": "18:02:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1271, + "역명": "부산역", + "시간": "19:28:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2296, + "역명": "부산역", + "시간": "20:58:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 27, + "열번": 1315, + "역명": "부산역", + "시간": "22:28:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 28, + "열번": 1029, + "역명": "부산역", + "시간": "07:52:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2064, + "역명": "부산역", + "시간": "09:22:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1093, + "역명": "부산역", + "시간": "10:49:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2122, + "역명": "부산역", + "시간": "12:16:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1155, + "역명": "부산역", + "시간": "13:46:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2182, + "역명": "부산역", + "시간": "15:14:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1219, + "역명": "부산역", + "시간": "16:42:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1035, + "역명": "부산역", + "시간": "08:07:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2068, + "역명": "부산역", + "시간": "09:34:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1097, + "역명": "부산역", + "시간": "11:01:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2126, + "역명": "부산역", + "시간": "12:28:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1159, + "역명": "부산역", + "시간": "13:57:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2186, + "역명": "부산역", + "시간": "15:25:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1223, + "역명": "부산역", + "시간": "16:53:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 29, + "열번": 2250, + "역명": "부산역", + "시간": "18:20:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1031, + "역명": "부산역", + "시간": "07:57:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1037, + "역명": "부산역", + "시간": "08:12:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2070, + "역명": "부산역", + "시간": "09:40:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1099, + "역명": "부산역", + "시간": "11:07:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2128, + "역명": "부산역", + "시간": "12:34:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1161, + "역명": "부산역", + "시간": "14:03:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2188, + "역명": "부산역", + "시간": "15:30:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1225, + "역명": "부산역", + "시간": "16:59:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2252, + "역명": "부산역", + "시간": "18:26:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1277, + "역명": "부산역", + "시간": "19:52:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2302, + "역명": "부산역", + "시간": "21:22:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1319, + "역명": "부산역", + "시간": "22:48:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 32, + "열번": 1041, + "역명": "부산역", + "시간": "08:22:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1045, + "역명": "부산역", + "시간": "08:32:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2076, + "역명": "부산역", + "시간": "09:58:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1105, + "역명": "부산역", + "시간": "11:25:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2134, + "역명": "부산역", + "시간": "12:52:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1167, + "역명": "부산역", + "시간": "14:19:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2194, + "역명": "부산역", + "시간": "15:47:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1231, + "역명": "부산역", + "시간": "17:15:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 33, + "열번": 2258, + "역명": "부산역", + "시간": "18:44:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 34, + "열번": 8904, + "역명": "부산역", + "시간": "13:51:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1189, + "역명": "부산역", + "시간": "15:20:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 34, + "열번": 2216, + "역명": "부산역", + "시간": "16:47:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1251, + "역명": "부산역", + "시간": "18:14:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 34, + "열번": 2276, + "역명": "부산역", + "시간": "19:40:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1297, + "역명": "부산역", + "시간": "21:12:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1047, + "역명": "부산역", + "시간": "08:37:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2078, + "역명": "부산역", + "시간": "10:04:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1107, + "역명": "부산역", + "시간": "11:31:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2136, + "역명": "부산역", + "시간": "12:58:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1169, + "역명": "부산역", + "시간": "14:25:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2196, + "역명": "부산역", + "시간": "15:52:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1233, + "역명": "부산역", + "시간": "17:21:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2260, + "역명": "부산역", + "시간": "18:50:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1283, + "역명": "부산역", + "시간": "20:16:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2308, + "역명": "부산역", + "시간": "21:47:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1325, + "역명": "부산역", + "시간": "23:20:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 36, + "열번": 2226, + "역명": "부산역", + "시간": "17:13:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1259, + "역명": "부산역", + "시간": "18:42:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 36, + "열번": 2284, + "역명": "부산역", + "시간": "20:10:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1303, + "역명": "부산역", + "시간": "21:36:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1127, + "역명": "부산역", + "시간": "12:29:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2154, + "역명": "부산역", + "시간": "13:57:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1191, + "역명": "부산역", + "시간": "15:25:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2218, + "역명": "부산역", + "시간": "16:53:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1253, + "역명": "부산역", + "시간": "18:21:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 37, + "열번": 2278, + "역명": "부산역", + "시간": "19:47:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 39, + "열번": 1149, + "역명": "부산역", + "시간": "13:30:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2176, + "역명": "부산역", + "시간": "14:57:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1213, + "역명": "부산역", + "시간": "16:26:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 39, + "열번": 2242, + "역명": "부산역", + "시간": "17:56:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 41, + "열번": 1175, + "역명": "부산역", + "시간": "14:41:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2202, + "역명": "부산역", + "시간": "16:09:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1239, + "역명": "부산역", + "시간": "17:37:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2266, + "역명": "부산역", + "시간": "19:08:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1289, + "역명": "부산역", + "시간": "20:40:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2312, + "역명": "부산역", + "시간": "22:07:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1327, + "역명": "부산역", + "시간": "23:32:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "중앙", + "시간": "05:40:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "중앙", + "시간": "07:13:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2050, + "역명": "중앙", + "시간": "08:40:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "중앙", + "시간": "05:24:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "중앙", + "시간": "07:04:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "중앙", + "시간": "08:30:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1077, + "역명": "중앙", + "시간": "10:03:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2106, + "역명": "중앙", + "시간": "11:26:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1137, + "역명": "중앙", + "시간": "12:59:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2164, + "역명": "중앙", + "시간": "14:22:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1201, + "역명": "중앙", + "시간": "15:55:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2230, + "역명": "중앙", + "시간": "17:21:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1261, + "역명": "중앙", + "시간": "18:51:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2286, + "역명": "중앙", + "시간": "20:16:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1305, + "역명": "중앙", + "시간": "21:46:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 2, + "열번": 2324, + "역명": "중앙", + "시간": "23:09:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "중앙", + "시간": "05:54:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "중앙", + "시간": "07:31:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2056, + "역명": "중앙", + "시간": "08:56:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1085, + "역명": "중앙", + "시간": "10:27:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2114, + "역명": "중앙", + "시간": "11:50:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1145, + "역명": "중앙", + "시간": "13:21:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2172, + "역명": "중앙", + "시간": "14:44:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1209, + "역명": "중앙", + "시간": "16:17:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2238, + "역명": "중앙", + "시간": "17:42:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "중앙", + "시간": "06:06:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1023, + "역명": "중앙", + "시간": "07:38:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2058, + "역명": "중앙", + "시간": "09:02:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1087, + "역명": "중앙", + "시간": "10:33:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2116, + "역명": "중앙", + "시간": "11:56:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1147, + "역명": "중앙", + "시간": "13:26:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2174, + "역명": "중앙", + "시간": "14:50:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1211, + "역명": "중앙", + "시간": "16:22:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2240, + "역명": "중앙", + "시간": "17:48:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1269, + "역명": "중앙", + "시간": "19:22:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2294, + "역명": "중앙", + "시간": "20:48:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1313, + "역명": "중앙", + "시간": "22:20:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2330, + "역명": "중앙", + "시간": "23:47:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 5, + "열번": 1001, + "역명": "중앙", + "시간": "05:51:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2018, + "역명": "중앙", + "시간": "07:14:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1051, + "역명": "중앙", + "시간": "08:49:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2082, + "역명": "중앙", + "시간": "10:14:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1111, + "역명": "중앙", + "시간": "11:45:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2140, + "역명": "중앙", + "시간": "13:08:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1173, + "역명": "중앙", + "시간": "14:38:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2200, + "역명": "중앙", + "시간": "16:01:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1237, + "역명": "중앙", + "시간": "17:34:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2264, + "역명": "중앙", + "시간": "19:00:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1287, + "역명": "중앙", + "시간": "20:34:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2310, + "역명": "중앙", + "시간": "21:55:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2008, + "역명": "중앙", + "시간": "06:18:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1027, + "역명": "중앙", + "시간": "07:49:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2062, + "역명": "중앙", + "시간": "09:14:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1091, + "역명": "중앙", + "시간": "10:45:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2120, + "역명": "중앙", + "시간": "12:08:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1153, + "역명": "중앙", + "시간": "13:43:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2180, + "역명": "중앙", + "시간": "15:06:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1217, + "역명": "중앙", + "시간": "16:39:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2246, + "역명": "중앙", + "시간": "18:06:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1273, + "역명": "중앙", + "시간": "19:38:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2298, + "역명": "중앙", + "시간": "21:04:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1317, + "역명": "중앙", + "시간": "22:40:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1003, + "역명": "중앙", + "시간": "05:59:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2020, + "역명": "중앙", + "시간": "07:23:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1053, + "역명": "중앙", + "시간": "08:54:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2084, + "역명": "중앙", + "시간": "10:20:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1113, + "역명": "중앙", + "시간": "11:51:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2142, + "역명": "중앙", + "시간": "13:14:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1177, + "역명": "중앙", + "시간": "14:49:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2204, + "역명": "중앙", + "시간": "16:12:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1241, + "역명": "중앙", + "시간": "17:45:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2268, + "역명": "중앙", + "시간": "19:12:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1291, + "역명": "중앙", + "시간": "20:50:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2314, + "역명": "중앙", + "시간": "22:15:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 7, + "열번": 1329, + "역명": "중앙", + "시간": "23:46:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2010, + "역명": "중앙", + "시간": "06:30:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1033, + "역명": "중앙", + "시간": "08:04:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2066, + "역명": "중앙", + "시간": "09:26:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1095, + "역명": "중앙", + "시간": "10:57:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2124, + "역명": "중앙", + "시간": "12:20:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1157, + "역명": "중앙", + "시간": "13:54:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2184, + "역명": "중앙", + "시간": "15:17:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1221, + "역명": "중앙", + "시간": "16:50:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2248, + "역명": "중앙", + "시간": "18:12:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1275, + "역명": "중앙", + "시간": "19:46:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 8, + "열번": 2300, + "역명": "중앙", + "시간": "21:12:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 9, + "열번": 2022, + "역명": "중앙", + "시간": "07:29:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1055, + "역명": "중앙", + "시간": "08:59:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2086, + "역명": "중앙", + "시간": "10:26:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1115, + "역명": "중앙", + "시간": "11:57:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2144, + "역명": "중앙", + "시간": "13:20:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1179, + "역명": "중앙", + "시간": "14:54:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2206, + "역명": "중앙", + "시간": "16:18:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1243, + "역명": "중앙", + "시간": "17:51:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 9, + "열번": 2270, + "역명": "중앙", + "시간": "19:18:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2012, + "역명": "중앙", + "시간": "06:42:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1039, + "역명": "중앙", + "시간": "08:19:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2072, + "역명": "중앙", + "시간": "09:44:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1101, + "역명": "중앙", + "시간": "11:15:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2130, + "역명": "중앙", + "시간": "12:38:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1163, + "역명": "중앙", + "시간": "14:10:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2190, + "역명": "중앙", + "시간": "15:34:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1227, + "역명": "중앙", + "시간": "17:06:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2254, + "역명": "중앙", + "시간": "18:30:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1279, + "역명": "중앙", + "시간": "20:02:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2304, + "역명": "중앙", + "시간": "21:28:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1321, + "역명": "중앙", + "시간": "23:00:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 11, + "열번": 1005, + "역명": "중앙", + "시간": "06:10:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2024, + "역명": "중앙", + "시간": "07:35:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1057, + "역명": "중앙", + "시간": "09:04:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2088, + "역명": "중앙", + "시간": "10:32:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1117, + "역명": "중앙", + "시간": "12:03:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2146, + "역명": "중앙", + "시간": "13:26:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1181, + "역명": "중앙", + "시간": "15:00:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2208, + "역명": "중앙", + "시간": "16:23:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1245, + "역명": "중앙", + "시간": "17:57:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2272, + "역명": "중앙", + "시간": "19:24:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1293, + "역명": "중앙", + "시간": "20:58:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2316, + "역명": "중앙", + "시간": "22:25:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 11, + "열번": 1331, + "역명": "중앙", + "시간": "23:58:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2014, + "역명": "중앙", + "시간": "06:54:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1043, + "역명": "중앙", + "시간": "08:29:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2074, + "역명": "중앙", + "시간": "09:50:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1103, + "역명": "중앙", + "시간": "11:21:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2132, + "역명": "중앙", + "시간": "12:44:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1165, + "역명": "중앙", + "시간": "14:16:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "중앙", + "시간": "15:39:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1229, + "역명": "중앙", + "시간": "17:12:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2256, + "역명": "중앙", + "시간": "18:36:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1281, + "역명": "중앙", + "시간": "20:10:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2306, + "역명": "중앙", + "시간": "21:36:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1323, + "역명": "중앙", + "시간": "23:11:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1009, + "역명": "중앙", + "시간": "06:32:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2032, + "역명": "중앙", + "시간": "07:55:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1065, + "역명": "중앙", + "시간": "09:27:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2094, + "역명": "중앙", + "시간": "10:50:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1123, + "역명": "중앙", + "시간": "12:20:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2152, + "역명": "중앙", + "시간": "13:44:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1187, + "역명": "중앙", + "시간": "15:16:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 13, + "열번": 2214, + "역명": "중앙", + "시간": "16:40:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2016, + "역명": "중앙", + "시간": "07:05:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1049, + "역명": "중앙", + "시간": "08:44:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2080, + "역명": "중앙", + "시간": "10:08:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1109, + "역명": "중앙", + "시간": "11:39:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2138, + "역명": "중앙", + "시간": "13:02:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1171, + "역명": "중앙", + "시간": "14:32:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2198, + "역명": "중앙", + "시간": "15:56:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1235, + "역명": "중앙", + "시간": "17:28:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2262, + "역명": "중앙", + "시간": "18:54:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1285, + "역명": "중앙", + "시간": "20:26:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1011, + "역명": "중앙", + "시간": "06:43:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2036, + "역명": "중앙", + "시간": "08:05:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1069, + "역명": "중앙", + "시간": "09:39:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2098, + "역명": "중앙", + "시간": "11:02:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1129, + "역명": "중앙", + "시간": "12:37:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2156, + "역명": "중앙", + "시간": "14:00:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1193, + "역명": "중앙", + "시간": "15:33:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2220, + "역명": "중앙", + "시간": "16:56:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1255, + "역명": "중앙", + "시간": "18:30:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2280, + "역명": "중앙", + "시간": "19:52:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1299, + "역명": "중앙", + "시간": "21:22:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2320, + "역명": "중앙", + "시간": "22:45:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2026, + "역명": "중앙", + "시간": "07:40:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 16, + "열번": 1059, + "역명": "중앙", + "시간": "09:09:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2038, + "역명": "중앙", + "시간": "08:10:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 18, + "열번": 1007, + "역명": "중앙", + "시간": "06:21:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2028, + "역명": "중앙", + "시간": "07:45:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1061, + "역명": "중앙", + "시간": "09:15:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2090, + "역명": "중앙", + "시간": "10:38:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1119, + "역명": "중앙", + "시간": "12:09:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2148, + "역명": "중앙", + "시간": "13:32:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1183, + "역명": "중앙", + "시간": "15:05:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2210, + "역명": "중앙", + "시간": "16:29:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1247, + "역명": "중앙", + "시간": "18:03:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2040, + "역명": "중앙", + "시간": "08:15:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1071, + "역명": "중앙", + "시간": "09:45:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2100, + "역명": "중앙", + "시간": "11:08:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1131, + "역명": "중앙", + "시간": "12:42:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2158, + "역명": "중앙", + "시간": "14:06:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1195, + "역명": "중앙", + "시간": "15:38:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2222, + "역명": "중앙", + "시간": "17:01:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2030, + "역명": "중앙", + "시간": "07:50:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1063, + "역명": "중앙", + "시간": "09:21:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2092, + "역명": "중앙", + "시간": "10:44:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1121, + "역명": "중앙", + "시간": "12:15:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2150, + "역명": "중앙", + "시간": "13:38:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1185, + "역명": "중앙", + "시간": "15:11:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2212, + "역명": "중앙", + "시간": "16:34:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1249, + "역명": "중앙", + "시간": "18:09:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2274, + "역명": "중앙", + "시간": "19:31:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1295, + "역명": "중앙", + "시간": "21:06:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2318, + "역명": "중앙", + "시간": "22:35:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 20, + "열번": 7931, + "역명": "중앙", + "시간": "00:14:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 21, + "열번": 1013, + "역명": "중앙", + "시간": "06:54:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2042, + "역명": "중앙", + "시간": "08:20:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1073, + "역명": "중앙", + "시간": "09:51:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2102, + "역명": "중앙", + "시간": "11:14:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1133, + "역명": "중앙", + "시간": "12:48:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2160, + "역명": "중앙", + "시간": "14:11:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1197, + "역명": "중앙", + "시간": "15:44:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2224, + "역명": "중앙", + "시간": "17:06:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1257, + "역명": "중앙", + "시간": "18:37:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2282, + "역명": "중앙", + "시간": "20:00:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1301, + "역명": "중앙", + "시간": "21:30:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2322, + "역명": "중앙", + "시간": "22:57:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2034, + "역명": "중앙", + "시간": "08:00:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1067, + "역명": "중앙", + "시간": "09:33:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2096, + "역명": "중앙", + "시간": "10:56:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1125, + "역명": "중앙", + "시간": "12:26:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2044, + "역명": "중앙", + "시간": "08:25:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1075, + "역명": "중앙", + "시간": "09:57:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2104, + "역명": "중앙", + "시간": "11:20:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1135, + "역명": "중앙", + "시간": "12:53:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2162, + "역명": "중앙", + "시간": "14:17:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1199, + "역명": "중앙", + "시간": "15:49:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2228, + "역명": "중앙", + "시간": "17:16:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "중앙", + "시간": "08:35:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1079, + "역명": "중앙", + "시간": "10:09:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2108, + "역명": "중앙", + "시간": "11:32:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1139, + "역명": "중앙", + "시간": "13:04:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2166, + "역명": "중앙", + "시간": "14:28:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1203, + "역명": "중앙", + "시간": "16:00:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2232, + "역명": "중앙", + "시간": "17:26:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1263, + "역명": "중앙", + "시간": "18:58:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2288, + "역명": "중앙", + "시간": "20:24:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1307, + "역명": "중앙", + "시간": "21:54:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 24, + "열번": 2326, + "역명": "중앙", + "시간": "23:21:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "중앙", + "시간": "07:22:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2054, + "역명": "중앙", + "시간": "08:50:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1083, + "역명": "중앙", + "시간": "10:21:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2112, + "역명": "중앙", + "시간": "11:44:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1143, + "역명": "중앙", + "시간": "13:15:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2170, + "역명": "중앙", + "시간": "14:39:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1207, + "역명": "중앙", + "시간": "16:11:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2236, + "역명": "중앙", + "시간": "17:36:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1267, + "역명": "중앙", + "시간": "19:14:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2292, + "역명": "중앙", + "시간": "20:40:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1311, + "역명": "중앙", + "시간": "22:10:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2328, + "역명": "중앙", + "시간": "23:31:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2052, + "역명": "중앙", + "시간": "08:45:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1081, + "역명": "중앙", + "시간": "10:15:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2110, + "역명": "중앙", + "시간": "11:38:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1141, + "역명": "중앙", + "시간": "13:10:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2168, + "역명": "중앙", + "시간": "14:33:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1205, + "역명": "중앙", + "시간": "16:06:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2234, + "역명": "중앙", + "시간": "17:31:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1265, + "역명": "중앙", + "시간": "19:06:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2290, + "역명": "중앙", + "시간": "20:32:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1309, + "역명": "중앙", + "시간": "22:02:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1025, + "역명": "중앙", + "시간": "07:44:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2060, + "역명": "중앙", + "시간": "09:08:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1089, + "역명": "중앙", + "시간": "10:39:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2118, + "역명": "중앙", + "시간": "12:02:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1151, + "역명": "중앙", + "시간": "13:37:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2178, + "역명": "중앙", + "시간": "15:01:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1215, + "역명": "중앙", + "시간": "16:33:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2244, + "역명": "중앙", + "시간": "18:00:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1271, + "역명": "중앙", + "시간": "19:30:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2296, + "역명": "중앙", + "시간": "20:56:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 27, + "열번": 1315, + "역명": "중앙", + "시간": "22:30:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 28, + "열번": 1029, + "역명": "중앙", + "시간": "07:54:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2064, + "역명": "중앙", + "시간": "09:20:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1093, + "역명": "중앙", + "시간": "10:51:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2122, + "역명": "중앙", + "시간": "12:14:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1155, + "역명": "중앙", + "시간": "13:48:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2182, + "역명": "중앙", + "시간": "15:12:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1219, + "역명": "중앙", + "시간": "16:44:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1035, + "역명": "중앙", + "시간": "08:09:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2068, + "역명": "중앙", + "시간": "09:32:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1097, + "역명": "중앙", + "시간": "11:03:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2126, + "역명": "중앙", + "시간": "12:26:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1159, + "역명": "중앙", + "시간": "13:59:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2186, + "역명": "중앙", + "시간": "15:23:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1223, + "역명": "중앙", + "시간": "16:55:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 29, + "열번": 2250, + "역명": "중앙", + "시간": "18:18:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1031, + "역명": "중앙", + "시간": "07:59:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1037, + "역명": "중앙", + "시간": "08:14:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2070, + "역명": "중앙", + "시간": "09:38:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1099, + "역명": "중앙", + "시간": "11:09:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2128, + "역명": "중앙", + "시간": "12:32:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1161, + "역명": "중앙", + "시간": "14:05:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2188, + "역명": "중앙", + "시간": "15:28:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1225, + "역명": "중앙", + "시간": "17:01:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2252, + "역명": "중앙", + "시간": "18:24:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1277, + "역명": "중앙", + "시간": "19:54:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2302, + "역명": "중앙", + "시간": "21:20:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1319, + "역명": "중앙", + "시간": "22:50:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 32, + "열번": 1041, + "역명": "중앙", + "시간": "08:24:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1045, + "역명": "중앙", + "시간": "08:34:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2076, + "역명": "중앙", + "시간": "09:56:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1105, + "역명": "중앙", + "시간": "11:27:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2134, + "역명": "중앙", + "시간": "12:50:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1167, + "역명": "중앙", + "시간": "14:21:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2194, + "역명": "중앙", + "시간": "15:45:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1231, + "역명": "중앙", + "시간": "17:17:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 33, + "열번": 2258, + "역명": "중앙", + "시간": "18:42:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 34, + "열번": 8904, + "역명": "중앙", + "시간": "13:49:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1189, + "역명": "중앙", + "시간": "15:22:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 34, + "열번": 2216, + "역명": "중앙", + "시간": "16:45:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1251, + "역명": "중앙", + "시간": "18:16:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 34, + "열번": 2276, + "역명": "중앙", + "시간": "19:38:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1297, + "역명": "중앙", + "시간": "21:14:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1047, + "역명": "중앙", + "시간": "08:39:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2078, + "역명": "중앙", + "시간": "10:02:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1107, + "역명": "중앙", + "시간": "11:33:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2136, + "역명": "중앙", + "시간": "12:56:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1169, + "역명": "중앙", + "시간": "14:27:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2196, + "역명": "중앙", + "시간": "15:50:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1233, + "역명": "중앙", + "시간": "17:23:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2260, + "역명": "중앙", + "시간": "18:48:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1283, + "역명": "중앙", + "시간": "20:18:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2308, + "역명": "중앙", + "시간": "21:45:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1325, + "역명": "중앙", + "시간": "23:22:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 36, + "열번": 2226, + "역명": "중앙", + "시간": "17:11:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1259, + "역명": "중앙", + "시간": "18:44:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 36, + "열번": 2284, + "역명": "중앙", + "시간": "20:08:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1303, + "역명": "중앙", + "시간": "21:38:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1127, + "역명": "중앙", + "시간": "12:31:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2154, + "역명": "중앙", + "시간": "13:55:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1191, + "역명": "중앙", + "시간": "15:27:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2218, + "역명": "중앙", + "시간": "16:51:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1253, + "역명": "중앙", + "시간": "18:23:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 37, + "열번": 2278, + "역명": "중앙", + "시간": "19:45:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 39, + "열번": 1149, + "역명": "중앙", + "시간": "13:32:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2176, + "역명": "중앙", + "시간": "14:55:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1213, + "역명": "중앙", + "시간": "16:28:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 39, + "열번": 2242, + "역명": "중앙", + "시간": "17:54:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 41, + "열번": 1175, + "역명": "중앙", + "시간": "14:43:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2202, + "역명": "중앙", + "시간": "16:07:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1239, + "역명": "중앙", + "시간": "17:39:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2266, + "역명": "중앙", + "시간": "19:06:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1289, + "역명": "중앙", + "시간": "20:42:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2312, + "역명": "중앙", + "시간": "22:05:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1327, + "역명": "중앙", + "시간": "23:34:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "남포", + "시간": "05:38:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "남포", + "시간": "07:15:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2050, + "역명": "남포", + "시간": "08:38:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "남포", + "시간": "05:23:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "남포", + "시간": "07:06:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "남포", + "시간": "08:28:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1077, + "역명": "남포", + "시간": "10:05:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2106, + "역명": "남포", + "시간": "11:24:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1137, + "역명": "남포", + "시간": "13:01:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2164, + "역명": "남포", + "시간": "14:20:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1201, + "역명": "남포", + "시간": "15:57:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2230, + "역명": "남포", + "시간": "17:19:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1261, + "역명": "남포", + "시간": "18:53:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2286, + "역명": "남포", + "시간": "20:14:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1305, + "역명": "남포", + "시간": "21:48:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 2, + "열번": 2324, + "역명": "남포", + "시간": "23:07:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "남포", + "시간": "05:52:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "남포", + "시간": "07:33:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2056, + "역명": "남포", + "시간": "08:54:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1085, + "역명": "남포", + "시간": "10:29:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2114, + "역명": "남포", + "시간": "11:48:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1145, + "역명": "남포", + "시간": "13:23:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2172, + "역명": "남포", + "시간": "14:42:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1209, + "역명": "남포", + "시간": "16:19:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2238, + "역명": "남포", + "시간": "17:40:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "남포", + "시간": "06:04:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1023, + "역명": "남포", + "시간": "07:40:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2058, + "역명": "남포", + "시간": "09:00:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1087, + "역명": "남포", + "시간": "10:35:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2116, + "역명": "남포", + "시간": "11:54:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1147, + "역명": "남포", + "시간": "13:28:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2174, + "역명": "남포", + "시간": "14:48:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1211, + "역명": "남포", + "시간": "16:24:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2240, + "역명": "남포", + "시간": "17:46:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1269, + "역명": "남포", + "시간": "19:24:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2294, + "역명": "남포", + "시간": "20:46:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1313, + "역명": "남포", + "시간": "22:22:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2330, + "역명": "남포", + "시간": "23:45:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 5, + "열번": 1001, + "역명": "남포", + "시간": "05:53:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2018, + "역명": "남포", + "시간": "07:12:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1051, + "역명": "남포", + "시간": "08:51:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2082, + "역명": "남포", + "시간": "10:12:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1111, + "역명": "남포", + "시간": "11:47:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2140, + "역명": "남포", + "시간": "13:06:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1173, + "역명": "남포", + "시간": "14:40:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2200, + "역명": "남포", + "시간": "15:59:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1237, + "역명": "남포", + "시간": "17:36:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2264, + "역명": "남포", + "시간": "18:58:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1287, + "역명": "남포", + "시간": "20:36:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2310, + "역명": "남포", + "시간": "21:53:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2008, + "역명": "남포", + "시간": "06:16:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1027, + "역명": "남포", + "시간": "07:51:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2062, + "역명": "남포", + "시간": "09:12:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1091, + "역명": "남포", + "시간": "10:47:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2120, + "역명": "남포", + "시간": "12:06:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1153, + "역명": "남포", + "시간": "13:45:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2180, + "역명": "남포", + "시간": "15:04:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1217, + "역명": "남포", + "시간": "16:41:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2246, + "역명": "남포", + "시간": "18:04:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1273, + "역명": "남포", + "시간": "19:40:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2298, + "역명": "남포", + "시간": "21:02:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1317, + "역명": "남포", + "시간": "22:42:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1003, + "역명": "남포", + "시간": "06:01:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2020, + "역명": "남포", + "시간": "07:21:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1053, + "역명": "남포", + "시간": "08:56:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2084, + "역명": "남포", + "시간": "10:18:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1113, + "역명": "남포", + "시간": "11:53:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2142, + "역명": "남포", + "시간": "13:12:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1177, + "역명": "남포", + "시간": "14:51:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2204, + "역명": "남포", + "시간": "16:10:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1241, + "역명": "남포", + "시간": "17:47:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2268, + "역명": "남포", + "시간": "19:10:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1291, + "역명": "남포", + "시간": "20:52:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2314, + "역명": "남포", + "시간": "22:13:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 7, + "열번": 1329, + "역명": "남포", + "시간": "23:48:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2010, + "역명": "남포", + "시간": "06:28:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1033, + "역명": "남포", + "시간": "08:06:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2066, + "역명": "남포", + "시간": "09:24:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1095, + "역명": "남포", + "시간": "10:59:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2124, + "역명": "남포", + "시간": "12:18:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1157, + "역명": "남포", + "시간": "13:56:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2184, + "역명": "남포", + "시간": "15:15:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1221, + "역명": "남포", + "시간": "16:52:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2248, + "역명": "남포", + "시간": "18:10:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1275, + "역명": "남포", + "시간": "19:48:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 8, + "열번": 2300, + "역명": "남포", + "시간": "21:10:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 9, + "열번": 2022, + "역명": "남포", + "시간": "07:27:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1055, + "역명": "남포", + "시간": "09:01:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2086, + "역명": "남포", + "시간": "10:24:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1115, + "역명": "남포", + "시간": "11:59:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2144, + "역명": "남포", + "시간": "13:18:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1179, + "역명": "남포", + "시간": "14:56:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2206, + "역명": "남포", + "시간": "16:16:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1243, + "역명": "남포", + "시간": "17:53:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 9, + "열번": 2270, + "역명": "남포", + "시간": "19:16:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2012, + "역명": "남포", + "시간": "06:40:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1039, + "역명": "남포", + "시간": "08:21:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2072, + "역명": "남포", + "시간": "09:42:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1101, + "역명": "남포", + "시간": "11:17:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2130, + "역명": "남포", + "시간": "12:36:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1163, + "역명": "남포", + "시간": "14:12:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2190, + "역명": "남포", + "시간": "15:32:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1227, + "역명": "남포", + "시간": "17:08:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2254, + "역명": "남포", + "시간": "18:28:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1279, + "역명": "남포", + "시간": "20:04:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2304, + "역명": "남포", + "시간": "21:26:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1321, + "역명": "남포", + "시간": "23:02:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 11, + "열번": 1005, + "역명": "남포", + "시간": "06:12:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2024, + "역명": "남포", + "시간": "07:33:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1057, + "역명": "남포", + "시간": "09:06:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2088, + "역명": "남포", + "시간": "10:30:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1117, + "역명": "남포", + "시간": "12:05:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2146, + "역명": "남포", + "시간": "13:24:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1181, + "역명": "남포", + "시간": "15:02:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2208, + "역명": "남포", + "시간": "16:21:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1245, + "역명": "남포", + "시간": "17:59:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2272, + "역명": "남포", + "시간": "19:22:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1293, + "역명": "남포", + "시간": "21:00:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2316, + "역명": "남포", + "시간": "22:23:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 11, + "열번": 1331, + "역명": "남포", + "시간": "00:00:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2014, + "역명": "남포", + "시간": "06:52:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1043, + "역명": "남포", + "시간": "08:31:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2074, + "역명": "남포", + "시간": "09:48:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1103, + "역명": "남포", + "시간": "11:23:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2132, + "역명": "남포", + "시간": "12:42:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1165, + "역명": "남포", + "시간": "14:18:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "남포", + "시간": "15:37:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1229, + "역명": "남포", + "시간": "17:14:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2256, + "역명": "남포", + "시간": "18:34:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1281, + "역명": "남포", + "시간": "20:12:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2306, + "역명": "남포", + "시간": "21:34:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1323, + "역명": "남포", + "시간": "23:13:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1009, + "역명": "남포", + "시간": "06:34:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2032, + "역명": "남포", + "시간": "07:53:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1065, + "역명": "남포", + "시간": "09:29:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2094, + "역명": "남포", + "시간": "10:48:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1123, + "역명": "남포", + "시간": "12:22:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2152, + "역명": "남포", + "시간": "13:42:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1187, + "역명": "남포", + "시간": "15:18:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 13, + "열번": 2214, + "역명": "남포", + "시간": "16:38:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2016, + "역명": "남포", + "시간": "07:03:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1049, + "역명": "남포", + "시간": "08:46:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2080, + "역명": "남포", + "시간": "10:06:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1109, + "역명": "남포", + "시간": "11:41:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2138, + "역명": "남포", + "시간": "13:00:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1171, + "역명": "남포", + "시간": "14:34:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2198, + "역명": "남포", + "시간": "15:54:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1235, + "역명": "남포", + "시간": "17:30:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2262, + "역명": "남포", + "시간": "18:52:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1285, + "역명": "남포", + "시간": "20:28:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1011, + "역명": "남포", + "시간": "06:45:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2036, + "역명": "남포", + "시간": "08:03:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1069, + "역명": "남포", + "시간": "09:41:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2098, + "역명": "남포", + "시간": "11:00:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1129, + "역명": "남포", + "시간": "12:39:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2156, + "역명": "남포", + "시간": "13:58:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1193, + "역명": "남포", + "시간": "15:35:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2220, + "역명": "남포", + "시간": "16:54:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1255, + "역명": "남포", + "시간": "18:32:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2280, + "역명": "남포", + "시간": "19:50:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1299, + "역명": "남포", + "시간": "21:24:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2320, + "역명": "남포", + "시간": "22:43:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2026, + "역명": "남포", + "시간": "07:38:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 16, + "열번": 1059, + "역명": "남포", + "시간": "09:11:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2038, + "역명": "남포", + "시간": "08:08:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 18, + "열번": 1007, + "역명": "남포", + "시간": "06:23:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2028, + "역명": "남포", + "시간": "07:43:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1061, + "역명": "남포", + "시간": "09:17:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2090, + "역명": "남포", + "시간": "10:36:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1119, + "역명": "남포", + "시간": "12:11:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2148, + "역명": "남포", + "시간": "13:30:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1183, + "역명": "남포", + "시간": "15:07:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2210, + "역명": "남포", + "시간": "16:27:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1247, + "역명": "남포", + "시간": "18:05:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2040, + "역명": "남포", + "시간": "08:13:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1071, + "역명": "남포", + "시간": "09:47:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2100, + "역명": "남포", + "시간": "11:06:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1131, + "역명": "남포", + "시간": "12:44:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2158, + "역명": "남포", + "시간": "14:04:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1195, + "역명": "남포", + "시간": "15:40:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2222, + "역명": "남포", + "시간": "16:59:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2030, + "역명": "남포", + "시간": "07:48:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1063, + "역명": "남포", + "시간": "09:23:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2092, + "역명": "남포", + "시간": "10:42:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1121, + "역명": "남포", + "시간": "12:17:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2150, + "역명": "남포", + "시간": "13:36:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1185, + "역명": "남포", + "시간": "15:13:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2212, + "역명": "남포", + "시간": "16:32:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1249, + "역명": "남포", + "시간": "18:11:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2274, + "역명": "남포", + "시간": "19:29:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1295, + "역명": "남포", + "시간": "21:08:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2318, + "역명": "남포", + "시간": "22:33:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 20, + "열번": 7931, + "역명": "남포", + "시간": "00:16:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 21, + "열번": 1013, + "역명": "남포", + "시간": "06:56:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2042, + "역명": "남포", + "시간": "08:18:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1073, + "역명": "남포", + "시간": "09:53:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2102, + "역명": "남포", + "시간": "11:12:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1133, + "역명": "남포", + "시간": "12:50:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2160, + "역명": "남포", + "시간": "14:09:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1197, + "역명": "남포", + "시간": "15:46:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2224, + "역명": "남포", + "시간": "17:04:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1257, + "역명": "남포", + "시간": "18:39:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2282, + "역명": "남포", + "시간": "19:58:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1301, + "역명": "남포", + "시간": "21:32:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2322, + "역명": "남포", + "시간": "22:55:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2034, + "역명": "남포", + "시간": "07:58:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1067, + "역명": "남포", + "시간": "09:35:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2096, + "역명": "남포", + "시간": "10:54:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1125, + "역명": "남포", + "시간": "12:28:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2044, + "역명": "남포", + "시간": "08:23:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1075, + "역명": "남포", + "시간": "09:59:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2104, + "역명": "남포", + "시간": "11:18:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1135, + "역명": "남포", + "시간": "12:55:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2162, + "역명": "남포", + "시간": "14:15:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1199, + "역명": "남포", + "시간": "15:51:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2228, + "역명": "남포", + "시간": "17:14:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "남포", + "시간": "08:33:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1079, + "역명": "남포", + "시간": "10:11:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2108, + "역명": "남포", + "시간": "11:30:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1139, + "역명": "남포", + "시간": "13:06:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2166, + "역명": "남포", + "시간": "14:26:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1203, + "역명": "남포", + "시간": "16:02:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2232, + "역명": "남포", + "시간": "17:24:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1263, + "역명": "남포", + "시간": "19:00:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2288, + "역명": "남포", + "시간": "20:22:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1307, + "역명": "남포", + "시간": "21:56:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 24, + "열번": 2326, + "역명": "남포", + "시간": "23:19:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "남포", + "시간": "07:24:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2054, + "역명": "남포", + "시간": "08:48:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1083, + "역명": "남포", + "시간": "10:23:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2112, + "역명": "남포", + "시간": "11:42:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1143, + "역명": "남포", + "시간": "13:17:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2170, + "역명": "남포", + "시간": "14:37:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1207, + "역명": "남포", + "시간": "16:13:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2236, + "역명": "남포", + "시간": "17:34:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1267, + "역명": "남포", + "시간": "19:16:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2292, + "역명": "남포", + "시간": "20:38:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1311, + "역명": "남포", + "시간": "22:12:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2328, + "역명": "남포", + "시간": "23:30:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2052, + "역명": "남포", + "시간": "08:43:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1081, + "역명": "남포", + "시간": "10:17:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2110, + "역명": "남포", + "시간": "11:36:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1141, + "역명": "남포", + "시간": "13:12:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2168, + "역명": "남포", + "시간": "14:31:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1205, + "역명": "남포", + "시간": "16:08:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2234, + "역명": "남포", + "시간": "17:29:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1265, + "역명": "남포", + "시간": "19:08:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2290, + "역명": "남포", + "시간": "20:30:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1309, + "역명": "남포", + "시간": "22:04:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1025, + "역명": "남포", + "시간": "07:46:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2060, + "역명": "남포", + "시간": "09:06:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1089, + "역명": "남포", + "시간": "10:41:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2118, + "역명": "남포", + "시간": "12:00:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1151, + "역명": "남포", + "시간": "13:39:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2178, + "역명": "남포", + "시간": "14:59:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1215, + "역명": "남포", + "시간": "16:35:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2244, + "역명": "남포", + "시간": "17:58:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1271, + "역명": "남포", + "시간": "19:32:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2296, + "역명": "남포", + "시간": "20:54:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 27, + "열번": 1315, + "역명": "남포", + "시간": "22:32:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 28, + "열번": 1029, + "역명": "남포", + "시간": "07:56:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2064, + "역명": "남포", + "시간": "09:18:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1093, + "역명": "남포", + "시간": "10:53:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2122, + "역명": "남포", + "시간": "12:12:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1155, + "역명": "남포", + "시간": "13:50:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2182, + "역명": "남포", + "시간": "15:10:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1219, + "역명": "남포", + "시간": "16:46:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1035, + "역명": "남포", + "시간": "08:11:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2068, + "역명": "남포", + "시간": "09:30:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1097, + "역명": "남포", + "시간": "11:05:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2126, + "역명": "남포", + "시간": "12:24:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1159, + "역명": "남포", + "시간": "14:01:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2186, + "역명": "남포", + "시간": "15:21:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1223, + "역명": "남포", + "시간": "16:57:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 29, + "열번": 2250, + "역명": "남포", + "시간": "18:16:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1031, + "역명": "남포", + "시간": "08:01:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1037, + "역명": "남포", + "시간": "08:16:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2070, + "역명": "남포", + "시간": "09:36:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1099, + "역명": "남포", + "시간": "11:11:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2128, + "역명": "남포", + "시간": "12:30:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1161, + "역명": "남포", + "시간": "14:07:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2188, + "역명": "남포", + "시간": "15:26:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1225, + "역명": "남포", + "시간": "17:03:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2252, + "역명": "남포", + "시간": "18:22:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1277, + "역명": "남포", + "시간": "19:56:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2302, + "역명": "남포", + "시간": "21:18:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1319, + "역명": "남포", + "시간": "22:52:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 32, + "열번": 1041, + "역명": "남포", + "시간": "08:26:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1045, + "역명": "남포", + "시간": "08:36:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2076, + "역명": "남포", + "시간": "09:54:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1105, + "역명": "남포", + "시간": "11:29:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2134, + "역명": "남포", + "시간": "12:48:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1167, + "역명": "남포", + "시간": "14:23:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2194, + "역명": "남포", + "시간": "15:43:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1231, + "역명": "남포", + "시간": "17:19:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 33, + "열번": 2258, + "역명": "남포", + "시간": "18:40:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 34, + "열번": 8904, + "역명": "남포", + "시간": "13:47:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1189, + "역명": "남포", + "시간": "15:24:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 34, + "열번": 2216, + "역명": "남포", + "시간": "16:43:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1251, + "역명": "남포", + "시간": "18:18:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 34, + "열번": 2276, + "역명": "남포", + "시간": "19:36:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1297, + "역명": "남포", + "시간": "21:16:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1047, + "역명": "남포", + "시간": "08:41:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2078, + "역명": "남포", + "시간": "10:00:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1107, + "역명": "남포", + "시간": "11:35:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2136, + "역명": "남포", + "시간": "12:54:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1169, + "역명": "남포", + "시간": "14:29:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2196, + "역명": "남포", + "시간": "15:48:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1233, + "역명": "남포", + "시간": "17:25:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2260, + "역명": "남포", + "시간": "18:46:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1283, + "역명": "남포", + "시간": "20:20:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2308, + "역명": "남포", + "시간": "21:43:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1325, + "역명": "남포", + "시간": "23:24:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 36, + "열번": 2226, + "역명": "남포", + "시간": "17:09:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1259, + "역명": "남포", + "시간": "18:46:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 36, + "열번": 2284, + "역명": "남포", + "시간": "20:06:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1303, + "역명": "남포", + "시간": "21:40:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1127, + "역명": "남포", + "시간": "12:33:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2154, + "역명": "남포", + "시간": "13:53:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1191, + "역명": "남포", + "시간": "15:29:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2218, + "역명": "남포", + "시간": "16:49:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1253, + "역명": "남포", + "시간": "18:25:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 37, + "열번": 2278, + "역명": "남포", + "시간": "19:43:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 39, + "열번": 1149, + "역명": "남포", + "시간": "13:34:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2176, + "역명": "남포", + "시간": "14:53:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1213, + "역명": "남포", + "시간": "16:30:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 39, + "열번": 2242, + "역명": "남포", + "시간": "17:52:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 41, + "열번": 1175, + "역명": "남포", + "시간": "14:45:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2202, + "역명": "남포", + "시간": "16:05:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1239, + "역명": "남포", + "시간": "17:41:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2266, + "역명": "남포", + "시간": "19:04:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1289, + "역명": "남포", + "시간": "20:44:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2312, + "역명": "남포", + "시간": "22:03:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1327, + "역명": "남포", + "시간": "23:36:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "자갈치", + "시간": "05:37:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "자갈치", + "시간": "07:16:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2050, + "역명": "자갈치", + "시간": "08:36:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "자갈치", + "시간": "05:21:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "자갈치", + "시간": "07:07:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "자갈치", + "시간": "08:26:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1077, + "역명": "자갈치", + "시간": "10:07:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2106, + "역명": "자갈치", + "시간": "11:22:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1137, + "역명": "자갈치", + "시간": "13:02:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2164, + "역명": "자갈치", + "시간": "14:19:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1201, + "역명": "자갈치", + "시간": "15:58:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2230, + "역명": "자갈치", + "시간": "17:17:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1261, + "역명": "자갈치", + "시간": "18:55:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2286, + "역명": "자갈치", + "시간": "20:12:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1305, + "역명": "자갈치", + "시간": "21:50:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 2, + "열번": 2324, + "역명": "자갈치", + "시간": "23:05:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "자갈치", + "시간": "05:50:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "자갈치", + "시간": "07:34:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2056, + "역명": "자갈치", + "시간": "08:52:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1085, + "역명": "자갈치", + "시간": "10:31:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2114, + "역명": "자갈치", + "시간": "11:46:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1145, + "역명": "자갈치", + "시간": "13:24:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2172, + "역명": "자갈치", + "시간": "14:41:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1209, + "역명": "자갈치", + "시간": "16:20:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2238, + "역명": "자갈치", + "시간": "17:38:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "자갈치", + "시간": "06:03:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1023, + "역명": "자갈치", + "시간": "07:41:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2058, + "역명": "자갈치", + "시간": "08:58:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1087, + "역명": "자갈치", + "시간": "10:37:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2116, + "역명": "자갈치", + "시간": "11:52:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1147, + "역명": "자갈치", + "시간": "13:30:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2174, + "역명": "자갈치", + "시간": "14:46:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1211, + "역명": "자갈치", + "시간": "16:26:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2240, + "역명": "자갈치", + "시간": "17:44:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1269, + "역명": "자갈치", + "시간": "19:26:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2294, + "역명": "자갈치", + "시간": "20:44:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1313, + "역명": "자갈치", + "시간": "22:24:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2330, + "역명": "자갈치", + "시간": "23:43:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 5, + "열번": 1001, + "역명": "자갈치", + "시간": "05:54:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2018, + "역명": "자갈치", + "시간": "07:11:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1051, + "역명": "자갈치", + "시간": "08:53:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2082, + "역명": "자갈치", + "시간": "10:10:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1111, + "역명": "자갈치", + "시간": "11:49:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2140, + "역명": "자갈치", + "시간": "13:04:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1173, + "역명": "자갈치", + "시간": "14:41:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2200, + "역명": "자갈치", + "시간": "15:58:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1237, + "역명": "자갈치", + "시간": "17:37:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2264, + "역명": "자갈치", + "시간": "18:56:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1287, + "역명": "자갈치", + "시간": "20:38:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2310, + "역명": "자갈치", + "시간": "21:51:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2008, + "역명": "자갈치", + "시간": "06:15:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1027, + "역명": "자갈치", + "시간": "07:53:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2062, + "역명": "자갈치", + "시간": "09:10:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1091, + "역명": "자갈치", + "시간": "10:49:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2120, + "역명": "자갈치", + "시간": "12:04:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1153, + "역명": "자갈치", + "시간": "13:46:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2180, + "역명": "자갈치", + "시간": "15:03:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1217, + "역명": "자갈치", + "시간": "16:42:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2246, + "역명": "자갈치", + "시간": "18:02:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1273, + "역명": "자갈치", + "시간": "19:42:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2298, + "역명": "자갈치", + "시간": "21:00:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1317, + "역명": "자갈치", + "시간": "22:44:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1003, + "역명": "자갈치", + "시간": "06:02:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2020, + "역명": "자갈치", + "시간": "07:19:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1053, + "역명": "자갈치", + "시간": "08:58:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2084, + "역명": "자갈치", + "시간": "10:16:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1113, + "역명": "자갈치", + "시간": "11:55:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2142, + "역명": "자갈치", + "시간": "13:10:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1177, + "역명": "자갈치", + "시간": "14:52:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2204, + "역명": "자갈치", + "시간": "16:09:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1241, + "역명": "자갈치", + "시간": "17:49:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2268, + "역명": "자갈치", + "시간": "19:08:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1291, + "역명": "자갈치", + "시간": "20:54:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2314, + "역명": "자갈치", + "시간": "22:11:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 7, + "열번": 1329, + "역명": "자갈치", + "시간": "23:50:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2010, + "역명": "자갈치", + "시간": "06:27:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1033, + "역명": "자갈치", + "시간": "08:08:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2066, + "역명": "자갈치", + "시간": "09:22:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1095, + "역명": "자갈치", + "시간": "11:01:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2124, + "역명": "자갈치", + "시간": "12:16:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1157, + "역명": "자갈치", + "시간": "13:57:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2184, + "역명": "자갈치", + "시간": "15:14:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1221, + "역명": "자갈치", + "시간": "16:53:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2248, + "역명": "자갈치", + "시간": "18:08:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1275, + "역명": "자갈치", + "시간": "19:50:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 8, + "열번": 2300, + "역명": "자갈치", + "시간": "21:08:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 9, + "열번": 2022, + "역명": "자갈치", + "시간": "07:25:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1055, + "역명": "자갈치", + "시간": "09:03:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2086, + "역명": "자갈치", + "시간": "10:22:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1115, + "역명": "자갈치", + "시간": "12:01:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2144, + "역명": "자갈치", + "시간": "13:16:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1179, + "역명": "자갈치", + "시간": "14:58:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2206, + "역명": "자갈치", + "시간": "16:14:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1243, + "역명": "자갈치", + "시간": "17:55:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 9, + "열번": 2270, + "역명": "자갈치", + "시간": "19:14:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2012, + "역명": "자갈치", + "시간": "06:39:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1039, + "역명": "자갈치", + "시간": "08:23:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2072, + "역명": "자갈치", + "시간": "09:40:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1101, + "역명": "자갈치", + "시간": "11:19:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2130, + "역명": "자갈치", + "시간": "12:34:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1163, + "역명": "자갈치", + "시간": "14:14:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2190, + "역명": "자갈치", + "시간": "15:30:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1227, + "역명": "자갈치", + "시간": "17:10:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2254, + "역명": "자갈치", + "시간": "18:26:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1279, + "역명": "자갈치", + "시간": "20:06:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2304, + "역명": "자갈치", + "시간": "21:24:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1321, + "역명": "자갈치", + "시간": "23:04:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 11, + "열번": 1005, + "역명": "자갈치", + "시간": "06:13:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2024, + "역명": "자갈치", + "시간": "07:31:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1057, + "역명": "자갈치", + "시간": "09:08:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2088, + "역명": "자갈치", + "시간": "10:28:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1117, + "역명": "자갈치", + "시간": "12:07:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2146, + "역명": "자갈치", + "시간": "13:22:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1181, + "역명": "자갈치", + "시간": "15:03:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2208, + "역명": "자갈치", + "시간": "16:20:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1245, + "역명": "자갈치", + "시간": "18:01:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2272, + "역명": "자갈치", + "시간": "19:20:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1293, + "역명": "자갈치", + "시간": "21:02:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2316, + "역명": "자갈치", + "시간": "22:21:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 11, + "열번": 1331, + "역명": "자갈치", + "시간": "00:01:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2014, + "역명": "자갈치", + "시간": "06:51:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1043, + "역명": "자갈치", + "시간": "08:33:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2074, + "역명": "자갈치", + "시간": "09:46:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1103, + "역명": "자갈치", + "시간": "11:25:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2132, + "역명": "자갈치", + "시간": "12:40:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1165, + "역명": "자갈치", + "시간": "14:19:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "자갈치", + "시간": "15:36:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1229, + "역명": "자갈치", + "시간": "17:15:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2256, + "역명": "자갈치", + "시간": "18:32:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1281, + "역명": "자갈치", + "시간": "20:14:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2306, + "역명": "자갈치", + "시간": "21:32:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1323, + "역명": "자갈치", + "시간": "23:15:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1009, + "역명": "자갈치", + "시간": "06:35:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2032, + "역명": "자갈치", + "시간": "07:51:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1065, + "역명": "자갈치", + "시간": "09:31:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2094, + "역명": "자갈치", + "시간": "10:46:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1123, + "역명": "자갈치", + "시간": "12:24:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2152, + "역명": "자갈치", + "시간": "13:40:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1187, + "역명": "자갈치", + "시간": "15:20:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 13, + "열번": 2214, + "역명": "자갈치", + "시간": "16:36:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2016, + "역명": "자갈치", + "시간": "07:02:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1049, + "역명": "자갈치", + "시간": "08:48:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2080, + "역명": "자갈치", + "시간": "10:04:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1109, + "역명": "자갈치", + "시간": "11:43:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2138, + "역명": "자갈치", + "시간": "12:58:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1171, + "역명": "자갈치", + "시간": "14:36:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2198, + "역명": "자갈치", + "시간": "15:52:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1235, + "역명": "자갈치", + "시간": "17:32:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2262, + "역명": "자갈치", + "시간": "18:50:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1285, + "역명": "자갈치", + "시간": "20:30:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1011, + "역명": "자갈치", + "시간": "06:46:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2036, + "역명": "자갈치", + "시간": "08:01:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1069, + "역명": "자갈치", + "시간": "09:43:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2098, + "역명": "자갈치", + "시간": "10:58:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1129, + "역명": "자갈치", + "시간": "12:40:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2156, + "역명": "자갈치", + "시간": "13:57:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1193, + "역명": "자갈치", + "시간": "15:36:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2220, + "역명": "자갈치", + "시간": "16:52:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1255, + "역명": "자갈치", + "시간": "18:34:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2280, + "역명": "자갈치", + "시간": "19:48:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1299, + "역명": "자갈치", + "시간": "21:26:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2320, + "역명": "자갈치", + "시간": "22:41:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2026, + "역명": "자갈치", + "시간": "07:36:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 16, + "열번": 1059, + "역명": "자갈치", + "시간": "09:13:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2038, + "역명": "자갈치", + "시간": "08:06:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 18, + "열번": 1007, + "역명": "자갈치", + "시간": "06:24:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2028, + "역명": "자갈치", + "시간": "07:41:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1061, + "역명": "자갈치", + "시간": "09:19:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2090, + "역명": "자갈치", + "시간": "10:34:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1119, + "역명": "자갈치", + "시간": "12:13:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2148, + "역명": "자갈치", + "시간": "13:28:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1183, + "역명": "자갈치", + "시간": "15:09:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2210, + "역명": "자갈치", + "시간": "16:25:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1247, + "역명": "자갈치", + "시간": "18:07:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2040, + "역명": "자갈치", + "시간": "08:11:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1071, + "역명": "자갈치", + "시간": "09:49:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2100, + "역명": "자갈치", + "시간": "11:04:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1131, + "역명": "자갈치", + "시간": "12:46:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2158, + "역명": "자갈치", + "시간": "14:02:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1195, + "역명": "자갈치", + "시간": "15:42:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2222, + "역명": "자갈치", + "시간": "16:57:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2030, + "역명": "자갈치", + "시간": "07:46:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1063, + "역명": "자갈치", + "시간": "09:25:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2092, + "역명": "자갈치", + "시간": "10:40:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1121, + "역명": "자갈치", + "시간": "12:18:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2150, + "역명": "자갈치", + "시간": "13:34:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1185, + "역명": "자갈치", + "시간": "15:14:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2212, + "역명": "자갈치", + "시간": "16:31:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1249, + "역명": "자갈치", + "시간": "18:13:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2274, + "역명": "자갈치", + "시간": "19:27:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1295, + "역명": "자갈치", + "시간": "21:10:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2318, + "역명": "자갈치", + "시간": "22:31:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 20, + "열번": 7931, + "역명": "자갈치", + "시간": "00:17:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 21, + "열번": 1013, + "역명": "자갈치", + "시간": "06:57:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2042, + "역명": "자갈치", + "시간": "08:16:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1073, + "역명": "자갈치", + "시간": "09:55:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2102, + "역명": "자갈치", + "시간": "11:10:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1133, + "역명": "자갈치", + "시간": "12:51:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2160, + "역명": "자갈치", + "시간": "14:08:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1197, + "역명": "자갈치", + "시간": "15:47:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2224, + "역명": "자갈치", + "시간": "17:02:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1257, + "역명": "자갈치", + "시간": "18:41:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2282, + "역명": "자갈치", + "시간": "19:56:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1301, + "역명": "자갈치", + "시간": "21:34:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2322, + "역명": "자갈치", + "시간": "22:53:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2034, + "역명": "자갈치", + "시간": "07:56:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1067, + "역명": "자갈치", + "시간": "09:37:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2096, + "역명": "자갈치", + "시간": "10:52:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1125, + "역명": "자갈치", + "시간": "12:29:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2044, + "역명": "자갈치", + "시간": "08:21:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1075, + "역명": "자갈치", + "시간": "10:01:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2104, + "역명": "자갈치", + "시간": "11:16:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1135, + "역명": "자갈치", + "시간": "12:57:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2162, + "역명": "자갈치", + "시간": "14:13:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1199, + "역명": "자갈치", + "시간": "15:53:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2228, + "역명": "자갈치", + "시간": "17:12:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "자갈치", + "시간": "08:31:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1079, + "역명": "자갈치", + "시간": "10:13:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2108, + "역명": "자갈치", + "시간": "11:28:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1139, + "역명": "자갈치", + "시간": "13:08:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2166, + "역명": "자갈치", + "시간": "14:24:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1203, + "역명": "자갈치", + "시간": "16:04:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2232, + "역명": "자갈치", + "시간": "17:22:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1263, + "역명": "자갈치", + "시간": "19:02:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2288, + "역명": "자갈치", + "시간": "20:20:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1307, + "역명": "자갈치", + "시간": "21:58:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 24, + "열번": 2326, + "역명": "자갈치", + "시간": "23:17:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "자갈치", + "시간": "07:25:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2054, + "역명": "자갈치", + "시간": "08:46:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1083, + "역명": "자갈치", + "시간": "10:25:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2112, + "역명": "자갈치", + "시간": "11:40:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1143, + "역명": "자갈치", + "시간": "13:19:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2170, + "역명": "자갈치", + "시간": "14:35:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1207, + "역명": "자갈치", + "시간": "16:15:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2236, + "역명": "자갈치", + "시간": "17:32:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1267, + "역명": "자갈치", + "시간": "19:18:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2292, + "역명": "자갈치", + "시간": "20:36:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1311, + "역명": "자갈치", + "시간": "22:14:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2328, + "역명": "자갈치", + "시간": "23:28:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2052, + "역명": "자갈치", + "시간": "08:41:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1081, + "역명": "자갈치", + "시간": "10:19:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2110, + "역명": "자갈치", + "시간": "11:34:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1141, + "역명": "자갈치", + "시간": "13:13:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2168, + "역명": "자갈치", + "시간": "14:30:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1205, + "역명": "자갈치", + "시간": "16:09:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2234, + "역명": "자갈치", + "시간": "17:27:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1265, + "역명": "자갈치", + "시간": "19:10:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2290, + "역명": "자갈치", + "시간": "20:28:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1309, + "역명": "자갈치", + "시간": "22:06:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1025, + "역명": "자갈치", + "시간": "07:48:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2060, + "역명": "자갈치", + "시간": "09:04:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1089, + "역명": "자갈치", + "시간": "10:43:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2118, + "역명": "자갈치", + "시간": "11:58:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1151, + "역명": "자갈치", + "시간": "13:41:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2178, + "역명": "자갈치", + "시간": "14:57:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1215, + "역명": "자갈치", + "시간": "16:37:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2244, + "역명": "자갈치", + "시간": "17:56:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1271, + "역명": "자갈치", + "시간": "19:34:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2296, + "역명": "자갈치", + "시간": "20:52:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 27, + "열번": 1315, + "역명": "자갈치", + "시간": "22:34:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 28, + "열번": 1029, + "역명": "자갈치", + "시간": "07:58:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2064, + "역명": "자갈치", + "시간": "09:16:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1093, + "역명": "자갈치", + "시간": "10:55:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2122, + "역명": "자갈치", + "시간": "12:10:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1155, + "역명": "자갈치", + "시간": "13:52:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2182, + "역명": "자갈치", + "시간": "15:08:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1219, + "역명": "자갈치", + "시간": "16:48:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1035, + "역명": "자갈치", + "시간": "08:13:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2068, + "역명": "자갈치", + "시간": "09:28:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1097, + "역명": "자갈치", + "시간": "11:07:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2126, + "역명": "자갈치", + "시간": "12:22:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1159, + "역명": "자갈치", + "시간": "14:03:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2186, + "역명": "자갈치", + "시간": "15:19:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1223, + "역명": "자갈치", + "시간": "16:59:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 29, + "열번": 2250, + "역명": "자갈치", + "시간": "18:14:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1031, + "역명": "자갈치", + "시간": "08:03:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1037, + "역명": "자갈치", + "시간": "08:18:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2070, + "역명": "자갈치", + "시간": "09:34:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1099, + "역명": "자갈치", + "시간": "11:13:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2128, + "역명": "자갈치", + "시간": "12:28:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1161, + "역명": "자갈치", + "시간": "14:08:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2188, + "역명": "자갈치", + "시간": "15:25:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1225, + "역명": "자갈치", + "시간": "17:04:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2252, + "역명": "자갈치", + "시간": "18:20:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1277, + "역명": "자갈치", + "시간": "19:58:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2302, + "역명": "자갈치", + "시간": "21:16:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1319, + "역명": "자갈치", + "시간": "22:54:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 32, + "열번": 1041, + "역명": "자갈치", + "시간": "08:28:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1045, + "역명": "자갈치", + "시간": "08:38:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2076, + "역명": "자갈치", + "시간": "09:52:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1105, + "역명": "자갈치", + "시간": "11:31:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2134, + "역명": "자갈치", + "시간": "12:46:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1167, + "역명": "자갈치", + "시간": "14:25:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2194, + "역명": "자갈치", + "시간": "15:41:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1231, + "역명": "자갈치", + "시간": "17:21:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 33, + "열번": 2258, + "역명": "자갈치", + "시간": "18:38:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 34, + "열번": 8904, + "역명": "자갈치", + "시간": "13:46:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1189, + "역명": "자갈치", + "시간": "15:25:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 34, + "열번": 2216, + "역명": "자갈치", + "시간": "16:42:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1251, + "역명": "자갈치", + "시간": "18:20:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 34, + "열번": 2276, + "역명": "자갈치", + "시간": "19:34:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1297, + "역명": "자갈치", + "시간": "21:18:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1047, + "역명": "자갈치", + "시간": "08:43:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2078, + "역명": "자갈치", + "시간": "09:58:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1107, + "역명": "자갈치", + "시간": "11:37:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2136, + "역명": "자갈치", + "시간": "12:52:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1169, + "역명": "자갈치", + "시간": "14:30:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2196, + "역명": "자갈치", + "시간": "15:47:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1233, + "역명": "자갈치", + "시간": "17:26:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2260, + "역명": "자갈치", + "시간": "18:44:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1283, + "역명": "자갈치", + "시간": "20:22:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2308, + "역명": "자갈치", + "시간": "21:41:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1325, + "역명": "자갈치", + "시간": "23:26:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 36, + "열번": 2226, + "역명": "자갈치", + "시간": "17:07:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1259, + "역명": "자갈치", + "시간": "18:48:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 36, + "열번": 2284, + "역명": "자갈치", + "시간": "20:04:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1303, + "역명": "자갈치", + "시간": "21:42:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1127, + "역명": "자갈치", + "시간": "12:35:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2154, + "역명": "자갈치", + "시간": "13:51:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1191, + "역명": "자갈치", + "시간": "15:31:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2218, + "역명": "자갈치", + "시간": "16:47:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1253, + "역명": "자갈치", + "시간": "18:27:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 37, + "열번": 2278, + "역명": "자갈치", + "시간": "19:41:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 39, + "열번": 1149, + "역명": "자갈치", + "시간": "13:35:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2176, + "역명": "자갈치", + "시간": "14:52:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1213, + "역명": "자갈치", + "시간": "16:31:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 39, + "열번": 2242, + "역명": "자갈치", + "시간": "17:50:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 41, + "열번": 1175, + "역명": "자갈치", + "시간": "14:47:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2202, + "역명": "자갈치", + "시간": "16:03:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1239, + "역명": "자갈치", + "시간": "17:43:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2266, + "역명": "자갈치", + "시간": "19:02:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1289, + "역명": "자갈치", + "시간": "20:46:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2312, + "역명": "자갈치", + "시간": "22:01:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1327, + "역명": "자갈치", + "시간": "23:38:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "토성", + "시간": "05:34:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "토성", + "시간": "07:19:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2050, + "역명": "토성", + "시간": "08:34:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "토성", + "시간": "05:19:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "토성", + "시간": "07:10:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "토성", + "시간": "08:24:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1077, + "역명": "토성", + "시간": "10:09:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2106, + "역명": "토성", + "시간": "11:20:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1137, + "역명": "토성", + "시간": "13:05:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2164, + "역명": "토성", + "시간": "14:16:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1201, + "역명": "토성", + "시간": "16:01:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2230, + "역명": "토성", + "시간": "17:15:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1261, + "역명": "토성", + "시간": "18:57:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2286, + "역명": "토성", + "시간": "20:10:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1305, + "역명": "토성", + "시간": "21:52:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 2, + "열번": 2324, + "역명": "토성", + "시간": "23:03:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "토성", + "시간": "05:48:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "토성", + "시간": "07:37:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2056, + "역명": "토성", + "시간": "08:50:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1085, + "역명": "토성", + "시간": "10:33:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2114, + "역명": "토성", + "시간": "11:44:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1145, + "역명": "토성", + "시간": "13:27:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2172, + "역명": "토성", + "시간": "14:38:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1209, + "역명": "토성", + "시간": "16:23:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2238, + "역명": "토성", + "시간": "17:36:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "토성", + "시간": "06:00:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1023, + "역명": "토성", + "시간": "07:44:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2058, + "역명": "토성", + "시간": "08:56:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1087, + "역명": "토성", + "시간": "10:39:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2116, + "역명": "토성", + "시간": "11:50:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1147, + "역명": "토성", + "시간": "13:32:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2174, + "역명": "토성", + "시간": "14:44:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1211, + "역명": "토성", + "시간": "16:28:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2240, + "역명": "토성", + "시간": "17:42:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1269, + "역명": "토성", + "시간": "19:28:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2294, + "역명": "토성", + "시간": "20:42:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1313, + "역명": "토성", + "시간": "22:26:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2330, + "역명": "토성", + "시간": "23:41:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 5, + "열번": 1001, + "역명": "토성", + "시간": "05:57:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2018, + "역명": "토성", + "시간": "07:08:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1051, + "역명": "토성", + "시간": "08:55:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2082, + "역명": "토성", + "시간": "10:08:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1111, + "역명": "토성", + "시간": "11:51:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2140, + "역명": "토성", + "시간": "13:02:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1173, + "역명": "토성", + "시간": "14:44:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2200, + "역명": "토성", + "시간": "15:55:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1237, + "역명": "토성", + "시간": "17:40:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2264, + "역명": "토성", + "시간": "18:54:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1287, + "역명": "토성", + "시간": "20:40:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2310, + "역명": "토성", + "시간": "21:49:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2008, + "역명": "토성", + "시간": "06:12:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1027, + "역명": "토성", + "시간": "07:55:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2062, + "역명": "토성", + "시간": "09:08:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1091, + "역명": "토성", + "시간": "10:51:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2120, + "역명": "토성", + "시간": "12:02:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1153, + "역명": "토성", + "시간": "13:49:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2180, + "역명": "토성", + "시간": "15:00:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1217, + "역명": "토성", + "시간": "16:45:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2246, + "역명": "토성", + "시간": "18:00:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1273, + "역명": "토성", + "시간": "19:44:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2298, + "역명": "토성", + "시간": "20:58:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1317, + "역명": "토성", + "시간": "22:46:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1003, + "역명": "토성", + "시간": "06:05:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2020, + "역명": "토성", + "시간": "07:17:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1053, + "역명": "토성", + "시간": "09:00:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2084, + "역명": "토성", + "시간": "10:14:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1113, + "역명": "토성", + "시간": "11:57:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2142, + "역명": "토성", + "시간": "13:08:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1177, + "역명": "토성", + "시간": "14:55:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2204, + "역명": "토성", + "시간": "16:06:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1241, + "역명": "토성", + "시간": "17:51:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2268, + "역명": "토성", + "시간": "19:06:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1291, + "역명": "토성", + "시간": "20:56:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2314, + "역명": "토성", + "시간": "22:09:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 7, + "열번": 1329, + "역명": "토성", + "시간": "23:52:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2010, + "역명": "토성", + "시간": "06:24:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1033, + "역명": "토성", + "시간": "08:10:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2066, + "역명": "토성", + "시간": "09:20:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1095, + "역명": "토성", + "시간": "11:03:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2124, + "역명": "토성", + "시간": "12:14:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1157, + "역명": "토성", + "시간": "14:00:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2184, + "역명": "토성", + "시간": "15:11:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1221, + "역명": "토성", + "시간": "16:56:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2248, + "역명": "토성", + "시간": "18:06:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1275, + "역명": "토성", + "시간": "19:52:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 8, + "열번": 2300, + "역명": "토성", + "시간": "21:06:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 9, + "열번": 2022, + "역명": "토성", + "시간": "07:23:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1055, + "역명": "토성", + "시간": "09:05:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2086, + "역명": "토성", + "시간": "10:20:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1115, + "역명": "토성", + "시간": "12:03:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2144, + "역명": "토성", + "시간": "13:14:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1179, + "역명": "토성", + "시간": "15:00:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2206, + "역명": "토성", + "시간": "16:12:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1243, + "역명": "토성", + "시간": "17:57:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 9, + "열번": 2270, + "역명": "토성", + "시간": "19:12:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2012, + "역명": "토성", + "시간": "06:36:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1039, + "역명": "토성", + "시간": "08:25:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2072, + "역명": "토성", + "시간": "09:38:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1101, + "역명": "토성", + "시간": "11:21:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2130, + "역명": "토성", + "시간": "12:32:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1163, + "역명": "토성", + "시간": "14:16:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2190, + "역명": "토성", + "시간": "15:28:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1227, + "역명": "토성", + "시간": "17:12:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2254, + "역명": "토성", + "시간": "18:24:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1279, + "역명": "토성", + "시간": "20:08:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2304, + "역명": "토성", + "시간": "21:22:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1321, + "역명": "토성", + "시간": "23:06:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 11, + "열번": 1005, + "역명": "토성", + "시간": "06:16:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2024, + "역명": "토성", + "시간": "07:29:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1057, + "역명": "토성", + "시간": "09:10:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2088, + "역명": "토성", + "시간": "10:26:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1117, + "역명": "토성", + "시간": "12:09:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2146, + "역명": "토성", + "시간": "13:20:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1181, + "역명": "토성", + "시간": "15:06:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2208, + "역명": "토성", + "시간": "16:17:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1245, + "역명": "토성", + "시간": "18:03:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2272, + "역명": "토성", + "시간": "19:18:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1293, + "역명": "토성", + "시간": "21:04:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2316, + "역명": "토성", + "시간": "22:19:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 11, + "열번": 1331, + "역명": "토성", + "시간": "00:04:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2014, + "역명": "토성", + "시간": "06:48:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1043, + "역명": "토성", + "시간": "08:35:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2074, + "역명": "토성", + "시간": "09:44:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1103, + "역명": "토성", + "시간": "11:27:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2132, + "역명": "토성", + "시간": "12:38:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1165, + "역명": "토성", + "시간": "14:22:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "토성", + "시간": "15:33:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1229, + "역명": "토성", + "시간": "17:18:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2256, + "역명": "토성", + "시간": "18:30:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1281, + "역명": "토성", + "시간": "20:16:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2306, + "역명": "토성", + "시간": "21:30:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1323, + "역명": "토성", + "시간": "23:17:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1009, + "역명": "토성", + "시간": "06:38:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2032, + "역명": "토성", + "시간": "07:49:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1065, + "역명": "토성", + "시간": "09:33:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2094, + "역명": "토성", + "시간": "10:44:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1123, + "역명": "토성", + "시간": "12:26:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2152, + "역명": "토성", + "시간": "13:38:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1187, + "역명": "토성", + "시간": "15:22:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 13, + "열번": 2214, + "역명": "토성", + "시간": "16:34:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2016, + "역명": "토성", + "시간": "06:59:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1049, + "역명": "토성", + "시간": "08:50:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2080, + "역명": "토성", + "시간": "10:02:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1109, + "역명": "토성", + "시간": "11:45:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2138, + "역명": "토성", + "시간": "12:56:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1171, + "역명": "토성", + "시간": "14:38:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2198, + "역명": "토성", + "시간": "15:50:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1235, + "역명": "토성", + "시간": "17:34:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2262, + "역명": "토성", + "시간": "18:48:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1285, + "역명": "토성", + "시간": "20:32:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1011, + "역명": "토성", + "시간": "06:49:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2036, + "역명": "토성", + "시간": "07:59:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1069, + "역명": "토성", + "시간": "09:45:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2098, + "역명": "토성", + "시간": "10:56:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1129, + "역명": "토성", + "시간": "12:43:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2156, + "역명": "토성", + "시간": "13:54:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1193, + "역명": "토성", + "시간": "15:39:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2220, + "역명": "토성", + "시간": "16:50:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1255, + "역명": "토성", + "시간": "18:36:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2280, + "역명": "토성", + "시간": "19:46:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1299, + "역명": "토성", + "시간": "21:28:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2320, + "역명": "토성", + "시간": "22:39:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2026, + "역명": "토성", + "시간": "07:34:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 16, + "열번": 1059, + "역명": "토성", + "시간": "09:15:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2038, + "역명": "토성", + "시간": "08:04:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 18, + "열번": 1007, + "역명": "토성", + "시간": "06:27:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2028, + "역명": "토성", + "시간": "07:39:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1061, + "역명": "토성", + "시간": "09:21:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2090, + "역명": "토성", + "시간": "10:32:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1119, + "역명": "토성", + "시간": "12:15:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2148, + "역명": "토성", + "시간": "13:26:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1183, + "역명": "토성", + "시간": "15:11:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2210, + "역명": "토성", + "시간": "16:23:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1247, + "역명": "토성", + "시간": "18:09:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2040, + "역명": "토성", + "시간": "08:09:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1071, + "역명": "토성", + "시간": "09:51:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2100, + "역명": "토성", + "시간": "11:02:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1131, + "역명": "토성", + "시간": "12:48:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2158, + "역명": "토성", + "시간": "14:00:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1195, + "역명": "토성", + "시간": "15:44:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2222, + "역명": "토성", + "시간": "16:55:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2030, + "역명": "토성", + "시간": "07:44:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1063, + "역명": "토성", + "시간": "09:27:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2092, + "역명": "토성", + "시간": "10:38:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1121, + "역명": "토성", + "시간": "12:21:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2150, + "역명": "토성", + "시간": "13:32:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1185, + "역명": "토성", + "시간": "15:17:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2212, + "역명": "토성", + "시간": "16:28:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1249, + "역명": "토성", + "시간": "18:15:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2274, + "역명": "토성", + "시간": "19:25:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1295, + "역명": "토성", + "시간": "21:12:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2318, + "역명": "토성", + "시간": "22:29:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 20, + "열번": 7931, + "역명": "토성", + "시간": "00:20:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 21, + "열번": 1013, + "역명": "토성", + "시간": "07:00:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2042, + "역명": "토성", + "시간": "08:14:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1073, + "역명": "토성", + "시간": "09:57:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2102, + "역명": "토성", + "시간": "11:08:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1133, + "역명": "토성", + "시간": "12:54:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2160, + "역명": "토성", + "시간": "14:05:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1197, + "역명": "토성", + "시간": "15:50:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2224, + "역명": "토성", + "시간": "17:00:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1257, + "역명": "토성", + "시간": "18:43:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2282, + "역명": "토성", + "시간": "19:54:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1301, + "역명": "토성", + "시간": "21:36:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2322, + "역명": "토성", + "시간": "22:51:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2034, + "역명": "토성", + "시간": "07:54:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1067, + "역명": "토성", + "시간": "09:39:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2096, + "역명": "토성", + "시간": "10:50:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1125, + "역명": "토성", + "시간": "12:32:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2044, + "역명": "토성", + "시간": "08:19:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1075, + "역명": "토성", + "시간": "10:03:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2104, + "역명": "토성", + "시간": "11:14:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1135, + "역명": "토성", + "시간": "12:59:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2162, + "역명": "토성", + "시간": "14:11:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1199, + "역명": "토성", + "시간": "15:55:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2228, + "역명": "토성", + "시간": "17:10:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "토성", + "시간": "08:29:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1079, + "역명": "토성", + "시간": "10:15:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2108, + "역명": "토성", + "시간": "11:26:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1139, + "역명": "토성", + "시간": "13:10:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2166, + "역명": "토성", + "시간": "14:22:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1203, + "역명": "토성", + "시간": "16:06:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2232, + "역명": "토성", + "시간": "17:20:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1263, + "역명": "토성", + "시간": "19:04:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2288, + "역명": "토성", + "시간": "20:18:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1307, + "역명": "토성", + "시간": "22:00:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 24, + "열번": 2326, + "역명": "토성", + "시간": "23:15:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "토성", + "시간": "07:28:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2054, + "역명": "토성", + "시간": "08:44:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1083, + "역명": "토성", + "시간": "10:27:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2112, + "역명": "토성", + "시간": "11:38:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1143, + "역명": "토성", + "시간": "13:21:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2170, + "역명": "토성", + "시간": "14:33:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1207, + "역명": "토성", + "시간": "16:17:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2236, + "역명": "토성", + "시간": "17:30:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1267, + "역명": "토성", + "시간": "19:20:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2292, + "역명": "토성", + "시간": "20:34:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1311, + "역명": "토성", + "시간": "22:16:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2328, + "역명": "토성", + "시간": "23:26:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2052, + "역명": "토성", + "시간": "08:39:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1081, + "역명": "토성", + "시간": "10:21:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2110, + "역명": "토성", + "시간": "11:32:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1141, + "역명": "토성", + "시간": "13:16:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2168, + "역명": "토성", + "시간": "14:27:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1205, + "역명": "토성", + "시간": "16:12:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2234, + "역명": "토성", + "시간": "17:25:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1265, + "역명": "토성", + "시간": "19:12:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2290, + "역명": "토성", + "시간": "20:26:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1309, + "역명": "토성", + "시간": "22:08:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1025, + "역명": "토성", + "시간": "07:50:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2060, + "역명": "토성", + "시간": "09:02:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1089, + "역명": "토성", + "시간": "10:45:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2118, + "역명": "토성", + "시간": "11:56:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1151, + "역명": "토성", + "시간": "13:43:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2178, + "역명": "토성", + "시간": "14:55:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1215, + "역명": "토성", + "시간": "16:39:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2244, + "역명": "토성", + "시간": "17:54:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1271, + "역명": "토성", + "시간": "19:36:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2296, + "역명": "토성", + "시간": "20:50:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 27, + "열번": 1315, + "역명": "토성", + "시간": "22:36:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 28, + "열번": 1029, + "역명": "토성", + "시간": "08:00:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2064, + "역명": "토성", + "시간": "09:14:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1093, + "역명": "토성", + "시간": "10:57:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2122, + "역명": "토성", + "시간": "12:08:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1155, + "역명": "토성", + "시간": "13:54:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2182, + "역명": "토성", + "시간": "15:06:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1219, + "역명": "토성", + "시간": "16:50:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1035, + "역명": "토성", + "시간": "08:15:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2068, + "역명": "토성", + "시간": "09:26:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1097, + "역명": "토성", + "시간": "11:09:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2126, + "역명": "토성", + "시간": "12:20:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1159, + "역명": "토성", + "시간": "14:05:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2186, + "역명": "토성", + "시간": "15:17:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1223, + "역명": "토성", + "시간": "17:01:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 29, + "열번": 2250, + "역명": "토성", + "시간": "18:12:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1031, + "역명": "토성", + "시간": "08:05:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1037, + "역명": "토성", + "시간": "08:20:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2070, + "역명": "토성", + "시간": "09:32:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1099, + "역명": "토성", + "시간": "11:15:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2128, + "역명": "토성", + "시간": "12:26:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1161, + "역명": "토성", + "시간": "14:11:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2188, + "역명": "토성", + "시간": "15:22:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1225, + "역명": "토성", + "시간": "17:07:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2252, + "역명": "토성", + "시간": "18:18:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1277, + "역명": "토성", + "시간": "20:00:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2302, + "역명": "토성", + "시간": "21:14:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1319, + "역명": "토성", + "시간": "22:56:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 32, + "열번": 1041, + "역명": "토성", + "시간": "08:30:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1045, + "역명": "토성", + "시간": "08:40:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2076, + "역명": "토성", + "시간": "09:50:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1105, + "역명": "토성", + "시간": "11:33:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2134, + "역명": "토성", + "시간": "12:44:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1167, + "역명": "토성", + "시간": "14:27:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2194, + "역명": "토성", + "시간": "15:39:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1231, + "역명": "토성", + "시간": "17:23:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 33, + "열번": 2258, + "역명": "토성", + "시간": "18:36:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 34, + "열번": 8904, + "역명": "토성", + "시간": "13:43:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1189, + "역명": "토성", + "시간": "15:28:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 34, + "열번": 2216, + "역명": "토성", + "시간": "16:39:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1251, + "역명": "토성", + "시간": "18:22:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 34, + "열번": 2276, + "역명": "토성", + "시간": "19:32:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1297, + "역명": "토성", + "시간": "21:20:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1047, + "역명": "토성", + "시간": "08:45:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2078, + "역명": "토성", + "시간": "09:56:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1107, + "역명": "토성", + "시간": "11:39:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2136, + "역명": "토성", + "시간": "12:50:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1169, + "역명": "토성", + "시간": "14:33:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2196, + "역명": "토성", + "시간": "15:44:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1233, + "역명": "토성", + "시간": "17:29:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2260, + "역명": "토성", + "시간": "18:42:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1283, + "역명": "토성", + "시간": "20:24:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2308, + "역명": "토성", + "시간": "21:39:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1325, + "역명": "토성", + "시간": "23:28:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 36, + "열번": 2226, + "역명": "토성", + "시간": "17:05:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1259, + "역명": "토성", + "시간": "18:50:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 36, + "열번": 2284, + "역명": "토성", + "시간": "20:02:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1303, + "역명": "토성", + "시간": "21:44:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1127, + "역명": "토성", + "시간": "12:37:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2154, + "역명": "토성", + "시간": "13:49:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1191, + "역명": "토성", + "시간": "15:33:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2218, + "역명": "토성", + "시간": "16:45:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1253, + "역명": "토성", + "시간": "18:29:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 37, + "열번": 2278, + "역명": "토성", + "시간": "19:39:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 39, + "열번": 1149, + "역명": "토성", + "시간": "13:38:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2176, + "역명": "토성", + "시간": "14:49:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1213, + "역명": "토성", + "시간": "16:34:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 39, + "열번": 2242, + "역명": "토성", + "시간": "17:48:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 41, + "열번": 1175, + "역명": "토성", + "시간": "14:49:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2202, + "역명": "토성", + "시간": "16:01:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1239, + "역명": "토성", + "시간": "17:45:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2266, + "역명": "토성", + "시간": "19:00:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1289, + "역명": "토성", + "시간": "20:48:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2312, + "역명": "토성", + "시간": "21:59:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1327, + "역명": "토성", + "시간": "23:40:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "동대신", + "시간": "05:32:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "동대신", + "시간": "07:22:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2050, + "역명": "동대신", + "시간": "08:31:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "동대신", + "시간": "05:16:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "동대신", + "시간": "07:13:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "동대신", + "시간": "08:21:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1077, + "역명": "동대신", + "시간": "10:12:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2106, + "역명": "동대신", + "시간": "11:17:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1137, + "역명": "동대신", + "시간": "13:08:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2164, + "역명": "동대신", + "시간": "14:14:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1201, + "역명": "동대신", + "시간": "16:04:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2230, + "역명": "동대신", + "시간": "17:12:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1261, + "역명": "동대신", + "시간": "19:00:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2286, + "역명": "동대신", + "시간": "20:07:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1305, + "역명": "동대신", + "시간": "21:55:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 2, + "열번": 2324, + "역명": "동대신", + "시간": "23:00:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "동대신", + "시간": "05:45:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "동대신", + "시간": "07:40:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2056, + "역명": "동대신", + "시간": "08:47:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1085, + "역명": "동대신", + "시간": "10:36:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2114, + "역명": "동대신", + "시간": "11:41:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1145, + "역명": "동대신", + "시간": "13:30:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2172, + "역명": "동대신", + "시간": "14:36:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1209, + "역명": "동대신", + "시간": "16:26:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2238, + "역명": "동대신", + "시간": "17:33:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "동대신", + "시간": "05:58:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1023, + "역명": "동대신", + "시간": "07:47:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2058, + "역명": "동대신", + "시간": "08:53:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1087, + "역명": "동대신", + "시간": "10:42:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2116, + "역명": "동대신", + "시간": "11:47:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1147, + "역명": "동대신", + "시간": "13:35:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2174, + "역명": "동대신", + "시간": "14:41:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1211, + "역명": "동대신", + "시간": "16:31:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2240, + "역명": "동대신", + "시간": "17:39:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1269, + "역명": "동대신", + "시간": "19:31:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2294, + "역명": "동대신", + "시간": "20:39:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1313, + "역명": "동대신", + "시간": "22:29:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2330, + "역명": "동대신", + "시간": "23:39:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 5, + "열번": 1001, + "역명": "동대신", + "시간": "06:00:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2018, + "역명": "동대신", + "시간": "07:06:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1051, + "역명": "동대신", + "시간": "08:58:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2082, + "역명": "동대신", + "시간": "10:05:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1111, + "역명": "동대신", + "시간": "11:54:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2140, + "역명": "동대신", + "시간": "12:59:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1173, + "역명": "동대신", + "시간": "14:47:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2200, + "역명": "동대신", + "시간": "15:53:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1237, + "역명": "동대신", + "시간": "17:43:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2264, + "역명": "동대신", + "시간": "18:51:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1287, + "역명": "동대신", + "시간": "20:43:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2310, + "역명": "동대신", + "시간": "21:46:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2008, + "역명": "동대신", + "시간": "06:10:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1027, + "역명": "동대신", + "시간": "07:58:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2062, + "역명": "동대신", + "시간": "09:05:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1091, + "역명": "동대신", + "시간": "10:54:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2120, + "역명": "동대신", + "시간": "11:59:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1153, + "역명": "동대신", + "시간": "13:52:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2180, + "역명": "동대신", + "시간": "14:58:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1217, + "역명": "동대신", + "시간": "16:48:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2246, + "역명": "동대신", + "시간": "17:57:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1273, + "역명": "동대신", + "시간": "19:47:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2298, + "역명": "동대신", + "시간": "20:55:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1317, + "역명": "동대신", + "시간": "22:49:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1003, + "역명": "동대신", + "시간": "06:08:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2020, + "역명": "동대신", + "시간": "07:14:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1053, + "역명": "동대신", + "시간": "09:03:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2084, + "역명": "동대신", + "시간": "10:11:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1113, + "역명": "동대신", + "시간": "12:00:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2142, + "역명": "동대신", + "시간": "13:05:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1177, + "역명": "동대신", + "시간": "14:58:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2204, + "역명": "동대신", + "시간": "16:04:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1241, + "역명": "동대신", + "시간": "17:54:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2268, + "역명": "동대신", + "시간": "19:03:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1291, + "역명": "동대신", + "시간": "20:59:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2314, + "역명": "동대신", + "시간": "22:06:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 7, + "열번": 1329, + "역명": "동대신", + "시간": "23:55:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2010, + "역명": "동대신", + "시간": "06:22:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1033, + "역명": "동대신", + "시간": "08:13:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2066, + "역명": "동대신", + "시간": "09:17:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1095, + "역명": "동대신", + "시간": "11:06:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2124, + "역명": "동대신", + "시간": "12:11:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1157, + "역명": "동대신", + "시간": "14:03:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2184, + "역명": "동대신", + "시간": "15:09:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1221, + "역명": "동대신", + "시간": "16:59:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2248, + "역명": "동대신", + "시간": "18:03:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1275, + "역명": "동대신", + "시간": "19:55:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 8, + "열번": 2300, + "역명": "동대신", + "시간": "21:03:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 9, + "열번": 2022, + "역명": "동대신", + "시간": "07:20:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1055, + "역명": "동대신", + "시간": "09:08:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2086, + "역명": "동대신", + "시간": "10:17:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1115, + "역명": "동대신", + "시간": "12:06:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2144, + "역명": "동대신", + "시간": "13:11:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1179, + "역명": "동대신", + "시간": "15:03:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2206, + "역명": "동대신", + "시간": "16:09:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1243, + "역명": "동대신", + "시간": "18:00:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 9, + "열번": 2270, + "역명": "동대신", + "시간": "19:09:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2012, + "역명": "동대신", + "시간": "06:34:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1039, + "역명": "동대신", + "시간": "08:28:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2072, + "역명": "동대신", + "시간": "09:35:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1101, + "역명": "동대신", + "시간": "11:24:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2130, + "역명": "동대신", + "시간": "12:29:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1163, + "역명": "동대신", + "시간": "14:19:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2190, + "역명": "동대신", + "시간": "15:25:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1227, + "역명": "동대신", + "시간": "17:15:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2254, + "역명": "동대신", + "시간": "18:21:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1279, + "역명": "동대신", + "시간": "20:11:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2304, + "역명": "동대신", + "시간": "21:19:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1321, + "역명": "동대신", + "시간": "23:09:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 11, + "열번": 1005, + "역명": "동대신", + "시간": "06:19:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2024, + "역명": "동대신", + "시간": "07:26:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1057, + "역명": "동대신", + "시간": "09:13:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2088, + "역명": "동대신", + "시간": "10:23:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1117, + "역명": "동대신", + "시간": "12:12:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2146, + "역명": "동대신", + "시간": "13:17:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1181, + "역명": "동대신", + "시간": "15:09:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2208, + "역명": "동대신", + "시간": "16:15:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1245, + "역명": "동대신", + "시간": "18:06:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2272, + "역명": "동대신", + "시간": "19:15:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1293, + "역명": "동대신", + "시간": "21:07:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2316, + "역명": "동대신", + "시간": "22:16:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 11, + "열번": 1331, + "역명": "동대신", + "시간": "00:07:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2014, + "역명": "동대신", + "시간": "06:46:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1043, + "역명": "동대신", + "시간": "08:38:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2074, + "역명": "동대신", + "시간": "09:41:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1103, + "역명": "동대신", + "시간": "11:30:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2132, + "역명": "동대신", + "시간": "12:35:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1165, + "역명": "동대신", + "시간": "14:25:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "동대신", + "시간": "15:31:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1229, + "역명": "동대신", + "시간": "17:21:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2256, + "역명": "동대신", + "시간": "18:27:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1281, + "역명": "동대신", + "시간": "20:19:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2306, + "역명": "동대신", + "시간": "21:27:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1323, + "역명": "동대신", + "시간": "23:20:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1009, + "역명": "동대신", + "시간": "06:41:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2032, + "역명": "동대신", + "시간": "07:46:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1065, + "역명": "동대신", + "시간": "09:36:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2094, + "역명": "동대신", + "시간": "10:41:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1123, + "역명": "동대신", + "시간": "12:29:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2152, + "역명": "동대신", + "시간": "13:35:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1187, + "역명": "동대신", + "시간": "15:25:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 13, + "열번": 2214, + "역명": "동대신", + "시간": "16:31:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2016, + "역명": "동대신", + "시간": "06:57:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1049, + "역명": "동대신", + "시간": "08:53:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2080, + "역명": "동대신", + "시간": "09:59:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1109, + "역명": "동대신", + "시간": "11:48:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2138, + "역명": "동대신", + "시간": "12:53:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1171, + "역명": "동대신", + "시간": "14:41:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2198, + "역명": "동대신", + "시간": "15:47:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1235, + "역명": "동대신", + "시간": "17:37:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2262, + "역명": "동대신", + "시간": "18:45:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1285, + "역명": "동대신", + "시간": "20:35:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1011, + "역명": "동대신", + "시간": "06:52:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2036, + "역명": "동대신", + "시간": "07:56:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1069, + "역명": "동대신", + "시간": "09:48:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2098, + "역명": "동대신", + "시간": "10:53:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1129, + "역명": "동대신", + "시간": "12:46:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2156, + "역명": "동대신", + "시간": "13:52:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1193, + "역명": "동대신", + "시간": "15:42:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2220, + "역명": "동대신", + "시간": "16:47:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1255, + "역명": "동대신", + "시간": "18:39:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2280, + "역명": "동대신", + "시간": "19:43:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1299, + "역명": "동대신", + "시간": "21:31:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2320, + "역명": "동대신", + "시간": "22:36:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2026, + "역명": "동대신", + "시간": "07:31:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 16, + "열번": 1059, + "역명": "동대신", + "시간": "09:18:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2038, + "역명": "동대신", + "시간": "08:01:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 18, + "열번": 1007, + "역명": "동대신", + "시간": "06:30:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2028, + "역명": "동대신", + "시간": "07:36:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1061, + "역명": "동대신", + "시간": "09:24:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2090, + "역명": "동대신", + "시간": "10:29:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1119, + "역명": "동대신", + "시간": "12:18:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2148, + "역명": "동대신", + "시간": "13:23:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1183, + "역명": "동대신", + "시간": "15:14:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2210, + "역명": "동대신", + "시간": "16:20:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1247, + "역명": "동대신", + "시간": "18:12:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2040, + "역명": "동대신", + "시간": "08:06:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1071, + "역명": "동대신", + "시간": "09:54:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2100, + "역명": "동대신", + "시간": "10:59:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1131, + "역명": "동대신", + "시간": "12:51:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2158, + "역명": "동대신", + "시간": "13:57:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1195, + "역명": "동대신", + "시간": "15:47:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2222, + "역명": "동대신", + "시간": "16:52:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2030, + "역명": "동대신", + "시간": "07:41:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1063, + "역명": "동대신", + "시간": "09:30:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2092, + "역명": "동대신", + "시간": "10:35:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1121, + "역명": "동대신", + "시간": "12:24:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2150, + "역명": "동대신", + "시간": "13:29:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1185, + "역명": "동대신", + "시간": "15:20:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2212, + "역명": "동대신", + "시간": "16:26:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1249, + "역명": "동대신", + "시간": "18:18:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2274, + "역명": "동대신", + "시간": "19:22:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1295, + "역명": "동대신", + "시간": "21:15:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2318, + "역명": "동대신", + "시간": "22:26:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 20, + "열번": 7931, + "역명": "동대신", + "시간": "00:23:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 21, + "열번": 1013, + "역명": "동대신", + "시간": "07:03:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2042, + "역명": "동대신", + "시간": "08:11:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1073, + "역명": "동대신", + "시간": "10:00:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2102, + "역명": "동대신", + "시간": "11:05:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1133, + "역명": "동대신", + "시간": "12:57:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2160, + "역명": "동대신", + "시간": "14:03:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1197, + "역명": "동대신", + "시간": "15:53:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2224, + "역명": "동대신", + "시간": "16:57:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1257, + "역명": "동대신", + "시간": "18:46:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2282, + "역명": "동대신", + "시간": "19:51:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1301, + "역명": "동대신", + "시간": "21:39:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2322, + "역명": "동대신", + "시간": "22:48:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2034, + "역명": "동대신", + "시간": "07:51:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1067, + "역명": "동대신", + "시간": "09:42:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2096, + "역명": "동대신", + "시간": "10:47:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1125, + "역명": "동대신", + "시간": "12:35:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2044, + "역명": "동대신", + "시간": "08:16:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1075, + "역명": "동대신", + "시간": "10:06:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2104, + "역명": "동대신", + "시간": "11:11:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1135, + "역명": "동대신", + "시간": "13:02:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2162, + "역명": "동대신", + "시간": "14:08:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1199, + "역명": "동대신", + "시간": "15:58:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2228, + "역명": "동대신", + "시간": "17:07:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "동대신", + "시간": "08:26:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1079, + "역명": "동대신", + "시간": "10:18:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2108, + "역명": "동대신", + "시간": "11:23:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1139, + "역명": "동대신", + "시간": "13:13:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2166, + "역명": "동대신", + "시간": "14:19:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1203, + "역명": "동대신", + "시간": "16:09:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2232, + "역명": "동대신", + "시간": "17:17:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1263, + "역명": "동대신", + "시간": "19:07:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2288, + "역명": "동대신", + "시간": "20:15:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1307, + "역명": "동대신", + "시간": "22:03:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 24, + "열번": 2326, + "역명": "동대신", + "시간": "23:12:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "동대신", + "시간": "07:31:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2054, + "역명": "동대신", + "시간": "08:41:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1083, + "역명": "동대신", + "시간": "10:30:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2112, + "역명": "동대신", + "시간": "11:35:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1143, + "역명": "동대신", + "시간": "13:24:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2170, + "역명": "동대신", + "시간": "14:30:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1207, + "역명": "동대신", + "시간": "16:20:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2236, + "역명": "동대신", + "시간": "17:27:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1267, + "역명": "동대신", + "시간": "19:23:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2292, + "역명": "동대신", + "시간": "20:31:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1311, + "역명": "동대신", + "시간": "22:19:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2328, + "역명": "동대신", + "시간": "23:23:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2052, + "역명": "동대신", + "시간": "08:36:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1081, + "역명": "동대신", + "시간": "10:24:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2110, + "역명": "동대신", + "시간": "11:29:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1141, + "역명": "동대신", + "시간": "13:19:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2168, + "역명": "동대신", + "시간": "14:25:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1205, + "역명": "동대신", + "시간": "16:15:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2234, + "역명": "동대신", + "시간": "17:22:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1265, + "역명": "동대신", + "시간": "19:15:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2290, + "역명": "동대신", + "시간": "20:23:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1309, + "역명": "동대신", + "시간": "22:11:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1025, + "역명": "동대신", + "시간": "07:53:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2060, + "역명": "동대신", + "시간": "08:59:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1089, + "역명": "동대신", + "시간": "10:48:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2118, + "역명": "동대신", + "시간": "11:53:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1151, + "역명": "동대신", + "시간": "13:46:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2178, + "역명": "동대신", + "시간": "14:52:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1215, + "역명": "동대신", + "시간": "16:42:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2244, + "역명": "동대신", + "시간": "17:51:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1271, + "역명": "동대신", + "시간": "19:39:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2296, + "역명": "동대신", + "시간": "20:47:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 27, + "열번": 1315, + "역명": "동대신", + "시간": "22:39:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 28, + "열번": 1029, + "역명": "동대신", + "시간": "08:03:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2064, + "역명": "동대신", + "시간": "09:11:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1093, + "역명": "동대신", + "시간": "11:00:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2122, + "역명": "동대신", + "시간": "12:05:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1155, + "역명": "동대신", + "시간": "13:57:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2182, + "역명": "동대신", + "시간": "15:03:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1219, + "역명": "동대신", + "시간": "16:53:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1035, + "역명": "동대신", + "시간": "08:18:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2068, + "역명": "동대신", + "시간": "09:23:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1097, + "역명": "동대신", + "시간": "11:12:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2126, + "역명": "동대신", + "시간": "12:17:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1159, + "역명": "동대신", + "시간": "14:08:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2186, + "역명": "동대신", + "시간": "15:14:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1223, + "역명": "동대신", + "시간": "17:04:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 29, + "열번": 2250, + "역명": "동대신", + "시간": "18:09:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1031, + "역명": "동대신", + "시간": "08:08:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1037, + "역명": "동대신", + "시간": "08:23:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2070, + "역명": "동대신", + "시간": "09:29:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1099, + "역명": "동대신", + "시간": "11:18:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2128, + "역명": "동대신", + "시간": "12:23:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1161, + "역명": "동대신", + "시간": "14:14:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2188, + "역명": "동대신", + "시간": "15:20:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1225, + "역명": "동대신", + "시간": "17:10:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2252, + "역명": "동대신", + "시간": "18:15:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1277, + "역명": "동대신", + "시간": "20:03:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2302, + "역명": "동대신", + "시간": "21:11:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1319, + "역명": "동대신", + "시간": "22:59:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 32, + "열번": 1041, + "역명": "동대신", + "시간": "08:33:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1045, + "역명": "동대신", + "시간": "08:43:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2076, + "역명": "동대신", + "시간": "09:47:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1105, + "역명": "동대신", + "시간": "11:36:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2134, + "역명": "동대신", + "시간": "12:41:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1167, + "역명": "동대신", + "시간": "14:30:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2194, + "역명": "동대신", + "시간": "15:36:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1231, + "역명": "동대신", + "시간": "17:26:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 33, + "열번": 2258, + "역명": "동대신", + "시간": "18:33:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 34, + "열번": 8904, + "역명": "동대신", + "시간": "13:41:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1189, + "역명": "동대신", + "시간": "15:31:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 34, + "열번": 2216, + "역명": "동대신", + "시간": "16:37:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1251, + "역명": "동대신", + "시간": "18:25:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 34, + "열번": 2276, + "역명": "동대신", + "시간": "19:29:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1297, + "역명": "동대신", + "시간": "21:23:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1047, + "역명": "동대신", + "시간": "08:48:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2078, + "역명": "동대신", + "시간": "09:53:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1107, + "역명": "동대신", + "시간": "11:42:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2136, + "역명": "동대신", + "시간": "12:47:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1169, + "역명": "동대신", + "시간": "14:36:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2196, + "역명": "동대신", + "시간": "15:42:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1233, + "역명": "동대신", + "시간": "17:32:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2260, + "역명": "동대신", + "시간": "18:39:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1283, + "역명": "동대신", + "시간": "20:27:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2308, + "역명": "동대신", + "시간": "21:36:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1325, + "역명": "동대신", + "시간": "23:31:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 36, + "열번": 2226, + "역명": "동대신", + "시간": "17:02:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1259, + "역명": "동대신", + "시간": "18:53:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 36, + "열번": 2284, + "역명": "동대신", + "시간": "19:59:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1303, + "역명": "동대신", + "시간": "21:47:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1127, + "역명": "동대신", + "시간": "12:40:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2154, + "역명": "동대신", + "시간": "13:46:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1191, + "역명": "동대신", + "시간": "15:36:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2218, + "역명": "동대신", + "시간": "16:42:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1253, + "역명": "동대신", + "시간": "18:32:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 37, + "열번": 2278, + "역명": "동대신", + "시간": "19:36:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 39, + "열번": 1149, + "역명": "동대신", + "시간": "13:41:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2176, + "역명": "동대신", + "시간": "14:47:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1213, + "역명": "동대신", + "시간": "16:37:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 39, + "열번": 2242, + "역명": "동대신", + "시간": "17:45:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 41, + "열번": 1175, + "역명": "동대신", + "시간": "14:52:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2202, + "역명": "동대신", + "시간": "15:58:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1239, + "역명": "동대신", + "시간": "17:48:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2266, + "역명": "동대신", + "시간": "18:57:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1289, + "역명": "동대신", + "시간": "20:51:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2312, + "역명": "동대신", + "시간": "21:56:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1327, + "역명": "동대신", + "시간": "23:43:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "서대신", + "시간": "05:30:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "서대신", + "시간": "07:24:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2050, + "역명": "서대신", + "시간": "08:29:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "서대신", + "시간": "05:14:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "서대신", + "시간": "07:15:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "서대신", + "시간": "08:19:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1077, + "역명": "서대신", + "시간": "10:15:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2106, + "역명": "서대신", + "시간": "11:15:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1137, + "역명": "서대신", + "시간": "13:10:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2164, + "역명": "서대신", + "시간": "14:12:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1201, + "역명": "서대신", + "시간": "16:06:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2230, + "역명": "서대신", + "시간": "17:10:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1261, + "역명": "서대신", + "시간": "19:03:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2286, + "역명": "서대신", + "시간": "20:05:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1305, + "역명": "서대신", + "시간": "21:58:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 2, + "열번": 2324, + "역명": "서대신", + "시간": "22:58:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "서대신", + "시간": "05:43:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "서대신", + "시간": "07:42:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2056, + "역명": "서대신", + "시간": "08:45:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1085, + "역명": "서대신", + "시간": "10:39:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2114, + "역명": "서대신", + "시간": "11:39:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1145, + "역명": "서대신", + "시간": "13:32:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2172, + "역명": "서대신", + "시간": "14:34:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1209, + "역명": "서대신", + "시간": "16:28:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2238, + "역명": "서대신", + "시간": "17:31:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "서대신", + "시간": "05:56:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1023, + "역명": "서대신", + "시간": "07:49:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2058, + "역명": "서대신", + "시간": "08:51:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1087, + "역명": "서대신", + "시간": "10:45:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2116, + "역명": "서대신", + "시간": "11:45:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1147, + "역명": "서대신", + "시간": "13:38:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2174, + "역명": "서대신", + "시간": "14:39:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1211, + "역명": "서대신", + "시간": "16:34:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2240, + "역명": "서대신", + "시간": "17:37:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1269, + "역명": "서대신", + "시간": "19:34:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2294, + "역명": "서대신", + "시간": "20:37:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1313, + "역명": "서대신", + "시간": "22:32:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2330, + "역명": "서대신", + "시간": "23:36:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 5, + "열번": 1001, + "역명": "서대신", + "시간": "06:02:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2018, + "역명": "서대신", + "시간": "07:04:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1051, + "역명": "서대신", + "시간": "09:01:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2082, + "역명": "서대신", + "시간": "10:03:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1111, + "역명": "서대신", + "시간": "11:57:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2140, + "역명": "서대신", + "시간": "12:57:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1173, + "역명": "서대신", + "시간": "14:49:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2200, + "역명": "서대신", + "시간": "15:51:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1237, + "역명": "서대신", + "시간": "17:45:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2264, + "역명": "서대신", + "시간": "18:49:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1287, + "역명": "서대신", + "시간": "20:46:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2310, + "역명": "서대신", + "시간": "21:44:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2008, + "역명": "서대신", + "시간": "06:08:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1027, + "역명": "서대신", + "시간": "08:01:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2062, + "역명": "서대신", + "시간": "09:03:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1091, + "역명": "서대신", + "시간": "10:57:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2120, + "역명": "서대신", + "시간": "11:57:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1153, + "역명": "서대신", + "시간": "13:54:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2180, + "역명": "서대신", + "시간": "14:56:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1217, + "역명": "서대신", + "시간": "16:50:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2246, + "역명": "서대신", + "시간": "17:55:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1273, + "역명": "서대신", + "시간": "19:50:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2298, + "역명": "서대신", + "시간": "20:53:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1317, + "역명": "서대신", + "시간": "22:52:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1003, + "역명": "서대신", + "시간": "06:10:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2020, + "역명": "서대신", + "시간": "07:12:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1053, + "역명": "서대신", + "시간": "09:06:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2084, + "역명": "서대신", + "시간": "10:09:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1113, + "역명": "서대신", + "시간": "12:03:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2142, + "역명": "서대신", + "시간": "13:03:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1177, + "역명": "서대신", + "시간": "15:00:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2204, + "역명": "서대신", + "시간": "16:02:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1241, + "역명": "서대신", + "시간": "17:57:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2268, + "역명": "서대신", + "시간": "19:01:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1291, + "역명": "서대신", + "시간": "21:02:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2314, + "역명": "서대신", + "시간": "22:04:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 7, + "열번": 1329, + "역명": "서대신", + "시간": "23:58:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2010, + "역명": "서대신", + "시간": "06:20:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1033, + "역명": "서대신", + "시간": "08:16:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2066, + "역명": "서대신", + "시간": "09:15:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1095, + "역명": "서대신", + "시간": "11:09:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2124, + "역명": "서대신", + "시간": "12:09:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1157, + "역명": "서대신", + "시간": "14:05:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2184, + "역명": "서대신", + "시간": "15:07:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1221, + "역명": "서대신", + "시간": "17:01:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2248, + "역명": "서대신", + "시간": "18:01:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1275, + "역명": "서대신", + "시간": "19:58:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 8, + "열번": 2300, + "역명": "서대신", + "시간": "21:01:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 9, + "열번": 2022, + "역명": "서대신", + "시간": "07:18:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1055, + "역명": "서대신", + "시간": "09:11:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2086, + "역명": "서대신", + "시간": "10:15:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1115, + "역명": "서대신", + "시간": "12:09:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2144, + "역명": "서대신", + "시간": "13:09:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1179, + "역명": "서대신", + "시간": "15:06:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2206, + "역명": "서대신", + "시간": "16:07:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1243, + "역명": "서대신", + "시간": "18:03:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 9, + "열번": 2270, + "역명": "서대신", + "시간": "19:07:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2012, + "역명": "서대신", + "시간": "06:32:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1039, + "역명": "서대신", + "시간": "08:31:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2072, + "역명": "서대신", + "시간": "09:33:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1101, + "역명": "서대신", + "시간": "11:27:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2130, + "역명": "서대신", + "시간": "12:27:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1163, + "역명": "서대신", + "시간": "14:22:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2190, + "역명": "서대신", + "시간": "15:23:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1227, + "역명": "서대신", + "시간": "17:18:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2254, + "역명": "서대신", + "시간": "18:19:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1279, + "역명": "서대신", + "시간": "20:14:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2304, + "역명": "서대신", + "시간": "21:17:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1321, + "역명": "서대신", + "시간": "23:12:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 11, + "열번": 1005, + "역명": "서대신", + "시간": "06:21:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2024, + "역명": "서대신", + "시간": "07:24:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1057, + "역명": "서대신", + "시간": "09:16:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2088, + "역명": "서대신", + "시간": "10:21:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1117, + "역명": "서대신", + "시간": "12:15:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2146, + "역명": "서대신", + "시간": "13:15:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1181, + "역명": "서대신", + "시간": "15:11:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2208, + "역명": "서대신", + "시간": "16:13:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1245, + "역명": "서대신", + "시간": "18:09:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2272, + "역명": "서대신", + "시간": "19:13:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1293, + "역명": "서대신", + "시간": "21:10:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2316, + "역명": "서대신", + "시간": "22:14:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 11, + "열번": 1331, + "역명": "서대신", + "시간": "00:09:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2014, + "역명": "서대신", + "시간": "06:44:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1043, + "역명": "서대신", + "시간": "08:41:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2074, + "역명": "서대신", + "시간": "09:39:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1103, + "역명": "서대신", + "시간": "11:33:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2132, + "역명": "서대신", + "시간": "12:33:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1165, + "역명": "서대신", + "시간": "14:27:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "서대신", + "시간": "15:29:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1229, + "역명": "서대신", + "시간": "17:23:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2256, + "역명": "서대신", + "시간": "18:25:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1281, + "역명": "서대신", + "시간": "20:22:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2306, + "역명": "서대신", + "시간": "21:25:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1323, + "역명": "서대신", + "시간": "23:23:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1009, + "역명": "서대신", + "시간": "06:43:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2032, + "역명": "서대신", + "시간": "07:44:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1065, + "역명": "서대신", + "시간": "09:39:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2094, + "역명": "서대신", + "시간": "10:39:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1123, + "역명": "서대신", + "시간": "12:32:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2152, + "역명": "서대신", + "시간": "13:33:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1187, + "역명": "서대신", + "시간": "15:28:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 13, + "열번": 2214, + "역명": "서대신", + "시간": "16:29:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2016, + "역명": "서대신", + "시간": "06:55:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1049, + "역명": "서대신", + "시간": "08:56:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2080, + "역명": "서대신", + "시간": "09:57:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1109, + "역명": "서대신", + "시간": "11:51:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2138, + "역명": "서대신", + "시간": "12:51:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1171, + "역명": "서대신", + "시간": "14:44:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2198, + "역명": "서대신", + "시간": "15:45:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1235, + "역명": "서대신", + "시간": "17:40:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2262, + "역명": "서대신", + "시간": "18:43:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1285, + "역명": "서대신", + "시간": "20:38:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1011, + "역명": "서대신", + "시간": "06:54:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2036, + "역명": "서대신", + "시간": "07:54:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1069, + "역명": "서대신", + "시간": "09:51:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2098, + "역명": "서대신", + "시간": "10:51:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1129, + "역명": "서대신", + "시간": "12:48:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2156, + "역명": "서대신", + "시간": "13:50:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1193, + "역명": "서대신", + "시간": "15:44:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2220, + "역명": "서대신", + "시간": "16:45:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1255, + "역명": "서대신", + "시간": "18:42:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2280, + "역명": "서대신", + "시간": "19:41:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1299, + "역명": "서대신", + "시간": "21:34:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2320, + "역명": "서대신", + "시간": "22:34:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2026, + "역명": "서대신", + "시간": "07:29:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 16, + "열번": 1059, + "역명": "서대신", + "시간": "09:21:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2038, + "역명": "서대신", + "시간": "07:59:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 18, + "열번": 1007, + "역명": "서대신", + "시간": "06:32:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2028, + "역명": "서대신", + "시간": "07:34:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1061, + "역명": "서대신", + "시간": "09:27:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2090, + "역명": "서대신", + "시간": "10:27:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1119, + "역명": "서대신", + "시간": "12:21:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2148, + "역명": "서대신", + "시간": "13:21:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1183, + "역명": "서대신", + "시간": "15:17:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2210, + "역명": "서대신", + "시간": "16:18:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1247, + "역명": "서대신", + "시간": "18:15:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2040, + "역명": "서대신", + "시간": "08:04:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1071, + "역명": "서대신", + "시간": "09:57:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2100, + "역명": "서대신", + "시간": "10:57:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1131, + "역명": "서대신", + "시간": "12:54:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2158, + "역명": "서대신", + "시간": "13:55:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1195, + "역명": "서대신", + "시간": "15:50:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2222, + "역명": "서대신", + "시간": "16:50:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2030, + "역명": "서대신", + "시간": "07:39:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1063, + "역명": "서대신", + "시간": "09:33:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2092, + "역명": "서대신", + "시간": "10:33:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1121, + "역명": "서대신", + "시간": "12:26:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2150, + "역명": "서대신", + "시간": "13:27:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1185, + "역명": "서대신", + "시간": "15:22:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2212, + "역명": "서대신", + "시간": "16:24:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1249, + "역명": "서대신", + "시간": "18:21:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2274, + "역명": "서대신", + "시간": "19:20:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1295, + "역명": "서대신", + "시간": "21:18:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2318, + "역명": "서대신", + "시간": "22:24:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 20, + "열번": 7931, + "역명": "서대신", + "시간": "00:25:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 21, + "열번": 1013, + "역명": "서대신", + "시간": "07:05:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2042, + "역명": "서대신", + "시간": "08:09:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1073, + "역명": "서대신", + "시간": "10:03:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2102, + "역명": "서대신", + "시간": "11:03:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1133, + "역명": "서대신", + "시간": "12:59:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2160, + "역명": "서대신", + "시간": "14:01:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1197, + "역명": "서대신", + "시간": "15:55:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2224, + "역명": "서대신", + "시간": "16:55:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1257, + "역명": "서대신", + "시간": "18:49:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2282, + "역명": "서대신", + "시간": "19:49:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1301, + "역명": "서대신", + "시간": "21:42:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2322, + "역명": "서대신", + "시간": "22:46:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2034, + "역명": "서대신", + "시간": "07:49:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1067, + "역명": "서대신", + "시간": "09:45:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2096, + "역명": "서대신", + "시간": "10:45:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1125, + "역명": "서대신", + "시간": "12:37:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2044, + "역명": "서대신", + "시간": "08:14:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1075, + "역명": "서대신", + "시간": "10:09:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2104, + "역명": "서대신", + "시간": "11:09:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1135, + "역명": "서대신", + "시간": "13:05:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2162, + "역명": "서대신", + "시간": "14:06:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1199, + "역명": "서대신", + "시간": "16:01:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2228, + "역명": "서대신", + "시간": "17:05:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "서대신", + "시간": "08:24:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1079, + "역명": "서대신", + "시간": "10:21:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2108, + "역명": "서대신", + "시간": "11:21:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1139, + "역명": "서대신", + "시간": "13:16:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2166, + "역명": "서대신", + "시간": "14:17:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1203, + "역명": "서대신", + "시간": "16:12:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2232, + "역명": "서대신", + "시간": "17:15:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1263, + "역명": "서대신", + "시간": "19:10:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2288, + "역명": "서대신", + "시간": "20:13:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1307, + "역명": "서대신", + "시간": "22:06:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 24, + "열번": 2326, + "역명": "서대신", + "시간": "23:10:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "서대신", + "시간": "07:33:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2054, + "역명": "서대신", + "시간": "08:39:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1083, + "역명": "서대신", + "시간": "10:33:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2112, + "역명": "서대신", + "시간": "11:33:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1143, + "역명": "서대신", + "시간": "13:27:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2170, + "역명": "서대신", + "시간": "14:28:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1207, + "역명": "서대신", + "시간": "16:23:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2236, + "역명": "서대신", + "시간": "17:25:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1267, + "역명": "서대신", + "시간": "19:26:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2292, + "역명": "서대신", + "시간": "20:29:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1311, + "역명": "서대신", + "시간": "22:22:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2328, + "역명": "서대신", + "시간": "23:21:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2052, + "역명": "서대신", + "시간": "08:34:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1081, + "역명": "서대신", + "시간": "10:27:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2110, + "역명": "서대신", + "시간": "11:27:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1141, + "역명": "서대신", + "시간": "13:21:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2168, + "역명": "서대신", + "시간": "14:23:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1205, + "역명": "서대신", + "시간": "16:17:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2234, + "역명": "서대신", + "시간": "17:20:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1265, + "역명": "서대신", + "시간": "19:18:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2290, + "역명": "서대신", + "시간": "20:21:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1309, + "역명": "서대신", + "시간": "22:14:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1025, + "역명": "서대신", + "시간": "07:56:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2060, + "역명": "서대신", + "시간": "08:57:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1089, + "역명": "서대신", + "시간": "10:51:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2118, + "역명": "서대신", + "시간": "11:51:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1151, + "역명": "서대신", + "시간": "13:49:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2178, + "역명": "서대신", + "시간": "14:50:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1215, + "역명": "서대신", + "시간": "16:45:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2244, + "역명": "서대신", + "시간": "17:49:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1271, + "역명": "서대신", + "시간": "19:42:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2296, + "역명": "서대신", + "시간": "20:45:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 27, + "열번": 1315, + "역명": "서대신", + "시간": "22:42:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 28, + "열번": 1029, + "역명": "서대신", + "시간": "08:06:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2064, + "역명": "서대신", + "시간": "09:09:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1093, + "역명": "서대신", + "시간": "11:03:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2122, + "역명": "서대신", + "시간": "12:03:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1155, + "역명": "서대신", + "시간": "14:00:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2182, + "역명": "서대신", + "시간": "15:01:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1219, + "역명": "서대신", + "시간": "16:56:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1035, + "역명": "서대신", + "시간": "08:21:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2068, + "역명": "서대신", + "시간": "09:21:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1097, + "역명": "서대신", + "시간": "11:15:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2126, + "역명": "서대신", + "시간": "12:15:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1159, + "역명": "서대신", + "시간": "14:11:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2186, + "역명": "서대신", + "시간": "15:12:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1223, + "역명": "서대신", + "시간": "17:07:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 29, + "열번": 2250, + "역명": "서대신", + "시간": "18:07:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1031, + "역명": "서대신", + "시간": "08:11:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1037, + "역명": "서대신", + "시간": "08:26:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2070, + "역명": "서대신", + "시간": "09:27:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1099, + "역명": "서대신", + "시간": "11:21:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2128, + "역명": "서대신", + "시간": "12:21:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1161, + "역명": "서대신", + "시간": "14:16:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2188, + "역명": "서대신", + "시간": "15:18:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1225, + "역명": "서대신", + "시간": "17:12:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2252, + "역명": "서대신", + "시간": "18:13:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1277, + "역명": "서대신", + "시간": "20:06:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2302, + "역명": "서대신", + "시간": "21:09:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1319, + "역명": "서대신", + "시간": "23:02:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 32, + "열번": 1041, + "역명": "서대신", + "시간": "08:36:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1045, + "역명": "서대신", + "시간": "08:46:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2076, + "역명": "서대신", + "시간": "09:45:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1105, + "역명": "서대신", + "시간": "11:39:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2134, + "역명": "서대신", + "시간": "12:39:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1167, + "역명": "서대신", + "시간": "14:33:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2194, + "역명": "서대신", + "시간": "15:34:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1231, + "역명": "서대신", + "시간": "17:29:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 33, + "열번": 2258, + "역명": "서대신", + "시간": "18:31:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 34, + "열번": 8904, + "역명": "서대신", + "시간": "13:39:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1189, + "역명": "서대신", + "시간": "15:33:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 34, + "열번": 2216, + "역명": "서대신", + "시간": "16:35:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1251, + "역명": "서대신", + "시간": "18:28:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 34, + "열번": 2276, + "역명": "서대신", + "시간": "19:27:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1297, + "역명": "서대신", + "시간": "21:26:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1047, + "역명": "서대신", + "시간": "08:51:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2078, + "역명": "서대신", + "시간": "09:51:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1107, + "역명": "서대신", + "시간": "11:45:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2136, + "역명": "서대신", + "시간": "12:45:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1169, + "역명": "서대신", + "시간": "14:38:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2196, + "역명": "서대신", + "시간": "15:40:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1233, + "역명": "서대신", + "시간": "17:34:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2260, + "역명": "서대신", + "시간": "18:37:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1283, + "역명": "서대신", + "시간": "20:30:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2308, + "역명": "서대신", + "시간": "21:34:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1325, + "역명": "서대신", + "시간": "23:34:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 36, + "열번": 2226, + "역명": "서대신", + "시간": "17:00:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1259, + "역명": "서대신", + "시간": "18:56:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 36, + "열번": 2284, + "역명": "서대신", + "시간": "19:57:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1303, + "역명": "서대신", + "시간": "21:50:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1127, + "역명": "서대신", + "시간": "12:43:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2154, + "역명": "서대신", + "시간": "13:44:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1191, + "역명": "서대신", + "시간": "15:39:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2218, + "역명": "서대신", + "시간": "16:40:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1253, + "역명": "서대신", + "시간": "18:35:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 37, + "열번": 2278, + "역명": "서대신", + "시간": "19:34:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 39, + "열번": 1149, + "역명": "서대신", + "시간": "13:43:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2176, + "역명": "서대신", + "시간": "14:45:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1213, + "역명": "서대신", + "시간": "16:39:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 39, + "열번": 2242, + "역명": "서대신", + "시간": "17:43:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 41, + "열번": 1175, + "역명": "서대신", + "시간": "14:55:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2202, + "역명": "서대신", + "시간": "15:56:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1239, + "역명": "서대신", + "시간": "17:51:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2266, + "역명": "서대신", + "시간": "18:55:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1289, + "역명": "서대신", + "시간": "20:54:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2312, + "역명": "서대신", + "시간": "21:54:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1327, + "역명": "서대신", + "시간": "23:46:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "대티", + "시간": "05:27:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "대티", + "시간": "07:26:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2050, + "역명": "대티", + "시간": "08:27:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "대티", + "시간": "05:11:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "대티", + "시간": "07:17:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "대티", + "시간": "08:17:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1077, + "역명": "대티", + "시간": "10:17:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2106, + "역명": "대티", + "시간": "11:13:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1137, + "역명": "대티", + "시간": "13:12:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2164, + "역명": "대티", + "시간": "14:09:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1201, + "역명": "대티", + "시간": "16:08:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2230, + "역명": "대티", + "시간": "17:08:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1261, + "역명": "대티", + "시간": "19:05:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2286, + "역명": "대티", + "시간": "20:03:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1305, + "역명": "대티", + "시간": "22:00:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 2, + "열번": 2324, + "역명": "대티", + "시간": "22:56:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "대티", + "시간": "05:41:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "대티", + "시간": "07:44:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2056, + "역명": "대티", + "시간": "08:43:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1085, + "역명": "대티", + "시간": "10:41:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2114, + "역명": "대티", + "시간": "11:37:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1145, + "역명": "대티", + "시간": "13:34:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2172, + "역명": "대티", + "시간": "14:31:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1209, + "역명": "대티", + "시간": "16:30:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2238, + "역명": "대티", + "시간": "17:29:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "대티", + "시간": "05:53:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1023, + "역명": "대티", + "시간": "07:51:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2058, + "역명": "대티", + "시간": "08:49:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1087, + "역명": "대티", + "시간": "10:47:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2116, + "역명": "대티", + "시간": "11:43:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1147, + "역명": "대티", + "시간": "13:40:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2174, + "역명": "대티", + "시간": "14:37:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1211, + "역명": "대티", + "시간": "16:36:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2240, + "역명": "대티", + "시간": "17:35:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1269, + "역명": "대티", + "시간": "19:36:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2294, + "역명": "대티", + "시간": "20:35:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1313, + "역명": "대티", + "시간": "22:34:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2330, + "역명": "대티", + "시간": "23:34:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 5, + "열번": 1001, + "역명": "대티", + "시간": "06:04:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2018, + "역명": "대티", + "시간": "07:01:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1051, + "역명": "대티", + "시간": "09:03:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2082, + "역명": "대티", + "시간": "10:01:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1111, + "역명": "대티", + "시간": "11:59:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2140, + "역명": "대티", + "시간": "12:55:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1173, + "역명": "대티", + "시간": "14:51:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2200, + "역명": "대티", + "시간": "15:48:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1237, + "역명": "대티", + "시간": "17:47:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2264, + "역명": "대티", + "시간": "18:47:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1287, + "역명": "대티", + "시간": "20:48:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2310, + "역명": "대티", + "시간": "21:42:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2008, + "역명": "대티", + "시간": "06:05:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1027, + "역명": "대티", + "시간": "08:03:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2062, + "역명": "대티", + "시간": "09:01:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1091, + "역명": "대티", + "시간": "10:59:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2120, + "역명": "대티", + "시간": "11:55:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1153, + "역명": "대티", + "시간": "13:56:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2180, + "역명": "대티", + "시간": "14:53:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1217, + "역명": "대티", + "시간": "16:52:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2246, + "역명": "대티", + "시간": "17:53:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1273, + "역명": "대티", + "시간": "19:52:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2298, + "역명": "대티", + "시간": "20:51:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1317, + "역명": "대티", + "시간": "22:54:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1003, + "역명": "대티", + "시간": "06:12:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2020, + "역명": "대티", + "시간": "07:10:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1053, + "역명": "대티", + "시간": "09:08:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2084, + "역명": "대티", + "시간": "10:07:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1113, + "역명": "대티", + "시간": "12:05:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2142, + "역명": "대티", + "시간": "13:01:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1177, + "역명": "대티", + "시간": "15:02:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2204, + "역명": "대티", + "시간": "15:59:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1241, + "역명": "대티", + "시간": "17:59:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2268, + "역명": "대티", + "시간": "18:59:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1291, + "역명": "대티", + "시간": "21:04:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2314, + "역명": "대티", + "시간": "22:02:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 7, + "열번": 1329, + "역명": "대티", + "시간": "00:00:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2010, + "역명": "대티", + "시간": "06:17:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1033, + "역명": "대티", + "시간": "08:18:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2066, + "역명": "대티", + "시간": "09:13:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1095, + "역명": "대티", + "시간": "11:11:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2124, + "역명": "대티", + "시간": "12:07:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1157, + "역명": "대티", + "시간": "14:07:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2184, + "역명": "대티", + "시간": "15:04:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1221, + "역명": "대티", + "시간": "17:03:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2248, + "역명": "대티", + "시간": "17:59:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1275, + "역명": "대티", + "시간": "20:00:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 8, + "열번": 2300, + "역명": "대티", + "시간": "20:59:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 9, + "열번": 2022, + "역명": "대티", + "시간": "07:16:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1055, + "역명": "대티", + "시간": "09:13:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2086, + "역명": "대티", + "시간": "10:13:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1115, + "역명": "대티", + "시간": "12:11:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2144, + "역명": "대티", + "시간": "13:07:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1179, + "역명": "대티", + "시간": "15:08:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2206, + "역명": "대티", + "시간": "16:05:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1243, + "역명": "대티", + "시간": "18:05:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 9, + "열번": 2270, + "역명": "대티", + "시간": "19:05:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2012, + "역명": "대티", + "시간": "06:29:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1039, + "역명": "대티", + "시간": "08:33:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2072, + "역명": "대티", + "시간": "09:31:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1101, + "역명": "대티", + "시간": "11:29:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2130, + "역명": "대티", + "시간": "12:25:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1163, + "역명": "대티", + "시간": "14:24:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2190, + "역명": "대티", + "시간": "15:21:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1227, + "역명": "대티", + "시간": "17:20:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2254, + "역명": "대티", + "시간": "18:17:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1279, + "역명": "대티", + "시간": "20:16:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2304, + "역명": "대티", + "시간": "21:15:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1321, + "역명": "대티", + "시간": "23:14:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 11, + "열번": 1005, + "역명": "대티", + "시간": "06:23:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2024, + "역명": "대티", + "시간": "07:22:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1057, + "역명": "대티", + "시간": "09:18:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2088, + "역명": "대티", + "시간": "10:19:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1117, + "역명": "대티", + "시간": "12:17:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2146, + "역명": "대티", + "시간": "13:13:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1181, + "역명": "대티", + "시간": "15:13:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2208, + "역명": "대티", + "시간": "16:10:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1245, + "역명": "대티", + "시간": "18:11:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2272, + "역명": "대티", + "시간": "19:11:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1293, + "역명": "대티", + "시간": "21:12:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2316, + "역명": "대티", + "시간": "22:12:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 11, + "열번": 1331, + "역명": "대티", + "시간": "00:11:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2014, + "역명": "대티", + "시간": "06:41:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1043, + "역명": "대티", + "시간": "08:43:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2074, + "역명": "대티", + "시간": "09:37:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1103, + "역명": "대티", + "시간": "11:35:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2132, + "역명": "대티", + "시간": "12:31:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1165, + "역명": "대티", + "시간": "14:29:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "대티", + "시간": "15:26:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1229, + "역명": "대티", + "시간": "17:25:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2256, + "역명": "대티", + "시간": "18:23:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1281, + "역명": "대티", + "시간": "20:24:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2306, + "역명": "대티", + "시간": "21:23:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1323, + "역명": "대티", + "시간": "23:25:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1009, + "역명": "대티", + "시간": "06:45:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2032, + "역명": "대티", + "시간": "07:42:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1065, + "역명": "대티", + "시간": "09:41:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2094, + "역명": "대티", + "시간": "10:37:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1123, + "역명": "대티", + "시간": "12:34:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2152, + "역명": "대티", + "시간": "13:31:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1187, + "역명": "대티", + "시간": "15:30:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 13, + "열번": 2214, + "역명": "대티", + "시간": "16:27:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2016, + "역명": "대티", + "시간": "06:52:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1049, + "역명": "대티", + "시간": "08:58:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2080, + "역명": "대티", + "시간": "09:55:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1109, + "역명": "대티", + "시간": "11:53:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2138, + "역명": "대티", + "시간": "12:49:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1171, + "역명": "대티", + "시간": "14:46:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2198, + "역명": "대티", + "시간": "15:43:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1235, + "역명": "대티", + "시간": "17:42:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2262, + "역명": "대티", + "시간": "18:41:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1285, + "역명": "대티", + "시간": "20:40:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1011, + "역명": "대티", + "시간": "06:56:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2036, + "역명": "대티", + "시간": "07:52:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1069, + "역명": "대티", + "시간": "09:53:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2098, + "역명": "대티", + "시간": "10:49:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1129, + "역명": "대티", + "시간": "12:50:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2156, + "역명": "대티", + "시간": "13:47:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1193, + "역명": "대티", + "시간": "15:46:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2220, + "역명": "대티", + "시간": "16:43:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1255, + "역명": "대티", + "시간": "18:44:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2280, + "역명": "대티", + "시간": "19:39:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1299, + "역명": "대티", + "시간": "21:36:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2320, + "역명": "대티", + "시간": "22:32:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2026, + "역명": "대티", + "시간": "07:27:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 16, + "열번": 1059, + "역명": "대티", + "시간": "09:23:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2038, + "역명": "대티", + "시간": "07:57:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 18, + "열번": 1007, + "역명": "대티", + "시간": "06:34:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2028, + "역명": "대티", + "시간": "07:32:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1061, + "역명": "대티", + "시간": "09:29:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2090, + "역명": "대티", + "시간": "10:25:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1119, + "역명": "대티", + "시간": "12:23:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2148, + "역명": "대티", + "시간": "13:19:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1183, + "역명": "대티", + "시간": "15:19:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2210, + "역명": "대티", + "시간": "16:16:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1247, + "역명": "대티", + "시간": "18:17:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2040, + "역명": "대티", + "시간": "08:02:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1071, + "역명": "대티", + "시간": "09:59:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2100, + "역명": "대티", + "시간": "10:55:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1131, + "역명": "대티", + "시간": "12:56:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2158, + "역명": "대티", + "시간": "13:53:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1195, + "역명": "대티", + "시간": "15:52:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2222, + "역명": "대티", + "시간": "16:48:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2030, + "역명": "대티", + "시간": "07:37:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1063, + "역명": "대티", + "시간": "09:35:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2092, + "역명": "대티", + "시간": "10:31:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1121, + "역명": "대티", + "시간": "12:28:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2150, + "역명": "대티", + "시간": "13:25:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1185, + "역명": "대티", + "시간": "15:24:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2212, + "역명": "대티", + "시간": "16:21:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1249, + "역명": "대티", + "시간": "18:23:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2274, + "역명": "대티", + "시간": "19:18:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1295, + "역명": "대티", + "시간": "21:20:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2318, + "역명": "대티", + "시간": "22:22:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 20, + "열번": 7931, + "역명": "대티", + "시간": "00:27:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 21, + "열번": 1013, + "역명": "대티", + "시간": "07:07:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2042, + "역명": "대티", + "시간": "08:07:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1073, + "역명": "대티", + "시간": "10:05:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2102, + "역명": "대티", + "시간": "11:01:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1133, + "역명": "대티", + "시간": "13:01:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2160, + "역명": "대티", + "시간": "13:58:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1197, + "역명": "대티", + "시간": "15:57:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2224, + "역명": "대티", + "시간": "16:53:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1257, + "역명": "대티", + "시간": "18:51:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2282, + "역명": "대티", + "시간": "19:47:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1301, + "역명": "대티", + "시간": "21:44:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2322, + "역명": "대티", + "시간": "22:44:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2034, + "역명": "대티", + "시간": "07:47:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1067, + "역명": "대티", + "시간": "09:47:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2096, + "역명": "대티", + "시간": "10:43:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1125, + "역명": "대티", + "시간": "12:39:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2044, + "역명": "대티", + "시간": "08:12:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1075, + "역명": "대티", + "시간": "10:11:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2104, + "역명": "대티", + "시간": "11:07:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1135, + "역명": "대티", + "시간": "13:07:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2162, + "역명": "대티", + "시간": "14:04:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1199, + "역명": "대티", + "시간": "16:03:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2228, + "역명": "대티", + "시간": "17:03:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "대티", + "시간": "08:22:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1079, + "역명": "대티", + "시간": "10:23:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2108, + "역명": "대티", + "시간": "11:19:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1139, + "역명": "대티", + "시간": "13:18:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2166, + "역명": "대티", + "시간": "14:15:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1203, + "역명": "대티", + "시간": "16:14:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2232, + "역명": "대티", + "시간": "17:13:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1263, + "역명": "대티", + "시간": "19:12:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2288, + "역명": "대티", + "시간": "20:11:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1307, + "역명": "대티", + "시간": "22:08:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 24, + "열번": 2326, + "역명": "대티", + "시간": "23:08:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "대티", + "시간": "07:35:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2054, + "역명": "대티", + "시간": "08:37:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1083, + "역명": "대티", + "시간": "10:35:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2112, + "역명": "대티", + "시간": "11:31:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1143, + "역명": "대티", + "시간": "13:29:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2170, + "역명": "대티", + "시간": "14:26:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1207, + "역명": "대티", + "시간": "16:25:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2236, + "역명": "대티", + "시간": "17:23:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1267, + "역명": "대티", + "시간": "19:28:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2292, + "역명": "대티", + "시간": "20:27:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1311, + "역명": "대티", + "시간": "22:24:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2328, + "역명": "대티", + "시간": "23:18:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2052, + "역명": "대티", + "시간": "08:32:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1081, + "역명": "대티", + "시간": "10:29:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2110, + "역명": "대티", + "시간": "11:25:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1141, + "역명": "대티", + "시간": "13:23:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2168, + "역명": "대티", + "시간": "14:20:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1205, + "역명": "대티", + "시간": "16:19:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2234, + "역명": "대티", + "시간": "17:18:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1265, + "역명": "대티", + "시간": "19:20:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2290, + "역명": "대티", + "시간": "20:19:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1309, + "역명": "대티", + "시간": "22:16:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1025, + "역명": "대티", + "시간": "07:58:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2060, + "역명": "대티", + "시간": "08:55:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1089, + "역명": "대티", + "시간": "10:53:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2118, + "역명": "대티", + "시간": "11:49:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1151, + "역명": "대티", + "시간": "13:51:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2178, + "역명": "대티", + "시간": "14:48:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1215, + "역명": "대티", + "시간": "16:47:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2244, + "역명": "대티", + "시간": "17:47:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1271, + "역명": "대티", + "시간": "19:44:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2296, + "역명": "대티", + "시간": "20:43:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 27, + "열번": 1315, + "역명": "대티", + "시간": "22:44:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 28, + "열번": 1029, + "역명": "대티", + "시간": "08:08:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2064, + "역명": "대티", + "시간": "09:07:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1093, + "역명": "대티", + "시간": "11:05:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2122, + "역명": "대티", + "시간": "12:01:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1155, + "역명": "대티", + "시간": "14:02:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2182, + "역명": "대티", + "시간": "14:59:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1219, + "역명": "대티", + "시간": "16:58:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1035, + "역명": "대티", + "시간": "08:23:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2068, + "역명": "대티", + "시간": "09:19:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1097, + "역명": "대티", + "시간": "11:17:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2126, + "역명": "대티", + "시간": "12:13:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1159, + "역명": "대티", + "시간": "14:13:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2186, + "역명": "대티", + "시간": "15:10:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1223, + "역명": "대티", + "시간": "17:09:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 29, + "열번": 2250, + "역명": "대티", + "시간": "18:05:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1031, + "역명": "대티", + "시간": "08:13:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1037, + "역명": "대티", + "시간": "08:28:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2070, + "역명": "대티", + "시간": "09:25:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1099, + "역명": "대티", + "시간": "11:23:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2128, + "역명": "대티", + "시간": "12:19:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1161, + "역명": "대티", + "시간": "14:18:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2188, + "역명": "대티", + "시간": "15:15:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1225, + "역명": "대티", + "시간": "17:14:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2252, + "역명": "대티", + "시간": "18:11:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1277, + "역명": "대티", + "시간": "20:08:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2302, + "역명": "대티", + "시간": "21:07:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1319, + "역명": "대티", + "시간": "23:04:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 32, + "열번": 1041, + "역명": "대티", + "시간": "08:38:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1045, + "역명": "대티", + "시간": "08:48:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2076, + "역명": "대티", + "시간": "09:43:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1105, + "역명": "대티", + "시간": "11:41:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2134, + "역명": "대티", + "시간": "12:37:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1167, + "역명": "대티", + "시간": "14:35:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2194, + "역명": "대티", + "시간": "15:32:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1231, + "역명": "대티", + "시간": "17:31:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 33, + "열번": 2258, + "역명": "대티", + "시간": "18:29:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 34, + "열번": 8904, + "역명": "대티", + "시간": "13:36:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1189, + "역명": "대티", + "시간": "15:35:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 34, + "열번": 2216, + "역명": "대티", + "시간": "16:32:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1251, + "역명": "대티", + "시간": "18:30:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 34, + "열번": 2276, + "역명": "대티", + "시간": "19:25:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1297, + "역명": "대티", + "시간": "21:28:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1047, + "역명": "대티", + "시간": "08:53:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2078, + "역명": "대티", + "시간": "09:49:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1107, + "역명": "대티", + "시간": "11:47:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2136, + "역명": "대티", + "시간": "12:43:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1169, + "역명": "대티", + "시간": "14:40:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2196, + "역명": "대티", + "시간": "15:37:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1233, + "역명": "대티", + "시간": "17:36:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2260, + "역명": "대티", + "시간": "18:35:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1283, + "역명": "대티", + "시간": "20:32:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2308, + "역명": "대티", + "시간": "21:32:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1325, + "역명": "대티", + "시간": "23:36:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 36, + "열번": 2226, + "역명": "대티", + "시간": "16:58:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1259, + "역명": "대티", + "시간": "18:58:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 36, + "열번": 2284, + "역명": "대티", + "시간": "19:55:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1303, + "역명": "대티", + "시간": "21:52:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1127, + "역명": "대티", + "시간": "12:45:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2154, + "역명": "대티", + "시간": "13:42:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1191, + "역명": "대티", + "시간": "15:41:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2218, + "역명": "대티", + "시간": "16:38:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1253, + "역명": "대티", + "시간": "18:37:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 37, + "열번": 2278, + "역명": "대티", + "시간": "19:32:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 39, + "열번": 1149, + "역명": "대티", + "시간": "13:45:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2176, + "역명": "대티", + "시간": "14:42:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1213, + "역명": "대티", + "시간": "16:41:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 39, + "열번": 2242, + "역명": "대티", + "시간": "17:41:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 41, + "열번": 1175, + "역명": "대티", + "시간": "14:57:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2202, + "역명": "대티", + "시간": "15:54:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1239, + "역명": "대티", + "시간": "17:53:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2266, + "역명": "대티", + "시간": "18:53:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1289, + "역명": "대티", + "시간": "20:56:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2312, + "역명": "대티", + "시간": "21:52:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1327, + "역명": "대티", + "시간": "23:48:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "괴정", + "시간": "05:26:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "괴정", + "시간": "07:28:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2050, + "역명": "괴정", + "시간": "08:25:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "괴정", + "시간": "05:10:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "괴정", + "시간": "07:19:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "괴정", + "시간": "08:15:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1077, + "역명": "괴정", + "시간": "10:18:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2106, + "역명": "괴정", + "시간": "11:11:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1137, + "역명": "괴정", + "시간": "13:14:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2164, + "역명": "괴정", + "시간": "14:08:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1201, + "역명": "괴정", + "시간": "16:10:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2230, + "역명": "괴정", + "시간": "17:06:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1261, + "역명": "괴정", + "시간": "19:06:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2286, + "역명": "괴정", + "시간": "20:01:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1305, + "역명": "괴정", + "시간": "22:01:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 2, + "열번": 2324, + "역명": "괴정", + "시간": "22:54:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "괴정", + "시간": "05:39:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "괴정", + "시간": "07:46:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2056, + "역명": "괴정", + "시간": "08:41:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1085, + "역명": "괴정", + "시간": "10:42:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2114, + "역명": "괴정", + "시간": "11:35:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1145, + "역명": "괴정", + "시간": "13:36:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2172, + "역명": "괴정", + "시간": "14:30:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1209, + "역명": "괴정", + "시간": "16:32:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2238, + "역명": "괴정", + "시간": "17:27:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "괴정", + "시간": "05:52:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1023, + "역명": "괴정", + "시간": "07:53:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2058, + "역명": "괴정", + "시간": "08:47:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1087, + "역명": "괴정", + "시간": "10:48:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2116, + "역명": "괴정", + "시간": "11:41:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1147, + "역명": "괴정", + "시간": "13:41:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2174, + "역명": "괴정", + "시간": "14:35:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1211, + "역명": "괴정", + "시간": "16:37:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2240, + "역명": "괴정", + "시간": "17:33:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1269, + "역명": "괴정", + "시간": "19:37:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2294, + "역명": "괴정", + "시간": "20:33:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1313, + "역명": "괴정", + "시간": "22:35:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2330, + "역명": "괴정", + "시간": "23:32:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 5, + "열번": 1001, + "역명": "괴정", + "시간": "06:06:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2018, + "역명": "괴정", + "시간": "07:00:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1051, + "역명": "괴정", + "시간": "09:04:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2082, + "역명": "괴정", + "시간": "09:59:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1111, + "역명": "괴정", + "시간": "12:00:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2140, + "역명": "괴정", + "시간": "12:53:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1173, + "역명": "괴정", + "시간": "14:53:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2200, + "역명": "괴정", + "시간": "15:47:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1237, + "역명": "괴정", + "시간": "17:49:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2264, + "역명": "괴정", + "시간": "18:45:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1287, + "역명": "괴정", + "시간": "20:49:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2310, + "역명": "괴정", + "시간": "21:40:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2008, + "역명": "괴정", + "시간": "06:04:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1027, + "역명": "괴정", + "시간": "08:04:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2062, + "역명": "괴정", + "시간": "08:59:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1091, + "역명": "괴정", + "시간": "11:00:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2120, + "역명": "괴정", + "시간": "11:53:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1153, + "역명": "괴정", + "시간": "13:58:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2180, + "역명": "괴정", + "시간": "14:52:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1217, + "역명": "괴정", + "시간": "16:54:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2246, + "역명": "괴정", + "시간": "17:51:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1273, + "역명": "괴정", + "시간": "19:53:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2298, + "역명": "괴정", + "시간": "20:49:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1317, + "역명": "괴정", + "시간": "22:55:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1003, + "역명": "괴정", + "시간": "06:14:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2020, + "역명": "괴정", + "시간": "07:08:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1053, + "역명": "괴정", + "시간": "09:09:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2084, + "역명": "괴정", + "시간": "10:05:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1113, + "역명": "괴정", + "시간": "12:06:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2142, + "역명": "괴정", + "시간": "12:59:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1177, + "역명": "괴정", + "시간": "15:04:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2204, + "역명": "괴정", + "시간": "15:58:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1241, + "역명": "괴정", + "시간": "18:00:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2268, + "역명": "괴정", + "시간": "18:57:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1291, + "역명": "괴정", + "시간": "21:05:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2314, + "역명": "괴정", + "시간": "22:00:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 7, + "열번": 1329, + "역명": "괴정", + "시간": "00:01:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2010, + "역명": "괴정", + "시간": "06:16:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1033, + "역명": "괴정", + "시간": "08:19:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2066, + "역명": "괴정", + "시간": "09:11:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1095, + "역명": "괴정", + "시간": "11:12:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2124, + "역명": "괴정", + "시간": "12:05:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1157, + "역명": "괴정", + "시간": "14:09:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2184, + "역명": "괴정", + "시간": "15:03:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1221, + "역명": "괴정", + "시간": "17:05:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2248, + "역명": "괴정", + "시간": "17:57:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1275, + "역명": "괴정", + "시간": "20:01:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 8, + "열번": 2300, + "역명": "괴정", + "시간": "20:57:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 9, + "열번": 2022, + "역명": "괴정", + "시간": "07:14:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1055, + "역명": "괴정", + "시간": "09:14:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2086, + "역명": "괴정", + "시간": "10:11:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1115, + "역명": "괴정", + "시간": "12:12:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2144, + "역명": "괴정", + "시간": "13:05:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1179, + "역명": "괴정", + "시간": "15:09:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2206, + "역명": "괴정", + "시간": "16:03:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1243, + "역명": "괴정", + "시간": "18:06:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 9, + "열번": 2270, + "역명": "괴정", + "시간": "19:03:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2012, + "역명": "괴정", + "시간": "06:28:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1039, + "역명": "괴정", + "시간": "08:34:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2072, + "역명": "괴정", + "시간": "09:29:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1101, + "역명": "괴정", + "시간": "11:30:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2130, + "역명": "괴정", + "시간": "12:23:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1163, + "역명": "괴정", + "시간": "14:25:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2190, + "역명": "괴정", + "시간": "15:19:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1227, + "역명": "괴정", + "시간": "17:21:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2254, + "역명": "괴정", + "시간": "18:15:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1279, + "역명": "괴정", + "시간": "20:17:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2304, + "역명": "괴정", + "시간": "21:13:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1321, + "역명": "괴정", + "시간": "23:15:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 11, + "열번": 1005, + "역명": "괴정", + "시간": "06:25:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2024, + "역명": "괴정", + "시간": "07:20:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1057, + "역명": "괴정", + "시간": "09:19:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2088, + "역명": "괴정", + "시간": "10:17:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1117, + "역명": "괴정", + "시간": "12:18:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2146, + "역명": "괴정", + "시간": "13:11:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1181, + "역명": "괴정", + "시간": "15:15:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2208, + "역명": "괴정", + "시간": "16:09:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1245, + "역명": "괴정", + "시간": "18:12:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2272, + "역명": "괴정", + "시간": "19:09:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1293, + "역명": "괴정", + "시간": "21:13:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2316, + "역명": "괴정", + "시간": "22:10:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 11, + "열번": 1331, + "역명": "괴정", + "시간": "00:13:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2014, + "역명": "괴정", + "시간": "06:40:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1043, + "역명": "괴정", + "시간": "08:44:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2074, + "역명": "괴정", + "시간": "09:35:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1103, + "역명": "괴정", + "시간": "11:36:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2132, + "역명": "괴정", + "시간": "12:29:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1165, + "역명": "괴정", + "시간": "14:31:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "괴정", + "시간": "15:25:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1229, + "역명": "괴정", + "시간": "17:27:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2256, + "역명": "괴정", + "시간": "18:21:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1281, + "역명": "괴정", + "시간": "20:25:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2306, + "역명": "괴정", + "시간": "21:21:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1323, + "역명": "괴정", + "시간": "23:26:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1009, + "역명": "괴정", + "시간": "06:47:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2032, + "역명": "괴정", + "시간": "07:40:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1065, + "역명": "괴정", + "시간": "09:42:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2094, + "역명": "괴정", + "시간": "10:35:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1123, + "역명": "괴정", + "시간": "12:35:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2152, + "역명": "괴정", + "시간": "13:29:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1187, + "역명": "괴정", + "시간": "15:31:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 13, + "열번": 2214, + "역명": "괴정", + "시간": "16:25:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2016, + "역명": "괴정", + "시간": "06:51:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1049, + "역명": "괴정", + "시간": "08:59:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2080, + "역명": "괴정", + "시간": "09:53:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1109, + "역명": "괴정", + "시간": "11:54:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2138, + "역명": "괴정", + "시간": "12:47:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1171, + "역명": "괴정", + "시간": "14:47:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2198, + "역명": "괴정", + "시간": "15:41:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1235, + "역명": "괴정", + "시간": "17:43:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2262, + "역명": "괴정", + "시간": "18:39:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1285, + "역명": "괴정", + "시간": "20:41:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1011, + "역명": "괴정", + "시간": "06:58:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2036, + "역명": "괴정", + "시간": "07:50:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1069, + "역명": "괴정", + "시간": "09:54:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2098, + "역명": "괴정", + "시간": "10:47:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1129, + "역명": "괴정", + "시간": "12:52:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2156, + "역명": "괴정", + "시간": "13:46:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1193, + "역명": "괴정", + "시간": "15:48:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2220, + "역명": "괴정", + "시간": "16:41:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1255, + "역명": "괴정", + "시간": "18:45:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2280, + "역명": "괴정", + "시간": "19:37:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1299, + "역명": "괴정", + "시간": "21:37:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2320, + "역명": "괴정", + "시간": "22:30:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2026, + "역명": "괴정", + "시간": "07:25:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 16, + "열번": 1059, + "역명": "괴정", + "시간": "09:24:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2038, + "역명": "괴정", + "시간": "07:55:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 18, + "열번": 1007, + "역명": "괴정", + "시간": "06:36:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2028, + "역명": "괴정", + "시간": "07:30:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1061, + "역명": "괴정", + "시간": "09:30:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2090, + "역명": "괴정", + "시간": "10:23:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1119, + "역명": "괴정", + "시간": "12:24:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2148, + "역명": "괴정", + "시간": "13:17:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1183, + "역명": "괴정", + "시간": "15:20:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2210, + "역명": "괴정", + "시간": "16:14:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1247, + "역명": "괴정", + "시간": "18:18:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2040, + "역명": "괴정", + "시간": "08:00:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1071, + "역명": "괴정", + "시간": "10:00:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2100, + "역명": "괴정", + "시간": "10:53:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1131, + "역명": "괴정", + "시간": "12:57:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2158, + "역명": "괴정", + "시간": "13:51:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1195, + "역명": "괴정", + "시간": "15:53:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2222, + "역명": "괴정", + "시간": "16:46:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2030, + "역명": "괴정", + "시간": "07:35:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1063, + "역명": "괴정", + "시간": "09:36:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2092, + "역명": "괴정", + "시간": "10:29:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1121, + "역명": "괴정", + "시간": "12:30:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2150, + "역명": "괴정", + "시간": "13:23:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1185, + "역명": "괴정", + "시간": "15:26:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2212, + "역명": "괴정", + "시간": "16:20:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1249, + "역명": "괴정", + "시간": "18:24:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2274, + "역명": "괴정", + "시간": "19:16:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1295, + "역명": "괴정", + "시간": "21:21:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2318, + "역명": "괴정", + "시간": "22:20:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 20, + "열번": 7931, + "역명": "괴정", + "시간": "00:29:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 21, + "열번": 1013, + "역명": "괴정", + "시간": "07:09:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2042, + "역명": "괴정", + "시간": "08:05:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1073, + "역명": "괴정", + "시간": "10:06:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2102, + "역명": "괴정", + "시간": "10:59:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1133, + "역명": "괴정", + "시간": "13:03:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2160, + "역명": "괴정", + "시간": "13:57:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1197, + "역명": "괴정", + "시간": "15:59:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2224, + "역명": "괴정", + "시간": "16:51:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1257, + "역명": "괴정", + "시간": "18:52:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2282, + "역명": "괴정", + "시간": "19:45:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1301, + "역명": "괴정", + "시간": "21:45:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2322, + "역명": "괴정", + "시간": "22:42:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2034, + "역명": "괴정", + "시간": "07:45:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1067, + "역명": "괴정", + "시간": "09:48:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2096, + "역명": "괴정", + "시간": "10:41:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1125, + "역명": "괴정", + "시간": "12:41:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2044, + "역명": "괴정", + "시간": "08:10:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1075, + "역명": "괴정", + "시간": "10:12:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2104, + "역명": "괴정", + "시간": "11:05:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1135, + "역명": "괴정", + "시간": "13:08:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2162, + "역명": "괴정", + "시간": "14:02:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1199, + "역명": "괴정", + "시간": "16:04:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2228, + "역명": "괴정", + "시간": "17:01:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "괴정", + "시간": "08:20:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1079, + "역명": "괴정", + "시간": "10:24:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2108, + "역명": "괴정", + "시간": "11:17:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1139, + "역명": "괴정", + "시간": "13:19:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2166, + "역명": "괴정", + "시간": "14:13:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1203, + "역명": "괴정", + "시간": "16:15:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2232, + "역명": "괴정", + "시간": "17:11:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1263, + "역명": "괴정", + "시간": "19:13:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2288, + "역명": "괴정", + "시간": "20:09:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1307, + "역명": "괴정", + "시간": "22:09:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 24, + "열번": 2326, + "역명": "괴정", + "시간": "23:06:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "괴정", + "시간": "07:37:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2054, + "역명": "괴정", + "시간": "08:35:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1083, + "역명": "괴정", + "시간": "10:36:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2112, + "역명": "괴정", + "시간": "11:29:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1143, + "역명": "괴정", + "시간": "13:30:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2170, + "역명": "괴정", + "시간": "14:24:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1207, + "역명": "괴정", + "시간": "16:26:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2236, + "역명": "괴정", + "시간": "17:21:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1267, + "역명": "괴정", + "시간": "19:29:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2292, + "역명": "괴정", + "시간": "20:25:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1311, + "역명": "괴정", + "시간": "22:25:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2328, + "역명": "괴정", + "시간": "23:17:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2052, + "역명": "괴정", + "시간": "08:30:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1081, + "역명": "괴정", + "시간": "10:30:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2110, + "역명": "괴정", + "시간": "11:23:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1141, + "역명": "괴정", + "시간": "13:25:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2168, + "역명": "괴정", + "시간": "14:19:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1205, + "역명": "괴정", + "시간": "16:21:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2234, + "역명": "괴정", + "시간": "17:16:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1265, + "역명": "괴정", + "시간": "19:21:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2290, + "역명": "괴정", + "시간": "20:17:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1309, + "역명": "괴정", + "시간": "22:17:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1025, + "역명": "괴정", + "시간": "07:59:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2060, + "역명": "괴정", + "시간": "08:53:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1089, + "역명": "괴정", + "시간": "10:54:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2118, + "역명": "괴정", + "시간": "11:47:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1151, + "역명": "괴정", + "시간": "13:52:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2178, + "역명": "괴정", + "시간": "14:46:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1215, + "역명": "괴정", + "시간": "16:48:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2244, + "역명": "괴정", + "시간": "17:45:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1271, + "역명": "괴정", + "시간": "19:45:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2296, + "역명": "괴정", + "시간": "20:41:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 27, + "열번": 1315, + "역명": "괴정", + "시간": "22:45:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 28, + "열번": 1029, + "역명": "괴정", + "시간": "08:09:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2064, + "역명": "괴정", + "시간": "09:05:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1093, + "역명": "괴정", + "시간": "11:06:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2122, + "역명": "괴정", + "시간": "11:59:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1155, + "역명": "괴정", + "시간": "14:03:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2182, + "역명": "괴정", + "시간": "14:57:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1219, + "역명": "괴정", + "시간": "16:59:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1035, + "역명": "괴정", + "시간": "08:24:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2068, + "역명": "괴정", + "시간": "09:17:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1097, + "역명": "괴정", + "시간": "11:18:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2126, + "역명": "괴정", + "시간": "12:11:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1159, + "역명": "괴정", + "시간": "14:14:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2186, + "역명": "괴정", + "시간": "15:08:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1223, + "역명": "괴정", + "시간": "17:10:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 29, + "열번": 2250, + "역명": "괴정", + "시간": "18:03:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1031, + "역명": "괴정", + "시간": "08:14:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1037, + "역명": "괴정", + "시간": "08:29:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2070, + "역명": "괴정", + "시간": "09:23:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1099, + "역명": "괴정", + "시간": "11:24:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2128, + "역명": "괴정", + "시간": "12:17:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1161, + "역명": "괴정", + "시간": "14:20:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2188, + "역명": "괴정", + "시간": "15:14:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1225, + "역명": "괴정", + "시간": "17:16:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2252, + "역명": "괴정", + "시간": "18:09:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1277, + "역명": "괴정", + "시간": "20:09:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2302, + "역명": "괴정", + "시간": "21:05:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1319, + "역명": "괴정", + "시간": "23:05:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 32, + "열번": 1041, + "역명": "괴정", + "시간": "08:39:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1045, + "역명": "괴정", + "시간": "08:49:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2076, + "역명": "괴정", + "시간": "09:41:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1105, + "역명": "괴정", + "시간": "11:42:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2134, + "역명": "괴정", + "시간": "12:35:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1167, + "역명": "괴정", + "시간": "14:36:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2194, + "역명": "괴정", + "시간": "15:30:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1231, + "역명": "괴정", + "시간": "17:32:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 33, + "열번": 2258, + "역명": "괴정", + "시간": "18:27:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 34, + "열번": 8904, + "역명": "괴정", + "시간": "13:35:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1189, + "역명": "괴정", + "시간": "15:37:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 34, + "열번": 2216, + "역명": "괴정", + "시간": "16:31:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1251, + "역명": "괴정", + "시간": "18:31:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 34, + "열번": 2276, + "역명": "괴정", + "시간": "19:23:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1297, + "역명": "괴정", + "시간": "21:29:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1047, + "역명": "괴정", + "시간": "08:54:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2078, + "역명": "괴정", + "시간": "09:47:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1107, + "역명": "괴정", + "시간": "11:48:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2136, + "역명": "괴정", + "시간": "12:41:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1169, + "역명": "괴정", + "시간": "14:42:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2196, + "역명": "괴정", + "시간": "15:36:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1233, + "역명": "괴정", + "시간": "17:38:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2260, + "역명": "괴정", + "시간": "18:33:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1283, + "역명": "괴정", + "시간": "20:33:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2308, + "역명": "괴정", + "시간": "21:30:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1325, + "역명": "괴정", + "시간": "23:37:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 36, + "열번": 2226, + "역명": "괴정", + "시간": "16:56:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1259, + "역명": "괴정", + "시간": "18:59:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 36, + "열번": 2284, + "역명": "괴정", + "시간": "19:53:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1303, + "역명": "괴정", + "시간": "21:53:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1127, + "역명": "괴정", + "시간": "12:46:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2154, + "역명": "괴정", + "시간": "13:40:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1191, + "역명": "괴정", + "시간": "15:42:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2218, + "역명": "괴정", + "시간": "16:36:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1253, + "역명": "괴정", + "시간": "18:38:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 37, + "열번": 2278, + "역명": "괴정", + "시간": "19:30:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 39, + "열번": 1149, + "역명": "괴정", + "시간": "13:47:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2176, + "역명": "괴정", + "시간": "14:41:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1213, + "역명": "괴정", + "시간": "16:43:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 39, + "열번": 2242, + "역명": "괴정", + "시간": "17:39:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 41, + "열번": 1175, + "역명": "괴정", + "시간": "14:58:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2202, + "역명": "괴정", + "시간": "15:52:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1239, + "역명": "괴정", + "시간": "17:54:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2266, + "역명": "괴정", + "시간": "18:51:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1289, + "역명": "괴정", + "시간": "20:57:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2312, + "역명": "괴정", + "시간": "21:50:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1327, + "역명": "괴정", + "시간": "23:49:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "사하", + "시간": "05:24:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "사하", + "시간": "07:30:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2050, + "역명": "사하", + "시간": "08:24:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "사하", + "시간": "05:08:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "사하", + "시간": "07:21:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "사하", + "시간": "08:14:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1077, + "역명": "사하", + "시간": "10:20:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2106, + "역명": "사하", + "시간": "11:10:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1137, + "역명": "사하", + "시간": "13:16:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2164, + "역명": "사하", + "시간": "14:06:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1201, + "역명": "사하", + "시간": "16:12:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2230, + "역명": "사하", + "시간": "17:05:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1261, + "역명": "사하", + "시간": "19:08:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2286, + "역명": "사하", + "시간": "20:00:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1305, + "역명": "사하", + "시간": "22:03:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 2, + "열번": 2324, + "역명": "사하", + "시간": "22:53:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "사하", + "시간": "05:38:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "사하", + "시간": "07:48:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2056, + "역명": "사하", + "시간": "08:40:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1085, + "역명": "사하", + "시간": "10:44:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2114, + "역명": "사하", + "시간": "11:34:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1145, + "역명": "사하", + "시간": "13:38:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2172, + "역명": "사하", + "시간": "14:28:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1209, + "역명": "사하", + "시간": "16:34:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2238, + "역명": "사하", + "시간": "17:26:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "사하", + "시간": "05:50:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1023, + "역명": "사하", + "시간": "07:55:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2058, + "역명": "사하", + "시간": "08:46:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1087, + "역명": "사하", + "시간": "10:50:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2116, + "역명": "사하", + "시간": "11:40:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1147, + "역명": "사하", + "시간": "13:43:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2174, + "역명": "사하", + "시간": "14:34:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1211, + "역명": "사하", + "시간": "16:39:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2240, + "역명": "사하", + "시간": "17:32:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1269, + "역명": "사하", + "시간": "19:39:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2294, + "역명": "사하", + "시간": "20:32:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1313, + "역명": "사하", + "시간": "22:37:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2330, + "역명": "사하", + "시간": "23:30:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 5, + "열번": 1001, + "역명": "사하", + "시간": "06:08:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2018, + "역명": "사하", + "시간": "06:58:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1051, + "역명": "사하", + "시간": "09:06:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2082, + "역명": "사하", + "시간": "09:58:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1111, + "역명": "사하", + "시간": "12:02:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2140, + "역명": "사하", + "시간": "12:52:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1173, + "역명": "사하", + "시간": "14:55:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2200, + "역명": "사하", + "시간": "15:45:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1237, + "역명": "사하", + "시간": "17:51:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2264, + "역명": "사하", + "시간": "18:44:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1287, + "역명": "사하", + "시간": "20:51:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2310, + "역명": "사하", + "시간": "21:39:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2008, + "역명": "사하", + "시간": "06:02:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1027, + "역명": "사하", + "시간": "08:06:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2062, + "역명": "사하", + "시간": "08:58:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1091, + "역명": "사하", + "시간": "11:02:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2120, + "역명": "사하", + "시간": "11:52:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1153, + "역명": "사하", + "시간": "14:00:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2180, + "역명": "사하", + "시간": "14:50:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1217, + "역명": "사하", + "시간": "16:56:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2246, + "역명": "사하", + "시간": "17:50:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1273, + "역명": "사하", + "시간": "19:55:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2298, + "역명": "사하", + "시간": "20:48:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1317, + "역명": "사하", + "시간": "22:57:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1003, + "역명": "사하", + "시간": "06:16:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2020, + "역명": "사하", + "시간": "07:07:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1053, + "역명": "사하", + "시간": "09:11:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2084, + "역명": "사하", + "시간": "10:04:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1113, + "역명": "사하", + "시간": "12:08:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2142, + "역명": "사하", + "시간": "12:58:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1177, + "역명": "사하", + "시간": "15:06:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2204, + "역명": "사하", + "시간": "15:56:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1241, + "역명": "사하", + "시간": "18:02:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2268, + "역명": "사하", + "시간": "18:56:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1291, + "역명": "사하", + "시간": "21:07:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2314, + "역명": "사하", + "시간": "21:59:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 7, + "열번": 1329, + "역명": "사하", + "시간": "00:03:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2010, + "역명": "사하", + "시간": "06:14:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1033, + "역명": "사하", + "시간": "08:21:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2066, + "역명": "사하", + "시간": "09:10:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1095, + "역명": "사하", + "시간": "11:14:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2124, + "역명": "사하", + "시간": "12:04:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1157, + "역명": "사하", + "시간": "14:11:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2184, + "역명": "사하", + "시간": "15:01:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1221, + "역명": "사하", + "시간": "17:07:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2248, + "역명": "사하", + "시간": "17:56:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1275, + "역명": "사하", + "시간": "20:03:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 8, + "열번": 2300, + "역명": "사하", + "시간": "20:56:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 9, + "열번": 2022, + "역명": "사하", + "시간": "07:13:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1055, + "역명": "사하", + "시간": "09:16:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2086, + "역명": "사하", + "시간": "10:10:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1115, + "역명": "사하", + "시간": "12:14:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2144, + "역명": "사하", + "시간": "13:04:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1179, + "역명": "사하", + "시간": "15:11:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2206, + "역명": "사하", + "시간": "16:02:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1243, + "역명": "사하", + "시간": "18:08:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 9, + "열번": 2270, + "역명": "사하", + "시간": "19:02:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2012, + "역명": "사하", + "시간": "06:26:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1039, + "역명": "사하", + "시간": "08:36:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2072, + "역명": "사하", + "시간": "09:28:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1101, + "역명": "사하", + "시간": "11:32:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2130, + "역명": "사하", + "시간": "12:22:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1163, + "역명": "사하", + "시간": "14:27:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2190, + "역명": "사하", + "시간": "15:18:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1227, + "역명": "사하", + "시간": "17:23:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2254, + "역명": "사하", + "시간": "18:14:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1279, + "역명": "사하", + "시간": "20:19:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2304, + "역명": "사하", + "시간": "21:12:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1321, + "역명": "사하", + "시간": "23:17:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 11, + "열번": 1005, + "역명": "사하", + "시간": "06:27:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2024, + "역명": "사하", + "시간": "07:19:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1057, + "역명": "사하", + "시간": "09:21:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2088, + "역명": "사하", + "시간": "10:16:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1117, + "역명": "사하", + "시간": "12:20:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2146, + "역명": "사하", + "시간": "13:10:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1181, + "역명": "사하", + "시간": "15:17:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2208, + "역명": "사하", + "시간": "16:07:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1245, + "역명": "사하", + "시간": "18:14:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2272, + "역명": "사하", + "시간": "19:08:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1293, + "역명": "사하", + "시간": "21:15:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2316, + "역명": "사하", + "시간": "22:09:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 11, + "열번": 1331, + "역명": "사하", + "시간": "00:15:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2014, + "역명": "사하", + "시간": "06:38:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1043, + "역명": "사하", + "시간": "08:46:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2074, + "역명": "사하", + "시간": "09:34:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1103, + "역명": "사하", + "시간": "11:38:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2132, + "역명": "사하", + "시간": "12:28:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1165, + "역명": "사하", + "시간": "14:33:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "사하", + "시간": "15:23:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1229, + "역명": "사하", + "시간": "17:29:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2256, + "역명": "사하", + "시간": "18:20:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1281, + "역명": "사하", + "시간": "20:27:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2306, + "역명": "사하", + "시간": "21:20:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1323, + "역명": "사하", + "시간": "23:28:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1009, + "역명": "사하", + "시간": "06:49:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2032, + "역명": "사하", + "시간": "07:39:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1065, + "역명": "사하", + "시간": "09:44:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2094, + "역명": "사하", + "시간": "10:34:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1123, + "역명": "사하", + "시간": "12:37:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2152, + "역명": "사하", + "시간": "13:28:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1187, + "역명": "사하", + "시간": "15:33:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 13, + "열번": 2214, + "역명": "사하", + "시간": "16:24:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2016, + "역명": "사하", + "시간": "06:49:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1049, + "역명": "사하", + "시간": "09:01:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2080, + "역명": "사하", + "시간": "09:52:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1109, + "역명": "사하", + "시간": "11:56:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2138, + "역명": "사하", + "시간": "12:46:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1171, + "역명": "사하", + "시간": "14:49:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2198, + "역명": "사하", + "시간": "15:40:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1235, + "역명": "사하", + "시간": "17:45:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2262, + "역명": "사하", + "시간": "18:38:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1285, + "역명": "사하", + "시간": "20:43:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1011, + "역명": "사하", + "시간": "07:00:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2036, + "역명": "사하", + "시간": "07:49:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1069, + "역명": "사하", + "시간": "09:56:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2098, + "역명": "사하", + "시간": "10:46:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1129, + "역명": "사하", + "시간": "12:54:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2156, + "역명": "사하", + "시간": "13:44:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1193, + "역명": "사하", + "시간": "15:50:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2220, + "역명": "사하", + "시간": "16:40:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1255, + "역명": "사하", + "시간": "18:47:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2280, + "역명": "사하", + "시간": "19:36:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1299, + "역명": "사하", + "시간": "21:39:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2320, + "역명": "사하", + "시간": "22:29:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2026, + "역명": "사하", + "시간": "07:24:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 16, + "열번": 1059, + "역명": "사하", + "시간": "09:26:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2038, + "역명": "사하", + "시간": "07:54:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 18, + "열번": 1007, + "역명": "사하", + "시간": "06:38:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2028, + "역명": "사하", + "시간": "07:29:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1061, + "역명": "사하", + "시간": "09:32:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2090, + "역명": "사하", + "시간": "10:22:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1119, + "역명": "사하", + "시간": "12:26:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2148, + "역명": "사하", + "시간": "13:16:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1183, + "역명": "사하", + "시간": "15:22:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2210, + "역명": "사하", + "시간": "16:13:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1247, + "역명": "사하", + "시간": "18:20:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2040, + "역명": "사하", + "시간": "07:59:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1071, + "역명": "사하", + "시간": "10:02:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2100, + "역명": "사하", + "시간": "10:52:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1131, + "역명": "사하", + "시간": "12:59:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2158, + "역명": "사하", + "시간": "13:50:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1195, + "역명": "사하", + "시간": "15:55:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2222, + "역명": "사하", + "시간": "16:45:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2030, + "역명": "사하", + "시간": "07:34:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1063, + "역명": "사하", + "시간": "09:38:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2092, + "역명": "사하", + "시간": "10:28:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1121, + "역명": "사하", + "시간": "12:32:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2150, + "역명": "사하", + "시간": "13:22:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1185, + "역명": "사하", + "시간": "15:28:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2212, + "역명": "사하", + "시간": "16:18:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1249, + "역명": "사하", + "시간": "18:26:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2274, + "역명": "사하", + "시간": "19:15:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1295, + "역명": "사하", + "시간": "21:23:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2318, + "역명": "사하", + "시간": "22:19:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 20, + "열번": 7931, + "역명": "사하", + "시간": "00:31:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 21, + "열번": 1013, + "역명": "사하", + "시간": "07:11:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2042, + "역명": "사하", + "시간": "08:04:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1073, + "역명": "사하", + "시간": "10:08:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2102, + "역명": "사하", + "시간": "10:58:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1133, + "역명": "사하", + "시간": "13:05:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2160, + "역명": "사하", + "시간": "13:55:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1197, + "역명": "사하", + "시간": "16:01:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2224, + "역명": "사하", + "시간": "16:50:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1257, + "역명": "사하", + "시간": "18:54:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2282, + "역명": "사하", + "시간": "19:44:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1301, + "역명": "사하", + "시간": "21:47:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2322, + "역명": "사하", + "시간": "22:41:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2034, + "역명": "사하", + "시간": "07:44:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1067, + "역명": "사하", + "시간": "09:50:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2096, + "역명": "사하", + "시간": "10:40:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1125, + "역명": "사하", + "시간": "12:43:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2044, + "역명": "사하", + "시간": "08:09:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1075, + "역명": "사하", + "시간": "10:14:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2104, + "역명": "사하", + "시간": "11:04:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1135, + "역명": "사하", + "시간": "13:10:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2162, + "역명": "사하", + "시간": "14:01:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1199, + "역명": "사하", + "시간": "16:06:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2228, + "역명": "사하", + "시간": "17:00:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "사하", + "시간": "08:19:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1079, + "역명": "사하", + "시간": "10:26:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2108, + "역명": "사하", + "시간": "11:16:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1139, + "역명": "사하", + "시간": "13:21:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2166, + "역명": "사하", + "시간": "14:12:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1203, + "역명": "사하", + "시간": "16:17:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2232, + "역명": "사하", + "시간": "17:10:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1263, + "역명": "사하", + "시간": "19:15:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2288, + "역명": "사하", + "시간": "20:08:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1307, + "역명": "사하", + "시간": "22:11:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 24, + "열번": 2326, + "역명": "사하", + "시간": "23:05:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "사하", + "시간": "07:39:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2054, + "역명": "사하", + "시간": "08:34:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1083, + "역명": "사하", + "시간": "10:38:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2112, + "역명": "사하", + "시간": "11:28:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1143, + "역명": "사하", + "시간": "13:32:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2170, + "역명": "사하", + "시간": "14:23:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1207, + "역명": "사하", + "시간": "16:28:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2236, + "역명": "사하", + "시간": "17:20:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1267, + "역명": "사하", + "시간": "19:31:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2292, + "역명": "사하", + "시간": "20:24:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1311, + "역명": "사하", + "시간": "22:27:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2328, + "역명": "사하", + "시간": "23:15:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2052, + "역명": "사하", + "시간": "08:29:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1081, + "역명": "사하", + "시간": "10:32:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2110, + "역명": "사하", + "시간": "11:22:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1141, + "역명": "사하", + "시간": "13:27:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2168, + "역명": "사하", + "시간": "14:17:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1205, + "역명": "사하", + "시간": "16:23:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2234, + "역명": "사하", + "시간": "17:15:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1265, + "역명": "사하", + "시간": "19:23:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2290, + "역명": "사하", + "시간": "20:16:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1309, + "역명": "사하", + "시간": "22:19:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1025, + "역명": "사하", + "시간": "08:01:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2060, + "역명": "사하", + "시간": "08:52:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1089, + "역명": "사하", + "시간": "10:56:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2118, + "역명": "사하", + "시간": "11:46:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1151, + "역명": "사하", + "시간": "13:54:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2178, + "역명": "사하", + "시간": "14:45:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1215, + "역명": "사하", + "시간": "16:50:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2244, + "역명": "사하", + "시간": "17:44:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1271, + "역명": "사하", + "시간": "19:47:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2296, + "역명": "사하", + "시간": "20:40:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 27, + "열번": 1315, + "역명": "사하", + "시간": "22:47:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 28, + "열번": 1029, + "역명": "사하", + "시간": "08:11:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2064, + "역명": "사하", + "시간": "09:04:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1093, + "역명": "사하", + "시간": "11:08:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2122, + "역명": "사하", + "시간": "11:58:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1155, + "역명": "사하", + "시간": "14:05:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2182, + "역명": "사하", + "시간": "14:56:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1219, + "역명": "사하", + "시간": "17:01:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1035, + "역명": "사하", + "시간": "08:26:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2068, + "역명": "사하", + "시간": "09:16:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1097, + "역명": "사하", + "시간": "11:20:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2126, + "역명": "사하", + "시간": "12:10:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1159, + "역명": "사하", + "시간": "14:16:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2186, + "역명": "사하", + "시간": "15:07:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1223, + "역명": "사하", + "시간": "17:12:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 29, + "열번": 2250, + "역명": "사하", + "시간": "18:02:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1031, + "역명": "사하", + "시간": "08:16:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1037, + "역명": "사하", + "시간": "08:31:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2070, + "역명": "사하", + "시간": "09:22:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1099, + "역명": "사하", + "시간": "11:26:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2128, + "역명": "사하", + "시간": "12:16:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1161, + "역명": "사하", + "시간": "14:22:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2188, + "역명": "사하", + "시간": "15:12:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1225, + "역명": "사하", + "시간": "17:18:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2252, + "역명": "사하", + "시간": "18:08:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1277, + "역명": "사하", + "시간": "20:11:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2302, + "역명": "사하", + "시간": "21:04:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1319, + "역명": "사하", + "시간": "23:07:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 32, + "열번": 1041, + "역명": "사하", + "시간": "08:41:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1045, + "역명": "사하", + "시간": "08:51:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2076, + "역명": "사하", + "시간": "09:40:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1105, + "역명": "사하", + "시간": "11:44:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2134, + "역명": "사하", + "시간": "12:34:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1167, + "역명": "사하", + "시간": "14:38:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2194, + "역명": "사하", + "시간": "15:29:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1231, + "역명": "사하", + "시간": "17:34:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 33, + "열번": 2258, + "역명": "사하", + "시간": "18:26:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 34, + "열번": 8904, + "역명": "사하", + "시간": "13:33:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1189, + "역명": "사하", + "시간": "15:39:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 34, + "열번": 2216, + "역명": "사하", + "시간": "16:29:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1251, + "역명": "사하", + "시간": "18:33:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 34, + "열번": 2276, + "역명": "사하", + "시간": "19:22:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1297, + "역명": "사하", + "시간": "21:31:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1047, + "역명": "사하", + "시간": "08:56:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2078, + "역명": "사하", + "시간": "09:46:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1107, + "역명": "사하", + "시간": "11:50:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2136, + "역명": "사하", + "시간": "12:40:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1169, + "역명": "사하", + "시간": "14:44:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2196, + "역명": "사하", + "시간": "15:34:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1233, + "역명": "사하", + "시간": "17:40:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2260, + "역명": "사하", + "시간": "18:32:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1283, + "역명": "사하", + "시간": "20:35:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2308, + "역명": "사하", + "시간": "21:29:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1325, + "역명": "사하", + "시간": "23:39:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 36, + "열번": 2226, + "역명": "사하", + "시간": "16:55:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1259, + "역명": "사하", + "시간": "19:01:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 36, + "열번": 2284, + "역명": "사하", + "시간": "19:52:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1303, + "역명": "사하", + "시간": "21:55:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1127, + "역명": "사하", + "시간": "12:48:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2154, + "역명": "사하", + "시간": "13:39:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1191, + "역명": "사하", + "시간": "15:44:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2218, + "역명": "사하", + "시간": "16:35:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1253, + "역명": "사하", + "시간": "18:40:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 37, + "열번": 2278, + "역명": "사하", + "시간": "19:29:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 39, + "열번": 1149, + "역명": "사하", + "시간": "13:49:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2176, + "역명": "사하", + "시간": "14:39:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1213, + "역명": "사하", + "시간": "16:45:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 39, + "열번": 2242, + "역명": "사하", + "시간": "17:38:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 41, + "열번": 1175, + "역명": "사하", + "시간": "15:00:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2202, + "역명": "사하", + "시간": "15:51:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1239, + "역명": "사하", + "시간": "17:56:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2266, + "역명": "사하", + "시간": "18:50:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1289, + "역명": "사하", + "시간": "20:59:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2312, + "역명": "사하", + "시간": "21:49:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1327, + "역명": "사하", + "시간": "23:51:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "당리", + "시간": "05:22:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "당리", + "시간": "07:31:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2050, + "역명": "당리", + "시간": "08:22:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "당리", + "시간": "05:06:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "당리", + "시간": "07:22:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "당리", + "시간": "08:12:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1077, + "역명": "당리", + "시간": "10:22:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2106, + "역명": "당리", + "시간": "11:08:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1137, + "역명": "당리", + "시간": "13:17:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2164, + "역명": "당리", + "시간": "14:04:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1201, + "역명": "당리", + "시간": "16:13:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2230, + "역명": "당리", + "시간": "17:03:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1261, + "역명": "당리", + "시간": "19:10:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2286, + "역명": "당리", + "시간": "19:58:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1305, + "역명": "당리", + "시간": "22:05:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 2, + "열번": 2324, + "역명": "당리", + "시간": "22:51:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "당리", + "시간": "05:36:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "당리", + "시간": "07:49:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2056, + "역명": "당리", + "시간": "08:38:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1085, + "역명": "당리", + "시간": "10:46:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2114, + "역명": "당리", + "시간": "11:32:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1145, + "역명": "당리", + "시간": "13:39:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2172, + "역명": "당리", + "시간": "14:26:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1209, + "역명": "당리", + "시간": "16:35:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2238, + "역명": "당리", + "시간": "17:24:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "당리", + "시간": "05:48:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1023, + "역명": "당리", + "시간": "07:56:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2058, + "역명": "당리", + "시간": "08:44:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1087, + "역명": "당리", + "시간": "10:52:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2116, + "역명": "당리", + "시간": "11:38:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1147, + "역명": "당리", + "시간": "13:45:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2174, + "역명": "당리", + "시간": "14:32:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1211, + "역명": "당리", + "시간": "16:41:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2240, + "역명": "당리", + "시간": "17:30:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1269, + "역명": "당리", + "시간": "19:41:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2294, + "역명": "당리", + "시간": "20:30:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1313, + "역명": "당리", + "시간": "22:39:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2330, + "역명": "당리", + "시간": "23:29:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 5, + "열번": 1001, + "역명": "당리", + "시간": "06:09:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2018, + "역명": "당리", + "시간": "06:56:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1051, + "역명": "당리", + "시간": "09:08:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2082, + "역명": "당리", + "시간": "09:56:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1111, + "역명": "당리", + "시간": "12:04:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2140, + "역명": "당리", + "시간": "12:50:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1173, + "역명": "당리", + "시간": "14:56:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2200, + "역명": "당리", + "시간": "15:43:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1237, + "역명": "당리", + "시간": "17:52:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2264, + "역명": "당리", + "시간": "18:42:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1287, + "역명": "당리", + "시간": "20:53:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2310, + "역명": "당리", + "시간": "21:37:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2008, + "역명": "당리", + "시간": "06:00:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1027, + "역명": "당리", + "시간": "08:08:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2062, + "역명": "당리", + "시간": "08:56:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1091, + "역명": "당리", + "시간": "11:04:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2120, + "역명": "당리", + "시간": "11:50:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1153, + "역명": "당리", + "시간": "14:01:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2180, + "역명": "당리", + "시간": "14:48:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1217, + "역명": "당리", + "시간": "16:57:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2246, + "역명": "당리", + "시간": "17:48:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1273, + "역명": "당리", + "시간": "19:57:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2298, + "역명": "당리", + "시간": "20:46:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1317, + "역명": "당리", + "시간": "22:59:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1003, + "역명": "당리", + "시간": "06:17:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2020, + "역명": "당리", + "시간": "07:05:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1053, + "역명": "당리", + "시간": "09:13:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2084, + "역명": "당리", + "시간": "10:02:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1113, + "역명": "당리", + "시간": "12:10:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2142, + "역명": "당리", + "시간": "12:56:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1177, + "역명": "당리", + "시간": "15:07:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2204, + "역명": "당리", + "시간": "15:54:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1241, + "역명": "당리", + "시간": "18:04:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2268, + "역명": "당리", + "시간": "18:54:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1291, + "역명": "당리", + "시간": "21:09:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2314, + "역명": "당리", + "시간": "21:57:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 7, + "열번": 1329, + "역명": "당리", + "시간": "00:05:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2010, + "역명": "당리", + "시간": "06:12:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1033, + "역명": "당리", + "시간": "08:23:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2066, + "역명": "당리", + "시간": "09:08:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1095, + "역명": "당리", + "시간": "11:16:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2124, + "역명": "당리", + "시간": "12:02:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1157, + "역명": "당리", + "시간": "14:12:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2184, + "역명": "당리", + "시간": "14:59:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1221, + "역명": "당리", + "시간": "17:08:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2248, + "역명": "당리", + "시간": "17:54:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1275, + "역명": "당리", + "시간": "20:05:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 8, + "열번": 2300, + "역명": "당리", + "시간": "20:54:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 9, + "열번": 2022, + "역명": "당리", + "시간": "07:11:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1055, + "역명": "당리", + "시간": "09:18:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2086, + "역명": "당리", + "시간": "10:08:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1115, + "역명": "당리", + "시간": "12:16:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2144, + "역명": "당리", + "시간": "13:02:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1179, + "역명": "당리", + "시간": "15:13:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2206, + "역명": "당리", + "시간": "16:00:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1243, + "역명": "당리", + "시간": "18:10:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 9, + "열번": 2270, + "역명": "당리", + "시간": "19:00:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2012, + "역명": "당리", + "시간": "06:24:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1039, + "역명": "당리", + "시간": "08:38:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2072, + "역명": "당리", + "시간": "09:26:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1101, + "역명": "당리", + "시간": "11:34:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2130, + "역명": "당리", + "시간": "12:20:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1163, + "역명": "당리", + "시간": "14:29:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2190, + "역명": "당리", + "시간": "15:16:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1227, + "역명": "당리", + "시간": "17:25:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2254, + "역명": "당리", + "시간": "18:12:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1279, + "역명": "당리", + "시간": "20:21:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2304, + "역명": "당리", + "시간": "21:10:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1321, + "역명": "당리", + "시간": "23:19:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 11, + "열번": 1005, + "역명": "당리", + "시간": "06:28:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2024, + "역명": "당리", + "시간": "07:17:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1057, + "역명": "당리", + "시간": "09:23:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2088, + "역명": "당리", + "시간": "10:14:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1117, + "역명": "당리", + "시간": "12:22:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2146, + "역명": "당리", + "시간": "13:08:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1181, + "역명": "당리", + "시간": "15:18:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2208, + "역명": "당리", + "시간": "16:05:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1245, + "역명": "당리", + "시간": "18:16:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2272, + "역명": "당리", + "시간": "19:06:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1293, + "역명": "당리", + "시간": "21:17:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2316, + "역명": "당리", + "시간": "22:07:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 11, + "열번": 1331, + "역명": "당리", + "시간": "00:16:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2014, + "역명": "당리", + "시간": "06:36:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1043, + "역명": "당리", + "시간": "08:48:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2074, + "역명": "당리", + "시간": "09:32:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1103, + "역명": "당리", + "시간": "11:40:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2132, + "역명": "당리", + "시간": "12:26:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1165, + "역명": "당리", + "시간": "14:34:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "당리", + "시간": "15:21:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1229, + "역명": "당리", + "시간": "17:30:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2256, + "역명": "당리", + "시간": "18:18:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1281, + "역명": "당리", + "시간": "20:29:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2306, + "역명": "당리", + "시간": "21:18:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1323, + "역명": "당리", + "시간": "23:30:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1009, + "역명": "당리", + "시간": "06:50:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2032, + "역명": "당리", + "시간": "07:37:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1065, + "역명": "당리", + "시간": "09:46:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2094, + "역명": "당리", + "시간": "10:32:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1123, + "역명": "당리", + "시간": "12:39:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2152, + "역명": "당리", + "시간": "13:26:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1187, + "역명": "당리", + "시간": "15:35:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 13, + "열번": 2214, + "역명": "당리", + "시간": "16:22:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2016, + "역명": "당리", + "시간": "06:47:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1049, + "역명": "당리", + "시간": "09:03:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2080, + "역명": "당리", + "시간": "09:50:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1109, + "역명": "당리", + "시간": "11:58:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2138, + "역명": "당리", + "시간": "12:44:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1171, + "역명": "당리", + "시간": "14:51:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2198, + "역명": "당리", + "시간": "15:38:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1235, + "역명": "당리", + "시간": "17:47:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2262, + "역명": "당리", + "시간": "18:36:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1285, + "역명": "당리", + "시간": "20:45:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1011, + "역명": "당리", + "시간": "07:01:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2036, + "역명": "당리", + "시간": "07:47:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1069, + "역명": "당리", + "시간": "09:58:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2098, + "역명": "당리", + "시간": "10:44:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1129, + "역명": "당리", + "시간": "12:55:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2156, + "역명": "당리", + "시간": "13:42:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1193, + "역명": "당리", + "시간": "15:51:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2220, + "역명": "당리", + "시간": "16:38:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1255, + "역명": "당리", + "시간": "18:49:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2280, + "역명": "당리", + "시간": "19:34:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1299, + "역명": "당리", + "시간": "21:41:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2320, + "역명": "당리", + "시간": "22:27:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2026, + "역명": "당리", + "시간": "07:22:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 16, + "열번": 1059, + "역명": "당리", + "시간": "09:28:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2038, + "역명": "당리", + "시간": "07:52:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 18, + "열번": 1007, + "역명": "당리", + "시간": "06:39:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2028, + "역명": "당리", + "시간": "07:27:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1061, + "역명": "당리", + "시간": "09:34:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2090, + "역명": "당리", + "시간": "10:20:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1119, + "역명": "당리", + "시간": "12:28:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2148, + "역명": "당리", + "시간": "13:14:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1183, + "역명": "당리", + "시간": "15:24:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2210, + "역명": "당리", + "시간": "16:11:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1247, + "역명": "당리", + "시간": "18:22:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2040, + "역명": "당리", + "시간": "07:57:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1071, + "역명": "당리", + "시간": "10:04:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2100, + "역명": "당리", + "시간": "10:50:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1131, + "역명": "당리", + "시간": "13:01:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2158, + "역명": "당리", + "시간": "13:48:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1195, + "역명": "당리", + "시간": "15:57:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2222, + "역명": "당리", + "시간": "16:43:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2030, + "역명": "당리", + "시간": "07:32:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1063, + "역명": "당리", + "시간": "09:40:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2092, + "역명": "당리", + "시간": "10:26:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1121, + "역명": "당리", + "시간": "12:33:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2150, + "역명": "당리", + "시간": "13:20:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1185, + "역명": "당리", + "시간": "15:29:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2212, + "역명": "당리", + "시간": "16:16:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1249, + "역명": "당리", + "시간": "18:28:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2274, + "역명": "당리", + "시간": "19:13:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1295, + "역명": "당리", + "시간": "21:25:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2318, + "역명": "당리", + "시간": "22:17:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 20, + "열번": 7931, + "역명": "당리", + "시간": "00:32:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 21, + "열번": 1013, + "역명": "당리", + "시간": "07:12:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2042, + "역명": "당리", + "시간": "08:02:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1073, + "역명": "당리", + "시간": "10:10:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2102, + "역명": "당리", + "시간": "10:56:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1133, + "역명": "당리", + "시간": "13:06:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2160, + "역명": "당리", + "시간": "13:53:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1197, + "역명": "당리", + "시간": "16:02:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2224, + "역명": "당리", + "시간": "16:48:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1257, + "역명": "당리", + "시간": "18:56:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2282, + "역명": "당리", + "시간": "19:42:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1301, + "역명": "당리", + "시간": "21:49:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2322, + "역명": "당리", + "시간": "22:39:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2034, + "역명": "당리", + "시간": "07:42:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1067, + "역명": "당리", + "시간": "09:52:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2096, + "역명": "당리", + "시간": "10:38:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1125, + "역명": "당리", + "시간": "12:44:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2044, + "역명": "당리", + "시간": "08:07:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1075, + "역명": "당리", + "시간": "10:16:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2104, + "역명": "당리", + "시간": "11:02:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1135, + "역명": "당리", + "시간": "13:12:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2162, + "역명": "당리", + "시간": "13:59:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1199, + "역명": "당리", + "시간": "16:08:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2228, + "역명": "당리", + "시간": "16:58:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "당리", + "시간": "08:17:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1079, + "역명": "당리", + "시간": "10:28:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2108, + "역명": "당리", + "시간": "11:14:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1139, + "역명": "당리", + "시간": "13:23:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2166, + "역명": "당리", + "시간": "14:10:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1203, + "역명": "당리", + "시간": "16:19:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2232, + "역명": "당리", + "시간": "17:08:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1263, + "역명": "당리", + "시간": "19:17:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2288, + "역명": "당리", + "시간": "20:06:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1307, + "역명": "당리", + "시간": "22:13:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 24, + "열번": 2326, + "역명": "당리", + "시간": "23:03:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "당리", + "시간": "07:40:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2054, + "역명": "당리", + "시간": "08:32:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1083, + "역명": "당리", + "시간": "10:40:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2112, + "역명": "당리", + "시간": "11:26:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1143, + "역명": "당리", + "시간": "13:34:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2170, + "역명": "당리", + "시간": "14:21:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1207, + "역명": "당리", + "시간": "16:30:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2236, + "역명": "당리", + "시간": "17:18:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1267, + "역명": "당리", + "시간": "19:33:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2292, + "역명": "당리", + "시간": "20:22:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1311, + "역명": "당리", + "시간": "22:29:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2328, + "역명": "당리", + "시간": "23:13:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2052, + "역명": "당리", + "시간": "08:27:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1081, + "역명": "당리", + "시간": "10:34:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2110, + "역명": "당리", + "시간": "11:20:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1141, + "역명": "당리", + "시간": "13:28:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2168, + "역명": "당리", + "시간": "14:15:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1205, + "역명": "당리", + "시간": "16:24:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2234, + "역명": "당리", + "시간": "17:13:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1265, + "역명": "당리", + "시간": "19:25:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2290, + "역명": "당리", + "시간": "20:14:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1309, + "역명": "당리", + "시간": "22:21:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1025, + "역명": "당리", + "시간": "08:03:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2060, + "역명": "당리", + "시간": "08:50:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1089, + "역명": "당리", + "시간": "10:58:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2118, + "역명": "당리", + "시간": "11:44:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1151, + "역명": "당리", + "시간": "13:56:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2178, + "역명": "당리", + "시간": "14:43:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1215, + "역명": "당리", + "시간": "16:52:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2244, + "역명": "당리", + "시간": "17:42:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1271, + "역명": "당리", + "시간": "19:49:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2296, + "역명": "당리", + "시간": "20:38:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 27, + "열번": 1315, + "역명": "당리", + "시간": "22:49:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 28, + "열번": 1029, + "역명": "당리", + "시간": "08:13:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2064, + "역명": "당리", + "시간": "09:02:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1093, + "역명": "당리", + "시간": "11:10:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2122, + "역명": "당리", + "시간": "11:56:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1155, + "역명": "당리", + "시간": "14:07:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2182, + "역명": "당리", + "시간": "14:54:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1219, + "역명": "당리", + "시간": "17:03:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1035, + "역명": "당리", + "시간": "08:28:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2068, + "역명": "당리", + "시간": "09:14:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1097, + "역명": "당리", + "시간": "11:22:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2126, + "역명": "당리", + "시간": "12:08:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1159, + "역명": "당리", + "시간": "14:18:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2186, + "역명": "당리", + "시간": "15:05:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1223, + "역명": "당리", + "시간": "17:14:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 29, + "열번": 2250, + "역명": "당리", + "시간": "18:00:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1031, + "역명": "당리", + "시간": "08:18:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1037, + "역명": "당리", + "시간": "08:33:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2070, + "역명": "당리", + "시간": "09:20:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1099, + "역명": "당리", + "시간": "11:28:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2128, + "역명": "당리", + "시간": "12:14:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1161, + "역명": "당리", + "시간": "14:23:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2188, + "역명": "당리", + "시간": "15:10:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1225, + "역명": "당리", + "시간": "17:19:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2252, + "역명": "당리", + "시간": "18:06:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1277, + "역명": "당리", + "시간": "20:13:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2302, + "역명": "당리", + "시간": "21:02:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1319, + "역명": "당리", + "시간": "23:09:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 32, + "열번": 1041, + "역명": "당리", + "시간": "08:43:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1045, + "역명": "당리", + "시간": "08:53:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2076, + "역명": "당리", + "시간": "09:38:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1105, + "역명": "당리", + "시간": "11:46:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2134, + "역명": "당리", + "시간": "12:32:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1167, + "역명": "당리", + "시간": "14:40:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2194, + "역명": "당리", + "시간": "15:27:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1231, + "역명": "당리", + "시간": "17:36:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 33, + "열번": 2258, + "역명": "당리", + "시간": "18:24:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 34, + "열번": 8904, + "역명": "당리", + "시간": "13:31:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1189, + "역명": "당리", + "시간": "15:40:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 34, + "열번": 2216, + "역명": "당리", + "시간": "16:27:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1251, + "역명": "당리", + "시간": "18:35:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 34, + "열번": 2276, + "역명": "당리", + "시간": "19:20:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1297, + "역명": "당리", + "시간": "21:33:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1047, + "역명": "당리", + "시간": "08:58:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2078, + "역명": "당리", + "시간": "09:44:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1107, + "역명": "당리", + "시간": "11:52:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2136, + "역명": "당리", + "시간": "12:38:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1169, + "역명": "당리", + "시간": "14:45:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2196, + "역명": "당리", + "시간": "15:32:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1233, + "역명": "당리", + "시간": "17:41:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2260, + "역명": "당리", + "시간": "18:30:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1283, + "역명": "당리", + "시간": "20:37:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2308, + "역명": "당리", + "시간": "21:27:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1325, + "역명": "당리", + "시간": "23:41:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 36, + "열번": 2226, + "역명": "당리", + "시간": "16:53:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1259, + "역명": "당리", + "시간": "19:03:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 36, + "열번": 2284, + "역명": "당리", + "시간": "19:50:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1303, + "역명": "당리", + "시간": "21:57:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1127, + "역명": "당리", + "시간": "12:50:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2154, + "역명": "당리", + "시간": "13:37:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1191, + "역명": "당리", + "시간": "15:46:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2218, + "역명": "당리", + "시간": "16:33:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1253, + "역명": "당리", + "시간": "18:42:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 37, + "열번": 2278, + "역명": "당리", + "시간": "19:27:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 39, + "열번": 1149, + "역명": "당리", + "시간": "13:50:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2176, + "역명": "당리", + "시간": "14:37:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1213, + "역명": "당리", + "시간": "16:46:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 39, + "열번": 2242, + "역명": "당리", + "시간": "17:36:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 41, + "열번": 1175, + "역명": "당리", + "시간": "15:02:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2202, + "역명": "당리", + "시간": "15:49:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1239, + "역명": "당리", + "시간": "17:58:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2266, + "역명": "당리", + "시간": "18:48:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1289, + "역명": "당리", + "시간": "21:01:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2312, + "역명": "당리", + "시간": "21:47:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1327, + "역명": "당리", + "시간": "23:53:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "하단", + "시간": "05:20:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "하단", + "시간": "07:33:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2050, + "역명": "하단", + "시간": "08:20:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "하단", + "시간": "05:04:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "하단", + "시간": "07:24:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "하단", + "시간": "08:10:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1077, + "역명": "하단", + "시간": "10:24:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2106, + "역명": "하단", + "시간": "11:06:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1137, + "역명": "하단", + "시간": "13:19:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2164, + "역명": "하단", + "시간": "14:02:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1201, + "역명": "하단", + "시간": "16:15:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2230, + "역명": "하단", + "시간": "17:01:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1261, + "역명": "하단", + "시간": "19:12:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2286, + "역명": "하단", + "시간": "19:56:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1305, + "역명": "하단", + "시간": "22:07:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 2, + "열번": 2324, + "역명": "하단", + "시간": "22:49:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "하단", + "시간": "05:34:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "하단", + "시간": "07:51:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2056, + "역명": "하단", + "시간": "08:36:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1085, + "역명": "하단", + "시간": "10:48:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2114, + "역명": "하단", + "시간": "11:30:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1145, + "역명": "하단", + "시간": "13:41:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2172, + "역명": "하단", + "시간": "14:24:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1209, + "역명": "하단", + "시간": "16:37:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2238, + "역명": "하단", + "시간": "17:22:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "하단", + "시간": "05:46:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1023, + "역명": "하단", + "시간": "07:58:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2058, + "역명": "하단", + "시간": "08:42:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1087, + "역명": "하단", + "시간": "10:54:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2116, + "역명": "하단", + "시간": "11:36:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1147, + "역명": "하단", + "시간": "13:47:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2174, + "역명": "하단", + "시간": "14:30:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1211, + "역명": "하단", + "시간": "16:43:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2240, + "역명": "하단", + "시간": "17:28:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1269, + "역명": "하단", + "시간": "19:43:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2294, + "역명": "하단", + "시간": "20:28:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1313, + "역명": "하단", + "시간": "22:41:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2330, + "역명": "하단", + "시간": "23:27:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 5, + "열번": 1001, + "역명": "하단", + "시간": "06:11:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2018, + "역명": "하단", + "시간": "06:54:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1051, + "역명": "하단", + "시간": "09:10:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2082, + "역명": "하단", + "시간": "09:54:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1111, + "역명": "하단", + "시간": "12:06:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2140, + "역명": "하단", + "시간": "12:48:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1173, + "역명": "하단", + "시간": "14:58:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2200, + "역명": "하단", + "시간": "15:41:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1237, + "역명": "하단", + "시간": "17:54:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2264, + "역명": "하단", + "시간": "18:40:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1287, + "역명": "하단", + "시간": "20:55:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2310, + "역명": "하단", + "시간": "21:35:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2008, + "역명": "하단", + "시간": "05:58:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1027, + "역명": "하단", + "시간": "08:10:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2062, + "역명": "하단", + "시간": "08:54:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1091, + "역명": "하단", + "시간": "11:06:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2120, + "역명": "하단", + "시간": "11:48:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1153, + "역명": "하단", + "시간": "14:03:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2180, + "역명": "하단", + "시간": "14:46:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1217, + "역명": "하단", + "시간": "16:59:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2246, + "역명": "하단", + "시간": "17:46:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1273, + "역명": "하단", + "시간": "19:59:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2298, + "역명": "하단", + "시간": "20:44:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1317, + "역명": "하단", + "시간": "23:01:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1003, + "역명": "하단", + "시간": "06:19:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2020, + "역명": "하단", + "시간": "07:03:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1053, + "역명": "하단", + "시간": "09:15:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2084, + "역명": "하단", + "시간": "10:00:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1113, + "역명": "하단", + "시간": "12:12:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2142, + "역명": "하단", + "시간": "12:54:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1177, + "역명": "하단", + "시간": "15:09:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2204, + "역명": "하단", + "시간": "15:52:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1241, + "역명": "하단", + "시간": "18:06:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2268, + "역명": "하단", + "시간": "18:52:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1291, + "역명": "하단", + "시간": "21:11:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2314, + "역명": "하단", + "시간": "21:55:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 7, + "열번": 1329, + "역명": "하단", + "시간": "00:07:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2010, + "역명": "하단", + "시간": "06:10:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1033, + "역명": "하단", + "시간": "08:25:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2066, + "역명": "하단", + "시간": "09:06:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1095, + "역명": "하단", + "시간": "11:18:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2124, + "역명": "하단", + "시간": "12:00:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1157, + "역명": "하단", + "시간": "14:14:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2184, + "역명": "하단", + "시간": "14:57:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1221, + "역명": "하단", + "시간": "17:10:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2248, + "역명": "하단", + "시간": "17:52:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1275, + "역명": "하단", + "시간": "20:07:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 8, + "열번": 2300, + "역명": "하단", + "시간": "20:52:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 9, + "열번": 2022, + "역명": "하단", + "시간": "07:09:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1055, + "역명": "하단", + "시간": "09:20:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2086, + "역명": "하단", + "시간": "10:06:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1115, + "역명": "하단", + "시간": "12:18:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2144, + "역명": "하단", + "시간": "13:00:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1179, + "역명": "하단", + "시간": "15:15:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2206, + "역명": "하단", + "시간": "15:58:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1243, + "역명": "하단", + "시간": "18:12:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 9, + "열번": 2270, + "역명": "하단", + "시간": "18:58:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2012, + "역명": "하단", + "시간": "06:22:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1039, + "역명": "하단", + "시간": "08:40:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2072, + "역명": "하단", + "시간": "09:24:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1101, + "역명": "하단", + "시간": "11:36:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2130, + "역명": "하단", + "시간": "12:18:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1163, + "역명": "하단", + "시간": "14:31:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2190, + "역명": "하단", + "시간": "15:14:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1227, + "역명": "하단", + "시간": "17:27:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2254, + "역명": "하단", + "시간": "18:10:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1279, + "역명": "하단", + "시간": "20:23:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2304, + "역명": "하단", + "시간": "21:08:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1321, + "역명": "하단", + "시간": "23:21:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 11, + "열번": 1005, + "역명": "하단", + "시간": "06:30:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2024, + "역명": "하단", + "시간": "07:15:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1057, + "역명": "하단", + "시간": "09:25:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2088, + "역명": "하단", + "시간": "10:12:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1117, + "역명": "하단", + "시간": "12:24:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2146, + "역명": "하단", + "시간": "13:06:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1181, + "역명": "하단", + "시간": "15:20:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2208, + "역명": "하단", + "시간": "16:03:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1245, + "역명": "하단", + "시간": "18:18:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2272, + "역명": "하단", + "시간": "19:04:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1293, + "역명": "하단", + "시간": "21:19:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2316, + "역명": "하단", + "시간": "22:05:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 11, + "열번": 1331, + "역명": "하단", + "시간": "00:18:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2014, + "역명": "하단", + "시간": "06:34:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1043, + "역명": "하단", + "시간": "08:50:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2074, + "역명": "하단", + "시간": "09:30:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1103, + "역명": "하단", + "시간": "11:42:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2132, + "역명": "하단", + "시간": "12:24:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1165, + "역명": "하단", + "시간": "14:36:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "하단", + "시간": "15:19:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1229, + "역명": "하단", + "시간": "17:32:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2256, + "역명": "하단", + "시간": "18:16:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1281, + "역명": "하단", + "시간": "20:31:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2306, + "역명": "하단", + "시간": "21:16:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1323, + "역명": "하단", + "시간": "23:32:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1009, + "역명": "하단", + "시간": "06:52:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2032, + "역명": "하단", + "시간": "07:35:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1065, + "역명": "하단", + "시간": "09:48:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2094, + "역명": "하단", + "시간": "10:30:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1123, + "역명": "하단", + "시간": "12:41:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2152, + "역명": "하단", + "시간": "13:24:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1187, + "역명": "하단", + "시간": "15:37:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 13, + "열번": 2214, + "역명": "하단", + "시간": "16:20:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2016, + "역명": "하단", + "시간": "06:45:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1049, + "역명": "하단", + "시간": "09:05:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2080, + "역명": "하단", + "시간": "09:48:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1109, + "역명": "하단", + "시간": "12:00:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2138, + "역명": "하단", + "시간": "12:42:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1171, + "역명": "하단", + "시간": "14:53:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2198, + "역명": "하단", + "시간": "15:36:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1235, + "역명": "하단", + "시간": "17:49:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2262, + "역명": "하단", + "시간": "18:34:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1285, + "역명": "하단", + "시간": "20:47:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1011, + "역명": "하단", + "시간": "07:03:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2036, + "역명": "하단", + "시간": "07:45:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1069, + "역명": "하단", + "시간": "10:00:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2098, + "역명": "하단", + "시간": "10:42:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1129, + "역명": "하단", + "시간": "12:57:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2156, + "역명": "하단", + "시간": "13:40:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1193, + "역명": "하단", + "시간": "15:53:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2220, + "역명": "하단", + "시간": "16:36:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1255, + "역명": "하단", + "시간": "18:51:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2280, + "역명": "하단", + "시간": "19:32:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1299, + "역명": "하단", + "시간": "21:43:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2320, + "역명": "하단", + "시간": "22:25:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2026, + "역명": "하단", + "시간": "07:20:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 16, + "열번": 1059, + "역명": "하단", + "시간": "09:30:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2038, + "역명": "하단", + "시간": "07:50:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 18, + "열번": 1007, + "역명": "하단", + "시간": "06:41:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2028, + "역명": "하단", + "시간": "07:25:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1061, + "역명": "하단", + "시간": "09:36:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2090, + "역명": "하단", + "시간": "10:18:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1119, + "역명": "하단", + "시간": "12:30:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2148, + "역명": "하단", + "시간": "13:12:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1183, + "역명": "하단", + "시간": "15:26:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2210, + "역명": "하단", + "시간": "16:09:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1247, + "역명": "하단", + "시간": "18:24:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2040, + "역명": "하단", + "시간": "07:55:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1071, + "역명": "하단", + "시간": "10:06:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2100, + "역명": "하단", + "시간": "10:48:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1131, + "역명": "하단", + "시간": "13:03:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2158, + "역명": "하단", + "시간": "13:46:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1195, + "역명": "하단", + "시간": "15:59:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2222, + "역명": "하단", + "시간": "16:41:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2030, + "역명": "하단", + "시간": "07:30:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1063, + "역명": "하단", + "시간": "09:42:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2092, + "역명": "하단", + "시간": "10:24:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1121, + "역명": "하단", + "시간": "12:35:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2150, + "역명": "하단", + "시간": "13:18:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1185, + "역명": "하단", + "시간": "15:31:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2212, + "역명": "하단", + "시간": "16:14:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1249, + "역명": "하단", + "시간": "18:30:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2274, + "역명": "하단", + "시간": "19:11:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1295, + "역명": "하단", + "시간": "21:27:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2318, + "역명": "하단", + "시간": "22:15:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 20, + "열번": 7931, + "역명": "하단", + "시간": "00:34:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 21, + "열번": 1013, + "역명": "하단", + "시간": "07:14:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2042, + "역명": "하단", + "시간": "08:00:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1073, + "역명": "하단", + "시간": "10:12:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2102, + "역명": "하단", + "시간": "10:54:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1133, + "역명": "하단", + "시간": "13:08:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2160, + "역명": "하단", + "시간": "13:51:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1197, + "역명": "하단", + "시간": "16:04:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2224, + "역명": "하단", + "시간": "16:46:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1257, + "역명": "하단", + "시간": "18:58:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2282, + "역명": "하단", + "시간": "19:40:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1301, + "역명": "하단", + "시간": "21:51:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2322, + "역명": "하단", + "시간": "22:37:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2034, + "역명": "하단", + "시간": "07:40:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1067, + "역명": "하단", + "시간": "09:54:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2096, + "역명": "하단", + "시간": "10:36:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1125, + "역명": "하단", + "시간": "12:46:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2044, + "역명": "하단", + "시간": "08:05:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1075, + "역명": "하단", + "시간": "10:18:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2104, + "역명": "하단", + "시간": "11:00:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1135, + "역명": "하단", + "시간": "13:14:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2162, + "역명": "하단", + "시간": "13:57:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1199, + "역명": "하단", + "시간": "16:10:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2228, + "역명": "하단", + "시간": "16:56:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "하단", + "시간": "08:15:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1079, + "역명": "하단", + "시간": "10:30:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2108, + "역명": "하단", + "시간": "11:12:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1139, + "역명": "하단", + "시간": "13:25:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2166, + "역명": "하단", + "시간": "14:08:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1203, + "역명": "하단", + "시간": "16:21:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2232, + "역명": "하단", + "시간": "17:06:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1263, + "역명": "하단", + "시간": "19:19:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2288, + "역명": "하단", + "시간": "20:04:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1307, + "역명": "하단", + "시간": "22:15:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 24, + "열번": 2326, + "역명": "하단", + "시간": "23:01:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "하단", + "시간": "07:42:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2054, + "역명": "하단", + "시간": "08:30:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1083, + "역명": "하단", + "시간": "10:42:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2112, + "역명": "하단", + "시간": "11:24:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1143, + "역명": "하단", + "시간": "13:36:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2170, + "역명": "하단", + "시간": "14:19:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1207, + "역명": "하단", + "시간": "16:32:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2236, + "역명": "하단", + "시간": "17:16:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1267, + "역명": "하단", + "시간": "19:35:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2292, + "역명": "하단", + "시간": "20:20:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1311, + "역명": "하단", + "시간": "22:31:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2328, + "역명": "하단", + "시간": "23:11:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2052, + "역명": "하단", + "시간": "08:25:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1081, + "역명": "하단", + "시간": "10:36:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2110, + "역명": "하단", + "시간": "11:18:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1141, + "역명": "하단", + "시간": "13:30:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2168, + "역명": "하단", + "시간": "14:13:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1205, + "역명": "하단", + "시간": "16:26:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2234, + "역명": "하단", + "시간": "17:11:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1265, + "역명": "하단", + "시간": "19:27:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2290, + "역명": "하단", + "시간": "20:12:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1309, + "역명": "하단", + "시간": "22:23:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1025, + "역명": "하단", + "시간": "08:05:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2060, + "역명": "하단", + "시간": "08:48:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1089, + "역명": "하단", + "시간": "11:00:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2118, + "역명": "하단", + "시간": "11:42:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1151, + "역명": "하단", + "시간": "13:58:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2178, + "역명": "하단", + "시간": "14:41:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1215, + "역명": "하단", + "시간": "16:54:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2244, + "역명": "하단", + "시간": "17:40:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1271, + "역명": "하단", + "시간": "19:51:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2296, + "역명": "하단", + "시간": "20:36:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 27, + "열번": 1315, + "역명": "하단", + "시간": "22:51:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 28, + "열번": 1029, + "역명": "하단", + "시간": "08:15:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2064, + "역명": "하단", + "시간": "09:00:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1093, + "역명": "하단", + "시간": "11:12:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2122, + "역명": "하단", + "시간": "11:54:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1155, + "역명": "하단", + "시간": "14:09:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2182, + "역명": "하단", + "시간": "14:52:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1219, + "역명": "하단", + "시간": "17:05:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1035, + "역명": "하단", + "시간": "08:30:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2068, + "역명": "하단", + "시간": "09:12:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1097, + "역명": "하단", + "시간": "11:24:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2126, + "역명": "하단", + "시간": "12:06:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1159, + "역명": "하단", + "시간": "14:20:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2186, + "역명": "하단", + "시간": "15:03:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1223, + "역명": "하단", + "시간": "17:16:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 29, + "열번": 2250, + "역명": "하단", + "시간": "17:58:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1031, + "역명": "하단", + "시간": "08:20:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1037, + "역명": "하단", + "시간": "08:35:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2070, + "역명": "하단", + "시간": "09:18:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1099, + "역명": "하단", + "시간": "11:30:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2128, + "역명": "하단", + "시간": "12:12:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1161, + "역명": "하단", + "시간": "14:25:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2188, + "역명": "하단", + "시간": "15:08:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1225, + "역명": "하단", + "시간": "17:21:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2252, + "역명": "하단", + "시간": "18:04:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1277, + "역명": "하단", + "시간": "20:15:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2302, + "역명": "하단", + "시간": "21:00:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1319, + "역명": "하단", + "시간": "23:11:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 32, + "열번": 1041, + "역명": "하단", + "시간": "08:45:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1045, + "역명": "하단", + "시간": "08:55:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2076, + "역명": "하단", + "시간": "09:36:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1105, + "역명": "하단", + "시간": "11:48:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2134, + "역명": "하단", + "시간": "12:30:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1167, + "역명": "하단", + "시간": "14:42:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2194, + "역명": "하단", + "시간": "15:25:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1231, + "역명": "하단", + "시간": "17:38:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 33, + "열번": 2258, + "역명": "하단", + "시간": "18:22:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 34, + "열번": 8904, + "역명": "하단", + "시간": "13:29:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1189, + "역명": "하단", + "시간": "15:42:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 34, + "열번": 2216, + "역명": "하단", + "시간": "16:25:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1251, + "역명": "하단", + "시간": "18:37:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 34, + "열번": 2276, + "역명": "하단", + "시간": "19:18:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1297, + "역명": "하단", + "시간": "21:35:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1047, + "역명": "하단", + "시간": "09:00:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2078, + "역명": "하단", + "시간": "09:42:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1107, + "역명": "하단", + "시간": "11:54:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2136, + "역명": "하단", + "시간": "12:36:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1169, + "역명": "하단", + "시간": "14:47:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2196, + "역명": "하단", + "시간": "15:30:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1233, + "역명": "하단", + "시간": "17:43:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2260, + "역명": "하단", + "시간": "18:28:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1283, + "역명": "하단", + "시간": "20:39:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2308, + "역명": "하단", + "시간": "21:25:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1325, + "역명": "하단", + "시간": "23:43:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 36, + "열번": 2226, + "역명": "하단", + "시간": "16:51:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1259, + "역명": "하단", + "시간": "19:05:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 36, + "열번": 2284, + "역명": "하단", + "시간": "19:48:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1303, + "역명": "하단", + "시간": "21:59:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1127, + "역명": "하단", + "시간": "12:52:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2154, + "역명": "하단", + "시간": "13:35:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1191, + "역명": "하단", + "시간": "15:48:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2218, + "역명": "하단", + "시간": "16:31:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1253, + "역명": "하단", + "시간": "18:44:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 37, + "열번": 2278, + "역명": "하단", + "시간": "19:25:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 39, + "열번": 1149, + "역명": "하단", + "시간": "13:52:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2176, + "역명": "하단", + "시간": "14:35:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1213, + "역명": "하단", + "시간": "16:48:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 39, + "열번": 2242, + "역명": "하단", + "시간": "17:34:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 41, + "열번": 1175, + "역명": "하단", + "시간": "15:04:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2202, + "역명": "하단", + "시간": "15:47:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1239, + "역명": "하단", + "시간": "18:00:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2266, + "역명": "하단", + "시간": "18:46:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1289, + "역명": "하단", + "시간": "21:03:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2312, + "역명": "하단", + "시간": "21:45:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1327, + "역명": "하단", + "시간": "23:55:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "신평", + "시간": "05:18:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "신평", + "시간": "07:36:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2050, + "역명": "신평", + "시간": "08:17:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "신평", + "시간": "05:02:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "신평", + "시간": "07:27:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "신평", + "시간": "08:07:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1077, + "역명": "신평", + "시간": "10:27:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2106, + "역명": "신평", + "시간": "11:03:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1137, + "역명": "신평", + "시간": "13:22:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2164, + "역명": "신평", + "시간": "14:00:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1201, + "역명": "신평", + "시간": "16:18:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2230, + "역명": "신평", + "시간": "16:58:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1261, + "역명": "신평", + "시간": "19:15:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2286, + "역명": "신평", + "시간": "19:53:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1305, + "역명": "신평", + "시간": "22:10:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 2, + "열번": 2324, + "역명": "신평", + "시간": "22:46:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "신평", + "시간": "05:31:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "신평", + "시간": "07:54:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2056, + "역명": "신평", + "시간": "08:33:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1085, + "역명": "신평", + "시간": "10:51:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2114, + "역명": "신평", + "시간": "11:27:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1145, + "역명": "신평", + "시간": "13:44:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2172, + "역명": "신평", + "시간": "14:22:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1209, + "역명": "신평", + "시간": "16:40:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2238, + "역명": "신평", + "시간": "17:19:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 4, + "열번": 7901, + "역명": "신평", + "시간": "05:06:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "신평", + "시간": "05:44:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1023, + "역명": "신평", + "시간": "08:01:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2058, + "역명": "신평", + "시간": "08:39:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1087, + "역명": "신평", + "시간": "10:57:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2116, + "역명": "신평", + "시간": "11:33:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1147, + "역명": "신평", + "시간": "13:50:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2174, + "역명": "신평", + "시간": "14:27:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1211, + "역명": "신평", + "시간": "16:46:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2240, + "역명": "신평", + "시간": "17:25:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1269, + "역명": "신평", + "시간": "19:46:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2294, + "역명": "신평", + "시간": "20:25:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1313, + "역명": "신평", + "시간": "22:44:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2330, + "역명": "신평", + "시간": "23:24:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 5, + "열번": 1001, + "역명": "신평", + "시간": "06:14:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2018, + "역명": "신평", + "시간": "06:52:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1051, + "역명": "신평", + "시간": "09:13:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2082, + "역명": "신평", + "시간": "09:51:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1111, + "역명": "신평", + "시간": "12:09:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2140, + "역명": "신평", + "시간": "12:45:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1173, + "역명": "신평", + "시간": "15:01:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2200, + "역명": "신평", + "시간": "15:39:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1237, + "역명": "신평", + "시간": "17:57:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2264, + "역명": "신평", + "시간": "18:37:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1287, + "역명": "신평", + "시간": "20:58:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2310, + "역명": "신평", + "시간": "21:32:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 6, + "열번": 7903, + "역명": "신평", + "시간": "05:18:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2008, + "역명": "신평", + "시간": "05:56:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1027, + "역명": "신평", + "시간": "08:13:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2062, + "역명": "신평", + "시간": "08:51:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1091, + "역명": "신평", + "시간": "11:09:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2120, + "역명": "신평", + "시간": "11:45:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1153, + "역명": "신평", + "시간": "14:06:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2180, + "역명": "신평", + "시간": "14:44:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1217, + "역명": "신평", + "시간": "17:02:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2246, + "역명": "신평", + "시간": "17:43:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1273, + "역명": "신평", + "시간": "20:02:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2298, + "역명": "신평", + "시간": "20:41:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1317, + "역명": "신평", + "시간": "23:04:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 6, + "열번": 4802, + "역명": "신평", + "시간": "23:39:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1003, + "역명": "신평", + "시간": "06:22:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2020, + "역명": "신평", + "시간": "07:00:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1053, + "역명": "신평", + "시간": "09:18:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2084, + "역명": "신평", + "시간": "09:57:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1113, + "역명": "신평", + "시간": "12:15:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2142, + "역명": "신평", + "시간": "12:51:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1177, + "역명": "신평", + "시간": "15:12:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2204, + "역명": "신평", + "시간": "15:50:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1241, + "역명": "신평", + "시간": "18:09:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2268, + "역명": "신평", + "시간": "18:49:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1291, + "역명": "신평", + "시간": "21:14:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2314, + "역명": "신평", + "시간": "21:52:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 7, + "열번": 1329, + "역명": "신평", + "시간": "00:10:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 8, + "열번": 7905, + "역명": "신평", + "시간": "05:30:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2010, + "역명": "신평", + "시간": "06:08:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1033, + "역명": "신평", + "시간": "08:28:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2066, + "역명": "신평", + "시간": "09:03:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1095, + "역명": "신평", + "시간": "11:21:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2124, + "역명": "신평", + "시간": "11:57:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1157, + "역명": "신평", + "시간": "14:17:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2184, + "역명": "신평", + "시간": "14:55:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1221, + "역명": "신평", + "시간": "17:13:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2248, + "역명": "신평", + "시간": "17:49:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1275, + "역명": "신평", + "시간": "20:10:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 8, + "열번": 2300, + "역명": "신평", + "시간": "20:49:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 9, + "열번": 2022, + "역명": "신평", + "시간": "07:06:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1055, + "역명": "신평", + "시간": "09:23:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2086, + "역명": "신평", + "시간": "10:03:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1115, + "역명": "신평", + "시간": "12:21:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2144, + "역명": "신평", + "시간": "12:57:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1179, + "역명": "신평", + "시간": "15:18:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2206, + "역명": "신평", + "시간": "15:55:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1243, + "역명": "신평", + "시간": "18:15:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 9, + "열번": 2270, + "역명": "신평", + "시간": "18:55:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 10, + "열번": 7907, + "역명": "신평", + "시간": "05:42:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2012, + "역명": "신평", + "시간": "06:20:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1039, + "역명": "신평", + "시간": "08:43:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2072, + "역명": "신평", + "시간": "09:21:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1101, + "역명": "신평", + "시간": "11:39:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2130, + "역명": "신평", + "시간": "12:15:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1163, + "역명": "신평", + "시간": "14:34:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2190, + "역명": "신평", + "시간": "15:11:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1227, + "역명": "신평", + "시간": "17:30:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2254, + "역명": "신평", + "시간": "18:07:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1279, + "역명": "신평", + "시간": "20:26:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2304, + "역명": "신평", + "시간": "21:05:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1321, + "역명": "신평", + "시간": "23:24:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 10, + "열번": 4804, + "역명": "신평", + "시간": "23:59:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 11, + "열번": 1005, + "역명": "신평", + "시간": "06:33:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2024, + "역명": "신평", + "시간": "07:12:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1057, + "역명": "신평", + "시간": "09:28:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2088, + "역명": "신평", + "시간": "10:09:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1117, + "역명": "신평", + "시간": "12:27:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2146, + "역명": "신평", + "시간": "13:03:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1181, + "역명": "신평", + "시간": "15:23:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2208, + "역명": "신평", + "시간": "16:01:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1245, + "역명": "신평", + "시간": "18:21:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2272, + "역명": "신평", + "시간": "19:01:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1293, + "역명": "신평", + "시간": "21:22:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2316, + "역명": "신평", + "시간": "22:02:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 11, + "열번": 1331, + "역명": "신평", + "시간": "00:21:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 12, + "열번": 7909, + "역명": "신평", + "시간": "05:54:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2014, + "역명": "신평", + "시간": "06:32:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1043, + "역명": "신평", + "시간": "08:53:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2074, + "역명": "신평", + "시간": "09:27:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1103, + "역명": "신평", + "시간": "11:45:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2132, + "역명": "신평", + "시간": "12:21:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1165, + "역명": "신평", + "시간": "14:39:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "신평", + "시간": "15:17:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1229, + "역명": "신평", + "시간": "17:35:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2256, + "역명": "신평", + "시간": "18:13:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1281, + "역명": "신평", + "시간": "20:34:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2306, + "역명": "신평", + "시간": "21:13:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1323, + "역명": "신평", + "시간": "23:35:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 12, + "열번": 4806, + "역명": "신평", + "시간": "00:10:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1009, + "역명": "신평", + "시간": "06:55:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2032, + "역명": "신평", + "시간": "07:32:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1065, + "역명": "신평", + "시간": "09:51:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2094, + "역명": "신평", + "시간": "10:27:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1123, + "역명": "신평", + "시간": "12:44:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2152, + "역명": "신평", + "시간": "13:21:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1187, + "역명": "신평", + "시간": "15:40:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 13, + "열번": 2214, + "역명": "신평", + "시간": "16:17:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 14, + "열번": 7911, + "역명": "신평", + "시간": "06:05:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2016, + "역명": "신평", + "시간": "06:43:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1049, + "역명": "신평", + "시간": "09:08:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2080, + "역명": "신평", + "시간": "09:45:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1109, + "역명": "신평", + "시간": "12:03:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2138, + "역명": "신평", + "시간": "12:39:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1171, + "역명": "신평", + "시간": "14:56:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2198, + "역명": "신평", + "시간": "15:33:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1235, + "역명": "신평", + "시간": "17:52:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2262, + "역명": "신평", + "시간": "18:31:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1285, + "역명": "신평", + "시간": "20:50:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 14, + "열번": 4012, + "역명": "신평", + "시간": "21:25:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1011, + "역명": "신평", + "시간": "07:06:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2036, + "역명": "신평", + "시간": "07:42:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1069, + "역명": "신평", + "시간": "10:03:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2098, + "역명": "신평", + "시간": "10:39:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1129, + "역명": "신평", + "시간": "13:00:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2156, + "역명": "신평", + "시간": "13:38:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1193, + "역명": "신평", + "시간": "15:56:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2220, + "역명": "신평", + "시간": "16:33:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1255, + "역명": "신평", + "시간": "18:54:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2280, + "역명": "신평", + "시간": "19:29:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1299, + "역명": "신평", + "시간": "21:46:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2320, + "역명": "신평", + "시간": "22:22:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 16, + "열번": 7913, + "역명": "신평", + "시간": "06:41:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2026, + "역명": "신평", + "시간": "07:17:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 16, + "열번": 1059, + "역명": "신평", + "시간": "09:33:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2038, + "역명": "신평", + "시간": "07:47:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 18, + "열번": 1007, + "역명": "신평", + "시간": "06:44:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2028, + "역명": "신평", + "시간": "07:22:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1061, + "역명": "신평", + "시간": "09:39:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2090, + "역명": "신평", + "시간": "10:15:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1119, + "역명": "신평", + "시간": "12:33:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2148, + "역명": "신평", + "시간": "13:09:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1183, + "역명": "신평", + "시간": "15:29:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2210, + "역명": "신평", + "시간": "16:06:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1247, + "역명": "신평", + "시간": "18:27:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 18, + "열번": 4010, + "역명": "신평", + "시간": "19:03:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 19, + "열번": 7919, + "역명": "신평", + "시간": "07:13:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2040, + "역명": "신평", + "시간": "07:52:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1071, + "역명": "신평", + "시간": "10:09:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2100, + "역명": "신평", + "시간": "10:45:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1131, + "역명": "신평", + "시간": "13:06:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2158, + "역명": "신평", + "시간": "13:43:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1195, + "역명": "신평", + "시간": "16:02:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2222, + "역명": "신평", + "시간": "16:38:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 20, + "열번": 7915, + "역명": "신평", + "시간": "06:52:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2030, + "역명": "신평", + "시간": "07:27:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1063, + "역명": "신평", + "시간": "09:45:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2092, + "역명": "신평", + "시간": "10:21:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1121, + "역명": "신평", + "시간": "12:38:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2150, + "역명": "신평", + "시간": "13:15:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1185, + "역명": "신평", + "시간": "15:34:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2212, + "역명": "신평", + "시간": "16:12:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1249, + "역명": "신평", + "시간": "18:33:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2274, + "역명": "신평", + "시간": "19:08:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1295, + "역명": "신평", + "시간": "21:30:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2318, + "역명": "신평", + "시간": "22:12:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 20, + "열번": 7931, + "역명": "신평", + "시간": "00:37:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 21, + "열번": 1013, + "역명": "신평", + "시간": "07:17:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2042, + "역명": "신평", + "시간": "07:57:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1073, + "역명": "신평", + "시간": "10:15:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2102, + "역명": "신평", + "시간": "10:51:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1133, + "역명": "신평", + "시간": "13:11:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2160, + "역명": "신평", + "시간": "13:49:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1197, + "역명": "신평", + "시간": "16:07:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2224, + "역명": "신평", + "시간": "16:43:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1257, + "역명": "신평", + "시간": "19:01:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2282, + "역명": "신평", + "시간": "19:37:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1301, + "역명": "신평", + "시간": "21:54:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2322, + "역명": "신평", + "시간": "22:34:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 22, + "열번": 7917, + "역명": "신평", + "시간": "07:01:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2034, + "역명": "신평", + "시간": "07:37:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1067, + "역명": "신평", + "시간": "09:57:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2096, + "역명": "신평", + "시간": "10:33:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1125, + "역명": "신평", + "시간": "12:49:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 22, + "열번": 4006, + "역명": "신평", + "시간": "13:28:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 23, + "열번": 7921, + "역명": "신평", + "시간": "07:23:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2044, + "역명": "신평", + "시간": "08:02:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1075, + "역명": "신평", + "시간": "10:21:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2104, + "역명": "신평", + "시간": "10:57:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1135, + "역명": "신평", + "시간": "13:17:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2162, + "역명": "신평", + "시간": "13:54:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1199, + "역명": "신평", + "시간": "16:13:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2228, + "역명": "신평", + "시간": "16:53:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 24, + "열번": 7923, + "역명": "신평", + "시간": "07:33:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "신평", + "시간": "08:12:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1079, + "역명": "신평", + "시간": "10:33:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2108, + "역명": "신평", + "시간": "11:09:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1139, + "역명": "신평", + "시간": "13:28:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2166, + "역명": "신평", + "시간": "14:05:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1203, + "역명": "신평", + "시간": "16:24:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2232, + "역명": "신평", + "시간": "17:03:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1263, + "역명": "신평", + "시간": "19:22:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2288, + "역명": "신평", + "시간": "20:01:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1307, + "역명": "신평", + "시간": "22:18:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 24, + "열번": 2326, + "역명": "신평", + "시간": "22:58:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "신평", + "시간": "07:45:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2054, + "역명": "신평", + "시간": "08:27:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1083, + "역명": "신평", + "시간": "10:45:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2112, + "역명": "신평", + "시간": "11:21:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1143, + "역명": "신평", + "시간": "13:39:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2170, + "역명": "신평", + "시간": "14:16:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1207, + "역명": "신평", + "시간": "16:35:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2236, + "역명": "신평", + "시간": "17:13:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1267, + "역명": "신평", + "시간": "19:38:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2292, + "역명": "신평", + "시간": "20:17:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1311, + "역명": "신평", + "시간": "22:34:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2328, + "역명": "신평", + "시간": "23:09:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 26, + "열번": 7925, + "역명": "신평", + "시간": "07:42:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2052, + "역명": "신평", + "시간": "08:22:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1081, + "역명": "신평", + "시간": "10:39:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2110, + "역명": "신평", + "시간": "11:15:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1141, + "역명": "신평", + "시간": "13:33:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2168, + "역명": "신평", + "시간": "14:11:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1205, + "역명": "신평", + "시간": "16:29:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2234, + "역명": "신평", + "시간": "17:08:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1265, + "역명": "신평", + "시간": "19:30:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2290, + "역명": "신평", + "시간": "20:09:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1309, + "역명": "신평", + "시간": "22:26:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 26, + "열번": 4018, + "역명": "신평", + "시간": "23:01:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1025, + "역명": "신평", + "시간": "08:08:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2060, + "역명": "신평", + "시간": "08:45:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1089, + "역명": "신평", + "시간": "11:03:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2118, + "역명": "신평", + "시간": "11:39:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1151, + "역명": "신평", + "시간": "14:01:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2178, + "역명": "신평", + "시간": "14:38:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1215, + "역명": "신평", + "시간": "16:57:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2244, + "역명": "신평", + "시간": "17:37:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1271, + "역명": "신평", + "시간": "19:54:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2296, + "역명": "신평", + "시간": "20:33:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 27, + "열번": 1315, + "역명": "신평", + "시간": "22:54:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 28, + "열번": 1029, + "역명": "신평", + "시간": "08:18:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2064, + "역명": "신평", + "시간": "08:57:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1093, + "역명": "신평", + "시간": "11:15:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2122, + "역명": "신평", + "시간": "11:51:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1155, + "역명": "신평", + "시간": "14:12:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2182, + "역명": "신평", + "시간": "14:49:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1219, + "역명": "신평", + "시간": "17:08:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 28, + "열번": 4008, + "역명": "신평", + "시간": "17:45:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1035, + "역명": "신평", + "시간": "08:33:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2068, + "역명": "신평", + "시간": "09:09:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1097, + "역명": "신평", + "시간": "11:27:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2126, + "역명": "신평", + "시간": "12:03:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1159, + "역명": "신평", + "시간": "14:23:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2186, + "역명": "신평", + "시간": "15:00:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1223, + "역명": "신평", + "시간": "17:19:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 29, + "열번": 2250, + "역명": "신평", + "시간": "17:55:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1031, + "역명": "신평", + "시간": "08:23:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 30, + "열번": 4002, + "역명": "신평", + "시간": "08:59:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1037, + "역명": "신평", + "시간": "08:38:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2070, + "역명": "신평", + "시간": "09:15:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1099, + "역명": "신평", + "시간": "11:33:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2128, + "역명": "신평", + "시간": "12:09:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1161, + "역명": "신평", + "시간": "14:28:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2188, + "역명": "신평", + "시간": "15:06:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1225, + "역명": "신평", + "시간": "17:24:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2252, + "역명": "신평", + "시간": "18:01:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1277, + "역명": "신평", + "시간": "20:18:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2302, + "역명": "신평", + "시간": "20:57:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1319, + "역명": "신평", + "시간": "23:14:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 32, + "열번": 1041, + "역명": "신평", + "시간": "08:48:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 32, + "열번": 4004, + "역명": "신평", + "시간": "09:23:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1045, + "역명": "신평", + "시간": "08:58:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2076, + "역명": "신평", + "시간": "09:33:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1105, + "역명": "신평", + "시간": "11:51:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2134, + "역명": "신평", + "시간": "12:27:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1167, + "역명": "신평", + "시간": "14:45:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2194, + "역명": "신평", + "시간": "15:22:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1231, + "역명": "신평", + "시간": "17:41:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 33, + "열번": 2258, + "역명": "신평", + "시간": "18:19:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 34, + "열번": 8904, + "역명": "신평", + "시간": "13:27:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1189, + "역명": "신평", + "시간": "15:45:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 34, + "열번": 2216, + "역명": "신평", + "시간": "16:23:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1251, + "역명": "신평", + "시간": "18:40:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 34, + "열번": 2276, + "역명": "신평", + "시간": "19:15:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1297, + "역명": "신평", + "시간": "21:38:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 34, + "열번": 4014, + "역명": "신평", + "시간": "22:14:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1047, + "역명": "신평", + "시간": "09:03:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2078, + "역명": "신평", + "시간": "09:39:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1107, + "역명": "신평", + "시간": "11:57:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2136, + "역명": "신평", + "시간": "12:33:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1169, + "역명": "신평", + "시간": "14:50:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2196, + "역명": "신평", + "시간": "15:28:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1233, + "역명": "신평", + "시간": "17:46:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2260, + "역명": "신평", + "시간": "18:25:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1283, + "역명": "신평", + "시간": "20:42:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2308, + "역명": "신평", + "시간": "21:22:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1325, + "역명": "신평", + "시간": "23:46:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 35, + "열번": 4808, + "역명": "신평", + "시간": "00:21:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 36, + "열번": 2226, + "역명": "신평", + "시간": "16:48:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1259, + "역명": "신평", + "시간": "19:08:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 36, + "열번": 2284, + "역명": "신평", + "시간": "19:45:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1303, + "역명": "신평", + "시간": "22:02:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 36, + "열번": 4016, + "역명": "신평", + "시간": "22:37:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1127, + "역명": "신평", + "시간": "12:55:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2154, + "역명": "신평", + "시간": "13:32:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1191, + "역명": "신평", + "시간": "15:51:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2218, + "역명": "신평", + "시간": "16:28:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1253, + "역명": "신평", + "시간": "18:47:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 37, + "열번": 2278, + "역명": "신평", + "시간": "19:22:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 39, + "열번": 1149, + "역명": "신평", + "시간": "13:55:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2176, + "역명": "신평", + "시간": "14:33:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1213, + "역명": "신평", + "시간": "16:51:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 39, + "열번": 2242, + "역명": "신평", + "시간": "17:31:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 41, + "열번": 1175, + "역명": "신평", + "시간": "15:07:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2202, + "역명": "신평", + "시간": "15:44:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1239, + "역명": "신평", + "시간": "18:03:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2266, + "역명": "신평", + "시간": "18:43:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1289, + "역명": "신평", + "시간": "21:06:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2312, + "역명": "신평", + "시간": "21:42:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1327, + "역명": "신평", + "시간": "23:58:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 4810, + "역명": "신평", + "시간": "00:33:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "동매", + "시간": "05:15:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "동매", + "시간": "07:39:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2050, + "역명": "동매", + "시간": "08:14:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "동매", + "시간": "07:30:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "동매", + "시간": "08:04:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1077, + "역명": "동매", + "시간": "10:30:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2106, + "역명": "동매", + "시간": "11:00:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1137, + "역명": "동매", + "시간": "13:25:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2164, + "역명": "동매", + "시간": "13:57:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1201, + "역명": "동매", + "시간": "16:21:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2230, + "역명": "동매", + "시간": "16:55:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1261, + "역명": "동매", + "시간": "19:18:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2286, + "역명": "동매", + "시간": "19:50:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1305, + "역명": "동매", + "시간": "22:13:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 2, + "열번": 2324, + "역명": "동매", + "시간": "22:43:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "동매", + "시간": "05:28:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "동매", + "시간": "07:57:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2056, + "역명": "동매", + "시간": "08:30:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1085, + "역명": "동매", + "시간": "10:54:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2114, + "역명": "동매", + "시간": "11:24:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1145, + "역명": "동매", + "시간": "13:47:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2172, + "역명": "동매", + "시간": "14:19:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1209, + "역명": "동매", + "시간": "16:43:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2238, + "역명": "동매", + "시간": "17:16:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 4, + "열번": 7901, + "역명": "동매", + "시간": "05:08:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "동매", + "시간": "05:41:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1023, + "역명": "동매", + "시간": "08:04:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2058, + "역명": "동매", + "시간": "08:36:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1087, + "역명": "동매", + "시간": "11:00:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2116, + "역명": "동매", + "시간": "11:30:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1147, + "역명": "동매", + "시간": "13:53:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2174, + "역명": "동매", + "시간": "14:24:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1211, + "역명": "동매", + "시간": "16:49:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2240, + "역명": "동매", + "시간": "17:22:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1269, + "역명": "동매", + "시간": "19:49:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2294, + "역명": "동매", + "시간": "20:22:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1313, + "역명": "동매", + "시간": "22:47:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2330, + "역명": "동매", + "시간": "23:21:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 5, + "열번": 1001, + "역명": "동매", + "시간": "06:17:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2018, + "역명": "동매", + "시간": "06:49:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1051, + "역명": "동매", + "시간": "09:16:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2082, + "역명": "동매", + "시간": "09:48:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1111, + "역명": "동매", + "시간": "12:12:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2140, + "역명": "동매", + "시간": "12:42:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1173, + "역명": "동매", + "시간": "15:04:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2200, + "역명": "동매", + "시간": "15:36:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1237, + "역명": "동매", + "시간": "18:00:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2264, + "역명": "동매", + "시간": "18:34:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1287, + "역명": "동매", + "시간": "21:01:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2310, + "역명": "동매", + "시간": "21:29:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 6, + "열번": 7903, + "역명": "동매", + "시간": "05:20:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2008, + "역명": "동매", + "시간": "05:53:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1027, + "역명": "동매", + "시간": "08:16:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2062, + "역명": "동매", + "시간": "08:48:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1091, + "역명": "동매", + "시간": "11:12:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2120, + "역명": "동매", + "시간": "11:42:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1153, + "역명": "동매", + "시간": "14:09:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2180, + "역명": "동매", + "시간": "14:41:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1217, + "역명": "동매", + "시간": "17:05:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2246, + "역명": "동매", + "시간": "17:40:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1273, + "역명": "동매", + "시간": "20:05:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2298, + "역명": "동매", + "시간": "20:38:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1317, + "역명": "동매", + "시간": "23:07:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1003, + "역명": "동매", + "시간": "06:25:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2020, + "역명": "동매", + "시간": "06:57:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1053, + "역명": "동매", + "시간": "09:21:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2084, + "역명": "동매", + "시간": "09:54:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1113, + "역명": "동매", + "시간": "12:18:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2142, + "역명": "동매", + "시간": "12:48:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1177, + "역명": "동매", + "시간": "15:15:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2204, + "역명": "동매", + "시간": "15:47:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1241, + "역명": "동매", + "시간": "18:12:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2268, + "역명": "동매", + "시간": "18:46:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1291, + "역명": "동매", + "시간": "21:17:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2314, + "역명": "동매", + "시간": "21:49:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 7, + "열번": 1329, + "역명": "동매", + "시간": "00:13:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 8, + "열번": 7905, + "역명": "동매", + "시간": "05:32:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2010, + "역명": "동매", + "시간": "06:05:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1033, + "역명": "동매", + "시간": "08:31:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2066, + "역명": "동매", + "시간": "09:00:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1095, + "역명": "동매", + "시간": "11:24:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2124, + "역명": "동매", + "시간": "11:54:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1157, + "역명": "동매", + "시간": "14:20:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2184, + "역명": "동매", + "시간": "14:52:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1221, + "역명": "동매", + "시간": "17:16:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2248, + "역명": "동매", + "시간": "17:46:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1275, + "역명": "동매", + "시간": "20:13:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 8, + "열번": 2300, + "역명": "동매", + "시간": "20:46:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 9, + "열번": 2022, + "역명": "동매", + "시간": "07:03:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1055, + "역명": "동매", + "시간": "09:26:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2086, + "역명": "동매", + "시간": "10:00:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1115, + "역명": "동매", + "시간": "12:24:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2144, + "역명": "동매", + "시간": "12:54:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1179, + "역명": "동매", + "시간": "15:21:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2206, + "역명": "동매", + "시간": "15:52:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1243, + "역명": "동매", + "시간": "18:18:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 9, + "열번": 2270, + "역명": "동매", + "시간": "18:52:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 10, + "열번": 7907, + "역명": "동매", + "시간": "05:44:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2012, + "역명": "동매", + "시간": "06:17:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1039, + "역명": "동매", + "시간": "08:46:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2072, + "역명": "동매", + "시간": "09:18:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1101, + "역명": "동매", + "시간": "11:42:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2130, + "역명": "동매", + "시간": "12:12:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1163, + "역명": "동매", + "시간": "14:37:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2190, + "역명": "동매", + "시간": "15:08:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1227, + "역명": "동매", + "시간": "17:33:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2254, + "역명": "동매", + "시간": "18:04:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1279, + "역명": "동매", + "시간": "20:29:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2304, + "역명": "동매", + "시간": "21:02:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1321, + "역명": "동매", + "시간": "23:27:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 11, + "열번": 1005, + "역명": "동매", + "시간": "06:36:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2024, + "역명": "동매", + "시간": "07:09:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1057, + "역명": "동매", + "시간": "09:31:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2088, + "역명": "동매", + "시간": "10:06:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1117, + "역명": "동매", + "시간": "12:30:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2146, + "역명": "동매", + "시간": "13:00:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1181, + "역명": "동매", + "시간": "15:26:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2208, + "역명": "동매", + "시간": "15:58:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1245, + "역명": "동매", + "시간": "18:24:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2272, + "역명": "동매", + "시간": "18:58:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1293, + "역명": "동매", + "시간": "21:25:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2316, + "역명": "동매", + "시간": "21:59:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 11, + "열번": 1331, + "역명": "동매", + "시간": "00:24:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 12, + "열번": 7909, + "역명": "동매", + "시간": "05:56:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2014, + "역명": "동매", + "시간": "06:29:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1043, + "역명": "동매", + "시간": "08:56:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2074, + "역명": "동매", + "시간": "09:24:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1103, + "역명": "동매", + "시간": "11:48:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2132, + "역명": "동매", + "시간": "12:18:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1165, + "역명": "동매", + "시간": "14:42:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "동매", + "시간": "15:14:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1229, + "역명": "동매", + "시간": "17:38:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2256, + "역명": "동매", + "시간": "18:10:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1281, + "역명": "동매", + "시간": "20:37:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2306, + "역명": "동매", + "시간": "21:10:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1323, + "역명": "동매", + "시간": "23:38:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1009, + "역명": "동매", + "시간": "06:58:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2032, + "역명": "동매", + "시간": "07:29:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1065, + "역명": "동매", + "시간": "09:54:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2094, + "역명": "동매", + "시간": "10:24:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1123, + "역명": "동매", + "시간": "12:47:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2152, + "역명": "동매", + "시간": "13:18:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1187, + "역명": "동매", + "시간": "15:43:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 13, + "열번": 2214, + "역명": "동매", + "시간": "16:14:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 14, + "열번": 7911, + "역명": "동매", + "시간": "06:07:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2016, + "역명": "동매", + "시간": "06:40:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1049, + "역명": "동매", + "시간": "09:11:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2080, + "역명": "동매", + "시간": "09:42:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1109, + "역명": "동매", + "시간": "12:06:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2138, + "역명": "동매", + "시간": "12:36:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1171, + "역명": "동매", + "시간": "14:59:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2198, + "역명": "동매", + "시간": "15:30:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1235, + "역명": "동매", + "시간": "17:55:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2262, + "역명": "동매", + "시간": "18:28:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1285, + "역명": "동매", + "시간": "20:53:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1011, + "역명": "동매", + "시간": "07:09:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2036, + "역명": "동매", + "시간": "07:39:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1069, + "역명": "동매", + "시간": "10:06:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2098, + "역명": "동매", + "시간": "10:36:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1129, + "역명": "동매", + "시간": "13:03:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2156, + "역명": "동매", + "시간": "13:35:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1193, + "역명": "동매", + "시간": "15:59:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2220, + "역명": "동매", + "시간": "16:30:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1255, + "역명": "동매", + "시간": "18:57:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2280, + "역명": "동매", + "시간": "19:26:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1299, + "역명": "동매", + "시간": "21:49:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2320, + "역명": "동매", + "시간": "22:19:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 16, + "열번": 7913, + "역명": "동매", + "시간": "06:43:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2026, + "역명": "동매", + "시간": "07:14:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 16, + "열번": 1059, + "역명": "동매", + "시간": "09:36:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2038, + "역명": "동매", + "시간": "07:44:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 18, + "열번": 1007, + "역명": "동매", + "시간": "06:47:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2028, + "역명": "동매", + "시간": "07:19:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1061, + "역명": "동매", + "시간": "09:42:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2090, + "역명": "동매", + "시간": "10:12:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1119, + "역명": "동매", + "시간": "12:36:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2148, + "역명": "동매", + "시간": "13:06:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1183, + "역명": "동매", + "시간": "15:32:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2210, + "역명": "동매", + "시간": "16:03:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1247, + "역명": "동매", + "시간": "18:30:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 19, + "열번": 7919, + "역명": "동매", + "시간": "07:15:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2040, + "역명": "동매", + "시간": "07:49:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1071, + "역명": "동매", + "시간": "10:12:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2100, + "역명": "동매", + "시간": "10:42:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1131, + "역명": "동매", + "시간": "13:09:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2158, + "역명": "동매", + "시간": "13:40:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1195, + "역명": "동매", + "시간": "16:05:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2222, + "역명": "동매", + "시간": "16:35:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 20, + "열번": 7915, + "역명": "동매", + "시간": "06:54:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2030, + "역명": "동매", + "시간": "07:24:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1063, + "역명": "동매", + "시간": "09:48:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2092, + "역명": "동매", + "시간": "10:18:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1121, + "역명": "동매", + "시간": "12:41:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2150, + "역명": "동매", + "시간": "13:12:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1185, + "역명": "동매", + "시간": "15:37:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2212, + "역명": "동매", + "시간": "16:09:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1249, + "역명": "동매", + "시간": "18:36:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2274, + "역명": "동매", + "시간": "19:05:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1295, + "역명": "동매", + "시간": "21:33:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2318, + "역명": "동매", + "시간": "22:09:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 21, + "열번": 1013, + "역명": "동매", + "시간": "07:20:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2042, + "역명": "동매", + "시간": "07:54:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1073, + "역명": "동매", + "시간": "10:18:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2102, + "역명": "동매", + "시간": "10:48:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1133, + "역명": "동매", + "시간": "13:14:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2160, + "역명": "동매", + "시간": "13:46:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1197, + "역명": "동매", + "시간": "16:10:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2224, + "역명": "동매", + "시간": "16:40:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1257, + "역명": "동매", + "시간": "19:04:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2282, + "역명": "동매", + "시간": "19:34:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1301, + "역명": "동매", + "시간": "21:57:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2322, + "역명": "동매", + "시간": "22:31:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 22, + "열번": 7917, + "역명": "동매", + "시간": "07:04:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2034, + "역명": "동매", + "시간": "07:34:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1067, + "역명": "동매", + "시간": "10:00:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2096, + "역명": "동매", + "시간": "10:30:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1125, + "역명": "동매", + "시간": "12:52:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 23, + "열번": 7921, + "역명": "동매", + "시간": "07:26:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2044, + "역명": "동매", + "시간": "07:59:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1075, + "역명": "동매", + "시간": "10:24:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2104, + "역명": "동매", + "시간": "10:54:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1135, + "역명": "동매", + "시간": "13:20:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2162, + "역명": "동매", + "시간": "13:51:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1199, + "역명": "동매", + "시간": "16:16:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2228, + "역명": "동매", + "시간": "16:50:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 24, + "열번": 7923, + "역명": "동매", + "시간": "07:36:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "동매", + "시간": "08:09:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1079, + "역명": "동매", + "시간": "10:36:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2108, + "역명": "동매", + "시간": "11:06:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1139, + "역명": "동매", + "시간": "13:31:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2166, + "역명": "동매", + "시간": "14:02:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1203, + "역명": "동매", + "시간": "16:27:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2232, + "역명": "동매", + "시간": "17:00:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1263, + "역명": "동매", + "시간": "19:25:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2288, + "역명": "동매", + "시간": "19:58:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1307, + "역명": "동매", + "시간": "22:21:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 24, + "열번": 2326, + "역명": "동매", + "시간": "22:55:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "동매", + "시간": "07:48:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2054, + "역명": "동매", + "시간": "08:24:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1083, + "역명": "동매", + "시간": "10:48:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2112, + "역명": "동매", + "시간": "11:18:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1143, + "역명": "동매", + "시간": "13:42:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2170, + "역명": "동매", + "시간": "14:13:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1207, + "역명": "동매", + "시간": "16:38:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2236, + "역명": "동매", + "시간": "17:10:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1267, + "역명": "동매", + "시간": "19:41:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2292, + "역명": "동매", + "시간": "20:14:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1311, + "역명": "동매", + "시간": "22:37:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2328, + "역명": "동매", + "시간": "23:05:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 26, + "열번": 7925, + "역명": "동매", + "시간": "07:45:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2052, + "역명": "동매", + "시간": "08:19:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1081, + "역명": "동매", + "시간": "10:42:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2110, + "역명": "동매", + "시간": "11:12:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1141, + "역명": "동매", + "시간": "13:36:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2168, + "역명": "동매", + "시간": "14:08:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1205, + "역명": "동매", + "시간": "16:32:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2234, + "역명": "동매", + "시간": "17:05:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1265, + "역명": "동매", + "시간": "19:33:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2290, + "역명": "동매", + "시간": "20:06:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1309, + "역명": "동매", + "시간": "22:29:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1025, + "역명": "동매", + "시간": "08:11:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2060, + "역명": "동매", + "시간": "08:42:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1089, + "역명": "동매", + "시간": "11:06:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2118, + "역명": "동매", + "시간": "11:36:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1151, + "역명": "동매", + "시간": "14:04:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2178, + "역명": "동매", + "시간": "14:35:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1215, + "역명": "동매", + "시간": "17:00:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2244, + "역명": "동매", + "시간": "17:34:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1271, + "역명": "동매", + "시간": "19:57:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2296, + "역명": "동매", + "시간": "20:30:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 27, + "열번": 1315, + "역명": "동매", + "시간": "22:57:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 28, + "열번": 1029, + "역명": "동매", + "시간": "08:21:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2064, + "역명": "동매", + "시간": "08:54:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1093, + "역명": "동매", + "시간": "11:18:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2122, + "역명": "동매", + "시간": "11:48:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1155, + "역명": "동매", + "시간": "14:15:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2182, + "역명": "동매", + "시간": "14:46:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1219, + "역명": "동매", + "시간": "17:11:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1035, + "역명": "동매", + "시간": "08:36:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2068, + "역명": "동매", + "시간": "09:06:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1097, + "역명": "동매", + "시간": "11:30:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2126, + "역명": "동매", + "시간": "12:00:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1159, + "역명": "동매", + "시간": "14:26:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2186, + "역명": "동매", + "시간": "14:57:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1223, + "역명": "동매", + "시간": "17:22:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 29, + "열번": 2250, + "역명": "동매", + "시간": "17:52:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1031, + "역명": "동매", + "시간": "08:26:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1037, + "역명": "동매", + "시간": "08:41:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2070, + "역명": "동매", + "시간": "09:12:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1099, + "역명": "동매", + "시간": "11:36:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2128, + "역명": "동매", + "시간": "12:06:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1161, + "역명": "동매", + "시간": "14:31:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2188, + "역명": "동매", + "시간": "15:03:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1225, + "역명": "동매", + "시간": "17:27:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2252, + "역명": "동매", + "시간": "17:58:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1277, + "역명": "동매", + "시간": "20:21:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2302, + "역명": "동매", + "시간": "20:54:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1319, + "역명": "동매", + "시간": "23:17:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 32, + "열번": 1041, + "역명": "동매", + "시간": "08:51:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1045, + "역명": "동매", + "시간": "09:01:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2076, + "역명": "동매", + "시간": "09:30:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1105, + "역명": "동매", + "시간": "11:54:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2134, + "역명": "동매", + "시간": "12:24:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1167, + "역명": "동매", + "시간": "14:48:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2194, + "역명": "동매", + "시간": "15:19:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1231, + "역명": "동매", + "시간": "17:44:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 33, + "열번": 2258, + "역명": "동매", + "시간": "18:16:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1189, + "역명": "동매", + "시간": "15:48:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 34, + "열번": 2216, + "역명": "동매", + "시간": "16:20:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1251, + "역명": "동매", + "시간": "18:43:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 34, + "열번": 2276, + "역명": "동매", + "시간": "19:12:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1297, + "역명": "동매", + "시간": "21:41:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1047, + "역명": "동매", + "시간": "09:06:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2078, + "역명": "동매", + "시간": "09:36:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1107, + "역명": "동매", + "시간": "12:00:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2136, + "역명": "동매", + "시간": "12:30:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1169, + "역명": "동매", + "시간": "14:53:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2196, + "역명": "동매", + "시간": "15:25:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1233, + "역명": "동매", + "시간": "17:49:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2260, + "역명": "동매", + "시간": "18:22:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1283, + "역명": "동매", + "시간": "20:45:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2308, + "역명": "동매", + "시간": "21:19:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1325, + "역명": "동매", + "시간": "23:49:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 36, + "열번": 2226, + "역명": "동매", + "시간": "16:45:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1259, + "역명": "동매", + "시간": "19:11:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 36, + "열번": 2284, + "역명": "동매", + "시간": "19:42:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1303, + "역명": "동매", + "시간": "22:05:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1127, + "역명": "동매", + "시간": "12:58:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2154, + "역명": "동매", + "시간": "13:29:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1191, + "역명": "동매", + "시간": "15:54:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2218, + "역명": "동매", + "시간": "16:25:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1253, + "역명": "동매", + "시간": "18:50:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 37, + "열번": 2278, + "역명": "동매", + "시간": "19:19:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 39, + "열번": 1149, + "역명": "동매", + "시간": "13:58:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2176, + "역명": "동매", + "시간": "14:30:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1213, + "역명": "동매", + "시간": "16:54:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 39, + "열번": 2242, + "역명": "동매", + "시간": "17:28:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 41, + "열번": 1175, + "역명": "동매", + "시간": "15:10:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2202, + "역명": "동매", + "시간": "15:41:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1239, + "역명": "동매", + "시간": "18:06:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2266, + "역명": "동매", + "시간": "18:40:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1289, + "역명": "동매", + "시간": "21:09:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2312, + "역명": "동매", + "시간": "21:39:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1327, + "역명": "동매", + "시간": "00:01:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "장림", + "시간": "05:12:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "장림", + "시간": "07:41:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2050, + "역명": "장림", + "시간": "08:12:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "장림", + "시간": "07:32:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "장림", + "시간": "08:02:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1077, + "역명": "장림", + "시간": "10:32:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2106, + "역명": "장림", + "시간": "10:58:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1137, + "역명": "장림", + "시간": "13:27:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2164, + "역명": "장림", + "시간": "13:54:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1201, + "역명": "장림", + "시간": "16:23:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2230, + "역명": "장림", + "시간": "16:53:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1261, + "역명": "장림", + "시간": "19:20:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2286, + "역명": "장림", + "시간": "19:48:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1305, + "역명": "장림", + "시간": "22:15:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 2, + "열번": 2324, + "역명": "장림", + "시간": "22:41:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "장림", + "시간": "05:26:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "장림", + "시간": "07:59:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2056, + "역명": "장림", + "시간": "08:28:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1085, + "역명": "장림", + "시간": "10:56:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2114, + "역명": "장림", + "시간": "11:22:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1145, + "역명": "장림", + "시간": "13:49:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2172, + "역명": "장림", + "시간": "14:16:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1209, + "역명": "장림", + "시간": "16:45:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2238, + "역명": "장림", + "시간": "17:14:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 4, + "열번": 7901, + "역명": "장림", + "시간": "05:11:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "장림", + "시간": "05:38:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1023, + "역명": "장림", + "시간": "08:06:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2058, + "역명": "장림", + "시간": "08:34:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1087, + "역명": "장림", + "시간": "11:02:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2116, + "역명": "장림", + "시간": "11:28:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1147, + "역명": "장림", + "시간": "13:55:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2174, + "역명": "장림", + "시간": "14:22:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1211, + "역명": "장림", + "시간": "16:51:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2240, + "역명": "장림", + "시간": "17:20:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1269, + "역명": "장림", + "시간": "19:51:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2294, + "역명": "장림", + "시간": "20:20:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1313, + "역명": "장림", + "시간": "22:49:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2330, + "역명": "장림", + "시간": "23:18:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 5, + "열번": 1001, + "역명": "장림", + "시간": "06:20:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2018, + "역명": "장림", + "시간": "06:46:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1051, + "역명": "장림", + "시간": "09:18:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2082, + "역명": "장림", + "시간": "09:46:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1111, + "역명": "장림", + "시간": "12:14:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2140, + "역명": "장림", + "시간": "12:40:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1173, + "역명": "장림", + "시간": "15:06:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2200, + "역명": "장림", + "시간": "15:33:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1237, + "역명": "장림", + "시간": "18:02:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2264, + "역명": "장림", + "시간": "18:32:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1287, + "역명": "장림", + "시간": "21:03:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2310, + "역명": "장림", + "시간": "21:27:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 6, + "열번": 7903, + "역명": "장림", + "시간": "05:23:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2008, + "역명": "장림", + "시간": "05:50:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1027, + "역명": "장림", + "시간": "08:18:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2062, + "역명": "장림", + "시간": "08:46:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1091, + "역명": "장림", + "시간": "11:14:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2120, + "역명": "장림", + "시간": "11:40:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1153, + "역명": "장림", + "시간": "14:11:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2180, + "역명": "장림", + "시간": "14:38:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1217, + "역명": "장림", + "시간": "17:07:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2246, + "역명": "장림", + "시간": "17:38:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1273, + "역명": "장림", + "시간": "20:07:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2298, + "역명": "장림", + "시간": "20:36:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1317, + "역명": "장림", + "시간": "23:09:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1003, + "역명": "장림", + "시간": "06:27:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2020, + "역명": "장림", + "시간": "06:55:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1053, + "역명": "장림", + "시간": "09:23:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2084, + "역명": "장림", + "시간": "09:52:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1113, + "역명": "장림", + "시간": "12:20:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2142, + "역명": "장림", + "시간": "12:46:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1177, + "역명": "장림", + "시간": "15:17:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2204, + "역명": "장림", + "시간": "15:44:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1241, + "역명": "장림", + "시간": "18:14:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2268, + "역명": "장림", + "시간": "18:44:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1291, + "역명": "장림", + "시간": "21:19:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2314, + "역명": "장림", + "시간": "21:47:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 7, + "열번": 1329, + "역명": "장림", + "시간": "00:15:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 8, + "열번": 7905, + "역명": "장림", + "시간": "05:35:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2010, + "역명": "장림", + "시간": "06:02:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1033, + "역명": "장림", + "시간": "08:33:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2066, + "역명": "장림", + "시간": "08:58:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1095, + "역명": "장림", + "시간": "11:26:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2124, + "역명": "장림", + "시간": "11:52:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1157, + "역명": "장림", + "시간": "14:22:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2184, + "역명": "장림", + "시간": "14:49:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1221, + "역명": "장림", + "시간": "17:18:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2248, + "역명": "장림", + "시간": "17:44:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1275, + "역명": "장림", + "시간": "20:15:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 8, + "열번": 2300, + "역명": "장림", + "시간": "20:44:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 9, + "열번": 2022, + "역명": "장림", + "시간": "07:01:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1055, + "역명": "장림", + "시간": "09:28:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2086, + "역명": "장림", + "시간": "09:58:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1115, + "역명": "장림", + "시간": "12:26:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2144, + "역명": "장림", + "시간": "12:52:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1179, + "역명": "장림", + "시간": "15:23:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2206, + "역명": "장림", + "시간": "15:50:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1243, + "역명": "장림", + "시간": "18:20:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 9, + "열번": 2270, + "역명": "장림", + "시간": "18:50:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 10, + "열번": 7907, + "역명": "장림", + "시간": "05:47:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2012, + "역명": "장림", + "시간": "06:14:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1039, + "역명": "장림", + "시간": "08:48:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2072, + "역명": "장림", + "시간": "09:16:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1101, + "역명": "장림", + "시간": "11:44:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2130, + "역명": "장림", + "시간": "12:10:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1163, + "역명": "장림", + "시간": "14:39:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2190, + "역명": "장림", + "시간": "15:06:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1227, + "역명": "장림", + "시간": "17:35:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2254, + "역명": "장림", + "시간": "18:02:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1279, + "역명": "장림", + "시간": "20:31:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2304, + "역명": "장림", + "시간": "21:00:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1321, + "역명": "장림", + "시간": "23:29:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 11, + "열번": 1005, + "역명": "장림", + "시간": "06:38:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2024, + "역명": "장림", + "시간": "07:07:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1057, + "역명": "장림", + "시간": "09:33:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2088, + "역명": "장림", + "시간": "10:04:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1117, + "역명": "장림", + "시간": "12:32:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2146, + "역명": "장림", + "시간": "12:58:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1181, + "역명": "장림", + "시간": "15:28:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2208, + "역명": "장림", + "시간": "15:55:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1245, + "역명": "장림", + "시간": "18:26:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2272, + "역명": "장림", + "시간": "18:56:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1293, + "역명": "장림", + "시간": "21:27:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2316, + "역명": "장림", + "시간": "21:57:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 11, + "열번": 1331, + "역명": "장림", + "시간": "00:27:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 12, + "열번": 7909, + "역명": "장림", + "시간": "05:59:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2014, + "역명": "장림", + "시간": "06:26:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1043, + "역명": "장림", + "시간": "08:58:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2074, + "역명": "장림", + "시간": "09:22:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1103, + "역명": "장림", + "시간": "11:50:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2132, + "역명": "장림", + "시간": "12:16:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1165, + "역명": "장림", + "시간": "14:44:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "장림", + "시간": "15:11:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1229, + "역명": "장림", + "시간": "17:40:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2256, + "역명": "장림", + "시간": "18:08:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1281, + "역명": "장림", + "시간": "20:39:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2306, + "역명": "장림", + "시간": "21:08:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1323, + "역명": "장림", + "시간": "23:40:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1009, + "역명": "장림", + "시간": "07:00:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2032, + "역명": "장림", + "시간": "07:27:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1065, + "역명": "장림", + "시간": "09:56:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2094, + "역명": "장림", + "시간": "10:22:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1123, + "역명": "장림", + "시간": "12:49:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2152, + "역명": "장림", + "시간": "13:16:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1187, + "역명": "장림", + "시간": "15:45:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 13, + "열번": 2214, + "역명": "장림", + "시간": "16:12:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 14, + "열번": 7911, + "역명": "장림", + "시간": "06:10:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2016, + "역명": "장림", + "시간": "06:37:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1049, + "역명": "장림", + "시간": "09:13:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2080, + "역명": "장림", + "시간": "09:40:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1109, + "역명": "장림", + "시간": "12:08:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2138, + "역명": "장림", + "시간": "12:34:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1171, + "역명": "장림", + "시간": "15:01:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2198, + "역명": "장림", + "시간": "15:28:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1235, + "역명": "장림", + "시간": "17:57:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2262, + "역명": "장림", + "시간": "18:26:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1285, + "역명": "장림", + "시간": "20:55:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1011, + "역명": "장림", + "시간": "07:11:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2036, + "역명": "장림", + "시간": "07:37:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1069, + "역명": "장림", + "시간": "10:08:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2098, + "역명": "장림", + "시간": "10:34:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1129, + "역명": "장림", + "시간": "13:05:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2156, + "역명": "장림", + "시간": "13:32:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1193, + "역명": "장림", + "시간": "16:01:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2220, + "역명": "장림", + "시간": "16:28:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1255, + "역명": "장림", + "시간": "18:59:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2280, + "역명": "장림", + "시간": "19:24:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1299, + "역명": "장림", + "시간": "21:51:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2320, + "역명": "장림", + "시간": "22:17:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 16, + "열번": 7913, + "역명": "장림", + "시간": "06:46:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2026, + "역명": "장림", + "시간": "07:12:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 16, + "열번": 1059, + "역명": "장림", + "시간": "09:38:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2038, + "역명": "장림", + "시간": "07:42:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 18, + "열번": 1007, + "역명": "장림", + "시간": "06:49:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2028, + "역명": "장림", + "시간": "07:17:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1061, + "역명": "장림", + "시간": "09:44:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2090, + "역명": "장림", + "시간": "10:10:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1119, + "역명": "장림", + "시간": "12:38:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2148, + "역명": "장림", + "시간": "13:04:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1183, + "역명": "장림", + "시간": "15:34:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2210, + "역명": "장림", + "시간": "16:01:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1247, + "역명": "장림", + "시간": "18:32:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 19, + "열번": 7919, + "역명": "장림", + "시간": "07:18:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2040, + "역명": "장림", + "시간": "07:47:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1071, + "역명": "장림", + "시간": "10:14:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2100, + "역명": "장림", + "시간": "10:40:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1131, + "역명": "장림", + "시간": "13:11:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2158, + "역명": "장림", + "시간": "13:38:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1195, + "역명": "장림", + "시간": "16:07:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2222, + "역명": "장림", + "시간": "16:33:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 20, + "열번": 7915, + "역명": "장림", + "시간": "06:57:05", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2030, + "역명": "장림", + "시간": "07:22:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1063, + "역명": "장림", + "시간": "09:50:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2092, + "역명": "장림", + "시간": "10:16:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1121, + "역명": "장림", + "시간": "12:43:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2150, + "역명": "장림", + "시간": "13:10:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1185, + "역명": "장림", + "시간": "15:39:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2212, + "역명": "장림", + "시간": "16:06:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1249, + "역명": "장림", + "시간": "18:38:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2274, + "역명": "장림", + "시간": "19:03:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1295, + "역명": "장림", + "시간": "21:35:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2318, + "역명": "장림", + "시간": "22:07:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 21, + "열번": 1013, + "역명": "장림", + "시간": "07:22:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2042, + "역명": "장림", + "시간": "07:52:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1073, + "역명": "장림", + "시간": "10:20:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2102, + "역명": "장림", + "시간": "10:46:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1133, + "역명": "장림", + "시간": "13:16:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2160, + "역명": "장림", + "시간": "13:43:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1197, + "역명": "장림", + "시간": "16:12:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2224, + "역명": "장림", + "시간": "16:38:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1257, + "역명": "장림", + "시간": "19:06:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2282, + "역명": "장림", + "시간": "19:32:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1301, + "역명": "장림", + "시간": "21:59:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2322, + "역명": "장림", + "시간": "22:29:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 22, + "열번": 7917, + "역명": "장림", + "시간": "07:06:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2034, + "역명": "장림", + "시간": "07:32:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1067, + "역명": "장림", + "시간": "10:02:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2096, + "역명": "장림", + "시간": "10:28:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1125, + "역명": "장림", + "시간": "12:54:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 23, + "열번": 7921, + "역명": "장림", + "시간": "07:28:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2044, + "역명": "장림", + "시간": "07:57:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1075, + "역명": "장림", + "시간": "10:26:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2104, + "역명": "장림", + "시간": "10:52:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1135, + "역명": "장림", + "시간": "13:22:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2162, + "역명": "장림", + "시간": "13:49:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1199, + "역명": "장림", + "시간": "16:18:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2228, + "역명": "장림", + "시간": "16:48:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 24, + "열번": 7923, + "역명": "장림", + "시간": "07:38:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "장림", + "시간": "08:07:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1079, + "역명": "장림", + "시간": "10:38:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2108, + "역명": "장림", + "시간": "11:04:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1139, + "역명": "장림", + "시간": "13:33:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2166, + "역명": "장림", + "시간": "14:00:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1203, + "역명": "장림", + "시간": "16:29:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2232, + "역명": "장림", + "시간": "16:58:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1263, + "역명": "장림", + "시간": "19:27:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2288, + "역명": "장림", + "시간": "19:56:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1307, + "역명": "장림", + "시간": "22:23:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 24, + "열번": 2326, + "역명": "장림", + "시간": "22:53:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "장림", + "시간": "07:50:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2054, + "역명": "장림", + "시간": "08:22:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1083, + "역명": "장림", + "시간": "10:50:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2112, + "역명": "장림", + "시간": "11:16:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1143, + "역명": "장림", + "시간": "13:44:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2170, + "역명": "장림", + "시간": "14:11:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1207, + "역명": "장림", + "시간": "16:40:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2236, + "역명": "장림", + "시간": "17:08:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1267, + "역명": "장림", + "시간": "19:43:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2292, + "역명": "장림", + "시간": "20:12:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1311, + "역명": "장림", + "시간": "22:39:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2328, + "역명": "장림", + "시간": "23:03:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 26, + "열번": 7925, + "역명": "장림", + "시간": "07:47:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2052, + "역명": "장림", + "시간": "08:17:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1081, + "역명": "장림", + "시간": "10:44:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2110, + "역명": "장림", + "시간": "11:10:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1141, + "역명": "장림", + "시간": "13:38:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2168, + "역명": "장림", + "시간": "14:05:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1205, + "역명": "장림", + "시간": "16:34:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2234, + "역명": "장림", + "시간": "17:03:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1265, + "역명": "장림", + "시간": "19:35:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2290, + "역명": "장림", + "시간": "20:04:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1309, + "역명": "장림", + "시간": "22:31:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1025, + "역명": "장림", + "시간": "08:13:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2060, + "역명": "장림", + "시간": "08:40:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1089, + "역명": "장림", + "시간": "11:08:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2118, + "역명": "장림", + "시간": "11:34:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1151, + "역명": "장림", + "시간": "14:06:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2178, + "역명": "장림", + "시간": "14:33:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1215, + "역명": "장림", + "시간": "17:02:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2244, + "역명": "장림", + "시간": "17:32:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1271, + "역명": "장림", + "시간": "19:59:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2296, + "역명": "장림", + "시간": "20:28:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 27, + "열번": 1315, + "역명": "장림", + "시간": "22:59:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 28, + "열번": 1029, + "역명": "장림", + "시간": "08:23:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2064, + "역명": "장림", + "시간": "08:52:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1093, + "역명": "장림", + "시간": "11:20:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2122, + "역명": "장림", + "시간": "11:46:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1155, + "역명": "장림", + "시간": "14:17:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2182, + "역명": "장림", + "시간": "14:44:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1219, + "역명": "장림", + "시간": "17:13:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1035, + "역명": "장림", + "시간": "08:38:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2068, + "역명": "장림", + "시간": "09:04:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1097, + "역명": "장림", + "시간": "11:32:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2126, + "역명": "장림", + "시간": "11:58:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1159, + "역명": "장림", + "시간": "14:28:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2186, + "역명": "장림", + "시간": "14:55:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1223, + "역명": "장림", + "시간": "17:24:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 29, + "열번": 2250, + "역명": "장림", + "시간": "17:50:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1031, + "역명": "장림", + "시간": "08:28:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1037, + "역명": "장림", + "시간": "08:43:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2070, + "역명": "장림", + "시간": "09:10:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1099, + "역명": "장림", + "시간": "11:38:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2128, + "역명": "장림", + "시간": "12:04:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1161, + "역명": "장림", + "시간": "14:33:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2188, + "역명": "장림", + "시간": "15:00:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1225, + "역명": "장림", + "시간": "17:29:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2252, + "역명": "장림", + "시간": "17:56:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1277, + "역명": "장림", + "시간": "20:23:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2302, + "역명": "장림", + "시간": "20:52:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1319, + "역명": "장림", + "시간": "23:19:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 32, + "열번": 1041, + "역명": "장림", + "시간": "08:53:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1045, + "역명": "장림", + "시간": "09:03:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2076, + "역명": "장림", + "시간": "09:28:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1105, + "역명": "장림", + "시간": "11:56:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2134, + "역명": "장림", + "시간": "12:22:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1167, + "역명": "장림", + "시간": "14:50:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2194, + "역명": "장림", + "시간": "15:17:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1231, + "역명": "장림", + "시간": "17:46:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 33, + "열번": 2258, + "역명": "장림", + "시간": "18:14:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1189, + "역명": "장림", + "시간": "15:50:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 34, + "열번": 2216, + "역명": "장림", + "시간": "16:17:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1251, + "역명": "장림", + "시간": "18:45:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 34, + "열번": 2276, + "역명": "장림", + "시간": "19:10:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1297, + "역명": "장림", + "시간": "21:43:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1047, + "역명": "장림", + "시간": "09:08:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2078, + "역명": "장림", + "시간": "09:34:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1107, + "역명": "장림", + "시간": "12:02:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2136, + "역명": "장림", + "시간": "12:28:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1169, + "역명": "장림", + "시간": "14:55:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2196, + "역명": "장림", + "시간": "15:22:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1233, + "역명": "장림", + "시간": "17:51:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2260, + "역명": "장림", + "시간": "18:20:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1283, + "역명": "장림", + "시간": "20:47:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2308, + "역명": "장림", + "시간": "21:17:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1325, + "역명": "장림", + "시간": "23:51:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 36, + "열번": 2226, + "역명": "장림", + "시간": "16:43:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1259, + "역명": "장림", + "시간": "19:13:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 36, + "열번": 2284, + "역명": "장림", + "시간": "19:40:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1303, + "역명": "장림", + "시간": "22:07:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1127, + "역명": "장림", + "시간": "13:00:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2154, + "역명": "장림", + "시간": "13:27:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1191, + "역명": "장림", + "시간": "15:56:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2218, + "역명": "장림", + "시간": "16:23:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1253, + "역명": "장림", + "시간": "18:52:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 37, + "열번": 2278, + "역명": "장림", + "시간": "19:17:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 39, + "열번": 1149, + "역명": "장림", + "시간": "14:00:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2176, + "역명": "장림", + "시간": "14:27:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1213, + "역명": "장림", + "시간": "16:56:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 39, + "열번": 2242, + "역명": "장림", + "시간": "17:26:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 41, + "열번": 1175, + "역명": "장림", + "시간": "15:12:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2202, + "역명": "장림", + "시간": "15:39:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1239, + "역명": "장림", + "시간": "18:08:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2266, + "역명": "장림", + "시간": "18:38:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1289, + "역명": "장림", + "시간": "21:11:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2312, + "역명": "장림", + "시간": "21:37:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1327, + "역명": "장림", + "시간": "00:03:25", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "신장림", + "시간": "05:11:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "신장림", + "시간": "07:43:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2050, + "역명": "신장림", + "시간": "08:10:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "신장림", + "시간": "07:34:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "신장림", + "시간": "08:00:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1077, + "역명": "신장림", + "시간": "10:34:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2106, + "역명": "신장림", + "시간": "10:56:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1137, + "역명": "신장림", + "시간": "13:29:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2164, + "역명": "신장림", + "시간": "13:53:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1201, + "역명": "신장림", + "시간": "16:25:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2230, + "역명": "신장림", + "시간": "16:51:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1261, + "역명": "신장림", + "시간": "19:22:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2286, + "역명": "신장림", + "시간": "19:46:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1305, + "역명": "신장림", + "시간": "22:17:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 2, + "열번": 2324, + "역명": "신장림", + "시간": "22:39:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "신장림", + "시간": "05:24:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "신장림", + "시간": "08:01:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2056, + "역명": "신장림", + "시간": "08:26:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1085, + "역명": "신장림", + "시간": "10:58:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2114, + "역명": "신장림", + "시간": "11:20:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1145, + "역명": "신장림", + "시간": "13:51:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2172, + "역명": "신장림", + "시간": "14:15:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1209, + "역명": "신장림", + "시간": "16:47:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2238, + "역명": "신장림", + "시간": "17:12:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 4, + "열번": 7901, + "역명": "신장림", + "시간": "05:12:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "신장림", + "시간": "05:37:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1023, + "역명": "신장림", + "시간": "08:08:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2058, + "역명": "신장림", + "시간": "08:32:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1087, + "역명": "신장림", + "시간": "11:04:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2116, + "역명": "신장림", + "시간": "11:26:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1147, + "역명": "신장림", + "시간": "13:57:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2174, + "역명": "신장림", + "시간": "14:20:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1211, + "역명": "신장림", + "시간": "16:53:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2240, + "역명": "신장림", + "시간": "17:18:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1269, + "역명": "신장림", + "시간": "19:53:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2294, + "역명": "신장림", + "시간": "20:18:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1313, + "역명": "신장림", + "시간": "22:51:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2330, + "역명": "신장림", + "시간": "23:17:25", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 5, + "열번": 1001, + "역명": "신장림", + "시간": "06:21:45", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2018, + "역명": "신장림", + "시간": "06:45:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1051, + "역명": "신장림", + "시간": "09:20:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2082, + "역명": "신장림", + "시간": "09:44:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1111, + "역명": "신장림", + "시간": "12:16:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2140, + "역명": "신장림", + "시간": "12:38:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1173, + "역명": "신장림", + "시간": "15:08:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2200, + "역명": "신장림", + "시간": "15:32:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1237, + "역명": "신장림", + "시간": "18:04:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2264, + "역명": "신장림", + "시간": "18:30:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1287, + "역명": "신장림", + "시간": "21:05:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2310, + "역명": "신장림", + "시간": "21:25:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 6, + "열번": 7903, + "역명": "신장림", + "시간": "05:24:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2008, + "역명": "신장림", + "시간": "05:49:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1027, + "역명": "신장림", + "시간": "08:20:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2062, + "역명": "신장림", + "시간": "08:44:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1091, + "역명": "신장림", + "시간": "11:16:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2120, + "역명": "신장림", + "시간": "11:38:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1153, + "역명": "신장림", + "시간": "14:13:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2180, + "역명": "신장림", + "시간": "14:37:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1217, + "역명": "신장림", + "시간": "17:09:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2246, + "역명": "신장림", + "시간": "17:36:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1273, + "역명": "신장림", + "시간": "20:09:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2298, + "역명": "신장림", + "시간": "20:34:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1317, + "역명": "신장림", + "시간": "23:11:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1003, + "역명": "신장림", + "시간": "06:29:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2020, + "역명": "신장림", + "시간": "06:53:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1053, + "역명": "신장림", + "시간": "09:25:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2084, + "역명": "신장림", + "시간": "09:50:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1113, + "역명": "신장림", + "시간": "12:22:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2142, + "역명": "신장림", + "시간": "12:44:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1177, + "역명": "신장림", + "시간": "15:19:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2204, + "역명": "신장림", + "시간": "15:43:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1241, + "역명": "신장림", + "시간": "18:16:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2268, + "역명": "신장림", + "시간": "18:42:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1291, + "역명": "신장림", + "시간": "21:21:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2314, + "역명": "신장림", + "시간": "21:45:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 7, + "열번": 1329, + "역명": "신장림", + "시간": "00:17:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 8, + "열번": 7905, + "역명": "신장림", + "시간": "05:36:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2010, + "역명": "신장림", + "시간": "06:01:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1033, + "역명": "신장림", + "시간": "08:35:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2066, + "역명": "신장림", + "시간": "08:56:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1095, + "역명": "신장림", + "시간": "11:28:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2124, + "역명": "신장림", + "시간": "11:50:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1157, + "역명": "신장림", + "시간": "14:24:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2184, + "역명": "신장림", + "시간": "14:48:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1221, + "역명": "신장림", + "시간": "17:20:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2248, + "역명": "신장림", + "시간": "17:42:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1275, + "역명": "신장림", + "시간": "20:17:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 8, + "열번": 2300, + "역명": "신장림", + "시간": "20:42:35", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 9, + "열번": 2022, + "역명": "신장림", + "시간": "06:59:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1055, + "역명": "신장림", + "시간": "09:30:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2086, + "역명": "신장림", + "시간": "09:56:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1115, + "역명": "신장림", + "시간": "12:28:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2144, + "역명": "신장림", + "시간": "12:50:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1179, + "역명": "신장림", + "시간": "15:25:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2206, + "역명": "신장림", + "시간": "15:48:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1243, + "역명": "신장림", + "시간": "18:22:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 9, + "열번": 2270, + "역명": "신장림", + "시간": "18:48:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 10, + "열번": 7907, + "역명": "신장림", + "시간": "05:48:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2012, + "역명": "신장림", + "시간": "06:13:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1039, + "역명": "신장림", + "시간": "08:50:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2072, + "역명": "신장림", + "시간": "09:14:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1101, + "역명": "신장림", + "시간": "11:46:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2130, + "역명": "신장림", + "시간": "12:08:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1163, + "역명": "신장림", + "시간": "14:41:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2190, + "역명": "신장림", + "시간": "15:04:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1227, + "역명": "신장림", + "시간": "17:37:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2254, + "역명": "신장림", + "시간": "18:00:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1279, + "역명": "신장림", + "시간": "20:33:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2304, + "역명": "신장림", + "시간": "20:58:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1321, + "역명": "신장림", + "시간": "23:31:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 11, + "열번": 1005, + "역명": "신장림", + "시간": "06:40:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2024, + "역명": "신장림", + "시간": "07:05:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1057, + "역명": "신장림", + "시간": "09:35:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2088, + "역명": "신장림", + "시간": "10:02:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1117, + "역명": "신장림", + "시간": "12:34:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2146, + "역명": "신장림", + "시간": "12:56:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1181, + "역명": "신장림", + "시간": "15:30:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2208, + "역명": "신장림", + "시간": "15:54:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1245, + "역명": "신장림", + "시간": "18:28:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2272, + "역명": "신장림", + "시간": "18:54:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1293, + "역명": "신장림", + "시간": "21:29:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2316, + "역명": "신장림", + "시간": "21:55:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 11, + "열번": 1331, + "역명": "신장림", + "시간": "00:28:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 12, + "열번": 7909, + "역명": "신장림", + "시간": "06:00:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2014, + "역명": "신장림", + "시간": "06:25:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1043, + "역명": "신장림", + "시간": "09:00:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2074, + "역명": "신장림", + "시간": "09:20:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1103, + "역명": "신장림", + "시간": "11:52:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2132, + "역명": "신장림", + "시간": "12:14:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1165, + "역명": "신장림", + "시간": "14:46:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "신장림", + "시간": "15:10:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1229, + "역명": "신장림", + "시간": "17:42:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2256, + "역명": "신장림", + "시간": "18:06:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1281, + "역명": "신장림", + "시간": "20:41:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2306, + "역명": "신장림", + "시간": "21:06:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1323, + "역명": "신장림", + "시간": "23:42:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1009, + "역명": "신장림", + "시간": "07:02:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2032, + "역명": "신장림", + "시간": "07:25:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1065, + "역명": "신장림", + "시간": "09:58:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2094, + "역명": "신장림", + "시간": "10:20:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1123, + "역명": "신장림", + "시간": "12:51:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2152, + "역명": "신장림", + "시간": "13:14:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1187, + "역명": "신장림", + "시간": "15:47:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 13, + "열번": 2214, + "역명": "신장림", + "시간": "16:10:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 14, + "열번": 7911, + "역명": "신장림", + "시간": "06:11:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2016, + "역명": "신장림", + "시간": "06:36:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1049, + "역명": "신장림", + "시간": "09:15:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2080, + "역명": "신장림", + "시간": "09:38:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1109, + "역명": "신장림", + "시간": "12:10:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2138, + "역명": "신장림", + "시간": "12:32:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1171, + "역명": "신장림", + "시간": "15:03:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2198, + "역명": "신장림", + "시간": "15:26:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1235, + "역명": "신장림", + "시간": "17:59:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2262, + "역명": "신장림", + "시간": "18:24:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1285, + "역명": "신장림", + "시간": "20:57:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1011, + "역명": "신장림", + "시간": "07:13:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2036, + "역명": "신장림", + "시간": "07:35:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1069, + "역명": "신장림", + "시간": "10:10:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2098, + "역명": "신장림", + "시간": "10:32:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1129, + "역명": "신장림", + "시간": "13:07:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2156, + "역명": "신장림", + "시간": "13:31:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1193, + "역명": "신장림", + "시간": "16:03:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2220, + "역명": "신장림", + "시간": "16:26:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1255, + "역명": "신장림", + "시간": "19:01:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2280, + "역명": "신장림", + "시간": "19:22:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1299, + "역명": "신장림", + "시간": "21:53:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2320, + "역명": "신장림", + "시간": "22:15:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 16, + "열번": 7913, + "역명": "신장림", + "시간": "06:47:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2026, + "역명": "신장림", + "시간": "07:10:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 16, + "열번": 1059, + "역명": "신장림", + "시간": "09:40:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2038, + "역명": "신장림", + "시간": "07:40:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 18, + "열번": 1007, + "역명": "신장림", + "시간": "06:51:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2028, + "역명": "신장림", + "시간": "07:15:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1061, + "역명": "신장림", + "시간": "09:46:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2090, + "역명": "신장림", + "시간": "10:08:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1119, + "역명": "신장림", + "시간": "12:40:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2148, + "역명": "신장림", + "시간": "13:02:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1183, + "역명": "신장림", + "시간": "15:36:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2210, + "역명": "신장림", + "시간": "15:59:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1247, + "역명": "신장림", + "시간": "18:34:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 19, + "열번": 7919, + "역명": "신장림", + "시간": "07:19:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2040, + "역명": "신장림", + "시간": "07:45:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1071, + "역명": "신장림", + "시간": "10:16:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2100, + "역명": "신장림", + "시간": "10:38:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1131, + "역명": "신장림", + "시간": "13:13:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2158, + "역명": "신장림", + "시간": "13:36:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1195, + "역명": "신장림", + "시간": "16:09:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2222, + "역명": "신장림", + "시간": "16:31:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 20, + "열번": 7915, + "역명": "신장림", + "시간": "06:58:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2030, + "역명": "신장림", + "시간": "07:20:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1063, + "역명": "신장림", + "시간": "09:52:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2092, + "역명": "신장림", + "시간": "10:14:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1121, + "역명": "신장림", + "시간": "12:45:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2150, + "역명": "신장림", + "시간": "13:08:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1185, + "역명": "신장림", + "시간": "15:41:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2212, + "역명": "신장림", + "시간": "16:05:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1249, + "역명": "신장림", + "시간": "18:40:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2274, + "역명": "신장림", + "시간": "19:01:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1295, + "역명": "신장림", + "시간": "21:37:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2318, + "역명": "신장림", + "시간": "22:05:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 21, + "열번": 1013, + "역명": "신장림", + "시간": "07:24:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2042, + "역명": "신장림", + "시간": "07:50:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1073, + "역명": "신장림", + "시간": "10:22:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2102, + "역명": "신장림", + "시간": "10:44:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1133, + "역명": "신장림", + "시간": "13:18:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2160, + "역명": "신장림", + "시간": "13:42:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1197, + "역명": "신장림", + "시간": "16:14:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2224, + "역명": "신장림", + "시간": "16:36:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1257, + "역명": "신장림", + "시간": "19:08:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2282, + "역명": "신장림", + "시간": "19:30:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1301, + "역명": "신장림", + "시간": "22:01:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2322, + "역명": "신장림", + "시간": "22:27:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 22, + "열번": 7917, + "역명": "신장림", + "시간": "07:08:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2034, + "역명": "신장림", + "시간": "07:30:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1067, + "역명": "신장림", + "시간": "10:04:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2096, + "역명": "신장림", + "시간": "10:26:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1125, + "역명": "신장림", + "시간": "12:56:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 23, + "열번": 7921, + "역명": "신장림", + "시간": "07:30:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2044, + "역명": "신장림", + "시간": "07:55:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1075, + "역명": "신장림", + "시간": "10:28:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2104, + "역명": "신장림", + "시간": "10:50:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1135, + "역명": "신장림", + "시간": "13:24:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2162, + "역명": "신장림", + "시간": "13:47:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1199, + "역명": "신장림", + "시간": "16:20:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2228, + "역명": "신장림", + "시간": "16:46:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 24, + "열번": 7923, + "역명": "신장림", + "시간": "07:40:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "신장림", + "시간": "08:05:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1079, + "역명": "신장림", + "시간": "10:40:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2108, + "역명": "신장림", + "시간": "11:02:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1139, + "역명": "신장림", + "시간": "13:35:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2166, + "역명": "신장림", + "시간": "13:58:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1203, + "역명": "신장림", + "시간": "16:31:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2232, + "역명": "신장림", + "시간": "16:56:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1263, + "역명": "신장림", + "시간": "19:29:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2288, + "역명": "신장림", + "시간": "19:54:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1307, + "역명": "신장림", + "시간": "22:25:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 24, + "열번": 2326, + "역명": "신장림", + "시간": "22:51:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "신장림", + "시간": "07:52:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2054, + "역명": "신장림", + "시간": "08:20:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1083, + "역명": "신장림", + "시간": "10:52:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2112, + "역명": "신장림", + "시간": "11:14:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1143, + "역명": "신장림", + "시간": "13:46:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2170, + "역명": "신장림", + "시간": "14:09:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1207, + "역명": "신장림", + "시간": "16:42:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2236, + "역명": "신장림", + "시간": "17:06:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1267, + "역명": "신장림", + "시간": "19:45:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2292, + "역명": "신장림", + "시간": "20:10:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1311, + "역명": "신장림", + "시간": "22:41:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2328, + "역명": "신장림", + "시간": "23:01:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 26, + "열번": 7925, + "역명": "신장림", + "시간": "07:49:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2052, + "역명": "신장림", + "시간": "08:15:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1081, + "역명": "신장림", + "시간": "10:46:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2110, + "역명": "신장림", + "시간": "11:08:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1141, + "역명": "신장림", + "시간": "13:40:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2168, + "역명": "신장림", + "시간": "14:04:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1205, + "역명": "신장림", + "시간": "16:36:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2234, + "역명": "신장림", + "시간": "17:01:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1265, + "역명": "신장림", + "시간": "19:37:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2290, + "역명": "신장림", + "시간": "20:02:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1309, + "역명": "신장림", + "시간": "22:33:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1025, + "역명": "신장림", + "시간": "08:15:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2060, + "역명": "신장림", + "시간": "08:38:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1089, + "역명": "신장림", + "시간": "11:10:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2118, + "역명": "신장림", + "시간": "11:32:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1151, + "역명": "신장림", + "시간": "14:08:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2178, + "역명": "신장림", + "시간": "14:31:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1215, + "역명": "신장림", + "시간": "17:04:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2244, + "역명": "신장림", + "시간": "17:30:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1271, + "역명": "신장림", + "시간": "20:01:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2296, + "역명": "신장림", + "시간": "20:26:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 27, + "열번": 1315, + "역명": "신장림", + "시간": "23:01:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 28, + "열번": 1029, + "역명": "신장림", + "시간": "08:25:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2064, + "역명": "신장림", + "시간": "08:50:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1093, + "역명": "신장림", + "시간": "11:22:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2122, + "역명": "신장림", + "시간": "11:44:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1155, + "역명": "신장림", + "시간": "14:19:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2182, + "역명": "신장림", + "시간": "14:42:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1219, + "역명": "신장림", + "시간": "17:15:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1035, + "역명": "신장림", + "시간": "08:40:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2068, + "역명": "신장림", + "시간": "09:02:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1097, + "역명": "신장림", + "시간": "11:34:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2126, + "역명": "신장림", + "시간": "11:56:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1159, + "역명": "신장림", + "시간": "14:30:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2186, + "역명": "신장림", + "시간": "14:53:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1223, + "역명": "신장림", + "시간": "17:26:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 29, + "열번": 2250, + "역명": "신장림", + "시간": "17:48:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1031, + "역명": "신장림", + "시간": "08:30:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1037, + "역명": "신장림", + "시간": "08:45:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2070, + "역명": "신장림", + "시간": "09:08:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1099, + "역명": "신장림", + "시간": "11:40:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2128, + "역명": "신장림", + "시간": "12:02:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1161, + "역명": "신장림", + "시간": "14:35:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2188, + "역명": "신장림", + "시간": "14:59:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1225, + "역명": "신장림", + "시간": "17:31:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2252, + "역명": "신장림", + "시간": "17:54:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1277, + "역명": "신장림", + "시간": "20:25:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2302, + "역명": "신장림", + "시간": "20:50:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1319, + "역명": "신장림", + "시간": "23:21:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 32, + "열번": 1041, + "역명": "신장림", + "시간": "08:55:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1045, + "역명": "신장림", + "시간": "09:05:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2076, + "역명": "신장림", + "시간": "09:26:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1105, + "역명": "신장림", + "시간": "11:58:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2134, + "역명": "신장림", + "시간": "12:20:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1167, + "역명": "신장림", + "시간": "14:52:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2194, + "역명": "신장림", + "시간": "15:15:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1231, + "역명": "신장림", + "시간": "17:48:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 33, + "열번": 2258, + "역명": "신장림", + "시간": "18:12:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1189, + "역명": "신장림", + "시간": "15:52:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 34, + "열번": 2216, + "역명": "신장림", + "시간": "16:16:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1251, + "역명": "신장림", + "시간": "18:47:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 34, + "열번": 2276, + "역명": "신장림", + "시간": "19:08:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1297, + "역명": "신장림", + "시간": "21:45:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1047, + "역명": "신장림", + "시간": "09:10:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2078, + "역명": "신장림", + "시간": "09:32:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1107, + "역명": "신장림", + "시간": "12:04:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2136, + "역명": "신장림", + "시간": "12:26:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1169, + "역명": "신장림", + "시간": "14:57:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2196, + "역명": "신장림", + "시간": "15:21:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1233, + "역명": "신장림", + "시간": "17:53:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2260, + "역명": "신장림", + "시간": "18:18:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1283, + "역명": "신장림", + "시간": "20:49:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2308, + "역명": "신장림", + "시간": "21:15:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1325, + "역명": "신장림", + "시간": "23:53:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 36, + "열번": 2226, + "역명": "신장림", + "시간": "16:41:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1259, + "역명": "신장림", + "시간": "19:15:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 36, + "열번": 2284, + "역명": "신장림", + "시간": "19:38:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1303, + "역명": "신장림", + "시간": "22:09:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1127, + "역명": "신장림", + "시간": "13:02:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2154, + "역명": "신장림", + "시간": "13:25:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1191, + "역명": "신장림", + "시간": "15:58:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2218, + "역명": "신장림", + "시간": "16:21:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1253, + "역명": "신장림", + "시간": "18:54:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 37, + "열번": 2278, + "역명": "신장림", + "시간": "19:15:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 39, + "열번": 1149, + "역명": "신장림", + "시간": "14:02:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2176, + "역명": "신장림", + "시간": "14:26:05", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1213, + "역명": "신장림", + "시간": "16:58:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 39, + "열번": 2242, + "역명": "신장림", + "시간": "17:24:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 41, + "열번": 1175, + "역명": "신장림", + "시간": "15:14:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2202, + "역명": "신장림", + "시간": "15:37:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1239, + "역명": "신장림", + "시간": "18:10:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2266, + "역명": "신장림", + "시간": "18:36:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1289, + "역명": "신장림", + "시간": "21:13:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2312, + "역명": "신장림", + "시간": "21:35:35", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1327, + "역명": "신장림", + "시간": "00:05:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "낫개", + "시간": "05:08:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "낫개", + "시간": "07:45:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2050, + "역명": "낫개", + "시간": "08:08:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "낫개", + "시간": "07:36:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "낫개", + "시간": "07:58:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1077, + "역명": "낫개", + "시간": "10:36:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2106, + "역명": "낫개", + "시간": "10:54:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1137, + "역명": "낫개", + "시간": "13:31:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2164, + "역명": "낫개", + "시간": "13:50:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1201, + "역명": "낫개", + "시간": "16:27:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2230, + "역명": "낫개", + "시간": "16:49:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1261, + "역명": "낫개", + "시간": "19:24:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2286, + "역명": "낫개", + "시간": "19:44:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1305, + "역명": "낫개", + "시간": "22:19:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 2, + "열번": 2324, + "역명": "낫개", + "시간": "22:37:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "낫개", + "시간": "05:22:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "낫개", + "시간": "08:03:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2056, + "역명": "낫개", + "시간": "08:24:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1085, + "역명": "낫개", + "시간": "11:00:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2114, + "역명": "낫개", + "시간": "11:18:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1145, + "역명": "낫개", + "시간": "13:53:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2172, + "역명": "낫개", + "시간": "14:12:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1209, + "역명": "낫개", + "시간": "16:49:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2238, + "역명": "낫개", + "시간": "17:10:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 4, + "열번": 7901, + "역명": "낫개", + "시간": "05:14:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "낫개", + "시간": "05:34:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1023, + "역명": "낫개", + "시간": "08:10:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2058, + "역명": "낫개", + "시간": "08:30:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1087, + "역명": "낫개", + "시간": "11:06:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2116, + "역명": "낫개", + "시간": "11:24:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1147, + "역명": "낫개", + "시간": "13:59:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2174, + "역명": "낫개", + "시간": "14:18:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1211, + "역명": "낫개", + "시간": "16:55:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2240, + "역명": "낫개", + "시간": "17:16:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1269, + "역명": "낫개", + "시간": "19:55:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2294, + "역명": "낫개", + "시간": "20:16:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1313, + "역명": "낫개", + "시간": "22:53:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2330, + "역명": "낫개", + "시간": "23:15:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 5, + "열번": 1001, + "역명": "낫개", + "시간": "06:23:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2018, + "역명": "낫개", + "시간": "06:42:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1051, + "역명": "낫개", + "시간": "09:22:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2082, + "역명": "낫개", + "시간": "09:42:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1111, + "역명": "낫개", + "시간": "12:18:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2140, + "역명": "낫개", + "시간": "12:36:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1173, + "역명": "낫개", + "시간": "15:10:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2200, + "역명": "낫개", + "시간": "15:29:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1237, + "역명": "낫개", + "시간": "18:06:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2264, + "역명": "낫개", + "시간": "18:28:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1287, + "역명": "낫개", + "시간": "21:07:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2310, + "역명": "낫개", + "시간": "21:23:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 6, + "열번": 7903, + "역명": "낫개", + "시간": "05:26:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2008, + "역명": "낫개", + "시간": "05:46:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1027, + "역명": "낫개", + "시간": "08:22:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2062, + "역명": "낫개", + "시간": "08:42:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1091, + "역명": "낫개", + "시간": "11:18:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2120, + "역명": "낫개", + "시간": "11:36:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1153, + "역명": "낫개", + "시간": "14:15:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2180, + "역명": "낫개", + "시간": "14:34:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1217, + "역명": "낫개", + "시간": "17:11:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2246, + "역명": "낫개", + "시간": "17:34:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1273, + "역명": "낫개", + "시간": "20:11:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2298, + "역명": "낫개", + "시간": "20:32:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1317, + "역명": "낫개", + "시간": "23:13:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1003, + "역명": "낫개", + "시간": "06:31:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2020, + "역명": "낫개", + "시간": "06:51:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1053, + "역명": "낫개", + "시간": "09:27:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2084, + "역명": "낫개", + "시간": "09:48:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1113, + "역명": "낫개", + "시간": "12:24:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2142, + "역명": "낫개", + "시간": "12:42:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1177, + "역명": "낫개", + "시간": "15:21:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2204, + "역명": "낫개", + "시간": "15:40:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1241, + "역명": "낫개", + "시간": "18:18:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2268, + "역명": "낫개", + "시간": "18:40:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1291, + "역명": "낫개", + "시간": "21:23:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2314, + "역명": "낫개", + "시간": "21:43:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 7, + "열번": 1329, + "역명": "낫개", + "시간": "00:19:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 8, + "열번": 7905, + "역명": "낫개", + "시간": "05:38:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2010, + "역명": "낫개", + "시간": "05:58:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1033, + "역명": "낫개", + "시간": "08:37:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2066, + "역명": "낫개", + "시간": "08:54:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1095, + "역명": "낫개", + "시간": "11:30:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2124, + "역명": "낫개", + "시간": "11:48:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1157, + "역명": "낫개", + "시간": "14:26:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2184, + "역명": "낫개", + "시간": "14:45:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1221, + "역명": "낫개", + "시간": "17:22:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2248, + "역명": "낫개", + "시간": "17:40:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1275, + "역명": "낫개", + "시간": "20:19:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 8, + "열번": 2300, + "역명": "낫개", + "시간": "20:40:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 9, + "열번": 2022, + "역명": "낫개", + "시간": "06:57:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1055, + "역명": "낫개", + "시간": "09:32:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2086, + "역명": "낫개", + "시간": "09:54:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1115, + "역명": "낫개", + "시간": "12:30:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2144, + "역명": "낫개", + "시간": "12:48:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1179, + "역명": "낫개", + "시간": "15:27:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2206, + "역명": "낫개", + "시간": "15:46:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1243, + "역명": "낫개", + "시간": "18:24:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 9, + "열번": 2270, + "역명": "낫개", + "시간": "18:46:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 10, + "열번": 7907, + "역명": "낫개", + "시간": "05:50:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2012, + "역명": "낫개", + "시간": "06:10:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1039, + "역명": "낫개", + "시간": "08:52:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2072, + "역명": "낫개", + "시간": "09:12:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1101, + "역명": "낫개", + "시간": "11:48:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2130, + "역명": "낫개", + "시간": "12:06:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1163, + "역명": "낫개", + "시간": "14:43:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2190, + "역명": "낫개", + "시간": "15:02:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1227, + "역명": "낫개", + "시간": "17:39:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2254, + "역명": "낫개", + "시간": "17:58:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1279, + "역명": "낫개", + "시간": "20:35:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2304, + "역명": "낫개", + "시간": "20:56:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1321, + "역명": "낫개", + "시간": "23:33:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 11, + "열번": 1005, + "역명": "낫개", + "시간": "06:42:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2024, + "역명": "낫개", + "시간": "07:03:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1057, + "역명": "낫개", + "시간": "09:37:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2088, + "역명": "낫개", + "시간": "10:00:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1117, + "역명": "낫개", + "시간": "12:36:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2146, + "역명": "낫개", + "시간": "12:54:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1181, + "역명": "낫개", + "시간": "15:32:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2208, + "역명": "낫개", + "시간": "15:51:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1245, + "역명": "낫개", + "시간": "18:30:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2272, + "역명": "낫개", + "시간": "18:52:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1293, + "역명": "낫개", + "시간": "21:31:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2316, + "역명": "낫개", + "시간": "21:53:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 11, + "열번": 1331, + "역명": "낫개", + "시간": "00:30:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 12, + "열번": 7909, + "역명": "낫개", + "시간": "06:02:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2014, + "역명": "낫개", + "시간": "06:22:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1043, + "역명": "낫개", + "시간": "09:02:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2074, + "역명": "낫개", + "시간": "09:18:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1103, + "역명": "낫개", + "시간": "11:54:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2132, + "역명": "낫개", + "시간": "12:12:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1165, + "역명": "낫개", + "시간": "14:48:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "낫개", + "시간": "15:07:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1229, + "역명": "낫개", + "시간": "17:44:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2256, + "역명": "낫개", + "시간": "18:04:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1281, + "역명": "낫개", + "시간": "20:43:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2306, + "역명": "낫개", + "시간": "21:04:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1323, + "역명": "낫개", + "시간": "23:44:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1009, + "역명": "낫개", + "시간": "07:04:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2032, + "역명": "낫개", + "시간": "07:23:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1065, + "역명": "낫개", + "시간": "10:00:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2094, + "역명": "낫개", + "시간": "10:18:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1123, + "역명": "낫개", + "시간": "12:53:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2152, + "역명": "낫개", + "시간": "13:12:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1187, + "역명": "낫개", + "시간": "15:49:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 13, + "열번": 2214, + "역명": "낫개", + "시간": "16:08:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 14, + "열번": 7911, + "역명": "낫개", + "시간": "06:13:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2016, + "역명": "낫개", + "시간": "06:33:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1049, + "역명": "낫개", + "시간": "09:17:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2080, + "역명": "낫개", + "시간": "09:36:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1109, + "역명": "낫개", + "시간": "12:12:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2138, + "역명": "낫개", + "시간": "12:30:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1171, + "역명": "낫개", + "시간": "15:05:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2198, + "역명": "낫개", + "시간": "15:24:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1235, + "역명": "낫개", + "시간": "18:01:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2262, + "역명": "낫개", + "시간": "18:22:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1285, + "역명": "낫개", + "시간": "20:59:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1011, + "역명": "낫개", + "시간": "07:15:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2036, + "역명": "낫개", + "시간": "07:33:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1069, + "역명": "낫개", + "시간": "10:12:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2098, + "역명": "낫개", + "시간": "10:30:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1129, + "역명": "낫개", + "시간": "13:09:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2156, + "역명": "낫개", + "시간": "13:28:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1193, + "역명": "낫개", + "시간": "16:05:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2220, + "역명": "낫개", + "시간": "16:24:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1255, + "역명": "낫개", + "시간": "19:03:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2280, + "역명": "낫개", + "시간": "19:20:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1299, + "역명": "낫개", + "시간": "21:55:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2320, + "역명": "낫개", + "시간": "22:13:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 16, + "열번": 7913, + "역명": "낫개", + "시간": "06:49:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2026, + "역명": "낫개", + "시간": "07:08:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 16, + "열번": 1059, + "역명": "낫개", + "시간": "09:42:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2038, + "역명": "낫개", + "시간": "07:38:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 18, + "열번": 1007, + "역명": "낫개", + "시간": "06:53:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2028, + "역명": "낫개", + "시간": "07:13:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1061, + "역명": "낫개", + "시간": "09:48:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2090, + "역명": "낫개", + "시간": "10:06:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1119, + "역명": "낫개", + "시간": "12:42:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2148, + "역명": "낫개", + "시간": "13:00:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1183, + "역명": "낫개", + "시간": "15:38:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2210, + "역명": "낫개", + "시간": "15:57:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1247, + "역명": "낫개", + "시간": "18:36:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 19, + "열번": 7919, + "역명": "낫개", + "시간": "07:21:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2040, + "역명": "낫개", + "시간": "07:43:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1071, + "역명": "낫개", + "시간": "10:18:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2100, + "역명": "낫개", + "시간": "10:36:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1131, + "역명": "낫개", + "시간": "13:15:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2158, + "역명": "낫개", + "시간": "13:34:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1195, + "역명": "낫개", + "시간": "16:11:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2222, + "역명": "낫개", + "시간": "16:29:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 20, + "열번": 7915, + "역명": "낫개", + "시간": "07:00:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2030, + "역명": "낫개", + "시간": "07:18:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1063, + "역명": "낫개", + "시간": "09:54:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2092, + "역명": "낫개", + "시간": "10:12:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1121, + "역명": "낫개", + "시간": "12:47:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2150, + "역명": "낫개", + "시간": "13:06:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1185, + "역명": "낫개", + "시간": "15:43:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2212, + "역명": "낫개", + "시간": "16:02:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1249, + "역명": "낫개", + "시간": "18:42:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2274, + "역명": "낫개", + "시간": "18:59:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1295, + "역명": "낫개", + "시간": "21:39:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2318, + "역명": "낫개", + "시간": "22:03:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 21, + "열번": 1013, + "역명": "낫개", + "시간": "07:26:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2042, + "역명": "낫개", + "시간": "07:48:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1073, + "역명": "낫개", + "시간": "10:24:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2102, + "역명": "낫개", + "시간": "10:42:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1133, + "역명": "낫개", + "시간": "13:20:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2160, + "역명": "낫개", + "시간": "13:39:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1197, + "역명": "낫개", + "시간": "16:16:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2224, + "역명": "낫개", + "시간": "16:34:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1257, + "역명": "낫개", + "시간": "19:10:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2282, + "역명": "낫개", + "시간": "19:28:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1301, + "역명": "낫개", + "시간": "22:03:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2322, + "역명": "낫개", + "시간": "22:25:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 22, + "열번": 7917, + "역명": "낫개", + "시간": "07:10:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2034, + "역명": "낫개", + "시간": "07:28:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1067, + "역명": "낫개", + "시간": "10:06:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2096, + "역명": "낫개", + "시간": "10:24:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1125, + "역명": "낫개", + "시간": "12:58:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 23, + "열번": 7921, + "역명": "낫개", + "시간": "07:32:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2044, + "역명": "낫개", + "시간": "07:53:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1075, + "역명": "낫개", + "시간": "10:30:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2104, + "역명": "낫개", + "시간": "10:48:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1135, + "역명": "낫개", + "시간": "13:26:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2162, + "역명": "낫개", + "시간": "13:45:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1199, + "역명": "낫개", + "시간": "16:22:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2228, + "역명": "낫개", + "시간": "16:44:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 24, + "열번": 7923, + "역명": "낫개", + "시간": "07:42:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "낫개", + "시간": "08:03:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1079, + "역명": "낫개", + "시간": "10:42:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2108, + "역명": "낫개", + "시간": "11:00:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1139, + "역명": "낫개", + "시간": "13:37:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2166, + "역명": "낫개", + "시간": "13:56:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1203, + "역명": "낫개", + "시간": "16:33:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2232, + "역명": "낫개", + "시간": "16:54:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1263, + "역명": "낫개", + "시간": "19:31:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2288, + "역명": "낫개", + "시간": "19:52:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1307, + "역명": "낫개", + "시간": "22:27:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 24, + "열번": 2326, + "역명": "낫개", + "시간": "22:49:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "낫개", + "시간": "07:54:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2054, + "역명": "낫개", + "시간": "08:18:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1083, + "역명": "낫개", + "시간": "10:54:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2112, + "역명": "낫개", + "시간": "11:12:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1143, + "역명": "낫개", + "시간": "13:48:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2170, + "역명": "낫개", + "시간": "14:07:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1207, + "역명": "낫개", + "시간": "16:44:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2236, + "역명": "낫개", + "시간": "17:04:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1267, + "역명": "낫개", + "시간": "19:47:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2292, + "역명": "낫개", + "시간": "20:08:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1311, + "역명": "낫개", + "시간": "22:43:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2328, + "역명": "낫개", + "시간": "22:59:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 26, + "열번": 7925, + "역명": "낫개", + "시간": "07:51:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2052, + "역명": "낫개", + "시간": "08:13:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1081, + "역명": "낫개", + "시간": "10:48:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2110, + "역명": "낫개", + "시간": "11:06:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1141, + "역명": "낫개", + "시간": "13:42:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2168, + "역명": "낫개", + "시간": "14:01:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1205, + "역명": "낫개", + "시간": "16:38:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2234, + "역명": "낫개", + "시간": "16:59:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1265, + "역명": "낫개", + "시간": "19:39:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2290, + "역명": "낫개", + "시간": "20:00:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1309, + "역명": "낫개", + "시간": "22:35:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1025, + "역명": "낫개", + "시간": "08:17:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2060, + "역명": "낫개", + "시간": "08:36:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1089, + "역명": "낫개", + "시간": "11:12:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2118, + "역명": "낫개", + "시간": "11:30:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1151, + "역명": "낫개", + "시간": "14:10:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2178, + "역명": "낫개", + "시간": "14:29:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1215, + "역명": "낫개", + "시간": "17:06:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2244, + "역명": "낫개", + "시간": "17:28:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1271, + "역명": "낫개", + "시간": "20:03:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2296, + "역명": "낫개", + "시간": "20:24:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 27, + "열번": 1315, + "역명": "낫개", + "시간": "23:03:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 28, + "열번": 1029, + "역명": "낫개", + "시간": "08:27:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2064, + "역명": "낫개", + "시간": "08:48:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1093, + "역명": "낫개", + "시간": "11:24:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2122, + "역명": "낫개", + "시간": "11:42:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1155, + "역명": "낫개", + "시간": "14:21:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2182, + "역명": "낫개", + "시간": "14:40:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1219, + "역명": "낫개", + "시간": "17:17:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1035, + "역명": "낫개", + "시간": "08:42:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2068, + "역명": "낫개", + "시간": "09:00:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1097, + "역명": "낫개", + "시간": "11:36:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2126, + "역명": "낫개", + "시간": "11:54:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1159, + "역명": "낫개", + "시간": "14:32:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2186, + "역명": "낫개", + "시간": "14:51:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1223, + "역명": "낫개", + "시간": "17:28:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 29, + "열번": 2250, + "역명": "낫개", + "시간": "17:46:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1031, + "역명": "낫개", + "시간": "08:32:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1037, + "역명": "낫개", + "시간": "08:47:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2070, + "역명": "낫개", + "시간": "09:06:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1099, + "역명": "낫개", + "시간": "11:42:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2128, + "역명": "낫개", + "시간": "12:00:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1161, + "역명": "낫개", + "시간": "14:37:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2188, + "역명": "낫개", + "시간": "14:56:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1225, + "역명": "낫개", + "시간": "17:33:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2252, + "역명": "낫개", + "시간": "17:52:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1277, + "역명": "낫개", + "시간": "20:27:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2302, + "역명": "낫개", + "시간": "20:48:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1319, + "역명": "낫개", + "시간": "23:23:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 32, + "열번": 1041, + "역명": "낫개", + "시간": "08:57:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1045, + "역명": "낫개", + "시간": "09:07:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2076, + "역명": "낫개", + "시간": "09:24:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1105, + "역명": "낫개", + "시간": "12:00:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2134, + "역명": "낫개", + "시간": "12:18:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1167, + "역명": "낫개", + "시간": "14:54:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2194, + "역명": "낫개", + "시간": "15:13:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1231, + "역명": "낫개", + "시간": "17:50:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 33, + "열번": 2258, + "역명": "낫개", + "시간": "18:10:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1189, + "역명": "낫개", + "시간": "15:54:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 34, + "열번": 2216, + "역명": "낫개", + "시간": "16:13:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1251, + "역명": "낫개", + "시간": "18:49:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 34, + "열번": 2276, + "역명": "낫개", + "시간": "19:06:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1297, + "역명": "낫개", + "시간": "21:47:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1047, + "역명": "낫개", + "시간": "09:12:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2078, + "역명": "낫개", + "시간": "09:30:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1107, + "역명": "낫개", + "시간": "12:06:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2136, + "역명": "낫개", + "시간": "12:24:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1169, + "역명": "낫개", + "시간": "14:59:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2196, + "역명": "낫개", + "시간": "15:18:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1233, + "역명": "낫개", + "시간": "17:55:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2260, + "역명": "낫개", + "시간": "18:16:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1283, + "역명": "낫개", + "시간": "20:51:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2308, + "역명": "낫개", + "시간": "21:13:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1325, + "역명": "낫개", + "시간": "23:55:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 36, + "열번": 2226, + "역명": "낫개", + "시간": "16:39:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1259, + "역명": "낫개", + "시간": "19:17:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 36, + "열번": 2284, + "역명": "낫개", + "시간": "19:36:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1303, + "역명": "낫개", + "시간": "22:11:10", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1127, + "역명": "낫개", + "시간": "13:04:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2154, + "역명": "낫개", + "시간": "13:23:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1191, + "역명": "낫개", + "시간": "16:00:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2218, + "역명": "낫개", + "시간": "16:19:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1253, + "역명": "낫개", + "시간": "18:56:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 37, + "열번": 2278, + "역명": "낫개", + "시간": "19:13:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 39, + "열번": 1149, + "역명": "낫개", + "시간": "14:04:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2176, + "역명": "낫개", + "시간": "14:23:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1213, + "역명": "낫개", + "시간": "17:00:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 39, + "열번": 2242, + "역명": "낫개", + "시간": "17:22:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 41, + "열번": 1175, + "역명": "낫개", + "시간": "15:16:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2202, + "역명": "낫개", + "시간": "15:35:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1239, + "역명": "낫개", + "시간": "18:12:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2266, + "역명": "낫개", + "시간": "18:34:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1289, + "역명": "낫개", + "시간": "21:15:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2312, + "역명": "낫개", + "시간": "21:33:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1327, + "역명": "낫개", + "시간": "00:07:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "다대포항", + "시간": "05:06:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "다대포항", + "시간": "07:47:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2050, + "역명": "다대포항", + "시간": "08:06:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "다대포항", + "시간": "07:38:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "다대포항", + "시간": "07:56:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1077, + "역명": "다대포항", + "시간": "10:38:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2106, + "역명": "다대포항", + "시간": "10:52:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1137, + "역명": "다대포항", + "시간": "13:33:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2164, + "역명": "다대포항", + "시간": "13:48:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1201, + "역명": "다대포항", + "시간": "16:29:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2230, + "역명": "다대포항", + "시간": "16:47:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1261, + "역명": "다대포항", + "시간": "19:26:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2286, + "역명": "다대포항", + "시간": "19:42:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1305, + "역명": "다대포항", + "시간": "22:21:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 2, + "열번": 2324, + "역명": "다대포항", + "시간": "22:35:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "다대포항", + "시간": "05:20:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "다대포항", + "시간": "08:05:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2056, + "역명": "다대포항", + "시간": "08:22:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1085, + "역명": "다대포항", + "시간": "11:02:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2114, + "역명": "다대포항", + "시간": "11:16:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1145, + "역명": "다대포항", + "시간": "13:55:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2172, + "역명": "다대포항", + "시간": "14:10:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1209, + "역명": "다대포항", + "시간": "16:51:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2238, + "역명": "다대포항", + "시간": "17:08:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 4, + "열번": 7901, + "역명": "다대포항", + "시간": "05:17:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "다대포항", + "시간": "05:32:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1023, + "역명": "다대포항", + "시간": "08:12:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2058, + "역명": "다대포항", + "시간": "08:28:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1087, + "역명": "다대포항", + "시간": "11:08:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2116, + "역명": "다대포항", + "시간": "11:22:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1147, + "역명": "다대포항", + "시간": "14:01:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2174, + "역명": "다대포항", + "시간": "14:16:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1211, + "역명": "다대포항", + "시간": "16:57:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2240, + "역명": "다대포항", + "시간": "17:14:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1269, + "역명": "다대포항", + "시간": "19:57:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2294, + "역명": "다대포항", + "시간": "20:14:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1313, + "역명": "다대포항", + "시간": "22:55:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2330, + "역명": "다대포항", + "시간": "23:13:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 5, + "열번": 1001, + "역명": "다대포항", + "시간": "06:25:55", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2018, + "역명": "다대포항", + "시간": "06:40:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1051, + "역명": "다대포항", + "시간": "09:24:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2082, + "역명": "다대포항", + "시간": "09:40:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1111, + "역명": "다대포항", + "시간": "12:20:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2140, + "역명": "다대포항", + "시간": "12:34:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1173, + "역명": "다대포항", + "시간": "15:12:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2200, + "역명": "다대포항", + "시간": "15:27:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1237, + "역명": "다대포항", + "시간": "18:08:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2264, + "역명": "다대포항", + "시간": "18:26:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1287, + "역명": "다대포항", + "시간": "21:09:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2310, + "역명": "다대포항", + "시간": "21:21:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 6, + "열번": 7903, + "역명": "다대포항", + "시간": "05:29:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2008, + "역명": "다대포항", + "시간": "05:44:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1027, + "역명": "다대포항", + "시간": "08:24:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2062, + "역명": "다대포항", + "시간": "08:40:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1091, + "역명": "다대포항", + "시간": "11:20:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2120, + "역명": "다대포항", + "시간": "11:34:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1153, + "역명": "다대포항", + "시간": "14:17:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2180, + "역명": "다대포항", + "시간": "14:32:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1217, + "역명": "다대포항", + "시간": "17:13:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2246, + "역명": "다대포항", + "시간": "17:32:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1273, + "역명": "다대포항", + "시간": "20:13:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2298, + "역명": "다대포항", + "시간": "20:30:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1317, + "역명": "다대포항", + "시간": "23:15:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1003, + "역명": "다대포항", + "시간": "06:33:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2020, + "역명": "다대포항", + "시간": "06:49:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1053, + "역명": "다대포항", + "시간": "09:29:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2084, + "역명": "다대포항", + "시간": "09:46:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1113, + "역명": "다대포항", + "시간": "12:26:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2142, + "역명": "다대포항", + "시간": "12:40:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1177, + "역명": "다대포항", + "시간": "15:23:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2204, + "역명": "다대포항", + "시간": "15:38:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1241, + "역명": "다대포항", + "시간": "18:20:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2268, + "역명": "다대포항", + "시간": "18:38:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1291, + "역명": "다대포항", + "시간": "21:25:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2314, + "역명": "다대포항", + "시간": "21:41:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 7, + "열번": 1329, + "역명": "다대포항", + "시간": "00:21:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 8, + "열번": 7905, + "역명": "다대포항", + "시간": "05:41:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2010, + "역명": "다대포항", + "시간": "05:56:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1033, + "역명": "다대포항", + "시간": "08:39:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2066, + "역명": "다대포항", + "시간": "08:52:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1095, + "역명": "다대포항", + "시간": "11:32:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2124, + "역명": "다대포항", + "시간": "11:46:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1157, + "역명": "다대포항", + "시간": "14:28:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2184, + "역명": "다대포항", + "시간": "14:43:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1221, + "역명": "다대포항", + "시간": "17:24:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2248, + "역명": "다대포항", + "시간": "17:38:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1275, + "역명": "다대포항", + "시간": "20:21:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 8, + "열번": 2300, + "역명": "다대포항", + "시간": "20:38:15", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 9, + "열번": 2022, + "역명": "다대포항", + "시간": "06:55:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1055, + "역명": "다대포항", + "시간": "09:34:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2086, + "역명": "다대포항", + "시간": "09:52:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1115, + "역명": "다대포항", + "시간": "12:32:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2144, + "역명": "다대포항", + "시간": "12:46:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1179, + "역명": "다대포항", + "시간": "15:29:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2206, + "역명": "다대포항", + "시간": "15:44:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1243, + "역명": "다대포항", + "시간": "18:26:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 9, + "열번": 2270, + "역명": "다대포항", + "시간": "18:44:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 10, + "열번": 7907, + "역명": "다대포항", + "시간": "05:53:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2012, + "역명": "다대포항", + "시간": "06:08:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1039, + "역명": "다대포항", + "시간": "08:54:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2072, + "역명": "다대포항", + "시간": "09:10:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1101, + "역명": "다대포항", + "시간": "11:50:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2130, + "역명": "다대포항", + "시간": "12:04:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1163, + "역명": "다대포항", + "시간": "14:45:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2190, + "역명": "다대포항", + "시간": "15:00:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1227, + "역명": "다대포항", + "시간": "17:41:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2254, + "역명": "다대포항", + "시간": "17:56:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1279, + "역명": "다대포항", + "시간": "20:37:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2304, + "역명": "다대포항", + "시간": "20:54:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1321, + "역명": "다대포항", + "시간": "23:35:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 11, + "열번": 1005, + "역명": "다대포항", + "시간": "06:44:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2024, + "역명": "다대포항", + "시간": "07:01:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1057, + "역명": "다대포항", + "시간": "09:39:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2088, + "역명": "다대포항", + "시간": "09:58:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1117, + "역명": "다대포항", + "시간": "12:38:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2146, + "역명": "다대포항", + "시간": "12:52:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1181, + "역명": "다대포항", + "시간": "15:34:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2208, + "역명": "다대포항", + "시간": "15:49:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1245, + "역명": "다대포항", + "시간": "18:32:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2272, + "역명": "다대포항", + "시간": "18:50:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1293, + "역명": "다대포항", + "시간": "21:33:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2316, + "역명": "다대포항", + "시간": "21:51:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 11, + "열번": 1331, + "역명": "다대포항", + "시간": "00:32:55", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 12, + "열번": 7909, + "역명": "다대포항", + "시간": "06:05:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2014, + "역명": "다대포항", + "시간": "06:20:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1043, + "역명": "다대포항", + "시간": "09:04:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2074, + "역명": "다대포항", + "시간": "09:16:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1103, + "역명": "다대포항", + "시간": "11:56:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2132, + "역명": "다대포항", + "시간": "12:10:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1165, + "역명": "다대포항", + "시간": "14:50:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "다대포항", + "시간": "15:05:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1229, + "역명": "다대포항", + "시간": "17:46:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2256, + "역명": "다대포항", + "시간": "18:02:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1281, + "역명": "다대포항", + "시간": "20:45:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2306, + "역명": "다대포항", + "시간": "21:02:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1323, + "역명": "다대포항", + "시간": "23:46:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1009, + "역명": "다대포항", + "시간": "07:06:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2032, + "역명": "다대포항", + "시간": "07:21:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1065, + "역명": "다대포항", + "시간": "10:02:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2094, + "역명": "다대포항", + "시간": "10:16:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1123, + "역명": "다대포항", + "시간": "12:55:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2152, + "역명": "다대포항", + "시간": "13:10:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1187, + "역명": "다대포항", + "시간": "15:51:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 13, + "열번": 2214, + "역명": "다대포항", + "시간": "16:06:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 14, + "열번": 7911, + "역명": "다대포항", + "시간": "06:16:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2016, + "역명": "다대포항", + "시간": "06:31:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1049, + "역명": "다대포항", + "시간": "09:19:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2080, + "역명": "다대포항", + "시간": "09:34:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1109, + "역명": "다대포항", + "시간": "12:14:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2138, + "역명": "다대포항", + "시간": "12:28:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1171, + "역명": "다대포항", + "시간": "15:07:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2198, + "역명": "다대포항", + "시간": "15:22:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1235, + "역명": "다대포항", + "시간": "18:03:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2262, + "역명": "다대포항", + "시간": "18:20:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1285, + "역명": "다대포항", + "시간": "21:01:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1011, + "역명": "다대포항", + "시간": "07:17:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2036, + "역명": "다대포항", + "시간": "07:31:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1069, + "역명": "다대포항", + "시간": "10:14:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2098, + "역명": "다대포항", + "시간": "10:28:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1129, + "역명": "다대포항", + "시간": "13:11:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2156, + "역명": "다대포항", + "시간": "13:26:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1193, + "역명": "다대포항", + "시간": "16:07:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2220, + "역명": "다대포항", + "시간": "16:22:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1255, + "역명": "다대포항", + "시간": "19:05:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2280, + "역명": "다대포항", + "시간": "19:18:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1299, + "역명": "다대포항", + "시간": "21:57:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2320, + "역명": "다대포항", + "시간": "22:11:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 16, + "열번": 7913, + "역명": "다대포항", + "시간": "06:52:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2026, + "역명": "다대포항", + "시간": "07:06:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 16, + "열번": 1059, + "역명": "다대포항", + "시간": "09:44:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2038, + "역명": "다대포항", + "시간": "07:36:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 18, + "열번": 1007, + "역명": "다대포항", + "시간": "06:55:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2028, + "역명": "다대포항", + "시간": "07:11:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1061, + "역명": "다대포항", + "시간": "09:50:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2090, + "역명": "다대포항", + "시간": "10:04:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1119, + "역명": "다대포항", + "시간": "12:44:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2148, + "역명": "다대포항", + "시간": "12:58:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1183, + "역명": "다대포항", + "시간": "15:40:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2210, + "역명": "다대포항", + "시간": "15:55:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1247, + "역명": "다대포항", + "시간": "18:38:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 19, + "열번": 7919, + "역명": "다대포항", + "시간": "07:24:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2040, + "역명": "다대포항", + "시간": "07:41:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1071, + "역명": "다대포항", + "시간": "10:20:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2100, + "역명": "다대포항", + "시간": "10:34:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1131, + "역명": "다대포항", + "시간": "13:17:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2158, + "역명": "다대포항", + "시간": "13:32:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1195, + "역명": "다대포항", + "시간": "16:13:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2222, + "역명": "다대포항", + "시간": "16:27:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 20, + "열번": 7915, + "역명": "다대포항", + "시간": "07:03:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2030, + "역명": "다대포항", + "시간": "07:16:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1063, + "역명": "다대포항", + "시간": "09:56:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2092, + "역명": "다대포항", + "시간": "10:10:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1121, + "역명": "다대포항", + "시간": "12:49:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2150, + "역명": "다대포항", + "시간": "13:04:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1185, + "역명": "다대포항", + "시간": "15:45:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2212, + "역명": "다대포항", + "시간": "16:00:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1249, + "역명": "다대포항", + "시간": "18:44:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2274, + "역명": "다대포항", + "시간": "18:57:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1295, + "역명": "다대포항", + "시간": "21:41:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2318, + "역명": "다대포항", + "시간": "22:01:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 21, + "열번": 1013, + "역명": "다대포항", + "시간": "07:28:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2042, + "역명": "다대포항", + "시간": "07:46:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1073, + "역명": "다대포항", + "시간": "10:26:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2102, + "역명": "다대포항", + "시간": "10:40:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1133, + "역명": "다대포항", + "시간": "13:22:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2160, + "역명": "다대포항", + "시간": "13:37:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1197, + "역명": "다대포항", + "시간": "16:18:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2224, + "역명": "다대포항", + "시간": "16:32:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1257, + "역명": "다대포항", + "시간": "19:12:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2282, + "역명": "다대포항", + "시간": "19:26:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1301, + "역명": "다대포항", + "시간": "22:05:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2322, + "역명": "다대포항", + "시간": "22:23:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 22, + "열번": 7917, + "역명": "다대포항", + "시간": "07:12:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2034, + "역명": "다대포항", + "시간": "07:26:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1067, + "역명": "다대포항", + "시간": "10:08:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2096, + "역명": "다대포항", + "시간": "10:22:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1125, + "역명": "다대포항", + "시간": "13:00:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 23, + "열번": 7921, + "역명": "다대포항", + "시간": "07:34:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2044, + "역명": "다대포항", + "시간": "07:51:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1075, + "역명": "다대포항", + "시간": "10:32:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2104, + "역명": "다대포항", + "시간": "10:46:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1135, + "역명": "다대포항", + "시간": "13:28:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2162, + "역명": "다대포항", + "시간": "13:43:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1199, + "역명": "다대포항", + "시간": "16:24:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2228, + "역명": "다대포항", + "시간": "16:42:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 24, + "열번": 7923, + "역명": "다대포항", + "시간": "07:44:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "다대포항", + "시간": "08:01:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1079, + "역명": "다대포항", + "시간": "10:44:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2108, + "역명": "다대포항", + "시간": "10:58:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1139, + "역명": "다대포항", + "시간": "13:39:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2166, + "역명": "다대포항", + "시간": "13:54:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1203, + "역명": "다대포항", + "시간": "16:35:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2232, + "역명": "다대포항", + "시간": "16:52:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1263, + "역명": "다대포항", + "시간": "19:33:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2288, + "역명": "다대포항", + "시간": "19:50:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1307, + "역명": "다대포항", + "시간": "22:29:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 24, + "열번": 2326, + "역명": "다대포항", + "시간": "22:47:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "다대포항", + "시간": "07:56:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2054, + "역명": "다대포항", + "시간": "08:16:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1083, + "역명": "다대포항", + "시간": "10:56:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2112, + "역명": "다대포항", + "시간": "11:10:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1143, + "역명": "다대포항", + "시간": "13:50:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2170, + "역명": "다대포항", + "시간": "14:05:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1207, + "역명": "다대포항", + "시간": "16:46:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2236, + "역명": "다대포항", + "시간": "17:02:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1267, + "역명": "다대포항", + "시간": "19:49:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2292, + "역명": "다대포항", + "시간": "20:06:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1311, + "역명": "다대포항", + "시간": "22:45:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2328, + "역명": "다대포항", + "시간": "22:57:50", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 26, + "열번": 7925, + "역명": "다대포항", + "시간": "07:53:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2052, + "역명": "다대포항", + "시간": "08:11:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1081, + "역명": "다대포항", + "시간": "10:50:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2110, + "역명": "다대포항", + "시간": "11:04:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1141, + "역명": "다대포항", + "시간": "13:44:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2168, + "역명": "다대포항", + "시간": "13:59:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1205, + "역명": "다대포항", + "시간": "16:40:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2234, + "역명": "다대포항", + "시간": "16:57:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1265, + "역명": "다대포항", + "시간": "19:41:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2290, + "역명": "다대포항", + "시간": "19:58:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1309, + "역명": "다대포항", + "시간": "22:37:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1025, + "역명": "다대포항", + "시간": "08:19:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2060, + "역명": "다대포항", + "시간": "08:34:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1089, + "역명": "다대포항", + "시간": "11:14:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2118, + "역명": "다대포항", + "시간": "11:28:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1151, + "역명": "다대포항", + "시간": "14:12:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2178, + "역명": "다대포항", + "시간": "14:27:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1215, + "역명": "다대포항", + "시간": "17:08:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2244, + "역명": "다대포항", + "시간": "17:26:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1271, + "역명": "다대포항", + "시간": "20:05:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2296, + "역명": "다대포항", + "시간": "20:22:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 27, + "열번": 1315, + "역명": "다대포항", + "시간": "23:05:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 28, + "열번": 1029, + "역명": "다대포항", + "시간": "08:29:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2064, + "역명": "다대포항", + "시간": "08:46:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1093, + "역명": "다대포항", + "시간": "11:26:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2122, + "역명": "다대포항", + "시간": "11:40:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1155, + "역명": "다대포항", + "시간": "14:23:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2182, + "역명": "다대포항", + "시간": "14:38:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1219, + "역명": "다대포항", + "시간": "17:19:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1035, + "역명": "다대포항", + "시간": "08:44:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2068, + "역명": "다대포항", + "시간": "08:58:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1097, + "역명": "다대포항", + "시간": "11:38:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2126, + "역명": "다대포항", + "시간": "11:52:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1159, + "역명": "다대포항", + "시간": "14:34:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2186, + "역명": "다대포항", + "시간": "14:49:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1223, + "역명": "다대포항", + "시간": "17:30:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 29, + "열번": 2250, + "역명": "다대포항", + "시간": "17:44:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1031, + "역명": "다대포항", + "시간": "08:34:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1037, + "역명": "다대포항", + "시간": "08:49:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2070, + "역명": "다대포항", + "시간": "09:04:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1099, + "역명": "다대포항", + "시간": "11:44:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2128, + "역명": "다대포항", + "시간": "11:58:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1161, + "역명": "다대포항", + "시간": "14:39:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2188, + "역명": "다대포항", + "시간": "14:54:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1225, + "역명": "다대포항", + "시간": "17:35:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2252, + "역명": "다대포항", + "시간": "17:50:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1277, + "역명": "다대포항", + "시간": "20:29:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2302, + "역명": "다대포항", + "시간": "20:46:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1319, + "역명": "다대포항", + "시간": "23:25:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 32, + "열번": 1041, + "역명": "다대포항", + "시간": "08:59:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1045, + "역명": "다대포항", + "시간": "09:09:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2076, + "역명": "다대포항", + "시간": "09:22:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1105, + "역명": "다대포항", + "시간": "12:02:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2134, + "역명": "다대포항", + "시간": "12:16:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1167, + "역명": "다대포항", + "시간": "14:56:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2194, + "역명": "다대포항", + "시간": "15:11:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1231, + "역명": "다대포항", + "시간": "17:52:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 33, + "열번": 2258, + "역명": "다대포항", + "시간": "18:08:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1189, + "역명": "다대포항", + "시간": "15:56:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 34, + "열번": 2216, + "역명": "다대포항", + "시간": "16:11:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1251, + "역명": "다대포항", + "시간": "18:51:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 34, + "열번": 2276, + "역명": "다대포항", + "시간": "19:04:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1297, + "역명": "다대포항", + "시간": "21:49:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1047, + "역명": "다대포항", + "시간": "09:14:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2078, + "역명": "다대포항", + "시간": "09:28:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1107, + "역명": "다대포항", + "시간": "12:08:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2136, + "역명": "다대포항", + "시간": "12:22:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1169, + "역명": "다대포항", + "시간": "15:01:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2196, + "역명": "다대포항", + "시간": "15:16:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1233, + "역명": "다대포항", + "시간": "17:57:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2260, + "역명": "다대포항", + "시간": "18:14:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1283, + "역명": "다대포항", + "시간": "20:53:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2308, + "역명": "다대포항", + "시간": "21:11:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1325, + "역명": "다대포항", + "시간": "23:57:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 36, + "열번": 2226, + "역명": "다대포항", + "시간": "16:37:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1259, + "역명": "다대포항", + "시간": "19:19:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 36, + "열번": 2284, + "역명": "다대포항", + "시간": "19:34:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1303, + "역명": "다대포항", + "시간": "22:13:20", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1127, + "역명": "다대포항", + "시간": "13:06:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2154, + "역명": "다대포항", + "시간": "13:21:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1191, + "역명": "다대포항", + "시간": "16:02:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2218, + "역명": "다대포항", + "시간": "16:17:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1253, + "역명": "다대포항", + "시간": "18:58:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 37, + "열번": 2278, + "역명": "다대포항", + "시간": "19:11:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 39, + "열번": 1149, + "역명": "다대포항", + "시간": "14:06:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2176, + "역명": "다대포항", + "시간": "14:21:45", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1213, + "역명": "다대포항", + "시간": "17:02:50", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 39, + "열번": 2242, + "역명": "다대포항", + "시간": "17:20:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 41, + "열번": 1175, + "역명": "다대포항", + "시간": "15:18:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2202, + "역명": "다대포항", + "시간": "15:33:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1239, + "역명": "다대포항", + "시간": "18:14:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2266, + "역명": "다대포항", + "시간": "18:32:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1289, + "역명": "다대포항", + "시간": "21:17:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2312, + "역명": "다대포항", + "시간": "21:31:15", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1327, + "역명": "다대포항", + "시간": "00:09:20", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "다대포해수욕장", + "시간": "05:04:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "다대포해수욕장", + "시간": "07:50:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2050, + "역명": "다대포해수욕장", + "시간": "08:04:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "다대포해수욕장", + "시간": "07:41:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "다대포해수욕장", + "시간": "07:54:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1077, + "역명": "다대포해수욕장", + "시간": "10:41:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2106, + "역명": "다대포해수욕장", + "시간": "10:50:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1137, + "역명": "다대포해수욕장", + "시간": "13:36:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2164, + "역명": "다대포해수욕장", + "시간": "13:46:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1201, + "역명": "다대포해수욕장", + "시간": "16:32:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2230, + "역명": "다대포해수욕장", + "시간": "16:45:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1261, + "역명": "다대포해수욕장", + "시간": "19:29:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2286, + "역명": "다대포해수욕장", + "시간": "19:40:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1305, + "역명": "다대포해수욕장", + "시간": "22:24:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 2, + "열번": 2324, + "역명": "다대포해수욕장", + "시간": "22:33:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "다대포해수욕장", + "시간": "05:18:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "다대포해수욕장", + "시간": "08:08:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2056, + "역명": "다대포해수욕장", + "시간": "08:20:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1085, + "역명": "다대포해수욕장", + "시간": "11:05:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2114, + "역명": "다대포해수욕장", + "시간": "11:14:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1145, + "역명": "다대포해수욕장", + "시간": "13:58:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2172, + "역명": "다대포해수욕장", + "시간": "14:08:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1209, + "역명": "다대포해수욕장", + "시간": "16:54:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2238, + "역명": "다대포해수욕장", + "시간": "17:06:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 4, + "열번": 7901, + "역명": "다대포해수욕장", + "시간": "05:19:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "다대포해수욕장", + "시간": "05:30:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1023, + "역명": "다대포해수욕장", + "시간": "08:15:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2058, + "역명": "다대포해수욕장", + "시간": "08:26:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1087, + "역명": "다대포해수욕장", + "시간": "11:11:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2116, + "역명": "다대포해수욕장", + "시간": "11:20:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1147, + "역명": "다대포해수욕장", + "시간": "14:04:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2174, + "역명": "다대포해수욕장", + "시간": "14:14:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1211, + "역명": "다대포해수욕장", + "시간": "17:00:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2240, + "역명": "다대포해수욕장", + "시간": "17:12:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1269, + "역명": "다대포해수욕장", + "시간": "20:00:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2294, + "역명": "다대포해수욕장", + "시간": "20:12:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1313, + "역명": "다대포해수욕장", + "시간": "22:58:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2330, + "역명": "다대포해수욕장", + "시간": "23:11:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 5, + "열번": 1001, + "역명": "다대포해수욕장", + "시간": "06:28:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2018, + "역명": "다대포해수욕장", + "시간": "06:38:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1051, + "역명": "다대포해수욕장", + "시간": "09:27:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2082, + "역명": "다대포해수욕장", + "시간": "09:38:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1111, + "역명": "다대포해수욕장", + "시간": "12:23:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2140, + "역명": "다대포해수욕장", + "시간": "12:32:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1173, + "역명": "다대포해수욕장", + "시간": "15:15:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2200, + "역명": "다대포해수욕장", + "시간": "15:25:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1237, + "역명": "다대포해수욕장", + "시간": "18:11:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2264, + "역명": "다대포해수욕장", + "시간": "18:24:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1287, + "역명": "다대포해수욕장", + "시간": "21:12:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2310, + "역명": "다대포해수욕장", + "시간": "21:19:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 6, + "열번": 7903, + "역명": "다대포해수욕장", + "시간": "05:31:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2008, + "역명": "다대포해수욕장", + "시간": "05:42:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1027, + "역명": "다대포해수욕장", + "시간": "08:27:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2062, + "역명": "다대포해수욕장", + "시간": "08:38:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1091, + "역명": "다대포해수욕장", + "시간": "11:23:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2120, + "역명": "다대포해수욕장", + "시간": "11:32:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1153, + "역명": "다대포해수욕장", + "시간": "14:20:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2180, + "역명": "다대포해수욕장", + "시간": "14:30:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1217, + "역명": "다대포해수욕장", + "시간": "17:16:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2246, + "역명": "다대포해수욕장", + "시간": "17:30:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1273, + "역명": "다대포해수욕장", + "시간": "20:16:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2298, + "역명": "다대포해수욕장", + "시간": "20:28:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1317, + "역명": "다대포해수욕장", + "시간": "23:18:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 6, + "열번": 4802, + "역명": "다대포해수욕장", + "시간": "23:26:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1003, + "역명": "다대포해수욕장", + "시간": "06:36:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2020, + "역명": "다대포해수욕장", + "시간": "06:47:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1053, + "역명": "다대포해수욕장", + "시간": "09:32:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2084, + "역명": "다대포해수욕장", + "시간": "09:44:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1113, + "역명": "다대포해수욕장", + "시간": "12:29:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2142, + "역명": "다대포해수욕장", + "시간": "12:38:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1177, + "역명": "다대포해수욕장", + "시간": "15:26:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2204, + "역명": "다대포해수욕장", + "시간": "15:36:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1241, + "역명": "다대포해수욕장", + "시간": "18:23:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2268, + "역명": "다대포해수욕장", + "시간": "18:36:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1291, + "역명": "다대포해수욕장", + "시간": "21:28:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2314, + "역명": "다대포해수욕장", + "시간": "21:39:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 7, + "열번": 1329, + "역명": "다대포해수욕장", + "시간": "00:24:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 8, + "열번": 7905, + "역명": "다대포해수욕장", + "시간": "05:43:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2010, + "역명": "다대포해수욕장", + "시간": "05:54:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1033, + "역명": "다대포해수욕장", + "시간": "08:42:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2066, + "역명": "다대포해수욕장", + "시간": "08:50:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1095, + "역명": "다대포해수욕장", + "시간": "11:35:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2124, + "역명": "다대포해수욕장", + "시간": "11:44:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1157, + "역명": "다대포해수욕장", + "시간": "14:31:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2184, + "역명": "다대포해수욕장", + "시간": "14:41:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1221, + "역명": "다대포해수욕장", + "시간": "17:27:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2248, + "역명": "다대포해수욕장", + "시간": "17:36:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1275, + "역명": "다대포해수욕장", + "시간": "20:24:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 8, + "열번": 2300, + "역명": "다대포해수욕장", + "시간": "20:36:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 9, + "열번": 2022, + "역명": "다대포해수욕장", + "시간": "06:53:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1055, + "역명": "다대포해수욕장", + "시간": "09:37:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2086, + "역명": "다대포해수욕장", + "시간": "09:50:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1115, + "역명": "다대포해수욕장", + "시간": "12:35:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2144, + "역명": "다대포해수욕장", + "시간": "12:44:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1179, + "역명": "다대포해수욕장", + "시간": "15:32:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2206, + "역명": "다대포해수욕장", + "시간": "15:42:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1243, + "역명": "다대포해수욕장", + "시간": "18:29:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 9, + "열번": 2270, + "역명": "다대포해수욕장", + "시간": "18:42:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 10, + "열번": 7907, + "역명": "다대포해수욕장", + "시간": "05:55:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2012, + "역명": "다대포해수욕장", + "시간": "06:06:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1039, + "역명": "다대포해수욕장", + "시간": "08:57:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2072, + "역명": "다대포해수욕장", + "시간": "09:08:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1101, + "역명": "다대포해수욕장", + "시간": "11:53:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2130, + "역명": "다대포해수욕장", + "시간": "12:02:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1163, + "역명": "다대포해수욕장", + "시간": "14:48:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2190, + "역명": "다대포해수욕장", + "시간": "14:58:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1227, + "역명": "다대포해수욕장", + "시간": "17:44:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2254, + "역명": "다대포해수욕장", + "시간": "17:54:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1279, + "역명": "다대포해수욕장", + "시간": "20:40:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2304, + "역명": "다대포해수욕장", + "시간": "20:52:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1321, + "역명": "다대포해수욕장", + "시간": "23:38:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 10, + "열번": 4804, + "역명": "다대포해수욕장", + "시간": "23:46:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 11, + "열번": 1005, + "역명": "다대포해수욕장", + "시간": "06:47:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2024, + "역명": "다대포해수욕장", + "시간": "06:59:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1057, + "역명": "다대포해수욕장", + "시간": "09:42:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2088, + "역명": "다대포해수욕장", + "시간": "09:56:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1117, + "역명": "다대포해수욕장", + "시간": "12:41:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2146, + "역명": "다대포해수욕장", + "시간": "12:50:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1181, + "역명": "다대포해수욕장", + "시간": "15:37:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2208, + "역명": "다대포해수욕장", + "시간": "15:47:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1245, + "역명": "다대포해수욕장", + "시간": "18:35:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2272, + "역명": "다대포해수욕장", + "시간": "18:48:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 11, + "열번": 1293, + "역명": "다대포해수욕장", + "시간": "21:36:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 11, + "열번": 2316, + "역명": "다대포해수욕장", + "시간": "21:49:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 11, + "열번": 1331, + "역명": "다대포해수욕장", + "시간": "00:35:40", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 12, + "열번": 7909, + "역명": "다대포해수욕장", + "시간": "06:07:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2014, + "역명": "다대포해수욕장", + "시간": "06:18:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1043, + "역명": "다대포해수욕장", + "시간": "09:07:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2074, + "역명": "다대포해수욕장", + "시간": "09:14:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1103, + "역명": "다대포해수욕장", + "시간": "11:59:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2132, + "역명": "다대포해수욕장", + "시간": "12:08:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1165, + "역명": "다대포해수욕장", + "시간": "14:53:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "다대포해수욕장", + "시간": "15:03:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1229, + "역명": "다대포해수욕장", + "시간": "17:49:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2256, + "역명": "다대포해수욕장", + "시간": "18:00:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1281, + "역명": "다대포해수욕장", + "시간": "20:48:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2306, + "역명": "다대포해수욕장", + "시간": "21:00:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1323, + "역명": "다대포해수욕장", + "시간": "23:49:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 12, + "열번": 4806, + "역명": "다대포해수욕장", + "시간": "23:57:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1009, + "역명": "다대포해수욕장", + "시간": "07:09:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2032, + "역명": "다대포해수욕장", + "시간": "07:19:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1065, + "역명": "다대포해수욕장", + "시간": "10:05:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2094, + "역명": "다대포해수욕장", + "시간": "10:14:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1123, + "역명": "다대포해수욕장", + "시간": "12:58:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2152, + "역명": "다대포해수욕장", + "시간": "13:08:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1187, + "역명": "다대포해수욕장", + "시간": "15:54:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 13, + "열번": 2214, + "역명": "다대포해수욕장", + "시간": "16:04:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 14, + "열번": 7911, + "역명": "다대포해수욕장", + "시간": "06:18:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2016, + "역명": "다대포해수욕장", + "시간": "06:29:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1049, + "역명": "다대포해수욕장", + "시간": "09:22:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2080, + "역명": "다대포해수욕장", + "시간": "09:32:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1109, + "역명": "다대포해수욕장", + "시간": "12:17:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2138, + "역명": "다대포해수욕장", + "시간": "12:26:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1171, + "역명": "다대포해수욕장", + "시간": "15:10:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2198, + "역명": "다대포해수욕장", + "시간": "15:20:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1235, + "역명": "다대포해수욕장", + "시간": "18:06:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2262, + "역명": "다대포해수욕장", + "시간": "18:18:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 14, + "열번": 1285, + "역명": "다대포해수욕장", + "시간": "21:04:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 14, + "열번": 4012, + "역명": "다대포해수욕장", + "시간": "21:12:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1011, + "역명": "다대포해수욕장", + "시간": "07:20:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2036, + "역명": "다대포해수욕장", + "시간": "07:29:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1069, + "역명": "다대포해수욕장", + "시간": "10:17:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2098, + "역명": "다대포해수욕장", + "시간": "10:26:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1129, + "역명": "다대포해수욕장", + "시간": "13:14:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2156, + "역명": "다대포해수욕장", + "시간": "13:24:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1193, + "역명": "다대포해수욕장", + "시간": "16:10:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2220, + "역명": "다대포해수욕장", + "시간": "16:20:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1255, + "역명": "다대포해수욕장", + "시간": "19:08:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2280, + "역명": "다대포해수욕장", + "시간": "19:16:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1299, + "역명": "다대포해수욕장", + "시간": "22:00:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2320, + "역명": "다대포해수욕장", + "시간": "22:09:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 16, + "열번": 7913, + "역명": "다대포해수욕장", + "시간": "06:54:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2026, + "역명": "다대포해수욕장", + "시간": "07:04:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 16, + "열번": 1059, + "역명": "다대포해수욕장", + "시간": "09:47:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2038, + "역명": "다대포해수욕장", + "시간": "07:34:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 18, + "열번": 1007, + "역명": "다대포해수욕장", + "시간": "06:58:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2028, + "역명": "다대포해수욕장", + "시간": "07:09:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1061, + "역명": "다대포해수욕장", + "시간": "09:53:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2090, + "역명": "다대포해수욕장", + "시간": "10:02:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1119, + "역명": "다대포해수욕장", + "시간": "12:47:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2148, + "역명": "다대포해수욕장", + "시간": "12:56:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1183, + "역명": "다대포해수욕장", + "시간": "15:43:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2210, + "역명": "다대포해수욕장", + "시간": "15:53:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1247, + "역명": "다대포해수욕장", + "시간": "18:41:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 18, + "열번": 4010, + "역명": "다대포해수욕장", + "시간": "18:50:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 19, + "열번": 7919, + "역명": "다대포해수욕장", + "시간": "07:26:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2040, + "역명": "다대포해수욕장", + "시간": "07:39:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1071, + "역명": "다대포해수욕장", + "시간": "10:23:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2100, + "역명": "다대포해수욕장", + "시간": "10:32:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1131, + "역명": "다대포해수욕장", + "시간": "13:20:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 19, + "열번": 2158, + "역명": "다대포해수욕장", + "시간": "13:30:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 19, + "열번": 1195, + "역명": "다대포해수욕장", + "시간": "16:16:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2222, + "역명": "다대포해수욕장", + "시간": "16:25:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 20, + "열번": 7915, + "역명": "다대포해수욕장", + "시간": "07:05:40", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2030, + "역명": "다대포해수욕장", + "시간": "07:14:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1063, + "역명": "다대포해수욕장", + "시간": "09:59:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2092, + "역명": "다대포해수욕장", + "시간": "10:08:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1121, + "역명": "다대포해수욕장", + "시간": "12:52:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2150, + "역명": "다대포해수욕장", + "시간": "13:02:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1185, + "역명": "다대포해수욕장", + "시간": "15:48:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2212, + "역명": "다대포해수욕장", + "시간": "15:58:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1249, + "역명": "다대포해수욕장", + "시간": "18:47:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2274, + "역명": "다대포해수욕장", + "시간": "18:55:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1295, + "역명": "다대포해수욕장", + "시간": "21:44:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2318, + "역명": "다대포해수욕장", + "시간": "21:59:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 21, + "열번": 1013, + "역명": "다대포해수욕장", + "시간": "07:31:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2042, + "역명": "다대포해수욕장", + "시간": "07:44:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1073, + "역명": "다대포해수욕장", + "시간": "10:29:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2102, + "역명": "다대포해수욕장", + "시간": "10:38:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1133, + "역명": "다대포해수욕장", + "시간": "13:25:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2160, + "역명": "다대포해수욕장", + "시간": "13:35:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1197, + "역명": "다대포해수욕장", + "시간": "16:21:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2224, + "역명": "다대포해수욕장", + "시간": "16:30:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1257, + "역명": "다대포해수욕장", + "시간": "19:15:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2282, + "역명": "다대포해수욕장", + "시간": "19:24:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1301, + "역명": "다대포해수욕장", + "시간": "22:08:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2322, + "역명": "다대포해수욕장", + "시간": "22:21:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 22, + "열번": 7917, + "역명": "다대포해수욕장", + "시간": "07:15:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2034, + "역명": "다대포해수욕장", + "시간": "07:24:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1067, + "역명": "다대포해수욕장", + "시간": "10:11:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2096, + "역명": "다대포해수욕장", + "시간": "10:20:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1125, + "역명": "다대포해수욕장", + "시간": "13:03:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 22, + "열번": 4006, + "역명": "다대포해수욕장", + "시간": "13:14:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 23, + "열번": 7921, + "역명": "다대포해수욕장", + "시간": "07:37:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2044, + "역명": "다대포해수욕장", + "시간": "07:49:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1075, + "역명": "다대포해수욕장", + "시간": "10:35:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2104, + "역명": "다대포해수욕장", + "시간": "10:44:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1135, + "역명": "다대포해수욕장", + "시간": "13:31:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2162, + "역명": "다대포해수욕장", + "시간": "13:41:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1199, + "역명": "다대포해수욕장", + "시간": "16:27:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2228, + "역명": "다대포해수욕장", + "시간": "16:40:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 24, + "열번": 7923, + "역명": "다대포해수욕장", + "시간": "07:47:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "다대포해수욕장", + "시간": "07:59:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1079, + "역명": "다대포해수욕장", + "시간": "10:47:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2108, + "역명": "다대포해수욕장", + "시간": "10:56:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1139, + "역명": "다대포해수욕장", + "시간": "13:42:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2166, + "역명": "다대포해수욕장", + "시간": "13:52:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1203, + "역명": "다대포해수욕장", + "시간": "16:38:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2232, + "역명": "다대포해수욕장", + "시간": "16:50:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1263, + "역명": "다대포해수욕장", + "시간": "19:36:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2288, + "역명": "다대포해수욕장", + "시간": "19:48:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1307, + "역명": "다대포해수욕장", + "시간": "22:32:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 24, + "열번": 2326, + "역명": "다대포해수욕장", + "시간": "22:45:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "다대포해수욕장", + "시간": "07:59:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2054, + "역명": "다대포해수욕장", + "시간": "08:14:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1083, + "역명": "다대포해수욕장", + "시간": "10:59:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2112, + "역명": "다대포해수욕장", + "시간": "11:08:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1143, + "역명": "다대포해수욕장", + "시간": "13:53:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2170, + "역명": "다대포해수욕장", + "시간": "14:03:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1207, + "역명": "다대포해수욕장", + "시간": "16:49:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2236, + "역명": "다대포해수욕장", + "시간": "17:00:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1267, + "역명": "다대포해수욕장", + "시간": "19:52:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2292, + "역명": "다대포해수욕장", + "시간": "20:04:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1311, + "역명": "다대포해수욕장", + "시간": "22:48:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2328, + "역명": "다대포해수욕장", + "시간": "22:55:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 26, + "열번": 7925, + "역명": "다대포해수욕장", + "시간": "07:56:10", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2052, + "역명": "다대포해수욕장", + "시간": "08:09:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1081, + "역명": "다대포해수욕장", + "시간": "10:53:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2110, + "역명": "다대포해수욕장", + "시간": "11:02:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1141, + "역명": "다대포해수욕장", + "시간": "13:47:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2168, + "역명": "다대포해수욕장", + "시간": "13:57:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1205, + "역명": "다대포해수욕장", + "시간": "16:43:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2234, + "역명": "다대포해수욕장", + "시간": "16:55:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1265, + "역명": "다대포해수욕장", + "시간": "19:44:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 26, + "열번": 2290, + "역명": "다대포해수욕장", + "시간": "19:56:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 26, + "열번": 1309, + "역명": "다대포해수욕장", + "시간": "22:40:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 26, + "열번": 4018, + "역명": "다대포해수욕장", + "시간": "22:48:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1025, + "역명": "다대포해수욕장", + "시간": "08:22:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2060, + "역명": "다대포해수욕장", + "시간": "08:32:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1089, + "역명": "다대포해수욕장", + "시간": "11:17:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2118, + "역명": "다대포해수욕장", + "시간": "11:26:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1151, + "역명": "다대포해수욕장", + "시간": "14:15:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2178, + "역명": "다대포해수욕장", + "시간": "14:25:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1215, + "역명": "다대포해수욕장", + "시간": "17:11:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2244, + "역명": "다대포해수욕장", + "시간": "17:24:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1271, + "역명": "다대포해수욕장", + "시간": "20:08:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2296, + "역명": "다대포해수욕장", + "시간": "20:20:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 27, + "열번": 1315, + "역명": "다대포해수욕장", + "시간": "23:08:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 28, + "열번": 1029, + "역명": "다대포해수욕장", + "시간": "08:32:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2064, + "역명": "다대포해수욕장", + "시간": "08:44:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1093, + "역명": "다대포해수욕장", + "시간": "11:29:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2122, + "역명": "다대포해수욕장", + "시간": "11:38:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1155, + "역명": "다대포해수욕장", + "시간": "14:26:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 28, + "열번": 2182, + "역명": "다대포해수욕장", + "시간": "14:36:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 28, + "열번": 1219, + "역명": "다대포해수욕장", + "시간": "17:22:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 28, + "열번": 4008, + "역명": "다대포해수욕장", + "시간": "17:32:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1035, + "역명": "다대포해수욕장", + "시간": "08:47:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2068, + "역명": "다대포해수욕장", + "시간": "08:56:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1097, + "역명": "다대포해수욕장", + "시간": "11:41:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2126, + "역명": "다대포해수욕장", + "시간": "11:50:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1159, + "역명": "다대포해수욕장", + "시간": "14:37:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2186, + "역명": "다대포해수욕장", + "시간": "14:47:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1223, + "역명": "다대포해수욕장", + "시간": "17:33:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 29, + "열번": 2250, + "역명": "다대포해수욕장", + "시간": "17:42:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1031, + "역명": "다대포해수욕장", + "시간": "08:37:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 30, + "열번": 4002, + "역명": "다대포해수욕장", + "시간": "08:46:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1037, + "역명": "다대포해수욕장", + "시간": "08:52:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2070, + "역명": "다대포해수욕장", + "시간": "09:02:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1099, + "역명": "다대포해수욕장", + "시간": "11:47:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2128, + "역명": "다대포해수욕장", + "시간": "11:56:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1161, + "역명": "다대포해수욕장", + "시간": "14:42:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2188, + "역명": "다대포해수욕장", + "시간": "14:52:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1225, + "역명": "다대포해수욕장", + "시간": "17:38:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2252, + "역명": "다대포해수욕장", + "시간": "17:48:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1277, + "역명": "다대포해수욕장", + "시간": "20:32:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2302, + "역명": "다대포해수욕장", + "시간": "20:44:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1319, + "역명": "다대포해수욕장", + "시간": "23:28:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 32, + "열번": 1041, + "역명": "다대포해수욕장", + "시간": "09:02:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 32, + "열번": 4004, + "역명": "다대포해수욕장", + "시간": "09:10:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1045, + "역명": "다대포해수욕장", + "시간": "09:12:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2076, + "역명": "다대포해수욕장", + "시간": "09:20:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1105, + "역명": "다대포해수욕장", + "시간": "12:05:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2134, + "역명": "다대포해수욕장", + "시간": "12:14:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1167, + "역명": "다대포해수욕장", + "시간": "14:59:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2194, + "역명": "다대포해수욕장", + "시간": "15:09:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1231, + "역명": "다대포해수욕장", + "시간": "17:55:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 33, + "열번": 2258, + "역명": "다대포해수욕장", + "시간": "18:06:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1189, + "역명": "다대포해수욕장", + "시간": "15:59:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 34, + "열번": 2216, + "역명": "다대포해수욕장", + "시간": "16:09:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1251, + "역명": "다대포해수욕장", + "시간": "18:54:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 34, + "열번": 2276, + "역명": "다대포해수욕장", + "시간": "19:02:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 34, + "열번": 1297, + "역명": "다대포해수욕장", + "시간": "21:52:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 34, + "열번": 4014, + "역명": "다대포해수욕장", + "시간": "22:01:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1047, + "역명": "다대포해수욕장", + "시간": "09:17:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2078, + "역명": "다대포해수욕장", + "시간": "09:26:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1107, + "역명": "다대포해수욕장", + "시간": "12:11:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2136, + "역명": "다대포해수욕장", + "시간": "12:20:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1169, + "역명": "다대포해수욕장", + "시간": "15:04:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2196, + "역명": "다대포해수욕장", + "시간": "15:14:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1233, + "역명": "다대포해수욕장", + "시간": "18:00:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2260, + "역명": "다대포해수욕장", + "시간": "18:12:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1283, + "역명": "다대포해수욕장", + "시간": "20:56:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2308, + "역명": "다대포해수욕장", + "시간": "21:09:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1325, + "역명": "다대포해수욕장", + "시간": "00:00:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 35, + "열번": 4808, + "역명": "다대포해수욕장", + "시간": "00:08:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 36, + "열번": 2226, + "역명": "다대포해수욕장", + "시간": "16:35:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1259, + "역명": "다대포해수욕장", + "시간": "19:22:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 36, + "열번": 2284, + "역명": "다대포해수욕장", + "시간": "19:32:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 36, + "열번": 1303, + "역명": "다대포해수욕장", + "시간": "22:16:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 36, + "열번": 4016, + "역명": "다대포해수욕장", + "시간": "22:24:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1127, + "역명": "다대포해수욕장", + "시간": "13:09:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2154, + "역명": "다대포해수욕장", + "시간": "13:19:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1191, + "역명": "다대포해수욕장", + "시간": "16:05:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2218, + "역명": "다대포해수욕장", + "시간": "16:15:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1253, + "역명": "다대포해수욕장", + "시간": "19:01:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 37, + "열번": 2278, + "역명": "다대포해수욕장", + "시간": "19:09:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 39, + "열번": 1149, + "역명": "다대포해수욕장", + "시간": "14:09:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 39, + "열번": 2176, + "역명": "다대포해수욕장", + "시간": "14:19:30", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 39, + "열번": 1213, + "역명": "다대포해수욕장", + "시간": "17:05:30", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 39, + "열번": 2242, + "역명": "다대포해수욕장", + "시간": "17:18:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 41, + "열번": 1175, + "역명": "다대포해수욕장", + "시간": "15:21:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2202, + "역명": "다대포해수욕장", + "시간": "15:31:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1239, + "역명": "다대포해수욕장", + "시간": "18:17:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2266, + "역명": "다대포해수욕장", + "시간": "18:30:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1289, + "역명": "다대포해수욕장", + "시간": "21:20:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 2312, + "역명": "다대포해수욕장", + "시간": "21:29:00", + "요일구분": "토요일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 41, + "열번": 1327, + "역명": "다대포해수욕장", + "시간": "00:12:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 41, + "열번": 4810, + "역명": "다대포해수욕장", + "시간": "00:20:00", + "요일구분": "토요일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "노포", + "시간": "06:22:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "노포", + "시간": "06:32:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2050, + "역명": "노포", + "시간": "09:27:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1081, + "역명": "노포", + "시간": "09:36:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2108, + "역명": "노포", + "시간": "12:21:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1139, + "역명": "노포", + "시간": "12:30:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2166, + "역명": "노포", + "시간": "15:15:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1197, + "역명": "노포", + "시간": "15:24:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2226, + "역명": "노포", + "시간": "18:09:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "노포", + "시간": "06:08:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "노포", + "시간": "06:23:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "노포", + "시간": "09:15:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1077, + "역명": "노포", + "시간": "09:24:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2104, + "역명": "노포", + "시간": "12:09:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1135, + "역명": "노포", + "시간": "12:18:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2162, + "역명": "노포", + "시간": "15:03:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1193, + "역명": "노포", + "시간": "15:12:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2222, + "역명": "노포", + "시간": "17:58:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1249, + "역명": "노포", + "시간": "18:09:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2274, + "역명": "노포", + "시간": "20:59:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1293, + "역명": "노포", + "시간": "21:10:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "노포", + "시간": "06:36:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "노포", + "시간": "06:50:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2054, + "역명": "노포", + "시간": "09:39:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1085, + "역명": "노포", + "시간": "09:48:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2112, + "역명": "노포", + "시간": "12:33:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1143, + "역명": "노포", + "시간": "12:42:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2170, + "역명": "노포", + "시간": "15:27:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1201, + "역명": "노포", + "시간": "15:36:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2230, + "역명": "노포", + "시간": "18:20:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1255, + "역명": "노포", + "시간": "18:31:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2278, + "역명": "노포", + "시간": "21:15:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "노포", + "시간": "06:48:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1023, + "역명": "노포", + "시간": "06:57:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2056, + "역명": "노포", + "시간": "09:45:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1087, + "역명": "노포", + "시간": "09:54:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2114, + "역명": "노포", + "시간": "12:39:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1145, + "역명": "노포", + "시간": "12:48:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2172, + "역명": "노포", + "시간": "15:33:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1203, + "역명": "노포", + "시간": "15:42:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2232, + "역명": "노포", + "시간": "18:26:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1257, + "역명": "노포", + "시간": "18:39:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2280, + "역명": "노포", + "시간": "21:23:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1297, + "역명": "노포", + "시간": "21:30:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2316, + "역명": "노포", + "시간": "00:14:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2012, + "역명": "노포", + "시간": "07:24:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1039, + "역명": "노포", + "시간": "07:39:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2070, + "역명": "노포", + "시간": "10:27:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1101, + "역명": "노포", + "시간": "10:36:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2128, + "역명": "노포", + "시간": "13:21:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1159, + "역명": "노포", + "시간": "13:30:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2186, + "역명": "노포", + "시간": "16:15:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1217, + "역명": "노포", + "시간": "16:24:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2246, + "역명": "노포", + "시간": "19:11:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2008, + "역명": "노포", + "시간": "07:00:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1027, + "역명": "노포", + "시간": "07:09:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2060, + "역명": "노포", + "시간": "09:57:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1091, + "역명": "노포", + "시간": "10:06:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2118, + "역명": "노포", + "시간": "12:51:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1149, + "역명": "노포", + "시간": "13:00:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2176, + "역명": "노포", + "시간": "15:45:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1207, + "역명": "노포", + "시간": "15:54:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2236, + "역명": "노포", + "시간": "18:38:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1259, + "역명": "노포", + "시간": "18:47:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2282, + "역명": "노포", + "시간": "21:31:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1299, + "역명": "노포", + "시간": "21:40:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 6, + "열번": 2318, + "역명": "노포", + "시간": "00:31:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1001, + "역명": "노포", + "시간": "05:08:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2018, + "역명": "노포", + "시간": "07:56:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1051, + "역명": "노포", + "시간": "08:09:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2080, + "역명": "노포", + "시간": "10:57:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1111, + "역명": "노포", + "시간": "11:06:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2138, + "역명": "노포", + "시간": "13:51:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1169, + "역명": "노포", + "시간": "14:00:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2196, + "역명": "노포", + "시간": "16:45:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1227, + "역명": "노포", + "시간": "16:54:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2254, + "역명": "노포", + "시간": "19:39:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1275, + "역명": "노포", + "시간": "19:51:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 7, + "열번": 2298, + "역명": "노포", + "시간": "22:37:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2010, + "역명": "노포", + "시간": "07:12:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1033, + "역명": "노포", + "시간": "07:24:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2064, + "역명": "노포", + "시간": "10:09:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1095, + "역명": "노포", + "시간": "10:18:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2122, + "역명": "노포", + "시간": "13:03:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1153, + "역명": "노포", + "시간": "13:12:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2180, + "역명": "노포", + "시간": "15:57:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1211, + "역명": "노포", + "시간": "16:06:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2240, + "역명": "노포", + "시간": "18:50:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1263, + "역명": "노포", + "시간": "19:03:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2286, + "역명": "노포", + "시간": "21:47:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1303, + "역명": "노포", + "시간": "22:00:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 9, + "열번": 1003, + "역명": "노포", + "시간": "05:18:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2020, + "역명": "노포", + "시간": "08:05:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1053, + "역명": "노포", + "시간": "08:14:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2082, + "역명": "노포", + "시간": "11:03:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1113, + "역명": "노포", + "시간": "11:12:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2140, + "역명": "노포", + "시간": "13:57:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1171, + "역명": "노포", + "시간": "14:06:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2198, + "역명": "노포", + "시간": "16:51:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1229, + "역명": "노포", + "시간": "17:00:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2256, + "역명": "노포", + "시간": "19:47:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1277, + "역명": "노포", + "시간": "19:59:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2300, + "역명": "노포", + "시간": "22:47:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1313, + "역명": "노포", + "시간": "22:54:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2014, + "역명": "노포", + "시간": "07:36:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1043, + "역명": "노포", + "시간": "07:49:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2072, + "역명": "노포", + "시간": "10:33:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1103, + "역명": "노포", + "시간": "10:42:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2130, + "역명": "노포", + "시간": "13:27:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1161, + "역명": "노포", + "시간": "13:36:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2188, + "역명": "노포", + "시간": "16:21:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1219, + "역명": "노포", + "시간": "16:30:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2248, + "역명": "노포", + "시간": "19:18:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1269, + "역명": "노포", + "시간": "19:27:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2292, + "역명": "노포", + "시간": "22:11:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1307, + "역명": "노포", + "시간": "22:20:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 11, + "열번": 2022, + "역명": "노포", + "시간": "08:11:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2016, + "역명": "노포", + "시간": "07:47:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1047, + "역명": "노포", + "시간": "07:59:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2076, + "역명": "노포", + "시간": "10:45:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1107, + "역명": "노포", + "시간": "10:54:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2134, + "역명": "노포", + "시간": "13:39:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1165, + "역명": "노포", + "시간": "13:48:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "노포", + "시간": "16:33:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1223, + "역명": "노포", + "시간": "16:42:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2252, + "역명": "노포", + "시간": "19:32:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1273, + "역명": "노포", + "시간": "19:43:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2296, + "역명": "노포", + "시간": "22:27:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1311, + "역명": "노포", + "시간": "22:42:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1005, + "역명": "노포", + "시간": "05:29:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2024, + "역명": "노포", + "시간": "08:17:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1057, + "역명": "노포", + "시간": "08:24:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2086, + "역명": "노포", + "시간": "11:15:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1117, + "역명": "노포", + "시간": "11:24:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2144, + "역명": "노포", + "시간": "14:09:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1175, + "역명": "노포", + "시간": "14:18:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2202, + "역명": "노포", + "시간": "17:03:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1233, + "역명": "노포", + "시간": "17:13:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2260, + "역명": "노포", + "시간": "20:03:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1281, + "역명": "노포", + "시간": "20:15:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2304, + "역명": "노포", + "시간": "23:07:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 13, + "열번": 1317, + "역명": "노포", + "시간": "23:16:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2026, + "역명": "노포", + "시간": "08:22:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 14, + "열번": 1059, + "역명": "노포", + "시간": "08:30:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1009, + "역명": "노포", + "시간": "05:51:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2032, + "역명": "노포", + "시간": "08:37:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1065, + "역명": "노포", + "시간": "08:48:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2092, + "역명": "노포", + "시간": "11:33:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1123, + "역명": "노포", + "시간": "11:42:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2150, + "역명": "노포", + "시간": "14:27:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1181, + "역명": "노포", + "시간": "14:36:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2208, + "역명": "노포", + "시간": "17:19:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 16, + "열번": 1007, + "역명": "노포", + "시간": "05:40:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2028, + "역명": "노포", + "시간": "08:27:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1061, + "역명": "노포", + "시간": "08:36:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2088, + "역명": "노포", + "시간": "11:21:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1119, + "역명": "노포", + "시간": "11:30:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2146, + "역명": "노포", + "시간": "14:15:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1177, + "역명": "노포", + "시간": "14:24:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2204, + "역명": "노포", + "시간": "17:08:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1235, + "역명": "노포", + "시간": "17:20:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 17, + "열번": 1011, + "역명": "노포", + "시간": "06:02:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2036, + "역명": "노포", + "시간": "08:47:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1069, + "역명": "노포", + "시간": "09:00:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2096, + "역명": "노포", + "시간": "11:45:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1127, + "역명": "노포", + "시간": "11:54:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2154, + "역명": "노포", + "시간": "14:39:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1185, + "역명": "노포", + "시간": "14:48:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2214, + "역명": "노포", + "시간": "17:36:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1243, + "역명": "노포", + "시간": "17:48:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2268, + "역명": "노포", + "시간": "20:35:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1289, + "역명": "노포", + "시간": "20:50:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2310, + "역명": "노포", + "시간": "23:39:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2030, + "역명": "노포", + "시간": "08:32:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1063, + "역명": "노포", + "시간": "08:42:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2090, + "역명": "노포", + "시간": "11:27:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1121, + "역명": "노포", + "시간": "11:36:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2148, + "역명": "노포", + "시간": "14:21:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1179, + "역명": "노포", + "시간": "14:30:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2206, + "역명": "노포", + "시간": "17:14:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1237, + "역명": "노포", + "시간": "17:27:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2262, + "역명": "노포", + "시간": "20:11:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1283, + "역명": "노포", + "시간": "20:23:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2038, + "역명": "노포", + "시간": "08:52:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2034, + "역명": "노포", + "시간": "08:42:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1067, + "역명": "노포", + "시간": "08:54:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2094, + "역명": "노포", + "시간": "11:39:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1125, + "역명": "노포", + "시간": "11:48:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2152, + "역명": "노포", + "시간": "14:33:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1183, + "역명": "노포", + "시간": "14:42:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2212, + "역명": "노포", + "시간": "17:30:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1241, + "역명": "노포", + "시간": "17:41:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2266, + "역명": "노포", + "시간": "20:27:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1287, + "역명": "노포", + "시간": "20:40:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 20, + "열번": 2308, + "역명": "노포", + "시간": "23:27:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2040, + "역명": "노포", + "시간": "08:57:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1071, + "역명": "노포", + "시간": "09:06:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2098, + "역명": "노포", + "시간": "11:51:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1129, + "역명": "노포", + "시간": "12:00:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2156, + "역명": "노포", + "시간": "14:45:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1187, + "역명": "노포", + "시간": "14:54:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2216, + "역명": "노포", + "시간": "17:41:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2044, + "역명": "노포", + "시간": "09:09:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1075, + "역명": "노포", + "시간": "09:18:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2102, + "역명": "노포", + "시간": "12:03:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1133, + "역명": "노포", + "시간": "12:12:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2160, + "역명": "노포", + "시간": "14:57:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1191, + "역명": "노포", + "시간": "15:06:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2220, + "역명": "노포", + "시간": "17:52:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1247, + "역명": "노포", + "시간": "18:02:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2272, + "역명": "노포", + "시간": "20:51:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1291, + "역명": "노포", + "시간": "21:00:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 22, + "열번": 2312, + "역명": "노포", + "시간": "23:51:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 23, + "열번": 1013, + "역명": "노포", + "시간": "06:13:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2042, + "역명": "노포", + "시간": "09:03:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1073, + "역명": "노포", + "시간": "09:12:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2100, + "역명": "노포", + "시간": "11:57:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1131, + "역명": "노포", + "시간": "12:06:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2158, + "역명": "노포", + "시간": "14:51:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1189, + "역명": "노포", + "시간": "15:00:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2218, + "역명": "노포", + "시간": "17:47:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1245, + "역명": "노포", + "시간": "17:55:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2270, + "역명": "노포", + "시간": "20:43:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "노포", + "시간": "09:21:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1079, + "역명": "노포", + "시간": "09:30:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2106, + "역명": "노포", + "시간": "12:15:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1137, + "역명": "노포", + "시간": "12:24:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2164, + "역명": "노포", + "시간": "15:09:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1195, + "역명": "노포", + "시간": "15:18:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2224, + "역명": "노포", + "시간": "18:03:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1251, + "역명": "노포", + "시간": "18:16:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "노포", + "시간": "06:41:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2052, + "역명": "노포", + "시간": "09:33:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1083, + "역명": "노포", + "시간": "09:42:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2110, + "역명": "노포", + "시간": "12:27:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1141, + "역명": "노포", + "시간": "12:36:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2168, + "역명": "노포", + "시간": "15:21:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1199, + "역명": "노포", + "시간": "15:30:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2228, + "역명": "노포", + "시간": "18:14:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1253, + "역명": "노포", + "시간": "18:23:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2276, + "역명": "노포", + "시간": "21:07:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1295, + "역명": "노포", + "시간": "21:20:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2314, + "역명": "노포", + "시간": "00:03:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 26, + "열번": 1029, + "역명": "노포", + "시간": "07:14:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1025, + "역명": "노포", + "시간": "07:04:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2058, + "역명": "노포", + "시간": "09:51:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1089, + "역명": "노포", + "시간": "10:00:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2116, + "역명": "노포", + "시간": "12:45:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1147, + "역명": "노포", + "시간": "12:54:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2174, + "역명": "노포", + "시간": "15:39:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1205, + "역명": "노포", + "시간": "15:48:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 27, + "열번": 2234, + "역명": "노포", + "시간": "18:32:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 28, + "열번": 1041, + "역명": "노포", + "시간": "07:44:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1031, + "역명": "노포", + "시간": "07:19:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2062, + "역명": "노포", + "시간": "10:03:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1093, + "역명": "노포", + "시간": "10:12:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2120, + "역명": "노포", + "시간": "12:57:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1151, + "역명": "노포", + "시간": "13:06:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2178, + "역명": "노포", + "시간": "15:51:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1209, + "역명": "노포", + "시간": "16:00:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2238, + "역명": "노포", + "시간": "18:44:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1261, + "역명": "노포", + "시간": "18:55:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2284, + "역명": "노포", + "시간": "21:39:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 29, + "열번": 1301, + "역명": "노포", + "시간": "21:50:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1049, + "역명": "노포", + "시간": "08:04:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2078, + "역명": "노포", + "시간": "10:51:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1109, + "역명": "노포", + "시간": "11:00:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2136, + "역명": "노포", + "시간": "13:45:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1167, + "역명": "노포", + "시간": "13:54:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2194, + "역명": "노포", + "시간": "16:39:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1225, + "역명": "노포", + "시간": "16:48:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1035, + "역명": "노포", + "시간": "07:29:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2066, + "역명": "노포", + "시간": "10:15:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1097, + "역명": "노포", + "시간": "10:24:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2124, + "역명": "노포", + "시간": "13:09:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1155, + "역명": "노포", + "시간": "13:18:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2182, + "역명": "노포", + "시간": "16:03:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1213, + "역명": "노포", + "시간": "16:12:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2242, + "역명": "노포", + "시간": "18:57:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1265, + "역명": "노포", + "시간": "19:11:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2288, + "역명": "노포", + "시간": "21:55:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1305, + "역명": "노포", + "시간": "22:10:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 32, + "열번": 2210, + "역명": "노포", + "시간": "17:25:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 32, + "열번": 1239, + "역명": "노포", + "시간": "17:34:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 32, + "열번": 2264, + "역명": "노포", + "시간": "20:19:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 32, + "열번": 1285, + "역명": "노포", + "시간": "20:31:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 32, + "열번": 2306, + "역명": "노포", + "시간": "23:17:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 32, + "열번": 7931, + "역명": "노포", + "시간": "23:31:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1037, + "역명": "노포", + "시간": "07:34:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2068, + "역명": "노포", + "시간": "10:21:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1099, + "역명": "노포", + "시간": "10:30:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2126, + "역명": "노포", + "시간": "13:15:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1157, + "역명": "노포", + "시간": "13:24:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2184, + "역명": "노포", + "시간": "16:09:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1215, + "역명": "노포", + "시간": "16:18:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2244, + "역명": "노포", + "시간": "19:04:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1267, + "역명": "노포", + "시간": "19:19:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 33, + "열번": 2290, + "역명": "노포", + "시간": "22:03:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1045, + "역명": "노포", + "시간": "07:54:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2074, + "역명": "노포", + "시간": "10:39:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1105, + "역명": "노포", + "시간": "10:48:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2132, + "역명": "노포", + "시간": "13:33:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1163, + "역명": "노포", + "시간": "13:42:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2190, + "역명": "노포", + "시간": "16:27:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1221, + "역명": "노포", + "시간": "16:36:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2250, + "역명": "노포", + "시간": "19:25:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1271, + "역명": "노포", + "시간": "19:35:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2294, + "역명": "노포", + "시간": "22:19:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1309, + "역명": "노포", + "시간": "22:31:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1055, + "역명": "노포", + "시간": "08:19:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2084, + "역명": "노포", + "시간": "11:09:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1115, + "역명": "노포", + "시간": "11:18:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2142, + "역명": "노포", + "시간": "14:03:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1173, + "역명": "노포", + "시간": "14:12:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2200, + "역명": "노포", + "시간": "16:57:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1231, + "역명": "노포", + "시간": "17:06:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2258, + "역명": "노포", + "시간": "19:55:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1279, + "역명": "노포", + "시간": "20:07:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2302, + "역명": "노포", + "시간": "22:57:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1315, + "역명": "노포", + "시간": "23:06:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "범어사", + "시간": "06:19:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "범어사", + "시간": "06:34:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2050, + "역명": "범어사", + "시간": "09:24:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1081, + "역명": "범어사", + "시간": "09:37:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2108, + "역명": "범어사", + "시간": "12:18:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1139, + "역명": "범어사", + "시간": "12:31:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2166, + "역명": "범어사", + "시간": "15:12:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1197, + "역명": "범어사", + "시간": "15:25:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2226, + "역명": "범어사", + "시간": "18:06:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "범어사", + "시간": "06:06:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "범어사", + "시간": "06:25:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "범어사", + "시간": "09:12:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1077, + "역명": "범어사", + "시간": "09:25:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2104, + "역명": "범어사", + "시간": "12:06:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1135, + "역명": "범어사", + "시간": "12:19:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2162, + "역명": "범어사", + "시간": "15:00:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1193, + "역명": "범어사", + "시간": "15:13:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2222, + "역명": "범어사", + "시간": "17:55:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1249, + "역명": "범어사", + "시간": "18:10:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2274, + "역명": "범어사", + "시간": "20:56:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1293, + "역명": "범어사", + "시간": "21:11:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "범어사", + "시간": "06:33:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "범어사", + "시간": "06:52:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2054, + "역명": "범어사", + "시간": "09:36:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1085, + "역명": "범어사", + "시간": "09:49:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2112, + "역명": "범어사", + "시간": "12:30:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1143, + "역명": "범어사", + "시간": "12:43:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2170, + "역명": "범어사", + "시간": "15:24:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1201, + "역명": "범어사", + "시간": "15:37:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2230, + "역명": "범어사", + "시간": "18:17:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1255, + "역명": "범어사", + "시간": "18:32:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2278, + "역명": "범어사", + "시간": "21:12:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "범어사", + "시간": "06:45:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1023, + "역명": "범어사", + "시간": "06:59:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2056, + "역명": "범어사", + "시간": "09:42:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1087, + "역명": "범어사", + "시간": "09:55:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2114, + "역명": "범어사", + "시간": "12:36:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1145, + "역명": "범어사", + "시간": "12:49:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2172, + "역명": "범어사", + "시간": "15:30:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1203, + "역명": "범어사", + "시간": "15:43:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2232, + "역명": "범어사", + "시간": "18:23:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1257, + "역명": "범어사", + "시간": "18:40:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2280, + "역명": "범어사", + "시간": "21:20:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1297, + "역명": "범어사", + "시간": "21:31:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2316, + "역명": "범어사", + "시간": "00:12:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2012, + "역명": "범어사", + "시간": "07:21:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1039, + "역명": "범어사", + "시간": "07:40:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2070, + "역명": "범어사", + "시간": "10:24:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1101, + "역명": "범어사", + "시간": "10:37:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2128, + "역명": "범어사", + "시간": "13:18:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1159, + "역명": "범어사", + "시간": "13:31:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2186, + "역명": "범어사", + "시간": "16:12:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1217, + "역명": "범어사", + "시간": "16:25:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2246, + "역명": "범어사", + "시간": "19:08:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2008, + "역명": "범어사", + "시간": "06:57:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1027, + "역명": "범어사", + "시간": "07:10:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2060, + "역명": "범어사", + "시간": "09:54:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1091, + "역명": "범어사", + "시간": "10:07:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2118, + "역명": "범어사", + "시간": "12:48:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1149, + "역명": "범어사", + "시간": "13:01:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2176, + "역명": "범어사", + "시간": "15:42:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1207, + "역명": "범어사", + "시간": "15:55:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2236, + "역명": "범어사", + "시간": "18:35:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1259, + "역명": "범어사", + "시간": "18:48:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2282, + "역명": "범어사", + "시간": "21:28:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1299, + "역명": "범어사", + "시간": "21:41:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 6, + "열번": 2318, + "역명": "범어사", + "시간": "00:28:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1001, + "역명": "범어사", + "시간": "05:09:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2018, + "역명": "범어사", + "시간": "07:53:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1051, + "역명": "범어사", + "시간": "08:10:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2080, + "역명": "범어사", + "시간": "10:54:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1111, + "역명": "범어사", + "시간": "11:07:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2138, + "역명": "범어사", + "시간": "13:48:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1169, + "역명": "범어사", + "시간": "14:01:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2196, + "역명": "범어사", + "시간": "16:42:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1227, + "역명": "범어사", + "시간": "16:55:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2254, + "역명": "범어사", + "시간": "19:36:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1275, + "역명": "범어사", + "시간": "19:52:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 7, + "열번": 2298, + "역명": "범어사", + "시간": "22:34:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2010, + "역명": "범어사", + "시간": "07:09:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1033, + "역명": "범어사", + "시간": "07:25:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2064, + "역명": "범어사", + "시간": "10:06:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1095, + "역명": "범어사", + "시간": "10:19:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2122, + "역명": "범어사", + "시간": "13:00:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1153, + "역명": "범어사", + "시간": "13:13:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2180, + "역명": "범어사", + "시간": "15:54:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1211, + "역명": "범어사", + "시간": "16:07:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2240, + "역명": "범어사", + "시간": "18:47:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1263, + "역명": "범어사", + "시간": "19:04:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2286, + "역명": "범어사", + "시간": "21:44:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1303, + "역명": "범어사", + "시간": "22:01:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 9, + "열번": 1003, + "역명": "범어사", + "시간": "05:20:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2020, + "역명": "범어사", + "시간": "08:02:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1053, + "역명": "범어사", + "시간": "08:15:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2082, + "역명": "범어사", + "시간": "11:00:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1113, + "역명": "범어사", + "시간": "11:13:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2140, + "역명": "범어사", + "시간": "13:54:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1171, + "역명": "범어사", + "시간": "14:07:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2198, + "역명": "범어사", + "시간": "16:48:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1229, + "역명": "범어사", + "시간": "17:01:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2256, + "역명": "범어사", + "시간": "19:44:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1277, + "역명": "범어사", + "시간": "20:00:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2300, + "역명": "범어사", + "시간": "22:44:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1313, + "역명": "범어사", + "시간": "22:55:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2014, + "역명": "범어사", + "시간": "07:33:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1043, + "역명": "범어사", + "시간": "07:50:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2072, + "역명": "범어사", + "시간": "10:30:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1103, + "역명": "범어사", + "시간": "10:43:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2130, + "역명": "범어사", + "시간": "13:24:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1161, + "역명": "범어사", + "시간": "13:37:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2188, + "역명": "범어사", + "시간": "16:18:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1219, + "역명": "범어사", + "시간": "16:31:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2248, + "역명": "범어사", + "시간": "19:15:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1269, + "역명": "범어사", + "시간": "19:28:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2292, + "역명": "범어사", + "시간": "22:08:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1307, + "역명": "범어사", + "시간": "22:21:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 11, + "열번": 2022, + "역명": "범어사", + "시간": "08:08:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2016, + "역명": "범어사", + "시간": "07:44:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1047, + "역명": "범어사", + "시간": "08:00:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2076, + "역명": "범어사", + "시간": "10:42:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1107, + "역명": "범어사", + "시간": "10:55:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2134, + "역명": "범어사", + "시간": "13:36:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1165, + "역명": "범어사", + "시간": "13:49:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "범어사", + "시간": "16:30:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1223, + "역명": "범어사", + "시간": "16:43:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2252, + "역명": "범어사", + "시간": "19:29:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1273, + "역명": "범어사", + "시간": "19:44:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2296, + "역명": "범어사", + "시간": "22:24:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1311, + "역명": "범어사", + "시간": "22:43:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1005, + "역명": "범어사", + "시간": "05:31:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2024, + "역명": "범어사", + "시간": "08:14:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1057, + "역명": "범어사", + "시간": "08:26:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2086, + "역명": "범어사", + "시간": "11:12:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1117, + "역명": "범어사", + "시간": "11:25:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2144, + "역명": "범어사", + "시간": "14:06:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1175, + "역명": "범어사", + "시간": "14:19:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2202, + "역명": "범어사", + "시간": "17:00:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1233, + "역명": "범어사", + "시간": "17:14:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2260, + "역명": "범어사", + "시간": "20:00:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1281, + "역명": "범어사", + "시간": "20:16:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2304, + "역명": "범어사", + "시간": "23:04:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 13, + "열번": 1317, + "역명": "범어사", + "시간": "23:17:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2026, + "역명": "범어사", + "시간": "08:19:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 14, + "열번": 1059, + "역명": "범어사", + "시간": "08:31:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1009, + "역명": "범어사", + "시간": "05:53:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2032, + "역명": "범어사", + "시간": "08:34:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1065, + "역명": "범어사", + "시간": "08:49:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2092, + "역명": "범어사", + "시간": "11:30:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1123, + "역명": "범어사", + "시간": "11:43:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2150, + "역명": "범어사", + "시간": "14:24:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1181, + "역명": "범어사", + "시간": "14:37:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2208, + "역명": "범어사", + "시간": "17:16:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 16, + "열번": 1007, + "역명": "범어사", + "시간": "05:42:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2028, + "역명": "범어사", + "시간": "08:24:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1061, + "역명": "범어사", + "시간": "08:37:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2088, + "역명": "범어사", + "시간": "11:18:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1119, + "역명": "범어사", + "시간": "11:31:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2146, + "역명": "범어사", + "시간": "14:12:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1177, + "역명": "범어사", + "시간": "14:25:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2204, + "역명": "범어사", + "시간": "17:05:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1235, + "역명": "범어사", + "시간": "17:21:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 17, + "열번": 1011, + "역명": "범어사", + "시간": "06:04:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2036, + "역명": "범어사", + "시간": "08:44:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1069, + "역명": "범어사", + "시간": "09:01:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2096, + "역명": "범어사", + "시간": "11:42:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1127, + "역명": "범어사", + "시간": "11:55:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2154, + "역명": "범어사", + "시간": "14:36:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1185, + "역명": "범어사", + "시간": "14:49:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2214, + "역명": "범어사", + "시간": "17:33:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1243, + "역명": "범어사", + "시간": "17:49:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2268, + "역명": "범어사", + "시간": "20:32:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1289, + "역명": "범어사", + "시간": "20:51:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2310, + "역명": "범어사", + "시간": "23:36:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2030, + "역명": "범어사", + "시간": "08:29:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1063, + "역명": "범어사", + "시간": "08:43:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2090, + "역명": "범어사", + "시간": "11:24:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1121, + "역명": "범어사", + "시간": "11:37:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2148, + "역명": "범어사", + "시간": "14:18:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1179, + "역명": "범어사", + "시간": "14:31:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2206, + "역명": "범어사", + "시간": "17:11:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1237, + "역명": "범어사", + "시간": "17:28:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2262, + "역명": "범어사", + "시간": "20:08:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1283, + "역명": "범어사", + "시간": "20:24:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2038, + "역명": "범어사", + "시간": "08:49:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2034, + "역명": "범어사", + "시간": "08:39:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1067, + "역명": "범어사", + "시간": "08:55:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2094, + "역명": "범어사", + "시간": "11:36:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1125, + "역명": "범어사", + "시간": "11:49:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2152, + "역명": "범어사", + "시간": "14:30:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1183, + "역명": "범어사", + "시간": "14:43:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2212, + "역명": "범어사", + "시간": "17:27:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1241, + "역명": "범어사", + "시간": "17:42:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2266, + "역명": "범어사", + "시간": "20:24:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1287, + "역명": "범어사", + "시간": "20:41:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 20, + "열번": 2308, + "역명": "범어사", + "시간": "23:24:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2040, + "역명": "범어사", + "시간": "08:54:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1071, + "역명": "범어사", + "시간": "09:07:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2098, + "역명": "범어사", + "시간": "11:48:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1129, + "역명": "범어사", + "시간": "12:01:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2156, + "역명": "범어사", + "시간": "14:42:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1187, + "역명": "범어사", + "시간": "14:55:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2216, + "역명": "범어사", + "시간": "17:38:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2044, + "역명": "범어사", + "시간": "09:06:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1075, + "역명": "범어사", + "시간": "09:19:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2102, + "역명": "범어사", + "시간": "12:00:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1133, + "역명": "범어사", + "시간": "12:13:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2160, + "역명": "범어사", + "시간": "14:54:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1191, + "역명": "범어사", + "시간": "15:07:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2220, + "역명": "범어사", + "시간": "17:49:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1247, + "역명": "범어사", + "시간": "18:03:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2272, + "역명": "범어사", + "시간": "20:48:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1291, + "역명": "범어사", + "시간": "21:01:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 22, + "열번": 2312, + "역명": "범어사", + "시간": "23:48:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 23, + "열번": 1013, + "역명": "범어사", + "시간": "06:15:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2042, + "역명": "범어사", + "시간": "09:00:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1073, + "역명": "범어사", + "시간": "09:13:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2100, + "역명": "범어사", + "시간": "11:54:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1131, + "역명": "범어사", + "시간": "12:07:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2158, + "역명": "범어사", + "시간": "14:48:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1189, + "역명": "범어사", + "시간": "15:01:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2218, + "역명": "범어사", + "시간": "17:44:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1245, + "역명": "범어사", + "시간": "17:56:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2270, + "역명": "범어사", + "시간": "20:40:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "범어사", + "시간": "09:18:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1079, + "역명": "범어사", + "시간": "09:31:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2106, + "역명": "범어사", + "시간": "12:12:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1137, + "역명": "범어사", + "시간": "12:25:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2164, + "역명": "범어사", + "시간": "15:06:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1195, + "역명": "범어사", + "시간": "15:19:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2224, + "역명": "범어사", + "시간": "18:00:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1251, + "역명": "범어사", + "시간": "18:17:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "범어사", + "시간": "06:43:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2052, + "역명": "범어사", + "시간": "09:30:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1083, + "역명": "범어사", + "시간": "09:43:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2110, + "역명": "범어사", + "시간": "12:24:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1141, + "역명": "범어사", + "시간": "12:37:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2168, + "역명": "범어사", + "시간": "15:18:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1199, + "역명": "범어사", + "시간": "15:31:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2228, + "역명": "범어사", + "시간": "18:11:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1253, + "역명": "범어사", + "시간": "18:24:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2276, + "역명": "범어사", + "시간": "21:04:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1295, + "역명": "범어사", + "시간": "21:21:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2314, + "역명": "범어사", + "시간": "00:00:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 26, + "열번": 1029, + "역명": "범어사", + "시간": "07:15:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1025, + "역명": "범어사", + "시간": "07:05:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2058, + "역명": "범어사", + "시간": "09:48:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1089, + "역명": "범어사", + "시간": "10:01:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2116, + "역명": "범어사", + "시간": "12:42:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1147, + "역명": "범어사", + "시간": "12:55:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2174, + "역명": "범어사", + "시간": "15:36:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1205, + "역명": "범어사", + "시간": "15:49:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 27, + "열번": 2234, + "역명": "범어사", + "시간": "18:29:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 28, + "열번": 1041, + "역명": "범어사", + "시간": "07:45:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1031, + "역명": "범어사", + "시간": "07:20:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2062, + "역명": "범어사", + "시간": "10:00:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1093, + "역명": "범어사", + "시간": "10:13:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2120, + "역명": "범어사", + "시간": "12:54:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1151, + "역명": "범어사", + "시간": "13:07:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2178, + "역명": "범어사", + "시간": "15:48:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1209, + "역명": "범어사", + "시간": "16:01:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2238, + "역명": "범어사", + "시간": "18:41:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1261, + "역명": "범어사", + "시간": "18:56:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2284, + "역명": "범어사", + "시간": "21:36:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 29, + "열번": 1301, + "역명": "범어사", + "시간": "21:51:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1049, + "역명": "범어사", + "시간": "08:05:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2078, + "역명": "범어사", + "시간": "10:48:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1109, + "역명": "범어사", + "시간": "11:01:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2136, + "역명": "범어사", + "시간": "13:42:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1167, + "역명": "범어사", + "시간": "13:55:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2194, + "역명": "범어사", + "시간": "16:36:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1225, + "역명": "범어사", + "시간": "16:49:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1035, + "역명": "범어사", + "시간": "07:30:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2066, + "역명": "범어사", + "시간": "10:12:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1097, + "역명": "범어사", + "시간": "10:25:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2124, + "역명": "범어사", + "시간": "13:06:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1155, + "역명": "범어사", + "시간": "13:19:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2182, + "역명": "범어사", + "시간": "16:00:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1213, + "역명": "범어사", + "시간": "16:13:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2242, + "역명": "범어사", + "시간": "18:54:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1265, + "역명": "범어사", + "시간": "19:12:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2288, + "역명": "범어사", + "시간": "21:52:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1305, + "역명": "범어사", + "시간": "22:11:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 32, + "열번": 2210, + "역명": "범어사", + "시간": "17:22:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 32, + "열번": 1239, + "역명": "범어사", + "시간": "17:35:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 32, + "열번": 2264, + "역명": "범어사", + "시간": "20:16:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 32, + "열번": 1285, + "역명": "범어사", + "시간": "20:32:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 32, + "열번": 2306, + "역명": "범어사", + "시간": "23:14:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 32, + "열번": 7931, + "역명": "범어사", + "시간": "23:32:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1037, + "역명": "범어사", + "시간": "07:35:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2068, + "역명": "범어사", + "시간": "10:18:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1099, + "역명": "범어사", + "시간": "10:31:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2126, + "역명": "범어사", + "시간": "13:12:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1157, + "역명": "범어사", + "시간": "13:25:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2184, + "역명": "범어사", + "시간": "16:06:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1215, + "역명": "범어사", + "시간": "16:19:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2244, + "역명": "범어사", + "시간": "19:01:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1267, + "역명": "범어사", + "시간": "19:20:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 33, + "열번": 2290, + "역명": "범어사", + "시간": "22:00:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1045, + "역명": "범어사", + "시간": "07:55:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2074, + "역명": "범어사", + "시간": "10:36:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1105, + "역명": "범어사", + "시간": "10:49:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2132, + "역명": "범어사", + "시간": "13:30:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1163, + "역명": "범어사", + "시간": "13:43:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2190, + "역명": "범어사", + "시간": "16:24:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1221, + "역명": "범어사", + "시간": "16:37:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2250, + "역명": "범어사", + "시간": "19:22:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1271, + "역명": "범어사", + "시간": "19:36:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2294, + "역명": "범어사", + "시간": "22:16:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1309, + "역명": "범어사", + "시간": "22:32:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1055, + "역명": "범어사", + "시간": "08:20:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2084, + "역명": "범어사", + "시간": "11:06:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1115, + "역명": "범어사", + "시간": "11:19:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2142, + "역명": "범어사", + "시간": "14:00:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1173, + "역명": "범어사", + "시간": "14:13:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2200, + "역명": "범어사", + "시간": "16:54:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1231, + "역명": "범어사", + "시간": "17:07:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2258, + "역명": "범어사", + "시간": "19:52:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1279, + "역명": "범어사", + "시간": "20:08:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2302, + "역명": "범어사", + "시간": "22:54:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1315, + "역명": "범어사", + "시간": "23:07:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "남산", + "시간": "06:18:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "남산", + "시간": "06:36:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2050, + "역명": "남산", + "시간": "09:22:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1081, + "역명": "남산", + "시간": "09:39:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2108, + "역명": "남산", + "시간": "12:16:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1139, + "역명": "남산", + "시간": "12:33:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2166, + "역명": "남산", + "시간": "15:10:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1197, + "역명": "남산", + "시간": "15:27:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2226, + "역명": "남산", + "시간": "18:04:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "남산", + "시간": "06:04:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "남산", + "시간": "06:27:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "남산", + "시간": "09:10:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1077, + "역명": "남산", + "시간": "09:27:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2104, + "역명": "남산", + "시간": "12:04:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1135, + "역명": "남산", + "시간": "12:21:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2162, + "역명": "남산", + "시간": "14:58:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1193, + "역명": "남산", + "시간": "15:15:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2222, + "역명": "남산", + "시간": "17:53:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1249, + "역명": "남산", + "시간": "18:12:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2274, + "역명": "남산", + "시간": "20:54:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1293, + "역명": "남산", + "시간": "21:13:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "남산", + "시간": "06:31:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "남산", + "시간": "06:54:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2054, + "역명": "남산", + "시간": "09:34:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1085, + "역명": "남산", + "시간": "09:51:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2112, + "역명": "남산", + "시간": "12:28:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1143, + "역명": "남산", + "시간": "12:45:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2170, + "역명": "남산", + "시간": "15:22:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1201, + "역명": "남산", + "시간": "15:39:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2230, + "역명": "남산", + "시간": "18:15:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1255, + "역명": "남산", + "시간": "18:34:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2278, + "역명": "남산", + "시간": "21:10:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "남산", + "시간": "06:44:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1023, + "역명": "남산", + "시간": "07:01:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2056, + "역명": "남산", + "시간": "09:40:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1087, + "역명": "남산", + "시간": "09:57:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2114, + "역명": "남산", + "시간": "12:34:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1145, + "역명": "남산", + "시간": "12:51:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2172, + "역명": "남산", + "시간": "15:28:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1203, + "역명": "남산", + "시간": "15:45:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2232, + "역명": "남산", + "시간": "18:21:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1257, + "역명": "남산", + "시간": "18:42:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2280, + "역명": "남산", + "시간": "21:18:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1297, + "역명": "남산", + "시간": "21:33:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2316, + "역명": "남산", + "시간": "00:10:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2012, + "역명": "남산", + "시간": "07:20:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1039, + "역명": "남산", + "시간": "07:42:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2070, + "역명": "남산", + "시간": "10:22:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1101, + "역명": "남산", + "시간": "10:39:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2128, + "역명": "남산", + "시간": "13:16:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1159, + "역명": "남산", + "시간": "13:33:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2186, + "역명": "남산", + "시간": "16:10:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1217, + "역명": "남산", + "시간": "16:27:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2246, + "역명": "남산", + "시간": "19:06:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2008, + "역명": "남산", + "시간": "06:56:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1027, + "역명": "남산", + "시간": "07:12:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2060, + "역명": "남산", + "시간": "09:52:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1091, + "역명": "남산", + "시간": "10:09:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2118, + "역명": "남산", + "시간": "12:46:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1149, + "역명": "남산", + "시간": "13:03:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2176, + "역명": "남산", + "시간": "15:40:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1207, + "역명": "남산", + "시간": "15:57:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2236, + "역명": "남산", + "시간": "18:33:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1259, + "역명": "남산", + "시간": "18:50:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2282, + "역명": "남산", + "시간": "21:26:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1299, + "역명": "남산", + "시간": "21:43:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 6, + "열번": 2318, + "역명": "남산", + "시간": "00:26:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1001, + "역명": "남산", + "시간": "05:11:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2018, + "역명": "남산", + "시간": "07:52:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1051, + "역명": "남산", + "시간": "08:12:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2080, + "역명": "남산", + "시간": "10:52:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1111, + "역명": "남산", + "시간": "11:09:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2138, + "역명": "남산", + "시간": "13:46:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1169, + "역명": "남산", + "시간": "14:03:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2196, + "역명": "남산", + "시간": "16:40:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1227, + "역명": "남산", + "시간": "16:57:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2254, + "역명": "남산", + "시간": "19:34:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1275, + "역명": "남산", + "시간": "19:54:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 7, + "열번": 2298, + "역명": "남산", + "시간": "22:32:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2010, + "역명": "남산", + "시간": "07:08:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1033, + "역명": "남산", + "시간": "07:27:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2064, + "역명": "남산", + "시간": "10:04:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1095, + "역명": "남산", + "시간": "10:21:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2122, + "역명": "남산", + "시간": "12:58:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1153, + "역명": "남산", + "시간": "13:15:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2180, + "역명": "남산", + "시간": "15:52:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1211, + "역명": "남산", + "시간": "16:09:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2240, + "역명": "남산", + "시간": "18:45:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1263, + "역명": "남산", + "시간": "19:06:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2286, + "역명": "남산", + "시간": "21:42:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1303, + "역명": "남산", + "시간": "22:03:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 9, + "열번": 1003, + "역명": "남산", + "시간": "05:22:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2020, + "역명": "남산", + "시간": "08:00:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1053, + "역명": "남산", + "시간": "08:17:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2082, + "역명": "남산", + "시간": "10:58:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1113, + "역명": "남산", + "시간": "11:15:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2140, + "역명": "남산", + "시간": "13:52:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1171, + "역명": "남산", + "시간": "14:09:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2198, + "역명": "남산", + "시간": "16:46:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1229, + "역명": "남산", + "시간": "17:03:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2256, + "역명": "남산", + "시간": "19:42:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1277, + "역명": "남산", + "시간": "20:02:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2300, + "역명": "남산", + "시간": "22:42:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1313, + "역명": "남산", + "시간": "22:57:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2014, + "역명": "남산", + "시간": "07:32:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1043, + "역명": "남산", + "시간": "07:52:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2072, + "역명": "남산", + "시간": "10:28:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1103, + "역명": "남산", + "시간": "10:45:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2130, + "역명": "남산", + "시간": "13:22:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1161, + "역명": "남산", + "시간": "13:39:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2188, + "역명": "남산", + "시간": "16:16:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1219, + "역명": "남산", + "시간": "16:33:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2248, + "역명": "남산", + "시간": "19:13:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1269, + "역명": "남산", + "시간": "19:30:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2292, + "역명": "남산", + "시간": "22:06:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1307, + "역명": "남산", + "시간": "22:23:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 11, + "열번": 2022, + "역명": "남산", + "시간": "08:06:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2016, + "역명": "남산", + "시간": "07:43:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1047, + "역명": "남산", + "시간": "08:02:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2076, + "역명": "남산", + "시간": "10:40:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1107, + "역명": "남산", + "시간": "10:57:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2134, + "역명": "남산", + "시간": "13:34:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1165, + "역명": "남산", + "시간": "13:51:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "남산", + "시간": "16:28:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1223, + "역명": "남산", + "시간": "16:45:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2252, + "역명": "남산", + "시간": "19:27:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1273, + "역명": "남산", + "시간": "19:46:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2296, + "역명": "남산", + "시간": "22:22:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1311, + "역명": "남산", + "시간": "22:45:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1005, + "역명": "남산", + "시간": "05:33:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2024, + "역명": "남산", + "시간": "08:12:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1057, + "역명": "남산", + "시간": "08:28:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2086, + "역명": "남산", + "시간": "11:10:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1117, + "역명": "남산", + "시간": "11:27:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2144, + "역명": "남산", + "시간": "14:04:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1175, + "역명": "남산", + "시간": "14:21:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2202, + "역명": "남산", + "시간": "16:58:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1233, + "역명": "남산", + "시간": "17:16:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2260, + "역명": "남산", + "시간": "19:58:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1281, + "역명": "남산", + "시간": "20:18:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2304, + "역명": "남산", + "시간": "23:02:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 13, + "열번": 1317, + "역명": "남산", + "시간": "23:19:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2026, + "역명": "남산", + "시간": "08:17:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 14, + "열번": 1059, + "역명": "남산", + "시간": "08:33:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1009, + "역명": "남산", + "시간": "05:55:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2032, + "역명": "남산", + "시간": "08:32:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1065, + "역명": "남산", + "시간": "08:51:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2092, + "역명": "남산", + "시간": "11:28:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1123, + "역명": "남산", + "시간": "11:45:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2150, + "역명": "남산", + "시간": "14:22:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1181, + "역명": "남산", + "시간": "14:39:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2208, + "역명": "남산", + "시간": "17:15:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 16, + "열번": 1007, + "역명": "남산", + "시간": "05:44:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2028, + "역명": "남산", + "시간": "08:22:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1061, + "역명": "남산", + "시간": "08:39:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2088, + "역명": "남산", + "시간": "11:16:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1119, + "역명": "남산", + "시간": "11:33:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2146, + "역명": "남산", + "시간": "14:10:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1177, + "역명": "남산", + "시간": "14:27:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2204, + "역명": "남산", + "시간": "17:04:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1235, + "역명": "남산", + "시간": "17:23:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 17, + "열번": 1011, + "역명": "남산", + "시간": "06:06:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2036, + "역명": "남산", + "시간": "08:42:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1069, + "역명": "남산", + "시간": "09:03:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2096, + "역명": "남산", + "시간": "11:40:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1127, + "역명": "남산", + "시간": "11:57:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2154, + "역명": "남산", + "시간": "14:34:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1185, + "역명": "남산", + "시간": "14:51:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2214, + "역명": "남산", + "시간": "17:31:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1243, + "역명": "남산", + "시간": "17:51:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2268, + "역명": "남산", + "시간": "20:30:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1289, + "역명": "남산", + "시간": "20:53:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2310, + "역명": "남산", + "시간": "23:34:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2030, + "역명": "남산", + "시간": "08:27:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1063, + "역명": "남산", + "시간": "08:45:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2090, + "역명": "남산", + "시간": "11:22:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1121, + "역명": "남산", + "시간": "11:39:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2148, + "역명": "남산", + "시간": "14:16:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1179, + "역명": "남산", + "시간": "14:33:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2206, + "역명": "남산", + "시간": "17:09:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1237, + "역명": "남산", + "시간": "17:30:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2262, + "역명": "남산", + "시간": "20:06:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1283, + "역명": "남산", + "시간": "20:26:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2038, + "역명": "남산", + "시간": "08:47:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2034, + "역명": "남산", + "시간": "08:37:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1067, + "역명": "남산", + "시간": "08:57:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2094, + "역명": "남산", + "시간": "11:34:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1125, + "역명": "남산", + "시간": "11:51:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2152, + "역명": "남산", + "시간": "14:28:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1183, + "역명": "남산", + "시간": "14:45:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2212, + "역명": "남산", + "시간": "17:26:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1241, + "역명": "남산", + "시간": "17:44:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2266, + "역명": "남산", + "시간": "20:22:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1287, + "역명": "남산", + "시간": "20:43:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 20, + "열번": 2308, + "역명": "남산", + "시간": "23:22:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2040, + "역명": "남산", + "시간": "08:52:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1071, + "역명": "남산", + "시간": "09:09:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2098, + "역명": "남산", + "시간": "11:46:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1129, + "역명": "남산", + "시간": "12:03:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2156, + "역명": "남산", + "시간": "14:40:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1187, + "역명": "남산", + "시간": "14:57:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2216, + "역명": "남산", + "시간": "17:37:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2044, + "역명": "남산", + "시간": "09:04:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1075, + "역명": "남산", + "시간": "09:21:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2102, + "역명": "남산", + "시간": "11:58:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1133, + "역명": "남산", + "시간": "12:15:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2160, + "역명": "남산", + "시간": "14:52:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1191, + "역명": "남산", + "시간": "15:09:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2220, + "역명": "남산", + "시간": "17:48:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1247, + "역명": "남산", + "시간": "18:05:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2272, + "역명": "남산", + "시간": "20:46:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1291, + "역명": "남산", + "시간": "21:03:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 22, + "열번": 2312, + "역명": "남산", + "시간": "23:46:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 23, + "열번": 1013, + "역명": "남산", + "시간": "06:17:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2042, + "역명": "남산", + "시간": "08:58:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1073, + "역명": "남산", + "시간": "09:15:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2100, + "역명": "남산", + "시간": "11:52:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1131, + "역명": "남산", + "시간": "12:09:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2158, + "역명": "남산", + "시간": "14:46:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1189, + "역명": "남산", + "시간": "15:03:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2218, + "역명": "남산", + "시간": "17:42:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1245, + "역명": "남산", + "시간": "17:58:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2270, + "역명": "남산", + "시간": "20:38:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "남산", + "시간": "09:16:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1079, + "역명": "남산", + "시간": "09:33:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2106, + "역명": "남산", + "시간": "12:10:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1137, + "역명": "남산", + "시간": "12:27:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2164, + "역명": "남산", + "시간": "15:04:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1195, + "역명": "남산", + "시간": "15:21:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2224, + "역명": "남산", + "시간": "17:59:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1251, + "역명": "남산", + "시간": "18:19:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "남산", + "시간": "06:45:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2052, + "역명": "남산", + "시간": "09:28:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1083, + "역명": "남산", + "시간": "09:45:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2110, + "역명": "남산", + "시간": "12:22:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1141, + "역명": "남산", + "시간": "12:39:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2168, + "역명": "남산", + "시간": "15:16:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1199, + "역명": "남산", + "시간": "15:33:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2228, + "역명": "남산", + "시간": "18:10:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1253, + "역명": "남산", + "시간": "18:26:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2276, + "역명": "남산", + "시간": "21:02:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1295, + "역명": "남산", + "시간": "21:23:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2314, + "역명": "남산", + "시간": "23:58:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 26, + "열번": 1029, + "역명": "남산", + "시간": "07:17:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1025, + "역명": "남산", + "시간": "07:07:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2058, + "역명": "남산", + "시간": "09:46:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1089, + "역명": "남산", + "시간": "10:03:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2116, + "역명": "남산", + "시간": "12:40:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1147, + "역명": "남산", + "시간": "12:57:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2174, + "역명": "남산", + "시간": "15:34:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1205, + "역명": "남산", + "시간": "15:51:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 27, + "열번": 2234, + "역명": "남산", + "시간": "18:27:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 28, + "열번": 1041, + "역명": "남산", + "시간": "07:47:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1031, + "역명": "남산", + "시간": "07:22:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2062, + "역명": "남산", + "시간": "09:58:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1093, + "역명": "남산", + "시간": "10:15:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2120, + "역명": "남산", + "시간": "12:52:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1151, + "역명": "남산", + "시간": "13:09:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2178, + "역명": "남산", + "시간": "15:46:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1209, + "역명": "남산", + "시간": "16:03:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2238, + "역명": "남산", + "시간": "18:39:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1261, + "역명": "남산", + "시간": "18:58:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2284, + "역명": "남산", + "시간": "21:34:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 29, + "열번": 1301, + "역명": "남산", + "시간": "21:53:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1049, + "역명": "남산", + "시간": "08:07:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2078, + "역명": "남산", + "시간": "10:46:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1109, + "역명": "남산", + "시간": "11:03:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2136, + "역명": "남산", + "시간": "13:40:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1167, + "역명": "남산", + "시간": "13:57:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2194, + "역명": "남산", + "시간": "16:34:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1225, + "역명": "남산", + "시간": "16:51:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1035, + "역명": "남산", + "시간": "07:32:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2066, + "역명": "남산", + "시간": "10:10:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1097, + "역명": "남산", + "시간": "10:27:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2124, + "역명": "남산", + "시간": "13:04:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1155, + "역명": "남산", + "시간": "13:21:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2182, + "역명": "남산", + "시간": "15:58:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1213, + "역명": "남산", + "시간": "16:15:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2242, + "역명": "남산", + "시간": "18:52:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1265, + "역명": "남산", + "시간": "19:14:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2288, + "역명": "남산", + "시간": "21:50:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1305, + "역명": "남산", + "시간": "22:13:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 32, + "열번": 2210, + "역명": "남산", + "시간": "17:20:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 32, + "열번": 1239, + "역명": "남산", + "시간": "17:37:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 32, + "열번": 2264, + "역명": "남산", + "시간": "20:14:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 32, + "열번": 1285, + "역명": "남산", + "시간": "20:34:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 32, + "열번": 2306, + "역명": "남산", + "시간": "23:12:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 32, + "열번": 7931, + "역명": "남산", + "시간": "23:34:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1037, + "역명": "남산", + "시간": "07:37:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2068, + "역명": "남산", + "시간": "10:16:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1099, + "역명": "남산", + "시간": "10:33:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2126, + "역명": "남산", + "시간": "13:10:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1157, + "역명": "남산", + "시간": "13:27:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2184, + "역명": "남산", + "시간": "16:04:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1215, + "역명": "남산", + "시간": "16:21:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2244, + "역명": "남산", + "시간": "18:59:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1267, + "역명": "남산", + "시간": "19:22:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 33, + "열번": 2290, + "역명": "남산", + "시간": "21:58:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1045, + "역명": "남산", + "시간": "07:57:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2074, + "역명": "남산", + "시간": "10:34:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1105, + "역명": "남산", + "시간": "10:51:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2132, + "역명": "남산", + "시간": "13:28:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1163, + "역명": "남산", + "시간": "13:45:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2190, + "역명": "남산", + "시간": "16:22:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1221, + "역명": "남산", + "시간": "16:39:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2250, + "역명": "남산", + "시간": "19:20:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1271, + "역명": "남산", + "시간": "19:38:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2294, + "역명": "남산", + "시간": "22:14:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1309, + "역명": "남산", + "시간": "22:34:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1055, + "역명": "남산", + "시간": "08:22:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2084, + "역명": "남산", + "시간": "11:04:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1115, + "역명": "남산", + "시간": "11:21:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2142, + "역명": "남산", + "시간": "13:58:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1173, + "역명": "남산", + "시간": "14:15:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2200, + "역명": "남산", + "시간": "16:52:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1231, + "역명": "남산", + "시간": "17:09:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2258, + "역명": "남산", + "시간": "19:50:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1279, + "역명": "남산", + "시간": "20:10:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2302, + "역명": "남산", + "시간": "22:52:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1315, + "역명": "남산", + "시간": "23:09:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "두실", + "시간": "06:16:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "두실", + "시간": "06:37:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2050, + "역명": "두실", + "시간": "09:20:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1081, + "역명": "두실", + "시간": "09:41:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2108, + "역명": "두실", + "시간": "12:14:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1139, + "역명": "두실", + "시간": "12:35:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2166, + "역명": "두실", + "시간": "15:08:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1197, + "역명": "두실", + "시간": "15:29:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2226, + "역명": "두실", + "시간": "18:02:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "두실", + "시간": "06:02:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "두실", + "시간": "06:28:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "두실", + "시간": "09:08:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1077, + "역명": "두실", + "시간": "09:29:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2104, + "역명": "두실", + "시간": "12:02:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1135, + "역명": "두실", + "시간": "12:23:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2162, + "역명": "두실", + "시간": "14:56:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1193, + "역명": "두실", + "시간": "15:17:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2222, + "역명": "두실", + "시간": "17:51:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1249, + "역명": "두실", + "시간": "18:14:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2274, + "역명": "두실", + "시간": "20:52:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1293, + "역명": "두실", + "시간": "21:15:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "두실", + "시간": "06:29:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "두실", + "시간": "06:55:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2054, + "역명": "두실", + "시간": "09:32:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1085, + "역명": "두실", + "시간": "09:53:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2112, + "역명": "두실", + "시간": "12:26:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1143, + "역명": "두실", + "시간": "12:47:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2170, + "역명": "두실", + "시간": "15:20:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1201, + "역명": "두실", + "시간": "15:41:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2230, + "역명": "두실", + "시간": "18:13:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1255, + "역명": "두실", + "시간": "18:36:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2278, + "역명": "두실", + "시간": "21:08:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "두실", + "시간": "06:42:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1023, + "역명": "두실", + "시간": "07:02:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2056, + "역명": "두실", + "시간": "09:38:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1087, + "역명": "두실", + "시간": "09:59:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2114, + "역명": "두실", + "시간": "12:32:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1145, + "역명": "두실", + "시간": "12:53:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2172, + "역명": "두실", + "시간": "15:26:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1203, + "역명": "두실", + "시간": "15:47:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2232, + "역명": "두실", + "시간": "18:19:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1257, + "역명": "두실", + "시간": "18:44:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2280, + "역명": "두실", + "시간": "21:16:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1297, + "역명": "두실", + "시간": "21:35:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2316, + "역명": "두실", + "시간": "00:08:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2012, + "역명": "두실", + "시간": "07:18:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1039, + "역명": "두실", + "시간": "07:44:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2070, + "역명": "두실", + "시간": "10:20:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1101, + "역명": "두실", + "시간": "10:41:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2128, + "역명": "두실", + "시간": "13:14:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1159, + "역명": "두실", + "시간": "13:35:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2186, + "역명": "두실", + "시간": "16:08:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1217, + "역명": "두실", + "시간": "16:29:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2246, + "역명": "두실", + "시간": "19:04:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2008, + "역명": "두실", + "시간": "06:54:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1027, + "역명": "두실", + "시간": "07:14:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2060, + "역명": "두실", + "시간": "09:50:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1091, + "역명": "두실", + "시간": "10:11:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2118, + "역명": "두실", + "시간": "12:44:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1149, + "역명": "두실", + "시간": "13:05:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2176, + "역명": "두실", + "시간": "15:38:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1207, + "역명": "두실", + "시간": "15:59:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2236, + "역명": "두실", + "시간": "18:31:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1259, + "역명": "두실", + "시간": "18:52:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2282, + "역명": "두실", + "시간": "21:24:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1299, + "역명": "두실", + "시간": "21:45:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 6, + "열번": 2318, + "역명": "두실", + "시간": "00:25:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1001, + "역명": "두실", + "시간": "05:13:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2018, + "역명": "두실", + "시간": "07:50:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1051, + "역명": "두실", + "시간": "08:14:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2080, + "역명": "두실", + "시간": "10:50:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1111, + "역명": "두실", + "시간": "11:11:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2138, + "역명": "두실", + "시간": "13:44:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1169, + "역명": "두실", + "시간": "14:05:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2196, + "역명": "두실", + "시간": "16:38:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1227, + "역명": "두실", + "시간": "16:59:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2254, + "역명": "두실", + "시간": "19:32:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1275, + "역명": "두실", + "시간": "19:56:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 7, + "열번": 2298, + "역명": "두실", + "시간": "22:30:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2010, + "역명": "두실", + "시간": "07:06:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1033, + "역명": "두실", + "시간": "07:29:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2064, + "역명": "두실", + "시간": "10:02:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1095, + "역명": "두실", + "시간": "10:23:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2122, + "역명": "두실", + "시간": "12:56:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1153, + "역명": "두실", + "시간": "13:17:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2180, + "역명": "두실", + "시간": "15:50:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1211, + "역명": "두실", + "시간": "16:11:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2240, + "역명": "두실", + "시간": "18:43:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1263, + "역명": "두실", + "시간": "19:08:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2286, + "역명": "두실", + "시간": "21:40:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1303, + "역명": "두실", + "시간": "22:05:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 9, + "열번": 1003, + "역명": "두실", + "시간": "05:23:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2020, + "역명": "두실", + "시간": "07:58:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1053, + "역명": "두실", + "시간": "08:19:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2082, + "역명": "두실", + "시간": "10:56:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1113, + "역명": "두실", + "시간": "11:17:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2140, + "역명": "두실", + "시간": "13:50:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1171, + "역명": "두실", + "시간": "14:11:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2198, + "역명": "두실", + "시간": "16:44:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1229, + "역명": "두실", + "시간": "17:05:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2256, + "역명": "두실", + "시간": "19:40:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1277, + "역명": "두실", + "시간": "20:04:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2300, + "역명": "두실", + "시간": "22:40:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1313, + "역명": "두실", + "시간": "22:59:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2014, + "역명": "두실", + "시간": "07:30:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1043, + "역명": "두실", + "시간": "07:54:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2072, + "역명": "두실", + "시간": "10:26:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1103, + "역명": "두실", + "시간": "10:47:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2130, + "역명": "두실", + "시간": "13:20:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1161, + "역명": "두실", + "시간": "13:41:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2188, + "역명": "두실", + "시간": "16:14:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1219, + "역명": "두실", + "시간": "16:35:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2248, + "역명": "두실", + "시간": "19:11:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1269, + "역명": "두실", + "시간": "19:32:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2292, + "역명": "두실", + "시간": "22:04:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1307, + "역명": "두실", + "시간": "22:25:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 11, + "열번": 2022, + "역명": "두실", + "시간": "08:04:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2016, + "역명": "두실", + "시간": "07:41:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1047, + "역명": "두실", + "시간": "08:04:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2076, + "역명": "두실", + "시간": "10:38:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1107, + "역명": "두실", + "시간": "10:59:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2134, + "역명": "두실", + "시간": "13:32:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1165, + "역명": "두실", + "시간": "13:53:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "두실", + "시간": "16:26:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1223, + "역명": "두실", + "시간": "16:47:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2252, + "역명": "두실", + "시간": "19:25:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1273, + "역명": "두실", + "시간": "19:48:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2296, + "역명": "두실", + "시간": "22:20:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1311, + "역명": "두실", + "시간": "22:47:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1005, + "역명": "두실", + "시간": "05:34:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2024, + "역명": "두실", + "시간": "08:10:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1057, + "역명": "두실", + "시간": "08:29:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2086, + "역명": "두실", + "시간": "11:08:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1117, + "역명": "두실", + "시간": "11:29:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2144, + "역명": "두실", + "시간": "14:02:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1175, + "역명": "두실", + "시간": "14:23:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2202, + "역명": "두실", + "시간": "16:56:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1233, + "역명": "두실", + "시간": "17:18:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2260, + "역명": "두실", + "시간": "19:56:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1281, + "역명": "두실", + "시간": "20:20:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2304, + "역명": "두실", + "시간": "23:00:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 13, + "열번": 1317, + "역명": "두실", + "시간": "23:21:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2026, + "역명": "두실", + "시간": "08:15:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 14, + "열번": 1059, + "역명": "두실", + "시간": "08:35:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1009, + "역명": "두실", + "시간": "05:56:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2032, + "역명": "두실", + "시간": "08:30:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1065, + "역명": "두실", + "시간": "08:53:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2092, + "역명": "두실", + "시간": "11:26:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1123, + "역명": "두실", + "시간": "11:47:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2150, + "역명": "두실", + "시간": "14:20:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1181, + "역명": "두실", + "시간": "14:41:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2208, + "역명": "두실", + "시간": "17:13:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 16, + "열번": 1007, + "역명": "두실", + "시간": "05:45:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2028, + "역명": "두실", + "시간": "08:20:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1061, + "역명": "두실", + "시간": "08:41:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2088, + "역명": "두실", + "시간": "11:14:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1119, + "역명": "두실", + "시간": "11:35:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2146, + "역명": "두실", + "시간": "14:08:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1177, + "역명": "두실", + "시간": "14:29:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2204, + "역명": "두실", + "시간": "17:02:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1235, + "역명": "두실", + "시간": "17:25:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 17, + "열번": 1011, + "역명": "두실", + "시간": "06:07:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2036, + "역명": "두실", + "시간": "08:40:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1069, + "역명": "두실", + "시간": "09:05:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2096, + "역명": "두실", + "시간": "11:38:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1127, + "역명": "두실", + "시간": "11:59:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2154, + "역명": "두실", + "시간": "14:32:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1185, + "역명": "두실", + "시간": "14:53:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2214, + "역명": "두실", + "시간": "17:29:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1243, + "역명": "두실", + "시간": "17:53:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2268, + "역명": "두실", + "시간": "20:28:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1289, + "역명": "두실", + "시간": "20:55:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2310, + "역명": "두실", + "시간": "23:32:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2030, + "역명": "두실", + "시간": "08:25:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1063, + "역명": "두실", + "시간": "08:47:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2090, + "역명": "두실", + "시간": "11:20:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1121, + "역명": "두실", + "시간": "11:41:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2148, + "역명": "두실", + "시간": "14:14:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1179, + "역명": "두실", + "시간": "14:35:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2206, + "역명": "두실", + "시간": "17:07:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1237, + "역명": "두실", + "시간": "17:32:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2262, + "역명": "두실", + "시간": "20:04:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1283, + "역명": "두실", + "시간": "20:28:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2038, + "역명": "두실", + "시간": "08:45:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2034, + "역명": "두실", + "시간": "08:35:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1067, + "역명": "두실", + "시간": "08:59:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2094, + "역명": "두실", + "시간": "11:32:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1125, + "역명": "두실", + "시간": "11:53:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2152, + "역명": "두실", + "시간": "14:26:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1183, + "역명": "두실", + "시간": "14:47:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2212, + "역명": "두실", + "시간": "17:24:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1241, + "역명": "두실", + "시간": "17:46:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2266, + "역명": "두실", + "시간": "20:20:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1287, + "역명": "두실", + "시간": "20:45:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 20, + "열번": 2308, + "역명": "두실", + "시간": "23:20:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2040, + "역명": "두실", + "시간": "08:50:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1071, + "역명": "두실", + "시간": "09:11:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2098, + "역명": "두실", + "시간": "11:44:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1129, + "역명": "두실", + "시간": "12:05:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2156, + "역명": "두실", + "시간": "14:38:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1187, + "역명": "두실", + "시간": "14:59:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2216, + "역명": "두실", + "시간": "17:35:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2044, + "역명": "두실", + "시간": "09:02:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1075, + "역명": "두실", + "시간": "09:23:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2102, + "역명": "두실", + "시간": "11:56:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1133, + "역명": "두실", + "시간": "12:17:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2160, + "역명": "두실", + "시간": "14:50:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1191, + "역명": "두실", + "시간": "15:11:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2220, + "역명": "두실", + "시간": "17:46:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1247, + "역명": "두실", + "시간": "18:07:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2272, + "역명": "두실", + "시간": "20:44:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1291, + "역명": "두실", + "시간": "21:05:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 22, + "열번": 2312, + "역명": "두실", + "시간": "23:44:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 23, + "열번": 1013, + "역명": "두실", + "시간": "06:18:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2042, + "역명": "두실", + "시간": "08:56:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1073, + "역명": "두실", + "시간": "09:17:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2100, + "역명": "두실", + "시간": "11:50:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1131, + "역명": "두실", + "시간": "12:11:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2158, + "역명": "두실", + "시간": "14:44:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1189, + "역명": "두실", + "시간": "15:05:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2218, + "역명": "두실", + "시간": "17:40:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1245, + "역명": "두실", + "시간": "18:00:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2270, + "역명": "두실", + "시간": "20:36:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "두실", + "시간": "09:14:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1079, + "역명": "두실", + "시간": "09:35:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2106, + "역명": "두실", + "시간": "12:08:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1137, + "역명": "두실", + "시간": "12:29:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2164, + "역명": "두실", + "시간": "15:02:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1195, + "역명": "두실", + "시간": "15:23:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2224, + "역명": "두실", + "시간": "17:57:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1251, + "역명": "두실", + "시간": "18:21:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "두실", + "시간": "06:46:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2052, + "역명": "두실", + "시간": "09:26:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1083, + "역명": "두실", + "시간": "09:47:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2110, + "역명": "두실", + "시간": "12:20:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1141, + "역명": "두실", + "시간": "12:41:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2168, + "역명": "두실", + "시간": "15:14:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1199, + "역명": "두실", + "시간": "15:35:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2228, + "역명": "두실", + "시간": "18:08:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1253, + "역명": "두실", + "시간": "18:28:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2276, + "역명": "두실", + "시간": "21:00:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1295, + "역명": "두실", + "시간": "21:25:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2314, + "역명": "두실", + "시간": "23:56:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 26, + "열번": 1029, + "역명": "두실", + "시간": "07:19:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1025, + "역명": "두실", + "시간": "07:09:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2058, + "역명": "두실", + "시간": "09:44:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1089, + "역명": "두실", + "시간": "10:05:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2116, + "역명": "두실", + "시간": "12:38:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1147, + "역명": "두실", + "시간": "12:59:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2174, + "역명": "두실", + "시간": "15:32:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1205, + "역명": "두실", + "시간": "15:53:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 27, + "열번": 2234, + "역명": "두실", + "시간": "18:25:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 28, + "열번": 1041, + "역명": "두실", + "시간": "07:49:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1031, + "역명": "두실", + "시간": "07:24:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2062, + "역명": "두실", + "시간": "09:56:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1093, + "역명": "두실", + "시간": "10:17:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2120, + "역명": "두실", + "시간": "12:50:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1151, + "역명": "두실", + "시간": "13:11:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2178, + "역명": "두실", + "시간": "15:44:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1209, + "역명": "두실", + "시간": "16:05:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2238, + "역명": "두실", + "시간": "18:37:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1261, + "역명": "두실", + "시간": "19:00:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2284, + "역명": "두실", + "시간": "21:32:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 29, + "열번": 1301, + "역명": "두실", + "시간": "21:55:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1049, + "역명": "두실", + "시간": "08:09:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2078, + "역명": "두실", + "시간": "10:44:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1109, + "역명": "두실", + "시간": "11:05:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2136, + "역명": "두실", + "시간": "13:38:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1167, + "역명": "두실", + "시간": "13:59:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2194, + "역명": "두실", + "시간": "16:32:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1225, + "역명": "두실", + "시간": "16:53:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1035, + "역명": "두실", + "시간": "07:34:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2066, + "역명": "두실", + "시간": "10:08:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1097, + "역명": "두실", + "시간": "10:29:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2124, + "역명": "두실", + "시간": "13:02:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1155, + "역명": "두실", + "시간": "13:23:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2182, + "역명": "두실", + "시간": "15:56:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1213, + "역명": "두실", + "시간": "16:17:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2242, + "역명": "두실", + "시간": "18:50:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1265, + "역명": "두실", + "시간": "19:16:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2288, + "역명": "두실", + "시간": "21:48:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1305, + "역명": "두실", + "시간": "22:15:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 32, + "열번": 2210, + "역명": "두실", + "시간": "17:18:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 32, + "열번": 1239, + "역명": "두실", + "시간": "17:39:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 32, + "열번": 2264, + "역명": "두실", + "시간": "20:12:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 32, + "열번": 1285, + "역명": "두실", + "시간": "20:36:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 32, + "열번": 2306, + "역명": "두실", + "시간": "23:10:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 32, + "열번": 7931, + "역명": "두실", + "시간": "23:36:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1037, + "역명": "두실", + "시간": "07:39:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2068, + "역명": "두실", + "시간": "10:14:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1099, + "역명": "두실", + "시간": "10:35:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2126, + "역명": "두실", + "시간": "13:08:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1157, + "역명": "두실", + "시간": "13:29:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2184, + "역명": "두실", + "시간": "16:02:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1215, + "역명": "두실", + "시간": "16:23:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2244, + "역명": "두실", + "시간": "18:57:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1267, + "역명": "두실", + "시간": "19:24:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 33, + "열번": 2290, + "역명": "두실", + "시간": "21:56:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1045, + "역명": "두실", + "시간": "07:59:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2074, + "역명": "두실", + "시간": "10:32:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1105, + "역명": "두실", + "시간": "10:53:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2132, + "역명": "두실", + "시간": "13:26:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1163, + "역명": "두실", + "시간": "13:47:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2190, + "역명": "두실", + "시간": "16:20:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1221, + "역명": "두실", + "시간": "16:41:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2250, + "역명": "두실", + "시간": "19:18:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1271, + "역명": "두실", + "시간": "19:40:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2294, + "역명": "두실", + "시간": "22:12:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1309, + "역명": "두실", + "시간": "22:36:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1055, + "역명": "두실", + "시간": "08:24:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2084, + "역명": "두실", + "시간": "11:02:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1115, + "역명": "두실", + "시간": "11:23:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2142, + "역명": "두실", + "시간": "13:56:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1173, + "역명": "두실", + "시간": "14:17:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2200, + "역명": "두실", + "시간": "16:50:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1231, + "역명": "두실", + "시간": "17:11:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2258, + "역명": "두실", + "시간": "19:48:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1279, + "역명": "두실", + "시간": "20:12:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2302, + "역명": "두실", + "시간": "22:50:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1315, + "역명": "두실", + "시간": "23:11:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "구서", + "시간": "06:14:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "구서", + "시간": "06:39:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2050, + "역명": "구서", + "시간": "09:18:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1081, + "역명": "구서", + "시간": "09:43:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2108, + "역명": "구서", + "시간": "12:12:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1139, + "역명": "구서", + "시간": "12:37:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2166, + "역명": "구서", + "시간": "15:06:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1197, + "역명": "구서", + "시간": "15:31:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2226, + "역명": "구서", + "시간": "18:00:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "구서", + "시간": "06:00:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "구서", + "시간": "06:30:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "구서", + "시간": "09:06:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1077, + "역명": "구서", + "시간": "09:31:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2104, + "역명": "구서", + "시간": "12:00:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1135, + "역명": "구서", + "시간": "12:25:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2162, + "역명": "구서", + "시간": "14:54:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1193, + "역명": "구서", + "시간": "15:19:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2222, + "역명": "구서", + "시간": "17:49:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1249, + "역명": "구서", + "시간": "18:16:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2274, + "역명": "구서", + "시간": "20:50:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1293, + "역명": "구서", + "시간": "21:17:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "구서", + "시간": "06:27:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "구서", + "시간": "06:57:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2054, + "역명": "구서", + "시간": "09:30:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1085, + "역명": "구서", + "시간": "09:55:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2112, + "역명": "구서", + "시간": "12:24:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1143, + "역명": "구서", + "시간": "12:49:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2170, + "역명": "구서", + "시간": "15:18:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1201, + "역명": "구서", + "시간": "15:43:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2230, + "역명": "구서", + "시간": "18:11:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1255, + "역명": "구서", + "시간": "18:38:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2278, + "역명": "구서", + "시간": "21:06:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "구서", + "시간": "06:40:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1023, + "역명": "구서", + "시간": "07:04:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2056, + "역명": "구서", + "시간": "09:36:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1087, + "역명": "구서", + "시간": "10:01:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2114, + "역명": "구서", + "시간": "12:30:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1145, + "역명": "구서", + "시간": "12:55:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2172, + "역명": "구서", + "시간": "15:24:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1203, + "역명": "구서", + "시간": "15:49:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2232, + "역명": "구서", + "시간": "18:17:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1257, + "역명": "구서", + "시간": "18:46:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2280, + "역명": "구서", + "시간": "21:14:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1297, + "역명": "구서", + "시간": "21:37:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2316, + "역명": "구서", + "시간": "00:06:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2012, + "역명": "구서", + "시간": "07:16:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1039, + "역명": "구서", + "시간": "07:46:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2070, + "역명": "구서", + "시간": "10:18:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1101, + "역명": "구서", + "시간": "10:43:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2128, + "역명": "구서", + "시간": "13:12:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1159, + "역명": "구서", + "시간": "13:37:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2186, + "역명": "구서", + "시간": "16:06:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1217, + "역명": "구서", + "시간": "16:31:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2246, + "역명": "구서", + "시간": "19:02:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2008, + "역명": "구서", + "시간": "06:52:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1027, + "역명": "구서", + "시간": "07:16:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2060, + "역명": "구서", + "시간": "09:48:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1091, + "역명": "구서", + "시간": "10:13:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2118, + "역명": "구서", + "시간": "12:42:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1149, + "역명": "구서", + "시간": "13:07:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2176, + "역명": "구서", + "시간": "15:36:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1207, + "역명": "구서", + "시간": "16:01:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2236, + "역명": "구서", + "시간": "18:29:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1259, + "역명": "구서", + "시간": "18:54:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2282, + "역명": "구서", + "시간": "21:22:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1299, + "역명": "구서", + "시간": "21:47:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 6, + "열번": 2318, + "역명": "구서", + "시간": "00:23:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1001, + "역명": "구서", + "시간": "05:15:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2018, + "역명": "구서", + "시간": "07:48:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1051, + "역명": "구서", + "시간": "08:16:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2080, + "역명": "구서", + "시간": "10:48:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1111, + "역명": "구서", + "시간": "11:13:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2138, + "역명": "구서", + "시간": "13:42:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1169, + "역명": "구서", + "시간": "14:07:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2196, + "역명": "구서", + "시간": "16:36:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1227, + "역명": "구서", + "시간": "17:01:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2254, + "역명": "구서", + "시간": "19:30:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1275, + "역명": "구서", + "시간": "19:58:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 7, + "열번": 2298, + "역명": "구서", + "시간": "22:28:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2010, + "역명": "구서", + "시간": "07:04:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1033, + "역명": "구서", + "시간": "07:31:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2064, + "역명": "구서", + "시간": "10:00:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1095, + "역명": "구서", + "시간": "10:25:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2122, + "역명": "구서", + "시간": "12:54:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1153, + "역명": "구서", + "시간": "13:19:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2180, + "역명": "구서", + "시간": "15:48:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1211, + "역명": "구서", + "시간": "16:13:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2240, + "역명": "구서", + "시간": "18:41:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1263, + "역명": "구서", + "시간": "19:10:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2286, + "역명": "구서", + "시간": "21:38:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1303, + "역명": "구서", + "시간": "22:07:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 9, + "열번": 1003, + "역명": "구서", + "시간": "05:25:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2020, + "역명": "구서", + "시간": "07:56:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1053, + "역명": "구서", + "시간": "08:21:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2082, + "역명": "구서", + "시간": "10:54:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1113, + "역명": "구서", + "시간": "11:19:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2140, + "역명": "구서", + "시간": "13:48:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1171, + "역명": "구서", + "시간": "14:13:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2198, + "역명": "구서", + "시간": "16:42:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1229, + "역명": "구서", + "시간": "17:07:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2256, + "역명": "구서", + "시간": "19:38:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1277, + "역명": "구서", + "시간": "20:06:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2300, + "역명": "구서", + "시간": "22:38:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1313, + "역명": "구서", + "시간": "23:01:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2014, + "역명": "구서", + "시간": "07:28:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1043, + "역명": "구서", + "시간": "07:56:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2072, + "역명": "구서", + "시간": "10:24:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1103, + "역명": "구서", + "시간": "10:49:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2130, + "역명": "구서", + "시간": "13:18:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1161, + "역명": "구서", + "시간": "13:43:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2188, + "역명": "구서", + "시간": "16:12:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1219, + "역명": "구서", + "시간": "16:37:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2248, + "역명": "구서", + "시간": "19:09:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1269, + "역명": "구서", + "시간": "19:34:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2292, + "역명": "구서", + "시간": "22:02:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1307, + "역명": "구서", + "시간": "22:27:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 11, + "열번": 2022, + "역명": "구서", + "시간": "08:02:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2016, + "역명": "구서", + "시간": "07:39:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1047, + "역명": "구서", + "시간": "08:06:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2076, + "역명": "구서", + "시간": "10:36:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1107, + "역명": "구서", + "시간": "11:01:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2134, + "역명": "구서", + "시간": "13:30:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1165, + "역명": "구서", + "시간": "13:55:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "구서", + "시간": "16:24:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1223, + "역명": "구서", + "시간": "16:49:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2252, + "역명": "구서", + "시간": "19:23:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1273, + "역명": "구서", + "시간": "19:50:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2296, + "역명": "구서", + "시간": "22:18:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1311, + "역명": "구서", + "시간": "22:49:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1005, + "역명": "구서", + "시간": "05:36:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2024, + "역명": "구서", + "시간": "08:08:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1057, + "역명": "구서", + "시간": "08:31:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2086, + "역명": "구서", + "시간": "11:06:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1117, + "역명": "구서", + "시간": "11:31:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2144, + "역명": "구서", + "시간": "14:00:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1175, + "역명": "구서", + "시간": "14:25:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2202, + "역명": "구서", + "시간": "16:54:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1233, + "역명": "구서", + "시간": "17:20:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2260, + "역명": "구서", + "시간": "19:54:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1281, + "역명": "구서", + "시간": "20:22:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2304, + "역명": "구서", + "시간": "22:58:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 13, + "열번": 1317, + "역명": "구서", + "시간": "23:23:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2026, + "역명": "구서", + "시간": "08:13:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 14, + "열번": 1059, + "역명": "구서", + "시간": "08:37:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1009, + "역명": "구서", + "시간": "05:58:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2032, + "역명": "구서", + "시간": "08:28:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1065, + "역명": "구서", + "시간": "08:55:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2092, + "역명": "구서", + "시간": "11:24:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1123, + "역명": "구서", + "시간": "11:49:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2150, + "역명": "구서", + "시간": "14:18:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1181, + "역명": "구서", + "시간": "14:43:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2208, + "역명": "구서", + "시간": "17:11:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 16, + "열번": 1007, + "역명": "구서", + "시간": "05:47:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2028, + "역명": "구서", + "시간": "08:18:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1061, + "역명": "구서", + "시간": "08:43:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2088, + "역명": "구서", + "시간": "11:12:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1119, + "역명": "구서", + "시간": "11:37:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2146, + "역명": "구서", + "시간": "14:06:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1177, + "역명": "구서", + "시간": "14:31:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2204, + "역명": "구서", + "시간": "17:00:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1235, + "역명": "구서", + "시간": "17:27:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 17, + "열번": 1011, + "역명": "구서", + "시간": "06:09:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2036, + "역명": "구서", + "시간": "08:38:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1069, + "역명": "구서", + "시간": "09:07:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2096, + "역명": "구서", + "시간": "11:36:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1127, + "역명": "구서", + "시간": "12:01:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2154, + "역명": "구서", + "시간": "14:30:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1185, + "역명": "구서", + "시간": "14:55:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2214, + "역명": "구서", + "시간": "17:27:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1243, + "역명": "구서", + "시간": "17:55:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2268, + "역명": "구서", + "시간": "20:26:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1289, + "역명": "구서", + "시간": "20:57:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2310, + "역명": "구서", + "시간": "23:30:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2030, + "역명": "구서", + "시간": "08:23:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1063, + "역명": "구서", + "시간": "08:49:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2090, + "역명": "구서", + "시간": "11:18:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1121, + "역명": "구서", + "시간": "11:43:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2148, + "역명": "구서", + "시간": "14:12:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1179, + "역명": "구서", + "시간": "14:37:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2206, + "역명": "구서", + "시간": "17:05:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1237, + "역명": "구서", + "시간": "17:34:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2262, + "역명": "구서", + "시간": "20:02:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1283, + "역명": "구서", + "시간": "20:30:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2038, + "역명": "구서", + "시간": "08:43:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2034, + "역명": "구서", + "시간": "08:33:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1067, + "역명": "구서", + "시간": "09:01:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2094, + "역명": "구서", + "시간": "11:30:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1125, + "역명": "구서", + "시간": "11:55:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2152, + "역명": "구서", + "시간": "14:24:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1183, + "역명": "구서", + "시간": "14:49:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2212, + "역명": "구서", + "시간": "17:22:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1241, + "역명": "구서", + "시간": "17:48:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2266, + "역명": "구서", + "시간": "20:18:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1287, + "역명": "구서", + "시간": "20:47:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 20, + "열번": 2308, + "역명": "구서", + "시간": "23:18:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2040, + "역명": "구서", + "시간": "08:48:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1071, + "역명": "구서", + "시간": "09:13:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2098, + "역명": "구서", + "시간": "11:42:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1129, + "역명": "구서", + "시간": "12:07:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2156, + "역명": "구서", + "시간": "14:36:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1187, + "역명": "구서", + "시간": "15:01:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2216, + "역명": "구서", + "시간": "17:33:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2044, + "역명": "구서", + "시간": "09:00:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1075, + "역명": "구서", + "시간": "09:25:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2102, + "역명": "구서", + "시간": "11:54:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1133, + "역명": "구서", + "시간": "12:19:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2160, + "역명": "구서", + "시간": "14:48:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1191, + "역명": "구서", + "시간": "15:13:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2220, + "역명": "구서", + "시간": "17:44:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1247, + "역명": "구서", + "시간": "18:09:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2272, + "역명": "구서", + "시간": "20:42:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1291, + "역명": "구서", + "시간": "21:07:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 22, + "열번": 2312, + "역명": "구서", + "시간": "23:42:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 23, + "열번": 1013, + "역명": "구서", + "시간": "06:20:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2042, + "역명": "구서", + "시간": "08:54:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1073, + "역명": "구서", + "시간": "09:19:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2100, + "역명": "구서", + "시간": "11:48:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1131, + "역명": "구서", + "시간": "12:13:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2158, + "역명": "구서", + "시간": "14:42:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1189, + "역명": "구서", + "시간": "15:07:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2218, + "역명": "구서", + "시간": "17:38:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1245, + "역명": "구서", + "시간": "18:02:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2270, + "역명": "구서", + "시간": "20:34:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "구서", + "시간": "09:12:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1079, + "역명": "구서", + "시간": "09:37:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2106, + "역명": "구서", + "시간": "12:06:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1137, + "역명": "구서", + "시간": "12:31:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2164, + "역명": "구서", + "시간": "15:00:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1195, + "역명": "구서", + "시간": "15:25:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2224, + "역명": "구서", + "시간": "17:55:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1251, + "역명": "구서", + "시간": "18:23:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "구서", + "시간": "06:48:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2052, + "역명": "구서", + "시간": "09:24:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1083, + "역명": "구서", + "시간": "09:49:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2110, + "역명": "구서", + "시간": "12:18:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1141, + "역명": "구서", + "시간": "12:43:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2168, + "역명": "구서", + "시간": "15:12:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1199, + "역명": "구서", + "시간": "15:37:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2228, + "역명": "구서", + "시간": "18:06:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1253, + "역명": "구서", + "시간": "18:30:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2276, + "역명": "구서", + "시간": "20:58:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1295, + "역명": "구서", + "시간": "21:27:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2314, + "역명": "구서", + "시간": "23:54:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 26, + "열번": 1029, + "역명": "구서", + "시간": "07:21:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1025, + "역명": "구서", + "시간": "07:11:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2058, + "역명": "구서", + "시간": "09:42:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1089, + "역명": "구서", + "시간": "10:07:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2116, + "역명": "구서", + "시간": "12:36:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1147, + "역명": "구서", + "시간": "13:01:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2174, + "역명": "구서", + "시간": "15:30:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1205, + "역명": "구서", + "시간": "15:55:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 27, + "열번": 2234, + "역명": "구서", + "시간": "18:23:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 28, + "열번": 1041, + "역명": "구서", + "시간": "07:51:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1031, + "역명": "구서", + "시간": "07:26:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2062, + "역명": "구서", + "시간": "09:54:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1093, + "역명": "구서", + "시간": "10:19:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2120, + "역명": "구서", + "시간": "12:48:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1151, + "역명": "구서", + "시간": "13:13:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2178, + "역명": "구서", + "시간": "15:42:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1209, + "역명": "구서", + "시간": "16:07:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2238, + "역명": "구서", + "시간": "18:35:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1261, + "역명": "구서", + "시간": "19:02:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2284, + "역명": "구서", + "시간": "21:30:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 29, + "열번": 1301, + "역명": "구서", + "시간": "21:57:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1049, + "역명": "구서", + "시간": "08:11:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2078, + "역명": "구서", + "시간": "10:42:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1109, + "역명": "구서", + "시간": "11:07:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2136, + "역명": "구서", + "시간": "13:36:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1167, + "역명": "구서", + "시간": "14:01:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2194, + "역명": "구서", + "시간": "16:30:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1225, + "역명": "구서", + "시간": "16:55:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1035, + "역명": "구서", + "시간": "07:36:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2066, + "역명": "구서", + "시간": "10:06:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1097, + "역명": "구서", + "시간": "10:31:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2124, + "역명": "구서", + "시간": "13:00:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1155, + "역명": "구서", + "시간": "13:25:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2182, + "역명": "구서", + "시간": "15:54:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1213, + "역명": "구서", + "시간": "16:19:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2242, + "역명": "구서", + "시간": "18:48:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1265, + "역명": "구서", + "시간": "19:18:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2288, + "역명": "구서", + "시간": "21:46:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1305, + "역명": "구서", + "시간": "22:17:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 32, + "열번": 2210, + "역명": "구서", + "시간": "17:16:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 32, + "열번": 1239, + "역명": "구서", + "시간": "17:41:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 32, + "열번": 2264, + "역명": "구서", + "시간": "20:10:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 32, + "열번": 1285, + "역명": "구서", + "시간": "20:38:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 32, + "열번": 2306, + "역명": "구서", + "시간": "23:08:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 32, + "열번": 7931, + "역명": "구서", + "시간": "23:38:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1037, + "역명": "구서", + "시간": "07:41:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2068, + "역명": "구서", + "시간": "10:12:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1099, + "역명": "구서", + "시간": "10:37:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2126, + "역명": "구서", + "시간": "13:06:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1157, + "역명": "구서", + "시간": "13:31:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2184, + "역명": "구서", + "시간": "16:00:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1215, + "역명": "구서", + "시간": "16:25:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2244, + "역명": "구서", + "시간": "18:55:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1267, + "역명": "구서", + "시간": "19:26:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 33, + "열번": 2290, + "역명": "구서", + "시간": "21:54:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1045, + "역명": "구서", + "시간": "08:01:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2074, + "역명": "구서", + "시간": "10:30:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1105, + "역명": "구서", + "시간": "10:55:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2132, + "역명": "구서", + "시간": "13:24:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1163, + "역명": "구서", + "시간": "13:49:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2190, + "역명": "구서", + "시간": "16:18:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1221, + "역명": "구서", + "시간": "16:43:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2250, + "역명": "구서", + "시간": "19:16:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1271, + "역명": "구서", + "시간": "19:42:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2294, + "역명": "구서", + "시간": "22:10:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1309, + "역명": "구서", + "시간": "22:38:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1055, + "역명": "구서", + "시간": "08:26:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2084, + "역명": "구서", + "시간": "11:00:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1115, + "역명": "구서", + "시간": "11:25:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2142, + "역명": "구서", + "시간": "13:54:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1173, + "역명": "구서", + "시간": "14:19:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2200, + "역명": "구서", + "시간": "16:48:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1231, + "역명": "구서", + "시간": "17:13:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2258, + "역명": "구서", + "시간": "19:46:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1279, + "역명": "구서", + "시간": "20:14:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2302, + "역명": "구서", + "시간": "22:48:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1315, + "역명": "구서", + "시간": "23:13:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "장전", + "시간": "06:12:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "장전", + "시간": "06:41:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2050, + "역명": "장전", + "시간": "09:16:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1081, + "역명": "장전", + "시간": "09:45:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2108, + "역명": "장전", + "시간": "12:10:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1139, + "역명": "장전", + "시간": "12:39:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2166, + "역명": "장전", + "시간": "15:04:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1197, + "역명": "장전", + "시간": "15:33:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2226, + "역명": "장전", + "시간": "17:58:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "장전", + "시간": "05:58:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "장전", + "시간": "06:32:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "장전", + "시간": "09:04:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1077, + "역명": "장전", + "시간": "09:33:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2104, + "역명": "장전", + "시간": "11:58:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1135, + "역명": "장전", + "시간": "12:27:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2162, + "역명": "장전", + "시간": "14:52:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1193, + "역명": "장전", + "시간": "15:21:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2222, + "역명": "장전", + "시간": "17:47:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1249, + "역명": "장전", + "시간": "18:18:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2274, + "역명": "장전", + "시간": "20:48:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1293, + "역명": "장전", + "시간": "21:19:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "장전", + "시간": "06:25:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "장전", + "시간": "06:59:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2054, + "역명": "장전", + "시간": "09:28:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1085, + "역명": "장전", + "시간": "09:57:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2112, + "역명": "장전", + "시간": "12:22:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1143, + "역명": "장전", + "시간": "12:51:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2170, + "역명": "장전", + "시간": "15:16:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1201, + "역명": "장전", + "시간": "15:45:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2230, + "역명": "장전", + "시간": "18:09:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1255, + "역명": "장전", + "시간": "18:40:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2278, + "역명": "장전", + "시간": "21:04:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "장전", + "시간": "06:38:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1023, + "역명": "장전", + "시간": "07:06:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2056, + "역명": "장전", + "시간": "09:34:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1087, + "역명": "장전", + "시간": "10:03:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2114, + "역명": "장전", + "시간": "12:28:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1145, + "역명": "장전", + "시간": "12:57:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2172, + "역명": "장전", + "시간": "15:22:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1203, + "역명": "장전", + "시간": "15:51:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2232, + "역명": "장전", + "시간": "18:15:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1257, + "역명": "장전", + "시간": "18:48:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2280, + "역명": "장전", + "시간": "21:12:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1297, + "역명": "장전", + "시간": "21:39:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2316, + "역명": "장전", + "시간": "00:04:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2012, + "역명": "장전", + "시간": "07:14:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1039, + "역명": "장전", + "시간": "07:48:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2070, + "역명": "장전", + "시간": "10:16:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1101, + "역명": "장전", + "시간": "10:45:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2128, + "역명": "장전", + "시간": "13:10:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1159, + "역명": "장전", + "시간": "13:39:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2186, + "역명": "장전", + "시간": "16:04:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1217, + "역명": "장전", + "시간": "16:33:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2246, + "역명": "장전", + "시간": "19:00:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2008, + "역명": "장전", + "시간": "06:50:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1027, + "역명": "장전", + "시간": "07:18:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2060, + "역명": "장전", + "시간": "09:46:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1091, + "역명": "장전", + "시간": "10:15:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2118, + "역명": "장전", + "시간": "12:40:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1149, + "역명": "장전", + "시간": "13:09:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2176, + "역명": "장전", + "시간": "15:34:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1207, + "역명": "장전", + "시간": "16:03:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2236, + "역명": "장전", + "시간": "18:27:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1259, + "역명": "장전", + "시간": "18:56:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2282, + "역명": "장전", + "시간": "21:20:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1299, + "역명": "장전", + "시간": "21:49:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 6, + "열번": 2318, + "역명": "장전", + "시간": "00:21:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1001, + "역명": "장전", + "시간": "05:17:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2018, + "역명": "장전", + "시간": "07:46:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1051, + "역명": "장전", + "시간": "08:18:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2080, + "역명": "장전", + "시간": "10:46:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1111, + "역명": "장전", + "시간": "11:15:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2138, + "역명": "장전", + "시간": "13:40:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1169, + "역명": "장전", + "시간": "14:09:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2196, + "역명": "장전", + "시간": "16:34:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1227, + "역명": "장전", + "시간": "17:03:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2254, + "역명": "장전", + "시간": "19:28:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1275, + "역명": "장전", + "시간": "20:00:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 7, + "열번": 2298, + "역명": "장전", + "시간": "22:26:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2010, + "역명": "장전", + "시간": "07:02:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1033, + "역명": "장전", + "시간": "07:33:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2064, + "역명": "장전", + "시간": "09:58:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1095, + "역명": "장전", + "시간": "10:27:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2122, + "역명": "장전", + "시간": "12:52:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1153, + "역명": "장전", + "시간": "13:21:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2180, + "역명": "장전", + "시간": "15:46:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1211, + "역명": "장전", + "시간": "16:15:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2240, + "역명": "장전", + "시간": "18:39:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1263, + "역명": "장전", + "시간": "19:12:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2286, + "역명": "장전", + "시간": "21:36:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1303, + "역명": "장전", + "시간": "22:09:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 9, + "열번": 1003, + "역명": "장전", + "시간": "05:27:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2020, + "역명": "장전", + "시간": "07:54:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1053, + "역명": "장전", + "시간": "08:23:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2082, + "역명": "장전", + "시간": "10:52:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1113, + "역명": "장전", + "시간": "11:21:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2140, + "역명": "장전", + "시간": "13:46:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1171, + "역명": "장전", + "시간": "14:15:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2198, + "역명": "장전", + "시간": "16:40:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1229, + "역명": "장전", + "시간": "17:09:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2256, + "역명": "장전", + "시간": "19:36:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1277, + "역명": "장전", + "시간": "20:08:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2300, + "역명": "장전", + "시간": "22:36:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1313, + "역명": "장전", + "시간": "23:03:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2014, + "역명": "장전", + "시간": "07:26:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1043, + "역명": "장전", + "시간": "07:58:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2072, + "역명": "장전", + "시간": "10:22:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1103, + "역명": "장전", + "시간": "10:51:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2130, + "역명": "장전", + "시간": "13:16:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1161, + "역명": "장전", + "시간": "13:45:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2188, + "역명": "장전", + "시간": "16:10:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1219, + "역명": "장전", + "시간": "16:39:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2248, + "역명": "장전", + "시간": "19:07:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1269, + "역명": "장전", + "시간": "19:36:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2292, + "역명": "장전", + "시간": "22:00:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1307, + "역명": "장전", + "시간": "22:29:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 11, + "열번": 2022, + "역명": "장전", + "시간": "08:00:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2016, + "역명": "장전", + "시간": "07:37:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1047, + "역명": "장전", + "시간": "08:08:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2076, + "역명": "장전", + "시간": "10:34:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1107, + "역명": "장전", + "시간": "11:03:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2134, + "역명": "장전", + "시간": "13:28:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1165, + "역명": "장전", + "시간": "13:57:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "장전", + "시간": "16:22:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1223, + "역명": "장전", + "시간": "16:51:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2252, + "역명": "장전", + "시간": "19:21:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1273, + "역명": "장전", + "시간": "19:52:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2296, + "역명": "장전", + "시간": "22:16:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1311, + "역명": "장전", + "시간": "22:51:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1005, + "역명": "장전", + "시간": "05:38:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2024, + "역명": "장전", + "시간": "08:06:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1057, + "역명": "장전", + "시간": "08:33:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2086, + "역명": "장전", + "시간": "11:04:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1117, + "역명": "장전", + "시간": "11:33:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2144, + "역명": "장전", + "시간": "13:58:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1175, + "역명": "장전", + "시간": "14:27:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2202, + "역명": "장전", + "시간": "16:52:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1233, + "역명": "장전", + "시간": "17:22:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2260, + "역명": "장전", + "시간": "19:52:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1281, + "역명": "장전", + "시간": "20:24:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2304, + "역명": "장전", + "시간": "22:56:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 13, + "열번": 1317, + "역명": "장전", + "시간": "23:25:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2026, + "역명": "장전", + "시간": "08:11:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 14, + "열번": 1059, + "역명": "장전", + "시간": "08:39:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1009, + "역명": "장전", + "시간": "06:00:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2032, + "역명": "장전", + "시간": "08:26:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1065, + "역명": "장전", + "시간": "08:57:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2092, + "역명": "장전", + "시간": "11:22:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1123, + "역명": "장전", + "시간": "11:51:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2150, + "역명": "장전", + "시간": "14:16:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1181, + "역명": "장전", + "시간": "14:45:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2208, + "역명": "장전", + "시간": "17:09:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 16, + "열번": 1007, + "역명": "장전", + "시간": "05:49:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2028, + "역명": "장전", + "시간": "08:16:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1061, + "역명": "장전", + "시간": "08:45:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2088, + "역명": "장전", + "시간": "11:10:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1119, + "역명": "장전", + "시간": "11:39:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2146, + "역명": "장전", + "시간": "14:04:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1177, + "역명": "장전", + "시간": "14:33:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2204, + "역명": "장전", + "시간": "16:58:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1235, + "역명": "장전", + "시간": "17:29:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 17, + "열번": 1011, + "역명": "장전", + "시간": "06:11:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2036, + "역명": "장전", + "시간": "08:36:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1069, + "역명": "장전", + "시간": "09:09:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2096, + "역명": "장전", + "시간": "11:34:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1127, + "역명": "장전", + "시간": "12:03:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2154, + "역명": "장전", + "시간": "14:28:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1185, + "역명": "장전", + "시간": "14:57:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2214, + "역명": "장전", + "시간": "17:25:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1243, + "역명": "장전", + "시간": "17:57:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2268, + "역명": "장전", + "시간": "20:24:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1289, + "역명": "장전", + "시간": "20:59:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2310, + "역명": "장전", + "시간": "23:28:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2030, + "역명": "장전", + "시간": "08:21:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1063, + "역명": "장전", + "시간": "08:51:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2090, + "역명": "장전", + "시간": "11:16:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1121, + "역명": "장전", + "시간": "11:45:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2148, + "역명": "장전", + "시간": "14:10:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1179, + "역명": "장전", + "시간": "14:39:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2206, + "역명": "장전", + "시간": "17:03:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1237, + "역명": "장전", + "시간": "17:36:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2262, + "역명": "장전", + "시간": "20:00:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1283, + "역명": "장전", + "시간": "20:32:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2038, + "역명": "장전", + "시간": "08:41:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2034, + "역명": "장전", + "시간": "08:31:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1067, + "역명": "장전", + "시간": "09:03:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2094, + "역명": "장전", + "시간": "11:28:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1125, + "역명": "장전", + "시간": "11:57:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2152, + "역명": "장전", + "시간": "14:22:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1183, + "역명": "장전", + "시간": "14:51:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2212, + "역명": "장전", + "시간": "17:20:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1241, + "역명": "장전", + "시간": "17:50:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2266, + "역명": "장전", + "시간": "20:16:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1287, + "역명": "장전", + "시간": "20:49:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 20, + "열번": 2308, + "역명": "장전", + "시간": "23:16:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2040, + "역명": "장전", + "시간": "08:46:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1071, + "역명": "장전", + "시간": "09:15:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2098, + "역명": "장전", + "시간": "11:40:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1129, + "역명": "장전", + "시간": "12:09:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2156, + "역명": "장전", + "시간": "14:34:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1187, + "역명": "장전", + "시간": "15:03:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2216, + "역명": "장전", + "시간": "17:31:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2044, + "역명": "장전", + "시간": "08:58:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1075, + "역명": "장전", + "시간": "09:27:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2102, + "역명": "장전", + "시간": "11:52:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1133, + "역명": "장전", + "시간": "12:21:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2160, + "역명": "장전", + "시간": "14:46:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1191, + "역명": "장전", + "시간": "15:15:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2220, + "역명": "장전", + "시간": "17:42:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1247, + "역명": "장전", + "시간": "18:11:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2272, + "역명": "장전", + "시간": "20:40:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1291, + "역명": "장전", + "시간": "21:09:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 22, + "열번": 2312, + "역명": "장전", + "시간": "23:40:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 23, + "열번": 1013, + "역명": "장전", + "시간": "06:22:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2042, + "역명": "장전", + "시간": "08:52:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1073, + "역명": "장전", + "시간": "09:21:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2100, + "역명": "장전", + "시간": "11:46:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1131, + "역명": "장전", + "시간": "12:15:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2158, + "역명": "장전", + "시간": "14:40:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1189, + "역명": "장전", + "시간": "15:09:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2218, + "역명": "장전", + "시간": "17:36:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1245, + "역명": "장전", + "시간": "18:04:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2270, + "역명": "장전", + "시간": "20:32:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "장전", + "시간": "09:10:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1079, + "역명": "장전", + "시간": "09:39:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2106, + "역명": "장전", + "시간": "12:04:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1137, + "역명": "장전", + "시간": "12:33:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2164, + "역명": "장전", + "시간": "14:58:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1195, + "역명": "장전", + "시간": "15:27:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2224, + "역명": "장전", + "시간": "17:53:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1251, + "역명": "장전", + "시간": "18:25:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "장전", + "시간": "06:50:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2052, + "역명": "장전", + "시간": "09:22:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1083, + "역명": "장전", + "시간": "09:51:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2110, + "역명": "장전", + "시간": "12:16:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1141, + "역명": "장전", + "시간": "12:45:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2168, + "역명": "장전", + "시간": "15:10:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1199, + "역명": "장전", + "시간": "15:39:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2228, + "역명": "장전", + "시간": "18:04:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1253, + "역명": "장전", + "시간": "18:32:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2276, + "역명": "장전", + "시간": "20:56:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1295, + "역명": "장전", + "시간": "21:29:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2314, + "역명": "장전", + "시간": "23:52:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 26, + "열번": 1029, + "역명": "장전", + "시간": "07:23:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1025, + "역명": "장전", + "시간": "07:13:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2058, + "역명": "장전", + "시간": "09:40:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1089, + "역명": "장전", + "시간": "10:09:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2116, + "역명": "장전", + "시간": "12:34:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1147, + "역명": "장전", + "시간": "13:03:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2174, + "역명": "장전", + "시간": "15:28:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1205, + "역명": "장전", + "시간": "15:57:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 27, + "열번": 2234, + "역명": "장전", + "시간": "18:21:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 28, + "열번": 1041, + "역명": "장전", + "시간": "07:53:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1031, + "역명": "장전", + "시간": "07:28:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2062, + "역명": "장전", + "시간": "09:52:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1093, + "역명": "장전", + "시간": "10:21:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2120, + "역명": "장전", + "시간": "12:46:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1151, + "역명": "장전", + "시간": "13:15:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2178, + "역명": "장전", + "시간": "15:40:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1209, + "역명": "장전", + "시간": "16:09:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2238, + "역명": "장전", + "시간": "18:33:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1261, + "역명": "장전", + "시간": "19:04:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2284, + "역명": "장전", + "시간": "21:28:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 29, + "열번": 1301, + "역명": "장전", + "시간": "21:59:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1049, + "역명": "장전", + "시간": "08:13:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2078, + "역명": "장전", + "시간": "10:40:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1109, + "역명": "장전", + "시간": "11:09:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2136, + "역명": "장전", + "시간": "13:34:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1167, + "역명": "장전", + "시간": "14:03:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2194, + "역명": "장전", + "시간": "16:28:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1225, + "역명": "장전", + "시간": "16:57:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1035, + "역명": "장전", + "시간": "07:38:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2066, + "역명": "장전", + "시간": "10:04:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1097, + "역명": "장전", + "시간": "10:33:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2124, + "역명": "장전", + "시간": "12:58:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1155, + "역명": "장전", + "시간": "13:27:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2182, + "역명": "장전", + "시간": "15:52:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1213, + "역명": "장전", + "시간": "16:21:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2242, + "역명": "장전", + "시간": "18:46:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1265, + "역명": "장전", + "시간": "19:20:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2288, + "역명": "장전", + "시간": "21:44:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1305, + "역명": "장전", + "시간": "22:19:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 32, + "열번": 2210, + "역명": "장전", + "시간": "17:14:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 32, + "열번": 1239, + "역명": "장전", + "시간": "17:43:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 32, + "열번": 2264, + "역명": "장전", + "시간": "20:08:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 32, + "열번": 1285, + "역명": "장전", + "시간": "20:40:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 32, + "열번": 2306, + "역명": "장전", + "시간": "23:06:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 32, + "열번": 7931, + "역명": "장전", + "시간": "23:40:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1037, + "역명": "장전", + "시간": "07:43:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2068, + "역명": "장전", + "시간": "10:10:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1099, + "역명": "장전", + "시간": "10:39:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2126, + "역명": "장전", + "시간": "13:04:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1157, + "역명": "장전", + "시간": "13:33:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2184, + "역명": "장전", + "시간": "15:58:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1215, + "역명": "장전", + "시간": "16:27:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2244, + "역명": "장전", + "시간": "18:53:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1267, + "역명": "장전", + "시간": "19:28:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 33, + "열번": 2290, + "역명": "장전", + "시간": "21:52:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1045, + "역명": "장전", + "시간": "08:03:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2074, + "역명": "장전", + "시간": "10:28:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1105, + "역명": "장전", + "시간": "10:57:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2132, + "역명": "장전", + "시간": "13:22:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1163, + "역명": "장전", + "시간": "13:51:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2190, + "역명": "장전", + "시간": "16:16:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1221, + "역명": "장전", + "시간": "16:45:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2250, + "역명": "장전", + "시간": "19:14:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1271, + "역명": "장전", + "시간": "19:44:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2294, + "역명": "장전", + "시간": "22:08:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1309, + "역명": "장전", + "시간": "22:40:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1055, + "역명": "장전", + "시간": "08:28:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2084, + "역명": "장전", + "시간": "10:58:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1115, + "역명": "장전", + "시간": "11:27:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2142, + "역명": "장전", + "시간": "13:52:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1173, + "역명": "장전", + "시간": "14:21:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2200, + "역명": "장전", + "시간": "16:46:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1231, + "역명": "장전", + "시간": "17:15:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2258, + "역명": "장전", + "시간": "19:44:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1279, + "역명": "장전", + "시간": "20:16:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2302, + "역명": "장전", + "시간": "22:46:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1315, + "역명": "장전", + "시간": "23:15:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "부산대학앞", + "시간": "06:10:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "부산대학앞", + "시간": "06:43:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2050, + "역명": "부산대학앞", + "시간": "09:15:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1081, + "역명": "부산대학앞", + "시간": "09:46:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2108, + "역명": "부산대학앞", + "시간": "12:09:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1139, + "역명": "부산대학앞", + "시간": "12:40:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2166, + "역명": "부산대학앞", + "시간": "15:03:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1197, + "역명": "부산대학앞", + "시간": "15:34:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2226, + "역명": "부산대학앞", + "시간": "17:57:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "부산대학앞", + "시간": "05:56:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "부산대학앞", + "시간": "06:34:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "부산대학앞", + "시간": "09:03:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1077, + "역명": "부산대학앞", + "시간": "09:34:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2104, + "역명": "부산대학앞", + "시간": "11:57:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1135, + "역명": "부산대학앞", + "시간": "12:28:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2162, + "역명": "부산대학앞", + "시간": "14:51:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1193, + "역명": "부산대학앞", + "시간": "15:22:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2222, + "역명": "부산대학앞", + "시간": "17:46:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1249, + "역명": "부산대학앞", + "시간": "18:19:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2274, + "역명": "부산대학앞", + "시간": "20:47:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1293, + "역명": "부산대학앞", + "시간": "21:20:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "부산대학앞", + "시간": "06:24:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "부산대학앞", + "시간": "07:01:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2054, + "역명": "부산대학앞", + "시간": "09:27:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1085, + "역명": "부산대학앞", + "시간": "09:58:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2112, + "역명": "부산대학앞", + "시간": "12:21:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1143, + "역명": "부산대학앞", + "시간": "12:52:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2170, + "역명": "부산대학앞", + "시간": "15:15:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1201, + "역명": "부산대학앞", + "시간": "15:46:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2230, + "역명": "부산대학앞", + "시간": "18:08:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1255, + "역명": "부산대학앞", + "시간": "18:41:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2278, + "역명": "부산대학앞", + "시간": "21:03:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "부산대학앞", + "시간": "06:36:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1023, + "역명": "부산대학앞", + "시간": "07:08:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2056, + "역명": "부산대학앞", + "시간": "09:33:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1087, + "역명": "부산대학앞", + "시간": "10:04:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2114, + "역명": "부산대학앞", + "시간": "12:27:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1145, + "역명": "부산대학앞", + "시간": "12:58:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2172, + "역명": "부산대학앞", + "시간": "15:21:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1203, + "역명": "부산대학앞", + "시간": "15:52:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2232, + "역명": "부산대학앞", + "시간": "18:14:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1257, + "역명": "부산대학앞", + "시간": "18:49:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2280, + "역명": "부산대학앞", + "시간": "21:11:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1297, + "역명": "부산대학앞", + "시간": "21:40:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2316, + "역명": "부산대학앞", + "시간": "00:02:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2012, + "역명": "부산대학앞", + "시간": "07:12:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1039, + "역명": "부산대학앞", + "시간": "07:49:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2070, + "역명": "부산대학앞", + "시간": "10:15:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1101, + "역명": "부산대학앞", + "시간": "10:46:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2128, + "역명": "부산대학앞", + "시간": "13:09:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1159, + "역명": "부산대학앞", + "시간": "13:40:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2186, + "역명": "부산대학앞", + "시간": "16:03:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1217, + "역명": "부산대학앞", + "시간": "16:34:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2246, + "역명": "부산대학앞", + "시간": "18:59:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2008, + "역명": "부산대학앞", + "시간": "06:48:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1027, + "역명": "부산대학앞", + "시간": "07:19:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2060, + "역명": "부산대학앞", + "시간": "09:45:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1091, + "역명": "부산대학앞", + "시간": "10:16:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2118, + "역명": "부산대학앞", + "시간": "12:39:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1149, + "역명": "부산대학앞", + "시간": "13:10:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2176, + "역명": "부산대학앞", + "시간": "15:33:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1207, + "역명": "부산대학앞", + "시간": "16:04:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2236, + "역명": "부산대학앞", + "시간": "18:26:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1259, + "역명": "부산대학앞", + "시간": "18:57:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2282, + "역명": "부산대학앞", + "시간": "21:19:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1299, + "역명": "부산대학앞", + "시간": "21:50:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 6, + "열번": 2318, + "역명": "부산대학앞", + "시간": "00:19:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1001, + "역명": "부산대학앞", + "시간": "05:19:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2018, + "역명": "부산대학앞", + "시간": "07:44:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1051, + "역명": "부산대학앞", + "시간": "08:19:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2080, + "역명": "부산대학앞", + "시간": "10:45:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1111, + "역명": "부산대학앞", + "시간": "11:16:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2138, + "역명": "부산대학앞", + "시간": "13:39:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1169, + "역명": "부산대학앞", + "시간": "14:10:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2196, + "역명": "부산대학앞", + "시간": "16:33:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1227, + "역명": "부산대학앞", + "시간": "17:04:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2254, + "역명": "부산대학앞", + "시간": "19:27:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1275, + "역명": "부산대학앞", + "시간": "20:01:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 7, + "열번": 2298, + "역명": "부산대학앞", + "시간": "22:25:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2010, + "역명": "부산대학앞", + "시간": "07:00:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1033, + "역명": "부산대학앞", + "시간": "07:34:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2064, + "역명": "부산대학앞", + "시간": "09:57:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1095, + "역명": "부산대학앞", + "시간": "10:28:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2122, + "역명": "부산대학앞", + "시간": "12:51:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1153, + "역명": "부산대학앞", + "시간": "13:22:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2180, + "역명": "부산대학앞", + "시간": "15:45:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1211, + "역명": "부산대학앞", + "시간": "16:16:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2240, + "역명": "부산대학앞", + "시간": "18:38:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1263, + "역명": "부산대학앞", + "시간": "19:13:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2286, + "역명": "부산대학앞", + "시간": "21:35:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1303, + "역명": "부산대학앞", + "시간": "22:10:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 9, + "열번": 1003, + "역명": "부산대학앞", + "시간": "05:29:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2020, + "역명": "부산대학앞", + "시간": "07:53:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1053, + "역명": "부산대학앞", + "시간": "08:24:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2082, + "역명": "부산대학앞", + "시간": "10:51:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1113, + "역명": "부산대학앞", + "시간": "11:22:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2140, + "역명": "부산대학앞", + "시간": "13:45:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1171, + "역명": "부산대학앞", + "시간": "14:16:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2198, + "역명": "부산대학앞", + "시간": "16:39:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1229, + "역명": "부산대학앞", + "시간": "17:10:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2256, + "역명": "부산대학앞", + "시간": "19:35:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1277, + "역명": "부산대학앞", + "시간": "20:09:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2300, + "역명": "부산대학앞", + "시간": "22:35:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1313, + "역명": "부산대학앞", + "시간": "23:04:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2014, + "역명": "부산대학앞", + "시간": "07:24:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1043, + "역명": "부산대학앞", + "시간": "07:59:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2072, + "역명": "부산대학앞", + "시간": "10:21:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1103, + "역명": "부산대학앞", + "시간": "10:52:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2130, + "역명": "부산대학앞", + "시간": "13:15:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1161, + "역명": "부산대학앞", + "시간": "13:46:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2188, + "역명": "부산대학앞", + "시간": "16:09:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1219, + "역명": "부산대학앞", + "시간": "16:40:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2248, + "역명": "부산대학앞", + "시간": "19:06:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1269, + "역명": "부산대학앞", + "시간": "19:37:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2292, + "역명": "부산대학앞", + "시간": "21:59:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1307, + "역명": "부산대학앞", + "시간": "22:30:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 11, + "열번": 2022, + "역명": "부산대학앞", + "시간": "07:59:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2016, + "역명": "부산대학앞", + "시간": "07:35:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1047, + "역명": "부산대학앞", + "시간": "08:09:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2076, + "역명": "부산대학앞", + "시간": "10:33:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1107, + "역명": "부산대학앞", + "시간": "11:04:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2134, + "역명": "부산대학앞", + "시간": "13:27:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1165, + "역명": "부산대학앞", + "시간": "13:58:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "부산대학앞", + "시간": "16:21:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1223, + "역명": "부산대학앞", + "시간": "16:52:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2252, + "역명": "부산대학앞", + "시간": "19:20:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1273, + "역명": "부산대학앞", + "시간": "19:53:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2296, + "역명": "부산대학앞", + "시간": "22:15:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1311, + "역명": "부산대학앞", + "시간": "22:52:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1005, + "역명": "부산대학앞", + "시간": "05:40:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2024, + "역명": "부산대학앞", + "시간": "08:05:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1057, + "역명": "부산대학앞", + "시간": "08:35:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2086, + "역명": "부산대학앞", + "시간": "11:03:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1117, + "역명": "부산대학앞", + "시간": "11:34:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2144, + "역명": "부산대학앞", + "시간": "13:57:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1175, + "역명": "부산대학앞", + "시간": "14:28:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2202, + "역명": "부산대학앞", + "시간": "16:51:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1233, + "역명": "부산대학앞", + "시간": "17:23:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2260, + "역명": "부산대학앞", + "시간": "19:51:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1281, + "역명": "부산대학앞", + "시간": "20:25:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2304, + "역명": "부산대학앞", + "시간": "22:55:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 13, + "열번": 1317, + "역명": "부산대학앞", + "시간": "23:27:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2026, + "역명": "부산대학앞", + "시간": "08:10:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 14, + "열번": 1059, + "역명": "부산대학앞", + "시간": "08:40:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1009, + "역명": "부산대학앞", + "시간": "06:02:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2032, + "역명": "부산대학앞", + "시간": "08:25:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1065, + "역명": "부산대학앞", + "시간": "08:58:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2092, + "역명": "부산대학앞", + "시간": "11:21:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1123, + "역명": "부산대학앞", + "시간": "11:52:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2150, + "역명": "부산대학앞", + "시간": "14:15:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1181, + "역명": "부산대학앞", + "시간": "14:46:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2208, + "역명": "부산대학앞", + "시간": "17:07:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 16, + "열번": 1007, + "역명": "부산대학앞", + "시간": "05:51:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2028, + "역명": "부산대학앞", + "시간": "08:15:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1061, + "역명": "부산대학앞", + "시간": "08:46:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2088, + "역명": "부산대학앞", + "시간": "11:09:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1119, + "역명": "부산대학앞", + "시간": "11:40:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2146, + "역명": "부산대학앞", + "시간": "14:03:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1177, + "역명": "부산대학앞", + "시간": "14:34:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2204, + "역명": "부산대학앞", + "시간": "16:56:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1235, + "역명": "부산대학앞", + "시간": "17:30:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 17, + "열번": 1011, + "역명": "부산대학앞", + "시간": "06:13:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2036, + "역명": "부산대학앞", + "시간": "08:35:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1069, + "역명": "부산대학앞", + "시간": "09:10:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2096, + "역명": "부산대학앞", + "시간": "11:33:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1127, + "역명": "부산대학앞", + "시간": "12:04:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2154, + "역명": "부산대학앞", + "시간": "14:27:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1185, + "역명": "부산대학앞", + "시간": "14:58:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2214, + "역명": "부산대학앞", + "시간": "17:24:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1243, + "역명": "부산대학앞", + "시간": "17:58:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2268, + "역명": "부산대학앞", + "시간": "20:23:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1289, + "역명": "부산대학앞", + "시간": "21:00:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2310, + "역명": "부산대학앞", + "시간": "23:27:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2030, + "역명": "부산대학앞", + "시간": "08:20:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1063, + "역명": "부산대학앞", + "시간": "08:52:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2090, + "역명": "부산대학앞", + "시간": "11:15:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1121, + "역명": "부산대학앞", + "시간": "11:46:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2148, + "역명": "부산대학앞", + "시간": "14:09:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1179, + "역명": "부산대학앞", + "시간": "14:40:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2206, + "역명": "부산대학앞", + "시간": "17:02:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1237, + "역명": "부산대학앞", + "시간": "17:37:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2262, + "역명": "부산대학앞", + "시간": "19:59:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1283, + "역명": "부산대학앞", + "시간": "20:33:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2038, + "역명": "부산대학앞", + "시간": "08:40:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2034, + "역명": "부산대학앞", + "시간": "08:30:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1067, + "역명": "부산대학앞", + "시간": "09:04:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2094, + "역명": "부산대학앞", + "시간": "11:27:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1125, + "역명": "부산대학앞", + "시간": "11:58:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2152, + "역명": "부산대학앞", + "시간": "14:21:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1183, + "역명": "부산대학앞", + "시간": "14:52:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2212, + "역명": "부산대학앞", + "시간": "17:18:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1241, + "역명": "부산대학앞", + "시간": "17:51:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2266, + "역명": "부산대학앞", + "시간": "20:15:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1287, + "역명": "부산대학앞", + "시간": "20:50:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 20, + "열번": 2308, + "역명": "부산대학앞", + "시간": "23:15:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2040, + "역명": "부산대학앞", + "시간": "08:45:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1071, + "역명": "부산대학앞", + "시간": "09:16:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2098, + "역명": "부산대학앞", + "시간": "11:39:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1129, + "역명": "부산대학앞", + "시간": "12:10:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2156, + "역명": "부산대학앞", + "시간": "14:33:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1187, + "역명": "부산대학앞", + "시간": "15:04:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2216, + "역명": "부산대학앞", + "시간": "17:29:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2044, + "역명": "부산대학앞", + "시간": "08:57:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1075, + "역명": "부산대학앞", + "시간": "09:28:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2102, + "역명": "부산대학앞", + "시간": "11:51:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1133, + "역명": "부산대학앞", + "시간": "12:22:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2160, + "역명": "부산대학앞", + "시간": "14:45:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1191, + "역명": "부산대학앞", + "시간": "15:16:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2220, + "역명": "부산대학앞", + "시간": "17:40:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1247, + "역명": "부산대학앞", + "시간": "18:12:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2272, + "역명": "부산대학앞", + "시간": "20:39:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1291, + "역명": "부산대학앞", + "시간": "21:10:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 22, + "열번": 2312, + "역명": "부산대학앞", + "시간": "23:39:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 23, + "열번": 1013, + "역명": "부산대학앞", + "시간": "06:24:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2042, + "역명": "부산대학앞", + "시간": "08:51:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1073, + "역명": "부산대학앞", + "시간": "09:22:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2100, + "역명": "부산대학앞", + "시간": "11:45:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1131, + "역명": "부산대학앞", + "시간": "12:16:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2158, + "역명": "부산대학앞", + "시간": "14:39:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1189, + "역명": "부산대학앞", + "시간": "15:10:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2218, + "역명": "부산대학앞", + "시간": "17:35:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1245, + "역명": "부산대학앞", + "시간": "18:05:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2270, + "역명": "부산대학앞", + "시간": "20:31:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "부산대학앞", + "시간": "09:09:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1079, + "역명": "부산대학앞", + "시간": "09:40:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2106, + "역명": "부산대학앞", + "시간": "12:03:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1137, + "역명": "부산대학앞", + "시간": "12:34:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2164, + "역명": "부산대학앞", + "시간": "14:57:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1195, + "역명": "부산대학앞", + "시간": "15:28:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2224, + "역명": "부산대학앞", + "시간": "17:51:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1251, + "역명": "부산대학앞", + "시간": "18:26:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "부산대학앞", + "시간": "06:52:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2052, + "역명": "부산대학앞", + "시간": "09:21:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1083, + "역명": "부산대학앞", + "시간": "09:52:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2110, + "역명": "부산대학앞", + "시간": "12:15:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1141, + "역명": "부산대학앞", + "시간": "12:46:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2168, + "역명": "부산대학앞", + "시간": "15:09:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1199, + "역명": "부산대학앞", + "시간": "15:40:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2228, + "역명": "부산대학앞", + "시간": "18:02:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1253, + "역명": "부산대학앞", + "시간": "18:33:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2276, + "역명": "부산대학앞", + "시간": "20:55:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1295, + "역명": "부산대학앞", + "시간": "21:30:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2314, + "역명": "부산대학앞", + "시간": "23:51:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 26, + "열번": 1029, + "역명": "부산대학앞", + "시간": "07:24:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1025, + "역명": "부산대학앞", + "시간": "07:14:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2058, + "역명": "부산대학앞", + "시간": "09:39:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1089, + "역명": "부산대학앞", + "시간": "10:10:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2116, + "역명": "부산대학앞", + "시간": "12:33:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1147, + "역명": "부산대학앞", + "시간": "13:04:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2174, + "역명": "부산대학앞", + "시간": "15:27:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1205, + "역명": "부산대학앞", + "시간": "15:58:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 27, + "열번": 2234, + "역명": "부산대학앞", + "시간": "18:20:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 28, + "열번": 1041, + "역명": "부산대학앞", + "시간": "07:54:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1031, + "역명": "부산대학앞", + "시간": "07:29:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2062, + "역명": "부산대학앞", + "시간": "09:51:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1093, + "역명": "부산대학앞", + "시간": "10:22:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2120, + "역명": "부산대학앞", + "시간": "12:45:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1151, + "역명": "부산대학앞", + "시간": "13:16:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2178, + "역명": "부산대학앞", + "시간": "15:39:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1209, + "역명": "부산대학앞", + "시간": "16:10:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2238, + "역명": "부산대학앞", + "시간": "18:32:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1261, + "역명": "부산대학앞", + "시간": "19:05:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2284, + "역명": "부산대학앞", + "시간": "21:27:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 29, + "열번": 1301, + "역명": "부산대학앞", + "시간": "22:00:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1049, + "역명": "부산대학앞", + "시간": "08:14:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2078, + "역명": "부산대학앞", + "시간": "10:39:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1109, + "역명": "부산대학앞", + "시간": "11:10:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2136, + "역명": "부산대학앞", + "시간": "13:33:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1167, + "역명": "부산대학앞", + "시간": "14:04:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2194, + "역명": "부산대학앞", + "시간": "16:27:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1225, + "역명": "부산대학앞", + "시간": "16:58:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1035, + "역명": "부산대학앞", + "시간": "07:39:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2066, + "역명": "부산대학앞", + "시간": "10:03:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1097, + "역명": "부산대학앞", + "시간": "10:34:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2124, + "역명": "부산대학앞", + "시간": "12:57:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1155, + "역명": "부산대학앞", + "시간": "13:28:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2182, + "역명": "부산대학앞", + "시간": "15:51:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1213, + "역명": "부산대학앞", + "시간": "16:22:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2242, + "역명": "부산대학앞", + "시간": "18:45:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1265, + "역명": "부산대학앞", + "시간": "19:21:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2288, + "역명": "부산대학앞", + "시간": "21:43:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1305, + "역명": "부산대학앞", + "시간": "22:20:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 32, + "열번": 2210, + "역명": "부산대학앞", + "시간": "17:13:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 32, + "열번": 1239, + "역명": "부산대학앞", + "시간": "17:44:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 32, + "열번": 2264, + "역명": "부산대학앞", + "시간": "20:07:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 32, + "열번": 1285, + "역명": "부산대학앞", + "시간": "20:41:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 32, + "열번": 2306, + "역명": "부산대학앞", + "시간": "23:05:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 32, + "열번": 7931, + "역명": "부산대학앞", + "시간": "23:42:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1037, + "역명": "부산대학앞", + "시간": "07:44:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2068, + "역명": "부산대학앞", + "시간": "10:09:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1099, + "역명": "부산대학앞", + "시간": "10:40:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2126, + "역명": "부산대학앞", + "시간": "13:03:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1157, + "역명": "부산대학앞", + "시간": "13:34:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2184, + "역명": "부산대학앞", + "시간": "15:57:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1215, + "역명": "부산대학앞", + "시간": "16:28:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2244, + "역명": "부산대학앞", + "시간": "18:52:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1267, + "역명": "부산대학앞", + "시간": "19:29:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 33, + "열번": 2290, + "역명": "부산대학앞", + "시간": "21:51:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1045, + "역명": "부산대학앞", + "시간": "08:04:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2074, + "역명": "부산대학앞", + "시간": "10:27:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1105, + "역명": "부산대학앞", + "시간": "10:58:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2132, + "역명": "부산대학앞", + "시간": "13:21:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1163, + "역명": "부산대학앞", + "시간": "13:52:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2190, + "역명": "부산대학앞", + "시간": "16:15:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1221, + "역명": "부산대학앞", + "시간": "16:46:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2250, + "역명": "부산대학앞", + "시간": "19:13:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1271, + "역명": "부산대학앞", + "시간": "19:45:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2294, + "역명": "부산대학앞", + "시간": "22:07:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1309, + "역명": "부산대학앞", + "시간": "22:41:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1055, + "역명": "부산대학앞", + "시간": "08:29:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2084, + "역명": "부산대학앞", + "시간": "10:57:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1115, + "역명": "부산대학앞", + "시간": "11:28:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2142, + "역명": "부산대학앞", + "시간": "13:51:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1173, + "역명": "부산대학앞", + "시간": "14:22:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2200, + "역명": "부산대학앞", + "시간": "16:45:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1231, + "역명": "부산대학앞", + "시간": "17:16:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2258, + "역명": "부산대학앞", + "시간": "19:43:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1279, + "역명": "부산대학앞", + "시간": "20:17:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2302, + "역명": "부산대학앞", + "시간": "22:45:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1315, + "역명": "부산대학앞", + "시간": "23:16:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "온천장", + "시간": "06:08:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "온천장", + "시간": "06:45:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2050, + "역명": "온천장", + "시간": "09:13:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1081, + "역명": "온천장", + "시간": "09:48:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2108, + "역명": "온천장", + "시간": "12:07:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1139, + "역명": "온천장", + "시간": "12:42:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2166, + "역명": "온천장", + "시간": "15:01:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1197, + "역명": "온천장", + "시간": "15:36:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2226, + "역명": "온천장", + "시간": "17:55:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "온천장", + "시간": "05:54:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "온천장", + "시간": "06:36:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "온천장", + "시간": "09:01:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1077, + "역명": "온천장", + "시간": "09:36:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2104, + "역명": "온천장", + "시간": "11:55:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1135, + "역명": "온천장", + "시간": "12:30:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2162, + "역명": "온천장", + "시간": "14:49:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1193, + "역명": "온천장", + "시간": "15:24:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2222, + "역명": "온천장", + "시간": "17:44:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1249, + "역명": "온천장", + "시간": "18:21:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2274, + "역명": "온천장", + "시간": "20:45:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1293, + "역명": "온천장", + "시간": "21:22:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "온천장", + "시간": "06:22:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "온천장", + "시간": "07:03:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2054, + "역명": "온천장", + "시간": "09:25:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1085, + "역명": "온천장", + "시간": "10:00:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2112, + "역명": "온천장", + "시간": "12:19:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1143, + "역명": "온천장", + "시간": "12:54:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2170, + "역명": "온천장", + "시간": "15:13:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1201, + "역명": "온천장", + "시간": "15:48:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2230, + "역명": "온천장", + "시간": "18:06:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1255, + "역명": "온천장", + "시간": "18:43:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2278, + "역명": "온천장", + "시간": "21:01:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "온천장", + "시간": "06:34:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1023, + "역명": "온천장", + "시간": "07:10:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2056, + "역명": "온천장", + "시간": "09:31:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1087, + "역명": "온천장", + "시간": "10:06:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2114, + "역명": "온천장", + "시간": "12:25:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1145, + "역명": "온천장", + "시간": "13:00:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2172, + "역명": "온천장", + "시간": "15:19:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1203, + "역명": "온천장", + "시간": "15:54:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2232, + "역명": "온천장", + "시간": "18:12:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1257, + "역명": "온천장", + "시간": "18:51:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2280, + "역명": "온천장", + "시간": "21:09:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1297, + "역명": "온천장", + "시간": "21:42:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2316, + "역명": "온천장", + "시간": "00:00:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2012, + "역명": "온천장", + "시간": "07:10:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1039, + "역명": "온천장", + "시간": "07:51:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2070, + "역명": "온천장", + "시간": "10:13:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1101, + "역명": "온천장", + "시간": "10:48:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2128, + "역명": "온천장", + "시간": "13:07:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1159, + "역명": "온천장", + "시간": "13:42:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2186, + "역명": "온천장", + "시간": "16:01:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1217, + "역명": "온천장", + "시간": "16:36:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2246, + "역명": "온천장", + "시간": "18:57:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2008, + "역명": "온천장", + "시간": "06:46:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1027, + "역명": "온천장", + "시간": "07:21:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2060, + "역명": "온천장", + "시간": "09:43:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1091, + "역명": "온천장", + "시간": "10:18:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2118, + "역명": "온천장", + "시간": "12:37:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1149, + "역명": "온천장", + "시간": "13:12:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2176, + "역명": "온천장", + "시간": "15:31:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1207, + "역명": "온천장", + "시간": "16:06:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2236, + "역명": "온천장", + "시간": "18:24:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1259, + "역명": "온천장", + "시간": "18:59:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2282, + "역명": "온천장", + "시간": "21:17:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1299, + "역명": "온천장", + "시간": "21:52:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 6, + "열번": 2318, + "역명": "온천장", + "시간": "00:17:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1001, + "역명": "온천장", + "시간": "05:21:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2018, + "역명": "온천장", + "시간": "07:42:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1051, + "역명": "온천장", + "시간": "08:21:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2080, + "역명": "온천장", + "시간": "10:43:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1111, + "역명": "온천장", + "시간": "11:18:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2138, + "역명": "온천장", + "시간": "13:37:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1169, + "역명": "온천장", + "시간": "14:12:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2196, + "역명": "온천장", + "시간": "16:31:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1227, + "역명": "온천장", + "시간": "17:06:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2254, + "역명": "온천장", + "시간": "19:25:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1275, + "역명": "온천장", + "시간": "20:03:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 7, + "열번": 2298, + "역명": "온천장", + "시간": "22:23:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2010, + "역명": "온천장", + "시간": "06:58:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1033, + "역명": "온천장", + "시간": "07:36:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2064, + "역명": "온천장", + "시간": "09:55:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1095, + "역명": "온천장", + "시간": "10:30:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2122, + "역명": "온천장", + "시간": "12:49:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1153, + "역명": "온천장", + "시간": "13:24:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2180, + "역명": "온천장", + "시간": "15:43:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1211, + "역명": "온천장", + "시간": "16:18:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2240, + "역명": "온천장", + "시간": "18:36:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1263, + "역명": "온천장", + "시간": "19:15:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2286, + "역명": "온천장", + "시간": "21:33:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1303, + "역명": "온천장", + "시간": "22:12:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 9, + "열번": 1003, + "역명": "온천장", + "시간": "05:31:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2020, + "역명": "온천장", + "시간": "07:51:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1053, + "역명": "온천장", + "시간": "08:26:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2082, + "역명": "온천장", + "시간": "10:49:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1113, + "역명": "온천장", + "시간": "11:24:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2140, + "역명": "온천장", + "시간": "13:43:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1171, + "역명": "온천장", + "시간": "14:18:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2198, + "역명": "온천장", + "시간": "16:37:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1229, + "역명": "온천장", + "시간": "17:12:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2256, + "역명": "온천장", + "시간": "19:33:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1277, + "역명": "온천장", + "시간": "20:11:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2300, + "역명": "온천장", + "시간": "22:33:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1313, + "역명": "온천장", + "시간": "23:06:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2014, + "역명": "온천장", + "시간": "07:22:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1043, + "역명": "온천장", + "시간": "08:01:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2072, + "역명": "온천장", + "시간": "10:19:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1103, + "역명": "온천장", + "시간": "10:54:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2130, + "역명": "온천장", + "시간": "13:13:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1161, + "역명": "온천장", + "시간": "13:48:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2188, + "역명": "온천장", + "시간": "16:07:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1219, + "역명": "온천장", + "시간": "16:42:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2248, + "역명": "온천장", + "시간": "19:04:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1269, + "역명": "온천장", + "시간": "19:39:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2292, + "역명": "온천장", + "시간": "21:57:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1307, + "역명": "온천장", + "시간": "22:32:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 11, + "열번": 2022, + "역명": "온천장", + "시간": "07:57:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2016, + "역명": "온천장", + "시간": "07:33:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1047, + "역명": "온천장", + "시간": "08:11:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2076, + "역명": "온천장", + "시간": "10:31:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1107, + "역명": "온천장", + "시간": "11:06:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2134, + "역명": "온천장", + "시간": "13:25:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1165, + "역명": "온천장", + "시간": "14:00:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "온천장", + "시간": "16:19:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1223, + "역명": "온천장", + "시간": "16:54:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2252, + "역명": "온천장", + "시간": "19:18:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1273, + "역명": "온천장", + "시간": "19:55:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2296, + "역명": "온천장", + "시간": "22:13:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1311, + "역명": "온천장", + "시간": "22:54:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1005, + "역명": "온천장", + "시간": "05:42:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2024, + "역명": "온천장", + "시간": "08:03:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1057, + "역명": "온천장", + "시간": "08:37:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2086, + "역명": "온천장", + "시간": "11:01:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1117, + "역명": "온천장", + "시간": "11:36:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2144, + "역명": "온천장", + "시간": "13:55:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1175, + "역명": "온천장", + "시간": "14:30:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2202, + "역명": "온천장", + "시간": "16:49:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1233, + "역명": "온천장", + "시간": "17:25:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2260, + "역명": "온천장", + "시간": "19:49:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1281, + "역명": "온천장", + "시간": "20:27:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2304, + "역명": "온천장", + "시간": "22:53:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 13, + "열번": 1317, + "역명": "온천장", + "시간": "23:29:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2026, + "역명": "온천장", + "시간": "08:08:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 14, + "열번": 1059, + "역명": "온천장", + "시간": "08:42:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1009, + "역명": "온천장", + "시간": "06:04:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2032, + "역명": "온천장", + "시간": "08:23:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1065, + "역명": "온천장", + "시간": "09:00:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2092, + "역명": "온천장", + "시간": "11:19:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1123, + "역명": "온천장", + "시간": "11:54:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2150, + "역명": "온천장", + "시간": "14:13:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1181, + "역명": "온천장", + "시간": "14:48:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2208, + "역명": "온천장", + "시간": "17:05:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 16, + "열번": 1007, + "역명": "온천장", + "시간": "05:53:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2028, + "역명": "온천장", + "시간": "08:13:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1061, + "역명": "온천장", + "시간": "08:48:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2088, + "역명": "온천장", + "시간": "11:07:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1119, + "역명": "온천장", + "시간": "11:42:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2146, + "역명": "온천장", + "시간": "14:01:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1177, + "역명": "온천장", + "시간": "14:36:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2204, + "역명": "온천장", + "시간": "16:54:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1235, + "역명": "온천장", + "시간": "17:32:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 17, + "열번": 1011, + "역명": "온천장", + "시간": "06:15:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2036, + "역명": "온천장", + "시간": "08:33:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1069, + "역명": "온천장", + "시간": "09:12:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2096, + "역명": "온천장", + "시간": "11:31:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1127, + "역명": "온천장", + "시간": "12:06:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2154, + "역명": "온천장", + "시간": "14:25:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1185, + "역명": "온천장", + "시간": "15:00:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2214, + "역명": "온천장", + "시간": "17:22:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1243, + "역명": "온천장", + "시간": "18:00:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2268, + "역명": "온천장", + "시간": "20:21:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1289, + "역명": "온천장", + "시간": "21:02:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2310, + "역명": "온천장", + "시간": "23:25:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2030, + "역명": "온천장", + "시간": "08:18:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1063, + "역명": "온천장", + "시간": "08:54:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2090, + "역명": "온천장", + "시간": "11:13:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1121, + "역명": "온천장", + "시간": "11:48:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2148, + "역명": "온천장", + "시간": "14:07:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1179, + "역명": "온천장", + "시간": "14:42:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2206, + "역명": "온천장", + "시간": "17:00:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1237, + "역명": "온천장", + "시간": "17:39:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2262, + "역명": "온천장", + "시간": "19:57:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1283, + "역명": "온천장", + "시간": "20:35:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2038, + "역명": "온천장", + "시간": "08:38:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2034, + "역명": "온천장", + "시간": "08:28:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1067, + "역명": "온천장", + "시간": "09:06:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2094, + "역명": "온천장", + "시간": "11:25:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1125, + "역명": "온천장", + "시간": "12:00:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2152, + "역명": "온천장", + "시간": "14:19:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1183, + "역명": "온천장", + "시간": "14:54:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2212, + "역명": "온천장", + "시간": "17:16:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1241, + "역명": "온천장", + "시간": "17:53:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2266, + "역명": "온천장", + "시간": "20:13:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1287, + "역명": "온천장", + "시간": "20:52:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 20, + "열번": 2308, + "역명": "온천장", + "시간": "23:13:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2040, + "역명": "온천장", + "시간": "08:43:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1071, + "역명": "온천장", + "시간": "09:18:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2098, + "역명": "온천장", + "시간": "11:37:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1129, + "역명": "온천장", + "시간": "12:12:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2156, + "역명": "온천장", + "시간": "14:31:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1187, + "역명": "온천장", + "시간": "15:06:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2216, + "역명": "온천장", + "시간": "17:27:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2044, + "역명": "온천장", + "시간": "08:55:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1075, + "역명": "온천장", + "시간": "09:30:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2102, + "역명": "온천장", + "시간": "11:49:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1133, + "역명": "온천장", + "시간": "12:24:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2160, + "역명": "온천장", + "시간": "14:43:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1191, + "역명": "온천장", + "시간": "15:18:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2220, + "역명": "온천장", + "시간": "17:38:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1247, + "역명": "온천장", + "시간": "18:14:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2272, + "역명": "온천장", + "시간": "20:37:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1291, + "역명": "온천장", + "시간": "21:12:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 22, + "열번": 2312, + "역명": "온천장", + "시간": "23:37:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 23, + "열번": 1013, + "역명": "온천장", + "시간": "06:26:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2042, + "역명": "온천장", + "시간": "08:49:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1073, + "역명": "온천장", + "시간": "09:24:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2100, + "역명": "온천장", + "시간": "11:43:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1131, + "역명": "온천장", + "시간": "12:18:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2158, + "역명": "온천장", + "시간": "14:37:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1189, + "역명": "온천장", + "시간": "15:12:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2218, + "역명": "온천장", + "시간": "17:33:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1245, + "역명": "온천장", + "시간": "18:07:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2270, + "역명": "온천장", + "시간": "20:29:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "온천장", + "시간": "09:07:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1079, + "역명": "온천장", + "시간": "09:42:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2106, + "역명": "온천장", + "시간": "12:01:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1137, + "역명": "온천장", + "시간": "12:36:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2164, + "역명": "온천장", + "시간": "14:55:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1195, + "역명": "온천장", + "시간": "15:30:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2224, + "역명": "온천장", + "시간": "17:49:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1251, + "역명": "온천장", + "시간": "18:28:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "온천장", + "시간": "06:54:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2052, + "역명": "온천장", + "시간": "09:19:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1083, + "역명": "온천장", + "시간": "09:54:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2110, + "역명": "온천장", + "시간": "12:13:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1141, + "역명": "온천장", + "시간": "12:48:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2168, + "역명": "온천장", + "시간": "15:07:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1199, + "역명": "온천장", + "시간": "15:42:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2228, + "역명": "온천장", + "시간": "18:00:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1253, + "역명": "온천장", + "시간": "18:35:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2276, + "역명": "온천장", + "시간": "20:53:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1295, + "역명": "온천장", + "시간": "21:32:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2314, + "역명": "온천장", + "시간": "23:49:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 26, + "열번": 1029, + "역명": "온천장", + "시간": "07:26:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1025, + "역명": "온천장", + "시간": "07:16:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2058, + "역명": "온천장", + "시간": "09:37:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1089, + "역명": "온천장", + "시간": "10:12:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2116, + "역명": "온천장", + "시간": "12:31:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1147, + "역명": "온천장", + "시간": "13:06:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2174, + "역명": "온천장", + "시간": "15:25:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1205, + "역명": "온천장", + "시간": "16:00:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 27, + "열번": 2234, + "역명": "온천장", + "시간": "18:18:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 28, + "열번": 1041, + "역명": "온천장", + "시간": "07:56:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1031, + "역명": "온천장", + "시간": "07:31:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2062, + "역명": "온천장", + "시간": "09:49:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1093, + "역명": "온천장", + "시간": "10:24:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2120, + "역명": "온천장", + "시간": "12:43:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1151, + "역명": "온천장", + "시간": "13:18:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2178, + "역명": "온천장", + "시간": "15:37:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1209, + "역명": "온천장", + "시간": "16:12:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2238, + "역명": "온천장", + "시간": "18:30:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1261, + "역명": "온천장", + "시간": "19:07:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2284, + "역명": "온천장", + "시간": "21:25:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 29, + "열번": 1301, + "역명": "온천장", + "시간": "22:02:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1049, + "역명": "온천장", + "시간": "08:16:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2078, + "역명": "온천장", + "시간": "10:37:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1109, + "역명": "온천장", + "시간": "11:12:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2136, + "역명": "온천장", + "시간": "13:31:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1167, + "역명": "온천장", + "시간": "14:06:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2194, + "역명": "온천장", + "시간": "16:25:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1225, + "역명": "온천장", + "시간": "17:00:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1035, + "역명": "온천장", + "시간": "07:41:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2066, + "역명": "온천장", + "시간": "10:01:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1097, + "역명": "온천장", + "시간": "10:36:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2124, + "역명": "온천장", + "시간": "12:55:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1155, + "역명": "온천장", + "시간": "13:30:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2182, + "역명": "온천장", + "시간": "15:49:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1213, + "역명": "온천장", + "시간": "16:24:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2242, + "역명": "온천장", + "시간": "18:43:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1265, + "역명": "온천장", + "시간": "19:23:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2288, + "역명": "온천장", + "시간": "21:41:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1305, + "역명": "온천장", + "시간": "22:22:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 32, + "열번": 2210, + "역명": "온천장", + "시간": "17:11:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 32, + "열번": 1239, + "역명": "온천장", + "시간": "17:46:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 32, + "열번": 2264, + "역명": "온천장", + "시간": "20:05:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 32, + "열번": 1285, + "역명": "온천장", + "시간": "20:43:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 32, + "열번": 2306, + "역명": "온천장", + "시간": "23:03:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 32, + "열번": 7931, + "역명": "온천장", + "시간": "23:44:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1037, + "역명": "온천장", + "시간": "07:46:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2068, + "역명": "온천장", + "시간": "10:07:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1099, + "역명": "온천장", + "시간": "10:42:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2126, + "역명": "온천장", + "시간": "13:01:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1157, + "역명": "온천장", + "시간": "13:36:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2184, + "역명": "온천장", + "시간": "15:55:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1215, + "역명": "온천장", + "시간": "16:30:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2244, + "역명": "온천장", + "시간": "18:50:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1267, + "역명": "온천장", + "시간": "19:31:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 33, + "열번": 2290, + "역명": "온천장", + "시간": "21:49:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1045, + "역명": "온천장", + "시간": "08:06:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2074, + "역명": "온천장", + "시간": "10:25:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1105, + "역명": "온천장", + "시간": "11:00:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2132, + "역명": "온천장", + "시간": "13:19:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1163, + "역명": "온천장", + "시간": "13:54:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2190, + "역명": "온천장", + "시간": "16:13:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1221, + "역명": "온천장", + "시간": "16:48:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2250, + "역명": "온천장", + "시간": "19:11:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1271, + "역명": "온천장", + "시간": "19:47:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2294, + "역명": "온천장", + "시간": "22:05:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1309, + "역명": "온천장", + "시간": "22:43:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1055, + "역명": "온천장", + "시간": "08:31:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2084, + "역명": "온천장", + "시간": "10:55:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1115, + "역명": "온천장", + "시간": "11:30:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2142, + "역명": "온천장", + "시간": "13:49:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1173, + "역명": "온천장", + "시간": "14:24:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2200, + "역명": "온천장", + "시간": "16:43:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1231, + "역명": "온천장", + "시간": "17:18:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2258, + "역명": "온천장", + "시간": "19:41:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1279, + "역명": "온천장", + "시간": "20:19:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2302, + "역명": "온천장", + "시간": "22:43:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1315, + "역명": "온천장", + "시간": "23:18:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "명륜", + "시간": "06:06:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "명륜", + "시간": "06:47:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2050, + "역명": "명륜", + "시간": "09:11:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1081, + "역명": "명륜", + "시간": "09:50:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2108, + "역명": "명륜", + "시간": "12:05:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1139, + "역명": "명륜", + "시간": "12:44:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2166, + "역명": "명륜", + "시간": "14:59:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1197, + "역명": "명륜", + "시간": "15:38:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2226, + "역명": "명륜", + "시간": "17:53:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "명륜", + "시간": "05:52:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "명륜", + "시간": "06:38:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "명륜", + "시간": "08:59:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1077, + "역명": "명륜", + "시간": "09:38:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2104, + "역명": "명륜", + "시간": "11:53:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1135, + "역명": "명륜", + "시간": "12:32:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2162, + "역명": "명륜", + "시간": "14:47:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1193, + "역명": "명륜", + "시간": "15:26:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2222, + "역명": "명륜", + "시간": "17:42:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1249, + "역명": "명륜", + "시간": "18:23:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2274, + "역명": "명륜", + "시간": "20:43:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1293, + "역명": "명륜", + "시간": "21:24:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "명륜", + "시간": "06:20:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "명륜", + "시간": "07:05:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2054, + "역명": "명륜", + "시간": "09:23:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1085, + "역명": "명륜", + "시간": "10:02:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2112, + "역명": "명륜", + "시간": "12:17:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1143, + "역명": "명륜", + "시간": "12:56:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2170, + "역명": "명륜", + "시간": "15:11:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1201, + "역명": "명륜", + "시간": "15:50:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2230, + "역명": "명륜", + "시간": "18:04:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1255, + "역명": "명륜", + "시간": "18:45:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2278, + "역명": "명륜", + "시간": "20:59:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "명륜", + "시간": "06:32:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1023, + "역명": "명륜", + "시간": "07:12:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2056, + "역명": "명륜", + "시간": "09:29:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1087, + "역명": "명륜", + "시간": "10:08:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2114, + "역명": "명륜", + "시간": "12:23:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1145, + "역명": "명륜", + "시간": "13:02:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2172, + "역명": "명륜", + "시간": "15:17:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1203, + "역명": "명륜", + "시간": "15:56:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2232, + "역명": "명륜", + "시간": "18:10:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1257, + "역명": "명륜", + "시간": "18:53:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2280, + "역명": "명륜", + "시간": "21:07:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1297, + "역명": "명륜", + "시간": "21:44:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2316, + "역명": "명륜", + "시간": "23:58:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2012, + "역명": "명륜", + "시간": "07:08:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1039, + "역명": "명륜", + "시간": "07:53:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2070, + "역명": "명륜", + "시간": "10:11:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1101, + "역명": "명륜", + "시간": "10:50:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2128, + "역명": "명륜", + "시간": "13:05:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1159, + "역명": "명륜", + "시간": "13:44:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2186, + "역명": "명륜", + "시간": "15:59:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1217, + "역명": "명륜", + "시간": "16:38:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2246, + "역명": "명륜", + "시간": "18:55:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2008, + "역명": "명륜", + "시간": "06:44:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1027, + "역명": "명륜", + "시간": "07:23:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2060, + "역명": "명륜", + "시간": "09:41:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1091, + "역명": "명륜", + "시간": "10:20:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2118, + "역명": "명륜", + "시간": "12:35:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1149, + "역명": "명륜", + "시간": "13:14:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2176, + "역명": "명륜", + "시간": "15:29:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1207, + "역명": "명륜", + "시간": "16:08:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2236, + "역명": "명륜", + "시간": "18:22:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1259, + "역명": "명륜", + "시간": "19:01:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2282, + "역명": "명륜", + "시간": "21:15:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1299, + "역명": "명륜", + "시간": "21:54:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 6, + "열번": 2318, + "역명": "명륜", + "시간": "00:15:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1001, + "역명": "명륜", + "시간": "05:23:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2018, + "역명": "명륜", + "시간": "07:40:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1051, + "역명": "명륜", + "시간": "08:23:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2080, + "역명": "명륜", + "시간": "10:41:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1111, + "역명": "명륜", + "시간": "11:20:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2138, + "역명": "명륜", + "시간": "13:35:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1169, + "역명": "명륜", + "시간": "14:14:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2196, + "역명": "명륜", + "시간": "16:29:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1227, + "역명": "명륜", + "시간": "17:08:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2254, + "역명": "명륜", + "시간": "19:23:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1275, + "역명": "명륜", + "시간": "20:05:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 7, + "열번": 2298, + "역명": "명륜", + "시간": "22:21:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2010, + "역명": "명륜", + "시간": "06:56:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1033, + "역명": "명륜", + "시간": "07:38:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2064, + "역명": "명륜", + "시간": "09:53:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1095, + "역명": "명륜", + "시간": "10:32:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2122, + "역명": "명륜", + "시간": "12:47:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1153, + "역명": "명륜", + "시간": "13:26:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2180, + "역명": "명륜", + "시간": "15:41:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1211, + "역명": "명륜", + "시간": "16:20:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2240, + "역명": "명륜", + "시간": "18:34:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1263, + "역명": "명륜", + "시간": "19:17:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2286, + "역명": "명륜", + "시간": "21:31:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1303, + "역명": "명륜", + "시간": "22:14:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 9, + "열번": 1003, + "역명": "명륜", + "시간": "05:33:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2020, + "역명": "명륜", + "시간": "07:49:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1053, + "역명": "명륜", + "시간": "08:28:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2082, + "역명": "명륜", + "시간": "10:47:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1113, + "역명": "명륜", + "시간": "11:26:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2140, + "역명": "명륜", + "시간": "13:41:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1171, + "역명": "명륜", + "시간": "14:20:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2198, + "역명": "명륜", + "시간": "16:35:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1229, + "역명": "명륜", + "시간": "17:14:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2256, + "역명": "명륜", + "시간": "19:31:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1277, + "역명": "명륜", + "시간": "20:13:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2300, + "역명": "명륜", + "시간": "22:31:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1313, + "역명": "명륜", + "시간": "23:08:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2014, + "역명": "명륜", + "시간": "07:20:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1043, + "역명": "명륜", + "시간": "08:03:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2072, + "역명": "명륜", + "시간": "10:17:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1103, + "역명": "명륜", + "시간": "10:56:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2130, + "역명": "명륜", + "시간": "13:11:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1161, + "역명": "명륜", + "시간": "13:50:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2188, + "역명": "명륜", + "시간": "16:05:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1219, + "역명": "명륜", + "시간": "16:44:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2248, + "역명": "명륜", + "시간": "19:02:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1269, + "역명": "명륜", + "시간": "19:41:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2292, + "역명": "명륜", + "시간": "21:55:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1307, + "역명": "명륜", + "시간": "22:34:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 11, + "열번": 2022, + "역명": "명륜", + "시간": "07:55:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2016, + "역명": "명륜", + "시간": "07:31:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1047, + "역명": "명륜", + "시간": "08:13:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2076, + "역명": "명륜", + "시간": "10:29:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1107, + "역명": "명륜", + "시간": "11:08:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2134, + "역명": "명륜", + "시간": "13:23:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1165, + "역명": "명륜", + "시간": "14:02:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "명륜", + "시간": "16:17:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1223, + "역명": "명륜", + "시간": "16:56:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2252, + "역명": "명륜", + "시간": "19:16:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1273, + "역명": "명륜", + "시간": "19:57:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2296, + "역명": "명륜", + "시간": "22:11:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1311, + "역명": "명륜", + "시간": "22:56:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1005, + "역명": "명륜", + "시간": "05:44:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2024, + "역명": "명륜", + "시간": "08:01:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1057, + "역명": "명륜", + "시간": "08:39:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2086, + "역명": "명륜", + "시간": "10:59:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1117, + "역명": "명륜", + "시간": "11:38:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2144, + "역명": "명륜", + "시간": "13:53:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1175, + "역명": "명륜", + "시간": "14:32:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2202, + "역명": "명륜", + "시간": "16:47:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1233, + "역명": "명륜", + "시간": "17:27:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2260, + "역명": "명륜", + "시간": "19:47:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1281, + "역명": "명륜", + "시간": "20:29:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2304, + "역명": "명륜", + "시간": "22:51:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 13, + "열번": 1317, + "역명": "명륜", + "시간": "23:31:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2026, + "역명": "명륜", + "시간": "08:06:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 14, + "열번": 1059, + "역명": "명륜", + "시간": "08:44:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1009, + "역명": "명륜", + "시간": "06:06:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2032, + "역명": "명륜", + "시간": "08:21:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1065, + "역명": "명륜", + "시간": "09:02:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2092, + "역명": "명륜", + "시간": "11:17:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1123, + "역명": "명륜", + "시간": "11:56:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2150, + "역명": "명륜", + "시간": "14:11:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1181, + "역명": "명륜", + "시간": "14:50:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2208, + "역명": "명륜", + "시간": "17:03:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 16, + "열번": 1007, + "역명": "명륜", + "시간": "05:55:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2028, + "역명": "명륜", + "시간": "08:11:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1061, + "역명": "명륜", + "시간": "08:50:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2088, + "역명": "명륜", + "시간": "11:05:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1119, + "역명": "명륜", + "시간": "11:44:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2146, + "역명": "명륜", + "시간": "13:59:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1177, + "역명": "명륜", + "시간": "14:38:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2204, + "역명": "명륜", + "시간": "16:52:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1235, + "역명": "명륜", + "시간": "17:34:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 17, + "열번": 1011, + "역명": "명륜", + "시간": "06:17:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2036, + "역명": "명륜", + "시간": "08:31:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1069, + "역명": "명륜", + "시간": "09:14:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2096, + "역명": "명륜", + "시간": "11:29:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1127, + "역명": "명륜", + "시간": "12:08:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2154, + "역명": "명륜", + "시간": "14:23:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1185, + "역명": "명륜", + "시간": "15:02:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2214, + "역명": "명륜", + "시간": "17:20:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1243, + "역명": "명륜", + "시간": "18:02:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2268, + "역명": "명륜", + "시간": "20:19:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1289, + "역명": "명륜", + "시간": "21:04:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2310, + "역명": "명륜", + "시간": "23:23:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2030, + "역명": "명륜", + "시간": "08:16:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1063, + "역명": "명륜", + "시간": "08:56:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2090, + "역명": "명륜", + "시간": "11:11:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1121, + "역명": "명륜", + "시간": "11:50:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2148, + "역명": "명륜", + "시간": "14:05:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1179, + "역명": "명륜", + "시간": "14:44:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2206, + "역명": "명륜", + "시간": "16:58:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1237, + "역명": "명륜", + "시간": "17:41:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2262, + "역명": "명륜", + "시간": "19:55:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1283, + "역명": "명륜", + "시간": "20:37:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2038, + "역명": "명륜", + "시간": "08:36:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2034, + "역명": "명륜", + "시간": "08:26:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1067, + "역명": "명륜", + "시간": "09:08:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2094, + "역명": "명륜", + "시간": "11:23:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1125, + "역명": "명륜", + "시간": "12:02:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2152, + "역명": "명륜", + "시간": "14:17:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1183, + "역명": "명륜", + "시간": "14:56:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2212, + "역명": "명륜", + "시간": "17:14:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1241, + "역명": "명륜", + "시간": "17:55:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2266, + "역명": "명륜", + "시간": "20:11:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1287, + "역명": "명륜", + "시간": "20:54:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 20, + "열번": 2308, + "역명": "명륜", + "시간": "23:11:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2040, + "역명": "명륜", + "시간": "08:41:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1071, + "역명": "명륜", + "시간": "09:20:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2098, + "역명": "명륜", + "시간": "11:35:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1129, + "역명": "명륜", + "시간": "12:14:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2156, + "역명": "명륜", + "시간": "14:29:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1187, + "역명": "명륜", + "시간": "15:08:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2216, + "역명": "명륜", + "시간": "17:25:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2044, + "역명": "명륜", + "시간": "08:53:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1075, + "역명": "명륜", + "시간": "09:32:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2102, + "역명": "명륜", + "시간": "11:47:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1133, + "역명": "명륜", + "시간": "12:26:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2160, + "역명": "명륜", + "시간": "14:41:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1191, + "역명": "명륜", + "시간": "15:20:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2220, + "역명": "명륜", + "시간": "17:36:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1247, + "역명": "명륜", + "시간": "18:16:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2272, + "역명": "명륜", + "시간": "20:35:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1291, + "역명": "명륜", + "시간": "21:14:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 22, + "열번": 2312, + "역명": "명륜", + "시간": "23:35:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 23, + "열번": 1013, + "역명": "명륜", + "시간": "06:28:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2042, + "역명": "명륜", + "시간": "08:47:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1073, + "역명": "명륜", + "시간": "09:26:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2100, + "역명": "명륜", + "시간": "11:41:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1131, + "역명": "명륜", + "시간": "12:20:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2158, + "역명": "명륜", + "시간": "14:35:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1189, + "역명": "명륜", + "시간": "15:14:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2218, + "역명": "명륜", + "시간": "17:31:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1245, + "역명": "명륜", + "시간": "18:09:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2270, + "역명": "명륜", + "시간": "20:27:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "명륜", + "시간": "09:05:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1079, + "역명": "명륜", + "시간": "09:44:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2106, + "역명": "명륜", + "시간": "11:59:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1137, + "역명": "명륜", + "시간": "12:38:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2164, + "역명": "명륜", + "시간": "14:53:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1195, + "역명": "명륜", + "시간": "15:32:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2224, + "역명": "명륜", + "시간": "17:47:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1251, + "역명": "명륜", + "시간": "18:30:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "명륜", + "시간": "06:56:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2052, + "역명": "명륜", + "시간": "09:17:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1083, + "역명": "명륜", + "시간": "09:56:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2110, + "역명": "명륜", + "시간": "12:11:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1141, + "역명": "명륜", + "시간": "12:50:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2168, + "역명": "명륜", + "시간": "15:05:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1199, + "역명": "명륜", + "시간": "15:44:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2228, + "역명": "명륜", + "시간": "17:58:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1253, + "역명": "명륜", + "시간": "18:37:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2276, + "역명": "명륜", + "시간": "20:51:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1295, + "역명": "명륜", + "시간": "21:34:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2314, + "역명": "명륜", + "시간": "23:47:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 26, + "열번": 1029, + "역명": "명륜", + "시간": "07:28:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1025, + "역명": "명륜", + "시간": "07:18:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2058, + "역명": "명륜", + "시간": "09:35:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1089, + "역명": "명륜", + "시간": "10:14:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2116, + "역명": "명륜", + "시간": "12:29:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1147, + "역명": "명륜", + "시간": "13:08:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2174, + "역명": "명륜", + "시간": "15:23:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1205, + "역명": "명륜", + "시간": "16:02:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 27, + "열번": 2234, + "역명": "명륜", + "시간": "18:16:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 28, + "열번": 1041, + "역명": "명륜", + "시간": "07:58:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1031, + "역명": "명륜", + "시간": "07:33:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2062, + "역명": "명륜", + "시간": "09:47:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1093, + "역명": "명륜", + "시간": "10:26:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2120, + "역명": "명륜", + "시간": "12:41:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1151, + "역명": "명륜", + "시간": "13:20:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2178, + "역명": "명륜", + "시간": "15:35:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1209, + "역명": "명륜", + "시간": "16:14:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2238, + "역명": "명륜", + "시간": "18:28:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1261, + "역명": "명륜", + "시간": "19:09:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2284, + "역명": "명륜", + "시간": "21:23:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 29, + "열번": 1301, + "역명": "명륜", + "시간": "22:04:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1049, + "역명": "명륜", + "시간": "08:18:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2078, + "역명": "명륜", + "시간": "10:35:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1109, + "역명": "명륜", + "시간": "11:14:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2136, + "역명": "명륜", + "시간": "13:29:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1167, + "역명": "명륜", + "시간": "14:08:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2194, + "역명": "명륜", + "시간": "16:23:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1225, + "역명": "명륜", + "시간": "17:02:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1035, + "역명": "명륜", + "시간": "07:43:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2066, + "역명": "명륜", + "시간": "09:59:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1097, + "역명": "명륜", + "시간": "10:38:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2124, + "역명": "명륜", + "시간": "12:53:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1155, + "역명": "명륜", + "시간": "13:32:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2182, + "역명": "명륜", + "시간": "15:47:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1213, + "역명": "명륜", + "시간": "16:26:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2242, + "역명": "명륜", + "시간": "18:41:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1265, + "역명": "명륜", + "시간": "19:25:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2288, + "역명": "명륜", + "시간": "21:39:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1305, + "역명": "명륜", + "시간": "22:24:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 32, + "열번": 2210, + "역명": "명륜", + "시간": "17:09:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 32, + "열번": 1239, + "역명": "명륜", + "시간": "17:48:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 32, + "열번": 2264, + "역명": "명륜", + "시간": "20:03:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 32, + "열번": 1285, + "역명": "명륜", + "시간": "20:45:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 32, + "열번": 2306, + "역명": "명륜", + "시간": "23:01:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 32, + "열번": 7931, + "역명": "명륜", + "시간": "23:46:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1037, + "역명": "명륜", + "시간": "07:48:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2068, + "역명": "명륜", + "시간": "10:05:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1099, + "역명": "명륜", + "시간": "10:44:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2126, + "역명": "명륜", + "시간": "12:59:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1157, + "역명": "명륜", + "시간": "13:38:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2184, + "역명": "명륜", + "시간": "15:53:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1215, + "역명": "명륜", + "시간": "16:32:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2244, + "역명": "명륜", + "시간": "18:48:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1267, + "역명": "명륜", + "시간": "19:33:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 33, + "열번": 2290, + "역명": "명륜", + "시간": "21:47:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1045, + "역명": "명륜", + "시간": "08:08:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2074, + "역명": "명륜", + "시간": "10:23:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1105, + "역명": "명륜", + "시간": "11:02:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2132, + "역명": "명륜", + "시간": "13:17:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1163, + "역명": "명륜", + "시간": "13:56:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2190, + "역명": "명륜", + "시간": "16:11:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1221, + "역명": "명륜", + "시간": "16:50:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2250, + "역명": "명륜", + "시간": "19:09:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1271, + "역명": "명륜", + "시간": "19:49:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2294, + "역명": "명륜", + "시간": "22:03:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1309, + "역명": "명륜", + "시간": "22:45:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1055, + "역명": "명륜", + "시간": "08:33:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2084, + "역명": "명륜", + "시간": "10:53:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1115, + "역명": "명륜", + "시간": "11:32:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2142, + "역명": "명륜", + "시간": "13:47:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1173, + "역명": "명륜", + "시간": "14:26:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2200, + "역명": "명륜", + "시간": "16:41:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1231, + "역명": "명륜", + "시간": "17:20:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2258, + "역명": "명륜", + "시간": "19:39:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1279, + "역명": "명륜", + "시간": "20:21:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2302, + "역명": "명륜", + "시간": "22:41:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1315, + "역명": "명륜", + "시간": "23:20:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "동래", + "시간": "06:05:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "동래", + "시간": "06:49:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2050, + "역명": "동래", + "시간": "09:09:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1081, + "역명": "동래", + "시간": "09:52:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2108, + "역명": "동래", + "시간": "12:03:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1139, + "역명": "동래", + "시간": "12:46:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2166, + "역명": "동래", + "시간": "14:57:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1197, + "역명": "동래", + "시간": "15:40:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2226, + "역명": "동래", + "시간": "17:51:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "동래", + "시간": "05:51:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "동래", + "시간": "06:40:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "동래", + "시간": "08:57:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1077, + "역명": "동래", + "시간": "09:40:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2104, + "역명": "동래", + "시간": "11:51:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1135, + "역명": "동래", + "시간": "12:34:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2162, + "역명": "동래", + "시간": "14:45:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1193, + "역명": "동래", + "시간": "15:28:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2222, + "역명": "동래", + "시간": "17:40:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1249, + "역명": "동래", + "시간": "18:25:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2274, + "역명": "동래", + "시간": "20:41:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1293, + "역명": "동래", + "시간": "21:26:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "동래", + "시간": "06:18:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "동래", + "시간": "07:07:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2054, + "역명": "동래", + "시간": "09:21:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1085, + "역명": "동래", + "시간": "10:04:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2112, + "역명": "동래", + "시간": "12:15:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1143, + "역명": "동래", + "시간": "12:58:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2170, + "역명": "동래", + "시간": "15:09:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1201, + "역명": "동래", + "시간": "15:52:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2230, + "역명": "동래", + "시간": "18:02:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1255, + "역명": "동래", + "시간": "18:47:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2278, + "역명": "동래", + "시간": "20:57:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "동래", + "시간": "06:31:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1023, + "역명": "동래", + "시간": "07:14:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2056, + "역명": "동래", + "시간": "09:27:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1087, + "역명": "동래", + "시간": "10:10:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2114, + "역명": "동래", + "시간": "12:21:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1145, + "역명": "동래", + "시간": "13:04:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2172, + "역명": "동래", + "시간": "15:15:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1203, + "역명": "동래", + "시간": "15:58:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2232, + "역명": "동래", + "시간": "18:08:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1257, + "역명": "동래", + "시간": "18:55:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2280, + "역명": "동래", + "시간": "21:05:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1297, + "역명": "동래", + "시간": "21:46:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2316, + "역명": "동래", + "시간": "23:57:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2012, + "역명": "동래", + "시간": "07:07:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1039, + "역명": "동래", + "시간": "07:55:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2070, + "역명": "동래", + "시간": "10:09:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1101, + "역명": "동래", + "시간": "10:52:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2128, + "역명": "동래", + "시간": "13:03:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1159, + "역명": "동래", + "시간": "13:46:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2186, + "역명": "동래", + "시간": "15:57:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1217, + "역명": "동래", + "시간": "16:40:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2246, + "역명": "동래", + "시간": "18:53:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2008, + "역명": "동래", + "시간": "06:43:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1027, + "역명": "동래", + "시간": "07:25:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2060, + "역명": "동래", + "시간": "09:39:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1091, + "역명": "동래", + "시간": "10:22:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2118, + "역명": "동래", + "시간": "12:33:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1149, + "역명": "동래", + "시간": "13:16:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2176, + "역명": "동래", + "시간": "15:27:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1207, + "역명": "동래", + "시간": "16:10:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2236, + "역명": "동래", + "시간": "18:20:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1259, + "역명": "동래", + "시간": "19:03:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2282, + "역명": "동래", + "시간": "21:13:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1299, + "역명": "동래", + "시간": "21:56:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 6, + "열번": 2318, + "역명": "동래", + "시간": "00:13:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1001, + "역명": "동래", + "시간": "05:24:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2018, + "역명": "동래", + "시간": "07:39:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1051, + "역명": "동래", + "시간": "08:25:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2080, + "역명": "동래", + "시간": "10:39:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1111, + "역명": "동래", + "시간": "11:22:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2138, + "역명": "동래", + "시간": "13:33:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1169, + "역명": "동래", + "시간": "14:16:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2196, + "역명": "동래", + "시간": "16:27:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1227, + "역명": "동래", + "시간": "17:10:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2254, + "역명": "동래", + "시간": "19:21:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1275, + "역명": "동래", + "시간": "20:07:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 7, + "열번": 2298, + "역명": "동래", + "시간": "22:19:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2010, + "역명": "동래", + "시간": "06:55:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1033, + "역명": "동래", + "시간": "07:40:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2064, + "역명": "동래", + "시간": "09:51:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1095, + "역명": "동래", + "시간": "10:34:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2122, + "역명": "동래", + "시간": "12:45:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1153, + "역명": "동래", + "시간": "13:28:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2180, + "역명": "동래", + "시간": "15:39:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1211, + "역명": "동래", + "시간": "16:22:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2240, + "역명": "동래", + "시간": "18:32:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1263, + "역명": "동래", + "시간": "19:19:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2286, + "역명": "동래", + "시간": "21:29:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1303, + "역명": "동래", + "시간": "22:16:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 9, + "열번": 1003, + "역명": "동래", + "시간": "05:35:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2020, + "역명": "동래", + "시간": "07:47:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1053, + "역명": "동래", + "시간": "08:30:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2082, + "역명": "동래", + "시간": "10:45:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1113, + "역명": "동래", + "시간": "11:28:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2140, + "역명": "동래", + "시간": "13:39:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1171, + "역명": "동래", + "시간": "14:22:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2198, + "역명": "동래", + "시간": "16:33:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1229, + "역명": "동래", + "시간": "17:16:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2256, + "역명": "동래", + "시간": "19:29:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1277, + "역명": "동래", + "시간": "20:15:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2300, + "역명": "동래", + "시간": "22:29:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1313, + "역명": "동래", + "시간": "23:10:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2014, + "역명": "동래", + "시간": "07:19:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1043, + "역명": "동래", + "시간": "08:05:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2072, + "역명": "동래", + "시간": "10:15:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1103, + "역명": "동래", + "시간": "10:58:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2130, + "역명": "동래", + "시간": "13:09:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1161, + "역명": "동래", + "시간": "13:52:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2188, + "역명": "동래", + "시간": "16:03:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1219, + "역명": "동래", + "시간": "16:46:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2248, + "역명": "동래", + "시간": "19:00:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1269, + "역명": "동래", + "시간": "19:43:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2292, + "역명": "동래", + "시간": "21:53:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1307, + "역명": "동래", + "시간": "22:36:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 11, + "열번": 2022, + "역명": "동래", + "시간": "07:53:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2016, + "역명": "동래", + "시간": "07:30:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1047, + "역명": "동래", + "시간": "08:15:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2076, + "역명": "동래", + "시간": "10:27:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1107, + "역명": "동래", + "시간": "11:10:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2134, + "역명": "동래", + "시간": "13:21:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1165, + "역명": "동래", + "시간": "14:04:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "동래", + "시간": "16:15:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1223, + "역명": "동래", + "시간": "16:58:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2252, + "역명": "동래", + "시간": "19:14:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1273, + "역명": "동래", + "시간": "19:59:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2296, + "역명": "동래", + "시간": "22:09:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1311, + "역명": "동래", + "시간": "22:58:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1005, + "역명": "동래", + "시간": "05:46:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2024, + "역명": "동래", + "시간": "07:59:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1057, + "역명": "동래", + "시간": "08:41:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2086, + "역명": "동래", + "시간": "10:57:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1117, + "역명": "동래", + "시간": "11:40:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2144, + "역명": "동래", + "시간": "13:51:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1175, + "역명": "동래", + "시간": "14:34:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2202, + "역명": "동래", + "시간": "16:45:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1233, + "역명": "동래", + "시간": "17:29:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2260, + "역명": "동래", + "시간": "19:45:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1281, + "역명": "동래", + "시간": "20:31:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2304, + "역명": "동래", + "시간": "22:49:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 13, + "열번": 1317, + "역명": "동래", + "시간": "23:32:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2026, + "역명": "동래", + "시간": "08:04:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 14, + "열번": 1059, + "역명": "동래", + "시간": "08:46:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1009, + "역명": "동래", + "시간": "06:08:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2032, + "역명": "동래", + "시간": "08:19:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1065, + "역명": "동래", + "시간": "09:04:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2092, + "역명": "동래", + "시간": "11:15:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1123, + "역명": "동래", + "시간": "11:58:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2150, + "역명": "동래", + "시간": "14:09:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1181, + "역명": "동래", + "시간": "14:52:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2208, + "역명": "동래", + "시간": "17:02:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 16, + "열번": 1007, + "역명": "동래", + "시간": "05:57:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2028, + "역명": "동래", + "시간": "08:09:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1061, + "역명": "동래", + "시간": "08:52:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2088, + "역명": "동래", + "시간": "11:03:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1119, + "역명": "동래", + "시간": "11:46:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2146, + "역명": "동래", + "시간": "13:57:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1177, + "역명": "동래", + "시간": "14:40:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2204, + "역명": "동래", + "시간": "16:51:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1235, + "역명": "동래", + "시간": "17:36:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 17, + "열번": 1011, + "역명": "동래", + "시간": "06:19:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2036, + "역명": "동래", + "시간": "08:29:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1069, + "역명": "동래", + "시간": "09:16:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2096, + "역명": "동래", + "시간": "11:27:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1127, + "역명": "동래", + "시간": "12:10:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2154, + "역명": "동래", + "시간": "14:21:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1185, + "역명": "동래", + "시간": "15:04:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2214, + "역명": "동래", + "시간": "17:18:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1243, + "역명": "동래", + "시간": "18:04:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2268, + "역명": "동래", + "시간": "20:17:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1289, + "역명": "동래", + "시간": "21:06:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2310, + "역명": "동래", + "시간": "23:21:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2030, + "역명": "동래", + "시간": "08:14:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1063, + "역명": "동래", + "시간": "08:58:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2090, + "역명": "동래", + "시간": "11:09:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1121, + "역명": "동래", + "시간": "11:52:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2148, + "역명": "동래", + "시간": "14:03:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1179, + "역명": "동래", + "시간": "14:46:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2206, + "역명": "동래", + "시간": "16:56:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1237, + "역명": "동래", + "시간": "17:43:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2262, + "역명": "동래", + "시간": "19:53:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1283, + "역명": "동래", + "시간": "20:39:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2038, + "역명": "동래", + "시간": "08:34:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2034, + "역명": "동래", + "시간": "08:24:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1067, + "역명": "동래", + "시간": "09:10:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2094, + "역명": "동래", + "시간": "11:21:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1125, + "역명": "동래", + "시간": "12:04:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2152, + "역명": "동래", + "시간": "14:15:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1183, + "역명": "동래", + "시간": "14:58:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2212, + "역명": "동래", + "시간": "17:13:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1241, + "역명": "동래", + "시간": "17:57:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2266, + "역명": "동래", + "시간": "20:09:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1287, + "역명": "동래", + "시간": "20:56:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 20, + "열번": 2308, + "역명": "동래", + "시간": "23:09:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2040, + "역명": "동래", + "시간": "08:39:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1071, + "역명": "동래", + "시간": "09:22:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2098, + "역명": "동래", + "시간": "11:33:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1129, + "역명": "동래", + "시간": "12:16:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2156, + "역명": "동래", + "시간": "14:27:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1187, + "역명": "동래", + "시간": "15:10:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2216, + "역명": "동래", + "시간": "17:24:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2044, + "역명": "동래", + "시간": "08:51:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1075, + "역명": "동래", + "시간": "09:34:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2102, + "역명": "동래", + "시간": "11:45:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1133, + "역명": "동래", + "시간": "12:28:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2160, + "역명": "동래", + "시간": "14:39:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1191, + "역명": "동래", + "시간": "15:22:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2220, + "역명": "동래", + "시간": "17:35:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1247, + "역명": "동래", + "시간": "18:18:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2272, + "역명": "동래", + "시간": "20:33:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1291, + "역명": "동래", + "시간": "21:16:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 22, + "열번": 2312, + "역명": "동래", + "시간": "23:33:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 23, + "열번": 1013, + "역명": "동래", + "시간": "06:30:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2042, + "역명": "동래", + "시간": "08:45:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1073, + "역명": "동래", + "시간": "09:28:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2100, + "역명": "동래", + "시간": "11:39:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1131, + "역명": "동래", + "시간": "12:22:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2158, + "역명": "동래", + "시간": "14:33:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1189, + "역명": "동래", + "시간": "15:16:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2218, + "역명": "동래", + "시간": "17:29:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1245, + "역명": "동래", + "시간": "18:11:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2270, + "역명": "동래", + "시간": "20:25:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "동래", + "시간": "09:03:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1079, + "역명": "동래", + "시간": "09:46:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2106, + "역명": "동래", + "시간": "11:57:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1137, + "역명": "동래", + "시간": "12:40:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2164, + "역명": "동래", + "시간": "14:51:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1195, + "역명": "동래", + "시간": "15:34:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2224, + "역명": "동래", + "시간": "17:46:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1251, + "역명": "동래", + "시간": "18:32:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "동래", + "시간": "06:58:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2052, + "역명": "동래", + "시간": "09:15:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1083, + "역명": "동래", + "시간": "09:58:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2110, + "역명": "동래", + "시간": "12:09:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1141, + "역명": "동래", + "시간": "12:52:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2168, + "역명": "동래", + "시간": "15:03:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1199, + "역명": "동래", + "시간": "15:46:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2228, + "역명": "동래", + "시간": "17:57:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1253, + "역명": "동래", + "시간": "18:39:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2276, + "역명": "동래", + "시간": "20:49:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1295, + "역명": "동래", + "시간": "21:36:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2314, + "역명": "동래", + "시간": "23:45:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 26, + "열번": 1029, + "역명": "동래", + "시간": "07:30:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1025, + "역명": "동래", + "시간": "07:20:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2058, + "역명": "동래", + "시간": "09:33:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1089, + "역명": "동래", + "시간": "10:16:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2116, + "역명": "동래", + "시간": "12:27:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1147, + "역명": "동래", + "시간": "13:10:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2174, + "역명": "동래", + "시간": "15:21:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1205, + "역명": "동래", + "시간": "16:04:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 27, + "열번": 2234, + "역명": "동래", + "시간": "18:14:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 28, + "열번": 1041, + "역명": "동래", + "시간": "08:00:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1031, + "역명": "동래", + "시간": "07:35:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2062, + "역명": "동래", + "시간": "09:45:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1093, + "역명": "동래", + "시간": "10:28:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2120, + "역명": "동래", + "시간": "12:39:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1151, + "역명": "동래", + "시간": "13:22:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2178, + "역명": "동래", + "시간": "15:33:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1209, + "역명": "동래", + "시간": "16:16:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2238, + "역명": "동래", + "시간": "18:26:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1261, + "역명": "동래", + "시간": "19:11:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2284, + "역명": "동래", + "시간": "21:21:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 29, + "열번": 1301, + "역명": "동래", + "시간": "22:06:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1049, + "역명": "동래", + "시간": "08:20:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2078, + "역명": "동래", + "시간": "10:33:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1109, + "역명": "동래", + "시간": "11:16:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2136, + "역명": "동래", + "시간": "13:27:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1167, + "역명": "동래", + "시간": "14:10:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2194, + "역명": "동래", + "시간": "16:21:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1225, + "역명": "동래", + "시간": "17:04:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1035, + "역명": "동래", + "시간": "07:45:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2066, + "역명": "동래", + "시간": "09:57:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1097, + "역명": "동래", + "시간": "10:40:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2124, + "역명": "동래", + "시간": "12:51:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1155, + "역명": "동래", + "시간": "13:34:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2182, + "역명": "동래", + "시간": "15:45:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1213, + "역명": "동래", + "시간": "16:28:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2242, + "역명": "동래", + "시간": "18:39:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1265, + "역명": "동래", + "시간": "19:27:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2288, + "역명": "동래", + "시간": "21:37:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1305, + "역명": "동래", + "시간": "22:26:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 32, + "열번": 2210, + "역명": "동래", + "시간": "17:07:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 32, + "열번": 1239, + "역명": "동래", + "시간": "17:50:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 32, + "열번": 2264, + "역명": "동래", + "시간": "20:01:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 32, + "열번": 1285, + "역명": "동래", + "시간": "20:47:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 32, + "열번": 2306, + "역명": "동래", + "시간": "22:59:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 32, + "열번": 7931, + "역명": "동래", + "시간": "23:47:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1037, + "역명": "동래", + "시간": "07:50:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2068, + "역명": "동래", + "시간": "10:03:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1099, + "역명": "동래", + "시간": "10:46:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2126, + "역명": "동래", + "시간": "12:57:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1157, + "역명": "동래", + "시간": "13:40:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2184, + "역명": "동래", + "시간": "15:51:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1215, + "역명": "동래", + "시간": "16:34:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2244, + "역명": "동래", + "시간": "18:46:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1267, + "역명": "동래", + "시간": "19:35:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 33, + "열번": 2290, + "역명": "동래", + "시간": "21:45:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1045, + "역명": "동래", + "시간": "08:10:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2074, + "역명": "동래", + "시간": "10:21:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1105, + "역명": "동래", + "시간": "11:04:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2132, + "역명": "동래", + "시간": "13:15:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1163, + "역명": "동래", + "시간": "13:58:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2190, + "역명": "동래", + "시간": "16:09:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1221, + "역명": "동래", + "시간": "16:52:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2250, + "역명": "동래", + "시간": "19:07:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1271, + "역명": "동래", + "시간": "19:51:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2294, + "역명": "동래", + "시간": "22:01:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1309, + "역명": "동래", + "시간": "22:47:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1055, + "역명": "동래", + "시간": "08:35:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2084, + "역명": "동래", + "시간": "10:51:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1115, + "역명": "동래", + "시간": "11:34:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2142, + "역명": "동래", + "시간": "13:45:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1173, + "역명": "동래", + "시간": "14:28:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2200, + "역명": "동래", + "시간": "16:39:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1231, + "역명": "동래", + "시간": "17:22:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2258, + "역명": "동래", + "시간": "19:37:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1279, + "역명": "동래", + "시간": "20:23:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2302, + "역명": "동래", + "시간": "22:39:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1315, + "역명": "동래", + "시간": "23:22:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "교대앞", + "시간": "06:03:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "교대앞", + "시간": "06:51:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2050, + "역명": "교대앞", + "시간": "09:07:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1081, + "역명": "교대앞", + "시간": "09:54:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2108, + "역명": "교대앞", + "시간": "12:01:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1139, + "역명": "교대앞", + "시간": "12:48:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2166, + "역명": "교대앞", + "시간": "14:55:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1197, + "역명": "교대앞", + "시간": "15:42:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2226, + "역명": "교대앞", + "시간": "17:49:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "교대앞", + "시간": "05:49:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "교대앞", + "시간": "06:42:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "교대앞", + "시간": "08:55:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1077, + "역명": "교대앞", + "시간": "09:42:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2104, + "역명": "교대앞", + "시간": "11:49:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1135, + "역명": "교대앞", + "시간": "12:36:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2162, + "역명": "교대앞", + "시간": "14:43:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1193, + "역명": "교대앞", + "시간": "15:30:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2222, + "역명": "교대앞", + "시간": "17:38:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1249, + "역명": "교대앞", + "시간": "18:27:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2274, + "역명": "교대앞", + "시간": "20:39:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1293, + "역명": "교대앞", + "시간": "21:28:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "교대앞", + "시간": "06:16:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "교대앞", + "시간": "07:09:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2054, + "역명": "교대앞", + "시간": "09:19:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1085, + "역명": "교대앞", + "시간": "10:06:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2112, + "역명": "교대앞", + "시간": "12:13:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1143, + "역명": "교대앞", + "시간": "13:00:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2170, + "역명": "교대앞", + "시간": "15:07:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1201, + "역명": "교대앞", + "시간": "15:54:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2230, + "역명": "교대앞", + "시간": "18:00:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1255, + "역명": "교대앞", + "시간": "18:49:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2278, + "역명": "교대앞", + "시간": "20:55:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "교대앞", + "시간": "06:29:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1023, + "역명": "교대앞", + "시간": "07:16:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2056, + "역명": "교대앞", + "시간": "09:25:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1087, + "역명": "교대앞", + "시간": "10:12:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2114, + "역명": "교대앞", + "시간": "12:19:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1145, + "역명": "교대앞", + "시간": "13:06:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2172, + "역명": "교대앞", + "시간": "15:13:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1203, + "역명": "교대앞", + "시간": "16:00:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2232, + "역명": "교대앞", + "시간": "18:06:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1257, + "역명": "교대앞", + "시간": "18:57:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2280, + "역명": "교대앞", + "시간": "21:03:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1297, + "역명": "교대앞", + "시간": "21:48:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2316, + "역명": "교대앞", + "시간": "23:55:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2012, + "역명": "교대앞", + "시간": "07:05:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1039, + "역명": "교대앞", + "시간": "07:57:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2070, + "역명": "교대앞", + "시간": "10:07:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1101, + "역명": "교대앞", + "시간": "10:54:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2128, + "역명": "교대앞", + "시간": "13:01:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1159, + "역명": "교대앞", + "시간": "13:48:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2186, + "역명": "교대앞", + "시간": "15:55:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1217, + "역명": "교대앞", + "시간": "16:42:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2246, + "역명": "교대앞", + "시간": "18:51:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2008, + "역명": "교대앞", + "시간": "06:41:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1027, + "역명": "교대앞", + "시간": "07:27:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2060, + "역명": "교대앞", + "시간": "09:37:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1091, + "역명": "교대앞", + "시간": "10:24:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2118, + "역명": "교대앞", + "시간": "12:31:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1149, + "역명": "교대앞", + "시간": "13:18:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2176, + "역명": "교대앞", + "시간": "15:25:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1207, + "역명": "교대앞", + "시간": "16:12:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2236, + "역명": "교대앞", + "시간": "18:18:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1259, + "역명": "교대앞", + "시간": "19:05:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2282, + "역명": "교대앞", + "시간": "21:11:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1299, + "역명": "교대앞", + "시간": "21:58:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 6, + "열번": 2318, + "역명": "교대앞", + "시간": "00:11:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1001, + "역명": "교대앞", + "시간": "05:26:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2018, + "역명": "교대앞", + "시간": "07:37:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1051, + "역명": "교대앞", + "시간": "08:27:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2080, + "역명": "교대앞", + "시간": "10:37:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1111, + "역명": "교대앞", + "시간": "11:24:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2138, + "역명": "교대앞", + "시간": "13:31:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1169, + "역명": "교대앞", + "시간": "14:18:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2196, + "역명": "교대앞", + "시간": "16:25:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1227, + "역명": "교대앞", + "시간": "17:12:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2254, + "역명": "교대앞", + "시간": "19:19:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1275, + "역명": "교대앞", + "시간": "20:09:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 7, + "열번": 2298, + "역명": "교대앞", + "시간": "22:17:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2010, + "역명": "교대앞", + "시간": "06:53:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1033, + "역명": "교대앞", + "시간": "07:42:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2064, + "역명": "교대앞", + "시간": "09:49:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1095, + "역명": "교대앞", + "시간": "10:36:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2122, + "역명": "교대앞", + "시간": "12:43:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1153, + "역명": "교대앞", + "시간": "13:30:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2180, + "역명": "교대앞", + "시간": "15:37:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1211, + "역명": "교대앞", + "시간": "16:24:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2240, + "역명": "교대앞", + "시간": "18:30:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1263, + "역명": "교대앞", + "시간": "19:21:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2286, + "역명": "교대앞", + "시간": "21:27:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1303, + "역명": "교대앞", + "시간": "22:18:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 9, + "열번": 1003, + "역명": "교대앞", + "시간": "05:37:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2020, + "역명": "교대앞", + "시간": "07:45:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1053, + "역명": "교대앞", + "시간": "08:32:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2082, + "역명": "교대앞", + "시간": "10:43:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1113, + "역명": "교대앞", + "시간": "11:30:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2140, + "역명": "교대앞", + "시간": "13:37:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1171, + "역명": "교대앞", + "시간": "14:24:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2198, + "역명": "교대앞", + "시간": "16:31:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1229, + "역명": "교대앞", + "시간": "17:18:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2256, + "역명": "교대앞", + "시간": "19:27:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1277, + "역명": "교대앞", + "시간": "20:17:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2300, + "역명": "교대앞", + "시간": "22:27:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1313, + "역명": "교대앞", + "시간": "23:12:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2014, + "역명": "교대앞", + "시간": "07:17:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1043, + "역명": "교대앞", + "시간": "08:07:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2072, + "역명": "교대앞", + "시간": "10:13:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1103, + "역명": "교대앞", + "시간": "11:00:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2130, + "역명": "교대앞", + "시간": "13:07:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1161, + "역명": "교대앞", + "시간": "13:54:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2188, + "역명": "교대앞", + "시간": "16:01:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1219, + "역명": "교대앞", + "시간": "16:48:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2248, + "역명": "교대앞", + "시간": "18:58:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1269, + "역명": "교대앞", + "시간": "19:45:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2292, + "역명": "교대앞", + "시간": "21:51:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1307, + "역명": "교대앞", + "시간": "22:38:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 11, + "열번": 2022, + "역명": "교대앞", + "시간": "07:51:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2016, + "역명": "교대앞", + "시간": "07:28:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1047, + "역명": "교대앞", + "시간": "08:17:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2076, + "역명": "교대앞", + "시간": "10:25:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1107, + "역명": "교대앞", + "시간": "11:12:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2134, + "역명": "교대앞", + "시간": "13:19:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1165, + "역명": "교대앞", + "시간": "14:06:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "교대앞", + "시간": "16:13:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1223, + "역명": "교대앞", + "시간": "17:00:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2252, + "역명": "교대앞", + "시간": "19:12:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1273, + "역명": "교대앞", + "시간": "20:01:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2296, + "역명": "교대앞", + "시간": "22:07:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1311, + "역명": "교대앞", + "시간": "23:00:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1005, + "역명": "교대앞", + "시간": "05:48:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2024, + "역명": "교대앞", + "시간": "07:57:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1057, + "역명": "교대앞", + "시간": "08:43:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2086, + "역명": "교대앞", + "시간": "10:55:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1117, + "역명": "교대앞", + "시간": "11:42:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2144, + "역명": "교대앞", + "시간": "13:49:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1175, + "역명": "교대앞", + "시간": "14:36:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2202, + "역명": "교대앞", + "시간": "16:43:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1233, + "역명": "교대앞", + "시간": "17:31:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2260, + "역명": "교대앞", + "시간": "19:43:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1281, + "역명": "교대앞", + "시간": "20:33:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2304, + "역명": "교대앞", + "시간": "22:47:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 13, + "열번": 1317, + "역명": "교대앞", + "시간": "23:34:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2026, + "역명": "교대앞", + "시간": "08:02:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 14, + "열번": 1059, + "역명": "교대앞", + "시간": "08:48:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1009, + "역명": "교대앞", + "시간": "06:10:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2032, + "역명": "교대앞", + "시간": "08:17:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1065, + "역명": "교대앞", + "시간": "09:06:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2092, + "역명": "교대앞", + "시간": "11:13:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1123, + "역명": "교대앞", + "시간": "12:00:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2150, + "역명": "교대앞", + "시간": "14:07:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1181, + "역명": "교대앞", + "시간": "14:54:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2208, + "역명": "교대앞", + "시간": "17:00:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 16, + "열번": 1007, + "역명": "교대앞", + "시간": "05:59:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2028, + "역명": "교대앞", + "시간": "08:07:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1061, + "역명": "교대앞", + "시간": "08:54:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2088, + "역명": "교대앞", + "시간": "11:01:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1119, + "역명": "교대앞", + "시간": "11:48:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2146, + "역명": "교대앞", + "시간": "13:55:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1177, + "역명": "교대앞", + "시간": "14:42:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2204, + "역명": "교대앞", + "시간": "16:49:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1235, + "역명": "교대앞", + "시간": "17:38:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 17, + "열번": 1011, + "역명": "교대앞", + "시간": "06:21:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2036, + "역명": "교대앞", + "시간": "08:27:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1069, + "역명": "교대앞", + "시간": "09:18:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2096, + "역명": "교대앞", + "시간": "11:25:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1127, + "역명": "교대앞", + "시간": "12:12:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2154, + "역명": "교대앞", + "시간": "14:19:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1185, + "역명": "교대앞", + "시간": "15:06:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2214, + "역명": "교대앞", + "시간": "17:16:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1243, + "역명": "교대앞", + "시간": "18:06:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2268, + "역명": "교대앞", + "시간": "20:15:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1289, + "역명": "교대앞", + "시간": "21:08:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2310, + "역명": "교대앞", + "시간": "23:19:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2030, + "역명": "교대앞", + "시간": "08:12:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1063, + "역명": "교대앞", + "시간": "09:00:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2090, + "역명": "교대앞", + "시간": "11:07:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1121, + "역명": "교대앞", + "시간": "11:54:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2148, + "역명": "교대앞", + "시간": "14:01:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1179, + "역명": "교대앞", + "시간": "14:48:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2206, + "역명": "교대앞", + "시간": "16:54:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1237, + "역명": "교대앞", + "시간": "17:45:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2262, + "역명": "교대앞", + "시간": "19:51:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1283, + "역명": "교대앞", + "시간": "20:41:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2038, + "역명": "교대앞", + "시간": "08:32:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2034, + "역명": "교대앞", + "시간": "08:22:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1067, + "역명": "교대앞", + "시간": "09:12:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2094, + "역명": "교대앞", + "시간": "11:19:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1125, + "역명": "교대앞", + "시간": "12:06:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2152, + "역명": "교대앞", + "시간": "14:13:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1183, + "역명": "교대앞", + "시간": "15:00:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2212, + "역명": "교대앞", + "시간": "17:11:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1241, + "역명": "교대앞", + "시간": "17:59:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2266, + "역명": "교대앞", + "시간": "20:07:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1287, + "역명": "교대앞", + "시간": "20:58:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 20, + "열번": 2308, + "역명": "교대앞", + "시간": "23:07:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2040, + "역명": "교대앞", + "시간": "08:37:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1071, + "역명": "교대앞", + "시간": "09:24:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2098, + "역명": "교대앞", + "시간": "11:31:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1129, + "역명": "교대앞", + "시간": "12:18:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2156, + "역명": "교대앞", + "시간": "14:25:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1187, + "역명": "교대앞", + "시간": "15:12:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2216, + "역명": "교대앞", + "시간": "17:22:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2044, + "역명": "교대앞", + "시간": "08:49:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1075, + "역명": "교대앞", + "시간": "09:36:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2102, + "역명": "교대앞", + "시간": "11:43:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1133, + "역명": "교대앞", + "시간": "12:30:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2160, + "역명": "교대앞", + "시간": "14:37:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1191, + "역명": "교대앞", + "시간": "15:24:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2220, + "역명": "교대앞", + "시간": "17:33:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1247, + "역명": "교대앞", + "시간": "18:20:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2272, + "역명": "교대앞", + "시간": "20:31:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1291, + "역명": "교대앞", + "시간": "21:18:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 22, + "열번": 2312, + "역명": "교대앞", + "시간": "23:31:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 23, + "열번": 1013, + "역명": "교대앞", + "시간": "06:32:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2042, + "역명": "교대앞", + "시간": "08:43:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1073, + "역명": "교대앞", + "시간": "09:30:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2100, + "역명": "교대앞", + "시간": "11:37:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1131, + "역명": "교대앞", + "시간": "12:24:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2158, + "역명": "교대앞", + "시간": "14:31:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1189, + "역명": "교대앞", + "시간": "15:18:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2218, + "역명": "교대앞", + "시간": "17:27:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1245, + "역명": "교대앞", + "시간": "18:13:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2270, + "역명": "교대앞", + "시간": "20:23:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "교대앞", + "시간": "09:01:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1079, + "역명": "교대앞", + "시간": "09:48:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2106, + "역명": "교대앞", + "시간": "11:55:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1137, + "역명": "교대앞", + "시간": "12:42:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2164, + "역명": "교대앞", + "시간": "14:49:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1195, + "역명": "교대앞", + "시간": "15:36:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2224, + "역명": "교대앞", + "시간": "17:44:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1251, + "역명": "교대앞", + "시간": "18:34:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "교대앞", + "시간": "07:00:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2052, + "역명": "교대앞", + "시간": "09:13:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1083, + "역명": "교대앞", + "시간": "10:00:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2110, + "역명": "교대앞", + "시간": "12:07:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1141, + "역명": "교대앞", + "시간": "12:54:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2168, + "역명": "교대앞", + "시간": "15:01:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1199, + "역명": "교대앞", + "시간": "15:48:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2228, + "역명": "교대앞", + "시간": "17:55:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1253, + "역명": "교대앞", + "시간": "18:41:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2276, + "역명": "교대앞", + "시간": "20:47:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1295, + "역명": "교대앞", + "시간": "21:38:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2314, + "역명": "교대앞", + "시간": "23:43:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 26, + "열번": 1029, + "역명": "교대앞", + "시간": "07:32:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1025, + "역명": "교대앞", + "시간": "07:22:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2058, + "역명": "교대앞", + "시간": "09:31:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1089, + "역명": "교대앞", + "시간": "10:18:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2116, + "역명": "교대앞", + "시간": "12:25:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1147, + "역명": "교대앞", + "시간": "13:12:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2174, + "역명": "교대앞", + "시간": "15:19:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1205, + "역명": "교대앞", + "시간": "16:06:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 27, + "열번": 2234, + "역명": "교대앞", + "시간": "18:12:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 28, + "열번": 1041, + "역명": "교대앞", + "시간": "08:02:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1031, + "역명": "교대앞", + "시간": "07:37:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2062, + "역명": "교대앞", + "시간": "09:43:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1093, + "역명": "교대앞", + "시간": "10:30:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2120, + "역명": "교대앞", + "시간": "12:37:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1151, + "역명": "교대앞", + "시간": "13:24:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2178, + "역명": "교대앞", + "시간": "15:31:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1209, + "역명": "교대앞", + "시간": "16:18:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2238, + "역명": "교대앞", + "시간": "18:24:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1261, + "역명": "교대앞", + "시간": "19:13:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2284, + "역명": "교대앞", + "시간": "21:19:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 29, + "열번": 1301, + "역명": "교대앞", + "시간": "22:08:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1049, + "역명": "교대앞", + "시간": "08:22:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2078, + "역명": "교대앞", + "시간": "10:31:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1109, + "역명": "교대앞", + "시간": "11:18:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2136, + "역명": "교대앞", + "시간": "13:25:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1167, + "역명": "교대앞", + "시간": "14:12:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2194, + "역명": "교대앞", + "시간": "16:19:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1225, + "역명": "교대앞", + "시간": "17:06:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1035, + "역명": "교대앞", + "시간": "07:47:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2066, + "역명": "교대앞", + "시간": "09:55:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1097, + "역명": "교대앞", + "시간": "10:42:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2124, + "역명": "교대앞", + "시간": "12:49:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1155, + "역명": "교대앞", + "시간": "13:36:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2182, + "역명": "교대앞", + "시간": "15:43:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1213, + "역명": "교대앞", + "시간": "16:30:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2242, + "역명": "교대앞", + "시간": "18:37:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1265, + "역명": "교대앞", + "시간": "19:29:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2288, + "역명": "교대앞", + "시간": "21:35:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1305, + "역명": "교대앞", + "시간": "22:28:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 32, + "열번": 2210, + "역명": "교대앞", + "시간": "17:05:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 32, + "열번": 1239, + "역명": "교대앞", + "시간": "17:52:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 32, + "열번": 2264, + "역명": "교대앞", + "시간": "19:59:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 32, + "열번": 1285, + "역명": "교대앞", + "시간": "20:49:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 32, + "열번": 2306, + "역명": "교대앞", + "시간": "22:57:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 32, + "열번": 7931, + "역명": "교대앞", + "시간": "23:49:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1037, + "역명": "교대앞", + "시간": "07:52:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2068, + "역명": "교대앞", + "시간": "10:01:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1099, + "역명": "교대앞", + "시간": "10:48:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2126, + "역명": "교대앞", + "시간": "12:55:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1157, + "역명": "교대앞", + "시간": "13:42:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2184, + "역명": "교대앞", + "시간": "15:49:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1215, + "역명": "교대앞", + "시간": "16:36:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2244, + "역명": "교대앞", + "시간": "18:44:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1267, + "역명": "교대앞", + "시간": "19:37:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 33, + "열번": 2290, + "역명": "교대앞", + "시간": "21:43:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1045, + "역명": "교대앞", + "시간": "08:12:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2074, + "역명": "교대앞", + "시간": "10:19:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1105, + "역명": "교대앞", + "시간": "11:06:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2132, + "역명": "교대앞", + "시간": "13:13:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1163, + "역명": "교대앞", + "시간": "14:00:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2190, + "역명": "교대앞", + "시간": "16:07:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1221, + "역명": "교대앞", + "시간": "16:54:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2250, + "역명": "교대앞", + "시간": "19:05:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1271, + "역명": "교대앞", + "시간": "19:53:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2294, + "역명": "교대앞", + "시간": "21:59:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1309, + "역명": "교대앞", + "시간": "22:49:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1055, + "역명": "교대앞", + "시간": "08:37:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2084, + "역명": "교대앞", + "시간": "10:49:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1115, + "역명": "교대앞", + "시간": "11:36:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2142, + "역명": "교대앞", + "시간": "13:43:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1173, + "역명": "교대앞", + "시간": "14:30:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2200, + "역명": "교대앞", + "시간": "16:37:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1231, + "역명": "교대앞", + "시간": "17:24:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2258, + "역명": "교대앞", + "시간": "19:35:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1279, + "역명": "교대앞", + "시간": "20:25:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2302, + "역명": "교대앞", + "시간": "22:37:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1315, + "역명": "교대앞", + "시간": "23:24:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "연산", + "시간": "06:00:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "연산", + "시간": "06:53:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2050, + "역명": "연산", + "시간": "09:05:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1081, + "역명": "연산", + "시간": "09:56:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2108, + "역명": "연산", + "시간": "11:59:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1139, + "역명": "연산", + "시간": "12:50:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2166, + "역명": "연산", + "시간": "14:53:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1197, + "역명": "연산", + "시간": "15:44:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2226, + "역명": "연산", + "시간": "17:47:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "연산", + "시간": "05:45:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "연산", + "시간": "06:44:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "연산", + "시간": "08:53:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1077, + "역명": "연산", + "시간": "09:44:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2104, + "역명": "연산", + "시간": "11:47:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1135, + "역명": "연산", + "시간": "12:38:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2162, + "역명": "연산", + "시간": "14:41:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1193, + "역명": "연산", + "시간": "15:32:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2222, + "역명": "연산", + "시간": "17:36:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1249, + "역명": "연산", + "시간": "18:29:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2274, + "역명": "연산", + "시간": "20:37:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1293, + "역명": "연산", + "시간": "21:30:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "연산", + "시간": "06:14:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "연산", + "시간": "07:11:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2054, + "역명": "연산", + "시간": "09:17:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1085, + "역명": "연산", + "시간": "10:08:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2112, + "역명": "연산", + "시간": "12:11:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1143, + "역명": "연산", + "시간": "13:02:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2170, + "역명": "연산", + "시간": "15:05:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1201, + "역명": "연산", + "시간": "15:56:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2230, + "역명": "연산", + "시간": "17:58:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1255, + "역명": "연산", + "시간": "18:51:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2278, + "역명": "연산", + "시간": "20:53:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "연산", + "시간": "06:26:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1023, + "역명": "연산", + "시간": "07:18:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2056, + "역명": "연산", + "시간": "09:23:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1087, + "역명": "연산", + "시간": "10:14:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2114, + "역명": "연산", + "시간": "12:17:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1145, + "역명": "연산", + "시간": "13:08:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2172, + "역명": "연산", + "시간": "15:11:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1203, + "역명": "연산", + "시간": "16:02:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2232, + "역명": "연산", + "시간": "18:04:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1257, + "역명": "연산", + "시간": "18:59:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2280, + "역명": "연산", + "시간": "21:01:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1297, + "역명": "연산", + "시간": "21:50:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2316, + "역명": "연산", + "시간": "23:52:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2012, + "역명": "연산", + "시간": "07:02:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1039, + "역명": "연산", + "시간": "07:59:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2070, + "역명": "연산", + "시간": "10:05:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1101, + "역명": "연산", + "시간": "10:56:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2128, + "역명": "연산", + "시간": "12:59:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1159, + "역명": "연산", + "시간": "13:50:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2186, + "역명": "연산", + "시간": "15:53:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1217, + "역명": "연산", + "시간": "16:44:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2246, + "역명": "연산", + "시간": "18:49:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2008, + "역명": "연산", + "시간": "06:38:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1027, + "역명": "연산", + "시간": "07:29:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2060, + "역명": "연산", + "시간": "09:35:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1091, + "역명": "연산", + "시간": "10:26:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2118, + "역명": "연산", + "시간": "12:29:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1149, + "역명": "연산", + "시간": "13:20:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2176, + "역명": "연산", + "시간": "15:23:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1207, + "역명": "연산", + "시간": "16:14:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2236, + "역명": "연산", + "시간": "18:16:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1259, + "역명": "연산", + "시간": "19:07:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2282, + "역명": "연산", + "시간": "21:09:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1299, + "역명": "연산", + "시간": "22:00:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 6, + "열번": 2318, + "역명": "연산", + "시간": "00:07:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1001, + "역명": "연산", + "시간": "05:28:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2018, + "역명": "연산", + "시간": "07:34:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1051, + "역명": "연산", + "시간": "08:29:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2080, + "역명": "연산", + "시간": "10:35:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1111, + "역명": "연산", + "시간": "11:26:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2138, + "역명": "연산", + "시간": "13:29:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1169, + "역명": "연산", + "시간": "14:20:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2196, + "역명": "연산", + "시간": "16:23:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1227, + "역명": "연산", + "시간": "17:14:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2254, + "역명": "연산", + "시간": "19:17:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1275, + "역명": "연산", + "시간": "20:11:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 7, + "열번": 2298, + "역명": "연산", + "시간": "22:15:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2010, + "역명": "연산", + "시간": "06:50:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1033, + "역명": "연산", + "시간": "07:44:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2064, + "역명": "연산", + "시간": "09:47:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1095, + "역명": "연산", + "시간": "10:38:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2122, + "역명": "연산", + "시간": "12:41:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1153, + "역명": "연산", + "시간": "13:32:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2180, + "역명": "연산", + "시간": "15:35:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1211, + "역명": "연산", + "시간": "16:26:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2240, + "역명": "연산", + "시간": "18:28:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1263, + "역명": "연산", + "시간": "19:23:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2286, + "역명": "연산", + "시간": "21:25:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1303, + "역명": "연산", + "시간": "22:20:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 9, + "열번": 1003, + "역명": "연산", + "시간": "05:39:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2020, + "역명": "연산", + "시간": "07:43:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1053, + "역명": "연산", + "시간": "08:34:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2082, + "역명": "연산", + "시간": "10:41:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1113, + "역명": "연산", + "시간": "11:32:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2140, + "역명": "연산", + "시간": "13:35:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1171, + "역명": "연산", + "시간": "14:26:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2198, + "역명": "연산", + "시간": "16:29:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1229, + "역명": "연산", + "시간": "17:20:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2256, + "역명": "연산", + "시간": "19:25:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1277, + "역명": "연산", + "시간": "20:19:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2300, + "역명": "연산", + "시간": "22:25:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1313, + "역명": "연산", + "시간": "23:14:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2014, + "역명": "연산", + "시간": "07:14:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1043, + "역명": "연산", + "시간": "08:09:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2072, + "역명": "연산", + "시간": "10:11:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1103, + "역명": "연산", + "시간": "11:02:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2130, + "역명": "연산", + "시간": "13:05:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1161, + "역명": "연산", + "시간": "13:56:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2188, + "역명": "연산", + "시간": "15:59:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1219, + "역명": "연산", + "시간": "16:50:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2248, + "역명": "연산", + "시간": "18:56:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1269, + "역명": "연산", + "시간": "19:47:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2292, + "역명": "연산", + "시간": "21:49:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1307, + "역명": "연산", + "시간": "22:40:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 11, + "열번": 2022, + "역명": "연산", + "시간": "07:49:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2016, + "역명": "연산", + "시간": "07:25:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1047, + "역명": "연산", + "시간": "08:19:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2076, + "역명": "연산", + "시간": "10:23:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1107, + "역명": "연산", + "시간": "11:14:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2134, + "역명": "연산", + "시간": "13:17:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1165, + "역명": "연산", + "시간": "14:08:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "연산", + "시간": "16:11:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1223, + "역명": "연산", + "시간": "17:02:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2252, + "역명": "연산", + "시간": "19:10:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1273, + "역명": "연산", + "시간": "20:03:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2296, + "역명": "연산", + "시간": "22:05:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1311, + "역명": "연산", + "시간": "23:02:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1005, + "역명": "연산", + "시간": "05:50:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2024, + "역명": "연산", + "시간": "07:55:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1057, + "역명": "연산", + "시간": "08:45:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2086, + "역명": "연산", + "시간": "10:53:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1117, + "역명": "연산", + "시간": "11:44:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2144, + "역명": "연산", + "시간": "13:47:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1175, + "역명": "연산", + "시간": "14:38:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2202, + "역명": "연산", + "시간": "16:41:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1233, + "역명": "연산", + "시간": "17:33:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2260, + "역명": "연산", + "시간": "19:41:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1281, + "역명": "연산", + "시간": "20:35:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2304, + "역명": "연산", + "시간": "22:45:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 13, + "열번": 1317, + "역명": "연산", + "시간": "23:36:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2026, + "역명": "연산", + "시간": "08:00:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 14, + "열번": 1059, + "역명": "연산", + "시간": "08:50:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1009, + "역명": "연산", + "시간": "06:12:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2032, + "역명": "연산", + "시간": "08:15:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1065, + "역명": "연산", + "시간": "09:08:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2092, + "역명": "연산", + "시간": "11:11:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1123, + "역명": "연산", + "시간": "12:02:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2150, + "역명": "연산", + "시간": "14:05:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1181, + "역명": "연산", + "시간": "14:56:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2208, + "역명": "연산", + "시간": "16:57:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 16, + "열번": 1007, + "역명": "연산", + "시간": "06:01:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2028, + "역명": "연산", + "시간": "08:05:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1061, + "역명": "연산", + "시간": "08:56:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2088, + "역명": "연산", + "시간": "10:59:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1119, + "역명": "연산", + "시간": "11:50:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2146, + "역명": "연산", + "시간": "13:53:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1177, + "역명": "연산", + "시간": "14:44:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2204, + "역명": "연산", + "시간": "16:46:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1235, + "역명": "연산", + "시간": "17:40:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 17, + "열번": 1011, + "역명": "연산", + "시간": "06:23:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2036, + "역명": "연산", + "시간": "08:25:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1069, + "역명": "연산", + "시간": "09:20:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2096, + "역명": "연산", + "시간": "11:23:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1127, + "역명": "연산", + "시간": "12:14:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2154, + "역명": "연산", + "시간": "14:17:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1185, + "역명": "연산", + "시간": "15:08:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2214, + "역명": "연산", + "시간": "17:14:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1243, + "역명": "연산", + "시간": "18:08:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2268, + "역명": "연산", + "시간": "20:13:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1289, + "역명": "연산", + "시간": "21:10:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2310, + "역명": "연산", + "시간": "23:17:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2030, + "역명": "연산", + "시간": "08:10:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1063, + "역명": "연산", + "시간": "09:02:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2090, + "역명": "연산", + "시간": "11:05:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1121, + "역명": "연산", + "시간": "11:56:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2148, + "역명": "연산", + "시간": "13:59:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1179, + "역명": "연산", + "시간": "14:50:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2206, + "역명": "연산", + "시간": "16:52:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1237, + "역명": "연산", + "시간": "17:47:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2262, + "역명": "연산", + "시간": "19:49:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1283, + "역명": "연산", + "시간": "20:43:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2038, + "역명": "연산", + "시간": "08:30:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2034, + "역명": "연산", + "시간": "08:20:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1067, + "역명": "연산", + "시간": "09:14:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2094, + "역명": "연산", + "시간": "11:17:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1125, + "역명": "연산", + "시간": "12:08:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2152, + "역명": "연산", + "시간": "14:11:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1183, + "역명": "연산", + "시간": "15:02:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2212, + "역명": "연산", + "시간": "17:08:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1241, + "역명": "연산", + "시간": "18:01:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2266, + "역명": "연산", + "시간": "20:05:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1287, + "역명": "연산", + "시간": "21:00:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 20, + "열번": 2308, + "역명": "연산", + "시간": "23:05:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2040, + "역명": "연산", + "시간": "08:35:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1071, + "역명": "연산", + "시간": "09:26:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2098, + "역명": "연산", + "시간": "11:29:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1129, + "역명": "연산", + "시간": "12:20:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2156, + "역명": "연산", + "시간": "14:23:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1187, + "역명": "연산", + "시간": "15:14:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2216, + "역명": "연산", + "시간": "17:19:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2044, + "역명": "연산", + "시간": "08:47:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1075, + "역명": "연산", + "시간": "09:38:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2102, + "역명": "연산", + "시간": "11:41:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1133, + "역명": "연산", + "시간": "12:32:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2160, + "역명": "연산", + "시간": "14:35:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1191, + "역명": "연산", + "시간": "15:26:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2220, + "역명": "연산", + "시간": "17:30:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1247, + "역명": "연산", + "시간": "18:22:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2272, + "역명": "연산", + "시간": "20:29:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1291, + "역명": "연산", + "시간": "21:20:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 22, + "열번": 2312, + "역명": "연산", + "시간": "23:29:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 23, + "열번": 1013, + "역명": "연산", + "시간": "06:34:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2042, + "역명": "연산", + "시간": "08:41:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1073, + "역명": "연산", + "시간": "09:32:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2100, + "역명": "연산", + "시간": "11:35:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1131, + "역명": "연산", + "시간": "12:26:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2158, + "역명": "연산", + "시간": "14:29:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1189, + "역명": "연산", + "시간": "15:20:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2218, + "역명": "연산", + "시간": "17:25:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1245, + "역명": "연산", + "시간": "18:15:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2270, + "역명": "연산", + "시간": "20:21:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "연산", + "시간": "08:59:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1079, + "역명": "연산", + "시간": "09:50:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2106, + "역명": "연산", + "시간": "11:53:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1137, + "역명": "연산", + "시간": "12:44:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2164, + "역명": "연산", + "시간": "14:47:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1195, + "역명": "연산", + "시간": "15:38:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2224, + "역명": "연산", + "시간": "17:41:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1251, + "역명": "연산", + "시간": "18:36:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "연산", + "시간": "07:02:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2052, + "역명": "연산", + "시간": "09:11:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1083, + "역명": "연산", + "시간": "10:02:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2110, + "역명": "연산", + "시간": "12:05:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1141, + "역명": "연산", + "시간": "12:56:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2168, + "역명": "연산", + "시간": "14:59:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1199, + "역명": "연산", + "시간": "15:50:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2228, + "역명": "연산", + "시간": "17:52:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1253, + "역명": "연산", + "시간": "18:43:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2276, + "역명": "연산", + "시간": "20:45:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1295, + "역명": "연산", + "시간": "21:40:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2314, + "역명": "연산", + "시간": "23:41:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 26, + "열번": 1029, + "역명": "연산", + "시간": "07:34:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1025, + "역명": "연산", + "시간": "07:24:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2058, + "역명": "연산", + "시간": "09:29:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1089, + "역명": "연산", + "시간": "10:20:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2116, + "역명": "연산", + "시간": "12:23:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1147, + "역명": "연산", + "시간": "13:14:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2174, + "역명": "연산", + "시간": "15:17:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1205, + "역명": "연산", + "시간": "16:08:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 27, + "열번": 2234, + "역명": "연산", + "시간": "18:10:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 28, + "열번": 1041, + "역명": "연산", + "시간": "08:04:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1031, + "역명": "연산", + "시간": "07:39:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2062, + "역명": "연산", + "시간": "09:41:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1093, + "역명": "연산", + "시간": "10:32:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2120, + "역명": "연산", + "시간": "12:35:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1151, + "역명": "연산", + "시간": "13:26:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2178, + "역명": "연산", + "시간": "15:29:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1209, + "역명": "연산", + "시간": "16:20:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2238, + "역명": "연산", + "시간": "18:22:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1261, + "역명": "연산", + "시간": "19:15:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2284, + "역명": "연산", + "시간": "21:17:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 29, + "열번": 1301, + "역명": "연산", + "시간": "22:10:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1049, + "역명": "연산", + "시간": "08:24:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2078, + "역명": "연산", + "시간": "10:29:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1109, + "역명": "연산", + "시간": "11:20:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2136, + "역명": "연산", + "시간": "13:23:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1167, + "역명": "연산", + "시간": "14:14:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2194, + "역명": "연산", + "시간": "16:17:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1225, + "역명": "연산", + "시간": "17:08:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1035, + "역명": "연산", + "시간": "07:49:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2066, + "역명": "연산", + "시간": "09:53:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1097, + "역명": "연산", + "시간": "10:44:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2124, + "역명": "연산", + "시간": "12:47:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1155, + "역명": "연산", + "시간": "13:38:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2182, + "역명": "연산", + "시간": "15:41:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1213, + "역명": "연산", + "시간": "16:32:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2242, + "역명": "연산", + "시간": "18:35:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1265, + "역명": "연산", + "시간": "19:31:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2288, + "역명": "연산", + "시간": "21:33:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1305, + "역명": "연산", + "시간": "22:30:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 32, + "열번": 2210, + "역명": "연산", + "시간": "17:03:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 32, + "열번": 1239, + "역명": "연산", + "시간": "17:54:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 32, + "열번": 2264, + "역명": "연산", + "시간": "19:57:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 32, + "열번": 1285, + "역명": "연산", + "시간": "20:51:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 32, + "열번": 2306, + "역명": "연산", + "시간": "22:55:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 32, + "열번": 7931, + "역명": "연산", + "시간": "23:51:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1037, + "역명": "연산", + "시간": "07:54:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2068, + "역명": "연산", + "시간": "09:59:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1099, + "역명": "연산", + "시간": "10:50:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2126, + "역명": "연산", + "시간": "12:53:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1157, + "역명": "연산", + "시간": "13:44:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2184, + "역명": "연산", + "시간": "15:47:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1215, + "역명": "연산", + "시간": "16:38:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2244, + "역명": "연산", + "시간": "18:42:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1267, + "역명": "연산", + "시간": "19:39:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 33, + "열번": 2290, + "역명": "연산", + "시간": "21:41:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1045, + "역명": "연산", + "시간": "08:14:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2074, + "역명": "연산", + "시간": "10:17:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1105, + "역명": "연산", + "시간": "11:08:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2132, + "역명": "연산", + "시간": "13:11:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1163, + "역명": "연산", + "시간": "14:02:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2190, + "역명": "연산", + "시간": "16:05:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1221, + "역명": "연산", + "시간": "16:56:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2250, + "역명": "연산", + "시간": "19:03:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1271, + "역명": "연산", + "시간": "19:55:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2294, + "역명": "연산", + "시간": "21:57:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1309, + "역명": "연산", + "시간": "22:51:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1055, + "역명": "연산", + "시간": "08:39:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2084, + "역명": "연산", + "시간": "10:47:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1115, + "역명": "연산", + "시간": "11:38:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2142, + "역명": "연산", + "시간": "13:41:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1173, + "역명": "연산", + "시간": "14:32:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2200, + "역명": "연산", + "시간": "16:35:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1231, + "역명": "연산", + "시간": "17:26:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2258, + "역명": "연산", + "시간": "19:33:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1279, + "역명": "연산", + "시간": "20:27:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2302, + "역명": "연산", + "시간": "22:35:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1315, + "역명": "연산", + "시간": "23:26:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "시청", + "시간": "05:59:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "시청", + "시간": "06:54:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2050, + "역명": "시청", + "시간": "09:03:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1081, + "역명": "시청", + "시간": "09:58:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2108, + "역명": "시청", + "시간": "11:57:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1139, + "역명": "시청", + "시간": "12:52:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2166, + "역명": "시청", + "시간": "14:51:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1197, + "역명": "시청", + "시간": "15:46:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2226, + "역명": "시청", + "시간": "17:45:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "시청", + "시간": "05:43:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "시청", + "시간": "06:45:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "시청", + "시간": "08:51:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1077, + "역명": "시청", + "시간": "09:46:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2104, + "역명": "시청", + "시간": "11:45:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1135, + "역명": "시청", + "시간": "12:40:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2162, + "역명": "시청", + "시간": "14:39:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1193, + "역명": "시청", + "시간": "15:34:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2222, + "역명": "시청", + "시간": "17:34:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1249, + "역명": "시청", + "시간": "18:31:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2274, + "역명": "시청", + "시간": "20:35:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1293, + "역명": "시청", + "시간": "21:32:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "시청", + "시간": "06:12:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "시청", + "시간": "07:12:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2054, + "역명": "시청", + "시간": "09:15:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1085, + "역명": "시청", + "시간": "10:10:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2112, + "역명": "시청", + "시간": "12:09:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1143, + "역명": "시청", + "시간": "13:04:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2170, + "역명": "시청", + "시간": "15:03:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1201, + "역명": "시청", + "시간": "15:58:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2230, + "역명": "시청", + "시간": "17:56:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1255, + "역명": "시청", + "시간": "18:53:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2278, + "역명": "시청", + "시간": "20:51:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "시청", + "시간": "06:25:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1023, + "역명": "시청", + "시간": "07:19:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2056, + "역명": "시청", + "시간": "09:21:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1087, + "역명": "시청", + "시간": "10:16:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2114, + "역명": "시청", + "시간": "12:15:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1145, + "역명": "시청", + "시간": "13:10:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2172, + "역명": "시청", + "시간": "15:09:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1203, + "역명": "시청", + "시간": "16:04:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2232, + "역명": "시청", + "시간": "18:02:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1257, + "역명": "시청", + "시간": "19:01:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2280, + "역명": "시청", + "시간": "20:59:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1297, + "역명": "시청", + "시간": "21:52:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2316, + "역명": "시청", + "시간": "23:50:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2012, + "역명": "시청", + "시간": "07:01:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1039, + "역명": "시청", + "시간": "08:01:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2070, + "역명": "시청", + "시간": "10:03:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1101, + "역명": "시청", + "시간": "10:58:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2128, + "역명": "시청", + "시간": "12:57:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1159, + "역명": "시청", + "시간": "13:52:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2186, + "역명": "시청", + "시간": "15:51:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1217, + "역명": "시청", + "시간": "16:46:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2246, + "역명": "시청", + "시간": "18:47:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2008, + "역명": "시청", + "시간": "06:37:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1027, + "역명": "시청", + "시간": "07:31:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2060, + "역명": "시청", + "시간": "09:33:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1091, + "역명": "시청", + "시간": "10:28:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2118, + "역명": "시청", + "시간": "12:27:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1149, + "역명": "시청", + "시간": "13:22:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2176, + "역명": "시청", + "시간": "15:21:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1207, + "역명": "시청", + "시간": "16:16:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2236, + "역명": "시청", + "시간": "18:14:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1259, + "역명": "시청", + "시간": "19:09:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2282, + "역명": "시청", + "시간": "21:07:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1299, + "역명": "시청", + "시간": "22:02:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 6, + "열번": 2318, + "역명": "시청", + "시간": "00:06:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1001, + "역명": "시청", + "시간": "05:31:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2018, + "역명": "시청", + "시간": "07:33:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1051, + "역명": "시청", + "시간": "08:31:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2080, + "역명": "시청", + "시간": "10:33:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1111, + "역명": "시청", + "시간": "11:28:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2138, + "역명": "시청", + "시간": "13:27:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1169, + "역명": "시청", + "시간": "14:22:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2196, + "역명": "시청", + "시간": "16:21:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1227, + "역명": "시청", + "시간": "17:16:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2254, + "역명": "시청", + "시간": "19:15:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1275, + "역명": "시청", + "시간": "20:13:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 7, + "열번": 2298, + "역명": "시청", + "시간": "22:13:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2010, + "역명": "시청", + "시간": "06:49:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1033, + "역명": "시청", + "시간": "07:46:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2064, + "역명": "시청", + "시간": "09:45:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1095, + "역명": "시청", + "시간": "10:40:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2122, + "역명": "시청", + "시간": "12:39:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1153, + "역명": "시청", + "시간": "13:34:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2180, + "역명": "시청", + "시간": "15:33:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1211, + "역명": "시청", + "시간": "16:28:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2240, + "역명": "시청", + "시간": "18:26:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1263, + "역명": "시청", + "시간": "19:25:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2286, + "역명": "시청", + "시간": "21:23:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1303, + "역명": "시청", + "시간": "22:22:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 9, + "열번": 1003, + "역명": "시청", + "시간": "05:40:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2020, + "역명": "시청", + "시간": "07:41:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1053, + "역명": "시청", + "시간": "08:36:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2082, + "역명": "시청", + "시간": "10:39:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1113, + "역명": "시청", + "시간": "11:34:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2140, + "역명": "시청", + "시간": "13:33:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1171, + "역명": "시청", + "시간": "14:28:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2198, + "역명": "시청", + "시간": "16:27:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1229, + "역명": "시청", + "시간": "17:22:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2256, + "역명": "시청", + "시간": "19:23:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1277, + "역명": "시청", + "시간": "20:21:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2300, + "역명": "시청", + "시간": "22:23:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1313, + "역명": "시청", + "시간": "23:16:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2014, + "역명": "시청", + "시간": "07:13:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1043, + "역명": "시청", + "시간": "08:11:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2072, + "역명": "시청", + "시간": "10:09:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1103, + "역명": "시청", + "시간": "11:04:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2130, + "역명": "시청", + "시간": "13:03:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1161, + "역명": "시청", + "시간": "13:58:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2188, + "역명": "시청", + "시간": "15:57:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1219, + "역명": "시청", + "시간": "16:52:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2248, + "역명": "시청", + "시간": "18:54:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1269, + "역명": "시청", + "시간": "19:49:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2292, + "역명": "시청", + "시간": "21:47:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1307, + "역명": "시청", + "시간": "22:42:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 11, + "열번": 2022, + "역명": "시청", + "시간": "07:47:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2016, + "역명": "시청", + "시간": "07:24:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1047, + "역명": "시청", + "시간": "08:21:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2076, + "역명": "시청", + "시간": "10:21:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1107, + "역명": "시청", + "시간": "11:16:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2134, + "역명": "시청", + "시간": "13:15:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1165, + "역명": "시청", + "시간": "14:10:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "시청", + "시간": "16:09:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1223, + "역명": "시청", + "시간": "17:04:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2252, + "역명": "시청", + "시간": "19:08:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1273, + "역명": "시청", + "시간": "20:05:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2296, + "역명": "시청", + "시간": "22:03:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1311, + "역명": "시청", + "시간": "23:04:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1005, + "역명": "시청", + "시간": "05:51:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2024, + "역명": "시청", + "시간": "07:53:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1057, + "역명": "시청", + "시간": "08:46:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2086, + "역명": "시청", + "시간": "10:51:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1117, + "역명": "시청", + "시간": "11:46:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2144, + "역명": "시청", + "시간": "13:45:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1175, + "역명": "시청", + "시간": "14:40:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2202, + "역명": "시청", + "시간": "16:39:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1233, + "역명": "시청", + "시간": "17:35:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2260, + "역명": "시청", + "시간": "19:39:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1281, + "역명": "시청", + "시간": "20:37:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2304, + "역명": "시청", + "시간": "22:43:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 13, + "열번": 1317, + "역명": "시청", + "시간": "23:38:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2026, + "역명": "시청", + "시간": "07:58:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 14, + "열번": 1059, + "역명": "시청", + "시간": "08:52:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1009, + "역명": "시청", + "시간": "06:13:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2032, + "역명": "시청", + "시간": "08:13:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1065, + "역명": "시청", + "시간": "09:10:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2092, + "역명": "시청", + "시간": "11:09:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1123, + "역명": "시청", + "시간": "12:04:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2150, + "역명": "시청", + "시간": "14:03:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1181, + "역명": "시청", + "시간": "14:58:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2208, + "역명": "시청", + "시간": "16:56:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 16, + "열번": 1007, + "역명": "시청", + "시간": "06:02:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2028, + "역명": "시청", + "시간": "08:03:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1061, + "역명": "시청", + "시간": "08:58:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2088, + "역명": "시청", + "시간": "10:57:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1119, + "역명": "시청", + "시간": "11:52:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2146, + "역명": "시청", + "시간": "13:51:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1177, + "역명": "시청", + "시간": "14:46:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2204, + "역명": "시청", + "시간": "16:45:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1235, + "역명": "시청", + "시간": "17:42:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 17, + "열번": 1011, + "역명": "시청", + "시간": "06:24:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2036, + "역명": "시청", + "시간": "08:23:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1069, + "역명": "시청", + "시간": "09:22:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2096, + "역명": "시청", + "시간": "11:21:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1127, + "역명": "시청", + "시간": "12:16:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2154, + "역명": "시청", + "시간": "14:15:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1185, + "역명": "시청", + "시간": "15:10:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2214, + "역명": "시청", + "시간": "17:12:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1243, + "역명": "시청", + "시간": "18:10:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2268, + "역명": "시청", + "시간": "20:11:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1289, + "역명": "시청", + "시간": "21:12:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2310, + "역명": "시청", + "시간": "23:15:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2030, + "역명": "시청", + "시간": "08:08:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1063, + "역명": "시청", + "시간": "09:04:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2090, + "역명": "시청", + "시간": "11:03:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1121, + "역명": "시청", + "시간": "11:58:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2148, + "역명": "시청", + "시간": "13:57:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1179, + "역명": "시청", + "시간": "14:52:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2206, + "역명": "시청", + "시간": "16:50:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1237, + "역명": "시청", + "시간": "17:49:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2262, + "역명": "시청", + "시간": "19:47:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1283, + "역명": "시청", + "시간": "20:45:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2038, + "역명": "시청", + "시간": "08:28:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2034, + "역명": "시청", + "시간": "08:18:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1067, + "역명": "시청", + "시간": "09:16:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2094, + "역명": "시청", + "시간": "11:15:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1125, + "역명": "시청", + "시간": "12:10:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2152, + "역명": "시청", + "시간": "14:09:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1183, + "역명": "시청", + "시간": "15:04:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2212, + "역명": "시청", + "시간": "17:07:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1241, + "역명": "시청", + "시간": "18:03:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2266, + "역명": "시청", + "시간": "20:03:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1287, + "역명": "시청", + "시간": "21:02:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 20, + "열번": 2308, + "역명": "시청", + "시간": "23:03:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2040, + "역명": "시청", + "시간": "08:33:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1071, + "역명": "시청", + "시간": "09:28:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2098, + "역명": "시청", + "시간": "11:27:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1129, + "역명": "시청", + "시간": "12:22:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2156, + "역명": "시청", + "시간": "14:21:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1187, + "역명": "시청", + "시간": "15:16:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2216, + "역명": "시청", + "시간": "17:18:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2044, + "역명": "시청", + "시간": "08:45:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1075, + "역명": "시청", + "시간": "09:40:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2102, + "역명": "시청", + "시간": "11:39:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1133, + "역명": "시청", + "시간": "12:34:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2160, + "역명": "시청", + "시간": "14:33:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1191, + "역명": "시청", + "시간": "15:28:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2220, + "역명": "시청", + "시간": "17:29:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1247, + "역명": "시청", + "시간": "18:24:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2272, + "역명": "시청", + "시간": "20:27:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1291, + "역명": "시청", + "시간": "21:22:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 22, + "열번": 2312, + "역명": "시청", + "시간": "23:27:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 23, + "열번": 1013, + "역명": "시청", + "시간": "06:35:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2042, + "역명": "시청", + "시간": "08:39:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1073, + "역명": "시청", + "시간": "09:34:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2100, + "역명": "시청", + "시간": "11:33:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1131, + "역명": "시청", + "시간": "12:28:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2158, + "역명": "시청", + "시간": "14:27:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1189, + "역명": "시청", + "시간": "15:22:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2218, + "역명": "시청", + "시간": "17:23:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1245, + "역명": "시청", + "시간": "18:17:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2270, + "역명": "시청", + "시간": "20:19:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "시청", + "시간": "08:57:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1079, + "역명": "시청", + "시간": "09:52:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2106, + "역명": "시청", + "시간": "11:51:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1137, + "역명": "시청", + "시간": "12:46:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2164, + "역명": "시청", + "시간": "14:45:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1195, + "역명": "시청", + "시간": "15:40:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2224, + "역명": "시청", + "시간": "17:40:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1251, + "역명": "시청", + "시간": "18:38:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "시청", + "시간": "07:03:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2052, + "역명": "시청", + "시간": "09:09:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1083, + "역명": "시청", + "시간": "10:04:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2110, + "역명": "시청", + "시간": "12:03:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1141, + "역명": "시청", + "시간": "12:58:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2168, + "역명": "시청", + "시간": "14:57:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1199, + "역명": "시청", + "시간": "15:52:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2228, + "역명": "시청", + "시간": "17:51:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1253, + "역명": "시청", + "시간": "18:45:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2276, + "역명": "시청", + "시간": "20:43:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1295, + "역명": "시청", + "시간": "21:42:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2314, + "역명": "시청", + "시간": "23:39:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 26, + "열번": 1029, + "역명": "시청", + "시간": "07:36:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1025, + "역명": "시청", + "시간": "07:26:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2058, + "역명": "시청", + "시간": "09:27:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1089, + "역명": "시청", + "시간": "10:22:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2116, + "역명": "시청", + "시간": "12:21:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1147, + "역명": "시청", + "시간": "13:16:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2174, + "역명": "시청", + "시간": "15:15:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1205, + "역명": "시청", + "시간": "16:10:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 27, + "열번": 2234, + "역명": "시청", + "시간": "18:08:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 28, + "열번": 1041, + "역명": "시청", + "시간": "08:06:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1031, + "역명": "시청", + "시간": "07:41:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2062, + "역명": "시청", + "시간": "09:39:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1093, + "역명": "시청", + "시간": "10:34:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2120, + "역명": "시청", + "시간": "12:33:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1151, + "역명": "시청", + "시간": "13:28:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2178, + "역명": "시청", + "시간": "15:27:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1209, + "역명": "시청", + "시간": "16:22:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2238, + "역명": "시청", + "시간": "18:20:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1261, + "역명": "시청", + "시간": "19:17:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2284, + "역명": "시청", + "시간": "21:15:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 29, + "열번": 1301, + "역명": "시청", + "시간": "22:12:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1049, + "역명": "시청", + "시간": "08:26:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2078, + "역명": "시청", + "시간": "10:27:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1109, + "역명": "시청", + "시간": "11:22:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2136, + "역명": "시청", + "시간": "13:21:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1167, + "역명": "시청", + "시간": "14:16:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2194, + "역명": "시청", + "시간": "16:15:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1225, + "역명": "시청", + "시간": "17:10:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1035, + "역명": "시청", + "시간": "07:51:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2066, + "역명": "시청", + "시간": "09:51:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1097, + "역명": "시청", + "시간": "10:46:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2124, + "역명": "시청", + "시간": "12:45:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1155, + "역명": "시청", + "시간": "13:40:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2182, + "역명": "시청", + "시간": "15:39:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1213, + "역명": "시청", + "시간": "16:34:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2242, + "역명": "시청", + "시간": "18:33:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1265, + "역명": "시청", + "시간": "19:33:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2288, + "역명": "시청", + "시간": "21:31:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1305, + "역명": "시청", + "시간": "22:32:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 32, + "열번": 2210, + "역명": "시청", + "시간": "17:01:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 32, + "열번": 1239, + "역명": "시청", + "시간": "17:56:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 32, + "열번": 2264, + "역명": "시청", + "시간": "19:55:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 32, + "열번": 1285, + "역명": "시청", + "시간": "20:53:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 32, + "열번": 2306, + "역명": "시청", + "시간": "22:53:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 32, + "열번": 7931, + "역명": "시청", + "시간": "23:54:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1037, + "역명": "시청", + "시간": "07:56:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2068, + "역명": "시청", + "시간": "09:57:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1099, + "역명": "시청", + "시간": "10:52:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2126, + "역명": "시청", + "시간": "12:51:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1157, + "역명": "시청", + "시간": "13:46:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2184, + "역명": "시청", + "시간": "15:45:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1215, + "역명": "시청", + "시간": "16:40:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2244, + "역명": "시청", + "시간": "18:40:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1267, + "역명": "시청", + "시간": "19:41:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 33, + "열번": 2290, + "역명": "시청", + "시간": "21:39:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1045, + "역명": "시청", + "시간": "08:16:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2074, + "역명": "시청", + "시간": "10:15:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1105, + "역명": "시청", + "시간": "11:10:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2132, + "역명": "시청", + "시간": "13:09:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1163, + "역명": "시청", + "시간": "14:04:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2190, + "역명": "시청", + "시간": "16:03:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1221, + "역명": "시청", + "시간": "16:58:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2250, + "역명": "시청", + "시간": "19:01:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1271, + "역명": "시청", + "시간": "19:57:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2294, + "역명": "시청", + "시간": "21:55:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1309, + "역명": "시청", + "시간": "22:53:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1055, + "역명": "시청", + "시간": "08:41:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2084, + "역명": "시청", + "시간": "10:45:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1115, + "역명": "시청", + "시간": "11:40:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2142, + "역명": "시청", + "시간": "13:39:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1173, + "역명": "시청", + "시간": "14:34:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2200, + "역명": "시청", + "시간": "16:33:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1231, + "역명": "시청", + "시간": "17:28:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2258, + "역명": "시청", + "시간": "19:31:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1279, + "역명": "시청", + "시간": "20:29:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2302, + "역명": "시청", + "시간": "22:33:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1315, + "역명": "시청", + "시간": "23:28:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "양정", + "시간": "05:57:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "양정", + "시간": "06:56:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2050, + "역명": "양정", + "시간": "09:01:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1081, + "역명": "양정", + "시간": "10:00:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2108, + "역명": "양정", + "시간": "11:55:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1139, + "역명": "양정", + "시간": "12:54:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2166, + "역명": "양정", + "시간": "14:49:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1197, + "역명": "양정", + "시간": "15:48:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2226, + "역명": "양정", + "시간": "17:43:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "양정", + "시간": "05:42:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "양정", + "시간": "06:47:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "양정", + "시간": "08:49:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1077, + "역명": "양정", + "시간": "09:48:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2104, + "역명": "양정", + "시간": "11:43:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1135, + "역명": "양정", + "시간": "12:42:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2162, + "역명": "양정", + "시간": "14:37:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1193, + "역명": "양정", + "시간": "15:36:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2222, + "역명": "양정", + "시간": "17:32:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1249, + "역명": "양정", + "시간": "18:33:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2274, + "역명": "양정", + "시간": "20:33:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1293, + "역명": "양정", + "시간": "21:34:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "양정", + "시간": "06:10:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "양정", + "시간": "07:14:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2054, + "역명": "양정", + "시간": "09:13:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1085, + "역명": "양정", + "시간": "10:12:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2112, + "역명": "양정", + "시간": "12:07:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1143, + "역명": "양정", + "시간": "13:06:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2170, + "역명": "양정", + "시간": "15:01:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1201, + "역명": "양정", + "시간": "16:00:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2230, + "역명": "양정", + "시간": "17:54:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1255, + "역명": "양정", + "시간": "18:55:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2278, + "역명": "양정", + "시간": "20:49:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "양정", + "시간": "06:23:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1023, + "역명": "양정", + "시간": "07:21:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2056, + "역명": "양정", + "시간": "09:19:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1087, + "역명": "양정", + "시간": "10:18:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2114, + "역명": "양정", + "시간": "12:13:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1145, + "역명": "양정", + "시간": "13:12:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2172, + "역명": "양정", + "시간": "15:07:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1203, + "역명": "양정", + "시간": "16:06:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2232, + "역명": "양정", + "시간": "18:00:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1257, + "역명": "양정", + "시간": "19:03:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2280, + "역명": "양정", + "시간": "20:57:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1297, + "역명": "양정", + "시간": "21:54:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2316, + "역명": "양정", + "시간": "23:49:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2012, + "역명": "양정", + "시간": "06:59:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1039, + "역명": "양정", + "시간": "08:03:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2070, + "역명": "양정", + "시간": "10:01:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1101, + "역명": "양정", + "시간": "11:00:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2128, + "역명": "양정", + "시간": "12:55:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1159, + "역명": "양정", + "시간": "13:54:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2186, + "역명": "양정", + "시간": "15:49:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1217, + "역명": "양정", + "시간": "16:48:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2246, + "역명": "양정", + "시간": "18:45:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2008, + "역명": "양정", + "시간": "06:35:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1027, + "역명": "양정", + "시간": "07:33:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2060, + "역명": "양정", + "시간": "09:31:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1091, + "역명": "양정", + "시간": "10:30:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2118, + "역명": "양정", + "시간": "12:25:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1149, + "역명": "양정", + "시간": "13:24:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2176, + "역명": "양정", + "시간": "15:19:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1207, + "역명": "양정", + "시간": "16:18:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2236, + "역명": "양정", + "시간": "18:12:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1259, + "역명": "양정", + "시간": "19:11:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2282, + "역명": "양정", + "시간": "21:05:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1299, + "역명": "양정", + "시간": "22:04:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 6, + "열번": 2318, + "역명": "양정", + "시간": "00:04:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1001, + "역명": "양정", + "시간": "05:33:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2018, + "역명": "양정", + "시간": "07:31:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1051, + "역명": "양정", + "시간": "08:33:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2080, + "역명": "양정", + "시간": "10:31:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1111, + "역명": "양정", + "시간": "11:30:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2138, + "역명": "양정", + "시간": "13:25:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1169, + "역명": "양정", + "시간": "14:24:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2196, + "역명": "양정", + "시간": "16:19:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1227, + "역명": "양정", + "시간": "17:18:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2254, + "역명": "양정", + "시간": "19:13:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1275, + "역명": "양정", + "시간": "20:15:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 7, + "열번": 2298, + "역명": "양정", + "시간": "22:11:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2010, + "역명": "양정", + "시간": "06:47:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1033, + "역명": "양정", + "시간": "07:48:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2064, + "역명": "양정", + "시간": "09:43:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1095, + "역명": "양정", + "시간": "10:42:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2122, + "역명": "양정", + "시간": "12:37:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1153, + "역명": "양정", + "시간": "13:36:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2180, + "역명": "양정", + "시간": "15:31:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1211, + "역명": "양정", + "시간": "16:30:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2240, + "역명": "양정", + "시간": "18:24:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1263, + "역명": "양정", + "시간": "19:27:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2286, + "역명": "양정", + "시간": "21:21:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1303, + "역명": "양정", + "시간": "22:24:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 9, + "열번": 1003, + "역명": "양정", + "시간": "05:42:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2020, + "역명": "양정", + "시간": "07:39:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1053, + "역명": "양정", + "시간": "08:38:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2082, + "역명": "양정", + "시간": "10:37:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1113, + "역명": "양정", + "시간": "11:36:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2140, + "역명": "양정", + "시간": "13:31:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1171, + "역명": "양정", + "시간": "14:30:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2198, + "역명": "양정", + "시간": "16:25:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1229, + "역명": "양정", + "시간": "17:24:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2256, + "역명": "양정", + "시간": "19:21:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1277, + "역명": "양정", + "시간": "20:23:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2300, + "역명": "양정", + "시간": "22:21:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1313, + "역명": "양정", + "시간": "23:18:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2014, + "역명": "양정", + "시간": "07:11:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1043, + "역명": "양정", + "시간": "08:13:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2072, + "역명": "양정", + "시간": "10:07:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1103, + "역명": "양정", + "시간": "11:06:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2130, + "역명": "양정", + "시간": "13:01:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1161, + "역명": "양정", + "시간": "14:00:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2188, + "역명": "양정", + "시간": "15:55:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1219, + "역명": "양정", + "시간": "16:54:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2248, + "역명": "양정", + "시간": "18:52:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1269, + "역명": "양정", + "시간": "19:51:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2292, + "역명": "양정", + "시간": "21:45:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1307, + "역명": "양정", + "시간": "22:44:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 11, + "열번": 2022, + "역명": "양정", + "시간": "07:45:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2016, + "역명": "양정", + "시간": "07:22:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1047, + "역명": "양정", + "시간": "08:23:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2076, + "역명": "양정", + "시간": "10:19:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1107, + "역명": "양정", + "시간": "11:18:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2134, + "역명": "양정", + "시간": "13:13:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1165, + "역명": "양정", + "시간": "14:12:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "양정", + "시간": "16:07:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1223, + "역명": "양정", + "시간": "17:06:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2252, + "역명": "양정", + "시간": "19:06:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1273, + "역명": "양정", + "시간": "20:07:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2296, + "역명": "양정", + "시간": "22:01:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1311, + "역명": "양정", + "시간": "23:06:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1005, + "역명": "양정", + "시간": "05:53:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2024, + "역명": "양정", + "시간": "07:51:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1057, + "역명": "양정", + "시간": "08:48:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2086, + "역명": "양정", + "시간": "10:49:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1117, + "역명": "양정", + "시간": "11:48:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2144, + "역명": "양정", + "시간": "13:43:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1175, + "역명": "양정", + "시간": "14:42:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2202, + "역명": "양정", + "시간": "16:37:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1233, + "역명": "양정", + "시간": "17:37:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2260, + "역명": "양정", + "시간": "19:37:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1281, + "역명": "양정", + "시간": "20:39:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2304, + "역명": "양정", + "시간": "22:41:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 13, + "열번": 1317, + "역명": "양정", + "시간": "23:40:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2026, + "역명": "양정", + "시간": "07:56:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 14, + "열번": 1059, + "역명": "양정", + "시간": "08:54:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1009, + "역명": "양정", + "시간": "06:15:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2032, + "역명": "양정", + "시간": "08:11:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1065, + "역명": "양정", + "시간": "09:12:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2092, + "역명": "양정", + "시간": "11:07:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1123, + "역명": "양정", + "시간": "12:06:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2150, + "역명": "양정", + "시간": "14:01:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1181, + "역명": "양정", + "시간": "15:00:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2208, + "역명": "양정", + "시간": "16:54:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 16, + "열번": 1007, + "역명": "양정", + "시간": "06:04:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2028, + "역명": "양정", + "시간": "08:01:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1061, + "역명": "양정", + "시간": "09:00:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2088, + "역명": "양정", + "시간": "10:55:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1119, + "역명": "양정", + "시간": "11:54:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2146, + "역명": "양정", + "시간": "13:49:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1177, + "역명": "양정", + "시간": "14:48:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2204, + "역명": "양정", + "시간": "16:43:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1235, + "역명": "양정", + "시간": "17:44:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 17, + "열번": 1011, + "역명": "양정", + "시간": "06:26:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2036, + "역명": "양정", + "시간": "08:21:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1069, + "역명": "양정", + "시간": "09:24:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2096, + "역명": "양정", + "시간": "11:19:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1127, + "역명": "양정", + "시간": "12:18:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2154, + "역명": "양정", + "시간": "14:13:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1185, + "역명": "양정", + "시간": "15:12:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2214, + "역명": "양정", + "시간": "17:10:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1243, + "역명": "양정", + "시간": "18:12:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2268, + "역명": "양정", + "시간": "20:09:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1289, + "역명": "양정", + "시간": "21:14:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2310, + "역명": "양정", + "시간": "23:13:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2030, + "역명": "양정", + "시간": "08:06:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1063, + "역명": "양정", + "시간": "09:06:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2090, + "역명": "양정", + "시간": "11:01:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1121, + "역명": "양정", + "시간": "12:00:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2148, + "역명": "양정", + "시간": "13:55:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1179, + "역명": "양정", + "시간": "14:54:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2206, + "역명": "양정", + "시간": "16:48:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1237, + "역명": "양정", + "시간": "17:51:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2262, + "역명": "양정", + "시간": "19:45:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1283, + "역명": "양정", + "시간": "20:47:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2038, + "역명": "양정", + "시간": "08:26:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2034, + "역명": "양정", + "시간": "08:16:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1067, + "역명": "양정", + "시간": "09:18:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2094, + "역명": "양정", + "시간": "11:13:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1125, + "역명": "양정", + "시간": "12:12:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2152, + "역명": "양정", + "시간": "14:07:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1183, + "역명": "양정", + "시간": "15:06:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2212, + "역명": "양정", + "시간": "17:05:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1241, + "역명": "양정", + "시간": "18:05:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2266, + "역명": "양정", + "시간": "20:01:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1287, + "역명": "양정", + "시간": "21:04:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 20, + "열번": 2308, + "역명": "양정", + "시간": "23:01:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2040, + "역명": "양정", + "시간": "08:31:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1071, + "역명": "양정", + "시간": "09:30:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2098, + "역명": "양정", + "시간": "11:25:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1129, + "역명": "양정", + "시간": "12:24:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2156, + "역명": "양정", + "시간": "14:19:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1187, + "역명": "양정", + "시간": "15:18:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2216, + "역명": "양정", + "시간": "17:16:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2044, + "역명": "양정", + "시간": "08:43:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1075, + "역명": "양정", + "시간": "09:42:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2102, + "역명": "양정", + "시간": "11:37:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1133, + "역명": "양정", + "시간": "12:36:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2160, + "역명": "양정", + "시간": "14:31:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1191, + "역명": "양정", + "시간": "15:30:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2220, + "역명": "양정", + "시간": "17:27:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1247, + "역명": "양정", + "시간": "18:26:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2272, + "역명": "양정", + "시간": "20:25:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1291, + "역명": "양정", + "시간": "21:24:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 22, + "열번": 2312, + "역명": "양정", + "시간": "23:25:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 23, + "열번": 1013, + "역명": "양정", + "시간": "06:37:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2042, + "역명": "양정", + "시간": "08:37:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1073, + "역명": "양정", + "시간": "09:36:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2100, + "역명": "양정", + "시간": "11:31:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1131, + "역명": "양정", + "시간": "12:30:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2158, + "역명": "양정", + "시간": "14:25:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1189, + "역명": "양정", + "시간": "15:24:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2218, + "역명": "양정", + "시간": "17:21:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1245, + "역명": "양정", + "시간": "18:19:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2270, + "역명": "양정", + "시간": "20:17:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "양정", + "시간": "08:55:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1079, + "역명": "양정", + "시간": "09:54:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2106, + "역명": "양정", + "시간": "11:49:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1137, + "역명": "양정", + "시간": "12:48:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2164, + "역명": "양정", + "시간": "14:43:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1195, + "역명": "양정", + "시간": "15:42:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2224, + "역명": "양정", + "시간": "17:38:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1251, + "역명": "양정", + "시간": "18:40:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "양정", + "시간": "07:05:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2052, + "역명": "양정", + "시간": "09:07:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1083, + "역명": "양정", + "시간": "10:06:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2110, + "역명": "양정", + "시간": "12:01:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1141, + "역명": "양정", + "시간": "13:00:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2168, + "역명": "양정", + "시간": "14:55:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1199, + "역명": "양정", + "시간": "15:54:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2228, + "역명": "양정", + "시간": "17:49:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1253, + "역명": "양정", + "시간": "18:47:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2276, + "역명": "양정", + "시간": "20:41:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1295, + "역명": "양정", + "시간": "21:44:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2314, + "역명": "양정", + "시간": "23:37:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 26, + "열번": 1029, + "역명": "양정", + "시간": "07:38:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1025, + "역명": "양정", + "시간": "07:28:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2058, + "역명": "양정", + "시간": "09:25:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1089, + "역명": "양정", + "시간": "10:24:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2116, + "역명": "양정", + "시간": "12:19:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1147, + "역명": "양정", + "시간": "13:18:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2174, + "역명": "양정", + "시간": "15:13:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1205, + "역명": "양정", + "시간": "16:12:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 27, + "열번": 2234, + "역명": "양정", + "시간": "18:06:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 28, + "열번": 1041, + "역명": "양정", + "시간": "08:08:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1031, + "역명": "양정", + "시간": "07:43:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2062, + "역명": "양정", + "시간": "09:37:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1093, + "역명": "양정", + "시간": "10:36:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2120, + "역명": "양정", + "시간": "12:31:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1151, + "역명": "양정", + "시간": "13:30:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2178, + "역명": "양정", + "시간": "15:25:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1209, + "역명": "양정", + "시간": "16:24:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2238, + "역명": "양정", + "시간": "18:18:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1261, + "역명": "양정", + "시간": "19:19:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2284, + "역명": "양정", + "시간": "21:13:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 29, + "열번": 1301, + "역명": "양정", + "시간": "22:14:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1049, + "역명": "양정", + "시간": "08:28:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2078, + "역명": "양정", + "시간": "10:25:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1109, + "역명": "양정", + "시간": "11:24:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2136, + "역명": "양정", + "시간": "13:19:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1167, + "역명": "양정", + "시간": "14:18:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2194, + "역명": "양정", + "시간": "16:13:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1225, + "역명": "양정", + "시간": "17:12:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1035, + "역명": "양정", + "시간": "07:53:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2066, + "역명": "양정", + "시간": "09:49:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1097, + "역명": "양정", + "시간": "10:48:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2124, + "역명": "양정", + "시간": "12:43:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1155, + "역명": "양정", + "시간": "13:42:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2182, + "역명": "양정", + "시간": "15:37:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1213, + "역명": "양정", + "시간": "16:36:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2242, + "역명": "양정", + "시간": "18:31:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1265, + "역명": "양정", + "시간": "19:35:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2288, + "역명": "양정", + "시간": "21:29:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1305, + "역명": "양정", + "시간": "22:34:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 32, + "열번": 2210, + "역명": "양정", + "시간": "16:59:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 32, + "열번": 1239, + "역명": "양정", + "시간": "17:58:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 32, + "열번": 2264, + "역명": "양정", + "시간": "19:53:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 32, + "열번": 1285, + "역명": "양정", + "시간": "20:55:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 32, + "열번": 2306, + "역명": "양정", + "시간": "22:51:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 32, + "열번": 7931, + "역명": "양정", + "시간": "23:56:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1037, + "역명": "양정", + "시간": "07:58:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2068, + "역명": "양정", + "시간": "09:55:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1099, + "역명": "양정", + "시간": "10:54:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2126, + "역명": "양정", + "시간": "12:49:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1157, + "역명": "양정", + "시간": "13:48:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2184, + "역명": "양정", + "시간": "15:43:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1215, + "역명": "양정", + "시간": "16:42:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2244, + "역명": "양정", + "시간": "18:38:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1267, + "역명": "양정", + "시간": "19:43:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 33, + "열번": 2290, + "역명": "양정", + "시간": "21:37:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1045, + "역명": "양정", + "시간": "08:18:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2074, + "역명": "양정", + "시간": "10:13:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1105, + "역명": "양정", + "시간": "11:12:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2132, + "역명": "양정", + "시간": "13:07:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1163, + "역명": "양정", + "시간": "14:06:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2190, + "역명": "양정", + "시간": "16:01:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1221, + "역명": "양정", + "시간": "17:00:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2250, + "역명": "양정", + "시간": "18:59:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1271, + "역명": "양정", + "시간": "19:59:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2294, + "역명": "양정", + "시간": "21:53:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1309, + "역명": "양정", + "시간": "22:55:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1055, + "역명": "양정", + "시간": "08:43:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2084, + "역명": "양정", + "시간": "10:43:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1115, + "역명": "양정", + "시간": "11:42:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2142, + "역명": "양정", + "시간": "13:37:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1173, + "역명": "양정", + "시간": "14:36:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2200, + "역명": "양정", + "시간": "16:31:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1231, + "역명": "양정", + "시간": "17:30:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2258, + "역명": "양정", + "시간": "19:29:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1279, + "역명": "양정", + "시간": "20:31:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2302, + "역명": "양정", + "시간": "22:31:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1315, + "역명": "양정", + "시간": "23:30:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "부전", + "시간": "05:55:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "부전", + "시간": "06:58:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2050, + "역명": "부전", + "시간": "08:59:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1081, + "역명": "부전", + "시간": "10:02:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2108, + "역명": "부전", + "시간": "11:53:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1139, + "역명": "부전", + "시간": "12:56:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2166, + "역명": "부전", + "시간": "14:47:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1197, + "역명": "부전", + "시간": "15:50:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2226, + "역명": "부전", + "시간": "17:41:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "부전", + "시간": "05:40:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "부전", + "시간": "06:49:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "부전", + "시간": "08:47:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1077, + "역명": "부전", + "시간": "09:50:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2104, + "역명": "부전", + "시간": "11:41:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1135, + "역명": "부전", + "시간": "12:44:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2162, + "역명": "부전", + "시간": "14:35:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1193, + "역명": "부전", + "시간": "15:38:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2222, + "역명": "부전", + "시간": "17:30:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1249, + "역명": "부전", + "시간": "18:35:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2274, + "역명": "부전", + "시간": "20:31:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1293, + "역명": "부전", + "시간": "21:36:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "부전", + "시간": "06:08:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "부전", + "시간": "07:16:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2054, + "역명": "부전", + "시간": "09:11:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1085, + "역명": "부전", + "시간": "10:14:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2112, + "역명": "부전", + "시간": "12:05:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1143, + "역명": "부전", + "시간": "13:08:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2170, + "역명": "부전", + "시간": "14:59:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1201, + "역명": "부전", + "시간": "16:02:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2230, + "역명": "부전", + "시간": "17:52:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1255, + "역명": "부전", + "시간": "18:57:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2278, + "역명": "부전", + "시간": "20:47:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "부전", + "시간": "06:21:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1023, + "역명": "부전", + "시간": "07:23:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2056, + "역명": "부전", + "시간": "09:17:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1087, + "역명": "부전", + "시간": "10:20:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2114, + "역명": "부전", + "시간": "12:11:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1145, + "역명": "부전", + "시간": "13:14:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2172, + "역명": "부전", + "시간": "15:05:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1203, + "역명": "부전", + "시간": "16:08:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2232, + "역명": "부전", + "시간": "17:58:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1257, + "역명": "부전", + "시간": "19:05:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2280, + "역명": "부전", + "시간": "20:55:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1297, + "역명": "부전", + "시간": "21:56:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2316, + "역명": "부전", + "시간": "23:47:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2012, + "역명": "부전", + "시간": "06:57:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1039, + "역명": "부전", + "시간": "08:05:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2070, + "역명": "부전", + "시간": "09:59:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1101, + "역명": "부전", + "시간": "11:02:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2128, + "역명": "부전", + "시간": "12:53:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1159, + "역명": "부전", + "시간": "13:56:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2186, + "역명": "부전", + "시간": "15:47:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1217, + "역명": "부전", + "시간": "16:50:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2246, + "역명": "부전", + "시간": "18:43:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2008, + "역명": "부전", + "시간": "06:33:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1027, + "역명": "부전", + "시간": "07:35:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2060, + "역명": "부전", + "시간": "09:29:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1091, + "역명": "부전", + "시간": "10:32:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2118, + "역명": "부전", + "시간": "12:23:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1149, + "역명": "부전", + "시간": "13:26:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2176, + "역명": "부전", + "시간": "15:17:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1207, + "역명": "부전", + "시간": "16:20:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2236, + "역명": "부전", + "시간": "18:10:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1259, + "역명": "부전", + "시간": "19:13:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2282, + "역명": "부전", + "시간": "21:03:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1299, + "역명": "부전", + "시간": "22:06:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 6, + "열번": 2318, + "역명": "부전", + "시간": "00:02:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1001, + "역명": "부전", + "시간": "05:35:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2018, + "역명": "부전", + "시간": "07:29:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1051, + "역명": "부전", + "시간": "08:35:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2080, + "역명": "부전", + "시간": "10:29:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1111, + "역명": "부전", + "시간": "11:32:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2138, + "역명": "부전", + "시간": "13:23:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1169, + "역명": "부전", + "시간": "14:26:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2196, + "역명": "부전", + "시간": "16:17:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1227, + "역명": "부전", + "시간": "17:20:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2254, + "역명": "부전", + "시간": "19:11:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1275, + "역명": "부전", + "시간": "20:17:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 7, + "열번": 2298, + "역명": "부전", + "시간": "22:09:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2010, + "역명": "부전", + "시간": "06:45:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1033, + "역명": "부전", + "시간": "07:50:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2064, + "역명": "부전", + "시간": "09:41:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1095, + "역명": "부전", + "시간": "10:44:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2122, + "역명": "부전", + "시간": "12:35:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1153, + "역명": "부전", + "시간": "13:38:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2180, + "역명": "부전", + "시간": "15:29:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1211, + "역명": "부전", + "시간": "16:32:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2240, + "역명": "부전", + "시간": "18:22:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1263, + "역명": "부전", + "시간": "19:29:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2286, + "역명": "부전", + "시간": "21:19:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1303, + "역명": "부전", + "시간": "22:26:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 9, + "열번": 1003, + "역명": "부전", + "시간": "05:44:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2020, + "역명": "부전", + "시간": "07:37:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1053, + "역명": "부전", + "시간": "08:40:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2082, + "역명": "부전", + "시간": "10:35:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1113, + "역명": "부전", + "시간": "11:38:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2140, + "역명": "부전", + "시간": "13:29:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1171, + "역명": "부전", + "시간": "14:32:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2198, + "역명": "부전", + "시간": "16:23:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1229, + "역명": "부전", + "시간": "17:26:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2256, + "역명": "부전", + "시간": "19:19:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1277, + "역명": "부전", + "시간": "20:25:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2300, + "역명": "부전", + "시간": "22:19:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1313, + "역명": "부전", + "시간": "23:20:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2014, + "역명": "부전", + "시간": "07:09:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1043, + "역명": "부전", + "시간": "08:15:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2072, + "역명": "부전", + "시간": "10:05:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1103, + "역명": "부전", + "시간": "11:08:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2130, + "역명": "부전", + "시간": "12:59:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1161, + "역명": "부전", + "시간": "14:02:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2188, + "역명": "부전", + "시간": "15:53:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1219, + "역명": "부전", + "시간": "16:56:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2248, + "역명": "부전", + "시간": "18:50:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1269, + "역명": "부전", + "시간": "19:53:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2292, + "역명": "부전", + "시간": "21:43:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1307, + "역명": "부전", + "시간": "22:46:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 11, + "열번": 2022, + "역명": "부전", + "시간": "07:43:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2016, + "역명": "부전", + "시간": "07:20:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1047, + "역명": "부전", + "시간": "08:25:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2076, + "역명": "부전", + "시간": "10:17:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1107, + "역명": "부전", + "시간": "11:20:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2134, + "역명": "부전", + "시간": "13:11:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1165, + "역명": "부전", + "시간": "14:14:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "부전", + "시간": "16:05:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1223, + "역명": "부전", + "시간": "17:08:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2252, + "역명": "부전", + "시간": "19:04:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1273, + "역명": "부전", + "시간": "20:09:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2296, + "역명": "부전", + "시간": "21:59:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1311, + "역명": "부전", + "시간": "23:08:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1005, + "역명": "부전", + "시간": "05:55:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2024, + "역명": "부전", + "시간": "07:49:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1057, + "역명": "부전", + "시간": "08:50:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2086, + "역명": "부전", + "시간": "10:47:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1117, + "역명": "부전", + "시간": "11:50:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2144, + "역명": "부전", + "시간": "13:41:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1175, + "역명": "부전", + "시간": "14:44:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2202, + "역명": "부전", + "시간": "16:35:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1233, + "역명": "부전", + "시간": "17:39:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2260, + "역명": "부전", + "시간": "19:35:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1281, + "역명": "부전", + "시간": "20:41:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2304, + "역명": "부전", + "시간": "22:39:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 13, + "열번": 1317, + "역명": "부전", + "시간": "23:42:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2026, + "역명": "부전", + "시간": "07:54:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 14, + "열번": 1059, + "역명": "부전", + "시간": "08:56:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1009, + "역명": "부전", + "시간": "06:17:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2032, + "역명": "부전", + "시간": "08:09:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1065, + "역명": "부전", + "시간": "09:14:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2092, + "역명": "부전", + "시간": "11:05:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1123, + "역명": "부전", + "시간": "12:08:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2150, + "역명": "부전", + "시간": "13:59:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1181, + "역명": "부전", + "시간": "15:02:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2208, + "역명": "부전", + "시간": "16:52:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 16, + "열번": 1007, + "역명": "부전", + "시간": "06:06:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2028, + "역명": "부전", + "시간": "07:59:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1061, + "역명": "부전", + "시간": "09:02:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2088, + "역명": "부전", + "시간": "10:53:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1119, + "역명": "부전", + "시간": "11:56:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2146, + "역명": "부전", + "시간": "13:47:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1177, + "역명": "부전", + "시간": "14:50:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2204, + "역명": "부전", + "시간": "16:41:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1235, + "역명": "부전", + "시간": "17:46:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 17, + "열번": 1011, + "역명": "부전", + "시간": "06:28:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2036, + "역명": "부전", + "시간": "08:19:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1069, + "역명": "부전", + "시간": "09:26:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2096, + "역명": "부전", + "시간": "11:17:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1127, + "역명": "부전", + "시간": "12:20:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2154, + "역명": "부전", + "시간": "14:11:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1185, + "역명": "부전", + "시간": "15:14:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2214, + "역명": "부전", + "시간": "17:08:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1243, + "역명": "부전", + "시간": "18:14:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2268, + "역명": "부전", + "시간": "20:07:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1289, + "역명": "부전", + "시간": "21:16:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2310, + "역명": "부전", + "시간": "23:11:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2030, + "역명": "부전", + "시간": "08:04:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1063, + "역명": "부전", + "시간": "09:08:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2090, + "역명": "부전", + "시간": "10:59:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1121, + "역명": "부전", + "시간": "12:02:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2148, + "역명": "부전", + "시간": "13:53:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1179, + "역명": "부전", + "시간": "14:56:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2206, + "역명": "부전", + "시간": "16:46:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1237, + "역명": "부전", + "시간": "17:53:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2262, + "역명": "부전", + "시간": "19:43:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1283, + "역명": "부전", + "시간": "20:49:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2038, + "역명": "부전", + "시간": "08:24:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2034, + "역명": "부전", + "시간": "08:14:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1067, + "역명": "부전", + "시간": "09:20:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2094, + "역명": "부전", + "시간": "11:11:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1125, + "역명": "부전", + "시간": "12:14:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2152, + "역명": "부전", + "시간": "14:05:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1183, + "역명": "부전", + "시간": "15:08:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2212, + "역명": "부전", + "시간": "17:03:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1241, + "역명": "부전", + "시간": "18:07:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2266, + "역명": "부전", + "시간": "19:59:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1287, + "역명": "부전", + "시간": "21:06:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 20, + "열번": 2308, + "역명": "부전", + "시간": "22:59:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2040, + "역명": "부전", + "시간": "08:29:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1071, + "역명": "부전", + "시간": "09:32:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2098, + "역명": "부전", + "시간": "11:23:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1129, + "역명": "부전", + "시간": "12:26:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2156, + "역명": "부전", + "시간": "14:17:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1187, + "역명": "부전", + "시간": "15:20:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2216, + "역명": "부전", + "시간": "17:14:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2044, + "역명": "부전", + "시간": "08:41:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1075, + "역명": "부전", + "시간": "09:44:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2102, + "역명": "부전", + "시간": "11:35:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1133, + "역명": "부전", + "시간": "12:38:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2160, + "역명": "부전", + "시간": "14:29:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1191, + "역명": "부전", + "시간": "15:32:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2220, + "역명": "부전", + "시간": "17:25:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1247, + "역명": "부전", + "시간": "18:28:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2272, + "역명": "부전", + "시간": "20:23:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1291, + "역명": "부전", + "시간": "21:26:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 22, + "열번": 2312, + "역명": "부전", + "시간": "23:23:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 23, + "열번": 1013, + "역명": "부전", + "시간": "06:39:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2042, + "역명": "부전", + "시간": "08:35:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1073, + "역명": "부전", + "시간": "09:38:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2100, + "역명": "부전", + "시간": "11:29:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1131, + "역명": "부전", + "시간": "12:32:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2158, + "역명": "부전", + "시간": "14:23:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1189, + "역명": "부전", + "시간": "15:26:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2218, + "역명": "부전", + "시간": "17:19:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1245, + "역명": "부전", + "시간": "18:21:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2270, + "역명": "부전", + "시간": "20:15:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "부전", + "시간": "08:53:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1079, + "역명": "부전", + "시간": "09:56:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2106, + "역명": "부전", + "시간": "11:47:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1137, + "역명": "부전", + "시간": "12:50:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2164, + "역명": "부전", + "시간": "14:41:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1195, + "역명": "부전", + "시간": "15:44:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2224, + "역명": "부전", + "시간": "17:36:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1251, + "역명": "부전", + "시간": "18:42:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "부전", + "시간": "07:07:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2052, + "역명": "부전", + "시간": "09:05:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1083, + "역명": "부전", + "시간": "10:08:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2110, + "역명": "부전", + "시간": "11:59:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1141, + "역명": "부전", + "시간": "13:02:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2168, + "역명": "부전", + "시간": "14:53:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1199, + "역명": "부전", + "시간": "15:56:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2228, + "역명": "부전", + "시간": "17:47:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1253, + "역명": "부전", + "시간": "18:49:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2276, + "역명": "부전", + "시간": "20:39:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1295, + "역명": "부전", + "시간": "21:46:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2314, + "역명": "부전", + "시간": "23:35:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 26, + "열번": 1029, + "역명": "부전", + "시간": "07:40:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1025, + "역명": "부전", + "시간": "07:30:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2058, + "역명": "부전", + "시간": "09:23:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1089, + "역명": "부전", + "시간": "10:26:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2116, + "역명": "부전", + "시간": "12:17:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1147, + "역명": "부전", + "시간": "13:20:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2174, + "역명": "부전", + "시간": "15:11:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1205, + "역명": "부전", + "시간": "16:14:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 27, + "열번": 2234, + "역명": "부전", + "시간": "18:04:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 28, + "열번": 1041, + "역명": "부전", + "시간": "08:10:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1031, + "역명": "부전", + "시간": "07:45:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2062, + "역명": "부전", + "시간": "09:35:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1093, + "역명": "부전", + "시간": "10:38:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2120, + "역명": "부전", + "시간": "12:29:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1151, + "역명": "부전", + "시간": "13:32:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2178, + "역명": "부전", + "시간": "15:23:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1209, + "역명": "부전", + "시간": "16:26:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2238, + "역명": "부전", + "시간": "18:16:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1261, + "역명": "부전", + "시간": "19:21:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2284, + "역명": "부전", + "시간": "21:11:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 29, + "열번": 1301, + "역명": "부전", + "시간": "22:16:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1049, + "역명": "부전", + "시간": "08:30:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2078, + "역명": "부전", + "시간": "10:23:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1109, + "역명": "부전", + "시간": "11:26:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2136, + "역명": "부전", + "시간": "13:17:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1167, + "역명": "부전", + "시간": "14:20:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2194, + "역명": "부전", + "시간": "16:11:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1225, + "역명": "부전", + "시간": "17:14:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1035, + "역명": "부전", + "시간": "07:55:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2066, + "역명": "부전", + "시간": "09:47:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1097, + "역명": "부전", + "시간": "10:50:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2124, + "역명": "부전", + "시간": "12:41:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1155, + "역명": "부전", + "시간": "13:44:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2182, + "역명": "부전", + "시간": "15:35:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1213, + "역명": "부전", + "시간": "16:38:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2242, + "역명": "부전", + "시간": "18:29:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1265, + "역명": "부전", + "시간": "19:37:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2288, + "역명": "부전", + "시간": "21:27:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1305, + "역명": "부전", + "시간": "22:36:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 32, + "열번": 2210, + "역명": "부전", + "시간": "16:57:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 32, + "열번": 1239, + "역명": "부전", + "시간": "18:00:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 32, + "열번": 2264, + "역명": "부전", + "시간": "19:51:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 32, + "열번": 1285, + "역명": "부전", + "시간": "20:57:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 32, + "열번": 2306, + "역명": "부전", + "시간": "22:49:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 32, + "열번": 7931, + "역명": "부전", + "시간": "23:58:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1037, + "역명": "부전", + "시간": "08:00:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2068, + "역명": "부전", + "시간": "09:53:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1099, + "역명": "부전", + "시간": "10:56:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2126, + "역명": "부전", + "시간": "12:47:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1157, + "역명": "부전", + "시간": "13:50:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2184, + "역명": "부전", + "시간": "15:41:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1215, + "역명": "부전", + "시간": "16:44:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2244, + "역명": "부전", + "시간": "18:36:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1267, + "역명": "부전", + "시간": "19:45:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 33, + "열번": 2290, + "역명": "부전", + "시간": "21:35:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1045, + "역명": "부전", + "시간": "08:20:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2074, + "역명": "부전", + "시간": "10:11:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1105, + "역명": "부전", + "시간": "11:14:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2132, + "역명": "부전", + "시간": "13:05:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1163, + "역명": "부전", + "시간": "14:08:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2190, + "역명": "부전", + "시간": "15:59:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1221, + "역명": "부전", + "시간": "17:02:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2250, + "역명": "부전", + "시간": "18:57:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1271, + "역명": "부전", + "시간": "20:01:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2294, + "역명": "부전", + "시간": "21:51:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1309, + "역명": "부전", + "시간": "22:57:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1055, + "역명": "부전", + "시간": "08:45:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2084, + "역명": "부전", + "시간": "10:41:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1115, + "역명": "부전", + "시간": "11:44:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2142, + "역명": "부전", + "시간": "13:35:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1173, + "역명": "부전", + "시간": "14:38:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2200, + "역명": "부전", + "시간": "16:29:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1231, + "역명": "부전", + "시간": "17:32:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2258, + "역명": "부전", + "시간": "19:27:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1279, + "역명": "부전", + "시간": "20:33:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2302, + "역명": "부전", + "시간": "22:29:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1315, + "역명": "부전", + "시간": "23:32:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "서면", + "시간": "05:53:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "서면", + "시간": "07:00:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2050, + "역명": "서면", + "시간": "08:57:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1081, + "역명": "서면", + "시간": "10:03:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2108, + "역명": "서면", + "시간": "11:51:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1139, + "역명": "서면", + "시간": "12:57:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2166, + "역명": "서면", + "시간": "14:45:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1197, + "역명": "서면", + "시간": "15:51:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2226, + "역명": "서면", + "시간": "17:39:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "서면", + "시간": "05:37:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "서면", + "시간": "06:51:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "서면", + "시간": "08:45:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1077, + "역명": "서면", + "시간": "09:51:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2104, + "역명": "서면", + "시간": "11:39:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1135, + "역명": "서면", + "시간": "12:45:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2162, + "역명": "서면", + "시간": "14:33:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1193, + "역명": "서면", + "시간": "15:39:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2222, + "역명": "서면", + "시간": "17:28:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1249, + "역명": "서면", + "시간": "18:36:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2274, + "역명": "서면", + "시간": "20:29:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1293, + "역명": "서면", + "시간": "21:37:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "서면", + "시간": "06:06:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "서면", + "시간": "07:18:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2054, + "역명": "서면", + "시간": "09:09:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1085, + "역명": "서면", + "시간": "10:15:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2112, + "역명": "서면", + "시간": "12:03:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1143, + "역명": "서면", + "시간": "13:09:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2170, + "역명": "서면", + "시간": "14:57:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1201, + "역명": "서면", + "시간": "16:03:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2230, + "역명": "서면", + "시간": "17:50:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1255, + "역명": "서면", + "시간": "18:58:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2278, + "역명": "서면", + "시간": "20:45:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "서면", + "시간": "06:19:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1023, + "역명": "서면", + "시간": "07:25:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2056, + "역명": "서면", + "시간": "09:15:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1087, + "역명": "서면", + "시간": "10:21:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2114, + "역명": "서면", + "시간": "12:09:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1145, + "역명": "서면", + "시간": "13:15:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2172, + "역명": "서면", + "시간": "15:03:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1203, + "역명": "서면", + "시간": "16:09:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2232, + "역명": "서면", + "시간": "17:56:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1257, + "역명": "서면", + "시간": "19:06:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2280, + "역명": "서면", + "시간": "20:53:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1297, + "역명": "서면", + "시간": "21:57:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2316, + "역명": "서면", + "시간": "23:44:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2012, + "역명": "서면", + "시간": "06:55:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1039, + "역명": "서면", + "시간": "08:06:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2070, + "역명": "서면", + "시간": "09:57:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1101, + "역명": "서면", + "시간": "11:03:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2128, + "역명": "서면", + "시간": "12:51:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1159, + "역명": "서면", + "시간": "13:57:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2186, + "역명": "서면", + "시간": "15:45:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1217, + "역명": "서면", + "시간": "16:51:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2246, + "역명": "서면", + "시간": "18:41:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2008, + "역명": "서면", + "시간": "06:31:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1027, + "역명": "서면", + "시간": "07:36:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2060, + "역명": "서면", + "시간": "09:27:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1091, + "역명": "서면", + "시간": "10:33:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2118, + "역명": "서면", + "시간": "12:21:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1149, + "역명": "서면", + "시간": "13:27:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2176, + "역명": "서면", + "시간": "15:15:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1207, + "역명": "서면", + "시간": "16:21:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2236, + "역명": "서면", + "시간": "18:08:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1259, + "역명": "서면", + "시간": "19:14:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2282, + "역명": "서면", + "시간": "21:01:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1299, + "역명": "서면", + "시간": "22:07:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 6, + "열번": 2318, + "역명": "서면", + "시간": "23:59:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1001, + "역명": "서면", + "시간": "05:37:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2018, + "역명": "서면", + "시간": "07:27:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1051, + "역명": "서면", + "시간": "08:36:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2080, + "역명": "서면", + "시간": "10:27:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1111, + "역명": "서면", + "시간": "11:33:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2138, + "역명": "서면", + "시간": "13:21:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1169, + "역명": "서면", + "시간": "14:27:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2196, + "역명": "서면", + "시간": "16:15:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1227, + "역명": "서면", + "시간": "17:21:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2254, + "역명": "서면", + "시간": "19:09:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1275, + "역명": "서면", + "시간": "20:18:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 7, + "열번": 2298, + "역명": "서면", + "시간": "22:07:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2010, + "역명": "서면", + "시간": "06:43:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1033, + "역명": "서면", + "시간": "07:51:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2064, + "역명": "서면", + "시간": "09:39:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1095, + "역명": "서면", + "시간": "10:45:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2122, + "역명": "서면", + "시간": "12:33:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1153, + "역명": "서면", + "시간": "13:39:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2180, + "역명": "서면", + "시간": "15:27:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1211, + "역명": "서면", + "시간": "16:33:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2240, + "역명": "서면", + "시간": "18:20:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1263, + "역명": "서면", + "시간": "19:30:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2286, + "역명": "서면", + "시간": "21:17:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1303, + "역명": "서면", + "시간": "22:27:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 9, + "열번": 1003, + "역명": "서면", + "시간": "05:46:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2020, + "역명": "서면", + "시간": "07:35:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1053, + "역명": "서면", + "시간": "08:41:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2082, + "역명": "서면", + "시간": "10:33:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1113, + "역명": "서면", + "시간": "11:39:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2140, + "역명": "서면", + "시간": "13:27:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1171, + "역명": "서면", + "시간": "14:33:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2198, + "역명": "서면", + "시간": "16:21:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1229, + "역명": "서면", + "시간": "17:27:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2256, + "역명": "서면", + "시간": "19:17:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1277, + "역명": "서면", + "시간": "20:26:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2300, + "역명": "서면", + "시간": "22:17:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1313, + "역명": "서면", + "시간": "23:21:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2014, + "역명": "서면", + "시간": "07:07:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1043, + "역명": "서면", + "시간": "08:16:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2072, + "역명": "서면", + "시간": "10:03:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1103, + "역명": "서면", + "시간": "11:09:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2130, + "역명": "서면", + "시간": "12:57:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1161, + "역명": "서면", + "시간": "14:03:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2188, + "역명": "서면", + "시간": "15:51:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1219, + "역명": "서면", + "시간": "16:57:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2248, + "역명": "서면", + "시간": "18:48:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1269, + "역명": "서면", + "시간": "19:54:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2292, + "역명": "서면", + "시간": "21:41:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1307, + "역명": "서면", + "시간": "22:47:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 11, + "열번": 2022, + "역명": "서면", + "시간": "07:41:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2016, + "역명": "서면", + "시간": "07:18:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1047, + "역명": "서면", + "시간": "08:26:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2076, + "역명": "서면", + "시간": "10:15:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1107, + "역명": "서면", + "시간": "11:21:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2134, + "역명": "서면", + "시간": "13:09:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1165, + "역명": "서면", + "시간": "14:15:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "서면", + "시간": "16:03:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1223, + "역명": "서면", + "시간": "17:09:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2252, + "역명": "서면", + "시간": "19:02:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1273, + "역명": "서면", + "시간": "20:10:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2296, + "역명": "서면", + "시간": "21:57:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1311, + "역명": "서면", + "시간": "23:09:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1005, + "역명": "서면", + "시간": "05:57:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2024, + "역명": "서면", + "시간": "07:47:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1057, + "역명": "서면", + "시간": "08:52:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2086, + "역명": "서면", + "시간": "10:45:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1117, + "역명": "서면", + "시간": "11:51:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2144, + "역명": "서면", + "시간": "13:39:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1175, + "역명": "서면", + "시간": "14:45:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2202, + "역명": "서면", + "시간": "16:33:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1233, + "역명": "서면", + "시간": "17:40:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2260, + "역명": "서면", + "시간": "19:33:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1281, + "역명": "서면", + "시간": "20:42:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2304, + "역명": "서면", + "시간": "22:37:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 13, + "열번": 1317, + "역명": "서면", + "시간": "23:44:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2026, + "역명": "서면", + "시간": "07:52:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 14, + "열번": 1059, + "역명": "서면", + "시간": "08:57:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1009, + "역명": "서면", + "시간": "06:19:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2032, + "역명": "서면", + "시간": "08:07:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1065, + "역명": "서면", + "시간": "09:15:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2092, + "역명": "서면", + "시간": "11:03:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1123, + "역명": "서면", + "시간": "12:09:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2150, + "역명": "서면", + "시간": "13:57:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1181, + "역명": "서면", + "시간": "15:03:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2208, + "역명": "서면", + "시간": "16:50:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 16, + "열번": 1007, + "역명": "서면", + "시간": "06:08:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2028, + "역명": "서면", + "시간": "07:57:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1061, + "역명": "서면", + "시간": "09:03:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2088, + "역명": "서면", + "시간": "10:51:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1119, + "역명": "서면", + "시간": "11:57:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2146, + "역명": "서면", + "시간": "13:45:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1177, + "역명": "서면", + "시간": "14:51:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2204, + "역명": "서면", + "시간": "16:39:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1235, + "역명": "서면", + "시간": "17:47:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 17, + "열번": 1011, + "역명": "서면", + "시간": "06:30:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2036, + "역명": "서면", + "시간": "08:17:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1069, + "역명": "서면", + "시간": "09:27:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2096, + "역명": "서면", + "시간": "11:15:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1127, + "역명": "서면", + "시간": "12:21:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2154, + "역명": "서면", + "시간": "14:09:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1185, + "역명": "서면", + "시간": "15:15:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2214, + "역명": "서면", + "시간": "17:06:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1243, + "역명": "서면", + "시간": "18:15:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2268, + "역명": "서면", + "시간": "20:05:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1289, + "역명": "서면", + "시간": "21:17:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2310, + "역명": "서면", + "시간": "23:09:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2030, + "역명": "서면", + "시간": "08:02:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1063, + "역명": "서면", + "시간": "09:09:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2090, + "역명": "서면", + "시간": "10:57:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1121, + "역명": "서면", + "시간": "12:03:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2148, + "역명": "서면", + "시간": "13:51:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1179, + "역명": "서면", + "시간": "14:57:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2206, + "역명": "서면", + "시간": "16:44:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1237, + "역명": "서면", + "시간": "17:54:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2262, + "역명": "서면", + "시간": "19:41:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1283, + "역명": "서면", + "시간": "20:50:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2038, + "역명": "서면", + "시간": "08:22:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2034, + "역명": "서면", + "시간": "08:12:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1067, + "역명": "서면", + "시간": "09:21:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2094, + "역명": "서면", + "시간": "11:09:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1125, + "역명": "서면", + "시간": "12:15:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2152, + "역명": "서면", + "시간": "14:03:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1183, + "역명": "서면", + "시간": "15:09:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2212, + "역명": "서면", + "시간": "17:01:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1241, + "역명": "서면", + "시간": "18:08:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2266, + "역명": "서면", + "시간": "19:57:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1287, + "역명": "서면", + "시간": "21:07:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 20, + "열번": 2308, + "역명": "서면", + "시간": "22:57:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2040, + "역명": "서면", + "시간": "08:27:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1071, + "역명": "서면", + "시간": "09:33:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2098, + "역명": "서면", + "시간": "11:21:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1129, + "역명": "서면", + "시간": "12:27:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2156, + "역명": "서면", + "시간": "14:15:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1187, + "역명": "서면", + "시간": "15:21:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2216, + "역명": "서면", + "시간": "17:12:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2044, + "역명": "서면", + "시간": "08:39:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1075, + "역명": "서면", + "시간": "09:45:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2102, + "역명": "서면", + "시간": "11:33:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1133, + "역명": "서면", + "시간": "12:39:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2160, + "역명": "서면", + "시간": "14:27:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1191, + "역명": "서면", + "시간": "15:33:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2220, + "역명": "서면", + "시간": "17:23:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1247, + "역명": "서면", + "시간": "18:29:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2272, + "역명": "서면", + "시간": "20:21:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1291, + "역명": "서면", + "시간": "21:27:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 22, + "열번": 2312, + "역명": "서면", + "시간": "23:21:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 23, + "열번": 1013, + "역명": "서면", + "시간": "06:41:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2042, + "역명": "서면", + "시간": "08:33:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1073, + "역명": "서면", + "시간": "09:39:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2100, + "역명": "서면", + "시간": "11:27:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1131, + "역명": "서면", + "시간": "12:33:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2158, + "역명": "서면", + "시간": "14:21:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1189, + "역명": "서면", + "시간": "15:27:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2218, + "역명": "서면", + "시간": "17:17:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1245, + "역명": "서면", + "시간": "18:22:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2270, + "역명": "서면", + "시간": "20:13:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "서면", + "시간": "08:51:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1079, + "역명": "서면", + "시간": "09:57:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2106, + "역명": "서면", + "시간": "11:45:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1137, + "역명": "서면", + "시간": "12:51:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2164, + "역명": "서면", + "시간": "14:39:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1195, + "역명": "서면", + "시간": "15:45:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2224, + "역명": "서면", + "시간": "17:34:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1251, + "역명": "서면", + "시간": "18:43:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "서면", + "시간": "07:09:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2052, + "역명": "서면", + "시간": "09:03:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1083, + "역명": "서면", + "시간": "10:09:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2110, + "역명": "서면", + "시간": "11:57:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1141, + "역명": "서면", + "시간": "13:03:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2168, + "역명": "서면", + "시간": "14:51:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1199, + "역명": "서면", + "시간": "15:57:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2228, + "역명": "서면", + "시간": "17:45:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1253, + "역명": "서면", + "시간": "18:50:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2276, + "역명": "서면", + "시간": "20:37:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1295, + "역명": "서면", + "시간": "21:47:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2314, + "역명": "서면", + "시간": "23:33:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 26, + "열번": 1029, + "역명": "서면", + "시간": "07:41:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1025, + "역명": "서면", + "시간": "07:31:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2058, + "역명": "서면", + "시간": "09:21:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1089, + "역명": "서면", + "시간": "10:27:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2116, + "역명": "서면", + "시간": "12:15:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1147, + "역명": "서면", + "시간": "13:21:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2174, + "역명": "서면", + "시간": "15:09:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1205, + "역명": "서면", + "시간": "16:15:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 27, + "열번": 2234, + "역명": "서면", + "시간": "18:02:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 28, + "열번": 1041, + "역명": "서면", + "시간": "08:11:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1031, + "역명": "서면", + "시간": "07:46:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2062, + "역명": "서면", + "시간": "09:33:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1093, + "역명": "서면", + "시간": "10:39:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2120, + "역명": "서면", + "시간": "12:27:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1151, + "역명": "서면", + "시간": "13:33:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2178, + "역명": "서면", + "시간": "15:21:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1209, + "역명": "서면", + "시간": "16:27:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2238, + "역명": "서면", + "시간": "18:14:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1261, + "역명": "서면", + "시간": "19:22:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2284, + "역명": "서면", + "시간": "21:09:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 29, + "열번": 1301, + "역명": "서면", + "시간": "22:17:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1049, + "역명": "서면", + "시간": "08:31:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2078, + "역명": "서면", + "시간": "10:21:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1109, + "역명": "서면", + "시간": "11:27:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2136, + "역명": "서면", + "시간": "13:15:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1167, + "역명": "서면", + "시간": "14:21:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2194, + "역명": "서면", + "시간": "16:09:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1225, + "역명": "서면", + "시간": "17:15:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1035, + "역명": "서면", + "시간": "07:56:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2066, + "역명": "서면", + "시간": "09:45:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1097, + "역명": "서면", + "시간": "10:51:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2124, + "역명": "서면", + "시간": "12:39:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1155, + "역명": "서면", + "시간": "13:45:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2182, + "역명": "서면", + "시간": "15:33:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1213, + "역명": "서면", + "시간": "16:39:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2242, + "역명": "서면", + "시간": "18:27:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1265, + "역명": "서면", + "시간": "19:38:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2288, + "역명": "서면", + "시간": "21:25:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1305, + "역명": "서면", + "시간": "22:37:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 32, + "열번": 2210, + "역명": "서면", + "시간": "16:55:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 32, + "열번": 1239, + "역명": "서면", + "시간": "18:01:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 32, + "열번": 2264, + "역명": "서면", + "시간": "19:49:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 32, + "열번": 1285, + "역명": "서면", + "시간": "20:58:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 32, + "열번": 2306, + "역명": "서면", + "시간": "22:47:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 32, + "열번": 7931, + "역명": "서면", + "시간": "00:00:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1037, + "역명": "서면", + "시간": "08:01:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2068, + "역명": "서면", + "시간": "09:51:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1099, + "역명": "서면", + "시간": "10:57:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2126, + "역명": "서면", + "시간": "12:45:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1157, + "역명": "서면", + "시간": "13:51:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2184, + "역명": "서면", + "시간": "15:39:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1215, + "역명": "서면", + "시간": "16:45:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2244, + "역명": "서면", + "시간": "18:34:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1267, + "역명": "서면", + "시간": "19:46:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 33, + "열번": 2290, + "역명": "서면", + "시간": "21:33:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1045, + "역명": "서면", + "시간": "08:21:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2074, + "역명": "서면", + "시간": "10:09:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1105, + "역명": "서면", + "시간": "11:15:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2132, + "역명": "서면", + "시간": "13:03:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1163, + "역명": "서면", + "시간": "14:09:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2190, + "역명": "서면", + "시간": "15:57:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1221, + "역명": "서면", + "시간": "17:03:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2250, + "역명": "서면", + "시간": "18:55:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1271, + "역명": "서면", + "시간": "20:02:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2294, + "역명": "서면", + "시간": "21:49:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1309, + "역명": "서면", + "시간": "22:58:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1055, + "역명": "서면", + "시간": "08:46:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2084, + "역명": "서면", + "시간": "10:39:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1115, + "역명": "서면", + "시간": "11:45:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2142, + "역명": "서면", + "시간": "13:33:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1173, + "역명": "서면", + "시간": "14:39:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2200, + "역명": "서면", + "시간": "16:27:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1231, + "역명": "서면", + "시간": "17:33:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2258, + "역명": "서면", + "시간": "19:25:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1279, + "역명": "서면", + "시간": "20:34:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2302, + "역명": "서면", + "시간": "22:27:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1315, + "역명": "서면", + "시간": "23:33:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "범내골", + "시간": "05:51:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "범내골", + "시간": "07:02:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2050, + "역명": "범내골", + "시간": "08:55:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1081, + "역명": "범내골", + "시간": "10:06:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2108, + "역명": "범내골", + "시간": "11:49:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1139, + "역명": "범내골", + "시간": "13:00:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2166, + "역명": "범내골", + "시간": "14:43:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1197, + "역명": "범내골", + "시간": "15:54:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2226, + "역명": "범내골", + "시간": "17:37:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "범내골", + "시간": "05:35:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "범내골", + "시간": "06:53:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "범내골", + "시간": "08:43:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1077, + "역명": "범내골", + "시간": "09:54:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2104, + "역명": "범내골", + "시간": "11:37:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1135, + "역명": "범내골", + "시간": "12:48:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2162, + "역명": "범내골", + "시간": "14:31:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1193, + "역명": "범내골", + "시간": "15:42:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2222, + "역명": "범내골", + "시간": "17:26:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1249, + "역명": "범내골", + "시간": "18:39:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2274, + "역명": "범내골", + "시간": "20:27:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1293, + "역명": "범내골", + "시간": "21:40:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "범내골", + "시간": "06:04:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "범내골", + "시간": "07:20:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2054, + "역명": "범내골", + "시간": "09:07:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1085, + "역명": "범내골", + "시간": "10:18:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2112, + "역명": "범내골", + "시간": "12:01:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1143, + "역명": "범내골", + "시간": "13:12:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2170, + "역명": "범내골", + "시간": "14:55:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1201, + "역명": "범내골", + "시간": "16:06:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2230, + "역명": "범내골", + "시간": "17:48:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1255, + "역명": "범내골", + "시간": "19:01:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2278, + "역명": "범내골", + "시간": "20:43:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "범내골", + "시간": "06:17:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1023, + "역명": "범내골", + "시간": "07:27:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2056, + "역명": "범내골", + "시간": "09:13:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1087, + "역명": "범내골", + "시간": "10:24:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2114, + "역명": "범내골", + "시간": "12:07:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1145, + "역명": "범내골", + "시간": "13:18:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2172, + "역명": "범내골", + "시간": "15:01:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1203, + "역명": "범내골", + "시간": "16:12:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2232, + "역명": "범내골", + "시간": "17:54:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1257, + "역명": "범내골", + "시간": "19:09:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2280, + "역명": "범내골", + "시간": "20:51:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1297, + "역명": "범내골", + "시간": "22:00:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2316, + "역명": "범내골", + "시간": "23:42:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2012, + "역명": "범내골", + "시간": "06:53:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1039, + "역명": "범내골", + "시간": "08:09:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2070, + "역명": "범내골", + "시간": "09:55:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1101, + "역명": "범내골", + "시간": "11:06:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2128, + "역명": "범내골", + "시간": "12:49:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1159, + "역명": "범내골", + "시간": "14:00:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2186, + "역명": "범내골", + "시간": "15:43:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1217, + "역명": "범내골", + "시간": "16:54:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2246, + "역명": "범내골", + "시간": "18:39:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2008, + "역명": "범내골", + "시간": "06:29:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1027, + "역명": "범내골", + "시간": "07:39:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2060, + "역명": "범내골", + "시간": "09:25:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1091, + "역명": "범내골", + "시간": "10:36:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2118, + "역명": "범내골", + "시간": "12:19:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1149, + "역명": "범내골", + "시간": "13:30:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2176, + "역명": "범내골", + "시간": "15:13:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1207, + "역명": "범내골", + "시간": "16:24:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2236, + "역명": "범내골", + "시간": "18:06:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1259, + "역명": "범내골", + "시간": "19:17:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2282, + "역명": "범내골", + "시간": "20:59:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1299, + "역명": "범내골", + "시간": "22:10:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 6, + "열번": 2318, + "역명": "범내골", + "시간": "23:57:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1001, + "역명": "범내골", + "시간": "05:41:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2018, + "역명": "범내골", + "시간": "07:25:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1051, + "역명": "범내골", + "시간": "08:39:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2080, + "역명": "범내골", + "시간": "10:25:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1111, + "역명": "범내골", + "시간": "11:36:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2138, + "역명": "범내골", + "시간": "13:19:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1169, + "역명": "범내골", + "시간": "14:30:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2196, + "역명": "범내골", + "시간": "16:13:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1227, + "역명": "범내골", + "시간": "17:24:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2254, + "역명": "범내골", + "시간": "19:07:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1275, + "역명": "범내골", + "시간": "20:21:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 7, + "열번": 2298, + "역명": "범내골", + "시간": "22:05:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2010, + "역명": "범내골", + "시간": "06:41:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1033, + "역명": "범내골", + "시간": "07:54:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2064, + "역명": "범내골", + "시간": "09:37:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1095, + "역명": "범내골", + "시간": "10:48:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2122, + "역명": "범내골", + "시간": "12:31:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1153, + "역명": "범내골", + "시간": "13:42:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2180, + "역명": "범내골", + "시간": "15:25:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1211, + "역명": "범내골", + "시간": "16:36:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2240, + "역명": "범내골", + "시간": "18:18:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1263, + "역명": "범내골", + "시간": "19:33:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2286, + "역명": "범내골", + "시간": "21:15:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1303, + "역명": "범내골", + "시간": "22:30:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 9, + "열번": 1003, + "역명": "범내골", + "시간": "05:48:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2020, + "역명": "범내골", + "시간": "07:33:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1053, + "역명": "범내골", + "시간": "08:44:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2082, + "역명": "범내골", + "시간": "10:31:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1113, + "역명": "범내골", + "시간": "11:42:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2140, + "역명": "범내골", + "시간": "13:25:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1171, + "역명": "범내골", + "시간": "14:36:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2198, + "역명": "범내골", + "시간": "16:19:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1229, + "역명": "범내골", + "시간": "17:30:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2256, + "역명": "범내골", + "시간": "19:15:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1277, + "역명": "범내골", + "시간": "20:29:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2300, + "역명": "범내골", + "시간": "22:15:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1313, + "역명": "범내골", + "시간": "23:24:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2014, + "역명": "범내골", + "시간": "07:05:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1043, + "역명": "범내골", + "시간": "08:19:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2072, + "역명": "범내골", + "시간": "10:01:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1103, + "역명": "범내골", + "시간": "11:12:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2130, + "역명": "범내골", + "시간": "12:55:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1161, + "역명": "범내골", + "시간": "14:06:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2188, + "역명": "범내골", + "시간": "15:49:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1219, + "역명": "범내골", + "시간": "17:00:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2248, + "역명": "범내골", + "시간": "18:46:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1269, + "역명": "범내골", + "시간": "19:57:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2292, + "역명": "범내골", + "시간": "21:39:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1307, + "역명": "범내골", + "시간": "22:50:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 11, + "열번": 2022, + "역명": "범내골", + "시간": "07:39:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2016, + "역명": "범내골", + "시간": "07:16:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1047, + "역명": "범내골", + "시간": "08:29:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2076, + "역명": "범내골", + "시간": "10:13:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1107, + "역명": "범내골", + "시간": "11:24:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2134, + "역명": "범내골", + "시간": "13:07:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1165, + "역명": "범내골", + "시간": "14:18:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "범내골", + "시간": "16:01:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1223, + "역명": "범내골", + "시간": "17:12:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2252, + "역명": "범내골", + "시간": "19:00:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1273, + "역명": "범내골", + "시간": "20:13:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2296, + "역명": "범내골", + "시간": "21:55:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1311, + "역명": "범내골", + "시간": "23:12:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1005, + "역명": "범내골", + "시간": "05:59:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2024, + "역명": "범내골", + "시간": "07:45:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1057, + "역명": "범내골", + "시간": "08:54:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2086, + "역명": "범내골", + "시간": "10:43:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1117, + "역명": "범내골", + "시간": "11:54:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2144, + "역명": "범내골", + "시간": "13:37:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1175, + "역명": "범내골", + "시간": "14:48:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2202, + "역명": "범내골", + "시간": "16:31:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1233, + "역명": "범내골", + "시간": "17:43:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2260, + "역명": "범내골", + "시간": "19:31:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1281, + "역명": "범내골", + "시간": "20:45:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2304, + "역명": "범내골", + "시간": "22:35:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 13, + "열번": 1317, + "역명": "범내골", + "시간": "23:48:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2026, + "역명": "범내골", + "시간": "07:50:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 14, + "열번": 1059, + "역명": "범내골", + "시간": "09:00:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1009, + "역명": "범내골", + "시간": "06:21:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2032, + "역명": "범내골", + "시간": "08:05:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1065, + "역명": "범내골", + "시간": "09:18:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2092, + "역명": "범내골", + "시간": "11:01:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1123, + "역명": "범내골", + "시간": "12:12:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2150, + "역명": "범내골", + "시간": "13:55:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1181, + "역명": "범내골", + "시간": "15:06:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2208, + "역명": "범내골", + "시간": "16:48:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 16, + "열번": 1007, + "역명": "범내골", + "시간": "06:10:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2028, + "역명": "범내골", + "시간": "07:55:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1061, + "역명": "범내골", + "시간": "09:06:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2088, + "역명": "범내골", + "시간": "10:49:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1119, + "역명": "범내골", + "시간": "12:00:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2146, + "역명": "범내골", + "시간": "13:43:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1177, + "역명": "범내골", + "시간": "14:54:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2204, + "역명": "범내골", + "시간": "16:37:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1235, + "역명": "범내골", + "시간": "17:50:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 17, + "열번": 1011, + "역명": "범내골", + "시간": "06:32:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2036, + "역명": "범내골", + "시간": "08:15:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1069, + "역명": "범내골", + "시간": "09:30:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2096, + "역명": "범내골", + "시간": "11:13:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1127, + "역명": "범내골", + "시간": "12:24:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2154, + "역명": "범내골", + "시간": "14:07:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1185, + "역명": "범내골", + "시간": "15:18:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2214, + "역명": "범내골", + "시간": "17:04:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1243, + "역명": "범내골", + "시간": "18:18:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2268, + "역명": "범내골", + "시간": "20:03:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1289, + "역명": "범내골", + "시간": "21:20:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2310, + "역명": "범내골", + "시간": "23:07:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2030, + "역명": "범내골", + "시간": "08:00:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1063, + "역명": "범내골", + "시간": "09:12:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2090, + "역명": "범내골", + "시간": "10:55:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1121, + "역명": "범내골", + "시간": "12:06:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2148, + "역명": "범내골", + "시간": "13:49:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1179, + "역명": "범내골", + "시간": "15:00:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2206, + "역명": "범내골", + "시간": "16:42:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1237, + "역명": "범내골", + "시간": "17:57:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2262, + "역명": "범내골", + "시간": "19:39:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1283, + "역명": "범내골", + "시간": "20:53:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2038, + "역명": "범내골", + "시간": "08:20:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2034, + "역명": "범내골", + "시간": "08:10:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1067, + "역명": "범내골", + "시간": "09:24:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2094, + "역명": "범내골", + "시간": "11:07:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1125, + "역명": "범내골", + "시간": "12:18:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2152, + "역명": "범내골", + "시간": "14:01:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1183, + "역명": "범내골", + "시간": "15:12:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2212, + "역명": "범내골", + "시간": "16:59:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1241, + "역명": "범내골", + "시간": "18:11:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2266, + "역명": "범내골", + "시간": "19:55:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1287, + "역명": "범내골", + "시간": "21:10:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 20, + "열번": 2308, + "역명": "범내골", + "시간": "22:55:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2040, + "역명": "범내골", + "시간": "08:25:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1071, + "역명": "범내골", + "시간": "09:36:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2098, + "역명": "범내골", + "시간": "11:19:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1129, + "역명": "범내골", + "시간": "12:30:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2156, + "역명": "범내골", + "시간": "14:13:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1187, + "역명": "범내골", + "시간": "15:24:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2216, + "역명": "범내골", + "시간": "17:10:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2044, + "역명": "범내골", + "시간": "08:37:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1075, + "역명": "범내골", + "시간": "09:48:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2102, + "역명": "범내골", + "시간": "11:31:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1133, + "역명": "범내골", + "시간": "12:42:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2160, + "역명": "범내골", + "시간": "14:25:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1191, + "역명": "범내골", + "시간": "15:36:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2220, + "역명": "범내골", + "시간": "17:21:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1247, + "역명": "범내골", + "시간": "18:32:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2272, + "역명": "범내골", + "시간": "20:19:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1291, + "역명": "범내골", + "시간": "21:30:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 22, + "열번": 2312, + "역명": "범내골", + "시간": "23:19:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 23, + "열번": 1013, + "역명": "범내골", + "시간": "06:43:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2042, + "역명": "범내골", + "시간": "08:31:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1073, + "역명": "범내골", + "시간": "09:42:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2100, + "역명": "범내골", + "시간": "11:25:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1131, + "역명": "범내골", + "시간": "12:36:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2158, + "역명": "범내골", + "시간": "14:19:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1189, + "역명": "범내골", + "시간": "15:30:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2218, + "역명": "범내골", + "시간": "17:15:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1245, + "역명": "범내골", + "시간": "18:25:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2270, + "역명": "범내골", + "시간": "20:11:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "범내골", + "시간": "08:49:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1079, + "역명": "범내골", + "시간": "10:00:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2106, + "역명": "범내골", + "시간": "11:43:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1137, + "역명": "범내골", + "시간": "12:54:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2164, + "역명": "범내골", + "시간": "14:37:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1195, + "역명": "범내골", + "시간": "15:48:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2224, + "역명": "범내골", + "시간": "17:32:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1251, + "역명": "범내골", + "시간": "18:46:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "범내골", + "시간": "07:11:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2052, + "역명": "범내골", + "시간": "09:01:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1083, + "역명": "범내골", + "시간": "10:12:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2110, + "역명": "범내골", + "시간": "11:55:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1141, + "역명": "범내골", + "시간": "13:06:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2168, + "역명": "범내골", + "시간": "14:49:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1199, + "역명": "범내골", + "시간": "16:00:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2228, + "역명": "범내골", + "시간": "17:43:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1253, + "역명": "범내골", + "시간": "18:53:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2276, + "역명": "범내골", + "시간": "20:35:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1295, + "역명": "범내골", + "시간": "21:50:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2314, + "역명": "범내골", + "시간": "23:31:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 26, + "열번": 1029, + "역명": "범내골", + "시간": "07:44:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1025, + "역명": "범내골", + "시간": "07:34:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2058, + "역명": "범내골", + "시간": "09:19:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1089, + "역명": "범내골", + "시간": "10:30:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2116, + "역명": "범내골", + "시간": "12:13:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1147, + "역명": "범내골", + "시간": "13:24:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2174, + "역명": "범내골", + "시간": "15:07:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1205, + "역명": "범내골", + "시간": "16:18:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 27, + "열번": 2234, + "역명": "범내골", + "시간": "18:00:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 28, + "열번": 1041, + "역명": "범내골", + "시간": "08:14:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1031, + "역명": "범내골", + "시간": "07:49:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2062, + "역명": "범내골", + "시간": "09:31:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1093, + "역명": "범내골", + "시간": "10:42:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2120, + "역명": "범내골", + "시간": "12:25:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1151, + "역명": "범내골", + "시간": "13:36:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2178, + "역명": "범내골", + "시간": "15:19:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1209, + "역명": "범내골", + "시간": "16:30:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2238, + "역명": "범내골", + "시간": "18:12:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1261, + "역명": "범내골", + "시간": "19:25:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2284, + "역명": "범내골", + "시간": "21:07:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 29, + "열번": 1301, + "역명": "범내골", + "시간": "22:20:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1049, + "역명": "범내골", + "시간": "08:34:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2078, + "역명": "범내골", + "시간": "10:19:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1109, + "역명": "범내골", + "시간": "11:30:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2136, + "역명": "범내골", + "시간": "13:13:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1167, + "역명": "범내골", + "시간": "14:24:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2194, + "역명": "범내골", + "시간": "16:07:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1225, + "역명": "범내골", + "시간": "17:18:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1035, + "역명": "범내골", + "시간": "07:59:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2066, + "역명": "범내골", + "시간": "09:43:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1097, + "역명": "범내골", + "시간": "10:54:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2124, + "역명": "범내골", + "시간": "12:37:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1155, + "역명": "범내골", + "시간": "13:48:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2182, + "역명": "범내골", + "시간": "15:31:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1213, + "역명": "범내골", + "시간": "16:42:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2242, + "역명": "범내골", + "시간": "18:25:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1265, + "역명": "범내골", + "시간": "19:41:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2288, + "역명": "범내골", + "시간": "21:23:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1305, + "역명": "범내골", + "시간": "22:40:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 32, + "열번": 2210, + "역명": "범내골", + "시간": "16:53:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 32, + "열번": 1239, + "역명": "범내골", + "시간": "18:04:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 32, + "열번": 2264, + "역명": "범내골", + "시간": "19:47:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 32, + "열번": 1285, + "역명": "범내골", + "시간": "21:01:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 32, + "열번": 2306, + "역명": "범내골", + "시간": "22:45:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 32, + "열번": 7931, + "역명": "범내골", + "시간": "00:04:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1037, + "역명": "범내골", + "시간": "08:04:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2068, + "역명": "범내골", + "시간": "09:49:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1099, + "역명": "범내골", + "시간": "11:00:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2126, + "역명": "범내골", + "시간": "12:43:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1157, + "역명": "범내골", + "시간": "13:54:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2184, + "역명": "범내골", + "시간": "15:37:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1215, + "역명": "범내골", + "시간": "16:48:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2244, + "역명": "범내골", + "시간": "18:32:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1267, + "역명": "범내골", + "시간": "19:49:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 33, + "열번": 2290, + "역명": "범내골", + "시간": "21:31:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1045, + "역명": "범내골", + "시간": "08:24:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2074, + "역명": "범내골", + "시간": "10:07:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1105, + "역명": "범내골", + "시간": "11:18:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2132, + "역명": "범내골", + "시간": "13:01:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1163, + "역명": "범내골", + "시간": "14:12:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2190, + "역명": "범내골", + "시간": "15:55:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1221, + "역명": "범내골", + "시간": "17:06:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2250, + "역명": "범내골", + "시간": "18:53:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1271, + "역명": "범내골", + "시간": "20:05:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2294, + "역명": "범내골", + "시간": "21:47:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1309, + "역명": "범내골", + "시간": "23:01:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1055, + "역명": "범내골", + "시간": "08:49:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2084, + "역명": "범내골", + "시간": "10:37:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1115, + "역명": "범내골", + "시간": "11:48:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2142, + "역명": "범내골", + "시간": "13:31:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1173, + "역명": "범내골", + "시간": "14:42:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2200, + "역명": "범내골", + "시간": "16:25:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1231, + "역명": "범내골", + "시간": "17:36:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2258, + "역명": "범내골", + "시간": "19:23:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1279, + "역명": "범내골", + "시간": "20:37:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2302, + "역명": "범내골", + "시간": "22:25:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1315, + "역명": "범내골", + "시간": "23:36:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "범일", + "시간": "05:49:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "범일", + "시간": "07:04:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2050, + "역명": "범일", + "시간": "08:54:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1081, + "역명": "범일", + "시간": "10:07:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2108, + "역명": "범일", + "시간": "11:48:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1139, + "역명": "범일", + "시간": "13:01:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2166, + "역명": "범일", + "시간": "14:42:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1197, + "역명": "범일", + "시간": "15:55:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2226, + "역명": "범일", + "시간": "17:36:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "범일", + "시간": "05:33:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "범일", + "시간": "06:55:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "범일", + "시간": "08:42:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1077, + "역명": "범일", + "시간": "09:55:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2104, + "역명": "범일", + "시간": "11:36:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1135, + "역명": "범일", + "시간": "12:49:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2162, + "역명": "범일", + "시간": "14:30:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1193, + "역명": "범일", + "시간": "15:43:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2222, + "역명": "범일", + "시간": "17:25:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1249, + "역명": "범일", + "시간": "18:40:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2274, + "역명": "범일", + "시간": "20:26:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1293, + "역명": "범일", + "시간": "21:41:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "범일", + "시간": "06:03:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "범일", + "시간": "07:22:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2054, + "역명": "범일", + "시간": "09:06:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1085, + "역명": "범일", + "시간": "10:19:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2112, + "역명": "범일", + "시간": "12:00:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1143, + "역명": "범일", + "시간": "13:13:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2170, + "역명": "범일", + "시간": "14:54:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1201, + "역명": "범일", + "시간": "16:07:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2230, + "역명": "범일", + "시간": "17:47:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1255, + "역명": "범일", + "시간": "19:02:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2278, + "역명": "범일", + "시간": "20:42:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "범일", + "시간": "06:15:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1023, + "역명": "범일", + "시간": "07:29:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2056, + "역명": "범일", + "시간": "09:12:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1087, + "역명": "범일", + "시간": "10:25:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2114, + "역명": "범일", + "시간": "12:06:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1145, + "역명": "범일", + "시간": "13:19:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2172, + "역명": "범일", + "시간": "15:00:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1203, + "역명": "범일", + "시간": "16:13:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2232, + "역명": "범일", + "시간": "17:53:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1257, + "역명": "범일", + "시간": "19:10:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2280, + "역명": "범일", + "시간": "20:50:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1297, + "역명": "범일", + "시간": "22:01:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2316, + "역명": "범일", + "시간": "23:40:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2012, + "역명": "범일", + "시간": "06:51:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1039, + "역명": "범일", + "시간": "08:10:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2070, + "역명": "범일", + "시간": "09:54:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1101, + "역명": "범일", + "시간": "11:07:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2128, + "역명": "범일", + "시간": "12:48:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1159, + "역명": "범일", + "시간": "14:01:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2186, + "역명": "범일", + "시간": "15:42:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1217, + "역명": "범일", + "시간": "16:55:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2246, + "역명": "범일", + "시간": "18:38:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2008, + "역명": "범일", + "시간": "06:27:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1027, + "역명": "범일", + "시간": "07:40:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2060, + "역명": "범일", + "시간": "09:24:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1091, + "역명": "범일", + "시간": "10:37:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2118, + "역명": "범일", + "시간": "12:18:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1149, + "역명": "범일", + "시간": "13:31:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2176, + "역명": "범일", + "시간": "15:12:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1207, + "역명": "범일", + "시간": "16:25:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2236, + "역명": "범일", + "시간": "18:05:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1259, + "역명": "범일", + "시간": "19:18:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2282, + "역명": "범일", + "시간": "20:58:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1299, + "역명": "범일", + "시간": "22:11:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 6, + "열번": 2318, + "역명": "범일", + "시간": "23:55:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1001, + "역명": "범일", + "시간": "05:42:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2018, + "역명": "범일", + "시간": "07:23:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1051, + "역명": "범일", + "시간": "08:40:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2080, + "역명": "범일", + "시간": "10:24:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1111, + "역명": "범일", + "시간": "11:37:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2138, + "역명": "범일", + "시간": "13:18:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1169, + "역명": "범일", + "시간": "14:31:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2196, + "역명": "범일", + "시간": "16:12:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1227, + "역명": "범일", + "시간": "17:25:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2254, + "역명": "범일", + "시간": "19:06:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1275, + "역명": "범일", + "시간": "20:22:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 7, + "열번": 2298, + "역명": "범일", + "시간": "22:04:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2010, + "역명": "범일", + "시간": "06:39:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1033, + "역명": "범일", + "시간": "07:55:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2064, + "역명": "범일", + "시간": "09:36:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1095, + "역명": "범일", + "시간": "10:49:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2122, + "역명": "범일", + "시간": "12:30:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1153, + "역명": "범일", + "시간": "13:43:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2180, + "역명": "범일", + "시간": "15:24:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1211, + "역명": "범일", + "시간": "16:37:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2240, + "역명": "범일", + "시간": "18:17:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1263, + "역명": "범일", + "시간": "19:34:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2286, + "역명": "범일", + "시간": "21:14:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1303, + "역명": "범일", + "시간": "22:31:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 9, + "열번": 1003, + "역명": "범일", + "시간": "05:50:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2020, + "역명": "범일", + "시간": "07:32:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1053, + "역명": "범일", + "시간": "08:45:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2082, + "역명": "범일", + "시간": "10:30:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1113, + "역명": "범일", + "시간": "11:43:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2140, + "역명": "범일", + "시간": "13:24:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1171, + "역명": "범일", + "시간": "14:37:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2198, + "역명": "범일", + "시간": "16:18:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1229, + "역명": "범일", + "시간": "17:31:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2256, + "역명": "범일", + "시간": "19:14:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1277, + "역명": "범일", + "시간": "20:30:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2300, + "역명": "범일", + "시간": "22:14:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1313, + "역명": "범일", + "시간": "23:25:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2014, + "역명": "범일", + "시간": "07:03:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1043, + "역명": "범일", + "시간": "08:20:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2072, + "역명": "범일", + "시간": "10:00:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1103, + "역명": "범일", + "시간": "11:13:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2130, + "역명": "범일", + "시간": "12:54:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1161, + "역명": "범일", + "시간": "14:07:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2188, + "역명": "범일", + "시간": "15:48:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1219, + "역명": "범일", + "시간": "17:01:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2248, + "역명": "범일", + "시간": "18:45:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1269, + "역명": "범일", + "시간": "19:58:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2292, + "역명": "범일", + "시간": "21:38:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1307, + "역명": "범일", + "시간": "22:51:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 11, + "열번": 2022, + "역명": "범일", + "시간": "07:38:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2016, + "역명": "범일", + "시간": "07:14:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1047, + "역명": "범일", + "시간": "08:30:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2076, + "역명": "범일", + "시간": "10:12:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1107, + "역명": "범일", + "시간": "11:25:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2134, + "역명": "범일", + "시간": "13:06:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1165, + "역명": "범일", + "시간": "14:19:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "범일", + "시간": "16:00:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1223, + "역명": "범일", + "시간": "17:13:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2252, + "역명": "범일", + "시간": "18:59:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1273, + "역명": "범일", + "시간": "20:14:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2296, + "역명": "범일", + "시간": "21:54:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1311, + "역명": "범일", + "시간": "23:13:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1005, + "역명": "범일", + "시간": "06:01:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2024, + "역명": "범일", + "시간": "07:44:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1057, + "역명": "범일", + "시간": "08:56:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2086, + "역명": "범일", + "시간": "10:42:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1117, + "역명": "범일", + "시간": "11:55:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2144, + "역명": "범일", + "시간": "13:36:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1175, + "역명": "범일", + "시간": "14:49:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2202, + "역명": "범일", + "시간": "16:30:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1233, + "역명": "범일", + "시간": "17:44:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2260, + "역명": "범일", + "시간": "19:30:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1281, + "역명": "범일", + "시간": "20:46:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2304, + "역명": "범일", + "시간": "22:34:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 13, + "열번": 1317, + "역명": "범일", + "시간": "23:49:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2026, + "역명": "범일", + "시간": "07:49:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 14, + "열번": 1059, + "역명": "범일", + "시간": "09:01:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1009, + "역명": "범일", + "시간": "06:23:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2032, + "역명": "범일", + "시간": "08:04:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1065, + "역명": "범일", + "시간": "09:19:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2092, + "역명": "범일", + "시간": "11:00:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1123, + "역명": "범일", + "시간": "12:13:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2150, + "역명": "범일", + "시간": "13:54:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1181, + "역명": "범일", + "시간": "15:07:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2208, + "역명": "범일", + "시간": "16:46:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 16, + "열번": 1007, + "역명": "범일", + "시간": "06:12:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2028, + "역명": "범일", + "시간": "07:54:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1061, + "역명": "범일", + "시간": "09:07:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2088, + "역명": "범일", + "시간": "10:48:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1119, + "역명": "범일", + "시간": "12:01:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2146, + "역명": "범일", + "시간": "13:42:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1177, + "역명": "범일", + "시간": "14:55:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2204, + "역명": "범일", + "시간": "16:35:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1235, + "역명": "범일", + "시간": "17:51:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 17, + "열번": 1011, + "역명": "범일", + "시간": "06:34:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2036, + "역명": "범일", + "시간": "08:14:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1069, + "역명": "범일", + "시간": "09:31:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2096, + "역명": "범일", + "시간": "11:12:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1127, + "역명": "범일", + "시간": "12:25:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2154, + "역명": "범일", + "시간": "14:06:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1185, + "역명": "범일", + "시간": "15:19:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2214, + "역명": "범일", + "시간": "17:03:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1243, + "역명": "범일", + "시간": "18:19:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2268, + "역명": "범일", + "시간": "20:02:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1289, + "역명": "범일", + "시간": "21:21:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2310, + "역명": "범일", + "시간": "23:06:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2030, + "역명": "범일", + "시간": "07:59:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1063, + "역명": "범일", + "시간": "09:13:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2090, + "역명": "범일", + "시간": "10:54:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1121, + "역명": "범일", + "시간": "12:07:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2148, + "역명": "범일", + "시간": "13:48:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1179, + "역명": "범일", + "시간": "15:01:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2206, + "역명": "범일", + "시간": "16:41:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1237, + "역명": "범일", + "시간": "17:58:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2262, + "역명": "범일", + "시간": "19:38:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1283, + "역명": "범일", + "시간": "20:54:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2038, + "역명": "범일", + "시간": "08:19:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2034, + "역명": "범일", + "시간": "08:09:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1067, + "역명": "범일", + "시간": "09:25:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2094, + "역명": "범일", + "시간": "11:06:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1125, + "역명": "범일", + "시간": "12:19:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2152, + "역명": "범일", + "시간": "14:00:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1183, + "역명": "범일", + "시간": "15:13:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2212, + "역명": "범일", + "시간": "16:57:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1241, + "역명": "범일", + "시간": "18:12:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2266, + "역명": "범일", + "시간": "19:54:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1287, + "역명": "범일", + "시간": "21:11:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 20, + "열번": 2308, + "역명": "범일", + "시간": "22:54:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2040, + "역명": "범일", + "시간": "08:24:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1071, + "역명": "범일", + "시간": "09:37:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2098, + "역명": "범일", + "시간": "11:18:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1129, + "역명": "범일", + "시간": "12:31:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2156, + "역명": "범일", + "시간": "14:12:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1187, + "역명": "범일", + "시간": "15:25:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2216, + "역명": "범일", + "시간": "17:08:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2044, + "역명": "범일", + "시간": "08:36:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1075, + "역명": "범일", + "시간": "09:49:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2102, + "역명": "범일", + "시간": "11:30:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1133, + "역명": "범일", + "시간": "12:43:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2160, + "역명": "범일", + "시간": "14:24:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1191, + "역명": "범일", + "시간": "15:37:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2220, + "역명": "범일", + "시간": "17:19:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1247, + "역명": "범일", + "시간": "18:33:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2272, + "역명": "범일", + "시간": "20:18:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1291, + "역명": "범일", + "시간": "21:31:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 22, + "열번": 2312, + "역명": "범일", + "시간": "23:18:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 23, + "열번": 1013, + "역명": "범일", + "시간": "06:45:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2042, + "역명": "범일", + "시간": "08:30:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1073, + "역명": "범일", + "시간": "09:43:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2100, + "역명": "범일", + "시간": "11:24:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1131, + "역명": "범일", + "시간": "12:37:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2158, + "역명": "범일", + "시간": "14:18:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1189, + "역명": "범일", + "시간": "15:31:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2218, + "역명": "범일", + "시간": "17:14:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1245, + "역명": "범일", + "시간": "18:26:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2270, + "역명": "범일", + "시간": "20:10:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "범일", + "시간": "08:48:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1079, + "역명": "범일", + "시간": "10:01:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2106, + "역명": "범일", + "시간": "11:42:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1137, + "역명": "범일", + "시간": "12:55:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2164, + "역명": "범일", + "시간": "14:36:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1195, + "역명": "범일", + "시간": "15:49:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2224, + "역명": "범일", + "시간": "17:30:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1251, + "역명": "범일", + "시간": "18:47:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "범일", + "시간": "07:13:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2052, + "역명": "범일", + "시간": "09:00:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1083, + "역명": "범일", + "시간": "10:13:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2110, + "역명": "범일", + "시간": "11:54:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1141, + "역명": "범일", + "시간": "13:07:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2168, + "역명": "범일", + "시간": "14:48:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1199, + "역명": "범일", + "시간": "16:01:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2228, + "역명": "범일", + "시간": "17:41:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1253, + "역명": "범일", + "시간": "18:54:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2276, + "역명": "범일", + "시간": "20:34:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1295, + "역명": "범일", + "시간": "21:51:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2314, + "역명": "범일", + "시간": "23:30:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 26, + "열번": 1029, + "역명": "범일", + "시간": "07:45:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1025, + "역명": "범일", + "시간": "07:35:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2058, + "역명": "범일", + "시간": "09:18:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1089, + "역명": "범일", + "시간": "10:31:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2116, + "역명": "범일", + "시간": "12:12:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1147, + "역명": "범일", + "시간": "13:25:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2174, + "역명": "범일", + "시간": "15:06:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1205, + "역명": "범일", + "시간": "16:19:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 27, + "열번": 2234, + "역명": "범일", + "시간": "17:59:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 28, + "열번": 1041, + "역명": "범일", + "시간": "08:15:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1031, + "역명": "범일", + "시간": "07:50:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2062, + "역명": "범일", + "시간": "09:30:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1093, + "역명": "범일", + "시간": "10:43:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2120, + "역명": "범일", + "시간": "12:24:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1151, + "역명": "범일", + "시간": "13:37:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2178, + "역명": "범일", + "시간": "15:18:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1209, + "역명": "범일", + "시간": "16:31:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2238, + "역명": "범일", + "시간": "18:11:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1261, + "역명": "범일", + "시간": "19:26:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2284, + "역명": "범일", + "시간": "21:06:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 29, + "열번": 1301, + "역명": "범일", + "시간": "22:21:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1049, + "역명": "범일", + "시간": "08:35:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2078, + "역명": "범일", + "시간": "10:18:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1109, + "역명": "범일", + "시간": "11:31:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2136, + "역명": "범일", + "시간": "13:12:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1167, + "역명": "범일", + "시간": "14:25:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2194, + "역명": "범일", + "시간": "16:06:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1225, + "역명": "범일", + "시간": "17:19:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1035, + "역명": "범일", + "시간": "08:00:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2066, + "역명": "범일", + "시간": "09:42:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1097, + "역명": "범일", + "시간": "10:55:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2124, + "역명": "범일", + "시간": "12:36:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1155, + "역명": "범일", + "시간": "13:49:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2182, + "역명": "범일", + "시간": "15:30:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1213, + "역명": "범일", + "시간": "16:43:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2242, + "역명": "범일", + "시간": "18:24:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1265, + "역명": "범일", + "시간": "19:42:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2288, + "역명": "범일", + "시간": "21:22:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1305, + "역명": "범일", + "시간": "22:41:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 32, + "열번": 2210, + "역명": "범일", + "시간": "16:52:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 32, + "열번": 1239, + "역명": "범일", + "시간": "18:05:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 32, + "열번": 2264, + "역명": "범일", + "시간": "19:46:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 32, + "열번": 1285, + "역명": "범일", + "시간": "21:02:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 32, + "열번": 2306, + "역명": "범일", + "시간": "22:44:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 32, + "열번": 7931, + "역명": "범일", + "시간": "00:05:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1037, + "역명": "범일", + "시간": "08:05:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2068, + "역명": "범일", + "시간": "09:48:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1099, + "역명": "범일", + "시간": "11:01:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2126, + "역명": "범일", + "시간": "12:42:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1157, + "역명": "범일", + "시간": "13:55:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2184, + "역명": "범일", + "시간": "15:36:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1215, + "역명": "범일", + "시간": "16:49:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2244, + "역명": "범일", + "시간": "18:31:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1267, + "역명": "범일", + "시간": "19:50:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 33, + "열번": 2290, + "역명": "범일", + "시간": "21:30:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1045, + "역명": "범일", + "시간": "08:25:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2074, + "역명": "범일", + "시간": "10:06:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1105, + "역명": "범일", + "시간": "11:19:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2132, + "역명": "범일", + "시간": "13:00:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1163, + "역명": "범일", + "시간": "14:13:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2190, + "역명": "범일", + "시간": "15:54:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1221, + "역명": "범일", + "시간": "17:07:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2250, + "역명": "범일", + "시간": "18:52:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1271, + "역명": "범일", + "시간": "20:06:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2294, + "역명": "범일", + "시간": "21:46:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1309, + "역명": "범일", + "시간": "23:02:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1055, + "역명": "범일", + "시간": "08:50:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2084, + "역명": "범일", + "시간": "10:36:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1115, + "역명": "범일", + "시간": "11:49:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2142, + "역명": "범일", + "시간": "13:30:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1173, + "역명": "범일", + "시간": "14:43:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2200, + "역명": "범일", + "시간": "16:24:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1231, + "역명": "범일", + "시간": "17:37:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2258, + "역명": "범일", + "시간": "19:22:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1279, + "역명": "범일", + "시간": "20:38:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2302, + "역명": "범일", + "시간": "22:24:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1315, + "역명": "범일", + "시간": "23:37:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "좌천", + "시간": "05:47:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "좌천", + "시간": "07:06:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2050, + "역명": "좌천", + "시간": "08:52:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1081, + "역명": "좌천", + "시간": "10:09:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2108, + "역명": "좌천", + "시간": "11:46:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1139, + "역명": "좌천", + "시간": "13:03:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2166, + "역명": "좌천", + "시간": "14:40:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1197, + "역명": "좌천", + "시간": "15:57:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2226, + "역명": "좌천", + "시간": "17:34:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "좌천", + "시간": "05:31:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "좌천", + "시간": "06:57:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "좌천", + "시간": "08:40:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1077, + "역명": "좌천", + "시간": "09:57:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2104, + "역명": "좌천", + "시간": "11:34:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1135, + "역명": "좌천", + "시간": "12:51:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2162, + "역명": "좌천", + "시간": "14:28:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1193, + "역명": "좌천", + "시간": "15:45:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2222, + "역명": "좌천", + "시간": "17:23:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1249, + "역명": "좌천", + "시간": "18:42:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2274, + "역명": "좌천", + "시간": "20:24:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1293, + "역명": "좌천", + "시간": "21:43:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "좌천", + "시간": "06:01:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "좌천", + "시간": "07:24:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2054, + "역명": "좌천", + "시간": "09:04:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1085, + "역명": "좌천", + "시간": "10:21:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2112, + "역명": "좌천", + "시간": "11:58:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1143, + "역명": "좌천", + "시간": "13:15:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2170, + "역명": "좌천", + "시간": "14:52:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1201, + "역명": "좌천", + "시간": "16:09:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2230, + "역명": "좌천", + "시간": "17:45:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1255, + "역명": "좌천", + "시간": "19:04:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2278, + "역명": "좌천", + "시간": "20:40:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "좌천", + "시간": "06:13:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1023, + "역명": "좌천", + "시간": "07:31:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2056, + "역명": "좌천", + "시간": "09:10:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1087, + "역명": "좌천", + "시간": "10:27:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2114, + "역명": "좌천", + "시간": "12:04:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1145, + "역명": "좌천", + "시간": "13:21:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2172, + "역명": "좌천", + "시간": "14:58:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1203, + "역명": "좌천", + "시간": "16:15:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2232, + "역명": "좌천", + "시간": "17:51:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1257, + "역명": "좌천", + "시간": "19:12:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2280, + "역명": "좌천", + "시간": "20:48:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1297, + "역명": "좌천", + "시간": "22:03:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2316, + "역명": "좌천", + "시간": "23:38:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2012, + "역명": "좌천", + "시간": "06:49:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1039, + "역명": "좌천", + "시간": "08:12:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2070, + "역명": "좌천", + "시간": "09:52:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1101, + "역명": "좌천", + "시간": "11:09:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2128, + "역명": "좌천", + "시간": "12:46:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1159, + "역명": "좌천", + "시간": "14:03:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2186, + "역명": "좌천", + "시간": "15:40:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1217, + "역명": "좌천", + "시간": "16:57:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2246, + "역명": "좌천", + "시간": "18:36:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2008, + "역명": "좌천", + "시간": "06:25:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1027, + "역명": "좌천", + "시간": "07:42:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2060, + "역명": "좌천", + "시간": "09:22:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1091, + "역명": "좌천", + "시간": "10:39:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2118, + "역명": "좌천", + "시간": "12:16:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1149, + "역명": "좌천", + "시간": "13:33:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2176, + "역명": "좌천", + "시간": "15:10:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1207, + "역명": "좌천", + "시간": "16:27:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2236, + "역명": "좌천", + "시간": "18:03:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1259, + "역명": "좌천", + "시간": "19:20:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2282, + "역명": "좌천", + "시간": "20:56:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1299, + "역명": "좌천", + "시간": "22:13:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 6, + "열번": 2318, + "역명": "좌천", + "시간": "23:54:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1001, + "역명": "좌천", + "시간": "05:44:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2018, + "역명": "좌천", + "시간": "07:21:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1051, + "역명": "좌천", + "시간": "08:42:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2080, + "역명": "좌천", + "시간": "10:22:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1111, + "역명": "좌천", + "시간": "11:39:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2138, + "역명": "좌천", + "시간": "13:16:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1169, + "역명": "좌천", + "시간": "14:33:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2196, + "역명": "좌천", + "시간": "16:10:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1227, + "역명": "좌천", + "시간": "17:27:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2254, + "역명": "좌천", + "시간": "19:04:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1275, + "역명": "좌천", + "시간": "20:24:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 7, + "열번": 2298, + "역명": "좌천", + "시간": "22:02:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2010, + "역명": "좌천", + "시간": "06:37:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1033, + "역명": "좌천", + "시간": "07:57:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2064, + "역명": "좌천", + "시간": "09:34:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1095, + "역명": "좌천", + "시간": "10:51:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2122, + "역명": "좌천", + "시간": "12:28:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1153, + "역명": "좌천", + "시간": "13:45:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2180, + "역명": "좌천", + "시간": "15:22:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1211, + "역명": "좌천", + "시간": "16:39:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2240, + "역명": "좌천", + "시간": "18:15:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1263, + "역명": "좌천", + "시간": "19:36:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2286, + "역명": "좌천", + "시간": "21:12:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1303, + "역명": "좌천", + "시간": "22:33:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 9, + "열번": 1003, + "역명": "좌천", + "시간": "05:52:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2020, + "역명": "좌천", + "시간": "07:30:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1053, + "역명": "좌천", + "시간": "08:47:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2082, + "역명": "좌천", + "시간": "10:28:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1113, + "역명": "좌천", + "시간": "11:45:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2140, + "역명": "좌천", + "시간": "13:22:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1171, + "역명": "좌천", + "시간": "14:39:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2198, + "역명": "좌천", + "시간": "16:16:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1229, + "역명": "좌천", + "시간": "17:33:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2256, + "역명": "좌천", + "시간": "19:12:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1277, + "역명": "좌천", + "시간": "20:32:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2300, + "역명": "좌천", + "시간": "22:12:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1313, + "역명": "좌천", + "시간": "23:27:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2014, + "역명": "좌천", + "시간": "07:01:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1043, + "역명": "좌천", + "시간": "08:22:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2072, + "역명": "좌천", + "시간": "09:58:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1103, + "역명": "좌천", + "시간": "11:15:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2130, + "역명": "좌천", + "시간": "12:52:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1161, + "역명": "좌천", + "시간": "14:09:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2188, + "역명": "좌천", + "시간": "15:46:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1219, + "역명": "좌천", + "시간": "17:03:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2248, + "역명": "좌천", + "시간": "18:43:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1269, + "역명": "좌천", + "시간": "20:00:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2292, + "역명": "좌천", + "시간": "21:36:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1307, + "역명": "좌천", + "시간": "22:53:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 11, + "열번": 2022, + "역명": "좌천", + "시간": "07:36:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2016, + "역명": "좌천", + "시간": "07:12:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1047, + "역명": "좌천", + "시간": "08:32:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2076, + "역명": "좌천", + "시간": "10:10:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1107, + "역명": "좌천", + "시간": "11:27:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2134, + "역명": "좌천", + "시간": "13:04:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1165, + "역명": "좌천", + "시간": "14:21:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "좌천", + "시간": "15:58:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1223, + "역명": "좌천", + "시간": "17:15:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2252, + "역명": "좌천", + "시간": "18:57:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1273, + "역명": "좌천", + "시간": "20:16:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2296, + "역명": "좌천", + "시간": "21:52:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1311, + "역명": "좌천", + "시간": "23:15:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1005, + "역명": "좌천", + "시간": "06:03:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2024, + "역명": "좌천", + "시간": "07:42:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1057, + "역명": "좌천", + "시간": "08:58:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2086, + "역명": "좌천", + "시간": "10:40:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1117, + "역명": "좌천", + "시간": "11:57:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2144, + "역명": "좌천", + "시간": "13:34:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1175, + "역명": "좌천", + "시간": "14:51:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2202, + "역명": "좌천", + "시간": "16:28:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1233, + "역명": "좌천", + "시간": "17:46:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2260, + "역명": "좌천", + "시간": "19:28:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1281, + "역명": "좌천", + "시간": "20:48:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2304, + "역명": "좌천", + "시간": "22:32:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 13, + "열번": 1317, + "역명": "좌천", + "시간": "23:51:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2026, + "역명": "좌천", + "시간": "07:47:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 14, + "열번": 1059, + "역명": "좌천", + "시간": "09:03:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1009, + "역명": "좌천", + "시간": "06:25:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2032, + "역명": "좌천", + "시간": "08:02:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1065, + "역명": "좌천", + "시간": "09:21:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2092, + "역명": "좌천", + "시간": "10:58:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1123, + "역명": "좌천", + "시간": "12:15:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2150, + "역명": "좌천", + "시간": "13:52:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1181, + "역명": "좌천", + "시간": "15:09:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2208, + "역명": "좌천", + "시간": "16:44:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 16, + "열번": 1007, + "역명": "좌천", + "시간": "06:14:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2028, + "역명": "좌천", + "시간": "07:52:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1061, + "역명": "좌천", + "시간": "09:09:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2088, + "역명": "좌천", + "시간": "10:46:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1119, + "역명": "좌천", + "시간": "12:03:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2146, + "역명": "좌천", + "시간": "13:40:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1177, + "역명": "좌천", + "시간": "14:57:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2204, + "역명": "좌천", + "시간": "16:33:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1235, + "역명": "좌천", + "시간": "17:53:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 17, + "열번": 1011, + "역명": "좌천", + "시간": "06:36:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2036, + "역명": "좌천", + "시간": "08:12:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1069, + "역명": "좌천", + "시간": "09:33:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2096, + "역명": "좌천", + "시간": "11:10:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1127, + "역명": "좌천", + "시간": "12:27:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2154, + "역명": "좌천", + "시간": "14:04:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1185, + "역명": "좌천", + "시간": "15:21:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2214, + "역명": "좌천", + "시간": "17:01:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1243, + "역명": "좌천", + "시간": "18:21:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2268, + "역명": "좌천", + "시간": "20:00:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1289, + "역명": "좌천", + "시간": "21:23:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2310, + "역명": "좌천", + "시간": "23:04:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2030, + "역명": "좌천", + "시간": "07:57:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1063, + "역명": "좌천", + "시간": "09:15:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2090, + "역명": "좌천", + "시간": "10:52:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1121, + "역명": "좌천", + "시간": "12:09:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2148, + "역명": "좌천", + "시간": "13:46:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1179, + "역명": "좌천", + "시간": "15:03:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2206, + "역명": "좌천", + "시간": "16:39:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1237, + "역명": "좌천", + "시간": "18:00:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2262, + "역명": "좌천", + "시간": "19:36:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1283, + "역명": "좌천", + "시간": "20:56:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2038, + "역명": "좌천", + "시간": "08:17:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2034, + "역명": "좌천", + "시간": "08:07:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1067, + "역명": "좌천", + "시간": "09:27:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2094, + "역명": "좌천", + "시간": "11:04:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1125, + "역명": "좌천", + "시간": "12:21:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2152, + "역명": "좌천", + "시간": "13:58:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1183, + "역명": "좌천", + "시간": "15:15:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2212, + "역명": "좌천", + "시간": "16:55:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1241, + "역명": "좌천", + "시간": "18:14:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2266, + "역명": "좌천", + "시간": "19:52:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1287, + "역명": "좌천", + "시간": "21:13:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 20, + "열번": 2308, + "역명": "좌천", + "시간": "22:52:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2040, + "역명": "좌천", + "시간": "08:22:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1071, + "역명": "좌천", + "시간": "09:39:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2098, + "역명": "좌천", + "시간": "11:16:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1129, + "역명": "좌천", + "시간": "12:33:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2156, + "역명": "좌천", + "시간": "14:10:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1187, + "역명": "좌천", + "시간": "15:27:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2216, + "역명": "좌천", + "시간": "17:06:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2044, + "역명": "좌천", + "시간": "08:34:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1075, + "역명": "좌천", + "시간": "09:51:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2102, + "역명": "좌천", + "시간": "11:28:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1133, + "역명": "좌천", + "시간": "12:45:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2160, + "역명": "좌천", + "시간": "14:22:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1191, + "역명": "좌천", + "시간": "15:39:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2220, + "역명": "좌천", + "시간": "17:17:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1247, + "역명": "좌천", + "시간": "18:35:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2272, + "역명": "좌천", + "시간": "20:16:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1291, + "역명": "좌천", + "시간": "21:33:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 22, + "열번": 2312, + "역명": "좌천", + "시간": "23:16:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 23, + "열번": 1013, + "역명": "좌천", + "시간": "06:47:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2042, + "역명": "좌천", + "시간": "08:28:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1073, + "역명": "좌천", + "시간": "09:45:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2100, + "역명": "좌천", + "시간": "11:22:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1131, + "역명": "좌천", + "시간": "12:39:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2158, + "역명": "좌천", + "시간": "14:16:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1189, + "역명": "좌천", + "시간": "15:33:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2218, + "역명": "좌천", + "시간": "17:12:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1245, + "역명": "좌천", + "시간": "18:28:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2270, + "역명": "좌천", + "시간": "20:08:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "좌천", + "시간": "08:46:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1079, + "역명": "좌천", + "시간": "10:03:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2106, + "역명": "좌천", + "시간": "11:40:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1137, + "역명": "좌천", + "시간": "12:57:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2164, + "역명": "좌천", + "시간": "14:34:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1195, + "역명": "좌천", + "시간": "15:51:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2224, + "역명": "좌천", + "시간": "17:28:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1251, + "역명": "좌천", + "시간": "18:49:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "좌천", + "시간": "07:15:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2052, + "역명": "좌천", + "시간": "08:58:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1083, + "역명": "좌천", + "시간": "10:15:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2110, + "역명": "좌천", + "시간": "11:52:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1141, + "역명": "좌천", + "시간": "13:09:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2168, + "역명": "좌천", + "시간": "14:46:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1199, + "역명": "좌천", + "시간": "16:03:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2228, + "역명": "좌천", + "시간": "17:39:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1253, + "역명": "좌천", + "시간": "18:56:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2276, + "역명": "좌천", + "시간": "20:32:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1295, + "역명": "좌천", + "시간": "21:53:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2314, + "역명": "좌천", + "시간": "23:28:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 26, + "열번": 1029, + "역명": "좌천", + "시간": "07:47:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1025, + "역명": "좌천", + "시간": "07:37:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2058, + "역명": "좌천", + "시간": "09:16:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1089, + "역명": "좌천", + "시간": "10:33:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2116, + "역명": "좌천", + "시간": "12:10:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1147, + "역명": "좌천", + "시간": "13:27:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2174, + "역명": "좌천", + "시간": "15:04:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1205, + "역명": "좌천", + "시간": "16:21:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 27, + "열번": 2234, + "역명": "좌천", + "시간": "17:57:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 28, + "열번": 1041, + "역명": "좌천", + "시간": "08:17:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1031, + "역명": "좌천", + "시간": "07:52:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2062, + "역명": "좌천", + "시간": "09:28:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1093, + "역명": "좌천", + "시간": "10:45:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2120, + "역명": "좌천", + "시간": "12:22:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1151, + "역명": "좌천", + "시간": "13:39:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2178, + "역명": "좌천", + "시간": "15:16:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1209, + "역명": "좌천", + "시간": "16:33:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2238, + "역명": "좌천", + "시간": "18:09:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1261, + "역명": "좌천", + "시간": "19:28:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2284, + "역명": "좌천", + "시간": "21:04:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 29, + "열번": 1301, + "역명": "좌천", + "시간": "22:23:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1049, + "역명": "좌천", + "시간": "08:37:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2078, + "역명": "좌천", + "시간": "10:16:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1109, + "역명": "좌천", + "시간": "11:33:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2136, + "역명": "좌천", + "시간": "13:10:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1167, + "역명": "좌천", + "시간": "14:27:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2194, + "역명": "좌천", + "시간": "16:04:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1225, + "역명": "좌천", + "시간": "17:21:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1035, + "역명": "좌천", + "시간": "08:02:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2066, + "역명": "좌천", + "시간": "09:40:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1097, + "역명": "좌천", + "시간": "10:57:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2124, + "역명": "좌천", + "시간": "12:34:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1155, + "역명": "좌천", + "시간": "13:51:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2182, + "역명": "좌천", + "시간": "15:28:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1213, + "역명": "좌천", + "시간": "16:45:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2242, + "역명": "좌천", + "시간": "18:22:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1265, + "역명": "좌천", + "시간": "19:44:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2288, + "역명": "좌천", + "시간": "21:20:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1305, + "역명": "좌천", + "시간": "22:43:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 32, + "열번": 2210, + "역명": "좌천", + "시간": "16:50:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 32, + "열번": 1239, + "역명": "좌천", + "시간": "18:07:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 32, + "열번": 2264, + "역명": "좌천", + "시간": "19:44:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 32, + "열번": 1285, + "역명": "좌천", + "시간": "21:04:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 32, + "열번": 2306, + "역명": "좌천", + "시간": "22:42:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 32, + "열번": 7931, + "역명": "좌천", + "시간": "00:07:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1037, + "역명": "좌천", + "시간": "08:07:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2068, + "역명": "좌천", + "시간": "09:46:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1099, + "역명": "좌천", + "시간": "11:03:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2126, + "역명": "좌천", + "시간": "12:40:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1157, + "역명": "좌천", + "시간": "13:57:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2184, + "역명": "좌천", + "시간": "15:34:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1215, + "역명": "좌천", + "시간": "16:51:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2244, + "역명": "좌천", + "시간": "18:29:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1267, + "역명": "좌천", + "시간": "19:52:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 33, + "열번": 2290, + "역명": "좌천", + "시간": "21:28:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1045, + "역명": "좌천", + "시간": "08:27:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2074, + "역명": "좌천", + "시간": "10:04:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1105, + "역명": "좌천", + "시간": "11:21:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2132, + "역명": "좌천", + "시간": "12:58:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1163, + "역명": "좌천", + "시간": "14:15:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2190, + "역명": "좌천", + "시간": "15:52:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1221, + "역명": "좌천", + "시간": "17:09:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2250, + "역명": "좌천", + "시간": "18:50:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1271, + "역명": "좌천", + "시간": "20:08:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2294, + "역명": "좌천", + "시간": "21:44:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1309, + "역명": "좌천", + "시간": "23:04:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1055, + "역명": "좌천", + "시간": "08:52:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2084, + "역명": "좌천", + "시간": "10:34:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1115, + "역명": "좌천", + "시간": "11:51:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2142, + "역명": "좌천", + "시간": "13:28:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1173, + "역명": "좌천", + "시간": "14:45:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2200, + "역명": "좌천", + "시간": "16:22:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1231, + "역명": "좌천", + "시간": "17:39:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2258, + "역명": "좌천", + "시간": "19:20:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1279, + "역명": "좌천", + "시간": "20:40:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2302, + "역명": "좌천", + "시간": "22:22:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1315, + "역명": "좌천", + "시간": "23:39:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "부산진", + "시간": "05:46:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "부산진", + "시간": "07:08:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2050, + "역명": "부산진", + "시간": "08:50:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1081, + "역명": "부산진", + "시간": "10:11:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2108, + "역명": "부산진", + "시간": "11:44:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1139, + "역명": "부산진", + "시간": "13:05:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2166, + "역명": "부산진", + "시간": "14:38:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1197, + "역명": "부산진", + "시간": "15:59:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2226, + "역명": "부산진", + "시간": "17:32:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "부산진", + "시간": "05:29:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "부산진", + "시간": "06:59:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "부산진", + "시간": "08:38:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1077, + "역명": "부산진", + "시간": "09:59:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2104, + "역명": "부산진", + "시간": "11:32:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1135, + "역명": "부산진", + "시간": "12:53:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2162, + "역명": "부산진", + "시간": "14:26:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1193, + "역명": "부산진", + "시간": "15:47:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2222, + "역명": "부산진", + "시간": "17:21:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1249, + "역명": "부산진", + "시간": "18:44:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2274, + "역명": "부산진", + "시간": "20:22:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1293, + "역명": "부산진", + "시간": "21:45:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "부산진", + "시간": "05:59:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "부산진", + "시간": "07:26:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2054, + "역명": "부산진", + "시간": "09:02:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1085, + "역명": "부산진", + "시간": "10:23:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2112, + "역명": "부산진", + "시간": "11:56:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1143, + "역명": "부산진", + "시간": "13:17:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2170, + "역명": "부산진", + "시간": "14:50:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1201, + "역명": "부산진", + "시간": "16:11:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2230, + "역명": "부산진", + "시간": "17:43:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1255, + "역명": "부산진", + "시간": "19:06:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2278, + "역명": "부산진", + "시간": "20:38:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "부산진", + "시간": "06:12:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1023, + "역명": "부산진", + "시간": "07:33:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2056, + "역명": "부산진", + "시간": "09:08:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1087, + "역명": "부산진", + "시간": "10:29:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2114, + "역명": "부산진", + "시간": "12:02:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1145, + "역명": "부산진", + "시간": "13:23:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2172, + "역명": "부산진", + "시간": "14:56:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1203, + "역명": "부산진", + "시간": "16:17:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2232, + "역명": "부산진", + "시간": "17:49:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1257, + "역명": "부산진", + "시간": "19:14:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2280, + "역명": "부산진", + "시간": "20:46:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1297, + "역명": "부산진", + "시간": "22:05:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2316, + "역명": "부산진", + "시간": "23:36:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2012, + "역명": "부산진", + "시간": "06:48:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1039, + "역명": "부산진", + "시간": "08:14:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2070, + "역명": "부산진", + "시간": "09:50:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1101, + "역명": "부산진", + "시간": "11:11:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2128, + "역명": "부산진", + "시간": "12:44:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1159, + "역명": "부산진", + "시간": "14:05:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2186, + "역명": "부산진", + "시간": "15:38:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1217, + "역명": "부산진", + "시간": "16:59:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2246, + "역명": "부산진", + "시간": "18:34:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2008, + "역명": "부산진", + "시간": "06:24:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1027, + "역명": "부산진", + "시간": "07:44:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2060, + "역명": "부산진", + "시간": "09:20:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1091, + "역명": "부산진", + "시간": "10:41:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2118, + "역명": "부산진", + "시간": "12:14:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1149, + "역명": "부산진", + "시간": "13:35:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2176, + "역명": "부산진", + "시간": "15:08:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1207, + "역명": "부산진", + "시간": "16:29:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2236, + "역명": "부산진", + "시간": "18:01:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1259, + "역명": "부산진", + "시간": "19:22:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2282, + "역명": "부산진", + "시간": "20:54:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1299, + "역명": "부산진", + "시간": "22:15:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 6, + "열번": 2318, + "역명": "부산진", + "시간": "23:52:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1001, + "역명": "부산진", + "시간": "05:46:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2018, + "역명": "부산진", + "시간": "07:20:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1051, + "역명": "부산진", + "시간": "08:44:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2080, + "역명": "부산진", + "시간": "10:20:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1111, + "역명": "부산진", + "시간": "11:41:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2138, + "역명": "부산진", + "시간": "13:14:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1169, + "역명": "부산진", + "시간": "14:35:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2196, + "역명": "부산진", + "시간": "16:08:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1227, + "역명": "부산진", + "시간": "17:29:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2254, + "역명": "부산진", + "시간": "19:02:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1275, + "역명": "부산진", + "시간": "20:26:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 7, + "열번": 2298, + "역명": "부산진", + "시간": "22:00:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2010, + "역명": "부산진", + "시간": "06:36:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1033, + "역명": "부산진", + "시간": "07:59:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2064, + "역명": "부산진", + "시간": "09:32:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1095, + "역명": "부산진", + "시간": "10:53:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2122, + "역명": "부산진", + "시간": "12:26:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1153, + "역명": "부산진", + "시간": "13:47:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2180, + "역명": "부산진", + "시간": "15:20:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1211, + "역명": "부산진", + "시간": "16:41:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2240, + "역명": "부산진", + "시간": "18:13:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1263, + "역명": "부산진", + "시간": "19:38:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2286, + "역명": "부산진", + "시간": "21:10:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1303, + "역명": "부산진", + "시간": "22:35:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 9, + "열번": 1003, + "역명": "부산진", + "시간": "05:54:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2020, + "역명": "부산진", + "시간": "07:28:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1053, + "역명": "부산진", + "시간": "08:49:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2082, + "역명": "부산진", + "시간": "10:26:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1113, + "역명": "부산진", + "시간": "11:47:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2140, + "역명": "부산진", + "시간": "13:20:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1171, + "역명": "부산진", + "시간": "14:41:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2198, + "역명": "부산진", + "시간": "16:14:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1229, + "역명": "부산진", + "시간": "17:35:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2256, + "역명": "부산진", + "시간": "19:10:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1277, + "역명": "부산진", + "시간": "20:34:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2300, + "역명": "부산진", + "시간": "22:10:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1313, + "역명": "부산진", + "시간": "23:29:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2014, + "역명": "부산진", + "시간": "07:00:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1043, + "역명": "부산진", + "시간": "08:24:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2072, + "역명": "부산진", + "시간": "09:56:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1103, + "역명": "부산진", + "시간": "11:17:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2130, + "역명": "부산진", + "시간": "12:50:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1161, + "역명": "부산진", + "시간": "14:11:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2188, + "역명": "부산진", + "시간": "15:44:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1219, + "역명": "부산진", + "시간": "17:05:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2248, + "역명": "부산진", + "시간": "18:41:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1269, + "역명": "부산진", + "시간": "20:02:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2292, + "역명": "부산진", + "시간": "21:34:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1307, + "역명": "부산진", + "시간": "22:55:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 11, + "열번": 2022, + "역명": "부산진", + "시간": "07:34:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2016, + "역명": "부산진", + "시간": "07:11:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1047, + "역명": "부산진", + "시간": "08:34:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2076, + "역명": "부산진", + "시간": "10:08:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1107, + "역명": "부산진", + "시간": "11:29:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2134, + "역명": "부산진", + "시간": "13:02:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1165, + "역명": "부산진", + "시간": "14:23:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "부산진", + "시간": "15:56:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1223, + "역명": "부산진", + "시간": "17:17:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2252, + "역명": "부산진", + "시간": "18:55:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1273, + "역명": "부산진", + "시간": "20:18:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2296, + "역명": "부산진", + "시간": "21:50:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1311, + "역명": "부산진", + "시간": "23:17:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1005, + "역명": "부산진", + "시간": "06:05:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2024, + "역명": "부산진", + "시간": "07:40:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1057, + "역명": "부산진", + "시간": "09:00:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2086, + "역명": "부산진", + "시간": "10:38:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1117, + "역명": "부산진", + "시간": "11:59:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2144, + "역명": "부산진", + "시간": "13:32:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1175, + "역명": "부산진", + "시간": "14:53:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2202, + "역명": "부산진", + "시간": "16:26:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1233, + "역명": "부산진", + "시간": "17:48:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2260, + "역명": "부산진", + "시간": "19:26:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1281, + "역명": "부산진", + "시간": "20:50:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2304, + "역명": "부산진", + "시간": "22:30:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 13, + "열번": 1317, + "역명": "부산진", + "시간": "23:53:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2026, + "역명": "부산진", + "시간": "07:45:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 14, + "열번": 1059, + "역명": "부산진", + "시간": "09:05:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1009, + "역명": "부산진", + "시간": "06:27:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2032, + "역명": "부산진", + "시간": "08:00:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1065, + "역명": "부산진", + "시간": "09:23:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2092, + "역명": "부산진", + "시간": "10:56:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1123, + "역명": "부산진", + "시간": "12:17:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2150, + "역명": "부산진", + "시간": "13:50:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1181, + "역명": "부산진", + "시간": "15:11:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2208, + "역명": "부산진", + "시간": "16:43:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 16, + "열번": 1007, + "역명": "부산진", + "시간": "06:16:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2028, + "역명": "부산진", + "시간": "07:50:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1061, + "역명": "부산진", + "시간": "09:11:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2088, + "역명": "부산진", + "시간": "10:44:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1119, + "역명": "부산진", + "시간": "12:05:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2146, + "역명": "부산진", + "시간": "13:38:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1177, + "역명": "부산진", + "시간": "14:59:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2204, + "역명": "부산진", + "시간": "16:32:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1235, + "역명": "부산진", + "시간": "17:55:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 17, + "열번": 1011, + "역명": "부산진", + "시간": "06:38:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2036, + "역명": "부산진", + "시간": "08:10:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1069, + "역명": "부산진", + "시간": "09:35:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2096, + "역명": "부산진", + "시간": "11:08:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1127, + "역명": "부산진", + "시간": "12:29:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2154, + "역명": "부산진", + "시간": "14:02:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1185, + "역명": "부산진", + "시간": "15:23:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2214, + "역명": "부산진", + "시간": "16:59:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1243, + "역명": "부산진", + "시간": "18:23:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2268, + "역명": "부산진", + "시간": "19:58:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1289, + "역명": "부산진", + "시간": "21:25:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2310, + "역명": "부산진", + "시간": "23:02:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2030, + "역명": "부산진", + "시간": "07:55:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1063, + "역명": "부산진", + "시간": "09:17:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2090, + "역명": "부산진", + "시간": "10:50:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1121, + "역명": "부산진", + "시간": "12:11:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2148, + "역명": "부산진", + "시간": "13:44:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1179, + "역명": "부산진", + "시간": "15:05:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2206, + "역명": "부산진", + "시간": "16:37:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1237, + "역명": "부산진", + "시간": "18:02:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2262, + "역명": "부산진", + "시간": "19:34:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1283, + "역명": "부산진", + "시간": "20:58:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2038, + "역명": "부산진", + "시간": "08:15:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2034, + "역명": "부산진", + "시간": "08:05:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1067, + "역명": "부산진", + "시간": "09:29:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2094, + "역명": "부산진", + "시간": "11:02:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1125, + "역명": "부산진", + "시간": "12:23:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2152, + "역명": "부산진", + "시간": "13:56:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1183, + "역명": "부산진", + "시간": "15:17:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2212, + "역명": "부산진", + "시간": "16:54:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1241, + "역명": "부산진", + "시간": "18:16:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2266, + "역명": "부산진", + "시간": "19:50:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1287, + "역명": "부산진", + "시간": "21:15:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 20, + "열번": 2308, + "역명": "부산진", + "시간": "22:50:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2040, + "역명": "부산진", + "시간": "08:20:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1071, + "역명": "부산진", + "시간": "09:41:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2098, + "역명": "부산진", + "시간": "11:14:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1129, + "역명": "부산진", + "시간": "12:35:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2156, + "역명": "부산진", + "시간": "14:08:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1187, + "역명": "부산진", + "시간": "15:29:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2216, + "역명": "부산진", + "시간": "17:05:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2044, + "역명": "부산진", + "시간": "08:32:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1075, + "역명": "부산진", + "시간": "09:53:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2102, + "역명": "부산진", + "시간": "11:26:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1133, + "역명": "부산진", + "시간": "12:47:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2160, + "역명": "부산진", + "시간": "14:20:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1191, + "역명": "부산진", + "시간": "15:41:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2220, + "역명": "부산진", + "시간": "17:16:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1247, + "역명": "부산진", + "시간": "18:37:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2272, + "역명": "부산진", + "시간": "20:14:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1291, + "역명": "부산진", + "시간": "21:35:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 22, + "열번": 2312, + "역명": "부산진", + "시간": "23:14:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 23, + "열번": 1013, + "역명": "부산진", + "시간": "06:49:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2042, + "역명": "부산진", + "시간": "08:26:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1073, + "역명": "부산진", + "시간": "09:47:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2100, + "역명": "부산진", + "시간": "11:20:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1131, + "역명": "부산진", + "시간": "12:41:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2158, + "역명": "부산진", + "시간": "14:14:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1189, + "역명": "부산진", + "시간": "15:35:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2218, + "역명": "부산진", + "시간": "17:10:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1245, + "역명": "부산진", + "시간": "18:30:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2270, + "역명": "부산진", + "시간": "20:06:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "부산진", + "시간": "08:44:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1079, + "역명": "부산진", + "시간": "10:05:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2106, + "역명": "부산진", + "시간": "11:38:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1137, + "역명": "부산진", + "시간": "12:59:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2164, + "역명": "부산진", + "시간": "14:32:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1195, + "역명": "부산진", + "시간": "15:53:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2224, + "역명": "부산진", + "시간": "17:27:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1251, + "역명": "부산진", + "시간": "18:51:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "부산진", + "시간": "07:17:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2052, + "역명": "부산진", + "시간": "08:56:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1083, + "역명": "부산진", + "시간": "10:17:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2110, + "역명": "부산진", + "시간": "11:50:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1141, + "역명": "부산진", + "시간": "13:11:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2168, + "역명": "부산진", + "시간": "14:44:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1199, + "역명": "부산진", + "시간": "16:05:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2228, + "역명": "부산진", + "시간": "17:38:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1253, + "역명": "부산진", + "시간": "18:58:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2276, + "역명": "부산진", + "시간": "20:30:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1295, + "역명": "부산진", + "시간": "21:55:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2314, + "역명": "부산진", + "시간": "23:26:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 26, + "열번": 1029, + "역명": "부산진", + "시간": "07:49:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1025, + "역명": "부산진", + "시간": "07:39:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2058, + "역명": "부산진", + "시간": "09:14:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1089, + "역명": "부산진", + "시간": "10:35:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2116, + "역명": "부산진", + "시간": "12:08:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1147, + "역명": "부산진", + "시간": "13:29:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2174, + "역명": "부산진", + "시간": "15:02:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1205, + "역명": "부산진", + "시간": "16:23:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 27, + "열번": 2234, + "역명": "부산진", + "시간": "17:55:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 28, + "열번": 1041, + "역명": "부산진", + "시간": "08:19:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1031, + "역명": "부산진", + "시간": "07:54:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2062, + "역명": "부산진", + "시간": "09:26:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1093, + "역명": "부산진", + "시간": "10:47:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2120, + "역명": "부산진", + "시간": "12:20:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1151, + "역명": "부산진", + "시간": "13:41:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2178, + "역명": "부산진", + "시간": "15:14:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1209, + "역명": "부산진", + "시간": "16:35:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2238, + "역명": "부산진", + "시간": "18:07:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1261, + "역명": "부산진", + "시간": "19:30:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2284, + "역명": "부산진", + "시간": "21:02:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 29, + "열번": 1301, + "역명": "부산진", + "시간": "22:25:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1049, + "역명": "부산진", + "시간": "08:39:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2078, + "역명": "부산진", + "시간": "10:14:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1109, + "역명": "부산진", + "시간": "11:35:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2136, + "역명": "부산진", + "시간": "13:08:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1167, + "역명": "부산진", + "시간": "14:29:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2194, + "역명": "부산진", + "시간": "16:02:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1225, + "역명": "부산진", + "시간": "17:23:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1035, + "역명": "부산진", + "시간": "08:04:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2066, + "역명": "부산진", + "시간": "09:38:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1097, + "역명": "부산진", + "시간": "10:59:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2124, + "역명": "부산진", + "시간": "12:32:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1155, + "역명": "부산진", + "시간": "13:53:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2182, + "역명": "부산진", + "시간": "15:26:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1213, + "역명": "부산진", + "시간": "16:47:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2242, + "역명": "부산진", + "시간": "18:20:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1265, + "역명": "부산진", + "시간": "19:46:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2288, + "역명": "부산진", + "시간": "21:18:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1305, + "역명": "부산진", + "시간": "22:45:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 32, + "열번": 2210, + "역명": "부산진", + "시간": "16:48:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 32, + "열번": 1239, + "역명": "부산진", + "시간": "18:09:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 32, + "열번": 2264, + "역명": "부산진", + "시간": "19:42:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 32, + "열번": 1285, + "역명": "부산진", + "시간": "21:06:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 32, + "열번": 2306, + "역명": "부산진", + "시간": "22:40:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 32, + "열번": 7931, + "역명": "부산진", + "시간": "00:09:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1037, + "역명": "부산진", + "시간": "08:09:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2068, + "역명": "부산진", + "시간": "09:44:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1099, + "역명": "부산진", + "시간": "11:05:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2126, + "역명": "부산진", + "시간": "12:38:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1157, + "역명": "부산진", + "시간": "13:59:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2184, + "역명": "부산진", + "시간": "15:32:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1215, + "역명": "부산진", + "시간": "16:53:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2244, + "역명": "부산진", + "시간": "18:27:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1267, + "역명": "부산진", + "시간": "19:54:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 33, + "열번": 2290, + "역명": "부산진", + "시간": "21:26:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1045, + "역명": "부산진", + "시간": "08:29:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2074, + "역명": "부산진", + "시간": "10:02:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1105, + "역명": "부산진", + "시간": "11:23:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2132, + "역명": "부산진", + "시간": "12:56:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1163, + "역명": "부산진", + "시간": "14:17:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2190, + "역명": "부산진", + "시간": "15:50:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1221, + "역명": "부산진", + "시간": "17:11:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2250, + "역명": "부산진", + "시간": "18:48:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1271, + "역명": "부산진", + "시간": "20:10:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2294, + "역명": "부산진", + "시간": "21:42:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1309, + "역명": "부산진", + "시간": "23:06:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1055, + "역명": "부산진", + "시간": "08:54:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2084, + "역명": "부산진", + "시간": "10:32:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1115, + "역명": "부산진", + "시간": "11:53:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2142, + "역명": "부산진", + "시간": "13:26:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1173, + "역명": "부산진", + "시간": "14:47:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2200, + "역명": "부산진", + "시간": "16:20:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1231, + "역명": "부산진", + "시간": "17:41:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2258, + "역명": "부산진", + "시간": "19:18:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1279, + "역명": "부산진", + "시간": "20:42:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2302, + "역명": "부산진", + "시간": "22:20:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1315, + "역명": "부산진", + "시간": "23:41:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "초량", + "시간": "05:44:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "초량", + "시간": "07:09:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2050, + "역명": "초량", + "시간": "08:49:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1081, + "역명": "초량", + "시간": "10:13:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2108, + "역명": "초량", + "시간": "11:43:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1139, + "역명": "초량", + "시간": "13:07:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2166, + "역명": "초량", + "시간": "14:37:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1197, + "역명": "초량", + "시간": "16:01:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2226, + "역명": "초량", + "시간": "17:31:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "초량", + "시간": "05:28:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "초량", + "시간": "07:00:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "초량", + "시간": "08:37:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1077, + "역명": "초량", + "시간": "10:01:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2104, + "역명": "초량", + "시간": "11:31:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1135, + "역명": "초량", + "시간": "12:55:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2162, + "역명": "초량", + "시간": "14:25:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1193, + "역명": "초량", + "시간": "15:49:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2222, + "역명": "초량", + "시간": "17:20:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1249, + "역명": "초량", + "시간": "18:46:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2274, + "역명": "초량", + "시간": "20:21:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1293, + "역명": "초량", + "시간": "21:47:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "초량", + "시간": "05:58:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "초량", + "시간": "07:27:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2054, + "역명": "초량", + "시간": "09:01:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1085, + "역명": "초량", + "시간": "10:25:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2112, + "역명": "초량", + "시간": "11:55:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1143, + "역명": "초량", + "시간": "13:19:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2170, + "역명": "초량", + "시간": "14:49:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1201, + "역명": "초량", + "시간": "16:13:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2230, + "역명": "초량", + "시간": "17:42:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1255, + "역명": "초량", + "시간": "19:08:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2278, + "역명": "초량", + "시간": "20:37:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "초량", + "시간": "06:10:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1023, + "역명": "초량", + "시간": "07:34:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2056, + "역명": "초량", + "시간": "09:07:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1087, + "역명": "초량", + "시간": "10:31:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2114, + "역명": "초량", + "시간": "12:01:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1145, + "역명": "초량", + "시간": "13:25:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2172, + "역명": "초량", + "시간": "14:55:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1203, + "역명": "초량", + "시간": "16:19:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2232, + "역명": "초량", + "시간": "17:48:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1257, + "역명": "초량", + "시간": "19:16:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2280, + "역명": "초량", + "시간": "20:45:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1297, + "역명": "초량", + "시간": "22:07:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2316, + "역명": "초량", + "시간": "23:35:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2012, + "역명": "초량", + "시간": "06:46:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1039, + "역명": "초량", + "시간": "08:16:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2070, + "역명": "초량", + "시간": "09:49:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1101, + "역명": "초량", + "시간": "11:13:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2128, + "역명": "초량", + "시간": "12:43:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1159, + "역명": "초량", + "시간": "14:07:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2186, + "역명": "초량", + "시간": "15:37:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1217, + "역명": "초량", + "시간": "17:01:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2246, + "역명": "초량", + "시간": "18:33:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2008, + "역명": "초량", + "시간": "06:22:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1027, + "역명": "초량", + "시간": "07:46:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2060, + "역명": "초량", + "시간": "09:19:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1091, + "역명": "초량", + "시간": "10:43:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2118, + "역명": "초량", + "시간": "12:13:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1149, + "역명": "초량", + "시간": "13:37:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2176, + "역명": "초량", + "시간": "15:07:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1207, + "역명": "초량", + "시간": "16:31:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2236, + "역명": "초량", + "시간": "18:00:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1259, + "역명": "초량", + "시간": "19:24:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2282, + "역명": "초량", + "시간": "20:53:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1299, + "역명": "초량", + "시간": "22:17:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 6, + "열번": 2318, + "역명": "초량", + "시간": "23:50:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1001, + "역명": "초량", + "시간": "05:47:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2018, + "역명": "초량", + "시간": "07:18:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1051, + "역명": "초량", + "시간": "08:46:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2080, + "역명": "초량", + "시간": "10:19:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1111, + "역명": "초량", + "시간": "11:43:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2138, + "역명": "초량", + "시간": "13:13:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1169, + "역명": "초량", + "시간": "14:37:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2196, + "역명": "초량", + "시간": "16:07:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1227, + "역명": "초량", + "시간": "17:31:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2254, + "역명": "초량", + "시간": "19:01:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1275, + "역명": "초량", + "시간": "20:28:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 7, + "열번": 2298, + "역명": "초량", + "시간": "21:59:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2010, + "역명": "초량", + "시간": "06:34:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1033, + "역명": "초량", + "시간": "08:01:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2064, + "역명": "초량", + "시간": "09:31:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1095, + "역명": "초량", + "시간": "10:55:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2122, + "역명": "초량", + "시간": "12:25:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1153, + "역명": "초량", + "시간": "13:49:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2180, + "역명": "초량", + "시간": "15:19:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1211, + "역명": "초량", + "시간": "16:43:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2240, + "역명": "초량", + "시간": "18:12:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1263, + "역명": "초량", + "시간": "19:40:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2286, + "역명": "초량", + "시간": "21:09:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1303, + "역명": "초량", + "시간": "22:37:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 9, + "열번": 1003, + "역명": "초량", + "시간": "05:55:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2020, + "역명": "초량", + "시간": "07:27:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1053, + "역명": "초량", + "시간": "08:51:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2082, + "역명": "초량", + "시간": "10:25:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1113, + "역명": "초량", + "시간": "11:49:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2140, + "역명": "초량", + "시간": "13:19:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1171, + "역명": "초량", + "시간": "14:43:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2198, + "역명": "초량", + "시간": "16:13:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1229, + "역명": "초량", + "시간": "17:37:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2256, + "역명": "초량", + "시간": "19:09:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1277, + "역명": "초량", + "시간": "20:36:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2300, + "역명": "초량", + "시간": "22:09:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1313, + "역명": "초량", + "시간": "23:31:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2014, + "역명": "초량", + "시간": "06:58:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1043, + "역명": "초량", + "시간": "08:26:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2072, + "역명": "초량", + "시간": "09:55:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1103, + "역명": "초량", + "시간": "11:19:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2130, + "역명": "초량", + "시간": "12:49:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1161, + "역명": "초량", + "시간": "14:13:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2188, + "역명": "초량", + "시간": "15:43:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1219, + "역명": "초량", + "시간": "17:07:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2248, + "역명": "초량", + "시간": "18:40:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1269, + "역명": "초량", + "시간": "20:04:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2292, + "역명": "초량", + "시간": "21:33:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1307, + "역명": "초량", + "시간": "22:57:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 11, + "열번": 2022, + "역명": "초량", + "시간": "07:33:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2016, + "역명": "초량", + "시간": "07:09:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1047, + "역명": "초량", + "시간": "08:36:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2076, + "역명": "초량", + "시간": "10:07:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1107, + "역명": "초량", + "시간": "11:31:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2134, + "역명": "초량", + "시간": "13:01:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1165, + "역명": "초량", + "시간": "14:25:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "초량", + "시간": "15:55:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1223, + "역명": "초량", + "시간": "17:19:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2252, + "역명": "초량", + "시간": "18:54:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1273, + "역명": "초량", + "시간": "20:20:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2296, + "역명": "초량", + "시간": "21:49:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1311, + "역명": "초량", + "시간": "23:19:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1005, + "역명": "초량", + "시간": "06:06:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2024, + "역명": "초량", + "시간": "07:39:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1057, + "역명": "초량", + "시간": "09:01:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2086, + "역명": "초량", + "시간": "10:37:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1117, + "역명": "초량", + "시간": "12:01:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2144, + "역명": "초량", + "시간": "13:31:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1175, + "역명": "초량", + "시간": "14:55:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2202, + "역명": "초량", + "시간": "16:25:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1233, + "역명": "초량", + "시간": "17:50:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2260, + "역명": "초량", + "시간": "19:25:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1281, + "역명": "초량", + "시간": "20:52:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2304, + "역명": "초량", + "시간": "22:29:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 13, + "열번": 1317, + "역명": "초량", + "시간": "23:54:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2026, + "역명": "초량", + "시간": "07:44:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 14, + "열번": 1059, + "역명": "초량", + "시간": "09:07:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1009, + "역명": "초량", + "시간": "06:28:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2032, + "역명": "초량", + "시간": "07:59:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1065, + "역명": "초량", + "시간": "09:25:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2092, + "역명": "초량", + "시간": "10:55:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1123, + "역명": "초량", + "시간": "12:19:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2150, + "역명": "초량", + "시간": "13:49:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1181, + "역명": "초량", + "시간": "15:13:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2208, + "역명": "초량", + "시간": "16:41:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 16, + "열번": 1007, + "역명": "초량", + "시간": "06:17:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2028, + "역명": "초량", + "시간": "07:49:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1061, + "역명": "초량", + "시간": "09:13:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2088, + "역명": "초량", + "시간": "10:43:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1119, + "역명": "초량", + "시간": "12:07:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2146, + "역명": "초량", + "시간": "13:37:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1177, + "역명": "초량", + "시간": "15:01:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2204, + "역명": "초량", + "시간": "16:30:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1235, + "역명": "초량", + "시간": "17:57:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 17, + "열번": 1011, + "역명": "초량", + "시간": "06:39:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2036, + "역명": "초량", + "시간": "08:09:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1069, + "역명": "초량", + "시간": "09:37:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2096, + "역명": "초량", + "시간": "11:07:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1127, + "역명": "초량", + "시간": "12:31:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2154, + "역명": "초량", + "시간": "14:01:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1185, + "역명": "초량", + "시간": "15:25:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2214, + "역명": "초량", + "시간": "16:58:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1243, + "역명": "초량", + "시간": "18:25:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2268, + "역명": "초량", + "시간": "19:57:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1289, + "역명": "초량", + "시간": "21:27:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2310, + "역명": "초량", + "시간": "23:01:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2030, + "역명": "초량", + "시간": "07:54:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1063, + "역명": "초량", + "시간": "09:19:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2090, + "역명": "초량", + "시간": "10:49:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1121, + "역명": "초량", + "시간": "12:13:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2148, + "역명": "초량", + "시간": "13:43:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1179, + "역명": "초량", + "시간": "15:07:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2206, + "역명": "초량", + "시간": "16:36:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1237, + "역명": "초량", + "시간": "18:04:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2262, + "역명": "초량", + "시간": "19:33:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1283, + "역명": "초량", + "시간": "21:00:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2038, + "역명": "초량", + "시간": "08:14:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2034, + "역명": "초량", + "시간": "08:04:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1067, + "역명": "초량", + "시간": "09:31:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2094, + "역명": "초량", + "시간": "11:01:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1125, + "역명": "초량", + "시간": "12:25:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2152, + "역명": "초량", + "시간": "13:55:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1183, + "역명": "초량", + "시간": "15:19:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2212, + "역명": "초량", + "시간": "16:52:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1241, + "역명": "초량", + "시간": "18:18:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2266, + "역명": "초량", + "시간": "19:49:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1287, + "역명": "초량", + "시간": "21:17:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 20, + "열번": 2308, + "역명": "초량", + "시간": "22:49:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2040, + "역명": "초량", + "시간": "08:19:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1071, + "역명": "초량", + "시간": "09:43:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2098, + "역명": "초량", + "시간": "11:13:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1129, + "역명": "초량", + "시간": "12:37:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2156, + "역명": "초량", + "시간": "14:07:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1187, + "역명": "초량", + "시간": "15:31:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2216, + "역명": "초량", + "시간": "17:03:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2044, + "역명": "초량", + "시간": "08:31:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1075, + "역명": "초량", + "시간": "09:55:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2102, + "역명": "초량", + "시간": "11:25:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1133, + "역명": "초량", + "시간": "12:49:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2160, + "역명": "초량", + "시간": "14:19:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1191, + "역명": "초량", + "시간": "15:43:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2220, + "역명": "초량", + "시간": "17:14:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1247, + "역명": "초량", + "시간": "18:39:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2272, + "역명": "초량", + "시간": "20:13:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1291, + "역명": "초량", + "시간": "21:37:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 22, + "열번": 2312, + "역명": "초량", + "시간": "23:13:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 23, + "열번": 1013, + "역명": "초량", + "시간": "06:50:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2042, + "역명": "초량", + "시간": "08:25:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1073, + "역명": "초량", + "시간": "09:49:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2100, + "역명": "초량", + "시간": "11:19:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1131, + "역명": "초량", + "시간": "12:43:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2158, + "역명": "초량", + "시간": "14:13:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1189, + "역명": "초량", + "시간": "15:37:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2218, + "역명": "초량", + "시간": "17:09:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1245, + "역명": "초량", + "시간": "18:32:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2270, + "역명": "초량", + "시간": "20:05:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "초량", + "시간": "08:43:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1079, + "역명": "초량", + "시간": "10:07:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2106, + "역명": "초량", + "시간": "11:37:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1137, + "역명": "초량", + "시간": "13:01:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2164, + "역명": "초량", + "시간": "14:31:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1195, + "역명": "초량", + "시간": "15:55:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2224, + "역명": "초량", + "시간": "17:25:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1251, + "역명": "초량", + "시간": "18:53:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "초량", + "시간": "07:18:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2052, + "역명": "초량", + "시간": "08:55:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1083, + "역명": "초량", + "시간": "10:19:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2110, + "역명": "초량", + "시간": "11:49:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1141, + "역명": "초량", + "시간": "13:13:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2168, + "역명": "초량", + "시간": "14:43:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1199, + "역명": "초량", + "시간": "16:07:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2228, + "역명": "초량", + "시간": "17:36:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1253, + "역명": "초량", + "시간": "19:00:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2276, + "역명": "초량", + "시간": "20:29:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1295, + "역명": "초량", + "시간": "21:57:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2314, + "역명": "초량", + "시간": "23:25:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 26, + "열번": 1029, + "역명": "초량", + "시간": "07:51:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1025, + "역명": "초량", + "시간": "07:41:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2058, + "역명": "초량", + "시간": "09:13:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1089, + "역명": "초량", + "시간": "10:37:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2116, + "역명": "초량", + "시간": "12:07:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1147, + "역명": "초량", + "시간": "13:31:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2174, + "역명": "초량", + "시간": "15:01:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1205, + "역명": "초량", + "시간": "16:25:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 27, + "열번": 2234, + "역명": "초량", + "시간": "17:54:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 28, + "열번": 1041, + "역명": "초량", + "시간": "08:21:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1031, + "역명": "초량", + "시간": "07:56:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2062, + "역명": "초량", + "시간": "09:25:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1093, + "역명": "초량", + "시간": "10:49:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2120, + "역명": "초량", + "시간": "12:19:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1151, + "역명": "초량", + "시간": "13:43:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2178, + "역명": "초량", + "시간": "15:13:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1209, + "역명": "초량", + "시간": "16:37:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2238, + "역명": "초량", + "시간": "18:06:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1261, + "역명": "초량", + "시간": "19:32:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2284, + "역명": "초량", + "시간": "21:01:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 29, + "열번": 1301, + "역명": "초량", + "시간": "22:27:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1049, + "역명": "초량", + "시간": "08:41:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2078, + "역명": "초량", + "시간": "10:13:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1109, + "역명": "초량", + "시간": "11:37:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2136, + "역명": "초량", + "시간": "13:07:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1167, + "역명": "초량", + "시간": "14:31:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2194, + "역명": "초량", + "시간": "16:01:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1225, + "역명": "초량", + "시간": "17:25:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1035, + "역명": "초량", + "시간": "08:06:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2066, + "역명": "초량", + "시간": "09:37:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1097, + "역명": "초량", + "시간": "11:01:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2124, + "역명": "초량", + "시간": "12:31:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1155, + "역명": "초량", + "시간": "13:55:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2182, + "역명": "초량", + "시간": "15:25:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1213, + "역명": "초량", + "시간": "16:49:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2242, + "역명": "초량", + "시간": "18:19:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1265, + "역명": "초량", + "시간": "19:48:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2288, + "역명": "초량", + "시간": "21:17:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1305, + "역명": "초량", + "시간": "22:47:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 32, + "열번": 2210, + "역명": "초량", + "시간": "16:47:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 32, + "열번": 1239, + "역명": "초량", + "시간": "18:11:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 32, + "열번": 2264, + "역명": "초량", + "시간": "19:41:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 32, + "열번": 1285, + "역명": "초량", + "시간": "21:08:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 32, + "열번": 2306, + "역명": "초량", + "시간": "22:39:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 32, + "열번": 7931, + "역명": "초량", + "시간": "00:10:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1037, + "역명": "초량", + "시간": "08:11:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2068, + "역명": "초량", + "시간": "09:43:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1099, + "역명": "초량", + "시간": "11:07:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2126, + "역명": "초량", + "시간": "12:37:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1157, + "역명": "초량", + "시간": "14:01:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2184, + "역명": "초량", + "시간": "15:31:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1215, + "역명": "초량", + "시간": "16:55:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2244, + "역명": "초량", + "시간": "18:26:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1267, + "역명": "초량", + "시간": "19:56:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 33, + "열번": 2290, + "역명": "초량", + "시간": "21:25:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1045, + "역명": "초량", + "시간": "08:31:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2074, + "역명": "초량", + "시간": "10:01:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1105, + "역명": "초량", + "시간": "11:25:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2132, + "역명": "초량", + "시간": "12:55:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1163, + "역명": "초량", + "시간": "14:19:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2190, + "역명": "초량", + "시간": "15:49:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1221, + "역명": "초량", + "시간": "17:13:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2250, + "역명": "초량", + "시간": "18:47:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1271, + "역명": "초량", + "시간": "20:12:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2294, + "역명": "초량", + "시간": "21:41:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1309, + "역명": "초량", + "시간": "23:08:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1055, + "역명": "초량", + "시간": "08:56:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2084, + "역명": "초량", + "시간": "10:31:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1115, + "역명": "초량", + "시간": "11:55:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2142, + "역명": "초량", + "시간": "13:25:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1173, + "역명": "초량", + "시간": "14:49:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2200, + "역명": "초량", + "시간": "16:19:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1231, + "역명": "초량", + "시간": "17:43:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2258, + "역명": "초량", + "시간": "19:17:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1279, + "역명": "초량", + "시간": "20:44:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2302, + "역명": "초량", + "시간": "22:19:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1315, + "역명": "초량", + "시간": "23:43:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "부산역", + "시간": "05:42:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "부산역", + "시간": "07:11:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2050, + "역명": "부산역", + "시간": "08:47:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1081, + "역명": "부산역", + "시간": "10:14:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2108, + "역명": "부산역", + "시간": "11:41:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1139, + "역명": "부산역", + "시간": "13:08:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2166, + "역명": "부산역", + "시간": "14:35:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1197, + "역명": "부산역", + "시간": "16:02:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2226, + "역명": "부산역", + "시간": "17:29:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "부산역", + "시간": "05:26:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "부산역", + "시간": "07:02:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "부산역", + "시간": "08:35:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1077, + "역명": "부산역", + "시간": "10:02:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2104, + "역명": "부산역", + "시간": "11:29:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1135, + "역명": "부산역", + "시간": "12:56:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2162, + "역명": "부산역", + "시간": "14:23:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1193, + "역명": "부산역", + "시간": "15:50:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2222, + "역명": "부산역", + "시간": "17:18:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1249, + "역명": "부산역", + "시간": "18:47:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2274, + "역명": "부산역", + "시간": "20:19:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1293, + "역명": "부산역", + "시간": "21:48:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "부산역", + "시간": "05:56:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "부산역", + "시간": "07:29:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2054, + "역명": "부산역", + "시간": "08:59:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1085, + "역명": "부산역", + "시간": "10:26:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2112, + "역명": "부산역", + "시간": "11:53:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1143, + "역명": "부산역", + "시간": "13:20:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2170, + "역명": "부산역", + "시간": "14:47:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1201, + "역명": "부산역", + "시간": "16:14:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2230, + "역명": "부산역", + "시간": "17:40:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1255, + "역명": "부산역", + "시간": "19:09:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2278, + "역명": "부산역", + "시간": "20:35:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "부산역", + "시간": "06:08:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1023, + "역명": "부산역", + "시간": "07:36:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2056, + "역명": "부산역", + "시간": "09:05:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1087, + "역명": "부산역", + "시간": "10:32:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2114, + "역명": "부산역", + "시간": "11:59:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1145, + "역명": "부산역", + "시간": "13:26:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2172, + "역명": "부산역", + "시간": "14:53:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1203, + "역명": "부산역", + "시간": "16:20:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2232, + "역명": "부산역", + "시간": "17:46:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1257, + "역명": "부산역", + "시간": "19:17:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2280, + "역명": "부산역", + "시간": "20:43:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1297, + "역명": "부산역", + "시간": "22:08:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2316, + "역명": "부산역", + "시간": "23:33:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2012, + "역명": "부산역", + "시간": "06:44:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1039, + "역명": "부산역", + "시간": "08:17:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2070, + "역명": "부산역", + "시간": "09:47:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1101, + "역명": "부산역", + "시간": "11:14:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2128, + "역명": "부산역", + "시간": "12:41:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1159, + "역명": "부산역", + "시간": "14:08:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2186, + "역명": "부산역", + "시간": "15:35:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1217, + "역명": "부산역", + "시간": "17:02:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2246, + "역명": "부산역", + "시간": "18:31:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2008, + "역명": "부산역", + "시간": "06:20:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1027, + "역명": "부산역", + "시간": "07:47:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2060, + "역명": "부산역", + "시간": "09:17:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1091, + "역명": "부산역", + "시간": "10:44:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2118, + "역명": "부산역", + "시간": "12:11:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1149, + "역명": "부산역", + "시간": "13:38:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2176, + "역명": "부산역", + "시간": "15:05:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1207, + "역명": "부산역", + "시간": "16:32:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2236, + "역명": "부산역", + "시간": "17:58:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1259, + "역명": "부산역", + "시간": "19:25:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2282, + "역명": "부산역", + "시간": "20:51:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1299, + "역명": "부산역", + "시간": "22:18:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 6, + "열번": 2318, + "역명": "부산역", + "시간": "23:49:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1001, + "역명": "부산역", + "시간": "05:49:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2018, + "역명": "부산역", + "시간": "07:16:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1051, + "역명": "부산역", + "시간": "08:47:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2080, + "역명": "부산역", + "시간": "10:17:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1111, + "역명": "부산역", + "시간": "11:44:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2138, + "역명": "부산역", + "시간": "13:11:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1169, + "역명": "부산역", + "시간": "14:38:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2196, + "역명": "부산역", + "시간": "16:05:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1227, + "역명": "부산역", + "시간": "17:32:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2254, + "역명": "부산역", + "시간": "18:59:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1275, + "역명": "부산역", + "시간": "20:29:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 7, + "열번": 2298, + "역명": "부산역", + "시간": "21:57:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2010, + "역명": "부산역", + "시간": "06:32:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1033, + "역명": "부산역", + "시간": "08:02:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2064, + "역명": "부산역", + "시간": "09:29:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1095, + "역명": "부산역", + "시간": "10:56:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2122, + "역명": "부산역", + "시간": "12:23:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1153, + "역명": "부산역", + "시간": "13:50:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2180, + "역명": "부산역", + "시간": "15:17:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1211, + "역명": "부산역", + "시간": "16:44:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2240, + "역명": "부산역", + "시간": "18:10:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1263, + "역명": "부산역", + "시간": "19:41:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2286, + "역명": "부산역", + "시간": "21:07:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1303, + "역명": "부산역", + "시간": "22:38:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 9, + "열번": 1003, + "역명": "부산역", + "시간": "05:57:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2020, + "역명": "부산역", + "시간": "07:25:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1053, + "역명": "부산역", + "시간": "08:52:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2082, + "역명": "부산역", + "시간": "10:23:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1113, + "역명": "부산역", + "시간": "11:50:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2140, + "역명": "부산역", + "시간": "13:17:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1171, + "역명": "부산역", + "시간": "14:44:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2198, + "역명": "부산역", + "시간": "16:11:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1229, + "역명": "부산역", + "시간": "17:38:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2256, + "역명": "부산역", + "시간": "19:07:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1277, + "역명": "부산역", + "시간": "20:37:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2300, + "역명": "부산역", + "시간": "22:07:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1313, + "역명": "부산역", + "시간": "23:32:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2014, + "역명": "부산역", + "시간": "06:56:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1043, + "역명": "부산역", + "시간": "08:27:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2072, + "역명": "부산역", + "시간": "09:53:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1103, + "역명": "부산역", + "시간": "11:20:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2130, + "역명": "부산역", + "시간": "12:47:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1161, + "역명": "부산역", + "시간": "14:14:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2188, + "역명": "부산역", + "시간": "15:41:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1219, + "역명": "부산역", + "시간": "17:08:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2248, + "역명": "부산역", + "시간": "18:38:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1269, + "역명": "부산역", + "시간": "20:05:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2292, + "역명": "부산역", + "시간": "21:31:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1307, + "역명": "부산역", + "시간": "22:58:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 11, + "열번": 2022, + "역명": "부산역", + "시간": "07:31:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2016, + "역명": "부산역", + "시간": "07:07:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1047, + "역명": "부산역", + "시간": "08:37:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2076, + "역명": "부산역", + "시간": "10:05:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1107, + "역명": "부산역", + "시간": "11:32:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2134, + "역명": "부산역", + "시간": "12:59:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1165, + "역명": "부산역", + "시간": "14:26:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "부산역", + "시간": "15:53:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1223, + "역명": "부산역", + "시간": "17:20:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2252, + "역명": "부산역", + "시간": "18:52:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1273, + "역명": "부산역", + "시간": "20:21:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2296, + "역명": "부산역", + "시간": "21:47:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1311, + "역명": "부산역", + "시간": "23:20:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1005, + "역명": "부산역", + "시간": "06:08:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2024, + "역명": "부산역", + "시간": "07:37:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1057, + "역명": "부산역", + "시간": "09:03:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2086, + "역명": "부산역", + "시간": "10:35:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1117, + "역명": "부산역", + "시간": "12:02:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2144, + "역명": "부산역", + "시간": "13:29:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1175, + "역명": "부산역", + "시간": "14:56:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2202, + "역명": "부산역", + "시간": "16:23:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1233, + "역명": "부산역", + "시간": "17:51:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2260, + "역명": "부산역", + "시간": "19:23:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1281, + "역명": "부산역", + "시간": "20:53:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2304, + "역명": "부산역", + "시간": "22:27:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 13, + "열번": 1317, + "역명": "부산역", + "시간": "23:56:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2026, + "역명": "부산역", + "시간": "07:42:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 14, + "열번": 1059, + "역명": "부산역", + "시간": "09:08:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1009, + "역명": "부산역", + "시간": "06:30:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2032, + "역명": "부산역", + "시간": "07:57:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1065, + "역명": "부산역", + "시간": "09:26:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2092, + "역명": "부산역", + "시간": "10:53:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1123, + "역명": "부산역", + "시간": "12:20:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2150, + "역명": "부산역", + "시간": "13:47:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1181, + "역명": "부산역", + "시간": "15:14:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2208, + "역명": "부산역", + "시간": "16:39:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 16, + "열번": 1007, + "역명": "부산역", + "시간": "06:19:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2028, + "역명": "부산역", + "시간": "07:47:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1061, + "역명": "부산역", + "시간": "09:14:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2088, + "역명": "부산역", + "시간": "10:41:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1119, + "역명": "부산역", + "시간": "12:08:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2146, + "역명": "부산역", + "시간": "13:35:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1177, + "역명": "부산역", + "시간": "15:02:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2204, + "역명": "부산역", + "시간": "16:28:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1235, + "역명": "부산역", + "시간": "17:58:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 17, + "열번": 1011, + "역명": "부산역", + "시간": "06:41:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2036, + "역명": "부산역", + "시간": "08:07:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1069, + "역명": "부산역", + "시간": "09:38:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2096, + "역명": "부산역", + "시간": "11:05:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1127, + "역명": "부산역", + "시간": "12:32:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2154, + "역명": "부산역", + "시간": "13:59:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1185, + "역명": "부산역", + "시간": "15:26:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2214, + "역명": "부산역", + "시간": "16:56:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1243, + "역명": "부산역", + "시간": "18:26:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2268, + "역명": "부산역", + "시간": "19:55:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1289, + "역명": "부산역", + "시간": "21:28:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2310, + "역명": "부산역", + "시간": "22:59:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2030, + "역명": "부산역", + "시간": "07:52:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1063, + "역명": "부산역", + "시간": "09:20:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2090, + "역명": "부산역", + "시간": "10:47:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1121, + "역명": "부산역", + "시간": "12:14:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2148, + "역명": "부산역", + "시간": "13:41:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1179, + "역명": "부산역", + "시간": "15:08:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2206, + "역명": "부산역", + "시간": "16:34:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1237, + "역명": "부산역", + "시간": "18:05:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2262, + "역명": "부산역", + "시간": "19:31:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1283, + "역명": "부산역", + "시간": "21:01:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2038, + "역명": "부산역", + "시간": "08:12:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2034, + "역명": "부산역", + "시간": "08:02:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1067, + "역명": "부산역", + "시간": "09:32:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2094, + "역명": "부산역", + "시간": "10:59:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1125, + "역명": "부산역", + "시간": "12:26:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2152, + "역명": "부산역", + "시간": "13:53:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1183, + "역명": "부산역", + "시간": "15:20:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2212, + "역명": "부산역", + "시간": "16:50:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1241, + "역명": "부산역", + "시간": "18:19:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2266, + "역명": "부산역", + "시간": "19:47:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1287, + "역명": "부산역", + "시간": "21:18:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 20, + "열번": 2308, + "역명": "부산역", + "시간": "22:47:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2040, + "역명": "부산역", + "시간": "08:17:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1071, + "역명": "부산역", + "시간": "09:44:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2098, + "역명": "부산역", + "시간": "11:11:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1129, + "역명": "부산역", + "시간": "12:38:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2156, + "역명": "부산역", + "시간": "14:05:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1187, + "역명": "부산역", + "시간": "15:32:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2216, + "역명": "부산역", + "시간": "17:01:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2044, + "역명": "부산역", + "시간": "08:29:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1075, + "역명": "부산역", + "시간": "09:56:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2102, + "역명": "부산역", + "시간": "11:23:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1133, + "역명": "부산역", + "시간": "12:50:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2160, + "역명": "부산역", + "시간": "14:17:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1191, + "역명": "부산역", + "시간": "15:44:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2220, + "역명": "부산역", + "시간": "17:12:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1247, + "역명": "부산역", + "시간": "18:40:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2272, + "역명": "부산역", + "시간": "20:11:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1291, + "역명": "부산역", + "시간": "21:38:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 22, + "열번": 2312, + "역명": "부산역", + "시간": "23:11:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 23, + "열번": 1013, + "역명": "부산역", + "시간": "06:52:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2042, + "역명": "부산역", + "시간": "08:23:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1073, + "역명": "부산역", + "시간": "09:50:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2100, + "역명": "부산역", + "시간": "11:17:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1131, + "역명": "부산역", + "시간": "12:44:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2158, + "역명": "부산역", + "시간": "14:11:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1189, + "역명": "부산역", + "시간": "15:38:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2218, + "역명": "부산역", + "시간": "17:07:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1245, + "역명": "부산역", + "시간": "18:33:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2270, + "역명": "부산역", + "시간": "20:03:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "부산역", + "시간": "08:41:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1079, + "역명": "부산역", + "시간": "10:08:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2106, + "역명": "부산역", + "시간": "11:35:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1137, + "역명": "부산역", + "시간": "13:02:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2164, + "역명": "부산역", + "시간": "14:29:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1195, + "역명": "부산역", + "시간": "15:56:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2224, + "역명": "부산역", + "시간": "17:23:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1251, + "역명": "부산역", + "시간": "18:54:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "부산역", + "시간": "07:20:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2052, + "역명": "부산역", + "시간": "08:53:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1083, + "역명": "부산역", + "시간": "10:20:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2110, + "역명": "부산역", + "시간": "11:47:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1141, + "역명": "부산역", + "시간": "13:14:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2168, + "역명": "부산역", + "시간": "14:41:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1199, + "역명": "부산역", + "시간": "16:08:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2228, + "역명": "부산역", + "시간": "17:34:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1253, + "역명": "부산역", + "시간": "19:01:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2276, + "역명": "부산역", + "시간": "20:27:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1295, + "역명": "부산역", + "시간": "21:58:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2314, + "역명": "부산역", + "시간": "23:23:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 26, + "열번": 1029, + "역명": "부산역", + "시간": "07:52:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1025, + "역명": "부산역", + "시간": "07:42:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2058, + "역명": "부산역", + "시간": "09:11:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1089, + "역명": "부산역", + "시간": "10:38:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2116, + "역명": "부산역", + "시간": "12:05:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1147, + "역명": "부산역", + "시간": "13:32:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2174, + "역명": "부산역", + "시간": "14:59:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1205, + "역명": "부산역", + "시간": "16:26:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 27, + "열번": 2234, + "역명": "부산역", + "시간": "17:52:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 28, + "열번": 1041, + "역명": "부산역", + "시간": "08:22:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1031, + "역명": "부산역", + "시간": "07:57:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2062, + "역명": "부산역", + "시간": "09:23:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1093, + "역명": "부산역", + "시간": "10:50:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2120, + "역명": "부산역", + "시간": "12:17:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1151, + "역명": "부산역", + "시간": "13:44:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2178, + "역명": "부산역", + "시간": "15:11:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1209, + "역명": "부산역", + "시간": "16:38:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2238, + "역명": "부산역", + "시간": "18:04:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1261, + "역명": "부산역", + "시간": "19:33:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2284, + "역명": "부산역", + "시간": "20:59:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 29, + "열번": 1301, + "역명": "부산역", + "시간": "22:28:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1049, + "역명": "부산역", + "시간": "08:42:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2078, + "역명": "부산역", + "시간": "10:11:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1109, + "역명": "부산역", + "시간": "11:38:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2136, + "역명": "부산역", + "시간": "13:05:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1167, + "역명": "부산역", + "시간": "14:32:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2194, + "역명": "부산역", + "시간": "15:59:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1225, + "역명": "부산역", + "시간": "17:26:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1035, + "역명": "부산역", + "시간": "08:07:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2066, + "역명": "부산역", + "시간": "09:35:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1097, + "역명": "부산역", + "시간": "11:02:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2124, + "역명": "부산역", + "시간": "12:29:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1155, + "역명": "부산역", + "시간": "13:56:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2182, + "역명": "부산역", + "시간": "15:23:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1213, + "역명": "부산역", + "시간": "16:50:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2242, + "역명": "부산역", + "시간": "18:17:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1265, + "역명": "부산역", + "시간": "19:49:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2288, + "역명": "부산역", + "시간": "21:15:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1305, + "역명": "부산역", + "시간": "22:48:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 32, + "열번": 2210, + "역명": "부산역", + "시간": "16:45:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 32, + "열번": 1239, + "역명": "부산역", + "시간": "18:12:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 32, + "열번": 2264, + "역명": "부산역", + "시간": "19:39:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 32, + "열번": 1285, + "역명": "부산역", + "시간": "21:09:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 32, + "열번": 2306, + "역명": "부산역", + "시간": "22:37:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 32, + "열번": 7931, + "역명": "부산역", + "시간": "00:12:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1037, + "역명": "부산역", + "시간": "08:12:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2068, + "역명": "부산역", + "시간": "09:41:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1099, + "역명": "부산역", + "시간": "11:08:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2126, + "역명": "부산역", + "시간": "12:35:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1157, + "역명": "부산역", + "시간": "14:02:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2184, + "역명": "부산역", + "시간": "15:29:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1215, + "역명": "부산역", + "시간": "16:56:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2244, + "역명": "부산역", + "시간": "18:24:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1267, + "역명": "부산역", + "시간": "19:57:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 33, + "열번": 2290, + "역명": "부산역", + "시간": "21:23:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1045, + "역명": "부산역", + "시간": "08:32:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2074, + "역명": "부산역", + "시간": "09:59:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1105, + "역명": "부산역", + "시간": "11:26:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2132, + "역명": "부산역", + "시간": "12:53:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1163, + "역명": "부산역", + "시간": "14:20:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2190, + "역명": "부산역", + "시간": "15:47:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1221, + "역명": "부산역", + "시간": "17:14:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2250, + "역명": "부산역", + "시간": "18:45:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1271, + "역명": "부산역", + "시간": "20:13:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2294, + "역명": "부산역", + "시간": "21:39:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1309, + "역명": "부산역", + "시간": "23:09:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1055, + "역명": "부산역", + "시간": "08:57:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2084, + "역명": "부산역", + "시간": "10:29:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1115, + "역명": "부산역", + "시간": "11:56:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2142, + "역명": "부산역", + "시간": "13:23:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1173, + "역명": "부산역", + "시간": "14:50:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2200, + "역명": "부산역", + "시간": "16:17:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1231, + "역명": "부산역", + "시간": "17:44:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2258, + "역명": "부산역", + "시간": "19:15:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1279, + "역명": "부산역", + "시간": "20:45:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2302, + "역명": "부산역", + "시간": "22:17:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1315, + "역명": "부산역", + "시간": "23:44:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "중앙", + "시간": "05:40:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "중앙", + "시간": "07:13:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2050, + "역명": "중앙", + "시간": "08:45:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1081, + "역명": "중앙", + "시간": "10:16:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2108, + "역명": "중앙", + "시간": "11:39:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1139, + "역명": "중앙", + "시간": "13:10:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2166, + "역명": "중앙", + "시간": "14:33:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1197, + "역명": "중앙", + "시간": "16:04:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2226, + "역명": "중앙", + "시간": "17:27:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "중앙", + "시간": "05:24:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "중앙", + "시간": "07:04:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "중앙", + "시간": "08:33:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1077, + "역명": "중앙", + "시간": "10:04:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2104, + "역명": "중앙", + "시간": "11:27:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1135, + "역명": "중앙", + "시간": "12:58:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2162, + "역명": "중앙", + "시간": "14:21:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1193, + "역명": "중앙", + "시간": "15:52:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2222, + "역명": "중앙", + "시간": "17:16:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1249, + "역명": "중앙", + "시간": "18:49:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2274, + "역명": "중앙", + "시간": "20:17:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1293, + "역명": "중앙", + "시간": "21:50:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "중앙", + "시간": "05:54:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "중앙", + "시간": "07:31:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2054, + "역명": "중앙", + "시간": "08:57:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1085, + "역명": "중앙", + "시간": "10:28:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2112, + "역명": "중앙", + "시간": "11:51:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1143, + "역명": "중앙", + "시간": "13:22:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2170, + "역명": "중앙", + "시간": "14:45:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1201, + "역명": "중앙", + "시간": "16:16:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2230, + "역명": "중앙", + "시간": "17:38:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1255, + "역명": "중앙", + "시간": "19:11:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2278, + "역명": "중앙", + "시간": "20:33:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "중앙", + "시간": "06:06:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1023, + "역명": "중앙", + "시간": "07:38:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2056, + "역명": "중앙", + "시간": "09:03:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1087, + "역명": "중앙", + "시간": "10:34:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2114, + "역명": "중앙", + "시간": "11:57:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1145, + "역명": "중앙", + "시간": "13:28:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2172, + "역명": "중앙", + "시간": "14:51:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1203, + "역명": "중앙", + "시간": "16:22:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2232, + "역명": "중앙", + "시간": "17:44:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1257, + "역명": "중앙", + "시간": "19:19:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2280, + "역명": "중앙", + "시간": "20:41:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1297, + "역명": "중앙", + "시간": "22:10:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2316, + "역명": "중앙", + "시간": "23:31:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2012, + "역명": "중앙", + "시간": "06:42:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1039, + "역명": "중앙", + "시간": "08:19:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2070, + "역명": "중앙", + "시간": "09:45:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1101, + "역명": "중앙", + "시간": "11:16:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2128, + "역명": "중앙", + "시간": "12:39:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1159, + "역명": "중앙", + "시간": "14:10:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2186, + "역명": "중앙", + "시간": "15:33:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1217, + "역명": "중앙", + "시간": "17:04:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2246, + "역명": "중앙", + "시간": "18:29:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2008, + "역명": "중앙", + "시간": "06:18:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1027, + "역명": "중앙", + "시간": "07:49:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2060, + "역명": "중앙", + "시간": "09:15:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1091, + "역명": "중앙", + "시간": "10:46:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2118, + "역명": "중앙", + "시간": "12:09:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1149, + "역명": "중앙", + "시간": "13:40:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2176, + "역명": "중앙", + "시간": "15:03:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1207, + "역명": "중앙", + "시간": "16:34:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2236, + "역명": "중앙", + "시간": "17:56:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1259, + "역명": "중앙", + "시간": "19:27:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2282, + "역명": "중앙", + "시간": "20:49:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1299, + "역명": "중앙", + "시간": "22:20:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 6, + "열번": 2318, + "역명": "중앙", + "시간": "23:47:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1001, + "역명": "중앙", + "시간": "05:51:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2018, + "역명": "중앙", + "시간": "07:14:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1051, + "역명": "중앙", + "시간": "08:49:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2080, + "역명": "중앙", + "시간": "10:15:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1111, + "역명": "중앙", + "시간": "11:46:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2138, + "역명": "중앙", + "시간": "13:09:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1169, + "역명": "중앙", + "시간": "14:40:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2196, + "역명": "중앙", + "시간": "16:03:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1227, + "역명": "중앙", + "시간": "17:34:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2254, + "역명": "중앙", + "시간": "18:57:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1275, + "역명": "중앙", + "시간": "20:31:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 7, + "열번": 2298, + "역명": "중앙", + "시간": "21:55:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2010, + "역명": "중앙", + "시간": "06:30:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1033, + "역명": "중앙", + "시간": "08:04:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2064, + "역명": "중앙", + "시간": "09:27:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1095, + "역명": "중앙", + "시간": "10:58:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2122, + "역명": "중앙", + "시간": "12:21:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1153, + "역명": "중앙", + "시간": "13:52:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2180, + "역명": "중앙", + "시간": "15:15:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1211, + "역명": "중앙", + "시간": "16:46:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2240, + "역명": "중앙", + "시간": "18:08:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1263, + "역명": "중앙", + "시간": "19:43:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2286, + "역명": "중앙", + "시간": "21:05:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1303, + "역명": "중앙", + "시간": "22:40:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 9, + "열번": 1003, + "역명": "중앙", + "시간": "05:59:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2020, + "역명": "중앙", + "시간": "07:23:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1053, + "역명": "중앙", + "시간": "08:54:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2082, + "역명": "중앙", + "시간": "10:21:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1113, + "역명": "중앙", + "시간": "11:52:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2140, + "역명": "중앙", + "시간": "13:15:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1171, + "역명": "중앙", + "시간": "14:46:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2198, + "역명": "중앙", + "시간": "16:09:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1229, + "역명": "중앙", + "시간": "17:40:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2256, + "역명": "중앙", + "시간": "19:05:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1277, + "역명": "중앙", + "시간": "20:39:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2300, + "역명": "중앙", + "시간": "22:05:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1313, + "역명": "중앙", + "시간": "23:34:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2014, + "역명": "중앙", + "시간": "06:54:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1043, + "역명": "중앙", + "시간": "08:29:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2072, + "역명": "중앙", + "시간": "09:51:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1103, + "역명": "중앙", + "시간": "11:22:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2130, + "역명": "중앙", + "시간": "12:45:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1161, + "역명": "중앙", + "시간": "14:16:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2188, + "역명": "중앙", + "시간": "15:39:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1219, + "역명": "중앙", + "시간": "17:10:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2248, + "역명": "중앙", + "시간": "18:36:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1269, + "역명": "중앙", + "시간": "20:07:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2292, + "역명": "중앙", + "시간": "21:29:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1307, + "역명": "중앙", + "시간": "23:00:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 11, + "열번": 2022, + "역명": "중앙", + "시간": "07:29:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2016, + "역명": "중앙", + "시간": "07:05:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1047, + "역명": "중앙", + "시간": "08:39:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2076, + "역명": "중앙", + "시간": "10:03:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1107, + "역명": "중앙", + "시간": "11:34:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2134, + "역명": "중앙", + "시간": "12:57:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1165, + "역명": "중앙", + "시간": "14:28:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "중앙", + "시간": "15:51:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1223, + "역명": "중앙", + "시간": "17:22:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2252, + "역명": "중앙", + "시간": "18:50:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1273, + "역명": "중앙", + "시간": "20:23:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2296, + "역명": "중앙", + "시간": "21:45:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1311, + "역명": "중앙", + "시간": "23:22:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1005, + "역명": "중앙", + "시간": "06:10:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2024, + "역명": "중앙", + "시간": "07:35:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1057, + "역명": "중앙", + "시간": "09:05:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2086, + "역명": "중앙", + "시간": "10:33:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1117, + "역명": "중앙", + "시간": "12:04:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2144, + "역명": "중앙", + "시간": "13:27:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1175, + "역명": "중앙", + "시간": "14:58:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2202, + "역명": "중앙", + "시간": "16:21:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1233, + "역명": "중앙", + "시간": "17:53:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2260, + "역명": "중앙", + "시간": "19:21:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1281, + "역명": "중앙", + "시간": "20:55:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2304, + "역명": "중앙", + "시간": "22:25:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 13, + "열번": 1317, + "역명": "중앙", + "시간": "23:58:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2026, + "역명": "중앙", + "시간": "07:40:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 14, + "열번": 1059, + "역명": "중앙", + "시간": "09:10:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1009, + "역명": "중앙", + "시간": "06:32:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2032, + "역명": "중앙", + "시간": "07:55:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1065, + "역명": "중앙", + "시간": "09:28:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2092, + "역명": "중앙", + "시간": "10:51:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1123, + "역명": "중앙", + "시간": "12:22:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2150, + "역명": "중앙", + "시간": "13:45:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1181, + "역명": "중앙", + "시간": "15:16:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2208, + "역명": "중앙", + "시간": "16:37:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 16, + "열번": 1007, + "역명": "중앙", + "시간": "06:21:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2028, + "역명": "중앙", + "시간": "07:45:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1061, + "역명": "중앙", + "시간": "09:16:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2088, + "역명": "중앙", + "시간": "10:39:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1119, + "역명": "중앙", + "시간": "12:10:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2146, + "역명": "중앙", + "시간": "13:33:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1177, + "역명": "중앙", + "시간": "15:04:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2204, + "역명": "중앙", + "시간": "16:26:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1235, + "역명": "중앙", + "시간": "18:00:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 17, + "열번": 1011, + "역명": "중앙", + "시간": "06:43:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2036, + "역명": "중앙", + "시간": "08:05:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1069, + "역명": "중앙", + "시간": "09:40:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2096, + "역명": "중앙", + "시간": "11:03:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1127, + "역명": "중앙", + "시간": "12:34:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2154, + "역명": "중앙", + "시간": "13:57:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1185, + "역명": "중앙", + "시간": "15:28:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2214, + "역명": "중앙", + "시간": "16:54:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1243, + "역명": "중앙", + "시간": "18:28:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2268, + "역명": "중앙", + "시간": "19:53:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1289, + "역명": "중앙", + "시간": "21:30:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2310, + "역명": "중앙", + "시간": "22:57:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2030, + "역명": "중앙", + "시간": "07:50:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1063, + "역명": "중앙", + "시간": "09:22:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2090, + "역명": "중앙", + "시간": "10:45:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1121, + "역명": "중앙", + "시간": "12:16:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2148, + "역명": "중앙", + "시간": "13:39:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1179, + "역명": "중앙", + "시간": "15:10:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2206, + "역명": "중앙", + "시간": "16:32:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1237, + "역명": "중앙", + "시간": "18:07:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2262, + "역명": "중앙", + "시간": "19:29:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1283, + "역명": "중앙", + "시간": "21:03:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2038, + "역명": "중앙", + "시간": "08:10:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2034, + "역명": "중앙", + "시간": "08:00:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1067, + "역명": "중앙", + "시간": "09:34:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2094, + "역명": "중앙", + "시간": "10:57:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1125, + "역명": "중앙", + "시간": "12:28:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2152, + "역명": "중앙", + "시간": "13:51:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1183, + "역명": "중앙", + "시간": "15:22:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2212, + "역명": "중앙", + "시간": "16:48:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1241, + "역명": "중앙", + "시간": "18:21:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2266, + "역명": "중앙", + "시간": "19:45:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1287, + "역명": "중앙", + "시간": "21:20:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 20, + "열번": 2308, + "역명": "중앙", + "시간": "22:45:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2040, + "역명": "중앙", + "시간": "08:15:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1071, + "역명": "중앙", + "시간": "09:46:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2098, + "역명": "중앙", + "시간": "11:09:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1129, + "역명": "중앙", + "시간": "12:40:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2156, + "역명": "중앙", + "시간": "14:03:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1187, + "역명": "중앙", + "시간": "15:34:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2216, + "역명": "중앙", + "시간": "16:59:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2044, + "역명": "중앙", + "시간": "08:27:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1075, + "역명": "중앙", + "시간": "09:58:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2102, + "역명": "중앙", + "시간": "11:21:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1133, + "역명": "중앙", + "시간": "12:52:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2160, + "역명": "중앙", + "시간": "14:15:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1191, + "역명": "중앙", + "시간": "15:46:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2220, + "역명": "중앙", + "시간": "17:10:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1247, + "역명": "중앙", + "시간": "18:42:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2272, + "역명": "중앙", + "시간": "20:09:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1291, + "역명": "중앙", + "시간": "21:40:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 22, + "열번": 2312, + "역명": "중앙", + "시간": "23:09:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 23, + "열번": 1013, + "역명": "중앙", + "시간": "06:54:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2042, + "역명": "중앙", + "시간": "08:21:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1073, + "역명": "중앙", + "시간": "09:52:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2100, + "역명": "중앙", + "시간": "11:15:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1131, + "역명": "중앙", + "시간": "12:46:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2158, + "역명": "중앙", + "시간": "14:09:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1189, + "역명": "중앙", + "시간": "15:40:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2218, + "역명": "중앙", + "시간": "17:05:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1245, + "역명": "중앙", + "시간": "18:35:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2270, + "역명": "중앙", + "시간": "20:01:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "중앙", + "시간": "08:39:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1079, + "역명": "중앙", + "시간": "10:10:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2106, + "역명": "중앙", + "시간": "11:33:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1137, + "역명": "중앙", + "시간": "13:04:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2164, + "역명": "중앙", + "시간": "14:27:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1195, + "역명": "중앙", + "시간": "15:58:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2224, + "역명": "중앙", + "시간": "17:21:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1251, + "역명": "중앙", + "시간": "18:56:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "중앙", + "시간": "07:22:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2052, + "역명": "중앙", + "시간": "08:51:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1083, + "역명": "중앙", + "시간": "10:22:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2110, + "역명": "중앙", + "시간": "11:45:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1141, + "역명": "중앙", + "시간": "13:16:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2168, + "역명": "중앙", + "시간": "14:39:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1199, + "역명": "중앙", + "시간": "16:10:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2228, + "역명": "중앙", + "시간": "17:32:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1253, + "역명": "중앙", + "시간": "19:03:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2276, + "역명": "중앙", + "시간": "20:25:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1295, + "역명": "중앙", + "시간": "22:00:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2314, + "역명": "중앙", + "시간": "23:21:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 26, + "열번": 1029, + "역명": "중앙", + "시간": "07:54:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1025, + "역명": "중앙", + "시간": "07:44:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2058, + "역명": "중앙", + "시간": "09:09:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1089, + "역명": "중앙", + "시간": "10:40:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2116, + "역명": "중앙", + "시간": "12:03:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1147, + "역명": "중앙", + "시간": "13:34:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2174, + "역명": "중앙", + "시간": "14:57:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1205, + "역명": "중앙", + "시간": "16:28:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 27, + "열번": 2234, + "역명": "중앙", + "시간": "17:50:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 28, + "열번": 1041, + "역명": "중앙", + "시간": "08:24:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1031, + "역명": "중앙", + "시간": "07:59:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2062, + "역명": "중앙", + "시간": "09:21:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1093, + "역명": "중앙", + "시간": "10:52:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2120, + "역명": "중앙", + "시간": "12:15:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1151, + "역명": "중앙", + "시간": "13:46:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2178, + "역명": "중앙", + "시간": "15:09:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1209, + "역명": "중앙", + "시간": "16:40:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2238, + "역명": "중앙", + "시간": "18:02:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1261, + "역명": "중앙", + "시간": "19:35:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2284, + "역명": "중앙", + "시간": "20:57:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 29, + "열번": 1301, + "역명": "중앙", + "시간": "22:30:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1049, + "역명": "중앙", + "시간": "08:44:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2078, + "역명": "중앙", + "시간": "10:09:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1109, + "역명": "중앙", + "시간": "11:40:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2136, + "역명": "중앙", + "시간": "13:03:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1167, + "역명": "중앙", + "시간": "14:34:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2194, + "역명": "중앙", + "시간": "15:57:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1225, + "역명": "중앙", + "시간": "17:28:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1035, + "역명": "중앙", + "시간": "08:09:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2066, + "역명": "중앙", + "시간": "09:33:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1097, + "역명": "중앙", + "시간": "11:04:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2124, + "역명": "중앙", + "시간": "12:27:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1155, + "역명": "중앙", + "시간": "13:58:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2182, + "역명": "중앙", + "시간": "15:21:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1213, + "역명": "중앙", + "시간": "16:52:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2242, + "역명": "중앙", + "시간": "18:15:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1265, + "역명": "중앙", + "시간": "19:51:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2288, + "역명": "중앙", + "시간": "21:13:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1305, + "역명": "중앙", + "시간": "22:50:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 32, + "열번": 2210, + "역명": "중앙", + "시간": "16:43:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 32, + "열번": 1239, + "역명": "중앙", + "시간": "18:14:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 32, + "열번": 2264, + "역명": "중앙", + "시간": "19:37:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 32, + "열번": 1285, + "역명": "중앙", + "시간": "21:11:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 32, + "열번": 2306, + "역명": "중앙", + "시간": "22:35:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 32, + "열번": 7931, + "역명": "중앙", + "시간": "00:14:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1037, + "역명": "중앙", + "시간": "08:14:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2068, + "역명": "중앙", + "시간": "09:39:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1099, + "역명": "중앙", + "시간": "11:10:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2126, + "역명": "중앙", + "시간": "12:33:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1157, + "역명": "중앙", + "시간": "14:04:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2184, + "역명": "중앙", + "시간": "15:27:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1215, + "역명": "중앙", + "시간": "16:58:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2244, + "역명": "중앙", + "시간": "18:22:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1267, + "역명": "중앙", + "시간": "19:59:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 33, + "열번": 2290, + "역명": "중앙", + "시간": "21:21:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1045, + "역명": "중앙", + "시간": "08:34:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2074, + "역명": "중앙", + "시간": "09:57:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1105, + "역명": "중앙", + "시간": "11:28:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2132, + "역명": "중앙", + "시간": "12:51:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1163, + "역명": "중앙", + "시간": "14:22:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2190, + "역명": "중앙", + "시간": "15:45:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1221, + "역명": "중앙", + "시간": "17:16:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2250, + "역명": "중앙", + "시간": "18:43:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1271, + "역명": "중앙", + "시간": "20:15:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2294, + "역명": "중앙", + "시간": "21:37:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1309, + "역명": "중앙", + "시간": "23:11:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1055, + "역명": "중앙", + "시간": "08:59:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2084, + "역명": "중앙", + "시간": "10:27:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1115, + "역명": "중앙", + "시간": "11:58:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2142, + "역명": "중앙", + "시간": "13:21:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1173, + "역명": "중앙", + "시간": "14:52:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2200, + "역명": "중앙", + "시간": "16:15:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1231, + "역명": "중앙", + "시간": "17:46:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2258, + "역명": "중앙", + "시간": "19:13:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1279, + "역명": "중앙", + "시간": "20:47:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2302, + "역명": "중앙", + "시간": "22:15:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1315, + "역명": "중앙", + "시간": "23:46:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "남포", + "시간": "05:38:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "남포", + "시간": "07:15:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2050, + "역명": "남포", + "시간": "08:43:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1081, + "역명": "남포", + "시간": "10:18:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2108, + "역명": "남포", + "시간": "11:37:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1139, + "역명": "남포", + "시간": "13:12:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2166, + "역명": "남포", + "시간": "14:31:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1197, + "역명": "남포", + "시간": "16:06:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2226, + "역명": "남포", + "시간": "17:25:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "남포", + "시간": "05:23:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "남포", + "시간": "07:06:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "남포", + "시간": "08:31:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1077, + "역명": "남포", + "시간": "10:06:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2104, + "역명": "남포", + "시간": "11:25:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1135, + "역명": "남포", + "시간": "13:00:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2162, + "역명": "남포", + "시간": "14:19:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1193, + "역명": "남포", + "시간": "15:54:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2222, + "역명": "남포", + "시간": "17:14:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1249, + "역명": "남포", + "시간": "18:51:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2274, + "역명": "남포", + "시간": "20:15:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1293, + "역명": "남포", + "시간": "21:52:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "남포", + "시간": "05:52:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "남포", + "시간": "07:33:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2054, + "역명": "남포", + "시간": "08:55:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1085, + "역명": "남포", + "시간": "10:30:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2112, + "역명": "남포", + "시간": "11:49:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1143, + "역명": "남포", + "시간": "13:24:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2170, + "역명": "남포", + "시간": "14:43:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1201, + "역명": "남포", + "시간": "16:18:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2230, + "역명": "남포", + "시간": "17:36:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1255, + "역명": "남포", + "시간": "19:13:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2278, + "역명": "남포", + "시간": "20:31:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "남포", + "시간": "06:04:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1023, + "역명": "남포", + "시간": "07:40:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2056, + "역명": "남포", + "시간": "09:01:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1087, + "역명": "남포", + "시간": "10:36:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2114, + "역명": "남포", + "시간": "11:55:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1145, + "역명": "남포", + "시간": "13:30:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2172, + "역명": "남포", + "시간": "14:49:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1203, + "역명": "남포", + "시간": "16:24:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2232, + "역명": "남포", + "시간": "17:42:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1257, + "역명": "남포", + "시간": "19:21:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2280, + "역명": "남포", + "시간": "20:39:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1297, + "역명": "남포", + "시간": "22:12:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2316, + "역명": "남포", + "시간": "23:30:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2012, + "역명": "남포", + "시간": "06:40:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1039, + "역명": "남포", + "시간": "08:21:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2070, + "역명": "남포", + "시간": "09:43:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1101, + "역명": "남포", + "시간": "11:18:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2128, + "역명": "남포", + "시간": "12:37:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1159, + "역명": "남포", + "시간": "14:12:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2186, + "역명": "남포", + "시간": "15:31:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1217, + "역명": "남포", + "시간": "17:06:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2246, + "역명": "남포", + "시간": "18:27:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2008, + "역명": "남포", + "시간": "06:16:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1027, + "역명": "남포", + "시간": "07:51:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2060, + "역명": "남포", + "시간": "09:13:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1091, + "역명": "남포", + "시간": "10:48:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2118, + "역명": "남포", + "시간": "12:07:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1149, + "역명": "남포", + "시간": "13:42:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2176, + "역명": "남포", + "시간": "15:01:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1207, + "역명": "남포", + "시간": "16:36:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2236, + "역명": "남포", + "시간": "17:54:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1259, + "역명": "남포", + "시간": "19:29:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2282, + "역명": "남포", + "시간": "20:47:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1299, + "역명": "남포", + "시간": "22:22:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 6, + "열번": 2318, + "역명": "남포", + "시간": "23:45:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1001, + "역명": "남포", + "시간": "05:53:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2018, + "역명": "남포", + "시간": "07:12:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1051, + "역명": "남포", + "시간": "08:51:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2080, + "역명": "남포", + "시간": "10:13:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1111, + "역명": "남포", + "시간": "11:48:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2138, + "역명": "남포", + "시간": "13:07:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1169, + "역명": "남포", + "시간": "14:42:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2196, + "역명": "남포", + "시간": "16:01:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1227, + "역명": "남포", + "시간": "17:36:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2254, + "역명": "남포", + "시간": "18:55:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1275, + "역명": "남포", + "시간": "20:33:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 7, + "열번": 2298, + "역명": "남포", + "시간": "21:53:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2010, + "역명": "남포", + "시간": "06:28:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1033, + "역명": "남포", + "시간": "08:06:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2064, + "역명": "남포", + "시간": "09:25:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1095, + "역명": "남포", + "시간": "11:00:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2122, + "역명": "남포", + "시간": "12:19:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1153, + "역명": "남포", + "시간": "13:54:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2180, + "역명": "남포", + "시간": "15:13:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1211, + "역명": "남포", + "시간": "16:48:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2240, + "역명": "남포", + "시간": "18:06:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1263, + "역명": "남포", + "시간": "19:45:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2286, + "역명": "남포", + "시간": "21:03:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1303, + "역명": "남포", + "시간": "22:42:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 9, + "열번": 1003, + "역명": "남포", + "시간": "06:01:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2020, + "역명": "남포", + "시간": "07:21:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1053, + "역명": "남포", + "시간": "08:56:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2082, + "역명": "남포", + "시간": "10:19:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1113, + "역명": "남포", + "시간": "11:54:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2140, + "역명": "남포", + "시간": "13:13:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1171, + "역명": "남포", + "시간": "14:48:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2198, + "역명": "남포", + "시간": "16:07:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1229, + "역명": "남포", + "시간": "17:42:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2256, + "역명": "남포", + "시간": "19:03:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1277, + "역명": "남포", + "시간": "20:41:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2300, + "역명": "남포", + "시간": "22:03:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1313, + "역명": "남포", + "시간": "23:36:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2014, + "역명": "남포", + "시간": "06:52:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1043, + "역명": "남포", + "시간": "08:31:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2072, + "역명": "남포", + "시간": "09:49:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1103, + "역명": "남포", + "시간": "11:24:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2130, + "역명": "남포", + "시간": "12:43:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1161, + "역명": "남포", + "시간": "14:18:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2188, + "역명": "남포", + "시간": "15:37:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1219, + "역명": "남포", + "시간": "17:12:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2248, + "역명": "남포", + "시간": "18:34:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1269, + "역명": "남포", + "시간": "20:09:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2292, + "역명": "남포", + "시간": "21:27:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1307, + "역명": "남포", + "시간": "23:02:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 11, + "열번": 2022, + "역명": "남포", + "시간": "07:27:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2016, + "역명": "남포", + "시간": "07:03:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1047, + "역명": "남포", + "시간": "08:41:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2076, + "역명": "남포", + "시간": "10:01:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1107, + "역명": "남포", + "시간": "11:36:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2134, + "역명": "남포", + "시간": "12:55:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1165, + "역명": "남포", + "시간": "14:30:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "남포", + "시간": "15:49:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1223, + "역명": "남포", + "시간": "17:24:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2252, + "역명": "남포", + "시간": "18:48:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1273, + "역명": "남포", + "시간": "20:25:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2296, + "역명": "남포", + "시간": "21:43:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1311, + "역명": "남포", + "시간": "23:24:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1005, + "역명": "남포", + "시간": "06:12:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2024, + "역명": "남포", + "시간": "07:33:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1057, + "역명": "남포", + "시간": "09:07:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2086, + "역명": "남포", + "시간": "10:31:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1117, + "역명": "남포", + "시간": "12:06:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2144, + "역명": "남포", + "시간": "13:25:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1175, + "역명": "남포", + "시간": "15:00:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2202, + "역명": "남포", + "시간": "16:19:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1233, + "역명": "남포", + "시간": "17:55:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2260, + "역명": "남포", + "시간": "19:19:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1281, + "역명": "남포", + "시간": "20:57:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2304, + "역명": "남포", + "시간": "22:23:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 13, + "열번": 1317, + "역명": "남포", + "시간": "00:00:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2026, + "역명": "남포", + "시간": "07:38:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 14, + "열번": 1059, + "역명": "남포", + "시간": "09:12:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1009, + "역명": "남포", + "시간": "06:34:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2032, + "역명": "남포", + "시간": "07:53:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1065, + "역명": "남포", + "시간": "09:30:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2092, + "역명": "남포", + "시간": "10:49:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1123, + "역명": "남포", + "시간": "12:24:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2150, + "역명": "남포", + "시간": "13:43:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1181, + "역명": "남포", + "시간": "15:18:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2208, + "역명": "남포", + "시간": "16:35:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 16, + "열번": 1007, + "역명": "남포", + "시간": "06:23:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2028, + "역명": "남포", + "시간": "07:43:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1061, + "역명": "남포", + "시간": "09:18:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2088, + "역명": "남포", + "시간": "10:37:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1119, + "역명": "남포", + "시간": "12:12:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2146, + "역명": "남포", + "시간": "13:31:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1177, + "역명": "남포", + "시간": "15:06:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2204, + "역명": "남포", + "시간": "16:24:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1235, + "역명": "남포", + "시간": "18:02:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 17, + "열번": 1011, + "역명": "남포", + "시간": "06:45:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2036, + "역명": "남포", + "시간": "08:03:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1069, + "역명": "남포", + "시간": "09:42:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2096, + "역명": "남포", + "시간": "11:01:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1127, + "역명": "남포", + "시간": "12:36:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2154, + "역명": "남포", + "시간": "13:55:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1185, + "역명": "남포", + "시간": "15:30:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2214, + "역명": "남포", + "시간": "16:52:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1243, + "역명": "남포", + "시간": "18:30:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2268, + "역명": "남포", + "시간": "19:51:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1289, + "역명": "남포", + "시간": "21:32:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2310, + "역명": "남포", + "시간": "22:55:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2030, + "역명": "남포", + "시간": "07:48:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1063, + "역명": "남포", + "시간": "09:24:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2090, + "역명": "남포", + "시간": "10:43:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1121, + "역명": "남포", + "시간": "12:18:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2148, + "역명": "남포", + "시간": "13:37:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1179, + "역명": "남포", + "시간": "15:12:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2206, + "역명": "남포", + "시간": "16:30:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1237, + "역명": "남포", + "시간": "18:09:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2262, + "역명": "남포", + "시간": "19:27:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1283, + "역명": "남포", + "시간": "21:05:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2038, + "역명": "남포", + "시간": "08:08:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2034, + "역명": "남포", + "시간": "07:58:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1067, + "역명": "남포", + "시간": "09:36:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2094, + "역명": "남포", + "시간": "10:55:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1125, + "역명": "남포", + "시간": "12:30:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2152, + "역명": "남포", + "시간": "13:49:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1183, + "역명": "남포", + "시간": "15:24:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2212, + "역명": "남포", + "시간": "16:46:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1241, + "역명": "남포", + "시간": "18:23:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2266, + "역명": "남포", + "시간": "19:43:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1287, + "역명": "남포", + "시간": "21:22:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 20, + "열번": 2308, + "역명": "남포", + "시간": "22:43:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2040, + "역명": "남포", + "시간": "08:13:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1071, + "역명": "남포", + "시간": "09:48:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2098, + "역명": "남포", + "시간": "11:07:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1129, + "역명": "남포", + "시간": "12:42:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2156, + "역명": "남포", + "시간": "14:01:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1187, + "역명": "남포", + "시간": "15:36:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2216, + "역명": "남포", + "시간": "16:57:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2044, + "역명": "남포", + "시간": "08:25:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1075, + "역명": "남포", + "시간": "10:00:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2102, + "역명": "남포", + "시간": "11:19:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1133, + "역명": "남포", + "시간": "12:54:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2160, + "역명": "남포", + "시간": "14:13:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1191, + "역명": "남포", + "시간": "15:48:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2220, + "역명": "남포", + "시간": "17:08:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1247, + "역명": "남포", + "시간": "18:44:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2272, + "역명": "남포", + "시간": "20:07:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1291, + "역명": "남포", + "시간": "21:42:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 22, + "열번": 2312, + "역명": "남포", + "시간": "23:07:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 23, + "열번": 1013, + "역명": "남포", + "시간": "06:56:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2042, + "역명": "남포", + "시간": "08:19:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1073, + "역명": "남포", + "시간": "09:54:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2100, + "역명": "남포", + "시간": "11:13:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1131, + "역명": "남포", + "시간": "12:48:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2158, + "역명": "남포", + "시간": "14:07:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1189, + "역명": "남포", + "시간": "15:42:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2218, + "역명": "남포", + "시간": "17:03:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1245, + "역명": "남포", + "시간": "18:37:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2270, + "역명": "남포", + "시간": "19:59:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "남포", + "시간": "08:37:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1079, + "역명": "남포", + "시간": "10:12:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2106, + "역명": "남포", + "시간": "11:31:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1137, + "역명": "남포", + "시간": "13:06:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2164, + "역명": "남포", + "시간": "14:25:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1195, + "역명": "남포", + "시간": "16:00:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2224, + "역명": "남포", + "시간": "17:19:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1251, + "역명": "남포", + "시간": "18:58:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "남포", + "시간": "07:24:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2052, + "역명": "남포", + "시간": "08:49:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1083, + "역명": "남포", + "시간": "10:24:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2110, + "역명": "남포", + "시간": "11:43:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1141, + "역명": "남포", + "시간": "13:18:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2168, + "역명": "남포", + "시간": "14:37:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1199, + "역명": "남포", + "시간": "16:12:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2228, + "역명": "남포", + "시간": "17:30:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1253, + "역명": "남포", + "시간": "19:05:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2276, + "역명": "남포", + "시간": "20:23:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1295, + "역명": "남포", + "시간": "22:02:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2314, + "역명": "남포", + "시간": "23:19:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 26, + "열번": 1029, + "역명": "남포", + "시간": "07:56:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1025, + "역명": "남포", + "시간": "07:46:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2058, + "역명": "남포", + "시간": "09:07:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1089, + "역명": "남포", + "시간": "10:42:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2116, + "역명": "남포", + "시간": "12:01:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1147, + "역명": "남포", + "시간": "13:36:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2174, + "역명": "남포", + "시간": "14:55:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1205, + "역명": "남포", + "시간": "16:30:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 27, + "열번": 2234, + "역명": "남포", + "시간": "17:48:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 28, + "열번": 1041, + "역명": "남포", + "시간": "08:26:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1031, + "역명": "남포", + "시간": "08:01:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2062, + "역명": "남포", + "시간": "09:19:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1093, + "역명": "남포", + "시간": "10:54:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2120, + "역명": "남포", + "시간": "12:13:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1151, + "역명": "남포", + "시간": "13:48:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2178, + "역명": "남포", + "시간": "15:07:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1209, + "역명": "남포", + "시간": "16:42:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2238, + "역명": "남포", + "시간": "18:00:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1261, + "역명": "남포", + "시간": "19:37:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2284, + "역명": "남포", + "시간": "20:55:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 29, + "열번": 1301, + "역명": "남포", + "시간": "22:32:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1049, + "역명": "남포", + "시간": "08:46:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2078, + "역명": "남포", + "시간": "10:07:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1109, + "역명": "남포", + "시간": "11:42:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2136, + "역명": "남포", + "시간": "13:01:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1167, + "역명": "남포", + "시간": "14:36:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2194, + "역명": "남포", + "시간": "15:55:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1225, + "역명": "남포", + "시간": "17:30:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1035, + "역명": "남포", + "시간": "08:11:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2066, + "역명": "남포", + "시간": "09:31:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1097, + "역명": "남포", + "시간": "11:06:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2124, + "역명": "남포", + "시간": "12:25:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1155, + "역명": "남포", + "시간": "14:00:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2182, + "역명": "남포", + "시간": "15:19:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1213, + "역명": "남포", + "시간": "16:54:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2242, + "역명": "남포", + "시간": "18:13:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1265, + "역명": "남포", + "시간": "19:53:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2288, + "역명": "남포", + "시간": "21:11:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1305, + "역명": "남포", + "시간": "22:52:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 32, + "열번": 2210, + "역명": "남포", + "시간": "16:41:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 32, + "열번": 1239, + "역명": "남포", + "시간": "18:16:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 32, + "열번": 2264, + "역명": "남포", + "시간": "19:35:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 32, + "열번": 1285, + "역명": "남포", + "시간": "21:13:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 32, + "열번": 2306, + "역명": "남포", + "시간": "22:33:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 32, + "열번": 7931, + "역명": "남포", + "시간": "00:16:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1037, + "역명": "남포", + "시간": "08:16:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2068, + "역명": "남포", + "시간": "09:37:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1099, + "역명": "남포", + "시간": "11:12:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2126, + "역명": "남포", + "시간": "12:31:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1157, + "역명": "남포", + "시간": "14:06:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2184, + "역명": "남포", + "시간": "15:25:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1215, + "역명": "남포", + "시간": "17:00:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2244, + "역명": "남포", + "시간": "18:20:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1267, + "역명": "남포", + "시간": "20:01:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 33, + "열번": 2290, + "역명": "남포", + "시간": "21:19:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1045, + "역명": "남포", + "시간": "08:36:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2074, + "역명": "남포", + "시간": "09:55:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1105, + "역명": "남포", + "시간": "11:30:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2132, + "역명": "남포", + "시간": "12:49:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1163, + "역명": "남포", + "시간": "14:24:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2190, + "역명": "남포", + "시간": "15:43:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1221, + "역명": "남포", + "시간": "17:18:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2250, + "역명": "남포", + "시간": "18:41:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1271, + "역명": "남포", + "시간": "20:17:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2294, + "역명": "남포", + "시간": "21:35:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1309, + "역명": "남포", + "시간": "23:13:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1055, + "역명": "남포", + "시간": "09:01:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2084, + "역명": "남포", + "시간": "10:25:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1115, + "역명": "남포", + "시간": "12:00:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2142, + "역명": "남포", + "시간": "13:19:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1173, + "역명": "남포", + "시간": "14:54:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2200, + "역명": "남포", + "시간": "16:13:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1231, + "역명": "남포", + "시간": "17:48:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2258, + "역명": "남포", + "시간": "19:11:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1279, + "역명": "남포", + "시간": "20:49:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2302, + "역명": "남포", + "시간": "22:13:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1315, + "역명": "남포", + "시간": "23:48:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "자갈치", + "시간": "05:37:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "자갈치", + "시간": "07:16:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2050, + "역명": "자갈치", + "시간": "08:41:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1081, + "역명": "자갈치", + "시간": "10:20:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2108, + "역명": "자갈치", + "시간": "11:35:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1139, + "역명": "자갈치", + "시간": "13:14:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2166, + "역명": "자갈치", + "시간": "14:29:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1197, + "역명": "자갈치", + "시간": "16:08:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2226, + "역명": "자갈치", + "시간": "17:23:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "자갈치", + "시간": "05:21:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "자갈치", + "시간": "07:07:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "자갈치", + "시간": "08:29:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1077, + "역명": "자갈치", + "시간": "10:08:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2104, + "역명": "자갈치", + "시간": "11:23:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1135, + "역명": "자갈치", + "시간": "13:02:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2162, + "역명": "자갈치", + "시간": "14:17:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1193, + "역명": "자갈치", + "시간": "15:56:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2222, + "역명": "자갈치", + "시간": "17:12:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1249, + "역명": "자갈치", + "시간": "18:53:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2274, + "역명": "자갈치", + "시간": "20:13:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1293, + "역명": "자갈치", + "시간": "21:54:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "자갈치", + "시간": "05:50:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "자갈치", + "시간": "07:34:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2054, + "역명": "자갈치", + "시간": "08:53:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1085, + "역명": "자갈치", + "시간": "10:32:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2112, + "역명": "자갈치", + "시간": "11:47:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1143, + "역명": "자갈치", + "시간": "13:26:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2170, + "역명": "자갈치", + "시간": "14:41:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1201, + "역명": "자갈치", + "시간": "16:20:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2230, + "역명": "자갈치", + "시간": "17:34:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1255, + "역명": "자갈치", + "시간": "19:15:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2278, + "역명": "자갈치", + "시간": "20:29:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "자갈치", + "시간": "06:03:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1023, + "역명": "자갈치", + "시간": "07:41:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2056, + "역명": "자갈치", + "시간": "08:59:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1087, + "역명": "자갈치", + "시간": "10:38:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2114, + "역명": "자갈치", + "시간": "11:53:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1145, + "역명": "자갈치", + "시간": "13:32:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2172, + "역명": "자갈치", + "시간": "14:47:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1203, + "역명": "자갈치", + "시간": "16:26:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2232, + "역명": "자갈치", + "시간": "17:40:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1257, + "역명": "자갈치", + "시간": "19:23:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2280, + "역명": "자갈치", + "시간": "20:37:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1297, + "역명": "자갈치", + "시간": "22:14:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2316, + "역명": "자갈치", + "시간": "23:28:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2012, + "역명": "자갈치", + "시간": "06:39:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1039, + "역명": "자갈치", + "시간": "08:23:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2070, + "역명": "자갈치", + "시간": "09:41:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1101, + "역명": "자갈치", + "시간": "11:20:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2128, + "역명": "자갈치", + "시간": "12:35:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1159, + "역명": "자갈치", + "시간": "14:14:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2186, + "역명": "자갈치", + "시간": "15:29:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1217, + "역명": "자갈치", + "시간": "17:08:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2246, + "역명": "자갈치", + "시간": "18:25:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2008, + "역명": "자갈치", + "시간": "06:15:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1027, + "역명": "자갈치", + "시간": "07:53:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2060, + "역명": "자갈치", + "시간": "09:11:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1091, + "역명": "자갈치", + "시간": "10:50:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2118, + "역명": "자갈치", + "시간": "12:05:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1149, + "역명": "자갈치", + "시간": "13:44:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2176, + "역명": "자갈치", + "시간": "14:59:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1207, + "역명": "자갈치", + "시간": "16:38:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2236, + "역명": "자갈치", + "시간": "17:52:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1259, + "역명": "자갈치", + "시간": "19:31:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2282, + "역명": "자갈치", + "시간": "20:45:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1299, + "역명": "자갈치", + "시간": "22:24:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 6, + "열번": 2318, + "역명": "자갈치", + "시간": "23:43:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1001, + "역명": "자갈치", + "시간": "05:54:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2018, + "역명": "자갈치", + "시간": "07:11:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1051, + "역명": "자갈치", + "시간": "08:53:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2080, + "역명": "자갈치", + "시간": "10:11:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1111, + "역명": "자갈치", + "시간": "11:50:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2138, + "역명": "자갈치", + "시간": "13:05:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1169, + "역명": "자갈치", + "시간": "14:44:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2196, + "역명": "자갈치", + "시간": "15:59:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1227, + "역명": "자갈치", + "시간": "17:38:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2254, + "역명": "자갈치", + "시간": "18:53:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1275, + "역명": "자갈치", + "시간": "20:35:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 7, + "열번": 2298, + "역명": "자갈치", + "시간": "21:51:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2010, + "역명": "자갈치", + "시간": "06:27:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1033, + "역명": "자갈치", + "시간": "08:08:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2064, + "역명": "자갈치", + "시간": "09:23:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1095, + "역명": "자갈치", + "시간": "11:02:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2122, + "역명": "자갈치", + "시간": "12:17:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1153, + "역명": "자갈치", + "시간": "13:56:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2180, + "역명": "자갈치", + "시간": "15:11:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1211, + "역명": "자갈치", + "시간": "16:50:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2240, + "역명": "자갈치", + "시간": "18:04:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1263, + "역명": "자갈치", + "시간": "19:47:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2286, + "역명": "자갈치", + "시간": "21:01:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1303, + "역명": "자갈치", + "시간": "22:44:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 9, + "열번": 1003, + "역명": "자갈치", + "시간": "06:02:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2020, + "역명": "자갈치", + "시간": "07:19:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1053, + "역명": "자갈치", + "시간": "08:58:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2082, + "역명": "자갈치", + "시간": "10:17:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1113, + "역명": "자갈치", + "시간": "11:56:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2140, + "역명": "자갈치", + "시간": "13:11:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1171, + "역명": "자갈치", + "시간": "14:50:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2198, + "역명": "자갈치", + "시간": "16:05:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1229, + "역명": "자갈치", + "시간": "17:44:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2256, + "역명": "자갈치", + "시간": "19:01:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1277, + "역명": "자갈치", + "시간": "20:43:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2300, + "역명": "자갈치", + "시간": "22:01:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1313, + "역명": "자갈치", + "시간": "23:38:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2014, + "역명": "자갈치", + "시간": "06:51:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1043, + "역명": "자갈치", + "시간": "08:33:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2072, + "역명": "자갈치", + "시간": "09:47:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1103, + "역명": "자갈치", + "시간": "11:26:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2130, + "역명": "자갈치", + "시간": "12:41:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1161, + "역명": "자갈치", + "시간": "14:20:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2188, + "역명": "자갈치", + "시간": "15:35:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1219, + "역명": "자갈치", + "시간": "17:14:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2248, + "역명": "자갈치", + "시간": "18:32:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1269, + "역명": "자갈치", + "시간": "20:11:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2292, + "역명": "자갈치", + "시간": "21:25:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1307, + "역명": "자갈치", + "시간": "23:04:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 11, + "열번": 2022, + "역명": "자갈치", + "시간": "07:25:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2016, + "역명": "자갈치", + "시간": "07:02:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1047, + "역명": "자갈치", + "시간": "08:43:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2076, + "역명": "자갈치", + "시간": "09:59:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1107, + "역명": "자갈치", + "시간": "11:38:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2134, + "역명": "자갈치", + "시간": "12:53:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1165, + "역명": "자갈치", + "시간": "14:32:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "자갈치", + "시간": "15:47:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1223, + "역명": "자갈치", + "시간": "17:26:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2252, + "역명": "자갈치", + "시간": "18:46:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1273, + "역명": "자갈치", + "시간": "20:27:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2296, + "역명": "자갈치", + "시간": "21:41:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1311, + "역명": "자갈치", + "시간": "23:26:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1005, + "역명": "자갈치", + "시간": "06:13:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2024, + "역명": "자갈치", + "시간": "07:31:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1057, + "역명": "자갈치", + "시간": "09:08:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2086, + "역명": "자갈치", + "시간": "10:29:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1117, + "역명": "자갈치", + "시간": "12:08:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2144, + "역명": "자갈치", + "시간": "13:23:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1175, + "역명": "자갈치", + "시간": "15:02:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2202, + "역명": "자갈치", + "시간": "16:17:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1233, + "역명": "자갈치", + "시간": "17:57:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2260, + "역명": "자갈치", + "시간": "19:17:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1281, + "역명": "자갈치", + "시간": "20:59:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2304, + "역명": "자갈치", + "시간": "22:21:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 13, + "열번": 1317, + "역명": "자갈치", + "시간": "00:01:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2026, + "역명": "자갈치", + "시간": "07:36:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 14, + "열번": 1059, + "역명": "자갈치", + "시간": "09:14:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1009, + "역명": "자갈치", + "시간": "06:35:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2032, + "역명": "자갈치", + "시간": "07:51:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1065, + "역명": "자갈치", + "시간": "09:32:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2092, + "역명": "자갈치", + "시간": "10:47:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1123, + "역명": "자갈치", + "시간": "12:26:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2150, + "역명": "자갈치", + "시간": "13:41:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1181, + "역명": "자갈치", + "시간": "15:20:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2208, + "역명": "자갈치", + "시간": "16:34:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 16, + "열번": 1007, + "역명": "자갈치", + "시간": "06:24:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2028, + "역명": "자갈치", + "시간": "07:41:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1061, + "역명": "자갈치", + "시간": "09:20:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2088, + "역명": "자갈치", + "시간": "10:35:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1119, + "역명": "자갈치", + "시간": "12:14:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2146, + "역명": "자갈치", + "시간": "13:29:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1177, + "역명": "자갈치", + "시간": "15:08:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2204, + "역명": "자갈치", + "시간": "16:23:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1235, + "역명": "자갈치", + "시간": "18:04:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 17, + "열번": 1011, + "역명": "자갈치", + "시간": "06:46:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2036, + "역명": "자갈치", + "시간": "08:01:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1069, + "역명": "자갈치", + "시간": "09:44:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2096, + "역명": "자갈치", + "시간": "10:59:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1127, + "역명": "자갈치", + "시간": "12:38:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2154, + "역명": "자갈치", + "시간": "13:53:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1185, + "역명": "자갈치", + "시간": "15:32:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2214, + "역명": "자갈치", + "시간": "16:50:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1243, + "역명": "자갈치", + "시간": "18:32:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2268, + "역명": "자갈치", + "시간": "19:49:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1289, + "역명": "자갈치", + "시간": "21:34:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2310, + "역명": "자갈치", + "시간": "22:53:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2030, + "역명": "자갈치", + "시간": "07:46:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1063, + "역명": "자갈치", + "시간": "09:26:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2090, + "역명": "자갈치", + "시간": "10:41:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1121, + "역명": "자갈치", + "시간": "12:20:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2148, + "역명": "자갈치", + "시간": "13:35:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1179, + "역명": "자갈치", + "시간": "15:14:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2206, + "역명": "자갈치", + "시간": "16:28:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1237, + "역명": "자갈치", + "시간": "18:11:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2262, + "역명": "자갈치", + "시간": "19:25:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1283, + "역명": "자갈치", + "시간": "21:07:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2038, + "역명": "자갈치", + "시간": "08:06:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2034, + "역명": "자갈치", + "시간": "07:56:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1067, + "역명": "자갈치", + "시간": "09:38:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2094, + "역명": "자갈치", + "시간": "10:53:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1125, + "역명": "자갈치", + "시간": "12:32:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2152, + "역명": "자갈치", + "시간": "13:47:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1183, + "역명": "자갈치", + "시간": "15:26:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2212, + "역명": "자갈치", + "시간": "16:45:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1241, + "역명": "자갈치", + "시간": "18:25:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2266, + "역명": "자갈치", + "시간": "19:41:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1287, + "역명": "자갈치", + "시간": "21:24:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 20, + "열번": 2308, + "역명": "자갈치", + "시간": "22:41:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2040, + "역명": "자갈치", + "시간": "08:11:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1071, + "역명": "자갈치", + "시간": "09:50:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2098, + "역명": "자갈치", + "시간": "11:05:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1129, + "역명": "자갈치", + "시간": "12:44:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2156, + "역명": "자갈치", + "시간": "13:59:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1187, + "역명": "자갈치", + "시간": "15:38:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2216, + "역명": "자갈치", + "시간": "16:56:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2044, + "역명": "자갈치", + "시간": "08:23:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1075, + "역명": "자갈치", + "시간": "10:02:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2102, + "역명": "자갈치", + "시간": "11:17:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1133, + "역명": "자갈치", + "시간": "12:56:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2160, + "역명": "자갈치", + "시간": "14:11:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1191, + "역명": "자갈치", + "시간": "15:50:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2220, + "역명": "자갈치", + "시간": "17:07:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1247, + "역명": "자갈치", + "시간": "18:46:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2272, + "역명": "자갈치", + "시간": "20:05:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1291, + "역명": "자갈치", + "시간": "21:44:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 22, + "열번": 2312, + "역명": "자갈치", + "시간": "23:05:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 23, + "열번": 1013, + "역명": "자갈치", + "시간": "06:57:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2042, + "역명": "자갈치", + "시간": "08:17:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1073, + "역명": "자갈치", + "시간": "09:56:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2100, + "역명": "자갈치", + "시간": "11:11:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1131, + "역명": "자갈치", + "시간": "12:50:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2158, + "역명": "자갈치", + "시간": "14:05:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1189, + "역명": "자갈치", + "시간": "15:44:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2218, + "역명": "자갈치", + "시간": "17:01:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1245, + "역명": "자갈치", + "시간": "18:39:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2270, + "역명": "자갈치", + "시간": "19:57:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "자갈치", + "시간": "08:35:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1079, + "역명": "자갈치", + "시간": "10:14:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2106, + "역명": "자갈치", + "시간": "11:29:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1137, + "역명": "자갈치", + "시간": "13:08:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2164, + "역명": "자갈치", + "시간": "14:23:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1195, + "역명": "자갈치", + "시간": "16:02:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2224, + "역명": "자갈치", + "시간": "17:18:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1251, + "역명": "자갈치", + "시간": "19:00:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "자갈치", + "시간": "07:25:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2052, + "역명": "자갈치", + "시간": "08:47:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1083, + "역명": "자갈치", + "시간": "10:26:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2110, + "역명": "자갈치", + "시간": "11:41:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1141, + "역명": "자갈치", + "시간": "13:20:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2168, + "역명": "자갈치", + "시간": "14:35:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1199, + "역명": "자갈치", + "시간": "16:14:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2228, + "역명": "자갈치", + "시간": "17:29:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1253, + "역명": "자갈치", + "시간": "19:07:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2276, + "역명": "자갈치", + "시간": "20:21:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1295, + "역명": "자갈치", + "시간": "22:04:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2314, + "역명": "자갈치", + "시간": "23:17:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 26, + "열번": 1029, + "역명": "자갈치", + "시간": "07:58:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1025, + "역명": "자갈치", + "시간": "07:48:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2058, + "역명": "자갈치", + "시간": "09:05:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1089, + "역명": "자갈치", + "시간": "10:44:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2116, + "역명": "자갈치", + "시간": "11:59:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1147, + "역명": "자갈치", + "시간": "13:38:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2174, + "역명": "자갈치", + "시간": "14:53:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1205, + "역명": "자갈치", + "시간": "16:32:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 27, + "열번": 2234, + "역명": "자갈치", + "시간": "17:46:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 28, + "열번": 1041, + "역명": "자갈치", + "시간": "08:28:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1031, + "역명": "자갈치", + "시간": "08:03:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2062, + "역명": "자갈치", + "시간": "09:17:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1093, + "역명": "자갈치", + "시간": "10:56:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2120, + "역명": "자갈치", + "시간": "12:11:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1151, + "역명": "자갈치", + "시간": "13:50:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2178, + "역명": "자갈치", + "시간": "15:05:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1209, + "역명": "자갈치", + "시간": "16:44:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2238, + "역명": "자갈치", + "시간": "17:58:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1261, + "역명": "자갈치", + "시간": "19:39:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2284, + "역명": "자갈치", + "시간": "20:53:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 29, + "열번": 1301, + "역명": "자갈치", + "시간": "22:34:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1049, + "역명": "자갈치", + "시간": "08:48:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2078, + "역명": "자갈치", + "시간": "10:05:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1109, + "역명": "자갈치", + "시간": "11:44:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2136, + "역명": "자갈치", + "시간": "12:59:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1167, + "역명": "자갈치", + "시간": "14:38:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2194, + "역명": "자갈치", + "시간": "15:53:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1225, + "역명": "자갈치", + "시간": "17:32:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1035, + "역명": "자갈치", + "시간": "08:13:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2066, + "역명": "자갈치", + "시간": "09:29:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1097, + "역명": "자갈치", + "시간": "11:08:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2124, + "역명": "자갈치", + "시간": "12:23:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1155, + "역명": "자갈치", + "시간": "14:02:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2182, + "역명": "자갈치", + "시간": "15:17:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1213, + "역명": "자갈치", + "시간": "16:56:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2242, + "역명": "자갈치", + "시간": "18:11:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1265, + "역명": "자갈치", + "시간": "19:55:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2288, + "역명": "자갈치", + "시간": "21:09:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1305, + "역명": "자갈치", + "시간": "22:54:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 32, + "열번": 2210, + "역명": "자갈치", + "시간": "16:39:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 32, + "열번": 1239, + "역명": "자갈치", + "시간": "18:18:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 32, + "열번": 2264, + "역명": "자갈치", + "시간": "19:33:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 32, + "열번": 1285, + "역명": "자갈치", + "시간": "21:15:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 32, + "열번": 2306, + "역명": "자갈치", + "시간": "22:31:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 32, + "열번": 7931, + "역명": "자갈치", + "시간": "00:17:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1037, + "역명": "자갈치", + "시간": "08:18:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2068, + "역명": "자갈치", + "시간": "09:35:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1099, + "역명": "자갈치", + "시간": "11:14:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2126, + "역명": "자갈치", + "시간": "12:29:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1157, + "역명": "자갈치", + "시간": "14:08:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2184, + "역명": "자갈치", + "시간": "15:23:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1215, + "역명": "자갈치", + "시간": "17:02:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2244, + "역명": "자갈치", + "시간": "18:18:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1267, + "역명": "자갈치", + "시간": "20:03:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 33, + "열번": 2290, + "역명": "자갈치", + "시간": "21:17:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1045, + "역명": "자갈치", + "시간": "08:38:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2074, + "역명": "자갈치", + "시간": "09:53:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1105, + "역명": "자갈치", + "시간": "11:32:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2132, + "역명": "자갈치", + "시간": "12:47:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1163, + "역명": "자갈치", + "시간": "14:26:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2190, + "역명": "자갈치", + "시간": "15:41:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1221, + "역명": "자갈치", + "시간": "17:20:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2250, + "역명": "자갈치", + "시간": "18:39:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1271, + "역명": "자갈치", + "시간": "20:19:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2294, + "역명": "자갈치", + "시간": "21:33:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1309, + "역명": "자갈치", + "시간": "23:15:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1055, + "역명": "자갈치", + "시간": "09:03:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2084, + "역명": "자갈치", + "시간": "10:23:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1115, + "역명": "자갈치", + "시간": "12:02:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2142, + "역명": "자갈치", + "시간": "13:17:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1173, + "역명": "자갈치", + "시간": "14:56:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2200, + "역명": "자갈치", + "시간": "16:11:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1231, + "역명": "자갈치", + "시간": "17:50:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2258, + "역명": "자갈치", + "시간": "19:09:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1279, + "역명": "자갈치", + "시간": "20:51:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2302, + "역명": "자갈치", + "시간": "22:11:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1315, + "역명": "자갈치", + "시간": "23:50:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "토성", + "시간": "05:34:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "토성", + "시간": "07:19:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2050, + "역명": "토성", + "시간": "08:39:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1081, + "역명": "토성", + "시간": "10:22:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2108, + "역명": "토성", + "시간": "11:33:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1139, + "역명": "토성", + "시간": "13:16:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2166, + "역명": "토성", + "시간": "14:27:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1197, + "역명": "토성", + "시간": "16:10:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2226, + "역명": "토성", + "시간": "17:21:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "토성", + "시간": "05:19:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "토성", + "시간": "07:10:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "토성", + "시간": "08:27:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1077, + "역명": "토성", + "시간": "10:10:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2104, + "역명": "토성", + "시간": "11:21:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1135, + "역명": "토성", + "시간": "13:04:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2162, + "역명": "토성", + "시간": "14:15:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1193, + "역명": "토성", + "시간": "15:58:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2222, + "역명": "토성", + "시간": "17:10:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1249, + "역명": "토성", + "시간": "18:55:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2274, + "역명": "토성", + "시간": "20:11:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1293, + "역명": "토성", + "시간": "21:56:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "토성", + "시간": "05:48:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "토성", + "시간": "07:37:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2054, + "역명": "토성", + "시간": "08:51:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1085, + "역명": "토성", + "시간": "10:34:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2112, + "역명": "토성", + "시간": "11:45:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1143, + "역명": "토성", + "시간": "13:28:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2170, + "역명": "토성", + "시간": "14:39:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1201, + "역명": "토성", + "시간": "16:22:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2230, + "역명": "토성", + "시간": "17:32:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1255, + "역명": "토성", + "시간": "19:17:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2278, + "역명": "토성", + "시간": "20:27:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "토성", + "시간": "06:00:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1023, + "역명": "토성", + "시간": "07:44:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2056, + "역명": "토성", + "시간": "08:57:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1087, + "역명": "토성", + "시간": "10:40:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2114, + "역명": "토성", + "시간": "11:51:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1145, + "역명": "토성", + "시간": "13:34:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2172, + "역명": "토성", + "시간": "14:45:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1203, + "역명": "토성", + "시간": "16:28:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2232, + "역명": "토성", + "시간": "17:38:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1257, + "역명": "토성", + "시간": "19:25:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2280, + "역명": "토성", + "시간": "20:35:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1297, + "역명": "토성", + "시간": "22:16:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2316, + "역명": "토성", + "시간": "23:26:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2012, + "역명": "토성", + "시간": "06:36:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1039, + "역명": "토성", + "시간": "08:25:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2070, + "역명": "토성", + "시간": "09:39:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1101, + "역명": "토성", + "시간": "11:22:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2128, + "역명": "토성", + "시간": "12:33:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1159, + "역명": "토성", + "시간": "14:16:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2186, + "역명": "토성", + "시간": "15:27:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1217, + "역명": "토성", + "시간": "17:10:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2246, + "역명": "토성", + "시간": "18:23:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2008, + "역명": "토성", + "시간": "06:12:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1027, + "역명": "토성", + "시간": "07:55:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2060, + "역명": "토성", + "시간": "09:09:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1091, + "역명": "토성", + "시간": "10:52:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2118, + "역명": "토성", + "시간": "12:03:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1149, + "역명": "토성", + "시간": "13:46:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2176, + "역명": "토성", + "시간": "14:57:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1207, + "역명": "토성", + "시간": "16:40:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2236, + "역명": "토성", + "시간": "17:50:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1259, + "역명": "토성", + "시간": "19:33:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2282, + "역명": "토성", + "시간": "20:43:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1299, + "역명": "토성", + "시간": "22:26:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 6, + "열번": 2318, + "역명": "토성", + "시간": "23:41:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1001, + "역명": "토성", + "시간": "05:57:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2018, + "역명": "토성", + "시간": "07:08:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1051, + "역명": "토성", + "시간": "08:55:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2080, + "역명": "토성", + "시간": "10:09:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1111, + "역명": "토성", + "시간": "11:52:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2138, + "역명": "토성", + "시간": "13:03:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1169, + "역명": "토성", + "시간": "14:46:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2196, + "역명": "토성", + "시간": "15:57:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1227, + "역명": "토성", + "시간": "17:40:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2254, + "역명": "토성", + "시간": "18:51:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1275, + "역명": "토성", + "시간": "20:37:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 7, + "열번": 2298, + "역명": "토성", + "시간": "21:49:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2010, + "역명": "토성", + "시간": "06:24:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1033, + "역명": "토성", + "시간": "08:10:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2064, + "역명": "토성", + "시간": "09:21:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1095, + "역명": "토성", + "시간": "11:04:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2122, + "역명": "토성", + "시간": "12:15:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1153, + "역명": "토성", + "시간": "13:58:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2180, + "역명": "토성", + "시간": "15:09:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1211, + "역명": "토성", + "시간": "16:52:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2240, + "역명": "토성", + "시간": "18:02:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1263, + "역명": "토성", + "시간": "19:49:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2286, + "역명": "토성", + "시간": "20:59:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1303, + "역명": "토성", + "시간": "22:46:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 9, + "열번": 1003, + "역명": "토성", + "시간": "06:05:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2020, + "역명": "토성", + "시간": "07:17:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1053, + "역명": "토성", + "시간": "09:00:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2082, + "역명": "토성", + "시간": "10:15:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1113, + "역명": "토성", + "시간": "11:58:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2140, + "역명": "토성", + "시간": "13:09:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1171, + "역명": "토성", + "시간": "14:52:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2198, + "역명": "토성", + "시간": "16:03:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1229, + "역명": "토성", + "시간": "17:46:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2256, + "역명": "토성", + "시간": "18:59:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1277, + "역명": "토성", + "시간": "20:45:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2300, + "역명": "토성", + "시간": "21:59:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1313, + "역명": "토성", + "시간": "23:40:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2014, + "역명": "토성", + "시간": "06:48:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1043, + "역명": "토성", + "시간": "08:35:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2072, + "역명": "토성", + "시간": "09:45:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1103, + "역명": "토성", + "시간": "11:28:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2130, + "역명": "토성", + "시간": "12:39:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1161, + "역명": "토성", + "시간": "14:22:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2188, + "역명": "토성", + "시간": "15:33:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1219, + "역명": "토성", + "시간": "17:16:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2248, + "역명": "토성", + "시간": "18:30:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1269, + "역명": "토성", + "시간": "20:13:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2292, + "역명": "토성", + "시간": "21:23:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1307, + "역명": "토성", + "시간": "23:06:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 11, + "열번": 2022, + "역명": "토성", + "시간": "07:23:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2016, + "역명": "토성", + "시간": "06:59:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1047, + "역명": "토성", + "시간": "08:45:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2076, + "역명": "토성", + "시간": "09:57:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1107, + "역명": "토성", + "시간": "11:40:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2134, + "역명": "토성", + "시간": "12:51:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1165, + "역명": "토성", + "시간": "14:34:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "토성", + "시간": "15:45:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1223, + "역명": "토성", + "시간": "17:28:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2252, + "역명": "토성", + "시간": "18:44:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1273, + "역명": "토성", + "시간": "20:29:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2296, + "역명": "토성", + "시간": "21:39:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1311, + "역명": "토성", + "시간": "23:28:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1005, + "역명": "토성", + "시간": "06:16:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2024, + "역명": "토성", + "시간": "07:29:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1057, + "역명": "토성", + "시간": "09:11:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2086, + "역명": "토성", + "시간": "10:27:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1117, + "역명": "토성", + "시간": "12:10:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2144, + "역명": "토성", + "시간": "13:21:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1175, + "역명": "토성", + "시간": "15:04:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2202, + "역명": "토성", + "시간": "16:15:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1233, + "역명": "토성", + "시간": "17:59:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2260, + "역명": "토성", + "시간": "19:15:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1281, + "역명": "토성", + "시간": "21:01:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2304, + "역명": "토성", + "시간": "22:19:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 13, + "열번": 1317, + "역명": "토성", + "시간": "00:04:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2026, + "역명": "토성", + "시간": "07:34:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 14, + "열번": 1059, + "역명": "토성", + "시간": "09:16:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1009, + "역명": "토성", + "시간": "06:38:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2032, + "역명": "토성", + "시간": "07:49:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1065, + "역명": "토성", + "시간": "09:34:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2092, + "역명": "토성", + "시간": "10:45:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1123, + "역명": "토성", + "시간": "12:28:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2150, + "역명": "토성", + "시간": "13:39:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1181, + "역명": "토성", + "시간": "15:22:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2208, + "역명": "토성", + "시간": "16:31:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 16, + "열번": 1007, + "역명": "토성", + "시간": "06:27:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2028, + "역명": "토성", + "시간": "07:39:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1061, + "역명": "토성", + "시간": "09:22:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2088, + "역명": "토성", + "시간": "10:33:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1119, + "역명": "토성", + "시간": "12:16:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2146, + "역명": "토성", + "시간": "13:27:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1177, + "역명": "토성", + "시간": "15:10:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2204, + "역명": "토성", + "시간": "16:20:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1235, + "역명": "토성", + "시간": "18:06:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 17, + "열번": 1011, + "역명": "토성", + "시간": "06:49:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2036, + "역명": "토성", + "시간": "07:59:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1069, + "역명": "토성", + "시간": "09:46:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2096, + "역명": "토성", + "시간": "10:57:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1127, + "역명": "토성", + "시간": "12:40:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2154, + "역명": "토성", + "시간": "13:51:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1185, + "역명": "토성", + "시간": "15:34:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2214, + "역명": "토성", + "시간": "16:48:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1243, + "역명": "토성", + "시간": "18:34:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2268, + "역명": "토성", + "시간": "19:47:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1289, + "역명": "토성", + "시간": "21:36:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2310, + "역명": "토성", + "시간": "22:51:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2030, + "역명": "토성", + "시간": "07:44:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1063, + "역명": "토성", + "시간": "09:28:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2090, + "역명": "토성", + "시간": "10:39:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1121, + "역명": "토성", + "시간": "12:22:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2148, + "역명": "토성", + "시간": "13:33:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1179, + "역명": "토성", + "시간": "15:16:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2206, + "역명": "토성", + "시간": "16:26:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1237, + "역명": "토성", + "시간": "18:13:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2262, + "역명": "토성", + "시간": "19:23:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1283, + "역명": "토성", + "시간": "21:09:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2038, + "역명": "토성", + "시간": "08:04:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2034, + "역명": "토성", + "시간": "07:54:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1067, + "역명": "토성", + "시간": "09:40:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2094, + "역명": "토성", + "시간": "10:51:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1125, + "역명": "토성", + "시간": "12:34:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2152, + "역명": "토성", + "시간": "13:45:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1183, + "역명": "토성", + "시간": "15:28:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2212, + "역명": "토성", + "시간": "16:42:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1241, + "역명": "토성", + "시간": "18:27:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2266, + "역명": "토성", + "시간": "19:39:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1287, + "역명": "토성", + "시간": "21:26:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 20, + "열번": 2308, + "역명": "토성", + "시간": "22:39:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2040, + "역명": "토성", + "시간": "08:09:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1071, + "역명": "토성", + "시간": "09:52:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2098, + "역명": "토성", + "시간": "11:03:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1129, + "역명": "토성", + "시간": "12:46:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2156, + "역명": "토성", + "시간": "13:57:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1187, + "역명": "토성", + "시간": "15:40:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2216, + "역명": "토성", + "시간": "16:53:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2044, + "역명": "토성", + "시간": "08:21:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1075, + "역명": "토성", + "시간": "10:04:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2102, + "역명": "토성", + "시간": "11:15:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1133, + "역명": "토성", + "시간": "12:58:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2160, + "역명": "토성", + "시간": "14:09:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1191, + "역명": "토성", + "시간": "15:52:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2220, + "역명": "토성", + "시간": "17:04:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1247, + "역명": "토성", + "시간": "18:48:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2272, + "역명": "토성", + "시간": "20:03:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1291, + "역명": "토성", + "시간": "21:46:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 22, + "열번": 2312, + "역명": "토성", + "시간": "23:03:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 23, + "열번": 1013, + "역명": "토성", + "시간": "07:00:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2042, + "역명": "토성", + "시간": "08:15:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1073, + "역명": "토성", + "시간": "09:58:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2100, + "역명": "토성", + "시간": "11:09:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1131, + "역명": "토성", + "시간": "12:52:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2158, + "역명": "토성", + "시간": "14:03:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1189, + "역명": "토성", + "시간": "15:46:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2218, + "역명": "토성", + "시간": "16:59:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1245, + "역명": "토성", + "시간": "18:41:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2270, + "역명": "토성", + "시간": "19:55:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "토성", + "시간": "08:33:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1079, + "역명": "토성", + "시간": "10:16:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2106, + "역명": "토성", + "시간": "11:27:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1137, + "역명": "토성", + "시간": "13:10:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2164, + "역명": "토성", + "시간": "14:21:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1195, + "역명": "토성", + "시간": "16:04:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2224, + "역명": "토성", + "시간": "17:15:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1251, + "역명": "토성", + "시간": "19:02:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "토성", + "시간": "07:28:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2052, + "역명": "토성", + "시간": "08:45:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1083, + "역명": "토성", + "시간": "10:28:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2110, + "역명": "토성", + "시간": "11:39:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1141, + "역명": "토성", + "시간": "13:22:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2168, + "역명": "토성", + "시간": "14:33:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1199, + "역명": "토성", + "시간": "16:16:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2228, + "역명": "토성", + "시간": "17:26:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1253, + "역명": "토성", + "시간": "19:09:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2276, + "역명": "토성", + "시간": "20:19:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1295, + "역명": "토성", + "시간": "22:06:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2314, + "역명": "토성", + "시간": "23:15:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 26, + "열번": 1029, + "역명": "토성", + "시간": "08:00:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1025, + "역명": "토성", + "시간": "07:50:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2058, + "역명": "토성", + "시간": "09:03:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1089, + "역명": "토성", + "시간": "10:46:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2116, + "역명": "토성", + "시간": "11:57:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1147, + "역명": "토성", + "시간": "13:40:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2174, + "역명": "토성", + "시간": "14:51:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1205, + "역명": "토성", + "시간": "16:34:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 27, + "열번": 2234, + "역명": "토성", + "시간": "17:44:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 28, + "열번": 1041, + "역명": "토성", + "시간": "08:30:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1031, + "역명": "토성", + "시간": "08:05:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2062, + "역명": "토성", + "시간": "09:15:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1093, + "역명": "토성", + "시간": "10:58:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2120, + "역명": "토성", + "시간": "12:09:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1151, + "역명": "토성", + "시간": "13:52:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2178, + "역명": "토성", + "시간": "15:03:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1209, + "역명": "토성", + "시간": "16:46:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2238, + "역명": "토성", + "시간": "17:56:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1261, + "역명": "토성", + "시간": "19:41:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2284, + "역명": "토성", + "시간": "20:51:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 29, + "열번": 1301, + "역명": "토성", + "시간": "22:36:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1049, + "역명": "토성", + "시간": "08:50:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2078, + "역명": "토성", + "시간": "10:03:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1109, + "역명": "토성", + "시간": "11:46:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2136, + "역명": "토성", + "시간": "12:57:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1167, + "역명": "토성", + "시간": "14:40:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2194, + "역명": "토성", + "시간": "15:51:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1225, + "역명": "토성", + "시간": "17:34:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1035, + "역명": "토성", + "시간": "08:15:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2066, + "역명": "토성", + "시간": "09:27:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1097, + "역명": "토성", + "시간": "11:10:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2124, + "역명": "토성", + "시간": "12:21:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1155, + "역명": "토성", + "시간": "14:04:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2182, + "역명": "토성", + "시간": "15:15:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1213, + "역명": "토성", + "시간": "16:58:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2242, + "역명": "토성", + "시간": "18:09:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1265, + "역명": "토성", + "시간": "19:57:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2288, + "역명": "토성", + "시간": "21:07:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1305, + "역명": "토성", + "시간": "22:56:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 32, + "열번": 2210, + "역명": "토성", + "시간": "16:37:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 32, + "열번": 1239, + "역명": "토성", + "시간": "18:20:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 32, + "열번": 2264, + "역명": "토성", + "시간": "19:31:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 32, + "열번": 1285, + "역명": "토성", + "시간": "21:17:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 32, + "열번": 2306, + "역명": "토성", + "시간": "22:29:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 32, + "열번": 7931, + "역명": "토성", + "시간": "00:20:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1037, + "역명": "토성", + "시간": "08:20:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2068, + "역명": "토성", + "시간": "09:33:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1099, + "역명": "토성", + "시간": "11:16:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2126, + "역명": "토성", + "시간": "12:27:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1157, + "역명": "토성", + "시간": "14:10:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2184, + "역명": "토성", + "시간": "15:21:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1215, + "역명": "토성", + "시간": "17:04:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2244, + "역명": "토성", + "시간": "18:16:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1267, + "역명": "토성", + "시간": "20:05:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 33, + "열번": 2290, + "역명": "토성", + "시간": "21:15:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1045, + "역명": "토성", + "시간": "08:40:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2074, + "역명": "토성", + "시간": "09:51:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1105, + "역명": "토성", + "시간": "11:34:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2132, + "역명": "토성", + "시간": "12:45:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1163, + "역명": "토성", + "시간": "14:28:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2190, + "역명": "토성", + "시간": "15:39:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1221, + "역명": "토성", + "시간": "17:22:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2250, + "역명": "토성", + "시간": "18:37:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1271, + "역명": "토성", + "시간": "20:21:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2294, + "역명": "토성", + "시간": "21:31:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1309, + "역명": "토성", + "시간": "23:17:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1055, + "역명": "토성", + "시간": "09:05:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2084, + "역명": "토성", + "시간": "10:21:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1115, + "역명": "토성", + "시간": "12:04:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2142, + "역명": "토성", + "시간": "13:15:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1173, + "역명": "토성", + "시간": "14:58:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2200, + "역명": "토성", + "시간": "16:09:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1231, + "역명": "토성", + "시간": "17:52:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2258, + "역명": "토성", + "시간": "19:07:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1279, + "역명": "토성", + "시간": "20:53:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2302, + "역명": "토성", + "시간": "22:09:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1315, + "역명": "토성", + "시간": "23:52:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "동대신", + "시간": "05:32:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "동대신", + "시간": "07:22:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2050, + "역명": "동대신", + "시간": "08:36:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1081, + "역명": "동대신", + "시간": "10:25:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2108, + "역명": "동대신", + "시간": "11:30:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1139, + "역명": "동대신", + "시간": "13:19:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2166, + "역명": "동대신", + "시간": "14:24:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1197, + "역명": "동대신", + "시간": "16:13:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2226, + "역명": "동대신", + "시간": "17:18:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "동대신", + "시간": "05:16:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "동대신", + "시간": "07:13:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "동대신", + "시간": "08:24:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1077, + "역명": "동대신", + "시간": "10:13:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2104, + "역명": "동대신", + "시간": "11:18:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1135, + "역명": "동대신", + "시간": "13:07:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2162, + "역명": "동대신", + "시간": "14:12:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1193, + "역명": "동대신", + "시간": "16:01:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2222, + "역명": "동대신", + "시간": "17:07:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1249, + "역명": "동대신", + "시간": "18:58:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2274, + "역명": "동대신", + "시간": "20:08:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1293, + "역명": "동대신", + "시간": "21:59:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "동대신", + "시간": "05:45:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "동대신", + "시간": "07:40:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2054, + "역명": "동대신", + "시간": "08:48:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1085, + "역명": "동대신", + "시간": "10:37:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2112, + "역명": "동대신", + "시간": "11:42:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1143, + "역명": "동대신", + "시간": "13:31:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2170, + "역명": "동대신", + "시간": "14:36:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1201, + "역명": "동대신", + "시간": "16:25:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2230, + "역명": "동대신", + "시간": "17:29:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1255, + "역명": "동대신", + "시간": "19:20:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2278, + "역명": "동대신", + "시간": "20:24:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "동대신", + "시간": "05:58:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1023, + "역명": "동대신", + "시간": "07:47:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2056, + "역명": "동대신", + "시간": "08:54:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1087, + "역명": "동대신", + "시간": "10:43:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2114, + "역명": "동대신", + "시간": "11:48:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1145, + "역명": "동대신", + "시간": "13:37:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2172, + "역명": "동대신", + "시간": "14:42:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1203, + "역명": "동대신", + "시간": "16:31:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2232, + "역명": "동대신", + "시간": "17:35:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1257, + "역명": "동대신", + "시간": "19:28:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2280, + "역명": "동대신", + "시간": "20:32:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1297, + "역명": "동대신", + "시간": "22:19:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2316, + "역명": "동대신", + "시간": "23:23:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2012, + "역명": "동대신", + "시간": "06:34:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1039, + "역명": "동대신", + "시간": "08:28:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2070, + "역명": "동대신", + "시간": "09:36:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1101, + "역명": "동대신", + "시간": "11:25:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2128, + "역명": "동대신", + "시간": "12:30:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1159, + "역명": "동대신", + "시간": "14:19:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2186, + "역명": "동대신", + "시간": "15:24:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1217, + "역명": "동대신", + "시간": "17:13:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2246, + "역명": "동대신", + "시간": "18:20:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2008, + "역명": "동대신", + "시간": "06:10:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1027, + "역명": "동대신", + "시간": "07:58:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2060, + "역명": "동대신", + "시간": "09:06:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1091, + "역명": "동대신", + "시간": "10:55:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2118, + "역명": "동대신", + "시간": "12:00:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1149, + "역명": "동대신", + "시간": "13:49:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2176, + "역명": "동대신", + "시간": "14:54:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1207, + "역명": "동대신", + "시간": "16:43:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2236, + "역명": "동대신", + "시간": "17:47:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1259, + "역명": "동대신", + "시간": "19:36:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2282, + "역명": "동대신", + "시간": "20:40:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1299, + "역명": "동대신", + "시간": "22:29:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 6, + "열번": 2318, + "역명": "동대신", + "시간": "23:39:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1001, + "역명": "동대신", + "시간": "06:00:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2018, + "역명": "동대신", + "시간": "07:06:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1051, + "역명": "동대신", + "시간": "08:58:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2080, + "역명": "동대신", + "시간": "10:06:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1111, + "역명": "동대신", + "시간": "11:55:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2138, + "역명": "동대신", + "시간": "13:00:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1169, + "역명": "동대신", + "시간": "14:49:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2196, + "역명": "동대신", + "시간": "15:54:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1227, + "역명": "동대신", + "시간": "17:43:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2254, + "역명": "동대신", + "시간": "18:48:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1275, + "역명": "동대신", + "시간": "20:40:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 7, + "열번": 2298, + "역명": "동대신", + "시간": "21:46:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2010, + "역명": "동대신", + "시간": "06:22:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1033, + "역명": "동대신", + "시간": "08:13:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2064, + "역명": "동대신", + "시간": "09:18:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1095, + "역명": "동대신", + "시간": "11:07:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2122, + "역명": "동대신", + "시간": "12:12:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1153, + "역명": "동대신", + "시간": "14:01:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2180, + "역명": "동대신", + "시간": "15:06:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1211, + "역명": "동대신", + "시간": "16:55:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2240, + "역명": "동대신", + "시간": "17:59:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1263, + "역명": "동대신", + "시간": "19:52:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2286, + "역명": "동대신", + "시간": "20:56:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1303, + "역명": "동대신", + "시간": "22:49:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 9, + "열번": 1003, + "역명": "동대신", + "시간": "06:08:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2020, + "역명": "동대신", + "시간": "07:14:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1053, + "역명": "동대신", + "시간": "09:03:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2082, + "역명": "동대신", + "시간": "10:12:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1113, + "역명": "동대신", + "시간": "12:01:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2140, + "역명": "동대신", + "시간": "13:06:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1171, + "역명": "동대신", + "시간": "14:55:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2198, + "역명": "동대신", + "시간": "16:00:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1229, + "역명": "동대신", + "시간": "17:49:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2256, + "역명": "동대신", + "시간": "18:56:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1277, + "역명": "동대신", + "시간": "20:48:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2300, + "역명": "동대신", + "시간": "21:56:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1313, + "역명": "동대신", + "시간": "23:43:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2014, + "역명": "동대신", + "시간": "06:46:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1043, + "역명": "동대신", + "시간": "08:38:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2072, + "역명": "동대신", + "시간": "09:42:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1103, + "역명": "동대신", + "시간": "11:31:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2130, + "역명": "동대신", + "시간": "12:36:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1161, + "역명": "동대신", + "시간": "14:25:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2188, + "역명": "동대신", + "시간": "15:30:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1219, + "역명": "동대신", + "시간": "17:19:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2248, + "역명": "동대신", + "시간": "18:27:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1269, + "역명": "동대신", + "시간": "20:16:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2292, + "역명": "동대신", + "시간": "21:20:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1307, + "역명": "동대신", + "시간": "23:09:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 11, + "열번": 2022, + "역명": "동대신", + "시간": "07:20:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2016, + "역명": "동대신", + "시간": "06:57:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1047, + "역명": "동대신", + "시간": "08:48:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2076, + "역명": "동대신", + "시간": "09:54:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1107, + "역명": "동대신", + "시간": "11:43:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2134, + "역명": "동대신", + "시간": "12:48:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1165, + "역명": "동대신", + "시간": "14:37:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "동대신", + "시간": "15:42:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1223, + "역명": "동대신", + "시간": "17:31:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2252, + "역명": "동대신", + "시간": "18:41:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1273, + "역명": "동대신", + "시간": "20:32:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2296, + "역명": "동대신", + "시간": "21:36:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1311, + "역명": "동대신", + "시간": "23:31:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1005, + "역명": "동대신", + "시간": "06:19:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2024, + "역명": "동대신", + "시간": "07:26:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1057, + "역명": "동대신", + "시간": "09:14:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2086, + "역명": "동대신", + "시간": "10:24:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1117, + "역명": "동대신", + "시간": "12:13:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2144, + "역명": "동대신", + "시간": "13:18:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1175, + "역명": "동대신", + "시간": "15:07:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2202, + "역명": "동대신", + "시간": "16:12:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1233, + "역명": "동대신", + "시간": "18:02:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2260, + "역명": "동대신", + "시간": "19:12:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1281, + "역명": "동대신", + "시간": "21:04:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2304, + "역명": "동대신", + "시간": "22:16:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 13, + "열번": 1317, + "역명": "동대신", + "시간": "00:07:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2026, + "역명": "동대신", + "시간": "07:31:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 14, + "열번": 1059, + "역명": "동대신", + "시간": "09:19:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1009, + "역명": "동대신", + "시간": "06:41:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2032, + "역명": "동대신", + "시간": "07:46:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1065, + "역명": "동대신", + "시간": "09:37:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2092, + "역명": "동대신", + "시간": "10:42:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1123, + "역명": "동대신", + "시간": "12:31:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2150, + "역명": "동대신", + "시간": "13:36:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1181, + "역명": "동대신", + "시간": "15:25:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2208, + "역명": "동대신", + "시간": "16:29:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 16, + "열번": 1007, + "역명": "동대신", + "시간": "06:30:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2028, + "역명": "동대신", + "시간": "07:36:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1061, + "역명": "동대신", + "시간": "09:25:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2088, + "역명": "동대신", + "시간": "10:30:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1119, + "역명": "동대신", + "시간": "12:19:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2146, + "역명": "동대신", + "시간": "13:24:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1177, + "역명": "동대신", + "시간": "15:13:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2204, + "역명": "동대신", + "시간": "16:18:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1235, + "역명": "동대신", + "시간": "18:09:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 17, + "열번": 1011, + "역명": "동대신", + "시간": "06:52:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2036, + "역명": "동대신", + "시간": "07:56:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1069, + "역명": "동대신", + "시간": "09:49:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2096, + "역명": "동대신", + "시간": "10:54:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1127, + "역명": "동대신", + "시간": "12:43:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2154, + "역명": "동대신", + "시간": "13:48:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1185, + "역명": "동대신", + "시간": "15:37:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2214, + "역명": "동대신", + "시간": "16:45:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1243, + "역명": "동대신", + "시간": "18:37:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2268, + "역명": "동대신", + "시간": "19:44:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1289, + "역명": "동대신", + "시간": "21:39:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2310, + "역명": "동대신", + "시간": "22:48:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2030, + "역명": "동대신", + "시간": "07:41:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1063, + "역명": "동대신", + "시간": "09:31:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2090, + "역명": "동대신", + "시간": "10:36:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1121, + "역명": "동대신", + "시간": "12:25:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2148, + "역명": "동대신", + "시간": "13:30:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1179, + "역명": "동대신", + "시간": "15:19:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2206, + "역명": "동대신", + "시간": "16:23:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1237, + "역명": "동대신", + "시간": "18:16:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2262, + "역명": "동대신", + "시간": "19:20:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1283, + "역명": "동대신", + "시간": "21:12:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2038, + "역명": "동대신", + "시간": "08:01:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2034, + "역명": "동대신", + "시간": "07:51:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1067, + "역명": "동대신", + "시간": "09:43:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2094, + "역명": "동대신", + "시간": "10:48:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1125, + "역명": "동대신", + "시간": "12:37:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2152, + "역명": "동대신", + "시간": "13:42:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1183, + "역명": "동대신", + "시간": "15:31:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2212, + "역명": "동대신", + "시간": "16:40:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1241, + "역명": "동대신", + "시간": "18:30:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2266, + "역명": "동대신", + "시간": "19:36:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1287, + "역명": "동대신", + "시간": "21:29:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 20, + "열번": 2308, + "역명": "동대신", + "시간": "22:36:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2040, + "역명": "동대신", + "시간": "08:06:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1071, + "역명": "동대신", + "시간": "09:55:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2098, + "역명": "동대신", + "시간": "11:00:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1129, + "역명": "동대신", + "시간": "12:49:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2156, + "역명": "동대신", + "시간": "13:54:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1187, + "역명": "동대신", + "시간": "15:43:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2216, + "역명": "동대신", + "시간": "16:51:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2044, + "역명": "동대신", + "시간": "08:18:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1075, + "역명": "동대신", + "시간": "10:07:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2102, + "역명": "동대신", + "시간": "11:12:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1133, + "역명": "동대신", + "시간": "13:01:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2160, + "역명": "동대신", + "시간": "14:06:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1191, + "역명": "동대신", + "시간": "15:55:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2220, + "역명": "동대신", + "시간": "17:02:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1247, + "역명": "동대신", + "시간": "18:51:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2272, + "역명": "동대신", + "시간": "20:00:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1291, + "역명": "동대신", + "시간": "21:49:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 22, + "열번": 2312, + "역명": "동대신", + "시간": "23:00:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 23, + "열번": 1013, + "역명": "동대신", + "시간": "07:03:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2042, + "역명": "동대신", + "시간": "08:12:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1073, + "역명": "동대신", + "시간": "10:01:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2100, + "역명": "동대신", + "시간": "11:06:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1131, + "역명": "동대신", + "시간": "12:55:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2158, + "역명": "동대신", + "시간": "14:00:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1189, + "역명": "동대신", + "시간": "15:49:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2218, + "역명": "동대신", + "시간": "16:56:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1245, + "역명": "동대신", + "시간": "18:44:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2270, + "역명": "동대신", + "시간": "19:52:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "동대신", + "시간": "08:30:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1079, + "역명": "동대신", + "시간": "10:19:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2106, + "역명": "동대신", + "시간": "11:24:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1137, + "역명": "동대신", + "시간": "13:13:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2164, + "역명": "동대신", + "시간": "14:18:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1195, + "역명": "동대신", + "시간": "16:07:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2224, + "역명": "동대신", + "시간": "17:13:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1251, + "역명": "동대신", + "시간": "19:05:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "동대신", + "시간": "07:31:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2052, + "역명": "동대신", + "시간": "08:42:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1083, + "역명": "동대신", + "시간": "10:31:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2110, + "역명": "동대신", + "시간": "11:36:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1141, + "역명": "동대신", + "시간": "13:25:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2168, + "역명": "동대신", + "시간": "14:30:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1199, + "역명": "동대신", + "시간": "16:19:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2228, + "역명": "동대신", + "시간": "17:24:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1253, + "역명": "동대신", + "시간": "19:12:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2276, + "역명": "동대신", + "시간": "20:16:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1295, + "역명": "동대신", + "시간": "22:09:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2314, + "역명": "동대신", + "시간": "23:12:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 26, + "열번": 1029, + "역명": "동대신", + "시간": "08:03:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1025, + "역명": "동대신", + "시간": "07:53:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2058, + "역명": "동대신", + "시간": "09:00:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1089, + "역명": "동대신", + "시간": "10:49:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2116, + "역명": "동대신", + "시간": "11:54:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1147, + "역명": "동대신", + "시간": "13:43:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2174, + "역명": "동대신", + "시간": "14:48:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1205, + "역명": "동대신", + "시간": "16:37:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 27, + "열번": 2234, + "역명": "동대신", + "시간": "17:41:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 28, + "열번": 1041, + "역명": "동대신", + "시간": "08:33:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1031, + "역명": "동대신", + "시간": "08:08:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2062, + "역명": "동대신", + "시간": "09:12:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1093, + "역명": "동대신", + "시간": "11:01:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2120, + "역명": "동대신", + "시간": "12:06:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1151, + "역명": "동대신", + "시간": "13:55:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2178, + "역명": "동대신", + "시간": "15:00:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1209, + "역명": "동대신", + "시간": "16:49:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2238, + "역명": "동대신", + "시간": "17:53:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1261, + "역명": "동대신", + "시간": "19:44:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2284, + "역명": "동대신", + "시간": "20:48:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 29, + "열번": 1301, + "역명": "동대신", + "시간": "22:39:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1049, + "역명": "동대신", + "시간": "08:53:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2078, + "역명": "동대신", + "시간": "10:00:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1109, + "역명": "동대신", + "시간": "11:49:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2136, + "역명": "동대신", + "시간": "12:54:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1167, + "역명": "동대신", + "시간": "14:43:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2194, + "역명": "동대신", + "시간": "15:48:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1225, + "역명": "동대신", + "시간": "17:37:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1035, + "역명": "동대신", + "시간": "08:18:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2066, + "역명": "동대신", + "시간": "09:24:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1097, + "역명": "동대신", + "시간": "11:13:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2124, + "역명": "동대신", + "시간": "12:18:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1155, + "역명": "동대신", + "시간": "14:07:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2182, + "역명": "동대신", + "시간": "15:12:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1213, + "역명": "동대신", + "시간": "17:01:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2242, + "역명": "동대신", + "시간": "18:06:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1265, + "역명": "동대신", + "시간": "20:00:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2288, + "역명": "동대신", + "시간": "21:04:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1305, + "역명": "동대신", + "시간": "22:59:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 32, + "열번": 2210, + "역명": "동대신", + "시간": "16:34:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 32, + "열번": 1239, + "역명": "동대신", + "시간": "18:23:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 32, + "열번": 2264, + "역명": "동대신", + "시간": "19:28:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 32, + "열번": 1285, + "역명": "동대신", + "시간": "21:20:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 32, + "열번": 2306, + "역명": "동대신", + "시간": "22:26:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 32, + "열번": 7931, + "역명": "동대신", + "시간": "00:23:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1037, + "역명": "동대신", + "시간": "08:23:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2068, + "역명": "동대신", + "시간": "09:30:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1099, + "역명": "동대신", + "시간": "11:19:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2126, + "역명": "동대신", + "시간": "12:24:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1157, + "역명": "동대신", + "시간": "14:13:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2184, + "역명": "동대신", + "시간": "15:18:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1215, + "역명": "동대신", + "시간": "17:07:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2244, + "역명": "동대신", + "시간": "18:13:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1267, + "역명": "동대신", + "시간": "20:08:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 33, + "열번": 2290, + "역명": "동대신", + "시간": "21:12:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1045, + "역명": "동대신", + "시간": "08:43:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2074, + "역명": "동대신", + "시간": "09:48:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1105, + "역명": "동대신", + "시간": "11:37:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2132, + "역명": "동대신", + "시간": "12:42:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1163, + "역명": "동대신", + "시간": "14:31:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2190, + "역명": "동대신", + "시간": "15:36:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1221, + "역명": "동대신", + "시간": "17:25:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2250, + "역명": "동대신", + "시간": "18:34:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1271, + "역명": "동대신", + "시간": "20:24:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2294, + "역명": "동대신", + "시간": "21:28:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1309, + "역명": "동대신", + "시간": "23:20:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1055, + "역명": "동대신", + "시간": "09:08:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2084, + "역명": "동대신", + "시간": "10:18:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1115, + "역명": "동대신", + "시간": "12:07:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2142, + "역명": "동대신", + "시간": "13:12:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1173, + "역명": "동대신", + "시간": "15:01:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2200, + "역명": "동대신", + "시간": "16:06:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1231, + "역명": "동대신", + "시간": "17:55:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2258, + "역명": "동대신", + "시간": "19:04:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1279, + "역명": "동대신", + "시간": "20:56:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2302, + "역명": "동대신", + "시간": "22:06:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1315, + "역명": "동대신", + "시간": "23:55:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "서대신", + "시간": "05:30:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "서대신", + "시간": "07:24:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2050, + "역명": "서대신", + "시간": "08:34:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1081, + "역명": "서대신", + "시간": "10:28:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2108, + "역명": "서대신", + "시간": "11:28:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1139, + "역명": "서대신", + "시간": "13:22:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2166, + "역명": "서대신", + "시간": "14:22:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1197, + "역명": "서대신", + "시간": "16:16:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2226, + "역명": "서대신", + "시간": "17:16:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "서대신", + "시간": "05:14:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "서대신", + "시간": "07:15:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "서대신", + "시간": "08:22:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1077, + "역명": "서대신", + "시간": "10:16:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2104, + "역명": "서대신", + "시간": "11:16:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1135, + "역명": "서대신", + "시간": "13:10:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2162, + "역명": "서대신", + "시간": "14:10:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1193, + "역명": "서대신", + "시간": "16:04:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2222, + "역명": "서대신", + "시간": "17:05:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1249, + "역명": "서대신", + "시간": "19:01:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2274, + "역명": "서대신", + "시간": "20:06:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1293, + "역명": "서대신", + "시간": "22:02:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "서대신", + "시간": "05:43:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "서대신", + "시간": "07:42:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2054, + "역명": "서대신", + "시간": "08:46:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1085, + "역명": "서대신", + "시간": "10:40:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2112, + "역명": "서대신", + "시간": "11:40:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1143, + "역명": "서대신", + "시간": "13:34:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2170, + "역명": "서대신", + "시간": "14:34:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1201, + "역명": "서대신", + "시간": "16:28:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2230, + "역명": "서대신", + "시간": "17:27:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1255, + "역명": "서대신", + "시간": "19:23:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2278, + "역명": "서대신", + "시간": "20:22:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "서대신", + "시간": "05:56:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1023, + "역명": "서대신", + "시간": "07:49:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2056, + "역명": "서대신", + "시간": "08:52:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1087, + "역명": "서대신", + "시간": "10:46:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2114, + "역명": "서대신", + "시간": "11:46:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1145, + "역명": "서대신", + "시간": "13:40:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2172, + "역명": "서대신", + "시간": "14:40:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1203, + "역명": "서대신", + "시간": "16:34:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2232, + "역명": "서대신", + "시간": "17:33:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1257, + "역명": "서대신", + "시간": "19:31:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2280, + "역명": "서대신", + "시간": "20:30:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1297, + "역명": "서대신", + "시간": "22:22:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2316, + "역명": "서대신", + "시간": "23:21:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2012, + "역명": "서대신", + "시간": "06:32:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1039, + "역명": "서대신", + "시간": "08:31:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2070, + "역명": "서대신", + "시간": "09:34:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1101, + "역명": "서대신", + "시간": "11:28:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2128, + "역명": "서대신", + "시간": "12:28:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1159, + "역명": "서대신", + "시간": "14:22:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2186, + "역명": "서대신", + "시간": "15:22:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1217, + "역명": "서대신", + "시간": "17:16:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2246, + "역명": "서대신", + "시간": "18:18:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2008, + "역명": "서대신", + "시간": "06:08:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1027, + "역명": "서대신", + "시간": "08:01:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2060, + "역명": "서대신", + "시간": "09:04:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1091, + "역명": "서대신", + "시간": "10:58:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2118, + "역명": "서대신", + "시간": "11:58:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1149, + "역명": "서대신", + "시간": "13:52:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2176, + "역명": "서대신", + "시간": "14:52:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1207, + "역명": "서대신", + "시간": "16:46:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2236, + "역명": "서대신", + "시간": "17:45:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1259, + "역명": "서대신", + "시간": "19:39:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2282, + "역명": "서대신", + "시간": "20:38:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1299, + "역명": "서대신", + "시간": "22:32:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 6, + "열번": 2318, + "역명": "서대신", + "시간": "23:36:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1001, + "역명": "서대신", + "시간": "06:02:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2018, + "역명": "서대신", + "시간": "07:04:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1051, + "역명": "서대신", + "시간": "09:01:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2080, + "역명": "서대신", + "시간": "10:04:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1111, + "역명": "서대신", + "시간": "11:58:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2138, + "역명": "서대신", + "시간": "12:58:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1169, + "역명": "서대신", + "시간": "14:52:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2196, + "역명": "서대신", + "시간": "15:52:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1227, + "역명": "서대신", + "시간": "17:46:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2254, + "역명": "서대신", + "시간": "18:46:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1275, + "역명": "서대신", + "시간": "20:43:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 7, + "열번": 2298, + "역명": "서대신", + "시간": "21:44:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2010, + "역명": "서대신", + "시간": "06:20:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1033, + "역명": "서대신", + "시간": "08:16:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2064, + "역명": "서대신", + "시간": "09:16:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1095, + "역명": "서대신", + "시간": "11:10:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2122, + "역명": "서대신", + "시간": "12:10:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1153, + "역명": "서대신", + "시간": "14:04:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2180, + "역명": "서대신", + "시간": "15:04:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1211, + "역명": "서대신", + "시간": "16:58:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2240, + "역명": "서대신", + "시간": "17:57:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1263, + "역명": "서대신", + "시간": "19:55:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2286, + "역명": "서대신", + "시간": "20:54:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1303, + "역명": "서대신", + "시간": "22:52:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 9, + "열번": 1003, + "역명": "서대신", + "시간": "06:10:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2020, + "역명": "서대신", + "시간": "07:12:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1053, + "역명": "서대신", + "시간": "09:06:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2082, + "역명": "서대신", + "시간": "10:10:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1113, + "역명": "서대신", + "시간": "12:04:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2140, + "역명": "서대신", + "시간": "13:04:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1171, + "역명": "서대신", + "시간": "14:58:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2198, + "역명": "서대신", + "시간": "15:58:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1229, + "역명": "서대신", + "시간": "17:52:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2256, + "역명": "서대신", + "시간": "18:54:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1277, + "역명": "서대신", + "시간": "20:51:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2300, + "역명": "서대신", + "시간": "21:54:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1313, + "역명": "서대신", + "시간": "23:46:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2014, + "역명": "서대신", + "시간": "06:44:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1043, + "역명": "서대신", + "시간": "08:41:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2072, + "역명": "서대신", + "시간": "09:40:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1103, + "역명": "서대신", + "시간": "11:34:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2130, + "역명": "서대신", + "시간": "12:34:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1161, + "역명": "서대신", + "시간": "14:28:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2188, + "역명": "서대신", + "시간": "15:28:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1219, + "역명": "서대신", + "시간": "17:22:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2248, + "역명": "서대신", + "시간": "18:25:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1269, + "역명": "서대신", + "시간": "20:19:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2292, + "역명": "서대신", + "시간": "21:18:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1307, + "역명": "서대신", + "시간": "23:12:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 11, + "열번": 2022, + "역명": "서대신", + "시간": "07:18:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2016, + "역명": "서대신", + "시간": "06:55:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1047, + "역명": "서대신", + "시간": "08:51:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2076, + "역명": "서대신", + "시간": "09:52:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1107, + "역명": "서대신", + "시간": "11:46:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2134, + "역명": "서대신", + "시간": "12:46:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1165, + "역명": "서대신", + "시간": "14:40:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "서대신", + "시간": "15:40:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1223, + "역명": "서대신", + "시간": "17:34:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2252, + "역명": "서대신", + "시간": "18:39:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1273, + "역명": "서대신", + "시간": "20:35:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2296, + "역명": "서대신", + "시간": "21:34:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1311, + "역명": "서대신", + "시간": "23:34:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1005, + "역명": "서대신", + "시간": "06:21:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2024, + "역명": "서대신", + "시간": "07:24:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1057, + "역명": "서대신", + "시간": "09:16:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2086, + "역명": "서대신", + "시간": "10:22:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1117, + "역명": "서대신", + "시간": "12:16:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2144, + "역명": "서대신", + "시간": "13:16:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1175, + "역명": "서대신", + "시간": "15:10:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2202, + "역명": "서대신", + "시간": "16:10:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1233, + "역명": "서대신", + "시간": "18:05:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2260, + "역명": "서대신", + "시간": "19:10:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1281, + "역명": "서대신", + "시간": "21:07:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2304, + "역명": "서대신", + "시간": "22:14:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 13, + "열번": 1317, + "역명": "서대신", + "시간": "00:09:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2026, + "역명": "서대신", + "시간": "07:29:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 14, + "열번": 1059, + "역명": "서대신", + "시간": "09:22:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1009, + "역명": "서대신", + "시간": "06:43:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2032, + "역명": "서대신", + "시간": "07:44:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1065, + "역명": "서대신", + "시간": "09:40:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2092, + "역명": "서대신", + "시간": "10:40:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1123, + "역명": "서대신", + "시간": "12:34:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2150, + "역명": "서대신", + "시간": "13:34:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1181, + "역명": "서대신", + "시간": "15:28:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2208, + "역명": "서대신", + "시간": "16:27:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 16, + "열번": 1007, + "역명": "서대신", + "시간": "06:32:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2028, + "역명": "서대신", + "시간": "07:34:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1061, + "역명": "서대신", + "시간": "09:28:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2088, + "역명": "서대신", + "시간": "10:28:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1119, + "역명": "서대신", + "시간": "12:22:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2146, + "역명": "서대신", + "시간": "13:22:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1177, + "역명": "서대신", + "시간": "15:16:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2204, + "역명": "서대신", + "시간": "16:16:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1235, + "역명": "서대신", + "시간": "18:12:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 17, + "열번": 1011, + "역명": "서대신", + "시간": "06:54:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2036, + "역명": "서대신", + "시간": "07:54:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1069, + "역명": "서대신", + "시간": "09:52:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2096, + "역명": "서대신", + "시간": "10:52:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1127, + "역명": "서대신", + "시간": "12:46:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2154, + "역명": "서대신", + "시간": "13:46:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1185, + "역명": "서대신", + "시간": "15:40:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2214, + "역명": "서대신", + "시간": "16:43:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1243, + "역명": "서대신", + "시간": "18:40:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2268, + "역명": "서대신", + "시간": "19:42:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1289, + "역명": "서대신", + "시간": "21:42:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2310, + "역명": "서대신", + "시간": "22:46:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2030, + "역명": "서대신", + "시간": "07:39:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1063, + "역명": "서대신", + "시간": "09:34:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2090, + "역명": "서대신", + "시간": "10:34:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1121, + "역명": "서대신", + "시간": "12:28:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2148, + "역명": "서대신", + "시간": "13:28:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1179, + "역명": "서대신", + "시간": "15:22:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2206, + "역명": "서대신", + "시간": "16:21:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1237, + "역명": "서대신", + "시간": "18:19:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2262, + "역명": "서대신", + "시간": "19:18:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1283, + "역명": "서대신", + "시간": "21:15:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2038, + "역명": "서대신", + "시간": "07:59:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2034, + "역명": "서대신", + "시간": "07:49:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1067, + "역명": "서대신", + "시간": "09:46:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2094, + "역명": "서대신", + "시간": "10:46:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1125, + "역명": "서대신", + "시간": "12:40:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2152, + "역명": "서대신", + "시간": "13:40:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1183, + "역명": "서대신", + "시간": "15:34:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2212, + "역명": "서대신", + "시간": "16:38:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1241, + "역명": "서대신", + "시간": "18:33:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2266, + "역명": "서대신", + "시간": "19:34:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1287, + "역명": "서대신", + "시간": "21:32:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 20, + "열번": 2308, + "역명": "서대신", + "시간": "22:34:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2040, + "역명": "서대신", + "시간": "08:04:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1071, + "역명": "서대신", + "시간": "09:58:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2098, + "역명": "서대신", + "시간": "10:58:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1129, + "역명": "서대신", + "시간": "12:52:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2156, + "역명": "서대신", + "시간": "13:52:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1187, + "역명": "서대신", + "시간": "15:46:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2216, + "역명": "서대신", + "시간": "16:49:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2044, + "역명": "서대신", + "시간": "08:16:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1075, + "역명": "서대신", + "시간": "10:10:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2102, + "역명": "서대신", + "시간": "11:10:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1133, + "역명": "서대신", + "시간": "13:04:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2160, + "역명": "서대신", + "시간": "14:04:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1191, + "역명": "서대신", + "시간": "15:58:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2220, + "역명": "서대신", + "시간": "17:00:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1247, + "역명": "서대신", + "시간": "18:54:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2272, + "역명": "서대신", + "시간": "19:58:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1291, + "역명": "서대신", + "시간": "21:52:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 22, + "열번": 2312, + "역명": "서대신", + "시간": "22:58:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 23, + "열번": 1013, + "역명": "서대신", + "시간": "07:05:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2042, + "역명": "서대신", + "시간": "08:10:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1073, + "역명": "서대신", + "시간": "10:04:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2100, + "역명": "서대신", + "시간": "11:04:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1131, + "역명": "서대신", + "시간": "12:58:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2158, + "역명": "서대신", + "시간": "13:58:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1189, + "역명": "서대신", + "시간": "15:52:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2218, + "역명": "서대신", + "시간": "16:54:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1245, + "역명": "서대신", + "시간": "18:47:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2270, + "역명": "서대신", + "시간": "19:50:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "서대신", + "시간": "08:28:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1079, + "역명": "서대신", + "시간": "10:22:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2106, + "역명": "서대신", + "시간": "11:22:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1137, + "역명": "서대신", + "시간": "13:16:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2164, + "역명": "서대신", + "시간": "14:16:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1195, + "역명": "서대신", + "시간": "16:10:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2224, + "역명": "서대신", + "시간": "17:11:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1251, + "역명": "서대신", + "시간": "19:08:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "서대신", + "시간": "07:33:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2052, + "역명": "서대신", + "시간": "08:40:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1083, + "역명": "서대신", + "시간": "10:34:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2110, + "역명": "서대신", + "시간": "11:34:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1141, + "역명": "서대신", + "시간": "13:28:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2168, + "역명": "서대신", + "시간": "14:28:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1199, + "역명": "서대신", + "시간": "16:22:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2228, + "역명": "서대신", + "시간": "17:22:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1253, + "역명": "서대신", + "시간": "19:15:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2276, + "역명": "서대신", + "시간": "20:14:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1295, + "역명": "서대신", + "시간": "22:12:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2314, + "역명": "서대신", + "시간": "23:10:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 26, + "열번": 1029, + "역명": "서대신", + "시간": "08:06:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1025, + "역명": "서대신", + "시간": "07:56:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2058, + "역명": "서대신", + "시간": "08:58:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1089, + "역명": "서대신", + "시간": "10:52:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2116, + "역명": "서대신", + "시간": "11:52:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1147, + "역명": "서대신", + "시간": "13:46:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2174, + "역명": "서대신", + "시간": "14:46:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1205, + "역명": "서대신", + "시간": "16:40:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 27, + "열번": 2234, + "역명": "서대신", + "시간": "17:39:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 28, + "열번": 1041, + "역명": "서대신", + "시간": "08:36:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1031, + "역명": "서대신", + "시간": "08:11:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2062, + "역명": "서대신", + "시간": "09:10:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1093, + "역명": "서대신", + "시간": "11:04:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2120, + "역명": "서대신", + "시간": "12:04:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1151, + "역명": "서대신", + "시간": "13:58:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2178, + "역명": "서대신", + "시간": "14:58:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1209, + "역명": "서대신", + "시간": "16:52:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2238, + "역명": "서대신", + "시간": "17:51:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1261, + "역명": "서대신", + "시간": "19:47:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2284, + "역명": "서대신", + "시간": "20:46:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 29, + "열번": 1301, + "역명": "서대신", + "시간": "22:42:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1049, + "역명": "서대신", + "시간": "08:56:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2078, + "역명": "서대신", + "시간": "09:58:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1109, + "역명": "서대신", + "시간": "11:52:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2136, + "역명": "서대신", + "시간": "12:52:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1167, + "역명": "서대신", + "시간": "14:46:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2194, + "역명": "서대신", + "시간": "15:46:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1225, + "역명": "서대신", + "시간": "17:40:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1035, + "역명": "서대신", + "시간": "08:21:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2066, + "역명": "서대신", + "시간": "09:22:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1097, + "역명": "서대신", + "시간": "11:16:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2124, + "역명": "서대신", + "시간": "12:16:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1155, + "역명": "서대신", + "시간": "14:10:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2182, + "역명": "서대신", + "시간": "15:10:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1213, + "역명": "서대신", + "시간": "17:04:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2242, + "역명": "서대신", + "시간": "18:04:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1265, + "역명": "서대신", + "시간": "20:03:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2288, + "역명": "서대신", + "시간": "21:02:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1305, + "역명": "서대신", + "시간": "23:02:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 32, + "열번": 2210, + "역명": "서대신", + "시간": "16:32:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 32, + "열번": 1239, + "역명": "서대신", + "시간": "18:26:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 32, + "열번": 2264, + "역명": "서대신", + "시간": "19:26:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 32, + "열번": 1285, + "역명": "서대신", + "시간": "21:23:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 32, + "열번": 2306, + "역명": "서대신", + "시간": "22:24:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 32, + "열번": 7931, + "역명": "서대신", + "시간": "00:25:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1037, + "역명": "서대신", + "시간": "08:26:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2068, + "역명": "서대신", + "시간": "09:28:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1099, + "역명": "서대신", + "시간": "11:22:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2126, + "역명": "서대신", + "시간": "12:22:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1157, + "역명": "서대신", + "시간": "14:16:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2184, + "역명": "서대신", + "시간": "15:16:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1215, + "역명": "서대신", + "시간": "17:10:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2244, + "역명": "서대신", + "시간": "18:11:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1267, + "역명": "서대신", + "시간": "20:11:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 33, + "열번": 2290, + "역명": "서대신", + "시간": "21:10:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1045, + "역명": "서대신", + "시간": "08:46:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2074, + "역명": "서대신", + "시간": "09:46:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1105, + "역명": "서대신", + "시간": "11:40:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2132, + "역명": "서대신", + "시간": "12:40:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1163, + "역명": "서대신", + "시간": "14:34:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2190, + "역명": "서대신", + "시간": "15:34:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1221, + "역명": "서대신", + "시간": "17:28:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2250, + "역명": "서대신", + "시간": "18:32:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1271, + "역명": "서대신", + "시간": "20:27:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2294, + "역명": "서대신", + "시간": "21:26:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1309, + "역명": "서대신", + "시간": "23:23:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1055, + "역명": "서대신", + "시간": "09:11:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2084, + "역명": "서대신", + "시간": "10:16:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1115, + "역명": "서대신", + "시간": "12:10:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2142, + "역명": "서대신", + "시간": "13:10:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1173, + "역명": "서대신", + "시간": "15:04:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2200, + "역명": "서대신", + "시간": "16:04:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1231, + "역명": "서대신", + "시간": "17:58:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2258, + "역명": "서대신", + "시간": "19:02:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1279, + "역명": "서대신", + "시간": "20:59:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2302, + "역명": "서대신", + "시간": "22:04:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1315, + "역명": "서대신", + "시간": "23:58:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "대티", + "시간": "05:27:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "대티", + "시간": "07:26:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2050, + "역명": "대티", + "시간": "08:32:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1081, + "역명": "대티", + "시간": "10:30:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2108, + "역명": "대티", + "시간": "11:26:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1139, + "역명": "대티", + "시간": "13:24:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2166, + "역명": "대티", + "시간": "14:20:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1197, + "역명": "대티", + "시간": "16:18:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2226, + "역명": "대티", + "시간": "17:14:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "대티", + "시간": "05:11:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "대티", + "시간": "07:17:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "대티", + "시간": "08:20:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1077, + "역명": "대티", + "시간": "10:18:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2104, + "역명": "대티", + "시간": "11:14:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1135, + "역명": "대티", + "시간": "13:12:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2162, + "역명": "대티", + "시간": "14:08:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1193, + "역명": "대티", + "시간": "16:06:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2222, + "역명": "대티", + "시간": "17:03:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1249, + "역명": "대티", + "시간": "19:03:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2274, + "역명": "대티", + "시간": "20:04:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1293, + "역명": "대티", + "시간": "22:04:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "대티", + "시간": "05:41:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "대티", + "시간": "07:44:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2054, + "역명": "대티", + "시간": "08:44:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1085, + "역명": "대티", + "시간": "10:42:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2112, + "역명": "대티", + "시간": "11:38:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1143, + "역명": "대티", + "시간": "13:36:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2170, + "역명": "대티", + "시간": "14:32:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1201, + "역명": "대티", + "시간": "16:30:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2230, + "역명": "대티", + "시간": "17:25:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1255, + "역명": "대티", + "시간": "19:25:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2278, + "역명": "대티", + "시간": "20:20:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "대티", + "시간": "05:53:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1023, + "역명": "대티", + "시간": "07:51:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2056, + "역명": "대티", + "시간": "08:50:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1087, + "역명": "대티", + "시간": "10:48:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2114, + "역명": "대티", + "시간": "11:44:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1145, + "역명": "대티", + "시간": "13:42:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2172, + "역명": "대티", + "시간": "14:38:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1203, + "역명": "대티", + "시간": "16:36:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2232, + "역명": "대티", + "시간": "17:31:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1257, + "역명": "대티", + "시간": "19:33:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2280, + "역명": "대티", + "시간": "20:28:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1297, + "역명": "대티", + "시간": "22:24:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2316, + "역명": "대티", + "시간": "23:18:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2012, + "역명": "대티", + "시간": "06:29:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1039, + "역명": "대티", + "시간": "08:33:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2070, + "역명": "대티", + "시간": "09:32:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1101, + "역명": "대티", + "시간": "11:30:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2128, + "역명": "대티", + "시간": "12:26:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1159, + "역명": "대티", + "시간": "14:24:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2186, + "역명": "대티", + "시간": "15:20:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1217, + "역명": "대티", + "시간": "17:18:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2246, + "역명": "대티", + "시간": "18:16:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2008, + "역명": "대티", + "시간": "06:05:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1027, + "역명": "대티", + "시간": "08:03:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2060, + "역명": "대티", + "시간": "09:02:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1091, + "역명": "대티", + "시간": "11:00:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2118, + "역명": "대티", + "시간": "11:56:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1149, + "역명": "대티", + "시간": "13:54:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2176, + "역명": "대티", + "시간": "14:50:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1207, + "역명": "대티", + "시간": "16:48:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2236, + "역명": "대티", + "시간": "17:43:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1259, + "역명": "대티", + "시간": "19:41:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2282, + "역명": "대티", + "시간": "20:36:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1299, + "역명": "대티", + "시간": "22:34:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 6, + "열번": 2318, + "역명": "대티", + "시간": "23:34:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1001, + "역명": "대티", + "시간": "06:04:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2018, + "역명": "대티", + "시간": "07:01:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1051, + "역명": "대티", + "시간": "09:03:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2080, + "역명": "대티", + "시간": "10:02:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1111, + "역명": "대티", + "시간": "12:00:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2138, + "역명": "대티", + "시간": "12:56:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1169, + "역명": "대티", + "시간": "14:54:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2196, + "역명": "대티", + "시간": "15:50:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1227, + "역명": "대티", + "시간": "17:48:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2254, + "역명": "대티", + "시간": "18:44:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1275, + "역명": "대티", + "시간": "20:45:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 7, + "열번": 2298, + "역명": "대티", + "시간": "21:42:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2010, + "역명": "대티", + "시간": "06:17:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1033, + "역명": "대티", + "시간": "08:18:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2064, + "역명": "대티", + "시간": "09:14:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1095, + "역명": "대티", + "시간": "11:12:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2122, + "역명": "대티", + "시간": "12:08:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1153, + "역명": "대티", + "시간": "14:06:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2180, + "역명": "대티", + "시간": "15:02:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1211, + "역명": "대티", + "시간": "17:00:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2240, + "역명": "대티", + "시간": "17:55:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1263, + "역명": "대티", + "시간": "19:57:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2286, + "역명": "대티", + "시간": "20:52:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1303, + "역명": "대티", + "시간": "22:54:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 9, + "열번": 1003, + "역명": "대티", + "시간": "06:12:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2020, + "역명": "대티", + "시간": "07:10:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1053, + "역명": "대티", + "시간": "09:08:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2082, + "역명": "대티", + "시간": "10:08:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1113, + "역명": "대티", + "시간": "12:06:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2140, + "역명": "대티", + "시간": "13:02:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1171, + "역명": "대티", + "시간": "15:00:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2198, + "역명": "대티", + "시간": "15:56:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1229, + "역명": "대티", + "시간": "17:54:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2256, + "역명": "대티", + "시간": "18:52:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1277, + "역명": "대티", + "시간": "20:53:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2300, + "역명": "대티", + "시간": "21:52:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1313, + "역명": "대티", + "시간": "23:48:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2014, + "역명": "대티", + "시간": "06:41:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1043, + "역명": "대티", + "시간": "08:43:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2072, + "역명": "대티", + "시간": "09:38:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1103, + "역명": "대티", + "시간": "11:36:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2130, + "역명": "대티", + "시간": "12:32:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1161, + "역명": "대티", + "시간": "14:30:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2188, + "역명": "대티", + "시간": "15:26:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1219, + "역명": "대티", + "시간": "17:24:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2248, + "역명": "대티", + "시간": "18:23:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1269, + "역명": "대티", + "시간": "20:21:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2292, + "역명": "대티", + "시간": "21:16:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1307, + "역명": "대티", + "시간": "23:14:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 11, + "열번": 2022, + "역명": "대티", + "시간": "07:16:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2016, + "역명": "대티", + "시간": "06:52:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1047, + "역명": "대티", + "시간": "08:53:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2076, + "역명": "대티", + "시간": "09:50:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1107, + "역명": "대티", + "시간": "11:48:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2134, + "역명": "대티", + "시간": "12:44:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1165, + "역명": "대티", + "시간": "14:42:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "대티", + "시간": "15:38:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1223, + "역명": "대티", + "시간": "17:36:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2252, + "역명": "대티", + "시간": "18:37:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1273, + "역명": "대티", + "시간": "20:37:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2296, + "역명": "대티", + "시간": "21:32:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1311, + "역명": "대티", + "시간": "23:36:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1005, + "역명": "대티", + "시간": "06:23:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2024, + "역명": "대티", + "시간": "07:22:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1057, + "역명": "대티", + "시간": "09:18:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2086, + "역명": "대티", + "시간": "10:20:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1117, + "역명": "대티", + "시간": "12:18:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2144, + "역명": "대티", + "시간": "13:14:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1175, + "역명": "대티", + "시간": "15:12:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2202, + "역명": "대티", + "시간": "16:08:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1233, + "역명": "대티", + "시간": "18:07:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2260, + "역명": "대티", + "시간": "19:08:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1281, + "역명": "대티", + "시간": "21:09:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2304, + "역명": "대티", + "시간": "22:12:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 13, + "열번": 1317, + "역명": "대티", + "시간": "00:11:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2026, + "역명": "대티", + "시간": "07:27:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 14, + "열번": 1059, + "역명": "대티", + "시간": "09:24:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1009, + "역명": "대티", + "시간": "06:45:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2032, + "역명": "대티", + "시간": "07:42:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1065, + "역명": "대티", + "시간": "09:42:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2092, + "역명": "대티", + "시간": "10:38:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1123, + "역명": "대티", + "시간": "12:36:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2150, + "역명": "대티", + "시간": "13:32:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1181, + "역명": "대티", + "시간": "15:30:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2208, + "역명": "대티", + "시간": "16:24:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 16, + "열번": 1007, + "역명": "대티", + "시간": "06:34:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2028, + "역명": "대티", + "시간": "07:32:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1061, + "역명": "대티", + "시간": "09:30:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2088, + "역명": "대티", + "시간": "10:26:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1119, + "역명": "대티", + "시간": "12:24:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2146, + "역명": "대티", + "시간": "13:20:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1177, + "역명": "대티", + "시간": "15:18:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2204, + "역명": "대티", + "시간": "16:13:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1235, + "역명": "대티", + "시간": "18:14:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 17, + "열번": 1011, + "역명": "대티", + "시간": "06:56:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2036, + "역명": "대티", + "시간": "07:52:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1069, + "역명": "대티", + "시간": "09:54:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2096, + "역명": "대티", + "시간": "10:50:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1127, + "역명": "대티", + "시간": "12:48:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2154, + "역명": "대티", + "시간": "13:44:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1185, + "역명": "대티", + "시간": "15:42:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2214, + "역명": "대티", + "시간": "16:41:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1243, + "역명": "대티", + "시간": "18:42:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2268, + "역명": "대티", + "시간": "19:40:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1289, + "역명": "대티", + "시간": "21:44:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2310, + "역명": "대티", + "시간": "22:44:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2030, + "역명": "대티", + "시간": "07:37:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1063, + "역명": "대티", + "시간": "09:36:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2090, + "역명": "대티", + "시간": "10:32:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1121, + "역명": "대티", + "시간": "12:30:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2148, + "역명": "대티", + "시간": "13:26:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1179, + "역명": "대티", + "시간": "15:24:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2206, + "역명": "대티", + "시간": "16:19:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1237, + "역명": "대티", + "시간": "18:21:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2262, + "역명": "대티", + "시간": "19:16:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1283, + "역명": "대티", + "시간": "21:17:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2038, + "역명": "대티", + "시간": "07:57:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2034, + "역명": "대티", + "시간": "07:47:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1067, + "역명": "대티", + "시간": "09:48:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2094, + "역명": "대티", + "시간": "10:44:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1125, + "역명": "대티", + "시간": "12:42:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2152, + "역명": "대티", + "시간": "13:38:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1183, + "역명": "대티", + "시간": "15:36:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2212, + "역명": "대티", + "시간": "16:35:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1241, + "역명": "대티", + "시간": "18:35:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2266, + "역명": "대티", + "시간": "19:32:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1287, + "역명": "대티", + "시간": "21:34:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 20, + "열번": 2308, + "역명": "대티", + "시간": "22:32:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2040, + "역명": "대티", + "시간": "08:02:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1071, + "역명": "대티", + "시간": "10:00:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2098, + "역명": "대티", + "시간": "10:56:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1129, + "역명": "대티", + "시간": "12:54:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2156, + "역명": "대티", + "시간": "13:50:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1187, + "역명": "대티", + "시간": "15:48:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2216, + "역명": "대티", + "시간": "16:46:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2044, + "역명": "대티", + "시간": "08:14:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1075, + "역명": "대티", + "시간": "10:12:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2102, + "역명": "대티", + "시간": "11:08:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1133, + "역명": "대티", + "시간": "13:06:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2160, + "역명": "대티", + "시간": "14:02:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1191, + "역명": "대티", + "시간": "16:00:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2220, + "역명": "대티", + "시간": "16:57:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1247, + "역명": "대티", + "시간": "18:56:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2272, + "역명": "대티", + "시간": "19:56:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1291, + "역명": "대티", + "시간": "21:54:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 22, + "열번": 2312, + "역명": "대티", + "시간": "22:56:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 23, + "열번": 1013, + "역명": "대티", + "시간": "07:07:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2042, + "역명": "대티", + "시간": "08:08:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1073, + "역명": "대티", + "시간": "10:06:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2100, + "역명": "대티", + "시간": "11:02:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1131, + "역명": "대티", + "시간": "13:00:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2158, + "역명": "대티", + "시간": "13:56:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1189, + "역명": "대티", + "시간": "15:54:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2218, + "역명": "대티", + "시간": "16:52:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1245, + "역명": "대티", + "시간": "18:49:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2270, + "역명": "대티", + "시간": "19:48:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "대티", + "시간": "08:26:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1079, + "역명": "대티", + "시간": "10:24:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2106, + "역명": "대티", + "시간": "11:20:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1137, + "역명": "대티", + "시간": "13:18:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2164, + "역명": "대티", + "시간": "14:14:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1195, + "역명": "대티", + "시간": "16:12:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2224, + "역명": "대티", + "시간": "17:08:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1251, + "역명": "대티", + "시간": "19:10:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "대티", + "시간": "07:35:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2052, + "역명": "대티", + "시간": "08:38:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1083, + "역명": "대티", + "시간": "10:36:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2110, + "역명": "대티", + "시간": "11:32:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1141, + "역명": "대티", + "시간": "13:30:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2168, + "역명": "대티", + "시간": "14:26:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1199, + "역명": "대티", + "시간": "16:24:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2228, + "역명": "대티", + "시간": "17:19:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1253, + "역명": "대티", + "시간": "19:17:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2276, + "역명": "대티", + "시간": "20:12:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1295, + "역명": "대티", + "시간": "22:14:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2314, + "역명": "대티", + "시간": "23:08:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 26, + "열번": 1029, + "역명": "대티", + "시간": "08:08:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1025, + "역명": "대티", + "시간": "07:58:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2058, + "역명": "대티", + "시간": "08:56:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1089, + "역명": "대티", + "시간": "10:54:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2116, + "역명": "대티", + "시간": "11:50:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1147, + "역명": "대티", + "시간": "13:48:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2174, + "역명": "대티", + "시간": "14:44:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1205, + "역명": "대티", + "시간": "16:42:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 27, + "열번": 2234, + "역명": "대티", + "시간": "17:37:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 28, + "열번": 1041, + "역명": "대티", + "시간": "08:38:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1031, + "역명": "대티", + "시간": "08:13:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2062, + "역명": "대티", + "시간": "09:08:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1093, + "역명": "대티", + "시간": "11:06:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2120, + "역명": "대티", + "시간": "12:02:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1151, + "역명": "대티", + "시간": "14:00:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2178, + "역명": "대티", + "시간": "14:56:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1209, + "역명": "대티", + "시간": "16:54:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2238, + "역명": "대티", + "시간": "17:49:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1261, + "역명": "대티", + "시간": "19:49:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2284, + "역명": "대티", + "시간": "20:44:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 29, + "열번": 1301, + "역명": "대티", + "시간": "22:44:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1049, + "역명": "대티", + "시간": "08:58:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2078, + "역명": "대티", + "시간": "09:56:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1109, + "역명": "대티", + "시간": "11:54:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2136, + "역명": "대티", + "시간": "12:50:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1167, + "역명": "대티", + "시간": "14:48:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2194, + "역명": "대티", + "시간": "15:44:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1225, + "역명": "대티", + "시간": "17:42:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1035, + "역명": "대티", + "시간": "08:23:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2066, + "역명": "대티", + "시간": "09:20:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1097, + "역명": "대티", + "시간": "11:18:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2124, + "역명": "대티", + "시간": "12:14:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1155, + "역명": "대티", + "시간": "14:12:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2182, + "역명": "대티", + "시간": "15:08:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1213, + "역명": "대티", + "시간": "17:06:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2242, + "역명": "대티", + "시간": "18:02:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1265, + "역명": "대티", + "시간": "20:05:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2288, + "역명": "대티", + "시간": "21:00:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1305, + "역명": "대티", + "시간": "23:04:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 32, + "열번": 2210, + "역명": "대티", + "시간": "16:30:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 32, + "열번": 1239, + "역명": "대티", + "시간": "18:28:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 32, + "열번": 2264, + "역명": "대티", + "시간": "19:24:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 32, + "열번": 1285, + "역명": "대티", + "시간": "21:25:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 32, + "열번": 2306, + "역명": "대티", + "시간": "22:22:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 32, + "열번": 7931, + "역명": "대티", + "시간": "00:27:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1037, + "역명": "대티", + "시간": "08:28:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2068, + "역명": "대티", + "시간": "09:26:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1099, + "역명": "대티", + "시간": "11:24:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2126, + "역명": "대티", + "시간": "12:20:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1157, + "역명": "대티", + "시간": "14:18:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2184, + "역명": "대티", + "시간": "15:14:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1215, + "역명": "대티", + "시간": "17:12:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2244, + "역명": "대티", + "시간": "18:09:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1267, + "역명": "대티", + "시간": "20:13:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 33, + "열번": 2290, + "역명": "대티", + "시간": "21:08:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1045, + "역명": "대티", + "시간": "08:48:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2074, + "역명": "대티", + "시간": "09:44:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1105, + "역명": "대티", + "시간": "11:42:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2132, + "역명": "대티", + "시간": "12:38:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1163, + "역명": "대티", + "시간": "14:36:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2190, + "역명": "대티", + "시간": "15:32:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1221, + "역명": "대티", + "시간": "17:30:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2250, + "역명": "대티", + "시간": "18:30:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1271, + "역명": "대티", + "시간": "20:29:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2294, + "역명": "대티", + "시간": "21:24:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1309, + "역명": "대티", + "시간": "23:25:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1055, + "역명": "대티", + "시간": "09:13:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2084, + "역명": "대티", + "시간": "10:14:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1115, + "역명": "대티", + "시간": "12:12:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2142, + "역명": "대티", + "시간": "13:08:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1173, + "역명": "대티", + "시간": "15:06:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2200, + "역명": "대티", + "시간": "16:02:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1231, + "역명": "대티", + "시간": "18:00:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2258, + "역명": "대티", + "시간": "19:00:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1279, + "역명": "대티", + "시간": "21:01:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2302, + "역명": "대티", + "시간": "22:02:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1315, + "역명": "대티", + "시간": "00:00:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "괴정", + "시간": "05:26:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "괴정", + "시간": "07:28:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2050, + "역명": "괴정", + "시간": "08:30:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1081, + "역명": "괴정", + "시간": "10:31:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2108, + "역명": "괴정", + "시간": "11:24:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1139, + "역명": "괴정", + "시간": "13:25:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2166, + "역명": "괴정", + "시간": "14:18:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1197, + "역명": "괴정", + "시간": "16:19:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2226, + "역명": "괴정", + "시간": "17:12:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "괴정", + "시간": "05:10:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "괴정", + "시간": "07:19:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "괴정", + "시간": "08:18:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1077, + "역명": "괴정", + "시간": "10:19:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2104, + "역명": "괴정", + "시간": "11:12:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1135, + "역명": "괴정", + "시간": "13:13:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2162, + "역명": "괴정", + "시간": "14:06:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1193, + "역명": "괴정", + "시간": "16:07:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2222, + "역명": "괴정", + "시간": "17:01:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1249, + "역명": "괴정", + "시간": "19:04:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2274, + "역명": "괴정", + "시간": "20:02:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1293, + "역명": "괴정", + "시간": "22:05:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "괴정", + "시간": "05:39:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "괴정", + "시간": "07:46:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2054, + "역명": "괴정", + "시간": "08:42:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1085, + "역명": "괴정", + "시간": "10:43:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2112, + "역명": "괴정", + "시간": "11:36:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1143, + "역명": "괴정", + "시간": "13:37:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2170, + "역명": "괴정", + "시간": "14:30:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1201, + "역명": "괴정", + "시간": "16:31:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2230, + "역명": "괴정", + "시간": "17:23:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1255, + "역명": "괴정", + "시간": "19:26:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2278, + "역명": "괴정", + "시간": "20:18:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "괴정", + "시간": "05:52:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1023, + "역명": "괴정", + "시간": "07:53:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2056, + "역명": "괴정", + "시간": "08:48:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1087, + "역명": "괴정", + "시간": "10:49:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2114, + "역명": "괴정", + "시간": "11:42:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1145, + "역명": "괴정", + "시간": "13:43:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2172, + "역명": "괴정", + "시간": "14:36:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1203, + "역명": "괴정", + "시간": "16:37:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2232, + "역명": "괴정", + "시간": "17:29:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1257, + "역명": "괴정", + "시간": "19:34:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2280, + "역명": "괴정", + "시간": "20:26:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1297, + "역명": "괴정", + "시간": "22:25:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2316, + "역명": "괴정", + "시간": "23:17:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2012, + "역명": "괴정", + "시간": "06:28:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1039, + "역명": "괴정", + "시간": "08:34:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2070, + "역명": "괴정", + "시간": "09:30:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1101, + "역명": "괴정", + "시간": "11:31:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2128, + "역명": "괴정", + "시간": "12:24:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1159, + "역명": "괴정", + "시간": "14:25:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2186, + "역명": "괴정", + "시간": "15:18:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1217, + "역명": "괴정", + "시간": "17:19:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2246, + "역명": "괴정", + "시간": "18:14:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2008, + "역명": "괴정", + "시간": "06:04:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1027, + "역명": "괴정", + "시간": "08:04:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2060, + "역명": "괴정", + "시간": "09:00:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1091, + "역명": "괴정", + "시간": "11:01:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2118, + "역명": "괴정", + "시간": "11:54:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1149, + "역명": "괴정", + "시간": "13:55:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2176, + "역명": "괴정", + "시간": "14:48:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1207, + "역명": "괴정", + "시간": "16:49:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2236, + "역명": "괴정", + "시간": "17:41:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1259, + "역명": "괴정", + "시간": "19:42:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2282, + "역명": "괴정", + "시간": "20:34:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1299, + "역명": "괴정", + "시간": "22:35:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 6, + "열번": 2318, + "역명": "괴정", + "시간": "23:32:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1001, + "역명": "괴정", + "시간": "06:06:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2018, + "역명": "괴정", + "시간": "07:00:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1051, + "역명": "괴정", + "시간": "09:04:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2080, + "역명": "괴정", + "시간": "10:00:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1111, + "역명": "괴정", + "시간": "12:01:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2138, + "역명": "괴정", + "시간": "12:54:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1169, + "역명": "괴정", + "시간": "14:55:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2196, + "역명": "괴정", + "시간": "15:48:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1227, + "역명": "괴정", + "시간": "17:49:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2254, + "역명": "괴정", + "시간": "18:42:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1275, + "역명": "괴정", + "시간": "20:46:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 7, + "열번": 2298, + "역명": "괴정", + "시간": "21:40:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2010, + "역명": "괴정", + "시간": "06:16:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1033, + "역명": "괴정", + "시간": "08:19:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2064, + "역명": "괴정", + "시간": "09:12:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1095, + "역명": "괴정", + "시간": "11:13:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2122, + "역명": "괴정", + "시간": "12:06:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1153, + "역명": "괴정", + "시간": "14:07:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2180, + "역명": "괴정", + "시간": "15:00:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1211, + "역명": "괴정", + "시간": "17:01:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2240, + "역명": "괴정", + "시간": "17:53:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1263, + "역명": "괴정", + "시간": "19:58:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2286, + "역명": "괴정", + "시간": "20:50:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1303, + "역명": "괴정", + "시간": "22:55:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 9, + "열번": 1003, + "역명": "괴정", + "시간": "06:14:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2020, + "역명": "괴정", + "시간": "07:08:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1053, + "역명": "괴정", + "시간": "09:09:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2082, + "역명": "괴정", + "시간": "10:06:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1113, + "역명": "괴정", + "시간": "12:07:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2140, + "역명": "괴정", + "시간": "13:00:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1171, + "역명": "괴정", + "시간": "15:01:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2198, + "역명": "괴정", + "시간": "15:54:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1229, + "역명": "괴정", + "시간": "17:55:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2256, + "역명": "괴정", + "시간": "18:50:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1277, + "역명": "괴정", + "시간": "20:54:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2300, + "역명": "괴정", + "시간": "21:50:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1313, + "역명": "괴정", + "시간": "23:49:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2014, + "역명": "괴정", + "시간": "06:40:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1043, + "역명": "괴정", + "시간": "08:44:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2072, + "역명": "괴정", + "시간": "09:36:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1103, + "역명": "괴정", + "시간": "11:37:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2130, + "역명": "괴정", + "시간": "12:30:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1161, + "역명": "괴정", + "시간": "14:31:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2188, + "역명": "괴정", + "시간": "15:24:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1219, + "역명": "괴정", + "시간": "17:25:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2248, + "역명": "괴정", + "시간": "18:21:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1269, + "역명": "괴정", + "시간": "20:22:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2292, + "역명": "괴정", + "시간": "21:14:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1307, + "역명": "괴정", + "시간": "23:15:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 11, + "열번": 2022, + "역명": "괴정", + "시간": "07:14:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2016, + "역명": "괴정", + "시간": "06:51:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1047, + "역명": "괴정", + "시간": "08:54:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2076, + "역명": "괴정", + "시간": "09:48:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1107, + "역명": "괴정", + "시간": "11:49:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2134, + "역명": "괴정", + "시간": "12:42:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1165, + "역명": "괴정", + "시간": "14:43:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "괴정", + "시간": "15:36:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1223, + "역명": "괴정", + "시간": "17:37:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2252, + "역명": "괴정", + "시간": "18:35:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1273, + "역명": "괴정", + "시간": "20:38:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2296, + "역명": "괴정", + "시간": "21:30:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1311, + "역명": "괴정", + "시간": "23:37:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1005, + "역명": "괴정", + "시간": "06:25:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2024, + "역명": "괴정", + "시간": "07:20:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1057, + "역명": "괴정", + "시간": "09:20:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2086, + "역명": "괴정", + "시간": "10:18:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1117, + "역명": "괴정", + "시간": "12:19:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2144, + "역명": "괴정", + "시간": "13:12:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1175, + "역명": "괴정", + "시간": "15:13:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2202, + "역명": "괴정", + "시간": "16:06:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1233, + "역명": "괴정", + "시간": "18:08:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2260, + "역명": "괴정", + "시간": "19:06:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1281, + "역명": "괴정", + "시간": "21:10:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2304, + "역명": "괴정", + "시간": "22:10:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 13, + "열번": 1317, + "역명": "괴정", + "시간": "00:13:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2026, + "역명": "괴정", + "시간": "07:25:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 14, + "열번": 1059, + "역명": "괴정", + "시간": "09:25:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1009, + "역명": "괴정", + "시간": "06:47:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2032, + "역명": "괴정", + "시간": "07:40:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1065, + "역명": "괴정", + "시간": "09:43:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2092, + "역명": "괴정", + "시간": "10:36:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1123, + "역명": "괴정", + "시간": "12:37:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2150, + "역명": "괴정", + "시간": "13:30:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1181, + "역명": "괴정", + "시간": "15:31:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2208, + "역명": "괴정", + "시간": "16:23:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 16, + "열번": 1007, + "역명": "괴정", + "시간": "06:36:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2028, + "역명": "괴정", + "시간": "07:30:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1061, + "역명": "괴정", + "시간": "09:31:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2088, + "역명": "괴정", + "시간": "10:24:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1119, + "역명": "괴정", + "시간": "12:25:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2146, + "역명": "괴정", + "시간": "13:18:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1177, + "역명": "괴정", + "시간": "15:19:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2204, + "역명": "괴정", + "시간": "16:12:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1235, + "역명": "괴정", + "시간": "18:15:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 17, + "열번": 1011, + "역명": "괴정", + "시간": "06:58:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2036, + "역명": "괴정", + "시간": "07:50:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1069, + "역명": "괴정", + "시간": "09:55:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2096, + "역명": "괴정", + "시간": "10:48:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1127, + "역명": "괴정", + "시간": "12:49:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2154, + "역명": "괴정", + "시간": "13:42:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1185, + "역명": "괴정", + "시간": "15:43:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2214, + "역명": "괴정", + "시간": "16:39:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1243, + "역명": "괴정", + "시간": "18:43:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2268, + "역명": "괴정", + "시간": "19:38:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1289, + "역명": "괴정", + "시간": "21:45:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2310, + "역명": "괴정", + "시간": "22:42:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2030, + "역명": "괴정", + "시간": "07:35:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1063, + "역명": "괴정", + "시간": "09:37:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2090, + "역명": "괴정", + "시간": "10:30:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1121, + "역명": "괴정", + "시간": "12:31:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2148, + "역명": "괴정", + "시간": "13:24:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1179, + "역명": "괴정", + "시간": "15:25:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2206, + "역명": "괴정", + "시간": "16:17:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1237, + "역명": "괴정", + "시간": "18:22:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2262, + "역명": "괴정", + "시간": "19:14:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1283, + "역명": "괴정", + "시간": "21:18:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2038, + "역명": "괴정", + "시간": "07:55:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2034, + "역명": "괴정", + "시간": "07:45:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1067, + "역명": "괴정", + "시간": "09:49:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2094, + "역명": "괴정", + "시간": "10:42:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1125, + "역명": "괴정", + "시간": "12:43:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2152, + "역명": "괴정", + "시간": "13:36:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1183, + "역명": "괴정", + "시간": "15:37:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2212, + "역명": "괴정", + "시간": "16:34:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1241, + "역명": "괴정", + "시간": "18:36:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2266, + "역명": "괴정", + "시간": "19:30:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1287, + "역명": "괴정", + "시간": "21:35:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 20, + "열번": 2308, + "역명": "괴정", + "시간": "22:30:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2040, + "역명": "괴정", + "시간": "08:00:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1071, + "역명": "괴정", + "시간": "10:01:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2098, + "역명": "괴정", + "시간": "10:54:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1129, + "역명": "괴정", + "시간": "12:55:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2156, + "역명": "괴정", + "시간": "13:48:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1187, + "역명": "괴정", + "시간": "15:49:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2216, + "역명": "괴정", + "시간": "16:45:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2044, + "역명": "괴정", + "시간": "08:12:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1075, + "역명": "괴정", + "시간": "10:13:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2102, + "역명": "괴정", + "시간": "11:06:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1133, + "역명": "괴정", + "시간": "13:07:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2160, + "역명": "괴정", + "시간": "14:00:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1191, + "역명": "괴정", + "시간": "16:01:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2220, + "역명": "괴정", + "시간": "16:56:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1247, + "역명": "괴정", + "시간": "18:57:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2272, + "역명": "괴정", + "시간": "19:54:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1291, + "역명": "괴정", + "시간": "21:55:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 22, + "열번": 2312, + "역명": "괴정", + "시간": "22:54:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 23, + "열번": 1013, + "역명": "괴정", + "시간": "07:09:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2042, + "역명": "괴정", + "시간": "08:06:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1073, + "역명": "괴정", + "시간": "10:07:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2100, + "역명": "괴정", + "시간": "11:00:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1131, + "역명": "괴정", + "시간": "13:01:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2158, + "역명": "괴정", + "시간": "13:54:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1189, + "역명": "괴정", + "시간": "15:55:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2218, + "역명": "괴정", + "시간": "16:50:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1245, + "역명": "괴정", + "시간": "18:50:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2270, + "역명": "괴정", + "시간": "19:46:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "괴정", + "시간": "08:24:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1079, + "역명": "괴정", + "시간": "10:25:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2106, + "역명": "괴정", + "시간": "11:18:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1137, + "역명": "괴정", + "시간": "13:19:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2164, + "역명": "괴정", + "시간": "14:12:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1195, + "역명": "괴정", + "시간": "16:13:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2224, + "역명": "괴정", + "시간": "17:07:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1251, + "역명": "괴정", + "시간": "19:11:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "괴정", + "시간": "07:37:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2052, + "역명": "괴정", + "시간": "08:36:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1083, + "역명": "괴정", + "시간": "10:37:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2110, + "역명": "괴정", + "시간": "11:30:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1141, + "역명": "괴정", + "시간": "13:31:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2168, + "역명": "괴정", + "시간": "14:24:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1199, + "역명": "괴정", + "시간": "16:25:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2228, + "역명": "괴정", + "시간": "17:18:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1253, + "역명": "괴정", + "시간": "19:18:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2276, + "역명": "괴정", + "시간": "20:10:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1295, + "역명": "괴정", + "시간": "22:15:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2314, + "역명": "괴정", + "시간": "23:06:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 26, + "열번": 1029, + "역명": "괴정", + "시간": "08:09:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1025, + "역명": "괴정", + "시간": "07:59:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2058, + "역명": "괴정", + "시간": "08:54:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1089, + "역명": "괴정", + "시간": "10:55:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2116, + "역명": "괴정", + "시간": "11:48:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1147, + "역명": "괴정", + "시간": "13:49:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2174, + "역명": "괴정", + "시간": "14:42:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1205, + "역명": "괴정", + "시간": "16:43:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 27, + "열번": 2234, + "역명": "괴정", + "시간": "17:35:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 28, + "열번": 1041, + "역명": "괴정", + "시간": "08:39:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1031, + "역명": "괴정", + "시간": "08:14:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2062, + "역명": "괴정", + "시간": "09:06:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1093, + "역명": "괴정", + "시간": "11:07:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2120, + "역명": "괴정", + "시간": "12:00:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1151, + "역명": "괴정", + "시간": "14:01:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2178, + "역명": "괴정", + "시간": "14:54:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1209, + "역명": "괴정", + "시간": "16:55:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2238, + "역명": "괴정", + "시간": "17:47:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1261, + "역명": "괴정", + "시간": "19:50:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2284, + "역명": "괴정", + "시간": "20:42:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 29, + "열번": 1301, + "역명": "괴정", + "시간": "22:45:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1049, + "역명": "괴정", + "시간": "08:59:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2078, + "역명": "괴정", + "시간": "09:54:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1109, + "역명": "괴정", + "시간": "11:55:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2136, + "역명": "괴정", + "시간": "12:48:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1167, + "역명": "괴정", + "시간": "14:49:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2194, + "역명": "괴정", + "시간": "15:42:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1225, + "역명": "괴정", + "시간": "17:43:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1035, + "역명": "괴정", + "시간": "08:24:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2066, + "역명": "괴정", + "시간": "09:18:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1097, + "역명": "괴정", + "시간": "11:19:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2124, + "역명": "괴정", + "시간": "12:12:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1155, + "역명": "괴정", + "시간": "14:13:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2182, + "역명": "괴정", + "시간": "15:06:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1213, + "역명": "괴정", + "시간": "17:07:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2242, + "역명": "괴정", + "시간": "18:00:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1265, + "역명": "괴정", + "시간": "20:06:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2288, + "역명": "괴정", + "시간": "20:58:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1305, + "역명": "괴정", + "시간": "23:05:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 32, + "열번": 2210, + "역명": "괴정", + "시간": "16:28:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 32, + "열번": 1239, + "역명": "괴정", + "시간": "18:29:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 32, + "열번": 2264, + "역명": "괴정", + "시간": "19:22:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 32, + "열번": 1285, + "역명": "괴정", + "시간": "21:26:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 32, + "열번": 2306, + "역명": "괴정", + "시간": "22:20:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 32, + "열번": 7931, + "역명": "괴정", + "시간": "00:29:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1037, + "역명": "괴정", + "시간": "08:29:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2068, + "역명": "괴정", + "시간": "09:24:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1099, + "역명": "괴정", + "시간": "11:25:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2126, + "역명": "괴정", + "시간": "12:18:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1157, + "역명": "괴정", + "시간": "14:19:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2184, + "역명": "괴정", + "시간": "15:12:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1215, + "역명": "괴정", + "시간": "17:13:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2244, + "역명": "괴정", + "시간": "18:07:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1267, + "역명": "괴정", + "시간": "20:14:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 33, + "열번": 2290, + "역명": "괴정", + "시간": "21:06:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1045, + "역명": "괴정", + "시간": "08:49:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2074, + "역명": "괴정", + "시간": "09:42:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1105, + "역명": "괴정", + "시간": "11:43:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2132, + "역명": "괴정", + "시간": "12:36:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1163, + "역명": "괴정", + "시간": "14:37:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2190, + "역명": "괴정", + "시간": "15:30:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1221, + "역명": "괴정", + "시간": "17:31:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2250, + "역명": "괴정", + "시간": "18:28:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1271, + "역명": "괴정", + "시간": "20:30:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2294, + "역명": "괴정", + "시간": "21:22:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1309, + "역명": "괴정", + "시간": "23:26:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1055, + "역명": "괴정", + "시간": "09:14:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2084, + "역명": "괴정", + "시간": "10:12:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1115, + "역명": "괴정", + "시간": "12:13:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2142, + "역명": "괴정", + "시간": "13:06:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1173, + "역명": "괴정", + "시간": "15:07:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2200, + "역명": "괴정", + "시간": "16:00:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1231, + "역명": "괴정", + "시간": "18:01:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2258, + "역명": "괴정", + "시간": "18:58:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1279, + "역명": "괴정", + "시간": "21:02:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2302, + "역명": "괴정", + "시간": "22:00:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1315, + "역명": "괴정", + "시간": "00:01:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "사하", + "시간": "05:24:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "사하", + "시간": "07:30:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2050, + "역명": "사하", + "시간": "08:29:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1081, + "역명": "사하", + "시간": "10:33:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2108, + "역명": "사하", + "시간": "11:23:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1139, + "역명": "사하", + "시간": "13:27:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2166, + "역명": "사하", + "시간": "14:17:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1197, + "역명": "사하", + "시간": "16:21:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2226, + "역명": "사하", + "시간": "17:11:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "사하", + "시간": "05:08:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "사하", + "시간": "07:21:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "사하", + "시간": "08:17:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1077, + "역명": "사하", + "시간": "10:21:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2104, + "역명": "사하", + "시간": "11:11:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1135, + "역명": "사하", + "시간": "13:15:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2162, + "역명": "사하", + "시간": "14:05:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1193, + "역명": "사하", + "시간": "16:09:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2222, + "역명": "사하", + "시간": "17:00:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1249, + "역명": "사하", + "시간": "19:06:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2274, + "역명": "사하", + "시간": "20:01:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1293, + "역명": "사하", + "시간": "22:07:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "사하", + "시간": "05:38:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "사하", + "시간": "07:48:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2054, + "역명": "사하", + "시간": "08:41:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1085, + "역명": "사하", + "시간": "10:45:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2112, + "역명": "사하", + "시간": "11:35:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1143, + "역명": "사하", + "시간": "13:39:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2170, + "역명": "사하", + "시간": "14:29:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1201, + "역명": "사하", + "시간": "16:33:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2230, + "역명": "사하", + "시간": "17:22:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1255, + "역명": "사하", + "시간": "19:28:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2278, + "역명": "사하", + "시간": "20:17:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "사하", + "시간": "05:50:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1023, + "역명": "사하", + "시간": "07:55:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2056, + "역명": "사하", + "시간": "08:47:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1087, + "역명": "사하", + "시간": "10:51:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2114, + "역명": "사하", + "시간": "11:41:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1145, + "역명": "사하", + "시간": "13:45:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2172, + "역명": "사하", + "시간": "14:35:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1203, + "역명": "사하", + "시간": "16:39:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2232, + "역명": "사하", + "시간": "17:28:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1257, + "역명": "사하", + "시간": "19:36:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2280, + "역명": "사하", + "시간": "20:25:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1297, + "역명": "사하", + "시간": "22:27:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2316, + "역명": "사하", + "시간": "23:15:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2012, + "역명": "사하", + "시간": "06:26:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1039, + "역명": "사하", + "시간": "08:36:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2070, + "역명": "사하", + "시간": "09:29:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1101, + "역명": "사하", + "시간": "11:33:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2128, + "역명": "사하", + "시간": "12:23:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1159, + "역명": "사하", + "시간": "14:27:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2186, + "역명": "사하", + "시간": "15:17:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1217, + "역명": "사하", + "시간": "17:21:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2246, + "역명": "사하", + "시간": "18:13:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2008, + "역명": "사하", + "시간": "06:02:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1027, + "역명": "사하", + "시간": "08:06:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2060, + "역명": "사하", + "시간": "08:59:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1091, + "역명": "사하", + "시간": "11:03:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2118, + "역명": "사하", + "시간": "11:53:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1149, + "역명": "사하", + "시간": "13:57:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2176, + "역명": "사하", + "시간": "14:47:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1207, + "역명": "사하", + "시간": "16:51:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2236, + "역명": "사하", + "시간": "17:40:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1259, + "역명": "사하", + "시간": "19:44:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2282, + "역명": "사하", + "시간": "20:33:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1299, + "역명": "사하", + "시간": "22:37:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 6, + "열번": 2318, + "역명": "사하", + "시간": "23:30:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1001, + "역명": "사하", + "시간": "06:08:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2018, + "역명": "사하", + "시간": "06:58:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1051, + "역명": "사하", + "시간": "09:06:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2080, + "역명": "사하", + "시간": "09:59:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1111, + "역명": "사하", + "시간": "12:03:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2138, + "역명": "사하", + "시간": "12:53:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1169, + "역명": "사하", + "시간": "14:57:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2196, + "역명": "사하", + "시간": "15:47:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1227, + "역명": "사하", + "시간": "17:51:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2254, + "역명": "사하", + "시간": "18:41:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1275, + "역명": "사하", + "시간": "20:48:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 7, + "열번": 2298, + "역명": "사하", + "시간": "21:39:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2010, + "역명": "사하", + "시간": "06:14:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1033, + "역명": "사하", + "시간": "08:21:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2064, + "역명": "사하", + "시간": "09:11:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1095, + "역명": "사하", + "시간": "11:15:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2122, + "역명": "사하", + "시간": "12:05:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1153, + "역명": "사하", + "시간": "14:09:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2180, + "역명": "사하", + "시간": "14:59:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1211, + "역명": "사하", + "시간": "17:03:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2240, + "역명": "사하", + "시간": "17:52:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1263, + "역명": "사하", + "시간": "20:00:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2286, + "역명": "사하", + "시간": "20:49:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1303, + "역명": "사하", + "시간": "22:57:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 9, + "열번": 1003, + "역명": "사하", + "시간": "06:16:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2020, + "역명": "사하", + "시간": "07:07:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1053, + "역명": "사하", + "시간": "09:11:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2082, + "역명": "사하", + "시간": "10:05:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1113, + "역명": "사하", + "시간": "12:09:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2140, + "역명": "사하", + "시간": "12:59:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1171, + "역명": "사하", + "시간": "15:03:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2198, + "역명": "사하", + "시간": "15:53:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1229, + "역명": "사하", + "시간": "17:57:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2256, + "역명": "사하", + "시간": "18:49:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1277, + "역명": "사하", + "시간": "20:56:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2300, + "역명": "사하", + "시간": "21:49:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1313, + "역명": "사하", + "시간": "23:51:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2014, + "역명": "사하", + "시간": "06:38:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1043, + "역명": "사하", + "시간": "08:46:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2072, + "역명": "사하", + "시간": "09:35:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1103, + "역명": "사하", + "시간": "11:39:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2130, + "역명": "사하", + "시간": "12:29:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1161, + "역명": "사하", + "시간": "14:33:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2188, + "역명": "사하", + "시간": "15:23:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1219, + "역명": "사하", + "시간": "17:27:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2248, + "역명": "사하", + "시간": "18:20:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1269, + "역명": "사하", + "시간": "20:24:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2292, + "역명": "사하", + "시간": "21:13:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1307, + "역명": "사하", + "시간": "23:17:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 11, + "열번": 2022, + "역명": "사하", + "시간": "07:13:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2016, + "역명": "사하", + "시간": "06:49:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1047, + "역명": "사하", + "시간": "08:56:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2076, + "역명": "사하", + "시간": "09:47:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1107, + "역명": "사하", + "시간": "11:51:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2134, + "역명": "사하", + "시간": "12:41:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1165, + "역명": "사하", + "시간": "14:45:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "사하", + "시간": "15:35:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1223, + "역명": "사하", + "시간": "17:39:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2252, + "역명": "사하", + "시간": "18:34:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1273, + "역명": "사하", + "시간": "20:40:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2296, + "역명": "사하", + "시간": "21:29:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1311, + "역명": "사하", + "시간": "23:39:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1005, + "역명": "사하", + "시간": "06:27:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2024, + "역명": "사하", + "시간": "07:19:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1057, + "역명": "사하", + "시간": "09:22:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2086, + "역명": "사하", + "시간": "10:17:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1117, + "역명": "사하", + "시간": "12:21:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2144, + "역명": "사하", + "시간": "13:11:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1175, + "역명": "사하", + "시간": "15:15:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2202, + "역명": "사하", + "시간": "16:05:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1233, + "역명": "사하", + "시간": "18:10:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2260, + "역명": "사하", + "시간": "19:05:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1281, + "역명": "사하", + "시간": "21:12:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2304, + "역명": "사하", + "시간": "22:09:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 13, + "열번": 1317, + "역명": "사하", + "시간": "00:15:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2026, + "역명": "사하", + "시간": "07:24:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 14, + "열번": 1059, + "역명": "사하", + "시간": "09:27:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1009, + "역명": "사하", + "시간": "06:49:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2032, + "역명": "사하", + "시간": "07:39:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1065, + "역명": "사하", + "시간": "09:45:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2092, + "역명": "사하", + "시간": "10:35:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1123, + "역명": "사하", + "시간": "12:39:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2150, + "역명": "사하", + "시간": "13:29:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1181, + "역명": "사하", + "시간": "15:33:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2208, + "역명": "사하", + "시간": "16:21:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 16, + "열번": 1007, + "역명": "사하", + "시간": "06:38:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2028, + "역명": "사하", + "시간": "07:29:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1061, + "역명": "사하", + "시간": "09:33:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2088, + "역명": "사하", + "시간": "10:23:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1119, + "역명": "사하", + "시간": "12:27:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2146, + "역명": "사하", + "시간": "13:17:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1177, + "역명": "사하", + "시간": "15:21:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2204, + "역명": "사하", + "시간": "16:10:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1235, + "역명": "사하", + "시간": "18:17:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 17, + "열번": 1011, + "역명": "사하", + "시간": "07:00:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2036, + "역명": "사하", + "시간": "07:49:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1069, + "역명": "사하", + "시간": "09:57:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2096, + "역명": "사하", + "시간": "10:47:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1127, + "역명": "사하", + "시간": "12:51:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2154, + "역명": "사하", + "시간": "13:41:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1185, + "역명": "사하", + "시간": "15:45:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2214, + "역명": "사하", + "시간": "16:38:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1243, + "역명": "사하", + "시간": "18:45:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2268, + "역명": "사하", + "시간": "19:37:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1289, + "역명": "사하", + "시간": "21:47:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2310, + "역명": "사하", + "시간": "22:41:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2030, + "역명": "사하", + "시간": "07:34:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1063, + "역명": "사하", + "시간": "09:39:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2090, + "역명": "사하", + "시간": "10:29:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1121, + "역명": "사하", + "시간": "12:33:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2148, + "역명": "사하", + "시간": "13:23:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1179, + "역명": "사하", + "시간": "15:27:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2206, + "역명": "사하", + "시간": "16:16:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1237, + "역명": "사하", + "시간": "18:24:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2262, + "역명": "사하", + "시간": "19:13:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1283, + "역명": "사하", + "시간": "21:20:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2038, + "역명": "사하", + "시간": "07:54:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2034, + "역명": "사하", + "시간": "07:44:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1067, + "역명": "사하", + "시간": "09:51:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2094, + "역명": "사하", + "시간": "10:41:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1125, + "역명": "사하", + "시간": "12:45:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2152, + "역명": "사하", + "시간": "13:35:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1183, + "역명": "사하", + "시간": "15:39:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2212, + "역명": "사하", + "시간": "16:32:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1241, + "역명": "사하", + "시간": "18:38:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2266, + "역명": "사하", + "시간": "19:29:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1287, + "역명": "사하", + "시간": "21:37:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 20, + "열번": 2308, + "역명": "사하", + "시간": "22:29:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2040, + "역명": "사하", + "시간": "07:59:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1071, + "역명": "사하", + "시간": "10:03:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2098, + "역명": "사하", + "시간": "10:53:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1129, + "역명": "사하", + "시간": "12:57:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2156, + "역명": "사하", + "시간": "13:47:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1187, + "역명": "사하", + "시간": "15:51:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2216, + "역명": "사하", + "시간": "16:43:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2044, + "역명": "사하", + "시간": "08:11:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1075, + "역명": "사하", + "시간": "10:15:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2102, + "역명": "사하", + "시간": "11:05:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1133, + "역명": "사하", + "시간": "13:09:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2160, + "역명": "사하", + "시간": "13:59:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1191, + "역명": "사하", + "시간": "16:03:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2220, + "역명": "사하", + "시간": "16:54:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1247, + "역명": "사하", + "시간": "18:59:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2272, + "역명": "사하", + "시간": "19:53:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1291, + "역명": "사하", + "시간": "21:57:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 22, + "열번": 2312, + "역명": "사하", + "시간": "22:53:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 23, + "열번": 1013, + "역명": "사하", + "시간": "07:11:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2042, + "역명": "사하", + "시간": "08:05:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1073, + "역명": "사하", + "시간": "10:09:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2100, + "역명": "사하", + "시간": "10:59:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1131, + "역명": "사하", + "시간": "13:03:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2158, + "역명": "사하", + "시간": "13:53:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1189, + "역명": "사하", + "시간": "15:57:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2218, + "역명": "사하", + "시간": "16:49:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1245, + "역명": "사하", + "시간": "18:52:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2270, + "역명": "사하", + "시간": "19:45:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "사하", + "시간": "08:23:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1079, + "역명": "사하", + "시간": "10:27:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2106, + "역명": "사하", + "시간": "11:17:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1137, + "역명": "사하", + "시간": "13:21:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2164, + "역명": "사하", + "시간": "14:11:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1195, + "역명": "사하", + "시간": "16:15:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2224, + "역명": "사하", + "시간": "17:05:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1251, + "역명": "사하", + "시간": "19:13:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "사하", + "시간": "07:39:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2052, + "역명": "사하", + "시간": "08:35:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1083, + "역명": "사하", + "시간": "10:39:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2110, + "역명": "사하", + "시간": "11:29:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1141, + "역명": "사하", + "시간": "13:33:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2168, + "역명": "사하", + "시간": "14:23:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1199, + "역명": "사하", + "시간": "16:27:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2228, + "역명": "사하", + "시간": "17:16:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1253, + "역명": "사하", + "시간": "19:20:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2276, + "역명": "사하", + "시간": "20:09:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1295, + "역명": "사하", + "시간": "22:17:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2314, + "역명": "사하", + "시간": "23:05:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 26, + "열번": 1029, + "역명": "사하", + "시간": "08:11:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1025, + "역명": "사하", + "시간": "08:01:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2058, + "역명": "사하", + "시간": "08:53:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1089, + "역명": "사하", + "시간": "10:57:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2116, + "역명": "사하", + "시간": "11:47:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1147, + "역명": "사하", + "시간": "13:51:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2174, + "역명": "사하", + "시간": "14:41:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1205, + "역명": "사하", + "시간": "16:45:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 27, + "열번": 2234, + "역명": "사하", + "시간": "17:34:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 28, + "열번": 1041, + "역명": "사하", + "시간": "08:41:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1031, + "역명": "사하", + "시간": "08:16:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2062, + "역명": "사하", + "시간": "09:05:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1093, + "역명": "사하", + "시간": "11:09:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2120, + "역명": "사하", + "시간": "11:59:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1151, + "역명": "사하", + "시간": "14:03:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2178, + "역명": "사하", + "시간": "14:53:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1209, + "역명": "사하", + "시간": "16:57:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2238, + "역명": "사하", + "시간": "17:46:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1261, + "역명": "사하", + "시간": "19:52:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2284, + "역명": "사하", + "시간": "20:41:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 29, + "열번": 1301, + "역명": "사하", + "시간": "22:47:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1049, + "역명": "사하", + "시간": "09:01:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2078, + "역명": "사하", + "시간": "09:53:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1109, + "역명": "사하", + "시간": "11:57:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2136, + "역명": "사하", + "시간": "12:47:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1167, + "역명": "사하", + "시간": "14:51:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2194, + "역명": "사하", + "시간": "15:41:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1225, + "역명": "사하", + "시간": "17:45:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1035, + "역명": "사하", + "시간": "08:26:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2066, + "역명": "사하", + "시간": "09:17:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1097, + "역명": "사하", + "시간": "11:21:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2124, + "역명": "사하", + "시간": "12:11:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1155, + "역명": "사하", + "시간": "14:15:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2182, + "역명": "사하", + "시간": "15:05:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1213, + "역명": "사하", + "시간": "17:09:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2242, + "역명": "사하", + "시간": "17:59:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1265, + "역명": "사하", + "시간": "20:08:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2288, + "역명": "사하", + "시간": "20:57:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1305, + "역명": "사하", + "시간": "23:07:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 32, + "열번": 2210, + "역명": "사하", + "시간": "16:27:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 32, + "열번": 1239, + "역명": "사하", + "시간": "18:31:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 32, + "열번": 2264, + "역명": "사하", + "시간": "19:21:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 32, + "열번": 1285, + "역명": "사하", + "시간": "21:28:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 32, + "열번": 2306, + "역명": "사하", + "시간": "22:19:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 32, + "열번": 7931, + "역명": "사하", + "시간": "00:31:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1037, + "역명": "사하", + "시간": "08:31:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2068, + "역명": "사하", + "시간": "09:23:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1099, + "역명": "사하", + "시간": "11:27:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2126, + "역명": "사하", + "시간": "12:17:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1157, + "역명": "사하", + "시간": "14:21:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2184, + "역명": "사하", + "시간": "15:11:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1215, + "역명": "사하", + "시간": "17:15:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2244, + "역명": "사하", + "시간": "18:06:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1267, + "역명": "사하", + "시간": "20:16:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 33, + "열번": 2290, + "역명": "사하", + "시간": "21:05:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1045, + "역명": "사하", + "시간": "08:51:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2074, + "역명": "사하", + "시간": "09:41:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1105, + "역명": "사하", + "시간": "11:45:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2132, + "역명": "사하", + "시간": "12:35:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1163, + "역명": "사하", + "시간": "14:39:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2190, + "역명": "사하", + "시간": "15:29:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1221, + "역명": "사하", + "시간": "17:33:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2250, + "역명": "사하", + "시간": "18:27:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1271, + "역명": "사하", + "시간": "20:32:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2294, + "역명": "사하", + "시간": "21:21:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1309, + "역명": "사하", + "시간": "23:28:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1055, + "역명": "사하", + "시간": "09:16:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2084, + "역명": "사하", + "시간": "10:11:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1115, + "역명": "사하", + "시간": "12:15:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2142, + "역명": "사하", + "시간": "13:05:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1173, + "역명": "사하", + "시간": "15:09:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2200, + "역명": "사하", + "시간": "15:59:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1231, + "역명": "사하", + "시간": "18:03:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2258, + "역명": "사하", + "시간": "18:57:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1279, + "역명": "사하", + "시간": "21:04:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2302, + "역명": "사하", + "시간": "21:59:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1315, + "역명": "사하", + "시간": "00:03:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "당리", + "시간": "05:22:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "당리", + "시간": "07:31:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2050, + "역명": "당리", + "시간": "08:27:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1081, + "역명": "당리", + "시간": "10:35:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2108, + "역명": "당리", + "시간": "11:21:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1139, + "역명": "당리", + "시간": "13:29:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2166, + "역명": "당리", + "시간": "14:15:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1197, + "역명": "당리", + "시간": "16:23:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2226, + "역명": "당리", + "시간": "17:09:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "당리", + "시간": "05:06:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "당리", + "시간": "07:22:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "당리", + "시간": "08:15:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1077, + "역명": "당리", + "시간": "10:23:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2104, + "역명": "당리", + "시간": "11:09:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1135, + "역명": "당리", + "시간": "13:17:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2162, + "역명": "당리", + "시간": "14:03:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1193, + "역명": "당리", + "시간": "16:11:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2222, + "역명": "당리", + "시간": "16:58:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1249, + "역명": "당리", + "시간": "19:08:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2274, + "역명": "당리", + "시간": "19:59:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1293, + "역명": "당리", + "시간": "22:09:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "당리", + "시간": "05:36:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "당리", + "시간": "07:49:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2054, + "역명": "당리", + "시간": "08:39:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1085, + "역명": "당리", + "시간": "10:47:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2112, + "역명": "당리", + "시간": "11:33:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1143, + "역명": "당리", + "시간": "13:41:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2170, + "역명": "당리", + "시간": "14:27:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1201, + "역명": "당리", + "시간": "16:35:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2230, + "역명": "당리", + "시간": "17:20:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1255, + "역명": "당리", + "시간": "19:30:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2278, + "역명": "당리", + "시간": "20:15:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "당리", + "시간": "05:48:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1023, + "역명": "당리", + "시간": "07:56:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2056, + "역명": "당리", + "시간": "08:45:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1087, + "역명": "당리", + "시간": "10:53:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2114, + "역명": "당리", + "시간": "11:39:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1145, + "역명": "당리", + "시간": "13:47:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2172, + "역명": "당리", + "시간": "14:33:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1203, + "역명": "당리", + "시간": "16:41:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2232, + "역명": "당리", + "시간": "17:26:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1257, + "역명": "당리", + "시간": "19:38:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2280, + "역명": "당리", + "시간": "20:23:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1297, + "역명": "당리", + "시간": "22:29:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2316, + "역명": "당리", + "시간": "23:13:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2012, + "역명": "당리", + "시간": "06:24:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1039, + "역명": "당리", + "시간": "08:38:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2070, + "역명": "당리", + "시간": "09:27:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1101, + "역명": "당리", + "시간": "11:35:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2128, + "역명": "당리", + "시간": "12:21:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1159, + "역명": "당리", + "시간": "14:29:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2186, + "역명": "당리", + "시간": "15:15:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1217, + "역명": "당리", + "시간": "17:23:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2246, + "역명": "당리", + "시간": "18:11:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2008, + "역명": "당리", + "시간": "06:00:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1027, + "역명": "당리", + "시간": "08:08:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2060, + "역명": "당리", + "시간": "08:57:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1091, + "역명": "당리", + "시간": "11:05:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2118, + "역명": "당리", + "시간": "11:51:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1149, + "역명": "당리", + "시간": "13:59:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2176, + "역명": "당리", + "시간": "14:45:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1207, + "역명": "당리", + "시간": "16:53:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2236, + "역명": "당리", + "시간": "17:38:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1259, + "역명": "당리", + "시간": "19:46:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2282, + "역명": "당리", + "시간": "20:31:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1299, + "역명": "당리", + "시간": "22:39:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 6, + "열번": 2318, + "역명": "당리", + "시간": "23:29:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1001, + "역명": "당리", + "시간": "06:09:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2018, + "역명": "당리", + "시간": "06:56:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1051, + "역명": "당리", + "시간": "09:08:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2080, + "역명": "당리", + "시간": "09:57:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1111, + "역명": "당리", + "시간": "12:05:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2138, + "역명": "당리", + "시간": "12:51:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1169, + "역명": "당리", + "시간": "14:59:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2196, + "역명": "당리", + "시간": "15:45:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1227, + "역명": "당리", + "시간": "17:53:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2254, + "역명": "당리", + "시간": "18:39:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1275, + "역명": "당리", + "시간": "20:50:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 7, + "열번": 2298, + "역명": "당리", + "시간": "21:37:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2010, + "역명": "당리", + "시간": "06:12:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1033, + "역명": "당리", + "시간": "08:23:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2064, + "역명": "당리", + "시간": "09:09:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1095, + "역명": "당리", + "시간": "11:17:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2122, + "역명": "당리", + "시간": "12:03:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1153, + "역명": "당리", + "시간": "14:11:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2180, + "역명": "당리", + "시간": "14:57:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1211, + "역명": "당리", + "시간": "17:05:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2240, + "역명": "당리", + "시간": "17:50:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1263, + "역명": "당리", + "시간": "20:02:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2286, + "역명": "당리", + "시간": "20:47:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1303, + "역명": "당리", + "시간": "22:59:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 9, + "열번": 1003, + "역명": "당리", + "시간": "06:17:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2020, + "역명": "당리", + "시간": "07:05:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1053, + "역명": "당리", + "시간": "09:13:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2082, + "역명": "당리", + "시간": "10:03:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1113, + "역명": "당리", + "시간": "12:11:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2140, + "역명": "당리", + "시간": "12:57:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1171, + "역명": "당리", + "시간": "15:05:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2198, + "역명": "당리", + "시간": "15:51:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1229, + "역명": "당리", + "시간": "17:59:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2256, + "역명": "당리", + "시간": "18:47:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1277, + "역명": "당리", + "시간": "20:58:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2300, + "역명": "당리", + "시간": "21:47:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1313, + "역명": "당리", + "시간": "23:53:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2014, + "역명": "당리", + "시간": "06:36:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1043, + "역명": "당리", + "시간": "08:48:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2072, + "역명": "당리", + "시간": "09:33:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1103, + "역명": "당리", + "시간": "11:41:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2130, + "역명": "당리", + "시간": "12:27:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1161, + "역명": "당리", + "시간": "14:35:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2188, + "역명": "당리", + "시간": "15:21:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1219, + "역명": "당리", + "시간": "17:29:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2248, + "역명": "당리", + "시간": "18:18:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1269, + "역명": "당리", + "시간": "20:26:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2292, + "역명": "당리", + "시간": "21:11:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1307, + "역명": "당리", + "시간": "23:19:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 11, + "열번": 2022, + "역명": "당리", + "시간": "07:11:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2016, + "역명": "당리", + "시간": "06:47:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1047, + "역명": "당리", + "시간": "08:58:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2076, + "역명": "당리", + "시간": "09:45:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1107, + "역명": "당리", + "시간": "11:53:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2134, + "역명": "당리", + "시간": "12:39:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1165, + "역명": "당리", + "시간": "14:47:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "당리", + "시간": "15:33:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1223, + "역명": "당리", + "시간": "17:41:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2252, + "역명": "당리", + "시간": "18:32:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1273, + "역명": "당리", + "시간": "20:42:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2296, + "역명": "당리", + "시간": "21:27:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1311, + "역명": "당리", + "시간": "23:41:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1005, + "역명": "당리", + "시간": "06:28:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2024, + "역명": "당리", + "시간": "07:17:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1057, + "역명": "당리", + "시간": "09:23:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2086, + "역명": "당리", + "시간": "10:15:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1117, + "역명": "당리", + "시간": "12:23:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2144, + "역명": "당리", + "시간": "13:09:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1175, + "역명": "당리", + "시간": "15:17:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2202, + "역명": "당리", + "시간": "16:03:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1233, + "역명": "당리", + "시간": "18:12:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2260, + "역명": "당리", + "시간": "19:03:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1281, + "역명": "당리", + "시간": "21:14:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2304, + "역명": "당리", + "시간": "22:07:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 13, + "열번": 1317, + "역명": "당리", + "시간": "00:16:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2026, + "역명": "당리", + "시간": "07:22:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 14, + "열번": 1059, + "역명": "당리", + "시간": "09:29:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1009, + "역명": "당리", + "시간": "06:50:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2032, + "역명": "당리", + "시간": "07:37:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1065, + "역명": "당리", + "시간": "09:47:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2092, + "역명": "당리", + "시간": "10:33:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1123, + "역명": "당리", + "시간": "12:41:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2150, + "역명": "당리", + "시간": "13:27:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1181, + "역명": "당리", + "시간": "15:35:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2208, + "역명": "당리", + "시간": "16:19:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 16, + "열번": 1007, + "역명": "당리", + "시간": "06:39:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2028, + "역명": "당리", + "시간": "07:27:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1061, + "역명": "당리", + "시간": "09:35:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2088, + "역명": "당리", + "시간": "10:21:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1119, + "역명": "당리", + "시간": "12:29:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2146, + "역명": "당리", + "시간": "13:15:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1177, + "역명": "당리", + "시간": "15:23:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2204, + "역명": "당리", + "시간": "16:08:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1235, + "역명": "당리", + "시간": "18:19:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 17, + "열번": 1011, + "역명": "당리", + "시간": "07:01:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2036, + "역명": "당리", + "시간": "07:47:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1069, + "역명": "당리", + "시간": "09:59:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2096, + "역명": "당리", + "시간": "10:45:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1127, + "역명": "당리", + "시간": "12:53:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2154, + "역명": "당리", + "시간": "13:39:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1185, + "역명": "당리", + "시간": "15:47:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2214, + "역명": "당리", + "시간": "16:36:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1243, + "역명": "당리", + "시간": "18:47:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2268, + "역명": "당리", + "시간": "19:35:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1289, + "역명": "당리", + "시간": "21:49:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2310, + "역명": "당리", + "시간": "22:39:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2030, + "역명": "당리", + "시간": "07:32:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1063, + "역명": "당리", + "시간": "09:41:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2090, + "역명": "당리", + "시간": "10:27:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1121, + "역명": "당리", + "시간": "12:35:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2148, + "역명": "당리", + "시간": "13:21:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1179, + "역명": "당리", + "시간": "15:29:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2206, + "역명": "당리", + "시간": "16:14:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1237, + "역명": "당리", + "시간": "18:26:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2262, + "역명": "당리", + "시간": "19:11:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1283, + "역명": "당리", + "시간": "21:22:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2038, + "역명": "당리", + "시간": "07:52:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2034, + "역명": "당리", + "시간": "07:42:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1067, + "역명": "당리", + "시간": "09:53:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2094, + "역명": "당리", + "시간": "10:39:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1125, + "역명": "당리", + "시간": "12:47:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2152, + "역명": "당리", + "시간": "13:33:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1183, + "역명": "당리", + "시간": "15:41:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2212, + "역명": "당리", + "시간": "16:30:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1241, + "역명": "당리", + "시간": "18:40:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2266, + "역명": "당리", + "시간": "19:27:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1287, + "역명": "당리", + "시간": "21:39:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 20, + "열번": 2308, + "역명": "당리", + "시간": "22:27:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2040, + "역명": "당리", + "시간": "07:57:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1071, + "역명": "당리", + "시간": "10:05:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2098, + "역명": "당리", + "시간": "10:51:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1129, + "역명": "당리", + "시간": "12:59:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2156, + "역명": "당리", + "시간": "13:45:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1187, + "역명": "당리", + "시간": "15:53:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2216, + "역명": "당리", + "시간": "16:41:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2044, + "역명": "당리", + "시간": "08:09:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1075, + "역명": "당리", + "시간": "10:17:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2102, + "역명": "당리", + "시간": "11:03:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1133, + "역명": "당리", + "시간": "13:11:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2160, + "역명": "당리", + "시간": "13:57:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1191, + "역명": "당리", + "시간": "16:05:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2220, + "역명": "당리", + "시간": "16:52:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1247, + "역명": "당리", + "시간": "19:01:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2272, + "역명": "당리", + "시간": "19:51:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1291, + "역명": "당리", + "시간": "21:59:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 22, + "열번": 2312, + "역명": "당리", + "시간": "22:51:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 23, + "열번": 1013, + "역명": "당리", + "시간": "07:12:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2042, + "역명": "당리", + "시간": "08:03:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1073, + "역명": "당리", + "시간": "10:11:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2100, + "역명": "당리", + "시간": "10:57:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1131, + "역명": "당리", + "시간": "13:05:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2158, + "역명": "당리", + "시간": "13:51:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1189, + "역명": "당리", + "시간": "15:59:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2218, + "역명": "당리", + "시간": "16:47:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1245, + "역명": "당리", + "시간": "18:54:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2270, + "역명": "당리", + "시간": "19:43:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "당리", + "시간": "08:21:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1079, + "역명": "당리", + "시간": "10:29:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2106, + "역명": "당리", + "시간": "11:15:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1137, + "역명": "당리", + "시간": "13:23:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2164, + "역명": "당리", + "시간": "14:09:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1195, + "역명": "당리", + "시간": "16:17:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2224, + "역명": "당리", + "시간": "17:03:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1251, + "역명": "당리", + "시간": "19:15:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "당리", + "시간": "07:40:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2052, + "역명": "당리", + "시간": "08:33:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1083, + "역명": "당리", + "시간": "10:41:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2110, + "역명": "당리", + "시간": "11:27:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1141, + "역명": "당리", + "시간": "13:35:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2168, + "역명": "당리", + "시간": "14:21:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1199, + "역명": "당리", + "시간": "16:29:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2228, + "역명": "당리", + "시간": "17:14:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1253, + "역명": "당리", + "시간": "19:22:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2276, + "역명": "당리", + "시간": "20:07:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1295, + "역명": "당리", + "시간": "22:19:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2314, + "역명": "당리", + "시간": "23:03:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 26, + "열번": 1029, + "역명": "당리", + "시간": "08:13:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1025, + "역명": "당리", + "시간": "08:03:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2058, + "역명": "당리", + "시간": "08:51:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1089, + "역명": "당리", + "시간": "10:59:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2116, + "역명": "당리", + "시간": "11:45:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1147, + "역명": "당리", + "시간": "13:53:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2174, + "역명": "당리", + "시간": "14:39:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1205, + "역명": "당리", + "시간": "16:47:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 27, + "열번": 2234, + "역명": "당리", + "시간": "17:32:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 28, + "열번": 1041, + "역명": "당리", + "시간": "08:43:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1031, + "역명": "당리", + "시간": "08:18:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2062, + "역명": "당리", + "시간": "09:03:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1093, + "역명": "당리", + "시간": "11:11:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2120, + "역명": "당리", + "시간": "11:57:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1151, + "역명": "당리", + "시간": "14:05:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2178, + "역명": "당리", + "시간": "14:51:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1209, + "역명": "당리", + "시간": "16:59:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2238, + "역명": "당리", + "시간": "17:44:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1261, + "역명": "당리", + "시간": "19:54:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2284, + "역명": "당리", + "시간": "20:39:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 29, + "열번": 1301, + "역명": "당리", + "시간": "22:49:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1049, + "역명": "당리", + "시간": "09:03:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2078, + "역명": "당리", + "시간": "09:51:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1109, + "역명": "당리", + "시간": "11:59:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2136, + "역명": "당리", + "시간": "12:45:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1167, + "역명": "당리", + "시간": "14:53:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2194, + "역명": "당리", + "시간": "15:39:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1225, + "역명": "당리", + "시간": "17:47:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1035, + "역명": "당리", + "시간": "08:28:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2066, + "역명": "당리", + "시간": "09:15:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1097, + "역명": "당리", + "시간": "11:23:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2124, + "역명": "당리", + "시간": "12:09:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1155, + "역명": "당리", + "시간": "14:17:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2182, + "역명": "당리", + "시간": "15:03:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1213, + "역명": "당리", + "시간": "17:11:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2242, + "역명": "당리", + "시간": "17:57:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1265, + "역명": "당리", + "시간": "20:10:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2288, + "역명": "당리", + "시간": "20:55:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1305, + "역명": "당리", + "시간": "23:09:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 32, + "열번": 2210, + "역명": "당리", + "시간": "16:25:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 32, + "열번": 1239, + "역명": "당리", + "시간": "18:33:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 32, + "열번": 2264, + "역명": "당리", + "시간": "19:19:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 32, + "열번": 1285, + "역명": "당리", + "시간": "21:30:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 32, + "열번": 2306, + "역명": "당리", + "시간": "22:17:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 32, + "열번": 7931, + "역명": "당리", + "시간": "00:32:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1037, + "역명": "당리", + "시간": "08:33:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2068, + "역명": "당리", + "시간": "09:21:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1099, + "역명": "당리", + "시간": "11:29:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2126, + "역명": "당리", + "시간": "12:15:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1157, + "역명": "당리", + "시간": "14:23:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2184, + "역명": "당리", + "시간": "15:09:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1215, + "역명": "당리", + "시간": "17:17:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2244, + "역명": "당리", + "시간": "18:04:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1267, + "역명": "당리", + "시간": "20:18:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 33, + "열번": 2290, + "역명": "당리", + "시간": "21:03:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1045, + "역명": "당리", + "시간": "08:53:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2074, + "역명": "당리", + "시간": "09:39:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1105, + "역명": "당리", + "시간": "11:47:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2132, + "역명": "당리", + "시간": "12:33:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1163, + "역명": "당리", + "시간": "14:41:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2190, + "역명": "당리", + "시간": "15:27:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1221, + "역명": "당리", + "시간": "17:35:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2250, + "역명": "당리", + "시간": "18:25:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1271, + "역명": "당리", + "시간": "20:34:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2294, + "역명": "당리", + "시간": "21:19:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1309, + "역명": "당리", + "시간": "23:30:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1055, + "역명": "당리", + "시간": "09:18:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2084, + "역명": "당리", + "시간": "10:09:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1115, + "역명": "당리", + "시간": "12:17:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2142, + "역명": "당리", + "시간": "13:03:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1173, + "역명": "당리", + "시간": "15:11:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2200, + "역명": "당리", + "시간": "15:57:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1231, + "역명": "당리", + "시간": "18:05:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2258, + "역명": "당리", + "시간": "18:55:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1279, + "역명": "당리", + "시간": "21:06:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2302, + "역명": "당리", + "시간": "21:57:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1315, + "역명": "당리", + "시간": "00:05:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "하단", + "시간": "05:20:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "하단", + "시간": "07:33:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2050, + "역명": "하단", + "시간": "08:25:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1081, + "역명": "하단", + "시간": "10:37:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2108, + "역명": "하단", + "시간": "11:19:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1139, + "역명": "하단", + "시간": "13:31:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2166, + "역명": "하단", + "시간": "14:13:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1197, + "역명": "하단", + "시간": "16:25:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2226, + "역명": "하단", + "시간": "17:07:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "하단", + "시간": "05:04:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "하단", + "시간": "07:24:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "하단", + "시간": "08:13:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1077, + "역명": "하단", + "시간": "10:25:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2104, + "역명": "하단", + "시간": "11:07:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1135, + "역명": "하단", + "시간": "13:19:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2162, + "역명": "하단", + "시간": "14:01:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1193, + "역명": "하단", + "시간": "16:13:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2222, + "역명": "하단", + "시간": "16:56:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1249, + "역명": "하단", + "시간": "19:10:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2274, + "역명": "하단", + "시간": "19:57:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1293, + "역명": "하단", + "시간": "22:11:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "하단", + "시간": "05:34:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "하단", + "시간": "07:51:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2054, + "역명": "하단", + "시간": "08:37:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1085, + "역명": "하단", + "시간": "10:49:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2112, + "역명": "하단", + "시간": "11:31:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1143, + "역명": "하단", + "시간": "13:43:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2170, + "역명": "하단", + "시간": "14:25:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1201, + "역명": "하단", + "시간": "16:37:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2230, + "역명": "하단", + "시간": "17:18:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1255, + "역명": "하단", + "시간": "19:32:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2278, + "역명": "하단", + "시간": "20:13:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "하단", + "시간": "05:46:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1023, + "역명": "하단", + "시간": "07:58:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2056, + "역명": "하단", + "시간": "08:43:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1087, + "역명": "하단", + "시간": "10:55:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2114, + "역명": "하단", + "시간": "11:37:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1145, + "역명": "하단", + "시간": "13:49:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2172, + "역명": "하단", + "시간": "14:31:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1203, + "역명": "하단", + "시간": "16:43:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2232, + "역명": "하단", + "시간": "17:24:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1257, + "역명": "하단", + "시간": "19:40:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2280, + "역명": "하단", + "시간": "20:21:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1297, + "역명": "하단", + "시간": "22:31:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2316, + "역명": "하단", + "시간": "23:11:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2012, + "역명": "하단", + "시간": "06:22:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1039, + "역명": "하단", + "시간": "08:40:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2070, + "역명": "하단", + "시간": "09:25:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1101, + "역명": "하단", + "시간": "11:37:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2128, + "역명": "하단", + "시간": "12:19:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1159, + "역명": "하단", + "시간": "14:31:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2186, + "역명": "하단", + "시간": "15:13:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1217, + "역명": "하단", + "시간": "17:25:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2246, + "역명": "하단", + "시간": "18:09:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2008, + "역명": "하단", + "시간": "05:58:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1027, + "역명": "하단", + "시간": "08:10:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2060, + "역명": "하단", + "시간": "08:55:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1091, + "역명": "하단", + "시간": "11:07:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2118, + "역명": "하단", + "시간": "11:49:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1149, + "역명": "하단", + "시간": "14:01:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2176, + "역명": "하단", + "시간": "14:43:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1207, + "역명": "하단", + "시간": "16:55:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2236, + "역명": "하단", + "시간": "17:36:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1259, + "역명": "하단", + "시간": "19:48:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2282, + "역명": "하단", + "시간": "20:29:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1299, + "역명": "하단", + "시간": "22:41:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 6, + "열번": 2318, + "역명": "하단", + "시간": "23:27:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1001, + "역명": "하단", + "시간": "06:11:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2018, + "역명": "하단", + "시간": "06:54:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1051, + "역명": "하단", + "시간": "09:10:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2080, + "역명": "하단", + "시간": "09:55:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1111, + "역명": "하단", + "시간": "12:07:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2138, + "역명": "하단", + "시간": "12:49:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1169, + "역명": "하단", + "시간": "15:01:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2196, + "역명": "하단", + "시간": "15:43:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1227, + "역명": "하단", + "시간": "17:55:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2254, + "역명": "하단", + "시간": "18:37:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1275, + "역명": "하단", + "시간": "20:52:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 7, + "열번": 2298, + "역명": "하단", + "시간": "21:35:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2010, + "역명": "하단", + "시간": "06:10:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1033, + "역명": "하단", + "시간": "08:25:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2064, + "역명": "하단", + "시간": "09:07:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1095, + "역명": "하단", + "시간": "11:19:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2122, + "역명": "하단", + "시간": "12:01:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1153, + "역명": "하단", + "시간": "14:13:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2180, + "역명": "하단", + "시간": "14:55:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1211, + "역명": "하단", + "시간": "17:07:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2240, + "역명": "하단", + "시간": "17:48:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1263, + "역명": "하단", + "시간": "20:04:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2286, + "역명": "하단", + "시간": "20:45:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1303, + "역명": "하단", + "시간": "23:01:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 9, + "열번": 1003, + "역명": "하단", + "시간": "06:19:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2020, + "역명": "하단", + "시간": "07:03:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1053, + "역명": "하단", + "시간": "09:15:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2082, + "역명": "하단", + "시간": "10:01:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1113, + "역명": "하단", + "시간": "12:13:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2140, + "역명": "하단", + "시간": "12:55:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1171, + "역명": "하단", + "시간": "15:07:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2198, + "역명": "하단", + "시간": "15:49:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1229, + "역명": "하단", + "시간": "18:01:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2256, + "역명": "하단", + "시간": "18:45:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1277, + "역명": "하단", + "시간": "21:00:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2300, + "역명": "하단", + "시간": "21:45:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1313, + "역명": "하단", + "시간": "23:55:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2014, + "역명": "하단", + "시간": "06:34:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1043, + "역명": "하단", + "시간": "08:50:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2072, + "역명": "하단", + "시간": "09:31:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1103, + "역명": "하단", + "시간": "11:43:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2130, + "역명": "하단", + "시간": "12:25:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1161, + "역명": "하단", + "시간": "14:37:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2188, + "역명": "하단", + "시간": "15:19:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1219, + "역명": "하단", + "시간": "17:31:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2248, + "역명": "하단", + "시간": "18:16:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1269, + "역명": "하단", + "시간": "20:28:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2292, + "역명": "하단", + "시간": "21:09:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1307, + "역명": "하단", + "시간": "23:21:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 11, + "열번": 2022, + "역명": "하단", + "시간": "07:09:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2016, + "역명": "하단", + "시간": "06:45:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1047, + "역명": "하단", + "시간": "09:00:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2076, + "역명": "하단", + "시간": "09:43:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1107, + "역명": "하단", + "시간": "11:55:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2134, + "역명": "하단", + "시간": "12:37:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1165, + "역명": "하단", + "시간": "14:49:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "하단", + "시간": "15:31:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1223, + "역명": "하단", + "시간": "17:43:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2252, + "역명": "하단", + "시간": "18:30:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1273, + "역명": "하단", + "시간": "20:44:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2296, + "역명": "하단", + "시간": "21:25:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1311, + "역명": "하단", + "시간": "23:43:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1005, + "역명": "하단", + "시간": "06:30:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2024, + "역명": "하단", + "시간": "07:15:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1057, + "역명": "하단", + "시간": "09:25:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2086, + "역명": "하단", + "시간": "10:13:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1117, + "역명": "하단", + "시간": "12:25:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2144, + "역명": "하단", + "시간": "13:07:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1175, + "역명": "하단", + "시간": "15:19:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2202, + "역명": "하단", + "시간": "16:01:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1233, + "역명": "하단", + "시간": "18:14:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2260, + "역명": "하단", + "시간": "19:01:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1281, + "역명": "하단", + "시간": "21:16:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2304, + "역명": "하단", + "시간": "22:05:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 13, + "열번": 1317, + "역명": "하단", + "시간": "00:18:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2026, + "역명": "하단", + "시간": "07:20:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 14, + "열번": 1059, + "역명": "하단", + "시간": "09:31:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1009, + "역명": "하단", + "시간": "06:52:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2032, + "역명": "하단", + "시간": "07:35:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1065, + "역명": "하단", + "시간": "09:49:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2092, + "역명": "하단", + "시간": "10:31:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1123, + "역명": "하단", + "시간": "12:43:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2150, + "역명": "하단", + "시간": "13:25:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1181, + "역명": "하단", + "시간": "15:37:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2208, + "역명": "하단", + "시간": "16:17:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 16, + "열번": 1007, + "역명": "하단", + "시간": "06:41:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2028, + "역명": "하단", + "시간": "07:25:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1061, + "역명": "하단", + "시간": "09:37:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2088, + "역명": "하단", + "시간": "10:19:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1119, + "역명": "하단", + "시간": "12:31:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2146, + "역명": "하단", + "시간": "13:13:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1177, + "역명": "하단", + "시간": "15:25:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2204, + "역명": "하단", + "시간": "16:06:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1235, + "역명": "하단", + "시간": "18:21:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 17, + "열번": 1011, + "역명": "하단", + "시간": "07:03:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2036, + "역명": "하단", + "시간": "07:45:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1069, + "역명": "하단", + "시간": "10:01:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2096, + "역명": "하단", + "시간": "10:43:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1127, + "역명": "하단", + "시간": "12:55:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2154, + "역명": "하단", + "시간": "13:37:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1185, + "역명": "하단", + "시간": "15:49:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2214, + "역명": "하단", + "시간": "16:34:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1243, + "역명": "하단", + "시간": "18:49:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2268, + "역명": "하단", + "시간": "19:33:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1289, + "역명": "하단", + "시간": "21:51:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2310, + "역명": "하단", + "시간": "22:37:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2030, + "역명": "하단", + "시간": "07:30:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1063, + "역명": "하단", + "시간": "09:43:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2090, + "역명": "하단", + "시간": "10:25:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1121, + "역명": "하단", + "시간": "12:37:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2148, + "역명": "하단", + "시간": "13:19:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1179, + "역명": "하단", + "시간": "15:31:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2206, + "역명": "하단", + "시간": "16:12:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1237, + "역명": "하단", + "시간": "18:28:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2262, + "역명": "하단", + "시간": "19:09:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1283, + "역명": "하단", + "시간": "21:24:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2038, + "역명": "하단", + "시간": "07:50:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2034, + "역명": "하단", + "시간": "07:40:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1067, + "역명": "하단", + "시간": "09:55:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2094, + "역명": "하단", + "시간": "10:37:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1125, + "역명": "하단", + "시간": "12:49:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2152, + "역명": "하단", + "시간": "13:31:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1183, + "역명": "하단", + "시간": "15:43:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2212, + "역명": "하단", + "시간": "16:28:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1241, + "역명": "하단", + "시간": "18:42:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2266, + "역명": "하단", + "시간": "19:25:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1287, + "역명": "하단", + "시간": "21:41:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 20, + "열번": 2308, + "역명": "하단", + "시간": "22:25:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2040, + "역명": "하단", + "시간": "07:55:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1071, + "역명": "하단", + "시간": "10:07:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2098, + "역명": "하단", + "시간": "10:49:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1129, + "역명": "하단", + "시간": "13:01:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2156, + "역명": "하단", + "시간": "13:43:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1187, + "역명": "하단", + "시간": "15:55:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2216, + "역명": "하단", + "시간": "16:39:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2044, + "역명": "하단", + "시간": "08:07:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1075, + "역명": "하단", + "시간": "10:19:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2102, + "역명": "하단", + "시간": "11:01:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1133, + "역명": "하단", + "시간": "13:13:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2160, + "역명": "하단", + "시간": "13:55:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1191, + "역명": "하단", + "시간": "16:07:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2220, + "역명": "하단", + "시간": "16:50:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1247, + "역명": "하단", + "시간": "19:03:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2272, + "역명": "하단", + "시간": "19:49:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1291, + "역명": "하단", + "시간": "22:01:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 22, + "열번": 2312, + "역명": "하단", + "시간": "22:49:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 23, + "열번": 1013, + "역명": "하단", + "시간": "07:14:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2042, + "역명": "하단", + "시간": "08:01:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1073, + "역명": "하단", + "시간": "10:13:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2100, + "역명": "하단", + "시간": "10:55:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1131, + "역명": "하단", + "시간": "13:07:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2158, + "역명": "하단", + "시간": "13:49:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1189, + "역명": "하단", + "시간": "16:01:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2218, + "역명": "하단", + "시간": "16:45:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1245, + "역명": "하단", + "시간": "18:56:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2270, + "역명": "하단", + "시간": "19:41:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "하단", + "시간": "08:19:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1079, + "역명": "하단", + "시간": "10:31:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2106, + "역명": "하단", + "시간": "11:13:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1137, + "역명": "하단", + "시간": "13:25:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2164, + "역명": "하단", + "시간": "14:07:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1195, + "역명": "하단", + "시간": "16:19:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2224, + "역명": "하단", + "시간": "17:01:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1251, + "역명": "하단", + "시간": "19:17:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "하단", + "시간": "07:42:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2052, + "역명": "하단", + "시간": "08:31:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1083, + "역명": "하단", + "시간": "10:43:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2110, + "역명": "하단", + "시간": "11:25:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1141, + "역명": "하단", + "시간": "13:37:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2168, + "역명": "하단", + "시간": "14:19:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1199, + "역명": "하단", + "시간": "16:31:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2228, + "역명": "하단", + "시간": "17:12:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1253, + "역명": "하단", + "시간": "19:24:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2276, + "역명": "하단", + "시간": "20:05:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1295, + "역명": "하단", + "시간": "22:21:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2314, + "역명": "하단", + "시간": "23:01:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 26, + "열번": 1029, + "역명": "하단", + "시간": "08:15:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1025, + "역명": "하단", + "시간": "08:05:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2058, + "역명": "하단", + "시간": "08:49:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1089, + "역명": "하단", + "시간": "11:01:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2116, + "역명": "하단", + "시간": "11:43:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1147, + "역명": "하단", + "시간": "13:55:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2174, + "역명": "하단", + "시간": "14:37:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1205, + "역명": "하단", + "시간": "16:49:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 27, + "열번": 2234, + "역명": "하단", + "시간": "17:30:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 28, + "열번": 1041, + "역명": "하단", + "시간": "08:45:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1031, + "역명": "하단", + "시간": "08:20:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2062, + "역명": "하단", + "시간": "09:01:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1093, + "역명": "하단", + "시간": "11:13:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2120, + "역명": "하단", + "시간": "11:55:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1151, + "역명": "하단", + "시간": "14:07:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2178, + "역명": "하단", + "시간": "14:49:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1209, + "역명": "하단", + "시간": "17:01:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2238, + "역명": "하단", + "시간": "17:42:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1261, + "역명": "하단", + "시간": "19:56:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2284, + "역명": "하단", + "시간": "20:37:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 29, + "열번": 1301, + "역명": "하단", + "시간": "22:51:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1049, + "역명": "하단", + "시간": "09:05:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2078, + "역명": "하단", + "시간": "09:49:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1109, + "역명": "하단", + "시간": "12:01:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2136, + "역명": "하단", + "시간": "12:43:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1167, + "역명": "하단", + "시간": "14:55:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2194, + "역명": "하단", + "시간": "15:37:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1225, + "역명": "하단", + "시간": "17:49:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1035, + "역명": "하단", + "시간": "08:30:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2066, + "역명": "하단", + "시간": "09:13:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1097, + "역명": "하단", + "시간": "11:25:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2124, + "역명": "하단", + "시간": "12:07:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1155, + "역명": "하단", + "시간": "14:19:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2182, + "역명": "하단", + "시간": "15:01:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1213, + "역명": "하단", + "시간": "17:13:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2242, + "역명": "하단", + "시간": "17:55:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1265, + "역명": "하단", + "시간": "20:12:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2288, + "역명": "하단", + "시간": "20:53:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1305, + "역명": "하단", + "시간": "23:11:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 32, + "열번": 2210, + "역명": "하단", + "시간": "16:23:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 32, + "열번": 1239, + "역명": "하단", + "시간": "18:35:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 32, + "열번": 2264, + "역명": "하단", + "시간": "19:17:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 32, + "열번": 1285, + "역명": "하단", + "시간": "21:32:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 32, + "열번": 2306, + "역명": "하단", + "시간": "22:15:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 32, + "열번": 7931, + "역명": "하단", + "시간": "00:34:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1037, + "역명": "하단", + "시간": "08:35:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2068, + "역명": "하단", + "시간": "09:19:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1099, + "역명": "하단", + "시간": "11:31:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2126, + "역명": "하단", + "시간": "12:13:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1157, + "역명": "하단", + "시간": "14:25:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2184, + "역명": "하단", + "시간": "15:07:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1215, + "역명": "하단", + "시간": "17:19:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2244, + "역명": "하단", + "시간": "18:02:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1267, + "역명": "하단", + "시간": "20:20:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 33, + "열번": 2290, + "역명": "하단", + "시간": "21:01:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1045, + "역명": "하단", + "시간": "08:55:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2074, + "역명": "하단", + "시간": "09:37:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1105, + "역명": "하단", + "시간": "11:49:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2132, + "역명": "하단", + "시간": "12:31:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1163, + "역명": "하단", + "시간": "14:43:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2190, + "역명": "하단", + "시간": "15:25:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1221, + "역명": "하단", + "시간": "17:37:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2250, + "역명": "하단", + "시간": "18:23:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1271, + "역명": "하단", + "시간": "20:36:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2294, + "역명": "하단", + "시간": "21:17:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1309, + "역명": "하단", + "시간": "23:32:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1055, + "역명": "하단", + "시간": "09:20:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2084, + "역명": "하단", + "시간": "10:07:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1115, + "역명": "하단", + "시간": "12:19:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2142, + "역명": "하단", + "시간": "13:01:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1173, + "역명": "하단", + "시간": "15:13:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2200, + "역명": "하단", + "시간": "15:55:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1231, + "역명": "하단", + "시간": "18:07:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2258, + "역명": "하단", + "시간": "18:53:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1279, + "역명": "하단", + "시간": "21:08:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2302, + "역명": "하단", + "시간": "21:55:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1315, + "역명": "하단", + "시간": "00:07:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "신평", + "시간": "05:18:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "신평", + "시간": "07:36:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2050, + "역명": "신평", + "시간": "08:22:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1081, + "역명": "신평", + "시간": "10:40:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2108, + "역명": "신평", + "시간": "11:16:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1139, + "역명": "신평", + "시간": "13:34:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2166, + "역명": "신평", + "시간": "14:10:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1197, + "역명": "신평", + "시간": "16:28:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2226, + "역명": "신평", + "시간": "17:04:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "신평출고", + "DIA": 2, + "열번": 8902, + "역명": "신평", + "시간": "05:02:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "신평", + "시간": "07:27:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "신평", + "시간": "08:10:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1077, + "역명": "신평", + "시간": "10:28:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2104, + "역명": "신평", + "시간": "11:04:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1135, + "역명": "신평", + "시간": "13:22:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2162, + "역명": "신평", + "시간": "13:58:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1193, + "역명": "신평", + "시간": "16:16:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2222, + "역명": "신평", + "시간": "16:53:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1249, + "역명": "신평", + "시간": "19:13:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2274, + "역명": "신평", + "시간": "19:54:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1293, + "역명": "신평", + "시간": "22:14:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 2, + "열번": 4014, + "역명": "신평", + "시간": "22:49:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "신평", + "시간": "05:31:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "신평", + "시간": "07:54:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2054, + "역명": "신평", + "시간": "08:34:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1085, + "역명": "신평", + "시간": "10:52:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2112, + "역명": "신평", + "시간": "11:28:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1143, + "역명": "신평", + "시간": "13:46:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2170, + "역명": "신평", + "시간": "14:22:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1201, + "역명": "신평", + "시간": "16:40:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2230, + "역명": "신평", + "시간": "17:15:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1255, + "역명": "신평", + "시간": "19:35:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2278, + "역명": "신평", + "시간": "20:10:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 4, + "열번": 7901, + "역명": "신평", + "시간": "05:06:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "신평", + "시간": "05:44:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1023, + "역명": "신평", + "시간": "08:01:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2056, + "역명": "신평", + "시간": "08:40:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1087, + "역명": "신평", + "시간": "10:58:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2114, + "역명": "신평", + "시간": "11:34:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1145, + "역명": "신평", + "시간": "13:52:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2172, + "역명": "신평", + "시간": "14:28:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1203, + "역명": "신평", + "시간": "16:46:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2232, + "역명": "신평", + "시간": "17:21:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1257, + "역명": "신평", + "시간": "19:43:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2280, + "역명": "신평", + "시간": "20:18:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1297, + "역명": "신평", + "시간": "22:34:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2316, + "역명": "신평", + "시간": "23:09:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 5, + "열번": 7907, + "역명": "신평", + "시간": "05:42:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2012, + "역명": "신평", + "시간": "06:20:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1039, + "역명": "신평", + "시간": "08:43:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2070, + "역명": "신평", + "시간": "09:22:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1101, + "역명": "신평", + "시간": "11:40:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2128, + "역명": "신평", + "시간": "12:16:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1159, + "역명": "신평", + "시간": "14:34:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2186, + "역명": "신평", + "시간": "15:10:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1217, + "역명": "신평", + "시간": "17:28:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2246, + "역명": "신평", + "시간": "18:06:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 6, + "열번": 7903, + "역명": "신평", + "시간": "05:18:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2008, + "역명": "신평", + "시간": "05:56:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1027, + "역명": "신평", + "시간": "08:13:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2060, + "역명": "신평", + "시간": "08:52:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1091, + "역명": "신평", + "시간": "11:10:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2118, + "역명": "신평", + "시간": "11:46:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1149, + "역명": "신평", + "시간": "14:04:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2176, + "역명": "신평", + "시간": "14:40:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1207, + "역명": "신평", + "시간": "16:58:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2236, + "역명": "신평", + "시간": "17:33:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1259, + "역명": "신평", + "시간": "19:51:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2282, + "역명": "신평", + "시간": "20:26:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1299, + "역명": "신평", + "시간": "22:44:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 6, + "열번": 2318, + "역명": "신평", + "시간": "23:24:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1001, + "역명": "신평", + "시간": "06:14:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2018, + "역명": "신평", + "시간": "06:52:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1051, + "역명": "신평", + "시간": "09:13:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2080, + "역명": "신평", + "시간": "09:52:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1111, + "역명": "신평", + "시간": "12:10:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2138, + "역명": "신평", + "시간": "12:46:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1169, + "역명": "신평", + "시간": "15:04:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2196, + "역명": "신평", + "시간": "15:40:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1227, + "역명": "신평", + "시간": "17:58:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2254, + "역명": "신평", + "시간": "18:34:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1275, + "역명": "신평", + "시간": "20:55:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 7, + "열번": 2298, + "역명": "신평", + "시간": "21:32:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 8, + "열번": 7905, + "역명": "신평", + "시간": "05:30:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2010, + "역명": "신평", + "시간": "06:08:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1033, + "역명": "신평", + "시간": "08:28:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2064, + "역명": "신평", + "시간": "09:04:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1095, + "역명": "신평", + "시간": "11:22:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2122, + "역명": "신평", + "시간": "11:58:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1153, + "역명": "신평", + "시간": "14:16:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2180, + "역명": "신평", + "시간": "14:52:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1211, + "역명": "신평", + "시간": "17:10:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2240, + "역명": "신평", + "시간": "17:45:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1263, + "역명": "신평", + "시간": "20:07:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2286, + "역명": "신평", + "시간": "20:42:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1303, + "역명": "신평", + "시간": "23:04:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 8, + "열번": 4802, + "역명": "신평", + "시간": "23:39:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 9, + "열번": 1003, + "역명": "신평", + "시간": "06:22:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2020, + "역명": "신평", + "시간": "07:00:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1053, + "역명": "신평", + "시간": "09:18:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2082, + "역명": "신평", + "시간": "09:58:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1113, + "역명": "신평", + "시간": "12:16:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2140, + "역명": "신평", + "시간": "12:52:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1171, + "역명": "신평", + "시간": "15:10:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2198, + "역명": "신평", + "시간": "15:46:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1229, + "역명": "신평", + "시간": "18:04:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2256, + "역명": "신평", + "시간": "18:42:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1277, + "역명": "신평", + "시간": "21:03:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2300, + "역명": "신평", + "시간": "21:42:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1313, + "역명": "신평", + "시간": "23:58:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 9, + "열번": 4810, + "역명": "신평", + "시간": "00:33:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 10, + "열번": 7909, + "역명": "신평", + "시간": "05:54:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2014, + "역명": "신평", + "시간": "06:32:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1043, + "역명": "신평", + "시간": "08:53:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2072, + "역명": "신평", + "시간": "09:28:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1103, + "역명": "신평", + "시간": "11:46:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2130, + "역명": "신평", + "시간": "12:22:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1161, + "역명": "신평", + "시간": "14:40:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2188, + "역명": "신평", + "시간": "15:16:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1219, + "역명": "신평", + "시간": "17:34:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2248, + "역명": "신평", + "시간": "18:13:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1269, + "역명": "신평", + "시간": "20:31:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2292, + "역명": "신평", + "시간": "21:06:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1307, + "역명": "신평", + "시간": "23:24:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 10, + "열번": 4804, + "역명": "신평", + "시간": "23:59:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 11, + "열번": 2022, + "역명": "신평", + "시간": "07:06:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 12, + "열번": 7911, + "역명": "신평", + "시간": "06:05:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2016, + "역명": "신평", + "시간": "06:43:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1047, + "역명": "신평", + "시간": "09:03:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2076, + "역명": "신평", + "시간": "09:40:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1107, + "역명": "신평", + "시간": "11:58:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2134, + "역명": "신평", + "시간": "12:34:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1165, + "역명": "신평", + "시간": "14:52:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "신평", + "시간": "15:28:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1223, + "역명": "신평", + "시간": "17:46:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2252, + "역명": "신평", + "시간": "18:27:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1273, + "역명": "신평", + "시간": "20:47:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2296, + "역명": "신평", + "시간": "21:22:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1311, + "역명": "신평", + "시간": "23:46:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 12, + "열번": 4808, + "역명": "신평", + "시간": "00:21:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1005, + "역명": "신평", + "시간": "06:33:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2024, + "역명": "신평", + "시간": "07:12:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1057, + "역명": "신평", + "시간": "09:28:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2086, + "역명": "신평", + "시간": "10:10:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1117, + "역명": "신평", + "시간": "12:28:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2144, + "역명": "신평", + "시간": "13:04:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1175, + "역명": "신평", + "시간": "15:22:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2202, + "역명": "신평", + "시간": "15:58:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1233, + "역명": "신평", + "시간": "18:17:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2260, + "역명": "신평", + "시간": "18:58:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1281, + "역명": "신평", + "시간": "21:19:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2304, + "역명": "신평", + "시간": "22:02:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 13, + "열번": 1317, + "역명": "신평", + "시간": "00:21:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 14, + "열번": 7913, + "역명": "신평", + "시간": "06:41:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2026, + "역명": "신평", + "시간": "07:17:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 14, + "열번": 1059, + "역명": "신평", + "시간": "09:34:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1009, + "역명": "신평", + "시간": "06:55:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2032, + "역명": "신평", + "시간": "07:32:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1065, + "역명": "신평", + "시간": "09:52:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2092, + "역명": "신평", + "시간": "10:28:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1123, + "역명": "신평", + "시간": "12:46:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2150, + "역명": "신평", + "시간": "13:22:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1181, + "역명": "신평", + "시간": "15:40:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2208, + "역명": "신평", + "시간": "16:15:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 16, + "열번": 1007, + "역명": "신평", + "시간": "06:44:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2028, + "역명": "신평", + "시간": "07:22:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1061, + "역명": "신평", + "시간": "09:40:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2088, + "역명": "신평", + "시간": "10:16:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1119, + "역명": "신평", + "시간": "12:34:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2146, + "역명": "신평", + "시간": "13:10:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1177, + "역명": "신평", + "시간": "15:28:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2204, + "역명": "신평", + "시간": "16:04:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1235, + "역명": "신평", + "시간": "18:24:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 16, + "열번": 4008, + "역명": "신평", + "시간": "19:00:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 17, + "열번": 1011, + "역명": "신평", + "시간": "07:06:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2036, + "역명": "신평", + "시간": "07:42:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1069, + "역명": "신평", + "시간": "10:04:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2096, + "역명": "신평", + "시간": "10:40:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1127, + "역명": "신평", + "시간": "12:58:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2154, + "역명": "신평", + "시간": "13:34:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1185, + "역명": "신평", + "시간": "15:52:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2214, + "역명": "신평", + "시간": "16:31:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1243, + "역명": "신평", + "시간": "18:52:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2268, + "역명": "신평", + "시간": "19:30:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1289, + "역명": "신평", + "시간": "21:54:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2310, + "역명": "신평", + "시간": "22:34:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 18, + "열번": 7915, + "역명": "신평", + "시간": "06:52:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2030, + "역명": "신평", + "시간": "07:27:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1063, + "역명": "신평", + "시간": "09:46:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2090, + "역명": "신평", + "시간": "10:22:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1121, + "역명": "신평", + "시간": "12:40:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2148, + "역명": "신평", + "시간": "13:16:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1179, + "역명": "신평", + "시간": "15:34:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2206, + "역명": "신평", + "시간": "16:09:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1237, + "역명": "신평", + "시간": "18:31:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2262, + "역명": "신평", + "시간": "19:06:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1283, + "역명": "신평", + "시간": "21:27:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 18, + "열번": 4012, + "역명": "신평", + "시간": "22:04:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2038, + "역명": "신평", + "시간": "07:47:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 20, + "열번": 7917, + "역명": "신평", + "시간": "07:01:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2034, + "역명": "신평", + "시간": "07:37:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1067, + "역명": "신평", + "시간": "09:58:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2094, + "역명": "신평", + "시간": "10:34:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1125, + "역명": "신평", + "시간": "12:52:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2152, + "역명": "신평", + "시간": "13:28:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1183, + "역명": "신평", + "시간": "15:46:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2212, + "역명": "신평", + "시간": "16:26:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1241, + "역명": "신평", + "시간": "18:45:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2266, + "역명": "신평", + "시간": "19:22:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1287, + "역명": "신평", + "시간": "21:44:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 20, + "열번": 2308, + "역명": "신평", + "시간": "22:22:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 21, + "열번": 7919, + "역명": "신평", + "시간": "07:13:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2040, + "역명": "신평", + "시간": "07:52:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1071, + "역명": "신평", + "시간": "10:10:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2098, + "역명": "신평", + "시간": "10:46:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1129, + "역명": "신평", + "시간": "13:04:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2156, + "역명": "신평", + "시간": "13:40:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1187, + "역명": "신평", + "시간": "15:58:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2216, + "역명": "신평", + "시간": "16:37:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 22, + "열번": 7921, + "역명": "신평", + "시간": "07:23:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2044, + "역명": "신평", + "시간": "08:04:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1075, + "역명": "신평", + "시간": "10:22:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2102, + "역명": "신평", + "시간": "10:58:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1133, + "역명": "신평", + "시간": "13:16:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2160, + "역명": "신평", + "시간": "13:52:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1191, + "역명": "신평", + "시간": "16:10:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2220, + "역명": "신평", + "시간": "16:48:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1247, + "역명": "신평", + "시간": "19:06:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2272, + "역명": "신평", + "시간": "19:46:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1291, + "역명": "신평", + "시간": "22:04:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 22, + "열번": 2312, + "역명": "신평", + "시간": "22:46:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 23, + "열번": 1013, + "역명": "신평", + "시간": "07:17:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2042, + "역명": "신평", + "시간": "07:58:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1073, + "역명": "신평", + "시간": "10:16:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2100, + "역명": "신평", + "시간": "10:52:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1131, + "역명": "신평", + "시간": "13:10:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2158, + "역명": "신평", + "시간": "13:46:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1189, + "역명": "신평", + "시간": "16:04:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2218, + "역명": "신평", + "시간": "16:42:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1245, + "역명": "신평", + "시간": "18:59:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2270, + "역명": "신평", + "시간": "19:38:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 24, + "열번": 7923, + "역명": "신평", + "시간": "07:33:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "신평", + "시간": "08:16:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1079, + "역명": "신평", + "시간": "10:34:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2106, + "역명": "신평", + "시간": "11:10:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1137, + "역명": "신평", + "시간": "13:28:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2164, + "역명": "신평", + "시간": "14:04:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1195, + "역명": "신평", + "시간": "16:22:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2224, + "역명": "신평", + "시간": "16:59:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1251, + "역명": "신평", + "시간": "19:20:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 24, + "열번": 4010, + "역명": "신평", + "시간": "19:56:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "신평", + "시간": "07:45:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2052, + "역명": "신평", + "시간": "08:28:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1083, + "역명": "신평", + "시간": "10:46:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2110, + "역명": "신평", + "시간": "11:22:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1141, + "역명": "신평", + "시간": "13:40:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2168, + "역명": "신평", + "시간": "14:16:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1199, + "역명": "신평", + "시간": "16:34:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2228, + "역명": "신평", + "시간": "17:10:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1253, + "역명": "신평", + "시간": "19:27:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2276, + "역명": "신평", + "시간": "20:02:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1295, + "역명": "신평", + "시간": "22:24:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2314, + "역명": "신평", + "시간": "22:58:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 26, + "열번": 1029, + "역명": "신평", + "시간": "08:18:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 26, + "열번": 4002, + "역명": "신평", + "시간": "08:54:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1025, + "역명": "신평", + "시간": "08:08:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2058, + "역명": "신평", + "시간": "08:46:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1089, + "역명": "신평", + "시간": "11:04:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2116, + "역명": "신평", + "시간": "11:40:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1147, + "역명": "신평", + "시간": "13:58:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2174, + "역명": "신평", + "시간": "14:34:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1205, + "역명": "신평", + "시간": "16:52:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 27, + "열번": 2234, + "역명": "신평", + "시간": "17:27:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 28, + "열번": 1041, + "역명": "신평", + "시간": "08:48:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 28, + "열번": 4004, + "역명": "신평", + "시간": "09:24:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1031, + "역명": "신평", + "시간": "08:23:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2062, + "역명": "신평", + "시간": "08:58:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1093, + "역명": "신평", + "시간": "11:16:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2120, + "역명": "신평", + "시간": "11:52:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1151, + "역명": "신평", + "시간": "14:10:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2178, + "역명": "신평", + "시간": "14:46:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1209, + "역명": "신평", + "시간": "17:04:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2238, + "역명": "신평", + "시간": "17:39:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1261, + "역명": "신평", + "시간": "19:59:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2284, + "역명": "신평", + "시간": "20:34:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 29, + "열번": 1301, + "역명": "신평", + "시간": "22:54:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1049, + "역명": "신평", + "시간": "09:08:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2078, + "역명": "신평", + "시간": "09:46:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1109, + "역명": "신평", + "시간": "12:04:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2136, + "역명": "신평", + "시간": "12:40:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1167, + "역명": "신평", + "시간": "14:58:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2194, + "역명": "신평", + "시간": "15:34:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1225, + "역명": "신평", + "시간": "17:52:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 30, + "열번": 4006, + "역명": "신평", + "시간": "18:29:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1035, + "역명": "신평", + "시간": "08:33:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2066, + "역명": "신평", + "시간": "09:10:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1097, + "역명": "신평", + "시간": "11:28:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2124, + "역명": "신평", + "시간": "12:04:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1155, + "역명": "신평", + "시간": "14:22:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2182, + "역명": "신평", + "시간": "14:58:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1213, + "역명": "신평", + "시간": "17:16:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2242, + "역명": "신평", + "시간": "17:52:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1265, + "역명": "신평", + "시간": "20:15:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2288, + "역명": "신평", + "시간": "20:50:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1305, + "역명": "신평", + "시간": "23:14:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 32, + "열번": 2210, + "역명": "신평", + "시간": "16:20:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 32, + "열번": 1239, + "역명": "신평", + "시간": "18:38:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 32, + "열번": 2264, + "역명": "신평", + "시간": "19:14:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 32, + "열번": 1285, + "역명": "신평", + "시간": "21:35:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 32, + "열번": 2306, + "역명": "신평", + "시간": "22:12:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평입고", + "DIA": 32, + "열번": 7931, + "역명": "신평", + "시간": "00:37:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1037, + "역명": "신평", + "시간": "08:38:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2068, + "역명": "신평", + "시간": "09:16:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1099, + "역명": "신평", + "시간": "11:34:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2126, + "역명": "신평", + "시간": "12:10:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1157, + "역명": "신평", + "시간": "14:28:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2184, + "역명": "신평", + "시간": "15:04:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1215, + "역명": "신평", + "시간": "17:22:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2244, + "역명": "신평", + "시간": "17:59:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1267, + "역명": "신평", + "시간": "20:23:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 33, + "열번": 2290, + "역명": "신평", + "시간": "20:58:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1045, + "역명": "신평", + "시간": "08:58:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2074, + "역명": "신평", + "시간": "09:34:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1105, + "역명": "신평", + "시간": "11:52:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2132, + "역명": "신평", + "시간": "12:28:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1163, + "역명": "신평", + "시간": "14:46:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2190, + "역명": "신평", + "시간": "15:22:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1221, + "역명": "신평", + "시간": "17:40:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2250, + "역명": "신평", + "시간": "18:20:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1271, + "역명": "신평", + "시간": "20:39:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2294, + "역명": "신평", + "시간": "21:14:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1309, + "역명": "신평", + "시간": "23:35:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 35, + "열번": 4806, + "역명": "신평", + "시간": "00:10:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1055, + "역명": "신평", + "시간": "09:23:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2084, + "역명": "신평", + "시간": "10:04:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1115, + "역명": "신평", + "시간": "12:22:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2142, + "역명": "신평", + "시간": "12:58:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1173, + "역명": "신평", + "시간": "15:16:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2200, + "역명": "신평", + "시간": "15:52:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1231, + "역명": "신평", + "시간": "18:10:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2258, + "역명": "신평", + "시간": "18:50:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1279, + "역명": "신평", + "시간": "21:11:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2302, + "역명": "신평", + "시간": "21:52:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1315, + "역명": "신평", + "시간": "00:10:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "동매", + "시간": "05:15:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "동매", + "시간": "07:39:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2050, + "역명": "동매", + "시간": "08:19:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1081, + "역명": "동매", + "시간": "10:43:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2108, + "역명": "동매", + "시간": "11:13:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1139, + "역명": "동매", + "시간": "13:37:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2166, + "역명": "동매", + "시간": "14:07:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1197, + "역명": "동매", + "시간": "16:31:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2226, + "역명": "동매", + "시간": "17:01:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "동매", + "시간": "07:30:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "동매", + "시간": "08:07:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1077, + "역명": "동매", + "시간": "10:31:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2104, + "역명": "동매", + "시간": "11:01:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1135, + "역명": "동매", + "시간": "13:25:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2162, + "역명": "동매", + "시간": "13:55:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1193, + "역명": "동매", + "시간": "16:19:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2222, + "역명": "동매", + "시간": "16:50:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1249, + "역명": "동매", + "시간": "19:16:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2274, + "역명": "동매", + "시간": "19:51:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1293, + "역명": "동매", + "시간": "22:17:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "동매", + "시간": "05:28:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "동매", + "시간": "07:57:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2054, + "역명": "동매", + "시간": "08:31:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1085, + "역명": "동매", + "시간": "10:55:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2112, + "역명": "동매", + "시간": "11:25:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1143, + "역명": "동매", + "시간": "13:49:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2170, + "역명": "동매", + "시간": "14:19:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1201, + "역명": "동매", + "시간": "16:43:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2230, + "역명": "동매", + "시간": "17:12:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1255, + "역명": "동매", + "시간": "19:38:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2278, + "역명": "동매", + "시간": "20:07:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 4, + "열번": 7901, + "역명": "동매", + "시간": "05:08:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "동매", + "시간": "05:41:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1023, + "역명": "동매", + "시간": "08:04:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2056, + "역명": "동매", + "시간": "08:37:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1087, + "역명": "동매", + "시간": "11:01:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2114, + "역명": "동매", + "시간": "11:31:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1145, + "역명": "동매", + "시간": "13:55:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2172, + "역명": "동매", + "시간": "14:25:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1203, + "역명": "동매", + "시간": "16:49:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2232, + "역명": "동매", + "시간": "17:18:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1257, + "역명": "동매", + "시간": "19:46:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2280, + "역명": "동매", + "시간": "20:15:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1297, + "역명": "동매", + "시간": "22:37:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2316, + "역명": "동매", + "시간": "23:05:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 5, + "열번": 7907, + "역명": "동매", + "시간": "05:44:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2012, + "역명": "동매", + "시간": "06:17:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1039, + "역명": "동매", + "시간": "08:46:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2070, + "역명": "동매", + "시간": "09:19:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1101, + "역명": "동매", + "시간": "11:43:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2128, + "역명": "동매", + "시간": "12:13:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1159, + "역명": "동매", + "시간": "14:37:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2186, + "역명": "동매", + "시간": "15:07:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1217, + "역명": "동매", + "시간": "17:31:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2246, + "역명": "동매", + "시간": "18:03:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 6, + "열번": 7903, + "역명": "동매", + "시간": "05:20:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2008, + "역명": "동매", + "시간": "05:53:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1027, + "역명": "동매", + "시간": "08:16:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2060, + "역명": "동매", + "시간": "08:49:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1091, + "역명": "동매", + "시간": "11:13:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2118, + "역명": "동매", + "시간": "11:43:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1149, + "역명": "동매", + "시간": "14:07:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2176, + "역명": "동매", + "시간": "14:37:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1207, + "역명": "동매", + "시간": "17:01:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2236, + "역명": "동매", + "시간": "17:30:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1259, + "역명": "동매", + "시간": "19:54:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2282, + "역명": "동매", + "시간": "20:23:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1299, + "역명": "동매", + "시간": "22:47:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 6, + "열번": 2318, + "역명": "동매", + "시간": "23:21:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1001, + "역명": "동매", + "시간": "06:17:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2018, + "역명": "동매", + "시간": "06:49:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1051, + "역명": "동매", + "시간": "09:16:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2080, + "역명": "동매", + "시간": "09:49:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1111, + "역명": "동매", + "시간": "12:13:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2138, + "역명": "동매", + "시간": "12:43:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1169, + "역명": "동매", + "시간": "15:07:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2196, + "역명": "동매", + "시간": "15:37:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1227, + "역명": "동매", + "시간": "18:01:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2254, + "역명": "동매", + "시간": "18:31:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1275, + "역명": "동매", + "시간": "20:58:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 7, + "열번": 2298, + "역명": "동매", + "시간": "21:29:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 8, + "열번": 7905, + "역명": "동매", + "시간": "05:32:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2010, + "역명": "동매", + "시간": "06:05:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1033, + "역명": "동매", + "시간": "08:31:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2064, + "역명": "동매", + "시간": "09:01:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1095, + "역명": "동매", + "시간": "11:25:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2122, + "역명": "동매", + "시간": "11:55:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1153, + "역명": "동매", + "시간": "14:19:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2180, + "역명": "동매", + "시간": "14:49:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1211, + "역명": "동매", + "시간": "17:13:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2240, + "역명": "동매", + "시간": "17:42:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1263, + "역명": "동매", + "시간": "20:10:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2286, + "역명": "동매", + "시간": "20:39:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1303, + "역명": "동매", + "시간": "23:07:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 9, + "열번": 1003, + "역명": "동매", + "시간": "06:25:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2020, + "역명": "동매", + "시간": "06:57:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1053, + "역명": "동매", + "시간": "09:21:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2082, + "역명": "동매", + "시간": "09:55:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1113, + "역명": "동매", + "시간": "12:19:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2140, + "역명": "동매", + "시간": "12:49:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1171, + "역명": "동매", + "시간": "15:13:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2198, + "역명": "동매", + "시간": "15:43:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1229, + "역명": "동매", + "시간": "18:07:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2256, + "역명": "동매", + "시간": "18:39:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1277, + "역명": "동매", + "시간": "21:06:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2300, + "역명": "동매", + "시간": "21:39:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1313, + "역명": "동매", + "시간": "00:01:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 10, + "열번": 7909, + "역명": "동매", + "시간": "05:56:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2014, + "역명": "동매", + "시간": "06:29:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1043, + "역명": "동매", + "시간": "08:56:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2072, + "역명": "동매", + "시간": "09:25:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1103, + "역명": "동매", + "시간": "11:49:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2130, + "역명": "동매", + "시간": "12:19:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1161, + "역명": "동매", + "시간": "14:43:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2188, + "역명": "동매", + "시간": "15:13:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1219, + "역명": "동매", + "시간": "17:37:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2248, + "역명": "동매", + "시간": "18:10:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1269, + "역명": "동매", + "시간": "20:34:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2292, + "역명": "동매", + "시간": "21:03:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1307, + "역명": "동매", + "시간": "23:27:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 11, + "열번": 2022, + "역명": "동매", + "시간": "07:03:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 12, + "열번": 7911, + "역명": "동매", + "시간": "06:07:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2016, + "역명": "동매", + "시간": "06:40:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1047, + "역명": "동매", + "시간": "09:06:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2076, + "역명": "동매", + "시간": "09:37:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1107, + "역명": "동매", + "시간": "12:01:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2134, + "역명": "동매", + "시간": "12:31:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1165, + "역명": "동매", + "시간": "14:55:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "동매", + "시간": "15:25:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1223, + "역명": "동매", + "시간": "17:49:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2252, + "역명": "동매", + "시간": "18:24:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1273, + "역명": "동매", + "시간": "20:50:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2296, + "역명": "동매", + "시간": "21:19:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1311, + "역명": "동매", + "시간": "23:49:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1005, + "역명": "동매", + "시간": "06:36:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2024, + "역명": "동매", + "시간": "07:09:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1057, + "역명": "동매", + "시간": "09:31:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2086, + "역명": "동매", + "시간": "10:07:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1117, + "역명": "동매", + "시간": "12:31:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2144, + "역명": "동매", + "시간": "13:01:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1175, + "역명": "동매", + "시간": "15:25:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2202, + "역명": "동매", + "시간": "15:55:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1233, + "역명": "동매", + "시간": "18:20:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2260, + "역명": "동매", + "시간": "18:55:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1281, + "역명": "동매", + "시간": "21:22:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2304, + "역명": "동매", + "시간": "21:59:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 13, + "열번": 1317, + "역명": "동매", + "시간": "00:24:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 14, + "열번": 7913, + "역명": "동매", + "시간": "06:43:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2026, + "역명": "동매", + "시간": "07:14:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 14, + "열번": 1059, + "역명": "동매", + "시간": "09:37:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1009, + "역명": "동매", + "시간": "06:58:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2032, + "역명": "동매", + "시간": "07:29:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1065, + "역명": "동매", + "시간": "09:55:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2092, + "역명": "동매", + "시간": "10:25:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1123, + "역명": "동매", + "시간": "12:49:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2150, + "역명": "동매", + "시간": "13:19:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1181, + "역명": "동매", + "시간": "15:43:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2208, + "역명": "동매", + "시간": "16:12:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 16, + "열번": 1007, + "역명": "동매", + "시간": "06:47:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2028, + "역명": "동매", + "시간": "07:19:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1061, + "역명": "동매", + "시간": "09:43:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2088, + "역명": "동매", + "시간": "10:13:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1119, + "역명": "동매", + "시간": "12:37:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2146, + "역명": "동매", + "시간": "13:07:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1177, + "역명": "동매", + "시간": "15:31:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2204, + "역명": "동매", + "시간": "16:01:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1235, + "역명": "동매", + "시간": "18:27:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 17, + "열번": 1011, + "역명": "동매", + "시간": "07:09:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2036, + "역명": "동매", + "시간": "07:39:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1069, + "역명": "동매", + "시간": "10:07:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2096, + "역명": "동매", + "시간": "10:37:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1127, + "역명": "동매", + "시간": "13:01:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2154, + "역명": "동매", + "시간": "13:31:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1185, + "역명": "동매", + "시간": "15:55:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2214, + "역명": "동매", + "시간": "16:28:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1243, + "역명": "동매", + "시간": "18:55:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2268, + "역명": "동매", + "시간": "19:27:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1289, + "역명": "동매", + "시간": "21:57:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2310, + "역명": "동매", + "시간": "22:31:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 18, + "열번": 7915, + "역명": "동매", + "시간": "06:54:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2030, + "역명": "동매", + "시간": "07:24:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1063, + "역명": "동매", + "시간": "09:49:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2090, + "역명": "동매", + "시간": "10:19:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1121, + "역명": "동매", + "시간": "12:43:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2148, + "역명": "동매", + "시간": "13:13:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1179, + "역명": "동매", + "시간": "15:37:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2206, + "역명": "동매", + "시간": "16:06:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1237, + "역명": "동매", + "시간": "18:34:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2262, + "역명": "동매", + "시간": "19:03:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1283, + "역명": "동매", + "시간": "21:30:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2038, + "역명": "동매", + "시간": "07:44:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 20, + "열번": 7917, + "역명": "동매", + "시간": "07:04:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2034, + "역명": "동매", + "시간": "07:34:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1067, + "역명": "동매", + "시간": "10:01:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2094, + "역명": "동매", + "시간": "10:31:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1125, + "역명": "동매", + "시간": "12:55:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2152, + "역명": "동매", + "시간": "13:25:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1183, + "역명": "동매", + "시간": "15:49:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2212, + "역명": "동매", + "시간": "16:23:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1241, + "역명": "동매", + "시간": "18:48:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2266, + "역명": "동매", + "시간": "19:19:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1287, + "역명": "동매", + "시간": "21:47:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 20, + "열번": 2308, + "역명": "동매", + "시간": "22:19:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 21, + "열번": 7919, + "역명": "동매", + "시간": "07:15:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2040, + "역명": "동매", + "시간": "07:49:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1071, + "역명": "동매", + "시간": "10:13:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2098, + "역명": "동매", + "시간": "10:43:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1129, + "역명": "동매", + "시간": "13:07:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2156, + "역명": "동매", + "시간": "13:37:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1187, + "역명": "동매", + "시간": "16:01:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2216, + "역명": "동매", + "시간": "16:34:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 22, + "열번": 7921, + "역명": "동매", + "시간": "07:26:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2044, + "역명": "동매", + "시간": "08:01:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1075, + "역명": "동매", + "시간": "10:25:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2102, + "역명": "동매", + "시간": "10:55:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1133, + "역명": "동매", + "시간": "13:19:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2160, + "역명": "동매", + "시간": "13:49:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1191, + "역명": "동매", + "시간": "16:13:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2220, + "역명": "동매", + "시간": "16:45:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1247, + "역명": "동매", + "시간": "19:09:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2272, + "역명": "동매", + "시간": "19:43:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1291, + "역명": "동매", + "시간": "22:07:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 22, + "열번": 2312, + "역명": "동매", + "시간": "22:43:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 23, + "열번": 1013, + "역명": "동매", + "시간": "07:20:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2042, + "역명": "동매", + "시간": "07:55:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1073, + "역명": "동매", + "시간": "10:19:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2100, + "역명": "동매", + "시간": "10:49:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1131, + "역명": "동매", + "시간": "13:13:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2158, + "역명": "동매", + "시간": "13:43:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1189, + "역명": "동매", + "시간": "16:07:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2218, + "역명": "동매", + "시간": "16:39:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1245, + "역명": "동매", + "시간": "19:02:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2270, + "역명": "동매", + "시간": "19:35:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 24, + "열번": 7923, + "역명": "동매", + "시간": "07:36:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "동매", + "시간": "08:13:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1079, + "역명": "동매", + "시간": "10:37:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2106, + "역명": "동매", + "시간": "11:07:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1137, + "역명": "동매", + "시간": "13:31:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2164, + "역명": "동매", + "시간": "14:01:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1195, + "역명": "동매", + "시간": "16:25:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2224, + "역명": "동매", + "시간": "16:56:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1251, + "역명": "동매", + "시간": "19:23:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "동매", + "시간": "07:48:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2052, + "역명": "동매", + "시간": "08:25:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1083, + "역명": "동매", + "시간": "10:49:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2110, + "역명": "동매", + "시간": "11:19:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1141, + "역명": "동매", + "시간": "13:43:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2168, + "역명": "동매", + "시간": "14:13:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1199, + "역명": "동매", + "시간": "16:37:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2228, + "역명": "동매", + "시간": "17:07:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1253, + "역명": "동매", + "시간": "19:30:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2276, + "역명": "동매", + "시간": "19:59:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1295, + "역명": "동매", + "시간": "22:27:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2314, + "역명": "동매", + "시간": "22:55:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 26, + "열번": 1029, + "역명": "동매", + "시간": "08:21:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1025, + "역명": "동매", + "시간": "08:11:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2058, + "역명": "동매", + "시간": "08:43:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1089, + "역명": "동매", + "시간": "11:07:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2116, + "역명": "동매", + "시간": "11:37:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1147, + "역명": "동매", + "시간": "14:01:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2174, + "역명": "동매", + "시간": "14:31:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1205, + "역명": "동매", + "시간": "16:55:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 27, + "열번": 2234, + "역명": "동매", + "시간": "17:24:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 28, + "열번": 1041, + "역명": "동매", + "시간": "08:51:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1031, + "역명": "동매", + "시간": "08:26:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2062, + "역명": "동매", + "시간": "08:55:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1093, + "역명": "동매", + "시간": "11:19:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2120, + "역명": "동매", + "시간": "11:49:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1151, + "역명": "동매", + "시간": "14:13:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2178, + "역명": "동매", + "시간": "14:43:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1209, + "역명": "동매", + "시간": "17:07:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2238, + "역명": "동매", + "시간": "17:36:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1261, + "역명": "동매", + "시간": "20:02:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2284, + "역명": "동매", + "시간": "20:31:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 29, + "열번": 1301, + "역명": "동매", + "시간": "22:57:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1049, + "역명": "동매", + "시간": "09:11:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2078, + "역명": "동매", + "시간": "09:43:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1109, + "역명": "동매", + "시간": "12:07:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2136, + "역명": "동매", + "시간": "12:37:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1167, + "역명": "동매", + "시간": "15:01:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2194, + "역명": "동매", + "시간": "15:31:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1225, + "역명": "동매", + "시간": "17:55:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1035, + "역명": "동매", + "시간": "08:36:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2066, + "역명": "동매", + "시간": "09:07:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1097, + "역명": "동매", + "시간": "11:31:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2124, + "역명": "동매", + "시간": "12:01:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1155, + "역명": "동매", + "시간": "14:25:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2182, + "역명": "동매", + "시간": "14:55:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1213, + "역명": "동매", + "시간": "17:19:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2242, + "역명": "동매", + "시간": "17:49:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1265, + "역명": "동매", + "시간": "20:18:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2288, + "역명": "동매", + "시간": "20:47:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1305, + "역명": "동매", + "시간": "23:17:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 32, + "열번": 2210, + "역명": "동매", + "시간": "16:17:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 32, + "열번": 1239, + "역명": "동매", + "시간": "18:41:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 32, + "열번": 2264, + "역명": "동매", + "시간": "19:11:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 32, + "열번": 1285, + "역명": "동매", + "시간": "21:38:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 32, + "열번": 2306, + "역명": "동매", + "시간": "22:09:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1037, + "역명": "동매", + "시간": "08:41:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2068, + "역명": "동매", + "시간": "09:13:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1099, + "역명": "동매", + "시간": "11:37:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2126, + "역명": "동매", + "시간": "12:07:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1157, + "역명": "동매", + "시간": "14:31:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2184, + "역명": "동매", + "시간": "15:01:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1215, + "역명": "동매", + "시간": "17:25:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2244, + "역명": "동매", + "시간": "17:56:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1267, + "역명": "동매", + "시간": "20:26:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 33, + "열번": 2290, + "역명": "동매", + "시간": "20:55:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1045, + "역명": "동매", + "시간": "09:01:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2074, + "역명": "동매", + "시간": "09:31:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1105, + "역명": "동매", + "시간": "11:55:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2132, + "역명": "동매", + "시간": "12:25:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1163, + "역명": "동매", + "시간": "14:49:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2190, + "역명": "동매", + "시간": "15:19:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1221, + "역명": "동매", + "시간": "17:43:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2250, + "역명": "동매", + "시간": "18:17:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1271, + "역명": "동매", + "시간": "20:42:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2294, + "역명": "동매", + "시간": "21:11:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1309, + "역명": "동매", + "시간": "23:38:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1055, + "역명": "동매", + "시간": "09:26:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2084, + "역명": "동매", + "시간": "10:01:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1115, + "역명": "동매", + "시간": "12:25:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2142, + "역명": "동매", + "시간": "12:55:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1173, + "역명": "동매", + "시간": "15:19:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2200, + "역명": "동매", + "시간": "15:49:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1231, + "역명": "동매", + "시간": "18:13:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2258, + "역명": "동매", + "시간": "18:47:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1279, + "역명": "동매", + "시간": "21:14:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2302, + "역명": "동매", + "시간": "21:49:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1315, + "역명": "동매", + "시간": "00:13:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "장림", + "시간": "05:12:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "장림", + "시간": "07:41:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2050, + "역명": "장림", + "시간": "08:17:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1081, + "역명": "장림", + "시간": "10:45:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2108, + "역명": "장림", + "시간": "11:11:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1139, + "역명": "장림", + "시간": "13:39:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2166, + "역명": "장림", + "시간": "14:05:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1197, + "역명": "장림", + "시간": "16:33:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2226, + "역명": "장림", + "시간": "16:59:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "장림", + "시간": "07:32:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "장림", + "시간": "08:05:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1077, + "역명": "장림", + "시간": "10:33:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2104, + "역명": "장림", + "시간": "10:59:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1135, + "역명": "장림", + "시간": "13:27:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2162, + "역명": "장림", + "시간": "13:53:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1193, + "역명": "장림", + "시간": "16:21:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2222, + "역명": "장림", + "시간": "16:48:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1249, + "역명": "장림", + "시간": "19:18:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2274, + "역명": "장림", + "시간": "19:49:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1293, + "역명": "장림", + "시간": "22:19:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "장림", + "시간": "05:26:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "장림", + "시간": "07:59:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2054, + "역명": "장림", + "시간": "08:29:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1085, + "역명": "장림", + "시간": "10:57:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2112, + "역명": "장림", + "시간": "11:23:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1143, + "역명": "장림", + "시간": "13:51:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2170, + "역명": "장림", + "시간": "14:17:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1201, + "역명": "장림", + "시간": "16:45:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2230, + "역명": "장림", + "시간": "17:10:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1255, + "역명": "장림", + "시간": "19:40:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2278, + "역명": "장림", + "시간": "20:05:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 4, + "열번": 7901, + "역명": "장림", + "시간": "05:11:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "장림", + "시간": "05:38:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1023, + "역명": "장림", + "시간": "08:06:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2056, + "역명": "장림", + "시간": "08:35:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1087, + "역명": "장림", + "시간": "11:03:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2114, + "역명": "장림", + "시간": "11:29:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1145, + "역명": "장림", + "시간": "13:57:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2172, + "역명": "장림", + "시간": "14:23:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1203, + "역명": "장림", + "시간": "16:51:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2232, + "역명": "장림", + "시간": "17:16:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1257, + "역명": "장림", + "시간": "19:48:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2280, + "역명": "장림", + "시간": "20:13:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1297, + "역명": "장림", + "시간": "22:39:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2316, + "역명": "장림", + "시간": "23:03:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 5, + "열번": 7907, + "역명": "장림", + "시간": "05:47:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2012, + "역명": "장림", + "시간": "06:14:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1039, + "역명": "장림", + "시간": "08:48:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2070, + "역명": "장림", + "시간": "09:17:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1101, + "역명": "장림", + "시간": "11:45:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2128, + "역명": "장림", + "시간": "12:11:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1159, + "역명": "장림", + "시간": "14:39:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2186, + "역명": "장림", + "시간": "15:05:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1217, + "역명": "장림", + "시간": "17:33:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2246, + "역명": "장림", + "시간": "18:01:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 6, + "열번": 7903, + "역명": "장림", + "시간": "05:23:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2008, + "역명": "장림", + "시간": "05:50:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1027, + "역명": "장림", + "시간": "08:18:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2060, + "역명": "장림", + "시간": "08:47:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1091, + "역명": "장림", + "시간": "11:15:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2118, + "역명": "장림", + "시간": "11:41:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1149, + "역명": "장림", + "시간": "14:09:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2176, + "역명": "장림", + "시간": "14:35:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1207, + "역명": "장림", + "시간": "17:03:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2236, + "역명": "장림", + "시간": "17:28:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1259, + "역명": "장림", + "시간": "19:56:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2282, + "역명": "장림", + "시간": "20:21:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1299, + "역명": "장림", + "시간": "22:49:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 6, + "열번": 2318, + "역명": "장림", + "시간": "23:18:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1001, + "역명": "장림", + "시간": "06:20:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2018, + "역명": "장림", + "시간": "06:46:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1051, + "역명": "장림", + "시간": "09:18:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2080, + "역명": "장림", + "시간": "09:47:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1111, + "역명": "장림", + "시간": "12:15:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2138, + "역명": "장림", + "시간": "12:41:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1169, + "역명": "장림", + "시간": "15:09:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2196, + "역명": "장림", + "시간": "15:35:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1227, + "역명": "장림", + "시간": "18:03:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2254, + "역명": "장림", + "시간": "18:29:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1275, + "역명": "장림", + "시간": "21:00:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 7, + "열번": 2298, + "역명": "장림", + "시간": "21:27:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 8, + "열번": 7905, + "역명": "장림", + "시간": "05:35:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2010, + "역명": "장림", + "시간": "06:02:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1033, + "역명": "장림", + "시간": "08:33:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2064, + "역명": "장림", + "시간": "08:59:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1095, + "역명": "장림", + "시간": "11:27:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2122, + "역명": "장림", + "시간": "11:53:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1153, + "역명": "장림", + "시간": "14:21:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2180, + "역명": "장림", + "시간": "14:47:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1211, + "역명": "장림", + "시간": "17:15:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2240, + "역명": "장림", + "시간": "17:40:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1263, + "역명": "장림", + "시간": "20:12:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2286, + "역명": "장림", + "시간": "20:37:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1303, + "역명": "장림", + "시간": "23:09:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 9, + "열번": 1003, + "역명": "장림", + "시간": "06:27:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2020, + "역명": "장림", + "시간": "06:55:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1053, + "역명": "장림", + "시간": "09:23:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2082, + "역명": "장림", + "시간": "09:53:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1113, + "역명": "장림", + "시간": "12:21:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2140, + "역명": "장림", + "시간": "12:47:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1171, + "역명": "장림", + "시간": "15:15:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2198, + "역명": "장림", + "시간": "15:41:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1229, + "역명": "장림", + "시간": "18:09:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2256, + "역명": "장림", + "시간": "18:37:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1277, + "역명": "장림", + "시간": "21:08:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2300, + "역명": "장림", + "시간": "21:37:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1313, + "역명": "장림", + "시간": "00:03:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 10, + "열번": 7909, + "역명": "장림", + "시간": "05:59:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2014, + "역명": "장림", + "시간": "06:26:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1043, + "역명": "장림", + "시간": "08:58:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2072, + "역명": "장림", + "시간": "09:23:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1103, + "역명": "장림", + "시간": "11:51:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2130, + "역명": "장림", + "시간": "12:17:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1161, + "역명": "장림", + "시간": "14:45:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2188, + "역명": "장림", + "시간": "15:11:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1219, + "역명": "장림", + "시간": "17:39:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2248, + "역명": "장림", + "시간": "18:08:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1269, + "역명": "장림", + "시간": "20:36:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2292, + "역명": "장림", + "시간": "21:01:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1307, + "역명": "장림", + "시간": "23:29:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 11, + "열번": 2022, + "역명": "장림", + "시간": "07:01:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 12, + "열번": 7911, + "역명": "장림", + "시간": "06:10:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2016, + "역명": "장림", + "시간": "06:37:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1047, + "역명": "장림", + "시간": "09:08:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2076, + "역명": "장림", + "시간": "09:35:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1107, + "역명": "장림", + "시간": "12:03:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2134, + "역명": "장림", + "시간": "12:29:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1165, + "역명": "장림", + "시간": "14:57:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "장림", + "시간": "15:23:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1223, + "역명": "장림", + "시간": "17:51:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2252, + "역명": "장림", + "시간": "18:22:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1273, + "역명": "장림", + "시간": "20:52:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2296, + "역명": "장림", + "시간": "21:17:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1311, + "역명": "장림", + "시간": "23:51:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1005, + "역명": "장림", + "시간": "06:38:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2024, + "역명": "장림", + "시간": "07:07:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1057, + "역명": "장림", + "시간": "09:33:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2086, + "역명": "장림", + "시간": "10:05:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1117, + "역명": "장림", + "시간": "12:33:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2144, + "역명": "장림", + "시간": "12:59:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1175, + "역명": "장림", + "시간": "15:27:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2202, + "역명": "장림", + "시간": "15:53:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1233, + "역명": "장림", + "시간": "18:22:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2260, + "역명": "장림", + "시간": "18:53:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1281, + "역명": "장림", + "시간": "21:24:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2304, + "역명": "장림", + "시간": "21:57:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 13, + "열번": 1317, + "역명": "장림", + "시간": "00:27:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 14, + "열번": 7913, + "역명": "장림", + "시간": "06:46:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2026, + "역명": "장림", + "시간": "07:12:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 14, + "열번": 1059, + "역명": "장림", + "시간": "09:39:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1009, + "역명": "장림", + "시간": "07:00:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2032, + "역명": "장림", + "시간": "07:27:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1065, + "역명": "장림", + "시간": "09:57:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2092, + "역명": "장림", + "시간": "10:23:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1123, + "역명": "장림", + "시간": "12:51:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2150, + "역명": "장림", + "시간": "13:17:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1181, + "역명": "장림", + "시간": "15:45:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2208, + "역명": "장림", + "시간": "16:09:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 16, + "열번": 1007, + "역명": "장림", + "시간": "06:49:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2028, + "역명": "장림", + "시간": "07:17:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1061, + "역명": "장림", + "시간": "09:45:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2088, + "역명": "장림", + "시간": "10:11:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1119, + "역명": "장림", + "시간": "12:39:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2146, + "역명": "장림", + "시간": "13:05:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1177, + "역명": "장림", + "시간": "15:33:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2204, + "역명": "장림", + "시간": "15:58:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1235, + "역명": "장림", + "시간": "18:29:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 17, + "열번": 1011, + "역명": "장림", + "시간": "07:11:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2036, + "역명": "장림", + "시간": "07:37:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1069, + "역명": "장림", + "시간": "10:09:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2096, + "역명": "장림", + "시간": "10:35:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1127, + "역명": "장림", + "시간": "13:03:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2154, + "역명": "장림", + "시간": "13:29:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1185, + "역명": "장림", + "시간": "15:57:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2214, + "역명": "장림", + "시간": "16:26:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1243, + "역명": "장림", + "시간": "18:57:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2268, + "역명": "장림", + "시간": "19:25:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1289, + "역명": "장림", + "시간": "21:59:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2310, + "역명": "장림", + "시간": "22:29:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 18, + "열번": 7915, + "역명": "장림", + "시간": "06:57:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2030, + "역명": "장림", + "시간": "07:22:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1063, + "역명": "장림", + "시간": "09:51:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2090, + "역명": "장림", + "시간": "10:17:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1121, + "역명": "장림", + "시간": "12:45:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2148, + "역명": "장림", + "시간": "13:11:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1179, + "역명": "장림", + "시간": "15:39:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2206, + "역명": "장림", + "시간": "16:04:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1237, + "역명": "장림", + "시간": "18:36:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2262, + "역명": "장림", + "시간": "19:01:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1283, + "역명": "장림", + "시간": "21:32:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2038, + "역명": "장림", + "시간": "07:42:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 20, + "열번": 7917, + "역명": "장림", + "시간": "07:06:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2034, + "역명": "장림", + "시간": "07:32:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1067, + "역명": "장림", + "시간": "10:03:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2094, + "역명": "장림", + "시간": "10:29:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1125, + "역명": "장림", + "시간": "12:57:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2152, + "역명": "장림", + "시간": "13:23:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1183, + "역명": "장림", + "시간": "15:51:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2212, + "역명": "장림", + "시간": "16:20:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1241, + "역명": "장림", + "시간": "18:50:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2266, + "역명": "장림", + "시간": "19:17:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1287, + "역명": "장림", + "시간": "21:49:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 20, + "열번": 2308, + "역명": "장림", + "시간": "22:17:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 21, + "열번": 7919, + "역명": "장림", + "시간": "07:18:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2040, + "역명": "장림", + "시간": "07:47:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1071, + "역명": "장림", + "시간": "10:15:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2098, + "역명": "장림", + "시간": "10:41:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1129, + "역명": "장림", + "시간": "13:09:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2156, + "역명": "장림", + "시간": "13:35:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1187, + "역명": "장림", + "시간": "16:03:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2216, + "역명": "장림", + "시간": "16:31:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 22, + "열번": 7921, + "역명": "장림", + "시간": "07:28:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2044, + "역명": "장림", + "시간": "07:59:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1075, + "역명": "장림", + "시간": "10:27:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2102, + "역명": "장림", + "시간": "10:53:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1133, + "역명": "장림", + "시간": "13:21:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2160, + "역명": "장림", + "시간": "13:47:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1191, + "역명": "장림", + "시간": "16:15:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2220, + "역명": "장림", + "시간": "16:42:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1247, + "역명": "장림", + "시간": "19:11:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2272, + "역명": "장림", + "시간": "19:41:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1291, + "역명": "장림", + "시간": "22:09:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 22, + "열번": 2312, + "역명": "장림", + "시간": "22:41:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 23, + "열번": 1013, + "역명": "장림", + "시간": "07:22:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2042, + "역명": "장림", + "시간": "07:53:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1073, + "역명": "장림", + "시간": "10:21:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2100, + "역명": "장림", + "시간": "10:47:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1131, + "역명": "장림", + "시간": "13:15:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2158, + "역명": "장림", + "시간": "13:41:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1189, + "역명": "장림", + "시간": "16:09:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2218, + "역명": "장림", + "시간": "16:37:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1245, + "역명": "장림", + "시간": "19:04:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2270, + "역명": "장림", + "시간": "19:33:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 24, + "열번": 7923, + "역명": "장림", + "시간": "07:38:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "장림", + "시간": "08:11:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1079, + "역명": "장림", + "시간": "10:39:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2106, + "역명": "장림", + "시간": "11:05:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1137, + "역명": "장림", + "시간": "13:33:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2164, + "역명": "장림", + "시간": "13:59:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1195, + "역명": "장림", + "시간": "16:27:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2224, + "역명": "장림", + "시간": "16:53:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1251, + "역명": "장림", + "시간": "19:25:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "장림", + "시간": "07:50:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2052, + "역명": "장림", + "시간": "08:23:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1083, + "역명": "장림", + "시간": "10:51:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2110, + "역명": "장림", + "시간": "11:17:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1141, + "역명": "장림", + "시간": "13:45:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2168, + "역명": "장림", + "시간": "14:11:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1199, + "역명": "장림", + "시간": "16:39:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2228, + "역명": "장림", + "시간": "17:04:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1253, + "역명": "장림", + "시간": "19:32:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2276, + "역명": "장림", + "시간": "19:57:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1295, + "역명": "장림", + "시간": "22:29:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2314, + "역명": "장림", + "시간": "22:53:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 26, + "열번": 1029, + "역명": "장림", + "시간": "08:23:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1025, + "역명": "장림", + "시간": "08:13:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2058, + "역명": "장림", + "시간": "08:41:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1089, + "역명": "장림", + "시간": "11:09:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2116, + "역명": "장림", + "시간": "11:35:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1147, + "역명": "장림", + "시간": "14:03:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2174, + "역명": "장림", + "시간": "14:29:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1205, + "역명": "장림", + "시간": "16:57:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 27, + "열번": 2234, + "역명": "장림", + "시간": "17:22:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 28, + "열번": 1041, + "역명": "장림", + "시간": "08:53:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1031, + "역명": "장림", + "시간": "08:28:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2062, + "역명": "장림", + "시간": "08:53:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1093, + "역명": "장림", + "시간": "11:21:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2120, + "역명": "장림", + "시간": "11:47:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1151, + "역명": "장림", + "시간": "14:15:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2178, + "역명": "장림", + "시간": "14:41:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1209, + "역명": "장림", + "시간": "17:09:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2238, + "역명": "장림", + "시간": "17:34:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1261, + "역명": "장림", + "시간": "20:04:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2284, + "역명": "장림", + "시간": "20:29:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 29, + "열번": 1301, + "역명": "장림", + "시간": "22:59:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1049, + "역명": "장림", + "시간": "09:13:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2078, + "역명": "장림", + "시간": "09:41:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1109, + "역명": "장림", + "시간": "12:09:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2136, + "역명": "장림", + "시간": "12:35:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1167, + "역명": "장림", + "시간": "15:03:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2194, + "역명": "장림", + "시간": "15:29:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1225, + "역명": "장림", + "시간": "17:57:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1035, + "역명": "장림", + "시간": "08:38:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2066, + "역명": "장림", + "시간": "09:05:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1097, + "역명": "장림", + "시간": "11:33:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2124, + "역명": "장림", + "시간": "11:59:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1155, + "역명": "장림", + "시간": "14:27:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2182, + "역명": "장림", + "시간": "14:53:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1213, + "역명": "장림", + "시간": "17:21:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2242, + "역명": "장림", + "시간": "17:47:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1265, + "역명": "장림", + "시간": "20:20:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2288, + "역명": "장림", + "시간": "20:45:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1305, + "역명": "장림", + "시간": "23:19:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 32, + "열번": 2210, + "역명": "장림", + "시간": "16:15:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 32, + "열번": 1239, + "역명": "장림", + "시간": "18:43:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 32, + "열번": 2264, + "역명": "장림", + "시간": "19:09:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 32, + "열번": 1285, + "역명": "장림", + "시간": "21:40:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 32, + "열번": 2306, + "역명": "장림", + "시간": "22:07:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1037, + "역명": "장림", + "시간": "08:43:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2068, + "역명": "장림", + "시간": "09:11:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1099, + "역명": "장림", + "시간": "11:39:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2126, + "역명": "장림", + "시간": "12:05:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1157, + "역명": "장림", + "시간": "14:33:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2184, + "역명": "장림", + "시간": "14:59:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1215, + "역명": "장림", + "시간": "17:27:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2244, + "역명": "장림", + "시간": "17:54:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1267, + "역명": "장림", + "시간": "20:28:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 33, + "열번": 2290, + "역명": "장림", + "시간": "20:53:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1045, + "역명": "장림", + "시간": "09:03:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2074, + "역명": "장림", + "시간": "09:29:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1105, + "역명": "장림", + "시간": "11:57:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2132, + "역명": "장림", + "시간": "12:23:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1163, + "역명": "장림", + "시간": "14:51:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2190, + "역명": "장림", + "시간": "15:17:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1221, + "역명": "장림", + "시간": "17:45:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2250, + "역명": "장림", + "시간": "18:15:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1271, + "역명": "장림", + "시간": "20:44:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2294, + "역명": "장림", + "시간": "21:09:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1309, + "역명": "장림", + "시간": "23:40:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1055, + "역명": "장림", + "시간": "09:28:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2084, + "역명": "장림", + "시간": "09:59:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1115, + "역명": "장림", + "시간": "12:27:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2142, + "역명": "장림", + "시간": "12:53:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1173, + "역명": "장림", + "시간": "15:21:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2200, + "역명": "장림", + "시간": "15:47:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1231, + "역명": "장림", + "시간": "18:15:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2258, + "역명": "장림", + "시간": "18:45:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1279, + "역명": "장림", + "시간": "21:16:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2302, + "역명": "장림", + "시간": "21:47:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1315, + "역명": "장림", + "시간": "00:15:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "신장림", + "시간": "05:11:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "신장림", + "시간": "07:43:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2050, + "역명": "신장림", + "시간": "08:15:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1081, + "역명": "신장림", + "시간": "10:47:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2108, + "역명": "신장림", + "시간": "11:09:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1139, + "역명": "신장림", + "시간": "13:41:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2166, + "역명": "신장림", + "시간": "14:03:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1197, + "역명": "신장림", + "시간": "16:35:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2226, + "역명": "신장림", + "시간": "16:57:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "신장림", + "시간": "07:34:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "신장림", + "시간": "08:03:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1077, + "역명": "신장림", + "시간": "10:35:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2104, + "역명": "신장림", + "시간": "10:57:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1135, + "역명": "신장림", + "시간": "13:29:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2162, + "역명": "신장림", + "시간": "13:51:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1193, + "역명": "신장림", + "시간": "16:23:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2222, + "역명": "신장림", + "시간": "16:46:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1249, + "역명": "신장림", + "시간": "19:20:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2274, + "역명": "신장림", + "시간": "19:47:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1293, + "역명": "신장림", + "시간": "22:21:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "신장림", + "시간": "05:24:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "신장림", + "시간": "08:01:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2054, + "역명": "신장림", + "시간": "08:27:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1085, + "역명": "신장림", + "시간": "10:59:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2112, + "역명": "신장림", + "시간": "11:21:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1143, + "역명": "신장림", + "시간": "13:53:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2170, + "역명": "신장림", + "시간": "14:15:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1201, + "역명": "신장림", + "시간": "16:47:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2230, + "역명": "신장림", + "시간": "17:08:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1255, + "역명": "신장림", + "시간": "19:42:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2278, + "역명": "신장림", + "시간": "20:03:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 4, + "열번": 7901, + "역명": "신장림", + "시간": "05:12:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "신장림", + "시간": "05:37:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1023, + "역명": "신장림", + "시간": "08:08:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2056, + "역명": "신장림", + "시간": "08:33:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1087, + "역명": "신장림", + "시간": "11:05:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2114, + "역명": "신장림", + "시간": "11:27:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1145, + "역명": "신장림", + "시간": "13:59:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2172, + "역명": "신장림", + "시간": "14:21:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1203, + "역명": "신장림", + "시간": "16:53:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2232, + "역명": "신장림", + "시간": "17:14:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1257, + "역명": "신장림", + "시간": "19:50:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2280, + "역명": "신장림", + "시간": "20:11:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1297, + "역명": "신장림", + "시간": "22:41:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2316, + "역명": "신장림", + "시간": "23:01:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 5, + "열번": 7907, + "역명": "신장림", + "시간": "05:48:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2012, + "역명": "신장림", + "시간": "06:13:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1039, + "역명": "신장림", + "시간": "08:50:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2070, + "역명": "신장림", + "시간": "09:15:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1101, + "역명": "신장림", + "시간": "11:47:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2128, + "역명": "신장림", + "시간": "12:09:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1159, + "역명": "신장림", + "시간": "14:41:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2186, + "역명": "신장림", + "시간": "15:03:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1217, + "역명": "신장림", + "시간": "17:35:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2246, + "역명": "신장림", + "시간": "17:59:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 6, + "열번": 7903, + "역명": "신장림", + "시간": "05:24:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2008, + "역명": "신장림", + "시간": "05:49:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1027, + "역명": "신장림", + "시간": "08:20:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2060, + "역명": "신장림", + "시간": "08:45:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1091, + "역명": "신장림", + "시간": "11:17:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2118, + "역명": "신장림", + "시간": "11:39:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1149, + "역명": "신장림", + "시간": "14:11:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2176, + "역명": "신장림", + "시간": "14:33:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1207, + "역명": "신장림", + "시간": "17:05:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2236, + "역명": "신장림", + "시간": "17:26:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1259, + "역명": "신장림", + "시간": "19:58:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2282, + "역명": "신장림", + "시간": "20:19:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1299, + "역명": "신장림", + "시간": "22:51:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 6, + "열번": 2318, + "역명": "신장림", + "시간": "23:17:25", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1001, + "역명": "신장림", + "시간": "06:21:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2018, + "역명": "신장림", + "시간": "06:45:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1051, + "역명": "신장림", + "시간": "09:20:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2080, + "역명": "신장림", + "시간": "09:45:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1111, + "역명": "신장림", + "시간": "12:17:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2138, + "역명": "신장림", + "시간": "12:39:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1169, + "역명": "신장림", + "시간": "15:11:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2196, + "역명": "신장림", + "시간": "15:33:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1227, + "역명": "신장림", + "시간": "18:05:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2254, + "역명": "신장림", + "시간": "18:27:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1275, + "역명": "신장림", + "시간": "21:02:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 7, + "열번": 2298, + "역명": "신장림", + "시간": "21:25:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 8, + "열번": 7905, + "역명": "신장림", + "시간": "05:36:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2010, + "역명": "신장림", + "시간": "06:01:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1033, + "역명": "신장림", + "시간": "08:35:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2064, + "역명": "신장림", + "시간": "08:57:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1095, + "역명": "신장림", + "시간": "11:29:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2122, + "역명": "신장림", + "시간": "11:51:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1153, + "역명": "신장림", + "시간": "14:23:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2180, + "역명": "신장림", + "시간": "14:45:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1211, + "역명": "신장림", + "시간": "17:17:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2240, + "역명": "신장림", + "시간": "17:38:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1263, + "역명": "신장림", + "시간": "20:14:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2286, + "역명": "신장림", + "시간": "20:35:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1303, + "역명": "신장림", + "시간": "23:11:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 9, + "열번": 1003, + "역명": "신장림", + "시간": "06:29:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2020, + "역명": "신장림", + "시간": "06:53:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1053, + "역명": "신장림", + "시간": "09:25:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2082, + "역명": "신장림", + "시간": "09:51:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1113, + "역명": "신장림", + "시간": "12:23:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2140, + "역명": "신장림", + "시간": "12:45:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1171, + "역명": "신장림", + "시간": "15:17:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2198, + "역명": "신장림", + "시간": "15:39:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1229, + "역명": "신장림", + "시간": "18:11:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2256, + "역명": "신장림", + "시간": "18:35:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1277, + "역명": "신장림", + "시간": "21:10:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2300, + "역명": "신장림", + "시간": "21:35:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1313, + "역명": "신장림", + "시간": "00:05:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 10, + "열번": 7909, + "역명": "신장림", + "시간": "06:00:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2014, + "역명": "신장림", + "시간": "06:25:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1043, + "역명": "신장림", + "시간": "09:00:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2072, + "역명": "신장림", + "시간": "09:21:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1103, + "역명": "신장림", + "시간": "11:53:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2130, + "역명": "신장림", + "시간": "12:15:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1161, + "역명": "신장림", + "시간": "14:47:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2188, + "역명": "신장림", + "시간": "15:09:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1219, + "역명": "신장림", + "시간": "17:41:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2248, + "역명": "신장림", + "시간": "18:06:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1269, + "역명": "신장림", + "시간": "20:38:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2292, + "역명": "신장림", + "시간": "20:59:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1307, + "역명": "신장림", + "시간": "23:31:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 11, + "열번": 2022, + "역명": "신장림", + "시간": "06:59:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 12, + "열번": 7911, + "역명": "신장림", + "시간": "06:11:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2016, + "역명": "신장림", + "시간": "06:36:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1047, + "역명": "신장림", + "시간": "09:10:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2076, + "역명": "신장림", + "시간": "09:33:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1107, + "역명": "신장림", + "시간": "12:05:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2134, + "역명": "신장림", + "시간": "12:27:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1165, + "역명": "신장림", + "시간": "14:59:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "신장림", + "시간": "15:21:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1223, + "역명": "신장림", + "시간": "17:53:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2252, + "역명": "신장림", + "시간": "18:20:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1273, + "역명": "신장림", + "시간": "20:54:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2296, + "역명": "신장림", + "시간": "21:15:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1311, + "역명": "신장림", + "시간": "23:53:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1005, + "역명": "신장림", + "시간": "06:40:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2024, + "역명": "신장림", + "시간": "07:05:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1057, + "역명": "신장림", + "시간": "09:35:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2086, + "역명": "신장림", + "시간": "10:03:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1117, + "역명": "신장림", + "시간": "12:35:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2144, + "역명": "신장림", + "시간": "12:57:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1175, + "역명": "신장림", + "시간": "15:29:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2202, + "역명": "신장림", + "시간": "15:51:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1233, + "역명": "신장림", + "시간": "18:24:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2260, + "역명": "신장림", + "시간": "18:51:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1281, + "역명": "신장림", + "시간": "21:26:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2304, + "역명": "신장림", + "시간": "21:55:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 13, + "열번": 1317, + "역명": "신장림", + "시간": "00:28:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 14, + "열번": 7913, + "역명": "신장림", + "시간": "06:47:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2026, + "역명": "신장림", + "시간": "07:10:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 14, + "열번": 1059, + "역명": "신장림", + "시간": "09:41:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1009, + "역명": "신장림", + "시간": "07:02:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2032, + "역명": "신장림", + "시간": "07:25:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1065, + "역명": "신장림", + "시간": "09:59:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2092, + "역명": "신장림", + "시간": "10:21:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1123, + "역명": "신장림", + "시간": "12:53:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2150, + "역명": "신장림", + "시간": "13:15:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1181, + "역명": "신장림", + "시간": "15:47:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2208, + "역명": "신장림", + "시간": "16:08:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 16, + "열번": 1007, + "역명": "신장림", + "시간": "06:51:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2028, + "역명": "신장림", + "시간": "07:15:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1061, + "역명": "신장림", + "시간": "09:47:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2088, + "역명": "신장림", + "시간": "10:09:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1119, + "역명": "신장림", + "시간": "12:41:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2146, + "역명": "신장림", + "시간": "13:03:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1177, + "역명": "신장림", + "시간": "15:35:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2204, + "역명": "신장림", + "시간": "15:57:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1235, + "역명": "신장림", + "시간": "18:31:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 17, + "열번": 1011, + "역명": "신장림", + "시간": "07:13:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2036, + "역명": "신장림", + "시간": "07:35:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1069, + "역명": "신장림", + "시간": "10:11:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2096, + "역명": "신장림", + "시간": "10:33:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1127, + "역명": "신장림", + "시간": "13:05:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2154, + "역명": "신장림", + "시간": "13:27:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1185, + "역명": "신장림", + "시간": "15:59:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2214, + "역명": "신장림", + "시간": "16:24:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1243, + "역명": "신장림", + "시간": "18:59:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2268, + "역명": "신장림", + "시간": "19:23:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1289, + "역명": "신장림", + "시간": "22:01:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2310, + "역명": "신장림", + "시간": "22:27:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 18, + "열번": 7915, + "역명": "신장림", + "시간": "06:58:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2030, + "역명": "신장림", + "시간": "07:20:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1063, + "역명": "신장림", + "시간": "09:53:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2090, + "역명": "신장림", + "시간": "10:15:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1121, + "역명": "신장림", + "시간": "12:47:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2148, + "역명": "신장림", + "시간": "13:09:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1179, + "역명": "신장림", + "시간": "15:41:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2206, + "역명": "신장림", + "시간": "16:02:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1237, + "역명": "신장림", + "시간": "18:38:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2262, + "역명": "신장림", + "시간": "18:59:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1283, + "역명": "신장림", + "시간": "21:34:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2038, + "역명": "신장림", + "시간": "07:40:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 20, + "열번": 7917, + "역명": "신장림", + "시간": "07:08:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2034, + "역명": "신장림", + "시간": "07:30:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1067, + "역명": "신장림", + "시간": "10:05:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2094, + "역명": "신장림", + "시간": "10:27:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1125, + "역명": "신장림", + "시간": "12:59:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2152, + "역명": "신장림", + "시간": "13:21:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1183, + "역명": "신장림", + "시간": "15:53:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2212, + "역명": "신장림", + "시간": "16:19:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1241, + "역명": "신장림", + "시간": "18:52:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2266, + "역명": "신장림", + "시간": "19:15:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1287, + "역명": "신장림", + "시간": "21:51:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 20, + "열번": 2308, + "역명": "신장림", + "시간": "22:15:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 21, + "열번": 7919, + "역명": "신장림", + "시간": "07:19:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2040, + "역명": "신장림", + "시간": "07:45:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1071, + "역명": "신장림", + "시간": "10:17:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2098, + "역명": "신장림", + "시간": "10:39:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1129, + "역명": "신장림", + "시간": "13:11:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2156, + "역명": "신장림", + "시간": "13:33:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1187, + "역명": "신장림", + "시간": "16:05:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2216, + "역명": "신장림", + "시간": "16:30:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 22, + "열번": 7921, + "역명": "신장림", + "시간": "07:30:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2044, + "역명": "신장림", + "시간": "07:57:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1075, + "역명": "신장림", + "시간": "10:29:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2102, + "역명": "신장림", + "시간": "10:51:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1133, + "역명": "신장림", + "시간": "13:23:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2160, + "역명": "신장림", + "시간": "13:45:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1191, + "역명": "신장림", + "시간": "16:17:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2220, + "역명": "신장림", + "시간": "16:41:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1247, + "역명": "신장림", + "시간": "19:13:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2272, + "역명": "신장림", + "시간": "19:39:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1291, + "역명": "신장림", + "시간": "22:11:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 22, + "열번": 2312, + "역명": "신장림", + "시간": "22:39:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 23, + "열번": 1013, + "역명": "신장림", + "시간": "07:24:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2042, + "역명": "신장림", + "시간": "07:51:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1073, + "역명": "신장림", + "시간": "10:23:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2100, + "역명": "신장림", + "시간": "10:45:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1131, + "역명": "신장림", + "시간": "13:17:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2158, + "역명": "신장림", + "시간": "13:39:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1189, + "역명": "신장림", + "시간": "16:11:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2218, + "역명": "신장림", + "시간": "16:35:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1245, + "역명": "신장림", + "시간": "19:06:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2270, + "역명": "신장림", + "시간": "19:31:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 24, + "열번": 7923, + "역명": "신장림", + "시간": "07:40:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "신장림", + "시간": "08:09:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1079, + "역명": "신장림", + "시간": "10:41:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2106, + "역명": "신장림", + "시간": "11:03:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1137, + "역명": "신장림", + "시간": "13:35:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2164, + "역명": "신장림", + "시간": "13:57:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1195, + "역명": "신장림", + "시간": "16:29:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2224, + "역명": "신장림", + "시간": "16:52:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1251, + "역명": "신장림", + "시간": "19:27:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "신장림", + "시간": "07:52:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2052, + "역명": "신장림", + "시간": "08:21:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1083, + "역명": "신장림", + "시간": "10:53:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2110, + "역명": "신장림", + "시간": "11:15:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1141, + "역명": "신장림", + "시간": "13:47:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2168, + "역명": "신장림", + "시간": "14:09:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1199, + "역명": "신장림", + "시간": "16:41:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2228, + "역명": "신장림", + "시간": "17:03:05", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1253, + "역명": "신장림", + "시간": "19:34:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2276, + "역명": "신장림", + "시간": "19:55:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1295, + "역명": "신장림", + "시간": "22:31:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2314, + "역명": "신장림", + "시간": "22:51:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 26, + "열번": 1029, + "역명": "신장림", + "시간": "08:25:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1025, + "역명": "신장림", + "시간": "08:15:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2058, + "역명": "신장림", + "시간": "08:39:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1089, + "역명": "신장림", + "시간": "11:11:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2116, + "역명": "신장림", + "시간": "11:33:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1147, + "역명": "신장림", + "시간": "14:05:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2174, + "역명": "신장림", + "시간": "14:27:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1205, + "역명": "신장림", + "시간": "16:59:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 27, + "열번": 2234, + "역명": "신장림", + "시간": "17:20:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 28, + "열번": 1041, + "역명": "신장림", + "시간": "08:55:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1031, + "역명": "신장림", + "시간": "08:30:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2062, + "역명": "신장림", + "시간": "08:51:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1093, + "역명": "신장림", + "시간": "11:23:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2120, + "역명": "신장림", + "시간": "11:45:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1151, + "역명": "신장림", + "시간": "14:17:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2178, + "역명": "신장림", + "시간": "14:39:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1209, + "역명": "신장림", + "시간": "17:11:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2238, + "역명": "신장림", + "시간": "17:32:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1261, + "역명": "신장림", + "시간": "20:06:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2284, + "역명": "신장림", + "시간": "20:27:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 29, + "열번": 1301, + "역명": "신장림", + "시간": "23:01:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1049, + "역명": "신장림", + "시간": "09:15:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2078, + "역명": "신장림", + "시간": "09:39:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1109, + "역명": "신장림", + "시간": "12:11:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2136, + "역명": "신장림", + "시간": "12:33:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1167, + "역명": "신장림", + "시간": "15:05:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2194, + "역명": "신장림", + "시간": "15:27:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1225, + "역명": "신장림", + "시간": "17:59:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1035, + "역명": "신장림", + "시간": "08:40:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2066, + "역명": "신장림", + "시간": "09:03:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1097, + "역명": "신장림", + "시간": "11:35:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2124, + "역명": "신장림", + "시간": "11:57:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1155, + "역명": "신장림", + "시간": "14:29:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2182, + "역명": "신장림", + "시간": "14:51:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1213, + "역명": "신장림", + "시간": "17:23:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2242, + "역명": "신장림", + "시간": "17:45:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1265, + "역명": "신장림", + "시간": "20:22:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2288, + "역명": "신장림", + "시간": "20:43:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1305, + "역명": "신장림", + "시간": "23:21:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 32, + "열번": 2210, + "역명": "신장림", + "시간": "16:13:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 32, + "열번": 1239, + "역명": "신장림", + "시간": "18:45:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 32, + "열번": 2264, + "역명": "신장림", + "시간": "19:07:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 32, + "열번": 1285, + "역명": "신장림", + "시간": "21:42:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 32, + "열번": 2306, + "역명": "신장림", + "시간": "22:05:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1037, + "역명": "신장림", + "시간": "08:45:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2068, + "역명": "신장림", + "시간": "09:09:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1099, + "역명": "신장림", + "시간": "11:41:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2126, + "역명": "신장림", + "시간": "12:03:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1157, + "역명": "신장림", + "시간": "14:35:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2184, + "역명": "신장림", + "시간": "14:57:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1215, + "역명": "신장림", + "시간": "17:29:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2244, + "역명": "신장림", + "시간": "17:52:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1267, + "역명": "신장림", + "시간": "20:30:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 33, + "열번": 2290, + "역명": "신장림", + "시간": "20:51:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1045, + "역명": "신장림", + "시간": "09:05:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2074, + "역명": "신장림", + "시간": "09:27:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1105, + "역명": "신장림", + "시간": "11:59:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2132, + "역명": "신장림", + "시간": "12:21:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1163, + "역명": "신장림", + "시간": "14:53:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2190, + "역명": "신장림", + "시간": "15:15:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1221, + "역명": "신장림", + "시간": "17:47:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2250, + "역명": "신장림", + "시간": "18:13:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1271, + "역명": "신장림", + "시간": "20:46:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2294, + "역명": "신장림", + "시간": "21:07:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1309, + "역명": "신장림", + "시간": "23:42:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1055, + "역명": "신장림", + "시간": "09:30:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2084, + "역명": "신장림", + "시간": "09:57:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1115, + "역명": "신장림", + "시간": "12:29:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2142, + "역명": "신장림", + "시간": "12:51:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1173, + "역명": "신장림", + "시간": "15:23:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2200, + "역명": "신장림", + "시간": "15:45:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1231, + "역명": "신장림", + "시간": "18:17:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2258, + "역명": "신장림", + "시간": "18:43:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1279, + "역명": "신장림", + "시간": "21:18:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2302, + "역명": "신장림", + "시간": "21:45:35", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1315, + "역명": "신장림", + "시간": "00:17:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "낫개", + "시간": "05:08:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "낫개", + "시간": "07:45:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2050, + "역명": "낫개", + "시간": "08:13:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1081, + "역명": "낫개", + "시간": "10:49:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2108, + "역명": "낫개", + "시간": "11:07:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1139, + "역명": "낫개", + "시간": "13:43:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2166, + "역명": "낫개", + "시간": "14:01:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1197, + "역명": "낫개", + "시간": "16:37:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2226, + "역명": "낫개", + "시간": "16:55:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "낫개", + "시간": "07:36:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "낫개", + "시간": "08:01:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1077, + "역명": "낫개", + "시간": "10:37:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2104, + "역명": "낫개", + "시간": "10:55:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1135, + "역명": "낫개", + "시간": "13:31:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2162, + "역명": "낫개", + "시간": "13:49:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1193, + "역명": "낫개", + "시간": "16:25:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2222, + "역명": "낫개", + "시간": "16:44:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1249, + "역명": "낫개", + "시간": "19:22:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2274, + "역명": "낫개", + "시간": "19:45:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1293, + "역명": "낫개", + "시간": "22:23:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "낫개", + "시간": "05:22:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "낫개", + "시간": "08:03:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2054, + "역명": "낫개", + "시간": "08:25:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1085, + "역명": "낫개", + "시간": "11:01:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2112, + "역명": "낫개", + "시간": "11:19:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1143, + "역명": "낫개", + "시간": "13:55:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2170, + "역명": "낫개", + "시간": "14:13:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1201, + "역명": "낫개", + "시간": "16:49:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2230, + "역명": "낫개", + "시간": "17:06:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1255, + "역명": "낫개", + "시간": "19:44:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2278, + "역명": "낫개", + "시간": "20:01:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 4, + "열번": 7901, + "역명": "낫개", + "시간": "05:14:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "낫개", + "시간": "05:34:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1023, + "역명": "낫개", + "시간": "08:10:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2056, + "역명": "낫개", + "시간": "08:31:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1087, + "역명": "낫개", + "시간": "11:07:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2114, + "역명": "낫개", + "시간": "11:25:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1145, + "역명": "낫개", + "시간": "14:01:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2172, + "역명": "낫개", + "시간": "14:19:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1203, + "역명": "낫개", + "시간": "16:55:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2232, + "역명": "낫개", + "시간": "17:12:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1257, + "역명": "낫개", + "시간": "19:52:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2280, + "역명": "낫개", + "시간": "20:09:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1297, + "역명": "낫개", + "시간": "22:43:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2316, + "역명": "낫개", + "시간": "22:59:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 5, + "열번": 7907, + "역명": "낫개", + "시간": "05:50:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2012, + "역명": "낫개", + "시간": "06:10:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1039, + "역명": "낫개", + "시간": "08:52:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2070, + "역명": "낫개", + "시간": "09:13:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1101, + "역명": "낫개", + "시간": "11:49:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2128, + "역명": "낫개", + "시간": "12:07:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1159, + "역명": "낫개", + "시간": "14:43:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2186, + "역명": "낫개", + "시간": "15:01:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1217, + "역명": "낫개", + "시간": "17:37:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2246, + "역명": "낫개", + "시간": "17:57:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 6, + "열번": 7903, + "역명": "낫개", + "시간": "05:26:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2008, + "역명": "낫개", + "시간": "05:46:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1027, + "역명": "낫개", + "시간": "08:22:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2060, + "역명": "낫개", + "시간": "08:43:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1091, + "역명": "낫개", + "시간": "11:19:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2118, + "역명": "낫개", + "시간": "11:37:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1149, + "역명": "낫개", + "시간": "14:13:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2176, + "역명": "낫개", + "시간": "14:31:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1207, + "역명": "낫개", + "시간": "17:07:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2236, + "역명": "낫개", + "시간": "17:24:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1259, + "역명": "낫개", + "시간": "20:00:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2282, + "역명": "낫개", + "시간": "20:17:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1299, + "역명": "낫개", + "시간": "22:53:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 6, + "열번": 2318, + "역명": "낫개", + "시간": "23:15:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1001, + "역명": "낫개", + "시간": "06:23:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2018, + "역명": "낫개", + "시간": "06:42:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1051, + "역명": "낫개", + "시간": "09:22:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2080, + "역명": "낫개", + "시간": "09:43:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1111, + "역명": "낫개", + "시간": "12:19:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2138, + "역명": "낫개", + "시간": "12:37:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1169, + "역명": "낫개", + "시간": "15:13:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2196, + "역명": "낫개", + "시간": "15:31:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1227, + "역명": "낫개", + "시간": "18:07:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2254, + "역명": "낫개", + "시간": "18:25:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1275, + "역명": "낫개", + "시간": "21:04:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 7, + "열번": 2298, + "역명": "낫개", + "시간": "21:23:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 8, + "열번": 7905, + "역명": "낫개", + "시간": "05:38:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2010, + "역명": "낫개", + "시간": "05:58:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1033, + "역명": "낫개", + "시간": "08:37:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2064, + "역명": "낫개", + "시간": "08:55:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1095, + "역명": "낫개", + "시간": "11:31:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2122, + "역명": "낫개", + "시간": "11:49:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1153, + "역명": "낫개", + "시간": "14:25:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2180, + "역명": "낫개", + "시간": "14:43:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1211, + "역명": "낫개", + "시간": "17:19:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2240, + "역명": "낫개", + "시간": "17:36:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1263, + "역명": "낫개", + "시간": "20:16:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2286, + "역명": "낫개", + "시간": "20:33:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1303, + "역명": "낫개", + "시간": "23:13:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 9, + "열번": 1003, + "역명": "낫개", + "시간": "06:31:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2020, + "역명": "낫개", + "시간": "06:51:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1053, + "역명": "낫개", + "시간": "09:27:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2082, + "역명": "낫개", + "시간": "09:49:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1113, + "역명": "낫개", + "시간": "12:25:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2140, + "역명": "낫개", + "시간": "12:43:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1171, + "역명": "낫개", + "시간": "15:19:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2198, + "역명": "낫개", + "시간": "15:37:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1229, + "역명": "낫개", + "시간": "18:13:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2256, + "역명": "낫개", + "시간": "18:33:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1277, + "역명": "낫개", + "시간": "21:12:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2300, + "역명": "낫개", + "시간": "21:33:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1313, + "역명": "낫개", + "시간": "00:07:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 10, + "열번": 7909, + "역명": "낫개", + "시간": "06:02:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2014, + "역명": "낫개", + "시간": "06:22:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1043, + "역명": "낫개", + "시간": "09:02:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2072, + "역명": "낫개", + "시간": "09:19:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1103, + "역명": "낫개", + "시간": "11:55:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2130, + "역명": "낫개", + "시간": "12:13:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1161, + "역명": "낫개", + "시간": "14:49:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2188, + "역명": "낫개", + "시간": "15:07:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1219, + "역명": "낫개", + "시간": "17:43:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2248, + "역명": "낫개", + "시간": "18:04:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1269, + "역명": "낫개", + "시간": "20:40:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2292, + "역명": "낫개", + "시간": "20:57:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1307, + "역명": "낫개", + "시간": "23:33:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 11, + "열번": 2022, + "역명": "낫개", + "시간": "06:57:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 12, + "열번": 7911, + "역명": "낫개", + "시간": "06:13:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2016, + "역명": "낫개", + "시간": "06:33:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1047, + "역명": "낫개", + "시간": "09:12:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2076, + "역명": "낫개", + "시간": "09:31:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1107, + "역명": "낫개", + "시간": "12:07:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2134, + "역명": "낫개", + "시간": "12:25:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1165, + "역명": "낫개", + "시간": "15:01:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "낫개", + "시간": "15:19:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1223, + "역명": "낫개", + "시간": "17:55:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2252, + "역명": "낫개", + "시간": "18:18:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1273, + "역명": "낫개", + "시간": "20:56:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2296, + "역명": "낫개", + "시간": "21:13:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1311, + "역명": "낫개", + "시간": "23:55:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1005, + "역명": "낫개", + "시간": "06:42:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2024, + "역명": "낫개", + "시간": "07:03:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1057, + "역명": "낫개", + "시간": "09:37:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2086, + "역명": "낫개", + "시간": "10:01:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1117, + "역명": "낫개", + "시간": "12:37:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2144, + "역명": "낫개", + "시간": "12:55:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1175, + "역명": "낫개", + "시간": "15:31:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2202, + "역명": "낫개", + "시간": "15:49:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1233, + "역명": "낫개", + "시간": "18:26:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2260, + "역명": "낫개", + "시간": "18:49:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1281, + "역명": "낫개", + "시간": "21:28:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2304, + "역명": "낫개", + "시간": "21:53:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 13, + "열번": 1317, + "역명": "낫개", + "시간": "00:30:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 14, + "열번": 7913, + "역명": "낫개", + "시간": "06:49:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2026, + "역명": "낫개", + "시간": "07:08:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 14, + "열번": 1059, + "역명": "낫개", + "시간": "09:43:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1009, + "역명": "낫개", + "시간": "07:04:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2032, + "역명": "낫개", + "시간": "07:23:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1065, + "역명": "낫개", + "시간": "10:01:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2092, + "역명": "낫개", + "시간": "10:19:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1123, + "역명": "낫개", + "시간": "12:55:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2150, + "역명": "낫개", + "시간": "13:13:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1181, + "역명": "낫개", + "시간": "15:49:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2208, + "역명": "낫개", + "시간": "16:05:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 16, + "열번": 1007, + "역명": "낫개", + "시간": "06:53:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2028, + "역명": "낫개", + "시간": "07:13:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1061, + "역명": "낫개", + "시간": "09:49:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2088, + "역명": "낫개", + "시간": "10:07:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1119, + "역명": "낫개", + "시간": "12:43:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2146, + "역명": "낫개", + "시간": "13:01:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1177, + "역명": "낫개", + "시간": "15:37:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2204, + "역명": "낫개", + "시간": "15:54:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1235, + "역명": "낫개", + "시간": "18:33:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 17, + "열번": 1011, + "역명": "낫개", + "시간": "07:15:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2036, + "역명": "낫개", + "시간": "07:33:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1069, + "역명": "낫개", + "시간": "10:13:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2096, + "역명": "낫개", + "시간": "10:31:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1127, + "역명": "낫개", + "시간": "13:07:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2154, + "역명": "낫개", + "시간": "13:25:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1185, + "역명": "낫개", + "시간": "16:01:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2214, + "역명": "낫개", + "시간": "16:22:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1243, + "역명": "낫개", + "시간": "19:01:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2268, + "역명": "낫개", + "시간": "19:21:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1289, + "역명": "낫개", + "시간": "22:03:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2310, + "역명": "낫개", + "시간": "22:25:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 18, + "열번": 7915, + "역명": "낫개", + "시간": "07:00:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2030, + "역명": "낫개", + "시간": "07:18:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1063, + "역명": "낫개", + "시간": "09:55:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2090, + "역명": "낫개", + "시간": "10:13:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1121, + "역명": "낫개", + "시간": "12:49:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2148, + "역명": "낫개", + "시간": "13:07:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1179, + "역명": "낫개", + "시간": "15:43:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2206, + "역명": "낫개", + "시간": "16:00:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1237, + "역명": "낫개", + "시간": "18:40:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2262, + "역명": "낫개", + "시간": "18:57:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1283, + "역명": "낫개", + "시간": "21:36:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2038, + "역명": "낫개", + "시간": "07:38:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 20, + "열번": 7917, + "역명": "낫개", + "시간": "07:10:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2034, + "역명": "낫개", + "시간": "07:28:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1067, + "역명": "낫개", + "시간": "10:07:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2094, + "역명": "낫개", + "시간": "10:25:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1125, + "역명": "낫개", + "시간": "13:01:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2152, + "역명": "낫개", + "시간": "13:19:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1183, + "역명": "낫개", + "시간": "15:55:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2212, + "역명": "낫개", + "시간": "16:16:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1241, + "역명": "낫개", + "시간": "18:54:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2266, + "역명": "낫개", + "시간": "19:13:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1287, + "역명": "낫개", + "시간": "21:53:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 20, + "열번": 2308, + "역명": "낫개", + "시간": "22:13:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 21, + "열번": 7919, + "역명": "낫개", + "시간": "07:21:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2040, + "역명": "낫개", + "시간": "07:43:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1071, + "역명": "낫개", + "시간": "10:19:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2098, + "역명": "낫개", + "시간": "10:37:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1129, + "역명": "낫개", + "시간": "13:13:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2156, + "역명": "낫개", + "시간": "13:31:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1187, + "역명": "낫개", + "시간": "16:07:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2216, + "역명": "낫개", + "시간": "16:27:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 22, + "열번": 7921, + "역명": "낫개", + "시간": "07:32:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2044, + "역명": "낫개", + "시간": "07:55:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1075, + "역명": "낫개", + "시간": "10:31:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2102, + "역명": "낫개", + "시간": "10:49:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1133, + "역명": "낫개", + "시간": "13:25:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2160, + "역명": "낫개", + "시간": "13:43:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1191, + "역명": "낫개", + "시간": "16:19:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2220, + "역명": "낫개", + "시간": "16:38:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1247, + "역명": "낫개", + "시간": "19:15:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2272, + "역명": "낫개", + "시간": "19:37:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1291, + "역명": "낫개", + "시간": "22:13:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 22, + "열번": 2312, + "역명": "낫개", + "시간": "22:37:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 23, + "열번": 1013, + "역명": "낫개", + "시간": "07:26:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2042, + "역명": "낫개", + "시간": "07:49:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1073, + "역명": "낫개", + "시간": "10:25:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2100, + "역명": "낫개", + "시간": "10:43:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1131, + "역명": "낫개", + "시간": "13:19:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2158, + "역명": "낫개", + "시간": "13:37:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1189, + "역명": "낫개", + "시간": "16:13:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2218, + "역명": "낫개", + "시간": "16:33:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1245, + "역명": "낫개", + "시간": "19:08:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2270, + "역명": "낫개", + "시간": "19:29:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 24, + "열번": 7923, + "역명": "낫개", + "시간": "07:42:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "낫개", + "시간": "08:07:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1079, + "역명": "낫개", + "시간": "10:43:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2106, + "역명": "낫개", + "시간": "11:01:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1137, + "역명": "낫개", + "시간": "13:37:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2164, + "역명": "낫개", + "시간": "13:55:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1195, + "역명": "낫개", + "시간": "16:31:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2224, + "역명": "낫개", + "시간": "16:49:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1251, + "역명": "낫개", + "시간": "19:29:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "낫개", + "시간": "07:54:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2052, + "역명": "낫개", + "시간": "08:19:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1083, + "역명": "낫개", + "시간": "10:55:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2110, + "역명": "낫개", + "시간": "11:13:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1141, + "역명": "낫개", + "시간": "13:49:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2168, + "역명": "낫개", + "시간": "14:07:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1199, + "역명": "낫개", + "시간": "16:43:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2228, + "역명": "낫개", + "시간": "17:00:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1253, + "역명": "낫개", + "시간": "19:36:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2276, + "역명": "낫개", + "시간": "19:53:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1295, + "역명": "낫개", + "시간": "22:33:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2314, + "역명": "낫개", + "시간": "22:49:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 26, + "열번": 1029, + "역명": "낫개", + "시간": "08:27:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1025, + "역명": "낫개", + "시간": "08:17:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2058, + "역명": "낫개", + "시간": "08:37:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1089, + "역명": "낫개", + "시간": "11:13:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2116, + "역명": "낫개", + "시간": "11:31:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1147, + "역명": "낫개", + "시간": "14:07:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2174, + "역명": "낫개", + "시간": "14:25:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1205, + "역명": "낫개", + "시간": "17:01:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 27, + "열번": 2234, + "역명": "낫개", + "시간": "17:18:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 28, + "열번": 1041, + "역명": "낫개", + "시간": "08:57:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1031, + "역명": "낫개", + "시간": "08:32:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2062, + "역명": "낫개", + "시간": "08:49:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1093, + "역명": "낫개", + "시간": "11:25:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2120, + "역명": "낫개", + "시간": "11:43:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1151, + "역명": "낫개", + "시간": "14:19:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2178, + "역명": "낫개", + "시간": "14:37:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1209, + "역명": "낫개", + "시간": "17:13:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2238, + "역명": "낫개", + "시간": "17:30:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1261, + "역명": "낫개", + "시간": "20:08:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2284, + "역명": "낫개", + "시간": "20:25:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 29, + "열번": 1301, + "역명": "낫개", + "시간": "23:03:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1049, + "역명": "낫개", + "시간": "09:17:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2078, + "역명": "낫개", + "시간": "09:37:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1109, + "역명": "낫개", + "시간": "12:13:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2136, + "역명": "낫개", + "시간": "12:31:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1167, + "역명": "낫개", + "시간": "15:07:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2194, + "역명": "낫개", + "시간": "15:25:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1225, + "역명": "낫개", + "시간": "18:01:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1035, + "역명": "낫개", + "시간": "08:42:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2066, + "역명": "낫개", + "시간": "09:01:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1097, + "역명": "낫개", + "시간": "11:37:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2124, + "역명": "낫개", + "시간": "11:55:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1155, + "역명": "낫개", + "시간": "14:31:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2182, + "역명": "낫개", + "시간": "14:49:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1213, + "역명": "낫개", + "시간": "17:25:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2242, + "역명": "낫개", + "시간": "17:43:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1265, + "역명": "낫개", + "시간": "20:24:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2288, + "역명": "낫개", + "시간": "20:41:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1305, + "역명": "낫개", + "시간": "23:23:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 32, + "열번": 2210, + "역명": "낫개", + "시간": "16:11:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 32, + "열번": 1239, + "역명": "낫개", + "시간": "18:47:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 32, + "열번": 2264, + "역명": "낫개", + "시간": "19:05:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 32, + "열번": 1285, + "역명": "낫개", + "시간": "21:44:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 32, + "열번": 2306, + "역명": "낫개", + "시간": "22:03:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1037, + "역명": "낫개", + "시간": "08:47:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2068, + "역명": "낫개", + "시간": "09:07:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1099, + "역명": "낫개", + "시간": "11:43:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2126, + "역명": "낫개", + "시간": "12:01:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1157, + "역명": "낫개", + "시간": "14:37:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2184, + "역명": "낫개", + "시간": "14:55:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1215, + "역명": "낫개", + "시간": "17:31:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2244, + "역명": "낫개", + "시간": "17:50:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1267, + "역명": "낫개", + "시간": "20:32:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 33, + "열번": 2290, + "역명": "낫개", + "시간": "20:49:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1045, + "역명": "낫개", + "시간": "09:07:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2074, + "역명": "낫개", + "시간": "09:25:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1105, + "역명": "낫개", + "시간": "12:01:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2132, + "역명": "낫개", + "시간": "12:19:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1163, + "역명": "낫개", + "시간": "14:55:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2190, + "역명": "낫개", + "시간": "15:13:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1221, + "역명": "낫개", + "시간": "17:49:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2250, + "역명": "낫개", + "시간": "18:11:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1271, + "역명": "낫개", + "시간": "20:48:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2294, + "역명": "낫개", + "시간": "21:05:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1309, + "역명": "낫개", + "시간": "23:44:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1055, + "역명": "낫개", + "시간": "09:32:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2084, + "역명": "낫개", + "시간": "09:55:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1115, + "역명": "낫개", + "시간": "12:31:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2142, + "역명": "낫개", + "시간": "12:49:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1173, + "역명": "낫개", + "시간": "15:25:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2200, + "역명": "낫개", + "시간": "15:43:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1231, + "역명": "낫개", + "시간": "18:19:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2258, + "역명": "낫개", + "시간": "18:41:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1279, + "역명": "낫개", + "시간": "21:20:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2302, + "역명": "낫개", + "시간": "21:43:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1315, + "역명": "낫개", + "시간": "00:19:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "다대포항", + "시간": "05:06:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "다대포항", + "시간": "07:47:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2050, + "역명": "다대포항", + "시간": "08:11:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1081, + "역명": "다대포항", + "시간": "10:51:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2108, + "역명": "다대포항", + "시간": "11:05:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1139, + "역명": "다대포항", + "시간": "13:45:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2166, + "역명": "다대포항", + "시간": "13:59:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1197, + "역명": "다대포항", + "시간": "16:39:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2226, + "역명": "다대포항", + "시간": "16:53:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "다대포항", + "시간": "07:38:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "다대포항", + "시간": "07:59:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1077, + "역명": "다대포항", + "시간": "10:39:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2104, + "역명": "다대포항", + "시간": "10:53:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1135, + "역명": "다대포항", + "시간": "13:33:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2162, + "역명": "다대포항", + "시간": "13:47:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1193, + "역명": "다대포항", + "시간": "16:27:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2222, + "역명": "다대포항", + "시간": "16:42:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1249, + "역명": "다대포항", + "시간": "19:24:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2274, + "역명": "다대포항", + "시간": "19:43:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1293, + "역명": "다대포항", + "시간": "22:25:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "다대포항", + "시간": "05:20:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "다대포항", + "시간": "08:05:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2054, + "역명": "다대포항", + "시간": "08:23:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1085, + "역명": "다대포항", + "시간": "11:03:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2112, + "역명": "다대포항", + "시간": "11:17:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1143, + "역명": "다대포항", + "시간": "13:57:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2170, + "역명": "다대포항", + "시간": "14:11:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1201, + "역명": "다대포항", + "시간": "16:51:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2230, + "역명": "다대포항", + "시간": "17:04:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1255, + "역명": "다대포항", + "시간": "19:46:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2278, + "역명": "다대포항", + "시간": "19:59:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 4, + "열번": 7901, + "역명": "다대포항", + "시간": "05:17:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "다대포항", + "시간": "05:32:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1023, + "역명": "다대포항", + "시간": "08:12:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2056, + "역명": "다대포항", + "시간": "08:29:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1087, + "역명": "다대포항", + "시간": "11:09:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2114, + "역명": "다대포항", + "시간": "11:23:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1145, + "역명": "다대포항", + "시간": "14:03:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2172, + "역명": "다대포항", + "시간": "14:17:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1203, + "역명": "다대포항", + "시간": "16:57:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2232, + "역명": "다대포항", + "시간": "17:10:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1257, + "역명": "다대포항", + "시간": "19:54:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2280, + "역명": "다대포항", + "시간": "20:07:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1297, + "역명": "다대포항", + "시간": "22:45:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2316, + "역명": "다대포항", + "시간": "22:57:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 5, + "열번": 7907, + "역명": "다대포항", + "시간": "05:53:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2012, + "역명": "다대포항", + "시간": "06:08:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1039, + "역명": "다대포항", + "시간": "08:54:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2070, + "역명": "다대포항", + "시간": "09:11:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1101, + "역명": "다대포항", + "시간": "11:51:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2128, + "역명": "다대포항", + "시간": "12:05:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1159, + "역명": "다대포항", + "시간": "14:45:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2186, + "역명": "다대포항", + "시간": "14:59:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1217, + "역명": "다대포항", + "시간": "17:39:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2246, + "역명": "다대포항", + "시간": "17:55:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 6, + "열번": 7903, + "역명": "다대포항", + "시간": "05:29:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2008, + "역명": "다대포항", + "시간": "05:44:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1027, + "역명": "다대포항", + "시간": "08:24:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2060, + "역명": "다대포항", + "시간": "08:41:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1091, + "역명": "다대포항", + "시간": "11:21:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2118, + "역명": "다대포항", + "시간": "11:35:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1149, + "역명": "다대포항", + "시간": "14:15:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2176, + "역명": "다대포항", + "시간": "14:29:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1207, + "역명": "다대포항", + "시간": "17:09:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2236, + "역명": "다대포항", + "시간": "17:22:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1259, + "역명": "다대포항", + "시간": "20:02:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2282, + "역명": "다대포항", + "시간": "20:15:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1299, + "역명": "다대포항", + "시간": "22:55:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 6, + "열번": 2318, + "역명": "다대포항", + "시간": "23:13:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1001, + "역명": "다대포항", + "시간": "06:25:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2018, + "역명": "다대포항", + "시간": "06:40:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1051, + "역명": "다대포항", + "시간": "09:24:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2080, + "역명": "다대포항", + "시간": "09:41:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1111, + "역명": "다대포항", + "시간": "12:21:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2138, + "역명": "다대포항", + "시간": "12:35:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1169, + "역명": "다대포항", + "시간": "15:15:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2196, + "역명": "다대포항", + "시간": "15:29:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1227, + "역명": "다대포항", + "시간": "18:09:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2254, + "역명": "다대포항", + "시간": "18:23:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1275, + "역명": "다대포항", + "시간": "21:06:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 7, + "열번": 2298, + "역명": "다대포항", + "시간": "21:21:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 8, + "열번": 7905, + "역명": "다대포항", + "시간": "05:41:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2010, + "역명": "다대포항", + "시간": "05:56:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1033, + "역명": "다대포항", + "시간": "08:39:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2064, + "역명": "다대포항", + "시간": "08:53:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1095, + "역명": "다대포항", + "시간": "11:33:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2122, + "역명": "다대포항", + "시간": "11:47:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1153, + "역명": "다대포항", + "시간": "14:27:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2180, + "역명": "다대포항", + "시간": "14:41:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1211, + "역명": "다대포항", + "시간": "17:21:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2240, + "역명": "다대포항", + "시간": "17:34:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1263, + "역명": "다대포항", + "시간": "20:18:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2286, + "역명": "다대포항", + "시간": "20:31:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1303, + "역명": "다대포항", + "시간": "23:15:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 9, + "열번": 1003, + "역명": "다대포항", + "시간": "06:33:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2020, + "역명": "다대포항", + "시간": "06:49:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1053, + "역명": "다대포항", + "시간": "09:29:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2082, + "역명": "다대포항", + "시간": "09:47:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1113, + "역명": "다대포항", + "시간": "12:27:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2140, + "역명": "다대포항", + "시간": "12:41:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1171, + "역명": "다대포항", + "시간": "15:21:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2198, + "역명": "다대포항", + "시간": "15:35:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1229, + "역명": "다대포항", + "시간": "18:15:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2256, + "역명": "다대포항", + "시간": "18:31:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1277, + "역명": "다대포항", + "시간": "21:14:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2300, + "역명": "다대포항", + "시간": "21:31:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1313, + "역명": "다대포항", + "시간": "00:09:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 10, + "열번": 7909, + "역명": "다대포항", + "시간": "06:05:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2014, + "역명": "다대포항", + "시간": "06:20:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1043, + "역명": "다대포항", + "시간": "09:04:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2072, + "역명": "다대포항", + "시간": "09:17:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1103, + "역명": "다대포항", + "시간": "11:57:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2130, + "역명": "다대포항", + "시간": "12:11:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1161, + "역명": "다대포항", + "시간": "14:51:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2188, + "역명": "다대포항", + "시간": "15:05:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1219, + "역명": "다대포항", + "시간": "17:45:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2248, + "역명": "다대포항", + "시간": "18:02:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1269, + "역명": "다대포항", + "시간": "20:42:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2292, + "역명": "다대포항", + "시간": "20:55:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1307, + "역명": "다대포항", + "시간": "23:35:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 11, + "열번": 2022, + "역명": "다대포항", + "시간": "06:55:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 12, + "열번": 7911, + "역명": "다대포항", + "시간": "06:16:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2016, + "역명": "다대포항", + "시간": "06:31:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1047, + "역명": "다대포항", + "시간": "09:14:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2076, + "역명": "다대포항", + "시간": "09:29:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1107, + "역명": "다대포항", + "시간": "12:09:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2134, + "역명": "다대포항", + "시간": "12:23:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1165, + "역명": "다대포항", + "시간": "15:03:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "다대포항", + "시간": "15:17:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1223, + "역명": "다대포항", + "시간": "17:57:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2252, + "역명": "다대포항", + "시간": "18:16:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1273, + "역명": "다대포항", + "시간": "20:58:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2296, + "역명": "다대포항", + "시간": "21:11:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1311, + "역명": "다대포항", + "시간": "23:57:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1005, + "역명": "다대포항", + "시간": "06:44:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2024, + "역명": "다대포항", + "시간": "07:01:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1057, + "역명": "다대포항", + "시간": "09:39:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2086, + "역명": "다대포항", + "시간": "09:59:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1117, + "역명": "다대포항", + "시간": "12:39:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2144, + "역명": "다대포항", + "시간": "12:53:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1175, + "역명": "다대포항", + "시간": "15:33:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2202, + "역명": "다대포항", + "시간": "15:47:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1233, + "역명": "다대포항", + "시간": "18:28:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2260, + "역명": "다대포항", + "시간": "18:47:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1281, + "역명": "다대포항", + "시간": "21:30:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2304, + "역명": "다대포항", + "시간": "21:51:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 13, + "열번": 1317, + "역명": "다대포항", + "시간": "00:32:55", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 14, + "열번": 7913, + "역명": "다대포항", + "시간": "06:52:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2026, + "역명": "다대포항", + "시간": "07:06:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 14, + "열번": 1059, + "역명": "다대포항", + "시간": "09:45:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1009, + "역명": "다대포항", + "시간": "07:06:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2032, + "역명": "다대포항", + "시간": "07:21:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1065, + "역명": "다대포항", + "시간": "10:03:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2092, + "역명": "다대포항", + "시간": "10:17:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1123, + "역명": "다대포항", + "시간": "12:57:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2150, + "역명": "다대포항", + "시간": "13:11:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1181, + "역명": "다대포항", + "시간": "15:51:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2208, + "역명": "다대포항", + "시간": "16:03:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 16, + "열번": 1007, + "역명": "다대포항", + "시간": "06:55:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2028, + "역명": "다대포항", + "시간": "07:11:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1061, + "역명": "다대포항", + "시간": "09:51:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2088, + "역명": "다대포항", + "시간": "10:05:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1119, + "역명": "다대포항", + "시간": "12:45:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2146, + "역명": "다대포항", + "시간": "12:59:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1177, + "역명": "다대포항", + "시간": "15:39:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2204, + "역명": "다대포항", + "시간": "15:52:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1235, + "역명": "다대포항", + "시간": "18:35:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 17, + "열번": 1011, + "역명": "다대포항", + "시간": "07:17:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2036, + "역명": "다대포항", + "시간": "07:31:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1069, + "역명": "다대포항", + "시간": "10:15:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2096, + "역명": "다대포항", + "시간": "10:29:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1127, + "역명": "다대포항", + "시간": "13:09:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2154, + "역명": "다대포항", + "시간": "13:23:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1185, + "역명": "다대포항", + "시간": "16:03:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2214, + "역명": "다대포항", + "시간": "16:20:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1243, + "역명": "다대포항", + "시간": "19:03:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2268, + "역명": "다대포항", + "시간": "19:19:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1289, + "역명": "다대포항", + "시간": "22:05:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2310, + "역명": "다대포항", + "시간": "22:23:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 18, + "열번": 7915, + "역명": "다대포항", + "시간": "07:03:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2030, + "역명": "다대포항", + "시간": "07:16:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1063, + "역명": "다대포항", + "시간": "09:57:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2090, + "역명": "다대포항", + "시간": "10:11:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1121, + "역명": "다대포항", + "시간": "12:51:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2148, + "역명": "다대포항", + "시간": "13:05:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1179, + "역명": "다대포항", + "시간": "15:45:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2206, + "역명": "다대포항", + "시간": "15:58:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1237, + "역명": "다대포항", + "시간": "18:42:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2262, + "역명": "다대포항", + "시간": "18:55:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1283, + "역명": "다대포항", + "시간": "21:38:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2038, + "역명": "다대포항", + "시간": "07:36:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 20, + "열번": 7917, + "역명": "다대포항", + "시간": "07:12:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2034, + "역명": "다대포항", + "시간": "07:26:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1067, + "역명": "다대포항", + "시간": "10:09:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2094, + "역명": "다대포항", + "시간": "10:23:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1125, + "역명": "다대포항", + "시간": "13:03:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2152, + "역명": "다대포항", + "시간": "13:17:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1183, + "역명": "다대포항", + "시간": "15:57:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2212, + "역명": "다대포항", + "시간": "16:14:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1241, + "역명": "다대포항", + "시간": "18:56:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2266, + "역명": "다대포항", + "시간": "19:11:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1287, + "역명": "다대포항", + "시간": "21:55:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 20, + "열번": 2308, + "역명": "다대포항", + "시간": "22:11:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 21, + "열번": 7919, + "역명": "다대포항", + "시간": "07:24:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2040, + "역명": "다대포항", + "시간": "07:41:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1071, + "역명": "다대포항", + "시간": "10:21:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2098, + "역명": "다대포항", + "시간": "10:35:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1129, + "역명": "다대포항", + "시간": "13:15:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2156, + "역명": "다대포항", + "시간": "13:29:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1187, + "역명": "다대포항", + "시간": "16:09:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2216, + "역명": "다대포항", + "시간": "16:25:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 22, + "열번": 7921, + "역명": "다대포항", + "시간": "07:34:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2044, + "역명": "다대포항", + "시간": "07:53:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1075, + "역명": "다대포항", + "시간": "10:33:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2102, + "역명": "다대포항", + "시간": "10:47:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1133, + "역명": "다대포항", + "시간": "13:27:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2160, + "역명": "다대포항", + "시간": "13:41:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1191, + "역명": "다대포항", + "시간": "16:21:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2220, + "역명": "다대포항", + "시간": "16:36:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1247, + "역명": "다대포항", + "시간": "19:17:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2272, + "역명": "다대포항", + "시간": "19:35:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1291, + "역명": "다대포항", + "시간": "22:15:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 22, + "열번": 2312, + "역명": "다대포항", + "시간": "22:35:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 23, + "열번": 1013, + "역명": "다대포항", + "시간": "07:28:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2042, + "역명": "다대포항", + "시간": "07:47:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1073, + "역명": "다대포항", + "시간": "10:27:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2100, + "역명": "다대포항", + "시간": "10:41:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1131, + "역명": "다대포항", + "시간": "13:21:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2158, + "역명": "다대포항", + "시간": "13:35:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1189, + "역명": "다대포항", + "시간": "16:15:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2218, + "역명": "다대포항", + "시간": "16:31:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1245, + "역명": "다대포항", + "시간": "19:10:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2270, + "역명": "다대포항", + "시간": "19:27:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 24, + "열번": 7923, + "역명": "다대포항", + "시간": "07:44:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "다대포항", + "시간": "08:05:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1079, + "역명": "다대포항", + "시간": "10:45:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2106, + "역명": "다대포항", + "시간": "10:59:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1137, + "역명": "다대포항", + "시간": "13:39:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2164, + "역명": "다대포항", + "시간": "13:53:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1195, + "역명": "다대포항", + "시간": "16:33:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2224, + "역명": "다대포항", + "시간": "16:47:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1251, + "역명": "다대포항", + "시간": "19:31:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "다대포항", + "시간": "07:56:50", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2052, + "역명": "다대포항", + "시간": "08:17:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1083, + "역명": "다대포항", + "시간": "10:57:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2110, + "역명": "다대포항", + "시간": "11:11:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1141, + "역명": "다대포항", + "시간": "13:51:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2168, + "역명": "다대포항", + "시간": "14:05:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1199, + "역명": "다대포항", + "시간": "16:45:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2228, + "역명": "다대포항", + "시간": "16:58:45", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1253, + "역명": "다대포항", + "시간": "19:38:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2276, + "역명": "다대포항", + "시간": "19:51:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1295, + "역명": "다대포항", + "시간": "22:35:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2314, + "역명": "다대포항", + "시간": "22:47:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 26, + "열번": 1029, + "역명": "다대포항", + "시간": "08:29:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1025, + "역명": "다대포항", + "시간": "08:19:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2058, + "역명": "다대포항", + "시간": "08:35:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1089, + "역명": "다대포항", + "시간": "11:15:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2116, + "역명": "다대포항", + "시간": "11:29:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1147, + "역명": "다대포항", + "시간": "14:09:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2174, + "역명": "다대포항", + "시간": "14:23:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1205, + "역명": "다대포항", + "시간": "17:03:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 27, + "열번": 2234, + "역명": "다대포항", + "시간": "17:16:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 28, + "열번": 1041, + "역명": "다대포항", + "시간": "08:59:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1031, + "역명": "다대포항", + "시간": "08:34:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2062, + "역명": "다대포항", + "시간": "08:47:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1093, + "역명": "다대포항", + "시간": "11:27:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2120, + "역명": "다대포항", + "시간": "11:41:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1151, + "역명": "다대포항", + "시간": "14:21:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2178, + "역명": "다대포항", + "시간": "14:35:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1209, + "역명": "다대포항", + "시간": "17:15:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2238, + "역명": "다대포항", + "시간": "17:28:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1261, + "역명": "다대포항", + "시간": "20:10:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2284, + "역명": "다대포항", + "시간": "20:23:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 29, + "열번": 1301, + "역명": "다대포항", + "시간": "23:05:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1049, + "역명": "다대포항", + "시간": "09:19:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2078, + "역명": "다대포항", + "시간": "09:35:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1109, + "역명": "다대포항", + "시간": "12:15:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2136, + "역명": "다대포항", + "시간": "12:29:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1167, + "역명": "다대포항", + "시간": "15:09:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2194, + "역명": "다대포항", + "시간": "15:23:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1225, + "역명": "다대포항", + "시간": "18:03:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1035, + "역명": "다대포항", + "시간": "08:44:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2066, + "역명": "다대포항", + "시간": "08:59:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1097, + "역명": "다대포항", + "시간": "11:39:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2124, + "역명": "다대포항", + "시간": "11:53:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1155, + "역명": "다대포항", + "시간": "14:33:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2182, + "역명": "다대포항", + "시간": "14:47:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1213, + "역명": "다대포항", + "시간": "17:27:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2242, + "역명": "다대포항", + "시간": "17:41:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1265, + "역명": "다대포항", + "시간": "20:26:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2288, + "역명": "다대포항", + "시간": "20:39:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1305, + "역명": "다대포항", + "시간": "23:25:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 32, + "열번": 2210, + "역명": "다대포항", + "시간": "16:09:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 32, + "열번": 1239, + "역명": "다대포항", + "시간": "18:49:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 32, + "열번": 2264, + "역명": "다대포항", + "시간": "19:03:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 32, + "열번": 1285, + "역명": "다대포항", + "시간": "21:46:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 32, + "열번": 2306, + "역명": "다대포항", + "시간": "22:01:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1037, + "역명": "다대포항", + "시간": "08:49:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2068, + "역명": "다대포항", + "시간": "09:05:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1099, + "역명": "다대포항", + "시간": "11:45:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2126, + "역명": "다대포항", + "시간": "11:59:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1157, + "역명": "다대포항", + "시간": "14:39:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2184, + "역명": "다대포항", + "시간": "14:53:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1215, + "역명": "다대포항", + "시간": "17:33:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2244, + "역명": "다대포항", + "시간": "17:48:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1267, + "역명": "다대포항", + "시간": "20:34:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 33, + "열번": 2290, + "역명": "다대포항", + "시간": "20:47:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1045, + "역명": "다대포항", + "시간": "09:09:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2074, + "역명": "다대포항", + "시간": "09:23:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1105, + "역명": "다대포항", + "시간": "12:03:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2132, + "역명": "다대포항", + "시간": "12:17:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1163, + "역명": "다대포항", + "시간": "14:57:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2190, + "역명": "다대포항", + "시간": "15:11:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1221, + "역명": "다대포항", + "시간": "17:51:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2250, + "역명": "다대포항", + "시간": "18:09:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1271, + "역명": "다대포항", + "시간": "20:50:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2294, + "역명": "다대포항", + "시간": "21:03:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1309, + "역명": "다대포항", + "시간": "23:46:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1055, + "역명": "다대포항", + "시간": "09:34:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2084, + "역명": "다대포항", + "시간": "09:53:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1115, + "역명": "다대포항", + "시간": "12:33:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2142, + "역명": "다대포항", + "시간": "12:47:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1173, + "역명": "다대포항", + "시간": "15:27:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2200, + "역명": "다대포항", + "시간": "15:41:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1231, + "역명": "다대포항", + "시간": "18:21:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2258, + "역명": "다대포항", + "시간": "18:39:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1279, + "역명": "다대포항", + "시간": "21:22:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2302, + "역명": "다대포항", + "시간": "21:41:15", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1315, + "역명": "다대포항", + "시간": "00:21:20", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 1, + "열번": 2002, + "역명": "다대포해수욕장", + "시간": "05:04:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1017, + "역명": "다대포해수욕장", + "시간": "07:50:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2050, + "역명": "다대포해수욕장", + "시간": "08:09:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1081, + "역명": "다대포해수욕장", + "시간": "10:54:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2108, + "역명": "다대포해수욕장", + "시간": "11:03:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1139, + "역명": "다대포해수욕장", + "시간": "13:48:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 1, + "열번": 2166, + "역명": "다대포해수욕장", + "시간": "13:57:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 1, + "열번": 1197, + "역명": "다대포해수욕장", + "시간": "16:42:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 1, + "열번": 2226, + "역명": "다대포해수욕장", + "시간": "16:51:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1015, + "역명": "다대포해수욕장", + "시간": "07:41:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2046, + "역명": "다대포해수욕장", + "시간": "07:57:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1077, + "역명": "다대포해수욕장", + "시간": "10:42:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2104, + "역명": "다대포해수욕장", + "시간": "10:51:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1135, + "역명": "다대포해수욕장", + "시간": "13:36:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2162, + "역명": "다대포해수욕장", + "시간": "13:45:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1193, + "역명": "다대포해수욕장", + "시간": "16:30:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2222, + "역명": "다대포해수욕장", + "시간": "16:40:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1249, + "역명": "다대포해수욕장", + "시간": "19:27:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 2, + "열번": 2274, + "역명": "다대포해수욕장", + "시간": "19:41:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 2, + "열번": 1293, + "역명": "다대포해수욕장", + "시간": "22:28:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 2, + "열번": 4014, + "역명": "다대포해수욕장", + "시간": "22:36:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 3, + "열번": 2004, + "역명": "다대포해수욕장", + "시간": "05:18:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1021, + "역명": "다대포해수욕장", + "시간": "08:08:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2054, + "역명": "다대포해수욕장", + "시간": "08:21:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1085, + "역명": "다대포해수욕장", + "시간": "11:06:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2112, + "역명": "다대포해수욕장", + "시간": "11:15:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1143, + "역명": "다대포해수욕장", + "시간": "14:00:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2170, + "역명": "다대포해수욕장", + "시간": "14:09:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1201, + "역명": "다대포해수욕장", + "시간": "16:54:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 3, + "열번": 2230, + "역명": "다대포해수욕장", + "시간": "17:02:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 3, + "열번": 1255, + "역명": "다대포해수욕장", + "시간": "19:49:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 3, + "열번": 2278, + "역명": "다대포해수욕장", + "시간": "19:57:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 4, + "열번": 7901, + "역명": "다대포해수욕장", + "시간": "05:19:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2006, + "역명": "다대포해수욕장", + "시간": "05:30:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1023, + "역명": "다대포해수욕장", + "시간": "08:15:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2056, + "역명": "다대포해수욕장", + "시간": "08:27:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1087, + "역명": "다대포해수욕장", + "시간": "11:12:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2114, + "역명": "다대포해수욕장", + "시간": "11:21:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1145, + "역명": "다대포해수욕장", + "시간": "14:06:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2172, + "역명": "다대포해수욕장", + "시간": "14:15:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1203, + "역명": "다대포해수욕장", + "시간": "17:00:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2232, + "역명": "다대포해수욕장", + "시간": "17:08:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1257, + "역명": "다대포해수욕장", + "시간": "19:57:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 4, + "열번": 2280, + "역명": "다대포해수욕장", + "시간": "20:05:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 4, + "열번": 1297, + "역명": "다대포해수욕장", + "시간": "22:48:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 4, + "열번": 2316, + "역명": "다대포해수욕장", + "시간": "22:55:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 5, + "열번": 7907, + "역명": "다대포해수욕장", + "시간": "05:55:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2012, + "역명": "다대포해수욕장", + "시간": "06:06:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1039, + "역명": "다대포해수욕장", + "시간": "08:57:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2070, + "역명": "다대포해수욕장", + "시간": "09:09:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1101, + "역명": "다대포해수욕장", + "시간": "11:54:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2128, + "역명": "다대포해수욕장", + "시간": "12:03:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1159, + "역명": "다대포해수욕장", + "시간": "14:48:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 5, + "열번": 2186, + "역명": "다대포해수욕장", + "시간": "14:57:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 5, + "열번": 1217, + "역명": "다대포해수욕장", + "시간": "17:42:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 5, + "열번": 2246, + "역명": "다대포해수욕장", + "시간": "17:53:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 6, + "열번": 7903, + "역명": "다대포해수욕장", + "시간": "05:31:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2008, + "역명": "다대포해수욕장", + "시간": "05:42:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1027, + "역명": "다대포해수욕장", + "시간": "08:27:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2060, + "역명": "다대포해수욕장", + "시간": "08:39:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1091, + "역명": "다대포해수욕장", + "시간": "11:24:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2118, + "역명": "다대포해수욕장", + "시간": "11:33:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1149, + "역명": "다대포해수욕장", + "시간": "14:18:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2176, + "역명": "다대포해수욕장", + "시간": "14:27:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1207, + "역명": "다대포해수욕장", + "시간": "17:12:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2236, + "역명": "다대포해수욕장", + "시간": "17:20:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1259, + "역명": "다대포해수욕장", + "시간": "20:05:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 6, + "열번": 2282, + "역명": "다대포해수욕장", + "시간": "20:13:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 6, + "열번": 1299, + "역명": "다대포해수욕장", + "시간": "22:58:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 6, + "열번": 2318, + "역명": "다대포해수욕장", + "시간": "23:11:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 7, + "열번": 1001, + "역명": "다대포해수욕장", + "시간": "06:28:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2018, + "역명": "다대포해수욕장", + "시간": "06:38:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1051, + "역명": "다대포해수욕장", + "시간": "09:27:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2080, + "역명": "다대포해수욕장", + "시간": "09:39:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1111, + "역명": "다대포해수욕장", + "시간": "12:24:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2138, + "역명": "다대포해수욕장", + "시간": "12:33:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1169, + "역명": "다대포해수욕장", + "시간": "15:18:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2196, + "역명": "다대포해수욕장", + "시간": "15:27:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1227, + "역명": "다대포해수욕장", + "시간": "18:12:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 7, + "열번": 2254, + "역명": "다대포해수욕장", + "시간": "18:21:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 7, + "열번": 1275, + "역명": "다대포해수욕장", + "시간": "21:09:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 7, + "열번": 2298, + "역명": "다대포해수욕장", + "시간": "21:19:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 8, + "열번": 7905, + "역명": "다대포해수욕장", + "시간": "05:43:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2010, + "역명": "다대포해수욕장", + "시간": "05:54:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1033, + "역명": "다대포해수욕장", + "시간": "08:42:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2064, + "역명": "다대포해수욕장", + "시간": "08:51:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1095, + "역명": "다대포해수욕장", + "시간": "11:36:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2122, + "역명": "다대포해수욕장", + "시간": "11:45:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1153, + "역명": "다대포해수욕장", + "시간": "14:30:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2180, + "역명": "다대포해수욕장", + "시간": "14:39:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1211, + "역명": "다대포해수욕장", + "시간": "17:24:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2240, + "역명": "다대포해수욕장", + "시간": "17:32:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1263, + "역명": "다대포해수욕장", + "시간": "20:21:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 8, + "열번": 2286, + "역명": "다대포해수욕장", + "시간": "20:29:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 8, + "열번": 1303, + "역명": "다대포해수욕장", + "시간": "23:18:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 8, + "열번": 4802, + "역명": "다대포해수욕장", + "시간": "23:26:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 9, + "열번": 1003, + "역명": "다대포해수욕장", + "시간": "06:36:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2020, + "역명": "다대포해수욕장", + "시간": "06:47:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1053, + "역명": "다대포해수욕장", + "시간": "09:32:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2082, + "역명": "다대포해수욕장", + "시간": "09:45:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1113, + "역명": "다대포해수욕장", + "시간": "12:30:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2140, + "역명": "다대포해수욕장", + "시간": "12:39:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1171, + "역명": "다대포해수욕장", + "시간": "15:24:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2198, + "역명": "다대포해수욕장", + "시간": "15:33:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1229, + "역명": "다대포해수욕장", + "시간": "18:18:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2256, + "역명": "다대포해수욕장", + "시간": "18:29:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1277, + "역명": "다대포해수욕장", + "시간": "21:17:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 9, + "열번": 2300, + "역명": "다대포해수욕장", + "시간": "21:29:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 9, + "열번": 1313, + "역명": "다대포해수욕장", + "시간": "00:12:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 9, + "열번": 4810, + "역명": "다대포해수욕장", + "시간": "00:20:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 10, + "열번": 7909, + "역명": "다대포해수욕장", + "시간": "06:07:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2014, + "역명": "다대포해수욕장", + "시간": "06:18:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1043, + "역명": "다대포해수욕장", + "시간": "09:07:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2072, + "역명": "다대포해수욕장", + "시간": "09:15:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1103, + "역명": "다대포해수욕장", + "시간": "12:00:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2130, + "역명": "다대포해수욕장", + "시간": "12:09:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1161, + "역명": "다대포해수욕장", + "시간": "14:54:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2188, + "역명": "다대포해수욕장", + "시간": "15:03:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1219, + "역명": "다대포해수욕장", + "시간": "17:48:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2248, + "역명": "다대포해수욕장", + "시간": "18:00:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1269, + "역명": "다대포해수욕장", + "시간": "20:45:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 10, + "열번": 2292, + "역명": "다대포해수욕장", + "시간": "20:53:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 10, + "열번": 1307, + "역명": "다대포해수욕장", + "시간": "23:38:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 10, + "열번": 4804, + "역명": "다대포해수욕장", + "시간": "23:46:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 11, + "열번": 2022, + "역명": "다대포해수욕장", + "시간": "06:53:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 12, + "열번": 7911, + "역명": "다대포해수욕장", + "시간": "06:18:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2016, + "역명": "다대포해수욕장", + "시간": "06:29:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1047, + "역명": "다대포해수욕장", + "시간": "09:17:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2076, + "역명": "다대포해수욕장", + "시간": "09:27:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1107, + "역명": "다대포해수욕장", + "시간": "12:12:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2134, + "역명": "다대포해수욕장", + "시간": "12:21:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1165, + "역명": "다대포해수욕장", + "시간": "15:06:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2192, + "역명": "다대포해수욕장", + "시간": "15:15:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1223, + "역명": "다대포해수욕장", + "시간": "18:00:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2252, + "역명": "다대포해수욕장", + "시간": "18:14:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1273, + "역명": "다대포해수욕장", + "시간": "21:01:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 12, + "열번": 2296, + "역명": "다대포해수욕장", + "시간": "21:09:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 12, + "열번": 1311, + "역명": "다대포해수욕장", + "시간": "00:00:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 12, + "열번": 4808, + "역명": "다대포해수욕장", + "시간": "00:08:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 13, + "열번": 1005, + "역명": "다대포해수욕장", + "시간": "06:47:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2024, + "역명": "다대포해수욕장", + "시간": "06:59:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1057, + "역명": "다대포해수욕장", + "시간": "09:42:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2086, + "역명": "다대포해수욕장", + "시간": "09:57:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1117, + "역명": "다대포해수욕장", + "시간": "12:42:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2144, + "역명": "다대포해수욕장", + "시간": "12:51:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1175, + "역명": "다대포해수욕장", + "시간": "15:36:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2202, + "역명": "다대포해수욕장", + "시간": "15:45:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1233, + "역명": "다대포해수욕장", + "시간": "18:31:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2260, + "역명": "다대포해수욕장", + "시간": "18:45:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 13, + "열번": 1281, + "역명": "다대포해수욕장", + "시간": "21:33:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 13, + "열번": 2304, + "역명": "다대포해수욕장", + "시간": "21:49:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 13, + "열번": 1317, + "역명": "다대포해수욕장", + "시간": "00:35:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 14, + "열번": 7913, + "역명": "다대포해수욕장", + "시간": "06:54:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 14, + "열번": 2026, + "역명": "다대포해수욕장", + "시간": "07:04:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 14, + "열번": 1059, + "역명": "다대포해수욕장", + "시간": "09:48:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 15, + "열번": 1009, + "역명": "다대포해수욕장", + "시간": "07:09:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2032, + "역명": "다대포해수욕장", + "시간": "07:19:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1065, + "역명": "다대포해수욕장", + "시간": "10:06:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2092, + "역명": "다대포해수욕장", + "시간": "10:15:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1123, + "역명": "다대포해수욕장", + "시간": "13:00:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 15, + "열번": 2150, + "역명": "다대포해수욕장", + "시간": "13:09:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 15, + "열번": 1181, + "역명": "다대포해수욕장", + "시간": "15:54:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 15, + "열번": 2208, + "역명": "다대포해수욕장", + "시간": "16:01:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 16, + "열번": 1007, + "역명": "다대포해수욕장", + "시간": "06:58:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2028, + "역명": "다대포해수욕장", + "시간": "07:09:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1061, + "역명": "다대포해수욕장", + "시간": "09:54:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2088, + "역명": "다대포해수욕장", + "시간": "10:03:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1119, + "역명": "다대포해수욕장", + "시간": "12:48:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2146, + "역명": "다대포해수욕장", + "시간": "12:57:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1177, + "역명": "다대포해수욕장", + "시간": "15:42:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 16, + "열번": 2204, + "역명": "다대포해수욕장", + "시간": "15:50:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 16, + "열번": 1235, + "역명": "다대포해수욕장", + "시간": "18:38:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 16, + "열번": 4008, + "역명": "다대포해수욕장", + "시간": "18:47:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 17, + "열번": 1011, + "역명": "다대포해수욕장", + "시간": "07:20:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2036, + "역명": "다대포해수욕장", + "시간": "07:29:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1069, + "역명": "다대포해수욕장", + "시간": "10:18:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2096, + "역명": "다대포해수욕장", + "시간": "10:27:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1127, + "역명": "다대포해수욕장", + "시간": "13:12:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2154, + "역명": "다대포해수욕장", + "시간": "13:21:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1185, + "역명": "다대포해수욕장", + "시간": "16:06:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2214, + "역명": "다대포해수욕장", + "시간": "16:18:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1243, + "역명": "다대포해수욕장", + "시간": "19:06:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 17, + "열번": 2268, + "역명": "다대포해수욕장", + "시간": "19:17:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 17, + "열번": 1289, + "역명": "다대포해수욕장", + "시간": "22:08:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 17, + "열번": 2310, + "역명": "다대포해수욕장", + "시간": "22:21:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 18, + "열번": 7915, + "역명": "다대포해수욕장", + "시간": "07:05:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2030, + "역명": "다대포해수욕장", + "시간": "07:14:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1063, + "역명": "다대포해수욕장", + "시간": "10:00:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2090, + "역명": "다대포해수욕장", + "시간": "10:09:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1121, + "역명": "다대포해수욕장", + "시간": "12:54:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2148, + "역명": "다대포해수욕장", + "시간": "13:03:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1179, + "역명": "다대포해수욕장", + "시간": "15:48:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2206, + "역명": "다대포해수욕장", + "시간": "15:56:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1237, + "역명": "다대포해수욕장", + "시간": "18:45:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 18, + "열번": 2262, + "역명": "다대포해수욕장", + "시간": "18:53:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 18, + "열번": 1283, + "역명": "다대포해수욕장", + "시간": "21:41:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 18, + "열번": 4012, + "역명": "다대포해수욕장", + "시간": "21:51:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 19, + "열번": 2038, + "역명": "다대포해수욕장", + "시간": "07:34:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 20, + "열번": 7917, + "역명": "다대포해수욕장", + "시간": "07:15:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2034, + "역명": "다대포해수욕장", + "시간": "07:24:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1067, + "역명": "다대포해수욕장", + "시간": "10:12:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2094, + "역명": "다대포해수욕장", + "시간": "10:21:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1125, + "역명": "다대포해수욕장", + "시간": "13:06:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2152, + "역명": "다대포해수욕장", + "시간": "13:15:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1183, + "역명": "다대포해수욕장", + "시간": "16:00:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2212, + "역명": "다대포해수욕장", + "시간": "16:12:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1241, + "역명": "다대포해수욕장", + "시간": "18:59:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 20, + "열번": 2266, + "역명": "다대포해수욕장", + "시간": "19:09:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 20, + "열번": 1287, + "역명": "다대포해수욕장", + "시간": "21:58:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 20, + "열번": 2308, + "역명": "다대포해수욕장", + "시간": "22:09:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 21, + "열번": 7919, + "역명": "다대포해수욕장", + "시간": "07:26:40", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2040, + "역명": "다대포해수욕장", + "시간": "07:39:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1071, + "역명": "다대포해수욕장", + "시간": "10:24:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2098, + "역명": "다대포해수욕장", + "시간": "10:33:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1129, + "역명": "다대포해수욕장", + "시간": "13:18:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 21, + "열번": 2156, + "역명": "다대포해수욕장", + "시간": "13:27:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 21, + "열번": 1187, + "역명": "다대포해수욕장", + "시간": "16:12:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 21, + "열번": 2216, + "역명": "다대포해수욕장", + "시간": "16:23:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 22, + "열번": 7921, + "역명": "다대포해수욕장", + "시간": "07:37:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2044, + "역명": "다대포해수욕장", + "시간": "07:51:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1075, + "역명": "다대포해수욕장", + "시간": "10:36:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2102, + "역명": "다대포해수욕장", + "시간": "10:45:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1133, + "역명": "다대포해수욕장", + "시간": "13:30:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2160, + "역명": "다대포해수욕장", + "시간": "13:39:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1191, + "역명": "다대포해수욕장", + "시간": "16:24:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2220, + "역명": "다대포해수욕장", + "시간": "16:34:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1247, + "역명": "다대포해수욕장", + "시간": "19:20:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 22, + "열번": 2272, + "역명": "다대포해수욕장", + "시간": "19:33:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 22, + "열번": 1291, + "역명": "다대포해수욕장", + "시간": "22:18:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 22, + "열번": 2312, + "역명": "다대포해수욕장", + "시간": "22:33:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 23, + "열번": 1013, + "역명": "다대포해수욕장", + "시간": "07:31:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2042, + "역명": "다대포해수욕장", + "시간": "07:45:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1073, + "역명": "다대포해수욕장", + "시간": "10:30:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2100, + "역명": "다대포해수욕장", + "시간": "10:39:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1131, + "역명": "다대포해수욕장", + "시간": "13:24:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2158, + "역명": "다대포해수욕장", + "시간": "13:33:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1189, + "역명": "다대포해수욕장", + "시간": "16:18:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 23, + "열번": 2218, + "역명": "다대포해수욕장", + "시간": "16:29:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 23, + "열번": 1245, + "역명": "다대포해수욕장", + "시간": "19:13:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 23, + "열번": 2270, + "역명": "다대포해수욕장", + "시간": "19:25:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "신평출고", + "DIA": 24, + "열번": 7923, + "역명": "다대포해수욕장", + "시간": "07:47:10", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2048, + "역명": "다대포해수욕장", + "시간": "08:03:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1079, + "역명": "다대포해수욕장", + "시간": "10:48:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2106, + "역명": "다대포해수욕장", + "시간": "10:57:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1137, + "역명": "다대포해수욕장", + "시간": "13:42:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2164, + "역명": "다대포해수욕장", + "시간": "13:51:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1195, + "역명": "다대포해수욕장", + "시간": "16:36:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 24, + "열번": 2224, + "역명": "다대포해수욕장", + "시간": "16:45:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 24, + "열번": 1251, + "역명": "다대포해수욕장", + "시간": "19:34:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 24, + "열번": 4010, + "역명": "다대포해수욕장", + "시간": "19:43:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 25, + "열번": 1019, + "역명": "다대포해수욕장", + "시간": "07:59:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2052, + "역명": "다대포해수욕장", + "시간": "08:15:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1083, + "역명": "다대포해수욕장", + "시간": "11:00:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2110, + "역명": "다대포해수욕장", + "시간": "11:09:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1141, + "역명": "다대포해수욕장", + "시간": "13:54:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2168, + "역명": "다대포해수욕장", + "시간": "14:03:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1199, + "역명": "다대포해수욕장", + "시간": "16:48:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2228, + "역명": "다대포해수욕장", + "시간": "16:56:30", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1253, + "역명": "다대포해수욕장", + "시간": "19:41:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 25, + "열번": 2276, + "역명": "다대포해수욕장", + "시간": "19:49:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 25, + "열번": 1295, + "역명": "다대포해수욕장", + "시간": "22:38:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 25, + "열번": 2314, + "역명": "다대포해수욕장", + "시간": "22:45:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 26, + "열번": 1029, + "역명": "다대포해수욕장", + "시간": "08:32:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 26, + "열번": 4002, + "역명": "다대포해수욕장", + "시간": "08:41:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 27, + "열번": 1025, + "역명": "다대포해수욕장", + "시간": "08:22:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2058, + "역명": "다대포해수욕장", + "시간": "08:33:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1089, + "역명": "다대포해수욕장", + "시간": "11:18:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2116, + "역명": "다대포해수욕장", + "시간": "11:27:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1147, + "역명": "다대포해수욕장", + "시간": "14:12:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 27, + "열번": 2174, + "역명": "다대포해수욕장", + "시간": "14:21:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 27, + "열번": 1205, + "역명": "다대포해수욕장", + "시간": "17:06:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 27, + "열번": 2234, + "역명": "다대포해수욕장", + "시간": "17:14:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 28, + "열번": 1041, + "역명": "다대포해수욕장", + "시간": "09:02:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 28, + "열번": 4004, + "역명": "다대포해수욕장", + "시간": "09:11:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 29, + "열번": 1031, + "역명": "다대포해수욕장", + "시간": "08:37:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2062, + "역명": "다대포해수욕장", + "시간": "08:45:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1093, + "역명": "다대포해수욕장", + "시간": "11:30:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2120, + "역명": "다대포해수욕장", + "시간": "11:39:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1151, + "역명": "다대포해수욕장", + "시간": "14:24:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2178, + "역명": "다대포해수욕장", + "시간": "14:33:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1209, + "역명": "다대포해수욕장", + "시간": "17:18:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2238, + "역명": "다대포해수욕장", + "시간": "17:26:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 29, + "열번": 1261, + "역명": "다대포해수욕장", + "시간": "20:13:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 29, + "열번": 2284, + "역명": "다대포해수욕장", + "시간": "20:21:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 29, + "열번": 1301, + "역명": "다대포해수욕장", + "시간": "23:08:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 30, + "열번": 1049, + "역명": "다대포해수욕장", + "시간": "09:22:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2078, + "역명": "다대포해수욕장", + "시간": "09:33:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1109, + "역명": "다대포해수욕장", + "시간": "12:18:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2136, + "역명": "다대포해수욕장", + "시간": "12:27:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1167, + "역명": "다대포해수욕장", + "시간": "15:12:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 30, + "열번": 2194, + "역명": "다대포해수욕장", + "시간": "15:21:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 30, + "열번": 1225, + "역명": "다대포해수욕장", + "시간": "18:06:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 30, + "열번": 4006, + "역명": "다대포해수욕장", + "시간": "18:16:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 31, + "열번": 1035, + "역명": "다대포해수욕장", + "시간": "08:47:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2066, + "역명": "다대포해수욕장", + "시간": "08:57:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1097, + "역명": "다대포해수욕장", + "시간": "11:42:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2124, + "역명": "다대포해수욕장", + "시간": "11:51:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1155, + "역명": "다대포해수욕장", + "시간": "14:36:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2182, + "역명": "다대포해수욕장", + "시간": "14:45:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1213, + "역명": "다대포해수욕장", + "시간": "17:30:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2242, + "역명": "다대포해수욕장", + "시간": "17:39:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 31, + "열번": 1265, + "역명": "다대포해수욕장", + "시간": "20:29:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 31, + "열번": 2288, + "역명": "다대포해수욕장", + "시간": "20:37:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "다대포해수욕장입", + "DIA": 31, + "열번": 1305, + "역명": "다대포해수욕장", + "시간": "23:28:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "다대포해수욕장출", + "DIA": 32, + "열번": 2210, + "역명": "다대포해수욕장", + "시간": "16:07:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 32, + "열번": 1239, + "역명": "다대포해수욕장", + "시간": "18:52:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 32, + "열번": 2264, + "역명": "다대포해수욕장", + "시간": "19:01:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 32, + "열번": 1285, + "역명": "다대포해수욕장", + "시간": "21:49:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 32, + "열번": 2306, + "역명": "다대포해수욕장", + "시간": "21:59:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 33, + "열번": 1037, + "역명": "다대포해수욕장", + "시간": "08:52:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2068, + "역명": "다대포해수욕장", + "시간": "09:03:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1099, + "역명": "다대포해수욕장", + "시간": "11:48:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2126, + "역명": "다대포해수욕장", + "시간": "11:57:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1157, + "역명": "다대포해수욕장", + "시간": "14:42:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2184, + "역명": "다대포해수욕장", + "시간": "14:51:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1215, + "역명": "다대포해수욕장", + "시간": "17:36:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 33, + "열번": 2244, + "역명": "다대포해수욕장", + "시간": "17:46:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 33, + "열번": 1267, + "역명": "다대포해수욕장", + "시간": "20:37:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "노포입고", + "DIA": 33, + "열번": 2290, + "역명": "다대포해수욕장", + "시간": "20:45:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 35, + "열번": 1045, + "역명": "다대포해수욕장", + "시간": "09:12:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2074, + "역명": "다대포해수욕장", + "시간": "09:21:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1105, + "역명": "다대포해수욕장", + "시간": "12:06:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2132, + "역명": "다대포해수욕장", + "시간": "12:15:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1163, + "역명": "다대포해수욕장", + "시간": "15:00:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2190, + "역명": "다대포해수욕장", + "시간": "15:09:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1221, + "역명": "다대포해수욕장", + "시간": "17:54:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2250, + "역명": "다대포해수욕장", + "시간": "18:07:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1271, + "역명": "다대포해수욕장", + "시간": "20:53:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 35, + "열번": 2294, + "역명": "다대포해수욕장", + "시간": "21:01:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 35, + "열번": 1309, + "역명": "다대포해수욕장", + "시간": "23:49:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "신평입고", + "DIA": 35, + "열번": 4806, + "역명": "다대포해수욕장", + "시간": "23:57:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "노포출고", + "DIA": 37, + "열번": 1055, + "역명": "다대포해수욕장", + "시간": "09:37:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2084, + "역명": "다대포해수욕장", + "시간": "09:51:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1115, + "역명": "다대포해수욕장", + "시간": "12:36:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2142, + "역명": "다대포해수욕장", + "시간": "12:45:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1173, + "역명": "다대포해수욕장", + "시간": "15:30:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2200, + "역명": "다대포해수욕장", + "시간": "15:39:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1231, + "역명": "다대포해수욕장", + "시간": "18:24:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2258, + "역명": "다대포해수욕장", + "시간": "18:37:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1279, + "역명": "다대포해수욕장", + "시간": "21:25:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "하", + "입출고": "", + "DIA": 37, + "열번": 2302, + "역명": "다대포해수욕장", + "시간": "21:39:00", + "요일구분": "일요일/공휴일" + }, + { + "상하": "상", + "입출고": "", + "DIA": 37, + "열번": 1315, + "역명": "다대포해수욕장", + "시간": "00:24:00", + "요일구분": "일요일/공휴일" + } +] \ No newline at end of file diff --git a/data/fault_data.json b/data/fault_data.json new file mode 100644 index 0000000..4f74e13 --- /dev/null +++ b/data/fault_data.json @@ -0,0 +1,169 @@ +{ + "train_numbers": [ + "101B", + "102B", + "103B", + "104B", + "105B", + "106B", + "107B", + "108B", + "109B", + "110B", + "111B", + "112B", + "113B", + "114B", + "115B", + "116B", + "117B", + "118B", + "119B", + "120B", + "121A", + "122B", + "123B", + "124B", + "125A", + "126B", + "127B", + "128B", + "129B", + "130A", + "131A", + "132B", + "133A", + "134A", + "135B", + "136B", + "137B", + "138B", + "139A", + "140B", + "141B", + "142A", + "143B", + "144B", + "145A", + "146A", + "147A", + "148A", + "149A", + "150A", + "151A" + ], + "stations": [ + "신평역", + "하단역", + "당리역", + "사하역", + "괴정역", + "대티역", + "서대신역", + "동대신역", + "토성역", + "자갈치역", + "남포역", + "중앙역", + "부산역", + "초량역", + "부산진역", + "좌천역", + "범일역", + "범내골역", + "서면역", + "부암역", + "가야역", + "동의대역", + "개금역", + "냉정역", + "주례역", + "감전역", + "사상역", + "덕포역", + "모덕역", + "모라역", + "구남역", + "구명역", + "덕천역", + "수정역", + "화명역", + "율리역", + "동원역", + "금곡역", + "호포역", + "증산역", + "부산대역", + "장전역", + "남산역", + "만덕역", + "미남역", + "사직역", + "종합운동장역", + "거제역", + "연산역", + "시청역", + "양정역", + "부전역", + "서면역", + "범내골역", + "범일역" + ], + "column_numbers": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10" + ], + "device_categories": [ + "추진장치", + "제동장치", + "출입문", + "냉난방", + "조명", + "방송", + "ATC/ATO", + "집전장치", + "차체", + "대차", + "기타" + ], + "fault_codes": [ + "F001", + "F002", + "F003", + "F004", + "F005", + "F006", + "F007", + "F008", + "F009", + "F010", + "F011", + "F012", + "F013", + "F014", + "F015", + "F016", + "F017", + "F018", + "F019", + "F020", + "F021", + "F022", + "F023", + "F024", + "F025", + "F026", + "F027", + "F028", + "F029", + "F030" + ] +} \ No newline at end of file diff --git a/data/field_settings.json.bak b/data/field_settings.json.bak new file mode 100644 index 0000000..e17acdc --- /dev/null +++ b/data/field_settings.json.bak @@ -0,0 +1,384 @@ +{ + "1팀": { + "지시": [ + { + "name": "created_date", + "visible": true, + "width": 100, + "display_format": "full" + }, + { + "name": "created_team", + "visible": true, + "width": 70, + "display_format": null + }, + { + "name": "instructor", + "visible": true, + "width": 80, + "display_format": null + }, + { + "name": "instruction_content", + "visible": true, + "width": 300, + "display_format": null + }, + { + "name": "instruction_date", + "visible": true, + "width": 100, + "display_format": "full" + }, + { + "name": "is_continuous", + "visible": true, + "width": 50, + "display_format": null + }, + { + "name": "team_confirmations", + "visible": true, + "width": 120, + "display_format": null + }, + { + "name": "is_completed", + "visible": true, + "width": 50, + "display_format": null + } + ], + "고장": [ + { + "name": "occurrence_date", + "visible": true, + "width": 70, + "display_format": "full" + }, + { + "name": "column_number", + "visible": true, + "width": 60, + "display_format": null + }, + { + "name": "train_number", + "visible": true, + "width": 50, + "display_format": null + }, + { + "name": "car_number", + "visible": true, + "width": 50, + "display_format": null + }, + { + "name": "fault_code", + "visible": false, + "width": 70, + "display_format": null + }, + { + "name": "device_category", + "visible": true, + "width": 110, + "display_format": null + }, + { + "name": "occurrence_station", + "visible": true, + "width": 90, + "display_format": null + }, + { + "name": "occurrence_time", + "visible": false, + "width": 90, + "display_format": null + }, + { + "name": "fault_content", + "visible": true, + "width": 255, + "display_format": null + }, + { + "name": "action_content", + "visible": true, + "width": 224, + "display_format": null + }, + { + "name": "fault_source", + "visible": true, + "width": 98, + "display_format": null + }, + { + "name": "attachments", + "visible": true, + "width": 72, + "display_format": null + }, + { + "name": "action_team", + "visible": true, + "width": 72, + "display_format": null + }, + { + "name": "team_confirmations", + "visible": true, + "width": 77, + "display_format": null + }, + { + "name": "is_completed", + "visible": true, + "width": 62, + "display_format": null + } + ], + "작업": [ + { + "name": "work_date", + "visible": true, + "width": 100, + "display_format": "full" + }, + { + "name": "work_entity", + "visible": true, + "width": 100, + "display_format": null + }, + { + "name": "target_train", + "visible": true, + "width": 80, + "display_format": null + }, + { + "name": "target_device", + "visible": true, + "width": 100, + "display_format": null + }, + { + "name": "work_content", + "visible": true, + "width": 250, + "display_format": null + }, + { + "name": "remarks", + "visible": true, + "width": 150, + "display_format": null + }, + { + "name": "team_confirmations", + "visible": true, + "width": 120, + "display_format": null + }, + { + "name": "is_completed", + "visible": true, + "width": 50, + "display_format": null + } + ], + "기타": [ + { + "name": "created_date", + "visible": true, + "width": 100, + "display_format": "full" + }, + { + "name": "created_team", + "visible": true, + "width": 70, + "display_format": null + }, + { + "name": "reporter", + "visible": true, + "width": 80, + "display_format": null + }, + { + "name": "report_content", + "visible": true, + "width": 300, + "display_format": null + }, + { + "name": "remarks", + "visible": true, + "width": 150, + "display_format": null + }, + { + "name": "related_document", + "visible": true, + "width": 100, + "display_format": null + }, + { + "name": "team_confirmations", + "visible": true, + "width": 120, + "display_format": null + }, + { + "name": "is_completed", + "visible": true, + "width": 50, + "display_format": null + } + ] + }, + "2팀": { + "지시": [ + { + "name": "created_date", + "visible": true, + "width": 100, + "display_format": null + }, + { + "name": "created_team", + "visible": true, + "width": 70, + "display_format": null + }, + { + "name": "instructor", + "visible": true, + "width": 80, + "display_format": null + }, + { + "name": "instruction_content", + "visible": true, + "width": 608, + "display_format": null + }, + { + "name": "instruction_date", + "visible": true, + "width": 100, + "display_format": null + }, + { + "name": "is_continuous", + "visible": true, + "width": 50, + "display_format": null + }, + { + "name": "team_confirmations", + "visible": true, + "width": 120, + "display_format": null + }, + { + "name": "is_completed", + "visible": true, + "width": 410, + "display_format": null + } + ], + "고장": [ + { + "name": "occurrence_date", + "visible": true, + "width": 69, + "display_format": "month_day" + }, + { + "name": "column_number", + "visible": true, + "width": 65, + "display_format": null + }, + { + "name": "train_number", + "visible": true, + "width": 56, + "display_format": null + }, + { + "name": "car_number", + "visible": true, + "width": 50, + "display_format": null + }, + { + "name": "fault_code", + "visible": true, + "width": 88, + "display_format": null + }, + { + "name": "device_category", + "visible": true, + "width": 110, + "display_format": null + }, + { + "name": "occurrence_station", + "visible": true, + "width": 90, + "display_format": null + }, + { + "name": "occurrence_time", + "visible": false, + "width": 90, + "display_format": null + }, + { + "name": "fault_content", + "visible": true, + "width": 300, + "display_format": null + }, + { + "name": "action_content", + "visible": true, + "width": 154, + "display_format": null + }, + { + "name": "fault_source", + "visible": true, + "width": 100, + "display_format": null + }, + { + "name": "action_team", + "visible": true, + "width": 73, + "display_format": null + }, + { + "name": "team_confirmations", + "visible": true, + "width": 73, + "display_format": null + }, + { + "name": "is_completed", + "visible": true, + "width": 313, + "display_format": null + } + ] + } +} \ No newline at end of file diff --git a/data/handover.db b/data/handover.db new file mode 100644 index 0000000..5065a8d Binary files /dev/null and b/data/handover.db differ diff --git a/data/settings.db b/data/settings.db new file mode 100644 index 0000000..ab5c20b Binary files /dev/null and b/data/settings.db differ diff --git a/data/weather_debug.html b/data/weather_debug.html new file mode 100644 index 0000000..7c5e78d --- /dev/null +++ b/data/weather_debug.html @@ -0,0 +1,3492 @@ + + + + + +
+

일별 예보

+
+ +
+
+ + + + + + +
+
+

18일(일)오늘

+ +
+ + +
오전
+ +
맑음
+ + +
+
오후
+ +
맑음
+ + +
+
+
최저 : 4℃
+
최고 : 14℃
+
+
오전 강수확률-
+
오후 강수확률0%
+ + + +
+
+
+ + + + + + + +
+
+

19일(월)내일

+ +
+ + +
오전
+ +
구름많음
+ + +
+
오후
+ +
흐림
+ + +
+
+
최저 : 5℃
+
최고 : 10℃
+
+
오전 강수확률10%
+
오후 강수확률30%
+ + + +
+
+
+ + + + + + + +
+
+

20일(화)모레

+ +
+ + +
오전
+ +
흐림
+ + +
+
오후
+ +
맑음
+ + +
+
+
최저 : -3℃
+
최고 : 6℃
+
+
오전 강수확률30%
+
오후 강수확률0%
+ + + +
+
+
+ + + + + + + +
+
+ +

21일(수)

+
+ + +
오전
+ +
구름많음
+ + +
+
오후
+ +
맑음
+ + +
+
+
최저 : -6℃
+
최고 : 1℃
+
+
오전 강수확률10%
+
오후 강수확률0%
+ + + +
+
+
+ + + + + + + +
+
+ +

22일(목)

+
+ + +
오전
+ +
맑음
+ + +
+
오후
+ +
맑음
+ + +
+
+
최저 : -7℃
+
최고 : 3℃
+
+
오전 강수확률10%
+
오후 강수확률10%
+ + + +
+
+
+ + + + + + + +
+
+ +

23일(금)

+
+ + +
오전
+ +
맑음
+ + +
+
오후
+ +
맑음
+ + +
+
+
최저 : -5℃
+
최고 : 5℃
+
+
오전 강수확률10%
+
오후 강수확률10%
+ + + +
+
+
+ + + + + + + +
+
+ +

24일(토)

+
+ + +
오전
+ +
맑음
+ + +
+
오후
+ +
맑음
+ + +
+
+
최저 : -3℃
+
최고 : 5℃
+
+
오전 강수확률10%
+
오후 강수확률10%
+ + + +
+
+
+ + + + + + + +
+
+ +

25일(일)

+
+ + +
오전
+ +
맑음
+ + +
+
오후
+ +
맑음
+ + +
+
+
최저 : -4℃
+
최고 : 5℃
+
+
오전 강수확률10%
+
오후 강수확률10%
+ + + +
+
+
+ + + + + + + +
+
+ +

26일(월)

+
+ + + +
종일
맑음
+
+
최저 : -3℃
+
최고 : 6℃
+
+
강수확률10%
+ + +
+
+
+ + + + + + + +
+
+ +

27일(화)

+
+ + + +
종일
맑음
+
+
최저 : 0℃
+
최고 : 7℃
+
+
강수확률10%
+ + +
+
+
+ + + + + + + +
+
+ +

28일(수)

+
+ + + +
종일
맑음
+
+
최저 : -1℃
+
최고 : 7℃
+
+
강수확률10%
+ + +
+
+
+ + +
+
+
+
+
+
+

시간별 예보

+ +
+
+ +
+ 닫기 +

시계열 표현

+ +
+
+
시간별예보 건너뛰기
+
+

+ 예보요소별 시간안내(1시간 간격) * 시각: 01시 기준 예시 -날씨: 이전 1시간(00시~01시)의 날씨-기온: 01시 정시 기온-체감온도: 01시 정시 체감온도 -강수량: 이전 1시간(00시~01시) 강수량 * '~1'은 1mm미만(예상강수량<1)을 나타냄 -강수강도: 이전 1시간(00시~01시) 강수량 또는 신적설을 텍스트 기반 체감도 높은 정보로 표출 -강수확률: 이전 1시간(00시~01시) 강수확률 -바람: 01시 정시 바람(풍향 및 강도, 풍속) -습도: 01시 정시 습도

+ + + +
+
+ + +
+

오늘

+
+
+ 18일(일) + + 최저-최고14℃ + +
    +
  • 시각
  • +
  • 날씨
  • +
  • 기온
    (체감)
  • +
  • 강수량
  • + +
  • 강수강도
  • +
  • 강수
    확률
  • +
  • 바람
  • +
  • 습도
  • +
  • 한파
    영향
  • +
+
+
+ + + + + +
    +
  • 시각: 09시
  • +
  • 날씨: 맑음
  • +
  • 기온(체감온도) 5℃(5℃)
  • +
  • 체감온도: 5℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률:  
  • + + + +
  • 바람: -
  • + + +
  • 습도: 75%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 10시
  • +
  • 날씨: 맑음
  • +
  • 기온(체감온도) 8℃(8℃)
  • +
  • 체감온도: 8℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률:  
  • + + +
  • + + + 바람: 동풍 + + + + + 1m/s +
  • + + + +
  • 습도: 65%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 11시
  • +
  • 날씨: 맑음
  • +
  • 기온(체감온도) 11℃(11℃)
  • +
  • 체감온도: 11℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률:  
  • + + +
  • + + + 바람: 동풍 + + + + + 1m/s +
  • + + + +
  • 습도: 60%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 12시
  • +
  • 날씨: 맑음
  • +
  • 기온(체감온도) 13℃(13℃)
  • +
  • 체감온도: 13℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률:  
  • + + +
  • + + + 바람: 동풍 + + + + + 1m/s +
  • + + + +
  • 습도: 50%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 13시
  • +
  • 날씨: 맑음
  • +
  • 기온(체감온도) 14℃(14℃)
  • +
  • 체감온도: 14℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률:  
  • + + +
  • + + + 바람: 동풍 + + + + + 2m/s +
  • + + + +
  • 습도: 45%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 14시
  • +
  • 날씨: 맑음
  • +
  • 기온(체감온도) 14℃(14℃)
  • +
  • 체감온도: 14℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률:  
  • + + +
  • + + + 바람: 동풍 + + + + + 1m/s +
  • + + + +
  • 습도: 50%
  • +
  • 한파영향:
  • +
+ + + + + + + +
    +
  • 시각: 15시
  • +
  • 날씨: 맑음
  • +
  • 기온(체감온도) 14℃(14℃)
  • +
  • 체감온도: 14℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 0%
  • + + +
  • + + + 바람: 동풍 + + + + + 1m/s +
  • + + + +
  • 습도: 50%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 16시
  • +
  • 날씨: 맑음
  • +
  • 기온(체감온도) 14℃(14℃)
  • +
  • 체감온도: 14℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 0%
  • + + +
  • + + + 바람: 동풍 + + + + + 1m/s +
  • + + + +
  • 습도: 50%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 17시
  • +
  • 날씨: 맑음
  • +
  • 기온(체감온도) 12℃(12℃)
  • +
  • 체감온도: 12℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 0%
  • + + +
  • + + + 바람: 동풍 + + + + + 1m/s +
  • + + + +
  • 습도: 55%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 18시
  • +
  • 날씨: 맑음
  • +
  • 기온(체감온도) 11℃(11℃)
  • +
  • 체감온도: 11℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 0%
  • + + + +
  • 바람: -
  • + + +
  • 습도: 65%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 19시
  • +
  • 날씨: 맑음
  • +
  • 기온(체감온도) 10℃(10℃)
  • +
  • 체감온도: 10℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 0%
  • + + +
  • + + + 바람: 북풍 + + + + + 1m/s +
  • + + + +
  • 습도: 75%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 20시
  • +
  • 날씨: 맑음
  • +
  • 기온(체감온도) 9℃(9℃)
  • +
  • 체감온도: 9℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 0%
  • + + +
  • + + + 바람: 북풍 + + + + + 1m/s +
  • + + + +
  • 습도: 75%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 21시
  • +
  • 날씨: 맑음
  • +
  • 기온(체감온도) 8℃(8℃)
  • +
  • 체감온도: 8℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 0%
  • + + +
  • + + + 바람: 북풍 + + + + + 1m/s +
  • + + + +
  • 습도: 75%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 22시
  • +
  • 날씨: 맑음
  • +
  • 기온(체감온도) 7℃(7℃)
  • +
  • 체감온도: 7℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 0%
  • + + +
  • + + + 바람: 북풍 + + + + + 1m/s +
  • + + + +
  • 습도: 80%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 23시
  • +
  • 날씨: 맑음
  • +
  • 기온(체감온도) 7℃(7℃)
  • +
  • 체감온도: 7℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 0%
  • + + +
  • + + + 바람: 북풍 + + + + + 1m/s +
  • + + + +
  • 습도: 80%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 0시
  • +
  • 날씨: 맑음
  • +
  • 기온(체감온도) 6℃(6℃)
  • +
  • 체감온도: 6℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 0%
  • + + + +
  • 바람: -
  • + + +
  • 습도: 80%
  • +
  • 한파영향:
  • +
+ + + +
+
+
+ + + +
+

내일

+
+
+ 19일(월) + + 최저5℃최고10℃ + +
    +
  • 시각
  • +
  • 날씨
  • +
  • 기온
    (체감)
  • +
  • 강수량
  • + +
  • 강수강도
  • +
  • 강수
    확률
  • +
  • 바람
  • +
  • 습도
  • +
  • 한파
    영향
  • +
+
+
+ + + + + + +
    +
  • 시각: 01시
  • +
  • 날씨: 맑음
  • +
  • 기온(체감온도) 6℃(6℃)
  • +
  • 체감온도: 6℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 0%
  • + + +
  • + + + 바람: 북풍 + + + + + 1m/s +
  • + + + +
  • 습도: 85%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 02시
  • +
  • 날씨: 맑음
  • +
  • 기온(체감온도) 6℃(6℃)
  • +
  • 체감온도: 6℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 0%
  • + + +
  • + + + 바람: 북풍 + + + + + 1m/s +
  • + + + +
  • 습도: 85%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 03시
  • +
  • 날씨: 맑음
  • +
  • 기온(체감온도) 5℃(5℃)
  • +
  • 체감온도: 5℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 0%
  • + + +
  • + + + 바람: 북풍 + + + + + 1m/s +
  • + + + +
  • 습도: 85%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 04시
  • +
  • 날씨: 맑음
  • +
  • 기온(체감온도) 5℃(5℃)
  • +
  • 체감온도: 5℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 0%
  • + + + +
  • 바람: -
  • + + +
  • 습도: 85%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 05시
  • +
  • 날씨: 맑음
  • +
  • 기온(체감온도) 5℃(5℃)
  • +
  • 체감온도: 5℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 0%
  • + + + +
  • 바람: -
  • + + +
  • 습도: 85%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 06시
  • +
  • 날씨: 맑음
  • +
  • 기온(체감온도) 5℃(5℃)
  • +
  • 체감온도: 5℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 0%
  • + + +
  • + + + 바람: 북풍 + + + + + 1m/s +
  • + + + +
  • 습도: 85%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 07시
  • +
  • 날씨: 맑음
  • +
  • 기온(체감온도) 5℃(5℃)
  • +
  • 체감온도: 5℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 0%
  • + + +
  • + + + 바람: 북풍 + + + + + 1m/s +
  • + + + +
  • 습도: 85%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 08시
  • +
  • 날씨: 흐림
  • +
  • 기온(체감온도) 5℃(5℃)
  • +
  • 체감온도: 5℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 30%
  • + + +
  • + + + 바람: 북서풍 + + + + + 1m/s +
  • + + + +
  • 습도: 70%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 09시
  • +
  • 날씨: 구름 많음
  • +
  • 기온(체감온도) 6℃(6℃)
  • +
  • 체감온도: 6℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 20%
  • + + +
  • + + + 바람: 북서풍 + + + + + 1m/s +
  • + + + +
  • 습도: 65%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 10시
  • +
  • 날씨: 흐림
  • +
  • 기온(체감온도) 8℃(8℃)
  • +
  • 체감온도: 8℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 30%
  • + + +
  • + + + 바람: 서풍 + + + + + 1m/s +
  • + + + +
  • 습도: 50%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 11시
  • +
  • 날씨: 구름 많음
  • +
  • 기온(체감온도) 10℃(10℃)
  • +
  • 체감온도: 10℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 20%
  • + + +
  • + + + 바람: 북서풍 + + + + + 1m/s +
  • + + + +
  • 습도: 50%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 12시
  • +
  • 날씨: 흐림
  • +
  • 기온(체감온도) 10℃(9℃)
  • +
  • 체감온도: 9℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 30%
  • + + +
  • + + + 바람: 북서풍 + + + + + 2m/s +
  • + + + +
  • 습도: 50%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 13시
  • +
  • 날씨: 구름 많음
  • +
  • 기온(체감온도) 10℃(9℃)
  • +
  • 체감온도: 9℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 20%
  • + + +
  • + + + 바람: 북서풍 + + + + + 2m/s +
  • + + + +
  • 습도: 50%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 14시
  • +
  • 날씨: 구름 많음
  • +
  • 기온(체감온도) 10℃(9℃)
  • +
  • 체감온도: 9℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 20%
  • + + +
  • + + + 바람: 북서풍 + + + + + 3m/s +
  • + + + +
  • 습도: 45%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 15시
  • +
  • 날씨: 흐림
  • +
  • 기온(체감온도) 10℃(9℃)
  • +
  • 체감온도: 9℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 30%
  • + + +
  • + + + 바람: 북서풍 + + + + + 3m/s +
  • + + + +
  • 습도: 40%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 16시
  • +
  • 날씨: 구름 많음
  • +
  • 기온(체감온도) 10℃(9℃)
  • +
  • 체감온도: 9℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 20%
  • + + +
  • + + + 바람: 북서풍 + + + + + 3m/s +
  • + + + +
  • 습도: 30%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 17시
  • +
  • 날씨: 흐림
  • +
  • 기온(체감온도) 8℃(6℃)
  • +
  • 체감온도: 6℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 30%
  • + + +
  • + + + 바람: 북서풍 + + + + + 3m/s +
  • + + + +
  • 습도: 30%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 18시
  • +
  • 날씨: 흐림
  • +
  • 기온(체감온도) 7℃(5℃)
  • +
  • 체감온도: 5℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 30%
  • + + +
  • + + + 바람: 북서풍 + + + + + 4m/s +
  • + + + +
  • 습도: 30%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 19시
  • +
  • 날씨: 흐림
  • +
  • 기온(체감온도) 5℃(2℃)
  • +
  • 체감온도: 2℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 30%
  • + + +
  • + + + 바람: 북서풍 + + + + + 4m/s +
  • + + + +
  • 습도: 25%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 20시
  • +
  • 날씨: 흐림
  • +
  • 기온(체감온도) 4℃(1℃)
  • +
  • 체감온도: 1℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 30%
  • + + +
  • + + + 바람: 북서풍 + + + + + 3m/s +
  • + + + +
  • 습도: 20%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 21시
  • +
  • 날씨: 흐림
  • +
  • 기온(체감온도) 3℃(0℃)
  • +
  • 체감온도: 0℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 30%
  • + + +
  • + + + 바람: 북서풍 + + + + + 4m/s +
  • + + + +
  • 습도: 20%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 22시
  • +
  • 날씨: 흐림
  • +
  • 기온(체감온도) 2℃(-2℃)
  • +
  • 체감온도: -2℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 30%
  • + + +
  • + + + 바람: 북서풍 + + + + 약간 강 + 5m/s +
  • + + + +
  • 습도: 15%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 23시
  • +
  • 날씨: 흐림
  • +
  • 기온(체감온도) 2℃(-2℃)
  • +
  • 체감온도: -2℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 30%
  • + + +
  • + + + 바람: 북서풍 + + + + 약간 강 + 5m/s +
  • + + + +
  • 습도: 20%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 0시
  • +
  • 날씨: 흐림
  • +
  • 기온(체감온도) 1℃(-3℃)
  • +
  • 체감온도: -3℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 30%
  • + + +
  • + + + 바람: 북서풍 + + + + 약간 강 + 4m/s +
  • + + + +
  • 습도: 20%
  • +
  • 한파영향:
  • +
+ + + +
+
+
+ + + +
+

모레

+
+
+ 20일(화) + + 최저-3℃최고6℃ + +
    +
  • 시각
  • +
  • 날씨
  • +
  • 기온
    (체감)
  • +
  • 강수량
  • + +
  • 강수강도
  • +
  • 강수
    확률
  • +
  • 바람
  • +
  • 습도
  • +
  • 한파
    영향
  • +
+
+
+ + + + + + +
    +
  • 시각: 01시
  • +
  • 날씨: 흐림
  • +
  • 기온(체감온도) 1℃(-3℃)
  • +
  • 체감온도: -3℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 30%
  • + + +
  • + + + 바람: 북서풍 + + + + + 3m/s +
  • + + + +
  • 습도: 20%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 02시
  • +
  • 날씨: 흐림
  • +
  • 기온(체감온도) 0℃(-5℃)
  • +
  • 체감온도: -5℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 30%
  • + + +
  • + + + 바람: 북서풍 + + + + 약간 강 + 4m/s +
  • + + + +
  • 습도: 20%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 03시
  • +
  • 날씨: 흐림
  • +
  • 기온(체감온도) 0℃(-4℃)
  • +
  • 체감온도: -4℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 30%
  • + + +
  • + + + 바람: 북서풍 + + + + 약간 강 + 4m/s +
  • + + + +
  • 습도: 20%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 04시
  • +
  • 날씨: 흐림
  • +
  • 기온(체감온도) -1℃(-5℃)
  • +
  • 체감온도: -5℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 30%
  • + + +
  • + + + 바람: 북서풍 + + + + + 3m/s +
  • + + + +
  • 습도: 20%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 05시
  • +
  • 날씨: 흐림
  • +
  • 기온(체감온도) -1℃(-5℃)
  • +
  • 체감온도: -5℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 30%
  • + + +
  • + + + 바람: 북서풍 + + + + + 4m/s +
  • + + + +
  • 습도: 20%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 06시
  • +
  • 날씨: 구름 많음
  • +
  • 기온(체감온도) -1℃(-5℃)
  • +
  • 체감온도: -5℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 20%
  • + + +
  • + + + 바람: 북서풍 + + + + + 3m/s +
  • + + + +
  • 습도: 20%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 07시
  • +
  • 날씨: 구름 많음
  • +
  • 기온(체감온도) -1℃(-5℃)
  • +
  • 체감온도: -5℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 20%
  • + + +
  • + + + 바람: 북서풍 + + + + + 3m/s +
  • + + + +
  • 습도: 25%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 08시
  • +
  • 날씨: 구름 많음
  • +
  • 기온(체감온도) -2℃(-6℃)
  • +
  • 체감온도: -6℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 20%
  • + + +
  • + + + 바람: 북서풍 + + + + + 3m/s +
  • + + + +
  • 습도: 40%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 09시
  • +
  • 날씨: 구름 많음
  • +
  • 기온(체감온도) -1℃(-5℃)
  • +
  • 체감온도: -5℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 20%
  • + + +
  • + + + 바람: 북서풍 + + + + + 3m/s +
  • + + + +
  • 습도: 40%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 10시
  • +
  • 날씨: 흐림
  • +
  • 기온(체감온도) 1℃(-3℃)
  • +
  • 체감온도: -3℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 30%
  • + + +
  • + + + 바람: 북서풍 + + + + + 4m/s +
  • + + + +
  • 습도: 35%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 11시
  • +
  • 날씨: 흐림
  • +
  • 기온(체감온도) 2℃(-2℃)
  • +
  • 체감온도: -2℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 30%
  • + + +
  • + + + 바람: 북서풍 + + + + + 4m/s +
  • + + + +
  • 습도: 35%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 12시
  • +
  • 날씨: 흐림
  • +
  • 기온(체감온도) 4℃(1℃)
  • +
  • 체감온도: 1℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 30%
  • + + +
  • + + + 바람: 북서풍 + + + + + 4m/s +
  • + + + +
  • 습도: 35%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 13시
  • +
  • 날씨: 구름 많음
  • +
  • 기온(체감온도) 5℃(2℃)
  • +
  • 체감온도: 2℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 20%
  • + + +
  • + + + 바람: 북서풍 + + + + + 3m/s +
  • + + + +
  • 습도: 35%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 14시
  • +
  • 날씨: 맑음
  • +
  • 기온(체감온도) 5℃(2℃)
  • +
  • 체감온도: 2℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 0%
  • + + +
  • + + + 바람: 북서풍 + + + + + 3m/s +
  • + + + +
  • 습도: 30%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 15시
  • +
  • 날씨: 맑음
  • +
  • 기온(체감온도) 5℃(3℃)
  • +
  • 체감온도: 3℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 0%
  • + + +
  • + + + 바람: 북서풍 + + + + + 3m/s +
  • + + + +
  • 습도: 25%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 16시
  • +
  • 날씨: 맑음
  • +
  • 기온(체감온도) 5℃(3℃)
  • +
  • 체감온도: 3℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 0%
  • + + +
  • + + + 바람: 북서풍 + + + + + 3m/s +
  • + + + +
  • 습도: 25%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 17시
  • +
  • 날씨: 맑음
  • +
  • 기온(체감온도) 3℃(1℃)
  • +
  • 체감온도: 1℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 0%
  • + + +
  • + + + 바람: 북서풍 + + + + + 2m/s +
  • + + + +
  • 습도: 15%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 18시
  • +
  • 날씨: 맑음
  • +
  • 기온(체감온도) 1℃(-1℃)
  • +
  • 체감온도: -1℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 0%
  • + + +
  • + + + 바람: 북서풍 + + + + + 2m/s +
  • + + + +
  • 습도: 15%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 19시
  • +
  • 날씨: 맑음
  • +
  • 기온(체감온도) 0℃(-3℃)
  • +
  • 체감온도: -3℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 0%
  • + + +
  • + + + 바람: 북서풍 + + + + + 2m/s +
  • + + + +
  • 습도: 15%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 20시
  • +
  • 날씨: 맑음
  • +
  • 기온(체감온도) 0℃(-3℃)
  • +
  • 체감온도: -3℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 0%
  • + + +
  • + + + 바람: 북서풍 + + + + + 2m/s +
  • + + + +
  • 습도: 15%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 21시
  • +
  • 날씨: 맑음
  • +
  • 기온(체감온도) -1℃(-5℃)
  • +
  • 체감온도: -5℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 0%
  • + + +
  • + + + 바람: 북서풍 + + + + + 3m/s +
  • + + + +
  • 습도: 15%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 22시
  • +
  • 날씨: 맑음
  • +
  • 기온(체감온도) -2℃(-6℃)
  • +
  • 체감온도: -6℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 0%
  • + + +
  • + + + 바람: 북서풍 + + + + + 3m/s +
  • + + + +
  • 습도: 20%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 23시
  • +
  • 날씨: 맑음
  • +
  • 기온(체감온도) -2℃(-6℃)
  • +
  • 체감온도: -6℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 0%
  • + + +
  • + + + 바람: 북서풍 + + + + + 3m/s +
  • + + + +
  • 습도: 20%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 0시
  • +
  • 날씨: 맑음
  • +
  • 기온(체감온도) -3℃(-7℃)
  • +
  • 체감온도: -7℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 0%
  • + + +
  • + + + 바람: 북서풍 + + + + + 3m/s +
  • + + + +
  • 습도: 20%
  • +
  • 한파영향:
  • +
+ + + +
+
+
+ + + + + + + + + + + + + + + + + + +
+
+
+
+
+
+
초단기 10분강수예측
+
+
+
+
+
+ +
+ 시계열예보안내 + 최근발표시각 +
+
+ 닫기 +
최근발표시각
+
초단기예보(현재부터 +6시간까지):
01.18.(일) 08:10
+
단기예보(초단기예보 이후 모레까지):
01.18.(일) 08:00
+
중기예보(단기예보 이후 10일까지):
01.18.(일) 06:00
+
+
+
+
+

대기질정보

+ +
+
+
+ 닫기 +
초미세먼지(㎛)
+

입자의 크기가 2.5㎛ 이하인 먼지

+
    +
  • 좋음
    (0~15)
  • +
  • 보통
    (16~35)
  • +
  • 나쁨
    (36~75)
  • +
  • 매우나쁨
    (76~)
  • +
+
+
+
+
+ 닫기 +
미세먼지(㎛)
+

입자의 크기가 10㎛ 이하인 먼지

+
    +
  • 좋음
    (0~30)
  • +
  • 보통
    (31~80)
  • +
  • 나쁨
    (81~150)
  • +
  • 매우나쁨
    (151~)
  • +
+
+
+
+
+ 닫기 +
오존(ppm)
+
    +
  • 좋음
    (0~0.03)
  • +
  • 보통
    (0.031~0.09)
  • +
  • 나쁨
    (0.091~0.15)
  • +
  • 매우나쁨
    (0.151~)
  • +
+
+
+
+
+ +
+

장림동측정소(도시대기) 01.18.(일) 08:00 기준

+

제공: 한국환경공단

+
+ diff --git a/data/weather_timestamp.txt b/data/weather_timestamp.txt new file mode 100644 index 0000000..312ef6b --- /dev/null +++ b/data/weather_timestamp.txt @@ -0,0 +1 @@ +2026-01-18T08:35:19.150599 \ No newline at end of file diff --git a/database/__init__.py b/database/__init__.py new file mode 100644 index 0000000..9b336c4 --- /dev/null +++ b/database/__init__.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- +""" +Database 모듈 패키지 +데이터베이스 관련 기능을 제공하는 모듈들의 집합 + +이 패키지는 다음을 포함합니다: +- db_manager: 데이터베이스 연결 관리 +- models: 데이터 모델 정의 +- crud: CRUD 연산 +- migrations: 데이터베이스 마이그레이션 +- sync_manager: 원격 DB 동기화 (추후 구현) +""" + +from .db_manager import DatabaseManager +from .models import * +from .crud import CRUDManager + +__all__ = [ + 'DatabaseManager', + 'CRUDManager', +] + + diff --git a/database/common_db_manager.py b/database/common_db_manager.py new file mode 100644 index 0000000..c596ddc --- /dev/null +++ b/database/common_db_manager.py @@ -0,0 +1,515 @@ +# -*- coding: utf-8 -*- +""" +공통 데이터베이스 관리 모듈 +변경이 거의 없는 공통 데이터(편성, 시각표, 고장코드, MMI코드, 시그널, 역명, 도면약어 등)를 관리합니다. +""" + +import sqlite3 +import threading +from pathlib import Path +from typing import Optional, List, Dict, Any +from contextlib import contextmanager + +from core.constants import DATA_DIR +from core.logger import get_logger +from core.exceptions import DatabaseConnectionError, DatabaseQueryError + +logger = get_logger(__name__) + +# 공통 데이터베이스 파일 경로 +COMMON_DB_FILE = DATA_DIR / "common_data.db" + + +# ============================================================================ +# 공통 데이터 테이블 SQL 스키마 +# ============================================================================ + +CREATE_COMMON_TABLES_SQL = """ +-- 전동차 편성 테이블 +CREATE TABLE IF NOT EXISTS train_formations ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + train_number TEXT UNIQUE NOT NULL, + is_new_train INTEGER DEFAULT 1, + manufacturer TEXT, + introduction_date DATE, + depot TEXT, + alias TEXT, + introduction_stage TEXT, + introduction_count INTEGER DEFAULT 0, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP +); + +-- 열차 다이아 시각표 테이블 +CREATE TABLE IF NOT EXISTS train_schedules ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + column_number TEXT NOT NULL, + station TEXT NOT NULL, + arrival_time TIME, + departure_time TIME, + direction TEXT NOT NULL DEFAULT 'up', + is_weekday INTEGER DEFAULT 1, + is_active INTEGER DEFAULT 1, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP, + UNIQUE(column_number, station, direction, is_weekday) +); + +-- 고장코드 테이블 +CREATE TABLE IF NOT EXISTS fault_codes ( + id TEXT PRIMARY KEY, + f_code TEXT NOT NULL, + f_code_num TEXT, + f_name TEXT NOT NULL, + car_type TEXT, + f_class TEXT, + fault_name TEXT, + grade TEXT, + device TEXT, + fault_detail TEXT, + fault_reaction TEXT, + fault_detection TEXT, + fault_clear TEXT, + fault_action TEXT, + fault_schematics TEXT, + car_id TEXT, + alias_name TEXT, + manufacturer TEXT, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP +); + +-- MMI 코드 테이블 +CREATE TABLE IF NOT EXISTS mmi_codes ( + id TEXT PRIMARY KEY, + code_name TEXT NOT NULL, + code_description TEXT, + data_type TEXT, + car_id TEXT, + alias_name TEXT, + manufacturer TEXT, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP +); + +-- 시그널 코드 테이블 +CREATE TABLE IF NOT EXISTS signals ( + id TEXT PRIMARY KEY, + sig_num TEXT NOT NULL, + signal_abbreviation TEXT NOT NULL, + signal_description TEXT, + status_value TEXT, + manufacturer TEXT, + classification TEXT, + original_data TEXT, + alias_name TEXT, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP +); + +-- 역명 테이블 +CREATE TABLE IF NOT EXISTS stations ( + id TEXT PRIMARY KEY, + line_number TEXT NOT NULL, + station_id TEXT NOT NULL, + station_name TEXT NOT NULL, + station_map TEXT, + is_underground INTEGER DEFAULT 0, + is_island INTEGER DEFAULT 0, + is_exchange INTEGER DEFAULT 0, + is_end INTEGER DEFAULT 0, + has_siding_track INTEGER DEFAULT 0, + has_signal_room INTEGER DEFAULT 0, + etc1 TEXT, + etc2 TEXT, + etc3 TEXT, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP, + UNIQUE(line_number, station_id) +); + +-- 도면약어 테이블 +CREATE TABLE IF NOT EXISTS drawer_abbreviations ( + id TEXT PRIMARY KEY, + abb TEXT NOT NULL, + classification TEXT, + related_drawings TEXT, + drawing_id TEXT, + manufacturer TEXT, + term TEXT, + pages TEXT, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP +); + +-- 인덱스 생성 +CREATE INDEX IF NOT EXISTS idx_fault_codes_f_code ON fault_codes(f_code); +CREATE INDEX IF NOT EXISTS idx_fault_codes_device ON fault_codes(device); +CREATE INDEX IF NOT EXISTS idx_mmi_codes_code_name ON mmi_codes(code_name); +CREATE INDEX IF NOT EXISTS idx_signals_sig_num ON signals(sig_num); +CREATE INDEX IF NOT EXISTS idx_signals_abbreviation ON signals(signal_abbreviation); +CREATE INDEX IF NOT EXISTS idx_stations_station_name ON stations(station_name); +CREATE INDEX IF NOT EXISTS idx_drawer_abbreviations_abb ON drawer_abbreviations(abb); +""" + + +# ============================================================================ +# 공통 데이터베이스 관리자 클래스 +# ============================================================================ + +class CommonDatabaseManager: + """ + 공통 데이터베이스 관리자 + + 변경이 거의 없는 공통 데이터를 관리하는 별도의 데이터베이스입니다. + """ + + _instance = None + _lock = threading.Lock() + _initialized = False + + def __new__(cls, db_path: Path = None): + if cls._instance is None: + with cls._lock: + if cls._instance is None: + cls._instance = super().__new__(cls) + cls._instance._initialized = False + return cls._instance + + def __init__(self, db_path: Path = None): + """공통 데이터베이스 관리자 초기화""" + if self._initialized: + return + + self.db_path = db_path or COMMON_DB_FILE + self._local = threading.local() + + # 데이터 디렉토리 생성 + DATA_DIR.mkdir(parents=True, exist_ok=True) + + # 데이터베이스 초기화 + self._initialize_database() + + self._initialized = True + logger.info(f"공통 데이터베이스 관리자 초기화 완료: {self.db_path}") + + def _initialize_database(self): + """데이터베이스 초기화 (테이블 생성)""" + try: + with self.get_connection() as conn: + conn.execute("PRAGMA foreign_keys = ON") + conn.executescript(CREATE_COMMON_TABLES_SQL) + conn.commit() + + logger.info("공통 데이터베이스 테이블 초기화 완료") + except Exception as e: + logger.error(f"공통 데이터베이스 초기화 실패: {e}") + raise DatabaseConnectionError(f"공통 데이터베이스 초기화 실패: {e}") + + @contextmanager + def get_connection(self): + """데이터베이스 연결 컨텍스트 매니저""" + if not hasattr(self._local, 'connection') or self._local.connection is None: + try: + self._local.connection = sqlite3.connect( + str(self.db_path), + check_same_thread=False, + timeout=30.0 + ) + self._local.connection.row_factory = sqlite3.Row + logger.debug(f"공통 데이터베이스 연결 생성: {self.db_path}") + except sqlite3.Error as e: + logger.error(f"공통 데이터베이스 연결 실패: {e}") + raise DatabaseConnectionError(f"공통 데이터베이스 연결 실패: {e}") + + try: + yield self._local.connection + except sqlite3.Error as e: + logger.error(f"공통 데이터베이스 쿼리 오류: {e}") + raise DatabaseQueryError(f"공통 데이터베이스 쿼리 오류: {e}") + finally: + # 연결은 스레드별로 유지하되, 필요시 닫을 수 있도록 + pass + + def execute(self, sql: str, params: tuple = ()) -> sqlite3.Cursor: + """SQL 실행""" + with self.get_connection() as conn: + return conn.execute(sql, params or ()) + + def executemany(self, sql: str, params_list: List[tuple]) -> sqlite3.Cursor: + """여러 SQL 실행""" + with self.get_connection() as conn: + return conn.executemany(sql, params_list) + + def fetch_one(self, sql: str, params: tuple = ()) -> Optional[Dict[str, Any]]: + """단일 행 조회""" + with self.get_connection() as conn: + cursor = conn.execute(sql, params or ()) + row = cursor.fetchone() + return dict(row) if row else None + + def fetch_all(self, sql: str, params: tuple = ()) -> List[Dict[str, Any]]: + """모든 행 조회""" + with self.get_connection() as conn: + cursor = conn.execute(sql, params or ()) + return [dict(row) for row in cursor.fetchall()] + + def commit(self): + """커밋""" + with self.get_connection() as conn: + conn.commit() + + def load_data_from_sql_files(self, sql_dir: Path = None): + """SQL 파일에서 데이터 로드""" + from database.sql_loader import load_sql_file + + if sql_dir is None: + sql_dir = Path(__file__).parent.parent / "ori_data" + + if not sql_dir.exists(): + logger.warning(f"SQL 파일 디렉토리가 없습니다: {sql_dir}") + return + + # 각 SQL 파일 처리 + sql_files = { + "Fault_Code_Table_rows.sql": self._load_fault_codes, + "MMI_Code_rows.sql": self._load_mmi_codes, + "Signals_rows.sql": self._load_signals, + "Stations_rows.sql": self._load_stations, + "drawer_abbreviation_rows.sql": self._load_drawer_abbreviations, + } + + for filename, loader_func in sql_files.items(): + sql_file = sql_dir / filename + if sql_file.exists(): + try: + logger.info(f"데이터 로드 중: {filename}") + records = load_sql_file(sql_file) + if records: + loader_func(records) + logger.info(f"데이터 로드 완료: {filename} ({len(records)}개 레코드)") + else: + logger.warning(f"파싱된 레코드가 없습니다: {filename}") + except Exception as e: + logger.error(f"데이터 로드 실패 ({filename}): {e}", exc_info=True) + else: + logger.warning(f"SQL 파일을 찾을 수 없습니다: {sql_file}") + + def _load_fault_codes(self, records: List[Dict[str, Any]]): + """고장코드 데이터 삽입""" + if not records: + return + + insert_sql = """ + INSERT OR REPLACE INTO fault_codes + (id, f_code, f_code_num, f_name, car_type, f_class, fault_name, grade, device, + fault_detail, fault_reaction, fault_detection, fault_clear, fault_action, + fault_schematics, car_id, alias_name, manufacturer, created_at, updated_at) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) + """ + + params_list = [] + for record in records: + # datetime 문자열 파싱 + created_at = self._parse_datetime(record.get('created_at')) + updated_at = self._parse_datetime(record.get('updated_at')) + + params_list.append(( + record.get('id'), + record.get('f_code'), + record.get('f_code_num'), + record.get('f_name'), + record.get('car_type'), + record.get('f_class'), + record.get('fault_name'), + record.get('grade'), + record.get('device'), + record.get('fault_detail'), + record.get('fault_reaction'), + record.get('fault_detection'), + record.get('fault_clear'), + record.get('fault_action'), + record.get('fault_schematics'), + record.get('car_id'), + record.get('alias_name'), + record.get('manufacturer'), + created_at, + updated_at + )) + + self.executemany(insert_sql, params_list) + self.commit() + logger.info(f"고장코드 데이터 삽입 완료: {len(params_list)}개") + + def _load_mmi_codes(self, records: List[Dict[str, Any]]): + """MMI 코드 데이터 삽입""" + if not records: + return + + insert_sql = """ + INSERT OR REPLACE INTO mmi_codes + (id, code_name, code_description, data_type, car_id, alias_name, manufacturer, created_at, updated_at) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?) + """ + + params_list = [] + for record in records: + created_at = self._parse_datetime(record.get('created_at')) + updated_at = self._parse_datetime(record.get('updated_at')) + + params_list.append(( + record.get('id'), + record.get('code_name'), + record.get('code_description'), + record.get('data_type'), + record.get('car_id'), + record.get('alias_name'), + record.get('manufacturer'), + created_at, + updated_at + )) + + self.executemany(insert_sql, params_list) + self.commit() + logger.info(f"MMI 코드 데이터 삽입 완료: {len(params_list)}개") + + def _load_signals(self, records: List[Dict[str, Any]]): + """시그널 코드 데이터 삽입""" + if not records: + return + + insert_sql = """ + INSERT OR REPLACE INTO signals + (id, sig_num, signal_abbreviation, signal_description, status_value, + manufacturer, classification, original_data, alias_name, created_at, updated_at) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) + """ + + params_list = [] + for record in records: + created_at = self._parse_datetime(record.get('created_at')) + updated_at = self._parse_datetime(record.get('updated_at')) + + params_list.append(( + record.get('id'), + record.get('sig_num'), + record.get('signal_abbreviation'), + record.get('signal_description'), + record.get('status_value'), + record.get('manufacturer'), + record.get('classification'), + record.get('original_data'), + record.get('alias_name'), + created_at, + updated_at + )) + + self.executemany(insert_sql, params_list) + self.commit() + logger.info(f"시그널 코드 데이터 삽입 완료: {len(params_list)}개") + + def _load_stations(self, records: List[Dict[str, Any]]): + """역명 데이터 삽입""" + if not records: + return + + insert_sql = """ + INSERT OR REPLACE INTO stations + (id, line_number, station_id, station_name, station_map, + is_underground, is_island, is_exchange, is_end, + has_siding_track, has_signal_room, etc1, etc2, etc3, created_at, updated_at) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) + """ + + params_list = [] + for record in records: + created_at = self._parse_datetime(record.get('created_at')) + updated_at = self._parse_datetime(record.get('updated_at')) + + # 불리언 문자열을 정수로 변환 + is_underground = 1 if str(record.get('is_underground', 'false')).lower() == 'true' else 0 + is_island = 1 if str(record.get('is_island', 'false')).lower() == 'true' else 0 + is_exchange = 1 if str(record.get('is_exchange', 'false')).lower() == 'true' else 0 + is_end = 1 if str(record.get('is_end', 'false')).lower() == 'true' else 0 + has_siding_track = 1 if str(record.get('has_siding_track', 'false')).lower() == 'true' else 0 + has_signal_room = 1 if str(record.get('has_signal_room', 'false')).lower() == 'true' else 0 + + params_list.append(( + record.get('id'), + record.get('line_number'), + record.get('station_id'), + record.get('station_name'), + record.get('station_map'), + is_underground, + is_island, + is_exchange, + is_end, + has_siding_track, + has_signal_room, + record.get('etc1'), + record.get('etc2'), + record.get('etc3'), + created_at, + updated_at + )) + + self.executemany(insert_sql, params_list) + self.commit() + logger.info(f"역명 데이터 삽입 완료: {len(params_list)}개") + + def _load_drawer_abbreviations(self, records: List[Dict[str, Any]]): + """도면약어 데이터 삽입""" + if not records: + return + + insert_sql = """ + INSERT OR REPLACE INTO drawer_abbreviations + (id, abb, classification, related_drawings, drawing_id, + manufacturer, term, pages, created_at, updated_at) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?) + """ + + params_list = [] + for record in records: + created_at = self._parse_datetime(record.get('created_at')) + updated_at = self._parse_datetime(record.get('updated_at')) + + params_list.append(( + record.get('id'), + record.get('abb'), + record.get('classification'), + record.get('Related_drawings'), # 원본 컬럼명 + record.get('drawing_id'), + record.get('manufacturer'), + record.get('term'), + record.get('pages'), + created_at, + updated_at + )) + + self.executemany(insert_sql, params_list) + self.commit() + logger.info(f"도면약어 데이터 삽입 완료: {len(params_list)}개") + + def _parse_datetime(self, dt_str: Optional[str]) -> Optional[str]: + """datetime 문자열 파싱""" + if not dt_str: + return None + + try: + # PostgreSQL 형식: '2025-10-12 15:03:22.31555+00' + # SQLite 형식으로 변환 + if isinstance(dt_str, str): + # 타임존 제거 + if '+' in dt_str: + dt_str = dt_str.split('+')[0] + # 밀리초 제거 (있는 경우) + if '.' in dt_str: + parts = dt_str.split('.') + dt_str = parts[0] + return dt_str + except Exception: + pass + + return None + diff --git a/database/crud.py b/database/crud.py new file mode 100644 index 0000000..c79121f --- /dev/null +++ b/database/crud.py @@ -0,0 +1,1963 @@ +# -*- coding: utf-8 -*- +""" +CRUD 연산 모듈 +데이터베이스의 Create, Read, Update, Delete 연산을 제공합니다. + +이 모듈은 모든 데이터베이스 입출력을 담당하며, +다른 모듈들은 이 모듈의 메서드를 통해서만 데이터베이스에 접근합니다. +""" + +from datetime import datetime, date, time +from typing import Optional, List, Dict, Any, Type, TypeVar +from dataclasses import dataclass + +from .db_manager import DatabaseManager, get_db +from .common_db_manager import CommonDatabaseManager +from .models import ( + BaseModel, + User, + Team, + Instruction, + Fault, + Work, + Misc, + DailyInspection, + Todo, + Memo, + Setting, + TeamMember, + DutySchedule, + TrainSchedule, + Weather, + MODEL_REGISTRY, +) +from core.logger import get_logger +from core.exceptions import ( + RecordNotFoundError, + DuplicateRecordError, + DatabaseQueryError, +) +from core.signals import get_signals + +# 로거 설정 +logger = get_logger(__name__) + +# 타입 변수 정의 +T = TypeVar('T', bound=BaseModel) + + +class CRUDManager: + """ + CRUD 연산 관리자 클래스 + + 모든 데이터베이스 CRUD 연산을 제공합니다. + 각 테이블별로 특화된 메서드와 공통 메서드를 제공합니다. + + Attributes: + db: 데이터베이스 관리자 인스턴스 + signals: 전역 시그널 인스턴스 + + Examples: + >>> crud = CRUDManager() + >>> instruction = crud.create_instruction( + ... created_date=date.today(), + ... created_team="A팀", + ... instructor="팀장", + ... instruction_content="지시 내용" + ... ) + >>> print(instruction.id) + """ + + _instance: Optional['CRUDManager'] = None + + def __new__(cls): + """싱글톤 패턴 구현""" + if cls._instance is None: + cls._instance = super().__new__(cls) + cls._instance._initialized = False + return cls._instance + + def __init__(self): + """CRUD 관리자 초기화""" + if self._initialized: + return + + self.db = get_db() + self.signals = get_signals() + self._initialized = True + logger.info("CRUD 관리자 초기화 완료") + + # ======================================================================== + # 공통 CRUD 메서드 + # ======================================================================== + + def _create( + self, + table_name: str, + model_class: Type[T], + data: Dict[str, Any] + ) -> T: + """ + 레코드를 생성합니다. + + Args: + table_name: 테이블 이름 + model_class: 모델 클래스 + data: 생성할 데이터 + + Returns: + 생성된 모델 인스턴스 + """ + # id, created_at, updated_at 제외 + data = {k: v for k, v in data.items() + if k not in ['id', 'created_at', 'updated_at'] and v is not None} + + # 컬럼과 값 분리 + columns = list(data.keys()) + values = list(data.values()) + placeholders = ','.join(['?' for _ in columns]) + + # SQL 예약어인 컬럼명은 따옴표로 감싸기 + quoted_columns = [f'"{col}"' if col.lower() in ['order', 'group', 'select', 'table'] else col + for col in columns] + + query = f""" + INSERT INTO {table_name} ({','.join(quoted_columns)}) + VALUES ({placeholders}) + """ + + try: + cursor = self.db.execute(query, tuple(values)) + record_id = cursor.lastrowid + + # 생성된 레코드 조회 + result = self._get_by_id(table_name, model_class, record_id) + + # 시그널 발생 + self.signals.record_created.emit(table_name, record_id) + self.signals.data_changed.emit(table_name) + + logger.info(f"레코드 생성: {table_name} ID={record_id}") + return result + + except Exception as e: + logger.error(f"레코드 생성 실패: {table_name} - {e}") + raise DatabaseQueryError(f"레코드 생성 실패: {e}") + + def _get_by_id( + self, + table_name: str, + model_class: Type[T], + record_id: int + ) -> Optional[T]: + """ + ID로 레코드를 조회합니다. + + Args: + table_name: 테이블 이름 + model_class: 모델 클래스 + record_id: 레코드 ID + + Returns: + 모델 인스턴스 또는 None + """ + query = f"SELECT * FROM {table_name} WHERE id = ?" + row = self.db.fetch_one(query, (record_id,)) + + if row: + return model_class(**row) + return None + + def _get_all( + self, + table_name: str, + model_class: Type[T], + order_by: str = "id DESC", + limit: int = None, + offset: int = None, + **filters + ) -> List[T]: + """ + 모든 레코드를 조회합니다. + + Args: + table_name: 테이블 이름 + model_class: 모델 클래스 + order_by: 정렬 기준 + limit: 최대 개수 + offset: 시작 위치 + **filters: 필터 조건 + + Returns: + 모델 인스턴스 리스트 + """ + query = f"SELECT * FROM {table_name}" + params = [] + + # WHERE 절 추가 + # 특수 파라미터는 필터에서 제외 (include_completed, include_continuous 등) + special_params = {'include_completed', 'include_continuous'} + + if filters: + conditions = [] + for key, value in filters.items(): + # 특수 파라미터는 제외 + if key in special_params: + continue + + if value is not None: + # SQL 예약어인 컬럼명은 따옴표로 감싸기 + quoted_key = f'"{key}"' if key.lower() in ['order', 'group', 'select', 'table'] else key + conditions.append(f"{quoted_key} = ?") + params.append(value) + + if conditions: + query += " WHERE " + " AND ".join(conditions) + + # ORDER BY 절 추가 + if order_by: + query += f" ORDER BY {order_by}" + + # LIMIT, OFFSET 추가 + if limit: + query += f" LIMIT {limit}" + if offset: + query += f" OFFSET {offset}" + + rows = self.db.fetch_all(query, tuple(params) if params else None) + return [model_class(**row) for row in rows] + + def _update( + self, + table_name: str, + model_class: Type[T], + record_id: int, + data: Dict[str, Any] + ) -> Optional[T]: + """ + 레코드를 업데이트합니다. + + Args: + table_name: 테이블 이름 + model_class: 모델 클래스 + record_id: 레코드 ID + data: 업데이트할 데이터 + + Returns: + 업데이트된 모델 인스턴스 + """ + # id, created_at 제외하고 updated_at 자동 설정 + data = {k: v for k, v in data.items() + if k not in ['id', 'created_at']} + data['updated_at'] = datetime.now().isoformat() + + # SET 절 생성 (SQL 예약어인 컬럼명은 따옴표로 감싸기) + set_clause = ', '.join([ + f'"{k}" = ?' if k.lower() in ['order', 'group', 'select', 'table'] else f"{k} = ?" + for k in data.keys() + ]) + values = list(data.values()) + [record_id] + + query = f""" + UPDATE {table_name} + SET {set_clause} + WHERE id = ? + """ + + try: + self.db.execute(query, tuple(values)) + + # 업데이트된 레코드 조회 + result = self._get_by_id(table_name, model_class, record_id) + + # 시그널 발생 + self.signals.record_updated.emit(table_name, record_id) + self.signals.data_changed.emit(table_name) + + logger.info(f"레코드 업데이트: {table_name} ID={record_id}") + return result + + except Exception as e: + logger.error(f"레코드 업데이트 실패: {table_name} ID={record_id} - {e}") + raise DatabaseQueryError(f"레코드 업데이트 실패: {e}") + + def _delete(self, table_name: str, record_id: int) -> bool: + """ + 레코드를 삭제합니다. + + Args: + table_name: 테이블 이름 + record_id: 레코드 ID + + Returns: + 삭제 성공 여부 + """ + query = f"DELETE FROM {table_name} WHERE id = ?" + + try: + cursor = self.db.execute(query, (record_id,)) + + if cursor.rowcount > 0: + # 시그널 발생 + self.signals.record_deleted.emit(table_name, record_id) + self.signals.data_changed.emit(table_name) + + logger.info(f"레코드 삭제: {table_name} ID={record_id}") + return True + return False + + except Exception as e: + logger.error(f"레코드 삭제 실패: {table_name} ID={record_id} - {e}") + raise DatabaseQueryError(f"레코드 삭제 실패: {e}") + + # ======================================================================== + # 공통 데이터베이스용 헬퍼 메서드 + # ======================================================================== + + def _create_with_db( + self, + db_manager, + table_name: str, + model_class: Type[T], + data: Dict[str, Any] + ) -> T: + """ + 공통 데이터베이스에 레코드를 생성합니다. + + Args: + db_manager: 데이터베이스 관리자 (CommonDatabaseManager) + table_name: 테이블 이름 + model_class: 모델 클래스 + data: 생성할 데이터 + + Returns: + 생성된 모델 인스턴스 + """ + # id, created_at, updated_at 제외 + data = {k: v for k, v in data.items() + if k not in ['id', 'created_at', 'updated_at'] and v is not None} + + if not data: + raise ValueError("생성할 데이터가 없습니다.") + + # 컬럼명과 값 분리 + columns = list(data.keys()) + placeholders = ', '.join(['?' for _ in columns]) + values = [data[col] for col in columns] + + query = f""" + INSERT INTO {table_name} ({', '.join(columns)}) + VALUES ({placeholders}) + """ + + try: + cursor = db_manager.execute(query, tuple(values)) + record_id = cursor.lastrowid + + # 생성된 레코드 조회 + result = self._get_by_id_with_db(db_manager, table_name, model_class, record_id) + + # 시그널 발생 + self.signals.record_created.emit(table_name, record_id) + self.signals.data_changed.emit(table_name) + + logger.info(f"레코드 생성: {table_name} ID={record_id}") + return result + + except Exception as e: + logger.error(f"레코드 생성 실패: {table_name} - {e}") + raise DatabaseQueryError(f"레코드 생성 실패: {e}") + + def _get_by_id_with_db( + self, + db_manager, + table_name: str, + model_class: Type[T], + record_id: int + ) -> Optional[T]: + """ + 공통 데이터베이스에서 ID로 레코드를 조회합니다. + + Args: + db_manager: 데이터베이스 관리자 (CommonDatabaseManager) + table_name: 테이블 이름 + model_class: 모델 클래스 + record_id: 레코드 ID + + Returns: + 모델 인스턴스 또는 None + """ + query = f"SELECT * FROM {table_name} WHERE id = ?" + row = db_manager.fetch_one(query, (record_id,)) + + if row: + return model_class(**row) + return None + + def _update_with_db( + self, + db_manager, + table_name: str, + model_class: Type[T], + record_id: int, + data: Dict[str, Any] + ) -> Optional[T]: + """ + 공통 데이터베이스의 레코드를 업데이트합니다. + + Args: + db_manager: 데이터베이스 관리자 (CommonDatabaseManager) + table_name: 테이블 이름 + model_class: 모델 클래스 + record_id: 레코드 ID + data: 업데이트할 데이터 + + Returns: + 업데이트된 모델 인스턴스 + """ + # id, created_at 제외하고 updated_at 자동 설정 + data = {k: v for k, v in data.items() + if k not in ['id', 'created_at']} + data['updated_at'] = datetime.now().isoformat() + + # SET 절 생성 (SQL 예약어인 컬럼명은 따옴표로 감싸기) + set_clause = ', '.join([ + f'"{k}" = ?' if k.lower() in ['order', 'group', 'select', 'table'] else f"{k} = ?" + for k in data.keys() + ]) + values = list(data.values()) + [record_id] + + query = f""" + UPDATE {table_name} + SET {set_clause} + WHERE id = ? + """ + + try: + db_manager.execute(query, tuple(values)) + + # 업데이트된 레코드 조회 + result = self._get_by_id_with_db(db_manager, table_name, model_class, record_id) + + # 시그널 발생 + self.signals.record_updated.emit(table_name, record_id) + self.signals.data_changed.emit(table_name) + + logger.info(f"레코드 업데이트: {table_name} ID={record_id}") + return result + + except Exception as e: + logger.error(f"레코드 업데이트 실패: {table_name} ID={record_id} - {e}") + raise DatabaseQueryError(f"레코드 업데이트 실패: {e}") + + def _delete_with_db( + self, + db_manager, + table_name: str, + record_id: int + ) -> bool: + """ + 공통 데이터베이스의 레코드를 삭제합니다. + + Args: + db_manager: 데이터베이스 관리자 (CommonDatabaseManager) + table_name: 테이블 이름 + record_id: 레코드 ID + + Returns: + 삭제 성공 여부 + """ + query = f"DELETE FROM {table_name} WHERE id = ?" + + try: + cursor = db_manager.execute(query, (record_id,)) + + if cursor.rowcount > 0: + # 시그널 발생 + self.signals.record_deleted.emit(table_name, record_id) + self.signals.data_changed.emit(table_name) + + logger.info(f"레코드 삭제: {table_name} ID={record_id}") + return True + return False + + except Exception as e: + logger.error(f"레코드 삭제 실패: {table_name} ID={record_id} - {e}") + raise DatabaseQueryError(f"레코드 삭제 실패: {e}") + + def _search( + self, + table_name: str, + model_class: Type[T], + search_fields: List[str], + search_text: str, + **filters + ) -> List[T]: + """ + 텍스트 검색을 수행합니다. + + Args: + table_name: 테이블 이름 + model_class: 모델 클래스 + search_fields: 검색할 필드 목록 + search_text: 검색어 + **filters: 추가 필터 조건 + + Returns: + 모델 인스턴스 리스트 + """ + conditions = [] + params = [] + + # 검색 조건 + search_conditions = [f"{field} LIKE ?" for field in search_fields] + conditions.append(f"({' OR '.join(search_conditions)})") + params.extend([f"%{search_text}%" for _ in search_fields]) + + # 필터 조건 + for key, value in filters.items(): + if value is not None: + conditions.append(f"{key} = ?") + params.append(value) + + query = f""" + SELECT * FROM {table_name} + WHERE {' AND '.join(conditions)} + ORDER BY id DESC + """ + + rows = self.db.fetch_all(query, tuple(params)) + return [model_class(**row) for row in rows] + + # ======================================================================== + # User CRUD + # ======================================================================== + + def create_user(self, **data) -> User: + """사용자 생성""" + return self._create("users", User, data) + + def get_user(self, user_id: int) -> Optional[User]: + """ID로 사용자 조회""" + return self._get_by_id("users", User, user_id) + + def get_user_by_username(self, username: str) -> Optional[User]: + """사용자명으로 사용자 조회""" + query = "SELECT * FROM users WHERE username = ?" + row = self.db.fetch_one(query, (username,)) + return User(**row) if row else None + + def get_all_users(self, **filters) -> List[User]: + """모든 사용자 조회""" + return self._get_all("users", User, **filters) + + def update_user(self, user_id: int, **data) -> Optional[User]: + """사용자 업데이트""" + return self._update("users", User, user_id, data) + + def delete_user(self, user_id: int) -> bool: + """사용자 삭제""" + return self._delete("users", user_id) + + # ======================================================================== + # Instruction CRUD + # ======================================================================== + + def create_instruction(self, **data) -> Instruction: + """지시 생성""" + return self._create("instructions", Instruction, data) + + def get_instruction(self, instruction_id: int) -> Optional[Instruction]: + """ID로 지시 조회""" + return self._get_by_id("instructions", Instruction, instruction_id) + + def get_all_instructions( + self, + order_by: str = "created_date DESC, id DESC", + **filters + ) -> List[Instruction]: + """모든 지시 조회""" + return self._get_all("instructions", Instruction, order_by=order_by, **filters) + + def get_instructions_by_date( + self, + target_date: date, + include_continuous: bool = True + ) -> List[Instruction]: + """날짜별 지시 조회 (지속 지시 포함 가능)""" + if include_continuous: + query = """ + SELECT * FROM instructions + WHERE created_date = ? OR (is_continuous = 1 AND is_completed = 0) + ORDER BY created_date DESC, id DESC + """ + else: + query = """ + SELECT * FROM instructions + WHERE created_date = ? + ORDER BY id DESC + """ + + rows = self.db.fetch_all(query, (target_date.isoformat(),)) + return [Instruction(**row) for row in rows] + + def update_instruction(self, instruction_id: int, **data) -> Optional[Instruction]: + """지시 업데이트""" + return self._update("instructions", Instruction, instruction_id, data) + + def delete_instruction(self, instruction_id: int) -> bool: + """지시 삭제""" + return self._delete("instructions", instruction_id) + + # ======================================================================== + # Fault CRUD + # ======================================================================== + + def create_fault(self, **data) -> Fault: + """고장 생성""" + return self._create("faults", Fault, data) + + def get_fault(self, fault_id: int) -> Optional[Fault]: + """ID로 고장 조회""" + return self._get_by_id("faults", Fault, fault_id) + + def get_all_faults( + self, + order_by: str = "occurrence_date DESC, id DESC", + **filters + ) -> List[Fault]: + """모든 고장 조회""" + return self._get_all("faults", Fault, order_by=order_by, **filters) + + def get_faults_by_train( + self, + train_number: str, + limit: int = 10, + months_back: int = 3 + ) -> List[Fault]: + """ + 편성번호별 고장 조회 + + 편성 필드 위에 마우스를 가져갈 때 사용됩니다. + + Args: + train_number: 편성번호 + limit: 최대 개수 + months_back: 몇 달 전까지 조회할지 (기본 3달) + + Returns: + 고장 리스트 + """ + from datetime import timedelta + + # 최근 N달 이내 데이터만 조회 + end_date = date.today() + start_date = end_date - timedelta(days=months_back * 30) + + query = """ + SELECT * FROM faults + WHERE train_number = ? + AND occurrence_date >= ? + AND occurrence_date <= ? + ORDER BY occurrence_date DESC, id DESC + LIMIT ? + """ + rows = self.db.fetch_all(query, ( + train_number, + start_date.isoformat(), + end_date.isoformat(), + limit + )) + return [Fault(**row) for row in rows] + + def get_faults_by_device( + self, + device_category: str, + limit: int = 10, + months_back: int = 3 + ) -> List[Fault]: + """ + 장치분류별 고장 조회 + + 장치분류 필드 위에 마우스를 가져갈 때 사용됩니다. + + Args: + device_category: 장치분류 + limit: 최대 개수 + months_back: 몇 달 전까지 조회할지 (기본 3달) + + Returns: + 고장 리스트 + """ + from datetime import timedelta + + # 최근 N달 이내 데이터만 조회 + end_date = date.today() + start_date = end_date - timedelta(days=months_back * 30) + + query = """ + SELECT * FROM faults + WHERE device_category = ? + AND occurrence_date >= ? + AND occurrence_date <= ? + ORDER BY occurrence_date DESC, id DESC + LIMIT ? + """ + rows = self.db.fetch_all(query, ( + device_category, + start_date.isoformat(), + end_date.isoformat(), + limit + )) + return [Fault(**row) for row in rows] + + def get_faults_by_code( + self, + fault_code: str, + limit: int = 10, + months_back: int = 3 + ) -> List[Fault]: + """ + 고장코드별 고장 조회 + + 고장코드 필드 위에 마우스를 가져갈 때 사용됩니다. + + Args: + fault_code: 고장코드 + limit: 최대 개수 + months_back: 몇 달 전까지 조회할지 (기본 3달) + + Returns: + 고장 리스트 + """ + from datetime import timedelta + + # 최근 N달 이내 데이터만 조회 + end_date = date.today() + start_date = end_date - timedelta(days=months_back * 30) + + query = """ + SELECT * FROM faults + WHERE fault_code = ? + AND occurrence_date >= ? + AND occurrence_date <= ? + ORDER BY occurrence_date DESC, id DESC + LIMIT ? + """ + rows = self.db.fetch_all(query, ( + fault_code, + start_date.isoformat(), + end_date.isoformat(), + limit + )) + return [Fault(**row) for row in rows] + + def get_faults_by_date_range( + self, + start_date: date, + end_date: date, + team: str = None + ) -> List[Fault]: + """ + 날짜 범위로 고장 조회 + + Args: + start_date: 시작 날짜 + end_date: 종료 날짜 + team: 팀 필터 (선택사항) + + Returns: + 고장 리스트 + """ + query = """ + SELECT * FROM faults + WHERE occurrence_date BETWEEN ? AND ? + """ + params = [start_date.isoformat(), end_date.isoformat()] + + if team: + query += " AND created_team = ?" + params.append(team) + + query += " ORDER BY occurrence_date DESC, id DESC" + + rows = self.db.fetch_all(query, tuple(params)) + return [Fault(**row) for row in rows] + + def search_faults(self, search_text: str) -> List[Fault]: + """고장 검색""" + return self._search( + "faults", + Fault, + ["train_number", "fault_content", "action_content", "fault_code"], + search_text + ) + + def update_fault(self, fault_id: int, **data) -> Optional[Fault]: + """고장 업데이트""" + return self._update("faults", Fault, fault_id, data) + + def delete_fault(self, fault_id: int) -> bool: + """고장 삭제""" + return self._delete("faults", fault_id) + + # ======================================================================== + # Work CRUD + # ======================================================================== + + def create_work(self, **data) -> Work: + """작업 생성""" + return self._create("works", Work, data) + + def get_work(self, work_id: int) -> Optional[Work]: + """ID로 작업 조회""" + return self._get_by_id("works", Work, work_id) + + def get_all_works( + self, + order_by: str = "work_date DESC, id DESC", + **filters + ) -> List[Work]: + """모든 작업 조회""" + return self._get_all("works", Work, order_by=order_by, **filters) + + def get_works_by_train(self, train_number: str) -> List[Work]: + """편성번호별 작업 조회""" + return self._get_all("works", Work, target_train=train_number) + + def get_works_by_date(self, target_date: date) -> List[Work]: + """날짜별 작업 조회""" + return self._get_all("works", Work, work_date=target_date.isoformat()) + + def get_works_by_date_range( + self, + start_date: date, + end_date: date, + team: str = None + ) -> List[Work]: + """ + 날짜 범위로 작업 조회 + + Args: + start_date: 시작 날짜 + end_date: 종료 날짜 + team: 팀 필터 (선택사항) + + Returns: + 작업 리스트 + """ + query = """ + SELECT * FROM works + WHERE work_date BETWEEN ? AND ? + """ + params = [start_date.isoformat(), end_date.isoformat()] + + if team: + query += " AND created_team = ?" + params.append(team) + + query += " ORDER BY work_date DESC, id DESC" + + rows = self.db.fetch_all(query, tuple(params)) + return [Work(**row) for row in rows] + + def check_train_has_work(self, train_number: str, target_date: date) -> bool: + """ + 해당 편성에 작업이 있는지 확인 + + 일상검수 편성 표시에 사용됩니다. + + Args: + train_number: 편성번호 + target_date: 날짜 + + Returns: + 작업 존재 여부 + """ + query = """ + SELECT COUNT(*) as count FROM works + WHERE target_train = ? AND work_date = ? AND is_completed = 0 + """ + result = self.db.fetch_one(query, (train_number, target_date.isoformat())) + return result['count'] > 0 if result else False + + def update_work(self, work_id: int, **data) -> Optional[Work]: + """작업 업데이트""" + return self._update("works", Work, work_id, data) + + def delete_work(self, work_id: int) -> bool: + """작업 삭제""" + return self._delete("works", work_id) + + # ======================================================================== + # Misc CRUD + # ======================================================================== + + def create_misc(self, **data) -> Misc: + """기타 생성""" + return self._create("miscs", Misc, data) + + def get_misc(self, misc_id: int) -> Optional[Misc]: + """ID로 기타 조회""" + return self._get_by_id("miscs", Misc, misc_id) + + def get_all_miscs( + self, + order_by: str = "created_date DESC, id DESC", + **filters + ) -> List[Misc]: + """모든 기타 조회""" + return self._get_all("miscs", Misc, order_by=order_by, **filters) + + def get_miscs_by_date_range( + self, + start_date: date, + end_date: date, + team: str = None + ) -> List[Misc]: + """ + 날짜 범위로 기타 조회 + + Args: + start_date: 시작 날짜 + end_date: 종료 날짜 + team: 팀 필터 (선택사항) + + Returns: + 기타 리스트 + """ + query = """ + SELECT * FROM miscs + WHERE created_date BETWEEN ? AND ? + """ + params = [start_date.isoformat(), end_date.isoformat()] + + if team: + query += " AND created_team = ?" + params.append(team) + + query += " ORDER BY created_date DESC, id DESC" + + rows = self.db.fetch_all(query, tuple(params)) + return [Misc(**row) for row in rows] + + def update_misc(self, misc_id: int, **data) -> Optional[Misc]: + """기타 업데이트""" + return self._update("miscs", Misc, misc_id, data) + + def delete_misc(self, misc_id: int) -> bool: + """기타 삭제""" + return self._delete("miscs", misc_id) + + # ======================================================================== + # DailyInspection CRUD + # ======================================================================== + + def create_daily_inspection(self, **data) -> DailyInspection: + """일상검수 생성""" + return self._create("daily_inspections", DailyInspection, data) + + def get_daily_inspection(self, inspection_id: int) -> Optional[DailyInspection]: + """ID로 일상검수 조회""" + return self._get_by_id("daily_inspections", DailyInspection, inspection_id) + + def get_daily_inspections_by_date( + self, + inspection_date: date, + shift_type: str = None + ) -> List[DailyInspection]: + """날짜별 일상검수 조회""" + filters = {"inspection_date": inspection_date.isoformat()} + if shift_type: + filters["shift_type"] = shift_type + + return self._get_all( + "daily_inspections", + DailyInspection, + order_by="slot_number ASC", + **filters + ) + + def upsert_daily_inspection( + self, + inspection_date: date, + shift_type: str, + slot_number: int, + train_number: str, + cleaning_type: str = "없음", + has_work: bool = False, + created_by: int = None + ) -> DailyInspection: + """ + 일상검수 생성 또는 업데이트 (UPSERT) + + Args: + inspection_date: 검수일자 + shift_type: 근무유형 + slot_number: 슬롯번호 + train_number: 편성번호 + cleaning_type: 청소유형 + has_work: 작업여부 + created_by: 생성자 ID + + Returns: + 생성/업데이트된 일상검수 + """ + # 기존 레코드 확인 + query = """ + SELECT * FROM daily_inspections + WHERE inspection_date = ? AND shift_type = ? AND slot_number = ? + """ + row = self.db.fetch_one( + query, + (inspection_date.isoformat(), shift_type, slot_number) + ) + + data = { + "inspection_date": inspection_date.isoformat(), + "shift_type": shift_type, + "slot_number": slot_number, + "train_number": train_number, + "cleaning_type": cleaning_type, + "has_work": has_work, + "created_by": created_by, + } + + if row: + # 업데이트 + return self._update("daily_inspections", DailyInspection, row['id'], data) + else: + # 생성 + return self._create("daily_inspections", DailyInspection, data) + + def update_daily_inspection(self, inspection_id: int, **data) -> Optional[DailyInspection]: + """일상검수 업데이트""" + return self._update("daily_inspections", DailyInspection, inspection_id, data) + + def delete_daily_inspection(self, inspection_id: int) -> bool: + """일상검수 삭제""" + return self._delete("daily_inspections", inspection_id) + + # ======================================================================== + # Todo CRUD + # ======================================================================== + + def create_todo(self, **data) -> Todo: + """할일 생성""" + result = self._create("todos", Todo, data) + self.signals.todo_added.emit(result.id) + return result + + def get_todo(self, todo_id: int) -> Optional[Todo]: + """ID로 할일 조회""" + return self._get_by_id("todos", Todo, todo_id) + + def get_todos_by_date( + self, + todo_date: date, + include_incomplete: bool = True + ) -> List[Todo]: + """날짜별 할일 조회""" + if include_incomplete: + query = """ + SELECT * FROM todos + WHERE todo_date = ? OR (todo_date < ? AND is_completed = 0) + ORDER BY is_completed ASC, todo_date DESC, id DESC + """ + rows = self.db.fetch_all( + query, + (todo_date.isoformat(), todo_date.isoformat()) + ) + else: + query = """ + SELECT * FROM todos + WHERE todo_date = ? + ORDER BY is_completed ASC, id DESC + """ + rows = self.db.fetch_all(query, (todo_date.isoformat(),)) + + return [Todo(**row) for row in rows] + + def update_todo(self, todo_id: int, **data) -> Optional[Todo]: + """할일 업데이트""" + result = self._update("todos", Todo, todo_id, data) + if result and 'is_completed' in data: + self.signals.todo_status_changed.emit(todo_id, data['is_completed']) + return result + + def toggle_todo_complete(self, todo_id: int) -> Optional[Todo]: + """할일 완료 상태 토글""" + todo = self.get_todo(todo_id) + if todo: + new_status = not todo.is_completed + completed_at = datetime.now().isoformat() if new_status else None + return self.update_todo( + todo_id, + is_completed=new_status, + completed_at=completed_at + ) + return None + + def delete_todo(self, todo_id: int) -> bool: + """할일 삭제""" + return self._delete("todos", todo_id) + + # ======================================================================== + # Memo CRUD + # ======================================================================== + + def create_memo(self, **data) -> Memo: + """메모 생성""" + return self._create("memos", Memo, data) + + def get_memo(self, memo_id: int) -> Optional[Memo]: + """ID로 메모 조회""" + return self._get_by_id("memos", Memo, memo_id) + + def get_memos_by_date(self, memo_date: date) -> List[Memo]: + """날짜별 메모 조회""" + return self._get_all("memos", Memo, memo_date=memo_date.isoformat()) + + def get_latest_memo(self, memo_date: date) -> Optional[Memo]: + """최신 메모 조회""" + query = """ + SELECT * FROM memos + WHERE memo_date = ? + ORDER BY updated_at DESC + LIMIT 1 + """ + row = self.db.fetch_one(query, (memo_date.isoformat(),)) + return Memo(**row) if row else None + + def upsert_memo( + self, + memo_date: date, + content: str, + created_by: int = None + ) -> Memo: + """메모 생성 또는 업데이트""" + memo = self.get_latest_memo(memo_date) + + if memo: + return self.update_memo(memo.id, content=content) + else: + return self.create_memo( + memo_date=memo_date.isoformat(), + content=content, + created_by=created_by + ) + + def update_memo(self, memo_id: int, **data) -> Optional[Memo]: + """메모 업데이트""" + result = self._update("memos", Memo, memo_id, data) + if result: + self.signals.memo_changed.emit(memo_id) + return result + + def delete_memo(self, memo_id: int) -> bool: + """메모 삭제""" + return self._delete("memos", memo_id) + + # ======================================================================== + # Setting CRUD + # ======================================================================== + + def get_setting(self, key: str) -> Optional[str]: + """설정 값 조회""" + query = "SELECT value FROM settings WHERE key = ?" + row = self.db.fetch_one(query, (key,)) + return row['value'] if row else None + + def set_setting(self, key: str, value: str) -> bool: + """설정 값 저장""" + query = """ + INSERT OR REPLACE INTO settings (key, value, updated_at) + VALUES (?, ?, ?) + """ + try: + self.db.execute(query, (key, value, datetime.now().isoformat())) + return True + except Exception as e: + logger.error(f"설정 저장 실패: {key} - {e}") + return False + + def get_all_settings(self) -> Dict[str, str]: + """모든 설정 조회""" + query = "SELECT key, value FROM settings" + rows = self.db.fetch_all(query) + return {row['key']: row['value'] for row in rows} + + # ======================================================================== + # TeamMember CRUD + # ======================================================================== + + def create_team_member(self, **data) -> TeamMember: + """팀 인원 생성""" + return self._create("team_members", TeamMember, data) + + def get_team_member(self, member_id: int) -> Optional[TeamMember]: + """ID로 팀 인원 조회""" + return self._get_by_id("team_members", TeamMember, member_id) + + def get_team_members_by_team( + self, + team: str, + position: str = None, + active_only: bool = True + ) -> List[TeamMember]: + """ + 팀별 인원 조회 + + Args: + team: 팀 (1팀, 2팀, 3팀, 4팀) + position: 직책 필터 (부팀장, 운용) + active_only: 활성화된 인원만 + + Returns: + 팀 인원 리스트 + """ + filters = {"team": team} + if position: + filters["position"] = position + if active_only: + filters["is_active"] = 1 + + return self._get_all( + "team_members", + TeamMember, + order_by='"order" ASC, id ASC', + **filters + ) + + def get_all_team_members(self, active_only: bool = True) -> List[TeamMember]: + """모든 팀 인원 조회""" + if active_only: + return self._get_all("team_members", TeamMember, is_active=1) + return self._get_all("team_members", TeamMember) + + def update_team_member(self, member_id: int, **data) -> Optional[TeamMember]: + """팀 인원 업데이트""" + return self._update("team_members", TeamMember, member_id, data) + + def delete_team_member(self, member_id: int) -> bool: + """팀 인원 삭제 (비활성화)""" + return self._update("team_members", TeamMember, member_id, {"is_active": False}) is not None + + def set_partner(self, member_id: int, partner_id: Optional[int] = None) -> bool: + """짝궁 설정/해제""" + # 기존 파트너 해제 + member = self.get_team_member(member_id) + if member and member.partner_id: + old_partner = self.get_team_member(member.partner_id) + if old_partner: + self._update("team_members", TeamMember, old_partner.id, {"partner_id": None}) + + # 새 파트너 설정 + self._update("team_members", TeamMember, member_id, {"partner_id": partner_id}) + + if partner_id: + # 양방향 짝궁 설정 + self._update("team_members", TeamMember, partner_id, {"partner_id": member_id}) + + return True + + # ======================================================================== + # DutySchedule CRUD + # ======================================================================== + + def create_duty_schedule(self, **data) -> DutySchedule: + """당무 일정 생성""" + return self._create("duty_schedules", DutySchedule, data) + + def get_duty_schedule( + self, + duty_date: date, + team: str, + shift_type: str + ) -> Optional[DutySchedule]: + """ + 당무 일정 조회 + + Args: + duty_date: 날짜 + team: 팀 + shift_type: 근무 유형 + + Returns: + 당무 일정 또는 None + """ + query = """ + SELECT * FROM duty_schedules + WHERE duty_date = ? AND team = ? AND shift_type = ? + """ + row = self.db.fetch_one( + query, + (duty_date.isoformat(), team, shift_type) + ) + return DutySchedule(**row) if row else None + + def upsert_duty_schedule( + self, + duty_date: date, + team: str, + shift_type: str, + vice_leader_id: int = None, + operator_id: int = None, + vice_leader_name: str = "", + operator_name: str = "" + ) -> DutySchedule: + """ + 당무 일정 생성 또는 업데이트 + + Args: + duty_date: 날짜 + team: 팀 + shift_type: 근무 유형 + vice_leader_id: 부팀장 ID + operator_id: 운용 ID + vice_leader_name: 부팀장 이름 + operator_name: 운용 이름 + + Returns: + 생성/업데이트된 당무 일정 + """ + existing = self.get_duty_schedule(duty_date, team, shift_type) + + data = { + "duty_date": duty_date.isoformat(), + "team": team, + "shift_type": shift_type, + "vice_leader_id": vice_leader_id, + "operator_id": operator_id, + "vice_leader_name": vice_leader_name, + "operator_name": operator_name, + } + + if existing: + return self._update("duty_schedules", DutySchedule, existing.id, data) + else: + return self._create("duty_schedules", DutySchedule, data) + + def get_duty_schedules_by_date_range( + self, + start_date: date, + end_date: date, + team: str = None + ) -> List[DutySchedule]: + """날짜 범위로 당무 일정 조회""" + query = """ + SELECT * FROM duty_schedules + WHERE duty_date BETWEEN ? AND ? + """ + params = [start_date.isoformat(), end_date.isoformat()] + + if team: + query += " AND team = ?" + params.append(team) + + query += " ORDER BY duty_date ASC" + + rows = self.db.fetch_all(query, tuple(params)) + return [DutySchedule(**row) for row in rows] + + def get_next_duty_member( + self, + team: str, + position: str, + current_id: int = None + ) -> Optional[TeamMember]: + """ + 다음 당무자 조회 (순번 기준) + + Args: + team: 팀 + position: 직책 + current_id: 현재 당무자 ID + + Returns: + 다음 당무자 또는 None + """ + members = self.get_team_members_by_team(team, position) + + if not members: + return None + + if current_id is None: + return members[0] + + # 현재 당무자의 인덱스 찾기 + current_idx = None + for idx, member in enumerate(members): + if member.id == current_id: + current_idx = idx + break + + if current_idx is None: + return members[0] + + # 다음 순번 (순환) + next_idx = (current_idx + 1) % len(members) + return members[next_idx] + + # ======================================================================== + # 팀 확인 관련 메서드 + # ======================================================================== + + def update_team_confirmation( + self, + table_name: str, + record_id: int, + team: str, + confirmed: bool + ) -> bool: + """ + 팀 확인 상태를 업데이트합니다. + + Args: + table_name: 테이블 이름 (instructions, faults, works, miscs) + record_id: 레코드 ID + team: 팀 이름 + confirmed: 확인 여부 + + Returns: + 업데이트 성공 여부 + """ + model_class = MODEL_REGISTRY.get(table_name) + if not model_class: + return False + + record = self._get_by_id(table_name, model_class, record_id) + if not record: + return False + + # 팀 확인 상태 업데이트 + record.set_team_confirmation(team, confirmed) + + data = { + "team_confirmations": record.team_confirmations, + "is_completed": record.is_completed, + } + + if record.is_completed and record.completed_at: + data["completed_at"] = record.completed_at.isoformat() + + self._update(table_name, model_class, record_id, data) + return True + + # ======================================================================== + # 통계 메서드 + # ======================================================================== + + # ======================================================================== + # TrainSchedule CRUD + # ======================================================================== + + def create_train_schedule(self, **data) -> TrainSchedule: + """열차 다이아 시각표 생성 (공통 데이터베이스 사용)""" + common_db = CommonDatabaseManager() + return self._create_with_db(common_db, "train_schedules", TrainSchedule, data) + + def get_train_schedule(self, schedule_id: int) -> Optional[TrainSchedule]: + """ID로 열차 다이아 시각표 조회 (공통 데이터베이스 사용)""" + common_db = CommonDatabaseManager() + return self._get_by_id_with_db(common_db, "train_schedules", TrainSchedule, schedule_id) + + def get_train_schedule_by_column_station( + self, + column_number: str, + station: str, + is_weekday: bool = True + ) -> Optional[TrainSchedule]: + """ + 열번과 역명으로 시각표 조회 (공통 데이터베이스 사용) + + Args: + column_number: 열번 + station: 역명 + is_weekday: 평일 여부 + + Returns: + TrainSchedule 또는 None + """ + common_db = CommonDatabaseManager() + query = """ + SELECT * FROM train_schedules + WHERE column_number = ? AND station = ? AND is_weekday = ? AND is_active = 1 + """ + row = common_db.fetch_one(query, (column_number, station, is_weekday)) + return TrainSchedule(**row) if row else None + + def get_schedules_by_column( + self, + column_number: str, + is_weekday: bool = True + ) -> List[TrainSchedule]: + """ + 열번으로 전체 경로 시각표 조회 (공통 데이터베이스 사용) + + Args: + column_number: 열번 + is_weekday: 평일 여부 + + Returns: + 역 순서대로 정렬된 시각표 리스트 + """ + common_db = CommonDatabaseManager() + query = """ + SELECT * FROM train_schedules + WHERE column_number = ? AND is_weekday = ? AND is_active = 1 + ORDER BY arrival_time ASC + """ + rows = common_db.fetch_all(query, (column_number, is_weekday)) + return [TrainSchedule(**row) for row in rows] + + def get_schedules_by_station( + self, + station: str, + is_weekday: bool = True + ) -> List[TrainSchedule]: + """ + 역명으로 해당 역 통과 열차 시각표 조회 (공통 데이터베이스 사용) + + Args: + station: 역명 + is_weekday: 평일 여부 + + Returns: + 시간순 정렬된 시각표 리스트 + """ + common_db = CommonDatabaseManager() + query = """ + SELECT * FROM train_schedules + WHERE station = ? AND is_weekday = ? AND is_active = 1 + ORDER BY arrival_time ASC + """ + rows = common_db.fetch_all(query, (station, is_weekday)) + return [TrainSchedule(**row) for row in rows] + + def upsert_train_schedule( + self, + column_number: str, + station: str, + arrival_time: time = None, + departure_time: time = None, + direction: str = "up", + is_weekday: bool = True + ) -> TrainSchedule: + """ + 열차 다이아 시각표 생성 또는 업데이트 (UPSERT, 공통 데이터베이스 사용) + + Args: + column_number: 열번 + station: 역명 + arrival_time: 도착 시간 + departure_time: 출발 시간 + direction: 방향 + is_weekday: 평일 여부 + + Returns: + 생성/업데이트된 TrainSchedule + """ + existing = self.get_train_schedule_by_column_station(column_number, station, is_weekday) + common_db = CommonDatabaseManager() + + data = { + "column_number": column_number, + "station": station, + "arrival_time": arrival_time.isoformat() if arrival_time else None, + "departure_time": departure_time.isoformat() if departure_time else None, + "direction": direction, + "is_weekday": is_weekday, + } + + if existing: + return self._update_with_db(common_db, "train_schedules", TrainSchedule, existing.id, data) + else: + return self._create_with_db(common_db, "train_schedules", TrainSchedule, data) + + def delete_train_schedule(self, schedule_id: int) -> bool: + """열차 다이아 시각표 삭제 (공통 데이터베이스 사용)""" + common_db = CommonDatabaseManager() + return self._delete_with_db(common_db, "train_schedules", schedule_id) + + def estimate_time_by_column_station( + self, + column_number: str, + station: str, + occurrence_date: date = None + ) -> Optional[time]: + """ + 열번과 역명으로 발생 시간 추정 + + Args: + column_number: 열번 + station: 역명 + occurrence_date: 발생일 (평일/주말 판단용) + + Returns: + 추정 시간 또는 None + """ + from datetime import datetime + + # 평일/주말 판단 + if occurrence_date: + is_weekday = occurrence_date.weekday() < 5 # 0~4: 월~금 + else: + is_weekday = True + + schedule = self.get_train_schedule_by_column_station( + column_number, station, is_weekday + ) + + if schedule: + return schedule.arrival_time or schedule.departure_time + + return None + + # ======================================================================== + # 날씨 메서드 + # ======================================================================== + + def upsert_weather( + self, + datetime: datetime, + location_name: str, + location_code: str, + temp: Optional[int] = None, + feels_like: Optional[int] = None, + humidity: Optional[int] = None, + wind_speed: str = "", + wind_direction: str = "", + precipitation_prob: Optional[int] = None, + weather_condition: str = "", + weather_icon: str = "" + ) -> Weather: + """ + 날씨 정보를 생성하거나 업데이트합니다. + + Args: + datetime: 날씨 데이터 시각 + location_name: 지역명 + location_code: 지역코드 + temp: 기온 + feels_like: 체감온도 + humidity: 습도 + wind_speed: 풍속 + wind_direction: 풍향 + precipitation_prob: 강수확률 + weather_condition: 날씨 상태 + weather_icon: 날씨 아이콘 + + Returns: + Weather 객체 + """ + try: + # 기존 데이터 확인 + existing = self.db.fetch_one( + """ + SELECT id, created_at, updated_at FROM weather + WHERE datetime = ? AND location_code = ? + """, + (datetime.isoformat(), location_code) + ) + + now = datetime.now() + + if existing: + # 업데이트 + self.db.execute( + """ + UPDATE weather SET + location_name = ?, temp = ?, feels_like = ?, humidity = ?, + wind_speed = ?, wind_direction = ?, precipitation_prob = ?, + weather_condition = ?, weather_icon = ?, updated_at = ? + WHERE id = ? + """, + ( + location_name, temp, feels_like, humidity, + wind_speed, wind_direction, precipitation_prob, + weather_condition, weather_icon, now.isoformat(), + existing['id'] + ) + ) + weather_id = existing['id'] + created_at = existing['created_at'] + updated_at = now.isoformat() + else: + # 생성 + result = self.db.execute( + """ + INSERT INTO weather ( + datetime, location_name, location_code, temp, feels_like, + humidity, wind_speed, wind_direction, precipitation_prob, + weather_condition, weather_icon, created_at, updated_at + ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) + """, + ( + datetime.isoformat(), location_name, location_code, + temp, feels_like, humidity, wind_speed, wind_direction, + precipitation_prob, weather_condition, weather_icon, + now.isoformat(), now.isoformat() + ) + ) + weather_id = result.lastrowid if result else None + created_at = now.isoformat() + updated_at = now.isoformat() + + return Weather( + id=weather_id, + created_at=created_at, + updated_at=updated_at, + datetime=datetime, + location_name=location_name, + location_code=location_code, + temp=temp, + feels_like=feels_like, + humidity=humidity, + wind_speed=wind_speed, + wind_direction=wind_direction, + precipitation_prob=precipitation_prob, + weather_condition=weather_condition, + weather_icon=weather_icon + ) + + except Exception as e: + logger.error(f"날씨 데이터 upsert 실패: {e}") + raise DatabaseQueryError(f"Failed to upsert weather data: {e}") + + def get_weather_by_datetime_range( + self, + start_datetime: datetime, + end_datetime: datetime, + location_code: str = "" + ) -> List[Weather]: + """ + 지정된 시간 범위의 날씨 데이터를 조회합니다. + + Args: + start_datetime: 시작 시각 + end_datetime: 종료 시각 + location_code: 지역코드 (선택사항) + + Returns: + Weather 객체 리스트 + """ + try: + query = """ + SELECT * FROM weather + WHERE datetime >= ? AND datetime <= ? + """ + params = [start_datetime.isoformat(), end_datetime.isoformat()] + + if location_code: + query += " AND location_code = ?" + params.append(location_code) + + query += " ORDER BY datetime ASC" + + rows = self.db.fetch_all(query, tuple(params)) + return [self._row_to_weather(row) for row in rows] + + except Exception as e: + logger.error(f"날씨 데이터 조회 실패: {e}") + raise DatabaseQueryError(f"Failed to get weather data: {e}") + + def get_weather_for_shift( + self, + shift_type: str, + current_date: date, + location_code: str = "" + ) -> List[Weather]: + """ + 근무 형태에 따른 날씨 데이터를 조회합니다. + + Args: + shift_type: 근무 유형 ("주간" 또는 "야간") + current_date: 현재 날짜 + location_code: 지역코드 (선택사항) + + Returns: + Weather 객체 리스트 + """ + from datetime import timedelta + + if shift_type == "주간": + # 주간: 09:00 ~ 18:00 + start_datetime = datetime.combine(current_date, time(9, 0)) + end_datetime = datetime.combine(current_date, time(18, 0)) + elif shift_type == "야간": + # 야간: 당일 18:00 ~ 다음날 09:00 + start_datetime = datetime.combine(current_date, time(18, 0)) + end_datetime = datetime.combine(current_date + timedelta(days=1), time(9, 0)) + else: + # 기본값: 주간 + start_datetime = datetime.combine(current_date, time(9, 0)) + end_datetime = datetime.combine(current_date, time(18, 0)) + + return self.get_weather_by_datetime_range(start_datetime, end_datetime, location_code) + + def get_weather_stats_for_shift( + self, + shift_type: str, + current_date: date, + location_code: str = "" + ) -> Dict[str, Any]: + """ + 근무 시간 동안의 날씨 통계를 반환합니다. + + Args: + shift_type: 근무 유형 ("주간" 또는 "야간") + current_date: 현재 날짜 + location_code: 지역코드 (선택사항) + + Returns: + 통계 데이터 딕셔너리 + """ + weather_data = self.get_weather_for_shift(shift_type, current_date, location_code) + + if not weather_data: + return { + "temp_min": None, + "temp_max": None, + "feels_like_min": None, + "feels_like_max": None, + "avg_temp": None, + "avg_feels_like": None, + "max_precipitation_prob": None, + "data_points": 0 + } + + temps = [w.temp for w in weather_data if w.temp is not None] + feels_likes = [w.feels_like for w in weather_data if w.feels_like is not None] + precip_probs = [w.precipitation_prob for w in weather_data if w.precipitation_prob is not None] + + return { + "temp_min": min(temps) if temps else None, + "temp_max": max(temps) if temps else None, + "feels_like_min": min(feels_likes) if feels_likes else None, + "feels_like_max": max(feels_likes) if feels_likes else None, + "avg_temp": round(sum(temps) / len(temps)) if temps else None, + "avg_feels_like": round(sum(feels_likes) / len(feels_likes)) if feels_likes else None, + "max_precipitation_prob": max(precip_probs) if precip_probs else None, + "data_points": len(weather_data) + } + + def cleanup_old_weather_data(self, days_to_keep: int = 7): + """ + 오래된 날씨 데이터를 삭제합니다. + + Args: + days_to_keep: 보관할 일수 (기본값: 7일) + """ + from datetime import timedelta + + try: + cutoff_date = datetime.now() - timedelta(days=days_to_keep) + + result = self.db.execute( + "DELETE FROM weather WHERE datetime < ?", + (cutoff_date.isoformat(),) + ) + + deleted_count = result.rowcount if result else 0 + logger.info(f"오래된 날씨 데이터 {deleted_count}개 삭제됨 (보관 기간: {days_to_keep}일)") + + except Exception as e: + logger.error(f"날씨 데이터 정리 실패: {e}") + raise DatabaseQueryError(f"Failed to cleanup weather data: {e}") + + def _row_to_weather(self, row: Dict[str, Any]) -> Weather: + """데이터베이스 행을 Weather 객체로 변환""" + return Weather( + id=row.get('id'), + created_at=row.get('created_at'), + updated_at=row.get('updated_at'), + datetime=datetime.fromisoformat(row['datetime']) if row.get('datetime') else None, + location_name=row.get('location_name', ''), + location_code=row.get('location_code', ''), + temp=row.get('temp'), + feels_like=row.get('feels_like'), + humidity=row.get('humidity'), + wind_speed=row.get('wind_speed', ''), + wind_direction=row.get('wind_direction', ''), + precipitation_prob=row.get('precipitation_prob'), + weather_condition=row.get('weather_condition', ''), + weather_icon=row.get('weather_icon', '') + ) + + # ======================================================================== + # 통계 메서드 + # ======================================================================== + + def get_fault_statistics( + self, + start_date: date = None, + end_date: date = None + ) -> Dict[str, Any]: + """ + 고장 통계를 반환합니다. + + Args: + start_date: 시작 날짜 + end_date: 종료 날짜 + + Returns: + 통계 데이터 + """ + base_query = "FROM faults WHERE 1=1" + params = [] + + if start_date: + base_query += " AND occurrence_date >= ?" + params.append(start_date.isoformat()) + if end_date: + base_query += " AND occurrence_date <= ?" + params.append(end_date.isoformat()) + + # 총 건수 + total = self.db.fetch_one(f"SELECT COUNT(*) as count {base_query}", tuple(params)) + + # 장치별 통계 + by_device = self.db.fetch_all( + f""" + SELECT device_category, COUNT(*) as count + {base_query} + GROUP BY device_category + ORDER BY count DESC + """, + tuple(params) + ) + + # 편성별 통계 + by_train = self.db.fetch_all( + f""" + SELECT train_number, COUNT(*) as count + {base_query} + GROUP BY train_number + ORDER BY count DESC + LIMIT 10 + """, + tuple(params) + ) + + return { + "total": total['count'] if total else 0, + "by_device": by_device, + "by_train": by_train, + } + + +# ============================================================================ +# 모듈 레벨 편의 함수 +# ============================================================================ + +def get_crud() -> CRUDManager: + """ + CRUD 관리자 인스턴스를 반환합니다. + + Returns: + CRUDManager 인스턴스 + """ + return CRUDManager() + + diff --git a/database/db_manager.py b/database/db_manager.py new file mode 100644 index 0000000..01a46dc --- /dev/null +++ b/database/db_manager.py @@ -0,0 +1,612 @@ +# -*- coding: utf-8 -*- +""" +데이터베이스 연결 관리 모듈 +SQLite 데이터베이스 연결 및 관리 기능을 제공합니다. + +이 모듈은 다음 기능을 제공합니다: +- 데이터베이스 연결 관리 +- 테이블 생성 및 마이그레이션 +- 트랜잭션 관리 +- 연결 풀 관리 +""" + +import sqlite3 +import threading +from pathlib import Path +from typing import Optional, List, Dict, Any, Tuple +from contextlib import contextmanager +from datetime import datetime + +from core.constants import DB_FILE, DATA_DIR +from core.logger import get_logger +from core.exceptions import ( + DatabaseConnectionError, + DatabaseQueryError, +) + +# 로거 설정 +logger = get_logger(__name__) + + +# ============================================================================ +# SQL 스키마 정의 +# ============================================================================ + +CREATE_TABLES_SQL = """ +-- 사용자 테이블 +CREATE TABLE IF NOT EXISTS users ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + username TEXT UNIQUE NOT NULL, + password_hash TEXT NOT NULL, + name TEXT NOT NULL, + department TEXT NOT NULL, + role TEXT NOT NULL DEFAULT 'viewer', + is_active INTEGER DEFAULT 1, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP +); + +-- 팀 테이블 +CREATE TABLE IF NOT EXISTS teams ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + name TEXT NOT NULL, + shift_type TEXT, + is_active INTEGER DEFAULT 1, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP +); + +-- 지시 섹션 테이블 +CREATE TABLE IF NOT EXISTS instructions ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + created_date DATE NOT NULL, + created_team TEXT NOT NULL, + instructor TEXT, + instruction_content TEXT NOT NULL, + instruction_date DATE, + is_continuous INTEGER DEFAULT 0, + team_confirmations TEXT DEFAULT '{}', + is_completed INTEGER DEFAULT 0, + completed_at DATETIME, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP, + created_by INTEGER REFERENCES users(id) +); + +-- 고장 섹션 테이블 +CREATE TABLE IF NOT EXISTS faults ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + created_date DATE NOT NULL, + created_team TEXT NOT NULL, + occurrence_date DATE, + train_number TEXT, + car_number TEXT, + fault_code TEXT, + device_category TEXT, + occurrence_station TEXT, + occurrence_time TIME, + fault_content TEXT, + action_content TEXT, + action_team TEXT, + team_confirmations TEXT DEFAULT '{}', + is_completed INTEGER DEFAULT 0, + completed_at DATETIME, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP, + created_by INTEGER REFERENCES users(id) +); + +-- 작업 섹션 테이블 +CREATE TABLE IF NOT EXISTS works ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + created_date DATE NOT NULL, + created_team TEXT NOT NULL, + work_date DATE, + work_entity TEXT, + target_train TEXT, + target_device TEXT, + work_content TEXT, + remarks TEXT, + team_confirmations TEXT DEFAULT '{}', + is_completed INTEGER DEFAULT 0, + completed_at DATETIME, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP, + created_by INTEGER REFERENCES users(id) +); + +-- 기타 섹션 테이블 +CREATE TABLE IF NOT EXISTS miscs ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + created_date DATE NOT NULL, + created_team TEXT NOT NULL, + reporter TEXT, + report_content TEXT, + remarks TEXT, + related_document TEXT, + team_confirmations TEXT DEFAULT '{}', + is_completed INTEGER DEFAULT 0, + completed_at DATETIME, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP, + created_by INTEGER REFERENCES users(id) +); + +-- 일상검수 테이블 +CREATE TABLE IF NOT EXISTS daily_inspections ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + inspection_date DATE NOT NULL, + shift_type TEXT NOT NULL, + slot_number INTEGER NOT NULL, + train_number TEXT, + cleaning_type TEXT DEFAULT '없음', + has_work INTEGER DEFAULT 0, + work_content TEXT, + is_work_completed INTEGER DEFAULT 0, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP, + created_by INTEGER REFERENCES users(id), + UNIQUE(inspection_date, shift_type, slot_number) +); + +-- 할일 테이블 +CREATE TABLE IF NOT EXISTS todos ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + todo_date DATE NOT NULL, + category TEXT DEFAULT '일반', + target_train TEXT, + schedule TEXT, + content TEXT NOT NULL, + is_completed INTEGER DEFAULT 0, + completed_at TIMESTAMP, + alarm_time TIMESTAMP, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP, + created_by INTEGER REFERENCES users(id) +); + +-- 메모 테이블 +CREATE TABLE IF NOT EXISTS memos ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + memo_date DATE NOT NULL, + content TEXT NOT NULL, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP, + created_by INTEGER REFERENCES users(id) +); + +-- 설정 테이블 +CREATE TABLE IF NOT EXISTS settings ( + key TEXT PRIMARY KEY, + value TEXT, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP +); + +-- 팀 인원 테이블 +CREATE TABLE IF NOT EXISTS team_members ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + team TEXT NOT NULL, + position TEXT NOT NULL, + name TEXT NOT NULL, + "order" INTEGER DEFAULT 0, + partner_id INTEGER REFERENCES team_members(id), + is_active INTEGER DEFAULT 1, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP +); + +-- 당무 일정 테이블 +CREATE TABLE IF NOT EXISTS duty_schedules ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + duty_date DATE NOT NULL, + team TEXT NOT NULL, + shift_type TEXT NOT NULL, + vice_leader_id INTEGER REFERENCES team_members(id), + operator_id INTEGER REFERENCES team_members(id), + vice_leader_name TEXT, + operator_name TEXT, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP, + UNIQUE(duty_date, team, shift_type) +); + +-- 조치 단계 테이블 +CREATE TABLE IF NOT EXISTS action_steps ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + fault_id INTEGER NOT NULL REFERENCES faults(id) ON DELETE CASCADE, + step_number INTEGER NOT NULL, + action_content TEXT NOT NULL, + action_team TEXT, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + created_by INTEGER REFERENCES users(id), + UNIQUE(fault_id, step_number) +); + +-- 인덱스 생성 +CREATE INDEX IF NOT EXISTS idx_instructions_created_date ON instructions(created_date); +CREATE INDEX IF NOT EXISTS idx_instructions_is_completed ON instructions(is_completed); +CREATE INDEX IF NOT EXISTS idx_faults_created_date ON faults(created_date); +CREATE INDEX IF NOT EXISTS idx_faults_train_number ON faults(train_number); +CREATE INDEX IF NOT EXISTS idx_faults_occurrence_date ON faults(occurrence_date); +CREATE INDEX IF NOT EXISTS idx_works_work_date ON works(work_date); +CREATE INDEX IF NOT EXISTS idx_works_target_train ON works(target_train); +CREATE INDEX IF NOT EXISTS idx_daily_inspections_date ON daily_inspections(inspection_date); +CREATE INDEX IF NOT EXISTS idx_todos_date ON todos(todo_date); +CREATE INDEX IF NOT EXISTS idx_todos_is_completed ON todos(is_completed); +CREATE INDEX IF NOT EXISTS idx_memos_date ON memos(memo_date); +CREATE INDEX IF NOT EXISTS idx_action_steps_fault_id ON action_steps(fault_id); +CREATE INDEX IF NOT EXISTS idx_action_steps_step_number ON action_steps(fault_id, step_number); +""" + +# 기본 데이터 삽입 SQL +INSERT_DEFAULT_DATA_SQL = """ +-- 기본 팀 데이터 +INSERT OR IGNORE INTO teams (name, shift_type, is_active) VALUES ('1팀', '주간', 1); +INSERT OR IGNORE INTO teams (name, shift_type, is_active) VALUES ('2팀', '야간', 1); +INSERT OR IGNORE INTO teams (name, shift_type, is_active) VALUES ('3팀', '주간', 1); +INSERT OR IGNORE INTO teams (name, shift_type, is_active) VALUES ('4팀', '야간', 1); + +-- 기본 관리자 계정 (비밀번호: admin123) +INSERT OR IGNORE INTO users (username, password_hash, name, department, role, is_active) +VALUES ('admin', 'pbkdf2:sha256:260000$salt$hash', '관리자', '검수팀', 'admin', 1); +""" + + +# ============================================================================ +# 데이터베이스 관리자 클래스 +# ============================================================================ + +class DatabaseManager: + """ + 데이터베이스 관리자 클래스 + + 싱글톤 패턴을 사용하여 애플리케이션 전역에서 하나의 인스턴스만 사용합니다. + SQLite 데이터베이스 연결 및 기본 작업을 관리합니다. + + Attributes: + db_path: 데이터베이스 파일 경로 + connection: 현재 데이터베이스 연결 + + Examples: + >>> db = DatabaseManager() + >>> with db.get_connection() as conn: + ... cursor = conn.execute("SELECT * FROM users") + ... users = cursor.fetchall() + """ + + _instance: Optional['DatabaseManager'] = None + _lock = threading.Lock() + + def __new__(cls, db_path: Path = None): + """싱글톤 패턴 구현""" + with cls._lock: + if cls._instance is None: + cls._instance = super().__new__(cls) + cls._instance._initialized = False + return cls._instance + + def __init__(self, db_path: Path = None): + """ + 데이터베이스 관리자 초기화 + + Args: + db_path: 데이터베이스 파일 경로 (기본값: DB_FILE) + """ + # 이미 초기화된 경우 건너뛰기 + if self._initialized: + return + + self.db_path = db_path or DB_FILE + self._local = threading.local() + + # 데이터 디렉토리 생성 + DATA_DIR.mkdir(parents=True, exist_ok=True) + + # 데이터베이스 초기화 + self._initialize_database() + + self._initialized = True + logger.info(f"데이터베이스 관리자 초기화 완료: {self.db_path}") + + def _initialize_database(self): + """데이터베이스 초기화 (테이블 생성 및 마이그레이션)""" + try: + with self.get_connection() as conn: + # 외래 키 활성화 + conn.execute("PRAGMA foreign_keys = ON") + + # 테이블 생성 + conn.executescript(CREATE_TABLES_SQL) + + # 기본 데이터 삽입 + conn.executescript(INSERT_DEFAULT_DATA_SQL) + + # 마이그레이션: daily_inspections 테이블 컬럼 추가 + try: + conn.execute("ALTER TABLE daily_inspections ADD COLUMN work_content TEXT") + conn.execute("ALTER TABLE daily_inspections ADD COLUMN is_work_completed INTEGER DEFAULT 0") + except sqlite3.OperationalError: + pass + + # todos 테이블에 alarm_time 컬럼 추가 + try: + conn.execute("ALTER TABLE todos ADD COLUMN alarm_time TIMESTAMP") + except sqlite3.OperationalError: + pass + + # todos 테이블에 category 컬럼 추가 + try: + conn.execute("ALTER TABLE todos ADD COLUMN category TEXT DEFAULT '일반'") + except sqlite3.OperationalError: + pass + + conn.commit() + + logger.info("데이터베이스 테이블 초기화 완료") + except Exception as e: + logger.error(f"데이터베이스 초기화 실패: {e}") + raise DatabaseConnectionError(f"데이터베이스 초기화 실패: {e}") + + @contextmanager + def get_connection(self): + """ + 데이터베이스 연결을 반환하는 컨텍스트 매니저 + + 스레드별로 별도의 연결을 유지합니다. + + Yields: + sqlite3.Connection: 데이터베이스 연결 + + Examples: + >>> with db.get_connection() as conn: + ... cursor = conn.execute("SELECT * FROM users") + """ + try: + # 스레드별 연결 가져오기 또는 생성 + if not hasattr(self._local, 'connection') or self._local.connection is None: + self._local.connection = sqlite3.connect( + self.db_path, + detect_types=sqlite3.PARSE_DECLTYPES | sqlite3.PARSE_COLNAMES + ) + # Row 팩토리 설정 (딕셔너리처럼 접근 가능) + self._local.connection.row_factory = sqlite3.Row + # 외래 키 활성화 + self._local.connection.execute("PRAGMA foreign_keys = ON") + + yield self._local.connection + + except sqlite3.Error as e: + logger.error(f"데이터베이스 연결 오류: {e}") + raise DatabaseConnectionError(f"데이터베이스 연결 실패: {e}") + + def execute( + self, + query: str, + params: Tuple = None, + commit: bool = True + ) -> sqlite3.Cursor: + """ + SQL 쿼리를 실행합니다. + + Args: + query: SQL 쿼리 + params: 쿼리 파라미터 + commit: 자동 커밋 여부 + + Returns: + 실행 결과 커서 + + Examples: + >>> cursor = db.execute( + ... "INSERT INTO users (name) VALUES (?)", + ... ("홍길동",) + ... ) + >>> print(cursor.lastrowid) + """ + try: + with self.get_connection() as conn: + if params: + cursor = conn.execute(query, params) + else: + cursor = conn.execute(query) + + if commit: + conn.commit() + + return cursor + + except sqlite3.Error as e: + logger.error(f"쿼리 실행 오류: {query[:100]}... - {e}") + raise DatabaseQueryError(f"쿼리 실행 실패: {e}", query) + + def execute_many( + self, + query: str, + params_list: List[Tuple], + commit: bool = True + ) -> sqlite3.Cursor: + """ + 여러 SQL 쿼리를 일괄 실행합니다. + + Args: + query: SQL 쿼리 + params_list: 파라미터 리스트 + commit: 자동 커밋 여부 + + Returns: + 실행 결과 커서 + """ + try: + with self.get_connection() as conn: + cursor = conn.executemany(query, params_list) + + if commit: + conn.commit() + + return cursor + + except sqlite3.Error as e: + logger.error(f"일괄 쿼리 실행 오류: {e}") + raise DatabaseQueryError(f"일괄 쿼리 실행 실패: {e}", query) + + def fetch_one( + self, + query: str, + params: Tuple = None + ) -> Optional[Dict[str, Any]]: + """ + 단일 레코드를 조회합니다. + + Args: + query: SQL 쿼리 + params: 쿼리 파라미터 + + Returns: + 레코드 딕셔너리 또는 None + + Examples: + >>> user = db.fetch_one( + ... "SELECT * FROM users WHERE id = ?", + ... (1,) + ... ) + """ + try: + with self.get_connection() as conn: + if params: + cursor = conn.execute(query, params) + else: + cursor = conn.execute(query) + + row = cursor.fetchone() + return dict(row) if row else None + + except sqlite3.Error as e: + logger.error(f"단일 조회 오류: {e}") + raise DatabaseQueryError(f"조회 실패: {e}", query) + + def fetch_all( + self, + query: str, + params: Tuple = None + ) -> List[Dict[str, Any]]: + """ + 여러 레코드를 조회합니다. + + Args: + query: SQL 쿼리 + params: 쿼리 파라미터 + + Returns: + 레코드 딕셔너리 리스트 + + Examples: + >>> users = db.fetch_all("SELECT * FROM users WHERE is_active = 1") + """ + try: + with self.get_connection() as conn: + if params: + cursor = conn.execute(query, params) + else: + cursor = conn.execute(query) + + rows = cursor.fetchall() + return [dict(row) for row in rows] + + except sqlite3.Error as e: + logger.error(f"다중 조회 오류: {e}") + raise DatabaseQueryError(f"조회 실패: {e}", query) + + def table_exists(self, table_name: str) -> bool: + """ + 테이블 존재 여부를 확인합니다. + + Args: + table_name: 테이블 이름 + + Returns: + 테이블 존재 여부 + """ + query = """ + SELECT name FROM sqlite_master + WHERE type='table' AND name=? + """ + result = self.fetch_one(query, (table_name,)) + return result is not None + + def get_table_columns(self, table_name: str) -> List[str]: + """ + 테이블의 컬럼 목록을 반환합니다. + + Args: + table_name: 테이블 이름 + + Returns: + 컬럼 이름 리스트 + """ + query = f"PRAGMA table_info({table_name})" + rows = self.fetch_all(query) + return [row['name'] for row in rows] + + def backup(self, backup_path: Path = None) -> bool: + """ + 데이터베이스를 백업합니다. + + Args: + backup_path: 백업 파일 경로 + + Returns: + 백업 성공 여부 + """ + try: + if backup_path is None: + timestamp = datetime.now().strftime("%Y%m%d_%H%M%S") + backup_path = DATA_DIR / f"backup_{timestamp}.db" + + with self.get_connection() as conn: + backup_conn = sqlite3.connect(backup_path) + conn.backup(backup_conn) + backup_conn.close() + + logger.info(f"데이터베이스 백업 완료: {backup_path}") + return True + + except Exception as e: + logger.error(f"데이터베이스 백업 실패: {e}") + return False + + def vacuum(self): + """데이터베이스 최적화 (VACUUM)""" + try: + with self.get_connection() as conn: + conn.execute("VACUUM") + logger.info("데이터베이스 VACUUM 완료") + except Exception as e: + logger.error(f"데이터베이스 VACUUM 실패: {e}") + + def close(self): + """현재 스레드의 연결을 닫습니다.""" + if hasattr(self._local, 'connection') and self._local.connection: + self._local.connection.close() + self._local.connection = None + logger.debug("데이터베이스 연결 종료") + + def close_all(self): + """모든 연결을 닫습니다.""" + self.close() + DatabaseManager._instance = None + logger.info("모든 데이터베이스 연결 종료") + + +# ============================================================================ +# 모듈 레벨 편의 함수 +# ============================================================================ + +def get_db() -> DatabaseManager: + """ + 데이터베이스 관리자 인스턴스를 반환합니다. + + Returns: + DatabaseManager 인스턴스 + """ + return DatabaseManager() + + diff --git a/database/migrations.py b/database/migrations.py new file mode 100644 index 0000000..2bf7a75 --- /dev/null +++ b/database/migrations.py @@ -0,0 +1,278 @@ +# -*- coding: utf-8 -*- +""" +데이터베이스 마이그레이션 모듈 +데이터베이스 스키마 변경을 관리합니다. + +이 모듈은 다음 기능을 제공합니다: +- 마이그레이션 버전 관리 +- 스키마 업그레이드/다운그레이드 +- 마이그레이션 이력 추적 +""" + +from datetime import datetime +from typing import List, Callable, Optional +from dataclasses import dataclass + +from .db_manager import DatabaseManager, get_db +from core.logger import get_logger + +# 로거 설정 +logger = get_logger(__name__) + + +@dataclass +class Migration: + """ + 마이그레이션 정의 클래스 + + Attributes: + version: 마이그레이션 버전 + description: 마이그레이션 설명 + upgrade: 업그레이드 SQL 또는 함수 + downgrade: 다운그레이드 SQL 또는 함수 + """ + version: int + description: str + upgrade: str + downgrade: str = "" + + +class MigrationManager: + """ + 마이그레이션 관리자 클래스 + + 데이터베이스 스키마 마이그레이션을 관리합니다. + + Attributes: + db: 데이터베이스 관리자 + migrations: 마이그레이션 목록 + """ + + def __init__(self): + """마이그레이션 관리자 초기화""" + self.db = get_db() + self.migrations: List[Migration] = [] + + # 마이그레이션 테이블 생성 + self._create_migration_table() + + # 마이그레이션 정의 + self._define_migrations() + + def _create_migration_table(self): + """마이그레이션 이력 테이블 생성""" + query = """ + CREATE TABLE IF NOT EXISTS _migrations ( + version INTEGER PRIMARY KEY, + description TEXT, + applied_at DATETIME DEFAULT CURRENT_TIMESTAMP + ) + """ + self.db.execute(query) + + def _define_migrations(self): + """마이그레이션 정의""" + # 마이그레이션 1: 초기 스키마 (db_manager에서 이미 생성) + self.migrations.append(Migration( + version=1, + description="Initial schema", + upgrade="-- Initial schema created in db_manager", + downgrade="" + )) + + # 마이그레이션 2: 고장 테이블에 심각도 필드 추가 (예시) + self.migrations.append(Migration( + version=2, + description="Add severity field to faults table", + upgrade=""" + ALTER TABLE faults ADD COLUMN severity TEXT DEFAULT 'normal'; + """, + downgrade=""" + -- SQLite doesn't support DROP COLUMN directly + -- This would require table recreation + """ + )) + + # 마이그레이션 3: 사용자 테이블에 마지막 로그인 필드 추가 (예시) + self.migrations.append(Migration( + version=3, + description="Add last_login field to users table", + upgrade=""" + ALTER TABLE users ADD COLUMN last_login DATETIME; + """, + downgrade="" + )) + + # 마이그레이션 4: todos 테이블에 category 필드 추가 + self.migrations.append(Migration( + version=4, + description="Add category field to todos table", + upgrade=""" + ALTER TABLE todos ADD COLUMN category TEXT DEFAULT '일반'; + """, + downgrade="" + )) + + # 마이그레이션 5: faults 테이블에 column_number 필드 추가 + self.migrations.append(Migration( + version=5, + description="Add column_number field to faults table", + upgrade=""" + ALTER TABLE faults ADD COLUMN column_number TEXT; + """, + downgrade="" + )) + + # 마이그레이션 6: faults 테이블에 fault_source 필드 추가 + self.migrations.append(Migration( + version=6, + description="Add fault_source field to faults table", + upgrade=""" + ALTER TABLE faults ADD COLUMN fault_source TEXT; + """, + downgrade="" + )) + + # 마이그레이션 7: weather 테이블 생성 + self.migrations.append(Migration( + version=7, + description="Create weather table", + upgrade=""" + CREATE TABLE weather ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + datetime TEXT NOT NULL, + location_name TEXT NOT NULL, + location_code TEXT NOT NULL, + temp INTEGER, + feels_like INTEGER, + humidity INTEGER, + wind_speed TEXT, + wind_direction TEXT, + precipitation_prob INTEGER, + weather_condition TEXT, + weather_icon TEXT, + created_at TEXT, + updated_at TEXT, + UNIQUE(datetime, location_code) + ); + CREATE INDEX idx_weather_datetime_location ON weather(datetime, location_code); + CREATE INDEX idx_weather_location_code ON weather(location_code); + """, + downgrade="" + )) + + def get_current_version(self) -> int: + """ + 현재 마이그레이션 버전을 반환합니다. + + Returns: + 현재 버전 (마이그레이션이 없으면 0) + """ + query = "SELECT MAX(version) as version FROM _migrations" + result = self.db.fetch_one(query) + return result['version'] if result and result['version'] else 0 + + def get_pending_migrations(self) -> List[Migration]: + """ + 적용되지 않은 마이그레이션 목록을 반환합니다. + + Returns: + 대기 중인 마이그레이션 목록 + """ + current = self.get_current_version() + return [m for m in self.migrations if m.version > current] + + def apply_migration(self, migration: Migration) -> bool: + """ + 단일 마이그레이션을 적용합니다. + + Args: + migration: 적용할 마이그레이션 + + Returns: + 적용 성공 여부 + """ + try: + # 업그레이드 SQL 실행 + if migration.upgrade.strip(): + with self.db.get_connection() as conn: + conn.executescript(migration.upgrade) + conn.commit() + + # 마이그레이션 이력 기록 + query = """ + INSERT INTO _migrations (version, description, applied_at) + VALUES (?, ?, ?) + """ + self.db.execute( + query, + (migration.version, migration.description, datetime.now().isoformat()) + ) + + logger.info(f"마이그레이션 적용: v{migration.version} - {migration.description}") + return True + + except Exception as e: + logger.error(f"마이그레이션 실패: v{migration.version} - {e}") + return False + + def migrate(self, target_version: int = None) -> bool: + """ + 마이그레이션을 실행합니다. + + Args: + target_version: 목표 버전 (None이면 최신 버전) + + Returns: + 마이그레이션 성공 여부 + """ + if target_version is None: + target_version = max(m.version for m in self.migrations) if self.migrations else 0 + + current = self.get_current_version() + + if current >= target_version: + logger.info(f"마이그레이션 불필요: 현재 v{current}") + return True + + # 적용할 마이그레이션 필터링 + to_apply = [m for m in self.migrations + if current < m.version <= target_version] + to_apply.sort(key=lambda m: m.version) + + for migration in to_apply: + if not self.apply_migration(migration): + return False + + logger.info(f"마이그레이션 완료: v{current} -> v{target_version}") + return True + + def rollback(self, target_version: int) -> bool: + """ + 마이그레이션을 롤백합니다. + + Args: + target_version: 목표 버전 + + Returns: + 롤백 성공 여부 + + Note: + SQLite의 제한으로 인해 실제 롤백은 제한적입니다. + """ + current = self.get_current_version() + + if current <= target_version: + logger.info(f"롤백 불필요: 현재 v{current}") + return True + + logger.warning("SQLite 롤백은 제한적입니다. 백업에서 복원을 권장합니다.") + return False + + +def run_migrations(): + """마이그레이션을 실행합니다.""" + manager = MigrationManager() + return manager.migrate() + + diff --git a/database/models.py b/database/models.py new file mode 100644 index 0000000..4b2d8fa --- /dev/null +++ b/database/models.py @@ -0,0 +1,634 @@ +# -*- coding: utf-8 -*- +""" +데이터 모델 정의 모듈 +데이터베이스 테이블에 대응하는 데이터 모델 클래스들을 정의합니다. + +각 모델 클래스는 테이블 스키마를 반영하며, +데이터 유효성 검사 및 직렬화 기능을 제공합니다. +""" + +import json +from dataclasses import dataclass, field, asdict +from datetime import datetime, date, time +from typing import Optional, Dict, Any, List +from enum import Enum + + +# ============================================================================ +# 열거형 정의 +# ============================================================================ + +class Role(Enum): + """사용자 역할""" + ADMIN = "admin" + EDITOR = "editor" + VIEWER = "viewer" + + +class ShiftType(Enum): + """근무 유형""" + DAY = "주간" + NIGHT = "야간" + + +class CleaningType(Enum): + """청소 유형""" + NONE = "없음" + MEDIUM = "중청소" + LARGE = "대청소" + + +# ============================================================================ +# 기본 모델 클래스 +# ============================================================================ + +@dataclass +class BaseModel: + """ + 기본 모델 클래스 + + 모든 데이터 모델의 기반 클래스입니다. + 공통 필드 및 유틸리티 메서드를 제공합니다. + """ + id: Optional[int] = None + created_at: Optional[datetime] = None + updated_at: Optional[datetime] = None + + def to_dict(self) -> Dict[str, Any]: + """ + 모델을 딕셔너리로 변환합니다. + + Returns: + 모델 데이터 딕셔너리 + """ + data = asdict(self) + # datetime 객체를 문자열로 변환 + for key, value in data.items(): + if isinstance(value, datetime): + data[key] = value.isoformat() + elif isinstance(value, date): + data[key] = value.isoformat() + elif isinstance(value, time): + data[key] = value.isoformat() + elif isinstance(value, Enum): + data[key] = value.value + return data + + @classmethod + def from_dict(cls, data: Dict[str, Any]) -> 'BaseModel': + """ + 딕셔너리에서 모델을 생성합니다. + + Args: + data: 모델 데이터 딕셔너리 + + Returns: + 모델 인스턴스 + """ + # datetime 문자열을 객체로 변환 + for key in ['created_at', 'updated_at']: + if key in data and isinstance(data[key], str): + try: + data[key] = datetime.fromisoformat(data[key]) + except ValueError: + data[key] = None + return cls(**data) + + +# ============================================================================ +# 사용자 모델 +# ============================================================================ + +@dataclass +class User(BaseModel): + """ + 사용자 모델 + + Attributes: + username: 사용자 ID (고유) + password_hash: 비밀번호 해시 + name: 이름 + department: 부서 + role: 역할 (admin, editor, viewer) + is_active: 활성화 여부 + """ + username: str = "" + password_hash: str = "" + name: str = "" + department: str = "" + role: str = "viewer" + is_active: bool = True + + def has_permission(self, action: str) -> bool: + """ + 특정 동작에 대한 권한이 있는지 확인합니다. + + Args: + action: 동작 (create, read, update, delete) + + Returns: + 권한 여부 + """ + if self.role == Role.ADMIN.value: + return True + elif self.role == Role.EDITOR.value: + return action in ['create', 'read', 'update'] + else: # viewer + return action == 'read' + + def is_admin(self) -> bool: + """관리자 여부 확인""" + return self.role == Role.ADMIN.value or self.department == "검수팀" + + +# ============================================================================ +# 팀 모델 +# ============================================================================ + +@dataclass +class Team(BaseModel): + """ + 팀 모델 + + Attributes: + name: 팀 이름 (A팀, B팀, C팀, D팀) + shift_type: 근무 유형 (주간, 야간) + is_active: 활성화 여부 + """ + name: str = "" + shift_type: str = "" + is_active: bool = True + + +# ============================================================================ +# 섹션 공통 모델 +# ============================================================================ + +@dataclass +class SectionBase(BaseModel): + """ + 섹션 기본 모델 + + 모든 섹션(지시, 고장, 작업, 기타)의 공통 필드를 정의합니다. + """ + created_date: Optional[date] = None + created_team: str = "" + team_confirmations: str = "{}" # JSON 문자열 + is_completed: bool = False + completed_at: Optional[datetime] = None + created_by: Optional[int] = None + + def get_team_confirmations(self) -> Dict[str, bool]: + """팀 확인 상태를 딕셔너리로 반환""" + try: + return json.loads(self.team_confirmations) + except json.JSONDecodeError: + return {"1팀": False, "2팀": False, "3팀": False, "4팀": False} + + def set_team_confirmation(self, team: str, confirmed: bool): + """특정 팀의 확인 상태를 설정""" + confirmations = self.get_team_confirmations() + confirmations[team] = confirmed + self.team_confirmations = json.dumps(confirmations, ensure_ascii=False) + + # 모든 팀이 확인했는지 체크 + if all(confirmations.values()): + self.is_completed = True + self.completed_at = datetime.now() + + def all_teams_confirmed(self) -> bool: + """모든 팀이 확인했는지 반환""" + confirmations = self.get_team_confirmations() + return all(confirmations.values()) + + +# ============================================================================ +# 지시 섹션 모델 +# ============================================================================ + +@dataclass +class Instruction(SectionBase): + """ + 지시 섹션 모델 + + 상위부서나 상급자의 지시사항을 기록합니다. + + Attributes: + instructor: 지시자 + instruction_content: 지시내용 + instruction_date: 지시일자 + is_continuous: 지속여부 + """ + instructor: str = "" + instruction_content: str = "" + instruction_date: Optional[date] = None + is_continuous: bool = False + + +# ============================================================================ +# 고장 섹션 모델 +# ============================================================================ + +@dataclass +class Fault(SectionBase): + """ + 고장 섹션 모델 + + 전동차 고장 정보를 기록합니다. + + Attributes: + occurrence_date: 발생일자 + column_number: 열번 + train_number: 편성번호 + car_number: 호차 + fault_code: 고장코드 + device_category: 장치분류 + occurrence_station: 발생역 + occurrence_time: 발생시간 + fault_content: 고장내용 + action_content: 조치내용 + action_team: 조치팀 + fault_source: 고장출처 + severity: 심각도 (normal, high, critical) + """ + occurrence_date: Optional[date] = None + column_number: str = "" + train_number: str = "" + car_number: str = "" + fault_code: str = "" + device_category: str = "" + occurrence_station: str = "" + occurrence_time: Optional[time] = None + fault_content: str = "" + action_content: str = "" + action_team: str = "" + fault_source: str = "" # 고장출처 + severity: str = "normal" # 심각도 (normal, high, critical) + + +# ============================================================================ +# 작업 섹션 모델 +# ============================================================================ + +@dataclass +class Work(SectionBase): + """ + 작업 섹션 모델 + + 전동차 관련 작업일정을 기록합니다. + + Attributes: + work_date: 작업일정 + work_entity: 작업주체 + target_train: 대상편성 + target_device: 대상기기 + work_content: 작업내용 + remarks: 특이사항 + """ + work_date: Optional[date] = None + work_entity: str = "" + target_train: str = "" + target_device: str = "" + work_content: str = "" + remarks: str = "" + + +# ============================================================================ +# 기타 섹션 모델 +# ============================================================================ + +@dataclass +class Misc(SectionBase): + """ + 기타 섹션 모델 + + 전동차 관련 작업 외 나머지 사항을 기록합니다. + + Attributes: + reporter: 전달자 + report_content: 전달내용 + remarks: 특이사항 + related_document: 관련문서 + """ + reporter: str = "" + report_content: str = "" + remarks: str = "" + related_document: str = "" + + +# ============================================================================ +# 일상검수 모델 +# ============================================================================ + +@dataclass +class DailyInspection(BaseModel): + """ + 일상검수 모델 + + 일일 점검 대상 편성을 기록합니다. + + Attributes: + inspection_date: 검수일자 + shift_type: 근무유형 (주간, 야간) + slot_number: 슬롯번호 (1~5) + train_number: 편성번호 + cleaning_type: 청소유형 (없음, 중청소, 대청소) + has_work: 작업여부 + """ + inspection_date: Optional[date] = None + shift_type: str = "" + slot_number: int = 0 + train_number: str = "" + cleaning_type: str = "없음" + has_work: bool = False + created_by: Optional[int] = None + + +# ============================================================================ +# Todo 모델 +# ============================================================================ + +class TodoCategory: + """할일 카테고리""" + GENERAL = "일반" # 일반 할일 + ARRIVAL_INSPECTION = "도착검수" # 도착검수 + TASK = "작업" # 작업 + + +@dataclass +class Todo(BaseModel): + """ + 할일 모델 + + 할일 목록을 기록합니다. + + Attributes: + todo_date: 할일 날짜 + category: 카테고리 (일반, 도착검수, 작업) + target_train: 대상편성 + schedule: 일정 + content: 내용 + is_completed: 완료여부 + completed_at: 완료시간 + """ + todo_date: Optional[date] = None + category: str = "일반" + target_train: str = "" + schedule: str = "" + content: str = "" + is_completed: bool = False + completed_at: Optional[datetime] = None + alarm_time: Optional[datetime] = None + created_by: Optional[int] = None + + +# ============================================================================ +# 메모 모델 +# ============================================================================ + +@dataclass +class Memo(BaseModel): + """ + 메모 모델 + + 메모를 기록합니다. + + Attributes: + memo_date: 메모 날짜 + content: 내용 + """ + memo_date: Optional[date] = None + content: str = "" + created_by: Optional[int] = None + + +# ============================================================================ +# 설정 모델 +# ============================================================================ + +@dataclass +class Setting(BaseModel): + """ + 설정 모델 + + 키-값 형태의 설정을 저장합니다. + + Attributes: + key: 설정 키 + value: 설정 값 + """ + key: str = "" + value: str = "" + + +# ============================================================================ +# 팀 인원 모델 +# ============================================================================ + +@dataclass +class TeamMember(BaseModel): + """ + 팀 인원 모델 + + 각 팀의 구성원 정보를 저장합니다. + + Attributes: + team: 팀 (1팀, 2팀, 3팀, 4팀) + position: 직책 (부팀장, 운용) + name: 이름 + order: 순서 (당무 순서) + partner_id: 짝궁 ID (함께 당무 서는 사람) + is_active: 활성화 여부 + """ + team: str = "" + position: str = "" + name: str = "" + order: int = 0 + partner_id: Optional[int] = None + is_active: bool = True + + +@dataclass +class DutySchedule(BaseModel): + """ + 당무 일정 모델 + + 일별 당무자 정보를 저장합니다. + + Attributes: + duty_date: 당무 날짜 + team: 팀 + shift_type: 근무 유형 (주간, 야간) + vice_leader_id: 당무 부팀장 ID + operator_id: 당무 운용 ID + vice_leader_name: 당무 부팀장 이름 (조회용) + operator_name: 당무 운용 이름 (조회용) + """ + duty_date: Optional[date] = None + team: str = "" + shift_type: str = "" + vice_leader_id: Optional[int] = None + operator_id: Optional[int] = None + vice_leader_name: str = "" + operator_name: str = "" + + +# ============================================================================ +# 날씨 모델 +# ============================================================================ + +@dataclass +class Weather(BaseModel): + """ + 날씨 모델 + + 시간별 날씨 정보를 저장합니다. + + Attributes: + datetime: 날씨 데이터 시각 + location_name: 지역명 + location_code: 지역코드 + temp: 기온 + feels_like: 체감온도 + humidity: 습도 + wind_speed: 풍속 + wind_direction: 풍향 + precipitation_prob: 강수확률 + weather_condition: 날씨 상태 + weather_icon: 날씨 아이콘 + """ + datetime: Optional[datetime] = None + location_name: str = "" + location_code: str = "" + temp: Optional[int] = None + feels_like: Optional[int] = None + humidity: Optional[int] = None + wind_speed: str = "" + wind_direction: str = "" + precipitation_prob: Optional[int] = None + weather_condition: str = "" + weather_icon: str = "" + + +# ============================================================================ +# 열차 다이아 시각표 모델 +# ============================================================================ + +@dataclass +class TrainSchedule(BaseModel): + """ + 열차 다이아 시각표 모델 + + 열번과 역별 도착/출발 시각을 저장합니다. + 열번과 역명으로 발생 시간을 유추할 때 사용됩니다. + + Attributes: + column_number: 열번 (예: "1001", "1002") + station: 역명 (예: "신평역", "하단역") + arrival_time: 도착 시간 + departure_time: 출발 시간 + direction: 방향 (up: 상행, down: 하행) + is_weekday: 평일 여부 (True: 평일, False: 주말/휴일) + is_active: 활성화 여부 + """ + column_number: str = "" + station: str = "" + arrival_time: Optional[time] = None + departure_time: Optional[time] = None + direction: str = "up" # up: 상행, down: 하행 + is_weekday: bool = True + is_active: bool = True + + +# ============================================================================ +# 전동차 편성 모델 +# ============================================================================ + +@dataclass +class TrainFormation(BaseModel): + """ + 전동차 편성 모델 + + 편성번호별 전동차 정보를 관리합니다. + + Attributes: + train_number: 편성번호 (예: 134a, 134b, 1A) + is_new_train: 신차 여부 (True: 신차, False: 구차) + manufacturer: 제조사 + introduction_date: 도입일 + depot: 배속지 (신평, 노포) + alias: 별칭 + introduction_stage: 도입단계 + introduction_count: 도입량 + """ + train_number: str = "" + is_new_train: bool = True + manufacturer: str = "" + introduction_date: Optional[date] = None + depot: str = "" + alias: str = "" + introduction_stage: str = "" + introduction_count: int = 0 + + +# ============================================================================ +# 조치 단계 모델 +# ============================================================================ + +@dataclass +class ActionStep(BaseModel): + """ + 조치 단계 모델 + + 고장에 대한 조치를 단계별로 기록합니다. + + Attributes: + fault_id: 고장 ID (외래키) + step_number: 단계 번호 + action_content: 조치 내용 + action_team: 조치팀 + """ + fault_id: int = 0 + step_number: int = 0 + action_content: str = "" + action_team: str = "" + + +# ============================================================================ +# 모델 레지스트리 +# ============================================================================ + +# 테이블 이름과 모델 클래스 매핑 +MODEL_REGISTRY: Dict[str, type] = { + "users": User, + "teams": Team, + "instructions": Instruction, + "faults": Fault, + "works": Work, + "miscs": Misc, + "daily_inspections": DailyInspection, + "todos": Todo, + "memos": Memo, + "settings": Setting, + "team_members": TeamMember, + "duty_schedules": DutySchedule, + "train_schedules": TrainSchedule, + "weather": Weather, + "train_formations": TrainFormation, + "action_steps": ActionStep, +} + + +def get_model_class(table_name: str) -> Optional[type]: + """ + 테이블 이름에 해당하는 모델 클래스를 반환합니다. + + Args: + table_name: 테이블 이름 + + Returns: + 모델 클래스 + """ + return MODEL_REGISTRY.get(table_name) + + diff --git a/database/sql_loader.py b/database/sql_loader.py new file mode 100644 index 0000000..62e372c --- /dev/null +++ b/database/sql_loader.py @@ -0,0 +1,198 @@ +# -*- coding: utf-8 -*- +""" +SQL 파일 로더 모듈 +PostgreSQL 형식의 INSERT 문을 파싱하여 SQLite에 삽입합니다. +""" + +import re +import ast +from pathlib import Path +from typing import List, Dict, Any, Optional +from datetime import datetime + +from core.logger import get_logger + +logger = get_logger(__name__) + + +def parse_postgresql_insert(sql_content: str) -> List[Dict[str, Any]]: + """ + PostgreSQL 형식의 INSERT 문을 파싱합니다. + + 형식: INSERT INTO "table" ("col1", "col2") VALUES ('val1', 'val2'), ('val3', 'val4') + + Args: + sql_content: SQL 파일 내용 + + Returns: + 파싱된 레코드 리스트 + """ + records = [] + + # INSERT 문 패턴 매칭 + pattern = r'INSERT INTO\s+"[^"]+"\s*\(([^)]+)\)\s*VALUES\s*(.+?)(?=\s*;|\s*$)' + + matches = re.finditer(pattern, sql_content, re.IGNORECASE | re.DOTALL) + + for match in matches: + columns_str = match.group(1) + values_str = match.group(2) + + # 컬럼명 파싱 + columns = [col.strip().strip('"') for col in columns_str.split(',')] + + # VALUES 부분 파싱 (여러 레코드가 있을 수 있음) + # VALUES ('val1', 'val2'), ('val3', 'val4') 형식 + value_records = _parse_values(values_str) + + for value_record in value_records: + if len(value_record) == len(columns): + record = dict(zip(columns, value_record)) + records.append(record) + else: + logger.warning(f"컬럼 수 불일치: {len(columns)} 컬럼, {len(value_record)} 값") + + return records + + +def _parse_values(values_str: str) -> List[List[Any]]: + """ + VALUES 부분을 파싱합니다. + + Args: + values_str: VALUES ('val1', 'val2'), ('val3', 'val4') 형식의 문자열 + + Returns: + 값 리스트의 리스트 + """ + records = [] + + # 괄호로 묶인 각 레코드 찾기 + # 복잡한 경우를 처리하기 위해 스택 사용 + current_record = [] + current_value = "" + in_quotes = False + quote_char = None + paren_depth = 0 + i = 0 + + while i < len(values_str): + char = values_str[i] + + # 이스케이프 처리 + if char == '\\' and i + 1 < len(values_str): + current_value += char + values_str[i + 1] + i += 2 + continue + + # 따옴표 처리 + if char in ("'", '"'): + if not in_quotes: + in_quotes = True + quote_char = char + current_value += char + elif char == quote_char: + # 닫는 따옴표 + in_quotes = False + quote_char = None + current_value += char + else: + current_value += char + # 괄호 처리 + elif char == '(' and not in_quotes: + paren_depth += 1 + if paren_depth == 1: + # 새로운 레코드 시작 + current_record = [] + current_value = "" + else: + current_value += char + elif char == ')' and not in_quotes: + paren_depth -= 1 + if paren_depth == 0: + # 레코드 완료 + if current_value.strip(): + current_record.append(_clean_value(current_value.strip())) + records.append(current_record) + current_record = [] + current_value = "" + else: + current_value += char + elif char == ',' and not in_quotes and paren_depth == 1: + # 레코드 내 값 구분자 + if current_value.strip(): + current_record.append(_clean_value(current_value.strip())) + current_value = "" + else: + current_value += char + + i += 1 + + return records + + +def _clean_value(value: str) -> Any: + """ + 값을 정리합니다. + + Args: + value: 원시 값 문자열 + + Returns: + 정리된 값 (None, 문자열, 숫자 등) + """ + value = value.strip() + + # NULL 처리 + if value.upper() == 'NULL' or value == '': + return None + + # 문자열 처리 (따옴표 제거) + if value.startswith("'") and value.endswith("'"): + # 이스케이프 처리 + result = value[1:-1].replace("''", "'").replace("\\'", "'") + return result + elif value.startswith('"') and value.endswith('"'): + result = value[1:-1].replace('""', '"').replace('\\"', '"') + return result + + # 숫자 처리 + try: + if '.' in value: + return float(value) + else: + return int(value) + except ValueError: + pass + + # 불리언 처리 + if value.lower() == 'true': + return True + elif value.lower() == 'false': + return False + + return value + + +def load_sql_file(sql_file: Path) -> List[Dict[str, Any]]: + """ + SQL 파일을 로드하고 파싱합니다. + + Args: + sql_file: SQL 파일 경로 + + Returns: + 파싱된 레코드 리스트 + """ + try: + with open(sql_file, 'r', encoding='utf-8') as f: + content = f.read() + + records = parse_postgresql_insert(content) + logger.info(f"SQL 파일 파싱 완료: {sql_file.name} ({len(records)}개 레코드)") + return records + + except Exception as e: + logger.error(f"SQL 파일 로드 실패 ({sql_file}): {e}") + return [] + diff --git a/database/sync_manager.py b/database/sync_manager.py new file mode 100644 index 0000000..d5e0358 --- /dev/null +++ b/database/sync_manager.py @@ -0,0 +1,288 @@ +# -*- coding: utf-8 -*- +""" +원격 데이터베이스 동기화 모듈 +로컬 SQLite와 원격 Supabase 간의 데이터 동기화를 관리합니다. + +현재는 프로토타입으로 인터페이스만 정의되어 있으며, +추후 Supabase 연동 시 구현될 예정입니다. +""" + +from abc import ABC, abstractmethod +from datetime import datetime +from typing import Optional, List, Dict, Any +from enum import Enum + +from core.logger import get_logger +from core.signals import get_signals + +# 로거 설정 +logger = get_logger(__name__) + + +class SyncStatus(Enum): + """동기화 상태""" + IDLE = "idle" + SYNCING = "syncing" + SUCCESS = "success" + FAILED = "failed" + OFFLINE = "offline" + + +class SyncDirection(Enum): + """동기화 방향""" + UPLOAD = "upload" # 로컬 -> 원격 + DOWNLOAD = "download" # 원격 -> 로컬 + BOTH = "both" # 양방향 + + +class BaseSyncManager(ABC): + """ + 동기화 관리자 추상 클래스 + + 원격 데이터베이스와의 동기화 인터페이스를 정의합니다. + """ + + @abstractmethod + def connect(self) -> bool: + """원격 데이터베이스에 연결합니다.""" + pass + + @abstractmethod + def disconnect(self): + """연결을 종료합니다.""" + pass + + @abstractmethod + def is_connected(self) -> bool: + """연결 상태를 확인합니다.""" + pass + + @abstractmethod + def sync_table(self, table_name: str, direction: SyncDirection) -> bool: + """테이블을 동기화합니다.""" + pass + + @abstractmethod + def sync_all(self, direction: SyncDirection) -> bool: + """모든 테이블을 동기화합니다.""" + pass + + @abstractmethod + def get_last_sync_time(self, table_name: str = None) -> Optional[datetime]: + """마지막 동기화 시간을 반환합니다.""" + pass + + +class LocalOnlySyncManager(BaseSyncManager): + """ + 로컬 전용 동기화 관리자 (프로토타입) + + 원격 연결 없이 로컬 데이터베이스만 사용합니다. + Supabase 연동 전까지 이 클래스를 사용합니다. + """ + + def __init__(self): + """초기화""" + self.signals = get_signals() + self._status = SyncStatus.OFFLINE + self._last_sync_time: Dict[str, datetime] = {} + logger.info("LocalOnlySyncManager 초기화 (원격 동기화 비활성화)") + + def connect(self) -> bool: + """ + 연결 시도 (항상 오프라인 상태) + + Returns: + 항상 False + """ + logger.info("원격 동기화가 비활성화되어 있습니다.") + self._status = SyncStatus.OFFLINE + return False + + def disconnect(self): + """연결 종료 (동작 없음)""" + pass + + def is_connected(self) -> bool: + """ + 연결 상태 확인 + + Returns: + 항상 False + """ + return False + + def sync_table(self, table_name: str, direction: SyncDirection) -> bool: + """ + 테이블 동기화 (동작 없음) + + Args: + table_name: 테이블 이름 + direction: 동기화 방향 + + Returns: + 항상 True (로컬 데이터는 항상 최신) + """ + self._last_sync_time[table_name] = datetime.now() + return True + + def sync_all(self, direction: SyncDirection) -> bool: + """ + 전체 동기화 (동작 없음) + + Args: + direction: 동기화 방향 + + Returns: + 항상 True + """ + logger.info("로컬 전용 모드: 동기화 건너뛰기") + return True + + def get_last_sync_time(self, table_name: str = None) -> Optional[datetime]: + """ + 마지막 동기화 시간 반환 + + Args: + table_name: 테이블 이름 + + Returns: + 마지막 동기화 시간 + """ + if table_name: + return self._last_sync_time.get(table_name) + return max(self._last_sync_time.values()) if self._last_sync_time else None + + @property + def status(self) -> SyncStatus: + """현재 동기화 상태""" + return self._status + + +class SupabaseSyncManager(BaseSyncManager): + """ + Supabase 동기화 관리자 + + 추후 Supabase 연동 시 구현될 예정입니다. + + Note: + 이 클래스는 현재 스텁으로만 존재합니다. + 실제 구현 시 supabase 패키지를 사용합니다. + """ + + def __init__(self, url: str, key: str): + """ + 초기화 + + Args: + url: Supabase 프로젝트 URL + key: Supabase API 키 + """ + self.url = url + self.key = key + self.signals = get_signals() + self._client = None + self._status = SyncStatus.IDLE + self._last_sync_time: Dict[str, datetime] = {} + + logger.info("SupabaseSyncManager 초기화 (추후 구현 예정)") + + def connect(self) -> bool: + """ + Supabase에 연결합니다. + + Returns: + 연결 성공 여부 + + TODO: + supabase 패키지를 사용하여 실제 연결 구현 + """ + # TODO: 실제 연결 구현 + # from supabase import create_client + # self._client = create_client(self.url, self.key) + + logger.warning("Supabase 연결 미구현") + return False + + def disconnect(self): + """연결을 종료합니다.""" + self._client = None + self._status = SyncStatus.IDLE + + def is_connected(self) -> bool: + """연결 상태를 확인합니다.""" + return self._client is not None + + def sync_table(self, table_name: str, direction: SyncDirection) -> bool: + """ + 테이블을 동기화합니다. + + Args: + table_name: 테이블 이름 + direction: 동기화 방향 + + Returns: + 동기화 성공 여부 + + TODO: + - 마지막 동기화 시간 이후 변경된 레코드 조회 + - 충돌 해결 로직 구현 + - 배치 처리 구현 + """ + # TODO: 실제 동기화 구현 + logger.warning(f"테이블 동기화 미구현: {table_name}") + return False + + def sync_all(self, direction: SyncDirection) -> bool: + """ + 모든 테이블을 동기화합니다. + + Args: + direction: 동기화 방향 + + Returns: + 동기화 성공 여부 + """ + tables = [ + "instructions", "faults", "works", "miscs", + "daily_inspections", "todos", "memos" + ] + + success = True + for table in tables: + if not self.sync_table(table, direction): + success = False + + if success: + self.signals.sync_completed.emit() + else: + self.signals.sync_error.emit("일부 테이블 동기화 실패") + + return success + + def get_last_sync_time(self, table_name: str = None) -> Optional[datetime]: + """마지막 동기화 시간을 반환합니다.""" + if table_name: + return self._last_sync_time.get(table_name) + return max(self._last_sync_time.values()) if self._last_sync_time else None + + @property + def status(self) -> SyncStatus: + """현재 동기화 상태""" + return self._status + + +def get_sync_manager() -> BaseSyncManager: + """ + 동기화 관리자 인스턴스를 반환합니다. + + 현재는 LocalOnlySyncManager를 반환합니다. + 추후 설정에 따라 SupabaseSyncManager를 반환할 수 있습니다. + + Returns: + 동기화 관리자 인스턴스 + """ + # TODO: 설정에 따라 적절한 관리자 반환 + return LocalOnlySyncManager() + + diff --git a/dist/HandoverSystem/HandoverSystem.exe b/dist/HandoverSystem/HandoverSystem.exe new file mode 100644 index 0000000..ae59208 Binary files /dev/null and b/dist/HandoverSystem/HandoverSystem.exe differ diff --git a/dist/HandoverSystem/_internal/PIL/_avif.cp311-win_amd64.pyd b/dist/HandoverSystem/_internal/PIL/_avif.cp311-win_amd64.pyd new file mode 100644 index 0000000..95d9511 Binary files /dev/null and b/dist/HandoverSystem/_internal/PIL/_avif.cp311-win_amd64.pyd differ diff --git a/dist/HandoverSystem/_internal/PIL/_imaging.cp311-win_amd64.pyd b/dist/HandoverSystem/_internal/PIL/_imaging.cp311-win_amd64.pyd new file mode 100644 index 0000000..a11ac20 Binary files /dev/null and b/dist/HandoverSystem/_internal/PIL/_imaging.cp311-win_amd64.pyd differ diff --git a/dist/HandoverSystem/_internal/PIL/_imagingcms.cp311-win_amd64.pyd b/dist/HandoverSystem/_internal/PIL/_imagingcms.cp311-win_amd64.pyd new file mode 100644 index 0000000..a23da52 Binary files /dev/null and b/dist/HandoverSystem/_internal/PIL/_imagingcms.cp311-win_amd64.pyd differ diff --git a/dist/HandoverSystem/_internal/PIL/_imagingmath.cp311-win_amd64.pyd b/dist/HandoverSystem/_internal/PIL/_imagingmath.cp311-win_amd64.pyd new file mode 100644 index 0000000..bf949b4 Binary files /dev/null and b/dist/HandoverSystem/_internal/PIL/_imagingmath.cp311-win_amd64.pyd differ diff --git a/dist/HandoverSystem/_internal/PIL/_imagingtk.cp311-win_amd64.pyd b/dist/HandoverSystem/_internal/PIL/_imagingtk.cp311-win_amd64.pyd new file mode 100644 index 0000000..1d6d575 Binary files /dev/null and b/dist/HandoverSystem/_internal/PIL/_imagingtk.cp311-win_amd64.pyd differ diff --git a/dist/HandoverSystem/_internal/PIL/_webp.cp311-win_amd64.pyd b/dist/HandoverSystem/_internal/PIL/_webp.cp311-win_amd64.pyd new file mode 100644 index 0000000..9eb10fa Binary files /dev/null and b/dist/HandoverSystem/_internal/PIL/_webp.cp311-win_amd64.pyd differ diff --git a/dist/HandoverSystem/_internal/PySide6/MSVCP140.dll b/dist/HandoverSystem/_internal/PySide6/MSVCP140.dll new file mode 100644 index 0000000..b76c44d Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/MSVCP140.dll differ diff --git a/dist/HandoverSystem/_internal/PySide6/MSVCP140_1.dll b/dist/HandoverSystem/_internal/PySide6/MSVCP140_1.dll new file mode 100644 index 0000000..15727b9 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/MSVCP140_1.dll differ diff --git a/dist/HandoverSystem/_internal/PySide6/MSVCP140_2.dll b/dist/HandoverSystem/_internal/PySide6/MSVCP140_2.dll new file mode 100644 index 0000000..b1bf14c Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/MSVCP140_2.dll differ diff --git a/dist/HandoverSystem/_internal/PySide6/Qt6Core.dll b/dist/HandoverSystem/_internal/PySide6/Qt6Core.dll new file mode 100644 index 0000000..98ab093 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/Qt6Core.dll differ diff --git a/dist/HandoverSystem/_internal/PySide6/Qt6Gui.dll b/dist/HandoverSystem/_internal/PySide6/Qt6Gui.dll new file mode 100644 index 0000000..c3ffc67 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/Qt6Gui.dll differ diff --git a/dist/HandoverSystem/_internal/PySide6/Qt6Network.dll b/dist/HandoverSystem/_internal/PySide6/Qt6Network.dll new file mode 100644 index 0000000..1e03980 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/Qt6Network.dll differ diff --git a/dist/HandoverSystem/_internal/PySide6/Qt6OpenGL.dll b/dist/HandoverSystem/_internal/PySide6/Qt6OpenGL.dll new file mode 100644 index 0000000..c93833f Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/Qt6OpenGL.dll differ diff --git a/dist/HandoverSystem/_internal/PySide6/Qt6Pdf.dll b/dist/HandoverSystem/_internal/PySide6/Qt6Pdf.dll new file mode 100644 index 0000000..d1d7b74 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/Qt6Pdf.dll differ diff --git a/dist/HandoverSystem/_internal/PySide6/Qt6Qml.dll b/dist/HandoverSystem/_internal/PySide6/Qt6Qml.dll new file mode 100644 index 0000000..5c5421f Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/Qt6Qml.dll differ diff --git a/dist/HandoverSystem/_internal/PySide6/Qt6QmlMeta.dll b/dist/HandoverSystem/_internal/PySide6/Qt6QmlMeta.dll new file mode 100644 index 0000000..1e41a7d Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/Qt6QmlMeta.dll differ diff --git a/dist/HandoverSystem/_internal/PySide6/Qt6QmlModels.dll b/dist/HandoverSystem/_internal/PySide6/Qt6QmlModels.dll new file mode 100644 index 0000000..e65246d Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/Qt6QmlModels.dll differ diff --git a/dist/HandoverSystem/_internal/PySide6/Qt6QmlWorkerScript.dll b/dist/HandoverSystem/_internal/PySide6/Qt6QmlWorkerScript.dll new file mode 100644 index 0000000..1f8c768 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/Qt6QmlWorkerScript.dll differ diff --git a/dist/HandoverSystem/_internal/PySide6/Qt6Quick.dll b/dist/HandoverSystem/_internal/PySide6/Qt6Quick.dll new file mode 100644 index 0000000..aa59ac3 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/Qt6Quick.dll differ diff --git a/dist/HandoverSystem/_internal/PySide6/Qt6Svg.dll b/dist/HandoverSystem/_internal/PySide6/Qt6Svg.dll new file mode 100644 index 0000000..e74bbd8 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/Qt6Svg.dll differ diff --git a/dist/HandoverSystem/_internal/PySide6/Qt6VirtualKeyboard.dll b/dist/HandoverSystem/_internal/PySide6/Qt6VirtualKeyboard.dll new file mode 100644 index 0000000..c887f19 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/Qt6VirtualKeyboard.dll differ diff --git a/dist/HandoverSystem/_internal/PySide6/Qt6Widgets.dll b/dist/HandoverSystem/_internal/PySide6/Qt6Widgets.dll new file mode 100644 index 0000000..956fd15 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/Qt6Widgets.dll differ diff --git a/dist/HandoverSystem/_internal/PySide6/QtCore.pyd b/dist/HandoverSystem/_internal/PySide6/QtCore.pyd new file mode 100644 index 0000000..27cbe2d Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/QtCore.pyd differ diff --git a/dist/HandoverSystem/_internal/PySide6/QtGui.pyd b/dist/HandoverSystem/_internal/PySide6/QtGui.pyd new file mode 100644 index 0000000..5c219f4 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/QtGui.pyd differ diff --git a/dist/HandoverSystem/_internal/PySide6/QtNetwork.pyd b/dist/HandoverSystem/_internal/PySide6/QtNetwork.pyd new file mode 100644 index 0000000..034875c Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/QtNetwork.pyd differ diff --git a/dist/HandoverSystem/_internal/PySide6/QtWidgets.pyd b/dist/HandoverSystem/_internal/PySide6/QtWidgets.pyd new file mode 100644 index 0000000..02aa909 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/QtWidgets.pyd differ diff --git a/dist/HandoverSystem/_internal/PySide6/VCRUNTIME140.dll b/dist/HandoverSystem/_internal/PySide6/VCRUNTIME140.dll new file mode 100644 index 0000000..48e7800 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/VCRUNTIME140.dll differ diff --git a/dist/HandoverSystem/_internal/PySide6/VCRUNTIME140_1.dll b/dist/HandoverSystem/_internal/PySide6/VCRUNTIME140_1.dll new file mode 100644 index 0000000..d9c5e27 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/VCRUNTIME140_1.dll differ diff --git a/dist/HandoverSystem/_internal/PySide6/opengl32sw.dll b/dist/HandoverSystem/_internal/PySide6/opengl32sw.dll new file mode 100644 index 0000000..320db38 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/opengl32sw.dll differ diff --git a/dist/HandoverSystem/_internal/PySide6/plugins/generic/qtuiotouchplugin.dll b/dist/HandoverSystem/_internal/PySide6/plugins/generic/qtuiotouchplugin.dll new file mode 100644 index 0000000..16b651d Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/plugins/generic/qtuiotouchplugin.dll differ diff --git a/dist/HandoverSystem/_internal/PySide6/plugins/iconengines/qsvgicon.dll b/dist/HandoverSystem/_internal/PySide6/plugins/iconengines/qsvgicon.dll new file mode 100644 index 0000000..545f25e Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/plugins/iconengines/qsvgicon.dll differ diff --git a/dist/HandoverSystem/_internal/PySide6/plugins/imageformats/qgif.dll b/dist/HandoverSystem/_internal/PySide6/plugins/imageformats/qgif.dll new file mode 100644 index 0000000..eaced7d Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/plugins/imageformats/qgif.dll differ diff --git a/dist/HandoverSystem/_internal/PySide6/plugins/imageformats/qicns.dll b/dist/HandoverSystem/_internal/PySide6/plugins/imageformats/qicns.dll new file mode 100644 index 0000000..ed9226b Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/plugins/imageformats/qicns.dll differ diff --git a/dist/HandoverSystem/_internal/PySide6/plugins/imageformats/qico.dll b/dist/HandoverSystem/_internal/PySide6/plugins/imageformats/qico.dll new file mode 100644 index 0000000..c971ede Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/plugins/imageformats/qico.dll differ diff --git a/dist/HandoverSystem/_internal/PySide6/plugins/imageformats/qjpeg.dll b/dist/HandoverSystem/_internal/PySide6/plugins/imageformats/qjpeg.dll new file mode 100644 index 0000000..c82a03a Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/plugins/imageformats/qjpeg.dll differ diff --git a/dist/HandoverSystem/_internal/PySide6/plugins/imageformats/qpdf.dll b/dist/HandoverSystem/_internal/PySide6/plugins/imageformats/qpdf.dll new file mode 100644 index 0000000..aa631a0 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/plugins/imageformats/qpdf.dll differ diff --git a/dist/HandoverSystem/_internal/PySide6/plugins/imageformats/qsvg.dll b/dist/HandoverSystem/_internal/PySide6/plugins/imageformats/qsvg.dll new file mode 100644 index 0000000..e0c2a37 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/plugins/imageformats/qsvg.dll differ diff --git a/dist/HandoverSystem/_internal/PySide6/plugins/imageformats/qtga.dll b/dist/HandoverSystem/_internal/PySide6/plugins/imageformats/qtga.dll new file mode 100644 index 0000000..17036ca Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/plugins/imageformats/qtga.dll differ diff --git a/dist/HandoverSystem/_internal/PySide6/plugins/imageformats/qtiff.dll b/dist/HandoverSystem/_internal/PySide6/plugins/imageformats/qtiff.dll new file mode 100644 index 0000000..c1d404f Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/plugins/imageformats/qtiff.dll differ diff --git a/dist/HandoverSystem/_internal/PySide6/plugins/imageformats/qwbmp.dll b/dist/HandoverSystem/_internal/PySide6/plugins/imageformats/qwbmp.dll new file mode 100644 index 0000000..ddc7f16 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/plugins/imageformats/qwbmp.dll differ diff --git a/dist/HandoverSystem/_internal/PySide6/plugins/imageformats/qwebp.dll b/dist/HandoverSystem/_internal/PySide6/plugins/imageformats/qwebp.dll new file mode 100644 index 0000000..e7ef7a1 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/plugins/imageformats/qwebp.dll differ diff --git a/dist/HandoverSystem/_internal/PySide6/plugins/networkinformation/qnetworklistmanager.dll b/dist/HandoverSystem/_internal/PySide6/plugins/networkinformation/qnetworklistmanager.dll new file mode 100644 index 0000000..26ec740 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/plugins/networkinformation/qnetworklistmanager.dll differ diff --git a/dist/HandoverSystem/_internal/PySide6/plugins/platforminputcontexts/qtvirtualkeyboardplugin.dll b/dist/HandoverSystem/_internal/PySide6/plugins/platforminputcontexts/qtvirtualkeyboardplugin.dll new file mode 100644 index 0000000..647d9a5 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/plugins/platforminputcontexts/qtvirtualkeyboardplugin.dll differ diff --git a/dist/HandoverSystem/_internal/PySide6/plugins/platforms/qdirect2d.dll b/dist/HandoverSystem/_internal/PySide6/plugins/platforms/qdirect2d.dll new file mode 100644 index 0000000..85543df Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/plugins/platforms/qdirect2d.dll differ diff --git a/dist/HandoverSystem/_internal/PySide6/plugins/platforms/qminimal.dll b/dist/HandoverSystem/_internal/PySide6/plugins/platforms/qminimal.dll new file mode 100644 index 0000000..57e7fba Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/plugins/platforms/qminimal.dll differ diff --git a/dist/HandoverSystem/_internal/PySide6/plugins/platforms/qoffscreen.dll b/dist/HandoverSystem/_internal/PySide6/plugins/platforms/qoffscreen.dll new file mode 100644 index 0000000..cb596e5 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/plugins/platforms/qoffscreen.dll differ diff --git a/dist/HandoverSystem/_internal/PySide6/plugins/platforms/qwindows.dll b/dist/HandoverSystem/_internal/PySide6/plugins/platforms/qwindows.dll new file mode 100644 index 0000000..60ff91c Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/plugins/platforms/qwindows.dll differ diff --git a/dist/HandoverSystem/_internal/PySide6/plugins/styles/qmodernwindowsstyle.dll b/dist/HandoverSystem/_internal/PySide6/plugins/styles/qmodernwindowsstyle.dll new file mode 100644 index 0000000..4b5654c Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/plugins/styles/qmodernwindowsstyle.dll differ diff --git a/dist/HandoverSystem/_internal/PySide6/plugins/tls/qcertonlybackend.dll b/dist/HandoverSystem/_internal/PySide6/plugins/tls/qcertonlybackend.dll new file mode 100644 index 0000000..c27864c Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/plugins/tls/qcertonlybackend.dll differ diff --git a/dist/HandoverSystem/_internal/PySide6/plugins/tls/qopensslbackend.dll b/dist/HandoverSystem/_internal/PySide6/plugins/tls/qopensslbackend.dll new file mode 100644 index 0000000..3ad31c9 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/plugins/tls/qopensslbackend.dll differ diff --git a/dist/HandoverSystem/_internal/PySide6/plugins/tls/qschannelbackend.dll b/dist/HandoverSystem/_internal/PySide6/plugins/tls/qschannelbackend.dll new file mode 100644 index 0000000..5d74834 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/plugins/tls/qschannelbackend.dll differ diff --git a/dist/HandoverSystem/_internal/PySide6/pyside6.abi3.dll b/dist/HandoverSystem/_internal/PySide6/pyside6.abi3.dll new file mode 100644 index 0000000..ad527c6 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/pyside6.abi3.dll differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qt_ar.qm b/dist/HandoverSystem/_internal/PySide6/translations/qt_ar.qm new file mode 100644 index 0000000..ddce1e8 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qt_ar.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qt_bg.qm b/dist/HandoverSystem/_internal/PySide6/translations/qt_bg.qm new file mode 100644 index 0000000..3b5c3ad Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qt_bg.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qt_ca.qm b/dist/HandoverSystem/_internal/PySide6/translations/qt_ca.qm new file mode 100644 index 0000000..6b46339 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qt_ca.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qt_cs.qm b/dist/HandoverSystem/_internal/PySide6/translations/qt_cs.qm new file mode 100644 index 0000000..95be1ea Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qt_cs.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qt_da.qm b/dist/HandoverSystem/_internal/PySide6/translations/qt_da.qm new file mode 100644 index 0000000..3ffc148 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qt_da.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qt_de.qm b/dist/HandoverSystem/_internal/PySide6/translations/qt_de.qm new file mode 100644 index 0000000..dec7e14 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qt_de.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qt_en.qm b/dist/HandoverSystem/_internal/PySide6/translations/qt_en.qm new file mode 100644 index 0000000..937ea3e Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qt_en.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qt_es.qm b/dist/HandoverSystem/_internal/PySide6/translations/qt_es.qm new file mode 100644 index 0000000..7ea8766 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qt_es.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qt_fa.qm b/dist/HandoverSystem/_internal/PySide6/translations/qt_fa.qm new file mode 100644 index 0000000..b964c32 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qt_fa.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qt_fi.qm b/dist/HandoverSystem/_internal/PySide6/translations/qt_fi.qm new file mode 100644 index 0000000..a4cb291 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qt_fi.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qt_fr.qm b/dist/HandoverSystem/_internal/PySide6/translations/qt_fr.qm new file mode 100644 index 0000000..7d74c4a Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qt_fr.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qt_gd.qm b/dist/HandoverSystem/_internal/PySide6/translations/qt_gd.qm new file mode 100644 index 0000000..7b4d040 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qt_gd.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qt_gl.qm b/dist/HandoverSystem/_internal/PySide6/translations/qt_gl.qm new file mode 100644 index 0000000..5255734 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qt_gl.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qt_he.qm b/dist/HandoverSystem/_internal/PySide6/translations/qt_he.qm new file mode 100644 index 0000000..c9d3107 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qt_he.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qt_help_ar.qm b/dist/HandoverSystem/_internal/PySide6/translations/qt_help_ar.qm new file mode 100644 index 0000000..aa92f02 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qt_help_ar.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qt_help_bg.qm b/dist/HandoverSystem/_internal/PySide6/translations/qt_help_bg.qm new file mode 100644 index 0000000..c65d260 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qt_help_bg.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qt_help_ca.qm b/dist/HandoverSystem/_internal/PySide6/translations/qt_help_ca.qm new file mode 100644 index 0000000..43fd055 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qt_help_ca.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qt_help_cs.qm b/dist/HandoverSystem/_internal/PySide6/translations/qt_help_cs.qm new file mode 100644 index 0000000..fd50d84 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qt_help_cs.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qt_help_da.qm b/dist/HandoverSystem/_internal/PySide6/translations/qt_help_da.qm new file mode 100644 index 0000000..2c26d75 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qt_help_da.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qt_help_de.qm b/dist/HandoverSystem/_internal/PySide6/translations/qt_help_de.qm new file mode 100644 index 0000000..a6b85a0 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qt_help_de.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qt_help_en.qm b/dist/HandoverSystem/_internal/PySide6/translations/qt_help_en.qm new file mode 100644 index 0000000..937ea3e Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qt_help_en.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qt_help_es.qm b/dist/HandoverSystem/_internal/PySide6/translations/qt_help_es.qm new file mode 100644 index 0000000..94e3967 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qt_help_es.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qt_help_fr.qm b/dist/HandoverSystem/_internal/PySide6/translations/qt_help_fr.qm new file mode 100644 index 0000000..4703e91 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qt_help_fr.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qt_help_gl.qm b/dist/HandoverSystem/_internal/PySide6/translations/qt_help_gl.qm new file mode 100644 index 0000000..aef1ab6 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qt_help_gl.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qt_help_hr.qm b/dist/HandoverSystem/_internal/PySide6/translations/qt_help_hr.qm new file mode 100644 index 0000000..2151a78 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qt_help_hr.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qt_help_hu.qm b/dist/HandoverSystem/_internal/PySide6/translations/qt_help_hu.qm new file mode 100644 index 0000000..6c4db44 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qt_help_hu.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qt_help_it.qm b/dist/HandoverSystem/_internal/PySide6/translations/qt_help_it.qm new file mode 100644 index 0000000..e3bc252 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qt_help_it.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qt_help_ja.qm b/dist/HandoverSystem/_internal/PySide6/translations/qt_help_ja.qm new file mode 100644 index 0000000..e64507a Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qt_help_ja.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qt_help_ka.qm b/dist/HandoverSystem/_internal/PySide6/translations/qt_help_ka.qm new file mode 100644 index 0000000..ec0ad83 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qt_help_ka.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qt_help_ko.qm b/dist/HandoverSystem/_internal/PySide6/translations/qt_help_ko.qm new file mode 100644 index 0000000..f6b1d13 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qt_help_ko.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qt_help_nl.qm b/dist/HandoverSystem/_internal/PySide6/translations/qt_help_nl.qm new file mode 100644 index 0000000..eb22989 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qt_help_nl.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qt_help_nn.qm b/dist/HandoverSystem/_internal/PySide6/translations/qt_help_nn.qm new file mode 100644 index 0000000..aa47765 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qt_help_nn.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qt_help_pl.qm b/dist/HandoverSystem/_internal/PySide6/translations/qt_help_pl.qm new file mode 100644 index 0000000..c2b82b2 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qt_help_pl.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qt_help_pt_BR.qm b/dist/HandoverSystem/_internal/PySide6/translations/qt_help_pt_BR.qm new file mode 100644 index 0000000..21b5d02 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qt_help_pt_BR.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qt_help_ru.qm b/dist/HandoverSystem/_internal/PySide6/translations/qt_help_ru.qm new file mode 100644 index 0000000..2a7d88b Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qt_help_ru.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qt_help_sk.qm b/dist/HandoverSystem/_internal/PySide6/translations/qt_help_sk.qm new file mode 100644 index 0000000..8a4a447 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qt_help_sk.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qt_help_sl.qm b/dist/HandoverSystem/_internal/PySide6/translations/qt_help_sl.qm new file mode 100644 index 0000000..fd122a6 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qt_help_sl.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qt_help_sv.qm b/dist/HandoverSystem/_internal/PySide6/translations/qt_help_sv.qm new file mode 100644 index 0000000..834bdf7 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qt_help_sv.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qt_help_tr.qm b/dist/HandoverSystem/_internal/PySide6/translations/qt_help_tr.qm new file mode 100644 index 0000000..52178a8 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qt_help_tr.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qt_help_uk.qm b/dist/HandoverSystem/_internal/PySide6/translations/qt_help_uk.qm new file mode 100644 index 0000000..192d28d Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qt_help_uk.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qt_help_zh_CN.qm b/dist/HandoverSystem/_internal/PySide6/translations/qt_help_zh_CN.qm new file mode 100644 index 0000000..2eb396f Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qt_help_zh_CN.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qt_help_zh_TW.qm b/dist/HandoverSystem/_internal/PySide6/translations/qt_help_zh_TW.qm new file mode 100644 index 0000000..0f41b44 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qt_help_zh_TW.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qt_hr.qm b/dist/HandoverSystem/_internal/PySide6/translations/qt_hr.qm new file mode 100644 index 0000000..0a1f8cd Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qt_hr.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qt_hu.qm b/dist/HandoverSystem/_internal/PySide6/translations/qt_hu.qm new file mode 100644 index 0000000..c6908fc Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qt_hu.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qt_it.qm b/dist/HandoverSystem/_internal/PySide6/translations/qt_it.qm new file mode 100644 index 0000000..9cfb64c Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qt_it.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qt_ja.qm b/dist/HandoverSystem/_internal/PySide6/translations/qt_ja.qm new file mode 100644 index 0000000..cd4aea4 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qt_ja.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qt_ka.qm b/dist/HandoverSystem/_internal/PySide6/translations/qt_ka.qm new file mode 100644 index 0000000..ec430b0 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qt_ka.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qt_ko.qm b/dist/HandoverSystem/_internal/PySide6/translations/qt_ko.qm new file mode 100644 index 0000000..b8528c9 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qt_ko.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qt_lg.qm b/dist/HandoverSystem/_internal/PySide6/translations/qt_lg.qm new file mode 100644 index 0000000..3e7e410 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qt_lg.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qt_lt.qm b/dist/HandoverSystem/_internal/PySide6/translations/qt_lt.qm new file mode 100644 index 0000000..e9c36fe Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qt_lt.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qt_lv.qm b/dist/HandoverSystem/_internal/PySide6/translations/qt_lv.qm new file mode 100644 index 0000000..6c1126a Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qt_lv.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qt_nl.qm b/dist/HandoverSystem/_internal/PySide6/translations/qt_nl.qm new file mode 100644 index 0000000..936ca0d Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qt_nl.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qt_nn.qm b/dist/HandoverSystem/_internal/PySide6/translations/qt_nn.qm new file mode 100644 index 0000000..58c5ca1 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qt_nn.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qt_pl.qm b/dist/HandoverSystem/_internal/PySide6/translations/qt_pl.qm new file mode 100644 index 0000000..19d6c0f Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qt_pl.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qt_pt_BR.qm b/dist/HandoverSystem/_internal/PySide6/translations/qt_pt_BR.qm new file mode 100644 index 0000000..fe8dc29 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qt_pt_BR.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qt_pt_PT.qm b/dist/HandoverSystem/_internal/PySide6/translations/qt_pt_PT.qm new file mode 100644 index 0000000..03353ea Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qt_pt_PT.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qt_ru.qm b/dist/HandoverSystem/_internal/PySide6/translations/qt_ru.qm new file mode 100644 index 0000000..3268b91 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qt_ru.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qt_sk.qm b/dist/HandoverSystem/_internal/PySide6/translations/qt_sk.qm new file mode 100644 index 0000000..a9b0035 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qt_sk.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qt_sl.qm b/dist/HandoverSystem/_internal/PySide6/translations/qt_sl.qm new file mode 100644 index 0000000..bc2073b Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qt_sl.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qt_sv.qm b/dist/HandoverSystem/_internal/PySide6/translations/qt_sv.qm new file mode 100644 index 0000000..f8c9010 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qt_sv.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qt_tr.qm b/dist/HandoverSystem/_internal/PySide6/translations/qt_tr.qm new file mode 100644 index 0000000..4163108 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qt_tr.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qt_uk.qm b/dist/HandoverSystem/_internal/PySide6/translations/qt_uk.qm new file mode 100644 index 0000000..42abff3 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qt_uk.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qt_zh_CN.qm b/dist/HandoverSystem/_internal/PySide6/translations/qt_zh_CN.qm new file mode 100644 index 0000000..f35616c Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qt_zh_CN.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qt_zh_TW.qm b/dist/HandoverSystem/_internal/PySide6/translations/qt_zh_TW.qm new file mode 100644 index 0000000..ea03c3d Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qt_zh_TW.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qtbase_ar.qm b/dist/HandoverSystem/_internal/PySide6/translations/qtbase_ar.qm new file mode 100644 index 0000000..32861b8 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qtbase_ar.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qtbase_bg.qm b/dist/HandoverSystem/_internal/PySide6/translations/qtbase_bg.qm new file mode 100644 index 0000000..faeb167 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qtbase_bg.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qtbase_ca.qm b/dist/HandoverSystem/_internal/PySide6/translations/qtbase_ca.qm new file mode 100644 index 0000000..4e362dc Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qtbase_ca.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qtbase_cs.qm b/dist/HandoverSystem/_internal/PySide6/translations/qtbase_cs.qm new file mode 100644 index 0000000..459ef26 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qtbase_cs.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qtbase_da.qm b/dist/HandoverSystem/_internal/PySide6/translations/qtbase_da.qm new file mode 100644 index 0000000..4ede24b Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qtbase_da.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qtbase_de.qm b/dist/HandoverSystem/_internal/PySide6/translations/qtbase_de.qm new file mode 100644 index 0000000..20d7fd2 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qtbase_de.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qtbase_en.qm b/dist/HandoverSystem/_internal/PySide6/translations/qtbase_en.qm new file mode 100644 index 0000000..937ea3e Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qtbase_en.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qtbase_es.qm b/dist/HandoverSystem/_internal/PySide6/translations/qtbase_es.qm new file mode 100644 index 0000000..1a13157 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qtbase_es.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qtbase_fa.qm b/dist/HandoverSystem/_internal/PySide6/translations/qtbase_fa.qm new file mode 100644 index 0000000..aadc0c1 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qtbase_fa.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qtbase_fi.qm b/dist/HandoverSystem/_internal/PySide6/translations/qtbase_fi.qm new file mode 100644 index 0000000..934aecd Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qtbase_fi.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qtbase_fr.qm b/dist/HandoverSystem/_internal/PySide6/translations/qtbase_fr.qm new file mode 100644 index 0000000..19f0ba5 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qtbase_fr.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qtbase_gd.qm b/dist/HandoverSystem/_internal/PySide6/translations/qtbase_gd.qm new file mode 100644 index 0000000..3fe3841 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qtbase_gd.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qtbase_he.qm b/dist/HandoverSystem/_internal/PySide6/translations/qtbase_he.qm new file mode 100644 index 0000000..95ed0c7 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qtbase_he.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qtbase_hr.qm b/dist/HandoverSystem/_internal/PySide6/translations/qtbase_hr.qm new file mode 100644 index 0000000..4ed06fb Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qtbase_hr.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qtbase_hu.qm b/dist/HandoverSystem/_internal/PySide6/translations/qtbase_hu.qm new file mode 100644 index 0000000..291bb89 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qtbase_hu.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qtbase_it.qm b/dist/HandoverSystem/_internal/PySide6/translations/qtbase_it.qm new file mode 100644 index 0000000..a4175b5 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qtbase_it.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qtbase_ja.qm b/dist/HandoverSystem/_internal/PySide6/translations/qtbase_ja.qm new file mode 100644 index 0000000..acd2f03 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qtbase_ja.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qtbase_ka.qm b/dist/HandoverSystem/_internal/PySide6/translations/qtbase_ka.qm new file mode 100644 index 0000000..2756e92 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qtbase_ka.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qtbase_ko.qm b/dist/HandoverSystem/_internal/PySide6/translations/qtbase_ko.qm new file mode 100644 index 0000000..20e4661 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qtbase_ko.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qtbase_lg.qm b/dist/HandoverSystem/_internal/PySide6/translations/qtbase_lg.qm new file mode 100644 index 0000000..f0a5e71 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qtbase_lg.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qtbase_lv.qm b/dist/HandoverSystem/_internal/PySide6/translations/qtbase_lv.qm new file mode 100644 index 0000000..f88a761 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qtbase_lv.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qtbase_nl.qm b/dist/HandoverSystem/_internal/PySide6/translations/qtbase_nl.qm new file mode 100644 index 0000000..de4e74a Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qtbase_nl.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qtbase_nn.qm b/dist/HandoverSystem/_internal/PySide6/translations/qtbase_nn.qm new file mode 100644 index 0000000..506ec45 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qtbase_nn.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qtbase_pl.qm b/dist/HandoverSystem/_internal/PySide6/translations/qtbase_pl.qm new file mode 100644 index 0000000..3c4e03b Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qtbase_pl.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qtbase_pt_BR.qm b/dist/HandoverSystem/_internal/PySide6/translations/qtbase_pt_BR.qm new file mode 100644 index 0000000..6fabd0e Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qtbase_pt_BR.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qtbase_ru.qm b/dist/HandoverSystem/_internal/PySide6/translations/qtbase_ru.qm new file mode 100644 index 0000000..c1a2286 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qtbase_ru.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qtbase_sk.qm b/dist/HandoverSystem/_internal/PySide6/translations/qtbase_sk.qm new file mode 100644 index 0000000..55a377e Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qtbase_sk.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qtbase_sv.qm b/dist/HandoverSystem/_internal/PySide6/translations/qtbase_sv.qm new file mode 100644 index 0000000..f86d8d0 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qtbase_sv.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qtbase_tr.qm b/dist/HandoverSystem/_internal/PySide6/translations/qtbase_tr.qm new file mode 100644 index 0000000..efed395 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qtbase_tr.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qtbase_uk.qm b/dist/HandoverSystem/_internal/PySide6/translations/qtbase_uk.qm new file mode 100644 index 0000000..21a3038 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qtbase_uk.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qtbase_zh_CN.qm b/dist/HandoverSystem/_internal/PySide6/translations/qtbase_zh_CN.qm new file mode 100644 index 0000000..6591a69 Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qtbase_zh_CN.qm differ diff --git a/dist/HandoverSystem/_internal/PySide6/translations/qtbase_zh_TW.qm b/dist/HandoverSystem/_internal/PySide6/translations/qtbase_zh_TW.qm new file mode 100644 index 0000000..f32a72f Binary files /dev/null and b/dist/HandoverSystem/_internal/PySide6/translations/qtbase_zh_TW.qm differ diff --git a/dist/HandoverSystem/_internal/VCRUNTIME140.dll b/dist/HandoverSystem/_internal/VCRUNTIME140.dll new file mode 100644 index 0000000..a9ed5c4 Binary files /dev/null and b/dist/HandoverSystem/_internal/VCRUNTIME140.dll differ diff --git a/dist/HandoverSystem/_internal/VCRUNTIME140_1.dll b/dist/HandoverSystem/_internal/VCRUNTIME140_1.dll new file mode 100644 index 0000000..cb34ab6 Binary files /dev/null and b/dist/HandoverSystem/_internal/VCRUNTIME140_1.dll differ diff --git a/dist/HandoverSystem/_internal/_asyncio.pyd b/dist/HandoverSystem/_internal/_asyncio.pyd new file mode 100644 index 0000000..b85d1a1 Binary files /dev/null and b/dist/HandoverSystem/_internal/_asyncio.pyd differ diff --git a/dist/HandoverSystem/_internal/_bz2.pyd b/dist/HandoverSystem/_internal/_bz2.pyd new file mode 100644 index 0000000..1ea3068 Binary files /dev/null and b/dist/HandoverSystem/_internal/_bz2.pyd differ diff --git a/dist/HandoverSystem/_internal/_cffi_backend.cp311-win_amd64.pyd b/dist/HandoverSystem/_internal/_cffi_backend.cp311-win_amd64.pyd new file mode 100644 index 0000000..4e0cd65 Binary files /dev/null and b/dist/HandoverSystem/_internal/_cffi_backend.cp311-win_amd64.pyd differ diff --git a/dist/HandoverSystem/_internal/_ctypes.pyd b/dist/HandoverSystem/_internal/_ctypes.pyd new file mode 100644 index 0000000..9a582be Binary files /dev/null and b/dist/HandoverSystem/_internal/_ctypes.pyd differ diff --git a/dist/HandoverSystem/_internal/_decimal.pyd b/dist/HandoverSystem/_internal/_decimal.pyd new file mode 100644 index 0000000..87d5a98 Binary files /dev/null and b/dist/HandoverSystem/_internal/_decimal.pyd differ diff --git a/dist/HandoverSystem/_internal/_elementtree.pyd b/dist/HandoverSystem/_internal/_elementtree.pyd new file mode 100644 index 0000000..e536090 Binary files /dev/null and b/dist/HandoverSystem/_internal/_elementtree.pyd differ diff --git a/dist/HandoverSystem/_internal/_hashlib.pyd b/dist/HandoverSystem/_internal/_hashlib.pyd new file mode 100644 index 0000000..3a0b447 Binary files /dev/null and b/dist/HandoverSystem/_internal/_hashlib.pyd differ diff --git a/dist/HandoverSystem/_internal/_lzma.pyd b/dist/HandoverSystem/_internal/_lzma.pyd new file mode 100644 index 0000000..ac25d2a Binary files /dev/null and b/dist/HandoverSystem/_internal/_lzma.pyd differ diff --git a/dist/HandoverSystem/_internal/_multiprocessing.pyd b/dist/HandoverSystem/_internal/_multiprocessing.pyd new file mode 100644 index 0000000..e74017f Binary files /dev/null and b/dist/HandoverSystem/_internal/_multiprocessing.pyd differ diff --git a/dist/HandoverSystem/_internal/_overlapped.pyd b/dist/HandoverSystem/_internal/_overlapped.pyd new file mode 100644 index 0000000..dc1475d Binary files /dev/null and b/dist/HandoverSystem/_internal/_overlapped.pyd differ diff --git a/dist/HandoverSystem/_internal/_queue.pyd b/dist/HandoverSystem/_internal/_queue.pyd new file mode 100644 index 0000000..343b86f Binary files /dev/null and b/dist/HandoverSystem/_internal/_queue.pyd differ diff --git a/dist/HandoverSystem/_internal/_socket.pyd b/dist/HandoverSystem/_internal/_socket.pyd new file mode 100644 index 0000000..fcf2c36 Binary files /dev/null and b/dist/HandoverSystem/_internal/_socket.pyd differ diff --git a/dist/HandoverSystem/_internal/_sqlite3.pyd b/dist/HandoverSystem/_internal/_sqlite3.pyd new file mode 100644 index 0000000..2bdfc06 Binary files /dev/null and b/dist/HandoverSystem/_internal/_sqlite3.pyd differ diff --git a/dist/HandoverSystem/_internal/_ssl.pyd b/dist/HandoverSystem/_internal/_ssl.pyd new file mode 100644 index 0000000..ec90cc9 Binary files /dev/null and b/dist/HandoverSystem/_internal/_ssl.pyd differ diff --git a/dist/HandoverSystem/_internal/_uuid.pyd b/dist/HandoverSystem/_internal/_uuid.pyd new file mode 100644 index 0000000..082d9ec Binary files /dev/null and b/dist/HandoverSystem/_internal/_uuid.pyd differ diff --git a/dist/HandoverSystem/_internal/api-ms-win-core-console-l1-1-0.dll b/dist/HandoverSystem/_internal/api-ms-win-core-console-l1-1-0.dll new file mode 100644 index 0000000..17835e3 Binary files /dev/null and b/dist/HandoverSystem/_internal/api-ms-win-core-console-l1-1-0.dll differ diff --git a/dist/HandoverSystem/_internal/api-ms-win-core-datetime-l1-1-0.dll b/dist/HandoverSystem/_internal/api-ms-win-core-datetime-l1-1-0.dll new file mode 100644 index 0000000..0348f5d Binary files /dev/null and b/dist/HandoverSystem/_internal/api-ms-win-core-datetime-l1-1-0.dll differ diff --git a/dist/HandoverSystem/_internal/api-ms-win-core-debug-l1-1-0.dll b/dist/HandoverSystem/_internal/api-ms-win-core-debug-l1-1-0.dll new file mode 100644 index 0000000..b5cb7f0 Binary files /dev/null and b/dist/HandoverSystem/_internal/api-ms-win-core-debug-l1-1-0.dll differ diff --git a/dist/HandoverSystem/_internal/api-ms-win-core-errorhandling-l1-1-0.dll b/dist/HandoverSystem/_internal/api-ms-win-core-errorhandling-l1-1-0.dll new file mode 100644 index 0000000..9dd1a43 Binary files /dev/null and b/dist/HandoverSystem/_internal/api-ms-win-core-errorhandling-l1-1-0.dll differ diff --git a/dist/HandoverSystem/_internal/api-ms-win-core-fibers-l1-1-0.dll b/dist/HandoverSystem/_internal/api-ms-win-core-fibers-l1-1-0.dll new file mode 100644 index 0000000..fb6ebab Binary files /dev/null and b/dist/HandoverSystem/_internal/api-ms-win-core-fibers-l1-1-0.dll differ diff --git a/dist/HandoverSystem/_internal/api-ms-win-core-file-l1-1-0.dll b/dist/HandoverSystem/_internal/api-ms-win-core-file-l1-1-0.dll new file mode 100644 index 0000000..efe7e0d Binary files /dev/null and b/dist/HandoverSystem/_internal/api-ms-win-core-file-l1-1-0.dll differ diff --git a/dist/HandoverSystem/_internal/api-ms-win-core-file-l1-2-0.dll b/dist/HandoverSystem/_internal/api-ms-win-core-file-l1-2-0.dll new file mode 100644 index 0000000..aac968d Binary files /dev/null and b/dist/HandoverSystem/_internal/api-ms-win-core-file-l1-2-0.dll differ diff --git a/dist/HandoverSystem/_internal/api-ms-win-core-file-l2-1-0.dll b/dist/HandoverSystem/_internal/api-ms-win-core-file-l2-1-0.dll new file mode 100644 index 0000000..9246b98 Binary files /dev/null and b/dist/HandoverSystem/_internal/api-ms-win-core-file-l2-1-0.dll differ diff --git a/dist/HandoverSystem/_internal/api-ms-win-core-handle-l1-1-0.dll b/dist/HandoverSystem/_internal/api-ms-win-core-handle-l1-1-0.dll new file mode 100644 index 0000000..ba0af7d Binary files /dev/null and b/dist/HandoverSystem/_internal/api-ms-win-core-handle-l1-1-0.dll differ diff --git a/dist/HandoverSystem/_internal/api-ms-win-core-heap-l1-1-0.dll b/dist/HandoverSystem/_internal/api-ms-win-core-heap-l1-1-0.dll new file mode 100644 index 0000000..156d5a4 Binary files /dev/null and b/dist/HandoverSystem/_internal/api-ms-win-core-heap-l1-1-0.dll differ diff --git a/dist/HandoverSystem/_internal/api-ms-win-core-interlocked-l1-1-0.dll b/dist/HandoverSystem/_internal/api-ms-win-core-interlocked-l1-1-0.dll new file mode 100644 index 0000000..da7b577 Binary files /dev/null and b/dist/HandoverSystem/_internal/api-ms-win-core-interlocked-l1-1-0.dll differ diff --git a/dist/HandoverSystem/_internal/api-ms-win-core-libraryloader-l1-1-0.dll b/dist/HandoverSystem/_internal/api-ms-win-core-libraryloader-l1-1-0.dll new file mode 100644 index 0000000..6ac8b28 Binary files /dev/null and b/dist/HandoverSystem/_internal/api-ms-win-core-libraryloader-l1-1-0.dll differ diff --git a/dist/HandoverSystem/_internal/api-ms-win-core-localization-l1-2-0.dll b/dist/HandoverSystem/_internal/api-ms-win-core-localization-l1-2-0.dll new file mode 100644 index 0000000..a1cf662 Binary files /dev/null and b/dist/HandoverSystem/_internal/api-ms-win-core-localization-l1-2-0.dll differ diff --git a/dist/HandoverSystem/_internal/api-ms-win-core-memory-l1-1-0.dll b/dist/HandoverSystem/_internal/api-ms-win-core-memory-l1-1-0.dll new file mode 100644 index 0000000..ff111a8 Binary files /dev/null and b/dist/HandoverSystem/_internal/api-ms-win-core-memory-l1-1-0.dll differ diff --git a/dist/HandoverSystem/_internal/api-ms-win-core-namedpipe-l1-1-0.dll b/dist/HandoverSystem/_internal/api-ms-win-core-namedpipe-l1-1-0.dll new file mode 100644 index 0000000..3a5eb64 Binary files /dev/null and b/dist/HandoverSystem/_internal/api-ms-win-core-namedpipe-l1-1-0.dll differ diff --git a/dist/HandoverSystem/_internal/api-ms-win-core-processenvironment-l1-1-0.dll b/dist/HandoverSystem/_internal/api-ms-win-core-processenvironment-l1-1-0.dll new file mode 100644 index 0000000..1406375 Binary files /dev/null and b/dist/HandoverSystem/_internal/api-ms-win-core-processenvironment-l1-1-0.dll differ diff --git a/dist/HandoverSystem/_internal/api-ms-win-core-processthreads-l1-1-0.dll b/dist/HandoverSystem/_internal/api-ms-win-core-processthreads-l1-1-0.dll new file mode 100644 index 0000000..d2955ba Binary files /dev/null and b/dist/HandoverSystem/_internal/api-ms-win-core-processthreads-l1-1-0.dll differ diff --git a/dist/HandoverSystem/_internal/api-ms-win-core-processthreads-l1-1-1.dll b/dist/HandoverSystem/_internal/api-ms-win-core-processthreads-l1-1-1.dll new file mode 100644 index 0000000..40ad635 Binary files /dev/null and b/dist/HandoverSystem/_internal/api-ms-win-core-processthreads-l1-1-1.dll differ diff --git a/dist/HandoverSystem/_internal/api-ms-win-core-profile-l1-1-0.dll b/dist/HandoverSystem/_internal/api-ms-win-core-profile-l1-1-0.dll new file mode 100644 index 0000000..ee83f52 Binary files /dev/null and b/dist/HandoverSystem/_internal/api-ms-win-core-profile-l1-1-0.dll differ diff --git a/dist/HandoverSystem/_internal/api-ms-win-core-rtlsupport-l1-1-0.dll b/dist/HandoverSystem/_internal/api-ms-win-core-rtlsupport-l1-1-0.dll new file mode 100644 index 0000000..7ca3a69 Binary files /dev/null and b/dist/HandoverSystem/_internal/api-ms-win-core-rtlsupport-l1-1-0.dll differ diff --git a/dist/HandoverSystem/_internal/api-ms-win-core-string-l1-1-0.dll b/dist/HandoverSystem/_internal/api-ms-win-core-string-l1-1-0.dll new file mode 100644 index 0000000..8d5027b Binary files /dev/null and b/dist/HandoverSystem/_internal/api-ms-win-core-string-l1-1-0.dll differ diff --git a/dist/HandoverSystem/_internal/api-ms-win-core-synch-l1-1-0.dll b/dist/HandoverSystem/_internal/api-ms-win-core-synch-l1-1-0.dll new file mode 100644 index 0000000..4a7521b Binary files /dev/null and b/dist/HandoverSystem/_internal/api-ms-win-core-synch-l1-1-0.dll differ diff --git a/dist/HandoverSystem/_internal/api-ms-win-core-synch-l1-2-0.dll b/dist/HandoverSystem/_internal/api-ms-win-core-synch-l1-2-0.dll new file mode 100644 index 0000000..c569e32 Binary files /dev/null and b/dist/HandoverSystem/_internal/api-ms-win-core-synch-l1-2-0.dll differ diff --git a/dist/HandoverSystem/_internal/api-ms-win-core-sysinfo-l1-1-0.dll b/dist/HandoverSystem/_internal/api-ms-win-core-sysinfo-l1-1-0.dll new file mode 100644 index 0000000..30b037a Binary files /dev/null and b/dist/HandoverSystem/_internal/api-ms-win-core-sysinfo-l1-1-0.dll differ diff --git a/dist/HandoverSystem/_internal/api-ms-win-core-timezone-l1-1-0.dll b/dist/HandoverSystem/_internal/api-ms-win-core-timezone-l1-1-0.dll new file mode 100644 index 0000000..c9734c0 Binary files /dev/null and b/dist/HandoverSystem/_internal/api-ms-win-core-timezone-l1-1-0.dll differ diff --git a/dist/HandoverSystem/_internal/api-ms-win-core-util-l1-1-0.dll b/dist/HandoverSystem/_internal/api-ms-win-core-util-l1-1-0.dll new file mode 100644 index 0000000..6e3a173 Binary files /dev/null and b/dist/HandoverSystem/_internal/api-ms-win-core-util-l1-1-0.dll differ diff --git a/dist/HandoverSystem/_internal/api-ms-win-crt-conio-l1-1-0.dll b/dist/HandoverSystem/_internal/api-ms-win-crt-conio-l1-1-0.dll new file mode 100644 index 0000000..a5b16b1 Binary files /dev/null and b/dist/HandoverSystem/_internal/api-ms-win-crt-conio-l1-1-0.dll differ diff --git a/dist/HandoverSystem/_internal/api-ms-win-crt-convert-l1-1-0.dll b/dist/HandoverSystem/_internal/api-ms-win-crt-convert-l1-1-0.dll new file mode 100644 index 0000000..59b9be9 Binary files /dev/null and b/dist/HandoverSystem/_internal/api-ms-win-crt-convert-l1-1-0.dll differ diff --git a/dist/HandoverSystem/_internal/api-ms-win-crt-environment-l1-1-0.dll b/dist/HandoverSystem/_internal/api-ms-win-crt-environment-l1-1-0.dll new file mode 100644 index 0000000..c3e8d2d Binary files /dev/null and b/dist/HandoverSystem/_internal/api-ms-win-crt-environment-l1-1-0.dll differ diff --git a/dist/HandoverSystem/_internal/api-ms-win-crt-filesystem-l1-1-0.dll b/dist/HandoverSystem/_internal/api-ms-win-crt-filesystem-l1-1-0.dll new file mode 100644 index 0000000..585eed6 Binary files /dev/null and b/dist/HandoverSystem/_internal/api-ms-win-crt-filesystem-l1-1-0.dll differ diff --git a/dist/HandoverSystem/_internal/api-ms-win-crt-heap-l1-1-0.dll b/dist/HandoverSystem/_internal/api-ms-win-crt-heap-l1-1-0.dll new file mode 100644 index 0000000..b2b9258 Binary files /dev/null and b/dist/HandoverSystem/_internal/api-ms-win-crt-heap-l1-1-0.dll differ diff --git a/dist/HandoverSystem/_internal/api-ms-win-crt-locale-l1-1-0.dll b/dist/HandoverSystem/_internal/api-ms-win-crt-locale-l1-1-0.dll new file mode 100644 index 0000000..1d938ef Binary files /dev/null and b/dist/HandoverSystem/_internal/api-ms-win-crt-locale-l1-1-0.dll differ diff --git a/dist/HandoverSystem/_internal/api-ms-win-crt-math-l1-1-0.dll b/dist/HandoverSystem/_internal/api-ms-win-crt-math-l1-1-0.dll new file mode 100644 index 0000000..77f7d28 Binary files /dev/null and b/dist/HandoverSystem/_internal/api-ms-win-crt-math-l1-1-0.dll differ diff --git a/dist/HandoverSystem/_internal/api-ms-win-crt-private-l1-1-0.dll b/dist/HandoverSystem/_internal/api-ms-win-crt-private-l1-1-0.dll new file mode 100644 index 0000000..a93f3ab Binary files /dev/null and b/dist/HandoverSystem/_internal/api-ms-win-crt-private-l1-1-0.dll differ diff --git a/dist/HandoverSystem/_internal/api-ms-win-crt-process-l1-1-0.dll b/dist/HandoverSystem/_internal/api-ms-win-crt-process-l1-1-0.dll new file mode 100644 index 0000000..e8d9b72 Binary files /dev/null and b/dist/HandoverSystem/_internal/api-ms-win-crt-process-l1-1-0.dll differ diff --git a/dist/HandoverSystem/_internal/api-ms-win-crt-runtime-l1-1-0.dll b/dist/HandoverSystem/_internal/api-ms-win-crt-runtime-l1-1-0.dll new file mode 100644 index 0000000..b781b98 Binary files /dev/null and b/dist/HandoverSystem/_internal/api-ms-win-crt-runtime-l1-1-0.dll differ diff --git a/dist/HandoverSystem/_internal/api-ms-win-crt-stdio-l1-1-0.dll b/dist/HandoverSystem/_internal/api-ms-win-crt-stdio-l1-1-0.dll new file mode 100644 index 0000000..74c7c8b Binary files /dev/null and b/dist/HandoverSystem/_internal/api-ms-win-crt-stdio-l1-1-0.dll differ diff --git a/dist/HandoverSystem/_internal/api-ms-win-crt-string-l1-1-0.dll b/dist/HandoverSystem/_internal/api-ms-win-crt-string-l1-1-0.dll new file mode 100644 index 0000000..2b7c8c0 Binary files /dev/null and b/dist/HandoverSystem/_internal/api-ms-win-crt-string-l1-1-0.dll differ diff --git a/dist/HandoverSystem/_internal/api-ms-win-crt-time-l1-1-0.dll b/dist/HandoverSystem/_internal/api-ms-win-crt-time-l1-1-0.dll new file mode 100644 index 0000000..214e4e1 Binary files /dev/null and b/dist/HandoverSystem/_internal/api-ms-win-crt-time-l1-1-0.dll differ diff --git a/dist/HandoverSystem/_internal/api-ms-win-crt-utility-l1-1-0.dll b/dist/HandoverSystem/_internal/api-ms-win-crt-utility-l1-1-0.dll new file mode 100644 index 0000000..c1ce2b5 Binary files /dev/null and b/dist/HandoverSystem/_internal/api-ms-win-crt-utility-l1-1-0.dll differ diff --git a/dist/HandoverSystem/_internal/assets/icons/app_icon.ico b/dist/HandoverSystem/_internal/assets/icons/app_icon.ico new file mode 100644 index 0000000..3d1a806 Binary files /dev/null and b/dist/HandoverSystem/_internal/assets/icons/app_icon.ico differ diff --git a/dist/HandoverSystem/_internal/assets/styles/dark_theme.qss b/dist/HandoverSystem/_internal/assets/styles/dark_theme.qss new file mode 100644 index 0000000..cab57b3 --- /dev/null +++ b/dist/HandoverSystem/_internal/assets/styles/dark_theme.qss @@ -0,0 +1,350 @@ +/* + * 다크 테마 스타일시트 + * 전동차 업무 인수인계 시스템 + */ + +/* ======================================== + 기본 위젯 + ======================================== */ + +QWidget { + background-color: #0f172a; + color: #f8fafc; + font-family: 'GmarketSans', sans-serif; +} + +QMainWindow { + background-color: #0f172a; +} + +/* ======================================== + 라벨 + ======================================== */ + +QLabel { + color: #f8fafc; +} + +QLabel[class="secondary"] { + color: #94a3b8; +} + +QLabel[class="title"] { + font-size: 18px; + font-weight: bold; +} + +/* ======================================== + 버튼 + ======================================== */ + +QPushButton { + background-color: #334155; + color: #f8fafc; + border: none; + border-radius: 8px; + padding: 10px 20px; + font-weight: 500; +} + +QPushButton:hover { + background-color: #475569; +} + +QPushButton:pressed { + background-color: #1e293b; +} + +QPushButton:disabled { + background-color: #1e293b; + color: #64748b; +} + +QPushButton[class="primary"] { + background-color: #3b82f6; + color: white; +} + +QPushButton[class="primary"]:hover { + background-color: #2563eb; +} + +QPushButton[class="danger"] { + background-color: #ef4444; + color: white; +} + +QPushButton[class="danger"]:hover { + background-color: #dc2626; +} + +/* ======================================== + 입력 필드 + ======================================== */ + +QLineEdit { + background-color: #1e293b; + color: #f8fafc; + border: 2px solid #334155; + border-radius: 8px; + padding: 10px 14px; + selection-background-color: #3b82f6; +} + +QLineEdit:focus { + border-color: #3b82f6; +} + +QLineEdit:disabled { + background-color: #334155; + color: #64748b; +} + +QTextEdit { + background-color: #1e293b; + color: #f8fafc; + border: 2px solid #334155; + border-radius: 8px; + padding: 10px; + selection-background-color: #3b82f6; +} + +QTextEdit:focus { + border-color: #3b82f6; +} + +/* ======================================== + 콤보박스 + ======================================== */ + +QComboBox { + background-color: #1e293b; + color: #f8fafc; + border: 2px solid #334155; + border-radius: 8px; + padding: 10px 14px; + min-height: 20px; +} + +QComboBox:hover { + border-color: #3b82f6; +} + +QComboBox::drop-down { + border: none; + width: 30px; +} + +QComboBox::down-arrow { + image: none; + border-left: 5px solid transparent; + border-right: 5px solid transparent; + border-top: 6px solid #f8fafc; + margin-right: 10px; +} + +QComboBox QAbstractItemView { + background-color: #1e293b; + color: #f8fafc; + border: 1px solid #334155; + border-radius: 8px; + selection-background-color: #3b82f6; +} + +/* ======================================== + 테이블 + ======================================== */ + +QTableWidget { + background-color: #0f172a; + color: #f8fafc; + border: 1px solid #334155; + border-radius: 8px; + gridline-color: transparent; +} + +QTableWidget::item { + padding: 8px; + border-bottom: 1px solid #334155; +} + +QTableWidget::item:selected { + background-color: #3b82f6; + color: white; +} + +QTableWidget::item:hover { + background-color: #1e3a5f; +} + +QHeaderView::section { + background-color: #334155; + color: #f8fafc; + padding: 12px 8px; + border: none; + border-bottom: 2px solid #334155; + font-weight: bold; +} + +/* ======================================== + 스크롤바 + ======================================== */ + +QScrollBar:vertical { + background-color: #1e293b; + width: 10px; + border-radius: 5px; +} + +QScrollBar::handle:vertical { + background-color: #475569; + border-radius: 5px; + min-height: 20px; +} + +QScrollBar::handle:vertical:hover { + background-color: #3b82f6; +} + +QScrollBar::add-line:vertical, +QScrollBar::sub-line:vertical { + height: 0; +} + +QScrollBar:horizontal { + background-color: #1e293b; + height: 10px; + border-radius: 5px; +} + +QScrollBar::handle:horizontal { + background-color: #475569; + border-radius: 5px; + min-width: 20px; +} + +QScrollBar::handle:horizontal:hover { + background-color: #3b82f6; +} + +/* ======================================== + 탭 위젯 + ======================================== */ + +QTabWidget::pane { + background-color: #1e293b; + border: 1px solid #334155; + border-radius: 12px; + border-top-left-radius: 0; +} + +QTabBar::tab { + background-color: #1e293b; + color: #94a3b8; + border: 1px solid #334155; + border-bottom: none; + padding: 12px 24px; + margin-right: 4px; + border-top-left-radius: 8px; + border-top-right-radius: 8px; +} + +QTabBar::tab:selected { + background-color: #3b82f6; + color: white; + border-color: #3b82f6; +} + +QTabBar::tab:hover:!selected { + background-color: #334155; +} + +/* ======================================== + 메뉴 + ======================================== */ + +QMenuBar { + background-color: #1e293b; + color: #f8fafc; + border-bottom: 1px solid #334155; +} + +QMenuBar::item { + padding: 8px 16px; + border-radius: 4px; +} + +QMenuBar::item:selected { + background-color: #334155; +} + +QMenu { + background-color: #1e293b; + color: #f8fafc; + border: 1px solid #334155; + border-radius: 8px; + padding: 4px; +} + +QMenu::item { + padding: 8px 24px; + border-radius: 4px; +} + +QMenu::item:selected { + background-color: #334155; +} + +QMenu::separator { + height: 1px; + background-color: #334155; + margin: 4px 8px; +} + +/* ======================================== + 체크박스 + ======================================== */ + +QCheckBox { + color: #f8fafc; + spacing: 8px; +} + +QCheckBox::indicator { + width: 18px; + height: 18px; + border-radius: 4px; +} + +QCheckBox::indicator:unchecked { + border: 2px solid #64748b; + background-color: transparent; +} + +QCheckBox::indicator:checked { + border: 2px solid #22c55e; + background-color: #22c55e; +} + +/* ======================================== + 프레임 + ======================================== */ + +QFrame[frameShape="4"], +QFrame[frameShape="5"] { + color: #334155; +} + +/* ======================================== + 툴팁 + ======================================== */ + +QToolTip { + background-color: #1e293b; + color: #f8fafc; + border: 1px solid #334155; + border-radius: 6px; + padding: 8px; +} + + diff --git a/dist/HandoverSystem/_internal/assets/styles/light_theme.qss b/dist/HandoverSystem/_internal/assets/styles/light_theme.qss new file mode 100644 index 0000000..9a6f78d --- /dev/null +++ b/dist/HandoverSystem/_internal/assets/styles/light_theme.qss @@ -0,0 +1,350 @@ +/* + * 라이트 테마 스타일시트 + * 전동차 업무 인수인계 시스템 + */ + +/* ======================================== + 기본 위젯 + ======================================== */ + +QWidget { + background-color: #f8fafc; + color: #1e293b; + font-family: 'GmarketSans', sans-serif; +} + +QMainWindow { + background-color: #f8fafc; +} + +/* ======================================== + 라벨 + ======================================== */ + +QLabel { + color: #1e293b; +} + +QLabel[class="secondary"] { + color: #64748b; +} + +QLabel[class="title"] { + font-size: 18px; + font-weight: bold; +} + +/* ======================================== + 버튼 + ======================================== */ + +QPushButton { + background-color: #e2e8f0; + color: #1e293b; + border: none; + border-radius: 8px; + padding: 10px 20px; + font-weight: 500; +} + +QPushButton:hover { + background-color: #cbd5e1; +} + +QPushButton:pressed { + background-color: #94a3b8; +} + +QPushButton:disabled { + background-color: #f1f5f9; + color: #94a3b8; +} + +QPushButton[class="primary"] { + background-color: #3b82f6; + color: white; +} + +QPushButton[class="primary"]:hover { + background-color: #2563eb; +} + +QPushButton[class="danger"] { + background-color: #ef4444; + color: white; +} + +QPushButton[class="danger"]:hover { + background-color: #dc2626; +} + +/* ======================================== + 입력 필드 + ======================================== */ + +QLineEdit { + background-color: #ffffff; + color: #1e293b; + border: 2px solid #e2e8f0; + border-radius: 8px; + padding: 10px 14px; + selection-background-color: #3b82f6; +} + +QLineEdit:focus { + border-color: #3b82f6; +} + +QLineEdit:disabled { + background-color: #f1f5f9; + color: #94a3b8; +} + +QTextEdit { + background-color: #ffffff; + color: #1e293b; + border: 2px solid #e2e8f0; + border-radius: 8px; + padding: 10px; + selection-background-color: #3b82f6; +} + +QTextEdit:focus { + border-color: #3b82f6; +} + +/* ======================================== + 콤보박스 + ======================================== */ + +QComboBox { + background-color: #ffffff; + color: #1e293b; + border: 2px solid #e2e8f0; + border-radius: 8px; + padding: 10px 14px; + min-height: 20px; +} + +QComboBox:hover { + border-color: #3b82f6; +} + +QComboBox::drop-down { + border: none; + width: 30px; +} + +QComboBox::down-arrow { + image: none; + border-left: 5px solid transparent; + border-right: 5px solid transparent; + border-top: 6px solid #1e293b; + margin-right: 10px; +} + +QComboBox QAbstractItemView { + background-color: #ffffff; + color: #1e293b; + border: 1px solid #e2e8f0; + border-radius: 8px; + selection-background-color: #3b82f6; +} + +/* ======================================== + 테이블 + ======================================== */ + +QTableWidget { + background-color: #ffffff; + color: #1e293b; + border: 1px solid #e2e8f0; + border-radius: 8px; + gridline-color: transparent; +} + +QTableWidget::item { + padding: 8px; + border-bottom: 1px solid #e2e8f0; +} + +QTableWidget::item:selected { + background-color: #3b82f6; + color: white; +} + +QTableWidget::item:hover { + background-color: #dbeafe; +} + +QHeaderView::section { + background-color: #e2e8f0; + color: #1e293b; + padding: 12px 8px; + border: none; + border-bottom: 2px solid #e2e8f0; + font-weight: bold; +} + +/* ======================================== + 스크롤바 + ======================================== */ + +QScrollBar:vertical { + background-color: #f8fafc; + width: 10px; + border-radius: 5px; +} + +QScrollBar::handle:vertical { + background-color: #cbd5e1; + border-radius: 5px; + min-height: 20px; +} + +QScrollBar::handle:vertical:hover { + background-color: #3b82f6; +} + +QScrollBar::add-line:vertical, +QScrollBar::sub-line:vertical { + height: 0; +} + +QScrollBar:horizontal { + background-color: #f8fafc; + height: 10px; + border-radius: 5px; +} + +QScrollBar::handle:horizontal { + background-color: #cbd5e1; + border-radius: 5px; + min-width: 20px; +} + +QScrollBar::handle:horizontal:hover { + background-color: #3b82f6; +} + +/* ======================================== + 탭 위젯 + ======================================== */ + +QTabWidget::pane { + background-color: #ffffff; + border: 1px solid #e2e8f0; + border-radius: 12px; + border-top-left-radius: 0; +} + +QTabBar::tab { + background-color: #f1f5f9; + color: #64748b; + border: 1px solid #e2e8f0; + border-bottom: none; + padding: 12px 24px; + margin-right: 4px; + border-top-left-radius: 8px; + border-top-right-radius: 8px; +} + +QTabBar::tab:selected { + background-color: #3b82f6; + color: white; + border-color: #3b82f6; +} + +QTabBar::tab:hover:!selected { + background-color: #e2e8f0; +} + +/* ======================================== + 메뉴 + ======================================== */ + +QMenuBar { + background-color: #ffffff; + color: #1e293b; + border-bottom: 1px solid #e2e8f0; +} + +QMenuBar::item { + padding: 8px 16px; + border-radius: 4px; +} + +QMenuBar::item:selected { + background-color: #f1f5f9; +} + +QMenu { + background-color: #ffffff; + color: #1e293b; + border: 1px solid #e2e8f0; + border-radius: 8px; + padding: 4px; +} + +QMenu::item { + padding: 8px 24px; + border-radius: 4px; +} + +QMenu::item:selected { + background-color: #f1f5f9; +} + +QMenu::separator { + height: 1px; + background-color: #e2e8f0; + margin: 4px 8px; +} + +/* ======================================== + 체크박스 + ======================================== */ + +QCheckBox { + color: #1e293b; + spacing: 8px; +} + +QCheckBox::indicator { + width: 18px; + height: 18px; + border-radius: 4px; +} + +QCheckBox::indicator:unchecked { + border: 2px solid #94a3b8; + background-color: transparent; +} + +QCheckBox::indicator:checked { + border: 2px solid #22c55e; + background-color: #22c55e; +} + +/* ======================================== + 프레임 + ======================================== */ + +QFrame[frameShape="4"], +QFrame[frameShape="5"] { + color: #e2e8f0; +} + +/* ======================================== + 툴팁 + ======================================== */ + +QToolTip { + background-color: #ffffff; + color: #1e293b; + border: 1px solid #e2e8f0; + border-radius: 6px; + padding: 8px; +} + + diff --git a/dist/HandoverSystem/_internal/base_library.zip b/dist/HandoverSystem/_internal/base_library.zip new file mode 100644 index 0000000..193ac0b Binary files /dev/null and b/dist/HandoverSystem/_internal/base_library.zip differ diff --git a/dist/HandoverSystem/_internal/certifi/cacert.pem b/dist/HandoverSystem/_internal/certifi/cacert.pem new file mode 100644 index 0000000..860f259 --- /dev/null +++ b/dist/HandoverSystem/_internal/certifi/cacert.pem @@ -0,0 +1,4897 @@ + +# Issuer: CN=GlobalSign Root CA O=GlobalSign nv-sa OU=Root CA +# Subject: CN=GlobalSign Root CA O=GlobalSign nv-sa OU=Root CA +# Label: "GlobalSign Root CA" +# Serial: 4835703278459707669005204 +# MD5 Fingerprint: 3e:45:52:15:09:51:92:e1:b7:5d:37:9f:b1:87:29:8a +# SHA1 Fingerprint: b1:bc:96:8b:d4:f4:9d:62:2a:a8:9a:81:f2:15:01:52:a4:1d:82:9c +# SHA256 Fingerprint: eb:d4:10:40:e4:bb:3e:c7:42:c9:e3:81:d3:1e:f2:a4:1a:48:b6:68:5c:96:e7:ce:f3:c1:df:6c:d4:33:1c:99 +-----BEGIN CERTIFICATE----- +MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkG +A1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv +b3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAw +MDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9i +YWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYDVQQDExJHbG9iYWxT +aWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDaDuaZ +jc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavp +xy0Sy6scTHAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp +1Wrjsok6Vjk4bwY8iGlbKk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdG +snUOhugZitVtbNV4FpWi6cgKOOvyJBNPc1STE4U6G7weNLWLBYy5d4ux2x8gkasJ +U26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrXgzT/LCrBbBlDSgeF59N8 +9iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8E +BTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0B +AQUFAAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOz +yj1hTdNGCbM+w6DjY1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE +38NflNUVyRRBnMRddWQVDf9VMOyGj/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymP +AbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhHhm4qxFYxldBniYUr+WymXUad +DKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveCX4XSQRjbgbME +HMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A== +-----END CERTIFICATE----- + +# Issuer: CN=Entrust.net Certification Authority (2048) O=Entrust.net OU=www.entrust.net/CPS_2048 incorp. by ref. (limits liab.)/(c) 1999 Entrust.net Limited +# Subject: CN=Entrust.net Certification Authority (2048) O=Entrust.net OU=www.entrust.net/CPS_2048 incorp. by ref. (limits liab.)/(c) 1999 Entrust.net Limited +# Label: "Entrust.net Premium 2048 Secure Server CA" +# Serial: 946069240 +# MD5 Fingerprint: ee:29:31:bc:32:7e:9a:e6:e8:b5:f7:51:b4:34:71:90 +# SHA1 Fingerprint: 50:30:06:09:1d:97:d4:f5:ae:39:f7:cb:e7:92:7d:7d:65:2d:34:31 +# SHA256 Fingerprint: 6d:c4:71:72:e0:1c:bc:b0:bf:62:58:0d:89:5f:e2:b8:ac:9a:d4:f8:73:80:1e:0c:10:b9:c8:37:d2:1e:b1:77 +-----BEGIN CERTIFICATE----- +MIIEKjCCAxKgAwIBAgIEOGPe+DANBgkqhkiG9w0BAQUFADCBtDEUMBIGA1UEChML +RW50cnVzdC5uZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNfMjA0OCBp +bmNvcnAuIGJ5IHJlZi4gKGxpbWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAxOTk5 +IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNVBAMTKkVudHJ1c3QubmV0IENlcnRp +ZmljYXRpb24gQXV0aG9yaXR5ICgyMDQ4KTAeFw05OTEyMjQxNzUwNTFaFw0yOTA3 +MjQxNDE1MTJaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3d3d3 +LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxp +YWIuKTElMCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEG +A1UEAxMqRW50cnVzdC5uZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgp +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArU1LqRKGsuqjIAcVFmQq +K0vRvwtKTY7tgHalZ7d4QMBzQshowNtTK91euHaYNZOLGp18EzoOH1u3Hs/lJBQe +sYGpjX24zGtLA/ECDNyrpUAkAH90lKGdCCmziAv1h3edVc3kw37XamSrhRSGlVuX +MlBvPci6Zgzj/L24ScF2iUkZ/cCovYmjZy/Gn7xxGWC4LeksyZB2ZnuU4q941mVT +XTzWnLLPKQP5L6RQstRIzgUyVYr9smRMDuSYB3Xbf9+5CFVghTAp+XtIpGmG4zU/ +HoZdenoVve8AjhUiVBcAkCaTvA5JaJG/+EfTnZVCwQ5N328mz8MYIWJmQ3DW1cAH +4QIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNV +HQ4EFgQUVeSB0RGAvtiJuQijMfmhJAkWuXAwDQYJKoZIhvcNAQEFBQADggEBADub +j1abMOdTmXx6eadNl9cZlZD7Bh/KM3xGY4+WZiT6QBshJ8rmcnPyT/4xmf3IDExo +U8aAghOY+rat2l098c5u9hURlIIM7j+VrxGrD9cv3h8Dj1csHsm7mhpElesYT6Yf +zX1XEC+bBAlahLVu2B064dae0Wx5XnkcFMXj0EyTO2U87d89vqbllRrDtRnDvV5b +u/8j72gZyxKTJ1wDLW8w0B62GqzeWvfRqqgnpv55gcR5mTNXuhKwqeBCbJPKVt7+ +bYQLCIt+jerXmCHG8+c8eS9enNFMFY3h7CI3zJpDC5fcgJCNs2ebb0gIFVbPv/Er +fF6adulZkMV8gzURZVE= +-----END CERTIFICATE----- + +# Issuer: CN=Baltimore CyberTrust Root O=Baltimore OU=CyberTrust +# Subject: CN=Baltimore CyberTrust Root O=Baltimore OU=CyberTrust +# Label: "Baltimore CyberTrust Root" +# Serial: 33554617 +# MD5 Fingerprint: ac:b6:94:a5:9c:17:e0:d7:91:52:9b:b1:97:06:a6:e4 +# SHA1 Fingerprint: d4:de:20:d0:5e:66:fc:53:fe:1a:50:88:2c:78:db:28:52:ca:e4:74 +# SHA256 Fingerprint: 16:af:57:a9:f6:76:b0:ab:12:60:95:aa:5e:ba:de:f2:2a:b3:11:19:d6:44:ac:95:cd:4b:93:db:f3:f2:6a:eb +-----BEGIN CERTIFICATE----- +MIIDdzCCAl+gAwIBAgIEAgAAuTANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQGEwJJ +RTESMBAGA1UEChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYD +VQQDExlCYWx0aW1vcmUgQ3liZXJUcnVzdCBSb290MB4XDTAwMDUxMjE4NDYwMFoX +DTI1MDUxMjIzNTkwMFowWjELMAkGA1UEBhMCSUUxEjAQBgNVBAoTCUJhbHRpbW9y +ZTETMBEGA1UECxMKQ3liZXJUcnVzdDEiMCAGA1UEAxMZQmFsdGltb3JlIEN5YmVy +VHJ1c3QgUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKMEuyKr +mD1X6CZymrV51Cni4eiVgLGw41uOKymaZN+hXe2wCQVt2yguzmKiYv60iNoS6zjr +IZ3AQSsBUnuId9Mcj8e6uYi1agnnc+gRQKfRzMpijS3ljwumUNKoUMMo6vWrJYeK +mpYcqWe4PwzV9/lSEy/CG9VwcPCPwBLKBsua4dnKM3p31vjsufFoREJIE9LAwqSu +XmD+tqYF/LTdB1kC1FkYmGP1pWPgkAx9XbIGevOF6uvUA65ehD5f/xXtabz5OTZy +dc93Uk3zyZAsuT3lySNTPx8kmCFcB5kpvcY67Oduhjprl3RjM71oGDHweI12v/ye +jl0qhqdNkNwnGjkCAwEAAaNFMEMwHQYDVR0OBBYEFOWdWTCCR1jMrPoIVDaGezq1 +BE3wMBIGA1UdEwEB/wQIMAYBAf8CAQMwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3 +DQEBBQUAA4IBAQCFDF2O5G9RaEIFoN27TyclhAO992T9Ldcw46QQF+vaKSm2eT92 +9hkTI7gQCvlYpNRhcL0EYWoSihfVCr3FvDB81ukMJY2GQE/szKN+OMY3EU/t3Wgx +jkzSswF07r51XgdIGn9w/xZchMB5hbgF/X++ZRGjD8ACtPhSNzkE1akxehi/oCr0 +Epn3o0WC4zxe9Z2etciefC7IpJ5OCBRLbf1wbWsaY71k5h+3zvDyny67G7fyUIhz +ksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9HRCwBXbsdtTLS +R9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp +-----END CERTIFICATE----- + +# Issuer: CN=Entrust Root Certification Authority O=Entrust, Inc. OU=www.entrust.net/CPS is incorporated by reference/(c) 2006 Entrust, Inc. +# Subject: CN=Entrust Root Certification Authority O=Entrust, Inc. OU=www.entrust.net/CPS is incorporated by reference/(c) 2006 Entrust, Inc. +# Label: "Entrust Root Certification Authority" +# Serial: 1164660820 +# MD5 Fingerprint: d6:a5:c3:ed:5d:dd:3e:00:c1:3d:87:92:1f:1d:3f:e4 +# SHA1 Fingerprint: b3:1e:b1:b7:40:e3:6c:84:02:da:dc:37:d4:4d:f5:d4:67:49:52:f9 +# SHA256 Fingerprint: 73:c1:76:43:4f:1b:c6:d5:ad:f4:5b:0e:76:e7:27:28:7c:8d:e5:76:16:c1:e6:e6:14:1a:2b:2c:bc:7d:8e:4c +-----BEGIN CERTIFICATE----- +MIIEkTCCA3mgAwIBAgIERWtQVDANBgkqhkiG9w0BAQUFADCBsDELMAkGA1UEBhMC +VVMxFjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xOTA3BgNVBAsTMHd3dy5lbnRydXN0 +Lm5ldC9DUFMgaXMgaW5jb3Jwb3JhdGVkIGJ5IHJlZmVyZW5jZTEfMB0GA1UECxMW +KGMpIDIwMDYgRW50cnVzdCwgSW5jLjEtMCsGA1UEAxMkRW50cnVzdCBSb290IENl +cnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA2MTEyNzIwMjM0MloXDTI2MTEyNzIw +NTM0MlowgbAxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMuMTkw +NwYDVQQLEzB3d3cuZW50cnVzdC5uZXQvQ1BTIGlzIGluY29ycG9yYXRlZCBieSBy +ZWZlcmVuY2UxHzAdBgNVBAsTFihjKSAyMDA2IEVudHJ1c3QsIEluYy4xLTArBgNV +BAMTJEVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASIwDQYJ +KoZIhvcNAQEBBQADggEPADCCAQoCggEBALaVtkNC+sZtKm9I35RMOVcF7sN5EUFo +Nu3s/poBj6E4KPz3EEZmLk0eGrEaTsbRwJWIsMn/MYszA9u3g3s+IIRe7bJWKKf4 +4LlAcTfFy0cOlypowCKVYhXbR9n10Cv/gkvJrT7eTNuQgFA/CYqEAOwwCj0Yzfv9 +KlmaI5UXLEWeH25DeW0MXJj+SKfFI0dcXv1u5x609mhF0YaDW6KKjbHjKYD+JXGI +rb68j6xSlkuqUY3kEzEZ6E5Nn9uss2rVvDlUccp6en+Q3X0dgNmBu1kmwhH+5pPi +94DkZfs0Nw4pgHBNrziGLp5/V6+eF67rHMsoIV+2HNjnogQi+dPa2MsCAwEAAaOB +sDCBrTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zArBgNVHRAEJDAi +gA8yMDA2MTEyNzIwMjM0MlqBDzIwMjYxMTI3MjA1MzQyWjAfBgNVHSMEGDAWgBRo +kORnpKZTgMeGZqTx90tD+4S9bTAdBgNVHQ4EFgQUaJDkZ6SmU4DHhmak8fdLQ/uE +vW0wHQYJKoZIhvZ9B0EABBAwDhsIVjcuMTo0LjADAgSQMA0GCSqGSIb3DQEBBQUA +A4IBAQCT1DCw1wMgKtD5Y+iRDAUgqV8ZyntyTtSx29CW+1RaGSwMCPeyvIWonX9t +O1KzKtvn1ISMY/YPyyYBkVBs9F8U4pN0wBOeMDpQ47RgxRzwIkSNcUesyBrJ6Zua +AGAT/3B+XxFNSRuzFVJ7yVTav52Vr2ua2J7p8eRDjeIRRDq/r72DQnNSi6q7pynP +9WQcCk3RvKqsnyrQ/39/2n3qse0wJcGE2jTSW3iDVuycNsMm4hH2Z0kdkquM++v/ +eu6FSqdQgPCnXEqULl8FmTxSQeDNtGPPAUO6nIPcj2A781q0tHuu2guQOHXvgR1m +0vdXcDazv/wor3ElhVsT/h5/WrQ8 +-----END CERTIFICATE----- + +# Issuer: CN=AAA Certificate Services O=Comodo CA Limited +# Subject: CN=AAA Certificate Services O=Comodo CA Limited +# Label: "Comodo AAA Services root" +# Serial: 1 +# MD5 Fingerprint: 49:79:04:b0:eb:87:19:ac:47:b0:bc:11:51:9b:74:d0 +# SHA1 Fingerprint: d1:eb:23:a4:6d:17:d6:8f:d9:25:64:c2:f1:f1:60:17:64:d8:e3:49 +# SHA256 Fingerprint: d7:a7:a0:fb:5d:7e:27:31:d7:71:e9:48:4e:bc:de:f7:1d:5f:0c:3e:0a:29:48:78:2b:c8:3e:e0:ea:69:9e:f4 +-----BEGIN CERTIFICATE----- +MIIEMjCCAxqgAwIBAgIBATANBgkqhkiG9w0BAQUFADB7MQswCQYDVQQGEwJHQjEb +MBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRow +GAYDVQQKDBFDb21vZG8gQ0EgTGltaXRlZDEhMB8GA1UEAwwYQUFBIENlcnRpZmlj +YXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAwMFoXDTI4MTIzMTIzNTk1OVowezEL +MAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UE +BwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNVBAMM +GEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEP +ADCCAQoCggEBAL5AnfRu4ep2hxxNRUSOvkbIgwadwSr+GB+O5AL686tdUIoWMQua +BtDFcCLNSS1UY8y2bmhGC1Pqy0wkwLxyTurxFa70VJoSCsN6sjNg4tqJVfMiWPPe +3M/vg4aijJRPn2jymJBGhCfHdr/jzDUsi14HZGWCwEiwqJH5YZ92IFCokcdmtet4 +YgNW8IoaE+oxox6gmf049vYnMlhvB/VruPsUK6+3qszWY19zjNoFmag4qMsXeDZR +rOme9Hg6jc8P2ULimAyrL58OAd7vn5lJ8S3frHRNG5i1R8XlKdH5kBjHYpy+g8cm +ez6KJcfA3Z3mNWgQIJ2P2N7Sw4ScDV7oL8kCAwEAAaOBwDCBvTAdBgNVHQ4EFgQU +oBEKIz6W8Qfs4q8p74Klf9AwpLQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQF +MAMBAf8wewYDVR0fBHQwcjA4oDagNIYyaHR0cDovL2NybC5jb21vZG9jYS5jb20v +QUFBQ2VydGlmaWNhdGVTZXJ2aWNlcy5jcmwwNqA0oDKGMGh0dHA6Ly9jcmwuY29t +b2RvLm5ldC9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2VzLmNybDANBgkqhkiG9w0BAQUF +AAOCAQEACFb8AvCb6P+k+tZ7xkSAzk/ExfYAWMymtrwUSWgEdujm7l3sAg9g1o1Q +GE8mTgHj5rCl7r+8dFRBv/38ErjHT1r0iWAFf2C3BUrz9vHCv8S5dIa2LX1rzNLz +Rt0vxuBqw8M0Ayx9lt1awg6nCpnBBYurDC/zXDrPbDdVCYfeU0BsWO/8tqtlbgT2 +G9w84FoVxp7Z8VlIMCFlA2zs6SFz7JsDoeA3raAVGI/6ugLOpyypEBMs1OUIJqsi +l2D4kF501KKaU73yqWjgom7C12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3 +smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg== +-----END CERTIFICATE----- + +# Issuer: CN=QuoVadis Root CA 2 O=QuoVadis Limited +# Subject: CN=QuoVadis Root CA 2 O=QuoVadis Limited +# Label: "QuoVadis Root CA 2" +# Serial: 1289 +# MD5 Fingerprint: 5e:39:7b:dd:f8:ba:ec:82:e9:ac:62:ba:0c:54:00:2b +# SHA1 Fingerprint: ca:3a:fb:cf:12:40:36:4b:44:b2:16:20:88:80:48:39:19:93:7c:f7 +# SHA256 Fingerprint: 85:a0:dd:7d:d7:20:ad:b7:ff:05:f8:3d:54:2b:20:9d:c7:ff:45:28:f7:d6:77:b1:83:89:fe:a5:e5:c4:9e:86 +-----BEGIN CERTIFICATE----- +MIIFtzCCA5+gAwIBAgICBQkwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0x +GTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJv +b3QgQ0EgMjAeFw0wNjExMjQxODI3MDBaFw0zMTExMjQxODIzMzNaMEUxCzAJBgNV +BAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMRswGQYDVQQDExJRdW9W +YWRpcyBSb290IENBIDIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCa +GMpLlA0ALa8DKYrwD4HIrkwZhR0In6spRIXzL4GtMh6QRr+jhiYaHv5+HBg6XJxg +Fyo6dIMzMH1hVBHL7avg5tKifvVrbxi3Cgst/ek+7wrGsxDp3MJGF/hd/aTa/55J +WpzmM+Yklvc/ulsrHHo1wtZn/qtmUIttKGAr79dgw8eTvI02kfN/+NsRE8Scd3bB +rrcCaoF6qUWD4gXmuVbBlDePSHFjIuwXZQeVikvfj8ZaCuWw419eaxGrDPmF60Tp ++ARz8un+XJiM9XOva7R+zdRcAitMOeGylZUtQofX1bOQQ7dsE/He3fbE+Ik/0XX1 +ksOR1YqI0JDs3G3eicJlcZaLDQP9nL9bFqyS2+r+eXyt66/3FsvbzSUr5R/7mp/i +Ucw6UwxI5g69ybR2BlLmEROFcmMDBOAENisgGQLodKcftslWZvB1JdxnwQ5hYIiz +PtGo/KPaHbDRsSNU30R2be1B2MGyIrZTHN81Hdyhdyox5C315eXbyOD/5YDXC2Og +/zOhD7osFRXql7PSorW+8oyWHhqPHWykYTe5hnMz15eWniN9gqRMgeKh0bpnX5UH +oycR7hYQe7xFSkyyBNKr79X9DFHOUGoIMfmR2gyPZFwDwzqLID9ujWc9Otb+fVuI +yV77zGHcizN300QyNQliBJIWENieJ0f7OyHj+OsdWwIDAQABo4GwMIGtMA8GA1Ud +EwEB/wQFMAMBAf8wCwYDVR0PBAQDAgEGMB0GA1UdDgQWBBQahGK8SEwzJQTU7tD2 +A8QZRtGUazBuBgNVHSMEZzBlgBQahGK8SEwzJQTU7tD2A8QZRtGUa6FJpEcwRTEL +MAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMT +ElF1b1ZhZGlzIFJvb3QgQ0EgMoICBQkwDQYJKoZIhvcNAQEFBQADggIBAD4KFk2f +BluornFdLwUvZ+YTRYPENvbzwCYMDbVHZF34tHLJRqUDGCdViXh9duqWNIAXINzn +g/iN/Ae42l9NLmeyhP3ZRPx3UIHmfLTJDQtyU/h2BwdBR5YM++CCJpNVjP4iH2Bl +fF/nJrP3MpCYUNQ3cVX2kiF495V5+vgtJodmVjB3pjd4M1IQWK4/YY7yarHvGH5K +WWPKjaJW1acvvFYfzznB4vsKqBUsfU16Y8Zsl0Q80m/DShcK+JDSV6IZUaUtl0Ha +B0+pUNqQjZRG4T7wlP0QADj1O+hA4bRuVhogzG9Yje0uRY/W6ZM/57Es3zrWIozc +hLsib9D45MY56QSIPMO661V6bYCZJPVsAfv4l7CUW+v90m/xd2gNNWQjrLhVoQPR +TUIZ3Ph1WVaj+ahJefivDrkRoHy3au000LYmYjgahwz46P0u05B/B5EqHdZ+XIWD +mbA4CD/pXvk1B+TJYm5Xf6dQlfe6yJvmjqIBxdZmv3lh8zwc4bmCXF2gw+nYSL0Z +ohEUGW6yhhtoPkg3Goi3XZZenMfvJ2II4pEZXNLxId26F0KCl3GBUzGpn/Z9Yr9y +4aOTHcyKJloJONDO1w2AFrR4pTqHTI2KpdVGl/IsELm8VCLAAVBpQ570su9t+Oza +8eOx79+Rj1QqCyXBJhnEUhAFZdWCEOrCMc0u +-----END CERTIFICATE----- + +# Issuer: CN=QuoVadis Root CA 3 O=QuoVadis Limited +# Subject: CN=QuoVadis Root CA 3 O=QuoVadis Limited +# Label: "QuoVadis Root CA 3" +# Serial: 1478 +# MD5 Fingerprint: 31:85:3c:62:94:97:63:b9:aa:fd:89:4e:af:6f:e0:cf +# SHA1 Fingerprint: 1f:49:14:f7:d8:74:95:1d:dd:ae:02:c0:be:fd:3a:2d:82:75:51:85 +# SHA256 Fingerprint: 18:f1:fc:7f:20:5d:f8:ad:dd:eb:7f:e0:07:dd:57:e3:af:37:5a:9c:4d:8d:73:54:6b:f4:f1:fe:d1:e1:8d:35 +-----BEGIN CERTIFICATE----- +MIIGnTCCBIWgAwIBAgICBcYwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0x +GTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJv +b3QgQ0EgMzAeFw0wNjExMjQxOTExMjNaFw0zMTExMjQxOTA2NDRaMEUxCzAJBgNV +BAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMRswGQYDVQQDExJRdW9W +YWRpcyBSb290IENBIDMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDM +V0IWVJzmmNPTTe7+7cefQzlKZbPoFog02w1ZkXTPkrgEQK0CSzGrvI2RaNggDhoB +4hp7Thdd4oq3P5kazethq8Jlph+3t723j/z9cI8LoGe+AaJZz3HmDyl2/7FWeUUr +H556VOijKTVopAFPD6QuN+8bv+OPEKhyq1hX51SGyMnzW9os2l2ObjyjPtr7guXd +8lyyBTNvijbO0BNO/79KDDRMpsMhvVAEVeuxu537RR5kFd5VAYwCdrXLoT9Cabwv +vWhDFlaJKjdhkf2mrk7AyxRllDdLkgbvBNDInIjbC3uBr7E9KsRlOni27tyAsdLT +mZw67mtaa7ONt9XOnMK+pUsvFrGeaDsGb659n/je7Mwpp5ijJUMv7/FfJuGITfhe +btfZFG4ZM2mnO4SJk8RTVROhUXhA+LjJou57ulJCg54U7QVSWllWp5f8nT8KKdjc +T5EOE7zelaTfi5m+rJsziO+1ga8bxiJTyPbH7pcUsMV8eFLI8M5ud2CEpukqdiDt +WAEXMJPpGovgc2PZapKUSU60rUqFxKMiMPwJ7Wgic6aIDFUhWMXhOp8q3crhkODZ +c6tsgLjoC2SToJyMGf+z0gzskSaHirOi4XCPLArlzW1oUevaPwV/izLmE1xr/l9A +4iLItLRkT9a6fUg+qGkM17uGcclzuD87nSVL2v9A6wIDAQABo4IBlTCCAZEwDwYD +VR0TAQH/BAUwAwEB/zCB4QYDVR0gBIHZMIHWMIHTBgkrBgEEAb5YAAMwgcUwgZMG +CCsGAQUFBwICMIGGGoGDQW55IHVzZSBvZiB0aGlzIENlcnRpZmljYXRlIGNvbnN0 +aXR1dGVzIGFjY2VwdGFuY2Ugb2YgdGhlIFF1b1ZhZGlzIFJvb3QgQ0EgMyBDZXJ0 +aWZpY2F0ZSBQb2xpY3kgLyBDZXJ0aWZpY2F0aW9uIFByYWN0aWNlIFN0YXRlbWVu +dC4wLQYIKwYBBQUHAgEWIWh0dHA6Ly93d3cucXVvdmFkaXNnbG9iYWwuY29tL2Nw +czALBgNVHQ8EBAMCAQYwHQYDVR0OBBYEFPLAE+CCQz777i9nMpY1XNu4ywLQMG4G +A1UdIwRnMGWAFPLAE+CCQz777i9nMpY1XNu4ywLQoUmkRzBFMQswCQYDVQQGEwJC +TTEZMBcGA1UEChMQUXVvVmFkaXMgTGltaXRlZDEbMBkGA1UEAxMSUXVvVmFkaXMg +Um9vdCBDQSAzggIFxjANBgkqhkiG9w0BAQUFAAOCAgEAT62gLEz6wPJv92ZVqyM0 +7ucp2sNbtrCD2dDQ4iH782CnO11gUyeim/YIIirnv6By5ZwkajGxkHon24QRiSem +d1o417+shvzuXYO8BsbRd2sPbSQvS3pspweWyuOEn62Iix2rFo1bZhfZFvSLgNLd ++LJ2w/w4E6oM3kJpK27zPOuAJ9v1pkQNn1pVWQvVDVJIxa6f8i+AxeoyUDUSly7B +4f/xI4hROJ/yZlZ25w9Rl6VSDE1JUZU2Pb+iSwwQHYaZTKrzchGT5Or2m9qoXadN +t54CrnMAyNojA+j56hl0YgCUyyIgvpSnWbWCar6ZeXqp8kokUvd0/bpO5qgdAm6x +DYBEwa7TIzdfu4V8K5Iu6H6li92Z4b8nby1dqnuH/grdS/yO9SbkbnBCbjPsMZ57 +k8HkyWkaPcBrTiJt7qtYTcbQQcEr6k8Sh17rRdhs9ZgC06DYVYoGmRmioHfRMJ6s +zHXug/WwYjnPbFfiTNKRCw51KBuav/0aQ/HKd/s7j2G4aSgWQgRecCocIdiP4b0j +Wy10QJLZYxkNc91pvGJHvOB0K7Lrfb5BG7XARsWhIstfTsEokt4YutUqKLsRixeT +mJlglFwjz1onl14LBQaTNx47aTbrqZ5hHY8y2o4M1nQ+ewkk2gF3R8Q7zTSMmfXK +4SVhM7JZG+Ju1zdXtg2pEto= +-----END CERTIFICATE----- + +# Issuer: CN=XRamp Global Certification Authority O=XRamp Security Services Inc OU=www.xrampsecurity.com +# Subject: CN=XRamp Global Certification Authority O=XRamp Security Services Inc OU=www.xrampsecurity.com +# Label: "XRamp Global CA Root" +# Serial: 107108908803651509692980124233745014957 +# MD5 Fingerprint: a1:0b:44:b3:ca:10:d8:00:6e:9d:0f:d8:0f:92:0a:d1 +# SHA1 Fingerprint: b8:01:86:d1:eb:9c:86:a5:41:04:cf:30:54:f3:4c:52:b7:e5:58:c6 +# SHA256 Fingerprint: ce:cd:dc:90:50:99:d8:da:df:c5:b1:d2:09:b7:37:cb:e2:c1:8c:fb:2c:10:c0:ff:0b:cf:0d:32:86:fc:1a:a2 +-----BEGIN CERTIFICATE----- +MIIEMDCCAxigAwIBAgIQUJRs7Bjq1ZxN1ZfvdY+grTANBgkqhkiG9w0BAQUFADCB +gjELMAkGA1UEBhMCVVMxHjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEk +MCIGA1UEChMbWFJhbXAgU2VjdXJpdHkgU2VydmljZXMgSW5jMS0wKwYDVQQDEyRY +UmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQxMTAxMTcx +NDA0WhcNMzUwMTAxMDUzNzE5WjCBgjELMAkGA1UEBhMCVVMxHjAcBgNVBAsTFXd3 +dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2VjdXJpdHkgU2Vy +dmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBB +dXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCYJB69FbS6 +38eMpSe2OAtp87ZOqCwuIR1cRN8hXX4jdP5efrRKt6atH67gBhbim1vZZ3RrXYCP +KZ2GG9mcDZhtdhAoWORlsH9KmHmf4MMxfoArtYzAQDsRhtDLooY2YKTVMIJt2W7Q +DxIEM5dfT2Fa8OT5kavnHTu86M/0ay00fOJIYRyO82FEzG+gSqmUsE3a56k0enI4 +qEHMPJQRfevIpoy3hsvKMzvZPTeL+3o+hiznc9cKV6xkmxnr9A8ECIqsAxcZZPRa +JSKNNCyy9mgdEm3Tih4U2sSPpuIjhdV6Db1q4Ons7Be7QhtnqiXtRYMh/MHJfNVi +PvryxS3T/dRlAgMBAAGjgZ8wgZwwEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0P +BAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFMZPoj0GY4QJnM5i5ASs +jVy16bYbMDYGA1UdHwQvMC0wK6ApoCeGJWh0dHA6Ly9jcmwueHJhbXBzZWN1cml0 +eS5jb20vWEdDQS5jcmwwEAYJKwYBBAGCNxUBBAMCAQEwDQYJKoZIhvcNAQEFBQAD +ggEBAJEVOQMBG2f7Shz5CmBbodpNl2L5JFMn14JkTpAuw0kbK5rc/Kh4ZzXxHfAR +vbdI4xD2Dd8/0sm2qlWkSLoC295ZLhVbO50WfUfXN+pfTXYSNrsf16GBBEYgoyxt +qZ4Bfj8pzgCT3/3JknOJiWSe5yvkHJEs0rnOfc5vMZnT5r7SHpDwCRR5XCOrTdLa +IR9NmXmd4c8nnxCbHIgNsIpkQTG4DmyQJKSbXHGPurt+HBvbaoAPIbzp26a3QPSy +i6mx5O+aGtA9aZnuqCij4Tyz8LIRnM98QObd50N9otg6tamN8jSZxNQQ4Qb9CYQQ +O+7ETPTsJ3xCwnR8gooJybQDJbw= +-----END CERTIFICATE----- + +# Issuer: O=The Go Daddy Group, Inc. OU=Go Daddy Class 2 Certification Authority +# Subject: O=The Go Daddy Group, Inc. OU=Go Daddy Class 2 Certification Authority +# Label: "Go Daddy Class 2 CA" +# Serial: 0 +# MD5 Fingerprint: 91:de:06:25:ab:da:fd:32:17:0c:bb:25:17:2a:84:67 +# SHA1 Fingerprint: 27:96:ba:e6:3f:18:01:e2:77:26:1b:a0:d7:77:70:02:8f:20:ee:e4 +# SHA256 Fingerprint: c3:84:6b:f2:4b:9e:93:ca:64:27:4c:0e:c6:7c:1e:cc:5e:02:4f:fc:ac:d2:d7:40:19:35:0e:81:fe:54:6a:e4 +-----BEGIN CERTIFICATE----- +MIIEADCCAuigAwIBAgIBADANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEh +MB8GA1UEChMYVGhlIEdvIERhZGR5IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBE +YWRkeSBDbGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA0MDYyOTE3 +MDYyMFoXDTM0MDYyOTE3MDYyMFowYzELMAkGA1UEBhMCVVMxITAfBgNVBAoTGFRo +ZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28gRGFkZHkgQ2xhc3Mg +MiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASAwDQYJKoZIhvcNAQEBBQADggEN +ADCCAQgCggEBAN6d1+pXGEmhW+vXX0iG6r7d/+TvZxz0ZWizV3GgXne77ZtJ6XCA +PVYYYwhv2vLM0D9/AlQiVBDYsoHUwHU9S3/Hd8M+eKsaA7Ugay9qK7HFiH7Eux6w +wdhFJ2+qN1j3hybX2C32qRe3H3I2TqYXP2WYktsqbl2i/ojgC95/5Y0V4evLOtXi +EqITLdiOr18SPaAIBQi2XKVlOARFmR6jYGB0xUGlcmIbYsUfb18aQr4CUWWoriMY +avx4A6lNf4DD+qta/KFApMoZFv6yyO9ecw3ud72a9nmYvLEHZ6IVDd2gWMZEewo+ +YihfukEHU1jPEX44dMX4/7VpkI+EdOqXG68CAQOjgcAwgb0wHQYDVR0OBBYEFNLE +sNKR1EwRcbNhyz2h/t2oatTjMIGNBgNVHSMEgYUwgYKAFNLEsNKR1EwRcbNhyz2h +/t2oatTjoWekZTBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYVGhlIEdvIERhZGR5 +IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRpZmlj +YXRpb24gQXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQAD +ggEBADJL87LKPpH8EsahB4yOd6AzBhRckB4Y9wimPQoZ+YeAEW5p5JYXMP80kWNy +OO7MHAGjHZQopDH2esRU1/blMVgDoszOYtuURXO1v0XJJLXVggKtI3lpjbi2Tc7P +TMozI+gciKqdi0FuFskg5YmezTvacPd+mSYgFFQlq25zheabIZ0KbIIOqPjCDPoQ +HmyW74cNxA9hi63ugyuV+I6ShHI56yDqg+2DzZduCLzrTia2cyvk0/ZM/iZx4mER +dEr/VxqHD3VILs9RaRegAhJhldXRQLIQTO7ErBBDpqWeCtWVYpoNz4iCxTIM5Cuf +ReYNnyicsbkqWletNw+vHX/bvZ8= +-----END CERTIFICATE----- + +# Issuer: O=Starfield Technologies, Inc. OU=Starfield Class 2 Certification Authority +# Subject: O=Starfield Technologies, Inc. OU=Starfield Class 2 Certification Authority +# Label: "Starfield Class 2 CA" +# Serial: 0 +# MD5 Fingerprint: 32:4a:4b:bb:c8:63:69:9b:be:74:9a:c6:dd:1d:46:24 +# SHA1 Fingerprint: ad:7e:1c:28:b0:64:ef:8f:60:03:40:20:14:c3:d0:e3:37:0e:b5:8a +# SHA256 Fingerprint: 14:65:fa:20:53:97:b8:76:fa:a6:f0:a9:95:8e:55:90:e4:0f:cc:7f:aa:4f:b7:c2:c8:67:75:21:fb:5f:b6:58 +-----BEGIN CERTIFICATE----- +MIIEDzCCAvegAwIBAgIBADANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJVUzEl +MCMGA1UEChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMp +U3RhcmZpZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQw +NjI5MTczOTE2WhcNMzQwNjI5MTczOTE2WjBoMQswCQYDVQQGEwJVUzElMCMGA1UE +ChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMpU3RhcmZp +ZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEgMA0GCSqGSIb3 +DQEBAQUAA4IBDQAwggEIAoIBAQC3Msj+6XGmBIWtDBFk385N78gDGIc/oav7PKaf +8MOh2tTYbitTkPskpD6E8J7oX+zlJ0T1KKY/e97gKvDIr1MvnsoFAZMej2YcOadN ++lq2cwQlZut3f+dZxkqZJRRU6ybH838Z1TBwj6+wRir/resp7defqgSHo9T5iaU0 +X9tDkYI22WY8sbi5gv2cOj4QyDvvBmVmepsZGD3/cVE8MC5fvj13c7JdBmzDI1aa +K4UmkhynArPkPw2vCHmCuDY96pzTNbO8acr1zJ3o/WSNF4Azbl5KXZnJHoe0nRrA +1W4TNSNe35tfPe/W93bC6j67eA0cQmdrBNj41tpvi/JEoAGrAgEDo4HFMIHCMB0G +A1UdDgQWBBS/X7fRzt0fhvRbVazc1xDCDqmI5zCBkgYDVR0jBIGKMIGHgBS/X7fR +zt0fhvRbVazc1xDCDqmI56FspGowaDELMAkGA1UEBhMCVVMxJTAjBgNVBAoTHFN0 +YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xMjAwBgNVBAsTKVN0YXJmaWVsZCBD +bGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8w +DQYJKoZIhvcNAQEFBQADggEBAAWdP4id0ckaVaGsafPzWdqbAYcaT1epoXkJKtv3 +L7IezMdeatiDh6GX70k1PncGQVhiv45YuApnP+yz3SFmH8lU+nLMPUxA2IGvd56D +eruix/U0F47ZEUD0/CwqTRV/p2JdLiXTAAsgGh1o+Re49L2L7ShZ3U0WixeDyLJl +xy16paq8U4Zt3VekyvggQQto8PT7dL5WXXp59fkdheMtlb71cZBDzI0fmgAKhynp +VSJYACPq4xJDKVtHCN2MQWplBqjlIapBtJUhlbl90TSrE9atvNziPTnNvT51cKEY +WQPJIrSPnNVeKtelttQKbfi3QBFGmh95DmK/D5fs4C8fF5Q= +-----END CERTIFICATE----- + +# Issuer: CN=DigiCert Assured ID Root CA O=DigiCert Inc OU=www.digicert.com +# Subject: CN=DigiCert Assured ID Root CA O=DigiCert Inc OU=www.digicert.com +# Label: "DigiCert Assured ID Root CA" +# Serial: 17154717934120587862167794914071425081 +# MD5 Fingerprint: 87:ce:0b:7b:2a:0e:49:00:e1:58:71:9b:37:a8:93:72 +# SHA1 Fingerprint: 05:63:b8:63:0d:62:d7:5a:bb:c8:ab:1e:4b:df:b5:a8:99:b2:4d:43 +# SHA256 Fingerprint: 3e:90:99:b5:01:5e:8f:48:6c:00:bc:ea:9d:11:1e:e7:21:fa:ba:35:5a:89:bc:f1:df:69:56:1e:3d:c6:32:5c +-----BEGIN CERTIFICATE----- +MIIDtzCCAp+gAwIBAgIQDOfg5RfYRv6P5WD8G/AwOTANBgkqhkiG9w0BAQUFADBl +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJv +b3QgQ0EwHhcNMDYxMTEwMDAwMDAwWhcNMzExMTEwMDAwMDAwWjBlMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNl +cnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwggEi +MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtDhXO5EOAXLGH87dg+XESpa7c +JpSIqvTO9SA5KFhgDPiA2qkVlTJhPLWxKISKityfCgyDF3qPkKyK53lTXDGEKvYP +mDI2dsze3Tyoou9q+yHyUmHfnyDXH+Kx2f4YZNISW1/5WBg1vEfNoTb5a3/UsDg+ +wRvDjDPZ2C8Y/igPs6eD1sNuRMBhNZYW/lmci3Zt1/GiSw0r/wty2p5g0I6QNcZ4 +VYcgoc/lbQrISXwxmDNsIumH0DJaoroTghHtORedmTpyoeb6pNnVFzF1roV9Iq4/ +AUaG9ih5yLHa5FcXxH4cDrC0kqZWs72yl+2qp/C3xag/lRbQ/6GW6whfGHdPAgMB +AAGjYzBhMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQW +BBRF66Kv9JLLgjEtUYunpyGd823IDzAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYun +pyGd823IDzANBgkqhkiG9w0BAQUFAAOCAQEAog683+Lt8ONyc3pklL/3cmbYMuRC +dWKuh+vy1dneVrOfzM4UKLkNl2BcEkxY5NM9g0lFWJc1aRqoR+pWxnmrEthngYTf +fwk8lOa4JiwgvT2zKIn3X/8i4peEH+ll74fg38FnSbNd67IJKusm7Xi+fT8r87cm +NW1fiQG2SVufAQWbqz0lwcy2f8Lxb4bG+mRo64EtlOtCt/qMHt1i8b5QZ7dsvfPx +H2sMNgcWfzd8qVttevESRmCD1ycEvkvOl77DZypoEd+A5wwzZr8TDRRu838fYxAe ++o0bJW1sj6W3YQGx0qMmoRBxna3iw/nDmVG3KwcIzi7mULKn+gpFL6Lw8g== +-----END CERTIFICATE----- + +# Issuer: CN=DigiCert Global Root CA O=DigiCert Inc OU=www.digicert.com +# Subject: CN=DigiCert Global Root CA O=DigiCert Inc OU=www.digicert.com +# Label: "DigiCert Global Root CA" +# Serial: 10944719598952040374951832963794454346 +# MD5 Fingerprint: 79:e4:a9:84:0d:7d:3a:96:d7:c0:4f:e2:43:4c:89:2e +# SHA1 Fingerprint: a8:98:5d:3a:65:e5:e5:c4:b2:d7:d6:6d:40:c6:dd:2f:b1:9c:54:36 +# SHA256 Fingerprint: 43:48:a0:e9:44:4c:78:cb:26:5e:05:8d:5e:89:44:b4:d8:4f:96:62:bd:26:db:25:7f:89:34:a4:43:c7:01:61 +-----BEGIN CERTIFICATE----- +MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBh +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD +QTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAwMDAwMDBaMGExCzAJBgNVBAYTAlVT +MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j +b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkqhkiG +9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsB +CSDMAZOnTjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97 +nh6Vfe63SKMI2tavegw5BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt +43C/dxC//AH2hdmoRBBYMql1GNXRor5H4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7P +T19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y7vrTC0LUq7dBMtoM1O/4 +gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQABo2MwYTAO +BgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbR +TLtm8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUw +DQYJKoZIhvcNAQEFBQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/Esr +hMAtudXH/vTBH1jLuG2cenTnmCmrEbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg +06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIttep3Sp+dWOIrWcBAI+0tKIJF +PnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886UAb3LujEV0ls +YSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk +CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4= +-----END CERTIFICATE----- + +# Issuer: CN=DigiCert High Assurance EV Root CA O=DigiCert Inc OU=www.digicert.com +# Subject: CN=DigiCert High Assurance EV Root CA O=DigiCert Inc OU=www.digicert.com +# Label: "DigiCert High Assurance EV Root CA" +# Serial: 3553400076410547919724730734378100087 +# MD5 Fingerprint: d4:74:de:57:5c:39:b2:d3:9c:85:83:c5:c0:65:49:8a +# SHA1 Fingerprint: 5f:b7:ee:06:33:e2:59:db:ad:0c:4c:9a:e6:d3:8f:1a:61:c7:dc:25 +# SHA256 Fingerprint: 74:31:e5:f4:c3:c1:ce:46:90:77:4f:0b:61:e0:54:40:88:3b:a9:a0:1e:d0:0b:a6:ab:d7:80:6e:d3:b1:18:cf +-----BEGIN CERTIFICATE----- +MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBs +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSswKQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5j +ZSBFViBSb290IENBMB4XDTA2MTExMDAwMDAwMFoXDTMxMTExMDAwMDAwMFowbDEL +MAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3 +LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFuY2Ug +RVYgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbM5XPm ++9S75S0tMqbf5YE/yc0lSbZxKsPVlDRnogocsF9ppkCxxLeyj9CYpKlBWTrT3JTW +PNt0OKRKzE0lgvdKpVMSOO7zSW1xkX5jtqumX8OkhPhPYlG++MXs2ziS4wblCJEM +xChBVfvLWokVfnHoNb9Ncgk9vjo4UFt3MRuNs8ckRZqnrG0AFFoEt7oT61EKmEFB +Ik5lYYeBQVCmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakaHPQNAQTXKFx01p8VdteZOE3 +hzBWBOURtCmAEvF5OYiiAhF8J2a3iLd48soKqDirCmTCv2ZdlYTBoSUeh10aUAsg +EsxBu24LUTi4S8sCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQF +MAMBAf8wHQYDVR0OBBYEFLE+w2kD+L9HAdSYJhoIAu9jZCvDMB8GA1UdIwQYMBaA +FLE+w2kD+L9HAdSYJhoIAu9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQAcGgaX3Nec +nzyIZgYIVyHbIUf4KmeqvxgydkAQV8GK83rZEWWONfqe/EW1ntlMMUu4kehDLI6z +eM7b41N5cdblIZQB2lWHmiRk9opmzN6cN82oNLFpmyPInngiK3BD41VHMWEZ71jF +hS9OMPagMRYjyOfiZRYzy78aG6A9+MpeizGLYAiJLQwGXFK3xPkKmNEVX58Svnw2 +Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe +vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep ++OkuE6N36B9K +-----END CERTIFICATE----- + +# Issuer: CN=SwissSign Gold CA - G2 O=SwissSign AG +# Subject: CN=SwissSign Gold CA - G2 O=SwissSign AG +# Label: "SwissSign Gold CA - G2" +# Serial: 13492815561806991280 +# MD5 Fingerprint: 24:77:d9:a8:91:d1:3b:fa:88:2d:c2:ff:f8:cd:33:93 +# SHA1 Fingerprint: d8:c5:38:8a:b7:30:1b:1b:6e:d4:7a:e6:45:25:3a:6f:9f:1a:27:61 +# SHA256 Fingerprint: 62:dd:0b:e9:b9:f5:0a:16:3e:a0:f8:e7:5c:05:3b:1e:ca:57:ea:55:c8:68:8f:64:7c:68:81:f2:c8:35:7b:95 +-----BEGIN CERTIFICATE----- +MIIFujCCA6KgAwIBAgIJALtAHEP1Xk+wMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNV +BAYTAkNIMRUwEwYDVQQKEwxTd2lzc1NpZ24gQUcxHzAdBgNVBAMTFlN3aXNzU2ln +biBHb2xkIENBIC0gRzIwHhcNMDYxMDI1MDgzMDM1WhcNMzYxMDI1MDgzMDM1WjBF +MQswCQYDVQQGEwJDSDEVMBMGA1UEChMMU3dpc3NTaWduIEFHMR8wHQYDVQQDExZT +d2lzc1NpZ24gR29sZCBDQSAtIEcyMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC +CgKCAgEAr+TufoskDhJuqVAtFkQ7kpJcyrhdhJJCEyq8ZVeCQD5XJM1QiyUqt2/8 +76LQwB8CJEoTlo8jE+YoWACjR8cGp4QjK7u9lit/VcyLwVcfDmJlD909Vopz2q5+ +bbqBHH5CjCA12UNNhPqE21Is8w4ndwtrvxEvcnifLtg+5hg3Wipy+dpikJKVyh+c +6bM8K8vzARO/Ws/BtQpgvd21mWRTuKCWs2/iJneRjOBiEAKfNA+k1ZIzUd6+jbqE +emA8atufK+ze3gE/bk3lUIbLtK/tREDFylqM2tIrfKjuvqblCqoOpd8FUrdVxyJd +MmqXl2MT28nbeTZ7hTpKxVKJ+STnnXepgv9VHKVxaSvRAiTysybUa9oEVeXBCsdt +MDeQKuSeFDNeFhdVxVu1yzSJkvGdJo+hB9TGsnhQ2wwMC3wLjEHXuendjIj3o02y +MszYF9rNt85mndT9Xv+9lz4pded+p2JYryU0pUHHPbwNUMoDAw8IWh+Vc3hiv69y +FGkOpeUDDniOJihC8AcLYiAQZzlG+qkDzAQ4embvIIO1jEpWjpEA/I5cgt6IoMPi +aG59je883WX0XaxR7ySArqpWl2/5rX3aYT+YdzylkbYcjCbaZaIJbcHiVOO5ykxM +gI93e2CaHt+28kgeDrpOVG2Y4OGiGqJ3UM/EY5LsRxmd6+ZrzsECAwEAAaOBrDCB +qTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUWyV7 +lqRlUX64OfPAeGZe6Drn8O4wHwYDVR0jBBgwFoAUWyV7lqRlUX64OfPAeGZe6Drn +8O4wRgYDVR0gBD8wPTA7BglghXQBWQECAQEwLjAsBggrBgEFBQcCARYgaHR0cDov +L3JlcG9zaXRvcnkuc3dpc3NzaWduLmNvbS8wDQYJKoZIhvcNAQEFBQADggIBACe6 +45R88a7A3hfm5djV9VSwg/S7zV4Fe0+fdWavPOhWfvxyeDgD2StiGwC5+OlgzczO +UYrHUDFu4Up+GC9pWbY9ZIEr44OE5iKHjn3g7gKZYbge9LgriBIWhMIxkziWMaa5 +O1M/wySTVltpkuzFwbs4AOPsF6m43Md8AYOfMke6UiI0HTJ6CVanfCU2qT1L2sCC +bwq7EsiHSycR+R4tx5M/nttfJmtS2S6K8RTGRI0Vqbe/vd6mGu6uLftIdxf+u+yv +GPUqUfA5hJeVbG4bwyvEdGB5JbAKJ9/fXtI5z0V9QkvfsywexcZdylU6oJxpmo/a +77KwPJ+HbBIrZXAVUjEaJM9vMSNQH4xPjyPDdEFjHFWoFN0+4FFQz/EbMFYOkrCC +hdiDyyJkvC24JdVUorgG6q2SpCSgwYa1ShNqR88uC1aVVMvOmttqtKay20EIhid3 +92qgQmwLOM7XdVAyksLfKzAiSNDVQTglXaTpXZ/GlHXQRf0wl0OPkKsKx4ZzYEpp +Ld6leNcG2mqeSz53OiATIgHQv2ieY2BrNU0LbbqhPcCT4H8js1WtciVORvnSFu+w +ZMEBnunKoGqYDs/YYPIvSbjkQuE4NRb0yG5P94FW6LqjviOvrv1vA+ACOzB2+htt +Qc8Bsem4yWb02ybzOqR08kkkW8mw0FfB+j564ZfJ +-----END CERTIFICATE----- + +# Issuer: CN=SecureTrust CA O=SecureTrust Corporation +# Subject: CN=SecureTrust CA O=SecureTrust Corporation +# Label: "SecureTrust CA" +# Serial: 17199774589125277788362757014266862032 +# MD5 Fingerprint: dc:32:c3:a7:6d:25:57:c7:68:09:9d:ea:2d:a9:a2:d1 +# SHA1 Fingerprint: 87:82:c6:c3:04:35:3b:cf:d2:96:92:d2:59:3e:7d:44:d9:34:ff:11 +# SHA256 Fingerprint: f1:c1:b5:0a:e5:a2:0d:d8:03:0e:c9:f6:bc:24:82:3d:d3:67:b5:25:57:59:b4:e7:1b:61:fc:e9:f7:37:5d:73 +-----BEGIN CERTIFICATE----- +MIIDuDCCAqCgAwIBAgIQDPCOXAgWpa1Cf/DrJxhZ0DANBgkqhkiG9w0BAQUFADBI +MQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24x +FzAVBgNVBAMTDlNlY3VyZVRydXN0IENBMB4XDTA2MTEwNzE5MzExOFoXDTI5MTIz +MTE5NDA1NVowSDELMAkGA1UEBhMCVVMxIDAeBgNVBAoTF1NlY3VyZVRydXN0IENv +cnBvcmF0aW9uMRcwFQYDVQQDEw5TZWN1cmVUcnVzdCBDQTCCASIwDQYJKoZIhvcN +AQEBBQADggEPADCCAQoCggEBAKukgeWVzfX2FI7CT8rU4niVWJxB4Q2ZQCQXOZEz +Zum+4YOvYlyJ0fwkW2Gz4BERQRwdbvC4u/jep4G6pkjGnx29vo6pQT64lO0pGtSO +0gMdA+9tDWccV9cGrcrI9f4Or2YlSASWC12juhbDCE/RRvgUXPLIXgGZbf2IzIao +wW8xQmxSPmjL8xk037uHGFaAJsTQ3MBv396gwpEWoGQRS0S8Hvbn+mPeZqx2pHGj +7DaUaHp3pLHnDi+BeuK1cobvomuL8A/b01k/unK8RCSc43Oz969XL0Imnal0ugBS +8kvNU3xHCzaFDmapCJcWNFfBZveA4+1wVMeT4C4oFVmHursCAwEAAaOBnTCBmjAT +BgkrBgEEAYI3FAIEBh4EAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB +/zAdBgNVHQ4EFgQUQjK2FvoE/f5dS3rD/fdMQB1aQ68wNAYDVR0fBC0wKzApoCeg +JYYjaHR0cDovL2NybC5zZWN1cmV0cnVzdC5jb20vU1RDQS5jcmwwEAYJKwYBBAGC +NxUBBAMCAQAwDQYJKoZIhvcNAQEFBQADggEBADDtT0rhWDpSclu1pqNlGKa7UTt3 +6Z3q059c4EVlew3KW+JwULKUBRSuSceNQQcSc5R+DCMh/bwQf2AQWnL1mA6s7Ll/ +3XpvXdMc9P+IBWlCqQVxyLesJugutIxq/3HcuLHfmbx8IVQr5Fiiu1cprp6poxkm +D5kuCLDv/WnPmRoJjeOnnyvJNjR7JLN4TJUXpAYmHrZkUjZfYGfZnMUFdAvnZyPS +CPyI6a6Lf+Ew9Dd+/cYy2i2eRDAwbO4H3tI0/NL/QPZL9GZGBlSm8jIKYyYwa5vR +3ItHuuG51WLQoqD0ZwV4KWMabwTW+MZMo5qxN7SN5ShLHZ4swrhovO0C7jE= +-----END CERTIFICATE----- + +# Issuer: CN=Secure Global CA O=SecureTrust Corporation +# Subject: CN=Secure Global CA O=SecureTrust Corporation +# Label: "Secure Global CA" +# Serial: 9751836167731051554232119481456978597 +# MD5 Fingerprint: cf:f4:27:0d:d4:ed:dc:65:16:49:6d:3d:da:bf:6e:de +# SHA1 Fingerprint: 3a:44:73:5a:e5:81:90:1f:24:86:61:46:1e:3b:9c:c4:5f:f5:3a:1b +# SHA256 Fingerprint: 42:00:f5:04:3a:c8:59:0e:bb:52:7d:20:9e:d1:50:30:29:fb:cb:d4:1c:a1:b5:06:ec:27:f1:5a:de:7d:ac:69 +-----BEGIN CERTIFICATE----- +MIIDvDCCAqSgAwIBAgIQB1YipOjUiolN9BPI8PjqpTANBgkqhkiG9w0BAQUFADBK +MQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24x +GTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwgQ0EwHhcNMDYxMTA3MTk0MjI4WhcNMjkx +MjMxMTk1MjA2WjBKMQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3Qg +Q29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwgQ0EwggEiMA0GCSqG +SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvNS7YrGxVaQZx5RNoJLNP2MwhR/jxYDiJ +iQPpvepeRlMJ3Fz1Wuj3RSoC6zFh1ykzTM7HfAo3fg+6MpjhHZevj8fcyTiW89sa +/FHtaMbQbqR8JNGuQsiWUGMu4P51/pinX0kuleM5M2SOHqRfkNJnPLLZ/kG5VacJ +jnIFHovdRIWCQtBJwB1g8NEXLJXr9qXBkqPFwqcIYA1gBBCWeZ4WNOaptvolRTnI +HmX5k/Wq8VLcmZg9pYYaDDUz+kulBAYVHDGA76oYa8J719rO+TMg1fW9ajMtgQT7 +sFzUnKPiXB3jqUJ1XnvUd+85VLrJChgbEplJL4hL/VBi0XPnj3pDAgMBAAGjgZ0w +gZowEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1UdEwEB/wQF +MAMBAf8wHQYDVR0OBBYEFK9EBMJBfkiD2045AuzshHrmzsmkMDQGA1UdHwQtMCsw +KaAnoCWGI2h0dHA6Ly9jcmwuc2VjdXJldHJ1c3QuY29tL1NHQ0EuY3JsMBAGCSsG +AQQBgjcVAQQDAgEAMA0GCSqGSIb3DQEBBQUAA4IBAQBjGghAfaReUw132HquHw0L +URYD7xh8yOOvaliTFGCRsoTciE6+OYo68+aCiV0BN7OrJKQVDpI1WkpEXk5X+nXO +H0jOZvQ8QCaSmGwb7iRGDBezUqXbpZGRzzfTb+cnCDpOGR86p1hcF895P4vkp9Mm +I50mD1hp/Ed+stCNi5O/KU9DaXR2Z0vPB4zmAve14bRDtUstFJ/53CYNv6ZHdAbY +iNE6KTCEztI5gGIbqMdXSbxqVVFnFUq+NQfk1XWYN3kwFNspnWzFacxHVaIw98xc +f8LDmBxrThaA63p4ZUWiABqvDA1VZDRIuJK58bRQKfJPIx/abKwfROHdI3hRW8cW +-----END CERTIFICATE----- + +# Issuer: CN=COMODO Certification Authority O=COMODO CA Limited +# Subject: CN=COMODO Certification Authority O=COMODO CA Limited +# Label: "COMODO Certification Authority" +# Serial: 104350513648249232941998508985834464573 +# MD5 Fingerprint: 5c:48:dc:f7:42:72:ec:56:94:6d:1c:cc:71:35:80:75 +# SHA1 Fingerprint: 66:31:bf:9e:f7:4f:9e:b6:c9:d5:a6:0c:ba:6a:be:d1:f7:bd:ef:7b +# SHA256 Fingerprint: 0c:2c:d6:3d:f7:80:6f:a3:99:ed:e8:09:11:6b:57:5b:f8:79:89:f0:65:18:f9:80:8c:86:05:03:17:8b:af:66 +-----BEGIN CERTIFICATE----- +MIIEHTCCAwWgAwIBAgIQToEtioJl4AsC7j41AkblPTANBgkqhkiG9w0BAQUFADCB +gTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G +A1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxJzAlBgNV +BAMTHkNPTU9ETyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjEyMDEwMDAw +MDBaFw0yOTEyMzEyMzU5NTlaMIGBMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3Jl +YXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFDT01P +RE8gQ0EgTGltaXRlZDEnMCUGA1UEAxMeQ09NT0RPIENlcnRpZmljYXRpb24gQXV0 +aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0ECLi3LjkRv3 +UcEbVASY06m/weaKXTuH+7uIzg3jLz8GlvCiKVCZrts7oVewdFFxze1CkU1B/qnI +2GqGd0S7WWaXUF601CxwRM/aN5VCaTwwxHGzUvAhTaHYujl8HJ6jJJ3ygxaYqhZ8 +Q5sVW7euNJH+1GImGEaaP+vB+fGQV+useg2L23IwambV4EajcNxo2f8ESIl33rXp ++2dtQem8Ob0y2WIC8bGoPW43nOIv4tOiJovGuFVDiOEjPqXSJDlqR6sA1KGzqSX+ +DT+nHbrTUcELpNqsOO9VUCQFZUaTNE8tja3G1CEZ0o7KBWFxB3NH5YoZEr0ETc5O +nKVIrLsm9wIDAQABo4GOMIGLMB0GA1UdDgQWBBQLWOWLxkwVN6RAqTCpIb5HNlpW +/zAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zBJBgNVHR8EQjBAMD6g +PKA6hjhodHRwOi8vY3JsLmNvbW9kb2NhLmNvbS9DT01PRE9DZXJ0aWZpY2F0aW9u +QXV0aG9yaXR5LmNybDANBgkqhkiG9w0BAQUFAAOCAQEAPpiem/Yb6dc5t3iuHXIY +SdOH5EOC6z/JqvWote9VfCFSZfnVDeFs9D6Mk3ORLgLETgdxb8CPOGEIqB6BCsAv +IC9Bi5HcSEW88cbeunZrM8gALTFGTO3nnc+IlP8zwFboJIYmuNg4ON8qa90SzMc/ +RxdMosIGlgnW2/4/PEZB31jiVg88O8EckzXZOFKs7sjsLjBOlDW0JB9LeGna8gI4 +zJVSk/BwJVmcIGfE7vmLV2H0knZ9P4SNVbfo5azV8fUZVqZa+5Acr5Pr5RzUZ5dd +BA6+C4OmF4O5MBKgxTMVBbkN+8cFduPYSo38NBejxiEovjBFMR7HeL5YYTisO+IB +ZQ== +-----END CERTIFICATE----- + +# Issuer: CN=COMODO ECC Certification Authority O=COMODO CA Limited +# Subject: CN=COMODO ECC Certification Authority O=COMODO CA Limited +# Label: "COMODO ECC Certification Authority" +# Serial: 41578283867086692638256921589707938090 +# MD5 Fingerprint: 7c:62:ff:74:9d:31:53:5e:68:4a:d5:78:aa:1e:bf:23 +# SHA1 Fingerprint: 9f:74:4e:9f:2b:4d:ba:ec:0f:31:2c:50:b6:56:3b:8e:2d:93:c3:11 +# SHA256 Fingerprint: 17:93:92:7a:06:14:54:97:89:ad:ce:2f:8f:34:f7:f0:b6:6d:0f:3a:e3:a3:b8:4d:21:ec:15:db:ba:4f:ad:c7 +-----BEGIN CERTIFICATE----- +MIICiTCCAg+gAwIBAgIQH0evqmIAcFBUTAGem2OZKjAKBggqhkjOPQQDAzCBhTEL +MAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UE +BxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMT +IkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDgwMzA2MDAw +MDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdy +ZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09N +T0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlv +biBBdXRob3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQDR3svdcmCFYX7deSR +FtSrYpn1PlILBs5BAH+X4QokPB0BBO490o0JlwzgdeT6+3eKKvUDYEs2ixYjFq0J +cfRK9ChQtP6IHG4/bC8vCVlbpVsLM5niwz2J+Wos77LTBumjQjBAMB0GA1UdDgQW +BBR1cacZSBm8nZ3qQUfflMRId5nTeTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/ +BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjEA7wNbeqy3eApyt4jf/7VGFAkK+qDm +fQjGGoe9GKhzvSbKYAydzpmfz1wPMOG+FDHqAjAU9JM8SaczepBGR7NjfRObTrdv +GDeAU/7dIOA1mjbRxwG55tzd8/8dLDoWV9mSOdY= +-----END CERTIFICATE----- + +# Issuer: CN=Certigna O=Dhimyotis +# Subject: CN=Certigna O=Dhimyotis +# Label: "Certigna" +# Serial: 18364802974209362175 +# MD5 Fingerprint: ab:57:a6:5b:7d:42:82:19:b5:d8:58:26:28:5e:fd:ff +# SHA1 Fingerprint: b1:2e:13:63:45:86:a4:6f:1a:b2:60:68:37:58:2d:c4:ac:fd:94:97 +# SHA256 Fingerprint: e3:b6:a2:db:2e:d7:ce:48:84:2f:7a:c5:32:41:c7:b7:1d:54:14:4b:fb:40:c1:1f:3f:1d:0b:42:f5:ee:a1:2d +-----BEGIN CERTIFICATE----- +MIIDqDCCApCgAwIBAgIJAP7c4wEPyUj/MA0GCSqGSIb3DQEBBQUAMDQxCzAJBgNV +BAYTAkZSMRIwEAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hMB4X +DTA3MDYyOTE1MTMwNVoXDTI3MDYyOTE1MTMwNVowNDELMAkGA1UEBhMCRlIxEjAQ +BgNVBAoMCURoaW15b3RpczERMA8GA1UEAwwIQ2VydGlnbmEwggEiMA0GCSqGSIb3 +DQEBAQUAA4IBDwAwggEKAoIBAQDIaPHJ1tazNHUmgh7stL7qXOEm7RFHYeGifBZ4 +QCHkYJ5ayGPhxLGWkv8YbWkj4Sti993iNi+RB7lIzw7sebYs5zRLcAglozyHGxny +gQcPOJAZ0xH+hrTy0V4eHpbNgGzOOzGTtvKg0KmVEn2lmsxryIRWijOp5yIVUxbw +zBfsV1/pogqYCd7jX5xv3EjjhQsVWqa6n6xI4wmy9/Qy3l40vhx4XUJbzg4ij02Q +130yGLMLLGq/jj8UEYkgDncUtT2UCIf3JR7VsmAA7G8qKCVuKj4YYxclPz5EIBb2 +JsglrgVKtOdjLPOMFlN+XPsRGgjBRmKfIrjxwo1p3Po6WAbfAgMBAAGjgbwwgbkw +DwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUGu3+QTmQtCRZvgHyUtVF9lo53BEw +ZAYDVR0jBF0wW4AUGu3+QTmQtCRZvgHyUtVF9lo53BGhOKQ2MDQxCzAJBgNVBAYT +AkZSMRIwEAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hggkA/tzj +AQ/JSP8wDgYDVR0PAQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzANBgkqhkiG +9w0BAQUFAAOCAQEAhQMeknH2Qq/ho2Ge6/PAD/Kl1NqV5ta+aDY9fm4fTIrv0Q8h +bV6lUmPOEvjvKtpv6zf+EwLHyzs+ImvaYS5/1HI93TDhHkxAGYwP15zRgzB7mFnc +fca5DClMoTOi62c6ZYTTluLtdkVwj7Ur3vkj1kluPBS1xp81HlDQwY9qcEQCYsuu +HWhBp6pX6FOqB9IG9tUUBguRA3UsbHK1YZWaDYu5Def131TN3ubY1gkIl2PlwS6w +t0QmwCbAr1UwnjvVNioZBPRcHv/PLLf/0P2HQBHVESO7SMAhqaQoLf0V+LBOK/Qw +WyH8EZE0vkHve52Xdf+XlcCWWC/qu0bXu+TZLg== +-----END CERTIFICATE----- + +# Issuer: O=Chunghwa Telecom Co., Ltd. OU=ePKI Root Certification Authority +# Subject: O=Chunghwa Telecom Co., Ltd. OU=ePKI Root Certification Authority +# Label: "ePKI Root Certification Authority" +# Serial: 28956088682735189655030529057352760477 +# MD5 Fingerprint: 1b:2e:00:ca:26:06:90:3d:ad:fe:6f:15:68:d3:6b:b3 +# SHA1 Fingerprint: 67:65:0d:f1:7e:8e:7e:5b:82:40:a4:f4:56:4b:cf:e2:3d:69:c6:f0 +# SHA256 Fingerprint: c0:a6:f4:dc:63:a2:4b:fd:cf:54:ef:2a:6a:08:2a:0a:72:de:35:80:3e:2f:f5:ff:52:7a:e5:d8:72:06:df:d5 +-----BEGIN CERTIFICATE----- +MIIFsDCCA5igAwIBAgIQFci9ZUdcr7iXAF7kBtK8nTANBgkqhkiG9w0BAQUFADBe +MQswCQYDVQQGEwJUVzEjMCEGA1UECgwaQ2h1bmdod2EgVGVsZWNvbSBDby4sIEx0 +ZC4xKjAoBgNVBAsMIWVQS0kgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAe +Fw0wNDEyMjAwMjMxMjdaFw0zNDEyMjAwMjMxMjdaMF4xCzAJBgNVBAYTAlRXMSMw +IQYDVQQKDBpDaHVuZ2h3YSBUZWxlY29tIENvLiwgTHRkLjEqMCgGA1UECwwhZVBL +SSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIICIjANBgkqhkiG9w0BAQEF +AAOCAg8AMIICCgKCAgEA4SUP7o3biDN1Z82tH306Tm2d0y8U82N0ywEhajfqhFAH +SyZbCUNsIZ5qyNUD9WBpj8zwIuQf5/dqIjG3LBXy4P4AakP/h2XGtRrBp0xtInAh +ijHyl3SJCRImHJ7K2RKilTza6We/CKBk49ZCt0Xvl/T29de1ShUCWH2YWEtgvM3X +DZoTM1PRYfl61dd4s5oz9wCGzh1NlDivqOx4UXCKXBCDUSH3ET00hl7lSM2XgYI1 +TBnsZfZrxQWh7kcT1rMhJ5QQCtkkO7q+RBNGMD+XPNjX12ruOzjjK9SXDrkb5wdJ +fzcq+Xd4z1TtW0ado4AOkUPB1ltfFLqfpo0kR0BZv3I4sjZsN/+Z0V0OWQqraffA +sgRFelQArr5T9rXn4fg8ozHSqf4hUmTFpmfwdQcGlBSBVcYn5AGPF8Fqcde+S/uU +WH1+ETOxQvdibBjWzwloPn9s9h6PYq2lY9sJpx8iQkEeb5mKPtf5P0B6ebClAZLS +nT0IFaUQAS2zMnaolQ2zepr7BxB4EW/hj8e6DyUadCrlHJhBmd8hh+iVBmoKs2pH +dmX2Os+PYhcZewoozRrSgx4hxyy/vv9haLdnG7t4TY3OZ+XkwY63I2binZB1NJip +NiuKmpS5nezMirH4JYlcWrYvjB9teSSnUmjDhDXiZo1jDiVN1Rmy5nk3pyKdVDEC +AwEAAaNqMGgwHQYDVR0OBBYEFB4M97Zn8uGSJglFwFU5Lnc/QkqiMAwGA1UdEwQF +MAMBAf8wOQYEZyoHAAQxMC8wLQIBADAJBgUrDgMCGgUAMAcGBWcqAwAABBRFsMLH +ClZ87lt4DJX5GFPBphzYEDANBgkqhkiG9w0BAQUFAAOCAgEACbODU1kBPpVJufGB +uvl2ICO1J2B01GqZNF5sAFPZn/KmsSQHRGoqxqWOeBLoR9lYGxMqXnmbnwoqZ6Yl +PwZpVnPDimZI+ymBV3QGypzqKOg4ZyYr8dW1P2WT+DZdjo2NQCCHGervJ8A9tDkP +JXtoUHRVnAxZfVo9QZQlUgjgRywVMRnVvwdVxrsStZf0X4OFunHB2WyBEXYKCrC/ +gpf36j36+uwtqSiUO1bd0lEursC9CBWMd1I0ltabrNMdjmEPNXubrjlpC2JgQCA2 +j6/7Nu4tCEoduL+bXPjqpRugc6bY+G7gMwRfaKonh+3ZwZCc7b3jajWvY9+rGNm6 +5ulK6lCKD2GTHuItGeIwlDWSXQ62B68ZgI9HkFFLLk3dheLSClIKF5r8GrBQAuUB +o2M3IUxExJtRmREOc5wGj1QupyheRDmHVi03vYVElOEMSyycw5KFNGHLD7ibSkNS +/jQ6fbjpKdx2qcgw+BRxgMYeNkh0IkFch4LoGHGLQYlE535YW6i4jRPpp2zDR+2z +Gp1iro2C6pSe3VkQw63d4k3jMdXH7OjysP6SHhYKGvzZ8/gntsm+HbRsZJB/9OTE +W9c3rkIO3aQab3yIVMUWbuF6aC74Or8NpDyJO3inTmODBCEIZ43ygknQW/2xzQ+D +hNQ+IIX3Sj0rnP0qCglN6oH4EZw= +-----END CERTIFICATE----- + +# Issuer: O=certSIGN OU=certSIGN ROOT CA +# Subject: O=certSIGN OU=certSIGN ROOT CA +# Label: "certSIGN ROOT CA" +# Serial: 35210227249154 +# MD5 Fingerprint: 18:98:c0:d6:e9:3a:fc:f9:b0:f5:0c:f7:4b:01:44:17 +# SHA1 Fingerprint: fa:b7:ee:36:97:26:62:fb:2d:b0:2a:f6:bf:03:fd:e8:7c:4b:2f:9b +# SHA256 Fingerprint: ea:a9:62:c4:fa:4a:6b:af:eb:e4:15:19:6d:35:1c:cd:88:8d:4f:53:f3:fa:8a:e6:d7:c4:66:a9:4e:60:42:bb +-----BEGIN CERTIFICATE----- +MIIDODCCAiCgAwIBAgIGIAYFFnACMA0GCSqGSIb3DQEBBQUAMDsxCzAJBgNVBAYT +AlJPMREwDwYDVQQKEwhjZXJ0U0lHTjEZMBcGA1UECxMQY2VydFNJR04gUk9PVCBD +QTAeFw0wNjA3MDQxNzIwMDRaFw0zMTA3MDQxNzIwMDRaMDsxCzAJBgNVBAYTAlJP +MREwDwYDVQQKEwhjZXJ0U0lHTjEZMBcGA1UECxMQY2VydFNJR04gUk9PVCBDQTCC +ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALczuX7IJUqOtdu0KBuqV5Do +0SLTZLrTk+jUrIZhQGpgV2hUhE28alQCBf/fm5oqrl0Hj0rDKH/v+yv6efHHrfAQ +UySQi2bJqIirr1qjAOm+ukbuW3N7LBeCgV5iLKECZbO9xSsAfsT8AzNXDe3i+s5d +RdY4zTW2ssHQnIFKquSyAVwdj1+ZxLGt24gh65AIgoDzMKND5pCCrlUoSe1b16kQ +OA7+j0xbm0bqQfWwCHTD0IgztnzXdN/chNFDDnU5oSVAKOp4yw4sLjmdjItuFhwv +JoIQ4uNllAoEwF73XVv4EOLQunpL+943AAAaWyjj0pxzPjKHmKHJUS/X3qwzs08C +AwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAcYwHQYDVR0O +BBYEFOCMm9slSbPxfIbWskKHC9BroNnkMA0GCSqGSIb3DQEBBQUAA4IBAQA+0hyJ +LjX8+HXd5n9liPRyTMks1zJO890ZeUe9jjtbkw9QSSQTaxQGcu8J06Gh40CEyecY +MnQ8SG4Pn0vU9x7Tk4ZkVJdjclDVVc/6IJMCopvDI5NOFlV2oHB5bc0hH88vLbwZ +44gx+FkagQnIl6Z0x2DEW8xXjrJ1/RsCCdtZb3KTafcxQdaIOL+Hsr0Wefmq5L6I +Jd1hJyMctTEHBDa0GpC9oHRxUIltvBTjD4au8as+x6AJzKNI0eDbZOeStc+vckNw +i/nDhDwTqn6Sm1dTk/pwwpEOMfmbZ13pljheX7NzTogVZ96edhBiIL5VaZVDADlN +9u6wWk5JRFRYX0KD +-----END CERTIFICATE----- + +# Issuer: CN=NetLock Arany (Class Gold) F\u0151tan\xfas\xedtv\xe1ny O=NetLock Kft. OU=Tan\xfas\xedtv\xe1nykiad\xf3k (Certification Services) +# Subject: CN=NetLock Arany (Class Gold) F\u0151tan\xfas\xedtv\xe1ny O=NetLock Kft. OU=Tan\xfas\xedtv\xe1nykiad\xf3k (Certification Services) +# Label: "NetLock Arany (Class Gold) F\u0151tan\xfas\xedtv\xe1ny" +# Serial: 80544274841616 +# MD5 Fingerprint: c5:a1:b7:ff:73:dd:d6:d7:34:32:18:df:fc:3c:ad:88 +# SHA1 Fingerprint: 06:08:3f:59:3f:15:a1:04:a0:69:a4:6b:a9:03:d0:06:b7:97:09:91 +# SHA256 Fingerprint: 6c:61:da:c3:a2:de:f0:31:50:6b:e0:36:d2:a6:fe:40:19:94:fb:d1:3d:f9:c8:d4:66:59:92:74:c4:46:ec:98 +-----BEGIN CERTIFICATE----- +MIIEFTCCAv2gAwIBAgIGSUEs5AAQMA0GCSqGSIb3DQEBCwUAMIGnMQswCQYDVQQG +EwJIVTERMA8GA1UEBwwIQnVkYXBlc3QxFTATBgNVBAoMDE5ldExvY2sgS2Z0LjE3 +MDUGA1UECwwuVGFuw7pzw610dsOhbnlraWFkw7NrIChDZXJ0aWZpY2F0aW9uIFNl +cnZpY2VzKTE1MDMGA1UEAwwsTmV0TG9jayBBcmFueSAoQ2xhc3MgR29sZCkgRsWR +dGFuw7pzw610dsOhbnkwHhcNMDgxMjExMTUwODIxWhcNMjgxMjA2MTUwODIxWjCB +pzELMAkGA1UEBhMCSFUxETAPBgNVBAcMCEJ1ZGFwZXN0MRUwEwYDVQQKDAxOZXRM +b2NrIEtmdC4xNzA1BgNVBAsMLlRhbsO6c8OtdHbDoW55a2lhZMOzayAoQ2VydGlm +aWNhdGlvbiBTZXJ2aWNlcykxNTAzBgNVBAMMLE5ldExvY2sgQXJhbnkgKENsYXNz +IEdvbGQpIEbFkXRhbsO6c8OtdHbDoW55MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A +MIIBCgKCAQEAxCRec75LbRTDofTjl5Bu0jBFHjzuZ9lk4BqKf8owyoPjIMHj9DrT +lF8afFttvzBPhCf2nx9JvMaZCpDyD/V/Q4Q3Y1GLeqVw/HpYzY6b7cNGbIRwXdrz +AZAj/E4wqX7hJ2Pn7WQ8oLjJM2P+FpD/sLj916jAwJRDC7bVWaaeVtAkH3B5r9s5 +VA1lddkVQZQBr17s9o3x/61k/iCa11zr/qYfCGSji3ZVrR47KGAuhyXoqq8fxmRG +ILdwfzzeSNuWU7c5d+Qa4scWhHaXWy+7GRWF+GmF9ZmnqfI0p6m2pgP8b4Y9VHx2 +BJtr+UBdADTHLpl1neWIA6pN+APSQnbAGwIDAKiLo0UwQzASBgNVHRMBAf8ECDAG +AQH/AgEEMA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUzPpnk/C2uNClwB7zU/2M +U9+D15YwDQYJKoZIhvcNAQELBQADggEBAKt/7hwWqZw8UQCgwBEIBaeZ5m8BiFRh +bvG5GK1Krf6BQCOUL/t1fC8oS2IkgYIL9WHxHG64YTjrgfpioTtaYtOUZcTh5m2C ++C8lcLIhJsFyUR+MLMOEkMNaj7rP9KdlpeuY0fsFskZ1FSNqb4VjMIDw1Z4fKRzC +bLBQWV2QWzuoDTDPv31/zvGdg73JRm4gpvlhUbohL3u+pRVjodSVh/GeufOJ8z2F +uLjbvrW5KfnaNwUASZQDhETnv0Mxz3WLJdH0pmT1kvarBes96aULNmLazAZfNou2 +XjG4Kvte9nHfRCaexOYNkbQudZWAUWpLMKawYqGT8ZvYzsRjdT9ZR7E= +-----END CERTIFICATE----- + +# Issuer: CN=Microsec e-Szigno Root CA 2009 O=Microsec Ltd. +# Subject: CN=Microsec e-Szigno Root CA 2009 O=Microsec Ltd. +# Label: "Microsec e-Szigno Root CA 2009" +# Serial: 14014712776195784473 +# MD5 Fingerprint: f8:49:f4:03:bc:44:2d:83:be:48:69:7d:29:64:fc:b1 +# SHA1 Fingerprint: 89:df:74:fe:5c:f4:0f:4a:80:f9:e3:37:7d:54:da:91:e1:01:31:8e +# SHA256 Fingerprint: 3c:5f:81:fe:a5:fa:b8:2c:64:bf:a2:ea:ec:af:cd:e8:e0:77:fc:86:20:a7:ca:e5:37:16:3d:f3:6e:db:f3:78 +-----BEGIN CERTIFICATE----- +MIIECjCCAvKgAwIBAgIJAMJ+QwRORz8ZMA0GCSqGSIb3DQEBCwUAMIGCMQswCQYD +VQQGEwJIVTERMA8GA1UEBwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0 +ZC4xJzAlBgNVBAMMHk1pY3Jvc2VjIGUtU3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0G +CSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5odTAeFw0wOTA2MTYxMTMwMThaFw0y +OTEyMzAxMTMwMThaMIGCMQswCQYDVQQGEwJIVTERMA8GA1UEBwwIQnVkYXBlc3Qx +FjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jvc2VjIGUtU3pp +Z25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5o +dTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOn4j/NjrdqG2KfgQvvP +kd6mJviZpWNwrZuuyjNAfW2WbqEORO7hE52UQlKavXWFdCyoDh2Tthi3jCyoz/tc +cbna7P7ofo/kLx2yqHWH2Leh5TvPmUpG0IMZfcChEhyVbUr02MelTTMuhTlAdX4U +fIASmFDHQWe4oIBhVKZsTh/gnQ4H6cm6M+f+wFUoLAKApxn1ntxVUwOXewdI/5n7 +N4okxFnMUBBjjqqpGrCEGob5X7uxUG6k0QrM1XF+H6cbfPVTbiJfyyvm1HxdrtbC +xkzlBQHZ7Vf8wSN5/PrIJIOV87VqUQHQd9bpEqH5GoP7ghu5sJf0dgYzQ0mg/wu1 ++rUCAwEAAaOBgDB+MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0G +A1UdDgQWBBTLD8bfQkPMPcu1SCOhGnqmKrs0aDAfBgNVHSMEGDAWgBTLD8bfQkPM +Pcu1SCOhGnqmKrs0aDAbBgNVHREEFDASgRBpbmZvQGUtc3ppZ25vLmh1MA0GCSqG +SIb3DQEBCwUAA4IBAQDJ0Q5eLtXMs3w+y/w9/w0olZMEyL/azXm4Q5DwpL7v8u8h +mLzU1F0G9u5C7DBsoKqpyvGvivo/C3NqPuouQH4frlRheesuCDfXI/OMn74dseGk +ddug4lQUsbocKaQY9hK6ohQU4zE1yED/t+AFdlfBHFny+L/k7SViXITwfn4fs775 +tyERzAMBVnCnEJIeGzSBHq2cGsMEPO0CYdYeBvNfOofyK/FFh+U9rNHHV4S9a67c +2Pm2G2JwCz02yULyMtd6YebS2z3PyKnJm9zbWETXbzivf3jTo60adbocwTZ8jx5t +HMN1Rq41Bab2XD0h7lbwyYIiLXpUq3DDfSJlgnCW +-----END CERTIFICATE----- + +# Issuer: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R3 +# Subject: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R3 +# Label: "GlobalSign Root CA - R3" +# Serial: 4835703278459759426209954 +# MD5 Fingerprint: c5:df:b8:49:ca:05:13:55:ee:2d:ba:1a:c3:3e:b0:28 +# SHA1 Fingerprint: d6:9b:56:11:48:f0:1c:77:c5:45:78:c1:09:26:df:5b:85:69:76:ad +# SHA256 Fingerprint: cb:b5:22:d7:b7:f1:27:ad:6a:01:13:86:5b:df:1c:d4:10:2e:7d:07:59:af:63:5a:7c:f4:72:0d:c9:63:c5:3b +-----BEGIN CERTIFICATE----- +MIIDXzCCAkegAwIBAgILBAAAAAABIVhTCKIwDQYJKoZIhvcNAQELBQAwTDEgMB4G +A1UECxMXR2xvYmFsU2lnbiBSb290IENBIC0gUjMxEzARBgNVBAoTCkdsb2JhbFNp +Z24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMDkwMzE4MTAwMDAwWhcNMjkwMzE4 +MTAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSMzETMBEG +A1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBAMwldpB5BngiFvXAg7aEyiie/QV2EcWtiHL8 +RgJDx7KKnQRfJMsuS+FggkbhUqsMgUdwbN1k0ev1LKMPgj0MK66X17YUhhB5uzsT +gHeMCOFJ0mpiLx9e+pZo34knlTifBtc+ycsmWQ1z3rDI6SYOgxXG71uL0gRgykmm +KPZpO/bLyCiR5Z2KYVc3rHQU3HTgOu5yLy6c+9C7v/U9AOEGM+iCK65TpjoWc4zd +QQ4gOsC0p6Hpsk+QLjJg6VfLuQSSaGjlOCZgdbKfd/+RFO+uIEn8rUAVSNECMWEZ +XriX7613t2Saer9fwRPvm2L7DWzgVGkWqQPabumDk3F2xmmFghcCAwEAAaNCMEAw +DgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFI/wS3+o +LkUkrk1Q+mOai97i3Ru8MA0GCSqGSIb3DQEBCwUAA4IBAQBLQNvAUKr+yAzv95ZU +RUm7lgAJQayzE4aGKAczymvmdLm6AC2upArT9fHxD4q/c2dKg8dEe3jgr25sbwMp +jjM5RcOO5LlXbKr8EpbsU8Yt5CRsuZRj+9xTaGdWPoO4zzUhw8lo/s7awlOqzJCK +6fBdRoyV3XpYKBovHd7NADdBj+1EbddTKJd+82cEHhXXipa0095MJ6RMG3NzdvQX +mcIfeg7jLQitChws/zyrVQ4PkX4268NXSb7hLi18YIvDQVETI53O9zJrlAGomecs +Mx86OyXShkDOOyyGeMlhLxS67ttVb9+E7gUJTb0o2HLO02JQZR7rkpeDMdmztcpH +WD9f +-----END CERTIFICATE----- + +# Issuer: CN=Izenpe.com O=IZENPE S.A. +# Subject: CN=Izenpe.com O=IZENPE S.A. +# Label: "Izenpe.com" +# Serial: 917563065490389241595536686991402621 +# MD5 Fingerprint: a6:b0:cd:85:80:da:5c:50:34:a3:39:90:2f:55:67:73 +# SHA1 Fingerprint: 2f:78:3d:25:52:18:a7:4a:65:39:71:b5:2c:a2:9c:45:15:6f:e9:19 +# SHA256 Fingerprint: 25:30:cc:8e:98:32:15:02:ba:d9:6f:9b:1f:ba:1b:09:9e:2d:29:9e:0f:45:48:bb:91:4f:36:3b:c0:d4:53:1f +-----BEGIN CERTIFICATE----- +MIIF8TCCA9mgAwIBAgIQALC3WhZIX7/hy/WL1xnmfTANBgkqhkiG9w0BAQsFADA4 +MQswCQYDVQQGEwJFUzEUMBIGA1UECgwLSVpFTlBFIFMuQS4xEzARBgNVBAMMCkl6 +ZW5wZS5jb20wHhcNMDcxMjEzMTMwODI4WhcNMzcxMjEzMDgyNzI1WjA4MQswCQYD +VQQGEwJFUzEUMBIGA1UECgwLSVpFTlBFIFMuQS4xEzARBgNVBAMMCkl6ZW5wZS5j +b20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDJ03rKDx6sp4boFmVq +scIbRTJxldn+EFvMr+eleQGPicPK8lVx93e+d5TzcqQsRNiekpsUOqHnJJAKClaO +xdgmlOHZSOEtPtoKct2jmRXagaKH9HtuJneJWK3W6wyyQXpzbm3benhB6QiIEn6H +LmYRY2xU+zydcsC8Lv/Ct90NduM61/e0aL6i9eOBbsFGb12N4E3GVFWJGjMxCrFX +uaOKmMPsOzTFlUFpfnXCPCDFYbpRR6AgkJOhkEvzTnyFRVSa0QUmQbC1TR0zvsQD +yCV8wXDbO/QJLVQnSKwv4cSsPsjLkkxTOTcj7NMB+eAJRE1NZMDhDVqHIrytG6P+ +JrUV86f8hBnp7KGItERphIPzidF0BqnMC9bC3ieFUCbKF7jJeodWLBoBHmy+E60Q +rLUk9TiRodZL2vG70t5HtfG8gfZZa88ZU+mNFctKy6lvROUbQc/hhqfK0GqfvEyN +BjNaooXlkDWgYlwWTvDjovoDGrQscbNYLN57C9saD+veIR8GdwYDsMnvmfzAuU8L +hij+0rnq49qlw0dpEuDb8PYZi+17cNcC1u2HGCgsBCRMd+RIihrGO5rUD8r6ddIB +QFqNeb+Lz0vPqhbBleStTIo+F5HUsWLlguWABKQDfo2/2n+iD5dPDNMN+9fR5XJ+ +HMh3/1uaD7euBUbl8agW7EekFwIDAQABo4H2MIHzMIGwBgNVHREEgagwgaWBD2lu +Zm9AaXplbnBlLmNvbaSBkTCBjjFHMEUGA1UECgw+SVpFTlBFIFMuQS4gLSBDSUYg +QTAxMzM3MjYwLVJNZXJjLlZpdG9yaWEtR2FzdGVpeiBUMTA1NSBGNjIgUzgxQzBB +BgNVBAkMOkF2ZGEgZGVsIE1lZGl0ZXJyYW5lbyBFdG9yYmlkZWEgMTQgLSAwMTAx +MCBWaXRvcmlhLUdhc3RlaXowDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC +AQYwHQYDVR0OBBYEFB0cZQ6o8iV7tJHP5LGx5r1VdGwFMA0GCSqGSIb3DQEBCwUA +A4ICAQB4pgwWSp9MiDrAyw6lFn2fuUhfGI8NYjb2zRlrrKvV9pF9rnHzP7MOeIWb +laQnIUdCSnxIOvVFfLMMjlF4rJUT3sb9fbgakEyrkgPH7UIBzg/YsfqikuFgba56 +awmqxinuaElnMIAkejEWOVt+8Rwu3WwJrfIxwYJOubv5vr8qhT/AQKM6WfxZSzwo +JNu0FXWuDYi6LnPAvViH5ULy617uHjAimcs30cQhbIHsvm0m5hzkQiCeR7Csg1lw +LDXWrzY0tM07+DKo7+N4ifuNRSzanLh+QBxh5z6ikixL8s36mLYp//Pye6kfLqCT +VyvehQP5aTfLnnhqBbTFMXiJ7HqnheG5ezzevh55hM6fcA5ZwjUukCox2eRFekGk +LhObNA5me0mrZJfQRsN5nXJQY6aYWwa9SG3YOYNw6DXwBdGqvOPbyALqfP2C2sJb +UjWumDqtujWTI6cfSN01RpiyEGjkpTHCClguGYEQyVB1/OpaFs4R1+7vUIgtYf8/ +QnMFlEPVjjxOAToZpR9GTnfQXeWBIiGH/pR9hNiTrdZoQ0iy2+tzJOeRf1SktoA+ +naM8THLCV8Sg1Mw4J87VBp6iSNnpn86CcDaTmjvfliHjWbcM2pE38P1ZWrOZyGls +QyYBNWNgVYkDOnXYukrZVP/u3oDYLdE41V4tC5h9Pmzb/CaIxw== +-----END CERTIFICATE----- + +# Issuer: CN=Go Daddy Root Certificate Authority - G2 O=GoDaddy.com, Inc. +# Subject: CN=Go Daddy Root Certificate Authority - G2 O=GoDaddy.com, Inc. +# Label: "Go Daddy Root Certificate Authority - G2" +# Serial: 0 +# MD5 Fingerprint: 80:3a:bc:22:c1:e6:fb:8d:9b:3b:27:4a:32:1b:9a:01 +# SHA1 Fingerprint: 47:be:ab:c9:22:ea:e8:0e:78:78:34:62:a7:9f:45:c2:54:fd:e6:8b +# SHA256 Fingerprint: 45:14:0b:32:47:eb:9c:c8:c5:b4:f0:d7:b5:30:91:f7:32:92:08:9e:6e:5a:63:e2:74:9d:d3:ac:a9:19:8e:da +-----BEGIN CERTIFICATE----- +MIIDxTCCAq2gAwIBAgIBADANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCVVMx +EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAYBgNVBAoT +EUdvRGFkZHkuY29tLCBJbmMuMTEwLwYDVQQDEyhHbyBEYWRkeSBSb290IENlcnRp +ZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIz +NTk1OVowgYMxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6b25hMRMwEQYDVQQH +EwpTY290dHNkYWxlMRowGAYDVQQKExFHb0RhZGR5LmNvbSwgSW5jLjExMC8GA1UE +AxMoR28gRGFkZHkgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIw +DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL9xYgjx+lk09xvJGKP3gElY6SKD +E6bFIEMBO4Tx5oVJnyfq9oQbTqC023CYxzIBsQU+B07u9PpPL1kwIuerGVZr4oAH +/PMWdYA5UXvl+TW2dE6pjYIT5LY/qQOD+qK+ihVqf94Lw7YZFAXK6sOoBJQ7Rnwy +DfMAZiLIjWltNowRGLfTshxgtDj6AozO091GB94KPutdfMh8+7ArU6SSYmlRJQVh +GkSBjCypQ5Yj36w6gZoOKcUcqeldHraenjAKOc7xiID7S13MMuyFYkMlNAJWJwGR +tDtwKj9useiciAF9n9T521NtYJ2/LOdYq7hfRvzOxBsDPAnrSTFcaUaz4EcCAwEA +AaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYE +FDqahQcQZyi27/a9BUFuIMGU2g/eMA0GCSqGSIb3DQEBCwUAA4IBAQCZ21151fmX +WWcDYfF+OwYxdS2hII5PZYe096acvNjpL9DbWu7PdIxztDhC2gV7+AJ1uP2lsdeu +9tfeE8tTEH6KRtGX+rcuKxGrkLAngPnon1rpN5+r5N9ss4UXnT3ZJE95kTXWXwTr +gIOrmgIttRD02JDHBHNA7XIloKmf7J6raBKZV8aPEjoJpL1E/QYVN8Gb5DKj7Tjo +2GTzLH4U/ALqn83/B2gX2yKQOC16jdFU8WnjXzPKej17CuPKf1855eJ1usV2GDPO +LPAvTK33sefOT6jEm0pUBsV/fdUID+Ic/n4XuKxe9tQWskMJDE32p2u0mYRlynqI +4uJEvlz36hz1 +-----END CERTIFICATE----- + +# Issuer: CN=Starfield Root Certificate Authority - G2 O=Starfield Technologies, Inc. +# Subject: CN=Starfield Root Certificate Authority - G2 O=Starfield Technologies, Inc. +# Label: "Starfield Root Certificate Authority - G2" +# Serial: 0 +# MD5 Fingerprint: d6:39:81:c6:52:7e:96:69:fc:fc:ca:66:ed:05:f2:96 +# SHA1 Fingerprint: b5:1c:06:7c:ee:2b:0c:3d:f8:55:ab:2d:92:f4:fe:39:d4:e7:0f:0e +# SHA256 Fingerprint: 2c:e1:cb:0b:f9:d2:f9:e1:02:99:3f:be:21:51:52:c3:b2:dd:0c:ab:de:1c:68:e5:31:9b:83:91:54:db:b7:f5 +-----BEGIN CERTIFICATE----- +MIID3TCCAsWgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBjzELMAkGA1UEBhMCVVMx +EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoT +HFN0YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xMjAwBgNVBAMTKVN0YXJmaWVs +ZCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAw +MFoXDTM3MTIzMTIzNTk1OVowgY8xCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6 +b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFyZmllbGQgVGVj +aG5vbG9naWVzLCBJbmMuMTIwMAYDVQQDEylTdGFyZmllbGQgUm9vdCBDZXJ0aWZp +Y2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBAL3twQP89o/8ArFvW59I2Z154qK3A2FWGMNHttfKPTUuiUP3oWmb3ooa/RMg +nLRJdzIpVv257IzdIvpy3Cdhl+72WoTsbhm5iSzchFvVdPtrX8WJpRBSiUZV9Lh1 +HOZ/5FSuS/hVclcCGfgXcVnrHigHdMWdSL5stPSksPNkN3mSwOxGXn/hbVNMYq/N +Hwtjuzqd+/x5AJhhdM8mgkBj87JyahkNmcrUDnXMN/uLicFZ8WJ/X7NfZTD4p7dN +dloedl40wOiWVpmKs/B/pM293DIxfJHP4F8R+GuqSVzRmZTRouNjWwl2tVZi4Ut0 +HZbUJtQIBFnQmA4O5t78w+wfkPECAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAO +BgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFHwMMh+n2TB/xH1oo2Kooc6rB1snMA0G +CSqGSIb3DQEBCwUAA4IBAQARWfolTwNvlJk7mh+ChTnUdgWUXuEok21iXQnCoKjU +sHU48TRqneSfioYmUeYs0cYtbpUgSpIB7LiKZ3sx4mcujJUDJi5DnUox9g61DLu3 +4jd/IroAow57UvtruzvE03lRTs2Q9GcHGcg8RnoNAX3FWOdt5oUwF5okxBDgBPfg +8n/Uqgr/Qh037ZTlZFkSIHc40zI+OIF1lnP6aI+xy84fxez6nH7PfrHxBy22/L/K +pL/QlwVKvOoYKAKQvVR4CSFx09F9HdkWsKlhPdAKACL8x3vLCWRFCztAgfd9fDL1 +mMpYjn0q7pBZc2T5NnReJaH1ZgUufzkVqSr7UIuOhWn0 +-----END CERTIFICATE----- + +# Issuer: CN=Starfield Services Root Certificate Authority - G2 O=Starfield Technologies, Inc. +# Subject: CN=Starfield Services Root Certificate Authority - G2 O=Starfield Technologies, Inc. +# Label: "Starfield Services Root Certificate Authority - G2" +# Serial: 0 +# MD5 Fingerprint: 17:35:74:af:7b:61:1c:eb:f4:f9:3c:e2:ee:40:f9:a2 +# SHA1 Fingerprint: 92:5a:8f:8d:2c:6d:04:e0:66:5f:59:6a:ff:22:d8:63:e8:25:6f:3f +# SHA256 Fingerprint: 56:8d:69:05:a2:c8:87:08:a4:b3:02:51:90:ed:cf:ed:b1:97:4a:60:6a:13:c6:e5:29:0f:cb:2a:e6:3e:da:b5 +-----BEGIN CERTIFICATE----- +MIID7zCCAtegAwIBAgIBADANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UEBhMCVVMx +EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoT +HFN0YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xOzA5BgNVBAMTMlN0YXJmaWVs +ZCBTZXJ2aWNlcyBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5 +MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgZgxCzAJBgNVBAYTAlVTMRAwDgYD +VQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFy +ZmllbGQgVGVjaG5vbG9naWVzLCBJbmMuMTswOQYDVQQDEzJTdGFyZmllbGQgU2Vy +dmljZXMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBANUMOsQq+U7i9b4Zl1+OiFOxHz/Lz58gE20p +OsgPfTz3a3Y4Y9k2YKibXlwAgLIvWX/2h/klQ4bnaRtSmpDhcePYLQ1Ob/bISdm2 +8xpWriu2dBTrz/sm4xq6HZYuajtYlIlHVv8loJNwU4PahHQUw2eeBGg6345AWh1K +Ts9DkTvnVtYAcMtS7nt9rjrnvDH5RfbCYM8TWQIrgMw0R9+53pBlbQLPLJGmpufe +hRhJfGZOozptqbXuNC66DQO4M99H67FrjSXZm86B0UVGMpZwh94CDklDhbZsc7tk +6mFBrMnUVN+HL8cisibMn1lUaJ/8viovxFUcdUBgF4UCVTmLfwUCAwEAAaNCMEAw +DwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJxfAN+q +AdcwKziIorhtSpzyEZGDMA0GCSqGSIb3DQEBCwUAA4IBAQBLNqaEd2ndOxmfZyMI +bw5hyf2E3F/YNoHN2BtBLZ9g3ccaaNnRbobhiCPPE95Dz+I0swSdHynVv/heyNXB +ve6SbzJ08pGCL72CQnqtKrcgfU28elUSwhXqvfdqlS5sdJ/PHLTyxQGjhdByPq1z +qwubdQxtRbeOlKyWN7Wg0I8VRw7j6IPdj/3vQQF3zCepYoUz8jcI73HPdwbeyBkd +iEDPfUYd/x7H4c7/I9vG+o1VTqkC50cRRj70/b17KSa7qWFiNyi2LSr2EIZkyXCn +0q23KXB56jzaYyWf/Wi3MOxw+3WKt21gZ7IeyLnp2KhvAotnDU0mV3HaIPzBSlCN +sSi6 +-----END CERTIFICATE----- + +# Issuer: CN=AffirmTrust Commercial O=AffirmTrust +# Subject: CN=AffirmTrust Commercial O=AffirmTrust +# Label: "AffirmTrust Commercial" +# Serial: 8608355977964138876 +# MD5 Fingerprint: 82:92:ba:5b:ef:cd:8a:6f:a6:3d:55:f9:84:f6:d6:b7 +# SHA1 Fingerprint: f9:b5:b6:32:45:5f:9c:be:ec:57:5f:80:dc:e9:6e:2c:c7:b2:78:b7 +# SHA256 Fingerprint: 03:76:ab:1d:54:c5:f9:80:3c:e4:b2:e2:01:a0:ee:7e:ef:7b:57:b6:36:e8:a9:3c:9b:8d:48:60:c9:6f:5f:a7 +-----BEGIN CERTIFICATE----- +MIIDTDCCAjSgAwIBAgIId3cGJyapsXwwDQYJKoZIhvcNAQELBQAwRDELMAkGA1UE +BhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVz +dCBDb21tZXJjaWFsMB4XDTEwMDEyOTE0MDYwNloXDTMwMTIzMTE0MDYwNlowRDEL +MAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZp +cm1UcnVzdCBDb21tZXJjaWFsMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC +AQEA9htPZwcroRX1BiLLHwGy43NFBkRJLLtJJRTWzsO3qyxPxkEylFf6EqdbDuKP +Hx6GGaeqtS25Xw2Kwq+FNXkyLbscYjfysVtKPcrNcV/pQr6U6Mje+SJIZMblq8Yr +ba0F8PrVC8+a5fBQpIs7R6UjW3p6+DM/uO+Zl+MgwdYoic+U+7lF7eNAFxHUdPAL +MeIrJmqbTFeurCA+ukV6BfO9m2kVrn1OIGPENXY6BwLJN/3HR+7o8XYdcxXyl6S1 +yHp52UKqK39c/s4mT6NmgTWvRLpUHhwwMmWd5jyTXlBOeuM61G7MGvv50jeuJCqr +VwMiKA1JdX+3KNp1v47j3A55MQIDAQABo0IwQDAdBgNVHQ4EFgQUnZPGU4teyq8/ +nx4P5ZmVvCT2lI8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwDQYJ +KoZIhvcNAQELBQADggEBAFis9AQOzcAN/wr91LoWXym9e2iZWEnStB03TX8nfUYG +XUPGhi4+c7ImfU+TqbbEKpqrIZcUsd6M06uJFdhrJNTxFq7YpFzUf1GO7RgBsZNj +vbz4YYCanrHOQnDiqX0GJX0nof5v7LMeJNrjS1UaADs1tDvZ110w/YETifLCBivt +Z8SOyUOyXGsViQK8YvxO8rUzqrJv0wqiUOP2O+guRMLbZjipM1ZI8W0bM40NjD9g +N53Tym1+NH4Nn3J2ixufcv1SNUFFApYvHLKac0khsUlHRUe072o0EclNmsxZt9YC +nlpOZbWUrhvfKbAW8b8Angc6F2S1BLUjIZkKlTuXfO8= +-----END CERTIFICATE----- + +# Issuer: CN=AffirmTrust Networking O=AffirmTrust +# Subject: CN=AffirmTrust Networking O=AffirmTrust +# Label: "AffirmTrust Networking" +# Serial: 8957382827206547757 +# MD5 Fingerprint: 42:65:ca:be:01:9a:9a:4c:a9:8c:41:49:cd:c0:d5:7f +# SHA1 Fingerprint: 29:36:21:02:8b:20:ed:02:f5:66:c5:32:d1:d6:ed:90:9f:45:00:2f +# SHA256 Fingerprint: 0a:81:ec:5a:92:97:77:f1:45:90:4a:f3:8d:5d:50:9f:66:b5:e2:c5:8f:cd:b5:31:05:8b:0e:17:f3:f0:b4:1b +-----BEGIN CERTIFICATE----- +MIIDTDCCAjSgAwIBAgIIfE8EORzUmS0wDQYJKoZIhvcNAQEFBQAwRDELMAkGA1UE +BhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVz +dCBOZXR3b3JraW5nMB4XDTEwMDEyOTE0MDgyNFoXDTMwMTIzMTE0MDgyNFowRDEL +MAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZp +cm1UcnVzdCBOZXR3b3JraW5nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC +AQEAtITMMxcua5Rsa2FSoOujz3mUTOWUgJnLVWREZY9nZOIG41w3SfYvm4SEHi3y +YJ0wTsyEheIszx6e/jarM3c1RNg1lho9Nuh6DtjVR6FqaYvZ/Ls6rnla1fTWcbua +kCNrmreIdIcMHl+5ni36q1Mr3Lt2PpNMCAiMHqIjHNRqrSK6mQEubWXLviRmVSRL +QESxG9fhwoXA3hA/Pe24/PHxI1Pcv2WXb9n5QHGNfb2V1M6+oF4nI979ptAmDgAp +6zxG8D1gvz9Q0twmQVGeFDdCBKNwV6gbh+0t+nvujArjqWaJGctB+d1ENmHP4ndG +yH329JKBNv3bNPFyfvMMFr20FQIDAQABo0IwQDAdBgNVHQ4EFgQUBx/S55zawm6i +QLSwelAQUHTEyL0wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwDQYJ +KoZIhvcNAQEFBQADggEBAIlXshZ6qML91tmbmzTCnLQyFE2npN/svqe++EPbkTfO +tDIuUFUaNU52Q3Eg75N3ThVwLofDwR1t3Mu1J9QsVtFSUzpE0nPIxBsFZVpikpzu +QY0x2+c06lkh1QF612S4ZDnNye2v7UsDSKegmQGA3GWjNq5lWUhPgkvIZfFXHeVZ +Lgo/bNjR9eUJtGxUAArgFU2HdW23WJZa3W3SAKD0m0i+wzekujbgfIeFlxoVot4u +olu9rxj5kFDNcFn4J2dHy8egBzp90SxdbBk6ZrV9/ZFvgrG+CJPbFEfxojfHRZ48 +x3evZKiT3/Zpg4Jg8klCNO1aAFSFHBY2kgxc+qatv9s= +-----END CERTIFICATE----- + +# Issuer: CN=AffirmTrust Premium O=AffirmTrust +# Subject: CN=AffirmTrust Premium O=AffirmTrust +# Label: "AffirmTrust Premium" +# Serial: 7893706540734352110 +# MD5 Fingerprint: c4:5d:0e:48:b6:ac:28:30:4e:0a:bc:f9:38:16:87:57 +# SHA1 Fingerprint: d8:a6:33:2c:e0:03:6f:b1:85:f6:63:4f:7d:6a:06:65:26:32:28:27 +# SHA256 Fingerprint: 70:a7:3f:7f:37:6b:60:07:42:48:90:45:34:b1:14:82:d5:bf:0e:69:8e:cc:49:8d:f5:25:77:eb:f2:e9:3b:9a +-----BEGIN CERTIFICATE----- +MIIFRjCCAy6gAwIBAgIIbYwURrGmCu4wDQYJKoZIhvcNAQEMBQAwQTELMAkGA1UE +BhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MRwwGgYDVQQDDBNBZmZpcm1UcnVz +dCBQcmVtaXVtMB4XDTEwMDEyOTE0MTAzNloXDTQwMTIzMTE0MTAzNlowQTELMAkG +A1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MRwwGgYDVQQDDBNBZmZpcm1U +cnVzdCBQcmVtaXVtMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxBLf +qV/+Qd3d9Z+K4/as4Tx4mrzY8H96oDMq3I0gW64tb+eT2TZwamjPjlGjhVtnBKAQ +JG9dKILBl1fYSCkTtuG+kU3fhQxTGJoeJKJPj/CihQvL9Cl/0qRY7iZNyaqoe5rZ ++jjeRFcV5fiMyNlI4g0WJx0eyIOFJbe6qlVBzAMiSy2RjYvmia9mx+n/K+k8rNrS +s8PhaJyJ+HoAVt70VZVs+7pk3WKL3wt3MutizCaam7uqYoNMtAZ6MMgpv+0GTZe5 +HMQxK9VfvFMSF5yZVylmd2EhMQcuJUmdGPLu8ytxjLW6OQdJd/zvLpKQBY0tL3d7 +70O/Nbua2Plzpyzy0FfuKE4mX4+QaAkvuPjcBukumj5Rp9EixAqnOEhss/n/fauG +V+O61oV4d7pD6kh/9ti+I20ev9E2bFhc8e6kGVQa9QPSdubhjL08s9NIS+LI+H+S +qHZGnEJlPqQewQcDWkYtuJfzt9WyVSHvutxMAJf7FJUnM7/oQ0dG0giZFmA7mn7S +5u046uwBHjxIVkkJx0w3AJ6IDsBz4W9m6XJHMD4Q5QsDyZpCAGzFlH5hxIrff4Ia +C1nEWTJ3s7xgaVY5/bQGeyzWZDbZvUjthB9+pSKPKrhC9IK31FOQeE4tGv2Bb0TX +OwF0lkLgAOIua+rF7nKsu7/+6qqo+Nz2snmKtmcCAwEAAaNCMEAwHQYDVR0OBBYE +FJ3AZ6YMItkm9UWrpmVSESfYRaxjMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/ +BAQDAgEGMA0GCSqGSIb3DQEBDAUAA4ICAQCzV00QYk465KzquByvMiPIs0laUZx2 +KI15qldGF9X1Uva3ROgIRL8YhNILgM3FEv0AVQVhh0HctSSePMTYyPtwni94loMg +Nt58D2kTiKV1NpgIpsbfrM7jWNa3Pt668+s0QNiigfV4Py/VpfzZotReBA4Xrf5B +8OWycvpEgjNC6C1Y91aMYj+6QrCcDFx+LmUmXFNPALJ4fqENmS2NuB2OosSw/WDQ +MKSOyARiqcTtNd56l+0OOF6SL5Nwpamcb6d9Ex1+xghIsV5n61EIJenmJWtSKZGc +0jlzCFfemQa0W50QBuHCAKi4HEoCChTQwUHK+4w1IX2COPKpVJEZNZOUbWo6xbLQ +u4mGk+ibyQ86p3q4ofB4Rvr8Ny/lioTz3/4E2aFooC8k4gmVBtWVyuEklut89pMF +u+1z6S3RdTnX5yTb2E5fQ4+e0BQ5v1VwSJlXMbSc7kqYA5YwH2AG7hsj/oFgIxpH +YoWlzBk0gG+zrBrjn/B7SK3VAdlntqlyk+otZrWyuOQ9PLLvTIzq6we/qzWaVYa8 +GKa1qF60g2xraUDTn9zxw2lrueFtCfTxqlB2Cnp9ehehVZZCmTEJ3WARjQUwfuaO +RtGdFNrHF+QFlozEJLUbzxQHskD4o55BhrwE0GuWyCqANP2/7waj3VjFhT0+j/6e +KeC2uAloGRwYQw== +-----END CERTIFICATE----- + +# Issuer: CN=AffirmTrust Premium ECC O=AffirmTrust +# Subject: CN=AffirmTrust Premium ECC O=AffirmTrust +# Label: "AffirmTrust Premium ECC" +# Serial: 8401224907861490260 +# MD5 Fingerprint: 64:b0:09:55:cf:b1:d5:99:e2:be:13:ab:a6:5d:ea:4d +# SHA1 Fingerprint: b8:23:6b:00:2f:1d:16:86:53:01:55:6c:11:a4:37:ca:eb:ff:c3:bb +# SHA256 Fingerprint: bd:71:fd:f6:da:97:e4:cf:62:d1:64:7a:dd:25:81:b0:7d:79:ad:f8:39:7e:b4:ec:ba:9c:5e:84:88:82:14:23 +-----BEGIN CERTIFICATE----- +MIIB/jCCAYWgAwIBAgIIdJclisc/elQwCgYIKoZIzj0EAwMwRTELMAkGA1UEBhMC +VVMxFDASBgNVBAoMC0FmZmlybVRydXN0MSAwHgYDVQQDDBdBZmZpcm1UcnVzdCBQ +cmVtaXVtIEVDQzAeFw0xMDAxMjkxNDIwMjRaFw00MDEyMzExNDIwMjRaMEUxCzAJ +BgNVBAYTAlVTMRQwEgYDVQQKDAtBZmZpcm1UcnVzdDEgMB4GA1UEAwwXQWZmaXJt +VHJ1c3QgUHJlbWl1bSBFQ0MwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQNMF4bFZ0D +0KF5Nbc6PJJ6yhUczWLznCZcBz3lVPqj1swS6vQUX+iOGasvLkjmrBhDeKzQN8O9 +ss0s5kfiGuZjuD0uL3jET9v0D6RoTFVya5UdThhClXjMNzyR4ptlKymjQjBAMB0G +A1UdDgQWBBSaryl6wBE1NSZRMADDav5A1a7WPDAPBgNVHRMBAf8EBTADAQH/MA4G +A1UdDwEB/wQEAwIBBjAKBggqhkjOPQQDAwNnADBkAjAXCfOHiFBar8jAQr9HX/Vs +aobgxCd05DhT1wV/GzTjxi+zygk8N53X57hG8f2h4nECMEJZh0PUUd+60wkyWs6I +flc9nF9Ca/UHLbXwgpP5WW+uZPpY5Yse42O+tYHNbwKMeQ== +-----END CERTIFICATE----- + +# Issuer: CN=Certum Trusted Network CA O=Unizeto Technologies S.A. OU=Certum Certification Authority +# Subject: CN=Certum Trusted Network CA O=Unizeto Technologies S.A. OU=Certum Certification Authority +# Label: "Certum Trusted Network CA" +# Serial: 279744 +# MD5 Fingerprint: d5:e9:81:40:c5:18:69:fc:46:2c:89:75:62:0f:aa:78 +# SHA1 Fingerprint: 07:e0:32:e0:20:b7:2c:3f:19:2f:06:28:a2:59:3a:19:a7:0f:06:9e +# SHA256 Fingerprint: 5c:58:46:8d:55:f5:8e:49:7e:74:39:82:d2:b5:00:10:b6:d1:65:37:4a:cf:83:a7:d4:a3:2d:b7:68:c4:40:8e +-----BEGIN CERTIFICATE----- +MIIDuzCCAqOgAwIBAgIDBETAMA0GCSqGSIb3DQEBBQUAMH4xCzAJBgNVBAYTAlBM +MSIwIAYDVQQKExlVbml6ZXRvIFRlY2hub2xvZ2llcyBTLkEuMScwJQYDVQQLEx5D +ZXJ0dW0gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxIjAgBgNVBAMTGUNlcnR1bSBU +cnVzdGVkIE5ldHdvcmsgQ0EwHhcNMDgxMDIyMTIwNzM3WhcNMjkxMjMxMTIwNzM3 +WjB+MQswCQYDVQQGEwJQTDEiMCAGA1UEChMZVW5pemV0byBUZWNobm9sb2dpZXMg +Uy5BLjEnMCUGA1UECxMeQ2VydHVtIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MSIw +IAYDVQQDExlDZXJ0dW0gVHJ1c3RlZCBOZXR3b3JrIENBMIIBIjANBgkqhkiG9w0B +AQEFAAOCAQ8AMIIBCgKCAQEA4/t9o3K6wvDJFIf1awFO4W5AB7ptJ11/91sts1rH +UV+rpDKmYYe2bg+G0jACl/jXaVehGDldamR5xgFZrDwxSjh80gTSSyjoIF87B6LM +TXPb865Px1bVWqeWifrzq2jUI4ZZJ88JJ7ysbnKDHDBy3+Ci6dLhdHUZvSqeexVU +BBvXQzmtVSjF4hq79MDkrjhJM8x2hZ85RdKknvISjFH4fOQtf/WsX+sWn7Et0brM +kUJ3TCXJkDhv2/DM+44el1k+1WBO5gUo7Ul5E0u6SNsv+XLTOcr+H9g0cvW0QM8x +AcPs3hEtF10fuFDRXhmnad4HMyjKUJX5p1TLVIZQRan5SQIDAQABo0IwQDAPBgNV +HRMBAf8EBTADAQH/MB0GA1UdDgQWBBQIds3LB/8k9sXN7buQvOKEN0Z19zAOBgNV +HQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQEFBQADggEBAKaorSLOAT2mo/9i0Eidi15y +sHhE49wcrwn9I0j6vSrEuVUEtRCjjSfeC4Jj0O7eDDd5QVsisrCaQVymcODU0HfL +I9MA4GxWL+FpDQ3Zqr8hgVDZBqWo/5U30Kr+4rP1mS1FhIrlQgnXdAIv94nYmem8 +J9RHjboNRhx3zxSkHLmkMcScKHQDNP8zGSal6Q10tz6XxnboJ5ajZt3hrvJBW8qY +VoNzcOSGGtIxQbovvi0TWnZvTuhOgQ4/WwMioBK+ZlgRSssDxLQqKi2WF+A5VLxI +03YnnZotBqbJ7DnSq9ufmgsnAjUpsUCV5/nonFWIGUbWtzT1fs45mtk48VH3Tyw= +-----END CERTIFICATE----- + +# Issuer: CN=TWCA Root Certification Authority O=TAIWAN-CA OU=Root CA +# Subject: CN=TWCA Root Certification Authority O=TAIWAN-CA OU=Root CA +# Label: "TWCA Root Certification Authority" +# Serial: 1 +# MD5 Fingerprint: aa:08:8f:f6:f9:7b:b7:f2:b1:a7:1e:9b:ea:ea:bd:79 +# SHA1 Fingerprint: cf:9e:87:6d:d3:eb:fc:42:26:97:a3:b5:a3:7a:a0:76:a9:06:23:48 +# SHA256 Fingerprint: bf:d8:8f:e1:10:1c:41:ae:3e:80:1b:f8:be:56:35:0e:e9:ba:d1:a6:b9:bd:51:5e:dc:5c:6d:5b:87:11:ac:44 +-----BEGIN CERTIFICATE----- +MIIDezCCAmOgAwIBAgIBATANBgkqhkiG9w0BAQUFADBfMQswCQYDVQQGEwJUVzES +MBAGA1UECgwJVEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFU +V0NBIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDgwODI4MDcyNDMz +WhcNMzAxMjMxMTU1OTU5WjBfMQswCQYDVQQGEwJUVzESMBAGA1UECgwJVEFJV0FO +LUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NBIFJvb3QgQ2VydGlm +aWNhdGlvbiBBdXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB +AQCwfnK4pAOU5qfeCTiRShFAh6d8WWQUe7UREN3+v9XAu1bihSX0NXIP+FPQQeFE +AcK0HMMxQhZHhTMidrIKbw/lJVBPhYa+v5guEGcevhEFhgWQxFnQfHgQsIBct+HH +K3XLfJ+utdGdIzdjp9xCoi2SBBtQwXu4PhvJVgSLL1KbralW6cH/ralYhzC2gfeX +RfwZVzsrb+RH9JlF/h3x+JejiB03HFyP4HYlmlD4oFT/RJB2I9IyxsOrBr/8+7/z +rX2SYgJbKdM1o5OaQ2RgXbL6Mv87BK9NQGr5x+PvI/1ry+UPizgN7gr8/g+YnzAx +3WxSZfmLgb4i4RxYA7qRG4kHAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV +HRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqOFsmjd6LWvJPelSDGRjjCDWmujANBgkq +hkiG9w0BAQUFAAOCAQEAPNV3PdrfibqHDAhUaiBQkr6wQT25JmSDCi/oQMCXKCeC +MErJk/9q56YAf4lCmtYR5VPOL8zy2gXE/uJQxDqGfczafhAJO5I1KlOy/usrBdls +XebQ79NqZp4VKIV66IIArB6nCWlWQtNoURi+VJq/REG6Sb4gumlc7rh3zc5sH62D +lhh9DrUUOYTxKOkto557HnpyWoOzeW/vtPzQCqVYT0bf+215WfKEIlKuD8z7fDvn +aspHYcN6+NOSBB+4IIThNlQWx0DeO4pz3N/GCUzf7Nr/1FNCocnyYh0igzyXxfkZ +YiesZSLX0zzG5Y6yU8xJzrww/nsOM5D77dIUkR8Hrw== +-----END CERTIFICATE----- + +# Issuer: O=SECOM Trust Systems CO.,LTD. OU=Security Communication RootCA2 +# Subject: O=SECOM Trust Systems CO.,LTD. OU=Security Communication RootCA2 +# Label: "Security Communication RootCA2" +# Serial: 0 +# MD5 Fingerprint: 6c:39:7d:a4:0e:55:59:b2:3f:d6:41:b1:12:50:de:43 +# SHA1 Fingerprint: 5f:3b:8c:f2:f8:10:b3:7d:78:b4:ce:ec:19:19:c3:73:34:b9:c7:74 +# SHA256 Fingerprint: 51:3b:2c:ec:b8:10:d4:cd:e5:dd:85:39:1a:df:c6:c2:dd:60:d8:7b:b7:36:d2:b5:21:48:4a:a4:7a:0e:be:f6 +-----BEGIN CERTIFICATE----- +MIIDdzCCAl+gAwIBAgIBADANBgkqhkiG9w0BAQsFADBdMQswCQYDVQQGEwJKUDEl +MCMGA1UEChMcU0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEnMCUGA1UECxMe +U2VjdXJpdHkgQ29tbXVuaWNhdGlvbiBSb290Q0EyMB4XDTA5MDUyOTA1MDAzOVoX +DTI5MDUyOTA1MDAzOVowXTELMAkGA1UEBhMCSlAxJTAjBgNVBAoTHFNFQ09NIFRy +dXN0IFN5c3RlbXMgQ08uLExURC4xJzAlBgNVBAsTHlNlY3VyaXR5IENvbW11bmlj +YXRpb24gUm9vdENBMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANAV +OVKxUrO6xVmCxF1SrjpDZYBLx/KWvNs2l9amZIyoXvDjChz335c9S672XewhtUGr +zbl+dp+++T42NKA7wfYxEUV0kz1XgMX5iZnK5atq1LXaQZAQwdbWQonCv/Q4EpVM +VAX3NuRFg3sUZdbcDE3R3n4MqzvEFb46VqZab3ZpUql6ucjrappdUtAtCms1FgkQ +hNBqyjoGADdH5H5XTz+L62e4iKrFvlNVspHEfbmwhRkGeC7bYRr6hfVKkaHnFtWO +ojnflLhwHyg/i/xAXmODPIMqGplrz95Zajv8bxbXH/1KEOtOghY6rCcMU/Gt1SSw +awNQwS08Ft1ENCcadfsCAwEAAaNCMEAwHQYDVR0OBBYEFAqFqXdlBZh8QIH4D5cs +OPEK7DzPMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3 +DQEBCwUAA4IBAQBMOqNErLlFsceTfsgLCkLfZOoc7llsCLqJX2rKSpWeeo8HxdpF +coJxDjrSzG+ntKEju/Ykn8sX/oymzsLS28yN/HH8AynBbF0zX2S2ZTuJbxh2ePXc +okgfGT+Ok+vx+hfuzU7jBBJV1uXk3fs+BXziHV7Gp7yXT2g69ekuCkO2r1dcYmh8 +t/2jioSgrGK+KwmHNPBqAbubKVY8/gA3zyNs8U6qtnRGEmyR7jTV7JqR50S+kDFy +1UkC9gLl9B/rfNmWVan/7Ir5mUf/NVoCqgTLiluHcSmRvaS0eg29mvVXIwAHIRc/ +SjnRBUkLp7Y3gaVdjKozXoEofKd9J+sAro03 +-----END CERTIFICATE----- + +# Issuer: CN=Actalis Authentication Root CA O=Actalis S.p.A./03358520967 +# Subject: CN=Actalis Authentication Root CA O=Actalis S.p.A./03358520967 +# Label: "Actalis Authentication Root CA" +# Serial: 6271844772424770508 +# MD5 Fingerprint: 69:c1:0d:4f:07:a3:1b:c3:fe:56:3d:04:bc:11:f6:a6 +# SHA1 Fingerprint: f3:73:b3:87:06:5a:28:84:8a:f2:f3:4a:ce:19:2b:dd:c7:8e:9c:ac +# SHA256 Fingerprint: 55:92:60:84:ec:96:3a:64:b9:6e:2a:be:01:ce:0b:a8:6a:64:fb:fe:bc:c7:aa:b5:af:c1:55:b3:7f:d7:60:66 +-----BEGIN CERTIFICATE----- +MIIFuzCCA6OgAwIBAgIIVwoRl0LE48wwDQYJKoZIhvcNAQELBQAwazELMAkGA1UE +BhMCSVQxDjAMBgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlzIFMucC5BLi8w +MzM1ODUyMDk2NzEnMCUGA1UEAwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290 +IENBMB4XDTExMDkyMjExMjIwMloXDTMwMDkyMjExMjIwMlowazELMAkGA1UEBhMC +SVQxDjAMBgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlzIFMucC5BLi8wMzM1 +ODUyMDk2NzEnMCUGA1UEAwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290IENB +MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAp8bEpSmkLO/lGMWwUKNv +UTufClrJwkg4CsIcoBh/kbWHuUA/3R1oHwiD1S0eiKD4j1aPbZkCkpAW1V8IbInX +4ay8IMKx4INRimlNAJZaby/ARH6jDuSRzVju3PvHHkVH3Se5CAGfpiEd9UEtL0z9 +KK3giq0itFZljoZUj5NDKd45RnijMCO6zfB9E1fAXdKDa0hMxKufgFpbOr3JpyI/ +gCczWw63igxdBzcIy2zSekciRDXFzMwujt0q7bd9Zg1fYVEiVRvjRuPjPdA1Yprb +rxTIW6HMiRvhMCb8oJsfgadHHwTrozmSBp+Z07/T6k9QnBn+locePGX2oxgkg4YQ +51Q+qDp2JE+BIcXjDwL4k5RHILv+1A7TaLndxHqEguNTVHnd25zS8gebLra8Pu2F +be8lEfKXGkJh90qX6IuxEAf6ZYGyojnP9zz/GPvG8VqLWeICrHuS0E4UT1lF9gxe +KF+w6D9Fz8+vm2/7hNN3WpVvrJSEnu68wEqPSpP4RCHiMUVhUE4Q2OM1fEwZtN4F +v6MGn8i1zeQf1xcGDXqVdFUNaBr8EBtiZJ1t4JWgw5QHVw0U5r0F+7if5t+L4sbn +fpb2U8WANFAoWPASUHEXMLrmeGO89LKtmyuy/uE5jF66CyCU3nuDuP/jVo23Eek7 +jPKxwV2dpAtMK9myGPW1n0sCAwEAAaNjMGEwHQYDVR0OBBYEFFLYiDrIn3hm7Ynz +ezhwlMkCAjbQMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUUtiIOsifeGbt +ifN7OHCUyQICNtAwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBCwUAA4ICAQAL +e3KHwGCmSUyIWOYdiPcUZEim2FgKDk8TNd81HdTtBjHIgT5q1d07GjLukD0R0i70 +jsNjLiNmsGe+b7bAEzlgqqI0JZN1Ut6nna0Oh4lScWoWPBkdg/iaKWW+9D+a2fDz +WochcYBNy+A4mz+7+uAwTc+G02UQGRjRlwKxK3JCaKygvU5a2hi/a5iB0P2avl4V +SM0RFbnAKVy06Ij3Pjaut2L9HmLecHgQHEhb2rykOLpn7VU+Xlff1ANATIGk0k9j +pwlCCRT8AKnCgHNPLsBA2RF7SOp6AsDT6ygBJlh0wcBzIm2Tlf05fbsq4/aC4yyX +X04fkZT6/iyj2HYauE2yOE+b+h1IYHkm4vP9qdCa6HCPSXrW5b0KDtst842/6+Ok +fcvHlXHo2qN8xcL4dJIEG4aspCJTQLas/kx2z/uUMsA1n3Y/buWQbqCmJqK4LL7R +K4X9p2jIugErsWx0Hbhzlefut8cl8ABMALJ+tguLHPPAUJ4lueAI3jZm/zel0btU +ZCzJJ7VLkn5l/9Mt4blOvH+kQSGQQXemOR/qnuOf0GZvBeyqdn6/axag67XH/JJU +LysRJyU3eExRarDzzFhdFPFqSBX/wge2sY0PjlxQRrM9vwGYT7JZVEc+NHt4bVaT +LnPqZih4zR0Uv6CPLy64Lo7yFIrM6bV8+2ydDKXhlg== +-----END CERTIFICATE----- + +# Issuer: CN=Buypass Class 2 Root CA O=Buypass AS-983163327 +# Subject: CN=Buypass Class 2 Root CA O=Buypass AS-983163327 +# Label: "Buypass Class 2 Root CA" +# Serial: 2 +# MD5 Fingerprint: 46:a7:d2:fe:45:fb:64:5a:a8:59:90:9b:78:44:9b:29 +# SHA1 Fingerprint: 49:0a:75:74:de:87:0a:47:fe:58:ee:f6:c7:6b:eb:c6:0b:12:40:99 +# SHA256 Fingerprint: 9a:11:40:25:19:7c:5b:b9:5d:94:e6:3d:55:cd:43:79:08:47:b6:46:b2:3c:df:11:ad:a4:a0:0e:ff:15:fb:48 +-----BEGIN CERTIFICATE----- +MIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEd +MBsGA1UECgwUQnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3Mg +Q2xhc3MgMiBSb290IENBMB4XDTEwMTAyNjA4MzgwM1oXDTQwMTAyNjA4MzgwM1ow +TjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBhc3MgQVMtOTgzMTYzMzI3MSAw +HgYDVQQDDBdCdXlwYXNzIENsYXNzIDIgUm9vdCBDQTCCAiIwDQYJKoZIhvcNAQEB +BQADggIPADCCAgoCggIBANfHXvfBB9R3+0Mh9PT1aeTuMgHbo4Yf5FkNuud1g1Lr +6hxhFUi7HQfKjK6w3Jad6sNgkoaCKHOcVgb/S2TwDCo3SbXlzwx87vFKu3MwZfPV +L4O2fuPn9Z6rYPnT8Z2SdIrkHJasW4DptfQxh6NR/Md+oW+OU3fUl8FVM5I+GC91 +1K2GScuVr1QGbNgGE41b/+EmGVnAJLqBcXmQRFBoJJRfuLMR8SlBYaNByyM21cHx +MlAQTn/0hpPshNOOvEu/XAFOBz3cFIqUCqTqc/sLUegTBxj6DvEr0VQVfTzh97QZ +QmdiXnfgolXsttlpF9U6r0TtSsWe5HonfOV116rLJeffawrbD02TTqigzXsu8lkB +arcNuAeBfos4GzjmCleZPe4h6KP1DBbdi+w0jpwqHAAVF41og9JwnxgIzRFo1clr +Us3ERo/ctfPYV3Me6ZQ5BL/T3jjetFPsaRyifsSP5BtwrfKi+fv3FmRmaZ9JUaLi +FRhnBkp/1Wy1TbMz4GHrXb7pmA8y1x1LPC5aAVKRCfLf6o3YBkBjqhHk/sM3nhRS +P/TizPJhk9H9Z2vXUq6/aKtAQ6BXNVN48FP4YUIHZMbXb5tMOA1jrGKvNouicwoN +9SG9dKpN6nIDSdvHXx1iY8f93ZHsM+71bbRuMGjeyNYmsHVee7QHIJihdjK4TWxP +AgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFMmAd+BikoL1Rpzz +uvdMw964o605MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAU18h +9bqwOlI5LJKwbADJ784g7wbylp7ppHR/ehb8t/W2+xUbP6umwHJdELFx7rxP462s +A20ucS6vxOOto70MEae0/0qyexAQH6dXQbLArvQsWdZHEIjzIVEpMMpghq9Gqx3t +OluwlN5E40EIosHsHdb9T7bWR9AUC8rmyrV7d35BH16Dx7aMOZawP5aBQW9gkOLo ++fsicdl9sz1Gv7SEr5AcD48Saq/v7h56rgJKihcrdv6sVIkkLE8/trKnToyokZf7 +KcZ7XC25y2a2t6hbElGFtQl+Ynhw/qlqYLYdDnkM/crqJIByw5c/8nerQyIKx+u2 +DISCLIBrQYoIwOula9+ZEsuK1V6ADJHgJgg2SMX6OBE1/yWDLfJ6v9r9jv6ly0Us +H8SIU653DtmadsWOLB2jutXsMq7Aqqz30XpN69QH4kj3Io6wpJ9qzo6ysmD0oyLQ +I+uUWnpp3Q+/QFesa1lQ2aOZ4W7+jQF5JyMV3pKdewlNWudLSDBaGOYKbeaP4NK7 +5t98biGCwWg5TbSYWGZizEqQXsP6JwSxeRV0mcy+rSDeJmAc61ZRpqPq5KM/p/9h +3PFaTWwyI0PurKju7koSCTxdccK+efrCh2gdC/1cacwG0Jp9VJkqyTkaGa9LKkPz +Y11aWOIv4x3kqdbQCtCev9eBCfHJxyYNrJgWVqA= +-----END CERTIFICATE----- + +# Issuer: CN=Buypass Class 3 Root CA O=Buypass AS-983163327 +# Subject: CN=Buypass Class 3 Root CA O=Buypass AS-983163327 +# Label: "Buypass Class 3 Root CA" +# Serial: 2 +# MD5 Fingerprint: 3d:3b:18:9e:2c:64:5a:e8:d5:88:ce:0e:f9:37:c2:ec +# SHA1 Fingerprint: da:fa:f7:fa:66:84:ec:06:8f:14:50:bd:c7:c2:81:a5:bc:a9:64:57 +# SHA256 Fingerprint: ed:f7:eb:bc:a2:7a:2a:38:4d:38:7b:7d:40:10:c6:66:e2:ed:b4:84:3e:4c:29:b4:ae:1d:5b:93:32:e6:b2:4d +-----BEGIN CERTIFICATE----- +MIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEd +MBsGA1UECgwUQnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3Mg +Q2xhc3MgMyBSb290IENBMB4XDTEwMTAyNjA4Mjg1OFoXDTQwMTAyNjA4Mjg1OFow +TjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBhc3MgQVMtOTgzMTYzMzI3MSAw +HgYDVQQDDBdCdXlwYXNzIENsYXNzIDMgUm9vdCBDQTCCAiIwDQYJKoZIhvcNAQEB +BQADggIPADCCAgoCggIBAKXaCpUWUOOV8l6ddjEGMnqb8RB2uACatVI2zSRHsJ8Y +ZLya9vrVediQYkwiL944PdbgqOkcLNt4EemOaFEVcsfzM4fkoF0LXOBXByow9c3E +N3coTRiR5r/VUv1xLXA+58bEiuPwKAv0dpihi4dVsjoT/Lc+JzeOIuOoTyrvYLs9 +tznDDgFHmV0ST9tD+leh7fmdvhFHJlsTmKtdFoqwNxxXnUX/iJY2v7vKB3tvh2PX +0DJq1l1sDPGzbjniazEuOQAnFN44wOwZZoYS6J1yFhNkUsepNxz9gjDthBgd9K5c +/3ATAOux9TN6S9ZV+AWNS2mw9bMoNlwUxFFzTWsL8TQH2xc519woe2v1n/MuwU8X +KhDzzMro6/1rqy6any2CbgTUUgGTLT2G/H783+9CHaZr77kgxve9oKeV/afmiSTY +zIw0bOIjL9kSGiG5VZFvC5F5GQytQIgLcOJ60g7YaEi7ghM5EFjp2CoHxhLbWNvS +O1UQRwUVZ2J+GGOmRj8JDlQyXr8NYnon74Do29lLBlo3WiXQCBJ31G8JUJc9yB3D +34xFMFbG02SrZvPAXpacw8Tvw3xrizp5f7NJzz3iiZ+gMEuFuZyUJHmPfWupRWgP +K9Dx2hzLabjKSWJtyNBjYt1gD1iqj6G8BaVmos8bdrKEZLFMOVLAMLrwjEsCsLa3 +AgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFEe4zf/lb+74suwv +Tg75JbCOPGvDMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAACAj +QTUEkMJAYmDv4jVM1z+s4jSQuKFvdvoWFqRINyzpkMLyPPgKn9iB5btb2iUspKdV +cSQy9sgL8rxq+JOssgfCX5/bzMiKqr5qb+FJEMwx14C7u8jYog5kV+qi9cKpMRXS +IGrs/CIBKM+GuIAeqcwRpTzyFrNHnfzSgCHEy9BHcEGhyoMZCCxt8l13nIoUE9Q2 +HJLw5QY33KbmkJs4j1xrG0aGQ0JfPgEHU1RdZX33inOhmlRaHylDFCfChQ+1iHsa +O5S3HWCntZznKWlXWpuTekMwGwPXYshApqr8ZORK15FTAaggiG6cX0S5y2CBNOxv +033aSF/rtJC8LakcC6wc1aJoIIAE1vyxjy+7SjENSoYc6+I2KSb12tjE8nVhz36u +dmNKekBlk4f4HoCMhuWG1o8O/FMsYOgWYRqiPkN7zTlgVGr18okmAWiDSKIz6MkE +kbIRNBE+6tBDGR8Dk5AM/1E9V/RBbuHLoL7ryWPNbczk+DaqaJ3tvV2XcEQNtg41 +3OEMXbugUZTLfhbrES+jkkXITHHZvMmZUldGL1DPvTVp9D0VzgalLA8+9oG6lLvD +u79leNKGef9JOxqDDPDeeOzI8k1MGt6CKfjBWtrt7uYnXuhF0J0cUahoq0Tj0Itq +4/g7u9xN12TyUb7mqqta6THuBrxzvxNiCp/HuZc= +-----END CERTIFICATE----- + +# Issuer: CN=T-TeleSec GlobalRoot Class 3 O=T-Systems Enterprise Services GmbH OU=T-Systems Trust Center +# Subject: CN=T-TeleSec GlobalRoot Class 3 O=T-Systems Enterprise Services GmbH OU=T-Systems Trust Center +# Label: "T-TeleSec GlobalRoot Class 3" +# Serial: 1 +# MD5 Fingerprint: ca:fb:40:a8:4e:39:92:8a:1d:fe:8e:2f:c4:27:ea:ef +# SHA1 Fingerprint: 55:a6:72:3e:cb:f2:ec:cd:c3:23:74:70:19:9d:2a:be:11:e3:81:d1 +# SHA256 Fingerprint: fd:73:da:d3:1c:64:4f:f1:b4:3b:ef:0c:cd:da:96:71:0b:9c:d9:87:5e:ca:7e:31:70:7a:f3:e9:6d:52:2b:bd +-----BEGIN CERTIFICATE----- +MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUx +KzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAd +BgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNl +YyBHbG9iYWxSb290IENsYXNzIDMwHhcNMDgxMDAxMTAyOTU2WhcNMzMxMDAxMjM1 +OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnBy +aXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50 +ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwggEiMA0G +CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC9dZPwYiJvJK7genasfb3ZJNW4t/zN +8ELg63iIVl6bmlQdTQyK9tPPcPRStdiTBONGhnFBSivwKixVA9ZIw+A5OO3yXDw/ +RLyTPWGrTs0NvvAgJ1gORH8EGoel15YUNpDQSXuhdfsaa3Ox+M6pCSzyU9XDFES4 +hqX2iys52qMzVNn6chr3IhUciJFrf2blw2qAsCTz34ZFiP0Zf3WHHx+xGwpzJFu5 +ZeAsVMhg02YXP+HMVDNzkQI6pn97djmiH5a2OK61yJN0HZ65tOVgnS9W0eDrXltM +EnAMbEQgqxHY9Bn20pxSN+f6tsIxO0rUFJmtxxr1XV/6B7h8DR/Wgx6zAgMBAAGj +QjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS1 +A/d2O2GCahKqGFPrAyGUv/7OyjANBgkqhkiG9w0BAQsFAAOCAQEAVj3vlNW92nOy +WL6ukK2YJ5f+AbGwUgC4TeQbIXQbfsDuXmkqJa9c1h3a0nnJ85cp4IaH3gRZD/FZ +1GSFS5mvJQQeyUapl96Cshtwn5z2r3Ex3XsFpSzTucpH9sry9uetuUg/vBa3wW30 +6gmv7PO15wWeph6KU1HWk4HMdJP2udqmJQV0eVp+QD6CSyYRMG7hP0HHRwA11fXT +91Q+gT3aSWqas+8QPebrb9HIIkfLzM8BMZLZGOMivgkeGj5asuRrDFR6fUNOuIml +e9eiPZaGzPImNC1qkp2aGtAw4l1OBLBfiyB+d8E9lYLRRpo7PHi4b6HQDWSieB4p +TpPDpFQUWw== +-----END CERTIFICATE----- + +# Issuer: CN=D-TRUST Root Class 3 CA 2 2009 O=D-Trust GmbH +# Subject: CN=D-TRUST Root Class 3 CA 2 2009 O=D-Trust GmbH +# Label: "D-TRUST Root Class 3 CA 2 2009" +# Serial: 623603 +# MD5 Fingerprint: cd:e0:25:69:8d:47:ac:9c:89:35:90:f7:fd:51:3d:2f +# SHA1 Fingerprint: 58:e8:ab:b0:36:15:33:fb:80:f7:9b:1b:6d:29:d3:ff:8d:5f:00:f0 +# SHA256 Fingerprint: 49:e7:a4:42:ac:f0:ea:62:87:05:00:54:b5:25:64:b6:50:e4:f4:9e:42:e3:48:d6:aa:38:e0:39:e9:57:b1:c1 +-----BEGIN CERTIFICATE----- +MIIEMzCCAxugAwIBAgIDCYPzMA0GCSqGSIb3DQEBCwUAME0xCzAJBgNVBAYTAkRF +MRUwEwYDVQQKDAxELVRydXN0IEdtYkgxJzAlBgNVBAMMHkQtVFJVU1QgUm9vdCBD +bGFzcyAzIENBIDIgMjAwOTAeFw0wOTExMDUwODM1NThaFw0yOTExMDUwODM1NTha +ME0xCzAJBgNVBAYTAkRFMRUwEwYDVQQKDAxELVRydXN0IEdtYkgxJzAlBgNVBAMM +HkQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgMjAwOTCCASIwDQYJKoZIhvcNAQEB +BQADggEPADCCAQoCggEBANOySs96R+91myP6Oi/WUEWJNTrGa9v+2wBoqOADER03 +UAifTUpolDWzU9GUY6cgVq/eUXjsKj3zSEhQPgrfRlWLJ23DEE0NkVJD2IfgXU42 +tSHKXzlABF9bfsyjxiupQB7ZNoTWSPOSHjRGICTBpFGOShrvUD9pXRl/RcPHAY9R +ySPocq60vFYJfxLLHLGvKZAKyVXMD9O0Gu1HNVpK7ZxzBCHQqr0ME7UAyiZsxGsM +lFqVlNpQmvH/pStmMaTJOKDfHR+4CS7zp+hnUquVH+BGPtikw8paxTGA6Eian5Rp +/hnd2HN8gcqW3o7tszIFZYQ05ub9VxC1X3a/L7AQDcUCAwEAAaOCARowggEWMA8G +A1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFP3aFMSfMN4hvR5COfyrYyNJ4PGEMA4G +A1UdDwEB/wQEAwIBBjCB0wYDVR0fBIHLMIHIMIGAoH6gfIZ6bGRhcDovL2RpcmVj +dG9yeS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwUm9vdCUyMENsYXNzJTIwMyUy +MENBJTIwMiUyMDIwMDksTz1ELVRydXN0JTIwR21iSCxDPURFP2NlcnRpZmljYXRl +cmV2b2NhdGlvbmxpc3QwQ6BBoD+GPWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvY3Js +L2QtdHJ1c3Rfcm9vdF9jbGFzc18zX2NhXzJfMjAwOS5jcmwwDQYJKoZIhvcNAQEL +BQADggEBAH+X2zDI36ScfSF6gHDOFBJpiBSVYEQBrLLpME+bUMJm2H6NMLVwMeni +acfzcNsgFYbQDfC+rAF1hM5+n02/t2A7nPPKHeJeaNijnZflQGDSNiH+0LS4F9p0 +o3/U37CYAqxva2ssJSRyoWXuJVrl5jLn8t+rSfrzkGkj2wTZ51xY/GXUl77M/C4K +zCUqNQT4YJEVdT1B/yMfGchs64JTBKbkTCJNjYy6zltz7GRUUG3RnFX7acM2w4y8 +PIWmawomDeCTmGCufsYkl4phX5GOZpIJhzbNi5stPvZR1FDUWSi9g/LMKHtThm3Y +Johw1+qRzT65ysCQblrGXnRl11z+o+I= +-----END CERTIFICATE----- + +# Issuer: CN=D-TRUST Root Class 3 CA 2 EV 2009 O=D-Trust GmbH +# Subject: CN=D-TRUST Root Class 3 CA 2 EV 2009 O=D-Trust GmbH +# Label: "D-TRUST Root Class 3 CA 2 EV 2009" +# Serial: 623604 +# MD5 Fingerprint: aa:c6:43:2c:5e:2d:cd:c4:34:c0:50:4f:11:02:4f:b6 +# SHA1 Fingerprint: 96:c9:1b:0b:95:b4:10:98:42:fa:d0:d8:22:79:fe:60:fa:b9:16:83 +# SHA256 Fingerprint: ee:c5:49:6b:98:8c:e9:86:25:b9:34:09:2e:ec:29:08:be:d0:b0:f3:16:c2:d4:73:0c:84:ea:f1:f3:d3:48:81 +-----BEGIN CERTIFICATE----- +MIIEQzCCAyugAwIBAgIDCYP0MA0GCSqGSIb3DQEBCwUAMFAxCzAJBgNVBAYTAkRF +MRUwEwYDVQQKDAxELVRydXN0IEdtYkgxKjAoBgNVBAMMIUQtVFJVU1QgUm9vdCBD +bGFzcyAzIENBIDIgRVYgMjAwOTAeFw0wOTExMDUwODUwNDZaFw0yOTExMDUwODUw +NDZaMFAxCzAJBgNVBAYTAkRFMRUwEwYDVQQKDAxELVRydXN0IEdtYkgxKjAoBgNV +BAMMIUQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgRVYgMjAwOTCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBAJnxhDRwui+3MKCOvXwEz75ivJn9gpfSegpn +ljgJ9hBOlSJzmY3aFS3nBfwZcyK3jpgAvDw9rKFs+9Z5JUut8Mxk2og+KbgPCdM0 +3TP1YtHhzRnp7hhPTFiu4h7WDFsVWtg6uMQYZB7jM7K1iXdODL/ZlGsTl28So/6Z +qQTMFexgaDbtCHu39b+T7WYxg4zGcTSHThfqr4uRjRxWQa4iN1438h3Z0S0NL2lR +p75mpoo6Kr3HGrHhFPC+Oh25z1uxav60sUYgovseO3Dvk5h9jHOW8sXvhXCtKSb8 +HgQ+HKDYD8tSg2J87otTlZCpV6LqYQXY+U3EJ/pure3511H3a6UCAwEAAaOCASQw +ggEgMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNOUikxiEyoZLsyvcop9Ntea +HNxnMA4GA1UdDwEB/wQEAwIBBjCB3QYDVR0fBIHVMIHSMIGHoIGEoIGBhn9sZGFw +Oi8vZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBSb290JTIwQ2xh +c3MlMjAzJTIwQ0ElMjAyJTIwRVYlMjAyMDA5LE89RC1UcnVzdCUyMEdtYkgsQz1E +RT9jZXJ0aWZpY2F0ZXJldm9jYXRpb25saXN0MEagRKBChkBodHRwOi8vd3d3LmQt +dHJ1c3QubmV0L2NybC9kLXRydXN0X3Jvb3RfY2xhc3NfM19jYV8yX2V2XzIwMDku +Y3JsMA0GCSqGSIb3DQEBCwUAA4IBAQA07XtaPKSUiO8aEXUHL7P+PPoeUSbrh/Yp +3uDx1MYkCenBz1UbtDDZzhr+BlGmFaQt77JLvyAoJUnRpjZ3NOhk31KxEcdzes05 +nsKtjHEh8lprr988TlWvsoRlFIm5d8sqMb7Po23Pb0iUMkZv53GMoKaEGTcH8gNF +CSuGdXzfX2lXANtu2KZyIktQ1HWYVt+3GP9DQ1CuekR78HlR10M9p9OB0/DJT7na +xpeG0ILD5EJt/rDiZE4OJudANCa1CInXCGNjOCd1HjPqbqjdn5lPdE2BiYBL3ZqX +KVwvvoFBuYz/6n1gBp7N1z3TLqMVvKjmJuVvw9y4AyHqnxbxLFS1 +-----END CERTIFICATE----- + +# Issuer: CN=CA Disig Root R2 O=Disig a.s. +# Subject: CN=CA Disig Root R2 O=Disig a.s. +# Label: "CA Disig Root R2" +# Serial: 10572350602393338211 +# MD5 Fingerprint: 26:01:fb:d8:27:a7:17:9a:45:54:38:1a:43:01:3b:03 +# SHA1 Fingerprint: b5:61:eb:ea:a4:de:e4:25:4b:69:1a:98:a5:57:47:c2:34:c7:d9:71 +# SHA256 Fingerprint: e2:3d:4a:03:6d:7b:70:e9:f5:95:b1:42:20:79:d2:b9:1e:df:bb:1f:b6:51:a0:63:3e:aa:8a:9d:c5:f8:07:03 +-----BEGIN CERTIFICATE----- +MIIFaTCCA1GgAwIBAgIJAJK4iNuwisFjMA0GCSqGSIb3DQEBCwUAMFIxCzAJBgNV +BAYTAlNLMRMwEQYDVQQHEwpCcmF0aXNsYXZhMRMwEQYDVQQKEwpEaXNpZyBhLnMu +MRkwFwYDVQQDExBDQSBEaXNpZyBSb290IFIyMB4XDTEyMDcxOTA5MTUzMFoXDTQy +MDcxOTA5MTUzMFowUjELMAkGA1UEBhMCU0sxEzARBgNVBAcTCkJyYXRpc2xhdmEx +EzARBgNVBAoTCkRpc2lnIGEucy4xGTAXBgNVBAMTEENBIERpc2lnIFJvb3QgUjIw +ggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCio8QACdaFXS1tFPbCw3Oe +NcJxVX6B+6tGUODBfEl45qt5WDza/3wcn9iXAng+a0EE6UG9vgMsRfYvZNSrXaNH +PWSb6WiaxswbP7q+sos0Ai6YVRn8jG+qX9pMzk0DIaPY0jSTVpbLTAwAFjxfGs3I +x2ymrdMxp7zo5eFm1tL7A7RBZckQrg4FY8aAamkw/dLukO8NJ9+flXP04SXabBbe +QTg06ov80egEFGEtQX6sx3dOy1FU+16SGBsEWmjGycT6txOgmLcRK7fWV8x8nhfR +yyX+hk4kLlYMeE2eARKmK6cBZW58Yh2EhN/qwGu1pSqVg8NTEQxzHQuyRpDRQjrO +QG6Vrf/GlK1ul4SOfW+eioANSW1z4nuSHsPzwfPrLgVv2RvPN3YEyLRa5Beny912 +H9AZdugsBbPWnDTYltxhh5EF5EQIM8HauQhl1K6yNg3ruji6DOWbnuuNZt2Zz9aJ +QfYEkoopKW1rOhzndX0CcQ7zwOe9yxndnWCywmZgtrEE7snmhrmaZkCo5xHtgUUD +i/ZnWejBBhG93c+AAk9lQHhcR1DIm+YfgXvkRKhbhZri3lrVx/k6RGZL5DJUfORs +nLMOPReisjQS1n6yqEm70XooQL6iFh/f5DcfEXP7kAplQ6INfPgGAVUzfbANuPT1 +rqVCV3w2EYx7XsQDnYx5nQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1Ud +DwEB/wQEAwIBBjAdBgNVHQ4EFgQUtZn4r7CU9eMg1gqtzk5WpC5uQu0wDQYJKoZI +hvcNAQELBQADggIBACYGXnDnZTPIgm7ZnBc6G3pmsgH2eDtpXi/q/075KMOYKmFM +tCQSin1tERT3nLXK5ryeJ45MGcipvXrA1zYObYVybqjGom32+nNjf7xueQgcnYqf +GopTpti72TVVsRHFqQOzVju5hJMiXn7B9hJSi+osZ7z+Nkz1uM/Rs0mSO9MpDpkb +lvdhuDvEK7Z4bLQjb/D907JedR+Zlais9trhxTF7+9FGs9K8Z7RiVLoJ92Owk6Ka ++elSLotgEqv89WBW7xBci8QaQtyDW2QOy7W81k/BfDxujRNt+3vrMNDcTa/F1bal +TFtxyegxvug4BkihGuLq0t4SOVga/4AOgnXmt8kHbA7v/zjxmHHEt38OFdAlab0i +nSvtBfZGR6ztwPDUO+Ls7pZbkBNOHlY667DvlruWIxG68kOGdGSVyCh13x01utI3 +gzhTODY7z2zp+WsO0PsE6E9312UBeIYMej4hYvF/Y3EMyZ9E26gnonW+boE+18Dr +G5gPcFw0sorMwIUY6256s/daoQe/qUKS82Ail+QUoQebTnbAjn39pCXHR+3/H3Os +zMOl6W8KjptlwlCFtaOgUxLMVYdh84GuEEZhvUQhuMI9dM9+JDX6HAcOmz0iyu8x +L4ysEr3vQCj8KWefshNPZiTEUxnpHikV7+ZtsH8tZ/3zbBt1RqPlShfppNcL +-----END CERTIFICATE----- + +# Issuer: CN=ACCVRAIZ1 O=ACCV OU=PKIACCV +# Subject: CN=ACCVRAIZ1 O=ACCV OU=PKIACCV +# Label: "ACCVRAIZ1" +# Serial: 6828503384748696800 +# MD5 Fingerprint: d0:a0:5a:ee:05:b6:09:94:21:a1:7d:f1:b2:29:82:02 +# SHA1 Fingerprint: 93:05:7a:88:15:c6:4f:ce:88:2f:fa:91:16:52:28:78:bc:53:64:17 +# SHA256 Fingerprint: 9a:6e:c0:12:e1:a7:da:9d:be:34:19:4d:47:8a:d7:c0:db:18:22:fb:07:1d:f1:29:81:49:6e:d1:04:38:41:13 +-----BEGIN CERTIFICATE----- +MIIH0zCCBbugAwIBAgIIXsO3pkN/pOAwDQYJKoZIhvcNAQEFBQAwQjESMBAGA1UE +AwwJQUNDVlJBSVoxMRAwDgYDVQQLDAdQS0lBQ0NWMQ0wCwYDVQQKDARBQ0NWMQsw +CQYDVQQGEwJFUzAeFw0xMTA1MDUwOTM3MzdaFw0zMDEyMzEwOTM3MzdaMEIxEjAQ +BgNVBAMMCUFDQ1ZSQUlaMTEQMA4GA1UECwwHUEtJQUNDVjENMAsGA1UECgwEQUND +VjELMAkGA1UEBhMCRVMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCb +qau/YUqXry+XZpp0X9DZlv3P4uRm7x8fRzPCRKPfmt4ftVTdFXxpNRFvu8gMjmoY +HtiP2Ra8EEg2XPBjs5BaXCQ316PWywlxufEBcoSwfdtNgM3802/J+Nq2DoLSRYWo +G2ioPej0RGy9ocLLA76MPhMAhN9KSMDjIgro6TenGEyxCQ0jVn8ETdkXhBilyNpA +lHPrzg5XPAOBOp0KoVdDaaxXbXmQeOW1tDvYvEyNKKGno6e6Ak4l0Squ7a4DIrhr +IA8wKFSVf+DuzgpmndFALW4ir50awQUZ0m/A8p/4e7MCQvtQqR0tkw8jq8bBD5L/ +0KIV9VMJcRz/RROE5iZe+OCIHAr8Fraocwa48GOEAqDGWuzndN9wrqODJerWx5eH +k6fGioozl2A3ED6XPm4pFdahD9GILBKfb6qkxkLrQaLjlUPTAYVtjrs78yM2x/47 +4KElB0iryYl0/wiPgL/AlmXz7uxLaL2diMMxs0Dx6M/2OLuc5NF/1OVYm3z61PMO +m3WR5LpSLhl+0fXNWhn8ugb2+1KoS5kE3fj5tItQo05iifCHJPqDQsGH+tUtKSpa +cXpkatcnYGMN285J9Y0fkIkyF/hzQ7jSWpOGYdbhdQrqeWZ2iE9x6wQl1gpaepPl +uUsXQA+xtrn13k/c4LOsOxFwYIRKQ26ZIMApcQrAZQIDAQABo4ICyzCCAscwfQYI +KwYBBQUHAQEEcTBvMEwGCCsGAQUFBzAChkBodHRwOi8vd3d3LmFjY3YuZXMvZmls +ZWFkbWluL0FyY2hpdm9zL2NlcnRpZmljYWRvcy9yYWl6YWNjdjEuY3J0MB8GCCsG +AQUFBzABhhNodHRwOi8vb2NzcC5hY2N2LmVzMB0GA1UdDgQWBBTSh7Tj3zcnk1X2 +VuqB5TbMjB4/vTAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFNKHtOPfNyeT +VfZW6oHlNsyMHj+9MIIBcwYDVR0gBIIBajCCAWYwggFiBgRVHSAAMIIBWDCCASIG +CCsGAQUFBwICMIIBFB6CARAAQQB1AHQAbwByAGkAZABhAGQAIABkAGUAIABDAGUA +cgB0AGkAZgBpAGMAYQBjAGkA8wBuACAAUgBhAO0AegAgAGQAZQAgAGwAYQAgAEEA +QwBDAFYAIAAoAEEAZwBlAG4AYwBpAGEAIABkAGUAIABUAGUAYwBuAG8AbABvAGcA +7QBhACAAeQAgAEMAZQByAHQAaQBmAGkAYwBhAGMAaQDzAG4AIABFAGwAZQBjAHQA +cgDzAG4AaQBjAGEALAAgAEMASQBGACAAUQA0ADYAMAAxADEANQA2AEUAKQAuACAA +QwBQAFMAIABlAG4AIABoAHQAdABwADoALwAvAHcAdwB3AC4AYQBjAGMAdgAuAGUA +czAwBggrBgEFBQcCARYkaHR0cDovL3d3dy5hY2N2LmVzL2xlZ2lzbGFjaW9uX2Mu +aHRtMFUGA1UdHwROMEwwSqBIoEaGRGh0dHA6Ly93d3cuYWNjdi5lcy9maWxlYWRt +aW4vQXJjaGl2b3MvY2VydGlmaWNhZG9zL3JhaXphY2N2MV9kZXIuY3JsMA4GA1Ud +DwEB/wQEAwIBBjAXBgNVHREEEDAOgQxhY2N2QGFjY3YuZXMwDQYJKoZIhvcNAQEF +BQADggIBAJcxAp/n/UNnSEQU5CmH7UwoZtCPNdpNYbdKl02125DgBS4OxnnQ8pdp +D70ER9m+27Up2pvZrqmZ1dM8MJP1jaGo/AaNRPTKFpV8M9xii6g3+CfYCS0b78gU +JyCpZET/LtZ1qmxNYEAZSUNUY9rizLpm5U9EelvZaoErQNV/+QEnWCzI7UiRfD+m +AM/EKXMRNt6GGT6d7hmKG9Ww7Y49nCrADdg9ZuM8Db3VlFzi4qc1GwQA9j9ajepD +vV+JHanBsMyZ4k0ACtrJJ1vnE5Bc5PUzolVt3OAJTS+xJlsndQAJxGJ3KQhfnlms +tn6tn1QwIgPBHnFk/vk4CpYY3QIUrCPLBhwepH2NDd4nQeit2hW3sCPdK6jT2iWH +7ehVRE2I9DZ+hJp4rPcOVkkO1jMl1oRQQmwgEh0q1b688nCBpHBgvgW1m54ERL5h +I6zppSSMEYCUWqKiuUnSwdzRp+0xESyeGabu4VXhwOrPDYTkF7eifKXeVSUG7szA +h1xA2syVP1XgNce4hL60Xc16gwFy7ofmXx2utYXGJt/mwZrpHgJHnyqobalbz+xF +d3+YJ5oyXSrjhO7FmGYvliAd3djDJ9ew+f7Zfc3Qn48LFFhRny+Lwzgt3uiP1o2H +pPVWQxaZLPSkVrQ0uGE3ycJYgBugl6H8WY3pEfbRD0tVNEYqi4Y7 +-----END CERTIFICATE----- + +# Issuer: CN=TWCA Global Root CA O=TAIWAN-CA OU=Root CA +# Subject: CN=TWCA Global Root CA O=TAIWAN-CA OU=Root CA +# Label: "TWCA Global Root CA" +# Serial: 3262 +# MD5 Fingerprint: f9:03:7e:cf:e6:9e:3c:73:7a:2a:90:07:69:ff:2b:96 +# SHA1 Fingerprint: 9c:bb:48:53:f6:a4:f6:d3:52:a4:e8:32:52:55:60:13:f5:ad:af:65 +# SHA256 Fingerprint: 59:76:90:07:f7:68:5d:0f:cd:50:87:2f:9f:95:d5:75:5a:5b:2b:45:7d:81:f3:69:2b:61:0a:98:67:2f:0e:1b +-----BEGIN CERTIFICATE----- +MIIFQTCCAymgAwIBAgICDL4wDQYJKoZIhvcNAQELBQAwUTELMAkGA1UEBhMCVFcx +EjAQBgNVBAoTCVRBSVdBTi1DQTEQMA4GA1UECxMHUm9vdCBDQTEcMBoGA1UEAxMT +VFdDQSBHbG9iYWwgUm9vdCBDQTAeFw0xMjA2MjcwNjI4MzNaFw0zMDEyMzExNTU5 +NTlaMFExCzAJBgNVBAYTAlRXMRIwEAYDVQQKEwlUQUlXQU4tQ0ExEDAOBgNVBAsT +B1Jvb3QgQ0ExHDAaBgNVBAMTE1RXQ0EgR2xvYmFsIFJvb3QgQ0EwggIiMA0GCSqG +SIb3DQEBAQUAA4ICDwAwggIKAoICAQCwBdvI64zEbooh745NnHEKH1Jw7W2CnJfF +10xORUnLQEK1EjRsGcJ0pDFfhQKX7EMzClPSnIyOt7h52yvVavKOZsTuKwEHktSz +0ALfUPZVr2YOy+BHYC8rMjk1Ujoog/h7FsYYuGLWRyWRzvAZEk2tY/XTP3VfKfCh +MBwqoJimFb3u/Rk28OKRQ4/6ytYQJ0lM793B8YVwm8rqqFpD/G2Gb3PpN0Wp8DbH +zIh1HrtsBv+baz4X7GGqcXzGHaL3SekVtTzWoWH1EfcFbx39Eb7QMAfCKbAJTibc +46KokWofwpFFiFzlmLhxpRUZyXx1EcxwdE8tmx2RRP1WKKD+u4ZqyPpcC1jcxkt2 +yKsi2XMPpfRaAok/T54igu6idFMqPVMnaR1sjjIsZAAmY2E2TqNGtz99sy2sbZCi +laLOz9qC5wc0GZbpuCGqKX6mOL6OKUohZnkfs8O1CWfe1tQHRvMq2uYiN2DLgbYP +oA/pyJV/v1WRBXrPPRXAb94JlAGD1zQbzECl8LibZ9WYkTunhHiVJqRaCPgrdLQA +BDzfuBSO6N+pjWxnkjMdwLfS7JLIvgm/LCkFbwJrnu+8vyq8W8BQj0FwcYeyTbcE +qYSjMq+u7msXi7Kx/mzhkIyIqJdIzshNy/MGz19qCkKxHh53L46g5pIOBvwFItIm +4TFRfTLcDwIDAQABoyMwITAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB +/zANBgkqhkiG9w0BAQsFAAOCAgEAXzSBdu+WHdXltdkCY4QWwa6gcFGn90xHNcgL +1yg9iXHZqjNB6hQbbCEAwGxCGX6faVsgQt+i0trEfJdLjbDorMjupWkEmQqSpqsn +LhpNgb+E1HAerUf+/UqdM+DyucRFCCEK2mlpc3INvjT+lIutwx4116KD7+U4x6WF +H6vPNOw/KP4M8VeGTslV9xzU2KV9Bnpv1d8Q34FOIWWxtuEXeZVFBs5fzNxGiWNo +RI2T9GRwoD2dKAXDOXC4Ynsg/eTb6QihuJ49CcdP+yz4k3ZB3lLg4VfSnQO8d57+ +nile98FRYB/e2guyLXW3Q0iT5/Z5xoRdgFlglPx4mI88k1HtQJAH32RjJMtOcQWh +15QaiDLxInQirqWm2BJpTGCjAu4r7NRjkgtevi92a6O2JryPA9gK8kxkRr05YuWW +6zRjESjMlfGt7+/cgFhI6Uu46mWs6fyAtbXIRfmswZ/ZuepiiI7E8UuDEq3mi4TW +nsLrgxifarsbJGAzcMzs9zLzXNl5fe+epP7JI8Mk7hWSsT2RTyaGvWZzJBPqpK5j +wa19hAM8EHiGG3njxPPyBJUgriOCxLM6AGK/5jYk4Ve6xx6QddVfP5VhK8E7zeWz +aGHQRiapIVJpLesux+t3zqY6tQMzT3bR51xUAV3LePTJDL/PEo4XLSNolOer/qmy +KwbQBM0= +-----END CERTIFICATE----- + +# Issuer: CN=TeliaSonera Root CA v1 O=TeliaSonera +# Subject: CN=TeliaSonera Root CA v1 O=TeliaSonera +# Label: "TeliaSonera Root CA v1" +# Serial: 199041966741090107964904287217786801558 +# MD5 Fingerprint: 37:41:49:1b:18:56:9a:26:f5:ad:c2:66:fb:40:a5:4c +# SHA1 Fingerprint: 43:13:bb:96:f1:d5:86:9b:c1:4e:6a:92:f6:cf:f6:34:69:87:82:37 +# SHA256 Fingerprint: dd:69:36:fe:21:f8:f0:77:c1:23:a1:a5:21:c1:22:24:f7:22:55:b7:3e:03:a7:26:06:93:e8:a2:4b:0f:a3:89 +-----BEGIN CERTIFICATE----- +MIIFODCCAyCgAwIBAgIRAJW+FqD3LkbxezmCcvqLzZYwDQYJKoZIhvcNAQEFBQAw +NzEUMBIGA1UECgwLVGVsaWFTb25lcmExHzAdBgNVBAMMFlRlbGlhU29uZXJhIFJv +b3QgQ0EgdjEwHhcNMDcxMDE4MTIwMDUwWhcNMzIxMDE4MTIwMDUwWjA3MRQwEgYD +VQQKDAtUZWxpYVNvbmVyYTEfMB0GA1UEAwwWVGVsaWFTb25lcmEgUm9vdCBDQSB2 +MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMK+6yfwIaPzaSZVfp3F +VRaRXP3vIb9TgHot0pGMYzHw7CTww6XScnwQbfQ3t+XmfHnqjLWCi65ItqwA3GV1 +7CpNX8GH9SBlK4GoRz6JI5UwFpB/6FcHSOcZrr9FZ7E3GwYq/t75rH2D+1665I+X +Z75Ljo1kB1c4VWk0Nj0TSO9P4tNmHqTPGrdeNjPUtAa9GAH9d4RQAEX1jF3oI7x+ +/jXh7VB7qTCNGdMJjmhnXb88lxhTuylixcpecsHHltTbLaC0H2kD7OriUPEMPPCs +81Mt8Bz17Ww5OXOAFshSsCPN4D7c3TxHoLs1iuKYaIu+5b9y7tL6pe0S7fyYGKkm +dtwoSxAgHNN/Fnct7W+A90m7UwW7XWjH1Mh1Fj+JWov3F0fUTPHSiXk+TT2YqGHe +Oh7S+F4D4MHJHIzTjU3TlTazN19jY5szFPAtJmtTfImMMsJu7D0hADnJoWjiUIMu +sDor8zagrC/kb2HCUQk5PotTubtn2txTuXZZNp1D5SDgPTJghSJRt8czu90VL6R4 +pgd7gUY2BIbdeTXHlSw7sKMXNeVzH7RcWe/a6hBle3rQf5+ztCo3O3CLm1u5K7fs +slESl1MpWtTwEhDcTwK7EpIvYtQ/aUN8Ddb8WHUBiJ1YFkveupD/RwGJBmr2X7KQ +arMCpgKIv7NHfirZ1fpoeDVNAgMBAAGjPzA9MA8GA1UdEwEB/wQFMAMBAf8wCwYD +VR0PBAQDAgEGMB0GA1UdDgQWBBTwj1k4ALP1j5qWDNXr+nuqF+gTEjANBgkqhkiG +9w0BAQUFAAOCAgEAvuRcYk4k9AwI//DTDGjkk0kiP0Qnb7tt3oNmzqjMDfz1mgbl +dxSR651Be5kqhOX//CHBXfDkH1e3damhXwIm/9fH907eT/j3HEbAek9ALCI18Bmx +0GtnLLCo4MBANzX2hFxc469CeP6nyQ1Q6g2EdvZR74NTxnr/DlZJLo961gzmJ1Tj +TQpgcmLNkQfWpb/ImWvtxBnmq0wROMVvMeJuScg/doAmAyYp4Db29iBT4xdwNBed +Y2gea+zDTYa4EzAvXUYNR0PVG6pZDrlcjQZIrXSHX8f8MVRBE+LHIQ6e4B4N4cB7 +Q4WQxYpYxmUKeFfyxiMPAdkgS94P+5KFdSpcc41teyWRyu5FrgZLAMzTsVlQ2jqI +OylDRl6XK1TOU2+NSueW+r9xDkKLfP0ooNBIytrEgUy7onOTJsjrDNYmiLbAJM+7 +vVvrdX3pCI6GMyx5dwlppYn8s3CQh3aP0yK7Qs69cwsgJirQmz1wHiRszYd2qReW +t88NkvuOGKmYSdGe/mBEciG5Ge3C9THxOUiIkCR1VBatzvT4aRRkOfujuLpwQMcn +HL/EVlP6Y2XQ8xwOFvVrhlhNGNTkDY6lnVuR3HYkUD/GKvvZt5y11ubQ2egZixVx +SK236thZiNSQvxaz2emsWWFUyBy6ysHK4bkgTI86k4mloMy/0/Z1pHWWbVY= +-----END CERTIFICATE----- + +# Issuer: CN=T-TeleSec GlobalRoot Class 2 O=T-Systems Enterprise Services GmbH OU=T-Systems Trust Center +# Subject: CN=T-TeleSec GlobalRoot Class 2 O=T-Systems Enterprise Services GmbH OU=T-Systems Trust Center +# Label: "T-TeleSec GlobalRoot Class 2" +# Serial: 1 +# MD5 Fingerprint: 2b:9b:9e:e4:7b:6c:1f:00:72:1a:cc:c1:77:79:df:6a +# SHA1 Fingerprint: 59:0d:2d:7d:88:4f:40:2e:61:7e:a5:62:32:17:65:cf:17:d8:94:e9 +# SHA256 Fingerprint: 91:e2:f5:78:8d:58:10:eb:a7:ba:58:73:7d:e1:54:8a:8e:ca:cd:01:45:98:bc:0b:14:3e:04:1b:17:05:25:52 +-----BEGIN CERTIFICATE----- +MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUx +KzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAd +BgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNl +YyBHbG9iYWxSb290IENsYXNzIDIwHhcNMDgxMDAxMTA0MDE0WhcNMzMxMDAxMjM1 +OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnBy +aXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50 +ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDIwggEiMA0G +CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCqX9obX+hzkeXaXPSi5kfl82hVYAUd +AqSzm1nzHoqvNK38DcLZSBnuaY/JIPwhqgcZ7bBcrGXHX+0CfHt8LRvWurmAwhiC +FoT6ZrAIxlQjgeTNuUk/9k9uN0goOA/FvudocP05l03Sx5iRUKrERLMjfTlH6VJi +1hKTXrcxlkIF+3anHqP1wvzpesVsqXFP6st4vGCvx9702cu+fjOlbpSD8DT6Iavq +jnKgP6TeMFvvhk1qlVtDRKgQFRzlAVfFmPHmBiiRqiDFt1MmUUOyCxGVWOHAD3bZ +wI18gfNycJ5v/hqO2V81xrJvNHy+SE/iWjnX2J14np+GPgNeGYtEotXHAgMBAAGj +QjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS/ +WSA2AHmgoCJrjNXyYdK4LMuCSjANBgkqhkiG9w0BAQsFAAOCAQEAMQOiYQsfdOhy +NsZt+U2e+iKo4YFWz827n+qrkRk4r6p8FU3ztqONpfSO9kSpp+ghla0+AGIWiPAC +uvxhI+YzmzB6azZie60EI4RYZeLbK4rnJVM3YlNfvNoBYimipidx5joifsFvHZVw +IEoHNN/q/xWA5brXethbdXwFeilHfkCoMRN3zUA7tFFHei4R40cR3p1m0IvVVGb6 +g1XqfMIpiRvpb7PO4gWEyS8+eIVibslfwXhjdFjASBgMmTnrpMwatXlajRWc2BQN +9noHV8cigwUtPJslJj0Ys6lDfMjIq2SPDqO/nBudMNva0Bkuqjzx+zOAduTNrRlP +BSeOE6Fuwg== +-----END CERTIFICATE----- + +# Issuer: CN=Atos TrustedRoot 2011 O=Atos +# Subject: CN=Atos TrustedRoot 2011 O=Atos +# Label: "Atos TrustedRoot 2011" +# Serial: 6643877497813316402 +# MD5 Fingerprint: ae:b9:c4:32:4b:ac:7f:5d:66:cc:77:94:bb:2a:77:56 +# SHA1 Fingerprint: 2b:b1:f5:3e:55:0c:1d:c5:f1:d4:e6:b7:6a:46:4b:55:06:02:ac:21 +# SHA256 Fingerprint: f3:56:be:a2:44:b7:a9:1e:b3:5d:53:ca:9a:d7:86:4a:ce:01:8e:2d:35:d5:f8:f9:6d:df:68:a6:f4:1a:a4:74 +-----BEGIN CERTIFICATE----- +MIIDdzCCAl+gAwIBAgIIXDPLYixfszIwDQYJKoZIhvcNAQELBQAwPDEeMBwGA1UE +AwwVQXRvcyBUcnVzdGVkUm9vdCAyMDExMQ0wCwYDVQQKDARBdG9zMQswCQYDVQQG +EwJERTAeFw0xMTA3MDcxNDU4MzBaFw0zMDEyMzEyMzU5NTlaMDwxHjAcBgNVBAMM +FUF0b3MgVHJ1c3RlZFJvb3QgMjAxMTENMAsGA1UECgwEQXRvczELMAkGA1UEBhMC +REUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCVhTuXbyo7LjvPpvMp +Nb7PGKw+qtn4TaA+Gke5vJrf8v7MPkfoepbCJI419KkM/IL9bcFyYie96mvr54rM +VD6QUM+A1JX76LWC1BTFtqlVJVfbsVD2sGBkWXppzwO3bw2+yj5vdHLqqjAqc2K+ +SZFhyBH+DgMq92og3AIVDV4VavzjgsG1xZ1kCWyjWZgHJ8cblithdHFsQ/H3NYkQ +4J7sVaE3IqKHBAUsR320HLliKWYoyrfhk/WklAOZuXCFteZI6o1Q/NnezG8HDt0L +cp2AMBYHlT8oDv3FdU9T1nSatCQujgKRz3bFmx5VdJx4IbHwLfELn8LVlhgf8FQi +eowHAgMBAAGjfTB7MB0GA1UdDgQWBBSnpQaxLKYJYO7Rl+lwrrw7GWzbITAPBgNV +HRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFKelBrEspglg7tGX6XCuvDsZbNshMBgG +A1UdIAQRMA8wDQYLKwYBBAGwLQMEAQEwDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3 +DQEBCwUAA4IBAQAmdzTblEiGKkGdLD4GkGDEjKwLVLgfuXvTBznk+j57sj1O7Z8j +vZfza1zv7v1Apt+hk6EKhqzvINB5Ab149xnYJDE0BAGmuhWawyfc2E8PzBhj/5kP +DpFrdRbhIfzYJsdHt6bPWHJxfrrhTZVHO8mvbaG0weyJ9rQPOLXiZNwlz6bb65pc +maHFCN795trV1lpFDMS3wrUU77QR/w4VtfX128a961qn8FYiqTxlVMYVqL2Gns2D +lmh6cYGJ4Qvh6hEbaAjMaZ7snkGeRDImeuKHCnE96+RapNLbxc3G3mB/ufNPRJLv +KrcYPqcZ2Qt9sTdBQrC6YB3y/gkRsPCHe6ed +-----END CERTIFICATE----- + +# Issuer: CN=QuoVadis Root CA 1 G3 O=QuoVadis Limited +# Subject: CN=QuoVadis Root CA 1 G3 O=QuoVadis Limited +# Label: "QuoVadis Root CA 1 G3" +# Serial: 687049649626669250736271037606554624078720034195 +# MD5 Fingerprint: a4:bc:5b:3f:fe:37:9a:fa:64:f0:e2:fa:05:3d:0b:ab +# SHA1 Fingerprint: 1b:8e:ea:57:96:29:1a:c9:39:ea:b8:0a:81:1a:73:73:c0:93:79:67 +# SHA256 Fingerprint: 8a:86:6f:d1:b2:76:b5:7e:57:8e:92:1c:65:82:8a:2b:ed:58:e9:f2:f2:88:05:41:34:b7:f1:f4:bf:c9:cc:74 +-----BEGIN CERTIFICATE----- +MIIFYDCCA0igAwIBAgIUeFhfLq0sGUvjNwc1NBMotZbUZZMwDQYJKoZIhvcNAQEL +BQAwSDELMAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAc +BgNVBAMTFVF1b1ZhZGlzIFJvb3QgQ0EgMSBHMzAeFw0xMjAxMTIxNzI3NDRaFw00 +MjAxMTIxNzI3NDRaMEgxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM +aW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDEgRzMwggIiMA0GCSqG +SIb3DQEBAQUAA4ICDwAwggIKAoICAQCgvlAQjunybEC0BJyFuTHK3C3kEakEPBtV +wedYMB0ktMPvhd6MLOHBPd+C5k+tR4ds7FtJwUrVu4/sh6x/gpqG7D0DmVIB0jWe +rNrwU8lmPNSsAgHaJNM7qAJGr6Qc4/hzWHa39g6QDbXwz8z6+cZM5cOGMAqNF341 +68Xfuw6cwI2H44g4hWf6Pser4BOcBRiYz5P1sZK0/CPTz9XEJ0ngnjybCKOLXSoh +4Pw5qlPafX7PGglTvF0FBM+hSo+LdoINofjSxxR3W5A2B4GbPgb6Ul5jxaYA/qXp +UhtStZI5cgMJYr2wYBZupt0lwgNm3fME0UDiTouG9G/lg6AnhF4EwfWQvTA9xO+o +abw4m6SkltFi2mnAAZauy8RRNOoMqv8hjlmPSlzkYZqn0ukqeI1RPToV7qJZjqlc +3sX5kCLliEVx3ZGZbHqfPT2YfF72vhZooF6uCyP8Wg+qInYtyaEQHeTTRCOQiJ/G +KubX9ZqzWB4vMIkIG1SitZgj7Ah3HJVdYdHLiZxfokqRmu8hqkkWCKi9YSgxyXSt +hfbZxbGL0eUQMk1fiyA6PEkfM4VZDdvLCXVDaXP7a3F98N/ETH3Goy7IlXnLc6KO +Tk0k+17kBL5yG6YnLUlamXrXXAkgt3+UuU/xDRxeiEIbEbfnkduebPRq34wGmAOt +zCjvpUfzUwIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIB +BjAdBgNVHQ4EFgQUo5fW816iEOGrRZ88F2Q87gFwnMwwDQYJKoZIhvcNAQELBQAD +ggIBABj6W3X8PnrHX3fHyt/PX8MSxEBd1DKquGrX1RUVRpgjpeaQWxiZTOOtQqOC +MTaIzen7xASWSIsBx40Bz1szBpZGZnQdT+3Btrm0DWHMY37XLneMlhwqI2hrhVd2 +cDMT/uFPpiN3GPoajOi9ZcnPP/TJF9zrx7zABC4tRi9pZsMbj/7sPtPKlL92CiUN +qXsCHKnQO18LwIE6PWThv6ctTr1NxNgpxiIY0MWscgKCP6o6ojoilzHdCGPDdRS5 +YCgtW2jgFqlmgiNR9etT2DGbe+m3nUvriBbP+V04ikkwj+3x6xn0dxoxGE1nVGwv +b2X52z3sIexe9PSLymBlVNFxZPT5pqOBMzYzcfCkeF9OrYMh3jRJjehZrJ3ydlo2 +8hP0r+AJx2EqbPfgna67hkooby7utHnNkDPDs3b69fBsnQGQ+p6Q9pxyz0fawx/k +NSBT8lTR32GDpgLiJTjehTItXnOQUl1CxM49S+H5GYQd1aJQzEH7QRTDvdbJWqNj +ZgKAvQU6O0ec7AAmTPWIUb+oI38YB7AL7YsmoWTTYUrrXJ/es69nA7Mf3W1daWhp +q1467HxpvMc7hU6eFbm0FU/DlXpY18ls6Wy58yljXrQs8C097Vpl4KlbQMJImYFt +nh8GKjwStIsPm6Ik8KaN1nrgS7ZklmOVhMJKzRwuJIczYOXD +-----END CERTIFICATE----- + +# Issuer: CN=QuoVadis Root CA 2 G3 O=QuoVadis Limited +# Subject: CN=QuoVadis Root CA 2 G3 O=QuoVadis Limited +# Label: "QuoVadis Root CA 2 G3" +# Serial: 390156079458959257446133169266079962026824725800 +# MD5 Fingerprint: af:0c:86:6e:bf:40:2d:7f:0b:3e:12:50:ba:12:3d:06 +# SHA1 Fingerprint: 09:3c:61:f3:8b:8b:dc:7d:55:df:75:38:02:05:00:e1:25:f5:c8:36 +# SHA256 Fingerprint: 8f:e4:fb:0a:f9:3a:4d:0d:67:db:0b:eb:b2:3e:37:c7:1b:f3:25:dc:bc:dd:24:0e:a0:4d:af:58:b4:7e:18:40 +-----BEGIN CERTIFICATE----- +MIIFYDCCA0igAwIBAgIURFc0JFuBiZs18s64KztbpybwdSgwDQYJKoZIhvcNAQEL +BQAwSDELMAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAc +BgNVBAMTFVF1b1ZhZGlzIFJvb3QgQ0EgMiBHMzAeFw0xMjAxMTIxODU5MzJaFw00 +MjAxMTIxODU5MzJaMEgxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM +aW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDIgRzMwggIiMA0GCSqG +SIb3DQEBAQUAA4ICDwAwggIKAoICAQChriWyARjcV4g/Ruv5r+LrI3HimtFhZiFf +qq8nUeVuGxbULX1QsFN3vXg6YOJkApt8hpvWGo6t/x8Vf9WVHhLL5hSEBMHfNrMW +n4rjyduYNM7YMxcoRvynyfDStNVNCXJJ+fKH46nafaF9a7I6JaltUkSs+L5u+9ym +c5GQYaYDFCDy54ejiK2toIz/pgslUiXnFgHVy7g1gQyjO/Dh4fxaXc6AcW34Sas+ +O7q414AB+6XrW7PFXmAqMaCvN+ggOp+oMiwMzAkd056OXbxMmO7FGmh77FOm6RQ1 +o9/NgJ8MSPsc9PG/Srj61YxxSscfrf5BmrODXfKEVu+lV0POKa2Mq1W/xPtbAd0j +IaFYAI7D0GoT7RPjEiuA3GfmlbLNHiJuKvhB1PLKFAeNilUSxmn1uIZoL1NesNKq +IcGY5jDjZ1XHm26sGahVpkUG0CM62+tlXSoREfA7T8pt9DTEceT/AFr2XK4jYIVz +8eQQsSWu1ZK7E8EM4DnatDlXtas1qnIhO4M15zHfeiFuuDIIfR0ykRVKYnLP43eh +vNURG3YBZwjgQQvD6xVu+KQZ2aKrr+InUlYrAoosFCT5v0ICvybIxo/gbjh9Uy3l +7ZizlWNof/k19N+IxWA1ksB8aRxhlRbQ694Lrz4EEEVlWFA4r0jyWbYW8jwNkALG +cC4BrTwV1wIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIB +BjAdBgNVHQ4EFgQU7edvdlq/YOxJW8ald7tyFnGbxD0wDQYJKoZIhvcNAQELBQAD +ggIBAJHfgD9DCX5xwvfrs4iP4VGyvD11+ShdyLyZm3tdquXK4Qr36LLTn91nMX66 +AarHakE7kNQIXLJgapDwyM4DYvmL7ftuKtwGTTwpD4kWilhMSA/ohGHqPHKmd+RC +roijQ1h5fq7KpVMNqT1wvSAZYaRsOPxDMuHBR//47PERIjKWnML2W2mWeyAMQ0Ga +W/ZZGYjeVYg3UQt4XAoeo0L9x52ID8DyeAIkVJOviYeIyUqAHerQbj5hLja7NQ4n +lv1mNDthcnPxFlxHBlRJAHpYErAK74X9sbgzdWqTHBLmYF5vHX/JHyPLhGGfHoJE ++V+tYlUkmlKY7VHnoX6XOuYvHxHaU4AshZ6rNRDbIl9qxV6XU/IyAgkwo1jwDQHV +csaxfGl7w/U2Rcxhbl5MlMVerugOXou/983g7aEOGzPuVBj+D77vfoRrQ+NwmNtd +dbINWQeFFSM51vHfqSYP1kjHs6Yi9TM3WpVHn3u6GBVv/9YUZINJ0gpnIdsPNWNg +KCLjsZWDzYWm3S8P52dSbrsvhXz1SnPnxT7AvSESBT/8twNJAlvIJebiVDj1eYeM +HVOyToV7BjjHLPj4sHKNJeV3UvQDHEimUF+IIDBu8oJDqz2XhOdT+yHBTw8imoa4 +WSr2Rz0ZiC3oheGe7IUIarFsNMkd7EgrO3jtZsSOeWmD3n+M +-----END CERTIFICATE----- + +# Issuer: CN=QuoVadis Root CA 3 G3 O=QuoVadis Limited +# Subject: CN=QuoVadis Root CA 3 G3 O=QuoVadis Limited +# Label: "QuoVadis Root CA 3 G3" +# Serial: 268090761170461462463995952157327242137089239581 +# MD5 Fingerprint: df:7d:b9:ad:54:6f:68:a1:df:89:57:03:97:43:b0:d7 +# SHA1 Fingerprint: 48:12:bd:92:3c:a8:c4:39:06:e7:30:6d:27:96:e6:a4:cf:22:2e:7d +# SHA256 Fingerprint: 88:ef:81:de:20:2e:b0:18:45:2e:43:f8:64:72:5c:ea:5f:bd:1f:c2:d9:d2:05:73:07:09:c5:d8:b8:69:0f:46 +-----BEGIN CERTIFICATE----- +MIIFYDCCA0igAwIBAgIULvWbAiin23r/1aOp7r0DoM8Sah0wDQYJKoZIhvcNAQEL +BQAwSDELMAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAc +BgNVBAMTFVF1b1ZhZGlzIFJvb3QgQ0EgMyBHMzAeFw0xMjAxMTIyMDI2MzJaFw00 +MjAxMTIyMDI2MzJaMEgxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM +aW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDMgRzMwggIiMA0GCSqG +SIb3DQEBAQUAA4ICDwAwggIKAoICAQCzyw4QZ47qFJenMioKVjZ/aEzHs286IxSR +/xl/pcqs7rN2nXrpixurazHb+gtTTK/FpRp5PIpM/6zfJd5O2YIyC0TeytuMrKNu +FoM7pmRLMon7FhY4futD4tN0SsJiCnMK3UmzV9KwCoWdcTzeo8vAMvMBOSBDGzXR +U7Ox7sWTaYI+FrUoRqHe6okJ7UO4BUaKhvVZR74bbwEhELn9qdIoyhA5CcoTNs+c +ra1AdHkrAj80//ogaX3T7mH1urPnMNA3I4ZyYUUpSFlob3emLoG+B01vr87ERROR +FHAGjx+f+IdpsQ7vw4kZ6+ocYfx6bIrc1gMLnia6Et3UVDmrJqMz6nWB2i3ND0/k +A9HvFZcba5DFApCTZgIhsUfei5pKgLlVj7WiL8DWM2fafsSntARE60f75li59wzw +eyuxwHApw0BiLTtIadwjPEjrewl5qW3aqDCYz4ByA4imW0aucnl8CAMhZa634Ryl +sSqiMd5mBPfAdOhx3v89WcyWJhKLhZVXGqtrdQtEPREoPHtht+KPZ0/l7DxMYIBp +VzgeAVuNVejH38DMdyM0SXV89pgR6y3e7UEuFAUCf+D+IOs15xGsIs5XPd7JMG0Q +A4XN8f+MFrXBsj6IbGB/kE+V9/YtrQE5BwT6dYB9v0lQ7e/JxHwc64B+27bQ3RP+ +ydOc17KXqQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIB +BjAdBgNVHQ4EFgQUxhfQvKjqAkPyGwaZXSuQILnXnOQwDQYJKoZIhvcNAQELBQAD +ggIBADRh2Va1EodVTd2jNTFGu6QHcrxfYWLopfsLN7E8trP6KZ1/AvWkyaiTt3px +KGmPc+FSkNrVvjrlt3ZqVoAh313m6Tqe5T72omnHKgqwGEfcIHB9UqM+WXzBusnI +FUBhynLWcKzSt/Ac5IYp8M7vaGPQtSCKFWGafoaYtMnCdvvMujAWzKNhxnQT5Wvv +oxXqA/4Ti2Tk08HS6IT7SdEQTXlm66r99I0xHnAUrdzeZxNMgRVhvLfZkXdxGYFg +u/BYpbWcC/ePIlUnwEsBbTuZDdQdm2NnL9DuDcpmvJRPpq3t/O5jrFc/ZSXPsoaP +0Aj/uHYUbt7lJ+yreLVTubY/6CD50qi+YUbKh4yE8/nxoGibIh6BJpsQBJFxwAYf +3KDTuVan45gtf4Od34wrnDKOMpTwATwiKp9Dwi7DmDkHOHv8XgBCH/MyJnmDhPbl +8MFREsALHgQjDFSlTC9JxUrRtm5gDWv8a4uFJGS3iQ6rJUdbPM9+Sb3H6QrG2vd+ +DhcI00iX0HGS8A85PjRqHH3Y8iKuu2n0M7SmSFXRDw4m6Oy2Cy2nhTXN/VnIn9HN +PlopNLk9hM6xZdRZkZFWdSHBd575euFgndOtBBj0fOtek49TSiIp+EgrPk2GrFt/ +ywaZWWDYWGWVjUTR939+J399roD1B0y2PpxxVJkES/1Y+Zj0 +-----END CERTIFICATE----- + +# Issuer: CN=DigiCert Assured ID Root G2 O=DigiCert Inc OU=www.digicert.com +# Subject: CN=DigiCert Assured ID Root G2 O=DigiCert Inc OU=www.digicert.com +# Label: "DigiCert Assured ID Root G2" +# Serial: 15385348160840213938643033620894905419 +# MD5 Fingerprint: 92:38:b9:f8:63:24:82:65:2c:57:33:e6:fe:81:8f:9d +# SHA1 Fingerprint: a1:4b:48:d9:43:ee:0a:0e:40:90:4f:3c:e0:a4:c0:91:93:51:5d:3f +# SHA256 Fingerprint: 7d:05:eb:b6:82:33:9f:8c:94:51:ee:09:4e:eb:fe:fa:79:53:a1:14:ed:b2:f4:49:49:45:2f:ab:7d:2f:c1:85 +-----BEGIN CERTIFICATE----- +MIIDljCCAn6gAwIBAgIQC5McOtY5Z+pnI7/Dr5r0SzANBgkqhkiG9w0BAQsFADBl +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJv +b3QgRzIwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1MTIwMDAwWjBlMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNl +cnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzIwggEi +MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDZ5ygvUj82ckmIkzTz+GoeMVSA +n61UQbVH35ao1K+ALbkKz3X9iaV9JPrjIgwrvJUXCzO/GU1BBpAAvQxNEP4Htecc +biJVMWWXvdMX0h5i89vqbFCMP4QMls+3ywPgym2hFEwbid3tALBSfK+RbLE4E9Hp +EgjAALAcKxHad3A2m67OeYfcgnDmCXRwVWmvo2ifv922ebPynXApVfSr/5Vh88lA +bx3RvpO704gqu52/clpWcTs/1PPRCv4o76Pu2ZmvA9OPYLfykqGxvYmJHzDNw6Yu +YjOuFgJ3RFrngQo8p0Quebg/BLxcoIfhG69Rjs3sLPr4/m3wOnyqi+RnlTGNAgMB +AAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQW +BBTOw0q5mVXyuNtgv6l+vVa1lzan1jANBgkqhkiG9w0BAQsFAAOCAQEAyqVVjOPI +QW5pJ6d1Ee88hjZv0p3GeDgdaZaikmkuOGybfQTUiaWxMTeKySHMq2zNixya1r9I +0jJmwYrA8y8678Dj1JGG0VDjA9tzd29KOVPt3ibHtX2vK0LRdWLjSisCx1BL4Gni +lmwORGYQRI+tBev4eaymG+g3NJ1TyWGqolKvSnAWhsI6yLETcDbYz+70CjTVW0z9 +B5yiutkBclzzTcHdDrEcDcRjvq30FPuJ7KJBDkzMyFdA0G4Dqs0MjomZmWzwPDCv +ON9vvKO+KSAnq3T/EyJ43pdSVR6DtVQgA+6uwE9W3jfMw3+qBCe703e4YtsXfJwo +IhNzbM8m9Yop5w== +-----END CERTIFICATE----- + +# Issuer: CN=DigiCert Assured ID Root G3 O=DigiCert Inc OU=www.digicert.com +# Subject: CN=DigiCert Assured ID Root G3 O=DigiCert Inc OU=www.digicert.com +# Label: "DigiCert Assured ID Root G3" +# Serial: 15459312981008553731928384953135426796 +# MD5 Fingerprint: 7c:7f:65:31:0c:81:df:8d:ba:3e:99:e2:5c:ad:6e:fb +# SHA1 Fingerprint: f5:17:a2:4f:9a:48:c6:c9:f8:a2:00:26:9f:dc:0f:48:2c:ab:30:89 +# SHA256 Fingerprint: 7e:37:cb:8b:4c:47:09:0c:ab:36:55:1b:a6:f4:5d:b8:40:68:0f:ba:16:6a:95:2d:b1:00:71:7f:43:05:3f:c2 +-----BEGIN CERTIFICATE----- +MIICRjCCAc2gAwIBAgIQC6Fa+h3foLVJRK/NJKBs7DAKBggqhkjOPQQDAzBlMQsw +CQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cu +ZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3Qg +RzMwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1MTIwMDAwWjBlMQswCQYDVQQGEwJV +UzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQu +Y29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzMwdjAQBgcq +hkjOPQIBBgUrgQQAIgNiAAQZ57ysRGXtzbg/WPuNsVepRC0FFfLvC/8QdJ+1YlJf +Zn4f5dwbRXkLzMZTCp2NXQLZqVneAlr2lSoOjThKiknGvMYDOAdfVdp+CW7if17Q +RSAPWXYQ1qAk8C3eNvJsKTmjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/ +BAQDAgGGMB0GA1UdDgQWBBTL0L2p4ZgFUaFNN6KDec6NHSrkhDAKBggqhkjOPQQD +AwNnADBkAjAlpIFFAmsSS3V0T8gj43DydXLefInwz5FyYZ5eEJJZVrmDxxDnOOlY +JjZ91eQ0hjkCMHw2U/Aw5WJjOpnitqM7mzT6HtoQknFekROn3aRukswy1vUhZscv +6pZjamVFkpUBtA== +-----END CERTIFICATE----- + +# Issuer: CN=DigiCert Global Root G2 O=DigiCert Inc OU=www.digicert.com +# Subject: CN=DigiCert Global Root G2 O=DigiCert Inc OU=www.digicert.com +# Label: "DigiCert Global Root G2" +# Serial: 4293743540046975378534879503202253541 +# MD5 Fingerprint: e4:a6:8a:c8:54:ac:52:42:46:0a:fd:72:48:1b:2a:44 +# SHA1 Fingerprint: df:3c:24:f9:bf:d6:66:76:1b:26:80:73:fe:06:d1:cc:8d:4f:82:a4 +# SHA256 Fingerprint: cb:3c:cb:b7:60:31:e5:e0:13:8f:8d:d3:9a:23:f9:de:47:ff:c3:5e:43:c1:14:4c:ea:27:d4:6a:5a:b1:cb:5f +-----BEGIN CERTIFICATE----- +MIIDjjCCAnagAwIBAgIQAzrx5qcRqaC7KGSxHQn65TANBgkqhkiG9w0BAQsFADBh +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBH +MjAeFw0xMzA4MDExMjAwMDBaFw0zODAxMTUxMjAwMDBaMGExCzAJBgNVBAYTAlVT +MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j +b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEcyMIIBIjANBgkqhkiG +9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuzfNNNx7a8myaJCtSnX/RrohCgiN9RlUyfuI +2/Ou8jqJkTx65qsGGmvPrC3oXgkkRLpimn7Wo6h+4FR1IAWsULecYxpsMNzaHxmx +1x7e/dfgy5SDN67sH0NO3Xss0r0upS/kqbitOtSZpLYl6ZtrAGCSYP9PIUkY92eQ +q2EGnI/yuum06ZIya7XzV+hdG82MHauVBJVJ8zUtluNJbd134/tJS7SsVQepj5Wz +tCO7TG1F8PapspUwtP1MVYwnSlcUfIKdzXOS0xZKBgyMUNGPHgm+F6HmIcr9g+UQ +vIOlCsRnKPZzFBQ9RnbDhxSJITRNrw9FDKZJobq7nMWxM4MphQIDAQABo0IwQDAP +BgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUTiJUIBiV +5uNu5g/6+rkS7QYXjzkwDQYJKoZIhvcNAQELBQADggEBAGBnKJRvDkhj6zHd6mcY +1Yl9PMWLSn/pvtsrF9+wX3N3KjITOYFnQoQj8kVnNeyIv/iPsGEMNKSuIEyExtv4 +NeF22d+mQrvHRAiGfzZ0JFrabA0UWTW98kndth/Jsw1HKj2ZL7tcu7XUIOGZX1NG +Fdtom/DzMNU+MeKNhJ7jitralj41E6Vf8PlwUHBHQRFXGU7Aj64GxJUTFy8bJZ91 +8rGOmaFvE7FBcf6IKshPECBV1/MUReXgRPTqh5Uykw7+U0b6LJ3/iyK5S9kJRaTe +pLiaWN0bfVKfjllDiIGknibVb63dDcY3fe0Dkhvld1927jyNxF1WW6LZZm6zNTfl +MrY= +-----END CERTIFICATE----- + +# Issuer: CN=DigiCert Global Root G3 O=DigiCert Inc OU=www.digicert.com +# Subject: CN=DigiCert Global Root G3 O=DigiCert Inc OU=www.digicert.com +# Label: "DigiCert Global Root G3" +# Serial: 7089244469030293291760083333884364146 +# MD5 Fingerprint: f5:5d:a4:50:a5:fb:28:7e:1e:0f:0d:cc:96:57:56:ca +# SHA1 Fingerprint: 7e:04:de:89:6a:3e:66:6d:00:e6:87:d3:3f:fa:d9:3b:e8:3d:34:9e +# SHA256 Fingerprint: 31:ad:66:48:f8:10:41:38:c7:38:f3:9e:a4:32:01:33:39:3e:3a:18:cc:02:29:6e:f9:7c:2a:c9:ef:67:31:d0 +-----BEGIN CERTIFICATE----- +MIICPzCCAcWgAwIBAgIQBVVWvPJepDU1w6QP1atFcjAKBggqhkjOPQQDAzBhMQsw +CQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cu +ZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBHMzAe +Fw0xMzA4MDExMjAwMDBaFw0zODAxMTUxMjAwMDBaMGExCzAJBgNVBAYTAlVTMRUw +EwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20x +IDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEczMHYwEAYHKoZIzj0CAQYF +K4EEACIDYgAE3afZu4q4C/sLfyHS8L6+c/MzXRq8NOrexpu80JX28MzQC7phW1FG +fp4tn+6OYwwX7Adw9c+ELkCDnOg/QW07rdOkFFk2eJ0DQ+4QE2xy3q6Ip6FrtUPO +Z9wj/wMco+I+o0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAd +BgNVHQ4EFgQUs9tIpPmhxdiuNkHMEWNpYim8S8YwCgYIKoZIzj0EAwMDaAAwZQIx +AK288mw/EkrRLTnDCgmXc/SINoyIJ7vmiI1Qhadj+Z4y3maTD/HMsQmP3Wyr+mt/ +oAIwOWZbwmSNuJ5Q3KjVSaLtx9zRSX8XAbjIho9OjIgrqJqpisXRAL34VOKa5Vt8 +sycX +-----END CERTIFICATE----- + +# Issuer: CN=DigiCert Trusted Root G4 O=DigiCert Inc OU=www.digicert.com +# Subject: CN=DigiCert Trusted Root G4 O=DigiCert Inc OU=www.digicert.com +# Label: "DigiCert Trusted Root G4" +# Serial: 7451500558977370777930084869016614236 +# MD5 Fingerprint: 78:f2:fc:aa:60:1f:2f:b4:eb:c9:37:ba:53:2e:75:49 +# SHA1 Fingerprint: dd:fb:16:cd:49:31:c9:73:a2:03:7d:3f:c8:3a:4d:7d:77:5d:05:e4 +# SHA256 Fingerprint: 55:2f:7b:dc:f1:a7:af:9e:6c:e6:72:01:7f:4f:12:ab:f7:72:40:c7:8e:76:1a:c2:03:d1:d9:d2:0a:c8:99:88 +-----BEGIN CERTIFICATE----- +MIIFkDCCA3igAwIBAgIQBZsbV56OITLiOQe9p3d1XDANBgkqhkiG9w0BAQwFADBi +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSEwHwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3Qg +RzQwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1MTIwMDAwWjBiMQswCQYDVQQGEwJV +UzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQu +Y29tMSEwHwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3QgRzQwggIiMA0GCSqG +SIb3DQEBAQUAA4ICDwAwggIKAoICAQC/5pBzaN675F1KPDAiMGkz7MKnJS7JIT3y +ithZwuEppz1Yq3aaza57G4QNxDAf8xukOBbrVsaXbR2rsnnyyhHS5F/WBTxSD1If +xp4VpX6+n6lXFllVcq9ok3DCsrp1mWpzMpTREEQQLt+C8weE5nQ7bXHiLQwb7iDV +ySAdYyktzuxeTsiT+CFhmzTrBcZe7FsavOvJz82sNEBfsXpm7nfISKhmV1efVFiO +DCu3T6cw2Vbuyntd463JT17lNecxy9qTXtyOj4DatpGYQJB5w3jHtrHEtWoYOAMQ +jdjUN6QuBX2I9YI+EJFwq1WCQTLX2wRzKm6RAXwhTNS8rhsDdV14Ztk6MUSaM0C/ +CNdaSaTC5qmgZ92kJ7yhTzm1EVgX9yRcRo9k98FpiHaYdj1ZXUJ2h4mXaXpI8OCi +EhtmmnTK3kse5w5jrubU75KSOp493ADkRSWJtppEGSt+wJS00mFt6zPZxd9LBADM +fRyVw4/3IbKyEbe7f/LVjHAsQWCqsWMYRJUadmJ+9oCw++hkpjPRiQfhvbfmQ6QY +uKZ3AeEPlAwhHbJUKSWJbOUOUlFHdL4mrLZBdd56rF+NP8m800ERElvlEFDrMcXK +chYiCd98THU/Y+whX8QgUWtvsauGi0/C1kVfnSD8oR7FwI+isX4KJpn15GkvmB0t +9dmpsh3lGwIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIB +hjAdBgNVHQ4EFgQU7NfjgtJxXWRM3y5nP+e6mK4cD08wDQYJKoZIhvcNAQEMBQAD +ggIBALth2X2pbL4XxJEbw6GiAI3jZGgPVs93rnD5/ZpKmbnJeFwMDF/k5hQpVgs2 +SV1EY+CtnJYYZhsjDT156W1r1lT40jzBQ0CuHVD1UvyQO7uYmWlrx8GnqGikJ9yd ++SeuMIW59mdNOj6PWTkiU0TryF0Dyu1Qen1iIQqAyHNm0aAFYF/opbSnr6j3bTWc +fFqK1qI4mfN4i/RN0iAL3gTujJtHgXINwBQy7zBZLq7gcfJW5GqXb5JQbZaNaHqa +sjYUegbyJLkJEVDXCLG4iXqEI2FCKeWjzaIgQdfRnGTZ6iahixTXTBmyUEFxPT9N +cCOGDErcgdLMMpSEDQgJlxxPwO5rIHQw0uA5NBCFIRUBCOhVMt5xSdkoF1BN5r5N +0XWs0Mr7QbhDparTwwVETyw2m+L64kW4I1NsBm9nVX9GtUw/bihaeSbSpKhil9Ie +4u1Ki7wb/UdKDd9nZn6yW0HQO+T0O/QEY+nvwlQAUaCKKsnOeMzV6ocEGLPOr0mI +r/OSmbaz5mEP0oUA51Aa5BuVnRmhuZyxm7EAHu/QD09CbMkKvO5D+jpxpchNJqU1 +/YldvIViHTLSoCtU7ZpXwdv6EM8Zt4tKG48BtieVU+i2iW1bvGjUI+iLUaJW+fCm +gKDWHrO8Dw9TdSmq6hN35N6MgSGtBxBHEa2HPQfRdbzP82Z+ +-----END CERTIFICATE----- + +# Issuer: CN=COMODO RSA Certification Authority O=COMODO CA Limited +# Subject: CN=COMODO RSA Certification Authority O=COMODO CA Limited +# Label: "COMODO RSA Certification Authority" +# Serial: 101909084537582093308941363524873193117 +# MD5 Fingerprint: 1b:31:b0:71:40:36:cc:14:36:91:ad:c4:3e:fd:ec:18 +# SHA1 Fingerprint: af:e5:d2:44:a8:d1:19:42:30:ff:47:9f:e2:f8:97:bb:cd:7a:8c:b4 +# SHA256 Fingerprint: 52:f0:e1:c4:e5:8e:c6:29:29:1b:60:31:7f:07:46:71:b8:5d:7e:a8:0d:5b:07:27:34:63:53:4b:32:b4:02:34 +-----BEGIN CERTIFICATE----- +MIIF2DCCA8CgAwIBAgIQTKr5yttjb+Af907YWwOGnTANBgkqhkiG9w0BAQwFADCB +hTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G +A1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNV +BAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTAwMTE5 +MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0IxGzAZBgNVBAgT +EkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMR +Q09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNh +dGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCR +6FSS0gpWsawNJN3Fz0RndJkrN6N9I3AAcbxT38T6KhKPS38QVr2fcHK3YX/JSw8X +pz3jsARh7v8Rl8f0hj4K+j5c+ZPmNHrZFGvnnLOFoIJ6dq9xkNfs/Q36nGz637CC +9BR++b7Epi9Pf5l/tfxnQ3K9DADWietrLNPtj5gcFKt+5eNu/Nio5JIk2kNrYrhV +/erBvGy2i/MOjZrkm2xpmfh4SDBF1a3hDTxFYPwyllEnvGfDyi62a+pGx8cgoLEf +Zd5ICLqkTqnyg0Y3hOvozIFIQ2dOciqbXL1MGyiKXCJ7tKuY2e7gUYPDCUZObT6Z ++pUX2nwzV0E8jVHtC7ZcryxjGt9XyD+86V3Em69FmeKjWiS0uqlWPc9vqv9JWL7w +qP/0uK3pN/u6uPQLOvnoQ0IeidiEyxPx2bvhiWC4jChWrBQdnArncevPDt09qZah +SL0896+1DSJMwBGB7FY79tOi4lu3sgQiUpWAk2nojkxl8ZEDLXB0AuqLZxUpaVIC +u9ffUGpVRr+goyhhf3DQw6KqLCGqR84onAZFdr+CGCe01a60y1Dma/RMhnEw6abf +Fobg2P9A3fvQQoh/ozM6LlweQRGBY84YcWsr7KaKtzFcOmpH4MN5WdYgGq/yapiq +crxXStJLnbsQ/LBMQeXtHT1eKJ2czL+zUdqnR+WEUwIDAQABo0IwQDAdBgNVHQ4E +FgQUu69+Aj36pvE8hI6t7jiY7NkyMtQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB +/wQFMAMBAf8wDQYJKoZIhvcNAQEMBQADggIBAArx1UaEt65Ru2yyTUEUAJNMnMvl +wFTPoCWOAvn9sKIN9SCYPBMtrFaisNZ+EZLpLrqeLppysb0ZRGxhNaKatBYSaVqM +4dc+pBroLwP0rmEdEBsqpIt6xf4FpuHA1sj+nq6PK7o9mfjYcwlYRm6mnPTXJ9OV +2jeDchzTc+CiR5kDOF3VSXkAKRzH7JsgHAckaVd4sjn8OoSgtZx8jb8uk2Intzna +FxiuvTwJaP+EmzzV1gsD41eeFPfR60/IvYcjt7ZJQ3mFXLrrkguhxuhoqEwWsRqZ +CuhTLJK7oQkYdQxlqHvLI7cawiiFwxv/0Cti76R7CZGYZ4wUAc1oBmpjIXUDgIiK +boHGhfKppC3n9KUkEEeDys30jXlYsQab5xoq2Z0B15R97QNKyvDb6KkBPvVWmcke +jkk9u+UJueBPSZI9FoJAzMxZxuY67RIuaTxslbH9qh17f4a+Hg4yRvv7E491f0yL +S0Zj/gA0QHDBw7mh3aZw4gSzQbzpgJHqZJx64SIDqZxubw5lT2yHh17zbqD5daWb +QOhTsiedSrnAdyGN/4fy3ryM7xfft0kL0fJuMAsaDk527RH89elWsn2/x20Kk4yl +0MC2Hb46TpSi125sC8KKfPog88Tk5c0NqMuRkrF8hey1FGlmDoLnzc7ILaZRfyHB +NVOFBkpdn627G190 +-----END CERTIFICATE----- + +# Issuer: CN=USERTrust RSA Certification Authority O=The USERTRUST Network +# Subject: CN=USERTrust RSA Certification Authority O=The USERTRUST Network +# Label: "USERTrust RSA Certification Authority" +# Serial: 2645093764781058787591871645665788717 +# MD5 Fingerprint: 1b:fe:69:d1:91:b7:19:33:a3:72:a8:0f:e1:55:e5:b5 +# SHA1 Fingerprint: 2b:8f:1b:57:33:0d:bb:a2:d0:7a:6c:51:f7:0e:e9:0d:da:b9:ad:8e +# SHA256 Fingerprint: e7:93:c9:b0:2f:d8:aa:13:e2:1c:31:22:8a:cc:b0:81:19:64:3b:74:9c:89:89:64:b1:74:6d:46:c3:d4:cb:d2 +-----BEGIN CERTIFICATE----- +MIIF3jCCA8agAwIBAgIQAf1tMPyjylGoG7xkDjUDLTANBgkqhkiG9w0BAQwFADCB +iDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0pl +cnNleSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNV +BAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTAw +MjAxMDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBiDELMAkGA1UEBhMCVVMxEzARBgNV +BAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVU +aGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBSU0EgQ2Vy +dGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIK +AoICAQCAEmUXNg7D2wiz0KxXDXbtzSfTTK1Qg2HiqiBNCS1kCdzOiZ/MPans9s/B +3PHTsdZ7NygRK0faOca8Ohm0X6a9fZ2jY0K2dvKpOyuR+OJv0OwWIJAJPuLodMkY +tJHUYmTbf6MG8YgYapAiPLz+E/CHFHv25B+O1ORRxhFnRghRy4YUVD+8M/5+bJz/ +Fp0YvVGONaanZshyZ9shZrHUm3gDwFA66Mzw3LyeTP6vBZY1H1dat//O+T23LLb2 +VN3I5xI6Ta5MirdcmrS3ID3KfyI0rn47aGYBROcBTkZTmzNg95S+UzeQc0PzMsNT +79uq/nROacdrjGCT3sTHDN/hMq7MkztReJVni+49Vv4M0GkPGw/zJSZrM233bkf6 +c0Plfg6lZrEpfDKEY1WJxA3Bk1QwGROs0303p+tdOmw1XNtB1xLaqUkL39iAigmT +Yo61Zs8liM2EuLE/pDkP2QKe6xJMlXzzawWpXhaDzLhn4ugTncxbgtNMs+1b/97l +c6wjOy0AvzVVdAlJ2ElYGn+SNuZRkg7zJn0cTRe8yexDJtC/QV9AqURE9JnnV4ee +UB9XVKg+/XRjL7FQZQnmWEIuQxpMtPAlR1n6BB6T1CZGSlCBst6+eLf8ZxXhyVeE +Hg9j1uliutZfVS7qXMYoCAQlObgOK6nyTJccBz8NUvXt7y+CDwIDAQABo0IwQDAd +BgNVHQ4EFgQUU3m/WqorSs9UgOHYm8Cd8rIDZsswDgYDVR0PAQH/BAQDAgEGMA8G +A1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEMBQADggIBAFzUfA3P9wF9QZllDHPF +Up/L+M+ZBn8b2kMVn54CVVeWFPFSPCeHlCjtHzoBN6J2/FNQwISbxmtOuowhT6KO +VWKR82kV2LyI48SqC/3vqOlLVSoGIG1VeCkZ7l8wXEskEVX/JJpuXior7gtNn3/3 +ATiUFJVDBwn7YKnuHKsSjKCaXqeYalltiz8I+8jRRa8YFWSQEg9zKC7F4iRO/Fjs +8PRF/iKz6y+O0tlFYQXBl2+odnKPi4w2r78NBc5xjeambx9spnFixdjQg3IM8WcR +iQycE0xyNN+81XHfqnHd4blsjDwSXWXavVcStkNr/+XeTWYRUc+ZruwXtuhxkYze +Sf7dNXGiFSeUHM9h4ya7b6NnJSFd5t0dCy5oGzuCr+yDZ4XUmFF0sbmZgIn/f3gZ +XHlKYC6SQK5MNyosycdiyA5d9zZbyuAlJQG03RoHnHcAP9Dc1ew91Pq7P8yF1m9/ +qS3fuQL39ZeatTXaw2ewh0qpKJ4jjv9cJ2vhsE/zB+4ALtRZh8tSQZXq9EfX7mRB +VXyNWQKV3WKdwrnuWih0hKWbt5DHDAff9Yk2dDLWKMGwsAvgnEzDHNb842m1R0aB +L6KCq9NjRHDEjf8tM7qtj3u1cIiuPhnPQCjY/MiQu12ZIvVS5ljFH4gxQ+6IHdfG +jjxDah2nGN59PRbxYvnKkKj9 +-----END CERTIFICATE----- + +# Issuer: CN=USERTrust ECC Certification Authority O=The USERTRUST Network +# Subject: CN=USERTrust ECC Certification Authority O=The USERTRUST Network +# Label: "USERTrust ECC Certification Authority" +# Serial: 123013823720199481456569720443997572134 +# MD5 Fingerprint: fa:68:bc:d9:b5:7f:ad:fd:c9:1d:06:83:28:cc:24:c1 +# SHA1 Fingerprint: d1:cb:ca:5d:b2:d5:2a:7f:69:3b:67:4d:e5:f0:5a:1d:0c:95:7d:f0 +# SHA256 Fingerprint: 4f:f4:60:d5:4b:9c:86:da:bf:bc:fc:57:12:e0:40:0d:2b:ed:3f:bc:4d:4f:bd:aa:86:e0:6a:dc:d2:a9:ad:7a +-----BEGIN CERTIFICATE----- +MIICjzCCAhWgAwIBAgIQXIuZxVqUxdJxVt7NiYDMJjAKBggqhkjOPQQDAzCBiDEL +MAkGA1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNl +eSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMT +JVVTRVJUcnVzdCBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTAwMjAx +MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBiDELMAkGA1UEBhMCVVMxEzARBgNVBAgT +Ck5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVUaGUg +VVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBFQ0MgQ2VydGlm +aWNhdGlvbiBBdXRob3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQarFRaqflo +I+d61SRvU8Za2EurxtW20eZzca7dnNYMYf3boIkDuAUU7FfO7l0/4iGzzvfUinng +o4N+LZfQYcTxmdwlkWOrfzCjtHDix6EznPO/LlxTsV+zfTJ/ijTjeXmjQjBAMB0G +A1UdDgQWBBQ64QmG1M8ZwpZ2dEl23OA1xmNjmjAOBgNVHQ8BAf8EBAMCAQYwDwYD +VR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjA2Z6EWCNzklwBBHU6+4WMB +zzuqQhFkoJ2UOQIReVx7Hfpkue4WQrO/isIJxOzksU0CMQDpKmFHjFJKS04YcPbW +RNZu9YO6bVi9JNlWSOrvxKJGgYhqOkbRqZtNyWHa0V1Xahg= +-----END CERTIFICATE----- + +# Issuer: CN=GlobalSign O=GlobalSign OU=GlobalSign ECC Root CA - R5 +# Subject: CN=GlobalSign O=GlobalSign OU=GlobalSign ECC Root CA - R5 +# Label: "GlobalSign ECC Root CA - R5" +# Serial: 32785792099990507226680698011560947931244 +# MD5 Fingerprint: 9f:ad:3b:1c:02:1e:8a:ba:17:74:38:81:0c:a2:bc:08 +# SHA1 Fingerprint: 1f:24:c6:30:cd:a4:18:ef:20:69:ff:ad:4f:dd:5f:46:3a:1b:69:aa +# SHA256 Fingerprint: 17:9f:bc:14:8a:3d:d0:0f:d2:4e:a1:34:58:cc:43:bf:a7:f5:9c:81:82:d7:83:a5:13:f6:eb:ec:10:0c:89:24 +-----BEGIN CERTIFICATE----- +MIICHjCCAaSgAwIBAgIRYFlJ4CYuu1X5CneKcflK2GwwCgYIKoZIzj0EAwMwUDEk +MCIGA1UECxMbR2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI1MRMwEQYDVQQKEwpH +bG9iYWxTaWduMRMwEQYDVQQDEwpHbG9iYWxTaWduMB4XDTEyMTExMzAwMDAwMFoX +DTM4MDExOTAzMTQwN1owUDEkMCIGA1UECxMbR2xvYmFsU2lnbiBFQ0MgUm9vdCBD +QSAtIFI1MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQDEwpHbG9iYWxTaWdu +MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAER0UOlvt9Xb/pOdEh+J8LttV7HpI6SFkc +8GIxLcB6KP4ap1yztsyX50XUWPrRd21DosCHZTQKH3rd6zwzocWdTaRvQZU4f8ke +hOvRnkmSh5SHDDqFSmafnVmTTZdhBoZKo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYD +VR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUPeYpSJvqB8ohREom3m7e0oPQn1kwCgYI +KoZIzj0EAwMDaAAwZQIxAOVpEslu28YxuglB4Zf4+/2a4n0Sye18ZNPLBSWLVtmg +515dTguDnFt2KaAJJiFqYgIwcdK1j1zqO+F4CYWodZI7yFz9SO8NdCKoCOJuxUnO +xwy8p2Fp8fc74SrL+SvzZpA3 +-----END CERTIFICATE----- + +# Issuer: CN=IdenTrust Commercial Root CA 1 O=IdenTrust +# Subject: CN=IdenTrust Commercial Root CA 1 O=IdenTrust +# Label: "IdenTrust Commercial Root CA 1" +# Serial: 13298821034946342390520003877796839426 +# MD5 Fingerprint: b3:3e:77:73:75:ee:a0:d3:e3:7e:49:63:49:59:bb:c7 +# SHA1 Fingerprint: df:71:7e:aa:4a:d9:4e:c9:55:84:99:60:2d:48:de:5f:bc:f0:3a:25 +# SHA256 Fingerprint: 5d:56:49:9b:e4:d2:e0:8b:cf:ca:d0:8a:3e:38:72:3d:50:50:3b:de:70:69:48:e4:2f:55:60:30:19:e5:28:ae +-----BEGIN CERTIFICATE----- +MIIFYDCCA0igAwIBAgIQCgFCgAAAAUUjyES1AAAAAjANBgkqhkiG9w0BAQsFADBK +MQswCQYDVQQGEwJVUzESMBAGA1UEChMJSWRlblRydXN0MScwJQYDVQQDEx5JZGVu +VHJ1c3QgQ29tbWVyY2lhbCBSb290IENBIDEwHhcNMTQwMTE2MTgxMjIzWhcNMzQw +MTE2MTgxMjIzWjBKMQswCQYDVQQGEwJVUzESMBAGA1UEChMJSWRlblRydXN0MScw +JQYDVQQDEx5JZGVuVHJ1c3QgQ29tbWVyY2lhbCBSb290IENBIDEwggIiMA0GCSqG +SIb3DQEBAQUAA4ICDwAwggIKAoICAQCnUBneP5k91DNG8W9RYYKyqU+PZ4ldhNlT +3Qwo2dfw/66VQ3KZ+bVdfIrBQuExUHTRgQ18zZshq0PirK1ehm7zCYofWjK9ouuU ++ehcCuz/mNKvcbO0U59Oh++SvL3sTzIwiEsXXlfEU8L2ApeN2WIrvyQfYo3fw7gp +S0l4PJNgiCL8mdo2yMKi1CxUAGc1bnO/AljwpN3lsKImesrgNqUZFvX9t++uP0D1 +bVoE/c40yiTcdCMbXTMTEl3EASX2MN0CXZ/g1Ue9tOsbobtJSdifWwLziuQkkORi +T0/Br4sOdBeo0XKIanoBScy0RnnGF7HamB4HWfp1IYVl3ZBWzvurpWCdxJ35UrCL +vYf5jysjCiN2O/cz4ckA82n5S6LgTrx+kzmEB/dEcH7+B1rlsazRGMzyNeVJSQjK +Vsk9+w8YfYs7wRPCTY/JTw436R+hDmrfYi7LNQZReSzIJTj0+kuniVyc0uMNOYZK +dHzVWYfCP04MXFL0PfdSgvHqo6z9STQaKPNBiDoT7uje/5kdX7rL6B7yuVBgwDHT +c+XvvqDtMwt0viAgxGds8AgDelWAf0ZOlqf0Hj7h9tgJ4TNkK2PXMl6f+cB7D3hv +l7yTmvmcEpB4eoCHFddydJxVdHixuuFucAS6T6C6aMN7/zHwcz09lCqxC0EOoP5N +iGVreTO01wIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB +/zAdBgNVHQ4EFgQU7UQZwNPwBovupHu+QucmVMiONnYwDQYJKoZIhvcNAQELBQAD +ggIBAA2ukDL2pkt8RHYZYR4nKM1eVO8lvOMIkPkp165oCOGUAFjvLi5+U1KMtlwH +6oi6mYtQlNeCgN9hCQCTrQ0U5s7B8jeUeLBfnLOic7iPBZM4zY0+sLj7wM+x8uwt +LRvM7Kqas6pgghstO8OEPVeKlh6cdbjTMM1gCIOQ045U8U1mwF10A0Cj7oV+wh93 +nAbowacYXVKV7cndJZ5t+qntozo00Fl72u1Q8zW/7esUTTHHYPTa8Yec4kjixsU3 ++wYQ+nVZZjFHKdp2mhzpgq7vmrlR94gjmmmVYjzlVYA211QC//G5Xc7UI2/YRYRK +W2XviQzdFKcgyxilJbQN+QHwotL0AMh0jqEqSI5l2xPE4iUXfeu+h1sXIFRRk0pT +AwvsXcoz7WL9RccvW9xYoIA55vrX/hMUpu09lEpCdNTDd1lzzY9GvlU47/rokTLq +l1gEIt44w8y8bckzOmoKaT+gyOpyj4xjhiO9bTyWnpXgSUyqorkqG5w2gXjtw+hG +4iZZRHUe2XWJUc0QhJ1hYMtd+ZciTY6Y5uN/9lu7rs3KSoFrXgvzUeF0K+l+J6fZ +mUlO+KWA2yUPHGNiiskzZ2s8EIPGrd6ozRaOjfAHN3Gf8qv8QfXBi+wAN10J5U6A +7/qxXDgGpRtK4dw4LTzcqx+QGtVKnO7RcGzM7vRX+Bi6hG6H +-----END CERTIFICATE----- + +# Issuer: CN=IdenTrust Public Sector Root CA 1 O=IdenTrust +# Subject: CN=IdenTrust Public Sector Root CA 1 O=IdenTrust +# Label: "IdenTrust Public Sector Root CA 1" +# Serial: 13298821034946342390521976156843933698 +# MD5 Fingerprint: 37:06:a5:b0:fc:89:9d:ba:f4:6b:8c:1a:64:cd:d5:ba +# SHA1 Fingerprint: ba:29:41:60:77:98:3f:f4:f3:ef:f2:31:05:3b:2e:ea:6d:4d:45:fd +# SHA256 Fingerprint: 30:d0:89:5a:9a:44:8a:26:20:91:63:55:22:d1:f5:20:10:b5:86:7a:ca:e1:2c:78:ef:95:8f:d4:f4:38:9f:2f +-----BEGIN CERTIFICATE----- +MIIFZjCCA06gAwIBAgIQCgFCgAAAAUUjz0Z8AAAAAjANBgkqhkiG9w0BAQsFADBN +MQswCQYDVQQGEwJVUzESMBAGA1UEChMJSWRlblRydXN0MSowKAYDVQQDEyFJZGVu +VHJ1c3QgUHVibGljIFNlY3RvciBSb290IENBIDEwHhcNMTQwMTE2MTc1MzMyWhcN +MzQwMTE2MTc1MzMyWjBNMQswCQYDVQQGEwJVUzESMBAGA1UEChMJSWRlblRydXN0 +MSowKAYDVQQDEyFJZGVuVHJ1c3QgUHVibGljIFNlY3RvciBSb290IENBIDEwggIi +MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC2IpT8pEiv6EdrCvsnduTyP4o7 +ekosMSqMjbCpwzFrqHd2hCa2rIFCDQjrVVi7evi8ZX3yoG2LqEfpYnYeEe4IFNGy +RBb06tD6Hi9e28tzQa68ALBKK0CyrOE7S8ItneShm+waOh7wCLPQ5CQ1B5+ctMlS +bdsHyo+1W/CD80/HLaXIrcuVIKQxKFdYWuSNG5qrng0M8gozOSI5Cpcu81N3uURF +/YTLNiCBWS2ab21ISGHKTN9T0a9SvESfqy9rg3LvdYDaBjMbXcjaY8ZNzaxmMc3R +3j6HEDbhuaR672BQssvKplbgN6+rNBM5Jeg5ZuSYeqoSmJxZZoY+rfGwyj4GD3vw +EUs3oERte8uojHH01bWRNszwFcYr3lEXsZdMUD2xlVl8BX0tIdUAvwFnol57plzy +9yLxkA2T26pEUWbMfXYD62qoKjgZl3YNa4ph+bz27nb9cCvdKTz4Ch5bQhyLVi9V +GxyhLrXHFub4qjySjmm2AcG1hp2JDws4lFTo6tyePSW8Uybt1as5qsVATFSrsrTZ +2fjXctscvG29ZV/viDUqZi/u9rNl8DONfJhBaUYPQxxp+pu10GFqzcpL2UyQRqsV +WaFHVCkugyhfHMKiq3IXAAaOReyL4jM9f9oZRORicsPfIsbyVtTdX5Vy7W1f90gD +W/3FKqD2cyOEEBsB5wIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/ +BAUwAwEB/zAdBgNVHQ4EFgQU43HgntinQtnbcZFrlJPrw6PRFKMwDQYJKoZIhvcN +AQELBQADggIBAEf63QqwEZE4rU1d9+UOl1QZgkiHVIyqZJnYWv6IAcVYpZmxI1Qj +t2odIFflAWJBF9MJ23XLblSQdf4an4EKwt3X9wnQW3IV5B4Jaj0z8yGa5hV+rVHV +DRDtfULAj+7AmgjVQdZcDiFpboBhDhXAuM/FSRJSzL46zNQuOAXeNf0fb7iAaJg9 +TaDKQGXSc3z1i9kKlT/YPyNtGtEqJBnZhbMX73huqVjRI9PHE+1yJX9dsXNw0H8G +lwmEKYBhHfpe/3OsoOOJuBxxFcbeMX8S3OFtm6/n6J91eEyrRjuazr8FGF1NFTwW +mhlQBJqymm9li1JfPFgEKCXAZmExfrngdbkaqIHWchezxQMxNRF4eKLg6TCMf4Df +WN88uieW4oA0beOY02QnrEh+KHdcxiVhJfiFDGX6xDIvpZgF5PgLZxYWxoK4Mhn5 ++bl53B/N66+rDt0b20XkeucC4pVd/GnwU2lhlXV5C15V5jgclKlZM57IcXR5f1GJ +tshquDDIajjDbp7hNxbqBWJMWxJH7ae0s1hWx0nzfxJoCTFx8G34Tkf71oXuxVhA +GaQdp/lLQzfcaFpPz+vCZHTetBXZ9FRUGi8c15dxVJCO2SCdUyt/q4/i6jC8UDfv +8Ue1fXwsBOxonbRJRBD0ckscZOf85muQ3Wl9af0AVqW3rLatt8o+Ae+c +-----END CERTIFICATE----- + +# Issuer: CN=Entrust Root Certification Authority - G2 O=Entrust, Inc. OU=See www.entrust.net/legal-terms/(c) 2009 Entrust, Inc. - for authorized use only +# Subject: CN=Entrust Root Certification Authority - G2 O=Entrust, Inc. OU=See www.entrust.net/legal-terms/(c) 2009 Entrust, Inc. - for authorized use only +# Label: "Entrust Root Certification Authority - G2" +# Serial: 1246989352 +# MD5 Fingerprint: 4b:e2:c9:91:96:65:0c:f4:0e:5a:93:92:a0:0a:fe:b2 +# SHA1 Fingerprint: 8c:f4:27:fd:79:0c:3a:d1:66:06:8d:e8:1e:57:ef:bb:93:22:72:d4 +# SHA256 Fingerprint: 43:df:57:74:b0:3e:7f:ef:5f:e4:0d:93:1a:7b:ed:f1:bb:2e:6b:42:73:8c:4e:6d:38:41:10:3d:3a:a7:f3:39 +-----BEGIN CERTIFICATE----- +MIIEPjCCAyagAwIBAgIESlOMKDANBgkqhkiG9w0BAQsFADCBvjELMAkGA1UEBhMC +VVMxFjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50 +cnVzdC5uZXQvbGVnYWwtdGVybXMxOTA3BgNVBAsTMChjKSAyMDA5IEVudHJ1c3Qs +IEluYy4gLSBmb3IgYXV0aG9yaXplZCB1c2Ugb25seTEyMDAGA1UEAxMpRW50cnVz +dCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzIwHhcNMDkwNzA3MTcy +NTU0WhcNMzAxMjA3MTc1NTU0WjCBvjELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUVu +dHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVnYWwt +dGVybXMxOTA3BgNVBAsTMChjKSAyMDA5IEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0 +aG9yaXplZCB1c2Ugb25seTEyMDAGA1UEAxMpRW50cnVzdCBSb290IENlcnRpZmlj +YXRpb24gQXV0aG9yaXR5IC0gRzIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK +AoIBAQC6hLZy254Ma+KZ6TABp3bqMriVQRrJ2mFOWHLP/vaCeb9zYQYKpSfYs1/T +RU4cctZOMvJyig/3gxnQaoCAAEUesMfnmr8SVycco2gvCoe9amsOXmXzHHfV1IWN +cCG0szLni6LVhjkCsbjSR87kyUnEO6fe+1R9V77w6G7CebI6C1XiUJgWMhNcL3hW +wcKUs/Ja5CeanyTXxuzQmyWC48zCxEXFjJd6BmsqEZ+pCm5IO2/b1BEZQvePB7/1 +U1+cPvQXLOZprE4yTGJ36rfo5bs0vBmLrpxR57d+tVOxMyLlbc9wPBr64ptntoP0 +jaWvYkxN4FisZDQSA/i2jZRjJKRxAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAP +BgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqciZ60B7vfec7aVHUbI2fkBJmqzAN +BgkqhkiG9w0BAQsFAAOCAQEAeZ8dlsa2eT8ijYfThwMEYGprmi5ZiXMRrEPR9RP/ +jTkrwPK9T3CMqS/qF8QLVJ7UG5aYMzyorWKiAHarWWluBh1+xLlEjZivEtRh2woZ +Rkfz6/djwUAFQKXSt/S1mja/qYh2iARVBCuch38aNzx+LaUa2NSJXsq9rD1s2G2v +1fN2D807iDginWyTmsQ9v4IbZT+mD12q/OWyFcq1rca8PdCE6OoGcrBNOTJ4vz4R +nAuknZoh8/CbCzB428Hch0P+vGOaysXCHMnHjf87ElgI5rY97HosTvuDls4MPGmH +VHOkc8KT/1EQrBVUAdj8BbGJoX90g5pJ19xOe4pIb4tF9g== +-----END CERTIFICATE----- + +# Issuer: CN=Entrust Root Certification Authority - EC1 O=Entrust, Inc. OU=See www.entrust.net/legal-terms/(c) 2012 Entrust, Inc. - for authorized use only +# Subject: CN=Entrust Root Certification Authority - EC1 O=Entrust, Inc. OU=See www.entrust.net/legal-terms/(c) 2012 Entrust, Inc. - for authorized use only +# Label: "Entrust Root Certification Authority - EC1" +# Serial: 51543124481930649114116133369 +# MD5 Fingerprint: b6:7e:1d:f0:58:c5:49:6c:24:3b:3d:ed:98:18:ed:bc +# SHA1 Fingerprint: 20:d8:06:40:df:9b:25:f5:12:25:3a:11:ea:f7:59:8a:eb:14:b5:47 +# SHA256 Fingerprint: 02:ed:0e:b2:8c:14:da:45:16:5c:56:67:91:70:0d:64:51:d7:fb:56:f0:b2:ab:1d:3b:8e:b0:70:e5:6e:df:f5 +-----BEGIN CERTIFICATE----- +MIIC+TCCAoCgAwIBAgINAKaLeSkAAAAAUNCR+TAKBggqhkjOPQQDAzCBvzELMAkG +A1UEBhMCVVMxFjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3 +d3cuZW50cnVzdC5uZXQvbGVnYWwtdGVybXMxOTA3BgNVBAsTMChjKSAyMDEyIEVu +dHJ1c3QsIEluYy4gLSBmb3IgYXV0aG9yaXplZCB1c2Ugb25seTEzMDEGA1UEAxMq +RW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRUMxMB4XDTEy +MTIxODE1MjUzNloXDTM3MTIxODE1NTUzNlowgb8xCzAJBgNVBAYTAlVTMRYwFAYD +VQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQLEx9TZWUgd3d3LmVudHJ1c3QubmV0 +L2xlZ2FsLXRlcm1zMTkwNwYDVQQLEzAoYykgMjAxMiBFbnRydXN0LCBJbmMuIC0g +Zm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxMzAxBgNVBAMTKkVudHJ1c3QgUm9vdCBD +ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEVDMTB2MBAGByqGSM49AgEGBSuBBAAi +A2IABIQTydC6bUF74mzQ61VfZgIaJPRbiWlH47jCffHyAsWfoPZb1YsGGYZPUxBt +ByQnoaD41UcZYUx9ypMn6nQM72+WCf5j7HBdNq1nd67JnXxVRDqiY1Ef9eNi1KlH +Bz7MIKNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0O +BBYEFLdj5xrdjekIplWDpOBqUEFlEUJJMAoGCCqGSM49BAMDA2cAMGQCMGF52OVC +R98crlOZF7ZvHH3hvxGU0QOIdeSNiaSKd0bebWHvAvX7td/M/k7//qnmpwIwW5nX +hTcGtXsI/esni0qU+eH6p44mCOh8kmhtc9hvJqwhAriZtyZBWyVgrtBIGu4G +-----END CERTIFICATE----- + +# Issuer: CN=CFCA EV ROOT O=China Financial Certification Authority +# Subject: CN=CFCA EV ROOT O=China Financial Certification Authority +# Label: "CFCA EV ROOT" +# Serial: 407555286 +# MD5 Fingerprint: 74:e1:b6:ed:26:7a:7a:44:30:33:94:ab:7b:27:81:30 +# SHA1 Fingerprint: e2:b8:29:4b:55:84:ab:6b:58:c2:90:46:6c:ac:3f:b8:39:8f:84:83 +# SHA256 Fingerprint: 5c:c3:d7:8e:4e:1d:5e:45:54:7a:04:e6:87:3e:64:f9:0c:f9:53:6d:1c:cc:2e:f8:00:f3:55:c4:c5:fd:70:fd +-----BEGIN CERTIFICATE----- +MIIFjTCCA3WgAwIBAgIEGErM1jANBgkqhkiG9w0BAQsFADBWMQswCQYDVQQGEwJD +TjEwMC4GA1UECgwnQ2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9y +aXR5MRUwEwYDVQQDDAxDRkNBIEVWIFJPT1QwHhcNMTIwODA4MDMwNzAxWhcNMjkx +MjMxMDMwNzAxWjBWMQswCQYDVQQGEwJDTjEwMC4GA1UECgwnQ2hpbmEgRmluYW5j +aWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRUwEwYDVQQDDAxDRkNBIEVWIFJP +T1QwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDXXWvNED8fBVnVBU03 +sQ7smCuOFR36k0sXgiFxEFLXUWRwFsJVaU2OFW2fvwwbwuCjZ9YMrM8irq93VCpL +TIpTUnrD7i7es3ElweldPe6hL6P3KjzJIx1qqx2hp/Hz7KDVRM8Vz3IvHWOX6Jn5 +/ZOkVIBMUtRSqy5J35DNuF++P96hyk0g1CXohClTt7GIH//62pCfCqktQT+x8Rgp +7hZZLDRJGqgG16iI0gNyejLi6mhNbiyWZXvKWfry4t3uMCz7zEasxGPrb382KzRz +EpR/38wmnvFyXVBlWY9ps4deMm/DGIq1lY+wejfeWkU7xzbh72fROdOXW3NiGUgt +hxwG+3SYIElz8AXSG7Ggo7cbcNOIabla1jj0Ytwli3i/+Oh+uFzJlU9fpy25IGvP +a931DfSCt/SyZi4QKPaXWnuWFo8BGS1sbn85WAZkgwGDg8NNkt0yxoekN+kWzqot +aK8KgWU6cMGbrU1tVMoqLUuFG7OA5nBFDWteNfB/O7ic5ARwiRIlk9oKmSJgamNg +TnYGmE69g60dWIolhdLHZR4tjsbftsbhf4oEIRUpdPA+nJCdDC7xij5aqgwJHsfV +PKPtl8MeNPo4+QgO48BdK4PRVmrJtqhUUy54Mmc9gn900PvhtgVguXDbjgv5E1hv +cWAQUhC5wUEJ73IfZzF4/5YFjQIDAQABo2MwYTAfBgNVHSMEGDAWgBTj/i39KNAL +tbq2osS/BqoFjJP7LzAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAd +BgNVHQ4EFgQU4/4t/SjQC7W6tqLEvwaqBYyT+y8wDQYJKoZIhvcNAQELBQADggIB +ACXGumvrh8vegjmWPfBEp2uEcwPenStPuiB/vHiyz5ewG5zz13ku9Ui20vsXiObT +ej/tUxPQ4i9qecsAIyjmHjdXNYmEwnZPNDatZ8POQQaIxffu2Bq41gt/UP+TqhdL +jOztUmCypAbqTuv0axn96/Ua4CUqmtzHQTb3yHQFhDmVOdYLO6Qn+gjYXB74BGBS +ESgoA//vU2YApUo0FmZ8/Qmkrp5nGm9BC2sGE5uPhnEFtC+NiWYzKXZUmhH4J/qy +P5Hgzg0b8zAarb8iXRvTvyUFTeGSGn+ZnzxEk8rUQElsgIfXBDrDMlI1Dlb4pd19 +xIsNER9Tyx6yF7Zod1rg1MvIB671Oi6ON7fQAUtDKXeMOZePglr4UeWJoBjnaH9d +Ci77o0cOPaYjesYBx4/IXr9tgFa+iiS6M+qf4TIRnvHST4D2G0CvOJ4RUHlzEhLN +5mydLIhyPDCBBpEi6lmt2hkuIsKNuYyH4Ga8cyNfIWRjgEj1oDwYPZTISEEdQLpe +/v5WOaHIz16eGWRGENoXkbcFgKyLmZJ956LYBws2J+dIeWCKw9cTXPhyQN9Ky8+Z +AAoACxGV2lZFA4gKn2fQ1XmxqI1AbQ3CekD6819kR5LLU7m7Wc5P/dAVUwHY3+vZ +5nbv0CO7O6l5s9UCKc2Jo5YPSjXnTkLAdc0Hz+Ys63su +-----END CERTIFICATE----- + +# Issuer: CN=OISTE WISeKey Global Root GB CA O=WISeKey OU=OISTE Foundation Endorsed +# Subject: CN=OISTE WISeKey Global Root GB CA O=WISeKey OU=OISTE Foundation Endorsed +# Label: "OISTE WISeKey Global Root GB CA" +# Serial: 157768595616588414422159278966750757568 +# MD5 Fingerprint: a4:eb:b9:61:28:2e:b7:2f:98:b0:35:26:90:99:51:1d +# SHA1 Fingerprint: 0f:f9:40:76:18:d3:d7:6a:4b:98:f0:a8:35:9e:0c:fd:27:ac:cc:ed +# SHA256 Fingerprint: 6b:9c:08:e8:6e:b0:f7:67:cf:ad:65:cd:98:b6:21:49:e5:49:4a:67:f5:84:5e:7b:d1:ed:01:9f:27:b8:6b:d6 +-----BEGIN CERTIFICATE----- +MIIDtTCCAp2gAwIBAgIQdrEgUnTwhYdGs/gjGvbCwDANBgkqhkiG9w0BAQsFADBt +MQswCQYDVQQGEwJDSDEQMA4GA1UEChMHV0lTZUtleTEiMCAGA1UECxMZT0lTVEUg +Rm91bmRhdGlvbiBFbmRvcnNlZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBHbG9i +YWwgUm9vdCBHQiBDQTAeFw0xNDEyMDExNTAwMzJaFw0zOTEyMDExNTEwMzFaMG0x +CzAJBgNVBAYTAkNIMRAwDgYDVQQKEwdXSVNlS2V5MSIwIAYDVQQLExlPSVNURSBG +b3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5IEdsb2Jh +bCBSb290IEdCIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2Be3 +HEokKtaXscriHvt9OO+Y9bI5mE4nuBFde9IllIiCFSZqGzG7qFshISvYD06fWvGx +WuR51jIjK+FTzJlFXHtPrby/h0oLS5daqPZI7H17Dc0hBt+eFf1Biki3IPShehtX +1F1Q/7pn2COZH8g/497/b1t3sWtuuMlk9+HKQUYOKXHQuSP8yYFfTvdv37+ErXNk +u7dCjmn21HYdfp2nuFeKUWdy19SouJVUQHMD9ur06/4oQnc/nSMbsrY9gBQHTC5P +99UKFg29ZkM3fiNDecNAhvVMKdqOmq0NpQSHiB6F4+lT1ZvIiwNjeOvgGUpuuy9r +M2RYk61pv48b74JIxwIDAQABo1EwTzALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUw +AwEB/zAdBgNVHQ4EFgQUNQ/INmNe4qPs+TtmFc5RUuORmj0wEAYJKwYBBAGCNxUB +BAMCAQAwDQYJKoZIhvcNAQELBQADggEBAEBM+4eymYGQfp3FsLAmzYh7KzKNbrgh +cViXfa43FK8+5/ea4n32cZiZBKpDdHij40lhPnOMTZTg+XHEthYOU3gf1qKHLwI5 +gSk8rxWYITD+KJAAjNHhy/peyP34EEY7onhCkRd0VQreUGdNZtGn//3ZwLWoo4rO +ZvUPQ82nK1d7Y0Zqqi5S2PTt4W2tKZB4SLrhI6qjiey1q5bAtEuiHZeeevJuQHHf +aPFlTc58Bd9TZaml8LGXBHAVRgOY1NK/VLSgWH1Sb9pWJmLU2NuJMW8c8CLC02Ic +Nc1MaRVUGpCY3useX8p3x8uOPUNpnJpY0CQ73xtAln41rYHHTnG6iBM= +-----END CERTIFICATE----- + +# Issuer: CN=SZAFIR ROOT CA2 O=Krajowa Izba Rozliczeniowa S.A. +# Subject: CN=SZAFIR ROOT CA2 O=Krajowa Izba Rozliczeniowa S.A. +# Label: "SZAFIR ROOT CA2" +# Serial: 357043034767186914217277344587386743377558296292 +# MD5 Fingerprint: 11:64:c1:89:b0:24:b1:8c:b1:07:7e:89:9e:51:9e:99 +# SHA1 Fingerprint: e2:52:fa:95:3f:ed:db:24:60:bd:6e:28:f3:9c:cc:cf:5e:b3:3f:de +# SHA256 Fingerprint: a1:33:9d:33:28:1a:0b:56:e5:57:d3:d3:2b:1c:e7:f9:36:7e:b0:94:bd:5f:a7:2a:7e:50:04:c8:de:d7:ca:fe +-----BEGIN CERTIFICATE----- +MIIDcjCCAlqgAwIBAgIUPopdB+xV0jLVt+O2XwHrLdzk1uQwDQYJKoZIhvcNAQEL +BQAwUTELMAkGA1UEBhMCUEwxKDAmBgNVBAoMH0tyYWpvd2EgSXpiYSBSb3psaWN6 +ZW5pb3dhIFMuQS4xGDAWBgNVBAMMD1NaQUZJUiBST09UIENBMjAeFw0xNTEwMTkw +NzQzMzBaFw0zNTEwMTkwNzQzMzBaMFExCzAJBgNVBAYTAlBMMSgwJgYDVQQKDB9L +cmFqb3dhIEl6YmEgUm96bGljemVuaW93YSBTLkEuMRgwFgYDVQQDDA9TWkFGSVIg +Uk9PVCBDQTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC3vD5QqEvN +QLXOYeeWyrSh2gwisPq1e3YAd4wLz32ohswmUeQgPYUM1ljj5/QqGJ3a0a4m7utT +3PSQ1hNKDJA8w/Ta0o4NkjrcsbH/ON7Dui1fgLkCvUqdGw+0w8LBZwPd3BucPbOw +3gAeqDRHu5rr/gsUvTaE2g0gv/pby6kWIK05YO4vdbbnl5z5Pv1+TW9NL++IDWr6 +3fE9biCloBK0TXC5ztdyO4mTp4CEHCdJckm1/zuVnsHMyAHs6A6KCpbns6aH5db5 +BSsNl0BwPLqsdVqc1U2dAgrSS5tmS0YHF2Wtn2yIANwiieDhZNRnvDF5YTy7ykHN +XGoAyDw4jlivAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQD +AgEGMB0GA1UdDgQWBBQuFqlKGLXLzPVvUPMjX/hd56zwyDANBgkqhkiG9w0BAQsF +AAOCAQEAtXP4A9xZWx126aMqe5Aosk3AM0+qmrHUuOQn/6mWmc5G4G18TKI4pAZw +8PRBEew/R40/cof5O/2kbytTAOD/OblqBw7rHRz2onKQy4I9EYKL0rufKq8h5mOG +nXkZ7/e7DDWQw4rtTw/1zBLZpD67oPwglV9PJi8RI4NOdQcPv5vRtB3pEAT+ymCP +oky4rc/hkA/NrgrHXXu3UNLUYfrVFdvXn4dRVOul4+vJhaAlIDf7js4MNIThPIGy +d05DpYhfhmehPea0XGG2Ptv+tyjFogeutcrKjSoS75ftwjCkySp6+/NNIxuZMzSg +LvWpCz/UXeHPhJ/iGcJfitYgHuNztw== +-----END CERTIFICATE----- + +# Issuer: CN=Certum Trusted Network CA 2 O=Unizeto Technologies S.A. OU=Certum Certification Authority +# Subject: CN=Certum Trusted Network CA 2 O=Unizeto Technologies S.A. OU=Certum Certification Authority +# Label: "Certum Trusted Network CA 2" +# Serial: 44979900017204383099463764357512596969 +# MD5 Fingerprint: 6d:46:9e:d9:25:6d:08:23:5b:5e:74:7d:1e:27:db:f2 +# SHA1 Fingerprint: d3:dd:48:3e:2b:bf:4c:05:e8:af:10:f5:fa:76:26:cf:d3:dc:30:92 +# SHA256 Fingerprint: b6:76:f2:ed:da:e8:77:5c:d3:6c:b0:f6:3c:d1:d4:60:39:61:f4:9e:62:65:ba:01:3a:2f:03:07:b6:d0:b8:04 +-----BEGIN CERTIFICATE----- +MIIF0jCCA7qgAwIBAgIQIdbQSk8lD8kyN/yqXhKN6TANBgkqhkiG9w0BAQ0FADCB +gDELMAkGA1UEBhMCUEwxIjAgBgNVBAoTGVVuaXpldG8gVGVjaG5vbG9naWVzIFMu +QS4xJzAlBgNVBAsTHkNlcnR1bSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEkMCIG +A1UEAxMbQ2VydHVtIFRydXN0ZWQgTmV0d29yayBDQSAyMCIYDzIwMTExMDA2MDgz +OTU2WhgPMjA0NjEwMDYwODM5NTZaMIGAMQswCQYDVQQGEwJQTDEiMCAGA1UEChMZ +VW5pemV0byBUZWNobm9sb2dpZXMgUy5BLjEnMCUGA1UECxMeQ2VydHVtIENlcnRp +ZmljYXRpb24gQXV0aG9yaXR5MSQwIgYDVQQDExtDZXJ0dW0gVHJ1c3RlZCBOZXR3 +b3JrIENBIDIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC9+Xj45tWA +DGSdhhuWZGc/IjoedQF97/tcZ4zJzFxrqZHmuULlIEub2pt7uZld2ZuAS9eEQCsn +0+i6MLs+CRqnSZXvK0AkwpfHp+6bJe+oCgCXhVqqndwpyeI1B+twTUrWwbNWuKFB +OJvR+zF/j+Bf4bE/D44WSWDXBo0Y+aomEKsq09DRZ40bRr5HMNUuctHFY9rnY3lE +fktjJImGLjQ/KUxSiyqnwOKRKIm5wFv5HdnnJ63/mgKXwcZQkpsCLL2puTRZCr+E +Sv/f/rOf69me4Jgj7KZrdxYq28ytOxykh9xGc14ZYmhFV+SQgkK7QtbwYeDBoz1m +o130GO6IyY0XRSmZMnUCMe4pJshrAua1YkV/NxVaI2iJ1D7eTiew8EAMvE0Xy02i +sx7QBlrd9pPPV3WZ9fqGGmd4s7+W/jTcvedSVuWz5XV710GRBdxdaeOVDUO5/IOW +OZV7bIBaTxNyxtd9KXpEulKkKtVBRgkg/iKgtlswjbyJDNXXcPiHUv3a76xRLgez +Tv7QCdpw75j6VuZt27VXS9zlLCUVyJ4ueE742pyehizKV/Ma5ciSixqClnrDvFAS +adgOWkaLOusm+iPJtrCBvkIApPjW/jAux9JG9uWOdf3yzLnQh1vMBhBgu4M1t15n +3kfsmUjxpKEV/q2MYo45VU85FrmxY53/twIDAQABo0IwQDAPBgNVHRMBAf8EBTAD +AQH/MB0GA1UdDgQWBBS2oVQ5AsOgP46KvPrU+Bym0ToO/TAOBgNVHQ8BAf8EBAMC +AQYwDQYJKoZIhvcNAQENBQADggIBAHGlDs7k6b8/ONWJWsQCYftMxRQXLYtPU2sQ +F/xlhMcQSZDe28cmk4gmb3DWAl45oPePq5a1pRNcgRRtDoGCERuKTsZPpd1iHkTf +CVn0W3cLN+mLIMb4Ck4uWBzrM9DPhmDJ2vuAL55MYIR4PSFk1vtBHxgP58l1cb29 +XN40hz5BsA72udY/CROWFC/emh1auVbONTqwX3BNXuMp8SMoclm2q8KMZiYcdywm +djWLKKdpoPk79SPdhRB0yZADVpHnr7pH1BKXESLjokmUbOe3lEu6LaTaM4tMpkT/ +WjzGHWTYtTHkpjx6qFcL2+1hGsvxznN3Y6SHb0xRONbkX8eftoEq5IVIeVheO/jb +AoJnwTnbw3RLPTYe+SmTiGhbqEQZIfCn6IENLOiTNrQ3ssqwGyZ6miUfmpqAnksq +P/ujmv5zMnHCnsZy4YpoJ/HkD7TETKVhk/iXEAcqMCWpuchxuO9ozC1+9eB+D4Ko +b7a6bINDd82Kkhehnlt4Fj1F4jNy3eFmypnTycUm/Q1oBEauttmbjL4ZvrHG8hnj +XALKLNhvSgfZyTXaQHXyxKcZb55CEJh15pWLYLztxRLXis7VmFxWlgPF7ncGNf/P +5O4/E2Hu29othfDNrp2yGAlFw5Khchf8R7agCyzxxN5DaAhqXzvwdmP7zAYspsbi +DrW5viSP +-----END CERTIFICATE----- + +# Issuer: CN=Hellenic Academic and Research Institutions RootCA 2015 O=Hellenic Academic and Research Institutions Cert. Authority +# Subject: CN=Hellenic Academic and Research Institutions RootCA 2015 O=Hellenic Academic and Research Institutions Cert. Authority +# Label: "Hellenic Academic and Research Institutions RootCA 2015" +# Serial: 0 +# MD5 Fingerprint: ca:ff:e2:db:03:d9:cb:4b:e9:0f:ad:84:fd:7b:18:ce +# SHA1 Fingerprint: 01:0c:06:95:a6:98:19:14:ff:bf:5f:c6:b0:b6:95:ea:29:e9:12:a6 +# SHA256 Fingerprint: a0:40:92:9a:02:ce:53:b4:ac:f4:f2:ff:c6:98:1c:e4:49:6f:75:5e:6d:45:fe:0b:2a:69:2b:cd:52:52:3f:36 +-----BEGIN CERTIFICATE----- +MIIGCzCCA/OgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBpjELMAkGA1UEBhMCR1Ix +DzANBgNVBAcTBkF0aGVuczFEMEIGA1UEChM7SGVsbGVuaWMgQWNhZGVtaWMgYW5k +IFJlc2VhcmNoIEluc3RpdHV0aW9ucyBDZXJ0LiBBdXRob3JpdHkxQDA+BgNVBAMT +N0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgUm9v +dENBIDIwMTUwHhcNMTUwNzA3MTAxMTIxWhcNNDAwNjMwMTAxMTIxWjCBpjELMAkG +A1UEBhMCR1IxDzANBgNVBAcTBkF0aGVuczFEMEIGA1UEChM7SGVsbGVuaWMgQWNh +ZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9ucyBDZXJ0LiBBdXRob3JpdHkx +QDA+BgNVBAMTN0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1 +dGlvbnMgUm9vdENBIDIwMTUwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC +AQDC+Kk/G4n8PDwEXT2QNrCROnk8ZlrvbTkBSRq0t89/TSNTt5AA4xMqKKYx8ZEA +4yjsriFBzh/a/X0SWwGDD7mwX5nh8hKDgE0GPt+sr+ehiGsxr/CL0BgzuNtFajT0 +AoAkKAoCFZVedioNmToUW/bLy1O8E00BiDeUJRtCvCLYjqOWXjrZMts+6PAQZe10 +4S+nfK8nNLspfZu2zwnI5dMK/IhlZXQK3HMcXM1AsRzUtoSMTFDPaI6oWa7CJ06C +ojXdFPQf/7J31Ycvqm59JCfnxssm5uX+Zwdj2EUN3TpZZTlYepKZcj2chF6IIbjV +9Cz82XBST3i4vTwri5WY9bPRaM8gFH5MXF/ni+X1NYEZN9cRCLdmvtNKzoNXADrD +gfgXy5I2XdGj2HUb4Ysn6npIQf1FGQatJ5lOwXBH3bWfgVMS5bGMSF0xQxfjjMZ6 +Y5ZLKTBOhE5iGV48zpeQpX8B653g+IuJ3SWYPZK2fu/Z8VFRfS0myGlZYeCsargq +NhEEelC9MoS+L9xy1dcdFkfkR2YgP/SWxa+OAXqlD3pk9Q0Yh9muiNX6hME6wGko +LfINaFGq46V3xqSQDqE3izEjR8EJCOtu93ib14L8hCCZSRm2Ekax+0VVFqmjZayc +Bw/qa9wfLgZy7IaIEuQt218FL+TwA9MmM+eAws1CoRc0CwIDAQABo0IwQDAPBgNV +HRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUcRVnyMjJvXVd +ctA4GGqd83EkVAswDQYJKoZIhvcNAQELBQADggIBAHW7bVRLqhBYRjTyYtcWNl0I +XtVsyIe9tC5G8jH4fOpCtZMWVdyhDBKg2mF+D1hYc2Ryx+hFjtyp8iY/xnmMsVMI +M4GwVhO+5lFc2JsKT0ucVlMC6U/2DWDqTUJV6HwbISHTGzrMd/K4kPFox/la/vot +9L/J9UUbzjgQKjeKeaO04wlshYaT/4mWJ3iBj2fjRnRUjtkNaeJK9E10A/+yd+2V +Z5fkscWrv2oj6NSU4kQoYsRL4vDY4ilrGnB+JGGTe08DMiUNRSQrlrRGar9KC/ea +j8GsGsVn82800vpzY4zvFrCopEYq+OsS7HK07/grfoxSwIuEVPkvPuNVqNxmsdnh +X9izjFk0WaSrT2y7HxjbdavYy5LNlDhhDgcGH0tGEPEVvo2FXDtKK4F5D7Rpn0lQ +l033DlZdwJVqwjbDG2jJ9SrcR5q+ss7FJej6A7na+RZukYT1HCjI/CbM1xyQVqdf +bzoEvM14iQuODy+jqk+iGxI9FghAD/FGTNeqewjBCvVtJ94Cj8rDtSvK6evIIVM4 +pcw72Hc3MKJP2W/R8kCtQXoXxdZKNYm3QdV8hn9VTYNKpXMgwDqvkPGaJI7ZjnHK +e7iG2rKPmT4dEw0SEe7Uq/DpFXYC5ODfqiAeW2GFZECpkJcNrVPSWh2HagCXZWK0 +vm9qp/UsQu0yrbYhnr68 +-----END CERTIFICATE----- + +# Issuer: CN=Hellenic Academic and Research Institutions ECC RootCA 2015 O=Hellenic Academic and Research Institutions Cert. Authority +# Subject: CN=Hellenic Academic and Research Institutions ECC RootCA 2015 O=Hellenic Academic and Research Institutions Cert. Authority +# Label: "Hellenic Academic and Research Institutions ECC RootCA 2015" +# Serial: 0 +# MD5 Fingerprint: 81:e5:b4:17:eb:c2:f5:e1:4b:0d:41:7b:49:92:fe:ef +# SHA1 Fingerprint: 9f:f1:71:8d:92:d5:9a:f3:7d:74:97:b4:bc:6f:84:68:0b:ba:b6:66 +# SHA256 Fingerprint: 44:b5:45:aa:8a:25:e6:5a:73:ca:15:dc:27:fc:36:d2:4c:1c:b9:95:3a:06:65:39:b1:15:82:dc:48:7b:48:33 +-----BEGIN CERTIFICATE----- +MIICwzCCAkqgAwIBAgIBADAKBggqhkjOPQQDAjCBqjELMAkGA1UEBhMCR1IxDzAN +BgNVBAcTBkF0aGVuczFEMEIGA1UEChM7SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJl +c2VhcmNoIEluc3RpdHV0aW9ucyBDZXJ0LiBBdXRob3JpdHkxRDBCBgNVBAMTO0hl +bGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgRUNDIFJv +b3RDQSAyMDE1MB4XDTE1MDcwNzEwMzcxMloXDTQwMDYzMDEwMzcxMlowgaoxCzAJ +BgNVBAYTAkdSMQ8wDQYDVQQHEwZBdGhlbnMxRDBCBgNVBAoTO0hlbGxlbmljIEFj +YWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ2VydC4gQXV0aG9yaXR5 +MUQwQgYDVQQDEztIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0 +dXRpb25zIEVDQyBSb290Q0EgMjAxNTB2MBAGByqGSM49AgEGBSuBBAAiA2IABJKg +QehLgoRc4vgxEZmGZE4JJS+dQS8KrjVPdJWyUWRrjWvmP3CV8AVER6ZyOFB2lQJa +jq4onvktTpnvLEhvTCUp6NFxW98dwXU3tNf6e3pCnGoKVlp8aQuqgAkkbH7BRqNC +MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFLQi +C4KZJAEOnLvkDv2/+5cgk5kqMAoGCCqGSM49BAMCA2cAMGQCMGfOFmI4oqxiRaep +lSTAGiecMjvAwNW6qef4BENThe5SId6d9SWDPp5YSy/XZxMOIQIwBeF1Ad5o7Sof +TUwJCA3sS61kFyjndc5FZXIhF8siQQ6ME5g4mlRtm8rifOoCWCKR +-----END CERTIFICATE----- + +# Issuer: CN=ISRG Root X1 O=Internet Security Research Group +# Subject: CN=ISRG Root X1 O=Internet Security Research Group +# Label: "ISRG Root X1" +# Serial: 172886928669790476064670243504169061120 +# MD5 Fingerprint: 0c:d2:f9:e0:da:17:73:e9:ed:86:4d:a5:e3:70:e7:4e +# SHA1 Fingerprint: ca:bd:2a:79:a1:07:6a:31:f2:1d:25:36:35:cb:03:9d:43:29:a5:e8 +# SHA256 Fingerprint: 96:bc:ec:06:26:49:76:f3:74:60:77:9a:cf:28:c5:a7:cf:e8:a3:c0:aa:e1:1a:8f:fc:ee:05:c0:bd:df:08:c6 +-----BEGIN CERTIFICATE----- +MIIFazCCA1OgAwIBAgIRAIIQz7DSQONZRGPgu2OCiwAwDQYJKoZIhvcNAQELBQAw +TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh +cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMTUwNjA0MTEwNDM4 +WhcNMzUwNjA0MTEwNDM4WjBPMQswCQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJu +ZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBY +MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK3oJHP0FDfzm54rVygc +h77ct984kIxuPOZXoHj3dcKi/vVqbvYATyjb3miGbESTtrFj/RQSa78f0uoxmyF+ +0TM8ukj13Xnfs7j/EvEhmkvBioZxaUpmZmyPfjxwv60pIgbz5MDmgK7iS4+3mX6U +A5/TR5d8mUgjU+g4rk8Kb4Mu0UlXjIB0ttov0DiNewNwIRt18jA8+o+u3dpjq+sW +T8KOEUt+zwvo/7V3LvSye0rgTBIlDHCNAymg4VMk7BPZ7hm/ELNKjD+Jo2FR3qyH +B5T0Y3HsLuJvW5iB4YlcNHlsdu87kGJ55tukmi8mxdAQ4Q7e2RCOFvu396j3x+UC +B5iPNgiV5+I3lg02dZ77DnKxHZu8A/lJBdiB3QW0KtZB6awBdpUKD9jf1b0SHzUv +KBds0pjBqAlkd25HN7rOrFleaJ1/ctaJxQZBKT5ZPt0m9STJEadao0xAH0ahmbWn +OlFuhjuefXKnEgV4We0+UXgVCwOPjdAvBbI+e0ocS3MFEvzG6uBQE3xDk3SzynTn +jh8BCNAw1FtxNrQHusEwMFxIt4I7mKZ9YIqioymCzLq9gwQbooMDQaHWBfEbwrbw +qHyGO0aoSCqI3Haadr8faqU9GY/rOPNk3sgrDQoo//fb4hVC1CLQJ13hef4Y53CI +rU7m2Ys6xt0nUW7/vGT1M0NPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV +HRMBAf8EBTADAQH/MB0GA1UdDgQWBBR5tFnme7bl5AFzgAiIyBpY9umbbjANBgkq +hkiG9w0BAQsFAAOCAgEAVR9YqbyyqFDQDLHYGmkgJykIrGF1XIpu+ILlaS/V9lZL +ubhzEFnTIZd+50xx+7LSYK05qAvqFyFWhfFQDlnrzuBZ6brJFe+GnY+EgPbk6ZGQ +3BebYhtF8GaV0nxvwuo77x/Py9auJ/GpsMiu/X1+mvoiBOv/2X/qkSsisRcOj/KK +NFtY2PwByVS5uCbMiogziUwthDyC3+6WVwW6LLv3xLfHTjuCvjHIInNzktHCgKQ5 +ORAzI4JMPJ+GslWYHb4phowim57iaztXOoJwTdwJx4nLCgdNbOhdjsnvzqvHu7Ur +TkXWStAmzOVyyghqpZXjFaH3pO3JLF+l+/+sKAIuvtd7u+Nxe5AW0wdeRlN8NwdC +jNPElpzVmbUq4JUagEiuTDkHzsxHpFKVK7q4+63SM1N95R1NbdWhscdCb+ZAJzVc +oyi3B43njTOQ5yOf+1CceWxG1bQVs5ZufpsMljq4Ui0/1lvh+wjChP4kqKOJ2qxq +4RgqsahDYVvTH9w7jXbyLeiNdd8XM2w9U/t7y0Ff/9yi0GE44Za4rF2LN9d11TPA +mRGunUHBcnWEvgJBQl9nJEiU0Zsnvgc/ubhPgXRR4Xq37Z0j4r7g1SgEEzwxA57d +emyPxgcYxn/eR44/KJ4EBs+lVDR3veyJm+kXQ99b21/+jh5Xos1AnX5iItreGCc= +-----END CERTIFICATE----- + +# Issuer: O=FNMT-RCM OU=AC RAIZ FNMT-RCM +# Subject: O=FNMT-RCM OU=AC RAIZ FNMT-RCM +# Label: "AC RAIZ FNMT-RCM" +# Serial: 485876308206448804701554682760554759 +# MD5 Fingerprint: e2:09:04:b4:d3:bd:d1:a0:14:fd:1a:d2:47:c4:57:1d +# SHA1 Fingerprint: ec:50:35:07:b2:15:c4:95:62:19:e2:a8:9a:5b:42:99:2c:4c:2c:20 +# SHA256 Fingerprint: eb:c5:57:0c:29:01:8c:4d:67:b1:aa:12:7b:af:12:f7:03:b4:61:1e:bc:17:b7:da:b5:57:38:94:17:9b:93:fa +-----BEGIN CERTIFICATE----- +MIIFgzCCA2ugAwIBAgIPXZONMGc2yAYdGsdUhGkHMA0GCSqGSIb3DQEBCwUAMDsx +CzAJBgNVBAYTAkVTMREwDwYDVQQKDAhGTk1ULVJDTTEZMBcGA1UECwwQQUMgUkFJ +WiBGTk1ULVJDTTAeFw0wODEwMjkxNTU5NTZaFw0zMDAxMDEwMDAwMDBaMDsxCzAJ +BgNVBAYTAkVTMREwDwYDVQQKDAhGTk1ULVJDTTEZMBcGA1UECwwQQUMgUkFJWiBG +Tk1ULVJDTTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALpxgHpMhm5/ +yBNtwMZ9HACXjywMI7sQmkCpGreHiPibVmr75nuOi5KOpyVdWRHbNi63URcfqQgf +BBckWKo3Shjf5TnUV/3XwSyRAZHiItQDwFj8d0fsjz50Q7qsNI1NOHZnjrDIbzAz +WHFctPVrbtQBULgTfmxKo0nRIBnuvMApGGWn3v7v3QqQIecaZ5JCEJhfTzC8PhxF +tBDXaEAUwED653cXeuYLj2VbPNmaUtu1vZ5Gzz3rkQUCwJaydkxNEJY7kvqcfw+Z +374jNUUeAlz+taibmSXaXvMiwzn15Cou08YfxGyqxRxqAQVKL9LFwag0Jl1mpdIC +IfkYtwb1TplvqKtMUejPUBjFd8g5CSxJkjKZqLsXF3mwWsXmo8RZZUc1g16p6DUL +mbvkzSDGm0oGObVo/CK67lWMK07q87Hj/LaZmtVC+nFNCM+HHmpxffnTtOmlcYF7 +wk5HlqX2doWjKI/pgG6BU6VtX7hI+cL5NqYuSf+4lsKMB7ObiFj86xsc3i1w4peS +MKGJ47xVqCfWS+2QrYv6YyVZLag13cqXM7zlzced0ezvXg5KkAYmY6252TUtB7p2 +ZSysV4999AeU14ECll2jB0nVetBX+RvnU0Z1qrB5QstocQjpYL05ac70r8NWQMet +UqIJ5G+GR4of6ygnXYMgrwTJbFaai0b1AgMBAAGjgYMwgYAwDwYDVR0TAQH/BAUw +AwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFPd9xf3E6Jobd2Sn9R2gzL+H +YJptMD4GA1UdIAQ3MDUwMwYEVR0gADArMCkGCCsGAQUFBwIBFh1odHRwOi8vd3d3 +LmNlcnQuZm5tdC5lcy9kcGNzLzANBgkqhkiG9w0BAQsFAAOCAgEAB5BK3/MjTvDD +nFFlm5wioooMhfNzKWtN/gHiqQxjAb8EZ6WdmF/9ARP67Jpi6Yb+tmLSbkyU+8B1 +RXxlDPiyN8+sD8+Nb/kZ94/sHvJwnvDKuO+3/3Y3dlv2bojzr2IyIpMNOmqOFGYM +LVN0V2Ue1bLdI4E7pWYjJ2cJj+F3qkPNZVEI7VFY/uY5+ctHhKQV8Xa7pO6kO8Rf +77IzlhEYt8llvhjho6Tc+hj507wTmzl6NLrTQfv6MooqtyuGC2mDOL7Nii4LcK2N +JpLuHvUBKwrZ1pebbuCoGRw6IYsMHkCtA+fdZn71uSANA+iW+YJF1DngoABd15jm +fZ5nc8OaKveri6E6FO80vFIOiZiaBECEHX5FaZNXzuvO+FB8TxxuBEOb+dY7Ixjp +6o7RTUaN8Tvkasq6+yO3m/qZASlaWFot4/nUbQ4mrcFuNLwy+AwF+mWj2zs3gyLp +1txyM/1d8iC9djwj2ij3+RvrWWTV3F9yfiD8zYm1kGdNYno/Tq0dwzn+evQoFt9B +9kiABdcPUXmsEKvU7ANm5mqwujGSQkBqvjrTcuFqN1W8rB2Vt2lh8kORdOag0wok +RqEIr9baRRmW1FMdW4R58MD3R++Lj8UGrp1MYp3/RgT408m2ECVAdf4WqslKYIYv +uu8wd+RU4riEmViAqhOLUTpPSPaLtrM= +-----END CERTIFICATE----- + +# Issuer: CN=Amazon Root CA 1 O=Amazon +# Subject: CN=Amazon Root CA 1 O=Amazon +# Label: "Amazon Root CA 1" +# Serial: 143266978916655856878034712317230054538369994 +# MD5 Fingerprint: 43:c6:bf:ae:ec:fe:ad:2f:18:c6:88:68:30:fc:c8:e6 +# SHA1 Fingerprint: 8d:a7:f9:65:ec:5e:fc:37:91:0f:1c:6e:59:fd:c1:cc:6a:6e:de:16 +# SHA256 Fingerprint: 8e:cd:e6:88:4f:3d:87:b1:12:5b:a3:1a:c3:fc:b1:3d:70:16:de:7f:57:cc:90:4f:e1:cb:97:c6:ae:98:19:6e +-----BEGIN CERTIFICATE----- +MIIDQTCCAimgAwIBAgITBmyfz5m/jAo54vB4ikPmljZbyjANBgkqhkiG9w0BAQsF +ADA5MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6 +b24gUm9vdCBDQSAxMB4XDTE1MDUyNjAwMDAwMFoXDTM4MDExNzAwMDAwMFowOTEL +MAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJv +b3QgQ0EgMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJ4gHHKeNXj +ca9HgFB0fW7Y14h29Jlo91ghYPl0hAEvrAIthtOgQ3pOsqTQNroBvo3bSMgHFzZM +9O6II8c+6zf1tRn4SWiw3te5djgdYZ6k/oI2peVKVuRF4fn9tBb6dNqcmzU5L/qw +IFAGbHrQgLKm+a/sRxmPUDgH3KKHOVj4utWp+UhnMJbulHheb4mjUcAwhmahRWa6 +VOujw5H5SNz/0egwLX0tdHA114gk957EWW67c4cX8jJGKLhD+rcdqsq08p8kDi1L +93FcXmn/6pUCyziKrlA4b9v7LWIbxcceVOF34GfID5yHI9Y/QCB/IIDEgEw+OyQm +jgSubJrIqg0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC +AYYwHQYDVR0OBBYEFIQYzIU07LwMlJQuCFmcx7IQTgoIMA0GCSqGSIb3DQEBCwUA +A4IBAQCY8jdaQZChGsV2USggNiMOruYou6r4lK5IpDB/G/wkjUu0yKGX9rbxenDI +U5PMCCjjmCXPI6T53iHTfIUJrU6adTrCC2qJeHZERxhlbI1Bjjt/msv0tadQ1wUs +N+gDS63pYaACbvXy8MWy7Vu33PqUXHeeE6V/Uq2V8viTO96LXFvKWlJbYK8U90vv +o/ufQJVtMVT8QtPHRh8jrdkPSHCa2XV4cdFyQzR1bldZwgJcJmApzyMZFo6IQ6XU +5MsI+yMRQ+hDKXJioaldXgjUkK642M4UwtBV8ob2xJNDd2ZhwLnoQdeXeGADbkpy +rqXRfboQnoZsG4q5WTP468SQvvG5 +-----END CERTIFICATE----- + +# Issuer: CN=Amazon Root CA 2 O=Amazon +# Subject: CN=Amazon Root CA 2 O=Amazon +# Label: "Amazon Root CA 2" +# Serial: 143266982885963551818349160658925006970653239 +# MD5 Fingerprint: c8:e5:8d:ce:a8:42:e2:7a:c0:2a:5c:7c:9e:26:bf:66 +# SHA1 Fingerprint: 5a:8c:ef:45:d7:a6:98:59:76:7a:8c:8b:44:96:b5:78:cf:47:4b:1a +# SHA256 Fingerprint: 1b:a5:b2:aa:8c:65:40:1a:82:96:01:18:f8:0b:ec:4f:62:30:4d:83:ce:c4:71:3a:19:c3:9c:01:1e:a4:6d:b4 +-----BEGIN CERTIFICATE----- +MIIFQTCCAymgAwIBAgITBmyf0pY1hp8KD+WGePhbJruKNzANBgkqhkiG9w0BAQwF +ADA5MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6 +b24gUm9vdCBDQSAyMB4XDTE1MDUyNjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTEL +MAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJv +b3QgQ0EgMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK2Wny2cSkxK +gXlRmeyKy2tgURO8TW0G/LAIjd0ZEGrHJgw12MBvIITplLGbhQPDW9tK6Mj4kHbZ +W0/jTOgGNk3Mmqw9DJArktQGGWCsN0R5hYGCrVo34A3MnaZMUnbqQ523BNFQ9lXg +1dKmSYXpN+nKfq5clU1Imj+uIFptiJXZNLhSGkOQsL9sBbm2eLfq0OQ6PBJTYv9K +8nu+NQWpEjTj82R0Yiw9AElaKP4yRLuH3WUnAnE72kr3H9rN9yFVkE8P7K6C4Z9r +2UXTu/Bfh+08LDmG2j/e7HJV63mjrdvdfLC6HM783k81ds8P+HgfajZRRidhW+me +z/CiVX18JYpvL7TFz4QuK/0NURBs+18bvBt+xa47mAExkv8LV/SasrlX6avvDXbR +8O70zoan4G7ptGmh32n2M8ZpLpcTnqWHsFcQgTfJU7O7f/aS0ZzQGPSSbtqDT6Zj +mUyl+17vIWR6IF9sZIUVyzfpYgwLKhbcAS4y2j5L9Z469hdAlO+ekQiG+r5jqFoz +7Mt0Q5X5bGlSNscpb/xVA1wf+5+9R+vnSUeVC06JIglJ4PVhHvG/LopyboBZ/1c6 ++XUyo05f7O0oYtlNc/LMgRdg7c3r3NunysV+Ar3yVAhU/bQtCSwXVEqY0VThUWcI +0u1ufm8/0i2BWSlmy5A5lREedCf+3euvAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMB +Af8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBSwDPBMMPQFWAJI/TPlUq9LhONm +UjANBgkqhkiG9w0BAQwFAAOCAgEAqqiAjw54o+Ci1M3m9Zh6O+oAA7CXDpO8Wqj2 +LIxyh6mx/H9z/WNxeKWHWc8w4Q0QshNabYL1auaAn6AFC2jkR2vHat+2/XcycuUY ++gn0oJMsXdKMdYV2ZZAMA3m3MSNjrXiDCYZohMr/+c8mmpJ5581LxedhpxfL86kS +k5Nrp+gvU5LEYFiwzAJRGFuFjWJZY7attN6a+yb3ACfAXVU3dJnJUH/jWS5E4ywl +7uxMMne0nxrpS10gxdr9HIcWxkPo1LsmmkVwXqkLN1PiRnsn/eBG8om3zEK2yygm +btmlyTrIQRNg91CMFa6ybRoVGld45pIq2WWQgj9sAq+uEjonljYE1x2igGOpm/Hl +urR8FLBOybEfdF849lHqm/osohHUqS0nGkWxr7JOcQ3AWEbWaQbLU8uz/mtBzUF+ +fUwPfHJ5elnNXkoOrJupmHN5fLT0zLm4BwyydFy4x2+IoZCn9Kr5v2c69BoVYh63 +n749sSmvZ6ES8lgQGVMDMBu4Gon2nL2XA46jCfMdiyHxtN/kHNGfZQIG6lzWE7OE +76KlXIx3KadowGuuQNKotOrN8I1LOJwZmhsoVLiJkO/KdYE+HvJkJMcYr07/R54H +9jVlpNMKVv/1F2Rs76giJUmTtt8AF9pYfl3uxRuw0dFfIRDH+fO6AgonB8Xx1sfT +4PsJYGw= +-----END CERTIFICATE----- + +# Issuer: CN=Amazon Root CA 3 O=Amazon +# Subject: CN=Amazon Root CA 3 O=Amazon +# Label: "Amazon Root CA 3" +# Serial: 143266986699090766294700635381230934788665930 +# MD5 Fingerprint: a0:d4:ef:0b:f7:b5:d8:49:95:2a:ec:f5:c4:fc:81:87 +# SHA1 Fingerprint: 0d:44:dd:8c:3c:8c:1a:1a:58:75:64:81:e9:0f:2e:2a:ff:b3:d2:6e +# SHA256 Fingerprint: 18:ce:6c:fe:7b:f1:4e:60:b2:e3:47:b8:df:e8:68:cb:31:d0:2e:bb:3a:da:27:15:69:f5:03:43:b4:6d:b3:a4 +-----BEGIN CERTIFICATE----- +MIIBtjCCAVugAwIBAgITBmyf1XSXNmY/Owua2eiedgPySjAKBggqhkjOPQQDAjA5 +MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24g +Um9vdCBDQSAzMB4XDTE1MDUyNjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkG +A1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJvb3Qg +Q0EgMzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABCmXp8ZBf8ANm+gBG1bG8lKl +ui2yEujSLtf6ycXYqm0fc4E7O5hrOXwzpcVOho6AF2hiRVd9RFgdszflZwjrZt6j +QjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBSr +ttvXBp43rDCGB5Fwx5zEGbF4wDAKBggqhkjOPQQDAgNJADBGAiEA4IWSoxe3jfkr +BqWTrBqYaGFy+uGh0PsceGCmQ5nFuMQCIQCcAu/xlJyzlvnrxir4tiz+OpAUFteM +YyRIHN8wfdVoOw== +-----END CERTIFICATE----- + +# Issuer: CN=Amazon Root CA 4 O=Amazon +# Subject: CN=Amazon Root CA 4 O=Amazon +# Label: "Amazon Root CA 4" +# Serial: 143266989758080763974105200630763877849284878 +# MD5 Fingerprint: 89:bc:27:d5:eb:17:8d:06:6a:69:d5:fd:89:47:b4:cd +# SHA1 Fingerprint: f6:10:84:07:d6:f8:bb:67:98:0c:c2:e2:44:c2:eb:ae:1c:ef:63:be +# SHA256 Fingerprint: e3:5d:28:41:9e:d0:20:25:cf:a6:90:38:cd:62:39:62:45:8d:a5:c6:95:fb:de:a3:c2:2b:0b:fb:25:89:70:92 +-----BEGIN CERTIFICATE----- +MIIB8jCCAXigAwIBAgITBmyf18G7EEwpQ+Vxe3ssyBrBDjAKBggqhkjOPQQDAzA5 +MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24g +Um9vdCBDQSA0MB4XDTE1MDUyNjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkG +A1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJvb3Qg +Q0EgNDB2MBAGByqGSM49AgEGBSuBBAAiA2IABNKrijdPo1MN/sGKe0uoe0ZLY7Bi +9i0b2whxIdIA6GO9mif78DluXeo9pcmBqqNbIJhFXRbb/egQbeOc4OO9X4Ri83Bk +M6DLJC9wuoihKqB1+IGuYgbEgds5bimwHvouXKNCMEAwDwYDVR0TAQH/BAUwAwEB +/zAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0OBBYEFNPsxzplbszh2naaVvuc84ZtV+WB +MAoGCCqGSM49BAMDA2gAMGUCMDqLIfG9fhGt0O9Yli/W651+kI0rz2ZVwyzjKKlw +CkcO8DdZEv8tmZQoTipPNU0zWgIxAOp1AE47xDqUEpHJWEadIRNyp4iciuRMStuW +1KyLa2tJElMzrdfkviT8tQp21KW8EA== +-----END CERTIFICATE----- + +# Issuer: CN=TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1 O=Turkiye Bilimsel ve Teknolojik Arastirma Kurumu - TUBITAK OU=Kamu Sertifikasyon Merkezi - Kamu SM +# Subject: CN=TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1 O=Turkiye Bilimsel ve Teknolojik Arastirma Kurumu - TUBITAK OU=Kamu Sertifikasyon Merkezi - Kamu SM +# Label: "TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1" +# Serial: 1 +# MD5 Fingerprint: dc:00:81:dc:69:2f:3e:2f:b0:3b:f6:3d:5a:91:8e:49 +# SHA1 Fingerprint: 31:43:64:9b:ec:ce:27:ec:ed:3a:3f:0b:8f:0d:e4:e8:91:dd:ee:ca +# SHA256 Fingerprint: 46:ed:c3:68:90:46:d5:3a:45:3f:b3:10:4a:b8:0d:ca:ec:65:8b:26:60:ea:16:29:dd:7e:86:79:90:64:87:16 +-----BEGIN CERTIFICATE----- +MIIEYzCCA0ugAwIBAgIBATANBgkqhkiG9w0BAQsFADCB0jELMAkGA1UEBhMCVFIx +GDAWBgNVBAcTD0dlYnplIC0gS29jYWVsaTFCMEAGA1UEChM5VHVya2l5ZSBCaWxp +bXNlbCB2ZSBUZWtub2xvamlrIEFyYXN0aXJtYSBLdXJ1bXUgLSBUVUJJVEFLMS0w +KwYDVQQLEyRLYW11IFNlcnRpZmlrYXN5b24gTWVya2V6aSAtIEthbXUgU00xNjA0 +BgNVBAMTLVRVQklUQUsgS2FtdSBTTSBTU0wgS29rIFNlcnRpZmlrYXNpIC0gU3Vy +dW0gMTAeFw0xMzExMjUwODI1NTVaFw00MzEwMjUwODI1NTVaMIHSMQswCQYDVQQG +EwJUUjEYMBYGA1UEBxMPR2ViemUgLSBLb2NhZWxpMUIwQAYDVQQKEzlUdXJraXll +IEJpbGltc2VsIHZlIFRla25vbG9qaWsgQXJhc3Rpcm1hIEt1cnVtdSAtIFRVQklU +QUsxLTArBgNVBAsTJEthbXUgU2VydGlmaWthc3lvbiBNZXJrZXppIC0gS2FtdSBT +TTE2MDQGA1UEAxMtVFVCSVRBSyBLYW11IFNNIFNTTCBLb2sgU2VydGlmaWthc2kg +LSBTdXJ1bSAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAr3UwM6q7 +a9OZLBI3hNmNe5eA027n/5tQlT6QlVZC1xl8JoSNkvoBHToP4mQ4t4y86Ij5iySr +LqP1N+RAjhgleYN1Hzv/bKjFxlb4tO2KRKOrbEz8HdDc72i9z+SqzvBV96I01INr +N3wcwv61A+xXzry0tcXtAA9TNypN9E8Mg/uGz8v+jE69h/mniyFXnHrfA2eJLJ2X +YacQuFWQfw4tJzh03+f92k4S400VIgLI4OD8D62K18lUUMw7D8oWgITQUVbDjlZ/ +iSIzL+aFCr2lqBs23tPcLG07xxO9WSMs5uWk99gL7eqQQESolbuT1dCANLZGeA4f +AJNG4e7p+exPFwIDAQABo0IwQDAdBgNVHQ4EFgQUZT/HiobGPN08VFw1+DrtUgxH +V8gwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEL +BQADggEBACo/4fEyjq7hmFxLXs9rHmoJ0iKpEsdeV31zVmSAhHqT5Am5EM2fKifh +AHe+SMg1qIGf5LgsyX8OsNJLN13qudULXjS99HMpw+0mFZx+CFOKWI3QSyjfwbPf +IPP54+M638yclNhOT8NrF7f3cuitZjO1JVOr4PhMqZ398g26rrnZqsZr+ZO7rqu4 +lzwDGrpDxpa5RXI4s6ehlj2Re37AIVNMh+3yC1SVUZPVIqUNivGTDj5UDrDYyU7c +8jEyVupk+eq1nRZmQnLzf9OxMUP8pI4X8W0jq5Rm+K37DwhuJi1/FwcJsoz7UMCf +lo3Ptv0AnVoUmr8CRPXBwp8iXqIPoeM= +-----END CERTIFICATE----- + +# Issuer: CN=GDCA TrustAUTH R5 ROOT O=GUANG DONG CERTIFICATE AUTHORITY CO.,LTD. +# Subject: CN=GDCA TrustAUTH R5 ROOT O=GUANG DONG CERTIFICATE AUTHORITY CO.,LTD. +# Label: "GDCA TrustAUTH R5 ROOT" +# Serial: 9009899650740120186 +# MD5 Fingerprint: 63:cc:d9:3d:34:35:5c:6f:53:a3:e2:08:70:48:1f:b4 +# SHA1 Fingerprint: 0f:36:38:5b:81:1a:25:c3:9b:31:4e:83:ca:e9:34:66:70:cc:74:b4 +# SHA256 Fingerprint: bf:ff:8f:d0:44:33:48:7d:6a:8a:a6:0c:1a:29:76:7a:9f:c2:bb:b0:5e:42:0f:71:3a:13:b9:92:89:1d:38:93 +-----BEGIN CERTIFICATE----- +MIIFiDCCA3CgAwIBAgIIfQmX/vBH6nowDQYJKoZIhvcNAQELBQAwYjELMAkGA1UE +BhMCQ04xMjAwBgNVBAoMKUdVQU5HIERPTkcgQ0VSVElGSUNBVEUgQVVUSE9SSVRZ +IENPLixMVEQuMR8wHQYDVQQDDBZHRENBIFRydXN0QVVUSCBSNSBST09UMB4XDTE0 +MTEyNjA1MTMxNVoXDTQwMTIzMTE1NTk1OVowYjELMAkGA1UEBhMCQ04xMjAwBgNV +BAoMKUdVQU5HIERPTkcgQ0VSVElGSUNBVEUgQVVUSE9SSVRZIENPLixMVEQuMR8w +HQYDVQQDDBZHRENBIFRydXN0QVVUSCBSNSBST09UMIICIjANBgkqhkiG9w0BAQEF +AAOCAg8AMIICCgKCAgEA2aMW8Mh0dHeb7zMNOwZ+Vfy1YI92hhJCfVZmPoiC7XJj +Dp6L3TQsAlFRwxn9WVSEyfFrs0yw6ehGXTjGoqcuEVe6ghWinI9tsJlKCvLriXBj +TnnEt1u9ol2x8kECK62pOqPseQrsXzrj/e+APK00mxqriCZ7VqKChh/rNYmDf1+u +KU49tm7srsHwJ5uu4/Ts765/94Y9cnrrpftZTqfrlYwiOXnhLQiPzLyRuEH3FMEj +qcOtmkVEs7LXLM3GKeJQEK5cy4KOFxg2fZfmiJqwTTQJ9Cy5WmYqsBebnh52nUpm +MUHfP/vFBu8btn4aRjb3ZGM74zkYI+dndRTVdVeSN72+ahsmUPI2JgaQxXABZG12 +ZuGR224HwGGALrIuL4xwp9E7PLOR5G62xDtw8mySlwnNR30YwPO7ng/Wi64HtloP +zgsMR6flPri9fcebNaBhlzpBdRfMK5Z3KpIhHtmVdiBnaM8Nvd/WHwlqmuLMc3Gk +L30SgLdTMEZeS1SZD2fJpcjyIMGC7J0R38IC+xo70e0gmu9lZJIQDSri3nDxGGeC +jGHeuLzRL5z7D9Ar7Rt2ueQ5Vfj4oR24qoAATILnsn8JuLwwoC8N9VKejveSswoA +HQBUlwbgsQfZxw9cZX08bVlX5O2ljelAU58VS6Bx9hoh49pwBiFYFIeFd3mqgnkC +AwEAAaNCMEAwHQYDVR0OBBYEFOLJQJ9NzuiaoXzPDj9lxSmIahlRMA8GA1UdEwEB +/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBCwUAA4ICAQDRSVfg +p8xoWLoBDysZzY2wYUWsEe1jUGn4H3++Fo/9nesLqjJHdtJnJO29fDMylyrHBYZm +DRd9FBUb1Ov9H5r2XpdptxolpAqzkT9fNqyL7FeoPueBihhXOYV0GkLH6VsTX4/5 +COmSdI31R9KrO9b7eGZONn356ZLpBN79SWP8bfsUcZNnL0dKt7n/HipzcEYwv1ry +L3ml4Y0M2fmyYzeMN2WFcGpcWwlyua1jPLHd+PwyvzeG5LuOmCd+uh8W4XAR8gPf +JWIyJyYYMoSf/wA6E7qaTfRPuBRwIrHKK5DOKcFw9C+df/KQHtZa37dG/OaG+svg +IHZ6uqbL9XzeYqWxi+7egmaKTjowHz+Ay60nugxe19CxVsp3cbK1daFQqUBDF8Io +2c9Si1vIY9RCPqAzekYu9wogRlR+ak8x8YF+QnQ4ZXMn7sZ8uI7XpTrXmKGcjBBV +09tL7ECQ8s1uV9JiDnxXk7Gnbc2dg7sq5+W2O3FYrf3RRbxake5TFW/TRQl1brqQ +XR4EzzffHqhmsYzmIGrv/EhOdJhCrylvLmrH+33RZjEizIYAfmaDDEL0vTSSwxrq +T8p+ck0LcIymSLumoRT2+1hEmRSuqguTaaApJUqlyyvdimYHFngVV3Eb7PVHhPOe +MTd61X8kreS8/f3MboPoDKi3QWwH3b08hpcv0g== +-----END CERTIFICATE----- + +# Issuer: CN=SSL.com Root Certification Authority RSA O=SSL Corporation +# Subject: CN=SSL.com Root Certification Authority RSA O=SSL Corporation +# Label: "SSL.com Root Certification Authority RSA" +# Serial: 8875640296558310041 +# MD5 Fingerprint: 86:69:12:c0:70:f1:ec:ac:ac:c2:d5:bc:a5:5b:a1:29 +# SHA1 Fingerprint: b7:ab:33:08:d1:ea:44:77:ba:14:80:12:5a:6f:bd:a9:36:49:0c:bb +# SHA256 Fingerprint: 85:66:6a:56:2e:e0:be:5c:e9:25:c1:d8:89:0a:6f:76:a8:7e:c1:6d:4d:7d:5f:29:ea:74:19:cf:20:12:3b:69 +-----BEGIN CERTIFICATE----- +MIIF3TCCA8WgAwIBAgIIeyyb0xaAMpkwDQYJKoZIhvcNAQELBQAwfDELMAkGA1UE +BhMCVVMxDjAMBgNVBAgMBVRleGFzMRAwDgYDVQQHDAdIb3VzdG9uMRgwFgYDVQQK +DA9TU0wgQ29ycG9yYXRpb24xMTAvBgNVBAMMKFNTTC5jb20gUm9vdCBDZXJ0aWZp +Y2F0aW9uIEF1dGhvcml0eSBSU0EwHhcNMTYwMjEyMTczOTM5WhcNNDEwMjEyMTcz +OTM5WjB8MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxEDAOBgNVBAcMB0hv +dXN0b24xGDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjExMC8GA1UEAwwoU1NMLmNv +bSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IFJTQTCCAiIwDQYJKoZIhvcN +AQEBBQADggIPADCCAgoCggIBAPkP3aMrfcvQKv7sZ4Wm5y4bunfh4/WvpOz6Sl2R +xFdHaxh3a3by/ZPkPQ/CFp4LZsNWlJ4Xg4XOVu/yFv0AYvUiCVToZRdOQbngT0aX +qhvIuG5iXmmxX9sqAn78bMrzQdjt0Oj8P2FI7bADFB0QDksZ4LtO7IZl/zbzXmcC +C52GVWH9ejjt/uIZALdvoVBidXQ8oPrIJZK0bnoix/geoeOy3ZExqysdBP+lSgQ3 +6YWkMyv94tZVNHwZpEpox7Ko07fKoZOI68GXvIz5HdkihCR0xwQ9aqkpk8zruFvh +/l8lqjRYyMEjVJ0bmBHDOJx+PYZspQ9AhnwC9FwCTyjLrnGfDzrIM/4RJTXq/LrF +YD3ZfBjVsqnTdXgDciLKOsMf7yzlLqn6niy2UUb9rwPW6mBo6oUWNmuF6R7As93E +JNyAKoFBbZQ+yODJgUEAnl6/f8UImKIYLEJAs/lvOCdLToD0PYFH4Ih86hzOtXVc +US4cK38acijnALXRdMbX5J+tB5O2UzU1/Dfkw/ZdFr4hc96SCvigY2q8lpJqPvi8 +ZVWb3vUNiSYE/CUapiVpy8JtynziWV+XrOvvLsi81xtZPCvM8hnIk2snYxnP/Okm ++Mpxm3+T/jRnhE6Z6/yzeAkzcLpmpnbtG3PrGqUNxCITIJRWCk4sbE6x/c+cCbqi +M+2HAgMBAAGjYzBhMB0GA1UdDgQWBBTdBAkHovV6fVJTEpKV7jiAJQ2mWTAPBgNV +HRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFN0ECQei9Xp9UlMSkpXuOIAlDaZZMA4G +A1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsFAAOCAgEAIBgRlCn7Jp0cHh5wYfGV +cpNxJK1ok1iOMq8bs3AD/CUrdIWQPXhq9LmLpZc7tRiRux6n+UBbkflVma8eEdBc +Hadm47GUBwwyOabqG7B52B2ccETjit3E+ZUfijhDPwGFpUenPUayvOUiaPd7nNgs +PgohyC0zrL/FgZkxdMF1ccW+sfAjRfSda/wZY52jvATGGAslu1OJD7OAUN5F7kR/ +q5R4ZJjT9ijdh9hwZXT7DrkT66cPYakylszeu+1jTBi7qUD3oFRuIIhxdRjqerQ0 +cuAjJ3dctpDqhiVAq+8zD8ufgr6iIPv2tS0a5sKFsXQP+8hlAqRSAUfdSSLBv9jr +a6x+3uxjMxW3IwiPxg+NQVrdjsW5j+VFP3jbutIbQLH+cU0/4IGiul607BXgk90I +H37hVZkLId6Tngr75qNJvTYw/ud3sqB1l7UtgYgXZSD32pAAn8lSzDLKNXz1PQ/Y +K9f1JmzJBjSWFupwWRoyeXkLtoh/D1JIPb9s2KJELtFOt3JY04kTlf5Eq/jXixtu +nLwsoFvVagCvXzfh1foQC5ichucmj87w7G6KVwuA406ywKBjYZC6VWg3dGq2ktuf +oYYitmUnDuy2n0Jg5GfCtdpBC8TTi2EbvPofkSvXRAdeuims2cXp71NIWuuA8ShY +Ic2wBlX7Jz9TkHCpBB5XJ7k= +-----END CERTIFICATE----- + +# Issuer: CN=SSL.com Root Certification Authority ECC O=SSL Corporation +# Subject: CN=SSL.com Root Certification Authority ECC O=SSL Corporation +# Label: "SSL.com Root Certification Authority ECC" +# Serial: 8495723813297216424 +# MD5 Fingerprint: 2e:da:e4:39:7f:9c:8f:37:d1:70:9f:26:17:51:3a:8e +# SHA1 Fingerprint: c3:19:7c:39:24:e6:54:af:1b:c4:ab:20:95:7a:e2:c3:0e:13:02:6a +# SHA256 Fingerprint: 34:17:bb:06:cc:60:07:da:1b:96:1c:92:0b:8a:b4:ce:3f:ad:82:0e:4a:a3:0b:9a:cb:c4:a7:4e:bd:ce:bc:65 +-----BEGIN CERTIFICATE----- +MIICjTCCAhSgAwIBAgIIdebfy8FoW6gwCgYIKoZIzj0EAwIwfDELMAkGA1UEBhMC +VVMxDjAMBgNVBAgMBVRleGFzMRAwDgYDVQQHDAdIb3VzdG9uMRgwFgYDVQQKDA9T +U0wgQ29ycG9yYXRpb24xMTAvBgNVBAMMKFNTTC5jb20gUm9vdCBDZXJ0aWZpY2F0 +aW9uIEF1dGhvcml0eSBFQ0MwHhcNMTYwMjEyMTgxNDAzWhcNNDEwMjEyMTgxNDAz +WjB8MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxEDAOBgNVBAcMB0hvdXN0 +b24xGDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjExMC8GA1UEAwwoU1NMLmNvbSBS +b290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IEVDQzB2MBAGByqGSM49AgEGBSuB +BAAiA2IABEVuqVDEpiM2nl8ojRfLliJkP9x6jh3MCLOicSS6jkm5BBtHllirLZXI +7Z4INcgn64mMU1jrYor+8FsPazFSY0E7ic3s7LaNGdM0B9y7xgZ/wkWV7Mt/qCPg +CemB+vNH06NjMGEwHQYDVR0OBBYEFILRhXMw5zUE044CkvvlpNHEIejNMA8GA1Ud +EwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUgtGFczDnNQTTjgKS++Wk0cQh6M0wDgYD +VR0PAQH/BAQDAgGGMAoGCCqGSM49BAMCA2cAMGQCMG/n61kRpGDPYbCWe+0F+S8T +kdzt5fxQaxFGRrMcIQBiu77D5+jNB5n5DQtdcj7EqgIwH7y6C+IwJPt8bYBVCpk+ +gA0z5Wajs6O7pdWLjwkspl1+4vAHCGht0nxpbl/f5Wpl +-----END CERTIFICATE----- + +# Issuer: CN=SSL.com EV Root Certification Authority RSA R2 O=SSL Corporation +# Subject: CN=SSL.com EV Root Certification Authority RSA R2 O=SSL Corporation +# Label: "SSL.com EV Root Certification Authority RSA R2" +# Serial: 6248227494352943350 +# MD5 Fingerprint: e1:1e:31:58:1a:ae:54:53:02:f6:17:6a:11:7b:4d:95 +# SHA1 Fingerprint: 74:3a:f0:52:9b:d0:32:a0:f4:4a:83:cd:d4:ba:a9:7b:7c:2e:c4:9a +# SHA256 Fingerprint: 2e:7b:f1:6c:c2:24:85:a7:bb:e2:aa:86:96:75:07:61:b0:ae:39:be:3b:2f:e9:d0:cc:6d:4e:f7:34:91:42:5c +-----BEGIN CERTIFICATE----- +MIIF6zCCA9OgAwIBAgIIVrYpzTS8ePYwDQYJKoZIhvcNAQELBQAwgYIxCzAJBgNV +BAYTAlVTMQ4wDAYDVQQIDAVUZXhhczEQMA4GA1UEBwwHSG91c3RvbjEYMBYGA1UE +CgwPU1NMIENvcnBvcmF0aW9uMTcwNQYDVQQDDC5TU0wuY29tIEVWIFJvb3QgQ2Vy +dGlmaWNhdGlvbiBBdXRob3JpdHkgUlNBIFIyMB4XDTE3MDUzMTE4MTQzN1oXDTQy +MDUzMDE4MTQzN1owgYIxCzAJBgNVBAYTAlVTMQ4wDAYDVQQIDAVUZXhhczEQMA4G +A1UEBwwHSG91c3RvbjEYMBYGA1UECgwPU1NMIENvcnBvcmF0aW9uMTcwNQYDVQQD +DC5TU0wuY29tIEVWIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgUlNBIFIy +MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAjzZlQOHWTcDXtOlG2mvq +M0fNTPl9fb69LT3w23jhhqXZuglXaO1XPqDQCEGD5yhBJB/jchXQARr7XnAjssuf +OePPxU7Gkm0mxnu7s9onnQqG6YE3Bf7wcXHswxzpY6IXFJ3vG2fThVUCAtZJycxa +4bH3bzKfydQ7iEGonL3Lq9ttewkfokxykNorCPzPPFTOZw+oz12WGQvE43LrrdF9 +HSfvkusQv1vrO6/PgN3B0pYEW3p+pKk8OHakYo6gOV7qd89dAFmPZiw+B6KjBSYR +aZfqhbcPlgtLyEDhULouisv3D5oi53+aNxPN8k0TayHRwMwi8qFG9kRpnMphNQcA +b9ZhCBHqurj26bNg5U257J8UZslXWNvNh2n4ioYSA0e/ZhN2rHd9NCSFg83XqpyQ +Gp8hLH94t2S42Oim9HizVcuE0jLEeK6jj2HdzghTreyI/BXkmg3mnxp3zkyPuBQV +PWKchjgGAGYS5Fl2WlPAApiiECtoRHuOec4zSnaqW4EWG7WK2NAAe15itAnWhmMO +pgWVSbooi4iTsjQc2KRVbrcc0N6ZVTsj9CLg+SlmJuwgUHfbSguPvuUCYHBBXtSu +UDkiFCbLsjtzdFVHB3mBOagwE0TlBIqulhMlQg+5U8Sb/M3kHN48+qvWBkofZ6aY +MBzdLNvcGJVXZsb/XItW9XcCAwEAAaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAfBgNV +HSMEGDAWgBT5YLvU49U09rj1BoAlp3PbRmmonjAdBgNVHQ4EFgQU+WC71OPVNPa4 +9QaAJadz20ZpqJ4wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBCwUAA4ICAQBW +s47LCp1Jjr+kxJG7ZhcFUZh1++VQLHqe8RT6q9OKPv+RKY9ji9i0qVQBDb6Thi/5 +Sm3HXvVX+cpVHBK+Rw82xd9qt9t1wkclf7nxY/hoLVUE0fKNsKTPvDxeH3jnpaAg +cLAExbf3cqfeIg29MyVGjGSSJuM+LmOW2puMPfgYCdcDzH2GguDKBAdRUNf/ktUM +79qGn5nX67evaOI5JpS6aLe/g9Pqemc9YmeuJeVy6OLk7K4S9ksrPJ/psEDzOFSz +/bdoyNrGj1E8svuR3Bznm53htw1yj+KkxKl4+esUrMZDBcJlOSgYAsOCsp0FvmXt +ll9ldDz7CTUue5wT/RsPXcdtgTpWD8w74a8CLyKsRspGPKAcTNZEtF4uXBVmCeEm +Kf7GUmG6sXP/wwyc5WxqlD8UykAWlYTzWamsX0xhk23RO8yilQwipmdnRC652dKK +QbNmC1r7fSOl8hqw/96bg5Qu0T/fkreRrwU7ZcegbLHNYhLDkBvjJc40vG93drEQ +w/cFGsDWr3RiSBd3kmmQYRzelYB0VI8YHMPzA9C/pEN1hlMYegouCRw2n5H9gooi +S9EOUCXdywMMF8mDAAhONU2Ki+3wApRmLER/y5UnlhetCTCstnEXbosX9hwJ1C07 +mKVx01QT2WDz9UtmT/rx7iASjbSsV7FFY6GsdqnC+w== +-----END CERTIFICATE----- + +# Issuer: CN=SSL.com EV Root Certification Authority ECC O=SSL Corporation +# Subject: CN=SSL.com EV Root Certification Authority ECC O=SSL Corporation +# Label: "SSL.com EV Root Certification Authority ECC" +# Serial: 3182246526754555285 +# MD5 Fingerprint: 59:53:22:65:83:42:01:54:c0:ce:42:b9:5a:7c:f2:90 +# SHA1 Fingerprint: 4c:dd:51:a3:d1:f5:20:32:14:b0:c6:c5:32:23:03:91:c7:46:42:6d +# SHA256 Fingerprint: 22:a2:c1:f7:bd:ed:70:4c:c1:e7:01:b5:f4:08:c3:10:88:0f:e9:56:b5:de:2a:4a:44:f9:9c:87:3a:25:a7:c8 +-----BEGIN CERTIFICATE----- +MIIClDCCAhqgAwIBAgIILCmcWxbtBZUwCgYIKoZIzj0EAwIwfzELMAkGA1UEBhMC +VVMxDjAMBgNVBAgMBVRleGFzMRAwDgYDVQQHDAdIb3VzdG9uMRgwFgYDVQQKDA9T +U0wgQ29ycG9yYXRpb24xNDAyBgNVBAMMK1NTTC5jb20gRVYgUm9vdCBDZXJ0aWZp +Y2F0aW9uIEF1dGhvcml0eSBFQ0MwHhcNMTYwMjEyMTgxNTIzWhcNNDEwMjEyMTgx +NTIzWjB/MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxEDAOBgNVBAcMB0hv +dXN0b24xGDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjE0MDIGA1UEAwwrU1NMLmNv +bSBFViBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IEVDQzB2MBAGByqGSM49 +AgEGBSuBBAAiA2IABKoSR5CYG/vvw0AHgyBO8TCCogbR8pKGYfL2IWjKAMTH6kMA +VIbc/R/fALhBYlzccBYy3h+Z1MzFB8gIH2EWB1E9fVwHU+M1OIzfzZ/ZLg1Kthku +WnBaBu2+8KGwytAJKaNjMGEwHQYDVR0OBBYEFFvKXuXe0oGqzagtZFG22XKbl+ZP +MA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUW8pe5d7SgarNqC1kUbbZcpuX +5k8wDgYDVR0PAQH/BAQDAgGGMAoGCCqGSM49BAMCA2gAMGUCMQCK5kCJN+vp1RPZ +ytRrJPOwPYdGWBrssd9v+1a6cGvHOMzosYxPD/fxZ3YOg9AeUY8CMD32IygmTMZg +h5Mmm7I1HrrW9zzRHM76JTymGoEVW/MSD2zuZYrJh6j5B+BimoxcSg== +-----END CERTIFICATE----- + +# Issuer: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R6 +# Subject: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R6 +# Label: "GlobalSign Root CA - R6" +# Serial: 1417766617973444989252670301619537 +# MD5 Fingerprint: 4f:dd:07:e4:d4:22:64:39:1e:0c:37:42:ea:d1:c6:ae +# SHA1 Fingerprint: 80:94:64:0e:b5:a7:a1:ca:11:9c:1f:dd:d5:9f:81:02:63:a7:fb:d1 +# SHA256 Fingerprint: 2c:ab:ea:fe:37:d0:6c:a2:2a:ba:73:91:c0:03:3d:25:98:29:52:c4:53:64:73:49:76:3a:3a:b5:ad:6c:cf:69 +-----BEGIN CERTIFICATE----- +MIIFgzCCA2ugAwIBAgIORea7A4Mzw4VlSOb/RVEwDQYJKoZIhvcNAQEMBQAwTDEg +MB4GA1UECxMXR2xvYmFsU2lnbiBSb290IENBIC0gUjYxEzARBgNVBAoTCkdsb2Jh +bFNpZ24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMTQxMjEwMDAwMDAwWhcNMzQx +MjEwMDAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSNjET +MBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjCCAiIwDQYJ +KoZIhvcNAQEBBQADggIPADCCAgoCggIBAJUH6HPKZvnsFMp7PPcNCPG0RQssgrRI +xutbPK6DuEGSMxSkb3/pKszGsIhrxbaJ0cay/xTOURQh7ErdG1rG1ofuTToVBu1k +ZguSgMpE3nOUTvOniX9PeGMIyBJQbUJmL025eShNUhqKGoC3GYEOfsSKvGRMIRxD +aNc9PIrFsmbVkJq3MQbFvuJtMgamHvm566qjuL++gmNQ0PAYid/kD3n16qIfKtJw +LnvnvJO7bVPiSHyMEAc4/2ayd2F+4OqMPKq0pPbzlUoSB239jLKJz9CgYXfIWHSw +1CM69106yqLbnQneXUQtkPGBzVeS+n68UARjNN9rkxi+azayOeSsJDa38O+2HBNX +k7besvjihbdzorg1qkXy4J02oW9UivFyVm4uiMVRQkQVlO6jxTiWm05OWgtH8wY2 +SXcwvHE35absIQh1/OZhFj931dmRl4QKbNQCTXTAFO39OfuD8l4UoQSwC+n+7o/h +bguyCLNhZglqsQY6ZZZZwPA1/cnaKI0aEYdwgQqomnUdnjqGBQCe24DWJfncBZ4n +WUx2OVvq+aWh2IMP0f/fMBH5hc8zSPXKbWQULHpYT9NLCEnFlWQaYw55PfWzjMpY +rZxCRXluDocZXFSxZba/jJvcE+kNb7gu3GduyYsRtYQUigAZcIN5kZeR1Bonvzce +MgfYFGM8KEyvAgMBAAGjYzBhMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTAD +AQH/MB0GA1UdDgQWBBSubAWjkxPioufi1xzWx/B/yGdToDAfBgNVHSMEGDAWgBSu +bAWjkxPioufi1xzWx/B/yGdToDANBgkqhkiG9w0BAQwFAAOCAgEAgyXt6NH9lVLN +nsAEoJFp5lzQhN7craJP6Ed41mWYqVuoPId8AorRbrcWc+ZfwFSY1XS+wc3iEZGt +Ixg93eFyRJa0lV7Ae46ZeBZDE1ZXs6KzO7V33EByrKPrmzU+sQghoefEQzd5Mr61 +55wsTLxDKZmOMNOsIeDjHfrYBzN2VAAiKrlNIC5waNrlU/yDXNOd8v9EDERm8tLj +vUYAGm0CuiVdjaExUd1URhxN25mW7xocBFymFe944Hn+Xds+qkxV/ZoVqW/hpvvf +cDDpw+5CRu3CkwWJ+n1jez/QcYF8AOiYrg54NMMl+68KnyBr3TsTjxKM4kEaSHpz +oHdpx7Zcf4LIHv5YGygrqGytXm3ABdJ7t+uA/iU3/gKbaKxCXcPu9czc8FB10jZp +nOZ7BN9uBmm23goJSFmH63sUYHpkqmlD75HHTOwY3WzvUy2MmeFe8nI+z1TIvWfs +pA9MRf/TuTAjB0yPEL+GltmZWrSZVxykzLsViVO6LAUP5MSeGbEYNNVMnbrt9x+v +JJUEeKgDu+6B5dpffItKoZB0JaezPkvILFa9x8jvOOJckvB595yEunQtYQEgfn7R +8k8HWV+LLUNS60YMlOH1Zkd5d9VUWx+tJDfLRVpOoERIyNiwmcUVhAn21klJwGW4 +5hpxbqCo8YLoRT5s1gLXCmeDBVrJpBA= +-----END CERTIFICATE----- + +# Issuer: CN=OISTE WISeKey Global Root GC CA O=WISeKey OU=OISTE Foundation Endorsed +# Subject: CN=OISTE WISeKey Global Root GC CA O=WISeKey OU=OISTE Foundation Endorsed +# Label: "OISTE WISeKey Global Root GC CA" +# Serial: 44084345621038548146064804565436152554 +# MD5 Fingerprint: a9:d6:b9:2d:2f:93:64:f8:a5:69:ca:91:e9:68:07:23 +# SHA1 Fingerprint: e0:11:84:5e:34:de:be:88:81:b9:9c:f6:16:26:d1:96:1f:c3:b9:31 +# SHA256 Fingerprint: 85:60:f9:1c:36:24:da:ba:95:70:b5:fe:a0:db:e3:6f:f1:1a:83:23:be:94:86:85:4f:b3:f3:4a:55:71:19:8d +-----BEGIN CERTIFICATE----- +MIICaTCCAe+gAwIBAgIQISpWDK7aDKtARb8roi066jAKBggqhkjOPQQDAzBtMQsw +CQYDVQQGEwJDSDEQMA4GA1UEChMHV0lTZUtleTEiMCAGA1UECxMZT0lTVEUgRm91 +bmRhdGlvbiBFbmRvcnNlZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBHbG9iYWwg +Um9vdCBHQyBDQTAeFw0xNzA1MDkwOTQ4MzRaFw00MjA1MDkwOTU4MzNaMG0xCzAJ +BgNVBAYTAkNIMRAwDgYDVQQKEwdXSVNlS2V5MSIwIAYDVQQLExlPSVNURSBGb3Vu +ZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5IEdsb2JhbCBS +b290IEdDIENBMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAETOlQwMYPchi82PG6s4ni +eUqjFqdrVCTbUf/q9Akkwwsin8tqJ4KBDdLArzHkdIJuyiXZjHWd8dvQmqJLIX4W +p2OQ0jnUsYd4XxiWD1AbNTcPasbc2RNNpI6QN+a9WzGRo1QwUjAOBgNVHQ8BAf8E +BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUSIcUrOPDnpBgOtfKie7T +rYy0UGYwEAYJKwYBBAGCNxUBBAMCAQAwCgYIKoZIzj0EAwMDaAAwZQIwJsdpW9zV +57LnyAyMjMPdeYwbY9XJUpROTYJKcx6ygISpJcBMWm1JKWB4E+J+SOtkAjEA2zQg +Mgj/mkkCtojeFK9dbJlxjRo/i9fgojaGHAeCOnZT/cKi7e97sIBPWA9LUzm9 +-----END CERTIFICATE----- + +# Issuer: CN=UCA Global G2 Root O=UniTrust +# Subject: CN=UCA Global G2 Root O=UniTrust +# Label: "UCA Global G2 Root" +# Serial: 124779693093741543919145257850076631279 +# MD5 Fingerprint: 80:fe:f0:c4:4a:f0:5c:62:32:9f:1c:ba:78:a9:50:f8 +# SHA1 Fingerprint: 28:f9:78:16:19:7a:ff:18:25:18:aa:44:fe:c1:a0:ce:5c:b6:4c:8a +# SHA256 Fingerprint: 9b:ea:11:c9:76:fe:01:47:64:c1:be:56:a6:f9:14:b5:a5:60:31:7a:bd:99:88:39:33:82:e5:16:1a:a0:49:3c +-----BEGIN CERTIFICATE----- +MIIFRjCCAy6gAwIBAgIQXd+x2lqj7V2+WmUgZQOQ7zANBgkqhkiG9w0BAQsFADA9 +MQswCQYDVQQGEwJDTjERMA8GA1UECgwIVW5pVHJ1c3QxGzAZBgNVBAMMElVDQSBH +bG9iYWwgRzIgUm9vdDAeFw0xNjAzMTEwMDAwMDBaFw00MDEyMzEwMDAwMDBaMD0x +CzAJBgNVBAYTAkNOMREwDwYDVQQKDAhVbmlUcnVzdDEbMBkGA1UEAwwSVUNBIEds +b2JhbCBHMiBSb290MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxeYr +b3zvJgUno4Ek2m/LAfmZmqkywiKHYUGRO8vDaBsGxUypK8FnFyIdK+35KYmToni9 +kmugow2ifsqTs6bRjDXVdfkX9s9FxeV67HeToI8jrg4aA3++1NDtLnurRiNb/yzm +VHqUwCoV8MmNsHo7JOHXaOIxPAYzRrZUEaalLyJUKlgNAQLx+hVRZ2zA+te2G3/R +VogvGjqNO7uCEeBHANBSh6v7hn4PJGtAnTRnvI3HLYZveT6OqTwXS3+wmeOwcWDc +C/Vkw85DvG1xudLeJ1uK6NjGruFZfc8oLTW4lVYa8bJYS7cSN8h8s+1LgOGN+jIj +tm+3SJUIsUROhYw6AlQgL9+/V087OpAh18EmNVQg7Mc/R+zvWr9LesGtOxdQXGLY +D0tK3Cv6brxzks3sx1DoQZbXqX5t2Okdj4q1uViSukqSKwxW/YDrCPBeKW4bHAyv +j5OJrdu9o54hyokZ7N+1wxrrFv54NkzWbtA+FxyQF2smuvt6L78RHBgOLXMDj6Dl +NaBa4kx1HXHhOThTeEDMg5PXCp6dW4+K5OXgSORIskfNTip1KnvyIvbJvgmRlld6 +iIis7nCs+dwp4wwcOxJORNanTrAmyPPZGpeRaOrvjUYG0lZFWJo8DA+DuAUlwznP +O6Q0ibd5Ei9Hxeepl2n8pndntd978XplFeRhVmUCAwEAAaNCMEAwDgYDVR0PAQH/ +BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFIHEjMz15DD/pQwIX4wV +ZyF0Ad/fMA0GCSqGSIb3DQEBCwUAA4ICAQATZSL1jiutROTL/7lo5sOASD0Ee/oj +L3rtNtqyzm325p7lX1iPyzcyochltq44PTUbPrw7tgTQvPlJ9Zv3hcU2tsu8+Mg5 +1eRfB70VVJd0ysrtT7q6ZHafgbiERUlMjW+i67HM0cOU2kTC5uLqGOiiHycFutfl +1qnN3e92mI0ADs0b+gO3joBYDic/UvuUospeZcnWhNq5NXHzJsBPd+aBJ9J3O5oU +b3n09tDh05S60FdRvScFDcH9yBIw7m+NESsIndTUv4BFFJqIRNow6rSn4+7vW4LV +PtateJLbXDzz2K36uGt/xDYotgIVilQsnLAXc47QN6MUPJiVAAwpBVueSUmxX8fj +y88nZY41F7dXyDDZQVu5FLbowg+UMaeUmMxq67XhJ/UQqAHojhJi6IjMtX9Gl8Cb +EGY4GjZGXyJoPd/JxhMnq1MGrKI8hgZlb7F+sSlEmqO6SWkoaY/X5V+tBIZkbxqg +DMUIYs6Ao9Dz7GjevjPHF1t/gMRMTLGmhIrDO7gJzRSBuhjjVFc2/tsvfEehOjPI ++Vg7RE+xygKJBJYoaMVLuCaJu9YzL1DV/pqJuhgyklTGW+Cd+V7lDSKb9triyCGy +YiGqhkCyLmTTX8jjfhFnRR8F/uOi77Oos/N9j/gMHyIfLXC0uAE0djAA5SN4p1bX +UB+K+wb1whnw0A== +-----END CERTIFICATE----- + +# Issuer: CN=UCA Extended Validation Root O=UniTrust +# Subject: CN=UCA Extended Validation Root O=UniTrust +# Label: "UCA Extended Validation Root" +# Serial: 106100277556486529736699587978573607008 +# MD5 Fingerprint: a1:f3:5f:43:c6:34:9b:da:bf:8c:7e:05:53:ad:96:e2 +# SHA1 Fingerprint: a3:a1:b0:6f:24:61:23:4a:e3:36:a5:c2:37:fc:a6:ff:dd:f0:d7:3a +# SHA256 Fingerprint: d4:3a:f9:b3:54:73:75:5c:96:84:fc:06:d7:d8:cb:70:ee:5c:28:e7:73:fb:29:4e:b4:1e:e7:17:22:92:4d:24 +-----BEGIN CERTIFICATE----- +MIIFWjCCA0KgAwIBAgIQT9Irj/VkyDOeTzRYZiNwYDANBgkqhkiG9w0BAQsFADBH +MQswCQYDVQQGEwJDTjERMA8GA1UECgwIVW5pVHJ1c3QxJTAjBgNVBAMMHFVDQSBF +eHRlbmRlZCBWYWxpZGF0aW9uIFJvb3QwHhcNMTUwMzEzMDAwMDAwWhcNMzgxMjMx +MDAwMDAwWjBHMQswCQYDVQQGEwJDTjERMA8GA1UECgwIVW5pVHJ1c3QxJTAjBgNV +BAMMHFVDQSBFeHRlbmRlZCBWYWxpZGF0aW9uIFJvb3QwggIiMA0GCSqGSIb3DQEB +AQUAA4ICDwAwggIKAoICAQCpCQcoEwKwmeBkqh5DFnpzsZGgdT6o+uM4AHrsiWog +D4vFsJszA1qGxliG1cGFu0/GnEBNyr7uaZa4rYEwmnySBesFK5pI0Lh2PpbIILvS +sPGP2KxFRv+qZ2C0d35qHzwaUnoEPQc8hQ2E0B92CvdqFN9y4zR8V05WAT558aop +O2z6+I9tTcg1367r3CTueUWnhbYFiN6IXSV8l2RnCdm/WhUFhvMJHuxYMjMR83dk +sHYf5BA1FxvyDrFspCqjc/wJHx4yGVMR59mzLC52LqGj3n5qiAno8geK+LLNEOfi +c0CTuwjRP+H8C5SzJe98ptfRr5//lpr1kXuYC3fUfugH0mK1lTnj8/FtDw5lhIpj +VMWAtuCeS31HJqcBCF3RiJ7XwzJE+oJKCmhUfzhTA8ykADNkUVkLo4KRel7sFsLz +KuZi2irbWWIQJUoqgQtHB0MGcIfS+pMRKXpITeuUx3BNr2fVUbGAIAEBtHoIppB/ +TuDvB0GHr2qlXov7z1CymlSvw4m6WC31MJixNnI5fkkE/SmnTHnkBVfblLkWU41G +sx2VYVdWf6/wFlthWG82UBEL2KwrlRYaDh8IzTY0ZRBiZtWAXxQgXy0MoHgKaNYs +1+lvK9JKBZP8nm9rZ/+I8U6laUpSNwXqxhaN0sSZ0YIrO7o1dfdRUVjzyAfd5LQD +fwIDAQABo0IwQDAdBgNVHQ4EFgQU2XQ65DA9DfcS3H5aBZ8eNJr34RQwDwYDVR0T +AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAYYwDQYJKoZIhvcNAQELBQADggIBADaN +l8xCFWQpN5smLNb7rhVpLGsaGvdftvkHTFnq88nIua7Mui563MD1sC3AO6+fcAUR +ap8lTwEpcOPlDOHqWnzcSbvBHiqB9RZLcpHIojG5qtr8nR/zXUACE/xOHAbKsxSQ +VBcZEhrxH9cMaVr2cXj0lH2RC47skFSOvG+hTKv8dGT9cZr4QQehzZHkPJrgmzI5 +c6sq1WnIeJEmMX3ixzDx/BR4dxIOE/TdFpS/S2d7cFOFyrC78zhNLJA5wA3CXWvp +4uXViI3WLL+rG761KIcSF3Ru/H38j9CHJrAb+7lsq+KePRXBOy5nAliRn+/4Qh8s +t2j1da3Ptfb/EX3C8CSlrdP6oDyp+l3cpaDvRKS+1ujl5BOWF3sGPjLtx7dCvHaj +2GU4Kzg1USEODm8uNBNA4StnDG1KQTAYI1oyVZnJF+A83vbsea0rWBmirSwiGpWO +vpaQXUJXxPkUAzUrHC1RVwinOt4/5Mi0A3PCwSaAuwtCH60NryZy2sy+s6ODWA2C +xR9GUeOcGMyNm43sSet1UNWMKFnKdDTajAshqx7qG+XH/RU+wBeq+yNuJkbL+vmx +cmtpzyKEC2IPrNkZAJSidjzULZrtBJ4tBmIQN1IchXIbJ+XMxjHsN+xjWZsLHXbM +fjKaiJUINlK73nZfdklJrX+9ZSCyycErdhh2n1ax +-----END CERTIFICATE----- + +# Issuer: CN=Certigna Root CA O=Dhimyotis OU=0002 48146308100036 +# Subject: CN=Certigna Root CA O=Dhimyotis OU=0002 48146308100036 +# Label: "Certigna Root CA" +# Serial: 269714418870597844693661054334862075617 +# MD5 Fingerprint: 0e:5c:30:62:27:eb:5b:bc:d7:ae:62:ba:e9:d5:df:77 +# SHA1 Fingerprint: 2d:0d:52:14:ff:9e:ad:99:24:01:74:20:47:6e:6c:85:27:27:f5:43 +# SHA256 Fingerprint: d4:8d:3d:23:ee:db:50:a4:59:e5:51:97:60:1c:27:77:4b:9d:7b:18:c9:4d:5a:05:95:11:a1:02:50:b9:31:68 +-----BEGIN CERTIFICATE----- +MIIGWzCCBEOgAwIBAgIRAMrpG4nxVQMNo+ZBbcTjpuEwDQYJKoZIhvcNAQELBQAw +WjELMAkGA1UEBhMCRlIxEjAQBgNVBAoMCURoaW15b3RpczEcMBoGA1UECwwTMDAw +MiA0ODE0NjMwODEwMDAzNjEZMBcGA1UEAwwQQ2VydGlnbmEgUm9vdCBDQTAeFw0x +MzEwMDEwODMyMjdaFw0zMzEwMDEwODMyMjdaMFoxCzAJBgNVBAYTAkZSMRIwEAYD +VQQKDAlEaGlteW90aXMxHDAaBgNVBAsMEzAwMDIgNDgxNDYzMDgxMDAwMzYxGTAX +BgNVBAMMEENlcnRpZ25hIFJvb3QgQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw +ggIKAoICAQDNGDllGlmx6mQWDoyUJJV8g9PFOSbcDO8WV43X2KyjQn+Cyu3NW9sO +ty3tRQgXstmzy9YXUnIo245Onoq2C/mehJpNdt4iKVzSs9IGPjA5qXSjklYcoW9M +CiBtnyN6tMbaLOQdLNyzKNAT8kxOAkmhVECe5uUFoC2EyP+YbNDrihqECB63aCPu +I9Vwzm1RaRDuoXrC0SIxwoKF0vJVdlB8JXrJhFwLrN1CTivngqIkicuQstDuI7pm +TLtipPlTWmR7fJj6o0ieD5Wupxj0auwuA0Wv8HT4Ks16XdG+RCYyKfHx9WzMfgIh +C59vpD++nVPiz32pLHxYGpfhPTc3GGYo0kDFUYqMwy3OU4gkWGQwFsWq4NYKpkDf +ePb1BHxpE4S80dGnBs8B92jAqFe7OmGtBIyT46388NtEbVncSVmurJqZNjBBe3Yz +IoejwpKGbvlw7q6Hh5UbxHq9MfPU0uWZ/75I7HX1eBYdpnDBfzwboZL7z8g81sWT +Co/1VTp2lc5ZmIoJlXcymoO6LAQ6l73UL77XbJuiyn1tJslV1c/DeVIICZkHJC1k +JWumIWmbat10TWuXekG9qxf5kBdIjzb5LdXF2+6qhUVB+s06RbFo5jZMm5BX7CO5 +hwjCxAnxl4YqKE3idMDaxIzb3+KhF1nOJFl0Mdp//TBt2dzhauH8XwIDAQABo4IB +GjCCARYwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYE +FBiHVuBud+4kNTxOc5of1uHieX4rMB8GA1UdIwQYMBaAFBiHVuBud+4kNTxOc5of +1uHieX4rMEQGA1UdIAQ9MDswOQYEVR0gADAxMC8GCCsGAQUFBwIBFiNodHRwczov +L3d3d3cuY2VydGlnbmEuZnIvYXV0b3JpdGVzLzBtBgNVHR8EZjBkMC+gLaArhilo +dHRwOi8vY3JsLmNlcnRpZ25hLmZyL2NlcnRpZ25hcm9vdGNhLmNybDAxoC+gLYYr +aHR0cDovL2NybC5kaGlteW90aXMuY29tL2NlcnRpZ25hcm9vdGNhLmNybDANBgkq +hkiG9w0BAQsFAAOCAgEAlLieT/DjlQgi581oQfccVdV8AOItOoldaDgvUSILSo3L +6btdPrtcPbEo/uRTVRPPoZAbAh1fZkYJMyjhDSSXcNMQH+pkV5a7XdrnxIxPTGRG +HVyH41neQtGbqH6mid2PHMkwgu07nM3A6RngatgCdTer9zQoKJHyBApPNeNgJgH6 +0BGM+RFq7q89w1DTj18zeTyGqHNFkIwgtnJzFyO+B2XleJINugHA64wcZr+shncB +lA2c5uk5jR+mUYyZDDl34bSb+hxnV29qao6pK0xXeXpXIs/NX2NGjVxZOob4Mkdi +o2cNGJHc+6Zr9UhhcyNZjgKnvETq9Emd8VRY+WCv2hikLyhF3HqgiIZd8zvn/yk1 +gPxkQ5Tm4xxvvq0OKmOZK8l+hfZx6AYDlf7ej0gcWtSS6Cvu5zHbugRqh5jnxV/v +faci9wHYTfmJ0A6aBVmknpjZbyvKcL5kwlWj9Omvw5Ip3IgWJJk8jSaYtlu3zM63 +Nwf9JtmYhST/WSMDmu2dnajkXjjO11INb9I/bbEFa0nOipFGc/T2L/Coc3cOZayh +jWZSaX5LaAzHHjcng6WMxwLkFM1JAbBzs/3GkDpv0mztO+7skb6iQ12LAEpmJURw +3kAP+HwV96LOPNdeE4yBFxgX0b3xdxA61GU5wSesVywlVP+i2k+KYTlerj1KjL0= +-----END CERTIFICATE----- + +# Issuer: CN=emSign Root CA - G1 O=eMudhra Technologies Limited OU=emSign PKI +# Subject: CN=emSign Root CA - G1 O=eMudhra Technologies Limited OU=emSign PKI +# Label: "emSign Root CA - G1" +# Serial: 235931866688319308814040 +# MD5 Fingerprint: 9c:42:84:57:dd:cb:0b:a7:2e:95:ad:b6:f3:da:bc:ac +# SHA1 Fingerprint: 8a:c7:ad:8f:73:ac:4e:c1:b5:75:4d:a5:40:f4:fc:cf:7c:b5:8e:8c +# SHA256 Fingerprint: 40:f6:af:03:46:a9:9a:a1:cd:1d:55:5a:4e:9c:ce:62:c7:f9:63:46:03:ee:40:66:15:83:3d:c8:c8:d0:03:67 +-----BEGIN CERTIFICATE----- +MIIDlDCCAnygAwIBAgIKMfXkYgxsWO3W2DANBgkqhkiG9w0BAQsFADBnMQswCQYD +VQQGEwJJTjETMBEGA1UECxMKZW1TaWduIFBLSTElMCMGA1UEChMcZU11ZGhyYSBU +ZWNobm9sb2dpZXMgTGltaXRlZDEcMBoGA1UEAxMTZW1TaWduIFJvb3QgQ0EgLSBH +MTAeFw0xODAyMTgxODMwMDBaFw00MzAyMTgxODMwMDBaMGcxCzAJBgNVBAYTAklO +MRMwEQYDVQQLEwplbVNpZ24gUEtJMSUwIwYDVQQKExxlTXVkaHJhIFRlY2hub2xv +Z2llcyBMaW1pdGVkMRwwGgYDVQQDExNlbVNpZ24gUm9vdCBDQSAtIEcxMIIBIjAN +BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAk0u76WaK7p1b1TST0Bsew+eeuGQz +f2N4aLTNLnF115sgxk0pvLZoYIr3IZpWNVrzdr3YzZr/k1ZLpVkGoZM0Kd0WNHVO +8oG0x5ZOrRkVUkr+PHB1cM2vK6sVmjM8qrOLqs1D/fXqcP/tzxE7lM5OMhbTI0Aq +d7OvPAEsbO2ZLIvZTmmYsvePQbAyeGHWDV/D+qJAkh1cF+ZwPjXnorfCYuKrpDhM +tTk1b+oDafo6VGiFbdbyL0NVHpENDtjVaqSW0RM8LHhQ6DqS0hdW5TUaQBw+jSzt +Od9C4INBdN+jzcKGYEho42kLVACL5HZpIQ15TjQIXhTCzLG3rdd8cIrHhQIDAQAB +o0IwQDAdBgNVHQ4EFgQU++8Nhp6w492pufEhF38+/PB3KxowDgYDVR0PAQH/BAQD +AgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAFn/8oz1h31x +PaOfG1vR2vjTnGs2vZupYeveFix0PZ7mddrXuqe8QhfnPZHr5X3dPpzxz5KsbEjM +wiI/aTvFthUvozXGaCocV685743QNcMYDHsAVhzNixl03r4PEuDQqqE/AjSxcM6d +GNYIAwlG7mDgfrbESQRRfXBgvKqy/3lyeqYdPV8q+Mri/Tm3R7nrft8EI6/6nAYH +6ftjk4BAtcZsCjEozgyfz7MjNYBBjWzEN3uBL4ChQEKF6dk4jeihU80Bv2noWgby +RQuQ+q7hv53yrlc8pa6yVvSLZUDp/TGBLPQ5Cdjua6e0ph0VpZj3AYHYhX3zUVxx +iN66zB+Afko= +-----END CERTIFICATE----- + +# Issuer: CN=emSign ECC Root CA - G3 O=eMudhra Technologies Limited OU=emSign PKI +# Subject: CN=emSign ECC Root CA - G3 O=eMudhra Technologies Limited OU=emSign PKI +# Label: "emSign ECC Root CA - G3" +# Serial: 287880440101571086945156 +# MD5 Fingerprint: ce:0b:72:d1:9f:88:8e:d0:50:03:e8:e3:b8:8b:67:40 +# SHA1 Fingerprint: 30:43:fa:4f:f2:57:dc:a0:c3:80:ee:2e:58:ea:78:b2:3f:e6:bb:c1 +# SHA256 Fingerprint: 86:a1:ec:ba:08:9c:4a:8d:3b:be:27:34:c6:12:ba:34:1d:81:3e:04:3c:f9:e8:a8:62:cd:5c:57:a3:6b:be:6b +-----BEGIN CERTIFICATE----- +MIICTjCCAdOgAwIBAgIKPPYHqWhwDtqLhDAKBggqhkjOPQQDAzBrMQswCQYDVQQG +EwJJTjETMBEGA1UECxMKZW1TaWduIFBLSTElMCMGA1UEChMcZU11ZGhyYSBUZWNo +bm9sb2dpZXMgTGltaXRlZDEgMB4GA1UEAxMXZW1TaWduIEVDQyBSb290IENBIC0g +RzMwHhcNMTgwMjE4MTgzMDAwWhcNNDMwMjE4MTgzMDAwWjBrMQswCQYDVQQGEwJJ +TjETMBEGA1UECxMKZW1TaWduIFBLSTElMCMGA1UEChMcZU11ZGhyYSBUZWNobm9s +b2dpZXMgTGltaXRlZDEgMB4GA1UEAxMXZW1TaWduIEVDQyBSb290IENBIC0gRzMw +djAQBgcqhkjOPQIBBgUrgQQAIgNiAAQjpQy4LRL1KPOxst3iAhKAnjlfSU2fySU0 +WXTsuwYc58Byr+iuL+FBVIcUqEqy6HyC5ltqtdyzdc6LBtCGI79G1Y4PPwT01xyS +fvalY8L1X44uT6EYGQIrMgqCZH0Wk9GjQjBAMB0GA1UdDgQWBBR8XQKEE9TMipuB +zhccLikenEhjQjAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAKBggq +hkjOPQQDAwNpADBmAjEAvvNhzwIQHWSVB7gYboiFBS+DCBeQyh+KTOgNG3qxrdWB +CUfvO6wIBHxcmbHtRwfSAjEAnbpV/KlK6O3t5nYBQnvI+GDZjVGLVTv7jHvrZQnD ++JbNR6iC8hZVdyR+EhCVBCyj +-----END CERTIFICATE----- + +# Issuer: CN=emSign Root CA - C1 O=eMudhra Inc OU=emSign PKI +# Subject: CN=emSign Root CA - C1 O=eMudhra Inc OU=emSign PKI +# Label: "emSign Root CA - C1" +# Serial: 825510296613316004955058 +# MD5 Fingerprint: d8:e3:5d:01:21:fa:78:5a:b0:df:ba:d2:ee:2a:5f:68 +# SHA1 Fingerprint: e7:2e:f1:df:fc:b2:09:28:cf:5d:d4:d5:67:37:b1:51:cb:86:4f:01 +# SHA256 Fingerprint: 12:56:09:aa:30:1d:a0:a2:49:b9:7a:82:39:cb:6a:34:21:6f:44:dc:ac:9f:39:54:b1:42:92:f2:e8:c8:60:8f +-----BEGIN CERTIFICATE----- +MIIDczCCAlugAwIBAgILAK7PALrEzzL4Q7IwDQYJKoZIhvcNAQELBQAwVjELMAkG +A1UEBhMCVVMxEzARBgNVBAsTCmVtU2lnbiBQS0kxFDASBgNVBAoTC2VNdWRocmEg +SW5jMRwwGgYDVQQDExNlbVNpZ24gUm9vdCBDQSAtIEMxMB4XDTE4MDIxODE4MzAw +MFoXDTQzMDIxODE4MzAwMFowVjELMAkGA1UEBhMCVVMxEzARBgNVBAsTCmVtU2ln +biBQS0kxFDASBgNVBAoTC2VNdWRocmEgSW5jMRwwGgYDVQQDExNlbVNpZ24gUm9v +dCBDQSAtIEMxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAz+upufGZ +BczYKCFK83M0UYRWEPWgTywS4/oTmifQz/l5GnRfHXk5/Fv4cI7gklL35CX5VIPZ +HdPIWoU/Xse2B+4+wM6ar6xWQio5JXDWv7V7Nq2s9nPczdcdioOl+yuQFTdrHCZH +3DspVpNqs8FqOp099cGXOFgFixwR4+S0uF2FHYP+eF8LRWgYSKVGczQ7/g/IdrvH +GPMF0Ybzhe3nudkyrVWIzqa2kbBPrH4VI5b2P/AgNBbeCsbEBEV5f6f9vtKppa+c +xSMq9zwhbL2vj07FOrLzNBL834AaSaTUqZX3noleoomslMuoaJuvimUnzYnu3Yy1 +aylwQ6BpC+S5DwIDAQABo0IwQDAdBgNVHQ4EFgQU/qHgcB4qAzlSWkK+XJGFehiq +TbUwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEL +BQADggEBAMJKVvoVIXsoounlHfv4LcQ5lkFMOycsxGwYFYDGrK9HWS8mC+M2sO87 +/kOXSTKZEhVb3xEp/6tT+LvBeA+snFOvV71ojD1pM/CjoCNjO2RnIkSt1XHLVip4 +kqNPEjE2NuLe/gDEo2APJ62gsIq1NnpSob0n9CAnYuhNlCQT5AoE6TyrLshDCUrG +YQTlSTR+08TI9Q/Aqum6VF7zYytPT1DU/rl7mYw9wC68AivTxEDkigcxHpvOJpkT ++xHqmiIMERnHXhuBUDDIlhJu58tBf5E7oke3VIAb3ADMmpDqw8NQBmIMMMAVSKeo +WXzhriKi4gp6D/piq1JM4fHfyr6DDUI= +-----END CERTIFICATE----- + +# Issuer: CN=emSign ECC Root CA - C3 O=eMudhra Inc OU=emSign PKI +# Subject: CN=emSign ECC Root CA - C3 O=eMudhra Inc OU=emSign PKI +# Label: "emSign ECC Root CA - C3" +# Serial: 582948710642506000014504 +# MD5 Fingerprint: 3e:53:b3:a3:81:ee:d7:10:f8:d3:b0:1d:17:92:f5:d5 +# SHA1 Fingerprint: b6:af:43:c2:9b:81:53:7d:f6:ef:6b:c3:1f:1f:60:15:0c:ee:48:66 +# SHA256 Fingerprint: bc:4d:80:9b:15:18:9d:78:db:3e:1d:8c:f4:f9:72:6a:79:5d:a1:64:3c:a5:f1:35:8e:1d:db:0e:dc:0d:7e:b3 +-----BEGIN CERTIFICATE----- +MIICKzCCAbGgAwIBAgIKe3G2gla4EnycqDAKBggqhkjOPQQDAzBaMQswCQYDVQQG +EwJVUzETMBEGA1UECxMKZW1TaWduIFBLSTEUMBIGA1UEChMLZU11ZGhyYSBJbmMx +IDAeBgNVBAMTF2VtU2lnbiBFQ0MgUm9vdCBDQSAtIEMzMB4XDTE4MDIxODE4MzAw +MFoXDTQzMDIxODE4MzAwMFowWjELMAkGA1UEBhMCVVMxEzARBgNVBAsTCmVtU2ln +biBQS0kxFDASBgNVBAoTC2VNdWRocmEgSW5jMSAwHgYDVQQDExdlbVNpZ24gRUND +IFJvb3QgQ0EgLSBDMzB2MBAGByqGSM49AgEGBSuBBAAiA2IABP2lYa57JhAd6bci +MK4G9IGzsUJxlTm801Ljr6/58pc1kjZGDoeVjbk5Wum739D+yAdBPLtVb4Ojavti +sIGJAnB9SMVK4+kiVCJNk7tCDK93nCOmfddhEc5lx/h//vXyqaNCMEAwHQYDVR0O +BBYEFPtaSNCAIEDyqOkAB2kZd6fmw/TPMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMB +Af8EBTADAQH/MAoGCCqGSM49BAMDA2gAMGUCMQC02C8Cif22TGK6Q04ThHK1rt0c +3ta13FaPWEBaLd4gTCKDypOofu4SQMfWh0/434UCMBwUZOR8loMRnLDRWmFLpg9J +0wD8ofzkpf9/rdcw0Md3f76BB1UwUCAU9Vc4CqgxUQ== +-----END CERTIFICATE----- + +# Issuer: CN=Hongkong Post Root CA 3 O=Hongkong Post +# Subject: CN=Hongkong Post Root CA 3 O=Hongkong Post +# Label: "Hongkong Post Root CA 3" +# Serial: 46170865288971385588281144162979347873371282084 +# MD5 Fingerprint: 11:fc:9f:bd:73:30:02:8a:fd:3f:f3:58:b9:cb:20:f0 +# SHA1 Fingerprint: 58:a2:d0:ec:20:52:81:5b:c1:f3:f8:64:02:24:4e:c2:8e:02:4b:02 +# SHA256 Fingerprint: 5a:2f:c0:3f:0c:83:b0:90:bb:fa:40:60:4b:09:88:44:6c:76:36:18:3d:f9:84:6e:17:10:1a:44:7f:b8:ef:d6 +-----BEGIN CERTIFICATE----- +MIIFzzCCA7egAwIBAgIUCBZfikyl7ADJk0DfxMauI7gcWqQwDQYJKoZIhvcNAQEL +BQAwbzELMAkGA1UEBhMCSEsxEjAQBgNVBAgTCUhvbmcgS29uZzESMBAGA1UEBxMJ +SG9uZyBLb25nMRYwFAYDVQQKEw1Ib25na29uZyBQb3N0MSAwHgYDVQQDExdIb25n +a29uZyBQb3N0IFJvb3QgQ0EgMzAeFw0xNzA2MDMwMjI5NDZaFw00MjA2MDMwMjI5 +NDZaMG8xCzAJBgNVBAYTAkhLMRIwEAYDVQQIEwlIb25nIEtvbmcxEjAQBgNVBAcT +CUhvbmcgS29uZzEWMBQGA1UEChMNSG9uZ2tvbmcgUG9zdDEgMB4GA1UEAxMXSG9u +Z2tvbmcgUG9zdCBSb290IENBIDMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIK +AoICAQCziNfqzg8gTr7m1gNt7ln8wlffKWihgw4+aMdoWJwcYEuJQwy51BWy7sFO +dem1p+/l6TWZ5Mwc50tfjTMwIDNT2aa71T4Tjukfh0mtUC1Qyhi+AViiE3CWu4mI +VoBc+L0sPOFMV4i707mV78vH9toxdCim5lSJ9UExyuUmGs2C4HDaOym71QP1mbpV +9WTRYA6ziUm4ii8F0oRFKHyPaFASePwLtVPLwpgchKOesL4jpNrcyCse2m5FHomY +2vkALgbpDDtw1VAliJnLzXNg99X/NWfFobxeq81KuEXryGgeDQ0URhLj0mRiikKY +vLTGCAj4/ahMZJx2Ab0vqWwzD9g/KLg8aQFChn5pwckGyuV6RmXpwtZQQS4/t+Tt +bNe/JgERohYpSms0BpDsE9K2+2p20jzt8NYt3eEV7KObLyzJPivkaTv/ciWxNoZb +x39ri1UbSsUgYT2uy1DhCDq+sI9jQVMwCFk8mB13umOResoQUGC/8Ne8lYePl8X+ +l2oBlKN8W4UdKjk60FSh0Tlxnf0h+bV78OLgAo9uliQlLKAeLKjEiafv7ZkGL7YK +TE/bosw3Gq9HhS2KX8Q0NEwA/RiTZxPRN+ZItIsGxVd7GYYKecsAyVKvQv83j+Gj +Hno9UKtjBucVtT+2RTeUN7F+8kjDf8V1/peNRY8apxpyKBpADwIDAQABo2MwYTAP +BgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAfBgNVHSMEGDAWgBQXnc0e +i9Y5K3DTXNSguB+wAPzFYTAdBgNVHQ4EFgQUF53NHovWOStw01zUoLgfsAD8xWEw +DQYJKoZIhvcNAQELBQADggIBAFbVe27mIgHSQpsY1Q7XZiNc4/6gx5LS6ZStS6LG +7BJ8dNVI0lkUmcDrudHr9EgwW62nV3OZqdPlt9EuWSRY3GguLmLYauRwCy0gUCCk +MpXRAJi70/33MvJJrsZ64Ee+bs7Lo3I6LWldy8joRTnU+kLBEUx3XZL7av9YROXr +gZ6voJmtvqkBZss4HTzfQx/0TW60uhdG/H39h4F5ag0zD/ov+BS5gLNdTaqX4fnk +GMX41TiMJjz98iji7lpJiCzfeT2OnpA8vUFKOt1b9pq0zj8lMH8yfaIDlNDceqFS +3m6TjRgm/VWsvY+b0s+v54Ysyx8Jb6NvqYTUc79NoXQbTiNg8swOqn+knEwlqLJm +Ozj/2ZQw9nKEvmhVEA/GcywWaZMH/rFF7buiVWqw2rVKAiUnhde3t4ZEFolsgCs+ +l6mc1X5VTMbeRRAc6uk7nwNT7u56AQIWeNTowr5GdogTPyK7SBIdUgC0An4hGh6c +JfTzPV4e0hz5sy229zdcxsshTrD3mUcYhcErulWuBurQB7Lcq9CClnXO0lD+mefP +L5/ndtFhKvshuzHQqp9HpLIiyhY6UFfEW0NnxWViA0kB60PZ2Pierc+xYw5F9KBa +LJstxabArahH9CdMOA0uG0k7UvToiIMrVCjU8jVStDKDYmlkDJGcn5fqdBb9HxEG +mpv0 +-----END CERTIFICATE----- + +# Issuer: CN=Microsoft ECC Root Certificate Authority 2017 O=Microsoft Corporation +# Subject: CN=Microsoft ECC Root Certificate Authority 2017 O=Microsoft Corporation +# Label: "Microsoft ECC Root Certificate Authority 2017" +# Serial: 136839042543790627607696632466672567020 +# MD5 Fingerprint: dd:a1:03:e6:4a:93:10:d1:bf:f0:19:42:cb:fe:ed:67 +# SHA1 Fingerprint: 99:9a:64:c3:7f:f4:7d:9f:ab:95:f1:47:69:89:14:60:ee:c4:c3:c5 +# SHA256 Fingerprint: 35:8d:f3:9d:76:4a:f9:e1:b7:66:e9:c9:72:df:35:2e:e1:5c:fa:c2:27:af:6a:d1:d7:0e:8e:4a:6e:dc:ba:02 +-----BEGIN CERTIFICATE----- +MIICWTCCAd+gAwIBAgIQZvI9r4fei7FK6gxXMQHC7DAKBggqhkjOPQQDAzBlMQsw +CQYDVQQGEwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTYwNAYD +VQQDEy1NaWNyb3NvZnQgRUNDIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIw +MTcwHhcNMTkxMjE4MjMwNjQ1WhcNNDIwNzE4MjMxNjA0WjBlMQswCQYDVQQGEwJV +UzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTYwNAYDVQQDEy1NaWNy +b3NvZnQgRUNDIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTcwdjAQBgcq +hkjOPQIBBgUrgQQAIgNiAATUvD0CQnVBEyPNgASGAlEvaqiBYgtlzPbKnR5vSmZR +ogPZnZH6thaxjG7efM3beaYvzrvOcS/lpaso7GMEZpn4+vKTEAXhgShC48Zo9OYb +hGBKia/teQ87zvH2RPUBeMCjVDBSMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8E +BTADAQH/MB0GA1UdDgQWBBTIy5lycFIM+Oa+sgRXKSrPQhDtNTAQBgkrBgEEAYI3 +FQEEAwIBADAKBggqhkjOPQQDAwNoADBlAjBY8k3qDPlfXu5gKcs68tvWMoQZP3zV +L8KxzJOuULsJMsbG7X7JNpQS5GiFBqIb0C8CMQCZ6Ra0DvpWSNSkMBaReNtUjGUB +iudQZsIxtzm6uBoiB078a1QWIP8rtedMDE2mT3M= +-----END CERTIFICATE----- + +# Issuer: CN=Microsoft RSA Root Certificate Authority 2017 O=Microsoft Corporation +# Subject: CN=Microsoft RSA Root Certificate Authority 2017 O=Microsoft Corporation +# Label: "Microsoft RSA Root Certificate Authority 2017" +# Serial: 40975477897264996090493496164228220339 +# MD5 Fingerprint: 10:ff:00:ff:cf:c9:f8:c7:7a:c0:ee:35:8e:c9:0f:47 +# SHA1 Fingerprint: 73:a5:e6:4a:3b:ff:83:16:ff:0e:dc:cc:61:8a:90:6e:4e:ae:4d:74 +# SHA256 Fingerprint: c7:41:f7:0f:4b:2a:8d:88:bf:2e:71:c1:41:22:ef:53:ef:10:eb:a0:cf:a5:e6:4c:fa:20:f4:18:85:30:73:e0 +-----BEGIN CERTIFICATE----- +MIIFqDCCA5CgAwIBAgIQHtOXCV/YtLNHcB6qvn9FszANBgkqhkiG9w0BAQwFADBl +MQswCQYDVQQGEwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTYw +NAYDVQQDEy1NaWNyb3NvZnQgUlNBIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5 +IDIwMTcwHhcNMTkxMjE4MjI1MTIyWhcNNDIwNzE4MjMwMDIzWjBlMQswCQYDVQQG +EwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTYwNAYDVQQDEy1N +aWNyb3NvZnQgUlNBIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTcwggIi +MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKW76UM4wplZEWCpW9R2LBifOZ +Nt9GkMml7Xhqb0eRaPgnZ1AzHaGm++DlQ6OEAlcBXZxIQIJTELy/xztokLaCLeX0 +ZdDMbRnMlfl7rEqUrQ7eS0MdhweSE5CAg2Q1OQT85elss7YfUJQ4ZVBcF0a5toW1 +HLUX6NZFndiyJrDKxHBKrmCk3bPZ7Pw71VdyvD/IybLeS2v4I2wDwAW9lcfNcztm +gGTjGqwu+UcF8ga2m3P1eDNbx6H7JyqhtJqRjJHTOoI+dkC0zVJhUXAoP8XFWvLJ +jEm7FFtNyP9nTUwSlq31/niol4fX/V4ggNyhSyL71Imtus5Hl0dVe49FyGcohJUc +aDDv70ngNXtk55iwlNpNhTs+VcQor1fznhPbRiefHqJeRIOkpcrVE7NLP8TjwuaG +YaRSMLl6IE9vDzhTyzMMEyuP1pq9KsgtsRx9S1HKR9FIJ3Jdh+vVReZIZZ2vUpC6 +W6IYZVcSn2i51BVrlMRpIpj0M+Dt+VGOQVDJNE92kKz8OMHY4Xu54+OU4UZpyw4K +UGsTuqwPN1q3ErWQgR5WrlcihtnJ0tHXUeOrO8ZV/R4O03QK0dqq6mm4lyiPSMQH ++FJDOvTKVTUssKZqwJz58oHhEmrARdlns87/I6KJClTUFLkqqNfs+avNJVgyeY+Q +W5g5xAgGwax/Dj0ApQIDAQABo1QwUjAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/ +BAUwAwEB/zAdBgNVHQ4EFgQUCctZf4aycI8awznjwNnpv7tNsiMwEAYJKwYBBAGC +NxUBBAMCAQAwDQYJKoZIhvcNAQEMBQADggIBAKyvPl3CEZaJjqPnktaXFbgToqZC +LgLNFgVZJ8og6Lq46BrsTaiXVq5lQ7GPAJtSzVXNUzltYkyLDVt8LkS/gxCP81OC +gMNPOsduET/m4xaRhPtthH80dK2Jp86519efhGSSvpWhrQlTM93uCupKUY5vVau6 +tZRGrox/2KJQJWVggEbbMwSubLWYdFQl3JPk+ONVFT24bcMKpBLBaYVu32TxU5nh +SnUgnZUP5NbcA/FZGOhHibJXWpS2qdgXKxdJ5XbLwVaZOjex/2kskZGT4d9Mozd2 +TaGf+G0eHdP67Pv0RR0Tbc/3WeUiJ3IrhvNXuzDtJE3cfVa7o7P4NHmJweDyAmH3 +pvwPuxwXC65B2Xy9J6P9LjrRk5Sxcx0ki69bIImtt2dmefU6xqaWM/5TkshGsRGR +xpl/j8nWZjEgQRCHLQzWwa80mMpkg/sTV9HB8Dx6jKXB/ZUhoHHBk2dxEuqPiApp +GWSZI1b7rCoucL5mxAyE7+WL85MB+GqQk2dLsmijtWKP6T+MejteD+eMuMZ87zf9 +dOLITzNy4ZQ5bb0Sr74MTnB8G2+NszKTc0QWbej09+CVgI+WXTik9KveCjCHk9hN +AHFiRSdLOkKEW39lt2c0Ui2cFmuqqNh7o0JMcccMyj6D5KbvtwEwXlGjefVwaaZB +RA+GsCyRxj3qrg+E +-----END CERTIFICATE----- + +# Issuer: CN=e-Szigno Root CA 2017 O=Microsec Ltd. +# Subject: CN=e-Szigno Root CA 2017 O=Microsec Ltd. +# Label: "e-Szigno Root CA 2017" +# Serial: 411379200276854331539784714 +# MD5 Fingerprint: de:1f:f6:9e:84:ae:a7:b4:21:ce:1e:58:7d:d1:84:98 +# SHA1 Fingerprint: 89:d4:83:03:4f:9e:9a:48:80:5f:72:37:d4:a9:a6:ef:cb:7c:1f:d1 +# SHA256 Fingerprint: be:b0:0b:30:83:9b:9b:c3:2c:32:e4:44:79:05:95:06:41:f2:64:21:b1:5e:d0:89:19:8b:51:8a:e2:ea:1b:99 +-----BEGIN CERTIFICATE----- +MIICQDCCAeWgAwIBAgIMAVRI7yH9l1kN9QQKMAoGCCqGSM49BAMCMHExCzAJBgNV +BAYTAkhVMREwDwYDVQQHDAhCdWRhcGVzdDEWMBQGA1UECgwNTWljcm9zZWMgTHRk +LjEXMBUGA1UEYQwOVkFUSFUtMjM1ODQ0OTcxHjAcBgNVBAMMFWUtU3ppZ25vIFJv +b3QgQ0EgMjAxNzAeFw0xNzA4MjIxMjA3MDZaFw00MjA4MjIxMjA3MDZaMHExCzAJ +BgNVBAYTAkhVMREwDwYDVQQHDAhCdWRhcGVzdDEWMBQGA1UECgwNTWljcm9zZWMg +THRkLjEXMBUGA1UEYQwOVkFUSFUtMjM1ODQ0OTcxHjAcBgNVBAMMFWUtU3ppZ25v +IFJvb3QgQ0EgMjAxNzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABJbcPYrYsHtv +xie+RJCxs1YVe45DJH0ahFnuY2iyxl6H0BVIHqiQrb1TotreOpCmYF9oMrWGQd+H +Wyx7xf58etqjYzBhMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0G +A1UdDgQWBBSHERUI0arBeAyxr87GyZDvvzAEwDAfBgNVHSMEGDAWgBSHERUI0arB +eAyxr87GyZDvvzAEwDAKBggqhkjOPQQDAgNJADBGAiEAtVfd14pVCzbhhkT61Nlo +jbjcI4qKDdQvfepz7L9NbKgCIQDLpbQS+ue16M9+k/zzNY9vTlp8tLxOsvxyqltZ ++efcMQ== +-----END CERTIFICATE----- + +# Issuer: O=CERTSIGN SA OU=certSIGN ROOT CA G2 +# Subject: O=CERTSIGN SA OU=certSIGN ROOT CA G2 +# Label: "certSIGN Root CA G2" +# Serial: 313609486401300475190 +# MD5 Fingerprint: 8c:f1:75:8a:c6:19:cf:94:b7:f7:65:20:87:c3:97:c7 +# SHA1 Fingerprint: 26:f9:93:b4:ed:3d:28:27:b0:b9:4b:a7:e9:15:1d:a3:8d:92:e5:32 +# SHA256 Fingerprint: 65:7c:fe:2f:a7:3f:aa:38:46:25:71:f3:32:a2:36:3a:46:fc:e7:02:09:51:71:07:02:cd:fb:b6:ee:da:33:05 +-----BEGIN CERTIFICATE----- +MIIFRzCCAy+gAwIBAgIJEQA0tk7GNi02MA0GCSqGSIb3DQEBCwUAMEExCzAJBgNV +BAYTAlJPMRQwEgYDVQQKEwtDRVJUU0lHTiBTQTEcMBoGA1UECxMTY2VydFNJR04g +Uk9PVCBDQSBHMjAeFw0xNzAyMDYwOTI3MzVaFw00MjAyMDYwOTI3MzVaMEExCzAJ +BgNVBAYTAlJPMRQwEgYDVQQKEwtDRVJUU0lHTiBTQTEcMBoGA1UECxMTY2VydFNJ +R04gUk9PVCBDQSBHMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMDF +dRmRfUR0dIf+DjuW3NgBFszuY5HnC2/OOwppGnzC46+CjobXXo9X69MhWf05N0Iw +vlDqtg+piNguLWkh59E3GE59kdUWX2tbAMI5Qw02hVK5U2UPHULlj88F0+7cDBrZ +uIt4ImfkabBoxTzkbFpG583H+u/E7Eu9aqSs/cwoUe+StCmrqzWaTOTECMYmzPhp +n+Sc8CnTXPnGFiWeI8MgwT0PPzhAsP6CRDiqWhqKa2NYOLQV07YRaXseVO6MGiKs +cpc/I1mbySKEwQdPzH/iV8oScLumZfNpdWO9lfsbl83kqK/20U6o2YpxJM02PbyW +xPFsqa7lzw1uKA2wDrXKUXt4FMMgL3/7FFXhEZn91QqhngLjYl/rNUssuHLoPj1P +rCy7Lobio3aP5ZMqz6WryFyNSwb/EkaseMsUBzXgqd+L6a8VTxaJW732jcZZroiF +DsGJ6x9nxUWO/203Nit4ZoORUSs9/1F3dmKh7Gc+PoGD4FapUB8fepmrY7+EF3fx +DTvf95xhszWYijqy7DwaNz9+j5LP2RIUZNoQAhVB/0/E6xyjyfqZ90bp4RjZsbgy +LcsUDFDYg2WD7rlcz8sFWkz6GZdr1l0T08JcVLwyc6B49fFtHsufpaafItzRUZ6C +eWRgKRM+o/1Pcmqr4tTluCRVLERLiohEnMqE0yo7AgMBAAGjQjBAMA8GA1UdEwEB +/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBSCIS1mxteg4BXrzkwJ +d8RgnlRuAzANBgkqhkiG9w0BAQsFAAOCAgEAYN4auOfyYILVAzOBywaK8SJJ6ejq +kX/GM15oGQOGO0MBzwdw5AgeZYWR5hEit/UCI46uuR59H35s5r0l1ZUa8gWmr4UC +b6741jH/JclKyMeKqdmfS0mbEVeZkkMR3rYzpMzXjWR91M08KCy0mpbqTfXERMQl +qiCA2ClV9+BB/AYm/7k29UMUA2Z44RGx2iBfRgB4ACGlHgAoYXhvqAEBj500mv/0 +OJD7uNGzcgbJceaBxXntC6Z58hMLnPddDnskk7RI24Zf3lCGeOdA5jGokHZwYa+c +NywRtYK3qq4kNFtyDGkNzVmf9nGvnAvRCjj5BiKDUyUM/FHE5r7iOZULJK2v0ZXk +ltd0ZGtxTgI8qoXzIKNDOXZbbFD+mpwUHmUUihW9o4JFWklWatKcsWMy5WHgUyIO +pwpJ6st+H6jiYoD2EEVSmAYY3qXNL3+q1Ok+CHLsIwMCPKaq2LxndD0UF/tUSxfj +03k9bWtJySgOLnRQvwzZRjoQhsmnP+mg7H/rpXdYaXHmgwo38oZJar55CJD2AhZk +PuXaTH4MNMn5X7azKFGnpyuqSfqNZSlO42sTp5SjLVFteAxEy9/eCG/Oo2Sr05WE +1LlSVHJ7liXMvGnjSG4N0MedJ5qq+BOS3R7fY581qRY27Iy4g/Q9iY/NtBde17MX +QRBdJ3NghVdJIgc= +-----END CERTIFICATE----- + +# Issuer: CN=Trustwave Global Certification Authority O=Trustwave Holdings, Inc. +# Subject: CN=Trustwave Global Certification Authority O=Trustwave Holdings, Inc. +# Label: "Trustwave Global Certification Authority" +# Serial: 1846098327275375458322922162 +# MD5 Fingerprint: f8:1c:18:2d:2f:ba:5f:6d:a1:6c:bc:c7:ab:91:c7:0e +# SHA1 Fingerprint: 2f:8f:36:4f:e1:58:97:44:21:59:87:a5:2a:9a:d0:69:95:26:7f:b5 +# SHA256 Fingerprint: 97:55:20:15:f5:dd:fc:3c:87:88:c0:06:94:45:55:40:88:94:45:00:84:f1:00:86:70:86:bc:1a:2b:b5:8d:c8 +-----BEGIN CERTIFICATE----- +MIIF2jCCA8KgAwIBAgIMBfcOhtpJ80Y1LrqyMA0GCSqGSIb3DQEBCwUAMIGIMQsw +CQYDVQQGEwJVUzERMA8GA1UECAwISWxsaW5vaXMxEDAOBgNVBAcMB0NoaWNhZ28x +ITAfBgNVBAoMGFRydXN0d2F2ZSBIb2xkaW5ncywgSW5jLjExMC8GA1UEAwwoVHJ1 +c3R3YXZlIEdsb2JhbCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0xNzA4MjMx +OTM0MTJaFw00MjA4MjMxOTM0MTJaMIGIMQswCQYDVQQGEwJVUzERMA8GA1UECAwI +SWxsaW5vaXMxEDAOBgNVBAcMB0NoaWNhZ28xITAfBgNVBAoMGFRydXN0d2F2ZSBI +b2xkaW5ncywgSW5jLjExMC8GA1UEAwwoVHJ1c3R3YXZlIEdsb2JhbCBDZXJ0aWZp +Y2F0aW9uIEF1dGhvcml0eTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIB +ALldUShLPDeS0YLOvR29zd24q88KPuFd5dyqCblXAj7mY2Hf8g+CY66j96xz0Xzn +swuvCAAJWX/NKSqIk4cXGIDtiLK0thAfLdZfVaITXdHG6wZWiYj+rDKd/VzDBcdu +7oaJuogDnXIhhpCujwOl3J+IKMujkkkP7NAP4m1ET4BqstTnoApTAbqOl5F2brz8 +1Ws25kCI1nsvXwXoLG0R8+eyvpJETNKXpP7ScoFDB5zpET71ixpZfR9oWN0EACyW +80OzfpgZdNmcc9kYvkHHNHnZ9GLCQ7mzJ7Aiy/k9UscwR7PJPrhq4ufogXBeQotP +JqX+OsIgbrv4Fo7NDKm0G2x2EOFYeUY+VM6AqFcJNykbmROPDMjWLBz7BegIlT1l +RtzuzWniTY+HKE40Cz7PFNm73bZQmq131BnW2hqIyE4bJ3XYsgjxroMwuREOzYfw +hI0Vcnyh78zyiGG69Gm7DIwLdVcEuE4qFC49DxweMqZiNu5m4iK4BUBjECLzMx10 +coos9TkpoNPnG4CELcU9402x/RpvumUHO1jsQkUm+9jaJXLE9gCxInm943xZYkqc +BW89zubWR2OZxiRvchLIrH+QtAuRcOi35hYQcRfO3gZPSEF9NUqjifLJS3tBEW1n +twiYTOURGa5CgNz7kAXU+FDKvuStx8KU1xad5hePrzb7AgMBAAGjQjBAMA8GA1Ud +EwEB/wQFMAMBAf8wHQYDVR0OBBYEFJngGWcNYtt2s9o9uFvo/ULSMQ6HMA4GA1Ud +DwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAmHNw4rDT7TnsTGDZqRKGFx6W +0OhUKDtkLSGm+J1WE2pIPU/HPinbbViDVD2HfSMF1OQc3Og4ZYbFdada2zUFvXfe +uyk3QAUHw5RSn8pk3fEbK9xGChACMf1KaA0HZJDmHvUqoai7PF35owgLEQzxPy0Q +lG/+4jSHg9bP5Rs1bdID4bANqKCqRieCNqcVtgimQlRXtpla4gt5kNdXElE1GYhB +aCXUNxeEFfsBctyV3lImIJgm4nb1J2/6ADtKYdkNy1GTKv0WBpanI5ojSP5RvbbE +sLFUzt5sQa0WZ37b/TjNuThOssFgy50X31ieemKyJo90lZvkWx3SD92YHJtZuSPT +MaCm/zjdzyBP6VhWOmfD0faZmZ26NraAL4hHT4a/RDqA5Dccprrql5gR0IRiR2Qe +qu5AvzSxnI9O4fKSTx+O856X3vOmeWqJcU9LJxdI/uz0UA9PSX3MReO9ekDFQdxh +VicGaeVyQYHTtgGJoC86cnn+OjC/QezHYj6RS8fZMXZC+fc8Y+wmjHMMfRod6qh8 +h6jCJ3zhM0EPz8/8AKAigJ5Kp28AsEFFtyLKaEjFQqKu3R3y4G5OBVixwJAWKqQ9 +EEC+j2Jjg6mcgn0tAumDMHzLJ8n9HmYAsC7TIS+OMxZsmO0QqAfWzJPP29FpHOTK +yeC2nOnOcXHebD8WpHk= +-----END CERTIFICATE----- + +# Issuer: CN=Trustwave Global ECC P256 Certification Authority O=Trustwave Holdings, Inc. +# Subject: CN=Trustwave Global ECC P256 Certification Authority O=Trustwave Holdings, Inc. +# Label: "Trustwave Global ECC P256 Certification Authority" +# Serial: 4151900041497450638097112925 +# MD5 Fingerprint: 5b:44:e3:8d:5d:36:86:26:e8:0d:05:d2:59:a7:83:54 +# SHA1 Fingerprint: b4:90:82:dd:45:0c:be:8b:5b:b1:66:d3:e2:a4:08:26:cd:ed:42:cf +# SHA256 Fingerprint: 94:5b:bc:82:5e:a5:54:f4:89:d1:fd:51:a7:3d:df:2e:a6:24:ac:70:19:a0:52:05:22:5c:22:a7:8c:cf:a8:b4 +-----BEGIN CERTIFICATE----- +MIICYDCCAgegAwIBAgIMDWpfCD8oXD5Rld9dMAoGCCqGSM49BAMCMIGRMQswCQYD +VQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAf +BgNVBAoTGFRydXN0d2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3 +YXZlIEdsb2JhbCBFQ0MgUDI1NiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0x +NzA4MjMxOTM1MTBaFw00MjA4MjMxOTM1MTBaMIGRMQswCQYDVQQGEwJVUzERMA8G +A1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRydXN0 +d2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3YXZlIEdsb2JhbCBF +Q0MgUDI1NiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTBZMBMGByqGSM49AgEGCCqG +SM49AwEHA0IABH77bOYj43MyCMpg5lOcunSNGLB4kFKA3TjASh3RqMyTpJcGOMoN +FWLGjgEqZZ2q3zSRLoHB5DOSMcT9CTqmP62jQzBBMA8GA1UdEwEB/wQFMAMBAf8w +DwYDVR0PAQH/BAUDAwcGADAdBgNVHQ4EFgQUo0EGrJBt0UrrdaVKEJmzsaGLSvcw +CgYIKoZIzj0EAwIDRwAwRAIgB+ZU2g6gWrKuEZ+Hxbb/ad4lvvigtwjzRM4q3wgh +DDcCIC0mA6AFvWvR9lz4ZcyGbbOcNEhjhAnFjXca4syc4XR7 +-----END CERTIFICATE----- + +# Issuer: CN=Trustwave Global ECC P384 Certification Authority O=Trustwave Holdings, Inc. +# Subject: CN=Trustwave Global ECC P384 Certification Authority O=Trustwave Holdings, Inc. +# Label: "Trustwave Global ECC P384 Certification Authority" +# Serial: 2704997926503831671788816187 +# MD5 Fingerprint: ea:cf:60:c4:3b:b9:15:29:40:a1:97:ed:78:27:93:d6 +# SHA1 Fingerprint: e7:f3:a3:c8:cf:6f:c3:04:2e:6d:0e:67:32:c5:9e:68:95:0d:5e:d2 +# SHA256 Fingerprint: 55:90:38:59:c8:c0:c3:eb:b8:75:9e:ce:4e:25:57:22:5f:f5:75:8b:bd:38:eb:d4:82:76:60:1e:1b:d5:80:97 +-----BEGIN CERTIFICATE----- +MIICnTCCAiSgAwIBAgIMCL2Fl2yZJ6SAaEc7MAoGCCqGSM49BAMDMIGRMQswCQYD +VQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAf +BgNVBAoTGFRydXN0d2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3 +YXZlIEdsb2JhbCBFQ0MgUDM4NCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0x +NzA4MjMxOTM2NDNaFw00MjA4MjMxOTM2NDNaMIGRMQswCQYDVQQGEwJVUzERMA8G +A1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRydXN0 +d2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3YXZlIEdsb2JhbCBF +Q0MgUDM4NCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTB2MBAGByqGSM49AgEGBSuB +BAAiA2IABGvaDXU1CDFHBa5FmVXxERMuSvgQMSOjfoPTfygIOiYaOs+Xgh+AtycJ +j9GOMMQKmw6sWASr9zZ9lCOkmwqKi6vr/TklZvFe/oyujUF5nQlgziip04pt89ZF +1PKYhDhloKNDMEEwDwYDVR0TAQH/BAUwAwEB/zAPBgNVHQ8BAf8EBQMDBwYAMB0G +A1UdDgQWBBRVqYSJ0sEyvRjLbKYHTsjnnb6CkDAKBggqhkjOPQQDAwNnADBkAjA3 +AZKXRRJ+oPM+rRk6ct30UJMDEr5E0k9BpIycnR+j9sKS50gU/k6bpZFXrsY3crsC +MGclCrEMXu6pY5Jv5ZAL/mYiykf9ijH3g/56vxC+GCsej/YpHpRZ744hN8tRmKVu +Sw== +-----END CERTIFICATE----- + +# Issuer: CN=NAVER Global Root Certification Authority O=NAVER BUSINESS PLATFORM Corp. +# Subject: CN=NAVER Global Root Certification Authority O=NAVER BUSINESS PLATFORM Corp. +# Label: "NAVER Global Root Certification Authority" +# Serial: 9013692873798656336226253319739695165984492813 +# MD5 Fingerprint: c8:7e:41:f6:25:3b:f5:09:b3:17:e8:46:3d:bf:d0:9b +# SHA1 Fingerprint: 8f:6b:f2:a9:27:4a:da:14:a0:c4:f4:8e:61:27:f9:c0:1e:78:5d:d1 +# SHA256 Fingerprint: 88:f4:38:dc:f8:ff:d1:fa:8f:42:91:15:ff:e5:f8:2a:e1:e0:6e:0c:70:c3:75:fa:ad:71:7b:34:a4:9e:72:65 +-----BEGIN CERTIFICATE----- +MIIFojCCA4qgAwIBAgIUAZQwHqIL3fXFMyqxQ0Rx+NZQTQ0wDQYJKoZIhvcNAQEM +BQAwaTELMAkGA1UEBhMCS1IxJjAkBgNVBAoMHU5BVkVSIEJVU0lORVNTIFBMQVRG +T1JNIENvcnAuMTIwMAYDVQQDDClOQVZFUiBHbG9iYWwgUm9vdCBDZXJ0aWZpY2F0 +aW9uIEF1dGhvcml0eTAeFw0xNzA4MTgwODU4NDJaFw0zNzA4MTgyMzU5NTlaMGkx +CzAJBgNVBAYTAktSMSYwJAYDVQQKDB1OQVZFUiBCVVNJTkVTUyBQTEFURk9STSBD +b3JwLjEyMDAGA1UEAwwpTkFWRVIgR2xvYmFsIFJvb3QgQ2VydGlmaWNhdGlvbiBB +dXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC21PGTXLVA +iQqrDZBbUGOukJR0F0Vy1ntlWilLp1agS7gvQnXp2XskWjFlqxcX0TM62RHcQDaH +38dq6SZeWYp34+hInDEW+j6RscrJo+KfziFTowI2MMtSAuXaMl3Dxeb57hHHi8lE +HoSTGEq0n+USZGnQJoViAbbJAh2+g1G7XNr4rRVqmfeSVPc0W+m/6imBEtRTkZaz +kVrd/pBzKPswRrXKCAfHcXLJZtM0l/aM9BhK4dA9WkW2aacp+yPOiNgSnABIqKYP +szuSjXEOdMWLyEz59JuOuDxp7W87UC9Y7cSw0BwbagzivESq2M0UXZR4Yb8Obtoq +vC8MC3GmsxY/nOb5zJ9TNeIDoKAYv7vxvvTWjIcNQvcGufFt7QSUqP620wbGQGHf +nZ3zVHbOUzoBppJB7ASjjw2i1QnK1sua8e9DXcCrpUHPXFNwcMmIpi3Ua2FzUCaG +YQ5fG8Ir4ozVu53BA0K6lNpfqbDKzE0K70dpAy8i+/Eozr9dUGWokG2zdLAIx6yo +0es+nPxdGoMuK8u180SdOqcXYZaicdNwlhVNt0xz7hlcxVs+Qf6sdWA7G2POAN3a +CJBitOUt7kinaxeZVL6HSuOpXgRM6xBtVNbv8ejyYhbLgGvtPe31HzClrkvJE+2K +AQHJuFFYwGY6sWZLxNUxAmLpdIQM201GLQIDAQABo0IwQDAdBgNVHQ4EFgQU0p+I +36HNLL3s9TsBAZMzJ7LrYEswDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMB +Af8wDQYJKoZIhvcNAQEMBQADggIBADLKgLOdPVQG3dLSLvCkASELZ0jKbY7gyKoN +qo0hV4/GPnrK21HUUrPUloSlWGB/5QuOH/XcChWB5Tu2tyIvCZwTFrFsDDUIbatj +cu3cvuzHV+YwIHHW1xDBE1UBjCpD5EHxzzp6U5LOogMFDTjfArsQLtk70pt6wKGm ++LUx5vR1yblTmXVHIloUFcd4G7ad6Qz4G3bxhYTeodoS76TiEJd6eN4MUZeoIUCL +hr0N8F5OSza7OyAfikJW4Qsav3vQIkMsRIz75Sq0bBwcupTgE34h5prCy8VCZLQe +lHsIJchxzIdFV4XTnyliIoNRlwAYl3dqmJLJfGBs32x9SuRwTMKeuB330DTHD8z7 +p/8Dvq1wkNoL3chtl1+afwkyQf3NosxabUzyqkn+Zvjp2DXrDige7kgvOtB5CTh8 +piKCk5XQA76+AqAF3SAi428diDRgxuYKuQl1C/AH6GmWNcf7I4GOODm4RStDeKLR +LBT/DShycpWbXgnbiUSYqqFJu3FS8r/2/yehNq+4tneI3TqkbZs0kNwUXTC/t+sX +5Ie3cdCh13cV1ELX8vMxmV2b3RZtP+oGI/hGoiLtk/bdmuYqh7GYVPEi92tF4+KO +dh2ajcQGjTa3FPOdVGm3jjzVpG2Tgbet9r1ke8LJaDmgkpzNNIaRkPpkUZ3+/uul +9XXeifdy +-----END CERTIFICATE----- + +# Issuer: CN=AC RAIZ FNMT-RCM SERVIDORES SEGUROS O=FNMT-RCM OU=Ceres +# Subject: CN=AC RAIZ FNMT-RCM SERVIDORES SEGUROS O=FNMT-RCM OU=Ceres +# Label: "AC RAIZ FNMT-RCM SERVIDORES SEGUROS" +# Serial: 131542671362353147877283741781055151509 +# MD5 Fingerprint: 19:36:9c:52:03:2f:d2:d1:bb:23:cc:dd:1e:12:55:bb +# SHA1 Fingerprint: 62:ff:d9:9e:c0:65:0d:03:ce:75:93:d2:ed:3f:2d:32:c9:e3:e5:4a +# SHA256 Fingerprint: 55:41:53:b1:3d:2c:f9:dd:b7:53:bf:be:1a:4e:0a:e0:8d:0a:a4:18:70:58:fe:60:a2:b8:62:b2:e4:b8:7b:cb +-----BEGIN CERTIFICATE----- +MIICbjCCAfOgAwIBAgIQYvYybOXE42hcG2LdnC6dlTAKBggqhkjOPQQDAzB4MQsw +CQYDVQQGEwJFUzERMA8GA1UECgwIRk5NVC1SQ00xDjAMBgNVBAsMBUNlcmVzMRgw +FgYDVQRhDA9WQVRFUy1RMjgyNjAwNEoxLDAqBgNVBAMMI0FDIFJBSVogRk5NVC1S +Q00gU0VSVklET1JFUyBTRUdVUk9TMB4XDTE4MTIyMDA5MzczM1oXDTQzMTIyMDA5 +MzczM1oweDELMAkGA1UEBhMCRVMxETAPBgNVBAoMCEZOTVQtUkNNMQ4wDAYDVQQL +DAVDZXJlczEYMBYGA1UEYQwPVkFURVMtUTI4MjYwMDRKMSwwKgYDVQQDDCNBQyBS +QUlaIEZOTVQtUkNNIFNFUlZJRE9SRVMgU0VHVVJPUzB2MBAGByqGSM49AgEGBSuB +BAAiA2IABPa6V1PIyqvfNkpSIeSX0oNnnvBlUdBeh8dHsVnyV0ebAAKTRBdp20LH +sbI6GA60XYyzZl2hNPk2LEnb80b8s0RpRBNm/dfF/a82Tc4DTQdxz69qBdKiQ1oK +Um8BA06Oi6NCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYD +VR0OBBYEFAG5L++/EYZg8k/QQW6rcx/n0m5JMAoGCCqGSM49BAMDA2kAMGYCMQCu +SuMrQMN0EfKVrRYj3k4MGuZdpSRea0R7/DjiT8ucRRcRTBQnJlU5dUoDzBOQn5IC +MQD6SmxgiHPz7riYYqnOK8LZiqZwMR2vsJRM60/G49HzYqc8/5MuB1xJAWdpEgJy +v+c= +-----END CERTIFICATE----- + +# Issuer: CN=GlobalSign Root R46 O=GlobalSign nv-sa +# Subject: CN=GlobalSign Root R46 O=GlobalSign nv-sa +# Label: "GlobalSign Root R46" +# Serial: 1552617688466950547958867513931858518042577 +# MD5 Fingerprint: c4:14:30:e4:fa:66:43:94:2a:6a:1b:24:5f:19:d0:ef +# SHA1 Fingerprint: 53:a2:b0:4b:ca:6b:d6:45:e6:39:8a:8e:c4:0d:d2:bf:77:c3:a2:90 +# SHA256 Fingerprint: 4f:a3:12:6d:8d:3a:11:d1:c4:85:5a:4f:80:7c:ba:d6:cf:91:9d:3a:5a:88:b0:3b:ea:2c:63:72:d9:3c:40:c9 +-----BEGIN CERTIFICATE----- +MIIFWjCCA0KgAwIBAgISEdK7udcjGJ5AXwqdLdDfJWfRMA0GCSqGSIb3DQEBDAUA +MEYxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRwwGgYD +VQQDExNHbG9iYWxTaWduIFJvb3QgUjQ2MB4XDTE5MDMyMDAwMDAwMFoXDTQ2MDMy +MDAwMDAwMFowRjELMAkGA1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYt +c2ExHDAaBgNVBAMTE0dsb2JhbFNpZ24gUm9vdCBSNDYwggIiMA0GCSqGSIb3DQEB +AQUAA4ICDwAwggIKAoICAQCsrHQy6LNl5brtQyYdpokNRbopiLKkHWPd08EsCVeJ +OaFV6Wc0dwxu5FUdUiXSE2te4R2pt32JMl8Nnp8semNgQB+msLZ4j5lUlghYruQG +vGIFAha/r6gjA7aUD7xubMLL1aa7DOn2wQL7Id5m3RerdELv8HQvJfTqa1VbkNud +316HCkD7rRlr+/fKYIje2sGP1q7Vf9Q8g+7XFkyDRTNrJ9CG0Bwta/OrffGFqfUo +0q3v84RLHIf8E6M6cqJaESvWJ3En7YEtbWaBkoe0G1h6zD8K+kZPTXhc+CtI4wSE +y132tGqzZfxCnlEmIyDLPRT5ge1lFgBPGmSXZgjPjHvjK8Cd+RTyG/FWaha/LIWF +zXg4mutCagI0GIMXTpRW+LaCtfOW3T3zvn8gdz57GSNrLNRyc0NXfeD412lPFzYE ++cCQYDdF3uYM2HSNrpyibXRdQr4G9dlkbgIQrImwTDsHTUB+JMWKmIJ5jqSngiCN +I/onccnfxkF0oE32kRbcRoxfKWMxWXEM2G/CtjJ9++ZdU6Z+Ffy7dXxd7Pj2Fxzs +x2sZy/N78CsHpdlseVR2bJ0cpm4O6XkMqCNqo98bMDGfsVR7/mrLZqrcZdCinkqa +ByFrgY/bxFn63iLABJzjqls2k+g9vXqhnQt2sQvHnf3PmKgGwvgqo6GDoLclcqUC +4wIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNV +HQ4EFgQUA1yrc4GHqMywptWU4jaWSf8FmSwwDQYJKoZIhvcNAQEMBQADggIBAHx4 +7PYCLLtbfpIrXTncvtgdokIzTfnvpCo7RGkerNlFo048p9gkUbJUHJNOxO97k4Vg +JuoJSOD1u8fpaNK7ajFxzHmuEajwmf3lH7wvqMxX63bEIaZHU1VNaL8FpO7XJqti +2kM3S+LGteWygxk6x9PbTZ4IevPuzz5i+6zoYMzRx6Fcg0XERczzF2sUyQQCPtIk +pnnpHs6i58FZFZ8d4kuaPp92CC1r2LpXFNqD6v6MVenQTqnMdzGxRBF6XLE+0xRF +FRhiJBPSy03OXIPBNvIQtQ6IbbjhVp+J3pZmOUdkLG5NrmJ7v2B0GbhWrJKsFjLt +rWhV/pi60zTe9Mlhww6G9kuEYO4Ne7UyWHmRVSyBQ7N0H3qqJZ4d16GLuc1CLgSk +ZoNNiTW2bKg2SnkheCLQQrzRQDGQob4Ez8pn7fXwgNNgyYMqIgXQBztSvwyeqiv5 +u+YfjyW6hY0XHgL+XVAEV8/+LbzvXMAaq7afJMbfc2hIkCwU9D9SGuTSyxTDYWnP +4vkYxboznxSjBF25cfe1lNj2M8FawTSLfJvdkzrnE6JwYZ+vj+vYxXX4M2bUdGc6 +N3ec592kD3ZDZopD8p/7DEJ4Y9HiD2971KE9dJeFt0g5QdYg/NA6s/rob8SKunE3 +vouXsXgxT7PntgMTzlSdriVZzH81Xwj3QEUxeCp6 +-----END CERTIFICATE----- + +# Issuer: CN=GlobalSign Root E46 O=GlobalSign nv-sa +# Subject: CN=GlobalSign Root E46 O=GlobalSign nv-sa +# Label: "GlobalSign Root E46" +# Serial: 1552617690338932563915843282459653771421763 +# MD5 Fingerprint: b5:b8:66:ed:de:08:83:e3:c9:e2:01:34:06:ac:51:6f +# SHA1 Fingerprint: 39:b4:6c:d5:fe:80:06:eb:e2:2f:4a:bb:08:33:a0:af:db:b9:dd:84 +# SHA256 Fingerprint: cb:b9:c4:4d:84:b8:04:3e:10:50:ea:31:a6:9f:51:49:55:d7:bf:d2:e2:c6:b4:93:01:01:9a:d6:1d:9f:50:58 +-----BEGIN CERTIFICATE----- +MIICCzCCAZGgAwIBAgISEdK7ujNu1LzmJGjFDYQdmOhDMAoGCCqGSM49BAMDMEYx +CzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRwwGgYDVQQD +ExNHbG9iYWxTaWduIFJvb3QgRTQ2MB4XDTE5MDMyMDAwMDAwMFoXDTQ2MDMyMDAw +MDAwMFowRjELMAkGA1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2Ex +HDAaBgNVBAMTE0dsb2JhbFNpZ24gUm9vdCBFNDYwdjAQBgcqhkjOPQIBBgUrgQQA +IgNiAAScDrHPt+ieUnd1NPqlRqetMhkytAepJ8qUuwzSChDH2omwlwxwEwkBjtjq +R+q+soArzfwoDdusvKSGN+1wCAB16pMLey5SnCNoIwZD7JIvU4Tb+0cUB+hflGdd +yXqBPCCjQjBAMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1Ud +DgQWBBQxCpCPtsad0kRLgLWi5h+xEk8blTAKBggqhkjOPQQDAwNoADBlAjEA31SQ +7Zvvi5QCkxeCmb6zniz2C5GMn0oUsfZkvLtoURMMA/cVi4RguYv/Uo7njLwcAjA8 ++RHUjE7AwWHCFUyqqx0LMV87HOIAl0Qx5v5zli/altP+CAezNIm8BZ/3Hobui3A= +-----END CERTIFICATE----- + +# Issuer: CN=GLOBALTRUST 2020 O=e-commerce monitoring GmbH +# Subject: CN=GLOBALTRUST 2020 O=e-commerce monitoring GmbH +# Label: "GLOBALTRUST 2020" +# Serial: 109160994242082918454945253 +# MD5 Fingerprint: 8a:c7:6f:cb:6d:e3:cc:a2:f1:7c:83:fa:0e:78:d7:e8 +# SHA1 Fingerprint: d0:67:c1:13:51:01:0c:aa:d0:c7:6a:65:37:31:16:26:4f:53:71:a2 +# SHA256 Fingerprint: 9a:29:6a:51:82:d1:d4:51:a2:e3:7f:43:9b:74:da:af:a2:67:52:33:29:f9:0f:9a:0d:20:07:c3:34:e2:3c:9a +-----BEGIN CERTIFICATE----- +MIIFgjCCA2qgAwIBAgILWku9WvtPilv6ZeUwDQYJKoZIhvcNAQELBQAwTTELMAkG +A1UEBhMCQVQxIzAhBgNVBAoTGmUtY29tbWVyY2UgbW9uaXRvcmluZyBHbWJIMRkw +FwYDVQQDExBHTE9CQUxUUlVTVCAyMDIwMB4XDTIwMDIxMDAwMDAwMFoXDTQwMDYx +MDAwMDAwMFowTTELMAkGA1UEBhMCQVQxIzAhBgNVBAoTGmUtY29tbWVyY2UgbW9u +aXRvcmluZyBHbWJIMRkwFwYDVQQDExBHTE9CQUxUUlVTVCAyMDIwMIICIjANBgkq +hkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAri5WrRsc7/aVj6B3GyvTY4+ETUWiD59b +RatZe1E0+eyLinjF3WuvvcTfk0Uev5E4C64OFudBc/jbu9G4UeDLgztzOG53ig9Z +YybNpyrOVPu44sB8R85gfD+yc/LAGbaKkoc1DZAoouQVBGM+uq/ufF7MpotQsjj3 +QWPKzv9pj2gOlTblzLmMCcpL3TGQlsjMH/1WljTbjhzqLL6FLmPdqqmV0/0plRPw +yJiT2S0WR5ARg6I6IqIoV6Lr/sCMKKCmfecqQjuCgGOlYx8ZzHyyZqjC0203b+J+ +BlHZRYQfEs4kUmSFC0iAToexIiIwquuuvuAC4EDosEKAA1GqtH6qRNdDYfOiaxaJ +SaSjpCuKAsR49GiKweR6NrFvG5Ybd0mN1MkGco/PU+PcF4UgStyYJ9ORJitHHmkH +r96i5OTUawuzXnzUJIBHKWk7buis/UDr2O1xcSvy6Fgd60GXIsUf1DnQJ4+H4xj0 +4KlGDfV0OoIu0G4skaMxXDtG6nsEEFZegB31pWXogvziB4xiRfUg3kZwhqG8k9Me +dKZssCz3AwyIDMvUclOGvGBG85hqwvG/Q/lwIHfKN0F5VVJjjVsSn8VoxIidrPIw +q7ejMZdnrY8XD2zHc+0klGvIg5rQmjdJBKuxFshsSUktq6HQjJLyQUp5ISXbY9e2 +nKd+Qmn7OmMCAwEAAaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC +AQYwHQYDVR0OBBYEFNwuH9FhN3nkq9XVsxJxaD1qaJwiMB8GA1UdIwQYMBaAFNwu +H9FhN3nkq9XVsxJxaD1qaJwiMA0GCSqGSIb3DQEBCwUAA4ICAQCR8EICaEDuw2jA +VC/f7GLDw56KoDEoqoOOpFaWEhCGVrqXctJUMHytGdUdaG/7FELYjQ7ztdGl4wJC +XtzoRlgHNQIw4Lx0SsFDKv/bGtCwr2zD/cuz9X9tAy5ZVp0tLTWMstZDFyySCstd +6IwPS3BD0IL/qMy/pJTAvoe9iuOTe8aPmxadJ2W8esVCgmxcB9CpwYhgROmYhRZf ++I/KARDOJcP5YBugxZfD0yyIMaK9MOzQ0MAS8cE54+X1+NZK3TTN+2/BT+MAi1bi +kvcoskJ3ciNnxz8RFbLEAwW+uxF7Cr+obuf/WEPPm2eggAe2HcqtbepBEX4tdJP7 +wry+UUTF72glJ4DjyKDUEuzZpTcdN3y0kcra1LGWge9oXHYQSa9+pTeAsRxSvTOB +TI/53WXZFM2KJVj04sWDpQmQ1GwUY7VA3+vA/MRYfg0UFodUJ25W5HCEuGwyEn6C +MUO+1918oa2u1qsgEu8KwxCMSZY13At1XrFP1U80DhEgB3VDRemjEdqso5nCtnkn +4rnvyOL2NSl6dPrFf4IFYqYK6miyeUcGbvJXqBUzxvd4Sj1Ce2t+/vdG6tHrju+I +aFvowdlxfv1k7/9nR4hYJS8+hge9+6jlgqispdNpQ80xiEmEU5LAsTkbOYMBMMTy +qfrQA71yN2BWHzZ8vTmR9W0Nv3vXkg== +-----END CERTIFICATE----- + +# Issuer: CN=ANF Secure Server Root CA O=ANF Autoridad de Certificacion OU=ANF CA Raiz +# Subject: CN=ANF Secure Server Root CA O=ANF Autoridad de Certificacion OU=ANF CA Raiz +# Label: "ANF Secure Server Root CA" +# Serial: 996390341000653745 +# MD5 Fingerprint: 26:a6:44:5a:d9:af:4e:2f:b2:1d:b6:65:b0:4e:e8:96 +# SHA1 Fingerprint: 5b:6e:68:d0:cc:15:b6:a0:5f:1e:c1:5f:ae:02:fc:6b:2f:5d:6f:74 +# SHA256 Fingerprint: fb:8f:ec:75:91:69:b9:10:6b:1e:51:16:44:c6:18:c5:13:04:37:3f:6c:06:43:08:8d:8b:ef:fd:1b:99:75:99 +-----BEGIN CERTIFICATE----- +MIIF7zCCA9egAwIBAgIIDdPjvGz5a7EwDQYJKoZIhvcNAQELBQAwgYQxEjAQBgNV +BAUTCUc2MzI4NzUxMDELMAkGA1UEBhMCRVMxJzAlBgNVBAoTHkFORiBBdXRvcmlk +YWQgZGUgQ2VydGlmaWNhY2lvbjEUMBIGA1UECxMLQU5GIENBIFJhaXoxIjAgBgNV +BAMTGUFORiBTZWN1cmUgU2VydmVyIFJvb3QgQ0EwHhcNMTkwOTA0MTAwMDM4WhcN +MzkwODMwMTAwMDM4WjCBhDESMBAGA1UEBRMJRzYzMjg3NTEwMQswCQYDVQQGEwJF +UzEnMCUGA1UEChMeQU5GIEF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uMRQwEgYD +VQQLEwtBTkYgQ0EgUmFpejEiMCAGA1UEAxMZQU5GIFNlY3VyZSBTZXJ2ZXIgUm9v +dCBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANvrayvmZFSVgpCj +cqQZAZ2cC4Ffc0m6p6zzBE57lgvsEeBbphzOG9INgxwruJ4dfkUyYA8H6XdYfp9q +yGFOtibBTI3/TO80sh9l2Ll49a2pcbnvT1gdpd50IJeh7WhM3pIXS7yr/2WanvtH +2Vdy8wmhrnZEE26cLUQ5vPnHO6RYPUG9tMJJo8gN0pcvB2VSAKduyK9o7PQUlrZX +H1bDOZ8rbeTzPvY1ZNoMHKGESy9LS+IsJJ1tk0DrtSOOMspvRdOoiXsezx76W0OL +zc2oD2rKDF65nkeP8Nm2CgtYZRczuSPkdxl9y0oukntPLxB3sY0vaJxizOBQ+OyR +p1RMVwnVdmPF6GUe7m1qzwmd+nxPrWAI/VaZDxUse6mAq4xhj0oHdkLePfTdsiQz +W7i1o0TJrH93PB0j7IKppuLIBkwC/qxcmZkLLxCKpvR/1Yd0DVlJRfbwcVw5Kda/ +SiOL9V8BY9KHcyi1Swr1+KuCLH5zJTIdC2MKF4EA/7Z2Xue0sUDKIbvVgFHlSFJn +LNJhiQcND85Cd8BEc5xEUKDbEAotlRyBr+Qc5RQe8TZBAQIvfXOn3kLMTOmJDVb3 +n5HUA8ZsyY/b2BzgQJhdZpmYgG4t/wHFzstGH6wCxkPmrqKEPMVOHj1tyRRM4y5B +u8o5vzY8KhmqQYdOpc5LMnndkEl/AgMBAAGjYzBhMB8GA1UdIwQYMBaAFJxf0Gxj +o1+TypOYCK2Mh6UsXME3MB0GA1UdDgQWBBScX9BsY6Nfk8qTmAitjIelLFzBNzAO +BgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOC +AgEATh65isagmD9uw2nAalxJUqzLK114OMHVVISfk/CHGT0sZonrDUL8zPB1hT+L +9IBdeeUXZ701guLyPI59WzbLWoAAKfLOKyzxj6ptBZNscsdW699QIyjlRRA96Gej +rw5VD5AJYu9LWaL2U/HANeQvwSS9eS9OICI7/RogsKQOLHDtdD+4E5UGUcjohybK +pFtqFiGS3XNgnhAY3jyB6ugYw3yJ8otQPr0R4hUDqDZ9MwFsSBXXiJCZBMXM5gf0 +vPSQ7RPi6ovDj6MzD8EpTBNO2hVWcXNyglD2mjN8orGoGjR0ZVzO0eurU+AagNjq +OknkJjCb5RyKqKkVMoaZkgoQI1YS4PbOTOK7vtuNknMBZi9iPrJyJ0U27U1W45eZ +/zo1PqVUSlJZS2Db7v54EX9K3BR5YLZrZAPbFYPhor72I5dQ8AkzNqdxliXzuUJ9 +2zg/LFis6ELhDtjTO0wugumDLmsx2d1Hhk9tl5EuT+IocTUW0fJz/iUrB0ckYyfI ++PbZa/wSMVYIwFNCr5zQM378BvAxRAMU8Vjq8moNqRGyg77FGr8H6lnco4g175x2 +MjxNBiLOFeXdntiP2t7SxDnlF4HPOEfrf4htWRvfn0IUrn7PqLBmZdo3r5+qPeoo +tt7VMVgWglvquxl1AnMaykgaIZOQCo6ThKd9OyMYkomgjaw= +-----END CERTIFICATE----- + +# Issuer: CN=Certum EC-384 CA O=Asseco Data Systems S.A. OU=Certum Certification Authority +# Subject: CN=Certum EC-384 CA O=Asseco Data Systems S.A. OU=Certum Certification Authority +# Label: "Certum EC-384 CA" +# Serial: 160250656287871593594747141429395092468 +# MD5 Fingerprint: b6:65:b3:96:60:97:12:a1:ec:4e:e1:3d:a3:c6:c9:f1 +# SHA1 Fingerprint: f3:3e:78:3c:ac:df:f4:a2:cc:ac:67:55:69:56:d7:e5:16:3c:e1:ed +# SHA256 Fingerprint: 6b:32:80:85:62:53:18:aa:50:d1:73:c9:8d:8b:da:09:d5:7e:27:41:3d:11:4c:f7:87:a0:f5:d0:6c:03:0c:f6 +-----BEGIN CERTIFICATE----- +MIICZTCCAeugAwIBAgIQeI8nXIESUiClBNAt3bpz9DAKBggqhkjOPQQDAzB0MQsw +CQYDVQQGEwJQTDEhMB8GA1UEChMYQXNzZWNvIERhdGEgU3lzdGVtcyBTLkEuMScw +JQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxGTAXBgNVBAMT +EENlcnR1bSBFQy0zODQgQ0EwHhcNMTgwMzI2MDcyNDU0WhcNNDMwMzI2MDcyNDU0 +WjB0MQswCQYDVQQGEwJQTDEhMB8GA1UEChMYQXNzZWNvIERhdGEgU3lzdGVtcyBT +LkEuMScwJQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxGTAX +BgNVBAMTEENlcnR1bSBFQy0zODQgQ0EwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAATE +KI6rGFtqvm5kN2PkzeyrOvfMobgOgknXhimfoZTy42B4mIF4Bk3y7JoOV2CDn7Tm +Fy8as10CW4kjPMIRBSqniBMY81CE1700LCeJVf/OTOffph8oxPBUw7l8t1Ot68Kj +QjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFI0GZnQkdjrzife81r1HfS+8 +EF9LMA4GA1UdDwEB/wQEAwIBBjAKBggqhkjOPQQDAwNoADBlAjADVS2m5hjEfO/J +UG7BJw+ch69u1RsIGL2SKcHvlJF40jocVYli5RsJHrpka/F2tNQCMQC0QoSZ/6vn +nvuRlydd3LBbMHHOXjgaatkl5+r3YZJW+OraNsKHZZYuciUvf9/DE8k= +-----END CERTIFICATE----- + +# Issuer: CN=Certum Trusted Root CA O=Asseco Data Systems S.A. OU=Certum Certification Authority +# Subject: CN=Certum Trusted Root CA O=Asseco Data Systems S.A. OU=Certum Certification Authority +# Label: "Certum Trusted Root CA" +# Serial: 40870380103424195783807378461123655149 +# MD5 Fingerprint: 51:e1:c2:e7:fe:4c:84:af:59:0e:2f:f4:54:6f:ea:29 +# SHA1 Fingerprint: c8:83:44:c0:18:ae:9f:cc:f1:87:b7:8f:22:d1:c5:d7:45:84:ba:e5 +# SHA256 Fingerprint: fe:76:96:57:38:55:77:3e:37:a9:5e:7a:d4:d9:cc:96:c3:01:57:c1:5d:31:76:5b:a9:b1:57:04:e1:ae:78:fd +-----BEGIN CERTIFICATE----- +MIIFwDCCA6igAwIBAgIQHr9ZULjJgDdMBvfrVU+17TANBgkqhkiG9w0BAQ0FADB6 +MQswCQYDVQQGEwJQTDEhMB8GA1UEChMYQXNzZWNvIERhdGEgU3lzdGVtcyBTLkEu +MScwJQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxHzAdBgNV +BAMTFkNlcnR1bSBUcnVzdGVkIFJvb3QgQ0EwHhcNMTgwMzE2MTIxMDEzWhcNNDMw +MzE2MTIxMDEzWjB6MQswCQYDVQQGEwJQTDEhMB8GA1UEChMYQXNzZWNvIERhdGEg +U3lzdGVtcyBTLkEuMScwJQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlvbiBBdXRo +b3JpdHkxHzAdBgNVBAMTFkNlcnR1bSBUcnVzdGVkIFJvb3QgQ0EwggIiMA0GCSqG +SIb3DQEBAQUAA4ICDwAwggIKAoICAQDRLY67tzbqbTeRn06TpwXkKQMlzhyC93yZ +n0EGze2jusDbCSzBfN8pfktlL5On1AFrAygYo9idBcEq2EXxkd7fO9CAAozPOA/q +p1x4EaTByIVcJdPTsuclzxFUl6s1wB52HO8AU5853BSlLCIls3Jy/I2z5T4IHhQq +NwuIPMqw9MjCoa68wb4pZ1Xi/K1ZXP69VyywkI3C7Te2fJmItdUDmj0VDT06qKhF +8JVOJVkdzZhpu9PMMsmN74H+rX2Ju7pgE8pllWeg8xn2A1bUatMn4qGtg/BKEiJ3 +HAVz4hlxQsDsdUaakFjgao4rpUYwBI4Zshfjvqm6f1bxJAPXsiEodg42MEx51UGa +mqi4NboMOvJEGyCI98Ul1z3G4z5D3Yf+xOr1Uz5MZf87Sst4WmsXXw3Hw09Omiqi +7VdNIuJGmj8PkTQkfVXjjJU30xrwCSss0smNtA0Aq2cpKNgB9RkEth2+dv5yXMSF +ytKAQd8FqKPVhJBPC/PgP5sZ0jeJP/J7UhyM9uH3PAeXjA6iWYEMspA90+NZRu0P +qafegGtaqge2Gcu8V/OXIXoMsSt0Puvap2ctTMSYnjYJdmZm/Bo/6khUHL4wvYBQ +v3y1zgD2DGHZ5yQD4OMBgQ692IU0iL2yNqh7XAjlRICMb/gv1SHKHRzQ+8S1h9E6 +Tsd2tTVItQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBSM+xx1 +vALTn04uSNn5YFSqxLNP+jAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQENBQAD +ggIBAEii1QALLtA/vBzVtVRJHlpr9OTy4EA34MwUe7nJ+jW1dReTagVphZzNTxl4 +WxmB82M+w85bj/UvXgF2Ez8sALnNllI5SW0ETsXpD4YN4fqzX4IS8TrOZgYkNCvo +zMrnadyHncI013nR03e4qllY/p0m+jiGPp2Kh2RX5Rc64vmNueMzeMGQ2Ljdt4NR +5MTMI9UGfOZR0800McD2RrsLrfw9EAUqO0qRJe6M1ISHgCq8CYyqOhNf6DR5UMEQ +GfnTKB7U0VEwKbOukGfWHwpjscWpxkIxYxeU72nLL/qMFH3EQxiJ2fAyQOaA4kZf +5ePBAFmo+eggvIksDkc0C+pXwlM2/KfUrzHN/gLldfq5Jwn58/U7yn2fqSLLiMmq +0Uc9NneoWWRrJ8/vJ8HjJLWG965+Mk2weWjROeiQWMODvA8s1pfrzgzhIMfatz7D +P78v3DSk+yshzWePS/Tj6tQ/50+6uaWTRRxmHyH6ZF5v4HaUMst19W7l9o/HuKTM +qJZ9ZPskWkoDbGs4xugDQ5r3V7mzKWmTOPQD8rv7gmsHINFSH5pkAnuYZttcTVoP +0ISVoDwUQwbKytu4QTbaakRnh6+v40URFWkIsr4WOZckbxJF0WddCajJFdr60qZf +E2Efv4WstK2tBZQIgx51F9NxO5NQI1mg7TyRVJ12AMXDuDjb +-----END CERTIFICATE----- + +# Issuer: CN=TunTrust Root CA O=Agence Nationale de Certification Electronique +# Subject: CN=TunTrust Root CA O=Agence Nationale de Certification Electronique +# Label: "TunTrust Root CA" +# Serial: 108534058042236574382096126452369648152337120275 +# MD5 Fingerprint: 85:13:b9:90:5b:36:5c:b6:5e:b8:5a:f8:e0:31:57:b4 +# SHA1 Fingerprint: cf:e9:70:84:0f:e0:73:0f:9d:f6:0c:7f:2c:4b:ee:20:46:34:9c:bb +# SHA256 Fingerprint: 2e:44:10:2a:b5:8c:b8:54:19:45:1c:8e:19:d9:ac:f3:66:2c:af:bc:61:4b:6a:53:96:0a:30:f7:d0:e2:eb:41 +-----BEGIN CERTIFICATE----- +MIIFszCCA5ugAwIBAgIUEwLV4kBMkkaGFmddtLu7sms+/BMwDQYJKoZIhvcNAQEL +BQAwYTELMAkGA1UEBhMCVE4xNzA1BgNVBAoMLkFnZW5jZSBOYXRpb25hbGUgZGUg +Q2VydGlmaWNhdGlvbiBFbGVjdHJvbmlxdWUxGTAXBgNVBAMMEFR1blRydXN0IFJv +b3QgQ0EwHhcNMTkwNDI2MDg1NzU2WhcNNDQwNDI2MDg1NzU2WjBhMQswCQYDVQQG +EwJUTjE3MDUGA1UECgwuQWdlbmNlIE5hdGlvbmFsZSBkZSBDZXJ0aWZpY2F0aW9u +IEVsZWN0cm9uaXF1ZTEZMBcGA1UEAwwQVHVuVHJ1c3QgUm9vdCBDQTCCAiIwDQYJ +KoZIhvcNAQEBBQADggIPADCCAgoCggIBAMPN0/y9BFPdDCA61YguBUtB9YOCfvdZ +n56eY+hz2vYGqU8ftPkLHzmMmiDQfgbU7DTZhrx1W4eI8NLZ1KMKsmwb60ksPqxd +2JQDoOw05TDENX37Jk0bbjBU2PWARZw5rZzJJQRNmpA+TkBuimvNKWfGzC3gdOgF +VwpIUPp6Q9p+7FuaDmJ2/uqdHYVy7BG7NegfJ7/Boce7SBbdVtfMTqDhuazb1YMZ +GoXRlJfXyqNlC/M4+QKu3fZnz8k/9YosRxqZbwUN/dAdgjH8KcwAWJeRTIAAHDOF +li/LQcKLEITDCSSJH7UP2dl3RxiSlGBcx5kDPP73lad9UKGAwqmDrViWVSHbhlnU +r8a83YFuB9tgYv7sEG7aaAH0gxupPqJbI9dkxt/con3YS7qC0lH4Zr8GRuR5KiY2 +eY8fTpkdso8MDhz/yV3A/ZAQprE38806JG60hZC/gLkMjNWb1sjxVj8agIl6qeIb +MlEsPvLfe/ZdeikZjuXIvTZxi11Mwh0/rViizz1wTaZQmCXcI/m4WEEIcb9PuISg +jwBUFfyRbVinljvrS5YnzWuioYasDXxU5mZMZl+QviGaAkYt5IPCgLnPSz7ofzwB +7I9ezX/SKEIBlYrilz0QIX32nRzFNKHsLA4KUiwSVXAkPcvCFDVDXSdOvsC9qnyW +5/yeYa1E0wCXAgMBAAGjYzBhMB0GA1UdDgQWBBQGmpsfU33x9aTI04Y+oXNZtPdE +ITAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFAaamx9TffH1pMjThj6hc1m0 +90QhMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAqgVutt0Vyb+z +xiD2BkewhpMl0425yAA/l/VSJ4hxyXT968pk21vvHl26v9Hr7lxpuhbI87mP0zYu +QEkHDVneixCwSQXi/5E/S7fdAo74gShczNxtr18UnH1YeA32gAm56Q6XKRm4t+v4 +FstVEuTGfbvE7Pi1HE4+Z7/FXxttbUcoqgRYYdZ2vyJ/0Adqp2RT8JeNnYA/u8EH +22Wv5psymsNUk8QcCMNE+3tjEUPRahphanltkE8pjkcFwRJpadbGNjHh/PqAulxP +xOu3Mqz4dWEX1xAZufHSCe96Qp1bWgvUxpVOKs7/B9dPfhgGiPEZtdmYu65xxBzn +dFlY7wyJz4sfdZMaBBSSSFCp61cpABbjNhzI+L/wM9VBD8TMPN3pM0MBkRArHtG5 +Xc0yGYuPjCB31yLEQtyEFpslbei0VXF/sHyz03FJuc9SpAQ/3D2gu68zngowYI7b +nV2UqL1g52KAdoGDDIzMMEZJ4gzSqK/rYXHv5yJiqfdcZGyfFoxnNidF9Ql7v/YQ +CvGwjVRDjAS6oz/v4jXH+XTgbzRB0L9zZVcg+ZtnemZoJE6AZb0QmQZZ8mWvuMZH +u/2QeItBcy6vVR/cO5JyboTT0GFMDcx2V+IthSIVNg3rAZ3r2OvEhJn7wAzMMujj +d9qDRIueVSjAi1jTkD5OGwDxFa2DK5o= +-----END CERTIFICATE----- + +# Issuer: CN=HARICA TLS RSA Root CA 2021 O=Hellenic Academic and Research Institutions CA +# Subject: CN=HARICA TLS RSA Root CA 2021 O=Hellenic Academic and Research Institutions CA +# Label: "HARICA TLS RSA Root CA 2021" +# Serial: 76817823531813593706434026085292783742 +# MD5 Fingerprint: 65:47:9b:58:86:dd:2c:f0:fc:a2:84:1f:1e:96:c4:91 +# SHA1 Fingerprint: 02:2d:05:82:fa:88:ce:14:0c:06:79:de:7f:14:10:e9:45:d7:a5:6d +# SHA256 Fingerprint: d9:5d:0e:8e:da:79:52:5b:f9:be:b1:1b:14:d2:10:0d:32:94:98:5f:0c:62:d9:fa:bd:9c:d9:99:ec:cb:7b:1d +-----BEGIN CERTIFICATE----- +MIIFpDCCA4ygAwIBAgIQOcqTHO9D88aOk8f0ZIk4fjANBgkqhkiG9w0BAQsFADBs +MQswCQYDVQQGEwJHUjE3MDUGA1UECgwuSGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJl +c2VhcmNoIEluc3RpdHV0aW9ucyBDQTEkMCIGA1UEAwwbSEFSSUNBIFRMUyBSU0Eg +Um9vdCBDQSAyMDIxMB4XDTIxMDIxOTEwNTUzOFoXDTQ1MDIxMzEwNTUzN1owbDEL +MAkGA1UEBhMCR1IxNzA1BgNVBAoMLkhlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNl +YXJjaCBJbnN0aXR1dGlvbnMgQ0ExJDAiBgNVBAMMG0hBUklDQSBUTFMgUlNBIFJv +b3QgQ0EgMjAyMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAIvC569l +mwVnlskNJLnQDmT8zuIkGCyEf3dRywQRNrhe7Wlxp57kJQmXZ8FHws+RFjZiPTgE +4VGC/6zStGndLuwRo0Xua2s7TL+MjaQenRG56Tj5eg4MmOIjHdFOY9TnuEFE+2uv +a9of08WRiFukiZLRgeaMOVig1mlDqa2YUlhu2wr7a89o+uOkXjpFc5gH6l8Cct4M +pbOfrqkdtx2z/IpZ525yZa31MJQjB/OCFks1mJxTuy/K5FrZx40d/JiZ+yykgmvw +Kh+OC19xXFyuQnspiYHLA6OZyoieC0AJQTPb5lh6/a6ZcMBaD9YThnEvdmn8kN3b +LW7R8pv1GmuebxWMevBLKKAiOIAkbDakO/IwkfN4E8/BPzWr8R0RI7VDIp4BkrcY +AuUR0YLbFQDMYTfBKnya4dC6s1BG7oKsnTH4+yPiAwBIcKMJJnkVU2DzOFytOOqB +AGMUuTNe3QvboEUHGjMJ+E20pwKmafTCWQWIZYVWrkvL4N48fS0ayOn7H6NhStYq +E613TBoYm5EPWNgGVMWX+Ko/IIqmhaZ39qb8HOLubpQzKoNQhArlT4b4UEV4AIHr +W2jjJo3Me1xR9BQsQL4aYB16cmEdH2MtiKrOokWQCPxrvrNQKlr9qEgYRtaQQJKQ +CoReaDH46+0N0x3GfZkYVVYnZS6NRcUk7M7jAgMBAAGjQjBAMA8GA1UdEwEB/wQF +MAMBAf8wHQYDVR0OBBYEFApII6ZgpJIKM+qTW8VX6iVNvRLuMA4GA1UdDwEB/wQE +AwIBhjANBgkqhkiG9w0BAQsFAAOCAgEAPpBIqm5iFSVmewzVjIuJndftTgfvnNAU +X15QvWiWkKQUEapobQk1OUAJ2vQJLDSle1mESSmXdMgHHkdt8s4cUCbjnj1AUz/3 +f5Z2EMVGpdAgS1D0NTsY9FVqQRtHBmg8uwkIYtlfVUKqrFOFrJVWNlar5AWMxaja +H6NpvVMPxP/cyuN+8kyIhkdGGvMA9YCRotxDQpSbIPDRzbLrLFPCU3hKTwSUQZqP +JzLB5UkZv/HywouoCjkxKLR9YjYsTewfM7Z+d21+UPCfDtcRj88YxeMn/ibvBZ3P +zzfF0HvaO7AWhAw6k9a+F9sPPg4ZeAnHqQJyIkv3N3a6dcSFA1pj1bF1BcK5vZSt +jBWZp5N99sXzqnTPBIWUmAD04vnKJGW/4GKvyMX6ssmeVkjaef2WdhW+o45WxLM0 +/L5H9MG0qPzVMIho7suuyWPEdr6sOBjhXlzPrjoiUevRi7PzKzMHVIf6tLITe7pT +BGIBnfHAT+7hOtSLIBD6Alfm78ELt5BGnBkpjNxvoEppaZS3JGWg/6w/zgH7IS79 +aPib8qXPMThcFarmlwDB31qlpzmq6YR/PFGoOtmUW4y/Twhx5duoXNTSpv4Ao8YW +xw/ogM4cKGR0GQjTQuPOAF1/sdwTsOEFy9EgqoZ0njnnkf3/W9b3raYvAwtt41dU +63ZTGI0RmLo= +-----END CERTIFICATE----- + +# Issuer: CN=HARICA TLS ECC Root CA 2021 O=Hellenic Academic and Research Institutions CA +# Subject: CN=HARICA TLS ECC Root CA 2021 O=Hellenic Academic and Research Institutions CA +# Label: "HARICA TLS ECC Root CA 2021" +# Serial: 137515985548005187474074462014555733966 +# MD5 Fingerprint: ae:f7:4c:e5:66:35:d1:b7:9b:8c:22:93:74:d3:4b:b0 +# SHA1 Fingerprint: bc:b0:c1:9d:e9:98:92:70:19:38:57:e9:8d:a7:b4:5d:6e:ee:01:48 +# SHA256 Fingerprint: 3f:99:cc:47:4a:cf:ce:4d:fe:d5:87:94:66:5e:47:8d:15:47:73:9f:2e:78:0f:1b:b4:ca:9b:13:30:97:d4:01 +-----BEGIN CERTIFICATE----- +MIICVDCCAdugAwIBAgIQZ3SdjXfYO2rbIvT/WeK/zjAKBggqhkjOPQQDAzBsMQsw +CQYDVQQGEwJHUjE3MDUGA1UECgwuSGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2Vh +cmNoIEluc3RpdHV0aW9ucyBDQTEkMCIGA1UEAwwbSEFSSUNBIFRMUyBFQ0MgUm9v +dCBDQSAyMDIxMB4XDTIxMDIxOTExMDExMFoXDTQ1MDIxMzExMDEwOVowbDELMAkG +A1UEBhMCR1IxNzA1BgNVBAoMLkhlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJj +aCBJbnN0aXR1dGlvbnMgQ0ExJDAiBgNVBAMMG0hBUklDQSBUTFMgRUNDIFJvb3Qg +Q0EgMjAyMTB2MBAGByqGSM49AgEGBSuBBAAiA2IABDgI/rGgltJ6rK9JOtDA4MM7 +KKrxcm1lAEeIhPyaJmuqS7psBAqIXhfyVYf8MLA04jRYVxqEU+kw2anylnTDUR9Y +STHMmE5gEYd103KUkE+bECUqqHgtvpBBWJAVcqeht6NCMEAwDwYDVR0TAQH/BAUw +AwEB/zAdBgNVHQ4EFgQUyRtTgRL+BNUW0aq8mm+3oJUZbsowDgYDVR0PAQH/BAQD +AgGGMAoGCCqGSM49BAMDA2cAMGQCMBHervjcToiwqfAircJRQO9gcS3ujwLEXQNw +SaSS6sUUiHCm0w2wqsosQJz76YJumgIwK0eaB8bRwoF8yguWGEEbo/QwCZ61IygN +nxS2PFOiTAZpffpskcYqSUXm7LcT4Tps +-----END CERTIFICATE----- + +# Issuer: CN=Autoridad de Certificacion Firmaprofesional CIF A62634068 +# Subject: CN=Autoridad de Certificacion Firmaprofesional CIF A62634068 +# Label: "Autoridad de Certificacion Firmaprofesional CIF A62634068" +# Serial: 1977337328857672817 +# MD5 Fingerprint: 4e:6e:9b:54:4c:ca:b7:fa:48:e4:90:b1:15:4b:1c:a3 +# SHA1 Fingerprint: 0b:be:c2:27:22:49:cb:39:aa:db:35:5c:53:e3:8c:ae:78:ff:b6:fe +# SHA256 Fingerprint: 57:de:05:83:ef:d2:b2:6e:03:61:da:99:da:9d:f4:64:8d:ef:7e:e8:44:1c:3b:72:8a:fa:9b:cd:e0:f9:b2:6a +-----BEGIN CERTIFICATE----- +MIIGFDCCA/ygAwIBAgIIG3Dp0v+ubHEwDQYJKoZIhvcNAQELBQAwUTELMAkGA1UE +BhMCRVMxQjBABgNVBAMMOUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1h +cHJvZmVzaW9uYWwgQ0lGIEE2MjYzNDA2ODAeFw0xNDA5MjMxNTIyMDdaFw0zNjA1 +MDUxNTIyMDdaMFExCzAJBgNVBAYTAkVTMUIwQAYDVQQDDDlBdXRvcmlkYWQgZGUg +Q2VydGlmaWNhY2lvbiBGaXJtYXByb2Zlc2lvbmFsIENJRiBBNjI2MzQwNjgwggIi +MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKlmuO6vj78aI14H9M2uDDUtd9 +thDIAl6zQyrET2qyyhxdKJp4ERppWVevtSBC5IsP5t9bpgOSL/UR5GLXMnE42QQM +cas9UX4PB99jBVzpv5RvwSmCwLTaUbDBPLutN0pcyvFLNg4kq7/DhHf9qFD0sefG +L9ItWY16Ck6WaVICqjaY7Pz6FIMMNx/Jkjd/14Et5cS54D40/mf0PmbR0/RAz15i +NA9wBj4gGFrO93IbJWyTdBSTo3OxDqqHECNZXyAFGUftaI6SEspd/NYrspI8IM/h +X68gvqB2f3bl7BqGYTM+53u0P6APjqK5am+5hyZvQWyIplD9amML9ZMWGxmPsu2b +m8mQ9QEM3xk9Dz44I8kvjwzRAv4bVdZO0I08r0+k8/6vKtMFnXkIoctXMbScyJCy +Z/QYFpM6/EfY0XiWMR+6KwxfXZmtY4laJCB22N/9q06mIqqdXuYnin1oKaPnirja +EbsXLZmdEyRG98Xi2J+Of8ePdG1asuhy9azuJBCtLxTa/y2aRnFHvkLfuwHb9H/T +KI8xWVvTyQKmtFLKbpf7Q8UIJm+K9Lv9nyiqDdVF8xM6HdjAeI9BZzwelGSuewvF +6NkBiDkal4ZkQdU7hwxu+g/GvUgUvzlN1J5Bto+WHWOWk9mVBngxaJ43BjuAiUVh +OSPHG0SjFeUc+JIwuwIDAQABo4HvMIHsMB0GA1UdDgQWBBRlzeurNR4APn7VdMAc +tHNHDhpkLzASBgNVHRMBAf8ECDAGAQH/AgEBMIGmBgNVHSAEgZ4wgZswgZgGBFUd +IAAwgY8wLwYIKwYBBQUHAgEWI2h0dHA6Ly93d3cuZmlybWFwcm9mZXNpb25hbC5j +b20vY3BzMFwGCCsGAQUFBwICMFAeTgBQAGEAcwBlAG8AIABkAGUAIABsAGEAIABC +AG8AbgBhAG4AbwB2AGEAIAA0ADcAIABCAGEAcgBjAGUAbABvAG4AYQAgADAAOAAw +ADEANzAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQELBQADggIBAHSHKAIrdx9m +iWTtj3QuRhy7qPj4Cx2Dtjqn6EWKB7fgPiDL4QjbEwj4KKE1soCzC1HA01aajTNF +Sa9J8OA9B3pFE1r/yJfY0xgsfZb43aJlQ3CTkBW6kN/oGbDbLIpgD7dvlAceHabJ +hfa9NPhAeGIQcDq+fUs5gakQ1JZBu/hfHAsdCPKxsIl68veg4MSPi3i1O1ilI45P +Vf42O+AMt8oqMEEgtIDNrvx2ZnOorm7hfNoD6JQg5iKj0B+QXSBTFCZX2lSX3xZE +EAEeiGaPcjiT3SC3NL7X8e5jjkd5KAb881lFJWAiMxujX6i6KtoaPc1A6ozuBRWV +1aUsIC+nmCjuRfzxuIgALI9C2lHVnOUTaHFFQ4ueCyE8S1wF3BqfmI7avSKecs2t +CsvMo2ebKHTEm9caPARYpoKdrcd7b/+Alun4jWq9GJAd/0kakFI3ky88Al2CdgtR +5xbHV/g4+afNmyJU72OwFW1TZQNKXkqgsqeOSQBZONXH9IBk9W6VULgRfhVwOEqw +f9DEMnDAGf/JOC0ULGb0QkTmVXYbgBVX/8Cnp6o5qtjTcNAuuuuUavpfNIbnYrX9 +ivAwhZTJryQCL2/W3Wf+47BVTwSYT6RBVuKT0Gro1vP7ZeDOdcQxWQzugsgMYDNK +GbqEZycPvEJdvSRUDewdcAZfpLz6IHxV +-----END CERTIFICATE----- + +# Issuer: CN=vTrus ECC Root CA O=iTrusChina Co.,Ltd. +# Subject: CN=vTrus ECC Root CA O=iTrusChina Co.,Ltd. +# Label: "vTrus ECC Root CA" +# Serial: 630369271402956006249506845124680065938238527194 +# MD5 Fingerprint: de:4b:c1:f5:52:8c:9b:43:e1:3e:8f:55:54:17:8d:85 +# SHA1 Fingerprint: f6:9c:db:b0:fc:f6:02:13:b6:52:32:a6:a3:91:3f:16:70:da:c3:e1 +# SHA256 Fingerprint: 30:fb:ba:2c:32:23:8e:2a:98:54:7a:f9:79:31:e5:50:42:8b:9b:3f:1c:8e:eb:66:33:dc:fa:86:c5:b2:7d:d3 +-----BEGIN CERTIFICATE----- +MIICDzCCAZWgAwIBAgIUbmq8WapTvpg5Z6LSa6Q75m0c1towCgYIKoZIzj0EAwMw +RzELMAkGA1UEBhMCQ04xHDAaBgNVBAoTE2lUcnVzQ2hpbmEgQ28uLEx0ZC4xGjAY +BgNVBAMTEXZUcnVzIEVDQyBSb290IENBMB4XDTE4MDczMTA3MjY0NFoXDTQzMDcz +MTA3MjY0NFowRzELMAkGA1UEBhMCQ04xHDAaBgNVBAoTE2lUcnVzQ2hpbmEgQ28u +LEx0ZC4xGjAYBgNVBAMTEXZUcnVzIEVDQyBSb290IENBMHYwEAYHKoZIzj0CAQYF +K4EEACIDYgAEZVBKrox5lkqqHAjDo6LN/llWQXf9JpRCux3NCNtzslt188+cToL0 +v/hhJoVs1oVbcnDS/dtitN9Ti72xRFhiQgnH+n9bEOf+QP3A2MMrMudwpremIFUd +e4BdS49nTPEQo0IwQDAdBgNVHQ4EFgQUmDnNvtiyjPeyq+GtJK97fKHbH88wDwYD +VR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwCgYIKoZIzj0EAwMDaAAwZQIw +V53dVvHH4+m4SVBrm2nDb+zDfSXkV5UTQJtS0zvzQBm8JsctBp61ezaf9SXUY2sA +AjEA6dPGnlaaKsyh2j/IZivTWJwghfqrkYpwcBE4YGQLYgmRWAD5Tfs0aNoJrSEG +GJTO +-----END CERTIFICATE----- + +# Issuer: CN=vTrus Root CA O=iTrusChina Co.,Ltd. +# Subject: CN=vTrus Root CA O=iTrusChina Co.,Ltd. +# Label: "vTrus Root CA" +# Serial: 387574501246983434957692974888460947164905180485 +# MD5 Fingerprint: b8:c9:37:df:fa:6b:31:84:64:c5:ea:11:6a:1b:75:fc +# SHA1 Fingerprint: 84:1a:69:fb:f5:cd:1a:25:34:13:3d:e3:f8:fc:b8:99:d0:c9:14:b7 +# SHA256 Fingerprint: 8a:71:de:65:59:33:6f:42:6c:26:e5:38:80:d0:0d:88:a1:8d:a4:c6:a9:1f:0d:cb:61:94:e2:06:c5:c9:63:87 +-----BEGIN CERTIFICATE----- +MIIFVjCCAz6gAwIBAgIUQ+NxE9izWRRdt86M/TX9b7wFjUUwDQYJKoZIhvcNAQEL +BQAwQzELMAkGA1UEBhMCQ04xHDAaBgNVBAoTE2lUcnVzQ2hpbmEgQ28uLEx0ZC4x +FjAUBgNVBAMTDXZUcnVzIFJvb3QgQ0EwHhcNMTgwNzMxMDcyNDA1WhcNNDMwNzMx +MDcyNDA1WjBDMQswCQYDVQQGEwJDTjEcMBoGA1UEChMTaVRydXNDaGluYSBDby4s +THRkLjEWMBQGA1UEAxMNdlRydXMgUm9vdCBDQTCCAiIwDQYJKoZIhvcNAQEBBQAD +ggIPADCCAgoCggIBAL1VfGHTuB0EYgWgrmy3cLRB6ksDXhA/kFocizuwZotsSKYc +IrrVQJLuM7IjWcmOvFjai57QGfIvWcaMY1q6n6MLsLOaXLoRuBLpDLvPbmyAhykU +AyyNJJrIZIO1aqwTLDPxn9wsYTwaP3BVm60AUn/PBLn+NvqcwBauYv6WTEN+VRS+ +GrPSbcKvdmaVayqwlHeFXgQPYh1jdfdr58tbmnDsPmcF8P4HCIDPKNsFxhQnL4Z9 +8Cfe/+Z+M0jnCx5Y0ScrUw5XSmXX+6KAYPxMvDVTAWqXcoKv8R1w6Jz1717CbMdH +flqUhSZNO7rrTOiwCcJlwp2dCZtOtZcFrPUGoPc2BX70kLJrxLT5ZOrpGgrIDajt +J8nU57O5q4IikCc9Kuh8kO+8T/3iCiSn3mUkpF3qwHYw03dQ+A0Em5Q2AXPKBlim +0zvc+gRGE1WKyURHuFE5Gi7oNOJ5y1lKCn+8pu8fA2dqWSslYpPZUxlmPCdiKYZN +pGvu/9ROutW04o5IWgAZCfEF2c6Rsffr6TlP9m8EQ5pV9T4FFL2/s1m02I4zhKOQ +UqqzApVg+QxMaPnu1RcN+HFXtSXkKe5lXa/R7jwXC1pDxaWG6iSe4gUH3DRCEpHW +OXSuTEGC2/KmSNGzm/MzqvOmwMVO9fSddmPmAsYiS8GVP1BkLFTltvA8Kc9XAgMB +AAGjQjBAMB0GA1UdDgQWBBRUYnBj8XWEQ1iO0RYgscasGrz2iTAPBgNVHRMBAf8E +BTADAQH/MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAKbqSSaet +8PFww+SX8J+pJdVrnjT+5hpk9jprUrIQeBqfTNqK2uwcN1LgQkv7bHbKJAs5EhWd +nxEt/Hlk3ODg9d3gV8mlsnZwUKT+twpw1aA08XXXTUm6EdGz2OyC/+sOxL9kLX1j +bhd47F18iMjrjld22VkE+rxSH0Ws8HqA7Oxvdq6R2xCOBNyS36D25q5J08FsEhvM +Kar5CKXiNxTKsbhm7xqC5PD48acWabfbqWE8n/Uxy+QARsIvdLGx14HuqCaVvIiv +TDUHKgLKeBRtRytAVunLKmChZwOgzoy8sHJnxDHO2zTlJQNgJXtxmOTAGytfdELS +S8VZCAeHvsXDf+eW2eHcKJfWjwXj9ZtOyh1QRwVTsMo554WgicEFOwE30z9J4nfr +I8iIZjs9OXYhRvHsXyO466JmdXTBQPfYaJqT4i2pLr0cox7IdMakLXogqzu4sEb9 +b91fUlV1YvCXoHzXOP0l382gmxDPi7g4Xl7FtKYCNqEeXxzP4padKar9mK5S4fNB +UvupLnKWnyfjqnN9+BojZns7q2WwMgFLFT49ok8MKzWixtlnEjUwzXYuFrOZnk1P +Ti07NEPhmg4NpGaXutIcSkwsKouLgU9xGqndXHt7CMUADTdA43x7VF8vhV929ven +sBxXVsFy6K2ir40zSbofitzmdHxghm+Hl3s= +-----END CERTIFICATE----- + +# Issuer: CN=ISRG Root X2 O=Internet Security Research Group +# Subject: CN=ISRG Root X2 O=Internet Security Research Group +# Label: "ISRG Root X2" +# Serial: 87493402998870891108772069816698636114 +# MD5 Fingerprint: d3:9e:c4:1e:23:3c:a6:df:cf:a3:7e:6d:e0:14:e6:e5 +# SHA1 Fingerprint: bd:b1:b9:3c:d5:97:8d:45:c6:26:14:55:f8:db:95:c7:5a:d1:53:af +# SHA256 Fingerprint: 69:72:9b:8e:15:a8:6e:fc:17:7a:57:af:b7:17:1d:fc:64:ad:d2:8c:2f:ca:8c:f1:50:7e:34:45:3c:cb:14:70 +-----BEGIN CERTIFICATE----- +MIICGzCCAaGgAwIBAgIQQdKd0XLq7qeAwSxs6S+HUjAKBggqhkjOPQQDAzBPMQsw +CQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJuZXQgU2VjdXJpdHkgUmVzZWFyY2gg +R3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBYMjAeFw0yMDA5MDQwMDAwMDBaFw00 +MDA5MTcxNjAwMDBaME8xCzAJBgNVBAYTAlVTMSkwJwYDVQQKEyBJbnRlcm5ldCBT +ZWN1cml0eSBSZXNlYXJjaCBHcm91cDEVMBMGA1UEAxMMSVNSRyBSb290IFgyMHYw +EAYHKoZIzj0CAQYFK4EEACIDYgAEzZvVn4CDCuwJSvMWSj5cz3es3mcFDR0HttwW ++1qLFNvicWDEukWVEYmO6gbf9yoWHKS5xcUy4APgHoIYOIvXRdgKam7mAHf7AlF9 +ItgKbppbd9/w+kHsOdx1ymgHDB/qo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0T +AQH/BAUwAwEB/zAdBgNVHQ4EFgQUfEKWrt5LSDv6kviejM9ti6lyN5UwCgYIKoZI +zj0EAwMDaAAwZQIwe3lORlCEwkSHRhtFcP9Ymd70/aTSVaYgLXTWNLxBo1BfASdW +tL4ndQavEi51mI38AjEAi/V3bNTIZargCyzuFJ0nN6T5U6VR5CmD1/iQMVtCnwr1 +/q4AaOeMSQ+2b1tbFfLn +-----END CERTIFICATE----- + +# Issuer: CN=HiPKI Root CA - G1 O=Chunghwa Telecom Co., Ltd. +# Subject: CN=HiPKI Root CA - G1 O=Chunghwa Telecom Co., Ltd. +# Label: "HiPKI Root CA - G1" +# Serial: 60966262342023497858655262305426234976 +# MD5 Fingerprint: 69:45:df:16:65:4b:e8:68:9a:8f:76:5f:ff:80:9e:d3 +# SHA1 Fingerprint: 6a:92:e4:a8:ee:1b:ec:96:45:37:e3:29:57:49:cd:96:e3:e5:d2:60 +# SHA256 Fingerprint: f0:15:ce:3c:c2:39:bf:ef:06:4b:e9:f1:d2:c4:17:e1:a0:26:4a:0a:94:be:1f:0c:8d:12:18:64:eb:69:49:cc +-----BEGIN CERTIFICATE----- +MIIFajCCA1KgAwIBAgIQLd2szmKXlKFD6LDNdmpeYDANBgkqhkiG9w0BAQsFADBP +MQswCQYDVQQGEwJUVzEjMCEGA1UECgwaQ2h1bmdod2EgVGVsZWNvbSBDby4sIEx0 +ZC4xGzAZBgNVBAMMEkhpUEtJIFJvb3QgQ0EgLSBHMTAeFw0xOTAyMjIwOTQ2MDRa +Fw0zNzEyMzExNTU5NTlaME8xCzAJBgNVBAYTAlRXMSMwIQYDVQQKDBpDaHVuZ2h3 +YSBUZWxlY29tIENvLiwgTHRkLjEbMBkGA1UEAwwSSGlQS0kgUm9vdCBDQSAtIEcx +MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA9B5/UnMyDHPkvRN0o9Qw +qNCuS9i233VHZvR85zkEHmpwINJaR3JnVfSl6J3VHiGh8Ge6zCFovkRTv4354twv +Vcg3Px+kwJyz5HdcoEb+d/oaoDjq7Zpy3iu9lFc6uux55199QmQ5eiY29yTw1S+6 +lZgRZq2XNdZ1AYDgr/SEYYwNHl98h5ZeQa/rh+r4XfEuiAU+TCK72h8q3VJGZDnz +Qs7ZngyzsHeXZJzA9KMuH5UHsBffMNsAGJZMoYFL3QRtU6M9/Aes1MU3guvklQgZ +KILSQjqj2FPseYlgSGDIcpJQ3AOPgz+yQlda22rpEZfdhSi8MEyr48KxRURHH+CK +FgeW0iEPU8DtqX7UTuybCeyvQqww1r/REEXgphaypcXTT3OUM3ECoWqj1jOXTyFj +HluP2cFeRXF3D4FdXyGarYPM+l7WjSNfGz1BryB1ZlpK9p/7qxj3ccC2HTHsOyDr +y+K49a6SsvfhhEvyovKTmiKe0xRvNlS9H15ZFblzqMF8b3ti6RZsR1pl8w4Rm0bZ +/W3c1pzAtH2lsN0/Vm+h+fbkEkj9Bn8SV7apI09bA8PgcSojt/ewsTu8mL3WmKgM +a/aOEmem8rJY5AIJEzypuxC00jBF8ez3ABHfZfjcK0NVvxaXxA/VLGGEqnKG/uY6 +fsI/fe78LxQ+5oXdUG+3Se0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNV +HQ4EFgQU8ncX+l6o/vY9cdVouslGDDjYr7AwDgYDVR0PAQH/BAQDAgGGMA0GCSqG +SIb3DQEBCwUAA4ICAQBQUfB13HAE4/+qddRxosuej6ip0691x1TPOhwEmSKsxBHi +7zNKpiMdDg1H2DfHb680f0+BazVP6XKlMeJ45/dOlBhbQH3PayFUhuaVevvGyuqc +SE5XCV0vrPSltJczWNWseanMX/mF+lLFjfiRFOs6DRfQUsJ748JzjkZ4Bjgs6Fza +ZsT0pPBWGTMpWmWSBUdGSquEwx4noR8RkpkndZMPvDY7l1ePJlsMu5wP1G4wB9Tc +XzZoZjmDlicmisjEOf6aIW/Vcobpf2Lll07QJNBAsNB1CI69aO4I1258EHBGG3zg +iLKecoaZAeO/n0kZtCW+VmWuF2PlHt/o/0elv+EmBYTksMCv5wiZqAxeJoBF1Pho +L5aPruJKHJwWDBNvOIf2u8g0X5IDUXlwpt/L9ZlNec1OvFefQ05rLisY+GpzjLrF +Ne85akEez3GoorKGB1s6yeHvP2UEgEcyRHCVTjFnanRbEEV16rCf0OY1/k6fi8wr +kkVbbiVghUbN0aqwdmaTd5a+g744tiROJgvM7XpWGuDpWsZkrUx6AEhEL7lAuxM+ +vhV4nYWBSipX3tUZQ9rbyltHhoMLP7YNdnhzeSJesYAfz77RP1YQmCuVh6EfnWQU +YDksswBVLuT1sw5XxJFBAJw/6KXf6vb/yPCtbVKoF6ubYfwSUTXkJf2vqmqGOQ== +-----END CERTIFICATE----- + +# Issuer: CN=GlobalSign O=GlobalSign OU=GlobalSign ECC Root CA - R4 +# Subject: CN=GlobalSign O=GlobalSign OU=GlobalSign ECC Root CA - R4 +# Label: "GlobalSign ECC Root CA - R4" +# Serial: 159662223612894884239637590694 +# MD5 Fingerprint: 26:29:f8:6d:e1:88:bf:a2:65:7f:aa:c4:cd:0f:7f:fc +# SHA1 Fingerprint: 6b:a0:b0:98:e1:71:ef:5a:ad:fe:48:15:80:77:10:f4:bd:6f:0b:28 +# SHA256 Fingerprint: b0:85:d7:0b:96:4f:19:1a:73:e4:af:0d:54:ae:7a:0e:07:aa:fd:af:9b:71:dd:08:62:13:8a:b7:32:5a:24:a2 +-----BEGIN CERTIFICATE----- +MIIB3DCCAYOgAwIBAgINAgPlfvU/k/2lCSGypjAKBggqhkjOPQQDAjBQMSQwIgYD +VQQLExtHbG9iYWxTaWduIEVDQyBSb290IENBIC0gUjQxEzARBgNVBAoTCkdsb2Jh +bFNpZ24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMTIxMTEzMDAwMDAwWhcNMzgw +MTE5MDMxNDA3WjBQMSQwIgYDVQQLExtHbG9iYWxTaWduIEVDQyBSb290IENBIC0g +UjQxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2JhbFNpZ24wWTAT +BgcqhkjOPQIBBggqhkjOPQMBBwNCAAS4xnnTj2wlDp8uORkcA6SumuU5BwkWymOx +uYb4ilfBV85C+nOh92VC/x7BALJucw7/xyHlGKSq2XE/qNS5zowdo0IwQDAOBgNV +HQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUVLB7rUW44kB/ ++wpu+74zyTyjhNUwCgYIKoZIzj0EAwIDRwAwRAIgIk90crlgr/HmnKAWBVBfw147 +bmF0774BxL4YSFlhgjICICadVGNA3jdgUM/I2O2dgq43mLyjj0xMqTQrbO/7lZsm +-----END CERTIFICATE----- + +# Issuer: CN=GTS Root R1 O=Google Trust Services LLC +# Subject: CN=GTS Root R1 O=Google Trust Services LLC +# Label: "GTS Root R1" +# Serial: 159662320309726417404178440727 +# MD5 Fingerprint: 05:fe:d0:bf:71:a8:a3:76:63:da:01:e0:d8:52:dc:40 +# SHA1 Fingerprint: e5:8c:1c:c4:91:3b:38:63:4b:e9:10:6e:e3:ad:8e:6b:9d:d9:81:4a +# SHA256 Fingerprint: d9:47:43:2a:bd:e7:b7:fa:90:fc:2e:6b:59:10:1b:12:80:e0:e1:c7:e4:e4:0f:a3:c6:88:7f:ff:57:a7:f4:cf +-----BEGIN CERTIFICATE----- +MIIFVzCCAz+gAwIBAgINAgPlk28xsBNJiGuiFzANBgkqhkiG9w0BAQwFADBHMQsw +CQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEU +MBIGA1UEAxMLR1RTIFJvb3QgUjEwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAw +MDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZp +Y2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjEwggIiMA0GCSqGSIb3DQEBAQUA +A4ICDwAwggIKAoICAQC2EQKLHuOhd5s73L+UPreVp0A8of2C+X0yBoJx9vaMf/vo +27xqLpeXo4xL+Sv2sfnOhB2x+cWX3u+58qPpvBKJXqeqUqv4IyfLpLGcY9vXmX7w +Cl7raKb0xlpHDU0QM+NOsROjyBhsS+z8CZDfnWQpJSMHobTSPS5g4M/SCYe7zUjw +TcLCeoiKu7rPWRnWr4+wB7CeMfGCwcDfLqZtbBkOtdh+JhpFAz2weaSUKK0Pfybl +qAj+lug8aJRT7oM6iCsVlgmy4HqMLnXWnOunVmSPlk9orj2XwoSPwLxAwAtcvfaH +szVsrBhQf4TgTM2S0yDpM7xSma8ytSmzJSq0SPly4cpk9+aCEI3oncKKiPo4Zor8 +Y/kB+Xj9e1x3+naH+uzfsQ55lVe0vSbv1gHR6xYKu44LtcXFilWr06zqkUspzBmk +MiVOKvFlRNACzqrOSbTqn3yDsEB750Orp2yjj32JgfpMpf/VjsPOS+C12LOORc92 +wO1AK/1TD7Cn1TsNsYqiA94xrcx36m97PtbfkSIS5r762DL8EGMUUXLeXdYWk70p +aDPvOmbsB4om3xPXV2V4J95eSRQAogB/mqghtqmxlbCluQ0WEdrHbEg8QOB+DVrN +VjzRlwW5y0vtOUucxD/SVRNuJLDWcfr0wbrM7Rv1/oFB2ACYPTrIrnqYNxgFlQID +AQABo0IwQDAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4E +FgQU5K8rJnEaK0gnhS9SZizv8IkTcT4wDQYJKoZIhvcNAQEMBQADggIBAJ+qQibb +C5u+/x6Wki4+omVKapi6Ist9wTrYggoGxval3sBOh2Z5ofmmWJyq+bXmYOfg6LEe +QkEzCzc9zolwFcq1JKjPa7XSQCGYzyI0zzvFIoTgxQ6KfF2I5DUkzps+GlQebtuy +h6f88/qBVRRiClmpIgUxPoLW7ttXNLwzldMXG+gnoot7TiYaelpkttGsN/H9oPM4 +7HLwEXWdyzRSjeZ2axfG34arJ45JK3VmgRAhpuo+9K4l/3wV3s6MJT/KYnAK9y8J +ZgfIPxz88NtFMN9iiMG1D53Dn0reWVlHxYciNuaCp+0KueIHoI17eko8cdLiA6Ef +MgfdG+RCzgwARWGAtQsgWSl4vflVy2PFPEz0tv/bal8xa5meLMFrUKTX5hgUvYU/ +Z6tGn6D/Qqc6f1zLXbBwHSs09dR2CQzreExZBfMzQsNhFRAbd03OIozUhfJFfbdT +6u9AWpQKXCBfTkBdYiJ23//OYb2MI3jSNwLgjt7RETeJ9r/tSQdirpLsQBqvFAnZ +0E6yove+7u7Y/9waLd64NnHi/Hm3lCXRSHNboTXns5lndcEZOitHTtNCjv0xyBZm +2tIMPNuzjsmhDYAPexZ3FL//2wmUspO8IFgV6dtxQ/PeEMMA3KgqlbbC1j+Qa3bb +bP6MvPJwNQzcmRk13NfIRmPVNnGuV/u3gm3c +-----END CERTIFICATE----- + +# Issuer: CN=GTS Root R2 O=Google Trust Services LLC +# Subject: CN=GTS Root R2 O=Google Trust Services LLC +# Label: "GTS Root R2" +# Serial: 159662449406622349769042896298 +# MD5 Fingerprint: 1e:39:c0:53:e6:1e:29:82:0b:ca:52:55:36:5d:57:dc +# SHA1 Fingerprint: 9a:44:49:76:32:db:de:fa:d0:bc:fb:5a:7b:17:bd:9e:56:09:24:94 +# SHA256 Fingerprint: 8d:25:cd:97:22:9d:bf:70:35:6b:da:4e:b3:cc:73:40:31:e2:4c:f0:0f:af:cf:d3:2d:c7:6e:b5:84:1c:7e:a8 +-----BEGIN CERTIFICATE----- +MIIFVzCCAz+gAwIBAgINAgPlrsWNBCUaqxElqjANBgkqhkiG9w0BAQwFADBHMQsw +CQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEU +MBIGA1UEAxMLR1RTIFJvb3QgUjIwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAw +MDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZp +Y2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjIwggIiMA0GCSqGSIb3DQEBAQUA +A4ICDwAwggIKAoICAQDO3v2m++zsFDQ8BwZabFn3GTXd98GdVarTzTukk3LvCvpt +nfbwhYBboUhSnznFt+4orO/LdmgUud+tAWyZH8QiHZ/+cnfgLFuv5AS/T3KgGjSY +6Dlo7JUle3ah5mm5hRm9iYz+re026nO8/4Piy33B0s5Ks40FnotJk9/BW9BuXvAu +MC6C/Pq8tBcKSOWIm8Wba96wyrQD8Nr0kLhlZPdcTK3ofmZemde4wj7I0BOdre7k +RXuJVfeKH2JShBKzwkCX44ofR5GmdFrS+LFjKBC4swm4VndAoiaYecb+3yXuPuWg +f9RhD1FLPD+M2uFwdNjCaKH5wQzpoeJ/u1U8dgbuak7MkogwTZq9TwtImoS1mKPV ++3PBV2HdKFZ1E66HjucMUQkQdYhMvI35ezzUIkgfKtzra7tEscszcTJGr61K8Yzo +dDqs5xoic4DSMPclQsciOzsSrZYuxsN2B6ogtzVJV+mSSeh2FnIxZyuWfoqjx5RW +Ir9qS34BIbIjMt/kmkRtWVtd9QCgHJvGeJeNkP+byKq0rxFROV7Z+2et1VsRnTKa +G73VululycslaVNVJ1zgyjbLiGH7HrfQy+4W+9OmTN6SpdTi3/UGVN4unUu0kzCq +gc7dGtxRcw1PcOnlthYhGXmy5okLdWTK1au8CcEYof/UVKGFPP0UJAOyh9OktwID +AQABo0IwQDAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4E +FgQUu//KjiOfT5nK2+JopqUVJxce2Q4wDQYJKoZIhvcNAQEMBQADggIBAB/Kzt3H +vqGf2SdMC9wXmBFqiN495nFWcrKeGk6c1SuYJF2ba3uwM4IJvd8lRuqYnrYb/oM8 +0mJhwQTtzuDFycgTE1XnqGOtjHsB/ncw4c5omwX4Eu55MaBBRTUoCnGkJE+M3DyC +B19m3H0Q/gxhswWV7uGugQ+o+MePTagjAiZrHYNSVc61LwDKgEDg4XSsYPWHgJ2u +NmSRXbBoGOqKYcl3qJfEycel/FVL8/B/uWU9J2jQzGv6U53hkRrJXRqWbTKH7QMg +yALOWr7Z6v2yTcQvG99fevX4i8buMTolUVVnjWQye+mew4K6Ki3pHrTgSAai/Gev +HyICc/sgCq+dVEuhzf9gR7A/Xe8bVr2XIZYtCtFenTgCR2y59PYjJbigapordwj6 +xLEokCZYCDzifqrXPW+6MYgKBesntaFJ7qBFVHvmJ2WZICGoo7z7GJa7Um8M7YNR +TOlZ4iBgxcJlkoKM8xAfDoqXvneCbT+PHV28SSe9zE8P4c52hgQjxcCMElv924Sg +JPFI/2R80L5cFtHvma3AH/vLrrw4IgYmZNralw4/KBVEqE8AyvCazM90arQ+POuV +7LXTWtiBmelDGDfrs7vRWGJB82bSj6p4lVQgw1oudCvV0b4YacCs1aTPObpRhANl +6WLAYv7YTVWW4tAR+kg0Eeye7QUd5MjWHYbL +-----END CERTIFICATE----- + +# Issuer: CN=GTS Root R3 O=Google Trust Services LLC +# Subject: CN=GTS Root R3 O=Google Trust Services LLC +# Label: "GTS Root R3" +# Serial: 159662495401136852707857743206 +# MD5 Fingerprint: 3e:e7:9d:58:02:94:46:51:94:e5:e0:22:4a:8b:e7:73 +# SHA1 Fingerprint: ed:e5:71:80:2b:c8:92:b9:5b:83:3c:d2:32:68:3f:09:cd:a0:1e:46 +# SHA256 Fingerprint: 34:d8:a7:3e:e2:08:d9:bc:db:0d:95:65:20:93:4b:4e:40:e6:94:82:59:6e:8b:6f:73:c8:42:6b:01:0a:6f:48 +-----BEGIN CERTIFICATE----- +MIICCTCCAY6gAwIBAgINAgPluILrIPglJ209ZjAKBggqhkjOPQQDAzBHMQswCQYD +VQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIG +A1UEAxMLR1RTIFJvb3QgUjMwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAw +WjBHMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2Vz +IExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjMwdjAQBgcqhkjOPQIBBgUrgQQAIgNi +AAQfTzOHMymKoYTey8chWEGJ6ladK0uFxh1MJ7x/JlFyb+Kf1qPKzEUURout736G +jOyxfi//qXGdGIRFBEFVbivqJn+7kAHjSxm65FSWRQmx1WyRRK2EE46ajA2ADDL2 +4CejQjBAMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQW +BBTB8Sa6oC2uhYHP0/EqEr24Cmf9vDAKBggqhkjOPQQDAwNpADBmAjEA9uEglRR7 +VKOQFhG/hMjqb2sXnh5GmCCbn9MN2azTL818+FsuVbu/3ZL3pAzcMeGiAjEA/Jdm +ZuVDFhOD3cffL74UOO0BzrEXGhF16b0DjyZ+hOXJYKaV11RZt+cRLInUue4X +-----END CERTIFICATE----- + +# Issuer: CN=GTS Root R4 O=Google Trust Services LLC +# Subject: CN=GTS Root R4 O=Google Trust Services LLC +# Label: "GTS Root R4" +# Serial: 159662532700760215368942768210 +# MD5 Fingerprint: 43:96:83:77:19:4d:76:b3:9d:65:52:e4:1d:22:a5:e8 +# SHA1 Fingerprint: 77:d3:03:67:b5:e0:0c:15:f6:0c:38:61:df:7c:e1:3b:92:46:4d:47 +# SHA256 Fingerprint: 34:9d:fa:40:58:c5:e2:63:12:3b:39:8a:e7:95:57:3c:4e:13:13:c8:3f:e6:8f:93:55:6c:d5:e8:03:1b:3c:7d +-----BEGIN CERTIFICATE----- +MIICCTCCAY6gAwIBAgINAgPlwGjvYxqccpBQUjAKBggqhkjOPQQDAzBHMQswCQYD +VQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIG +A1UEAxMLR1RTIFJvb3QgUjQwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAw +WjBHMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2Vz +IExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjQwdjAQBgcqhkjOPQIBBgUrgQQAIgNi +AATzdHOnaItgrkO4NcWBMHtLSZ37wWHO5t5GvWvVYRg1rkDdc/eJkTBa6zzuhXyi +QHY7qca4R9gq55KRanPpsXI5nymfopjTX15YhmUPoYRlBtHci8nHc8iMai/lxKvR +HYqjQjBAMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQW +BBSATNbrdP9JNqPV2Py1PsVq8JQdjDAKBggqhkjOPQQDAwNpADBmAjEA6ED/g94D +9J+uHXqnLrmvT/aDHQ4thQEd0dlq7A/Cr8deVl5c1RxYIigL9zC2L7F8AjEA8GE8 +p/SgguMh1YQdc4acLa/KNJvxn7kjNuK8YAOdgLOaVsjh4rsUecrNIdSUtUlD +-----END CERTIFICATE----- + +# Issuer: CN=Telia Root CA v2 O=Telia Finland Oyj +# Subject: CN=Telia Root CA v2 O=Telia Finland Oyj +# Label: "Telia Root CA v2" +# Serial: 7288924052977061235122729490515358 +# MD5 Fingerprint: 0e:8f:ac:aa:82:df:85:b1:f4:dc:10:1c:fc:99:d9:48 +# SHA1 Fingerprint: b9:99:cd:d1:73:50:8a:c4:47:05:08:9c:8c:88:fb:be:a0:2b:40:cd +# SHA256 Fingerprint: 24:2b:69:74:2f:cb:1e:5b:2a:bf:98:89:8b:94:57:21:87:54:4e:5b:4d:99:11:78:65:73:62:1f:6a:74:b8:2c +-----BEGIN CERTIFICATE----- +MIIFdDCCA1ygAwIBAgIPAWdfJ9b+euPkrL4JWwWeMA0GCSqGSIb3DQEBCwUAMEQx +CzAJBgNVBAYTAkZJMRowGAYDVQQKDBFUZWxpYSBGaW5sYW5kIE95ajEZMBcGA1UE +AwwQVGVsaWEgUm9vdCBDQSB2MjAeFw0xODExMjkxMTU1NTRaFw00MzExMjkxMTU1 +NTRaMEQxCzAJBgNVBAYTAkZJMRowGAYDVQQKDBFUZWxpYSBGaW5sYW5kIE95ajEZ +MBcGA1UEAwwQVGVsaWEgUm9vdCBDQSB2MjCCAiIwDQYJKoZIhvcNAQEBBQADggIP +ADCCAgoCggIBALLQPwe84nvQa5n44ndp586dpAO8gm2h/oFlH0wnrI4AuhZ76zBq +AMCzdGh+sq/H1WKzej9Qyow2RCRj0jbpDIX2Q3bVTKFgcmfiKDOlyzG4OiIjNLh9 +vVYiQJ3q9HsDrWj8soFPmNB06o3lfc1jw6P23pLCWBnglrvFxKk9pXSW/q/5iaq9 +lRdU2HhE8Qx3FZLgmEKnpNaqIJLNwaCzlrI6hEKNfdWV5Nbb6WLEWLN5xYzTNTOD +n3WhUidhOPFZPY5Q4L15POdslv5e2QJltI5c0BE0312/UqeBAMN/mUWZFdUXyApT +7GPzmX3MaRKGwhfwAZ6/hLzRUssbkmbOpFPlob/E2wnW5olWK8jjfN7j/4nlNW4o +6GwLI1GpJQXrSPjdscr6bAhR77cYbETKJuFzxokGgeWKrLDiKca5JLNrRBH0pUPC +TEPlcDaMtjNXepUugqD0XBCzYYP2AgWGLnwtbNwDRm41k9V6lS/eINhbfpSQBGq6 +WT0EBXWdN6IOLj3rwaRSg/7Qa9RmjtzG6RJOHSpXqhC8fF6CfaamyfItufUXJ63R +DolUK5X6wK0dmBR4M0KGCqlztft0DbcbMBnEWg4cJ7faGND/isgFuvGqHKI3t+ZI +pEYslOqodmJHixBTB0hXbOKSTbauBcvcwUpej6w9GU7C7WB1K9vBykLVAgMBAAGj +YzBhMB8GA1UdIwQYMBaAFHKs5DN5qkWH9v2sHZ7Wxy+G2CQ5MB0GA1UdDgQWBBRy +rOQzeapFh/b9rB2e1scvhtgkOTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUw +AwEB/zANBgkqhkiG9w0BAQsFAAOCAgEAoDtZpwmUPjaE0n4vOaWWl/oRrfxn83EJ +8rKJhGdEr7nv7ZbsnGTbMjBvZ5qsfl+yqwE2foH65IRe0qw24GtixX1LDoJt0nZi +0f6X+J8wfBj5tFJ3gh1229MdqfDBmgC9bXXYfef6xzijnHDoRnkDry5023X4blMM +A8iZGok1GTzTyVR8qPAs5m4HeW9q4ebqkYJpCh3DflminmtGFZhb069GHWLIzoBS +SRE/yQQSwxN8PzuKlts8oB4KtItUsiRnDe+Cy748fdHif64W1lZYudogsYMVoe+K +TTJvQS8TUoKU1xrBeKJR3Stwbbca+few4GeXVtt8YVMJAygCQMez2P2ccGrGKMOF +6eLtGpOg3kuYooQ+BXcBlj37tCAPnHICehIv1aO6UXivKitEZU61/Qrowc15h2Er +3oBXRb9n8ZuRXqWk7FlIEA04x7D6w0RtBPV4UBySllva9bguulvP5fBqnUsvWHMt +Ty3EHD70sz+rFQ47GUGKpMFXEmZxTPpT41frYpUJnlTd0cI8Vzy9OK2YZLe4A5pT +VmBds9hCG1xLEooc6+t9xnppxyd/pPiL8uSUZodL6ZQHCRJ5irLrdATczvREWeAW +ysUsWNc8e89ihmpQfTU2Zqf7N+cox9jQraVplI/owd8k+BsHMYeB2F326CjYSlKA +rBPuUBQemMc= +-----END CERTIFICATE----- + +# Issuer: CN=D-TRUST BR Root CA 1 2020 O=D-Trust GmbH +# Subject: CN=D-TRUST BR Root CA 1 2020 O=D-Trust GmbH +# Label: "D-TRUST BR Root CA 1 2020" +# Serial: 165870826978392376648679885835942448534 +# MD5 Fingerprint: b5:aa:4b:d5:ed:f7:e3:55:2e:8f:72:0a:f3:75:b8:ed +# SHA1 Fingerprint: 1f:5b:98:f0:e3:b5:f7:74:3c:ed:e6:b0:36:7d:32:cd:f4:09:41:67 +# SHA256 Fingerprint: e5:9a:aa:81:60:09:c2:2b:ff:5b:25:ba:d3:7d:f3:06:f0:49:79:7c:1f:81:d8:5a:b0:89:e6:57:bd:8f:00:44 +-----BEGIN CERTIFICATE----- +MIIC2zCCAmCgAwIBAgIQfMmPK4TX3+oPyWWa00tNljAKBggqhkjOPQQDAzBIMQsw +CQYDVQQGEwJERTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMSIwIAYDVQQDExlELVRS +VVNUIEJSIFJvb3QgQ0EgMSAyMDIwMB4XDTIwMDIxMTA5NDUwMFoXDTM1MDIxMTA5 +NDQ1OVowSDELMAkGA1UEBhMCREUxFTATBgNVBAoTDEQtVHJ1c3QgR21iSDEiMCAG +A1UEAxMZRC1UUlVTVCBCUiBSb290IENBIDEgMjAyMDB2MBAGByqGSM49AgEGBSuB +BAAiA2IABMbLxyjR+4T1mu9CFCDhQ2tuda38KwOE1HaTJddZO0Flax7mNCq7dPYS +zuht56vkPE4/RAiLzRZxy7+SmfSk1zxQVFKQhYN4lGdnoxwJGT11NIXe7WB9xwy0 +QVK5buXuQqOCAQ0wggEJMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFHOREKv/ +VbNafAkl1bK6CKBrqx9tMA4GA1UdDwEB/wQEAwIBBjCBxgYDVR0fBIG+MIG7MD6g +PKA6hjhodHRwOi8vY3JsLmQtdHJ1c3QubmV0L2NybC9kLXRydXN0X2JyX3Jvb3Rf +Y2FfMV8yMDIwLmNybDB5oHegdYZzbGRhcDovL2RpcmVjdG9yeS5kLXRydXN0Lm5l +dC9DTj1ELVRSVVNUJTIwQlIlMjBSb290JTIwQ0ElMjAxJTIwMjAyMCxPPUQtVHJ1 +c3QlMjBHbWJILEM9REU/Y2VydGlmaWNhdGVyZXZvY2F0aW9ubGlzdDAKBggqhkjO +PQQDAwNpADBmAjEAlJAtE/rhY/hhY+ithXhUkZy4kzg+GkHaQBZTQgjKL47xPoFW +wKrY7RjEsK70PvomAjEA8yjixtsrmfu3Ubgko6SUeho/5jbiA1czijDLgsfWFBHV +dWNbFJWcHwHP2NVypw87 +-----END CERTIFICATE----- + +# Issuer: CN=D-TRUST EV Root CA 1 2020 O=D-Trust GmbH +# Subject: CN=D-TRUST EV Root CA 1 2020 O=D-Trust GmbH +# Label: "D-TRUST EV Root CA 1 2020" +# Serial: 126288379621884218666039612629459926992 +# MD5 Fingerprint: 8c:2d:9d:70:9f:48:99:11:06:11:fb:e9:cb:30:c0:6e +# SHA1 Fingerprint: 61:db:8c:21:59:69:03:90:d8:7c:9c:12:86:54:cf:9d:3d:f4:dd:07 +# SHA256 Fingerprint: 08:17:0d:1a:a3:64:53:90:1a:2f:95:92:45:e3:47:db:0c:8d:37:ab:aa:bc:56:b8:1a:a1:00:dc:95:89:70:db +-----BEGIN CERTIFICATE----- +MIIC2zCCAmCgAwIBAgIQXwJB13qHfEwDo6yWjfv/0DAKBggqhkjOPQQDAzBIMQsw +CQYDVQQGEwJERTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMSIwIAYDVQQDExlELVRS +VVNUIEVWIFJvb3QgQ0EgMSAyMDIwMB4XDTIwMDIxMTEwMDAwMFoXDTM1MDIxMTA5 +NTk1OVowSDELMAkGA1UEBhMCREUxFTATBgNVBAoTDEQtVHJ1c3QgR21iSDEiMCAG +A1UEAxMZRC1UUlVTVCBFViBSb290IENBIDEgMjAyMDB2MBAGByqGSM49AgEGBSuB +BAAiA2IABPEL3YZDIBnfl4XoIkqbz52Yv7QFJsnL46bSj8WeeHsxiamJrSc8ZRCC +/N/DnU7wMyPE0jL1HLDfMxddxfCxivnvubcUyilKwg+pf3VlSSowZ/Rk99Yad9rD +wpdhQntJraOCAQ0wggEJMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFH8QARY3 +OqQo5FD4pPfsazK2/umLMA4GA1UdDwEB/wQEAwIBBjCBxgYDVR0fBIG+MIG7MD6g +PKA6hjhodHRwOi8vY3JsLmQtdHJ1c3QubmV0L2NybC9kLXRydXN0X2V2X3Jvb3Rf +Y2FfMV8yMDIwLmNybDB5oHegdYZzbGRhcDovL2RpcmVjdG9yeS5kLXRydXN0Lm5l +dC9DTj1ELVRSVVNUJTIwRVYlMjBSb290JTIwQ0ElMjAxJTIwMjAyMCxPPUQtVHJ1 +c3QlMjBHbWJILEM9REU/Y2VydGlmaWNhdGVyZXZvY2F0aW9ubGlzdDAKBggqhkjO +PQQDAwNpADBmAjEAyjzGKnXCXnViOTYAYFqLwZOZzNnbQTs7h5kXO9XMT8oi96CA +y/m0sRtW9XLS/BnRAjEAkfcwkz8QRitxpNA7RJvAKQIFskF3UfN5Wp6OFKBOQtJb +gfM0agPnIjhQW+0ZT0MW +-----END CERTIFICATE----- + +# Issuer: CN=DigiCert TLS ECC P384 Root G5 O=DigiCert, Inc. +# Subject: CN=DigiCert TLS ECC P384 Root G5 O=DigiCert, Inc. +# Label: "DigiCert TLS ECC P384 Root G5" +# Serial: 13129116028163249804115411775095713523 +# MD5 Fingerprint: d3:71:04:6a:43:1c:db:a6:59:e1:a8:a3:aa:c5:71:ed +# SHA1 Fingerprint: 17:f3:de:5e:9f:0f:19:e9:8e:f6:1f:32:26:6e:20:c4:07:ae:30:ee +# SHA256 Fingerprint: 01:8e:13:f0:77:25:32:cf:80:9b:d1:b1:72:81:86:72:83:fc:48:c6:e1:3b:e9:c6:98:12:85:4a:49:0c:1b:05 +-----BEGIN CERTIFICATE----- +MIICGTCCAZ+gAwIBAgIQCeCTZaz32ci5PhwLBCou8zAKBggqhkjOPQQDAzBOMQsw +CQYDVQQGEwJVUzEXMBUGA1UEChMORGlnaUNlcnQsIEluYy4xJjAkBgNVBAMTHURp +Z2lDZXJ0IFRMUyBFQ0MgUDM4NCBSb290IEc1MB4XDTIxMDExNTAwMDAwMFoXDTQ2 +MDExNDIzNTk1OVowTjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDkRpZ2lDZXJ0LCBJ +bmMuMSYwJAYDVQQDEx1EaWdpQ2VydCBUTFMgRUNDIFAzODQgUm9vdCBHNTB2MBAG +ByqGSM49AgEGBSuBBAAiA2IABMFEoc8Rl1Ca3iOCNQfN0MsYndLxf3c1TzvdlHJS +7cI7+Oz6e2tYIOyZrsn8aLN1udsJ7MgT9U7GCh1mMEy7H0cKPGEQQil8pQgO4CLp +0zVozptjn4S1mU1YoI71VOeVyaNCMEAwHQYDVR0OBBYEFMFRRVBZqz7nLFr6ICIS +B4CIfBFqMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MAoGCCqGSM49 +BAMDA2gAMGUCMQCJao1H5+z8blUD2WdsJk6Dxv3J+ysTvLd6jLRl0mlpYxNjOyZQ +LgGheQaRnUi/wr4CMEfDFXuxoJGZSZOoPHzoRgaLLPIxAJSdYsiJvRmEFOml+wG4 +DXZDjC5Ty3zfDBeWUA== +-----END CERTIFICATE----- + +# Issuer: CN=DigiCert TLS RSA4096 Root G5 O=DigiCert, Inc. +# Subject: CN=DigiCert TLS RSA4096 Root G5 O=DigiCert, Inc. +# Label: "DigiCert TLS RSA4096 Root G5" +# Serial: 11930366277458970227240571539258396554 +# MD5 Fingerprint: ac:fe:f7:34:96:a9:f2:b3:b4:12:4b:e4:27:41:6f:e1 +# SHA1 Fingerprint: a7:88:49:dc:5d:7c:75:8c:8c:de:39:98:56:b3:aa:d0:b2:a5:71:35 +# SHA256 Fingerprint: 37:1a:00:dc:05:33:b3:72:1a:7e:eb:40:e8:41:9e:70:79:9d:2b:0a:0f:2c:1d:80:69:31:65:f7:ce:c4:ad:75 +-----BEGIN CERTIFICATE----- +MIIFZjCCA06gAwIBAgIQCPm0eKj6ftpqMzeJ3nzPijANBgkqhkiG9w0BAQwFADBN +MQswCQYDVQQGEwJVUzEXMBUGA1UEChMORGlnaUNlcnQsIEluYy4xJTAjBgNVBAMT +HERpZ2lDZXJ0IFRMUyBSU0E0MDk2IFJvb3QgRzUwHhcNMjEwMTE1MDAwMDAwWhcN +NDYwMTE0MjM1OTU5WjBNMQswCQYDVQQGEwJVUzEXMBUGA1UEChMORGlnaUNlcnQs +IEluYy4xJTAjBgNVBAMTHERpZ2lDZXJ0IFRMUyBSU0E0MDk2IFJvb3QgRzUwggIi +MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCz0PTJeRGd/fxmgefM1eS87IE+ +ajWOLrfn3q/5B03PMJ3qCQuZvWxX2hhKuHisOjmopkisLnLlvevxGs3npAOpPxG0 +2C+JFvuUAT27L/gTBaF4HI4o4EXgg/RZG5Wzrn4DReW+wkL+7vI8toUTmDKdFqgp +wgscONyfMXdcvyej/Cestyu9dJsXLfKB2l2w4SMXPohKEiPQ6s+d3gMXsUJKoBZM +pG2T6T867jp8nVid9E6P/DsjyG244gXazOvswzH016cpVIDPRFtMbzCe88zdH5RD +nU1/cHAN1DrRN/BsnZvAFJNY781BOHW8EwOVfH/jXOnVDdXifBBiqmvwPXbzP6Po +sMH976pXTayGpxi0KcEsDr9kvimM2AItzVwv8n/vFfQMFawKsPHTDU9qTXeXAaDx +Zre3zu/O7Oyldcqs4+Fj97ihBMi8ez9dLRYiVu1ISf6nL3kwJZu6ay0/nTvEF+cd +Lvvyz6b84xQslpghjLSR6Rlgg/IwKwZzUNWYOwbpx4oMYIwo+FKbbuH2TbsGJJvX +KyY//SovcfXWJL5/MZ4PbeiPT02jP/816t9JXkGPhvnxd3lLG7SjXi/7RgLQZhNe +XoVPzthwiHvOAbWWl9fNff2C+MIkwcoBOU+NosEUQB+cZtUMCUbW8tDRSHZWOkPL +tgoRObqME2wGtZ7P6wIDAQABo0IwQDAdBgNVHQ4EFgQUUTMc7TZArxfTJc1paPKv +TiM+s0EwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcN +AQEMBQADggIBAGCmr1tfV9qJ20tQqcQjNSH/0GEwhJG3PxDPJY7Jv0Y02cEhJhxw +GXIeo8mH/qlDZJY6yFMECrZBu8RHANmfGBg7sg7zNOok992vIGCukihfNudd5N7H +PNtQOa27PShNlnx2xlv0wdsUpasZYgcYQF+Xkdycx6u1UQ3maVNVzDl92sURVXLF +O4uJ+DQtpBflF+aZfTCIITfNMBc9uPK8qHWgQ9w+iUuQrm0D4ByjoJYJu32jtyoQ +REtGBzRj7TG5BO6jm5qu5jF49OokYTurWGT/u4cnYiWB39yhL/btp/96j1EuMPik +AdKFOV8BmZZvWltwGUb+hmA+rYAQCd05JS9Yf7vSdPD3Rh9GOUrYU9DzLjtxpdRv +/PNn5AeP3SYZ4Y1b+qOTEZvpyDrDVWiakuFSdjjo4bq9+0/V77PnSIMx8IIh47a+ +p6tv75/fTM8BuGJqIz3nCU2AG3swpMPdB380vqQmsvZB6Akd4yCYqjdP//fx4ilw +MUc/dNAUFvohigLVigmUdy7yWSiLfFCSCmZ4OIN1xLVaqBHG5cGdZlXPU8Sv13WF +qUITVuwhd4GTWgzqltlJyqEI8pc7bZsEGCREjnwB8twl2F6GmrE52/WRMmrRpnCK +ovfepEWFJqgejF0pW8hL2JpqA15w8oVPbEtoL8pU9ozaMv7Da4M/OMZ+ +-----END CERTIFICATE----- + +# Issuer: CN=Certainly Root R1 O=Certainly +# Subject: CN=Certainly Root R1 O=Certainly +# Label: "Certainly Root R1" +# Serial: 188833316161142517227353805653483829216 +# MD5 Fingerprint: 07:70:d4:3e:82:87:a0:fa:33:36:13:f4:fa:33:e7:12 +# SHA1 Fingerprint: a0:50:ee:0f:28:71:f4:27:b2:12:6d:6f:50:96:25:ba:cc:86:42:af +# SHA256 Fingerprint: 77:b8:2c:d8:64:4c:43:05:f7:ac:c5:cb:15:6b:45:67:50:04:03:3d:51:c6:0c:62:02:a8:e0:c3:34:67:d3:a0 +-----BEGIN CERTIFICATE----- +MIIFRzCCAy+gAwIBAgIRAI4P+UuQcWhlM1T01EQ5t+AwDQYJKoZIhvcNAQELBQAw +PTELMAkGA1UEBhMCVVMxEjAQBgNVBAoTCUNlcnRhaW5seTEaMBgGA1UEAxMRQ2Vy +dGFpbmx5IFJvb3QgUjEwHhcNMjEwNDAxMDAwMDAwWhcNNDYwNDAxMDAwMDAwWjA9 +MQswCQYDVQQGEwJVUzESMBAGA1UEChMJQ2VydGFpbmx5MRowGAYDVQQDExFDZXJ0 +YWlubHkgUm9vdCBSMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANA2 +1B/q3avk0bbm+yLA3RMNansiExyXPGhjZjKcA7WNpIGD2ngwEc/csiu+kr+O5MQT +vqRoTNoCaBZ0vrLdBORrKt03H2As2/X3oXyVtwxwhi7xOu9S98zTm/mLvg7fMbed +aFySpvXl8wo0tf97ouSHocavFwDvA5HtqRxOcT3Si2yJ9HiG5mpJoM610rCrm/b0 +1C7jcvk2xusVtyWMOvwlDbMicyF0yEqWYZL1LwsYpfSt4u5BvQF5+paMjRcCMLT5 +r3gajLQ2EBAHBXDQ9DGQilHFhiZ5shGIXsXwClTNSaa/ApzSRKft43jvRl5tcdF5 +cBxGX1HpyTfcX35pe0HfNEXgO4T0oYoKNp43zGJS4YkNKPl6I7ENPT2a/Z2B7yyQ +wHtETrtJ4A5KVpK8y7XdeReJkd5hiXSSqOMyhb5OhaRLWcsrxXiOcVTQAjeZjOVJ +6uBUcqQRBi8LjMFbvrWhsFNunLhgkR9Za/kt9JQKl7XsxXYDVBtlUrpMklZRNaBA +2CnbrlJ2Oy0wQJuK0EJWtLeIAaSHO1OWzaMWj/Nmqhexx2DgwUMFDO6bW2BvBlyH +Wyf5QBGenDPBt+U1VwV/J84XIIwc/PH72jEpSe31C4SnT8H2TsIonPru4K8H+zMR +eiFPCyEQtkA6qyI6BJyLm4SGcprSp6XEtHWRqSsjAgMBAAGjQjBAMA4GA1UdDwEB +/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTgqj8ljZ9EXME66C6u +d0yEPmcM9DANBgkqhkiG9w0BAQsFAAOCAgEAuVevuBLaV4OPaAszHQNTVfSVcOQr +PbA56/qJYv331hgELyE03fFo8NWWWt7CgKPBjcZq91l3rhVkz1t5BXdm6ozTaw3d +8VkswTOlMIAVRQdFGjEitpIAq5lNOo93r6kiyi9jyhXWx8bwPWz8HA2YEGGeEaIi +1wrykXprOQ4vMMM2SZ/g6Q8CRFA3lFV96p/2O7qUpUzpvD5RtOjKkjZUbVwlKNrd +rRT90+7iIgXr0PK3aBLXWopBGsaSpVo7Y0VPv+E6dyIvXL9G+VoDhRNCX8reU9di +taY1BMJH/5n9hN9czulegChB8n3nHpDYT3Y+gjwN/KUD+nsa2UUeYNrEjvn8K8l7 +lcUq/6qJ34IxD3L/DCfXCh5WAFAeDJDBlrXYFIW7pw0WwfgHJBu6haEaBQmAupVj +yTrsJZ9/nbqkRxWbRHDxakvWOF5D8xh+UG7pWijmZeZ3Gzr9Hb4DJqPb1OG7fpYn +Kx3upPvaJVQTA945xsMfTZDsjxtK0hzthZU4UHlG1sGQUDGpXJpuHfUzVounmdLy +yCwzk5Iwx06MZTMQZBf9JBeW0Y3COmor6xOLRPIh80oat3df1+2IpHLlOR+Vnb5n +wXARPbv0+Em34yaXOp/SX3z7wJl8OSngex2/DaeP0ik0biQVy96QXr8axGbqwua6 +OV+KmalBWQewLK8= +-----END CERTIFICATE----- + +# Issuer: CN=Certainly Root E1 O=Certainly +# Subject: CN=Certainly Root E1 O=Certainly +# Label: "Certainly Root E1" +# Serial: 8168531406727139161245376702891150584 +# MD5 Fingerprint: 0a:9e:ca:cd:3e:52:50:c6:36:f3:4b:a3:ed:a7:53:e9 +# SHA1 Fingerprint: f9:e1:6d:dc:01:89:cf:d5:82:45:63:3e:c5:37:7d:c2:eb:93:6f:2b +# SHA256 Fingerprint: b4:58:5f:22:e4:ac:75:6a:4e:86:12:a1:36:1c:5d:9d:03:1a:93:fd:84:fe:bb:77:8f:a3:06:8b:0f:c4:2d:c2 +-----BEGIN CERTIFICATE----- +MIIB9zCCAX2gAwIBAgIQBiUzsUcDMydc+Y2aub/M+DAKBggqhkjOPQQDAzA9MQsw +CQYDVQQGEwJVUzESMBAGA1UEChMJQ2VydGFpbmx5MRowGAYDVQQDExFDZXJ0YWlu +bHkgUm9vdCBFMTAeFw0yMTA0MDEwMDAwMDBaFw00NjA0MDEwMDAwMDBaMD0xCzAJ +BgNVBAYTAlVTMRIwEAYDVQQKEwlDZXJ0YWlubHkxGjAYBgNVBAMTEUNlcnRhaW5s +eSBSb290IEUxMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAE3m/4fxzf7flHh4axpMCK ++IKXgOqPyEpeKn2IaKcBYhSRJHpcnqMXfYqGITQYUBsQ3tA3SybHGWCA6TS9YBk2 +QNYphwk8kXr2vBMj3VlOBF7PyAIcGFPBMdjaIOlEjeR2o0IwQDAOBgNVHQ8BAf8E +BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU8ygYy2R17ikq6+2uI1g4 +hevIIgcwCgYIKoZIzj0EAwMDaAAwZQIxALGOWiDDshliTd6wT99u0nCK8Z9+aozm +ut6Dacpps6kFtZaSF4fC0urQe87YQVt8rgIwRt7qy12a7DLCZRawTDBcMPPaTnOG +BtjOiQRINzf43TNRnXCve1XYAS59BWQOhriR +-----END CERTIFICATE----- + +# Issuer: CN=Security Communication ECC RootCA1 O=SECOM Trust Systems CO.,LTD. +# Subject: CN=Security Communication ECC RootCA1 O=SECOM Trust Systems CO.,LTD. +# Label: "Security Communication ECC RootCA1" +# Serial: 15446673492073852651 +# MD5 Fingerprint: 7e:43:b0:92:68:ec:05:43:4c:98:ab:5d:35:2e:7e:86 +# SHA1 Fingerprint: b8:0e:26:a9:bf:d2:b2:3b:c0:ef:46:c9:ba:c7:bb:f6:1d:0d:41:41 +# SHA256 Fingerprint: e7:4f:bd:a5:5b:d5:64:c4:73:a3:6b:44:1a:a7:99:c8:a6:8e:07:74:40:e8:28:8b:9f:a1:e5:0e:4b:ba:ca:11 +-----BEGIN CERTIFICATE----- +MIICODCCAb6gAwIBAgIJANZdm7N4gS7rMAoGCCqGSM49BAMDMGExCzAJBgNVBAYT +AkpQMSUwIwYDVQQKExxTRUNPTSBUcnVzdCBTeXN0ZW1zIENPLixMVEQuMSswKQYD +VQQDEyJTZWN1cml0eSBDb21tdW5pY2F0aW9uIEVDQyBSb290Q0ExMB4XDTE2MDYx +NjA1MTUyOFoXDTM4MDExODA1MTUyOFowYTELMAkGA1UEBhMCSlAxJTAjBgNVBAoT +HFNFQ09NIFRydXN0IFN5c3RlbXMgQ08uLExURC4xKzApBgNVBAMTIlNlY3VyaXR5 +IENvbW11bmljYXRpb24gRUNDIFJvb3RDQTEwdjAQBgcqhkjOPQIBBgUrgQQAIgNi +AASkpW9gAwPDvTH00xecK4R1rOX9PVdu12O/5gSJko6BnOPpR27KkBLIE+Cnnfdl +dB9sELLo5OnvbYUymUSxXv3MdhDYW72ixvnWQuRXdtyQwjWpS4g8EkdtXP9JTxpK +ULGjQjBAMB0GA1UdDgQWBBSGHOf+LaVKiwj+KBH6vqNm+GBZLzAOBgNVHQ8BAf8E +BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjAVXUI9/Lbu +9zuxNuie9sRGKEkz0FhDKmMpzE2xtHqiuQ04pV1IKv3LsnNdo4gIxwwCMQDAqy0O +be0YottT6SXbVQjgUMzfRGEWgqtJsLKB7HOHeLRMsmIbEvoWTSVLY70eN9k= +-----END CERTIFICATE----- + +# Issuer: CN=BJCA Global Root CA1 O=BEIJING CERTIFICATE AUTHORITY +# Subject: CN=BJCA Global Root CA1 O=BEIJING CERTIFICATE AUTHORITY +# Label: "BJCA Global Root CA1" +# Serial: 113562791157148395269083148143378328608 +# MD5 Fingerprint: 42:32:99:76:43:33:36:24:35:07:82:9b:28:f9:d0:90 +# SHA1 Fingerprint: d5:ec:8d:7b:4c:ba:79:f4:e7:e8:cb:9d:6b:ae:77:83:10:03:21:6a +# SHA256 Fingerprint: f3:89:6f:88:fe:7c:0a:88:27:66:a7:fa:6a:d2:74:9f:b5:7a:7f:3e:98:fb:76:9c:1f:a7:b0:9c:2c:44:d5:ae +-----BEGIN CERTIFICATE----- +MIIFdDCCA1ygAwIBAgIQVW9l47TZkGobCdFsPsBsIDANBgkqhkiG9w0BAQsFADBU +MQswCQYDVQQGEwJDTjEmMCQGA1UECgwdQkVJSklORyBDRVJUSUZJQ0FURSBBVVRI +T1JJVFkxHTAbBgNVBAMMFEJKQ0EgR2xvYmFsIFJvb3QgQ0ExMB4XDTE5MTIxOTAz +MTYxN1oXDTQ0MTIxMjAzMTYxN1owVDELMAkGA1UEBhMCQ04xJjAkBgNVBAoMHUJF +SUpJTkcgQ0VSVElGSUNBVEUgQVVUSE9SSVRZMR0wGwYDVQQDDBRCSkNBIEdsb2Jh +bCBSb290IENBMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAPFmCL3Z +xRVhy4QEQaVpN3cdwbB7+sN3SJATcmTRuHyQNZ0YeYjjlwE8R4HyDqKYDZ4/N+AZ +spDyRhySsTphzvq3Rp4Dhtczbu33RYx2N95ulpH3134rhxfVizXuhJFyV9xgw8O5 +58dnJCNPYwpj9mZ9S1WnP3hkSWkSl+BMDdMJoDIwOvqfwPKcxRIqLhy1BDPapDgR +at7GGPZHOiJBhyL8xIkoVNiMpTAK+BcWyqw3/XmnkRd4OJmtWO2y3syJfQOcs4ll +5+M7sSKGjwZteAf9kRJ/sGsciQ35uMt0WwfCyPQ10WRjeulumijWML3mG90Vr4Tq +nMfK9Q7q8l0ph49pczm+LiRvRSGsxdRpJQaDrXpIhRMsDQa4bHlW/KNnMoH1V6XK +V0Jp6VwkYe/iMBhORJhVb3rCk9gZtt58R4oRTklH2yiUAguUSiz5EtBP6DF+bHq/ +pj+bOT0CFqMYs2esWz8sgytnOYFcuX6U1WTdno9uruh8W7TXakdI136z1C2OVnZO +z2nxbkRs1CTqjSShGL+9V/6pmTW12xB3uD1IutbB5/EjPtffhZ0nPNRAvQoMvfXn +jSXWgXSHRtQpdaJCbPdzied9v3pKH9MiyRVVz99vfFXQpIsHETdfg6YmV6YBW37+ +WGgHqel62bno/1Afq8K0wM7o6v0PvY1NuLxxAgMBAAGjQjBAMB0GA1UdDgQWBBTF +7+3M2I0hxkjk49cULqcWk+WYATAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQE +AwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAUoKsITQfI/Ki2Pm4rzc2IInRNwPWaZ+4 +YRC6ojGYWUfo0Q0lHhVBDOAqVdVXUsv45Mdpox1NcQJeXyFFYEhcCY5JEMEE3Kli +awLwQ8hOnThJdMkycFRtwUf8jrQ2ntScvd0g1lPJGKm1Vrl2i5VnZu69mP6u775u ++2D2/VnGKhs/I0qUJDAnyIm860Qkmss9vk/Ves6OF8tiwdneHg56/0OGNFK8YT88 +X7vZdrRTvJez/opMEi4r89fO4aL/3Xtw+zuhTaRjAv04l5U/BXCga99igUOLtFkN +SoxUnMW7gZ/NfaXvCyUeOiDbHPwfmGcCCtRzRBPbUYQaVQNW4AB+dAb/OMRyHdOo +P2gxXdMJxy6MW2Pg6Nwe0uxhHvLe5e/2mXZgLR6UcnHGCyoyx5JO1UbXHfmpGQrI ++pXObSOYqgs4rZpWDW+N8TEAiMEXnM0ZNjX+VVOg4DwzX5Ze4jLp3zO7Bkqp2IRz +znfSxqxx4VyjHQy7Ct9f4qNx2No3WqB4K/TUfet27fJhcKVlmtOJNBir+3I+17Q9 +eVzYH6Eze9mCUAyTF6ps3MKCuwJXNq+YJyo5UOGwifUll35HaBC07HPKs5fRJNz2 +YqAo07WjuGS3iGJCz51TzZm+ZGiPTx4SSPfSKcOYKMryMguTjClPPGAyzQWWYezy +r/6zcCwupvI= +-----END CERTIFICATE----- + +# Issuer: CN=BJCA Global Root CA2 O=BEIJING CERTIFICATE AUTHORITY +# Subject: CN=BJCA Global Root CA2 O=BEIJING CERTIFICATE AUTHORITY +# Label: "BJCA Global Root CA2" +# Serial: 58605626836079930195615843123109055211 +# MD5 Fingerprint: 5e:0a:f6:47:5f:a6:14:e8:11:01:95:3f:4d:01:eb:3c +# SHA1 Fingerprint: f4:27:86:eb:6e:b8:6d:88:31:67:02:fb:ba:66:a4:53:00:aa:7a:a6 +# SHA256 Fingerprint: 57:4d:f6:93:1e:27:80:39:66:7b:72:0a:fd:c1:60:0f:c2:7e:b6:6d:d3:09:29:79:fb:73:85:64:87:21:28:82 +-----BEGIN CERTIFICATE----- +MIICJTCCAaugAwIBAgIQLBcIfWQqwP6FGFkGz7RK6zAKBggqhkjOPQQDAzBUMQsw +CQYDVQQGEwJDTjEmMCQGA1UECgwdQkVJSklORyBDRVJUSUZJQ0FURSBBVVRIT1JJ +VFkxHTAbBgNVBAMMFEJKQ0EgR2xvYmFsIFJvb3QgQ0EyMB4XDTE5MTIxOTAzMTgy +MVoXDTQ0MTIxMjAzMTgyMVowVDELMAkGA1UEBhMCQ04xJjAkBgNVBAoMHUJFSUpJ +TkcgQ0VSVElGSUNBVEUgQVVUSE9SSVRZMR0wGwYDVQQDDBRCSkNBIEdsb2JhbCBS +b290IENBMjB2MBAGByqGSM49AgEGBSuBBAAiA2IABJ3LgJGNU2e1uVCxA/jlSR9B +IgmwUVJY1is0j8USRhTFiy8shP8sbqjV8QnjAyEUxEM9fMEsxEtqSs3ph+B99iK+ ++kpRuDCK/eHeGBIK9ke35xe/J4rUQUyWPGCWwf0VHKNCMEAwHQYDVR0OBBYEFNJK +sVF/BvDRgh9Obl+rg/xI1LCRMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQD +AgEGMAoGCCqGSM49BAMDA2gAMGUCMBq8W9f+qdJUDkpd0m2xQNz0Q9XSSpkZElaA +94M04TVOSG0ED1cxMDAtsaqdAzjbBgIxAMvMh1PLet8gUXOQwKhbYdDFUDn9hf7B +43j4ptZLvZuHjw/l1lOWqzzIQNph91Oj9w== +-----END CERTIFICATE----- + +# Issuer: CN=Sectigo Public Server Authentication Root E46 O=Sectigo Limited +# Subject: CN=Sectigo Public Server Authentication Root E46 O=Sectigo Limited +# Label: "Sectigo Public Server Authentication Root E46" +# Serial: 88989738453351742415770396670917916916 +# MD5 Fingerprint: 28:23:f8:b2:98:5c:37:16:3b:3e:46:13:4e:b0:b3:01 +# SHA1 Fingerprint: ec:8a:39:6c:40:f0:2e:bc:42:75:d4:9f:ab:1c:1a:5b:67:be:d2:9a +# SHA256 Fingerprint: c9:0f:26:f0:fb:1b:40:18:b2:22:27:51:9b:5c:a2:b5:3e:2c:a5:b3:be:5c:f1:8e:fe:1b:ef:47:38:0c:53:83 +-----BEGIN CERTIFICATE----- +MIICOjCCAcGgAwIBAgIQQvLM2htpN0RfFf51KBC49DAKBggqhkjOPQQDAzBfMQsw +CQYDVQQGEwJHQjEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMTYwNAYDVQQDEy1T +ZWN0aWdvIFB1YmxpYyBTZXJ2ZXIgQXV0aGVudGljYXRpb24gUm9vdCBFNDYwHhcN +MjEwMzIyMDAwMDAwWhcNNDYwMzIxMjM1OTU5WjBfMQswCQYDVQQGEwJHQjEYMBYG +A1UEChMPU2VjdGlnbyBMaW1pdGVkMTYwNAYDVQQDEy1TZWN0aWdvIFB1YmxpYyBT +ZXJ2ZXIgQXV0aGVudGljYXRpb24gUm9vdCBFNDYwdjAQBgcqhkjOPQIBBgUrgQQA +IgNiAAR2+pmpbiDt+dd34wc7qNs9Xzjoq1WmVk/WSOrsfy2qw7LFeeyZYX8QeccC +WvkEN/U0NSt3zn8gj1KjAIns1aeibVvjS5KToID1AZTc8GgHHs3u/iVStSBDHBv+ +6xnOQ6OjQjBAMB0GA1UdDgQWBBTRItpMWfFLXyY4qp3W7usNw/upYTAOBgNVHQ8B +Af8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNnADBkAjAn7qRa +qCG76UeXlImldCBteU/IvZNeWBj7LRoAasm4PdCkT0RHlAFWovgzJQxC36oCMB3q +4S6ILuH5px0CMk7yn2xVdOOurvulGu7t0vzCAxHrRVxgED1cf5kDW21USAGKcw== +-----END CERTIFICATE----- + +# Issuer: CN=Sectigo Public Server Authentication Root R46 O=Sectigo Limited +# Subject: CN=Sectigo Public Server Authentication Root R46 O=Sectigo Limited +# Label: "Sectigo Public Server Authentication Root R46" +# Serial: 156256931880233212765902055439220583700 +# MD5 Fingerprint: 32:10:09:52:00:d5:7e:6c:43:df:15:c0:b1:16:93:e5 +# SHA1 Fingerprint: ad:98:f9:f3:e4:7d:75:3b:65:d4:82:b3:a4:52:17:bb:6e:f5:e4:38 +# SHA256 Fingerprint: 7b:b6:47:a6:2a:ee:ac:88:bf:25:7a:a5:22:d0:1f:fe:a3:95:e0:ab:45:c7:3f:93:f6:56:54:ec:38:f2:5a:06 +-----BEGIN CERTIFICATE----- +MIIFijCCA3KgAwIBAgIQdY39i658BwD6qSWn4cetFDANBgkqhkiG9w0BAQwFADBf +MQswCQYDVQQGEwJHQjEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMTYwNAYDVQQD +Ey1TZWN0aWdvIFB1YmxpYyBTZXJ2ZXIgQXV0aGVudGljYXRpb24gUm9vdCBSNDYw +HhcNMjEwMzIyMDAwMDAwWhcNNDYwMzIxMjM1OTU5WjBfMQswCQYDVQQGEwJHQjEY +MBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMTYwNAYDVQQDEy1TZWN0aWdvIFB1Ymxp +YyBTZXJ2ZXIgQXV0aGVudGljYXRpb24gUm9vdCBSNDYwggIiMA0GCSqGSIb3DQEB +AQUAA4ICDwAwggIKAoICAQCTvtU2UnXYASOgHEdCSe5jtrch/cSV1UgrJnwUUxDa +ef0rty2k1Cz66jLdScK5vQ9IPXtamFSvnl0xdE8H/FAh3aTPaE8bEmNtJZlMKpnz +SDBh+oF8HqcIStw+KxwfGExxqjWMrfhu6DtK2eWUAtaJhBOqbchPM8xQljeSM9xf +iOefVNlI8JhD1mb9nxc4Q8UBUQvX4yMPFF1bFOdLvt30yNoDN9HWOaEhUTCDsG3X +ME6WW5HwcCSrv0WBZEMNvSE6Lzzpng3LILVCJ8zab5vuZDCQOc2TZYEhMbUjUDM3 +IuM47fgxMMxF/mL50V0yeUKH32rMVhlATc6qu/m1dkmU8Sf4kaWD5QazYw6A3OAS +VYCmO2a0OYctyPDQ0RTp5A1NDvZdV3LFOxxHVp3i1fuBYYzMTYCQNFu31xR13NgE +SJ/AwSiItOkcyqex8Va3e0lMWeUgFaiEAin6OJRpmkkGj80feRQXEgyDet4fsZfu ++Zd4KKTIRJLpfSYFplhym3kT2BFfrsU4YjRosoYwjviQYZ4ybPUHNs2iTG7sijbt +8uaZFURww3y8nDnAtOFr94MlI1fZEoDlSfB1D++N6xybVCi0ITz8fAr/73trdf+L +HaAZBav6+CuBQug4urv7qv094PPK306Xlynt8xhW6aWWrL3DkJiy4Pmi1KZHQ3xt +zwIDAQABo0IwQDAdBgNVHQ4EFgQUVnNYZJX5khqwEioEYnmhQBWIIUkwDgYDVR0P +AQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEMBQADggIBAC9c +mTz8Bl6MlC5w6tIyMY208FHVvArzZJ8HXtXBc2hkeqK5Duj5XYUtqDdFqij0lgVQ +YKlJfp/imTYpE0RHap1VIDzYm/EDMrraQKFz6oOht0SmDpkBm+S8f74TlH7Kph52 +gDY9hAaLMyZlbcp+nv4fjFg4exqDsQ+8FxG75gbMY/qB8oFM2gsQa6H61SilzwZA +Fv97fRheORKkU55+MkIQpiGRqRxOF3yEvJ+M0ejf5lG5Nkc/kLnHvALcWxxPDkjB +JYOcCj+esQMzEhonrPcibCTRAUH4WAP+JWgiH5paPHxsnnVI84HxZmduTILA7rpX +DhjvLpr3Etiga+kFpaHpaPi8TD8SHkXoUsCjvxInebnMMTzD9joiFgOgyY9mpFui +TdaBJQbpdqQACj7LzTWb4OE4y2BThihCQRxEV+ioratF4yUQvNs+ZUH7G6aXD+u5 +dHn5HrwdVw1Hr8Mvn4dGp+smWg9WY7ViYG4A++MnESLn/pmPNPW56MORcr3Ywx65 +LvKRRFHQV80MNNVIIb/bE/FmJUNS0nAiNs2fxBx1IK1jcmMGDw4nztJqDby1ORrp +0XZ60Vzk50lJLVU3aPAaOpg+VBeHVOmmJ1CJeyAvP/+/oYtKR5j/K3tJPsMpRmAY +QqszKbrAKbkTidOIijlBO8n9pu0f9GBj39ItVQGL +-----END CERTIFICATE----- + +# Issuer: CN=SSL.com TLS RSA Root CA 2022 O=SSL Corporation +# Subject: CN=SSL.com TLS RSA Root CA 2022 O=SSL Corporation +# Label: "SSL.com TLS RSA Root CA 2022" +# Serial: 148535279242832292258835760425842727825 +# MD5 Fingerprint: d8:4e:c6:59:30:d8:fe:a0:d6:7a:5a:2c:2c:69:78:da +# SHA1 Fingerprint: ec:2c:83:40:72:af:26:95:10:ff:0e:f2:03:ee:31:70:f6:78:9d:ca +# SHA256 Fingerprint: 8f:af:7d:2e:2c:b4:70:9b:b8:e0:b3:36:66:bf:75:a5:dd:45:b5:de:48:0f:8e:a8:d4:bf:e6:be:bc:17:f2:ed +-----BEGIN CERTIFICATE----- +MIIFiTCCA3GgAwIBAgIQb77arXO9CEDii02+1PdbkTANBgkqhkiG9w0BAQsFADBO +MQswCQYDVQQGEwJVUzEYMBYGA1UECgwPU1NMIENvcnBvcmF0aW9uMSUwIwYDVQQD +DBxTU0wuY29tIFRMUyBSU0EgUm9vdCBDQSAyMDIyMB4XDTIyMDgyNTE2MzQyMloX +DTQ2MDgxOTE2MzQyMVowTjELMAkGA1UEBhMCVVMxGDAWBgNVBAoMD1NTTCBDb3Jw +b3JhdGlvbjElMCMGA1UEAwwcU1NMLmNvbSBUTFMgUlNBIFJvb3QgQ0EgMjAyMjCC +AiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANCkCXJPQIgSYT41I57u9nTP +L3tYPc48DRAokC+X94xI2KDYJbFMsBFMF3NQ0CJKY7uB0ylu1bUJPiYYf7ISf5OY +t6/wNr/y7hienDtSxUcZXXTzZGbVXcdotL8bHAajvI9AI7YexoS9UcQbOcGV0ins +S657Lb85/bRi3pZ7QcacoOAGcvvwB5cJOYF0r/c0WRFXCsJbwST0MXMwgsadugL3 +PnxEX4MN8/HdIGkWCVDi1FW24IBydm5MR7d1VVm0U3TZlMZBrViKMWYPHqIbKUBO +L9975hYsLfy/7PO0+r4Y9ptJ1O4Fbtk085zx7AGL0SDGD6C1vBdOSHtRwvzpXGk3 +R2azaPgVKPC506QVzFpPulJwoxJF3ca6TvvC0PeoUidtbnm1jPx7jMEWTO6Af77w +dr5BUxIzrlo4QqvXDz5BjXYHMtWrifZOZ9mxQnUjbvPNQrL8VfVThxc7wDNY8VLS ++YCk8OjwO4s4zKTGkH8PnP2L0aPP2oOnaclQNtVcBdIKQXTbYxE3waWglksejBYS +d66UNHsef8JmAOSqg+qKkK3ONkRN0VHpvB/zagX9wHQfJRlAUW7qglFA35u5CCoG +AtUjHBPW6dvbxrB6y3snm/vg1UYk7RBLY0ulBY+6uB0rpvqR4pJSvezrZ5dtmi2f +gTIFZzL7SAg/2SW4BCUvAgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0j +BBgwFoAU+y437uOEeicuzRk1sTN8/9REQrkwHQYDVR0OBBYEFPsuN+7jhHonLs0Z +NbEzfP/UREK5MA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsFAAOCAgEAjYlt +hEUY8U+zoO9opMAdrDC8Z2awms22qyIZZtM7QbUQnRC6cm4pJCAcAZli05bg4vsM +QtfhWsSWTVTNj8pDU/0quOr4ZcoBwq1gaAafORpR2eCNJvkLTqVTJXojpBzOCBvf +R4iyrT7gJ4eLSYwfqUdYe5byiB0YrrPRpgqU+tvT5TgKa3kSM/tKWTcWQA673vWJ +DPFs0/dRa1419dvAJuoSc06pkZCmF8NsLzjUo3KUQyxi4U5cMj29TH0ZR6LDSeeW +P4+a0zvkEdiLA9z2tmBVGKaBUfPhqBVq6+AL8BQx1rmMRTqoENjwuSfr98t67wVy +lrXEj5ZzxOhWc5y8aVFjvO9nHEMaX3cZHxj4HCUp+UmZKbaSPaKDN7EgkaibMOlq +bLQjk2UEqxHzDh1TJElTHaE/nUiSEeJ9DU/1172iWD54nR4fK/4huxoTtrEoZP2w +AgDHbICivRZQIA9ygV/MlP+7mea6kMvq+cYMwq7FGc4zoWtcu358NFcXrfA/rs3q +r5nsLFR+jM4uElZI7xc7P0peYNLcdDa8pUNjyw9bowJWCZ4kLOGGgYz+qxcs+sji +Mho6/4UIyYOf8kpIEFR3N+2ivEC+5BB09+Rbu7nzifmPQdjH5FCQNYA+HLhNkNPU +98OwoX6EyneSMSy4kLGCenROmxMmtNVQZlR4rmA= +-----END CERTIFICATE----- + +# Issuer: CN=SSL.com TLS ECC Root CA 2022 O=SSL Corporation +# Subject: CN=SSL.com TLS ECC Root CA 2022 O=SSL Corporation +# Label: "SSL.com TLS ECC Root CA 2022" +# Serial: 26605119622390491762507526719404364228 +# MD5 Fingerprint: 99:d7:5c:f1:51:36:cc:e9:ce:d9:19:2e:77:71:56:c5 +# SHA1 Fingerprint: 9f:5f:d9:1a:54:6d:f5:0c:71:f0:ee:7a:bd:17:49:98:84:73:e2:39 +# SHA256 Fingerprint: c3:2f:fd:9f:46:f9:36:d1:6c:36:73:99:09:59:43:4b:9a:d6:0a:af:bb:9e:7c:f3:36:54:f1:44:cc:1b:a1:43 +-----BEGIN CERTIFICATE----- +MIICOjCCAcCgAwIBAgIQFAP1q/s3ixdAW+JDsqXRxDAKBggqhkjOPQQDAzBOMQsw +CQYDVQQGEwJVUzEYMBYGA1UECgwPU1NMIENvcnBvcmF0aW9uMSUwIwYDVQQDDBxT +U0wuY29tIFRMUyBFQ0MgUm9vdCBDQSAyMDIyMB4XDTIyMDgyNTE2MzM0OFoXDTQ2 +MDgxOTE2MzM0N1owTjELMAkGA1UEBhMCVVMxGDAWBgNVBAoMD1NTTCBDb3Jwb3Jh +dGlvbjElMCMGA1UEAwwcU1NMLmNvbSBUTFMgRUNDIFJvb3QgQ0EgMjAyMjB2MBAG +ByqGSM49AgEGBSuBBAAiA2IABEUpNXP6wrgjzhR9qLFNoFs27iosU8NgCTWyJGYm +acCzldZdkkAZDsalE3D07xJRKF3nzL35PIXBz5SQySvOkkJYWWf9lCcQZIxPBLFN +SeR7T5v15wj4A4j3p8OSSxlUgaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSME +GDAWgBSJjy+j6CugFFR781a4Jl9nOAuc0DAdBgNVHQ4EFgQUiY8vo+groBRUe/NW +uCZfZzgLnNAwDgYDVR0PAQH/BAQDAgGGMAoGCCqGSM49BAMDA2gAMGUCMFXjIlbp +15IkWE8elDIPDAI2wv2sdDJO4fscgIijzPvX6yv/N33w7deedWo1dlJF4AIxAMeN +b0Igj762TVntd00pxCAgRWSGOlDGxK0tk/UYfXLtqc/ErFc2KAhl3zx5Zn6g6g== +-----END CERTIFICATE----- + +# Issuer: CN=Atos TrustedRoot Root CA ECC TLS 2021 O=Atos +# Subject: CN=Atos TrustedRoot Root CA ECC TLS 2021 O=Atos +# Label: "Atos TrustedRoot Root CA ECC TLS 2021" +# Serial: 81873346711060652204712539181482831616 +# MD5 Fingerprint: 16:9f:ad:f1:70:ad:79:d6:ed:29:b4:d1:c5:79:70:a8 +# SHA1 Fingerprint: 9e:bc:75:10:42:b3:02:f3:81:f4:f7:30:62:d4:8f:c3:a7:51:b2:dd +# SHA256 Fingerprint: b2:fa:e5:3e:14:cc:d7:ab:92:12:06:47:01:ae:27:9c:1d:89:88:fa:cb:77:5f:a8:a0:08:91:4e:66:39:88:a8 +-----BEGIN CERTIFICATE----- +MIICFTCCAZugAwIBAgIQPZg7pmY9kGP3fiZXOATvADAKBggqhkjOPQQDAzBMMS4w +LAYDVQQDDCVBdG9zIFRydXN0ZWRSb290IFJvb3QgQ0EgRUNDIFRMUyAyMDIxMQ0w +CwYDVQQKDARBdG9zMQswCQYDVQQGEwJERTAeFw0yMTA0MjIwOTI2MjNaFw00MTA0 +MTcwOTI2MjJaMEwxLjAsBgNVBAMMJUF0b3MgVHJ1c3RlZFJvb3QgUm9vdCBDQSBF +Q0MgVExTIDIwMjExDTALBgNVBAoMBEF0b3MxCzAJBgNVBAYTAkRFMHYwEAYHKoZI +zj0CAQYFK4EEACIDYgAEloZYKDcKZ9Cg3iQZGeHkBQcfl+3oZIK59sRxUM6KDP/X +tXa7oWyTbIOiaG6l2b4siJVBzV3dscqDY4PMwL502eCdpO5KTlbgmClBk1IQ1SQ4 +AjJn8ZQSb+/Xxd4u/RmAo0IwQDAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBR2 +KCXWfeBmmnoJsmo7jjPXNtNPojAOBgNVHQ8BAf8EBAMCAYYwCgYIKoZIzj0EAwMD +aAAwZQIwW5kp85wxtolrbNa9d+F851F+uDrNozZffPc8dz7kUK2o59JZDCaOMDtu +CCrCp1rIAjEAmeMM56PDr9NJLkaCI2ZdyQAUEv049OGYa3cpetskz2VAv9LcjBHo +9H1/IISpQuQo +-----END CERTIFICATE----- + +# Issuer: CN=Atos TrustedRoot Root CA RSA TLS 2021 O=Atos +# Subject: CN=Atos TrustedRoot Root CA RSA TLS 2021 O=Atos +# Label: "Atos TrustedRoot Root CA RSA TLS 2021" +# Serial: 111436099570196163832749341232207667876 +# MD5 Fingerprint: d4:d3:46:b8:9a:c0:9c:76:5d:9e:3a:c3:b9:99:31:d2 +# SHA1 Fingerprint: 18:52:3b:0d:06:37:e4:d6:3a:df:23:e4:98:fb:5b:16:fb:86:74:48 +# SHA256 Fingerprint: 81:a9:08:8e:a5:9f:b3:64:c5:48:a6:f8:55:59:09:9b:6f:04:05:ef:bf:18:e5:32:4e:c9:f4:57:ba:00:11:2f +-----BEGIN CERTIFICATE----- +MIIFZDCCA0ygAwIBAgIQU9XP5hmTC/srBRLYwiqipDANBgkqhkiG9w0BAQwFADBM +MS4wLAYDVQQDDCVBdG9zIFRydXN0ZWRSb290IFJvb3QgQ0EgUlNBIFRMUyAyMDIx +MQ0wCwYDVQQKDARBdG9zMQswCQYDVQQGEwJERTAeFw0yMTA0MjIwOTIxMTBaFw00 +MTA0MTcwOTIxMDlaMEwxLjAsBgNVBAMMJUF0b3MgVHJ1c3RlZFJvb3QgUm9vdCBD +QSBSU0EgVExTIDIwMjExDTALBgNVBAoMBEF0b3MxCzAJBgNVBAYTAkRFMIICIjAN +BgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAtoAOxHm9BYx9sKOdTSJNy/BBl01Z +4NH+VoyX8te9j2y3I49f1cTYQcvyAh5x5en2XssIKl4w8i1mx4QbZFc4nXUtVsYv +Ye+W/CBGvevUez8/fEc4BKkbqlLfEzfTFRVOvV98r61jx3ncCHvVoOX3W3WsgFWZ +kmGbzSoXfduP9LVq6hdKZChmFSlsAvFr1bqjM9xaZ6cF4r9lthawEO3NUDPJcFDs +GY6wx/J0W2tExn2WuZgIWWbeKQGb9Cpt0xU6kGpn8bRrZtkh68rZYnxGEFzedUln +nkL5/nWpo63/dgpnQOPF943HhZpZnmKaau1Fh5hnstVKPNe0OwANwI8f4UDErmwh +3El+fsqyjW22v5MvoVw+j8rtgI5Y4dtXz4U2OLJxpAmMkokIiEjxQGMYsluMWuPD +0xeqqxmjLBvk1cbiZnrXghmmOxYsL3GHX0WelXOTwkKBIROW1527k2gV+p2kHYzy +geBYBr3JtuP2iV2J+axEoctr+hbxx1A9JNr3w+SH1VbxT5Aw+kUJWdo0zuATHAR8 +ANSbhqRAvNncTFd+rrcztl524WWLZt+NyteYr842mIycg5kDcPOvdO3GDjbnvezB +c6eUWsuSZIKmAMFwoW4sKeFYV+xafJlrJaSQOoD0IJ2azsct+bJLKZWD6TWNp0lI +pw9MGZHQ9b8Q4HECAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU +dEmZ0f+0emhFdcN+tNzMzjkz2ggwDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEB +DAUAA4ICAQAjQ1MkYlxt/T7Cz1UAbMVWiLkO3TriJQ2VSpfKgInuKs1l+NsW4AmS +4BjHeJi78+xCUvuppILXTdiK/ORO/auQxDh1MoSf/7OwKwIzNsAQkG8dnK/haZPs +o0UvFJ/1TCplQ3IM98P4lYsU84UgYt1UU90s3BiVaU+DR3BAM1h3Egyi61IxHkzJ +qM7F78PRreBrAwA0JrRUITWXAdxfG/F851X6LWh3e9NpzNMOa7pNdkTWwhWaJuyw +xfW70Xp0wmzNxbVe9kzmWy2B27O3Opee7c9GslA9hGCZcbUztVdF5kJHdWoOsAgM +rr3e97sPWD2PAzHoPYJQyi9eDF20l74gNAf0xBLh7tew2VktafcxBPTy+av5EzH4 +AXcOPUIjJsyacmdRIXrMPIWo6iFqO9taPKU0nprALN+AnCng33eU0aKAQv9qTFsR +0PXNor6uzFFcw9VUewyu1rkGd4Di7wcaaMxZUa1+XGdrudviB0JbuAEFWDlN5LuY +o7Ey7Nmj1m+UI/87tyll5gfp77YZ6ufCOB0yiJA8EytuzO+rdwY0d4RPcuSBhPm5 +dDTedk+SKlOxJTnbPP/lPqYO5Wue/9vsL3SD3460s6neFE3/MaNFcyT6lSnMEpcE +oji2jbDwN/zIIX8/syQbPYtuzE2wFg2WHYMfRsCbvUOZ58SWLs5fyQ== +-----END CERTIFICATE----- + +# Issuer: CN=TrustAsia Global Root CA G3 O=TrustAsia Technologies, Inc. +# Subject: CN=TrustAsia Global Root CA G3 O=TrustAsia Technologies, Inc. +# Label: "TrustAsia Global Root CA G3" +# Serial: 576386314500428537169965010905813481816650257167 +# MD5 Fingerprint: 30:42:1b:b7:bb:81:75:35:e4:16:4f:53:d2:94:de:04 +# SHA1 Fingerprint: 63:cf:b6:c1:27:2b:56:e4:88:8e:1c:23:9a:b6:2e:81:47:24:c3:c7 +# SHA256 Fingerprint: e0:d3:22:6a:eb:11:63:c2:e4:8f:f9:be:3b:50:b4:c6:43:1b:e7:bb:1e:ac:c5:c3:6b:5d:5e:c5:09:03:9a:08 +-----BEGIN CERTIFICATE----- +MIIFpTCCA42gAwIBAgIUZPYOZXdhaqs7tOqFhLuxibhxkw8wDQYJKoZIhvcNAQEM +BQAwWjELMAkGA1UEBhMCQ04xJTAjBgNVBAoMHFRydXN0QXNpYSBUZWNobm9sb2dp +ZXMsIEluYy4xJDAiBgNVBAMMG1RydXN0QXNpYSBHbG9iYWwgUm9vdCBDQSBHMzAe +Fw0yMTA1MjAwMjEwMTlaFw00NjA1MTkwMjEwMTlaMFoxCzAJBgNVBAYTAkNOMSUw +IwYDVQQKDBxUcnVzdEFzaWEgVGVjaG5vbG9naWVzLCBJbmMuMSQwIgYDVQQDDBtU +cnVzdEFzaWEgR2xvYmFsIFJvb3QgQ0EgRzMwggIiMA0GCSqGSIb3DQEBAQUAA4IC +DwAwggIKAoICAQDAMYJhkuSUGwoqZdC+BqmHO1ES6nBBruL7dOoKjbmzTNyPtxNS +T1QY4SxzlZHFZjtqz6xjbYdT8PfxObegQ2OwxANdV6nnRM7EoYNl9lA+sX4WuDqK +AtCWHwDNBSHvBm3dIZwZQ0WhxeiAysKtQGIXBsaqvPPW5vxQfmZCHzyLpnl5hkA1 +nyDvP+uLRx+PjsXUjrYsyUQE49RDdT/VP68czH5GX6zfZBCK70bwkPAPLfSIC7Ep +qq+FqklYqL9joDiR5rPmd2jE+SoZhLsO4fWvieylL1AgdB4SQXMeJNnKziyhWTXA +yB1GJ2Faj/lN03J5Zh6fFZAhLf3ti1ZwA0pJPn9pMRJpxx5cynoTi+jm9WAPzJMs +hH/x/Gr8m0ed262IPfN2dTPXS6TIi/n1Q1hPy8gDVI+lhXgEGvNz8teHHUGf59gX +zhqcD0r83ERoVGjiQTz+LISGNzzNPy+i2+f3VANfWdP3kXjHi3dqFuVJhZBFcnAv +kV34PmVACxmZySYgWmjBNb9Pp1Hx2BErW+Canig7CjoKH8GB5S7wprlppYiU5msT +f9FkPz2ccEblooV7WIQn3MSAPmeamseaMQ4w7OYXQJXZRe0Blqq/DPNL0WP3E1jA +uPP6Z92bfW1K/zJMtSU7/xxnD4UiWQWRkUF3gdCFTIcQcf+eQxuulXUtgQIDAQAB +o2MwYTAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFEDk5PIj7zjKsK5Xf/Ih +MBY027ySMB0GA1UdDgQWBBRA5OTyI+84yrCuV3/yITAWNNu8kjAOBgNVHQ8BAf8E +BAMCAQYwDQYJKoZIhvcNAQEMBQADggIBACY7UeFNOPMyGLS0XuFlXsSUT9SnYaP4 +wM8zAQLpw6o1D/GUE3d3NZ4tVlFEbuHGLige/9rsR82XRBf34EzC4Xx8MnpmyFq2 +XFNFV1pF1AWZLy4jVe5jaN/TG3inEpQGAHUNcoTpLrxaatXeL1nHo+zSh2bbt1S1 +JKv0Q3jbSwTEb93mPmY+KfJLaHEih6D4sTNjduMNhXJEIlU/HHzp/LgV6FL6qj6j +ITk1dImmasI5+njPtqzn59ZW/yOSLlALqbUHM/Q4X6RJpstlcHboCoWASzY9M/eV +VHUl2qzEc4Jl6VL1XP04lQJqaTDFHApXB64ipCz5xUG3uOyfT0gA+QEEVcys+TIx +xHWVBqB/0Y0n3bOppHKH/lmLmnp0Ft0WpWIp6zqW3IunaFnT63eROfjXy9mPX1on +AX1daBli2MjN9LdyR75bl87yraKZk62Uy5P2EgmVtqvXO9A/EcswFi55gORngS1d +7XB4tmBZrOFdRWOPyN9yaFvqHbgB8X7754qz41SgOAngPN5C8sLtLpvzHzW2Ntjj +gKGLzZlkD8Kqq7HK9W+eQ42EVJmzbsASZthwEPEGNTNDqJwuuhQxzhB/HIbjj9LV ++Hfsm6vxL2PZQl/gZ4FkkfGXL/xuJvYz+NO1+MRiqzFRJQJ6+N1rZdVtTTDIZbpo +FGWsJwt0ivKH +-----END CERTIFICATE----- + +# Issuer: CN=TrustAsia Global Root CA G4 O=TrustAsia Technologies, Inc. +# Subject: CN=TrustAsia Global Root CA G4 O=TrustAsia Technologies, Inc. +# Label: "TrustAsia Global Root CA G4" +# Serial: 451799571007117016466790293371524403291602933463 +# MD5 Fingerprint: 54:dd:b2:d7:5f:d8:3e:ed:7c:e0:0b:2e:cc:ed:eb:eb +# SHA1 Fingerprint: 57:73:a5:61:5d:80:b2:e6:ac:38:82:fc:68:07:31:ac:9f:b5:92:5a +# SHA256 Fingerprint: be:4b:56:cb:50:56:c0:13:6a:52:6d:f4:44:50:8d:aa:36:a0:b5:4f:42:e4:ac:38:f7:2a:f4:70:e4:79:65:4c +-----BEGIN CERTIFICATE----- +MIICVTCCAdygAwIBAgIUTyNkuI6XY57GU4HBdk7LKnQV1tcwCgYIKoZIzj0EAwMw +WjELMAkGA1UEBhMCQ04xJTAjBgNVBAoMHFRydXN0QXNpYSBUZWNobm9sb2dpZXMs +IEluYy4xJDAiBgNVBAMMG1RydXN0QXNpYSBHbG9iYWwgUm9vdCBDQSBHNDAeFw0y +MTA1MjAwMjEwMjJaFw00NjA1MTkwMjEwMjJaMFoxCzAJBgNVBAYTAkNOMSUwIwYD +VQQKDBxUcnVzdEFzaWEgVGVjaG5vbG9naWVzLCBJbmMuMSQwIgYDVQQDDBtUcnVz +dEFzaWEgR2xvYmFsIFJvb3QgQ0EgRzQwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAATx +s8045CVD5d4ZCbuBeaIVXxVjAd7Cq92zphtnS4CDr5nLrBfbK5bKfFJV4hrhPVbw +LxYI+hW8m7tH5j/uqOFMjPXTNvk4XatwmkcN4oFBButJ+bAp3TPsUKV/eSm4IJij +YzBhMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUpbtKl86zK3+kMd6Xg1mD +pm9xy94wHQYDVR0OBBYEFKW7SpfOsyt/pDHel4NZg6ZvccveMA4GA1UdDwEB/wQE +AwIBBjAKBggqhkjOPQQDAwNnADBkAjBe8usGzEkxn0AAbbd+NvBNEU/zy4k6LHiR +UKNbwMp1JvK/kF0LgoxgKJ/GcJpo5PECMFxYDlZ2z1jD1xCMuo6u47xkdUfFVZDj +/bpV6wfEU6s3qe4hsiFbYI89MvHVI5TWWA== +-----END CERTIFICATE----- + +# Issuer: CN=CommScope Public Trust ECC Root-01 O=CommScope +# Subject: CN=CommScope Public Trust ECC Root-01 O=CommScope +# Label: "CommScope Public Trust ECC Root-01" +# Serial: 385011430473757362783587124273108818652468453534 +# MD5 Fingerprint: 3a:40:a7:fc:03:8c:9c:38:79:2f:3a:a2:6c:b6:0a:16 +# SHA1 Fingerprint: 07:86:c0:d8:dd:8e:c0:80:98:06:98:d0:58:7a:ef:de:a6:cc:a2:5d +# SHA256 Fingerprint: 11:43:7c:da:7b:b4:5e:41:36:5f:45:b3:9a:38:98:6b:0d:e0:0d:ef:34:8e:0c:7b:b0:87:36:33:80:0b:c3:8b +-----BEGIN CERTIFICATE----- +MIICHTCCAaOgAwIBAgIUQ3CCd89NXTTxyq4yLzf39H91oJ4wCgYIKoZIzj0EAwMw +TjELMAkGA1UEBhMCVVMxEjAQBgNVBAoMCUNvbW1TY29wZTErMCkGA1UEAwwiQ29t +bVNjb3BlIFB1YmxpYyBUcnVzdCBFQ0MgUm9vdC0wMTAeFw0yMTA0MjgxNzM1NDNa +Fw00NjA0MjgxNzM1NDJaME4xCzAJBgNVBAYTAlVTMRIwEAYDVQQKDAlDb21tU2Nv +cGUxKzApBgNVBAMMIkNvbW1TY29wZSBQdWJsaWMgVHJ1c3QgRUNDIFJvb3QtMDEw +djAQBgcqhkjOPQIBBgUrgQQAIgNiAARLNumuV16ocNfQj3Rid8NeeqrltqLxeP0C +flfdkXmcbLlSiFS8LwS+uM32ENEp7LXQoMPwiXAZu1FlxUOcw5tjnSCDPgYLpkJE +hRGnSjot6dZoL0hOUysHP029uax3OVejQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYD +VR0PAQH/BAQDAgEGMB0GA1UdDgQWBBSOB2LAUN3GGQYARnQE9/OufXVNMDAKBggq +hkjOPQQDAwNoADBlAjEAnDPfQeMjqEI2Jpc1XHvr20v4qotzVRVcrHgpD7oh2MSg +2NED3W3ROT3Ek2DS43KyAjB8xX6I01D1HiXo+k515liWpDVfG2XqYZpwI7UNo5uS +Um9poIyNStDuiw7LR47QjRE= +-----END CERTIFICATE----- + +# Issuer: CN=CommScope Public Trust ECC Root-02 O=CommScope +# Subject: CN=CommScope Public Trust ECC Root-02 O=CommScope +# Label: "CommScope Public Trust ECC Root-02" +# Serial: 234015080301808452132356021271193974922492992893 +# MD5 Fingerprint: 59:b0:44:d5:65:4d:b8:5c:55:19:92:02:b6:d1:94:b2 +# SHA1 Fingerprint: 3c:3f:ef:57:0f:fe:65:93:86:9e:a0:fe:b0:f6:ed:8e:d1:13:c7:e5 +# SHA256 Fingerprint: 2f:fb:7f:81:3b:bb:b3:c8:9a:b4:e8:16:2d:0f:16:d7:15:09:a8:30:cc:9d:73:c2:62:e5:14:08:75:d1:ad:4a +-----BEGIN CERTIFICATE----- +MIICHDCCAaOgAwIBAgIUKP2ZYEFHpgE6yhR7H+/5aAiDXX0wCgYIKoZIzj0EAwMw +TjELMAkGA1UEBhMCVVMxEjAQBgNVBAoMCUNvbW1TY29wZTErMCkGA1UEAwwiQ29t +bVNjb3BlIFB1YmxpYyBUcnVzdCBFQ0MgUm9vdC0wMjAeFw0yMTA0MjgxNzQ0NTRa +Fw00NjA0MjgxNzQ0NTNaME4xCzAJBgNVBAYTAlVTMRIwEAYDVQQKDAlDb21tU2Nv +cGUxKzApBgNVBAMMIkNvbW1TY29wZSBQdWJsaWMgVHJ1c3QgRUNDIFJvb3QtMDIw +djAQBgcqhkjOPQIBBgUrgQQAIgNiAAR4MIHoYx7l63FRD/cHB8o5mXxO1Q/MMDAL +j2aTPs+9xYa9+bG3tD60B8jzljHz7aRP+KNOjSkVWLjVb3/ubCK1sK9IRQq9qEmU +v4RDsNuESgMjGWdqb8FuvAY5N9GIIvejQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYD +VR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTmGHX/72DehKT1RsfeSlXjMjZ59TAKBggq +hkjOPQQDAwNnADBkAjAmc0l6tqvmSfR9Uj/UQQSugEODZXW5hYA4O9Zv5JOGq4/n +ich/m35rChJVYaoR4HkCMHfoMXGsPHED1oQmHhS48zs73u1Z/GtMMH9ZzkXpc2AV +mkzw5l4lIhVtwodZ0LKOag== +-----END CERTIFICATE----- + +# Issuer: CN=CommScope Public Trust RSA Root-01 O=CommScope +# Subject: CN=CommScope Public Trust RSA Root-01 O=CommScope +# Label: "CommScope Public Trust RSA Root-01" +# Serial: 354030733275608256394402989253558293562031411421 +# MD5 Fingerprint: 0e:b4:15:bc:87:63:5d:5d:02:73:d4:26:38:68:73:d8 +# SHA1 Fingerprint: 6d:0a:5f:f7:b4:23:06:b4:85:b3:b7:97:64:fc:ac:75:f5:33:f2:93 +# SHA256 Fingerprint: 02:bd:f9:6e:2a:45:dd:9b:f1:8f:c7:e1:db:df:21:a0:37:9b:a3:c9:c2:61:03:44:cf:d8:d6:06:fe:c1:ed:81 +-----BEGIN CERTIFICATE----- +MIIFbDCCA1SgAwIBAgIUPgNJgXUWdDGOTKvVxZAplsU5EN0wDQYJKoZIhvcNAQEL +BQAwTjELMAkGA1UEBhMCVVMxEjAQBgNVBAoMCUNvbW1TY29wZTErMCkGA1UEAwwi +Q29tbVNjb3BlIFB1YmxpYyBUcnVzdCBSU0EgUm9vdC0wMTAeFw0yMTA0MjgxNjQ1 +NTRaFw00NjA0MjgxNjQ1NTNaME4xCzAJBgNVBAYTAlVTMRIwEAYDVQQKDAlDb21t +U2NvcGUxKzApBgNVBAMMIkNvbW1TY29wZSBQdWJsaWMgVHJ1c3QgUlNBIFJvb3Qt +MDEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCwSGWjDR1C45FtnYSk +YZYSwu3D2iM0GXb26v1VWvZVAVMP8syMl0+5UMuzAURWlv2bKOx7dAvnQmtVzslh +suitQDy6uUEKBU8bJoWPQ7VAtYXR1HHcg0Hz9kXHgKKEUJdGzqAMxGBWBB0HW0al +DrJLpA6lfO741GIDuZNqihS4cPgugkY4Iw50x2tBt9Apo52AsH53k2NC+zSDO3Oj +WiE260f6GBfZumbCk6SP/F2krfxQapWsvCQz0b2If4b19bJzKo98rwjyGpg/qYFl +P8GMicWWMJoKz/TUyDTtnS+8jTiGU+6Xn6myY5QXjQ/cZip8UlF1y5mO6D1cv547 +KI2DAg+pn3LiLCuz3GaXAEDQpFSOm117RTYm1nJD68/A6g3czhLmfTifBSeolz7p +UcZsBSjBAg/pGG3svZwG1KdJ9FQFa2ww8esD1eo9anbCyxooSU1/ZOD6K9pzg4H/ +kQO9lLvkuI6cMmPNn7togbGEW682v3fuHX/3SZtS7NJ3Wn2RnU3COS3kuoL4b/JO +Hg9O5j9ZpSPcPYeoKFgo0fEbNttPxP/hjFtyjMcmAyejOQoBqsCyMWCDIqFPEgkB +Ea801M/XrmLTBQe0MXXgDW1XT2mH+VepuhX2yFJtocucH+X8eKg1mp9BFM6ltM6U +CBwJrVbl2rZJmkrqYxhTnCwuwwIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4G +A1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUN12mmnQywsL5x6YVEFm45P3luG0wDQYJ +KoZIhvcNAQELBQADggIBAK+nz97/4L1CjU3lIpbfaOp9TSp90K09FlxD533Ahuh6 +NWPxzIHIxgvoLlI1pKZJkGNRrDSsBTtXAOnTYtPZKdVUvhwQkZyybf5Z/Xn36lbQ +nmhUQo8mUuJM3y+Xpi/SB5io82BdS5pYV4jvguX6r2yBS5KPQJqTRlnLX3gWsWc+ +QgvfKNmwrZggvkN80V4aCRckjXtdlemrwWCrWxhkgPut4AZ9HcpZuPN4KWfGVh2v +trV0KnahP/t1MJ+UXjulYPPLXAziDslg+MkfFoom3ecnf+slpoq9uC02EJqxWE2a +aE9gVOX2RhOOiKy8IUISrcZKiX2bwdgt6ZYD9KJ0DLwAHb/WNyVntHKLr4W96ioD +j8z7PEQkguIBpQtZtjSNMgsSDesnwv1B10A8ckYpwIzqug/xBpMu95yo9GA+o/E4 +Xo4TwbM6l4c/ksp4qRyv0LAbJh6+cOx69TOY6lz/KwsETkPdY34Op054A5U+1C0w +lREQKC6/oAI+/15Z0wUOlV9TRe9rh9VIzRamloPh37MG88EU26fsHItdkJANclHn +YfkUyq+Dj7+vsQpZXdxc1+SWrVtgHdqul7I52Qb1dgAT+GhMIbA1xNxVssnBQVoc +icCMb3SgazNNtQEo/a2tiRc7ppqEvOuM6sRxJKi6KfkIsidWNTJf6jn7MZrVGczw +-----END CERTIFICATE----- + +# Issuer: CN=CommScope Public Trust RSA Root-02 O=CommScope +# Subject: CN=CommScope Public Trust RSA Root-02 O=CommScope +# Label: "CommScope Public Trust RSA Root-02" +# Serial: 480062499834624527752716769107743131258796508494 +# MD5 Fingerprint: e1:29:f9:62:7b:76:e2:96:6d:f3:d4:d7:0f:ae:1f:aa +# SHA1 Fingerprint: ea:b0:e2:52:1b:89:93:4c:11:68:f2:d8:9a:ac:22:4c:a3:8a:57:ae +# SHA256 Fingerprint: ff:e9:43:d7:93:42:4b:4f:7c:44:0c:1c:3d:64:8d:53:63:f3:4b:82:dc:87:aa:7a:9f:11:8f:c5:de:e1:01:f1 +-----BEGIN CERTIFICATE----- +MIIFbDCCA1SgAwIBAgIUVBa/O345lXGN0aoApYYNK496BU4wDQYJKoZIhvcNAQEL +BQAwTjELMAkGA1UEBhMCVVMxEjAQBgNVBAoMCUNvbW1TY29wZTErMCkGA1UEAwwi +Q29tbVNjb3BlIFB1YmxpYyBUcnVzdCBSU0EgUm9vdC0wMjAeFw0yMTA0MjgxNzE2 +NDNaFw00NjA0MjgxNzE2NDJaME4xCzAJBgNVBAYTAlVTMRIwEAYDVQQKDAlDb21t +U2NvcGUxKzApBgNVBAMMIkNvbW1TY29wZSBQdWJsaWMgVHJ1c3QgUlNBIFJvb3Qt +MDIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDh+g77aAASyE3VrCLE +NQE7xVTlWXZjpX/rwcRqmL0yjReA61260WI9JSMZNRTpf4mnG2I81lDnNJUDMrG0 +kyI9p+Kx7eZ7Ti6Hmw0zdQreqjXnfuU2mKKuJZ6VszKWpCtYHu8//mI0SFHRtI1C +rWDaSWqVcN3SAOLMV2MCe5bdSZdbkk6V0/nLKR8YSvgBKtJjCW4k6YnS5cciTNxz +hkcAqg2Ijq6FfUrpuzNPDlJwnZXjfG2WWy09X6GDRl224yW4fKcZgBzqZUPckXk2 +LHR88mcGyYnJ27/aaL8j7dxrrSiDeS/sOKUNNwFnJ5rpM9kzXzehxfCrPfp4sOcs +n/Y+n2Dg70jpkEUeBVF4GiwSLFworA2iI540jwXmojPOEXcT1A6kHkIfhs1w/tku +FT0du7jyU1fbzMZ0KZwYszZ1OC4PVKH4kh+Jlk+71O6d6Ts2QrUKOyrUZHk2EOH5 +kQMreyBUzQ0ZGshBMjTRsJnhkB4BQDa1t/qp5Xd1pCKBXbCL5CcSD1SIxtuFdOa3 +wNemKfrb3vOTlycEVS8KbzfFPROvCgCpLIscgSjX74Yxqa7ybrjKaixUR9gqiC6v +wQcQeKwRoi9C8DfF8rhW3Q5iLc4tVn5V8qdE9isy9COoR+jUKgF4z2rDN6ieZdIs +5fq6M8EGRPbmz6UNp2YINIos8wIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4G +A1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUR9DnsSL/nSz12Vdgs7GxcJXvYXowDQYJ +KoZIhvcNAQELBQADggIBAIZpsU0v6Z9PIpNojuQhmaPORVMbc0RTAIFhzTHjCLqB +KCh6krm2qMhDnscTJk3C2OVVnJJdUNjCK9v+5qiXz1I6JMNlZFxHMaNlNRPDk7n3 ++VGXu6TwYofF1gbTl4MgqX67tiHCpQ2EAOHyJxCDut0DgdXdaMNmEMjRdrSzbyme +APnCKfWxkxlSaRosTKCL4BWaMS/TiJVZbuXEs1DIFAhKm4sTg7GkcrI7djNB3Nyq +pgdvHSQSn8h2vS/ZjvQs7rfSOBAkNlEv41xdgSGn2rtO/+YHqP65DSdsu3BaVXoT +6fEqSWnHX4dXTEN5bTpl6TBcQe7rd6VzEojov32u5cSoHw2OHG1QAk8mGEPej1WF +sQs3BWDJVTkSBKEqz3EWnzZRSb9wO55nnPt7eck5HHisd5FUmrh1CoFSl+NmYWvt +PjgelmFV4ZFUjO2MJB+ByRCac5krFk5yAD9UG/iNuovnFNa2RU9g7Jauwy8CTl2d +lklyALKrdVwPaFsdZcJfMw8eD/A7hvWwTruc9+olBdytoptLFwG+Qt81IR2tq670 +v64fG9PiO/yzcnMcmyiQiRM9HcEARwmWmjgb3bHPDcK0RPOWlc4yOo80nOAXx17O +rg3bhzjlP1v9mxnhMUF6cKojawHhRUzNlM47ni3niAIi9G7oyOzWPPO5std3eqx7 +-----END CERTIFICATE----- + +# Issuer: CN=Telekom Security TLS ECC Root 2020 O=Deutsche Telekom Security GmbH +# Subject: CN=Telekom Security TLS ECC Root 2020 O=Deutsche Telekom Security GmbH +# Label: "Telekom Security TLS ECC Root 2020" +# Serial: 72082518505882327255703894282316633856 +# MD5 Fingerprint: c1:ab:fe:6a:10:2c:03:8d:bc:1c:22:32:c0:85:a7:fd +# SHA1 Fingerprint: c0:f8:96:c5:a9:3b:01:06:21:07:da:18:42:48:bc:e9:9d:88:d5:ec +# SHA256 Fingerprint: 57:8a:f4:de:d0:85:3f:4e:59:98:db:4a:ea:f9:cb:ea:8d:94:5f:60:b6:20:a3:8d:1a:3c:13:b2:bc:7b:a8:e1 +-----BEGIN CERTIFICATE----- +MIICQjCCAcmgAwIBAgIQNjqWjMlcsljN0AFdxeVXADAKBggqhkjOPQQDAzBjMQsw +CQYDVQQGEwJERTEnMCUGA1UECgweRGV1dHNjaGUgVGVsZWtvbSBTZWN1cml0eSBH +bWJIMSswKQYDVQQDDCJUZWxla29tIFNlY3VyaXR5IFRMUyBFQ0MgUm9vdCAyMDIw +MB4XDTIwMDgyNTA3NDgyMFoXDTQ1MDgyNTIzNTk1OVowYzELMAkGA1UEBhMCREUx +JzAlBgNVBAoMHkRldXRzY2hlIFRlbGVrb20gU2VjdXJpdHkgR21iSDErMCkGA1UE +AwwiVGVsZWtvbSBTZWN1cml0eSBUTFMgRUNDIFJvb3QgMjAyMDB2MBAGByqGSM49 +AgEGBSuBBAAiA2IABM6//leov9Wq9xCazbzREaK9Z0LMkOsVGJDZos0MKiXrPk/O +tdKPD/M12kOLAoC+b1EkHQ9rK8qfwm9QMuU3ILYg/4gND21Ju9sGpIeQkpT0CdDP +f8iAC8GXs7s1J8nCG6NCMEAwHQYDVR0OBBYEFONyzG6VmUex5rNhTNHLq+O6zd6f +MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMAoGCCqGSM49BAMDA2cA +MGQCMHVSi7ekEE+uShCLsoRbQuHmKjYC2qBuGT8lv9pZMo7k+5Dck2TOrbRBR2Di +z6fLHgIwN0GMZt9Ba9aDAEH9L1r3ULRn0SyocddDypwnJJGDSA3PzfdUga/sf+Rn +27iQ7t0l +-----END CERTIFICATE----- + +# Issuer: CN=Telekom Security TLS RSA Root 2023 O=Deutsche Telekom Security GmbH +# Subject: CN=Telekom Security TLS RSA Root 2023 O=Deutsche Telekom Security GmbH +# Label: "Telekom Security TLS RSA Root 2023" +# Serial: 44676229530606711399881795178081572759 +# MD5 Fingerprint: bf:5b:eb:54:40:cd:48:71:c4:20:8d:7d:de:0a:42:f2 +# SHA1 Fingerprint: 54:d3:ac:b3:bd:57:56:f6:85:9d:ce:e5:c3:21:e2:d4:ad:83:d0:93 +# SHA256 Fingerprint: ef:c6:5c:ad:bb:59:ad:b6:ef:e8:4d:a2:23:11:b3:56:24:b7:1b:3b:1e:a0:da:8b:66:55:17:4e:c8:97:86:46 +-----BEGIN CERTIFICATE----- +MIIFszCCA5ugAwIBAgIQIZxULej27HF3+k7ow3BXlzANBgkqhkiG9w0BAQwFADBj +MQswCQYDVQQGEwJERTEnMCUGA1UECgweRGV1dHNjaGUgVGVsZWtvbSBTZWN1cml0 +eSBHbWJIMSswKQYDVQQDDCJUZWxla29tIFNlY3VyaXR5IFRMUyBSU0EgUm9vdCAy +MDIzMB4XDTIzMDMyODEyMTY0NVoXDTQ4MDMyNzIzNTk1OVowYzELMAkGA1UEBhMC +REUxJzAlBgNVBAoMHkRldXRzY2hlIFRlbGVrb20gU2VjdXJpdHkgR21iSDErMCkG +A1UEAwwiVGVsZWtvbSBTZWN1cml0eSBUTFMgUlNBIFJvb3QgMjAyMzCCAiIwDQYJ +KoZIhvcNAQEBBQADggIPADCCAgoCggIBAO01oYGA88tKaVvC+1GDrib94W7zgRJ9 +cUD/h3VCKSHtgVIs3xLBGYSJwb3FKNXVS2xE1kzbB5ZKVXrKNoIENqil/Cf2SfHV +cp6R+SPWcHu79ZvB7JPPGeplfohwoHP89v+1VmLhc2o0mD6CuKyVU/QBoCcHcqMA +U6DksquDOFczJZSfvkgdmOGjup5czQRxUX11eKvzWarE4GC+j4NSuHUaQTXtvPM6 +Y+mpFEXX5lLRbtLevOP1Czvm4MS9Q2QTps70mDdsipWol8hHD/BeEIvnHRz+sTug +BTNoBUGCwQMrAcjnj02r6LX2zWtEtefdi+zqJbQAIldNsLGyMcEWzv/9FIS3R/qy +8XDe24tsNlikfLMR0cN3f1+2JeANxdKz+bi4d9s3cXFH42AYTyS2dTd4uaNir73J +co4vzLuu2+QVUhkHM/tqty1LkCiCc/4YizWN26cEar7qwU02OxY2kTLvtkCJkUPg +8qKrBC7m8kwOFjQgrIfBLX7JZkcXFBGk8/ehJImr2BrIoVyxo/eMbcgByU/J7MT8 +rFEz0ciD0cmfHdRHNCk+y7AO+oMLKFjlKdw/fKifybYKu6boRhYPluV75Gp6SG12 +mAWl3G0eQh5C2hrgUve1g8Aae3g1LDj1H/1Joy7SWWO/gLCMk3PLNaaZlSJhZQNg ++y+TS/qanIA7AgMBAAGjYzBhMA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUtqeX +gj10hZv3PJ+TmpV5dVKMbUcwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBS2 +p5eCPXSFm/c8n5OalXl1UoxtRzANBgkqhkiG9w0BAQwFAAOCAgEAqMxhpr51nhVQ +pGv7qHBFfLp+sVr8WyP6Cnf4mHGCDG3gXkaqk/QeoMPhk9tLrbKmXauw1GLLXrtm +9S3ul0A8Yute1hTWjOKWi0FpkzXmuZlrYrShF2Y0pmtjxrlO8iLpWA1WQdH6DErw +M807u20hOq6OcrXDSvvpfeWxm4bu4uB9tPcy/SKE8YXJN3nptT+/XOR0so8RYgDd +GGah2XsjX/GO1WfoVNpbOms2b/mBsTNHM3dA+VKq3dSDz4V4mZqTuXNnQkYRIer+ +CqkbGmVps4+uFrb2S1ayLfmlyOw7YqPta9BO1UAJpB+Y1zqlklkg5LB9zVtzaL1t +xKITDmcZuI1CfmwMmm6gJC3VRRvcxAIU/oVbZZfKTpBQCHpCNfnqwmbU+AGuHrS+ +w6jv/naaoqYfRvaE7fzbzsQCzndILIyy7MMAo+wsVRjBfhnu4S/yrYObnqsZ38aK +L4x35bcF7DvB7L6Gs4a8wPfc5+pbrrLMtTWGS9DiP7bY+A4A7l3j941Y/8+LN+lj +X273CXE2whJdV/LItM3z7gLfEdxquVeEHVlNjM7IDiPCtyaaEBRx/pOyiriA8A4Q +ntOoUAw3gi/q4Iqd4Sw5/7W0cwDk90imc6y/st53BIe0o82bNSQ3+pCTE4FCxpgm +dTdmQRCsu/WU48IxK63nI1bMNSWSs1A= +-----END CERTIFICATE----- + +# Issuer: CN=FIRMAPROFESIONAL CA ROOT-A WEB O=Firmaprofesional SA +# Subject: CN=FIRMAPROFESIONAL CA ROOT-A WEB O=Firmaprofesional SA +# Label: "FIRMAPROFESIONAL CA ROOT-A WEB" +# Serial: 65916896770016886708751106294915943533 +# MD5 Fingerprint: 82:b2:ad:45:00:82:b0:66:63:f8:5f:c3:67:4e:ce:a3 +# SHA1 Fingerprint: a8:31:11:74:a6:14:15:0d:ca:77:dd:0e:e4:0c:5d:58:fc:a0:72:a5 +# SHA256 Fingerprint: be:f2:56:da:f2:6e:9c:69:bd:ec:16:02:35:97:98:f3:ca:f7:18:21:a0:3e:01:82:57:c5:3c:65:61:7f:3d:4a +-----BEGIN CERTIFICATE----- +MIICejCCAgCgAwIBAgIQMZch7a+JQn81QYehZ1ZMbTAKBggqhkjOPQQDAzBuMQsw +CQYDVQQGEwJFUzEcMBoGA1UECgwTRmlybWFwcm9mZXNpb25hbCBTQTEYMBYGA1UE +YQwPVkFURVMtQTYyNjM0MDY4MScwJQYDVQQDDB5GSVJNQVBST0ZFU0lPTkFMIENB +IFJPT1QtQSBXRUIwHhcNMjIwNDA2MDkwMTM2WhcNNDcwMzMxMDkwMTM2WjBuMQsw +CQYDVQQGEwJFUzEcMBoGA1UECgwTRmlybWFwcm9mZXNpb25hbCBTQTEYMBYGA1UE +YQwPVkFURVMtQTYyNjM0MDY4MScwJQYDVQQDDB5GSVJNQVBST0ZFU0lPTkFMIENB +IFJPT1QtQSBXRUIwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAARHU+osEaR3xyrq89Zf +e9MEkVz6iMYiuYMQYneEMy3pA4jU4DP37XcsSmDq5G+tbbT4TIqk5B/K6k84Si6C +cyvHZpsKjECcfIr28jlgst7L7Ljkb+qbXbdTkBgyVcUgt5SjYzBhMA8GA1UdEwEB +/wQFMAMBAf8wHwYDVR0jBBgwFoAUk+FDY1w8ndYn81LsF7Kpryz3dvgwHQYDVR0O +BBYEFJPhQ2NcPJ3WJ/NS7Beyqa8s93b4MA4GA1UdDwEB/wQEAwIBBjAKBggqhkjO +PQQDAwNoADBlAjAdfKR7w4l1M+E7qUW/Runpod3JIha3RxEL2Jq68cgLcFBTApFw +hVmpHqTm6iMxoAACMQD94vizrxa5HnPEluPBMBnYfubDl94cT7iJLzPrSA8Z94dG +XSaQpYXFuXqUPoeovQA= +-----END CERTIFICATE----- + +# Issuer: CN=TWCA CYBER Root CA O=TAIWAN-CA OU=Root CA +# Subject: CN=TWCA CYBER Root CA O=TAIWAN-CA OU=Root CA +# Label: "TWCA CYBER Root CA" +# Serial: 85076849864375384482682434040119489222 +# MD5 Fingerprint: 0b:33:a0:97:52:95:d4:a9:fd:bb:db:6e:a3:55:5b:51 +# SHA1 Fingerprint: f6:b1:1c:1a:83:38:e9:7b:db:b3:a8:c8:33:24:e0:2d:9c:7f:26:66 +# SHA256 Fingerprint: 3f:63:bb:28:14:be:17:4e:c8:b6:43:9c:f0:8d:6d:56:f0:b7:c4:05:88:3a:56:48:a3:34:42:4d:6b:3e:c5:58 +-----BEGIN CERTIFICATE----- +MIIFjTCCA3WgAwIBAgIQQAE0jMIAAAAAAAAAATzyxjANBgkqhkiG9w0BAQwFADBQ +MQswCQYDVQQGEwJUVzESMBAGA1UEChMJVEFJV0FOLUNBMRAwDgYDVQQLEwdSb290 +IENBMRswGQYDVQQDExJUV0NBIENZQkVSIFJvb3QgQ0EwHhcNMjIxMTIyMDY1NDI5 +WhcNNDcxMTIyMTU1OTU5WjBQMQswCQYDVQQGEwJUVzESMBAGA1UEChMJVEFJV0FO +LUNBMRAwDgYDVQQLEwdSb290IENBMRswGQYDVQQDExJUV0NBIENZQkVSIFJvb3Qg +Q0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDG+Moe2Qkgfh1sTs6P +40czRJzHyWmqOlt47nDSkvgEs1JSHWdyKKHfi12VCv7qze33Kc7wb3+szT3vsxxF +avcokPFhV8UMxKNQXd7UtcsZyoC5dc4pztKFIuwCY8xEMCDa6pFbVuYdHNWdZsc/ +34bKS1PE2Y2yHer43CdTo0fhYcx9tbD47nORxc5zb87uEB8aBs/pJ2DFTxnk684i +JkXXYJndzk834H/nY62wuFm40AZoNWDTNq5xQwTxaWV4fPMf88oon1oglWa0zbfu +j3ikRRjpJi+NmykosaS3Om251Bw4ckVYsV7r8Cibt4LK/c/WMw+f+5eesRycnupf +Xtuq3VTpMCEobY5583WSjCb+3MX2w7DfRFlDo7YDKPYIMKoNM+HvnKkHIuNZW0CP +2oi3aQiotyMuRAlZN1vH4xfyIutuOVLF3lSnmMlLIJXcRolftBL5hSmO68gnFSDA +S9TMfAxsNAwmmyYxpjyn9tnQS6Jk/zuZQXLB4HCX8SS7K8R0IrGsayIyJNN4KsDA +oS/xUgXJP+92ZuJF2A09rZXIx4kmyA+upwMu+8Ff+iDhcK2wZSA3M2Cw1a/XDBzC +kHDXShi8fgGwsOsVHkQGzaRP6AzRwyAQ4VRlnrZR0Bp2a0JaWHY06rc3Ga4udfmW +5cFZ95RXKSWNOkyrTZpB0F8mAwIDAQABo2MwYTAOBgNVHQ8BAf8EBAMCAQYwDwYD +VR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBSdhWEUfMFib5do5E83QOGt4A1WNzAd +BgNVHQ4EFgQUnYVhFHzBYm+XaORPN0DhreANVjcwDQYJKoZIhvcNAQEMBQADggIB +AGSPesRiDrWIzLjHhg6hShbNcAu3p4ULs3a2D6f/CIsLJc+o1IN1KriWiLb73y0t +tGlTITVX1olNc79pj3CjYcya2x6a4CD4bLubIp1dhDGaLIrdaqHXKGnK/nZVekZn +68xDiBaiA9a5F/gZbG0jAn/xX9AKKSM70aoK7akXJlQKTcKlTfjF/biBzysseKNn +TKkHmvPfXvt89YnNdJdhEGoHK4Fa0o635yDRIG4kqIQnoVesqlVYL9zZyvpoBJ7t +RCT5dEA7IzOrg1oYJkK2bVS1FmAwbLGg+LhBoF1JSdJlBTrq/p1hvIbZv97Tujqx +f36SNI7JAG7cmL3c7IAFrQI932XtCwP39xaEBDG6k5TY8hL4iuO/Qq+n1M0RFxbI +Qh0UqEL20kCGoE8jypZFVmAGzbdVAaYBlGX+bgUJurSkquLvWL69J1bY73NxW0Qz +8ppy6rBePm6pUlvscG21h483XjyMnM7k8M4MZ0HMzvaAq07MTFb1wWFZk7Q+ptq4 +NxKfKjLji7gh7MMrZQzvIt6IKTtM1/r+t+FHvpw+PoP7UV31aPcuIYXcv/Fa4nzX +xeSDwWrruoBa3lwtcHb4yOWHh8qgnaHlIhInD0Q9HWzq1MKLL295q39QpsQZp6F6 +t5b5wR9iWqJDB0BeJsas7a5wFsWqynKKTbDPAYsDP27X +-----END CERTIFICATE----- + +# Issuer: CN=SecureSign Root CA12 O=Cybertrust Japan Co., Ltd. +# Subject: CN=SecureSign Root CA12 O=Cybertrust Japan Co., Ltd. +# Label: "SecureSign Root CA12" +# Serial: 587887345431707215246142177076162061960426065942 +# MD5 Fingerprint: c6:89:ca:64:42:9b:62:08:49:0b:1e:7f:e9:07:3d:e8 +# SHA1 Fingerprint: 7a:22:1e:3d:de:1b:06:ac:9e:c8:47:70:16:8e:3c:e5:f7:6b:06:f4 +# SHA256 Fingerprint: 3f:03:4b:b5:70:4d:44:b2:d0:85:45:a0:20:57:de:93:eb:f3:90:5f:ce:72:1a:cb:c7:30:c0:6d:da:ee:90:4e +-----BEGIN CERTIFICATE----- +MIIDcjCCAlqgAwIBAgIUZvnHwa/swlG07VOX5uaCwysckBYwDQYJKoZIhvcNAQEL +BQAwUTELMAkGA1UEBhMCSlAxIzAhBgNVBAoTGkN5YmVydHJ1c3QgSmFwYW4gQ28u +LCBMdGQuMR0wGwYDVQQDExRTZWN1cmVTaWduIFJvb3QgQ0ExMjAeFw0yMDA0MDgw +NTM2NDZaFw00MDA0MDgwNTM2NDZaMFExCzAJBgNVBAYTAkpQMSMwIQYDVQQKExpD +eWJlcnRydXN0IEphcGFuIENvLiwgTHRkLjEdMBsGA1UEAxMUU2VjdXJlU2lnbiBS +b290IENBMTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6OcE3emhF +KxS06+QT61d1I02PJC0W6K6OyX2kVzsqdiUzg2zqMoqUm048luT9Ub+ZyZN+v/mt +p7JIKwccJ/VMvHASd6SFVLX9kHrko+RRWAPNEHl57muTH2SOa2SroxPjcf59q5zd +J1M3s6oYwlkm7Fsf0uZlfO+TvdhYXAvA42VvPMfKWeP+bl+sg779XSVOKik71gur +FzJ4pOE+lEa+Ym6b3kaosRbnhW70CEBFEaCeVESE99g2zvVQR9wsMJvuwPWW0v4J +hscGWa5Pro4RmHvzC1KqYiaqId+OJTN5lxZJjfU+1UefNzFJM3IFTQy2VYzxV4+K +h9GtxRESOaCtAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQD +AgEGMB0GA1UdDgQWBBRXNPN0zwRL1SXm8UC2LEzZLemgrTANBgkqhkiG9w0BAQsF +AAOCAQEAPrvbFxbS8hQBICw4g0utvsqFepq2m2um4fylOqyttCg6r9cBg0krY6Ld +mmQOmFxv3Y67ilQiLUoT865AQ9tPkbeGGuwAtEGBpE/6aouIs3YIcipJQMPTw4WJ +mBClnW8Zt7vPemVV2zfrPIpyMpcemik+rY3moxtt9XUa5rBouVui7mlHJzWhhpmA +8zNL4WukJsPvdFlseqJkth5Ew1DgDzk9qTPxpfPSvWKErI4cqc1avTc7bgoitPQV +55FYxTpE05Uo2cBl6XLK0A+9H7MV2anjpEcJnuDLN/v9vZfVvhgaaaI5gdka9at/ +yOPiZwud9AzqVN/Ssq+xIvEg37xEHA== +-----END CERTIFICATE----- + +# Issuer: CN=SecureSign Root CA14 O=Cybertrust Japan Co., Ltd. +# Subject: CN=SecureSign Root CA14 O=Cybertrust Japan Co., Ltd. +# Label: "SecureSign Root CA14" +# Serial: 575790784512929437950770173562378038616896959179 +# MD5 Fingerprint: 71:0d:72:fa:92:19:65:5e:89:04:ac:16:33:f0:bc:d5 +# SHA1 Fingerprint: dd:50:c0:f7:79:b3:64:2e:74:a2:b8:9d:9f:d3:40:dd:bb:f0:f2:4f +# SHA256 Fingerprint: 4b:00:9c:10:34:49:4f:9a:b5:6b:ba:3b:a1:d6:27:31:fc:4d:20:d8:95:5a:dc:ec:10:a9:25:60:72:61:e3:38 +-----BEGIN CERTIFICATE----- +MIIFcjCCA1qgAwIBAgIUZNtaDCBO6Ncpd8hQJ6JaJ90t8sswDQYJKoZIhvcNAQEM +BQAwUTELMAkGA1UEBhMCSlAxIzAhBgNVBAoTGkN5YmVydHJ1c3QgSmFwYW4gQ28u +LCBMdGQuMR0wGwYDVQQDExRTZWN1cmVTaWduIFJvb3QgQ0ExNDAeFw0yMDA0MDgw +NzA2MTlaFw00NTA0MDgwNzA2MTlaMFExCzAJBgNVBAYTAkpQMSMwIQYDVQQKExpD +eWJlcnRydXN0IEphcGFuIENvLiwgTHRkLjEdMBsGA1UEAxMUU2VjdXJlU2lnbiBS +b290IENBMTQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDF0nqh1oq/ +FjHQmNE6lPxauG4iwWL3pwon71D2LrGeaBLwbCRjOfHw3xDG3rdSINVSW0KZnvOg +vlIfX8xnbacuUKLBl422+JX1sLrcneC+y9/3OPJH9aaakpUqYllQC6KxNedlsmGy +6pJxaeQp8E+BgQQ8sqVb1MWoWWd7VRxJq3qdwudzTe/NCcLEVxLbAQ4jeQkHO6Lo +/IrPj8BGJJw4J+CDnRugv3gVEOuGTgpa/d/aLIJ+7sr2KeH6caH3iGicnPCNvg9J +kdjqOvn90Ghx2+m1K06Ckm9mH+Dw3EzsytHqunQG+bOEkJTRX45zGRBdAuVwpcAQ +0BB8b8VYSbSwbprafZX1zNoCr7gsfXmPvkPx+SgojQlD+Ajda8iLLCSxjVIHvXib +y8posqTdDEx5YMaZ0ZPxMBoH064iwurO8YQJzOAUbn8/ftKChazcqRZOhaBgy/ac +18izju3Gm5h1DVXoX+WViwKkrkMpKBGk5hIwAUt1ax5mnXkvpXYvHUC0bcl9eQjs +0Wq2XSqypWa9a4X0dFbD9ed1Uigspf9mR6XU/v6eVL9lfgHWMI+lNpyiUBzuOIAB +SMbHdPTGrMNASRZhdCyvjG817XsYAFs2PJxQDcqSMxDxJklt33UkN4Ii1+iW/RVL +ApY+B3KVfqs9TC7XyvDf4Fg/LS8EmjijAQIDAQABo0IwQDAPBgNVHRMBAf8EBTAD +AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUBpOjCl4oaTeqYR3r6/wtbyPk +86AwDQYJKoZIhvcNAQEMBQADggIBAJaAcgkGfpzMkwQWu6A6jZJOtxEaCnFxEM0E +rX+lRVAQZk5KQaID2RFPeje5S+LGjzJmdSX7684/AykmjbgWHfYfM25I5uj4V7Ib +ed87hwriZLoAymzvftAj63iP/2SbNDefNWWipAA9EiOWWF3KY4fGoweITedpdopT +zfFP7ELyk+OZpDc8h7hi2/DsHzc/N19DzFGdtfCXwreFamgLRB7lUe6TzktuhsHS +DCRZNhqfLJGP4xjblJUK7ZGqDpncllPjYYPGFrojutzdfhrGe0K22VoF3Jpf1d+4 +2kd92jjbrDnVHmtsKheMYc2xbXIBw8MgAGJoFjHVdqqGuw6qnsb58Nn4DSEC5MUo +FlkRudlpcyqSeLiSV5sI8jrlL5WwWLdrIBRtFO8KvH7YVdiI2i/6GaX7i+B/OfVy +K4XELKzvGUWSTLNhB9xNH27SgRNcmvMSZ4PPmz+Ln52kuaiWA3rF7iDeM9ovnhp6 +dB7h7sxaOgTdsxoEqBRjrLdHEoOabPXm6RUVkRqEGQ6UROcSjiVbgGcZ3GOTEAtl +Lor6CZpO2oYofaphNdgOpygau1LgePhsumywbrmHXumZNTfxPWQrqaA0k89jL9WB +365jJ6UeTo3cKXhZ+PmhIIynJkBugnLNeLLIjzwec+fBH7/PzqUqm9tEZDKgu39c +JRNItX+S +-----END CERTIFICATE----- + +# Issuer: CN=SecureSign Root CA15 O=Cybertrust Japan Co., Ltd. +# Subject: CN=SecureSign Root CA15 O=Cybertrust Japan Co., Ltd. +# Label: "SecureSign Root CA15" +# Serial: 126083514594751269499665114766174399806381178503 +# MD5 Fingerprint: 13:30:fc:c4:62:a6:a9:de:b5:c1:68:af:b5:d2:31:47 +# SHA1 Fingerprint: cb:ba:83:c8:c1:5a:5d:f1:f9:73:6f:ca:d7:ef:28:13:06:4a:07:7d +# SHA256 Fingerprint: e7:78:f0:f0:95:fe:84:37:29:cd:1a:00:82:17:9e:53:14:a9:c2:91:44:28:05:e1:fb:1d:8f:b6:b8:88:6c:3a +-----BEGIN CERTIFICATE----- +MIICIzCCAamgAwIBAgIUFhXHw9hJp75pDIqI7fBw+d23PocwCgYIKoZIzj0EAwMw +UTELMAkGA1UEBhMCSlAxIzAhBgNVBAoTGkN5YmVydHJ1c3QgSmFwYW4gQ28uLCBM +dGQuMR0wGwYDVQQDExRTZWN1cmVTaWduIFJvb3QgQ0ExNTAeFw0yMDA0MDgwODMy +NTZaFw00NTA0MDgwODMyNTZaMFExCzAJBgNVBAYTAkpQMSMwIQYDVQQKExpDeWJl +cnRydXN0IEphcGFuIENvLiwgTHRkLjEdMBsGA1UEAxMUU2VjdXJlU2lnbiBSb290 +IENBMTUwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQLUHSNZDKZmbPSYAi4Io5GdCx4 +wCtELW1fHcmuS1Iggz24FG1Th2CeX2yF2wYUleDHKP+dX+Sq8bOLbe1PL0vJSpSR +ZHX+AezB2Ot6lHhWGENfa4HL9rzatAy2KZMIaY+jQjBAMA8GA1UdEwEB/wQFMAMB +Af8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTrQciu/NWeUUj1vYv0hyCTQSvT +9DAKBggqhkjOPQQDAwNoADBlAjEA2S6Jfl5OpBEHvVnCB96rMjhTKkZEBhd6zlHp +4P9mLQlO4E/0BdGF9jVg3PVys0Z9AjBEmEYagoUeYWmJSwdLZrWeqrqgHkHZAXQ6 +bkU6iYAZezKYVWOr62Nuk22rGwlgMU4= +-----END CERTIFICATE----- + +# Issuer: CN=D-TRUST BR Root CA 2 2023 O=D-Trust GmbH +# Subject: CN=D-TRUST BR Root CA 2 2023 O=D-Trust GmbH +# Label: "D-TRUST BR Root CA 2 2023" +# Serial: 153168538924886464690566649552453098598 +# MD5 Fingerprint: e1:09:ed:d3:60:d4:56:1b:47:1f:b7:0c:5f:1b:5f:85 +# SHA1 Fingerprint: 2d:b0:70:ee:71:94:af:69:68:17:db:79:ce:58:9f:a0:6b:96:f7:87 +# SHA256 Fingerprint: 05:52:e6:f8:3f:df:65:e8:fa:96:70:e6:66:df:28:a4:e2:13:40:b5:10:cb:e5:25:66:f9:7c:4f:b9:4b:2b:d1 +-----BEGIN CERTIFICATE----- +MIIFqTCCA5GgAwIBAgIQczswBEhb2U14LnNLyaHcZjANBgkqhkiG9w0BAQ0FADBI +MQswCQYDVQQGEwJERTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMSIwIAYDVQQDExlE +LVRSVVNUIEJSIFJvb3QgQ0EgMiAyMDIzMB4XDTIzMDUwOTA4NTYzMVoXDTM4MDUw +OTA4NTYzMFowSDELMAkGA1UEBhMCREUxFTATBgNVBAoTDEQtVHJ1c3QgR21iSDEi +MCAGA1UEAxMZRC1UUlVTVCBCUiBSb290IENBIDIgMjAyMzCCAiIwDQYJKoZIhvcN +AQEBBQADggIPADCCAgoCggIBAK7/CVmRgApKaOYkP7in5Mg6CjoWzckjYaCTcfKr +i3OPoGdlYNJUa2NRb0kz4HIHE304zQaSBylSa053bATTlfrdTIzZXcFhfUvnKLNE +gXtRr90zsWh81k5M/itoucpmacTsXld/9w3HnDY25QdgrMBM6ghs7wZ8T1soegj8 +k12b9py0i4a6Ibn08OhZWiihNIQaJZG2tY/vsvmA+vk9PBFy2OMvhnbFeSzBqZCT +Rphny4NqoFAjpzv2gTng7fC5v2Xx2Mt6++9zA84A9H3X4F07ZrjcjrqDy4d2A/wl +2ecjbwb9Z/Pg/4S8R7+1FhhGaRTMBffb00msa8yr5LULQyReS2tNZ9/WtT5PeB+U +cSTq3nD88ZP+npNa5JRal1QMNXtfbO4AHyTsA7oC9Xb0n9Sa7YUsOCIvx9gvdhFP +/Wxc6PWOJ4d/GUohR5AdeY0cW/jPSoXk7bNbjb7EZChdQcRurDhaTyN0dKkSw/bS +uREVMweR2Ds3OmMwBtHFIjYoYiMQ4EbMl6zWK11kJNXuHA7e+whadSr2Y23OC0K+ +0bpwHJwh5Q8xaRfX/Aq03u2AnMuStIv13lmiWAmlY0cL4UEyNEHZmrHZqLAbWt4N +DfTisl01gLmB1IRpkQLLddCNxbU9CZEJjxShFHR5PtbJFR2kWVki3PaKRT08EtY+ +XTIvAgMBAAGjgY4wgYswDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUZ5Dw1t61 +GNVGKX5cq/ieCLxklRAwDgYDVR0PAQH/BAQDAgEGMEkGA1UdHwRCMEAwPqA8oDqG +OGh0dHA6Ly9jcmwuZC10cnVzdC5uZXQvY3JsL2QtdHJ1c3RfYnJfcm9vdF9jYV8y +XzIwMjMuY3JsMA0GCSqGSIb3DQEBDQUAA4ICAQA097N3U9swFrktpSHxQCF16+tI +FoE9c+CeJyrrd6kTpGoKWloUMz1oH4Guaf2Mn2VsNELZLdB/eBaxOqwjMa1ef67n +riv6uvw8l5VAk1/DLQOj7aRvU9f6QA4w9QAgLABMjDu0ox+2v5Eyq6+SmNMW5tTR +VFxDWy6u71cqqLRvpO8NVhTaIasgdp4D/Ca4nj8+AybmTNudX0KEPUUDAxxZiMrc +LmEkWqTqJwtzEr5SswrPMhfiHocaFpVIbVrg0M8JkiZmkdijYQ6qgYF/6FKC0ULn +4B0Y+qSFNueG4A3rvNTJ1jxD8V1Jbn6Bm2m1iWKPiFLY1/4nwSPFyysCu7Ff/vtD +hQNGvl3GyiEm/9cCnnRK3PgTFbGBVzbLZVzRHTF36SXDw7IyN9XxmAnkbWOACKsG +koHU6XCPpz+y7YaMgmo1yEJagtFSGkUPFaUA8JR7ZSdXOUPPfH/mvTWze/EZTN46 +ls/pdu4D58JDUjxqgejBWoC9EV2Ta/vH5mQ/u2kc6d0li690yVRAysuTEwrt+2aS +Ecr1wPrYg1UDfNPFIkZ1cGt5SAYqgpq/5usWDiJFAbzdNpQ0qTUmiteXue4Icr80 +knCDgKs4qllo3UCkGJCy89UDyibK79XH4I9TjvAA46jtn/mtd+ArY0+ew+43u3gJ +hJ65bvspmZDogNOfJA== +-----END CERTIFICATE----- + +# Issuer: CN=D-TRUST EV Root CA 2 2023 O=D-Trust GmbH +# Subject: CN=D-TRUST EV Root CA 2 2023 O=D-Trust GmbH +# Label: "D-TRUST EV Root CA 2 2023" +# Serial: 139766439402180512324132425437959641711 +# MD5 Fingerprint: 96:b4:78:09:f0:09:cb:77:eb:bb:1b:4d:6f:36:bc:b6 +# SHA1 Fingerprint: a5:5b:d8:47:6c:8f:19:f7:4c:f4:6d:6b:b6:c2:79:82:22:df:54:8b +# SHA256 Fingerprint: 8e:82:21:b2:e7:d4:00:78:36:a1:67:2f:0d:cc:29:9c:33:bc:07:d3:16:f1:32:fa:1a:20:6d:58:71:50:f1:ce +-----BEGIN CERTIFICATE----- +MIIFqTCCA5GgAwIBAgIQaSYJfoBLTKCnjHhiU19abzANBgkqhkiG9w0BAQ0FADBI +MQswCQYDVQQGEwJERTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMSIwIAYDVQQDExlE +LVRSVVNUIEVWIFJvb3QgQ0EgMiAyMDIzMB4XDTIzMDUwOTA5MTAzM1oXDTM4MDUw +OTA5MTAzMlowSDELMAkGA1UEBhMCREUxFTATBgNVBAoTDEQtVHJ1c3QgR21iSDEi +MCAGA1UEAxMZRC1UUlVTVCBFViBSb290IENBIDIgMjAyMzCCAiIwDQYJKoZIhvcN +AQEBBQADggIPADCCAgoCggIBANiOo4mAC7JXUtypU0w3uX9jFxPvp1sjW2l1sJkK +F8GLxNuo4MwxusLyzV3pt/gdr2rElYfXR8mV2IIEUD2BCP/kPbOx1sWy/YgJ25yE +7CUXFId/MHibaljJtnMoPDT3mfd/06b4HEV8rSyMlD/YZxBTfiLNTiVR8CUkNRFe +EMbsh2aJgWi6zCudR3Mfvc2RpHJqnKIbGKBv7FD0fUDCqDDPvXPIEysQEx6Lmqg6 +lHPTGGkKSv/BAQP/eX+1SH977ugpbzZMlWGG2Pmic4ruri+W7mjNPU0oQvlFKzIb +RlUWaqZLKfm7lVa/Rh3sHZMdwGWyH6FDrlaeoLGPaxK3YG14C8qKXO0elg6DpkiV +jTujIcSuWMYAsoS0I6SWhjW42J7YrDRJmGOVxcttSEfi8i4YHtAxq9107PncjLgc +jmgjutDzUNzPZY9zOjLHfP7KgiJPvo5iR2blzYfi6NUPGJ/lBHJLRjwQ8kTCZFZx +TnXonMkmdMV9WdEKWw9t/p51HBjGGjp82A0EzM23RWV6sY+4roRIPrN6TagD4uJ+ +ARZZaBhDM7DS3LAaQzXupdqpRlyuhoFBAUp0JuyfBr/CBTdkdXgpaP3F9ev+R/nk +hbDhezGdpn9yo7nELC7MmVcOIQxFAZRl62UJxmMiCzNJkkg8/M3OsD6Onov4/knF +NXJHAgMBAAGjgY4wgYswDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUqvyREBuH +kV8Wub9PS5FeAByxMoAwDgYDVR0PAQH/BAQDAgEGMEkGA1UdHwRCMEAwPqA8oDqG +OGh0dHA6Ly9jcmwuZC10cnVzdC5uZXQvY3JsL2QtdHJ1c3RfZXZfcm9vdF9jYV8y +XzIwMjMuY3JsMA0GCSqGSIb3DQEBDQUAA4ICAQCTy6UfmRHsmg1fLBWTxj++EI14 +QvBukEdHjqOSMo1wj/Zbjb6JzkcBahsgIIlbyIIQbODnmaprxiqgYzWRaoUlrRc4 +pZt+UPJ26oUFKidBK7GB0aL2QHWpDsvxVUjY7NHss+jOFKE17MJeNRqrphYBBo7q +3C+jisosketSjl8MmxfPy3MHGcRqwnNU73xDUmPBEcrCRbH0O1P1aa4846XerOhU +t7KR/aypH/KH5BfGSah82ApB9PI+53c0BFLd6IHyTS9URZ0V4U/M5d40VxDJI3IX +cI1QcB9WbMy5/zpaT2N6w25lBx2Eof+pDGOJbbJAiDnXH3dotfyc1dZnaVuodNv8 +ifYbMvekJKZ2t0dT741Jj6m2g1qllpBFYfXeA08mD6iL8AOWsKwV0HFaanuU5nCT +2vFp4LJiTZ6P/4mdm13NRemUAiKN4DV/6PEEeXFsVIP4M7kFMhtYVRFP0OUnR3Hs +7dpn1mKmS00PaaLJvOwiS5THaJQXfuKOKD62xur1NGyfN4gHONuGcfrNlUhDbqNP +gofXNJhuS5N5YHVpD/Aa1VP6IQzCP+k/HxiMkl14p3ZnGbuy6n/pcAlWVqOwDAst +Nl7F6cTVg8uGF5csbBNvh1qvSaYd2804BC5f4ko1Di1L+KIkBI3Y4WNeApI02phh +XBxvWHZks/wCuPWdCg== +-----END CERTIFICATE----- diff --git a/dist/HandoverSystem/_internal/certifi/py.typed b/dist/HandoverSystem/_internal/certifi/py.typed new file mode 100644 index 0000000..e69de29 diff --git a/dist/HandoverSystem/_internal/charset_normalizer/md.cp311-win_amd64.pyd b/dist/HandoverSystem/_internal/charset_normalizer/md.cp311-win_amd64.pyd new file mode 100644 index 0000000..2f2835b Binary files /dev/null and b/dist/HandoverSystem/_internal/charset_normalizer/md.cp311-win_amd64.pyd differ diff --git a/dist/HandoverSystem/_internal/charset_normalizer/md__mypyc.cp311-win_amd64.pyd b/dist/HandoverSystem/_internal/charset_normalizer/md__mypyc.cp311-win_amd64.pyd new file mode 100644 index 0000000..b51af72 Binary files /dev/null and b/dist/HandoverSystem/_internal/charset_normalizer/md__mypyc.cp311-win_amd64.pyd differ diff --git a/dist/HandoverSystem/_internal/clr_loader/ffi/dlls/amd64/ClrLoader.dll b/dist/HandoverSystem/_internal/clr_loader/ffi/dlls/amd64/ClrLoader.dll new file mode 100644 index 0000000..bf398e9 Binary files /dev/null and b/dist/HandoverSystem/_internal/clr_loader/ffi/dlls/amd64/ClrLoader.dll differ diff --git a/dist/HandoverSystem/_internal/clr_loader/ffi/dlls/x86/ClrLoader.dll b/dist/HandoverSystem/_internal/clr_loader/ffi/dlls/x86/ClrLoader.dll new file mode 100644 index 0000000..1cd2a29 Binary files /dev/null and b/dist/HandoverSystem/_internal/clr_loader/ffi/dlls/x86/ClrLoader.dll differ diff --git a/dist/HandoverSystem/_internal/config.ini b/dist/HandoverSystem/_internal/config.ini new file mode 100644 index 0000000..8bdacb8 --- /dev/null +++ b/dist/HandoverSystem/_internal/config.ini @@ -0,0 +1,159 @@ +[app] +language = ko +theme = dark +font_family = GmarketSans +font_size = 13 +auto_save = True +auto_save_interval = 30 +check_updates = True +update_check_interval = 3600 +start_minimized = False +minimize_to_tray = True +show_notifications = True + +[layout] +info_bar_ratio = 10.0 +content_area_ratio = 80.0 +status_bar_ratio = 10.0 +section_panel_ratio = 65 +todo_panel_ratio = 34 +daily_inspection_ratio = 30.0 +todo_list_ratio = 35.0 +memo_ratio = 35.0 +window_width = 1750 +window_height = 900 +window_x = 150 +window_y = 87 + +[database] +db_path = D:\py_train\handover\data\handover.db +backup_enabled = True +backup_interval = 86400 +backup_count = 7 +sync_enabled = False +sync_url = +sync_key = +sync_interval = 300 + +[weather] +enabled = True +api_key = +location_lat = 35.1796 +location_lon = 129.0756 +location_name = 부산 +update_interval = 1800 +forecast_unit = 1시간 단위 + +[user] +current_team = 1팀 +current_shift = 주간 +last_user_id = 0 +remember_login = True +field_settings = "\"\\\"\\\\\\\"{}\\\\\\\"\\\"\"" + +[ui_font] +info_bar_title_family = GmarketSans +info_bar_title_size = 16 +info_bar_title_weight = bold +info_bar_content_family = GmarketSans +info_bar_content_size = 14 +info_bar_content_weight = normal +section_title_family = GmarketSans +section_title_size = 16 +section_title_weight = bold +section_header_family = GmarketSans +section_header_size = 13 +section_header_weight = bold +section_content_family = GmarketSans +section_content_size = 13 +section_content_weight = normal +todo_title_family = GmarketSans +todo_title_size = 14 +todo_title_weight = bold +todo_content_family = GmarketSans +todo_content_size = 13 +todo_content_weight = normal +memo_title_family = GmarketSans +memo_title_size = 14 +memo_title_weight = bold +memo_content_family = GmarketSans +memo_content_size = 13 +memo_content_weight = normal +daily_title_family = GmarketSans +daily_title_size = 14 +daily_title_weight = bold +daily_content_family = GmarketSans +daily_content_size = 13 +daily_content_weight = normal +daily_train_family = GmarketSans +daily_train_size = 15 +daily_train_weight = bold +status_content_family = GmarketSans +status_content_size = 12 +status_content_weight = normal +dialog_title_family = GmarketSans +dialog_title_size = 14 +dialog_title_weight = bold +dialog_label_family = GmarketSans +dialog_label_size = 12 +dialog_label_weight = normal +dialog_input_family = GmarketSans +dialog_input_size = 12 +dialog_input_weight = normal +dialog_button_family = GmarketSans +dialog_button_size = 12 +dialog_button_weight = medium + +[train] +train_1_type = A +train_2_type = B +train_3_type = A +train_4_type = B +train_5_type = A +train_6_type = B +train_7_type = B +train_8_type = B +train_9_type = B +train_10_type = B +train_11_type = A +train_12_type = B +train_13_type = B +train_14_type = B +train_15_type = A +train_16_type = B +train_17_type = A +train_18_type = B +train_19_type = A +train_20_type = B +train_21_type = A +train_22_type = B +train_23_type = A +train_24_type = B +train_25_type = A +train_26_type = B +train_27_type = A +train_28_type = B +train_29_type = A +train_30_type = B +train_31_type = A +train_32_type = B +train_33_type = B +train_34_type = B +train_35_type = B +train_36_type = B +train_37_type = B +train_38_type = B +train_39_type = B +train_40_type = B +train_41_type = B +train_42_type = B +train_43_type = B +train_44_type = B +train_45_type = B +train_46_type = B +train_47_type = B +train_48_type = B +train_49_type = A +train_50_type = B +train_51_type = A + diff --git a/dist/HandoverSystem/_internal/cryptography-46.0.3.dist-info/INSTALLER b/dist/HandoverSystem/_internal/cryptography-46.0.3.dist-info/INSTALLER new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/dist/HandoverSystem/_internal/cryptography-46.0.3.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/dist/HandoverSystem/_internal/cryptography-46.0.3.dist-info/METADATA b/dist/HandoverSystem/_internal/cryptography-46.0.3.dist-info/METADATA new file mode 100644 index 0000000..7b07ee7 --- /dev/null +++ b/dist/HandoverSystem/_internal/cryptography-46.0.3.dist-info/METADATA @@ -0,0 +1,139 @@ +Metadata-Version: 2.4 +Name: cryptography +Version: 46.0.3 +Classifier: Development Status :: 5 - Production/Stable +Classifier: Intended Audience :: Developers +Classifier: Natural Language :: English +Classifier: Operating System :: MacOS :: MacOS X +Classifier: Operating System :: POSIX +Classifier: Operating System :: POSIX :: BSD +Classifier: Operating System :: POSIX :: Linux +Classifier: Operating System :: Microsoft :: Windows +Classifier: Programming Language :: Python +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3 :: Only +Classifier: Programming Language :: Python :: 3.8 +Classifier: Programming Language :: Python :: 3.9 +Classifier: Programming Language :: Python :: 3.10 +Classifier: Programming Language :: Python :: 3.11 +Classifier: Programming Language :: Python :: 3.12 +Classifier: Programming Language :: Python :: 3.13 +Classifier: Programming Language :: Python :: 3.14 +Classifier: Programming Language :: Python :: Implementation :: CPython +Classifier: Programming Language :: Python :: Implementation :: PyPy +Classifier: Programming Language :: Python :: Free Threading :: 3 - Stable +Classifier: Topic :: Security :: Cryptography +Requires-Dist: cffi>=1.14 ; python_full_version == '3.8.*' and platform_python_implementation != 'PyPy' +Requires-Dist: cffi>=2.0.0 ; python_full_version >= '3.9' and platform_python_implementation != 'PyPy' +Requires-Dist: typing-extensions>=4.13.2 ; python_full_version < '3.11' +Requires-Dist: bcrypt>=3.1.5 ; extra == 'ssh' +Requires-Dist: nox[uv]>=2024.4.15 ; extra == 'nox' +Requires-Dist: cryptography-vectors==46.0.3 ; extra == 'test' +Requires-Dist: pytest>=7.4.0 ; extra == 'test' +Requires-Dist: pytest-benchmark>=4.0 ; extra == 'test' +Requires-Dist: pytest-cov>=2.10.1 ; extra == 'test' +Requires-Dist: pytest-xdist>=3.5.0 ; extra == 'test' +Requires-Dist: pretend>=0.7 ; extra == 'test' +Requires-Dist: certifi>=2024 ; extra == 'test' +Requires-Dist: pytest-randomly ; extra == 'test-randomorder' +Requires-Dist: sphinx>=5.3.0 ; extra == 'docs' +Requires-Dist: sphinx-rtd-theme>=3.0.0 ; extra == 'docs' +Requires-Dist: sphinx-inline-tabs ; extra == 'docs' +Requires-Dist: pyenchant>=3 ; extra == 'docstest' +Requires-Dist: readme-renderer>=30.0 ; extra == 'docstest' +Requires-Dist: sphinxcontrib-spelling>=7.3.1 ; extra == 'docstest' +Requires-Dist: build>=1.0.0 ; extra == 'sdist' +Requires-Dist: ruff>=0.11.11 ; extra == 'pep8test' +Requires-Dist: mypy>=1.14 ; extra == 'pep8test' +Requires-Dist: check-sdist ; extra == 'pep8test' +Requires-Dist: click>=8.0.1 ; extra == 'pep8test' +Provides-Extra: ssh +Provides-Extra: nox +Provides-Extra: test +Provides-Extra: test-randomorder +Provides-Extra: docs +Provides-Extra: docstest +Provides-Extra: sdist +Provides-Extra: pep8test +License-File: LICENSE +License-File: LICENSE.APACHE +License-File: LICENSE.BSD +Summary: cryptography is a package which provides cryptographic recipes and primitives to Python developers. +Author-email: The Python Cryptographic Authority and individual contributors +License-Expression: Apache-2.0 OR BSD-3-Clause +Requires-Python: >=3.8, !=3.9.0, !=3.9.1 +Description-Content-Type: text/x-rst; charset=UTF-8 +Project-URL: homepage, https://github.com/pyca/cryptography +Project-URL: documentation, https://cryptography.io/ +Project-URL: source, https://github.com/pyca/cryptography/ +Project-URL: issues, https://github.com/pyca/cryptography/issues +Project-URL: changelog, https://cryptography.io/en/latest/changelog/ + +pyca/cryptography +================= + +.. image:: https://img.shields.io/pypi/v/cryptography.svg + :target: https://pypi.org/project/cryptography/ + :alt: Latest Version + +.. image:: https://readthedocs.org/projects/cryptography/badge/?version=latest + :target: https://cryptography.io + :alt: Latest Docs + +.. image:: https://github.com/pyca/cryptography/actions/workflows/ci.yml/badge.svg + :target: https://github.com/pyca/cryptography/actions/workflows/ci.yml?query=branch%3Amain + +``cryptography`` is a package which provides cryptographic recipes and +primitives to Python developers. Our goal is for it to be your "cryptographic +standard library". It supports Python 3.8+ and PyPy3 7.3.11+. + +``cryptography`` includes both high level recipes and low level interfaces to +common cryptographic algorithms such as symmetric ciphers, message digests, and +key derivation functions. For example, to encrypt something with +``cryptography``'s high level symmetric encryption recipe: + +.. code-block:: pycon + + >>> from cryptography.fernet import Fernet + >>> # Put this somewhere safe! + >>> key = Fernet.generate_key() + >>> f = Fernet(key) + >>> token = f.encrypt(b"A really secret message. Not for prying eyes.") + >>> token + b'...' + >>> f.decrypt(token) + b'A really secret message. Not for prying eyes.' + +You can find more information in the `documentation`_. + +You can install ``cryptography`` with: + +.. code-block:: console + + $ pip install cryptography + +For full details see `the installation documentation`_. + +Discussion +~~~~~~~~~~ + +If you run into bugs, you can file them in our `issue tracker`_. + +We maintain a `cryptography-dev`_ mailing list for development discussion. + +You can also join ``#pyca`` on ``irc.libera.chat`` to ask questions or get +involved. + +Security +~~~~~~~~ + +Need to report a security issue? Please consult our `security reporting`_ +documentation. + + +.. _`documentation`: https://cryptography.io/ +.. _`the installation documentation`: https://cryptography.io/en/latest/installation/ +.. _`issue tracker`: https://github.com/pyca/cryptography/issues +.. _`cryptography-dev`: https://mail.python.org/mailman/listinfo/cryptography-dev +.. _`security reporting`: https://cryptography.io/en/latest/security/ + diff --git a/dist/HandoverSystem/_internal/cryptography-46.0.3.dist-info/RECORD b/dist/HandoverSystem/_internal/cryptography-46.0.3.dist-info/RECORD new file mode 100644 index 0000000..736fe82 --- /dev/null +++ b/dist/HandoverSystem/_internal/cryptography-46.0.3.dist-info/RECORD @@ -0,0 +1,180 @@ +cryptography-46.0.3.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +cryptography-46.0.3.dist-info/METADATA,sha256=bx2LyCEmOVUC8FH5hsGEZewWPiZoIIYTq0hM9mu9r4s,5748 +cryptography-46.0.3.dist-info/RECORD,, +cryptography-46.0.3.dist-info/WHEEL,sha256=8hEf8NzM1FnmM77AjVt5h8nDuYkN3UqZ79LoIAHXeRE,95 +cryptography-46.0.3.dist-info/licenses/LICENSE,sha256=Pgx8CRqUi4JTO6mP18u0BDLW8amsv4X1ki0vmak65rs,197 +cryptography-46.0.3.dist-info/licenses/LICENSE.APACHE,sha256=qsc7MUj20dcRHbyjIJn2jSbGRMaBOuHk8F9leaomY_4,11360 +cryptography-46.0.3.dist-info/licenses/LICENSE.BSD,sha256=YCxMdILeZHndLpeTzaJ15eY9dz2s0eymiSMqtwCPtPs,1532 +cryptography/__about__.py,sha256=QCLxNH_Abbygdc9RQGpUmrK14Wp3Cl_SEiB2byLwyxo,445 +cryptography/__init__.py,sha256=mthuUrTd4FROCpUYrTIqhjz6s6T9djAZrV7nZ1oMm2o,364 +cryptography/__pycache__/__about__.cpython-311.pyc,, +cryptography/__pycache__/__init__.cpython-311.pyc,, +cryptography/__pycache__/exceptions.cpython-311.pyc,, +cryptography/__pycache__/fernet.cpython-311.pyc,, +cryptography/__pycache__/utils.cpython-311.pyc,, +cryptography/exceptions.py,sha256=835EWILc2fwxw-gyFMriciC2SqhViETB10LBSytnDIc,1087 +cryptography/fernet.py,sha256=3Cvxkh0KJSbX8HbnCHu4wfCW7U0GgfUA3v_qQ8a8iWc,6963 +cryptography/hazmat/__init__.py,sha256=5IwrLWrVp0AjEr_4FdWG_V057NSJGY_W4egNNsuct0g,455 +cryptography/hazmat/__pycache__/__init__.cpython-311.pyc,, +cryptography/hazmat/__pycache__/_oid.cpython-311.pyc,, +cryptography/hazmat/_oid.py,sha256=p8ThjwJB56Ci_rAIrjyJ1f8VjgD6e39es2dh8JIUBOw,17240 +cryptography/hazmat/asn1/__init__.py,sha256=hS_EWx3wVvZzfbCcNV8hzcDnyMM8H-BhIoS1TipUosk,293 +cryptography/hazmat/asn1/__pycache__/__init__.cpython-311.pyc,, +cryptography/hazmat/asn1/__pycache__/asn1.cpython-311.pyc,, +cryptography/hazmat/asn1/asn1.py,sha256=eMEThEXa19LQjcyVofgHsW6tsZnjp3ddH7bWkkcxfLM,3860 +cryptography/hazmat/backends/__init__.py,sha256=O5jvKFQdZnXhKeqJ-HtulaEL9Ni7mr1mDzZY5kHlYhI,361 +cryptography/hazmat/backends/__pycache__/__init__.cpython-311.pyc,, +cryptography/hazmat/backends/openssl/__init__.py,sha256=p3jmJfnCag9iE5sdMrN6VvVEu55u46xaS_IjoI0SrmA,305 +cryptography/hazmat/backends/openssl/__pycache__/__init__.cpython-311.pyc,, +cryptography/hazmat/backends/openssl/__pycache__/backend.cpython-311.pyc,, +cryptography/hazmat/backends/openssl/backend.py,sha256=tV5AxBoFJ2GfA0DMWSY-0TxQJrpQoexzI9R4Kybb--4,10215 +cryptography/hazmat/bindings/__init__.py,sha256=s9oKCQ2ycFdXoERdS1imafueSkBsL9kvbyfghaauZ9Y,180 +cryptography/hazmat/bindings/__pycache__/__init__.cpython-311.pyc,, +cryptography/hazmat/bindings/_rust.pyd,sha256=kvWLtPAadaDvTdlCXcKpbd_iX8k_2dwR6o8NBbek8IU,9245696 +cryptography/hazmat/bindings/_rust/__init__.pyi,sha256=KhqLhXFPArPzzJ7DYO9Fl8FoXB_BagAd_r4Dm_Ze9Xo,1257 +cryptography/hazmat/bindings/_rust/_openssl.pyi,sha256=mpNJLuYLbCVrd5i33FBTmWwL_55Dw7JPkSLlSX9Q7oI,230 +cryptography/hazmat/bindings/_rust/asn1.pyi,sha256=BrGjC8J6nwuS-r3EVcdXJB8ndotfY9mbQYOfpbPG0HA,354 +cryptography/hazmat/bindings/_rust/declarative_asn1.pyi,sha256=2ECFmYue1EPkHEE2Bm7aLwkjB0mSUTpr23v9MN4pri4,892 +cryptography/hazmat/bindings/_rust/exceptions.pyi,sha256=exXr2xw_0pB1kk93cYbM3MohbzoUkjOms1ZMUi0uQZE,640 +cryptography/hazmat/bindings/_rust/ocsp.pyi,sha256=VPVWuKHI9EMs09ZLRYAGvR0Iz0mCMmEzXAkgJHovpoM,4020 +cryptography/hazmat/bindings/_rust/openssl/__init__.pyi,sha256=iOAMDyHoNwwCSZfZzuXDr64g4GpGUeDgEN-LjXqdrBM,1522 +cryptography/hazmat/bindings/_rust/openssl/aead.pyi,sha256=4Nddw6-ynzIB3w2W86WvkGKTLlTDk_6F5l54RHCuy3E,2688 +cryptography/hazmat/bindings/_rust/openssl/ciphers.pyi,sha256=LhPzHWSXJq4grAJXn6zSvSSdV-aYIIscHDwIPlJGGPs,1315 +cryptography/hazmat/bindings/_rust/openssl/cmac.pyi,sha256=nPH0X57RYpsAkRowVpjQiHE566ThUTx7YXrsadmrmHk,564 +cryptography/hazmat/bindings/_rust/openssl/dh.pyi,sha256=Z3TC-G04-THtSdAOPLM1h2G7ml5bda1ElZUcn5wpuhk,1564 +cryptography/hazmat/bindings/_rust/openssl/dsa.pyi,sha256=qBtkgj2albt2qFcnZ9UDrhzoNhCVO7HTby5VSf1EXMI,1299 +cryptography/hazmat/bindings/_rust/openssl/ec.pyi,sha256=zJy0pRa5n-_p2dm45PxECB_-B6SVZyNKfjxFDpPqT38,1691 +cryptography/hazmat/bindings/_rust/openssl/ed25519.pyi,sha256=VXfXd5G6hUivg399R1DYdmW3eTb0EebzDTqjRC2gaRw,532 +cryptography/hazmat/bindings/_rust/openssl/ed448.pyi,sha256=Yx49lqdnjsD7bxiDV1kcaMrDktug5evi5a6zerMiy2s,514 +cryptography/hazmat/bindings/_rust/openssl/hashes.pyi,sha256=OWZvBx7xfo_HJl41Nc--DugVyCVPIprZ3HlOPTSWH9g,984 +cryptography/hazmat/bindings/_rust/openssl/hmac.pyi,sha256=BXZn7NDjL3JAbYW0SQ8pg1iyC5DbQXVhUAiwsi8DFR8,702 +cryptography/hazmat/bindings/_rust/openssl/kdf.pyi,sha256=xXfFBb9QehHfDtEaxV_65Z0YK7NquOVIChpTLkgAs_k,2029 +cryptography/hazmat/bindings/_rust/openssl/keys.pyi,sha256=teIt8M6ZEMJrn4s3W0UnW0DZ-30Jd68WnSsKKG124l0,912 +cryptography/hazmat/bindings/_rust/openssl/poly1305.pyi,sha256=_SW9NtQ5FDlAbdclFtWpT4lGmxKIKHpN-4j8J2BzYfQ,585 +cryptography/hazmat/bindings/_rust/openssl/rsa.pyi,sha256=2OQCNSXkxgc-3uw1xiCCloIQTV6p9_kK79Yu0rhZgPc,1364 +cryptography/hazmat/bindings/_rust/openssl/x25519.pyi,sha256=ewn4GpQyb7zPwE-ni7GtyQgMC0A1mLuqYsSyqv6nI_s,523 +cryptography/hazmat/bindings/_rust/openssl/x448.pyi,sha256=juTZTmli8jO_5Vcufg-vHvx_tCyezmSLIh_9PU3TczI,505 +cryptography/hazmat/bindings/_rust/pkcs12.pyi,sha256=vEEd5wDiZvb8ZGFaziLCaWLzAwoG_tvPUxLQw5_uOl8,1605 +cryptography/hazmat/bindings/_rust/pkcs7.pyi,sha256=txGBJijqZshEcqra6byPNbnisIdlxzOSIHP2hl9arPs,1601 +cryptography/hazmat/bindings/_rust/test_support.pyi,sha256=PPhld-WkO743iXFPebeG0LtgK0aTzGdjcIsay1Gm5GE,757 +cryptography/hazmat/bindings/_rust/x509.pyi,sha256=n9X0IQ6ICbdIi-ExdCFZoBgeY6njm3QOVAVZwDQdnbk,9784 +cryptography/hazmat/bindings/openssl/__init__.py,sha256=s9oKCQ2ycFdXoERdS1imafueSkBsL9kvbyfghaauZ9Y,180 +cryptography/hazmat/bindings/openssl/__pycache__/__init__.cpython-311.pyc,, +cryptography/hazmat/bindings/openssl/__pycache__/_conditional.cpython-311.pyc,, +cryptography/hazmat/bindings/openssl/__pycache__/binding.cpython-311.pyc,, +cryptography/hazmat/bindings/openssl/_conditional.py,sha256=DMOpA_XN4l70zTc5_J9DpwlbQeUBRTWpfIJ4yRIn1-U,5791 +cryptography/hazmat/bindings/openssl/binding.py,sha256=x8eocEmukO4cm7cHqfVmOoYY7CCXdoF1v1WhZQt9neo,4610 +cryptography/hazmat/decrepit/__init__.py,sha256=wHCbWfaefa-fk6THSw9th9fJUsStJo7245wfFBqmduA,216 +cryptography/hazmat/decrepit/__pycache__/__init__.cpython-311.pyc,, +cryptography/hazmat/decrepit/ciphers/__init__.py,sha256=wHCbWfaefa-fk6THSw9th9fJUsStJo7245wfFBqmduA,216 +cryptography/hazmat/decrepit/ciphers/__pycache__/__init__.cpython-311.pyc,, +cryptography/hazmat/decrepit/ciphers/__pycache__/algorithms.cpython-311.pyc,, +cryptography/hazmat/decrepit/ciphers/algorithms.py,sha256=YrKgHS4MfwWaMmPBYRymRRlC0phwWp9ycICFezeJPGk,2595 +cryptography/hazmat/primitives/__init__.py,sha256=s9oKCQ2ycFdXoERdS1imafueSkBsL9kvbyfghaauZ9Y,180 +cryptography/hazmat/primitives/__pycache__/__init__.cpython-311.pyc,, +cryptography/hazmat/primitives/__pycache__/_asymmetric.cpython-311.pyc,, +cryptography/hazmat/primitives/__pycache__/_cipheralgorithm.cpython-311.pyc,, +cryptography/hazmat/primitives/__pycache__/_serialization.cpython-311.pyc,, +cryptography/hazmat/primitives/__pycache__/cmac.cpython-311.pyc,, +cryptography/hazmat/primitives/__pycache__/constant_time.cpython-311.pyc,, +cryptography/hazmat/primitives/__pycache__/hashes.cpython-311.pyc,, +cryptography/hazmat/primitives/__pycache__/hmac.cpython-311.pyc,, +cryptography/hazmat/primitives/__pycache__/keywrap.cpython-311.pyc,, +cryptography/hazmat/primitives/__pycache__/padding.cpython-311.pyc,, +cryptography/hazmat/primitives/__pycache__/poly1305.cpython-311.pyc,, +cryptography/hazmat/primitives/_asymmetric.py,sha256=RhgcouUB6HTiFDBrR1LxqkMjpUxIiNvQ1r_zJjRG6qQ,532 +cryptography/hazmat/primitives/_cipheralgorithm.py,sha256=Eh3i7lwedHfi0eLSsH93PZxQKzY9I6lkK67vL4V5tOc,1522 +cryptography/hazmat/primitives/_serialization.py,sha256=chgPCSF2jxI2Cr5gB-qbWXOvOfupBh4CARS0KAhv9AM,5123 +cryptography/hazmat/primitives/asymmetric/__init__.py,sha256=s9oKCQ2ycFdXoERdS1imafueSkBsL9kvbyfghaauZ9Y,180 +cryptography/hazmat/primitives/asymmetric/__pycache__/__init__.cpython-311.pyc,, +cryptography/hazmat/primitives/asymmetric/__pycache__/dh.cpython-311.pyc,, +cryptography/hazmat/primitives/asymmetric/__pycache__/dsa.cpython-311.pyc,, +cryptography/hazmat/primitives/asymmetric/__pycache__/ec.cpython-311.pyc,, +cryptography/hazmat/primitives/asymmetric/__pycache__/ed25519.cpython-311.pyc,, +cryptography/hazmat/primitives/asymmetric/__pycache__/ed448.cpython-311.pyc,, +cryptography/hazmat/primitives/asymmetric/__pycache__/padding.cpython-311.pyc,, +cryptography/hazmat/primitives/asymmetric/__pycache__/rsa.cpython-311.pyc,, +cryptography/hazmat/primitives/asymmetric/__pycache__/types.cpython-311.pyc,, +cryptography/hazmat/primitives/asymmetric/__pycache__/utils.cpython-311.pyc,, +cryptography/hazmat/primitives/asymmetric/__pycache__/x25519.cpython-311.pyc,, +cryptography/hazmat/primitives/asymmetric/__pycache__/x448.cpython-311.pyc,, +cryptography/hazmat/primitives/asymmetric/dh.py,sha256=0v_vEFFz5pQ1QG-FkWDyvgv7IfuVZSH5Q6LyFI5A8rg,3645 +cryptography/hazmat/primitives/asymmetric/dsa.py,sha256=Ld_bbbqQFz12dObHxIkzEQzX0SWWP41RLSWkYSaKhqE,4213 +cryptography/hazmat/primitives/asymmetric/ec.py,sha256=Vf5ig2PcS3PVnsb5N49Kx1uIkFBJyhg4BWXThDz5cug,12999 +cryptography/hazmat/primitives/asymmetric/ed25519.py,sha256=jZW5cs472wXXV3eB0sE1b8w64gdazwwU0_MT5UOTiXs,3700 +cryptography/hazmat/primitives/asymmetric/ed448.py,sha256=yAetgn2f2JYf0BO8MapGzXeThsvSMG5LmUCrxVOidAA,3729 +cryptography/hazmat/primitives/asymmetric/padding.py,sha256=vQ6l6gOg9HqcbOsvHrSiJRVLdEj9L4m4HkRGYziTyFA,2854 +cryptography/hazmat/primitives/asymmetric/rsa.py,sha256=ZnKOo2f34MCCOupC03Y1uR-_jiSG5IrelHEmxaME3D4,8303 +cryptography/hazmat/primitives/asymmetric/types.py,sha256=LnsOJym-wmPUJ7Knu_7bCNU3kIiELCd6krOaW_JU08I,2996 +cryptography/hazmat/primitives/asymmetric/utils.py,sha256=DPTs6T4F-UhwzFQTh-1fSEpQzazH2jf2xpIro3ItF4o,790 +cryptography/hazmat/primitives/asymmetric/x25519.py,sha256=_4nQeZ3yJ3Lg0RpXnaqA-1yt6vbx1F-wzLcaZHwSpeE,3613 +cryptography/hazmat/primitives/asymmetric/x448.py,sha256=WKBLtuVfJqiBRro654fGaQAlvsKbqbNkK7c4A_ZCdV0,3642 +cryptography/hazmat/primitives/ciphers/__init__.py,sha256=eyEXmjk6_CZXaOPYDr7vAYGXr29QvzgWL2-4CSolLFs,680 +cryptography/hazmat/primitives/ciphers/__pycache__/__init__.cpython-311.pyc,, +cryptography/hazmat/primitives/ciphers/__pycache__/aead.cpython-311.pyc,, +cryptography/hazmat/primitives/ciphers/__pycache__/algorithms.cpython-311.pyc,, +cryptography/hazmat/primitives/ciphers/__pycache__/base.cpython-311.pyc,, +cryptography/hazmat/primitives/ciphers/__pycache__/modes.cpython-311.pyc,, +cryptography/hazmat/primitives/ciphers/aead.py,sha256=Fzlyx7w8KYQakzDp1zWgJnIr62zgZrgVh1u2h4exB54,634 +cryptography/hazmat/primitives/ciphers/algorithms.py,sha256=Q7ZJwcsx83Mgxv5y7r6CyJKSdsOwC-my-5A67-ma2vw,3407 +cryptography/hazmat/primitives/ciphers/base.py,sha256=aBC7HHBBoixebmparVr0UlODs3VD0A7B6oz_AaRjDv8,4253 +cryptography/hazmat/primitives/ciphers/modes.py,sha256=20stpwhDtbAvpH0SMf9EDHIciwmTF-JMBUOZ9bU8WiQ,8318 +cryptography/hazmat/primitives/cmac.py,sha256=sz_s6H_cYnOvx-VNWdIKhRhe3Ymp8z8J0D3CBqOX3gg,338 +cryptography/hazmat/primitives/constant_time.py,sha256=xdunWT0nf8OvKdcqUhhlFKayGp4_PgVJRU2W1wLSr_A,422 +cryptography/hazmat/primitives/hashes.py,sha256=M8BrlKB3U6DEtHvWTV5VRjpteHv1kS3Zxm_Bsk04cr8,5184 +cryptography/hazmat/primitives/hmac.py,sha256=RpB3z9z5skirCQrm7zQbtnp9pLMnAjrlTUvKqF5aDDc,423 +cryptography/hazmat/primitives/kdf/__init__.py,sha256=4XibZnrYq4hh5xBjWiIXzaYW6FKx8hPbVaa_cB9zS64,750 +cryptography/hazmat/primitives/kdf/__pycache__/__init__.cpython-311.pyc,, +cryptography/hazmat/primitives/kdf/__pycache__/argon2.cpython-311.pyc,, +cryptography/hazmat/primitives/kdf/__pycache__/concatkdf.cpython-311.pyc,, +cryptography/hazmat/primitives/kdf/__pycache__/hkdf.cpython-311.pyc,, +cryptography/hazmat/primitives/kdf/__pycache__/kbkdf.cpython-311.pyc,, +cryptography/hazmat/primitives/kdf/__pycache__/pbkdf2.cpython-311.pyc,, +cryptography/hazmat/primitives/kdf/__pycache__/scrypt.cpython-311.pyc,, +cryptography/hazmat/primitives/kdf/__pycache__/x963kdf.cpython-311.pyc,, +cryptography/hazmat/primitives/kdf/argon2.py,sha256=UFDNXG0v-rw3DqAQTB1UQAsQC2M5Ejg0k_6OCyhLKus,460 +cryptography/hazmat/primitives/kdf/concatkdf.py,sha256=Ua8KoLXXnzgsrAUmHpyKymaPt8aPRP0EHEaBz7QCQ9I,3737 +cryptography/hazmat/primitives/kdf/hkdf.py,sha256=M0lAEfRoc4kpp4-nwDj9yB-vNZukIOYEQrUlWsBNn9o,543 +cryptography/hazmat/primitives/kdf/kbkdf.py,sha256=oZepvo4evhKkkJQWRDwaPoIbyTaFmDc5NPimxg6lfKg,9165 +cryptography/hazmat/primitives/kdf/pbkdf2.py,sha256=1WIwhELR0w8ztTpTu8BrFiYWmK3hUfJq08I79TxwieE,1957 +cryptography/hazmat/primitives/kdf/scrypt.py,sha256=XyWUdUUmhuI9V6TqAPOvujCSMGv1XQdg0a21IWCmO-U,590 +cryptography/hazmat/primitives/kdf/x963kdf.py,sha256=zLTcF665QFvXX2f8TS7fmBZTteXpFjKahzfjjQcCJyw,1999 +cryptography/hazmat/primitives/keywrap.py,sha256=XV4Pj2fqSeD-RqZVvY2cA3j5_7RwJSFygYuLfk2ujCo,5650 +cryptography/hazmat/primitives/padding.py,sha256=QT-U-NvV2eQGO1wVPbDiNGNSc9keRDS-ig5cQOrLz0E,1865 +cryptography/hazmat/primitives/poly1305.py,sha256=P5EPQV-RB_FJPahpg01u0Ts4S_PnAmsroxIGXbGeRRo,355 +cryptography/hazmat/primitives/serialization/__init__.py,sha256=Q7uTgDlt7n3WfsMT6jYwutC6DIg_7SEeoAm1GHZ5B5E,1705 +cryptography/hazmat/primitives/serialization/__pycache__/__init__.cpython-311.pyc,, +cryptography/hazmat/primitives/serialization/__pycache__/base.cpython-311.pyc,, +cryptography/hazmat/primitives/serialization/__pycache__/pkcs12.cpython-311.pyc,, +cryptography/hazmat/primitives/serialization/__pycache__/pkcs7.cpython-311.pyc,, +cryptography/hazmat/primitives/serialization/__pycache__/ssh.cpython-311.pyc,, +cryptography/hazmat/primitives/serialization/base.py,sha256=ikq5MJIwp_oUnjiaBco_PmQwOTYuGi-XkYUYHKy8Vo0,615 +cryptography/hazmat/primitives/serialization/pkcs12.py,sha256=mS9cFNG4afzvseoc5e1MWoY2VskfL8N8Y_OFjl67luY,5104 +cryptography/hazmat/primitives/serialization/pkcs7.py,sha256=5OR_Tkysxaprn4FegvJIfbep9rJ9wok6FLWvWwQ5-Mg,13943 +cryptography/hazmat/primitives/serialization/ssh.py,sha256=hPV5obFznz0QhFfXFPOeQ8y6MsurA0xVMQiLnLESEs8,53700 +cryptography/hazmat/primitives/twofactor/__init__.py,sha256=tmMZGB-g4IU1r7lIFqASU019zr0uPp_wEBYcwdDCKCA,258 +cryptography/hazmat/primitives/twofactor/__pycache__/__init__.cpython-311.pyc,, +cryptography/hazmat/primitives/twofactor/__pycache__/hotp.cpython-311.pyc,, +cryptography/hazmat/primitives/twofactor/__pycache__/totp.cpython-311.pyc,, +cryptography/hazmat/primitives/twofactor/hotp.py,sha256=ivZo5BrcCGWLsqql4nZV0XXCjyGPi_iHfDFltGlOJwk,3256 +cryptography/hazmat/primitives/twofactor/totp.py,sha256=m5LPpRL00kp4zY8gTjr55Hfz9aMlPS53kHmVkSQCmdY,1652 +cryptography/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +cryptography/utils.py,sha256=bZAjFC5KVpfmF29qS_18vvpW3mKxmdiRALcusHhTTkg,4301 +cryptography/x509/__init__.py,sha256=xloN0swseNx-m2WFZmCA17gOoxQWqeU82UVjEdJBePQ,8257 +cryptography/x509/__pycache__/__init__.cpython-311.pyc,, +cryptography/x509/__pycache__/base.cpython-311.pyc,, +cryptography/x509/__pycache__/certificate_transparency.cpython-311.pyc,, +cryptography/x509/__pycache__/extensions.cpython-311.pyc,, +cryptography/x509/__pycache__/general_name.cpython-311.pyc,, +cryptography/x509/__pycache__/name.cpython-311.pyc,, +cryptography/x509/__pycache__/ocsp.cpython-311.pyc,, +cryptography/x509/__pycache__/oid.cpython-311.pyc,, +cryptography/x509/__pycache__/verification.cpython-311.pyc,, +cryptography/x509/base.py,sha256=OrmTw3y8B6AE_nGXQPN8x9kq-d7rDWeH13gCq6T6D6U,27997 +cryptography/x509/certificate_transparency.py,sha256=JqoOIDhlwInrYMFW6IFn77WJ0viF-PB_rlZV3vs9MYc,797 +cryptography/x509/extensions.py,sha256=QxYrqR6SF1qzR9ZraP8wDiIczlEVlAFuwDRVcltB6Tk,77724 +cryptography/x509/general_name.py,sha256=sP_rV11Qlpsk4x3XXGJY_Mv0Q_s9dtjeLckHsjpLQoQ,7836 +cryptography/x509/name.py,sha256=ty0_xf0LnHwZAdEf-d8FLO1K4hGqx_7DsD3CHwoLJiY,15101 +cryptography/x509/ocsp.py,sha256=Yey6NdFV1MPjop24Mj_VenjEpg3kUaMopSWOK0AbeBs,12699 +cryptography/x509/oid.py,sha256=BUzgXXGVWilkBkdKPTm9R4qElE9gAGHgdYPMZAp7PJo,931 +cryptography/x509/verification.py,sha256=gR2C2c-XZQtblZhT5T5vjSKOtCb74ef2alPVmEcwFlM,958 diff --git a/dist/HandoverSystem/_internal/cryptography-46.0.3.dist-info/WHEEL b/dist/HandoverSystem/_internal/cryptography-46.0.3.dist-info/WHEEL new file mode 100644 index 0000000..dcfb13d --- /dev/null +++ b/dist/HandoverSystem/_internal/cryptography-46.0.3.dist-info/WHEEL @@ -0,0 +1,4 @@ +Wheel-Version: 1.0 +Generator: maturin (1.9.4) +Root-Is-Purelib: false +Tag: cp311-abi3-win_amd64 diff --git a/dist/HandoverSystem/_internal/cryptography-46.0.3.dist-info/licenses/LICENSE b/dist/HandoverSystem/_internal/cryptography-46.0.3.dist-info/licenses/LICENSE new file mode 100644 index 0000000..b11f379 --- /dev/null +++ b/dist/HandoverSystem/_internal/cryptography-46.0.3.dist-info/licenses/LICENSE @@ -0,0 +1,3 @@ +This software is made available under the terms of *either* of the licenses +found in LICENSE.APACHE or LICENSE.BSD. Contributions to cryptography are made +under the terms of *both* these licenses. diff --git a/dist/HandoverSystem/_internal/cryptography-46.0.3.dist-info/licenses/LICENSE.APACHE b/dist/HandoverSystem/_internal/cryptography-46.0.3.dist-info/licenses/LICENSE.APACHE new file mode 100644 index 0000000..62589ed --- /dev/null +++ b/dist/HandoverSystem/_internal/cryptography-46.0.3.dist-info/licenses/LICENSE.APACHE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/dist/HandoverSystem/_internal/cryptography-46.0.3.dist-info/licenses/LICENSE.BSD b/dist/HandoverSystem/_internal/cryptography-46.0.3.dist-info/licenses/LICENSE.BSD new file mode 100644 index 0000000..ec1a29d --- /dev/null +++ b/dist/HandoverSystem/_internal/cryptography-46.0.3.dist-info/licenses/LICENSE.BSD @@ -0,0 +1,27 @@ +Copyright (c) Individual contributors. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + 3. Neither the name of PyCA Cryptography nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/dist/HandoverSystem/_internal/cryptography/hazmat/bindings/_rust.pyd b/dist/HandoverSystem/_internal/cryptography/hazmat/bindings/_rust.pyd new file mode 100644 index 0000000..5c93835 Binary files /dev/null and b/dist/HandoverSystem/_internal/cryptography/hazmat/bindings/_rust.pyd differ diff --git a/dist/HandoverSystem/_internal/curl_cffi-0.13.0.dist-info/INSTALLER b/dist/HandoverSystem/_internal/curl_cffi-0.13.0.dist-info/INSTALLER new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/dist/HandoverSystem/_internal/curl_cffi-0.13.0.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/dist/HandoverSystem/_internal/curl_cffi-0.13.0.dist-info/METADATA b/dist/HandoverSystem/_internal/curl_cffi-0.13.0.dist-info/METADATA new file mode 100644 index 0000000..2f9128e --- /dev/null +++ b/dist/HandoverSystem/_internal/curl_cffi-0.13.0.dist-info/METADATA @@ -0,0 +1,317 @@ +Metadata-Version: 2.4 +Name: curl_cffi +Version: 0.13.0 +Summary: libcurl ffi bindings for Python, with impersonation support. +Author-email: lexiforest +License: MIT License +Project-URL: repository, https://github.com/lexiforest/curl_cffi +Classifier: Development Status :: 4 - Beta +Classifier: Intended Audience :: Developers +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3.9 +Classifier: Programming Language :: Python :: 3.10 +Classifier: Programming Language :: Python :: 3.11 +Classifier: Programming Language :: Python :: 3.12 +Classifier: Programming Language :: Python :: 3.13 +Requires-Python: >=3.9 +Description-Content-Type: text/markdown +License-File: LICENSE +Requires-Dist: cffi>=1.12.0 +Requires-Dist: certifi>=2024.2.2 +Provides-Extra: extra +Requires-Dist: readability-lxml>=0.8.1; extra == "extra" +Requires-Dist: markdownify>=1.1.0; extra == "extra" +Requires-Dist: lxml_html_clean; extra == "extra" +Provides-Extra: dev +Requires-Dist: charset_normalizer<4.0,>=3.3.2; extra == "dev" +Requires-Dist: coverage<7.0,>=6.4.1; extra == "dev" +Requires-Dist: cryptography<43.0,>=42.0.5; extra == "dev" +Requires-Dist: httpx==0.23.1; extra == "dev" +Requires-Dist: mypy<2.0,>=1.9.0; extra == "dev" +Requires-Dist: pytest<9.0,>=8.1.1; extra == "dev" +Requires-Dist: pytest-asyncio<1.0,>=0.23.6; extra == "dev" +Requires-Dist: pytest-trio<1.0,>=0.8.0; extra == "dev" +Requires-Dist: ruff<1.0,>=0.3.5; extra == "dev" +Requires-Dist: trio<1.0,>=0.25.0; extra == "dev" +Requires-Dist: trustme<2.0,>=1.1.0; extra == "dev" +Requires-Dist: uvicorn<1.0,>=0.29.0; extra == "dev" +Requires-Dist: websockets<13.0,>=12.0; extra == "dev" +Requires-Dist: typing_extensions; extra == "dev" +Provides-Extra: build +Requires-Dist: cibuildwheel; extra == "build" +Requires-Dist: wheel; extra == "build" +Provides-Extra: test +Requires-Dist: charset_normalizer<4.0,>=3.3.2; extra == "test" +Requires-Dist: cryptography<43.0,>=42.0.5; extra == "test" +Requires-Dist: fastapi<1.0,==0.110.0; extra == "test" +Requires-Dist: httpx==0.23.1; extra == "test" +Requires-Dist: proxy.py<3.0,>=2.4.3; extra == "test" +Requires-Dist: pytest<9.0,>=8.1.1; extra == "test" +Requires-Dist: pytest-asyncio<1.0,>=0.23.6; extra == "test" +Requires-Dist: pytest-trio<1.0,>=0.8.0; extra == "test" +Requires-Dist: python-multipart<1.0,>=0.0.9; extra == "test" +Requires-Dist: trio<1.0,>=0.25.0; extra == "test" +Requires-Dist: trustme<2.0,>=1.1.0; extra == "test" +Requires-Dist: uvicorn<1.0,>=0.29.0; extra == "test" +Requires-Dist: websockets<13.0,>=12.0; extra == "test" +Requires-Dist: typing_extensions; extra == "test" +Dynamic: license-file + +# curl_cffi + +![PyPI - Downloads](https://img.shields.io/pypi/dm/curl-cffi) +![PyPI - Python Version](https://img.shields.io/pypi/pyversions/curl_cffi) +[![PyPI version](https://badge.fury.io/py/curl-cffi.svg)](https://badge.fury.io/py/curl-cffi) +[![Generic badge](https://img.shields.io/badge/Telegram%20Group-join-blue?logo=telegram)](https://t.me/+lL9n33eZp480MGM1) +[![Generic badge](https://img.shields.io/badge/Discord-join-purple?logo=blue)](https://discord.gg/kJqMHHgdn2) + +[Documentation](https://curl-cffi.readthedocs.io) + +Python binding for [curl-impersonate fork](https://github.com/lexiforest/curl-impersonate) +via [cffi](https://cffi.readthedocs.io/en/latest/). For commercial support, visit [impersonate.pro](https://impersonate.pro). + +`curl_cffi` is the most popular Python binding for `curl`. Unlike other pure +python http clients like `httpx` or `requests`, `curl_cffi` can impersonate +browsers' TLS/JA3 and HTTP/2 fingerprints. If you are blocked by some +website for no obvious reason, you can give `curl_cffi` a try. + +Python 3.9 is the minimum supported version since v0.10. + +## Sponsors + +Maintenance of this project is made possible by all the contributors and sponsors. If you'd like to sponsor this project and have your avatar or company logo appear below click here. 💖 + +------ + +### Bypass Cloudflare with API + +Yes Captcha! + +Yescaptcha is a proxy service that bypasses Cloudflare and uses the API interface to +obtain verified cookies (e.g. `cf_clearance`). Click [here](https://yescaptcha.com/i/stfnIO) +to register: https://yescaptcha.com/i/stfnIO + +------ + +## Features + +- Supports JA3/TLS and http2 fingerprints impersonation, including recent browsers and custom fingerprints. +- Much faster than requests/httpx, on par with aiohttp/pycurl, see [benchmarks](https://github.com/lexiforest/curl_cffi/tree/main/benchmark). +- Mimics the requests API, no need to learn another one. +- Pre-compiled, so you don't have to compile on your machine. +- Supports `asyncio` with proxy rotation on each request. +- Supports http 2.0 & 3.0, which requests does not. +- Supports websocket. +- MIT licensed. + +||requests|aiohttp|httpx|pycurl|curl_cffi| +|---|---|---|---|---|---| +|http/2|❌|❌|✅|✅|✅| +|http/3|❌|❌|❌|☑️1|✅2| +|sync|✅|❌|✅|✅|✅| +|async|❌|✅|✅|❌|✅| +|websocket|❌|✅|❌|❌|✅| +|fingerprints|❌|❌|❌|❌|✅| +|speed|🐇|🐇🐇|🐇|🐇🐇|🐇🐇| + +Notes: +1. For pycurl, you need an http/3 enabled libcurl to make it work, while curl_cffi packages libcurl-impersonate inside Python wheels. +2. Since v0.11.4. + +## Install + + pip install curl_cffi --upgrade + +This should work on Linux, macOS and Windows out of the box. +If it does not work on you platform, you may need to compile and install `curl-impersonate` +first and set some environment variables like `LD_LIBRARY_PATH`. + +To install beta releases: + + pip install curl_cffi --upgrade --pre + +To install unstable version from GitHub: + + git clone https://github.com/lexiforest/curl_cffi/ + cd curl_cffi + make preprocess + pip install . + +On macOS, you may need to install the following dependencies: + + brew install zstd nghttp2 + +## Usage + +`curl_cffi` comes with a low-level `curl` API and a high-level `requests`-like API. + +### requests-like + + +```python +import curl_cffi + +# Notice the impersonate parameter +r = curl_cffi.get("https://tls.browserleaks.com/json", impersonate="chrome") + +print(r.json()) +# output: {..., "ja3n_hash": "aa56c057ad164ec4fdcb7a5a283be9fc", ...} +# the js3n fingerprint should be the same as target browser + +# To keep using the latest browser version as `curl_cffi` updates, +# simply set impersonate="chrome" without specifying a version. +# Other similar values are: "safari" and "safari_ios" +r = curl_cffi.get("https://tls.browserleaks.com/json", impersonate="chrome") + +# Randomly choose a browser version based on current market share in real world +# from: https://caniuse.com/usage-table +# NOTE: this is a pro feature. +r = curl_cffi.get("https://example.com", impersonate="realworld") + +# To pin a specific version, use version numbers together. +r = curl_cffi.get("https://tls.browserleaks.com/json", impersonate="chrome124") + +# To impersonate other than browsers, bring your own ja3/akamai strings +# See examples directory for details. +r = curl_cffi.get("https://tls.browserleaks.com/json", ja3=..., akamai=...) + +# http/socks proxies are supported +proxies = {"https": "http://localhost:3128"} +r = curl_cffi.get("https://tls.browserleaks.com/json", impersonate="chrome", proxies=proxies) + +proxies = {"https": "socks://localhost:3128"} +r = curl_cffi.get("https://tls.browserleaks.com/json", impersonate="chrome", proxies=proxies) +``` + +### Sessions + +```python +s = curl_cffi.Session() + +# httpbin is a http test website, this endpoint makes the server set cookies +s.get("https://httpbin.org/cookies/set/foo/bar") +print(s.cookies) +# ]> + +# retrieve cookies again to verify +r = s.get("https://httpbin.org/cookies") +print(r.json()) +# {'cookies': {'foo': 'bar'}} +``` + +### Supported impersonate browsers + +`curl_cffi` supports the same browser versions as supported by my [fork](https://github.com/lexiforest/curl-impersonate) of [curl-impersonate](https://github.com/lwthiker/curl-impersonate): + +Open source version of curl_cffi includes versions whose fingerprints differ from previous versions. +If you see a version, e.g. `chrome135`, were skipped, you can simply impersonate it with your own headers and the previous version. + +If you don't want to look up the headers etc, by yourself, consider buying commercial support from [impersonate.pro](https://impersonate.pro), +we have comprehensive browser fingerprints database for almost all the browser versions on various platforms. + +If you are trying to impersonate a target other than a browser, use `ja3=...` and `akamai=...` +to specify your own customized fingerprints. See the [docs on impersonation](https://curl-cffi.readthedocs.io/en/latest/impersonate.html) for details. + +|Browser|Open Source| Pro version| +|---|---|---| +|Chrome|chrome99, chrome100, chrome101, chrome104, chrome107, chrome110, chrome116[1], chrome119[1], chrome120[1], chrome123[3], chrome124[3], chrome131[4], chrome133a[5][6], chrome136[6]|chrome132, chrome134, chrome135| +|Chrome Android| chrome99_android, chrome131_android [4]|chrome132_android, chrome133_android, chrome134_android, chrome135_android| +|Chrome iOS|N/A|coming soon| +|Safari [7]|safari153 [2], safari155 [2], safari170 [1], safari180 [4], safari184 [6], safari260 [8]|coming soon| +|Safari iOS [7]| safari172_ios[1], safari180_ios[4], safari184_ios [6], safari260_ios [8]|coming soon| +|Firefox|firefox133[5], firefox135[7]|coming soon| +|Firefox Android|N/A|firefox135_android| +|Tor|tor145 [7]|coming soon| +|Edge|edge99, edge101|edge133, edge135| +|Opera|N/A|coming soon| +|Brave|N/A|coming soon| + + +Notes: +1. Added in version `0.6.0`. +2. Fixed in version `0.6.0`, previous http2 fingerprints were [not correct](https://github.com/lwthiker/curl-impersonate/issues/215). +3. Added in version `0.7.0`. +4. Added in version `0.8.0`. +5. Added in version `0.9.0`. +6. The version postfix `-a`(e.g. `chrome133a`) means that this is an alternative version, i.e. the fingerprint has not been officially updated by browser, but has been observed because of A/B testing. +5. Added in version `0.10.0`. +6. Added in version `0.11.0`. +7. Since `0.11.0`, the format `safari184_ios` is preferred over `safari18_4_ios`, both are supported, but the latter is quite confusing and hard to parse. +8. Added in `0.12.0`. + +### Asyncio + +```python +from curl_cffi import AsyncSession + +async with AsyncSession() as s: + r = await s.get("https://example.com") +``` + +More concurrency: + +```python +import asyncio +from curl_cffi import AsyncSession + +urls = [ + "https://google.com/", + "https://facebook.com/", + "https://twitter.com/", +] + +async with AsyncSession() as s: + tasks = [] + for url in urls: + task = s.get(url) + tasks.append(task) + results = await asyncio.gather(*tasks) +``` + +For low-level APIs, Scrapy integration and other advanced topics, see the +[docs](https://curl-cffi.readthedocs.io) for more details. + + +### WebSockets + +```python +from curl_cffi import WebSocket + +def on_message(ws: WebSocket, message: str | bytes): + print(message) + +ws = WebSocket(on_message=on_message) +ws.run_forever("wss://api.gemini.com/v1/marketdata/BTCUSD") +``` + +### Asyncio WebSockets + +```python +import asyncio +from curl_cffi import AsyncSession + +async with AsyncSession() as s: + ws = await s.ws_connect("wss://echo.websocket.org") + await asyncio.gather(*[ws.send_str("Hello, World!") for _ in range(10)]) + async for message in ws: + print(message) +``` + +## Ecosystem + +- Integrating with Scrapy: [divtiply/scrapy-curl-cffi](https://github.com/divtiply/scrapy-curl-cffi), [jxlil/scrapy-impersonate](https://github.com/jxlil/scrapy-impersonate) and [tieyongjie/scrapy-fingerprint](https://github.com/tieyongjie/scrapy-fingerprint). +- Integrating with [requests](https://github.com/el1s7/curl-adapter), [httpx](https://github.com/vgavro/httpx-curl-cffi) as adapter. +- Integrating with captcha resolvers: [CapSolver](https://docs.capsolver.com/en/api/), [YesCaptcha](https://yescaptcha.atlassian.net/wiki/spaces/YESCAPTCHA/overview). Please see the head area for promo code and link. + +## Acknowledgement + +- Originally forked from [multippt/python_curl_cffi](https://github.com/multippt/python_curl_cffi), which is under the MIT license. +- Headers/Cookies files are copied from [httpx](https://github.com/encode/httpx/blob/master/httpx/_models.py), which is under the BSD license. +- Asyncio support is inspired by Tornado's curl http client. +- The synchronous WebSocket API is inspired by [websocket_client](https://github.com/websocket-client/websocket-client). +- The asynchronous WebSocket API is inspired by [aiohttp](https://github.com/aio-libs/aiohttp). + +## Contributing + +When submitting an PR, please use a different branch other than `main` and check the +"Allow edits by maintainers" box, so I can update your PR with lint or style fixes. Thanks! diff --git a/dist/HandoverSystem/_internal/curl_cffi-0.13.0.dist-info/RECORD b/dist/HandoverSystem/_internal/curl_cffi-0.13.0.dist-info/RECORD new file mode 100644 index 0000000..e6c5ad1 --- /dev/null +++ b/dist/HandoverSystem/_internal/curl_cffi-0.13.0.dist-info/RECORD @@ -0,0 +1,43 @@ +curl_cffi-0.13.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +curl_cffi-0.13.0.dist-info/METADATA,sha256=wTFhgbnWNcWbLBA9UyMax9o2Jzac-Sugkw_JBdyECuE,13741 +curl_cffi-0.13.0.dist-info/RECORD,, +curl_cffi-0.13.0.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +curl_cffi-0.13.0.dist-info/WHEEL,sha256=DbN7S3h4YQA-y-B21gLEqncqJu4AuNAIA-Y5RA5Bkg0,99 +curl_cffi-0.13.0.dist-info/licenses/LICENSE,sha256=R-bOlsAhcHWMFhZOZvkgYg22FFI9ZC66UAC6DHqivm4,1129 +curl_cffi-0.13.0.dist-info/top_level.txt,sha256=b51YB50I_vu6XAbSERmqtgaYciYADCA_baVoZ_T5Lzs,10 +curl_cffi/__init__.py,sha256=pT5uiheqD3QgeDHaT-IElwahx71LU6Rx56ezLPEoefE,1785 +curl_cffi/__pycache__/__init__.cpython-311.pyc,, +curl_cffi/__pycache__/__version__.cpython-311.pyc,, +curl_cffi/__pycache__/_asyncio_selector.cpython-311.pyc,, +curl_cffi/__pycache__/aio.cpython-311.pyc,, +curl_cffi/__pycache__/const.cpython-311.pyc,, +curl_cffi/__pycache__/curl.cpython-311.pyc,, +curl_cffi/__pycache__/utils.cpython-311.pyc,, +curl_cffi/__version__.py,sha256=uSskV7xKQTx5kczBu4GmfNf08bLFBPAbDDdLkpnSkWU,237 +curl_cffi/_asyncio_selector.py,sha256=XHNkdHeWDsPvLvSpg1wpL4gU3PgYVTV96o95vKBe80w,13020 +curl_cffi/_wrapper.pyd,sha256=89_MLozQfkLOWYpXefBfzwyA5hy__lskik69SKMpr0E,3197952 +curl_cffi/aio.py,sha256=LJBGndBNwcZZrv7B8UXoWdU4La1jRI9-VEYp3UqjhPM,12268 +curl_cffi/const.py,sha256=tfznnSHTbNKOxOCZc90BdnlbfXv54A5VDB-QzgmAWBY,18639 +curl_cffi/curl.py,sha256=NCvnuJ8kVUB7cy-JlXd80CQKtAQi4ypvGSnGrUYUmyI,21759 +curl_cffi/py.typed,sha256=dcrsqJrcYfTX-ckLFJMTaj6mD8aDe2u0tkQG-ZYxnEg,26 +curl_cffi/requests/__init__.py,sha256=IW6mC3h3nCZcRTtJXKHBHEAVs4Bft5cIdIn2YihqAMk,6112 +curl_cffi/requests/__pycache__/__init__.cpython-311.pyc,, +curl_cffi/requests/__pycache__/cookies.cpython-311.pyc,, +curl_cffi/requests/__pycache__/errors.cpython-311.pyc,, +curl_cffi/requests/__pycache__/exceptions.cpython-311.pyc,, +curl_cffi/requests/__pycache__/headers.cpython-311.pyc,, +curl_cffi/requests/__pycache__/impersonate.cpython-311.pyc,, +curl_cffi/requests/__pycache__/models.cpython-311.pyc,, +curl_cffi/requests/__pycache__/session.cpython-311.pyc,, +curl_cffi/requests/__pycache__/utils.cpython-311.pyc,, +curl_cffi/requests/__pycache__/websockets.cpython-311.pyc,, +curl_cffi/requests/cookies.py,sha256=Ba2o7qa0PaXYKP5w7rgAhL-aTLC6rO2PmQLpzRMyOSA,12231 +curl_cffi/requests/errors.py,sha256=KoIg1lYwM8xnnfxUv8gRoFh3roPH16AZ_R93CyUAtOg,257 +curl_cffi/requests/exceptions.py,sha256=LsbPSHFkZzw9dOosMOPI32r6HinOMZIMsnWS7Dn-6Rw,6414 +curl_cffi/requests/headers.py,sha256=cfhxX8H1ekGccQbvmFfbA3YaGV3CB16OHFDNJSqyjvQ,11843 +curl_cffi/requests/impersonate.py,sha256=n7FG-15gnVkmBuWb-qGy1AuMZpB7snxx9k79damtFX4,13209 +curl_cffi/requests/models.py,sha256=S-5RVWpHKiss_NJsA8tuTnZ78hRHrzVMb4J0LD-7GGM,10673 +curl_cffi/requests/session.py,sha256=BrKCxCsCWFdJlb1A6t0Eojec5ujeAC4w4PFHR7dPoQs,43764 +curl_cffi/requests/utils.py,sha256=l2RBz3j2TVeeCzo11KjdShqlA_uGpeXSGjxnqQFq-pg,25429 +curl_cffi/requests/websockets.py,sha256=T5iazYB9G7nE5qULJQm9WuXaoW_gc7cdgEQPc7eCNGc,29435 +curl_cffi/utils.py,sha256=qAVC37BHDa_QNv23gp2DyHX8fnNbWuCjDyL5SOkuzbw,323 diff --git a/dist/HandoverSystem/_internal/curl_cffi-0.13.0.dist-info/REQUESTED b/dist/HandoverSystem/_internal/curl_cffi-0.13.0.dist-info/REQUESTED new file mode 100644 index 0000000..e69de29 diff --git a/dist/HandoverSystem/_internal/curl_cffi-0.13.0.dist-info/WHEEL b/dist/HandoverSystem/_internal/curl_cffi-0.13.0.dist-info/WHEEL new file mode 100644 index 0000000..8640892 --- /dev/null +++ b/dist/HandoverSystem/_internal/curl_cffi-0.13.0.dist-info/WHEEL @@ -0,0 +1,5 @@ +Wheel-Version: 1.0 +Generator: setuptools (80.9.0) +Root-Is-Purelib: false +Tag: cp39-abi3-win_amd64 + diff --git a/dist/HandoverSystem/_internal/curl_cffi-0.13.0.dist-info/licenses/LICENSE b/dist/HandoverSystem/_internal/curl_cffi-0.13.0.dist-info/licenses/LICENSE new file mode 100644 index 0000000..f11cc44 --- /dev/null +++ b/dist/HandoverSystem/_internal/curl_cffi-0.13.0.dist-info/licenses/LICENSE @@ -0,0 +1,23 @@ +MIT License + + +Copyright (c) 2018 multippt +Copyright (c) 2022 curl_cffi developers + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/dist/HandoverSystem/_internal/curl_cffi-0.13.0.dist-info/top_level.txt b/dist/HandoverSystem/_internal/curl_cffi-0.13.0.dist-info/top_level.txt new file mode 100644 index 0000000..ddbee0c --- /dev/null +++ b/dist/HandoverSystem/_internal/curl_cffi-0.13.0.dist-info/top_level.txt @@ -0,0 +1 @@ +curl_cffi diff --git a/dist/HandoverSystem/_internal/curl_cffi/_wrapper.pyd b/dist/HandoverSystem/_internal/curl_cffi/_wrapper.pyd new file mode 100644 index 0000000..c3b8505 Binary files /dev/null and b/dist/HandoverSystem/_internal/curl_cffi/_wrapper.pyd differ diff --git a/dist/HandoverSystem/_internal/data/handover.db b/dist/HandoverSystem/_internal/data/handover.db new file mode 100644 index 0000000..42a89ce Binary files /dev/null and b/dist/HandoverSystem/_internal/data/handover.db differ diff --git a/dist/HandoverSystem/_internal/data/settings.db b/dist/HandoverSystem/_internal/data/settings.db new file mode 100644 index 0000000..45fe7b6 Binary files /dev/null and b/dist/HandoverSystem/_internal/data/settings.db differ diff --git a/dist/HandoverSystem/_internal/data/weather_debug.html b/dist/HandoverSystem/_internal/data/weather_debug.html new file mode 100644 index 0000000..9560f83 --- /dev/null +++ b/dist/HandoverSystem/_internal/data/weather_debug.html @@ -0,0 +1,3501 @@ + + + + + +
+

일별 예보

+
+
    +
  • 날짜
  • +
  • 시각
  • +
  • 날씨
  • +
  • 기온
  • +
  • 강수확률
  • +
+
+
+ + + + + + +
+
+

18일(일)오늘

+ +
+ + +
오전
+ +
맑음
+ + +
+
오후
+ +
맑음
+ + +
+
+
최저 : 4℃
+
최고 : 14℃
+
+
오전 강수확률-
+
오후 강수확률0%
+ + + +
+
+
+ + + + + + + +
+
+

19일(월)내일

+ +
+ + +
오전
+ +
구름많음
+ + +
+
오후
+ +
흐림
+ + +
+
+
최저 : 5℃
+
최고 : 10℃
+
+
오전 강수확률10%
+
오후 강수확률30%
+ + + +
+
+
+ + + + + + + +
+
+

20일(화)모레

+ +
+ + +
오전
+ +
흐림
+ + +
+
오후
+ +
맑음
+ + +
+
+
최저 : -3℃
+
최고 : 6℃
+
+
오전 강수확률30%
+
오후 강수확률0%
+ + + +
+
+
+ + + + + + + +
+
+ +

21일(수)

+
+ + +
오전
+ +
구름많음
+ + +
+
오후
+ +
맑음
+ + +
+
+
최저 : -6℃
+
최고 : 1℃
+
+
오전 강수확률10%
+
오후 강수확률0%
+ + + +
+
+
+ + + + + + + +
+
+ +

22일(목)

+
+ + +
오전
+ +
맑음
+ + +
+
오후
+ +
맑음
+ + +
+
+
최저 : -7℃
+
최고 : 3℃
+
+
오전 강수확률10%
+
오후 강수확률10%
+ + + +
+
+
+ + + + + + + +
+
+ +

23일(금)

+
+ + +
오전
+ +
맑음
+ + +
+
오후
+ +
맑음
+ + +
+
+
최저 : -5℃
+
최고 : 5℃
+
+
오전 강수확률10%
+
오후 강수확률10%
+ + + +
+
+
+ + + + + + + +
+
+ +

24일(토)

+
+ + +
오전
+ +
맑음
+ + +
+
오후
+ +
맑음
+ + +
+
+
최저 : -3℃
+
최고 : 5℃
+
+
오전 강수확률10%
+
오후 강수확률10%
+ + + +
+
+
+ + + + + + + +
+
+ +

25일(일)

+
+ + +
오전
+ +
맑음
+ + +
+
오후
+ +
맑음
+ + +
+
+
최저 : -4℃
+
최고 : 5℃
+
+
오전 강수확률10%
+
오후 강수확률10%
+ + + +
+
+
+ + + + + + + +
+
+ +

26일(월)

+
+ + + +
종일
맑음
+
+
최저 : -3℃
+
최고 : 6℃
+
+
강수확률10%
+ + +
+
+
+ + + + + + + +
+
+ +

27일(화)

+
+ + + +
종일
맑음
+
+
최저 : 0℃
+
최고 : 7℃
+
+
강수확률10%
+ + +
+
+
+ + + + + + + +
+
+ +

28일(수)

+
+ + + +
종일
맑음
+
+
최저 : -1℃
+
최고 : 7℃
+
+
강수확률10%
+ + +
+
+
+ + +
+
+
+
+
+
+

시간별 예보

+ +
+
+ +
+ 닫기 +

시계열 표현

+ +
+
+ +
+

+ 예보요소별 시간안내(1시간 간격) * 시각: 01시 기준 예시 -날씨: 이전 1시간(00시~01시)의 날씨-기온: 01시 정시 기온-체감온도: 01시 정시 체감온도 -강수량: 이전 1시간(00시~01시) 강수량 * '~1'은 1mm미만(예상강수량<1)을 나타냄 -강수강도: 이전 1시간(00시~01시) 강수량 또는 신적설을 텍스트 기반 체감도 높은 정보로 표출 -강수확률: 이전 1시간(00시~01시) 강수확률 -바람: 01시 정시 바람(풍향 및 강도, 풍속) -습도: 01시 정시 습도

+ +
    +
  • 시각
  • +
  • 날씨
  • +
  • 기온
  • +
  • 강수량(mm)
  • +
  • 강수강도
  • +
  • 적설(cm)
  • +
  • 강수확률
  • +
  • 풍향
    풍속(m/s)
  • +
  • 습도
  • +
+
    +
  • 날짜
  • +
  • 날씨
  • +
  • 기온
  • +
  • 강수확률
  • +
+
+
+ + +
+

오늘

+
+
+ 18일(일) + + 최저-최고14℃ + +
    +
  • 시각
  • +
  • 날씨
  • +
  • 기온
    (체감)
  • +
  • 강수량
  • + +
  • 강수강도
  • +
  • 강수
    확률
  • +
  • 바람
  • +
  • 습도
  • +
  • 한파
    영향
  • +
+
+
+ + + + + +
    +
  • 시각: 09시
  • +
  • 날씨: 맑음
  • +
  • 기온(체감온도) 5℃(5℃)
  • +
  • 체감온도: 5℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률:  
  • + + +
  • + + + 바람: 북서풍 + + + + + 1m/s +
  • + + + +
  • 습도: 75%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 10시
  • +
  • 날씨: 맑음
  • +
  • 기온(체감온도) 8℃(8℃)
  • +
  • 체감온도: 8℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률:  
  • + + +
  • + + + 바람: 북동풍 + + + + + 1m/s +
  • + + + +
  • 습도: 65%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 11시
  • +
  • 날씨: 맑음
  • +
  • 기온(체감온도) 11℃(11℃)
  • +
  • 체감온도: 11℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률:  
  • + + +
  • + + + 바람: 동풍 + + + + + 1m/s +
  • + + + +
  • 습도: 60%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 12시
  • +
  • 날씨: 맑음
  • +
  • 기온(체감온도) 13℃(13℃)
  • +
  • 체감온도: 13℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률:  
  • + + +
  • + + + 바람: 동풍 + + + + + 1m/s +
  • + + + +
  • 습도: 50%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 13시
  • +
  • 날씨: 맑음
  • +
  • 기온(체감온도) 14℃(14℃)
  • +
  • 체감온도: 14℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률:  
  • + + +
  • + + + 바람: 동풍 + + + + + 2m/s +
  • + + + +
  • 습도: 45%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 14시
  • +
  • 날씨: 맑음
  • +
  • 기온(체감온도) 14℃(14℃)
  • +
  • 체감온도: 14℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률:  
  • + + +
  • + + + 바람: 동풍 + + + + + 1m/s +
  • + + + +
  • 습도: 50%
  • +
  • 한파영향:
  • +
+ + + + + + + +
    +
  • 시각: 15시
  • +
  • 날씨: 맑음
  • +
  • 기온(체감온도) 14℃(14℃)
  • +
  • 체감온도: 14℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 0%
  • + + +
  • + + + 바람: 동풍 + + + + + 1m/s +
  • + + + +
  • 습도: 50%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 16시
  • +
  • 날씨: 맑음
  • +
  • 기온(체감온도) 14℃(14℃)
  • +
  • 체감온도: 14℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 0%
  • + + +
  • + + + 바람: 동풍 + + + + + 1m/s +
  • + + + +
  • 습도: 50%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 17시
  • +
  • 날씨: 맑음
  • +
  • 기온(체감온도) 12℃(12℃)
  • +
  • 체감온도: 12℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 0%
  • + + +
  • + + + 바람: 동풍 + + + + + 1m/s +
  • + + + +
  • 습도: 55%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 18시
  • +
  • 날씨: 맑음
  • +
  • 기온(체감온도) 11℃(11℃)
  • +
  • 체감온도: 11℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 0%
  • + + + +
  • 바람: -
  • + + +
  • 습도: 65%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 19시
  • +
  • 날씨: 맑음
  • +
  • 기온(체감온도) 10℃(10℃)
  • +
  • 체감온도: 10℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 0%
  • + + +
  • + + + 바람: 북풍 + + + + + 1m/s +
  • + + + +
  • 습도: 75%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 20시
  • +
  • 날씨: 맑음
  • +
  • 기온(체감온도) 9℃(9℃)
  • +
  • 체감온도: 9℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 0%
  • + + +
  • + + + 바람: 북풍 + + + + + 1m/s +
  • + + + +
  • 습도: 75%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 21시
  • +
  • 날씨: 맑음
  • +
  • 기온(체감온도) 8℃(8℃)
  • +
  • 체감온도: 8℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 0%
  • + + +
  • + + + 바람: 북풍 + + + + + 1m/s +
  • + + + +
  • 습도: 75%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 22시
  • +
  • 날씨: 맑음
  • +
  • 기온(체감온도) 7℃(7℃)
  • +
  • 체감온도: 7℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 0%
  • + + +
  • + + + 바람: 북풍 + + + + + 1m/s +
  • + + + +
  • 습도: 80%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 23시
  • +
  • 날씨: 맑음
  • +
  • 기온(체감온도) 7℃(7℃)
  • +
  • 체감온도: 7℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 0%
  • + + +
  • + + + 바람: 북풍 + + + + + 1m/s +
  • + + + +
  • 습도: 80%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 0시
  • +
  • 날씨: 맑음
  • +
  • 기온(체감온도) 6℃(6℃)
  • +
  • 체감온도: 6℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 0%
  • + + + +
  • 바람: -
  • + + +
  • 습도: 80%
  • +
  • 한파영향:
  • +
+ + + +
+
+
+ + + +
+

내일

+
+
+ 19일(월) + + 최저5℃최고10℃ + +
    +
  • 시각
  • +
  • 날씨
  • +
  • 기온
    (체감)
  • +
  • 강수량
  • + +
  • 강수강도
  • +
  • 강수
    확률
  • +
  • 바람
  • +
  • 습도
  • +
  • 한파
    영향
  • +
+
+
+ + + + + + +
    +
  • 시각: 01시
  • +
  • 날씨: 맑음
  • +
  • 기온(체감온도) 6℃(6℃)
  • +
  • 체감온도: 6℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 0%
  • + + +
  • + + + 바람: 북풍 + + + + + 1m/s +
  • + + + +
  • 습도: 85%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 02시
  • +
  • 날씨: 맑음
  • +
  • 기온(체감온도) 6℃(6℃)
  • +
  • 체감온도: 6℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 0%
  • + + +
  • + + + 바람: 북풍 + + + + + 1m/s +
  • + + + +
  • 습도: 85%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 03시
  • +
  • 날씨: 맑음
  • +
  • 기온(체감온도) 5℃(5℃)
  • +
  • 체감온도: 5℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 0%
  • + + +
  • + + + 바람: 북풍 + + + + + 1m/s +
  • + + + +
  • 습도: 85%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 04시
  • +
  • 날씨: 맑음
  • +
  • 기온(체감온도) 5℃(5℃)
  • +
  • 체감온도: 5℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 0%
  • + + + +
  • 바람: -
  • + + +
  • 습도: 85%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 05시
  • +
  • 날씨: 맑음
  • +
  • 기온(체감온도) 5℃(5℃)
  • +
  • 체감온도: 5℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 0%
  • + + + +
  • 바람: -
  • + + +
  • 습도: 85%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 06시
  • +
  • 날씨: 맑음
  • +
  • 기온(체감온도) 5℃(5℃)
  • +
  • 체감온도: 5℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 0%
  • + + +
  • + + + 바람: 북풍 + + + + + 1m/s +
  • + + + +
  • 습도: 85%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 07시
  • +
  • 날씨: 맑음
  • +
  • 기온(체감온도) 5℃(5℃)
  • +
  • 체감온도: 5℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 0%
  • + + +
  • + + + 바람: 북풍 + + + + + 1m/s +
  • + + + +
  • 습도: 85%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 08시
  • +
  • 날씨: 흐림
  • +
  • 기온(체감온도) 5℃(5℃)
  • +
  • 체감온도: 5℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 30%
  • + + +
  • + + + 바람: 북서풍 + + + + + 1m/s +
  • + + + +
  • 습도: 70%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 09시
  • +
  • 날씨: 구름 많음
  • +
  • 기온(체감온도) 6℃(6℃)
  • +
  • 체감온도: 6℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 20%
  • + + +
  • + + + 바람: 북서풍 + + + + + 1m/s +
  • + + + +
  • 습도: 65%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 10시
  • +
  • 날씨: 흐림
  • +
  • 기온(체감온도) 8℃(8℃)
  • +
  • 체감온도: 8℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 30%
  • + + +
  • + + + 바람: 서풍 + + + + + 1m/s +
  • + + + +
  • 습도: 50%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 11시
  • +
  • 날씨: 구름 많음
  • +
  • 기온(체감온도) 10℃(10℃)
  • +
  • 체감온도: 10℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 20%
  • + + +
  • + + + 바람: 북서풍 + + + + + 1m/s +
  • + + + +
  • 습도: 50%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 12시
  • +
  • 날씨: 흐림
  • +
  • 기온(체감온도) 10℃(9℃)
  • +
  • 체감온도: 9℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 30%
  • + + +
  • + + + 바람: 북서풍 + + + + + 2m/s +
  • + + + +
  • 습도: 50%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 13시
  • +
  • 날씨: 구름 많음
  • +
  • 기온(체감온도) 10℃(9℃)
  • +
  • 체감온도: 9℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 20%
  • + + +
  • + + + 바람: 북서풍 + + + + + 2m/s +
  • + + + +
  • 습도: 50%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 14시
  • +
  • 날씨: 구름 많음
  • +
  • 기온(체감온도) 10℃(9℃)
  • +
  • 체감온도: 9℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 20%
  • + + +
  • + + + 바람: 북서풍 + + + + + 3m/s +
  • + + + +
  • 습도: 45%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 15시
  • +
  • 날씨: 흐림
  • +
  • 기온(체감온도) 10℃(9℃)
  • +
  • 체감온도: 9℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 30%
  • + + +
  • + + + 바람: 북서풍 + + + + + 3m/s +
  • + + + +
  • 습도: 40%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 16시
  • +
  • 날씨: 구름 많음
  • +
  • 기온(체감온도) 10℃(9℃)
  • +
  • 체감온도: 9℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 20%
  • + + +
  • + + + 바람: 북서풍 + + + + + 3m/s +
  • + + + +
  • 습도: 30%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 17시
  • +
  • 날씨: 흐림
  • +
  • 기온(체감온도) 8℃(6℃)
  • +
  • 체감온도: 6℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 30%
  • + + +
  • + + + 바람: 북서풍 + + + + + 3m/s +
  • + + + +
  • 습도: 30%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 18시
  • +
  • 날씨: 흐림
  • +
  • 기온(체감온도) 7℃(5℃)
  • +
  • 체감온도: 5℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 30%
  • + + +
  • + + + 바람: 북서풍 + + + + + 4m/s +
  • + + + +
  • 습도: 30%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 19시
  • +
  • 날씨: 흐림
  • +
  • 기온(체감온도) 5℃(2℃)
  • +
  • 체감온도: 2℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 30%
  • + + +
  • + + + 바람: 북서풍 + + + + + 4m/s +
  • + + + +
  • 습도: 25%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 20시
  • +
  • 날씨: 흐림
  • +
  • 기온(체감온도) 4℃(1℃)
  • +
  • 체감온도: 1℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 30%
  • + + +
  • + + + 바람: 북서풍 + + + + + 3m/s +
  • + + + +
  • 습도: 20%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 21시
  • +
  • 날씨: 흐림
  • +
  • 기온(체감온도) 3℃(0℃)
  • +
  • 체감온도: 0℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 30%
  • + + +
  • + + + 바람: 북서풍 + + + + + 4m/s +
  • + + + +
  • 습도: 20%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 22시
  • +
  • 날씨: 흐림
  • +
  • 기온(체감온도) 2℃(-2℃)
  • +
  • 체감온도: -2℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 30%
  • + + +
  • + + + 바람: 북서풍 + + + + 약간 강 + 5m/s +
  • + + + +
  • 습도: 15%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 23시
  • +
  • 날씨: 흐림
  • +
  • 기온(체감온도) 2℃(-2℃)
  • +
  • 체감온도: -2℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 30%
  • + + +
  • + + + 바람: 북서풍 + + + + 약간 강 + 5m/s +
  • + + + +
  • 습도: 20%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 0시
  • +
  • 날씨: 흐림
  • +
  • 기온(체감온도) 1℃(-3℃)
  • +
  • 체감온도: -3℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 30%
  • + + +
  • + + + 바람: 북서풍 + + + + 약간 강 + 4m/s +
  • + + + +
  • 습도: 20%
  • +
  • 한파영향:
  • +
+ + + +
+
+
+ + + +
+

모레

+
+
+ 20일(화) + + 최저-3℃최고6℃ + +
    +
  • 시각
  • +
  • 날씨
  • +
  • 기온
    (체감)
  • +
  • 강수량
  • + +
  • 강수강도
  • +
  • 강수
    확률
  • +
  • 바람
  • +
  • 습도
  • +
  • 한파
    영향
  • +
+
+
+ + + + + + +
    +
  • 시각: 01시
  • +
  • 날씨: 흐림
  • +
  • 기온(체감온도) 1℃(-3℃)
  • +
  • 체감온도: -3℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 30%
  • + + +
  • + + + 바람: 북서풍 + + + + + 3m/s +
  • + + + +
  • 습도: 20%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 02시
  • +
  • 날씨: 흐림
  • +
  • 기온(체감온도) 0℃(-5℃)
  • +
  • 체감온도: -5℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 30%
  • + + +
  • + + + 바람: 북서풍 + + + + 약간 강 + 4m/s +
  • + + + +
  • 습도: 20%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 03시
  • +
  • 날씨: 흐림
  • +
  • 기온(체감온도) 0℃(-4℃)
  • +
  • 체감온도: -4℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 30%
  • + + +
  • + + + 바람: 북서풍 + + + + 약간 강 + 4m/s +
  • + + + +
  • 습도: 20%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 04시
  • +
  • 날씨: 흐림
  • +
  • 기온(체감온도) -1℃(-5℃)
  • +
  • 체감온도: -5℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 30%
  • + + +
  • + + + 바람: 북서풍 + + + + + 3m/s +
  • + + + +
  • 습도: 20%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 05시
  • +
  • 날씨: 흐림
  • +
  • 기온(체감온도) -1℃(-5℃)
  • +
  • 체감온도: -5℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 30%
  • + + +
  • + + + 바람: 북서풍 + + + + + 4m/s +
  • + + + +
  • 습도: 20%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 06시
  • +
  • 날씨: 구름 많음
  • +
  • 기온(체감온도) -1℃(-5℃)
  • +
  • 체감온도: -5℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 20%
  • + + +
  • + + + 바람: 북서풍 + + + + + 3m/s +
  • + + + +
  • 습도: 20%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 07시
  • +
  • 날씨: 구름 많음
  • +
  • 기온(체감온도) -1℃(-5℃)
  • +
  • 체감온도: -5℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 20%
  • + + +
  • + + + 바람: 북서풍 + + + + + 3m/s +
  • + + + +
  • 습도: 25%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 08시
  • +
  • 날씨: 구름 많음
  • +
  • 기온(체감온도) -2℃(-6℃)
  • +
  • 체감온도: -6℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 20%
  • + + +
  • + + + 바람: 북서풍 + + + + + 3m/s +
  • + + + +
  • 습도: 40%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 09시
  • +
  • 날씨: 구름 많음
  • +
  • 기온(체감온도) -1℃(-5℃)
  • +
  • 체감온도: -5℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 20%
  • + + +
  • + + + 바람: 북서풍 + + + + + 3m/s +
  • + + + +
  • 습도: 40%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 10시
  • +
  • 날씨: 흐림
  • +
  • 기온(체감온도) 1℃(-3℃)
  • +
  • 체감온도: -3℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 30%
  • + + +
  • + + + 바람: 북서풍 + + + + + 4m/s +
  • + + + +
  • 습도: 35%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 11시
  • +
  • 날씨: 흐림
  • +
  • 기온(체감온도) 2℃(-2℃)
  • +
  • 체감온도: -2℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 30%
  • + + +
  • + + + 바람: 북서풍 + + + + + 4m/s +
  • + + + +
  • 습도: 35%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 12시
  • +
  • 날씨: 흐림
  • +
  • 기온(체감온도) 4℃(1℃)
  • +
  • 체감온도: 1℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 30%
  • + + +
  • + + + 바람: 북서풍 + + + + + 4m/s +
  • + + + +
  • 습도: 35%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 13시
  • +
  • 날씨: 구름 많음
  • +
  • 기온(체감온도) 5℃(2℃)
  • +
  • 체감온도: 2℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 20%
  • + + +
  • + + + 바람: 북서풍 + + + + + 3m/s +
  • + + + +
  • 습도: 35%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 14시
  • +
  • 날씨: 맑음
  • +
  • 기온(체감온도) 5℃(2℃)
  • +
  • 체감온도: 2℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 0%
  • + + +
  • + + + 바람: 북서풍 + + + + + 3m/s +
  • + + + +
  • 습도: 30%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 15시
  • +
  • 날씨: 맑음
  • +
  • 기온(체감온도) 5℃(3℃)
  • +
  • 체감온도: 3℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 0%
  • + + +
  • + + + 바람: 북서풍 + + + + + 3m/s +
  • + + + +
  • 습도: 25%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 16시
  • +
  • 날씨: 맑음
  • +
  • 기온(체감온도) 5℃(3℃)
  • +
  • 체감온도: 3℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 0%
  • + + +
  • + + + 바람: 북서풍 + + + + + 3m/s +
  • + + + +
  • 습도: 25%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 17시
  • +
  • 날씨: 맑음
  • +
  • 기온(체감온도) 3℃(1℃)
  • +
  • 체감온도: 1℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 0%
  • + + +
  • + + + 바람: 북서풍 + + + + + 2m/s +
  • + + + +
  • 습도: 15%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 18시
  • +
  • 날씨: 맑음
  • +
  • 기온(체감온도) 1℃(-1℃)
  • +
  • 체감온도: -1℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 0%
  • + + +
  • + + + 바람: 북서풍 + + + + + 2m/s +
  • + + + +
  • 습도: 15%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 19시
  • +
  • 날씨: 맑음
  • +
  • 기온(체감온도) 0℃(-3℃)
  • +
  • 체감온도: -3℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 0%
  • + + +
  • + + + 바람: 북서풍 + + + + + 2m/s +
  • + + + +
  • 습도: 15%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 20시
  • +
  • 날씨: 맑음
  • +
  • 기온(체감온도) 0℃(-3℃)
  • +
  • 체감온도: -3℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 0%
  • + + +
  • + + + 바람: 북서풍 + + + + + 2m/s +
  • + + + +
  • 습도: 15%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 21시
  • +
  • 날씨: 맑음
  • +
  • 기온(체감온도) -1℃(-5℃)
  • +
  • 체감온도: -5℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 0%
  • + + +
  • + + + 바람: 북서풍 + + + + + 3m/s +
  • + + + +
  • 습도: 15%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 22시
  • +
  • 날씨: 맑음
  • +
  • 기온(체감온도) -2℃(-6℃)
  • +
  • 체감온도: -6℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 0%
  • + + +
  • + + + 바람: 북서풍 + + + + + 3m/s +
  • + + + +
  • 습도: 20%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 23시
  • +
  • 날씨: 맑음
  • +
  • 기온(체감온도) -2℃(-6℃)
  • +
  • 체감온도: -6℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 0%
  • + + +
  • + + + 바람: 북서풍 + + + + + 3m/s +
  • + + + +
  • 습도: 20%
  • +
  • 한파영향:
  • +
+ + + + + + +
    +
  • 시각: 0시
  • +
  • 날씨: 맑음
  • +
  • 기온(체감온도) -3℃(-7℃)
  • +
  • 체감온도: -7℃
  • +
  • 강수량: -
  • +
  • + + + + + + - + + +
  • +
  • 강수확률: 0%
  • + + +
  • + + + 바람: 북서풍 + + + + + 3m/s +
  • + + + +
  • 습도: 20%
  • +
  • 한파영향:
  • +
+ + + +
+
+
+ + + + + + + + + + + + + + + + + + +
+
+
+
+
+
+
초단기 10분강수예측
+
+
+
+
+
+ +
+ 시계열예보안내 + 최근발표시각 +
+
+ 닫기 +
최근발표시각
+
초단기예보(현재부터 +6시간까지):
01.18.(일) 08:00
+
단기예보(초단기예보 이후 모레까지):
01.18.(일) 08:00
+
중기예보(단기예보 이후 10일까지):
01.18.(일) 06:00
+
+
+
+
+

대기질정보

+ +
+
+
+ 닫기 +
초미세먼지(㎛)
+

입자의 크기가 2.5㎛ 이하인 먼지

+
    +
  • 좋음
    (0~15)
  • +
  • 보통
    (16~35)
  • +
  • 나쁨
    (36~75)
  • +
  • 매우나쁨
    (76~)
  • +
+
+
+
+
+ 닫기 +
미세먼지(㎛)
+

입자의 크기가 10㎛ 이하인 먼지

+
    +
  • 좋음
    (0~30)
  • +
  • 보통
    (31~80)
  • +
  • 나쁨
    (81~150)
  • +
  • 매우나쁨
    (151~)
  • +
+
+
+
+
+ 닫기 +
오존(ppm)
+
    +
  • 좋음
    (0~0.03)
  • +
  • 보통
    (0.031~0.09)
  • +
  • 나쁨
    (0.091~0.15)
  • +
  • 매우나쁨
    (0.151~)
  • +
+
+
+
+
+ +
+

장림동측정소(도시대기) 01.18.(일) 08:00 기준

+

제공: 한국환경공단

+
+ diff --git a/dist/HandoverSystem/_internal/data/weather_timestamp.txt b/dist/HandoverSystem/_internal/data/weather_timestamp.txt new file mode 100644 index 0000000..18f188d --- /dev/null +++ b/dist/HandoverSystem/_internal/data/weather_timestamp.txt @@ -0,0 +1 @@ +2026-01-18T08:28:54.365554 \ No newline at end of file diff --git a/dist/HandoverSystem/_internal/database/__init__.py b/dist/HandoverSystem/_internal/database/__init__.py new file mode 100644 index 0000000..9b336c4 --- /dev/null +++ b/dist/HandoverSystem/_internal/database/__init__.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- +""" +Database 모듈 패키지 +데이터베이스 관련 기능을 제공하는 모듈들의 집합 + +이 패키지는 다음을 포함합니다: +- db_manager: 데이터베이스 연결 관리 +- models: 데이터 모델 정의 +- crud: CRUD 연산 +- migrations: 데이터베이스 마이그레이션 +- sync_manager: 원격 DB 동기화 (추후 구현) +""" + +from .db_manager import DatabaseManager +from .models import * +from .crud import CRUDManager + +__all__ = [ + 'DatabaseManager', + 'CRUDManager', +] + + diff --git a/dist/HandoverSystem/_internal/database/common_db_manager.py b/dist/HandoverSystem/_internal/database/common_db_manager.py new file mode 100644 index 0000000..78521a8 --- /dev/null +++ b/dist/HandoverSystem/_internal/database/common_db_manager.py @@ -0,0 +1,515 @@ +# -*- coding: utf-8 -*- +""" +공통 데이터베이스 관리 모듈 +변경이 거의 없는 공통 데이터(편성, 시각표, 고장코드, MMI코드, 시그널, 역명, 도면약어 등)를 관리합니다. +""" + +import sqlite3 +import threading +from pathlib import Path +from typing import Optional, List, Dict, Any +from contextlib import contextmanager + +from core.constants import DATA_DIR +from core.logger import get_logger +from core.exceptions import DatabaseConnectionError, DatabaseQueryError + +logger = get_logger(__name__) + +# 공통 데이터베이스 파일 경로 +COMMON_DB_FILE = DATA_DIR / "common_data.db" + + +# ============================================================================ +# 공통 데이터 테이블 SQL 스키마 +# ============================================================================ + +CREATE_COMMON_TABLES_SQL = """ +-- 전동차 편성 테이블 +CREATE TABLE IF NOT EXISTS train_formations ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + train_number TEXT UNIQUE NOT NULL, + is_new_train INTEGER DEFAULT 1, + manufacturer TEXT, + introduction_date DATE, + depot TEXT, + alias TEXT, + introduction_stage TEXT, + introduction_count INTEGER DEFAULT 0, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP +); + +-- 열차 다이아 시각표 테이블 +CREATE TABLE IF NOT EXISTS train_schedules ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + column_number TEXT NOT NULL, + station TEXT NOT NULL, + arrival_time TIME, + departure_time TIME, + direction TEXT NOT NULL DEFAULT 'up', + is_weekday INTEGER DEFAULT 1, + is_active INTEGER DEFAULT 1, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP, + UNIQUE(column_number, station, direction, is_weekday) +); + +-- 고장코드 테이블 +CREATE TABLE IF NOT EXISTS fault_codes ( + id TEXT PRIMARY KEY, + f_code TEXT NOT NULL, + f_code_num TEXT, + f_name TEXT NOT NULL, + car_type TEXT, + f_class TEXT, + fault_name TEXT, + grade TEXT, + device TEXT, + fault_detail TEXT, + fault_reaction TEXT, + fault_detection TEXT, + fault_clear TEXT, + fault_action TEXT, + fault_schematics TEXT, + car_id TEXT, + alias_name TEXT, + manufacturer TEXT, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP +); + +-- MMI 코드 테이블 +CREATE TABLE IF NOT EXISTS mmi_codes ( + id TEXT PRIMARY KEY, + code_name TEXT NOT NULL, + code_description TEXT, + data_type TEXT, + car_id TEXT, + alias_name TEXT, + manufacturer TEXT, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP +); + +-- 시그널 코드 테이블 +CREATE TABLE IF NOT EXISTS signals ( + id TEXT PRIMARY KEY, + sig_num TEXT NOT NULL, + signal_abbreviation TEXT NOT NULL, + signal_description TEXT, + status_value TEXT, + manufacturer TEXT, + classification TEXT, + original_data TEXT, + alias_name TEXT, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP +); + +-- 역명 테이블 +CREATE TABLE IF NOT EXISTS stations ( + id TEXT PRIMARY KEY, + line_number TEXT NOT NULL, + station_id TEXT NOT NULL, + station_name TEXT NOT NULL, + station_map TEXT, + is_underground INTEGER DEFAULT 0, + is_island INTEGER DEFAULT 0, + is_exchange INTEGER DEFAULT 0, + is_end INTEGER DEFAULT 0, + has_siding_track INTEGER DEFAULT 0, + has_signal_room INTEGER DEFAULT 0, + etc1 TEXT, + etc2 TEXT, + etc3 TEXT, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP, + UNIQUE(line_number, station_id) +); + +-- 도면약어 테이블 +CREATE TABLE IF NOT EXISTS drawer_abbreviations ( + id TEXT PRIMARY KEY, + abb TEXT NOT NULL, + classification TEXT, + related_drawings TEXT, + drawing_id TEXT, + manufacturer TEXT, + term TEXT, + pages TEXT, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP +); + +-- 인덱스 생성 +CREATE INDEX IF NOT EXISTS idx_fault_codes_f_code ON fault_codes(f_code); +CREATE INDEX IF NOT EXISTS idx_fault_codes_device ON fault_codes(device); +CREATE INDEX IF NOT EXISTS idx_mmi_codes_code_name ON mmi_codes(code_name); +CREATE INDEX IF NOT EXISTS idx_signals_sig_num ON signals(sig_num); +CREATE INDEX IF NOT EXISTS idx_signals_abbreviation ON signals(signal_abbreviation); +CREATE INDEX IF NOT EXISTS idx_stations_station_name ON stations(station_name); +CREATE INDEX IF NOT EXISTS idx_drawer_abbreviations_abb ON drawer_abbreviations(abb); +""" + + +# ============================================================================ +# 공통 데이터베이스 관리자 클래스 +# ============================================================================ + +class CommonDatabaseManager: + """ + 공통 데이터베이스 관리자 + + 변경이 거의 없는 공통 데이터를 관리하는 별도의 데이터베이스입니다. + """ + + _instance = None + _lock = threading.Lock() + _initialized = False + + def __new__(cls, db_path: Path = None): + if cls._instance is None: + with cls._lock: + if cls._instance is None: + cls._instance = super().__new__(cls) + cls._instance._initialized = False + return cls._instance + + def __init__(self, db_path: Path = None): + """공통 데이터베이스 관리자 초기화""" + if self._initialized: + return + + self.db_path = db_path or COMMON_DB_FILE + self._local = threading.local() + + # 데이터 디렉토리 생성 + DATA_DIR.mkdir(parents=True, exist_ok=True) + + # 데이터베이스 초기화 + self._initialize_database() + + self._initialized = True + logger.info(f"공통 데이터베이스 관리자 초기화 완료: {self.db_path}") + + def _initialize_database(self): + """데이터베이스 초기화 (테이블 생성)""" + try: + with self.get_connection() as conn: + conn.execute("PRAGMA foreign_keys = ON") + conn.executescript(CREATE_COMMON_TABLES_SQL) + conn.commit() + + logger.info("공통 데이터베이스 테이블 초기화 완료") + except Exception as e: + logger.error(f"공통 데이터베이스 초기화 실패: {e}") + raise DatabaseConnectionError(f"공통 데이터베이스 초기화 실패: {e}") + + @contextmanager + def get_connection(self): + """데이터베이스 연결 컨텍스트 매니저""" + if not hasattr(self._local, 'connection') or self._local.connection is None: + try: + self._local.connection = sqlite3.connect( + str(self.db_path), + check_same_thread=False, + timeout=30.0 + ) + self._local.connection.row_factory = sqlite3.Row + logger.debug(f"공통 데이터베이스 연결 생성: {self.db_path}") + except sqlite3.Error as e: + logger.error(f"공통 데이터베이스 연결 실패: {e}") + raise DatabaseConnectionError(f"공통 데이터베이스 연결 실패: {e}") + + try: + yield self._local.connection + except sqlite3.Error as e: + logger.error(f"공통 데이터베이스 쿼리 오류: {e}") + raise DatabaseQueryError(f"공통 데이터베이스 쿼리 오류: {e}") + finally: + # 연결은 스레드별로 유지하되, 필요시 닫을 수 있도록 + pass + + def execute(self, sql: str, params: tuple = ()) -> sqlite3.Cursor: + """SQL 실행""" + with self.get_connection() as conn: + return conn.execute(sql, params) + + def executemany(self, sql: str, params_list: List[tuple]) -> sqlite3.Cursor: + """여러 SQL 실행""" + with self.get_connection() as conn: + return conn.executemany(sql, params_list) + + def fetch_one(self, sql: str, params: tuple = ()) -> Optional[Dict[str, Any]]: + """단일 행 조회""" + with self.get_connection() as conn: + cursor = conn.execute(sql, params) + row = cursor.fetchone() + return dict(row) if row else None + + def fetch_all(self, sql: str, params: tuple = ()) -> List[Dict[str, Any]]: + """모든 행 조회""" + with self.get_connection() as conn: + cursor = conn.execute(sql, params) + return [dict(row) for row in cursor.fetchall()] + + def commit(self): + """커밋""" + with self.get_connection() as conn: + conn.commit() + + def load_data_from_sql_files(self, sql_dir: Path = None): + """SQL 파일에서 데이터 로드""" + from database.sql_loader import load_sql_file + + if sql_dir is None: + sql_dir = Path(__file__).parent.parent / "ori_data" + + if not sql_dir.exists(): + logger.warning(f"SQL 파일 디렉토리가 없습니다: {sql_dir}") + return + + # 각 SQL 파일 처리 + sql_files = { + "Fault_Code_Table_rows.sql": self._load_fault_codes, + "MMI_Code_rows.sql": self._load_mmi_codes, + "Signals_rows.sql": self._load_signals, + "Stations_rows.sql": self._load_stations, + "drawer_abbreviation_rows.sql": self._load_drawer_abbreviations, + } + + for filename, loader_func in sql_files.items(): + sql_file = sql_dir / filename + if sql_file.exists(): + try: + logger.info(f"데이터 로드 중: {filename}") + records = load_sql_file(sql_file) + if records: + loader_func(records) + logger.info(f"데이터 로드 완료: {filename} ({len(records)}개 레코드)") + else: + logger.warning(f"파싱된 레코드가 없습니다: {filename}") + except Exception as e: + logger.error(f"데이터 로드 실패 ({filename}): {e}", exc_info=True) + else: + logger.warning(f"SQL 파일을 찾을 수 없습니다: {sql_file}") + + def _load_fault_codes(self, records: List[Dict[str, Any]]): + """고장코드 데이터 삽입""" + if not records: + return + + insert_sql = """ + INSERT OR REPLACE INTO fault_codes + (id, f_code, f_code_num, f_name, car_type, f_class, fault_name, grade, device, + fault_detail, fault_reaction, fault_detection, fault_clear, fault_action, + fault_schematics, car_id, alias_name, manufacturer, created_at, updated_at) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) + """ + + params_list = [] + for record in records: + # datetime 문자열 파싱 + created_at = self._parse_datetime(record.get('created_at')) + updated_at = self._parse_datetime(record.get('updated_at')) + + params_list.append(( + record.get('id'), + record.get('f_code'), + record.get('f_code_num'), + record.get('f_name'), + record.get('car_type'), + record.get('f_class'), + record.get('fault_name'), + record.get('grade'), + record.get('device'), + record.get('fault_detail'), + record.get('fault_reaction'), + record.get('fault_detection'), + record.get('fault_clear'), + record.get('fault_action'), + record.get('fault_schematics'), + record.get('car_id'), + record.get('alias_name'), + record.get('manufacturer'), + created_at, + updated_at + )) + + self.executemany(insert_sql, params_list) + self.commit() + logger.info(f"고장코드 데이터 삽입 완료: {len(params_list)}개") + + def _load_mmi_codes(self, records: List[Dict[str, Any]]): + """MMI 코드 데이터 삽입""" + if not records: + return + + insert_sql = """ + INSERT OR REPLACE INTO mmi_codes + (id, code_name, code_description, data_type, car_id, alias_name, manufacturer, created_at, updated_at) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?) + """ + + params_list = [] + for record in records: + created_at = self._parse_datetime(record.get('created_at')) + updated_at = self._parse_datetime(record.get('updated_at')) + + params_list.append(( + record.get('id'), + record.get('code_name'), + record.get('code_description'), + record.get('data_type'), + record.get('car_id'), + record.get('alias_name'), + record.get('manufacturer'), + created_at, + updated_at + )) + + self.executemany(insert_sql, params_list) + self.commit() + logger.info(f"MMI 코드 데이터 삽입 완료: {len(params_list)}개") + + def _load_signals(self, records: List[Dict[str, Any]]): + """시그널 코드 데이터 삽입""" + if not records: + return + + insert_sql = """ + INSERT OR REPLACE INTO signals + (id, sig_num, signal_abbreviation, signal_description, status_value, + manufacturer, classification, original_data, alias_name, created_at, updated_at) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) + """ + + params_list = [] + for record in records: + created_at = self._parse_datetime(record.get('created_at')) + updated_at = self._parse_datetime(record.get('updated_at')) + + params_list.append(( + record.get('id'), + record.get('sig_num'), + record.get('signal_abbreviation'), + record.get('signal_description'), + record.get('status_value'), + record.get('manufacturer'), + record.get('classification'), + record.get('original_data'), + record.get('alias_name'), + created_at, + updated_at + )) + + self.executemany(insert_sql, params_list) + self.commit() + logger.info(f"시그널 코드 데이터 삽입 완료: {len(params_list)}개") + + def _load_stations(self, records: List[Dict[str, Any]]): + """역명 데이터 삽입""" + if not records: + return + + insert_sql = """ + INSERT OR REPLACE INTO stations + (id, line_number, station_id, station_name, station_map, + is_underground, is_island, is_exchange, is_end, + has_siding_track, has_signal_room, etc1, etc2, etc3, created_at, updated_at) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) + """ + + params_list = [] + for record in records: + created_at = self._parse_datetime(record.get('created_at')) + updated_at = self._parse_datetime(record.get('updated_at')) + + # 불리언 문자열을 정수로 변환 + is_underground = 1 if str(record.get('is_underground', 'false')).lower() == 'true' else 0 + is_island = 1 if str(record.get('is_island', 'false')).lower() == 'true' else 0 + is_exchange = 1 if str(record.get('is_exchange', 'false')).lower() == 'true' else 0 + is_end = 1 if str(record.get('is_end', 'false')).lower() == 'true' else 0 + has_siding_track = 1 if str(record.get('has_siding_track', 'false')).lower() == 'true' else 0 + has_signal_room = 1 if str(record.get('has_signal_room', 'false')).lower() == 'true' else 0 + + params_list.append(( + record.get('id'), + record.get('line_number'), + record.get('station_id'), + record.get('station_name'), + record.get('station_map'), + is_underground, + is_island, + is_exchange, + is_end, + has_siding_track, + has_signal_room, + record.get('etc1'), + record.get('etc2'), + record.get('etc3'), + created_at, + updated_at + )) + + self.executemany(insert_sql, params_list) + self.commit() + logger.info(f"역명 데이터 삽입 완료: {len(params_list)}개") + + def _load_drawer_abbreviations(self, records: List[Dict[str, Any]]): + """도면약어 데이터 삽입""" + if not records: + return + + insert_sql = """ + INSERT OR REPLACE INTO drawer_abbreviations + (id, abb, classification, related_drawings, drawing_id, + manufacturer, term, pages, created_at, updated_at) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?) + """ + + params_list = [] + for record in records: + created_at = self._parse_datetime(record.get('created_at')) + updated_at = self._parse_datetime(record.get('updated_at')) + + params_list.append(( + record.get('id'), + record.get('abb'), + record.get('classification'), + record.get('Related_drawings'), # 원본 컬럼명 + record.get('drawing_id'), + record.get('manufacturer'), + record.get('term'), + record.get('pages'), + created_at, + updated_at + )) + + self.executemany(insert_sql, params_list) + self.commit() + logger.info(f"도면약어 데이터 삽입 완료: {len(params_list)}개") + + def _parse_datetime(self, dt_str: Optional[str]) -> Optional[str]: + """datetime 문자열 파싱""" + if not dt_str: + return None + + try: + # PostgreSQL 형식: '2025-10-12 15:03:22.31555+00' + # SQLite 형식으로 변환 + if isinstance(dt_str, str): + # 타임존 제거 + if '+' in dt_str: + dt_str = dt_str.split('+')[0] + # 밀리초 제거 (있는 경우) + if '.' in dt_str: + parts = dt_str.split('.') + dt_str = parts[0] + return dt_str + except Exception: + pass + + return None + diff --git a/dist/HandoverSystem/_internal/database/crud.py b/dist/HandoverSystem/_internal/database/crud.py new file mode 100644 index 0000000..c79121f --- /dev/null +++ b/dist/HandoverSystem/_internal/database/crud.py @@ -0,0 +1,1963 @@ +# -*- coding: utf-8 -*- +""" +CRUD 연산 모듈 +데이터베이스의 Create, Read, Update, Delete 연산을 제공합니다. + +이 모듈은 모든 데이터베이스 입출력을 담당하며, +다른 모듈들은 이 모듈의 메서드를 통해서만 데이터베이스에 접근합니다. +""" + +from datetime import datetime, date, time +from typing import Optional, List, Dict, Any, Type, TypeVar +from dataclasses import dataclass + +from .db_manager import DatabaseManager, get_db +from .common_db_manager import CommonDatabaseManager +from .models import ( + BaseModel, + User, + Team, + Instruction, + Fault, + Work, + Misc, + DailyInspection, + Todo, + Memo, + Setting, + TeamMember, + DutySchedule, + TrainSchedule, + Weather, + MODEL_REGISTRY, +) +from core.logger import get_logger +from core.exceptions import ( + RecordNotFoundError, + DuplicateRecordError, + DatabaseQueryError, +) +from core.signals import get_signals + +# 로거 설정 +logger = get_logger(__name__) + +# 타입 변수 정의 +T = TypeVar('T', bound=BaseModel) + + +class CRUDManager: + """ + CRUD 연산 관리자 클래스 + + 모든 데이터베이스 CRUD 연산을 제공합니다. + 각 테이블별로 특화된 메서드와 공통 메서드를 제공합니다. + + Attributes: + db: 데이터베이스 관리자 인스턴스 + signals: 전역 시그널 인스턴스 + + Examples: + >>> crud = CRUDManager() + >>> instruction = crud.create_instruction( + ... created_date=date.today(), + ... created_team="A팀", + ... instructor="팀장", + ... instruction_content="지시 내용" + ... ) + >>> print(instruction.id) + """ + + _instance: Optional['CRUDManager'] = None + + def __new__(cls): + """싱글톤 패턴 구현""" + if cls._instance is None: + cls._instance = super().__new__(cls) + cls._instance._initialized = False + return cls._instance + + def __init__(self): + """CRUD 관리자 초기화""" + if self._initialized: + return + + self.db = get_db() + self.signals = get_signals() + self._initialized = True + logger.info("CRUD 관리자 초기화 완료") + + # ======================================================================== + # 공통 CRUD 메서드 + # ======================================================================== + + def _create( + self, + table_name: str, + model_class: Type[T], + data: Dict[str, Any] + ) -> T: + """ + 레코드를 생성합니다. + + Args: + table_name: 테이블 이름 + model_class: 모델 클래스 + data: 생성할 데이터 + + Returns: + 생성된 모델 인스턴스 + """ + # id, created_at, updated_at 제외 + data = {k: v for k, v in data.items() + if k not in ['id', 'created_at', 'updated_at'] and v is not None} + + # 컬럼과 값 분리 + columns = list(data.keys()) + values = list(data.values()) + placeholders = ','.join(['?' for _ in columns]) + + # SQL 예약어인 컬럼명은 따옴표로 감싸기 + quoted_columns = [f'"{col}"' if col.lower() in ['order', 'group', 'select', 'table'] else col + for col in columns] + + query = f""" + INSERT INTO {table_name} ({','.join(quoted_columns)}) + VALUES ({placeholders}) + """ + + try: + cursor = self.db.execute(query, tuple(values)) + record_id = cursor.lastrowid + + # 생성된 레코드 조회 + result = self._get_by_id(table_name, model_class, record_id) + + # 시그널 발생 + self.signals.record_created.emit(table_name, record_id) + self.signals.data_changed.emit(table_name) + + logger.info(f"레코드 생성: {table_name} ID={record_id}") + return result + + except Exception as e: + logger.error(f"레코드 생성 실패: {table_name} - {e}") + raise DatabaseQueryError(f"레코드 생성 실패: {e}") + + def _get_by_id( + self, + table_name: str, + model_class: Type[T], + record_id: int + ) -> Optional[T]: + """ + ID로 레코드를 조회합니다. + + Args: + table_name: 테이블 이름 + model_class: 모델 클래스 + record_id: 레코드 ID + + Returns: + 모델 인스턴스 또는 None + """ + query = f"SELECT * FROM {table_name} WHERE id = ?" + row = self.db.fetch_one(query, (record_id,)) + + if row: + return model_class(**row) + return None + + def _get_all( + self, + table_name: str, + model_class: Type[T], + order_by: str = "id DESC", + limit: int = None, + offset: int = None, + **filters + ) -> List[T]: + """ + 모든 레코드를 조회합니다. + + Args: + table_name: 테이블 이름 + model_class: 모델 클래스 + order_by: 정렬 기준 + limit: 최대 개수 + offset: 시작 위치 + **filters: 필터 조건 + + Returns: + 모델 인스턴스 리스트 + """ + query = f"SELECT * FROM {table_name}" + params = [] + + # WHERE 절 추가 + # 특수 파라미터는 필터에서 제외 (include_completed, include_continuous 등) + special_params = {'include_completed', 'include_continuous'} + + if filters: + conditions = [] + for key, value in filters.items(): + # 특수 파라미터는 제외 + if key in special_params: + continue + + if value is not None: + # SQL 예약어인 컬럼명은 따옴표로 감싸기 + quoted_key = f'"{key}"' if key.lower() in ['order', 'group', 'select', 'table'] else key + conditions.append(f"{quoted_key} = ?") + params.append(value) + + if conditions: + query += " WHERE " + " AND ".join(conditions) + + # ORDER BY 절 추가 + if order_by: + query += f" ORDER BY {order_by}" + + # LIMIT, OFFSET 추가 + if limit: + query += f" LIMIT {limit}" + if offset: + query += f" OFFSET {offset}" + + rows = self.db.fetch_all(query, tuple(params) if params else None) + return [model_class(**row) for row in rows] + + def _update( + self, + table_name: str, + model_class: Type[T], + record_id: int, + data: Dict[str, Any] + ) -> Optional[T]: + """ + 레코드를 업데이트합니다. + + Args: + table_name: 테이블 이름 + model_class: 모델 클래스 + record_id: 레코드 ID + data: 업데이트할 데이터 + + Returns: + 업데이트된 모델 인스턴스 + """ + # id, created_at 제외하고 updated_at 자동 설정 + data = {k: v for k, v in data.items() + if k not in ['id', 'created_at']} + data['updated_at'] = datetime.now().isoformat() + + # SET 절 생성 (SQL 예약어인 컬럼명은 따옴표로 감싸기) + set_clause = ', '.join([ + f'"{k}" = ?' if k.lower() in ['order', 'group', 'select', 'table'] else f"{k} = ?" + for k in data.keys() + ]) + values = list(data.values()) + [record_id] + + query = f""" + UPDATE {table_name} + SET {set_clause} + WHERE id = ? + """ + + try: + self.db.execute(query, tuple(values)) + + # 업데이트된 레코드 조회 + result = self._get_by_id(table_name, model_class, record_id) + + # 시그널 발생 + self.signals.record_updated.emit(table_name, record_id) + self.signals.data_changed.emit(table_name) + + logger.info(f"레코드 업데이트: {table_name} ID={record_id}") + return result + + except Exception as e: + logger.error(f"레코드 업데이트 실패: {table_name} ID={record_id} - {e}") + raise DatabaseQueryError(f"레코드 업데이트 실패: {e}") + + def _delete(self, table_name: str, record_id: int) -> bool: + """ + 레코드를 삭제합니다. + + Args: + table_name: 테이블 이름 + record_id: 레코드 ID + + Returns: + 삭제 성공 여부 + """ + query = f"DELETE FROM {table_name} WHERE id = ?" + + try: + cursor = self.db.execute(query, (record_id,)) + + if cursor.rowcount > 0: + # 시그널 발생 + self.signals.record_deleted.emit(table_name, record_id) + self.signals.data_changed.emit(table_name) + + logger.info(f"레코드 삭제: {table_name} ID={record_id}") + return True + return False + + except Exception as e: + logger.error(f"레코드 삭제 실패: {table_name} ID={record_id} - {e}") + raise DatabaseQueryError(f"레코드 삭제 실패: {e}") + + # ======================================================================== + # 공통 데이터베이스용 헬퍼 메서드 + # ======================================================================== + + def _create_with_db( + self, + db_manager, + table_name: str, + model_class: Type[T], + data: Dict[str, Any] + ) -> T: + """ + 공통 데이터베이스에 레코드를 생성합니다. + + Args: + db_manager: 데이터베이스 관리자 (CommonDatabaseManager) + table_name: 테이블 이름 + model_class: 모델 클래스 + data: 생성할 데이터 + + Returns: + 생성된 모델 인스턴스 + """ + # id, created_at, updated_at 제외 + data = {k: v for k, v in data.items() + if k not in ['id', 'created_at', 'updated_at'] and v is not None} + + if not data: + raise ValueError("생성할 데이터가 없습니다.") + + # 컬럼명과 값 분리 + columns = list(data.keys()) + placeholders = ', '.join(['?' for _ in columns]) + values = [data[col] for col in columns] + + query = f""" + INSERT INTO {table_name} ({', '.join(columns)}) + VALUES ({placeholders}) + """ + + try: + cursor = db_manager.execute(query, tuple(values)) + record_id = cursor.lastrowid + + # 생성된 레코드 조회 + result = self._get_by_id_with_db(db_manager, table_name, model_class, record_id) + + # 시그널 발생 + self.signals.record_created.emit(table_name, record_id) + self.signals.data_changed.emit(table_name) + + logger.info(f"레코드 생성: {table_name} ID={record_id}") + return result + + except Exception as e: + logger.error(f"레코드 생성 실패: {table_name} - {e}") + raise DatabaseQueryError(f"레코드 생성 실패: {e}") + + def _get_by_id_with_db( + self, + db_manager, + table_name: str, + model_class: Type[T], + record_id: int + ) -> Optional[T]: + """ + 공통 데이터베이스에서 ID로 레코드를 조회합니다. + + Args: + db_manager: 데이터베이스 관리자 (CommonDatabaseManager) + table_name: 테이블 이름 + model_class: 모델 클래스 + record_id: 레코드 ID + + Returns: + 모델 인스턴스 또는 None + """ + query = f"SELECT * FROM {table_name} WHERE id = ?" + row = db_manager.fetch_one(query, (record_id,)) + + if row: + return model_class(**row) + return None + + def _update_with_db( + self, + db_manager, + table_name: str, + model_class: Type[T], + record_id: int, + data: Dict[str, Any] + ) -> Optional[T]: + """ + 공통 데이터베이스의 레코드를 업데이트합니다. + + Args: + db_manager: 데이터베이스 관리자 (CommonDatabaseManager) + table_name: 테이블 이름 + model_class: 모델 클래스 + record_id: 레코드 ID + data: 업데이트할 데이터 + + Returns: + 업데이트된 모델 인스턴스 + """ + # id, created_at 제외하고 updated_at 자동 설정 + data = {k: v for k, v in data.items() + if k not in ['id', 'created_at']} + data['updated_at'] = datetime.now().isoformat() + + # SET 절 생성 (SQL 예약어인 컬럼명은 따옴표로 감싸기) + set_clause = ', '.join([ + f'"{k}" = ?' if k.lower() in ['order', 'group', 'select', 'table'] else f"{k} = ?" + for k in data.keys() + ]) + values = list(data.values()) + [record_id] + + query = f""" + UPDATE {table_name} + SET {set_clause} + WHERE id = ? + """ + + try: + db_manager.execute(query, tuple(values)) + + # 업데이트된 레코드 조회 + result = self._get_by_id_with_db(db_manager, table_name, model_class, record_id) + + # 시그널 발생 + self.signals.record_updated.emit(table_name, record_id) + self.signals.data_changed.emit(table_name) + + logger.info(f"레코드 업데이트: {table_name} ID={record_id}") + return result + + except Exception as e: + logger.error(f"레코드 업데이트 실패: {table_name} ID={record_id} - {e}") + raise DatabaseQueryError(f"레코드 업데이트 실패: {e}") + + def _delete_with_db( + self, + db_manager, + table_name: str, + record_id: int + ) -> bool: + """ + 공통 데이터베이스의 레코드를 삭제합니다. + + Args: + db_manager: 데이터베이스 관리자 (CommonDatabaseManager) + table_name: 테이블 이름 + record_id: 레코드 ID + + Returns: + 삭제 성공 여부 + """ + query = f"DELETE FROM {table_name} WHERE id = ?" + + try: + cursor = db_manager.execute(query, (record_id,)) + + if cursor.rowcount > 0: + # 시그널 발생 + self.signals.record_deleted.emit(table_name, record_id) + self.signals.data_changed.emit(table_name) + + logger.info(f"레코드 삭제: {table_name} ID={record_id}") + return True + return False + + except Exception as e: + logger.error(f"레코드 삭제 실패: {table_name} ID={record_id} - {e}") + raise DatabaseQueryError(f"레코드 삭제 실패: {e}") + + def _search( + self, + table_name: str, + model_class: Type[T], + search_fields: List[str], + search_text: str, + **filters + ) -> List[T]: + """ + 텍스트 검색을 수행합니다. + + Args: + table_name: 테이블 이름 + model_class: 모델 클래스 + search_fields: 검색할 필드 목록 + search_text: 검색어 + **filters: 추가 필터 조건 + + Returns: + 모델 인스턴스 리스트 + """ + conditions = [] + params = [] + + # 검색 조건 + search_conditions = [f"{field} LIKE ?" for field in search_fields] + conditions.append(f"({' OR '.join(search_conditions)})") + params.extend([f"%{search_text}%" for _ in search_fields]) + + # 필터 조건 + for key, value in filters.items(): + if value is not None: + conditions.append(f"{key} = ?") + params.append(value) + + query = f""" + SELECT * FROM {table_name} + WHERE {' AND '.join(conditions)} + ORDER BY id DESC + """ + + rows = self.db.fetch_all(query, tuple(params)) + return [model_class(**row) for row in rows] + + # ======================================================================== + # User CRUD + # ======================================================================== + + def create_user(self, **data) -> User: + """사용자 생성""" + return self._create("users", User, data) + + def get_user(self, user_id: int) -> Optional[User]: + """ID로 사용자 조회""" + return self._get_by_id("users", User, user_id) + + def get_user_by_username(self, username: str) -> Optional[User]: + """사용자명으로 사용자 조회""" + query = "SELECT * FROM users WHERE username = ?" + row = self.db.fetch_one(query, (username,)) + return User(**row) if row else None + + def get_all_users(self, **filters) -> List[User]: + """모든 사용자 조회""" + return self._get_all("users", User, **filters) + + def update_user(self, user_id: int, **data) -> Optional[User]: + """사용자 업데이트""" + return self._update("users", User, user_id, data) + + def delete_user(self, user_id: int) -> bool: + """사용자 삭제""" + return self._delete("users", user_id) + + # ======================================================================== + # Instruction CRUD + # ======================================================================== + + def create_instruction(self, **data) -> Instruction: + """지시 생성""" + return self._create("instructions", Instruction, data) + + def get_instruction(self, instruction_id: int) -> Optional[Instruction]: + """ID로 지시 조회""" + return self._get_by_id("instructions", Instruction, instruction_id) + + def get_all_instructions( + self, + order_by: str = "created_date DESC, id DESC", + **filters + ) -> List[Instruction]: + """모든 지시 조회""" + return self._get_all("instructions", Instruction, order_by=order_by, **filters) + + def get_instructions_by_date( + self, + target_date: date, + include_continuous: bool = True + ) -> List[Instruction]: + """날짜별 지시 조회 (지속 지시 포함 가능)""" + if include_continuous: + query = """ + SELECT * FROM instructions + WHERE created_date = ? OR (is_continuous = 1 AND is_completed = 0) + ORDER BY created_date DESC, id DESC + """ + else: + query = """ + SELECT * FROM instructions + WHERE created_date = ? + ORDER BY id DESC + """ + + rows = self.db.fetch_all(query, (target_date.isoformat(),)) + return [Instruction(**row) for row in rows] + + def update_instruction(self, instruction_id: int, **data) -> Optional[Instruction]: + """지시 업데이트""" + return self._update("instructions", Instruction, instruction_id, data) + + def delete_instruction(self, instruction_id: int) -> bool: + """지시 삭제""" + return self._delete("instructions", instruction_id) + + # ======================================================================== + # Fault CRUD + # ======================================================================== + + def create_fault(self, **data) -> Fault: + """고장 생성""" + return self._create("faults", Fault, data) + + def get_fault(self, fault_id: int) -> Optional[Fault]: + """ID로 고장 조회""" + return self._get_by_id("faults", Fault, fault_id) + + def get_all_faults( + self, + order_by: str = "occurrence_date DESC, id DESC", + **filters + ) -> List[Fault]: + """모든 고장 조회""" + return self._get_all("faults", Fault, order_by=order_by, **filters) + + def get_faults_by_train( + self, + train_number: str, + limit: int = 10, + months_back: int = 3 + ) -> List[Fault]: + """ + 편성번호별 고장 조회 + + 편성 필드 위에 마우스를 가져갈 때 사용됩니다. + + Args: + train_number: 편성번호 + limit: 최대 개수 + months_back: 몇 달 전까지 조회할지 (기본 3달) + + Returns: + 고장 리스트 + """ + from datetime import timedelta + + # 최근 N달 이내 데이터만 조회 + end_date = date.today() + start_date = end_date - timedelta(days=months_back * 30) + + query = """ + SELECT * FROM faults + WHERE train_number = ? + AND occurrence_date >= ? + AND occurrence_date <= ? + ORDER BY occurrence_date DESC, id DESC + LIMIT ? + """ + rows = self.db.fetch_all(query, ( + train_number, + start_date.isoformat(), + end_date.isoformat(), + limit + )) + return [Fault(**row) for row in rows] + + def get_faults_by_device( + self, + device_category: str, + limit: int = 10, + months_back: int = 3 + ) -> List[Fault]: + """ + 장치분류별 고장 조회 + + 장치분류 필드 위에 마우스를 가져갈 때 사용됩니다. + + Args: + device_category: 장치분류 + limit: 최대 개수 + months_back: 몇 달 전까지 조회할지 (기본 3달) + + Returns: + 고장 리스트 + """ + from datetime import timedelta + + # 최근 N달 이내 데이터만 조회 + end_date = date.today() + start_date = end_date - timedelta(days=months_back * 30) + + query = """ + SELECT * FROM faults + WHERE device_category = ? + AND occurrence_date >= ? + AND occurrence_date <= ? + ORDER BY occurrence_date DESC, id DESC + LIMIT ? + """ + rows = self.db.fetch_all(query, ( + device_category, + start_date.isoformat(), + end_date.isoformat(), + limit + )) + return [Fault(**row) for row in rows] + + def get_faults_by_code( + self, + fault_code: str, + limit: int = 10, + months_back: int = 3 + ) -> List[Fault]: + """ + 고장코드별 고장 조회 + + 고장코드 필드 위에 마우스를 가져갈 때 사용됩니다. + + Args: + fault_code: 고장코드 + limit: 최대 개수 + months_back: 몇 달 전까지 조회할지 (기본 3달) + + Returns: + 고장 리스트 + """ + from datetime import timedelta + + # 최근 N달 이내 데이터만 조회 + end_date = date.today() + start_date = end_date - timedelta(days=months_back * 30) + + query = """ + SELECT * FROM faults + WHERE fault_code = ? + AND occurrence_date >= ? + AND occurrence_date <= ? + ORDER BY occurrence_date DESC, id DESC + LIMIT ? + """ + rows = self.db.fetch_all(query, ( + fault_code, + start_date.isoformat(), + end_date.isoformat(), + limit + )) + return [Fault(**row) for row in rows] + + def get_faults_by_date_range( + self, + start_date: date, + end_date: date, + team: str = None + ) -> List[Fault]: + """ + 날짜 범위로 고장 조회 + + Args: + start_date: 시작 날짜 + end_date: 종료 날짜 + team: 팀 필터 (선택사항) + + Returns: + 고장 리스트 + """ + query = """ + SELECT * FROM faults + WHERE occurrence_date BETWEEN ? AND ? + """ + params = [start_date.isoformat(), end_date.isoformat()] + + if team: + query += " AND created_team = ?" + params.append(team) + + query += " ORDER BY occurrence_date DESC, id DESC" + + rows = self.db.fetch_all(query, tuple(params)) + return [Fault(**row) for row in rows] + + def search_faults(self, search_text: str) -> List[Fault]: + """고장 검색""" + return self._search( + "faults", + Fault, + ["train_number", "fault_content", "action_content", "fault_code"], + search_text + ) + + def update_fault(self, fault_id: int, **data) -> Optional[Fault]: + """고장 업데이트""" + return self._update("faults", Fault, fault_id, data) + + def delete_fault(self, fault_id: int) -> bool: + """고장 삭제""" + return self._delete("faults", fault_id) + + # ======================================================================== + # Work CRUD + # ======================================================================== + + def create_work(self, **data) -> Work: + """작업 생성""" + return self._create("works", Work, data) + + def get_work(self, work_id: int) -> Optional[Work]: + """ID로 작업 조회""" + return self._get_by_id("works", Work, work_id) + + def get_all_works( + self, + order_by: str = "work_date DESC, id DESC", + **filters + ) -> List[Work]: + """모든 작업 조회""" + return self._get_all("works", Work, order_by=order_by, **filters) + + def get_works_by_train(self, train_number: str) -> List[Work]: + """편성번호별 작업 조회""" + return self._get_all("works", Work, target_train=train_number) + + def get_works_by_date(self, target_date: date) -> List[Work]: + """날짜별 작업 조회""" + return self._get_all("works", Work, work_date=target_date.isoformat()) + + def get_works_by_date_range( + self, + start_date: date, + end_date: date, + team: str = None + ) -> List[Work]: + """ + 날짜 범위로 작업 조회 + + Args: + start_date: 시작 날짜 + end_date: 종료 날짜 + team: 팀 필터 (선택사항) + + Returns: + 작업 리스트 + """ + query = """ + SELECT * FROM works + WHERE work_date BETWEEN ? AND ? + """ + params = [start_date.isoformat(), end_date.isoformat()] + + if team: + query += " AND created_team = ?" + params.append(team) + + query += " ORDER BY work_date DESC, id DESC" + + rows = self.db.fetch_all(query, tuple(params)) + return [Work(**row) for row in rows] + + def check_train_has_work(self, train_number: str, target_date: date) -> bool: + """ + 해당 편성에 작업이 있는지 확인 + + 일상검수 편성 표시에 사용됩니다. + + Args: + train_number: 편성번호 + target_date: 날짜 + + Returns: + 작업 존재 여부 + """ + query = """ + SELECT COUNT(*) as count FROM works + WHERE target_train = ? AND work_date = ? AND is_completed = 0 + """ + result = self.db.fetch_one(query, (train_number, target_date.isoformat())) + return result['count'] > 0 if result else False + + def update_work(self, work_id: int, **data) -> Optional[Work]: + """작업 업데이트""" + return self._update("works", Work, work_id, data) + + def delete_work(self, work_id: int) -> bool: + """작업 삭제""" + return self._delete("works", work_id) + + # ======================================================================== + # Misc CRUD + # ======================================================================== + + def create_misc(self, **data) -> Misc: + """기타 생성""" + return self._create("miscs", Misc, data) + + def get_misc(self, misc_id: int) -> Optional[Misc]: + """ID로 기타 조회""" + return self._get_by_id("miscs", Misc, misc_id) + + def get_all_miscs( + self, + order_by: str = "created_date DESC, id DESC", + **filters + ) -> List[Misc]: + """모든 기타 조회""" + return self._get_all("miscs", Misc, order_by=order_by, **filters) + + def get_miscs_by_date_range( + self, + start_date: date, + end_date: date, + team: str = None + ) -> List[Misc]: + """ + 날짜 범위로 기타 조회 + + Args: + start_date: 시작 날짜 + end_date: 종료 날짜 + team: 팀 필터 (선택사항) + + Returns: + 기타 리스트 + """ + query = """ + SELECT * FROM miscs + WHERE created_date BETWEEN ? AND ? + """ + params = [start_date.isoformat(), end_date.isoformat()] + + if team: + query += " AND created_team = ?" + params.append(team) + + query += " ORDER BY created_date DESC, id DESC" + + rows = self.db.fetch_all(query, tuple(params)) + return [Misc(**row) for row in rows] + + def update_misc(self, misc_id: int, **data) -> Optional[Misc]: + """기타 업데이트""" + return self._update("miscs", Misc, misc_id, data) + + def delete_misc(self, misc_id: int) -> bool: + """기타 삭제""" + return self._delete("miscs", misc_id) + + # ======================================================================== + # DailyInspection CRUD + # ======================================================================== + + def create_daily_inspection(self, **data) -> DailyInspection: + """일상검수 생성""" + return self._create("daily_inspections", DailyInspection, data) + + def get_daily_inspection(self, inspection_id: int) -> Optional[DailyInspection]: + """ID로 일상검수 조회""" + return self._get_by_id("daily_inspections", DailyInspection, inspection_id) + + def get_daily_inspections_by_date( + self, + inspection_date: date, + shift_type: str = None + ) -> List[DailyInspection]: + """날짜별 일상검수 조회""" + filters = {"inspection_date": inspection_date.isoformat()} + if shift_type: + filters["shift_type"] = shift_type + + return self._get_all( + "daily_inspections", + DailyInspection, + order_by="slot_number ASC", + **filters + ) + + def upsert_daily_inspection( + self, + inspection_date: date, + shift_type: str, + slot_number: int, + train_number: str, + cleaning_type: str = "없음", + has_work: bool = False, + created_by: int = None + ) -> DailyInspection: + """ + 일상검수 생성 또는 업데이트 (UPSERT) + + Args: + inspection_date: 검수일자 + shift_type: 근무유형 + slot_number: 슬롯번호 + train_number: 편성번호 + cleaning_type: 청소유형 + has_work: 작업여부 + created_by: 생성자 ID + + Returns: + 생성/업데이트된 일상검수 + """ + # 기존 레코드 확인 + query = """ + SELECT * FROM daily_inspections + WHERE inspection_date = ? AND shift_type = ? AND slot_number = ? + """ + row = self.db.fetch_one( + query, + (inspection_date.isoformat(), shift_type, slot_number) + ) + + data = { + "inspection_date": inspection_date.isoformat(), + "shift_type": shift_type, + "slot_number": slot_number, + "train_number": train_number, + "cleaning_type": cleaning_type, + "has_work": has_work, + "created_by": created_by, + } + + if row: + # 업데이트 + return self._update("daily_inspections", DailyInspection, row['id'], data) + else: + # 생성 + return self._create("daily_inspections", DailyInspection, data) + + def update_daily_inspection(self, inspection_id: int, **data) -> Optional[DailyInspection]: + """일상검수 업데이트""" + return self._update("daily_inspections", DailyInspection, inspection_id, data) + + def delete_daily_inspection(self, inspection_id: int) -> bool: + """일상검수 삭제""" + return self._delete("daily_inspections", inspection_id) + + # ======================================================================== + # Todo CRUD + # ======================================================================== + + def create_todo(self, **data) -> Todo: + """할일 생성""" + result = self._create("todos", Todo, data) + self.signals.todo_added.emit(result.id) + return result + + def get_todo(self, todo_id: int) -> Optional[Todo]: + """ID로 할일 조회""" + return self._get_by_id("todos", Todo, todo_id) + + def get_todos_by_date( + self, + todo_date: date, + include_incomplete: bool = True + ) -> List[Todo]: + """날짜별 할일 조회""" + if include_incomplete: + query = """ + SELECT * FROM todos + WHERE todo_date = ? OR (todo_date < ? AND is_completed = 0) + ORDER BY is_completed ASC, todo_date DESC, id DESC + """ + rows = self.db.fetch_all( + query, + (todo_date.isoformat(), todo_date.isoformat()) + ) + else: + query = """ + SELECT * FROM todos + WHERE todo_date = ? + ORDER BY is_completed ASC, id DESC + """ + rows = self.db.fetch_all(query, (todo_date.isoformat(),)) + + return [Todo(**row) for row in rows] + + def update_todo(self, todo_id: int, **data) -> Optional[Todo]: + """할일 업데이트""" + result = self._update("todos", Todo, todo_id, data) + if result and 'is_completed' in data: + self.signals.todo_status_changed.emit(todo_id, data['is_completed']) + return result + + def toggle_todo_complete(self, todo_id: int) -> Optional[Todo]: + """할일 완료 상태 토글""" + todo = self.get_todo(todo_id) + if todo: + new_status = not todo.is_completed + completed_at = datetime.now().isoformat() if new_status else None + return self.update_todo( + todo_id, + is_completed=new_status, + completed_at=completed_at + ) + return None + + def delete_todo(self, todo_id: int) -> bool: + """할일 삭제""" + return self._delete("todos", todo_id) + + # ======================================================================== + # Memo CRUD + # ======================================================================== + + def create_memo(self, **data) -> Memo: + """메모 생성""" + return self._create("memos", Memo, data) + + def get_memo(self, memo_id: int) -> Optional[Memo]: + """ID로 메모 조회""" + return self._get_by_id("memos", Memo, memo_id) + + def get_memos_by_date(self, memo_date: date) -> List[Memo]: + """날짜별 메모 조회""" + return self._get_all("memos", Memo, memo_date=memo_date.isoformat()) + + def get_latest_memo(self, memo_date: date) -> Optional[Memo]: + """최신 메모 조회""" + query = """ + SELECT * FROM memos + WHERE memo_date = ? + ORDER BY updated_at DESC + LIMIT 1 + """ + row = self.db.fetch_one(query, (memo_date.isoformat(),)) + return Memo(**row) if row else None + + def upsert_memo( + self, + memo_date: date, + content: str, + created_by: int = None + ) -> Memo: + """메모 생성 또는 업데이트""" + memo = self.get_latest_memo(memo_date) + + if memo: + return self.update_memo(memo.id, content=content) + else: + return self.create_memo( + memo_date=memo_date.isoformat(), + content=content, + created_by=created_by + ) + + def update_memo(self, memo_id: int, **data) -> Optional[Memo]: + """메모 업데이트""" + result = self._update("memos", Memo, memo_id, data) + if result: + self.signals.memo_changed.emit(memo_id) + return result + + def delete_memo(self, memo_id: int) -> bool: + """메모 삭제""" + return self._delete("memos", memo_id) + + # ======================================================================== + # Setting CRUD + # ======================================================================== + + def get_setting(self, key: str) -> Optional[str]: + """설정 값 조회""" + query = "SELECT value FROM settings WHERE key = ?" + row = self.db.fetch_one(query, (key,)) + return row['value'] if row else None + + def set_setting(self, key: str, value: str) -> bool: + """설정 값 저장""" + query = """ + INSERT OR REPLACE INTO settings (key, value, updated_at) + VALUES (?, ?, ?) + """ + try: + self.db.execute(query, (key, value, datetime.now().isoformat())) + return True + except Exception as e: + logger.error(f"설정 저장 실패: {key} - {e}") + return False + + def get_all_settings(self) -> Dict[str, str]: + """모든 설정 조회""" + query = "SELECT key, value FROM settings" + rows = self.db.fetch_all(query) + return {row['key']: row['value'] for row in rows} + + # ======================================================================== + # TeamMember CRUD + # ======================================================================== + + def create_team_member(self, **data) -> TeamMember: + """팀 인원 생성""" + return self._create("team_members", TeamMember, data) + + def get_team_member(self, member_id: int) -> Optional[TeamMember]: + """ID로 팀 인원 조회""" + return self._get_by_id("team_members", TeamMember, member_id) + + def get_team_members_by_team( + self, + team: str, + position: str = None, + active_only: bool = True + ) -> List[TeamMember]: + """ + 팀별 인원 조회 + + Args: + team: 팀 (1팀, 2팀, 3팀, 4팀) + position: 직책 필터 (부팀장, 운용) + active_only: 활성화된 인원만 + + Returns: + 팀 인원 리스트 + """ + filters = {"team": team} + if position: + filters["position"] = position + if active_only: + filters["is_active"] = 1 + + return self._get_all( + "team_members", + TeamMember, + order_by='"order" ASC, id ASC', + **filters + ) + + def get_all_team_members(self, active_only: bool = True) -> List[TeamMember]: + """모든 팀 인원 조회""" + if active_only: + return self._get_all("team_members", TeamMember, is_active=1) + return self._get_all("team_members", TeamMember) + + def update_team_member(self, member_id: int, **data) -> Optional[TeamMember]: + """팀 인원 업데이트""" + return self._update("team_members", TeamMember, member_id, data) + + def delete_team_member(self, member_id: int) -> bool: + """팀 인원 삭제 (비활성화)""" + return self._update("team_members", TeamMember, member_id, {"is_active": False}) is not None + + def set_partner(self, member_id: int, partner_id: Optional[int] = None) -> bool: + """짝궁 설정/해제""" + # 기존 파트너 해제 + member = self.get_team_member(member_id) + if member and member.partner_id: + old_partner = self.get_team_member(member.partner_id) + if old_partner: + self._update("team_members", TeamMember, old_partner.id, {"partner_id": None}) + + # 새 파트너 설정 + self._update("team_members", TeamMember, member_id, {"partner_id": partner_id}) + + if partner_id: + # 양방향 짝궁 설정 + self._update("team_members", TeamMember, partner_id, {"partner_id": member_id}) + + return True + + # ======================================================================== + # DutySchedule CRUD + # ======================================================================== + + def create_duty_schedule(self, **data) -> DutySchedule: + """당무 일정 생성""" + return self._create("duty_schedules", DutySchedule, data) + + def get_duty_schedule( + self, + duty_date: date, + team: str, + shift_type: str + ) -> Optional[DutySchedule]: + """ + 당무 일정 조회 + + Args: + duty_date: 날짜 + team: 팀 + shift_type: 근무 유형 + + Returns: + 당무 일정 또는 None + """ + query = """ + SELECT * FROM duty_schedules + WHERE duty_date = ? AND team = ? AND shift_type = ? + """ + row = self.db.fetch_one( + query, + (duty_date.isoformat(), team, shift_type) + ) + return DutySchedule(**row) if row else None + + def upsert_duty_schedule( + self, + duty_date: date, + team: str, + shift_type: str, + vice_leader_id: int = None, + operator_id: int = None, + vice_leader_name: str = "", + operator_name: str = "" + ) -> DutySchedule: + """ + 당무 일정 생성 또는 업데이트 + + Args: + duty_date: 날짜 + team: 팀 + shift_type: 근무 유형 + vice_leader_id: 부팀장 ID + operator_id: 운용 ID + vice_leader_name: 부팀장 이름 + operator_name: 운용 이름 + + Returns: + 생성/업데이트된 당무 일정 + """ + existing = self.get_duty_schedule(duty_date, team, shift_type) + + data = { + "duty_date": duty_date.isoformat(), + "team": team, + "shift_type": shift_type, + "vice_leader_id": vice_leader_id, + "operator_id": operator_id, + "vice_leader_name": vice_leader_name, + "operator_name": operator_name, + } + + if existing: + return self._update("duty_schedules", DutySchedule, existing.id, data) + else: + return self._create("duty_schedules", DutySchedule, data) + + def get_duty_schedules_by_date_range( + self, + start_date: date, + end_date: date, + team: str = None + ) -> List[DutySchedule]: + """날짜 범위로 당무 일정 조회""" + query = """ + SELECT * FROM duty_schedules + WHERE duty_date BETWEEN ? AND ? + """ + params = [start_date.isoformat(), end_date.isoformat()] + + if team: + query += " AND team = ?" + params.append(team) + + query += " ORDER BY duty_date ASC" + + rows = self.db.fetch_all(query, tuple(params)) + return [DutySchedule(**row) for row in rows] + + def get_next_duty_member( + self, + team: str, + position: str, + current_id: int = None + ) -> Optional[TeamMember]: + """ + 다음 당무자 조회 (순번 기준) + + Args: + team: 팀 + position: 직책 + current_id: 현재 당무자 ID + + Returns: + 다음 당무자 또는 None + """ + members = self.get_team_members_by_team(team, position) + + if not members: + return None + + if current_id is None: + return members[0] + + # 현재 당무자의 인덱스 찾기 + current_idx = None + for idx, member in enumerate(members): + if member.id == current_id: + current_idx = idx + break + + if current_idx is None: + return members[0] + + # 다음 순번 (순환) + next_idx = (current_idx + 1) % len(members) + return members[next_idx] + + # ======================================================================== + # 팀 확인 관련 메서드 + # ======================================================================== + + def update_team_confirmation( + self, + table_name: str, + record_id: int, + team: str, + confirmed: bool + ) -> bool: + """ + 팀 확인 상태를 업데이트합니다. + + Args: + table_name: 테이블 이름 (instructions, faults, works, miscs) + record_id: 레코드 ID + team: 팀 이름 + confirmed: 확인 여부 + + Returns: + 업데이트 성공 여부 + """ + model_class = MODEL_REGISTRY.get(table_name) + if not model_class: + return False + + record = self._get_by_id(table_name, model_class, record_id) + if not record: + return False + + # 팀 확인 상태 업데이트 + record.set_team_confirmation(team, confirmed) + + data = { + "team_confirmations": record.team_confirmations, + "is_completed": record.is_completed, + } + + if record.is_completed and record.completed_at: + data["completed_at"] = record.completed_at.isoformat() + + self._update(table_name, model_class, record_id, data) + return True + + # ======================================================================== + # 통계 메서드 + # ======================================================================== + + # ======================================================================== + # TrainSchedule CRUD + # ======================================================================== + + def create_train_schedule(self, **data) -> TrainSchedule: + """열차 다이아 시각표 생성 (공통 데이터베이스 사용)""" + common_db = CommonDatabaseManager() + return self._create_with_db(common_db, "train_schedules", TrainSchedule, data) + + def get_train_schedule(self, schedule_id: int) -> Optional[TrainSchedule]: + """ID로 열차 다이아 시각표 조회 (공통 데이터베이스 사용)""" + common_db = CommonDatabaseManager() + return self._get_by_id_with_db(common_db, "train_schedules", TrainSchedule, schedule_id) + + def get_train_schedule_by_column_station( + self, + column_number: str, + station: str, + is_weekday: bool = True + ) -> Optional[TrainSchedule]: + """ + 열번과 역명으로 시각표 조회 (공통 데이터베이스 사용) + + Args: + column_number: 열번 + station: 역명 + is_weekday: 평일 여부 + + Returns: + TrainSchedule 또는 None + """ + common_db = CommonDatabaseManager() + query = """ + SELECT * FROM train_schedules + WHERE column_number = ? AND station = ? AND is_weekday = ? AND is_active = 1 + """ + row = common_db.fetch_one(query, (column_number, station, is_weekday)) + return TrainSchedule(**row) if row else None + + def get_schedules_by_column( + self, + column_number: str, + is_weekday: bool = True + ) -> List[TrainSchedule]: + """ + 열번으로 전체 경로 시각표 조회 (공통 데이터베이스 사용) + + Args: + column_number: 열번 + is_weekday: 평일 여부 + + Returns: + 역 순서대로 정렬된 시각표 리스트 + """ + common_db = CommonDatabaseManager() + query = """ + SELECT * FROM train_schedules + WHERE column_number = ? AND is_weekday = ? AND is_active = 1 + ORDER BY arrival_time ASC + """ + rows = common_db.fetch_all(query, (column_number, is_weekday)) + return [TrainSchedule(**row) for row in rows] + + def get_schedules_by_station( + self, + station: str, + is_weekday: bool = True + ) -> List[TrainSchedule]: + """ + 역명으로 해당 역 통과 열차 시각표 조회 (공통 데이터베이스 사용) + + Args: + station: 역명 + is_weekday: 평일 여부 + + Returns: + 시간순 정렬된 시각표 리스트 + """ + common_db = CommonDatabaseManager() + query = """ + SELECT * FROM train_schedules + WHERE station = ? AND is_weekday = ? AND is_active = 1 + ORDER BY arrival_time ASC + """ + rows = common_db.fetch_all(query, (station, is_weekday)) + return [TrainSchedule(**row) for row in rows] + + def upsert_train_schedule( + self, + column_number: str, + station: str, + arrival_time: time = None, + departure_time: time = None, + direction: str = "up", + is_weekday: bool = True + ) -> TrainSchedule: + """ + 열차 다이아 시각표 생성 또는 업데이트 (UPSERT, 공통 데이터베이스 사용) + + Args: + column_number: 열번 + station: 역명 + arrival_time: 도착 시간 + departure_time: 출발 시간 + direction: 방향 + is_weekday: 평일 여부 + + Returns: + 생성/업데이트된 TrainSchedule + """ + existing = self.get_train_schedule_by_column_station(column_number, station, is_weekday) + common_db = CommonDatabaseManager() + + data = { + "column_number": column_number, + "station": station, + "arrival_time": arrival_time.isoformat() if arrival_time else None, + "departure_time": departure_time.isoformat() if departure_time else None, + "direction": direction, + "is_weekday": is_weekday, + } + + if existing: + return self._update_with_db(common_db, "train_schedules", TrainSchedule, existing.id, data) + else: + return self._create_with_db(common_db, "train_schedules", TrainSchedule, data) + + def delete_train_schedule(self, schedule_id: int) -> bool: + """열차 다이아 시각표 삭제 (공통 데이터베이스 사용)""" + common_db = CommonDatabaseManager() + return self._delete_with_db(common_db, "train_schedules", schedule_id) + + def estimate_time_by_column_station( + self, + column_number: str, + station: str, + occurrence_date: date = None + ) -> Optional[time]: + """ + 열번과 역명으로 발생 시간 추정 + + Args: + column_number: 열번 + station: 역명 + occurrence_date: 발생일 (평일/주말 판단용) + + Returns: + 추정 시간 또는 None + """ + from datetime import datetime + + # 평일/주말 판단 + if occurrence_date: + is_weekday = occurrence_date.weekday() < 5 # 0~4: 월~금 + else: + is_weekday = True + + schedule = self.get_train_schedule_by_column_station( + column_number, station, is_weekday + ) + + if schedule: + return schedule.arrival_time or schedule.departure_time + + return None + + # ======================================================================== + # 날씨 메서드 + # ======================================================================== + + def upsert_weather( + self, + datetime: datetime, + location_name: str, + location_code: str, + temp: Optional[int] = None, + feels_like: Optional[int] = None, + humidity: Optional[int] = None, + wind_speed: str = "", + wind_direction: str = "", + precipitation_prob: Optional[int] = None, + weather_condition: str = "", + weather_icon: str = "" + ) -> Weather: + """ + 날씨 정보를 생성하거나 업데이트합니다. + + Args: + datetime: 날씨 데이터 시각 + location_name: 지역명 + location_code: 지역코드 + temp: 기온 + feels_like: 체감온도 + humidity: 습도 + wind_speed: 풍속 + wind_direction: 풍향 + precipitation_prob: 강수확률 + weather_condition: 날씨 상태 + weather_icon: 날씨 아이콘 + + Returns: + Weather 객체 + """ + try: + # 기존 데이터 확인 + existing = self.db.fetch_one( + """ + SELECT id, created_at, updated_at FROM weather + WHERE datetime = ? AND location_code = ? + """, + (datetime.isoformat(), location_code) + ) + + now = datetime.now() + + if existing: + # 업데이트 + self.db.execute( + """ + UPDATE weather SET + location_name = ?, temp = ?, feels_like = ?, humidity = ?, + wind_speed = ?, wind_direction = ?, precipitation_prob = ?, + weather_condition = ?, weather_icon = ?, updated_at = ? + WHERE id = ? + """, + ( + location_name, temp, feels_like, humidity, + wind_speed, wind_direction, precipitation_prob, + weather_condition, weather_icon, now.isoformat(), + existing['id'] + ) + ) + weather_id = existing['id'] + created_at = existing['created_at'] + updated_at = now.isoformat() + else: + # 생성 + result = self.db.execute( + """ + INSERT INTO weather ( + datetime, location_name, location_code, temp, feels_like, + humidity, wind_speed, wind_direction, precipitation_prob, + weather_condition, weather_icon, created_at, updated_at + ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) + """, + ( + datetime.isoformat(), location_name, location_code, + temp, feels_like, humidity, wind_speed, wind_direction, + precipitation_prob, weather_condition, weather_icon, + now.isoformat(), now.isoformat() + ) + ) + weather_id = result.lastrowid if result else None + created_at = now.isoformat() + updated_at = now.isoformat() + + return Weather( + id=weather_id, + created_at=created_at, + updated_at=updated_at, + datetime=datetime, + location_name=location_name, + location_code=location_code, + temp=temp, + feels_like=feels_like, + humidity=humidity, + wind_speed=wind_speed, + wind_direction=wind_direction, + precipitation_prob=precipitation_prob, + weather_condition=weather_condition, + weather_icon=weather_icon + ) + + except Exception as e: + logger.error(f"날씨 데이터 upsert 실패: {e}") + raise DatabaseQueryError(f"Failed to upsert weather data: {e}") + + def get_weather_by_datetime_range( + self, + start_datetime: datetime, + end_datetime: datetime, + location_code: str = "" + ) -> List[Weather]: + """ + 지정된 시간 범위의 날씨 데이터를 조회합니다. + + Args: + start_datetime: 시작 시각 + end_datetime: 종료 시각 + location_code: 지역코드 (선택사항) + + Returns: + Weather 객체 리스트 + """ + try: + query = """ + SELECT * FROM weather + WHERE datetime >= ? AND datetime <= ? + """ + params = [start_datetime.isoformat(), end_datetime.isoformat()] + + if location_code: + query += " AND location_code = ?" + params.append(location_code) + + query += " ORDER BY datetime ASC" + + rows = self.db.fetch_all(query, tuple(params)) + return [self._row_to_weather(row) for row in rows] + + except Exception as e: + logger.error(f"날씨 데이터 조회 실패: {e}") + raise DatabaseQueryError(f"Failed to get weather data: {e}") + + def get_weather_for_shift( + self, + shift_type: str, + current_date: date, + location_code: str = "" + ) -> List[Weather]: + """ + 근무 형태에 따른 날씨 데이터를 조회합니다. + + Args: + shift_type: 근무 유형 ("주간" 또는 "야간") + current_date: 현재 날짜 + location_code: 지역코드 (선택사항) + + Returns: + Weather 객체 리스트 + """ + from datetime import timedelta + + if shift_type == "주간": + # 주간: 09:00 ~ 18:00 + start_datetime = datetime.combine(current_date, time(9, 0)) + end_datetime = datetime.combine(current_date, time(18, 0)) + elif shift_type == "야간": + # 야간: 당일 18:00 ~ 다음날 09:00 + start_datetime = datetime.combine(current_date, time(18, 0)) + end_datetime = datetime.combine(current_date + timedelta(days=1), time(9, 0)) + else: + # 기본값: 주간 + start_datetime = datetime.combine(current_date, time(9, 0)) + end_datetime = datetime.combine(current_date, time(18, 0)) + + return self.get_weather_by_datetime_range(start_datetime, end_datetime, location_code) + + def get_weather_stats_for_shift( + self, + shift_type: str, + current_date: date, + location_code: str = "" + ) -> Dict[str, Any]: + """ + 근무 시간 동안의 날씨 통계를 반환합니다. + + Args: + shift_type: 근무 유형 ("주간" 또는 "야간") + current_date: 현재 날짜 + location_code: 지역코드 (선택사항) + + Returns: + 통계 데이터 딕셔너리 + """ + weather_data = self.get_weather_for_shift(shift_type, current_date, location_code) + + if not weather_data: + return { + "temp_min": None, + "temp_max": None, + "feels_like_min": None, + "feels_like_max": None, + "avg_temp": None, + "avg_feels_like": None, + "max_precipitation_prob": None, + "data_points": 0 + } + + temps = [w.temp for w in weather_data if w.temp is not None] + feels_likes = [w.feels_like for w in weather_data if w.feels_like is not None] + precip_probs = [w.precipitation_prob for w in weather_data if w.precipitation_prob is not None] + + return { + "temp_min": min(temps) if temps else None, + "temp_max": max(temps) if temps else None, + "feels_like_min": min(feels_likes) if feels_likes else None, + "feels_like_max": max(feels_likes) if feels_likes else None, + "avg_temp": round(sum(temps) / len(temps)) if temps else None, + "avg_feels_like": round(sum(feels_likes) / len(feels_likes)) if feels_likes else None, + "max_precipitation_prob": max(precip_probs) if precip_probs else None, + "data_points": len(weather_data) + } + + def cleanup_old_weather_data(self, days_to_keep: int = 7): + """ + 오래된 날씨 데이터를 삭제합니다. + + Args: + days_to_keep: 보관할 일수 (기본값: 7일) + """ + from datetime import timedelta + + try: + cutoff_date = datetime.now() - timedelta(days=days_to_keep) + + result = self.db.execute( + "DELETE FROM weather WHERE datetime < ?", + (cutoff_date.isoformat(),) + ) + + deleted_count = result.rowcount if result else 0 + logger.info(f"오래된 날씨 데이터 {deleted_count}개 삭제됨 (보관 기간: {days_to_keep}일)") + + except Exception as e: + logger.error(f"날씨 데이터 정리 실패: {e}") + raise DatabaseQueryError(f"Failed to cleanup weather data: {e}") + + def _row_to_weather(self, row: Dict[str, Any]) -> Weather: + """데이터베이스 행을 Weather 객체로 변환""" + return Weather( + id=row.get('id'), + created_at=row.get('created_at'), + updated_at=row.get('updated_at'), + datetime=datetime.fromisoformat(row['datetime']) if row.get('datetime') else None, + location_name=row.get('location_name', ''), + location_code=row.get('location_code', ''), + temp=row.get('temp'), + feels_like=row.get('feels_like'), + humidity=row.get('humidity'), + wind_speed=row.get('wind_speed', ''), + wind_direction=row.get('wind_direction', ''), + precipitation_prob=row.get('precipitation_prob'), + weather_condition=row.get('weather_condition', ''), + weather_icon=row.get('weather_icon', '') + ) + + # ======================================================================== + # 통계 메서드 + # ======================================================================== + + def get_fault_statistics( + self, + start_date: date = None, + end_date: date = None + ) -> Dict[str, Any]: + """ + 고장 통계를 반환합니다. + + Args: + start_date: 시작 날짜 + end_date: 종료 날짜 + + Returns: + 통계 데이터 + """ + base_query = "FROM faults WHERE 1=1" + params = [] + + if start_date: + base_query += " AND occurrence_date >= ?" + params.append(start_date.isoformat()) + if end_date: + base_query += " AND occurrence_date <= ?" + params.append(end_date.isoformat()) + + # 총 건수 + total = self.db.fetch_one(f"SELECT COUNT(*) as count {base_query}", tuple(params)) + + # 장치별 통계 + by_device = self.db.fetch_all( + f""" + SELECT device_category, COUNT(*) as count + {base_query} + GROUP BY device_category + ORDER BY count DESC + """, + tuple(params) + ) + + # 편성별 통계 + by_train = self.db.fetch_all( + f""" + SELECT train_number, COUNT(*) as count + {base_query} + GROUP BY train_number + ORDER BY count DESC + LIMIT 10 + """, + tuple(params) + ) + + return { + "total": total['count'] if total else 0, + "by_device": by_device, + "by_train": by_train, + } + + +# ============================================================================ +# 모듈 레벨 편의 함수 +# ============================================================================ + +def get_crud() -> CRUDManager: + """ + CRUD 관리자 인스턴스를 반환합니다. + + Returns: + CRUDManager 인스턴스 + """ + return CRUDManager() + + diff --git a/dist/HandoverSystem/_internal/database/db_manager.py b/dist/HandoverSystem/_internal/database/db_manager.py new file mode 100644 index 0000000..e1a5e4e --- /dev/null +++ b/dist/HandoverSystem/_internal/database/db_manager.py @@ -0,0 +1,589 @@ +# -*- coding: utf-8 -*- +""" +데이터베이스 연결 관리 모듈 +SQLite 데이터베이스 연결 및 관리 기능을 제공합니다. + +이 모듈은 다음 기능을 제공합니다: +- 데이터베이스 연결 관리 +- 테이블 생성 및 마이그레이션 +- 트랜잭션 관리 +- 연결 풀 관리 +""" + +import sqlite3 +import threading +from pathlib import Path +from typing import Optional, List, Dict, Any, Tuple +from contextlib import contextmanager +from datetime import datetime + +from core.constants import DB_FILE, DATA_DIR +from core.logger import get_logger +from core.exceptions import ( + DatabaseConnectionError, + DatabaseQueryError, +) + +# 로거 설정 +logger = get_logger(__name__) + + +# ============================================================================ +# SQL 스키마 정의 +# ============================================================================ + +CREATE_TABLES_SQL = """ +-- 사용자 테이블 +CREATE TABLE IF NOT EXISTS users ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + username TEXT UNIQUE NOT NULL, + password_hash TEXT NOT NULL, + name TEXT NOT NULL, + department TEXT NOT NULL, + role TEXT NOT NULL DEFAULT 'viewer', + is_active INTEGER DEFAULT 1, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP +); + +-- 팀 테이블 +CREATE TABLE IF NOT EXISTS teams ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + name TEXT NOT NULL, + shift_type TEXT, + is_active INTEGER DEFAULT 1, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP +); + +-- 지시 섹션 테이블 +CREATE TABLE IF NOT EXISTS instructions ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + created_date DATE NOT NULL, + created_team TEXT NOT NULL, + instructor TEXT, + instruction_content TEXT NOT NULL, + instruction_date DATE, + is_continuous INTEGER DEFAULT 0, + team_confirmations TEXT DEFAULT '{}', + is_completed INTEGER DEFAULT 0, + completed_at DATETIME, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP, + created_by INTEGER REFERENCES users(id) +); + +-- 고장 섹션 테이블 +CREATE TABLE IF NOT EXISTS faults ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + created_date DATE NOT NULL, + created_team TEXT NOT NULL, + occurrence_date DATE, + train_number TEXT, + car_number TEXT, + fault_code TEXT, + device_category TEXT, + occurrence_station TEXT, + occurrence_time TIME, + fault_content TEXT, + action_content TEXT, + action_team TEXT, + team_confirmations TEXT DEFAULT '{}', + is_completed INTEGER DEFAULT 0, + completed_at DATETIME, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP, + created_by INTEGER REFERENCES users(id) +); + +-- 작업 섹션 테이블 +CREATE TABLE IF NOT EXISTS works ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + created_date DATE NOT NULL, + created_team TEXT NOT NULL, + work_date DATE, + work_entity TEXT, + target_train TEXT, + target_device TEXT, + work_content TEXT, + remarks TEXT, + team_confirmations TEXT DEFAULT '{}', + is_completed INTEGER DEFAULT 0, + completed_at DATETIME, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP, + created_by INTEGER REFERENCES users(id) +); + +-- 기타 섹션 테이블 +CREATE TABLE IF NOT EXISTS miscs ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + created_date DATE NOT NULL, + created_team TEXT NOT NULL, + reporter TEXT, + report_content TEXT, + remarks TEXT, + related_document TEXT, + team_confirmations TEXT DEFAULT '{}', + is_completed INTEGER DEFAULT 0, + completed_at DATETIME, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP, + created_by INTEGER REFERENCES users(id) +); + +-- 일상검수 테이블 +CREATE TABLE IF NOT EXISTS daily_inspections ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + inspection_date DATE NOT NULL, + shift_type TEXT NOT NULL, + slot_number INTEGER NOT NULL, + train_number TEXT, + cleaning_type TEXT DEFAULT '없음', + has_work INTEGER DEFAULT 0, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP, + created_by INTEGER REFERENCES users(id), + UNIQUE(inspection_date, shift_type, slot_number) +); + +-- 할일 테이블 +CREATE TABLE IF NOT EXISTS todos ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + todo_date DATE NOT NULL, + target_train TEXT, + schedule TEXT, + content TEXT NOT NULL, + is_completed INTEGER DEFAULT 0, + completed_at DATETIME, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP, + created_by INTEGER REFERENCES users(id) +); + +-- 메모 테이블 +CREATE TABLE IF NOT EXISTS memos ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + memo_date DATE NOT NULL, + content TEXT NOT NULL, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP, + created_by INTEGER REFERENCES users(id) +); + +-- 설정 테이블 +CREATE TABLE IF NOT EXISTS settings ( + key TEXT PRIMARY KEY, + value TEXT, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP +); + +-- 팀 인원 테이블 +CREATE TABLE IF NOT EXISTS team_members ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + team TEXT NOT NULL, + position TEXT NOT NULL, + name TEXT NOT NULL, + "order" INTEGER DEFAULT 0, + partner_id INTEGER REFERENCES team_members(id), + is_active INTEGER DEFAULT 1, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP +); + +-- 당무 일정 테이블 +CREATE TABLE IF NOT EXISTS duty_schedules ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + duty_date DATE NOT NULL, + team TEXT NOT NULL, + shift_type TEXT NOT NULL, + vice_leader_id INTEGER REFERENCES team_members(id), + operator_id INTEGER REFERENCES team_members(id), + vice_leader_name TEXT, + operator_name TEXT, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP, + UNIQUE(duty_date, team, shift_type) +); + +-- 조치 단계 테이블 +CREATE TABLE IF NOT EXISTS action_steps ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + fault_id INTEGER NOT NULL REFERENCES faults(id) ON DELETE CASCADE, + step_number INTEGER NOT NULL, + action_content TEXT NOT NULL, + action_team TEXT, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + created_by INTEGER REFERENCES users(id), + UNIQUE(fault_id, step_number) +); + +-- 인덱스 생성 +CREATE INDEX IF NOT EXISTS idx_instructions_created_date ON instructions(created_date); +CREATE INDEX IF NOT EXISTS idx_instructions_is_completed ON instructions(is_completed); +CREATE INDEX IF NOT EXISTS idx_faults_created_date ON faults(created_date); +CREATE INDEX IF NOT EXISTS idx_faults_train_number ON faults(train_number); +CREATE INDEX IF NOT EXISTS idx_faults_occurrence_date ON faults(occurrence_date); +CREATE INDEX IF NOT EXISTS idx_works_work_date ON works(work_date); +CREATE INDEX IF NOT EXISTS idx_works_target_train ON works(target_train); +CREATE INDEX IF NOT EXISTS idx_daily_inspections_date ON daily_inspections(inspection_date); +CREATE INDEX IF NOT EXISTS idx_todos_date ON todos(todo_date); +CREATE INDEX IF NOT EXISTS idx_todos_is_completed ON todos(is_completed); +CREATE INDEX IF NOT EXISTS idx_memos_date ON memos(memo_date); +CREATE INDEX IF NOT EXISTS idx_action_steps_fault_id ON action_steps(fault_id); +CREATE INDEX IF NOT EXISTS idx_action_steps_step_number ON action_steps(fault_id, step_number); +""" + +# 기본 데이터 삽입 SQL +INSERT_DEFAULT_DATA_SQL = """ +-- 기본 팀 데이터 +INSERT OR IGNORE INTO teams (name, shift_type, is_active) VALUES ('1팀', '주간', 1); +INSERT OR IGNORE INTO teams (name, shift_type, is_active) VALUES ('2팀', '야간', 1); +INSERT OR IGNORE INTO teams (name, shift_type, is_active) VALUES ('3팀', '주간', 1); +INSERT OR IGNORE INTO teams (name, shift_type, is_active) VALUES ('4팀', '야간', 1); + +-- 기본 관리자 계정 (비밀번호: admin123) +INSERT OR IGNORE INTO users (username, password_hash, name, department, role, is_active) +VALUES ('admin', 'pbkdf2:sha256:260000$salt$hash', '관리자', '검수팀', 'admin', 1); +""" + + +# ============================================================================ +# 데이터베이스 관리자 클래스 +# ============================================================================ + +class DatabaseManager: + """ + 데이터베이스 관리자 클래스 + + 싱글톤 패턴을 사용하여 애플리케이션 전역에서 하나의 인스턴스만 사용합니다. + SQLite 데이터베이스 연결 및 기본 작업을 관리합니다. + + Attributes: + db_path: 데이터베이스 파일 경로 + connection: 현재 데이터베이스 연결 + + Examples: + >>> db = DatabaseManager() + >>> with db.get_connection() as conn: + ... cursor = conn.execute("SELECT * FROM users") + ... users = cursor.fetchall() + """ + + _instance: Optional['DatabaseManager'] = None + _lock = threading.Lock() + + def __new__(cls, db_path: Path = None): + """싱글톤 패턴 구현""" + with cls._lock: + if cls._instance is None: + cls._instance = super().__new__(cls) + cls._instance._initialized = False + return cls._instance + + def __init__(self, db_path: Path = None): + """ + 데이터베이스 관리자 초기화 + + Args: + db_path: 데이터베이스 파일 경로 (기본값: DB_FILE) + """ + # 이미 초기화된 경우 건너뛰기 + if self._initialized: + return + + self.db_path = db_path or DB_FILE + self._local = threading.local() + + # 데이터 디렉토리 생성 + DATA_DIR.mkdir(parents=True, exist_ok=True) + + # 데이터베이스 초기화 + self._initialize_database() + + self._initialized = True + logger.info(f"데이터베이스 관리자 초기화 완료: {self.db_path}") + + def _initialize_database(self): + """데이터베이스 초기화 (테이블 생성)""" + try: + with self.get_connection() as conn: + # 외래 키 활성화 + conn.execute("PRAGMA foreign_keys = ON") + + # 테이블 생성 + conn.executescript(CREATE_TABLES_SQL) + + # 기본 데이터 삽입 + conn.executescript(INSERT_DEFAULT_DATA_SQL) + + conn.commit() + + logger.info("데이터베이스 테이블 초기화 완료") + except Exception as e: + logger.error(f"데이터베이스 초기화 실패: {e}") + raise DatabaseConnectionError(f"데이터베이스 초기화 실패: {e}") + + @contextmanager + def get_connection(self): + """ + 데이터베이스 연결을 반환하는 컨텍스트 매니저 + + 스레드별로 별도의 연결을 유지합니다. + + Yields: + sqlite3.Connection: 데이터베이스 연결 + + Examples: + >>> with db.get_connection() as conn: + ... cursor = conn.execute("SELECT * FROM users") + """ + try: + # 스레드별 연결 가져오기 또는 생성 + if not hasattr(self._local, 'connection') or self._local.connection is None: + self._local.connection = sqlite3.connect( + self.db_path, + detect_types=sqlite3.PARSE_DECLTYPES | sqlite3.PARSE_COLNAMES + ) + # Row 팩토리 설정 (딕셔너리처럼 접근 가능) + self._local.connection.row_factory = sqlite3.Row + # 외래 키 활성화 + self._local.connection.execute("PRAGMA foreign_keys = ON") + + yield self._local.connection + + except sqlite3.Error as e: + logger.error(f"데이터베이스 연결 오류: {e}") + raise DatabaseConnectionError(f"데이터베이스 연결 실패: {e}") + + def execute( + self, + query: str, + params: Tuple = None, + commit: bool = True + ) -> sqlite3.Cursor: + """ + SQL 쿼리를 실행합니다. + + Args: + query: SQL 쿼리 + params: 쿼리 파라미터 + commit: 자동 커밋 여부 + + Returns: + 실행 결과 커서 + + Examples: + >>> cursor = db.execute( + ... "INSERT INTO users (name) VALUES (?)", + ... ("홍길동",) + ... ) + >>> print(cursor.lastrowid) + """ + try: + with self.get_connection() as conn: + if params: + cursor = conn.execute(query, params) + else: + cursor = conn.execute(query) + + if commit: + conn.commit() + + return cursor + + except sqlite3.Error as e: + logger.error(f"쿼리 실행 오류: {query[:100]}... - {e}") + raise DatabaseQueryError(f"쿼리 실행 실패: {e}", query) + + def execute_many( + self, + query: str, + params_list: List[Tuple], + commit: bool = True + ) -> sqlite3.Cursor: + """ + 여러 SQL 쿼리를 일괄 실행합니다. + + Args: + query: SQL 쿼리 + params_list: 파라미터 리스트 + commit: 자동 커밋 여부 + + Returns: + 실행 결과 커서 + """ + try: + with self.get_connection() as conn: + cursor = conn.executemany(query, params_list) + + if commit: + conn.commit() + + return cursor + + except sqlite3.Error as e: + logger.error(f"일괄 쿼리 실행 오류: {e}") + raise DatabaseQueryError(f"일괄 쿼리 실행 실패: {e}", query) + + def fetch_one( + self, + query: str, + params: Tuple = None + ) -> Optional[Dict[str, Any]]: + """ + 단일 레코드를 조회합니다. + + Args: + query: SQL 쿼리 + params: 쿼리 파라미터 + + Returns: + 레코드 딕셔너리 또는 None + + Examples: + >>> user = db.fetch_one( + ... "SELECT * FROM users WHERE id = ?", + ... (1,) + ... ) + """ + try: + with self.get_connection() as conn: + if params: + cursor = conn.execute(query, params) + else: + cursor = conn.execute(query) + + row = cursor.fetchone() + return dict(row) if row else None + + except sqlite3.Error as e: + logger.error(f"단일 조회 오류: {e}") + raise DatabaseQueryError(f"조회 실패: {e}", query) + + def fetch_all( + self, + query: str, + params: Tuple = None + ) -> List[Dict[str, Any]]: + """ + 여러 레코드를 조회합니다. + + Args: + query: SQL 쿼리 + params: 쿼리 파라미터 + + Returns: + 레코드 딕셔너리 리스트 + + Examples: + >>> users = db.fetch_all("SELECT * FROM users WHERE is_active = 1") + """ + try: + with self.get_connection() as conn: + if params: + cursor = conn.execute(query, params) + else: + cursor = conn.execute(query) + + rows = cursor.fetchall() + return [dict(row) for row in rows] + + except sqlite3.Error as e: + logger.error(f"다중 조회 오류: {e}") + raise DatabaseQueryError(f"조회 실패: {e}", query) + + def table_exists(self, table_name: str) -> bool: + """ + 테이블 존재 여부를 확인합니다. + + Args: + table_name: 테이블 이름 + + Returns: + 테이블 존재 여부 + """ + query = """ + SELECT name FROM sqlite_master + WHERE type='table' AND name=? + """ + result = self.fetch_one(query, (table_name,)) + return result is not None + + def get_table_columns(self, table_name: str) -> List[str]: + """ + 테이블의 컬럼 목록을 반환합니다. + + Args: + table_name: 테이블 이름 + + Returns: + 컬럼 이름 리스트 + """ + query = f"PRAGMA table_info({table_name})" + rows = self.fetch_all(query) + return [row['name'] for row in rows] + + def backup(self, backup_path: Path = None) -> bool: + """ + 데이터베이스를 백업합니다. + + Args: + backup_path: 백업 파일 경로 + + Returns: + 백업 성공 여부 + """ + try: + if backup_path is None: + timestamp = datetime.now().strftime("%Y%m%d_%H%M%S") + backup_path = DATA_DIR / f"backup_{timestamp}.db" + + with self.get_connection() as conn: + backup_conn = sqlite3.connect(backup_path) + conn.backup(backup_conn) + backup_conn.close() + + logger.info(f"데이터베이스 백업 완료: {backup_path}") + return True + + except Exception as e: + logger.error(f"데이터베이스 백업 실패: {e}") + return False + + def vacuum(self): + """데이터베이스 최적화 (VACUUM)""" + try: + with self.get_connection() as conn: + conn.execute("VACUUM") + logger.info("데이터베이스 VACUUM 완료") + except Exception as e: + logger.error(f"데이터베이스 VACUUM 실패: {e}") + + def close(self): + """현재 스레드의 연결을 닫습니다.""" + if hasattr(self._local, 'connection') and self._local.connection: + self._local.connection.close() + self._local.connection = None + logger.debug("데이터베이스 연결 종료") + + def close_all(self): + """모든 연결을 닫습니다.""" + self.close() + DatabaseManager._instance = None + logger.info("모든 데이터베이스 연결 종료") + + +# ============================================================================ +# 모듈 레벨 편의 함수 +# ============================================================================ + +def get_db() -> DatabaseManager: + """ + 데이터베이스 관리자 인스턴스를 반환합니다. + + Returns: + DatabaseManager 인스턴스 + """ + return DatabaseManager() + + diff --git a/dist/HandoverSystem/_internal/database/migrations.py b/dist/HandoverSystem/_internal/database/migrations.py new file mode 100644 index 0000000..2bf7a75 --- /dev/null +++ b/dist/HandoverSystem/_internal/database/migrations.py @@ -0,0 +1,278 @@ +# -*- coding: utf-8 -*- +""" +데이터베이스 마이그레이션 모듈 +데이터베이스 스키마 변경을 관리합니다. + +이 모듈은 다음 기능을 제공합니다: +- 마이그레이션 버전 관리 +- 스키마 업그레이드/다운그레이드 +- 마이그레이션 이력 추적 +""" + +from datetime import datetime +from typing import List, Callable, Optional +from dataclasses import dataclass + +from .db_manager import DatabaseManager, get_db +from core.logger import get_logger + +# 로거 설정 +logger = get_logger(__name__) + + +@dataclass +class Migration: + """ + 마이그레이션 정의 클래스 + + Attributes: + version: 마이그레이션 버전 + description: 마이그레이션 설명 + upgrade: 업그레이드 SQL 또는 함수 + downgrade: 다운그레이드 SQL 또는 함수 + """ + version: int + description: str + upgrade: str + downgrade: str = "" + + +class MigrationManager: + """ + 마이그레이션 관리자 클래스 + + 데이터베이스 스키마 마이그레이션을 관리합니다. + + Attributes: + db: 데이터베이스 관리자 + migrations: 마이그레이션 목록 + """ + + def __init__(self): + """마이그레이션 관리자 초기화""" + self.db = get_db() + self.migrations: List[Migration] = [] + + # 마이그레이션 테이블 생성 + self._create_migration_table() + + # 마이그레이션 정의 + self._define_migrations() + + def _create_migration_table(self): + """마이그레이션 이력 테이블 생성""" + query = """ + CREATE TABLE IF NOT EXISTS _migrations ( + version INTEGER PRIMARY KEY, + description TEXT, + applied_at DATETIME DEFAULT CURRENT_TIMESTAMP + ) + """ + self.db.execute(query) + + def _define_migrations(self): + """마이그레이션 정의""" + # 마이그레이션 1: 초기 스키마 (db_manager에서 이미 생성) + self.migrations.append(Migration( + version=1, + description="Initial schema", + upgrade="-- Initial schema created in db_manager", + downgrade="" + )) + + # 마이그레이션 2: 고장 테이블에 심각도 필드 추가 (예시) + self.migrations.append(Migration( + version=2, + description="Add severity field to faults table", + upgrade=""" + ALTER TABLE faults ADD COLUMN severity TEXT DEFAULT 'normal'; + """, + downgrade=""" + -- SQLite doesn't support DROP COLUMN directly + -- This would require table recreation + """ + )) + + # 마이그레이션 3: 사용자 테이블에 마지막 로그인 필드 추가 (예시) + self.migrations.append(Migration( + version=3, + description="Add last_login field to users table", + upgrade=""" + ALTER TABLE users ADD COLUMN last_login DATETIME; + """, + downgrade="" + )) + + # 마이그레이션 4: todos 테이블에 category 필드 추가 + self.migrations.append(Migration( + version=4, + description="Add category field to todos table", + upgrade=""" + ALTER TABLE todos ADD COLUMN category TEXT DEFAULT '일반'; + """, + downgrade="" + )) + + # 마이그레이션 5: faults 테이블에 column_number 필드 추가 + self.migrations.append(Migration( + version=5, + description="Add column_number field to faults table", + upgrade=""" + ALTER TABLE faults ADD COLUMN column_number TEXT; + """, + downgrade="" + )) + + # 마이그레이션 6: faults 테이블에 fault_source 필드 추가 + self.migrations.append(Migration( + version=6, + description="Add fault_source field to faults table", + upgrade=""" + ALTER TABLE faults ADD COLUMN fault_source TEXT; + """, + downgrade="" + )) + + # 마이그레이션 7: weather 테이블 생성 + self.migrations.append(Migration( + version=7, + description="Create weather table", + upgrade=""" + CREATE TABLE weather ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + datetime TEXT NOT NULL, + location_name TEXT NOT NULL, + location_code TEXT NOT NULL, + temp INTEGER, + feels_like INTEGER, + humidity INTEGER, + wind_speed TEXT, + wind_direction TEXT, + precipitation_prob INTEGER, + weather_condition TEXT, + weather_icon TEXT, + created_at TEXT, + updated_at TEXT, + UNIQUE(datetime, location_code) + ); + CREATE INDEX idx_weather_datetime_location ON weather(datetime, location_code); + CREATE INDEX idx_weather_location_code ON weather(location_code); + """, + downgrade="" + )) + + def get_current_version(self) -> int: + """ + 현재 마이그레이션 버전을 반환합니다. + + Returns: + 현재 버전 (마이그레이션이 없으면 0) + """ + query = "SELECT MAX(version) as version FROM _migrations" + result = self.db.fetch_one(query) + return result['version'] if result and result['version'] else 0 + + def get_pending_migrations(self) -> List[Migration]: + """ + 적용되지 않은 마이그레이션 목록을 반환합니다. + + Returns: + 대기 중인 마이그레이션 목록 + """ + current = self.get_current_version() + return [m for m in self.migrations if m.version > current] + + def apply_migration(self, migration: Migration) -> bool: + """ + 단일 마이그레이션을 적용합니다. + + Args: + migration: 적용할 마이그레이션 + + Returns: + 적용 성공 여부 + """ + try: + # 업그레이드 SQL 실행 + if migration.upgrade.strip(): + with self.db.get_connection() as conn: + conn.executescript(migration.upgrade) + conn.commit() + + # 마이그레이션 이력 기록 + query = """ + INSERT INTO _migrations (version, description, applied_at) + VALUES (?, ?, ?) + """ + self.db.execute( + query, + (migration.version, migration.description, datetime.now().isoformat()) + ) + + logger.info(f"마이그레이션 적용: v{migration.version} - {migration.description}") + return True + + except Exception as e: + logger.error(f"마이그레이션 실패: v{migration.version} - {e}") + return False + + def migrate(self, target_version: int = None) -> bool: + """ + 마이그레이션을 실행합니다. + + Args: + target_version: 목표 버전 (None이면 최신 버전) + + Returns: + 마이그레이션 성공 여부 + """ + if target_version is None: + target_version = max(m.version for m in self.migrations) if self.migrations else 0 + + current = self.get_current_version() + + if current >= target_version: + logger.info(f"마이그레이션 불필요: 현재 v{current}") + return True + + # 적용할 마이그레이션 필터링 + to_apply = [m for m in self.migrations + if current < m.version <= target_version] + to_apply.sort(key=lambda m: m.version) + + for migration in to_apply: + if not self.apply_migration(migration): + return False + + logger.info(f"마이그레이션 완료: v{current} -> v{target_version}") + return True + + def rollback(self, target_version: int) -> bool: + """ + 마이그레이션을 롤백합니다. + + Args: + target_version: 목표 버전 + + Returns: + 롤백 성공 여부 + + Note: + SQLite의 제한으로 인해 실제 롤백은 제한적입니다. + """ + current = self.get_current_version() + + if current <= target_version: + logger.info(f"롤백 불필요: 현재 v{current}") + return True + + logger.warning("SQLite 롤백은 제한적입니다. 백업에서 복원을 권장합니다.") + return False + + +def run_migrations(): + """마이그레이션을 실행합니다.""" + manager = MigrationManager() + return manager.migrate() + + diff --git a/dist/HandoverSystem/_internal/database/models.py b/dist/HandoverSystem/_internal/database/models.py new file mode 100644 index 0000000..2644dad --- /dev/null +++ b/dist/HandoverSystem/_internal/database/models.py @@ -0,0 +1,633 @@ +# -*- coding: utf-8 -*- +""" +데이터 모델 정의 모듈 +데이터베이스 테이블에 대응하는 데이터 모델 클래스들을 정의합니다. + +각 모델 클래스는 테이블 스키마를 반영하며, +데이터 유효성 검사 및 직렬화 기능을 제공합니다. +""" + +import json +from dataclasses import dataclass, field, asdict +from datetime import datetime, date, time +from typing import Optional, Dict, Any, List +from enum import Enum + + +# ============================================================================ +# 열거형 정의 +# ============================================================================ + +class Role(Enum): + """사용자 역할""" + ADMIN = "admin" + EDITOR = "editor" + VIEWER = "viewer" + + +class ShiftType(Enum): + """근무 유형""" + DAY = "주간" + NIGHT = "야간" + + +class CleaningType(Enum): + """청소 유형""" + NONE = "없음" + MEDIUM = "중청소" + LARGE = "대청소" + + +# ============================================================================ +# 기본 모델 클래스 +# ============================================================================ + +@dataclass +class BaseModel: + """ + 기본 모델 클래스 + + 모든 데이터 모델의 기반 클래스입니다. + 공통 필드 및 유틸리티 메서드를 제공합니다. + """ + id: Optional[int] = None + created_at: Optional[datetime] = None + updated_at: Optional[datetime] = None + + def to_dict(self) -> Dict[str, Any]: + """ + 모델을 딕셔너리로 변환합니다. + + Returns: + 모델 데이터 딕셔너리 + """ + data = asdict(self) + # datetime 객체를 문자열로 변환 + for key, value in data.items(): + if isinstance(value, datetime): + data[key] = value.isoformat() + elif isinstance(value, date): + data[key] = value.isoformat() + elif isinstance(value, time): + data[key] = value.isoformat() + elif isinstance(value, Enum): + data[key] = value.value + return data + + @classmethod + def from_dict(cls, data: Dict[str, Any]) -> 'BaseModel': + """ + 딕셔너리에서 모델을 생성합니다. + + Args: + data: 모델 데이터 딕셔너리 + + Returns: + 모델 인스턴스 + """ + # datetime 문자열을 객체로 변환 + for key in ['created_at', 'updated_at']: + if key in data and isinstance(data[key], str): + try: + data[key] = datetime.fromisoformat(data[key]) + except ValueError: + data[key] = None + return cls(**data) + + +# ============================================================================ +# 사용자 모델 +# ============================================================================ + +@dataclass +class User(BaseModel): + """ + 사용자 모델 + + Attributes: + username: 사용자 ID (고유) + password_hash: 비밀번호 해시 + name: 이름 + department: 부서 + role: 역할 (admin, editor, viewer) + is_active: 활성화 여부 + """ + username: str = "" + password_hash: str = "" + name: str = "" + department: str = "" + role: str = "viewer" + is_active: bool = True + + def has_permission(self, action: str) -> bool: + """ + 특정 동작에 대한 권한이 있는지 확인합니다. + + Args: + action: 동작 (create, read, update, delete) + + Returns: + 권한 여부 + """ + if self.role == Role.ADMIN.value: + return True + elif self.role == Role.EDITOR.value: + return action in ['create', 'read', 'update'] + else: # viewer + return action == 'read' + + def is_admin(self) -> bool: + """관리자 여부 확인""" + return self.role == Role.ADMIN.value or self.department == "검수팀" + + +# ============================================================================ +# 팀 모델 +# ============================================================================ + +@dataclass +class Team(BaseModel): + """ + 팀 모델 + + Attributes: + name: 팀 이름 (A팀, B팀, C팀, D팀) + shift_type: 근무 유형 (주간, 야간) + is_active: 활성화 여부 + """ + name: str = "" + shift_type: str = "" + is_active: bool = True + + +# ============================================================================ +# 섹션 공통 모델 +# ============================================================================ + +@dataclass +class SectionBase(BaseModel): + """ + 섹션 기본 모델 + + 모든 섹션(지시, 고장, 작업, 기타)의 공통 필드를 정의합니다. + """ + created_date: Optional[date] = None + created_team: str = "" + team_confirmations: str = "{}" # JSON 문자열 + is_completed: bool = False + completed_at: Optional[datetime] = None + created_by: Optional[int] = None + + def get_team_confirmations(self) -> Dict[str, bool]: + """팀 확인 상태를 딕셔너리로 반환""" + try: + return json.loads(self.team_confirmations) + except json.JSONDecodeError: + return {"1팀": False, "2팀": False, "3팀": False, "4팀": False} + + def set_team_confirmation(self, team: str, confirmed: bool): + """특정 팀의 확인 상태를 설정""" + confirmations = self.get_team_confirmations() + confirmations[team] = confirmed + self.team_confirmations = json.dumps(confirmations, ensure_ascii=False) + + # 모든 팀이 확인했는지 체크 + if all(confirmations.values()): + self.is_completed = True + self.completed_at = datetime.now() + + def all_teams_confirmed(self) -> bool: + """모든 팀이 확인했는지 반환""" + confirmations = self.get_team_confirmations() + return all(confirmations.values()) + + +# ============================================================================ +# 지시 섹션 모델 +# ============================================================================ + +@dataclass +class Instruction(SectionBase): + """ + 지시 섹션 모델 + + 상위부서나 상급자의 지시사항을 기록합니다. + + Attributes: + instructor: 지시자 + instruction_content: 지시내용 + instruction_date: 지시일자 + is_continuous: 지속여부 + """ + instructor: str = "" + instruction_content: str = "" + instruction_date: Optional[date] = None + is_continuous: bool = False + + +# ============================================================================ +# 고장 섹션 모델 +# ============================================================================ + +@dataclass +class Fault(SectionBase): + """ + 고장 섹션 모델 + + 전동차 고장 정보를 기록합니다. + + Attributes: + occurrence_date: 발생일자 + column_number: 열번 + train_number: 편성번호 + car_number: 호차 + fault_code: 고장코드 + device_category: 장치분류 + occurrence_station: 발생역 + occurrence_time: 발생시간 + fault_content: 고장내용 + action_content: 조치내용 + action_team: 조치팀 + fault_source: 고장출처 + severity: 심각도 (normal, high, critical) + """ + occurrence_date: Optional[date] = None + column_number: str = "" + train_number: str = "" + car_number: str = "" + fault_code: str = "" + device_category: str = "" + occurrence_station: str = "" + occurrence_time: Optional[time] = None + fault_content: str = "" + action_content: str = "" + action_team: str = "" + fault_source: str = "" # 고장출처 + severity: str = "normal" # 심각도 (normal, high, critical) + + +# ============================================================================ +# 작업 섹션 모델 +# ============================================================================ + +@dataclass +class Work(SectionBase): + """ + 작업 섹션 모델 + + 전동차 관련 작업일정을 기록합니다. + + Attributes: + work_date: 작업일정 + work_entity: 작업주체 + target_train: 대상편성 + target_device: 대상기기 + work_content: 작업내용 + remarks: 특이사항 + """ + work_date: Optional[date] = None + work_entity: str = "" + target_train: str = "" + target_device: str = "" + work_content: str = "" + remarks: str = "" + + +# ============================================================================ +# 기타 섹션 모델 +# ============================================================================ + +@dataclass +class Misc(SectionBase): + """ + 기타 섹션 모델 + + 전동차 관련 작업 외 나머지 사항을 기록합니다. + + Attributes: + reporter: 전달자 + report_content: 전달내용 + remarks: 특이사항 + related_document: 관련문서 + """ + reporter: str = "" + report_content: str = "" + remarks: str = "" + related_document: str = "" + + +# ============================================================================ +# 일상검수 모델 +# ============================================================================ + +@dataclass +class DailyInspection(BaseModel): + """ + 일상검수 모델 + + 일일 점검 대상 편성을 기록합니다. + + Attributes: + inspection_date: 검수일자 + shift_type: 근무유형 (주간, 야간) + slot_number: 슬롯번호 (1~5) + train_number: 편성번호 + cleaning_type: 청소유형 (없음, 중청소, 대청소) + has_work: 작업여부 + """ + inspection_date: Optional[date] = None + shift_type: str = "" + slot_number: int = 0 + train_number: str = "" + cleaning_type: str = "없음" + has_work: bool = False + created_by: Optional[int] = None + + +# ============================================================================ +# Todo 모델 +# ============================================================================ + +class TodoCategory: + """할일 카테고리""" + GENERAL = "일반" # 일반 할일 + ARRIVAL_INSPECTION = "도착검수" # 도착검수 + TASK = "작업" # 작업 + + +@dataclass +class Todo(BaseModel): + """ + 할일 모델 + + 할일 목록을 기록합니다. + + Attributes: + todo_date: 할일 날짜 + category: 카테고리 (일반, 도착검수, 작업) + target_train: 대상편성 + schedule: 일정 + content: 내용 + is_completed: 완료여부 + completed_at: 완료시간 + """ + todo_date: Optional[date] = None + category: str = "일반" + target_train: str = "" + schedule: str = "" + content: str = "" + is_completed: bool = False + completed_at: Optional[datetime] = None + created_by: Optional[int] = None + + +# ============================================================================ +# 메모 모델 +# ============================================================================ + +@dataclass +class Memo(BaseModel): + """ + 메모 모델 + + 메모를 기록합니다. + + Attributes: + memo_date: 메모 날짜 + content: 내용 + """ + memo_date: Optional[date] = None + content: str = "" + created_by: Optional[int] = None + + +# ============================================================================ +# 설정 모델 +# ============================================================================ + +@dataclass +class Setting(BaseModel): + """ + 설정 모델 + + 키-값 형태의 설정을 저장합니다. + + Attributes: + key: 설정 키 + value: 설정 값 + """ + key: str = "" + value: str = "" + + +# ============================================================================ +# 팀 인원 모델 +# ============================================================================ + +@dataclass +class TeamMember(BaseModel): + """ + 팀 인원 모델 + + 각 팀의 구성원 정보를 저장합니다. + + Attributes: + team: 팀 (1팀, 2팀, 3팀, 4팀) + position: 직책 (부팀장, 운용) + name: 이름 + order: 순서 (당무 순서) + partner_id: 짝궁 ID (함께 당무 서는 사람) + is_active: 활성화 여부 + """ + team: str = "" + position: str = "" + name: str = "" + order: int = 0 + partner_id: Optional[int] = None + is_active: bool = True + + +@dataclass +class DutySchedule(BaseModel): + """ + 당무 일정 모델 + + 일별 당무자 정보를 저장합니다. + + Attributes: + duty_date: 당무 날짜 + team: 팀 + shift_type: 근무 유형 (주간, 야간) + vice_leader_id: 당무 부팀장 ID + operator_id: 당무 운용 ID + vice_leader_name: 당무 부팀장 이름 (조회용) + operator_name: 당무 운용 이름 (조회용) + """ + duty_date: Optional[date] = None + team: str = "" + shift_type: str = "" + vice_leader_id: Optional[int] = None + operator_id: Optional[int] = None + vice_leader_name: str = "" + operator_name: str = "" + + +# ============================================================================ +# 날씨 모델 +# ============================================================================ + +@dataclass +class Weather(BaseModel): + """ + 날씨 모델 + + 시간별 날씨 정보를 저장합니다. + + Attributes: + datetime: 날씨 데이터 시각 + location_name: 지역명 + location_code: 지역코드 + temp: 기온 + feels_like: 체감온도 + humidity: 습도 + wind_speed: 풍속 + wind_direction: 풍향 + precipitation_prob: 강수확률 + weather_condition: 날씨 상태 + weather_icon: 날씨 아이콘 + """ + datetime: Optional[datetime] = None + location_name: str = "" + location_code: str = "" + temp: Optional[int] = None + feels_like: Optional[int] = None + humidity: Optional[int] = None + wind_speed: str = "" + wind_direction: str = "" + precipitation_prob: Optional[int] = None + weather_condition: str = "" + weather_icon: str = "" + + +# ============================================================================ +# 열차 다이아 시각표 모델 +# ============================================================================ + +@dataclass +class TrainSchedule(BaseModel): + """ + 열차 다이아 시각표 모델 + + 열번과 역별 도착/출발 시각을 저장합니다. + 열번과 역명으로 발생 시간을 유추할 때 사용됩니다. + + Attributes: + column_number: 열번 (예: "1001", "1002") + station: 역명 (예: "신평역", "하단역") + arrival_time: 도착 시간 + departure_time: 출발 시간 + direction: 방향 (up: 상행, down: 하행) + is_weekday: 평일 여부 (True: 평일, False: 주말/휴일) + is_active: 활성화 여부 + """ + column_number: str = "" + station: str = "" + arrival_time: Optional[time] = None + departure_time: Optional[time] = None + direction: str = "up" # up: 상행, down: 하행 + is_weekday: bool = True + is_active: bool = True + + +# ============================================================================ +# 전동차 편성 모델 +# ============================================================================ + +@dataclass +class TrainFormation(BaseModel): + """ + 전동차 편성 모델 + + 편성번호별 전동차 정보를 관리합니다. + + Attributes: + train_number: 편성번호 (예: 134a, 134b, 1A) + is_new_train: 신차 여부 (True: 신차, False: 구차) + manufacturer: 제조사 + introduction_date: 도입일 + depot: 배속지 (신평, 노포) + alias: 별칭 + introduction_stage: 도입단계 + introduction_count: 도입량 + """ + train_number: str = "" + is_new_train: bool = True + manufacturer: str = "" + introduction_date: Optional[date] = None + depot: str = "" + alias: str = "" + introduction_stage: str = "" + introduction_count: int = 0 + + +# ============================================================================ +# 조치 단계 모델 +# ============================================================================ + +@dataclass +class ActionStep(BaseModel): + """ + 조치 단계 모델 + + 고장에 대한 조치를 단계별로 기록합니다. + + Attributes: + fault_id: 고장 ID (외래키) + step_number: 단계 번호 + action_content: 조치 내용 + action_team: 조치팀 + """ + fault_id: int = 0 + step_number: int = 0 + action_content: str = "" + action_team: str = "" + + +# ============================================================================ +# 모델 레지스트리 +# ============================================================================ + +# 테이블 이름과 모델 클래스 매핑 +MODEL_REGISTRY: Dict[str, type] = { + "users": User, + "teams": Team, + "instructions": Instruction, + "faults": Fault, + "works": Work, + "miscs": Misc, + "daily_inspections": DailyInspection, + "todos": Todo, + "memos": Memo, + "settings": Setting, + "team_members": TeamMember, + "duty_schedules": DutySchedule, + "train_schedules": TrainSchedule, + "weather": Weather, + "train_formations": TrainFormation, + "action_steps": ActionStep, +} + + +def get_model_class(table_name: str) -> Optional[type]: + """ + 테이블 이름에 해당하는 모델 클래스를 반환합니다. + + Args: + table_name: 테이블 이름 + + Returns: + 모델 클래스 + """ + return MODEL_REGISTRY.get(table_name) + + diff --git a/dist/HandoverSystem/_internal/database/sql_loader.py b/dist/HandoverSystem/_internal/database/sql_loader.py new file mode 100644 index 0000000..62e372c --- /dev/null +++ b/dist/HandoverSystem/_internal/database/sql_loader.py @@ -0,0 +1,198 @@ +# -*- coding: utf-8 -*- +""" +SQL 파일 로더 모듈 +PostgreSQL 형식의 INSERT 문을 파싱하여 SQLite에 삽입합니다. +""" + +import re +import ast +from pathlib import Path +from typing import List, Dict, Any, Optional +from datetime import datetime + +from core.logger import get_logger + +logger = get_logger(__name__) + + +def parse_postgresql_insert(sql_content: str) -> List[Dict[str, Any]]: + """ + PostgreSQL 형식의 INSERT 문을 파싱합니다. + + 형식: INSERT INTO "table" ("col1", "col2") VALUES ('val1', 'val2'), ('val3', 'val4') + + Args: + sql_content: SQL 파일 내용 + + Returns: + 파싱된 레코드 리스트 + """ + records = [] + + # INSERT 문 패턴 매칭 + pattern = r'INSERT INTO\s+"[^"]+"\s*\(([^)]+)\)\s*VALUES\s*(.+?)(?=\s*;|\s*$)' + + matches = re.finditer(pattern, sql_content, re.IGNORECASE | re.DOTALL) + + for match in matches: + columns_str = match.group(1) + values_str = match.group(2) + + # 컬럼명 파싱 + columns = [col.strip().strip('"') for col in columns_str.split(',')] + + # VALUES 부분 파싱 (여러 레코드가 있을 수 있음) + # VALUES ('val1', 'val2'), ('val3', 'val4') 형식 + value_records = _parse_values(values_str) + + for value_record in value_records: + if len(value_record) == len(columns): + record = dict(zip(columns, value_record)) + records.append(record) + else: + logger.warning(f"컬럼 수 불일치: {len(columns)} 컬럼, {len(value_record)} 값") + + return records + + +def _parse_values(values_str: str) -> List[List[Any]]: + """ + VALUES 부분을 파싱합니다. + + Args: + values_str: VALUES ('val1', 'val2'), ('val3', 'val4') 형식의 문자열 + + Returns: + 값 리스트의 리스트 + """ + records = [] + + # 괄호로 묶인 각 레코드 찾기 + # 복잡한 경우를 처리하기 위해 스택 사용 + current_record = [] + current_value = "" + in_quotes = False + quote_char = None + paren_depth = 0 + i = 0 + + while i < len(values_str): + char = values_str[i] + + # 이스케이프 처리 + if char == '\\' and i + 1 < len(values_str): + current_value += char + values_str[i + 1] + i += 2 + continue + + # 따옴표 처리 + if char in ("'", '"'): + if not in_quotes: + in_quotes = True + quote_char = char + current_value += char + elif char == quote_char: + # 닫는 따옴표 + in_quotes = False + quote_char = None + current_value += char + else: + current_value += char + # 괄호 처리 + elif char == '(' and not in_quotes: + paren_depth += 1 + if paren_depth == 1: + # 새로운 레코드 시작 + current_record = [] + current_value = "" + else: + current_value += char + elif char == ')' and not in_quotes: + paren_depth -= 1 + if paren_depth == 0: + # 레코드 완료 + if current_value.strip(): + current_record.append(_clean_value(current_value.strip())) + records.append(current_record) + current_record = [] + current_value = "" + else: + current_value += char + elif char == ',' and not in_quotes and paren_depth == 1: + # 레코드 내 값 구분자 + if current_value.strip(): + current_record.append(_clean_value(current_value.strip())) + current_value = "" + else: + current_value += char + + i += 1 + + return records + + +def _clean_value(value: str) -> Any: + """ + 값을 정리합니다. + + Args: + value: 원시 값 문자열 + + Returns: + 정리된 값 (None, 문자열, 숫자 등) + """ + value = value.strip() + + # NULL 처리 + if value.upper() == 'NULL' or value == '': + return None + + # 문자열 처리 (따옴표 제거) + if value.startswith("'") and value.endswith("'"): + # 이스케이프 처리 + result = value[1:-1].replace("''", "'").replace("\\'", "'") + return result + elif value.startswith('"') and value.endswith('"'): + result = value[1:-1].replace('""', '"').replace('\\"', '"') + return result + + # 숫자 처리 + try: + if '.' in value: + return float(value) + else: + return int(value) + except ValueError: + pass + + # 불리언 처리 + if value.lower() == 'true': + return True + elif value.lower() == 'false': + return False + + return value + + +def load_sql_file(sql_file: Path) -> List[Dict[str, Any]]: + """ + SQL 파일을 로드하고 파싱합니다. + + Args: + sql_file: SQL 파일 경로 + + Returns: + 파싱된 레코드 리스트 + """ + try: + with open(sql_file, 'r', encoding='utf-8') as f: + content = f.read() + + records = parse_postgresql_insert(content) + logger.info(f"SQL 파일 파싱 완료: {sql_file.name} ({len(records)}개 레코드)") + return records + + except Exception as e: + logger.error(f"SQL 파일 로드 실패 ({sql_file}): {e}") + return [] + diff --git a/dist/HandoverSystem/_internal/database/sync_manager.py b/dist/HandoverSystem/_internal/database/sync_manager.py new file mode 100644 index 0000000..d5e0358 --- /dev/null +++ b/dist/HandoverSystem/_internal/database/sync_manager.py @@ -0,0 +1,288 @@ +# -*- coding: utf-8 -*- +""" +원격 데이터베이스 동기화 모듈 +로컬 SQLite와 원격 Supabase 간의 데이터 동기화를 관리합니다. + +현재는 프로토타입으로 인터페이스만 정의되어 있으며, +추후 Supabase 연동 시 구현될 예정입니다. +""" + +from abc import ABC, abstractmethod +from datetime import datetime +from typing import Optional, List, Dict, Any +from enum import Enum + +from core.logger import get_logger +from core.signals import get_signals + +# 로거 설정 +logger = get_logger(__name__) + + +class SyncStatus(Enum): + """동기화 상태""" + IDLE = "idle" + SYNCING = "syncing" + SUCCESS = "success" + FAILED = "failed" + OFFLINE = "offline" + + +class SyncDirection(Enum): + """동기화 방향""" + UPLOAD = "upload" # 로컬 -> 원격 + DOWNLOAD = "download" # 원격 -> 로컬 + BOTH = "both" # 양방향 + + +class BaseSyncManager(ABC): + """ + 동기화 관리자 추상 클래스 + + 원격 데이터베이스와의 동기화 인터페이스를 정의합니다. + """ + + @abstractmethod + def connect(self) -> bool: + """원격 데이터베이스에 연결합니다.""" + pass + + @abstractmethod + def disconnect(self): + """연결을 종료합니다.""" + pass + + @abstractmethod + def is_connected(self) -> bool: + """연결 상태를 확인합니다.""" + pass + + @abstractmethod + def sync_table(self, table_name: str, direction: SyncDirection) -> bool: + """테이블을 동기화합니다.""" + pass + + @abstractmethod + def sync_all(self, direction: SyncDirection) -> bool: + """모든 테이블을 동기화합니다.""" + pass + + @abstractmethod + def get_last_sync_time(self, table_name: str = None) -> Optional[datetime]: + """마지막 동기화 시간을 반환합니다.""" + pass + + +class LocalOnlySyncManager(BaseSyncManager): + """ + 로컬 전용 동기화 관리자 (프로토타입) + + 원격 연결 없이 로컬 데이터베이스만 사용합니다. + Supabase 연동 전까지 이 클래스를 사용합니다. + """ + + def __init__(self): + """초기화""" + self.signals = get_signals() + self._status = SyncStatus.OFFLINE + self._last_sync_time: Dict[str, datetime] = {} + logger.info("LocalOnlySyncManager 초기화 (원격 동기화 비활성화)") + + def connect(self) -> bool: + """ + 연결 시도 (항상 오프라인 상태) + + Returns: + 항상 False + """ + logger.info("원격 동기화가 비활성화되어 있습니다.") + self._status = SyncStatus.OFFLINE + return False + + def disconnect(self): + """연결 종료 (동작 없음)""" + pass + + def is_connected(self) -> bool: + """ + 연결 상태 확인 + + Returns: + 항상 False + """ + return False + + def sync_table(self, table_name: str, direction: SyncDirection) -> bool: + """ + 테이블 동기화 (동작 없음) + + Args: + table_name: 테이블 이름 + direction: 동기화 방향 + + Returns: + 항상 True (로컬 데이터는 항상 최신) + """ + self._last_sync_time[table_name] = datetime.now() + return True + + def sync_all(self, direction: SyncDirection) -> bool: + """ + 전체 동기화 (동작 없음) + + Args: + direction: 동기화 방향 + + Returns: + 항상 True + """ + logger.info("로컬 전용 모드: 동기화 건너뛰기") + return True + + def get_last_sync_time(self, table_name: str = None) -> Optional[datetime]: + """ + 마지막 동기화 시간 반환 + + Args: + table_name: 테이블 이름 + + Returns: + 마지막 동기화 시간 + """ + if table_name: + return self._last_sync_time.get(table_name) + return max(self._last_sync_time.values()) if self._last_sync_time else None + + @property + def status(self) -> SyncStatus: + """현재 동기화 상태""" + return self._status + + +class SupabaseSyncManager(BaseSyncManager): + """ + Supabase 동기화 관리자 + + 추후 Supabase 연동 시 구현될 예정입니다. + + Note: + 이 클래스는 현재 스텁으로만 존재합니다. + 실제 구현 시 supabase 패키지를 사용합니다. + """ + + def __init__(self, url: str, key: str): + """ + 초기화 + + Args: + url: Supabase 프로젝트 URL + key: Supabase API 키 + """ + self.url = url + self.key = key + self.signals = get_signals() + self._client = None + self._status = SyncStatus.IDLE + self._last_sync_time: Dict[str, datetime] = {} + + logger.info("SupabaseSyncManager 초기화 (추후 구현 예정)") + + def connect(self) -> bool: + """ + Supabase에 연결합니다. + + Returns: + 연결 성공 여부 + + TODO: + supabase 패키지를 사용하여 실제 연결 구현 + """ + # TODO: 실제 연결 구현 + # from supabase import create_client + # self._client = create_client(self.url, self.key) + + logger.warning("Supabase 연결 미구현") + return False + + def disconnect(self): + """연결을 종료합니다.""" + self._client = None + self._status = SyncStatus.IDLE + + def is_connected(self) -> bool: + """연결 상태를 확인합니다.""" + return self._client is not None + + def sync_table(self, table_name: str, direction: SyncDirection) -> bool: + """ + 테이블을 동기화합니다. + + Args: + table_name: 테이블 이름 + direction: 동기화 방향 + + Returns: + 동기화 성공 여부 + + TODO: + - 마지막 동기화 시간 이후 변경된 레코드 조회 + - 충돌 해결 로직 구현 + - 배치 처리 구현 + """ + # TODO: 실제 동기화 구현 + logger.warning(f"테이블 동기화 미구현: {table_name}") + return False + + def sync_all(self, direction: SyncDirection) -> bool: + """ + 모든 테이블을 동기화합니다. + + Args: + direction: 동기화 방향 + + Returns: + 동기화 성공 여부 + """ + tables = [ + "instructions", "faults", "works", "miscs", + "daily_inspections", "todos", "memos" + ] + + success = True + for table in tables: + if not self.sync_table(table, direction): + success = False + + if success: + self.signals.sync_completed.emit() + else: + self.signals.sync_error.emit("일부 테이블 동기화 실패") + + return success + + def get_last_sync_time(self, table_name: str = None) -> Optional[datetime]: + """마지막 동기화 시간을 반환합니다.""" + if table_name: + return self._last_sync_time.get(table_name) + return max(self._last_sync_time.values()) if self._last_sync_time else None + + @property + def status(self) -> SyncStatus: + """현재 동기화 상태""" + return self._status + + +def get_sync_manager() -> BaseSyncManager: + """ + 동기화 관리자 인스턴스를 반환합니다. + + 현재는 LocalOnlySyncManager를 반환합니다. + 추후 설정에 따라 SupabaseSyncManager를 반환할 수 있습니다. + + Returns: + 동기화 관리자 인스턴스 + """ + # TODO: 설정에 따라 적절한 관리자 반환 + return LocalOnlySyncManager() + + diff --git a/dist/HandoverSystem/_internal/h2-3.2.0.dist-info/INSTALLER b/dist/HandoverSystem/_internal/h2-3.2.0.dist-info/INSTALLER new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/dist/HandoverSystem/_internal/h2-3.2.0.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/dist/HandoverSystem/_internal/h2-3.2.0.dist-info/LICENSE b/dist/HandoverSystem/_internal/h2-3.2.0.dist-info/LICENSE new file mode 100644 index 0000000..7bb76c5 --- /dev/null +++ b/dist/HandoverSystem/_internal/h2-3.2.0.dist-info/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2015-2016 Cory Benfield and contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/dist/HandoverSystem/_internal/h2-3.2.0.dist-info/METADATA b/dist/HandoverSystem/_internal/h2-3.2.0.dist-info/METADATA new file mode 100644 index 0000000..108c2f6 --- /dev/null +++ b/dist/HandoverSystem/_internal/h2-3.2.0.dist-info/METADATA @@ -0,0 +1,858 @@ +Metadata-Version: 2.1 +Name: h2 +Version: 3.2.0 +Summary: HTTP/2 State-Machine based protocol implementation +Home-page: https://github.com/python-hyper/hyper-h2 +Author: Cory Benfield +Author-email: cory@lukasa.co.uk +License: MIT License +Project-URL: Documentation, https://python-hyper.org/projects/h2 +Project-URL: Source, https://github.com/python-hyper/hyper-h2 +Platform: UNKNOWN +Classifier: Development Status :: 5 - Production/Stable +Classifier: Intended Audience :: Developers +Classifier: License :: OSI Approved :: MIT License +Classifier: Programming Language :: Python +Classifier: Programming Language :: Python :: 2 +Classifier: Programming Language :: Python :: 2.7 +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3.4 +Classifier: Programming Language :: Python :: 3.5 +Classifier: Programming Language :: Python :: 3.6 +Classifier: Programming Language :: Python :: 3.7 +Classifier: Programming Language :: Python :: 3.8 +Classifier: Programming Language :: Python :: Implementation :: CPython +Classifier: Programming Language :: Python :: Implementation :: PyPy +Requires-Dist: hyperframe (<6,>=5.2.0) +Requires-Dist: hpack (<4,>=3.0) +Requires-Dist: enum34 (<2,>=1.1.6) ; python_version == "2.7" + +=============================== +hyper-h2: HTTP/2 Protocol Stack +=============================== + +.. image:: https://raw.github.com/Lukasa/hyper/development/docs/source/images/hyper.png + +.. image:: https://travis-ci.org/python-hyper/hyper-h2.svg?branch=master + :target: https://travis-ci.org/python-hyper/hyper-h2 + +This repository contains a pure-Python implementation of a HTTP/2 protocol +stack. It's written from the ground up to be embeddable in whatever program you +choose to use, ensuring that you can speak HTTP/2 regardless of your +programming paradigm. + +You use it like this: + +.. code-block:: python + + import h2.connection + + conn = h2.connection.H2Connection() + conn.send_headers(stream_id=stream_id, headers=headers) + conn.send_data(stream_id, data) + socket.sendall(conn.data_to_send()) + events = conn.receive_data(socket_data) + +This repository does not provide a parsing layer, a network layer, or any rules +about concurrency. Instead, it's a purely in-memory solution, defined in terms +of data actions and HTTP/2 frames. This is one building block of a full Python +HTTP implementation. + +To install it, just run: + +.. code-block:: console + + $ pip install h2 + +Documentation +============= + +Documentation is available at http://python-hyper.org/h2/. + +Contributing +============ + +``hyper-h2`` welcomes contributions from anyone! Unlike many other projects we +are happy to accept cosmetic contributions and small contributions, in addition +to large feature requests and changes. + +Before you contribute (either by opening an issue or filing a pull request), +please `read the contribution guidelines`_. + +.. _read the contribution guidelines: http://python-hyper.org/en/latest/contributing.html + +License +======= + +``hyper-h2`` is made available under the MIT License. For more details, see the +``LICENSE`` file in the repository. + +Authors +======= + +``hyper-h2`` is maintained by Cory Benfield, with contributions from others. For +more details about the contributors, please see ``CONTRIBUTORS.rst``. + + +Release History +=============== + +3.2.0 (2020-02-08) +------------------ + +Bugfixes +~~~~~~~~ + +- Receiving DATA frames on closed (or reset) streams now properly emit a + WINDOW_UPDATE to keep the connection flow window topped up. + +API Changes (Backward-Incompatible) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +- ``h2.config.logger`` now uses a `trace(...)` function, in addition + to `debug(...)`. If you defined a custom logger object, you need to handle + these new function calls. + + +3.1.1 (2019-08-02) +------------------ + +Bugfixes +~~~~~~~~ + +- Ignore WINDOW_UPDATE and RST_STREAM frames received after stream + closure. + + +3.1.0 (2019-01-22) +------------------ + +API Changes (Backward-Incompatible) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +- ``h2.connection.H2Connection.data_to_send`` first and only argument ``amt`` + was renamed to ``amount``. +- Support for Python 3.3 has been removed. + +API Changes (Backward-Compatible) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +- ``h2.connection.H2Connection.send_data`` now supports ``data`` parameter + being a ``memoryview`` object. +- Refactor ping-related events: a ``h2.events.PingReceived`` event is fired + when a PING frame is received and a ``h2.events.PingAckReceived`` event is + fired when a PING frame with an ACK flag is received. + ``h2.events.PingAcknowledged`` is deprecated in favour of the identical + ``h2.events.PingAckReceived``. +- Added ``ENABLE_CONNECT_PROTOCOL`` to ``h2.settings.SettingCodes``. +- Support ``CONNECT`` requests with a ``:protocol`` pseudo header + thereby supporting RFC 8441. +- A limit to the number of closed streams kept in memory by the + connection is applied. It can be configured by + ``h2.connection.H2Connection.MAX_CLOSED_STREAMS``. + +Bugfixes +~~~~~~~~ + +- Debug logging when stream_id is None is now fixed and no longer errors. + +3.0.1 (2017-04-03) +------------------ + +Bugfixes +~~~~~~~~ + +- CONTINUATION frames sent on closed streams previously caused stream errors + of type STREAM_CLOSED. RFC 7540 § 6.10 requires that these be connection + errors of type PROTOCOL_ERROR, and so this release changes to match that + behaviour. +- Remote peers incrementing their inbound connection window beyond the maximum + allowed value now cause stream-level errors, rather than connection-level + errors, allowing connections to stay up longer. +- h2 now rejects receiving and sending request header blocks that are missing + any of the mandatory pseudo-header fields (:path, :scheme, and :method). +- h2 now rejects receiving and sending request header blocks that have an empty + :path pseudo-header value. +- h2 now rejects receiving and sending request header blocks that contain + response-only pseudo-headers, and vice versa. +- h2 now correct respects user-initiated changes to the HEADER_TABLE_SIZE + local setting, and ensures that if users shrink or increase the header + table size it is policed appropriately. + + +2.6.2 (2017-04-03) +------------------ + +Bugfixes +~~~~~~~~ + +- CONTINUATION frames sent on closed streams previously caused stream errors + of type STREAM_CLOSED. RFC 7540 § 6.10 requires that these be connection + errors of type PROTOCOL_ERROR, and so this release changes to match that + behaviour. +- Remote peers incrementing their inbound connection window beyond the maximum + allowed value now cause stream-level errors, rather than connection-level + errors, allowing connections to stay up longer. +- h2 now rejects receiving and sending request header blocks that are missing + any of the mandatory pseudo-header fields (:path, :scheme, and :method). +- h2 now rejects receiving and sending request header blocks that have an empty + :path pseudo-header value. +- h2 now rejects receiving and sending request header blocks that contain + response-only pseudo-headers, and vice versa. +- h2 now correct respects user-initiated changes to the HEADER_TABLE_SIZE + local setting, and ensures that if users shrink or increase the header + table size it is policed appropriately. + + +2.5.4 (2017-04-03) +------------------ + +Bugfixes +~~~~~~~~ + +- CONTINUATION frames sent on closed streams previously caused stream errors + of type STREAM_CLOSED. RFC 7540 § 6.10 requires that these be connection + errors of type PROTOCOL_ERROR, and so this release changes to match that + behaviour. +- Remote peers incrementing their inbound connection window beyond the maximum + allowed value now cause stream-level errors, rather than connection-level + errors, allowing connections to stay up longer. +- h2 now correct respects user-initiated changes to the HEADER_TABLE_SIZE + local setting, and ensures that if users shrink or increase the header + table size it is policed appropriately. + + +3.0.0 (2017-03-24) +------------------ + +API Changes (Backward-Incompatible) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +- By default, hyper-h2 now joins together received cookie header fields, per + RFC 7540 Section 8.1.2.5. +- Added a ``normalize_inbound_headers`` flag to the ``H2Configuration`` object + that defaults to ``True``. Setting this to ``False`` changes the behaviour + from the previous point back to the v2 behaviour. +- Removed deprecated fields from ``h2.errors`` module. +- Removed deprecated fields from ``h2.settings`` module. +- Removed deprecated ``client_side`` and ``header_encoding`` arguments from + ``H2Connection``. +- Removed deprecated ``client_side`` and ``header_encoding`` properties from + ``H2Connection``. +- ``dict`` objects are no longer allowed for user-supplied headers. +- The default header encoding is now ``None``, not ``utf-8``: this means that + all events that carry headers now return those headers as byte strings by + default. The header encoding can be set back to ``utf-8`` to restore the old + behaviour. + +API Changes (Backward-Compatible) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +- Added new ``UnknownFrameReceived`` event that fires when unknown extension + frames have been received. This only fires when using hyperframe 5.0 or + later: earlier versions of hyperframe cause us to silently ignore extension + frames. + +Bugfixes +~~~~~~~~ + +None + + +2.6.1 (2017-03-16) +------------------ + +Bugfixes +~~~~~~~~ + +- Allowed hyperframe v5 support while continuing to ignore unexpected frames. + + +2.5.3 (2017-03-16) +------------------ + +Bugfixes +~~~~~~~~ + +- Allowed hyperframe v5 support while continuing to ignore unexpected frames. + + +2.4.4 (2017-03-16) +------------------ + +Bugfixes +~~~~~~~~ + +- Allowed hyperframe v5 support while continuing to ignore unexpected frames. + + +2.6.0 (2017-02-28) +------------------ + +API Changes (Backward-Compatible) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +- Added a new ``h2.events.Event`` class that acts as a base class for all + events. +- Rather than reject outbound Connection-specific headers, h2 will now + normalize the header block by removing them. +- Implement equality for the ``h2.settings.Settings`` class. +- Added ``h2.settings.SettingCodes``, an enum that is used to store all the + HTTP/2 setting codes. This allows us to use a better printed representation of + the setting code in most places that it is used. +- The ``setting`` field in ``ChangedSetting`` for the ``RemoteSettingsChanged`` + and ``SettingsAcknowledged`` events has been updated to be instances of + ``SettingCodes`` whenever they correspond to a known setting code. When they + are an unknown setting code, they are instead ``int``. As ``SettingCodes`` is + a subclass of ``int``, this is non-breaking. +- Deprecated the other fields in ``h2.settings``. These will be removed in + 3.0.0. +- Added an optional ``pad_length`` parameter to ``H2Connection.send_data`` + to allow the user to include padding on a data frame. +- Added a new parameter to the ``h2.config.H2Configuration`` initializer which + takes a logger. This allows us to log by providing a logger that conforms + to the requirements of this module so that it can be used in different + environments. + +Bugfixes +~~~~~~~~ + +- Correctly reject pushed request header blocks whenever they have malformed + request header blocks. +- Correctly normalize pushed request header blocks whenever they have + normalizable header fields. +- Remote peers are now allowed to send zero or any positive number as a value + for ``SETTINGS_MAX_HEADER_LIST_SIZE``, where previously sending zero would + raise a ``InvalidSettingsValueError``. +- Resolved issue where the ``HTTP2-Settings`` header value for plaintext + upgrade that was emitted by ``initiate_upgrade_connection`` included the + *entire* ``SETTINGS`` frame, instead of just the payload. +- Resolved issue where the ``HTTP2-Settings`` header value sent by a client for + plaintext upgrade would be ignored by ``initiate_upgrade_connection``, rather + than have those settings applied appropriately. +- Resolved an issue whereby certain frames received from a peer in the CLOSED + state would trigger connection errors when RFC 7540 says they should have + triggered stream errors instead. Added more detailed stream closure tracking + to ensure we don't throw away connections unnecessarily. + + +2.5.2 (2017-01-27) +------------------ + +- Resolved issue where the ``HTTP2-Settings`` header value for plaintext + upgrade that was emitted by ``initiate_upgrade_connection`` included the + *entire* ``SETTINGS`` frame, instead of just the payload. +- Resolved issue where the ``HTTP2-Settings`` header value sent by a client for + plaintext upgrade would be ignored by ``initiate_upgrade_connection``, rather + than have those settings applied appropriately. + + +2.4.3 (2017-01-27) +------------------ + +- Resolved issue where the ``HTTP2-Settings`` header value for plaintext + upgrade that was emitted by ``initiate_upgrade_connection`` included the + *entire* ``SETTINGS`` frame, instead of just the payload. +- Resolved issue where the ``HTTP2-Settings`` header value sent by a client for + plaintext upgrade would be ignored by ``initiate_upgrade_connection``, rather + than have those settings applied appropriately. + + +2.3.4 (2017-01-27) +------------------ + +- Resolved issue where the ``HTTP2-Settings`` header value for plaintext + upgrade that was emitted by ``initiate_upgrade_connection`` included the + *entire* ``SETTINGS`` frame, instead of just the payload. +- Resolved issue where the ``HTTP2-Settings`` header value sent by a client for + plaintext upgrade would be ignored by ``initiate_upgrade_connection``, rather + than have those settings applied appropriately. + + +2.5.1 (2016-12-17) +------------------ + +Bugfixes +~~~~~~~~ + +- Remote peers are now allowed to send zero or any positive number as a value + for ``SETTINGS_MAX_HEADER_LIST_SIZE``, where previously sending zero would + raise a ``InvalidSettingsValueError``. + + +2.5.0 (2016-10-25) +------------------ + +API Changes (Backward-Compatible) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +- Added a new ``H2Configuration`` object that allows rich configuration of + a ``H2Connection``. This object supersedes the prior keyword arguments to the + ``H2Connection`` object, which are now deprecated and will be removed in 3.0. +- Added support for automated window management via the + ``acknowledge_received_data`` method. See the documentation for more details. +- Added a ``DenialOfServiceError`` that is raised whenever a behaviour that + looks like a DoS attempt is encountered: for example, an overly large + decompressed header list. This is a subclass of ``ProtocolError``. +- Added support for setting and managing ``SETTINGS_MAX_HEADER_LIST_SIZE``. + This setting is now defaulted to 64kB. +- Added ``h2.errors.ErrorCodes``, an enum that is used to store all the HTTP/2 + error codes. This allows us to use a better printed representation of the + error code in most places that it is used. +- The ``error_code`` fields on ``ConnectionTerminated`` and ``StreamReset`` + events have been updated to be instances of ``ErrorCodes`` whenever they + correspond to a known error code. When they are an unknown error code, they + are instead ``int``. As ``ErrorCodes`` is a subclass of ``int``, this is + non-breaking. +- Deprecated the other fields in ``h2.errors``. These will be removed in 3.0.0. + +Bugfixes +~~~~~~~~ + +- Correctly reject request header blocks with neither :authority nor Host + headers, or header blocks which contain mismatched :authority and Host + headers, per RFC 7540 Section 8.1.2.3. +- Correctly expect that responses to HEAD requests will have no body regardless + of the value of the Content-Length header, and reject those that do. +- Correctly refuse to send header blocks that contain neither :authority nor + Host headers, or header blocks which contain mismatched :authority and Host + headers, per RFC 7540 Section 8.1.2.3. +- Hyper-h2 will now reject header field names and values that contain leading + or trailing whitespace. +- Correctly strip leading/trailing whitespace from header field names and + values. +- Correctly refuse to send header blocks with a TE header whose value is not + ``trailers``, per RFC 7540 Section 8.1.2.2. +- Correctly refuse to send header blocks with connection-specific headers, + per RFC 7540 Section 8.1.2.2. +- Correctly refuse to send header blocks that contain duplicate pseudo-header + fields, or with pseudo-header fields that appear after ordinary header fields, + per RFC 7540 Section 8.1.2.1. + + This may cause passing a dictionary as the header block to ``send_headers`` + to throw a ``ProtocolError``, because dictionaries are unordered and so they + may trip this check. Passing dictionaries here is deprecated, and callers + should change to using a sequence of 2-tuples as their header blocks. +- Correctly reject trailers that contain HTTP/2 pseudo-header fields, per RFC + 7540 Section 8.1.2.1. +- Correctly refuse to send trailers that contain HTTP/2 pseudo-header fields, + per RFC 7540 Section 8.1.2.1. +- Correctly reject responses that do not contain the ``:status`` header field, + per RFC 7540 Section 8.1.2.4. +- Correctly refuse to send responses that do not contain the ``:status`` header + field, per RFC 7540 Section 8.1.2.4. +- Correctly update the maximum frame size when the user updates the value of + that setting. Prior to this release, if the user updated the maximum frame + size hyper-h2 would ignore the update, preventing the remote peer from using + the higher frame sizes. + +2.4.2 (2016-10-25) +------------------ + +Bugfixes +~~~~~~~~ + +- Correctly update the maximum frame size when the user updates the value of + that setting. Prior to this release, if the user updated the maximum frame + size hyper-h2 would ignore the update, preventing the remote peer from using + the higher frame sizes. + +2.3.3 (2016-10-25) +------------------ + +Bugfixes +~~~~~~~~ + +- Correctly update the maximum frame size when the user updates the value of + that setting. Prior to this release, if the user updated the maximum frame + size hyper-h2 would ignore the update, preventing the remote peer from using + the higher frame sizes. + +2.2.7 (2016-10-25) +------------------ + +*Final 2.2.X release* + +Bugfixes +~~~~~~~~ + +- Correctly update the maximum frame size when the user updates the value of + that setting. Prior to this release, if the user updated the maximum frame + size hyper-h2 would ignore the update, preventing the remote peer from using + the higher frame sizes. + +2.4.1 (2016-08-23) +------------------ + +Bugfixes +~~~~~~~~ + +- Correctly expect that responses to HEAD requests will have no body regardless + of the value of the Content-Length header, and reject those that do. + +2.3.2 (2016-08-23) +------------------ + +Bugfixes +~~~~~~~~ + +- Correctly expect that responses to HEAD requests will have no body regardless + of the value of the Content-Length header, and reject those that do. + +2.4.0 (2016-07-01) +------------------ + +API Changes (Backward-Compatible) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +- Adds ``additional_data`` to ``H2Connection.close_connection``, allowing the + user to send additional debug data on the GOAWAY frame. +- Adds ``last_stream_id`` to ``H2Connection.close_connection``, allowing the + user to manually control what the reported last stream ID is. +- Add new method: ``prioritize``. +- Add support for emitting stream priority information when sending headers + frames using three new keyword arguments: ``priority_weight``, + ``priority_depends_on``, and ``priority_exclusive``. +- Add support for "related events": events that fire simultaneously on a single + frame. + + +2.3.1 (2016-05-12) +------------------ + +Bugfixes +~~~~~~~~ + +- Resolved ``AttributeError`` encountered when receiving more than one sequence + of CONTINUATION frames on a given connection. + + +2.2.5 (2016-05-12) +------------------ + +Bugfixes +~~~~~~~~ + +- Resolved ``AttributeError`` encountered when receiving more than one sequence + of CONTINUATION frames on a given connection. + + +2.3.0 (2016-04-26) +------------------ + +API Changes (Backward-Compatible) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +- Added a new flag to the ``H2Connection`` constructor: ``header_encoding``, + that controls what encoding is used (if any) to decode the headers from bytes + to unicode. This defaults to UTF-8 for backward compatibility. To disable the + decode and use bytes exclusively, set the field to False, None, or the empty + string. This affects all headers, including those pushed by servers. +- Bumped the minimum version of HPACK allowed from 2.0 to 2.2. +- Added support for advertising RFC 7838 Alternative services. +- Allowed users to provide ``hpack.HeaderTuple`` and + ``hpack.NeverIndexedHeaderTuple`` objects to all methods that send headers. +- Changed all events that carry headers to emit ``hpack.HeaderTuple`` and + ``hpack.NeverIndexedHeaderTuple`` instead of plain tuples. This allows users + to maintain header indexing state. +- Added support for plaintext upgrade with the ``initiate_upgrade_connection`` + method. + +Bugfixes +~~~~~~~~ + +- Automatically ensure that all ``Authorization`` and ``Proxy-Authorization`` + headers, as well as short ``Cookie`` headers, are prevented from being added + to encoding contexts. + +2.2.4 (2016-04-25) +------------------ + +Bugfixes +~~~~~~~~ + +- Correctly forbid pseudo-headers that were not defined in RFC 7540. +- Ignore AltSvc frames, rather than exploding when receiving them. + +2.1.5 (2016-04-25) +------------------ + +*Final 2.1.X release* + +Bugfixes +~~~~~~~~ + +- Correctly forbid pseudo-headers that were not defined in RFC 7540. +- Ignore AltSvc frames, rather than exploding when receiving them. + +2.2.3 (2016-04-13) +------------------ + +Bugfixes +~~~~~~~~ + +- Allowed the 4.X series of hyperframe releases as dependencies. + +2.1.4 (2016-04-13) +------------------ + +Bugfixes +~~~~~~~~ + +- Allowed the 4.X series of hyperframe releases as dependencies. + + +2.2.2 (2016-04-05) +------------------ + +Bugfixes +~~~~~~~~ + +- Fixed issue where informational responses were erroneously not allowed to be + sent in the ``HALF_CLOSED_REMOTE`` state. +- Fixed issue where informational responses were erroneously not allowed to be + received in the ``HALF_CLOSED_LOCAL`` state. +- Fixed issue where we allowed information responses to be sent or received + after final responses. + +2.2.1 (2016-03-23) +------------------ + +Bugfixes +~~~~~~~~ + +- Fixed issue where users using locales that did not default to UTF-8 were + unable to install source distributions of the package. + +2.2.0 (2016-03-23) +------------------ + +API Changes (Backward-Compatible) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +- Added support for sending informational responses (responses with 1XX status) + codes as part of the standard flow. HTTP/2 allows zero or more informational + responses with no upper limit: hyper-h2 does too. +- Added support for receiving informational responses (responses with 1XX + status) codes as part of the standard flow. HTTP/2 allows zero or more + informational responses with no upper limit: hyper-h2 does too. +- Added a new event: ``ReceivedInformationalResponse``. This response is fired + when informational responses (those with 1XX status codes). +- Added an ``additional_data`` field to the ``ConnectionTerminated`` event that + carries any additional data sent on the GOAWAY frame. May be ``None`` if no + such data was sent. +- Added the ``initial_values`` optional argument to the ``Settings`` object. + +Bugfixes +~~~~~~~~ + +- Correctly reject all of the connection-specific headers mentioned in RFC 7540 + § 8.1.2.2, not just the ``Connection:`` header. +- Defaulted the value of ``SETTINGS_MAX_CONCURRENT_STREAMS`` to 100, unless + explicitly overridden. This is a safe defensive initial value for this + setting. + +2.1.3 (2016-03-16) +------------------ + +Deprecations +~~~~~~~~~~~~ + +- Passing dictionaries to ``send_headers`` as the header block is deprecated, + and will be removed in 3.0. + +2.1.2 (2016-02-17) +------------------ + +Bugfixes +~~~~~~~~ + +- Reject attempts to push streams on streams that were themselves pushed: + streams can only be pushed on streams that were initiated by the client. +- Correctly allow CONTINUATION frames to extend the header block started by a + PUSH_PROMISE frame. +- Changed our handling of frames received on streams that were reset by the + user. + + Previously these would, at best, cause ProtocolErrors to be raised and the + connection to be torn down (rather defeating the point of resetting streams + at all) and, at worst, would cause subtle inconsistencies in state between + hyper-h2 and the remote peer that could lead to header block decoding errors + or flow control blockages. + + Now when the user resets a stream all further frames received on that stream + are ignored except where they affect some form of connection-level state, + where they have their effect and are then ignored. +- Fixed a bug whereby receiving a PUSH_PROMISE frame on a stream that was + closed would cause a RST_STREAM frame to be emitted on the closed-stream, + but not the newly-pushed one. Now this causes a ``ProtocolError``. + +2.1.1 (2016-02-05) +------------------ + +Bugfixes +~~~~~~~~ + +- Added debug representations for all events. +- Fixed problems with setup.py that caused trouble on older setuptools/pip + installs. + +2.1.0 (2016-02-02) +------------------ + +API Changes (Backward-Compatible) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +- Added new field to ``DataReceived``: ``flow_controlled_length``. This is the + length of the frame including padded data, allowing users to correctly track + changes to the flow control window. +- Defined new ``UnsupportedFrameError``, thrown when frames that are known to + hyperframe but not supported by hyper-h2 are received. For + backward-compatibility reasons, this is a ``ProtocolError`` *and* a + ``KeyError``. + +Bugfixes +~~~~~~~~ + +- Hyper-h2 now correctly accounts for padding when maintaining flow control + windows. +- Resolved a bug where hyper-h2 would mistakenly apply + SETTINGS_INITIAL_WINDOW_SIZE to the connection flow control window in + addition to the stream-level flow control windows. +- Invalid Content-Length headers now throw ``ProtocolError`` exceptions and + correctly tear the connection down, instead of leaving the connection in an + indeterminate state. +- Invalid header blocks now throw ``ProtocolError``, rather than a grab bag of + possible other exceptions. + +2.0.0 (2016-01-25) +------------------ + +API Changes (Breaking) +~~~~~~~~~~~~~~~~~~~~~~ + +- Attempts to open streams with invalid stream IDs, either by the remote peer + or by the user, are now rejected as a ``ProtocolError``. Previously these + were allowed, and would cause remote peers to error. +- Receiving frames that have invalid padding now causes the connection to be + terminated with a ``ProtocolError`` being raised. Previously these passed + undetected. +- Settings values set by both the user and the remote peer are now validated + when they're set. If they're invalid, a new ``InvalidSettingsValueError`` is + raised and, if set by the remote peer, a connection error is signaled. + Previously, it was possible to set invalid values. These would either be + caught when building frames, or would be allowed to stand. +- Settings changes no longer require user action to be acknowledged: hyper-h2 + acknowledges them automatically. This moves the location where some + exceptions may be thrown, and also causes the ``acknowledge_settings`` method + to be removed from the public API. +- Removed a number of methods on the ``H2Connection`` object from the public, + semantically versioned API, by renaming them to have leading underscores. + Specifically, removed: + + - ``get_stream_by_id`` + - ``get_or_create_stream`` + - ``begin_new_stream`` + - ``receive_frame`` + - ``acknowledge_settings`` + +- Added full support for receiving CONTINUATION frames, including policing + logic about when and how they are received. Previously, receiving + CONTINUATION frames was not supported and would throw exceptions. +- All public API functions on ``H2Connection`` except for ``receive_data`` no + longer return lists of events, because these lists were always empty. Events + are now only raised by ``receive_data``. +- Calls to ``increment_flow_control_window`` with out of range values now raise + ``ValueError`` exceptions. Previously they would be allowed, or would cause + errors when serializing frames. + +API Changes (Backward-Compatible) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +- Added ``PriorityUpdated`` event for signaling priority changes. +- Added ``get_next_available_stream_id`` function. +- Receiving DATA frames on streams not in the OPEN or HALF_CLOSED_LOCAL states + now causes a stream reset, rather than a connection reset. The error is now + also classified as a ``StreamClosedError``, rather than a more generic + ``ProtocolError``. +- Receiving HEADERS or PUSH_PROMISE frames in the HALF_CLOSED_REMOTE state now + causes a stream reset, rather than a connection reset. +- Receiving frames that violate the max frame size now causes connection errors + with error code FRAME_SIZE_ERROR, not a generic PROTOCOL_ERROR. This + condition now also raises a ``FrameTooLargeError``, a new subclass of + ``ProtocolError``. +- Made ``NoSuchStreamError`` a subclass of ``ProtocolError``. +- The ``StreamReset`` event is now also fired whenever a protocol error from + the remote peer forces a stream to close early. This is only fired once. +- The ``StreamReset`` event now carries a flag, ``remote_reset``, that is set + to ``True`` in all cases where ``StreamReset`` would previously have fired + (e.g. when the remote peer sent a RST_STREAM), and is set to ``False`` when + it fires because the remote peer made a protocol error. +- Hyper-h2 now rejects attempts by peers to increment a flow control window by + zero bytes. +- Hyper-h2 now rejects peers sending header blocks that are ill-formed for a + number of reasons as set out in RFC 7540 Section 8.1.2. +- Attempting to send non-PRIORITY frames on closed streams now raises + ``StreamClosedError``. +- Remote peers attempting to increase the flow control window beyond + ``2**31 - 1``, either by window increment or by settings frame, are now + rejected as ``ProtocolError``. +- Local attempts to increase the flow control window beyond ``2**31 - 1`` by + window increment are now rejected as ``ProtocolError``. +- The bytes that represent individual settings are now available in + ``h2.settings``, instead of needing users to import them from hyperframe. + +Bugfixes +~~~~~~~~ + +- RFC 7540 requires that a separate minimum stream ID be used for inbound and + outbound streams. Hyper-h2 now obeys this requirement. +- Hyper-h2 now does a better job of reporting the last stream ID it has + partially handled when terminating connections. +- Fixed an error in the arguments of ``StreamIDTooLowError``. +- Prevent ``ValueError`` leaking from Hyperframe. +- Prevent ``struct.error`` and ``InvalidFrameError`` leaking from Hyperframe. + +1.1.1 (2015-11-17) +------------------ + +Bugfixes +~~~~~~~~ + +- Forcibly lowercase all header names to improve compatibility with + implementations that demand lower-case header names. + +1.1.0 (2015-10-28) +------------------ + +API Changes (Backward-Compatible) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +- Added a new ``ConnectionTerminated`` event, which fires when GOAWAY frames + are received. +- Added a subclass of ``NoSuchStreamError``, called ``StreamClosedError``, that + fires when actions are taken on a stream that is closed and has had its state + flushed from the system. +- Added ``StreamIDTooLowError``, raised when the user or the remote peer + attempts to create a stream with an ID lower than one previously used in the + dialog. Inherits from ``ValueError`` for backward-compatibility reasons. + +Bugfixes +~~~~~~~~ + +- Do not throw ``ProtocolError`` when attempting to send multiple GOAWAY + frames on one connection. +- We no longer forcefully change the decoder table size when settings changes + are ACKed, instead waiting for remote acknowledgement of the change. +- Improve the performance of checking whether a stream is open. +- We now attempt to lazily garbage collect closed streams, to avoid having the + state hang around indefinitely, leaking memory. +- Avoid further per-stream allocations, leading to substantial performance + improvements when many short-lived streams are used. + +1.0.0 (2015-10-15) +------------------ + +- First production release! + + diff --git a/dist/HandoverSystem/_internal/h2-3.2.0.dist-info/RECORD b/dist/HandoverSystem/_internal/h2-3.2.0.dist-info/RECORD new file mode 100644 index 0000000..3a6f73e --- /dev/null +++ b/dist/HandoverSystem/_internal/h2-3.2.0.dist-info/RECORD @@ -0,0 +1,28 @@ +h2-3.2.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +h2-3.2.0.dist-info/LICENSE,sha256=Zj-SU-E1GbgqtKaxyqtr7QWq2nBRfyjNAlS-ip-hntY,1102 +h2-3.2.0.dist-info/METADATA,sha256=yGS02B_LKuEIUMLMOk4mHLCf7DdkOiP7PALglUwOK34,32348 +h2-3.2.0.dist-info/RECORD,, +h2-3.2.0.dist-info/WHEEL,sha256=kGT74LWyRUZrL4VgLh6_g12IeVl_9u9ZVhadrgXZUEY,110 +h2-3.2.0.dist-info/top_level.txt,sha256=Hiulx8KxI2jFUM1dG7-CZeRkO3j50MBwCLG36Vrq-kI,3 +h2/__init__.py,sha256=UK9LH4mhXn3zPFY031BWM2iT9OItwfZlorUEFdEMX8I,86 +h2/__pycache__/__init__.cpython-311.pyc,, +h2/__pycache__/config.cpython-311.pyc,, +h2/__pycache__/connection.cpython-311.pyc,, +h2/__pycache__/errors.cpython-311.pyc,, +h2/__pycache__/events.cpython-311.pyc,, +h2/__pycache__/exceptions.cpython-311.pyc,, +h2/__pycache__/frame_buffer.cpython-311.pyc,, +h2/__pycache__/settings.cpython-311.pyc,, +h2/__pycache__/stream.cpython-311.pyc,, +h2/__pycache__/utilities.cpython-311.pyc,, +h2/__pycache__/windows.cpython-311.pyc,, +h2/config.py,sha256=HPs1Q8ss9h9daPzCZ9jB1YIhJSWc2hiukI4NO8gwfJo,6624 +h2/connection.py,sha256=Rf6_hA7cIJSLN0iL5JXu4lDD7CmxeNsgwlyPeAo5bhk,83073 +h2/errors.py,sha256=zVc5DO6IBAv1EkJxdb-mpRdqxUBfb5W0gwdqBLpqy80,1553 +h2/events.py,sha256=_zttawGqPVmEVeZN1S3kGREQ-VSt1xP07SebUxLqAF4,21962 +h2/exceptions.py,sha256=rdeQYMyQ46s6gkRkkb02YXsKZnc1VFuPqpPKr8Q-8a8,5379 +h2/frame_buffer.py,sha256=NBeQ94joXLE9XkGpfGFeB_VIOBNq_9fINy90YUG0qD4,6771 +h2/settings.py,sha256=hUohNoWHMouGhOWiDc2r5sceqMGTuVsDpi9KmsPCDMY,11814 +h2/stream.py,sha256=AL5KGnEZFKaLp2JtKw-XEEInJVccKmgGjOjM2ay12W4,54447 +h2/utilities.py,sha256=JI6DcBWD0rXiAafbCfnXmroYK1Q28g4bqHLqeqA29_4,22818 +h2/windows.py,sha256=XRuu1Y2WlTq6TuEpuhfvl5R6TIGysoU9s0mpFVgjIUA,5603 diff --git a/dist/HandoverSystem/_internal/h2-3.2.0.dist-info/WHEEL b/dist/HandoverSystem/_internal/h2-3.2.0.dist-info/WHEEL new file mode 100644 index 0000000..ef99c6c --- /dev/null +++ b/dist/HandoverSystem/_internal/h2-3.2.0.dist-info/WHEEL @@ -0,0 +1,6 @@ +Wheel-Version: 1.0 +Generator: bdist_wheel (0.34.2) +Root-Is-Purelib: true +Tag: py2-none-any +Tag: py3-none-any + diff --git a/dist/HandoverSystem/_internal/h2-3.2.0.dist-info/top_level.txt b/dist/HandoverSystem/_internal/h2-3.2.0.dist-info/top_level.txt new file mode 100644 index 0000000..c48b563 --- /dev/null +++ b/dist/HandoverSystem/_internal/h2-3.2.0.dist-info/top_level.txt @@ -0,0 +1 @@ +h2 diff --git a/dist/HandoverSystem/_internal/importlib_metadata-8.6.1.dist-info/INSTALLER b/dist/HandoverSystem/_internal/importlib_metadata-8.6.1.dist-info/INSTALLER new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/dist/HandoverSystem/_internal/importlib_metadata-8.6.1.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/dist/HandoverSystem/_internal/importlib_metadata-8.6.1.dist-info/LICENSE b/dist/HandoverSystem/_internal/importlib_metadata-8.6.1.dist-info/LICENSE new file mode 100644 index 0000000..d645695 --- /dev/null +++ b/dist/HandoverSystem/_internal/importlib_metadata-8.6.1.dist-info/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/dist/HandoverSystem/_internal/importlib_metadata-8.6.1.dist-info/METADATA b/dist/HandoverSystem/_internal/importlib_metadata-8.6.1.dist-info/METADATA new file mode 100644 index 0000000..392e0d6 --- /dev/null +++ b/dist/HandoverSystem/_internal/importlib_metadata-8.6.1.dist-info/METADATA @@ -0,0 +1,133 @@ +Metadata-Version: 2.2 +Name: importlib_metadata +Version: 8.6.1 +Summary: Read metadata from Python packages +Author-email: "Jason R. Coombs" +Project-URL: Source, https://github.com/python/importlib_metadata +Classifier: Development Status :: 5 - Production/Stable +Classifier: Intended Audience :: Developers +Classifier: License :: OSI Approved :: Apache Software License +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3 :: Only +Requires-Python: >=3.9 +Description-Content-Type: text/x-rst +License-File: LICENSE +Requires-Dist: zipp>=3.20 +Requires-Dist: typing-extensions>=3.6.4; python_version < "3.8" +Provides-Extra: test +Requires-Dist: pytest!=8.1.*,>=6; extra == "test" +Requires-Dist: importlib_resources>=1.3; python_version < "3.9" and extra == "test" +Requires-Dist: packaging; extra == "test" +Requires-Dist: pyfakefs; extra == "test" +Requires-Dist: flufl.flake8; extra == "test" +Requires-Dist: pytest-perf>=0.9.2; extra == "test" +Requires-Dist: jaraco.test>=5.4; extra == "test" +Provides-Extra: doc +Requires-Dist: sphinx>=3.5; extra == "doc" +Requires-Dist: jaraco.packaging>=9.3; extra == "doc" +Requires-Dist: rst.linker>=1.9; extra == "doc" +Requires-Dist: furo; extra == "doc" +Requires-Dist: sphinx-lint; extra == "doc" +Requires-Dist: jaraco.tidelift>=1.4; extra == "doc" +Provides-Extra: perf +Requires-Dist: ipython; extra == "perf" +Provides-Extra: check +Requires-Dist: pytest-checkdocs>=2.4; extra == "check" +Requires-Dist: pytest-ruff>=0.2.1; sys_platform != "cygwin" and extra == "check" +Provides-Extra: cover +Requires-Dist: pytest-cov; extra == "cover" +Provides-Extra: enabler +Requires-Dist: pytest-enabler>=2.2; extra == "enabler" +Provides-Extra: type +Requires-Dist: pytest-mypy; extra == "type" + +.. image:: https://img.shields.io/pypi/v/importlib_metadata.svg + :target: https://pypi.org/project/importlib_metadata + +.. image:: https://img.shields.io/pypi/pyversions/importlib_metadata.svg + +.. image:: https://github.com/python/importlib_metadata/actions/workflows/main.yml/badge.svg + :target: https://github.com/python/importlib_metadata/actions?query=workflow%3A%22tests%22 + :alt: tests + +.. image:: https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/charliermarsh/ruff/main/assets/badge/v2.json + :target: https://github.com/astral-sh/ruff + :alt: Ruff + +.. image:: https://readthedocs.org/projects/importlib-metadata/badge/?version=latest + :target: https://importlib-metadata.readthedocs.io/en/latest/?badge=latest + +.. image:: https://img.shields.io/badge/skeleton-2024-informational + :target: https://blog.jaraco.com/skeleton + +.. image:: https://tidelift.com/badges/package/pypi/importlib-metadata + :target: https://tidelift.com/subscription/pkg/pypi-importlib-metadata?utm_source=pypi-importlib-metadata&utm_medium=readme + +Library to access the metadata for a Python package. + +This package supplies third-party access to the functionality of +`importlib.metadata `_ +including improvements added to subsequent Python versions. + + +Compatibility +============= + +New features are introduced in this third-party library and later merged +into CPython. The following table indicates which versions of this library +were contributed to different versions in the standard library: + +.. list-table:: + :header-rows: 1 + + * - importlib_metadata + - stdlib + * - 7.0 + - 3.13 + * - 6.5 + - 3.12 + * - 4.13 + - 3.11 + * - 4.6 + - 3.10 + * - 1.4 + - 3.8 + + +Usage +===== + +See the `online documentation `_ +for usage details. + +`Finder authors +`_ can +also add support for custom package installers. See the above documentation +for details. + + +Caveats +======= + +This project primarily supports third-party packages installed by PyPA +tools (or other conforming packages). It does not support: + +- Packages in the stdlib. +- Packages installed without metadata. + +Project details +=============== + + * Project home: https://github.com/python/importlib_metadata + * Report bugs at: https://github.com/python/importlib_metadata/issues + * Code hosting: https://github.com/python/importlib_metadata + * Documentation: https://importlib-metadata.readthedocs.io/ + +For Enterprise +============== + +Available as part of the Tidelift Subscription. + +This project and the maintainers of thousands of other packages are working with Tidelift to deliver one enterprise subscription that covers all of the open source you use. + +`Learn more `_. diff --git a/dist/HandoverSystem/_internal/importlib_metadata-8.6.1.dist-info/RECORD b/dist/HandoverSystem/_internal/importlib_metadata-8.6.1.dist-info/RECORD new file mode 100644 index 0000000..d07ce41 --- /dev/null +++ b/dist/HandoverSystem/_internal/importlib_metadata-8.6.1.dist-info/RECORD @@ -0,0 +1,31 @@ +importlib_metadata-8.6.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +importlib_metadata-8.6.1.dist-info/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358 +importlib_metadata-8.6.1.dist-info/METADATA,sha256=F24ATbamOm1kp40IQGodtMLWMrH-fVEksdySlZk_KAY,4738 +importlib_metadata-8.6.1.dist-info/RECORD,, +importlib_metadata-8.6.1.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91 +importlib_metadata-8.6.1.dist-info/top_level.txt,sha256=CO3fD9yylANiXkrMo4qHLV_mqXL2sC5JFKgt1yWAT-A,19 +importlib_metadata/__init__.py,sha256=-Sk7aVqfmzLecdjSOpLKo1P_PegQanR__HsMMyEq0PI,35853 +importlib_metadata/__pycache__/__init__.cpython-311.pyc,, +importlib_metadata/__pycache__/_adapters.cpython-311.pyc,, +importlib_metadata/__pycache__/_collections.cpython-311.pyc,, +importlib_metadata/__pycache__/_compat.cpython-311.pyc,, +importlib_metadata/__pycache__/_functools.cpython-311.pyc,, +importlib_metadata/__pycache__/_itertools.cpython-311.pyc,, +importlib_metadata/__pycache__/_meta.cpython-311.pyc,, +importlib_metadata/__pycache__/_text.cpython-311.pyc,, +importlib_metadata/__pycache__/diagnose.cpython-311.pyc,, +importlib_metadata/_adapters.py,sha256=9Y3FAlZuoo8pOMVLnKXm5Xx6hKgsdUQOXF5SkiDGqWo,3784 +importlib_metadata/_collections.py,sha256=CJ0OTCHIjWA0ZIVS4voORAsn2R4R2cQBEtPsZEJpASY,743 +importlib_metadata/_compat.py,sha256=VC5ZDLlT-BcshauCShdFJvMNLntJJfZzNK1meGa-enw,1313 +importlib_metadata/_functools.py,sha256=bSbAqC9-2niWM9364FYBx9GWtetnJEfo4mdLv8uMl7c,2895 +importlib_metadata/_itertools.py,sha256=nMvp9SfHAQ_JYwK4L2i64lr3GRXGlYlikGTVzWbys_E,5351 +importlib_metadata/_meta.py,sha256=JzuqMG4za5MoaBPCPv61c26fUBdQPZ4by3pbaQA_E_o,1823 +importlib_metadata/_text.py,sha256=HCsFksZpJLeTP3NEk_ngrAeXVRRtTrtyh9eOABoRP4A,2166 +importlib_metadata/compat/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +importlib_metadata/compat/__pycache__/__init__.cpython-311.pyc,, +importlib_metadata/compat/__pycache__/py311.cpython-311.pyc,, +importlib_metadata/compat/__pycache__/py39.cpython-311.pyc,, +importlib_metadata/compat/py311.py,sha256=uqm-K-uohyj1042TH4a9Er_I5o7667DvulcD-gC_fSA,608 +importlib_metadata/compat/py39.py,sha256=cPkMv6-0ilK-0Jw_Tkn0xYbOKJZc4WJKQHow0c2T44w,1102 +importlib_metadata/diagnose.py,sha256=nkSRMiowlmkhLYhKhvCg9glmt_11Cox-EmLzEbqYTa8,379 +importlib_metadata/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 diff --git a/dist/HandoverSystem/_internal/importlib_metadata-8.6.1.dist-info/WHEEL b/dist/HandoverSystem/_internal/importlib_metadata-8.6.1.dist-info/WHEEL new file mode 100644 index 0000000..505164b --- /dev/null +++ b/dist/HandoverSystem/_internal/importlib_metadata-8.6.1.dist-info/WHEEL @@ -0,0 +1,5 @@ +Wheel-Version: 1.0 +Generator: setuptools (75.8.0) +Root-Is-Purelib: true +Tag: py3-none-any + diff --git a/dist/HandoverSystem/_internal/importlib_metadata-8.6.1.dist-info/top_level.txt b/dist/HandoverSystem/_internal/importlib_metadata-8.6.1.dist-info/top_level.txt new file mode 100644 index 0000000..bbb0754 --- /dev/null +++ b/dist/HandoverSystem/_internal/importlib_metadata-8.6.1.dist-info/top_level.txt @@ -0,0 +1 @@ +importlib_metadata diff --git a/dist/HandoverSystem/_internal/libcrypto-3.dll b/dist/HandoverSystem/_internal/libcrypto-3.dll new file mode 100644 index 0000000..dd511fb Binary files /dev/null and b/dist/HandoverSystem/_internal/libcrypto-3.dll differ diff --git a/dist/HandoverSystem/_internal/libffi-8.dll b/dist/HandoverSystem/_internal/libffi-8.dll new file mode 100644 index 0000000..8ebbbe8 Binary files /dev/null and b/dist/HandoverSystem/_internal/libffi-8.dll differ diff --git a/dist/HandoverSystem/_internal/libssl-3.dll b/dist/HandoverSystem/_internal/libssl-3.dll new file mode 100644 index 0000000..b9bc652 Binary files /dev/null and b/dist/HandoverSystem/_internal/libssl-3.dll differ diff --git a/dist/HandoverSystem/_internal/logs/app_20260117.log b/dist/HandoverSystem/_internal/logs/app_20260117.log new file mode 100644 index 0000000..e69de29 diff --git a/dist/HandoverSystem/_internal/logs/app_20260118.log b/dist/HandoverSystem/_internal/logs/app_20260118.log new file mode 100644 index 0000000..e69de29 diff --git a/dist/HandoverSystem/_internal/logs/error_20260117.log b/dist/HandoverSystem/_internal/logs/error_20260117.log new file mode 100644 index 0000000..e69de29 diff --git a/dist/HandoverSystem/_internal/logs/error_20260118.log b/dist/HandoverSystem/_internal/logs/error_20260118.log new file mode 100644 index 0000000..e69de29 diff --git a/dist/HandoverSystem/_internal/numpy-2.3.4.dist-info/DELVEWHEEL b/dist/HandoverSystem/_internal/numpy-2.3.4.dist-info/DELVEWHEEL new file mode 100644 index 0000000..4326949 --- /dev/null +++ b/dist/HandoverSystem/_internal/numpy-2.3.4.dist-info/DELVEWHEEL @@ -0,0 +1,2 @@ +Version: 1.11.1 +Arguments: ['C:\\Users\\runneradmin\\AppData\\Local\\Temp\\cibw-run-nvpocyoj\\cp311-win_amd64\\build\\venv\\Scripts\\delvewheel', 'repair', '--add-path', 'D:/a/numpy-release/numpy-release/.openblas/lib', '-w', 'C:\\Users\\runneradmin\\AppData\\Local\\Temp\\cibw-run-nvpocyoj\\cp311-win_amd64\\repaired_wheel', 'C:\\Users\\runneradmin\\AppData\\Local\\Temp\\cibw-run-nvpocyoj\\cp311-win_amd64\\built_wheel\\numpy-2.3.4-cp311-cp311-win_amd64.whl'] diff --git a/dist/HandoverSystem/_internal/numpy-2.3.4.dist-info/INSTALLER b/dist/HandoverSystem/_internal/numpy-2.3.4.dist-info/INSTALLER new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/dist/HandoverSystem/_internal/numpy-2.3.4.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/dist/HandoverSystem/_internal/numpy-2.3.4.dist-info/LICENSE.txt b/dist/HandoverSystem/_internal/numpy-2.3.4.dist-info/LICENSE.txt new file mode 100644 index 0000000..a2945da --- /dev/null +++ b/dist/HandoverSystem/_internal/numpy-2.3.4.dist-info/LICENSE.txt @@ -0,0 +1,950 @@ +Copyright (c) 2005-2025, NumPy Developers. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of the NumPy Developers nor the names of any + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +---- + +The NumPy repository and source distributions bundle several libraries that are +compatibly licensed. We list these here. + +Name: lapack-lite +Files: numpy/linalg/lapack_lite/* +License: BSD-3-Clause + For details, see numpy/linalg/lapack_lite/LICENSE.txt + +Name: dragon4 +Files: numpy/_core/src/multiarray/dragon4.c +License: MIT + For license text, see numpy/_core/src/multiarray/dragon4.c + +Name: libdivide +Files: numpy/_core/include/numpy/libdivide/* +License: Zlib + For license text, see numpy/_core/include/numpy/libdivide/LICENSE.txt + + +Note that the following files are vendored in the repository and sdist but not +installed in built numpy packages: + +Name: Meson +Files: vendored-meson/meson/* +License: Apache 2.0 + For license text, see vendored-meson/meson/COPYING + +Name: spin +Files: .spin/cmds.py +License: BSD-3 + For license text, see .spin/LICENSE + +Name: tempita +Files: numpy/_build_utils/tempita/* +License: MIT + For details, see numpy/_build_utils/tempita/LICENCE.txt + +---- + +This binary distribution of NumPy also bundles the following software: + + +Name: OpenBLAS +Files: numpy.libs\libscipy_openblas*.dll +Description: bundled as a dynamically linked library +Availability: https://github.com/OpenMathLib/OpenBLAS/ +License: BSD-3-Clause + Copyright (c) 2011-2014, The OpenBLAS Project + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + 3. Neither the name of the OpenBLAS project nor the names of + its contributors may be used to endorse or promote products + derived from this software without specific prior written + permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +Name: LAPACK +Files: numpy.libs\libscipy_openblas*.dll +Description: bundled in OpenBLAS +Availability: https://github.com/OpenMathLib/OpenBLAS/ +License: BSD-3-Clause-Open-MPI + Copyright (c) 1992-2013 The University of Tennessee and The University + of Tennessee Research Foundation. All rights + reserved. + Copyright (c) 2000-2013 The University of California Berkeley. All + rights reserved. + Copyright (c) 2006-2013 The University of Colorado Denver. All rights + reserved. + + $COPYRIGHT$ + + Additional copyrights may follow + + $HEADER$ + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + - Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + - Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer listed + in this license in the documentation and/or other materials + provided with the distribution. + + - Neither the name of the copyright holders nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + The copyright holders provide no reassurances that the source code + provided does not infringe any patent, copyright, or any other + intellectual property rights of third parties. The copyright holders + disclaim any liability to any recipient for claims brought against + recipient by any third party for infringement of that parties + intellectual property rights. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +Name: GCC runtime library +Files: numpy.libs\libscipy_openblas*.dll +Description: statically linked to files compiled with gcc +Availability: https://gcc.gnu.org/git/?p=gcc.git;a=tree;f=libgfortran +License: GPL-3.0-or-later WITH GCC-exception-3.1 + Copyright (C) 2002-2017 Free Software Foundation, Inc. + + Libgfortran is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3, or (at your option) + any later version. + + Libgfortran is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + Under Section 7 of GPL version 3, you are granted additional + permissions described in the GCC Runtime Library Exception, version + 3.1, as published by the Free Software Foundation. + + You should have received a copy of the GNU General Public License and + a copy of the GCC Runtime Library Exception along with this program; + see the files COPYING3 and COPYING.RUNTIME respectively. If not, see + . + +---- + +Full text of license texts referred to above follows (that they are +listed below does not necessarily imply the conditions apply to the +present binary release): + +---- + +GCC RUNTIME LIBRARY EXCEPTION + +Version 3.1, 31 March 2009 + +Copyright (C) 2009 Free Software Foundation, Inc. + +Everyone is permitted to copy and distribute verbatim copies of this +license document, but changing it is not allowed. + +This GCC Runtime Library Exception ("Exception") is an additional +permission under section 7 of the GNU General Public License, version +3 ("GPLv3"). It applies to a given file (the "Runtime Library") that +bears a notice placed by the copyright holder of the file stating that +the file is governed by GPLv3 along with this Exception. + +When you use GCC to compile a program, GCC may combine portions of +certain GCC header files and runtime libraries with the compiled +program. The purpose of this Exception is to allow compilation of +non-GPL (including proprietary) programs to use, in this way, the +header files and runtime libraries covered by this Exception. + +0. Definitions. + +A file is an "Independent Module" if it either requires the Runtime +Library for execution after a Compilation Process, or makes use of an +interface provided by the Runtime Library, but is not otherwise based +on the Runtime Library. + +"GCC" means a version of the GNU Compiler Collection, with or without +modifications, governed by version 3 (or a specified later version) of +the GNU General Public License (GPL) with the option of using any +subsequent versions published by the FSF. + +"GPL-compatible Software" is software whose conditions of propagation, +modification and use would permit combination with GCC in accord with +the license of GCC. + +"Target Code" refers to output from any compiler for a real or virtual +target processor architecture, in executable form or suitable for +input to an assembler, loader, linker and/or execution +phase. Notwithstanding that, Target Code does not include data in any +format that is used as a compiler intermediate representation, or used +for producing a compiler intermediate representation. + +The "Compilation Process" transforms code entirely represented in +non-intermediate languages designed for human-written code, and/or in +Java Virtual Machine byte code, into Target Code. Thus, for example, +use of source code generators and preprocessors need not be considered +part of the Compilation Process, since the Compilation Process can be +understood as starting with the output of the generators or +preprocessors. + +A Compilation Process is "Eligible" if it is done using GCC, alone or +with other GPL-compatible software, or if it is done without using any +work based on GCC. For example, using non-GPL-compatible Software to +optimize any GCC intermediate representations would not qualify as an +Eligible Compilation Process. + +1. Grant of Additional Permission. + +You have permission to propagate a work of Target Code formed by +combining the Runtime Library with Independent Modules, even if such +propagation would otherwise violate the terms of GPLv3, provided that +all Target Code was generated by Eligible Compilation Processes. You +may then convey such a combination under terms of your choice, +consistent with the licensing of the Independent Modules. + +2. No Weakening of GCC Copyleft. + +The availability of this Exception does not imply any general +presumption that third-party software is unaffected by the copyleft +requirements of the license of GCC. + +---- + + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. + diff --git a/dist/HandoverSystem/_internal/numpy-2.3.4.dist-info/METADATA b/dist/HandoverSystem/_internal/numpy-2.3.4.dist-info/METADATA new file mode 100644 index 0000000..87d394f --- /dev/null +++ b/dist/HandoverSystem/_internal/numpy-2.3.4.dist-info/METADATA @@ -0,0 +1,1072 @@ +Metadata-Version: 2.1 +Name: numpy +Version: 2.3.4 +Summary: Fundamental package for array computing in Python +Author: Travis E. Oliphant et al. +Maintainer-Email: NumPy Developers +License: Copyright (c) 2005-2025, NumPy Developers. + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of the NumPy Developers nor the names of any + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + ---- + + The NumPy repository and source distributions bundle several libraries that are + compatibly licensed. We list these here. + + Name: lapack-lite + Files: numpy/linalg/lapack_lite/* + License: BSD-3-Clause + For details, see numpy/linalg/lapack_lite/LICENSE.txt + + Name: dragon4 + Files: numpy/_core/src/multiarray/dragon4.c + License: MIT + For license text, see numpy/_core/src/multiarray/dragon4.c + + Name: libdivide + Files: numpy/_core/include/numpy/libdivide/* + License: Zlib + For license text, see numpy/_core/include/numpy/libdivide/LICENSE.txt + + + Note that the following files are vendored in the repository and sdist but not + installed in built numpy packages: + + Name: Meson + Files: vendored-meson/meson/* + License: Apache 2.0 + For license text, see vendored-meson/meson/COPYING + + Name: spin + Files: .spin/cmds.py + License: BSD-3 + For license text, see .spin/LICENSE + + Name: tempita + Files: numpy/_build_utils/tempita/* + License: MIT + For details, see numpy/_build_utils/tempita/LICENCE.txt + + ---- + + This binary distribution of NumPy also bundles the following software: + + + Name: OpenBLAS + Files: numpy.libs\libscipy_openblas*.dll + Description: bundled as a dynamically linked library + Availability: https://github.com/OpenMathLib/OpenBLAS/ + License: BSD-3-Clause + Copyright (c) 2011-2014, The OpenBLAS Project + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + 3. Neither the name of the OpenBLAS project nor the names of + its contributors may be used to endorse or promote products + derived from this software without specific prior written + permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + Name: LAPACK + Files: numpy.libs\libscipy_openblas*.dll + Description: bundled in OpenBLAS + Availability: https://github.com/OpenMathLib/OpenBLAS/ + License: BSD-3-Clause-Open-MPI + Copyright (c) 1992-2013 The University of Tennessee and The University + of Tennessee Research Foundation. All rights + reserved. + Copyright (c) 2000-2013 The University of California Berkeley. All + rights reserved. + Copyright (c) 2006-2013 The University of Colorado Denver. All rights + reserved. + + $COPYRIGHT$ + + Additional copyrights may follow + + $HEADER$ + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + - Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + - Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer listed + in this license in the documentation and/or other materials + provided with the distribution. + + - Neither the name of the copyright holders nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + The copyright holders provide no reassurances that the source code + provided does not infringe any patent, copyright, or any other + intellectual property rights of third parties. The copyright holders + disclaim any liability to any recipient for claims brought against + recipient by any third party for infringement of that parties + intellectual property rights. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + Name: GCC runtime library + Files: numpy.libs\libscipy_openblas*.dll + Description: statically linked to files compiled with gcc + Availability: https://gcc.gnu.org/git/?p=gcc.git;a=tree;f=libgfortran + License: GPL-3.0-or-later WITH GCC-exception-3.1 + Copyright (C) 2002-2017 Free Software Foundation, Inc. + + Libgfortran is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3, or (at your option) + any later version. + + Libgfortran is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + Under Section 7 of GPL version 3, you are granted additional + permissions described in the GCC Runtime Library Exception, version + 3.1, as published by the Free Software Foundation. + + You should have received a copy of the GNU General Public License and + a copy of the GCC Runtime Library Exception along with this program; + see the files COPYING3 and COPYING.RUNTIME respectively. If not, see + . + + ---- + + Full text of license texts referred to above follows (that they are + listed below does not necessarily imply the conditions apply to the + present binary release): + + ---- + + GCC RUNTIME LIBRARY EXCEPTION + + Version 3.1, 31 March 2009 + + Copyright (C) 2009 Free Software Foundation, Inc. + + Everyone is permitted to copy and distribute verbatim copies of this + license document, but changing it is not allowed. + + This GCC Runtime Library Exception ("Exception") is an additional + permission under section 7 of the GNU General Public License, version + 3 ("GPLv3"). It applies to a given file (the "Runtime Library") that + bears a notice placed by the copyright holder of the file stating that + the file is governed by GPLv3 along with this Exception. + + When you use GCC to compile a program, GCC may combine portions of + certain GCC header files and runtime libraries with the compiled + program. The purpose of this Exception is to allow compilation of + non-GPL (including proprietary) programs to use, in this way, the + header files and runtime libraries covered by this Exception. + + 0. Definitions. + + A file is an "Independent Module" if it either requires the Runtime + Library for execution after a Compilation Process, or makes use of an + interface provided by the Runtime Library, but is not otherwise based + on the Runtime Library. + + "GCC" means a version of the GNU Compiler Collection, with or without + modifications, governed by version 3 (or a specified later version) of + the GNU General Public License (GPL) with the option of using any + subsequent versions published by the FSF. + + "GPL-compatible Software" is software whose conditions of propagation, + modification and use would permit combination with GCC in accord with + the license of GCC. + + "Target Code" refers to output from any compiler for a real or virtual + target processor architecture, in executable form or suitable for + input to an assembler, loader, linker and/or execution + phase. Notwithstanding that, Target Code does not include data in any + format that is used as a compiler intermediate representation, or used + for producing a compiler intermediate representation. + + The "Compilation Process" transforms code entirely represented in + non-intermediate languages designed for human-written code, and/or in + Java Virtual Machine byte code, into Target Code. Thus, for example, + use of source code generators and preprocessors need not be considered + part of the Compilation Process, since the Compilation Process can be + understood as starting with the output of the generators or + preprocessors. + + A Compilation Process is "Eligible" if it is done using GCC, alone or + with other GPL-compatible software, or if it is done without using any + work based on GCC. For example, using non-GPL-compatible Software to + optimize any GCC intermediate representations would not qualify as an + Eligible Compilation Process. + + 1. Grant of Additional Permission. + + You have permission to propagate a work of Target Code formed by + combining the Runtime Library with Independent Modules, even if such + propagation would otherwise violate the terms of GPLv3, provided that + all Target Code was generated by Eligible Compilation Processes. You + may then convey such a combination under terms of your choice, + consistent with the licensing of the Independent Modules. + + 2. No Weakening of GCC Copyleft. + + The availability of this Exception does not imply any general + presumption that third-party software is unaffected by the copyleft + requirements of the license of GCC. + + ---- + + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for + software and other kinds of works. + + The licenses for most software and other practical works are designed + to take away your freedom to share and change the works. By contrast, + the GNU General Public License is intended to guarantee your freedom to + share and change all versions of a program--to make sure it remains free + software for all its users. We, the Free Software Foundation, use the + GNU General Public License for most of our software; it applies also to + any other work released this way by its authors. You can apply it to + your programs, too. + + When we speak of free software, we are referring to freedom, not + price. Our General Public Licenses are designed to make sure that you + have the freedom to distribute copies of free software (and charge for + them if you wish), that you receive source code or can get it if you + want it, that you can change the software or use pieces of it in new + free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you + these rights or asking you to surrender the rights. Therefore, you have + certain responsibilities if you distribute copies of the software, or if + you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether + gratis or for a fee, you must pass on to the recipients the same + freedoms that you received. You must make sure that they, too, receive + or can get the source code. And you must show them these terms so they + know their rights. + + Developers that use the GNU GPL protect your rights with two steps: + (1) assert copyright on the software, and (2) offer you this License + giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains + that there is no warranty for this free software. For both users' and + authors' sake, the GPL requires that modified versions be marked as + changed, so that their problems will not be attributed erroneously to + authors of previous versions. + + Some devices are designed to deny users access to install or run + modified versions of the software inside them, although the manufacturer + can do so. This is fundamentally incompatible with the aim of + protecting users' freedom to change the software. The systematic + pattern of such abuse occurs in the area of products for individuals to + use, which is precisely where it is most unacceptable. Therefore, we + have designed this version of the GPL to prohibit the practice for those + products. If such problems arise substantially in other domains, we + stand ready to extend this provision to those domains in future versions + of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. + States should not allow patents to restrict development and use of + software on general-purpose computers, but in those that do, we wish to + avoid the special danger that patents applied to a free program could + make it effectively proprietary. To prevent this, the GPL assures that + patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and + modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of + works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this + License. Each licensee is addressed as "you". "Licensees" and + "recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work + in a fashion requiring copyright permission, other than the making of an + exact copy. The resulting work is called a "modified version" of the + earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based + on the Program. + + To "propagate" a work means to do anything with it that, without + permission, would make you directly or secondarily liable for + infringement under applicable copyright law, except executing it on a + computer or modifying a private copy. Propagation includes copying, + distribution (with or without modification), making available to the + public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other + parties to make or receive copies. Mere interaction with a user through + a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" + to the extent that it includes a convenient and prominently visible + feature that (1) displays an appropriate copyright notice, and (2) + tells the user that there is no warranty for the work (except to the + extent that warranties are provided), that licensees may convey the + work under this License, and how to view a copy of this License. If + the interface presents a list of user commands or options, such as a + menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work + for making modifications to it. "Object code" means any non-source + form of a work. + + A "Standard Interface" means an interface that either is an official + standard defined by a recognized standards body, or, in the case of + interfaces specified for a particular programming language, one that + is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other + than the work as a whole, that (a) is included in the normal form of + packaging a Major Component, but which is not part of that Major + Component, and (b) serves only to enable use of the work with that + Major Component, or to implement a Standard Interface for which an + implementation is available to the public in source code form. A + "Major Component", in this context, means a major essential component + (kernel, window system, and so on) of the specific operating system + (if any) on which the executable work runs, or a compiler used to + produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all + the source code needed to generate, install, and (for an executable + work) run the object code and to modify the work, including scripts to + control those activities. However, it does not include the work's + System Libraries, or general-purpose tools or generally available free + programs which are used unmodified in performing those activities but + which are not part of the work. For example, Corresponding Source + includes interface definition files associated with source files for + the work, and the source code for shared libraries and dynamically + linked subprograms that the work is specifically designed to require, + such as by intimate data communication or control flow between those + subprograms and other parts of the work. + + The Corresponding Source need not include anything that users + can regenerate automatically from other parts of the Corresponding + Source. + + The Corresponding Source for a work in source code form is that + same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of + copyright on the Program, and are irrevocable provided the stated + conditions are met. This License explicitly affirms your unlimited + permission to run the unmodified Program. The output from running a + covered work is covered by this License only if the output, given its + content, constitutes a covered work. This License acknowledges your + rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not + convey, without conditions so long as your license otherwise remains + in force. You may convey covered works to others for the sole purpose + of having them make modifications exclusively for you, or provide you + with facilities for running those works, provided that you comply with + the terms of this License in conveying all material for which you do + not control copyright. Those thus making or running the covered works + for you must do so exclusively on your behalf, under your direction + and control, on terms that prohibit them from making any copies of + your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under + the conditions stated below. Sublicensing is not allowed; section 10 + makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological + measure under any applicable law fulfilling obligations under article + 11 of the WIPO copyright treaty adopted on 20 December 1996, or + similar laws prohibiting or restricting circumvention of such + measures. + + When you convey a covered work, you waive any legal power to forbid + circumvention of technological measures to the extent such circumvention + is effected by exercising rights under this License with respect to + the covered work, and you disclaim any intention to limit operation or + modification of the work as a means of enforcing, against the work's + users, your or third parties' legal rights to forbid circumvention of + technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you + receive it, in any medium, provided that you conspicuously and + appropriately publish on each copy an appropriate copyright notice; + keep intact all notices stating that this License and any + non-permissive terms added in accord with section 7 apply to the code; + keep intact all notices of the absence of any warranty; and give all + recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, + and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to + produce it from the Program, in the form of source code under the + terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent + works, which are not by their nature extensions of the covered work, + and which are not combined with it such as to form a larger program, + in or on a volume of a storage or distribution medium, is called an + "aggregate" if the compilation and its resulting copyright are not + used to limit the access or legal rights of the compilation's users + beyond what the individual works permit. Inclusion of a covered work + in an aggregate does not cause this License to apply to the other + parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms + of sections 4 and 5, provided that you also convey the + machine-readable Corresponding Source under the terms of this License, + in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded + from the Corresponding Source as a System Library, need not be + included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any + tangible personal property which is normally used for personal, family, + or household purposes, or (2) anything designed or sold for incorporation + into a dwelling. In determining whether a product is a consumer product, + doubtful cases shall be resolved in favor of coverage. For a particular + product received by a particular user, "normally used" refers to a + typical or common use of that class of product, regardless of the status + of the particular user or of the way in which the particular user + actually uses, or expects or is expected to use, the product. A product + is a consumer product regardless of whether the product has substantial + commercial, industrial or non-consumer uses, unless such uses represent + the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, + procedures, authorization keys, or other information required to install + and execute modified versions of a covered work in that User Product from + a modified version of its Corresponding Source. The information must + suffice to ensure that the continued functioning of the modified object + code is in no case prevented or interfered with solely because + modification has been made. + + If you convey an object code work under this section in, or with, or + specifically for use in, a User Product, and the conveying occurs as + part of a transaction in which the right of possession and use of the + User Product is transferred to the recipient in perpetuity or for a + fixed term (regardless of how the transaction is characterized), the + Corresponding Source conveyed under this section must be accompanied + by the Installation Information. But this requirement does not apply + if neither you nor any third party retains the ability to install + modified object code on the User Product (for example, the work has + been installed in ROM). + + The requirement to provide Installation Information does not include a + requirement to continue to provide support service, warranty, or updates + for a work that has been modified or installed by the recipient, or for + the User Product in which it has been modified or installed. Access to a + network may be denied when the modification itself materially and + adversely affects the operation of the network or violates the rules and + protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, + in accord with this section must be in a format that is publicly + documented (and with an implementation available to the public in + source code form), and must require no special password or key for + unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this + License by making exceptions from one or more of its conditions. + Additional permissions that are applicable to the entire Program shall + be treated as though they were included in this License, to the extent + that they are valid under applicable law. If additional permissions + apply only to part of the Program, that part may be used separately + under those permissions, but the entire Program remains governed by + this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option + remove any additional permissions from that copy, or from any part of + it. (Additional permissions may be written to require their own + removal in certain cases when you modify the work.) You may place + additional permissions on material, added by you to a covered work, + for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you + add to a covered work, you may (if authorized by the copyright holders of + that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further + restrictions" within the meaning of section 10. If the Program as you + received it, or any part of it, contains a notice stating that it is + governed by this License along with a term that is a further + restriction, you may remove that term. If a license document contains + a further restriction but permits relicensing or conveying under this + License, you may add to a covered work material governed by the terms + of that license document, provided that the further restriction does + not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you + must place, in the relevant source files, a statement of the + additional terms that apply to those files, or a notice indicating + where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the + form of a separately written license, or stated as exceptions; + the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly + provided under this License. Any attempt otherwise to propagate or + modify it is void, and will automatically terminate your rights under + this License (including any patent licenses granted under the third + paragraph of section 11). + + However, if you cease all violation of this License, then your + license from a particular copyright holder is reinstated (a) + provisionally, unless and until the copyright holder explicitly and + finally terminates your license, and (b) permanently, if the copyright + holder fails to notify you of the violation by some reasonable means + prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is + reinstated permanently if the copyright holder notifies you of the + violation by some reasonable means, this is the first time you have + received notice of violation of this License (for any work) from that + copyright holder, and you cure the violation prior to 30 days after + your receipt of the notice. + + Termination of your rights under this section does not terminate the + licenses of parties who have received copies or rights from you under + this License. If your rights have been terminated and not permanently + reinstated, you do not qualify to receive new licenses for the same + material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or + run a copy of the Program. Ancillary propagation of a covered work + occurring solely as a consequence of using peer-to-peer transmission + to receive a copy likewise does not require acceptance. However, + nothing other than this License grants you permission to propagate or + modify any covered work. These actions infringe copyright if you do + not accept this License. Therefore, by modifying or propagating a + covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically + receives a license from the original licensors, to run, modify and + propagate that work, subject to this License. You are not responsible + for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an + organization, or substantially all assets of one, or subdividing an + organization, or merging organizations. If propagation of a covered + work results from an entity transaction, each party to that + transaction who receives a copy of the work also receives whatever + licenses to the work the party's predecessor in interest had or could + give under the previous paragraph, plus a right to possession of the + Corresponding Source of the work from the predecessor in interest, if + the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the + rights granted or affirmed under this License. For example, you may + not impose a license fee, royalty, or other charge for exercise of + rights granted under this License, and you may not initiate litigation + (including a cross-claim or counterclaim in a lawsuit) alleging that + any patent claim is infringed by making, using, selling, offering for + sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this + License of the Program or a work on which the Program is based. The + work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims + owned or controlled by the contributor, whether already acquired or + hereafter acquired, that would be infringed by some manner, permitted + by this License, of making, using, or selling its contributor version, + but do not include claims that would be infringed only as a + consequence of further modification of the contributor version. For + purposes of this definition, "control" includes the right to grant + patent sublicenses in a manner consistent with the requirements of + this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free + patent license under the contributor's essential patent claims, to + make, use, sell, offer for sale, import and otherwise run, modify and + propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express + agreement or commitment, however denominated, not to enforce a patent + (such as an express permission to practice a patent or covenant not to + sue for patent infringement). To "grant" such a patent license to a + party means to make such an agreement or commitment not to enforce a + patent against the party. + + If you convey a covered work, knowingly relying on a patent license, + and the Corresponding Source of the work is not available for anyone + to copy, free of charge and under the terms of this License, through a + publicly available network server or other readily accessible means, + then you must either (1) cause the Corresponding Source to be so + available, or (2) arrange to deprive yourself of the benefit of the + patent license for this particular work, or (3) arrange, in a manner + consistent with the requirements of this License, to extend the patent + license to downstream recipients. "Knowingly relying" means you have + actual knowledge that, but for the patent license, your conveying the + covered work in a country, or your recipient's use of the covered work + in a country, would infringe one or more identifiable patents in that + country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or + arrangement, you convey, or propagate by procuring conveyance of, a + covered work, and grant a patent license to some of the parties + receiving the covered work authorizing them to use, propagate, modify + or convey a specific copy of the covered work, then the patent license + you grant is automatically extended to all recipients of the covered + work and works based on it. + + A patent license is "discriminatory" if it does not include within + the scope of its coverage, prohibits the exercise of, or is + conditioned on the non-exercise of one or more of the rights that are + specifically granted under this License. You may not convey a covered + work if you are a party to an arrangement with a third party that is + in the business of distributing software, under which you make payment + to the third party based on the extent of your activity of conveying + the work, and under which the third party grants, to any of the + parties who would receive the covered work from you, a discriminatory + patent license (a) in connection with copies of the covered work + conveyed by you (or copies made from those copies), or (b) primarily + for and in connection with specific products or compilations that + contain the covered work, unless you entered into that arrangement, + or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting + any implied license or other defenses to infringement that may + otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or + otherwise) that contradict the conditions of this License, they do not + excuse you from the conditions of this License. If you cannot convey a + covered work so as to satisfy simultaneously your obligations under this + License and any other pertinent obligations, then as a consequence you may + not convey it at all. For example, if you agree to terms that obligate you + to collect a royalty for further conveying from those to whom you convey + the Program, the only way you could satisfy both those terms and this + License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have + permission to link or combine any covered work with a work licensed + under version 3 of the GNU Affero General Public License into a single + combined work, and to convey the resulting work. The terms of this + License will continue to apply to the part which is the covered work, + but the special requirements of the GNU Affero General Public License, + section 13, concerning interaction through a network will apply to the + combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of + the GNU General Public License from time to time. Such new versions will + be similar in spirit to the present version, but may differ in detail to + address new problems or concerns. + + Each version is given a distinguishing version number. If the + Program specifies that a certain numbered version of the GNU General + Public License "or any later version" applies to it, you have the + option of following the terms and conditions either of that numbered + version or of any later version published by the Free Software + Foundation. If the Program does not specify a version number of the + GNU General Public License, you may choose any version ever published + by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future + versions of the GNU General Public License can be used, that proxy's + public statement of acceptance of a version permanently authorizes you + to choose that version for the Program. + + Later license versions may give you additional or different + permissions. However, no additional obligations are imposed on any + author or copyright holder as a result of your choosing to follow a + later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY + APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT + HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY + OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, + THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM + IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF + ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING + WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS + THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY + GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE + USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF + DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD + PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), + EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF + SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided + above cannot be given local legal effect according to their terms, + reviewing courts shall apply local law that most closely approximates + an absolute waiver of all civil liability in connection with the + Program, unless a warranty or assumption of liability accompanies a + copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest + possible use to the public, the best way to achieve this is to make it + free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest + to attach them to the start of each source file to most effectively + state the exclusion of warranty; and each file should have at least + the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + + Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short + notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + + The hypothetical commands `show w' and `show c' should show the appropriate + parts of the General Public License. Of course, your program's commands + might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, + if any, to sign a "copyright disclaimer" for the program, if necessary. + For more information on this, and how to apply and follow the GNU GPL, see + . + + The GNU General Public License does not permit incorporating your program + into proprietary programs. If your program is a subroutine library, you + may consider it more useful to permit linking proprietary applications with + the library. If this is what you want to do, use the GNU Lesser General + Public License instead of this License. But first, please read + . + + +Classifier: Development Status :: 5 - Production/Stable +Classifier: Intended Audience :: Science/Research +Classifier: Intended Audience :: Developers +Classifier: License :: OSI Approved :: BSD License +Classifier: Programming Language :: C +Classifier: Programming Language :: Python +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3.11 +Classifier: Programming Language :: Python :: 3.12 +Classifier: Programming Language :: Python :: 3.13 +Classifier: Programming Language :: Python :: 3.14 +Classifier: Programming Language :: Python :: 3 :: Only +Classifier: Programming Language :: Python :: Implementation :: CPython +Classifier: Topic :: Software Development +Classifier: Topic :: Scientific/Engineering +Classifier: Typing :: Typed +Classifier: Operating System :: Microsoft :: Windows +Classifier: Operating System :: POSIX +Classifier: Operating System :: Unix +Classifier: Operating System :: MacOS +Project-URL: homepage, https://numpy.org +Project-URL: documentation, https://numpy.org/doc/ +Project-URL: source, https://github.com/numpy/numpy +Project-URL: download, https://pypi.org/project/numpy/#files +Project-URL: tracker, https://github.com/numpy/numpy/issues +Project-URL: release notes, https://numpy.org/doc/stable/release +Requires-Python: >=3.11 +Description-Content-Type: text/markdown + +

+ +


+ + +[![Powered by NumFOCUS](https://img.shields.io/badge/powered%20by-NumFOCUS-orange.svg?style=flat&colorA=E1523D&colorB=007D8A)]( +https://numfocus.org) +[![PyPI Downloads](https://img.shields.io/pypi/dm/numpy.svg?label=PyPI%20downloads)]( +https://pypi.org/project/numpy/) +[![Conda Downloads](https://img.shields.io/conda/dn/conda-forge/numpy.svg?label=Conda%20downloads)]( +https://anaconda.org/conda-forge/numpy) +[![Stack Overflow](https://img.shields.io/badge/stackoverflow-Ask%20questions-blue.svg)]( +https://stackoverflow.com/questions/tagged/numpy) +[![Nature Paper](https://img.shields.io/badge/DOI-10.1038%2Fs41586--020--2649--2-blue)]( +https://doi.org/10.1038/s41586-020-2649-2) +[![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/numpy/numpy/badge)](https://securityscorecards.dev/viewer/?uri=github.com/numpy/numpy) +[![Typing](https://img.shields.io/pypi/types/numpy)](https://pypi.org/project/numpy/) + + +NumPy is the fundamental package for scientific computing with Python. + +- **Website:** https://numpy.org +- **Documentation:** https://numpy.org/doc +- **Mailing list:** https://mail.python.org/mailman/listinfo/numpy-discussion +- **Source code:** https://github.com/numpy/numpy +- **Contributing:** https://numpy.org/devdocs/dev/index.html +- **Bug reports:** https://github.com/numpy/numpy/issues +- **Report a security vulnerability:** https://tidelift.com/docs/security + +It provides: + +- a powerful N-dimensional array object +- sophisticated (broadcasting) functions +- tools for integrating C/C++ and Fortran code +- useful linear algebra, Fourier transform, and random number capabilities + +Testing: + +NumPy requires `pytest` and `hypothesis`. Tests can then be run after installation with: + + python -c "import numpy, sys; sys.exit(numpy.test() is False)" + +Code of Conduct +---------------------- + +NumPy is a community-driven open source project developed by a diverse group of +[contributors](https://numpy.org/teams/). The NumPy leadership has made a strong +commitment to creating an open, inclusive, and positive community. Please read the +[NumPy Code of Conduct](https://numpy.org/code-of-conduct/) for guidance on how to interact +with others in a way that makes our community thrive. + +Call for Contributions +---------------------- + +The NumPy project welcomes your expertise and enthusiasm! + +Small improvements or fixes are always appreciated. If you are considering larger contributions +to the source code, please contact us through the [mailing +list](https://mail.python.org/mailman/listinfo/numpy-discussion) first. + +Writing code isn’t the only way to contribute to NumPy. You can also: +- review pull requests +- help us stay on top of new and old issues +- develop tutorials, presentations, and other educational materials +- maintain and improve [our website](https://github.com/numpy/numpy.org) +- develop graphic design for our brand assets and promotional materials +- translate website content +- help with outreach and onboard new contributors +- write grant proposals and help with other fundraising efforts + +For more information about the ways you can contribute to NumPy, visit [our website](https://numpy.org/contribute/). +If you’re unsure where to start or how your skills fit in, reach out! You can +ask on the mailing list or here, on GitHub, by opening a new issue or leaving a +comment on a relevant issue that is already open. + +Our preferred channels of communication are all public, but if you’d like to +speak to us in private first, contact our community coordinators at +numpy-team@googlegroups.com or on Slack (write numpy-team@googlegroups.com for +an invitation). + +We also have a biweekly community call, details of which are announced on the +mailing list. You are very welcome to join. + +If you are new to contributing to open source, [this +guide](https://opensource.guide/how-to-contribute/) helps explain why, what, +and how to successfully get involved. diff --git a/dist/HandoverSystem/_internal/numpy-2.3.4.dist-info/RECORD b/dist/HandoverSystem/_internal/numpy-2.3.4.dist-info/RECORD new file mode 100644 index 0000000..4fc337d --- /dev/null +++ b/dist/HandoverSystem/_internal/numpy-2.3.4.dist-info/RECORD @@ -0,0 +1,1540 @@ +../../Scripts/f2py.exe,sha256=RA4CVHeRjX8Zb0e7DQrJS2J5WtYB7ETrt7IuZLwHVcY,108375 +../../Scripts/numpy-config.exe,sha256=an6ENOweGH-D24lRWokyPOPzPz0FfG8lRKCIprG4aG4,108375 +numpy-2.3.4.dist-info/DELVEWHEEL,sha256=dQy1VlHT8OUYnuQ1Xc_QlBVIaGL-TvYjKGHxHJRby90,462 +numpy-2.3.4.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +numpy-2.3.4.dist-info/LICENSE.txt,sha256=WWuVPh3L6CmzKuREOH76FQA_xqveyoohefNkpjZMKG4,46841 +numpy-2.3.4.dist-info/METADATA,sha256=selAtlywq-BNkB-skgX45MjEyw7xindF-eX5exU6LXU,60935 +numpy-2.3.4.dist-info/RECORD,, +numpy-2.3.4.dist-info/WHEEL,sha256=JdLTWhc73oJ-lqTBYGgiVontr_vhzwzbpAOin_2bxTI,85 +numpy-2.3.4.dist-info/entry_points.txt,sha256=7Cb63gyL2sIRpsHdADpl6xaIW5JTlUI-k_yqEVr0BSw,220 +numpy.libs/libscipy_openblas64_-860d95b1c38e637ce4509f5fa24fbf2a.dll,sha256=hg2VscOOY3zkUJ9fok-_Kpi6hpb589KL8YS-50rZoyU,20403712 +numpy.libs/msvcp140-a4c2229bdc2a2a630acdc095b4d86008.dll,sha256=pMIim9wqKmMKzcCVtNhgCOXD47x3cxdDVPPaT1vrnN4,575056 +numpy/__config__.py,sha256=UlLDENVnPchRgwJuVdm8WTA-NebMfFDNiorn9H-1QPI,5725 +numpy/__config__.pyi,sha256=Zmg85dEvXfCQUlQ2VoZq2OPTV2MuwcyhHQW4RDkvJg8,2469 +numpy/__init__.cython-30.pxd,sha256=_dQ25sYPbiOsW3ACUNSDN1bgU6NCEJiY5UcTKBhbCu0,48364 +numpy/__init__.pxd,sha256=7jgfd5hTwIsb4KuAiAguiEUdLjsPm2gEr7eDNgq3itM,44912 +numpy/__init__.py,sha256=Klr6VeOY9JXwunhgSYIHWHOZevtD1cRwGouWjv_aamk,26478 +numpy/__init__.pyi,sha256=NJqySGBWuIxaQa-tVbN6iv1qCJKuf4h_dcrIxQz1RWw,247808 +numpy/__pycache__/__config__.cpython-311.pyc,, +numpy/__pycache__/__init__.cpython-311.pyc,, +numpy/__pycache__/_array_api_info.cpython-311.pyc,, +numpy/__pycache__/_configtool.cpython-311.pyc,, +numpy/__pycache__/_distributor_init.cpython-311.pyc,, +numpy/__pycache__/_expired_attrs_2_0.cpython-311.pyc,, +numpy/__pycache__/_globals.cpython-311.pyc,, +numpy/__pycache__/_pytesttester.cpython-311.pyc,, +numpy/__pycache__/conftest.cpython-311.pyc,, +numpy/__pycache__/dtypes.cpython-311.pyc,, +numpy/__pycache__/exceptions.cpython-311.pyc,, +numpy/__pycache__/matlib.cpython-311.pyc,, +numpy/__pycache__/version.cpython-311.pyc,, +numpy/_array_api_info.py,sha256=vTu3r_6WrdhkiOr1pLelut2ARey2WOmQ7BZLFt9ePSs,10700 +numpy/_array_api_info.pyi,sha256=xDNFMjgROER2wnf2C8zchoxLByR_WKEayxWCy5RQi3w,5071 +numpy/_configtool.py,sha256=qqay_oP0bqkryU55jFBE6RzgKJkquJ0bBvaYt9D-Gbs,1046 +numpy/_configtool.pyi,sha256=IlC395h8TlcZ4DiSW5i6NBQO9I74ERfXpwSYAktzoaU,25 +numpy/_core/__init__.py,sha256=Mn9BOga5ck1QA_T6MO3h5G16jzYv7TZ8fL2KFV6k4_g,5728 +numpy/_core/__init__.pyi,sha256=C5NQDIktXlR1OosGgyvY87pyotkyJr3Ci2dMWTLpSi4,88 +numpy/_core/__pycache__/__init__.cpython-311.pyc,, +numpy/_core/__pycache__/_add_newdocs.cpython-311.pyc,, +numpy/_core/__pycache__/_add_newdocs_scalars.cpython-311.pyc,, +numpy/_core/__pycache__/_asarray.cpython-311.pyc,, +numpy/_core/__pycache__/_dtype.cpython-311.pyc,, +numpy/_core/__pycache__/_dtype_ctypes.cpython-311.pyc,, +numpy/_core/__pycache__/_exceptions.cpython-311.pyc,, +numpy/_core/__pycache__/_internal.cpython-311.pyc,, +numpy/_core/__pycache__/_machar.cpython-311.pyc,, +numpy/_core/__pycache__/_methods.cpython-311.pyc,, +numpy/_core/__pycache__/_string_helpers.cpython-311.pyc,, +numpy/_core/__pycache__/_type_aliases.cpython-311.pyc,, +numpy/_core/__pycache__/_ufunc_config.cpython-311.pyc,, +numpy/_core/__pycache__/arrayprint.cpython-311.pyc,, +numpy/_core/__pycache__/cversions.cpython-311.pyc,, +numpy/_core/__pycache__/defchararray.cpython-311.pyc,, +numpy/_core/__pycache__/einsumfunc.cpython-311.pyc,, +numpy/_core/__pycache__/fromnumeric.cpython-311.pyc,, +numpy/_core/__pycache__/function_base.cpython-311.pyc,, +numpy/_core/__pycache__/getlimits.cpython-311.pyc,, +numpy/_core/__pycache__/memmap.cpython-311.pyc,, +numpy/_core/__pycache__/multiarray.cpython-311.pyc,, +numpy/_core/__pycache__/numeric.cpython-311.pyc,, +numpy/_core/__pycache__/numerictypes.cpython-311.pyc,, +numpy/_core/__pycache__/overrides.cpython-311.pyc,, +numpy/_core/__pycache__/printoptions.cpython-311.pyc,, +numpy/_core/__pycache__/records.cpython-311.pyc,, +numpy/_core/__pycache__/shape_base.cpython-311.pyc,, +numpy/_core/__pycache__/strings.cpython-311.pyc,, +numpy/_core/__pycache__/umath.cpython-311.pyc,, +numpy/_core/_add_newdocs.py,sha256=1NH5aPMoQ6UNuEkUDinZ3V3c1CTYTFJzWJuKjF_QL1I,215860 +numpy/_core/_add_newdocs.pyi,sha256=ttPc9PlJ6lBkZrBrjzzWD4_jxmkIxpojL8RWR-d3e1c,171 +numpy/_core/_add_newdocs_scalars.py,sha256=_182PHQWp5ydrXdshKaY_E5cCTln-cWlvETrH1hVKmA,12990 +numpy/_core/_add_newdocs_scalars.pyi,sha256=qgD9RUeJdv6bkYewvQPXXCzO_roSKbaueq9PyvS6wSA,589 +numpy/_core/_asarray.py,sha256=2n1La1qfXzY_PzNuGNYUpd_DNSRpxvMuza4A9JG_72E,4045 +numpy/_core/_asarray.pyi,sha256=_MDCETj47WvhoGOxTchfAg3W7MXiHZD17RKVAxD17XM,1114 +numpy/_core/_dtype.py,sha256=TEjPZXHmpw5-HhfGfKS-PfQT9A9sk8cnaE6icAXVb34,10913 +numpy/_core/_dtype.pyi,sha256=N9GjR4mqY32i4w30rhQUO6jn_ZwnTPXwt6qSWspCfaw,1909 +numpy/_core/_dtype_ctypes.py,sha256=e8EgfaqXiJ8-UYi8FM5sm9W8ehqvcG_rTpDROaKwTKg,3846 +numpy/_core/_dtype_ctypes.pyi,sha256=d5BudSdtj6n046OX9c-rUoX5zVGghdoO22yEhkjVRoM,3765 +numpy/_core/_exceptions.py,sha256=umxWh9TLhDXy9LmW77wkIHMegFk_KFfBB5ndxsJd5F4,5321 +numpy/_core/_exceptions.pyi,sha256=vtB-3qZeZrxsi2nhDQEw4Tr-wx0nidxQhQly07y-97I,1955 +numpy/_core/_internal.py,sha256=Mr67dGTf0JB3RPepCBh7aHDUuLeUqtHhCgfCDMvAB9g,29939 +numpy/_core/_internal.pyi,sha256=VzozE1T6MXeVNrx5UfIbEhtGRqc07xa_2e3RRIAuIXI,2726 +numpy/_core/_machar.py,sha256=hFuVAKRK5tlym0NhT-PpH_gUfbh50ndINbYnK8V0PSs,11924 +numpy/_core/_machar.pyi,sha256=vtB-3qZeZrxsi2nhDQEw4Tr-wx0nidxQhQly07y-97I,1955 +numpy/_core/_methods.py,sha256=iuo5uW5_zRJCessGY08qjWZLwQo88aUvEr6XdIueTKM,9685 +numpy/_core/_methods.pyi,sha256=7Mc4H9O3KYU9VwCsOo8X0q6mg9vDr2S6xbwuJ7PXPX4,548 +numpy/_core/_multiarray_tests.cp311-win_amd64.lib,sha256=PQqKL7-sUiJmd7MQjlnhTn7PUrKcpWTYzmAxYxNg8U8,2418 +numpy/_core/_multiarray_tests.cp311-win_amd64.pyd,sha256=fGiH8vXrv6I2gdx6f4To6tAtgMUQavtIxF3zoHk7bcM,62976 +numpy/_core/_multiarray_umath.cp311-win_amd64.lib,sha256=izPNx0AO3Fl0Ey04reb9AmK8lP6Y6YCleuq5wqcKfX8,2192 +numpy/_core/_multiarray_umath.cp311-win_amd64.pyd,sha256=sV1v2SMzaD6hZdn-KBuHPNB0wF2G3pblpv5Sq1LR-Vs,4519936 +numpy/_core/_operand_flag_tests.cp311-win_amd64.lib,sha256=G6yEvml-y7Coh5eVK97m5OHj4rb09-6_RoZrqaCo68M,2228 +numpy/_core/_operand_flag_tests.cp311-win_amd64.pyd,sha256=hRTFTPYILvDct--bY1VneRUnDeNN0FPo7VKue6m2Bs0,12288 +numpy/_core/_rational_tests.cp311-win_amd64.lib,sha256=YX6RLy9M5rrygEPOceYrSO-gioOzQGbDlqoGJgp_ikQ,2156 +numpy/_core/_rational_tests.cp311-win_amd64.pyd,sha256=hGomr8VKd1VV9ub0dqfDKopRdQkna7hBR4Cm6rzeNVM,39424 +numpy/_core/_simd.cp311-win_amd64.lib,sha256=fV_A_ytjbwM_kv4wQeNvrBl4rkU-E6cmQC_jQpvh3hE,1976 +numpy/_core/_simd.cp311-win_amd64.pyd,sha256=3jmgNuhBSlTgcnge04DGx2z5EuD7TR6eMcHehc_EJtA,2411520 +numpy/_core/_simd.pyi,sha256=RN-uZiTi3jZNOgOOKlu97Mu1Ufkb8jvLUDDEnaW77Lc,694 +numpy/_core/_string_helpers.py,sha256=aX1N5UsNeUFy54o5tuTC6X6N9AJueFN2_6QIyIUD2Xg,2945 +numpy/_core/_string_helpers.pyi,sha256=bThH7ichGlrmQ6O38n71QcJ7Oi_mRPUf-DFMU5hdYU0,370 +numpy/_core/_struct_ufunc_tests.cp311-win_amd64.lib,sha256=LwvrHDztQo-q_dMsMFMi5QWkuO5mkzwDpura38cDvX4,2228 +numpy/_core/_struct_ufunc_tests.cp311-win_amd64.pyd,sha256=93SWF1rBx4mzoqWpv4zTFhm3Ghm0XvKy1cBQJiGggU0,14336 +numpy/_core/_type_aliases.py,sha256=qNQdR-XjGM4sUAiVGMklurGJQXyYjSe2ytqyjQYNWf8,3608 +numpy/_core/_type_aliases.pyi,sha256=gRut9t3JHo4DQwf454S0Z-yGAxlW-OKzpXM0Aj7RRqg,2485 +numpy/_core/_ufunc_config.py,sha256=w33oV7mKJJKpajcWo9JxZGUxD33bek3iPqDOYUc_a1U,15621 +numpy/_core/_ufunc_config.pyi,sha256=5IB815wVedmoiwvSqJkKAaukrCAmMf3cHF-T05R2GYo,1968 +numpy/_core/_umath_tests.cp311-win_amd64.lib,sha256=IEuE_yTqHKprE0TPiz-acUzHjbH9SNE9b8ZsRzFDvIM,2104 +numpy/_core/_umath_tests.cp311-win_amd64.pyd,sha256=oJw8h1wfWRG7HINhsejKaw2lb0EzCzFKdK3zaa4NMhE,33792 +numpy/_core/arrayprint.py,sha256=27hUDD-20L_P9lp84a-LJu1mfEvNX0zPb9qjkfKRcfs,67053 +numpy/_core/arrayprint.pyi,sha256=3ac2DS9uMuUZ86hnmpM0vltS1BGLuNsXHXLHwNH6c5I,7209 +numpy/_core/cversions.py,sha256=FISv1d4R917Bi5xJjKKy8Lo6AlFkV00WvSoB7l3acA4,360 +numpy/_core/defchararray.py,sha256=XHaUdJm_pWX8MCWM9CZCyAMw5Wi38qxJ6AnBMgUYgf4,39434 +numpy/_core/defchararray.pyi,sha256=qDThln5UlhZC1cBlY-jMBsEvpjqAP96GReSpv01_HG0,29120 +numpy/_core/einsumfunc.py,sha256=8agj-ZqYEkfxoADYH1DEC-BLvMUSdQyKssVvAkFCzFg,54318 +numpy/_core/einsumfunc.pyi,sha256=h4nfk-sGpvTVmvP04BOl_PGcfNZxh2-E11bWdihfepg,5077 +numpy/_core/fromnumeric.py,sha256=M11Tz3BpccUnwYuxvCy57lVbGIL_IQm6gPZc0kN-l4o,148151 +numpy/_core/fromnumeric.pyi,sha256=5NxwgnvFF4LzRv-1abKL2N9bJMCKMrwkbX7Sv0jyDto,43784 +numpy/_core/function_base.py,sha256=D2JmNn3VOCCxdhnno_gK6ZeuQOdS2VoV1xLIJy-eLUQ,20228 +numpy/_core/function_base.pyi,sha256=hp3h1N0WHvdIHtTtLLqaUhjrDiLW8Ud1Wzu8rZC5Bi4,7342 +numpy/_core/getlimits.py,sha256=N5j3lVeeA0yfpuDk93fKkfSs9qCuJ1xsXoDMSmzZMaI,26849 +numpy/_core/getlimits.pyi,sha256=3u55btDSVkpbsnFxkCWqRY7LZ1WhGop_LAUnjJfOUR8,64 +numpy/_core/include/numpy/__multiarray_api.c,sha256=ucLypGZeaaHhl2OX-4YQrrCGTUl-8XwObmmN8zQjRjU,13074 +numpy/_core/include/numpy/__multiarray_api.h,sha256=k8TnD4kVS-yNbe5s9yuZXifoJxXU1J04ElZt7ut3jmA,63261 +numpy/_core/include/numpy/__ufunc_api.c,sha256=NoTcyLqrAF8F3AE0TDvlDFS7DXuFJRpoINEaDnZWhys,1809 +numpy/_core/include/numpy/__ufunc_api.h,sha256=M-szFmRhn9IsEmaLO_fjq0VB58IvgVJTq4G3oB1bvas,13516 +numpy/_core/include/numpy/_neighborhood_iterator_imp.h,sha256=s5TK2aPpClbw4CbVJCij__hzoh5IgHIIZK0k6FKtqfc,1947 +numpy/_core/include/numpy/_numpyconfig.h,sha256=7vfr5P9qM9rTNTCrkirW3Q0pm4TD83_7yjl8nY3r6bY,902 +numpy/_core/include/numpy/_public_dtype_api_table.h,sha256=4ylG8s52kZEx__QODt_7Do8QitmhDSvTeZ7Lar0fOgo,4660 +numpy/_core/include/numpy/arrayobject.h,sha256=ghWzloPUkSaVkcsAnBnpbrxtXeXL-mkzVGJQEHFxjnk,211 +numpy/_core/include/numpy/arrayscalars.h,sha256=4TrsilxaUiH4mVCkElEPTM_C_8c67O9R4Whx-3QzDE4,4439 +numpy/_core/include/numpy/dtype_api.h,sha256=cfQuPb0zrVqYFdWauOqbgdXR8rtm4DjNz2nbfSWvSRo,19718 +numpy/_core/include/numpy/halffloat.h,sha256=qYgX5iQfNzXICsnd0MCRq5ELhhfFjlRGm1xXGimQm44,2029 +numpy/_core/include/numpy/ndarrayobject.h,sha256=V5Zkf5a9vWyV8ZInBgAceBn7c9GK4aquhzeGTW_Sgls,12361 +numpy/_core/include/numpy/ndarraytypes.h,sha256=-hJA5FBQv2WcWRYSfRcYMAAsH54KnsIDudcOai4nn1w,67760 +numpy/_core/include/numpy/npy_2_compat.h,sha256=VxsRXAtDfLlXkvH-ErZRSuH49k9EjcFwcSUSfTPRzAU,8795 +numpy/_core/include/numpy/npy_2_complexcompat.h,sha256=uW0iF-qMwQNn4PvIfWCrYce6b4OrYUO4BWu-VYYAZag,885 +numpy/_core/include/numpy/npy_3kcompat.h,sha256=dV01ltbxntPY8cN7WAL4MX3KHeyCLeSBDQreDxs09aQ,10022 +numpy/_core/include/numpy/npy_common.h,sha256=1Dt0W8dTFbjB3Ra3MpNlA0qcWNPZD5R_ztb3uCNE5uI,33563 +numpy/_core/include/numpy/npy_cpu.h,sha256=bTcimfKHGMeNLH-wYfXf7foYM6RenkTiWx4a_D-GYSY,4349 +numpy/_core/include/numpy/npy_endian.h,sha256=NZSi-5CbqZ92AUztILDJLBKP61-VQezmAatYTNLwRu8,2912 +numpy/_core/include/numpy/npy_math.h,sha256=ksdiKBXDfpEHB1s9m5yinyhjdcc0h-zJcfXEuoVHAd8,19460 +numpy/_core/include/numpy/npy_no_deprecated_api.h,sha256=jIcjEP2AbovDTfgE-qtvdP51_dVGjVnEGBX86rlGSKE,698 +numpy/_core/include/numpy/npy_os.h,sha256=j044vd1C1oCcW52r3htiVNhUaJSEqCjKrODwMHq3TU0,1298 +numpy/_core/include/numpy/numpyconfig.h,sha256=3awsuwxRkv0NxqJmUdLc-g7PoMIW520hqLJFPl4THy4,7515 +numpy/_core/include/numpy/random/LICENSE.txt,sha256=1UR2FVi1EIZsIffootVxb8p24LmBF-O2uGMU23JE0VA,1039 +numpy/_core/include/numpy/random/bitgen.h,sha256=_H0uXqmnub4PxnJWdMWaNqfpyFDu2KB0skf2wc5vjUc,508 +numpy/_core/include/numpy/random/distributions.h,sha256=GLURa3sFESZE0_0RK-3Gqmfa96itBHw8LlsNyy9EPt4,10070 +numpy/_core/include/numpy/random/libdivide.h,sha256=F9PLx6TcOk-sd0dObe0nWLyz4HhbHv2K7voR_kolpGU,82217 +numpy/_core/include/numpy/ufuncobject.h,sha256=uI5m_WOrFQtaL3BwgRmiZ7BN8CypKXfC5EcQfdhH-Eg,12123 +numpy/_core/include/numpy/utils.h,sha256=vzJAbatJYfxHmX2yL_xBirmB4mEGLOhJ92JlV9s8yPs,1222 +numpy/_core/lib/npy-pkg-config/mlib.ini,sha256=hYWFyoBxE036dh19si8UPka01H2cv64qlc4ZtgoA_7A,156 +numpy/_core/lib/npy-pkg-config/npymath.ini,sha256=e0rdsb00Y93VuammuvIIFlzZtnUAXwsS1XNKlCU8mFQ,381 +numpy/_core/lib/npymath.lib,sha256=d0sfDLx4pM_THxEVGZLxRefl9LgTkqWN5FZwfuc9GvI,156482 +numpy/_core/lib/pkgconfig/numpy.pc,sha256=BPvivg6PO_EWcrHlpN5B0BFBSW9RghGPqHQyg2XC-tg,198 +numpy/_core/memmap.py,sha256=7HWQGjK5bS3SzAPx4wAlHwH6YFrX13sBpa6E52zxatc,13014 +numpy/_core/memmap.pyi,sha256=n0kBe4iQD5lcWvAvVhdUU18YIoPX6Sf5e2qh9IdO5uQ,50 +numpy/_core/multiarray.py,sha256=ME5DKfJ4RbJ6whslkBbOJIVzdLHbKtBImHpAi_Bx2pY,59917 +numpy/_core/multiarray.pyi,sha256=okOHTpS64vws5q2QJgMkO-w9_-JDPHYW37XzWdRAhLA,33435 +numpy/_core/numeric.py,sha256=-JvXLgXpQIxwM6VGz3btBDnoeRinx67JQ9i1vM7KoNI,85082 +numpy/_core/numeric.pyi,sha256=HPxLAdXviPTw-UjrMYqI3Jb2Q-DlF2PeRBGXsaOgDuI,19924 +numpy/_core/numerictypes.py,sha256=sBii4N4PX66DFZJ_QlDepfugXHToV4MqVTl9DrkTCko,16600 +numpy/_core/numerictypes.pyi,sha256=kqugJm07IibdlojXtRa5dm1bYI367x2DK0IvRBXT9Io,3462 +numpy/_core/overrides.py,sha256=Fn7Qi97VW3-tqWJZd9Xgn6eCntB0UkVGmE7g3ToxOW0,7424 +numpy/_core/overrides.pyi,sha256=gUulOylgoJ7r92GBLP_qn91qvSQMoTGV9RebZ-waAFU,1761 +numpy/_core/printoptions.py,sha256=ZXekBr6fI18dVxsM6bxAGi80CiMlaMN4dpbPHDQiBOI,1088 +numpy/_core/printoptions.pyi,sha256=QE36MVL3BgqflyQuj6UOzywbnELMiLeyNz_1sALvOSU,622 +numpy/_core/records.py,sha256=F7Cvw2ZUu9h8nGgPtwuDRgTXWsLyP8mnSlczxs5PWSE,37856 +numpy/_core/records.pyi,sha256=Tk57V2NJNCKC5nBHQAmdHixhG1asUR1nMx55Yro56SY,9268 +numpy/_core/shape_base.py,sha256=ThNuc3aMU94qmCUBh4Zru-QEfK35HW3Kqs5VloGb5Ok,33736 +numpy/_core/shape_base.pyi,sha256=nwPDmpBWUXYNT9-5aGOyBzLecyZamcczvKOBj1ioa1g,4928 +numpy/_core/strings.py,sha256=IzHeA4hbiyOwaX50axZ_DHV4hU8uQH2JrtOTdF57RRM,52465 +numpy/_core/strings.pyi,sha256=yP_unVbtw0jdvS7nvJOqhhmZ8n3JlBThDP3bsuxZeKU,14013 +numpy/_core/tests/__pycache__/_locales.cpython-311.pyc,, +numpy/_core/tests/__pycache__/_natype.cpython-311.pyc,, +numpy/_core/tests/__pycache__/test__exceptions.cpython-311.pyc,, +numpy/_core/tests/__pycache__/test_abc.cpython-311.pyc,, +numpy/_core/tests/__pycache__/test_api.cpython-311.pyc,, +numpy/_core/tests/__pycache__/test_argparse.cpython-311.pyc,, +numpy/_core/tests/__pycache__/test_array_api_info.cpython-311.pyc,, +numpy/_core/tests/__pycache__/test_array_coercion.cpython-311.pyc,, +numpy/_core/tests/__pycache__/test_array_interface.cpython-311.pyc,, +numpy/_core/tests/__pycache__/test_arraymethod.cpython-311.pyc,, +numpy/_core/tests/__pycache__/test_arrayobject.cpython-311.pyc,, +numpy/_core/tests/__pycache__/test_arrayprint.cpython-311.pyc,, +numpy/_core/tests/__pycache__/test_casting_floatingpoint_errors.cpython-311.pyc,, +numpy/_core/tests/__pycache__/test_casting_unittests.cpython-311.pyc,, +numpy/_core/tests/__pycache__/test_conversion_utils.cpython-311.pyc,, +numpy/_core/tests/__pycache__/test_cpu_dispatcher.cpython-311.pyc,, +numpy/_core/tests/__pycache__/test_cpu_features.cpython-311.pyc,, +numpy/_core/tests/__pycache__/test_custom_dtypes.cpython-311.pyc,, +numpy/_core/tests/__pycache__/test_cython.cpython-311.pyc,, +numpy/_core/tests/__pycache__/test_datetime.cpython-311.pyc,, +numpy/_core/tests/__pycache__/test_defchararray.cpython-311.pyc,, +numpy/_core/tests/__pycache__/test_deprecations.cpython-311.pyc,, +numpy/_core/tests/__pycache__/test_dlpack.cpython-311.pyc,, +numpy/_core/tests/__pycache__/test_dtype.cpython-311.pyc,, +numpy/_core/tests/__pycache__/test_einsum.cpython-311.pyc,, +numpy/_core/tests/__pycache__/test_errstate.cpython-311.pyc,, +numpy/_core/tests/__pycache__/test_extint128.cpython-311.pyc,, +numpy/_core/tests/__pycache__/test_function_base.cpython-311.pyc,, +numpy/_core/tests/__pycache__/test_getlimits.cpython-311.pyc,, +numpy/_core/tests/__pycache__/test_half.cpython-311.pyc,, +numpy/_core/tests/__pycache__/test_hashtable.cpython-311.pyc,, +numpy/_core/tests/__pycache__/test_indexerrors.cpython-311.pyc,, +numpy/_core/tests/__pycache__/test_indexing.cpython-311.pyc,, +numpy/_core/tests/__pycache__/test_item_selection.cpython-311.pyc,, +numpy/_core/tests/__pycache__/test_limited_api.cpython-311.pyc,, +numpy/_core/tests/__pycache__/test_longdouble.cpython-311.pyc,, +numpy/_core/tests/__pycache__/test_machar.cpython-311.pyc,, +numpy/_core/tests/__pycache__/test_mem_overlap.cpython-311.pyc,, +numpy/_core/tests/__pycache__/test_mem_policy.cpython-311.pyc,, +numpy/_core/tests/__pycache__/test_memmap.cpython-311.pyc,, +numpy/_core/tests/__pycache__/test_multiarray.cpython-311.pyc,, +numpy/_core/tests/__pycache__/test_multithreading.cpython-311.pyc,, +numpy/_core/tests/__pycache__/test_nditer.cpython-311.pyc,, +numpy/_core/tests/__pycache__/test_nep50_promotions.cpython-311.pyc,, +numpy/_core/tests/__pycache__/test_numeric.cpython-311.pyc,, +numpy/_core/tests/__pycache__/test_numerictypes.cpython-311.pyc,, +numpy/_core/tests/__pycache__/test_overrides.cpython-311.pyc,, +numpy/_core/tests/__pycache__/test_print.cpython-311.pyc,, +numpy/_core/tests/__pycache__/test_protocols.cpython-311.pyc,, +numpy/_core/tests/__pycache__/test_records.cpython-311.pyc,, +numpy/_core/tests/__pycache__/test_regression.cpython-311.pyc,, +numpy/_core/tests/__pycache__/test_scalar_ctors.cpython-311.pyc,, +numpy/_core/tests/__pycache__/test_scalar_methods.cpython-311.pyc,, +numpy/_core/tests/__pycache__/test_scalarbuffer.cpython-311.pyc,, +numpy/_core/tests/__pycache__/test_scalarinherit.cpython-311.pyc,, +numpy/_core/tests/__pycache__/test_scalarmath.cpython-311.pyc,, +numpy/_core/tests/__pycache__/test_scalarprint.cpython-311.pyc,, +numpy/_core/tests/__pycache__/test_shape_base.cpython-311.pyc,, +numpy/_core/tests/__pycache__/test_simd.cpython-311.pyc,, +numpy/_core/tests/__pycache__/test_simd_module.cpython-311.pyc,, +numpy/_core/tests/__pycache__/test_stringdtype.cpython-311.pyc,, +numpy/_core/tests/__pycache__/test_strings.cpython-311.pyc,, +numpy/_core/tests/__pycache__/test_ufunc.cpython-311.pyc,, +numpy/_core/tests/__pycache__/test_umath.cpython-311.pyc,, +numpy/_core/tests/__pycache__/test_umath_accuracy.cpython-311.pyc,, +numpy/_core/tests/__pycache__/test_umath_complex.cpython-311.pyc,, +numpy/_core/tests/__pycache__/test_unicode.cpython-311.pyc,, +numpy/_core/tests/_locales.py,sha256=byq7PFI0o_eF8Ddsvgj2EQ7oEjgxYZEa2EW0SJmR_xc,2248 +numpy/_core/tests/_natype.py,sha256=IB1eKt12ObjMuhK-GLzUbgJpQfy7_Tk08HOPEjaBSC8,6730 +numpy/_core/tests/data/astype_copy.pkl,sha256=lWSzCcvzRB_wpuRGj92spGIw-rNPFcd9hwJaRVvfWdk,716 +numpy/_core/tests/data/generate_umath_validation_data.cpp,sha256=9TBdxpPo0djv1CKxQ6_DbGKRxIZVawitAm7AMmWKroI,6012 +numpy/_core/tests/data/recarray_from_file.fits,sha256=NA0kliz31FlLnYxv3ppzeruONqNYkuEvts5wzXEeIc4,8640 +numpy/_core/tests/data/umath-validation-set-README.txt,sha256=GfrkmU_wTjpLkOftWDuGayEDdV3RPpN2GRVQX61VgWI,982 +numpy/_core/tests/data/umath-validation-set-arccos.csv,sha256=VUdQdKBFrpXHLlPtX2WYIK_uwkaXgky85CZ4aNuvmD4,62794 +numpy/_core/tests/data/umath-validation-set-arccosh.csv,sha256=tbuOQkvnYxSyJf_alGk3Zw3Vyv0HO5dMC1hUle2hWwQ,62794 +numpy/_core/tests/data/umath-validation-set-arcsin.csv,sha256=JPEWWMxgPKdNprDq0pH5QhJ2oiVCzuDbK-3WhTKny8o,62768 +numpy/_core/tests/data/umath-validation-set-arcsinh.csv,sha256=fwuq25xeS57kBExBuSNfewgHb-mgoR9wUGVqcOXbfoI,61718 +numpy/_core/tests/data/umath-validation-set-arctan.csv,sha256=nu33YyL-ALXSSF5cupCTaf_jTPLK_QyUfciNQGpffkY,61734 +numpy/_core/tests/data/umath-validation-set-arctanh.csv,sha256=wHSKFY2Yvbv3fnmmfLqPYpjhkEM88YHkFVpZQioyBDw,62768 +numpy/_core/tests/data/umath-validation-set-cbrt.csv,sha256=FFi_XxEnGrfJd7OxtjVFT6WFC2tUqKhVV8fmQfb0z8o,62275 +numpy/_core/tests/data/umath-validation-set-cos.csv,sha256=ccDri5_jQ84D_kAmSwZ_ztNUPIhzhgycDtNsPB7m8dc,60497 +numpy/_core/tests/data/umath-validation-set-cosh.csv,sha256=DnN6RGvKQHAWIofchmhGH7kkJej2VtNwGGMRZGzBkTQ,62298 +numpy/_core/tests/data/umath-validation-set-exp.csv,sha256=mPhjF4KLe0bdwx38SJiNipD24ntLI_5aWc8h-V0UMgM,17903 +numpy/_core/tests/data/umath-validation-set-exp2.csv,sha256=sD94pK2EAZAyD2fDEocfw1oXNw1qTlW1TBwRlcpbcsI,60053 +numpy/_core/tests/data/umath-validation-set-expm1.csv,sha256=tyfZN5D8tlm7APgxCIPyuy774AZHytMOB59H9KewxEs,61728 +numpy/_core/tests/data/umath-validation-set-log.csv,sha256=CDPky64PjaURWhqkHxkLElmMiI21v5ugGGyzhdfUbnI,11963 +numpy/_core/tests/data/umath-validation-set-log10.csv,sha256=dW6FPEBlRx2pcS-7eui_GtqTpXzOy147il55qdP-8Ak,70551 +numpy/_core/tests/data/umath-validation-set-log1p.csv,sha256=2aEsHVcvRym-4535CkvJTsmHywkt01ZMfmjl-d4fvVI,61732 +numpy/_core/tests/data/umath-validation-set-log2.csv,sha256=aVZ7VMQ5urGOx5MMMOUmMKBhFLFE-U7y6DVCTeXQfo0,70546 +numpy/_core/tests/data/umath-validation-set-sin.csv,sha256=GvPrQUEYMX1iB2zjbfK26JUJOxtqbfiRUgXuAO1QcP0,59981 +numpy/_core/tests/data/umath-validation-set-sinh.csv,sha256=lc7OYcYWWpkxbMuRAWmogQ5cKi7EwsQ2ibiMdpJWYbw,61722 +numpy/_core/tests/data/umath-validation-set-tan.csv,sha256=fn7Dr9s6rcqGUzsmyJxve_Z18J4AUaSm-uo2N3N_hfk,61728 +numpy/_core/tests/data/umath-validation-set-tanh.csv,sha256=xSY5fgfeBXN6fal4XDed-VUcgFIy9qKOosa7vQ5v1-U,61728 +numpy/_core/tests/examples/cython/__pycache__/setup.cpython-311.pyc,, +numpy/_core/tests/examples/cython/checks.pyx,sha256=Ayf5e8WueUGNzwKn6VuF4xHREPgwj_uu8eot6Q7n4eU,11147 +numpy/_core/tests/examples/cython/meson.build,sha256=EaUdTgpleUBROExDaFVMnWIYW4XDxFLFGK9ej_pTtQg,1311 +numpy/_core/tests/examples/cython/setup.py,sha256=h5vJxfwGpwRWaa7iWTYeCstbcDNHN0Yd_rP963v7sZ0,898 +numpy/_core/tests/examples/limited_api/__pycache__/setup.cpython-311.pyc,, +numpy/_core/tests/examples/limited_api/limited_api1.c,sha256=RcHe_nyyjv86gjF9E53cexQiGW-YNs8OGGqjrxCFhBc,363 +numpy/_core/tests/examples/limited_api/limited_api2.pyx,sha256=4P5-yu0yr8NBa-TFtw4v30LGjccRroRAQFFLaztEK9I,214 +numpy/_core/tests/examples/limited_api/limited_api_latest.c,sha256=drvrNSyOeF0Or0trDmayJWllTP7c4Nzpp9T0ydwPAGo,471 +numpy/_core/tests/examples/limited_api/meson.build,sha256=yitMzLuGDhWCjyavpm5UEBrhwKnfXOVAxA3ZL7PlB0Q,1686 +numpy/_core/tests/examples/limited_api/setup.py,sha256=47iWsN-5wYB29Lb7vqSjzrAS3UtkdFufkt93XzzG-lE,461 +numpy/_core/tests/test__exceptions.py,sha256=ov3cdaYBfP28w_FcLF57ROlF5w6fwCFRNcmOVyRA-IU,3012 +numpy/_core/tests/test_abc.py,sha256=qdC7_lkQvaF_3A4xJ9H_Ih3FDlMpA9dxQHjsg4Tn-uc,2275 +numpy/_core/tests/test_api.py,sha256=b-irDm9ojtAmUC2ZZUfHeStMEl5Ik3hR948YjeN11jE,24863 +numpy/_core/tests/test_argparse.py,sha256=AsDsGRknJq1XejjkuCjx3oSBZZHdy7K9fqkwqV1VSNc,2962 +numpy/_core/tests/test_array_api_info.py,sha256=YySxzABrxjo2XVC9bwslv5VGBIiDK5N0DXpKLfhwBio,3176 +numpy/_core/tests/test_array_coercion.py,sha256=LAnfdSkKW2VEa-3aEzSX6Mj3ejEeZa63fLbLmSy2OH8,35808 +numpy/_core/tests/test_array_interface.py,sha256=s-mrGDOBpWOfIShNHrnfPuUeZDTBX5eD8R1kY4-JrUc,8065 +numpy/_core/tests/test_arraymethod.py,sha256=q4MgPQLLJxu4fUtdMSsyECkErowPwraWgYAJp6veXrU,3307 +numpy/_core/tests/test_arrayobject.py,sha256=cQu4aDjyF6EgoiGe5UISyOHGx5QEkdGvbfCXVuKjHQ8,2671 +numpy/_core/tests/test_arrayprint.py,sha256=Q0rOUlo0kSmrU3LxaBYOTnMzcYfcIUV0gy4khNzdujI,52066 +numpy/_core/tests/test_casting_floatingpoint_errors.py,sha256=fMotyIWxYMxJ_mF7zZMg3j3l7j-C6nfm_YUPw1ln5dA,5230 +numpy/_core/tests/test_casting_unittests.py,sha256=J4Qt1tVacrgj8brpZNZ0-IOlZQP8h92YI6v5l6GmCS0,35153 +numpy/_core/tests/test_conversion_utils.py,sha256=-RMHwc8xPyymb1i4ZxbFlxIqCx7dOwgpuHYukV-IhUc,6568 +numpy/_core/tests/test_cpu_dispatcher.py,sha256=xIWptwLDyBPiuAGpLryuK3TgFJIbtYTKSZSFfxLzzgQ,1619 +numpy/_core/tests/test_cpu_features.py,sha256=GCjzPHRQUKTPYXP6i00mTHSfHYGIAB5SNBN22iwXj-A,16135 +numpy/_core/tests/test_custom_dtypes.py,sha256=krzdkviMesBtOGM51ZC3O16LnInMFBo1ZMAgWReZfpM,12081 +numpy/_core/tests/test_cython.py,sha256=DSGqV-hBtvJ0AD_uk44YMe1EZEkYQy7B0pO1YNJc194,10537 +numpy/_core/tests/test_datetime.py,sha256=hiHXyLVdInZN2H8lDolpekHrGsDLd3G8V54Awz6wX8w,125419 +numpy/_core/tests/test_defchararray.py,sha256=NRSghsMq0UY3MckWTl2sn8FQE7ls8amAHnztrs3PAvo,31454 +numpy/_core/tests/test_deprecations.py,sha256=mXihH4FepKCqlUT6Ks8FU77ZkxDfgbhS16dDm6pjhqw,17555 +numpy/_core/tests/test_dlpack.py,sha256=_wHOWg22PT6U6Py0BGOwaB7mTrQV219Ycy6EXMbFnZ8,6020 +numpy/_core/tests/test_dtype.py,sha256=c7H-FgmDmpaN2CSgx1ZfjKoIGK7M9mhUbjMDxso6w50,80792 +numpy/_core/tests/test_einsum.py,sha256=2rcE0fmKLNIWhwPnV0_7DV_Q4UYHxUmyMO8UwPOlHrk,57594 +numpy/_core/tests/test_errstate.py,sha256=FB5-P9YNDk07HQVtvND1ZreTKzZyedorlZ8w38DoGrM,4758 +numpy/_core/tests/test_extint128.py,sha256=tJMy0G0YhhV8EnRUN9lybMAqUgdBMhfsQZWXB05XKDc,5842 +numpy/_core/tests/test_function_base.py,sha256=r13rRmNIJEgc0VsAPnb1yDZxlh7ZI_sR7w4EH9uqzfw,18154 +numpy/_core/tests/test_getlimits.py,sha256=F7alzOWMDfBoF1W2cukpyOFQdBBbTgZ_OI9tqLVo4fI,7181 +numpy/_core/tests/test_half.py,sha256=7iO3jBtzuIWyp1_H008oGd04myfIptoKdgKll5o5NXE,24993 +numpy/_core/tests/test_hashtable.py,sha256=tiixi7rz7lGoDpn4mrzqTWB3jWL6UV1DNK-bQ2393_A,1182 +numpy/_core/tests/test_indexerrors.py,sha256=-zO-IvbIaab8GmA7INyBlDMCdBPtdflzLd7ZdFvyUXA,4851 +numpy/_core/tests/test_indexing.py,sha256=6dTuv0nTXdjTMkLMe0EPpOaJMm8-dxAy5ou5LkytXqs,56876 +numpy/_core/tests/test_item_selection.py,sha256=erSTKqbX9C5i9EJeTI4tIenDW4vlo1PO-wqFRKtBB68,6798 +numpy/_core/tests/test_limited_api.py,sha256=bN6sU8V2vtFOxwhf3n0EtEXJuT5ifw2i6S2DHTDJHMQ,3565 +numpy/_core/tests/test_longdouble.py,sha256=KeTNI4tY-h7Tklmo--j0MD0pTqaE7voknrl2SfupDRY,12760 +numpy/_core/tests/test_machar.py,sha256=68mp4juIpLILsQCRO3wBNUqMaZuNqtss_8TUTeQkD_g,1097 +numpy/_core/tests/test_mem_overlap.py,sha256=Zoy0yf1jGCugt9dxWK5Drb413vP_gTwzW14SlFsAik8,30149 +numpy/_core/tests/test_mem_policy.py,sha256=P2hNYfmXml40dCrPYvhq2YsGmPbHkDEYd8nTHul0inM,17246 +numpy/_core/tests/test_memmap.py,sha256=hGXCmU4BQteaAqeuyDA3dVfBsVrSLw2y17CW_GjA0mI,8432 +numpy/_core/tests/test_multiarray.py,sha256=L4l42g5Y7NiQXI_0WMBC5xZJRb4WFUsrIRnu4boghJg,410953 +numpy/_core/tests/test_multithreading.py,sha256=6lpG9NtpCSUFRyyb2PStwl-_2xcGGtZ2YDYPvL8G2iE,8893 +numpy/_core/tests/test_nditer.py,sha256=T2YLb6TRpjMn3PcsSmzsG5MJT_amfimN2LLehxKJ6lE,140066 +numpy/_core/tests/test_nep50_promotions.py,sha256=sw60eH2T2EBrpO0VeulZrHpnRCz6wE0MiA4U9B3_MFQ,10355 +numpy/_core/tests/test_numeric.py,sha256=IX6euysHqjiZalVSQE9oyVxGs7n4xxSHzoTm3wcLG8g,163995 +numpy/_core/tests/test_numerictypes.py,sha256=XSBy2fOFsuxTZsZ6KO0pJYHUDOKTyfg7atgt5BGw4go,24795 +numpy/_core/tests/test_overrides.py,sha256=aSUDCBrziCFxf0Yz5tz-b5UVovMthH5YkL8Xy2dTqaI,28309 +numpy/_core/tests/test_print.py,sha256=MFj_2HDTQqPzsOF6DqDRVuU0fa8xC4tD8NMU7TwCEkg,6987 +numpy/_core/tests/test_protocols.py,sha256=b1clvp3Rr7EQ6x8Mtxm9jAiHxPymEU_VJBjwnMingUU,1219 +numpy/_core/tests/test_records.py,sha256=WTg9BRbz1yAuj0XaBAi-yggRM5tYWQBFO-rEz8C9vSM,21091 +numpy/_core/tests/test_regression.py,sha256=6AfTIt3VsnE9leCsCCaDBfKb4PxocGTQ69dFt95-qV0,98235 +numpy/_core/tests/test_scalar_ctors.py,sha256=wg1isOo2orxvVuD65iapPihwecXS1DXxj1eqM5-GaK8,6931 +numpy/_core/tests/test_scalar_methods.py,sha256=1qrblm2HsjBvot8mYDh06PaoUjO6_v06GMEfGN7UFKQ,9363 +numpy/_core/tests/test_scalarbuffer.py,sha256=0OgVIXWv8iD563F5nvEpIeuxunKn9JJlrinhBtHJvZI,5791 +numpy/_core/tests/test_scalarinherit.py,sha256=WVjRrpNkKvQbO2n-joJ7EF6lG1zFcT4pgANAtvT7C5M,2692 +numpy/_core/tests/test_scalarmath.py,sha256=kZWj3nO7va4wj1eoN9v3OKdi0qts8rH840WZa8fBvKo,47759 +numpy/_core/tests/test_scalarprint.py,sha256=aDQz8rz3KXQ5EBiaIaxmvHpLaIUkZeI-8PoTqZ4kvyM,20108 +numpy/_core/tests/test_shape_base.py,sha256=rJYaNg2sI4NgRPO0k8QEN5cIvYStbggyx67knQuLD-I,32427 +numpy/_core/tests/test_simd.py,sha256=rAzkkJJzq8-SJ74k5jZBj77I5R0MRTZq4iRz2UI6w2Q,50164 +numpy/_core/tests/test_simd_module.py,sha256=zR-gFTWPB4j66oVM3ULLGSrx8HZvuAIXKcWKplKUGbM,4007 +numpy/_core/tests/test_stringdtype.py,sha256=b74tj-RD-BPO4r3x9dTnl9p2BHxsoAM_91RYS_xTK4Q,58866 +numpy/_core/tests/test_strings.py,sha256=YO_JGvZnkkIomb0F_2TSOJ2SaX3QOt5aAmMKgczVJ6g,59975 +numpy/_core/tests/test_ufunc.py,sha256=0fdD71OR381L3B2c59FY_YFNWWUkasS3LwlhLVpBxYc,139669 +numpy/_core/tests/test_umath.py,sha256=hI4Zy4HtqZiRiUPFrwFuwfDuVAj-6CjX0r2lcMUrSm8,199084 +numpy/_core/tests/test_umath_accuracy.py,sha256=6Yh-AZtXu2dEAE1r_nwystCwZuwRMAqkiUMLChqM_54,5602 +numpy/_core/tests/test_umath_complex.py,sha256=ixTQ1DrSlI_x-iUrsUV8d1bggPIxKA3ArNQiVJP7_ys,24253 +numpy/_core/tests/test_unicode.py,sha256=ejiiGuLXWlMK7WyLUYNfLdYYIeoK1cnZcxYFPKrwYGI,13335 +numpy/_core/umath.py,sha256=gbS2GakDKOb712WW6bqjQ_k6zWtN9qS2XJajelgDbf8,2190 +numpy/_core/umath.pyi,sha256=9o4EBYeibP9abowHQHuo0iuhbUnfTWw5c8utNmKEduo,2840 +numpy/_distributor_init.py,sha256=h5_Cq7ItDrt1JZoAh04aO54ZXsXRRkyGoNFFH9T-08U,436 +numpy/_distributor_init.pyi,sha256=CSrbSp2YYxHTxlX7R0nT3RpH7EloB1wIvo7YOA7QWy8,28 +numpy/_expired_attrs_2_0.py,sha256=HVsnLanxHyyFAC-1eV6Nz2ORAx5x4ZLMh17vfAlxigQ,3905 +numpy/_expired_attrs_2_0.pyi,sha256=gs0UfGezUEO3amoLpN2Xsi0hbwozjEJERAkHQfiDvq8,1315 +numpy/_globals.py,sha256=1kTi2An0nDeFpBixK20FxDAw15bXLR1iedY1HpKEhIY,3187 +numpy/_globals.pyi,sha256=kst3Vm7ZbznOtHsPya0PzU0KbjRGZ8xhMmTNMafvT-4,297 +numpy/_pyinstaller/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +numpy/_pyinstaller/__init__.pyi,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +numpy/_pyinstaller/__pycache__/__init__.cpython-311.pyc,, +numpy/_pyinstaller/__pycache__/hook-numpy.cpython-311.pyc,, +numpy/_pyinstaller/hook-numpy.py,sha256=bJTm7LIuDHC5QyGTqUWE48gYsRcolKm3naQXoE1o_C4,1398 +numpy/_pyinstaller/hook-numpy.pyi,sha256=2Bcwj2FwR3bRdtm26pmpUELEhsiZ58tQv9Q7_1Yp3HU,362 +numpy/_pyinstaller/tests/__init__.py,sha256=l38bo7dpp3u1lVMPErlct_5uBLKj35zuS_r35e7c19c,345 +numpy/_pyinstaller/tests/__pycache__/__init__.cpython-311.pyc,, +numpy/_pyinstaller/tests/__pycache__/pyinstaller-smoke.cpython-311.pyc,, +numpy/_pyinstaller/tests/__pycache__/test_pyinstaller.cpython-311.pyc,, +numpy/_pyinstaller/tests/pyinstaller-smoke.py,sha256=xt3dl_DjxuzVTPrqmVmMOZm5-24wBG2TxldQl78Xt1g,1175 +numpy/_pyinstaller/tests/test_pyinstaller.py,sha256=31zWlvlAC2sfhdew97x8aDvcYUaV3Tc_0CwFk8pgKaM,1170 +numpy/_pytesttester.py,sha256=USOh37bWhXAzQLeGD1U63XpDnbkatfr-aiQu-gHkdBA,6529 +numpy/_pytesttester.pyi,sha256=AFDYaaIlhSar-JOfoLtQB9Uq1mPXWhre8STg44CVkvA,515 +numpy/_typing/__init__.py,sha256=sBjoHDBSeozEDlNiZdE6pt0pcQ37h_oMufU9fwqTKMI,7336 +numpy/_typing/__pycache__/__init__.cpython-311.pyc,, +numpy/_typing/__pycache__/_add_docstring.cpython-311.pyc,, +numpy/_typing/__pycache__/_array_like.cpython-311.pyc,, +numpy/_typing/__pycache__/_char_codes.cpython-311.pyc,, +numpy/_typing/__pycache__/_dtype_like.cpython-311.pyc,, +numpy/_typing/__pycache__/_extended_precision.cpython-311.pyc,, +numpy/_typing/__pycache__/_nbit.cpython-311.pyc,, +numpy/_typing/__pycache__/_nbit_base.cpython-311.pyc,, +numpy/_typing/__pycache__/_nested_sequence.cpython-311.pyc,, +numpy/_typing/__pycache__/_scalars.cpython-311.pyc,, +numpy/_typing/__pycache__/_shape.cpython-311.pyc,, +numpy/_typing/__pycache__/_ufunc.cpython-311.pyc,, +numpy/_typing/_add_docstring.py,sha256=Oje462jvQMs5dDxRFWrDiKdK08-5sU-b6WKoSRAg2B4,4152 +numpy/_typing/_array_like.py,sha256=N-e4p17RNfe7H3jnpcX0cUXur4AIcjiTi95baW-0EZY,4294 +numpy/_typing/_char_codes.py,sha256=VZvjzpRG1Ehf2frndiRLLbPRa59A6FocdwGwjHEOorM,8977 +numpy/_typing/_dtype_like.py,sha256=iT-SzDHts4azkS6Yws6WSy0r9uj9HFLVfMrg0AFqT5k,3876 +numpy/_typing/_extended_precision.py,sha256=3jaNHY4qJwWODLFWvlfUQROLblfqqFDjOlp8bHnhMBI,449 +numpy/_typing/_nbit.py,sha256=pjOpz0sIdhphsXMK0dCQeQWXsrDpxCVZrYJ1wmALf04,651 +numpy/_typing/_nbit_base.py,sha256=PnQt_VbBKX_Uj17g_0yfoUqwh0bnN3LEyFHgR6GzNaw,3152 +numpy/_typing/_nbit_base.pyi,sha256=0AWGQcWdjpfA7y2w_b_AWdwq1wHOrL3s9lV4uqfhjvI,780 +numpy/_typing/_nested_sequence.py,sha256=gZZRCnko04ZbsGaLbAx9VSsvKPR7UuwuzRAxwd1FYX0,2584 +numpy/_typing/_scalars.py,sha256=rTil_dSaoBGmmGD9QQZ0NqEP2BeZtkOEK9ZayDMB-l0,964 +numpy/_typing/_shape.py,sha256=5csdB-yj390thRrWPnwU7LcVfq-wYnd8QvXyuGdjAX4,283 +numpy/_typing/_ufunc.py,sha256=lok5QhQ5aJBARpyVoffrbeuEJsJ5vA6DaJ4aHTeUhms,163 +numpy/_typing/_ufunc.pyi,sha256=pEjT3UA4mnynzGD-hqex9aC4wWtEjZJn3UMaCn9KJWs,27516 +numpy/_utils/__init__.py,sha256=q3vMrxeBeeU9pvCvLOkodDgzZS5V1jeI1_UZd4BbzDU,3572 +numpy/_utils/__init__.pyi,sha256=1M5QCsMaFkyallLWfERBBCw2ByYLRH1SuLFcn0WZ9Ns,756 +numpy/_utils/__pycache__/__init__.cpython-311.pyc,, +numpy/_utils/__pycache__/_convertions.cpython-311.pyc,, +numpy/_utils/__pycache__/_inspect.cpython-311.pyc,, +numpy/_utils/__pycache__/_pep440.cpython-311.pyc,, +numpy/_utils/_convertions.py,sha256=vetZFqC1qB-Z9jvc7RKuU_5ETOaSbjhbKa-sVwYV8TU,347 +numpy/_utils/_convertions.pyi,sha256=zkZfkdBk6-XcyD3zmr7E5sJbYasvyDCInUtWvrtjVhY,122 +numpy/_utils/_inspect.py,sha256=fpHbL1Gx7flw4HHjnNHNN-v8NKx1WgFBWgnX8T5hliY,7628 +numpy/_utils/_inspect.pyi,sha256=341-uESK3y_QtWGVDxgquu--jMLoYrWvrFFwVRAt914,2326 +numpy/_utils/_pep440.py,sha256=MZ5ZR1-o_4kA-68YcdUfkHkqUf3wRcKxQm08uv2GoE8,14474 +numpy/_utils/_pep440.pyi,sha256=LdpDFW8iIj_bLbuTbvRr2XWmC9YS9lrpzLR7efqL2GU,3991 +numpy/char/__init__.py,sha256=KAKgke3wwjmEwxfiwkEXehe17DoN1OR_vkLBA9WFaGs,95 +numpy/char/__init__.pyi,sha256=XN-Twg_XKK4bMmir1UZ4nCtlW7nOezcU5Ix4N7X4OhQ,1651 +numpy/char/__pycache__/__init__.cpython-311.pyc,, +numpy/conftest.py,sha256=iSiBmf_G9XM4jELWnZEAfdnxzbz1XbmIkKj3e46QljE,8835 +numpy/core/__init__.py,sha256=mCDTG1UnW38pcRG0sikf7oE2oP4MpO86ndHjquhL85U,1323 +numpy/core/__init__.pyi,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +numpy/core/__pycache__/__init__.cpython-311.pyc,, +numpy/core/__pycache__/_dtype.cpython-311.pyc,, +numpy/core/__pycache__/_dtype_ctypes.cpython-311.pyc,, +numpy/core/__pycache__/_internal.cpython-311.pyc,, +numpy/core/__pycache__/_multiarray_umath.cpython-311.pyc,, +numpy/core/__pycache__/_utils.cpython-311.pyc,, +numpy/core/__pycache__/arrayprint.cpython-311.pyc,, +numpy/core/__pycache__/defchararray.cpython-311.pyc,, +numpy/core/__pycache__/einsumfunc.cpython-311.pyc,, +numpy/core/__pycache__/fromnumeric.cpython-311.pyc,, +numpy/core/__pycache__/function_base.cpython-311.pyc,, +numpy/core/__pycache__/getlimits.cpython-311.pyc,, +numpy/core/__pycache__/multiarray.cpython-311.pyc,, +numpy/core/__pycache__/numeric.cpython-311.pyc,, +numpy/core/__pycache__/numerictypes.cpython-311.pyc,, +numpy/core/__pycache__/overrides.cpython-311.pyc,, +numpy/core/__pycache__/records.cpython-311.pyc,, +numpy/core/__pycache__/shape_base.cpython-311.pyc,, +numpy/core/__pycache__/umath.cpython-311.pyc,, +numpy/core/_dtype.py,sha256=BW-GFvu8BQiN-j6-3mESSWN3IQv9w8wNa3N53lisryI,333 +numpy/core/_dtype.pyi,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +numpy/core/_dtype_ctypes.py,sha256=pwXec_vp-L06nnzFO66mwjBuPpJPhICecnyfvW2yEMg,361 +numpy/core/_dtype_ctypes.pyi,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +numpy/core/_internal.py,sha256=i8Uf68tmcvQEmYoRWF3YqnJGCWI3GxZZEAecy5euNqg,976 +numpy/core/_multiarray_umath.py,sha256=zstXKBlwOv7q3YjVdb-zn4ypnyyI6fAGc6ahkEBav-g,2155 +numpy/core/_utils.py,sha256=dAaZtXVWhOEFiwmVsz8Mn77HsynMDKhZ7HkrjD1Q3vc,944 +numpy/core/arrayprint.py,sha256=zsOt7vFu-b1_7rPlKr7iGh12n4CmwzmU_fWV2CedPi4,349 +numpy/core/defchararray.py,sha256=4JjDjl62Abk7fNp-HZeuNSQUNNKJddNro6mD6ef4gq8,357 +numpy/core/einsumfunc.py,sha256=cW79vhPJJsi2oD-rXc_w5EKq4hlRo1YlyqI3ZnmsMx8,349 +numpy/core/fromnumeric.py,sha256=HD3e5PrYjtMOYQCMXTGZlgkikwvYWc1XRuNT5xhSxVg,353 +numpy/core/function_base.py,sha256=z5aEiXHQ4AAkHfGLQ8ul_hvjCWL2lDkgPLlWJE_4w-M,361 +numpy/core/getlimits.py,sha256=Tut0lg_HyjJXHSfB3c0Z0DvOR7amxUksqI_1MpOlXAo,345 +numpy/core/multiarray.py,sha256=nN54eP9dzhnY4oNoVBN2q7yDjF1w7PbMQx4a7oMqTVI,818 +numpy/core/numeric.py,sha256=Qev9oaDAGdyblrDjVXBzTY069E8Z-R3PIOnDp3K6XRY,372 +numpy/core/numerictypes.py,sha256=CHNOCimC3CarkejHOm-rV7b7bmykIlJAAhXj923pKq0,357 +numpy/core/overrides.py,sha256=wETB95vH9MSwFC3rg3GAUGozKJbCuKdVMhS_zC5baUw,345 +numpy/core/overrides.pyi,sha256=HScieJk23k4Lk14q8u9CEc3ZEVOQ6hGu_FeWDR2Tyu8,532 +numpy/core/records.py,sha256=xWh78TWkPZxZx5VY05Jia8-y1HyIzkEvmrF8BiKBb68,337 +numpy/core/shape_base.py,sha256=BWl-Of1Gl8nr0eBguDIdKbS5h9OdmO-VZPUQOe2e62Y,349 +numpy/core/umath.py,sha256=XggXI2bTIR9O4U2vyfgoja0kKI2q7sF3dMCWmukWIqQ,329 +numpy/ctypeslib/__init__.py,sha256=o9oMM6-vOwS4PVageFyXsh6x23hQtcsemoAVVR3kuHw,206 +numpy/ctypeslib/__init__.pyi,sha256=oNbD2M8hnxCO5HikpBaWxqyadbKM7JChbMhStQ12TIU,652 +numpy/ctypeslib/__pycache__/__init__.cpython-311.pyc,, +numpy/ctypeslib/__pycache__/_ctypeslib.cpython-311.pyc,, +numpy/ctypeslib/_ctypeslib.py,sha256=ry2JWVuqOh8IjE_m_UIyQoOpWkYoDue2xZAa3Mz8zdc,19682 +numpy/ctypeslib/_ctypeslib.pyi,sha256=yFXsjfx3kGV1YGn-FwsYU61CHIfFobM2-x_IO3sMWPs,8329 +numpy/distutils/__init__.py,sha256=sh1TV9_aW0YWvmHfBPtbZKCRcZTN6BnxKV-mIAG2vuY,2138 +numpy/distutils/__init__.pyi,sha256=6KiQIH85pUXaIlow3KW06e1_ZJBocVY6lIGghNaW33A,123 +numpy/distutils/__pycache__/__init__.cpython-311.pyc,, +numpy/distutils/__pycache__/_shell_utils.cpython-311.pyc,, +numpy/distutils/__pycache__/armccompiler.cpython-311.pyc,, +numpy/distutils/__pycache__/ccompiler.cpython-311.pyc,, +numpy/distutils/__pycache__/ccompiler_opt.cpython-311.pyc,, +numpy/distutils/__pycache__/conv_template.cpython-311.pyc,, +numpy/distutils/__pycache__/conv_template.cpython-311.pyc,sha256=C18XcBvFKYViq5zFXPSSHPtP83hO84mnhtgr4pAYMtg,14237 +numpy/distutils/__pycache__/core.cpython-311.pyc,, +numpy/distutils/__pycache__/cpuinfo.cpython-311.pyc,, +numpy/distutils/__pycache__/exec_command.cpython-311.pyc,, +numpy/distutils/__pycache__/extension.cpython-311.pyc,, +numpy/distutils/__pycache__/from_template.cpython-311.pyc,, +numpy/distutils/__pycache__/fujitsuccompiler.cpython-311.pyc,, +numpy/distutils/__pycache__/intelccompiler.cpython-311.pyc,, +numpy/distutils/__pycache__/lib2def.cpython-311.pyc,, +numpy/distutils/__pycache__/line_endings.cpython-311.pyc,, +numpy/distutils/__pycache__/log.cpython-311.pyc,, +numpy/distutils/__pycache__/mingw32ccompiler.cpython-311.pyc,, +numpy/distutils/__pycache__/misc_util.cpython-311.pyc,, +numpy/distutils/__pycache__/msvc9compiler.cpython-311.pyc,, +numpy/distutils/__pycache__/msvccompiler.cpython-311.pyc,, +numpy/distutils/__pycache__/npy_pkg_config.cpython-311.pyc,, +numpy/distutils/__pycache__/numpy_distribution.cpython-311.pyc,, +numpy/distutils/__pycache__/pathccompiler.cpython-311.pyc,, +numpy/distutils/__pycache__/system_info.cpython-311.pyc,, +numpy/distutils/__pycache__/unixccompiler.cpython-311.pyc,, +numpy/distutils/_shell_utils.py,sha256=TDc8sp986sdmW06JwOaIaN5XVqG2t4HEfs8SdCpwU50,2625 +numpy/distutils/armccompiler.py,sha256=6sKNp543q_4NafErHoFOPKz8R3YJR9soDCr1WeFr5Xk,988 +numpy/distutils/ccompiler.py,sha256=DCzFTjCnPc-OaVNzEQjeMmaLQVJKHPGDY1XYM4ae0uY,29536 +numpy/distutils/ccompiler_opt.py,sha256=7-WQ77-8dVtJblLVEfE5EYXe2yq2Gp9RdDed-lUfW9s,103063 +numpy/distutils/checks/cpu_asimd.c,sha256=Nit4NvYvo3XWtBKeV6rmIszdNLu9AY81sqMFCTkKXBE,845 +numpy/distutils/checks/cpu_asimddp.c,sha256=bQP32IzQZANu9aFu3qkovLYJXKCm0bJ6srsO5Ho2GKI,448 +numpy/distutils/checks/cpu_asimdfhm.c,sha256=xJjmEakgtmK9zlx2fIT6UZ4eZreLzdCoOVkkGPyzXFA,548 +numpy/distutils/checks/cpu_asimdhp.c,sha256=0eTZ2E1Gyk3G5XfkpSN32yI9AC3SUwwFetyAOtEp5u4,394 +numpy/distutils/checks/cpu_avx.c,sha256=69aCE28EArV-BmdFKhCA5djgNZAZtQg2zdea3VQD-co,799 +numpy/distutils/checks/cpu_avx2.c,sha256=207hFoh4ojzMAPQ53ug_Y5qCFIgZ1e8SdI1-o2jzdB4,769 +numpy/distutils/checks/cpu_avx512_clx.c,sha256=CfPjudkRZ9_xygLVOySSEjoAfkjjfu4ipkWK4uCahbU,864 +numpy/distutils/checks/cpu_avx512_cnl.c,sha256=eKCPRk6p1B0bPAyOY0oWRKZMfa-c5g-skvJGGlG5I4Y,972 +numpy/distutils/checks/cpu_avx512_icl.c,sha256=Zt8XOXZL85Ds5HvZlAwUVilT6mGbPU44Iir44ul6y2Y,1030 +numpy/distutils/checks/cpu_avx512_knl.c,sha256=0itGNg9s9gFjsj79qQvsZR-xceTTcpw4qa0OOAmq_Sg,984 +numpy/distutils/checks/cpu_avx512_knm.c,sha256=iVdJnZ5HY59XhUv4GzwqYRwz2E_jWJnk1uSz97MvxY0,1162 +numpy/distutils/checks/cpu_avx512_skx.c,sha256=aOHpYdGPEx2FcnC7TKe9Nr7wQ0QWW20Uq3xRVSb4U90,1036 +numpy/distutils/checks/cpu_avx512_spr.c,sha256=ziSmzNQZ_k3j5FrAWSKfAAW_g3l8tq8t6InVPWEUx9Y,930 +numpy/distutils/checks/cpu_avx512cd.c,sha256=zIl7AJXfxqnquZyHQvUAGr9M-vt62TIlylhdlrg-qkE,779 +numpy/distutils/checks/cpu_avx512f.c,sha256=ibW0zon6XGYkdfnYETuPfREmE5OtO0HfuLTqXMsoqNA,775 +numpy/distutils/checks/cpu_f16c.c,sha256=QxxI3vimUAkJ4eJ83va2mZzTJOk3yROI05fVY07H5To,890 +numpy/distutils/checks/cpu_fma3.c,sha256=Cq0F_UpVJ4SYHcxXfaYoqHSYvWRJzZsB8IkOVl8K2ro,839 +numpy/distutils/checks/cpu_fma4.c,sha256=Xy0YfVpQDCiFOOrCWH-RMkv7ms5ZAbSauwm2xEOT94o,314 +numpy/distutils/checks/cpu_lsx.c,sha256=ehtjqlaPwBi79qm8ybtrkVkQT0dcyPrzH3_Xsbflemo,221 +numpy/distutils/checks/cpu_neon.c,sha256=I-R8DHE6JfzqmPpaF4NTdWxq5hEW-lJZPjSjW8ynFgo,619 +numpy/distutils/checks/cpu_neon_fp16.c,sha256=6hdykX7cRL3ruejgK3bf_IXGQWol8OUITPEjvbz_1Hc,262 +numpy/distutils/checks/cpu_neon_vfpv4.c,sha256=IY4cT03GTrzEZKLd7UInKtYC0DlgugFGGrkSTfwwvmU,630 +numpy/distutils/checks/cpu_popcnt.c,sha256=Jkslm5DiuxbI-fBcCIgJjxjidm-Ps_yfAb_jJIZonE8,1081 +numpy/distutils/checks/cpu_rvv.c,sha256=hXM8c3JEjDRSf1vn3IWG0VSuno7QLrUlTegVvXXpYG4,313 +numpy/distutils/checks/cpu_sse.c,sha256=XitLZu_qxXDINNpbfcUAL7iduT1I63HjNgtyE72SCEo,706 +numpy/distutils/checks/cpu_sse2.c,sha256=OJpQzshqCS6Cp9X1I1yqh2ZPa0b2AoSmJn6HdApOzYk,717 +numpy/distutils/checks/cpu_sse3.c,sha256=AmZkvTpXcoCAfVckXgvwloutI5CTHkwHJD86pYsntgk,709 +numpy/distutils/checks/cpu_sse41.c,sha256=5GvpgxPcDL39iydUjKyS6WczOiXTs14KeXvlWVOr6LQ,695 +numpy/distutils/checks/cpu_sse42.c,sha256=8eYzhquuXjRRGp3isTX0cNUV3pXATEPc-J-CDYTgTaU,712 +numpy/distutils/checks/cpu_ssse3.c,sha256=QXWKRz5fGQv5bn282bJL4h_92-yqHFG_Gp5uLKvcA34,725 +numpy/distutils/checks/cpu_sve.c,sha256=QgBJTJ_cTDz85ZLSMU7cQbpaiv8Bwb6Ma1HfCoX3l5c,301 +numpy/distutils/checks/cpu_vsx.c,sha256=gxWpdnkMeoaBCzlU_j56brB38KFo4ItFsjyiyo3YrKk,499 +numpy/distutils/checks/cpu_vsx2.c,sha256=ycKoKXszrZkECYmonzKd7TgflpZyVc1Xq-gtJqyPKxs,276 +numpy/distutils/checks/cpu_vsx3.c,sha256=pNA4w2odwo-mUfSnKnXl5SVY1z2nOxPZZcNC-L2YX1w,263 +numpy/distutils/checks/cpu_vsx4.c,sha256=SROYYjVVc8gPlM4ERO--9Dk2MzvAecZzJxGKO_RTvPM,319 +numpy/distutils/checks/cpu_vx.c,sha256=v1UZMj78POCN7sbFmW6N0GM_qQSUwHxiF15LQYADIUs,477 +numpy/distutils/checks/cpu_vxe.c,sha256=1w8AvS6x8s_zTgcrDEGMKQmSqpJRX2NLprdSu_ibyjk,813 +numpy/distutils/checks/cpu_vxe2.c,sha256=fY9P2fWo-b08dy4dmuNNc_xX3E0ruPRU9zLPzzgD-Z8,645 +numpy/distutils/checks/cpu_xop.c,sha256=sPhOvyT-mdlbf6RlbZvMrslRwHnTFgP-HXLjueS7nwU,246 +numpy/distutils/checks/extra_avx512bw_mask.c,sha256=7IRO24mpcuXRhm3refGWP91sy0e6RmSkmUQCWyxy__0,654 +numpy/distutils/checks/extra_avx512dq_mask.c,sha256=jFtOKEtZl3iTpfbmFNB-u4DQNXXBST2toKCpxFIjEa0,520 +numpy/distutils/checks/extra_avx512f_reduce.c,sha256=hIcCLMm_aXPfrhzCsoFdQiryIrntPqfDxz0tNOR985w,1636 +numpy/distutils/checks/extra_vsx3_half_double.c,sha256=GU-E6yQLdzmOdvO06D0KCkvU4YHyuwFvyydirU_1Clk,366 +numpy/distutils/checks/extra_vsx4_mma.c,sha256=-Pz_qQ55WfWmTWGTH0hvKrFTU2S2kjsVBfIK3w5sciE,520 +numpy/distutils/checks/extra_vsx_asm.c,sha256=anSZskhKZImNk0lsSJJY_8GJQ0h3dDrkrmrGitlS7Fw,981 +numpy/distutils/checks/test_flags.c,sha256=7rgVefVOKOBaefG_6riau_tT2IqI4MFrbSMGNFnqUBQ,17 +numpy/distutils/command/__init__.py,sha256=DCxnKqTLrauOD3Fc8b7qg9U3gV2k9SADevE_Q3H78ng,1073 +numpy/distutils/command/__pycache__/__init__.cpython-311.pyc,, +numpy/distutils/command/__pycache__/autodist.cpython-311.pyc,, +numpy/distutils/command/__pycache__/bdist_rpm.cpython-311.pyc,, +numpy/distutils/command/__pycache__/build.cpython-311.pyc,, +numpy/distutils/command/__pycache__/build_clib.cpython-311.pyc,, +numpy/distutils/command/__pycache__/build_ext.cpython-311.pyc,, +numpy/distutils/command/__pycache__/build_py.cpython-311.pyc,, +numpy/distutils/command/__pycache__/build_scripts.cpython-311.pyc,, +numpy/distutils/command/__pycache__/build_src.cpython-311.pyc,, +numpy/distutils/command/__pycache__/config.cpython-311.pyc,, +numpy/distutils/command/__pycache__/config_compiler.cpython-311.pyc,, +numpy/distutils/command/__pycache__/develop.cpython-311.pyc,, +numpy/distutils/command/__pycache__/egg_info.cpython-311.pyc,, +numpy/distutils/command/__pycache__/install.cpython-311.pyc,, +numpy/distutils/command/__pycache__/install_clib.cpython-311.pyc,, +numpy/distutils/command/__pycache__/install_data.cpython-311.pyc,, +numpy/distutils/command/__pycache__/install_headers.cpython-311.pyc,, +numpy/distutils/command/__pycache__/sdist.cpython-311.pyc,, +numpy/distutils/command/autodist.py,sha256=i2ip0Zru8_AFx3lNQhlZfj6o_vg-RQ8yu1WNstcIYhE,3866 +numpy/distutils/command/bdist_rpm.py,sha256=9uZfOzdHV0_PRUD8exNNwafc0qUqUjHuTDxQcZXLIbg,731 +numpy/distutils/command/build.py,sha256=6IbYgycGcCRrrWENUBqzAEhgtUhCGLnXNVnTCu3hxWc,2675 +numpy/distutils/command/build_clib.py,sha256=FIFQITaMcwx3MQmbXCU1i73Tj7lvRkjluAX0r5l2LnA,19782 +numpy/distutils/command/build_ext.py,sha256=2iMafo-eu3HbkEPKKEsJP7laekjqtxwFemFhofaymF8,33731 +numpy/distutils/command/build_py.py,sha256=xBHZCtx91GqucanjIBETPeXmR-gyUKPDyr1iMx1ARWE,1175 +numpy/distutils/command/build_scripts.py,sha256=AEQLNmO2v5N-GXl4lwd8v_nHlrauBx9Y-UudDcdCs_A,1714 +numpy/distutils/command/build_src.py,sha256=5WI92EhuPB1a9TKtEQUHyFye36y-77Ja7BxGJdeapa8,31947 +numpy/distutils/command/config.py,sha256=IBU66VZXvuPfEYxMXImJpG8b0HW1UDlNBoLVrLyKLDA,21186 +numpy/distutils/command/config_compiler.py,sha256=SKLghaFsJl0uQTTdXh36NRtDii7Y8tI9jA6rtAMjlHw,4497 +numpy/distutils/command/develop.py,sha256=5ro-Sudt8l58JpKvH9FauH6vIfYRv2ohHLz-9eHytbc,590 +numpy/distutils/command/egg_info.py,sha256=n6trbjRfD1qWc_hRtMFkOJsg82BCiLvdl-NeXyuceGc,946 +numpy/distutils/command/install.py,sha256=iK5ls63o6WqVOreU-mG5HZSkx90qYhMQvlo2FaaQWWg,3152 +numpy/distutils/command/install_clib.py,sha256=q3yrfJY9EBaxOIYUQoiu2-juNKLKAKKfXC0nrd4t6z0,1439 +numpy/distutils/command/install_data.py,sha256=r8EVbIaXyN3aOmRugT3kp_F4Z03PsVX2l_x4RjTOWU4,872 +numpy/distutils/command/install_headers.py,sha256=HZo3To_7tpls2ZomDnaxdP32oSUVQsFeCjbD8jDZXFY,945 +numpy/distutils/command/sdist.py,sha256=XQM39b-MMO08bfE3SJrrtDWwX0XVnzCZqfAoVuuaFuE,760 +numpy/distutils/conv_template.py,sha256=hL0DDy7tMJ-5I-63BmkWkoLNX2c5GiQdQhj-XNG3Tm8,9865 +numpy/distutils/core.py,sha256=4vvNzpLy_9AfakXgzC6OITRThJd4OdfSmrzxhYu49Fc,8388 +numpy/distutils/cpuinfo.py,sha256=l5G7myXNwEOTynBIEitH-ghaF8Zw5pHQAjaYpPKNtTQ,23322 +numpy/distutils/exec_command.py,sha256=B-iAz7woqzcwcP-Y2IUh3yOI_BLzseFFe0p0K9U5gPo,10597 +numpy/distutils/extension.py,sha256=U4vHJeem4kWsK_5KUnmp1qCG0qO6PI5yQjchUvHnwlw,3561 +numpy/distutils/fcompiler/__init__.py,sha256=UncOSqwlhHdNNSViIibqy51Prrkd589e1C06sTtnYww,41660 +numpy/distutils/fcompiler/__pycache__/__init__.cpython-311.pyc,, +numpy/distutils/fcompiler/__pycache__/absoft.cpython-311.pyc,, +numpy/distutils/fcompiler/__pycache__/arm.cpython-311.pyc,, +numpy/distutils/fcompiler/__pycache__/compaq.cpython-311.pyc,, +numpy/distutils/fcompiler/__pycache__/environment.cpython-311.pyc,, +numpy/distutils/fcompiler/__pycache__/fujitsu.cpython-311.pyc,, +numpy/distutils/fcompiler/__pycache__/g95.cpython-311.pyc,, +numpy/distutils/fcompiler/__pycache__/gnu.cpython-311.pyc,, +numpy/distutils/fcompiler/__pycache__/hpux.cpython-311.pyc,, +numpy/distutils/fcompiler/__pycache__/ibm.cpython-311.pyc,, +numpy/distutils/fcompiler/__pycache__/intel.cpython-311.pyc,, +numpy/distutils/fcompiler/__pycache__/lahey.cpython-311.pyc,, +numpy/distutils/fcompiler/__pycache__/mips.cpython-311.pyc,, +numpy/distutils/fcompiler/__pycache__/nag.cpython-311.pyc,, +numpy/distutils/fcompiler/__pycache__/none.cpython-311.pyc,, +numpy/distutils/fcompiler/__pycache__/nv.cpython-311.pyc,, +numpy/distutils/fcompiler/__pycache__/pathf95.cpython-311.pyc,, +numpy/distutils/fcompiler/__pycache__/pg.cpython-311.pyc,, +numpy/distutils/fcompiler/__pycache__/sun.cpython-311.pyc,, +numpy/distutils/fcompiler/__pycache__/vast.cpython-311.pyc,, +numpy/distutils/fcompiler/absoft.py,sha256=doh74Av6YvxCG93MbGZRfbYTSa9agSS0EcRI5fBZ4pI,5726 +numpy/distutils/fcompiler/arm.py,sha256=Bpftt3HnmJc3Iyt8-nwsNv86JqdFYK0JMwh3CC8nP_k,2161 +numpy/distutils/fcompiler/compaq.py,sha256=yyReqFAq42dy1zscMAV0GqVaYW7Iao1HtAUpnv5XTec,4023 +numpy/distutils/fcompiler/environment.py,sha256=PVS1al3wahDNnneNVSl1sQhMPfz2dUXaIDVJfy0wZBU,3168 +numpy/distutils/fcompiler/fujitsu.py,sha256=g4dTLDFfLRAzhYayIwyHGBw1Y36DKtPOCYfA823ldNA,1379 +numpy/distutils/fcompiler/g95.py,sha256=1TJe4IynWYqqYBy8gJ-nz8WQ_TaSbv8k2UzUIY5Erqc,1372 +numpy/distutils/fcompiler/gnu.py,sha256=Q_nVWtfI6RQZeDAOyFVvN4o9Dy6zwF5fzLf05ZM2fWE,21027 +numpy/distutils/fcompiler/hpux.py,sha256=SLbDOPYgiixqE32GgUrAJjpDLFy9g7E01vGNZCGv6Pc,1394 +numpy/distutils/fcompiler/ibm.py,sha256=P8NMedMGxlCvVRoVIj4GKF65IP1TUe7jmlt-1KscVYo,3631 +numpy/distutils/fcompiler/intel.py,sha256=rlm017cVcyjIy1_s8a4lNHJ8ilo6TiYcIA_tuPojapY,6781 +numpy/distutils/fcompiler/lahey.py,sha256=EV3Zhwq-iowWAu4BFBPv_UGJ-IB-qxlxmi6WU1qHDOs,1372 +numpy/distutils/fcompiler/mips.py,sha256=mlUNgGrRSLnNhtxQXWVfC9l4_OP2GMvOkgbZQwBon0A,1768 +numpy/distutils/fcompiler/nag.py,sha256=FpoDQWW_Y3Anm9-Psml-eNySCGzCp9_jP2Ej4_AwDy8,2864 +numpy/distutils/fcompiler/none.py,sha256=auMK2ou1WtJ20LeMbwCZJ3XofpT9A0YYbMVd-62Mi_E,786 +numpy/distutils/fcompiler/nv.py,sha256=40IYfxm5ppkYtSaX8seMg9NGynvXrZFkcLDonxbKfW4,1594 +numpy/distutils/fcompiler/pathf95.py,sha256=ipbaZIO8sqPJ1lUppOurnboiTwRzIasWNAJvKmktvv4,1094 +numpy/distutils/fcompiler/pg.py,sha256=cVcSFM9oR0KmO5AIb4Odw9OGslW6zvDGP88n-uEwxvQ,3696 +numpy/distutils/fcompiler/sun.py,sha256=JMdFfKldTYlfW1DxV7nR09k5PZypKLWpP7wmQzmlnH0,1628 +numpy/distutils/fcompiler/vast.py,sha256=JUGP68JGOUOBS9WbXftE-qCVUD13fpLyPnhpHfTL5y0,1719 +numpy/distutils/from_template.py,sha256=BL-vypfI0GNJrTo-nKs445liTW2Qdfvrsu8RMjATL5A,8174 +numpy/distutils/fujitsuccompiler.py,sha256=JWVPhI1oH4v2iKzDP8VjcnJIKYXZFYcYCwdpDxhURvw,862 +numpy/distutils/intelccompiler.py,sha256=1ZN9JVEemp98S-kxlSjpRaqx-aUE1YmGgHy0mFQtrMc,4128 +numpy/distutils/lib2def.py,sha256=KnWZJaOsxmx57MEJxrsdPAlZbQBgu-27bSCjwO8cI6k,3746 +numpy/distutils/line_endings.py,sha256=hlI71r840mhfu8lmzdHPVZ4NFm-kJDDUMV3lETblVTY,2109 +numpy/distutils/log.py,sha256=a5-sPwcZei7kSP0ZQZH4tTrlRWHnL8jtzLCeUSPA_04,2990 +numpy/distutils/mingw/gfortran_vs2003_hack.c,sha256=FDTA53KYTIhil9ytvZlocOqghQVp9LacLHn1IurV0wI,83 +numpy/distutils/mingw32ccompiler.py,sha256=3pRSz2gJ-ztxHPP4WuNlBZdKB5bSziIgKm-NonuR25E,23612 +numpy/distutils/misc_util.py,sha256=re8nNlckODPh9fFvDJflT-UeOV594mgRSX-IANr1I_o,91723 +numpy/distutils/msvc9compiler.py,sha256=bCtCVJmGrBHPm9sOoxa3oSrdrEVCNQFEM5O5hdqX8Hc,2255 +numpy/distutils/msvccompiler.py,sha256=gqQySO-P6Egk3qgrNlyCF3ze_U47lIO9SrbFJrCQCO8,2723 +numpy/distutils/npy_pkg_config.py,sha256=t2-OG_QrnZEeQsagpJF4sLN9C7RMlnWGOW4K88wEvx0,13459 +numpy/distutils/numpy_distribution.py,sha256=nrdp8rlyjEBBV1tzzi5cE-aYeXB5U3X8T5-G0akXSoY,651 +numpy/distutils/pathccompiler.py,sha256=a5CYDXilCaIC85v0fVh-wrb0fClv0A7mPS87aF1inUc,734 +numpy/distutils/system_info.py,sha256=O10dpqNbO8n4J_6HjKCQwSBpmFA6aGx2XXbHnbKKjcU,117149 +numpy/distutils/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +numpy/distutils/tests/__pycache__/__init__.cpython-311.pyc,, +numpy/distutils/tests/__pycache__/test_build_ext.cpython-311.pyc,, +numpy/distutils/tests/__pycache__/test_ccompiler_opt.cpython-311.pyc,, +numpy/distutils/tests/__pycache__/test_ccompiler_opt_conf.cpython-311.pyc,, +numpy/distutils/tests/__pycache__/test_exec_command.cpython-311.pyc,, +numpy/distutils/tests/__pycache__/test_fcompiler.cpython-311.pyc,, +numpy/distutils/tests/__pycache__/test_fcompiler_gnu.cpython-311.pyc,, +numpy/distutils/tests/__pycache__/test_fcompiler_intel.cpython-311.pyc,, +numpy/distutils/tests/__pycache__/test_fcompiler_nagfor.cpython-311.pyc,, +numpy/distutils/tests/__pycache__/test_from_template.cpython-311.pyc,, +numpy/distutils/tests/__pycache__/test_log.cpython-311.pyc,, +numpy/distutils/tests/__pycache__/test_mingw32ccompiler.cpython-311.pyc,, +numpy/distutils/tests/__pycache__/test_misc_util.cpython-311.pyc,, +numpy/distutils/tests/__pycache__/test_npy_pkg_config.cpython-311.pyc,, +numpy/distutils/tests/__pycache__/test_shell_utils.cpython-311.pyc,, +numpy/distutils/tests/__pycache__/test_system_info.cpython-311.pyc,, +numpy/distutils/tests/__pycache__/utilities.cpython-311.pyc,, +numpy/distutils/tests/test_build_ext.py,sha256=VnrowSutoLRrv218BT4BQ4fZ-8x7Q4otFLyF6wVjugg,2853 +numpy/distutils/tests/test_ccompiler_opt.py,sha256=YAR76iKLsRIpRfS2XmKunsyHaiDzyGK-T47oNI7WmyE,29586 +numpy/distutils/tests/test_ccompiler_opt_conf.py,sha256=3KyqLepj3nC2C1UYm8nv1Ne5O6KtufD-7DlvAYJuvOo,6523 +numpy/distutils/tests/test_exec_command.py,sha256=EVipBhoXEJjlSwtQRptWJC1LNJc6wfYzu_81V2jdAL8,7612 +numpy/distutils/tests/test_fcompiler.py,sha256=SS5HOLIg0eqkmZTRKeWq9_ahW2tmV9c9piwYfzcBPmc,1320 +numpy/distutils/tests/test_fcompiler_gnu.py,sha256=RlRHZbyazgKGY17NmdYSF3ehO0M0xXN4UkbsJzJz4i8,2191 +numpy/distutils/tests/test_fcompiler_intel.py,sha256=4cppjLugoa8P4bjzYdiPxmyCywmP9plXOkfsklhnYsQ,1088 +numpy/distutils/tests/test_fcompiler_nagfor.py,sha256=ntyr8f-67dNI0OF_l6-aeTwu9wW-vnxpheqrc4cXAUI,1124 +numpy/distutils/tests/test_from_template.py,sha256=ZzUSEPyZIG4Zak3-TFqmRGXHMp58aKTuLKb0t-5XpDg,1147 +numpy/distutils/tests/test_log.py,sha256=ylfdL0kBkbjj_Tgqx47UGykAtpE_mJkLndL40p11AYc,902 +numpy/distutils/tests/test_mingw32ccompiler.py,sha256=yZiXolEe-0abuVgwqws9sgENi5Bmql8JXOdYe88EtPE,1955 +numpy/distutils/tests/test_misc_util.py,sha256=91koMzWbDZktEvkfdCByVHzViHHULmn0WRcA_D-YSjQ,3452 +numpy/distutils/tests/test_npy_pkg_config.py,sha256=1pQh-mApHjj0y9Ba2tqns79U8dsfDpJ9zcPdsa2qbps,2641 +numpy/distutils/tests/test_shell_utils.py,sha256=aKtyXpHEYARNsAq9q5SeVC0qqMfm1gzvlN6-nXOVlac,2193 +numpy/distutils/tests/test_system_info.py,sha256=FFiXjhUmt8AZhggvexshdKdXjW5qX4Bk3BUqsODH_cM,11717 +numpy/distutils/tests/utilities.py,sha256=d49suMzR_1sAXU0OO5kD7msJfBtmvv7yZZCCWIxXKY4,2377 +numpy/distutils/unixccompiler.py,sha256=ED_e7yHVNj4oXMze6KY8TbPxjyvHDC6o4VNGAkFA5ZQ,5567 +numpy/doc/__pycache__/ufuncs.cpython-311.pyc,, +numpy/doc/ufuncs.py,sha256=jMnfQhRknVIhgFVS9z2l5oYM8N1tuQtf5bXMBL449oI,5552 +numpy/dtypes.py,sha256=cPkS6BLRvpfsUzhd7Vk1L7_VcenWb1nuHuCxc9fYC4I,1353 +numpy/dtypes.pyi,sha256=Kx4i1cde8UPFY0gGpPyMRP8WULEn2BEAwKzIVNzLx14,16175 +numpy/exceptions.py,sha256=UygorC0Ez5ycvhySLek51IQ_d0RV3u37hFL0JCW3WPc,8047 +numpy/exceptions.pyi,sha256=0-9BJr5PXLwxMqvhG-8wRisAyRFmeaTreE6hIROt7ng,818 +numpy/f2py/__init__.py,sha256=1sHuSvD-wFPLK6vD_pjY527X4KP8Jlz3bsbqY2ImAaI,2534 +numpy/f2py/__init__.pyi,sha256=7mguZLcgQk0DBArDrTfWKMh3Twp4YJ8uNeLxvufDrO0,138 +numpy/f2py/__main__.py,sha256=TDesy_2fDX-g27uJt4yXIXWzSor138R2t2V7HFHwqAk,135 +numpy/f2py/__pycache__/__init__.cpython-311.pyc,, +numpy/f2py/__pycache__/__main__.cpython-311.pyc,, +numpy/f2py/__pycache__/__version__.cpython-311.pyc,, +numpy/f2py/__pycache__/_isocbind.cpython-311.pyc,, +numpy/f2py/__pycache__/_src_pyf.cpython-311.pyc,, +numpy/f2py/__pycache__/auxfuncs.cpython-311.pyc,, +numpy/f2py/__pycache__/capi_maps.cpython-311.pyc,, +numpy/f2py/__pycache__/cb_rules.cpython-311.pyc,, +numpy/f2py/__pycache__/cfuncs.cpython-311.pyc,, +numpy/f2py/__pycache__/common_rules.cpython-311.pyc,, +numpy/f2py/__pycache__/crackfortran.cpython-311.pyc,, +numpy/f2py/__pycache__/diagnose.cpython-311.pyc,, +numpy/f2py/__pycache__/f2py2e.cpython-311.pyc,, +numpy/f2py/__pycache__/f90mod_rules.cpython-311.pyc,, +numpy/f2py/__pycache__/func2subr.cpython-311.pyc,, +numpy/f2py/__pycache__/rules.cpython-311.pyc,, +numpy/f2py/__pycache__/symbolic.cpython-311.pyc,, +numpy/f2py/__pycache__/use_rules.cpython-311.pyc,, +numpy/f2py/__version__.py,sha256=u3yEZEhZzW9QwLBqzFEO-zZDqsECiHs3ixdOlRnv9Jo,49 +numpy/f2py/__version__.pyi,sha256=8GyGk3Z3JL6jXsqXbhheqYSqtp9zqapNanxA7fHf_uA,46 +numpy/f2py/_backends/__init__.py,sha256=xIVHiF-velkBDPKwFS20PSg-XkFW5kLAVj5CSqNLddM,308 +numpy/f2py/_backends/__init__.pyi,sha256=RC41nCG_RhaOllATOhrOdFFDHGDEErv56plcdVo2GMM,141 +numpy/f2py/_backends/__pycache__/__init__.cpython-311.pyc,, +numpy/f2py/_backends/__pycache__/_backend.cpython-311.pyc,, +numpy/f2py/_backends/__pycache__/_distutils.cpython-311.pyc,, +numpy/f2py/_backends/__pycache__/_meson.cpython-311.pyc,, +numpy/f2py/_backends/_backend.py,sha256=9cxRVrA-5wcm2fnVdR-F08sYwGBf89ZZ7bl5VHqKabU,1195 +numpy/f2py/_backends/_backend.pyi,sha256=S3xxAntiuMAjkWSQgBX32XiB7AMlwb4SNahYmpUeSG0,1388 +numpy/f2py/_backends/_distutils.py,sha256=0SMBqxZgJBhfgX3HW0pEcL3S0qUFVCdSEsTLv1cEcJs,2461 +numpy/f2py/_backends/_distutils.pyi,sha256=HHVnI_ozA7-RQIcj-x_DW_crVJPNDSDk6CYVECtHABM,476 +numpy/f2py/_backends/_meson.py,sha256=y_ivRspti-g5lmOEhNigRsgF-QPiizM5ljzLTB3lOK4,8338 +numpy/f2py/_backends/_meson.pyi,sha256=pwMQO3wxfbwAW7lwOis5F5ExqUITFy514ldtfaQ0W_A,1932 +numpy/f2py/_backends/meson.build.template,sha256=6XD3j-K5pc1P_icgUWkrgEsyludQWsqS5rb6UB29tH0,1654 +numpy/f2py/_isocbind.py,sha256=QVoR_pD_bY9IgTaSHHUw_8EBg0mkaf3JZfwhLfHbz1Q,2422 +numpy/f2py/_isocbind.pyi,sha256=ByVGplEnG_CaErwiRY5khEoIICe4kFGm416sJnIh68s,352 +numpy/f2py/_src_pyf.py,sha256=u6eLk_jbxlnY3roCebGAk6wYrYJ79ZQUgl89Ck1uafI,7942 +numpy/f2py/_src_pyf.pyi,sha256=DcXllb52JgjmcpIxfdFZS_kO0je9M2xd-FD6-OHDR_k,1041 +numpy/f2py/auxfuncs.py,sha256=np0s118cTsP2XIJVdyFbyDMRq-3KF_IbuKQaE3Xt-rQ,27924 +numpy/f2py/auxfuncs.pyi,sha256=efNAm5jq707DZYPGgDogJHXurZNdoXXBnovzrxPOpMc,8275 +numpy/f2py/capi_maps.py,sha256=ncBlu6yE8AVLpMuyTeKL4gVncCeJj708gSXiHxnwgmY,30890 +numpy/f2py/capi_maps.pyi,sha256=2b-Sg7dCr0RqxWZ9FmLm4Vgfs9chnuaVWYZCsC4gDFY,1099 +numpy/f2py/cb_rules.py,sha256=Ad-tkBGZdwjsPyC4v8zmh7c5v5mIOKybO6k9lNrlf9g,25716 +numpy/f2py/cb_rules.pyi,sha256=VYhLJlRKpe2jE2XTKXHmljol-R09YK8tWscZ28pMicI,512 +numpy/f2py/cfuncs.py,sha256=V9GZ2E3s0_rragphRwNaCxq5Z3Mvbw-UDBR7wdApbnE,54223 +numpy/f2py/cfuncs.pyi,sha256=fWlbI1vH3IdXj3hmrda5Cl_wocO5Fn3uwTUoHBc_6Mg,833 +numpy/f2py/common_rules.py,sha256=HJ21QrdclhsGHj883Ab337-bSlPZopPALzXIMNfkT6c,5173 +numpy/f2py/common_rules.pyi,sha256=2d2LfXQr_st4cPnCZPQq5_hK9sTqj2436_t7Bf0PiSs,332 +numpy/f2py/crackfortran.py,sha256=3uovq4FHMoecI-qTZLi7vdUjFWJRdn94JidlFCHeQ_E,150604 +numpy/f2py/crackfortran.pyi,sha256=opsl2XvnH6_N4lh2VdFUGAcxAcipJjGxIKnCy7eIvUI,10534 +numpy/f2py/diagnose.py,sha256=-UK2lwqufbuTqSex3w2H4-Qld7Z1NeutRllDNt6TDoA,5224 +numpy/f2py/diagnose.pyi,sha256=IW41dCKF39vknytu9aOQwmIWuk_WsCfkin8K1iFbmAc,24 +numpy/f2py/f2py2e.py,sha256=HmFAAJEHIo3JXUFeneYCdDvdqnEw1dTfuu0l3xlZAx4,29549 +numpy/f2py/f2py2e.pyi,sha256=iwXUAdZ55x43Ag45bbo9P49o3LSZJDjvVx0Lz5d9Src,2229 +numpy/f2py/f90mod_rules.py,sha256=GjvlboOdjc-lLmC0Tkxa8q_43fkfmo9dbWwv70xN_zI,10079 +numpy/f2py/f90mod_rules.pyi,sha256=0LIlPT9YI3Oit8aiP-i_JJPRsczDwzzQ96v14gMS1T0,467 +numpy/f2py/func2subr.py,sha256=X073hQWexxQP3aNdsa5EpX_opMsi7u5Cw5c0-LdMDGg,10378 +numpy/f2py/func2subr.pyi,sha256=ide-SEoLyEEfa51Wqe6eKRJZvnuNYDJqD7BS0akqqzQ,393 +numpy/f2py/rules.py,sha256=yhCJIGoMapOA6GzR6773uPXo7g38maMXpbVp50mVv-g,64720 +numpy/f2py/rules.pyi,sha256=YyO6clxow1aWvuZL6z9Qv6I3OdIy0V6imXNOqzD-odQ,1369 +numpy/f2py/setup.cfg,sha256=828sy3JvJmMzVxLkC-y0lxcEMaDTnMc3l9dWqP4jYng,50 +numpy/f2py/src/fortranobject.c,sha256=BVwVWRyTxvEk45KrKBXggnJGhQUchv5ASM6_4nCnUd8,47792 +numpy/f2py/src/fortranobject.h,sha256=uCcHO8mjuANlKb3c7YAZwM4pgT0CTaXWLYqgE27Mnt0,5996 +numpy/f2py/symbolic.py,sha256=GqU6BHrwjok_8scjBe9x03sCtOvTvT_6TEw6o8qf1mE,54730 +numpy/f2py/symbolic.pyi,sha256=hqioW-cbjohyt71aN3hLlI483xa4y3aZkz5d7uAq9cc,6304 +numpy/f2py/tests/__init__.py,sha256=l38bo7dpp3u1lVMPErlct_5uBLKj35zuS_r35e7c19c,345 +numpy/f2py/tests/__pycache__/__init__.cpython-311.pyc,, +numpy/f2py/tests/__pycache__/test_abstract_interface.cpython-311.pyc,, +numpy/f2py/tests/__pycache__/test_array_from_pyobj.cpython-311.pyc,, +numpy/f2py/tests/__pycache__/test_assumed_shape.cpython-311.pyc,, +numpy/f2py/tests/__pycache__/test_block_docstring.cpython-311.pyc,, +numpy/f2py/tests/__pycache__/test_callback.cpython-311.pyc,, +numpy/f2py/tests/__pycache__/test_character.cpython-311.pyc,, +numpy/f2py/tests/__pycache__/test_common.cpython-311.pyc,, +numpy/f2py/tests/__pycache__/test_crackfortran.cpython-311.pyc,, +numpy/f2py/tests/__pycache__/test_data.cpython-311.pyc,, +numpy/f2py/tests/__pycache__/test_docs.cpython-311.pyc,, +numpy/f2py/tests/__pycache__/test_f2cmap.cpython-311.pyc,, +numpy/f2py/tests/__pycache__/test_f2py2e.cpython-311.pyc,, +numpy/f2py/tests/__pycache__/test_isoc.cpython-311.pyc,, +numpy/f2py/tests/__pycache__/test_kind.cpython-311.pyc,, +numpy/f2py/tests/__pycache__/test_mixed.cpython-311.pyc,, +numpy/f2py/tests/__pycache__/test_modules.cpython-311.pyc,, +numpy/f2py/tests/__pycache__/test_parameter.cpython-311.pyc,, +numpy/f2py/tests/__pycache__/test_pyf_src.cpython-311.pyc,, +numpy/f2py/tests/__pycache__/test_quoted_character.cpython-311.pyc,, +numpy/f2py/tests/__pycache__/test_regression.cpython-311.pyc,, +numpy/f2py/tests/__pycache__/test_return_character.cpython-311.pyc,, +numpy/f2py/tests/__pycache__/test_return_complex.cpython-311.pyc,, +numpy/f2py/tests/__pycache__/test_return_integer.cpython-311.pyc,, +numpy/f2py/tests/__pycache__/test_return_logical.cpython-311.pyc,, +numpy/f2py/tests/__pycache__/test_return_real.cpython-311.pyc,, +numpy/f2py/tests/__pycache__/test_routines.cpython-311.pyc,, +numpy/f2py/tests/__pycache__/test_semicolon_split.cpython-311.pyc,, +numpy/f2py/tests/__pycache__/test_size.cpython-311.pyc,, +numpy/f2py/tests/__pycache__/test_string.cpython-311.pyc,, +numpy/f2py/tests/__pycache__/test_symbolic.cpython-311.pyc,, +numpy/f2py/tests/__pycache__/test_value_attrspec.cpython-311.pyc,, +numpy/f2py/tests/__pycache__/util.cpython-311.pyc,, +numpy/f2py/tests/src/abstract_interface/foo.f90,sha256=aCaFEqfXp79pVXnTFtjZBWUY_5pu8wsehp1dEauOkSE,692 +numpy/f2py/tests/src/abstract_interface/gh18403_mod.f90,sha256=y3R2dDn0BUz-0bMggfT1jwXbhz_gniz7ONMpureEQew,111 +numpy/f2py/tests/src/array_from_pyobj/wrapmodule.c,sha256=0UkctY5oeFs9B9qnX8qhe3wTFZA_mF-FBBkJoy_iuQg,7713 +numpy/f2py/tests/src/assumed_shape/.f2py_f2cmap,sha256=zfuOShmuotzcLIQDnVFaARwvM66iLrOYzpquIGDbiKU,30 +numpy/f2py/tests/src/assumed_shape/foo_free.f90,sha256=fqbSr7VlKfVrBulFgQtQA9fQf0mQvVbLi94e4FTST3k,494 +numpy/f2py/tests/src/assumed_shape/foo_mod.f90,sha256=9pbi88-uSNP5IwS49Kim982jDAuopo3tpEhg2SOU7no,540 +numpy/f2py/tests/src/assumed_shape/foo_use.f90,sha256=9Cl1sdrihB8cCSsjoQGmOO8VRv9ni8Fjr0Aku1UdEWM,288 +numpy/f2py/tests/src/assumed_shape/precision.f90,sha256=3L_F7n5ju9F0nxw95uBUaPeuiDOw6uHvB580eIj7bqI,134 +numpy/f2py/tests/src/block_docstring/foo.f,sha256=KVTeqSFpI94ibYIVvUW6lOQ9T2Bx5UzZEayP8Maf2H0,103 +numpy/f2py/tests/src/callback/foo.f,sha256=rLqaaaUpWFTaGVxNoGERtDKGCa5dLCTW5DglsFIx-wU,1316 +numpy/f2py/tests/src/callback/gh17797.f90,sha256=-_NvQK0MzlSR72PSuUE1FeUzzsMBUcPKsbraHIF7O24,155 +numpy/f2py/tests/src/callback/gh18335.f90,sha256=n_Rr99cI7iHBEPV3KGLEt0QKZtItEUKDdQkBt0GKKy4,523 +numpy/f2py/tests/src/callback/gh25211.f,sha256=ejY_ssadbZQfD5_-Xnx_ayzWXWLjkdy7DGp6C_uCUCY,189 +numpy/f2py/tests/src/callback/gh25211.pyf,sha256=nrzvt2QHZRCcugg0R-4FDMMl1MJmWCOAjR7Ta-pXz7Y,465 +numpy/f2py/tests/src/callback/gh26681.f90,sha256=ykwNXWyja5FfZk1bPihbYiMmMlbKhRPoPKva9dNFtLM,584 +numpy/f2py/tests/src/cli/gh_22819.pyf,sha256=e3zYjFmiOxzdXoxzgkaQ-CV6sZ1t4aKugyhqRXmBNdQ,148 +numpy/f2py/tests/src/cli/hi77.f,sha256=bgBERF4EYxHlzJCvZCJOlEmUE1FIvipdmj4LjdmL_dE,74 +numpy/f2py/tests/src/cli/hiworld.f90,sha256=RncaEqGWmsH9Z8BMV-UmOTUyo3-e9xOQGAmNgDv6SfY,54 +numpy/f2py/tests/src/common/block.f,sha256=tcGKa42S-6bfA6fybpM0Su_xjysEVustkEJoF51o_pE,235 +numpy/f2py/tests/src/common/gh19161.f90,sha256=Vpb34lRVC96STWaJerqkDQeZf7mDOwWbud6pW62Tvm4,203 +numpy/f2py/tests/src/crackfortran/accesstype.f90,sha256=3ONHb4ZNx0XISvp8fArnUwR1W9rzetLFILTiETPUd80,221 +numpy/f2py/tests/src/crackfortran/common_with_division.f,sha256=JAzHD5aluoYw0jVGZjBYd1wTABU0PwNBD0cz3Av5AAk,511 +numpy/f2py/tests/src/crackfortran/data_common.f,sha256=rP3avnulWqJbGCFLWayjoFKSspGDHZMidPTurjz33Tc,201 +numpy/f2py/tests/src/crackfortran/data_multiplier.f,sha256=LaPXVuo5lX0gFZVh76Hc7LM1sMk9EBPALuXBnHAGdOA,202 +numpy/f2py/tests/src/crackfortran/data_stmts.f90,sha256=MAZ3gstsPqECk3nWQ5Ql-C5udrIv3sAciW1ZGTtHLts,713 +numpy/f2py/tests/src/crackfortran/data_with_comments.f,sha256=FUPluNth5uHgyKqjQW7HKmyWg4wDXj3XPJCIC9ZZuOs,183 +numpy/f2py/tests/src/crackfortran/foo_deps.f90,sha256=D9FT8Rx-mK2p8R6r4bWxxqgYhkXR6lNmPj2RXOseMpw,134 +numpy/f2py/tests/src/crackfortran/gh15035.f,sha256=0G9bmfVafpuux4-ZgktYZ6ormwrWDTOhKMK4wmiSZlQ,391 +numpy/f2py/tests/src/crackfortran/gh17859.f,sha256=acknjwoWYdA038oliYLjB4T1PHhXkKRLeJobIgB_Lbo,352 +numpy/f2py/tests/src/crackfortran/gh22648.pyf,sha256=xPnKx4RcT1568q-q_O83DYpCgVYJ8z4WQ-yLmHPchJA,248 +numpy/f2py/tests/src/crackfortran/gh23533.f,sha256=k2xjRpRaajMYpi5O-cldYPTZGFGB12PUGcj5Fm9joyk,131 +numpy/f2py/tests/src/crackfortran/gh23598.f90,sha256=20ukdZXq-qU0Zxzt4W6cO8tRxlNlQ456zgD09zdozCE,105 +numpy/f2py/tests/src/crackfortran/gh23598Warn.f90,sha256=FvnIxy5fEOvzNb5WSkWzPk7yZ9yIv0yPZk9vNnS-83w,216 +numpy/f2py/tests/src/crackfortran/gh23879.f90,sha256=jELVfEGEF66z_Pv_iBHp3yGsGhadB0dnKCDtPcaz_CM,352 +numpy/f2py/tests/src/crackfortran/gh27697.f90,sha256=mTOEncxZlam6N-3I-IL0ua-iLkgqDrrVXNsE-7y7jAM,376 +numpy/f2py/tests/src/crackfortran/gh2848.f90,sha256=-IpkeTz0j9_lkQeN9mT7w3U1cAJjQxSMdAmyHdF8oVg,295 +numpy/f2py/tests/src/crackfortran/operators.f90,sha256=cb1JO2hIMCQejZO_UJWluBCP8LdXQbBJw2XN6YHB3JA,1233 +numpy/f2py/tests/src/crackfortran/privatemod.f90,sha256=9O2oWEquIUcbDB1wIzNeae3hx4gvXAoYW5tGfBt3KWk,185 +numpy/f2py/tests/src/crackfortran/publicmod.f90,sha256=nU_VXCKiniiUq_78KAWkXiN6oiMQh39emMxbgOVf9cg,177 +numpy/f2py/tests/src/crackfortran/pubprivmod.f90,sha256=-uz75kquU4wobaAPZ1DLKXJg6ySCZoDME1ce6YZ2q5Y,175 +numpy/f2py/tests/src/crackfortran/unicode_comment.f90,sha256=wDMoF7F7VFYdeocfTyWIh7noniEwExVb364HrhUSbSg,102 +numpy/f2py/tests/src/f2cmap/.f2py_f2cmap,sha256=fwszymaWhcWO296u5ThHW5yMAkFhB6EtHWqqpc9FAVI,83 +numpy/f2py/tests/src/f2cmap/isoFortranEnvMap.f90,sha256=rphN_mmzjCCCkdPM0HjsiJV7rmxpo4GoCNp5qmBzv8U,307 +numpy/f2py/tests/src/isocintrin/isoCtests.f90,sha256=Oir0PfE3mErnUQ42aFxiqAkcYn3B6b1FHIPGipDdekg,1032 +numpy/f2py/tests/src/kind/foo.f90,sha256=6_zq3OAWsuNJ5ftGTQAEynkHy-MnuLgBXmMIgbvL7yU,367 +numpy/f2py/tests/src/mixed/foo.f,sha256=Zgn0xDhhzfas3HrzgVSxIL1lGEF2mFRVohrvXN1thU0,90 +numpy/f2py/tests/src/mixed/foo_fixed.f90,sha256=6eEEYCH71gPp6lZ6e2afLrfS6F_fdP7GZDbgGJJ_6ns,187 +numpy/f2py/tests/src/mixed/foo_free.f90,sha256=UC6iVRcm0-aVXAILE5jZhivoGQbKU-prqv59HTbxUJA,147 +numpy/f2py/tests/src/modules/gh25337/data.f90,sha256=EqMEuEV0_sx4XbFzftbU_6VfGtOw9Tbs0pm0eVEp2cA,188 +numpy/f2py/tests/src/modules/gh25337/use_data.f90,sha256=DChVLgD7qTOpbYNmfGjPjfOx5YsphMIYwdwnF12X4xM,185 +numpy/f2py/tests/src/modules/gh26920/two_mods_with_no_public_entities.f90,sha256=MMLPSzBwuGS4UwCXws9djH11F5tG5xFLc80CDb4U9Mk,423 +numpy/f2py/tests/src/modules/gh26920/two_mods_with_one_public_routine.f90,sha256=1dJD1kDC_wwn7v_zF49D3n62T1x9wFxGKanQQz_VI7k,424 +numpy/f2py/tests/src/modules/module_data_docstring.f90,sha256=-asnMH7vZMwVIeMU2YiLWgYCUUUxZgPTpbAomgWByHs,236 +numpy/f2py/tests/src/modules/use_modules.f90,sha256=bveSAqXIZtd4NMlDfFei1ZlesFAa9An5LjkD-gDk2ms,418 +numpy/f2py/tests/src/negative_bounds/issue_20853.f90,sha256=IxBGWem-uv9eHgDhysEdGTmNKHR1gAiU7YJPo20eveM,164 +numpy/f2py/tests/src/parameter/constant_array.f90,sha256=fkYemwIBKsP63-FGKBW8mzOAp6k13eZOin8sQe1pyno,1513 +numpy/f2py/tests/src/parameter/constant_both.f90,sha256=L0rG6-ClvHx7Qsch46BUXRi_oIEL0uw5dpRHdOUQuv0,1996 +numpy/f2py/tests/src/parameter/constant_compound.f90,sha256=lAT76HcXGMgr1NfKof-RIX3W2P_ik1PPqkRdJ6EyBmM,484 +numpy/f2py/tests/src/parameter/constant_integer.f90,sha256=42jROArrG7vIag9wFa_Rr5DBnnNvGsrEUgpPU14vfIo,634 +numpy/f2py/tests/src/parameter/constant_non_compound.f90,sha256=u9MRf894Cw0MVlSOUbMSnFSHP4Icz7RBO21QfMkIl-Q,632 +numpy/f2py/tests/src/parameter/constant_real.f90,sha256=QoPgKiHWrwI7w5ctYZugXWzaQsqSfGMO7Jskbg4CLTc,633 +numpy/f2py/tests/src/quoted_character/foo.f,sha256=0zXQbdaqB9nB8R4LF07KDMFDbxlNdiJjVdR8Nb3nzIM,496 +numpy/f2py/tests/src/regression/AB.inc,sha256=ydjTVb6QEw1iYw2tRiziqqzWcDHrJsNWr3m51-rqFXQ,17 +numpy/f2py/tests/src/regression/assignOnlyModule.f90,sha256=vPJbhOlNsLrgN3su4ohHUSbxE4GGKU7SiJh7dhBvX3o,633 +numpy/f2py/tests/src/regression/datonly.f90,sha256=HuBLuEw0kNEplJ9TxxSNr7hLj-jx9ZNGaXC8iLm_kf8,409 +numpy/f2py/tests/src/regression/f77comments.f,sha256=FjP-07suTBdqgtwiENT04P-47UB4g9J5-20IQdXAHhM,652 +numpy/f2py/tests/src/regression/f77fixedform.f95,sha256=KdKFcAc3ZrID-h4nTOJDdEYfQzR2kkn9VqQCorfJGpM,144 +numpy/f2py/tests/src/regression/f90continuation.f90,sha256=VweFIi5-xxZhtgSOh8i_FjMPXu_od9qjrDHq6ma5X5k,285 +numpy/f2py/tests/src/regression/incfile.f90,sha256=gq87H2CtCZUON9V5UzcK6x_fthnWDVuPFQLa0fece1M,97 +numpy/f2py/tests/src/regression/inout.f90,sha256=TlMxJjhjjiuLI--Tg2LshLnbfZpiKz37EpR_tPKKSx8,286 +numpy/f2py/tests/src/regression/lower_f2py_fortran.f90,sha256=bWlj2Frch3onnUpd6DTaoLDa6htrrbkBiI9JIRbQPfE,105 +numpy/f2py/tests/src/regression/mod_derived_types.f90,sha256=Cb9WV1sxoKt2wJCl1Z9QR42iLYX226f_boX-_ehDLAQ,589 +numpy/f2py/tests/src/return_character/foo77.f,sha256=tRyQSu9vNWtMRi7gjmMN-IZnS7ogr5YS0n38uax_Eo0,1025 +numpy/f2py/tests/src/return_character/foo90.f90,sha256=WPQZC6CjXLbUYpzy5LItEoHmRDFxW0ABB3emRACsjZU,1296 +numpy/f2py/tests/src/return_complex/foo77.f,sha256=7-iKoamJ-VObPFR-Tslhiw9E-ItIvankWMyxU5HqxII,1018 +numpy/f2py/tests/src/return_complex/foo90.f90,sha256=_GOKOZeooWp3pEaTBrZNmPmkgGodj33pJnJmySnp7aE,1286 +numpy/f2py/tests/src/return_integer/foo77.f,sha256=EKs1KeAOQBkIO99tMCx0H7_lpqvqpjie8zWZ6T_bAR4,1234 +numpy/f2py/tests/src/return_integer/foo90.f90,sha256=0aYWcaAVs7Lw3Qbf8hupfLC8YavRuPZVIwjHecIlMOo,1590 +numpy/f2py/tests/src/return_logical/foo77.f,sha256=Ax3tBVNAlxFtHhV8fziFcsTnoa8YJdapecMr6Qj7fLk,1244 +numpy/f2py/tests/src/return_logical/foo90.f90,sha256=IZXCerFecYT24zTQ_spIoPr6n-fRncaM0tkTs8JqO1E,1590 +numpy/f2py/tests/src/return_real/foo77.f,sha256=3nAY1YtzGk4osR2jZkHMVIUHxFoOtF1OLfWswpcV7kA,978 +numpy/f2py/tests/src/return_real/foo90.f90,sha256=38ZCnBGWb9arlJdnVWvZjVk8uesrQN8wG2GrXGcSIJs,1242 +numpy/f2py/tests/src/routines/funcfortranname.f,sha256=ruyXK6eQSLQnQ_rODT1qm1cJvpHrFhI6NRrnWvEIK0U,128 +numpy/f2py/tests/src/routines/funcfortranname.pyf,sha256=EgRw8ZWGdd2uK4qCZD89r9VQtEXmnKDx59OpB0K58as,451 +numpy/f2py/tests/src/routines/subrout.f,sha256=35DjHIj85ZLkxRxP4bs-WFTQ5y1AyDqBKAXTzSSTAxE,94 +numpy/f2py/tests/src/routines/subrout.pyf,sha256=xT_WnDpvpyPb0FMRAVTRRgm3nlfALf1Ojg8x3qZNv_4,332 +numpy/f2py/tests/src/size/foo.f90,sha256=nK_767f1TtqVr-dMalNkXmcKbSbLCiabhRkxSDCzLz0,859 +numpy/f2py/tests/src/string/char.f90,sha256=X_soOEV8cKsVZefi3iLT7ilHljjvJJ_i9VEHWOt0T9Y,647 +numpy/f2py/tests/src/string/fixed_string.f90,sha256=tCN5sA6e7M1ViZtBNvTnO7_efk7BHIjyhFKBoLC3US0,729 +numpy/f2py/tests/src/string/gh24008.f,sha256=Z6cq8SFGvmaA72qeH9tu1rP8pYjqm0ONpHn7nGbhoLA,225 +numpy/f2py/tests/src/string/gh24662.f90,sha256=xJkiYvrMT9Ipb9Cq7OXl1Ev6TISl8pq1MGemySzfGd0,204 +numpy/f2py/tests/src/string/gh25286.f90,sha256=lqEl81Iu9GIDTAbOfkkNGcGgDyyGnPB44mJw2iK1kng,318 +numpy/f2py/tests/src/string/gh25286.pyf,sha256=wYkkr5gEN9_RtGjpqh28X1k8KCgh0-Ds9XAt8IC9j4A,393 +numpy/f2py/tests/src/string/gh25286_bc.pyf,sha256=ZRvgSzRlaPEx8GyNt97FrRhtCg-r4ZTEDsHNBfit4m8,396 +numpy/f2py/tests/src/string/scalar_string.f90,sha256=U1QqVgbF1DbxdFekRjchyDlFRPnXwzG72kuE8A44Za8,185 +numpy/f2py/tests/src/string/string.f,sha256=JCwLuH21Ltag5cw_9geIQQJ4Hv_39NqG8Dzbqj1eDKE,260 +numpy/f2py/tests/src/value_attrspec/gh21665.f90,sha256=MbbSUQI5Enzq46KWFHRzQbY7q6ZHJH_9NRL-C9i13Wg,199 +numpy/f2py/tests/test_abstract_interface.py,sha256=2fTmp5-yLaNKtWvP0jQ6_kqkyWI73kgjIl7Ara25cII,837 +numpy/f2py/tests/test_array_from_pyobj.py,sha256=L8QW78M-Mlw_wg6JB3JQb7LEHKBg9o2WIReybiQ6VYI,24374 +numpy/f2py/tests/test_assumed_shape.py,sha256=WaIBz38eV2AzRwOvTvTaRkNks8c3H_61TGKtAReP6gk,1517 +numpy/f2py/tests/test_block_docstring.py,sha256=DOTSbdInRJCunaEycMGWQUy0b5rIeugPxUKmNg8FA34,604 +numpy/f2py/tests/test_callback.py,sha256=uVRfXR6q4ukZfbRUBCnc1cvKIEiaPFr6gc3mrgMzt1w,7362 +numpy/f2py/tests/test_character.py,sha256=dLj5WhKbP5CYnuQMsB3uWV5pcgoQCEscujuBSCXwkwA,22572 +numpy/f2py/tests/test_common.py,sha256=r_nJN4ZCZ3DstAadAoO_R_igybcb5zxwOJsv_-fRBa8,667 +numpy/f2py/tests/test_crackfortran.py,sha256=QNZ9VI61XDF5KoO8r9012AaGaVHzM7g1e2UVK0A4uUU,16834 +numpy/f2py/tests/test_data.py,sha256=XBQTj0WqR-XWHuRhT1PWXankrhlNxeqC6S03XA2b7AI,2966 +numpy/f2py/tests/test_docs.py,sha256=E2YyLALHZAWJcy9ILwJf619WXTvP8djReDqfo8mkOe8,1919 +numpy/f2py/tests/test_f2cmap.py,sha256=hyzKOv261wPDWAmpuidAVFK3x9WXm64U_r3E_bmxNXg,404 +numpy/f2py/tests/test_f2py2e.py,sha256=qbPTOzrmJuY32MToMkrlbufkq_G2asp4epdtRFyrSd4,28798 +numpy/f2py/tests/test_isoc.py,sha256=KK4VeoPhjF658msdnRYCWlzagFEea8h5SzdjB5FaDk0,1490 +numpy/f2py/tests/test_kind.py,sha256=CRKxvcRUJPHg9N4HURLUixtr1sD0bvoABpzl_U14T9Q,1878 +numpy/f2py/tests/test_mixed.py,sha256=3J9eftoqFIXViiqd21Ej02eNztjbIuzaqb_2OZYZUSw,897 +numpy/f2py/tests/test_modules.py,sha256=rbm9cPZilhdIuFA6rxqtRlPtyd0_IxKoFlB8VFA-1Vc,2384 +numpy/f2py/tests/test_parameter.py,sha256=wwyq8vA5FFljYfF55srLYqFvJ-ybdG2vEpr2CRdPqVs,4763 +numpy/f2py/tests/test_pyf_src.py,sha256=Tg8PzypY1P2pda3k2VbuKX97VCD7CtdgyJajP-U7AIc,1177 +numpy/f2py/tests/test_quoted_character.py,sha256=kvjgkp3bIP2lnkZ2MzS2yB5ytEJfHZydz24VAqs3UKM,495 +numpy/f2py/tests/test_regression.py,sha256=ZCuszi9wHhPt9fePqGIY-f4BCPLMF5AfPJUE52_bwKE,6384 +numpy/f2py/tests/test_return_character.py,sha256=bdryZo5fXfTUE35M3_8gDqPCa9RKtkxROqBcnTjuwYo,1582 +numpy/f2py/tests/test_return_complex.py,sha256=1Nb6IsRfzHTCCiBTU5nHoY36w--Uh2goTedK-d8Xrc4,2507 +numpy/f2py/tests/test_return_integer.py,sha256=TsYkKMg1iJ2dBxenxgpHFGYCE1NTnrV4pJLqXbdgyxk,1868 +numpy/f2py/tests/test_return_logical.py,sha256=ob4-_KkwWohpwF45SWKxiCKtktReLuqg4WQ8YFcMOQ0,2113 +numpy/f2py/tests/test_return_real.py,sha256=c_7uRnUVigz4YcCTuiayZ1Sk2-txxk8JkQWZurC8lAQ,3382 +numpy/f2py/tests/test_routines.py,sha256=6hOB8Rn4M-MCgDhKMoqI3YIn274wyWBzaLTjrJrTYCw,824 +numpy/f2py/tests/test_semicolon_split.py,sha256=5K_jZ2rJLxvwRDQu0gd_yiOEKiJmngvrH8vLeqsbC0Y,1702 +numpy/f2py/tests/test_size.py,sha256=D-7AOZtUn0DekZr-K753WQIcnt0prEdLigSuzjEicFg,1200 +numpy/f2py/tests/test_string.py,sha256=X6ECwK-mh-0Dfp8Pcag-jWxidoXtt009QDfjc8sfGT8,3038 +numpy/f2py/tests/test_symbolic.py,sha256=qPQoebN4aUJAeLaRpVXvEJ_n4c8WNVkTNStYUtQ6Tg8,18837 +numpy/f2py/tests/test_value_attrspec.py,sha256=P3ypxCXsakygnP1IdXH1hzw5VaYKGN40z3SOwK61IPU,345 +numpy/f2py/tests/util.py,sha256=YVm0U_jGp_LRO7k4FszcuC5AqoNsnf-cc564vEljABk,12554 +numpy/f2py/use_rules.py,sha256=MX3S-9SkSznXTwWWwaccMBhhyE_ZyoG3MCLLnsXXHEE,3475 +numpy/f2py/use_rules.pyi,sha256=J7S58xd70JkQBKtzl01T3uKmGfskGO6TiosmxUMW62Y,433 +numpy/fft/__init__.py,sha256=j8Qwnr2UUY5ka45gSGF13BN3arX80H8ShOYiAGbucJ0,8506 +numpy/fft/__init__.pyi,sha256=z-kDsNgijEpHw8kIdSs4qZtzpSm9cFo0gvK32Q2rTRk,557 +numpy/fft/__pycache__/__init__.cpython-311.pyc,, +numpy/fft/__pycache__/_helper.cpython-311.pyc,, +numpy/fft/__pycache__/_pocketfft.cpython-311.pyc,, +numpy/fft/__pycache__/helper.cpython-311.pyc,, +numpy/fft/_helper.py,sha256=VpGmqY4O7zZWm0vg72mGu3AsZ-bca_mVG-olxoJYmmI,7022 +numpy/fft/_helper.pyi,sha256=6RxP5wS_vBokkLR6BRXsJqFTTWUasHLEib61hdwa_qU,1439 +numpy/fft/_pocketfft.py,sha256=Hycd7Y2xAT5zFnVys14Ker59o1PsVBXjEevXkVabLa8,64291 +numpy/fft/_pocketfft.pyi,sha256=wmEYOawqlFBz3Jw5mWMhWm0JQGtY3AO0xCBDpPgtnSc,3312 +numpy/fft/_pocketfft_umath.cp311-win_amd64.lib,sha256=ewaHB--0hTXbBjOM3RLrKuzKkL-uKiOBlTklEQGTq5I,2176 +numpy/fft/_pocketfft_umath.cp311-win_amd64.pyd,sha256=mLsvGn7OuY9Y_07U6wD1f0_JidIGrWaBcmIP4nTRhvY,276480 +numpy/fft/helper.py,sha256=ljwFnw440UcYr4CPA8fJn_gC0c3XapfFwrylzDq9vsw,628 +numpy/fft/helper.pyi,sha256=MDJI7k0BFz8N1DuYkyBCEdaT09d3CHEsBaG9JAgs2aI,913 +numpy/fft/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +numpy/fft/tests/__pycache__/__init__.cpython-311.pyc,, +numpy/fft/tests/__pycache__/test_helper.cpython-311.pyc,, +numpy/fft/tests/__pycache__/test_pocketfft.cpython-311.pyc,, +numpy/fft/tests/test_helper.py,sha256=Yff4EXasyH-nD6dyEcZfX4g61ZjQcAY7XHfQLnXI1EY,6321 +numpy/fft/tests/test_pocketfft.py,sha256=KUUhpoJglZy8-iEYMIprmHG6GdtVv8EED2xJoV2cYs8,25035 +numpy/lib/__init__.py,sha256=sZL_BFMWHTRmMAUWlbBJ-ngMCdk6UJ9FdU3n0S0SMEg,3101 +numpy/lib/__init__.pyi,sha256=_0tXc25oCdF1kVqjaSZ0rf7q-c9_XyuONvhnz5qBDYc,1695 +numpy/lib/__pycache__/__init__.cpython-311.pyc,, +numpy/lib/__pycache__/_array_utils_impl.cpython-311.pyc,, +numpy/lib/__pycache__/_arraypad_impl.cpython-311.pyc,, +numpy/lib/__pycache__/_arraysetops_impl.cpython-311.pyc,, +numpy/lib/__pycache__/_arrayterator_impl.cpython-311.pyc,, +numpy/lib/__pycache__/_datasource.cpython-311.pyc,, +numpy/lib/__pycache__/_format_impl.cpython-311.pyc,, +numpy/lib/__pycache__/_function_base_impl.cpython-311.pyc,, +numpy/lib/__pycache__/_histograms_impl.cpython-311.pyc,, +numpy/lib/__pycache__/_index_tricks_impl.cpython-311.pyc,, +numpy/lib/__pycache__/_iotools.cpython-311.pyc,, +numpy/lib/__pycache__/_nanfunctions_impl.cpython-311.pyc,, +numpy/lib/__pycache__/_npyio_impl.cpython-311.pyc,, +numpy/lib/__pycache__/_polynomial_impl.cpython-311.pyc,, +numpy/lib/__pycache__/_scimath_impl.cpython-311.pyc,, +numpy/lib/__pycache__/_shape_base_impl.cpython-311.pyc,, +numpy/lib/__pycache__/_stride_tricks_impl.cpython-311.pyc,, +numpy/lib/__pycache__/_twodim_base_impl.cpython-311.pyc,, +numpy/lib/__pycache__/_type_check_impl.cpython-311.pyc,, +numpy/lib/__pycache__/_ufunclike_impl.cpython-311.pyc,, +numpy/lib/__pycache__/_user_array_impl.cpython-311.pyc,, +numpy/lib/__pycache__/_utils_impl.cpython-311.pyc,, +numpy/lib/__pycache__/_version.cpython-311.pyc,, +numpy/lib/__pycache__/array_utils.cpython-311.pyc,, +numpy/lib/__pycache__/format.cpython-311.pyc,, +numpy/lib/__pycache__/introspect.cpython-311.pyc,, +numpy/lib/__pycache__/mixins.cpython-311.pyc,, +numpy/lib/__pycache__/npyio.cpython-311.pyc,, +numpy/lib/__pycache__/recfunctions.cpython-311.pyc,, +numpy/lib/__pycache__/scimath.cpython-311.pyc,, +numpy/lib/__pycache__/stride_tricks.cpython-311.pyc,, +numpy/lib/__pycache__/user_array.cpython-311.pyc,, +numpy/lib/_array_utils_impl.py,sha256=JQE9Ul515em350VcRXQaO4BmE0HwIRPdBpFNXu4Hnws,1759 +numpy/lib/_array_utils_impl.pyi,sha256=N_DF0J-yyE6S2fLU9Q8hlNt4aeOPQqMmwJmYb49OCHY,846 +numpy/lib/_arraypad_impl.py,sha256=roh0MMZ_rZ56kxP5UscumgwSIAMFaacyYWLfK03nR3U,33186 +numpy/lib/_arraypad_impl.pyi,sha256=1D9_Ygmy4m8whKV2VH68c4edtsEtCGuDyIlQ1dGnb0g,1926 +numpy/lib/_arraysetops_impl.py,sha256=0RK-matE1Xt4ZC_kYG-LBAAiVJAi0xm86maonB-6XuY,42535 +numpy/lib/_arraysetops_impl.pyi,sha256=vdPhAo9aFiA-W0LVkRfX3bXu7pDDfpQvSjWh35PgvDk,13871 +numpy/lib/_arrayterator_impl.py,sha256=HUtCLBXcG7mC5AX3KuJcDjHD9FEPheCcHypT6PtSswY,7442 +numpy/lib/_arrayterator_impl.pyi,sha256=mpL7ZTlEYRK8C4GbZpqDxIM0QeDNZZgW0MOYF3lVF6g,1922 +numpy/lib/_datasource.py,sha256=csFfOVL00V76KM--z9wROAImHDPB5l5b-8h1AJli53c,23431 +numpy/lib/_datasource.pyi,sha256=a_mEw94cyK-Ik7ZaQIDIJp8CB2pYV-1FEvRkZHCM20c,1027 +numpy/lib/_format_impl.py,sha256=bpsctt6JhoYaUBh8dFUhgyumRXyIaU3aYEOvzQB8wrM,37901 +numpy/lib/_format_impl.pyi,sha256=FjQ_zPqG7xOCdWa8B6NYVtjm-xo2oExGvKUYMwZfX54,895 +numpy/lib/_function_base_impl.py,sha256=wRLg-FOdacOB5K2NStvz7mejJrjcp5c610gtK-FMzY4,202269 +numpy/lib/_function_base_impl.pyi,sha256=u9JLP6HWWmIblWFddGOlArih3wpAj642rMYRgrCjL84,25101 +numpy/lib/_histograms_impl.py,sha256=2dceYr7BOVTkypST4CVgskJzjI-ka_FrL5oxBW7rHEQ,39517 +numpy/lib/_histograms_impl.pyi,sha256=n_Yd-rh3Me98Vz2J4fMaJQbE4oTpO74l11u3332m4Zw,1161 +numpy/lib/_index_tricks_impl.py,sha256=IDH9jP2WpgOaGCtcZgLx5eF1FV-eFuVomhVKjCqzyzk,33253 +numpy/lib/_index_tricks_impl.pyi,sha256=peyKzv4N9IAls-yvWNG3ZmgZ_cZQF-bhLtzXh6tGHbU,6674 +numpy/lib/_iotools.py,sha256=Yh7xIu5OnSNnj2aX-yW8viJNHNC33nhCDZtaep8TszE,31776 +numpy/lib/_iotools.pyi,sha256=QhPWjfhxdtiz73gewLi4Ji_YULmz1bqCa9b6Rmx_AZg,3507 +numpy/lib/_nanfunctions_impl.py,sha256=qpA4DEl7ixLa8jPiTHlOgJRrdLr-A29eAUc_F4h7nNI,73973 +numpy/lib/_nanfunctions_impl.pyi,sha256=5K8nYwWh2IpzkmC8mHmlHygzfS6Sf5K3EA5NzBCQAMA,885 +numpy/lib/_npyio_impl.py,sha256=IY4DQe8AYxKw2SRpoBYuSrth0vm3d6kiSF2WXanoUh0,101873 +numpy/lib/_npyio_impl.pyi,sha256=uSzRuJLRG7IJhwbmUDKIq52Q-C4jp4K-pUW-pjrm6Yk,9689 +numpy/lib/_polynomial_impl.py,sha256=Z7K4kuUiMaAv4bRoSf2589uznTWUEYS1Mp29vqgyXl8,45599 +numpy/lib/_polynomial_impl.pyi,sha256=TTjdau6f5Skay_9ipYlncaMwucHxGRy64o2-b7x9H7A,7327 +numpy/lib/_scimath_impl.py,sha256=n7oV3g6IX9sClfv4xJ8UCCtgHxScoycnpjj2iASQ6Xc,16334 +numpy/lib/_scimath_impl.pyi,sha256=3-C37vHfGAP84SLbuxHrPAO8ZQ-vgTSXTyh5EjNHXh0,2867 +numpy/lib/_shape_base_impl.py,sha256=KKZWJjfeFHSsWZ1mP2ZRAmjuNhK8u1y0RPX9kx1Q25o,40780 +numpy/lib/_shape_base_impl.pyi,sha256=RfYQA-3qd4yfZx0OX-uCzYou8LPLjMbmZBoFE413jOU,5647 +numpy/lib/_stride_tricks_impl.py,sha256=0Lrnvmponu10hS2g6E0Ec7sHuNrfNS5CoPZPqWPP74M,18574 +numpy/lib/_stride_tricks_impl.pyi,sha256=lOmkPGsJBBTsgTpNZcXfrMBd-ljjhhdMB3A700xUi6g,1889 +numpy/lib/_twodim_base_impl.py,sha256=ENAC8HiRXnufO7s0A-TKdTe0DBaXQ-LNnEikTTDbpXM,35126 +numpy/lib/_twodim_base_impl.pyi,sha256=3FAkKHv0WBeFlL3oL89jl4m259m9zyXZ-3KbsZXxQGM,11631 +numpy/lib/_type_check_impl.py,sha256=e_lIw0N7vWLRDAUkG4zFAhEXAWBGh9Fwop6nqWZ8fTg,19920 +numpy/lib/_type_check_impl.pyi,sha256=lWM1KaQ_KE3ipEvoegfq8fyTRlc9FCP7P-fFlqDpU8c,10063 +numpy/lib/_ufunclike_impl.py,sha256=mq924a_rI7wvsWoPKHyc38WLI11fxCAiog-k6gJ5br0,6516 +numpy/lib/_ufunclike_impl.pyi,sha256=cugUHwfpO9bzvD1FHDuTbJDLx69ZzLTHhXkeVf9AaVU,1355 +numpy/lib/_user_array_impl.py,sha256=6JeHIbL_loRsIAspm2srJuUm5xxff9tWoCNeSKfQNNc,7996 +numpy/lib/_user_array_impl.pyi,sha256=U1_Z_KXyJVnPFkgiVb9VO5xgaMRydB7LgtAPxaLHYew,9335 +numpy/lib/_utils_impl.py,sha256=3tqdoP3LcWZLviXW7RSSSuju7o2unlXn3AxJuofdiMk,24125 +numpy/lib/_utils_impl.pyi,sha256=zT3cXJBOVTxkmBbaDiWhqxaS4BgemF1HwP4mcfKEmKA,381 +numpy/lib/_version.py,sha256=Lt36UNePd_WZKslmmB6RBMrk0-38WApoFM-YGnP1WZE,5005 +numpy/lib/_version.pyi,sha256=zAmfNnFeke7_lHsvR94fafNBcuJHpZ1jaB2PyzEostc,658 +numpy/lib/array_utils.py,sha256=zmrUIVleWEWzl9XjEpUlDUQHt9qbbsytyu_jLj-OgnE,151 +numpy/lib/array_utils.pyi,sha256=1EeFoIjayC8IAWQgNVheBxQeQDJNDklqHSQU_bxLiEo,308 +numpy/lib/format.py,sha256=ii8MRQmPZ1nAaqnMqeYtKgdNRP52iZsHPo5rODl20UM,501 +numpy/lib/format.pyi,sha256=hjsmMm6tPXHcBSpUjTMnHzqcPdqsZ8X5X_LWDvmdPgk,1548 +numpy/lib/introspect.py,sha256=TuhUIVWvWAODqn1tkwqKHN7rNHJhjcMMQyiC_vnUpRQ,2844 +numpy/lib/introspect.pyi,sha256=IsntuFrlFhRBZcGGhRUTAgnONUHEbYw_2ApPmffx8QE,155 +numpy/lib/mixins.py,sha256=sET7o_pJOco4Bdj66L9lRmkdzr44cDTjvCX7eISjJHk,7380 +numpy/lib/mixins.pyi,sha256=i5R7jPiV9GZIhJv3KtEl_V6oaJsbggy46cTEye_gbI4,3228 +numpy/lib/npyio.py,sha256=EY5_tqGplRo-B3cJtqvf9HC34nQKr5JNgyykHWj5q_E,69 +numpy/lib/npyio.pyi,sha256=QIrW_Qz_-9L-ecPo39P0-UiGec2EBPzBC_yJ9MZ1gF0,201 +numpy/lib/recfunctions.py,sha256=7to2wo6f8bxxUfVzHrMbo0gR9FNly3zdJK3jRirqrfE,61220 +numpy/lib/recfunctions.pyi,sha256=IKl2KsmbQzRYxff2DsiGqOuja_SftP9Ce2q8maqGxwc,13651 +numpy/lib/scimath.py,sha256=3nsYqFdGoo0danaHnGK8Qrz0AAA31THUX0qnQsp5eu8,182 +numpy/lib/scimath.pyi,sha256=qAJQtJdCacZcUZ0TYxRKBdFiInqtfmu-1nFlrFk1GMc,542 +numpy/lib/stride_tricks.py,sha256=qXan9_UpXFAoDLBAaJ1wYb0B86DgP48ogp5sUu3s1Lw,89 +numpy/lib/stride_tricks.pyi,sha256=jh8Y0ulZF8CiIWDY_yv-LckvcVh5hMwN5WQEMlBiiyw,176 +numpy/lib/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +numpy/lib/tests/__pycache__/__init__.cpython-311.pyc,, +numpy/lib/tests/__pycache__/test__datasource.cpython-311.pyc,, +numpy/lib/tests/__pycache__/test__iotools.cpython-311.pyc,, +numpy/lib/tests/__pycache__/test__version.cpython-311.pyc,, +numpy/lib/tests/__pycache__/test_array_utils.cpython-311.pyc,, +numpy/lib/tests/__pycache__/test_arraypad.cpython-311.pyc,, +numpy/lib/tests/__pycache__/test_arraysetops.cpython-311.pyc,, +numpy/lib/tests/__pycache__/test_arrayterator.cpython-311.pyc,, +numpy/lib/tests/__pycache__/test_format.cpython-311.pyc,, +numpy/lib/tests/__pycache__/test_function_base.cpython-311.pyc,, +numpy/lib/tests/__pycache__/test_histograms.cpython-311.pyc,, +numpy/lib/tests/__pycache__/test_index_tricks.cpython-311.pyc,, +numpy/lib/tests/__pycache__/test_io.cpython-311.pyc,, +numpy/lib/tests/__pycache__/test_loadtxt.cpython-311.pyc,, +numpy/lib/tests/__pycache__/test_mixins.cpython-311.pyc,, +numpy/lib/tests/__pycache__/test_nanfunctions.cpython-311.pyc,, +numpy/lib/tests/__pycache__/test_packbits.cpython-311.pyc,, +numpy/lib/tests/__pycache__/test_polynomial.cpython-311.pyc,, +numpy/lib/tests/__pycache__/test_recfunctions.cpython-311.pyc,, +numpy/lib/tests/__pycache__/test_regression.cpython-311.pyc,, +numpy/lib/tests/__pycache__/test_shape_base.cpython-311.pyc,, +numpy/lib/tests/__pycache__/test_stride_tricks.cpython-311.pyc,, +numpy/lib/tests/__pycache__/test_twodim_base.cpython-311.pyc,, +numpy/lib/tests/__pycache__/test_type_check.cpython-311.pyc,, +numpy/lib/tests/__pycache__/test_ufunclike.cpython-311.pyc,, +numpy/lib/tests/__pycache__/test_utils.cpython-311.pyc,, +numpy/lib/tests/data/py2-np0-objarr.npy,sha256=ZLoI7K3iQpXDkuoDF1Ymyc6Jbw4JngbQKC9grauVRsk,258 +numpy/lib/tests/data/py2-objarr.npy,sha256=F4cyUC-_TB9QSFLAo2c7c44rC6NUYIgrfGx9PqWPSKk,258 +numpy/lib/tests/data/py2-objarr.npz,sha256=xo13HBT0FbFZ2qvZz0LWGDb3SuQASSaXh7rKfVcJjx4,366 +numpy/lib/tests/data/py3-objarr.npy,sha256=7mtikKlHXp4unZhM8eBot8Cknlx1BofJdd73Np2PW8o,325 +numpy/lib/tests/data/py3-objarr.npz,sha256=vVRl9_NZ7_q-hjduUr8YWnzRy8ESNlmvMPlaSSC69fk,453 +numpy/lib/tests/data/python3.npy,sha256=X0ad3hAaLGXig9LtSHAo-BgOvLlFfPYMnZuVIxRmj-0,96 +numpy/lib/tests/data/win64python2.npy,sha256=agOcgHVYFJrV-nrRJDbGnUnF4ZTPYXuSeF-Mtg7GMpc,96 +numpy/lib/tests/test__datasource.py,sha256=L8nGVQKsnz6JMzA22QgBd_dgNY9bogVqziw2NaG0HWQ,10933 +numpy/lib/tests/test__iotools.py,sha256=zilzDE3_QME4evTTuSzyBHRcZkH24dRD42vruEr5VZQ,14125 +numpy/lib/tests/test__version.py,sha256=I6-cyr_7w1TUvC25hR1gTE3x8S-QRAXRsB4IjPxY3tg,2063 +numpy/lib/tests/test_array_utils.py,sha256=gRsql9I0f7RQk-1b8iPa1jDZsd_auCF05-ulxBCVfN4,1150 +numpy/lib/tests/test_arraypad.py,sha256=_fnhQ1y-L1jo51aLwQV-9MPiBL723STQLINrfkvjOT8,57570 +numpy/lib/tests/test_arraysetops.py,sha256=oebnQ4hWZEBn4E9y2FShpkcsQT-K7ZuHSxk-ndpAITQ,41519 +numpy/lib/tests/test_arrayterator.py,sha256=N5tsHwFyL_jnyTJ_nnoE4cHYKzR4fO1frdLqr09Ip0I,1347 +numpy/lib/tests/test_format.py,sha256=WfMDB563BYh-sWizN-IGU8wkVDd4OQn7YiyZmskU_88,43010 +numpy/lib/tests/test_function_base.py,sha256=PUbOPiB6eVSMdk3App2cLwk4HYEvf8xuDR2zpWXGYNs,175692 +numpy/lib/tests/test_histograms.py,sha256=vAPUJdT6J0pGXiFgrhf3TvKRHox1sgC1Ag7SNntbg3M,34821 +numpy/lib/tests/test_index_tricks.py,sha256=SQ3uHjPfSyaxnbId7yZqLrPgY-P0zpxv2lyoXmuSYJc,21268 +numpy/lib/tests/test_io.py,sha256=1Q-F5YleH0vJ_euiabDUcfH2JoZmz4S8KZPzxJ1_xCU,113837 +numpy/lib/tests/test_loadtxt.py,sha256=BXuhaSKd4AgH28nlR7KW9Bfd9hr_CMSagD8j2fQEGPI,41658 +numpy/lib/tests/test_mixins.py,sha256=eWaFNkjo_IPlP4-7T-sitpZqhAgjUOjqkglUaPIdWXA,7224 +numpy/lib/tests/test_nanfunctions.py,sha256=hWT_aag6WT21ODv_RP_2t25iUTd8rPuMoIS83vcDgWk,55536 +numpy/lib/tests/test_packbits.py,sha256=RAk590EWlPvH9M3trkBKb6MbKNhMjo-otRLEYznT7dM,17919 +numpy/lib/tests/test_polynomial.py,sha256=8SxedN9XiDR4wbntJR74M1KYgveOLKu4sxyYNq2kz0I,12632 +numpy/lib/tests/test_recfunctions.py,sha256=PhSi_3CYmrLk6BaZYQh_4N54R_35g4_DdgTT269BOj8,44980 +numpy/lib/tests/test_regression.py,sha256=6Us-PZWNVT__IW4vj2-rA77Sdhpaoqo-_JgySVXL3dg,7947 +numpy/lib/tests/test_shape_base.py,sha256=R65ZPBfWnvzIyIrYbyJAUBUQqDbZX3gN0zx8sCydjKc,28219 +numpy/lib/tests/test_stride_tricks.py,sha256=yUGgXm40x2pVYfxfmmtcVUFCPvfIlchxmx8rgx7-elU,23686 +numpy/lib/tests/test_twodim_base.py,sha256=j9PmcG03wmHEZjOL6pMp-kKOczqjcYYYh8ptdFSBPnA,19484 +numpy/lib/tests/test_type_check.py,sha256=UzaOYqNOWjSAxiur6FtERAEMIfYxk84nL_lpeDJGzxU,15269 +numpy/lib/tests/test_ufunclike.py,sha256=7oc71qsMf8NSPU-bMOZNw7H5wwksjPlxy9jJHTMK9Bc,3112 +numpy/lib/tests/test_utils.py,sha256=9XtDAa79N5LOqpLUHKY88ajRuY2gLzRMyJ1dry_4dkU,2454 +numpy/lib/user_array.py,sha256=5z7-hfXnWT5Oq4_WPnjNWGPc9RHUWZcyq4L9ZM3kkGQ,64 +numpy/lib/user_array.pyi,sha256=IaCNerLboKjt3Fm-_k_d8IqeyJf7Lc9Pr5ROUr6wleM,54 +numpy/linalg/__init__.py,sha256=E24DtS109BNK_skVjGfSN491xPLM2nGarRjH-m1zBNM,2222 +numpy/linalg/__init__.pyi,sha256=3M1fJPi1c3gyvXa0fIUmgwi_oDUi2Ps4d_9BKeeKNcw,1133 +numpy/linalg/__pycache__/__init__.cpython-311.pyc,, +numpy/linalg/__pycache__/_linalg.cpython-311.pyc,, +numpy/linalg/__pycache__/linalg.cpython-311.pyc,, +numpy/linalg/_linalg.py,sha256=QkVmpFqL7WsZbprAsSaDsPNBabJZaaRCkOz7c0ZnL9c,118788 +numpy/linalg/_linalg.pyi,sha256=qphefd5jo9jOgZ4dEZJqjuUqXLBCM-WxqDG2oWdlQYE,12023 +numpy/linalg/_umath_linalg.cp311-win_amd64.lib,sha256=yOIb0YivGuvPxilo3DuSF5mKqZYN1FMX4Cp8aaMvaL0,2120 +numpy/linalg/_umath_linalg.cp311-win_amd64.pyd,sha256=ieHYExyJq8f7oxbdsyOM4X0OTVyJCQ3iXNxRcx-vcDw,112128 +numpy/linalg/_umath_linalg.pyi,sha256=g5NJoNte6CwuMFDfd55O8OvJv4lOi539VKAB-Mrc864,1470 +numpy/linalg/lapack_lite.cp311-win_amd64.lib,sha256=fCCBgNLxvGpecDem2aMaxswg-WgRM6eSjiJju6F2OS4,2084 +numpy/linalg/lapack_lite.cp311-win_amd64.pyd,sha256=r5IOzCfztsBG3ZRodU7IQWHPs8ihPO32CE4YQMsYorI,18432 +numpy/linalg/lapack_lite.pyi,sha256=yQWhNIbR6YSzeGAumEJQTTkyBl2YRW_WlgsgGFDz0_E,2813 +numpy/linalg/linalg.py,sha256=-uK-TpPOrpX8ItD4xpLi1kva6HZKfN-39-3h-yOAhOc,602 +numpy/linalg/linalg.pyi,sha256=iGd8b4-gN1d92K7wfgDZxoHrVXnVC1c6vGqW4ZbWldY,1001 +numpy/linalg/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +numpy/linalg/tests/__pycache__/__init__.cpython-311.pyc,, +numpy/linalg/tests/__pycache__/test_deprecations.cpython-311.pyc,, +numpy/linalg/tests/__pycache__/test_linalg.cpython-311.pyc,, +numpy/linalg/tests/__pycache__/test_regression.cpython-311.pyc,, +numpy/linalg/tests/test_deprecations.py,sha256=GaeE3JnQlJLoAfbY93LmgCFUlV5M8IFmQ7EhF4WbqwU,660 +numpy/linalg/tests/test_linalg.py,sha256=yNA8X23EmY5MPQZIU24nU12XcIAV-DU0GYRK3PTex6w,87441 +numpy/linalg/tests/test_regression.py,sha256=Z3RUgyBrcKAnvG1lAbluu7fsWDq7ApMKeCAEK2yaM2Q,6885 +numpy/ma/API_CHANGES.txt,sha256=U39zA87aM_OIJhEKvHgL1RY1lhMJZc1Yj3DGLwbPbF0,3540 +numpy/ma/LICENSE,sha256=1427IIuA2StNMz5BpLquUNEkRPRuUxmfp3Jqkd5uLac,1616 +numpy/ma/README.rst,sha256=_MHrqHTE8L4wiJJqvaOh1l-xTxidwdilc_SZkFbgubM,10110 +numpy/ma/__init__.py,sha256=Zh2Hil4sdNNkf-0aJQrnOPmRkRwR4rOAzhN-n3RHsbU,1459 +numpy/ma/__init__.pyi,sha256=IorrWDELrFWTc_WfqWNCtWIcL0PrRE9aEZSzAABKMks,7404 +numpy/ma/__pycache__/__init__.cpython-311.pyc,, +numpy/ma/__pycache__/core.cpython-311.pyc,, +numpy/ma/__pycache__/extras.cpython-311.pyc,, +numpy/ma/__pycache__/mrecords.cpython-311.pyc,, +numpy/ma/__pycache__/testutils.cpython-311.pyc,, +numpy/ma/core.py,sha256=Ag94aU0zq3R7ScJBiHv7ebpzQ8fpmrb63GS_cqgMt_E,297817 +numpy/ma/core.pyi,sha256=fM6g8d76-3jUS6JoaT8IFSRAreC7Z2VcN1wZlPtMjoE,41921 +numpy/ma/extras.py,sha256=MeTR8oKWzwLDkHKPPnx-8UNxVZcaR3CaAxFSP15Pa6Q,73024 +numpy/ma/extras.pyi,sha256=VO7mwLblgjF5Fav_i3UV8GT2NsXNTouvzZDjyJRDXtI,3972 +numpy/ma/mrecords.py,sha256=HVCPtj2VnbAI48PGeh_Ax3_J1Vt9ol1GVYS_f4FDeI0,27846 +numpy/ma/mrecords.pyi,sha256=la8iCUB-Sw1diC0sBPgvludFTdYa2PT8DKcux04nrr4,2069 +numpy/ma/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +numpy/ma/tests/__pycache__/__init__.cpython-311.pyc,, +numpy/ma/tests/__pycache__/test_arrayobject.cpython-311.pyc,, +numpy/ma/tests/__pycache__/test_core.cpython-311.pyc,, +numpy/ma/tests/__pycache__/test_deprecations.cpython-311.pyc,, +numpy/ma/tests/__pycache__/test_extras.cpython-311.pyc,, +numpy/ma/tests/__pycache__/test_mrecords.cpython-311.pyc,, +numpy/ma/tests/__pycache__/test_old_ma.cpython-311.pyc,, +numpy/ma/tests/__pycache__/test_regression.cpython-311.pyc,, +numpy/ma/tests/__pycache__/test_subclassing.cpython-311.pyc,, +numpy/ma/tests/test_arrayobject.py,sha256=ap06C0a0dGWcOknpctbhLbzHSNd2M9p_JL2jESqBBGk,1139 +numpy/ma/tests/test_core.py,sha256=uDpzzooFh2bexYKu7GiHZX2eP1WdkNHriiFJ_YsNheY,225603 +numpy/ma/tests/test_deprecations.py,sha256=3I1UN8R9CPORIisD_2A4wHfs1o_uraBbYZwEKgeMNmI,2656 +numpy/ma/tests/test_extras.py,sha256=HMTxWuXupM2mLq7BoddDmDOh2cD6WziBMWQkt14Bejk,80433 +numpy/ma/tests/test_mrecords.py,sha256=r0aiKGwuC7LOLaOuzXLQRz8s-b-c2l4sEWMP-Ih-a0g,20391 +numpy/ma/tests/test_old_ma.py,sha256=2CJYQxU-vNkfxSC5AnsezbCuEnczf-9rvfhDbcDRqxY,33960 +numpy/ma/tests/test_regression.py,sha256=d5LUwBxmENTnGAI1mb7D8wnv9b_PO7x4rxIxzTCLLGw,3403 +numpy/ma/tests/test_subclassing.py,sha256=NtEEZJEPpDSsSU0Ahk59kETgUk6fVqMBP3ghdSjiUCo,17405 +numpy/ma/testutils.py,sha256=WolXt_fMEpQl1pqfh9nWPCtD9A2Cpflu0dSIZetzf_c,10529 +numpy/matlib.py,sha256=xGJk9kOBs7qqA8IqhqQuwufNMUvq6Af_mErXxmZHZxw,11018 +numpy/matlib.pyi,sha256=JxPQ3A1oaYZW90E8Fkg3VaCp8kMJZTRmES7-mBq2ybs,10184 +numpy/matrixlib/__init__.py,sha256=aPXbaN4OYDp9TFA8kGzt2gTBHb3o8Nanw-uM_3XoDF4,255 +numpy/matrixlib/__init__.pyi,sha256=4sC3yICi3UozT9WZtjx3DqbZs7_vRQDUUy5HIraEe0w,111 +numpy/matrixlib/__pycache__/__init__.cpython-311.pyc,, +numpy/matrixlib/__pycache__/defmatrix.cpython-311.pyc,, +numpy/matrixlib/defmatrix.py,sha256=HaFYtHEIhmi4KKbwzUJw-5uk-Xah8JS9dRVi2bZH20w,31994 +numpy/matrixlib/defmatrix.pyi,sha256=hdoqtYixn7k4fJ4kFJBuyJ5VzVrFuTPj5qefm39_dlk,495 +numpy/matrixlib/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +numpy/matrixlib/tests/__pycache__/__init__.cpython-311.pyc,, +numpy/matrixlib/tests/__pycache__/test_defmatrix.cpython-311.pyc,, +numpy/matrixlib/tests/__pycache__/test_interaction.cpython-311.pyc,, +numpy/matrixlib/tests/__pycache__/test_masked_matrix.cpython-311.pyc,, +numpy/matrixlib/tests/__pycache__/test_matrix_linalg.cpython-311.pyc,, +numpy/matrixlib/tests/__pycache__/test_multiarray.cpython-311.pyc,, +numpy/matrixlib/tests/__pycache__/test_numeric.cpython-311.pyc,, +numpy/matrixlib/tests/__pycache__/test_regression.cpython-311.pyc,, +numpy/matrixlib/tests/test_defmatrix.py,sha256=pXRWM5Ogw8TYguVybYH9sJHjFZwW3hY5I3Ye0WrlI_U,15432 +numpy/matrixlib/tests/test_interaction.py,sha256=1nkRPWmfWfzOS9GjwOQV1D-Ke9W6UtkdwuMMVYcRIcg,12234 +numpy/matrixlib/tests/test_masked_matrix.py,sha256=nopfUUI8kKuKRiV9G0rQhRdc6K6I6mZ8KtN9NVWzawI,9027 +numpy/matrixlib/tests/test_matrix_linalg.py,sha256=oW_ejZQoARPqzYtnrXDOVkSRcMT0JJJa9vcOmrr_jw8,2254 +numpy/matrixlib/tests/test_multiarray.py,sha256=WgUxpIxXbzpXTTnt8iG0HC6RoAcTUk0PsEiMHT2361E,572 +numpy/matrixlib/tests/test_numeric.py,sha256=4XC1O2mv7NYYP1siT6I0YAz-Cuhlw6ZN9Du2FmCUz8Y,465 +numpy/matrixlib/tests/test_regression.py,sha256=2-c4B5aKWbySZ95RlG5WUm8OLBO7sLtM2zIzQMwMv0U,965 +numpy/polynomial/__init__.py,sha256=ynOHE1Mc9eBZMNlroaE9meIW7wZkvo7bpGjFjtDB_AU,6913 +numpy/polynomial/__init__.pyi,sha256=jc9FycOQGDkZNxh4Xb_pavPuPVsSJTIa-HLzk-aNVWM,713 +numpy/polynomial/__pycache__/__init__.cpython-311.pyc,, +numpy/polynomial/__pycache__/_polybase.cpython-311.pyc,, +numpy/polynomial/__pycache__/chebyshev.cpython-311.pyc,, +numpy/polynomial/__pycache__/hermite.cpython-311.pyc,, +numpy/polynomial/__pycache__/hermite_e.cpython-311.pyc,, +numpy/polynomial/__pycache__/laguerre.cpython-311.pyc,, +numpy/polynomial/__pycache__/legendre.cpython-311.pyc,, +numpy/polynomial/__pycache__/polynomial.cpython-311.pyc,, +numpy/polynomial/__pycache__/polyutils.cpython-311.pyc,, +numpy/polynomial/_polybase.py,sha256=8YgTcSVA4nRyITvWfrvuFGkXAdRB8Cc01R3cMCaa2wI,40549 +numpy/polynomial/_polybase.pyi,sha256=C5j9h0s698rgbcDMKGWWrwrF5QYtnwa6Ox_244WP9mg,8472 +numpy/polynomial/_polytypes.pyi,sha256=MRY_GKoGtkKCFYvVt_mh94KOIpPhni4M4VkuB54y7Bo,23274 +numpy/polynomial/chebyshev.py,sha256=zxrQ6wuu3IZ_VYy4BpAhkKkCrymvdQuIRcc6MUSNYHg,64325 +numpy/polynomial/chebyshev.pyi,sha256=LhCLFybWm6XsSqPJblYoaBWkG1IcTf0bFtUuR0rd4kY,4968 +numpy/polynomial/hermite.py,sha256=EhhX8RbRtTl42tynAFhgbImeGJO1M2gMjE0hRphjKfk,56343 +numpy/polynomial/hermite.pyi,sha256=dCO5Pv_LMeFW-nwKfRhN7kTATaXZSPgmAbtLo7TX6-I,2570 +numpy/polynomial/hermite_e.py,sha256=WJkoibBSLSeR0RrE3dL64hUTUhsdgQ2QGGF7hqUCVEU,53947 +numpy/polynomial/hermite_e.pyi,sha256=vXlYcf-jHnS0V6T8gbDtgdyPJknfHR5iP4klDDdAvlg,2662 +numpy/polynomial/laguerre.py,sha256=WnoywsFjgqsmZN6NaGCwX2cOPKANoPDvvEs5bDAndHs,54149 +numpy/polynomial/laguerre.pyi,sha256=3Aj5K9_lvjn4HMBEMvRj1NUjAybxEV0odA7u-LFAKRA,2291 +numpy/polynomial/legendre.py,sha256=kfEY3rDouSItAPtI1_sdY4vQXtVKAkOOdEgEYttcBSM,52734 +numpy/polynomial/legendre.pyi,sha256=S2bUMiQuuzKbwkryAjTrkmJQtgyFNGbw3Z5RZ8dEymY,2291 +numpy/polynomial/polynomial.py,sha256=uMkcK4AmTjT3NQqB_tI7sTTGUZMrWzrfHNWKYhTIQcw,53812 +numpy/polynomial/polynomial.pyi,sha256=li6W0OTUkSnmlHmbC7eiTZXVBTUYtHsNuQhkw4ZTi7o,2110 +numpy/polynomial/polyutils.py,sha256=WIkpxJavMmDBnb1RqEXZqtQkyuBoyTKqV-ljaC9L0Fc,23416 +numpy/polynomial/polyutils.pyi,sha256=-2XO3ggSvxc8VmcxgK0k73Z10E0nRn1fD8bnzGnIuA8,10658 +numpy/polynomial/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +numpy/polynomial/tests/__pycache__/__init__.cpython-311.pyc,, +numpy/polynomial/tests/__pycache__/test_chebyshev.cpython-311.pyc,, +numpy/polynomial/tests/__pycache__/test_classes.cpython-311.pyc,, +numpy/polynomial/tests/__pycache__/test_hermite.cpython-311.pyc,, +numpy/polynomial/tests/__pycache__/test_hermite_e.cpython-311.pyc,, +numpy/polynomial/tests/__pycache__/test_laguerre.cpython-311.pyc,, +numpy/polynomial/tests/__pycache__/test_legendre.cpython-311.pyc,, +numpy/polynomial/tests/__pycache__/test_polynomial.cpython-311.pyc,, +numpy/polynomial/tests/__pycache__/test_polyutils.cpython-311.pyc,, +numpy/polynomial/tests/__pycache__/test_printing.cpython-311.pyc,, +numpy/polynomial/tests/__pycache__/test_symbol.cpython-311.pyc,, +numpy/polynomial/tests/test_chebyshev.py,sha256=ABZkUVV2ju2Qz6ZcunGSUp4IixYRkXqlQKdpcrluUVs,21273 +numpy/polynomial/tests/test_classes.py,sha256=vRYXxgoDP0w2ucVRV0JGjA_iqtN1rkPa9YaxtSXJNa8,19170 +numpy/polynomial/tests/test_hermite.py,sha256=OlAQnE-sI0WVVixyBaZj8dhO-dOx_KJqBqLLPI8l69E,19245 +numpy/polynomial/tests/test_hermite_e.py,sha256=hqmpyykKvJXo7YG1uQ6_NG_LxaDMH_LFUGr5BBO3DjA,19585 +numpy/polynomial/tests/test_laguerre.py,sha256=T-801KTxjscADvIjYhjyM0VTfKYBZS7QalenxQIzTj0,18177 +numpy/polynomial/tests/test_legendre.py,sha256=kffyVxgi0D6zcTlZfmhf1AY3lQ-9wgyTaKOZvfClUaA,19376 +numpy/polynomial/tests/test_polynomial.py,sha256=8fgVtyZ-E8HH0E7YxhZcvtyE5AVSM5BcUgt8UrccdaE,23580 +numpy/polynomial/tests/test_polyutils.py,sha256=1u8P9Ta0FsV4y2pMRjIgXf_38oMxe8xIJplJ8AFw0n0,3908 +numpy/polynomial/tests/test_printing.py,sha256=xkSxkYUUaAdBjayCrzRSca7p4aG7kyIqPRiy1b2FxEk,21958 +numpy/polynomial/tests/test_symbol.py,sha256=JNF0yt5xmUERjflLOydG1pMo6wMRLtaPDcYUkvXcD-o,5592 +numpy/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +numpy/random/LICENSE.md,sha256=tLwvT6HJV3jx7T3Y8UcGvs45lHW5ePnzS1081yUhtIo,3582 +numpy/random/__init__.pxd,sha256=g3EaMi3yfmnqT-KEWj0cp6SWIxVN9ChFjEYXGOfOifE,445 +numpy/random/__init__.py,sha256=8h45GRbXpL10xJzqw_n6Xgnm6SY_JUYCqH6SpeCnqUY,7693 +numpy/random/__init__.pyi,sha256=aqBCk_fpEZeoE94eNpGu37F6ZWfaDaajac9cWNm97So,2233 +numpy/random/__pycache__/__init__.cpython-311.pyc,, +numpy/random/__pycache__/_pickle.cpython-311.pyc,, +numpy/random/_bounded_integers.cp311-win_amd64.lib,sha256=cqL4-qDmBoQEQURBhe2PPTqeAaeaw5KpyocD6vEDQpA,18000 +numpy/random/_bounded_integers.cp311-win_amd64.pyd,sha256=oV0uiwWZxqCjWkWL_L3zDNcYpxtDMb6c76FG9qYLZig,232448 +numpy/random/_bounded_integers.pxd,sha256=EOKKUlF9bh0CLNEP8TzXzX4w_xV5kivr1Putfdf6yvU,1763 +numpy/random/_bounded_integers.pyi,sha256=PFr_V0xYQhWjKk5oc83cYg_JcNZ2FEKTsjXlnxmkyB8,25 +numpy/random/_common.cp311-win_amd64.lib,sha256=BAxrmP8hmyoIdOMT2tRwBxOVCjej21_2lKoW4uiwoAM,2012 +numpy/random/_common.cp311-win_amd64.pyd,sha256=9auNobrpDMAv5M9p1T0gQCF1jSNafxWv56UgvYaGE5g,169472 +numpy/random/_common.pxd,sha256=2_9NLWFSnLG4iDd-KeYUBRa47QM8qceUsPiAkyWZ74I,5089 +numpy/random/_common.pyi,sha256=UlOkH40kVn6TU0c6OhG3CocvGnuYAC_46fxZJ7B_7y8,437 +numpy/random/_examples/cffi/__pycache__/extending.cpython-311.pyc,, +numpy/random/_examples/cffi/__pycache__/parse.cpython-311.pyc,, +numpy/random/_examples/cffi/extending.py,sha256=jSc3Vc6Uxl3VWHmoaffez8qG0GTfrFMuUxDhuB9Y5z4,928 +numpy/random/_examples/cffi/parse.py,sha256=2hy5736s-oL5uYvlQf_acpo7srBC8WfffLUhMcm218c,1803 +numpy/random/_examples/cython/extending.pyx,sha256=1lkq6zFifnwaMtAkVG0i_9SbMiNqplvqnHaqUpxqNzs,2344 +numpy/random/_examples/cython/extending_distributions.pyx,sha256=bGYjid42hpSsxDrpw76gYZl7fVbcE3U3WkDzb2aLbAE,3984 +numpy/random/_examples/cython/meson.build,sha256=q_IFcVs_qzERJD_-8uaDnjps3QdaW49okZMbFtwkAPo,1747 +numpy/random/_examples/numba/__pycache__/extending.cpython-311.pyc,, +numpy/random/_examples/numba/__pycache__/extending_distributions.cpython-311.pyc,, +numpy/random/_examples/numba/extending.py,sha256=mo0o4VM-K1vUQxNl_Uqr35Acj9UewnkglS7-dFX8yuw,2045 +numpy/random/_examples/numba/extending_distributions.py,sha256=vQdhhOpuGlpG8hk-mKWv7Li3-rwvelv-1c67odurt9o,2103 +numpy/random/_generator.cp311-win_amd64.lib,sha256=mnEMY6XVJfILkBDoP_ms3_lLqp38y2lUd6ovgxBk6xo,18400 +numpy/random/_generator.cp311-win_amd64.pyd,sha256=S06oSaerw1TWS_WOUp9UeH8DPuRXKNfgZn2kQHVcyEc,744960 +numpy/random/_generator.pyi,sha256=kCKrx-vcBtZ4sSrIOurp9wz3gLcrF-4daoxDxfE4It0,24865 +numpy/random/_mt19937.cp311-win_amd64.lib,sha256=PXe2WJwOoXFvpCKaUgw7M8lgjhdDRSdMg1y1xYVkU1I,2032 +numpy/random/_mt19937.cp311-win_amd64.pyd,sha256=OdwmyUleqmTdR5EfjBQ1At1CvLuRLveV1m5XIeKNfLo,86016 +numpy/random/_mt19937.pyi,sha256=qL913uLEvulCbydu94TsioiIWFnkCRmCqvDu_JHmkJs,800 +numpy/random/_pcg64.cp311-win_amd64.lib,sha256=3LZdkBlbxTx1eCT6lXvfkOKbOlz6iWp01W8YiA4R9qI,1996 +numpy/random/_pcg64.cp311-win_amd64.pyd,sha256=KhLyB6skIiNh4Nldaem8897V2wk8eTeNiEp6j7DzJeI,99840 +numpy/random/_pcg64.pyi,sha256=grAVLs9HjNKi-4RFjMqp_46ipAJ2mbhimFsUtikwANI,1186 +numpy/random/_philox.cp311-win_amd64.lib,sha256=XWv6Nly_BtKEuuaDhVFXTBnog2QR-eL9afsX3ZS1dNY,2012 +numpy/random/_philox.cp311-win_amd64.pyd,sha256=xF8hKCeT574cK2MrEV2DS8z8McG6jRrEVpOYADNmz7o,80896 +numpy/random/_philox.pyi,sha256=h_tI9myU0GPYynMIUXh7xj_fqLxtKdDq6X0TxCnH-ZI,1044 +numpy/random/_pickle.py,sha256=8fmUcgzHhq_F_eyesNUdFjV07Br1yzLBLsfe-GWyQrE,2830 +numpy/random/_pickle.pyi,sha256=hj1oBasr_ejSeUlT3-q7luwC4DQFqgCPXIL0wxuFjt4,1651 +numpy/random/_sfc64.cp311-win_amd64.lib,sha256=FlnjmU-HqPN_z4zoYpuQ9Ek77AVUc_u6-_Vi_Pkpx5s,1996 +numpy/random/_sfc64.cp311-win_amd64.pyd,sha256=7K_Fm-CDp3pJAuqtXoUK7aIdEH6hvtHFzuJLXcbDui8,60928 +numpy/random/_sfc64.pyi,sha256=kvQdsz_a2EUH5Tl8v1WjJacDJb7Jk_MWw7-dp7q3kXo,710 +numpy/random/bit_generator.cp311-win_amd64.lib,sha256=v35JQ_90L6tcnvefCEU_NcPqr3q1m_I-iEYowkyPb84,2120 +numpy/random/bit_generator.cp311-win_amd64.pyd,sha256=LssXGPGSgftbOFJYcZ8sYchFCBqfKk8gWsfTaHXJlm4,175616 +numpy/random/bit_generator.pxd,sha256=LJpeB-EKeVV8_JO69sS33XJLZQ3DAhrUCNzs_ei7AoI,1042 +numpy/random/bit_generator.pyi,sha256=k1MV8-6mf6O7SOlwXYkC5KETtduEZgdzsZkQOB7Yg6k,3728 +numpy/random/c_distributions.pxd,sha256=02WeqbzQ4heQ1cZ7ShePejxmt5AOI5kTstBZ5w2WxD0,6454 +numpy/random/lib/npyrandom.lib,sha256=u2sf5FiVAEi2McsJsC_-VMwTC4fugIbclAdVL9VkL48,149752 +numpy/random/mtrand.cp311-win_amd64.lib,sha256=c8ylC_Lf1E3oEqJRZYvGEIDeBB4nmAZKbmR1CoCh4cA,17122 +numpy/random/mtrand.cp311-win_amd64.pyd,sha256=K-CaWkyTMrx26q7-ZPHfkMqJDlssO9Fv7I_8Z7BSVsk,631808 +numpy/random/mtrand.pyi,sha256=qMZhn2QPpftnyYxSeqN_umFbDtcVwh2tMNxwlfUNm-I,23390 +numpy/random/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +numpy/random/tests/__pycache__/__init__.cpython-311.pyc,, +numpy/random/tests/__pycache__/test_direct.cpython-311.pyc,, +numpy/random/tests/__pycache__/test_extending.cpython-311.pyc,, +numpy/random/tests/__pycache__/test_generator_mt19937.cpython-311.pyc,, +numpy/random/tests/__pycache__/test_generator_mt19937_regressions.cpython-311.pyc,, +numpy/random/tests/__pycache__/test_random.cpython-311.pyc,, +numpy/random/tests/__pycache__/test_randomstate.cpython-311.pyc,, +numpy/random/tests/__pycache__/test_randomstate_regression.cpython-311.pyc,, +numpy/random/tests/__pycache__/test_regression.cpython-311.pyc,, +numpy/random/tests/__pycache__/test_seed_sequence.cpython-311.pyc,, +numpy/random/tests/__pycache__/test_smoke.cpython-311.pyc,, +numpy/random/tests/data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +numpy/random/tests/data/__pycache__/__init__.cpython-311.pyc,, +numpy/random/tests/data/generator_pcg64_np121.pkl.gz,sha256=EfQ-X70KkHgBAFX2pIPcCUl4MNP1ZNROaXOU75vdiqM,203 +numpy/random/tests/data/generator_pcg64_np126.pkl.gz,sha256=fN8deNVxX-HELA1eIZ32kdtYvc4hwKya6wv00GJeH0Y,208 +numpy/random/tests/data/mt19937-testset-1.csv,sha256=bA5uuOXgLpkAwJjfV8oUePg3-eyaH4-gKe8AMcl2Xn0,16845 +numpy/random/tests/data/mt19937-testset-2.csv,sha256=SnOL1nyRbblYlC254PBUSc37NguV5xN-0W_B32IxDGE,16826 +numpy/random/tests/data/pcg64-testset-1.csv,sha256=wHoS7fIR3hMEdta7MtJ8EpIWX-Bw1yfSaVxiC15vxVs,24840 +numpy/random/tests/data/pcg64-testset-2.csv,sha256=6vlnVuW_4i6LEsVn6b40HjcBWWjoX5lboSCBDpDrzFs,24846 +numpy/random/tests/data/pcg64dxsm-testset-1.csv,sha256=Fhha5-jrCmRk__rsvx6CbDFZ7EPc8BOPDTh-myZLkhM,24834 +numpy/random/tests/data/pcg64dxsm-testset-2.csv,sha256=mNYzkCh0NMt1VvTrN08BbkpAbfkFxztNcsofgeW_0ns,24840 +numpy/random/tests/data/philox-testset-1.csv,sha256=QvpTynWHQjqTz3P2MPvtMLdg2VnM6TGTpXgp-_LeJ5g,24853 +numpy/random/tests/data/philox-testset-2.csv,sha256=-BNO1OCYtDIjnN5Q-AsQezBCGmVJUIs3qAMyj8SNtsA,24839 +numpy/random/tests/data/sfc64-testset-1.csv,sha256=sgkemW0lbKJ2wh1sBj6CfmXwFYTqfAk152P0r8emO38,24841 +numpy/random/tests/data/sfc64-testset-2.csv,sha256=mkp21SG8eCqsfNyQZdmiV41-xKcsV8eutT7rVnVEG50,24834 +numpy/random/tests/data/sfc64_np126.pkl.gz,sha256=MVa1ylFy7DUPgUBK-oIeKSdVl4UYEiN3AZ7G3sdzzaw,290 +numpy/random/tests/test_direct.py,sha256=CgrDVzkR5Lcoi074uGyPKGFLYTIZb0WyH2maZFXmiAI,20511 +numpy/random/tests/test_extending.py,sha256=8Q5gcLChpe1RO5wVRSbBbMnzQ7Z93nNrqHZ0Y9_wnV4,4659 +numpy/random/tests/test_generator_mt19937.py,sha256=2uLqnc0ubpQmoWINY0UE-ixFCwbxgsE2u7jUFDLvxbA,120809 +numpy/random/tests/test_generator_mt19937_regressions.py,sha256=UiPzhq1MGFp8EflTCSMErrqp70tzy8SETGx3cLNCC-I,8314 +numpy/random/tests/test_random.py,sha256=yJQ8UBPQhTj0fawv_yO_CASrhsDEXt1umxZZyVp-4XI,72055 +numpy/random/tests/test_randomstate.py,sha256=4FxsJI2EkXYdZIoQWGZNbzHEBw-5Y3FEP7w0eYUMV-c,87879 +numpy/random/tests/test_randomstate_regression.py,sha256=YRHZRSDlaJ2GJWwB8busbD63jElcSg-7jQi3ON3EIxM,8227 +numpy/random/tests/test_regression.py,sha256=uNv4WtIhzyTHm88FoVdi6pLUyAJC9OsD1FYF6KwSuCI,5623 +numpy/random/tests/test_seed_sequence.py,sha256=J_peqBY4MhduYR1fFYAfcN2wvyC7P6xmV4xbu6j9nbQ,3389 +numpy/random/tests/test_smoke.py,sha256=oRHbPUDkj1l9V6TVP0SNtLktBxdJR3dK2Ek_KpZc9yk,28960 +numpy/rec/__init__.py,sha256=cgaZYq6w4qNo81NZGO-E4vkSj9eSO4SgNMOqiLglp4k,85 +numpy/rec/__init__.pyi,sha256=gGrssJCiTrltTcwaCjXB8saZBWiWCHOr2mJmUsFdU50,370 +numpy/rec/__pycache__/__init__.cpython-311.pyc,, +numpy/strings/__init__.py,sha256=JzKUIYVjG4wRzsKVAVg9XWrq2vjjdi679CZc_Txfn4w,85 +numpy/strings/__init__.pyi,sha256=LvbeB_oUcN7O0GUJx3gzfYs-KPPVhHm6EhJIG3hJAHQ,1416 +numpy/strings/__pycache__/__init__.cpython-311.pyc,, +numpy/testing/__init__.py,sha256=0Qkz0ITfPKHDe9kObKTEx3fdDGAb9tfMikpdPuiapyA,603 +numpy/testing/__init__.pyi,sha256=hzSq3lVZ2gZbxMrQXNP3PaetjgJyKnfg50mkjTB8jXg,2147 +numpy/testing/__pycache__/__init__.cpython-311.pyc,, +numpy/testing/__pycache__/overrides.cpython-311.pyc,, +numpy/testing/__pycache__/print_coercion_tables.cpython-311.pyc,, +numpy/testing/_private/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +numpy/testing/_private/__init__.pyi,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +numpy/testing/_private/__pycache__/__init__.cpython-311.pyc,, +numpy/testing/_private/__pycache__/extbuild.cpython-311.pyc,, +numpy/testing/_private/__pycache__/utils.cpython-311.pyc,, +numpy/testing/_private/extbuild.py,sha256=ausYJDf2eOq9jYC3x_tFO_vBrMhjqjruVqHxgHjla8w,7966 +numpy/testing/_private/extbuild.pyi,sha256=f2h7VxBrN2uwqJIwB8pmv3c1G-sH7d3V4HCIL3GHYTA,678 +numpy/testing/_private/utils.py,sha256=JB9oLWXU0rLhUJaVVRbGnRHJOBQyMYZ8imZOvWje_HI,98466 +numpy/testing/_private/utils.pyi,sha256=htTBiuadzI4vSxqTs5zAvPkTnwXVevDnhjxJ01Zd55w,13459 +numpy/testing/overrides.py,sha256=rldmRQXc5c9jEs4hghDXvHA4sJD7HuMcpfGMmzSML9I,2218 +numpy/testing/overrides.pyi,sha256=LMYa6hii8jPmR_eC-LHNrz3irrImvZcW29NxCkfgzNk,408 +numpy/testing/print_coercion_tables.py,sha256=lT8IdI1_lantwFVG0C0JagO0mUxnnXCA5wnPI81czYQ,6493 +numpy/testing/print_coercion_tables.pyi,sha256=z88CLUr9I9HOQ0LOpgDjK-hXPuVKnQNMi26Oz99TNBk,848 +numpy/testing/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +numpy/testing/tests/__pycache__/__init__.cpython-311.pyc,, +numpy/testing/tests/__pycache__/test_utils.cpython-311.pyc,, +numpy/testing/tests/test_utils.py,sha256=d49srmN7Jxu4jmCK9e48R0ZfIxNEg38Op4H7To2GJQg,71492 +numpy/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +numpy/tests/__pycache__/__init__.cpython-311.pyc,, +numpy/tests/__pycache__/test__all__.cpython-311.pyc,, +numpy/tests/__pycache__/test_configtool.cpython-311.pyc,, +numpy/tests/__pycache__/test_ctypeslib.cpython-311.pyc,, +numpy/tests/__pycache__/test_lazyloading.cpython-311.pyc,, +numpy/tests/__pycache__/test_matlib.cpython-311.pyc,, +numpy/tests/__pycache__/test_numpy_config.cpython-311.pyc,, +numpy/tests/__pycache__/test_numpy_version.cpython-311.pyc,, +numpy/tests/__pycache__/test_public_api.cpython-311.pyc,, +numpy/tests/__pycache__/test_reloading.cpython-311.pyc,, +numpy/tests/__pycache__/test_scripts.cpython-311.pyc,, +numpy/tests/__pycache__/test_warnings.cpython-311.pyc,, +numpy/tests/test__all__.py,sha256=xZkp3RbMNpx4bFTvILKV8KTEMh5lvId7xcrhQS4LTe0,232 +numpy/tests/test_configtool.py,sha256=payEy0YLE07-xfa5x_HuI5xCEVCMs-5BHD5B7teAu94,1797 +numpy/tests/test_ctypeslib.py,sha256=Tiil9BYqkbUQ2-UuMSD1DscdRlAF4ObaKfXklitozvk,12752 +numpy/tests/test_lazyloading.py,sha256=1_nY3uWUmVjTFWPh6qPifLEuctERoJ7UuuJJmsOZRj8,1198 +numpy/tests/test_matlib.py,sha256=KmBMo3M7IARB8K5NLYk611RtsfW10_LgCQEBjdLEM9g,1913 +numpy/tests/test_numpy_config.py,sha256=wbgbqmiKjSW4ZiPGlGs634J8x8wcC5Fjp-YLEVyQp6I,1281 +numpy/tests/test_numpy_version.py,sha256=EhDAFEamNCmRAiJEUSGtPa21IipODWrf6MN2Bem0az8,1798 +numpy/tests/test_public_api.py,sha256=It0dkHfJTwE-vClq6zJXfbIcC9ccxJVbgfrXPyu6mdU,28657 +numpy/tests/test_reloading.py,sha256=8F8bSKvw6sAWp4Acaxl_16FkE1_IYGySdotdjmb-_j0,2441 +numpy/tests/test_scripts.py,sha256=yy6LRo-45AZ9y5GnTf7oNTgghXr9jV2a_zkc8hpW0wU,1714 +numpy/tests/test_warnings.py,sha256=qRTUhQtsxR6U9eqwozRmxL3ZPtWzh7ZzdCBvW8sXA7k,2406 +numpy/typing/__init__.py,sha256=Kf63cjIRpICOlKiC178BM7yUXnDP33c_b8tdzncxe-g,6249 +numpy/typing/__pycache__/__init__.cpython-311.pyc,, +numpy/typing/__pycache__/mypy_plugin.cpython-311.pyc,, +numpy/typing/mypy_plugin.py,sha256=EofOXhajhpwKDLxRRbboAN3u2cnIARkQvGXWnzw6Gm8,6736 +numpy/typing/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +numpy/typing/tests/__pycache__/__init__.cpython-311.pyc,, +numpy/typing/tests/__pycache__/test_isfile.cpython-311.pyc,, +numpy/typing/tests/__pycache__/test_runtime.cpython-311.pyc,, +numpy/typing/tests/__pycache__/test_typing.cpython-311.pyc,, +numpy/typing/tests/data/fail/arithmetic.pyi,sha256=wLir_gaHdoSIMzU3mKPMFM90TSimi_tpLyVs1Oqv9Wo,3816 +numpy/typing/tests/data/fail/array_constructors.pyi,sha256=bNPDfCMnoFPuMi4bGDEf4kQ5wqbrAB7PkfDqFCfpIBc,1234 +numpy/typing/tests/data/fail/array_like.pyi,sha256=9EcZ306eJOZrHSdWlTe0cEpYvmODaQ_nItcbhWaxFy8,511 +numpy/typing/tests/data/fail/array_pad.pyi,sha256=ExxQs_3s8xvgEsvj6O4aGWTIc0ukXtAtUM9JUs5D6pQ,143 +numpy/typing/tests/data/fail/arrayprint.pyi,sha256=LXaf_eDZOAHoBUtegnMDiHxaehcN0xLQh_AcvVBlfho,632 +numpy/typing/tests/data/fail/arrayterator.pyi,sha256=L2AC5qFmBrw9klehdV7d7gHvKpPX-7H1Iz9wryDQVQA,477 +numpy/typing/tests/data/fail/bitwise_ops.pyi,sha256=7Y6E1moUlz8fffR8lfuZG1yutabdmqqtlz3RVJ9Tsis,401 +numpy/typing/tests/data/fail/char.pyi,sha256=IXHqCM6aqVyfX74jg5lTei1NciRFQSeWNYcholumPzA,2865 +numpy/typing/tests/data/fail/chararray.pyi,sha256=bHPeaIeMG7QMAPvZx7oh0wNe0ZohjjKE0UuAMzAEFho,2418 +numpy/typing/tests/data/fail/comparisons.pyi,sha256=YHRMGwDA3uh5DJdLtG0aJ8Eo5Rs3DofVZNMI2KxNWTg,777 +numpy/typing/tests/data/fail/constants.pyi,sha256=MnjvGyU_QKKiSZ-BzsHdojlRKz7GGvqQmu0mxbewcao,81 +numpy/typing/tests/data/fail/datasource.pyi,sha256=PUUqHW6izqDMQnWoQ5oDYW8oeyijpqTM85G3S5qpElM,434 +numpy/typing/tests/data/fail/dtype.pyi,sha256=TeNsugh9LvvX-u08MkROtFM_B080JZheXexyw9Wsq6E,322 +numpy/typing/tests/data/fail/einsumfunc.pyi,sha256=DeLM2jL7ZBirjw9H2dfjXxbHwx2Y9gu3wp2NwDLYuIQ,470 +numpy/typing/tests/data/fail/flatiter.pyi,sha256=vyjvoG2le_3IePcYE1qBbnzJLoaGB7BQuF3Nu8PueME,735 +numpy/typing/tests/data/fail/fromnumeric.pyi,sha256=b8GZaCTjij23mNabdvETIEriMLtDUZb3k1oD7S_Nz-Y,5833 +numpy/typing/tests/data/fail/histograms.pyi,sha256=vkSk1v1Na4VUnRlwM8sqhxqPjhg2HH_9YtXnYNEHgPM,388 +numpy/typing/tests/data/fail/index_tricks.pyi,sha256=2VDHr1Of7fqh2uu0wf-epw7VZD2Fy0-W9ZPe1Fa87-8,531 +numpy/typing/tests/data/fail/lib_function_base.pyi,sha256=HuJ3WQheNnE7iikA179-usGH8zT8YglirsxSKVoIqGc,2879 +numpy/typing/tests/data/fail/lib_polynomial.pyi,sha256=xjpuJ7DVIRxQok6f0-CGsSVg6QQuzZmyiURslKF3ctw,966 +numpy/typing/tests/data/fail/lib_utils.pyi,sha256=iBUetgF7F39F-yV2DBhIqvKywzK8kZoAL9N-kpR3pyk,101 +numpy/typing/tests/data/fail/lib_version.pyi,sha256=EfAZTQpzTJ1UCY3p9envuaJUCqforENP_QP_DVWU7Do,160 +numpy/typing/tests/data/fail/linalg.pyi,sha256=EDPHdTxXUPmerfi4BfT0dh6u-wbFqfEHFiHOuYFZIfs,1429 +numpy/typing/tests/data/fail/ma.pyi,sha256=sfN1avmqVQl498LZdBc6Qb6fNA1IrobmgSZQJLKcHFA,6507 +numpy/typing/tests/data/fail/memmap.pyi,sha256=U8_bCFw8m8x7ZlWSpYmmKpC1BS8oCEwUEdUgCRf2FSg,174 +numpy/typing/tests/data/fail/modules.pyi,sha256=f14qw9HXlwJ7FARKYxNhaPou8OZ8mQXsU4P9cpFxbWI,620 +numpy/typing/tests/data/fail/multiarray.pyi,sha256=xgnZSrX-2xi0UtRKljKmPfiIQ2w1fbYj5gicey04l80,1708 +numpy/typing/tests/data/fail/ndarray.pyi,sha256=8wZpNNatpxbxNu8G2N_R0P-3UVZLVE_z6ZGmdndSWPM,392 +numpy/typing/tests/data/fail/ndarray_misc.pyi,sha256=8EqdfwcoQMF980xhwdE6Lwr5n8rCGILUL8rkcTyi_5M,1097 +numpy/typing/tests/data/fail/nditer.pyi,sha256=ZzT6O4P7IkrQA8MWDNYzO_r88NQ9RCJ1rHHdyaLR8zE,327 +numpy/typing/tests/data/fail/nested_sequence.pyi,sha256=dmmC3YFiUAI2McpPRb4MmGGpdNOjCAbF4xntnt-qyds,479 +numpy/typing/tests/data/fail/npyio.pyi,sha256=IvqhHyWTQdx7UTiCovji1oTer63nTMT5k8rMjoR3aR4,670 +numpy/typing/tests/data/fail/numerictypes.pyi,sha256=igYnLB91EuhrNDihL9IxwlM_xhwphCgMjWimzDaSNrk,129 +numpy/typing/tests/data/fail/random.pyi,sha256=ng4fxmdk1RFQdn3PNF7qSO2c2hVxQ07lwYwQGrSPsKQ,2965 +numpy/typing/tests/data/fail/rec.pyi,sha256=HkJQLYK6u8thA6alMB4pUeMBPXr6mgnqqTYmXSiM2PM,758 +numpy/typing/tests/data/fail/scalars.pyi,sha256=dNWPUcH0lj1q-_KqdQ1H0IwDWNoxhmvNzg7v4jVarqA,2996 +numpy/typing/tests/data/fail/shape.pyi,sha256=8oJrtWxbzpu4sXygzEMzWHlwa13SZHikfXH7T-feQkM,137 +numpy/typing/tests/data/fail/shape_base.pyi,sha256=jfOTNjSqDVIGlAmwbORYfifftjvW-W4ngMRP883oSrU,165 +numpy/typing/tests/data/fail/stride_tricks.pyi,sha256=kjsv-sHn8i-oxtLUcpeIrOzS00Hk6Af8clqnY-vwg6A,339 +numpy/typing/tests/data/fail/strings.pyi,sha256=T7nJ-2UqEa2ld_bZW4king8PnAG9w9LompbD9rtIb7Y,2385 +numpy/typing/tests/data/fail/testing.pyi,sha256=zBTsTLi6xASHSeRK4f9ub1810m33xrb2qFyGvH93iqo,1427 +numpy/typing/tests/data/fail/twodim_base.pyi,sha256=L4Qi32BjiexVALZnjR5AY3uB6QJP_k_VRdLetIW_x6E,968 +numpy/typing/tests/data/fail/type_check.pyi,sha256=_p6l-0V0LSN24C6V0hv2JtXNzTG1Lyroe-5KBa5IvG0,410 +numpy/typing/tests/data/fail/ufunc_config.pyi,sha256=G17kqlgWREHukftCiDnCBRDjum5H1f8UIIifakzNBZc,610 +numpy/typing/tests/data/fail/ufunclike.pyi,sha256=7dpF86m9EeY_69dl_zX0joQvFIpKPXGQRRUJOipWTOw,670 +numpy/typing/tests/data/fail/ufuncs.pyi,sha256=7fKHGG69SFRRkqO5I-QqV-pVkQ3LTCPWgwgzOHGmhwI,522 +numpy/typing/tests/data/fail/warnings_and_errors.pyi,sha256=kKR53mZ3zy1-JmyGgmWjBmJw04ipqnTzqu9B4nU5OlQ,205 +numpy/typing/tests/data/misc/extended_precision.pyi,sha256=-64Tr47-NYe7JX33otKGsloq7msS7hiVg9ehAb_g8yo,331 +numpy/typing/tests/data/mypy.ini,sha256=NwLOGZQO6x7GdH-YVXJdQjv07w-HC175VGkM978k580,254 +numpy/typing/tests/data/pass/__pycache__/arithmetic.cpython-311.pyc,, +numpy/typing/tests/data/pass/__pycache__/array_constructors.cpython-311.pyc,, +numpy/typing/tests/data/pass/__pycache__/array_like.cpython-311.pyc,, +numpy/typing/tests/data/pass/__pycache__/arrayprint.cpython-311.pyc,, +numpy/typing/tests/data/pass/__pycache__/arrayterator.cpython-311.pyc,, +numpy/typing/tests/data/pass/__pycache__/bitwise_ops.cpython-311.pyc,, +numpy/typing/tests/data/pass/__pycache__/comparisons.cpython-311.pyc,, +numpy/typing/tests/data/pass/__pycache__/dtype.cpython-311.pyc,, +numpy/typing/tests/data/pass/__pycache__/einsumfunc.cpython-311.pyc,, +numpy/typing/tests/data/pass/__pycache__/flatiter.cpython-311.pyc,, +numpy/typing/tests/data/pass/__pycache__/fromnumeric.cpython-311.pyc,, +numpy/typing/tests/data/pass/__pycache__/index_tricks.cpython-311.pyc,, +numpy/typing/tests/data/pass/__pycache__/lib_user_array.cpython-311.pyc,, +numpy/typing/tests/data/pass/__pycache__/lib_utils.cpython-311.pyc,, +numpy/typing/tests/data/pass/__pycache__/lib_version.cpython-311.pyc,, +numpy/typing/tests/data/pass/__pycache__/literal.cpython-311.pyc,, +numpy/typing/tests/data/pass/__pycache__/ma.cpython-311.pyc,, +numpy/typing/tests/data/pass/__pycache__/mod.cpython-311.pyc,, +numpy/typing/tests/data/pass/__pycache__/modules.cpython-311.pyc,, +numpy/typing/tests/data/pass/__pycache__/multiarray.cpython-311.pyc,, +numpy/typing/tests/data/pass/__pycache__/ndarray_conversion.cpython-311.pyc,, +numpy/typing/tests/data/pass/__pycache__/ndarray_misc.cpython-311.pyc,, +numpy/typing/tests/data/pass/__pycache__/ndarray_shape_manipulation.cpython-311.pyc,, +numpy/typing/tests/data/pass/__pycache__/nditer.cpython-311.pyc,, +numpy/typing/tests/data/pass/__pycache__/numeric.cpython-311.pyc,, +numpy/typing/tests/data/pass/__pycache__/numerictypes.cpython-311.pyc,, +numpy/typing/tests/data/pass/__pycache__/random.cpython-311.pyc,, +numpy/typing/tests/data/pass/__pycache__/recfunctions.cpython-311.pyc,, +numpy/typing/tests/data/pass/__pycache__/scalars.cpython-311.pyc,, +numpy/typing/tests/data/pass/__pycache__/shape.cpython-311.pyc,, +numpy/typing/tests/data/pass/__pycache__/simple.cpython-311.pyc,, +numpy/typing/tests/data/pass/__pycache__/simple_py3.cpython-311.pyc,, +numpy/typing/tests/data/pass/__pycache__/ufunc_config.cpython-311.pyc,, +numpy/typing/tests/data/pass/__pycache__/ufunclike.cpython-311.pyc,, +numpy/typing/tests/data/pass/__pycache__/ufuncs.cpython-311.pyc,, +numpy/typing/tests/data/pass/__pycache__/warnings_and_errors.cpython-311.pyc,, +numpy/typing/tests/data/pass/arithmetic.py,sha256=FW2UwWYNcMkSMztc66czAtR1dN95Tey0W4N-M4dIsm4,8374 +numpy/typing/tests/data/pass/array_constructors.py,sha256=MGzgCt7uTeC_b7wU2aPlvTuDzXfgOujx_lR0Vqfpny8,2584 +numpy/typing/tests/data/pass/array_like.py,sha256=0Cg3SZ_RjDsGCGiuIhyDeow3_kOOW5EHjPjLs1VvnBs,1075 +numpy/typing/tests/data/pass/arrayprint.py,sha256=NTw1gJ9v3TDVwRov4zsg_27rI-ndKuG4mDidBWEKVyc,803 +numpy/typing/tests/data/pass/arrayterator.py,sha256=z4o0H08T7tbzzMWhu5ZXdVqbivjBicuFgRHBk_lpOck,420 +numpy/typing/tests/data/pass/bitwise_ops.py,sha256=8lfjgayfTDDcWi1O-rnxLu4FZqvskvGHvFXJpMQWQgc,1095 +numpy/typing/tests/data/pass/comparisons.py,sha256=-NSAhFNN3kWqu2CZqt2pq3kflTx6nDCWxkO3JIYl5NI,3613 +numpy/typing/tests/data/pass/dtype.py,sha256=YRsTwKEQ5iJtdKCEQIybU_nL8z8Wq9hU-BZmEO7HjQE,1127 +numpy/typing/tests/data/pass/einsumfunc.py,sha256=CXdLvQsU2iDqQc7d2TRRCSwguQzJ0SJDFn23SDeOOuY,1406 +numpy/typing/tests/data/pass/flatiter.py,sha256=_JYyZbW-Qs-YoOUzCRe1wFKErPNNJoNYBrdQXbNP3N8,222 +numpy/typing/tests/data/pass/fromnumeric.py,sha256=bP0hEQYYQJOn7-ce0rAf8cvuxZX3Ja6GSSlCtNhEBUM,4263 +numpy/typing/tests/data/pass/index_tricks.py,sha256=RyuEtqyZVlK9j403DVjMZFd80mvt-VAMi1uGvXurc0c,1462 +numpy/typing/tests/data/pass/lib_user_array.py,sha256=K69fg9dI5BaglzpiJh13swGHuyx3LBW_zmzBBOB1aWw,612 +numpy/typing/tests/data/pass/lib_utils.py,sha256=XEc0v7bwES-C5D4GkSJQSSTSAl5ng7tq6tCWj3jxbCM,336 +numpy/typing/tests/data/pass/lib_version.py,sha256=TlLZK8sekCMm__WWo22FZfZc40zpczENf6y_TNjBpCw,317 +numpy/typing/tests/data/pass/literal.py,sha256=U0Ja399uHwALtjW0RcSvt7r1ACJJSsMHM4h_-6Gkvyw,1559 +numpy/typing/tests/data/pass/ma.py,sha256=ZxUSC614aOd76UM64Gkffrc-TPZAukjuo0b5NCxyz-4,3536 +numpy/typing/tests/data/pass/mod.py,sha256=L1qLwjdrRo9Tx7mxWpf_ugdKdUprDYhPRbCvQd5QjXY,1725 +numpy/typing/tests/data/pass/modules.py,sha256=buzLurat4TIGmJuW3mGsGk7dKNmpBDfQOWWQXFfb9Uc,670 +numpy/typing/tests/data/pass/multiarray.py,sha256=i6VU-VN96Q16mRGzVoY3oTE2W1z16GOGTOVFxWGRacM,1407 +numpy/typing/tests/data/pass/ndarray_conversion.py,sha256=6TnvucV8Vtte7dGWihx7YmrHlNOanqmLJIH1W8Wok0E,1612 +numpy/typing/tests/data/pass/ndarray_misc.py,sha256=UClzDh7wOt-ir3DqW7V_R8E455CXv0_KxLxrjVu1OiA,3897 +numpy/typing/tests/data/pass/ndarray_shape_manipulation.py,sha256=yaBK3hW5fe2VpvARkn_NMeF-JX-OajI8JiRWOA_Uk7Y,687 +numpy/typing/tests/data/pass/nditer.py,sha256=1wpRitCNZKCC3WJVrFSh22Z1D8jP2VxQAMtzH8NcpV8,67 +numpy/typing/tests/data/pass/numeric.py,sha256=qOUXDYNR9gwmu0WWAEAjBhregmntipG43vX6a3abys8,1717 +numpy/typing/tests/data/pass/numerictypes.py,sha256=JaCjk4zQPOI67XzqGyi3dI-GUMFM2AvDuniwzSQ7_Rk,348 +numpy/typing/tests/data/pass/random.py,sha256=wYwClLry-mN-QvaYg6AFGhwDuvoKQv-bl94fq10sL3k,63321 +numpy/typing/tests/data/pass/recfunctions.py,sha256=gxsaR6DLKQdHyxWrrt_8RFvR7CPIDoLDIJoFYKnOxfo,5164 +numpy/typing/tests/data/pass/scalars.py,sha256=fsbpvW8PUGXFEn_QMQx-locj-KRuEHfTD47y4UhZ0Gs,3972 +numpy/typing/tests/data/pass/shape.py,sha256=KjQMcyjXO5BXJGWdRqdgYYWQR9gneGTxQtg-jOsXJkk,464 +numpy/typing/tests/data/pass/simple.py,sha256=aXvt9iCOV1lhQR11xVWgQIXXyXRHKOBfCtTjthZFtM0,2919 +numpy/typing/tests/data/pass/simple_py3.py,sha256=OBpoDmf5u4bRblugokiOZzufESsEmoU03MqipERrjLg,102 +numpy/typing/tests/data/pass/ufunc_config.py,sha256=gmMTPrq8gLXJZSBQoOpJcgzIzWgMx-k_etKPV4KSTJk,1269 +numpy/typing/tests/data/pass/ufunclike.py,sha256=jxTR61d0bmFg7JHZmw992ccRua00u4XWJYtcQRJwFS0,1172 +numpy/typing/tests/data/pass/ufuncs.py,sha256=gvdcCNoGUfN0CnQmn6k1j6ghdt8zGkJdcRcgctmU48A,438 +numpy/typing/tests/data/pass/warnings_and_errors.py,sha256=q3c1SmMwhyYLYQsLjK02AXphk3-96YltSTdTfrElJzQ,167 +numpy/typing/tests/data/reveal/arithmetic.pyi,sha256=qxvklKoGL__awMHHV3wbbfQwmR2nZY0woOw4C1eZ-JY,27520 +numpy/typing/tests/data/reveal/array_api_info.pyi,sha256=TOvbhGUiNYcKv9KQs0A4-vzM_l9vYWvDXoqBOOLo1d4,3087 +numpy/typing/tests/data/reveal/array_constructors.pyi,sha256=GYlmrLvSFJPd8lWRcaESFJrk1LwQLgOFmAF3MwDc9EA,13103 +numpy/typing/tests/data/reveal/arraypad.pyi,sha256=iE4OyZFrFjIXr46CzYaFzIkw-FR5RBV6v0OkCgFW2Ug,675 +numpy/typing/tests/data/reveal/arrayprint.pyi,sha256=G5x1q4i4JqK8LjuvFkt2lC5mETW0arqs6lADgND37xk,802 +numpy/typing/tests/data/reveal/arraysetops.pyi,sha256=-Fhtnyc-uzDT5zUlh7xSLmdkK05Y14MqpgdG38Xliu0,4485 +numpy/typing/tests/data/reveal/arrayterator.pyi,sha256=ZPn6r0IvThiDma9RtpnpPywdQdg5iS9qacWUGLI-Mzw,1066 +numpy/typing/tests/data/reveal/bitwise_ops.pyi,sha256=EoxnMEITrAVAReTEnZFWUKRmrsmTINSNO4b92yki-qI,4827 +numpy/typing/tests/data/reveal/char.pyi,sha256=nWqR9cqXZVuMAFI3Y_xmS3YlQMHhegADtTaP2T2qx38,11694 +numpy/typing/tests/data/reveal/chararray.pyi,sha256=u-H9EUc1tci2R4rYQDOeb0sWI_gJNtIbwEO4LtpBRgA,5336 +numpy/typing/tests/data/reveal/comparisons.pyi,sha256=rT61d7Th3UwWti-6gDXW-t2WAv4tQUxLzbv1w88ultw,7459 +numpy/typing/tests/data/reveal/constants.pyi,sha256=DHycCQpNsu52JrhZ_Qds7f0F4U0rD4zWaVMOLwWR08o,347 +numpy/typing/tests/data/reveal/ctypeslib.pyi,sha256=TuMyVAki_VnT2jYiCGPNOvb9W3iWGL2sKKkbKul_5P0,4215 +numpy/typing/tests/data/reveal/datasource.pyi,sha256=07PFHAOF4kL5Wqq5pt1IKvx6VPYBZ9IK1_WXo_3II1E,606 +numpy/typing/tests/data/reveal/dtype.pyi,sha256=Meno9OgmIzKXtMcm5-wG7PrSoNj7bw3Dpx2vk2t44w8,5216 +numpy/typing/tests/data/reveal/einsumfunc.pyi,sha256=R-ve3Dda6S1ewKjlDoQ1XWx4Adj-JxFe9TFdrPeX2sA,1965 +numpy/typing/tests/data/reveal/emath.pyi,sha256=HGPBuE6CTTSHirCCQMklDGkvamoIILqpREfP9NJh49I,2179 +numpy/typing/tests/data/reveal/fft.pyi,sha256=uNGippaypaPH9ZmwaOXwPdHXDh_TW4BJlEkv9idK08Y,1638 +numpy/typing/tests/data/reveal/flatiter.pyi,sha256=Pc-55PWa65noaoUN0i65W5A_KhsMlyQy7PmmWHhiEzw,1394 +numpy/typing/tests/data/reveal/fromnumeric.pyi,sha256=AbQOzaqMl8Of2bh4i5JhPFlWGd3oQ8PfoFFkfhFyg60,15413 +numpy/typing/tests/data/reveal/getlimits.pyi,sha256=5hwJKUUfd5M3OHV3pgic_HEZ4Ng4Pz_NhUrJkLiMFZE,1598 +numpy/typing/tests/data/reveal/histograms.pyi,sha256=2l6Af9c4cru2C6xSuL0iqW78OqEo4nrWFqARC5nA0Xo,1282 +numpy/typing/tests/data/reveal/index_tricks.pyi,sha256=UoYlUdqV2jgImmKFDOkLECoLN1ZuTWs7P0VLczBi8a8,3311 +numpy/typing/tests/data/reveal/lib_function_base.pyi,sha256=aaj5lXESqp9f18l49gC36g7r8JpBUANeRAxvBTa5m0s,10325 +numpy/typing/tests/data/reveal/lib_polynomial.pyi,sha256=7bNjEg_B-Zn8nR5rYpjRRdfvmMrZ8GdPsYOky-9sQpQ,5804 +numpy/typing/tests/data/reveal/lib_utils.pyi,sha256=0mEaIvr9BkYx2Gmmj7M0vvG_o4c0TgD0uU8uJsY7Jl0,453 +numpy/typing/tests/data/reveal/lib_version.pyi,sha256=5-H7IY5M-OT0Wu7d0FhO95s5jYafpMb2s-sYPNEisaQ,592 +numpy/typing/tests/data/reveal/linalg.pyi,sha256=nx6AQWi53R0Qn8lYz48mkbVroz76bbW5gpGYynzKJgg,6037 +numpy/typing/tests/data/reveal/ma.pyi,sha256=0c6i7BZ_GVvcODcNeWaoH2ZGE0fMYK6nijzPvSst-MU,16592 +numpy/typing/tests/data/reveal/matrix.pyi,sha256=lwsf__A8a4HSIYD_K34S_6Ee5U_QOSjoT3K6N7M4YUo,3113 +numpy/typing/tests/data/reveal/memmap.pyi,sha256=KdMkvJgXmWwOAE6H0BKQjB-A3go2keJAem59FUJtmVM,738 +numpy/typing/tests/data/reveal/mod.pyi,sha256=d3jo3Fxk5ZPa75EymoCZ-t5YqIAK9twPj6jAqhjpxoo,7375 +numpy/typing/tests/data/reveal/modules.pyi,sha256=dgB-VZ5GQpABSsnAsnwfUx781fv7dia3TrDnguVippg,1909 +numpy/typing/tests/data/reveal/multiarray.pyi,sha256=4Lwll_tpCpPpRBqKHZBqQ1nnxZKoxUxnaoxkb464LeA,7973 +numpy/typing/tests/data/reveal/nbit_base_example.pyi,sha256=Wl_9To2CqowfTZ3bQjQX4XAAHlV2vQXhooTB8X6-TjI,708 +numpy/typing/tests/data/reveal/ndarray_assignability.pyi,sha256=isvO6pgO2LILbb9tZcaKBCjSZpZEwxf3yKsrE8nuuIE,2745 +numpy/typing/tests/data/reveal/ndarray_conversion.pyi,sha256=XVQD_AMblNmEfsbl0xkAIoKq5HPP7HDfWKZl31xoBuA,3394 +numpy/typing/tests/data/reveal/ndarray_misc.pyi,sha256=YgISlUmA0-Yy0tYO_qinh73aJF8lA-4UP1Q5jA7W0ME,8910 +numpy/typing/tests/data/reveal/ndarray_shape_manipulation.pyi,sha256=k9inQc3sgIThhxPkGTWrc_phJlIIxtc3jyD03y3ss4I,1433 +numpy/typing/tests/data/reveal/nditer.pyi,sha256=eHIBPj1I75kErxXsTi0CQEjcJ_WvHXIx7QzEeTmxYDk,1947 +numpy/typing/tests/data/reveal/nested_sequence.pyi,sha256=aRkKbnRxI2A-xkg8iQZWOHU7672PlyMNpUHIkONymLw,637 +numpy/typing/tests/data/reveal/npyio.pyi,sha256=tN3pkmY_sQ3PxBXuLM3QP_n4BTVpl-p9iYu88di7-KY,3576 +numpy/typing/tests/data/reveal/numeric.pyi,sha256=cmCusW1Ey3X5o_dKImmJ6UmmH5VpbjFgqKxifn_G0Mc,6003 +numpy/typing/tests/data/reveal/numerictypes.pyi,sha256=A2C0JnIxZZTrsu6jWu3fRTPm73zmyvqoAXWH3sBAl2Y,1382 +numpy/typing/tests/data/reveal/polynomial_polybase.pyi,sha256=4cKgrsTFCWtUUOg_ubwlQUNLxDq1nrVJsx1ZPKrAM-Y,8145 +numpy/typing/tests/data/reveal/polynomial_polyutils.pyi,sha256=bHSG-j7seKlhO9CWzq50lFMRYQ9xU8t_mO1iwbN9bfg,10861 +numpy/typing/tests/data/reveal/polynomial_series.pyi,sha256=X8xFy5T7U-1XTCkWqbvDO3mbaPfNHL7w0zVBlgqtiDM,6991 +numpy/typing/tests/data/reveal/random.pyi,sha256=JlNcrkvVoyI8uezvQ9BBCTtFoVQPRgZ5zPXKiDdCFwo,105842 +numpy/typing/tests/data/reveal/rec.pyi,sha256=2Pr6-v4uSA_t13cYdLr2sKQSb1Ko9YuZQS-_UUAZwFo,3549 +numpy/typing/tests/data/reveal/scalars.pyi,sha256=SkFaYVzb4mE3XwO9jyBJPKghThNG9QDeuQ0T30WmFhs,6569 +numpy/typing/tests/data/reveal/shape.pyi,sha256=9IilbiRez0Lbu7Zv_HvqdEwQhjRLzcbnKm-4wnG6d9c,275 +numpy/typing/tests/data/reveal/shape_base.pyi,sha256=1_G5HGC45IFPnetUyXXnyIhJYjNu0Mf7AEEtSz3QrmI,2058 +numpy/typing/tests/data/reveal/stride_tricks.pyi,sha256=PqrKANjOAnn_CQ2CjERvonBbM89PjhZpgnekiQpT04k,1342 +numpy/typing/tests/data/reveal/strings.pyi,sha256=D2r-lCrWhVM3HQ8X2cjLT2cwujxYLOb1ASrnHs2qPD8,9743 +numpy/typing/tests/data/reveal/testing.pyi,sha256=Fq5bXxS7veDk7MtlBPXq4mqCYOo59iG9jkahpYclc88,8641 +numpy/typing/tests/data/reveal/twodim_base.pyi,sha256=4OGoYVclmH23D9gykK2iUiVBk8KHH6tsVlVZ8-i2xCg,4382 +numpy/typing/tests/data/reveal/type_check.pyi,sha256=3on6Yhb-vylW0Etlpl_VP6bevzBipPn8J8W6EVE66eU,2459 +numpy/typing/tests/data/reveal/ufunc_config.pyi,sha256=81tK1vAXCeLENv81jQcubfgr_DUIDlzlwepVkEPIuWg,1192 +numpy/typing/tests/data/reveal/ufunclike.pyi,sha256=sVSBqzrvFwjyOL2Jt08ZRyhJorAiLe9mzxEf5b8tIAE,1214 +numpy/typing/tests/data/reveal/ufuncs.pyi,sha256=8hXQYiuZVsv5-5YU9NAXFSLbWKij8nG7ic8f2SfWn7o,4912 +numpy/typing/tests/data/reveal/warnings_and_errors.pyi,sha256=kdpx5u0-zsWOPcsnciaqsACr7OKUuFWmMeMCizZDun8,460 +numpy/typing/tests/test_isfile.py,sha256=mjzMMwseQ7AgjGpj9QSPpVnFfIjKhn_ExwEnsYrdQy8,910 +numpy/typing/tests/test_runtime.py,sha256=NzisDEYOVKe6NASr9F2oxdxKMg4sVXbQBloYUvgDjkY,3021 +numpy/typing/tests/test_typing.py,sha256=j6wK6nH2Jx9V8ijLJrr8QdJjDv3NbJKCrEUNF0j7AxE,6494 +numpy/version.py,sha256=SPAzsP-TciDjmi1JstG0_7H3oPaSlt1f-rPA65F-iok,304 +numpy/version.pyi,sha256=evzpqH8S5BWrxwgxVoRGkeW6yV6etN9CAp1rnfRVq-s,376 diff --git a/dist/HandoverSystem/_internal/numpy-2.3.4.dist-info/WHEEL b/dist/HandoverSystem/_internal/numpy-2.3.4.dist-info/WHEEL new file mode 100644 index 0000000..7f839d4 --- /dev/null +++ b/dist/HandoverSystem/_internal/numpy-2.3.4.dist-info/WHEEL @@ -0,0 +1,4 @@ +Wheel-Version: 1.0 +Generator: meson +Root-Is-Purelib: false +Tag: cp311-cp311-win_amd64 \ No newline at end of file diff --git a/dist/HandoverSystem/_internal/numpy-2.3.4.dist-info/entry_points.txt b/dist/HandoverSystem/_internal/numpy-2.3.4.dist-info/entry_points.txt new file mode 100644 index 0000000..48c4f64 --- /dev/null +++ b/dist/HandoverSystem/_internal/numpy-2.3.4.dist-info/entry_points.txt @@ -0,0 +1,13 @@ +[pkg_config] +numpy = numpy._core.lib.pkgconfig + +[array_api] +numpy = numpy + +[pyinstaller40] +hook-dirs = numpy:_pyinstaller_hooks_dir + +[console_scripts] +f2py = numpy.f2py.f2py2e:main +numpy-config = numpy._configtool:main + diff --git a/dist/HandoverSystem/_internal/numpy.libs/libscipy_openblas64_-860d95b1c38e637ce4509f5fa24fbf2a.dll b/dist/HandoverSystem/_internal/numpy.libs/libscipy_openblas64_-860d95b1c38e637ce4509f5fa24fbf2a.dll new file mode 100644 index 0000000..ccb8764 Binary files /dev/null and b/dist/HandoverSystem/_internal/numpy.libs/libscipy_openblas64_-860d95b1c38e637ce4509f5fa24fbf2a.dll differ diff --git a/dist/HandoverSystem/_internal/numpy.libs/msvcp140-a4c2229bdc2a2a630acdc095b4d86008.dll b/dist/HandoverSystem/_internal/numpy.libs/msvcp140-a4c2229bdc2a2a630acdc095b4d86008.dll new file mode 100644 index 0000000..0a50239 Binary files /dev/null and b/dist/HandoverSystem/_internal/numpy.libs/msvcp140-a4c2229bdc2a2a630acdc095b4d86008.dll differ diff --git a/dist/HandoverSystem/_internal/numpy/_core/_multiarray_tests.cp311-win_amd64.pyd b/dist/HandoverSystem/_internal/numpy/_core/_multiarray_tests.cp311-win_amd64.pyd new file mode 100644 index 0000000..aeb852c Binary files /dev/null and b/dist/HandoverSystem/_internal/numpy/_core/_multiarray_tests.cp311-win_amd64.pyd differ diff --git a/dist/HandoverSystem/_internal/numpy/_core/_multiarray_umath.cp311-win_amd64.pyd b/dist/HandoverSystem/_internal/numpy/_core/_multiarray_umath.cp311-win_amd64.pyd new file mode 100644 index 0000000..899664e Binary files /dev/null and b/dist/HandoverSystem/_internal/numpy/_core/_multiarray_umath.cp311-win_amd64.pyd differ diff --git a/dist/HandoverSystem/_internal/numpy/fft/_pocketfft_umath.cp311-win_amd64.pyd b/dist/HandoverSystem/_internal/numpy/fft/_pocketfft_umath.cp311-win_amd64.pyd new file mode 100644 index 0000000..2538e5f Binary files /dev/null and b/dist/HandoverSystem/_internal/numpy/fft/_pocketfft_umath.cp311-win_amd64.pyd differ diff --git a/dist/HandoverSystem/_internal/numpy/linalg/_umath_linalg.cp311-win_amd64.pyd b/dist/HandoverSystem/_internal/numpy/linalg/_umath_linalg.cp311-win_amd64.pyd new file mode 100644 index 0000000..fa4d90f Binary files /dev/null and b/dist/HandoverSystem/_internal/numpy/linalg/_umath_linalg.cp311-win_amd64.pyd differ diff --git a/dist/HandoverSystem/_internal/numpy/random/_bounded_integers.cp311-win_amd64.pyd b/dist/HandoverSystem/_internal/numpy/random/_bounded_integers.cp311-win_amd64.pyd new file mode 100644 index 0000000..ab9efe6 Binary files /dev/null and b/dist/HandoverSystem/_internal/numpy/random/_bounded_integers.cp311-win_amd64.pyd differ diff --git a/dist/HandoverSystem/_internal/numpy/random/_common.cp311-win_amd64.pyd b/dist/HandoverSystem/_internal/numpy/random/_common.cp311-win_amd64.pyd new file mode 100644 index 0000000..47e5ebb Binary files /dev/null and b/dist/HandoverSystem/_internal/numpy/random/_common.cp311-win_amd64.pyd differ diff --git a/dist/HandoverSystem/_internal/numpy/random/_generator.cp311-win_amd64.pyd b/dist/HandoverSystem/_internal/numpy/random/_generator.cp311-win_amd64.pyd new file mode 100644 index 0000000..89e2a39 Binary files /dev/null and b/dist/HandoverSystem/_internal/numpy/random/_generator.cp311-win_amd64.pyd differ diff --git a/dist/HandoverSystem/_internal/numpy/random/_mt19937.cp311-win_amd64.pyd b/dist/HandoverSystem/_internal/numpy/random/_mt19937.cp311-win_amd64.pyd new file mode 100644 index 0000000..7a3aa5f Binary files /dev/null and b/dist/HandoverSystem/_internal/numpy/random/_mt19937.cp311-win_amd64.pyd differ diff --git a/dist/HandoverSystem/_internal/numpy/random/_pcg64.cp311-win_amd64.pyd b/dist/HandoverSystem/_internal/numpy/random/_pcg64.cp311-win_amd64.pyd new file mode 100644 index 0000000..277ae90 Binary files /dev/null and b/dist/HandoverSystem/_internal/numpy/random/_pcg64.cp311-win_amd64.pyd differ diff --git a/dist/HandoverSystem/_internal/numpy/random/_philox.cp311-win_amd64.pyd b/dist/HandoverSystem/_internal/numpy/random/_philox.cp311-win_amd64.pyd new file mode 100644 index 0000000..266e553 Binary files /dev/null and b/dist/HandoverSystem/_internal/numpy/random/_philox.cp311-win_amd64.pyd differ diff --git a/dist/HandoverSystem/_internal/numpy/random/_sfc64.cp311-win_amd64.pyd b/dist/HandoverSystem/_internal/numpy/random/_sfc64.cp311-win_amd64.pyd new file mode 100644 index 0000000..1f27dae Binary files /dev/null and b/dist/HandoverSystem/_internal/numpy/random/_sfc64.cp311-win_amd64.pyd differ diff --git a/dist/HandoverSystem/_internal/numpy/random/bit_generator.cp311-win_amd64.pyd b/dist/HandoverSystem/_internal/numpy/random/bit_generator.cp311-win_amd64.pyd new file mode 100644 index 0000000..e7853bf Binary files /dev/null and b/dist/HandoverSystem/_internal/numpy/random/bit_generator.cp311-win_amd64.pyd differ diff --git a/dist/HandoverSystem/_internal/numpy/random/mtrand.cp311-win_amd64.pyd b/dist/HandoverSystem/_internal/numpy/random/mtrand.cp311-win_amd64.pyd new file mode 100644 index 0000000..ec75272 Binary files /dev/null and b/dist/HandoverSystem/_internal/numpy/random/mtrand.cp311-win_amd64.pyd differ diff --git a/dist/HandoverSystem/_internal/psutil/_psutil_windows.pyd b/dist/HandoverSystem/_internal/psutil/_psutil_windows.pyd new file mode 100644 index 0000000..0807fd8 Binary files /dev/null and b/dist/HandoverSystem/_internal/psutil/_psutil_windows.pyd differ diff --git a/dist/HandoverSystem/_internal/pyexpat.pyd b/dist/HandoverSystem/_internal/pyexpat.pyd new file mode 100644 index 0000000..5444cf2 Binary files /dev/null and b/dist/HandoverSystem/_internal/pyexpat.pyd differ diff --git a/dist/HandoverSystem/_internal/pyreadline3-3.5.4.dist-info/INSTALLER b/dist/HandoverSystem/_internal/pyreadline3-3.5.4.dist-info/INSTALLER new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/dist/HandoverSystem/_internal/pyreadline3-3.5.4.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/dist/HandoverSystem/_internal/pyreadline3-3.5.4.dist-info/LICENSE.md b/dist/HandoverSystem/_internal/pyreadline3-3.5.4.dist-info/LICENSE.md new file mode 100644 index 0000000..73c4548 --- /dev/null +++ b/dist/HandoverSystem/_internal/pyreadline3-3.5.4.dist-info/LICENSE.md @@ -0,0 +1,53 @@ +# LICENSE + +## pyreadline3 copyright and licensing notes + +Unless indicated otherwise, files in this project are covered by a BSD-type +license, included below. + +Individual authors are the holders of the copyright for their code and are +listed in each file. + +Some files may be licensed under different conditions. Ultimately each file +indicates clearly the conditions under which its author/authors have +decided to publish the code. + +## pyreadline3 license + +pyreadline3 is released under a BSD-type license. + +Copyright (c) 2020 Bassem Girgis . + +Copyright (c) 2006-2020 J�rgen Stenarson . + +Copyright (c) 2003-2006 Gary Bishop + +Copyright (c) 2003-2006 Jack Trainor + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +a. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + +b. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +c. Neither the name of the copyright holders nor the names of any + contributors to this software may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH +DAMAGE. diff --git a/dist/HandoverSystem/_internal/pyreadline3-3.5.4.dist-info/METADATA b/dist/HandoverSystem/_internal/pyreadline3-3.5.4.dist-info/METADATA new file mode 100644 index 0000000..08817ab --- /dev/null +++ b/dist/HandoverSystem/_internal/pyreadline3-3.5.4.dist-info/METADATA @@ -0,0 +1,109 @@ +Metadata-Version: 2.1 +Name: pyreadline3 +Version: 3.5.4 +Summary: A python implementation of GNU readline. +Author-email: Bassem Girgis , Jorgen Stenarson , Gary Bishop , Jack Trainor +Maintainer-email: Bassem Girgis +License: BSD +Project-URL: Homepage, https://github.com/pyreadline3/pyreadline3 +Project-URL: Documentation, https://github.com/pyreadline3/pyreadline3 +Project-URL: Repository, https://github.com/pyreadline3/pyreadline3.git +Project-URL: Issues, https://github.com/pyreadline3/pyreadline3/issues +Project-URL: Changelog, https://github.com/pyreadline3/pyreadline3/blob/master/doc/ChangeLog +Keywords: readline,pyreadline,pyreadline3 +Classifier: Development Status :: 5 - Production/Stable +Classifier: Environment :: Console +Classifier: Operating System :: Microsoft :: Windows +Classifier: License :: OSI Approved :: BSD License +Classifier: Programming Language :: Python :: 3.8 +Classifier: Programming Language :: Python :: 3.9 +Classifier: Programming Language :: Python :: 3.10 +Classifier: Programming Language :: Python :: 3.11 +Classifier: Programming Language :: Python :: 3.12 +Requires-Python: >=3.8 +Description-Content-Type: text/markdown +License-File: LICENSE.md +Provides-Extra: dev +Requires-Dist: build ; extra == 'dev' +Requires-Dist: flake8 ; extra == 'dev' +Requires-Dist: mypy ; extra == 'dev' +Requires-Dist: pytest ; extra == 'dev' +Requires-Dist: twine ; extra == 'dev' + +# pyreadline3 + +[![PyPi Badge](https://img.shields.io/pypi/v/pyreadline3)](https://pypi.org/project/pyreadline3/) +![Publish](https://github.com/pyreadline3/pyreadline3/workflows/Publish/badge.svg) +![Test](https://github.com/pyreadline3/pyreadline3/workflows/Test/badge.svg) +[![Downloads](https://static.pepy.tech/personalized-badge/pyreadline3?period=week&units=international_system&left_color=black&right_color=orange&left_text=Last%20Week)](https://pepy.tech/project/pyreadline3) +[![Downloads](https://static.pepy.tech/personalized-badge/pyreadline3?period=month&units=international_system&left_color=black&right_color=orange&left_text=Month)](https://pepy.tech/project/pyreadline3) +[![Downloads](https://static.pepy.tech/personalized-badge/pyreadline3?period=total&units=international_system&left_color=black&right_color=orange&left_text=Total)](https://pepy.tech/project/pyreadline3) + +The `pyreadline3` package is based on the stale package `pyreadline` located +[here](https://github.com/pyreadline/pyreadline). +The original `pyreadline` package is a Python implementation of GNU `readline` +functionality. +It is based on the `ctypes` based UNC `readline` package by Gary Bishop. +It is not complete. +It has been tested for use with Windows 10. + +Version 3.4+ of pyreadline3 runs on Python 3.8+. + +`pyreadline3` is available on PyPI and can be installed with + + pip install pyreadline3 + +## Features + +- keyboard text selection and copy/paste +- Shift-arrowkeys for text selection +- Control-c can be used for copy activate with allow_ctrl_c(True) in config file +- Double tapping ctrl-c will raise a KeyboardInterrupt, use ctrl_c_tap_time_interval(x) +- where x is your preferred tap time window, default 0.3 s. +- paste pastes first line of content on clipboard. +- ipython_paste, pastes tab-separated data as list of lists or numpy array if all data is numeric +- paste_mulitline_code pastes multi line code, removing any empty lines. + +The latest development version is always available at the project git +[repository](https://github.com/pyreadline3/pyreadline3) + +## Development + +To clone the library for development: + + git clone git@github.com:pyreadline3/pyreadline3.git + +or + + git clone https://github.com/pyreadline3/pyreadline3.git + +### Build The Virtual Environment + +The current earliest Python version supported is `3.8`. You need to be able to create a virtual environment at this version to make sure any changes you make is combatible. + +If you are using `conda`: + + conda create --prefix=.venv python=3.8 --yes + +If you are using `venv`, make sure you have the right base package: + + >> python --version + Python 3.8.x + +Once you verify your base Python, you can then create a virtual environment using: + + virtualenv -p py3.8 .venv + +### Setup + +Once you have created your virtual environment and made sure it is active in your current command line: + + pip install -e .[dev] + +This should all the dependencies you need for developing into the library and also allow you to run the unit tests: + + pytest + +### Debugging + + WIP diff --git a/dist/HandoverSystem/_internal/pyreadline3-3.5.4.dist-info/RECORD b/dist/HandoverSystem/_internal/pyreadline3-3.5.4.dist-info/RECORD new file mode 100644 index 0000000..e0a219a --- /dev/null +++ b/dist/HandoverSystem/_internal/pyreadline3-3.5.4.dist-info/RECORD @@ -0,0 +1,93 @@ +__pycache__/readline.cpython-311.pyc,, +pyreadline3-3.5.4.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +pyreadline3-3.5.4.dist-info/LICENSE.md,sha256=j8TY3mG0BTMCOxbmRSjRM3Gi6caGd9957V6TulcEcb0,2250 +pyreadline3-3.5.4.dist-info/METADATA,sha256=nQOXJa_U-sDQlnFW8Z9Cru_tmCVVQC1HeyVd7PIJACs,4653 +pyreadline3-3.5.4.dist-info/RECORD,, +pyreadline3-3.5.4.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91 +pyreadline3-3.5.4.dist-info/top_level.txt,sha256=jFAZcAVg1WzdsUjogYZvyqSMaBAN38sqUZemcaDxF9E,21 +pyreadline3/__init__.py,sha256=Pyu6nWoyEUUQKG-mol6rpiC1LhaDWDr8Metw0QJ0ws0,1031 +pyreadline3/__pycache__/__init__.cpython-311.pyc,, +pyreadline3/__pycache__/error.cpython-311.pyc,, +pyreadline3/__pycache__/get_doc.cpython-311.pyc,, +pyreadline3/__pycache__/py3k_compat.cpython-311.pyc,, +pyreadline3/__pycache__/rlmain.cpython-311.pyc,, +pyreadline3/__pycache__/unicode_helper.cpython-311.pyc,, +pyreadline3/clipboard/__init__.py,sha256=ONeTJdTckSx0utxQbcZ8f6U7q6Jt6UE4mN_5FbBZMJ0,667 +pyreadline3/clipboard/__pycache__/__init__.cpython-311.pyc,, +pyreadline3/clipboard/__pycache__/api.cpython-311.pyc,, +pyreadline3/clipboard/__pycache__/get_clipboard_text_and_convert.cpython-311.pyc,, +pyreadline3/clipboard/__pycache__/ironpython_clipboard.cpython-311.pyc,, +pyreadline3/clipboard/__pycache__/no_clipboard.cpython-311.pyc,, +pyreadline3/clipboard/__pycache__/obsolete.cpython-311.pyc,, +pyreadline3/clipboard/__pycache__/win32_clipboard.cpython-311.pyc,, +pyreadline3/clipboard/api.py,sha256=MzBOvDLexVnMsejY5NrcH3zbDMUquo0FCMDI9aPNIpw,1000 +pyreadline3/clipboard/get_clipboard_text_and_convert.py,sha256=UTdwFipxtAU6VySyg-FTHG3ay0Rd6vyGzlVZv_PIGNk,1839 +pyreadline3/clipboard/ironpython_clipboard.py,sha256=sYs8Ms8ElTOYFbOevag8HooXRfUp1dMREf5o0K6AMvw,893 +pyreadline3/clipboard/no_clipboard.py,sha256=o_jJjf8L182Hwwh9Xvq7Ux2WzSP7hLpMkwhcU2WUTcI,694 +pyreadline3/clipboard/obsolete.py,sha256=MyyGoYDi6K7asnjNqp_NCp9kdluDoYkzVUKfED1MSCk,954 +pyreadline3/clipboard/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pyreadline3/clipboard/win32_clipboard.py,sha256=BzpOCMZFgLVdy1i_F0Bv0Pmc-_FOkuv5ckYCVNq-gpU,4592 +pyreadline3/configuration/__pycache__/startup.cpython-311.pyc,, +pyreadline3/configuration/pyreadlineconfig.ini,sha256=FSps2a6pWneXPsPlr4aCnQFkixMRogT36H-fGYwWKV4,3922 +pyreadline3/configuration/startup.py,sha256=03fj2vhTtpIbquQOAU_NL4hpNdFh9dmvShoCkt3PWOQ,1098 +pyreadline3/console/__init__.py,sha256=1SwEGWL1DEWRUfRSQ1ifgtGLu8VNqfkoTJYGW2Kzelc,496 +pyreadline3/console/__pycache__/__init__.cpython-311.pyc,, +pyreadline3/console/__pycache__/ansi.cpython-311.pyc,, +pyreadline3/console/__pycache__/console.cpython-311.pyc,, +pyreadline3/console/__pycache__/console_attributes.cpython-311.pyc,, +pyreadline3/console/__pycache__/consolebase.cpython-311.pyc,, +pyreadline3/console/__pycache__/event.cpython-311.pyc,, +pyreadline3/console/__pycache__/ironpython_console.cpython-311.pyc,, +pyreadline3/console/ansi.py,sha256=F3G_sO718SVZ10JFr786GCUD7pkRWKyyHB9j8Ehp-cU,8435 +pyreadline3/console/console.py,sha256=4enAQ2IwURQobCCthVDKZCtvlTKiNtwS07QY7WT16XU,30430 +pyreadline3/console/console_attributes.py,sha256=Zeze7tKKCHVhDmwaS77eNmsM8F5moT7FEZBnRVsTS2k,463 +pyreadline3/console/consolebase.py,sha256=CATd1PAh0sfPriCZUF5oTD246IKfdyxq3hjQ_Un5cjI,1563 +pyreadline3/console/event.py,sha256=WoRNeZCLvzh5yoTdckqzbSLOoCZHhzKiW4U83uOHWUI,1273 +pyreadline3/console/ironpython_console.py,sha256=bX3TlEuabL-sptjTHVwAmEdeytG7xKsW_hcPM0fgUYo,14151 +pyreadline3/error.py,sha256=ahY4Szbx9rPf-ho3uwYsHD0OAzTw7ySrcYDpydD3tDA,569 +pyreadline3/get_doc.py,sha256=D5J3VY3N2c9ORsMxd3pWJN8Y9hqAAQiUDzhxF8Rt11A,530 +pyreadline3/keysyms/__init__.py,sha256=UL3Yc3r27-JiPZAXjqzXM1ec6DLxV3WqDDKuwJ1CcOw,440 +pyreadline3/keysyms/__pycache__/__init__.cpython-311.pyc,, +pyreadline3/keysyms/__pycache__/common.cpython-311.pyc,, +pyreadline3/keysyms/__pycache__/ironpython_keysyms.cpython-311.pyc,, +pyreadline3/keysyms/__pycache__/keysyms.cpython-311.pyc,, +pyreadline3/keysyms/__pycache__/winconstants.cpython-311.pyc,, +pyreadline3/keysyms/common.py,sha256=9W6h-jLR6UJm_2ddM-SrGnItb7R_WoWy5rTSM-SxtQw,5258 +pyreadline3/keysyms/ironpython_keysyms.py,sha256=EqL5k-GvEamytGHvISz-HEMuru1h6xouk2catoVM-cs,6131 +pyreadline3/keysyms/keysyms.py,sha256=-V_ajYWr-_qH0zp_XqaV_MZkyKSJFWH8IiuRVKzHzJU,3991 +pyreadline3/keysyms/winconstants.py,sha256=TQQXFeMjQcETmFl4rjjfPOfqI34xy1CO406kGVTjkko,3049 +pyreadline3/lineeditor/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pyreadline3/lineeditor/__pycache__/__init__.cpython-311.pyc,, +pyreadline3/lineeditor/__pycache__/history.cpython-311.pyc,, +pyreadline3/lineeditor/__pycache__/lineobj.cpython-311.pyc,, +pyreadline3/lineeditor/__pycache__/wordmatcher.cpython-311.pyc,, +pyreadline3/lineeditor/history.py,sha256=DfsYUG9p3pG77vaMqKhKX2Qpw3ZCUwPDiBHR73AmGKY,11021 +pyreadline3/lineeditor/lineobj.py,sha256=UPndJGbs-BMVo4FbgGenp_gqNDDKP3S8embUfIrxNu4,25458 +pyreadline3/lineeditor/wordmatcher.py,sha256=CXzpmroARRc3H2wX-lZBAzD-Gnswtnn_THYfj0sTQZE,3653 +pyreadline3/logger/__init__.py,sha256=c07U4Ov5JksvfGubZ79juELGv3TZY9jeYP_dKbryKjo,769 +pyreadline3/logger/__pycache__/__init__.cpython-311.pyc,, +pyreadline3/logger/__pycache__/control.cpython-311.pyc,, +pyreadline3/logger/__pycache__/log.cpython-311.pyc,, +pyreadline3/logger/__pycache__/logger.cpython-311.pyc,, +pyreadline3/logger/__pycache__/null_handler.cpython-311.pyc,, +pyreadline3/logger/__pycache__/socket_stream.cpython-311.pyc,, +pyreadline3/logger/control.py,sha256=wQl9H7mT8nMitd-q-GlkSlsg3wQBJwwOAAR-osXMvIs,1970 +pyreadline3/logger/log.py,sha256=sXVvhvb_LtLuv7FoP9sYyJHyEU0rNYZPxCI0DgH0bxY,637 +pyreadline3/logger/logger.py,sha256=5w6fn46sXM8rzB0JSSIYFydEWctTaX1vFBeBm6fRNCM,745 +pyreadline3/logger/null_handler.py,sha256=Usqu3O5k9vqMWIV6ErTn_HAhHzpaDMlyhYud8O7AGxQ,607 +pyreadline3/logger/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pyreadline3/logger/socket_stream.py,sha256=0TsCvT6xCmKj0LTduV7y2FQKxPqqw6TgusJlZJ96DyU,1048 +pyreadline3/modes/__init__.py,sha256=BM7vslXGTj6-AeMMuMN1QTVQKzbUtcX0GmGSRXyK1Q4,204 +pyreadline3/modes/__pycache__/__init__.cpython-311.pyc,, +pyreadline3/modes/__pycache__/basemode.cpython-311.pyc,, +pyreadline3/modes/__pycache__/emacs.cpython-311.pyc,, +pyreadline3/modes/__pycache__/notemacs.cpython-311.pyc,, +pyreadline3/modes/__pycache__/vi.cpython-311.pyc,, +pyreadline3/modes/basemode.py,sha256=5CQoOtMKBFq6i5_G-jqVFV31Vrp-3YL62sjjy7LYD0E,22256 +pyreadline3/modes/emacs.py,sha256=dmfouhGBcrzpxHK8-o0OBsL6BDCwczdkuHvo0FX-Ejg,30599 +pyreadline3/modes/notemacs.py,sha256=TJ-nhAoS7i2yL5YbBB4V1GKR2xBWRAuRs405eamArLc,25617 +pyreadline3/modes/vi.py,sha256=OkDT1jdpY9qniVAFy2NiPN-krd0H7DI2I0w4i-KU0H4,41671 +pyreadline3/py3k_compat.py,sha256=W_R5kyM27e8ZWaqNe5NLm-NaiKeoI9WFpTuYTvpk-YQ,680 +pyreadline3/rlmain.py,sha256=2K6I5FxiZd2Rv4OedWtDquY6gObeXhXhFQQrMwu6SDM,22551 +pyreadline3/unicode_helper.py,sha256=RHXvPH41R98uR3iWDAJzsSZMqEYLKyMb-9FdhwJWgBw,1816 +readline.py,sha256=Q861FGqmettjKhPsZo7lAt891RXd0dEDAtkDapeUUi4,2667 diff --git a/dist/HandoverSystem/_internal/pyreadline3-3.5.4.dist-info/WHEEL b/dist/HandoverSystem/_internal/pyreadline3-3.5.4.dist-info/WHEEL new file mode 100644 index 0000000..dcfdc6e --- /dev/null +++ b/dist/HandoverSystem/_internal/pyreadline3-3.5.4.dist-info/WHEEL @@ -0,0 +1,5 @@ +Wheel-Version: 1.0 +Generator: setuptools (75.1.0) +Root-Is-Purelib: true +Tag: py3-none-any + diff --git a/dist/HandoverSystem/_internal/pyreadline3-3.5.4.dist-info/top_level.txt b/dist/HandoverSystem/_internal/pyreadline3-3.5.4.dist-info/top_level.txt new file mode 100644 index 0000000..437aaa5 --- /dev/null +++ b/dist/HandoverSystem/_internal/pyreadline3-3.5.4.dist-info/top_level.txt @@ -0,0 +1,2 @@ +pyreadline3 +readline diff --git a/dist/HandoverSystem/_internal/python3.dll b/dist/HandoverSystem/_internal/python3.dll new file mode 100644 index 0000000..4697e72 Binary files /dev/null and b/dist/HandoverSystem/_internal/python3.dll differ diff --git a/dist/HandoverSystem/_internal/python311.dll b/dist/HandoverSystem/_internal/python311.dll new file mode 100644 index 0000000..701d943 Binary files /dev/null and b/dist/HandoverSystem/_internal/python311.dll differ diff --git a/dist/HandoverSystem/_internal/pythonnet/runtime/Python.Runtime.dll b/dist/HandoverSystem/_internal/pythonnet/runtime/Python.Runtime.dll new file mode 100644 index 0000000..c2e2052 Binary files /dev/null and b/dist/HandoverSystem/_internal/pythonnet/runtime/Python.Runtime.dll differ diff --git a/dist/HandoverSystem/_internal/pywin32_system32/pywintypes311.dll b/dist/HandoverSystem/_internal/pywin32_system32/pywintypes311.dll new file mode 100644 index 0000000..4321d79 Binary files /dev/null and b/dist/HandoverSystem/_internal/pywin32_system32/pywintypes311.dll differ diff --git a/dist/HandoverSystem/_internal/select.pyd b/dist/HandoverSystem/_internal/select.pyd new file mode 100644 index 0000000..b008c3f Binary files /dev/null and b/dist/HandoverSystem/_internal/select.pyd differ diff --git a/dist/HandoverSystem/_internal/selectolax/base.pxi b/dist/HandoverSystem/_internal/selectolax/base.pxi new file mode 100644 index 0000000..0018c12 --- /dev/null +++ b/dist/HandoverSystem/_internal/selectolax/base.pxi @@ -0,0 +1,4 @@ + +class SelectolaxError(Exception): + """An exception that indicates error.""" + pass diff --git a/dist/HandoverSystem/_internal/selectolax/lexbor.c b/dist/HandoverSystem/_internal/selectolax/lexbor.c new file mode 100644 index 0000000..c795f7b --- /dev/null +++ b/dist/HandoverSystem/_internal/selectolax/lexbor.c @@ -0,0 +1,55601 @@ +/* Generated by Cython 3.2.2 */ + +/* BEGIN: Cython Metadata +{ + "distutils": { + "depends": [ + "lexbor\\source\\lexbor\\core\\core.h", + "lexbor\\source\\lexbor\\css\\css.h", + "lexbor\\source\\lexbor\\dom\\collection.h", + "lexbor\\source\\lexbor\\dom\\dom.h", + "lexbor\\source\\lexbor\\dom\\interfaces\\document.h", + "lexbor\\source\\lexbor\\dom\\interfaces\\element.h", + "lexbor\\source\\lexbor\\html\\html.h", + "lexbor\\source\\lexbor\\selectors\\selectors.h", + "lexbor\\source\\lexbor\\tag\\tag.h" + ], + "extra_compile_args": [ + "-DLEXBOR_STATIC", + "-D_WIN64" + ], + "include_dirs": [ + "lexbor/source/" + ], + "language": "c", + "name": "selectolax.lexbor", + "sources": [ + "selectolax/lexbor.pyx", + "lexbor/source\\lexbor\\core\\array.c", + "lexbor/source\\lexbor\\core\\array_obj.c", + "lexbor/source\\lexbor\\core\\avl.c", + "lexbor/source\\lexbor\\core\\bst.c", + "lexbor/source\\lexbor\\core\\bst_map.c", + "lexbor/source\\lexbor\\core\\conv.c", + "lexbor/source\\lexbor\\core\\diyfp.c", + "lexbor/source\\lexbor\\core\\dobject.c", + "lexbor/source\\lexbor\\core\\dtoa.c", + "lexbor/source\\lexbor\\core\\hash.c", + "lexbor/source\\lexbor\\core\\in.c", + "lexbor/source\\lexbor\\core\\mem.c", + "lexbor/source\\lexbor\\core\\mraw.c", + "lexbor/source\\lexbor\\core\\plog.c", + "lexbor/source\\lexbor\\core\\print.c", + "lexbor/source\\lexbor\\core\\serialize.c", + "lexbor/source\\lexbor\\core\\shs.c", + "lexbor/source\\lexbor\\core\\str.c", + "lexbor/source\\lexbor\\core\\strtod.c", + "lexbor/source\\lexbor\\core\\utils.c", + "lexbor/source\\lexbor\\css\\at_rule.c", + "lexbor/source\\lexbor\\css\\css.c", + "lexbor/source\\lexbor\\css\\declaration.c", + "lexbor/source\\lexbor\\css\\log.c", + "lexbor/source\\lexbor\\css\\parser.c", + "lexbor/source\\lexbor\\css\\property.c", + "lexbor/source\\lexbor\\css\\rule.c", + "lexbor/source\\lexbor\\css\\state.c", + "lexbor/source\\lexbor\\css\\stylesheet.c", + "lexbor/source\\lexbor\\css\\unit.c", + "lexbor/source\\lexbor\\css\\value.c", + "lexbor/source\\lexbor\\css\\at_rule\\state.c", + "lexbor/source\\lexbor\\css\\property\\state.c", + "lexbor/source\\lexbor\\css\\selectors\\pseudo.c", + "lexbor/source\\lexbor\\css\\selectors\\pseudo_state.c", + "lexbor/source\\lexbor\\css\\selectors\\selector.c", + "lexbor/source\\lexbor\\css\\selectors\\selectors.c", + "lexbor/source\\lexbor\\css\\selectors\\state.c", + "lexbor/source\\lexbor\\css\\syntax\\anb.c", + "lexbor/source\\lexbor\\css\\syntax\\parser.c", + "lexbor/source\\lexbor\\css\\syntax\\state.c", + "lexbor/source\\lexbor\\css\\syntax\\syntax.c", + "lexbor/source\\lexbor\\css\\syntax\\token.c", + "lexbor/source\\lexbor\\css\\syntax\\tokenizer.c", + "lexbor/source\\lexbor\\css\\syntax\\tokenizer\\error.c", + "lexbor/source\\lexbor\\dom\\collection.c", + "lexbor/source\\lexbor\\dom\\exception.c", + "lexbor/source\\lexbor\\dom\\interface.c", + "lexbor/source\\lexbor\\dom\\interfaces\\attr.c", + "lexbor/source\\lexbor\\dom\\interfaces\\cdata_section.c", + "lexbor/source\\lexbor\\dom\\interfaces\\character_data.c", + "lexbor/source\\lexbor\\dom\\interfaces\\comment.c", + "lexbor/source\\lexbor\\dom\\interfaces\\document.c", + "lexbor/source\\lexbor\\dom\\interfaces\\document_fragment.c", + "lexbor/source\\lexbor\\dom\\interfaces\\document_type.c", + "lexbor/source\\lexbor\\dom\\interfaces\\element.c", + "lexbor/source\\lexbor\\dom\\interfaces\\event_target.c", + "lexbor/source\\lexbor\\dom\\interfaces\\node.c", + "lexbor/source\\lexbor\\dom\\interfaces\\processing_instruction.c", + "lexbor/source\\lexbor\\dom\\interfaces\\shadow_root.c", + "lexbor/source\\lexbor\\dom\\interfaces\\text.c", + "lexbor/source\\lexbor\\encoding\\decode.c", + "lexbor/source\\lexbor\\encoding\\encode.c", + "lexbor/source\\lexbor\\encoding\\encoding.c", + "lexbor/source\\lexbor\\encoding\\multi.c", + "lexbor/source\\lexbor\\encoding\\range.c", + "lexbor/source\\lexbor\\encoding\\res.c", + "lexbor/source\\lexbor\\encoding\\single.c", + "lexbor/source\\lexbor\\engine\\engine.c", + "lexbor/source\\lexbor\\html\\encoding.c", + "lexbor/source\\lexbor\\html\\interface.c", + "lexbor/source\\lexbor\\html\\node.c", + "lexbor/source\\lexbor\\html\\parser.c", + "lexbor/source\\lexbor\\html\\serialize.c", + "lexbor/source\\lexbor\\html\\token.c", + "lexbor/source\\lexbor\\html\\tokenizer.c", + "lexbor/source\\lexbor\\html\\token_attr.c", + "lexbor/source\\lexbor\\html\\tree.c", + "lexbor/source\\lexbor\\html\\interfaces\\anchor_element.c", + "lexbor/source\\lexbor\\html\\interfaces\\area_element.c", + "lexbor/source\\lexbor\\html\\interfaces\\audio_element.c", + "lexbor/source\\lexbor\\html\\interfaces\\base_element.c", + "lexbor/source\\lexbor\\html\\interfaces\\body_element.c", + "lexbor/source\\lexbor\\html\\interfaces\\br_element.c", + "lexbor/source\\lexbor\\html\\interfaces\\button_element.c", + "lexbor/source\\lexbor\\html\\interfaces\\canvas_element.c", + "lexbor/source\\lexbor\\html\\interfaces\\data_element.c", + "lexbor/source\\lexbor\\html\\interfaces\\data_list_element.c", + "lexbor/source\\lexbor\\html\\interfaces\\details_element.c", + "lexbor/source\\lexbor\\html\\interfaces\\dialog_element.c", + "lexbor/source\\lexbor\\html\\interfaces\\directory_element.c", + "lexbor/source\\lexbor\\html\\interfaces\\div_element.c", + "lexbor/source\\lexbor\\html\\interfaces\\document.c", + "lexbor/source\\lexbor\\html\\interfaces\\d_list_element.c", + "lexbor/source\\lexbor\\html\\interfaces\\element.c", + "lexbor/source\\lexbor\\html\\interfaces\\embed_element.c", + "lexbor/source\\lexbor\\html\\interfaces\\field_set_element.c", + "lexbor/source\\lexbor\\html\\interfaces\\font_element.c", + "lexbor/source\\lexbor\\html\\interfaces\\form_element.c", + "lexbor/source\\lexbor\\html\\interfaces\\frame_element.c", + "lexbor/source\\lexbor\\html\\interfaces\\frame_set_element.c", + "lexbor/source\\lexbor\\html\\interfaces\\heading_element.c", + "lexbor/source\\lexbor\\html\\interfaces\\head_element.c", + "lexbor/source\\lexbor\\html\\interfaces\\hr_element.c", + "lexbor/source\\lexbor\\html\\interfaces\\html_element.c", + "lexbor/source\\lexbor\\html\\interfaces\\iframe_element.c", + "lexbor/source\\lexbor\\html\\interfaces\\image_element.c", + "lexbor/source\\lexbor\\html\\interfaces\\input_element.c", + "lexbor/source\\lexbor\\html\\interfaces\\label_element.c", + "lexbor/source\\lexbor\\html\\interfaces\\legend_element.c", + "lexbor/source\\lexbor\\html\\interfaces\\link_element.c", + "lexbor/source\\lexbor\\html\\interfaces\\li_element.c", + "lexbor/source\\lexbor\\html\\interfaces\\map_element.c", + "lexbor/source\\lexbor\\html\\interfaces\\marquee_element.c", + "lexbor/source\\lexbor\\html\\interfaces\\media_element.c", + "lexbor/source\\lexbor\\html\\interfaces\\menu_element.c", + "lexbor/source\\lexbor\\html\\interfaces\\meta_element.c", + "lexbor/source\\lexbor\\html\\interfaces\\meter_element.c", + "lexbor/source\\lexbor\\html\\interfaces\\mod_element.c", + "lexbor/source\\lexbor\\html\\interfaces\\object_element.c", + "lexbor/source\\lexbor\\html\\interfaces\\option_element.c", + "lexbor/source\\lexbor\\html\\interfaces\\opt_group_element.c", + "lexbor/source\\lexbor\\html\\interfaces\\output_element.c", + "lexbor/source\\lexbor\\html\\interfaces\\o_list_element.c", + "lexbor/source\\lexbor\\html\\interfaces\\paragraph_element.c", + "lexbor/source\\lexbor\\html\\interfaces\\param_element.c", + "lexbor/source\\lexbor\\html\\interfaces\\picture_element.c", + "lexbor/source\\lexbor\\html\\interfaces\\pre_element.c", + "lexbor/source\\lexbor\\html\\interfaces\\progress_element.c", + "lexbor/source\\lexbor\\html\\interfaces\\quote_element.c", + "lexbor/source\\lexbor\\html\\interfaces\\script_element.c", + "lexbor/source\\lexbor\\html\\interfaces\\search_element.c", + "lexbor/source\\lexbor\\html\\interfaces\\selectedcontent_element.c", + "lexbor/source\\lexbor\\html\\interfaces\\select_element.c", + "lexbor/source\\lexbor\\html\\interfaces\\slot_element.c", + "lexbor/source\\lexbor\\html\\interfaces\\source_element.c", + "lexbor/source\\lexbor\\html\\interfaces\\span_element.c", + "lexbor/source\\lexbor\\html\\interfaces\\style_element.c", + "lexbor/source\\lexbor\\html\\interfaces\\table_caption_element.c", + "lexbor/source\\lexbor\\html\\interfaces\\table_cell_element.c", + "lexbor/source\\lexbor\\html\\interfaces\\table_col_element.c", + "lexbor/source\\lexbor\\html\\interfaces\\table_element.c", + "lexbor/source\\lexbor\\html\\interfaces\\table_row_element.c", + "lexbor/source\\lexbor\\html\\interfaces\\table_section_element.c", + "lexbor/source\\lexbor\\html\\interfaces\\template_element.c", + "lexbor/source\\lexbor\\html\\interfaces\\text_area_element.c", + "lexbor/source\\lexbor\\html\\interfaces\\time_element.c", + "lexbor/source\\lexbor\\html\\interfaces\\title_element.c", + "lexbor/source\\lexbor\\html\\interfaces\\track_element.c", + "lexbor/source\\lexbor\\html\\interfaces\\unknown_element.c", + "lexbor/source\\lexbor\\html\\interfaces\\u_list_element.c", + "lexbor/source\\lexbor\\html\\interfaces\\video_element.c", + "lexbor/source\\lexbor\\html\\interfaces\\window.c", + "lexbor/source\\lexbor\\html\\tokenizer\\error.c", + "lexbor/source\\lexbor\\html\\tokenizer\\state.c", + "lexbor/source\\lexbor\\html\\tokenizer\\state_comment.c", + "lexbor/source\\lexbor\\html\\tokenizer\\state_doctype.c", + "lexbor/source\\lexbor\\html\\tokenizer\\state_rawtext.c", + "lexbor/source\\lexbor\\html\\tokenizer\\state_rcdata.c", + "lexbor/source\\lexbor\\html\\tokenizer\\state_script.c", + "lexbor/source\\lexbor\\html\\tree\\active_formatting.c", + "lexbor/source\\lexbor\\html\\tree\\error.c", + "lexbor/source\\lexbor\\html\\tree\\open_elements.c", + "lexbor/source\\lexbor\\html\\tree\\template_insertion.c", + "lexbor/source\\lexbor\\html\\tree\\insertion_mode\\after_after_body.c", + "lexbor/source\\lexbor\\html\\tree\\insertion_mode\\after_after_frameset.c", + "lexbor/source\\lexbor\\html\\tree\\insertion_mode\\after_body.c", + "lexbor/source\\lexbor\\html\\tree\\insertion_mode\\after_frameset.c", + "lexbor/source\\lexbor\\html\\tree\\insertion_mode\\after_head.c", + "lexbor/source\\lexbor\\html\\tree\\insertion_mode\\before_head.c", + "lexbor/source\\lexbor\\html\\tree\\insertion_mode\\before_html.c", + "lexbor/source\\lexbor\\html\\tree\\insertion_mode\\foreign_content.c", + "lexbor/source\\lexbor\\html\\tree\\insertion_mode\\initial.c", + "lexbor/source\\lexbor\\html\\tree\\insertion_mode\\in_body.c", + "lexbor/source\\lexbor\\html\\tree\\insertion_mode\\in_caption.c", + "lexbor/source\\lexbor\\html\\tree\\insertion_mode\\in_cell.c", + "lexbor/source\\lexbor\\html\\tree\\insertion_mode\\in_column_group.c", + "lexbor/source\\lexbor\\html\\tree\\insertion_mode\\in_frameset.c", + "lexbor/source\\lexbor\\html\\tree\\insertion_mode\\in_head.c", + "lexbor/source\\lexbor\\html\\tree\\insertion_mode\\in_head_noscript.c", + "lexbor/source\\lexbor\\html\\tree\\insertion_mode\\in_row.c", + "lexbor/source\\lexbor\\html\\tree\\insertion_mode\\in_table.c", + "lexbor/source\\lexbor\\html\\tree\\insertion_mode\\in_table_body.c", + "lexbor/source\\lexbor\\html\\tree\\insertion_mode\\in_table_text.c", + "lexbor/source\\lexbor\\html\\tree\\insertion_mode\\in_template.c", + "lexbor/source\\lexbor\\html\\tree\\insertion_mode\\text.c", + "lexbor/source\\lexbor\\ns\\ns.c", + "lexbor/source\\lexbor\\ports\\windows_nt\\lexbor\\core\\fs.c", + "lexbor/source\\lexbor\\ports\\windows_nt\\lexbor\\core\\memory.c", + "lexbor/source\\lexbor\\ports\\windows_nt\\lexbor\\core\\perf.c", + "lexbor/source\\lexbor\\punycode\\punycode.c", + "lexbor/source\\lexbor\\selectors\\selectors.c", + "lexbor/source\\lexbor\\style\\event.c", + "lexbor/source\\lexbor\\style\\style.c", + "lexbor/source\\lexbor\\style\\dom\\interfaces\\document.c", + "lexbor/source\\lexbor\\style\\dom\\interfaces\\element.c", + "lexbor/source\\lexbor\\style\\html\\interfaces\\document.c", + "lexbor/source\\lexbor\\style\\html\\interfaces\\style_element.c", + "lexbor/source\\lexbor\\tag\\tag.c", + "lexbor/source\\lexbor\\unicode\\idna.c", + "lexbor/source\\lexbor\\unicode\\unicode.c", + "lexbor/source\\lexbor\\url\\url.c", + "lexbor/source\\lexbor\\utils\\http.c", + "lexbor/source\\lexbor\\utils\\warc.c" + ] + }, + "module_name": "selectolax.lexbor" +} +END: Cython Metadata */ + +#ifndef PY_SSIZE_T_CLEAN +#define PY_SSIZE_T_CLEAN +#endif /* PY_SSIZE_T_CLEAN */ +/* InitLimitedAPI */ +#if defined(Py_LIMITED_API) + #if !defined(CYTHON_LIMITED_API) + #define CYTHON_LIMITED_API 1 + #endif +#elif defined(CYTHON_LIMITED_API) + #ifdef _MSC_VER + #pragma message ("Limited API usage is enabled with 'CYTHON_LIMITED_API' but 'Py_LIMITED_API' does not define a Python target version. Consider setting 'Py_LIMITED_API' instead.") + #else + #warning Limited API usage is enabled with 'CYTHON_LIMITED_API' but 'Py_LIMITED_API' does not define a Python target version. Consider setting 'Py_LIMITED_API' instead. + #endif +#endif + +#include "Python.h" +#ifndef Py_PYTHON_H + #error Python headers needed to compile C extensions, please install development version of Python. +#elif PY_VERSION_HEX < 0x03080000 + #error Cython requires Python 3.8+. +#else +#define __PYX_ABI_VERSION "3_2_2" +#define CYTHON_HEX_VERSION 0x030202F0 +#define CYTHON_FUTURE_DIVISION 1 +/* CModulePreamble */ +#include +#ifndef offsetof + #define offsetof(type, member) ( (size_t) & ((type*)0) -> member ) +#endif +#if !defined(_WIN32) && !defined(WIN32) && !defined(MS_WINDOWS) + #ifndef __stdcall + #define __stdcall + #endif + #ifndef __cdecl + #define __cdecl + #endif + #ifndef __fastcall + #define __fastcall + #endif +#endif +#ifndef DL_IMPORT + #define DL_IMPORT(t) t +#endif +#ifndef DL_EXPORT + #define DL_EXPORT(t) t +#endif +#define __PYX_COMMA , +#ifndef PY_LONG_LONG + #define PY_LONG_LONG LONG_LONG +#endif +#ifndef Py_HUGE_VAL + #define Py_HUGE_VAL HUGE_VAL +#endif +#define __PYX_LIMITED_VERSION_HEX PY_VERSION_HEX +#if defined(GRAALVM_PYTHON) + /* For very preliminary testing purposes. Most variables are set the same as PyPy. + The existence of this section does not imply that anything works or is even tested */ + #define CYTHON_COMPILING_IN_PYPY 0 + #define CYTHON_COMPILING_IN_CPYTHON 0 + #define CYTHON_COMPILING_IN_LIMITED_API 0 + #define CYTHON_COMPILING_IN_GRAAL 1 + #define CYTHON_COMPILING_IN_CPYTHON_FREETHREADING 0 + #undef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 0 + #undef CYTHON_USE_TYPE_SPECS + #define CYTHON_USE_TYPE_SPECS 0 + #undef CYTHON_USE_PYTYPE_LOOKUP + #define CYTHON_USE_PYTYPE_LOOKUP 0 + #undef CYTHON_USE_PYLIST_INTERNALS + #define CYTHON_USE_PYLIST_INTERNALS 0 + #undef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 0 + #undef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #undef CYTHON_USE_PYLONG_INTERNALS + #define CYTHON_USE_PYLONG_INTERNALS 0 + #undef CYTHON_AVOID_BORROWED_REFS + #define CYTHON_AVOID_BORROWED_REFS 1 + #undef CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS + #define CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS 0 + #undef CYTHON_ASSUME_SAFE_MACROS + #define CYTHON_ASSUME_SAFE_MACROS 0 + #undef CYTHON_ASSUME_SAFE_SIZE + #define CYTHON_ASSUME_SAFE_SIZE 0 + #undef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 0 + #undef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 0 + #undef CYTHON_FAST_GIL + #define CYTHON_FAST_GIL 0 + #undef CYTHON_METH_FASTCALL + #define CYTHON_METH_FASTCALL 0 + #undef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 0 + #ifndef CYTHON_PEP487_INIT_SUBCLASS + #define CYTHON_PEP487_INIT_SUBCLASS 1 + #endif + #undef CYTHON_PEP489_MULTI_PHASE_INIT + #define CYTHON_PEP489_MULTI_PHASE_INIT 1 + #undef CYTHON_USE_MODULE_STATE + #define CYTHON_USE_MODULE_STATE 0 + #undef CYTHON_USE_SYS_MONITORING + #define CYTHON_USE_SYS_MONITORING 0 + #undef CYTHON_USE_TP_FINALIZE + #define CYTHON_USE_TP_FINALIZE 0 + #undef CYTHON_USE_AM_SEND + #define CYTHON_USE_AM_SEND 0 + #undef CYTHON_USE_DICT_VERSIONS + #define CYTHON_USE_DICT_VERSIONS 0 + #undef CYTHON_USE_EXC_INFO_STACK + #define CYTHON_USE_EXC_INFO_STACK 1 + #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC + #define CYTHON_UPDATE_DESCRIPTOR_DOC 0 + #endif + #undef CYTHON_USE_FREELISTS + #define CYTHON_USE_FREELISTS 0 + #undef CYTHON_IMMORTAL_CONSTANTS + #define CYTHON_IMMORTAL_CONSTANTS 0 +#elif defined(PYPY_VERSION) + #define CYTHON_COMPILING_IN_PYPY 1 + #define CYTHON_COMPILING_IN_CPYTHON 0 + #define CYTHON_COMPILING_IN_LIMITED_API 0 + #define CYTHON_COMPILING_IN_GRAAL 0 + #define CYTHON_COMPILING_IN_CPYTHON_FREETHREADING 0 + #undef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 1 + #ifndef CYTHON_USE_TYPE_SPECS + #define CYTHON_USE_TYPE_SPECS 0 + #endif + #undef CYTHON_USE_PYTYPE_LOOKUP + #define CYTHON_USE_PYTYPE_LOOKUP 0 + #undef CYTHON_USE_PYLIST_INTERNALS + #define CYTHON_USE_PYLIST_INTERNALS 0 + #undef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 0 + #undef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #undef CYTHON_USE_PYLONG_INTERNALS + #define CYTHON_USE_PYLONG_INTERNALS 0 + #undef CYTHON_AVOID_BORROWED_REFS + #define CYTHON_AVOID_BORROWED_REFS 1 + #undef CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS + #define CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS 1 + #undef CYTHON_ASSUME_SAFE_MACROS + #define CYTHON_ASSUME_SAFE_MACROS 0 + #ifndef CYTHON_ASSUME_SAFE_SIZE + #define CYTHON_ASSUME_SAFE_SIZE 1 + #endif + #undef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 0 + #undef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 0 + #undef CYTHON_FAST_GIL + #define CYTHON_FAST_GIL 0 + #undef CYTHON_METH_FASTCALL + #define CYTHON_METH_FASTCALL 0 + #undef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 0 + #ifndef CYTHON_PEP487_INIT_SUBCLASS + #define CYTHON_PEP487_INIT_SUBCLASS 1 + #endif + #if PY_VERSION_HEX < 0x03090000 + #undef CYTHON_PEP489_MULTI_PHASE_INIT + #define CYTHON_PEP489_MULTI_PHASE_INIT 0 + #elif !defined(CYTHON_PEP489_MULTI_PHASE_INIT) + #define CYTHON_PEP489_MULTI_PHASE_INIT 1 + #endif + #undef CYTHON_USE_MODULE_STATE + #define CYTHON_USE_MODULE_STATE 0 + #undef CYTHON_USE_SYS_MONITORING + #define CYTHON_USE_SYS_MONITORING 0 + #ifndef CYTHON_USE_TP_FINALIZE + #define CYTHON_USE_TP_FINALIZE (PYPY_VERSION_NUM >= 0x07030C00) + #endif + #undef CYTHON_USE_AM_SEND + #define CYTHON_USE_AM_SEND 0 + #undef CYTHON_USE_DICT_VERSIONS + #define CYTHON_USE_DICT_VERSIONS 0 + #undef CYTHON_USE_EXC_INFO_STACK + #define CYTHON_USE_EXC_INFO_STACK 0 + #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC + #define CYTHON_UPDATE_DESCRIPTOR_DOC (PYPY_VERSION_NUM >= 0x07031100) + #endif + #undef CYTHON_USE_FREELISTS + #define CYTHON_USE_FREELISTS 0 + #undef CYTHON_IMMORTAL_CONSTANTS + #define CYTHON_IMMORTAL_CONSTANTS 0 +#elif defined(CYTHON_LIMITED_API) + #ifdef Py_LIMITED_API + #undef __PYX_LIMITED_VERSION_HEX + #define __PYX_LIMITED_VERSION_HEX Py_LIMITED_API + #endif + #define CYTHON_COMPILING_IN_PYPY 0 + #define CYTHON_COMPILING_IN_CPYTHON 0 + #define CYTHON_COMPILING_IN_LIMITED_API 1 + #define CYTHON_COMPILING_IN_GRAAL 0 + #define CYTHON_COMPILING_IN_CPYTHON_FREETHREADING 0 + #undef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 0 + #undef CYTHON_USE_TYPE_SPECS + #define CYTHON_USE_TYPE_SPECS 1 + #undef CYTHON_USE_PYTYPE_LOOKUP + #define CYTHON_USE_PYTYPE_LOOKUP 0 + #undef CYTHON_USE_PYLIST_INTERNALS + #define CYTHON_USE_PYLIST_INTERNALS 0 + #undef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 0 + #ifndef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #endif + #undef CYTHON_USE_PYLONG_INTERNALS + #define CYTHON_USE_PYLONG_INTERNALS 0 + #ifndef CYTHON_AVOID_BORROWED_REFS + #define CYTHON_AVOID_BORROWED_REFS 0 + #endif + #ifndef CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS + #define CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS 0 + #endif + #undef CYTHON_ASSUME_SAFE_MACROS + #define CYTHON_ASSUME_SAFE_MACROS 0 + #undef CYTHON_ASSUME_SAFE_SIZE + #define CYTHON_ASSUME_SAFE_SIZE 0 + #undef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 0 + #undef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 0 + #undef CYTHON_FAST_GIL + #define CYTHON_FAST_GIL 0 + #undef CYTHON_METH_FASTCALL + #define CYTHON_METH_FASTCALL (__PYX_LIMITED_VERSION_HEX >= 0x030C0000) + #undef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 0 + #ifndef CYTHON_PEP487_INIT_SUBCLASS + #define CYTHON_PEP487_INIT_SUBCLASS 1 + #endif + #ifndef CYTHON_PEP489_MULTI_PHASE_INIT + #define CYTHON_PEP489_MULTI_PHASE_INIT 1 + #endif + #ifndef CYTHON_USE_MODULE_STATE + #define CYTHON_USE_MODULE_STATE 0 + #endif + #undef CYTHON_USE_SYS_MONITORING + #define CYTHON_USE_SYS_MONITORING 0 + #ifndef CYTHON_USE_TP_FINALIZE + #define CYTHON_USE_TP_FINALIZE 0 + #endif + #ifndef CYTHON_USE_AM_SEND + #define CYTHON_USE_AM_SEND (__PYX_LIMITED_VERSION_HEX >= 0x030A0000) + #endif + #undef CYTHON_USE_DICT_VERSIONS + #define CYTHON_USE_DICT_VERSIONS 0 + #undef CYTHON_USE_EXC_INFO_STACK + #define CYTHON_USE_EXC_INFO_STACK 0 + #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC + #define CYTHON_UPDATE_DESCRIPTOR_DOC 0 + #endif + #ifndef CYTHON_USE_FREELISTS + #define CYTHON_USE_FREELISTS 1 + #endif + #undef CYTHON_IMMORTAL_CONSTANTS + #define CYTHON_IMMORTAL_CONSTANTS 0 +#else + #define CYTHON_COMPILING_IN_PYPY 0 + #define CYTHON_COMPILING_IN_CPYTHON 1 + #define CYTHON_COMPILING_IN_LIMITED_API 0 + #define CYTHON_COMPILING_IN_GRAAL 0 + #ifdef Py_GIL_DISABLED + #define CYTHON_COMPILING_IN_CPYTHON_FREETHREADING 1 + #else + #define CYTHON_COMPILING_IN_CPYTHON_FREETHREADING 0 + #endif + #if PY_VERSION_HEX < 0x030A0000 + #undef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 1 + #elif !defined(CYTHON_USE_TYPE_SLOTS) + #define CYTHON_USE_TYPE_SLOTS 1 + #endif + #ifndef CYTHON_USE_TYPE_SPECS + #define CYTHON_USE_TYPE_SPECS 0 + #endif + #ifndef CYTHON_USE_PYTYPE_LOOKUP + #define CYTHON_USE_PYTYPE_LOOKUP 1 + #endif + #ifndef CYTHON_USE_PYLONG_INTERNALS + #define CYTHON_USE_PYLONG_INTERNALS 1 + #endif + #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING + #undef CYTHON_USE_PYLIST_INTERNALS + #define CYTHON_USE_PYLIST_INTERNALS 0 + #elif !defined(CYTHON_USE_PYLIST_INTERNALS) + #define CYTHON_USE_PYLIST_INTERNALS 1 + #endif + #ifndef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 1 + #endif + #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING || PY_VERSION_HEX >= 0x030B00A2 + #undef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #elif !defined(CYTHON_USE_UNICODE_WRITER) + #define CYTHON_USE_UNICODE_WRITER 1 + #endif + #ifndef CYTHON_AVOID_BORROWED_REFS + #define CYTHON_AVOID_BORROWED_REFS 0 + #endif + #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING + #undef CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS + #define CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS 1 + #elif !defined(CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS) + #define CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS 0 + #endif + #ifndef CYTHON_ASSUME_SAFE_MACROS + #define CYTHON_ASSUME_SAFE_MACROS 1 + #endif + #ifndef CYTHON_ASSUME_SAFE_SIZE + #define CYTHON_ASSUME_SAFE_SIZE 1 + #endif + #ifndef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 1 + #endif + #ifndef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 1 + #endif + #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING + #undef CYTHON_FAST_GIL + #define CYTHON_FAST_GIL 0 + #elif !defined(CYTHON_FAST_GIL) + #define CYTHON_FAST_GIL (PY_VERSION_HEX < 0x030C00A6) + #endif + #ifndef CYTHON_METH_FASTCALL + #define CYTHON_METH_FASTCALL 1 + #endif + #ifndef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 1 + #endif + #ifndef CYTHON_PEP487_INIT_SUBCLASS + #define CYTHON_PEP487_INIT_SUBCLASS 1 + #endif + #ifndef CYTHON_PEP489_MULTI_PHASE_INIT + #define CYTHON_PEP489_MULTI_PHASE_INIT 1 + #endif + #ifndef CYTHON_USE_MODULE_STATE + #define CYTHON_USE_MODULE_STATE 0 + #endif + #ifndef CYTHON_USE_SYS_MONITORING + #define CYTHON_USE_SYS_MONITORING (PY_VERSION_HEX >= 0x030d00B1) + #endif + #ifndef CYTHON_USE_TP_FINALIZE + #define CYTHON_USE_TP_FINALIZE 1 + #endif + #ifndef CYTHON_USE_AM_SEND + #define CYTHON_USE_AM_SEND 1 + #endif + #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING + #undef CYTHON_USE_DICT_VERSIONS + #define CYTHON_USE_DICT_VERSIONS 0 + #elif !defined(CYTHON_USE_DICT_VERSIONS) + #define CYTHON_USE_DICT_VERSIONS (PY_VERSION_HEX < 0x030C00A5 && !CYTHON_USE_MODULE_STATE) + #endif + #ifndef CYTHON_USE_EXC_INFO_STACK + #define CYTHON_USE_EXC_INFO_STACK 1 + #endif + #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC + #define CYTHON_UPDATE_DESCRIPTOR_DOC 1 + #endif + #ifndef CYTHON_USE_FREELISTS + #define CYTHON_USE_FREELISTS (!CYTHON_COMPILING_IN_CPYTHON_FREETHREADING) + #endif + #if defined(CYTHON_IMMORTAL_CONSTANTS) && PY_VERSION_HEX < 0x030C0000 + #undef CYTHON_IMMORTAL_CONSTANTS + #define CYTHON_IMMORTAL_CONSTANTS 0 // definitely won't work + #elif !defined(CYTHON_IMMORTAL_CONSTANTS) + #define CYTHON_IMMORTAL_CONSTANTS (PY_VERSION_HEX >= 0x030C0000 && !CYTHON_USE_MODULE_STATE && CYTHON_COMPILING_IN_CPYTHON_FREETHREADING) + #endif +#endif +#ifndef CYTHON_COMPRESS_STRINGS + #define CYTHON_COMPRESS_STRINGS 1 +#endif +#ifndef CYTHON_FAST_PYCCALL +#define CYTHON_FAST_PYCCALL CYTHON_FAST_PYCALL +#endif +#ifndef CYTHON_VECTORCALL +#if CYTHON_COMPILING_IN_LIMITED_API +#define CYTHON_VECTORCALL (__PYX_LIMITED_VERSION_HEX >= 0x030C0000) +#else +#define CYTHON_VECTORCALL (CYTHON_FAST_PYCCALL) +#endif +#endif +#if CYTHON_USE_PYLONG_INTERNALS + #undef SHIFT + #undef BASE + #undef MASK + #ifdef SIZEOF_VOID_P + enum { __pyx_check_sizeof_voidp = 1 / (int)(SIZEOF_VOID_P == sizeof(void*)) }; + #endif +#endif +#ifndef __has_attribute + #define __has_attribute(x) 0 +#endif +#ifndef __has_cpp_attribute + #define __has_cpp_attribute(x) 0 +#endif +#ifndef CYTHON_RESTRICT + #if defined(__GNUC__) + #define CYTHON_RESTRICT __restrict__ + #elif defined(_MSC_VER) && _MSC_VER >= 1400 + #define CYTHON_RESTRICT __restrict + #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + #define CYTHON_RESTRICT restrict + #else + #define CYTHON_RESTRICT + #endif +#endif +#ifndef CYTHON_UNUSED + #if defined(__cplusplus) + /* for clang __has_cpp_attribute(maybe_unused) is true even before C++17 + * but leads to warnings with -pedantic, since it is a C++17 feature */ + #if ((defined(_MSVC_LANG) && _MSVC_LANG >= 201703L) || __cplusplus >= 201703L) + #if __has_cpp_attribute(maybe_unused) + #define CYTHON_UNUSED [[maybe_unused]] + #endif + #endif + #endif +#endif +#ifndef CYTHON_UNUSED +# if defined(__GNUC__) +# if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) +# define CYTHON_UNUSED __attribute__ ((__unused__)) +# else +# define CYTHON_UNUSED +# endif +# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER)) +# define CYTHON_UNUSED __attribute__ ((__unused__)) +# else +# define CYTHON_UNUSED +# endif +#endif +#ifndef CYTHON_UNUSED_VAR +# if defined(__cplusplus) + template void CYTHON_UNUSED_VAR( const T& ) { } +# else +# define CYTHON_UNUSED_VAR(x) (void)(x) +# endif +#endif +#ifndef CYTHON_MAYBE_UNUSED_VAR + #define CYTHON_MAYBE_UNUSED_VAR(x) CYTHON_UNUSED_VAR(x) +#endif +#ifndef CYTHON_NCP_UNUSED +# if CYTHON_COMPILING_IN_CPYTHON && !CYTHON_COMPILING_IN_CPYTHON_FREETHREADING +# define CYTHON_NCP_UNUSED +# else +# define CYTHON_NCP_UNUSED CYTHON_UNUSED +# endif +#endif +#ifndef CYTHON_USE_CPP_STD_MOVE + #if defined(__cplusplus) && (\ + __cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1600)) + #define CYTHON_USE_CPP_STD_MOVE 1 + #else + #define CYTHON_USE_CPP_STD_MOVE 0 + #endif +#endif +#define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None) +#include +typedef uintptr_t __pyx_uintptr_t; +#ifndef CYTHON_FALLTHROUGH + #if defined(__cplusplus) + /* for clang __has_cpp_attribute(fallthrough) is true even before C++17 + * but leads to warnings with -pedantic, since it is a C++17 feature */ + #if ((defined(_MSVC_LANG) && _MSVC_LANG >= 201703L) || __cplusplus >= 201703L) + #if __has_cpp_attribute(fallthrough) + #define CYTHON_FALLTHROUGH [[fallthrough]] + #endif + #endif + #ifndef CYTHON_FALLTHROUGH + #if __has_cpp_attribute(clang::fallthrough) + #define CYTHON_FALLTHROUGH [[clang::fallthrough]] + #elif __has_cpp_attribute(gnu::fallthrough) + #define CYTHON_FALLTHROUGH [[gnu::fallthrough]] + #endif + #endif + #endif + #ifndef CYTHON_FALLTHROUGH + #if __has_attribute(fallthrough) + #define CYTHON_FALLTHROUGH __attribute__((fallthrough)) + #else + #define CYTHON_FALLTHROUGH + #endif + #endif + #if defined(__clang__) && defined(__apple_build_version__) + #if __apple_build_version__ < 7000000 + #undef CYTHON_FALLTHROUGH + #define CYTHON_FALLTHROUGH + #endif + #endif +#endif +#ifndef Py_UNREACHABLE + #define Py_UNREACHABLE() assert(0); abort() +#endif +#ifdef __cplusplus + template + struct __PYX_IS_UNSIGNED_IMPL {static const bool value = T(0) < T(-1);}; + #define __PYX_IS_UNSIGNED(type) (__PYX_IS_UNSIGNED_IMPL::value) +#else + #define __PYX_IS_UNSIGNED(type) (((type)-1) > 0) +#endif +#if CYTHON_COMPILING_IN_PYPY == 1 + #define __PYX_NEED_TP_PRINT_SLOT (PY_VERSION_HEX < 0x030A0000) +#else + #define __PYX_NEED_TP_PRINT_SLOT (PY_VERSION_HEX < 0x03090000) +#endif +#define __PYX_REINTERPRET_FUNCION(func_pointer, other_pointer) ((func_pointer)(void(*)(void))(other_pointer)) + +/* CInitCode */ +#ifndef CYTHON_INLINE + #if defined(__clang__) + #define CYTHON_INLINE __inline__ __attribute__ ((__unused__)) + #elif defined(__GNUC__) + #define CYTHON_INLINE __inline__ + #elif defined(_MSC_VER) + #define CYTHON_INLINE __inline + #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + #define CYTHON_INLINE inline + #else + #define CYTHON_INLINE + #endif +#endif + +/* PythonCompatibility */ +#define __PYX_BUILD_PY_SSIZE_T "n" +#define CYTHON_FORMAT_SSIZE_T "z" +#define __Pyx_BUILTIN_MODULE_NAME "builtins" +#define __Pyx_DefaultClassType PyType_Type +#if CYTHON_COMPILING_IN_LIMITED_API + #ifndef CO_OPTIMIZED + static int CO_OPTIMIZED; + #endif + #ifndef CO_NEWLOCALS + static int CO_NEWLOCALS; + #endif + #ifndef CO_VARARGS + static int CO_VARARGS; + #endif + #ifndef CO_VARKEYWORDS + static int CO_VARKEYWORDS; + #endif + #ifndef CO_ASYNC_GENERATOR + static int CO_ASYNC_GENERATOR; + #endif + #ifndef CO_GENERATOR + static int CO_GENERATOR; + #endif + #ifndef CO_COROUTINE + static int CO_COROUTINE; + #endif +#else + #ifndef CO_COROUTINE + #define CO_COROUTINE 0x80 + #endif + #ifndef CO_ASYNC_GENERATOR + #define CO_ASYNC_GENERATOR 0x200 + #endif +#endif +static int __Pyx_init_co_variables(void); +#if PY_VERSION_HEX >= 0x030900A4 || defined(Py_IS_TYPE) + #define __Pyx_IS_TYPE(ob, type) Py_IS_TYPE(ob, type) +#else + #define __Pyx_IS_TYPE(ob, type) (((const PyObject*)ob)->ob_type == (type)) +#endif +#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_Is) + #define __Pyx_Py_Is(x, y) Py_Is(x, y) +#else + #define __Pyx_Py_Is(x, y) ((x) == (y)) +#endif +#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsNone) + #define __Pyx_Py_IsNone(ob) Py_IsNone(ob) +#else + #define __Pyx_Py_IsNone(ob) __Pyx_Py_Is((ob), Py_None) +#endif +#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsTrue) + #define __Pyx_Py_IsTrue(ob) Py_IsTrue(ob) +#else + #define __Pyx_Py_IsTrue(ob) __Pyx_Py_Is((ob), Py_True) +#endif +#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsFalse) + #define __Pyx_Py_IsFalse(ob) Py_IsFalse(ob) +#else + #define __Pyx_Py_IsFalse(ob) __Pyx_Py_Is((ob), Py_False) +#endif +#define __Pyx_NoneAsNull(obj) (__Pyx_Py_IsNone(obj) ? NULL : (obj)) +#if PY_VERSION_HEX >= 0x030900F0 && !CYTHON_COMPILING_IN_PYPY + #define __Pyx_PyObject_GC_IsFinalized(o) PyObject_GC_IsFinalized(o) +#else + #define __Pyx_PyObject_GC_IsFinalized(o) _PyGC_FINALIZED(o) +#endif +#ifndef Py_TPFLAGS_CHECKTYPES + #define Py_TPFLAGS_CHECKTYPES 0 +#endif +#ifndef Py_TPFLAGS_HAVE_INDEX + #define Py_TPFLAGS_HAVE_INDEX 0 +#endif +#ifndef Py_TPFLAGS_HAVE_NEWBUFFER + #define Py_TPFLAGS_HAVE_NEWBUFFER 0 +#endif +#ifndef Py_TPFLAGS_HAVE_FINALIZE + #define Py_TPFLAGS_HAVE_FINALIZE 0 +#endif +#ifndef Py_TPFLAGS_SEQUENCE + #define Py_TPFLAGS_SEQUENCE 0 +#endif +#ifndef Py_TPFLAGS_MAPPING + #define Py_TPFLAGS_MAPPING 0 +#endif +#ifndef Py_TPFLAGS_IMMUTABLETYPE + #define Py_TPFLAGS_IMMUTABLETYPE (1UL << 8) +#endif +#ifndef Py_TPFLAGS_DISALLOW_INSTANTIATION + #define Py_TPFLAGS_DISALLOW_INSTANTIATION (1UL << 7) +#endif +#ifndef METH_STACKLESS + #define METH_STACKLESS 0 +#endif +#ifndef METH_FASTCALL + #ifndef METH_FASTCALL + #define METH_FASTCALL 0x80 + #endif + typedef PyObject *(*__Pyx_PyCFunctionFast) (PyObject *self, PyObject *const *args, Py_ssize_t nargs); + typedef PyObject *(*__Pyx_PyCFunctionFastWithKeywords) (PyObject *self, PyObject *const *args, + Py_ssize_t nargs, PyObject *kwnames); +#else + #if PY_VERSION_HEX >= 0x030d00A4 + # define __Pyx_PyCFunctionFast PyCFunctionFast + # define __Pyx_PyCFunctionFastWithKeywords PyCFunctionFastWithKeywords + #else + # define __Pyx_PyCFunctionFast _PyCFunctionFast + # define __Pyx_PyCFunctionFastWithKeywords _PyCFunctionFastWithKeywords + #endif +#endif +#if CYTHON_METH_FASTCALL + #define __Pyx_METH_FASTCALL METH_FASTCALL + #define __Pyx_PyCFunction_FastCall __Pyx_PyCFunctionFast + #define __Pyx_PyCFunction_FastCallWithKeywords __Pyx_PyCFunctionFastWithKeywords +#else + #define __Pyx_METH_FASTCALL METH_VARARGS + #define __Pyx_PyCFunction_FastCall PyCFunction + #define __Pyx_PyCFunction_FastCallWithKeywords PyCFunctionWithKeywords +#endif +#if CYTHON_VECTORCALL + #define __pyx_vectorcallfunc vectorcallfunc + #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET PY_VECTORCALL_ARGUMENTS_OFFSET + #define __Pyx_PyVectorcall_NARGS(n) PyVectorcall_NARGS((size_t)(n)) +#else + #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET 0 + #define __Pyx_PyVectorcall_NARGS(n) ((Py_ssize_t)(n)) +#endif +#if PY_VERSION_HEX >= 0x030900B1 +#define __Pyx_PyCFunction_CheckExact(func) PyCFunction_CheckExact(func) +#else +#define __Pyx_PyCFunction_CheckExact(func) PyCFunction_Check(func) +#endif +#define __Pyx_CyOrPyCFunction_Check(func) PyCFunction_Check(func) +#if CYTHON_COMPILING_IN_CPYTHON +#define __Pyx_CyOrPyCFunction_GET_FUNCTION(func) (((PyCFunctionObject*)(func))->m_ml->ml_meth) +#elif !CYTHON_COMPILING_IN_LIMITED_API +#define __Pyx_CyOrPyCFunction_GET_FUNCTION(func) PyCFunction_GET_FUNCTION(func) +#endif +#if CYTHON_COMPILING_IN_CPYTHON +#define __Pyx_CyOrPyCFunction_GET_FLAGS(func) (((PyCFunctionObject*)(func))->m_ml->ml_flags) +static CYTHON_INLINE PyObject* __Pyx_CyOrPyCFunction_GET_SELF(PyObject *func) { + return (__Pyx_CyOrPyCFunction_GET_FLAGS(func) & METH_STATIC) ? NULL : ((PyCFunctionObject*)func)->m_self; +} +#endif +static CYTHON_INLINE int __Pyx__IsSameCFunction(PyObject *func, void (*cfunc)(void)) { +#if CYTHON_COMPILING_IN_LIMITED_API + return PyCFunction_Check(func) && PyCFunction_GetFunction(func) == (PyCFunction) cfunc; +#else + return PyCFunction_Check(func) && PyCFunction_GET_FUNCTION(func) == (PyCFunction) cfunc; +#endif +} +#define __Pyx_IsSameCFunction(func, cfunc) __Pyx__IsSameCFunction(func, cfunc) +#if PY_VERSION_HEX < 0x03090000 || (CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030A0000) + #define __Pyx_PyType_FromModuleAndSpec(m, s, b) ((void)m, PyType_FromSpecWithBases(s, b)) + typedef PyObject *(*__Pyx_PyCMethod)(PyObject *, PyTypeObject *, PyObject *const *, size_t, PyObject *); +#else + #define __Pyx_PyType_FromModuleAndSpec(m, s, b) PyType_FromModuleAndSpec(m, s, b) + #define __Pyx_PyCMethod PyCMethod +#endif +#ifndef METH_METHOD + #define METH_METHOD 0x200 +#endif +#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc) + #define PyObject_Malloc(s) PyMem_Malloc(s) + #define PyObject_Free(p) PyMem_Free(p) + #define PyObject_Realloc(p) PyMem_Realloc(p) +#endif +#if CYTHON_COMPILING_IN_LIMITED_API + #define __Pyx_PyFrame_SetLineNumber(frame, lineno) +#elif CYTHON_COMPILING_IN_GRAAL && defined(GRAALPY_VERSION_NUM) && GRAALPY_VERSION_NUM > 0x19000000 + #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0) + #define __Pyx_PyFrame_SetLineNumber(frame, lineno) GraalPyFrame_SetLineNumber((frame), (lineno)) +#elif CYTHON_COMPILING_IN_GRAAL + #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0) + #define __Pyx_PyFrame_SetLineNumber(frame, lineno) _PyFrame_SetLineNumber((frame), (lineno)) +#else + #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0) + #define __Pyx_PyFrame_SetLineNumber(frame, lineno) (frame)->f_lineno = (lineno) +#endif +#if CYTHON_COMPILING_IN_LIMITED_API + #define __Pyx_PyThreadState_Current PyThreadState_Get() +#elif !CYTHON_FAST_THREAD_STATE + #define __Pyx_PyThreadState_Current PyThreadState_GET() +#elif PY_VERSION_HEX >= 0x030d00A1 + #define __Pyx_PyThreadState_Current PyThreadState_GetUnchecked() +#else + #define __Pyx_PyThreadState_Current _PyThreadState_UncheckedGet() +#endif +#if CYTHON_USE_MODULE_STATE +static CYTHON_INLINE void *__Pyx__PyModule_GetState(PyObject *op) +{ + void *result; + result = PyModule_GetState(op); + if (!result) + Py_FatalError("Couldn't find the module state"); + return result; +} +#define __Pyx_PyModule_GetState(o) (__pyx_mstatetype *)__Pyx__PyModule_GetState(o) +#else +#define __Pyx_PyModule_GetState(op) ((void)op,__pyx_mstate_global) +#endif +#define __Pyx_PyObject_GetSlot(obj, name, func_ctype) __Pyx_PyType_GetSlot(Py_TYPE((PyObject *) obj), name, func_ctype) +#define __Pyx_PyObject_TryGetSlot(obj, name, func_ctype) __Pyx_PyType_TryGetSlot(Py_TYPE(obj), name, func_ctype) +#define __Pyx_PyObject_GetSubSlot(obj, sub, name, func_ctype) __Pyx_PyType_GetSubSlot(Py_TYPE(obj), sub, name, func_ctype) +#define __Pyx_PyObject_TryGetSubSlot(obj, sub, name, func_ctype) __Pyx_PyType_TryGetSubSlot(Py_TYPE(obj), sub, name, func_ctype) +#if CYTHON_USE_TYPE_SLOTS + #define __Pyx_PyType_GetSlot(type, name, func_ctype) ((type)->name) + #define __Pyx_PyType_TryGetSlot(type, name, func_ctype) __Pyx_PyType_GetSlot(type, name, func_ctype) + #define __Pyx_PyType_GetSubSlot(type, sub, name, func_ctype) (((type)->sub) ? ((type)->sub->name) : NULL) + #define __Pyx_PyType_TryGetSubSlot(type, sub, name, func_ctype) __Pyx_PyType_GetSubSlot(type, sub, name, func_ctype) +#else + #define __Pyx_PyType_GetSlot(type, name, func_ctype) ((func_ctype) PyType_GetSlot((type), Py_##name)) + #define __Pyx_PyType_TryGetSlot(type, name, func_ctype)\ + ((__PYX_LIMITED_VERSION_HEX >= 0x030A0000 ||\ + (PyType_GetFlags(type) & Py_TPFLAGS_HEAPTYPE) || __Pyx_get_runtime_version() >= 0x030A0000) ?\ + __Pyx_PyType_GetSlot(type, name, func_ctype) : NULL) + #define __Pyx_PyType_GetSubSlot(obj, sub, name, func_ctype) __Pyx_PyType_GetSlot(obj, name, func_ctype) + #define __Pyx_PyType_TryGetSubSlot(obj, sub, name, func_ctype) __Pyx_PyType_TryGetSlot(obj, name, func_ctype) +#endif +#if CYTHON_COMPILING_IN_CPYTHON || defined(_PyDict_NewPresized) +#define __Pyx_PyDict_NewPresized(n) ((n <= 8) ? PyDict_New() : _PyDict_NewPresized(n)) +#else +#define __Pyx_PyDict_NewPresized(n) PyDict_New() +#endif +#define __Pyx_PyNumber_Divide(x,y) PyNumber_TrueDivide(x,y) +#define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceTrueDivide(x,y) +#if CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_UNICODE_INTERNALS +#define __Pyx_PyDict_GetItemStrWithError(dict, name) _PyDict_GetItem_KnownHash(dict, name, ((PyASCIIObject *) name)->hash) +static CYTHON_INLINE PyObject * __Pyx_PyDict_GetItemStr(PyObject *dict, PyObject *name) { + PyObject *res = __Pyx_PyDict_GetItemStrWithError(dict, name); + if (res == NULL) PyErr_Clear(); + return res; +} +#elif !CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07020000 +#define __Pyx_PyDict_GetItemStrWithError PyDict_GetItemWithError +#define __Pyx_PyDict_GetItemStr PyDict_GetItem +#else +static CYTHON_INLINE PyObject * __Pyx_PyDict_GetItemStrWithError(PyObject *dict, PyObject *name) { +#if CYTHON_COMPILING_IN_PYPY + return PyDict_GetItem(dict, name); +#else + PyDictEntry *ep; + PyDictObject *mp = (PyDictObject*) dict; + long hash = ((PyStringObject *) name)->ob_shash; + assert(hash != -1); + ep = (mp->ma_lookup)(mp, name, hash); + if (ep == NULL) { + return NULL; + } + return ep->me_value; +#endif +} +#define __Pyx_PyDict_GetItemStr PyDict_GetItem +#endif +#if CYTHON_USE_TYPE_SLOTS + #define __Pyx_PyType_GetFlags(tp) (((PyTypeObject *)tp)->tp_flags) + #define __Pyx_PyType_HasFeature(type, feature) ((__Pyx_PyType_GetFlags(type) & (feature)) != 0) +#else + #define __Pyx_PyType_GetFlags(tp) (PyType_GetFlags((PyTypeObject *)tp)) + #define __Pyx_PyType_HasFeature(type, feature) PyType_HasFeature(type, feature) +#endif +#define __Pyx_PyObject_GetIterNextFunc(iterator) __Pyx_PyObject_GetSlot(iterator, tp_iternext, iternextfunc) +#if CYTHON_USE_TYPE_SPECS +#define __Pyx_PyHeapTypeObject_GC_Del(obj) {\ + PyTypeObject *type = Py_TYPE((PyObject*)obj);\ + assert(__Pyx_PyType_HasFeature(type, Py_TPFLAGS_HEAPTYPE));\ + PyObject_GC_Del(obj);\ + Py_DECREF(type);\ +} +#else +#define __Pyx_PyHeapTypeObject_GC_Del(obj) PyObject_GC_Del(obj) +#endif +#if CYTHON_COMPILING_IN_LIMITED_API + #define __Pyx_PyUnicode_READY(op) (0) + #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_ReadChar(u, i) + #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) ((void)u, 1114111U) + #define __Pyx_PyUnicode_KIND(u) ((void)u, (0)) + #define __Pyx_PyUnicode_DATA(u) ((void*)u) + #define __Pyx_PyUnicode_READ(k, d, i) ((void)k, PyUnicode_ReadChar((PyObject*)(d), i)) + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GetLength(u)) +#else + #if PY_VERSION_HEX >= 0x030C0000 + #define __Pyx_PyUnicode_READY(op) (0) + #else + #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\ + 0 : _PyUnicode_Ready((PyObject *)(op))) + #endif + #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i) + #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) PyUnicode_MAX_CHAR_VALUE(u) + #define __Pyx_PyUnicode_KIND(u) ((int)PyUnicode_KIND(u)) + #define __Pyx_PyUnicode_DATA(u) PyUnicode_DATA(u) + #define __Pyx_PyUnicode_READ(k, d, i) PyUnicode_READ(k, d, i) + #define __Pyx_PyUnicode_WRITE(k, d, i, ch) PyUnicode_WRITE(k, d, i, (Py_UCS4) ch) + #if PY_VERSION_HEX >= 0x030C0000 + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_LENGTH(u)) + #else + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03090000 + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : ((PyCompactUnicodeObject *)(u))->wstr_length)) + #else + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u))) + #endif + #endif +#endif +#if CYTHON_COMPILING_IN_PYPY + #define __Pyx_PyUnicode_Concat(a, b) PyNumber_Add(a, b) + #define __Pyx_PyUnicode_ConcatSafe(a, b) PyNumber_Add(a, b) +#else + #define __Pyx_PyUnicode_Concat(a, b) PyUnicode_Concat(a, b) + #define __Pyx_PyUnicode_ConcatSafe(a, b) ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\ + PyNumber_Add(a, b) : __Pyx_PyUnicode_Concat(a, b)) +#endif +#if CYTHON_COMPILING_IN_PYPY + #if !defined(PyUnicode_DecodeUnicodeEscape) + #define PyUnicode_DecodeUnicodeEscape(s, size, errors) PyUnicode_Decode(s, size, "unicode_escape", errors) + #endif + #if !defined(PyUnicode_Contains) + #define PyUnicode_Contains(u, s) PySequence_Contains(u, s) + #endif + #if !defined(PyByteArray_Check) + #define PyByteArray_Check(obj) PyObject_TypeCheck(obj, &PyByteArray_Type) + #endif + #if !defined(PyObject_Format) + #define PyObject_Format(obj, fmt) PyObject_CallMethod(obj, "__format__", "O", fmt) + #endif +#endif +#define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyUnicode_Check(b) && !PyUnicode_CheckExact(b)))) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b)) +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + #define __Pyx_PySequence_ListKeepNew(obj)\ + (likely(PyList_CheckExact(obj) && PyUnstable_Object_IsUniquelyReferenced(obj)) ? __Pyx_NewRef(obj) : PySequence_List(obj)) +#elif CYTHON_COMPILING_IN_CPYTHON + #define __Pyx_PySequence_ListKeepNew(obj)\ + (likely(PyList_CheckExact(obj) && Py_REFCNT(obj) == 1) ? __Pyx_NewRef(obj) : PySequence_List(obj)) +#else + #define __Pyx_PySequence_ListKeepNew(obj) PySequence_List(obj) +#endif +#ifndef PySet_CheckExact + #define PySet_CheckExact(obj) __Pyx_IS_TYPE(obj, &PySet_Type) +#endif +#if PY_VERSION_HEX >= 0x030900A4 + #define __Pyx_SET_REFCNT(obj, refcnt) Py_SET_REFCNT(obj, refcnt) + #define __Pyx_SET_SIZE(obj, size) Py_SET_SIZE(obj, size) +#else + #define __Pyx_SET_REFCNT(obj, refcnt) Py_REFCNT(obj) = (refcnt) + #define __Pyx_SET_SIZE(obj, size) Py_SIZE(obj) = (size) +#endif +enum __Pyx_ReferenceSharing { + __Pyx_ReferenceSharing_DefinitelyUnique, // We created it so we know it's unshared - no need to check + __Pyx_ReferenceSharing_OwnStrongReference, + __Pyx_ReferenceSharing_FunctionArgument, + __Pyx_ReferenceSharing_SharedReference, // Never trust it to be unshared because it's a global or similar +}; +#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING && PY_VERSION_HEX >= 0x030E0000 +#define __Pyx_IS_UNIQUELY_REFERENCED(o, sharing)\ + (sharing == __Pyx_ReferenceSharing_DefinitelyUnique ? 1 :\ + (sharing == __Pyx_ReferenceSharing_FunctionArgument ? PyUnstable_Object_IsUniqueReferencedTemporary(o) :\ + (sharing == __Pyx_ReferenceSharing_OwnStrongReference ? PyUnstable_Object_IsUniquelyReferenced(o) : 0))) +#elif (CYTHON_COMPILING_IN_CPYTHON && !CYTHON_COMPILING_IN_CPYTHON_FREETHREADING) || CYTHON_COMPILING_IN_LIMITED_API +#define __Pyx_IS_UNIQUELY_REFERENCED(o, sharing) (((void)sharing), Py_REFCNT(o) == 1) +#else +#define __Pyx_IS_UNIQUELY_REFERENCED(o, sharing) (((void)o), ((void)sharing), 0) +#endif +#if CYTHON_AVOID_BORROWED_REFS || CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS + #if __PYX_LIMITED_VERSION_HEX >= 0x030d0000 + #define __Pyx_PyList_GetItemRef(o, i) PyList_GetItemRef(o, i) + #elif CYTHON_COMPILING_IN_LIMITED_API || !CYTHON_ASSUME_SAFE_MACROS + #define __Pyx_PyList_GetItemRef(o, i) (likely((i) >= 0) ? PySequence_GetItem(o, i) : (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL)) + #else + #define __Pyx_PyList_GetItemRef(o, i) PySequence_ITEM(o, i) + #endif +#elif CYTHON_COMPILING_IN_LIMITED_API || !CYTHON_ASSUME_SAFE_MACROS + #if __PYX_LIMITED_VERSION_HEX >= 0x030d0000 + #define __Pyx_PyList_GetItemRef(o, i) PyList_GetItemRef(o, i) + #else + #define __Pyx_PyList_GetItemRef(o, i) __Pyx_XNewRef(PyList_GetItem(o, i)) + #endif +#else + #define __Pyx_PyList_GetItemRef(o, i) __Pyx_NewRef(PyList_GET_ITEM(o, i)) +#endif +#if CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS && !CYTHON_COMPILING_IN_LIMITED_API && CYTHON_ASSUME_SAFE_MACROS + #define __Pyx_PyList_GetItemRefFast(o, i, unsafe_shared) (__Pyx_IS_UNIQUELY_REFERENCED(o, unsafe_shared) ?\ + __Pyx_NewRef(PyList_GET_ITEM(o, i)) : __Pyx_PyList_GetItemRef(o, i)) +#else + #define __Pyx_PyList_GetItemRefFast(o, i, unsafe_shared) __Pyx_PyList_GetItemRef(o, i) +#endif +#if __PYX_LIMITED_VERSION_HEX >= 0x030d0000 +#define __Pyx_PyDict_GetItemRef(dict, key, result) PyDict_GetItemRef(dict, key, result) +#elif CYTHON_AVOID_BORROWED_REFS || CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS +static CYTHON_INLINE int __Pyx_PyDict_GetItemRef(PyObject *dict, PyObject *key, PyObject **result) { + *result = PyObject_GetItem(dict, key); + if (*result == NULL) { + if (PyErr_ExceptionMatches(PyExc_KeyError)) { + PyErr_Clear(); + return 0; + } + return -1; + } + return 1; +} +#else +static CYTHON_INLINE int __Pyx_PyDict_GetItemRef(PyObject *dict, PyObject *key, PyObject **result) { + *result = PyDict_GetItemWithError(dict, key); + if (*result == NULL) { + return PyErr_Occurred() ? -1 : 0; + } + Py_INCREF(*result); + return 1; +} +#endif +#if defined(CYTHON_DEBUG_VISIT_CONST) && CYTHON_DEBUG_VISIT_CONST + #define __Pyx_VISIT_CONST(obj) Py_VISIT(obj) +#else + #define __Pyx_VISIT_CONST(obj) +#endif +#if CYTHON_ASSUME_SAFE_MACROS + #define __Pyx_PySequence_ITEM(o, i) PySequence_ITEM(o, i) + #define __Pyx_PySequence_SIZE(seq) Py_SIZE(seq) + #define __Pyx_PyTuple_SET_ITEM(o, i, v) (PyTuple_SET_ITEM(o, i, v), (0)) + #define __Pyx_PyTuple_GET_ITEM(o, i) PyTuple_GET_ITEM(o, i) + #define __Pyx_PyList_SET_ITEM(o, i, v) (PyList_SET_ITEM(o, i, v), (0)) + #define __Pyx_PyList_GET_ITEM(o, i) PyList_GET_ITEM(o, i) +#else + #define __Pyx_PySequence_ITEM(o, i) PySequence_GetItem(o, i) + #define __Pyx_PySequence_SIZE(seq) PySequence_Size(seq) + #define __Pyx_PyTuple_SET_ITEM(o, i, v) PyTuple_SetItem(o, i, v) + #define __Pyx_PyTuple_GET_ITEM(o, i) PyTuple_GetItem(o, i) + #define __Pyx_PyList_SET_ITEM(o, i, v) PyList_SetItem(o, i, v) + #define __Pyx_PyList_GET_ITEM(o, i) PyList_GetItem(o, i) +#endif +#if CYTHON_ASSUME_SAFE_SIZE + #define __Pyx_PyTuple_GET_SIZE(o) PyTuple_GET_SIZE(o) + #define __Pyx_PyList_GET_SIZE(o) PyList_GET_SIZE(o) + #define __Pyx_PySet_GET_SIZE(o) PySet_GET_SIZE(o) + #define __Pyx_PyBytes_GET_SIZE(o) PyBytes_GET_SIZE(o) + #define __Pyx_PyByteArray_GET_SIZE(o) PyByteArray_GET_SIZE(o) + #define __Pyx_PyUnicode_GET_LENGTH(o) PyUnicode_GET_LENGTH(o) +#else + #define __Pyx_PyTuple_GET_SIZE(o) PyTuple_Size(o) + #define __Pyx_PyList_GET_SIZE(o) PyList_Size(o) + #define __Pyx_PySet_GET_SIZE(o) PySet_Size(o) + #define __Pyx_PyBytes_GET_SIZE(o) PyBytes_Size(o) + #define __Pyx_PyByteArray_GET_SIZE(o) PyByteArray_Size(o) + #define __Pyx_PyUnicode_GET_LENGTH(o) PyUnicode_GetLength(o) +#endif +#if CYTHON_COMPILING_IN_PYPY && !defined(PyUnicode_InternFromString) + #define PyUnicode_InternFromString(s) PyUnicode_FromString(s) +#endif +#define __Pyx_PyLong_FromHash_t PyLong_FromSsize_t +#define __Pyx_PyLong_AsHash_t __Pyx_PyIndex_AsSsize_t +#if __PYX_LIMITED_VERSION_HEX >= 0x030A0000 + #define __Pyx_PySendResult PySendResult +#else + typedef enum { + PYGEN_RETURN = 0, + PYGEN_ERROR = -1, + PYGEN_NEXT = 1, + } __Pyx_PySendResult; +#endif +#if CYTHON_COMPILING_IN_LIMITED_API || PY_VERSION_HEX < 0x030A00A3 + typedef __Pyx_PySendResult (*__Pyx_pyiter_sendfunc)(PyObject *iter, PyObject *value, PyObject **result); +#else + #define __Pyx_pyiter_sendfunc sendfunc +#endif +#if !CYTHON_USE_AM_SEND +#define __PYX_HAS_PY_AM_SEND 0 +#elif __PYX_LIMITED_VERSION_HEX >= 0x030A0000 +#define __PYX_HAS_PY_AM_SEND 1 +#else +#define __PYX_HAS_PY_AM_SEND 2 // our own backported implementation +#endif +#if __PYX_HAS_PY_AM_SEND < 2 + #define __Pyx_PyAsyncMethodsStruct PyAsyncMethods +#else + typedef struct { + unaryfunc am_await; + unaryfunc am_aiter; + unaryfunc am_anext; + __Pyx_pyiter_sendfunc am_send; + } __Pyx_PyAsyncMethodsStruct; + #define __Pyx_SlotTpAsAsync(s) ((PyAsyncMethods*)(s)) +#endif +#if CYTHON_USE_AM_SEND && PY_VERSION_HEX < 0x030A00F0 + #define __Pyx_TPFLAGS_HAVE_AM_SEND (1UL << 21) +#else + #define __Pyx_TPFLAGS_HAVE_AM_SEND (0) +#endif +#if PY_VERSION_HEX >= 0x03090000 +#define __Pyx_PyInterpreterState_Get() PyInterpreterState_Get() +#else +#define __Pyx_PyInterpreterState_Get() PyThreadState_Get()->interp +#endif +#if CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030A0000 +#ifdef __cplusplus +extern "C" +#endif +PyAPI_FUNC(void *) PyMem_Calloc(size_t nelem, size_t elsize); +#endif +#if CYTHON_COMPILING_IN_LIMITED_API +static int __Pyx_init_co_variable(PyObject *inspect, const char* name, int *write_to) { + int value; + PyObject *py_value = PyObject_GetAttrString(inspect, name); + if (!py_value) return 0; + value = (int) PyLong_AsLong(py_value); + Py_DECREF(py_value); + *write_to = value; + return value != -1 || !PyErr_Occurred(); +} +static int __Pyx_init_co_variables(void) { + PyObject *inspect; + int result; + inspect = PyImport_ImportModule("inspect"); + result = +#if !defined(CO_OPTIMIZED) + __Pyx_init_co_variable(inspect, "CO_OPTIMIZED", &CO_OPTIMIZED) && +#endif +#if !defined(CO_NEWLOCALS) + __Pyx_init_co_variable(inspect, "CO_NEWLOCALS", &CO_NEWLOCALS) && +#endif +#if !defined(CO_VARARGS) + __Pyx_init_co_variable(inspect, "CO_VARARGS", &CO_VARARGS) && +#endif +#if !defined(CO_VARKEYWORDS) + __Pyx_init_co_variable(inspect, "CO_VARKEYWORDS", &CO_VARKEYWORDS) && +#endif +#if !defined(CO_ASYNC_GENERATOR) + __Pyx_init_co_variable(inspect, "CO_ASYNC_GENERATOR", &CO_ASYNC_GENERATOR) && +#endif +#if !defined(CO_GENERATOR) + __Pyx_init_co_variable(inspect, "CO_GENERATOR", &CO_GENERATOR) && +#endif +#if !defined(CO_COROUTINE) + __Pyx_init_co_variable(inspect, "CO_COROUTINE", &CO_COROUTINE) && +#endif + 1; + Py_DECREF(inspect); + return result ? 0 : -1; +} +#else +static int __Pyx_init_co_variables(void) { + return 0; // It's a limited API-only feature +} +#endif + +/* MathInitCode */ +#if defined(_WIN32) || defined(WIN32) || defined(MS_WINDOWS) + #ifndef _USE_MATH_DEFINES + #define _USE_MATH_DEFINES + #endif +#endif +#include +#if defined(__CYGWIN__) && defined(_LDBL_EQ_DBL) +#define __Pyx_truncl trunc +#else +#define __Pyx_truncl truncl +#endif + +#ifndef CYTHON_CLINE_IN_TRACEBACK_RUNTIME +#define CYTHON_CLINE_IN_TRACEBACK_RUNTIME 0 +#endif +#ifndef CYTHON_CLINE_IN_TRACEBACK +#define CYTHON_CLINE_IN_TRACEBACK CYTHON_CLINE_IN_TRACEBACK_RUNTIME +#endif +#if CYTHON_CLINE_IN_TRACEBACK +#define __PYX_MARK_ERR_POS(f_index, lineno) { __pyx_filename = __pyx_f[f_index]; (void) __pyx_filename; __pyx_lineno = lineno; (void) __pyx_lineno; __pyx_clineno = __LINE__; (void) __pyx_clineno; } +#else +#define __PYX_MARK_ERR_POS(f_index, lineno) { __pyx_filename = __pyx_f[f_index]; (void) __pyx_filename; __pyx_lineno = lineno; (void) __pyx_lineno; (void) __pyx_clineno; } +#endif +#define __PYX_ERR(f_index, lineno, Ln_error) \ + { __PYX_MARK_ERR_POS(f_index, lineno) goto Ln_error; } + +#ifdef CYTHON_EXTERN_C + #undef __PYX_EXTERN_C + #define __PYX_EXTERN_C CYTHON_EXTERN_C +#elif defined(__PYX_EXTERN_C) + #ifdef _MSC_VER + #pragma message ("Please do not define the '__PYX_EXTERN_C' macro externally. Use 'CYTHON_EXTERN_C' instead.") + #else + #warning Please do not define the '__PYX_EXTERN_C' macro externally. Use 'CYTHON_EXTERN_C' instead. + #endif +#else + #ifdef __cplusplus + #define __PYX_EXTERN_C extern "C" + #else + #define __PYX_EXTERN_C extern + #endif +#endif + +#define __PYX_HAVE__selectolax__lexbor +#define __PYX_HAVE_API__selectolax__lexbor +/* Early includes */ +#include +#include "lexbor/core/core.h" +#include "lexbor/html/html.h" +#include "lexbor/dom/dom.h" +#include "lexbor/dom/interfaces/element.h" +#include "lexbor/dom/interfaces/document.h" +#include "lexbor/dom/collection.h" +#include "lexbor/css/css.h" +#include "lexbor/tag/tag.h" +#include "lexbor/selectors/selectors.h" +#include +#include +#ifdef _OPENMP +#include +#endif /* _OPENMP */ + +#if defined(PYREX_WITHOUT_ASSERTIONS) && !defined(CYTHON_WITHOUT_ASSERTIONS) +#define CYTHON_WITHOUT_ASSERTIONS +#endif + +#define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0 +#define __PYX_DEFAULT_STRING_ENCODING_IS_UTF8 0 +#define __PYX_DEFAULT_STRING_ENCODING "" +#define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString +#define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize +#define __Pyx_uchar_cast(c) ((unsigned char)c) +#define __Pyx_long_cast(x) ((long)x) +#define __Pyx_fits_Py_ssize_t(v, type, is_signed) (\ + (sizeof(type) < sizeof(Py_ssize_t)) ||\ + (sizeof(type) > sizeof(Py_ssize_t) &&\ + likely(v < (type)PY_SSIZE_T_MAX ||\ + v == (type)PY_SSIZE_T_MAX) &&\ + (!is_signed || likely(v > (type)PY_SSIZE_T_MIN ||\ + v == (type)PY_SSIZE_T_MIN))) ||\ + (sizeof(type) == sizeof(Py_ssize_t) &&\ + (is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\ + v == (type)PY_SSIZE_T_MAX))) ) +static CYTHON_INLINE int __Pyx_is_valid_index(Py_ssize_t i, Py_ssize_t limit) { + return (size_t) i < (size_t) limit; +} +#if defined (__cplusplus) && __cplusplus >= 201103L + #include + #define __Pyx_sst_abs(value) std::abs(value) +#elif SIZEOF_INT >= SIZEOF_SIZE_T + #define __Pyx_sst_abs(value) abs(value) +#elif SIZEOF_LONG >= SIZEOF_SIZE_T + #define __Pyx_sst_abs(value) labs(value) +#elif defined (_MSC_VER) + #define __Pyx_sst_abs(value) ((Py_ssize_t)_abs64(value)) +#elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + #define __Pyx_sst_abs(value) llabs(value) +#elif defined (__GNUC__) + #define __Pyx_sst_abs(value) __builtin_llabs(value) +#else + #define __Pyx_sst_abs(value) ((value<0) ? -value : value) +#endif +static CYTHON_INLINE Py_ssize_t __Pyx_ssize_strlen(const char *s); +static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject*); +static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length); +static CYTHON_INLINE PyObject* __Pyx_PyByteArray_FromString(const char*); +#define __Pyx_PyByteArray_FromStringAndSize(s, l) PyByteArray_FromStringAndSize((const char*)s, l) +#define __Pyx_PyBytes_FromString PyBytes_FromString +#define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize +static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*); +#if CYTHON_ASSUME_SAFE_MACROS + #define __Pyx_PyBytes_AsWritableString(s) ((char*) PyBytes_AS_STRING(s)) + #define __Pyx_PyBytes_AsWritableSString(s) ((signed char*) PyBytes_AS_STRING(s)) + #define __Pyx_PyBytes_AsWritableUString(s) ((unsigned char*) PyBytes_AS_STRING(s)) + #define __Pyx_PyBytes_AsString(s) ((const char*) PyBytes_AS_STRING(s)) + #define __Pyx_PyBytes_AsSString(s) ((const signed char*) PyBytes_AS_STRING(s)) + #define __Pyx_PyBytes_AsUString(s) ((const unsigned char*) PyBytes_AS_STRING(s)) + #define __Pyx_PyByteArray_AsString(s) PyByteArray_AS_STRING(s) +#else + #define __Pyx_PyBytes_AsWritableString(s) ((char*) PyBytes_AsString(s)) + #define __Pyx_PyBytes_AsWritableSString(s) ((signed char*) PyBytes_AsString(s)) + #define __Pyx_PyBytes_AsWritableUString(s) ((unsigned char*) PyBytes_AsString(s)) + #define __Pyx_PyBytes_AsString(s) ((const char*) PyBytes_AsString(s)) + #define __Pyx_PyBytes_AsSString(s) ((const signed char*) PyBytes_AsString(s)) + #define __Pyx_PyBytes_AsUString(s) ((const unsigned char*) PyBytes_AsString(s)) + #define __Pyx_PyByteArray_AsString(s) PyByteArray_AsString(s) +#endif +#define __Pyx_PyObject_AsWritableString(s) ((char*)(__pyx_uintptr_t) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_AsWritableSString(s) ((signed char*)(__pyx_uintptr_t) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_AsWritableUString(s) ((unsigned char*)(__pyx_uintptr_t) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_AsSString(s) ((const signed char*) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_AsUString(s) ((const unsigned char*) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_FromCString(s) __Pyx_PyObject_FromString((const char*)s) +#define __Pyx_PyBytes_FromCString(s) __Pyx_PyBytes_FromString((const char*)s) +#define __Pyx_PyByteArray_FromCString(s) __Pyx_PyByteArray_FromString((const char*)s) +#define __Pyx_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s) +#define __Pyx_PyUnicode_FromOrdinal(o) PyUnicode_FromOrdinal((int)o) +#define __Pyx_PyUnicode_AsUnicode PyUnicode_AsUnicode +static CYTHON_INLINE PyObject *__Pyx_NewRef(PyObject *obj) { +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030a0000 || defined(Py_NewRef) + return Py_NewRef(obj); +#else + Py_INCREF(obj); + return obj; +#endif +} +static CYTHON_INLINE PyObject *__Pyx_XNewRef(PyObject *obj) { +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030a0000 || defined(Py_XNewRef) + return Py_XNewRef(obj); +#else + Py_XINCREF(obj); + return obj; +#endif +} +static CYTHON_INLINE PyObject *__Pyx_Owned_Py_None(int b); +static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b); +static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*); +static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject*); +static CYTHON_INLINE PyObject* __Pyx_PyNumber_Long(PyObject* x); +#define __Pyx_PySequence_Tuple(obj)\ + (likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj)) +static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*); +static CYTHON_INLINE PyObject * __Pyx_PyLong_FromSize_t(size_t); +static CYTHON_INLINE Py_hash_t __Pyx_PyIndex_AsHash_t(PyObject*); +#if CYTHON_ASSUME_SAFE_MACROS +#define __Pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x)) +#define __Pyx_PyFloat_AS_DOUBLE(x) PyFloat_AS_DOUBLE(x) +#else +#define __Pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x) +#define __Pyx_PyFloat_AS_DOUBLE(x) PyFloat_AsDouble(x) +#endif +#define __Pyx_PyFloat_AsFloat(x) ((float) __Pyx_PyFloat_AsDouble(x)) +#define __Pyx_PyNumber_Int(x) (PyLong_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Long(x)) +#if CYTHON_USE_PYLONG_INTERNALS + #if PY_VERSION_HEX >= 0x030C00A7 + #ifndef _PyLong_SIGN_MASK + #define _PyLong_SIGN_MASK 3 + #endif + #ifndef _PyLong_NON_SIZE_BITS + #define _PyLong_NON_SIZE_BITS 3 + #endif + #define __Pyx_PyLong_Sign(x) (((PyLongObject*)x)->long_value.lv_tag & _PyLong_SIGN_MASK) + #define __Pyx_PyLong_IsNeg(x) ((__Pyx_PyLong_Sign(x) & 2) != 0) + #define __Pyx_PyLong_IsNonNeg(x) (!__Pyx_PyLong_IsNeg(x)) + #define __Pyx_PyLong_IsZero(x) (__Pyx_PyLong_Sign(x) & 1) + #define __Pyx_PyLong_IsPos(x) (__Pyx_PyLong_Sign(x) == 0) + #define __Pyx_PyLong_CompactValueUnsigned(x) (__Pyx_PyLong_Digits(x)[0]) + #define __Pyx_PyLong_DigitCount(x) ((Py_ssize_t) (((PyLongObject*)x)->long_value.lv_tag >> _PyLong_NON_SIZE_BITS)) + #define __Pyx_PyLong_SignedDigitCount(x)\ + ((1 - (Py_ssize_t) __Pyx_PyLong_Sign(x)) * __Pyx_PyLong_DigitCount(x)) + #if defined(PyUnstable_Long_IsCompact) && defined(PyUnstable_Long_CompactValue) + #define __Pyx_PyLong_IsCompact(x) PyUnstable_Long_IsCompact((PyLongObject*) x) + #define __Pyx_PyLong_CompactValue(x) PyUnstable_Long_CompactValue((PyLongObject*) x) + #else + #define __Pyx_PyLong_IsCompact(x) (((PyLongObject*)x)->long_value.lv_tag < (2 << _PyLong_NON_SIZE_BITS)) + #define __Pyx_PyLong_CompactValue(x) ((1 - (Py_ssize_t) __Pyx_PyLong_Sign(x)) * (Py_ssize_t) __Pyx_PyLong_Digits(x)[0]) + #endif + typedef Py_ssize_t __Pyx_compact_pylong; + typedef size_t __Pyx_compact_upylong; + #else + #define __Pyx_PyLong_IsNeg(x) (Py_SIZE(x) < 0) + #define __Pyx_PyLong_IsNonNeg(x) (Py_SIZE(x) >= 0) + #define __Pyx_PyLong_IsZero(x) (Py_SIZE(x) == 0) + #define __Pyx_PyLong_IsPos(x) (Py_SIZE(x) > 0) + #define __Pyx_PyLong_CompactValueUnsigned(x) ((Py_SIZE(x) == 0) ? 0 : __Pyx_PyLong_Digits(x)[0]) + #define __Pyx_PyLong_DigitCount(x) __Pyx_sst_abs(Py_SIZE(x)) + #define __Pyx_PyLong_SignedDigitCount(x) Py_SIZE(x) + #define __Pyx_PyLong_IsCompact(x) (Py_SIZE(x) == 0 || Py_SIZE(x) == 1 || Py_SIZE(x) == -1) + #define __Pyx_PyLong_CompactValue(x)\ + ((Py_SIZE(x) == 0) ? (sdigit) 0 : ((Py_SIZE(x) < 0) ? -(sdigit)__Pyx_PyLong_Digits(x)[0] : (sdigit)__Pyx_PyLong_Digits(x)[0])) + typedef sdigit __Pyx_compact_pylong; + typedef digit __Pyx_compact_upylong; + #endif + #if PY_VERSION_HEX >= 0x030C00A5 + #define __Pyx_PyLong_Digits(x) (((PyLongObject*)x)->long_value.ob_digit) + #else + #define __Pyx_PyLong_Digits(x) (((PyLongObject*)x)->ob_digit) + #endif +#endif +#if __PYX_DEFAULT_STRING_ENCODING_IS_UTF8 + #define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL) +#elif __PYX_DEFAULT_STRING_ENCODING_IS_ASCII + #define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeASCII(c_str, size, NULL) +#else + #define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL) +#endif + + +/* Test for GCC > 2.95 */ +#if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))) + #define likely(x) __builtin_expect(!!(x), 1) + #define unlikely(x) __builtin_expect(!!(x), 0) +#else /* !__GNUC__ or GCC < 2.95 */ + #define likely(x) (x) + #define unlikely(x) (x) +#endif /* __GNUC__ */ +/* PretendToInitialize */ +#ifdef __cplusplus +#if __cplusplus > 201103L +#include +#endif +template +static void __Pyx_pretend_to_initialize(T* ptr) { +#if __cplusplus > 201103L + if ((std::is_trivially_default_constructible::value)) +#endif + *ptr = T(); + (void)ptr; +} +#else +static CYTHON_INLINE void __Pyx_pretend_to_initialize(void* ptr) { (void)ptr; } +#endif + + +#if !CYTHON_USE_MODULE_STATE +static PyObject *__pyx_m = NULL; +#endif +static int __pyx_lineno; +static int __pyx_clineno = 0; +static const char * const __pyx_cfilenm = __FILE__; +static const char *__pyx_filename; + +/* #### Code section: filename_table ### */ + +static const char* const __pyx_f[] = { + "selectolax/lexbor.pyx", + "", + "selectolax/utils.pxi", + "selectolax/lexbor/attrs.pxi", + "selectolax/lexbor/node.pxi", + "selectolax/lexbor.pxd", + "selectolax/lexbor/selection.pxi", + "selectolax/lexbor/../utils.pxi", + "selectolax/lexbor/util.pxi", + "cpython/bool.pxd", + "cpython/type.pxd", + "selectolax/base.pxi", +}; +/* #### Code section: utility_code_proto_before_types ### */ +/* Atomics.proto (used by UnpackUnboundCMethod) */ +#include +#ifndef CYTHON_ATOMICS + #define CYTHON_ATOMICS 1 +#endif +#define __PYX_CYTHON_ATOMICS_ENABLED() CYTHON_ATOMICS +#define __PYX_GET_CYTHON_COMPILING_IN_CPYTHON_FREETHREADING() CYTHON_COMPILING_IN_CPYTHON_FREETHREADING +#define __pyx_atomic_int_type int +#define __pyx_nonatomic_int_type int +#if CYTHON_ATOMICS && (defined(__STDC_VERSION__) &&\ + (__STDC_VERSION__ >= 201112L) &&\ + !defined(__STDC_NO_ATOMICS__)) + #include +#elif CYTHON_ATOMICS && (defined(__cplusplus) && (\ + (__cplusplus >= 201103L) ||\ + (defined(_MSC_VER) && _MSC_VER >= 1700))) + #include +#endif +#if CYTHON_ATOMICS && (defined(__STDC_VERSION__) &&\ + (__STDC_VERSION__ >= 201112L) &&\ + !defined(__STDC_NO_ATOMICS__) &&\ + ATOMIC_INT_LOCK_FREE == 2) + #undef __pyx_atomic_int_type + #define __pyx_atomic_int_type atomic_int + #define __pyx_atomic_ptr_type atomic_uintptr_t + #define __pyx_nonatomic_ptr_type uintptr_t + #define __pyx_atomic_incr_relaxed(value) atomic_fetch_add_explicit(value, 1, memory_order_relaxed) + #define __pyx_atomic_incr_acq_rel(value) atomic_fetch_add_explicit(value, 1, memory_order_acq_rel) + #define __pyx_atomic_decr_acq_rel(value) atomic_fetch_sub_explicit(value, 1, memory_order_acq_rel) + #define __pyx_atomic_sub(value, arg) atomic_fetch_sub(value, arg) + #define __pyx_atomic_int_cmp_exchange(value, expected, desired) atomic_compare_exchange_strong(value, expected, desired) + #define __pyx_atomic_load(value) atomic_load(value) + #define __pyx_atomic_store(value, new_value) atomic_store(value, new_value) + #define __pyx_atomic_pointer_load_relaxed(value) atomic_load_explicit(value, memory_order_relaxed) + #define __pyx_atomic_pointer_load_acquire(value) atomic_load_explicit(value, memory_order_acquire) + #define __pyx_atomic_pointer_exchange(value, new_value) atomic_exchange(value, (__pyx_nonatomic_ptr_type)new_value) + #define __pyx_atomic_pointer_cmp_exchange(value, expected, desired) atomic_compare_exchange_strong(value, expected, desired) + #if defined(__PYX_DEBUG_ATOMICS) && defined(_MSC_VER) + #pragma message ("Using standard C atomics") + #elif defined(__PYX_DEBUG_ATOMICS) + #warning "Using standard C atomics" + #endif +#elif CYTHON_ATOMICS && (defined(__cplusplus) && (\ + (__cplusplus >= 201103L) ||\ +\ + (defined(_MSC_VER) && _MSC_VER >= 1700)) &&\ + ATOMIC_INT_LOCK_FREE == 2) + #undef __pyx_atomic_int_type + #define __pyx_atomic_int_type std::atomic_int + #define __pyx_atomic_ptr_type std::atomic_uintptr_t + #define __pyx_nonatomic_ptr_type uintptr_t + #define __pyx_atomic_incr_relaxed(value) std::atomic_fetch_add_explicit(value, 1, std::memory_order_relaxed) + #define __pyx_atomic_incr_acq_rel(value) std::atomic_fetch_add_explicit(value, 1, std::memory_order_acq_rel) + #define __pyx_atomic_decr_acq_rel(value) std::atomic_fetch_sub_explicit(value, 1, std::memory_order_acq_rel) + #define __pyx_atomic_sub(value, arg) std::atomic_fetch_sub(value, arg) + #define __pyx_atomic_int_cmp_exchange(value, expected, desired) std::atomic_compare_exchange_strong(value, expected, desired) + #define __pyx_atomic_load(value) std::atomic_load(value) + #define __pyx_atomic_store(value, new_value) std::atomic_store(value, new_value) + #define __pyx_atomic_pointer_load_relaxed(value) std::atomic_load_explicit(value, std::memory_order_relaxed) + #define __pyx_atomic_pointer_load_acquire(value) std::atomic_load_explicit(value, std::memory_order_acquire) + #define __pyx_atomic_pointer_exchange(value, new_value) std::atomic_exchange(value, (__pyx_nonatomic_ptr_type)new_value) + #define __pyx_atomic_pointer_cmp_exchange(value, expected, desired) std::atomic_compare_exchange_strong(value, expected, desired) + #if defined(__PYX_DEBUG_ATOMICS) && defined(_MSC_VER) + #pragma message ("Using standard C++ atomics") + #elif defined(__PYX_DEBUG_ATOMICS) + #warning "Using standard C++ atomics" + #endif +#elif CYTHON_ATOMICS && (__GNUC__ >= 5 || (__GNUC__ == 4 &&\ + (__GNUC_MINOR__ > 1 ||\ + (__GNUC_MINOR__ == 1 && __GNUC_PATCHLEVEL__ >= 2)))) + #define __pyx_atomic_ptr_type void* + #define __pyx_nonatomic_ptr_type void* + #define __pyx_atomic_incr_relaxed(value) __sync_fetch_and_add(value, 1) + #define __pyx_atomic_incr_acq_rel(value) __sync_fetch_and_add(value, 1) + #define __pyx_atomic_decr_acq_rel(value) __sync_fetch_and_sub(value, 1) + #define __pyx_atomic_sub(value, arg) __sync_fetch_and_sub(value, arg) + static CYTHON_INLINE int __pyx_atomic_int_cmp_exchange(__pyx_atomic_int_type* value, __pyx_nonatomic_int_type* expected, __pyx_nonatomic_int_type desired) { + __pyx_nonatomic_int_type old = __sync_val_compare_and_swap(value, *expected, desired); + int result = old == *expected; + *expected = old; + return result; + } + #define __pyx_atomic_load(value) __sync_fetch_and_add(value, 0) + #define __pyx_atomic_store(value, new_value) __sync_lock_test_and_set(value, new_value) + #define __pyx_atomic_pointer_load_relaxed(value) __sync_fetch_and_add(value, 0) + #define __pyx_atomic_pointer_load_acquire(value) __sync_fetch_and_add(value, 0) + #define __pyx_atomic_pointer_exchange(value, new_value) __sync_lock_test_and_set(value, (__pyx_atomic_ptr_type)new_value) + static CYTHON_INLINE int __pyx_atomic_pointer_cmp_exchange(__pyx_atomic_ptr_type* value, __pyx_nonatomic_ptr_type* expected, __pyx_nonatomic_ptr_type desired) { + __pyx_nonatomic_ptr_type old = __sync_val_compare_and_swap(value, *expected, desired); + int result = old == *expected; + *expected = old; + return result; + } + #ifdef __PYX_DEBUG_ATOMICS + #warning "Using GNU atomics" + #endif +#elif CYTHON_ATOMICS && defined(_MSC_VER) + #include + #undef __pyx_atomic_int_type + #define __pyx_atomic_int_type long + #define __pyx_atomic_ptr_type void* + #undef __pyx_nonatomic_int_type + #define __pyx_nonatomic_int_type long + #define __pyx_nonatomic_ptr_type void* + #pragma intrinsic (_InterlockedExchangeAdd, _InterlockedExchange, _InterlockedCompareExchange, _InterlockedCompareExchangePointer, _InterlockedExchangePointer) + #define __pyx_atomic_incr_relaxed(value) _InterlockedExchangeAdd(value, 1) + #define __pyx_atomic_incr_acq_rel(value) _InterlockedExchangeAdd(value, 1) + #define __pyx_atomic_decr_acq_rel(value) _InterlockedExchangeAdd(value, -1) + #define __pyx_atomic_sub(value, arg) _InterlockedExchangeAdd(value, -arg) + static CYTHON_INLINE int __pyx_atomic_int_cmp_exchange(__pyx_atomic_int_type* value, __pyx_nonatomic_int_type* expected, __pyx_nonatomic_int_type desired) { + __pyx_nonatomic_int_type old = _InterlockedCompareExchange(value, desired, *expected); + int result = old == *expected; + *expected = old; + return result; + } + #define __pyx_atomic_load(value) _InterlockedExchangeAdd(value, 0) + #define __pyx_atomic_store(value, new_value) _InterlockedExchange(value, new_value) + #define __pyx_atomic_pointer_load_relaxed(value) *(void * volatile *)value + #define __pyx_atomic_pointer_load_acquire(value) _InterlockedCompareExchangePointer(value, 0, 0) + #define __pyx_atomic_pointer_exchange(value, new_value) _InterlockedExchangePointer(value, (__pyx_atomic_ptr_type)new_value) + static CYTHON_INLINE int __pyx_atomic_pointer_cmp_exchange(__pyx_atomic_ptr_type* value, __pyx_nonatomic_ptr_type* expected, __pyx_nonatomic_ptr_type desired) { + __pyx_atomic_ptr_type old = _InterlockedCompareExchangePointer(value, desired, *expected); + int result = old == *expected; + *expected = old; + return result; + } + #ifdef __PYX_DEBUG_ATOMICS + #pragma message ("Using MSVC atomics") + #endif +#else + #undef CYTHON_ATOMICS + #define CYTHON_ATOMICS 0 + #ifdef __PYX_DEBUG_ATOMICS + #warning "Not using atomics" + #endif +#endif + +/* CriticalSectionsDefinition.proto (used by CriticalSections) */ +#if !CYTHON_COMPILING_IN_CPYTHON_FREETHREADING +#define __Pyx_PyCriticalSection void* +#define __Pyx_PyCriticalSection2 void* +#define __Pyx_PyCriticalSection_End(cs) +#define __Pyx_PyCriticalSection2_End(cs) +#else +#define __Pyx_PyCriticalSection PyCriticalSection +#define __Pyx_PyCriticalSection2 PyCriticalSection2 +#define __Pyx_PyCriticalSection_End PyCriticalSection_End +#define __Pyx_PyCriticalSection2_End PyCriticalSection2_End +#endif + +/* CriticalSections.proto (used by ParseKeywordsImpl) */ +#if !CYTHON_COMPILING_IN_CPYTHON_FREETHREADING +#define __Pyx_PyCriticalSection_Begin(cs, arg) (void)(cs) +#define __Pyx_PyCriticalSection2_Begin(cs, arg1, arg2) (void)(cs) +#else +#define __Pyx_PyCriticalSection_Begin PyCriticalSection_Begin +#define __Pyx_PyCriticalSection2_Begin PyCriticalSection2_Begin +#endif +#if PY_VERSION_HEX < 0x030d0000 || CYTHON_COMPILING_IN_LIMITED_API +#define __Pyx_BEGIN_CRITICAL_SECTION(o) { +#define __Pyx_END_CRITICAL_SECTION() } +#else +#define __Pyx_BEGIN_CRITICAL_SECTION Py_BEGIN_CRITICAL_SECTION +#define __Pyx_END_CRITICAL_SECTION Py_END_CRITICAL_SECTION +#endif + +/* NoFastGil.proto */ +#define __Pyx_PyGILState_Ensure PyGILState_Ensure +#define __Pyx_PyGILState_Release PyGILState_Release +#define __Pyx_FastGIL_Remember() +#define __Pyx_FastGIL_Forget() +#define __Pyx_FastGilFuncInit() + +/* IncludeStructmemberH.proto (used by FixUpExtensionType) */ +#include + +/* ForceInitThreads.proto */ +#ifndef __PYX_FORCE_INIT_THREADS + #define __PYX_FORCE_INIT_THREADS 0 +#endif + +/* #### Code section: numeric_typedefs ### */ +/* #### Code section: complex_type_declarations ### */ +/* #### Code section: type_declarations ### */ + +/*--- Type declarations ---*/ +struct __pyx_obj_10selectolax_6lexbor_LexborNode; +struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector; +struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser; +struct __pyx_obj_10selectolax_6lexbor_LexborAttributes; +struct __pyx_obj_10selectolax_6lexbor_TextContainer; +struct __pyx_obj_10selectolax_6lexbor_LexborSelector; +struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct____iter__; +struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct_1_items; +struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct_2_values; +struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct_3_iter; +struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct_4_traverse; + +/* "selectolax/lexbor.pxd":240 + * const lxb_char_t *html, size_t size) + * + * cdef class LexborNode: # <<<<<<<<<<<<<< + * cdef: + * lxb_dom_node_t *node +*/ +struct __pyx_obj_10selectolax_6lexbor_LexborNode { + PyObject_HEAD + struct __pyx_vtabstruct_10selectolax_6lexbor_LexborNode *__pyx_vtab; + lxb_dom_node_t *node; + struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *parser; + int _is_fragment_root; +}; + + +/* "selectolax/lexbor.pxd":256 + * + * + * cdef class LexborCSSSelector: # <<<<<<<<<<<<<< + * cdef lxb_css_parser_t* parser + * cdef lxb_selectors_t * selectors +*/ +struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector { + PyObject_HEAD + struct __pyx_vtabstruct_10selectolax_6lexbor_LexborCSSSelector *__pyx_vtab; + lxb_css_parser_t *parser; + lxb_selectors_t *selectors; + lxb_css_selectors_t *css_selectors; + PyObject *results; + struct __pyx_obj_10selectolax_6lexbor_LexborNode *current_node; +}; + + +/* "selectolax/lexbor.pxd":268 + * cpdef int any_matches(self, str query, LexborNode node) except -1 + * + * cdef class LexborHTMLParser: # <<<<<<<<<<<<<< + * cdef lxb_html_document_t *document + * cdef lxb_html_document_t *_fragment_document +*/ +struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser { + PyObject_HEAD + struct __pyx_vtabstruct_10selectolax_6lexbor_LexborHTMLParser *__pyx_vtab; + lxb_html_document_t *document; + lxb_html_document_t *_fragment_document; + int _is_fragment; + PyObject *raw_html; + struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector *_selector; + PyObject *cached_script_texts; + PyObject *cached_script_srcs; +}; + + +/* "selectolax/lexbor/attrs.pxi":4 + * + * + * @cython.final # <<<<<<<<<<<<<< + * cdef class LexborAttributes: + * """A dict-like object that represents attributes.""" +*/ +struct __pyx_obj_10selectolax_6lexbor_LexborAttributes { + PyObject_HEAD + struct __pyx_vtabstruct_10selectolax_6lexbor_LexborAttributes *__pyx_vtab; + lxb_dom_node_t *node; + PyObject *decode_errors; +}; + + +/* "selectolax/lexbor/node.pxi":1090 + * + * + * @cython.internal # <<<<<<<<<<<<<< + * @cython.final + * cdef class TextContainer: +*/ +struct __pyx_obj_10selectolax_6lexbor_TextContainer { + PyObject_HEAD + struct __pyx_vtabstruct_10selectolax_6lexbor_TextContainer *__pyx_vtab; + PyObject *_text; + PyObject *separator; + int strip; +}; + + +/* "selectolax/lexbor/selection.pxi":113 + * + * + * cdef class LexborSelector: # <<<<<<<<<<<<<< + * """An advanced CSS selector that supports additional operations. + * +*/ +struct __pyx_obj_10selectolax_6lexbor_LexborSelector { + PyObject_HEAD + struct __pyx_vtabstruct_10selectolax_6lexbor_LexborSelector *__pyx_vtab; + struct __pyx_obj_10selectolax_6lexbor_LexborNode *node; + PyObject *nodes; +}; + + +/* "selectolax/lexbor/attrs.pxi":16 + * return obj + * + * def __iter__(self): # <<<<<<<<<<<<<< + * cdef lxb_dom_attr_t *attr = lxb_dom_element_first_attribute_noi( self.node) + * cdef size_t str_len = 0 +*/ +struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct____iter__ { + PyObject_HEAD + lxb_dom_attr_t *__pyx_v_attr; + PyObject *__pyx_v_attributes; + lxb_char_t const *__pyx_v_key; + struct __pyx_obj_10selectolax_6lexbor_LexborAttributes *__pyx_v_self; + size_t __pyx_v_str_len; +}; + + +/* "selectolax/lexbor/attrs.pxi":83 + * return self.__iter__() + * + * def items(self): # <<<<<<<<<<<<<< + * for key in self.__iter__(): + * yield key, self[key] +*/ +struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct_1_items { + PyObject_HEAD + PyObject *__pyx_v_key; + struct __pyx_obj_10selectolax_6lexbor_LexborAttributes *__pyx_v_self; + PyObject *__pyx_t_0; + Py_ssize_t __pyx_t_1; + PyObject *(*__pyx_t_2)(PyObject *); +}; + + +/* "selectolax/lexbor/attrs.pxi":87 + * yield key, self[key] + * + * def values(self): # <<<<<<<<<<<<<< + * for key in self.__iter__(): + * yield self[key] +*/ +struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct_2_values { + PyObject_HEAD + PyObject *__pyx_v_key; + struct __pyx_obj_10selectolax_6lexbor_LexborAttributes *__pyx_v_self; + PyObject *__pyx_t_0; + Py_ssize_t __pyx_t_1; + PyObject *(*__pyx_t_2)(PyObject *); +}; + + +/* "selectolax/lexbor/node.pxi":451 + * return None + * + * def iter(self, bool include_text = False, bool skip_empty = False): # <<<<<<<<<<<<<< + * """Iterate over direct children of this node. + * +*/ +struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct_3_iter { + PyObject_HEAD + PyLongObject *__pyx_v_include_text; + struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_next_node; + lxb_dom_node_t *__pyx_v_node; + struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self; + PyLongObject *__pyx_v_skip_empty; +}; + + +/* "selectolax/lexbor/node.pxi":606 + * node = next_node + * + * def traverse(self, bool include_text = False, bool skip_empty = False): # <<<<<<<<<<<<<< + * """Depth-first traversal starting at the current node. + * +*/ +struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct_4_traverse { + PyObject_HEAD + PyLongObject *__pyx_v_include_text; + struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_lxb_node; + lxb_dom_node_t *__pyx_v_node; + lxb_dom_node_t *__pyx_v_root; + struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self; + PyLongObject *__pyx_v_skip_empty; +}; + + + +/* "selectolax/lexbor/node.pxi":31 + * + * + * @cython.final # <<<<<<<<<<<<<< + * cdef class LexborNode: + * """A class that represents HTML node (element).""" +*/ + +struct __pyx_vtabstruct_10selectolax_6lexbor_LexborNode { + struct __pyx_obj_10selectolax_6lexbor_LexborNode *(*__pyx_new)(lxb_dom_node_t *, struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *); + void (*set_as_fragment_root)(struct __pyx_obj_10selectolax_6lexbor_LexborNode *); + struct __pyx_obj_10selectolax_6lexbor_LexborNode *(*_get_node)(struct __pyx_obj_10selectolax_6lexbor_LexborNode *); +}; +static struct __pyx_vtabstruct_10selectolax_6lexbor_LexborNode *__pyx_vtabptr_10selectolax_6lexbor_LexborNode; +static struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_f_10selectolax_6lexbor_10LexborNode_new(lxb_dom_node_t *, struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *); +static void __pyx_f_10selectolax_6lexbor_10LexborNode_set_as_fragment_root(struct __pyx_obj_10selectolax_6lexbor_LexborNode *); +static CYTHON_INLINE struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_f_10selectolax_6lexbor_10LexborNode__get_node(struct __pyx_obj_10selectolax_6lexbor_LexborNode *); + + +/* "selectolax/lexbor/selection.pxi":6 + * + * + * @cython.final # <<<<<<<<<<<<<< + * cdef class LexborCSSSelector: + * +*/ + +struct __pyx_vtabstruct_10selectolax_6lexbor_LexborCSSSelector { + int (*_create_css_parser)(struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector *); + PyObject *(*find)(struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector *, PyObject *, struct __pyx_obj_10selectolax_6lexbor_LexborNode *, int __pyx_skip_dispatch); + PyObject *(*find_first)(struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector *, PyObject *, struct __pyx_obj_10selectolax_6lexbor_LexborNode *, int __pyx_skip_dispatch); + PyObject *(*_find)(struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector *, PyObject *, struct __pyx_obj_10selectolax_6lexbor_LexborNode *, int, int __pyx_skip_dispatch); + int (*any_matches)(struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector *, PyObject *, struct __pyx_obj_10selectolax_6lexbor_LexborNode *, int __pyx_skip_dispatch); +}; +static struct __pyx_vtabstruct_10selectolax_6lexbor_LexborCSSSelector *__pyx_vtabptr_10selectolax_6lexbor_LexborCSSSelector; +static int __pyx_f_10selectolax_6lexbor_17LexborCSSSelector__create_css_parser(struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector *); +static PyObject *__pyx_f_10selectolax_6lexbor_17LexborCSSSelector_find(struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector *, PyObject *, struct __pyx_obj_10selectolax_6lexbor_LexborNode *, int __pyx_skip_dispatch); +static PyObject *__pyx_f_10selectolax_6lexbor_17LexborCSSSelector_find_first(struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector *, PyObject *, struct __pyx_obj_10selectolax_6lexbor_LexborNode *, int __pyx_skip_dispatch); +static PyObject *__pyx_f_10selectolax_6lexbor_17LexborCSSSelector__find(struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector *, PyObject *, struct __pyx_obj_10selectolax_6lexbor_LexborNode *, int, int __pyx_skip_dispatch); +static int __pyx_f_10selectolax_6lexbor_17LexborCSSSelector_any_matches(struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector *, PyObject *, struct __pyx_obj_10selectolax_6lexbor_LexborNode *, int __pyx_skip_dispatch); + + +/* "selectolax/lexbor.pyx":15 + * # We don't inherit from HTMLParser here, because it also includes all the C code from Modest. + * + * cdef class LexborHTMLParser: # <<<<<<<<<<<<<< + * """The lexbor HTML parser. + * +*/ + +struct __pyx_vtabstruct_10selectolax_6lexbor_LexborHTMLParser { + void (*_new_html_document)(struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *); + lxb_status_t (*_parse_html_document)(struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *, char *, size_t); + lxb_status_t (*_parse_html_fragment)(struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *, char *, size_t); + int (*_parse_html)(struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *, char *, size_t); + struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *(*from_document)(lxb_html_document_t *, PyObject *); + lxb_html_document_t *(*main_document)(struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *); +}; +static struct __pyx_vtabstruct_10selectolax_6lexbor_LexborHTMLParser *__pyx_vtabptr_10selectolax_6lexbor_LexborHTMLParser; +static CYTHON_INLINE void __pyx_f_10selectolax_6lexbor_16LexborHTMLParser__new_html_document(struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *); +static CYTHON_INLINE lxb_status_t __pyx_f_10selectolax_6lexbor_16LexborHTMLParser__parse_html_document(struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *, char *, size_t); +static CYTHON_INLINE lxb_status_t __pyx_f_10selectolax_6lexbor_16LexborHTMLParser__parse_html_fragment(struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *, char *, size_t); +static CYTHON_INLINE lxb_html_document_t *__pyx_f_10selectolax_6lexbor_16LexborHTMLParser_main_document(struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *); + + +/* "selectolax/lexbor/attrs.pxi":4 + * + * + * @cython.final # <<<<<<<<<<<<<< + * cdef class LexborAttributes: + * """A dict-like object that represents attributes.""" +*/ + +struct __pyx_vtabstruct_10selectolax_6lexbor_LexborAttributes { + struct __pyx_obj_10selectolax_6lexbor_LexborAttributes *(*create)(lxb_dom_node_t *); +}; +static struct __pyx_vtabstruct_10selectolax_6lexbor_LexborAttributes *__pyx_vtabptr_10selectolax_6lexbor_LexborAttributes; +static struct __pyx_obj_10selectolax_6lexbor_LexborAttributes *__pyx_f_10selectolax_6lexbor_16LexborAttributes_create(lxb_dom_node_t *); + + +/* "selectolax/lexbor/node.pxi":1090 + * + * + * @cython.internal # <<<<<<<<<<<<<< + * @cython.final + * cdef class TextContainer: +*/ + +struct __pyx_vtabstruct_10selectolax_6lexbor_TextContainer { + struct __pyx_obj_10selectolax_6lexbor_TextContainer *(*new_with_defaults)(void); +}; +static struct __pyx_vtabstruct_10selectolax_6lexbor_TextContainer *__pyx_vtabptr_10selectolax_6lexbor_TextContainer; +static struct __pyx_obj_10selectolax_6lexbor_TextContainer *__pyx_f_10selectolax_6lexbor_13TextContainer_new_with_defaults(void); + + +/* "selectolax/lexbor/selection.pxi":113 + * + * + * cdef class LexborSelector: # <<<<<<<<<<<<<< + * """An advanced CSS selector that supports additional operations. + * +*/ + +struct __pyx_vtabstruct_10selectolax_6lexbor_LexborSelector { + PyObject *(*css)(struct __pyx_obj_10selectolax_6lexbor_LexborSelector *, PyObject *, int __pyx_skip_dispatch); +}; +static struct __pyx_vtabstruct_10selectolax_6lexbor_LexborSelector *__pyx_vtabptr_10selectolax_6lexbor_LexborSelector; +/* #### Code section: utility_code_proto ### */ + +/* --- Runtime support code (head) --- */ +/* Refnanny.proto */ +#ifndef CYTHON_REFNANNY + #define CYTHON_REFNANNY 0 +#endif +#if CYTHON_REFNANNY + typedef struct { + void (*INCREF)(void*, PyObject*, Py_ssize_t); + void (*DECREF)(void*, PyObject*, Py_ssize_t); + void (*GOTREF)(void*, PyObject*, Py_ssize_t); + void (*GIVEREF)(void*, PyObject*, Py_ssize_t); + void* (*SetupContext)(const char*, Py_ssize_t, const char*); + void (*FinishContext)(void**); + } __Pyx_RefNannyAPIStruct; + static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL; + static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); + #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL; + #define __Pyx_RefNannySetupContext(name, acquire_gil)\ + if (acquire_gil) {\ + PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ + __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), (__LINE__), (__FILE__));\ + PyGILState_Release(__pyx_gilstate_save);\ + } else {\ + __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), (__LINE__), (__FILE__));\ + } + #define __Pyx_RefNannyFinishContextNogil() {\ + PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ + __Pyx_RefNannyFinishContext();\ + PyGILState_Release(__pyx_gilstate_save);\ + } + #define __Pyx_RefNannyFinishContextNogil() {\ + PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ + __Pyx_RefNannyFinishContext();\ + PyGILState_Release(__pyx_gilstate_save);\ + } + #define __Pyx_RefNannyFinishContext()\ + __Pyx_RefNanny->FinishContext(&__pyx_refnanny) + #define __Pyx_INCREF(r) __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), (__LINE__)) + #define __Pyx_DECREF(r) __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), (__LINE__)) + #define __Pyx_GOTREF(r) __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), (__LINE__)) + #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), (__LINE__)) + #define __Pyx_XINCREF(r) do { if((r) == NULL); else {__Pyx_INCREF(r); }} while(0) + #define __Pyx_XDECREF(r) do { if((r) == NULL); else {__Pyx_DECREF(r); }} while(0) + #define __Pyx_XGOTREF(r) do { if((r) == NULL); else {__Pyx_GOTREF(r); }} while(0) + #define __Pyx_XGIVEREF(r) do { if((r) == NULL); else {__Pyx_GIVEREF(r);}} while(0) +#else + #define __Pyx_RefNannyDeclarations + #define __Pyx_RefNannySetupContext(name, acquire_gil) + #define __Pyx_RefNannyFinishContextNogil() + #define __Pyx_RefNannyFinishContext() + #define __Pyx_INCREF(r) Py_INCREF(r) + #define __Pyx_DECREF(r) Py_DECREF(r) + #define __Pyx_GOTREF(r) + #define __Pyx_GIVEREF(r) + #define __Pyx_XINCREF(r) Py_XINCREF(r) + #define __Pyx_XDECREF(r) Py_XDECREF(r) + #define __Pyx_XGOTREF(r) + #define __Pyx_XGIVEREF(r) +#endif +#define __Pyx_Py_XDECREF_SET(r, v) do {\ + PyObject *tmp = (PyObject *) r;\ + r = v; Py_XDECREF(tmp);\ + } while (0) +#define __Pyx_XDECREF_SET(r, v) do {\ + PyObject *tmp = (PyObject *) r;\ + r = v; __Pyx_XDECREF(tmp);\ + } while (0) +#define __Pyx_DECREF_SET(r, v) do {\ + PyObject *tmp = (PyObject *) r;\ + r = v; __Pyx_DECREF(tmp);\ + } while (0) +#define __Pyx_CLEAR(r) do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0) +#define __Pyx_XCLEAR(r) do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0) + +/* PyErrExceptionMatches.proto (used by PyObjectGetAttrStrNoError) */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_PyErr_ExceptionMatches(err) __Pyx_PyErr_ExceptionMatchesInState(__pyx_tstate, err) +static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err); +#else +#define __Pyx_PyErr_ExceptionMatches(err) PyErr_ExceptionMatches(err) +#endif + +/* PyThreadStateGet.proto (used by PyErrFetchRestore) */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_PyThreadState_declare PyThreadState *__pyx_tstate; +#define __Pyx_PyThreadState_assign __pyx_tstate = __Pyx_PyThreadState_Current; +#if PY_VERSION_HEX >= 0x030C00A6 +#define __Pyx_PyErr_Occurred() (__pyx_tstate->current_exception != NULL) +#define __Pyx_PyErr_CurrentExceptionType() (__pyx_tstate->current_exception ? (PyObject*) Py_TYPE(__pyx_tstate->current_exception) : (PyObject*) NULL) +#else +#define __Pyx_PyErr_Occurred() (__pyx_tstate->curexc_type != NULL) +#define __Pyx_PyErr_CurrentExceptionType() (__pyx_tstate->curexc_type) +#endif +#else +#define __Pyx_PyThreadState_declare +#define __Pyx_PyThreadState_assign +#define __Pyx_PyErr_Occurred() (PyErr_Occurred() != NULL) +#define __Pyx_PyErr_CurrentExceptionType() PyErr_Occurred() +#endif + +/* PyErrFetchRestore.proto (used by PyObjectGetAttrStrNoError) */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL) +#define __Pyx_ErrRestoreWithState(type, value, tb) __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb) +#define __Pyx_ErrFetchWithState(type, value, tb) __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb) +#define __Pyx_ErrRestore(type, value, tb) __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb) +#define __Pyx_ErrFetch(type, value, tb) __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb) +static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); +static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A6 +#define __Pyx_PyErr_SetNone(exc) (Py_INCREF(exc), __Pyx_ErrRestore((exc), NULL, NULL)) +#else +#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) +#endif +#else +#define __Pyx_PyErr_Clear() PyErr_Clear() +#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) +#define __Pyx_ErrRestoreWithState(type, value, tb) PyErr_Restore(type, value, tb) +#define __Pyx_ErrFetchWithState(type, value, tb) PyErr_Fetch(type, value, tb) +#define __Pyx_ErrRestoreInState(tstate, type, value, tb) PyErr_Restore(type, value, tb) +#define __Pyx_ErrFetchInState(tstate, type, value, tb) PyErr_Fetch(type, value, tb) +#define __Pyx_ErrRestore(type, value, tb) PyErr_Restore(type, value, tb) +#define __Pyx_ErrFetch(type, value, tb) PyErr_Fetch(type, value, tb) +#endif + +/* PyObjectGetAttrStr.proto (used by PyObjectGetAttrStrNoError) */ +#if CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name); +#else +#define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n) +#endif + +/* PyObjectGetAttrStrNoError.proto (used by GetBuiltinName) */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name); + +/* GetBuiltinName.proto */ +static PyObject *__Pyx_GetBuiltinName(PyObject *name); + +/* PyObjectCall.proto (used by PyObjectFastCall) */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw); +#else +#define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw) +#endif + +/* PyObjectCallMethO.proto (used by PyObjectFastCall) */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg); +#endif + +/* PyObjectFastCall.proto */ +#define __Pyx_PyObject_FastCall(func, args, nargs) __Pyx_PyObject_FastCallDict(func, args, (size_t)(nargs), NULL) +static CYTHON_INLINE PyObject* __Pyx_PyObject_FastCallDict(PyObject *func, PyObject * const*args, size_t nargs, PyObject *kwargs); + +/* dict_getitem_default.proto */ +static PyObject* __Pyx_PyDict_GetItemDefault(PyObject* d, PyObject* key, PyObject* default_value); + +/* CallCFunction.proto (used by CallUnboundCMethod1) */ +#define __Pyx_CallCFunction(cfunc, self, args)\ + ((PyCFunction)(void(*)(void))(cfunc)->func)(self, args) +#define __Pyx_CallCFunctionWithKeywords(cfunc, self, args, kwargs)\ + ((PyCFunctionWithKeywords)(void(*)(void))(cfunc)->func)(self, args, kwargs) +#define __Pyx_CallCFunctionFast(cfunc, self, args, nargs)\ + ((__Pyx_PyCFunctionFast)(void(*)(void))(PyCFunction)(cfunc)->func)(self, args, nargs) +#define __Pyx_CallCFunctionFastWithKeywords(cfunc, self, args, nargs, kwnames)\ + ((__Pyx_PyCFunctionFastWithKeywords)(void(*)(void))(PyCFunction)(cfunc)->func)(self, args, nargs, kwnames) + +/* PyObjectCall2Args.proto (used by CallUnboundCMethod1) */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2); + +/* UnpackUnboundCMethod.proto (used by CallUnboundCMethod1) */ +typedef struct { + PyObject *type; + PyObject **method_name; +#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING && CYTHON_ATOMICS + __pyx_atomic_int_type initialized; +#endif + PyCFunction func; + PyObject *method; + int flag; +} __Pyx_CachedCFunction; +#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING +static CYTHON_INLINE int __Pyx_CachedCFunction_GetAndSetInitializing(__Pyx_CachedCFunction *cfunc) { +#if !CYTHON_ATOMICS + return 1; +#else + __pyx_nonatomic_int_type expected = 0; + if (__pyx_atomic_int_cmp_exchange(&cfunc->initialized, &expected, 1)) { + return 0; + } + return expected; +#endif +} +static CYTHON_INLINE void __Pyx_CachedCFunction_SetFinishedInitializing(__Pyx_CachedCFunction *cfunc) { +#if CYTHON_ATOMICS + __pyx_atomic_store(&cfunc->initialized, 2); +#endif +} +#else +#define __Pyx_CachedCFunction_GetAndSetInitializing(cfunc) 2 +#define __Pyx_CachedCFunction_SetFinishedInitializing(cfunc) +#endif + +/* CallUnboundCMethod1.proto */ +CYTHON_UNUSED +static PyObject* __Pyx__CallUnboundCMethod1(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg); +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_CallUnboundCMethod1(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg); +#else +#define __Pyx_CallUnboundCMethod1(cfunc, self, arg) __Pyx__CallUnboundCMethod1(cfunc, self, arg) +#endif + +/* CallUnboundCMethod2.proto */ +CYTHON_UNUSED +static PyObject* __Pyx__CallUnboundCMethod2(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg1, PyObject* arg2); +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject *__Pyx_CallUnboundCMethod2(__Pyx_CachedCFunction *cfunc, PyObject *self, PyObject *arg1, PyObject *arg2); +#else +#define __Pyx_CallUnboundCMethod2(cfunc, self, arg1, arg2) __Pyx__CallUnboundCMethod2(cfunc, self, arg1, arg2) +#endif + +/* PyTypeError_Check.proto */ +#define __Pyx_PyExc_TypeError_Check(obj) __Pyx_TypeCheck(obj, PyExc_TypeError) + +/* RaiseException.export */ +static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause); + +/* TupleAndListFromArray.proto (used by fastcall) */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyList_FromArray(PyObject *const *src, Py_ssize_t n); +#endif +#if CYTHON_COMPILING_IN_CPYTHON || CYTHON_METH_FASTCALL +static CYTHON_INLINE PyObject* __Pyx_PyTuple_FromArray(PyObject *const *src, Py_ssize_t n); +#endif + +/* IncludeStringH.proto (used by BytesEquals) */ +#include + +/* BytesEquals.proto (used by UnicodeEquals) */ +static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals); + +/* UnicodeEquals.proto (used by fastcall) */ +static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals); + +/* fastcall.proto */ +#if CYTHON_AVOID_BORROWED_REFS + #define __Pyx_ArgRef_VARARGS(args, i) __Pyx_PySequence_ITEM(args, i) +#elif CYTHON_ASSUME_SAFE_MACROS + #define __Pyx_ArgRef_VARARGS(args, i) __Pyx_NewRef(__Pyx_PyTuple_GET_ITEM(args, i)) +#else + #define __Pyx_ArgRef_VARARGS(args, i) __Pyx_XNewRef(PyTuple_GetItem(args, i)) +#endif +#define __Pyx_NumKwargs_VARARGS(kwds) PyDict_Size(kwds) +#define __Pyx_KwValues_VARARGS(args, nargs) NULL +#define __Pyx_GetKwValue_VARARGS(kw, kwvalues, s) __Pyx_PyDict_GetItemStrWithError(kw, s) +#define __Pyx_KwargsAsDict_VARARGS(kw, kwvalues) PyDict_Copy(kw) +#if CYTHON_METH_FASTCALL + #define __Pyx_ArgRef_FASTCALL(args, i) __Pyx_NewRef(args[i]) + #define __Pyx_NumKwargs_FASTCALL(kwds) __Pyx_PyTuple_GET_SIZE(kwds) + #define __Pyx_KwValues_FASTCALL(args, nargs) ((args) + (nargs)) + static CYTHON_INLINE PyObject * __Pyx_GetKwValue_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues, PyObject *s); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030d0000 || CYTHON_COMPILING_IN_LIMITED_API + CYTHON_UNUSED static PyObject *__Pyx_KwargsAsDict_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues); + #else + #define __Pyx_KwargsAsDict_FASTCALL(kw, kwvalues) _PyStack_AsDict(kwvalues, kw) + #endif +#else + #define __Pyx_ArgRef_FASTCALL __Pyx_ArgRef_VARARGS + #define __Pyx_NumKwargs_FASTCALL __Pyx_NumKwargs_VARARGS + #define __Pyx_KwValues_FASTCALL __Pyx_KwValues_VARARGS + #define __Pyx_GetKwValue_FASTCALL __Pyx_GetKwValue_VARARGS + #define __Pyx_KwargsAsDict_FASTCALL __Pyx_KwargsAsDict_VARARGS +#endif +#define __Pyx_ArgsSlice_VARARGS(args, start, stop) PyTuple_GetSlice(args, start, stop) +#if CYTHON_METH_FASTCALL || (CYTHON_COMPILING_IN_CPYTHON && CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS) +#define __Pyx_ArgsSlice_FASTCALL(args, start, stop) __Pyx_PyTuple_FromArray(args + start, stop - start) +#else +#define __Pyx_ArgsSlice_FASTCALL(args, start, stop) PyTuple_GetSlice(args, start, stop) +#endif + +/* py_dict_items.proto (used by OwnedDictNext) */ +static CYTHON_INLINE PyObject* __Pyx_PyDict_Items(PyObject* d); + +/* PyObjectCallOneArg.proto (used by CallUnboundCMethod0) */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg); + +/* CallUnboundCMethod0.proto */ +CYTHON_UNUSED +static PyObject* __Pyx__CallUnboundCMethod0(__Pyx_CachedCFunction* cfunc, PyObject* self); +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_CallUnboundCMethod0(__Pyx_CachedCFunction* cfunc, PyObject* self); +#else +#define __Pyx_CallUnboundCMethod0(cfunc, self) __Pyx__CallUnboundCMethod0(cfunc, self) +#endif + +/* py_dict_values.proto (used by OwnedDictNext) */ +static CYTHON_INLINE PyObject* __Pyx_PyDict_Values(PyObject* d); + +/* OwnedDictNext.proto (used by ParseKeywordsImpl) */ +#if CYTHON_AVOID_BORROWED_REFS +static int __Pyx_PyDict_NextRef(PyObject *p, PyObject **ppos, PyObject **pkey, PyObject **pvalue); +#else +CYTHON_INLINE +static int __Pyx_PyDict_NextRef(PyObject *p, Py_ssize_t *ppos, PyObject **pkey, PyObject **pvalue); +#endif + +/* RaiseDoubleKeywords.proto (used by ParseKeywordsImpl) */ +static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name); + +/* ParseKeywordsImpl.export */ +static int __Pyx_ParseKeywordsTuple( + PyObject *kwds, + PyObject * const *kwvalues, + PyObject ** const argnames[], + PyObject *kwds2, + PyObject *values[], + Py_ssize_t num_pos_args, + Py_ssize_t num_kwargs, + const char* function_name, + int ignore_unknown_kwargs +); +static int __Pyx_ParseKeywordDictToDict( + PyObject *kwds, + PyObject ** const argnames[], + PyObject *kwds2, + PyObject *values[], + Py_ssize_t num_pos_args, + const char* function_name +); +static int __Pyx_ParseKeywordDict( + PyObject *kwds, + PyObject ** const argnames[], + PyObject *values[], + Py_ssize_t num_pos_args, + Py_ssize_t num_kwargs, + const char* function_name, + int ignore_unknown_kwargs +); + +/* ParseKeywords.proto */ +static CYTHON_INLINE int __Pyx_ParseKeywords( + PyObject *kwds, PyObject *const *kwvalues, PyObject ** const argnames[], + PyObject *kwds2, PyObject *values[], + Py_ssize_t num_pos_args, Py_ssize_t num_kwargs, + const char* function_name, + int ignore_unknown_kwargs +); + +/* RaiseArgTupleInvalid.proto */ +static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact, + Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); + +/* PyObjectVectorCallKwBuilder.proto (used by PyObjectVectorCallMethodKwBuilder) */ +CYTHON_UNUSED static int __Pyx_VectorcallBuilder_AddArg_Check(PyObject *key, PyObject *value, PyObject *builder, PyObject **args, int n); +#if CYTHON_VECTORCALL +#if PY_VERSION_HEX >= 0x03090000 +#define __Pyx_Object_Vectorcall_CallFromBuilder PyObject_Vectorcall +#else +#define __Pyx_Object_Vectorcall_CallFromBuilder _PyObject_Vectorcall +#endif +#define __Pyx_MakeVectorcallBuilderKwds(n) PyTuple_New(n) +static int __Pyx_VectorcallBuilder_AddArg(PyObject *key, PyObject *value, PyObject *builder, PyObject **args, int n); +static int __Pyx_VectorcallBuilder_AddArgStr(const char *key, PyObject *value, PyObject *builder, PyObject **args, int n); +#else +#define __Pyx_Object_Vectorcall_CallFromBuilder __Pyx_PyObject_FastCallDict +#define __Pyx_MakeVectorcallBuilderKwds(n) __Pyx_PyDict_NewPresized(n) +#define __Pyx_VectorcallBuilder_AddArg(key, value, builder, args, n) PyDict_SetItem(builder, key, value) +#define __Pyx_VectorcallBuilder_AddArgStr(key, value, builder, args, n) PyDict_SetItemString(builder, key, value) +#endif + +/* PyObjectVectorCallMethodKwBuilder.proto */ +#if CYTHON_VECTORCALL && PY_VERSION_HEX >= 0x03090000 +#define __Pyx_Object_VectorcallMethod_CallFromBuilder PyObject_VectorcallMethod +#else +static PyObject *__Pyx_Object_VectorcallMethod_CallFromBuilder(PyObject *name, PyObject *const *args, size_t nargsf, PyObject *kwnames); +#endif + +/* PyDictVersioning.proto (used by GetModuleGlobalName) */ +#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS +#define __PYX_DICT_VERSION_INIT ((PY_UINT64_T) -1) +#define __PYX_GET_DICT_VERSION(dict) (((PyDictObject*)(dict))->ma_version_tag) +#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)\ + (version_var) = __PYX_GET_DICT_VERSION(dict);\ + (cache_var) = (value); +#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) {\ + static PY_UINT64_T __pyx_dict_version = 0;\ + static PyObject *__pyx_dict_cached_value = NULL;\ + if (likely(__PYX_GET_DICT_VERSION(DICT) == __pyx_dict_version)) {\ + (VAR) = __Pyx_XNewRef(__pyx_dict_cached_value);\ + } else {\ + (VAR) = __pyx_dict_cached_value = (LOOKUP);\ + __pyx_dict_version = __PYX_GET_DICT_VERSION(DICT);\ + }\ +} +static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj); +static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj); +static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version); +#else +#define __PYX_GET_DICT_VERSION(dict) (0) +#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var) +#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) (VAR) = (LOOKUP); +#endif + +/* GetModuleGlobalName.proto */ +#if CYTHON_USE_DICT_VERSIONS +#define __Pyx_GetModuleGlobalName(var, name) do {\ + static PY_UINT64_T __pyx_dict_version = 0;\ + static PyObject *__pyx_dict_cached_value = NULL;\ + (var) = (likely(__pyx_dict_version == __PYX_GET_DICT_VERSION(__pyx_mstate_global->__pyx_d))) ?\ + (likely(__pyx_dict_cached_value) ? __Pyx_NewRef(__pyx_dict_cached_value) : __Pyx_GetBuiltinName(name)) :\ + __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\ +} while(0) +#define __Pyx_GetModuleGlobalNameUncached(var, name) do {\ + PY_UINT64_T __pyx_dict_version;\ + PyObject *__pyx_dict_cached_value;\ + (var) = __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\ +} while(0) +static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value); +#else +#define __Pyx_GetModuleGlobalName(var, name) (var) = __Pyx__GetModuleGlobalName(name) +#define __Pyx_GetModuleGlobalNameUncached(var, name) (var) = __Pyx__GetModuleGlobalName(name) +static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name); +#endif + +/* PyValueError_Check.proto */ +#define __Pyx_PyExc_ValueError_Check(obj) __Pyx_TypeCheck(obj, PyExc_ValueError) + +/* PyObjectFormatSimple.proto */ +#if CYTHON_COMPILING_IN_PYPY + #define __Pyx_PyObject_FormatSimple(s, f) (\ + likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\ + PyObject_Format(s, f)) +#elif CYTHON_USE_TYPE_SLOTS + #define __Pyx_PyObject_FormatSimple(s, f) (\ + likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\ + likely(PyLong_CheckExact(s)) ? PyLong_Type.tp_repr(s) :\ + likely(PyFloat_CheckExact(s)) ? PyFloat_Type.tp_repr(s) :\ + PyObject_Format(s, f)) +#else + #define __Pyx_PyObject_FormatSimple(s, f) (\ + likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\ + PyObject_Format(s, f)) +#endif + +/* JoinPyUnicode.export */ +static PyObject* __Pyx_PyUnicode_Join(PyObject** values, Py_ssize_t value_count, Py_ssize_t result_ulength, + Py_UCS4 max_char); + +/* GetItemInt.proto */ +#define __Pyx_GetItemInt(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck, has_gil, unsafe_shared)\ + (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ + __Pyx_GetItemInt_Fast(o, (Py_ssize_t)i, is_list, wraparound, boundscheck, unsafe_shared) :\ + (is_list ? (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL) :\ + __Pyx_GetItemInt_Generic(o, to_py_func(i)))) +#define __Pyx_GetItemInt_List(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck, has_gil, unsafe_shared)\ + (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ + __Pyx_GetItemInt_List_Fast(o, (Py_ssize_t)i, wraparound, boundscheck, unsafe_shared) :\ + (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL)) +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, + int wraparound, int boundscheck, int unsafe_shared); +#define __Pyx_GetItemInt_Tuple(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck, has_gil, unsafe_shared)\ + (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ + __Pyx_GetItemInt_Tuple_Fast(o, (Py_ssize_t)i, wraparound, boundscheck, unsafe_shared) :\ + (PyErr_SetString(PyExc_IndexError, "tuple index out of range"), (PyObject*)NULL)) +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, + int wraparound, int boundscheck, int unsafe_shared); +static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j); +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, + int is_list, int wraparound, int boundscheck, int unsafe_shared); + +/* HasAttr.proto (used by ImportImpl) */ +#if __PYX_LIMITED_VERSION_HEX >= 0x030d0000 +#define __Pyx_HasAttr(o, n) PyObject_HasAttrWithError(o, n) +#else +static CYTHON_INLINE int __Pyx_HasAttr(PyObject *, PyObject *); +#endif + +/* ImportImpl.export */ +static PyObject *__Pyx__Import(PyObject *name, PyObject *const *imported_names, Py_ssize_t len_imported_names, PyObject *qualname, PyObject *moddict, int level); + +/* Import.proto */ +static CYTHON_INLINE PyObject *__Pyx_Import(PyObject *name, PyObject *const *imported_names, Py_ssize_t len_imported_names, PyObject *qualname, int level); + +/* PyObjectFastCallMethod.proto */ +#if CYTHON_VECTORCALL && PY_VERSION_HEX >= 0x03090000 +#define __Pyx_PyObject_FastCallMethod(name, args, nargsf) PyObject_VectorcallMethod(name, args, nargsf, NULL) +#else +static PyObject *__Pyx_PyObject_FastCallMethod(PyObject *name, PyObject *const *args, size_t nargsf); +#endif + +/* ListExtend.proto */ +static CYTHON_INLINE int __Pyx_PyList_Extend(PyObject* L, PyObject* v) { +#if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00a2 + return PyList_Extend(L, v); +#elif CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030d0000 + PyObject* none = _PyList_Extend((PyListObject*)L, v); + if (unlikely(!none)) + return -1; + Py_DECREF(none); + return 0; +#else + return PyList_SetSlice(L, PY_SSIZE_T_MAX, PY_SSIZE_T_MAX, v); +#endif +} + +/* GetException.proto (used by pep479) */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_GetException(type, value, tb) __Pyx__GetException(__pyx_tstate, type, value, tb) +static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); +#else +static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb); +#endif + +/* pep479.proto */ +static void __Pyx_Generator_Replace_StopIteration(int in_async_gen); + +/* ArgTypeTestFunc.export */ +static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact); + +/* ArgTypeTest.proto */ +#define __Pyx_ArgTypeTest(obj, type, none_allowed, name, exact)\ + ((likely(__Pyx_IS_TYPE(obj, type) | (none_allowed && (obj == Py_None)))) ? 1 :\ + __Pyx__ArgTypeTest(obj, type, name, exact)) + +/* GetTopmostException.proto (used by SaveResetException) */ +#if CYTHON_USE_EXC_INFO_STACK && CYTHON_FAST_THREAD_STATE +static _PyErr_StackItem * __Pyx_PyErr_GetTopmostException(PyThreadState *tstate); +#endif + +/* SaveResetException.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_ExceptionSave(type, value, tb) __Pyx__ExceptionSave(__pyx_tstate, type, value, tb) +static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); +#define __Pyx_ExceptionReset(type, value, tb) __Pyx__ExceptionReset(__pyx_tstate, type, value, tb) +static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); +#else +#define __Pyx_ExceptionSave(type, value, tb) PyErr_GetExcInfo(type, value, tb) +#define __Pyx_ExceptionReset(type, value, tb) PyErr_SetExcInfo(type, value, tb) +#endif + +/* PyKeyError_Check.proto */ +#define __Pyx_PyExc_KeyError_Check(obj) __Pyx_TypeCheck(obj, PyExc_KeyError) + +/* RejectKeywords.export */ +static void __Pyx_RejectKeywords(const char* function_name, PyObject *kwds); + +/* ObjectGetItem.proto */ +#if CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject *key); +#else +#define __Pyx_PyObject_GetItem(obj, key) PyObject_GetItem(obj, key) +#endif + +/* PyObjectFormatAndDecref.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_FormatSimpleAndDecref(PyObject* s, PyObject* f); +static CYTHON_INLINE PyObject* __Pyx_PyObject_FormatAndDecref(PyObject* s, PyObject* f); + +/* BuildPyUnicode.proto (used by COrdinalToPyUnicode) */ +static PyObject* __Pyx_PyUnicode_BuildFromAscii(Py_ssize_t ulength, const char* chars, int clength, + int prepend_sign, char padding_char); + +/* COrdinalToPyUnicode.proto (used by CIntToPyUnicode) */ +static CYTHON_INLINE int __Pyx_CheckUnicodeValue(int value); +static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromOrdinal_Padded(int value, Py_ssize_t width, char padding_char); + +/* GCCDiagnostics.proto (used by CIntToPyUnicode) */ +#if !defined(__INTEL_COMPILER) && defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) +#define __Pyx_HAS_GCC_DIAGNOSTIC +#endif + +/* IncludeStdlibH.proto (used by CIntToPyUnicode) */ +#include + +/* CIntToPyUnicode.proto */ +#define __Pyx_PyUnicode_From_Py_ssize_t(value, width, padding_char, format_char) (\ + ((format_char) == ('c')) ?\ + __Pyx_uchar___Pyx_PyUnicode_From_Py_ssize_t(value, width, padding_char) :\ + __Pyx____Pyx_PyUnicode_From_Py_ssize_t(value, width, padding_char, format_char)\ + ) +static CYTHON_INLINE PyObject* __Pyx_uchar___Pyx_PyUnicode_From_Py_ssize_t(Py_ssize_t value, Py_ssize_t width, char padding_char); +static CYTHON_INLINE PyObject* __Pyx____Pyx_PyUnicode_From_Py_ssize_t(Py_ssize_t value, Py_ssize_t width, char padding_char, char format_char); + +/* RaiseUnboundLocalError.proto */ +static void __Pyx_RaiseUnboundLocalError(const char *varname); + +/* PyRuntimeError_Check.proto */ +#define __Pyx_PyExc_RuntimeError_Check(obj) __Pyx_TypeCheck(obj, PyExc_RuntimeError) + +/* ListAppend.proto (used by append) */ +#if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS +static CYTHON_INLINE int __Pyx_PyList_Append(PyObject* list, PyObject* x) { + PyListObject* L = (PyListObject*) list; + Py_ssize_t len = Py_SIZE(list); + if (likely(L->allocated > len) & likely(len > (L->allocated >> 1))) { + Py_INCREF(x); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030d0000 + L->ob_item[len] = x; + #else + PyList_SET_ITEM(list, len, x); + #endif + __Pyx_SET_SIZE(list, len + 1); + return 0; + } + return PyList_Append(list, x); +} +#else +#define __Pyx_PyList_Append(L,x) PyList_Append(L,x) +#endif + +/* PyObjectGetMethod.proto (used by PyObjectCallMethod1) */ +#if !(CYTHON_VECTORCALL && (__PYX_LIMITED_VERSION_HEX >= 0x030C0000 || (!CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x03090000))) +static int __Pyx_PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **method); +#endif + +/* PyObjectCallMethod1.proto (used by append) */ +static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg); + +/* append.proto */ +static CYTHON_INLINE int __Pyx_PyObject_Append(PyObject* L, PyObject* x); + +/* ExtTypeTest.proto */ +static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type); + +/* PyDictContains.proto */ +static CYTHON_INLINE int __Pyx_PyDict_ContainsTF(PyObject* item, PyObject* dict, int eq) { + int result = PyDict_Contains(dict, item); + return unlikely(result < 0) ? result : (result == (eq == Py_EQ)); +} + +/* DictGetItem.proto */ +#if !CYTHON_COMPILING_IN_PYPY +static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key); +#define __Pyx_PyObject_Dict_GetItem(obj, name)\ + (likely(PyDict_CheckExact(obj)) ?\ + __Pyx_PyDict_GetItem(obj, name) : PyObject_GetItem(obj, name)) +#else +#define __Pyx_PyDict_GetItem(d, key) PyObject_GetItem(d, key) +#define __Pyx_PyObject_Dict_GetItem(obj, name) PyObject_GetItem(obj, name) +#endif + +/* CIntToPyUnicode.proto */ +#define __Pyx_PyUnicode_From_long(value, width, padding_char, format_char) (\ + ((format_char) == ('c')) ?\ + __Pyx_uchar___Pyx_PyUnicode_From_long(value, width, padding_char) :\ + __Pyx____Pyx_PyUnicode_From_long(value, width, padding_char, format_char)\ + ) +static CYTHON_INLINE PyObject* __Pyx_uchar___Pyx_PyUnicode_From_long(long value, Py_ssize_t width, char padding_char); +static CYTHON_INLINE PyObject* __Pyx____Pyx_PyUnicode_From_long(long value, Py_ssize_t width, char padding_char, char format_char); + +/* PyNotImplementedError_Check.proto */ +#define __Pyx_PyExc_NotImplementedError_Check(obj) __Pyx_TypeCheck(obj, PyExc_NotImplementedError) + +/* PySequenceContains.proto */ +static CYTHON_INLINE int __Pyx_PySequence_ContainsTF(PyObject* item, PyObject* seq, int eq) { + int result = PySequence_Contains(seq, item); + return unlikely(result < 0) ? result : (result == (eq == Py_EQ)); +} + +/* PyAttributeError_Check.proto */ +#define __Pyx_PyExc_AttributeError_Check(obj) __Pyx_TypeCheck(obj, PyExc_AttributeError) + +/* PyIndexError_Check.proto */ +#define __Pyx_PyExc_IndexError_Check(obj) __Pyx_TypeCheck(obj, PyExc_IndexError) + +/* UnicodeConcatInPlace.proto */ +# if CYTHON_COMPILING_IN_CPYTHON + #if CYTHON_REFNANNY + #define __Pyx_PyUnicode_ConcatInPlace(left, right, unsafe_shared) __Pyx_PyUnicode_ConcatInPlaceImpl(&left, right, unsafe_shared, __pyx_refnanny) + #else + #define __Pyx_PyUnicode_ConcatInPlace(left, right, unsafe_shared) __Pyx_PyUnicode_ConcatInPlaceImpl(&left, right, unsafe_shared) + #endif + #define __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_DefinitelyUniqueInPlace(left, right) __Pyx_PyUnicode_ConcatInPlace(left, right, __Pyx_ReferenceSharing_DefinitelyUnique) + #define __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlace(left, right) __Pyx_PyUnicode_ConcatInPlace(left, right, __Pyx_ReferenceSharing_OwnStrongReference) + #define __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_FunctionArgumentInPlace(left, right) __Pyx_PyUnicode_ConcatInPlace(left, right, __Pyx_ReferenceSharing_DefinitelyUnique) + #define __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_SharedReferenceInPlace(left, right) __Pyx_PyUnicode_ConcatInPlace(left, right, __Pyx_ReferenceSharing_SharedReference) + static CYTHON_INLINE PyObject *__Pyx_PyUnicode_ConcatInPlaceImpl(PyObject **p_left, PyObject *right, int unsafe_shared + #if CYTHON_REFNANNY + , void* __pyx_refnanny + #endif + ); +#else +#define __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_DefinitelyUniqueInPlace __Pyx_PyUnicode_Concat +#define __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlace __Pyx_PyUnicode_Concat +#define __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_FunctionArgumentInPlace __Pyx_PyUnicode_Concat +#define __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_SharedReferenceInPlace __Pyx_PyUnicode_Concat +#endif +#define __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_DefinitelyUniqueInPlaceSafe(left, right)\ + ((unlikely((left) == Py_None) || unlikely((right) == Py_None)) ?\ + PyNumber_InPlaceAdd(left, right) : __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_DefinitelyUniqueInPlace(left, right)) +#define __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlaceSafe(left, right)\ + ((unlikely((left) == Py_None) || unlikely((right) == Py_None)) ?\ + PyNumber_InPlaceAdd(left, right) : __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlace(left, right)) +#define __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_FunctionArgumentInPlaceSafe(left, right)\ + ((unlikely((left) == Py_None) || unlikely((right) == Py_None)) ?\ + PyNumber_InPlaceAdd(left, right) : __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_FunctionArgumentInPlace(left, right)) +#define __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_SharedReferenceInPlaceSafe(left, right)\ + ((unlikely((left) == Py_None) || unlikely((right) == Py_None)) ?\ + PyNumber_InPlaceAdd(left, right) : __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_SharedReferenceInPlace(left, right)) + +/* unicode_tailmatch.proto */ +static int __Pyx_PyUnicode_Tailmatch( + PyObject* s, PyObject* substr, Py_ssize_t start, Py_ssize_t end, int direction); + +/* PyUnicode_Substring.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyUnicode_Substring( + PyObject* text, Py_ssize_t start, Py_ssize_t stop); + +/* GetAttr3.proto */ +static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *, PyObject *, PyObject *); + +/* RaiseUnexpectedTypeError.proto */ +static int __Pyx_RaiseUnexpectedTypeError(const char *expected, PyObject *obj); + +/* SliceObject.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetSlice( + PyObject* obj, Py_ssize_t cstart, Py_ssize_t cstop, + PyObject** py_start, PyObject** py_stop, PyObject** py_slice, + int has_cstart, int has_cstop, int wraparound); + +/* RaiseTooManyValuesToUnpack.proto */ +static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected); + +/* RaiseNeedMoreValuesToUnpack.proto */ +static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index); + +/* IterFinish.proto */ +static CYTHON_INLINE int __Pyx_IterFinish(void); + +/* UnpackItemEndCheck.proto */ +static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected); + +/* ErrOccurredWithGIL.proto */ +static CYTHON_INLINE int __Pyx_ErrOccurredWithGIL(void); + +/* PyObjectDelAttr.proto (used by PyObjectSetAttrStr) */ +#if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030d0000 +#define __Pyx_PyObject_DelAttr(o, n) PyObject_SetAttr(o, n, NULL) +#else +#define __Pyx_PyObject_DelAttr(o, n) PyObject_DelAttr(o, n) +#endif + +/* PyObjectSetAttrStr.proto */ +#if CYTHON_USE_TYPE_SLOTS +#define __Pyx_PyObject_DelAttrStr(o,n) __Pyx_PyObject_SetAttrStr(o, n, NULL) +static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr_name, PyObject* value); +#else +#define __Pyx_PyObject_DelAttrStr(o,n) __Pyx_PyObject_DelAttr(o,n) +#define __Pyx_PyObject_SetAttrStr(o,n,v) PyObject_SetAttr(o,n,v) +#endif + +/* PyUnicode_Unicode.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyUnicode_Unicode(PyObject *obj); + +/* AllocateExtensionType.proto */ +static PyObject *__Pyx_AllocateExtensionType(PyTypeObject *t, int is_final); + +/* CallTypeTraverse.proto */ +#if !CYTHON_USE_TYPE_SPECS || (!CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x03090000) +#define __Pyx_call_type_traverse(o, always_call, visit, arg) 0 +#else +static int __Pyx_call_type_traverse(PyObject *o, int always_call, visitproc visit, void *arg); +#endif + +/* CheckTypeForFreelists.proto */ +#if CYTHON_USE_FREELISTS +#if CYTHON_USE_TYPE_SPECS +#define __PYX_CHECK_FINAL_TYPE_FOR_FREELISTS(t, expected_tp, expected_size) ((int) ((t) == (expected_tp))) +#define __PYX_CHECK_TYPE_FOR_FREELIST_FLAGS Py_TPFLAGS_IS_ABSTRACT +#else +#define __PYX_CHECK_FINAL_TYPE_FOR_FREELISTS(t, expected_tp, expected_size) ((int) ((t)->tp_basicsize == (expected_size))) +#define __PYX_CHECK_TYPE_FOR_FREELIST_FLAGS (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE) +#endif +#define __PYX_CHECK_TYPE_FOR_FREELISTS(t, expected_tp, expected_size)\ + (__PYX_CHECK_FINAL_TYPE_FOR_FREELISTS((t), (expected_tp), (expected_size)) &\ + (int) (!__Pyx_PyType_HasFeature((t), __PYX_CHECK_TYPE_FOR_FREELIST_FLAGS))) +#endif + +/* FunctionExport.proto */ +static int __Pyx_ExportFunction(PyObject *api_dict, const char *name, void (*f)(void), const char *sig); + +/* GetApiDict.proto */ +static PyObject *__Pyx_ApiExport_GetApiDict(void); + +/* LimitedApiGetTypeDict.proto (used by SetItemOnTypeDict) */ +#if CYTHON_COMPILING_IN_LIMITED_API +static PyObject *__Pyx_GetTypeDict(PyTypeObject *tp); +#endif + +/* SetItemOnTypeDict.proto (used by FixUpExtensionType) */ +static int __Pyx__SetItemOnTypeDict(PyTypeObject *tp, PyObject *k, PyObject *v); +#define __Pyx_SetItemOnTypeDict(tp, k, v) __Pyx__SetItemOnTypeDict((PyTypeObject*)tp, k, v) + +/* FixUpExtensionType.proto */ +static CYTHON_INLINE int __Pyx_fix_up_extension_type_from_spec(PyType_Spec *spec, PyTypeObject *type); + +/* PyObjectCallNoArg.proto (used by PyObjectCallMethod0) */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func); + +/* PyObjectCallMethod0.proto (used by PyType_Ready) */ +static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name); + +/* ValidateBasesTuple.proto (used by PyType_Ready) */ +#if CYTHON_COMPILING_IN_CPYTHON || CYTHON_COMPILING_IN_LIMITED_API || CYTHON_USE_TYPE_SPECS +static int __Pyx_validate_bases_tuple(const char *type_name, Py_ssize_t dictoffset, PyObject *bases); +#endif + +/* PyType_Ready.proto */ +CYTHON_UNUSED static int __Pyx_PyType_Ready(PyTypeObject *t); + +/* SetVTable.proto */ +static int __Pyx_SetVtable(PyTypeObject* typeptr , void* vtable); + +/* GetVTable.proto (used by MergeVTables) */ +static void* __Pyx_GetVtable(PyTypeObject *type); + +/* MergeVTables.proto */ +static int __Pyx_MergeVtables(PyTypeObject *type); + +/* DelItemOnTypeDict.proto (used by SetupReduce) */ +static int __Pyx__DelItemOnTypeDict(PyTypeObject *tp, PyObject *k); +#define __Pyx_DelItemOnTypeDict(tp, k) __Pyx__DelItemOnTypeDict((PyTypeObject*)tp, k) + +/* SetupReduce.proto */ +static int __Pyx_setup_reduce(PyObject* type_obj); + +/* TypeImport.proto */ +#ifndef __PYX_HAVE_RT_ImportType_proto_3_2_2 +#define __PYX_HAVE_RT_ImportType_proto_3_2_2 +#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 201112L +#include +#endif +#if (defined (__STDC_VERSION__) && __STDC_VERSION__ >= 201112L) || __cplusplus >= 201103L +#define __PYX_GET_STRUCT_ALIGNMENT_3_2_2(s) alignof(s) +#else +#define __PYX_GET_STRUCT_ALIGNMENT_3_2_2(s) sizeof(void*) +#endif +enum __Pyx_ImportType_CheckSize_3_2_2 { + __Pyx_ImportType_CheckSize_Error_3_2_2 = 0, + __Pyx_ImportType_CheckSize_Warn_3_2_2 = 1, + __Pyx_ImportType_CheckSize_Ignore_3_2_2 = 2 +}; +static PyTypeObject *__Pyx_ImportType_3_2_2(PyObject* module, const char *module_name, const char *class_name, size_t size, size_t alignment, enum __Pyx_ImportType_CheckSize_3_2_2 check_size); +#endif + +/* Py3UpdateBases.proto */ +static PyObject* __Pyx_PEP560_update_bases(PyObject *bases); + +/* CalculateMetaclass.proto */ +static PyObject *__Pyx_CalculateMetaclass(PyTypeObject *metaclass, PyObject *bases); + +/* PyObjectLookupSpecial.proto (used by Py3ClassCreate) */ +#if CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS +#define __Pyx_PyObject_LookupSpecialNoError(obj, attr_name) __Pyx__PyObject_LookupSpecial(obj, attr_name, 0) +#define __Pyx_PyObject_LookupSpecial(obj, attr_name) __Pyx__PyObject_LookupSpecial(obj, attr_name, 1) +static CYTHON_INLINE PyObject* __Pyx__PyObject_LookupSpecial(PyObject* obj, PyObject* attr_name, int with_error); +#else +#define __Pyx_PyObject_LookupSpecialNoError(o,n) __Pyx_PyObject_GetAttrStrNoError(o,n) +#define __Pyx_PyObject_LookupSpecial(o,n) __Pyx_PyObject_GetAttrStr(o,n) +#endif + +/* Py3ClassCreate.proto */ +static PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObject *name, PyObject *qualname, + PyObject *mkw, PyObject *modname, PyObject *doc); +static PyObject *__Pyx_Py3ClassCreate(PyObject *metaclass, PyObject *name, PyObject *bases, PyObject *dict, + PyObject *mkw, int calculate_metaclass, int allow_py2_metaclass); + +/* ImportFrom.proto */ +static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name); + +/* dict_setdefault.proto (used by FetchCommonType) */ +static CYTHON_INLINE PyObject *__Pyx_PyDict_SetDefault(PyObject *d, PyObject *key, PyObject *default_value); + +/* AddModuleRef.proto (used by FetchSharedCythonModule) */ +#if ((CYTHON_COMPILING_IN_CPYTHON_FREETHREADING ) ||\ + __PYX_LIMITED_VERSION_HEX < 0x030d0000) + static PyObject *__Pyx_PyImport_AddModuleRef(const char *name); +#else + #define __Pyx_PyImport_AddModuleRef(name) PyImport_AddModuleRef(name) +#endif + +/* FetchSharedCythonModule.proto (used by FetchCommonType) */ +static PyObject *__Pyx_FetchSharedCythonABIModule(void); + +/* FetchCommonType.proto (used by CommonTypesMetaclass) */ +static PyTypeObject* __Pyx_FetchCommonTypeFromSpec(PyTypeObject *metaclass, PyObject *module, PyType_Spec *spec, PyObject *bases); + +/* CommonTypesMetaclass.proto (used by CythonFunctionShared) */ +static int __pyx_CommonTypesMetaclass_init(PyObject *module); +#define __Pyx_CommonTypesMetaclass_USED + +/* PyMethodNew.proto (used by CythonFunctionShared) */ +static PyObject *__Pyx_PyMethod_New(PyObject *func, PyObject *self, PyObject *typ); + +/* PyVectorcallFastCallDict.proto (used by CythonFunctionShared) */ +#if CYTHON_METH_FASTCALL && CYTHON_VECTORCALL +static CYTHON_INLINE PyObject *__Pyx_PyVectorcall_FastCallDict(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw); +#endif + +/* CythonFunctionShared.proto (used by CythonFunction) */ +#define __Pyx_CyFunction_USED +#define __Pyx_CYFUNCTION_STATICMETHOD 0x01 +#define __Pyx_CYFUNCTION_CLASSMETHOD 0x02 +#define __Pyx_CYFUNCTION_CCLASS 0x04 +#define __Pyx_CYFUNCTION_COROUTINE 0x08 +#define __Pyx_CyFunction_GetClosure(f)\ + (((__pyx_CyFunctionObject *) (f))->func_closure) +#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API + #define __Pyx_CyFunction_GetClassObj(f)\ + (((__pyx_CyFunctionObject *) (f))->func_classobj) +#else + #define __Pyx_CyFunction_GetClassObj(f)\ + ((PyObject*) ((PyCMethodObject *) (f))->mm_class) +#endif +#define __Pyx_CyFunction_SetClassObj(f, classobj)\ + __Pyx__CyFunction_SetClassObj((__pyx_CyFunctionObject *) (f), (classobj)) +#define __Pyx_CyFunction_Defaults(type, f)\ + ((type *)(((__pyx_CyFunctionObject *) (f))->defaults)) +#define __Pyx_CyFunction_SetDefaultsGetter(f, g)\ + ((__pyx_CyFunctionObject *) (f))->defaults_getter = (g) +typedef struct { +#if CYTHON_COMPILING_IN_LIMITED_API + PyObject_HEAD + PyObject *func; +#elif PY_VERSION_HEX < 0x030900B1 + PyCFunctionObject func; +#else + PyCMethodObject func; +#endif +#if CYTHON_COMPILING_IN_LIMITED_API && CYTHON_METH_FASTCALL + __pyx_vectorcallfunc func_vectorcall; +#endif +#if CYTHON_COMPILING_IN_LIMITED_API + PyObject *func_weakreflist; +#endif +#if PY_VERSION_HEX < 0x030C0000 || CYTHON_COMPILING_IN_LIMITED_API + PyObject *func_dict; +#endif + PyObject *func_name; + PyObject *func_qualname; + PyObject *func_doc; + PyObject *func_globals; + PyObject *func_code; + PyObject *func_closure; +#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API + PyObject *func_classobj; +#endif + PyObject *defaults; + int flags; + PyObject *defaults_tuple; + PyObject *defaults_kwdict; + PyObject *(*defaults_getter)(PyObject *); + PyObject *func_annotations; + PyObject *func_is_coroutine; +} __pyx_CyFunctionObject; +#undef __Pyx_CyOrPyCFunction_Check +#define __Pyx_CyFunction_Check(obj) __Pyx_TypeCheck(obj, __pyx_mstate_global->__pyx_CyFunctionType) +#define __Pyx_CyOrPyCFunction_Check(obj) __Pyx_TypeCheck2(obj, __pyx_mstate_global->__pyx_CyFunctionType, &PyCFunction_Type) +#define __Pyx_CyFunction_CheckExact(obj) __Pyx_IS_TYPE(obj, __pyx_mstate_global->__pyx_CyFunctionType) +static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void (*cfunc)(void)); +#undef __Pyx_IsSameCFunction +#define __Pyx_IsSameCFunction(func, cfunc) __Pyx__IsSameCyOrCFunction(func, cfunc) +static PyObject *__Pyx_CyFunction_Init(__pyx_CyFunctionObject* op, PyMethodDef *ml, + int flags, PyObject* qualname, + PyObject *closure, + PyObject *module, PyObject *globals, + PyObject* code); +static CYTHON_INLINE void __Pyx__CyFunction_SetClassObj(__pyx_CyFunctionObject* f, PyObject* classobj); +static CYTHON_INLINE PyObject *__Pyx_CyFunction_InitDefaults(PyObject *func, + PyTypeObject *defaults_type); +static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *m, + PyObject *tuple); +static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *m, + PyObject *dict); +static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *m, + PyObject *dict); +static int __pyx_CyFunction_init(PyObject *module); +#if CYTHON_METH_FASTCALL +static PyObject * __Pyx_CyFunction_Vectorcall_NOARGS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames); +static PyObject * __Pyx_CyFunction_Vectorcall_O(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames); +static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames); +static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames); +#if CYTHON_COMPILING_IN_LIMITED_API +#define __Pyx_CyFunction_func_vectorcall(f) (((__pyx_CyFunctionObject*)f)->func_vectorcall) +#else +#define __Pyx_CyFunction_func_vectorcall(f) (((PyCFunctionObject*)f)->vectorcall) +#endif +#endif + +/* CythonFunction.proto */ +static PyObject *__Pyx_CyFunction_New(PyMethodDef *ml, + int flags, PyObject* qualname, + PyObject *closure, + PyObject *module, PyObject *globals, + PyObject* code); + +/* FusedFunction.proto */ +typedef struct { + __pyx_CyFunctionObject func; + PyObject *__signatures__; + PyObject *self; +#if CYTHON_COMPILING_IN_LIMITED_API + PyMethodDef *ml; +#endif +} __pyx_FusedFunctionObject; +static PyObject *__pyx_FusedFunction_New(PyMethodDef *ml, int flags, + PyObject *qualname, PyObject *closure, + PyObject *module, PyObject *globals, + PyObject *code); +static int __pyx_FusedFunction_clear(__pyx_FusedFunctionObject *self); +static int __pyx_FusedFunction_init(PyObject *module); +#define __Pyx_FusedFunction_USED + +/* CLineInTraceback.proto (used by AddTraceback) */ +#if CYTHON_CLINE_IN_TRACEBACK && CYTHON_CLINE_IN_TRACEBACK_RUNTIME +static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line); +#else +#define __Pyx_CLineForTraceback(tstate, c_line) (((CYTHON_CLINE_IN_TRACEBACK)) ? c_line : 0) +#endif + +/* CodeObjectCache.proto (used by AddTraceback) */ +#if CYTHON_COMPILING_IN_LIMITED_API +typedef PyObject __Pyx_CachedCodeObjectType; +#else +typedef PyCodeObject __Pyx_CachedCodeObjectType; +#endif +typedef struct { + __Pyx_CachedCodeObjectType* code_object; + int code_line; +} __Pyx_CodeObjectCacheEntry; +struct __Pyx_CodeObjectCache { + int count; + int max_count; + __Pyx_CodeObjectCacheEntry* entries; + #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING + __pyx_atomic_int_type accessor_count; + #endif +}; +static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line); +static __Pyx_CachedCodeObjectType *__pyx_find_code_object(int code_line); +static void __pyx_insert_code_object(int code_line, __Pyx_CachedCodeObjectType* code_object); + +/* AddTraceback.proto */ +static void __Pyx_AddTraceback(const char *funcname, int c_line, + int py_line, const char *filename); + +/* CheckUnpickleChecksum.proto */ +static CYTHON_INLINE int __Pyx_CheckUnpickleChecksum(long checksum, long checksum1, long checksum2, long checksum3, const char *members); + +/* CIntFromPy.proto */ +static CYTHON_INLINE int __Pyx_PyLong_As_int(PyObject *); + +/* CIntFromPy.proto */ +static CYTHON_INLINE long __Pyx_PyLong_As_long(PyObject *); + +/* CIntToPy.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyLong_From_long(long value); + +/* CIntToPy.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyLong_From_lxb_tag_id_enum_t(lxb_tag_id_enum_t value); + +/* CIntToPy.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyLong_From_int(int value); + +/* CIntFromPy.proto */ +static CYTHON_INLINE size_t __Pyx_PyLong_As_size_t(PyObject *); + +/* UpdateUnpickledDict.proto */ +static int __Pyx_UpdateUnpickledDict(PyObject *obj, PyObject *state, Py_ssize_t index); + +/* FormatTypeName.proto */ +#if CYTHON_COMPILING_IN_LIMITED_API +typedef PyObject *__Pyx_TypeName; +#define __Pyx_FMT_TYPENAME "%U" +#define __Pyx_DECREF_TypeName(obj) Py_XDECREF(obj) +#if __PYX_LIMITED_VERSION_HEX >= 0x030d0000 +#define __Pyx_PyType_GetFullyQualifiedName PyType_GetFullyQualifiedName +#else +static __Pyx_TypeName __Pyx_PyType_GetFullyQualifiedName(PyTypeObject* tp); +#endif +#else // !LIMITED_API +typedef const char *__Pyx_TypeName; +#define __Pyx_FMT_TYPENAME "%.200s" +#define __Pyx_PyType_GetFullyQualifiedName(tp) ((tp)->tp_name) +#define __Pyx_DECREF_TypeName(obj) +#endif + +/* FastTypeChecks.proto */ +#if CYTHON_COMPILING_IN_CPYTHON +#define __Pyx_TypeCheck(obj, type) __Pyx_IsSubtype(Py_TYPE(obj), (PyTypeObject *)type) +#define __Pyx_TypeCheck2(obj, type1, type2) __Pyx_IsAnySubtype2(Py_TYPE(obj), (PyTypeObject *)type1, (PyTypeObject *)type2) +static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b); +static CYTHON_INLINE int __Pyx_IsAnySubtype2(PyTypeObject *cls, PyTypeObject *a, PyTypeObject *b); +static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject *type); +static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *type1, PyObject *type2); +#else +#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type) +#define __Pyx_TypeCheck2(obj, type1, type2) (PyObject_TypeCheck(obj, (PyTypeObject *)type1) || PyObject_TypeCheck(obj, (PyTypeObject *)type2)) +#define __Pyx_PyErr_GivenExceptionMatches(err, type) PyErr_GivenExceptionMatches(err, type) +static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *type1, PyObject *type2) { + return PyErr_GivenExceptionMatches(err, type1) || PyErr_GivenExceptionMatches(err, type2); +} +#endif +#define __Pyx_PyErr_ExceptionMatches2(err1, err2) __Pyx_PyErr_GivenExceptionMatches2(__Pyx_PyErr_CurrentExceptionType(), err1, err2) +#define __Pyx_PyException_Check(obj) __Pyx_TypeCheck(obj, PyExc_Exception) +#ifdef PyExceptionInstance_Check + #define __Pyx_PyBaseException_Check(obj) PyExceptionInstance_Check(obj) +#else + #define __Pyx_PyBaseException_Check(obj) __Pyx_TypeCheck(obj, PyExc_BaseException) +#endif + +/* GetRuntimeVersion.proto */ +#if __PYX_LIMITED_VERSION_HEX < 0x030b0000 +static unsigned long __Pyx_cached_runtime_version = 0; +static void __Pyx_init_runtime_version(void); +#else +#define __Pyx_init_runtime_version() +#endif +static unsigned long __Pyx_get_runtime_version(void); + +/* SwapException.proto (used by CoroutineBase) */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_ExceptionSwap(type, value, tb) __Pyx__ExceptionSwap(__pyx_tstate, type, value, tb) +static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); +#else +static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb); +#endif + +/* IterNextPlain.proto (used by CoroutineBase) */ +static CYTHON_INLINE PyObject *__Pyx_PyIter_Next_Plain(PyObject *iterator); +#if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030A0000 +static PyObject *__Pyx_GetBuiltinNext_LimitedAPI(void); +#endif + +/* ReturnWithStopIteration.proto (used by CoroutineBase) */ +static CYTHON_INLINE void __Pyx_ReturnWithStopIteration(PyObject* value, int async, int iternext); + +/* CoroutineBase.proto (used by Generator) */ +struct __pyx_CoroutineObject; +typedef PyObject *(*__pyx_coroutine_body_t)(struct __pyx_CoroutineObject *, PyThreadState *, PyObject *); +#if CYTHON_USE_EXC_INFO_STACK +#define __Pyx_ExcInfoStruct _PyErr_StackItem +#else +typedef struct { + PyObject *exc_type; + PyObject *exc_value; + PyObject *exc_traceback; +} __Pyx_ExcInfoStruct; +#endif +typedef struct __pyx_CoroutineObject { + PyObject_HEAD + __pyx_coroutine_body_t body; + PyObject *closure; + __Pyx_ExcInfoStruct gi_exc_state; +#if PY_VERSION_HEX < 0x030C0000 || CYTHON_COMPILING_IN_LIMITED_API + PyObject *gi_weakreflist; +#endif + PyObject *classobj; + PyObject *yieldfrom; + __Pyx_pyiter_sendfunc yieldfrom_am_send; + PyObject *gi_name; + PyObject *gi_qualname; + PyObject *gi_modulename; + PyObject *gi_code; + PyObject *gi_frame; +#if CYTHON_USE_SYS_MONITORING && (CYTHON_PROFILE || CYTHON_TRACE) + PyMonitoringState __pyx_pymonitoring_state[__Pyx_MonitoringEventTypes_CyGen_count]; + uint64_t __pyx_pymonitoring_version; +#endif + int resume_label; + char is_running; +} __pyx_CoroutineObject; +static __pyx_CoroutineObject *__Pyx__Coroutine_New( + PyTypeObject *type, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure, + PyObject *name, PyObject *qualname, PyObject *module_name); +static __pyx_CoroutineObject *__Pyx__Coroutine_NewInit( + __pyx_CoroutineObject *gen, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure, + PyObject *name, PyObject *qualname, PyObject *module_name); +static CYTHON_INLINE void __Pyx_Coroutine_ExceptionClear(__Pyx_ExcInfoStruct *self); +static int __Pyx_Coroutine_clear(PyObject *self); +static __Pyx_PySendResult __Pyx_Coroutine_AmSend(PyObject *self, PyObject *value, PyObject **retval); +static PyObject *__Pyx_Coroutine_Send(PyObject *self, PyObject *value); +static __Pyx_PySendResult __Pyx_Coroutine_Close(PyObject *self, PyObject **retval); +static PyObject *__Pyx_Coroutine_Throw(PyObject *gen, PyObject *args); +#if CYTHON_USE_EXC_INFO_STACK +#define __Pyx_Coroutine_SwapException(self) +#define __Pyx_Coroutine_ResetAndClearException(self) __Pyx_Coroutine_ExceptionClear(&(self)->gi_exc_state) +#else +#define __Pyx_Coroutine_SwapException(self) {\ + __Pyx_ExceptionSwap(&(self)->gi_exc_state.exc_type, &(self)->gi_exc_state.exc_value, &(self)->gi_exc_state.exc_traceback);\ + __Pyx_Coroutine_ResetFrameBackpointer(&(self)->gi_exc_state);\ + } +#define __Pyx_Coroutine_ResetAndClearException(self) {\ + __Pyx_ExceptionReset((self)->gi_exc_state.exc_type, (self)->gi_exc_state.exc_value, (self)->gi_exc_state.exc_traceback);\ + (self)->gi_exc_state.exc_type = (self)->gi_exc_state.exc_value = (self)->gi_exc_state.exc_traceback = NULL;\ + } +#endif +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_PyGen_FetchStopIterationValue(pvalue)\ + __Pyx_PyGen__FetchStopIterationValue(__pyx_tstate, pvalue) +#else +#define __Pyx_PyGen_FetchStopIterationValue(pvalue)\ + __Pyx_PyGen__FetchStopIterationValue(__Pyx_PyThreadState_Current, pvalue) +#endif +static int __Pyx_PyGen__FetchStopIterationValue(PyThreadState *tstate, PyObject **pvalue); +static CYTHON_INLINE void __Pyx_Coroutine_ResetFrameBackpointer(__Pyx_ExcInfoStruct *exc_state); +static char __Pyx_Coroutine_test_and_set_is_running(__pyx_CoroutineObject *gen); +static void __Pyx_Coroutine_unset_is_running(__pyx_CoroutineObject *gen); +static char __Pyx_Coroutine_get_is_running(__pyx_CoroutineObject *gen); +static PyObject *__Pyx_Coroutine_get_is_running_getter(PyObject *gen, void *closure); +#if __PYX_HAS_PY_AM_SEND == 2 +static void __Pyx_SetBackportTypeAmSend(PyTypeObject *type, __Pyx_PyAsyncMethodsStruct *static_amsend_methods, __Pyx_pyiter_sendfunc am_send); +#endif +static PyObject *__Pyx_Coroutine_fail_reduce_ex(PyObject *self, PyObject *arg); + +/* Generator.proto */ +#define __Pyx_Generator_USED +#define __Pyx_Generator_CheckExact(obj) __Pyx_IS_TYPE(obj, __pyx_mstate_global->__pyx_GeneratorType) +#define __Pyx_Generator_New(body, code, closure, name, qualname, module_name)\ + __Pyx__Coroutine_New(__pyx_mstate_global->__pyx_GeneratorType, body, code, closure, name, qualname, module_name) +static PyObject *__Pyx_Generator_Next(PyObject *self); +static int __pyx_Generator_init(PyObject *module); +static CYTHON_INLINE PyObject *__Pyx_Generator_GetInlinedResult(PyObject *self); + +/* CheckBinaryVersion.proto */ +static int __Pyx_check_binary_version(unsigned long ct_version, unsigned long rt_version, int allow_newer); + +/* DecompressString.proto */ +static PyObject *__Pyx_DecompressString(const char *s, Py_ssize_t length, int algo); + +/* MultiPhaseInitModuleState.proto */ +#if CYTHON_PEP489_MULTI_PHASE_INIT && CYTHON_USE_MODULE_STATE +static PyObject *__Pyx_State_FindModule(void*); +static int __Pyx_State_AddModule(PyObject* module, void*); +static int __Pyx_State_RemoveModule(void*); +#elif CYTHON_USE_MODULE_STATE +#define __Pyx_State_FindModule PyState_FindModule +#define __Pyx_State_AddModule PyState_AddModule +#define __Pyx_State_RemoveModule PyState_RemoveModule +#endif + +/* #### Code section: module_declarations ### */ +/* CythonABIVersion.proto */ +#if CYTHON_COMPILING_IN_LIMITED_API + #if CYTHON_METH_FASTCALL + #define __PYX_FASTCALL_ABI_SUFFIX "_fastcall" + #else + #define __PYX_FASTCALL_ABI_SUFFIX + #endif + #define __PYX_LIMITED_ABI_SUFFIX "limited" __PYX_FASTCALL_ABI_SUFFIX __PYX_AM_SEND_ABI_SUFFIX +#else + #define __PYX_LIMITED_ABI_SUFFIX +#endif +#if __PYX_HAS_PY_AM_SEND == 1 + #define __PYX_AM_SEND_ABI_SUFFIX +#elif __PYX_HAS_PY_AM_SEND == 2 + #define __PYX_AM_SEND_ABI_SUFFIX "amsendbackport" +#else + #define __PYX_AM_SEND_ABI_SUFFIX "noamsend" +#endif +#ifndef __PYX_MONITORING_ABI_SUFFIX + #define __PYX_MONITORING_ABI_SUFFIX +#endif +#if CYTHON_USE_TP_FINALIZE + #define __PYX_TP_FINALIZE_ABI_SUFFIX +#else + #define __PYX_TP_FINALIZE_ABI_SUFFIX "nofinalize" +#endif +#if CYTHON_USE_FREELISTS || !defined(__Pyx_AsyncGen_USED) + #define __PYX_FREELISTS_ABI_SUFFIX +#else + #define __PYX_FREELISTS_ABI_SUFFIX "nofreelists" +#endif +#define CYTHON_ABI __PYX_ABI_VERSION __PYX_LIMITED_ABI_SUFFIX __PYX_MONITORING_ABI_SUFFIX __PYX_TP_FINALIZE_ABI_SUFFIX __PYX_FREELISTS_ABI_SUFFIX __PYX_AM_SEND_ABI_SUFFIX +#define __PYX_ABI_MODULE_NAME "_cython_" CYTHON_ABI +#define __PYX_TYPE_MODULE_PREFIX __PYX_ABI_MODULE_NAME "." + +static struct __pyx_obj_10selectolax_6lexbor_LexborAttributes *__pyx_f_10selectolax_6lexbor_16LexborAttributes_create(lxb_dom_node_t *__pyx_v_node); /* proto*/ +static void __pyx_f_10selectolax_6lexbor_10LexborNode_set_as_fragment_root(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self); /* proto*/ +static struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_f_10selectolax_6lexbor_10LexborNode_new(lxb_dom_node_t *__pyx_v_node, struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *__pyx_v_parser); /* proto*/ +static CYTHON_INLINE struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_f_10selectolax_6lexbor_10LexborNode__get_node(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self); /* proto*/ +static struct __pyx_obj_10selectolax_6lexbor_TextContainer *__pyx_f_10selectolax_6lexbor_13TextContainer_new_with_defaults(void); /* proto*/ +static int __pyx_f_10selectolax_6lexbor_17LexborCSSSelector__create_css_parser(struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector *__pyx_v_self); /* proto*/ +static PyObject *__pyx_f_10selectolax_6lexbor_17LexborCSSSelector_find(struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector *__pyx_v_self, PyObject *__pyx_v_query, struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_node, CYTHON_UNUSED int __pyx_skip_dispatch); /* proto*/ +static PyObject *__pyx_f_10selectolax_6lexbor_17LexborCSSSelector_find_first(struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector *__pyx_v_self, PyObject *__pyx_v_query, struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_node, CYTHON_UNUSED int __pyx_skip_dispatch); /* proto*/ +static PyObject *__pyx_f_10selectolax_6lexbor_17LexborCSSSelector__find(struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector *__pyx_v_self, PyObject *__pyx_v_query, struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_node, int __pyx_v_only_first, CYTHON_UNUSED int __pyx_skip_dispatch); /* proto*/ +static int __pyx_f_10selectolax_6lexbor_17LexborCSSSelector_any_matches(struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector *__pyx_v_self, PyObject *__pyx_v_query, struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_node, CYTHON_UNUSED int __pyx_skip_dispatch); /* proto*/ +static PyObject *__pyx_f_10selectolax_6lexbor_14LexborSelector_css(CYTHON_UNUSED struct __pyx_obj_10selectolax_6lexbor_LexborSelector *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_query, int __pyx_skip_dispatch); /* proto*/ +static CYTHON_INLINE lxb_html_document_t *__pyx_f_10selectolax_6lexbor_16LexborHTMLParser_main_document(struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *__pyx_v_self); /* proto*/ +static CYTHON_INLINE void __pyx_f_10selectolax_6lexbor_16LexborHTMLParser__new_html_document(struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *__pyx_v_self); /* proto*/ +static int __pyx_f_10selectolax_6lexbor_16LexborHTMLParser__parse_html(struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *__pyx_v_self, char *__pyx_v_html, size_t __pyx_v_html_len); /* proto*/ +static CYTHON_INLINE lxb_status_t __pyx_f_10selectolax_6lexbor_16LexborHTMLParser__parse_html_document(struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *__pyx_v_self, char *__pyx_v_html, size_t __pyx_v_html_len); /* proto*/ +static CYTHON_INLINE lxb_status_t __pyx_f_10selectolax_6lexbor_16LexborHTMLParser__parse_html_fragment(struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *__pyx_v_self, char *__pyx_v_html, size_t __pyx_v_html_len); /* proto*/ +static struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *__pyx_f_10selectolax_6lexbor_16LexborHTMLParser_from_document(lxb_html_document_t *__pyx_v_document, PyObject *__pyx_v_raw_html); /* proto*/ + +/* Module declarations from "libc.stdint" */ + +/* Module declarations from "__builtin__" */ + +/* Module declarations from "cpython.bool" */ + +/* Module declarations from "cython" */ + +/* Module declarations from "libc.string" */ + +/* Module declarations from "libc.stdio" */ + +/* Module declarations from "__builtin__" */ + +/* Module declarations from "cpython.type" */ + +/* Module declarations from "cpython" */ + +/* Module declarations from "cpython.object" */ + +/* Module declarations from "cpython.exc" */ + +/* Module declarations from "cpython.list" */ + +/* Module declarations from "selectolax.lexbor" */ +static CYTHON_INLINE int __pyx_f_10selectolax_6lexbor_is_empty_text_node(lxb_dom_node_t *); /*proto*/ +static CYTHON_INLINE int __pyx_f_10selectolax_6lexbor__is_whitespace_only(lxb_char_t const *, size_t); /*proto*/ +static lexbor_action_t __pyx_f_10selectolax_6lexbor_text_callback(lxb_dom_node_t *, void *); /*proto*/ +static lxb_status_t __pyx_f_10selectolax_6lexbor_serialize_fragment(lxb_dom_node_t *, lexbor_str_t *); /*proto*/ +static CYTHON_INLINE int __pyx_f_10selectolax_6lexbor__is_node_type(lxb_dom_node_t *, lxb_dom_node_type_t); /*proto*/ +static lxb_status_t __pyx_f_10selectolax_6lexbor_css_finder_callback(lxb_dom_node_t *, lxb_css_selector_specificity_t *, void *); /*proto*/ +static lxb_status_t __pyx_f_10selectolax_6lexbor_css_finder_callback_first(lxb_dom_node_t *, lxb_css_selector_specificity_t *, void *); /*proto*/ +static lxb_status_t __pyx_f_10selectolax_6lexbor_css_matcher_callback(lxb_dom_node_t *, lxb_css_selector_specificity_t *, void *); /*proto*/ +static lxb_dom_node_t *__pyx_f_10selectolax_6lexbor_node_remove_deep(lxb_dom_node_t *); /*proto*/ +static int __pyx_f_10selectolax_6lexbor_node_is_removed(lxb_dom_node_t *); /*proto*/ +static CYTHON_INLINE PyObject *__pyx_fuse_0__pyx_f_10selectolax_6lexbor_to_bytes(PyObject *); /*proto*/ +static CYTHON_INLINE PyObject *__pyx_fuse_1__pyx_f_10selectolax_6lexbor_to_bytes(PyObject *); /*proto*/ +static CYTHON_INLINE PyObject *__pyx_fuse_2__pyx_f_10selectolax_6lexbor_to_bytes(struct __pyx_obj_10selectolax_6lexbor_LexborNode *); /*proto*/ +static PyObject *__pyx_f_10selectolax_6lexbor___pyx_unpickle_TextContainer__set_state(struct __pyx_obj_10selectolax_6lexbor_TextContainer *, PyObject *); /*proto*/ +static PyObject *__pyx_f_10selectolax_6lexbor___pyx_unpickle_LexborSelector__set_state(struct __pyx_obj_10selectolax_6lexbor_LexborSelector *, PyObject *); /*proto*/ +static PyObject *__pyx_ff_map_fused_ee27be_1_3_242639__11__dunderbuiltin__dunder_PyObject__ptr__and_1__etc(PyObject *); /*proto*/ +static PyObject *__pyx_ff_match_signatures_single(PyObject *, PyObject *); /*proto*/ +/* #### Code section: typeinfo ### */ +/* #### Code section: before_global_var ### */ +#define __Pyx_MODULE_NAME "selectolax.lexbor" +extern int __pyx_module_is_main_selectolax__lexbor; +int __pyx_module_is_main_selectolax__lexbor = 0; + +/* Implementation of "selectolax.lexbor" */ +/* #### Code section: global_var ### */ +static PyObject *__pyx_builtin___import__; +/* #### Code section: string_decls ### */ +static const char __pyx_k_[] = ""; +static const char __pyx_k_node_nodes[] = "node, nodes"; +static const char __pyx_k_text_separator_strip[] = "_text, separator, strip"; +/* #### Code section: decls ### */ +static PyObject *__pyx_pf_10selectolax_6lexbor_preprocess_input(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_html, PyObject *__pyx_v_decode_errors); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_2do_create_tag(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_tag, PyObject *__pyx_v_parser_cls); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_4get_fragment_type(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_html, PyObject *__pyx_v_parser_cls, PyObject *__pyx_v_tree); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_6do_parse_fragment(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_html, PyObject *__pyx_v_parser_cls); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_16LexborAttributes___iter__(struct __pyx_obj_10selectolax_6lexbor_LexborAttributes *__pyx_v_self); /* proto */ +static int __pyx_pf_10selectolax_6lexbor_16LexborAttributes_3__setitem__(struct __pyx_obj_10selectolax_6lexbor_LexborAttributes *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_value); /* proto */ +static int __pyx_pf_10selectolax_6lexbor_16LexborAttributes_5__delitem__(struct __pyx_obj_10selectolax_6lexbor_LexborAttributes *__pyx_v_self, PyObject *__pyx_v_key); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_16LexborAttributes_7__getitem__(struct __pyx_obj_10selectolax_6lexbor_LexborAttributes *__pyx_v_self, PyObject *__pyx_v_key); /* proto */ +static Py_ssize_t __pyx_pf_10selectolax_6lexbor_16LexborAttributes_9__len__(struct __pyx_obj_10selectolax_6lexbor_LexborAttributes *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_16LexborAttributes_11keys(struct __pyx_obj_10selectolax_6lexbor_LexborAttributes *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_16LexborAttributes_13items(struct __pyx_obj_10selectolax_6lexbor_LexborAttributes *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_16LexborAttributes_16values(struct __pyx_obj_10selectolax_6lexbor_LexborAttributes *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_16LexborAttributes_19get(struct __pyx_obj_10selectolax_6lexbor_LexborAttributes *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_default); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_16LexborAttributes_21sget(struct __pyx_obj_10selectolax_6lexbor_LexborAttributes *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_default); /* proto */ +static int __pyx_pf_10selectolax_6lexbor_16LexborAttributes_23__contains__(struct __pyx_obj_10selectolax_6lexbor_LexborAttributes *__pyx_v_self, PyObject *__pyx_v_key); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_16LexborAttributes_25__repr__(struct __pyx_obj_10selectolax_6lexbor_LexborAttributes *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_16LexborAttributes_27__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_10selectolax_6lexbor_LexborAttributes *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_16LexborAttributes_29__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_10selectolax_6lexbor_LexborAttributes *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_6mem_id___get__(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_5child___get__(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_11first_child___get__(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_6parent___get__(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_4next___get__(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_4prev___get__(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_10last_child___get__(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_4html___get__(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self); /* proto */ +static Py_hash_t __pyx_pf_10selectolax_6lexbor_10LexborNode___hash__(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_2text_lexbor(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_4text(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self, PyLongObject *__pyx_v_deep, PyObject *__pyx_v_separator, PyLongObject *__pyx_v_strip, PyLongObject *__pyx_v_skip_empty); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_6css(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self, PyObject *__pyx_v_query); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_8css_first(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self, PyObject *__pyx_v_query, PyObject *__pyx_v_default, PyLongObject *__pyx_v_strict); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_10any_css_matches(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self, PyObject *__pyx_v_selectors); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_12css_matches(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self, PyObject *__pyx_v_selector); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_14__repr__(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_6tag_id___get__(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_3tag___get__(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_16decompose(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self, PyLongObject *__pyx_v_recursive); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_18strip_tags(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self, PyObject *__pyx_v_tags, PyLongObject *__pyx_v_recursive); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_10attributes___get__(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_5attrs___get__(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_2id___get__(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_20iter(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self, PyLongObject *__pyx_v_include_text, PyLongObject *__pyx_v_skip_empty); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_23__iter__(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_25__next__(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_27unwrap(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self, int __pyx_v_delete_empty); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_29unwrap_tags(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self, PyObject *__pyx_v_tags, int __pyx_v_delete_empty); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_31merge_text_nodes(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_33traverse(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self, PyLongObject *__pyx_v_include_text, PyLongObject *__pyx_v_skip_empty); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_36replace_with(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_signatures, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs, CYTHON_UNUSED PyObject *__pyx_v_defaults, CYTHON_UNUSED PyObject *__pyx_v__fused_sigindex); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_56replace_with(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_58replace_with(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_60replace_with(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self, struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_value); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_38insert_before(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_signatures, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs, CYTHON_UNUSED PyObject *__pyx_v_defaults, CYTHON_UNUSED PyObject *__pyx_v__fused_sigindex); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_64insert_before(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_66insert_before(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_68insert_before(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self, struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_value); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_40insert_after(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_signatures, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs, CYTHON_UNUSED PyObject *__pyx_v_defaults, CYTHON_UNUSED PyObject *__pyx_v__fused_sigindex); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_72insert_after(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_74insert_after(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_76insert_after(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self, struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_value); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_42insert_child(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_signatures, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs, CYTHON_UNUSED PyObject *__pyx_v_defaults, CYTHON_UNUSED PyObject *__pyx_v__fused_sigindex); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_80insert_child(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_82insert_child(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_84insert_child(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self, struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_value); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_9raw_value___get__(CYTHON_UNUSED struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_44scripts_contain(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self, PyObject *__pyx_v_query); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_46script_srcs_contain(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self, PyObject *__pyx_v_queries); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_48remove(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self, PyLongObject *__pyx_v_recursive); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_50select(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self, PyObject *__pyx_v_query); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_52__eq__(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self, PyObject *__pyx_v_other); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_12text_content___get__(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_15comment_content___get__(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_10inner_html___get__(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self); /* proto */ +static int __pyx_pf_10selectolax_6lexbor_10LexborNode_10inner_html_2__set__(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self, PyObject *__pyx_v_html); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_54clone(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_15is_element_node___get__(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_12is_text_node___get__(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_15is_comment_node___get__(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_16is_document_node___get__(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_18is_empty_text_node___get__(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_6parser___get__(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self); /* proto */ +static int __pyx_pf_10selectolax_6lexbor_10LexborNode_6parser_2__set__(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ +static int __pyx_pf_10selectolax_6lexbor_10LexborNode_6parser_4__del__(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_88__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_90__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */ +static int __pyx_pf_10selectolax_6lexbor_13TextContainer___init__(struct __pyx_obj_10selectolax_6lexbor_TextContainer *__pyx_v_self, PyObject *__pyx_v_separator, PyLongObject *__pyx_v_strip); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_13TextContainer_2append(struct __pyx_obj_10selectolax_6lexbor_TextContainer *__pyx_v_self, PyObject *__pyx_v_node_text); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_13TextContainer_4text___get__(struct __pyx_obj_10selectolax_6lexbor_TextContainer *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_13TextContainer_4__reduce_cython__(struct __pyx_obj_10selectolax_6lexbor_TextContainer *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_13TextContainer_6__setstate_cython__(struct __pyx_obj_10selectolax_6lexbor_TextContainer *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */ +static int __pyx_pf_10selectolax_6lexbor_17LexborCSSSelector___init__(struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_17LexborCSSSelector_2find(struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector *__pyx_v_self, PyObject *__pyx_v_query, struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_node); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_17LexborCSSSelector_4find_first(struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector *__pyx_v_self, PyObject *__pyx_v_query, struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_node); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_17LexborCSSSelector_6_find(struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector *__pyx_v_self, PyObject *__pyx_v_query, struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_node, int __pyx_v_only_first); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_17LexborCSSSelector_8any_matches(struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector *__pyx_v_self, PyObject *__pyx_v_query, struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_node); /* proto */ +static void __pyx_pf_10selectolax_6lexbor_17LexborCSSSelector_10__dealloc__(struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_17LexborCSSSelector_7results___get__(struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector *__pyx_v_self); /* proto */ +static int __pyx_pf_10selectolax_6lexbor_17LexborCSSSelector_7results_2__set__(struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ +static int __pyx_pf_10selectolax_6lexbor_17LexborCSSSelector_7results_4__del__(struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_17LexborCSSSelector_12current_node___get__(struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector *__pyx_v_self); /* proto */ +static int __pyx_pf_10selectolax_6lexbor_17LexborCSSSelector_12current_node_2__set__(struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ +static int __pyx_pf_10selectolax_6lexbor_17LexborCSSSelector_12current_node_4__del__(struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_17LexborCSSSelector_12__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_17LexborCSSSelector_14__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */ +static int __pyx_pf_10selectolax_6lexbor_14LexborSelector___init__(struct __pyx_obj_10selectolax_6lexbor_LexborSelector *__pyx_v_self, struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_node, PyObject *__pyx_v_query); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_14LexborSelector_2css(struct __pyx_obj_10selectolax_6lexbor_LexborSelector *__pyx_v_self, PyObject *__pyx_v_query); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_14LexborSelector_7matches___get__(struct __pyx_obj_10selectolax_6lexbor_LexborSelector *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_14LexborSelector_11any_matches___get__(struct __pyx_obj_10selectolax_6lexbor_LexborSelector *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_14LexborSelector_4text_contains(struct __pyx_obj_10selectolax_6lexbor_LexborSelector *__pyx_v_self, PyObject *__pyx_v_text, PyLongObject *__pyx_v_deep, PyObject *__pyx_v_separator, PyLongObject *__pyx_v_strip); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_14LexborSelector_6any_text_contains(struct __pyx_obj_10selectolax_6lexbor_LexborSelector *__pyx_v_self, PyObject *__pyx_v_text, PyLongObject *__pyx_v_deep, PyObject *__pyx_v_separator, PyLongObject *__pyx_v_strip); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_14LexborSelector_8attribute_longer_than(struct __pyx_obj_10selectolax_6lexbor_LexborSelector *__pyx_v_self, PyObject *__pyx_v_attribute, int __pyx_v_length, PyObject *__pyx_v_start); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_14LexborSelector_10any_attribute_longer_than(struct __pyx_obj_10selectolax_6lexbor_LexborSelector *__pyx_v_self, PyObject *__pyx_v_attribute, int __pyx_v_length, PyObject *__pyx_v_start); /* proto */ +static int __pyx_pf_10selectolax_6lexbor_14LexborSelector_12__bool__(struct __pyx_obj_10selectolax_6lexbor_LexborSelector *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_14LexborSelector_14__reduce_cython__(struct __pyx_obj_10selectolax_6lexbor_LexborSelector *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_14LexborSelector_16__setstate_cython__(struct __pyx_obj_10selectolax_6lexbor_LexborSelector *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_8preprocess_input(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_html, PyObject *__pyx_v_decode_errors); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_10do_create_tag(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_tag, PyObject *__pyx_v_parser_cls); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_12get_fragment_type(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_html, PyObject *__pyx_v_parser_cls, PyObject *__pyx_v_tree); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_14do_parse_fragment(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_html, PyObject *__pyx_v_parser_cls); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_16create_tag(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_tag); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_18parse_fragment(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_html); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_20extract_html_comment(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_text); /* proto */ +static int __pyx_pf_10selectolax_6lexbor_16LexborHTMLParser___init__(struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *__pyx_v_self, PyObject *__pyx_v_html, PyObject *__pyx_v_is_fragment); /* proto */ +static void __pyx_pf_10selectolax_6lexbor_16LexborHTMLParser_2__dealloc__(struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_16LexborHTMLParser_4__repr__(struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_16LexborHTMLParser_8selector___get__(struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_16LexborHTMLParser_4root___get__(struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_16LexborHTMLParser_4body___get__(struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_16LexborHTMLParser_4head___get__(struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_16LexborHTMLParser_6tags(struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *__pyx_v_self, PyObject *__pyx_v_name); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_16LexborHTMLParser_8text(struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *__pyx_v_self, PyObject *__pyx_v_deep, PyObject *__pyx_v_separator, PyObject *__pyx_v_strip, PyObject *__pyx_v_skip_empty); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_16LexborHTMLParser_4html___get__(struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_16LexborHTMLParser_10css(struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *__pyx_v_self, PyObject *__pyx_v_query); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_16LexborHTMLParser_12css_first(struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *__pyx_v_self, PyObject *__pyx_v_query, PyObject *__pyx_v_default, PyObject *__pyx_v_strict); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_16LexborHTMLParser_14strip_tags(struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *__pyx_v_self, PyObject *__pyx_v_tags, PyLongObject *__pyx_v_recursive); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_16LexborHTMLParser_16select(struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *__pyx_v_self, PyObject *__pyx_v_query); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_16LexborHTMLParser_18any_css_matches(struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *__pyx_v_self, PyObject *__pyx_v_selectors); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_16LexborHTMLParser_20scripts_contain(struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *__pyx_v_self, PyObject *__pyx_v_query); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_16LexborHTMLParser_22script_srcs_contain(struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *__pyx_v_self, PyObject *__pyx_v_queries); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_16LexborHTMLParser_24css_matches(struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *__pyx_v_self, PyObject *__pyx_v_selector); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_16LexborHTMLParser_26merge_text_nodes(struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_16LexborHTMLParser_28clone(struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_16LexborHTMLParser_30unwrap_tags(struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *__pyx_v_self, PyObject *__pyx_v_tags, PyObject *__pyx_v_delete_empty); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_16LexborHTMLParser_10inner_html___get__(struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *__pyx_v_self); /* proto */ +static int __pyx_pf_10selectolax_6lexbor_16LexborHTMLParser_10inner_html_2__set__(struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *__pyx_v_self, PyObject *__pyx_v_html); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_16LexborHTMLParser_32create_node(struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *__pyx_v_self, PyObject *__pyx_v_tag); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_16LexborHTMLParser_8raw_html___get__(struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *__pyx_v_self); /* proto */ +static int __pyx_pf_10selectolax_6lexbor_16LexborHTMLParser_8raw_html_2__set__(struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ +static int __pyx_pf_10selectolax_6lexbor_16LexborHTMLParser_8raw_html_4__del__(struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_16LexborHTMLParser_34__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_16LexborHTMLParser_36__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_22__pyx_unpickle_TextContainer(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */ +static PyObject *__pyx_pf_10selectolax_6lexbor_24__pyx_unpickle_LexborSelector(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */ +static PyObject *__pyx_tp_new_10selectolax_6lexbor_LexborNode(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_10selectolax_6lexbor_LexborCSSSelector(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_10selectolax_6lexbor_LexborHTMLParser(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_10selectolax_6lexbor_LexborAttributes(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_10selectolax_6lexbor_TextContainer(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_10selectolax_6lexbor_LexborSelector(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_10selectolax_6lexbor___pyx_scope_struct____iter__(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_10selectolax_6lexbor___pyx_scope_struct_1_items(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_10selectolax_6lexbor___pyx_scope_struct_2_values(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_10selectolax_6lexbor___pyx_scope_struct_3_iter(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_10selectolax_6lexbor___pyx_scope_struct_4_traverse(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +/* #### Code section: late_includes ### */ +/* #### Code section: module_state ### */ +/* SmallCodeConfig */ +#ifndef CYTHON_SMALL_CODE +#if defined(__clang__) + #define CYTHON_SMALL_CODE +#elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) + #define CYTHON_SMALL_CODE __attribute__((cold)) +#else + #define CYTHON_SMALL_CODE +#endif +#endif + +typedef struct { + PyObject *__pyx_d; + PyObject *__pyx_b; + PyObject *__pyx_cython_runtime; + PyObject *__pyx_empty_tuple; + PyObject *__pyx_empty_bytes; + PyObject *__pyx_empty_unicode; + PyTypeObject *__pyx_ptype_7cpython_4bool_bool; + PyTypeObject *__pyx_ptype_7cpython_4type_type; + PyObject *__pyx_type_10selectolax_6lexbor_LexborNode; + PyObject *__pyx_type_10selectolax_6lexbor_LexborCSSSelector; + PyObject *__pyx_type_10selectolax_6lexbor_LexborHTMLParser; + PyObject *__pyx_type_10selectolax_6lexbor_LexborAttributes; + PyObject *__pyx_type_10selectolax_6lexbor_TextContainer; + PyObject *__pyx_type_10selectolax_6lexbor_LexborSelector; + PyObject *__pyx_type_10selectolax_6lexbor___pyx_scope_struct____iter__; + PyObject *__pyx_type_10selectolax_6lexbor___pyx_scope_struct_1_items; + PyObject *__pyx_type_10selectolax_6lexbor___pyx_scope_struct_2_values; + PyObject *__pyx_type_10selectolax_6lexbor___pyx_scope_struct_3_iter; + PyObject *__pyx_type_10selectolax_6lexbor___pyx_scope_struct_4_traverse; + PyTypeObject *__pyx_ptype_10selectolax_6lexbor_LexborNode; + PyTypeObject *__pyx_ptype_10selectolax_6lexbor_LexborCSSSelector; + PyTypeObject *__pyx_ptype_10selectolax_6lexbor_LexborHTMLParser; + PyTypeObject *__pyx_ptype_10selectolax_6lexbor_LexborAttributes; + PyTypeObject *__pyx_ptype_10selectolax_6lexbor_TextContainer; + PyTypeObject *__pyx_ptype_10selectolax_6lexbor_LexborSelector; + PyTypeObject *__pyx_ptype_10selectolax_6lexbor___pyx_scope_struct____iter__; + PyTypeObject *__pyx_ptype_10selectolax_6lexbor___pyx_scope_struct_1_items; + PyTypeObject *__pyx_ptype_10selectolax_6lexbor___pyx_scope_struct_2_values; + PyTypeObject *__pyx_ptype_10selectolax_6lexbor___pyx_scope_struct_3_iter; + PyTypeObject *__pyx_ptype_10selectolax_6lexbor___pyx_scope_struct_4_traverse; + __Pyx_CachedCFunction __pyx_umethod_PyDict_Type_get; + __Pyx_CachedCFunction __pyx_umethod_PyDict_Type_items; + __Pyx_CachedCFunction __pyx_umethod_PyDict_Type_pop; + __Pyx_CachedCFunction __pyx_umethod_PyDict_Type_values; + __Pyx_CachedCFunction __pyx_umethod_PyBytes_Type__encode; + __Pyx_CachedCFunction __pyx_umethod_PyUnicode_Type__strip; + PyObject *__pyx_k__5; + PyObject *__pyx_k__6; + PyObject *__pyx_k__7; + PyObject *__pyx_k__8; + PyObject *__pyx_tuple[13]; + PyObject *__pyx_codeobj_tab[89]; + PyObject *__pyx_string_tab[489]; + PyObject *__pyx_number_tab[8]; +/* #### Code section: module_state_contents ### */ + +#if CYTHON_USE_FREELISTS +struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct____iter__ *__pyx_freelist_10selectolax_6lexbor___pyx_scope_struct____iter__[8]; +int __pyx_freecount_10selectolax_6lexbor___pyx_scope_struct____iter__; +#endif + +#if CYTHON_USE_FREELISTS +struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct_1_items *__pyx_freelist_10selectolax_6lexbor___pyx_scope_struct_1_items[8]; +int __pyx_freecount_10selectolax_6lexbor___pyx_scope_struct_1_items; +#endif + +#if CYTHON_USE_FREELISTS +struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct_2_values *__pyx_freelist_10selectolax_6lexbor___pyx_scope_struct_2_values[8]; +int __pyx_freecount_10selectolax_6lexbor___pyx_scope_struct_2_values; +#endif + +#if CYTHON_USE_FREELISTS +struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct_3_iter *__pyx_freelist_10selectolax_6lexbor___pyx_scope_struct_3_iter[8]; +int __pyx_freecount_10selectolax_6lexbor___pyx_scope_struct_3_iter; +#endif + +#if CYTHON_USE_FREELISTS +struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct_4_traverse *__pyx_freelist_10selectolax_6lexbor___pyx_scope_struct_4_traverse[8]; +int __pyx_freecount_10selectolax_6lexbor___pyx_scope_struct_4_traverse; +#endif +/* CommonTypesMetaclass.module_state_decls */ +PyTypeObject *__pyx_CommonTypesMetaclassType; + +/* CachedMethodType.module_state_decls */ +#if CYTHON_COMPILING_IN_LIMITED_API +PyObject *__Pyx_CachedMethodType; +#endif + +/* CythonFunctionShared.module_state_decls */ +PyTypeObject *__pyx_CyFunctionType; + +/* FusedFunction.module_state_decls */ +PyTypeObject *__pyx_FusedFunctionType; + +/* CodeObjectCache.module_state_decls */ +struct __Pyx_CodeObjectCache __pyx_code_cache; + +/* IterNextPlain.module_state_decls */ +#if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030A0000 +PyObject *__Pyx_GetBuiltinNext_LimitedAPI_cache; +#endif + +/* Generator.module_state_decls */ +PyTypeObject *__pyx_GeneratorType; + +/* #### Code section: module_state_end ### */ +} __pyx_mstatetype; + +#if CYTHON_USE_MODULE_STATE +#ifdef __cplusplus +namespace { +extern struct PyModuleDef __pyx_moduledef; +} /* anonymous namespace */ +#else +static struct PyModuleDef __pyx_moduledef; +#endif + +#define __pyx_mstate_global (__Pyx_PyModule_GetState(__Pyx_State_FindModule(&__pyx_moduledef))) + +#define __pyx_m (__Pyx_State_FindModule(&__pyx_moduledef)) +#else +static __pyx_mstatetype __pyx_mstate_global_static = +#ifdef __cplusplus + {}; +#else + {0}; +#endif +static __pyx_mstatetype * const __pyx_mstate_global = &__pyx_mstate_global_static; +#endif +/* #### Code section: constant_name_defines ### */ +#define __pyx_kp_u_ __pyx_string_tab[0] +#define __pyx_kp_u_A_dict_like_object_that_is_simil __pyx_string_tab[1] +#define __pyx_kp_u_An_exception_that_indicates_erro __pyx_string_tab[2] +#define __pyx_kp_u_Attempt_to_unwrap_removed_node_D __pyx_string_tab[3] +#define __pyx_kp_u_Can_t_create_a_new_document __pyx_string_tab[4] +#define __pyx_kp_u_Can_t_create_a_new_node __pyx_string_tab[5] +#define __pyx_kp_u_Can_t_create_element_for_tag __pyx_string_tab[6] +#define __pyx_kp_u_Can_t_extract_text __pyx_string_tab[7] +#define __pyx_kp_u_Can_t_initialize_CSS_parser __pyx_string_tab[8] +#define __pyx_kp_u_Can_t_initialize_CSS_selector __pyx_string_tab[9] +#define __pyx_kp_u_Can_t_initialize_DOM_collection __pyx_string_tab[10] +#define __pyx_kp_u_Can_t_locate_elements __pyx_string_tab[11] +#define __pyx_kp_u_Can_t_parse_CSS_selector __pyx_string_tab[12] +#define __pyx_kp_u_Can_t_parse_HTML __pyx_string_tab[13] +#define __pyx_kp_u_Decomposing_the_root_node_is_not __pyx_string_tab[14] +#define __pyx_kp_u_Expected_1_match_but_found_s_mat __pyx_string_tab[15] +#define __pyx_kp_u_Expected_a_string_but_s_found __pyx_string_tab[16] +#define __pyx_kp_u_Expected_a_string_or_LexborNode __pyx_string_tab[17] +#define __pyx_kp_u_Expected_at_least __pyx_string_tab[18] +#define __pyx_kp_u_Expected_str_or_unicode_got_s __pyx_string_tab[19] +#define __pyx_kp_u_Extract_the_inner_content_of_an __pyx_string_tab[20] +#define __pyx_kp_u_Extract_the_textual_content_of_a __pyx_string_tab[21] +#define __pyx_kp_u_Failed_to_initialize_object_for __pyx_string_tab[22] +#define __pyx_kp_u_Get_all_attributes_that_belong_t __pyx_string_tab[23] +#define __pyx_kp_u_Given_an_HTML_tag_name_e_g_div_c __pyx_string_tab[24] +#define __pyx_kp_u_Input_is_not_a_valid_HTML_commen __pyx_string_tab[25] +#define __pyx_kp_u_Insert_a_node_after_the_current __pyx_string_tab[26] +#define __pyx_kp_u_Insert_a_node_before_the_curren __pyx_string_tab[27] +#define __pyx_kp_u_Insert_a_node_inside_at_the_end __pyx_string_tab[28] +#define __pyx_kp_u_Iterates_over_all_text_nodes_and __pyx_string_tab[29] +#define __pyx_kp_u_Iterates_over_all_text_nodes_and_2 __pyx_string_tab[30] +#define __pyx_kp_u_LexborHTMLParser_chars __pyx_string_tab[31] +#define __pyx_kp_u_LexborHTMLParser_create_node_lin __pyx_string_tab[32] +#define __pyx_kp_u_LexborHTMLParser_merge_text_node_2 __pyx_string_tab[33] +#define __pyx_kp_u_LexborHTMLParser_strip_tags_line __pyx_string_tab[34] +#define __pyx_kp_u_LexborHTMLParser_unwrap_tags_lin __pyx_string_tab[35] +#define __pyx_kp_u_LexborNode_attributes___get___li __pyx_string_tab[36] +#define __pyx_kp_u_LexborNode_attrs___get___line_40 __pyx_string_tab[37] +#define __pyx_kp_u_LexborNode_comment_content___get __pyx_string_tab[38] +#define __pyx_kp_u_LexborNode_decompose_line_313 __pyx_string_tab[39] +#define __pyx_kp_u_LexborNode_insert_after_line_747 __pyx_string_tab[40] +#define __pyx_kp_u_LexborNode_insert_before_line_69 __pyx_string_tab[41] +#define __pyx_kp_u_LexborNode_insert_child_line_798 __pyx_string_tab[42] +#define __pyx_kp_u_LexborNode_merge_text_nodes_line __pyx_string_tab[43] +#define __pyx_kp_u_LexborNode_raw_value___get___lin __pyx_string_tab[44] +#define __pyx_kp_u_LexborNode_replace_with_line_644 __pyx_string_tab[45] +#define __pyx_kp_u_LexborNode_s __pyx_string_tab[46] +#define __pyx_kp_u_LexborNode_strip_tags_line_337 __pyx_string_tab[47] +#define __pyx_kp_u_LexborNode_unwrap_line_492 __pyx_string_tab[48] +#define __pyx_kp_u_LexborNode_unwrap_tags_line_536 __pyx_string_tab[49] +#define __pyx_kp_u_No_matching_signature_found __pyx_string_tab[50] +#define __pyx_kp_u_None __pyx_string_tab[51] +#define __pyx_kp_u_Note_that_Cython_is_deliberately __pyx_string_tab[52] +#define __pyx_kp_u_Optional_Parser __pyx_string_tab[53] +#define __pyx_kp_u_Query_must_be_a_string __pyx_string_tab[54] +#define __pyx_kp_u_Remove_specified_tags_from_the_H __pyx_string_tab[55] +#define __pyx_kp_u_Remove_specified_tags_from_the_n __pyx_string_tab[56] +#define __pyx_kp_u_Remove_the_current_node_from_the __pyx_string_tab[57] +#define __pyx_kp_u_Replace_current_Node_with_specif __pyx_string_tab[58] +#define __pyx_kp_u_Replace_node_with_whatever_is_in __pyx_string_tab[59] +#define __pyx_kp_u_Return_the_raw_unparsed_original __pyx_string_tab[60] +#define __pyx_kp_u_Tag_name_cannot_be_empty __pyx_string_tab[61] +#define __pyx_kp_u_Tag_name_is_too_long __pyx_string_tab[62] +#define __pyx_kp_u_The_specified_HTML_input_is_too __pyx_string_tab[63] +#define __pyx_kp_u_This_features_is_not_supported_b __pyx_string_tab[64] +#define __pyx_kp_u_UTF_8 __pyx_string_tab[65] +#define __pyx_kp_u_Unwraps_specified_tags_from_the __pyx_string_tab[66] +#define __pyx_kp_u_Unwraps_specified_tags_from_the_2 __pyx_string_tab[67] +#define __pyx_kp_u__10 __pyx_string_tab[68] +#define __pyx_kp_u__11 __pyx_string_tab[69] +#define __pyx_kp_u__12 __pyx_string_tab[70] +#define __pyx_kp_u__13 __pyx_string_tab[71] +#define __pyx_kp_u__2 __pyx_string_tab[72] +#define __pyx_kp_u__3 __pyx_string_tab[73] +#define __pyx_kp_u__4 __pyx_string_tab[74] +#define __pyx_kp_u__9 __pyx_string_tab[75] +#define __pyx_kp_u_add_note __pyx_string_tab[76] +#define __pyx_kp_u_arguments_got __pyx_string_tab[77] +#define __pyx_kp_u_attributes __pyx_string_tab[78] +#define __pyx_kp_u_body __pyx_string_tab[79] +#define __pyx_kp_u_comment __pyx_string_tab[80] +#define __pyx_kp_u_disable __pyx_string_tab[81] +#define __pyx_kp_u_doctype __pyx_string_tab[82] +#define __pyx_kp_u_document_is_NULL_even_after_html __pyx_string_tab[83] +#define __pyx_kp_u_enable __pyx_string_tab[84] +#define __pyx_kp_u_extract_html_comment_line_27 __pyx_string_tab[85] +#define __pyx_kp_u_gc __pyx_string_tab[86] +#define __pyx_kp_u_head __pyx_string_tab[87] +#define __pyx_kp_u_html_2 __pyx_string_tab[88] +#define __pyx_kp_u_html_body_head_er __pyx_string_tab[89] +#define __pyx_kp_u_isenabled __pyx_string_tab[90] +#define __pyx_kp_u_items_2 __pyx_string_tab[91] +#define __pyx_kp_u_s_s_s_s __pyx_string_tab[92] +#define __pyx_kp_u_selectolax_lexbor __pyx_string_tab[93] +#define __pyx_kp_u_selectolax_lexbor_attrs_pxi __pyx_string_tab[94] +#define __pyx_kp_u_selectolax_lexbor_node_pxi __pyx_string_tab[95] +#define __pyx_kp_u_selectolax_lexbor_pyx __pyx_string_tab[96] +#define __pyx_kp_u_selectolax_lexbor_selection_pxi __pyx_string_tab[97] +#define __pyx_kp_u_selectolax_lexbor_util_pxi __pyx_string_tab[98] +#define __pyx_kp_u_selectolax_lexbor_utils_pxi __pyx_string_tab[99] +#define __pyx_kp_u_selectolax_utils_pxi __pyx_string_tab[100] +#define __pyx_kp_u_self__fragment_document_self_doc __pyx_string_tab[101] +#define __pyx_kp_u_self__text_is_not_None_or_self_s __pyx_string_tab[102] +#define __pyx_kp_u_self_css_selectors_self_parser_s __pyx_string_tab[103] +#define __pyx_kp_u_self_node_cannot_be_converted_to __pyx_string_tab[104] +#define __pyx_kp_u_self_node_is_not_None_or_self_no __pyx_string_tab[105] +#define __pyx_kp_u_stringsource __pyx_string_tab[106] +#define __pyx_kp_u_text_2 __pyx_string_tab[107] +#define __pyx_kp_u_undef __pyx_string_tab[108] +#define __pyx_kp_u_utf_8 __pyx_string_tab[109] +#define __pyx_n_u_DOTALL __pyx_string_tab[110] +#define __pyx_n_u_ENCODING __pyx_string_tab[111] +#define __pyx_n_u_FRAGMENT __pyx_string_tab[112] +#define __pyx_n_u_HTMLParser __pyx_string_tab[113] +#define __pyx_n_u_IGNORECASE __pyx_string_tab[114] +#define __pyx_n_u_LexborAttributes __pyx_string_tab[115] +#define __pyx_n_u_LexborAttributes___iter __pyx_string_tab[116] +#define __pyx_n_u_LexborAttributes___reduce_cython __pyx_string_tab[117] +#define __pyx_n_u_LexborAttributes___setstate_cyth __pyx_string_tab[118] +#define __pyx_n_u_LexborAttributes_get __pyx_string_tab[119] +#define __pyx_n_u_LexborAttributes_items __pyx_string_tab[120] +#define __pyx_n_u_LexborAttributes_keys __pyx_string_tab[121] +#define __pyx_n_u_LexborAttributes_sget __pyx_string_tab[122] +#define __pyx_n_u_LexborAttributes_values __pyx_string_tab[123] +#define __pyx_n_u_LexborCSSSelector __pyx_string_tab[124] +#define __pyx_n_u_LexborCSSSelector___reduce_cytho __pyx_string_tab[125] +#define __pyx_n_u_LexborCSSSelector___setstate_cyt __pyx_string_tab[126] +#define __pyx_n_u_LexborCSSSelector__find __pyx_string_tab[127] +#define __pyx_n_u_LexborCSSSelector_any_matches __pyx_string_tab[128] +#define __pyx_n_u_LexborCSSSelector_find __pyx_string_tab[129] +#define __pyx_n_u_LexborCSSSelector_find_first __pyx_string_tab[130] +#define __pyx_n_u_LexborHTMLParser __pyx_string_tab[131] +#define __pyx_n_u_LexborHTMLParser___reduce_cython __pyx_string_tab[132] +#define __pyx_n_u_LexborHTMLParser___setstate_cyth __pyx_string_tab[133] +#define __pyx_n_u_LexborHTMLParser_any_css_matches __pyx_string_tab[134] +#define __pyx_n_u_LexborHTMLParser_clone __pyx_string_tab[135] +#define __pyx_n_u_LexborHTMLParser_create_node __pyx_string_tab[136] +#define __pyx_n_u_LexborHTMLParser_css __pyx_string_tab[137] +#define __pyx_n_u_LexborHTMLParser_css_first __pyx_string_tab[138] +#define __pyx_n_u_LexborHTMLParser_css_matches __pyx_string_tab[139] +#define __pyx_n_u_LexborHTMLParser_merge_text_node __pyx_string_tab[140] +#define __pyx_n_u_LexborHTMLParser_script_srcs_con __pyx_string_tab[141] +#define __pyx_n_u_LexborHTMLParser_scripts_contain __pyx_string_tab[142] +#define __pyx_n_u_LexborHTMLParser_select __pyx_string_tab[143] +#define __pyx_n_u_LexborHTMLParser_strip_tags __pyx_string_tab[144] +#define __pyx_n_u_LexborHTMLParser_tags __pyx_string_tab[145] +#define __pyx_n_u_LexborHTMLParser_text __pyx_string_tab[146] +#define __pyx_n_u_LexborHTMLParser_unwrap_tags __pyx_string_tab[147] +#define __pyx_n_u_LexborNode __pyx_string_tab[148] +#define __pyx_n_u_LexborNode___reduce_cython __pyx_string_tab[149] +#define __pyx_n_u_LexborNode___setstate_cython __pyx_string_tab[150] +#define __pyx_n_u_LexborNode_any_css_matches __pyx_string_tab[151] +#define __pyx_n_u_LexborNode_clone __pyx_string_tab[152] +#define __pyx_n_u_LexborNode_css __pyx_string_tab[153] +#define __pyx_n_u_LexborNode_css_first __pyx_string_tab[154] +#define __pyx_n_u_LexborNode_css_matches __pyx_string_tab[155] +#define __pyx_n_u_LexborNode_decompose __pyx_string_tab[156] +#define __pyx_n_u_LexborNode_insert_after __pyx_string_tab[157] +#define __pyx_n_u_LexborNode_insert_after_LexborNo __pyx_string_tab[158] +#define __pyx_n_u_LexborNode_insert_after_bytes __pyx_string_tab[159] +#define __pyx_n_u_LexborNode_insert_after_str __pyx_string_tab[160] +#define __pyx_n_u_LexborNode_insert_before __pyx_string_tab[161] +#define __pyx_n_u_LexborNode_insert_before_LexborN __pyx_string_tab[162] +#define __pyx_n_u_LexborNode_insert_before_bytes __pyx_string_tab[163] +#define __pyx_n_u_LexborNode_insert_before_str __pyx_string_tab[164] +#define __pyx_n_u_LexborNode_insert_child __pyx_string_tab[165] +#define __pyx_n_u_LexborNode_insert_child_LexborNo __pyx_string_tab[166] +#define __pyx_n_u_LexborNode_insert_child_bytes __pyx_string_tab[167] +#define __pyx_n_u_LexborNode_insert_child_str __pyx_string_tab[168] +#define __pyx_n_u_LexborNode_iter __pyx_string_tab[169] +#define __pyx_n_u_LexborNode_merge_text_nodes __pyx_string_tab[170] +#define __pyx_n_u_LexborNode_remove __pyx_string_tab[171] +#define __pyx_n_u_LexborNode_replace_with __pyx_string_tab[172] +#define __pyx_n_u_LexborNode_replace_with_LexborNo __pyx_string_tab[173] +#define __pyx_n_u_LexborNode_replace_with_bytes __pyx_string_tab[174] +#define __pyx_n_u_LexborNode_replace_with_str __pyx_string_tab[175] +#define __pyx_n_u_LexborNode_script_srcs_contain __pyx_string_tab[176] +#define __pyx_n_u_LexborNode_scripts_contain __pyx_string_tab[177] +#define __pyx_n_u_LexborNode_select __pyx_string_tab[178] +#define __pyx_n_u_LexborNode_strip_tags __pyx_string_tab[179] +#define __pyx_n_u_LexborNode_text __pyx_string_tab[180] +#define __pyx_n_u_LexborNode_text_lexbor __pyx_string_tab[181] +#define __pyx_n_u_LexborNode_traverse __pyx_string_tab[182] +#define __pyx_n_u_LexborNode_unwrap __pyx_string_tab[183] +#define __pyx_n_u_LexborNode_unwrap_tags __pyx_string_tab[184] +#define __pyx_n_u_LexborSelector __pyx_string_tab[185] +#define __pyx_n_u_LexborSelector___reduce_cython __pyx_string_tab[186] +#define __pyx_n_u_LexborSelector___setstate_cython __pyx_string_tab[187] +#define __pyx_n_u_LexborSelector_any_attribute_lon __pyx_string_tab[188] +#define __pyx_n_u_LexborSelector_any_text_contains __pyx_string_tab[189] +#define __pyx_n_u_LexborSelector_attribute_longer __pyx_string_tab[190] +#define __pyx_n_u_LexborSelector_css __pyx_string_tab[191] +#define __pyx_n_u_LexborSelector_text_contains __pyx_string_tab[192] +#define __pyx_n_u_Literal __pyx_string_tab[193] +#define __pyx_n_u_MAX_HTML_INPUT_SIZE __pyx_string_tab[194] +#define __pyx_n_u_Optional __pyx_string_tab[195] +#define __pyx_n_u_Parser __pyx_string_tab[196] +#define __pyx_n_u_ParserCls __pyx_string_tab[197] +#define __pyx_n_u_Pyx_PyDict_NextRef __pyx_string_tab[198] +#define __pyx_n_u_SelectolaxError __pyx_string_tab[199] +#define __pyx_n_u_TAG_TO_NAME __pyx_string_tab[200] +#define __pyx_n_u_TextContainer___reduce_cython __pyx_string_tab[201] +#define __pyx_n_u_TextContainer___setstate_cython __pyx_string_tab[202] +#define __pyx_n_u_TextContainer_append __pyx_string_tab[203] +#define __pyx_n_u_Type __pyx_string_tab[204] +#define __pyx_n_u_Union __pyx_string_tab[205] +#define __pyx_n_u_any_attribute_longer_than __pyx_string_tab[206] +#define __pyx_n_u_any_css_matches __pyx_string_tab[207] +#define __pyx_n_u_any_matches __pyx_string_tab[208] +#define __pyx_n_u_any_text_contains __pyx_string_tab[209] +#define __pyx_n_u_append __pyx_string_tab[210] +#define __pyx_n_u_args __pyx_string_tab[211] +#define __pyx_n_u_asyncio_coroutines __pyx_string_tab[212] +#define __pyx_n_u_attr __pyx_string_tab[213] +#define __pyx_n_u_attribute __pyx_string_tab[214] +#define __pyx_n_u_attribute_longer_than __pyx_string_tab[215] +#define __pyx_n_u_attributes_2 __pyx_string_tab[216] +#define __pyx_n_u_attrs __pyx_string_tab[217] +#define __pyx_n_u_body_2 __pyx_string_tab[218] +#define __pyx_n_u_bool __pyx_string_tab[219] +#define __pyx_n_u_bytes __pyx_string_tab[220] +#define __pyx_n_u_bytes_html __pyx_string_tab[221] +#define __pyx_n_u_bytes_val __pyx_string_tab[222] +#define __pyx_n_u_class_getitem __pyx_string_tab[223] +#define __pyx_n_u_cline_in_traceback __pyx_string_tab[224] +#define __pyx_n_u_clone __pyx_string_tab[225] +#define __pyx_n_u_cloned_document __pyx_string_tab[226] +#define __pyx_n_u_cloned_node __pyx_string_tab[227] +#define __pyx_n_u_close __pyx_string_tab[228] +#define __pyx_n_u_cls __pyx_string_tab[229] +#define __pyx_n_u_collection __pyx_string_tab[230] +#define __pyx_n_u_combined __pyx_string_tab[231] +#define __pyx_n_u_compile __pyx_string_tab[232] +#define __pyx_n_u_container __pyx_string_tab[233] +#define __pyx_n_u_create_node __pyx_string_tab[234] +#define __pyx_n_u_create_tag __pyx_string_tab[235] +#define __pyx_n_u_css __pyx_string_tab[236] +#define __pyx_n_u_css_first __pyx_string_tab[237] +#define __pyx_n_u_css_matches __pyx_string_tab[238] +#define __pyx_n_u_current_node __pyx_string_tab[239] +#define __pyx_n_u_d __pyx_string_tab[240] +#define __pyx_n_u_decode __pyx_string_tab[241] +#define __pyx_n_u_decode_errors __pyx_string_tab[242] +#define __pyx_n_u_decompose __pyx_string_tab[243] +#define __pyx_n_u_deep __pyx_string_tab[244] +#define __pyx_n_u_default __pyx_string_tab[245] +#define __pyx_n_u_defaults __pyx_string_tab[246] +#define __pyx_n_u_delete_empty __pyx_string_tab[247] +#define __pyx_n_u_dict __pyx_string_tab[248] +#define __pyx_n_u_dict_2 __pyx_string_tab[249] +#define __pyx_n_u_do_create_tag __pyx_string_tab[250] +#define __pyx_n_u_do_parse_fragment __pyx_string_tab[251] +#define __pyx_n_u_doc __pyx_string_tab[252] +#define __pyx_n_u_document __pyx_string_tab[253] +#define __pyx_n_u_document_no_body __pyx_string_tab[254] +#define __pyx_n_u_document_no_head __pyx_string_tab[255] +#define __pyx_n_u_document_no_head_no_body __pyx_string_tab[256] +#define __pyx_n_u_dom_node __pyx_string_tab[257] +#define __pyx_n_u_element __pyx_string_tab[258] +#define __pyx_n_u_encode __pyx_string_tab[259] +#define __pyx_n_u_error __pyx_string_tab[260] +#define __pyx_n_u_errors __pyx_string_tab[261] +#define __pyx_n_u_extract_html_comment __pyx_string_tab[262] +#define __pyx_n_u_find __pyx_string_tab[263] +#define __pyx_n_u_find_2 __pyx_string_tab[264] +#define __pyx_n_u_find_first __pyx_string_tab[265] +#define __pyx_n_u_finditer __pyx_string_tab[266] +#define __pyx_n_u_first_child __pyx_string_tab[267] +#define __pyx_n_u_flags __pyx_string_tab[268] +#define __pyx_n_u_frag_type __pyx_string_tab[269] +#define __pyx_n_u_fragment __pyx_string_tab[270] +#define __pyx_n_u_fullmatch __pyx_string_tab[271] +#define __pyx_n_u_func __pyx_string_tab[272] +#define __pyx_n_u_fused_sigindex __pyx_string_tab[273] +#define __pyx_n_u_get __pyx_string_tab[274] +#define __pyx_n_u_getLogger __pyx_string_tab[275] +#define __pyx_n_u_get_fragment_type __pyx_string_tab[276] +#define __pyx_n_u_getitem __pyx_string_tab[277] +#define __pyx_n_u_getstate __pyx_string_tab[278] +#define __pyx_n_u_group __pyx_string_tab[279] +#define __pyx_n_u_has_body __pyx_string_tab[280] +#define __pyx_n_u_has_head __pyx_string_tab[281] +#define __pyx_n_u_has_html __pyx_string_tab[282] +#define __pyx_n_u_head_2 __pyx_string_tab[283] +#define __pyx_n_u_head_and_body __pyx_string_tab[284] +#define __pyx_n_u_html __pyx_string_tab[285] +#define __pyx_n_u_html_len __pyx_string_tab[286] +#define __pyx_n_u_html_re __pyx_string_tab[287] +#define __pyx_n_u_i __pyx_string_tab[288] +#define __pyx_n_u_ignore __pyx_string_tab[289] +#define __pyx_n_u_import __pyx_string_tab[290] +#define __pyx_n_u_include_text __pyx_string_tab[291] +#define __pyx_n_u_inner_html __pyx_string_tab[292] +#define __pyx_n_u_insert_after __pyx_string_tab[293] +#define __pyx_n_u_insert_after_LexborNode __pyx_string_tab[294] +#define __pyx_n_u_insert_after_bytes __pyx_string_tab[295] +#define __pyx_n_u_insert_after_str __pyx_string_tab[296] +#define __pyx_n_u_insert_before __pyx_string_tab[297] +#define __pyx_n_u_insert_before_LexborNode __pyx_string_tab[298] +#define __pyx_n_u_insert_before_bytes __pyx_string_tab[299] +#define __pyx_n_u_insert_before_str __pyx_string_tab[300] +#define __pyx_n_u_insert_child __pyx_string_tab[301] +#define __pyx_n_u_insert_child_LexborNode __pyx_string_tab[302] +#define __pyx_n_u_insert_child_bytes __pyx_string_tab[303] +#define __pyx_n_u_insert_child_str __pyx_string_tab[304] +#define __pyx_n_u_is_comment_node __pyx_string_tab[305] +#define __pyx_n_u_is_coroutine __pyx_string_tab[306] +#define __pyx_n_u_is_empty_text_node __pyx_string_tab[307] +#define __pyx_n_u_is_fragment __pyx_string_tab[308] +#define __pyx_n_u_items __pyx_string_tab[309] +#define __pyx_n_u_iter __pyx_string_tab[310] +#define __pyx_n_u_iter_2 __pyx_string_tab[311] +#define __pyx_n_u_key __pyx_string_tab[312] +#define __pyx_n_u_keys __pyx_string_tab[313] +#define __pyx_n_u_kwargs __pyx_string_tab[314] +#define __pyx_n_u_left_length __pyx_string_tab[315] +#define __pyx_n_u_left_text __pyx_string_tab[316] +#define __pyx_n_u_length __pyx_string_tab[317] +#define __pyx_n_u_logger __pyx_string_tab[318] +#define __pyx_n_u_logging __pyx_string_tab[319] +#define __pyx_n_u_lxb_node __pyx_string_tab[320] +#define __pyx_n_u_main __pyx_string_tab[321] +#define __pyx_n_u_match __pyx_string_tab[322] +#define __pyx_n_u_mem_id __pyx_string_tab[323] +#define __pyx_n_u_merge_text_nodes __pyx_string_tab[324] +#define __pyx_n_u_metaclass __pyx_string_tab[325] +#define __pyx_n_u_module __pyx_string_tab[326] +#define __pyx_n_u_mro_entries __pyx_string_tab[327] +#define __pyx_n_u_msg __pyx_string_tab[328] +#define __pyx_n_u_n_results __pyx_string_tab[329] +#define __pyx_n_u_name __pyx_string_tab[330] +#define __pyx_n_u_name_2 __pyx_string_tab[331] +#define __pyx_n_u_new __pyx_string_tab[332] +#define __pyx_n_u_new_node __pyx_string_tab[333] +#define __pyx_n_u_next __pyx_string_tab[334] +#define __pyx_n_u_next_node __pyx_string_tab[335] +#define __pyx_n_u_node __pyx_string_tab[336] +#define __pyx_n_u_node_src __pyx_string_tab[337] +#define __pyx_n_u_node_text __pyx_string_tab[338] +#define __pyx_n_u_nodes __pyx_string_tab[339] +#define __pyx_n_u_only_first __pyx_string_tab[340] +#define __pyx_n_u_parent __pyx_string_tab[341] +#define __pyx_n_u_parse_fragment __pyx_string_tab[342] +#define __pyx_n_u_parser_cls __pyx_string_tab[343] +#define __pyx_n_u_pop __pyx_string_tab[344] +#define __pyx_n_u_prepare __pyx_string_tab[345] +#define __pyx_n_u_preprocess_input __pyx_string_tab[346] +#define __pyx_n_u_py_text __pyx_string_tab[347] +#define __pyx_n_u_pybyte_name __pyx_string_tab[348] +#define __pyx_n_u_pyx_capi __pyx_string_tab[349] +#define __pyx_n_u_pyx_checksum __pyx_string_tab[350] +#define __pyx_n_u_pyx_result __pyx_string_tab[351] +#define __pyx_n_u_pyx_state __pyx_string_tab[352] +#define __pyx_n_u_pyx_type __pyx_string_tab[353] +#define __pyx_n_u_pyx_unpickle_LexborSelector __pyx_string_tab[354] +#define __pyx_n_u_pyx_unpickle_TextContainer __pyx_string_tab[355] +#define __pyx_n_u_pyx_vtable __pyx_string_tab[356] +#define __pyx_n_u_qualname __pyx_string_tab[357] +#define __pyx_n_u_queries __pyx_string_tab[358] +#define __pyx_n_u_query __pyx_string_tab[359] +#define __pyx_n_u_re __pyx_string_tab[360] +#define __pyx_n_u_recursive __pyx_string_tab[361] +#define __pyx_n_u_reduce __pyx_string_tab[362] +#define __pyx_n_u_reduce_cython __pyx_string_tab[363] +#define __pyx_n_u_reduce_ex __pyx_string_tab[364] +#define __pyx_n_u_remove __pyx_string_tab[365] +#define __pyx_n_u_replace __pyx_string_tab[366] +#define __pyx_n_u_replace_with __pyx_string_tab[367] +#define __pyx_n_u_replace_with_LexborNode __pyx_string_tab[368] +#define __pyx_n_u_replace_with_bytes __pyx_string_tab[369] +#define __pyx_n_u_replace_with_str __pyx_string_tab[370] +#define __pyx_n_u_result __pyx_string_tab[371] +#define __pyx_n_u_results __pyx_string_tab[372] +#define __pyx_n_u_return __pyx_string_tab[373] +#define __pyx_n_u_right_length __pyx_string_tab[374] +#define __pyx_n_u_right_text __pyx_string_tab[375] +#define __pyx_n_u_root __pyx_string_tab[376] +#define __pyx_n_u_script __pyx_string_tab[377] +#define __pyx_n_u_script_srcs_contain __pyx_string_tab[378] +#define __pyx_n_u_scripts_contain __pyx_string_tab[379] +#define __pyx_n_u_select __pyx_string_tab[380] +#define __pyx_n_u_selectolax __pyx_string_tab[381] +#define __pyx_n_u_selectolax_lexbor __pyx_string_tab[382] +#define __pyx_n_u_selector __pyx_string_tab[383] +#define __pyx_n_u_selectors __pyx_string_tab[384] +#define __pyx_n_u_self __pyx_string_tab[385] +#define __pyx_n_u_send __pyx_string_tab[386] +#define __pyx_n_u_separator __pyx_string_tab[387] +#define __pyx_n_u_set_name __pyx_string_tab[388] +#define __pyx_n_u_setdefault __pyx_string_tab[389] +#define __pyx_n_u_setstate __pyx_string_tab[390] +#define __pyx_n_u_setstate_cython __pyx_string_tab[391] +#define __pyx_n_u_sget __pyx_string_tab[392] +#define __pyx_n_u_skip_empty __pyx_string_tab[393] +#define __pyx_n_u_src __pyx_string_tab[394] +#define __pyx_n_u_src_nodes __pyx_string_tab[395] +#define __pyx_n_u_start __pyx_string_tab[396] +#define __pyx_n_u_state __pyx_string_tab[397] +#define __pyx_n_u_status __pyx_string_tab[398] +#define __pyx_n_u_str __pyx_string_tab[399] +#define __pyx_n_u_str_len __pyx_string_tab[400] +#define __pyx_n_u_strict __pyx_string_tab[401] +#define __pyx_n_u_strip __pyx_string_tab[402] +#define __pyx_n_u_strip_tags __pyx_string_tab[403] +#define __pyx_n_u_tag __pyx_string_tab[404] +#define __pyx_n_u_tag_id __pyx_string_tab[405] +#define __pyx_n_u_tags __pyx_string_tab[406] +#define __pyx_n_u_test __pyx_string_tab[407] +#define __pyx_n_u_text __pyx_string_tab[408] +#define __pyx_n_u_text_contains __pyx_string_tab[409] +#define __pyx_n_u_text_lexbor __pyx_string_tab[410] +#define __pyx_n_u_text_nodes __pyx_string_tab[411] +#define __pyx_n_u_throw __pyx_string_tab[412] +#define __pyx_n_u_traverse __pyx_string_tab[413] +#define __pyx_n_u_tree __pyx_string_tab[414] +#define __pyx_n_u_typing __pyx_string_tab[415] +#define __pyx_n_u_unicode_text __pyx_string_tab[416] +#define __pyx_n_u_unknown __pyx_string_tab[417] +#define __pyx_n_u_unwrap __pyx_string_tab[418] +#define __pyx_n_u_unwrap_tags __pyx_string_tab[419] +#define __pyx_n_u_update __pyx_string_tab[420] +#define __pyx_n_u_use_setstate __pyx_string_tab[421] +#define __pyx_n_u_val __pyx_string_tab[422] +#define __pyx_n_u_value __pyx_string_tab[423] +#define __pyx_n_u_values __pyx_string_tab[424] +#define __pyx_kp_b_ __pyx_string_tab[425] +#define __pyx_kp_b_int_lxb_char_t_const_size_t_int __pyx_string_tab[426] +#define __pyx_kp_b_iso88591_00DOS_HD_E_vZ_z_U_Q_WAQ_IQ_q __pyx_string_tab[427] +#define __pyx_kp_b_iso88591_1F __pyx_string_tab[428] +#define __pyx_kp_b_iso88591_1_Qd_D __pyx_string_tab[429] +#define __pyx_kp_b_iso88591_1_WWX2_8_E_4q_Qk_AT_AR_ffg_5_1 __pyx_string_tab[430] +#define __pyx_kp_b_iso88591_1_t1_1_q __pyx_string_tab[431] +#define __pyx_kp_b_iso88591_1_z_a_T_1F_Q_iq_D_a_s_1_y_j___q __pyx_string_tab[432] +#define __pyx_kp_b_iso88591_44H_Waab_HD_E_vZ_z_U_Q_q_q __pyx_string_tab[433] +#define __pyx_kp_b_iso88591_4A2_4z_A_Q __pyx_string_tab[434] +#define __pyx_kp_b_iso88591_5Q_1_G1_WAQ_0_i_a_Q_oQa_1_d_q_1 __pyx_string_tab[435] +#define __pyx_kp_b_iso88591_5Q_G1_4t1A_z_A __pyx_string_tab[436] +#define __pyx_kp_b_iso88591_9_G1_4t1A_waq __pyx_string_tab[437] +#define __pyx_kp_b_iso88591_A __pyx_string_tab[438] +#define __pyx_kp_b_iso88591_AV1 __pyx_string_tab[439] +#define __pyx_kp_b_iso88591_AV1_2 __pyx_string_tab[440] +#define __pyx_kp_b_iso88591_A_1Cq_q_E __pyx_string_tab[441] +#define __pyx_kp_b_iso88591_A_2 __pyx_string_tab[442] +#define __pyx_kp_b_iso88591_A_4q_6_Bd_Bd __pyx_string_tab[443] +#define __pyx_kp_b_iso88591_A_4q_AQ_3avRq_AQ_0_d_Q_AQd_c_1_Q __pyx_string_tab[444] +#define __pyx_kp_b_iso88591_A_4q_c_2_q_83a_B_1_a_Qj __pyx_string_tab[445] +#define __pyx_kp_b_iso88591_A_4w_3a_D_y_Qj_D_Qe1_1_gQa_a_HD __pyx_string_tab[446] +#define __pyx_kp_b_iso88591_A_4w_Q_D_y_Qj_4vT_1_WAQ_Q_HD_q_6 __pyx_string_tab[447] +#define __pyx_kp_b_iso88591_A_4z_1A_e7_1_0_Yo_Zbbeeffg_Q_A_K __pyx_string_tab[448] +#define __pyx_kp_b_iso88591_A_6a_3a_a_6a_8_nBa_s_Q_K1_nA_d_q __pyx_string_tab[449] +#define __pyx_kp_b_iso88591_A_D_Q_e3a_A_t6_34t6_T_fTWWX_5Qd __pyx_string_tab[450] +#define __pyx_kp_b_iso88591_A_Jaq __pyx_string_tab[451] +#define __pyx_kp_b_iso88591_A_L_t7_q_q_q __pyx_string_tab[452] +#define __pyx_kp_b_iso88591_A_Q_a_1_4vS_1_t5_Qe6_fG_VW __pyx_string_tab[453] +#define __pyx_kp_b_iso88591_A_Qhe7_K1_WIQ_Qa_y_1_oQa_Qd_q_q __pyx_string_tab[454] +#define __pyx_kp_b_iso88591_A_Qhe7_K1_WIQ_Qa_y_1_oQa_at7_q_3 __pyx_string_tab[455] +#define __pyx_kp_b_iso88591_A_Qhe7_K1_WIQ_Qa_y_1_oQa_at7_q_q __pyx_string_tab[456] +#define __pyx_kp_b_iso88591_A_a_WAQ_6_A_aq_t7_1_e3DA_q __pyx_string_tab[457] +#define __pyx_kp_b_iso88591_A_t1D_y_AZq __pyx_string_tab[458] +#define __pyx_kp_b_iso88591_A_t5 __pyx_string_tab[459] +#define __pyx_kp_b_iso88591_A_t5_2 __pyx_string_tab[460] +#define __pyx_kp_b_iso88591_A_t5_3 __pyx_string_tab[461] +#define __pyx_kp_b_iso88591_A_t5_AQ __pyx_string_tab[462] +#define __pyx_kp_b_iso88591_A_t5_AQ_2 __pyx_string_tab[463] +#define __pyx_kp_b_iso88591_A_t5_AQ_3 __pyx_string_tab[464] +#define __pyx_kp_b_iso88591_A_t6_q __pyx_string_tab[465] +#define __pyx_kp_b_iso88591_A_t7_5_Ja __pyx_string_tab[466] +#define __pyx_kp_b_iso88591_A_t9A __pyx_string_tab[467] +#define __pyx_kp_b_iso88591_DA __pyx_string_tab[468] +#define __pyx_kp_b_iso88591_DA_4z_1A_e7_1_0_Yo_Zccffggh_Q_1 __pyx_string_tab[469] +#define __pyx_kp_b_iso88591_LIUV_HD_4_aq_t1_uD_d_1_t1D_QgRs __pyx_string_tab[470] +#define __pyx_kp_b_iso88591_PPYYZ_HD_4_aq_uD_d_1_t1D_QgRs_1 __pyx_string_tab[471] +#define __pyx_kp_b_iso88591_Q __pyx_string_tab[472] +#define __pyx_kp_b_iso88591_Q_1_d_q_t_Q_d_QgT_1_Cq_Rq_wd_Ba __pyx_string_tab[473] +#define __pyx_kp_b_iso88591_Q_4vQ_Qa_A_z_A_q_A_z_A_E_1Ja_q __pyx_string_tab[474] +#define __pyx_kp_b_iso88591_T_A_G1F_a_vWE_Q_q_q_t1G_gQ_t1G __pyx_string_tab[475] +#define __pyx_kp_b_iso88591_T_Q_G1F_a_vWE_Q_q_q_d_7_WA_d_7 __pyx_string_tab[476] +#define __pyx_kp_b_iso88591__14 __pyx_string_tab[477] +#define __pyx_kp_b_iso88591_aq_t3a_a_1_1 __pyx_string_tab[478] +#define __pyx_kp_b_iso88591_q_0_kQR_7_0_1B_PQ_1 __pyx_string_tab[479] +#define __pyx_kp_b_iso88591_q_0_kQR_7_q0_a_1 __pyx_string_tab[480] +#define __pyx_kp_b_iso88591_q_4q_1 __pyx_string_tab[481] +#define __pyx_kp_b_iso88591_q_4vS_gYVW_1_A_0_A_q_34q __pyx_string_tab[482] +#define __pyx_kp_b_iso88591_q_5T_QfD __pyx_string_tab[483] +#define __pyx_kp_b_iso88591_q_d_A_4uM_A_q_1_7t1_4uL_c_4uA_A __pyx_string_tab[484] +#define __pyx_kp_b_iso88591_t1_j_AS_AQ __pyx_string_tab[485] +#define __pyx_kp_b_iso88591_t1_z_b_5Rq_q_q_q_5_Cq_q_3c_q_3c __pyx_string_tab[486] +#define __pyx_kp_b_iso88591_t5_7_1 __pyx_string_tab[487] +#define __pyx_kp_b_iso88591_xq_vS_A_b_uF_2V1_AQ __pyx_string_tab[488] +#define __pyx_float_250e_7 __pyx_number_tab[0] +#define __pyx_int_0 __pyx_number_tab[1] +#define __pyx_int_1 __pyx_number_tab[2] +#define __pyx_int_2 __pyx_number_tab[3] +#define __pyx_int_4 __pyx_number_tab[4] +#define __pyx_int_5 __pyx_number_tab[5] +#define __pyx_int_111138658 __pyx_number_tab[6] +#define __pyx_int_207486590 __pyx_number_tab[7] +/* #### Code section: module_state_clear ### */ +#if CYTHON_USE_MODULE_STATE +static CYTHON_SMALL_CODE int __pyx_m_clear(PyObject *m) { + __pyx_mstatetype *clear_module_state = __Pyx_PyModule_GetState(m); + if (!clear_module_state) return 0; + Py_CLEAR(clear_module_state->__pyx_d); + Py_CLEAR(clear_module_state->__pyx_b); + Py_CLEAR(clear_module_state->__pyx_cython_runtime); + Py_CLEAR(clear_module_state->__pyx_empty_tuple); + Py_CLEAR(clear_module_state->__pyx_empty_bytes); + Py_CLEAR(clear_module_state->__pyx_empty_unicode); + #if CYTHON_PEP489_MULTI_PHASE_INIT + __Pyx_State_RemoveModule(NULL); + #endif + Py_CLEAR(clear_module_state->__pyx_ptype_7cpython_4bool_bool); + Py_CLEAR(clear_module_state->__pyx_ptype_7cpython_4type_type); + Py_CLEAR(clear_module_state->__pyx_ptype_10selectolax_6lexbor_LexborNode); + Py_CLEAR(clear_module_state->__pyx_type_10selectolax_6lexbor_LexborNode); + Py_CLEAR(clear_module_state->__pyx_ptype_10selectolax_6lexbor_LexborCSSSelector); + Py_CLEAR(clear_module_state->__pyx_type_10selectolax_6lexbor_LexborCSSSelector); + Py_CLEAR(clear_module_state->__pyx_ptype_10selectolax_6lexbor_LexborHTMLParser); + Py_CLEAR(clear_module_state->__pyx_type_10selectolax_6lexbor_LexborHTMLParser); + Py_CLEAR(clear_module_state->__pyx_ptype_10selectolax_6lexbor_LexborAttributes); + Py_CLEAR(clear_module_state->__pyx_type_10selectolax_6lexbor_LexborAttributes); + Py_CLEAR(clear_module_state->__pyx_ptype_10selectolax_6lexbor_TextContainer); + Py_CLEAR(clear_module_state->__pyx_type_10selectolax_6lexbor_TextContainer); + Py_CLEAR(clear_module_state->__pyx_ptype_10selectolax_6lexbor_LexborSelector); + Py_CLEAR(clear_module_state->__pyx_type_10selectolax_6lexbor_LexborSelector); + Py_CLEAR(clear_module_state->__pyx_ptype_10selectolax_6lexbor___pyx_scope_struct____iter__); + Py_CLEAR(clear_module_state->__pyx_type_10selectolax_6lexbor___pyx_scope_struct____iter__); + Py_CLEAR(clear_module_state->__pyx_ptype_10selectolax_6lexbor___pyx_scope_struct_1_items); + Py_CLEAR(clear_module_state->__pyx_type_10selectolax_6lexbor___pyx_scope_struct_1_items); + Py_CLEAR(clear_module_state->__pyx_ptype_10selectolax_6lexbor___pyx_scope_struct_2_values); + Py_CLEAR(clear_module_state->__pyx_type_10selectolax_6lexbor___pyx_scope_struct_2_values); + Py_CLEAR(clear_module_state->__pyx_ptype_10selectolax_6lexbor___pyx_scope_struct_3_iter); + Py_CLEAR(clear_module_state->__pyx_type_10selectolax_6lexbor___pyx_scope_struct_3_iter); + Py_CLEAR(clear_module_state->__pyx_ptype_10selectolax_6lexbor___pyx_scope_struct_4_traverse); + Py_CLEAR(clear_module_state->__pyx_type_10selectolax_6lexbor___pyx_scope_struct_4_traverse); + Py_CLEAR(clear_module_state->__pyx_k__5); + Py_CLEAR(clear_module_state->__pyx_k__6); + Py_CLEAR(clear_module_state->__pyx_k__7); + Py_CLEAR(clear_module_state->__pyx_k__8); + for (int i=0; i<13; ++i) { Py_CLEAR(clear_module_state->__pyx_tuple[i]); } + for (int i=0; i<89; ++i) { Py_CLEAR(clear_module_state->__pyx_codeobj_tab[i]); } + for (int i=0; i<489; ++i) { Py_CLEAR(clear_module_state->__pyx_string_tab[i]); } + for (int i=0; i<8; ++i) { Py_CLEAR(clear_module_state->__pyx_number_tab[i]); } +/* #### Code section: module_state_clear_contents ### */ +/* CommonTypesMetaclass.module_state_clear */ +Py_CLEAR(clear_module_state->__pyx_CommonTypesMetaclassType); + +/* CythonFunctionShared.module_state_clear */ +Py_CLEAR(clear_module_state->__pyx_CyFunctionType); + +/* FusedFunction.module_state_clear */ +Py_CLEAR(clear_module_state->__pyx_FusedFunctionType); + +/* Generator.module_state_clear */ +Py_CLEAR(clear_module_state->__pyx_GeneratorType); + +/* #### Code section: module_state_clear_end ### */ +return 0; +} +#endif +/* #### Code section: module_state_traverse ### */ +#if CYTHON_USE_MODULE_STATE +static CYTHON_SMALL_CODE int __pyx_m_traverse(PyObject *m, visitproc visit, void *arg) { + __pyx_mstatetype *traverse_module_state = __Pyx_PyModule_GetState(m); + if (!traverse_module_state) return 0; + Py_VISIT(traverse_module_state->__pyx_d); + Py_VISIT(traverse_module_state->__pyx_b); + Py_VISIT(traverse_module_state->__pyx_cython_runtime); + __Pyx_VISIT_CONST(traverse_module_state->__pyx_empty_tuple); + __Pyx_VISIT_CONST(traverse_module_state->__pyx_empty_bytes); + __Pyx_VISIT_CONST(traverse_module_state->__pyx_empty_unicode); + Py_VISIT(traverse_module_state->__pyx_ptype_7cpython_4bool_bool); + Py_VISIT(traverse_module_state->__pyx_ptype_7cpython_4type_type); + Py_VISIT(traverse_module_state->__pyx_ptype_10selectolax_6lexbor_LexborNode); + Py_VISIT(traverse_module_state->__pyx_type_10selectolax_6lexbor_LexborNode); + Py_VISIT(traverse_module_state->__pyx_ptype_10selectolax_6lexbor_LexborCSSSelector); + Py_VISIT(traverse_module_state->__pyx_type_10selectolax_6lexbor_LexborCSSSelector); + Py_VISIT(traverse_module_state->__pyx_ptype_10selectolax_6lexbor_LexborHTMLParser); + Py_VISIT(traverse_module_state->__pyx_type_10selectolax_6lexbor_LexborHTMLParser); + Py_VISIT(traverse_module_state->__pyx_ptype_10selectolax_6lexbor_LexborAttributes); + Py_VISIT(traverse_module_state->__pyx_type_10selectolax_6lexbor_LexborAttributes); + Py_VISIT(traverse_module_state->__pyx_ptype_10selectolax_6lexbor_TextContainer); + Py_VISIT(traverse_module_state->__pyx_type_10selectolax_6lexbor_TextContainer); + Py_VISIT(traverse_module_state->__pyx_ptype_10selectolax_6lexbor_LexborSelector); + Py_VISIT(traverse_module_state->__pyx_type_10selectolax_6lexbor_LexborSelector); + Py_VISIT(traverse_module_state->__pyx_ptype_10selectolax_6lexbor___pyx_scope_struct____iter__); + Py_VISIT(traverse_module_state->__pyx_type_10selectolax_6lexbor___pyx_scope_struct____iter__); + Py_VISIT(traverse_module_state->__pyx_ptype_10selectolax_6lexbor___pyx_scope_struct_1_items); + Py_VISIT(traverse_module_state->__pyx_type_10selectolax_6lexbor___pyx_scope_struct_1_items); + Py_VISIT(traverse_module_state->__pyx_ptype_10selectolax_6lexbor___pyx_scope_struct_2_values); + Py_VISIT(traverse_module_state->__pyx_type_10selectolax_6lexbor___pyx_scope_struct_2_values); + Py_VISIT(traverse_module_state->__pyx_ptype_10selectolax_6lexbor___pyx_scope_struct_3_iter); + Py_VISIT(traverse_module_state->__pyx_type_10selectolax_6lexbor___pyx_scope_struct_3_iter); + Py_VISIT(traverse_module_state->__pyx_ptype_10selectolax_6lexbor___pyx_scope_struct_4_traverse); + Py_VISIT(traverse_module_state->__pyx_type_10selectolax_6lexbor___pyx_scope_struct_4_traverse); + Py_VISIT(traverse_module_state->__pyx_k__5); + Py_VISIT(traverse_module_state->__pyx_k__6); + Py_VISIT(traverse_module_state->__pyx_k__7); + Py_VISIT(traverse_module_state->__pyx_k__8); + for (int i=0; i<13; ++i) { __Pyx_VISIT_CONST(traverse_module_state->__pyx_tuple[i]); } + for (int i=0; i<89; ++i) { __Pyx_VISIT_CONST(traverse_module_state->__pyx_codeobj_tab[i]); } + for (int i=0; i<489; ++i) { __Pyx_VISIT_CONST(traverse_module_state->__pyx_string_tab[i]); } + for (int i=0; i<8; ++i) { __Pyx_VISIT_CONST(traverse_module_state->__pyx_number_tab[i]); } +/* #### Code section: module_state_traverse_contents ### */ +/* CommonTypesMetaclass.module_state_traverse */ +Py_VISIT(traverse_module_state->__pyx_CommonTypesMetaclassType); + +/* CythonFunctionShared.module_state_traverse */ +Py_VISIT(traverse_module_state->__pyx_CyFunctionType); + +/* FusedFunction.module_state_traverse */ +Py_VISIT(traverse_module_state->__pyx_FusedFunctionType); + +/* Generator.module_state_traverse */ +Py_VISIT(traverse_module_state->__pyx_GeneratorType); + +/* #### Code section: module_state_traverse_end ### */ +return 0; +} +#endif +/* #### Code section: module_code ### */ + +/* "__pyx_ff_map_fused_ee27be_1_3_242639__11__dunderbuiltin__dunder_PyObject__ptr__and_1__etc":6 + * int __Pyx_Is_Little_Endian() + * + * @cname('__pyx_ff_map_fused_ee27be_1_3_242639__11__dunderbuiltin__dunder_PyObject__ptr__and_1__etc') # <<<<<<<<<<<<<< + * cdef str map_fused_type(object arg): + * +*/ + +static PyObject *__pyx_ff_map_fused_ee27be_1_3_242639__11__dunderbuiltin__dunder_PyObject__ptr__and_1__etc(PyObject *__pyx_v_arg) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + size_t __pyx_t_5; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("map_fused_type", 0); + + /* "__pyx_ff_map_fused_ee27be_1_3_242639__11__dunderbuiltin__dunder_PyObject__ptr__and_1__etc":9 + * cdef str map_fused_type(object arg): + * + * if isinstance(arg, str): # <<<<<<<<<<<<<< + * return 'str' + * +*/ + __pyx_t_1 = PyUnicode_Check(__pyx_v_arg); + if (__pyx_t_1) { + + /* "__pyx_ff_map_fused_ee27be_1_3_242639__11__dunderbuiltin__dunder_PyObject__ptr__and_1__etc":10 + * + * if isinstance(arg, str): + * return 'str' # <<<<<<<<<<<<<< + * + * if isinstance(arg, bytes): +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_str); + __pyx_r = __pyx_mstate_global->__pyx_n_u_str; + goto __pyx_L0; + + /* "__pyx_ff_map_fused_ee27be_1_3_242639__11__dunderbuiltin__dunder_PyObject__ptr__and_1__etc":9 + * cdef str map_fused_type(object arg): + * + * if isinstance(arg, str): # <<<<<<<<<<<<<< + * return 'str' + * +*/ + } + + /* "__pyx_ff_map_fused_ee27be_1_3_242639__11__dunderbuiltin__dunder_PyObject__ptr__and_1__etc":12 + * return 'str' + * + * if isinstance(arg, bytes): # <<<<<<<<<<<<<< + * return 'bytes' + * +*/ + __pyx_t_1 = PyBytes_Check(__pyx_v_arg); + if (__pyx_t_1) { + + /* "__pyx_ff_map_fused_ee27be_1_3_242639__11__dunderbuiltin__dunder_PyObject__ptr__and_1__etc":13 + * + * if isinstance(arg, bytes): + * return 'bytes' # <<<<<<<<<<<<<< + * + * if isinstance(arg, __import__('selectolax.lexbor', None, None, ['']).LexborNode): +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_bytes); + __pyx_r = __pyx_mstate_global->__pyx_n_u_bytes; + goto __pyx_L0; + + /* "__pyx_ff_map_fused_ee27be_1_3_242639__11__dunderbuiltin__dunder_PyObject__ptr__and_1__etc":12 + * return 'str' + * + * if isinstance(arg, bytes): # <<<<<<<<<<<<<< + * return 'bytes' + * +*/ + } + + /* "__pyx_ff_map_fused_ee27be_1_3_242639__11__dunderbuiltin__dunder_PyObject__ptr__and_1__etc":15 + * return 'bytes' + * + * if isinstance(arg, __import__('selectolax.lexbor', None, None, ['']).LexborNode): # <<<<<<<<<<<<<< + * return 'LexborNode' + * return None +*/ + __pyx_t_3 = NULL; + __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 15, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u_); + __Pyx_GIVEREF(__pyx_mstate_global->__pyx_kp_u_); + if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_mstate_global->__pyx_kp_u_) != (0)) __PYX_ERR(1, 15, __pyx_L1_error); + __pyx_t_5 = 1; + { + PyObject *__pyx_callargs[5] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_selectolax_lexbor, Py_None, Py_None, __pyx_t_4}; + __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin___import__, __pyx_callargs+__pyx_t_5, (5-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 15, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + } + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_LexborNode); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 15, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_1 = PyObject_IsInstance(__pyx_v_arg, __pyx_t_4); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(1, 15, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (__pyx_t_1) { + + /* "__pyx_ff_map_fused_ee27be_1_3_242639__11__dunderbuiltin__dunder_PyObject__ptr__and_1__etc":16 + * + * if isinstance(arg, __import__('selectolax.lexbor', None, None, ['']).LexborNode): + * return 'LexborNode' # <<<<<<<<<<<<<< + * return None +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_LexborNode); + __pyx_r = __pyx_mstate_global->__pyx_n_u_LexborNode; + goto __pyx_L0; + + /* "__pyx_ff_map_fused_ee27be_1_3_242639__11__dunderbuiltin__dunder_PyObject__ptr__and_1__etc":15 + * return 'bytes' + * + * if isinstance(arg, __import__('selectolax.lexbor', None, None, ['']).LexborNode): # <<<<<<<<<<<<<< + * return 'LexborNode' + * return None +*/ + } + + /* "__pyx_ff_map_fused_ee27be_1_3_242639__11__dunderbuiltin__dunder_PyObject__ptr__and_1__etc":17 + * if isinstance(arg, __import__('selectolax.lexbor', None, None, ['']).LexborNode): + * return 'LexborNode' + * return None # <<<<<<<<<<<<<< +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_r = ((PyObject*)Py_None); __Pyx_INCREF(Py_None); + goto __pyx_L0; + + /* "__pyx_ff_map_fused_ee27be_1_3_242639__11__dunderbuiltin__dunder_PyObject__ptr__and_1__etc":6 + * int __Pyx_Is_Little_Endian() + * + * @cname('__pyx_ff_map_fused_ee27be_1_3_242639__11__dunderbuiltin__dunder_PyObject__ptr__and_1__etc') # <<<<<<<<<<<<<< + * cdef str map_fused_type(object arg): + * +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("__pyx_ff_map_fused_ee27be_1_3_242639__11__dunderbuiltin__dunder_PyObject__ptr__and_1__etc.map_fused_type", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "match_signatures_single":3 + * + * + * @cname("__pyx_ff_match_signatures_single") # <<<<<<<<<<<<<< + * cdef object match_signatures_single(signatures: dict, dest_type): + * found_match = signatures.get(dest_type) +*/ + +static PyObject *__pyx_ff_match_signatures_single(PyObject *__pyx_v_signatures, PyObject *__pyx_v_dest_type) { + PyObject *__pyx_v_found_match = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + size_t __pyx_t_4; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("match_signatures_single", 0); + + /* "match_signatures_single":5 + * @cname("__pyx_ff_match_signatures_single") + * cdef object match_signatures_single(signatures: dict, dest_type): + * found_match = signatures.get(dest_type) # <<<<<<<<<<<<<< + * if found_match is None: + * raise TypeError("No matching signature found") +*/ + __pyx_t_1 = __Pyx_PyDict_GetItemDefault(__pyx_v_signatures, __pyx_v_dest_type, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v_found_match = __pyx_t_1; + __pyx_t_1 = 0; + + /* "match_signatures_single":6 + * cdef object match_signatures_single(signatures: dict, dest_type): + * found_match = signatures.get(dest_type) + * if found_match is None: # <<<<<<<<<<<<<< + * raise TypeError("No matching signature found") + * return found_match +*/ + __pyx_t_2 = (__pyx_v_found_match == Py_None); + if (unlikely(__pyx_t_2)) { + + /* "match_signatures_single":7 + * found_match = signatures.get(dest_type) + * if found_match is None: + * raise TypeError("No matching signature found") # <<<<<<<<<<<<<< + * return found_match + * +*/ + __pyx_t_3 = NULL; + __pyx_t_4 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_No_matching_signature_found}; + __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 7, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __Pyx_Raise(__pyx_t_1, 0, 0, 0); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __PYX_ERR(1, 7, __pyx_L1_error) + + /* "match_signatures_single":6 + * cdef object match_signatures_single(signatures: dict, dest_type): + * found_match = signatures.get(dest_type) + * if found_match is None: # <<<<<<<<<<<<<< + * raise TypeError("No matching signature found") + * return found_match +*/ + } + + /* "match_signatures_single":8 + * if found_match is None: + * raise TypeError("No matching signature found") + * return found_match # <<<<<<<<<<<<<< + * +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_found_match); + __pyx_r = __pyx_v_found_match; + goto __pyx_L0; + + /* "match_signatures_single":3 + * + * + * @cname("__pyx_ff_match_signatures_single") # <<<<<<<<<<<<<< + * cdef object match_signatures_single(signatures: dict, dest_type): + * found_match = signatures.get(dest_type) +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("match_signatures_single.match_signatures_single", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_found_match); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/utils.pxi":19 + * + * + * def preprocess_input(html, decode_errors='ignore'): # <<<<<<<<<<<<<< + * if isinstance(html, (str, unicode)): + * bytes_html = html.encode('UTF-8', errors=decode_errors) +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_1preprocess_input(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6lexbor_preprocess_input, "preprocess_input(html, decode_errors='ignore')"); +static PyMethodDef __pyx_mdef_10selectolax_6lexbor_1preprocess_input = {"preprocess_input", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_1preprocess_input, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_preprocess_input}; +static PyObject *__pyx_pw_10selectolax_6lexbor_1preprocess_input(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_html = 0; + PyObject *__pyx_v_decode_errors = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[2] = {0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("preprocess_input (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_html,&__pyx_mstate_global->__pyx_n_u_decode_errors,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(2, 19, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(2, 19, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(2, 19, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "preprocess_input", 0) < (0)) __PYX_ERR(2, 19, __pyx_L3_error) + if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)((PyObject*)__pyx_mstate_global->__pyx_n_u_ignore))); + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("preprocess_input", 0, 1, 2, i); __PYX_ERR(2, 19, __pyx_L3_error) } + } + } else { + switch (__pyx_nargs) { + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(2, 19, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(2, 19, __pyx_L3_error) + break; + default: goto __pyx_L5_argtuple_error; + } + if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)((PyObject*)__pyx_mstate_global->__pyx_n_u_ignore))); + } + __pyx_v_html = values[0]; + __pyx_v_decode_errors = values[1]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("preprocess_input", 0, 1, 2, __pyx_nargs); __PYX_ERR(2, 19, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.lexbor.preprocess_input", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_10selectolax_6lexbor_preprocess_input(__pyx_self, __pyx_v_html, __pyx_v_decode_errors); + + /* function exit code */ + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_preprocess_input(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_html, PyObject *__pyx_v_decode_errors) { + PyObject *__pyx_v_bytes_html = NULL; + PyObject *__pyx_v_html_len = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + size_t __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + Py_ssize_t __pyx_t_7; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("preprocess_input", 0); + + /* "selectolax/utils.pxi":20 + * + * def preprocess_input(html, decode_errors='ignore'): + * if isinstance(html, (str, unicode)): # <<<<<<<<<<<<<< + * bytes_html = html.encode('UTF-8', errors=decode_errors) + * elif isinstance(html, bytes): +*/ + __pyx_t_1 = PyUnicode_Check(__pyx_v_html); + if (__pyx_t_1) { + + /* "selectolax/utils.pxi":21 + * def preprocess_input(html, decode_errors='ignore'): + * if isinstance(html, (str, unicode)): + * bytes_html = html.encode('UTF-8', errors=decode_errors) # <<<<<<<<<<<<<< + * elif isinstance(html, bytes): + * bytes_html = html +*/ + __pyx_t_3 = __pyx_v_html; + __Pyx_INCREF(__pyx_t_3); + __pyx_t_4 = 0; + { + PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_UTF_8}; + __pyx_t_5 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 21, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_errors, __pyx_v_decode_errors, __pyx_t_5, __pyx_callargs+2, 0) < (0)) __PYX_ERR(2, 21, __pyx_L1_error) + __pyx_t_2 = __Pyx_Object_VectorcallMethod_CallFromBuilder((PyObject*)__pyx_mstate_global->__pyx_n_u_encode, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_5); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 21, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + } + __pyx_v_bytes_html = __pyx_t_2; + __pyx_t_2 = 0; + + /* "selectolax/utils.pxi":20 + * + * def preprocess_input(html, decode_errors='ignore'): + * if isinstance(html, (str, unicode)): # <<<<<<<<<<<<<< + * bytes_html = html.encode('UTF-8', errors=decode_errors) + * elif isinstance(html, bytes): +*/ + goto __pyx_L3; + } + + /* "selectolax/utils.pxi":22 + * if isinstance(html, (str, unicode)): + * bytes_html = html.encode('UTF-8', errors=decode_errors) + * elif isinstance(html, bytes): # <<<<<<<<<<<<<< + * bytes_html = html + * else: +*/ + __pyx_t_1 = PyBytes_Check(__pyx_v_html); + if (likely(__pyx_t_1)) { + + /* "selectolax/utils.pxi":23 + * bytes_html = html.encode('UTF-8', errors=decode_errors) + * elif isinstance(html, bytes): + * bytes_html = html # <<<<<<<<<<<<<< + * else: + * raise TypeError("Expected a string, but %s found" % type(html).__name__) +*/ + __Pyx_INCREF(__pyx_v_html); + __pyx_v_bytes_html = __pyx_v_html; + + /* "selectolax/utils.pxi":22 + * if isinstance(html, (str, unicode)): + * bytes_html = html.encode('UTF-8', errors=decode_errors) + * elif isinstance(html, bytes): # <<<<<<<<<<<<<< + * bytes_html = html + * else: +*/ + goto __pyx_L3; + } + + /* "selectolax/utils.pxi":25 + * bytes_html = html + * else: + * raise TypeError("Expected a string, but %s found" % type(html).__name__) # <<<<<<<<<<<<<< + * html_len = len(bytes_html) + * if html_len > MAX_HTML_INPUT_SIZE: +*/ + /*else*/ { + __pyx_t_5 = NULL; + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(__pyx_v_html)), __pyx_mstate_global->__pyx_n_u_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 25, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_6 = __Pyx_PyUnicode_FormatSafe(__pyx_mstate_global->__pyx_kp_u_Expected_a_string_but_s_found, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 25, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_4 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_6}; + __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 25, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + } + __Pyx_Raise(__pyx_t_2, 0, 0, 0); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __PYX_ERR(2, 25, __pyx_L1_error) + } + __pyx_L3:; + + /* "selectolax/utils.pxi":26 + * else: + * raise TypeError("Expected a string, but %s found" % type(html).__name__) + * html_len = len(bytes_html) # <<<<<<<<<<<<<< + * if html_len > MAX_HTML_INPUT_SIZE: + * raise ValueError("The specified HTML input is too large to be processed (%d bytes)" % html_len) +*/ + __pyx_t_7 = PyObject_Length(__pyx_v_bytes_html); if (unlikely(__pyx_t_7 == ((Py_ssize_t)-1))) __PYX_ERR(2, 26, __pyx_L1_error) + __pyx_t_2 = PyLong_FromSsize_t(__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 26, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_v_html_len = __pyx_t_2; + __pyx_t_2 = 0; + + /* "selectolax/utils.pxi":27 + * raise TypeError("Expected a string, but %s found" % type(html).__name__) + * html_len = len(bytes_html) + * if html_len > MAX_HTML_INPUT_SIZE: # <<<<<<<<<<<<<< + * raise ValueError("The specified HTML input is too large to be processed (%d bytes)" % html_len) + * return bytes_html, html_len +*/ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_MAX_HTML_INPUT_SIZE); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 27, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_6 = PyObject_RichCompare(__pyx_v_html_len, __pyx_t_2, Py_GT); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 27, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(2, 27, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(__pyx_t_1)) { + + /* "selectolax/utils.pxi":28 + * html_len = len(bytes_html) + * if html_len > MAX_HTML_INPUT_SIZE: + * raise ValueError("The specified HTML input is too large to be processed (%d bytes)" % html_len) # <<<<<<<<<<<<<< + * return bytes_html, html_len + * +*/ + __pyx_t_2 = NULL; + __pyx_t_5 = __Pyx_PyUnicode_FormatSafe(__pyx_mstate_global->__pyx_kp_u_The_specified_HTML_input_is_too, __pyx_v_html_len); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 28, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_4 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_5}; + __pyx_t_6 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 28, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + } + __Pyx_Raise(__pyx_t_6, 0, 0, 0); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __PYX_ERR(2, 28, __pyx_L1_error) + + /* "selectolax/utils.pxi":27 + * raise TypeError("Expected a string, but %s found" % type(html).__name__) + * html_len = len(bytes_html) + * if html_len > MAX_HTML_INPUT_SIZE: # <<<<<<<<<<<<<< + * raise ValueError("The specified HTML input is too large to be processed (%d bytes)" % html_len) + * return bytes_html, html_len +*/ + } + + /* "selectolax/utils.pxi":29 + * if html_len > MAX_HTML_INPUT_SIZE: + * raise ValueError("The specified HTML input is too large to be processed (%d bytes)" % html_len) + * return bytes_html, html_len # <<<<<<<<<<<<<< + * + * +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 29, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_INCREF(__pyx_v_bytes_html); + __Pyx_GIVEREF(__pyx_v_bytes_html); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_bytes_html) != (0)) __PYX_ERR(2, 29, __pyx_L1_error); + __Pyx_INCREF(__pyx_v_html_len); + __Pyx_GIVEREF(__pyx_v_html_len); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_v_html_len) != (0)) __PYX_ERR(2, 29, __pyx_L1_error); + __pyx_r = __pyx_t_6; + __pyx_t_6 = 0; + goto __pyx_L0; + + /* "selectolax/utils.pxi":19 + * + * + * def preprocess_input(html, decode_errors='ignore'): # <<<<<<<<<<<<<< + * if isinstance(html, (str, unicode)): + * bytes_html = html.encode('UTF-8', errors=decode_errors) +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_AddTraceback("selectolax.lexbor.preprocess_input", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_bytes_html); + __Pyx_XDECREF(__pyx_v_html_len); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/utils.pxi":32 + * + * + * def do_create_tag(tag: str, parser_cls: ParserCls): # <<<<<<<<<<<<<< + * if not tag: + * raise ValueError("Tag name cannot be empty") +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_3do_create_tag(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6lexbor_2do_create_tag, "do_create_tag(tag: str, parser_cls: ParserCls)"); +static PyMethodDef __pyx_mdef_10selectolax_6lexbor_3do_create_tag = {"do_create_tag", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_3do_create_tag, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_2do_create_tag}; +static PyObject *__pyx_pw_10selectolax_6lexbor_3do_create_tag(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_tag = 0; + PyObject *__pyx_v_parser_cls = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[2] = {0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("do_create_tag (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_tag,&__pyx_mstate_global->__pyx_n_u_parser_cls,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(2, 32, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(2, 32, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(2, 32, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "do_create_tag", 0) < (0)) __PYX_ERR(2, 32, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 2; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("do_create_tag", 1, 2, 2, i); __PYX_ERR(2, 32, __pyx_L3_error) } + } + } else if (unlikely(__pyx_nargs != 2)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(2, 32, __pyx_L3_error) + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(2, 32, __pyx_L3_error) + } + __pyx_v_tag = values[0]; + __pyx_v_parser_cls = values[1]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("do_create_tag", 1, 2, 2, __pyx_nargs); __PYX_ERR(2, 32, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.lexbor.do_create_tag", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_10selectolax_6lexbor_2do_create_tag(__pyx_self, __pyx_v_tag, __pyx_v_parser_cls); + + /* function exit code */ + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_2do_create_tag(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_tag, PyObject *__pyx_v_parser_cls) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + size_t __pyx_t_5; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + PyObject *__pyx_t_9[5]; + PyObject *__pyx_t_10 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("do_create_tag", 0); + + /* "selectolax/utils.pxi":33 + * + * def do_create_tag(tag: str, parser_cls: ParserCls): + * if not tag: # <<<<<<<<<<<<<< + * raise ValueError("Tag name cannot be empty") + * return do_parse_fragment(f"<{tag}>", parser_cls)[0] +*/ + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_tag); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(2, 33, __pyx_L1_error) + __pyx_t_2 = (!__pyx_t_1); + if (unlikely(__pyx_t_2)) { + + /* "selectolax/utils.pxi":34 + * def do_create_tag(tag: str, parser_cls: ParserCls): + * if not tag: + * raise ValueError("Tag name cannot be empty") # <<<<<<<<<<<<<< + * return do_parse_fragment(f"<{tag}>", parser_cls)[0] + * +*/ + __pyx_t_4 = NULL; + __pyx_t_5 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_Tag_name_cannot_be_empty}; + __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 34, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(2, 34, __pyx_L1_error) + + /* "selectolax/utils.pxi":33 + * + * def do_create_tag(tag: str, parser_cls: ParserCls): + * if not tag: # <<<<<<<<<<<<<< + * raise ValueError("Tag name cannot be empty") + * return do_parse_fragment(f"<{tag}>", parser_cls)[0] +*/ + } + + /* "selectolax/utils.pxi":35 + * if not tag: + * raise ValueError("Tag name cannot be empty") + * return do_parse_fragment(f"<{tag}>", parser_cls)[0] # <<<<<<<<<<<<<< + * + * +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_4 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_do_parse_fragment); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 35, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_7 = __Pyx_PyObject_FormatSimple(__pyx_v_tag, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 35, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_8 = __Pyx_PyObject_FormatSimple(__pyx_v_tag, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 35, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_9[0] = __pyx_mstate_global->__pyx_kp_u__2; + __pyx_t_9[1] = __pyx_t_7; + __pyx_t_9[2] = __pyx_mstate_global->__pyx_kp_u__3; + __pyx_t_9[3] = __pyx_t_8; + __pyx_t_9[4] = __pyx_mstate_global->__pyx_kp_u__4; + __pyx_t_10 = __Pyx_PyUnicode_Join(__pyx_t_9, 5, 1 * 2 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_7) + 3 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_8), 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_7) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_8)); + if (unlikely(!__pyx_t_10)) __PYX_ERR(2, 35, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_5 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_6); + assert(__pyx_t_4); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_6, __pyx__function); + __pyx_t_5 = 0; + } + #endif + { + PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_t_10, __pyx_v_parser_cls}; + __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_6, __pyx_callargs+__pyx_t_5, (3-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 35, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __pyx_t_6 = __Pyx_GetItemInt(__pyx_t_3, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 0, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 35, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_r = __pyx_t_6; + __pyx_t_6 = 0; + goto __pyx_L0; + + /* "selectolax/utils.pxi":32 + * + * + * def do_create_tag(tag: str, parser_cls: ParserCls): # <<<<<<<<<<<<<< + * if not tag: + * raise ValueError("Tag name cannot be empty") +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_XDECREF(__pyx_t_10); + __Pyx_AddTraceback("selectolax.lexbor.do_create_tag", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/utils.pxi":38 + * + * + * def get_fragment_type( # <<<<<<<<<<<<<< + * html: str, + * parser_cls: ParserCls, +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_5get_fragment_type(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6lexbor_4get_fragment_type, "get_fragment_type(html: str, parser_cls: ParserCls, tree: Optional[Parser] = None) -> FRAGMENT"); +static PyMethodDef __pyx_mdef_10selectolax_6lexbor_5get_fragment_type = {"get_fragment_type", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_5get_fragment_type, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_4get_fragment_type}; +static PyObject *__pyx_pw_10selectolax_6lexbor_5get_fragment_type(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_html = 0; + PyObject *__pyx_v_parser_cls = 0; + PyObject *__pyx_v_tree = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[3] = {0,0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("get_fragment_type (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_html,&__pyx_mstate_global->__pyx_n_u_parser_cls,&__pyx_mstate_global->__pyx_n_u_tree,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(2, 38, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 3: + values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(2, 38, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(2, 38, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(2, 38, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "get_fragment_type", 0) < (0)) __PYX_ERR(2, 38, __pyx_L3_error) + + /* "selectolax/utils.pxi":41 + * html: str, + * parser_cls: ParserCls, + * tree: Optional[Parser] = None, # <<<<<<<<<<<<<< + * ) -> FRAGMENT: + * if not tree: +*/ + if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None)); + for (Py_ssize_t i = __pyx_nargs; i < 2; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("get_fragment_type", 0, 2, 3, i); __PYX_ERR(2, 38, __pyx_L3_error) } + } + } else { + switch (__pyx_nargs) { + case 3: + values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(2, 38, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(2, 38, __pyx_L3_error) + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(2, 38, __pyx_L3_error) + break; + default: goto __pyx_L5_argtuple_error; + } + if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None)); + } + __pyx_v_html = values[0]; + __pyx_v_parser_cls = values[1]; + __pyx_v_tree = values[2]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("get_fragment_type", 0, 2, 3, __pyx_nargs); __PYX_ERR(2, 38, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.lexbor.get_fragment_type", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_10selectolax_6lexbor_4get_fragment_type(__pyx_self, __pyx_v_html, __pyx_v_parser_cls, __pyx_v_tree); + + /* "selectolax/utils.pxi":38 + * + * + * def get_fragment_type( # <<<<<<<<<<<<<< + * html: str, + * parser_cls: ParserCls, +*/ + + /* function exit code */ + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_4get_fragment_type(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_html, PyObject *__pyx_v_parser_cls, PyObject *__pyx_v_tree) { + PyObject *__pyx_v_re = NULL; + PyObject *__pyx_v_html_re = NULL; + int __pyx_v_has_html; + int __pyx_v_has_head; + int __pyx_v_has_body; + PyObject *__pyx_v_match = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + size_t __pyx_t_6; + PyObject *__pyx_t_7 = NULL; + Py_ssize_t __pyx_t_8; + PyObject *(*__pyx_t_9)(PyObject *); + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("get_fragment_type", 0); + __Pyx_INCREF(__pyx_v_tree); + + /* "selectolax/utils.pxi":43 + * tree: Optional[Parser] = None, + * ) -> FRAGMENT: + * if not tree: # <<<<<<<<<<<<<< + * tree = parser_cls(html) + * +*/ + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_tree); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(2, 43, __pyx_L1_error) + __pyx_t_2 = (!__pyx_t_1); + if (__pyx_t_2) { + + /* "selectolax/utils.pxi":44 + * ) -> FRAGMENT: + * if not tree: + * tree = parser_cls(html) # <<<<<<<<<<<<<< + * + * import re +*/ + __pyx_t_4 = NULL; + __Pyx_INCREF(__pyx_v_parser_cls); + __pyx_t_5 = __pyx_v_parser_cls; + __pyx_t_6 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_5))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5); + assert(__pyx_t_4); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_5, __pyx__function); + __pyx_t_6 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_html}; + __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 44, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_DECREF_SET(__pyx_v_tree, __pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/utils.pxi":43 + * tree: Optional[Parser] = None, + * ) -> FRAGMENT: + * if not tree: # <<<<<<<<<<<<<< + * tree = parser_cls(html) + * +*/ + } + + /* "selectolax/utils.pxi":46 + * tree = parser_cls(html) + * + * import re # <<<<<<<<<<<<<< + * html_re = re.compile(r"__pyx_n_u_re, 0, 0, NULL, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 46, __pyx_L1_error) + __pyx_t_3 = __pyx_t_7; + __Pyx_GOTREF(__pyx_t_3); + __pyx_v_re = __pyx_t_3; + __pyx_t_3 = 0; + + /* "selectolax/utils.pxi":47 + * + * import re + * html_re = re.compile(r"__pyx_n_u_IGNORECASE); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 47, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_6 = 0; + { + PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_html_body_head_er, __pyx_t_4}; + __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_compile, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 47, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __pyx_v_html_re = __pyx_t_3; + __pyx_t_3 = 0; + + /* "selectolax/utils.pxi":49 + * html_re = re.compile(r"__pyx_n_u_finditer, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 52, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) { + __pyx_t_4 = __pyx_t_3; __Pyx_INCREF(__pyx_t_4); + __pyx_t_8 = 0; + __pyx_t_9 = NULL; + } else { + __pyx_t_8 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 52, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_9 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 52, __pyx_L1_error) + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + for (;;) { + if (likely(!__pyx_t_9)) { + if (likely(PyList_CheckExact(__pyx_t_4))) { + { + Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_4); + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely((__pyx_temp < 0))) __PYX_ERR(2, 52, __pyx_L1_error) + #endif + if (__pyx_t_8 >= __pyx_temp) break; + } + __pyx_t_3 = __Pyx_PyList_GetItemRefFast(__pyx_t_4, __pyx_t_8, __Pyx_ReferenceSharing_OwnStrongReference); + ++__pyx_t_8; + } else { + { + Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_4); + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely((__pyx_temp < 0))) __PYX_ERR(2, 52, __pyx_L1_error) + #endif + if (__pyx_t_8 >= __pyx_temp) break; + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_3 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_8)); + #else + __pyx_t_3 = __Pyx_PySequence_ITEM(__pyx_t_4, __pyx_t_8); + #endif + ++__pyx_t_8; + } + if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 52, __pyx_L1_error) + } else { + __pyx_t_3 = __pyx_t_9(__pyx_t_4); + if (unlikely(!__pyx_t_3)) { + PyObject* exc_type = PyErr_Occurred(); + if (exc_type) { + if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(2, 52, __pyx_L1_error) + PyErr_Clear(); + } + break; + } + } + __Pyx_GOTREF(__pyx_t_3); + __Pyx_XDECREF_SET(__pyx_v_match, __pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/utils.pxi":53 + * has_body = False + * for match in html_re.finditer(html): + * if match[0] == "__pyx_kp_u_html_2, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(2, 53, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (__pyx_t_2) { + + /* "selectolax/utils.pxi":54 + * for match in html_re.finditer(html): + * if match[0] == "__pyx_kp_u_head, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(2, 55, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (__pyx_t_2) { + + /* "selectolax/utils.pxi":56 + * has_html = True + * elif match[0] == "__pyx_kp_u_body, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(2, 57, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (__pyx_t_2) { + + /* "selectolax/utils.pxi":58 + * has_head = True + * elif match[0] == "__pyx_n_u_document); + __pyx_r = __pyx_mstate_global->__pyx_n_u_document; + goto __pyx_L0; + + /* "selectolax/utils.pxi":63 + * break + * + * if has_html and has_head and has_body: # <<<<<<<<<<<<<< + * return "document" + * elif has_html and not has_head and has_body: +*/ + } + + /* "selectolax/utils.pxi":65 + * if has_html and has_head and has_body: + * return "document" + * elif has_html and not has_head and has_body: # <<<<<<<<<<<<<< + * return "document_no_head" + * elif has_html and has_head and not has_body: +*/ + if (__pyx_v_has_html) { + } else { + __pyx_t_2 = __pyx_v_has_html; + goto __pyx_L16_bool_binop_done; + } + __pyx_t_1 = (!__pyx_v_has_head); + if (__pyx_t_1) { + } else { + __pyx_t_2 = __pyx_t_1; + goto __pyx_L16_bool_binop_done; + } + __pyx_t_2 = __pyx_v_has_body; + __pyx_L16_bool_binop_done:; + if (__pyx_t_2) { + + /* "selectolax/utils.pxi":66 + * return "document" + * elif has_html and not has_head and has_body: + * return "document_no_head" # <<<<<<<<<<<<<< + * elif has_html and has_head and not has_body: + * return "document_no_body" +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_document_no_head); + __pyx_r = __pyx_mstate_global->__pyx_n_u_document_no_head; + goto __pyx_L0; + + /* "selectolax/utils.pxi":65 + * if has_html and has_head and has_body: + * return "document" + * elif has_html and not has_head and has_body: # <<<<<<<<<<<<<< + * return "document_no_head" + * elif has_html and has_head and not has_body: +*/ + } + + /* "selectolax/utils.pxi":67 + * elif has_html and not has_head and has_body: + * return "document_no_head" + * elif has_html and has_head and not has_body: # <<<<<<<<<<<<<< + * return "document_no_body" + * elif has_html and not has_head and not has_body: +*/ + if (__pyx_v_has_html) { + } else { + __pyx_t_2 = __pyx_v_has_html; + goto __pyx_L19_bool_binop_done; + } + if (__pyx_v_has_head) { + } else { + __pyx_t_2 = __pyx_v_has_head; + goto __pyx_L19_bool_binop_done; + } + __pyx_t_1 = (!__pyx_v_has_body); + __pyx_t_2 = __pyx_t_1; + __pyx_L19_bool_binop_done:; + if (__pyx_t_2) { + + /* "selectolax/utils.pxi":68 + * return "document_no_head" + * elif has_html and has_head and not has_body: + * return "document_no_body" # <<<<<<<<<<<<<< + * elif has_html and not has_head and not has_body: + * return "document_no_head_no_body" +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_document_no_body); + __pyx_r = __pyx_mstate_global->__pyx_n_u_document_no_body; + goto __pyx_L0; + + /* "selectolax/utils.pxi":67 + * elif has_html and not has_head and has_body: + * return "document_no_head" + * elif has_html and has_head and not has_body: # <<<<<<<<<<<<<< + * return "document_no_body" + * elif has_html and not has_head and not has_body: +*/ + } + + /* "selectolax/utils.pxi":69 + * elif has_html and has_head and not has_body: + * return "document_no_body" + * elif has_html and not has_head and not has_body: # <<<<<<<<<<<<<< + * return "document_no_head_no_body" + * elif has_head and not has_body: +*/ + if (__pyx_v_has_html) { + } else { + __pyx_t_2 = __pyx_v_has_html; + goto __pyx_L22_bool_binop_done; + } + __pyx_t_1 = (!__pyx_v_has_head); + if (__pyx_t_1) { + } else { + __pyx_t_2 = __pyx_t_1; + goto __pyx_L22_bool_binop_done; + } + __pyx_t_1 = (!__pyx_v_has_body); + __pyx_t_2 = __pyx_t_1; + __pyx_L22_bool_binop_done:; + if (__pyx_t_2) { + + /* "selectolax/utils.pxi":70 + * return "document_no_body" + * elif has_html and not has_head and not has_body: + * return "document_no_head_no_body" # <<<<<<<<<<<<<< + * elif has_head and not has_body: + * return "head" +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_document_no_head_no_body); + __pyx_r = __pyx_mstate_global->__pyx_n_u_document_no_head_no_body; + goto __pyx_L0; + + /* "selectolax/utils.pxi":69 + * elif has_html and has_head and not has_body: + * return "document_no_body" + * elif has_html and not has_head and not has_body: # <<<<<<<<<<<<<< + * return "document_no_head_no_body" + * elif has_head and not has_body: +*/ + } + + /* "selectolax/utils.pxi":71 + * elif has_html and not has_head and not has_body: + * return "document_no_head_no_body" + * elif has_head and not has_body: # <<<<<<<<<<<<<< + * return "head" + * elif not has_head and has_body: +*/ + if (__pyx_v_has_head) { + } else { + __pyx_t_2 = __pyx_v_has_head; + goto __pyx_L25_bool_binop_done; + } + __pyx_t_1 = (!__pyx_v_has_body); + __pyx_t_2 = __pyx_t_1; + __pyx_L25_bool_binop_done:; + if (__pyx_t_2) { + + /* "selectolax/utils.pxi":72 + * return "document_no_head_no_body" + * elif has_head and not has_body: + * return "head" # <<<<<<<<<<<<<< + * elif not has_head and has_body: + * return "body" +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_head_2); + __pyx_r = __pyx_mstate_global->__pyx_n_u_head_2; + goto __pyx_L0; + + /* "selectolax/utils.pxi":71 + * elif has_html and not has_head and not has_body: + * return "document_no_head_no_body" + * elif has_head and not has_body: # <<<<<<<<<<<<<< + * return "head" + * elif not has_head and has_body: +*/ + } + + /* "selectolax/utils.pxi":73 + * elif has_head and not has_body: + * return "head" + * elif not has_head and has_body: # <<<<<<<<<<<<<< + * return "body" + * elif has_head and has_body: +*/ + __pyx_t_1 = (!__pyx_v_has_head); + if (__pyx_t_1) { + } else { + __pyx_t_2 = __pyx_t_1; + goto __pyx_L27_bool_binop_done; + } + __pyx_t_2 = __pyx_v_has_body; + __pyx_L27_bool_binop_done:; + if (__pyx_t_2) { + + /* "selectolax/utils.pxi":74 + * return "head" + * elif not has_head and has_body: + * return "body" # <<<<<<<<<<<<<< + * elif has_head and has_body: + * return "head_and_body" +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_body_2); + __pyx_r = __pyx_mstate_global->__pyx_n_u_body_2; + goto __pyx_L0; + + /* "selectolax/utils.pxi":73 + * elif has_head and not has_body: + * return "head" + * elif not has_head and has_body: # <<<<<<<<<<<<<< + * return "body" + * elif has_head and has_body: +*/ + } + + /* "selectolax/utils.pxi":75 + * elif not has_head and has_body: + * return "body" + * elif has_head and has_body: # <<<<<<<<<<<<<< + * return "head_and_body" + * else: +*/ + if (__pyx_v_has_head) { + } else { + __pyx_t_2 = __pyx_v_has_head; + goto __pyx_L29_bool_binop_done; + } + __pyx_t_2 = __pyx_v_has_body; + __pyx_L29_bool_binop_done:; + if (__pyx_t_2) { + + /* "selectolax/utils.pxi":76 + * return "body" + * elif has_head and has_body: + * return "head_and_body" # <<<<<<<<<<<<<< + * else: + * return "fragment" +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_head_and_body); + __pyx_r = __pyx_mstate_global->__pyx_n_u_head_and_body; + goto __pyx_L0; + + /* "selectolax/utils.pxi":75 + * elif not has_head and has_body: + * return "body" + * elif has_head and has_body: # <<<<<<<<<<<<<< + * return "head_and_body" + * else: +*/ + } + + /* "selectolax/utils.pxi":78 + * return "head_and_body" + * else: + * return "fragment" # <<<<<<<<<<<<<< + * + * +*/ + /*else*/ { + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_fragment); + __pyx_r = __pyx_mstate_global->__pyx_n_u_fragment; + goto __pyx_L0; + } + + /* "selectolax/utils.pxi":38 + * + * + * def get_fragment_type( # <<<<<<<<<<<<<< + * html: str, + * parser_cls: ParserCls, +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_AddTraceback("selectolax.lexbor.get_fragment_type", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_re); + __Pyx_XDECREF(__pyx_v_html_re); + __Pyx_XDECREF(__pyx_v_match); + __Pyx_XDECREF(__pyx_v_tree); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/utils.pxi":81 + * + * + * def do_parse_fragment(html: str, parser_cls: ParserCls): # <<<<<<<<<<<<<< + * """ + * Given HTML, parse it into a list of Nodes, such that the nodes +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_7do_parse_fragment(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6lexbor_6do_parse_fragment, "do_parse_fragment(html: str, parser_cls: ParserCls)\n\nGiven HTML, parse it into a list of Nodes, such that the nodes\ncorrespond to the given HTML.\n\nFor contrast, HTMLParser adds ``, ``, and `` tags\nif they are missing. This function does not add these tags."); +static PyMethodDef __pyx_mdef_10selectolax_6lexbor_7do_parse_fragment = {"do_parse_fragment", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_7do_parse_fragment, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_6do_parse_fragment}; +static PyObject *__pyx_pw_10selectolax_6lexbor_7do_parse_fragment(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_html = 0; + PyObject *__pyx_v_parser_cls = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[2] = {0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("do_parse_fragment (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_html,&__pyx_mstate_global->__pyx_n_u_parser_cls,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(2, 81, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(2, 81, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(2, 81, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "do_parse_fragment", 0) < (0)) __PYX_ERR(2, 81, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 2; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("do_parse_fragment", 1, 2, 2, i); __PYX_ERR(2, 81, __pyx_L3_error) } + } + } else if (unlikely(__pyx_nargs != 2)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(2, 81, __pyx_L3_error) + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(2, 81, __pyx_L3_error) + } + __pyx_v_html = values[0]; + __pyx_v_parser_cls = values[1]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("do_parse_fragment", 1, 2, 2, __pyx_nargs); __PYX_ERR(2, 81, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.lexbor.do_parse_fragment", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_10selectolax_6lexbor_6do_parse_fragment(__pyx_self, __pyx_v_html, __pyx_v_parser_cls); + + /* function exit code */ + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_6do_parse_fragment(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_html, PyObject *__pyx_v_parser_cls) { + PyObject *__pyx_v_tree = NULL; + PyObject *__pyx_v_frag_type = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + size_t __pyx_t_3; + PyObject *__pyx_t_4 = NULL; + int __pyx_t_5; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("do_parse_fragment", 0); + __Pyx_INCREF(__pyx_v_html); + + /* "selectolax/utils.pxi":89 + * if they are missing. This function does not add these tags. + * """ + * html = html.strip() # <<<<<<<<<<<<<< + * tree = parser_cls(html) + * frag_type = get_fragment_type(html, parser_cls, tree) +*/ + __pyx_t_2 = __pyx_v_html; + __Pyx_INCREF(__pyx_t_2); + __pyx_t_3 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL}; + __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_strip, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 89, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __Pyx_DECREF_SET(__pyx_v_html, __pyx_t_1); + __pyx_t_1 = 0; + + /* "selectolax/utils.pxi":90 + * """ + * html = html.strip() + * tree = parser_cls(html) # <<<<<<<<<<<<<< + * frag_type = get_fragment_type(html, parser_cls, tree) + * +*/ + __pyx_t_2 = NULL; + __Pyx_INCREF(__pyx_v_parser_cls); + __pyx_t_4 = __pyx_v_parser_cls; + __pyx_t_3 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4); + assert(__pyx_t_2); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_4, __pyx__function); + __pyx_t_3 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_html}; + __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_3, (2-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 90, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __pyx_v_tree = __pyx_t_1; + __pyx_t_1 = 0; + + /* "selectolax/utils.pxi":91 + * html = html.strip() + * tree = parser_cls(html) + * frag_type = get_fragment_type(html, parser_cls, tree) # <<<<<<<<<<<<<< + * + * if frag_type == "document": +*/ + __pyx_t_4 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_get_fragment_type); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 91, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); + assert(__pyx_t_4); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_2, __pyx__function); + __pyx_t_3 = 0; + } + #endif + { + PyObject *__pyx_callargs[4] = {__pyx_t_4, __pyx_v_html, __pyx_v_parser_cls, __pyx_v_tree}; + __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_2, __pyx_callargs+__pyx_t_3, (4-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 91, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __pyx_v_frag_type = __pyx_t_1; + __pyx_t_1 = 0; + + /* "selectolax/utils.pxi":93 + * frag_type = get_fragment_type(html, parser_cls, tree) + * + * if frag_type == "document": # <<<<<<<<<<<<<< + * return [tree.root] + * if frag_type == "document_no_head": +*/ + __pyx_t_5 = (__Pyx_PyUnicode_Equals(__pyx_v_frag_type, __pyx_mstate_global->__pyx_n_u_document, Py_EQ)); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(2, 93, __pyx_L1_error) + if (__pyx_t_5) { + + /* "selectolax/utils.pxi":94 + * + * if frag_type == "document": + * return [tree.root] # <<<<<<<<<<<<<< + * if frag_type == "document_no_head": + * tree.head.decompose(recursive=True) +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_tree, __pyx_mstate_global->__pyx_n_u_root); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 94, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 94, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_GIVEREF(__pyx_t_1); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_t_1) != (0)) __PYX_ERR(2, 94, __pyx_L1_error); + __pyx_t_1 = 0; + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; + + /* "selectolax/utils.pxi":93 + * frag_type = get_fragment_type(html, parser_cls, tree) + * + * if frag_type == "document": # <<<<<<<<<<<<<< + * return [tree.root] + * if frag_type == "document_no_head": +*/ + } + + /* "selectolax/utils.pxi":95 + * if frag_type == "document": + * return [tree.root] + * if frag_type == "document_no_head": # <<<<<<<<<<<<<< + * tree.head.decompose(recursive=True) + * return [tree.root] +*/ + __pyx_t_5 = (__Pyx_PyUnicode_Equals(__pyx_v_frag_type, __pyx_mstate_global->__pyx_n_u_document_no_head, Py_EQ)); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(2, 95, __pyx_L1_error) + if (__pyx_t_5) { + + /* "selectolax/utils.pxi":96 + * return [tree.root] + * if frag_type == "document_no_head": + * tree.head.decompose(recursive=True) # <<<<<<<<<<<<<< + * return [tree.root] + * if frag_type == "document_no_body": +*/ + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_tree, __pyx_mstate_global->__pyx_n_u_head_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 96, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_1 = __pyx_t_4; + __Pyx_INCREF(__pyx_t_1); + __pyx_t_3 = 0; + { + PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_1, NULL}; + __pyx_t_6 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 96, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_recursive, Py_True, __pyx_t_6, __pyx_callargs+1, 0) < (0)) __PYX_ERR(2, 96, __pyx_L1_error) + __pyx_t_2 = __Pyx_Object_VectorcallMethod_CallFromBuilder((PyObject*)__pyx_mstate_global->__pyx_n_u_decompose, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_6); + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 96, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "selectolax/utils.pxi":97 + * if frag_type == "document_no_head": + * tree.head.decompose(recursive=True) + * return [tree.root] # <<<<<<<<<<<<<< + * if frag_type == "document_no_body": + * tree.body.decompose(recursive=True) +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_tree, __pyx_mstate_global->__pyx_n_u_root); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 97, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 97, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_2); + if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_2) != (0)) __PYX_ERR(2, 97, __pyx_L1_error); + __pyx_t_2 = 0; + __pyx_r = __pyx_t_4; + __pyx_t_4 = 0; + goto __pyx_L0; + + /* "selectolax/utils.pxi":95 + * if frag_type == "document": + * return [tree.root] + * if frag_type == "document_no_head": # <<<<<<<<<<<<<< + * tree.head.decompose(recursive=True) + * return [tree.root] +*/ + } + + /* "selectolax/utils.pxi":98 + * tree.head.decompose(recursive=True) + * return [tree.root] + * if frag_type == "document_no_body": # <<<<<<<<<<<<<< + * tree.body.decompose(recursive=True) + * return [tree.root] +*/ + __pyx_t_5 = (__Pyx_PyUnicode_Equals(__pyx_v_frag_type, __pyx_mstate_global->__pyx_n_u_document_no_body, Py_EQ)); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(2, 98, __pyx_L1_error) + if (__pyx_t_5) { + + /* "selectolax/utils.pxi":99 + * return [tree.root] + * if frag_type == "document_no_body": + * tree.body.decompose(recursive=True) # <<<<<<<<<<<<<< + * return [tree.root] + * if frag_type == "document_no_head_no_body": +*/ + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_tree, __pyx_mstate_global->__pyx_n_u_body_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 99, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_2 = __pyx_t_6; + __Pyx_INCREF(__pyx_t_2); + __pyx_t_3 = 0; + { + PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_2, NULL}; + __pyx_t_1 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 99, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_recursive, Py_True, __pyx_t_1, __pyx_callargs+1, 0) < (0)) __PYX_ERR(2, 99, __pyx_L1_error) + __pyx_t_4 = __Pyx_Object_VectorcallMethod_CallFromBuilder((PyObject*)__pyx_mstate_global->__pyx_n_u_decompose, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 99, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + } + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "selectolax/utils.pxi":100 + * if frag_type == "document_no_body": + * tree.body.decompose(recursive=True) + * return [tree.root] # <<<<<<<<<<<<<< + * if frag_type == "document_no_head_no_body": + * tree.head.decompose(recursive=True) +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_tree, __pyx_mstate_global->__pyx_n_u_root); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 100, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_6 = PyList_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 100, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_GIVEREF(__pyx_t_4); + if (__Pyx_PyList_SET_ITEM(__pyx_t_6, 0, __pyx_t_4) != (0)) __PYX_ERR(2, 100, __pyx_L1_error); + __pyx_t_4 = 0; + __pyx_r = __pyx_t_6; + __pyx_t_6 = 0; + goto __pyx_L0; + + /* "selectolax/utils.pxi":98 + * tree.head.decompose(recursive=True) + * return [tree.root] + * if frag_type == "document_no_body": # <<<<<<<<<<<<<< + * tree.body.decompose(recursive=True) + * return [tree.root] +*/ + } + + /* "selectolax/utils.pxi":101 + * tree.body.decompose(recursive=True) + * return [tree.root] + * if frag_type == "document_no_head_no_body": # <<<<<<<<<<<<<< + * tree.head.decompose(recursive=True) + * tree.body.decompose(recursive=True) +*/ + __pyx_t_5 = (__Pyx_PyUnicode_Equals(__pyx_v_frag_type, __pyx_mstate_global->__pyx_n_u_document_no_head_no_body, Py_EQ)); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(2, 101, __pyx_L1_error) + if (__pyx_t_5) { + + /* "selectolax/utils.pxi":102 + * return [tree.root] + * if frag_type == "document_no_head_no_body": + * tree.head.decompose(recursive=True) # <<<<<<<<<<<<<< + * tree.body.decompose(recursive=True) + * return [tree.root] +*/ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_tree, __pyx_mstate_global->__pyx_n_u_head_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 102, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_4 = __pyx_t_1; + __Pyx_INCREF(__pyx_t_4); + __pyx_t_3 = 0; + { + PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_4, NULL}; + __pyx_t_2 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 102, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_recursive, Py_True, __pyx_t_2, __pyx_callargs+1, 0) < (0)) __PYX_ERR(2, 102, __pyx_L1_error) + __pyx_t_6 = __Pyx_Object_VectorcallMethod_CallFromBuilder((PyObject*)__pyx_mstate_global->__pyx_n_u_decompose, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_2); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 102, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + } + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + + /* "selectolax/utils.pxi":103 + * if frag_type == "document_no_head_no_body": + * tree.head.decompose(recursive=True) + * tree.body.decompose(recursive=True) # <<<<<<<<<<<<<< + * return [tree.root] + * elif frag_type == "head": +*/ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_tree, __pyx_mstate_global->__pyx_n_u_body_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 103, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_1 = __pyx_t_2; + __Pyx_INCREF(__pyx_t_1); + __pyx_t_3 = 0; + { + PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_1, NULL}; + __pyx_t_4 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 103, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_recursive, Py_True, __pyx_t_4, __pyx_callargs+1, 0) < (0)) __PYX_ERR(2, 103, __pyx_L1_error) + __pyx_t_6 = __Pyx_Object_VectorcallMethod_CallFromBuilder((PyObject*)__pyx_mstate_global->__pyx_n_u_decompose, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_4); + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 103, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + } + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + + /* "selectolax/utils.pxi":104 + * tree.head.decompose(recursive=True) + * tree.body.decompose(recursive=True) + * return [tree.root] # <<<<<<<<<<<<<< + * elif frag_type == "head": + * tree.body.decompose(recursive=True) +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_tree, __pyx_mstate_global->__pyx_n_u_root); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 104, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 104, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_GIVEREF(__pyx_t_6); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_t_6) != (0)) __PYX_ERR(2, 104, __pyx_L1_error); + __pyx_t_6 = 0; + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; + + /* "selectolax/utils.pxi":101 + * tree.body.decompose(recursive=True) + * return [tree.root] + * if frag_type == "document_no_head_no_body": # <<<<<<<<<<<<<< + * tree.head.decompose(recursive=True) + * tree.body.decompose(recursive=True) +*/ + } + + /* "selectolax/utils.pxi":105 + * tree.body.decompose(recursive=True) + * return [tree.root] + * elif frag_type == "head": # <<<<<<<<<<<<<< + * tree.body.decompose(recursive=True) + * return [tree.head] +*/ + __pyx_t_5 = (__Pyx_PyUnicode_Equals(__pyx_v_frag_type, __pyx_mstate_global->__pyx_n_u_head_2, Py_EQ)); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(2, 105, __pyx_L1_error) + if (__pyx_t_5) { + + /* "selectolax/utils.pxi":106 + * return [tree.root] + * elif frag_type == "head": + * tree.body.decompose(recursive=True) # <<<<<<<<<<<<<< + * return [tree.head] + * elif frag_type == "body": +*/ + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_tree, __pyx_mstate_global->__pyx_n_u_body_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 106, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_6 = __pyx_t_4; + __Pyx_INCREF(__pyx_t_6); + __pyx_t_3 = 0; + { + PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_6, NULL}; + __pyx_t_1 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 106, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_recursive, Py_True, __pyx_t_1, __pyx_callargs+1, 0) < (0)) __PYX_ERR(2, 106, __pyx_L1_error) + __pyx_t_2 = __Pyx_Object_VectorcallMethod_CallFromBuilder((PyObject*)__pyx_mstate_global->__pyx_n_u_decompose, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_1); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 106, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "selectolax/utils.pxi":107 + * elif frag_type == "head": + * tree.body.decompose(recursive=True) + * return [tree.head] # <<<<<<<<<<<<<< + * elif frag_type == "body": + * tree.head.decompose(recursive=True) +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_tree, __pyx_mstate_global->__pyx_n_u_head_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 107, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 107, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_2); + if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_2) != (0)) __PYX_ERR(2, 107, __pyx_L1_error); + __pyx_t_2 = 0; + __pyx_r = __pyx_t_4; + __pyx_t_4 = 0; + goto __pyx_L0; + + /* "selectolax/utils.pxi":105 + * tree.body.decompose(recursive=True) + * return [tree.root] + * elif frag_type == "head": # <<<<<<<<<<<<<< + * tree.body.decompose(recursive=True) + * return [tree.head] +*/ + } + + /* "selectolax/utils.pxi":108 + * tree.body.decompose(recursive=True) + * return [tree.head] + * elif frag_type == "body": # <<<<<<<<<<<<<< + * tree.head.decompose(recursive=True) + * return [tree.body] +*/ + __pyx_t_5 = (__Pyx_PyUnicode_Equals(__pyx_v_frag_type, __pyx_mstate_global->__pyx_n_u_body_2, Py_EQ)); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(2, 108, __pyx_L1_error) + if (__pyx_t_5) { + + /* "selectolax/utils.pxi":109 + * return [tree.head] + * elif frag_type == "body": + * tree.head.decompose(recursive=True) # <<<<<<<<<<<<<< + * return [tree.body] + * elif frag_type == "head_and_body": +*/ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_tree, __pyx_mstate_global->__pyx_n_u_head_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 109, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __pyx_t_1; + __Pyx_INCREF(__pyx_t_2); + __pyx_t_3 = 0; + { + PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_2, NULL}; + __pyx_t_6 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 109, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_recursive, Py_True, __pyx_t_6, __pyx_callargs+1, 0) < (0)) __PYX_ERR(2, 109, __pyx_L1_error) + __pyx_t_4 = __Pyx_Object_VectorcallMethod_CallFromBuilder((PyObject*)__pyx_mstate_global->__pyx_n_u_decompose, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_6); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 109, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + } + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "selectolax/utils.pxi":110 + * elif frag_type == "body": + * tree.head.decompose(recursive=True) + * return [tree.body] # <<<<<<<<<<<<<< + * elif frag_type == "head_and_body": + * return [tree.head, tree.body] +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_tree, __pyx_mstate_global->__pyx_n_u_body_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 110, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 110, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_4); + if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 0, __pyx_t_4) != (0)) __PYX_ERR(2, 110, __pyx_L1_error); + __pyx_t_4 = 0; + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "selectolax/utils.pxi":108 + * tree.body.decompose(recursive=True) + * return [tree.head] + * elif frag_type == "body": # <<<<<<<<<<<<<< + * tree.head.decompose(recursive=True) + * return [tree.body] +*/ + } + + /* "selectolax/utils.pxi":111 + * tree.head.decompose(recursive=True) + * return [tree.body] + * elif frag_type == "head_and_body": # <<<<<<<<<<<<<< + * return [tree.head, tree.body] + * else: +*/ + __pyx_t_5 = (__Pyx_PyUnicode_Equals(__pyx_v_frag_type, __pyx_mstate_global->__pyx_n_u_head_and_body, Py_EQ)); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(2, 111, __pyx_L1_error) + if (__pyx_t_5) { + + /* "selectolax/utils.pxi":112 + * return [tree.body] + * elif frag_type == "head_and_body": + * return [tree.head, tree.body] # <<<<<<<<<<<<<< + * else: + * return [ +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_tree, __pyx_mstate_global->__pyx_n_u_head_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 112, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_tree, __pyx_mstate_global->__pyx_n_u_body_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 112, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_6 = PyList_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 112, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_GIVEREF(__pyx_t_1); + if (__Pyx_PyList_SET_ITEM(__pyx_t_6, 0, __pyx_t_1) != (0)) __PYX_ERR(2, 112, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_4); + if (__Pyx_PyList_SET_ITEM(__pyx_t_6, 1, __pyx_t_4) != (0)) __PYX_ERR(2, 112, __pyx_L1_error); + __pyx_t_1 = 0; + __pyx_t_4 = 0; + __pyx_r = __pyx_t_6; + __pyx_t_6 = 0; + goto __pyx_L0; + + /* "selectolax/utils.pxi":111 + * tree.head.decompose(recursive=True) + * return [tree.body] + * elif frag_type == "head_and_body": # <<<<<<<<<<<<<< + * return [tree.head, tree.body] + * else: +*/ + } + + /* "selectolax/utils.pxi":114 + * return [tree.head, tree.body] + * else: + * return [ # <<<<<<<<<<<<<< + * *tree.head.iter(include_text=True), + * *tree.body.iter(include_text=True), +*/ + /*else*/ { + __Pyx_XDECREF(__pyx_r); + + /* "selectolax/utils.pxi":115 + * else: + * return [ + * *tree.head.iter(include_text=True), # <<<<<<<<<<<<<< + * *tree.body.iter(include_text=True), + * ] +*/ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_tree, __pyx_mstate_global->__pyx_n_u_head_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 115, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_1 = __pyx_t_2; + __Pyx_INCREF(__pyx_t_1); + __pyx_t_3 = 0; + { + PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_1, NULL}; + __pyx_t_7 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 115, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_include_text, Py_True, __pyx_t_7, __pyx_callargs+1, 0) < (0)) __PYX_ERR(2, 115, __pyx_L1_error) + __pyx_t_4 = __Pyx_Object_VectorcallMethod_CallFromBuilder((PyObject*)__pyx_mstate_global->__pyx_n_u_iter, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_7); + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 115, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + } + __pyx_t_6 = __Pyx_PySequence_ListKeepNew(__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 114, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "selectolax/utils.pxi":116 + * return [ + * *tree.head.iter(include_text=True), + * *tree.body.iter(include_text=True), # <<<<<<<<<<<<<< + * ] +*/ + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_tree, __pyx_mstate_global->__pyx_n_u_body_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 116, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_2 = __pyx_t_7; + __Pyx_INCREF(__pyx_t_2); + __pyx_t_3 = 0; + { + PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_2, NULL}; + __pyx_t_1 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 116, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_include_text, Py_True, __pyx_t_1, __pyx_callargs+1, 0) < (0)) __PYX_ERR(2, 116, __pyx_L1_error) + __pyx_t_4 = __Pyx_Object_VectorcallMethod_CallFromBuilder((PyObject*)__pyx_mstate_global->__pyx_n_u_iter, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 116, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + } + if (__Pyx_PyList_Extend(__pyx_t_6, __pyx_t_4) < (0)) __PYX_ERR(2, 116, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_r = __pyx_t_6; + __pyx_t_6 = 0; + goto __pyx_L0; + } + + /* "selectolax/utils.pxi":81 + * + * + * def do_parse_fragment(html: str, parser_cls: ParserCls): # <<<<<<<<<<<<<< + * """ + * Given HTML, parse it into a list of Nodes, such that the nodes +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_AddTraceback("selectolax.lexbor.do_parse_fragment", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_tree); + __Pyx_XDECREF(__pyx_v_frag_type); + __Pyx_XDECREF(__pyx_v_html); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor/attrs.pxi":10 + * cdef unicode decode_errors + * + * @staticmethod # <<<<<<<<<<<<<< + * cdef LexborAttributes create(lxb_dom_node_t *node): + * obj = LexborAttributes.__new__(LexborAttributes) +*/ + +static struct __pyx_obj_10selectolax_6lexbor_LexborAttributes *__pyx_f_10selectolax_6lexbor_16LexborAttributes_create(lxb_dom_node_t *__pyx_v_node) { + struct __pyx_obj_10selectolax_6lexbor_LexborAttributes *__pyx_v_obj = NULL; + struct __pyx_obj_10selectolax_6lexbor_LexborAttributes *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("create", 0); + + /* "selectolax/lexbor/attrs.pxi":12 + * @staticmethod + * cdef LexborAttributes create(lxb_dom_node_t *node): + * obj = LexborAttributes.__new__(LexborAttributes) # <<<<<<<<<<<<<< + * obj.node = node + * return obj +*/ + __pyx_t_1 = ((PyObject *)__pyx_tp_new_10selectolax_6lexbor_LexborAttributes(((PyTypeObject *)__pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborAttributes), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 12, __pyx_L1_error) + __Pyx_GOTREF((PyObject *)__pyx_t_1); + __pyx_t_2 = ((PyObject *)__pyx_t_1); + __Pyx_INCREF(__pyx_t_2); + __Pyx_DECREF((PyObject *)__pyx_t_1); __pyx_t_1 = 0; + __pyx_v_obj = ((struct __pyx_obj_10selectolax_6lexbor_LexborAttributes *)__pyx_t_2); + __pyx_t_2 = 0; + + /* "selectolax/lexbor/attrs.pxi":13 + * cdef LexborAttributes create(lxb_dom_node_t *node): + * obj = LexborAttributes.__new__(LexborAttributes) + * obj.node = node # <<<<<<<<<<<<<< + * return obj + * +*/ + __pyx_v_obj->node = __pyx_v_node; + + /* "selectolax/lexbor/attrs.pxi":14 + * obj = LexborAttributes.__new__(LexborAttributes) + * obj.node = node + * return obj # <<<<<<<<<<<<<< + * + * def __iter__(self): +*/ + __Pyx_XDECREF((PyObject *)__pyx_r); + __Pyx_INCREF((PyObject *)__pyx_v_obj); + __pyx_r = __pyx_v_obj; + goto __pyx_L0; + + /* "selectolax/lexbor/attrs.pxi":10 + * cdef unicode decode_errors + * + * @staticmethod # <<<<<<<<<<<<<< + * cdef LexborAttributes create(lxb_dom_node_t *node): + * obj = LexborAttributes.__new__(LexborAttributes) +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("selectolax.lexbor.LexborAttributes.create", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF((PyObject *)__pyx_v_obj); + __Pyx_XGIVEREF((PyObject *)__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} +static PyObject *__pyx_gb_10selectolax_6lexbor_16LexborAttributes_2generator(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ + +/* "selectolax/lexbor/attrs.pxi":16 + * return obj + * + * def __iter__(self): # <<<<<<<<<<<<<< + * cdef lxb_dom_attr_t *attr = lxb_dom_element_first_attribute_noi( self.node) + * cdef size_t str_len = 0 +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_16LexborAttributes_1__iter__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_10selectolax_6lexbor_16LexborAttributes_1__iter__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__iter__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6lexbor_16LexborAttributes___iter__(((struct __pyx_obj_10selectolax_6lexbor_LexborAttributes *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_16LexborAttributes___iter__(struct __pyx_obj_10selectolax_6lexbor_LexborAttributes *__pyx_v_self) { + struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct____iter__ *__pyx_cur_scope; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__iter__", 0); + __pyx_cur_scope = (struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct____iter__ *)__pyx_tp_new_10selectolax_6lexbor___pyx_scope_struct____iter__(__pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor___pyx_scope_struct____iter__, __pyx_mstate_global->__pyx_empty_tuple, NULL); + if (unlikely(!__pyx_cur_scope)) { + __pyx_cur_scope = ((struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct____iter__ *)Py_None); + __Pyx_INCREF(Py_None); + __PYX_ERR(3, 16, __pyx_L1_error) + } else { + __Pyx_GOTREF((PyObject *)__pyx_cur_scope); + } + __pyx_cur_scope->__pyx_v_self = __pyx_v_self; + __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self); + __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self); + { + __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_10selectolax_6lexbor_16LexborAttributes_2generator, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[0]), (PyObject *) __pyx_cur_scope, __pyx_mstate_global->__pyx_n_u_iter_2, __pyx_mstate_global->__pyx_n_u_LexborAttributes___iter, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor); if (unlikely(!gen)) __PYX_ERR(3, 16, __pyx_L1_error) + __Pyx_DECREF(__pyx_cur_scope); + __Pyx_RefNannyFinishContext(); + return (PyObject *) gen; + } + + /* function exit code */ + __pyx_L1_error:; + __Pyx_AddTraceback("selectolax.lexbor.LexborAttributes.__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_DECREF((PyObject *)__pyx_cur_scope); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_gb_10selectolax_6lexbor_16LexborAttributes_2generator(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ +{ + struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct____iter__ *__pyx_cur_scope = ((struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct____iter__ *)__pyx_generator->closure); + PyObject *__pyx_r = NULL; + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + size_t __pyx_t_6; + lxb_dom_attr_t *__pyx_t_7; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__iter__", 0); + switch (__pyx_generator->resume_label) { + case 0: goto __pyx_L3_first_run; + case 1: goto __pyx_L7_resume_from_yield; + default: /* CPython raises the right error here */ + __Pyx_RefNannyFinishContext(); + return NULL; + } + __pyx_L3_first_run:; + if (unlikely(__pyx_sent_value != Py_None)) { + if (unlikely(__pyx_sent_value)) PyErr_SetString(PyExc_TypeError, "can't send non-None value to a just-started generator"); + __PYX_ERR(3, 16, __pyx_L1_error) + } + + /* "selectolax/lexbor/attrs.pxi":17 + * + * def __iter__(self): + * cdef lxb_dom_attr_t *attr = lxb_dom_element_first_attribute_noi( self.node) # <<<<<<<<<<<<<< + * cdef size_t str_len = 0 + * attributes = dict() +*/ + __pyx_cur_scope->__pyx_v_attr = lxb_dom_element_first_attribute_noi(((lxb_dom_element_t *)__pyx_cur_scope->__pyx_v_self->node)); + + /* "selectolax/lexbor/attrs.pxi":18 + * def __iter__(self): + * cdef lxb_dom_attr_t *attr = lxb_dom_element_first_attribute_noi( self.node) + * cdef size_t str_len = 0 # <<<<<<<<<<<<<< + * attributes = dict() + * +*/ + __pyx_cur_scope->__pyx_v_str_len = 0; + + /* "selectolax/lexbor/attrs.pxi":19 + * cdef lxb_dom_attr_t *attr = lxb_dom_element_first_attribute_noi( self.node) + * cdef size_t str_len = 0 + * attributes = dict() # <<<<<<<<<<<<<< + * + * while attr != NULL: +*/ + __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 19, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __pyx_cur_scope->__pyx_v_attributes = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* "selectolax/lexbor/attrs.pxi":21 + * attributes = dict() + * + * while attr != NULL: # <<<<<<<<<<<<<< + * key = lxb_dom_attr_local_name_noi(attr, &str_len) + * if key is not NULL: +*/ + while (1) { + __pyx_t_2 = (__pyx_cur_scope->__pyx_v_attr != NULL); + if (!__pyx_t_2) break; + + /* "selectolax/lexbor/attrs.pxi":22 + * + * while attr != NULL: + * key = lxb_dom_attr_local_name_noi(attr, &str_len) # <<<<<<<<<<<<<< + * if key is not NULL: + * yield key.decode(_ENCODING) +*/ + __pyx_cur_scope->__pyx_v_key = lxb_dom_attr_local_name_noi(__pyx_cur_scope->__pyx_v_attr, (&__pyx_cur_scope->__pyx_v_str_len)); + + /* "selectolax/lexbor/attrs.pxi":23 + * while attr != NULL: + * key = lxb_dom_attr_local_name_noi(attr, &str_len) + * if key is not NULL: # <<<<<<<<<<<<<< + * yield key.decode(_ENCODING) + * attr = attr.next +*/ + __pyx_t_2 = (__pyx_cur_scope->__pyx_v_key != NULL); + if (__pyx_t_2) { + + /* "selectolax/lexbor/attrs.pxi":24 + * key = lxb_dom_attr_local_name_noi(attr, &str_len) + * if key is not NULL: + * yield key.decode(_ENCODING) # <<<<<<<<<<<<<< + * attr = attr.next + * +*/ + __pyx_t_4 = __Pyx_PyBytes_FromCString(__pyx_cur_scope->__pyx_v_key); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 24, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = __pyx_t_4; + __Pyx_INCREF(__pyx_t_3); + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_ENCODING); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 24, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_5}; + __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_decode, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 24, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, yielding value */ + __pyx_generator->resume_label = 1; + return __pyx_r; + __pyx_L7_resume_from_yield:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(3, 24, __pyx_L1_error) + + /* "selectolax/lexbor/attrs.pxi":23 + * while attr != NULL: + * key = lxb_dom_attr_local_name_noi(attr, &str_len) + * if key is not NULL: # <<<<<<<<<<<<<< + * yield key.decode(_ENCODING) + * attr = attr.next +*/ + } + + /* "selectolax/lexbor/attrs.pxi":25 + * if key is not NULL: + * yield key.decode(_ENCODING) + * attr = attr.next # <<<<<<<<<<<<<< + * + * def __setitem__(self, str key, object value): +*/ + __pyx_t_7 = __pyx_cur_scope->__pyx_v_attr->next; + __pyx_cur_scope->__pyx_v_attr = __pyx_t_7; + } + CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); + + /* "selectolax/lexbor/attrs.pxi":16 + * return obj + * + * def __iter__(self): # <<<<<<<<<<<<<< + * cdef lxb_dom_attr_t *attr = lxb_dom_element_first_attribute_noi( self.node) + * cdef size_t str_len = 0 +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + if (__Pyx_PyErr_Occurred()) { + __Pyx_Generator_Replace_StopIteration(0); + __Pyx_AddTraceback("__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename); + } + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + #if !CYTHON_USE_EXC_INFO_STACK + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + #endif + __pyx_generator->resume_label = -1; + __Pyx_Coroutine_clear((PyObject*)__pyx_generator); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor/attrs.pxi":27 + * attr = attr.next + * + * def __setitem__(self, str key, object value): # <<<<<<<<<<<<<< + * value = value + * bytes_key = key.encode(_ENCODING) +*/ + +/* Python wrapper */ +static int __pyx_pw_10selectolax_6lexbor_16LexborAttributes_4__setitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_10selectolax_6lexbor_16LexborAttributes_4__setitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_value) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__setitem__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_key), (&PyUnicode_Type), 1, "key", 1))) __PYX_ERR(3, 27, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6lexbor_16LexborAttributes_3__setitem__(((struct __pyx_obj_10selectolax_6lexbor_LexborAttributes *)__pyx_v_self), ((PyObject*)__pyx_v_key), ((PyObject *)__pyx_v_value)); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = -1; + goto __pyx_L5_cleaned_up; + __pyx_L0:; + __pyx_L5_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_10selectolax_6lexbor_16LexborAttributes_3__setitem__(struct __pyx_obj_10selectolax_6lexbor_LexborAttributes *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_value) { + PyObject *__pyx_v_bytes_key = NULL; + PyObject *__pyx_v_bytes_value = NULL; + lxb_dom_attr_t *__pyx_v_attr; + lxb_dom_document_t *__pyx_v_doc; + int __pyx_r; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + size_t __pyx_t_4; + int __pyx_t_5; + PyObject *__pyx_t_6 = NULL; + lxb_char_t *__pyx_t_7; + Py_ssize_t __pyx_t_8; + lxb_dom_document_t *__pyx_t_9; + int __pyx_t_10; + lxb_char_t *__pyx_t_11; + Py_ssize_t __pyx_t_12; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__setitem__", 0); + __Pyx_INCREF(__pyx_v_value); + + /* "selectolax/lexbor/attrs.pxi":28 + * + * def __setitem__(self, str key, object value): + * value = value # <<<<<<<<<<<<<< + * bytes_key = key.encode(_ENCODING) + * bytes_value = value.encode(_ENCODING) if value else b"" +*/ + __Pyx_INCREF(__pyx_v_value); + __Pyx_DECREF_SET(__pyx_v_value, __pyx_v_value); + + /* "selectolax/lexbor/attrs.pxi":29 + * def __setitem__(self, str key, object value): + * value = value + * bytes_key = key.encode(_ENCODING) # <<<<<<<<<<<<<< + * bytes_value = value.encode(_ENCODING) if value else b"" + * cdef lxb_dom_attr_t *attr +*/ + __pyx_t_2 = __pyx_v_key; + __Pyx_INCREF(__pyx_t_2); + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_ENCODING); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 29, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_3}; + __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_encode, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 29, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __pyx_v_bytes_key = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* "selectolax/lexbor/attrs.pxi":30 + * value = value + * bytes_key = key.encode(_ENCODING) + * bytes_value = value.encode(_ENCODING) if value else b"" # <<<<<<<<<<<<<< + * cdef lxb_dom_attr_t *attr + * cdef lxb_dom_document_t *doc +*/ + __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_value); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(3, 30, __pyx_L1_error) + if (__pyx_t_5) { + __pyx_t_2 = __pyx_v_value; + __Pyx_INCREF(__pyx_t_2); + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_ENCODING); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 30, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_4 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_6}; + __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_encode, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 30, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __pyx_t_1 = __pyx_t_3; + __pyx_t_3 = 0; + } else { + __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_b_); + __pyx_t_1 = __pyx_mstate_global->__pyx_kp_b_; + } + __pyx_v_bytes_value = __pyx_t_1; + __pyx_t_1 = 0; + + /* "selectolax/lexbor/attrs.pxi":34 + * cdef lxb_dom_document_t *doc + * + * if value is None: # <<<<<<<<<<<<<< + * # N.B. This is suboptimal, but there is not API to set empty attributes + * attr = lxb_dom_element_set_attribute( +*/ + __pyx_t_5 = (__pyx_v_value == Py_None); + if (__pyx_t_5) { + + /* "selectolax/lexbor/attrs.pxi":38 + * attr = lxb_dom_element_set_attribute( + * self.node, + * bytes_key, len(bytes_key), # <<<<<<<<<<<<<< + * NULL, 0 + * ) +*/ + __pyx_t_7 = __Pyx_PyBytes_AsWritableUString(__pyx_v_bytes_key); if (unlikely((!__pyx_t_7) && PyErr_Occurred())) __PYX_ERR(3, 38, __pyx_L1_error) + __pyx_t_8 = __Pyx_PyBytes_GET_SIZE(__pyx_v_bytes_key); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(3, 38, __pyx_L1_error) + + /* "selectolax/lexbor/attrs.pxi":36 + * if value is None: + * # N.B. This is suboptimal, but there is not API to set empty attributes + * attr = lxb_dom_element_set_attribute( # <<<<<<<<<<<<<< + * self.node, + * bytes_key, len(bytes_key), +*/ + __pyx_v_attr = lxb_dom_element_set_attribute(((lxb_dom_element_t *)__pyx_v_self->node), ((lxb_char_t *)__pyx_t_7), __pyx_t_8, NULL, 0); + + /* "selectolax/lexbor/attrs.pxi":41 + * NULL, 0 + * ) + * doc = (attr).owner_document # <<<<<<<<<<<<<< + * lexbor_str_destroy(attr.value, doc.text, 0) + * attr.value = NULL +*/ + __pyx_t_9 = ((lxb_dom_node_t *)__pyx_v_attr)->owner_document; + __pyx_v_doc = __pyx_t_9; + + /* "selectolax/lexbor/attrs.pxi":42 + * ) + * doc = (attr).owner_document + * lexbor_str_destroy(attr.value, doc.text, 0) # <<<<<<<<<<<<<< + * attr.value = NULL + * +*/ + (void)(lexbor_str_destroy(__pyx_v_attr->value, __pyx_v_doc->text, 0)); + + /* "selectolax/lexbor/attrs.pxi":43 + * doc = (attr).owner_document + * lexbor_str_destroy(attr.value, doc.text, 0) + * attr.value = NULL # <<<<<<<<<<<<<< + * + * elif isinstance(value, str) or isinstance(value, unicode) : +*/ + __pyx_v_attr->value = NULL; + + /* "selectolax/lexbor/attrs.pxi":34 + * cdef lxb_dom_document_t *doc + * + * if value is None: # <<<<<<<<<<<<<< + * # N.B. This is suboptimal, but there is not API to set empty attributes + * attr = lxb_dom_element_set_attribute( +*/ + goto __pyx_L3; + } + + /* "selectolax/lexbor/attrs.pxi":45 + * attr.value = NULL + * + * elif isinstance(value, str) or isinstance(value, unicode) : # <<<<<<<<<<<<<< + * lxb_dom_element_set_attribute( + * self.node, +*/ + __pyx_t_10 = PyUnicode_Check(__pyx_v_value); + if (!__pyx_t_10) { + } else { + __pyx_t_5 = __pyx_t_10; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_10 = PyUnicode_Check(__pyx_v_value); + __pyx_t_5 = __pyx_t_10; + __pyx_L4_bool_binop_done:; + if (likely(__pyx_t_5)) { + + /* "selectolax/lexbor/attrs.pxi":48 + * lxb_dom_element_set_attribute( + * self.node, + * bytes_key, len(bytes_key), # <<<<<<<<<<<<<< + * bytes_value, len(bytes_value), + * ) +*/ + __pyx_t_7 = __Pyx_PyBytes_AsWritableUString(__pyx_v_bytes_key); if (unlikely((!__pyx_t_7) && PyErr_Occurred())) __PYX_ERR(3, 48, __pyx_L1_error) + __pyx_t_8 = __Pyx_PyBytes_GET_SIZE(__pyx_v_bytes_key); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(3, 48, __pyx_L1_error) + + /* "selectolax/lexbor/attrs.pxi":49 + * self.node, + * bytes_key, len(bytes_key), + * bytes_value, len(bytes_value), # <<<<<<<<<<<<<< + * ) + * else: +*/ + __pyx_t_11 = __Pyx_PyObject_AsWritableUString(__pyx_v_bytes_value); if (unlikely((!__pyx_t_11) && PyErr_Occurred())) __PYX_ERR(3, 49, __pyx_L1_error) + __pyx_t_12 = PyObject_Length(__pyx_v_bytes_value); if (unlikely(__pyx_t_12 == ((Py_ssize_t)-1))) __PYX_ERR(3, 49, __pyx_L1_error) + + /* "selectolax/lexbor/attrs.pxi":46 + * + * elif isinstance(value, str) or isinstance(value, unicode) : + * lxb_dom_element_set_attribute( # <<<<<<<<<<<<<< + * self.node, + * bytes_key, len(bytes_key), +*/ + (void)(lxb_dom_element_set_attribute(((lxb_dom_element_t *)__pyx_v_self->node), ((lxb_char_t *)__pyx_t_7), __pyx_t_8, ((lxb_char_t *)__pyx_t_11), __pyx_t_12)); + + /* "selectolax/lexbor/attrs.pxi":45 + * attr.value = NULL + * + * elif isinstance(value, str) or isinstance(value, unicode) : # <<<<<<<<<<<<<< + * lxb_dom_element_set_attribute( + * self.node, +*/ + goto __pyx_L3; + } + + /* "selectolax/lexbor/attrs.pxi":52 + * ) + * else: + * raise TypeError("Expected str or unicode, got %s" % type(value)) # <<<<<<<<<<<<<< + * + * def __delitem__(self, key): +*/ + /*else*/ { + __pyx_t_3 = NULL; + __pyx_t_6 = __Pyx_PyUnicode_FormatSafe(__pyx_mstate_global->__pyx_kp_u_Expected_str_or_unicode_got_s, ((PyObject *)Py_TYPE(__pyx_v_value))); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 52, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_4 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_6}; + __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 52, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __Pyx_Raise(__pyx_t_1, 0, 0, 0); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __PYX_ERR(3, 52, __pyx_L1_error) + } + __pyx_L3:; + + /* "selectolax/lexbor/attrs.pxi":27 + * attr = attr.next + * + * def __setitem__(self, str key, object value): # <<<<<<<<<<<<<< + * value = value + * bytes_key = key.encode(_ENCODING) +*/ + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_AddTraceback("selectolax.lexbor.LexborAttributes.__setitem__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_bytes_key); + __Pyx_XDECREF(__pyx_v_bytes_value); + __Pyx_XDECREF(__pyx_v_value); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor/attrs.pxi":54 + * raise TypeError("Expected str or unicode, got %s" % type(value)) + * + * def __delitem__(self, key): # <<<<<<<<<<<<<< + * try: + * self.__getitem__(key) +*/ + +/* Python wrapper */ +static int __pyx_pw_10selectolax_6lexbor_16LexborAttributes_6__delitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_key); /*proto*/ +static int __pyx_pw_10selectolax_6lexbor_16LexborAttributes_6__delitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_key) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__delitem__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6lexbor_16LexborAttributes_5__delitem__(((struct __pyx_obj_10selectolax_6lexbor_LexborAttributes *)__pyx_v_self), ((PyObject *)__pyx_v_key)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_10selectolax_6lexbor_16LexborAttributes_5__delitem__(struct __pyx_obj_10selectolax_6lexbor_LexborAttributes *__pyx_v_self, PyObject *__pyx_v_key) { + PyObject *__pyx_v_bytes_key = NULL; + int __pyx_r; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + size_t __pyx_t_6; + int __pyx_t_7; + PyObject *__pyx_t_8 = NULL; + PyObject *__pyx_t_9 = NULL; + PyObject *__pyx_t_10 = NULL; + lxb_char_t *__pyx_t_11; + Py_ssize_t __pyx_t_12; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__delitem__", 0); + + /* "selectolax/lexbor/attrs.pxi":55 + * + * def __delitem__(self, key): + * try: # <<<<<<<<<<<<<< + * self.__getitem__(key) + * except KeyError: +*/ + { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); + __Pyx_XGOTREF(__pyx_t_1); + __Pyx_XGOTREF(__pyx_t_2); + __Pyx_XGOTREF(__pyx_t_3); + /*try:*/ { + + /* "selectolax/lexbor/attrs.pxi":56 + * def __delitem__(self, key): + * try: + * self.__getitem__(key) # <<<<<<<<<<<<<< + * except KeyError: + * raise KeyError(key) +*/ + __pyx_t_5 = ((PyObject *)__pyx_v_self); + __Pyx_INCREF(__pyx_t_5); + __pyx_t_6 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_key}; + __pyx_t_4 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_getitem, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 56, __pyx_L3_error) + __Pyx_GOTREF(__pyx_t_4); + } + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "selectolax/lexbor/attrs.pxi":55 + * + * def __delitem__(self, key): + * try: # <<<<<<<<<<<<<< + * self.__getitem__(key) + * except KeyError: +*/ + } + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + goto __pyx_L8_try_end; + __pyx_L3_error:; + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "selectolax/lexbor/attrs.pxi":57 + * try: + * self.__getitem__(key) + * except KeyError: # <<<<<<<<<<<<<< + * raise KeyError(key) + * bytes_key = key.encode(_ENCODING) +*/ + __pyx_t_7 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_KeyError)))); + if (__pyx_t_7) { + __Pyx_AddTraceback("selectolax.lexbor.LexborAttributes.__delitem__", __pyx_clineno, __pyx_lineno, __pyx_filename); + if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_5, &__pyx_t_8) < 0) __PYX_ERR(3, 57, __pyx_L5_except_error) + __Pyx_XGOTREF(__pyx_t_4); + __Pyx_XGOTREF(__pyx_t_5); + __Pyx_XGOTREF(__pyx_t_8); + + /* "selectolax/lexbor/attrs.pxi":58 + * self.__getitem__(key) + * except KeyError: + * raise KeyError(key) # <<<<<<<<<<<<<< + * bytes_key = key.encode(_ENCODING) + * lxb_dom_element_remove_attribute( +*/ + __pyx_t_10 = NULL; + __pyx_t_6 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_10, __pyx_v_key}; + __pyx_t_9 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_KeyError)), __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; + if (unlikely(!__pyx_t_9)) __PYX_ERR(3, 58, __pyx_L5_except_error) + __Pyx_GOTREF(__pyx_t_9); + } + __Pyx_Raise(__pyx_t_9, 0, 0, 0); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __PYX_ERR(3, 58, __pyx_L5_except_error) + } + goto __pyx_L5_except_error; + + /* "selectolax/lexbor/attrs.pxi":55 + * + * def __delitem__(self, key): + * try: # <<<<<<<<<<<<<< + * self.__getitem__(key) + * except KeyError: +*/ + __pyx_L5_except_error:; + __Pyx_XGIVEREF(__pyx_t_1); + __Pyx_XGIVEREF(__pyx_t_2); + __Pyx_XGIVEREF(__pyx_t_3); + __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); + goto __pyx_L1_error; + __pyx_L8_try_end:; + } + + /* "selectolax/lexbor/attrs.pxi":59 + * except KeyError: + * raise KeyError(key) + * bytes_key = key.encode(_ENCODING) # <<<<<<<<<<<<<< + * lxb_dom_element_remove_attribute( + * self.node, +*/ + __pyx_t_5 = __pyx_v_key; + __Pyx_INCREF(__pyx_t_5); + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_ENCODING); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 59, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_6 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_4}; + __pyx_t_8 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_encode, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_8)) __PYX_ERR(3, 59, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + } + __pyx_v_bytes_key = __pyx_t_8; + __pyx_t_8 = 0; + + /* "selectolax/lexbor/attrs.pxi":62 + * lxb_dom_element_remove_attribute( + * self.node, + * bytes_key, len(bytes_key), # <<<<<<<<<<<<<< + * ) + * +*/ + __pyx_t_11 = __Pyx_PyObject_AsWritableUString(__pyx_v_bytes_key); if (unlikely((!__pyx_t_11) && PyErr_Occurred())) __PYX_ERR(3, 62, __pyx_L1_error) + __pyx_t_12 = PyObject_Length(__pyx_v_bytes_key); if (unlikely(__pyx_t_12 == ((Py_ssize_t)-1))) __PYX_ERR(3, 62, __pyx_L1_error) + + /* "selectolax/lexbor/attrs.pxi":60 + * raise KeyError(key) + * bytes_key = key.encode(_ENCODING) + * lxb_dom_element_remove_attribute( # <<<<<<<<<<<<<< + * self.node, + * bytes_key, len(bytes_key), +*/ + (void)(lxb_dom_element_remove_attribute(((lxb_dom_element_t *)__pyx_v_self->node), ((lxb_char_t *)__pyx_t_11), __pyx_t_12)); + + /* "selectolax/lexbor/attrs.pxi":54 + * raise TypeError("Expected str or unicode, got %s" % type(value)) + * + * def __delitem__(self, key): # <<<<<<<<<<<<<< + * try: + * self.__getitem__(key) +*/ + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_XDECREF(__pyx_t_9); + __Pyx_XDECREF(__pyx_t_10); + __Pyx_AddTraceback("selectolax.lexbor.LexborAttributes.__delitem__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_bytes_key); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor/attrs.pxi":65 + * ) + * + * def __getitem__(self, str key): # <<<<<<<<<<<<<< + * bytes_key = key.encode(_ENCODING) + * cdef lxb_dom_attr_t * attr = lxb_dom_element_attr_by_name( +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_16LexborAttributes_8__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_key); /*proto*/ +static PyObject *__pyx_pw_10selectolax_6lexbor_16LexborAttributes_8__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_key) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__getitem__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_key), (&PyUnicode_Type), 1, "key", 1))) __PYX_ERR(3, 65, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6lexbor_16LexborAttributes_7__getitem__(((struct __pyx_obj_10selectolax_6lexbor_LexborAttributes *)__pyx_v_self), ((PyObject*)__pyx_v_key)); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + goto __pyx_L5_cleaned_up; + __pyx_L0:; + __pyx_L5_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_16LexborAttributes_7__getitem__(struct __pyx_obj_10selectolax_6lexbor_LexborAttributes *__pyx_v_self, PyObject *__pyx_v_key) { + PyObject *__pyx_v_bytes_key = NULL; + lxb_dom_attr_t *__pyx_v_attr; + size_t __pyx_v_str_len; + lxb_char_t const *__pyx_v_value; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + size_t __pyx_t_4; + lxb_char_t *__pyx_t_5; + Py_ssize_t __pyx_t_6; + int __pyx_t_7; + PyObject *__pyx_t_8 = NULL; + PyObject *__pyx_t_9 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__getitem__", 0); + + /* "selectolax/lexbor/attrs.pxi":66 + * + * def __getitem__(self, str key): + * bytes_key = key.encode(_ENCODING) # <<<<<<<<<<<<<< + * cdef lxb_dom_attr_t * attr = lxb_dom_element_attr_by_name( + * self.node, +*/ + __pyx_t_2 = __pyx_v_key; + __Pyx_INCREF(__pyx_t_2); + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_ENCODING); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 66, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_3}; + __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_encode, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 66, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __pyx_v_bytes_key = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* "selectolax/lexbor/attrs.pxi":69 + * cdef lxb_dom_attr_t * attr = lxb_dom_element_attr_by_name( + * self.node, + * bytes_key, len(bytes_key) # <<<<<<<<<<<<<< + * ) + * cdef size_t str_len = 0 +*/ + __pyx_t_5 = __Pyx_PyBytes_AsWritableUString(__pyx_v_bytes_key); if (unlikely((!__pyx_t_5) && PyErr_Occurred())) __PYX_ERR(3, 69, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyBytes_GET_SIZE(__pyx_v_bytes_key); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(3, 69, __pyx_L1_error) + + /* "selectolax/lexbor/attrs.pxi":67 + * def __getitem__(self, str key): + * bytes_key = key.encode(_ENCODING) + * cdef lxb_dom_attr_t * attr = lxb_dom_element_attr_by_name( # <<<<<<<<<<<<<< + * self.node, + * bytes_key, len(bytes_key) +*/ + __pyx_v_attr = lxb_dom_element_attr_by_name(((lxb_dom_element_t *)__pyx_v_self->node), ((lxb_char_t *)__pyx_t_5), __pyx_t_6); + + /* "selectolax/lexbor/attrs.pxi":71 + * bytes_key, len(bytes_key) + * ) + * cdef size_t str_len = 0 # <<<<<<<<<<<<<< + * if attr != NULL: + * value = lxb_dom_attr_value_noi(attr, &str_len) +*/ + __pyx_v_str_len = 0; + + /* "selectolax/lexbor/attrs.pxi":72 + * ) + * cdef size_t str_len = 0 + * if attr != NULL: # <<<<<<<<<<<<<< + * value = lxb_dom_attr_value_noi(attr, &str_len) + * return value.decode(_ENCODING) if value else None +*/ + __pyx_t_7 = (__pyx_v_attr != NULL); + if (__pyx_t_7) { + + /* "selectolax/lexbor/attrs.pxi":73 + * cdef size_t str_len = 0 + * if attr != NULL: + * value = lxb_dom_attr_value_noi(attr, &str_len) # <<<<<<<<<<<<<< + * return value.decode(_ENCODING) if value else None + * raise KeyError(key) +*/ + __pyx_v_value = lxb_dom_attr_value_noi(__pyx_v_attr, (&__pyx_v_str_len)); + + /* "selectolax/lexbor/attrs.pxi":74 + * if attr != NULL: + * value = lxb_dom_attr_value_noi(attr, &str_len) + * return value.decode(_ENCODING) if value else None # <<<<<<<<<<<<<< + * raise KeyError(key) + * +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_7 = (__pyx_v_value != 0); + if (__pyx_t_7) { + __pyx_t_8 = __Pyx_PyBytes_FromCString(__pyx_v_value); if (unlikely(!__pyx_t_8)) __PYX_ERR(3, 74, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_2 = __pyx_t_8; + __Pyx_INCREF(__pyx_t_2); + __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_mstate_global->__pyx_n_u_ENCODING); if (unlikely(!__pyx_t_9)) __PYX_ERR(3, 74, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_4 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_9}; + __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_decode, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 74, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __pyx_t_1 = __pyx_t_3; + __pyx_t_3 = 0; + } else { + __Pyx_INCREF(Py_None); + __pyx_t_1 = Py_None; + } + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "selectolax/lexbor/attrs.pxi":72 + * ) + * cdef size_t str_len = 0 + * if attr != NULL: # <<<<<<<<<<<<<< + * value = lxb_dom_attr_value_noi(attr, &str_len) + * return value.decode(_ENCODING) if value else None +*/ + } + + /* "selectolax/lexbor/attrs.pxi":75 + * value = lxb_dom_attr_value_noi(attr, &str_len) + * return value.decode(_ENCODING) if value else None + * raise KeyError(key) # <<<<<<<<<<<<<< + * + * def __len__(self): +*/ + __pyx_t_3 = NULL; + __pyx_t_4 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_key}; + __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_KeyError)), __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 75, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __Pyx_Raise(__pyx_t_1, 0, 0, 0); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __PYX_ERR(3, 75, __pyx_L1_error) + + /* "selectolax/lexbor/attrs.pxi":65 + * ) + * + * def __getitem__(self, str key): # <<<<<<<<<<<<<< + * bytes_key = key.encode(_ENCODING) + * cdef lxb_dom_attr_t * attr = lxb_dom_element_attr_by_name( +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_XDECREF(__pyx_t_9); + __Pyx_AddTraceback("selectolax.lexbor.LexborAttributes.__getitem__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_bytes_key); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor/attrs.pxi":77 + * raise KeyError(key) + * + * def __len__(self): # <<<<<<<<<<<<<< + * return len(list(self.__iter__())) + * +*/ + +/* Python wrapper */ +static Py_ssize_t __pyx_pw_10selectolax_6lexbor_16LexborAttributes_10__len__(PyObject *__pyx_v_self); /*proto*/ +static Py_ssize_t __pyx_pw_10selectolax_6lexbor_16LexborAttributes_10__len__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + Py_ssize_t __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__len__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6lexbor_16LexborAttributes_9__len__(((struct __pyx_obj_10selectolax_6lexbor_LexborAttributes *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static Py_ssize_t __pyx_pf_10selectolax_6lexbor_16LexborAttributes_9__len__(struct __pyx_obj_10selectolax_6lexbor_LexborAttributes *__pyx_v_self) { + Py_ssize_t __pyx_r; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + size_t __pyx_t_3; + Py_ssize_t __pyx_t_4; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__len__", 0); + + /* "selectolax/lexbor/attrs.pxi":78 + * + * def __len__(self): + * return len(list(self.__iter__())) # <<<<<<<<<<<<<< + * + * def keys(self): +*/ + __pyx_t_2 = ((PyObject *)__pyx_v_self); + __Pyx_INCREF(__pyx_t_2); + __pyx_t_3 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL}; + __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_iter_2, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 78, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __pyx_t_2 = __Pyx_PySequence_ListKeepNew(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 78, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_4 = __Pyx_PyList_GET_SIZE(__pyx_t_2); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(3, 78, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_r = __pyx_t_4; + goto __pyx_L0; + + /* "selectolax/lexbor/attrs.pxi":77 + * raise KeyError(key) + * + * def __len__(self): # <<<<<<<<<<<<<< + * return len(list(self.__iter__())) + * +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("selectolax.lexbor.LexborAttributes.__len__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor/attrs.pxi":80 + * return len(list(self.__iter__())) + * + * def keys(self): # <<<<<<<<<<<<<< + * return self.__iter__() + * +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_16LexborAttributes_12keys(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6lexbor_16LexborAttributes_11keys, "LexborAttributes.keys(self)"); +static PyMethodDef __pyx_mdef_10selectolax_6lexbor_16LexborAttributes_12keys = {"keys", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_16LexborAttributes_12keys, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_16LexborAttributes_11keys}; +static PyObject *__pyx_pw_10selectolax_6lexbor_16LexborAttributes_12keys(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("keys (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("keys", 1, 0, 0, __pyx_nargs); return NULL; } + const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len < 0)) return NULL; + if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("keys", __pyx_kwds); return NULL;} + __pyx_r = __pyx_pf_10selectolax_6lexbor_16LexborAttributes_11keys(((struct __pyx_obj_10selectolax_6lexbor_LexborAttributes *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_16LexborAttributes_11keys(struct __pyx_obj_10selectolax_6lexbor_LexborAttributes *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + size_t __pyx_t_3; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("keys", 0); + + /* "selectolax/lexbor/attrs.pxi":81 + * + * def keys(self): + * return self.__iter__() # <<<<<<<<<<<<<< + * + * def items(self): +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_2 = ((PyObject *)__pyx_v_self); + __Pyx_INCREF(__pyx_t_2); + __pyx_t_3 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL}; + __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_iter_2, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 81, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "selectolax/lexbor/attrs.pxi":80 + * return len(list(self.__iter__())) + * + * def keys(self): # <<<<<<<<<<<<<< + * return self.__iter__() + * +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("selectolax.lexbor.LexborAttributes.keys", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} +static PyObject *__pyx_gb_10selectolax_6lexbor_16LexborAttributes_15generator1(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ + +/* "selectolax/lexbor/attrs.pxi":83 + * return self.__iter__() + * + * def items(self): # <<<<<<<<<<<<<< + * for key in self.__iter__(): + * yield key, self[key] +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_16LexborAttributes_14items(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6lexbor_16LexborAttributes_13items, "LexborAttributes.items(self)"); +static PyMethodDef __pyx_mdef_10selectolax_6lexbor_16LexborAttributes_14items = {"items", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_16LexborAttributes_14items, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_16LexborAttributes_13items}; +static PyObject *__pyx_pw_10selectolax_6lexbor_16LexborAttributes_14items(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("items (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("items", 1, 0, 0, __pyx_nargs); return NULL; } + const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len < 0)) return NULL; + if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("items", __pyx_kwds); return NULL;} + __pyx_r = __pyx_pf_10selectolax_6lexbor_16LexborAttributes_13items(((struct __pyx_obj_10selectolax_6lexbor_LexborAttributes *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_16LexborAttributes_13items(struct __pyx_obj_10selectolax_6lexbor_LexborAttributes *__pyx_v_self) { + struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct_1_items *__pyx_cur_scope; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("items", 0); + __pyx_cur_scope = (struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct_1_items *)__pyx_tp_new_10selectolax_6lexbor___pyx_scope_struct_1_items(__pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor___pyx_scope_struct_1_items, __pyx_mstate_global->__pyx_empty_tuple, NULL); + if (unlikely(!__pyx_cur_scope)) { + __pyx_cur_scope = ((struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct_1_items *)Py_None); + __Pyx_INCREF(Py_None); + __PYX_ERR(3, 83, __pyx_L1_error) + } else { + __Pyx_GOTREF((PyObject *)__pyx_cur_scope); + } + __pyx_cur_scope->__pyx_v_self = __pyx_v_self; + __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self); + __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self); + { + __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_10selectolax_6lexbor_16LexborAttributes_15generator1, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[1]), (PyObject *) __pyx_cur_scope, __pyx_mstate_global->__pyx_n_u_items, __pyx_mstate_global->__pyx_n_u_LexborAttributes_items, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor); if (unlikely(!gen)) __PYX_ERR(3, 83, __pyx_L1_error) + __Pyx_DECREF(__pyx_cur_scope); + __Pyx_RefNannyFinishContext(); + return (PyObject *) gen; + } + + /* function exit code */ + __pyx_L1_error:; + __Pyx_AddTraceback("selectolax.lexbor.LexborAttributes.items", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_DECREF((PyObject *)__pyx_cur_scope); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_gb_10selectolax_6lexbor_16LexborAttributes_15generator1(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ +{ + struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct_1_items *__pyx_cur_scope = ((struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct_1_items *)__pyx_generator->closure); + PyObject *__pyx_r = NULL; + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + size_t __pyx_t_3; + Py_ssize_t __pyx_t_4; + PyObject *(*__pyx_t_5)(PyObject *); + PyObject *__pyx_t_6 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("items", 0); + switch (__pyx_generator->resume_label) { + case 0: goto __pyx_L3_first_run; + case 1: goto __pyx_L6_resume_from_yield; + default: /* CPython raises the right error here */ + __Pyx_RefNannyFinishContext(); + return NULL; + } + __pyx_L3_first_run:; + if (unlikely(__pyx_sent_value != Py_None)) { + if (unlikely(__pyx_sent_value)) PyErr_SetString(PyExc_TypeError, "can't send non-None value to a just-started generator"); + __PYX_ERR(3, 83, __pyx_L1_error) + } + + /* "selectolax/lexbor/attrs.pxi":84 + * + * def items(self): + * for key in self.__iter__(): # <<<<<<<<<<<<<< + * yield key, self[key] + * +*/ + __pyx_t_2 = ((PyObject *)__pyx_cur_scope->__pyx_v_self); + __Pyx_INCREF(__pyx_t_2); + __pyx_t_3 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL}; + __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_iter_2, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 84, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) { + __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); + __pyx_t_4 = 0; + __pyx_t_5 = NULL; + } else { + __pyx_t_4 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 84, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_5 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 84, __pyx_L1_error) + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + for (;;) { + if (likely(!__pyx_t_5)) { + if (likely(PyList_CheckExact(__pyx_t_2))) { + { + Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2); + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely((__pyx_temp < 0))) __PYX_ERR(3, 84, __pyx_L1_error) + #endif + if (__pyx_t_4 >= __pyx_temp) break; + } + __pyx_t_1 = __Pyx_PyList_GetItemRefFast(__pyx_t_2, __pyx_t_4, __Pyx_ReferenceSharing_OwnStrongReference); + ++__pyx_t_4; + } else { + { + Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_2); + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely((__pyx_temp < 0))) __PYX_ERR(3, 84, __pyx_L1_error) + #endif + if (__pyx_t_4 >= __pyx_temp) break; + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_1 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_4)); + #else + __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_4); + #endif + ++__pyx_t_4; + } + if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 84, __pyx_L1_error) + } else { + __pyx_t_1 = __pyx_t_5(__pyx_t_2); + if (unlikely(!__pyx_t_1)) { + PyObject* exc_type = PyErr_Occurred(); + if (exc_type) { + if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(3, 84, __pyx_L1_error) + PyErr_Clear(); + } + break; + } + } + __Pyx_GOTREF(__pyx_t_1); + __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_key); + __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_key, __pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __pyx_t_1 = 0; + + /* "selectolax/lexbor/attrs.pxi":85 + * def items(self): + * for key in self.__iter__(): + * yield key, self[key] # <<<<<<<<<<<<<< + * + * def values(self): +*/ + __pyx_t_1 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_cur_scope->__pyx_v_key); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 85, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 85, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_INCREF(__pyx_cur_scope->__pyx_v_key); + __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_key); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_cur_scope->__pyx_v_key) != (0)) __PYX_ERR(3, 85, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_1); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_1) != (0)) __PYX_ERR(3, 85, __pyx_L1_error); + __pyx_t_1 = 0; + __pyx_r = __pyx_t_6; + __pyx_t_6 = 0; + __Pyx_XGIVEREF(__pyx_t_2); + __pyx_cur_scope->__pyx_t_0 = __pyx_t_2; + __pyx_cur_scope->__pyx_t_1 = __pyx_t_4; + __pyx_cur_scope->__pyx_t_2 = __pyx_t_5; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, yielding value */ + __pyx_generator->resume_label = 1; + return __pyx_r; + __pyx_L6_resume_from_yield:; + __pyx_t_2 = __pyx_cur_scope->__pyx_t_0; + __pyx_cur_scope->__pyx_t_0 = 0; + __Pyx_XGOTREF(__pyx_t_2); + __pyx_t_4 = __pyx_cur_scope->__pyx_t_1; + __pyx_t_5 = __pyx_cur_scope->__pyx_t_2; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(3, 85, __pyx_L1_error) + + /* "selectolax/lexbor/attrs.pxi":84 + * + * def items(self): + * for key in self.__iter__(): # <<<<<<<<<<<<<< + * yield key, self[key] + * +*/ + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); + + /* "selectolax/lexbor/attrs.pxi":83 + * return self.__iter__() + * + * def items(self): # <<<<<<<<<<<<<< + * for key in self.__iter__(): + * yield key, self[key] +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_6); + if (__Pyx_PyErr_Occurred()) { + __Pyx_Generator_Replace_StopIteration(0); + __Pyx_AddTraceback("items", __pyx_clineno, __pyx_lineno, __pyx_filename); + } + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + #if !CYTHON_USE_EXC_INFO_STACK + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + #endif + __pyx_generator->resume_label = -1; + __Pyx_Coroutine_clear((PyObject*)__pyx_generator); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} +static PyObject *__pyx_gb_10selectolax_6lexbor_16LexborAttributes_18generator2(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ + +/* "selectolax/lexbor/attrs.pxi":87 + * yield key, self[key] + * + * def values(self): # <<<<<<<<<<<<<< + * for key in self.__iter__(): + * yield self[key] +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_16LexborAttributes_17values(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6lexbor_16LexborAttributes_16values, "LexborAttributes.values(self)"); +static PyMethodDef __pyx_mdef_10selectolax_6lexbor_16LexborAttributes_17values = {"values", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_16LexborAttributes_17values, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_16LexborAttributes_16values}; +static PyObject *__pyx_pw_10selectolax_6lexbor_16LexborAttributes_17values(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("values (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("values", 1, 0, 0, __pyx_nargs); return NULL; } + const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len < 0)) return NULL; + if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("values", __pyx_kwds); return NULL;} + __pyx_r = __pyx_pf_10selectolax_6lexbor_16LexborAttributes_16values(((struct __pyx_obj_10selectolax_6lexbor_LexborAttributes *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_16LexborAttributes_16values(struct __pyx_obj_10selectolax_6lexbor_LexborAttributes *__pyx_v_self) { + struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct_2_values *__pyx_cur_scope; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("values", 0); + __pyx_cur_scope = (struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct_2_values *)__pyx_tp_new_10selectolax_6lexbor___pyx_scope_struct_2_values(__pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor___pyx_scope_struct_2_values, __pyx_mstate_global->__pyx_empty_tuple, NULL); + if (unlikely(!__pyx_cur_scope)) { + __pyx_cur_scope = ((struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct_2_values *)Py_None); + __Pyx_INCREF(Py_None); + __PYX_ERR(3, 87, __pyx_L1_error) + } else { + __Pyx_GOTREF((PyObject *)__pyx_cur_scope); + } + __pyx_cur_scope->__pyx_v_self = __pyx_v_self; + __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self); + __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self); + { + __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_10selectolax_6lexbor_16LexborAttributes_18generator2, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[2]), (PyObject *) __pyx_cur_scope, __pyx_mstate_global->__pyx_n_u_values, __pyx_mstate_global->__pyx_n_u_LexborAttributes_values, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor); if (unlikely(!gen)) __PYX_ERR(3, 87, __pyx_L1_error) + __Pyx_DECREF(__pyx_cur_scope); + __Pyx_RefNannyFinishContext(); + return (PyObject *) gen; + } + + /* function exit code */ + __pyx_L1_error:; + __Pyx_AddTraceback("selectolax.lexbor.LexborAttributes.values", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_DECREF((PyObject *)__pyx_cur_scope); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_gb_10selectolax_6lexbor_16LexborAttributes_18generator2(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ +{ + struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct_2_values *__pyx_cur_scope = ((struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct_2_values *)__pyx_generator->closure); + PyObject *__pyx_r = NULL; + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + size_t __pyx_t_3; + Py_ssize_t __pyx_t_4; + PyObject *(*__pyx_t_5)(PyObject *); + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("values", 0); + switch (__pyx_generator->resume_label) { + case 0: goto __pyx_L3_first_run; + case 1: goto __pyx_L6_resume_from_yield; + default: /* CPython raises the right error here */ + __Pyx_RefNannyFinishContext(); + return NULL; + } + __pyx_L3_first_run:; + if (unlikely(__pyx_sent_value != Py_None)) { + if (unlikely(__pyx_sent_value)) PyErr_SetString(PyExc_TypeError, "can't send non-None value to a just-started generator"); + __PYX_ERR(3, 87, __pyx_L1_error) + } + + /* "selectolax/lexbor/attrs.pxi":88 + * + * def values(self): + * for key in self.__iter__(): # <<<<<<<<<<<<<< + * yield self[key] + * +*/ + __pyx_t_2 = ((PyObject *)__pyx_cur_scope->__pyx_v_self); + __Pyx_INCREF(__pyx_t_2); + __pyx_t_3 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL}; + __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_iter_2, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 88, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) { + __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); + __pyx_t_4 = 0; + __pyx_t_5 = NULL; + } else { + __pyx_t_4 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 88, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_5 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 88, __pyx_L1_error) + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + for (;;) { + if (likely(!__pyx_t_5)) { + if (likely(PyList_CheckExact(__pyx_t_2))) { + { + Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2); + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely((__pyx_temp < 0))) __PYX_ERR(3, 88, __pyx_L1_error) + #endif + if (__pyx_t_4 >= __pyx_temp) break; + } + __pyx_t_1 = __Pyx_PyList_GetItemRefFast(__pyx_t_2, __pyx_t_4, __Pyx_ReferenceSharing_OwnStrongReference); + ++__pyx_t_4; + } else { + { + Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_2); + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely((__pyx_temp < 0))) __PYX_ERR(3, 88, __pyx_L1_error) + #endif + if (__pyx_t_4 >= __pyx_temp) break; + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_1 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_4)); + #else + __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_4); + #endif + ++__pyx_t_4; + } + if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 88, __pyx_L1_error) + } else { + __pyx_t_1 = __pyx_t_5(__pyx_t_2); + if (unlikely(!__pyx_t_1)) { + PyObject* exc_type = PyErr_Occurred(); + if (exc_type) { + if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(3, 88, __pyx_L1_error) + PyErr_Clear(); + } + break; + } + } + __Pyx_GOTREF(__pyx_t_1); + __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_key); + __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_key, __pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __pyx_t_1 = 0; + + /* "selectolax/lexbor/attrs.pxi":89 + * def values(self): + * for key in self.__iter__(): + * yield self[key] # <<<<<<<<<<<<<< + * + * def get(self, key, default=None): +*/ + __pyx_t_1 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_cur_scope->__pyx_v_key); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 89, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + __Pyx_XGIVEREF(__pyx_t_2); + __pyx_cur_scope->__pyx_t_0 = __pyx_t_2; + __pyx_cur_scope->__pyx_t_1 = __pyx_t_4; + __pyx_cur_scope->__pyx_t_2 = __pyx_t_5; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, yielding value */ + __pyx_generator->resume_label = 1; + return __pyx_r; + __pyx_L6_resume_from_yield:; + __pyx_t_2 = __pyx_cur_scope->__pyx_t_0; + __pyx_cur_scope->__pyx_t_0 = 0; + __Pyx_XGOTREF(__pyx_t_2); + __pyx_t_4 = __pyx_cur_scope->__pyx_t_1; + __pyx_t_5 = __pyx_cur_scope->__pyx_t_2; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(3, 89, __pyx_L1_error) + + /* "selectolax/lexbor/attrs.pxi":88 + * + * def values(self): + * for key in self.__iter__(): # <<<<<<<<<<<<<< + * yield self[key] + * +*/ + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); + + /* "selectolax/lexbor/attrs.pxi":87 + * yield key, self[key] + * + * def values(self): # <<<<<<<<<<<<<< + * for key in self.__iter__(): + * yield self[key] +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + if (__Pyx_PyErr_Occurred()) { + __Pyx_Generator_Replace_StopIteration(0); + __Pyx_AddTraceback("values", __pyx_clineno, __pyx_lineno, __pyx_filename); + } + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + #if !CYTHON_USE_EXC_INFO_STACK + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + #endif + __pyx_generator->resume_label = -1; + __Pyx_Coroutine_clear((PyObject*)__pyx_generator); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor/attrs.pxi":91 + * yield self[key] + * + * def get(self, key, default=None): # <<<<<<<<<<<<<< + * try: + * return self[key] +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_16LexborAttributes_20get(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6lexbor_16LexborAttributes_19get, "LexborAttributes.get(self, key, default=None)"); +static PyMethodDef __pyx_mdef_10selectolax_6lexbor_16LexborAttributes_20get = {"get", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_16LexborAttributes_20get, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_16LexborAttributes_19get}; +static PyObject *__pyx_pw_10selectolax_6lexbor_16LexborAttributes_20get(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_key = 0; + PyObject *__pyx_v_default = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[2] = {0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("get (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_key,&__pyx_mstate_global->__pyx_n_u_default,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(3, 91, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(3, 91, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(3, 91, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "get", 0) < (0)) __PYX_ERR(3, 91, __pyx_L3_error) + if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None)); + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("get", 0, 1, 2, i); __PYX_ERR(3, 91, __pyx_L3_error) } + } + } else { + switch (__pyx_nargs) { + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(3, 91, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(3, 91, __pyx_L3_error) + break; + default: goto __pyx_L5_argtuple_error; + } + if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None)); + } + __pyx_v_key = values[0]; + __pyx_v_default = values[1]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("get", 0, 1, 2, __pyx_nargs); __PYX_ERR(3, 91, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.lexbor.LexborAttributes.get", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_10selectolax_6lexbor_16LexborAttributes_19get(((struct __pyx_obj_10selectolax_6lexbor_LexborAttributes *)__pyx_v_self), __pyx_v_key, __pyx_v_default); + + /* function exit code */ + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_16LexborAttributes_19get(struct __pyx_obj_10selectolax_6lexbor_LexborAttributes *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_default) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + int __pyx_t_5; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("get", 0); + + /* "selectolax/lexbor/attrs.pxi":92 + * + * def get(self, key, default=None): + * try: # <<<<<<<<<<<<<< + * return self[key] + * except KeyError: +*/ + { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); + __Pyx_XGOTREF(__pyx_t_1); + __Pyx_XGOTREF(__pyx_t_2); + __Pyx_XGOTREF(__pyx_t_3); + /*try:*/ { + + /* "selectolax/lexbor/attrs.pxi":93 + * def get(self, key, default=None): + * try: + * return self[key] # <<<<<<<<<<<<<< + * except KeyError: + * return default +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_4 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self), __pyx_v_key); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 93, __pyx_L3_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_r = __pyx_t_4; + __pyx_t_4 = 0; + goto __pyx_L7_try_return; + + /* "selectolax/lexbor/attrs.pxi":92 + * + * def get(self, key, default=None): + * try: # <<<<<<<<<<<<<< + * return self[key] + * except KeyError: +*/ + } + __pyx_L3_error:; + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "selectolax/lexbor/attrs.pxi":94 + * try: + * return self[key] + * except KeyError: # <<<<<<<<<<<<<< + * return default + * +*/ + __pyx_t_5 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_KeyError)))); + if (__pyx_t_5) { + __Pyx_ErrRestore(0,0,0); + + /* "selectolax/lexbor/attrs.pxi":95 + * return self[key] + * except KeyError: + * return default # <<<<<<<<<<<<<< + * + * def sget(self, key, default=""): +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_default); + __pyx_r = __pyx_v_default; + goto __pyx_L6_except_return; + } + goto __pyx_L5_except_error; + + /* "selectolax/lexbor/attrs.pxi":92 + * + * def get(self, key, default=None): + * try: # <<<<<<<<<<<<<< + * return self[key] + * except KeyError: +*/ + __pyx_L5_except_error:; + __Pyx_XGIVEREF(__pyx_t_1); + __Pyx_XGIVEREF(__pyx_t_2); + __Pyx_XGIVEREF(__pyx_t_3); + __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); + goto __pyx_L1_error; + __pyx_L7_try_return:; + __Pyx_XGIVEREF(__pyx_t_1); + __Pyx_XGIVEREF(__pyx_t_2); + __Pyx_XGIVEREF(__pyx_t_3); + __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); + goto __pyx_L0; + __pyx_L6_except_return:; + __Pyx_XGIVEREF(__pyx_t_1); + __Pyx_XGIVEREF(__pyx_t_2); + __Pyx_XGIVEREF(__pyx_t_3); + __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); + goto __pyx_L0; + } + + /* "selectolax/lexbor/attrs.pxi":91 + * yield self[key] + * + * def get(self, key, default=None): # <<<<<<<<<<<<<< + * try: + * return self[key] +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("selectolax.lexbor.LexborAttributes.get", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor/attrs.pxi":97 + * return default + * + * def sget(self, key, default=""): # <<<<<<<<<<<<<< + * """Same as get, but returns empty strings instead of None values for empty attributes.""" + * try: +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_16LexborAttributes_22sget(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6lexbor_16LexborAttributes_21sget, "LexborAttributes.sget(self, key, default='')\n\nSame as get, but returns empty strings instead of None values for empty attributes."); +static PyMethodDef __pyx_mdef_10selectolax_6lexbor_16LexborAttributes_22sget = {"sget", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_16LexborAttributes_22sget, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_16LexborAttributes_21sget}; +static PyObject *__pyx_pw_10selectolax_6lexbor_16LexborAttributes_22sget(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_key = 0; + PyObject *__pyx_v_default = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[2] = {0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("sget (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_key,&__pyx_mstate_global->__pyx_n_u_default,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(3, 97, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(3, 97, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(3, 97, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "sget", 0) < (0)) __PYX_ERR(3, 97, __pyx_L3_error) + if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_kp_u_)); + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("sget", 0, 1, 2, i); __PYX_ERR(3, 97, __pyx_L3_error) } + } + } else { + switch (__pyx_nargs) { + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(3, 97, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(3, 97, __pyx_L3_error) + break; + default: goto __pyx_L5_argtuple_error; + } + if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_kp_u_)); + } + __pyx_v_key = values[0]; + __pyx_v_default = values[1]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("sget", 0, 1, 2, __pyx_nargs); __PYX_ERR(3, 97, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.lexbor.LexborAttributes.sget", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_10selectolax_6lexbor_16LexborAttributes_21sget(((struct __pyx_obj_10selectolax_6lexbor_LexborAttributes *)__pyx_v_self), __pyx_v_key, __pyx_v_default); + + /* function exit code */ + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_16LexborAttributes_21sget(struct __pyx_obj_10selectolax_6lexbor_LexborAttributes *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_default) { + PyObject *__pyx_v_val = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + int __pyx_t_5; + int __pyx_t_6; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("sget", 0); + + /* "selectolax/lexbor/attrs.pxi":99 + * def sget(self, key, default=""): + * """Same as get, but returns empty strings instead of None values for empty attributes.""" + * try: # <<<<<<<<<<<<<< + * val = self[key] + * if val is None: +*/ + { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); + __Pyx_XGOTREF(__pyx_t_1); + __Pyx_XGOTREF(__pyx_t_2); + __Pyx_XGOTREF(__pyx_t_3); + /*try:*/ { + + /* "selectolax/lexbor/attrs.pxi":100 + * """Same as get, but returns empty strings instead of None values for empty attributes.""" + * try: + * val = self[key] # <<<<<<<<<<<<<< + * if val is None: + * val = "" +*/ + __pyx_t_4 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self), __pyx_v_key); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 100, __pyx_L3_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_v_val = __pyx_t_4; + __pyx_t_4 = 0; + + /* "selectolax/lexbor/attrs.pxi":101 + * try: + * val = self[key] + * if val is None: # <<<<<<<<<<<<<< + * val = "" + * return val +*/ + __pyx_t_5 = (__pyx_v_val == Py_None); + if (__pyx_t_5) { + + /* "selectolax/lexbor/attrs.pxi":102 + * val = self[key] + * if val is None: + * val = "" # <<<<<<<<<<<<<< + * return val + * except KeyError: +*/ + __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u_); + __Pyx_DECREF_SET(__pyx_v_val, __pyx_mstate_global->__pyx_kp_u_); + + /* "selectolax/lexbor/attrs.pxi":101 + * try: + * val = self[key] + * if val is None: # <<<<<<<<<<<<<< + * val = "" + * return val +*/ + } + + /* "selectolax/lexbor/attrs.pxi":103 + * if val is None: + * val = "" + * return val # <<<<<<<<<<<<<< + * except KeyError: + * return default +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_val); + __pyx_r = __pyx_v_val; + goto __pyx_L7_try_return; + + /* "selectolax/lexbor/attrs.pxi":99 + * def sget(self, key, default=""): + * """Same as get, but returns empty strings instead of None values for empty attributes.""" + * try: # <<<<<<<<<<<<<< + * val = self[key] + * if val is None: +*/ + } + __pyx_L3_error:; + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "selectolax/lexbor/attrs.pxi":104 + * val = "" + * return val + * except KeyError: # <<<<<<<<<<<<<< + * return default + * +*/ + __pyx_t_6 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_KeyError)))); + if (__pyx_t_6) { + __Pyx_ErrRestore(0,0,0); + + /* "selectolax/lexbor/attrs.pxi":105 + * return val + * except KeyError: + * return default # <<<<<<<<<<<<<< + * + * def __contains__(self, key): +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_default); + __pyx_r = __pyx_v_default; + goto __pyx_L6_except_return; + } + goto __pyx_L5_except_error; + + /* "selectolax/lexbor/attrs.pxi":99 + * def sget(self, key, default=""): + * """Same as get, but returns empty strings instead of None values for empty attributes.""" + * try: # <<<<<<<<<<<<<< + * val = self[key] + * if val is None: +*/ + __pyx_L5_except_error:; + __Pyx_XGIVEREF(__pyx_t_1); + __Pyx_XGIVEREF(__pyx_t_2); + __Pyx_XGIVEREF(__pyx_t_3); + __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); + goto __pyx_L1_error; + __pyx_L7_try_return:; + __Pyx_XGIVEREF(__pyx_t_1); + __Pyx_XGIVEREF(__pyx_t_2); + __Pyx_XGIVEREF(__pyx_t_3); + __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); + goto __pyx_L0; + __pyx_L6_except_return:; + __Pyx_XGIVEREF(__pyx_t_1); + __Pyx_XGIVEREF(__pyx_t_2); + __Pyx_XGIVEREF(__pyx_t_3); + __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); + goto __pyx_L0; + } + + /* "selectolax/lexbor/attrs.pxi":97 + * return default + * + * def sget(self, key, default=""): # <<<<<<<<<<<<<< + * """Same as get, but returns empty strings instead of None values for empty attributes.""" + * try: +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("selectolax.lexbor.LexborAttributes.sget", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_val); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor/attrs.pxi":107 + * return default + * + * def __contains__(self, key): # <<<<<<<<<<<<<< + * try: + * self[key] +*/ + +/* Python wrapper */ +static int __pyx_pw_10selectolax_6lexbor_16LexborAttributes_24__contains__(PyObject *__pyx_v_self, PyObject *__pyx_v_key); /*proto*/ +static int __pyx_pw_10selectolax_6lexbor_16LexborAttributes_24__contains__(PyObject *__pyx_v_self, PyObject *__pyx_v_key) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__contains__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6lexbor_16LexborAttributes_23__contains__(((struct __pyx_obj_10selectolax_6lexbor_LexborAttributes *)__pyx_v_self), ((PyObject *)__pyx_v_key)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_10selectolax_6lexbor_16LexborAttributes_23__contains__(struct __pyx_obj_10selectolax_6lexbor_LexborAttributes *__pyx_v_self, PyObject *__pyx_v_key) { + int __pyx_r; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + int __pyx_t_5; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__contains__", 0); + + /* "selectolax/lexbor/attrs.pxi":108 + * + * def __contains__(self, key): + * try: # <<<<<<<<<<<<<< + * self[key] + * except KeyError: +*/ + { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); + __Pyx_XGOTREF(__pyx_t_1); + __Pyx_XGOTREF(__pyx_t_2); + __Pyx_XGOTREF(__pyx_t_3); + /*try:*/ { + + /* "selectolax/lexbor/attrs.pxi":109 + * def __contains__(self, key): + * try: + * self[key] # <<<<<<<<<<<<<< + * except KeyError: + * return False +*/ + __pyx_t_4 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self), __pyx_v_key); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 109, __pyx_L3_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "selectolax/lexbor/attrs.pxi":108 + * + * def __contains__(self, key): + * try: # <<<<<<<<<<<<<< + * self[key] + * except KeyError: +*/ + } + + /* "selectolax/lexbor/attrs.pxi":113 + * return False + * else: + * return True # <<<<<<<<<<<<<< + * + * def __repr__(self): +*/ + /*else:*/ { + __pyx_r = 1; + goto __pyx_L6_except_return; + } + __pyx_L3_error:; + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "selectolax/lexbor/attrs.pxi":110 + * try: + * self[key] + * except KeyError: # <<<<<<<<<<<<<< + * return False + * else: +*/ + __pyx_t_5 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_KeyError)))); + if (__pyx_t_5) { + __Pyx_ErrRestore(0,0,0); + + /* "selectolax/lexbor/attrs.pxi":111 + * self[key] + * except KeyError: + * return False # <<<<<<<<<<<<<< + * else: + * return True +*/ + __pyx_r = 0; + goto __pyx_L6_except_return; + } + goto __pyx_L5_except_error; + + /* "selectolax/lexbor/attrs.pxi":108 + * + * def __contains__(self, key): + * try: # <<<<<<<<<<<<<< + * self[key] + * except KeyError: +*/ + __pyx_L5_except_error:; + __Pyx_XGIVEREF(__pyx_t_1); + __Pyx_XGIVEREF(__pyx_t_2); + __Pyx_XGIVEREF(__pyx_t_3); + __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); + goto __pyx_L1_error; + __pyx_L6_except_return:; + __Pyx_XGIVEREF(__pyx_t_1); + __Pyx_XGIVEREF(__pyx_t_2); + __Pyx_XGIVEREF(__pyx_t_3); + __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); + goto __pyx_L0; + } + + /* "selectolax/lexbor/attrs.pxi":107 + * return default + * + * def __contains__(self, key): # <<<<<<<<<<<<<< + * try: + * self[key] +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("selectolax.lexbor.LexborAttributes.__contains__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor/attrs.pxi":115 + * return True + * + * def __repr__(self): # <<<<<<<<<<<<<< + * cdef lxb_char_t *c_text + * cdef size_t str_len = 0 +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_16LexborAttributes_26__repr__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_10selectolax_6lexbor_16LexborAttributes_26__repr__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6lexbor_16LexborAttributes_25__repr__(((struct __pyx_obj_10selectolax_6lexbor_LexborAttributes *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_16LexborAttributes_25__repr__(struct __pyx_obj_10selectolax_6lexbor_LexborAttributes *__pyx_v_self) { + lxb_char_t *__pyx_v_c_text; + size_t __pyx_v_str_len; + PyObject *__pyx_v_tag_name = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + size_t __pyx_t_7; + Py_ssize_t __pyx_t_8; + PyObject *__pyx_t_9[5]; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__repr__", 0); + + /* "selectolax/lexbor/attrs.pxi":117 + * def __repr__(self): + * cdef lxb_char_t *c_text + * cdef size_t str_len = 0 # <<<<<<<<<<<<<< + * c_text = lxb_dom_element_qualified_name( self.node, &str_len) + * tag_name = c_text.decode(_ENCODING, 'ignore') if c_text != NULL else 'unknown' +*/ + __pyx_v_str_len = 0; + + /* "selectolax/lexbor/attrs.pxi":118 + * cdef lxb_char_t *c_text + * cdef size_t str_len = 0 + * c_text = lxb_dom_element_qualified_name( self.node, &str_len) # <<<<<<<<<<<<<< + * tag_name = c_text.decode(_ENCODING, 'ignore') if c_text != NULL else 'unknown' + * return "<%s attributes, %s items>" % (tag_name, len(self)) +*/ + __pyx_v_c_text = lxb_dom_element_qualified_name(((lxb_dom_element_t *)__pyx_v_self->node), (&__pyx_v_str_len)); + + /* "selectolax/lexbor/attrs.pxi":119 + * cdef size_t str_len = 0 + * c_text = lxb_dom_element_qualified_name( self.node, &str_len) + * tag_name = c_text.decode(_ENCODING, 'ignore') if c_text != NULL else 'unknown' # <<<<<<<<<<<<<< + * return "<%s attributes, %s items>" % (tag_name, len(self)) +*/ + __pyx_t_2 = (__pyx_v_c_text != NULL); + if (__pyx_t_2) { + __pyx_t_5 = __Pyx_PyBytes_FromCString(__pyx_v_c_text); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 119, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_4 = __pyx_t_5; + __Pyx_INCREF(__pyx_t_4); + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_ENCODING); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 119, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_7 = 0; + { + PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_t_6, __pyx_mstate_global->__pyx_n_u_ignore}; + __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_decode, __pyx_callargs+__pyx_t_7, (3-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 119, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __pyx_t_1 = __pyx_t_3; + __pyx_t_3 = 0; + } else { + __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_unknown); + __pyx_t_1 = __pyx_mstate_global->__pyx_n_u_unknown; + } + __pyx_v_tag_name = __pyx_t_1; + __pyx_t_1 = 0; + + /* "selectolax/lexbor/attrs.pxi":120 + * c_text = lxb_dom_element_qualified_name( self.node, &str_len) + * tag_name = c_text.decode(_ENCODING, 'ignore') if c_text != NULL else 'unknown' + * return "<%s attributes, %s items>" % (tag_name, len(self)) # <<<<<<<<<<<<<< +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Str(__pyx_v_tag_name), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 120, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_8 = PyObject_Length(((PyObject *)__pyx_v_self)); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(3, 120, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_t_8, 0, ' ', 'd'); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 120, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_9[0] = __pyx_mstate_global->__pyx_kp_u__2; + __pyx_t_9[1] = __pyx_t_1; + __pyx_t_9[2] = __pyx_mstate_global->__pyx_kp_u_attributes; + __pyx_t_9[3] = __pyx_t_3; + __pyx_t_9[4] = __pyx_mstate_global->__pyx_kp_u_items_2; + __pyx_t_5 = __Pyx_PyUnicode_Join(__pyx_t_9, 5, 1 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_1) + 13 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_3) + 7, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_1)); + if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 120, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_r = __pyx_t_5; + __pyx_t_5 = 0; + goto __pyx_L0; + + /* "selectolax/lexbor/attrs.pxi":115 + * return True + * + * def __repr__(self): # <<<<<<<<<<<<<< + * cdef lxb_char_t *c_text + * cdef size_t str_len = 0 +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_AddTraceback("selectolax.lexbor.LexborAttributes.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_tag_name); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * raise TypeError, "self.node cannot be converted to a Python object for pickling" + * def __setstate_cython__(self, __pyx_state): +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_16LexborAttributes_28__reduce_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6lexbor_16LexborAttributes_27__reduce_cython__, "LexborAttributes.__reduce_cython__(self)"); +static PyMethodDef __pyx_mdef_10selectolax_6lexbor_16LexborAttributes_28__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_16LexborAttributes_28__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_16LexborAttributes_27__reduce_cython__}; +static PyObject *__pyx_pw_10selectolax_6lexbor_16LexborAttributes_28__reduce_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL; } + const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len < 0)) return NULL; + if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;} + __pyx_r = __pyx_pf_10selectolax_6lexbor_16LexborAttributes_27__reduce_cython__(((struct __pyx_obj_10selectolax_6lexbor_LexborAttributes *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_16LexborAttributes_27__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_10selectolax_6lexbor_LexborAttributes *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__reduce_cython__", 0); + + /* "(tree fragment)":2 + * def __reduce_cython__(self): + * raise TypeError, "self.node cannot be converted to a Python object for pickling" # <<<<<<<<<<<<<< + * def __setstate_cython__(self, __pyx_state): + * raise TypeError, "self.node cannot be converted to a Python object for pickling" +*/ + __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), __pyx_mstate_global->__pyx_kp_u_self_node_cannot_be_converted_to, 0, 0); + __PYX_ERR(1, 2, __pyx_L1_error) + + /* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * raise TypeError, "self.node cannot be converted to a Python object for pickling" + * def __setstate_cython__(self, __pyx_state): +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_AddTraceback("selectolax.lexbor.LexborAttributes.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":3 + * def __reduce_cython__(self): + * raise TypeError, "self.node cannot be converted to a Python object for pickling" + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * raise TypeError, "self.node cannot be converted to a Python object for pickling" +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_16LexborAttributes_30__setstate_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6lexbor_16LexborAttributes_29__setstate_cython__, "LexborAttributes.__setstate_cython__(self, __pyx_state)"); +static PyMethodDef __pyx_mdef_10selectolax_6lexbor_16LexborAttributes_30__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_16LexborAttributes_30__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_16LexborAttributes_29__setstate_cython__}; +static PyObject *__pyx_pw_10selectolax_6lexbor_16LexborAttributes_30__setstate_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_state,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 3, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < (0)) __PYX_ERR(1, 3, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 3, __pyx_L3_error) } + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error) + } + __pyx_v___pyx_state = values[0]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.lexbor.LexborAttributes.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_10selectolax_6lexbor_16LexborAttributes_29__setstate_cython__(((struct __pyx_obj_10selectolax_6lexbor_LexborAttributes *)__pyx_v_self), __pyx_v___pyx_state); + + /* function exit code */ + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_16LexborAttributes_29__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_10selectolax_6lexbor_LexborAttributes *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__setstate_cython__", 0); + + /* "(tree fragment)":4 + * raise TypeError, "self.node cannot be converted to a Python object for pickling" + * def __setstate_cython__(self, __pyx_state): + * raise TypeError, "self.node cannot be converted to a Python object for pickling" # <<<<<<<<<<<<<< +*/ + __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), __pyx_mstate_global->__pyx_kp_u_self_node_cannot_be_converted_to, 0, 0); + __PYX_ERR(1, 4, __pyx_L1_error) + + /* "(tree fragment)":3 + * def __reduce_cython__(self): + * raise TypeError, "self.node cannot be converted to a Python object for pickling" + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * raise TypeError, "self.node cannot be converted to a Python object for pickling" +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_AddTraceback("selectolax.lexbor.LexborAttributes.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor/node.pxi":22 + * bytes + * + * cdef inline bytes to_bytes(str_or_LexborNode value): # <<<<<<<<<<<<<< + * cdef bytes bytes_val + * if isinstance(value, unicode): +*/ + +static CYTHON_INLINE PyObject *__pyx_fuse_0__pyx_f_10selectolax_6lexbor_to_bytes(PyObject *__pyx_v_value) { + PyObject *__pyx_v_bytes_val = 0; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__pyx_fuse_0to_bytes", 0); + + /* "selectolax/lexbor/node.pxi":24 + * cdef inline bytes to_bytes(str_or_LexborNode value): + * cdef bytes bytes_val + * if isinstance(value, unicode): # <<<<<<<<<<<<<< + * bytes_val = value.encode("utf-8") + * elif isinstance(value, bytes): +*/ + __pyx_t_1 = PyUnicode_Check(__pyx_v_value); + if (__pyx_t_1) { + + /* "selectolax/lexbor/node.pxi":25 + * cdef bytes bytes_val + * if isinstance(value, unicode): + * bytes_val = value.encode("utf-8") # <<<<<<<<<<<<<< + * elif isinstance(value, bytes): + * bytes_val = value +*/ + if (unlikely(__pyx_v_value == Py_None)) { + PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "encode"); + __PYX_ERR(4, 25, __pyx_L1_error) + } + __pyx_t_2 = PyUnicode_AsUTF8String(__pyx_v_value); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 25, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __pyx_t_2; + __Pyx_INCREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_v_bytes_val = ((PyObject*)__pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/lexbor/node.pxi":24 + * cdef inline bytes to_bytes(str_or_LexborNode value): + * cdef bytes bytes_val + * if isinstance(value, unicode): # <<<<<<<<<<<<<< + * bytes_val = value.encode("utf-8") + * elif isinstance(value, bytes): +*/ + goto __pyx_L3; + } + + /* "selectolax/lexbor/node.pxi":26 + * if isinstance(value, unicode): + * bytes_val = value.encode("utf-8") + * elif isinstance(value, bytes): # <<<<<<<<<<<<<< + * bytes_val = value + * return bytes_val +*/ + __pyx_t_1 = PyBytes_Check(__pyx_v_value); + if (__pyx_t_1) { + + /* "selectolax/lexbor/node.pxi":27 + * bytes_val = value.encode("utf-8") + * elif isinstance(value, bytes): + * bytes_val = value # <<<<<<<<<<<<<< + * return bytes_val + * +*/ + __pyx_t_3 = __pyx_v_value; + __Pyx_INCREF(__pyx_t_3); + __pyx_v_bytes_val = ((PyObject*)__pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/lexbor/node.pxi":26 + * if isinstance(value, unicode): + * bytes_val = value.encode("utf-8") + * elif isinstance(value, bytes): # <<<<<<<<<<<<<< + * bytes_val = value + * return bytes_val +*/ + } + __pyx_L3:; + + /* "selectolax/lexbor/node.pxi":28 + * elif isinstance(value, bytes): + * bytes_val = value + * return bytes_val # <<<<<<<<<<<<<< + * + * +*/ + __Pyx_XDECREF(__pyx_r); + if (unlikely(!__pyx_v_bytes_val)) { __Pyx_RaiseUnboundLocalError("bytes_val"); __PYX_ERR(4, 28, __pyx_L1_error) } + __Pyx_INCREF(__pyx_v_bytes_val); + __pyx_r = __pyx_v_bytes_val; + goto __pyx_L0; + + /* "selectolax/lexbor/node.pxi":22 + * bytes + * + * cdef inline bytes to_bytes(str_or_LexborNode value): # <<<<<<<<<<<<<< + * cdef bytes bytes_val + * if isinstance(value, unicode): +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("selectolax.lexbor.to_bytes", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_bytes_val); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static CYTHON_INLINE PyObject *__pyx_fuse_1__pyx_f_10selectolax_6lexbor_to_bytes(PyObject *__pyx_v_value) { + PyObject *__pyx_v_bytes_val = 0; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__pyx_fuse_1to_bytes", 0); + + /* "selectolax/lexbor/node.pxi":24 + * cdef inline bytes to_bytes(str_or_LexborNode value): + * cdef bytes bytes_val + * if isinstance(value, unicode): # <<<<<<<<<<<<<< + * bytes_val = value.encode("utf-8") + * elif isinstance(value, bytes): +*/ + __pyx_t_1 = PyUnicode_Check(__pyx_v_value); + if (__pyx_t_1) { + + /* "selectolax/lexbor/node.pxi":25 + * cdef bytes bytes_val + * if isinstance(value, unicode): + * bytes_val = value.encode("utf-8") # <<<<<<<<<<<<<< + * elif isinstance(value, bytes): + * bytes_val = value +*/ + __pyx_t_2 = __Pyx_CallUnboundCMethod1(&__pyx_mstate_global->__pyx_umethod_PyBytes_Type__encode, __pyx_v_value, __pyx_mstate_global->__pyx_kp_u_utf_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 25, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __pyx_t_2; + __Pyx_INCREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_v_bytes_val = ((PyObject*)__pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/lexbor/node.pxi":24 + * cdef inline bytes to_bytes(str_or_LexborNode value): + * cdef bytes bytes_val + * if isinstance(value, unicode): # <<<<<<<<<<<<<< + * bytes_val = value.encode("utf-8") + * elif isinstance(value, bytes): +*/ + goto __pyx_L3; + } + + /* "selectolax/lexbor/node.pxi":26 + * if isinstance(value, unicode): + * bytes_val = value.encode("utf-8") + * elif isinstance(value, bytes): # <<<<<<<<<<<<<< + * bytes_val = value + * return bytes_val +*/ + __pyx_t_1 = PyBytes_Check(__pyx_v_value); + if (__pyx_t_1) { + + /* "selectolax/lexbor/node.pxi":27 + * bytes_val = value.encode("utf-8") + * elif isinstance(value, bytes): + * bytes_val = value # <<<<<<<<<<<<<< + * return bytes_val + * +*/ + __pyx_t_3 = __pyx_v_value; + __Pyx_INCREF(__pyx_t_3); + __pyx_v_bytes_val = ((PyObject*)__pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/lexbor/node.pxi":26 + * if isinstance(value, unicode): + * bytes_val = value.encode("utf-8") + * elif isinstance(value, bytes): # <<<<<<<<<<<<<< + * bytes_val = value + * return bytes_val +*/ + } + __pyx_L3:; + + /* "selectolax/lexbor/node.pxi":28 + * elif isinstance(value, bytes): + * bytes_val = value + * return bytes_val # <<<<<<<<<<<<<< + * + * +*/ + __Pyx_XDECREF(__pyx_r); + if (unlikely(!__pyx_v_bytes_val)) { __Pyx_RaiseUnboundLocalError("bytes_val"); __PYX_ERR(4, 28, __pyx_L1_error) } + __Pyx_INCREF(__pyx_v_bytes_val); + __pyx_r = __pyx_v_bytes_val; + goto __pyx_L0; + + /* "selectolax/lexbor/node.pxi":22 + * bytes + * + * cdef inline bytes to_bytes(str_or_LexborNode value): # <<<<<<<<<<<<<< + * cdef bytes bytes_val + * if isinstance(value, unicode): +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("selectolax.lexbor.to_bytes", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_bytes_val); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static CYTHON_INLINE PyObject *__pyx_fuse_2__pyx_f_10selectolax_6lexbor_to_bytes(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_value) { + PyObject *__pyx_v_bytes_val = 0; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + size_t __pyx_t_4; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__pyx_fuse_2to_bytes", 0); + + /* "selectolax/lexbor/node.pxi":24 + * cdef inline bytes to_bytes(str_or_LexborNode value): + * cdef bytes bytes_val + * if isinstance(value, unicode): # <<<<<<<<<<<<<< + * bytes_val = value.encode("utf-8") + * elif isinstance(value, bytes): +*/ + __pyx_t_1 = PyUnicode_Check(((PyObject *)__pyx_v_value)); + if (__pyx_t_1) { + + /* "selectolax/lexbor/node.pxi":25 + * cdef bytes bytes_val + * if isinstance(value, unicode): + * bytes_val = value.encode("utf-8") # <<<<<<<<<<<<<< + * elif isinstance(value, bytes): + * bytes_val = value +*/ + __pyx_t_3 = ((PyObject *)__pyx_v_value); + __Pyx_INCREF(__pyx_t_3); + __pyx_t_4 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_utf_8}; + __pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_encode, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 25, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + } + __pyx_t_3 = __pyx_t_2; + __Pyx_INCREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_v_bytes_val = ((PyObject*)__pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/lexbor/node.pxi":24 + * cdef inline bytes to_bytes(str_or_LexborNode value): + * cdef bytes bytes_val + * if isinstance(value, unicode): # <<<<<<<<<<<<<< + * bytes_val = value.encode("utf-8") + * elif isinstance(value, bytes): +*/ + goto __pyx_L3; + } + + /* "selectolax/lexbor/node.pxi":26 + * if isinstance(value, unicode): + * bytes_val = value.encode("utf-8") + * elif isinstance(value, bytes): # <<<<<<<<<<<<<< + * bytes_val = value + * return bytes_val +*/ + __pyx_t_1 = PyBytes_Check(((PyObject *)__pyx_v_value)); + if (__pyx_t_1) { + + /* "selectolax/lexbor/node.pxi":27 + * bytes_val = value.encode("utf-8") + * elif isinstance(value, bytes): + * bytes_val = value # <<<<<<<<<<<<<< + * return bytes_val + * +*/ + __pyx_t_3 = ((PyObject *)__pyx_v_value); + __Pyx_INCREF(__pyx_t_3); + __pyx_v_bytes_val = ((PyObject*)__pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/lexbor/node.pxi":26 + * if isinstance(value, unicode): + * bytes_val = value.encode("utf-8") + * elif isinstance(value, bytes): # <<<<<<<<<<<<<< + * bytes_val = value + * return bytes_val +*/ + } + __pyx_L3:; + + /* "selectolax/lexbor/node.pxi":28 + * elif isinstance(value, bytes): + * bytes_val = value + * return bytes_val # <<<<<<<<<<<<<< + * + * +*/ + __Pyx_XDECREF(__pyx_r); + if (unlikely(!__pyx_v_bytes_val)) { __Pyx_RaiseUnboundLocalError("bytes_val"); __PYX_ERR(4, 28, __pyx_L1_error) } + __Pyx_INCREF(__pyx_v_bytes_val); + __pyx_r = __pyx_v_bytes_val; + goto __pyx_L0; + + /* "selectolax/lexbor/node.pxi":22 + * bytes + * + * cdef inline bytes to_bytes(str_or_LexborNode value): # <<<<<<<<<<<<<< + * cdef bytes bytes_val + * if isinstance(value, unicode): +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("selectolax.lexbor.to_bytes", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_bytes_val); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor/node.pxi":35 + * """A class that represents HTML node (element).""" + * + * cdef void set_as_fragment_root(self): # <<<<<<<<<<<<<< + * self._is_fragment_root = 1 + * +*/ + +static void __pyx_f_10selectolax_6lexbor_10LexborNode_set_as_fragment_root(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self) { + + /* "selectolax/lexbor/node.pxi":36 + * + * cdef void set_as_fragment_root(self): + * self._is_fragment_root = 1 # <<<<<<<<<<<<<< + * + * @staticmethod +*/ + __pyx_v_self->_is_fragment_root = 1; + + /* "selectolax/lexbor/node.pxi":35 + * """A class that represents HTML node (element).""" + * + * cdef void set_as_fragment_root(self): # <<<<<<<<<<<<<< + * self._is_fragment_root = 1 + * +*/ + + /* function exit code */ +} + +/* "selectolax/lexbor/node.pxi":38 + * self._is_fragment_root = 1 + * + * @staticmethod # <<<<<<<<<<<<<< + * cdef LexborNode new(lxb_dom_node_t *node, LexborHTMLParser parser): + * cdef LexborNode lxbnode = LexborNode.__new__(LexborNode) +*/ + +static struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_f_10selectolax_6lexbor_10LexborNode_new(lxb_dom_node_t *__pyx_v_node, struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *__pyx_v_parser) { + struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_lxbnode = 0; + struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("new", 0); + + /* "selectolax/lexbor/node.pxi":40 + * @staticmethod + * cdef LexborNode new(lxb_dom_node_t *node, LexborHTMLParser parser): + * cdef LexborNode lxbnode = LexborNode.__new__(LexborNode) # <<<<<<<<<<<<<< + * lxbnode.node = node + * lxbnode.parser = parser +*/ + __pyx_t_1 = ((PyObject *)__pyx_tp_new_10selectolax_6lexbor_LexborNode(((PyTypeObject *)__pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborNode), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 40, __pyx_L1_error) + __Pyx_GOTREF((PyObject *)__pyx_t_1); + __pyx_v_lxbnode = ((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_t_1); + __pyx_t_1 = 0; + + /* "selectolax/lexbor/node.pxi":41 + * cdef LexborNode new(lxb_dom_node_t *node, LexborHTMLParser parser): + * cdef LexborNode lxbnode = LexborNode.__new__(LexborNode) + * lxbnode.node = node # <<<<<<<<<<<<<< + * lxbnode.parser = parser + * lxbnode._is_fragment_root = 0 +*/ + __pyx_v_lxbnode->node = __pyx_v_node; + + /* "selectolax/lexbor/node.pxi":42 + * cdef LexborNode lxbnode = LexborNode.__new__(LexborNode) + * lxbnode.node = node + * lxbnode.parser = parser # <<<<<<<<<<<<<< + * lxbnode._is_fragment_root = 0 + * return lxbnode +*/ + __Pyx_INCREF((PyObject *)__pyx_v_parser); + __Pyx_GIVEREF((PyObject *)__pyx_v_parser); + __Pyx_GOTREF((PyObject *)__pyx_v_lxbnode->parser); + __Pyx_DECREF((PyObject *)__pyx_v_lxbnode->parser); + __pyx_v_lxbnode->parser = __pyx_v_parser; + + /* "selectolax/lexbor/node.pxi":43 + * lxbnode.node = node + * lxbnode.parser = parser + * lxbnode._is_fragment_root = 0 # <<<<<<<<<<<<<< + * return lxbnode + * +*/ + __pyx_v_lxbnode->_is_fragment_root = 0; + + /* "selectolax/lexbor/node.pxi":44 + * lxbnode.parser = parser + * lxbnode._is_fragment_root = 0 + * return lxbnode # <<<<<<<<<<<<<< + * + * @property +*/ + __Pyx_XDECREF((PyObject *)__pyx_r); + __Pyx_INCREF((PyObject *)__pyx_v_lxbnode); + __pyx_r = __pyx_v_lxbnode; + goto __pyx_L0; + + /* "selectolax/lexbor/node.pxi":38 + * self._is_fragment_root = 1 + * + * @staticmethod # <<<<<<<<<<<<<< + * cdef LexborNode new(lxb_dom_node_t *node, LexborHTMLParser parser): + * cdef LexborNode lxbnode = LexborNode.__new__(LexborNode) +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.new", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF((PyObject *)__pyx_v_lxbnode); + __Pyx_XGIVEREF((PyObject *)__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor/node.pxi":46 + * return lxbnode + * + * @property # <<<<<<<<<<<<<< + * def mem_id(self): + * return self.node +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_6mem_id_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_6mem_id_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6lexbor_10LexborNode_6mem_id___get__(((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_6mem_id___get__(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + + /* "selectolax/lexbor/node.pxi":48 + * @property + * def mem_id(self): + * return self.node # <<<<<<<<<<<<<< + * + * @property +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyLong_FromSize_t(((size_t)__pyx_v_self->node)); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 48, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "selectolax/lexbor/node.pxi":46 + * return lxbnode + * + * @property # <<<<<<<<<<<<<< + * def mem_id(self): + * return self.node +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.mem_id.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor/node.pxi":50 + * return self.node + * + * @property # <<<<<<<<<<<<<< + * def child(self): + * """Alias for the `first_child` property. +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_5child_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_5child_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6lexbor_10LexborNode_5child___get__(((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_5child___get__(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + + /* "selectolax/lexbor/node.pxi":56 + * **Deprecated**. Please use `first_child` instead. + * """ + * return self.first_child # <<<<<<<<<<<<<< + * + * @property +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_first_child); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 56, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "selectolax/lexbor/node.pxi":50 + * return self.node + * + * @property # <<<<<<<<<<<<<< + * def child(self): + * """Alias for the `first_child` property. +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.child.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor/node.pxi":58 + * return self.first_child + * + * @property # <<<<<<<<<<<<<< + * def first_child(self): + * """Return the first child node.""" +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_11first_child_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_11first_child_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6lexbor_10LexborNode_11first_child___get__(((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_11first_child___get__(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self) { + struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_node = 0; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + + /* "selectolax/lexbor/node.pxi":62 + * """Return the first child node.""" + * cdef LexborNode node + * if self.node.first_child: # <<<<<<<<<<<<<< + * node = LexborNode.new( self.node.first_child, self.parser) + * return node +*/ + __pyx_t_1 = (__pyx_v_self->node->first_child != 0); + if (__pyx_t_1) { + + /* "selectolax/lexbor/node.pxi":63 + * cdef LexborNode node + * if self.node.first_child: + * node = LexborNode.new( self.node.first_child, self.parser) # <<<<<<<<<<<<<< + * return node + * return None +*/ + __pyx_t_2 = ((PyObject *)__pyx_v_self->parser); + __Pyx_INCREF(__pyx_t_2); + __pyx_t_3 = ((PyObject *)__pyx_f_10selectolax_6lexbor_10LexborNode_new(((lxb_dom_node_t *)__pyx_v_self->node->first_child), ((struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *)__pyx_t_2))); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 63, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_v_node = ((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/lexbor/node.pxi":64 + * if self.node.first_child: + * node = LexborNode.new( self.node.first_child, self.parser) + * return node # <<<<<<<<<<<<<< + * return None + * +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF((PyObject *)__pyx_v_node); + __pyx_r = ((PyObject *)__pyx_v_node); + goto __pyx_L0; + + /* "selectolax/lexbor/node.pxi":62 + * """Return the first child node.""" + * cdef LexborNode node + * if self.node.first_child: # <<<<<<<<<<<<<< + * node = LexborNode.new( self.node.first_child, self.parser) + * return node +*/ + } + + /* "selectolax/lexbor/node.pxi":65 + * node = LexborNode.new( self.node.first_child, self.parser) + * return node + * return None # <<<<<<<<<<<<<< + * + * @property +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + + /* "selectolax/lexbor/node.pxi":58 + * return self.first_child + * + * @property # <<<<<<<<<<<<<< + * def first_child(self): + * """Return the first child node.""" +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.first_child.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF((PyObject *)__pyx_v_node); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor/node.pxi":67 + * return None + * + * @property # <<<<<<<<<<<<<< + * def parent(self): + * """Return the parent node.""" +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_6parent_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_6parent_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6lexbor_10LexborNode_6parent___get__(((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_6parent___get__(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self) { + struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_node = 0; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + + /* "selectolax/lexbor/node.pxi":71 + * """Return the parent node.""" + * cdef LexborNode node + * if self.node.parent != NULL: # <<<<<<<<<<<<<< + * node = LexborNode.new( self.node.parent, self.parser) + * return node +*/ + __pyx_t_1 = (__pyx_v_self->node->parent != NULL); + if (__pyx_t_1) { + + /* "selectolax/lexbor/node.pxi":72 + * cdef LexborNode node + * if self.node.parent != NULL: + * node = LexborNode.new( self.node.parent, self.parser) # <<<<<<<<<<<<<< + * return node + * return None +*/ + __pyx_t_2 = ((PyObject *)__pyx_v_self->parser); + __Pyx_INCREF(__pyx_t_2); + __pyx_t_3 = ((PyObject *)__pyx_f_10selectolax_6lexbor_10LexborNode_new(((lxb_dom_node_t *)__pyx_v_self->node->parent), ((struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *)__pyx_t_2))); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 72, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_v_node = ((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/lexbor/node.pxi":73 + * if self.node.parent != NULL: + * node = LexborNode.new( self.node.parent, self.parser) + * return node # <<<<<<<<<<<<<< + * return None + * +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF((PyObject *)__pyx_v_node); + __pyx_r = ((PyObject *)__pyx_v_node); + goto __pyx_L0; + + /* "selectolax/lexbor/node.pxi":71 + * """Return the parent node.""" + * cdef LexborNode node + * if self.node.parent != NULL: # <<<<<<<<<<<<<< + * node = LexborNode.new( self.node.parent, self.parser) + * return node +*/ + } + + /* "selectolax/lexbor/node.pxi":74 + * node = LexborNode.new( self.node.parent, self.parser) + * return node + * return None # <<<<<<<<<<<<<< + * + * @property +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + + /* "selectolax/lexbor/node.pxi":67 + * return None + * + * @property # <<<<<<<<<<<<<< + * def parent(self): + * """Return the parent node.""" +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.parent.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF((PyObject *)__pyx_v_node); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor/node.pxi":76 + * return None + * + * @property # <<<<<<<<<<<<<< + * def next(self): + * """Return next node.""" +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_4next_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_4next_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6lexbor_10LexborNode_4next___get__(((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_4next___get__(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self) { + struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_node = 0; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + + /* "selectolax/lexbor/node.pxi":80 + * """Return next node.""" + * cdef LexborNode node + * if self.node.next != NULL: # <<<<<<<<<<<<<< + * node = LexborNode.new( self.node.next, self.parser) + * return node +*/ + __pyx_t_1 = (__pyx_v_self->node->next != NULL); + if (__pyx_t_1) { + + /* "selectolax/lexbor/node.pxi":81 + * cdef LexborNode node + * if self.node.next != NULL: + * node = LexborNode.new( self.node.next, self.parser) # <<<<<<<<<<<<<< + * return node + * return None +*/ + __pyx_t_2 = ((PyObject *)__pyx_v_self->parser); + __Pyx_INCREF(__pyx_t_2); + __pyx_t_3 = ((PyObject *)__pyx_f_10selectolax_6lexbor_10LexborNode_new(((lxb_dom_node_t *)__pyx_v_self->node->next), ((struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *)__pyx_t_2))); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 81, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_v_node = ((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/lexbor/node.pxi":82 + * if self.node.next != NULL: + * node = LexborNode.new( self.node.next, self.parser) + * return node # <<<<<<<<<<<<<< + * return None + * +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF((PyObject *)__pyx_v_node); + __pyx_r = ((PyObject *)__pyx_v_node); + goto __pyx_L0; + + /* "selectolax/lexbor/node.pxi":80 + * """Return next node.""" + * cdef LexborNode node + * if self.node.next != NULL: # <<<<<<<<<<<<<< + * node = LexborNode.new( self.node.next, self.parser) + * return node +*/ + } + + /* "selectolax/lexbor/node.pxi":83 + * node = LexborNode.new( self.node.next, self.parser) + * return node + * return None # <<<<<<<<<<<<<< + * + * @property +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + + /* "selectolax/lexbor/node.pxi":76 + * return None + * + * @property # <<<<<<<<<<<<<< + * def next(self): + * """Return next node.""" +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.next.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF((PyObject *)__pyx_v_node); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor/node.pxi":85 + * return None + * + * @property # <<<<<<<<<<<<<< + * def prev(self): + * """Return previous node.""" +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_4prev_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_4prev_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6lexbor_10LexborNode_4prev___get__(((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_4prev___get__(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self) { + struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_node = 0; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + + /* "selectolax/lexbor/node.pxi":89 + * """Return previous node.""" + * cdef LexborNode node + * if self.node.prev != NULL: # <<<<<<<<<<<<<< + * node = LexborNode.new( self.node.prev, self.parser) + * return node +*/ + __pyx_t_1 = (__pyx_v_self->node->prev != NULL); + if (__pyx_t_1) { + + /* "selectolax/lexbor/node.pxi":90 + * cdef LexborNode node + * if self.node.prev != NULL: + * node = LexborNode.new( self.node.prev, self.parser) # <<<<<<<<<<<<<< + * return node + * return None +*/ + __pyx_t_2 = ((PyObject *)__pyx_v_self->parser); + __Pyx_INCREF(__pyx_t_2); + __pyx_t_3 = ((PyObject *)__pyx_f_10selectolax_6lexbor_10LexborNode_new(((lxb_dom_node_t *)__pyx_v_self->node->prev), ((struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *)__pyx_t_2))); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 90, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_v_node = ((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/lexbor/node.pxi":91 + * if self.node.prev != NULL: + * node = LexborNode.new( self.node.prev, self.parser) + * return node # <<<<<<<<<<<<<< + * return None + * +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF((PyObject *)__pyx_v_node); + __pyx_r = ((PyObject *)__pyx_v_node); + goto __pyx_L0; + + /* "selectolax/lexbor/node.pxi":89 + * """Return previous node.""" + * cdef LexborNode node + * if self.node.prev != NULL: # <<<<<<<<<<<<<< + * node = LexborNode.new( self.node.prev, self.parser) + * return node +*/ + } + + /* "selectolax/lexbor/node.pxi":92 + * node = LexborNode.new( self.node.prev, self.parser) + * return node + * return None # <<<<<<<<<<<<<< + * + * @property +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + + /* "selectolax/lexbor/node.pxi":85 + * return None + * + * @property # <<<<<<<<<<<<<< + * def prev(self): + * """Return previous node.""" +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.prev.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF((PyObject *)__pyx_v_node); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor/node.pxi":94 + * return None + * + * @property # <<<<<<<<<<<<<< + * def last_child(self): + * """Return last child node.""" +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_10last_child_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_10last_child_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6lexbor_10LexborNode_10last_child___get__(((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_10last_child___get__(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self) { + struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_node = 0; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + + /* "selectolax/lexbor/node.pxi":98 + * """Return last child node.""" + * cdef LexborNode node + * if self.node.last_child != NULL: # <<<<<<<<<<<<<< + * node = LexborNode.new( self.node.last_child, self.parser) + * return node +*/ + __pyx_t_1 = (__pyx_v_self->node->last_child != NULL); + if (__pyx_t_1) { + + /* "selectolax/lexbor/node.pxi":99 + * cdef LexborNode node + * if self.node.last_child != NULL: + * node = LexborNode.new( self.node.last_child, self.parser) # <<<<<<<<<<<<<< + * return node + * return None +*/ + __pyx_t_2 = ((PyObject *)__pyx_v_self->parser); + __Pyx_INCREF(__pyx_t_2); + __pyx_t_3 = ((PyObject *)__pyx_f_10selectolax_6lexbor_10LexborNode_new(((lxb_dom_node_t *)__pyx_v_self->node->last_child), ((struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *)__pyx_t_2))); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 99, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_v_node = ((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/lexbor/node.pxi":100 + * if self.node.last_child != NULL: + * node = LexborNode.new( self.node.last_child, self.parser) + * return node # <<<<<<<<<<<<<< + * return None + * +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF((PyObject *)__pyx_v_node); + __pyx_r = ((PyObject *)__pyx_v_node); + goto __pyx_L0; + + /* "selectolax/lexbor/node.pxi":98 + * """Return last child node.""" + * cdef LexborNode node + * if self.node.last_child != NULL: # <<<<<<<<<<<<<< + * node = LexborNode.new( self.node.last_child, self.parser) + * return node +*/ + } + + /* "selectolax/lexbor/node.pxi":101 + * node = LexborNode.new( self.node.last_child, self.parser) + * return node + * return None # <<<<<<<<<<<<<< + * + * @property +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + + /* "selectolax/lexbor/node.pxi":94 + * return None + * + * @property # <<<<<<<<<<<<<< + * def last_child(self): + * """Return last child node.""" +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.last_child.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF((PyObject *)__pyx_v_node); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor/node.pxi":103 + * return None + * + * @property # <<<<<<<<<<<<<< + * def html(self): + * """Return HTML representation of the current node including all its child nodes. +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_4html_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_4html_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6lexbor_10LexborNode_4html___get__(((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_4html___get__(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self) { + lexbor_str_t *__pyx_v_lxb_str; + lxb_status_t __pyx_v_status; + PyObject *__pyx_v_html = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + lxb_status_t __pyx_t_1; + int __pyx_t_2; + int __pyx_t_3; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + size_t __pyx_t_8; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + + /* "selectolax/lexbor/node.pxi":114 + * cdef lxb_status_t status + * + * lxb_str = lexbor_str_create() # <<<<<<<<<<<<<< + * if self._is_fragment_root: + * status = serialize_fragment(self.node, lxb_str) +*/ + __pyx_v_lxb_str = lexbor_str_create(); + + /* "selectolax/lexbor/node.pxi":115 + * + * lxb_str = lexbor_str_create() + * if self._is_fragment_root: # <<<<<<<<<<<<<< + * status = serialize_fragment(self.node, lxb_str) + * # status = lxb_html_serialize_tree_str(self.node, lxb_str) +*/ + if (__pyx_v_self->_is_fragment_root) { + + /* "selectolax/lexbor/node.pxi":116 + * lxb_str = lexbor_str_create() + * if self._is_fragment_root: + * status = serialize_fragment(self.node, lxb_str) # <<<<<<<<<<<<<< + * # status = lxb_html_serialize_tree_str(self.node, lxb_str) + * else: +*/ + __pyx_t_1 = __pyx_f_10selectolax_6lexbor_serialize_fragment(__pyx_v_self->node, __pyx_v_lxb_str); if (unlikely(__pyx_t_1 == ((lxb_status_t)-1) && PyErr_Occurred())) __PYX_ERR(4, 116, __pyx_L1_error) + __pyx_v_status = __pyx_t_1; + + /* "selectolax/lexbor/node.pxi":115 + * + * lxb_str = lexbor_str_create() + * if self._is_fragment_root: # <<<<<<<<<<<<<< + * status = serialize_fragment(self.node, lxb_str) + * # status = lxb_html_serialize_tree_str(self.node, lxb_str) +*/ + goto __pyx_L3; + } + + /* "selectolax/lexbor/node.pxi":119 + * # status = lxb_html_serialize_tree_str(self.node, lxb_str) + * else: + * status = lxb_html_serialize_tree_str(self.node, lxb_str) # <<<<<<<<<<<<<< + * if status == 0 and lxb_str.data: + * html = lxb_str.data.decode(_ENCODING).replace('<-undef>', '') +*/ + /*else*/ { + __pyx_v_status = lxb_html_serialize_tree_str(__pyx_v_self->node, __pyx_v_lxb_str); + } + __pyx_L3:; + + /* "selectolax/lexbor/node.pxi":120 + * else: + * status = lxb_html_serialize_tree_str(self.node, lxb_str) + * if status == 0 and lxb_str.data: # <<<<<<<<<<<<<< + * html = lxb_str.data.decode(_ENCODING).replace('<-undef>', '') + * lexbor_str_destroy(lxb_str, self.node.owner_document.text, True) +*/ + __pyx_t_3 = (__pyx_v_status == 0); + if (__pyx_t_3) { + } else { + __pyx_t_2 = __pyx_t_3; + goto __pyx_L5_bool_binop_done; + } + __pyx_t_3 = (__pyx_v_lxb_str->data != 0); + __pyx_t_2 = __pyx_t_3; + __pyx_L5_bool_binop_done:; + if (__pyx_t_2) { + + /* "selectolax/lexbor/node.pxi":121 + * status = lxb_html_serialize_tree_str(self.node, lxb_str) + * if status == 0 and lxb_str.data: + * html = lxb_str.data.decode(_ENCODING).replace('<-undef>', '') # <<<<<<<<<<<<<< + * lexbor_str_destroy(lxb_str, self.node.owner_document.text, True) + * return html +*/ + __pyx_t_6 = __Pyx_PyBytes_FromCString(__pyx_v_lxb_str->data); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 121, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_5 = __pyx_t_6; + __Pyx_INCREF(__pyx_t_5); + __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_ENCODING); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 121, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_8 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_7}; + __pyx_t_4 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_decode, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 121, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + } + __pyx_t_6 = PyUnicode_Replace(((PyObject*)__pyx_t_4), __pyx_mstate_global->__pyx_kp_u_undef, __pyx_mstate_global->__pyx_kp_u_, -1); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 121, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_v_html = __pyx_t_6; + __pyx_t_6 = 0; + + /* "selectolax/lexbor/node.pxi":122 + * if status == 0 and lxb_str.data: + * html = lxb_str.data.decode(_ENCODING).replace('<-undef>', '') + * lexbor_str_destroy(lxb_str, self.node.owner_document.text, True) # <<<<<<<<<<<<<< + * return html + * return None +*/ + (void)(lexbor_str_destroy(__pyx_v_lxb_str, __pyx_v_self->node->owner_document->text, 1)); + + /* "selectolax/lexbor/node.pxi":123 + * html = lxb_str.data.decode(_ENCODING).replace('<-undef>', '') + * lexbor_str_destroy(lxb_str, self.node.owner_document.text, True) + * return html # <<<<<<<<<<<<<< + * return None + * +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_html); + __pyx_r = __pyx_v_html; + goto __pyx_L0; + + /* "selectolax/lexbor/node.pxi":120 + * else: + * status = lxb_html_serialize_tree_str(self.node, lxb_str) + * if status == 0 and lxb_str.data: # <<<<<<<<<<<<<< + * html = lxb_str.data.decode(_ENCODING).replace('<-undef>', '') + * lexbor_str_destroy(lxb_str, self.node.owner_document.text, True) +*/ + } + + /* "selectolax/lexbor/node.pxi":124 + * lexbor_str_destroy(lxb_str, self.node.owner_document.text, True) + * return html + * return None # <<<<<<<<<<<<<< + * + * def __hash__(self): +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + + /* "selectolax/lexbor/node.pxi":103 + * return None + * + * @property # <<<<<<<<<<<<<< + * def html(self): + * """Return HTML representation of the current node including all its child nodes. +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.html.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_html); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor/node.pxi":126 + * return None + * + * def __hash__(self): # <<<<<<<<<<<<<< + * return self.mem_id + * +*/ + +/* Python wrapper */ +static Py_hash_t __pyx_pw_10selectolax_6lexbor_10LexborNode_1__hash__(PyObject *__pyx_v_self); /*proto*/ +static Py_hash_t __pyx_pw_10selectolax_6lexbor_10LexborNode_1__hash__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + Py_hash_t __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__hash__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6lexbor_10LexborNode___hash__(((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static Py_hash_t __pyx_pf_10selectolax_6lexbor_10LexborNode___hash__(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self) { + Py_hash_t __pyx_r; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + Py_hash_t __pyx_t_2; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__hash__", 0); + + /* "selectolax/lexbor/node.pxi":127 + * + * def __hash__(self): + * return self.mem_id # <<<<<<<<<<<<<< + * + * def text_lexbor(self): +*/ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_mem_id); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 127, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyLong_AsHash_t(__pyx_t_1); if (unlikely((__pyx_t_2 == (Py_hash_t)-1) && PyErr_Occurred())) __PYX_ERR(4, 127, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_r = __pyx_t_2; + goto __pyx_L0; + + /* "selectolax/lexbor/node.pxi":126 + * return None + * + * def __hash__(self): # <<<<<<<<<<<<<< + * return self.mem_id + * +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.__hash__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + if (unlikely(__pyx_r == -1) && !PyErr_Occurred()) __pyx_r = -2; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor/node.pxi":129 + * return self.mem_id + * + * def text_lexbor(self): # <<<<<<<<<<<<<< + * """Returns the text of the node including text of all its child nodes. + * +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_3text_lexbor(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6lexbor_10LexborNode_2text_lexbor, "LexborNode.text_lexbor(self)\n\nReturns the text of the node including text of all its child nodes.\n\nUses builtin method from lexbor."); +static PyMethodDef __pyx_mdef_10selectolax_6lexbor_10LexborNode_3text_lexbor = {"text_lexbor", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_10LexborNode_3text_lexbor, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_10LexborNode_2text_lexbor}; +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_3text_lexbor(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("text_lexbor (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("text_lexbor", 1, 0, 0, __pyx_nargs); return NULL; } + const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len < 0)) return NULL; + if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("text_lexbor", __pyx_kwds); return NULL;} + __pyx_r = __pyx_pf_10selectolax_6lexbor_10LexborNode_2text_lexbor(((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_2text_lexbor(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self) { + size_t __pyx_v_str_len; + lxb_char_t *__pyx_v_text; + PyObject *__pyx_v_unicode_text = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + size_t __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("text_lexbor", 0); + + /* "selectolax/lexbor/node.pxi":135 + * """ + * + * cdef size_t str_len = 0 # <<<<<<<<<<<<<< + * cdef lxb_char_t * text + * +*/ + __pyx_v_str_len = 0; + + /* "selectolax/lexbor/node.pxi":138 + * cdef lxb_char_t * text + * + * text = lxb_dom_node_text_content(self.node, &str_len) # <<<<<<<<<<<<<< + * if str_len == 0: + * raise RuntimeError("Can't extract text") +*/ + __pyx_v_text = lxb_dom_node_text_content(__pyx_v_self->node, (&__pyx_v_str_len)); + + /* "selectolax/lexbor/node.pxi":139 + * + * text = lxb_dom_node_text_content(self.node, &str_len) + * if str_len == 0: # <<<<<<<<<<<<<< + * raise RuntimeError("Can't extract text") + * +*/ + __pyx_t_1 = (((int)__pyx_v_str_len) == 0); + if (unlikely(__pyx_t_1)) { + + /* "selectolax/lexbor/node.pxi":140 + * text = lxb_dom_node_text_content(self.node, &str_len) + * if str_len == 0: + * raise RuntimeError("Can't extract text") # <<<<<<<<<<<<<< + * + * unicode_text = text.decode(_ENCODING) +*/ + __pyx_t_3 = NULL; + __pyx_t_4 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_Can_t_extract_text}; + __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_RuntimeError)), __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 140, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + } + __Pyx_Raise(__pyx_t_2, 0, 0, 0); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __PYX_ERR(4, 140, __pyx_L1_error) + + /* "selectolax/lexbor/node.pxi":139 + * + * text = lxb_dom_node_text_content(self.node, &str_len) + * if str_len == 0: # <<<<<<<<<<<<<< + * raise RuntimeError("Can't extract text") + * +*/ + } + + /* "selectolax/lexbor/node.pxi":142 + * raise RuntimeError("Can't extract text") + * + * unicode_text = text.decode(_ENCODING) # <<<<<<<<<<<<<< + * lxb_dom_document_destroy_text_noi(self.node.owner_document, text) + * return unicode_text +*/ + __pyx_t_5 = __Pyx_PyBytes_FromCString(__pyx_v_text); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 142, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_3 = __pyx_t_5; + __Pyx_INCREF(__pyx_t_3); + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_ENCODING); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 142, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_4 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_6}; + __pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_decode, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 142, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + } + __pyx_v_unicode_text = __pyx_t_2; + __pyx_t_2 = 0; + + /* "selectolax/lexbor/node.pxi":143 + * + * unicode_text = text.decode(_ENCODING) + * lxb_dom_document_destroy_text_noi(self.node.owner_document, text) # <<<<<<<<<<<<<< + * return unicode_text + * +*/ + (void)(lxb_dom_document_destroy_text_noi(__pyx_v_self->node->owner_document, __pyx_v_text)); + + /* "selectolax/lexbor/node.pxi":144 + * unicode_text = text.decode(_ENCODING) + * lxb_dom_document_destroy_text_noi(self.node.owner_document, text) + * return unicode_text # <<<<<<<<<<<<<< + * + * def text(self, bool deep=True, str separator='', bool strip=False, bool skip_empty=False): +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_unicode_text); + __pyx_r = __pyx_v_unicode_text; + goto __pyx_L0; + + /* "selectolax/lexbor/node.pxi":129 + * return self.mem_id + * + * def text_lexbor(self): # <<<<<<<<<<<<<< + * """Returns the text of the node including text of all its child nodes. + * +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.text_lexbor", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_unicode_text); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor/node.pxi":146 + * return unicode_text + * + * def text(self, bool deep=True, str separator='', bool strip=False, bool skip_empty=False): # <<<<<<<<<<<<<< + * """Return concatenated text from this node. + * +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_5text(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6lexbor_10LexborNode_4text, "LexborNode.text(self, bool deep=True, str separator='', bool strip=False, bool skip_empty=False)\n\nReturn concatenated text from this node.\n\nParameters\n----------\ndeep : bool, optional\n When ``True`` (default), include text from all descendant nodes; when\n ``False``, only include direct children.\nseparator : str, optional\n String inserted between successive text fragments.\nstrip : bool, optional\n If ``True``, apply ``str.strip()`` to each fragment before joining to\n remove surrounding whitespace. Defaults to ``False``.\nskip_empty : bool, optional\n Exclude text nodes whose content is only ASCII whitespace (space,\n tab, newline, form feed or carriage return) when ``True``.\n Defaults to ``False``.\n\nReturns\n-------\ntext : str\n Combined textual content assembled according to the provided options."); +static PyMethodDef __pyx_mdef_10selectolax_6lexbor_10LexborNode_5text = {"text", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_10LexborNode_5text, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_10LexborNode_4text}; +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_5text(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyLongObject *__pyx_v_deep = 0; + PyObject *__pyx_v_separator = 0; + PyLongObject *__pyx_v_strip = 0; + PyLongObject *__pyx_v_skip_empty = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[4] = {0,0,0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("text (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_deep,&__pyx_mstate_global->__pyx_n_u_separator,&__pyx_mstate_global->__pyx_n_u_strip,&__pyx_mstate_global->__pyx_n_u_skip_empty,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(4, 146, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 4: + values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(4, 146, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 3: + values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(4, 146, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(4, 146, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 146, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "text", 0) < (0)) __PYX_ERR(4, 146, __pyx_L3_error) + if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)((PyLongObject *)Py_True)); + if (!values[1]) values[1] = __Pyx_NewRef(((PyObject*)__pyx_mstate_global->__pyx_kp_u_)); + if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)((PyLongObject *)Py_False)); + if (!values[3]) values[3] = __Pyx_NewRef((PyObject *)((PyLongObject *)Py_False)); + } else { + switch (__pyx_nargs) { + case 4: + values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(4, 146, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 3: + values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(4, 146, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(4, 146, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 146, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)((PyLongObject *)Py_True)); + if (!values[1]) values[1] = __Pyx_NewRef(((PyObject*)__pyx_mstate_global->__pyx_kp_u_)); + if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)((PyLongObject *)Py_False)); + if (!values[3]) values[3] = __Pyx_NewRef((PyObject *)((PyLongObject *)Py_False)); + } + __pyx_v_deep = ((PyLongObject *)values[0]); + __pyx_v_separator = ((PyObject*)values[1]); + __pyx_v_strip = ((PyLongObject *)values[2]); + __pyx_v_skip_empty = ((PyLongObject *)values[3]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("text", 0, 0, 4, __pyx_nargs); __PYX_ERR(4, 146, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.text", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_deep), __pyx_mstate_global->__pyx_ptype_7cpython_4bool_bool, 1, "deep", 0))) __PYX_ERR(4, 146, __pyx_L1_error) + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_separator), (&PyUnicode_Type), 1, "separator", 1))) __PYX_ERR(4, 146, __pyx_L1_error) + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_strip), __pyx_mstate_global->__pyx_ptype_7cpython_4bool_bool, 1, "strip", 0))) __PYX_ERR(4, 146, __pyx_L1_error) + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_skip_empty), __pyx_mstate_global->__pyx_ptype_7cpython_4bool_bool, 1, "skip_empty", 0))) __PYX_ERR(4, 146, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6lexbor_10LexborNode_4text(((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_v_self), __pyx_v_deep, __pyx_v_separator, __pyx_v_strip, __pyx_v_skip_empty); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_4text(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self, PyLongObject *__pyx_v_deep, PyObject *__pyx_v_separator, PyLongObject *__pyx_v_strip, PyLongObject *__pyx_v_skip_empty) { + unsigned char *__pyx_v_text; + lxb_dom_node_t *__pyx_v_node; + struct __pyx_obj_10selectolax_6lexbor_TextContainer *__pyx_v_container = NULL; + PyObject *__pyx_v_py_text = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + size_t __pyx_t_5; + int __pyx_t_6; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + int __pyx_t_9; + lxb_dom_node_t *__pyx_t_10; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("text", 0); + + /* "selectolax/lexbor/node.pxi":171 + * """ + * cdef unsigned char * text + * cdef lxb_dom_node_t * node = self.node.first_child # <<<<<<<<<<<<<< + * + * if not deep: +*/ + __pyx_v_node = ((lxb_dom_node_t *)__pyx_v_self->node->first_child); + + /* "selectolax/lexbor/node.pxi":173 + * cdef lxb_dom_node_t * node = self.node.first_child + * + * if not deep: # <<<<<<<<<<<<<< + * container = TextContainer(separator, strip) + * if _is_node_type(self.node, LXB_DOM_NODE_TYPE_TEXT): +*/ + __pyx_t_1 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_v_deep)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(4, 173, __pyx_L1_error) + __pyx_t_2 = (!__pyx_t_1); + if (__pyx_t_2) { + + /* "selectolax/lexbor/node.pxi":174 + * + * if not deep: + * container = TextContainer(separator, strip) # <<<<<<<<<<<<<< + * if _is_node_type(self.node, LXB_DOM_NODE_TYPE_TEXT): + * text = lexbor_str_data_noi(&( self.node).data) +*/ + __pyx_t_4 = NULL; + __pyx_t_5 = 1; + { + PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_v_separator, ((PyObject *)__pyx_v_strip)}; + __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_TextContainer, __pyx_callargs+__pyx_t_5, (3-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 174, __pyx_L1_error) + __Pyx_GOTREF((PyObject *)__pyx_t_3); + } + __pyx_v_container = ((struct __pyx_obj_10selectolax_6lexbor_TextContainer *)__pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/lexbor/node.pxi":175 + * if not deep: + * container = TextContainer(separator, strip) + * if _is_node_type(self.node, LXB_DOM_NODE_TYPE_TEXT): # <<<<<<<<<<<<<< + * text = lexbor_str_data_noi(&( self.node).data) + * if text != NULL: +*/ + __pyx_t_2 = __pyx_f_10selectolax_6lexbor__is_node_type(__pyx_v_self->node, LXB_DOM_NODE_TYPE_TEXT); if (unlikely(__pyx_t_2 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(4, 175, __pyx_L1_error) + if (__pyx_t_2) { + + /* "selectolax/lexbor/node.pxi":176 + * container = TextContainer(separator, strip) + * if _is_node_type(self.node, LXB_DOM_NODE_TYPE_TEXT): + * text = lexbor_str_data_noi(&( self.node).data) # <<<<<<<<<<<<<< + * if text != NULL: + * if not skip_empty or not self.is_empty_text_node: +*/ + __pyx_v_text = ((unsigned char *)lexbor_str_data_noi((&((lxb_dom_character_data_t *)__pyx_v_self->node)->data))); + + /* "selectolax/lexbor/node.pxi":177 + * if _is_node_type(self.node, LXB_DOM_NODE_TYPE_TEXT): + * text = lexbor_str_data_noi(&( self.node).data) + * if text != NULL: # <<<<<<<<<<<<<< + * if not skip_empty or not self.is_empty_text_node: + * py_text = text.decode(_ENCODING) +*/ + __pyx_t_2 = (__pyx_v_text != NULL); + if (__pyx_t_2) { + + /* "selectolax/lexbor/node.pxi":178 + * text = lexbor_str_data_noi(&( self.node).data) + * if text != NULL: + * if not skip_empty or not self.is_empty_text_node: # <<<<<<<<<<<<<< + * py_text = text.decode(_ENCODING) + * container.append(py_text) +*/ + __pyx_t_1 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_v_skip_empty)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(4, 178, __pyx_L1_error) + __pyx_t_6 = (!__pyx_t_1); + if (!__pyx_t_6) { + } else { + __pyx_t_2 = __pyx_t_6; + goto __pyx_L7_bool_binop_done; + } + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_is_empty_text_node); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 178, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(4, 178, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_1 = (!__pyx_t_6); + __pyx_t_2 = __pyx_t_1; + __pyx_L7_bool_binop_done:; + if (__pyx_t_2) { + + /* "selectolax/lexbor/node.pxi":179 + * if text != NULL: + * if not skip_empty or not self.is_empty_text_node: + * py_text = text.decode(_ENCODING) # <<<<<<<<<<<<<< + * container.append(py_text) + * +*/ + __pyx_t_7 = __Pyx_PyBytes_FromCString(__pyx_v_text); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 179, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_4 = __pyx_t_7; + __Pyx_INCREF(__pyx_t_4); + __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_ENCODING); if (unlikely(!__pyx_t_8)) __PYX_ERR(4, 179, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_5 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_8}; + __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_decode, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 179, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __pyx_v_py_text = __pyx_t_3; + __pyx_t_3 = 0; + + /* "selectolax/lexbor/node.pxi":180 + * if not skip_empty or not self.is_empty_text_node: + * py_text = text.decode(_ENCODING) + * container.append(py_text) # <<<<<<<<<<<<<< + * + * while node != NULL: +*/ + __pyx_t_9 = __Pyx_PyObject_Append(((PyObject *)__pyx_v_container), __pyx_v_py_text); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(4, 180, __pyx_L1_error) + + /* "selectolax/lexbor/node.pxi":178 + * text = lexbor_str_data_noi(&( self.node).data) + * if text != NULL: + * if not skip_empty or not self.is_empty_text_node: # <<<<<<<<<<<<<< + * py_text = text.decode(_ENCODING) + * container.append(py_text) +*/ + } + + /* "selectolax/lexbor/node.pxi":177 + * if _is_node_type(self.node, LXB_DOM_NODE_TYPE_TEXT): + * text = lexbor_str_data_noi(&( self.node).data) + * if text != NULL: # <<<<<<<<<<<<<< + * if not skip_empty or not self.is_empty_text_node: + * py_text = text.decode(_ENCODING) +*/ + } + + /* "selectolax/lexbor/node.pxi":175 + * if not deep: + * container = TextContainer(separator, strip) + * if _is_node_type(self.node, LXB_DOM_NODE_TYPE_TEXT): # <<<<<<<<<<<<<< + * text = lexbor_str_data_noi(&( self.node).data) + * if text != NULL: +*/ + } + + /* "selectolax/lexbor/node.pxi":182 + * container.append(py_text) + * + * while node != NULL: # <<<<<<<<<<<<<< + * if _is_node_type(node, LXB_DOM_NODE_TYPE_TEXT): + * text = lexbor_str_data_noi(&( node).data) +*/ + while (1) { + __pyx_t_2 = (__pyx_v_node != NULL); + if (!__pyx_t_2) break; + + /* "selectolax/lexbor/node.pxi":183 + * + * while node != NULL: + * if _is_node_type(node, LXB_DOM_NODE_TYPE_TEXT): # <<<<<<<<<<<<<< + * text = lexbor_str_data_noi(&( node).data) + * if text != NULL: +*/ + __pyx_t_2 = __pyx_f_10selectolax_6lexbor__is_node_type(__pyx_v_node, LXB_DOM_NODE_TYPE_TEXT); if (unlikely(__pyx_t_2 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(4, 183, __pyx_L1_error) + if (__pyx_t_2) { + + /* "selectolax/lexbor/node.pxi":184 + * while node != NULL: + * if _is_node_type(node, LXB_DOM_NODE_TYPE_TEXT): + * text = lexbor_str_data_noi(&( node).data) # <<<<<<<<<<<<<< + * if text != NULL: + * if not skip_empty or not is_empty_text_node(node): +*/ + __pyx_v_text = ((unsigned char *)lexbor_str_data_noi((&((lxb_dom_character_data_t *)__pyx_v_node)->data))); + + /* "selectolax/lexbor/node.pxi":185 + * if _is_node_type(node, LXB_DOM_NODE_TYPE_TEXT): + * text = lexbor_str_data_noi(&( node).data) + * if text != NULL: # <<<<<<<<<<<<<< + * if not skip_empty or not is_empty_text_node(node): + * py_text = text.decode(_ENCODING) +*/ + __pyx_t_2 = (__pyx_v_text != NULL); + if (__pyx_t_2) { + + /* "selectolax/lexbor/node.pxi":186 + * text = lexbor_str_data_noi(&( node).data) + * if text != NULL: + * if not skip_empty or not is_empty_text_node(node): # <<<<<<<<<<<<<< + * py_text = text.decode(_ENCODING) + * container.append(py_text) +*/ + __pyx_t_1 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_v_skip_empty)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(4, 186, __pyx_L1_error) + __pyx_t_6 = (!__pyx_t_1); + if (!__pyx_t_6) { + } else { + __pyx_t_2 = __pyx_t_6; + goto __pyx_L14_bool_binop_done; + } + __pyx_t_6 = __pyx_f_10selectolax_6lexbor_is_empty_text_node(__pyx_v_node); if (unlikely(__pyx_t_6 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(4, 186, __pyx_L1_error) + __pyx_t_1 = (!__pyx_t_6); + __pyx_t_2 = __pyx_t_1; + __pyx_L14_bool_binop_done:; + if (__pyx_t_2) { + + /* "selectolax/lexbor/node.pxi":187 + * if text != NULL: + * if not skip_empty or not is_empty_text_node(node): + * py_text = text.decode(_ENCODING) # <<<<<<<<<<<<<< + * container.append(py_text) + * node = node.next +*/ + __pyx_t_8 = __Pyx_PyBytes_FromCString(__pyx_v_text); if (unlikely(!__pyx_t_8)) __PYX_ERR(4, 187, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_7 = __pyx_t_8; + __Pyx_INCREF(__pyx_t_7); + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_ENCODING); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 187, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_4}; + __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_decode, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 187, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_XDECREF_SET(__pyx_v_py_text, __pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/lexbor/node.pxi":188 + * if not skip_empty or not is_empty_text_node(node): + * py_text = text.decode(_ENCODING) + * container.append(py_text) # <<<<<<<<<<<<<< + * node = node.next + * return container.text +*/ + __pyx_t_9 = __Pyx_PyObject_Append(((PyObject *)__pyx_v_container), __pyx_v_py_text); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(4, 188, __pyx_L1_error) + + /* "selectolax/lexbor/node.pxi":186 + * text = lexbor_str_data_noi(&( node).data) + * if text != NULL: + * if not skip_empty or not is_empty_text_node(node): # <<<<<<<<<<<<<< + * py_text = text.decode(_ENCODING) + * container.append(py_text) +*/ + } + + /* "selectolax/lexbor/node.pxi":185 + * if _is_node_type(node, LXB_DOM_NODE_TYPE_TEXT): + * text = lexbor_str_data_noi(&( node).data) + * if text != NULL: # <<<<<<<<<<<<<< + * if not skip_empty or not is_empty_text_node(node): + * py_text = text.decode(_ENCODING) +*/ + } + + /* "selectolax/lexbor/node.pxi":183 + * + * while node != NULL: + * if _is_node_type(node, LXB_DOM_NODE_TYPE_TEXT): # <<<<<<<<<<<<<< + * text = lexbor_str_data_noi(&( node).data) + * if text != NULL: +*/ + } + + /* "selectolax/lexbor/node.pxi":189 + * py_text = text.decode(_ENCODING) + * container.append(py_text) + * node = node.next # <<<<<<<<<<<<<< + * return container.text + * else: +*/ + __pyx_t_10 = __pyx_v_node->next; + __pyx_v_node = __pyx_t_10; + } + + /* "selectolax/lexbor/node.pxi":190 + * container.append(py_text) + * node = node.next + * return container.text # <<<<<<<<<<<<<< + * else: + * container = TextContainer(separator, strip) +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_container), __pyx_mstate_global->__pyx_n_u_text); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 190, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_r = __pyx_t_3; + __pyx_t_3 = 0; + goto __pyx_L0; + + /* "selectolax/lexbor/node.pxi":173 + * cdef lxb_dom_node_t * node = self.node.first_child + * + * if not deep: # <<<<<<<<<<<<<< + * container = TextContainer(separator, strip) + * if _is_node_type(self.node, LXB_DOM_NODE_TYPE_TEXT): +*/ + } + + /* "selectolax/lexbor/node.pxi":192 + * return container.text + * else: + * container = TextContainer(separator, strip) # <<<<<<<<<<<<<< + * if _is_node_type(self.node, LXB_DOM_NODE_TYPE_TEXT): + * text = lexbor_str_data_noi(&( self.node).data) +*/ + /*else*/ { + __pyx_t_8 = NULL; + __pyx_t_5 = 1; + { + PyObject *__pyx_callargs[3] = {__pyx_t_8, __pyx_v_separator, ((PyObject *)__pyx_v_strip)}; + __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_TextContainer, __pyx_callargs+__pyx_t_5, (3-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 192, __pyx_L1_error) + __Pyx_GOTREF((PyObject *)__pyx_t_3); + } + __pyx_v_container = ((struct __pyx_obj_10selectolax_6lexbor_TextContainer *)__pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/lexbor/node.pxi":193 + * else: + * container = TextContainer(separator, strip) + * if _is_node_type(self.node, LXB_DOM_NODE_TYPE_TEXT): # <<<<<<<<<<<<<< + * text = lexbor_str_data_noi(&( self.node).data) + * if text != NULL: +*/ + __pyx_t_2 = __pyx_f_10selectolax_6lexbor__is_node_type(__pyx_v_self->node, LXB_DOM_NODE_TYPE_TEXT); if (unlikely(__pyx_t_2 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(4, 193, __pyx_L1_error) + if (__pyx_t_2) { + + /* "selectolax/lexbor/node.pxi":194 + * container = TextContainer(separator, strip) + * if _is_node_type(self.node, LXB_DOM_NODE_TYPE_TEXT): + * text = lexbor_str_data_noi(&( self.node).data) # <<<<<<<<<<<<<< + * if text != NULL: + * if not skip_empty or not self.is_empty_text_node: +*/ + __pyx_v_text = ((unsigned char *)lexbor_str_data_noi((&((lxb_dom_character_data_t *)__pyx_v_self->node)->data))); + + /* "selectolax/lexbor/node.pxi":195 + * if _is_node_type(self.node, LXB_DOM_NODE_TYPE_TEXT): + * text = lexbor_str_data_noi(&( self.node).data) + * if text != NULL: # <<<<<<<<<<<<<< + * if not skip_empty or not self.is_empty_text_node: + * container.append(text.decode(_ENCODING)) +*/ + __pyx_t_2 = (__pyx_v_text != NULL); + if (__pyx_t_2) { + + /* "selectolax/lexbor/node.pxi":196 + * text = lexbor_str_data_noi(&( self.node).data) + * if text != NULL: + * if not skip_empty or not self.is_empty_text_node: # <<<<<<<<<<<<<< + * container.append(text.decode(_ENCODING)) + * +*/ + __pyx_t_1 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_v_skip_empty)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(4, 196, __pyx_L1_error) + __pyx_t_6 = (!__pyx_t_1); + if (!__pyx_t_6) { + } else { + __pyx_t_2 = __pyx_t_6; + goto __pyx_L19_bool_binop_done; + } + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_is_empty_text_node); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 196, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(4, 196, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_1 = (!__pyx_t_6); + __pyx_t_2 = __pyx_t_1; + __pyx_L19_bool_binop_done:; + if (__pyx_t_2) { + + /* "selectolax/lexbor/node.pxi":197 + * if text != NULL: + * if not skip_empty or not self.is_empty_text_node: + * container.append(text.decode(_ENCODING)) # <<<<<<<<<<<<<< + * + * lxb_dom_node_simple_walk( +*/ + __pyx_t_4 = __Pyx_PyBytes_FromCString(__pyx_v_text); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 197, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_8 = __pyx_t_4; + __Pyx_INCREF(__pyx_t_8); + __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_ENCODING); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 197, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_5 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_t_7}; + __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_decode, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 197, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __pyx_t_9 = __Pyx_PyObject_Append(((PyObject *)__pyx_v_container), __pyx_t_3); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(4, 197, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "selectolax/lexbor/node.pxi":196 + * text = lexbor_str_data_noi(&( self.node).data) + * if text != NULL: + * if not skip_empty or not self.is_empty_text_node: # <<<<<<<<<<<<<< + * container.append(text.decode(_ENCODING)) + * +*/ + } + + /* "selectolax/lexbor/node.pxi":195 + * if _is_node_type(self.node, LXB_DOM_NODE_TYPE_TEXT): + * text = lexbor_str_data_noi(&( self.node).data) + * if text != NULL: # <<<<<<<<<<<<<< + * if not skip_empty or not self.is_empty_text_node: + * container.append(text.decode(_ENCODING)) +*/ + } + + /* "selectolax/lexbor/node.pxi":193 + * else: + * container = TextContainer(separator, strip) + * if _is_node_type(self.node, LXB_DOM_NODE_TYPE_TEXT): # <<<<<<<<<<<<<< + * text = lexbor_str_data_noi(&( self.node).data) + * if text != NULL: +*/ + } + + /* "selectolax/lexbor/node.pxi":199 + * container.append(text.decode(_ENCODING)) + * + * lxb_dom_node_simple_walk( # <<<<<<<<<<<<<< + * self.node, + * text_callback, +*/ + lxb_dom_node_simple_walk(((lxb_dom_node_t *)__pyx_v_self->node), ((lxb_dom_node_simple_walker_f)__pyx_f_10selectolax_6lexbor_text_callback), ((void *)__pyx_v_container)); + + /* "selectolax/lexbor/node.pxi":204 + * container + * ) + * return container.text # <<<<<<<<<<<<<< + * + * cdef inline LexborNode _get_node(self): +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_container), __pyx_mstate_global->__pyx_n_u_text); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 204, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_r = __pyx_t_3; + __pyx_t_3 = 0; + goto __pyx_L0; + } + + /* "selectolax/lexbor/node.pxi":146 + * return unicode_text + * + * def text(self, bool deep=True, str separator='', bool strip=False, bool skip_empty=False): # <<<<<<<<<<<<<< + * """Return concatenated text from this node. + * +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.text", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF((PyObject *)__pyx_v_container); + __Pyx_XDECREF(__pyx_v_py_text); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor/node.pxi":206 + * return container.text + * + * cdef inline LexborNode _get_node(self): # <<<<<<<<<<<<<< + * cdef LexborNode node + * if self._is_fragment_root: +*/ + +static CYTHON_INLINE struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_f_10selectolax_6lexbor_10LexborNode__get_node(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self) { + struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_node = 0; + struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("_get_node", 0); + + /* "selectolax/lexbor/node.pxi":208 + * cdef inline LexborNode _get_node(self): + * cdef LexborNode node + * if self._is_fragment_root: # <<<<<<<<<<<<<< + * node = self.parent + * else: +*/ + if (__pyx_v_self->_is_fragment_root) { + + /* "selectolax/lexbor/node.pxi":209 + * cdef LexborNode node + * if self._is_fragment_root: + * node = self.parent # <<<<<<<<<<<<<< + * else: + * node = self +*/ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_parent); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 209, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborNode))))) __PYX_ERR(4, 209, __pyx_L1_error) + __pyx_v_node = ((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_t_1); + __pyx_t_1 = 0; + + /* "selectolax/lexbor/node.pxi":208 + * cdef inline LexborNode _get_node(self): + * cdef LexborNode node + * if self._is_fragment_root: # <<<<<<<<<<<<<< + * node = self.parent + * else: +*/ + goto __pyx_L3; + } + + /* "selectolax/lexbor/node.pxi":211 + * node = self.parent + * else: + * node = self # <<<<<<<<<<<<<< + * return node + * +*/ + /*else*/ { + __Pyx_INCREF((PyObject *)__pyx_v_self); + __pyx_v_node = __pyx_v_self; + } + __pyx_L3:; + + /* "selectolax/lexbor/node.pxi":212 + * else: + * node = self + * return node # <<<<<<<<<<<<<< + * + * def css(self, str query): +*/ + __Pyx_XDECREF((PyObject *)__pyx_r); + __Pyx_INCREF((PyObject *)__pyx_v_node); + __pyx_r = __pyx_v_node; + goto __pyx_L0; + + /* "selectolax/lexbor/node.pxi":206 + * return container.text + * + * cdef inline LexborNode _get_node(self): # <<<<<<<<<<<<<< + * cdef LexborNode node + * if self._is_fragment_root: +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("selectolax.lexbor.LexborNode._get_node", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF((PyObject *)__pyx_v_node); + __Pyx_XGIVEREF((PyObject *)__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor/node.pxi":214 + * return node + * + * def css(self, str query): # <<<<<<<<<<<<<< + * """Evaluate CSS selector against current node and its child nodes. + * +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_7css(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6lexbor_10LexborNode_6css, "LexborNode.css(self, str query)\n\nEvaluate CSS selector against current node and its child nodes.\n\nMatches pattern `query` against HTML tree.\n`CSS selectors reference `_.\n\nSpecial selectors:\n\n - parser.css('p:lexbor-contains(\"awesome\" i)') -- case-insensitive contains\n - parser.css('p:lexbor-contains(\"awesome\")') -- case-sensitive contains\n\n\nParameters\n----------\nquery : str\n CSS selector (e.g. \"div > :nth-child(2n+1):not(:has(a))\").\n\nReturns\n-------\nselector : list of `Node` objects"); +static PyMethodDef __pyx_mdef_10selectolax_6lexbor_10LexborNode_7css = {"css", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_10LexborNode_7css, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_10LexborNode_6css}; +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_7css(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_query = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("css (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_query,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(4, 214, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 214, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "css", 0) < (0)) __PYX_ERR(4, 214, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("css", 1, 1, 1, i); __PYX_ERR(4, 214, __pyx_L3_error) } + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 214, __pyx_L3_error) + } + __pyx_v_query = ((PyObject*)values[0]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("css", 1, 1, 1, __pyx_nargs); __PYX_ERR(4, 214, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.css", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_query), (&PyUnicode_Type), 1, "query", 1))) __PYX_ERR(4, 214, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6lexbor_10LexborNode_6css(((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_v_self), __pyx_v_query); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_6css(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self, PyObject *__pyx_v_query) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + size_t __pyx_t_5; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("css", 0); + + /* "selectolax/lexbor/node.pxi":235 + * selector : list of `Node` objects + * """ + * return self.parser.selector.find(query, self._get_node()) # <<<<<<<<<<<<<< + * + * def css_first(self, str query, default=None, bool strict=False): +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->parser), __pyx_mstate_global->__pyx_n_u_selector); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 235, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = __pyx_t_3; + __Pyx_INCREF(__pyx_t_2); + __pyx_t_4 = ((PyObject *)__pyx_f_10selectolax_6lexbor_10LexborNode__get_node(__pyx_v_self)); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 235, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = 0; + { + PyObject *__pyx_callargs[3] = {__pyx_t_2, __pyx_v_query, __pyx_t_4}; + __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_find, __pyx_callargs+__pyx_t_5, (3-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 235, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "selectolax/lexbor/node.pxi":214 + * return node + * + * def css(self, str query): # <<<<<<<<<<<<<< + * """Evaluate CSS selector against current node and its child nodes. + * +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.css", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor/node.pxi":237 + * return self.parser.selector.find(query, self._get_node()) + * + * def css_first(self, str query, default=None, bool strict=False): # <<<<<<<<<<<<<< + * """Same as `css` but returns only the first match. + * +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_9css_first(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6lexbor_10LexborNode_8css_first, "LexborNode.css_first(self, str query, default=None, bool strict=False)\n\nSame as `css` but returns only the first match.\n\nWhen `strict=False` stops at the first match. Works faster.\n\nParameters\n----------\n\nquery : str\ndefault : Any, default None\n Default value to return if there is no match.\nstrict: bool, default False\n Set to True if you want to check if there is strictly only one match in the document.\n\n\nReturns\n-------\nselector : `LexborNode` object"); +static PyMethodDef __pyx_mdef_10selectolax_6lexbor_10LexborNode_9css_first = {"css_first", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_10LexborNode_9css_first, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_10LexborNode_8css_first}; +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_9css_first(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_query = 0; + PyObject *__pyx_v_default = 0; + PyLongObject *__pyx_v_strict = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[3] = {0,0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("css_first (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_query,&__pyx_mstate_global->__pyx_n_u_default,&__pyx_mstate_global->__pyx_n_u_strict,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(4, 237, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 3: + values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(4, 237, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(4, 237, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 237, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "css_first", 0) < (0)) __PYX_ERR(4, 237, __pyx_L3_error) + if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None)); + if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)((PyLongObject *)Py_False)); + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("css_first", 0, 1, 3, i); __PYX_ERR(4, 237, __pyx_L3_error) } + } + } else { + switch (__pyx_nargs) { + case 3: + values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(4, 237, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(4, 237, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 237, __pyx_L3_error) + break; + default: goto __pyx_L5_argtuple_error; + } + if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None)); + if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)((PyLongObject *)Py_False)); + } + __pyx_v_query = ((PyObject*)values[0]); + __pyx_v_default = values[1]; + __pyx_v_strict = ((PyLongObject *)values[2]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("css_first", 0, 1, 3, __pyx_nargs); __PYX_ERR(4, 237, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.css_first", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_query), (&PyUnicode_Type), 1, "query", 1))) __PYX_ERR(4, 237, __pyx_L1_error) + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_strict), __pyx_mstate_global->__pyx_ptype_7cpython_4bool_bool, 1, "strict", 0))) __PYX_ERR(4, 237, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6lexbor_10LexborNode_8css_first(((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_v_self), __pyx_v_query, __pyx_v_default, __pyx_v_strict); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_8css_first(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self, PyObject *__pyx_v_query, PyObject *__pyx_v_default, PyLongObject *__pyx_v_strict) { + PyObject *__pyx_v_results = NULL; + PyObject *__pyx_v_n_results = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + size_t __pyx_t_6; + Py_ssize_t __pyx_t_7; + int __pyx_t_8; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("css_first", 0); + + /* "selectolax/lexbor/node.pxi":256 + * selector : `LexborNode` object + * """ + * if strict: # <<<<<<<<<<<<<< + * results = self.parser.selector.find(query, self._get_node()) + * else: +*/ + __pyx_t_1 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_v_strict)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(4, 256, __pyx_L1_error) + if (__pyx_t_1) { + + /* "selectolax/lexbor/node.pxi":257 + * """ + * if strict: + * results = self.parser.selector.find(query, self._get_node()) # <<<<<<<<<<<<<< + * else: + * results = self.parser.selector.find_first(query, self._get_node()) +*/ + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->parser), __pyx_mstate_global->__pyx_n_u_selector); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 257, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = __pyx_t_4; + __Pyx_INCREF(__pyx_t_3); + __pyx_t_5 = ((PyObject *)__pyx_f_10selectolax_6lexbor_10LexborNode__get_node(__pyx_v_self)); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 257, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = 0; + { + PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_v_query, __pyx_t_5}; + __pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_find, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 257, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + } + __pyx_v_results = __pyx_t_2; + __pyx_t_2 = 0; + + /* "selectolax/lexbor/node.pxi":256 + * selector : `LexborNode` object + * """ + * if strict: # <<<<<<<<<<<<<< + * results = self.parser.selector.find(query, self._get_node()) + * else: +*/ + goto __pyx_L3; + } + + /* "selectolax/lexbor/node.pxi":259 + * results = self.parser.selector.find(query, self._get_node()) + * else: + * results = self.parser.selector.find_first(query, self._get_node()) # <<<<<<<<<<<<<< + * n_results = len(results) + * if n_results > 0: +*/ + /*else*/ { + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->parser), __pyx_mstate_global->__pyx_n_u_selector); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 259, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_4 = __pyx_t_5; + __Pyx_INCREF(__pyx_t_4); + __pyx_t_3 = ((PyObject *)__pyx_f_10selectolax_6lexbor_10LexborNode__get_node(__pyx_v_self)); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 259, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_6 = 0; + { + PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_v_query, __pyx_t_3}; + __pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_find_first, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 259, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + } + __pyx_v_results = __pyx_t_2; + __pyx_t_2 = 0; + } + __pyx_L3:; + + /* "selectolax/lexbor/node.pxi":260 + * else: + * results = self.parser.selector.find_first(query, self._get_node()) + * n_results = len(results) # <<<<<<<<<<<<<< + * if n_results > 0: + * if strict and n_results > 1: +*/ + __pyx_t_7 = PyObject_Length(__pyx_v_results); if (unlikely(__pyx_t_7 == ((Py_ssize_t)-1))) __PYX_ERR(4, 260, __pyx_L1_error) + __pyx_t_2 = PyLong_FromSsize_t(__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 260, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_v_n_results = __pyx_t_2; + __pyx_t_2 = 0; + + /* "selectolax/lexbor/node.pxi":261 + * results = self.parser.selector.find_first(query, self._get_node()) + * n_results = len(results) + * if n_results > 0: # <<<<<<<<<<<<<< + * if strict and n_results > 1: + * raise ValueError("Expected 1 match, but found %s matches" % n_results) +*/ + __pyx_t_2 = PyObject_RichCompare(__pyx_v_n_results, __pyx_mstate_global->__pyx_int_0, Py_GT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 261, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(4, 261, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (__pyx_t_1) { + + /* "selectolax/lexbor/node.pxi":262 + * n_results = len(results) + * if n_results > 0: + * if strict and n_results > 1: # <<<<<<<<<<<<<< + * raise ValueError("Expected 1 match, but found %s matches" % n_results) + * return results[0] +*/ + __pyx_t_8 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_v_strict)); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(4, 262, __pyx_L1_error) + if (__pyx_t_8) { + } else { + __pyx_t_1 = __pyx_t_8; + goto __pyx_L6_bool_binop_done; + } + __pyx_t_2 = PyObject_RichCompare(__pyx_v_n_results, __pyx_mstate_global->__pyx_int_1, Py_GT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 262, __pyx_L1_error) + __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(4, 262, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_1 = __pyx_t_8; + __pyx_L6_bool_binop_done:; + if (unlikely(__pyx_t_1)) { + + /* "selectolax/lexbor/node.pxi":263 + * if n_results > 0: + * if strict and n_results > 1: + * raise ValueError("Expected 1 match, but found %s matches" % n_results) # <<<<<<<<<<<<<< + * return results[0] + * return default +*/ + __pyx_t_5 = NULL; + __pyx_t_3 = __Pyx_PyUnicode_FormatSafe(__pyx_mstate_global->__pyx_kp_u_Expected_1_match_but_found_s_mat, __pyx_v_n_results); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 263, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_6 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_3}; + __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 263, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + } + __Pyx_Raise(__pyx_t_2, 0, 0, 0); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __PYX_ERR(4, 263, __pyx_L1_error) + + /* "selectolax/lexbor/node.pxi":262 + * n_results = len(results) + * if n_results > 0: + * if strict and n_results > 1: # <<<<<<<<<<<<<< + * raise ValueError("Expected 1 match, but found %s matches" % n_results) + * return results[0] +*/ + } + + /* "selectolax/lexbor/node.pxi":264 + * if strict and n_results > 1: + * raise ValueError("Expected 1 match, but found %s matches" % n_results) + * return results[0] # <<<<<<<<<<<<<< + * return default + * +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_results, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 0, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 264, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; + + /* "selectolax/lexbor/node.pxi":261 + * results = self.parser.selector.find_first(query, self._get_node()) + * n_results = len(results) + * if n_results > 0: # <<<<<<<<<<<<<< + * if strict and n_results > 1: + * raise ValueError("Expected 1 match, but found %s matches" % n_results) +*/ + } + + /* "selectolax/lexbor/node.pxi":265 + * raise ValueError("Expected 1 match, but found %s matches" % n_results) + * return results[0] + * return default # <<<<<<<<<<<<<< + * + * def any_css_matches(self, tuple selectors): +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_default); + __pyx_r = __pyx_v_default; + goto __pyx_L0; + + /* "selectolax/lexbor/node.pxi":237 + * return self.parser.selector.find(query, self._get_node()) + * + * def css_first(self, str query, default=None, bool strict=False): # <<<<<<<<<<<<<< + * """Same as `css` but returns only the first match. + * +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.css_first", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_results); + __Pyx_XDECREF(__pyx_v_n_results); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor/node.pxi":267 + * return default + * + * def any_css_matches(self, tuple selectors): # <<<<<<<<<<<<<< + * """Returns True if any of CSS selectors matches a node""" + * for selector in selectors: +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_11any_css_matches(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6lexbor_10LexborNode_10any_css_matches, "LexborNode.any_css_matches(self, tuple selectors)\n\nReturns True if any of CSS selectors matches a node"); +static PyMethodDef __pyx_mdef_10selectolax_6lexbor_10LexborNode_11any_css_matches = {"any_css_matches", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_10LexborNode_11any_css_matches, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_10LexborNode_10any_css_matches}; +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_11any_css_matches(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_selectors = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("any_css_matches (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_selectors,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(4, 267, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 267, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "any_css_matches", 0) < (0)) __PYX_ERR(4, 267, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("any_css_matches", 1, 1, 1, i); __PYX_ERR(4, 267, __pyx_L3_error) } + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 267, __pyx_L3_error) + } + __pyx_v_selectors = ((PyObject*)values[0]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("any_css_matches", 1, 1, 1, __pyx_nargs); __PYX_ERR(4, 267, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.any_css_matches", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_selectors), (&PyTuple_Type), 1, "selectors", 1))) __PYX_ERR(4, 267, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6lexbor_10LexborNode_10any_css_matches(((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_v_self), __pyx_v_selectors); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_10any_css_matches(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self, PyObject *__pyx_v_selectors) { + PyObject *__pyx_v_selector = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + Py_ssize_t __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + size_t __pyx_t_6; + int __pyx_t_7; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("any_css_matches", 0); + + /* "selectolax/lexbor/node.pxi":269 + * def any_css_matches(self, tuple selectors): + * """Returns True if any of CSS selectors matches a node""" + * for selector in selectors: # <<<<<<<<<<<<<< + * if self.parser.selector.any_matches(selector, self): + * return True +*/ + if (unlikely(__pyx_v_selectors == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); + __PYX_ERR(4, 269, __pyx_L1_error) + } + __pyx_t_1 = __pyx_v_selectors; __Pyx_INCREF(__pyx_t_1); + __pyx_t_2 = 0; + for (;;) { + { + Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1); + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely((__pyx_temp < 0))) __PYX_ERR(4, 269, __pyx_L1_error) + #endif + if (__pyx_t_2 >= __pyx_temp) break; + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_3 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2)); + #else + __pyx_t_3 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); + #endif + ++__pyx_t_2; + if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 269, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_XDECREF_SET(__pyx_v_selector, __pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/lexbor/node.pxi":270 + * """Returns True if any of CSS selectors matches a node""" + * for selector in selectors: + * if self.parser.selector.any_matches(selector, self): # <<<<<<<<<<<<<< + * return True + * return False +*/ + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->parser), __pyx_mstate_global->__pyx_n_u_selector); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 270, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_4 = __pyx_t_5; + __Pyx_INCREF(__pyx_t_4); + __pyx_t_6 = 0; + { + PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_v_selector, ((PyObject *)__pyx_v_self)}; + __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_any_matches, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 270, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(4, 270, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (__pyx_t_7) { + + /* "selectolax/lexbor/node.pxi":271 + * for selector in selectors: + * if self.parser.selector.any_matches(selector, self): + * return True # <<<<<<<<<<<<<< + * return False + * +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(Py_True); + __pyx_r = Py_True; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + goto __pyx_L0; + + /* "selectolax/lexbor/node.pxi":270 + * """Returns True if any of CSS selectors matches a node""" + * for selector in selectors: + * if self.parser.selector.any_matches(selector, self): # <<<<<<<<<<<<<< + * return True + * return False +*/ + } + + /* "selectolax/lexbor/node.pxi":269 + * def any_css_matches(self, tuple selectors): + * """Returns True if any of CSS selectors matches a node""" + * for selector in selectors: # <<<<<<<<<<<<<< + * if self.parser.selector.any_matches(selector, self): + * return True +*/ + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "selectolax/lexbor/node.pxi":272 + * if self.parser.selector.any_matches(selector, self): + * return True + * return False # <<<<<<<<<<<<<< + * + * def css_matches(self, str selector): +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(Py_False); + __pyx_r = Py_False; + goto __pyx_L0; + + /* "selectolax/lexbor/node.pxi":267 + * return default + * + * def any_css_matches(self, tuple selectors): # <<<<<<<<<<<<<< + * """Returns True if any of CSS selectors matches a node""" + * for selector in selectors: +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.any_css_matches", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_selector); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor/node.pxi":274 + * return False + * + * def css_matches(self, str selector): # <<<<<<<<<<<<<< + * """Returns True if CSS selector matches a node.""" + * return bool(self.parser.selector.any_matches(selector, self)) +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_13css_matches(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6lexbor_10LexborNode_12css_matches, "LexborNode.css_matches(self, str selector)\n\nReturns True if CSS selector matches a node."); +static PyMethodDef __pyx_mdef_10selectolax_6lexbor_10LexborNode_13css_matches = {"css_matches", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_10LexborNode_13css_matches, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_10LexborNode_12css_matches}; +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_13css_matches(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_selector = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("css_matches (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_selector,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(4, 274, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 274, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "css_matches", 0) < (0)) __PYX_ERR(4, 274, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("css_matches", 1, 1, 1, i); __PYX_ERR(4, 274, __pyx_L3_error) } + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 274, __pyx_L3_error) + } + __pyx_v_selector = ((PyObject*)values[0]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("css_matches", 1, 1, 1, __pyx_nargs); __PYX_ERR(4, 274, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.css_matches", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_selector), (&PyUnicode_Type), 1, "selector", 1))) __PYX_ERR(4, 274, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6lexbor_10LexborNode_12css_matches(((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_v_self), __pyx_v_selector); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_12css_matches(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self, PyObject *__pyx_v_selector) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + size_t __pyx_t_6; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("css_matches", 0); + + /* "selectolax/lexbor/node.pxi":276 + * def css_matches(self, str selector): + * """Returns True if CSS selector matches a node.""" + * return bool(self.parser.selector.any_matches(selector, self)) # <<<<<<<<<<<<<< + * + * def __repr__(self): +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_2 = NULL; + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->parser), __pyx_mstate_global->__pyx_n_u_selector); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 276, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_4 = __pyx_t_5; + __Pyx_INCREF(__pyx_t_4); + __pyx_t_6 = 0; + { + PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_v_selector, ((PyObject *)__pyx_v_self)}; + __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_any_matches, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 276, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __pyx_t_6 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_3}; + __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_7cpython_4bool_bool, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 276, __pyx_L1_error) + __Pyx_GOTREF((PyObject *)__pyx_t_1); + } + __pyx_r = ((PyObject *)__pyx_t_1); + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "selectolax/lexbor/node.pxi":274 + * return False + * + * def css_matches(self, str selector): # <<<<<<<<<<<<<< + * """Returns True if CSS selector matches a node.""" + * return bool(self.parser.selector.any_matches(selector, self)) +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.css_matches", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor/node.pxi":278 + * return bool(self.parser.selector.any_matches(selector, self)) + * + * def __repr__(self): # <<<<<<<<<<<<<< + * return '' % self.tag + * +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_15__repr__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_15__repr__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6lexbor_10LexborNode_14__repr__(((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_14__repr__(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__repr__", 0); + + /* "selectolax/lexbor/node.pxi":279 + * + * def __repr__(self): + * return '' % self.tag # <<<<<<<<<<<<<< + * + * @property +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_tag); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 279, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyUnicode_FormatSafe(__pyx_mstate_global->__pyx_kp_u_LexborNode_s, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 279, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; + + /* "selectolax/lexbor/node.pxi":278 + * return bool(self.parser.selector.any_matches(selector, self)) + * + * def __repr__(self): # <<<<<<<<<<<<<< + * return '' % self.tag + * +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor/node.pxi":281 + * return '' % self.tag + * + * @property # <<<<<<<<<<<<<< + * def tag_id(self): + * cdef lxb_tag_id_t tag_id = lxb_dom_node_tag_id_noi(self.node) +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_6tag_id_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_6tag_id_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6lexbor_10LexborNode_6tag_id___get__(((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_6tag_id___get__(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self) { + lxb_tag_id_t __pyx_v_tag_id; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + + /* "selectolax/lexbor/node.pxi":283 + * @property + * def tag_id(self): + * cdef lxb_tag_id_t tag_id = lxb_dom_node_tag_id_noi(self.node) # <<<<<<<<<<<<<< + * return tag_id + * +*/ + __pyx_v_tag_id = lxb_dom_node_tag_id_noi(__pyx_v_self->node); + + /* "selectolax/lexbor/node.pxi":284 + * def tag_id(self): + * cdef lxb_tag_id_t tag_id = lxb_dom_node_tag_id_noi(self.node) + * return tag_id # <<<<<<<<<<<<<< + * + * @property +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyLong_FromSize_t(__pyx_v_tag_id); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 284, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "selectolax/lexbor/node.pxi":281 + * return '' % self.tag + * + * @property # <<<<<<<<<<<<<< + * def tag_id(self): + * cdef lxb_tag_id_t tag_id = lxb_dom_node_tag_id_noi(self.node) +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.tag_id.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor/node.pxi":286 + * return tag_id + * + * @property # <<<<<<<<<<<<<< + * def tag(self): + * """Return the name of the current tag (e.g. div, p, img). +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_3tag_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_3tag_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6lexbor_10LexborNode_3tag___get__(((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_3tag___get__(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self) { + lxb_char_t *__pyx_v_c_text; + size_t __pyx_v_str_len; + PyObject *__pyx_v_text = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + int __pyx_t_5; + PyObject *__pyx_t_6 = NULL; + size_t __pyx_t_7; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + + /* "selectolax/lexbor/node.pxi":304 + * + * cdef lxb_char_t *c_text + * cdef size_t str_len = 0 # <<<<<<<<<<<<<< + * if self.tag_id in [LXB_TAG__EM_DOCTYPE, LXB_TAG__TEXT, LXB_TAG__EM_COMMENT]: + * return _TAG_TO_NAME[self.tag_id] +*/ + __pyx_v_str_len = 0; + + /* "selectolax/lexbor/node.pxi":305 + * cdef lxb_char_t *c_text + * cdef size_t str_len = 0 + * if self.tag_id in [LXB_TAG__EM_DOCTYPE, LXB_TAG__TEXT, LXB_TAG__EM_COMMENT]: # <<<<<<<<<<<<<< + * return _TAG_TO_NAME[self.tag_id] + * c_text = lxb_dom_element_qualified_name( self.node, &str_len) +*/ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_tag_id); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 305, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = __Pyx_PyLong_From_lxb_tag_id_enum_t(LXB_TAG__EM_DOCTYPE); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 305, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = PyObject_RichCompare(__pyx_t_1, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 305, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(4, 305, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (!__pyx_t_5) { + } else { + __pyx_t_2 = __pyx_t_5; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_4 = __Pyx_PyLong_From_lxb_tag_id_enum_t(LXB_TAG__TEXT); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 305, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = PyObject_RichCompare(__pyx_t_1, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 305, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(4, 305, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (!__pyx_t_5) { + } else { + __pyx_t_2 = __pyx_t_5; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_3 = __Pyx_PyLong_From_lxb_tag_id_enum_t(LXB_TAG__EM_COMMENT); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 305, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = PyObject_RichCompare(__pyx_t_1, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 305, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(4, 305, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_2 = __pyx_t_5; + __pyx_L4_bool_binop_done:; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_5 = __pyx_t_2; + if (__pyx_t_5) { + + /* "selectolax/lexbor/node.pxi":306 + * cdef size_t str_len = 0 + * if self.tag_id in [LXB_TAG__EM_DOCTYPE, LXB_TAG__TEXT, LXB_TAG__EM_COMMENT]: + * return _TAG_TO_NAME[self.tag_id] # <<<<<<<<<<<<<< + * c_text = lxb_dom_element_qualified_name( self.node, &str_len) + * text = None +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_TAG_TO_NAME); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 306, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_tag_id); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 306, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 306, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_r = __pyx_t_3; + __pyx_t_3 = 0; + goto __pyx_L0; + + /* "selectolax/lexbor/node.pxi":305 + * cdef lxb_char_t *c_text + * cdef size_t str_len = 0 + * if self.tag_id in [LXB_TAG__EM_DOCTYPE, LXB_TAG__TEXT, LXB_TAG__EM_COMMENT]: # <<<<<<<<<<<<<< + * return _TAG_TO_NAME[self.tag_id] + * c_text = lxb_dom_element_qualified_name( self.node, &str_len) +*/ + } + + /* "selectolax/lexbor/node.pxi":307 + * if self.tag_id in [LXB_TAG__EM_DOCTYPE, LXB_TAG__TEXT, LXB_TAG__EM_COMMENT]: + * return _TAG_TO_NAME[self.tag_id] + * c_text = lxb_dom_element_qualified_name( self.node, &str_len) # <<<<<<<<<<<<<< + * text = None + * if c_text: +*/ + __pyx_v_c_text = lxb_dom_element_qualified_name(((lxb_dom_element_t *)__pyx_v_self->node), (&__pyx_v_str_len)); + + /* "selectolax/lexbor/node.pxi":308 + * return _TAG_TO_NAME[self.tag_id] + * c_text = lxb_dom_element_qualified_name( self.node, &str_len) + * text = None # <<<<<<<<<<<<<< + * if c_text: + * text = c_text.decode(_ENCODING) +*/ + __Pyx_INCREF(Py_None); + __pyx_v_text = Py_None; + + /* "selectolax/lexbor/node.pxi":309 + * c_text = lxb_dom_element_qualified_name( self.node, &str_len) + * text = None + * if c_text: # <<<<<<<<<<<<<< + * text = c_text.decode(_ENCODING) + * return text +*/ + __pyx_t_5 = (__pyx_v_c_text != 0); + if (__pyx_t_5) { + + /* "selectolax/lexbor/node.pxi":310 + * text = None + * if c_text: + * text = c_text.decode(_ENCODING) # <<<<<<<<<<<<<< + * return text + * +*/ + __pyx_t_1 = __Pyx_PyBytes_FromCString(__pyx_v_c_text); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 310, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_4 = __pyx_t_1; + __Pyx_INCREF(__pyx_t_4); + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_ENCODING); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 310, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_7 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_6}; + __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_decode, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 310, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_DECREF_SET(__pyx_v_text, __pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/lexbor/node.pxi":309 + * c_text = lxb_dom_element_qualified_name( self.node, &str_len) + * text = None + * if c_text: # <<<<<<<<<<<<<< + * text = c_text.decode(_ENCODING) + * return text +*/ + } + + /* "selectolax/lexbor/node.pxi":311 + * if c_text: + * text = c_text.decode(_ENCODING) + * return text # <<<<<<<<<<<<<< + * + * def decompose(self, bool recursive=True): +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_text); + __pyx_r = __pyx_v_text; + goto __pyx_L0; + + /* "selectolax/lexbor/node.pxi":286 + * return tag_id + * + * @property # <<<<<<<<<<<<<< + * def tag(self): + * """Return the name of the current tag (e.g. div, p, img). +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.tag.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_text); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor/node.pxi":313 + * return text + * + * def decompose(self, bool recursive=True): # <<<<<<<<<<<<<< + * """Remove the current node from the tree. + * +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_17decompose(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6lexbor_10LexborNode_16decompose, "LexborNode.decompose(self, bool recursive=True)\n\nRemove the current node from the tree.\n\nParameters\n----------\nrecursive : bool, default True\n Whenever to delete all its child nodes\n\nExamples\n--------\n\n>>> tree = LexborHTMLParser(html)\n>>> for tag in tree.css('script'):\n>>> tag.decompose()"); +static PyMethodDef __pyx_mdef_10selectolax_6lexbor_10LexborNode_17decompose = {"decompose", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_10LexborNode_17decompose, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_10LexborNode_16decompose}; +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_17decompose(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyLongObject *__pyx_v_recursive = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("decompose (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_recursive,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(4, 313, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 313, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "decompose", 0) < (0)) __PYX_ERR(4, 313, __pyx_L3_error) + if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)((PyLongObject *)Py_True)); + } else { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 313, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)((PyLongObject *)Py_True)); + } + __pyx_v_recursive = ((PyLongObject *)values[0]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("decompose", 0, 0, 1, __pyx_nargs); __PYX_ERR(4, 313, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.decompose", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_recursive), __pyx_mstate_global->__pyx_ptype_7cpython_4bool_bool, 1, "recursive", 0))) __PYX_ERR(4, 313, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6lexbor_10LexborNode_16decompose(((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_v_self), __pyx_v_recursive); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_16decompose(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self, PyLongObject *__pyx_v_recursive) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + size_t __pyx_t_5; + lxb_dom_node_t *__pyx_t_6; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("decompose", 0); + + /* "selectolax/lexbor/node.pxi":329 + * + * """ + * if self.node == lxb_dom_document_root(&self.parser.document.dom_document): # <<<<<<<<<<<<<< + * raise SelectolaxError("Decomposing the root node is not allowed.") + * +*/ + __pyx_t_1 = (__pyx_v_self->node == ((lxb_dom_node_t *)lxb_dom_document_root((&__pyx_v_self->parser->document->dom_document)))); + if (unlikely(__pyx_t_1)) { + + /* "selectolax/lexbor/node.pxi":330 + * """ + * if self.node == lxb_dom_document_root(&self.parser.document.dom_document): + * raise SelectolaxError("Decomposing the root node is not allowed.") # <<<<<<<<<<<<<< + * + * if recursive: +*/ + __pyx_t_3 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_SelectolaxError); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 330, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4); + assert(__pyx_t_3); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_4, __pyx__function); + __pyx_t_5 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_Decomposing_the_root_node_is_not}; + __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 330, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + } + __Pyx_Raise(__pyx_t_2, 0, 0, 0); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __PYX_ERR(4, 330, __pyx_L1_error) + + /* "selectolax/lexbor/node.pxi":329 + * + * """ + * if self.node == lxb_dom_document_root(&self.parser.document.dom_document): # <<<<<<<<<<<<<< + * raise SelectolaxError("Decomposing the root node is not allowed.") + * +*/ + } + + /* "selectolax/lexbor/node.pxi":332 + * raise SelectolaxError("Decomposing the root node is not allowed.") + * + * if recursive: # <<<<<<<<<<<<<< + * node_remove_deep( self.node) + * else: +*/ + __pyx_t_1 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_v_recursive)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(4, 332, __pyx_L1_error) + if (__pyx_t_1) { + + /* "selectolax/lexbor/node.pxi":333 + * + * if recursive: + * node_remove_deep( self.node) # <<<<<<<<<<<<<< + * else: + * lxb_dom_node_remove( self.node) +*/ + __pyx_t_6 = __pyx_f_10selectolax_6lexbor_node_remove_deep(((lxb_dom_node_t *)__pyx_v_self->node)); if (unlikely(__pyx_t_6 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(4, 333, __pyx_L1_error) + + /* "selectolax/lexbor/node.pxi":332 + * raise SelectolaxError("Decomposing the root node is not allowed.") + * + * if recursive: # <<<<<<<<<<<<<< + * node_remove_deep( self.node) + * else: +*/ + goto __pyx_L4; + } + + /* "selectolax/lexbor/node.pxi":335 + * node_remove_deep( self.node) + * else: + * lxb_dom_node_remove( self.node) # <<<<<<<<<<<<<< + * + * def strip_tags(self, list tags, bool recursive = False): +*/ + /*else*/ { + lxb_dom_node_remove(((lxb_dom_node_t *)__pyx_v_self->node)); + } + __pyx_L4:; + + /* "selectolax/lexbor/node.pxi":313 + * return text + * + * def decompose(self, bool recursive=True): # <<<<<<<<<<<<<< + * """Remove the current node from the tree. + * +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.decompose", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor/node.pxi":337 + * lxb_dom_node_remove( self.node) + * + * def strip_tags(self, list tags, bool recursive = False): # <<<<<<<<<<<<<< + * """Remove specified tags from the HTML tree. + * +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_19strip_tags(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6lexbor_10LexborNode_18strip_tags, "LexborNode.strip_tags(self, list tags, bool recursive=False)\n\nRemove specified tags from the HTML tree.\n\nParameters\n----------\ntags : list\n List of tags to remove.\nrecursive : bool, default True\n Whenever to delete all its child nodes\n\nExamples\n--------\n\n>>> tree = LexborHTMLParser('
Hello world!
')\n>>> tags = ['head', 'style', 'script', 'xmp', 'iframe', 'noembed', 'noframes']\n>>> tree.strip_tags(tags)\n>>> tree.html\n'
Hello world!
'"); +static PyMethodDef __pyx_mdef_10selectolax_6lexbor_10LexborNode_19strip_tags = {"strip_tags", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_10LexborNode_19strip_tags, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_10LexborNode_18strip_tags}; +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_19strip_tags(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_tags = 0; + PyLongObject *__pyx_v_recursive = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[2] = {0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("strip_tags (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_tags,&__pyx_mstate_global->__pyx_n_u_recursive,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(4, 337, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(4, 337, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 337, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "strip_tags", 0) < (0)) __PYX_ERR(4, 337, __pyx_L3_error) + if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)((PyLongObject *)Py_False)); + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("strip_tags", 0, 1, 2, i); __PYX_ERR(4, 337, __pyx_L3_error) } + } + } else { + switch (__pyx_nargs) { + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(4, 337, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 337, __pyx_L3_error) + break; + default: goto __pyx_L5_argtuple_error; + } + if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)((PyLongObject *)Py_False)); + } + __pyx_v_tags = ((PyObject*)values[0]); + __pyx_v_recursive = ((PyLongObject *)values[1]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("strip_tags", 0, 1, 2, __pyx_nargs); __PYX_ERR(4, 337, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.strip_tags", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_tags), (&PyList_Type), 1, "tags", 1))) __PYX_ERR(4, 337, __pyx_L1_error) + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_recursive), __pyx_mstate_global->__pyx_ptype_7cpython_4bool_bool, 1, "recursive", 0))) __PYX_ERR(4, 337, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6lexbor_10LexborNode_18strip_tags(((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_v_self), __pyx_v_tags, __pyx_v_recursive); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_18strip_tags(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self, PyObject *__pyx_v_tags, PyLongObject *__pyx_v_recursive) { + struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_element = 0; + PyObject *__pyx_v_tag = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + Py_ssize_t __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + size_t __pyx_t_5; + Py_ssize_t __pyx_t_6; + PyObject *(*__pyx_t_7)(PyObject *); + PyObject *__pyx_t_8 = NULL; + PyObject *__pyx_t_9 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("strip_tags", 0); + + /* "selectolax/lexbor/node.pxi":358 + * """ + * cdef LexborNode element + * for tag in tags: # <<<<<<<<<<<<<< + * for element in self.css(tag): + * element.decompose(recursive=recursive) +*/ + if (unlikely(__pyx_v_tags == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); + __PYX_ERR(4, 358, __pyx_L1_error) + } + __pyx_t_1 = __pyx_v_tags; __Pyx_INCREF(__pyx_t_1); + __pyx_t_2 = 0; + for (;;) { + { + Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1); + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely((__pyx_temp < 0))) __PYX_ERR(4, 358, __pyx_L1_error) + #endif + if (__pyx_t_2 >= __pyx_temp) break; + } + __pyx_t_3 = __Pyx_PyList_GetItemRefFast(__pyx_t_1, __pyx_t_2, __Pyx_ReferenceSharing_OwnStrongReference); + ++__pyx_t_2; + if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 358, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_XDECREF_SET(__pyx_v_tag, __pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/lexbor/node.pxi":359 + * cdef LexborNode element + * for tag in tags: + * for element in self.css(tag): # <<<<<<<<<<<<<< + * element.decompose(recursive=recursive) + * +*/ + __pyx_t_4 = ((PyObject *)__pyx_v_self); + __Pyx_INCREF(__pyx_t_4); + __pyx_t_5 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_tag}; + __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_css, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 359, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) { + __pyx_t_4 = __pyx_t_3; __Pyx_INCREF(__pyx_t_4); + __pyx_t_6 = 0; + __pyx_t_7 = NULL; + } else { + __pyx_t_6 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 359, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_7 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 359, __pyx_L1_error) + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + for (;;) { + if (likely(!__pyx_t_7)) { + if (likely(PyList_CheckExact(__pyx_t_4))) { + { + Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_4); + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely((__pyx_temp < 0))) __PYX_ERR(4, 359, __pyx_L1_error) + #endif + if (__pyx_t_6 >= __pyx_temp) break; + } + __pyx_t_3 = __Pyx_PyList_GetItemRefFast(__pyx_t_4, __pyx_t_6, __Pyx_ReferenceSharing_OwnStrongReference); + ++__pyx_t_6; + } else { + { + Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_4); + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely((__pyx_temp < 0))) __PYX_ERR(4, 359, __pyx_L1_error) + #endif + if (__pyx_t_6 >= __pyx_temp) break; + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_3 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_6)); + #else + __pyx_t_3 = __Pyx_PySequence_ITEM(__pyx_t_4, __pyx_t_6); + #endif + ++__pyx_t_6; + } + if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 359, __pyx_L1_error) + } else { + __pyx_t_3 = __pyx_t_7(__pyx_t_4); + if (unlikely(!__pyx_t_3)) { + PyObject* exc_type = PyErr_Occurred(); + if (exc_type) { + if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(4, 359, __pyx_L1_error) + PyErr_Clear(); + } + break; + } + } + __Pyx_GOTREF(__pyx_t_3); + if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborNode))))) __PYX_ERR(4, 359, __pyx_L1_error) + __Pyx_XDECREF_SET(__pyx_v_element, ((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_t_3)); + __pyx_t_3 = 0; + + /* "selectolax/lexbor/node.pxi":360 + * for tag in tags: + * for element in self.css(tag): + * element.decompose(recursive=recursive) # <<<<<<<<<<<<<< + * + * @property +*/ + __pyx_t_8 = ((PyObject *)__pyx_v_element); + __Pyx_INCREF(__pyx_t_8); + __pyx_t_5 = 0; + { + PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_8, NULL}; + __pyx_t_9 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(4, 360, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_recursive, ((PyObject *)__pyx_v_recursive), __pyx_t_9, __pyx_callargs+1, 0) < (0)) __PYX_ERR(4, 360, __pyx_L1_error) + __pyx_t_3 = __Pyx_Object_VectorcallMethod_CallFromBuilder((PyObject*)__pyx_mstate_global->__pyx_n_u_decompose, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_9); + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 360, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "selectolax/lexbor/node.pxi":359 + * cdef LexborNode element + * for tag in tags: + * for element in self.css(tag): # <<<<<<<<<<<<<< + * element.decompose(recursive=recursive) + * +*/ + } + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "selectolax/lexbor/node.pxi":358 + * """ + * cdef LexborNode element + * for tag in tags: # <<<<<<<<<<<<<< + * for element in self.css(tag): + * element.decompose(recursive=recursive) +*/ + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "selectolax/lexbor/node.pxi":337 + * lxb_dom_node_remove( self.node) + * + * def strip_tags(self, list tags, bool recursive = False): # <<<<<<<<<<<<<< + * """Remove specified tags from the HTML tree. + * +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_XDECREF(__pyx_t_9); + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.strip_tags", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF((PyObject *)__pyx_v_element); + __Pyx_XDECREF(__pyx_v_tag); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor/node.pxi":362 + * element.decompose(recursive=recursive) + * + * @property # <<<<<<<<<<<<<< + * def attributes(self): + * """Get all attributes that belong to the current node. +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_10attributes_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_10attributes_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6lexbor_10LexborNode_10attributes___get__(((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_10attributes___get__(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self) { + lxb_dom_attr_t *__pyx_v_attr; + size_t __pyx_v_str_len; + PyObject *__pyx_v_attributes = NULL; + lxb_char_t const *__pyx_v_key; + lxb_char_t const *__pyx_v_value; + PyObject *__pyx_v_py_value = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + int __pyx_t_3; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + size_t __pyx_t_7; + lxb_dom_attr_t *__pyx_t_8; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + + /* "selectolax/lexbor/node.pxi":380 + * {'data': None, 'id': 'my_id'} + * """ + * cdef lxb_dom_attr_t *attr = lxb_dom_element_first_attribute_noi( self.node) # <<<<<<<<<<<<<< + * cdef size_t str_len = 0 + * attributes = dict() +*/ + __pyx_v_attr = lxb_dom_element_first_attribute_noi(((lxb_dom_element_t *)__pyx_v_self->node)); + + /* "selectolax/lexbor/node.pxi":381 + * """ + * cdef lxb_dom_attr_t *attr = lxb_dom_element_first_attribute_noi( self.node) + * cdef size_t str_len = 0 # <<<<<<<<<<<<<< + * attributes = dict() + * +*/ + __pyx_v_str_len = 0; + + /* "selectolax/lexbor/node.pxi":382 + * cdef lxb_dom_attr_t *attr = lxb_dom_element_first_attribute_noi( self.node) + * cdef size_t str_len = 0 + * attributes = dict() # <<<<<<<<<<<<<< + * + * if not _is_node_type(self.node, LXB_DOM_NODE_TYPE_ELEMENT): +*/ + __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 382, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v_attributes = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* "selectolax/lexbor/node.pxi":384 + * attributes = dict() + * + * if not _is_node_type(self.node, LXB_DOM_NODE_TYPE_ELEMENT): # <<<<<<<<<<<<<< + * return attributes + * +*/ + __pyx_t_2 = __pyx_f_10selectolax_6lexbor__is_node_type(__pyx_v_self->node, LXB_DOM_NODE_TYPE_ELEMENT); if (unlikely(__pyx_t_2 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(4, 384, __pyx_L1_error) + __pyx_t_3 = (!__pyx_t_2); + if (__pyx_t_3) { + + /* "selectolax/lexbor/node.pxi":385 + * + * if not _is_node_type(self.node, LXB_DOM_NODE_TYPE_ELEMENT): + * return attributes # <<<<<<<<<<<<<< + * + * while attr != NULL: +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_attributes); + __pyx_r = __pyx_v_attributes; + goto __pyx_L0; + + /* "selectolax/lexbor/node.pxi":384 + * attributes = dict() + * + * if not _is_node_type(self.node, LXB_DOM_NODE_TYPE_ELEMENT): # <<<<<<<<<<<<<< + * return attributes + * +*/ + } + + /* "selectolax/lexbor/node.pxi":387 + * return attributes + * + * while attr != NULL: # <<<<<<<<<<<<<< + * key = lxb_dom_attr_local_name_noi(attr, &str_len) + * value = lxb_dom_attr_value_noi(attr, &str_len) +*/ + while (1) { + __pyx_t_3 = (__pyx_v_attr != NULL); + if (!__pyx_t_3) break; + + /* "selectolax/lexbor/node.pxi":388 + * + * while attr != NULL: + * key = lxb_dom_attr_local_name_noi(attr, &str_len) # <<<<<<<<<<<<<< + * value = lxb_dom_attr_value_noi(attr, &str_len) + * +*/ + __pyx_v_key = lxb_dom_attr_local_name_noi(__pyx_v_attr, (&__pyx_v_str_len)); + + /* "selectolax/lexbor/node.pxi":389 + * while attr != NULL: + * key = lxb_dom_attr_local_name_noi(attr, &str_len) + * value = lxb_dom_attr_value_noi(attr, &str_len) # <<<<<<<<<<<<<< + * + * if value: +*/ + __pyx_v_value = lxb_dom_attr_value_noi(__pyx_v_attr, (&__pyx_v_str_len)); + + /* "selectolax/lexbor/node.pxi":391 + * value = lxb_dom_attr_value_noi(attr, &str_len) + * + * if value: # <<<<<<<<<<<<<< + * py_value = value.decode(_ENCODING) + * else: +*/ + __pyx_t_3 = (__pyx_v_value != 0); + if (__pyx_t_3) { + + /* "selectolax/lexbor/node.pxi":392 + * + * if value: + * py_value = value.decode(_ENCODING) # <<<<<<<<<<<<<< + * else: + * py_value = None +*/ + __pyx_t_5 = __Pyx_PyBytes_FromCString(__pyx_v_value); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 392, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_4 = __pyx_t_5; + __Pyx_INCREF(__pyx_t_4); + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_ENCODING); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 392, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_7 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_6}; + __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_decode, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 392, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __Pyx_XDECREF_SET(__pyx_v_py_value, __pyx_t_1); + __pyx_t_1 = 0; + + /* "selectolax/lexbor/node.pxi":391 + * value = lxb_dom_attr_value_noi(attr, &str_len) + * + * if value: # <<<<<<<<<<<<<< + * py_value = value.decode(_ENCODING) + * else: +*/ + goto __pyx_L6; + } + + /* "selectolax/lexbor/node.pxi":394 + * py_value = value.decode(_ENCODING) + * else: + * py_value = None # <<<<<<<<<<<<<< + * attributes[key.decode(_ENCODING)] = py_value + * +*/ + /*else*/ { + __Pyx_INCREF(Py_None); + __Pyx_XDECREF_SET(__pyx_v_py_value, Py_None); + } + __pyx_L6:; + + /* "selectolax/lexbor/node.pxi":395 + * else: + * py_value = None + * attributes[key.decode(_ENCODING)] = py_value # <<<<<<<<<<<<<< + * + * attr = attr.next +*/ + __pyx_t_6 = __Pyx_PyBytes_FromCString(__pyx_v_key); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 395, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_5 = __pyx_t_6; + __Pyx_INCREF(__pyx_t_5); + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_ENCODING); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 395, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_7 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_4}; + __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_decode, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 395, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + if (unlikely((PyDict_SetItem(__pyx_v_attributes, __pyx_t_1, __pyx_v_py_value) < 0))) __PYX_ERR(4, 395, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "selectolax/lexbor/node.pxi":397 + * attributes[key.decode(_ENCODING)] = py_value + * + * attr = attr.next # <<<<<<<<<<<<<< + * return attributes + * +*/ + __pyx_t_8 = __pyx_v_attr->next; + __pyx_v_attr = __pyx_t_8; + } + + /* "selectolax/lexbor/node.pxi":398 + * + * attr = attr.next + * return attributes # <<<<<<<<<<<<<< + * + * @property +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_attributes); + __pyx_r = __pyx_v_attributes; + goto __pyx_L0; + + /* "selectolax/lexbor/node.pxi":362 + * element.decompose(recursive=recursive) + * + * @property # <<<<<<<<<<<<<< + * def attributes(self): + * """Get all attributes that belong to the current node. +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.attributes.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_attributes); + __Pyx_XDECREF(__pyx_v_py_value); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor/node.pxi":400 + * return attributes + * + * @property # <<<<<<<<<<<<<< + * def attrs(self): + * """A dict-like object that is similar to the ``attributes`` property, but operates directly on the Node data. +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_5attrs_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_5attrs_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6lexbor_10LexborNode_5attrs___get__(((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_5attrs___get__(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self) { + struct __pyx_obj_10selectolax_6lexbor_LexborAttributes *__pyx_v_attributes = 0; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + + /* "selectolax/lexbor/node.pxi":427 + * '
' + * """ + * cdef LexborAttributes attributes = LexborAttributes.create( self.node) # <<<<<<<<<<<<<< + * return attributes + * +*/ + __pyx_t_1 = ((PyObject *)__pyx_f_10selectolax_6lexbor_16LexborAttributes_create(((lxb_dom_node_t *)__pyx_v_self->node))); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 427, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v_attributes = ((struct __pyx_obj_10selectolax_6lexbor_LexborAttributes *)__pyx_t_1); + __pyx_t_1 = 0; + + /* "selectolax/lexbor/node.pxi":428 + * """ + * cdef LexborAttributes attributes = LexborAttributes.create( self.node) + * return attributes # <<<<<<<<<<<<<< + * + * @property +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF((PyObject *)__pyx_v_attributes); + __pyx_r = ((PyObject *)__pyx_v_attributes); + goto __pyx_L0; + + /* "selectolax/lexbor/node.pxi":400 + * return attributes + * + * @property # <<<<<<<<<<<<<< + * def attrs(self): + * """A dict-like object that is similar to the ``attributes`` property, but operates directly on the Node data. +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.attrs.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF((PyObject *)__pyx_v_attributes); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor/node.pxi":430 + * return attributes + * + * @property # <<<<<<<<<<<<<< + * def id(self): + * """Get the id attribute of the node. +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_2id_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_2id_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6lexbor_10LexborNode_2id___get__(((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_2id___get__(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self) { + char *__pyx_v_key; + size_t __pyx_v_str_len; + lxb_dom_attr_t *__pyx_v_attr; + lxb_char_t const *__pyx_v_value; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + size_t __pyx_t_7; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + + /* "selectolax/lexbor/node.pxi":440 + * text : str + * """ + * cdef char * key = 'id' # <<<<<<<<<<<<<< + * cdef size_t str_len + * cdef lxb_dom_attr_t * attr = lxb_dom_element_attr_by_name( +*/ + __pyx_v_key = ((char *)"id"); + + /* "selectolax/lexbor/node.pxi":442 + * cdef char * key = 'id' + * cdef size_t str_len + * cdef lxb_dom_attr_t * attr = lxb_dom_element_attr_by_name( # <<<<<<<<<<<<<< + * self.node, + * key, 2 +*/ + __pyx_v_attr = lxb_dom_element_attr_by_name(((lxb_dom_element_t *)__pyx_v_self->node), ((lxb_char_t *)__pyx_v_key), 2); + + /* "selectolax/lexbor/node.pxi":446 + * key, 2 + * ) + * if attr != NULL: # <<<<<<<<<<<<<< + * value = lxb_dom_attr_value_noi(attr, &str_len) + * return value.decode(_ENCODING) if value else None +*/ + __pyx_t_1 = (__pyx_v_attr != NULL); + if (__pyx_t_1) { + + /* "selectolax/lexbor/node.pxi":447 + * ) + * if attr != NULL: + * value = lxb_dom_attr_value_noi(attr, &str_len) # <<<<<<<<<<<<<< + * return value.decode(_ENCODING) if value else None + * return None +*/ + __pyx_v_value = lxb_dom_attr_value_noi(__pyx_v_attr, (&__pyx_v_str_len)); + + /* "selectolax/lexbor/node.pxi":448 + * if attr != NULL: + * value = lxb_dom_attr_value_noi(attr, &str_len) + * return value.decode(_ENCODING) if value else None # <<<<<<<<<<<<<< + * return None + * +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = (__pyx_v_value != 0); + if (__pyx_t_1) { + __pyx_t_5 = __Pyx_PyBytes_FromCString(__pyx_v_value); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 448, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_4 = __pyx_t_5; + __Pyx_INCREF(__pyx_t_4); + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_ENCODING); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 448, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_7 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_6}; + __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_decode, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 448, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __pyx_t_2 = __pyx_t_3; + __pyx_t_3 = 0; + } else { + __Pyx_INCREF(Py_None); + __pyx_t_2 = Py_None; + } + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; + + /* "selectolax/lexbor/node.pxi":446 + * key, 2 + * ) + * if attr != NULL: # <<<<<<<<<<<<<< + * value = lxb_dom_attr_value_noi(attr, &str_len) + * return value.decode(_ENCODING) if value else None +*/ + } + + /* "selectolax/lexbor/node.pxi":449 + * value = lxb_dom_attr_value_noi(attr, &str_len) + * return value.decode(_ENCODING) if value else None + * return None # <<<<<<<<<<<<<< + * + * def iter(self, bool include_text = False, bool skip_empty = False): +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + + /* "selectolax/lexbor/node.pxi":430 + * return attributes + * + * @property # <<<<<<<<<<<<<< + * def id(self): + * """Get the id attribute of the node. +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.id.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} +static PyObject *__pyx_gb_10selectolax_6lexbor_10LexborNode_22generator3(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ + +/* "selectolax/lexbor/node.pxi":451 + * return None + * + * def iter(self, bool include_text = False, bool skip_empty = False): # <<<<<<<<<<<<<< + * """Iterate over direct children of this node. + * +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_21iter(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6lexbor_10LexborNode_20iter, "LexborNode.iter(self, bool include_text=False, bool skip_empty=False)\n\nIterate over direct children of this node.\n\nParameters\n----------\ninclude_text : bool, optional\n When ``True``, yield text nodes in addition to element nodes. Defaults\n to ``False``.\nskip_empty : bool, optional\n When ``include_text`` is ``True``, ignore text nodes made up solely\n of ASCII whitespace (space, tab, newline, form feed or carriage\n return). Defaults to ``False``.\n\nYields\n------\nLexborNode\n Child nodes on the same tree level as this node, filtered according\n to the provided options."); +static PyMethodDef __pyx_mdef_10selectolax_6lexbor_10LexborNode_21iter = {"iter", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_10LexborNode_21iter, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_10LexborNode_20iter}; +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_21iter(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyLongObject *__pyx_v_include_text = 0; + PyLongObject *__pyx_v_skip_empty = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[2] = {0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("iter (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_include_text,&__pyx_mstate_global->__pyx_n_u_skip_empty,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(4, 451, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(4, 451, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 451, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "iter", 0) < (0)) __PYX_ERR(4, 451, __pyx_L3_error) + if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)((PyLongObject *)Py_False)); + if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)((PyLongObject *)Py_False)); + } else { + switch (__pyx_nargs) { + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(4, 451, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 451, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)((PyLongObject *)Py_False)); + if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)((PyLongObject *)Py_False)); + } + __pyx_v_include_text = ((PyLongObject *)values[0]); + __pyx_v_skip_empty = ((PyLongObject *)values[1]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("iter", 0, 0, 2, __pyx_nargs); __PYX_ERR(4, 451, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.iter", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_include_text), __pyx_mstate_global->__pyx_ptype_7cpython_4bool_bool, 1, "include_text", 0))) __PYX_ERR(4, 451, __pyx_L1_error) + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_skip_empty), __pyx_mstate_global->__pyx_ptype_7cpython_4bool_bool, 1, "skip_empty", 0))) __PYX_ERR(4, 451, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6lexbor_10LexborNode_20iter(((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_v_self), __pyx_v_include_text, __pyx_v_skip_empty); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_20iter(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self, PyLongObject *__pyx_v_include_text, PyLongObject *__pyx_v_skip_empty) { + struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct_3_iter *__pyx_cur_scope; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("iter", 0); + __pyx_cur_scope = (struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct_3_iter *)__pyx_tp_new_10selectolax_6lexbor___pyx_scope_struct_3_iter(__pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor___pyx_scope_struct_3_iter, __pyx_mstate_global->__pyx_empty_tuple, NULL); + if (unlikely(!__pyx_cur_scope)) { + __pyx_cur_scope = ((struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct_3_iter *)Py_None); + __Pyx_INCREF(Py_None); + __PYX_ERR(4, 451, __pyx_L1_error) + } else { + __Pyx_GOTREF((PyObject *)__pyx_cur_scope); + } + __pyx_cur_scope->__pyx_v_self = __pyx_v_self; + __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self); + __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self); + __pyx_cur_scope->__pyx_v_include_text = __pyx_v_include_text; + __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_include_text); + __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_include_text); + __pyx_cur_scope->__pyx_v_skip_empty = __pyx_v_skip_empty; + __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_skip_empty); + __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_skip_empty); + { + __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_10selectolax_6lexbor_10LexborNode_22generator3, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[3]), (PyObject *) __pyx_cur_scope, __pyx_mstate_global->__pyx_n_u_iter, __pyx_mstate_global->__pyx_n_u_LexborNode_iter, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor); if (unlikely(!gen)) __PYX_ERR(4, 451, __pyx_L1_error) + __Pyx_DECREF(__pyx_cur_scope); + __Pyx_RefNannyFinishContext(); + return (PyObject *) gen; + } + + /* function exit code */ + __pyx_L1_error:; + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.iter", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_DECREF((PyObject *)__pyx_cur_scope); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_gb_10selectolax_6lexbor_10LexborNode_22generator3(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ +{ + struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct_3_iter *__pyx_cur_scope = ((struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct_3_iter *)__pyx_generator->closure); + PyObject *__pyx_r = NULL; + lxb_dom_node_t *__pyx_t_1; + int __pyx_t_2; + int __pyx_t_3; + int __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("iter", 0); + switch (__pyx_generator->resume_label) { + case 0: goto __pyx_L3_first_run; + case 1: goto __pyx_L14_resume_from_yield; + default: /* CPython raises the right error here */ + __Pyx_RefNannyFinishContext(); + return NULL; + } + __pyx_L3_first_run:; + if (unlikely(__pyx_sent_value != Py_None)) { + if (unlikely(__pyx_sent_value)) PyErr_SetString(PyExc_TypeError, "can't send non-None value to a just-started generator"); + __PYX_ERR(4, 451, __pyx_L1_error) + } + + /* "selectolax/lexbor/node.pxi":471 + * """ + * + * cdef lxb_dom_node_t *node = self.node.first_child # <<<<<<<<<<<<<< + * cdef LexborNode next_node + * +*/ + __pyx_t_1 = __pyx_cur_scope->__pyx_v_self->node->first_child; + __pyx_cur_scope->__pyx_v_node = __pyx_t_1; + + /* "selectolax/lexbor/node.pxi":474 + * cdef LexborNode next_node + * + * while node != NULL: # <<<<<<<<<<<<<< + * if node.type == LXB_DOM_NODE_TYPE_TEXT and not include_text: + * node = node.next +*/ + while (1) { + __pyx_t_2 = (__pyx_cur_scope->__pyx_v_node != NULL); + if (!__pyx_t_2) break; + + /* "selectolax/lexbor/node.pxi":475 + * + * while node != NULL: + * if node.type == LXB_DOM_NODE_TYPE_TEXT and not include_text: # <<<<<<<<<<<<<< + * node = node.next + * continue +*/ + __pyx_t_3 = (__pyx_cur_scope->__pyx_v_node->type == LXB_DOM_NODE_TYPE_TEXT); + if (__pyx_t_3) { + } else { + __pyx_t_2 = __pyx_t_3; + goto __pyx_L7_bool_binop_done; + } + __pyx_t_3 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_cur_scope->__pyx_v_include_text)); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(4, 475, __pyx_L1_error) + __pyx_t_4 = (!__pyx_t_3); + __pyx_t_2 = __pyx_t_4; + __pyx_L7_bool_binop_done:; + if (__pyx_t_2) { + + /* "selectolax/lexbor/node.pxi":476 + * while node != NULL: + * if node.type == LXB_DOM_NODE_TYPE_TEXT and not include_text: + * node = node.next # <<<<<<<<<<<<<< + * continue + * if node.type == LXB_DOM_NODE_TYPE_TEXT and include_text and skip_empty and is_empty_text_node(node): +*/ + __pyx_t_1 = __pyx_cur_scope->__pyx_v_node->next; + __pyx_cur_scope->__pyx_v_node = __pyx_t_1; + + /* "selectolax/lexbor/node.pxi":477 + * if node.type == LXB_DOM_NODE_TYPE_TEXT and not include_text: + * node = node.next + * continue # <<<<<<<<<<<<<< + * if node.type == LXB_DOM_NODE_TYPE_TEXT and include_text and skip_empty and is_empty_text_node(node): + * node = node.next +*/ + goto __pyx_L4_continue; + + /* "selectolax/lexbor/node.pxi":475 + * + * while node != NULL: + * if node.type == LXB_DOM_NODE_TYPE_TEXT and not include_text: # <<<<<<<<<<<<<< + * node = node.next + * continue +*/ + } + + /* "selectolax/lexbor/node.pxi":478 + * node = node.next + * continue + * if node.type == LXB_DOM_NODE_TYPE_TEXT and include_text and skip_empty and is_empty_text_node(node): # <<<<<<<<<<<<<< + * node = node.next + * continue +*/ + __pyx_t_4 = (__pyx_cur_scope->__pyx_v_node->type == LXB_DOM_NODE_TYPE_TEXT); + if (__pyx_t_4) { + } else { + __pyx_t_2 = __pyx_t_4; + goto __pyx_L10_bool_binop_done; + } + __pyx_t_4 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_cur_scope->__pyx_v_include_text)); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(4, 478, __pyx_L1_error) + if (__pyx_t_4) { + } else { + __pyx_t_2 = __pyx_t_4; + goto __pyx_L10_bool_binop_done; + } + __pyx_t_4 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_cur_scope->__pyx_v_skip_empty)); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(4, 478, __pyx_L1_error) + if (__pyx_t_4) { + } else { + __pyx_t_2 = __pyx_t_4; + goto __pyx_L10_bool_binop_done; + } + __pyx_t_4 = __pyx_f_10selectolax_6lexbor_is_empty_text_node(__pyx_cur_scope->__pyx_v_node); if (unlikely(__pyx_t_4 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(4, 478, __pyx_L1_error) + __pyx_t_2 = __pyx_t_4; + __pyx_L10_bool_binop_done:; + if (__pyx_t_2) { + + /* "selectolax/lexbor/node.pxi":479 + * continue + * if node.type == LXB_DOM_NODE_TYPE_TEXT and include_text and skip_empty and is_empty_text_node(node): + * node = node.next # <<<<<<<<<<<<<< + * continue + * +*/ + __pyx_t_1 = __pyx_cur_scope->__pyx_v_node->next; + __pyx_cur_scope->__pyx_v_node = __pyx_t_1; + + /* "selectolax/lexbor/node.pxi":480 + * if node.type == LXB_DOM_NODE_TYPE_TEXT and include_text and skip_empty and is_empty_text_node(node): + * node = node.next + * continue # <<<<<<<<<<<<<< + * + * next_node = LexborNode.new( node, self.parser) +*/ + goto __pyx_L4_continue; + + /* "selectolax/lexbor/node.pxi":478 + * node = node.next + * continue + * if node.type == LXB_DOM_NODE_TYPE_TEXT and include_text and skip_empty and is_empty_text_node(node): # <<<<<<<<<<<<<< + * node = node.next + * continue +*/ + } + + /* "selectolax/lexbor/node.pxi":482 + * continue + * + * next_node = LexborNode.new( node, self.parser) # <<<<<<<<<<<<<< + * yield next_node + * node = node.next +*/ + __pyx_t_5 = ((PyObject *)__pyx_cur_scope->__pyx_v_self->parser); + __Pyx_INCREF(__pyx_t_5); + __pyx_t_6 = ((PyObject *)__pyx_f_10selectolax_6lexbor_10LexborNode_new(((lxb_dom_node_t *)__pyx_cur_scope->__pyx_v_node), ((struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *)__pyx_t_5))); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 482, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_XGOTREF((PyObject *)__pyx_cur_scope->__pyx_v_next_node); + __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_next_node, ((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_t_6)); + __Pyx_GIVEREF(__pyx_t_6); + __pyx_t_6 = 0; + + /* "selectolax/lexbor/node.pxi":483 + * + * next_node = LexborNode.new( node, self.parser) + * yield next_node # <<<<<<<<<<<<<< + * node = node.next + * +*/ + __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_next_node); + __pyx_r = ((PyObject *)__pyx_cur_scope->__pyx_v_next_node); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, yielding value */ + __pyx_generator->resume_label = 1; + return __pyx_r; + __pyx_L14_resume_from_yield:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(4, 483, __pyx_L1_error) + + /* "selectolax/lexbor/node.pxi":484 + * next_node = LexborNode.new( node, self.parser) + * yield next_node + * node = node.next # <<<<<<<<<<<<<< + * + * def __iter__(self): +*/ + __pyx_t_1 = __pyx_cur_scope->__pyx_v_node->next; + __pyx_cur_scope->__pyx_v_node = __pyx_t_1; + __pyx_L4_continue:; + } + CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); + + /* "selectolax/lexbor/node.pxi":451 + * return None + * + * def iter(self, bool include_text = False, bool skip_empty = False): # <<<<<<<<<<<<<< + * """Iterate over direct children of this node. + * +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + if (__Pyx_PyErr_Occurred()) { + __Pyx_Generator_Replace_StopIteration(0); + __Pyx_AddTraceback("iter", __pyx_clineno, __pyx_lineno, __pyx_filename); + } + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + #if !CYTHON_USE_EXC_INFO_STACK + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + #endif + __pyx_generator->resume_label = -1; + __Pyx_Coroutine_clear((PyObject*)__pyx_generator); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor/node.pxi":486 + * node = node.next + * + * def __iter__(self): # <<<<<<<<<<<<<< + * return self.iter() + * +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_24__iter__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_24__iter__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__iter__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6lexbor_10LexborNode_23__iter__(((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_23__iter__(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + size_t __pyx_t_3; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__iter__", 0); + + /* "selectolax/lexbor/node.pxi":487 + * + * def __iter__(self): + * return self.iter() # <<<<<<<<<<<<<< + * + * def __next__(self): +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_2 = ((PyObject *)__pyx_v_self); + __Pyx_INCREF(__pyx_t_2); + __pyx_t_3 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL}; + __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_iter, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 487, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "selectolax/lexbor/node.pxi":486 + * node = node.next + * + * def __iter__(self): # <<<<<<<<<<<<<< + * return self.iter() + * +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor/node.pxi":489 + * return self.iter() + * + * def __next__(self): # <<<<<<<<<<<<<< + * return self.next + * +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_26__next__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_26__next__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__next__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6lexbor_10LexborNode_25__next__(((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_25__next__(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__next__", 0); + + /* "selectolax/lexbor/node.pxi":490 + * + * def __next__(self): + * return self.next # <<<<<<<<<<<<<< + * + * def unwrap(self, bint delete_empty=False): +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_next); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 490, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "selectolax/lexbor/node.pxi":489 + * return self.iter() + * + * def __next__(self): # <<<<<<<<<<<<<< + * return self.next + * +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.__next__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor/node.pxi":492 + * return self.next + * + * def unwrap(self, bint delete_empty=False): # <<<<<<<<<<<<<< + * """Replace node with whatever is inside this node. + * +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_28unwrap(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6lexbor_10LexborNode_27unwrap, "LexborNode.unwrap(self, bool delete_empty=False)\n\nReplace node with whatever is inside this node.\n\nDoes nothing if you perform unwrapping second time on the same node.\n\nParameters\n----------\ndelete_empty : bool, default False\n If True, removes empty tags.\n\nExamples\n--------\n\n>>> tree = LexborHTMLParser(\"
Hello world!
\")\n>>> tree.css_first('i').unwrap()\n>>> tree.html\n'
Hello world!
'\n\nNote: by default, empty tags are ignored, use \"delete_empty\" to change this."); +static PyMethodDef __pyx_mdef_10selectolax_6lexbor_10LexborNode_28unwrap = {"unwrap", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_10LexborNode_28unwrap, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_10LexborNode_27unwrap}; +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_28unwrap(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + int __pyx_v_delete_empty; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("unwrap (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_delete_empty,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(4, 492, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 492, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "unwrap", 0) < (0)) __PYX_ERR(4, 492, __pyx_L3_error) + } else { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 492, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + } + if (values[0]) { + __pyx_v_delete_empty = __Pyx_PyObject_IsTrue(values[0]); if (unlikely((__pyx_v_delete_empty == (int)-1) && PyErr_Occurred())) __PYX_ERR(4, 492, __pyx_L3_error) + } else { + __pyx_v_delete_empty = ((int)0); + } + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("unwrap", 0, 0, 1, __pyx_nargs); __PYX_ERR(4, 492, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.unwrap", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_10selectolax_6lexbor_10LexborNode_27unwrap(((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_v_self), __pyx_v_delete_empty); + + /* function exit code */ + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_27unwrap(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self, int __pyx_v_delete_empty) { + lxb_dom_node_t *__pyx_v_next_node; + lxb_dom_node_t *__pyx_v_current_node; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + size_t __pyx_t_7; + lxb_dom_node_t *__pyx_t_8; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("unwrap", 0); + + /* "selectolax/lexbor/node.pxi":513 + * """ + * + * if node_is_removed( self.node) == 1: # <<<<<<<<<<<<<< + * logger.error("Attempt to unwrap removed node. Does nothing.") + * return +*/ + __pyx_t_1 = __pyx_f_10selectolax_6lexbor_node_is_removed(((lxb_dom_node_t *)__pyx_v_self->node)); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(4, 513, __pyx_L1_error) + __pyx_t_2 = (__pyx_t_1 == 1); + if (__pyx_t_2) { + + /* "selectolax/lexbor/node.pxi":514 + * + * if node_is_removed( self.node) == 1: + * logger.error("Attempt to unwrap removed node. Does nothing.") # <<<<<<<<<<<<<< + * return + * +*/ + __pyx_t_4 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_logger); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 514, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_error); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 514, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_7 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_6); + assert(__pyx_t_4); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_6, __pyx__function); + __pyx_t_7 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_Attempt_to_unwrap_removed_node_D}; + __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_6, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 514, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "selectolax/lexbor/node.pxi":515 + * if node_is_removed( self.node) == 1: + * logger.error("Attempt to unwrap removed node. Does nothing.") + * return # <<<<<<<<<<<<<< + * + * if self.node.first_child == NULL: +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + + /* "selectolax/lexbor/node.pxi":513 + * """ + * + * if node_is_removed( self.node) == 1: # <<<<<<<<<<<<<< + * logger.error("Attempt to unwrap removed node. Does nothing.") + * return +*/ + } + + /* "selectolax/lexbor/node.pxi":517 + * return + * + * if self.node.first_child == NULL: # <<<<<<<<<<<<<< + * if delete_empty: + * lxb_dom_node_remove( self.node) +*/ + __pyx_t_2 = (__pyx_v_self->node->first_child == NULL); + if (__pyx_t_2) { + + /* "selectolax/lexbor/node.pxi":518 + * + * if self.node.first_child == NULL: + * if delete_empty: # <<<<<<<<<<<<<< + * lxb_dom_node_remove( self.node) + * return +*/ + if (__pyx_v_delete_empty) { + + /* "selectolax/lexbor/node.pxi":519 + * if self.node.first_child == NULL: + * if delete_empty: + * lxb_dom_node_remove( self.node) # <<<<<<<<<<<<<< + * return + * cdef lxb_dom_node_t * next_node +*/ + lxb_dom_node_remove(((lxb_dom_node_t *)__pyx_v_self->node)); + + /* "selectolax/lexbor/node.pxi":518 + * + * if self.node.first_child == NULL: + * if delete_empty: # <<<<<<<<<<<<<< + * lxb_dom_node_remove( self.node) + * return +*/ + } + + /* "selectolax/lexbor/node.pxi":520 + * if delete_empty: + * lxb_dom_node_remove( self.node) + * return # <<<<<<<<<<<<<< + * cdef lxb_dom_node_t * next_node + * cdef lxb_dom_node_t * current_node +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + + /* "selectolax/lexbor/node.pxi":517 + * return + * + * if self.node.first_child == NULL: # <<<<<<<<<<<<<< + * if delete_empty: + * lxb_dom_node_remove( self.node) +*/ + } + + /* "selectolax/lexbor/node.pxi":524 + * cdef lxb_dom_node_t * current_node + * + * if self.node.first_child.next != NULL: # <<<<<<<<<<<<<< + * current_node = self.node.first_child + * next_node = current_node.next +*/ + __pyx_t_2 = (__pyx_v_self->node->first_child->next != NULL); + if (__pyx_t_2) { + + /* "selectolax/lexbor/node.pxi":525 + * + * if self.node.first_child.next != NULL: + * current_node = self.node.first_child # <<<<<<<<<<<<<< + * next_node = current_node.next + * +*/ + __pyx_t_8 = __pyx_v_self->node->first_child; + __pyx_v_current_node = __pyx_t_8; + + /* "selectolax/lexbor/node.pxi":526 + * if self.node.first_child.next != NULL: + * current_node = self.node.first_child + * next_node = current_node.next # <<<<<<<<<<<<<< + * + * while next_node != NULL: +*/ + __pyx_t_8 = __pyx_v_current_node->next; + __pyx_v_next_node = __pyx_t_8; + + /* "selectolax/lexbor/node.pxi":528 + * next_node = current_node.next + * + * while next_node != NULL: # <<<<<<<<<<<<<< + * next_node = current_node.next + * lxb_dom_node_insert_before(self.node, current_node) +*/ + while (1) { + __pyx_t_2 = (__pyx_v_next_node != NULL); + if (!__pyx_t_2) break; + + /* "selectolax/lexbor/node.pxi":529 + * + * while next_node != NULL: + * next_node = current_node.next # <<<<<<<<<<<<<< + * lxb_dom_node_insert_before(self.node, current_node) + * current_node = next_node +*/ + __pyx_t_8 = __pyx_v_current_node->next; + __pyx_v_next_node = __pyx_t_8; + + /* "selectolax/lexbor/node.pxi":530 + * while next_node != NULL: + * next_node = current_node.next + * lxb_dom_node_insert_before(self.node, current_node) # <<<<<<<<<<<<<< + * current_node = next_node + * else: +*/ + lxb_dom_node_insert_before(__pyx_v_self->node, __pyx_v_current_node); + + /* "selectolax/lexbor/node.pxi":531 + * next_node = current_node.next + * lxb_dom_node_insert_before(self.node, current_node) + * current_node = next_node # <<<<<<<<<<<<<< + * else: + * lxb_dom_node_insert_before(self.node, self.node.first_child) +*/ + __pyx_v_current_node = __pyx_v_next_node; + } + + /* "selectolax/lexbor/node.pxi":524 + * cdef lxb_dom_node_t * current_node + * + * if self.node.first_child.next != NULL: # <<<<<<<<<<<<<< + * current_node = self.node.first_child + * next_node = current_node.next +*/ + goto __pyx_L6; + } + + /* "selectolax/lexbor/node.pxi":533 + * current_node = next_node + * else: + * lxb_dom_node_insert_before(self.node, self.node.first_child) # <<<<<<<<<<<<<< + * lxb_dom_node_remove( self.node) + * +*/ + /*else*/ { + lxb_dom_node_insert_before(__pyx_v_self->node, __pyx_v_self->node->first_child); + } + __pyx_L6:; + + /* "selectolax/lexbor/node.pxi":534 + * else: + * lxb_dom_node_insert_before(self.node, self.node.first_child) + * lxb_dom_node_remove( self.node) # <<<<<<<<<<<<<< + * + * def unwrap_tags(self, list tags, bint delete_empty = False): +*/ + lxb_dom_node_remove(((lxb_dom_node_t *)__pyx_v_self->node)); + + /* "selectolax/lexbor/node.pxi":492 + * return self.next + * + * def unwrap(self, bint delete_empty=False): # <<<<<<<<<<<<<< + * """Replace node with whatever is inside this node. + * +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.unwrap", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor/node.pxi":536 + * lxb_dom_node_remove( self.node) + * + * def unwrap_tags(self, list tags, bint delete_empty = False): # <<<<<<<<<<<<<< + * """Unwraps specified tags from the HTML tree. + * +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_30unwrap_tags(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6lexbor_10LexborNode_29unwrap_tags, "LexborNode.unwrap_tags(self, list tags, bool delete_empty=False)\n\nUnwraps specified tags from the HTML tree.\n\nWorks the same as the ``unwrap`` method, but applied to a list of tags.\n\nParameters\n----------\ntags : list\n List of tags to remove.\ndelete_empty : bool, default False\n If True, removes empty tags.\n\nExamples\n--------\n\n>>> tree = LexborHTMLParser(\"
Hello world!
\")\n>>> tree.body.unwrap_tags(['i','a'])\n>>> tree.body.html\n'
Hello world!
'\n\nNote: by default, empty tags are ignored, use \"delete_empty\" to change this."); +static PyMethodDef __pyx_mdef_10selectolax_6lexbor_10LexborNode_30unwrap_tags = {"unwrap_tags", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_10LexborNode_30unwrap_tags, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_10LexborNode_29unwrap_tags}; +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_30unwrap_tags(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_tags = 0; + int __pyx_v_delete_empty; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[2] = {0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("unwrap_tags (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_tags,&__pyx_mstate_global->__pyx_n_u_delete_empty,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(4, 536, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(4, 536, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 536, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "unwrap_tags", 0) < (0)) __PYX_ERR(4, 536, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("unwrap_tags", 0, 1, 2, i); __PYX_ERR(4, 536, __pyx_L3_error) } + } + } else { + switch (__pyx_nargs) { + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(4, 536, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 536, __pyx_L3_error) + break; + default: goto __pyx_L5_argtuple_error; + } + } + __pyx_v_tags = ((PyObject*)values[0]); + if (values[1]) { + __pyx_v_delete_empty = __Pyx_PyObject_IsTrue(values[1]); if (unlikely((__pyx_v_delete_empty == (int)-1) && PyErr_Occurred())) __PYX_ERR(4, 536, __pyx_L3_error) + } else { + __pyx_v_delete_empty = ((int)0); + } + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("unwrap_tags", 0, 1, 2, __pyx_nargs); __PYX_ERR(4, 536, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.unwrap_tags", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_tags), (&PyList_Type), 1, "tags", 1))) __PYX_ERR(4, 536, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6lexbor_10LexborNode_29unwrap_tags(((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_v_self), __pyx_v_tags, __pyx_v_delete_empty); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_29unwrap_tags(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self, PyObject *__pyx_v_tags, int __pyx_v_delete_empty) { + struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_element = 0; + PyObject *__pyx_v_tag = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + Py_ssize_t __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + size_t __pyx_t_5; + Py_ssize_t __pyx_t_6; + PyObject *(*__pyx_t_7)(PyObject *); + PyObject *__pyx_t_8 = NULL; + PyObject *__pyx_t_9 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("unwrap_tags", 0); + + /* "selectolax/lexbor/node.pxi":559 + * """ + * cdef LexborNode element + * for tag in tags: # <<<<<<<<<<<<<< + * for element in self.css(tag): + * element.unwrap(delete_empty) +*/ + if (unlikely(__pyx_v_tags == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); + __PYX_ERR(4, 559, __pyx_L1_error) + } + __pyx_t_1 = __pyx_v_tags; __Pyx_INCREF(__pyx_t_1); + __pyx_t_2 = 0; + for (;;) { + { + Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1); + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely((__pyx_temp < 0))) __PYX_ERR(4, 559, __pyx_L1_error) + #endif + if (__pyx_t_2 >= __pyx_temp) break; + } + __pyx_t_3 = __Pyx_PyList_GetItemRefFast(__pyx_t_1, __pyx_t_2, __Pyx_ReferenceSharing_OwnStrongReference); + ++__pyx_t_2; + if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 559, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_XDECREF_SET(__pyx_v_tag, __pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/lexbor/node.pxi":560 + * cdef LexborNode element + * for tag in tags: + * for element in self.css(tag): # <<<<<<<<<<<<<< + * element.unwrap(delete_empty) + * +*/ + __pyx_t_4 = ((PyObject *)__pyx_v_self); + __Pyx_INCREF(__pyx_t_4); + __pyx_t_5 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_tag}; + __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_css, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 560, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) { + __pyx_t_4 = __pyx_t_3; __Pyx_INCREF(__pyx_t_4); + __pyx_t_6 = 0; + __pyx_t_7 = NULL; + } else { + __pyx_t_6 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 560, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_7 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 560, __pyx_L1_error) + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + for (;;) { + if (likely(!__pyx_t_7)) { + if (likely(PyList_CheckExact(__pyx_t_4))) { + { + Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_4); + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely((__pyx_temp < 0))) __PYX_ERR(4, 560, __pyx_L1_error) + #endif + if (__pyx_t_6 >= __pyx_temp) break; + } + __pyx_t_3 = __Pyx_PyList_GetItemRefFast(__pyx_t_4, __pyx_t_6, __Pyx_ReferenceSharing_OwnStrongReference); + ++__pyx_t_6; + } else { + { + Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_4); + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely((__pyx_temp < 0))) __PYX_ERR(4, 560, __pyx_L1_error) + #endif + if (__pyx_t_6 >= __pyx_temp) break; + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_3 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_6)); + #else + __pyx_t_3 = __Pyx_PySequence_ITEM(__pyx_t_4, __pyx_t_6); + #endif + ++__pyx_t_6; + } + if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 560, __pyx_L1_error) + } else { + __pyx_t_3 = __pyx_t_7(__pyx_t_4); + if (unlikely(!__pyx_t_3)) { + PyObject* exc_type = PyErr_Occurred(); + if (exc_type) { + if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(4, 560, __pyx_L1_error) + PyErr_Clear(); + } + break; + } + } + __Pyx_GOTREF(__pyx_t_3); + if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborNode))))) __PYX_ERR(4, 560, __pyx_L1_error) + __Pyx_XDECREF_SET(__pyx_v_element, ((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_t_3)); + __pyx_t_3 = 0; + + /* "selectolax/lexbor/node.pxi":561 + * for tag in tags: + * for element in self.css(tag): + * element.unwrap(delete_empty) # <<<<<<<<<<<<<< + * + * def merge_text_nodes(self): +*/ + __pyx_t_8 = ((PyObject *)__pyx_v_element); + __Pyx_INCREF(__pyx_t_8); + __pyx_t_9 = __Pyx_PyBool_FromLong(__pyx_v_delete_empty); if (unlikely(!__pyx_t_9)) __PYX_ERR(4, 561, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_5 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_t_9}; + __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_unwrap, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 561, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "selectolax/lexbor/node.pxi":560 + * cdef LexborNode element + * for tag in tags: + * for element in self.css(tag): # <<<<<<<<<<<<<< + * element.unwrap(delete_empty) + * +*/ + } + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "selectolax/lexbor/node.pxi":559 + * """ + * cdef LexborNode element + * for tag in tags: # <<<<<<<<<<<<<< + * for element in self.css(tag): + * element.unwrap(delete_empty) +*/ + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "selectolax/lexbor/node.pxi":536 + * lxb_dom_node_remove( self.node) + * + * def unwrap_tags(self, list tags, bint delete_empty = False): # <<<<<<<<<<<<<< + * """Unwraps specified tags from the HTML tree. + * +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_XDECREF(__pyx_t_9); + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.unwrap_tags", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF((PyObject *)__pyx_v_element); + __Pyx_XDECREF(__pyx_v_tag); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor/node.pxi":563 + * element.unwrap(delete_empty) + * + * def merge_text_nodes(self): # <<<<<<<<<<<<<< + * """Iterates over all text nodes and merges all text nodes that are close to each other. + * +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_32merge_text_nodes(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6lexbor_10LexborNode_31merge_text_nodes, "LexborNode.merge_text_nodes(self)\n\nIterates over all text nodes and merges all text nodes that are close to each other.\n\nThis is useful for text extraction.\nUse it when you need to strip HTML tags and merge \"dangling\" text.\n\nExamples\n--------\n\n>>> tree = LexborHTMLParser(\"

John

Doe

\")\n>>> node = tree.css_first('div')\n>>> tree.unwrap_tags([\"strong\"])\n>>> tree.text(deep=True, separator=\" \", strip=True)\n\"J ohn Doe\" # Text extraction produces an extra space because the strong tag was removed.\n>>> node.merge_text_nodes()\n>>> tree.text(deep=True, separator=\" \", strip=True)\n\"John Doe\""); +static PyMethodDef __pyx_mdef_10selectolax_6lexbor_10LexborNode_32merge_text_nodes = {"merge_text_nodes", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_10LexborNode_32merge_text_nodes, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_10LexborNode_31merge_text_nodes}; +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_32merge_text_nodes(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("merge_text_nodes (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("merge_text_nodes", 1, 0, 0, __pyx_nargs); return NULL; } + const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len < 0)) return NULL; + if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("merge_text_nodes", __pyx_kwds); return NULL;} + __pyx_r = __pyx_pf_10selectolax_6lexbor_10LexborNode_31merge_text_nodes(((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_31merge_text_nodes(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self) { + lxb_dom_node_t *__pyx_v_node; + lxb_dom_node_t *__pyx_v_next_node; + lxb_char_t *__pyx_v_left_text; + lxb_char_t *__pyx_v_right_text; + size_t __pyx_v_left_length; + size_t __pyx_v_right_length; + PyObject *__pyx_v_combined = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + lxb_dom_node_t *__pyx_t_1; + int __pyx_t_2; + int __pyx_t_3; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + lxb_char_t const *__pyx_t_7; + Py_ssize_t __pyx_t_8; + PyObject *__pyx_t_9 = NULL; + size_t __pyx_t_10; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("merge_text_nodes", 0); + + /* "selectolax/lexbor/node.pxi":581 + * "John Doe" + * """ + * cdef lxb_dom_node_t *node = self.node.first_child # <<<<<<<<<<<<<< + * cdef lxb_dom_node_t *next_node + * cdef lxb_char_t *left_text +*/ + __pyx_t_1 = __pyx_v_self->node->first_child; + __pyx_v_node = __pyx_t_1; + + /* "selectolax/lexbor/node.pxi":587 + * cdef size_t left_length, right_length + * + * while node != NULL: # <<<<<<<<<<<<<< + * next_node = node.next + * if node.type == LXB_DOM_NODE_TYPE_TEXT and node.prev and node.prev.type == LXB_DOM_NODE_TYPE_TEXT: +*/ + while (1) { + __pyx_t_2 = (__pyx_v_node != NULL); + if (!__pyx_t_2) break; + + /* "selectolax/lexbor/node.pxi":588 + * + * while node != NULL: + * next_node = node.next # <<<<<<<<<<<<<< + * if node.type == LXB_DOM_NODE_TYPE_TEXT and node.prev and node.prev.type == LXB_DOM_NODE_TYPE_TEXT: + * left_text = lxb_dom_node_text_content(node.prev, &left_length) +*/ + __pyx_t_1 = __pyx_v_node->next; + __pyx_v_next_node = __pyx_t_1; + + /* "selectolax/lexbor/node.pxi":589 + * while node != NULL: + * next_node = node.next + * if node.type == LXB_DOM_NODE_TYPE_TEXT and node.prev and node.prev.type == LXB_DOM_NODE_TYPE_TEXT: # <<<<<<<<<<<<<< + * left_text = lxb_dom_node_text_content(node.prev, &left_length) + * right_text = lxb_dom_node_text_content(node, &right_length) +*/ + __pyx_t_3 = (__pyx_v_node->type == LXB_DOM_NODE_TYPE_TEXT); + if (__pyx_t_3) { + } else { + __pyx_t_2 = __pyx_t_3; + goto __pyx_L6_bool_binop_done; + } + __pyx_t_3 = (__pyx_v_node->prev != 0); + if (__pyx_t_3) { + } else { + __pyx_t_2 = __pyx_t_3; + goto __pyx_L6_bool_binop_done; + } + __pyx_t_3 = (__pyx_v_node->prev->type == LXB_DOM_NODE_TYPE_TEXT); + __pyx_t_2 = __pyx_t_3; + __pyx_L6_bool_binop_done:; + if (__pyx_t_2) { + + /* "selectolax/lexbor/node.pxi":590 + * next_node = node.next + * if node.type == LXB_DOM_NODE_TYPE_TEXT and node.prev and node.prev.type == LXB_DOM_NODE_TYPE_TEXT: + * left_text = lxb_dom_node_text_content(node.prev, &left_length) # <<<<<<<<<<<<<< + * right_text = lxb_dom_node_text_content(node, &right_length) + * if left_text and right_text: +*/ + __pyx_v_left_text = lxb_dom_node_text_content(__pyx_v_node->prev, (&__pyx_v_left_length)); + + /* "selectolax/lexbor/node.pxi":591 + * if node.type == LXB_DOM_NODE_TYPE_TEXT and node.prev and node.prev.type == LXB_DOM_NODE_TYPE_TEXT: + * left_text = lxb_dom_node_text_content(node.prev, &left_length) + * right_text = lxb_dom_node_text_content(node, &right_length) # <<<<<<<<<<<<<< + * if left_text and right_text: + * combined = ( left_text[:left_length]) + ( right_text[:right_length]) +*/ + __pyx_v_right_text = lxb_dom_node_text_content(__pyx_v_node, (&__pyx_v_right_length)); + + /* "selectolax/lexbor/node.pxi":592 + * left_text = lxb_dom_node_text_content(node.prev, &left_length) + * right_text = lxb_dom_node_text_content(node, &right_length) + * if left_text and right_text: # <<<<<<<<<<<<<< + * combined = ( left_text[:left_length]) + ( right_text[:right_length]) + * lxb_dom_node_text_content_set(node, combined, len(combined)) +*/ + __pyx_t_3 = (__pyx_v_left_text != 0); + if (__pyx_t_3) { + } else { + __pyx_t_2 = __pyx_t_3; + goto __pyx_L10_bool_binop_done; + } + __pyx_t_3 = (__pyx_v_right_text != 0); + __pyx_t_2 = __pyx_t_3; + __pyx_L10_bool_binop_done:; + if (__pyx_t_2) { + + /* "selectolax/lexbor/node.pxi":593 + * right_text = lxb_dom_node_text_content(node, &right_length) + * if left_text and right_text: + * combined = ( left_text[:left_length]) + ( right_text[:right_length]) # <<<<<<<<<<<<<< + * lxb_dom_node_text_content_set(node, combined, len(combined)) + * lxb_dom_node_remove(node.prev) +*/ + __pyx_t_4 = __Pyx_PyBytes_FromStringAndSize(((char const *)__pyx_v_left_text) + 0, __pyx_v_left_length - 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 593, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = __Pyx_PyBytes_FromStringAndSize(((char const *)__pyx_v_right_text) + 0, __pyx_v_right_length - 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 593, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = PyNumber_Add(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 593, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_XDECREF_SET(__pyx_v_combined, ((PyObject*)__pyx_t_6)); + __pyx_t_6 = 0; + + /* "selectolax/lexbor/node.pxi":594 + * if left_text and right_text: + * combined = ( left_text[:left_length]) + ( right_text[:right_length]) + * lxb_dom_node_text_content_set(node, combined, len(combined)) # <<<<<<<<<<<<<< + * lxb_dom_node_remove(node.prev) + * +*/ + __pyx_t_7 = __Pyx_PyBytes_AsUString(__pyx_v_combined); if (unlikely((!__pyx_t_7) && PyErr_Occurred())) __PYX_ERR(4, 594, __pyx_L1_error) + __pyx_t_8 = __Pyx_PyBytes_GET_SIZE(__pyx_v_combined); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(4, 594, __pyx_L1_error) + (void)(lxb_dom_node_text_content_set(__pyx_v_node, __pyx_t_7, __pyx_t_8)); + + /* "selectolax/lexbor/node.pxi":595 + * combined = ( left_text[:left_length]) + ( right_text[:right_length]) + * lxb_dom_node_text_content_set(node, combined, len(combined)) + * lxb_dom_node_remove(node.prev) # <<<<<<<<<<<<<< + * + * if left_text is not NULL: +*/ + lxb_dom_node_remove(__pyx_v_node->prev); + + /* "selectolax/lexbor/node.pxi":592 + * left_text = lxb_dom_node_text_content(node.prev, &left_length) + * right_text = lxb_dom_node_text_content(node, &right_length) + * if left_text and right_text: # <<<<<<<<<<<<<< + * combined = ( left_text[:left_length]) + ( right_text[:right_length]) + * lxb_dom_node_text_content_set(node, combined, len(combined)) +*/ + } + + /* "selectolax/lexbor/node.pxi":597 + * lxb_dom_node_remove(node.prev) + * + * if left_text is not NULL: # <<<<<<<<<<<<<< + * lxb_dom_document_destroy_text_noi(self.node.owner_document, left_text) + * if right_text is not NULL: +*/ + __pyx_t_2 = (__pyx_v_left_text != NULL); + if (__pyx_t_2) { + + /* "selectolax/lexbor/node.pxi":598 + * + * if left_text is not NULL: + * lxb_dom_document_destroy_text_noi(self.node.owner_document, left_text) # <<<<<<<<<<<<<< + * if right_text is not NULL: + * lxb_dom_document_destroy_text_noi(self.node.owner_document, right_text) +*/ + (void)(lxb_dom_document_destroy_text_noi(__pyx_v_self->node->owner_document, __pyx_v_left_text)); + + /* "selectolax/lexbor/node.pxi":597 + * lxb_dom_node_remove(node.prev) + * + * if left_text is not NULL: # <<<<<<<<<<<<<< + * lxb_dom_document_destroy_text_noi(self.node.owner_document, left_text) + * if right_text is not NULL: +*/ + } + + /* "selectolax/lexbor/node.pxi":599 + * if left_text is not NULL: + * lxb_dom_document_destroy_text_noi(self.node.owner_document, left_text) + * if right_text is not NULL: # <<<<<<<<<<<<<< + * lxb_dom_document_destroy_text_noi(self.node.owner_document, right_text) + * +*/ + __pyx_t_2 = (__pyx_v_right_text != NULL); + if (__pyx_t_2) { + + /* "selectolax/lexbor/node.pxi":600 + * lxb_dom_document_destroy_text_noi(self.node.owner_document, left_text) + * if right_text is not NULL: + * lxb_dom_document_destroy_text_noi(self.node.owner_document, right_text) # <<<<<<<<<<<<<< + * + * if node.first_child: +*/ + (void)(lxb_dom_document_destroy_text_noi(__pyx_v_self->node->owner_document, __pyx_v_right_text)); + + /* "selectolax/lexbor/node.pxi":599 + * if left_text is not NULL: + * lxb_dom_document_destroy_text_noi(self.node.owner_document, left_text) + * if right_text is not NULL: # <<<<<<<<<<<<<< + * lxb_dom_document_destroy_text_noi(self.node.owner_document, right_text) + * +*/ + } + + /* "selectolax/lexbor/node.pxi":589 + * while node != NULL: + * next_node = node.next + * if node.type == LXB_DOM_NODE_TYPE_TEXT and node.prev and node.prev.type == LXB_DOM_NODE_TYPE_TEXT: # <<<<<<<<<<<<<< + * left_text = lxb_dom_node_text_content(node.prev, &left_length) + * right_text = lxb_dom_node_text_content(node, &right_length) +*/ + } + + /* "selectolax/lexbor/node.pxi":602 + * lxb_dom_document_destroy_text_noi(self.node.owner_document, right_text) + * + * if node.first_child: # <<<<<<<<<<<<<< + * LexborNode.new(node, self.parser).merge_text_nodes() + * node = next_node +*/ + __pyx_t_2 = (__pyx_v_node->first_child != 0); + if (__pyx_t_2) { + + /* "selectolax/lexbor/node.pxi":603 + * + * if node.first_child: + * LexborNode.new(node, self.parser).merge_text_nodes() # <<<<<<<<<<<<<< + * node = next_node + * +*/ + __pyx_t_4 = ((PyObject *)__pyx_v_self->parser); + __Pyx_INCREF(__pyx_t_4); + __pyx_t_9 = ((PyObject *)__pyx_f_10selectolax_6lexbor_10LexborNode_new(__pyx_v_node, ((struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *)__pyx_t_4))); if (unlikely(!__pyx_t_9)) __PYX_ERR(4, 603, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_5 = __pyx_t_9; + __Pyx_INCREF(__pyx_t_5); + __pyx_t_10 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL}; + __pyx_t_6 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_merge_text_nodes, __pyx_callargs+__pyx_t_10, (1-__pyx_t_10) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 603, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + } + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + + /* "selectolax/lexbor/node.pxi":602 + * lxb_dom_document_destroy_text_noi(self.node.owner_document, right_text) + * + * if node.first_child: # <<<<<<<<<<<<<< + * LexborNode.new(node, self.parser).merge_text_nodes() + * node = next_node +*/ + } + + /* "selectolax/lexbor/node.pxi":604 + * if node.first_child: + * LexborNode.new(node, self.parser).merge_text_nodes() + * node = next_node # <<<<<<<<<<<<<< + * + * def traverse(self, bool include_text = False, bool skip_empty = False): +*/ + __pyx_v_node = __pyx_v_next_node; + } + + /* "selectolax/lexbor/node.pxi":563 + * element.unwrap(delete_empty) + * + * def merge_text_nodes(self): # <<<<<<<<<<<<<< + * """Iterates over all text nodes and merges all text nodes that are close to each other. + * +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_9); + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.merge_text_nodes", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_combined); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} +static PyObject *__pyx_gb_10selectolax_6lexbor_10LexborNode_35generator4(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ + +/* "selectolax/lexbor/node.pxi":606 + * node = next_node + * + * def traverse(self, bool include_text = False, bool skip_empty = False): # <<<<<<<<<<<<<< + * """Depth-first traversal starting at the current node. + * +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_34traverse(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6lexbor_10LexborNode_33traverse, "LexborNode.traverse(self, bool include_text=False, bool skip_empty=False)\n\nDepth-first traversal starting at the current node.\n\nParameters\n----------\ninclude_text : bool, optional\n When ``True``, include text nodes in the traversal sequence. Defaults\n to ``False``.\nskip_empty : bool, optional\n Skip text nodes that contain only ASCII whitespace (space, tab,\n newline, form feed or carriage return) when ``include_text`` is\n ``True``. Defaults to ``False``.\n\nYields\n------\nLexborNode\n Nodes encountered in depth-first order beginning with the current\n node, filtered according to the provided options."); +static PyMethodDef __pyx_mdef_10selectolax_6lexbor_10LexborNode_34traverse = {"traverse", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_10LexborNode_34traverse, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_10LexborNode_33traverse}; +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_34traverse(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyLongObject *__pyx_v_include_text = 0; + PyLongObject *__pyx_v_skip_empty = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[2] = {0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("traverse (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_include_text,&__pyx_mstate_global->__pyx_n_u_skip_empty,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(4, 606, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(4, 606, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 606, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "traverse", 0) < (0)) __PYX_ERR(4, 606, __pyx_L3_error) + if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)((PyLongObject *)Py_False)); + if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)((PyLongObject *)Py_False)); + } else { + switch (__pyx_nargs) { + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(4, 606, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 606, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)((PyLongObject *)Py_False)); + if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)((PyLongObject *)Py_False)); + } + __pyx_v_include_text = ((PyLongObject *)values[0]); + __pyx_v_skip_empty = ((PyLongObject *)values[1]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("traverse", 0, 0, 2, __pyx_nargs); __PYX_ERR(4, 606, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.traverse", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_include_text), __pyx_mstate_global->__pyx_ptype_7cpython_4bool_bool, 1, "include_text", 0))) __PYX_ERR(4, 606, __pyx_L1_error) + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_skip_empty), __pyx_mstate_global->__pyx_ptype_7cpython_4bool_bool, 1, "skip_empty", 0))) __PYX_ERR(4, 606, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6lexbor_10LexborNode_33traverse(((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_v_self), __pyx_v_include_text, __pyx_v_skip_empty); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_33traverse(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self, PyLongObject *__pyx_v_include_text, PyLongObject *__pyx_v_skip_empty) { + struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct_4_traverse *__pyx_cur_scope; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("traverse", 0); + __pyx_cur_scope = (struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct_4_traverse *)__pyx_tp_new_10selectolax_6lexbor___pyx_scope_struct_4_traverse(__pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor___pyx_scope_struct_4_traverse, __pyx_mstate_global->__pyx_empty_tuple, NULL); + if (unlikely(!__pyx_cur_scope)) { + __pyx_cur_scope = ((struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct_4_traverse *)Py_None); + __Pyx_INCREF(Py_None); + __PYX_ERR(4, 606, __pyx_L1_error) + } else { + __Pyx_GOTREF((PyObject *)__pyx_cur_scope); + } + __pyx_cur_scope->__pyx_v_self = __pyx_v_self; + __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self); + __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self); + __pyx_cur_scope->__pyx_v_include_text = __pyx_v_include_text; + __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_include_text); + __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_include_text); + __pyx_cur_scope->__pyx_v_skip_empty = __pyx_v_skip_empty; + __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_skip_empty); + __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_skip_empty); + { + __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_10selectolax_6lexbor_10LexborNode_35generator4, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[4]), (PyObject *) __pyx_cur_scope, __pyx_mstate_global->__pyx_n_u_traverse, __pyx_mstate_global->__pyx_n_u_LexborNode_traverse, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor); if (unlikely(!gen)) __PYX_ERR(4, 606, __pyx_L1_error) + __Pyx_DECREF(__pyx_cur_scope); + __Pyx_RefNannyFinishContext(); + return (PyObject *) gen; + } + + /* function exit code */ + __pyx_L1_error:; + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.traverse", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_DECREF((PyObject *)__pyx_cur_scope); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_gb_10selectolax_6lexbor_10LexborNode_35generator4(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ +{ + struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct_4_traverse *__pyx_cur_scope = ((struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct_4_traverse *)__pyx_generator->closure); + PyObject *__pyx_r = NULL; + lxb_dom_node_t *__pyx_t_1; + int __pyx_t_2; + int __pyx_t_3; + int __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("traverse", 0); + switch (__pyx_generator->resume_label) { + case 0: goto __pyx_L3_first_run; + case 1: goto __pyx_L12_resume_from_yield; + default: /* CPython raises the right error here */ + __Pyx_RefNannyFinishContext(); + return NULL; + } + __pyx_L3_first_run:; + if (unlikely(__pyx_sent_value != Py_None)) { + if (unlikely(__pyx_sent_value)) PyErr_SetString(PyExc_TypeError, "can't send non-None value to a just-started generator"); + __PYX_ERR(4, 606, __pyx_L1_error) + } + + /* "selectolax/lexbor/node.pxi":625 + * node, filtered according to the provided options. + * """ + * cdef lxb_dom_node_t * root = self.node # <<<<<<<<<<<<<< + * cdef lxb_dom_node_t * node = root + * cdef LexborNode lxb_node +*/ + __pyx_t_1 = __pyx_cur_scope->__pyx_v_self->node; + __pyx_cur_scope->__pyx_v_root = __pyx_t_1; + + /* "selectolax/lexbor/node.pxi":626 + * """ + * cdef lxb_dom_node_t * root = self.node + * cdef lxb_dom_node_t * node = root # <<<<<<<<<<<<<< + * cdef LexborNode lxb_node + * +*/ + __pyx_cur_scope->__pyx_v_node = __pyx_cur_scope->__pyx_v_root; + + /* "selectolax/lexbor/node.pxi":629 + * cdef LexborNode lxb_node + * + * while node != NULL: # <<<<<<<<<<<<<< + * if include_text or node.type != LXB_DOM_NODE_TYPE_TEXT: + * if not skip_empty or not is_empty_text_node(node): +*/ + while (1) { + __pyx_t_2 = (__pyx_cur_scope->__pyx_v_node != NULL); + if (!__pyx_t_2) break; + + /* "selectolax/lexbor/node.pxi":630 + * + * while node != NULL: + * if include_text or node.type != LXB_DOM_NODE_TYPE_TEXT: # <<<<<<<<<<<<<< + * if not skip_empty or not is_empty_text_node(node): + * lxb_node = LexborNode.new( node, self.parser) +*/ + __pyx_t_3 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_cur_scope->__pyx_v_include_text)); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(4, 630, __pyx_L1_error) + if (!__pyx_t_3) { + } else { + __pyx_t_2 = __pyx_t_3; + goto __pyx_L7_bool_binop_done; + } + __pyx_t_3 = (__pyx_cur_scope->__pyx_v_node->type != LXB_DOM_NODE_TYPE_TEXT); + __pyx_t_2 = __pyx_t_3; + __pyx_L7_bool_binop_done:; + if (__pyx_t_2) { + + /* "selectolax/lexbor/node.pxi":631 + * while node != NULL: + * if include_text or node.type != LXB_DOM_NODE_TYPE_TEXT: + * if not skip_empty or not is_empty_text_node(node): # <<<<<<<<<<<<<< + * lxb_node = LexborNode.new( node, self.parser) + * yield lxb_node +*/ + __pyx_t_3 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_cur_scope->__pyx_v_skip_empty)); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(4, 631, __pyx_L1_error) + __pyx_t_4 = (!__pyx_t_3); + if (!__pyx_t_4) { + } else { + __pyx_t_2 = __pyx_t_4; + goto __pyx_L10_bool_binop_done; + } + __pyx_t_4 = __pyx_f_10selectolax_6lexbor_is_empty_text_node(__pyx_cur_scope->__pyx_v_node); if (unlikely(__pyx_t_4 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(4, 631, __pyx_L1_error) + __pyx_t_3 = (!__pyx_t_4); + __pyx_t_2 = __pyx_t_3; + __pyx_L10_bool_binop_done:; + if (__pyx_t_2) { + + /* "selectolax/lexbor/node.pxi":632 + * if include_text or node.type != LXB_DOM_NODE_TYPE_TEXT: + * if not skip_empty or not is_empty_text_node(node): + * lxb_node = LexborNode.new( node, self.parser) # <<<<<<<<<<<<<< + * yield lxb_node + * +*/ + __pyx_t_5 = ((PyObject *)__pyx_cur_scope->__pyx_v_self->parser); + __Pyx_INCREF(__pyx_t_5); + __pyx_t_6 = ((PyObject *)__pyx_f_10selectolax_6lexbor_10LexborNode_new(((lxb_dom_node_t *)__pyx_cur_scope->__pyx_v_node), ((struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *)__pyx_t_5))); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 632, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_XGOTREF((PyObject *)__pyx_cur_scope->__pyx_v_lxb_node); + __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_lxb_node, ((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_t_6)); + __Pyx_GIVEREF(__pyx_t_6); + __pyx_t_6 = 0; + + /* "selectolax/lexbor/node.pxi":633 + * if not skip_empty or not is_empty_text_node(node): + * lxb_node = LexborNode.new( node, self.parser) + * yield lxb_node # <<<<<<<<<<<<<< + * + * if node.first_child != NULL: +*/ + __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_lxb_node); + __pyx_r = ((PyObject *)__pyx_cur_scope->__pyx_v_lxb_node); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, yielding value */ + __pyx_generator->resume_label = 1; + return __pyx_r; + __pyx_L12_resume_from_yield:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(4, 633, __pyx_L1_error) + + /* "selectolax/lexbor/node.pxi":631 + * while node != NULL: + * if include_text or node.type != LXB_DOM_NODE_TYPE_TEXT: + * if not skip_empty or not is_empty_text_node(node): # <<<<<<<<<<<<<< + * lxb_node = LexborNode.new( node, self.parser) + * yield lxb_node +*/ + } + + /* "selectolax/lexbor/node.pxi":630 + * + * while node != NULL: + * if include_text or node.type != LXB_DOM_NODE_TYPE_TEXT: # <<<<<<<<<<<<<< + * if not skip_empty or not is_empty_text_node(node): + * lxb_node = LexborNode.new( node, self.parser) +*/ + } + + /* "selectolax/lexbor/node.pxi":635 + * yield lxb_node + * + * if node.first_child != NULL: # <<<<<<<<<<<<<< + * node = node.first_child + * else: +*/ + __pyx_t_2 = (__pyx_cur_scope->__pyx_v_node->first_child != NULL); + if (__pyx_t_2) { + + /* "selectolax/lexbor/node.pxi":636 + * + * if node.first_child != NULL: + * node = node.first_child # <<<<<<<<<<<<<< + * else: + * while node != root and node.next == NULL: +*/ + __pyx_t_1 = __pyx_cur_scope->__pyx_v_node->first_child; + __pyx_cur_scope->__pyx_v_node = __pyx_t_1; + + /* "selectolax/lexbor/node.pxi":635 + * yield lxb_node + * + * if node.first_child != NULL: # <<<<<<<<<<<<<< + * node = node.first_child + * else: +*/ + goto __pyx_L13; + } + + /* "selectolax/lexbor/node.pxi":638 + * node = node.first_child + * else: + * while node != root and node.next == NULL: # <<<<<<<<<<<<<< + * node = node.parent + * if node == root: +*/ + /*else*/ { + while (1) { + __pyx_t_3 = (__pyx_cur_scope->__pyx_v_node != __pyx_cur_scope->__pyx_v_root); + if (__pyx_t_3) { + } else { + __pyx_t_2 = __pyx_t_3; + goto __pyx_L16_bool_binop_done; + } + __pyx_t_3 = (__pyx_cur_scope->__pyx_v_node->next == NULL); + __pyx_t_2 = __pyx_t_3; + __pyx_L16_bool_binop_done:; + if (!__pyx_t_2) break; + + /* "selectolax/lexbor/node.pxi":639 + * else: + * while node != root and node.next == NULL: + * node = node.parent # <<<<<<<<<<<<<< + * if node == root: + * break +*/ + __pyx_t_1 = __pyx_cur_scope->__pyx_v_node->parent; + __pyx_cur_scope->__pyx_v_node = __pyx_t_1; + } + + /* "selectolax/lexbor/node.pxi":640 + * while node != root and node.next == NULL: + * node = node.parent + * if node == root: # <<<<<<<<<<<<<< + * break + * node = node.next +*/ + __pyx_t_2 = (__pyx_cur_scope->__pyx_v_node == __pyx_cur_scope->__pyx_v_root); + if (__pyx_t_2) { + + /* "selectolax/lexbor/node.pxi":641 + * node = node.parent + * if node == root: + * break # <<<<<<<<<<<<<< + * node = node.next + * +*/ + goto __pyx_L5_break; + + /* "selectolax/lexbor/node.pxi":640 + * while node != root and node.next == NULL: + * node = node.parent + * if node == root: # <<<<<<<<<<<<<< + * break + * node = node.next +*/ + } + + /* "selectolax/lexbor/node.pxi":642 + * if node == root: + * break + * node = node.next # <<<<<<<<<<<<<< + * + * def replace_with(self, str_or_LexborNode value): +*/ + __pyx_t_1 = __pyx_cur_scope->__pyx_v_node->next; + __pyx_cur_scope->__pyx_v_node = __pyx_t_1; + } + __pyx_L13:; + } + __pyx_L5_break:; + CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); + + /* "selectolax/lexbor/node.pxi":606 + * node = next_node + * + * def traverse(self, bool include_text = False, bool skip_empty = False): # <<<<<<<<<<<<<< + * """Depth-first traversal starting at the current node. + * +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + if (__Pyx_PyErr_Occurred()) { + __Pyx_Generator_Replace_StopIteration(0); + __Pyx_AddTraceback("traverse", __pyx_clineno, __pyx_lineno, __pyx_filename); + } + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + #if !CYTHON_USE_EXC_INFO_STACK + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + #endif + __pyx_generator->resume_label = -1; + __Pyx_Coroutine_clear((PyObject*)__pyx_generator); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor/node.pxi":644 + * node = node.next + * + * def replace_with(self, str_or_LexborNode value): # <<<<<<<<<<<<<< + * """Replace current Node with specified value. + * +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_37replace_with(PyObject *__pyx_v_signatures, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6lexbor_10LexborNode_36replace_with, "LexborNode.replace_with(signatures, args, kwargs, defaults, _fused_sigindex={})\n\nReplace current Node with specified value.\n\nParameters\n----------\nvalue : str, bytes or Node\n The text or Node instance to replace the Node with.\n When a text string is passed, it's treated as text. All HTML tags will be escaped.\n Convert and pass the ``Node`` object when you want to work with HTML.\n Does not clone the ``Node`` object.\n All future changes to the passed ``Node`` object will also be taken into account.\n\nExamples\n--------\n\n>>> tree = LexborHTMLParser('
Get \"Laptop\"
')\n>>> img = tree.css_first('img')\n>>> img.replace_with(img.attributes.get('alt', ''))\n>>> tree.body.child.html\n'
Get Laptop
'\n\n>>> html_parser = LexborHTMLParser('
Get
')\n>>> html_parser2 = LexborHTMLParser('
Test
')\n>>> img_node = html_parser.css_first('img')\n>>> img_node.replace_with(html_parser2.body.child)\n'
Get
Test
'"); +static PyMethodDef __pyx_mdef_10selectolax_6lexbor_10LexborNode_37replace_with = {"replace_with", (PyCFunction)(void(*)(void))(PyCFunctionWithKeywords)__pyx_pw_10selectolax_6lexbor_10LexborNode_37replace_with, METH_VARARGS|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_10LexborNode_36replace_with}; +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_37replace_with(PyObject *__pyx_v_signatures, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_args = 0; + PyObject *__pyx_v_kwargs = 0; + CYTHON_UNUSED PyObject *__pyx_v_defaults = 0; + CYTHON_UNUSED PyObject *__pyx_v__fused_sigindex = 0; + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[4] = {0,0,0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__pyx_fused_cpdef (wrapper)", 0); + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_args,&__pyx_mstate_global->__pyx_n_u_kwargs,&__pyx_mstate_global->__pyx_n_u_defaults,&__pyx_mstate_global->__pyx_n_u_fused_sigindex,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(4, 644, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 4: + values[3] = __Pyx_ArgRef_VARARGS(__pyx_args, 3); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(4, 644, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 3: + values[2] = __Pyx_ArgRef_VARARGS(__pyx_args, 2); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(4, 644, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 2: + values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(4, 644, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 644, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__pyx_fused_cpdef", 0) < (0)) __PYX_ERR(4, 644, __pyx_L3_error) + if (!values[3]) values[3] = __Pyx_NewRef(__pyx_mstate_global->__pyx_k__5); + for (Py_ssize_t i = __pyx_nargs; i < 3; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__pyx_fused_cpdef", 0, 3, 4, i); __PYX_ERR(4, 644, __pyx_L3_error) } + } + } else { + switch (__pyx_nargs) { + case 4: + values[3] = __Pyx_ArgRef_VARARGS(__pyx_args, 3); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(4, 644, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 3: + values[2] = __Pyx_ArgRef_VARARGS(__pyx_args, 2); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(4, 644, __pyx_L3_error) + values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(4, 644, __pyx_L3_error) + values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 644, __pyx_L3_error) + break; + default: goto __pyx_L5_argtuple_error; + } + if (!values[3]) values[3] = __Pyx_NewRef(__pyx_mstate_global->__pyx_k__5); + } + __pyx_v_args = values[0]; + __pyx_v_kwargs = values[1]; + __pyx_v_defaults = values[2]; + __pyx_v__fused_sigindex = values[3]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("__pyx_fused_cpdef", 0, 3, 4, __pyx_nargs); __PYX_ERR(4, 644, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.__pyx_fused_cpdef", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_10selectolax_6lexbor_10LexborNode_36replace_with(((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_v_signatures), __pyx_v_args, __pyx_v_kwargs, __pyx_v_defaults, __pyx_v__fused_sigindex); + + /* function exit code */ + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_36replace_with(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_signatures, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs, CYTHON_UNUSED PyObject *__pyx_v_defaults, CYTHON_UNUSED PyObject *__pyx_v__fused_sigindex) { + PyObject *__pyx_v_arg = NULL; + PyObject *__pyx_v_dest_sig0 = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_t_2; + int __pyx_t_3; + Py_ssize_t __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + PyObject *__pyx_t_9[4]; + PyObject *__pyx_t_10 = NULL; + size_t __pyx_t_11; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("replace_with", 0); + __Pyx_INCREF(__pyx_v_kwargs); + __pyx_t_2 = (__pyx_v_kwargs != Py_None); + if (__pyx_t_2) { + } else { + __pyx_t_1 = __pyx_t_2; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_kwargs); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(4, 644, __pyx_L1_error) + __pyx_t_3 = (!__pyx_t_2); + __pyx_t_1 = __pyx_t_3; + __pyx_L4_bool_binop_done:; + if (__pyx_t_1) { + __Pyx_INCREF(Py_None); + __Pyx_DECREF_SET(__pyx_v_kwargs, Py_None); + } + if (unlikely(__pyx_v_args == Py_None)) { + PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); + __PYX_ERR(4, 644, __pyx_L1_error) + } + __pyx_t_4 = __Pyx_PyTuple_GET_SIZE(((PyObject*)__pyx_v_args)); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(4, 644, __pyx_L1_error) + __pyx_t_1 = (1 < __pyx_t_4); + if (__pyx_t_1) { + if (unlikely(__pyx_v_args == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(4, 644, __pyx_L1_error) + } + __pyx_t_5 = __Pyx_PyTuple_GET_ITEM(((PyObject*)__pyx_v_args), 1); + __Pyx_INCREF(__pyx_t_5); + __pyx_v_arg = __pyx_t_5; + __pyx_t_5 = 0; + goto __pyx_L6; + } + __pyx_t_3 = (__pyx_v_kwargs != Py_None); + if (__pyx_t_3) { + } else { + __pyx_t_1 = __pyx_t_3; + goto __pyx_L7_bool_binop_done; + } + if (unlikely(__pyx_v_kwargs == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); + __PYX_ERR(4, 644, __pyx_L1_error) + } + __pyx_t_3 = (__Pyx_PyDict_ContainsTF(__pyx_mstate_global->__pyx_n_u_value, ((PyObject*)__pyx_v_kwargs), Py_EQ)); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(4, 644, __pyx_L1_error) + __pyx_t_1 = __pyx_t_3; + __pyx_L7_bool_binop_done:; + if (likely(__pyx_t_1)) { + if (unlikely(__pyx_v_kwargs == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(4, 644, __pyx_L1_error) + } + __pyx_t_5 = __Pyx_PyDict_GetItem(((PyObject*)__pyx_v_kwargs), __pyx_mstate_global->__pyx_n_u_value); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 644, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_v_arg = __pyx_t_5; + __pyx_t_5 = 0; + goto __pyx_L6; + } + /*else*/ { + __pyx_t_6 = NULL; + __pyx_t_7 = __Pyx_PyUnicode_From_long(2, 0, ' ', 'd'); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 644, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + if (unlikely(__pyx_v_args == Py_None)) { + PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); + __PYX_ERR(4, 644, __pyx_L1_error) + } + __pyx_t_4 = __Pyx_PyTuple_GET_SIZE(((PyObject*)__pyx_v_args)); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(4, 644, __pyx_L1_error) + __pyx_t_8 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_t_4, 0, ' ', 'd'); if (unlikely(!__pyx_t_8)) __PYX_ERR(4, 644, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_9[0] = __pyx_mstate_global->__pyx_kp_u_Expected_at_least; + __pyx_t_9[1] = __pyx_t_7; + __pyx_t_9[2] = __pyx_mstate_global->__pyx_kp_u_arguments_got; + __pyx_t_9[3] = __pyx_t_8; + __pyx_t_10 = __Pyx_PyUnicode_Join(__pyx_t_9, 4, 18 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_7) + 16 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_8), 127); + if (unlikely(!__pyx_t_10)) __PYX_ERR(4, 644, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_11 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_10}; + __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __pyx_callargs+__pyx_t_11, (2-__pyx_t_11) | (__pyx_t_11*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 644, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + } + __Pyx_Raise(__pyx_t_5, 0, 0, 0); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __PYX_ERR(4, 644, __pyx_L1_error) + } + __pyx_L6:; + __pyx_t_5 = __pyx_ff_map_fused_ee27be_1_3_242639__11__dunderbuiltin__dunder_PyObject__ptr__and_1__etc(__pyx_v_arg); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 644, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_v_dest_sig0 = ((PyObject*)__pyx_t_5); + __pyx_t_5 = 0; + __Pyx_XDECREF(__pyx_r); + __pyx_t_5 = __pyx_ff_match_signatures_single(((PyObject*)__pyx_v_signatures), __pyx_v_dest_sig0); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 644, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_r = __pyx_t_5; + __pyx_t_5 = 0; + goto __pyx_L0; + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_XDECREF(__pyx_t_10); + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.__pyx_fused_cpdef", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_arg); + __Pyx_XDECREF(__pyx_v_dest_sig0); + __Pyx_XDECREF(__pyx_v_kwargs); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static PyObject *__pyx_fuse_0__pyx_pw_10selectolax_6lexbor_10LexborNode_57replace_with(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static PyMethodDef __pyx_fuse_0__pyx_mdef_10selectolax_6lexbor_10LexborNode_57replace_with = {"__pyx_fuse_0replace_with", (PyCFunction)(void(*)(void))(PyCFunctionWithKeywords)__pyx_fuse_0__pyx_pw_10selectolax_6lexbor_10LexborNode_57replace_with, METH_VARARGS|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_10LexborNode_36replace_with}; +static PyObject *__pyx_fuse_0__pyx_pw_10selectolax_6lexbor_10LexborNode_57replace_with(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_value = 0; + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("replace_with (wrapper)", 0); + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_value,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(4, 644, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 644, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "replace_with", 0) < (0)) __PYX_ERR(4, 644, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("replace_with", 1, 1, 1, i); __PYX_ERR(4, 644, __pyx_L3_error) } + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 644, __pyx_L3_error) + } + __pyx_v_value = ((PyObject*)values[0]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("replace_with", 1, 1, 1, __pyx_nargs); __PYX_ERR(4, 644, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.replace_with", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_value), (&PyUnicode_Type), 1, "value", 1))) __PYX_ERR(4, 644, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6lexbor_10LexborNode_56replace_with(((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_v_self), __pyx_v_value); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_56replace_with(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self, PyObject *__pyx_v_value) { + lxb_dom_node_t *__pyx_v_new_node; + PyObject *__pyx_v_bytes_val = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + lxb_char_t *__pyx_t_4; + Py_ssize_t __pyx_t_5; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + size_t __pyx_t_8; + PyObject *__pyx_t_9 = NULL; + PyObject *__pyx_t_10 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__pyx_fuse_0replace_with", 0); + + /* "selectolax/lexbor/node.pxi":673 + * cdef lxb_dom_node_t * new_node + * + * if isinstance(value, (str, bytes, unicode)): # <<<<<<<<<<<<<< + * bytes_val = to_bytes(value) + * new_node = lxb_dom_document_create_text_node( +*/ + __pyx_t_2 = PyUnicode_Check(__pyx_v_value); + if (!__pyx_t_2) { + } else { + __pyx_t_1 = __pyx_t_2; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_2 = PyBytes_Check(__pyx_v_value); + __pyx_t_1 = __pyx_t_2; + __pyx_L4_bool_binop_done:; + if (__pyx_t_1) { + + /* "selectolax/lexbor/node.pxi":674 + * + * if isinstance(value, (str, bytes, unicode)): + * bytes_val = to_bytes(value) # <<<<<<<<<<<<<< + * new_node = lxb_dom_document_create_text_node( + * &self.parser.document.dom_document, +*/ + __pyx_t_3 = __pyx_fuse_0__pyx_f_10selectolax_6lexbor_to_bytes(__pyx_v_value); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 674, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_v_bytes_val = ((PyObject*)__pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/lexbor/node.pxi":677 + * new_node = lxb_dom_document_create_text_node( + * &self.parser.document.dom_document, + * bytes_val, len(bytes_val) # <<<<<<<<<<<<<< + * ) + * if new_node == NULL: +*/ + if (unlikely(__pyx_v_bytes_val == Py_None)) { + PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); + __PYX_ERR(4, 677, __pyx_L1_error) + } + __pyx_t_4 = __Pyx_PyBytes_AsWritableUString(__pyx_v_bytes_val); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(4, 677, __pyx_L1_error) + if (unlikely(__pyx_v_bytes_val == Py_None)) { + PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); + __PYX_ERR(4, 677, __pyx_L1_error) + } + __pyx_t_5 = __Pyx_PyBytes_GET_SIZE(__pyx_v_bytes_val); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(4, 677, __pyx_L1_error) + + /* "selectolax/lexbor/node.pxi":675 + * if isinstance(value, (str, bytes, unicode)): + * bytes_val = to_bytes(value) + * new_node = lxb_dom_document_create_text_node( # <<<<<<<<<<<<<< + * &self.parser.document.dom_document, + * bytes_val, len(bytes_val) +*/ + __pyx_v_new_node = ((lxb_dom_node_t *)lxb_dom_document_create_text_node((&__pyx_v_self->parser->document->dom_document), ((lxb_char_t *)__pyx_t_4), __pyx_t_5)); + + /* "selectolax/lexbor/node.pxi":679 + * bytes_val, len(bytes_val) + * ) + * if new_node == NULL: # <<<<<<<<<<<<<< + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_before(self.node, new_node) +*/ + __pyx_t_1 = (__pyx_v_new_node == NULL); + if (unlikely(__pyx_t_1)) { + + /* "selectolax/lexbor/node.pxi":680 + * ) + * if new_node == NULL: + * raise SelectolaxError("Can't create a new node") # <<<<<<<<<<<<<< + * lxb_dom_node_insert_before(self.node, new_node) + * lxb_dom_node_remove( self.node) +*/ + __pyx_t_6 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_SelectolaxError); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 680, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_8 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_7))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7); + assert(__pyx_t_6); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_7, __pyx__function); + __pyx_t_8 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_mstate_global->__pyx_kp_u_Can_t_create_a_new_node}; + __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 680, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(4, 680, __pyx_L1_error) + + /* "selectolax/lexbor/node.pxi":679 + * bytes_val, len(bytes_val) + * ) + * if new_node == NULL: # <<<<<<<<<<<<<< + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_before(self.node, new_node) +*/ + } + + /* "selectolax/lexbor/node.pxi":681 + * if new_node == NULL: + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_before(self.node, new_node) # <<<<<<<<<<<<<< + * lxb_dom_node_remove( self.node) + * elif isinstance(value, LexborNode): +*/ + lxb_dom_node_insert_before(__pyx_v_self->node, __pyx_v_new_node); + + /* "selectolax/lexbor/node.pxi":682 + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_before(self.node, new_node) + * lxb_dom_node_remove( self.node) # <<<<<<<<<<<<<< + * elif isinstance(value, LexborNode): + * new_node = lxb_dom_document_import_node( +*/ + lxb_dom_node_remove(((lxb_dom_node_t *)__pyx_v_self->node)); + + /* "selectolax/lexbor/node.pxi":673 + * cdef lxb_dom_node_t * new_node + * + * if isinstance(value, (str, bytes, unicode)): # <<<<<<<<<<<<<< + * bytes_val = to_bytes(value) + * new_node = lxb_dom_document_create_text_node( +*/ + goto __pyx_L3; + } + + /* "selectolax/lexbor/node.pxi":683 + * lxb_dom_node_insert_before(self.node, new_node) + * lxb_dom_node_remove( self.node) + * elif isinstance(value, LexborNode): # <<<<<<<<<<<<<< + * new_node = lxb_dom_document_import_node( + * &self.parser.document.dom_document, +*/ + __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_value, __pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborNode); + if (likely(__pyx_t_1)) { + + /* "selectolax/lexbor/node.pxi":686 + * new_node = lxb_dom_document_import_node( + * &self.parser.document.dom_document, + * value.node, # <<<<<<<<<<<<<< + * True + * ) +*/ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_value, __pyx_mstate_global->__pyx_n_u_node); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 686, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + + /* "selectolax/lexbor/node.pxi":684 + * lxb_dom_node_remove( self.node) + * elif isinstance(value, LexborNode): + * new_node = lxb_dom_document_import_node( # <<<<<<<<<<<<<< + * &self.parser.document.dom_document, + * value.node, +*/ + __pyx_v_new_node = lxb_dom_document_import_node((&__pyx_v_self->parser->document->dom_document), ((lxb_dom_node_t *)__pyx_t_3), 1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "selectolax/lexbor/node.pxi":689 + * True + * ) + * if new_node == NULL: # <<<<<<<<<<<<<< + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_before(self.node, new_node) +*/ + __pyx_t_1 = (__pyx_v_new_node == NULL); + if (unlikely(__pyx_t_1)) { + + /* "selectolax/lexbor/node.pxi":690 + * ) + * if new_node == NULL: + * raise SelectolaxError("Can't create a new node") # <<<<<<<<<<<<<< + * lxb_dom_node_insert_before(self.node, new_node) + * lxb_dom_node_remove( self.node) +*/ + __pyx_t_7 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_SelectolaxError); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 690, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_8 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); + assert(__pyx_t_7); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_6, __pyx__function); + __pyx_t_8 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_mstate_global->__pyx_kp_u_Can_t_create_a_new_node}; + __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_6, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 690, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(4, 690, __pyx_L1_error) + + /* "selectolax/lexbor/node.pxi":689 + * True + * ) + * if new_node == NULL: # <<<<<<<<<<<<<< + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_before(self.node, new_node) +*/ + } + + /* "selectolax/lexbor/node.pxi":691 + * if new_node == NULL: + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_before(self.node, new_node) # <<<<<<<<<<<<<< + * lxb_dom_node_remove( self.node) + * else: +*/ + lxb_dom_node_insert_before(__pyx_v_self->node, ((lxb_dom_node_t *)__pyx_v_new_node)); + + /* "selectolax/lexbor/node.pxi":692 + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_before(self.node, new_node) + * lxb_dom_node_remove( self.node) # <<<<<<<<<<<<<< + * else: + * raise SelectolaxError("Expected a string or LexborNode instance, but %s found" % type(value).__name__) +*/ + lxb_dom_node_remove(((lxb_dom_node_t *)__pyx_v_self->node)); + + /* "selectolax/lexbor/node.pxi":683 + * lxb_dom_node_insert_before(self.node, new_node) + * lxb_dom_node_remove( self.node) + * elif isinstance(value, LexborNode): # <<<<<<<<<<<<<< + * new_node = lxb_dom_document_import_node( + * &self.parser.document.dom_document, +*/ + goto __pyx_L3; + } + + /* "selectolax/lexbor/node.pxi":694 + * lxb_dom_node_remove( self.node) + * else: + * raise SelectolaxError("Expected a string or LexborNode instance, but %s found" % type(value).__name__) # <<<<<<<<<<<<<< + * + * def insert_before(self, str_or_LexborNode value): +*/ + /*else*/ { + __pyx_t_6 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_SelectolaxError); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 694, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(__pyx_v_value)), __pyx_mstate_global->__pyx_n_u_name); if (unlikely(!__pyx_t_9)) __PYX_ERR(4, 694, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_10 = __Pyx_PyUnicode_FormatSafe(__pyx_mstate_global->__pyx_kp_u_Expected_a_string_or_LexborNode, __pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(4, 694, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __pyx_t_8 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_7))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7); + assert(__pyx_t_6); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_7, __pyx__function); + __pyx_t_8 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_10}; + __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 694, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(4, 694, __pyx_L1_error) + } + __pyx_L3:; + + /* "selectolax/lexbor/node.pxi":644 + * node = node.next + * + * def replace_with(self, str_or_LexborNode value): # <<<<<<<<<<<<<< + * """Replace current Node with specified value. + * +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_9); + __Pyx_XDECREF(__pyx_t_10); + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.replace_with", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_bytes_val); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static PyObject *__pyx_fuse_1__pyx_pw_10selectolax_6lexbor_10LexborNode_59replace_with(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static PyMethodDef __pyx_fuse_1__pyx_mdef_10selectolax_6lexbor_10LexborNode_59replace_with = {"__pyx_fuse_1replace_with", (PyCFunction)(void(*)(void))(PyCFunctionWithKeywords)__pyx_fuse_1__pyx_pw_10selectolax_6lexbor_10LexborNode_59replace_with, METH_VARARGS|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_10LexborNode_36replace_with}; +static PyObject *__pyx_fuse_1__pyx_pw_10selectolax_6lexbor_10LexborNode_59replace_with(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_value = 0; + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("replace_with (wrapper)", 0); + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_value,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(4, 644, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 644, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "replace_with", 0) < (0)) __PYX_ERR(4, 644, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("replace_with", 1, 1, 1, i); __PYX_ERR(4, 644, __pyx_L3_error) } + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 644, __pyx_L3_error) + } + __pyx_v_value = ((PyObject*)values[0]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("replace_with", 1, 1, 1, __pyx_nargs); __PYX_ERR(4, 644, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.replace_with", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_value), (&PyBytes_Type), 1, "value", 1))) __PYX_ERR(4, 644, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6lexbor_10LexborNode_58replace_with(((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_v_self), __pyx_v_value); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_58replace_with(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self, PyObject *__pyx_v_value) { + lxb_dom_node_t *__pyx_v_new_node; + PyObject *__pyx_v_bytes_val = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + lxb_char_t *__pyx_t_4; + Py_ssize_t __pyx_t_5; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + size_t __pyx_t_8; + PyObject *__pyx_t_9 = NULL; + PyObject *__pyx_t_10 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__pyx_fuse_1replace_with", 0); + + /* "selectolax/lexbor/node.pxi":673 + * cdef lxb_dom_node_t * new_node + * + * if isinstance(value, (str, bytes, unicode)): # <<<<<<<<<<<<<< + * bytes_val = to_bytes(value) + * new_node = lxb_dom_document_create_text_node( +*/ + __pyx_t_2 = PyUnicode_Check(__pyx_v_value); + if (!__pyx_t_2) { + } else { + __pyx_t_1 = __pyx_t_2; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_2 = PyBytes_Check(__pyx_v_value); + __pyx_t_1 = __pyx_t_2; + __pyx_L4_bool_binop_done:; + if (__pyx_t_1) { + + /* "selectolax/lexbor/node.pxi":674 + * + * if isinstance(value, (str, bytes, unicode)): + * bytes_val = to_bytes(value) # <<<<<<<<<<<<<< + * new_node = lxb_dom_document_create_text_node( + * &self.parser.document.dom_document, +*/ + __pyx_t_3 = __pyx_fuse_1__pyx_f_10selectolax_6lexbor_to_bytes(__pyx_v_value); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 674, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_v_bytes_val = ((PyObject*)__pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/lexbor/node.pxi":677 + * new_node = lxb_dom_document_create_text_node( + * &self.parser.document.dom_document, + * bytes_val, len(bytes_val) # <<<<<<<<<<<<<< + * ) + * if new_node == NULL: +*/ + if (unlikely(__pyx_v_bytes_val == Py_None)) { + PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); + __PYX_ERR(4, 677, __pyx_L1_error) + } + __pyx_t_4 = __Pyx_PyBytes_AsWritableUString(__pyx_v_bytes_val); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(4, 677, __pyx_L1_error) + if (unlikely(__pyx_v_bytes_val == Py_None)) { + PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); + __PYX_ERR(4, 677, __pyx_L1_error) + } + __pyx_t_5 = __Pyx_PyBytes_GET_SIZE(__pyx_v_bytes_val); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(4, 677, __pyx_L1_error) + + /* "selectolax/lexbor/node.pxi":675 + * if isinstance(value, (str, bytes, unicode)): + * bytes_val = to_bytes(value) + * new_node = lxb_dom_document_create_text_node( # <<<<<<<<<<<<<< + * &self.parser.document.dom_document, + * bytes_val, len(bytes_val) +*/ + __pyx_v_new_node = ((lxb_dom_node_t *)lxb_dom_document_create_text_node((&__pyx_v_self->parser->document->dom_document), ((lxb_char_t *)__pyx_t_4), __pyx_t_5)); + + /* "selectolax/lexbor/node.pxi":679 + * bytes_val, len(bytes_val) + * ) + * if new_node == NULL: # <<<<<<<<<<<<<< + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_before(self.node, new_node) +*/ + __pyx_t_1 = (__pyx_v_new_node == NULL); + if (unlikely(__pyx_t_1)) { + + /* "selectolax/lexbor/node.pxi":680 + * ) + * if new_node == NULL: + * raise SelectolaxError("Can't create a new node") # <<<<<<<<<<<<<< + * lxb_dom_node_insert_before(self.node, new_node) + * lxb_dom_node_remove( self.node) +*/ + __pyx_t_6 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_SelectolaxError); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 680, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_8 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_7))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7); + assert(__pyx_t_6); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_7, __pyx__function); + __pyx_t_8 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_mstate_global->__pyx_kp_u_Can_t_create_a_new_node}; + __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 680, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(4, 680, __pyx_L1_error) + + /* "selectolax/lexbor/node.pxi":679 + * bytes_val, len(bytes_val) + * ) + * if new_node == NULL: # <<<<<<<<<<<<<< + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_before(self.node, new_node) +*/ + } + + /* "selectolax/lexbor/node.pxi":681 + * if new_node == NULL: + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_before(self.node, new_node) # <<<<<<<<<<<<<< + * lxb_dom_node_remove( self.node) + * elif isinstance(value, LexborNode): +*/ + lxb_dom_node_insert_before(__pyx_v_self->node, __pyx_v_new_node); + + /* "selectolax/lexbor/node.pxi":682 + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_before(self.node, new_node) + * lxb_dom_node_remove( self.node) # <<<<<<<<<<<<<< + * elif isinstance(value, LexborNode): + * new_node = lxb_dom_document_import_node( +*/ + lxb_dom_node_remove(((lxb_dom_node_t *)__pyx_v_self->node)); + + /* "selectolax/lexbor/node.pxi":673 + * cdef lxb_dom_node_t * new_node + * + * if isinstance(value, (str, bytes, unicode)): # <<<<<<<<<<<<<< + * bytes_val = to_bytes(value) + * new_node = lxb_dom_document_create_text_node( +*/ + goto __pyx_L3; + } + + /* "selectolax/lexbor/node.pxi":683 + * lxb_dom_node_insert_before(self.node, new_node) + * lxb_dom_node_remove( self.node) + * elif isinstance(value, LexborNode): # <<<<<<<<<<<<<< + * new_node = lxb_dom_document_import_node( + * &self.parser.document.dom_document, +*/ + __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_value, __pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborNode); + if (likely(__pyx_t_1)) { + + /* "selectolax/lexbor/node.pxi":686 + * new_node = lxb_dom_document_import_node( + * &self.parser.document.dom_document, + * value.node, # <<<<<<<<<<<<<< + * True + * ) +*/ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_value, __pyx_mstate_global->__pyx_n_u_node); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 686, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + + /* "selectolax/lexbor/node.pxi":684 + * lxb_dom_node_remove( self.node) + * elif isinstance(value, LexborNode): + * new_node = lxb_dom_document_import_node( # <<<<<<<<<<<<<< + * &self.parser.document.dom_document, + * value.node, +*/ + __pyx_v_new_node = lxb_dom_document_import_node((&__pyx_v_self->parser->document->dom_document), ((lxb_dom_node_t *)__pyx_t_3), 1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "selectolax/lexbor/node.pxi":689 + * True + * ) + * if new_node == NULL: # <<<<<<<<<<<<<< + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_before(self.node, new_node) +*/ + __pyx_t_1 = (__pyx_v_new_node == NULL); + if (unlikely(__pyx_t_1)) { + + /* "selectolax/lexbor/node.pxi":690 + * ) + * if new_node == NULL: + * raise SelectolaxError("Can't create a new node") # <<<<<<<<<<<<<< + * lxb_dom_node_insert_before(self.node, new_node) + * lxb_dom_node_remove( self.node) +*/ + __pyx_t_7 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_SelectolaxError); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 690, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_8 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); + assert(__pyx_t_7); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_6, __pyx__function); + __pyx_t_8 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_mstate_global->__pyx_kp_u_Can_t_create_a_new_node}; + __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_6, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 690, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(4, 690, __pyx_L1_error) + + /* "selectolax/lexbor/node.pxi":689 + * True + * ) + * if new_node == NULL: # <<<<<<<<<<<<<< + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_before(self.node, new_node) +*/ + } + + /* "selectolax/lexbor/node.pxi":691 + * if new_node == NULL: + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_before(self.node, new_node) # <<<<<<<<<<<<<< + * lxb_dom_node_remove( self.node) + * else: +*/ + lxb_dom_node_insert_before(__pyx_v_self->node, ((lxb_dom_node_t *)__pyx_v_new_node)); + + /* "selectolax/lexbor/node.pxi":692 + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_before(self.node, new_node) + * lxb_dom_node_remove( self.node) # <<<<<<<<<<<<<< + * else: + * raise SelectolaxError("Expected a string or LexborNode instance, but %s found" % type(value).__name__) +*/ + lxb_dom_node_remove(((lxb_dom_node_t *)__pyx_v_self->node)); + + /* "selectolax/lexbor/node.pxi":683 + * lxb_dom_node_insert_before(self.node, new_node) + * lxb_dom_node_remove( self.node) + * elif isinstance(value, LexborNode): # <<<<<<<<<<<<<< + * new_node = lxb_dom_document_import_node( + * &self.parser.document.dom_document, +*/ + goto __pyx_L3; + } + + /* "selectolax/lexbor/node.pxi":694 + * lxb_dom_node_remove( self.node) + * else: + * raise SelectolaxError("Expected a string or LexborNode instance, but %s found" % type(value).__name__) # <<<<<<<<<<<<<< + * + * def insert_before(self, str_or_LexborNode value): +*/ + /*else*/ { + __pyx_t_6 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_SelectolaxError); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 694, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(__pyx_v_value)), __pyx_mstate_global->__pyx_n_u_name); if (unlikely(!__pyx_t_9)) __PYX_ERR(4, 694, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_10 = __Pyx_PyUnicode_FormatSafe(__pyx_mstate_global->__pyx_kp_u_Expected_a_string_or_LexborNode, __pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(4, 694, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __pyx_t_8 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_7))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7); + assert(__pyx_t_6); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_7, __pyx__function); + __pyx_t_8 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_10}; + __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 694, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(4, 694, __pyx_L1_error) + } + __pyx_L3:; + + /* "selectolax/lexbor/node.pxi":644 + * node = node.next + * + * def replace_with(self, str_or_LexborNode value): # <<<<<<<<<<<<<< + * """Replace current Node with specified value. + * +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_9); + __Pyx_XDECREF(__pyx_t_10); + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.replace_with", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_bytes_val); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static PyObject *__pyx_fuse_2__pyx_pw_10selectolax_6lexbor_10LexborNode_61replace_with(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static PyMethodDef __pyx_fuse_2__pyx_mdef_10selectolax_6lexbor_10LexborNode_61replace_with = {"__pyx_fuse_2replace_with", (PyCFunction)(void(*)(void))(PyCFunctionWithKeywords)__pyx_fuse_2__pyx_pw_10selectolax_6lexbor_10LexborNode_61replace_with, METH_VARARGS|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_10LexborNode_36replace_with}; +static PyObject *__pyx_fuse_2__pyx_pw_10selectolax_6lexbor_10LexborNode_61replace_with(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_value = 0; + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("replace_with (wrapper)", 0); + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_value,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(4, 644, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 644, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "replace_with", 0) < (0)) __PYX_ERR(4, 644, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("replace_with", 1, 1, 1, i); __PYX_ERR(4, 644, __pyx_L3_error) } + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 644, __pyx_L3_error) + } + __pyx_v_value = ((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)values[0]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("replace_with", 1, 1, 1, __pyx_nargs); __PYX_ERR(4, 644, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.replace_with", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_value), __pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborNode, 1, "value", 0))) __PYX_ERR(4, 644, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6lexbor_10LexborNode_60replace_with(((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_v_self), __pyx_v_value); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_60replace_with(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self, struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_value) { + lxb_dom_node_t *__pyx_v_new_node; + PyObject *__pyx_v_bytes_val = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + lxb_char_t *__pyx_t_4; + Py_ssize_t __pyx_t_5; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + size_t __pyx_t_8; + PyObject *__pyx_t_9 = NULL; + PyObject *__pyx_t_10 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__pyx_fuse_2replace_with", 0); + + /* "selectolax/lexbor/node.pxi":673 + * cdef lxb_dom_node_t * new_node + * + * if isinstance(value, (str, bytes, unicode)): # <<<<<<<<<<<<<< + * bytes_val = to_bytes(value) + * new_node = lxb_dom_document_create_text_node( +*/ + __pyx_t_2 = PyUnicode_Check(((PyObject *)__pyx_v_value)); + if (!__pyx_t_2) { + } else { + __pyx_t_1 = __pyx_t_2; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_2 = PyBytes_Check(((PyObject *)__pyx_v_value)); + __pyx_t_1 = __pyx_t_2; + __pyx_L4_bool_binop_done:; + if (__pyx_t_1) { + + /* "selectolax/lexbor/node.pxi":674 + * + * if isinstance(value, (str, bytes, unicode)): + * bytes_val = to_bytes(value) # <<<<<<<<<<<<<< + * new_node = lxb_dom_document_create_text_node( + * &self.parser.document.dom_document, +*/ + __pyx_t_3 = __pyx_fuse_2__pyx_f_10selectolax_6lexbor_to_bytes(__pyx_v_value); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 674, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_v_bytes_val = ((PyObject*)__pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/lexbor/node.pxi":677 + * new_node = lxb_dom_document_create_text_node( + * &self.parser.document.dom_document, + * bytes_val, len(bytes_val) # <<<<<<<<<<<<<< + * ) + * if new_node == NULL: +*/ + if (unlikely(__pyx_v_bytes_val == Py_None)) { + PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); + __PYX_ERR(4, 677, __pyx_L1_error) + } + __pyx_t_4 = __Pyx_PyBytes_AsWritableUString(__pyx_v_bytes_val); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(4, 677, __pyx_L1_error) + if (unlikely(__pyx_v_bytes_val == Py_None)) { + PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); + __PYX_ERR(4, 677, __pyx_L1_error) + } + __pyx_t_5 = __Pyx_PyBytes_GET_SIZE(__pyx_v_bytes_val); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(4, 677, __pyx_L1_error) + + /* "selectolax/lexbor/node.pxi":675 + * if isinstance(value, (str, bytes, unicode)): + * bytes_val = to_bytes(value) + * new_node = lxb_dom_document_create_text_node( # <<<<<<<<<<<<<< + * &self.parser.document.dom_document, + * bytes_val, len(bytes_val) +*/ + __pyx_v_new_node = ((lxb_dom_node_t *)lxb_dom_document_create_text_node((&__pyx_v_self->parser->document->dom_document), ((lxb_char_t *)__pyx_t_4), __pyx_t_5)); + + /* "selectolax/lexbor/node.pxi":679 + * bytes_val, len(bytes_val) + * ) + * if new_node == NULL: # <<<<<<<<<<<<<< + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_before(self.node, new_node) +*/ + __pyx_t_1 = (__pyx_v_new_node == NULL); + if (unlikely(__pyx_t_1)) { + + /* "selectolax/lexbor/node.pxi":680 + * ) + * if new_node == NULL: + * raise SelectolaxError("Can't create a new node") # <<<<<<<<<<<<<< + * lxb_dom_node_insert_before(self.node, new_node) + * lxb_dom_node_remove( self.node) +*/ + __pyx_t_6 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_SelectolaxError); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 680, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_8 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_7))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7); + assert(__pyx_t_6); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_7, __pyx__function); + __pyx_t_8 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_mstate_global->__pyx_kp_u_Can_t_create_a_new_node}; + __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 680, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(4, 680, __pyx_L1_error) + + /* "selectolax/lexbor/node.pxi":679 + * bytes_val, len(bytes_val) + * ) + * if new_node == NULL: # <<<<<<<<<<<<<< + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_before(self.node, new_node) +*/ + } + + /* "selectolax/lexbor/node.pxi":681 + * if new_node == NULL: + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_before(self.node, new_node) # <<<<<<<<<<<<<< + * lxb_dom_node_remove( self.node) + * elif isinstance(value, LexborNode): +*/ + lxb_dom_node_insert_before(__pyx_v_self->node, __pyx_v_new_node); + + /* "selectolax/lexbor/node.pxi":682 + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_before(self.node, new_node) + * lxb_dom_node_remove( self.node) # <<<<<<<<<<<<<< + * elif isinstance(value, LexborNode): + * new_node = lxb_dom_document_import_node( +*/ + lxb_dom_node_remove(((lxb_dom_node_t *)__pyx_v_self->node)); + + /* "selectolax/lexbor/node.pxi":673 + * cdef lxb_dom_node_t * new_node + * + * if isinstance(value, (str, bytes, unicode)): # <<<<<<<<<<<<<< + * bytes_val = to_bytes(value) + * new_node = lxb_dom_document_create_text_node( +*/ + goto __pyx_L3; + } + + /* "selectolax/lexbor/node.pxi":683 + * lxb_dom_node_insert_before(self.node, new_node) + * lxb_dom_node_remove( self.node) + * elif isinstance(value, LexborNode): # <<<<<<<<<<<<<< + * new_node = lxb_dom_document_import_node( + * &self.parser.document.dom_document, +*/ + __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_value), __pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborNode); + if (likely(__pyx_t_1)) { + + /* "selectolax/lexbor/node.pxi":684 + * lxb_dom_node_remove( self.node) + * elif isinstance(value, LexborNode): + * new_node = lxb_dom_document_import_node( # <<<<<<<<<<<<<< + * &self.parser.document.dom_document, + * value.node, +*/ + __pyx_v_new_node = lxb_dom_document_import_node((&__pyx_v_self->parser->document->dom_document), ((lxb_dom_node_t *)__pyx_v_value->node), 1); + + /* "selectolax/lexbor/node.pxi":689 + * True + * ) + * if new_node == NULL: # <<<<<<<<<<<<<< + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_before(self.node, new_node) +*/ + __pyx_t_1 = (__pyx_v_new_node == NULL); + if (unlikely(__pyx_t_1)) { + + /* "selectolax/lexbor/node.pxi":690 + * ) + * if new_node == NULL: + * raise SelectolaxError("Can't create a new node") # <<<<<<<<<<<<<< + * lxb_dom_node_insert_before(self.node, new_node) + * lxb_dom_node_remove( self.node) +*/ + __pyx_t_7 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_SelectolaxError); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 690, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_8 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); + assert(__pyx_t_7); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_6, __pyx__function); + __pyx_t_8 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_mstate_global->__pyx_kp_u_Can_t_create_a_new_node}; + __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_6, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 690, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(4, 690, __pyx_L1_error) + + /* "selectolax/lexbor/node.pxi":689 + * True + * ) + * if new_node == NULL: # <<<<<<<<<<<<<< + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_before(self.node, new_node) +*/ + } + + /* "selectolax/lexbor/node.pxi":691 + * if new_node == NULL: + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_before(self.node, new_node) # <<<<<<<<<<<<<< + * lxb_dom_node_remove( self.node) + * else: +*/ + lxb_dom_node_insert_before(__pyx_v_self->node, ((lxb_dom_node_t *)__pyx_v_new_node)); + + /* "selectolax/lexbor/node.pxi":692 + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_before(self.node, new_node) + * lxb_dom_node_remove( self.node) # <<<<<<<<<<<<<< + * else: + * raise SelectolaxError("Expected a string or LexborNode instance, but %s found" % type(value).__name__) +*/ + lxb_dom_node_remove(((lxb_dom_node_t *)__pyx_v_self->node)); + + /* "selectolax/lexbor/node.pxi":683 + * lxb_dom_node_insert_before(self.node, new_node) + * lxb_dom_node_remove( self.node) + * elif isinstance(value, LexborNode): # <<<<<<<<<<<<<< + * new_node = lxb_dom_document_import_node( + * &self.parser.document.dom_document, +*/ + goto __pyx_L3; + } + + /* "selectolax/lexbor/node.pxi":694 + * lxb_dom_node_remove( self.node) + * else: + * raise SelectolaxError("Expected a string or LexborNode instance, but %s found" % type(value).__name__) # <<<<<<<<<<<<<< + * + * def insert_before(self, str_or_LexborNode value): +*/ + /*else*/ { + __pyx_t_6 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_SelectolaxError); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 694, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_value))), __pyx_mstate_global->__pyx_n_u_name); if (unlikely(!__pyx_t_9)) __PYX_ERR(4, 694, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_10 = __Pyx_PyUnicode_FormatSafe(__pyx_mstate_global->__pyx_kp_u_Expected_a_string_or_LexborNode, __pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(4, 694, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __pyx_t_8 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_7))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7); + assert(__pyx_t_6); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_7, __pyx__function); + __pyx_t_8 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_10}; + __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 694, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(4, 694, __pyx_L1_error) + } + __pyx_L3:; + + /* "selectolax/lexbor/node.pxi":644 + * node = node.next + * + * def replace_with(self, str_or_LexborNode value): # <<<<<<<<<<<<<< + * """Replace current Node with specified value. + * +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_9); + __Pyx_XDECREF(__pyx_t_10); + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.replace_with", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_bytes_val); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor/node.pxi":696 + * raise SelectolaxError("Expected a string or LexborNode instance, but %s found" % type(value).__name__) + * + * def insert_before(self, str_or_LexborNode value): # <<<<<<<<<<<<<< + * """ + * Insert a node before the current Node. +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_39insert_before(PyObject *__pyx_v_signatures, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6lexbor_10LexborNode_38insert_before, "LexborNode.insert_before(signatures, args, kwargs, defaults, _fused_sigindex={})\n\nInsert a node before the current Node.\n\nParameters\n----------\nvalue : str, bytes or Node\n The text or Node instance to insert before the Node.\n When a text string is passed, it's treated as text. All HTML tags will be escaped.\n Convert and pass the ``Node`` object when you want to work with HTML.\n Does not clone the ``Node`` object.\n All future changes to the passed ``Node`` object will also be taken into account.\n\nExamples\n--------\n\n>>> tree = LexborHTMLParser('
Get \"Laptop\"
')\n>>> img = tree.css_first('img')\n>>> img.insert_before(img.attributes.get('alt', ''))\n>>> tree.body.child.html\n'
Get Laptop\"Laptop\"
'\n\n>>> html_parser = LexborHTMLParser('
Get
')\n>>> html_parser2 = LexborHTMLParser('
Test
')\n>>> img_node = html_parser.css_first('img')\n>>> img_node.insert_before(html_parser2.body.child)\n
Get
Test
'"); +static PyMethodDef __pyx_mdef_10selectolax_6lexbor_10LexborNode_39insert_before = {"insert_before", (PyCFunction)(void(*)(void))(PyCFunctionWithKeywords)__pyx_pw_10selectolax_6lexbor_10LexborNode_39insert_before, METH_VARARGS|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_10LexborNode_38insert_before}; +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_39insert_before(PyObject *__pyx_v_signatures, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_args = 0; + PyObject *__pyx_v_kwargs = 0; + CYTHON_UNUSED PyObject *__pyx_v_defaults = 0; + CYTHON_UNUSED PyObject *__pyx_v__fused_sigindex = 0; + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[4] = {0,0,0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__pyx_fused_cpdef (wrapper)", 0); + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_args,&__pyx_mstate_global->__pyx_n_u_kwargs,&__pyx_mstate_global->__pyx_n_u_defaults,&__pyx_mstate_global->__pyx_n_u_fused_sigindex,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(4, 696, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 4: + values[3] = __Pyx_ArgRef_VARARGS(__pyx_args, 3); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(4, 696, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 3: + values[2] = __Pyx_ArgRef_VARARGS(__pyx_args, 2); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(4, 696, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 2: + values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(4, 696, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 696, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__pyx_fused_cpdef", 0) < (0)) __PYX_ERR(4, 696, __pyx_L3_error) + if (!values[3]) values[3] = __Pyx_NewRef(__pyx_mstate_global->__pyx_k__6); + for (Py_ssize_t i = __pyx_nargs; i < 3; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__pyx_fused_cpdef", 0, 3, 4, i); __PYX_ERR(4, 696, __pyx_L3_error) } + } + } else { + switch (__pyx_nargs) { + case 4: + values[3] = __Pyx_ArgRef_VARARGS(__pyx_args, 3); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(4, 696, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 3: + values[2] = __Pyx_ArgRef_VARARGS(__pyx_args, 2); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(4, 696, __pyx_L3_error) + values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(4, 696, __pyx_L3_error) + values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 696, __pyx_L3_error) + break; + default: goto __pyx_L5_argtuple_error; + } + if (!values[3]) values[3] = __Pyx_NewRef(__pyx_mstate_global->__pyx_k__6); + } + __pyx_v_args = values[0]; + __pyx_v_kwargs = values[1]; + __pyx_v_defaults = values[2]; + __pyx_v__fused_sigindex = values[3]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("__pyx_fused_cpdef", 0, 3, 4, __pyx_nargs); __PYX_ERR(4, 696, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.__pyx_fused_cpdef", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_10selectolax_6lexbor_10LexborNode_38insert_before(((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_v_signatures), __pyx_v_args, __pyx_v_kwargs, __pyx_v_defaults, __pyx_v__fused_sigindex); + + /* function exit code */ + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_38insert_before(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_signatures, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs, CYTHON_UNUSED PyObject *__pyx_v_defaults, CYTHON_UNUSED PyObject *__pyx_v__fused_sigindex) { + PyObject *__pyx_v_arg = NULL; + PyObject *__pyx_v_dest_sig0 = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_t_2; + int __pyx_t_3; + Py_ssize_t __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + PyObject *__pyx_t_9[4]; + PyObject *__pyx_t_10 = NULL; + size_t __pyx_t_11; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("insert_before", 0); + __Pyx_INCREF(__pyx_v_kwargs); + __pyx_t_2 = (__pyx_v_kwargs != Py_None); + if (__pyx_t_2) { + } else { + __pyx_t_1 = __pyx_t_2; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_kwargs); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(4, 696, __pyx_L1_error) + __pyx_t_3 = (!__pyx_t_2); + __pyx_t_1 = __pyx_t_3; + __pyx_L4_bool_binop_done:; + if (__pyx_t_1) { + __Pyx_INCREF(Py_None); + __Pyx_DECREF_SET(__pyx_v_kwargs, Py_None); + } + if (unlikely(__pyx_v_args == Py_None)) { + PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); + __PYX_ERR(4, 696, __pyx_L1_error) + } + __pyx_t_4 = __Pyx_PyTuple_GET_SIZE(((PyObject*)__pyx_v_args)); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(4, 696, __pyx_L1_error) + __pyx_t_1 = (1 < __pyx_t_4); + if (__pyx_t_1) { + if (unlikely(__pyx_v_args == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(4, 696, __pyx_L1_error) + } + __pyx_t_5 = __Pyx_PyTuple_GET_ITEM(((PyObject*)__pyx_v_args), 1); + __Pyx_INCREF(__pyx_t_5); + __pyx_v_arg = __pyx_t_5; + __pyx_t_5 = 0; + goto __pyx_L6; + } + __pyx_t_3 = (__pyx_v_kwargs != Py_None); + if (__pyx_t_3) { + } else { + __pyx_t_1 = __pyx_t_3; + goto __pyx_L7_bool_binop_done; + } + if (unlikely(__pyx_v_kwargs == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); + __PYX_ERR(4, 696, __pyx_L1_error) + } + __pyx_t_3 = (__Pyx_PyDict_ContainsTF(__pyx_mstate_global->__pyx_n_u_value, ((PyObject*)__pyx_v_kwargs), Py_EQ)); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(4, 696, __pyx_L1_error) + __pyx_t_1 = __pyx_t_3; + __pyx_L7_bool_binop_done:; + if (likely(__pyx_t_1)) { + if (unlikely(__pyx_v_kwargs == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(4, 696, __pyx_L1_error) + } + __pyx_t_5 = __Pyx_PyDict_GetItem(((PyObject*)__pyx_v_kwargs), __pyx_mstate_global->__pyx_n_u_value); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 696, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_v_arg = __pyx_t_5; + __pyx_t_5 = 0; + goto __pyx_L6; + } + /*else*/ { + __pyx_t_6 = NULL; + __pyx_t_7 = __Pyx_PyUnicode_From_long(2, 0, ' ', 'd'); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 696, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + if (unlikely(__pyx_v_args == Py_None)) { + PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); + __PYX_ERR(4, 696, __pyx_L1_error) + } + __pyx_t_4 = __Pyx_PyTuple_GET_SIZE(((PyObject*)__pyx_v_args)); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(4, 696, __pyx_L1_error) + __pyx_t_8 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_t_4, 0, ' ', 'd'); if (unlikely(!__pyx_t_8)) __PYX_ERR(4, 696, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_9[0] = __pyx_mstate_global->__pyx_kp_u_Expected_at_least; + __pyx_t_9[1] = __pyx_t_7; + __pyx_t_9[2] = __pyx_mstate_global->__pyx_kp_u_arguments_got; + __pyx_t_9[3] = __pyx_t_8; + __pyx_t_10 = __Pyx_PyUnicode_Join(__pyx_t_9, 4, 18 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_7) + 16 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_8), 127); + if (unlikely(!__pyx_t_10)) __PYX_ERR(4, 696, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_11 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_10}; + __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __pyx_callargs+__pyx_t_11, (2-__pyx_t_11) | (__pyx_t_11*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 696, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + } + __Pyx_Raise(__pyx_t_5, 0, 0, 0); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __PYX_ERR(4, 696, __pyx_L1_error) + } + __pyx_L6:; + __pyx_t_5 = __pyx_ff_map_fused_ee27be_1_3_242639__11__dunderbuiltin__dunder_PyObject__ptr__and_1__etc(__pyx_v_arg); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 696, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_v_dest_sig0 = ((PyObject*)__pyx_t_5); + __pyx_t_5 = 0; + __Pyx_XDECREF(__pyx_r); + __pyx_t_5 = __pyx_ff_match_signatures_single(((PyObject*)__pyx_v_signatures), __pyx_v_dest_sig0); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 696, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_r = __pyx_t_5; + __pyx_t_5 = 0; + goto __pyx_L0; + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_XDECREF(__pyx_t_10); + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.__pyx_fused_cpdef", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_arg); + __Pyx_XDECREF(__pyx_v_dest_sig0); + __Pyx_XDECREF(__pyx_v_kwargs); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static PyObject *__pyx_fuse_0__pyx_pw_10selectolax_6lexbor_10LexborNode_65insert_before(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static PyMethodDef __pyx_fuse_0__pyx_mdef_10selectolax_6lexbor_10LexborNode_65insert_before = {"__pyx_fuse_0insert_before", (PyCFunction)(void(*)(void))(PyCFunctionWithKeywords)__pyx_fuse_0__pyx_pw_10selectolax_6lexbor_10LexborNode_65insert_before, METH_VARARGS|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_10LexborNode_38insert_before}; +static PyObject *__pyx_fuse_0__pyx_pw_10selectolax_6lexbor_10LexborNode_65insert_before(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_value = 0; + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("insert_before (wrapper)", 0); + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_value,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(4, 696, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 696, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "insert_before", 0) < (0)) __PYX_ERR(4, 696, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("insert_before", 1, 1, 1, i); __PYX_ERR(4, 696, __pyx_L3_error) } + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 696, __pyx_L3_error) + } + __pyx_v_value = ((PyObject*)values[0]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("insert_before", 1, 1, 1, __pyx_nargs); __PYX_ERR(4, 696, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.insert_before", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_value), (&PyUnicode_Type), 1, "value", 1))) __PYX_ERR(4, 696, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6lexbor_10LexborNode_64insert_before(((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_v_self), __pyx_v_value); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_64insert_before(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self, PyObject *__pyx_v_value) { + lxb_dom_node_t *__pyx_v_new_node; + PyObject *__pyx_v_bytes_val = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + lxb_char_t *__pyx_t_4; + Py_ssize_t __pyx_t_5; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + size_t __pyx_t_8; + PyObject *__pyx_t_9 = NULL; + PyObject *__pyx_t_10 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__pyx_fuse_0insert_before", 0); + + /* "selectolax/lexbor/node.pxi":726 + * cdef lxb_dom_node_t * new_node + * + * if isinstance(value, (str, bytes, unicode)): # <<<<<<<<<<<<<< + * bytes_val = to_bytes(value) + * new_node = lxb_dom_document_create_text_node( +*/ + __pyx_t_2 = PyUnicode_Check(__pyx_v_value); + if (!__pyx_t_2) { + } else { + __pyx_t_1 = __pyx_t_2; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_2 = PyBytes_Check(__pyx_v_value); + __pyx_t_1 = __pyx_t_2; + __pyx_L4_bool_binop_done:; + if (__pyx_t_1) { + + /* "selectolax/lexbor/node.pxi":727 + * + * if isinstance(value, (str, bytes, unicode)): + * bytes_val = to_bytes(value) # <<<<<<<<<<<<<< + * new_node = lxb_dom_document_create_text_node( + * &self.parser.document.dom_document, +*/ + __pyx_t_3 = __pyx_fuse_0__pyx_f_10selectolax_6lexbor_to_bytes(__pyx_v_value); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 727, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_v_bytes_val = ((PyObject*)__pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/lexbor/node.pxi":730 + * new_node = lxb_dom_document_create_text_node( + * &self.parser.document.dom_document, + * bytes_val, len(bytes_val) # <<<<<<<<<<<<<< + * ) + * if new_node == NULL: +*/ + if (unlikely(__pyx_v_bytes_val == Py_None)) { + PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); + __PYX_ERR(4, 730, __pyx_L1_error) + } + __pyx_t_4 = __Pyx_PyBytes_AsWritableUString(__pyx_v_bytes_val); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(4, 730, __pyx_L1_error) + if (unlikely(__pyx_v_bytes_val == Py_None)) { + PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); + __PYX_ERR(4, 730, __pyx_L1_error) + } + __pyx_t_5 = __Pyx_PyBytes_GET_SIZE(__pyx_v_bytes_val); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(4, 730, __pyx_L1_error) + + /* "selectolax/lexbor/node.pxi":728 + * if isinstance(value, (str, bytes, unicode)): + * bytes_val = to_bytes(value) + * new_node = lxb_dom_document_create_text_node( # <<<<<<<<<<<<<< + * &self.parser.document.dom_document, + * bytes_val, len(bytes_val) +*/ + __pyx_v_new_node = ((lxb_dom_node_t *)lxb_dom_document_create_text_node((&__pyx_v_self->parser->document->dom_document), ((lxb_char_t *)__pyx_t_4), __pyx_t_5)); + + /* "selectolax/lexbor/node.pxi":732 + * bytes_val, len(bytes_val) + * ) + * if new_node == NULL: # <<<<<<<<<<<<<< + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_before(self.node, new_node) +*/ + __pyx_t_1 = (__pyx_v_new_node == NULL); + if (unlikely(__pyx_t_1)) { + + /* "selectolax/lexbor/node.pxi":733 + * ) + * if new_node == NULL: + * raise SelectolaxError("Can't create a new node") # <<<<<<<<<<<<<< + * lxb_dom_node_insert_before(self.node, new_node) + * elif isinstance(value, LexborNode): +*/ + __pyx_t_6 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_SelectolaxError); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 733, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_8 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_7))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7); + assert(__pyx_t_6); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_7, __pyx__function); + __pyx_t_8 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_mstate_global->__pyx_kp_u_Can_t_create_a_new_node}; + __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 733, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(4, 733, __pyx_L1_error) + + /* "selectolax/lexbor/node.pxi":732 + * bytes_val, len(bytes_val) + * ) + * if new_node == NULL: # <<<<<<<<<<<<<< + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_before(self.node, new_node) +*/ + } + + /* "selectolax/lexbor/node.pxi":734 + * if new_node == NULL: + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_before(self.node, new_node) # <<<<<<<<<<<<<< + * elif isinstance(value, LexborNode): + * new_node = lxb_dom_document_import_node( +*/ + lxb_dom_node_insert_before(__pyx_v_self->node, __pyx_v_new_node); + + /* "selectolax/lexbor/node.pxi":726 + * cdef lxb_dom_node_t * new_node + * + * if isinstance(value, (str, bytes, unicode)): # <<<<<<<<<<<<<< + * bytes_val = to_bytes(value) + * new_node = lxb_dom_document_create_text_node( +*/ + goto __pyx_L3; + } + + /* "selectolax/lexbor/node.pxi":735 + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_before(self.node, new_node) + * elif isinstance(value, LexborNode): # <<<<<<<<<<<<<< + * new_node = lxb_dom_document_import_node( + * &self.parser.document.dom_document, +*/ + __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_value, __pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborNode); + if (likely(__pyx_t_1)) { + + /* "selectolax/lexbor/node.pxi":738 + * new_node = lxb_dom_document_import_node( + * &self.parser.document.dom_document, + * value.node, # <<<<<<<<<<<<<< + * True + * ) +*/ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_value, __pyx_mstate_global->__pyx_n_u_node); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 738, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + + /* "selectolax/lexbor/node.pxi":736 + * lxb_dom_node_insert_before(self.node, new_node) + * elif isinstance(value, LexborNode): + * new_node = lxb_dom_document_import_node( # <<<<<<<<<<<<<< + * &self.parser.document.dom_document, + * value.node, +*/ + __pyx_v_new_node = lxb_dom_document_import_node((&__pyx_v_self->parser->document->dom_document), ((lxb_dom_node_t *)__pyx_t_3), 1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "selectolax/lexbor/node.pxi":741 + * True + * ) + * if new_node == NULL: # <<<<<<<<<<<<<< + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_before(self.node, new_node) +*/ + __pyx_t_1 = (__pyx_v_new_node == NULL); + if (unlikely(__pyx_t_1)) { + + /* "selectolax/lexbor/node.pxi":742 + * ) + * if new_node == NULL: + * raise SelectolaxError("Can't create a new node") # <<<<<<<<<<<<<< + * lxb_dom_node_insert_before(self.node, new_node) + * else: +*/ + __pyx_t_7 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_SelectolaxError); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 742, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_8 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); + assert(__pyx_t_7); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_6, __pyx__function); + __pyx_t_8 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_mstate_global->__pyx_kp_u_Can_t_create_a_new_node}; + __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_6, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 742, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(4, 742, __pyx_L1_error) + + /* "selectolax/lexbor/node.pxi":741 + * True + * ) + * if new_node == NULL: # <<<<<<<<<<<<<< + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_before(self.node, new_node) +*/ + } + + /* "selectolax/lexbor/node.pxi":743 + * if new_node == NULL: + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_before(self.node, new_node) # <<<<<<<<<<<<<< + * else: + * raise SelectolaxError("Expected a string or LexborNode instance, but %s found" % type(value).__name__) +*/ + lxb_dom_node_insert_before(__pyx_v_self->node, ((lxb_dom_node_t *)__pyx_v_new_node)); + + /* "selectolax/lexbor/node.pxi":735 + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_before(self.node, new_node) + * elif isinstance(value, LexborNode): # <<<<<<<<<<<<<< + * new_node = lxb_dom_document_import_node( + * &self.parser.document.dom_document, +*/ + goto __pyx_L3; + } + + /* "selectolax/lexbor/node.pxi":745 + * lxb_dom_node_insert_before(self.node, new_node) + * else: + * raise SelectolaxError("Expected a string or LexborNode instance, but %s found" % type(value).__name__) # <<<<<<<<<<<<<< + * + * def insert_after(self, str_or_LexborNode value): +*/ + /*else*/ { + __pyx_t_6 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_SelectolaxError); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 745, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(__pyx_v_value)), __pyx_mstate_global->__pyx_n_u_name); if (unlikely(!__pyx_t_9)) __PYX_ERR(4, 745, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_10 = __Pyx_PyUnicode_FormatSafe(__pyx_mstate_global->__pyx_kp_u_Expected_a_string_or_LexborNode, __pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(4, 745, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __pyx_t_8 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_7))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7); + assert(__pyx_t_6); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_7, __pyx__function); + __pyx_t_8 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_10}; + __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 745, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(4, 745, __pyx_L1_error) + } + __pyx_L3:; + + /* "selectolax/lexbor/node.pxi":696 + * raise SelectolaxError("Expected a string or LexborNode instance, but %s found" % type(value).__name__) + * + * def insert_before(self, str_or_LexborNode value): # <<<<<<<<<<<<<< + * """ + * Insert a node before the current Node. +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_9); + __Pyx_XDECREF(__pyx_t_10); + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.insert_before", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_bytes_val); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static PyObject *__pyx_fuse_1__pyx_pw_10selectolax_6lexbor_10LexborNode_67insert_before(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static PyMethodDef __pyx_fuse_1__pyx_mdef_10selectolax_6lexbor_10LexborNode_67insert_before = {"__pyx_fuse_1insert_before", (PyCFunction)(void(*)(void))(PyCFunctionWithKeywords)__pyx_fuse_1__pyx_pw_10selectolax_6lexbor_10LexborNode_67insert_before, METH_VARARGS|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_10LexborNode_38insert_before}; +static PyObject *__pyx_fuse_1__pyx_pw_10selectolax_6lexbor_10LexborNode_67insert_before(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_value = 0; + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("insert_before (wrapper)", 0); + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_value,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(4, 696, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 696, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "insert_before", 0) < (0)) __PYX_ERR(4, 696, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("insert_before", 1, 1, 1, i); __PYX_ERR(4, 696, __pyx_L3_error) } + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 696, __pyx_L3_error) + } + __pyx_v_value = ((PyObject*)values[0]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("insert_before", 1, 1, 1, __pyx_nargs); __PYX_ERR(4, 696, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.insert_before", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_value), (&PyBytes_Type), 1, "value", 1))) __PYX_ERR(4, 696, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6lexbor_10LexborNode_66insert_before(((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_v_self), __pyx_v_value); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_66insert_before(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self, PyObject *__pyx_v_value) { + lxb_dom_node_t *__pyx_v_new_node; + PyObject *__pyx_v_bytes_val = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + lxb_char_t *__pyx_t_4; + Py_ssize_t __pyx_t_5; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + size_t __pyx_t_8; + PyObject *__pyx_t_9 = NULL; + PyObject *__pyx_t_10 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__pyx_fuse_1insert_before", 0); + + /* "selectolax/lexbor/node.pxi":726 + * cdef lxb_dom_node_t * new_node + * + * if isinstance(value, (str, bytes, unicode)): # <<<<<<<<<<<<<< + * bytes_val = to_bytes(value) + * new_node = lxb_dom_document_create_text_node( +*/ + __pyx_t_2 = PyUnicode_Check(__pyx_v_value); + if (!__pyx_t_2) { + } else { + __pyx_t_1 = __pyx_t_2; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_2 = PyBytes_Check(__pyx_v_value); + __pyx_t_1 = __pyx_t_2; + __pyx_L4_bool_binop_done:; + if (__pyx_t_1) { + + /* "selectolax/lexbor/node.pxi":727 + * + * if isinstance(value, (str, bytes, unicode)): + * bytes_val = to_bytes(value) # <<<<<<<<<<<<<< + * new_node = lxb_dom_document_create_text_node( + * &self.parser.document.dom_document, +*/ + __pyx_t_3 = __pyx_fuse_1__pyx_f_10selectolax_6lexbor_to_bytes(__pyx_v_value); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 727, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_v_bytes_val = ((PyObject*)__pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/lexbor/node.pxi":730 + * new_node = lxb_dom_document_create_text_node( + * &self.parser.document.dom_document, + * bytes_val, len(bytes_val) # <<<<<<<<<<<<<< + * ) + * if new_node == NULL: +*/ + if (unlikely(__pyx_v_bytes_val == Py_None)) { + PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); + __PYX_ERR(4, 730, __pyx_L1_error) + } + __pyx_t_4 = __Pyx_PyBytes_AsWritableUString(__pyx_v_bytes_val); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(4, 730, __pyx_L1_error) + if (unlikely(__pyx_v_bytes_val == Py_None)) { + PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); + __PYX_ERR(4, 730, __pyx_L1_error) + } + __pyx_t_5 = __Pyx_PyBytes_GET_SIZE(__pyx_v_bytes_val); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(4, 730, __pyx_L1_error) + + /* "selectolax/lexbor/node.pxi":728 + * if isinstance(value, (str, bytes, unicode)): + * bytes_val = to_bytes(value) + * new_node = lxb_dom_document_create_text_node( # <<<<<<<<<<<<<< + * &self.parser.document.dom_document, + * bytes_val, len(bytes_val) +*/ + __pyx_v_new_node = ((lxb_dom_node_t *)lxb_dom_document_create_text_node((&__pyx_v_self->parser->document->dom_document), ((lxb_char_t *)__pyx_t_4), __pyx_t_5)); + + /* "selectolax/lexbor/node.pxi":732 + * bytes_val, len(bytes_val) + * ) + * if new_node == NULL: # <<<<<<<<<<<<<< + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_before(self.node, new_node) +*/ + __pyx_t_1 = (__pyx_v_new_node == NULL); + if (unlikely(__pyx_t_1)) { + + /* "selectolax/lexbor/node.pxi":733 + * ) + * if new_node == NULL: + * raise SelectolaxError("Can't create a new node") # <<<<<<<<<<<<<< + * lxb_dom_node_insert_before(self.node, new_node) + * elif isinstance(value, LexborNode): +*/ + __pyx_t_6 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_SelectolaxError); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 733, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_8 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_7))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7); + assert(__pyx_t_6); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_7, __pyx__function); + __pyx_t_8 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_mstate_global->__pyx_kp_u_Can_t_create_a_new_node}; + __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 733, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(4, 733, __pyx_L1_error) + + /* "selectolax/lexbor/node.pxi":732 + * bytes_val, len(bytes_val) + * ) + * if new_node == NULL: # <<<<<<<<<<<<<< + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_before(self.node, new_node) +*/ + } + + /* "selectolax/lexbor/node.pxi":734 + * if new_node == NULL: + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_before(self.node, new_node) # <<<<<<<<<<<<<< + * elif isinstance(value, LexborNode): + * new_node = lxb_dom_document_import_node( +*/ + lxb_dom_node_insert_before(__pyx_v_self->node, __pyx_v_new_node); + + /* "selectolax/lexbor/node.pxi":726 + * cdef lxb_dom_node_t * new_node + * + * if isinstance(value, (str, bytes, unicode)): # <<<<<<<<<<<<<< + * bytes_val = to_bytes(value) + * new_node = lxb_dom_document_create_text_node( +*/ + goto __pyx_L3; + } + + /* "selectolax/lexbor/node.pxi":735 + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_before(self.node, new_node) + * elif isinstance(value, LexborNode): # <<<<<<<<<<<<<< + * new_node = lxb_dom_document_import_node( + * &self.parser.document.dom_document, +*/ + __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_value, __pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborNode); + if (likely(__pyx_t_1)) { + + /* "selectolax/lexbor/node.pxi":738 + * new_node = lxb_dom_document_import_node( + * &self.parser.document.dom_document, + * value.node, # <<<<<<<<<<<<<< + * True + * ) +*/ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_value, __pyx_mstate_global->__pyx_n_u_node); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 738, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + + /* "selectolax/lexbor/node.pxi":736 + * lxb_dom_node_insert_before(self.node, new_node) + * elif isinstance(value, LexborNode): + * new_node = lxb_dom_document_import_node( # <<<<<<<<<<<<<< + * &self.parser.document.dom_document, + * value.node, +*/ + __pyx_v_new_node = lxb_dom_document_import_node((&__pyx_v_self->parser->document->dom_document), ((lxb_dom_node_t *)__pyx_t_3), 1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "selectolax/lexbor/node.pxi":741 + * True + * ) + * if new_node == NULL: # <<<<<<<<<<<<<< + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_before(self.node, new_node) +*/ + __pyx_t_1 = (__pyx_v_new_node == NULL); + if (unlikely(__pyx_t_1)) { + + /* "selectolax/lexbor/node.pxi":742 + * ) + * if new_node == NULL: + * raise SelectolaxError("Can't create a new node") # <<<<<<<<<<<<<< + * lxb_dom_node_insert_before(self.node, new_node) + * else: +*/ + __pyx_t_7 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_SelectolaxError); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 742, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_8 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); + assert(__pyx_t_7); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_6, __pyx__function); + __pyx_t_8 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_mstate_global->__pyx_kp_u_Can_t_create_a_new_node}; + __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_6, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 742, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(4, 742, __pyx_L1_error) + + /* "selectolax/lexbor/node.pxi":741 + * True + * ) + * if new_node == NULL: # <<<<<<<<<<<<<< + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_before(self.node, new_node) +*/ + } + + /* "selectolax/lexbor/node.pxi":743 + * if new_node == NULL: + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_before(self.node, new_node) # <<<<<<<<<<<<<< + * else: + * raise SelectolaxError("Expected a string or LexborNode instance, but %s found" % type(value).__name__) +*/ + lxb_dom_node_insert_before(__pyx_v_self->node, ((lxb_dom_node_t *)__pyx_v_new_node)); + + /* "selectolax/lexbor/node.pxi":735 + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_before(self.node, new_node) + * elif isinstance(value, LexborNode): # <<<<<<<<<<<<<< + * new_node = lxb_dom_document_import_node( + * &self.parser.document.dom_document, +*/ + goto __pyx_L3; + } + + /* "selectolax/lexbor/node.pxi":745 + * lxb_dom_node_insert_before(self.node, new_node) + * else: + * raise SelectolaxError("Expected a string or LexborNode instance, but %s found" % type(value).__name__) # <<<<<<<<<<<<<< + * + * def insert_after(self, str_or_LexborNode value): +*/ + /*else*/ { + __pyx_t_6 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_SelectolaxError); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 745, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(__pyx_v_value)), __pyx_mstate_global->__pyx_n_u_name); if (unlikely(!__pyx_t_9)) __PYX_ERR(4, 745, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_10 = __Pyx_PyUnicode_FormatSafe(__pyx_mstate_global->__pyx_kp_u_Expected_a_string_or_LexborNode, __pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(4, 745, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __pyx_t_8 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_7))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7); + assert(__pyx_t_6); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_7, __pyx__function); + __pyx_t_8 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_10}; + __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 745, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(4, 745, __pyx_L1_error) + } + __pyx_L3:; + + /* "selectolax/lexbor/node.pxi":696 + * raise SelectolaxError("Expected a string or LexborNode instance, but %s found" % type(value).__name__) + * + * def insert_before(self, str_or_LexborNode value): # <<<<<<<<<<<<<< + * """ + * Insert a node before the current Node. +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_9); + __Pyx_XDECREF(__pyx_t_10); + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.insert_before", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_bytes_val); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static PyObject *__pyx_fuse_2__pyx_pw_10selectolax_6lexbor_10LexborNode_69insert_before(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static PyMethodDef __pyx_fuse_2__pyx_mdef_10selectolax_6lexbor_10LexborNode_69insert_before = {"__pyx_fuse_2insert_before", (PyCFunction)(void(*)(void))(PyCFunctionWithKeywords)__pyx_fuse_2__pyx_pw_10selectolax_6lexbor_10LexborNode_69insert_before, METH_VARARGS|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_10LexborNode_38insert_before}; +static PyObject *__pyx_fuse_2__pyx_pw_10selectolax_6lexbor_10LexborNode_69insert_before(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_value = 0; + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("insert_before (wrapper)", 0); + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_value,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(4, 696, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 696, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "insert_before", 0) < (0)) __PYX_ERR(4, 696, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("insert_before", 1, 1, 1, i); __PYX_ERR(4, 696, __pyx_L3_error) } + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 696, __pyx_L3_error) + } + __pyx_v_value = ((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)values[0]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("insert_before", 1, 1, 1, __pyx_nargs); __PYX_ERR(4, 696, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.insert_before", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_value), __pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborNode, 1, "value", 0))) __PYX_ERR(4, 696, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6lexbor_10LexborNode_68insert_before(((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_v_self), __pyx_v_value); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_68insert_before(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self, struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_value) { + lxb_dom_node_t *__pyx_v_new_node; + PyObject *__pyx_v_bytes_val = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + lxb_char_t *__pyx_t_4; + Py_ssize_t __pyx_t_5; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + size_t __pyx_t_8; + PyObject *__pyx_t_9 = NULL; + PyObject *__pyx_t_10 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__pyx_fuse_2insert_before", 0); + + /* "selectolax/lexbor/node.pxi":726 + * cdef lxb_dom_node_t * new_node + * + * if isinstance(value, (str, bytes, unicode)): # <<<<<<<<<<<<<< + * bytes_val = to_bytes(value) + * new_node = lxb_dom_document_create_text_node( +*/ + __pyx_t_2 = PyUnicode_Check(((PyObject *)__pyx_v_value)); + if (!__pyx_t_2) { + } else { + __pyx_t_1 = __pyx_t_2; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_2 = PyBytes_Check(((PyObject *)__pyx_v_value)); + __pyx_t_1 = __pyx_t_2; + __pyx_L4_bool_binop_done:; + if (__pyx_t_1) { + + /* "selectolax/lexbor/node.pxi":727 + * + * if isinstance(value, (str, bytes, unicode)): + * bytes_val = to_bytes(value) # <<<<<<<<<<<<<< + * new_node = lxb_dom_document_create_text_node( + * &self.parser.document.dom_document, +*/ + __pyx_t_3 = __pyx_fuse_2__pyx_f_10selectolax_6lexbor_to_bytes(__pyx_v_value); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 727, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_v_bytes_val = ((PyObject*)__pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/lexbor/node.pxi":730 + * new_node = lxb_dom_document_create_text_node( + * &self.parser.document.dom_document, + * bytes_val, len(bytes_val) # <<<<<<<<<<<<<< + * ) + * if new_node == NULL: +*/ + if (unlikely(__pyx_v_bytes_val == Py_None)) { + PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); + __PYX_ERR(4, 730, __pyx_L1_error) + } + __pyx_t_4 = __Pyx_PyBytes_AsWritableUString(__pyx_v_bytes_val); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(4, 730, __pyx_L1_error) + if (unlikely(__pyx_v_bytes_val == Py_None)) { + PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); + __PYX_ERR(4, 730, __pyx_L1_error) + } + __pyx_t_5 = __Pyx_PyBytes_GET_SIZE(__pyx_v_bytes_val); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(4, 730, __pyx_L1_error) + + /* "selectolax/lexbor/node.pxi":728 + * if isinstance(value, (str, bytes, unicode)): + * bytes_val = to_bytes(value) + * new_node = lxb_dom_document_create_text_node( # <<<<<<<<<<<<<< + * &self.parser.document.dom_document, + * bytes_val, len(bytes_val) +*/ + __pyx_v_new_node = ((lxb_dom_node_t *)lxb_dom_document_create_text_node((&__pyx_v_self->parser->document->dom_document), ((lxb_char_t *)__pyx_t_4), __pyx_t_5)); + + /* "selectolax/lexbor/node.pxi":732 + * bytes_val, len(bytes_val) + * ) + * if new_node == NULL: # <<<<<<<<<<<<<< + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_before(self.node, new_node) +*/ + __pyx_t_1 = (__pyx_v_new_node == NULL); + if (unlikely(__pyx_t_1)) { + + /* "selectolax/lexbor/node.pxi":733 + * ) + * if new_node == NULL: + * raise SelectolaxError("Can't create a new node") # <<<<<<<<<<<<<< + * lxb_dom_node_insert_before(self.node, new_node) + * elif isinstance(value, LexborNode): +*/ + __pyx_t_6 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_SelectolaxError); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 733, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_8 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_7))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7); + assert(__pyx_t_6); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_7, __pyx__function); + __pyx_t_8 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_mstate_global->__pyx_kp_u_Can_t_create_a_new_node}; + __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 733, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(4, 733, __pyx_L1_error) + + /* "selectolax/lexbor/node.pxi":732 + * bytes_val, len(bytes_val) + * ) + * if new_node == NULL: # <<<<<<<<<<<<<< + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_before(self.node, new_node) +*/ + } + + /* "selectolax/lexbor/node.pxi":734 + * if new_node == NULL: + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_before(self.node, new_node) # <<<<<<<<<<<<<< + * elif isinstance(value, LexborNode): + * new_node = lxb_dom_document_import_node( +*/ + lxb_dom_node_insert_before(__pyx_v_self->node, __pyx_v_new_node); + + /* "selectolax/lexbor/node.pxi":726 + * cdef lxb_dom_node_t * new_node + * + * if isinstance(value, (str, bytes, unicode)): # <<<<<<<<<<<<<< + * bytes_val = to_bytes(value) + * new_node = lxb_dom_document_create_text_node( +*/ + goto __pyx_L3; + } + + /* "selectolax/lexbor/node.pxi":735 + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_before(self.node, new_node) + * elif isinstance(value, LexborNode): # <<<<<<<<<<<<<< + * new_node = lxb_dom_document_import_node( + * &self.parser.document.dom_document, +*/ + __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_value), __pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborNode); + if (likely(__pyx_t_1)) { + + /* "selectolax/lexbor/node.pxi":736 + * lxb_dom_node_insert_before(self.node, new_node) + * elif isinstance(value, LexborNode): + * new_node = lxb_dom_document_import_node( # <<<<<<<<<<<<<< + * &self.parser.document.dom_document, + * value.node, +*/ + __pyx_v_new_node = lxb_dom_document_import_node((&__pyx_v_self->parser->document->dom_document), ((lxb_dom_node_t *)__pyx_v_value->node), 1); + + /* "selectolax/lexbor/node.pxi":741 + * True + * ) + * if new_node == NULL: # <<<<<<<<<<<<<< + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_before(self.node, new_node) +*/ + __pyx_t_1 = (__pyx_v_new_node == NULL); + if (unlikely(__pyx_t_1)) { + + /* "selectolax/lexbor/node.pxi":742 + * ) + * if new_node == NULL: + * raise SelectolaxError("Can't create a new node") # <<<<<<<<<<<<<< + * lxb_dom_node_insert_before(self.node, new_node) + * else: +*/ + __pyx_t_7 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_SelectolaxError); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 742, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_8 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); + assert(__pyx_t_7); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_6, __pyx__function); + __pyx_t_8 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_mstate_global->__pyx_kp_u_Can_t_create_a_new_node}; + __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_6, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 742, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(4, 742, __pyx_L1_error) + + /* "selectolax/lexbor/node.pxi":741 + * True + * ) + * if new_node == NULL: # <<<<<<<<<<<<<< + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_before(self.node, new_node) +*/ + } + + /* "selectolax/lexbor/node.pxi":743 + * if new_node == NULL: + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_before(self.node, new_node) # <<<<<<<<<<<<<< + * else: + * raise SelectolaxError("Expected a string or LexborNode instance, but %s found" % type(value).__name__) +*/ + lxb_dom_node_insert_before(__pyx_v_self->node, ((lxb_dom_node_t *)__pyx_v_new_node)); + + /* "selectolax/lexbor/node.pxi":735 + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_before(self.node, new_node) + * elif isinstance(value, LexborNode): # <<<<<<<<<<<<<< + * new_node = lxb_dom_document_import_node( + * &self.parser.document.dom_document, +*/ + goto __pyx_L3; + } + + /* "selectolax/lexbor/node.pxi":745 + * lxb_dom_node_insert_before(self.node, new_node) + * else: + * raise SelectolaxError("Expected a string or LexborNode instance, but %s found" % type(value).__name__) # <<<<<<<<<<<<<< + * + * def insert_after(self, str_or_LexborNode value): +*/ + /*else*/ { + __pyx_t_6 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_SelectolaxError); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 745, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_value))), __pyx_mstate_global->__pyx_n_u_name); if (unlikely(!__pyx_t_9)) __PYX_ERR(4, 745, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_10 = __Pyx_PyUnicode_FormatSafe(__pyx_mstate_global->__pyx_kp_u_Expected_a_string_or_LexborNode, __pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(4, 745, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __pyx_t_8 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_7))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7); + assert(__pyx_t_6); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_7, __pyx__function); + __pyx_t_8 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_10}; + __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 745, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(4, 745, __pyx_L1_error) + } + __pyx_L3:; + + /* "selectolax/lexbor/node.pxi":696 + * raise SelectolaxError("Expected a string or LexborNode instance, but %s found" % type(value).__name__) + * + * def insert_before(self, str_or_LexborNode value): # <<<<<<<<<<<<<< + * """ + * Insert a node before the current Node. +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_9); + __Pyx_XDECREF(__pyx_t_10); + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.insert_before", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_bytes_val); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor/node.pxi":747 + * raise SelectolaxError("Expected a string or LexborNode instance, but %s found" % type(value).__name__) + * + * def insert_after(self, str_or_LexborNode value): # <<<<<<<<<<<<<< + * """ + * Insert a node after the current Node. +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_41insert_after(PyObject *__pyx_v_signatures, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6lexbor_10LexborNode_40insert_after, "LexborNode.insert_after(signatures, args, kwargs, defaults, _fused_sigindex={})\n\nInsert a node after the current Node.\n\nParameters\n----------\nvalue : str, bytes or Node\n The text or Node instance to insert after the Node.\n When a text string is passed, it's treated as text. All HTML tags will be escaped.\n Convert and pass the ``Node`` object when you want to work with HTML.\n Does not clone the ``Node`` object.\n All future changes to the passed ``Node`` object will also be taken into account.\n\nExamples\n--------\n\n>>> tree = LexborHTMLParser('
Get \"Laptop\"
')\n>>> img = tree.css_first('img')\n>>> img.insert_after(img.attributes.get('alt', ''))\n>>> tree.body.child.html\n'
Get \"Laptop\"Laptop
'\n\n>>> html_parser = LexborHTMLParser('
Get
')\n>>> html_parser2 = LexborHTMLParser('
Test
')\n>>> img_node = html_parser.css_first('img')\n>>> img_node.insert_after(html_parser2.body.child)\n
Get
Test
'"); +static PyMethodDef __pyx_mdef_10selectolax_6lexbor_10LexborNode_41insert_after = {"insert_after", (PyCFunction)(void(*)(void))(PyCFunctionWithKeywords)__pyx_pw_10selectolax_6lexbor_10LexborNode_41insert_after, METH_VARARGS|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_10LexborNode_40insert_after}; +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_41insert_after(PyObject *__pyx_v_signatures, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_args = 0; + PyObject *__pyx_v_kwargs = 0; + CYTHON_UNUSED PyObject *__pyx_v_defaults = 0; + CYTHON_UNUSED PyObject *__pyx_v__fused_sigindex = 0; + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[4] = {0,0,0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__pyx_fused_cpdef (wrapper)", 0); + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_args,&__pyx_mstate_global->__pyx_n_u_kwargs,&__pyx_mstate_global->__pyx_n_u_defaults,&__pyx_mstate_global->__pyx_n_u_fused_sigindex,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(4, 747, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 4: + values[3] = __Pyx_ArgRef_VARARGS(__pyx_args, 3); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(4, 747, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 3: + values[2] = __Pyx_ArgRef_VARARGS(__pyx_args, 2); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(4, 747, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 2: + values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(4, 747, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 747, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__pyx_fused_cpdef", 0) < (0)) __PYX_ERR(4, 747, __pyx_L3_error) + if (!values[3]) values[3] = __Pyx_NewRef(__pyx_mstate_global->__pyx_k__7); + for (Py_ssize_t i = __pyx_nargs; i < 3; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__pyx_fused_cpdef", 0, 3, 4, i); __PYX_ERR(4, 747, __pyx_L3_error) } + } + } else { + switch (__pyx_nargs) { + case 4: + values[3] = __Pyx_ArgRef_VARARGS(__pyx_args, 3); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(4, 747, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 3: + values[2] = __Pyx_ArgRef_VARARGS(__pyx_args, 2); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(4, 747, __pyx_L3_error) + values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(4, 747, __pyx_L3_error) + values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 747, __pyx_L3_error) + break; + default: goto __pyx_L5_argtuple_error; + } + if (!values[3]) values[3] = __Pyx_NewRef(__pyx_mstate_global->__pyx_k__7); + } + __pyx_v_args = values[0]; + __pyx_v_kwargs = values[1]; + __pyx_v_defaults = values[2]; + __pyx_v__fused_sigindex = values[3]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("__pyx_fused_cpdef", 0, 3, 4, __pyx_nargs); __PYX_ERR(4, 747, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.__pyx_fused_cpdef", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_10selectolax_6lexbor_10LexborNode_40insert_after(((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_v_signatures), __pyx_v_args, __pyx_v_kwargs, __pyx_v_defaults, __pyx_v__fused_sigindex); + + /* function exit code */ + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_40insert_after(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_signatures, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs, CYTHON_UNUSED PyObject *__pyx_v_defaults, CYTHON_UNUSED PyObject *__pyx_v__fused_sigindex) { + PyObject *__pyx_v_arg = NULL; + PyObject *__pyx_v_dest_sig0 = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_t_2; + int __pyx_t_3; + Py_ssize_t __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + PyObject *__pyx_t_9[4]; + PyObject *__pyx_t_10 = NULL; + size_t __pyx_t_11; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("insert_after", 0); + __Pyx_INCREF(__pyx_v_kwargs); + __pyx_t_2 = (__pyx_v_kwargs != Py_None); + if (__pyx_t_2) { + } else { + __pyx_t_1 = __pyx_t_2; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_kwargs); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(4, 747, __pyx_L1_error) + __pyx_t_3 = (!__pyx_t_2); + __pyx_t_1 = __pyx_t_3; + __pyx_L4_bool_binop_done:; + if (__pyx_t_1) { + __Pyx_INCREF(Py_None); + __Pyx_DECREF_SET(__pyx_v_kwargs, Py_None); + } + if (unlikely(__pyx_v_args == Py_None)) { + PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); + __PYX_ERR(4, 747, __pyx_L1_error) + } + __pyx_t_4 = __Pyx_PyTuple_GET_SIZE(((PyObject*)__pyx_v_args)); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(4, 747, __pyx_L1_error) + __pyx_t_1 = (1 < __pyx_t_4); + if (__pyx_t_1) { + if (unlikely(__pyx_v_args == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(4, 747, __pyx_L1_error) + } + __pyx_t_5 = __Pyx_PyTuple_GET_ITEM(((PyObject*)__pyx_v_args), 1); + __Pyx_INCREF(__pyx_t_5); + __pyx_v_arg = __pyx_t_5; + __pyx_t_5 = 0; + goto __pyx_L6; + } + __pyx_t_3 = (__pyx_v_kwargs != Py_None); + if (__pyx_t_3) { + } else { + __pyx_t_1 = __pyx_t_3; + goto __pyx_L7_bool_binop_done; + } + if (unlikely(__pyx_v_kwargs == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); + __PYX_ERR(4, 747, __pyx_L1_error) + } + __pyx_t_3 = (__Pyx_PyDict_ContainsTF(__pyx_mstate_global->__pyx_n_u_value, ((PyObject*)__pyx_v_kwargs), Py_EQ)); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(4, 747, __pyx_L1_error) + __pyx_t_1 = __pyx_t_3; + __pyx_L7_bool_binop_done:; + if (likely(__pyx_t_1)) { + if (unlikely(__pyx_v_kwargs == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(4, 747, __pyx_L1_error) + } + __pyx_t_5 = __Pyx_PyDict_GetItem(((PyObject*)__pyx_v_kwargs), __pyx_mstate_global->__pyx_n_u_value); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 747, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_v_arg = __pyx_t_5; + __pyx_t_5 = 0; + goto __pyx_L6; + } + /*else*/ { + __pyx_t_6 = NULL; + __pyx_t_7 = __Pyx_PyUnicode_From_long(2, 0, ' ', 'd'); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 747, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + if (unlikely(__pyx_v_args == Py_None)) { + PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); + __PYX_ERR(4, 747, __pyx_L1_error) + } + __pyx_t_4 = __Pyx_PyTuple_GET_SIZE(((PyObject*)__pyx_v_args)); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(4, 747, __pyx_L1_error) + __pyx_t_8 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_t_4, 0, ' ', 'd'); if (unlikely(!__pyx_t_8)) __PYX_ERR(4, 747, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_9[0] = __pyx_mstate_global->__pyx_kp_u_Expected_at_least; + __pyx_t_9[1] = __pyx_t_7; + __pyx_t_9[2] = __pyx_mstate_global->__pyx_kp_u_arguments_got; + __pyx_t_9[3] = __pyx_t_8; + __pyx_t_10 = __Pyx_PyUnicode_Join(__pyx_t_9, 4, 18 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_7) + 16 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_8), 127); + if (unlikely(!__pyx_t_10)) __PYX_ERR(4, 747, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_11 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_10}; + __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __pyx_callargs+__pyx_t_11, (2-__pyx_t_11) | (__pyx_t_11*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 747, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + } + __Pyx_Raise(__pyx_t_5, 0, 0, 0); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __PYX_ERR(4, 747, __pyx_L1_error) + } + __pyx_L6:; + __pyx_t_5 = __pyx_ff_map_fused_ee27be_1_3_242639__11__dunderbuiltin__dunder_PyObject__ptr__and_1__etc(__pyx_v_arg); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 747, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_v_dest_sig0 = ((PyObject*)__pyx_t_5); + __pyx_t_5 = 0; + __Pyx_XDECREF(__pyx_r); + __pyx_t_5 = __pyx_ff_match_signatures_single(((PyObject*)__pyx_v_signatures), __pyx_v_dest_sig0); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 747, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_r = __pyx_t_5; + __pyx_t_5 = 0; + goto __pyx_L0; + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_XDECREF(__pyx_t_10); + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.__pyx_fused_cpdef", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_arg); + __Pyx_XDECREF(__pyx_v_dest_sig0); + __Pyx_XDECREF(__pyx_v_kwargs); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static PyObject *__pyx_fuse_0__pyx_pw_10selectolax_6lexbor_10LexborNode_73insert_after(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static PyMethodDef __pyx_fuse_0__pyx_mdef_10selectolax_6lexbor_10LexborNode_73insert_after = {"__pyx_fuse_0insert_after", (PyCFunction)(void(*)(void))(PyCFunctionWithKeywords)__pyx_fuse_0__pyx_pw_10selectolax_6lexbor_10LexborNode_73insert_after, METH_VARARGS|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_10LexborNode_40insert_after}; +static PyObject *__pyx_fuse_0__pyx_pw_10selectolax_6lexbor_10LexborNode_73insert_after(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_value = 0; + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("insert_after (wrapper)", 0); + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_value,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(4, 747, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 747, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "insert_after", 0) < (0)) __PYX_ERR(4, 747, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("insert_after", 1, 1, 1, i); __PYX_ERR(4, 747, __pyx_L3_error) } + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 747, __pyx_L3_error) + } + __pyx_v_value = ((PyObject*)values[0]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("insert_after", 1, 1, 1, __pyx_nargs); __PYX_ERR(4, 747, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.insert_after", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_value), (&PyUnicode_Type), 1, "value", 1))) __PYX_ERR(4, 747, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6lexbor_10LexborNode_72insert_after(((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_v_self), __pyx_v_value); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_72insert_after(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self, PyObject *__pyx_v_value) { + lxb_dom_node_t *__pyx_v_new_node; + PyObject *__pyx_v_bytes_val = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + lxb_char_t *__pyx_t_4; + Py_ssize_t __pyx_t_5; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + size_t __pyx_t_8; + PyObject *__pyx_t_9 = NULL; + PyObject *__pyx_t_10 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__pyx_fuse_0insert_after", 0); + + /* "selectolax/lexbor/node.pxi":777 + * cdef lxb_dom_node_t * new_node + * + * if isinstance(value, (str, bytes, unicode)): # <<<<<<<<<<<<<< + * bytes_val = to_bytes(value) + * new_node = lxb_dom_document_create_text_node( +*/ + __pyx_t_2 = PyUnicode_Check(__pyx_v_value); + if (!__pyx_t_2) { + } else { + __pyx_t_1 = __pyx_t_2; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_2 = PyBytes_Check(__pyx_v_value); + __pyx_t_1 = __pyx_t_2; + __pyx_L4_bool_binop_done:; + if (__pyx_t_1) { + + /* "selectolax/lexbor/node.pxi":778 + * + * if isinstance(value, (str, bytes, unicode)): + * bytes_val = to_bytes(value) # <<<<<<<<<<<<<< + * new_node = lxb_dom_document_create_text_node( + * &self.parser.document.dom_document, +*/ + __pyx_t_3 = __pyx_fuse_0__pyx_f_10selectolax_6lexbor_to_bytes(__pyx_v_value); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 778, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_v_bytes_val = ((PyObject*)__pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/lexbor/node.pxi":781 + * new_node = lxb_dom_document_create_text_node( + * &self.parser.document.dom_document, + * bytes_val, len(bytes_val) # <<<<<<<<<<<<<< + * ) + * if new_node == NULL: +*/ + if (unlikely(__pyx_v_bytes_val == Py_None)) { + PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); + __PYX_ERR(4, 781, __pyx_L1_error) + } + __pyx_t_4 = __Pyx_PyBytes_AsWritableUString(__pyx_v_bytes_val); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(4, 781, __pyx_L1_error) + if (unlikely(__pyx_v_bytes_val == Py_None)) { + PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); + __PYX_ERR(4, 781, __pyx_L1_error) + } + __pyx_t_5 = __Pyx_PyBytes_GET_SIZE(__pyx_v_bytes_val); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(4, 781, __pyx_L1_error) + + /* "selectolax/lexbor/node.pxi":779 + * if isinstance(value, (str, bytes, unicode)): + * bytes_val = to_bytes(value) + * new_node = lxb_dom_document_create_text_node( # <<<<<<<<<<<<<< + * &self.parser.document.dom_document, + * bytes_val, len(bytes_val) +*/ + __pyx_v_new_node = ((lxb_dom_node_t *)lxb_dom_document_create_text_node((&__pyx_v_self->parser->document->dom_document), ((lxb_char_t *)__pyx_t_4), __pyx_t_5)); + + /* "selectolax/lexbor/node.pxi":783 + * bytes_val, len(bytes_val) + * ) + * if new_node == NULL: # <<<<<<<<<<<<<< + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_after(self.node, new_node) +*/ + __pyx_t_1 = (__pyx_v_new_node == NULL); + if (unlikely(__pyx_t_1)) { + + /* "selectolax/lexbor/node.pxi":784 + * ) + * if new_node == NULL: + * raise SelectolaxError("Can't create a new node") # <<<<<<<<<<<<<< + * lxb_dom_node_insert_after(self.node, new_node) + * elif isinstance(value, LexborNode): +*/ + __pyx_t_6 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_SelectolaxError); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 784, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_8 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_7))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7); + assert(__pyx_t_6); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_7, __pyx__function); + __pyx_t_8 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_mstate_global->__pyx_kp_u_Can_t_create_a_new_node}; + __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 784, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(4, 784, __pyx_L1_error) + + /* "selectolax/lexbor/node.pxi":783 + * bytes_val, len(bytes_val) + * ) + * if new_node == NULL: # <<<<<<<<<<<<<< + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_after(self.node, new_node) +*/ + } + + /* "selectolax/lexbor/node.pxi":785 + * if new_node == NULL: + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_after(self.node, new_node) # <<<<<<<<<<<<<< + * elif isinstance(value, LexborNode): + * new_node = lxb_dom_document_import_node( +*/ + lxb_dom_node_insert_after(__pyx_v_self->node, __pyx_v_new_node); + + /* "selectolax/lexbor/node.pxi":777 + * cdef lxb_dom_node_t * new_node + * + * if isinstance(value, (str, bytes, unicode)): # <<<<<<<<<<<<<< + * bytes_val = to_bytes(value) + * new_node = lxb_dom_document_create_text_node( +*/ + goto __pyx_L3; + } + + /* "selectolax/lexbor/node.pxi":786 + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_after(self.node, new_node) + * elif isinstance(value, LexborNode): # <<<<<<<<<<<<<< + * new_node = lxb_dom_document_import_node( + * &self.parser.document.dom_document, +*/ + __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_value, __pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborNode); + if (likely(__pyx_t_1)) { + + /* "selectolax/lexbor/node.pxi":789 + * new_node = lxb_dom_document_import_node( + * &self.parser.document.dom_document, + * value.node, # <<<<<<<<<<<<<< + * True + * ) +*/ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_value, __pyx_mstate_global->__pyx_n_u_node); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 789, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + + /* "selectolax/lexbor/node.pxi":787 + * lxb_dom_node_insert_after(self.node, new_node) + * elif isinstance(value, LexborNode): + * new_node = lxb_dom_document_import_node( # <<<<<<<<<<<<<< + * &self.parser.document.dom_document, + * value.node, +*/ + __pyx_v_new_node = lxb_dom_document_import_node((&__pyx_v_self->parser->document->dom_document), ((lxb_dom_node_t *)__pyx_t_3), 1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "selectolax/lexbor/node.pxi":792 + * True + * ) + * if new_node == NULL: # <<<<<<<<<<<<<< + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_after(self.node, new_node) +*/ + __pyx_t_1 = (__pyx_v_new_node == NULL); + if (unlikely(__pyx_t_1)) { + + /* "selectolax/lexbor/node.pxi":793 + * ) + * if new_node == NULL: + * raise SelectolaxError("Can't create a new node") # <<<<<<<<<<<<<< + * lxb_dom_node_insert_after(self.node, new_node) + * else: +*/ + __pyx_t_7 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_SelectolaxError); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 793, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_8 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); + assert(__pyx_t_7); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_6, __pyx__function); + __pyx_t_8 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_mstate_global->__pyx_kp_u_Can_t_create_a_new_node}; + __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_6, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 793, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(4, 793, __pyx_L1_error) + + /* "selectolax/lexbor/node.pxi":792 + * True + * ) + * if new_node == NULL: # <<<<<<<<<<<<<< + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_after(self.node, new_node) +*/ + } + + /* "selectolax/lexbor/node.pxi":794 + * if new_node == NULL: + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_after(self.node, new_node) # <<<<<<<<<<<<<< + * else: + * raise SelectolaxError("Expected a string or LexborNode instance, but %s found" % type(value).__name__) +*/ + lxb_dom_node_insert_after(__pyx_v_self->node, ((lxb_dom_node_t *)__pyx_v_new_node)); + + /* "selectolax/lexbor/node.pxi":786 + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_after(self.node, new_node) + * elif isinstance(value, LexborNode): # <<<<<<<<<<<<<< + * new_node = lxb_dom_document_import_node( + * &self.parser.document.dom_document, +*/ + goto __pyx_L3; + } + + /* "selectolax/lexbor/node.pxi":796 + * lxb_dom_node_insert_after(self.node, new_node) + * else: + * raise SelectolaxError("Expected a string or LexborNode instance, but %s found" % type(value).__name__) # <<<<<<<<<<<<<< + * + * def insert_child(self, str_or_LexborNode value): +*/ + /*else*/ { + __pyx_t_6 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_SelectolaxError); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 796, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(__pyx_v_value)), __pyx_mstate_global->__pyx_n_u_name); if (unlikely(!__pyx_t_9)) __PYX_ERR(4, 796, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_10 = __Pyx_PyUnicode_FormatSafe(__pyx_mstate_global->__pyx_kp_u_Expected_a_string_or_LexborNode, __pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(4, 796, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __pyx_t_8 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_7))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7); + assert(__pyx_t_6); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_7, __pyx__function); + __pyx_t_8 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_10}; + __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 796, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(4, 796, __pyx_L1_error) + } + __pyx_L3:; + + /* "selectolax/lexbor/node.pxi":747 + * raise SelectolaxError("Expected a string or LexborNode instance, but %s found" % type(value).__name__) + * + * def insert_after(self, str_or_LexborNode value): # <<<<<<<<<<<<<< + * """ + * Insert a node after the current Node. +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_9); + __Pyx_XDECREF(__pyx_t_10); + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.insert_after", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_bytes_val); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static PyObject *__pyx_fuse_1__pyx_pw_10selectolax_6lexbor_10LexborNode_75insert_after(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static PyMethodDef __pyx_fuse_1__pyx_mdef_10selectolax_6lexbor_10LexborNode_75insert_after = {"__pyx_fuse_1insert_after", (PyCFunction)(void(*)(void))(PyCFunctionWithKeywords)__pyx_fuse_1__pyx_pw_10selectolax_6lexbor_10LexborNode_75insert_after, METH_VARARGS|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_10LexborNode_40insert_after}; +static PyObject *__pyx_fuse_1__pyx_pw_10selectolax_6lexbor_10LexborNode_75insert_after(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_value = 0; + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("insert_after (wrapper)", 0); + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_value,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(4, 747, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 747, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "insert_after", 0) < (0)) __PYX_ERR(4, 747, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("insert_after", 1, 1, 1, i); __PYX_ERR(4, 747, __pyx_L3_error) } + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 747, __pyx_L3_error) + } + __pyx_v_value = ((PyObject*)values[0]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("insert_after", 1, 1, 1, __pyx_nargs); __PYX_ERR(4, 747, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.insert_after", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_value), (&PyBytes_Type), 1, "value", 1))) __PYX_ERR(4, 747, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6lexbor_10LexborNode_74insert_after(((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_v_self), __pyx_v_value); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_74insert_after(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self, PyObject *__pyx_v_value) { + lxb_dom_node_t *__pyx_v_new_node; + PyObject *__pyx_v_bytes_val = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + lxb_char_t *__pyx_t_4; + Py_ssize_t __pyx_t_5; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + size_t __pyx_t_8; + PyObject *__pyx_t_9 = NULL; + PyObject *__pyx_t_10 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__pyx_fuse_1insert_after", 0); + + /* "selectolax/lexbor/node.pxi":777 + * cdef lxb_dom_node_t * new_node + * + * if isinstance(value, (str, bytes, unicode)): # <<<<<<<<<<<<<< + * bytes_val = to_bytes(value) + * new_node = lxb_dom_document_create_text_node( +*/ + __pyx_t_2 = PyUnicode_Check(__pyx_v_value); + if (!__pyx_t_2) { + } else { + __pyx_t_1 = __pyx_t_2; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_2 = PyBytes_Check(__pyx_v_value); + __pyx_t_1 = __pyx_t_2; + __pyx_L4_bool_binop_done:; + if (__pyx_t_1) { + + /* "selectolax/lexbor/node.pxi":778 + * + * if isinstance(value, (str, bytes, unicode)): + * bytes_val = to_bytes(value) # <<<<<<<<<<<<<< + * new_node = lxb_dom_document_create_text_node( + * &self.parser.document.dom_document, +*/ + __pyx_t_3 = __pyx_fuse_1__pyx_f_10selectolax_6lexbor_to_bytes(__pyx_v_value); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 778, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_v_bytes_val = ((PyObject*)__pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/lexbor/node.pxi":781 + * new_node = lxb_dom_document_create_text_node( + * &self.parser.document.dom_document, + * bytes_val, len(bytes_val) # <<<<<<<<<<<<<< + * ) + * if new_node == NULL: +*/ + if (unlikely(__pyx_v_bytes_val == Py_None)) { + PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); + __PYX_ERR(4, 781, __pyx_L1_error) + } + __pyx_t_4 = __Pyx_PyBytes_AsWritableUString(__pyx_v_bytes_val); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(4, 781, __pyx_L1_error) + if (unlikely(__pyx_v_bytes_val == Py_None)) { + PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); + __PYX_ERR(4, 781, __pyx_L1_error) + } + __pyx_t_5 = __Pyx_PyBytes_GET_SIZE(__pyx_v_bytes_val); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(4, 781, __pyx_L1_error) + + /* "selectolax/lexbor/node.pxi":779 + * if isinstance(value, (str, bytes, unicode)): + * bytes_val = to_bytes(value) + * new_node = lxb_dom_document_create_text_node( # <<<<<<<<<<<<<< + * &self.parser.document.dom_document, + * bytes_val, len(bytes_val) +*/ + __pyx_v_new_node = ((lxb_dom_node_t *)lxb_dom_document_create_text_node((&__pyx_v_self->parser->document->dom_document), ((lxb_char_t *)__pyx_t_4), __pyx_t_5)); + + /* "selectolax/lexbor/node.pxi":783 + * bytes_val, len(bytes_val) + * ) + * if new_node == NULL: # <<<<<<<<<<<<<< + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_after(self.node, new_node) +*/ + __pyx_t_1 = (__pyx_v_new_node == NULL); + if (unlikely(__pyx_t_1)) { + + /* "selectolax/lexbor/node.pxi":784 + * ) + * if new_node == NULL: + * raise SelectolaxError("Can't create a new node") # <<<<<<<<<<<<<< + * lxb_dom_node_insert_after(self.node, new_node) + * elif isinstance(value, LexborNode): +*/ + __pyx_t_6 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_SelectolaxError); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 784, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_8 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_7))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7); + assert(__pyx_t_6); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_7, __pyx__function); + __pyx_t_8 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_mstate_global->__pyx_kp_u_Can_t_create_a_new_node}; + __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 784, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(4, 784, __pyx_L1_error) + + /* "selectolax/lexbor/node.pxi":783 + * bytes_val, len(bytes_val) + * ) + * if new_node == NULL: # <<<<<<<<<<<<<< + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_after(self.node, new_node) +*/ + } + + /* "selectolax/lexbor/node.pxi":785 + * if new_node == NULL: + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_after(self.node, new_node) # <<<<<<<<<<<<<< + * elif isinstance(value, LexborNode): + * new_node = lxb_dom_document_import_node( +*/ + lxb_dom_node_insert_after(__pyx_v_self->node, __pyx_v_new_node); + + /* "selectolax/lexbor/node.pxi":777 + * cdef lxb_dom_node_t * new_node + * + * if isinstance(value, (str, bytes, unicode)): # <<<<<<<<<<<<<< + * bytes_val = to_bytes(value) + * new_node = lxb_dom_document_create_text_node( +*/ + goto __pyx_L3; + } + + /* "selectolax/lexbor/node.pxi":786 + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_after(self.node, new_node) + * elif isinstance(value, LexborNode): # <<<<<<<<<<<<<< + * new_node = lxb_dom_document_import_node( + * &self.parser.document.dom_document, +*/ + __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_value, __pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborNode); + if (likely(__pyx_t_1)) { + + /* "selectolax/lexbor/node.pxi":789 + * new_node = lxb_dom_document_import_node( + * &self.parser.document.dom_document, + * value.node, # <<<<<<<<<<<<<< + * True + * ) +*/ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_value, __pyx_mstate_global->__pyx_n_u_node); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 789, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + + /* "selectolax/lexbor/node.pxi":787 + * lxb_dom_node_insert_after(self.node, new_node) + * elif isinstance(value, LexborNode): + * new_node = lxb_dom_document_import_node( # <<<<<<<<<<<<<< + * &self.parser.document.dom_document, + * value.node, +*/ + __pyx_v_new_node = lxb_dom_document_import_node((&__pyx_v_self->parser->document->dom_document), ((lxb_dom_node_t *)__pyx_t_3), 1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "selectolax/lexbor/node.pxi":792 + * True + * ) + * if new_node == NULL: # <<<<<<<<<<<<<< + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_after(self.node, new_node) +*/ + __pyx_t_1 = (__pyx_v_new_node == NULL); + if (unlikely(__pyx_t_1)) { + + /* "selectolax/lexbor/node.pxi":793 + * ) + * if new_node == NULL: + * raise SelectolaxError("Can't create a new node") # <<<<<<<<<<<<<< + * lxb_dom_node_insert_after(self.node, new_node) + * else: +*/ + __pyx_t_7 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_SelectolaxError); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 793, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_8 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); + assert(__pyx_t_7); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_6, __pyx__function); + __pyx_t_8 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_mstate_global->__pyx_kp_u_Can_t_create_a_new_node}; + __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_6, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 793, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(4, 793, __pyx_L1_error) + + /* "selectolax/lexbor/node.pxi":792 + * True + * ) + * if new_node == NULL: # <<<<<<<<<<<<<< + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_after(self.node, new_node) +*/ + } + + /* "selectolax/lexbor/node.pxi":794 + * if new_node == NULL: + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_after(self.node, new_node) # <<<<<<<<<<<<<< + * else: + * raise SelectolaxError("Expected a string or LexborNode instance, but %s found" % type(value).__name__) +*/ + lxb_dom_node_insert_after(__pyx_v_self->node, ((lxb_dom_node_t *)__pyx_v_new_node)); + + /* "selectolax/lexbor/node.pxi":786 + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_after(self.node, new_node) + * elif isinstance(value, LexborNode): # <<<<<<<<<<<<<< + * new_node = lxb_dom_document_import_node( + * &self.parser.document.dom_document, +*/ + goto __pyx_L3; + } + + /* "selectolax/lexbor/node.pxi":796 + * lxb_dom_node_insert_after(self.node, new_node) + * else: + * raise SelectolaxError("Expected a string or LexborNode instance, but %s found" % type(value).__name__) # <<<<<<<<<<<<<< + * + * def insert_child(self, str_or_LexborNode value): +*/ + /*else*/ { + __pyx_t_6 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_SelectolaxError); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 796, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(__pyx_v_value)), __pyx_mstate_global->__pyx_n_u_name); if (unlikely(!__pyx_t_9)) __PYX_ERR(4, 796, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_10 = __Pyx_PyUnicode_FormatSafe(__pyx_mstate_global->__pyx_kp_u_Expected_a_string_or_LexborNode, __pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(4, 796, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __pyx_t_8 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_7))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7); + assert(__pyx_t_6); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_7, __pyx__function); + __pyx_t_8 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_10}; + __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 796, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(4, 796, __pyx_L1_error) + } + __pyx_L3:; + + /* "selectolax/lexbor/node.pxi":747 + * raise SelectolaxError("Expected a string or LexborNode instance, but %s found" % type(value).__name__) + * + * def insert_after(self, str_or_LexborNode value): # <<<<<<<<<<<<<< + * """ + * Insert a node after the current Node. +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_9); + __Pyx_XDECREF(__pyx_t_10); + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.insert_after", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_bytes_val); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static PyObject *__pyx_fuse_2__pyx_pw_10selectolax_6lexbor_10LexborNode_77insert_after(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static PyMethodDef __pyx_fuse_2__pyx_mdef_10selectolax_6lexbor_10LexborNode_77insert_after = {"__pyx_fuse_2insert_after", (PyCFunction)(void(*)(void))(PyCFunctionWithKeywords)__pyx_fuse_2__pyx_pw_10selectolax_6lexbor_10LexborNode_77insert_after, METH_VARARGS|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_10LexborNode_40insert_after}; +static PyObject *__pyx_fuse_2__pyx_pw_10selectolax_6lexbor_10LexborNode_77insert_after(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_value = 0; + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("insert_after (wrapper)", 0); + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_value,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(4, 747, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 747, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "insert_after", 0) < (0)) __PYX_ERR(4, 747, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("insert_after", 1, 1, 1, i); __PYX_ERR(4, 747, __pyx_L3_error) } + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 747, __pyx_L3_error) + } + __pyx_v_value = ((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)values[0]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("insert_after", 1, 1, 1, __pyx_nargs); __PYX_ERR(4, 747, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.insert_after", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_value), __pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborNode, 1, "value", 0))) __PYX_ERR(4, 747, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6lexbor_10LexborNode_76insert_after(((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_v_self), __pyx_v_value); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_76insert_after(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self, struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_value) { + lxb_dom_node_t *__pyx_v_new_node; + PyObject *__pyx_v_bytes_val = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + lxb_char_t *__pyx_t_4; + Py_ssize_t __pyx_t_5; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + size_t __pyx_t_8; + PyObject *__pyx_t_9 = NULL; + PyObject *__pyx_t_10 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__pyx_fuse_2insert_after", 0); + + /* "selectolax/lexbor/node.pxi":777 + * cdef lxb_dom_node_t * new_node + * + * if isinstance(value, (str, bytes, unicode)): # <<<<<<<<<<<<<< + * bytes_val = to_bytes(value) + * new_node = lxb_dom_document_create_text_node( +*/ + __pyx_t_2 = PyUnicode_Check(((PyObject *)__pyx_v_value)); + if (!__pyx_t_2) { + } else { + __pyx_t_1 = __pyx_t_2; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_2 = PyBytes_Check(((PyObject *)__pyx_v_value)); + __pyx_t_1 = __pyx_t_2; + __pyx_L4_bool_binop_done:; + if (__pyx_t_1) { + + /* "selectolax/lexbor/node.pxi":778 + * + * if isinstance(value, (str, bytes, unicode)): + * bytes_val = to_bytes(value) # <<<<<<<<<<<<<< + * new_node = lxb_dom_document_create_text_node( + * &self.parser.document.dom_document, +*/ + __pyx_t_3 = __pyx_fuse_2__pyx_f_10selectolax_6lexbor_to_bytes(__pyx_v_value); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 778, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_v_bytes_val = ((PyObject*)__pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/lexbor/node.pxi":781 + * new_node = lxb_dom_document_create_text_node( + * &self.parser.document.dom_document, + * bytes_val, len(bytes_val) # <<<<<<<<<<<<<< + * ) + * if new_node == NULL: +*/ + if (unlikely(__pyx_v_bytes_val == Py_None)) { + PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); + __PYX_ERR(4, 781, __pyx_L1_error) + } + __pyx_t_4 = __Pyx_PyBytes_AsWritableUString(__pyx_v_bytes_val); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(4, 781, __pyx_L1_error) + if (unlikely(__pyx_v_bytes_val == Py_None)) { + PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); + __PYX_ERR(4, 781, __pyx_L1_error) + } + __pyx_t_5 = __Pyx_PyBytes_GET_SIZE(__pyx_v_bytes_val); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(4, 781, __pyx_L1_error) + + /* "selectolax/lexbor/node.pxi":779 + * if isinstance(value, (str, bytes, unicode)): + * bytes_val = to_bytes(value) + * new_node = lxb_dom_document_create_text_node( # <<<<<<<<<<<<<< + * &self.parser.document.dom_document, + * bytes_val, len(bytes_val) +*/ + __pyx_v_new_node = ((lxb_dom_node_t *)lxb_dom_document_create_text_node((&__pyx_v_self->parser->document->dom_document), ((lxb_char_t *)__pyx_t_4), __pyx_t_5)); + + /* "selectolax/lexbor/node.pxi":783 + * bytes_val, len(bytes_val) + * ) + * if new_node == NULL: # <<<<<<<<<<<<<< + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_after(self.node, new_node) +*/ + __pyx_t_1 = (__pyx_v_new_node == NULL); + if (unlikely(__pyx_t_1)) { + + /* "selectolax/lexbor/node.pxi":784 + * ) + * if new_node == NULL: + * raise SelectolaxError("Can't create a new node") # <<<<<<<<<<<<<< + * lxb_dom_node_insert_after(self.node, new_node) + * elif isinstance(value, LexborNode): +*/ + __pyx_t_6 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_SelectolaxError); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 784, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_8 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_7))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7); + assert(__pyx_t_6); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_7, __pyx__function); + __pyx_t_8 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_mstate_global->__pyx_kp_u_Can_t_create_a_new_node}; + __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 784, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(4, 784, __pyx_L1_error) + + /* "selectolax/lexbor/node.pxi":783 + * bytes_val, len(bytes_val) + * ) + * if new_node == NULL: # <<<<<<<<<<<<<< + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_after(self.node, new_node) +*/ + } + + /* "selectolax/lexbor/node.pxi":785 + * if new_node == NULL: + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_after(self.node, new_node) # <<<<<<<<<<<<<< + * elif isinstance(value, LexborNode): + * new_node = lxb_dom_document_import_node( +*/ + lxb_dom_node_insert_after(__pyx_v_self->node, __pyx_v_new_node); + + /* "selectolax/lexbor/node.pxi":777 + * cdef lxb_dom_node_t * new_node + * + * if isinstance(value, (str, bytes, unicode)): # <<<<<<<<<<<<<< + * bytes_val = to_bytes(value) + * new_node = lxb_dom_document_create_text_node( +*/ + goto __pyx_L3; + } + + /* "selectolax/lexbor/node.pxi":786 + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_after(self.node, new_node) + * elif isinstance(value, LexborNode): # <<<<<<<<<<<<<< + * new_node = lxb_dom_document_import_node( + * &self.parser.document.dom_document, +*/ + __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_value), __pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborNode); + if (likely(__pyx_t_1)) { + + /* "selectolax/lexbor/node.pxi":787 + * lxb_dom_node_insert_after(self.node, new_node) + * elif isinstance(value, LexborNode): + * new_node = lxb_dom_document_import_node( # <<<<<<<<<<<<<< + * &self.parser.document.dom_document, + * value.node, +*/ + __pyx_v_new_node = lxb_dom_document_import_node((&__pyx_v_self->parser->document->dom_document), ((lxb_dom_node_t *)__pyx_v_value->node), 1); + + /* "selectolax/lexbor/node.pxi":792 + * True + * ) + * if new_node == NULL: # <<<<<<<<<<<<<< + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_after(self.node, new_node) +*/ + __pyx_t_1 = (__pyx_v_new_node == NULL); + if (unlikely(__pyx_t_1)) { + + /* "selectolax/lexbor/node.pxi":793 + * ) + * if new_node == NULL: + * raise SelectolaxError("Can't create a new node") # <<<<<<<<<<<<<< + * lxb_dom_node_insert_after(self.node, new_node) + * else: +*/ + __pyx_t_7 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_SelectolaxError); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 793, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_8 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); + assert(__pyx_t_7); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_6, __pyx__function); + __pyx_t_8 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_mstate_global->__pyx_kp_u_Can_t_create_a_new_node}; + __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_6, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 793, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(4, 793, __pyx_L1_error) + + /* "selectolax/lexbor/node.pxi":792 + * True + * ) + * if new_node == NULL: # <<<<<<<<<<<<<< + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_after(self.node, new_node) +*/ + } + + /* "selectolax/lexbor/node.pxi":794 + * if new_node == NULL: + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_after(self.node, new_node) # <<<<<<<<<<<<<< + * else: + * raise SelectolaxError("Expected a string or LexborNode instance, but %s found" % type(value).__name__) +*/ + lxb_dom_node_insert_after(__pyx_v_self->node, ((lxb_dom_node_t *)__pyx_v_new_node)); + + /* "selectolax/lexbor/node.pxi":786 + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_after(self.node, new_node) + * elif isinstance(value, LexborNode): # <<<<<<<<<<<<<< + * new_node = lxb_dom_document_import_node( + * &self.parser.document.dom_document, +*/ + goto __pyx_L3; + } + + /* "selectolax/lexbor/node.pxi":796 + * lxb_dom_node_insert_after(self.node, new_node) + * else: + * raise SelectolaxError("Expected a string or LexborNode instance, but %s found" % type(value).__name__) # <<<<<<<<<<<<<< + * + * def insert_child(self, str_or_LexborNode value): +*/ + /*else*/ { + __pyx_t_6 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_SelectolaxError); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 796, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_value))), __pyx_mstate_global->__pyx_n_u_name); if (unlikely(!__pyx_t_9)) __PYX_ERR(4, 796, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_10 = __Pyx_PyUnicode_FormatSafe(__pyx_mstate_global->__pyx_kp_u_Expected_a_string_or_LexborNode, __pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(4, 796, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __pyx_t_8 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_7))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7); + assert(__pyx_t_6); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_7, __pyx__function); + __pyx_t_8 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_10}; + __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 796, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(4, 796, __pyx_L1_error) + } + __pyx_L3:; + + /* "selectolax/lexbor/node.pxi":747 + * raise SelectolaxError("Expected a string or LexborNode instance, but %s found" % type(value).__name__) + * + * def insert_after(self, str_or_LexborNode value): # <<<<<<<<<<<<<< + * """ + * Insert a node after the current Node. +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_9); + __Pyx_XDECREF(__pyx_t_10); + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.insert_after", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_bytes_val); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor/node.pxi":798 + * raise SelectolaxError("Expected a string or LexborNode instance, but %s found" % type(value).__name__) + * + * def insert_child(self, str_or_LexborNode value): # <<<<<<<<<<<<<< + * """ + * Insert a node inside (at the end of) the current Node. +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_43insert_child(PyObject *__pyx_v_signatures, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6lexbor_10LexborNode_42insert_child, "LexborNode.insert_child(signatures, args, kwargs, defaults, _fused_sigindex={})\n\nInsert a node inside (at the end of) the current Node.\n\nParameters\n----------\nvalue : str, bytes or Node\n The text or Node instance to insert inside the Node.\n When a text string is passed, it's treated as text. All HTML tags will be escaped.\n Convert and pass the ``Node`` object when you want to work with HTML.\n Does not clone the ``Node`` object.\n All future changes to the passed ``Node`` object will also be taken into account.\n\nExamples\n--------\n\n>>> tree = LexborHTMLParser('
Get
')\n>>> div = tree.css_first('div')\n>>> div.insert_child('Laptop')\n>>> tree.body.child.html\n'
Get Laptop
'\n\n>>> html_parser = LexborHTMLParser('
Get
Laptop
')\n>>> html_parser2 = LexborHTMLParser('
Test
')\n>>> span_node = html_parser.css_first('span')\n>>> span_node.insert_child(html_parser2.body.child)\n
Get
Laptop
Test
'"); +static PyMethodDef __pyx_mdef_10selectolax_6lexbor_10LexborNode_43insert_child = {"insert_child", (PyCFunction)(void(*)(void))(PyCFunctionWithKeywords)__pyx_pw_10selectolax_6lexbor_10LexborNode_43insert_child, METH_VARARGS|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_10LexborNode_42insert_child}; +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_43insert_child(PyObject *__pyx_v_signatures, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_args = 0; + PyObject *__pyx_v_kwargs = 0; + CYTHON_UNUSED PyObject *__pyx_v_defaults = 0; + CYTHON_UNUSED PyObject *__pyx_v__fused_sigindex = 0; + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[4] = {0,0,0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__pyx_fused_cpdef (wrapper)", 0); + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_args,&__pyx_mstate_global->__pyx_n_u_kwargs,&__pyx_mstate_global->__pyx_n_u_defaults,&__pyx_mstate_global->__pyx_n_u_fused_sigindex,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(4, 798, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 4: + values[3] = __Pyx_ArgRef_VARARGS(__pyx_args, 3); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(4, 798, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 3: + values[2] = __Pyx_ArgRef_VARARGS(__pyx_args, 2); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(4, 798, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 2: + values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(4, 798, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 798, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__pyx_fused_cpdef", 0) < (0)) __PYX_ERR(4, 798, __pyx_L3_error) + if (!values[3]) values[3] = __Pyx_NewRef(__pyx_mstate_global->__pyx_k__8); + for (Py_ssize_t i = __pyx_nargs; i < 3; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__pyx_fused_cpdef", 0, 3, 4, i); __PYX_ERR(4, 798, __pyx_L3_error) } + } + } else { + switch (__pyx_nargs) { + case 4: + values[3] = __Pyx_ArgRef_VARARGS(__pyx_args, 3); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(4, 798, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 3: + values[2] = __Pyx_ArgRef_VARARGS(__pyx_args, 2); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(4, 798, __pyx_L3_error) + values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(4, 798, __pyx_L3_error) + values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 798, __pyx_L3_error) + break; + default: goto __pyx_L5_argtuple_error; + } + if (!values[3]) values[3] = __Pyx_NewRef(__pyx_mstate_global->__pyx_k__8); + } + __pyx_v_args = values[0]; + __pyx_v_kwargs = values[1]; + __pyx_v_defaults = values[2]; + __pyx_v__fused_sigindex = values[3]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("__pyx_fused_cpdef", 0, 3, 4, __pyx_nargs); __PYX_ERR(4, 798, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.__pyx_fused_cpdef", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_10selectolax_6lexbor_10LexborNode_42insert_child(((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_v_signatures), __pyx_v_args, __pyx_v_kwargs, __pyx_v_defaults, __pyx_v__fused_sigindex); + + /* function exit code */ + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_42insert_child(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_signatures, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs, CYTHON_UNUSED PyObject *__pyx_v_defaults, CYTHON_UNUSED PyObject *__pyx_v__fused_sigindex) { + PyObject *__pyx_v_arg = NULL; + PyObject *__pyx_v_dest_sig0 = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_t_2; + int __pyx_t_3; + Py_ssize_t __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + PyObject *__pyx_t_9[4]; + PyObject *__pyx_t_10 = NULL; + size_t __pyx_t_11; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("insert_child", 0); + __Pyx_INCREF(__pyx_v_kwargs); + __pyx_t_2 = (__pyx_v_kwargs != Py_None); + if (__pyx_t_2) { + } else { + __pyx_t_1 = __pyx_t_2; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_kwargs); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(4, 798, __pyx_L1_error) + __pyx_t_3 = (!__pyx_t_2); + __pyx_t_1 = __pyx_t_3; + __pyx_L4_bool_binop_done:; + if (__pyx_t_1) { + __Pyx_INCREF(Py_None); + __Pyx_DECREF_SET(__pyx_v_kwargs, Py_None); + } + if (unlikely(__pyx_v_args == Py_None)) { + PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); + __PYX_ERR(4, 798, __pyx_L1_error) + } + __pyx_t_4 = __Pyx_PyTuple_GET_SIZE(((PyObject*)__pyx_v_args)); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(4, 798, __pyx_L1_error) + __pyx_t_1 = (1 < __pyx_t_4); + if (__pyx_t_1) { + if (unlikely(__pyx_v_args == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(4, 798, __pyx_L1_error) + } + __pyx_t_5 = __Pyx_PyTuple_GET_ITEM(((PyObject*)__pyx_v_args), 1); + __Pyx_INCREF(__pyx_t_5); + __pyx_v_arg = __pyx_t_5; + __pyx_t_5 = 0; + goto __pyx_L6; + } + __pyx_t_3 = (__pyx_v_kwargs != Py_None); + if (__pyx_t_3) { + } else { + __pyx_t_1 = __pyx_t_3; + goto __pyx_L7_bool_binop_done; + } + if (unlikely(__pyx_v_kwargs == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); + __PYX_ERR(4, 798, __pyx_L1_error) + } + __pyx_t_3 = (__Pyx_PyDict_ContainsTF(__pyx_mstate_global->__pyx_n_u_value, ((PyObject*)__pyx_v_kwargs), Py_EQ)); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(4, 798, __pyx_L1_error) + __pyx_t_1 = __pyx_t_3; + __pyx_L7_bool_binop_done:; + if (likely(__pyx_t_1)) { + if (unlikely(__pyx_v_kwargs == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(4, 798, __pyx_L1_error) + } + __pyx_t_5 = __Pyx_PyDict_GetItem(((PyObject*)__pyx_v_kwargs), __pyx_mstate_global->__pyx_n_u_value); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 798, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_v_arg = __pyx_t_5; + __pyx_t_5 = 0; + goto __pyx_L6; + } + /*else*/ { + __pyx_t_6 = NULL; + __pyx_t_7 = __Pyx_PyUnicode_From_long(2, 0, ' ', 'd'); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 798, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + if (unlikely(__pyx_v_args == Py_None)) { + PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); + __PYX_ERR(4, 798, __pyx_L1_error) + } + __pyx_t_4 = __Pyx_PyTuple_GET_SIZE(((PyObject*)__pyx_v_args)); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(4, 798, __pyx_L1_error) + __pyx_t_8 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_t_4, 0, ' ', 'd'); if (unlikely(!__pyx_t_8)) __PYX_ERR(4, 798, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_9[0] = __pyx_mstate_global->__pyx_kp_u_Expected_at_least; + __pyx_t_9[1] = __pyx_t_7; + __pyx_t_9[2] = __pyx_mstate_global->__pyx_kp_u_arguments_got; + __pyx_t_9[3] = __pyx_t_8; + __pyx_t_10 = __Pyx_PyUnicode_Join(__pyx_t_9, 4, 18 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_7) + 16 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_8), 127); + if (unlikely(!__pyx_t_10)) __PYX_ERR(4, 798, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_11 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_10}; + __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __pyx_callargs+__pyx_t_11, (2-__pyx_t_11) | (__pyx_t_11*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 798, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + } + __Pyx_Raise(__pyx_t_5, 0, 0, 0); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __PYX_ERR(4, 798, __pyx_L1_error) + } + __pyx_L6:; + __pyx_t_5 = __pyx_ff_map_fused_ee27be_1_3_242639__11__dunderbuiltin__dunder_PyObject__ptr__and_1__etc(__pyx_v_arg); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 798, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_v_dest_sig0 = ((PyObject*)__pyx_t_5); + __pyx_t_5 = 0; + __Pyx_XDECREF(__pyx_r); + __pyx_t_5 = __pyx_ff_match_signatures_single(((PyObject*)__pyx_v_signatures), __pyx_v_dest_sig0); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 798, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_r = __pyx_t_5; + __pyx_t_5 = 0; + goto __pyx_L0; + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_XDECREF(__pyx_t_10); + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.__pyx_fused_cpdef", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_arg); + __Pyx_XDECREF(__pyx_v_dest_sig0); + __Pyx_XDECREF(__pyx_v_kwargs); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static PyObject *__pyx_fuse_0__pyx_pw_10selectolax_6lexbor_10LexborNode_81insert_child(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static PyMethodDef __pyx_fuse_0__pyx_mdef_10selectolax_6lexbor_10LexborNode_81insert_child = {"__pyx_fuse_0insert_child", (PyCFunction)(void(*)(void))(PyCFunctionWithKeywords)__pyx_fuse_0__pyx_pw_10selectolax_6lexbor_10LexborNode_81insert_child, METH_VARARGS|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_10LexborNode_42insert_child}; +static PyObject *__pyx_fuse_0__pyx_pw_10selectolax_6lexbor_10LexborNode_81insert_child(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_value = 0; + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("insert_child (wrapper)", 0); + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_value,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(4, 798, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 798, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "insert_child", 0) < (0)) __PYX_ERR(4, 798, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("insert_child", 1, 1, 1, i); __PYX_ERR(4, 798, __pyx_L3_error) } + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 798, __pyx_L3_error) + } + __pyx_v_value = ((PyObject*)values[0]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("insert_child", 1, 1, 1, __pyx_nargs); __PYX_ERR(4, 798, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.insert_child", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_value), (&PyUnicode_Type), 1, "value", 1))) __PYX_ERR(4, 798, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6lexbor_10LexborNode_80insert_child(((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_v_self), __pyx_v_value); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_80insert_child(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self, PyObject *__pyx_v_value) { + lxb_dom_node_t *__pyx_v_new_node; + PyObject *__pyx_v_bytes_val = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + lxb_char_t *__pyx_t_4; + Py_ssize_t __pyx_t_5; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + size_t __pyx_t_8; + PyObject *__pyx_t_9 = NULL; + PyObject *__pyx_t_10 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__pyx_fuse_0insert_child", 0); + + /* "selectolax/lexbor/node.pxi":828 + * cdef lxb_dom_node_t * new_node + * + * if isinstance(value, (str, bytes, unicode)): # <<<<<<<<<<<<<< + * bytes_val = to_bytes(value) + * new_node = lxb_dom_document_create_text_node( +*/ + __pyx_t_2 = PyUnicode_Check(__pyx_v_value); + if (!__pyx_t_2) { + } else { + __pyx_t_1 = __pyx_t_2; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_2 = PyBytes_Check(__pyx_v_value); + __pyx_t_1 = __pyx_t_2; + __pyx_L4_bool_binop_done:; + if (__pyx_t_1) { + + /* "selectolax/lexbor/node.pxi":829 + * + * if isinstance(value, (str, bytes, unicode)): + * bytes_val = to_bytes(value) # <<<<<<<<<<<<<< + * new_node = lxb_dom_document_create_text_node( + * &self.parser.document.dom_document, +*/ + __pyx_t_3 = __pyx_fuse_0__pyx_f_10selectolax_6lexbor_to_bytes(__pyx_v_value); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 829, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_v_bytes_val = ((PyObject*)__pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/lexbor/node.pxi":832 + * new_node = lxb_dom_document_create_text_node( + * &self.parser.document.dom_document, + * bytes_val, len(bytes_val) # <<<<<<<<<<<<<< + * ) + * if new_node == NULL: +*/ + if (unlikely(__pyx_v_bytes_val == Py_None)) { + PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); + __PYX_ERR(4, 832, __pyx_L1_error) + } + __pyx_t_4 = __Pyx_PyBytes_AsWritableUString(__pyx_v_bytes_val); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(4, 832, __pyx_L1_error) + if (unlikely(__pyx_v_bytes_val == Py_None)) { + PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); + __PYX_ERR(4, 832, __pyx_L1_error) + } + __pyx_t_5 = __Pyx_PyBytes_GET_SIZE(__pyx_v_bytes_val); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(4, 832, __pyx_L1_error) + + /* "selectolax/lexbor/node.pxi":830 + * if isinstance(value, (str, bytes, unicode)): + * bytes_val = to_bytes(value) + * new_node = lxb_dom_document_create_text_node( # <<<<<<<<<<<<<< + * &self.parser.document.dom_document, + * bytes_val, len(bytes_val) +*/ + __pyx_v_new_node = ((lxb_dom_node_t *)lxb_dom_document_create_text_node((&__pyx_v_self->parser->document->dom_document), ((lxb_char_t *)__pyx_t_4), __pyx_t_5)); + + /* "selectolax/lexbor/node.pxi":834 + * bytes_val, len(bytes_val) + * ) + * if new_node == NULL: # <<<<<<<<<<<<<< + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_child(self.node, new_node) +*/ + __pyx_t_1 = (__pyx_v_new_node == NULL); + if (unlikely(__pyx_t_1)) { + + /* "selectolax/lexbor/node.pxi":835 + * ) + * if new_node == NULL: + * raise SelectolaxError("Can't create a new node") # <<<<<<<<<<<<<< + * lxb_dom_node_insert_child(self.node, new_node) + * elif isinstance(value, LexborNode): +*/ + __pyx_t_6 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_SelectolaxError); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 835, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_8 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_7))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7); + assert(__pyx_t_6); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_7, __pyx__function); + __pyx_t_8 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_mstate_global->__pyx_kp_u_Can_t_create_a_new_node}; + __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 835, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(4, 835, __pyx_L1_error) + + /* "selectolax/lexbor/node.pxi":834 + * bytes_val, len(bytes_val) + * ) + * if new_node == NULL: # <<<<<<<<<<<<<< + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_child(self.node, new_node) +*/ + } + + /* "selectolax/lexbor/node.pxi":836 + * if new_node == NULL: + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_child(self.node, new_node) # <<<<<<<<<<<<<< + * elif isinstance(value, LexborNode): + * new_node = lxb_dom_document_import_node( +*/ + lxb_dom_node_insert_child(__pyx_v_self->node, __pyx_v_new_node); + + /* "selectolax/lexbor/node.pxi":828 + * cdef lxb_dom_node_t * new_node + * + * if isinstance(value, (str, bytes, unicode)): # <<<<<<<<<<<<<< + * bytes_val = to_bytes(value) + * new_node = lxb_dom_document_create_text_node( +*/ + goto __pyx_L3; + } + + /* "selectolax/lexbor/node.pxi":837 + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_child(self.node, new_node) + * elif isinstance(value, LexborNode): # <<<<<<<<<<<<<< + * new_node = lxb_dom_document_import_node( + * &self.parser.document.dom_document, +*/ + __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_value, __pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborNode); + if (likely(__pyx_t_1)) { + + /* "selectolax/lexbor/node.pxi":840 + * new_node = lxb_dom_document_import_node( + * &self.parser.document.dom_document, + * value.node, # <<<<<<<<<<<<<< + * True + * ) +*/ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_value, __pyx_mstate_global->__pyx_n_u_node); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 840, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + + /* "selectolax/lexbor/node.pxi":838 + * lxb_dom_node_insert_child(self.node, new_node) + * elif isinstance(value, LexborNode): + * new_node = lxb_dom_document_import_node( # <<<<<<<<<<<<<< + * &self.parser.document.dom_document, + * value.node, +*/ + __pyx_v_new_node = lxb_dom_document_import_node((&__pyx_v_self->parser->document->dom_document), ((lxb_dom_node_t *)__pyx_t_3), 1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "selectolax/lexbor/node.pxi":843 + * True + * ) + * if new_node == NULL: # <<<<<<<<<<<<<< + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_child(self.node, new_node) +*/ + __pyx_t_1 = (__pyx_v_new_node == NULL); + if (unlikely(__pyx_t_1)) { + + /* "selectolax/lexbor/node.pxi":844 + * ) + * if new_node == NULL: + * raise SelectolaxError("Can't create a new node") # <<<<<<<<<<<<<< + * lxb_dom_node_insert_child(self.node, new_node) + * else: +*/ + __pyx_t_7 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_SelectolaxError); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 844, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_8 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); + assert(__pyx_t_7); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_6, __pyx__function); + __pyx_t_8 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_mstate_global->__pyx_kp_u_Can_t_create_a_new_node}; + __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_6, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 844, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(4, 844, __pyx_L1_error) + + /* "selectolax/lexbor/node.pxi":843 + * True + * ) + * if new_node == NULL: # <<<<<<<<<<<<<< + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_child(self.node, new_node) +*/ + } + + /* "selectolax/lexbor/node.pxi":845 + * if new_node == NULL: + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_child(self.node, new_node) # <<<<<<<<<<<<<< + * else: + * raise SelectolaxError("Expected a string or LexborNode instance, but %s found" % type(value).__name__) +*/ + lxb_dom_node_insert_child(__pyx_v_self->node, ((lxb_dom_node_t *)__pyx_v_new_node)); + + /* "selectolax/lexbor/node.pxi":837 + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_child(self.node, new_node) + * elif isinstance(value, LexborNode): # <<<<<<<<<<<<<< + * new_node = lxb_dom_document_import_node( + * &self.parser.document.dom_document, +*/ + goto __pyx_L3; + } + + /* "selectolax/lexbor/node.pxi":847 + * lxb_dom_node_insert_child(self.node, new_node) + * else: + * raise SelectolaxError("Expected a string or LexborNode instance, but %s found" % type(value).__name__) # <<<<<<<<<<<<<< + * + * @property +*/ + /*else*/ { + __pyx_t_6 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_SelectolaxError); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 847, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(__pyx_v_value)), __pyx_mstate_global->__pyx_n_u_name); if (unlikely(!__pyx_t_9)) __PYX_ERR(4, 847, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_10 = __Pyx_PyUnicode_FormatSafe(__pyx_mstate_global->__pyx_kp_u_Expected_a_string_or_LexborNode, __pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(4, 847, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __pyx_t_8 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_7))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7); + assert(__pyx_t_6); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_7, __pyx__function); + __pyx_t_8 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_10}; + __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 847, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(4, 847, __pyx_L1_error) + } + __pyx_L3:; + + /* "selectolax/lexbor/node.pxi":798 + * raise SelectolaxError("Expected a string or LexborNode instance, but %s found" % type(value).__name__) + * + * def insert_child(self, str_or_LexborNode value): # <<<<<<<<<<<<<< + * """ + * Insert a node inside (at the end of) the current Node. +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_9); + __Pyx_XDECREF(__pyx_t_10); + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.insert_child", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_bytes_val); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static PyObject *__pyx_fuse_1__pyx_pw_10selectolax_6lexbor_10LexborNode_83insert_child(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static PyMethodDef __pyx_fuse_1__pyx_mdef_10selectolax_6lexbor_10LexborNode_83insert_child = {"__pyx_fuse_1insert_child", (PyCFunction)(void(*)(void))(PyCFunctionWithKeywords)__pyx_fuse_1__pyx_pw_10selectolax_6lexbor_10LexborNode_83insert_child, METH_VARARGS|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_10LexborNode_42insert_child}; +static PyObject *__pyx_fuse_1__pyx_pw_10selectolax_6lexbor_10LexborNode_83insert_child(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_value = 0; + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("insert_child (wrapper)", 0); + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_value,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(4, 798, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 798, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "insert_child", 0) < (0)) __PYX_ERR(4, 798, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("insert_child", 1, 1, 1, i); __PYX_ERR(4, 798, __pyx_L3_error) } + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 798, __pyx_L3_error) + } + __pyx_v_value = ((PyObject*)values[0]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("insert_child", 1, 1, 1, __pyx_nargs); __PYX_ERR(4, 798, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.insert_child", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_value), (&PyBytes_Type), 1, "value", 1))) __PYX_ERR(4, 798, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6lexbor_10LexborNode_82insert_child(((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_v_self), __pyx_v_value); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_82insert_child(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self, PyObject *__pyx_v_value) { + lxb_dom_node_t *__pyx_v_new_node; + PyObject *__pyx_v_bytes_val = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + lxb_char_t *__pyx_t_4; + Py_ssize_t __pyx_t_5; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + size_t __pyx_t_8; + PyObject *__pyx_t_9 = NULL; + PyObject *__pyx_t_10 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__pyx_fuse_1insert_child", 0); + + /* "selectolax/lexbor/node.pxi":828 + * cdef lxb_dom_node_t * new_node + * + * if isinstance(value, (str, bytes, unicode)): # <<<<<<<<<<<<<< + * bytes_val = to_bytes(value) + * new_node = lxb_dom_document_create_text_node( +*/ + __pyx_t_2 = PyUnicode_Check(__pyx_v_value); + if (!__pyx_t_2) { + } else { + __pyx_t_1 = __pyx_t_2; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_2 = PyBytes_Check(__pyx_v_value); + __pyx_t_1 = __pyx_t_2; + __pyx_L4_bool_binop_done:; + if (__pyx_t_1) { + + /* "selectolax/lexbor/node.pxi":829 + * + * if isinstance(value, (str, bytes, unicode)): + * bytes_val = to_bytes(value) # <<<<<<<<<<<<<< + * new_node = lxb_dom_document_create_text_node( + * &self.parser.document.dom_document, +*/ + __pyx_t_3 = __pyx_fuse_1__pyx_f_10selectolax_6lexbor_to_bytes(__pyx_v_value); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 829, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_v_bytes_val = ((PyObject*)__pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/lexbor/node.pxi":832 + * new_node = lxb_dom_document_create_text_node( + * &self.parser.document.dom_document, + * bytes_val, len(bytes_val) # <<<<<<<<<<<<<< + * ) + * if new_node == NULL: +*/ + if (unlikely(__pyx_v_bytes_val == Py_None)) { + PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); + __PYX_ERR(4, 832, __pyx_L1_error) + } + __pyx_t_4 = __Pyx_PyBytes_AsWritableUString(__pyx_v_bytes_val); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(4, 832, __pyx_L1_error) + if (unlikely(__pyx_v_bytes_val == Py_None)) { + PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); + __PYX_ERR(4, 832, __pyx_L1_error) + } + __pyx_t_5 = __Pyx_PyBytes_GET_SIZE(__pyx_v_bytes_val); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(4, 832, __pyx_L1_error) + + /* "selectolax/lexbor/node.pxi":830 + * if isinstance(value, (str, bytes, unicode)): + * bytes_val = to_bytes(value) + * new_node = lxb_dom_document_create_text_node( # <<<<<<<<<<<<<< + * &self.parser.document.dom_document, + * bytes_val, len(bytes_val) +*/ + __pyx_v_new_node = ((lxb_dom_node_t *)lxb_dom_document_create_text_node((&__pyx_v_self->parser->document->dom_document), ((lxb_char_t *)__pyx_t_4), __pyx_t_5)); + + /* "selectolax/lexbor/node.pxi":834 + * bytes_val, len(bytes_val) + * ) + * if new_node == NULL: # <<<<<<<<<<<<<< + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_child(self.node, new_node) +*/ + __pyx_t_1 = (__pyx_v_new_node == NULL); + if (unlikely(__pyx_t_1)) { + + /* "selectolax/lexbor/node.pxi":835 + * ) + * if new_node == NULL: + * raise SelectolaxError("Can't create a new node") # <<<<<<<<<<<<<< + * lxb_dom_node_insert_child(self.node, new_node) + * elif isinstance(value, LexborNode): +*/ + __pyx_t_6 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_SelectolaxError); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 835, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_8 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_7))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7); + assert(__pyx_t_6); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_7, __pyx__function); + __pyx_t_8 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_mstate_global->__pyx_kp_u_Can_t_create_a_new_node}; + __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 835, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(4, 835, __pyx_L1_error) + + /* "selectolax/lexbor/node.pxi":834 + * bytes_val, len(bytes_val) + * ) + * if new_node == NULL: # <<<<<<<<<<<<<< + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_child(self.node, new_node) +*/ + } + + /* "selectolax/lexbor/node.pxi":836 + * if new_node == NULL: + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_child(self.node, new_node) # <<<<<<<<<<<<<< + * elif isinstance(value, LexborNode): + * new_node = lxb_dom_document_import_node( +*/ + lxb_dom_node_insert_child(__pyx_v_self->node, __pyx_v_new_node); + + /* "selectolax/lexbor/node.pxi":828 + * cdef lxb_dom_node_t * new_node + * + * if isinstance(value, (str, bytes, unicode)): # <<<<<<<<<<<<<< + * bytes_val = to_bytes(value) + * new_node = lxb_dom_document_create_text_node( +*/ + goto __pyx_L3; + } + + /* "selectolax/lexbor/node.pxi":837 + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_child(self.node, new_node) + * elif isinstance(value, LexborNode): # <<<<<<<<<<<<<< + * new_node = lxb_dom_document_import_node( + * &self.parser.document.dom_document, +*/ + __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_value, __pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborNode); + if (likely(__pyx_t_1)) { + + /* "selectolax/lexbor/node.pxi":840 + * new_node = lxb_dom_document_import_node( + * &self.parser.document.dom_document, + * value.node, # <<<<<<<<<<<<<< + * True + * ) +*/ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_value, __pyx_mstate_global->__pyx_n_u_node); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 840, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + + /* "selectolax/lexbor/node.pxi":838 + * lxb_dom_node_insert_child(self.node, new_node) + * elif isinstance(value, LexborNode): + * new_node = lxb_dom_document_import_node( # <<<<<<<<<<<<<< + * &self.parser.document.dom_document, + * value.node, +*/ + __pyx_v_new_node = lxb_dom_document_import_node((&__pyx_v_self->parser->document->dom_document), ((lxb_dom_node_t *)__pyx_t_3), 1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "selectolax/lexbor/node.pxi":843 + * True + * ) + * if new_node == NULL: # <<<<<<<<<<<<<< + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_child(self.node, new_node) +*/ + __pyx_t_1 = (__pyx_v_new_node == NULL); + if (unlikely(__pyx_t_1)) { + + /* "selectolax/lexbor/node.pxi":844 + * ) + * if new_node == NULL: + * raise SelectolaxError("Can't create a new node") # <<<<<<<<<<<<<< + * lxb_dom_node_insert_child(self.node, new_node) + * else: +*/ + __pyx_t_7 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_SelectolaxError); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 844, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_8 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); + assert(__pyx_t_7); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_6, __pyx__function); + __pyx_t_8 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_mstate_global->__pyx_kp_u_Can_t_create_a_new_node}; + __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_6, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 844, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(4, 844, __pyx_L1_error) + + /* "selectolax/lexbor/node.pxi":843 + * True + * ) + * if new_node == NULL: # <<<<<<<<<<<<<< + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_child(self.node, new_node) +*/ + } + + /* "selectolax/lexbor/node.pxi":845 + * if new_node == NULL: + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_child(self.node, new_node) # <<<<<<<<<<<<<< + * else: + * raise SelectolaxError("Expected a string or LexborNode instance, but %s found" % type(value).__name__) +*/ + lxb_dom_node_insert_child(__pyx_v_self->node, ((lxb_dom_node_t *)__pyx_v_new_node)); + + /* "selectolax/lexbor/node.pxi":837 + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_child(self.node, new_node) + * elif isinstance(value, LexborNode): # <<<<<<<<<<<<<< + * new_node = lxb_dom_document_import_node( + * &self.parser.document.dom_document, +*/ + goto __pyx_L3; + } + + /* "selectolax/lexbor/node.pxi":847 + * lxb_dom_node_insert_child(self.node, new_node) + * else: + * raise SelectolaxError("Expected a string or LexborNode instance, but %s found" % type(value).__name__) # <<<<<<<<<<<<<< + * + * @property +*/ + /*else*/ { + __pyx_t_6 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_SelectolaxError); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 847, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(__pyx_v_value)), __pyx_mstate_global->__pyx_n_u_name); if (unlikely(!__pyx_t_9)) __PYX_ERR(4, 847, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_10 = __Pyx_PyUnicode_FormatSafe(__pyx_mstate_global->__pyx_kp_u_Expected_a_string_or_LexborNode, __pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(4, 847, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __pyx_t_8 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_7))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7); + assert(__pyx_t_6); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_7, __pyx__function); + __pyx_t_8 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_10}; + __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 847, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(4, 847, __pyx_L1_error) + } + __pyx_L3:; + + /* "selectolax/lexbor/node.pxi":798 + * raise SelectolaxError("Expected a string or LexborNode instance, but %s found" % type(value).__name__) + * + * def insert_child(self, str_or_LexborNode value): # <<<<<<<<<<<<<< + * """ + * Insert a node inside (at the end of) the current Node. +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_9); + __Pyx_XDECREF(__pyx_t_10); + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.insert_child", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_bytes_val); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static PyObject *__pyx_fuse_2__pyx_pw_10selectolax_6lexbor_10LexborNode_85insert_child(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static PyMethodDef __pyx_fuse_2__pyx_mdef_10selectolax_6lexbor_10LexborNode_85insert_child = {"__pyx_fuse_2insert_child", (PyCFunction)(void(*)(void))(PyCFunctionWithKeywords)__pyx_fuse_2__pyx_pw_10selectolax_6lexbor_10LexborNode_85insert_child, METH_VARARGS|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_10LexborNode_42insert_child}; +static PyObject *__pyx_fuse_2__pyx_pw_10selectolax_6lexbor_10LexborNode_85insert_child(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_value = 0; + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("insert_child (wrapper)", 0); + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_value,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(4, 798, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 798, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "insert_child", 0) < (0)) __PYX_ERR(4, 798, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("insert_child", 1, 1, 1, i); __PYX_ERR(4, 798, __pyx_L3_error) } + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 798, __pyx_L3_error) + } + __pyx_v_value = ((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)values[0]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("insert_child", 1, 1, 1, __pyx_nargs); __PYX_ERR(4, 798, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.insert_child", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_value), __pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborNode, 1, "value", 0))) __PYX_ERR(4, 798, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6lexbor_10LexborNode_84insert_child(((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_v_self), __pyx_v_value); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_84insert_child(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self, struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_value) { + lxb_dom_node_t *__pyx_v_new_node; + PyObject *__pyx_v_bytes_val = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + lxb_char_t *__pyx_t_4; + Py_ssize_t __pyx_t_5; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + size_t __pyx_t_8; + PyObject *__pyx_t_9 = NULL; + PyObject *__pyx_t_10 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__pyx_fuse_2insert_child", 0); + + /* "selectolax/lexbor/node.pxi":828 + * cdef lxb_dom_node_t * new_node + * + * if isinstance(value, (str, bytes, unicode)): # <<<<<<<<<<<<<< + * bytes_val = to_bytes(value) + * new_node = lxb_dom_document_create_text_node( +*/ + __pyx_t_2 = PyUnicode_Check(((PyObject *)__pyx_v_value)); + if (!__pyx_t_2) { + } else { + __pyx_t_1 = __pyx_t_2; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_2 = PyBytes_Check(((PyObject *)__pyx_v_value)); + __pyx_t_1 = __pyx_t_2; + __pyx_L4_bool_binop_done:; + if (__pyx_t_1) { + + /* "selectolax/lexbor/node.pxi":829 + * + * if isinstance(value, (str, bytes, unicode)): + * bytes_val = to_bytes(value) # <<<<<<<<<<<<<< + * new_node = lxb_dom_document_create_text_node( + * &self.parser.document.dom_document, +*/ + __pyx_t_3 = __pyx_fuse_2__pyx_f_10selectolax_6lexbor_to_bytes(__pyx_v_value); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 829, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_v_bytes_val = ((PyObject*)__pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/lexbor/node.pxi":832 + * new_node = lxb_dom_document_create_text_node( + * &self.parser.document.dom_document, + * bytes_val, len(bytes_val) # <<<<<<<<<<<<<< + * ) + * if new_node == NULL: +*/ + if (unlikely(__pyx_v_bytes_val == Py_None)) { + PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); + __PYX_ERR(4, 832, __pyx_L1_error) + } + __pyx_t_4 = __Pyx_PyBytes_AsWritableUString(__pyx_v_bytes_val); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(4, 832, __pyx_L1_error) + if (unlikely(__pyx_v_bytes_val == Py_None)) { + PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); + __PYX_ERR(4, 832, __pyx_L1_error) + } + __pyx_t_5 = __Pyx_PyBytes_GET_SIZE(__pyx_v_bytes_val); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(4, 832, __pyx_L1_error) + + /* "selectolax/lexbor/node.pxi":830 + * if isinstance(value, (str, bytes, unicode)): + * bytes_val = to_bytes(value) + * new_node = lxb_dom_document_create_text_node( # <<<<<<<<<<<<<< + * &self.parser.document.dom_document, + * bytes_val, len(bytes_val) +*/ + __pyx_v_new_node = ((lxb_dom_node_t *)lxb_dom_document_create_text_node((&__pyx_v_self->parser->document->dom_document), ((lxb_char_t *)__pyx_t_4), __pyx_t_5)); + + /* "selectolax/lexbor/node.pxi":834 + * bytes_val, len(bytes_val) + * ) + * if new_node == NULL: # <<<<<<<<<<<<<< + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_child(self.node, new_node) +*/ + __pyx_t_1 = (__pyx_v_new_node == NULL); + if (unlikely(__pyx_t_1)) { + + /* "selectolax/lexbor/node.pxi":835 + * ) + * if new_node == NULL: + * raise SelectolaxError("Can't create a new node") # <<<<<<<<<<<<<< + * lxb_dom_node_insert_child(self.node, new_node) + * elif isinstance(value, LexborNode): +*/ + __pyx_t_6 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_SelectolaxError); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 835, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_8 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_7))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7); + assert(__pyx_t_6); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_7, __pyx__function); + __pyx_t_8 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_mstate_global->__pyx_kp_u_Can_t_create_a_new_node}; + __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 835, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(4, 835, __pyx_L1_error) + + /* "selectolax/lexbor/node.pxi":834 + * bytes_val, len(bytes_val) + * ) + * if new_node == NULL: # <<<<<<<<<<<<<< + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_child(self.node, new_node) +*/ + } + + /* "selectolax/lexbor/node.pxi":836 + * if new_node == NULL: + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_child(self.node, new_node) # <<<<<<<<<<<<<< + * elif isinstance(value, LexborNode): + * new_node = lxb_dom_document_import_node( +*/ + lxb_dom_node_insert_child(__pyx_v_self->node, __pyx_v_new_node); + + /* "selectolax/lexbor/node.pxi":828 + * cdef lxb_dom_node_t * new_node + * + * if isinstance(value, (str, bytes, unicode)): # <<<<<<<<<<<<<< + * bytes_val = to_bytes(value) + * new_node = lxb_dom_document_create_text_node( +*/ + goto __pyx_L3; + } + + /* "selectolax/lexbor/node.pxi":837 + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_child(self.node, new_node) + * elif isinstance(value, LexborNode): # <<<<<<<<<<<<<< + * new_node = lxb_dom_document_import_node( + * &self.parser.document.dom_document, +*/ + __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_value), __pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborNode); + if (likely(__pyx_t_1)) { + + /* "selectolax/lexbor/node.pxi":838 + * lxb_dom_node_insert_child(self.node, new_node) + * elif isinstance(value, LexborNode): + * new_node = lxb_dom_document_import_node( # <<<<<<<<<<<<<< + * &self.parser.document.dom_document, + * value.node, +*/ + __pyx_v_new_node = lxb_dom_document_import_node((&__pyx_v_self->parser->document->dom_document), ((lxb_dom_node_t *)__pyx_v_value->node), 1); + + /* "selectolax/lexbor/node.pxi":843 + * True + * ) + * if new_node == NULL: # <<<<<<<<<<<<<< + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_child(self.node, new_node) +*/ + __pyx_t_1 = (__pyx_v_new_node == NULL); + if (unlikely(__pyx_t_1)) { + + /* "selectolax/lexbor/node.pxi":844 + * ) + * if new_node == NULL: + * raise SelectolaxError("Can't create a new node") # <<<<<<<<<<<<<< + * lxb_dom_node_insert_child(self.node, new_node) + * else: +*/ + __pyx_t_7 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_SelectolaxError); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 844, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_8 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); + assert(__pyx_t_7); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_6, __pyx__function); + __pyx_t_8 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_mstate_global->__pyx_kp_u_Can_t_create_a_new_node}; + __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_6, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 844, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(4, 844, __pyx_L1_error) + + /* "selectolax/lexbor/node.pxi":843 + * True + * ) + * if new_node == NULL: # <<<<<<<<<<<<<< + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_child(self.node, new_node) +*/ + } + + /* "selectolax/lexbor/node.pxi":845 + * if new_node == NULL: + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_child(self.node, new_node) # <<<<<<<<<<<<<< + * else: + * raise SelectolaxError("Expected a string or LexborNode instance, but %s found" % type(value).__name__) +*/ + lxb_dom_node_insert_child(__pyx_v_self->node, ((lxb_dom_node_t *)__pyx_v_new_node)); + + /* "selectolax/lexbor/node.pxi":837 + * raise SelectolaxError("Can't create a new node") + * lxb_dom_node_insert_child(self.node, new_node) + * elif isinstance(value, LexborNode): # <<<<<<<<<<<<<< + * new_node = lxb_dom_document_import_node( + * &self.parser.document.dom_document, +*/ + goto __pyx_L3; + } + + /* "selectolax/lexbor/node.pxi":847 + * lxb_dom_node_insert_child(self.node, new_node) + * else: + * raise SelectolaxError("Expected a string or LexborNode instance, but %s found" % type(value).__name__) # <<<<<<<<<<<<<< + * + * @property +*/ + /*else*/ { + __pyx_t_6 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_SelectolaxError); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 847, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_value))), __pyx_mstate_global->__pyx_n_u_name); if (unlikely(!__pyx_t_9)) __PYX_ERR(4, 847, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_10 = __Pyx_PyUnicode_FormatSafe(__pyx_mstate_global->__pyx_kp_u_Expected_a_string_or_LexborNode, __pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(4, 847, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __pyx_t_8 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_7))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7); + assert(__pyx_t_6); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_7, __pyx__function); + __pyx_t_8 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_10}; + __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 847, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(4, 847, __pyx_L1_error) + } + __pyx_L3:; + + /* "selectolax/lexbor/node.pxi":798 + * raise SelectolaxError("Expected a string or LexborNode instance, but %s found" % type(value).__name__) + * + * def insert_child(self, str_or_LexborNode value): # <<<<<<<<<<<<<< + * """ + * Insert a node inside (at the end of) the current Node. +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_9); + __Pyx_XDECREF(__pyx_t_10); + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.insert_child", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_bytes_val); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor/node.pxi":849 + * raise SelectolaxError("Expected a string or LexborNode instance, but %s found" % type(value).__name__) + * + * @property # <<<<<<<<<<<<<< + * def raw_value(self): + * """Return the raw (unparsed, original) value of a node. +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_9raw_value_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_9raw_value_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6lexbor_10LexborNode_9raw_value___get__(((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_9raw_value___get__(CYTHON_UNUSED struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + size_t __pyx_t_3; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + + /* "selectolax/lexbor/node.pxi":870 + * b'<test>' + * """ + * raise NotImplementedError("This features is not supported by the lexbor backend. Please use Modest backend.") # <<<<<<<<<<<<<< + * + * def scripts_contain(self, str query): +*/ + __pyx_t_2 = NULL; + __pyx_t_3 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_This_features_is_not_supported_b}; + __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_NotImplementedError)), __pyx_callargs+__pyx_t_3, (2-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 870, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __Pyx_Raise(__pyx_t_1, 0, 0, 0); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __PYX_ERR(4, 870, __pyx_L1_error) + + /* "selectolax/lexbor/node.pxi":849 + * raise SelectolaxError("Expected a string or LexborNode instance, but %s found" % type(value).__name__) + * + * @property # <<<<<<<<<<<<<< + * def raw_value(self): + * """Return the raw (unparsed, original) value of a node. +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.raw_value.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor/node.pxi":872 + * raise NotImplementedError("This features is not supported by the lexbor backend. Please use Modest backend.") + * + * def scripts_contain(self, str query): # <<<<<<<<<<<<<< + * """Returns True if any of the script tags contain specified text. + * +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_45scripts_contain(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6lexbor_10LexborNode_44scripts_contain, "LexborNode.scripts_contain(self, str query)\n\nReturns True if any of the script tags contain specified text.\n\nCaches script tags on the first call to improve performance.\n\nParameters\n----------\nquery : str\n The query to check."); +static PyMethodDef __pyx_mdef_10selectolax_6lexbor_10LexborNode_45scripts_contain = {"scripts_contain", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_10LexborNode_45scripts_contain, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_10LexborNode_44scripts_contain}; +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_45scripts_contain(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_query = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("scripts_contain (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_query,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(4, 872, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 872, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "scripts_contain", 0) < (0)) __PYX_ERR(4, 872, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("scripts_contain", 1, 1, 1, i); __PYX_ERR(4, 872, __pyx_L3_error) } + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 872, __pyx_L3_error) + } + __pyx_v_query = ((PyObject*)values[0]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("scripts_contain", 1, 1, 1, __pyx_nargs); __PYX_ERR(4, 872, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.scripts_contain", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_query), (&PyUnicode_Type), 1, "query", 1))) __PYX_ERR(4, 872, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6lexbor_10LexborNode_44scripts_contain(((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_v_self), __pyx_v_query); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_44scripts_contain(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self, PyObject *__pyx_v_query) { + struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_node = 0; + PyObject *__pyx_v_nodes = NULL; + PyObject *__pyx_v_text_nodes = NULL; + PyObject *__pyx_v_node_text = NULL; + PyObject *__pyx_v_text = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + size_t __pyx_t_5; + Py_ssize_t __pyx_t_6; + PyObject *(*__pyx_t_7)(PyObject *); + PyObject *__pyx_t_8 = NULL; + int __pyx_t_9; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("scripts_contain", 0); + + /* "selectolax/lexbor/node.pxi":884 + * """ + * cdef LexborNode node + * if self.parser.cached_script_texts is None: # <<<<<<<<<<<<<< + * nodes = self.parser.selector.find('script', self) + * text_nodes = [] +*/ + __pyx_t_1 = (__pyx_v_self->parser->cached_script_texts == Py_None); + if (__pyx_t_1) { + + /* "selectolax/lexbor/node.pxi":885 + * cdef LexborNode node + * if self.parser.cached_script_texts is None: + * nodes = self.parser.selector.find('script', self) # <<<<<<<<<<<<<< + * text_nodes = [] + * for node in nodes: +*/ + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->parser), __pyx_mstate_global->__pyx_n_u_selector); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 885, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = __pyx_t_4; + __Pyx_INCREF(__pyx_t_3); + __pyx_t_5 = 0; + { + PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_mstate_global->__pyx_n_u_script, ((PyObject *)__pyx_v_self)}; + __pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_find, __pyx_callargs+__pyx_t_5, (3-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 885, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + } + __pyx_v_nodes = __pyx_t_2; + __pyx_t_2 = 0; + + /* "selectolax/lexbor/node.pxi":886 + * if self.parser.cached_script_texts is None: + * nodes = self.parser.selector.find('script', self) + * text_nodes = [] # <<<<<<<<<<<<<< + * for node in nodes: + * node_text = node.text(deep=True) +*/ + __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 886, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_v_text_nodes = ((PyObject*)__pyx_t_2); + __pyx_t_2 = 0; + + /* "selectolax/lexbor/node.pxi":887 + * nodes = self.parser.selector.find('script', self) + * text_nodes = [] + * for node in nodes: # <<<<<<<<<<<<<< + * node_text = node.text(deep=True) + * if node_text: +*/ + if (likely(PyList_CheckExact(__pyx_v_nodes)) || PyTuple_CheckExact(__pyx_v_nodes)) { + __pyx_t_2 = __pyx_v_nodes; __Pyx_INCREF(__pyx_t_2); + __pyx_t_6 = 0; + __pyx_t_7 = NULL; + } else { + __pyx_t_6 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_nodes); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 887, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_7 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 887, __pyx_L1_error) + } + for (;;) { + if (likely(!__pyx_t_7)) { + if (likely(PyList_CheckExact(__pyx_t_2))) { + { + Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2); + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely((__pyx_temp < 0))) __PYX_ERR(4, 887, __pyx_L1_error) + #endif + if (__pyx_t_6 >= __pyx_temp) break; + } + __pyx_t_4 = __Pyx_PyList_GetItemRefFast(__pyx_t_2, __pyx_t_6, __Pyx_ReferenceSharing_OwnStrongReference); + ++__pyx_t_6; + } else { + { + Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_2); + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely((__pyx_temp < 0))) __PYX_ERR(4, 887, __pyx_L1_error) + #endif + if (__pyx_t_6 >= __pyx_temp) break; + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_4 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_6)); + #else + __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_6); + #endif + ++__pyx_t_6; + } + if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 887, __pyx_L1_error) + } else { + __pyx_t_4 = __pyx_t_7(__pyx_t_2); + if (unlikely(!__pyx_t_4)) { + PyObject* exc_type = PyErr_Occurred(); + if (exc_type) { + if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(4, 887, __pyx_L1_error) + PyErr_Clear(); + } + break; + } + } + __Pyx_GOTREF(__pyx_t_4); + if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborNode))))) __PYX_ERR(4, 887, __pyx_L1_error) + __Pyx_XDECREF_SET(__pyx_v_node, ((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_t_4)); + __pyx_t_4 = 0; + + /* "selectolax/lexbor/node.pxi":888 + * text_nodes = [] + * for node in nodes: + * node_text = node.text(deep=True) # <<<<<<<<<<<<<< + * if node_text: + * text_nodes.append(node_text) +*/ + __pyx_t_3 = ((PyObject *)__pyx_v_node); + __Pyx_INCREF(__pyx_t_3); + __pyx_t_5 = 0; + { + PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_3, NULL}; + __pyx_t_8 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(4, 888, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_deep, Py_True, __pyx_t_8, __pyx_callargs+1, 0) < (0)) __PYX_ERR(4, 888, __pyx_L1_error) + __pyx_t_4 = __Pyx_Object_VectorcallMethod_CallFromBuilder((PyObject*)__pyx_mstate_global->__pyx_n_u_text, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_8); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 888, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + } + __Pyx_XDECREF_SET(__pyx_v_node_text, __pyx_t_4); + __pyx_t_4 = 0; + + /* "selectolax/lexbor/node.pxi":889 + * for node in nodes: + * node_text = node.text(deep=True) + * if node_text: # <<<<<<<<<<<<<< + * text_nodes.append(node_text) + * self.parser.cached_script_texts = text_nodes +*/ + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_node_text); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(4, 889, __pyx_L1_error) + if (__pyx_t_1) { + + /* "selectolax/lexbor/node.pxi":890 + * node_text = node.text(deep=True) + * if node_text: + * text_nodes.append(node_text) # <<<<<<<<<<<<<< + * self.parser.cached_script_texts = text_nodes + * +*/ + __pyx_t_9 = __Pyx_PyList_Append(__pyx_v_text_nodes, __pyx_v_node_text); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(4, 890, __pyx_L1_error) + + /* "selectolax/lexbor/node.pxi":889 + * for node in nodes: + * node_text = node.text(deep=True) + * if node_text: # <<<<<<<<<<<<<< + * text_nodes.append(node_text) + * self.parser.cached_script_texts = text_nodes +*/ + } + + /* "selectolax/lexbor/node.pxi":887 + * nodes = self.parser.selector.find('script', self) + * text_nodes = [] + * for node in nodes: # <<<<<<<<<<<<<< + * node_text = node.text(deep=True) + * if node_text: +*/ + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "selectolax/lexbor/node.pxi":891 + * if node_text: + * text_nodes.append(node_text) + * self.parser.cached_script_texts = text_nodes # <<<<<<<<<<<<<< + * + * for text in self.parser.cached_script_texts: +*/ + __Pyx_INCREF(__pyx_v_text_nodes); + __Pyx_GIVEREF(__pyx_v_text_nodes); + __Pyx_GOTREF(__pyx_v_self->parser->cached_script_texts); + __Pyx_DECREF(__pyx_v_self->parser->cached_script_texts); + __pyx_v_self->parser->cached_script_texts = __pyx_v_text_nodes; + + /* "selectolax/lexbor/node.pxi":884 + * """ + * cdef LexborNode node + * if self.parser.cached_script_texts is None: # <<<<<<<<<<<<<< + * nodes = self.parser.selector.find('script', self) + * text_nodes = [] +*/ + } + + /* "selectolax/lexbor/node.pxi":893 + * self.parser.cached_script_texts = text_nodes + * + * for text in self.parser.cached_script_texts: # <<<<<<<<<<<<<< + * if query in text: + * return True +*/ + if (likely(PyList_CheckExact(__pyx_v_self->parser->cached_script_texts)) || PyTuple_CheckExact(__pyx_v_self->parser->cached_script_texts)) { + __pyx_t_2 = __pyx_v_self->parser->cached_script_texts; __Pyx_INCREF(__pyx_t_2); + __pyx_t_6 = 0; + __pyx_t_7 = NULL; + } else { + __pyx_t_6 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_self->parser->cached_script_texts); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 893, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_7 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 893, __pyx_L1_error) + } + for (;;) { + if (likely(!__pyx_t_7)) { + if (likely(PyList_CheckExact(__pyx_t_2))) { + { + Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2); + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely((__pyx_temp < 0))) __PYX_ERR(4, 893, __pyx_L1_error) + #endif + if (__pyx_t_6 >= __pyx_temp) break; + } + __pyx_t_4 = __Pyx_PyList_GetItemRefFast(__pyx_t_2, __pyx_t_6, __Pyx_ReferenceSharing_OwnStrongReference); + ++__pyx_t_6; + } else { + { + Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_2); + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely((__pyx_temp < 0))) __PYX_ERR(4, 893, __pyx_L1_error) + #endif + if (__pyx_t_6 >= __pyx_temp) break; + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_4 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_6)); + #else + __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_6); + #endif + ++__pyx_t_6; + } + if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 893, __pyx_L1_error) + } else { + __pyx_t_4 = __pyx_t_7(__pyx_t_2); + if (unlikely(!__pyx_t_4)) { + PyObject* exc_type = PyErr_Occurred(); + if (exc_type) { + if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(4, 893, __pyx_L1_error) + PyErr_Clear(); + } + break; + } + } + __Pyx_GOTREF(__pyx_t_4); + __Pyx_XDECREF_SET(__pyx_v_text, __pyx_t_4); + __pyx_t_4 = 0; + + /* "selectolax/lexbor/node.pxi":894 + * + * for text in self.parser.cached_script_texts: + * if query in text: # <<<<<<<<<<<<<< + * return True + * return False +*/ + __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_v_query, __pyx_v_text, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(4, 894, __pyx_L1_error) + if (__pyx_t_1) { + + /* "selectolax/lexbor/node.pxi":895 + * for text in self.parser.cached_script_texts: + * if query in text: + * return True # <<<<<<<<<<<<<< + * return False + * +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(Py_True); + __pyx_r = Py_True; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + goto __pyx_L0; + + /* "selectolax/lexbor/node.pxi":894 + * + * for text in self.parser.cached_script_texts: + * if query in text: # <<<<<<<<<<<<<< + * return True + * return False +*/ + } + + /* "selectolax/lexbor/node.pxi":893 + * self.parser.cached_script_texts = text_nodes + * + * for text in self.parser.cached_script_texts: # <<<<<<<<<<<<<< + * if query in text: + * return True +*/ + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "selectolax/lexbor/node.pxi":896 + * if query in text: + * return True + * return False # <<<<<<<<<<<<<< + * + * def script_srcs_contain(self, tuple queries): +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(Py_False); + __pyx_r = Py_False; + goto __pyx_L0; + + /* "selectolax/lexbor/node.pxi":872 + * raise NotImplementedError("This features is not supported by the lexbor backend. Please use Modest backend.") + * + * def scripts_contain(self, str query): # <<<<<<<<<<<<<< + * """Returns True if any of the script tags contain specified text. + * +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.scripts_contain", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF((PyObject *)__pyx_v_node); + __Pyx_XDECREF(__pyx_v_nodes); + __Pyx_XDECREF(__pyx_v_text_nodes); + __Pyx_XDECREF(__pyx_v_node_text); + __Pyx_XDECREF(__pyx_v_text); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor/node.pxi":898 + * return False + * + * def script_srcs_contain(self, tuple queries): # <<<<<<<<<<<<<< + * """Returns True if any of the script SRCs attributes contain on of the specified text. + * +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_47script_srcs_contain(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6lexbor_10LexborNode_46script_srcs_contain, "LexborNode.script_srcs_contain(self, tuple queries)\n\nReturns True if any of the script SRCs attributes contain on of the specified text.\n\nCaches values on the first call to improve performance.\n\nParameters\n----------\nqueries : tuple of str"); +static PyMethodDef __pyx_mdef_10selectolax_6lexbor_10LexborNode_47script_srcs_contain = {"script_srcs_contain", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_10LexborNode_47script_srcs_contain, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_10LexborNode_46script_srcs_contain}; +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_47script_srcs_contain(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_queries = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("script_srcs_contain (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_queries,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(4, 898, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 898, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "script_srcs_contain", 0) < (0)) __PYX_ERR(4, 898, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("script_srcs_contain", 1, 1, 1, i); __PYX_ERR(4, 898, __pyx_L3_error) } + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 898, __pyx_L3_error) + } + __pyx_v_queries = ((PyObject*)values[0]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("script_srcs_contain", 1, 1, 1, __pyx_nargs); __PYX_ERR(4, 898, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.script_srcs_contain", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_queries), (&PyTuple_Type), 1, "queries", 1))) __PYX_ERR(4, 898, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6lexbor_10LexborNode_46script_srcs_contain(((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_v_self), __pyx_v_queries); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_46script_srcs_contain(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self, PyObject *__pyx_v_queries) { + struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_node = 0; + PyObject *__pyx_v_nodes = NULL; + PyObject *__pyx_v_src_nodes = NULL; + PyObject *__pyx_v_node_src = NULL; + PyObject *__pyx_v_text = NULL; + PyObject *__pyx_v_query = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + size_t __pyx_t_5; + Py_ssize_t __pyx_t_6; + PyObject *(*__pyx_t_7)(PyObject *); + PyObject *__pyx_t_8 = NULL; + int __pyx_t_9; + Py_ssize_t __pyx_t_10; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("script_srcs_contain", 0); + + /* "selectolax/lexbor/node.pxi":909 + * """ + * cdef LexborNode node + * if self.parser.cached_script_srcs is None: # <<<<<<<<<<<<<< + * nodes = self.parser.selector.find('script', self) + * src_nodes = [] +*/ + __pyx_t_1 = (__pyx_v_self->parser->cached_script_srcs == Py_None); + if (__pyx_t_1) { + + /* "selectolax/lexbor/node.pxi":910 + * cdef LexborNode node + * if self.parser.cached_script_srcs is None: + * nodes = self.parser.selector.find('script', self) # <<<<<<<<<<<<<< + * src_nodes = [] + * for node in nodes: +*/ + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->parser), __pyx_mstate_global->__pyx_n_u_selector); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 910, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = __pyx_t_4; + __Pyx_INCREF(__pyx_t_3); + __pyx_t_5 = 0; + { + PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_mstate_global->__pyx_n_u_script, ((PyObject *)__pyx_v_self)}; + __pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_find, __pyx_callargs+__pyx_t_5, (3-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 910, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + } + __pyx_v_nodes = __pyx_t_2; + __pyx_t_2 = 0; + + /* "selectolax/lexbor/node.pxi":911 + * if self.parser.cached_script_srcs is None: + * nodes = self.parser.selector.find('script', self) + * src_nodes = [] # <<<<<<<<<<<<<< + * for node in nodes: + * node_src = node.attrs.get('src') +*/ + __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 911, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_v_src_nodes = ((PyObject*)__pyx_t_2); + __pyx_t_2 = 0; + + /* "selectolax/lexbor/node.pxi":912 + * nodes = self.parser.selector.find('script', self) + * src_nodes = [] + * for node in nodes: # <<<<<<<<<<<<<< + * node_src = node.attrs.get('src') + * if node_src: +*/ + if (likely(PyList_CheckExact(__pyx_v_nodes)) || PyTuple_CheckExact(__pyx_v_nodes)) { + __pyx_t_2 = __pyx_v_nodes; __Pyx_INCREF(__pyx_t_2); + __pyx_t_6 = 0; + __pyx_t_7 = NULL; + } else { + __pyx_t_6 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_nodes); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 912, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_7 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 912, __pyx_L1_error) + } + for (;;) { + if (likely(!__pyx_t_7)) { + if (likely(PyList_CheckExact(__pyx_t_2))) { + { + Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2); + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely((__pyx_temp < 0))) __PYX_ERR(4, 912, __pyx_L1_error) + #endif + if (__pyx_t_6 >= __pyx_temp) break; + } + __pyx_t_4 = __Pyx_PyList_GetItemRefFast(__pyx_t_2, __pyx_t_6, __Pyx_ReferenceSharing_OwnStrongReference); + ++__pyx_t_6; + } else { + { + Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_2); + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely((__pyx_temp < 0))) __PYX_ERR(4, 912, __pyx_L1_error) + #endif + if (__pyx_t_6 >= __pyx_temp) break; + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_4 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_6)); + #else + __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_6); + #endif + ++__pyx_t_6; + } + if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 912, __pyx_L1_error) + } else { + __pyx_t_4 = __pyx_t_7(__pyx_t_2); + if (unlikely(!__pyx_t_4)) { + PyObject* exc_type = PyErr_Occurred(); + if (exc_type) { + if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(4, 912, __pyx_L1_error) + PyErr_Clear(); + } + break; + } + } + __Pyx_GOTREF(__pyx_t_4); + if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborNode))))) __PYX_ERR(4, 912, __pyx_L1_error) + __Pyx_XDECREF_SET(__pyx_v_node, ((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_t_4)); + __pyx_t_4 = 0; + + /* "selectolax/lexbor/node.pxi":913 + * src_nodes = [] + * for node in nodes: + * node_src = node.attrs.get('src') # <<<<<<<<<<<<<< + * if node_src: + * src_nodes.append(node_src) +*/ + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_node), __pyx_mstate_global->__pyx_n_u_attrs); if (unlikely(!__pyx_t_8)) __PYX_ERR(4, 913, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_3 = __pyx_t_8; + __Pyx_INCREF(__pyx_t_3); + __pyx_t_5 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_n_u_src}; + __pyx_t_4 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_get, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 913, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + } + __Pyx_XDECREF_SET(__pyx_v_node_src, __pyx_t_4); + __pyx_t_4 = 0; + + /* "selectolax/lexbor/node.pxi":914 + * for node in nodes: + * node_src = node.attrs.get('src') + * if node_src: # <<<<<<<<<<<<<< + * src_nodes.append(node_src) + * self.parser.cached_script_srcs = src_nodes +*/ + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_node_src); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(4, 914, __pyx_L1_error) + if (__pyx_t_1) { + + /* "selectolax/lexbor/node.pxi":915 + * node_src = node.attrs.get('src') + * if node_src: + * src_nodes.append(node_src) # <<<<<<<<<<<<<< + * self.parser.cached_script_srcs = src_nodes + * +*/ + __pyx_t_9 = __Pyx_PyList_Append(__pyx_v_src_nodes, __pyx_v_node_src); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(4, 915, __pyx_L1_error) + + /* "selectolax/lexbor/node.pxi":914 + * for node in nodes: + * node_src = node.attrs.get('src') + * if node_src: # <<<<<<<<<<<<<< + * src_nodes.append(node_src) + * self.parser.cached_script_srcs = src_nodes +*/ + } + + /* "selectolax/lexbor/node.pxi":912 + * nodes = self.parser.selector.find('script', self) + * src_nodes = [] + * for node in nodes: # <<<<<<<<<<<<<< + * node_src = node.attrs.get('src') + * if node_src: +*/ + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "selectolax/lexbor/node.pxi":916 + * if node_src: + * src_nodes.append(node_src) + * self.parser.cached_script_srcs = src_nodes # <<<<<<<<<<<<<< + * + * for text in self.parser.cached_script_srcs: +*/ + __Pyx_INCREF(__pyx_v_src_nodes); + __Pyx_GIVEREF(__pyx_v_src_nodes); + __Pyx_GOTREF(__pyx_v_self->parser->cached_script_srcs); + __Pyx_DECREF(__pyx_v_self->parser->cached_script_srcs); + __pyx_v_self->parser->cached_script_srcs = __pyx_v_src_nodes; + + /* "selectolax/lexbor/node.pxi":909 + * """ + * cdef LexborNode node + * if self.parser.cached_script_srcs is None: # <<<<<<<<<<<<<< + * nodes = self.parser.selector.find('script', self) + * src_nodes = [] +*/ + } + + /* "selectolax/lexbor/node.pxi":918 + * self.parser.cached_script_srcs = src_nodes + * + * for text in self.parser.cached_script_srcs: # <<<<<<<<<<<<<< + * for query in queries: + * if query in text: +*/ + if (likely(PyList_CheckExact(__pyx_v_self->parser->cached_script_srcs)) || PyTuple_CheckExact(__pyx_v_self->parser->cached_script_srcs)) { + __pyx_t_2 = __pyx_v_self->parser->cached_script_srcs; __Pyx_INCREF(__pyx_t_2); + __pyx_t_6 = 0; + __pyx_t_7 = NULL; + } else { + __pyx_t_6 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_self->parser->cached_script_srcs); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 918, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_7 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 918, __pyx_L1_error) + } + for (;;) { + if (likely(!__pyx_t_7)) { + if (likely(PyList_CheckExact(__pyx_t_2))) { + { + Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2); + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely((__pyx_temp < 0))) __PYX_ERR(4, 918, __pyx_L1_error) + #endif + if (__pyx_t_6 >= __pyx_temp) break; + } + __pyx_t_4 = __Pyx_PyList_GetItemRefFast(__pyx_t_2, __pyx_t_6, __Pyx_ReferenceSharing_OwnStrongReference); + ++__pyx_t_6; + } else { + { + Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_2); + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely((__pyx_temp < 0))) __PYX_ERR(4, 918, __pyx_L1_error) + #endif + if (__pyx_t_6 >= __pyx_temp) break; + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_4 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_6)); + #else + __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_6); + #endif + ++__pyx_t_6; + } + if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 918, __pyx_L1_error) + } else { + __pyx_t_4 = __pyx_t_7(__pyx_t_2); + if (unlikely(!__pyx_t_4)) { + PyObject* exc_type = PyErr_Occurred(); + if (exc_type) { + if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(4, 918, __pyx_L1_error) + PyErr_Clear(); + } + break; + } + } + __Pyx_GOTREF(__pyx_t_4); + __Pyx_XDECREF_SET(__pyx_v_text, __pyx_t_4); + __pyx_t_4 = 0; + + /* "selectolax/lexbor/node.pxi":919 + * + * for text in self.parser.cached_script_srcs: + * for query in queries: # <<<<<<<<<<<<<< + * if query in text: + * return True +*/ + if (unlikely(__pyx_v_queries == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); + __PYX_ERR(4, 919, __pyx_L1_error) + } + __pyx_t_4 = __pyx_v_queries; __Pyx_INCREF(__pyx_t_4); + __pyx_t_10 = 0; + for (;;) { + { + Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_4); + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely((__pyx_temp < 0))) __PYX_ERR(4, 919, __pyx_L1_error) + #endif + if (__pyx_t_10 >= __pyx_temp) break; + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_8 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_10)); + #else + __pyx_t_8 = __Pyx_PySequence_ITEM(__pyx_t_4, __pyx_t_10); + #endif + ++__pyx_t_10; + if (unlikely(!__pyx_t_8)) __PYX_ERR(4, 919, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_XDECREF_SET(__pyx_v_query, __pyx_t_8); + __pyx_t_8 = 0; + + /* "selectolax/lexbor/node.pxi":920 + * for text in self.parser.cached_script_srcs: + * for query in queries: + * if query in text: # <<<<<<<<<<<<<< + * return True + * return False +*/ + __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_v_query, __pyx_v_text, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(4, 920, __pyx_L1_error) + if (__pyx_t_1) { + + /* "selectolax/lexbor/node.pxi":921 + * for query in queries: + * if query in text: + * return True # <<<<<<<<<<<<<< + * return False + * +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(Py_True); + __pyx_r = Py_True; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + goto __pyx_L0; + + /* "selectolax/lexbor/node.pxi":920 + * for text in self.parser.cached_script_srcs: + * for query in queries: + * if query in text: # <<<<<<<<<<<<<< + * return True + * return False +*/ + } + + /* "selectolax/lexbor/node.pxi":919 + * + * for text in self.parser.cached_script_srcs: + * for query in queries: # <<<<<<<<<<<<<< + * if query in text: + * return True +*/ + } + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "selectolax/lexbor/node.pxi":918 + * self.parser.cached_script_srcs = src_nodes + * + * for text in self.parser.cached_script_srcs: # <<<<<<<<<<<<<< + * for query in queries: + * if query in text: +*/ + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "selectolax/lexbor/node.pxi":922 + * if query in text: + * return True + * return False # <<<<<<<<<<<<<< + * + * def remove(self, bool recursive=True): +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(Py_False); + __pyx_r = Py_False; + goto __pyx_L0; + + /* "selectolax/lexbor/node.pxi":898 + * return False + * + * def script_srcs_contain(self, tuple queries): # <<<<<<<<<<<<<< + * """Returns True if any of the script SRCs attributes contain on of the specified text. + * +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.script_srcs_contain", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF((PyObject *)__pyx_v_node); + __Pyx_XDECREF(__pyx_v_nodes); + __Pyx_XDECREF(__pyx_v_src_nodes); + __Pyx_XDECREF(__pyx_v_node_src); + __Pyx_XDECREF(__pyx_v_text); + __Pyx_XDECREF(__pyx_v_query); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor/node.pxi":924 + * return False + * + * def remove(self, bool recursive=True): # <<<<<<<<<<<<<< + * """An alias for the decompose method.""" + * self.decompose(recursive) +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_49remove(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6lexbor_10LexborNode_48remove, "LexborNode.remove(self, bool recursive=True)\n\nAn alias for the decompose method."); +static PyMethodDef __pyx_mdef_10selectolax_6lexbor_10LexborNode_49remove = {"remove", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_10LexborNode_49remove, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_10LexborNode_48remove}; +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_49remove(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyLongObject *__pyx_v_recursive = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("remove (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_recursive,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(4, 924, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 924, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "remove", 0) < (0)) __PYX_ERR(4, 924, __pyx_L3_error) + if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)((PyLongObject *)Py_True)); + } else { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 924, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)((PyLongObject *)Py_True)); + } + __pyx_v_recursive = ((PyLongObject *)values[0]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("remove", 0, 0, 1, __pyx_nargs); __PYX_ERR(4, 924, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.remove", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_recursive), __pyx_mstate_global->__pyx_ptype_7cpython_4bool_bool, 1, "recursive", 0))) __PYX_ERR(4, 924, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6lexbor_10LexborNode_48remove(((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_v_self), __pyx_v_recursive); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_48remove(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self, PyLongObject *__pyx_v_recursive) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + size_t __pyx_t_3; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("remove", 0); + + /* "selectolax/lexbor/node.pxi":926 + * def remove(self, bool recursive=True): + * """An alias for the decompose method.""" + * self.decompose(recursive) # <<<<<<<<<<<<<< + * + * def select(self, query=None): +*/ + __pyx_t_2 = ((PyObject *)__pyx_v_self); + __Pyx_INCREF(__pyx_t_2); + __pyx_t_3 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, ((PyObject *)__pyx_v_recursive)}; + __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_decompose, __pyx_callargs+__pyx_t_3, (2-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 926, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "selectolax/lexbor/node.pxi":924 + * return False + * + * def remove(self, bool recursive=True): # <<<<<<<<<<<<<< + * """An alias for the decompose method.""" + * self.decompose(recursive) +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.remove", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor/node.pxi":928 + * self.decompose(recursive) + * + * def select(self, query=None): # <<<<<<<<<<<<<< + * """Select nodes given a CSS selector. + * +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_51select(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6lexbor_10LexborNode_50select, "LexborNode.select(self, query=None)\n\nSelect nodes given a CSS selector.\n\nWorks similarly to the the ``css`` method, but supports chained filtering and extra features.\n\nParameters\n----------\nquery : str or None\n The CSS selector to use when searching for nodes.\n\nReturns\n-------\nselector : The `Selector` class."); +static PyMethodDef __pyx_mdef_10selectolax_6lexbor_10LexborNode_51select = {"select", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_10LexborNode_51select, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_10LexborNode_50select}; +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_51select(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_query = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("select (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_query,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(4, 928, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 928, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "select", 0) < (0)) __PYX_ERR(4, 928, __pyx_L3_error) + if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)Py_None)); + } else { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 928, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)Py_None)); + } + __pyx_v_query = values[0]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("select", 0, 0, 1, __pyx_nargs); __PYX_ERR(4, 928, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.select", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_10selectolax_6lexbor_10LexborNode_50select(((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_v_self), __pyx_v_query); + + /* function exit code */ + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_50select(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self, PyObject *__pyx_v_query) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + size_t __pyx_t_4; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("select", 0); + + /* "selectolax/lexbor/node.pxi":942 + * selector : The `Selector` class. + * """ + * return LexborSelector(self._get_node(), query) # <<<<<<<<<<<<<< + * + * def __eq__(self, other): +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_2 = NULL; + __pyx_t_3 = ((PyObject *)__pyx_f_10selectolax_6lexbor_10LexborNode__get_node(__pyx_v_self)); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 942, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = 1; + { + PyObject *__pyx_callargs[3] = {__pyx_t_2, __pyx_t_3, __pyx_v_query}; + __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborSelector, __pyx_callargs+__pyx_t_4, (3-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 942, __pyx_L1_error) + __Pyx_GOTREF((PyObject *)__pyx_t_1); + } + __pyx_r = ((PyObject *)__pyx_t_1); + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "selectolax/lexbor/node.pxi":928 + * self.decompose(recursive) + * + * def select(self, query=None): # <<<<<<<<<<<<<< + * """Select nodes given a CSS selector. + * +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.select", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor/node.pxi":944 + * return LexborSelector(self._get_node(), query) + * + * def __eq__(self, other): # <<<<<<<<<<<<<< + * if isinstance(other, str): + * return self.html == other +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_53__eq__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/ +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_53__eq__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__eq__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6lexbor_10LexborNode_52__eq__(((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_v_self), ((PyObject *)__pyx_v_other)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_52__eq__(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self, PyObject *__pyx_v_other) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + int __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__eq__", 0); + + /* "selectolax/lexbor/node.pxi":945 + * + * def __eq__(self, other): + * if isinstance(other, str): # <<<<<<<<<<<<<< + * return self.html == other + * if not isinstance(other, LexborNode): +*/ + __pyx_t_1 = PyUnicode_Check(__pyx_v_other); + if (__pyx_t_1) { + + /* "selectolax/lexbor/node.pxi":946 + * def __eq__(self, other): + * if isinstance(other, str): + * return self.html == other # <<<<<<<<<<<<<< + * if not isinstance(other, LexborNode): + * return False +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_html); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 946, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = PyObject_RichCompare(__pyx_t_2, __pyx_v_other, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 946, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_r = __pyx_t_3; + __pyx_t_3 = 0; + goto __pyx_L0; + + /* "selectolax/lexbor/node.pxi":945 + * + * def __eq__(self, other): + * if isinstance(other, str): # <<<<<<<<<<<<<< + * return self.html == other + * if not isinstance(other, LexborNode): +*/ + } + + /* "selectolax/lexbor/node.pxi":947 + * if isinstance(other, str): + * return self.html == other + * if not isinstance(other, LexborNode): # <<<<<<<<<<<<<< + * return False + * return self.html == other.html +*/ + __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_other, __pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborNode); + __pyx_t_4 = (!__pyx_t_1); + if (__pyx_t_4) { + + /* "selectolax/lexbor/node.pxi":948 + * return self.html == other + * if not isinstance(other, LexborNode): + * return False # <<<<<<<<<<<<<< + * return self.html == other.html + * +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(Py_False); + __pyx_r = Py_False; + goto __pyx_L0; + + /* "selectolax/lexbor/node.pxi":947 + * if isinstance(other, str): + * return self.html == other + * if not isinstance(other, LexborNode): # <<<<<<<<<<<<<< + * return False + * return self.html == other.html +*/ + } + + /* "selectolax/lexbor/node.pxi":949 + * if not isinstance(other, LexborNode): + * return False + * return self.html == other.html # <<<<<<<<<<<<<< + * + * @property +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_html); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 949, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_other, __pyx_mstate_global->__pyx_n_u_html); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 949, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_5 = PyObject_RichCompare(__pyx_t_3, __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 949, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_r = __pyx_t_5; + __pyx_t_5 = 0; + goto __pyx_L0; + + /* "selectolax/lexbor/node.pxi":944 + * return LexborSelector(self._get_node(), query) + * + * def __eq__(self, other): # <<<<<<<<<<<<<< + * if isinstance(other, str): + * return self.html == other +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.__eq__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor/node.pxi":951 + * return self.html == other.html + * + * @property # <<<<<<<<<<<<<< + * def text_content(self): + * """Returns the text of the node if it is a text node. +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_12text_content_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_12text_content_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6lexbor_10LexborNode_12text_content___get__(((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_12text_content___get__(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self) { + unsigned char *__pyx_v_text; + CYTHON_UNUSED lxb_dom_node_t *__pyx_v_node; + struct __pyx_obj_10selectolax_6lexbor_TextContainer *__pyx_v_container = 0; + PyObject *__pyx_v_py_text = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + size_t __pyx_t_7; + int __pyx_t_8; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + + /* "selectolax/lexbor/node.pxi":963 + * """ + * cdef unsigned char * text + * cdef lxb_dom_node_t * node = self.node.first_child # <<<<<<<<<<<<<< + * cdef TextContainer container + * if not _is_node_type(self.node, LXB_DOM_NODE_TYPE_TEXT): +*/ + __pyx_v_node = ((lxb_dom_node_t *)__pyx_v_self->node->first_child); + + /* "selectolax/lexbor/node.pxi":965 + * cdef lxb_dom_node_t * node = self.node.first_child + * cdef TextContainer container + * if not _is_node_type(self.node, LXB_DOM_NODE_TYPE_TEXT): # <<<<<<<<<<<<<< + * return None + * +*/ + __pyx_t_1 = __pyx_f_10selectolax_6lexbor__is_node_type(__pyx_v_self->node, LXB_DOM_NODE_TYPE_TEXT); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(4, 965, __pyx_L1_error) + __pyx_t_2 = (!__pyx_t_1); + if (__pyx_t_2) { + + /* "selectolax/lexbor/node.pxi":966 + * cdef TextContainer container + * if not _is_node_type(self.node, LXB_DOM_NODE_TYPE_TEXT): + * return None # <<<<<<<<<<<<<< + * + * text = lexbor_str_data_noi(&( self.node).data) +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + + /* "selectolax/lexbor/node.pxi":965 + * cdef lxb_dom_node_t * node = self.node.first_child + * cdef TextContainer container + * if not _is_node_type(self.node, LXB_DOM_NODE_TYPE_TEXT): # <<<<<<<<<<<<<< + * return None + * +*/ + } + + /* "selectolax/lexbor/node.pxi":968 + * return None + * + * text = lexbor_str_data_noi(&( self.node).data) # <<<<<<<<<<<<<< + * if text != NULL: + * container = TextContainer.new_with_defaults() +*/ + __pyx_v_text = ((unsigned char *)lexbor_str_data_noi((&((lxb_dom_character_data_t *)__pyx_v_self->node)->data))); + + /* "selectolax/lexbor/node.pxi":969 + * + * text = lexbor_str_data_noi(&( self.node).data) + * if text != NULL: # <<<<<<<<<<<<<< + * container = TextContainer.new_with_defaults() + * py_text = text.decode(_ENCODING) +*/ + __pyx_t_2 = (__pyx_v_text != NULL); + if (__pyx_t_2) { + + /* "selectolax/lexbor/node.pxi":970 + * text = lexbor_str_data_noi(&( self.node).data) + * if text != NULL: + * container = TextContainer.new_with_defaults() # <<<<<<<<<<<<<< + * py_text = text.decode(_ENCODING) + * container.append(py_text) +*/ + __pyx_t_3 = ((PyObject *)__pyx_f_10selectolax_6lexbor_13TextContainer_new_with_defaults()); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 970, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_v_container = ((struct __pyx_obj_10selectolax_6lexbor_TextContainer *)__pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/lexbor/node.pxi":971 + * if text != NULL: + * container = TextContainer.new_with_defaults() + * py_text = text.decode(_ENCODING) # <<<<<<<<<<<<<< + * container.append(py_text) + * return container.text +*/ + __pyx_t_5 = __Pyx_PyBytes_FromCString(__pyx_v_text); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 971, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_4 = __pyx_t_5; + __Pyx_INCREF(__pyx_t_4); + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_ENCODING); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 971, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_7 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_6}; + __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_decode, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 971, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __pyx_v_py_text = __pyx_t_3; + __pyx_t_3 = 0; + + /* "selectolax/lexbor/node.pxi":972 + * container = TextContainer.new_with_defaults() + * py_text = text.decode(_ENCODING) + * container.append(py_text) # <<<<<<<<<<<<<< + * return container.text + * return None +*/ + __pyx_t_8 = __Pyx_PyObject_Append(((PyObject *)__pyx_v_container), __pyx_v_py_text); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(4, 972, __pyx_L1_error) + + /* "selectolax/lexbor/node.pxi":973 + * py_text = text.decode(_ENCODING) + * container.append(py_text) + * return container.text # <<<<<<<<<<<<<< + * return None + * +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_container), __pyx_mstate_global->__pyx_n_u_text); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 973, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_r = __pyx_t_3; + __pyx_t_3 = 0; + goto __pyx_L0; + + /* "selectolax/lexbor/node.pxi":969 + * + * text = lexbor_str_data_noi(&( self.node).data) + * if text != NULL: # <<<<<<<<<<<<<< + * container = TextContainer.new_with_defaults() + * py_text = text.decode(_ENCODING) +*/ + } + + /* "selectolax/lexbor/node.pxi":974 + * container.append(py_text) + * return container.text + * return None # <<<<<<<<<<<<<< + * + * @property +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + + /* "selectolax/lexbor/node.pxi":951 + * return self.html == other.html + * + * @property # <<<<<<<<<<<<<< + * def text_content(self): + * """Returns the text of the node if it is a text node. +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.text_content.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF((PyObject *)__pyx_v_container); + __Pyx_XDECREF(__pyx_v_py_text); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor/node.pxi":976 + * return None + * + * @property # <<<<<<<<<<<<<< + * def comment_content(self) -> str | None: + * """Extract the textual content of an HTML comment node. +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_15comment_content_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_15comment_content_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6lexbor_10LexborNode_15comment_content___get__(((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_15comment_content___get__(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + int __pyx_t_3; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + PyObject *__pyx_t_9 = NULL; + size_t __pyx_t_10; + int __pyx_t_11; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + + /* "selectolax/lexbor/node.pxi":994 + * True + * """ + * if not self.is_comment_node: # <<<<<<<<<<<<<< + * return None + * try: +*/ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_is_comment_node); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 994, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(4, 994, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_3 = (!__pyx_t_2); + if (__pyx_t_3) { + + /* "selectolax/lexbor/node.pxi":995 + * """ + * if not self.is_comment_node: + * return None # <<<<<<<<<<<<<< + * try: + * return extract_html_comment(self.html) +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + + /* "selectolax/lexbor/node.pxi":994 + * True + * """ + * if not self.is_comment_node: # <<<<<<<<<<<<<< + * return None + * try: +*/ + } + + /* "selectolax/lexbor/node.pxi":996 + * if not self.is_comment_node: + * return None + * try: # <<<<<<<<<<<<<< + * return extract_html_comment(self.html) + * except (ValueError, AttributeError, IndexError): +*/ + { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ExceptionSave(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6); + __Pyx_XGOTREF(__pyx_t_4); + __Pyx_XGOTREF(__pyx_t_5); + __Pyx_XGOTREF(__pyx_t_6); + /*try:*/ { + + /* "selectolax/lexbor/node.pxi":997 + * return None + * try: + * return extract_html_comment(self.html) # <<<<<<<<<<<<<< + * except (ValueError, AttributeError, IndexError): + * return None +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_7 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_extract_html_comment); if (unlikely(!__pyx_t_8)) __PYX_ERR(4, 997, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_html); if (unlikely(!__pyx_t_9)) __PYX_ERR(4, 997, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_10 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_8))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_8); + assert(__pyx_t_7); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_8); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_8, __pyx__function); + __pyx_t_10 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_9}; + __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_8, __pyx_callargs+__pyx_t_10, (2-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 997, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_1); + } + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L8_try_return; + + /* "selectolax/lexbor/node.pxi":996 + * if not self.is_comment_node: + * return None + * try: # <<<<<<<<<<<<<< + * return extract_html_comment(self.html) + * except (ValueError, AttributeError, IndexError): +*/ + } + __pyx_L4_error:; + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; + + /* "selectolax/lexbor/node.pxi":998 + * try: + * return extract_html_comment(self.html) + * except (ValueError, AttributeError, IndexError): # <<<<<<<<<<<<<< + * return None + * +*/ + __pyx_t_11 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_ValueError)))) || __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_AttributeError)))) || __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_IndexError)))); + if (__pyx_t_11) { + __Pyx_ErrRestore(0,0,0); + + /* "selectolax/lexbor/node.pxi":999 + * return extract_html_comment(self.html) + * except (ValueError, AttributeError, IndexError): + * return None # <<<<<<<<<<<<<< + * + * @property +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L7_except_return; + } + goto __pyx_L6_except_error; + + /* "selectolax/lexbor/node.pxi":996 + * if not self.is_comment_node: + * return None + * try: # <<<<<<<<<<<<<< + * return extract_html_comment(self.html) + * except (ValueError, AttributeError, IndexError): +*/ + __pyx_L6_except_error:; + __Pyx_XGIVEREF(__pyx_t_4); + __Pyx_XGIVEREF(__pyx_t_5); + __Pyx_XGIVEREF(__pyx_t_6); + __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6); + goto __pyx_L1_error; + __pyx_L8_try_return:; + __Pyx_XGIVEREF(__pyx_t_4); + __Pyx_XGIVEREF(__pyx_t_5); + __Pyx_XGIVEREF(__pyx_t_6); + __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6); + goto __pyx_L0; + __pyx_L7_except_return:; + __Pyx_XGIVEREF(__pyx_t_4); + __Pyx_XGIVEREF(__pyx_t_5); + __Pyx_XGIVEREF(__pyx_t_6); + __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6); + goto __pyx_L0; + } + + /* "selectolax/lexbor/node.pxi":976 + * return None + * + * @property # <<<<<<<<<<<<<< + * def comment_content(self) -> str | None: + * """Extract the textual content of an HTML comment node. +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_XDECREF(__pyx_t_9); + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.comment_content.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor/node.pxi":1001 + * return None + * + * @property # <<<<<<<<<<<<<< + * def inner_html(self) -> str | None: + * """Return HTML representation of the child nodes. +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_10inner_html_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_10inner_html_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6lexbor_10LexborNode_10inner_html___get__(((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_10inner_html___get__(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self) { + lexbor_str_t *__pyx_v_lxb_str; + lxb_status_t __pyx_v_status; + PyObject *__pyx_v_html = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + size_t __pyx_t_7; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + + /* "selectolax/lexbor/node.pxi":1017 + * cdef lxb_status_t status + * + * lxb_str = lexbor_str_create() # <<<<<<<<<<<<<< + * status = lxb_html_serialize_deep_str(self.node, lxb_str) + * if status == 0 and lxb_str.data: +*/ + __pyx_v_lxb_str = lexbor_str_create(); + + /* "selectolax/lexbor/node.pxi":1018 + * + * lxb_str = lexbor_str_create() + * status = lxb_html_serialize_deep_str(self.node, lxb_str) # <<<<<<<<<<<<<< + * if status == 0 and lxb_str.data: + * html = lxb_str.data.decode(_ENCODING).replace('<-undef>', '') +*/ + __pyx_v_status = lxb_html_serialize_deep_str(__pyx_v_self->node, __pyx_v_lxb_str); + + /* "selectolax/lexbor/node.pxi":1019 + * lxb_str = lexbor_str_create() + * status = lxb_html_serialize_deep_str(self.node, lxb_str) + * if status == 0 and lxb_str.data: # <<<<<<<<<<<<<< + * html = lxb_str.data.decode(_ENCODING).replace('<-undef>', '') + * lexbor_str_destroy(lxb_str, self.node.owner_document.text, True) +*/ + __pyx_t_2 = (__pyx_v_status == 0); + if (__pyx_t_2) { + } else { + __pyx_t_1 = __pyx_t_2; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_2 = (__pyx_v_lxb_str->data != 0); + __pyx_t_1 = __pyx_t_2; + __pyx_L4_bool_binop_done:; + if (__pyx_t_1) { + + /* "selectolax/lexbor/node.pxi":1020 + * status = lxb_html_serialize_deep_str(self.node, lxb_str) + * if status == 0 and lxb_str.data: + * html = lxb_str.data.decode(_ENCODING).replace('<-undef>', '') # <<<<<<<<<<<<<< + * lexbor_str_destroy(lxb_str, self.node.owner_document.text, True) + * return html +*/ + __pyx_t_5 = __Pyx_PyBytes_FromCString(__pyx_v_lxb_str->data); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 1020, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_4 = __pyx_t_5; + __Pyx_INCREF(__pyx_t_4); + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_ENCODING); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 1020, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_7 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_6}; + __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_decode, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 1020, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __pyx_t_5 = PyUnicode_Replace(((PyObject*)__pyx_t_3), __pyx_mstate_global->__pyx_kp_u_undef, __pyx_mstate_global->__pyx_kp_u_, -1); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 1020, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_v_html = __pyx_t_5; + __pyx_t_5 = 0; + + /* "selectolax/lexbor/node.pxi":1021 + * if status == 0 and lxb_str.data: + * html = lxb_str.data.decode(_ENCODING).replace('<-undef>', '') + * lexbor_str_destroy(lxb_str, self.node.owner_document.text, True) # <<<<<<<<<<<<<< + * return html + * return None +*/ + (void)(lexbor_str_destroy(__pyx_v_lxb_str, __pyx_v_self->node->owner_document->text, 1)); + + /* "selectolax/lexbor/node.pxi":1022 + * html = lxb_str.data.decode(_ENCODING).replace('<-undef>', '') + * lexbor_str_destroy(lxb_str, self.node.owner_document.text, True) + * return html # <<<<<<<<<<<<<< + * return None + * +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_html); + __pyx_r = __pyx_v_html; + goto __pyx_L0; + + /* "selectolax/lexbor/node.pxi":1019 + * lxb_str = lexbor_str_create() + * status = lxb_html_serialize_deep_str(self.node, lxb_str) + * if status == 0 and lxb_str.data: # <<<<<<<<<<<<<< + * html = lxb_str.data.decode(_ENCODING).replace('<-undef>', '') + * lexbor_str_destroy(lxb_str, self.node.owner_document.text, True) +*/ + } + + /* "selectolax/lexbor/node.pxi":1023 + * lexbor_str_destroy(lxb_str, self.node.owner_document.text, True) + * return html + * return None # <<<<<<<<<<<<<< + * + * @inner_html.setter +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + + /* "selectolax/lexbor/node.pxi":1001 + * return None + * + * @property # <<<<<<<<<<<<<< + * def inner_html(self) -> str | None: + * """Return HTML representation of the child nodes. +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.inner_html.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_html); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor/node.pxi":1025 + * return None + * + * @inner_html.setter # <<<<<<<<<<<<<< + * def inner_html(self, str html) -> None: + * """Set inner HTML to the specified HTML. +*/ + +/* Python wrapper */ +static int __pyx_pw_10selectolax_6lexbor_10LexborNode_10inner_html_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_html); /*proto*/ +static int __pyx_pw_10selectolax_6lexbor_10LexborNode_10inner_html_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_html) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_html), (&PyUnicode_Type), 1, "html", 1))) __PYX_ERR(4, 1026, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6lexbor_10LexborNode_10inner_html_2__set__(((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_v_self), ((PyObject*)__pyx_v_html)); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = -1; + goto __pyx_L5_cleaned_up; + __pyx_L0:; + __pyx_L5_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_10selectolax_6lexbor_10LexborNode_10inner_html_2__set__(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self, PyObject *__pyx_v_html) { + PyObject *__pyx_v_bytes_val = 0; + int __pyx_r; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + lxb_char_t *__pyx_t_3; + Py_ssize_t __pyx_t_4; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__set__", 0); + + /* "selectolax/lexbor/node.pxi":1038 + * """ + * cdef bytes bytes_val + * bytes_val = html.encode("utf-8") # <<<<<<<<<<<<<< + * lxb_html_element_inner_html_set( + * self.node, +*/ + if (unlikely(__pyx_v_html == Py_None)) { + PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "encode"); + __PYX_ERR(4, 1038, __pyx_L1_error) + } + __pyx_t_1 = PyUnicode_AsUTF8String(__pyx_v_html); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 1038, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __pyx_t_1; + __Pyx_INCREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v_bytes_val = ((PyObject*)__pyx_t_2); + __pyx_t_2 = 0; + + /* "selectolax/lexbor/node.pxi":1041 + * lxb_html_element_inner_html_set( + * self.node, + * bytes_val, len(bytes_val) # <<<<<<<<<<<<<< + * ) + * +*/ + if (unlikely(__pyx_v_bytes_val == Py_None)) { + PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); + __PYX_ERR(4, 1041, __pyx_L1_error) + } + __pyx_t_3 = __Pyx_PyBytes_AsWritableUString(__pyx_v_bytes_val); if (unlikely((!__pyx_t_3) && PyErr_Occurred())) __PYX_ERR(4, 1041, __pyx_L1_error) + if (unlikely(__pyx_v_bytes_val == Py_None)) { + PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); + __PYX_ERR(4, 1041, __pyx_L1_error) + } + __pyx_t_4 = __Pyx_PyBytes_GET_SIZE(__pyx_v_bytes_val); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(4, 1041, __pyx_L1_error) + + /* "selectolax/lexbor/node.pxi":1039 + * cdef bytes bytes_val + * bytes_val = html.encode("utf-8") + * lxb_html_element_inner_html_set( # <<<<<<<<<<<<<< + * self.node, + * bytes_val, len(bytes_val) +*/ + (void)(lxb_html_element_inner_html_set(((lxb_html_element_t *)__pyx_v_self->node), ((lxb_char_t *)__pyx_t_3), __pyx_t_4)); + + /* "selectolax/lexbor/node.pxi":1025 + * return None + * + * @inner_html.setter # <<<<<<<<<<<<<< + * def inner_html(self, str html) -> None: + * """Set inner HTML to the specified HTML. +*/ + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.inner_html.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_bytes_val); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor/node.pxi":1044 + * ) + * + * def clone(self) -> LexborNode: # <<<<<<<<<<<<<< + * """Clone the current node. + * +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_55clone(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6lexbor_10LexborNode_54clone, "LexborNode.clone(self) -> LexborNode\n\nClone the current node.\n\nYou can use to do temporary modifications without affecting the original HTML tree.\n\nIt is tied to the current parser instance.\nGets destroyed when parser instance is destroyed."); +static PyMethodDef __pyx_mdef_10selectolax_6lexbor_10LexborNode_55clone = {"clone", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_10LexborNode_55clone, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_10LexborNode_54clone}; +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_55clone(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("clone (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("clone", 1, 0, 0, __pyx_nargs); return NULL; } + const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len < 0)) return NULL; + if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("clone", __pyx_kwds); return NULL;} + __pyx_r = __pyx_pf_10selectolax_6lexbor_10LexborNode_54clone(((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_54clone(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self) { + lxb_dom_node_t *__pyx_v_node; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("clone", 0); + + /* "selectolax/lexbor/node.pxi":1053 + * """ + * cdef lxb_dom_node_t * node + * node = lxb_dom_node_clone( self.node, 1) # <<<<<<<<<<<<<< + * return LexborNode.new(node, self.parser) + * +*/ + __pyx_v_node = lxb_dom_node_clone(((lxb_dom_node_t *)__pyx_v_self->node), 1); + + /* "selectolax/lexbor/node.pxi":1054 + * cdef lxb_dom_node_t * node + * node = lxb_dom_node_clone( self.node, 1) + * return LexborNode.new(node, self.parser) # <<<<<<<<<<<<<< + * + * @property +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = ((PyObject *)__pyx_v_self->parser); + __Pyx_INCREF(__pyx_t_1); + __pyx_t_2 = ((PyObject *)__pyx_f_10selectolax_6lexbor_10LexborNode_new(__pyx_v_node, ((struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *)__pyx_t_1))); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 1054, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; + + /* "selectolax/lexbor/node.pxi":1044 + * ) + * + * def clone(self) -> LexborNode: # <<<<<<<<<<<<<< + * """Clone the current node. + * +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.clone", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor/node.pxi":1056 + * return LexborNode.new(node, self.parser) + * + * @property # <<<<<<<<<<<<<< + * def is_element_node(self) -> bool: + * """Return True if the node represents an element node.""" +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_15is_element_node_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_15is_element_node_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6lexbor_10LexborNode_15is_element_node___get__(((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_15is_element_node___get__(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + + /* "selectolax/lexbor/node.pxi":1059 + * def is_element_node(self) -> bool: + * """Return True if the node represents an element node.""" + * return _is_node_type(self.node, LXB_DOM_NODE_TYPE_ELEMENT) # <<<<<<<<<<<<<< + * + * @property +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __pyx_f_10selectolax_6lexbor__is_node_type(__pyx_v_self->node, LXB_DOM_NODE_TYPE_ELEMENT); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(4, 1059, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 1059, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; + + /* "selectolax/lexbor/node.pxi":1056 + * return LexborNode.new(node, self.parser) + * + * @property # <<<<<<<<<<<<<< + * def is_element_node(self) -> bool: + * """Return True if the node represents an element node.""" +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.is_element_node.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor/node.pxi":1061 + * return _is_node_type(self.node, LXB_DOM_NODE_TYPE_ELEMENT) + * + * @property # <<<<<<<<<<<<<< + * def is_text_node(self) -> bool: + * """Return True if the node represents a text node.""" +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_12is_text_node_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_12is_text_node_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6lexbor_10LexborNode_12is_text_node___get__(((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_12is_text_node___get__(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + + /* "selectolax/lexbor/node.pxi":1064 + * def is_text_node(self) -> bool: + * """Return True if the node represents a text node.""" + * return _is_node_type(self.node, LXB_DOM_NODE_TYPE_TEXT) # <<<<<<<<<<<<<< + * + * @property +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __pyx_f_10selectolax_6lexbor__is_node_type(__pyx_v_self->node, LXB_DOM_NODE_TYPE_TEXT); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(4, 1064, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 1064, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; + + /* "selectolax/lexbor/node.pxi":1061 + * return _is_node_type(self.node, LXB_DOM_NODE_TYPE_ELEMENT) + * + * @property # <<<<<<<<<<<<<< + * def is_text_node(self) -> bool: + * """Return True if the node represents a text node.""" +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.is_text_node.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor/node.pxi":1066 + * return _is_node_type(self.node, LXB_DOM_NODE_TYPE_TEXT) + * + * @property # <<<<<<<<<<<<<< + * def is_comment_node(self) -> bool: + * """Return True if the node represents a comment node.""" +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_15is_comment_node_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_15is_comment_node_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6lexbor_10LexborNode_15is_comment_node___get__(((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_15is_comment_node___get__(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + + /* "selectolax/lexbor/node.pxi":1069 + * def is_comment_node(self) -> bool: + * """Return True if the node represents a comment node.""" + * return _is_node_type(self.node, LXB_DOM_NODE_TYPE_COMMENT) # <<<<<<<<<<<<<< + * + * @property +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __pyx_f_10selectolax_6lexbor__is_node_type(__pyx_v_self->node, LXB_DOM_NODE_TYPE_COMMENT); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(4, 1069, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 1069, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; + + /* "selectolax/lexbor/node.pxi":1066 + * return _is_node_type(self.node, LXB_DOM_NODE_TYPE_TEXT) + * + * @property # <<<<<<<<<<<<<< + * def is_comment_node(self) -> bool: + * """Return True if the node represents a comment node.""" +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.is_comment_node.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor/node.pxi":1071 + * return _is_node_type(self.node, LXB_DOM_NODE_TYPE_COMMENT) + * + * @property # <<<<<<<<<<<<<< + * def is_document_node(self) -> bool: + * """Return True if the node represents a document node.""" +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_16is_document_node_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_16is_document_node_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6lexbor_10LexborNode_16is_document_node___get__(((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_16is_document_node___get__(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + + /* "selectolax/lexbor/node.pxi":1074 + * def is_document_node(self) -> bool: + * """Return True if the node represents a document node.""" + * return _is_node_type(self.node, LXB_DOM_NODE_TYPE_DOCUMENT) # <<<<<<<<<<<<<< + * + * @property +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __pyx_f_10selectolax_6lexbor__is_node_type(__pyx_v_self->node, LXB_DOM_NODE_TYPE_DOCUMENT); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(4, 1074, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 1074, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; + + /* "selectolax/lexbor/node.pxi":1071 + * return _is_node_type(self.node, LXB_DOM_NODE_TYPE_COMMENT) + * + * @property # <<<<<<<<<<<<<< + * def is_document_node(self) -> bool: + * """Return True if the node represents a document node.""" +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.is_document_node.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor/node.pxi":1076 + * return _is_node_type(self.node, LXB_DOM_NODE_TYPE_DOCUMENT) + * + * @property # <<<<<<<<<<<<<< + * def is_empty_text_node(self) -> bool: + * """Check whether the current node is an empty text node. +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_18is_empty_text_node_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_18is_empty_text_node_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6lexbor_10LexborNode_18is_empty_text_node___get__(((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_18is_empty_text_node___get__(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + + /* "selectolax/lexbor/node.pxi":1087 + * or carriage return). + * """ + * return is_empty_text_node(self.node) # <<<<<<<<<<<<<< + * + * +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __pyx_f_10selectolax_6lexbor_is_empty_text_node(__pyx_v_self->node); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(4, 1087, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 1087, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; + + /* "selectolax/lexbor/node.pxi":1076 + * return _is_node_type(self.node, LXB_DOM_NODE_TYPE_DOCUMENT) + * + * @property # <<<<<<<<<<<<<< + * def is_empty_text_node(self) -> bool: + * """Check whether the current node is an empty text node. +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.is_empty_text_node.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor.pxd":243 + * cdef: + * lxb_dom_node_t *node + * public LexborHTMLParser parser # <<<<<<<<<<<<<< + * cdef bint _is_fragment_root + * +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_6parser_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_6parser_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6lexbor_10LexborNode_6parser___get__(((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_6parser___get__(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__", 0); + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF((PyObject *)__pyx_v_self->parser); + __pyx_r = ((PyObject *)__pyx_v_self->parser); + goto __pyx_L0; + + /* function exit code */ + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_10selectolax_6lexbor_10LexborNode_6parser_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_10selectolax_6lexbor_10LexborNode_6parser_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6lexbor_10LexborNode_6parser_2__set__(((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_10selectolax_6lexbor_10LexborNode_6parser_2__set__(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self, PyObject *__pyx_v_value) { + int __pyx_r; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__set__", 0); + __pyx_t_1 = __pyx_v_value; + __Pyx_INCREF(__pyx_t_1); + if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborHTMLParser))))) __PYX_ERR(5, 243, __pyx_L1_error) + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF((PyObject *)__pyx_v_self->parser); + __Pyx_DECREF((PyObject *)__pyx_v_self->parser); + __pyx_v_self->parser = ((struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *)__pyx_t_1); + __pyx_t_1 = 0; + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.parser.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_10selectolax_6lexbor_10LexborNode_6parser_5__del__(PyObject *__pyx_v_self); /*proto*/ +static int __pyx_pw_10selectolax_6lexbor_10LexborNode_6parser_5__del__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6lexbor_10LexborNode_6parser_4__del__(((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_10selectolax_6lexbor_10LexborNode_6parser_4__del__(struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__del__", 0); + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + __Pyx_GOTREF((PyObject *)__pyx_v_self->parser); + __Pyx_DECREF((PyObject *)__pyx_v_self->parser); + __pyx_v_self->parser = ((struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *)Py_None); + + /* function exit code */ + __pyx_r = 0; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * raise TypeError, "self.node cannot be converted to a Python object for pickling" + * def __setstate_cython__(self, __pyx_state): +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_89__reduce_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6lexbor_10LexborNode_88__reduce_cython__, "LexborNode.__reduce_cython__(self)"); +static PyMethodDef __pyx_mdef_10selectolax_6lexbor_10LexborNode_89__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_10LexborNode_89__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_10LexborNode_88__reduce_cython__}; +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_89__reduce_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL; } + const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len < 0)) return NULL; + if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;} + __pyx_r = __pyx_pf_10selectolax_6lexbor_10LexborNode_88__reduce_cython__(((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_88__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__reduce_cython__", 0); + + /* "(tree fragment)":2 + * def __reduce_cython__(self): + * raise TypeError, "self.node cannot be converted to a Python object for pickling" # <<<<<<<<<<<<<< + * def __setstate_cython__(self, __pyx_state): + * raise TypeError, "self.node cannot be converted to a Python object for pickling" +*/ + __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), __pyx_mstate_global->__pyx_kp_u_self_node_cannot_be_converted_to, 0, 0); + __PYX_ERR(1, 2, __pyx_L1_error) + + /* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * raise TypeError, "self.node cannot be converted to a Python object for pickling" + * def __setstate_cython__(self, __pyx_state): +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":3 + * def __reduce_cython__(self): + * raise TypeError, "self.node cannot be converted to a Python object for pickling" + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * raise TypeError, "self.node cannot be converted to a Python object for pickling" +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_91__setstate_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6lexbor_10LexborNode_90__setstate_cython__, "LexborNode.__setstate_cython__(self, __pyx_state)"); +static PyMethodDef __pyx_mdef_10selectolax_6lexbor_10LexborNode_91__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_10LexborNode_91__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_10LexborNode_90__setstate_cython__}; +static PyObject *__pyx_pw_10selectolax_6lexbor_10LexborNode_91__setstate_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_state,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 3, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < (0)) __PYX_ERR(1, 3, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 3, __pyx_L3_error) } + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error) + } + __pyx_v___pyx_state = values[0]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_10selectolax_6lexbor_10LexborNode_90__setstate_cython__(((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_v_self), __pyx_v___pyx_state); + + /* function exit code */ + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_10LexborNode_90__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__setstate_cython__", 0); + + /* "(tree fragment)":4 + * raise TypeError, "self.node cannot be converted to a Python object for pickling" + * def __setstate_cython__(self, __pyx_state): + * raise TypeError, "self.node cannot be converted to a Python object for pickling" # <<<<<<<<<<<<<< +*/ + __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), __pyx_mstate_global->__pyx_kp_u_self_node_cannot_be_converted_to, 0, 0); + __PYX_ERR(1, 4, __pyx_L1_error) + + /* "(tree fragment)":3 + * def __reduce_cython__(self): + * raise TypeError, "self.node cannot be converted to a Python object for pickling" + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * raise TypeError, "self.node cannot be converted to a Python object for pickling" +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_AddTraceback("selectolax.lexbor.LexborNode.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor/node.pxi":1097 + * cdef bint strip + * + * @staticmethod # <<<<<<<<<<<<<< + * cdef TextContainer new_with_defaults(): + * cdef TextContainer cls = TextContainer.__new__(TextContainer) +*/ + +static struct __pyx_obj_10selectolax_6lexbor_TextContainer *__pyx_f_10selectolax_6lexbor_13TextContainer_new_with_defaults(void) { + struct __pyx_obj_10selectolax_6lexbor_TextContainer *__pyx_v_cls = 0; + struct __pyx_obj_10selectolax_6lexbor_TextContainer *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("new_with_defaults", 0); + + /* "selectolax/lexbor/node.pxi":1099 + * @staticmethod + * cdef TextContainer new_with_defaults(): + * cdef TextContainer cls = TextContainer.__new__(TextContainer) # <<<<<<<<<<<<<< + * cls._text = '' + * cls.separator = '' +*/ + __pyx_t_1 = ((PyObject *)__pyx_tp_new_10selectolax_6lexbor_TextContainer(((PyTypeObject *)__pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_TextContainer), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 1099, __pyx_L1_error) + __Pyx_GOTREF((PyObject *)__pyx_t_1); + __pyx_v_cls = ((struct __pyx_obj_10selectolax_6lexbor_TextContainer *)__pyx_t_1); + __pyx_t_1 = 0; + + /* "selectolax/lexbor/node.pxi":1100 + * cdef TextContainer new_with_defaults(): + * cdef TextContainer cls = TextContainer.__new__(TextContainer) + * cls._text = '' # <<<<<<<<<<<<<< + * cls.separator = '' + * cls.strip = False +*/ + __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u_); + __Pyx_GIVEREF(__pyx_mstate_global->__pyx_kp_u_); + __Pyx_GOTREF(__pyx_v_cls->_text); + __Pyx_DECREF(__pyx_v_cls->_text); + __pyx_v_cls->_text = __pyx_mstate_global->__pyx_kp_u_; + + /* "selectolax/lexbor/node.pxi":1101 + * cdef TextContainer cls = TextContainer.__new__(TextContainer) + * cls._text = '' + * cls.separator = '' # <<<<<<<<<<<<<< + * cls.strip = False + * return cls +*/ + __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u_); + __Pyx_GIVEREF(__pyx_mstate_global->__pyx_kp_u_); + __Pyx_GOTREF(__pyx_v_cls->separator); + __Pyx_DECREF(__pyx_v_cls->separator); + __pyx_v_cls->separator = __pyx_mstate_global->__pyx_kp_u_; + + /* "selectolax/lexbor/node.pxi":1102 + * cls._text = '' + * cls.separator = '' + * cls.strip = False # <<<<<<<<<<<<<< + * return cls + * +*/ + __pyx_v_cls->strip = 0; + + /* "selectolax/lexbor/node.pxi":1103 + * cls.separator = '' + * cls.strip = False + * return cls # <<<<<<<<<<<<<< + * + * def __init__(self, str separator = '', bool strip = False): +*/ + __Pyx_XDECREF((PyObject *)__pyx_r); + __Pyx_INCREF((PyObject *)__pyx_v_cls); + __pyx_r = __pyx_v_cls; + goto __pyx_L0; + + /* "selectolax/lexbor/node.pxi":1097 + * cdef bint strip + * + * @staticmethod # <<<<<<<<<<<<<< + * cdef TextContainer new_with_defaults(): + * cdef TextContainer cls = TextContainer.__new__(TextContainer) +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("selectolax.lexbor.TextContainer.new_with_defaults", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF((PyObject *)__pyx_v_cls); + __Pyx_XGIVEREF((PyObject *)__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor/node.pxi":1105 + * return cls + * + * def __init__(self, str separator = '', bool strip = False): # <<<<<<<<<<<<<< + * self._text = "" + * self.separator = separator +*/ + +/* Python wrapper */ +static int __pyx_pw_10selectolax_6lexbor_13TextContainer_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static int __pyx_pw_10selectolax_6lexbor_13TextContainer_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_separator = 0; + PyLongObject *__pyx_v_strip = 0; + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[2] = {0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1; + #endif + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_separator,&__pyx_mstate_global->__pyx_n_u_strip,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(4, 1105, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 2: + values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(4, 1105, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 1105, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__init__", 0) < (0)) __PYX_ERR(4, 1105, __pyx_L3_error) + if (!values[0]) values[0] = __Pyx_NewRef(((PyObject*)__pyx_mstate_global->__pyx_kp_u_)); + if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)((PyLongObject *)Py_False)); + } else { + switch (__pyx_nargs) { + case 2: + values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(4, 1105, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 1105, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + if (!values[0]) values[0] = __Pyx_NewRef(((PyObject*)__pyx_mstate_global->__pyx_kp_u_)); + if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)((PyLongObject *)Py_False)); + } + __pyx_v_separator = ((PyObject*)values[0]); + __pyx_v_strip = ((PyLongObject *)values[1]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("__init__", 0, 0, 2, __pyx_nargs); __PYX_ERR(4, 1105, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.lexbor.TextContainer.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return -1; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_separator), (&PyUnicode_Type), 1, "separator", 1))) __PYX_ERR(4, 1105, __pyx_L1_error) + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_strip), __pyx_mstate_global->__pyx_ptype_7cpython_4bool_bool, 1, "strip", 0))) __PYX_ERR(4, 1105, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6lexbor_13TextContainer___init__(((struct __pyx_obj_10selectolax_6lexbor_TextContainer *)__pyx_v_self), __pyx_v_separator, __pyx_v_strip); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = -1; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_10selectolax_6lexbor_13TextContainer___init__(struct __pyx_obj_10selectolax_6lexbor_TextContainer *__pyx_v_self, PyObject *__pyx_v_separator, PyLongObject *__pyx_v_strip) { + int __pyx_r; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__init__", 0); + + /* "selectolax/lexbor/node.pxi":1106 + * + * def __init__(self, str separator = '', bool strip = False): + * self._text = "" # <<<<<<<<<<<<<< + * self.separator = separator + * self.strip = strip +*/ + __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u_); + __Pyx_GIVEREF(__pyx_mstate_global->__pyx_kp_u_); + __Pyx_GOTREF(__pyx_v_self->_text); + __Pyx_DECREF(__pyx_v_self->_text); + __pyx_v_self->_text = __pyx_mstate_global->__pyx_kp_u_; + + /* "selectolax/lexbor/node.pxi":1107 + * def __init__(self, str separator = '', bool strip = False): + * self._text = "" + * self.separator = separator # <<<<<<<<<<<<<< + * self.strip = strip + * +*/ + __Pyx_INCREF(__pyx_v_separator); + __Pyx_GIVEREF(__pyx_v_separator); + __Pyx_GOTREF(__pyx_v_self->separator); + __Pyx_DECREF(__pyx_v_self->separator); + __pyx_v_self->separator = __pyx_v_separator; + + /* "selectolax/lexbor/node.pxi":1108 + * self._text = "" + * self.separator = separator + * self.strip = strip # <<<<<<<<<<<<<< + * + * def append(self, str node_text): +*/ + __pyx_t_1 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_v_strip)); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(4, 1108, __pyx_L1_error) + __pyx_v_self->strip = __pyx_t_1; + + /* "selectolax/lexbor/node.pxi":1105 + * return cls + * + * def __init__(self, str separator = '', bool strip = False): # <<<<<<<<<<<<<< + * self._text = "" + * self.separator = separator +*/ + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_AddTraceback("selectolax.lexbor.TextContainer.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor/node.pxi":1110 + * self.strip = strip + * + * def append(self, str node_text): # <<<<<<<<<<<<<< + * if self.strip: + * self._text += node_text.strip() + self.separator +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_13TextContainer_3append(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6lexbor_13TextContainer_2append, "TextContainer.append(self, str node_text)"); +static PyMethodDef __pyx_mdef_10selectolax_6lexbor_13TextContainer_3append = {"append", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_13TextContainer_3append, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_13TextContainer_2append}; +static PyObject *__pyx_pw_10selectolax_6lexbor_13TextContainer_3append(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_node_text = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("append (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_node_text,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(4, 1110, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 1110, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "append", 0) < (0)) __PYX_ERR(4, 1110, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("append", 1, 1, 1, i); __PYX_ERR(4, 1110, __pyx_L3_error) } + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 1110, __pyx_L3_error) + } + __pyx_v_node_text = ((PyObject*)values[0]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("append", 1, 1, 1, __pyx_nargs); __PYX_ERR(4, 1110, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.lexbor.TextContainer.append", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_node_text), (&PyUnicode_Type), 1, "node_text", 1))) __PYX_ERR(4, 1110, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6lexbor_13TextContainer_2append(((struct __pyx_obj_10selectolax_6lexbor_TextContainer *)__pyx_v_self), __pyx_v_node_text); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_13TextContainer_2append(struct __pyx_obj_10selectolax_6lexbor_TextContainer *__pyx_v_self, PyObject *__pyx_v_node_text) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("append", 0); + + /* "selectolax/lexbor/node.pxi":1111 + * + * def append(self, str node_text): + * if self.strip: # <<<<<<<<<<<<<< + * self._text += node_text.strip() + self.separator + * else: +*/ + if (__pyx_v_self->strip) { + + /* "selectolax/lexbor/node.pxi":1112 + * def append(self, str node_text): + * if self.strip: + * self._text += node_text.strip() + self.separator # <<<<<<<<<<<<<< + * else: + * self._text += node_text + self.separator +*/ + __pyx_t_1 = __Pyx_CallUnboundCMethod0(&__pyx_mstate_global->__pyx_umethod_PyUnicode_Type__strip, __pyx_v_node_text); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 1112, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlaceSafe(__pyx_t_1, __pyx_v_self->separator); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 1112, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlaceSafe(__pyx_v_self->_text, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 1112, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF(__pyx_v_self->_text); + __Pyx_DECREF(__pyx_v_self->_text); + __pyx_v_self->_text = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* "selectolax/lexbor/node.pxi":1111 + * + * def append(self, str node_text): + * if self.strip: # <<<<<<<<<<<<<< + * self._text += node_text.strip() + self.separator + * else: +*/ + goto __pyx_L3; + } + + /* "selectolax/lexbor/node.pxi":1114 + * self._text += node_text.strip() + self.separator + * else: + * self._text += node_text + self.separator # <<<<<<<<<<<<<< + * + * @property +*/ + /*else*/ { + __pyx_t_1 = __Pyx_PyUnicode_ConcatSafe(__pyx_v_node_text, __pyx_v_self->separator); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 1114, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlaceSafe(__pyx_v_self->_text, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 1114, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_GIVEREF(__pyx_t_2); + __Pyx_GOTREF(__pyx_v_self->_text); + __Pyx_DECREF(__pyx_v_self->_text); + __pyx_v_self->_text = ((PyObject*)__pyx_t_2); + __pyx_t_2 = 0; + } + __pyx_L3:; + + /* "selectolax/lexbor/node.pxi":1110 + * self.strip = strip + * + * def append(self, str node_text): # <<<<<<<<<<<<<< + * if self.strip: + * self._text += node_text.strip() + self.separator +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("selectolax.lexbor.TextContainer.append", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor/node.pxi":1116 + * self._text += node_text + self.separator + * + * @property # <<<<<<<<<<<<<< + * def text(self): + * if self.separator and self._text and self._text.endswith(self.separator): +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_13TextContainer_4text_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_10selectolax_6lexbor_13TextContainer_4text_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6lexbor_13TextContainer_4text___get__(((struct __pyx_obj_10selectolax_6lexbor_TextContainer *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_13TextContainer_4text___get__(struct __pyx_obj_10selectolax_6lexbor_TextContainer *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + Py_ssize_t __pyx_t_4; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + + /* "selectolax/lexbor/node.pxi":1118 + * @property + * def text(self): + * if self.separator and self._text and self._text.endswith(self.separator): # <<<<<<<<<<<<<< + * self._text = self._text[:-len(self.separator)] + * return self._text +*/ + if (__pyx_v_self->separator == Py_None) __pyx_t_2 = 0; + else + { + Py_ssize_t __pyx_temp = __Pyx_PyUnicode_IS_TRUE(__pyx_v_self->separator); + if (unlikely(((!CYTHON_ASSUME_SAFE_SIZE) && __pyx_temp < 0))) __PYX_ERR(4, 1118, __pyx_L1_error) + __pyx_t_2 = (__pyx_temp != 0); + } + + if (__pyx_t_2) { + } else { + __pyx_t_1 = __pyx_t_2; + goto __pyx_L4_bool_binop_done; + } + if (__pyx_v_self->_text == Py_None) __pyx_t_2 = 0; + else + { + Py_ssize_t __pyx_temp = __Pyx_PyUnicode_IS_TRUE(__pyx_v_self->_text); + if (unlikely(((!CYTHON_ASSUME_SAFE_SIZE) && __pyx_temp < 0))) __PYX_ERR(4, 1118, __pyx_L1_error) + __pyx_t_2 = (__pyx_temp != 0); + } + + if (__pyx_t_2) { + } else { + __pyx_t_1 = __pyx_t_2; + goto __pyx_L4_bool_binop_done; + } + if (unlikely(__pyx_v_self->_text == Py_None)) { + PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "endswith"); + __PYX_ERR(4, 1118, __pyx_L1_error) + } + __pyx_t_2 = __Pyx_PyUnicode_Tailmatch(__pyx_v_self->_text, __pyx_v_self->separator, 0, PY_SSIZE_T_MAX, 1); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(4, 1118, __pyx_L1_error) + __pyx_t_1 = __pyx_t_2; + __pyx_L4_bool_binop_done:; + if (__pyx_t_1) { + + /* "selectolax/lexbor/node.pxi":1119 + * def text(self): + * if self.separator and self._text and self._text.endswith(self.separator): + * self._text = self._text[:-len(self.separator)] # <<<<<<<<<<<<<< + * return self._text + * +*/ + if (unlikely(__pyx_v_self->_text == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(4, 1119, __pyx_L1_error) + } + __pyx_t_3 = __pyx_v_self->separator; + __Pyx_INCREF(__pyx_t_3); + if (unlikely(__pyx_t_3 == Py_None)) { + PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); + __PYX_ERR(4, 1119, __pyx_L1_error) + } + __pyx_t_4 = __Pyx_PyUnicode_GET_LENGTH(__pyx_t_3); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(4, 1119, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyUnicode_Substring(__pyx_v_self->_text, 0, (-__pyx_t_4)); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 1119, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_3); + __Pyx_GOTREF(__pyx_v_self->_text); + __Pyx_DECREF(__pyx_v_self->_text); + __pyx_v_self->_text = ((PyObject*)__pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/lexbor/node.pxi":1118 + * @property + * def text(self): + * if self.separator and self._text and self._text.endswith(self.separator): # <<<<<<<<<<<<<< + * self._text = self._text[:-len(self.separator)] + * return self._text +*/ + } + + /* "selectolax/lexbor/node.pxi":1120 + * if self.separator and self._text and self._text.endswith(self.separator): + * self._text = self._text[:-len(self.separator)] + * return self._text # <<<<<<<<<<<<<< + * + * cdef lexbor_action_t text_callback(lxb_dom_node_t *node, void *ctx): +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_self->_text); + __pyx_r = __pyx_v_self->_text; + goto __pyx_L0; + + /* "selectolax/lexbor/node.pxi":1116 + * self._text += node_text + self.separator + * + * @property # <<<<<<<<<<<<<< + * def text(self): + * if self.separator and self._text and self._text.endswith(self.separator): +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("selectolax.lexbor.TextContainer.text.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * cdef tuple state + * cdef object _dict +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_13TextContainer_5__reduce_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6lexbor_13TextContainer_4__reduce_cython__, "TextContainer.__reduce_cython__(self)"); +static PyMethodDef __pyx_mdef_10selectolax_6lexbor_13TextContainer_5__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_13TextContainer_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_13TextContainer_4__reduce_cython__}; +static PyObject *__pyx_pw_10selectolax_6lexbor_13TextContainer_5__reduce_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL; } + const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len < 0)) return NULL; + if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;} + __pyx_r = __pyx_pf_10selectolax_6lexbor_13TextContainer_4__reduce_cython__(((struct __pyx_obj_10selectolax_6lexbor_TextContainer *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_13TextContainer_4__reduce_cython__(struct __pyx_obj_10selectolax_6lexbor_TextContainer *__pyx_v_self) { + PyObject *__pyx_v_state = 0; + PyObject *__pyx_v__dict = 0; + int __pyx_v_use_setstate; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + int __pyx_t_3; + int __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__reduce_cython__", 0); + + /* "(tree fragment)":5 + * cdef object _dict + * cdef bint use_setstate + * state = (self._text, self.separator, self.strip) # <<<<<<<<<<<<<< + * _dict = getattr(self, '__dict__', None) + * if _dict is not None and _dict: +*/ + __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->strip); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(__pyx_v_self->_text); + __Pyx_GIVEREF(__pyx_v_self->_text); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_self->_text) != (0)) __PYX_ERR(1, 5, __pyx_L1_error); + __Pyx_INCREF(__pyx_v_self->separator); + __Pyx_GIVEREF(__pyx_v_self->separator); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_self->separator) != (0)) __PYX_ERR(1, 5, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_1); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_t_1) != (0)) __PYX_ERR(1, 5, __pyx_L1_error); + __pyx_t_1 = 0; + __pyx_v_state = ((PyObject*)__pyx_t_2); + __pyx_t_2 = 0; + + /* "(tree fragment)":6 + * cdef bint use_setstate + * state = (self._text, self.separator, self.strip) + * _dict = getattr(self, '__dict__', None) # <<<<<<<<<<<<<< + * if _dict is not None and _dict: + * state += (_dict,) +*/ + __pyx_t_2 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_dict, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_v__dict = __pyx_t_2; + __pyx_t_2 = 0; + + /* "(tree fragment)":7 + * state = (self._text, self.separator, self.strip) + * _dict = getattr(self, '__dict__', None) + * if _dict is not None and _dict: # <<<<<<<<<<<<<< + * state += (_dict,) + * use_setstate = True +*/ + __pyx_t_4 = (__pyx_v__dict != Py_None); + if (__pyx_t_4) { + } else { + __pyx_t_3 = __pyx_t_4; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v__dict); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(1, 7, __pyx_L1_error) + __pyx_t_3 = __pyx_t_4; + __pyx_L4_bool_binop_done:; + if (__pyx_t_3) { + + /* "(tree fragment)":8 + * _dict = getattr(self, '__dict__', None) + * if _dict is not None and _dict: + * state += (_dict,) # <<<<<<<<<<<<<< + * use_setstate = True + * else: +*/ + __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 8, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(__pyx_v__dict); + __Pyx_GIVEREF(__pyx_v__dict); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v__dict) != (0)) __PYX_ERR(1, 8, __pyx_L1_error); + __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 8, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_1)); + __pyx_t_1 = 0; + + /* "(tree fragment)":9 + * if _dict is not None and _dict: + * state += (_dict,) + * use_setstate = True # <<<<<<<<<<<<<< + * else: + * use_setstate = ('self._text is not None or self.separator is not None',) +*/ + __pyx_v_use_setstate = 1; + + /* "(tree fragment)":7 + * state = (self._text, self.separator, self.strip) + * _dict = getattr(self, '__dict__', None) + * if _dict is not None and _dict: # <<<<<<<<<<<<<< + * state += (_dict,) + * use_setstate = True +*/ + goto __pyx_L3; + } + + /* "(tree fragment)":11 + * use_setstate = True + * else: + * use_setstate = ('self._text is not None or self.separator is not None',) # <<<<<<<<<<<<<< + * if use_setstate: + * return __pyx_unpickle_TextContainer, (type(self), 0x69fd762, None), state +*/ + /*else*/ { + __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_mstate_global->__pyx_tuple[0]); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 11, __pyx_L1_error) + __pyx_v_use_setstate = __pyx_t_3; + } + __pyx_L3:; + + /* "(tree fragment)":12 + * else: + * use_setstate = ('self._text is not None or self.separator is not None',) + * if use_setstate: # <<<<<<<<<<<<<< + * return __pyx_unpickle_TextContainer, (type(self), 0x69fd762, None), state + * else: +*/ + if (__pyx_v_use_setstate) { + + /* "(tree fragment)":13 + * use_setstate = ('self._text is not None or self.separator is not None',) + * if use_setstate: + * return __pyx_unpickle_TextContainer, (type(self), 0x69fd762, None), state # <<<<<<<<<<<<<< + * else: + * return __pyx_unpickle_TextContainer, (type(self), 0x69fd762, state) +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_pyx_unpickle_TextContainer); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); + __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))) != (0)) __PYX_ERR(1, 13, __pyx_L1_error); + __Pyx_INCREF(__pyx_mstate_global->__pyx_int_111138658); + __Pyx_GIVEREF(__pyx_mstate_global->__pyx_int_111138658); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_mstate_global->__pyx_int_111138658) != (0)) __PYX_ERR(1, 13, __pyx_L1_error); + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 2, Py_None) != (0)) __PYX_ERR(1, 13, __pyx_L1_error); + __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_GIVEREF(__pyx_t_1); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1) != (0)) __PYX_ERR(1, 13, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_2); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_2) != (0)) __PYX_ERR(1, 13, __pyx_L1_error); + __Pyx_INCREF(__pyx_v_state); + __Pyx_GIVEREF(__pyx_v_state); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_v_state) != (0)) __PYX_ERR(1, 13, __pyx_L1_error); + __pyx_t_1 = 0; + __pyx_t_2 = 0; + __pyx_r = __pyx_t_5; + __pyx_t_5 = 0; + goto __pyx_L0; + + /* "(tree fragment)":12 + * else: + * use_setstate = ('self._text is not None or self.separator is not None',) + * if use_setstate: # <<<<<<<<<<<<<< + * return __pyx_unpickle_TextContainer, (type(self), 0x69fd762, None), state + * else: +*/ + } + + /* "(tree fragment)":15 + * return __pyx_unpickle_TextContainer, (type(self), 0x69fd762, None), state + * else: + * return __pyx_unpickle_TextContainer, (type(self), 0x69fd762, state) # <<<<<<<<<<<<<< + * def __setstate_cython__(self, __pyx_state): + * __pyx_unpickle_TextContainer__set_state(self, __pyx_state) +*/ + /*else*/ { + __Pyx_XDECREF(__pyx_r); + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_pyx_unpickle_TextContainer); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 15, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 15, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); + __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))) != (0)) __PYX_ERR(1, 15, __pyx_L1_error); + __Pyx_INCREF(__pyx_mstate_global->__pyx_int_111138658); + __Pyx_GIVEREF(__pyx_mstate_global->__pyx_int_111138658); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_mstate_global->__pyx_int_111138658) != (0)) __PYX_ERR(1, 15, __pyx_L1_error); + __Pyx_INCREF(__pyx_v_state); + __Pyx_GIVEREF(__pyx_v_state); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_state) != (0)) __PYX_ERR(1, 15, __pyx_L1_error); + __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_5); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_5) != (0)) __PYX_ERR(1, 15, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_2); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2) != (0)) __PYX_ERR(1, 15, __pyx_L1_error); + __pyx_t_5 = 0; + __pyx_t_2 = 0; + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + } + + /* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * cdef tuple state + * cdef object _dict +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_AddTraceback("selectolax.lexbor.TextContainer.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_state); + __Pyx_XDECREF(__pyx_v__dict); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":16 + * else: + * return __pyx_unpickle_TextContainer, (type(self), 0x69fd762, state) + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * __pyx_unpickle_TextContainer__set_state(self, __pyx_state) +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_13TextContainer_7__setstate_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6lexbor_13TextContainer_6__setstate_cython__, "TextContainer.__setstate_cython__(self, __pyx_state)"); +static PyMethodDef __pyx_mdef_10selectolax_6lexbor_13TextContainer_7__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_13TextContainer_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_13TextContainer_6__setstate_cython__}; +static PyObject *__pyx_pw_10selectolax_6lexbor_13TextContainer_7__setstate_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v___pyx_state = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_state,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 16, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 16, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < (0)) __PYX_ERR(1, 16, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 16, __pyx_L3_error) } + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 16, __pyx_L3_error) + } + __pyx_v___pyx_state = values[0]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 16, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.lexbor.TextContainer.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_10selectolax_6lexbor_13TextContainer_6__setstate_cython__(((struct __pyx_obj_10selectolax_6lexbor_TextContainer *)__pyx_v_self), __pyx_v___pyx_state); + + /* function exit code */ + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_13TextContainer_6__setstate_cython__(struct __pyx_obj_10selectolax_6lexbor_TextContainer *__pyx_v_self, PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__setstate_cython__", 0); + + /* "(tree fragment)":17 + * return __pyx_unpickle_TextContainer, (type(self), 0x69fd762, state) + * def __setstate_cython__(self, __pyx_state): + * __pyx_unpickle_TextContainer__set_state(self, __pyx_state) # <<<<<<<<<<<<<< +*/ + __pyx_t_1 = __pyx_f_10selectolax_6lexbor___pyx_unpickle_TextContainer__set_state(__pyx_v_self, __pyx_v___pyx_state); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "(tree fragment)":16 + * else: + * return __pyx_unpickle_TextContainer, (type(self), 0x69fd762, state) + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * __pyx_unpickle_TextContainer__set_state(self, __pyx_state) +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("selectolax.lexbor.TextContainer.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor/node.pxi":1122 + * return self._text + * + * cdef lexbor_action_t text_callback(lxb_dom_node_t *node, void *ctx): # <<<<<<<<<<<<<< + * cdef unsigned char *text + * cdef lxb_tag_id_t tag_id = lxb_dom_node_tag_id_noi(node) +*/ + +static lexbor_action_t __pyx_f_10selectolax_6lexbor_text_callback(lxb_dom_node_t *__pyx_v_node, void *__pyx_v_ctx) { + unsigned char *__pyx_v_text; + lxb_tag_id_t __pyx_v_tag_id; + PyObject *__pyx_v_py_str = NULL; + PyObject *__pyx_v_e = NULL; + struct __pyx_obj_10selectolax_6lexbor_TextContainer *__pyx_v_cls = 0; + lexbor_action_t __pyx_r; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + size_t __pyx_t_9; + int __pyx_t_10; + lexbor_action_t __pyx_t_11; + int __pyx_t_12; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("text_callback", 0); + + /* "selectolax/lexbor/node.pxi":1124 + * cdef lexbor_action_t text_callback(lxb_dom_node_t *node, void *ctx): + * cdef unsigned char *text + * cdef lxb_tag_id_t tag_id = lxb_dom_node_tag_id_noi(node) # <<<<<<<<<<<<<< + * if tag_id != LXB_TAG__TEXT: + * return LEXBOR_ACTION_OK +*/ + __pyx_v_tag_id = lxb_dom_node_tag_id_noi(__pyx_v_node); + + /* "selectolax/lexbor/node.pxi":1125 + * cdef unsigned char *text + * cdef lxb_tag_id_t tag_id = lxb_dom_node_tag_id_noi(node) + * if tag_id != LXB_TAG__TEXT: # <<<<<<<<<<<<<< + * return LEXBOR_ACTION_OK + * +*/ + __pyx_t_1 = (__pyx_v_tag_id != LXB_TAG__TEXT); + if (__pyx_t_1) { + + /* "selectolax/lexbor/node.pxi":1126 + * cdef lxb_tag_id_t tag_id = lxb_dom_node_tag_id_noi(node) + * if tag_id != LXB_TAG__TEXT: + * return LEXBOR_ACTION_OK # <<<<<<<<<<<<<< + * + * text = lexbor_str_data_noi(&( node).char_data.data) +*/ + __pyx_r = LEXBOR_ACTION_OK; + goto __pyx_L0; + + /* "selectolax/lexbor/node.pxi":1125 + * cdef unsigned char *text + * cdef lxb_tag_id_t tag_id = lxb_dom_node_tag_id_noi(node) + * if tag_id != LXB_TAG__TEXT: # <<<<<<<<<<<<<< + * return LEXBOR_ACTION_OK + * +*/ + } + + /* "selectolax/lexbor/node.pxi":1128 + * return LEXBOR_ACTION_OK + * + * text = lexbor_str_data_noi(&( node).char_data.data) # <<<<<<<<<<<<<< + * if not text: + * return LEXBOR_ACTION_OK +*/ + __pyx_v_text = ((unsigned char *)lexbor_str_data_noi((&((lxb_dom_text_t *)__pyx_v_node)->char_data.data))); + + /* "selectolax/lexbor/node.pxi":1129 + * + * text = lexbor_str_data_noi(&( node).char_data.data) + * if not text: # <<<<<<<<<<<<<< + * return LEXBOR_ACTION_OK + * +*/ + __pyx_t_1 = (!(__pyx_v_text != 0)); + if (__pyx_t_1) { + + /* "selectolax/lexbor/node.pxi":1130 + * text = lexbor_str_data_noi(&( node).char_data.data) + * if not text: + * return LEXBOR_ACTION_OK # <<<<<<<<<<<<<< + * + * try: +*/ + __pyx_r = LEXBOR_ACTION_OK; + goto __pyx_L0; + + /* "selectolax/lexbor/node.pxi":1129 + * + * text = lexbor_str_data_noi(&( node).char_data.data) + * if not text: # <<<<<<<<<<<<<< + * return LEXBOR_ACTION_OK + * +*/ + } + + /* "selectolax/lexbor/node.pxi":1132 + * return LEXBOR_ACTION_OK + * + * try: # <<<<<<<<<<<<<< + * py_str = text.decode(_ENCODING, "replace") + * +*/ + { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4); + __Pyx_XGOTREF(__pyx_t_2); + __Pyx_XGOTREF(__pyx_t_3); + __Pyx_XGOTREF(__pyx_t_4); + /*try:*/ { + + /* "selectolax/lexbor/node.pxi":1133 + * + * try: + * py_str = text.decode(_ENCODING, "replace") # <<<<<<<<<<<<<< + * + * except Exception as e: +*/ + __pyx_t_7 = __Pyx_PyBytes_FromCString(__pyx_v_text); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 1133, __pyx_L5_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_6 = __pyx_t_7; + __Pyx_INCREF(__pyx_t_6); + __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_ENCODING); if (unlikely(!__pyx_t_8)) __PYX_ERR(4, 1133, __pyx_L5_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_9 = 0; + { + PyObject *__pyx_callargs[3] = {__pyx_t_6, __pyx_t_8, __pyx_mstate_global->__pyx_n_u_replace}; + __pyx_t_5 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_decode, __pyx_callargs+__pyx_t_9, (3-__pyx_t_9) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 1133, __pyx_L5_error) + __Pyx_GOTREF(__pyx_t_5); + } + __pyx_v_py_str = __pyx_t_5; + __pyx_t_5 = 0; + + /* "selectolax/lexbor/node.pxi":1132 + * return LEXBOR_ACTION_OK + * + * try: # <<<<<<<<<<<<<< + * py_str = text.decode(_ENCODING, "replace") + * +*/ + } + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + goto __pyx_L10_try_end; + __pyx_L5_error:; + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + + /* "selectolax/lexbor/node.pxi":1135 + * py_str = text.decode(_ENCODING, "replace") + * + * except Exception as e: # <<<<<<<<<<<<<< + * PyErr_SetNone(e) + * return LEXBOR_ACTION_STOP +*/ + __pyx_t_10 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_Exception)))); + if (__pyx_t_10) { + __Pyx_AddTraceback("selectolax.lexbor.text_callback", __pyx_clineno, __pyx_lineno, __pyx_filename); + if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_7, &__pyx_t_8) < 0) __PYX_ERR(4, 1135, __pyx_L7_except_error) + __Pyx_XGOTREF(__pyx_t_5); + __Pyx_XGOTREF(__pyx_t_7); + __Pyx_XGOTREF(__pyx_t_8); + __Pyx_INCREF(__pyx_t_7); + __pyx_v_e = __pyx_t_7; + /*try:*/ { + + /* "selectolax/lexbor/node.pxi":1136 + * + * except Exception as e: + * PyErr_SetNone(e) # <<<<<<<<<<<<<< + * return LEXBOR_ACTION_STOP + * +*/ + PyErr_SetNone(__pyx_v_e); + + /* "selectolax/lexbor/node.pxi":1137 + * except Exception as e: + * PyErr_SetNone(e) + * return LEXBOR_ACTION_STOP # <<<<<<<<<<<<<< + * + * cdef TextContainer cls +*/ + __pyx_r = LEXBOR_ACTION_STOP; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + goto __pyx_L15_return; + } + + /* "selectolax/lexbor/node.pxi":1135 + * py_str = text.decode(_ENCODING, "replace") + * + * except Exception as e: # <<<<<<<<<<<<<< + * PyErr_SetNone(e) + * return LEXBOR_ACTION_STOP +*/ + /*finally:*/ { + __pyx_L15_return: { + __pyx_t_11 = __pyx_r; + __Pyx_DECREF(__pyx_v_e); __pyx_v_e = 0; + __pyx_r = __pyx_t_11; + goto __pyx_L8_except_return; + } + } + } + goto __pyx_L7_except_error; + + /* "selectolax/lexbor/node.pxi":1132 + * return LEXBOR_ACTION_OK + * + * try: # <<<<<<<<<<<<<< + * py_str = text.decode(_ENCODING, "replace") + * +*/ + __pyx_L7_except_error:; + __Pyx_XGIVEREF(__pyx_t_2); + __Pyx_XGIVEREF(__pyx_t_3); + __Pyx_XGIVEREF(__pyx_t_4); + __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4); + goto __pyx_L1_error; + __pyx_L8_except_return:; + __Pyx_XGIVEREF(__pyx_t_2); + __Pyx_XGIVEREF(__pyx_t_3); + __Pyx_XGIVEREF(__pyx_t_4); + __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4); + goto __pyx_L0; + __pyx_L10_try_end:; + } + + /* "selectolax/lexbor/node.pxi":1140 + * + * cdef TextContainer cls + * cls = ctx # <<<<<<<<<<<<<< + * cls.append(py_str) + * return LEXBOR_ACTION_OK +*/ + __pyx_t_8 = ((PyObject *)__pyx_v_ctx); + __Pyx_INCREF(__pyx_t_8); + __pyx_v_cls = ((struct __pyx_obj_10selectolax_6lexbor_TextContainer *)__pyx_t_8); + __pyx_t_8 = 0; + + /* "selectolax/lexbor/node.pxi":1141 + * cdef TextContainer cls + * cls = ctx + * cls.append(py_str) # <<<<<<<<<<<<<< + * return LEXBOR_ACTION_OK + * +*/ + __pyx_t_12 = __Pyx_PyObject_Append(((PyObject *)__pyx_v_cls), __pyx_v_py_str); if (unlikely(__pyx_t_12 == ((int)-1))) __PYX_ERR(4, 1141, __pyx_L1_error) + + /* "selectolax/lexbor/node.pxi":1142 + * cls = ctx + * cls.append(py_str) + * return LEXBOR_ACTION_OK # <<<<<<<<<<<<<< + * + * cdef lxb_status_t serialize_fragment(lxb_dom_node_t *node, lexbor_str_t *lxb_str): +*/ + __pyx_r = LEXBOR_ACTION_OK; + goto __pyx_L0; + + /* "selectolax/lexbor/node.pxi":1122 + * return self._text + * + * cdef lexbor_action_t text_callback(lxb_dom_node_t *node, void *ctx): # <<<<<<<<<<<<<< + * cdef unsigned char *text + * cdef lxb_tag_id_t tag_id = lxb_dom_node_tag_id_noi(node) +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_AddTraceback("selectolax.lexbor.text_callback", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = (lexbor_action_t) 0; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_py_str); + __Pyx_XDECREF(__pyx_v_e); + __Pyx_XDECREF((PyObject *)__pyx_v_cls); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor/node.pxi":1144 + * return LEXBOR_ACTION_OK + * + * cdef lxb_status_t serialize_fragment(lxb_dom_node_t *node, lexbor_str_t *lxb_str): # <<<<<<<<<<<<<< + * cdef lxb_status_t status + * while node != NULL: +*/ + +static lxb_status_t __pyx_f_10selectolax_6lexbor_serialize_fragment(lxb_dom_node_t *__pyx_v_node, lexbor_str_t *__pyx_v_lxb_str) { + lxb_status_t __pyx_v_status; + lxb_status_t __pyx_r; + int __pyx_t_1; + lxb_dom_node_t *__pyx_t_2; + + /* "selectolax/lexbor/node.pxi":1146 + * cdef lxb_status_t serialize_fragment(lxb_dom_node_t *node, lexbor_str_t *lxb_str): + * cdef lxb_status_t status + * while node != NULL: # <<<<<<<<<<<<<< + * status = lxb_html_serialize_tree_str(node, lxb_str) + * if status != LXB_STATUS_OK: +*/ + while (1) { + __pyx_t_1 = (__pyx_v_node != NULL); + if (!__pyx_t_1) break; + + /* "selectolax/lexbor/node.pxi":1147 + * cdef lxb_status_t status + * while node != NULL: + * status = lxb_html_serialize_tree_str(node, lxb_str) # <<<<<<<<<<<<<< + * if status != LXB_STATUS_OK: + * return status +*/ + __pyx_v_status = lxb_html_serialize_tree_str(__pyx_v_node, __pyx_v_lxb_str); + + /* "selectolax/lexbor/node.pxi":1148 + * while node != NULL: + * status = lxb_html_serialize_tree_str(node, lxb_str) + * if status != LXB_STATUS_OK: # <<<<<<<<<<<<<< + * return status + * node = node.next +*/ + __pyx_t_1 = (__pyx_v_status != LXB_STATUS_OK); + if (__pyx_t_1) { + + /* "selectolax/lexbor/node.pxi":1149 + * status = lxb_html_serialize_tree_str(node, lxb_str) + * if status != LXB_STATUS_OK: + * return status # <<<<<<<<<<<<<< + * node = node.next + * +*/ + __pyx_r = __pyx_v_status; + goto __pyx_L0; + + /* "selectolax/lexbor/node.pxi":1148 + * while node != NULL: + * status = lxb_html_serialize_tree_str(node, lxb_str) + * if status != LXB_STATUS_OK: # <<<<<<<<<<<<<< + * return status + * node = node.next +*/ + } + + /* "selectolax/lexbor/node.pxi":1150 + * if status != LXB_STATUS_OK: + * return status + * node = node.next # <<<<<<<<<<<<<< + * + * return LXB_STATUS_OK +*/ + __pyx_t_2 = __pyx_v_node->next; + __pyx_v_node = __pyx_t_2; + } + + /* "selectolax/lexbor/node.pxi":1152 + * node = node.next + * + * return LXB_STATUS_OK # <<<<<<<<<<<<<< + * + * cdef inline bint _is_node_type(lxb_dom_node_t *node, lxb_dom_node_type_t expected_type): +*/ + __pyx_r = LXB_STATUS_OK; + goto __pyx_L0; + + /* "selectolax/lexbor/node.pxi":1144 + * return LEXBOR_ACTION_OK + * + * cdef lxb_status_t serialize_fragment(lxb_dom_node_t *node, lexbor_str_t *lxb_str): # <<<<<<<<<<<<<< + * cdef lxb_status_t status + * while node != NULL: +*/ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "selectolax/lexbor/node.pxi":1154 + * return LXB_STATUS_OK + * + * cdef inline bint _is_node_type(lxb_dom_node_t *node, lxb_dom_node_type_t expected_type): # <<<<<<<<<<<<<< + * return node != NULL and node.type == expected_type +*/ + +static CYTHON_INLINE int __pyx_f_10selectolax_6lexbor__is_node_type(lxb_dom_node_t *__pyx_v_node, lxb_dom_node_type_t __pyx_v_expected_type) { + int __pyx_r; + int __pyx_t_1; + int __pyx_t_2; + + /* "selectolax/lexbor/node.pxi":1155 + * + * cdef inline bint _is_node_type(lxb_dom_node_t *node, lxb_dom_node_type_t expected_type): + * return node != NULL and node.type == expected_type # <<<<<<<<<<<<<< +*/ + __pyx_t_2 = (__pyx_v_node != NULL); + if (__pyx_t_2) { + } else { + __pyx_t_1 = __pyx_t_2; + goto __pyx_L3_bool_binop_done; + } + __pyx_t_2 = (__pyx_v_node->type == __pyx_v_expected_type); + __pyx_t_1 = __pyx_t_2; + __pyx_L3_bool_binop_done:; + __pyx_r = __pyx_t_1; + goto __pyx_L0; + + /* "selectolax/lexbor/node.pxi":1154 + * return LXB_STATUS_OK + * + * cdef inline bint _is_node_type(lxb_dom_node_t *node, lxb_dom_node_type_t expected_type): # <<<<<<<<<<<<<< + * return node != NULL and node.type == expected_type +*/ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "selectolax/lexbor/selection.pxi":9 + * cdef class LexborCSSSelector: + * + * def __init__(self): # <<<<<<<<<<<<<< + * self._create_css_parser() + * self.results = [] +*/ + +/* Python wrapper */ +static int __pyx_pw_10selectolax_6lexbor_17LexborCSSSelector_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static int __pyx_pw_10selectolax_6lexbor_17LexborCSSSelector_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1; + #endif + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, __pyx_nargs); return -1; } + const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len < 0)) return -1; + if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__init__", __pyx_kwds); return -1;} + __pyx_r = __pyx_pf_10selectolax_6lexbor_17LexborCSSSelector___init__(((struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_10selectolax_6lexbor_17LexborCSSSelector___init__(struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector *__pyx_v_self) { + int __pyx_r; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__init__", 0); + + /* "selectolax/lexbor/selection.pxi":10 + * + * def __init__(self): + * self._create_css_parser() # <<<<<<<<<<<<<< + * self.results = [] + * self.current_node = None +*/ + __pyx_t_1 = __pyx_f_10selectolax_6lexbor_17LexborCSSSelector__create_css_parser(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(6, 10, __pyx_L1_error) + + /* "selectolax/lexbor/selection.pxi":11 + * def __init__(self): + * self._create_css_parser() + * self.results = [] # <<<<<<<<<<<<<< + * self.current_node = None + * +*/ + __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 11, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); + __Pyx_GOTREF(__pyx_v_self->results); + __Pyx_DECREF(__pyx_v_self->results); + __pyx_v_self->results = ((PyObject*)__pyx_t_2); + __pyx_t_2 = 0; + + /* "selectolax/lexbor/selection.pxi":12 + * self._create_css_parser() + * self.results = [] + * self.current_node = None # <<<<<<<<<<<<<< + * + * cdef int _create_css_parser(self) except -1: +*/ + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + __Pyx_GOTREF((PyObject *)__pyx_v_self->current_node); + __Pyx_DECREF((PyObject *)__pyx_v_self->current_node); + __pyx_v_self->current_node = ((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)Py_None); + + /* "selectolax/lexbor/selection.pxi":9 + * cdef class LexborCSSSelector: + * + * def __init__(self): # <<<<<<<<<<<<<< + * self._create_css_parser() + * self.results = [] +*/ + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("selectolax.lexbor.LexborCSSSelector.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor/selection.pxi":14 + * self.current_node = None + * + * cdef int _create_css_parser(self) except -1: # <<<<<<<<<<<<<< + * cdef lxb_status_t status + * +*/ + +static int __pyx_f_10selectolax_6lexbor_17LexborCSSSelector__create_css_parser(struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector *__pyx_v_self) { + lxb_status_t __pyx_v_status; + int __pyx_r; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("_create_css_parser", 0); + + /* "selectolax/lexbor/selection.pxi":17 + * cdef lxb_status_t status + * + * self.parser = lxb_css_parser_create() # <<<<<<<<<<<<<< + * status = lxb_css_parser_init(self.parser, NULL) + * +*/ + __pyx_v_self->parser = lxb_css_parser_create(); + + /* "selectolax/lexbor/selection.pxi":18 + * + * self.parser = lxb_css_parser_create() + * status = lxb_css_parser_init(self.parser, NULL) # <<<<<<<<<<<<<< + * + * if status != LXB_STATUS_OK: +*/ + __pyx_v_status = lxb_css_parser_init(__pyx_v_self->parser, NULL); + + /* "selectolax/lexbor/selection.pxi":20 + * status = lxb_css_parser_init(self.parser, NULL) + * + * if status != LXB_STATUS_OK: # <<<<<<<<<<<<<< + * PyErr_SetObject(SelectolaxError, "Can't initialize CSS parser.") + * return -1 +*/ + __pyx_t_1 = (__pyx_v_status != LXB_STATUS_OK); + if (__pyx_t_1) { + + /* "selectolax/lexbor/selection.pxi":21 + * + * if status != LXB_STATUS_OK: + * PyErr_SetObject(SelectolaxError, "Can't initialize CSS parser.") # <<<<<<<<<<<<<< + * return -1 + * +*/ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_SelectolaxError); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 21, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + PyErr_SetObject(__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_Can_t_initialize_CSS_parser); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "selectolax/lexbor/selection.pxi":22 + * if status != LXB_STATUS_OK: + * PyErr_SetObject(SelectolaxError, "Can't initialize CSS parser.") + * return -1 # <<<<<<<<<<<<<< + * + * self.css_selectors = lxb_css_selectors_create() +*/ + __pyx_r = -1; + goto __pyx_L0; + + /* "selectolax/lexbor/selection.pxi":20 + * status = lxb_css_parser_init(self.parser, NULL) + * + * if status != LXB_STATUS_OK: # <<<<<<<<<<<<<< + * PyErr_SetObject(SelectolaxError, "Can't initialize CSS parser.") + * return -1 +*/ + } + + /* "selectolax/lexbor/selection.pxi":24 + * return -1 + * + * self.css_selectors = lxb_css_selectors_create() # <<<<<<<<<<<<<< + * status = lxb_css_selectors_init(self.css_selectors) + * +*/ + __pyx_v_self->css_selectors = lxb_css_selectors_create(); + + /* "selectolax/lexbor/selection.pxi":25 + * + * self.css_selectors = lxb_css_selectors_create() + * status = lxb_css_selectors_init(self.css_selectors) # <<<<<<<<<<<<<< + * + * if status != LXB_STATUS_OK: +*/ + __pyx_v_status = lxb_css_selectors_init(__pyx_v_self->css_selectors); + + /* "selectolax/lexbor/selection.pxi":27 + * status = lxb_css_selectors_init(self.css_selectors) + * + * if status != LXB_STATUS_OK: # <<<<<<<<<<<<<< + * PyErr_SetObject(SelectolaxError, "Can't initialize CSS selector.") + * return -1 +*/ + __pyx_t_1 = (__pyx_v_status != LXB_STATUS_OK); + if (__pyx_t_1) { + + /* "selectolax/lexbor/selection.pxi":28 + * + * if status != LXB_STATUS_OK: + * PyErr_SetObject(SelectolaxError, "Can't initialize CSS selector.") # <<<<<<<<<<<<<< + * return -1 + * +*/ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_SelectolaxError); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 28, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + PyErr_SetObject(__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_Can_t_initialize_CSS_selector); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "selectolax/lexbor/selection.pxi":29 + * if status != LXB_STATUS_OK: + * PyErr_SetObject(SelectolaxError, "Can't initialize CSS selector.") + * return -1 # <<<<<<<<<<<<<< + * + * lxb_css_parser_selectors_set(self.parser, self.css_selectors) +*/ + __pyx_r = -1; + goto __pyx_L0; + + /* "selectolax/lexbor/selection.pxi":27 + * status = lxb_css_selectors_init(self.css_selectors) + * + * if status != LXB_STATUS_OK: # <<<<<<<<<<<<<< + * PyErr_SetObject(SelectolaxError, "Can't initialize CSS selector.") + * return -1 +*/ + } + + /* "selectolax/lexbor/selection.pxi":31 + * return -1 + * + * lxb_css_parser_selectors_set(self.parser, self.css_selectors) # <<<<<<<<<<<<<< + * + * self.selectors = lxb_selectors_create() +*/ + lxb_css_parser_selectors_set(__pyx_v_self->parser, __pyx_v_self->css_selectors); + + /* "selectolax/lexbor/selection.pxi":33 + * lxb_css_parser_selectors_set(self.parser, self.css_selectors) + * + * self.selectors = lxb_selectors_create() # <<<<<<<<<<<<<< + * status = lxb_selectors_init(self.selectors) + * lxb_selectors_opt_set(self.selectors, LXB_SELECTORS_OPT_MATCH_ROOT) +*/ + __pyx_v_self->selectors = lxb_selectors_create(); + + /* "selectolax/lexbor/selection.pxi":34 + * + * self.selectors = lxb_selectors_create() + * status = lxb_selectors_init(self.selectors) # <<<<<<<<<<<<<< + * lxb_selectors_opt_set(self.selectors, LXB_SELECTORS_OPT_MATCH_ROOT) + * if status != LXB_STATUS_OK: +*/ + __pyx_v_status = lxb_selectors_init(__pyx_v_self->selectors); + + /* "selectolax/lexbor/selection.pxi":35 + * self.selectors = lxb_selectors_create() + * status = lxb_selectors_init(self.selectors) + * lxb_selectors_opt_set(self.selectors, LXB_SELECTORS_OPT_MATCH_ROOT) # <<<<<<<<<<<<<< + * if status != LXB_STATUS_OK: + * PyErr_SetObject(SelectolaxError, "Can't initialize CSS selector.") +*/ + lxb_selectors_opt_set(__pyx_v_self->selectors, LXB_SELECTORS_OPT_MATCH_ROOT); + + /* "selectolax/lexbor/selection.pxi":36 + * status = lxb_selectors_init(self.selectors) + * lxb_selectors_opt_set(self.selectors, LXB_SELECTORS_OPT_MATCH_ROOT) + * if status != LXB_STATUS_OK: # <<<<<<<<<<<<<< + * PyErr_SetObject(SelectolaxError, "Can't initialize CSS selector.") + * return -1 +*/ + __pyx_t_1 = (__pyx_v_status != LXB_STATUS_OK); + if (__pyx_t_1) { + + /* "selectolax/lexbor/selection.pxi":37 + * lxb_selectors_opt_set(self.selectors, LXB_SELECTORS_OPT_MATCH_ROOT) + * if status != LXB_STATUS_OK: + * PyErr_SetObject(SelectolaxError, "Can't initialize CSS selector.") # <<<<<<<<<<<<<< + * return -1 + * return 0 +*/ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_SelectolaxError); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 37, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + PyErr_SetObject(__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_Can_t_initialize_CSS_selector); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "selectolax/lexbor/selection.pxi":38 + * if status != LXB_STATUS_OK: + * PyErr_SetObject(SelectolaxError, "Can't initialize CSS selector.") + * return -1 # <<<<<<<<<<<<<< + * return 0 + * +*/ + __pyx_r = -1; + goto __pyx_L0; + + /* "selectolax/lexbor/selection.pxi":36 + * status = lxb_selectors_init(self.selectors) + * lxb_selectors_opt_set(self.selectors, LXB_SELECTORS_OPT_MATCH_ROOT) + * if status != LXB_STATUS_OK: # <<<<<<<<<<<<<< + * PyErr_SetObject(SelectolaxError, "Can't initialize CSS selector.") + * return -1 +*/ + } + + /* "selectolax/lexbor/selection.pxi":39 + * PyErr_SetObject(SelectolaxError, "Can't initialize CSS selector.") + * return -1 + * return 0 # <<<<<<<<<<<<<< + * + * cpdef list find(self, str query, LexborNode node): +*/ + __pyx_r = 0; + goto __pyx_L0; + + /* "selectolax/lexbor/selection.pxi":14 + * self.current_node = None + * + * cdef int _create_css_parser(self) except -1: # <<<<<<<<<<<<<< + * cdef lxb_status_t status + * +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("selectolax.lexbor.LexborCSSSelector._create_css_parser", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor/selection.pxi":41 + * return 0 + * + * cpdef list find(self, str query, LexborNode node): # <<<<<<<<<<<<<< + * return self._find(query, node, 0) + * +*/ + +static PyObject *__pyx_pw_10selectolax_6lexbor_17LexborCSSSelector_3find(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyObject *__pyx_f_10selectolax_6lexbor_17LexborCSSSelector_find(struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector *__pyx_v_self, PyObject *__pyx_v_query, struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_node, CYTHON_UNUSED int __pyx_skip_dispatch) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("find", 0); + + /* "selectolax/lexbor/selection.pxi":42 + * + * cpdef list find(self, str query, LexborNode node): + * return self._find(query, node, 0) # <<<<<<<<<<<<<< + * + * cpdef list find_first(self, str query, LexborNode node): +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __pyx_f_10selectolax_6lexbor_17LexborCSSSelector__find(__pyx_v_self, __pyx_v_query, __pyx_v_node, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 42, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "selectolax/lexbor/selection.pxi":41 + * return 0 + * + * cpdef list find(self, str query, LexborNode node): # <<<<<<<<<<<<<< + * return self._find(query, node, 0) + * +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("selectolax.lexbor.LexborCSSSelector.find", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_17LexborCSSSelector_3find(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6lexbor_17LexborCSSSelector_2find, "LexborCSSSelector.find(self, str query, LexborNode node) -> list"); +static PyMethodDef __pyx_mdef_10selectolax_6lexbor_17LexborCSSSelector_3find = {"find", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_17LexborCSSSelector_3find, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_17LexborCSSSelector_2find}; +static PyObject *__pyx_pw_10selectolax_6lexbor_17LexborCSSSelector_3find(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_query = 0; + struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_node = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[2] = {0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("find (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_query,&__pyx_mstate_global->__pyx_n_u_node,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(6, 41, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(6, 41, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(6, 41, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "find", 0) < (0)) __PYX_ERR(6, 41, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 2; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("find", 1, 2, 2, i); __PYX_ERR(6, 41, __pyx_L3_error) } + } + } else if (unlikely(__pyx_nargs != 2)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(6, 41, __pyx_L3_error) + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(6, 41, __pyx_L3_error) + } + __pyx_v_query = ((PyObject*)values[0]); + __pyx_v_node = ((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)values[1]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("find", 1, 2, 2, __pyx_nargs); __PYX_ERR(6, 41, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.lexbor.LexborCSSSelector.find", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_query), (&PyUnicode_Type), 1, "query", 1))) __PYX_ERR(6, 41, __pyx_L1_error) + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_node), __pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborNode, 1, "node", 0))) __PYX_ERR(6, 41, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6lexbor_17LexborCSSSelector_2find(((struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector *)__pyx_v_self), __pyx_v_query, __pyx_v_node); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_17LexborCSSSelector_2find(struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector *__pyx_v_self, PyObject *__pyx_v_query, struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_node) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("find", 0); + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __pyx_f_10selectolax_6lexbor_17LexborCSSSelector_find(__pyx_v_self, __pyx_v_query, __pyx_v_node, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 41, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("selectolax.lexbor.LexborCSSSelector.find", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor/selection.pxi":44 + * return self._find(query, node, 0) + * + * cpdef list find_first(self, str query, LexborNode node): # <<<<<<<<<<<<<< + * return self._find(query, node, 1) + * +*/ + +static PyObject *__pyx_pw_10selectolax_6lexbor_17LexborCSSSelector_5find_first(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyObject *__pyx_f_10selectolax_6lexbor_17LexborCSSSelector_find_first(struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector *__pyx_v_self, PyObject *__pyx_v_query, struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_node, CYTHON_UNUSED int __pyx_skip_dispatch) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("find_first", 0); + + /* "selectolax/lexbor/selection.pxi":45 + * + * cpdef list find_first(self, str query, LexborNode node): + * return self._find(query, node, 1) # <<<<<<<<<<<<<< + * + * cpdef list _find(self, str query, LexborNode node, bint only_first): +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __pyx_f_10selectolax_6lexbor_17LexborCSSSelector__find(__pyx_v_self, __pyx_v_query, __pyx_v_node, 1, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 45, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "selectolax/lexbor/selection.pxi":44 + * return self._find(query, node, 0) + * + * cpdef list find_first(self, str query, LexborNode node): # <<<<<<<<<<<<<< + * return self._find(query, node, 1) + * +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("selectolax.lexbor.LexborCSSSelector.find_first", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_17LexborCSSSelector_5find_first(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6lexbor_17LexborCSSSelector_4find_first, "LexborCSSSelector.find_first(self, str query, LexborNode node) -> list"); +static PyMethodDef __pyx_mdef_10selectolax_6lexbor_17LexborCSSSelector_5find_first = {"find_first", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_17LexborCSSSelector_5find_first, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_17LexborCSSSelector_4find_first}; +static PyObject *__pyx_pw_10selectolax_6lexbor_17LexborCSSSelector_5find_first(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_query = 0; + struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_node = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[2] = {0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("find_first (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_query,&__pyx_mstate_global->__pyx_n_u_node,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(6, 44, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(6, 44, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(6, 44, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "find_first", 0) < (0)) __PYX_ERR(6, 44, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 2; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("find_first", 1, 2, 2, i); __PYX_ERR(6, 44, __pyx_L3_error) } + } + } else if (unlikely(__pyx_nargs != 2)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(6, 44, __pyx_L3_error) + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(6, 44, __pyx_L3_error) + } + __pyx_v_query = ((PyObject*)values[0]); + __pyx_v_node = ((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)values[1]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("find_first", 1, 2, 2, __pyx_nargs); __PYX_ERR(6, 44, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.lexbor.LexborCSSSelector.find_first", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_query), (&PyUnicode_Type), 1, "query", 1))) __PYX_ERR(6, 44, __pyx_L1_error) + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_node), __pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborNode, 1, "node", 0))) __PYX_ERR(6, 44, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6lexbor_17LexborCSSSelector_4find_first(((struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector *)__pyx_v_self), __pyx_v_query, __pyx_v_node); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_17LexborCSSSelector_4find_first(struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector *__pyx_v_self, PyObject *__pyx_v_query, struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_node) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("find_first", 0); + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __pyx_f_10selectolax_6lexbor_17LexborCSSSelector_find_first(__pyx_v_self, __pyx_v_query, __pyx_v_node, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 44, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("selectolax.lexbor.LexborCSSSelector.find_first", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor/selection.pxi":47 + * return self._find(query, node, 1) + * + * cpdef list _find(self, str query, LexborNode node, bint only_first): # <<<<<<<<<<<<<< + * cdef lxb_css_selector_list_t* selectors + * cdef lxb_char_t* c_selector +*/ + +static PyObject *__pyx_pw_10selectolax_6lexbor_17LexborCSSSelector_7_find(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyObject *__pyx_f_10selectolax_6lexbor_17LexborCSSSelector__find(struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector *__pyx_v_self, PyObject *__pyx_v_query, struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_node, int __pyx_v_only_first, CYTHON_UNUSED int __pyx_skip_dispatch) { + lxb_css_selector_list_t *__pyx_v_selectors_list; + PyObject *__pyx_v_bytes_query = NULL; + CYTHON_UNUSED lxb_status_t __pyx_v_status; + PyObject *__pyx_v_results = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + size_t __pyx_t_5; + PyObject *__pyx_t_6 = NULL; + lxb_char_t *__pyx_t_7; + Py_ssize_t __pyx_t_8; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("_find", 0); + + /* "selectolax/lexbor/selection.pxi":52 + * cdef lxb_css_selector_list_t * selectors_list + * + * if not isinstance(query, str): # <<<<<<<<<<<<<< + * raise TypeError("Query must be a string.") + * +*/ + __pyx_t_1 = PyUnicode_Check(__pyx_v_query); + __pyx_t_2 = (!__pyx_t_1); + if (unlikely(__pyx_t_2)) { + + /* "selectolax/lexbor/selection.pxi":53 + * + * if not isinstance(query, str): + * raise TypeError("Query must be a string.") # <<<<<<<<<<<<<< + * + * bytes_query = query.encode(_ENCODING) +*/ + __pyx_t_4 = NULL; + __pyx_t_5 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_Query_must_be_a_string}; + __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 53, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(6, 53, __pyx_L1_error) + + /* "selectolax/lexbor/selection.pxi":52 + * cdef lxb_css_selector_list_t * selectors_list + * + * if not isinstance(query, str): # <<<<<<<<<<<<<< + * raise TypeError("Query must be a string.") + * +*/ + } + + /* "selectolax/lexbor/selection.pxi":55 + * raise TypeError("Query must be a string.") + * + * bytes_query = query.encode(_ENCODING) # <<<<<<<<<<<<<< + * selectors_list = lxb_css_selectors_parse(self.parser, bytes_query, len(bytes_query)) + * +*/ + __pyx_t_4 = __pyx_v_query; + __Pyx_INCREF(__pyx_t_4); + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_ENCODING); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 55, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_5 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_6}; + __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_encode, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 55, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __pyx_v_bytes_query = ((PyObject*)__pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/lexbor/selection.pxi":56 + * + * bytes_query = query.encode(_ENCODING) + * selectors_list = lxb_css_selectors_parse(self.parser, bytes_query, len(bytes_query)) # <<<<<<<<<<<<<< + * + * if selectors_list == NULL: +*/ + __pyx_t_7 = __Pyx_PyBytes_AsWritableUString(__pyx_v_bytes_query); if (unlikely((!__pyx_t_7) && PyErr_Occurred())) __PYX_ERR(6, 56, __pyx_L1_error) + __pyx_t_8 = __Pyx_PyBytes_GET_SIZE(__pyx_v_bytes_query); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(6, 56, __pyx_L1_error) + __pyx_v_selectors_list = lxb_css_selectors_parse(__pyx_v_self->parser, ((lxb_char_t *)__pyx_t_7), ((size_t)__pyx_t_8)); + + /* "selectolax/lexbor/selection.pxi":58 + * selectors_list = lxb_css_selectors_parse(self.parser, bytes_query, len(bytes_query)) + * + * if selectors_list == NULL: # <<<<<<<<<<<<<< + * raise SelectolaxError("Can't parse CSS selector.") + * +*/ + __pyx_t_2 = (__pyx_v_selectors_list == NULL); + if (unlikely(__pyx_t_2)) { + + /* "selectolax/lexbor/selection.pxi":59 + * + * if selectors_list == NULL: + * raise SelectolaxError("Can't parse CSS selector.") # <<<<<<<<<<<<<< + * + * self.current_node = node +*/ + __pyx_t_6 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_SelectolaxError); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 59, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4); + assert(__pyx_t_6); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_4, __pyx__function); + __pyx_t_5 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_mstate_global->__pyx_kp_u_Can_t_parse_CSS_selector}; + __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 59, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(6, 59, __pyx_L1_error) + + /* "selectolax/lexbor/selection.pxi":58 + * selectors_list = lxb_css_selectors_parse(self.parser, bytes_query, len(bytes_query)) + * + * if selectors_list == NULL: # <<<<<<<<<<<<<< + * raise SelectolaxError("Can't parse CSS selector.") + * +*/ + } + + /* "selectolax/lexbor/selection.pxi":61 + * raise SelectolaxError("Can't parse CSS selector.") + * + * self.current_node = node # <<<<<<<<<<<<<< + * self.results = [] + * if only_first: +*/ + __Pyx_INCREF((PyObject *)__pyx_v_node); + __Pyx_GIVEREF((PyObject *)__pyx_v_node); + __Pyx_GOTREF((PyObject *)__pyx_v_self->current_node); + __Pyx_DECREF((PyObject *)__pyx_v_self->current_node); + __pyx_v_self->current_node = __pyx_v_node; + + /* "selectolax/lexbor/selection.pxi":62 + * + * self.current_node = node + * self.results = [] # <<<<<<<<<<<<<< + * if only_first: + * status = lxb_selectors_find(self.selectors, node.node, selectors_list, +*/ + __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 62, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_3); + __Pyx_GOTREF(__pyx_v_self->results); + __Pyx_DECREF(__pyx_v_self->results); + __pyx_v_self->results = ((PyObject*)__pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/lexbor/selection.pxi":63 + * self.current_node = node + * self.results = [] + * if only_first: # <<<<<<<<<<<<<< + * status = lxb_selectors_find(self.selectors, node.node, selectors_list, + * css_finder_callback_first, self) +*/ + if (__pyx_v_only_first) { + + /* "selectolax/lexbor/selection.pxi":64 + * self.results = [] + * if only_first: + * status = lxb_selectors_find(self.selectors, node.node, selectors_list, # <<<<<<<<<<<<<< + * css_finder_callback_first, self) + * else: +*/ + __pyx_v_status = lxb_selectors_find(__pyx_v_self->selectors, __pyx_v_node->node, __pyx_v_selectors_list, ((lxb_selectors_cb_f)__pyx_f_10selectolax_6lexbor_css_finder_callback_first), ((void *)__pyx_v_self)); + + /* "selectolax/lexbor/selection.pxi":63 + * self.current_node = node + * self.results = [] + * if only_first: # <<<<<<<<<<<<<< + * status = lxb_selectors_find(self.selectors, node.node, selectors_list, + * css_finder_callback_first, self) +*/ + goto __pyx_L5; + } + + /* "selectolax/lexbor/selection.pxi":67 + * css_finder_callback_first, self) + * else: + * status = lxb_selectors_find(self.selectors, node.node, selectors_list, # <<<<<<<<<<<<<< + * css_finder_callback, self) + * results = list(self.results) +*/ + /*else*/ { + + /* "selectolax/lexbor/selection.pxi":68 + * else: + * status = lxb_selectors_find(self.selectors, node.node, selectors_list, + * css_finder_callback, self) # <<<<<<<<<<<<<< + * results = list(self.results) + * self.results = [] +*/ + __pyx_v_status = lxb_selectors_find(__pyx_v_self->selectors, __pyx_v_node->node, __pyx_v_selectors_list, ((lxb_selectors_cb_f)__pyx_f_10selectolax_6lexbor_css_finder_callback), ((void *)__pyx_v_self)); + } + __pyx_L5:; + + /* "selectolax/lexbor/selection.pxi":69 + * status = lxb_selectors_find(self.selectors, node.node, selectors_list, + * css_finder_callback, self) + * results = list(self.results) # <<<<<<<<<<<<<< + * self.results = [] + * self.current_node = None +*/ + __pyx_t_3 = PySequence_List(__pyx_v_self->results); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 69, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_v_results = ((PyObject*)__pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/lexbor/selection.pxi":70 + * css_finder_callback, self) + * results = list(self.results) + * self.results = [] # <<<<<<<<<<<<<< + * self.current_node = None + * lxb_css_selector_list_destroy_memory(selectors_list) +*/ + __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 70, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_3); + __Pyx_GOTREF(__pyx_v_self->results); + __Pyx_DECREF(__pyx_v_self->results); + __pyx_v_self->results = ((PyObject*)__pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/lexbor/selection.pxi":71 + * results = list(self.results) + * self.results = [] + * self.current_node = None # <<<<<<<<<<<<<< + * lxb_css_selector_list_destroy_memory(selectors_list) + * return results +*/ + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + __Pyx_GOTREF((PyObject *)__pyx_v_self->current_node); + __Pyx_DECREF((PyObject *)__pyx_v_self->current_node); + __pyx_v_self->current_node = ((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)Py_None); + + /* "selectolax/lexbor/selection.pxi":72 + * self.results = [] + * self.current_node = None + * lxb_css_selector_list_destroy_memory(selectors_list) # <<<<<<<<<<<<<< + * return results + * +*/ + lxb_css_selector_list_destroy_memory(__pyx_v_selectors_list); + + /* "selectolax/lexbor/selection.pxi":73 + * self.current_node = None + * lxb_css_selector_list_destroy_memory(selectors_list) + * return results # <<<<<<<<<<<<<< + * + * cpdef int any_matches(self, str query, LexborNode node) except -1: +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_results); + __pyx_r = __pyx_v_results; + goto __pyx_L0; + + /* "selectolax/lexbor/selection.pxi":47 + * return self._find(query, node, 1) + * + * cpdef list _find(self, str query, LexborNode node, bint only_first): # <<<<<<<<<<<<<< + * cdef lxb_css_selector_list_t* selectors + * cdef lxb_char_t* c_selector +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_AddTraceback("selectolax.lexbor.LexborCSSSelector._find", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_bytes_query); + __Pyx_XDECREF(__pyx_v_results); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_17LexborCSSSelector_7_find(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6lexbor_17LexborCSSSelector_6_find, "LexborCSSSelector._find(self, str query, LexborNode node, bool only_first) -> list"); +static PyMethodDef __pyx_mdef_10selectolax_6lexbor_17LexborCSSSelector_7_find = {"_find", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_17LexborCSSSelector_7_find, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_17LexborCSSSelector_6_find}; +static PyObject *__pyx_pw_10selectolax_6lexbor_17LexborCSSSelector_7_find(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_query = 0; + struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_node = 0; + int __pyx_v_only_first; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[3] = {0,0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("_find (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_query,&__pyx_mstate_global->__pyx_n_u_node,&__pyx_mstate_global->__pyx_n_u_only_first,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(6, 47, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 3: + values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(6, 47, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(6, 47, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(6, 47, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "_find", 0) < (0)) __PYX_ERR(6, 47, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 3; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("_find", 1, 3, 3, i); __PYX_ERR(6, 47, __pyx_L3_error) } + } + } else if (unlikely(__pyx_nargs != 3)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(6, 47, __pyx_L3_error) + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(6, 47, __pyx_L3_error) + values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(6, 47, __pyx_L3_error) + } + __pyx_v_query = ((PyObject*)values[0]); + __pyx_v_node = ((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)values[1]); + __pyx_v_only_first = __Pyx_PyObject_IsTrue(values[2]); if (unlikely((__pyx_v_only_first == (int)-1) && PyErr_Occurred())) __PYX_ERR(6, 47, __pyx_L3_error) + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("_find", 1, 3, 3, __pyx_nargs); __PYX_ERR(6, 47, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.lexbor.LexborCSSSelector._find", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_query), (&PyUnicode_Type), 1, "query", 1))) __PYX_ERR(6, 47, __pyx_L1_error) + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_node), __pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborNode, 1, "node", 0))) __PYX_ERR(6, 47, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6lexbor_17LexborCSSSelector_6_find(((struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector *)__pyx_v_self), __pyx_v_query, __pyx_v_node, __pyx_v_only_first); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_17LexborCSSSelector_6_find(struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector *__pyx_v_self, PyObject *__pyx_v_query, struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_node, int __pyx_v_only_first) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("_find", 0); + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __pyx_f_10selectolax_6lexbor_17LexborCSSSelector__find(__pyx_v_self, __pyx_v_query, __pyx_v_node, __pyx_v_only_first, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 47, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("selectolax.lexbor.LexborCSSSelector._find", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor/selection.pxi":75 + * return results + * + * cpdef int any_matches(self, str query, LexborNode node) except -1: # <<<<<<<<<<<<<< + * cdef lxb_css_selector_list_t * selectors + * cdef lxb_char_t * c_selector +*/ + +static PyObject *__pyx_pw_10selectolax_6lexbor_17LexborCSSSelector_9any_matches(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static int __pyx_f_10selectolax_6lexbor_17LexborCSSSelector_any_matches(struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector *__pyx_v_self, PyObject *__pyx_v_query, struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_node, CYTHON_UNUSED int __pyx_skip_dispatch) { + lxb_css_selector_list_t *__pyx_v_selectors_list; + int __pyx_v_result; + PyObject *__pyx_v_bytes_query = NULL; + lxb_status_t __pyx_v_status; + int __pyx_r; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + size_t __pyx_t_5; + PyObject *__pyx_t_6 = NULL; + lxb_char_t *__pyx_t_7; + Py_ssize_t __pyx_t_8; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("any_matches", 0); + + /* "selectolax/lexbor/selection.pxi":81 + * cdef int result + * + * if not isinstance(query, str): # <<<<<<<<<<<<<< + * raise TypeError("Query must be a string.") + * +*/ + __pyx_t_1 = PyUnicode_Check(__pyx_v_query); + __pyx_t_2 = (!__pyx_t_1); + if (unlikely(__pyx_t_2)) { + + /* "selectolax/lexbor/selection.pxi":82 + * + * if not isinstance(query, str): + * raise TypeError("Query must be a string.") # <<<<<<<<<<<<<< + * + * bytes_query = query.encode(_ENCODING) +*/ + __pyx_t_4 = NULL; + __pyx_t_5 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_Query_must_be_a_string}; + __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 82, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(6, 82, __pyx_L1_error) + + /* "selectolax/lexbor/selection.pxi":81 + * cdef int result + * + * if not isinstance(query, str): # <<<<<<<<<<<<<< + * raise TypeError("Query must be a string.") + * +*/ + } + + /* "selectolax/lexbor/selection.pxi":84 + * raise TypeError("Query must be a string.") + * + * bytes_query = query.encode(_ENCODING) # <<<<<<<<<<<<<< + * selectors_list = lxb_css_selectors_parse(self.parser, bytes_query, len(query)) + * +*/ + __pyx_t_4 = __pyx_v_query; + __Pyx_INCREF(__pyx_t_4); + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_ENCODING); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 84, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_5 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_6}; + __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_encode, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 84, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __pyx_v_bytes_query = ((PyObject*)__pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/lexbor/selection.pxi":85 + * + * bytes_query = query.encode(_ENCODING) + * selectors_list = lxb_css_selectors_parse(self.parser, bytes_query, len(query)) # <<<<<<<<<<<<<< + * + * if selectors_list == NULL: +*/ + __pyx_t_7 = __Pyx_PyBytes_AsWritableUString(__pyx_v_bytes_query); if (unlikely((!__pyx_t_7) && PyErr_Occurred())) __PYX_ERR(6, 85, __pyx_L1_error) + if (unlikely(__pyx_v_query == Py_None)) { + PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); + __PYX_ERR(6, 85, __pyx_L1_error) + } + __pyx_t_8 = __Pyx_PyUnicode_GET_LENGTH(__pyx_v_query); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(6, 85, __pyx_L1_error) + __pyx_v_selectors_list = lxb_css_selectors_parse(__pyx_v_self->parser, ((lxb_char_t *)__pyx_t_7), ((size_t)__pyx_t_8)); + + /* "selectolax/lexbor/selection.pxi":87 + * selectors_list = lxb_css_selectors_parse(self.parser, bytes_query, len(query)) + * + * if selectors_list == NULL: # <<<<<<<<<<<<<< + * PyErr_SetObject(SelectolaxError, "Can't parse CSS selector.") + * return -1 +*/ + __pyx_t_2 = (__pyx_v_selectors_list == NULL); + if (__pyx_t_2) { + + /* "selectolax/lexbor/selection.pxi":88 + * + * if selectors_list == NULL: + * PyErr_SetObject(SelectolaxError, "Can't parse CSS selector.") # <<<<<<<<<<<<<< + * return -1 + * +*/ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_SelectolaxError); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 88, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + PyErr_SetObject(__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_Can_t_parse_CSS_selector); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "selectolax/lexbor/selection.pxi":89 + * if selectors_list == NULL: + * PyErr_SetObject(SelectolaxError, "Can't parse CSS selector.") + * return -1 # <<<<<<<<<<<<<< + * + * self.results = [] +*/ + __pyx_r = -1; + goto __pyx_L0; + + /* "selectolax/lexbor/selection.pxi":87 + * selectors_list = lxb_css_selectors_parse(self.parser, bytes_query, len(query)) + * + * if selectors_list == NULL: # <<<<<<<<<<<<<< + * PyErr_SetObject(SelectolaxError, "Can't parse CSS selector.") + * return -1 +*/ + } + + /* "selectolax/lexbor/selection.pxi":91 + * return -1 + * + * self.results = [] # <<<<<<<<<<<<<< + * status = lxb_selectors_find(self.selectors, node.node, selectors_list, + * css_matcher_callback, self) +*/ + __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 91, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_3); + __Pyx_GOTREF(__pyx_v_self->results); + __Pyx_DECREF(__pyx_v_self->results); + __pyx_v_self->results = ((PyObject*)__pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/lexbor/selection.pxi":92 + * + * self.results = [] + * status = lxb_selectors_find(self.selectors, node.node, selectors_list, # <<<<<<<<<<<<<< + * css_matcher_callback, self) + * if status != LXB_STATUS_OK: +*/ + __pyx_v_status = lxb_selectors_find(__pyx_v_self->selectors, __pyx_v_node->node, __pyx_v_selectors_list, ((lxb_selectors_cb_f)__pyx_f_10selectolax_6lexbor_css_matcher_callback), ((void *)__pyx_v_self)); + + /* "selectolax/lexbor/selection.pxi":94 + * status = lxb_selectors_find(self.selectors, node.node, selectors_list, + * css_matcher_callback, self) + * if status != LXB_STATUS_OK: # <<<<<<<<<<<<<< + * lxb_css_selector_list_destroy_memory(selectors_list) + * PyErr_SetObject(SelectolaxError, "Can't parse CSS selector.") +*/ + __pyx_t_2 = (__pyx_v_status != LXB_STATUS_OK); + if (__pyx_t_2) { + + /* "selectolax/lexbor/selection.pxi":95 + * css_matcher_callback, self) + * if status != LXB_STATUS_OK: + * lxb_css_selector_list_destroy_memory(selectors_list) # <<<<<<<<<<<<<< + * PyErr_SetObject(SelectolaxError, "Can't parse CSS selector.") + * return -1 +*/ + lxb_css_selector_list_destroy_memory(__pyx_v_selectors_list); + + /* "selectolax/lexbor/selection.pxi":96 + * if status != LXB_STATUS_OK: + * lxb_css_selector_list_destroy_memory(selectors_list) + * PyErr_SetObject(SelectolaxError, "Can't parse CSS selector.") # <<<<<<<<<<<<<< + * return -1 + * +*/ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_SelectolaxError); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 96, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + PyErr_SetObject(__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_Can_t_parse_CSS_selector); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "selectolax/lexbor/selection.pxi":97 + * lxb_css_selector_list_destroy_memory(selectors_list) + * PyErr_SetObject(SelectolaxError, "Can't parse CSS selector.") + * return -1 # <<<<<<<<<<<<<< + * + * result = PyList_GET_SIZE(self.results) > 0 +*/ + __pyx_r = -1; + goto __pyx_L0; + + /* "selectolax/lexbor/selection.pxi":94 + * status = lxb_selectors_find(self.selectors, node.node, selectors_list, + * css_matcher_callback, self) + * if status != LXB_STATUS_OK: # <<<<<<<<<<<<<< + * lxb_css_selector_list_destroy_memory(selectors_list) + * PyErr_SetObject(SelectolaxError, "Can't parse CSS selector.") +*/ + } + + /* "selectolax/lexbor/selection.pxi":99 + * return -1 + * + * result = PyList_GET_SIZE(self.results) > 0 # <<<<<<<<<<<<<< + * self.results = [] + * lxb_css_selector_list_destroy_memory(selectors_list) +*/ + __pyx_t_3 = __pyx_v_self->results; + __Pyx_INCREF(__pyx_t_3); + __pyx_v_result = (PyList_GET_SIZE(__pyx_t_3) > 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "selectolax/lexbor/selection.pxi":100 + * + * result = PyList_GET_SIZE(self.results) > 0 + * self.results = [] # <<<<<<<<<<<<<< + * lxb_css_selector_list_destroy_memory(selectors_list) + * return result +*/ + __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 100, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_3); + __Pyx_GOTREF(__pyx_v_self->results); + __Pyx_DECREF(__pyx_v_self->results); + __pyx_v_self->results = ((PyObject*)__pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/lexbor/selection.pxi":101 + * result = PyList_GET_SIZE(self.results) > 0 + * self.results = [] + * lxb_css_selector_list_destroy_memory(selectors_list) # <<<<<<<<<<<<<< + * return result + * +*/ + lxb_css_selector_list_destroy_memory(__pyx_v_selectors_list); + + /* "selectolax/lexbor/selection.pxi":102 + * self.results = [] + * lxb_css_selector_list_destroy_memory(selectors_list) + * return result # <<<<<<<<<<<<<< + * + * def __dealloc__(self): +*/ + __pyx_r = __pyx_v_result; + goto __pyx_L0; + + /* "selectolax/lexbor/selection.pxi":75 + * return results + * + * cpdef int any_matches(self, str query, LexborNode node) except -1: # <<<<<<<<<<<<<< + * cdef lxb_css_selector_list_t * selectors + * cdef lxb_char_t * c_selector +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_AddTraceback("selectolax.lexbor.LexborCSSSelector.any_matches", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_bytes_query); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_17LexborCSSSelector_9any_matches(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6lexbor_17LexborCSSSelector_8any_matches, "LexborCSSSelector.any_matches(self, str query, LexborNode node) -> int"); +static PyMethodDef __pyx_mdef_10selectolax_6lexbor_17LexborCSSSelector_9any_matches = {"any_matches", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_17LexborCSSSelector_9any_matches, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_17LexborCSSSelector_8any_matches}; +static PyObject *__pyx_pw_10selectolax_6lexbor_17LexborCSSSelector_9any_matches(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_query = 0; + struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_node = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[2] = {0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("any_matches (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_query,&__pyx_mstate_global->__pyx_n_u_node,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(6, 75, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(6, 75, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(6, 75, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "any_matches", 0) < (0)) __PYX_ERR(6, 75, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 2; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("any_matches", 1, 2, 2, i); __PYX_ERR(6, 75, __pyx_L3_error) } + } + } else if (unlikely(__pyx_nargs != 2)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(6, 75, __pyx_L3_error) + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(6, 75, __pyx_L3_error) + } + __pyx_v_query = ((PyObject*)values[0]); + __pyx_v_node = ((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)values[1]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("any_matches", 1, 2, 2, __pyx_nargs); __PYX_ERR(6, 75, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.lexbor.LexborCSSSelector.any_matches", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_query), (&PyUnicode_Type), 1, "query", 1))) __PYX_ERR(6, 75, __pyx_L1_error) + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_node), __pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborNode, 1, "node", 0))) __PYX_ERR(6, 75, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6lexbor_17LexborCSSSelector_8any_matches(((struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector *)__pyx_v_self), __pyx_v_query, __pyx_v_node); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_17LexborCSSSelector_8any_matches(struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector *__pyx_v_self, PyObject *__pyx_v_query, struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_node) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("any_matches", 0); + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __pyx_f_10selectolax_6lexbor_17LexborCSSSelector_any_matches(__pyx_v_self, __pyx_v_query, __pyx_v_node, 1); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(6, 75, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyLong_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 75, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("selectolax.lexbor.LexborCSSSelector.any_matches", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor/selection.pxi":104 + * return result + * + * def __dealloc__(self): # <<<<<<<<<<<<<< + * if self.selectors != NULL: + * lxb_selectors_destroy(self.selectors, True) +*/ + +/* Python wrapper */ +static void __pyx_pw_10selectolax_6lexbor_17LexborCSSSelector_11__dealloc__(PyObject *__pyx_v_self); /*proto*/ +static void __pyx_pw_10selectolax_6lexbor_17LexborCSSSelector_11__dealloc__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_pf_10selectolax_6lexbor_17LexborCSSSelector_10__dealloc__(((struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); +} + +static void __pyx_pf_10selectolax_6lexbor_17LexborCSSSelector_10__dealloc__(struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector *__pyx_v_self) { + int __pyx_t_1; + + /* "selectolax/lexbor/selection.pxi":105 + * + * def __dealloc__(self): + * if self.selectors != NULL: # <<<<<<<<<<<<<< + * lxb_selectors_destroy(self.selectors, True) + * if self.parser != NULL: +*/ + __pyx_t_1 = (__pyx_v_self->selectors != NULL); + if (__pyx_t_1) { + + /* "selectolax/lexbor/selection.pxi":106 + * def __dealloc__(self): + * if self.selectors != NULL: + * lxb_selectors_destroy(self.selectors, True) # <<<<<<<<<<<<<< + * if self.parser != NULL: + * lxb_css_parser_destroy(self.parser, True) +*/ + (void)(lxb_selectors_destroy(__pyx_v_self->selectors, 1)); + + /* "selectolax/lexbor/selection.pxi":105 + * + * def __dealloc__(self): + * if self.selectors != NULL: # <<<<<<<<<<<<<< + * lxb_selectors_destroy(self.selectors, True) + * if self.parser != NULL: +*/ + } + + /* "selectolax/lexbor/selection.pxi":107 + * if self.selectors != NULL: + * lxb_selectors_destroy(self.selectors, True) + * if self.parser != NULL: # <<<<<<<<<<<<<< + * lxb_css_parser_destroy(self.parser, True) + * if self.css_selectors != NULL: +*/ + __pyx_t_1 = (__pyx_v_self->parser != NULL); + if (__pyx_t_1) { + + /* "selectolax/lexbor/selection.pxi":108 + * lxb_selectors_destroy(self.selectors, True) + * if self.parser != NULL: + * lxb_css_parser_destroy(self.parser, True) # <<<<<<<<<<<<<< + * if self.css_selectors != NULL: + * lxb_css_selectors_destroy(self.css_selectors, True) +*/ + (void)(lxb_css_parser_destroy(__pyx_v_self->parser, 1)); + + /* "selectolax/lexbor/selection.pxi":107 + * if self.selectors != NULL: + * lxb_selectors_destroy(self.selectors, True) + * if self.parser != NULL: # <<<<<<<<<<<<<< + * lxb_css_parser_destroy(self.parser, True) + * if self.css_selectors != NULL: +*/ + } + + /* "selectolax/lexbor/selection.pxi":109 + * if self.parser != NULL: + * lxb_css_parser_destroy(self.parser, True) + * if self.css_selectors != NULL: # <<<<<<<<<<<<<< + * lxb_css_selectors_destroy(self.css_selectors, True) + * +*/ + __pyx_t_1 = (__pyx_v_self->css_selectors != NULL); + if (__pyx_t_1) { + + /* "selectolax/lexbor/selection.pxi":110 + * lxb_css_parser_destroy(self.parser, True) + * if self.css_selectors != NULL: + * lxb_css_selectors_destroy(self.css_selectors, True) # <<<<<<<<<<<<<< + * + * +*/ + (void)(lxb_css_selectors_destroy(__pyx_v_self->css_selectors, 1)); + + /* "selectolax/lexbor/selection.pxi":109 + * if self.parser != NULL: + * lxb_css_parser_destroy(self.parser, True) + * if self.css_selectors != NULL: # <<<<<<<<<<<<<< + * lxb_css_selectors_destroy(self.css_selectors, True) + * +*/ + } + + /* "selectolax/lexbor/selection.pxi":104 + * return result + * + * def __dealloc__(self): # <<<<<<<<<<<<<< + * if self.selectors != NULL: + * lxb_selectors_destroy(self.selectors, True) +*/ + + /* function exit code */ +} + +/* "selectolax/lexbor.pxd":260 + * cdef lxb_selectors_t * selectors + * cdef lxb_css_selectors_t * css_selectors + * cdef public list results # <<<<<<<<<<<<<< + * cdef public LexborNode current_node + * cdef int _create_css_parser(self) except -1 +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_17LexborCSSSelector_7results_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_10selectolax_6lexbor_17LexborCSSSelector_7results_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6lexbor_17LexborCSSSelector_7results___get__(((struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_17LexborCSSSelector_7results___get__(struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__", 0); + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_self->results); + __pyx_r = __pyx_v_self->results; + goto __pyx_L0; + + /* function exit code */ + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_10selectolax_6lexbor_17LexborCSSSelector_7results_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_10selectolax_6lexbor_17LexborCSSSelector_7results_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6lexbor_17LexborCSSSelector_7results_2__set__(((struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_10selectolax_6lexbor_17LexborCSSSelector_7results_2__set__(struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector *__pyx_v_self, PyObject *__pyx_v_value) { + int __pyx_r; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__set__", 0); + __pyx_t_1 = __pyx_v_value; + __Pyx_INCREF(__pyx_t_1); + if (!(likely(PyList_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("list", __pyx_t_1))) __PYX_ERR(5, 260, __pyx_L1_error) + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF(__pyx_v_self->results); + __Pyx_DECREF(__pyx_v_self->results); + __pyx_v_self->results = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("selectolax.lexbor.LexborCSSSelector.results.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_10selectolax_6lexbor_17LexborCSSSelector_7results_5__del__(PyObject *__pyx_v_self); /*proto*/ +static int __pyx_pw_10selectolax_6lexbor_17LexborCSSSelector_7results_5__del__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6lexbor_17LexborCSSSelector_7results_4__del__(((struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_10selectolax_6lexbor_17LexborCSSSelector_7results_4__del__(struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector *__pyx_v_self) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__del__", 0); + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + __Pyx_GOTREF(__pyx_v_self->results); + __Pyx_DECREF(__pyx_v_self->results); + __pyx_v_self->results = ((PyObject*)Py_None); + + /* function exit code */ + __pyx_r = 0; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor.pxd":261 + * cdef lxb_css_selectors_t * css_selectors + * cdef public list results + * cdef public LexborNode current_node # <<<<<<<<<<<<<< + * cdef int _create_css_parser(self) except -1 + * cpdef list find(self, str query, LexborNode node) +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_17LexborCSSSelector_12current_node_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_10selectolax_6lexbor_17LexborCSSSelector_12current_node_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6lexbor_17LexborCSSSelector_12current_node___get__(((struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_17LexborCSSSelector_12current_node___get__(struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__", 0); + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF((PyObject *)__pyx_v_self->current_node); + __pyx_r = ((PyObject *)__pyx_v_self->current_node); + goto __pyx_L0; + + /* function exit code */ + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_10selectolax_6lexbor_17LexborCSSSelector_12current_node_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_10selectolax_6lexbor_17LexborCSSSelector_12current_node_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6lexbor_17LexborCSSSelector_12current_node_2__set__(((struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_10selectolax_6lexbor_17LexborCSSSelector_12current_node_2__set__(struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector *__pyx_v_self, PyObject *__pyx_v_value) { + int __pyx_r; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__set__", 0); + __pyx_t_1 = __pyx_v_value; + __Pyx_INCREF(__pyx_t_1); + if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborNode))))) __PYX_ERR(5, 261, __pyx_L1_error) + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF((PyObject *)__pyx_v_self->current_node); + __Pyx_DECREF((PyObject *)__pyx_v_self->current_node); + __pyx_v_self->current_node = ((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_t_1); + __pyx_t_1 = 0; + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("selectolax.lexbor.LexborCSSSelector.current_node.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_10selectolax_6lexbor_17LexborCSSSelector_12current_node_5__del__(PyObject *__pyx_v_self); /*proto*/ +static int __pyx_pw_10selectolax_6lexbor_17LexborCSSSelector_12current_node_5__del__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6lexbor_17LexborCSSSelector_12current_node_4__del__(((struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_10selectolax_6lexbor_17LexborCSSSelector_12current_node_4__del__(struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector *__pyx_v_self) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__del__", 0); + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + __Pyx_GOTREF((PyObject *)__pyx_v_self->current_node); + __Pyx_DECREF((PyObject *)__pyx_v_self->current_node); + __pyx_v_self->current_node = ((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)Py_None); + + /* function exit code */ + __pyx_r = 0; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * raise TypeError, "self.css_selectors,self.parser,self.selectors cannot be converted to a Python object for pickling" + * def __setstate_cython__(self, __pyx_state): +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_17LexborCSSSelector_13__reduce_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6lexbor_17LexborCSSSelector_12__reduce_cython__, "LexborCSSSelector.__reduce_cython__(self)"); +static PyMethodDef __pyx_mdef_10selectolax_6lexbor_17LexborCSSSelector_13__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_17LexborCSSSelector_13__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_17LexborCSSSelector_12__reduce_cython__}; +static PyObject *__pyx_pw_10selectolax_6lexbor_17LexborCSSSelector_13__reduce_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL; } + const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len < 0)) return NULL; + if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;} + __pyx_r = __pyx_pf_10selectolax_6lexbor_17LexborCSSSelector_12__reduce_cython__(((struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_17LexborCSSSelector_12__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__reduce_cython__", 0); + + /* "(tree fragment)":2 + * def __reduce_cython__(self): + * raise TypeError, "self.css_selectors,self.parser,self.selectors cannot be converted to a Python object for pickling" # <<<<<<<<<<<<<< + * def __setstate_cython__(self, __pyx_state): + * raise TypeError, "self.css_selectors,self.parser,self.selectors cannot be converted to a Python object for pickling" +*/ + __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), __pyx_mstate_global->__pyx_kp_u_self_css_selectors_self_parser_s, 0, 0); + __PYX_ERR(1, 2, __pyx_L1_error) + + /* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * raise TypeError, "self.css_selectors,self.parser,self.selectors cannot be converted to a Python object for pickling" + * def __setstate_cython__(self, __pyx_state): +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_AddTraceback("selectolax.lexbor.LexborCSSSelector.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":3 + * def __reduce_cython__(self): + * raise TypeError, "self.css_selectors,self.parser,self.selectors cannot be converted to a Python object for pickling" + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * raise TypeError, "self.css_selectors,self.parser,self.selectors cannot be converted to a Python object for pickling" +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_17LexborCSSSelector_15__setstate_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6lexbor_17LexborCSSSelector_14__setstate_cython__, "LexborCSSSelector.__setstate_cython__(self, __pyx_state)"); +static PyMethodDef __pyx_mdef_10selectolax_6lexbor_17LexborCSSSelector_15__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_17LexborCSSSelector_15__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_17LexborCSSSelector_14__setstate_cython__}; +static PyObject *__pyx_pw_10selectolax_6lexbor_17LexborCSSSelector_15__setstate_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_state,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 3, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < (0)) __PYX_ERR(1, 3, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 3, __pyx_L3_error) } + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error) + } + __pyx_v___pyx_state = values[0]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.lexbor.LexborCSSSelector.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_10selectolax_6lexbor_17LexborCSSSelector_14__setstate_cython__(((struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector *)__pyx_v_self), __pyx_v___pyx_state); + + /* function exit code */ + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_17LexborCSSSelector_14__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__setstate_cython__", 0); + + /* "(tree fragment)":4 + * raise TypeError, "self.css_selectors,self.parser,self.selectors cannot be converted to a Python object for pickling" + * def __setstate_cython__(self, __pyx_state): + * raise TypeError, "self.css_selectors,self.parser,self.selectors cannot be converted to a Python object for pickling" # <<<<<<<<<<<<<< +*/ + __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), __pyx_mstate_global->__pyx_kp_u_self_css_selectors_self_parser_s, 0, 0); + __PYX_ERR(1, 4, __pyx_L1_error) + + /* "(tree fragment)":3 + * def __reduce_cython__(self): + * raise TypeError, "self.css_selectors,self.parser,self.selectors cannot be converted to a Python object for pickling" + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * raise TypeError, "self.css_selectors,self.parser,self.selectors cannot be converted to a Python object for pickling" +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_AddTraceback("selectolax.lexbor.LexborCSSSelector.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor/selection.pxi":123 + * cdef list nodes + * + * def __init__(self, LexborNode node, query): # <<<<<<<<<<<<<< + * self.node = node + * self.nodes = self.node.parser.selector.find(query, self.node) if query else [node, ] +*/ + +/* Python wrapper */ +static int __pyx_pw_10selectolax_6lexbor_14LexborSelector_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static int __pyx_pw_10selectolax_6lexbor_14LexborSelector_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_node = 0; + PyObject *__pyx_v_query = 0; + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[2] = {0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1; + #endif + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_node,&__pyx_mstate_global->__pyx_n_u_query,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(6, 123, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 2: + values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(6, 123, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(6, 123, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__init__", 0) < (0)) __PYX_ERR(6, 123, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 2; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, i); __PYX_ERR(6, 123, __pyx_L3_error) } + } + } else if (unlikely(__pyx_nargs != 2)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(6, 123, __pyx_L3_error) + values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(6, 123, __pyx_L3_error) + } + __pyx_v_node = ((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)values[0]); + __pyx_v_query = values[1]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, __pyx_nargs); __PYX_ERR(6, 123, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.lexbor.LexborSelector.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return -1; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_node), __pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborNode, 1, "node", 0))) __PYX_ERR(6, 123, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6lexbor_14LexborSelector___init__(((struct __pyx_obj_10selectolax_6lexbor_LexborSelector *)__pyx_v_self), __pyx_v_node, __pyx_v_query); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = -1; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_10selectolax_6lexbor_14LexborSelector___init__(struct __pyx_obj_10selectolax_6lexbor_LexborSelector *__pyx_v_self, struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_node, PyObject *__pyx_v_query) { + int __pyx_r; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + size_t __pyx_t_6; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__init__", 0); + + /* "selectolax/lexbor/selection.pxi":124 + * + * def __init__(self, LexborNode node, query): + * self.node = node # <<<<<<<<<<<<<< + * self.nodes = self.node.parser.selector.find(query, self.node) if query else [node, ] + * +*/ + __Pyx_INCREF((PyObject *)__pyx_v_node); + __Pyx_GIVEREF((PyObject *)__pyx_v_node); + __Pyx_GOTREF((PyObject *)__pyx_v_self->node); + __Pyx_DECREF((PyObject *)__pyx_v_self->node); + __pyx_v_self->node = __pyx_v_node; + + /* "selectolax/lexbor/selection.pxi":125 + * def __init__(self, LexborNode node, query): + * self.node = node + * self.nodes = self.node.parser.selector.find(query, self.node) if query else [node, ] # <<<<<<<<<<<<<< + * + * cpdef css(self, str query): +*/ + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_query); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(6, 125, __pyx_L1_error) + if (__pyx_t_2) { + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->node->parser), __pyx_mstate_global->__pyx_n_u_selector); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 125, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_4 = __pyx_t_5; + __Pyx_INCREF(__pyx_t_4); + __pyx_t_6 = 0; + { + PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_v_query, ((PyObject *)__pyx_v_self->node)}; + __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_find, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 125, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + if (!(likely(PyList_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None) || __Pyx_RaiseUnexpectedTypeError("list", __pyx_t_3))) __PYX_ERR(6, 125, __pyx_L1_error) + __pyx_t_1 = __pyx_t_3; + __pyx_t_3 = 0; + } else { + __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 125, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_INCREF((PyObject *)__pyx_v_node); + __Pyx_GIVEREF((PyObject *)__pyx_v_node); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_v_node)) != (0)) __PYX_ERR(6, 125, __pyx_L1_error); + __pyx_t_1 = __pyx_t_3; + __pyx_t_3 = 0; + } + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF(__pyx_v_self->nodes); + __Pyx_DECREF(__pyx_v_self->nodes); + __pyx_v_self->nodes = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* "selectolax/lexbor/selection.pxi":123 + * cdef list nodes + * + * def __init__(self, LexborNode node, query): # <<<<<<<<<<<<<< + * self.node = node + * self.nodes = self.node.parser.selector.find(query, self.node) if query else [node, ] +*/ + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_AddTraceback("selectolax.lexbor.LexborSelector.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor/selection.pxi":127 + * self.nodes = self.node.parser.selector.find(query, self.node) if query else [node, ] + * + * cpdef css(self, str query): # <<<<<<<<<<<<<< + * """Evaluate CSS selector against current scope.""" + * raise NotImplementedError("This features is not supported by the lexbor backend. Please use Modest backend.") +*/ + +static PyObject *__pyx_pw_10selectolax_6lexbor_14LexborSelector_3css(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyObject *__pyx_f_10selectolax_6lexbor_14LexborSelector_css(CYTHON_UNUSED struct __pyx_obj_10selectolax_6lexbor_LexborSelector *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_query, int __pyx_skip_dispatch) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + size_t __pyx_t_5; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("css", 0); + /* Check if called by wrapper */ + if (unlikely(__pyx_skip_dispatch)) ; + /* Check if overridden in Python */ + else if ( + #if !CYTHON_USE_TYPE_SLOTS + unlikely(Py_TYPE(((PyObject *)__pyx_v_self)) != __pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborSelector && + __Pyx_PyType_HasFeature(Py_TYPE(((PyObject *)__pyx_v_self)), Py_TPFLAGS_HAVE_GC)) + #else + unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0 || __Pyx_PyType_HasFeature(Py_TYPE(((PyObject *)__pyx_v_self)), (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE))) + #endif + ) { + #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS + static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT; + if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) { + PY_UINT64_T __pyx_typedict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self)); + #endif + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_css); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 127, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (!__Pyx_IsSameCFunction(__pyx_t_1, (void(*)(void)) __pyx_pw_10selectolax_6lexbor_14LexborSelector_3css)) { + __Pyx_XDECREF(__pyx_r); + __pyx_t_3 = NULL; + __Pyx_INCREF(__pyx_t_1); + __pyx_t_4 = __pyx_t_1; + __pyx_t_5 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4); + assert(__pyx_t_3); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_4, __pyx__function); + __pyx_t_5 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_query}; + __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 127, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + } + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + goto __pyx_L0; + } + #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS + __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self)); + __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self)); + if (unlikely(__pyx_typedict_guard != __pyx_tp_dict_version)) { + __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT; + } + #endif + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS + } + #endif + } + + /* "selectolax/lexbor/selection.pxi":129 + * cpdef css(self, str query): + * """Evaluate CSS selector against current scope.""" + * raise NotImplementedError("This features is not supported by the lexbor backend. Please use Modest backend.") # <<<<<<<<<<<<<< + * + * @property +*/ + __pyx_t_2 = NULL; + __pyx_t_5 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_This_features_is_not_supported_b}; + __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_NotImplementedError)), __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 129, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __Pyx_Raise(__pyx_t_1, 0, 0, 0); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __PYX_ERR(6, 129, __pyx_L1_error) + + /* "selectolax/lexbor/selection.pxi":127 + * self.nodes = self.node.parser.selector.find(query, self.node) if query else [node, ] + * + * cpdef css(self, str query): # <<<<<<<<<<<<<< + * """Evaluate CSS selector against current scope.""" + * raise NotImplementedError("This features is not supported by the lexbor backend. Please use Modest backend.") +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("selectolax.lexbor.LexborSelector.css", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_14LexborSelector_3css(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6lexbor_14LexborSelector_2css, "LexborSelector.css(self, str query)\n\nEvaluate CSS selector against current scope."); +static PyMethodDef __pyx_mdef_10selectolax_6lexbor_14LexborSelector_3css = {"css", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_14LexborSelector_3css, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_14LexborSelector_2css}; +static PyObject *__pyx_pw_10selectolax_6lexbor_14LexborSelector_3css(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_query = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("css (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_query,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(6, 127, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(6, 127, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "css", 0) < (0)) __PYX_ERR(6, 127, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("css", 1, 1, 1, i); __PYX_ERR(6, 127, __pyx_L3_error) } + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(6, 127, __pyx_L3_error) + } + __pyx_v_query = ((PyObject*)values[0]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("css", 1, 1, 1, __pyx_nargs); __PYX_ERR(6, 127, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.lexbor.LexborSelector.css", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_query), (&PyUnicode_Type), 1, "query", 1))) __PYX_ERR(6, 127, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6lexbor_14LexborSelector_2css(((struct __pyx_obj_10selectolax_6lexbor_LexborSelector *)__pyx_v_self), __pyx_v_query); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_14LexborSelector_2css(struct __pyx_obj_10selectolax_6lexbor_LexborSelector *__pyx_v_self, PyObject *__pyx_v_query) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("css", 0); + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __pyx_f_10selectolax_6lexbor_14LexborSelector_css(__pyx_v_self, __pyx_v_query, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 127, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("selectolax.lexbor.LexborSelector.css", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor/selection.pxi":131 + * raise NotImplementedError("This features is not supported by the lexbor backend. Please use Modest backend.") + * + * @property # <<<<<<<<<<<<<< + * def matches(self) -> list: + * """Returns all possible matches""" +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_14LexborSelector_7matches_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_10selectolax_6lexbor_14LexborSelector_7matches_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6lexbor_14LexborSelector_7matches___get__(((struct __pyx_obj_10selectolax_6lexbor_LexborSelector *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_14LexborSelector_7matches___get__(struct __pyx_obj_10selectolax_6lexbor_LexborSelector *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__", 0); + + /* "selectolax/lexbor/selection.pxi":134 + * def matches(self) -> list: + * """Returns all possible matches""" + * return self.nodes # <<<<<<<<<<<<<< + * + * @property +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_self->nodes); + __pyx_r = __pyx_v_self->nodes; + goto __pyx_L0; + + /* "selectolax/lexbor/selection.pxi":131 + * raise NotImplementedError("This features is not supported by the lexbor backend. Please use Modest backend.") + * + * @property # <<<<<<<<<<<<<< + * def matches(self) -> list: + * """Returns all possible matches""" +*/ + + /* function exit code */ + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor/selection.pxi":136 + * return self.nodes + * + * @property # <<<<<<<<<<<<<< + * def any_matches(self) -> bool: + * """Returns True if there are any matches""" +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_14LexborSelector_11any_matches_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_10selectolax_6lexbor_14LexborSelector_11any_matches_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6lexbor_14LexborSelector_11any_matches___get__(((struct __pyx_obj_10selectolax_6lexbor_LexborSelector *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_14LexborSelector_11any_matches___get__(struct __pyx_obj_10selectolax_6lexbor_LexborSelector *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + size_t __pyx_t_3; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + + /* "selectolax/lexbor/selection.pxi":139 + * def any_matches(self) -> bool: + * """Returns True if there are any matches""" + * return bool(self.nodes) # <<<<<<<<<<<<<< + * + * def text_contains(self, str text, bool deep=True, str separator='', bool strip=False) -> LexborSelector: +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_2 = NULL; + __pyx_t_3 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_self->nodes}; + __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_7cpython_4bool_bool, __pyx_callargs+__pyx_t_3, (2-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 139, __pyx_L1_error) + __Pyx_GOTREF((PyObject *)__pyx_t_1); + } + __pyx_r = ((PyObject *)__pyx_t_1); + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "selectolax/lexbor/selection.pxi":136 + * return self.nodes + * + * @property # <<<<<<<<<<<<<< + * def any_matches(self) -> bool: + * """Returns True if there are any matches""" +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("selectolax.lexbor.LexborSelector.any_matches.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor/selection.pxi":141 + * return bool(self.nodes) + * + * def text_contains(self, str text, bool deep=True, str separator='', bool strip=False) -> LexborSelector: # <<<<<<<<<<<<<< + * """Filter all current matches given text.""" + * cdef list nodes = [] +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_14LexborSelector_5text_contains(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6lexbor_14LexborSelector_4text_contains, "LexborSelector.text_contains(self, str text, bool deep=True, str separator='', bool strip=False) -> LexborSelector\n\nFilter all current matches given text."); +static PyMethodDef __pyx_mdef_10selectolax_6lexbor_14LexborSelector_5text_contains = {"text_contains", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_14LexborSelector_5text_contains, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_14LexborSelector_4text_contains}; +static PyObject *__pyx_pw_10selectolax_6lexbor_14LexborSelector_5text_contains(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_text = 0; + PyLongObject *__pyx_v_deep = 0; + PyObject *__pyx_v_separator = 0; + PyLongObject *__pyx_v_strip = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[4] = {0,0,0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("text_contains (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_text,&__pyx_mstate_global->__pyx_n_u_deep,&__pyx_mstate_global->__pyx_n_u_separator,&__pyx_mstate_global->__pyx_n_u_strip,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(6, 141, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 4: + values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(6, 141, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 3: + values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(6, 141, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(6, 141, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(6, 141, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "text_contains", 0) < (0)) __PYX_ERR(6, 141, __pyx_L3_error) + if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)((PyLongObject *)Py_True)); + if (!values[2]) values[2] = __Pyx_NewRef(((PyObject*)__pyx_mstate_global->__pyx_kp_u_)); + if (!values[3]) values[3] = __Pyx_NewRef((PyObject *)((PyLongObject *)Py_False)); + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("text_contains", 0, 1, 4, i); __PYX_ERR(6, 141, __pyx_L3_error) } + } + } else { + switch (__pyx_nargs) { + case 4: + values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(6, 141, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 3: + values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(6, 141, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(6, 141, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(6, 141, __pyx_L3_error) + break; + default: goto __pyx_L5_argtuple_error; + } + if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)((PyLongObject *)Py_True)); + if (!values[2]) values[2] = __Pyx_NewRef(((PyObject*)__pyx_mstate_global->__pyx_kp_u_)); + if (!values[3]) values[3] = __Pyx_NewRef((PyObject *)((PyLongObject *)Py_False)); + } + __pyx_v_text = ((PyObject*)values[0]); + __pyx_v_deep = ((PyLongObject *)values[1]); + __pyx_v_separator = ((PyObject*)values[2]); + __pyx_v_strip = ((PyLongObject *)values[3]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("text_contains", 0, 1, 4, __pyx_nargs); __PYX_ERR(6, 141, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.lexbor.LexborSelector.text_contains", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_text), (&PyUnicode_Type), 1, "text", 1))) __PYX_ERR(6, 141, __pyx_L1_error) + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_deep), __pyx_mstate_global->__pyx_ptype_7cpython_4bool_bool, 1, "deep", 0))) __PYX_ERR(6, 141, __pyx_L1_error) + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_separator), (&PyUnicode_Type), 1, "separator", 1))) __PYX_ERR(6, 141, __pyx_L1_error) + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_strip), __pyx_mstate_global->__pyx_ptype_7cpython_4bool_bool, 1, "strip", 0))) __PYX_ERR(6, 141, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6lexbor_14LexborSelector_4text_contains(((struct __pyx_obj_10selectolax_6lexbor_LexborSelector *)__pyx_v_self), __pyx_v_text, __pyx_v_deep, __pyx_v_separator, __pyx_v_strip); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_14LexborSelector_4text_contains(struct __pyx_obj_10selectolax_6lexbor_LexborSelector *__pyx_v_self, PyObject *__pyx_v_text, PyLongObject *__pyx_v_deep, PyObject *__pyx_v_separator, PyLongObject *__pyx_v_strip) { + PyObject *__pyx_v_nodes = 0; + PyObject *__pyx_v_node = NULL; + PyObject *__pyx_v_node_text = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + Py_ssize_t __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + size_t __pyx_t_5; + PyObject *__pyx_t_6 = NULL; + int __pyx_t_7; + int __pyx_t_8; + int __pyx_t_9; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("text_contains", 0); + + /* "selectolax/lexbor/selection.pxi":143 + * def text_contains(self, str text, bool deep=True, str separator='', bool strip=False) -> LexborSelector: + * """Filter all current matches given text.""" + * cdef list nodes = [] # <<<<<<<<<<<<<< + * for node in self.nodes: + * node_text = node.text(deep=deep, separator=separator, strip=strip) +*/ + __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 143, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v_nodes = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* "selectolax/lexbor/selection.pxi":144 + * """Filter all current matches given text.""" + * cdef list nodes = [] + * for node in self.nodes: # <<<<<<<<<<<<<< + * node_text = node.text(deep=deep, separator=separator, strip=strip) + * if node_text and text in node_text: +*/ + if (unlikely(__pyx_v_self->nodes == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); + __PYX_ERR(6, 144, __pyx_L1_error) + } + __pyx_t_1 = __pyx_v_self->nodes; __Pyx_INCREF(__pyx_t_1); + __pyx_t_2 = 0; + for (;;) { + { + Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1); + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely((__pyx_temp < 0))) __PYX_ERR(6, 144, __pyx_L1_error) + #endif + if (__pyx_t_2 >= __pyx_temp) break; + } + __pyx_t_3 = __Pyx_PyList_GetItemRefFast(__pyx_t_1, __pyx_t_2, __Pyx_ReferenceSharing_OwnStrongReference); + ++__pyx_t_2; + if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 144, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_XDECREF_SET(__pyx_v_node, __pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/lexbor/selection.pxi":145 + * cdef list nodes = [] + * for node in self.nodes: + * node_text = node.text(deep=deep, separator=separator, strip=strip) # <<<<<<<<<<<<<< + * if node_text and text in node_text: + * nodes.append(node) +*/ + __pyx_t_4 = __pyx_v_node; + __Pyx_INCREF(__pyx_t_4); + __pyx_t_5 = 0; + { + PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 3 : 0)] = {__pyx_t_4, NULL}; + __pyx_t_6 = __Pyx_MakeVectorcallBuilderKwds(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 145, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_deep, ((PyObject *)__pyx_v_deep), __pyx_t_6, __pyx_callargs+1, 0) < (0)) __PYX_ERR(6, 145, __pyx_L1_error) + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_separator, __pyx_v_separator, __pyx_t_6, __pyx_callargs+1, 1) < (0)) __PYX_ERR(6, 145, __pyx_L1_error) + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_strip, ((PyObject *)__pyx_v_strip), __pyx_t_6, __pyx_callargs+1, 2) < (0)) __PYX_ERR(6, 145, __pyx_L1_error) + __pyx_t_3 = __Pyx_Object_VectorcallMethod_CallFromBuilder((PyObject*)__pyx_mstate_global->__pyx_n_u_text, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_6); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 145, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_XDECREF_SET(__pyx_v_node_text, __pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/lexbor/selection.pxi":146 + * for node in self.nodes: + * node_text = node.text(deep=deep, separator=separator, strip=strip) + * if node_text and text in node_text: # <<<<<<<<<<<<<< + * nodes.append(node) + * self.nodes = nodes +*/ + __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_node_text); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(6, 146, __pyx_L1_error) + if (__pyx_t_8) { + } else { + __pyx_t_7 = __pyx_t_8; + goto __pyx_L6_bool_binop_done; + } + __pyx_t_8 = (__Pyx_PySequence_ContainsTF(__pyx_v_text, __pyx_v_node_text, Py_EQ)); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(6, 146, __pyx_L1_error) + __pyx_t_7 = __pyx_t_8; + __pyx_L6_bool_binop_done:; + if (__pyx_t_7) { + + /* "selectolax/lexbor/selection.pxi":147 + * node_text = node.text(deep=deep, separator=separator, strip=strip) + * if node_text and text in node_text: + * nodes.append(node) # <<<<<<<<<<<<<< + * self.nodes = nodes + * return self +*/ + __pyx_t_9 = __Pyx_PyList_Append(__pyx_v_nodes, __pyx_v_node); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(6, 147, __pyx_L1_error) + + /* "selectolax/lexbor/selection.pxi":146 + * for node in self.nodes: + * node_text = node.text(deep=deep, separator=separator, strip=strip) + * if node_text and text in node_text: # <<<<<<<<<<<<<< + * nodes.append(node) + * self.nodes = nodes +*/ + } + + /* "selectolax/lexbor/selection.pxi":144 + * """Filter all current matches given text.""" + * cdef list nodes = [] + * for node in self.nodes: # <<<<<<<<<<<<<< + * node_text = node.text(deep=deep, separator=separator, strip=strip) + * if node_text and text in node_text: +*/ + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "selectolax/lexbor/selection.pxi":148 + * if node_text and text in node_text: + * nodes.append(node) + * self.nodes = nodes # <<<<<<<<<<<<<< + * return self + * +*/ + __Pyx_INCREF(__pyx_v_nodes); + __Pyx_GIVEREF(__pyx_v_nodes); + __Pyx_GOTREF(__pyx_v_self->nodes); + __Pyx_DECREF(__pyx_v_self->nodes); + __pyx_v_self->nodes = __pyx_v_nodes; + + /* "selectolax/lexbor/selection.pxi":149 + * nodes.append(node) + * self.nodes = nodes + * return self # <<<<<<<<<<<<<< + * + * def any_text_contains(self, str text, bool deep=True, str separator='', bool strip=False) -> bool: +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF((PyObject *)__pyx_v_self); + __pyx_r = ((PyObject *)__pyx_v_self); + goto __pyx_L0; + + /* "selectolax/lexbor/selection.pxi":141 + * return bool(self.nodes) + * + * def text_contains(self, str text, bool deep=True, str separator='', bool strip=False) -> LexborSelector: # <<<<<<<<<<<<<< + * """Filter all current matches given text.""" + * cdef list nodes = [] +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_AddTraceback("selectolax.lexbor.LexborSelector.text_contains", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_nodes); + __Pyx_XDECREF(__pyx_v_node); + __Pyx_XDECREF(__pyx_v_node_text); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor/selection.pxi":151 + * return self + * + * def any_text_contains(self, str text, bool deep=True, str separator='', bool strip=False) -> bool: # <<<<<<<<<<<<<< + * """Returns True if any node in the current search scope contains specified text""" + * cdef LexborNode node +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_14LexborSelector_7any_text_contains(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6lexbor_14LexborSelector_6any_text_contains, "LexborSelector.any_text_contains(self, str text, bool deep=True, str separator='', bool strip=False) -> bool\n\nReturns True if any node in the current search scope contains specified text"); +static PyMethodDef __pyx_mdef_10selectolax_6lexbor_14LexborSelector_7any_text_contains = {"any_text_contains", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_14LexborSelector_7any_text_contains, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_14LexborSelector_6any_text_contains}; +static PyObject *__pyx_pw_10selectolax_6lexbor_14LexborSelector_7any_text_contains(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_text = 0; + PyLongObject *__pyx_v_deep = 0; + PyObject *__pyx_v_separator = 0; + PyLongObject *__pyx_v_strip = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[4] = {0,0,0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("any_text_contains (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_text,&__pyx_mstate_global->__pyx_n_u_deep,&__pyx_mstate_global->__pyx_n_u_separator,&__pyx_mstate_global->__pyx_n_u_strip,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(6, 151, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 4: + values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(6, 151, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 3: + values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(6, 151, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(6, 151, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(6, 151, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "any_text_contains", 0) < (0)) __PYX_ERR(6, 151, __pyx_L3_error) + if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)((PyLongObject *)Py_True)); + if (!values[2]) values[2] = __Pyx_NewRef(((PyObject*)__pyx_mstate_global->__pyx_kp_u_)); + if (!values[3]) values[3] = __Pyx_NewRef((PyObject *)((PyLongObject *)Py_False)); + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("any_text_contains", 0, 1, 4, i); __PYX_ERR(6, 151, __pyx_L3_error) } + } + } else { + switch (__pyx_nargs) { + case 4: + values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(6, 151, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 3: + values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(6, 151, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(6, 151, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(6, 151, __pyx_L3_error) + break; + default: goto __pyx_L5_argtuple_error; + } + if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)((PyLongObject *)Py_True)); + if (!values[2]) values[2] = __Pyx_NewRef(((PyObject*)__pyx_mstate_global->__pyx_kp_u_)); + if (!values[3]) values[3] = __Pyx_NewRef((PyObject *)((PyLongObject *)Py_False)); + } + __pyx_v_text = ((PyObject*)values[0]); + __pyx_v_deep = ((PyLongObject *)values[1]); + __pyx_v_separator = ((PyObject*)values[2]); + __pyx_v_strip = ((PyLongObject *)values[3]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("any_text_contains", 0, 1, 4, __pyx_nargs); __PYX_ERR(6, 151, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.lexbor.LexborSelector.any_text_contains", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_text), (&PyUnicode_Type), 1, "text", 1))) __PYX_ERR(6, 151, __pyx_L1_error) + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_deep), __pyx_mstate_global->__pyx_ptype_7cpython_4bool_bool, 1, "deep", 0))) __PYX_ERR(6, 151, __pyx_L1_error) + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_separator), (&PyUnicode_Type), 1, "separator", 1))) __PYX_ERR(6, 151, __pyx_L1_error) + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_strip), __pyx_mstate_global->__pyx_ptype_7cpython_4bool_bool, 1, "strip", 0))) __PYX_ERR(6, 151, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6lexbor_14LexborSelector_6any_text_contains(((struct __pyx_obj_10selectolax_6lexbor_LexborSelector *)__pyx_v_self), __pyx_v_text, __pyx_v_deep, __pyx_v_separator, __pyx_v_strip); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_14LexborSelector_6any_text_contains(struct __pyx_obj_10selectolax_6lexbor_LexborSelector *__pyx_v_self, PyObject *__pyx_v_text, PyLongObject *__pyx_v_deep, PyObject *__pyx_v_separator, PyLongObject *__pyx_v_strip) { + struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_node = 0; + PyObject *__pyx_v_node_text = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + Py_ssize_t __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + size_t __pyx_t_5; + PyObject *__pyx_t_6 = NULL; + int __pyx_t_7; + int __pyx_t_8; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("any_text_contains", 0); + + /* "selectolax/lexbor/selection.pxi":154 + * """Returns True if any node in the current search scope contains specified text""" + * cdef LexborNode node + * for node in self.nodes: # <<<<<<<<<<<<<< + * node_text = node.text(deep=deep, separator=separator, strip=strip) + * if node_text and text in node_text: +*/ + if (unlikely(__pyx_v_self->nodes == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); + __PYX_ERR(6, 154, __pyx_L1_error) + } + __pyx_t_1 = __pyx_v_self->nodes; __Pyx_INCREF(__pyx_t_1); + __pyx_t_2 = 0; + for (;;) { + { + Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1); + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely((__pyx_temp < 0))) __PYX_ERR(6, 154, __pyx_L1_error) + #endif + if (__pyx_t_2 >= __pyx_temp) break; + } + __pyx_t_3 = __Pyx_PyList_GetItemRefFast(__pyx_t_1, __pyx_t_2, __Pyx_ReferenceSharing_OwnStrongReference); + ++__pyx_t_2; + if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 154, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborNode))))) __PYX_ERR(6, 154, __pyx_L1_error) + __Pyx_XDECREF_SET(__pyx_v_node, ((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_t_3)); + __pyx_t_3 = 0; + + /* "selectolax/lexbor/selection.pxi":155 + * cdef LexborNode node + * for node in self.nodes: + * node_text = node.text(deep=deep, separator=separator, strip=strip) # <<<<<<<<<<<<<< + * if node_text and text in node_text: + * return True +*/ + __pyx_t_4 = ((PyObject *)__pyx_v_node); + __Pyx_INCREF(__pyx_t_4); + __pyx_t_5 = 0; + { + PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 3 : 0)] = {__pyx_t_4, NULL}; + __pyx_t_6 = __Pyx_MakeVectorcallBuilderKwds(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 155, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_deep, ((PyObject *)__pyx_v_deep), __pyx_t_6, __pyx_callargs+1, 0) < (0)) __PYX_ERR(6, 155, __pyx_L1_error) + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_separator, __pyx_v_separator, __pyx_t_6, __pyx_callargs+1, 1) < (0)) __PYX_ERR(6, 155, __pyx_L1_error) + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_strip, ((PyObject *)__pyx_v_strip), __pyx_t_6, __pyx_callargs+1, 2) < (0)) __PYX_ERR(6, 155, __pyx_L1_error) + __pyx_t_3 = __Pyx_Object_VectorcallMethod_CallFromBuilder((PyObject*)__pyx_mstate_global->__pyx_n_u_text, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_6); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 155, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_XDECREF_SET(__pyx_v_node_text, __pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/lexbor/selection.pxi":156 + * for node in self.nodes: + * node_text = node.text(deep=deep, separator=separator, strip=strip) + * if node_text and text in node_text: # <<<<<<<<<<<<<< + * return True + * return False +*/ + __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_node_text); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(6, 156, __pyx_L1_error) + if (__pyx_t_8) { + } else { + __pyx_t_7 = __pyx_t_8; + goto __pyx_L6_bool_binop_done; + } + __pyx_t_8 = (__Pyx_PySequence_ContainsTF(__pyx_v_text, __pyx_v_node_text, Py_EQ)); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(6, 156, __pyx_L1_error) + __pyx_t_7 = __pyx_t_8; + __pyx_L6_bool_binop_done:; + if (__pyx_t_7) { + + /* "selectolax/lexbor/selection.pxi":157 + * node_text = node.text(deep=deep, separator=separator, strip=strip) + * if node_text and text in node_text: + * return True # <<<<<<<<<<<<<< + * return False + * +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(Py_True); + __pyx_r = Py_True; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + goto __pyx_L0; + + /* "selectolax/lexbor/selection.pxi":156 + * for node in self.nodes: + * node_text = node.text(deep=deep, separator=separator, strip=strip) + * if node_text and text in node_text: # <<<<<<<<<<<<<< + * return True + * return False +*/ + } + + /* "selectolax/lexbor/selection.pxi":154 + * """Returns True if any node in the current search scope contains specified text""" + * cdef LexborNode node + * for node in self.nodes: # <<<<<<<<<<<<<< + * node_text = node.text(deep=deep, separator=separator, strip=strip) + * if node_text and text in node_text: +*/ + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "selectolax/lexbor/selection.pxi":158 + * if node_text and text in node_text: + * return True + * return False # <<<<<<<<<<<<<< + * + * def attribute_longer_than(self, str attribute, int length, str start = None) -> LexborSelector: +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(Py_False); + __pyx_r = Py_False; + goto __pyx_L0; + + /* "selectolax/lexbor/selection.pxi":151 + * return self + * + * def any_text_contains(self, str text, bool deep=True, str separator='', bool strip=False) -> bool: # <<<<<<<<<<<<<< + * """Returns True if any node in the current search scope contains specified text""" + * cdef LexborNode node +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_AddTraceback("selectolax.lexbor.LexborSelector.any_text_contains", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF((PyObject *)__pyx_v_node); + __Pyx_XDECREF(__pyx_v_node_text); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor/selection.pxi":160 + * return False + * + * def attribute_longer_than(self, str attribute, int length, str start = None) -> LexborSelector: # <<<<<<<<<<<<<< + * """Filter all current matches by attribute length. + * +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_14LexborSelector_9attribute_longer_than(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6lexbor_14LexborSelector_8attribute_longer_than, "LexborSelector.attribute_longer_than(self, str attribute, int length, str start=None) -> LexborSelector\n\nFilter all current matches by attribute length.\n\nSimilar to `string-length` in XPath."); +static PyMethodDef __pyx_mdef_10selectolax_6lexbor_14LexborSelector_9attribute_longer_than = {"attribute_longer_than", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_14LexborSelector_9attribute_longer_than, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_14LexborSelector_8attribute_longer_than}; +static PyObject *__pyx_pw_10selectolax_6lexbor_14LexborSelector_9attribute_longer_than(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_attribute = 0; + int __pyx_v_length; + PyObject *__pyx_v_start = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[3] = {0,0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("attribute_longer_than (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_attribute,&__pyx_mstate_global->__pyx_n_u_length,&__pyx_mstate_global->__pyx_n_u_start,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(6, 160, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 3: + values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(6, 160, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(6, 160, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(6, 160, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "attribute_longer_than", 0) < (0)) __PYX_ERR(6, 160, __pyx_L3_error) + if (!values[2]) values[2] = __Pyx_NewRef(((PyObject*)Py_None)); + for (Py_ssize_t i = __pyx_nargs; i < 2; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("attribute_longer_than", 0, 2, 3, i); __PYX_ERR(6, 160, __pyx_L3_error) } + } + } else { + switch (__pyx_nargs) { + case 3: + values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(6, 160, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(6, 160, __pyx_L3_error) + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(6, 160, __pyx_L3_error) + break; + default: goto __pyx_L5_argtuple_error; + } + if (!values[2]) values[2] = __Pyx_NewRef(((PyObject*)Py_None)); + } + __pyx_v_attribute = ((PyObject*)values[0]); + __pyx_v_length = __Pyx_PyLong_As_int(values[1]); if (unlikely((__pyx_v_length == (int)-1) && PyErr_Occurred())) __PYX_ERR(6, 160, __pyx_L3_error) + __pyx_v_start = ((PyObject*)values[2]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("attribute_longer_than", 0, 2, 3, __pyx_nargs); __PYX_ERR(6, 160, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.lexbor.LexborSelector.attribute_longer_than", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_attribute), (&PyUnicode_Type), 1, "attribute", 1))) __PYX_ERR(6, 160, __pyx_L1_error) + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_start), (&PyUnicode_Type), 1, "start", 1))) __PYX_ERR(6, 160, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6lexbor_14LexborSelector_8attribute_longer_than(((struct __pyx_obj_10selectolax_6lexbor_LexborSelector *)__pyx_v_self), __pyx_v_attribute, __pyx_v_length, __pyx_v_start); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_14LexborSelector_8attribute_longer_than(struct __pyx_obj_10selectolax_6lexbor_LexborSelector *__pyx_v_self, PyObject *__pyx_v_attribute, int __pyx_v_length, PyObject *__pyx_v_start) { + PyObject *__pyx_v_nodes = 0; + PyObject *__pyx_v_node = NULL; + PyObject *__pyx_v_attr = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + Py_ssize_t __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + size_t __pyx_t_6; + int __pyx_t_7; + int __pyx_t_8; + Py_ssize_t __pyx_t_9; + int __pyx_t_10; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("attribute_longer_than", 0); + + /* "selectolax/lexbor/selection.pxi":165 + * Similar to `string-length` in XPath. + * """ + * cdef list nodes = [] # <<<<<<<<<<<<<< + * for node in self.nodes: + * attr = node.attributes.get(attribute) +*/ + __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 165, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v_nodes = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* "selectolax/lexbor/selection.pxi":166 + * """ + * cdef list nodes = [] + * for node in self.nodes: # <<<<<<<<<<<<<< + * attr = node.attributes.get(attribute) + * if not attr: +*/ + if (unlikely(__pyx_v_self->nodes == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); + __PYX_ERR(6, 166, __pyx_L1_error) + } + __pyx_t_1 = __pyx_v_self->nodes; __Pyx_INCREF(__pyx_t_1); + __pyx_t_2 = 0; + for (;;) { + { + Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1); + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely((__pyx_temp < 0))) __PYX_ERR(6, 166, __pyx_L1_error) + #endif + if (__pyx_t_2 >= __pyx_temp) break; + } + __pyx_t_3 = __Pyx_PyList_GetItemRefFast(__pyx_t_1, __pyx_t_2, __Pyx_ReferenceSharing_OwnStrongReference); + ++__pyx_t_2; + if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 166, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_XDECREF_SET(__pyx_v_node, __pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/lexbor/selection.pxi":167 + * cdef list nodes = [] + * for node in self.nodes: + * attr = node.attributes.get(attribute) # <<<<<<<<<<<<<< + * if not attr: + * continue +*/ + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_node, __pyx_mstate_global->__pyx_n_u_attributes_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 167, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_4 = __pyx_t_5; + __Pyx_INCREF(__pyx_t_4); + __pyx_t_6 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_attribute}; + __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_get, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 167, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_XDECREF_SET(__pyx_v_attr, __pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/lexbor/selection.pxi":168 + * for node in self.nodes: + * attr = node.attributes.get(attribute) + * if not attr: # <<<<<<<<<<<<<< + * continue + * if attr and start and start in attr: +*/ + __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_attr); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(6, 168, __pyx_L1_error) + __pyx_t_8 = (!__pyx_t_7); + if (__pyx_t_8) { + + /* "selectolax/lexbor/selection.pxi":169 + * attr = node.attributes.get(attribute) + * if not attr: + * continue # <<<<<<<<<<<<<< + * if attr and start and start in attr: + * attr = attr[attr.find(start) + len(start):] +*/ + goto __pyx_L3_continue; + + /* "selectolax/lexbor/selection.pxi":168 + * for node in self.nodes: + * attr = node.attributes.get(attribute) + * if not attr: # <<<<<<<<<<<<<< + * continue + * if attr and start and start in attr: +*/ + } + + /* "selectolax/lexbor/selection.pxi":170 + * if not attr: + * continue + * if attr and start and start in attr: # <<<<<<<<<<<<<< + * attr = attr[attr.find(start) + len(start):] + * if len(attr) > length: +*/ + __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_attr); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(6, 170, __pyx_L1_error) + if (__pyx_t_7) { + } else { + __pyx_t_8 = __pyx_t_7; + goto __pyx_L7_bool_binop_done; + } + if (__pyx_v_start == Py_None) __pyx_t_7 = 0; + else + { + Py_ssize_t __pyx_temp = __Pyx_PyUnicode_IS_TRUE(__pyx_v_start); + if (unlikely(((!CYTHON_ASSUME_SAFE_SIZE) && __pyx_temp < 0))) __PYX_ERR(6, 170, __pyx_L1_error) + __pyx_t_7 = (__pyx_temp != 0); + } + + if (__pyx_t_7) { + } else { + __pyx_t_8 = __pyx_t_7; + goto __pyx_L7_bool_binop_done; + } + __pyx_t_7 = (__Pyx_PySequence_ContainsTF(__pyx_v_start, __pyx_v_attr, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(6, 170, __pyx_L1_error) + __pyx_t_8 = __pyx_t_7; + __pyx_L7_bool_binop_done:; + if (__pyx_t_8) { + + /* "selectolax/lexbor/selection.pxi":171 + * continue + * if attr and start and start in attr: + * attr = attr[attr.find(start) + len(start):] # <<<<<<<<<<<<<< + * if len(attr) > length: + * nodes.append(node) +*/ + __pyx_t_5 = __pyx_v_attr; + __Pyx_INCREF(__pyx_t_5); + __pyx_t_6 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_start}; + __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_find, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 171, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + if (unlikely(__pyx_v_start == Py_None)) { + PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); + __PYX_ERR(6, 171, __pyx_L1_error) + } + __pyx_t_9 = __Pyx_PyUnicode_GET_LENGTH(__pyx_v_start); if (unlikely(__pyx_t_9 == ((Py_ssize_t)-1))) __PYX_ERR(6, 171, __pyx_L1_error) + __pyx_t_5 = PyLong_FromSsize_t(__pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 171, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_4 = PyNumber_Add(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 171, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = __Pyx_PyObject_GetSlice(__pyx_v_attr, 0, 0, &__pyx_t_4, NULL, NULL, 0, 0, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 171, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF_SET(__pyx_v_attr, __pyx_t_5); + __pyx_t_5 = 0; + + /* "selectolax/lexbor/selection.pxi":170 + * if not attr: + * continue + * if attr and start and start in attr: # <<<<<<<<<<<<<< + * attr = attr[attr.find(start) + len(start):] + * if len(attr) > length: +*/ + } + + /* "selectolax/lexbor/selection.pxi":172 + * if attr and start and start in attr: + * attr = attr[attr.find(start) + len(start):] + * if len(attr) > length: # <<<<<<<<<<<<<< + * nodes.append(node) + * self.nodes = nodes +*/ + __pyx_t_9 = PyObject_Length(__pyx_v_attr); if (unlikely(__pyx_t_9 == ((Py_ssize_t)-1))) __PYX_ERR(6, 172, __pyx_L1_error) + __pyx_t_8 = (__pyx_t_9 > __pyx_v_length); + if (__pyx_t_8) { + + /* "selectolax/lexbor/selection.pxi":173 + * attr = attr[attr.find(start) + len(start):] + * if len(attr) > length: + * nodes.append(node) # <<<<<<<<<<<<<< + * self.nodes = nodes + * return self +*/ + __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_nodes, __pyx_v_node); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(6, 173, __pyx_L1_error) + + /* "selectolax/lexbor/selection.pxi":172 + * if attr and start and start in attr: + * attr = attr[attr.find(start) + len(start):] + * if len(attr) > length: # <<<<<<<<<<<<<< + * nodes.append(node) + * self.nodes = nodes +*/ + } + + /* "selectolax/lexbor/selection.pxi":166 + * """ + * cdef list nodes = [] + * for node in self.nodes: # <<<<<<<<<<<<<< + * attr = node.attributes.get(attribute) + * if not attr: +*/ + __pyx_L3_continue:; + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "selectolax/lexbor/selection.pxi":174 + * if len(attr) > length: + * nodes.append(node) + * self.nodes = nodes # <<<<<<<<<<<<<< + * return self + * +*/ + __Pyx_INCREF(__pyx_v_nodes); + __Pyx_GIVEREF(__pyx_v_nodes); + __Pyx_GOTREF(__pyx_v_self->nodes); + __Pyx_DECREF(__pyx_v_self->nodes); + __pyx_v_self->nodes = __pyx_v_nodes; + + /* "selectolax/lexbor/selection.pxi":175 + * nodes.append(node) + * self.nodes = nodes + * return self # <<<<<<<<<<<<<< + * + * def any_attribute_longer_than(self, str attribute, int length, str start = None) -> bool: +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF((PyObject *)__pyx_v_self); + __pyx_r = ((PyObject *)__pyx_v_self); + goto __pyx_L0; + + /* "selectolax/lexbor/selection.pxi":160 + * return False + * + * def attribute_longer_than(self, str attribute, int length, str start = None) -> LexborSelector: # <<<<<<<<<<<<<< + * """Filter all current matches by attribute length. + * +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_AddTraceback("selectolax.lexbor.LexborSelector.attribute_longer_than", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_nodes); + __Pyx_XDECREF(__pyx_v_node); + __Pyx_XDECREF(__pyx_v_attr); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor/selection.pxi":177 + * return self + * + * def any_attribute_longer_than(self, str attribute, int length, str start = None) -> bool: # <<<<<<<<<<<<<< + * """Returns True any href attribute longer than a specified length. + * +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_14LexborSelector_11any_attribute_longer_than(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6lexbor_14LexborSelector_10any_attribute_longer_than, "LexborSelector.any_attribute_longer_than(self, str attribute, int length, str start=None) -> bool\n\nReturns True any href attribute longer than a specified length.\n\nSimilar to `string-length` in XPath."); +static PyMethodDef __pyx_mdef_10selectolax_6lexbor_14LexborSelector_11any_attribute_longer_than = {"any_attribute_longer_than", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_14LexborSelector_11any_attribute_longer_than, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_14LexborSelector_10any_attribute_longer_than}; +static PyObject *__pyx_pw_10selectolax_6lexbor_14LexborSelector_11any_attribute_longer_than(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_attribute = 0; + int __pyx_v_length; + PyObject *__pyx_v_start = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[3] = {0,0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("any_attribute_longer_than (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_attribute,&__pyx_mstate_global->__pyx_n_u_length,&__pyx_mstate_global->__pyx_n_u_start,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(6, 177, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 3: + values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(6, 177, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(6, 177, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(6, 177, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "any_attribute_longer_than", 0) < (0)) __PYX_ERR(6, 177, __pyx_L3_error) + if (!values[2]) values[2] = __Pyx_NewRef(((PyObject*)Py_None)); + for (Py_ssize_t i = __pyx_nargs; i < 2; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("any_attribute_longer_than", 0, 2, 3, i); __PYX_ERR(6, 177, __pyx_L3_error) } + } + } else { + switch (__pyx_nargs) { + case 3: + values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(6, 177, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(6, 177, __pyx_L3_error) + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(6, 177, __pyx_L3_error) + break; + default: goto __pyx_L5_argtuple_error; + } + if (!values[2]) values[2] = __Pyx_NewRef(((PyObject*)Py_None)); + } + __pyx_v_attribute = ((PyObject*)values[0]); + __pyx_v_length = __Pyx_PyLong_As_int(values[1]); if (unlikely((__pyx_v_length == (int)-1) && PyErr_Occurred())) __PYX_ERR(6, 177, __pyx_L3_error) + __pyx_v_start = ((PyObject*)values[2]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("any_attribute_longer_than", 0, 2, 3, __pyx_nargs); __PYX_ERR(6, 177, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.lexbor.LexborSelector.any_attribute_longer_than", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_attribute), (&PyUnicode_Type), 1, "attribute", 1))) __PYX_ERR(6, 177, __pyx_L1_error) + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_start), (&PyUnicode_Type), 1, "start", 1))) __PYX_ERR(6, 177, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6lexbor_14LexborSelector_10any_attribute_longer_than(((struct __pyx_obj_10selectolax_6lexbor_LexborSelector *)__pyx_v_self), __pyx_v_attribute, __pyx_v_length, __pyx_v_start); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_14LexborSelector_10any_attribute_longer_than(struct __pyx_obj_10selectolax_6lexbor_LexborSelector *__pyx_v_self, PyObject *__pyx_v_attribute, int __pyx_v_length, PyObject *__pyx_v_start) { + struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_node = 0; + PyObject *__pyx_v_attr = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + Py_ssize_t __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + size_t __pyx_t_6; + int __pyx_t_7; + int __pyx_t_8; + Py_ssize_t __pyx_t_9; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("any_attribute_longer_than", 0); + + /* "selectolax/lexbor/selection.pxi":183 + * """ + * cdef LexborNode node + * for node in self.nodes: # <<<<<<<<<<<<<< + * attr = node.attributes.get(attribute) + * if attr and start and start in attr: +*/ + if (unlikely(__pyx_v_self->nodes == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); + __PYX_ERR(6, 183, __pyx_L1_error) + } + __pyx_t_1 = __pyx_v_self->nodes; __Pyx_INCREF(__pyx_t_1); + __pyx_t_2 = 0; + for (;;) { + { + Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1); + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely((__pyx_temp < 0))) __PYX_ERR(6, 183, __pyx_L1_error) + #endif + if (__pyx_t_2 >= __pyx_temp) break; + } + __pyx_t_3 = __Pyx_PyList_GetItemRefFast(__pyx_t_1, __pyx_t_2, __Pyx_ReferenceSharing_OwnStrongReference); + ++__pyx_t_2; + if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 183, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborNode))))) __PYX_ERR(6, 183, __pyx_L1_error) + __Pyx_XDECREF_SET(__pyx_v_node, ((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_t_3)); + __pyx_t_3 = 0; + + /* "selectolax/lexbor/selection.pxi":184 + * cdef LexborNode node + * for node in self.nodes: + * attr = node.attributes.get(attribute) # <<<<<<<<<<<<<< + * if attr and start and start in attr: + * attr = attr[attr.find(start) + len(start):] +*/ + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_node), __pyx_mstate_global->__pyx_n_u_attributes_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 184, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_4 = __pyx_t_5; + __Pyx_INCREF(__pyx_t_4); + __pyx_t_6 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_attribute}; + __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_get, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 184, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_XDECREF_SET(__pyx_v_attr, __pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/lexbor/selection.pxi":185 + * for node in self.nodes: + * attr = node.attributes.get(attribute) + * if attr and start and start in attr: # <<<<<<<<<<<<<< + * attr = attr[attr.find(start) + len(start):] + * if len(attr) > length: +*/ + __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_attr); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(6, 185, __pyx_L1_error) + if (__pyx_t_8) { + } else { + __pyx_t_7 = __pyx_t_8; + goto __pyx_L6_bool_binop_done; + } + if (__pyx_v_start == Py_None) __pyx_t_8 = 0; + else + { + Py_ssize_t __pyx_temp = __Pyx_PyUnicode_IS_TRUE(__pyx_v_start); + if (unlikely(((!CYTHON_ASSUME_SAFE_SIZE) && __pyx_temp < 0))) __PYX_ERR(6, 185, __pyx_L1_error) + __pyx_t_8 = (__pyx_temp != 0); + } + + if (__pyx_t_8) { + } else { + __pyx_t_7 = __pyx_t_8; + goto __pyx_L6_bool_binop_done; + } + __pyx_t_8 = (__Pyx_PySequence_ContainsTF(__pyx_v_start, __pyx_v_attr, Py_EQ)); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(6, 185, __pyx_L1_error) + __pyx_t_7 = __pyx_t_8; + __pyx_L6_bool_binop_done:; + if (__pyx_t_7) { + + /* "selectolax/lexbor/selection.pxi":186 + * attr = node.attributes.get(attribute) + * if attr and start and start in attr: + * attr = attr[attr.find(start) + len(start):] # <<<<<<<<<<<<<< + * if len(attr) > length: + * return True +*/ + __pyx_t_5 = __pyx_v_attr; + __Pyx_INCREF(__pyx_t_5); + __pyx_t_6 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_start}; + __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_find, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 186, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + if (unlikely(__pyx_v_start == Py_None)) { + PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); + __PYX_ERR(6, 186, __pyx_L1_error) + } + __pyx_t_9 = __Pyx_PyUnicode_GET_LENGTH(__pyx_v_start); if (unlikely(__pyx_t_9 == ((Py_ssize_t)-1))) __PYX_ERR(6, 186, __pyx_L1_error) + __pyx_t_5 = PyLong_FromSsize_t(__pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 186, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_4 = PyNumber_Add(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 186, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = __Pyx_PyObject_GetSlice(__pyx_v_attr, 0, 0, &__pyx_t_4, NULL, NULL, 0, 0, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 186, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF_SET(__pyx_v_attr, __pyx_t_5); + __pyx_t_5 = 0; + + /* "selectolax/lexbor/selection.pxi":185 + * for node in self.nodes: + * attr = node.attributes.get(attribute) + * if attr and start and start in attr: # <<<<<<<<<<<<<< + * attr = attr[attr.find(start) + len(start):] + * if len(attr) > length: +*/ + } + + /* "selectolax/lexbor/selection.pxi":187 + * if attr and start and start in attr: + * attr = attr[attr.find(start) + len(start):] + * if len(attr) > length: # <<<<<<<<<<<<<< + * return True + * return False +*/ + __pyx_t_9 = PyObject_Length(__pyx_v_attr); if (unlikely(__pyx_t_9 == ((Py_ssize_t)-1))) __PYX_ERR(6, 187, __pyx_L1_error) + __pyx_t_7 = (__pyx_t_9 > __pyx_v_length); + if (__pyx_t_7) { + + /* "selectolax/lexbor/selection.pxi":188 + * attr = attr[attr.find(start) + len(start):] + * if len(attr) > length: + * return True # <<<<<<<<<<<<<< + * return False + * +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(Py_True); + __pyx_r = Py_True; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + goto __pyx_L0; + + /* "selectolax/lexbor/selection.pxi":187 + * if attr and start and start in attr: + * attr = attr[attr.find(start) + len(start):] + * if len(attr) > length: # <<<<<<<<<<<<<< + * return True + * return False +*/ + } + + /* "selectolax/lexbor/selection.pxi":183 + * """ + * cdef LexborNode node + * for node in self.nodes: # <<<<<<<<<<<<<< + * attr = node.attributes.get(attribute) + * if attr and start and start in attr: +*/ + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "selectolax/lexbor/selection.pxi":189 + * if len(attr) > length: + * return True + * return False # <<<<<<<<<<<<<< + * + * def __bool__(self): +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(Py_False); + __pyx_r = Py_False; + goto __pyx_L0; + + /* "selectolax/lexbor/selection.pxi":177 + * return self + * + * def any_attribute_longer_than(self, str attribute, int length, str start = None) -> bool: # <<<<<<<<<<<<<< + * """Returns True any href attribute longer than a specified length. + * +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_AddTraceback("selectolax.lexbor.LexborSelector.any_attribute_longer_than", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF((PyObject *)__pyx_v_node); + __Pyx_XDECREF(__pyx_v_attr); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor/selection.pxi":191 + * return False + * + * def __bool__(self): # <<<<<<<<<<<<<< + * return bool(self.nodes) + * +*/ + +/* Python wrapper */ +static int __pyx_pw_10selectolax_6lexbor_14LexborSelector_13__bool__(PyObject *__pyx_v_self); /*proto*/ +static int __pyx_pw_10selectolax_6lexbor_14LexborSelector_13__bool__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__bool__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6lexbor_14LexborSelector_12__bool__(((struct __pyx_obj_10selectolax_6lexbor_LexborSelector *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_10selectolax_6lexbor_14LexborSelector_12__bool__(struct __pyx_obj_10selectolax_6lexbor_LexborSelector *__pyx_v_self) { + int __pyx_r; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + size_t __pyx_t_3; + int __pyx_t_4; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__bool__", 0); + + /* "selectolax/lexbor/selection.pxi":192 + * + * def __bool__(self): + * return bool(self.nodes) # <<<<<<<<<<<<<< + * + * +*/ + __pyx_t_2 = NULL; + __pyx_t_3 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_self->nodes}; + __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_7cpython_4bool_bool, __pyx_callargs+__pyx_t_3, (2-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 192, __pyx_L1_error) + __Pyx_GOTREF((PyObject *)__pyx_t_1); + } + __pyx_t_4 = __Pyx_PyLong_As_int(((PyObject *)__pyx_t_1)); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(6, 192, __pyx_L1_error) + __Pyx_DECREF((PyObject *)__pyx_t_1); __pyx_t_1 = 0; + __pyx_r = __pyx_t_4; + goto __pyx_L0; + + /* "selectolax/lexbor/selection.pxi":191 + * return False + * + * def __bool__(self): # <<<<<<<<<<<<<< + * return bool(self.nodes) + * +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("selectolax.lexbor.LexborSelector.__bool__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * cdef tuple state + * cdef object _dict +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_14LexborSelector_15__reduce_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6lexbor_14LexborSelector_14__reduce_cython__, "LexborSelector.__reduce_cython__(self)"); +static PyMethodDef __pyx_mdef_10selectolax_6lexbor_14LexborSelector_15__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_14LexborSelector_15__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_14LexborSelector_14__reduce_cython__}; +static PyObject *__pyx_pw_10selectolax_6lexbor_14LexborSelector_15__reduce_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL; } + const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len < 0)) return NULL; + if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;} + __pyx_r = __pyx_pf_10selectolax_6lexbor_14LexborSelector_14__reduce_cython__(((struct __pyx_obj_10selectolax_6lexbor_LexborSelector *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_14LexborSelector_14__reduce_cython__(struct __pyx_obj_10selectolax_6lexbor_LexborSelector *__pyx_v_self) { + PyObject *__pyx_v_state = 0; + PyObject *__pyx_v__dict = 0; + int __pyx_v_use_setstate; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + int __pyx_t_3; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__reduce_cython__", 0); + + /* "(tree fragment)":5 + * cdef object _dict + * cdef bint use_setstate + * state = (self.node, self.nodes) # <<<<<<<<<<<<<< + * _dict = getattr(self, '__dict__', None) + * if _dict is not None and _dict: +*/ + __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF((PyObject *)__pyx_v_self->node); + __Pyx_GIVEREF((PyObject *)__pyx_v_self->node); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_self->node)) != (0)) __PYX_ERR(1, 5, __pyx_L1_error); + __Pyx_INCREF(__pyx_v_self->nodes); + __Pyx_GIVEREF(__pyx_v_self->nodes); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_self->nodes) != (0)) __PYX_ERR(1, 5, __pyx_L1_error); + __pyx_v_state = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* "(tree fragment)":6 + * cdef bint use_setstate + * state = (self.node, self.nodes) + * _dict = getattr(self, '__dict__', None) # <<<<<<<<<<<<<< + * if _dict is not None and _dict: + * state += (_dict,) +*/ + __pyx_t_1 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_dict, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v__dict = __pyx_t_1; + __pyx_t_1 = 0; + + /* "(tree fragment)":7 + * state = (self.node, self.nodes) + * _dict = getattr(self, '__dict__', None) + * if _dict is not None and _dict: # <<<<<<<<<<<<<< + * state += (_dict,) + * use_setstate = True +*/ + __pyx_t_3 = (__pyx_v__dict != Py_None); + if (__pyx_t_3) { + } else { + __pyx_t_2 = __pyx_t_3; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v__dict); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(1, 7, __pyx_L1_error) + __pyx_t_2 = __pyx_t_3; + __pyx_L4_bool_binop_done:; + if (__pyx_t_2) { + + /* "(tree fragment)":8 + * _dict = getattr(self, '__dict__', None) + * if _dict is not None and _dict: + * state += (_dict,) # <<<<<<<<<<<<<< + * use_setstate = True + * else: +*/ + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 8, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(__pyx_v__dict); + __Pyx_GIVEREF(__pyx_v__dict); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v__dict) != (0)) __PYX_ERR(1, 8, __pyx_L1_error); + __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 8, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_4)); + __pyx_t_4 = 0; + + /* "(tree fragment)":9 + * if _dict is not None and _dict: + * state += (_dict,) + * use_setstate = True # <<<<<<<<<<<<<< + * else: + * use_setstate = ('self.node is not None or self.nodes is not None',) +*/ + __pyx_v_use_setstate = 1; + + /* "(tree fragment)":7 + * state = (self.node, self.nodes) + * _dict = getattr(self, '__dict__', None) + * if _dict is not None and _dict: # <<<<<<<<<<<<<< + * state += (_dict,) + * use_setstate = True +*/ + goto __pyx_L3; + } + + /* "(tree fragment)":11 + * use_setstate = True + * else: + * use_setstate = ('self.node is not None or self.nodes is not None',) # <<<<<<<<<<<<<< + * if use_setstate: + * return __pyx_unpickle_LexborSelector, (type(self), 0xc5dfe7e, None), state +*/ + /*else*/ { + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_mstate_global->__pyx_tuple[1]); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 11, __pyx_L1_error) + __pyx_v_use_setstate = __pyx_t_2; + } + __pyx_L3:; + + /* "(tree fragment)":12 + * else: + * use_setstate = ('self.node is not None or self.nodes is not None',) + * if use_setstate: # <<<<<<<<<<<<<< + * return __pyx_unpickle_LexborSelector, (type(self), 0xc5dfe7e, None), state + * else: +*/ + if (__pyx_v_use_setstate) { + + /* "(tree fragment)":13 + * use_setstate = ('self.node is not None or self.nodes is not None',) + * if use_setstate: + * return __pyx_unpickle_LexborSelector, (type(self), 0xc5dfe7e, None), state # <<<<<<<<<<<<<< + * else: + * return __pyx_unpickle_LexborSelector, (type(self), 0xc5dfe7e, state) +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_pyx_unpickle_LexborSelector); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); + __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))) != (0)) __PYX_ERR(1, 13, __pyx_L1_error); + __Pyx_INCREF(__pyx_mstate_global->__pyx_int_207486590); + __Pyx_GIVEREF(__pyx_mstate_global->__pyx_int_207486590); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_mstate_global->__pyx_int_207486590) != (0)) __PYX_ERR(1, 13, __pyx_L1_error); + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 2, Py_None) != (0)) __PYX_ERR(1, 13, __pyx_L1_error); + __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_GIVEREF(__pyx_t_4); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4) != (0)) __PYX_ERR(1, 13, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_1); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_1) != (0)) __PYX_ERR(1, 13, __pyx_L1_error); + __Pyx_INCREF(__pyx_v_state); + __Pyx_GIVEREF(__pyx_v_state); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_v_state) != (0)) __PYX_ERR(1, 13, __pyx_L1_error); + __pyx_t_4 = 0; + __pyx_t_1 = 0; + __pyx_r = __pyx_t_5; + __pyx_t_5 = 0; + goto __pyx_L0; + + /* "(tree fragment)":12 + * else: + * use_setstate = ('self.node is not None or self.nodes is not None',) + * if use_setstate: # <<<<<<<<<<<<<< + * return __pyx_unpickle_LexborSelector, (type(self), 0xc5dfe7e, None), state + * else: +*/ + } + + /* "(tree fragment)":15 + * return __pyx_unpickle_LexborSelector, (type(self), 0xc5dfe7e, None), state + * else: + * return __pyx_unpickle_LexborSelector, (type(self), 0xc5dfe7e, state) # <<<<<<<<<<<<<< + * def __setstate_cython__(self, __pyx_state): + * __pyx_unpickle_LexborSelector__set_state(self, __pyx_state) +*/ + /*else*/ { + __Pyx_XDECREF(__pyx_r); + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_pyx_unpickle_LexborSelector); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 15, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); + __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))) != (0)) __PYX_ERR(1, 15, __pyx_L1_error); + __Pyx_INCREF(__pyx_mstate_global->__pyx_int_207486590); + __Pyx_GIVEREF(__pyx_mstate_global->__pyx_int_207486590); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_mstate_global->__pyx_int_207486590) != (0)) __PYX_ERR(1, 15, __pyx_L1_error); + __Pyx_INCREF(__pyx_v_state); + __Pyx_GIVEREF(__pyx_v_state); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_state) != (0)) __PYX_ERR(1, 15, __pyx_L1_error); + __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 15, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_5); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5) != (0)) __PYX_ERR(1, 15, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_1); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1) != (0)) __PYX_ERR(1, 15, __pyx_L1_error); + __pyx_t_5 = 0; + __pyx_t_1 = 0; + __pyx_r = __pyx_t_4; + __pyx_t_4 = 0; + goto __pyx_L0; + } + + /* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * cdef tuple state + * cdef object _dict +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_AddTraceback("selectolax.lexbor.LexborSelector.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_state); + __Pyx_XDECREF(__pyx_v__dict); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":16 + * else: + * return __pyx_unpickle_LexborSelector, (type(self), 0xc5dfe7e, state) + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * __pyx_unpickle_LexborSelector__set_state(self, __pyx_state) +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_14LexborSelector_17__setstate_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6lexbor_14LexborSelector_16__setstate_cython__, "LexborSelector.__setstate_cython__(self, __pyx_state)"); +static PyMethodDef __pyx_mdef_10selectolax_6lexbor_14LexborSelector_17__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_14LexborSelector_17__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_14LexborSelector_16__setstate_cython__}; +static PyObject *__pyx_pw_10selectolax_6lexbor_14LexborSelector_17__setstate_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v___pyx_state = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_state,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 16, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 16, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < (0)) __PYX_ERR(1, 16, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 16, __pyx_L3_error) } + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 16, __pyx_L3_error) + } + __pyx_v___pyx_state = values[0]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 16, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.lexbor.LexborSelector.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_10selectolax_6lexbor_14LexborSelector_16__setstate_cython__(((struct __pyx_obj_10selectolax_6lexbor_LexborSelector *)__pyx_v_self), __pyx_v___pyx_state); + + /* function exit code */ + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_14LexborSelector_16__setstate_cython__(struct __pyx_obj_10selectolax_6lexbor_LexborSelector *__pyx_v_self, PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__setstate_cython__", 0); + + /* "(tree fragment)":17 + * return __pyx_unpickle_LexborSelector, (type(self), 0xc5dfe7e, state) + * def __setstate_cython__(self, __pyx_state): + * __pyx_unpickle_LexborSelector__set_state(self, __pyx_state) # <<<<<<<<<<<<<< +*/ + __pyx_t_1 = __pyx_f_10selectolax_6lexbor___pyx_unpickle_LexborSelector__set_state(__pyx_v_self, __pyx_v___pyx_state); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "(tree fragment)":16 + * else: + * return __pyx_unpickle_LexborSelector, (type(self), 0xc5dfe7e, state) + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * __pyx_unpickle_LexborSelector__set_state(self, __pyx_state) +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("selectolax.lexbor.LexborSelector.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor/selection.pxi":195 + * + * + * cdef lxb_status_t css_finder_callback(lxb_dom_node_t *node, lxb_css_selector_specificity_t *spec, void *ctx): # <<<<<<<<<<<<<< + * cdef LexborNode lxb_node + * cdef LexborCSSSelector cls +*/ + +static lxb_status_t __pyx_f_10selectolax_6lexbor_css_finder_callback(lxb_dom_node_t *__pyx_v_node, CYTHON_UNUSED lxb_css_selector_specificity_t *__pyx_v_spec, void *__pyx_v_ctx) { + struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_lxb_node = 0; + struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector *__pyx_v_cls = 0; + lxb_status_t __pyx_r; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + int __pyx_t_3; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("css_finder_callback", 0); + + /* "selectolax/lexbor/selection.pxi":198 + * cdef LexborNode lxb_node + * cdef LexborCSSSelector cls + * cls = ctx # <<<<<<<<<<<<<< + * lxb_node = LexborNode.new( node, cls.current_node.parser) + * cls.results.append(lxb_node) +*/ + __pyx_t_1 = ((PyObject *)__pyx_v_ctx); + __Pyx_INCREF(__pyx_t_1); + __pyx_v_cls = ((struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector *)__pyx_t_1); + __pyx_t_1 = 0; + + /* "selectolax/lexbor/selection.pxi":199 + * cdef LexborCSSSelector cls + * cls = ctx + * lxb_node = LexborNode.new( node, cls.current_node.parser) # <<<<<<<<<<<<<< + * cls.results.append(lxb_node) + * return LXB_STATUS_OK +*/ + __pyx_t_1 = ((PyObject *)__pyx_v_cls->current_node->parser); + __Pyx_INCREF(__pyx_t_1); + __pyx_t_2 = ((PyObject *)__pyx_f_10selectolax_6lexbor_10LexborNode_new(((lxb_dom_node_t *)__pyx_v_node), ((struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *)__pyx_t_1))); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 199, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v_lxb_node = ((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_t_2); + __pyx_t_2 = 0; + + /* "selectolax/lexbor/selection.pxi":200 + * cls = ctx + * lxb_node = LexborNode.new( node, cls.current_node.parser) + * cls.results.append(lxb_node) # <<<<<<<<<<<<<< + * return LXB_STATUS_OK + * +*/ + if (unlikely(__pyx_v_cls->results == Py_None)) { + PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append"); + __PYX_ERR(6, 200, __pyx_L1_error) + } + __pyx_t_3 = __Pyx_PyList_Append(__pyx_v_cls->results, ((PyObject *)__pyx_v_lxb_node)); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(6, 200, __pyx_L1_error) + + /* "selectolax/lexbor/selection.pxi":201 + * lxb_node = LexborNode.new( node, cls.current_node.parser) + * cls.results.append(lxb_node) + * return LXB_STATUS_OK # <<<<<<<<<<<<<< + * + * cdef lxb_status_t css_finder_callback_first(lxb_dom_node_t *node, lxb_css_selector_specificity_t *spec, void *ctx): +*/ + __pyx_r = LXB_STATUS_OK; + goto __pyx_L0; + + /* "selectolax/lexbor/selection.pxi":195 + * + * + * cdef lxb_status_t css_finder_callback(lxb_dom_node_t *node, lxb_css_selector_specificity_t *spec, void *ctx): # <<<<<<<<<<<<<< + * cdef LexborNode lxb_node + * cdef LexborCSSSelector cls +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("selectolax.lexbor.css_finder_callback", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_XDECREF((PyObject *)__pyx_v_lxb_node); + __Pyx_XDECREF((PyObject *)__pyx_v_cls); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor/selection.pxi":203 + * return LXB_STATUS_OK + * + * cdef lxb_status_t css_finder_callback_first(lxb_dom_node_t *node, lxb_css_selector_specificity_t *spec, void *ctx): # <<<<<<<<<<<<<< + * cdef LexborNode lxb_node + * cdef LexborCSSSelector cls +*/ + +static lxb_status_t __pyx_f_10selectolax_6lexbor_css_finder_callback_first(lxb_dom_node_t *__pyx_v_node, CYTHON_UNUSED lxb_css_selector_specificity_t *__pyx_v_spec, void *__pyx_v_ctx) { + struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_lxb_node = 0; + struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector *__pyx_v_cls = 0; + lxb_status_t __pyx_r; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + int __pyx_t_3; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("css_finder_callback_first", 0); + + /* "selectolax/lexbor/selection.pxi":206 + * cdef LexborNode lxb_node + * cdef LexborCSSSelector cls + * cls = ctx # <<<<<<<<<<<<<< + * lxb_node = LexborNode.new( node, cls.current_node.parser) + * cls.results.append(lxb_node) +*/ + __pyx_t_1 = ((PyObject *)__pyx_v_ctx); + __Pyx_INCREF(__pyx_t_1); + __pyx_v_cls = ((struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector *)__pyx_t_1); + __pyx_t_1 = 0; + + /* "selectolax/lexbor/selection.pxi":207 + * cdef LexborCSSSelector cls + * cls = ctx + * lxb_node = LexborNode.new( node, cls.current_node.parser) # <<<<<<<<<<<<<< + * cls.results.append(lxb_node) + * return LXB_STATUS_STOP +*/ + __pyx_t_1 = ((PyObject *)__pyx_v_cls->current_node->parser); + __Pyx_INCREF(__pyx_t_1); + __pyx_t_2 = ((PyObject *)__pyx_f_10selectolax_6lexbor_10LexborNode_new(((lxb_dom_node_t *)__pyx_v_node), ((struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *)__pyx_t_1))); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 207, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v_lxb_node = ((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_t_2); + __pyx_t_2 = 0; + + /* "selectolax/lexbor/selection.pxi":208 + * cls = ctx + * lxb_node = LexborNode.new( node, cls.current_node.parser) + * cls.results.append(lxb_node) # <<<<<<<<<<<<<< + * return LXB_STATUS_STOP + * +*/ + if (unlikely(__pyx_v_cls->results == Py_None)) { + PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append"); + __PYX_ERR(6, 208, __pyx_L1_error) + } + __pyx_t_3 = __Pyx_PyList_Append(__pyx_v_cls->results, ((PyObject *)__pyx_v_lxb_node)); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(6, 208, __pyx_L1_error) + + /* "selectolax/lexbor/selection.pxi":209 + * lxb_node = LexborNode.new( node, cls.current_node.parser) + * cls.results.append(lxb_node) + * return LXB_STATUS_STOP # <<<<<<<<<<<<<< + * + * +*/ + __pyx_r = LXB_STATUS_STOP; + goto __pyx_L0; + + /* "selectolax/lexbor/selection.pxi":203 + * return LXB_STATUS_OK + * + * cdef lxb_status_t css_finder_callback_first(lxb_dom_node_t *node, lxb_css_selector_specificity_t *spec, void *ctx): # <<<<<<<<<<<<<< + * cdef LexborNode lxb_node + * cdef LexborCSSSelector cls +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("selectolax.lexbor.css_finder_callback_first", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_XDECREF((PyObject *)__pyx_v_lxb_node); + __Pyx_XDECREF((PyObject *)__pyx_v_cls); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor/selection.pxi":212 + * + * + * cdef lxb_status_t css_matcher_callback(lxb_dom_node_t *node, lxb_css_selector_specificity_t *spec, void *ctx): # <<<<<<<<<<<<<< + * cdef LexborNode lxb_node + * cdef LexborCSSSelector cls +*/ + +static lxb_status_t __pyx_f_10selectolax_6lexbor_css_matcher_callback(CYTHON_UNUSED lxb_dom_node_t *__pyx_v_node, CYTHON_UNUSED lxb_css_selector_specificity_t *__pyx_v_spec, void *__pyx_v_ctx) { + struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector *__pyx_v_cls = 0; + lxb_status_t __pyx_r; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("css_matcher_callback", 0); + + /* "selectolax/lexbor/selection.pxi":215 + * cdef LexborNode lxb_node + * cdef LexborCSSSelector cls + * cls = ctx # <<<<<<<<<<<<<< + * cls.results.append(True) + * return LXB_STATUS_STOP +*/ + __pyx_t_1 = ((PyObject *)__pyx_v_ctx); + __Pyx_INCREF(__pyx_t_1); + __pyx_v_cls = ((struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector *)__pyx_t_1); + __pyx_t_1 = 0; + + /* "selectolax/lexbor/selection.pxi":216 + * cdef LexborCSSSelector cls + * cls = ctx + * cls.results.append(True) # <<<<<<<<<<<<<< + * return LXB_STATUS_STOP +*/ + if (unlikely(__pyx_v_cls->results == Py_None)) { + PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append"); + __PYX_ERR(6, 216, __pyx_L1_error) + } + __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_cls->results, Py_True); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(6, 216, __pyx_L1_error) + + /* "selectolax/lexbor/selection.pxi":217 + * cls = ctx + * cls.results.append(True) + * return LXB_STATUS_STOP # <<<<<<<<<<<<<< +*/ + __pyx_r = LXB_STATUS_STOP; + goto __pyx_L0; + + /* "selectolax/lexbor/selection.pxi":212 + * + * + * cdef lxb_status_t css_matcher_callback(lxb_dom_node_t *node, lxb_css_selector_specificity_t *spec, void *ctx): # <<<<<<<<<<<<<< + * cdef LexborNode lxb_node + * cdef LexborCSSSelector cls +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("selectolax.lexbor.css_matcher_callback", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_XDECREF((PyObject *)__pyx_v_cls); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/utils.pxi":19 + * + * + * def preprocess_input(html, decode_errors='ignore'): # <<<<<<<<<<<<<< + * if isinstance(html, (str, unicode)): + * bytes_html = html.encode('UTF-8', errors=decode_errors) +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_9preprocess_input(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6lexbor_8preprocess_input, "preprocess_input(html, decode_errors='ignore')"); +static PyMethodDef __pyx_mdef_10selectolax_6lexbor_9preprocess_input = {"preprocess_input", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_9preprocess_input, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_8preprocess_input}; +static PyObject *__pyx_pw_10selectolax_6lexbor_9preprocess_input(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_html = 0; + PyObject *__pyx_v_decode_errors = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[2] = {0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("preprocess_input (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_html,&__pyx_mstate_global->__pyx_n_u_decode_errors,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(7, 19, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(7, 19, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(7, 19, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "preprocess_input", 0) < (0)) __PYX_ERR(7, 19, __pyx_L3_error) + if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)((PyObject*)__pyx_mstate_global->__pyx_n_u_ignore))); + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("preprocess_input", 0, 1, 2, i); __PYX_ERR(7, 19, __pyx_L3_error) } + } + } else { + switch (__pyx_nargs) { + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(7, 19, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(7, 19, __pyx_L3_error) + break; + default: goto __pyx_L5_argtuple_error; + } + if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)((PyObject*)__pyx_mstate_global->__pyx_n_u_ignore))); + } + __pyx_v_html = values[0]; + __pyx_v_decode_errors = values[1]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("preprocess_input", 0, 1, 2, __pyx_nargs); __PYX_ERR(7, 19, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.lexbor.preprocess_input", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_10selectolax_6lexbor_8preprocess_input(__pyx_self, __pyx_v_html, __pyx_v_decode_errors); + + /* function exit code */ + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_8preprocess_input(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_html, PyObject *__pyx_v_decode_errors) { + PyObject *__pyx_v_bytes_html = NULL; + PyObject *__pyx_v_html_len = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + size_t __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + Py_ssize_t __pyx_t_7; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("preprocess_input", 0); + + /* "selectolax/utils.pxi":20 + * + * def preprocess_input(html, decode_errors='ignore'): + * if isinstance(html, (str, unicode)): # <<<<<<<<<<<<<< + * bytes_html = html.encode('UTF-8', errors=decode_errors) + * elif isinstance(html, bytes): +*/ + __pyx_t_1 = PyUnicode_Check(__pyx_v_html); + if (__pyx_t_1) { + + /* "selectolax/utils.pxi":21 + * def preprocess_input(html, decode_errors='ignore'): + * if isinstance(html, (str, unicode)): + * bytes_html = html.encode('UTF-8', errors=decode_errors) # <<<<<<<<<<<<<< + * elif isinstance(html, bytes): + * bytes_html = html +*/ + __pyx_t_3 = __pyx_v_html; + __Pyx_INCREF(__pyx_t_3); + __pyx_t_4 = 0; + { + PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_UTF_8}; + __pyx_t_5 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(7, 21, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_errors, __pyx_v_decode_errors, __pyx_t_5, __pyx_callargs+2, 0) < (0)) __PYX_ERR(7, 21, __pyx_L1_error) + __pyx_t_2 = __Pyx_Object_VectorcallMethod_CallFromBuilder((PyObject*)__pyx_mstate_global->__pyx_n_u_encode, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_5); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 21, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + } + __pyx_v_bytes_html = __pyx_t_2; + __pyx_t_2 = 0; + + /* "selectolax/utils.pxi":20 + * + * def preprocess_input(html, decode_errors='ignore'): + * if isinstance(html, (str, unicode)): # <<<<<<<<<<<<<< + * bytes_html = html.encode('UTF-8', errors=decode_errors) + * elif isinstance(html, bytes): +*/ + goto __pyx_L3; + } + + /* "selectolax/utils.pxi":22 + * if isinstance(html, (str, unicode)): + * bytes_html = html.encode('UTF-8', errors=decode_errors) + * elif isinstance(html, bytes): # <<<<<<<<<<<<<< + * bytes_html = html + * else: +*/ + __pyx_t_1 = PyBytes_Check(__pyx_v_html); + if (likely(__pyx_t_1)) { + + /* "selectolax/utils.pxi":23 + * bytes_html = html.encode('UTF-8', errors=decode_errors) + * elif isinstance(html, bytes): + * bytes_html = html # <<<<<<<<<<<<<< + * else: + * raise TypeError("Expected a string, but %s found" % type(html).__name__) +*/ + __Pyx_INCREF(__pyx_v_html); + __pyx_v_bytes_html = __pyx_v_html; + + /* "selectolax/utils.pxi":22 + * if isinstance(html, (str, unicode)): + * bytes_html = html.encode('UTF-8', errors=decode_errors) + * elif isinstance(html, bytes): # <<<<<<<<<<<<<< + * bytes_html = html + * else: +*/ + goto __pyx_L3; + } + + /* "selectolax/utils.pxi":25 + * bytes_html = html + * else: + * raise TypeError("Expected a string, but %s found" % type(html).__name__) # <<<<<<<<<<<<<< + * html_len = len(bytes_html) + * if html_len > MAX_HTML_INPUT_SIZE: +*/ + /*else*/ { + __pyx_t_5 = NULL; + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(__pyx_v_html)), __pyx_mstate_global->__pyx_n_u_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 25, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_6 = __Pyx_PyUnicode_FormatSafe(__pyx_mstate_global->__pyx_kp_u_Expected_a_string_but_s_found, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(7, 25, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_4 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_6}; + __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 25, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + } + __Pyx_Raise(__pyx_t_2, 0, 0, 0); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __PYX_ERR(7, 25, __pyx_L1_error) + } + __pyx_L3:; + + /* "selectolax/utils.pxi":26 + * else: + * raise TypeError("Expected a string, but %s found" % type(html).__name__) + * html_len = len(bytes_html) # <<<<<<<<<<<<<< + * if html_len > MAX_HTML_INPUT_SIZE: + * raise ValueError("The specified HTML input is too large to be processed (%d bytes)" % html_len) +*/ + __pyx_t_7 = PyObject_Length(__pyx_v_bytes_html); if (unlikely(__pyx_t_7 == ((Py_ssize_t)-1))) __PYX_ERR(7, 26, __pyx_L1_error) + __pyx_t_2 = PyLong_FromSsize_t(__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 26, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_v_html_len = __pyx_t_2; + __pyx_t_2 = 0; + + /* "selectolax/utils.pxi":27 + * raise TypeError("Expected a string, but %s found" % type(html).__name__) + * html_len = len(bytes_html) + * if html_len > MAX_HTML_INPUT_SIZE: # <<<<<<<<<<<<<< + * raise ValueError("The specified HTML input is too large to be processed (%d bytes)" % html_len) + * return bytes_html, html_len +*/ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_MAX_HTML_INPUT_SIZE); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 27, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_6 = PyObject_RichCompare(__pyx_v_html_len, __pyx_t_2, Py_GT); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(7, 27, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(7, 27, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(__pyx_t_1)) { + + /* "selectolax/utils.pxi":28 + * html_len = len(bytes_html) + * if html_len > MAX_HTML_INPUT_SIZE: + * raise ValueError("The specified HTML input is too large to be processed (%d bytes)" % html_len) # <<<<<<<<<<<<<< + * return bytes_html, html_len + * +*/ + __pyx_t_2 = NULL; + __pyx_t_5 = __Pyx_PyUnicode_FormatSafe(__pyx_mstate_global->__pyx_kp_u_The_specified_HTML_input_is_too, __pyx_v_html_len); if (unlikely(!__pyx_t_5)) __PYX_ERR(7, 28, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_4 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_5}; + __pyx_t_6 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_6)) __PYX_ERR(7, 28, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + } + __Pyx_Raise(__pyx_t_6, 0, 0, 0); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __PYX_ERR(7, 28, __pyx_L1_error) + + /* "selectolax/utils.pxi":27 + * raise TypeError("Expected a string, but %s found" % type(html).__name__) + * html_len = len(bytes_html) + * if html_len > MAX_HTML_INPUT_SIZE: # <<<<<<<<<<<<<< + * raise ValueError("The specified HTML input is too large to be processed (%d bytes)" % html_len) + * return bytes_html, html_len +*/ + } + + /* "selectolax/utils.pxi":29 + * if html_len > MAX_HTML_INPUT_SIZE: + * raise ValueError("The specified HTML input is too large to be processed (%d bytes)" % html_len) + * return bytes_html, html_len # <<<<<<<<<<<<<< + * + * +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(7, 29, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_INCREF(__pyx_v_bytes_html); + __Pyx_GIVEREF(__pyx_v_bytes_html); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_bytes_html) != (0)) __PYX_ERR(7, 29, __pyx_L1_error); + __Pyx_INCREF(__pyx_v_html_len); + __Pyx_GIVEREF(__pyx_v_html_len); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_v_html_len) != (0)) __PYX_ERR(7, 29, __pyx_L1_error); + __pyx_r = __pyx_t_6; + __pyx_t_6 = 0; + goto __pyx_L0; + + /* "selectolax/utils.pxi":19 + * + * + * def preprocess_input(html, decode_errors='ignore'): # <<<<<<<<<<<<<< + * if isinstance(html, (str, unicode)): + * bytes_html = html.encode('UTF-8', errors=decode_errors) +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_AddTraceback("selectolax.lexbor.preprocess_input", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_bytes_html); + __Pyx_XDECREF(__pyx_v_html_len); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/utils.pxi":32 + * + * + * def do_create_tag(tag: str, parser_cls: ParserCls): # <<<<<<<<<<<<<< + * if not tag: + * raise ValueError("Tag name cannot be empty") +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_11do_create_tag(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6lexbor_10do_create_tag, "do_create_tag(tag: str, parser_cls: ParserCls)"); +static PyMethodDef __pyx_mdef_10selectolax_6lexbor_11do_create_tag = {"do_create_tag", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_11do_create_tag, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_10do_create_tag}; +static PyObject *__pyx_pw_10selectolax_6lexbor_11do_create_tag(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_tag = 0; + PyObject *__pyx_v_parser_cls = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[2] = {0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("do_create_tag (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_tag,&__pyx_mstate_global->__pyx_n_u_parser_cls,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(7, 32, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(7, 32, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(7, 32, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "do_create_tag", 0) < (0)) __PYX_ERR(7, 32, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 2; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("do_create_tag", 1, 2, 2, i); __PYX_ERR(7, 32, __pyx_L3_error) } + } + } else if (unlikely(__pyx_nargs != 2)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(7, 32, __pyx_L3_error) + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(7, 32, __pyx_L3_error) + } + __pyx_v_tag = values[0]; + __pyx_v_parser_cls = values[1]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("do_create_tag", 1, 2, 2, __pyx_nargs); __PYX_ERR(7, 32, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.lexbor.do_create_tag", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_10selectolax_6lexbor_10do_create_tag(__pyx_self, __pyx_v_tag, __pyx_v_parser_cls); + + /* function exit code */ + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_10do_create_tag(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_tag, PyObject *__pyx_v_parser_cls) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + size_t __pyx_t_5; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + PyObject *__pyx_t_9[5]; + PyObject *__pyx_t_10 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("do_create_tag", 0); + + /* "selectolax/utils.pxi":33 + * + * def do_create_tag(tag: str, parser_cls: ParserCls): + * if not tag: # <<<<<<<<<<<<<< + * raise ValueError("Tag name cannot be empty") + * return do_parse_fragment(f"<{tag}>", parser_cls)[0] +*/ + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_tag); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(7, 33, __pyx_L1_error) + __pyx_t_2 = (!__pyx_t_1); + if (unlikely(__pyx_t_2)) { + + /* "selectolax/utils.pxi":34 + * def do_create_tag(tag: str, parser_cls: ParserCls): + * if not tag: + * raise ValueError("Tag name cannot be empty") # <<<<<<<<<<<<<< + * return do_parse_fragment(f"<{tag}>", parser_cls)[0] + * +*/ + __pyx_t_4 = NULL; + __pyx_t_5 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_Tag_name_cannot_be_empty}; + __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 34, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(7, 34, __pyx_L1_error) + + /* "selectolax/utils.pxi":33 + * + * def do_create_tag(tag: str, parser_cls: ParserCls): + * if not tag: # <<<<<<<<<<<<<< + * raise ValueError("Tag name cannot be empty") + * return do_parse_fragment(f"<{tag}>", parser_cls)[0] +*/ + } + + /* "selectolax/utils.pxi":35 + * if not tag: + * raise ValueError("Tag name cannot be empty") + * return do_parse_fragment(f"<{tag}>", parser_cls)[0] # <<<<<<<<<<<<<< + * + * +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_4 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_do_parse_fragment); if (unlikely(!__pyx_t_6)) __PYX_ERR(7, 35, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_7 = __Pyx_PyObject_FormatSimple(__pyx_v_tag, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_7)) __PYX_ERR(7, 35, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_8 = __Pyx_PyObject_FormatSimple(__pyx_v_tag, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_8)) __PYX_ERR(7, 35, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_9[0] = __pyx_mstate_global->__pyx_kp_u__2; + __pyx_t_9[1] = __pyx_t_7; + __pyx_t_9[2] = __pyx_mstate_global->__pyx_kp_u__3; + __pyx_t_9[3] = __pyx_t_8; + __pyx_t_9[4] = __pyx_mstate_global->__pyx_kp_u__4; + __pyx_t_10 = __Pyx_PyUnicode_Join(__pyx_t_9, 5, 1 * 2 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_7) + 3 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_8), 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_7) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_8)); + if (unlikely(!__pyx_t_10)) __PYX_ERR(7, 35, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_5 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_6); + assert(__pyx_t_4); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_6, __pyx__function); + __pyx_t_5 = 0; + } + #endif + { + PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_t_10, __pyx_v_parser_cls}; + __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_6, __pyx_callargs+__pyx_t_5, (3-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 35, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __pyx_t_6 = __Pyx_GetItemInt(__pyx_t_3, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 0, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_6)) __PYX_ERR(7, 35, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_r = __pyx_t_6; + __pyx_t_6 = 0; + goto __pyx_L0; + + /* "selectolax/utils.pxi":32 + * + * + * def do_create_tag(tag: str, parser_cls: ParserCls): # <<<<<<<<<<<<<< + * if not tag: + * raise ValueError("Tag name cannot be empty") +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_XDECREF(__pyx_t_10); + __Pyx_AddTraceback("selectolax.lexbor.do_create_tag", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/utils.pxi":38 + * + * + * def get_fragment_type( # <<<<<<<<<<<<<< + * html: str, + * parser_cls: ParserCls, +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_13get_fragment_type(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6lexbor_12get_fragment_type, "get_fragment_type(html: str, parser_cls: ParserCls, tree: Optional[Parser] = None) -> FRAGMENT"); +static PyMethodDef __pyx_mdef_10selectolax_6lexbor_13get_fragment_type = {"get_fragment_type", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_13get_fragment_type, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_12get_fragment_type}; +static PyObject *__pyx_pw_10selectolax_6lexbor_13get_fragment_type(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_html = 0; + PyObject *__pyx_v_parser_cls = 0; + PyObject *__pyx_v_tree = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[3] = {0,0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("get_fragment_type (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_html,&__pyx_mstate_global->__pyx_n_u_parser_cls,&__pyx_mstate_global->__pyx_n_u_tree,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(7, 38, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 3: + values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(7, 38, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(7, 38, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(7, 38, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "get_fragment_type", 0) < (0)) __PYX_ERR(7, 38, __pyx_L3_error) + + /* "selectolax/utils.pxi":41 + * html: str, + * parser_cls: ParserCls, + * tree: Optional[Parser] = None, # <<<<<<<<<<<<<< + * ) -> FRAGMENT: + * if not tree: +*/ + if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None)); + for (Py_ssize_t i = __pyx_nargs; i < 2; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("get_fragment_type", 0, 2, 3, i); __PYX_ERR(7, 38, __pyx_L3_error) } + } + } else { + switch (__pyx_nargs) { + case 3: + values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(7, 38, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(7, 38, __pyx_L3_error) + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(7, 38, __pyx_L3_error) + break; + default: goto __pyx_L5_argtuple_error; + } + if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None)); + } + __pyx_v_html = values[0]; + __pyx_v_parser_cls = values[1]; + __pyx_v_tree = values[2]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("get_fragment_type", 0, 2, 3, __pyx_nargs); __PYX_ERR(7, 38, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.lexbor.get_fragment_type", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_10selectolax_6lexbor_12get_fragment_type(__pyx_self, __pyx_v_html, __pyx_v_parser_cls, __pyx_v_tree); + + /* "selectolax/utils.pxi":38 + * + * + * def get_fragment_type( # <<<<<<<<<<<<<< + * html: str, + * parser_cls: ParserCls, +*/ + + /* function exit code */ + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_12get_fragment_type(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_html, PyObject *__pyx_v_parser_cls, PyObject *__pyx_v_tree) { + PyObject *__pyx_v_re = NULL; + PyObject *__pyx_v_html_re = NULL; + int __pyx_v_has_html; + int __pyx_v_has_head; + int __pyx_v_has_body; + PyObject *__pyx_v_match = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + size_t __pyx_t_6; + PyObject *__pyx_t_7 = NULL; + Py_ssize_t __pyx_t_8; + PyObject *(*__pyx_t_9)(PyObject *); + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("get_fragment_type", 0); + __Pyx_INCREF(__pyx_v_tree); + + /* "selectolax/utils.pxi":43 + * tree: Optional[Parser] = None, + * ) -> FRAGMENT: + * if not tree: # <<<<<<<<<<<<<< + * tree = parser_cls(html) + * +*/ + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_tree); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(7, 43, __pyx_L1_error) + __pyx_t_2 = (!__pyx_t_1); + if (__pyx_t_2) { + + /* "selectolax/utils.pxi":44 + * ) -> FRAGMENT: + * if not tree: + * tree = parser_cls(html) # <<<<<<<<<<<<<< + * + * import re +*/ + __pyx_t_4 = NULL; + __Pyx_INCREF(__pyx_v_parser_cls); + __pyx_t_5 = __pyx_v_parser_cls; + __pyx_t_6 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_5))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5); + assert(__pyx_t_4); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_5, __pyx__function); + __pyx_t_6 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_html}; + __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 44, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_DECREF_SET(__pyx_v_tree, __pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/utils.pxi":43 + * tree: Optional[Parser] = None, + * ) -> FRAGMENT: + * if not tree: # <<<<<<<<<<<<<< + * tree = parser_cls(html) + * +*/ + } + + /* "selectolax/utils.pxi":46 + * tree = parser_cls(html) + * + * import re # <<<<<<<<<<<<<< + * html_re = re.compile(r"__pyx_n_u_re, 0, 0, NULL, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(7, 46, __pyx_L1_error) + __pyx_t_3 = __pyx_t_7; + __Pyx_GOTREF(__pyx_t_3); + __pyx_v_re = __pyx_t_3; + __pyx_t_3 = 0; + + /* "selectolax/utils.pxi":47 + * + * import re + * html_re = re.compile(r"__pyx_n_u_IGNORECASE); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 47, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_6 = 0; + { + PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_html_body_head_er, __pyx_t_4}; + __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_compile, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 47, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __pyx_v_html_re = __pyx_t_3; + __pyx_t_3 = 0; + + /* "selectolax/utils.pxi":49 + * html_re = re.compile(r"__pyx_n_u_finditer, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 52, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) { + __pyx_t_4 = __pyx_t_3; __Pyx_INCREF(__pyx_t_4); + __pyx_t_8 = 0; + __pyx_t_9 = NULL; + } else { + __pyx_t_8 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 52, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_9 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(7, 52, __pyx_L1_error) + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + for (;;) { + if (likely(!__pyx_t_9)) { + if (likely(PyList_CheckExact(__pyx_t_4))) { + { + Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_4); + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely((__pyx_temp < 0))) __PYX_ERR(7, 52, __pyx_L1_error) + #endif + if (__pyx_t_8 >= __pyx_temp) break; + } + __pyx_t_3 = __Pyx_PyList_GetItemRefFast(__pyx_t_4, __pyx_t_8, __Pyx_ReferenceSharing_OwnStrongReference); + ++__pyx_t_8; + } else { + { + Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_4); + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely((__pyx_temp < 0))) __PYX_ERR(7, 52, __pyx_L1_error) + #endif + if (__pyx_t_8 >= __pyx_temp) break; + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_3 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_8)); + #else + __pyx_t_3 = __Pyx_PySequence_ITEM(__pyx_t_4, __pyx_t_8); + #endif + ++__pyx_t_8; + } + if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 52, __pyx_L1_error) + } else { + __pyx_t_3 = __pyx_t_9(__pyx_t_4); + if (unlikely(!__pyx_t_3)) { + PyObject* exc_type = PyErr_Occurred(); + if (exc_type) { + if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(7, 52, __pyx_L1_error) + PyErr_Clear(); + } + break; + } + } + __Pyx_GOTREF(__pyx_t_3); + __Pyx_XDECREF_SET(__pyx_v_match, __pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/utils.pxi":53 + * has_body = False + * for match in html_re.finditer(html): + * if match[0] == "__pyx_kp_u_html_2, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(7, 53, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (__pyx_t_2) { + + /* "selectolax/utils.pxi":54 + * for match in html_re.finditer(html): + * if match[0] == "__pyx_kp_u_head, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(7, 55, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (__pyx_t_2) { + + /* "selectolax/utils.pxi":56 + * has_html = True + * elif match[0] == "__pyx_kp_u_body, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(7, 57, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (__pyx_t_2) { + + /* "selectolax/utils.pxi":58 + * has_head = True + * elif match[0] == "__pyx_n_u_document); + __pyx_r = __pyx_mstate_global->__pyx_n_u_document; + goto __pyx_L0; + + /* "selectolax/utils.pxi":63 + * break + * + * if has_html and has_head and has_body: # <<<<<<<<<<<<<< + * return "document" + * elif has_html and not has_head and has_body: +*/ + } + + /* "selectolax/utils.pxi":65 + * if has_html and has_head and has_body: + * return "document" + * elif has_html and not has_head and has_body: # <<<<<<<<<<<<<< + * return "document_no_head" + * elif has_html and has_head and not has_body: +*/ + if (__pyx_v_has_html) { + } else { + __pyx_t_2 = __pyx_v_has_html; + goto __pyx_L16_bool_binop_done; + } + __pyx_t_1 = (!__pyx_v_has_head); + if (__pyx_t_1) { + } else { + __pyx_t_2 = __pyx_t_1; + goto __pyx_L16_bool_binop_done; + } + __pyx_t_2 = __pyx_v_has_body; + __pyx_L16_bool_binop_done:; + if (__pyx_t_2) { + + /* "selectolax/utils.pxi":66 + * return "document" + * elif has_html and not has_head and has_body: + * return "document_no_head" # <<<<<<<<<<<<<< + * elif has_html and has_head and not has_body: + * return "document_no_body" +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_document_no_head); + __pyx_r = __pyx_mstate_global->__pyx_n_u_document_no_head; + goto __pyx_L0; + + /* "selectolax/utils.pxi":65 + * if has_html and has_head and has_body: + * return "document" + * elif has_html and not has_head and has_body: # <<<<<<<<<<<<<< + * return "document_no_head" + * elif has_html and has_head and not has_body: +*/ + } + + /* "selectolax/utils.pxi":67 + * elif has_html and not has_head and has_body: + * return "document_no_head" + * elif has_html and has_head and not has_body: # <<<<<<<<<<<<<< + * return "document_no_body" + * elif has_html and not has_head and not has_body: +*/ + if (__pyx_v_has_html) { + } else { + __pyx_t_2 = __pyx_v_has_html; + goto __pyx_L19_bool_binop_done; + } + if (__pyx_v_has_head) { + } else { + __pyx_t_2 = __pyx_v_has_head; + goto __pyx_L19_bool_binop_done; + } + __pyx_t_1 = (!__pyx_v_has_body); + __pyx_t_2 = __pyx_t_1; + __pyx_L19_bool_binop_done:; + if (__pyx_t_2) { + + /* "selectolax/utils.pxi":68 + * return "document_no_head" + * elif has_html and has_head and not has_body: + * return "document_no_body" # <<<<<<<<<<<<<< + * elif has_html and not has_head and not has_body: + * return "document_no_head_no_body" +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_document_no_body); + __pyx_r = __pyx_mstate_global->__pyx_n_u_document_no_body; + goto __pyx_L0; + + /* "selectolax/utils.pxi":67 + * elif has_html and not has_head and has_body: + * return "document_no_head" + * elif has_html and has_head and not has_body: # <<<<<<<<<<<<<< + * return "document_no_body" + * elif has_html and not has_head and not has_body: +*/ + } + + /* "selectolax/utils.pxi":69 + * elif has_html and has_head and not has_body: + * return "document_no_body" + * elif has_html and not has_head and not has_body: # <<<<<<<<<<<<<< + * return "document_no_head_no_body" + * elif has_head and not has_body: +*/ + if (__pyx_v_has_html) { + } else { + __pyx_t_2 = __pyx_v_has_html; + goto __pyx_L22_bool_binop_done; + } + __pyx_t_1 = (!__pyx_v_has_head); + if (__pyx_t_1) { + } else { + __pyx_t_2 = __pyx_t_1; + goto __pyx_L22_bool_binop_done; + } + __pyx_t_1 = (!__pyx_v_has_body); + __pyx_t_2 = __pyx_t_1; + __pyx_L22_bool_binop_done:; + if (__pyx_t_2) { + + /* "selectolax/utils.pxi":70 + * return "document_no_body" + * elif has_html and not has_head and not has_body: + * return "document_no_head_no_body" # <<<<<<<<<<<<<< + * elif has_head and not has_body: + * return "head" +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_document_no_head_no_body); + __pyx_r = __pyx_mstate_global->__pyx_n_u_document_no_head_no_body; + goto __pyx_L0; + + /* "selectolax/utils.pxi":69 + * elif has_html and has_head and not has_body: + * return "document_no_body" + * elif has_html and not has_head and not has_body: # <<<<<<<<<<<<<< + * return "document_no_head_no_body" + * elif has_head and not has_body: +*/ + } + + /* "selectolax/utils.pxi":71 + * elif has_html and not has_head and not has_body: + * return "document_no_head_no_body" + * elif has_head and not has_body: # <<<<<<<<<<<<<< + * return "head" + * elif not has_head and has_body: +*/ + if (__pyx_v_has_head) { + } else { + __pyx_t_2 = __pyx_v_has_head; + goto __pyx_L25_bool_binop_done; + } + __pyx_t_1 = (!__pyx_v_has_body); + __pyx_t_2 = __pyx_t_1; + __pyx_L25_bool_binop_done:; + if (__pyx_t_2) { + + /* "selectolax/utils.pxi":72 + * return "document_no_head_no_body" + * elif has_head and not has_body: + * return "head" # <<<<<<<<<<<<<< + * elif not has_head and has_body: + * return "body" +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_head_2); + __pyx_r = __pyx_mstate_global->__pyx_n_u_head_2; + goto __pyx_L0; + + /* "selectolax/utils.pxi":71 + * elif has_html and not has_head and not has_body: + * return "document_no_head_no_body" + * elif has_head and not has_body: # <<<<<<<<<<<<<< + * return "head" + * elif not has_head and has_body: +*/ + } + + /* "selectolax/utils.pxi":73 + * elif has_head and not has_body: + * return "head" + * elif not has_head and has_body: # <<<<<<<<<<<<<< + * return "body" + * elif has_head and has_body: +*/ + __pyx_t_1 = (!__pyx_v_has_head); + if (__pyx_t_1) { + } else { + __pyx_t_2 = __pyx_t_1; + goto __pyx_L27_bool_binop_done; + } + __pyx_t_2 = __pyx_v_has_body; + __pyx_L27_bool_binop_done:; + if (__pyx_t_2) { + + /* "selectolax/utils.pxi":74 + * return "head" + * elif not has_head and has_body: + * return "body" # <<<<<<<<<<<<<< + * elif has_head and has_body: + * return "head_and_body" +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_body_2); + __pyx_r = __pyx_mstate_global->__pyx_n_u_body_2; + goto __pyx_L0; + + /* "selectolax/utils.pxi":73 + * elif has_head and not has_body: + * return "head" + * elif not has_head and has_body: # <<<<<<<<<<<<<< + * return "body" + * elif has_head and has_body: +*/ + } + + /* "selectolax/utils.pxi":75 + * elif not has_head and has_body: + * return "body" + * elif has_head and has_body: # <<<<<<<<<<<<<< + * return "head_and_body" + * else: +*/ + if (__pyx_v_has_head) { + } else { + __pyx_t_2 = __pyx_v_has_head; + goto __pyx_L29_bool_binop_done; + } + __pyx_t_2 = __pyx_v_has_body; + __pyx_L29_bool_binop_done:; + if (__pyx_t_2) { + + /* "selectolax/utils.pxi":76 + * return "body" + * elif has_head and has_body: + * return "head_and_body" # <<<<<<<<<<<<<< + * else: + * return "fragment" +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_head_and_body); + __pyx_r = __pyx_mstate_global->__pyx_n_u_head_and_body; + goto __pyx_L0; + + /* "selectolax/utils.pxi":75 + * elif not has_head and has_body: + * return "body" + * elif has_head and has_body: # <<<<<<<<<<<<<< + * return "head_and_body" + * else: +*/ + } + + /* "selectolax/utils.pxi":78 + * return "head_and_body" + * else: + * return "fragment" # <<<<<<<<<<<<<< + * + * +*/ + /*else*/ { + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_fragment); + __pyx_r = __pyx_mstate_global->__pyx_n_u_fragment; + goto __pyx_L0; + } + + /* "selectolax/utils.pxi":38 + * + * + * def get_fragment_type( # <<<<<<<<<<<<<< + * html: str, + * parser_cls: ParserCls, +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_AddTraceback("selectolax.lexbor.get_fragment_type", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_re); + __Pyx_XDECREF(__pyx_v_html_re); + __Pyx_XDECREF(__pyx_v_match); + __Pyx_XDECREF(__pyx_v_tree); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/utils.pxi":81 + * + * + * def do_parse_fragment(html: str, parser_cls: ParserCls): # <<<<<<<<<<<<<< + * """ + * Given HTML, parse it into a list of Nodes, such that the nodes +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_15do_parse_fragment(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6lexbor_14do_parse_fragment, "do_parse_fragment(html: str, parser_cls: ParserCls)\n\nGiven HTML, parse it into a list of Nodes, such that the nodes\ncorrespond to the given HTML.\n\nFor contrast, HTMLParser adds ``, ``, and `` tags\nif they are missing. This function does not add these tags."); +static PyMethodDef __pyx_mdef_10selectolax_6lexbor_15do_parse_fragment = {"do_parse_fragment", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_15do_parse_fragment, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_14do_parse_fragment}; +static PyObject *__pyx_pw_10selectolax_6lexbor_15do_parse_fragment(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_html = 0; + PyObject *__pyx_v_parser_cls = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[2] = {0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("do_parse_fragment (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_html,&__pyx_mstate_global->__pyx_n_u_parser_cls,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(7, 81, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(7, 81, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(7, 81, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "do_parse_fragment", 0) < (0)) __PYX_ERR(7, 81, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 2; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("do_parse_fragment", 1, 2, 2, i); __PYX_ERR(7, 81, __pyx_L3_error) } + } + } else if (unlikely(__pyx_nargs != 2)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(7, 81, __pyx_L3_error) + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(7, 81, __pyx_L3_error) + } + __pyx_v_html = values[0]; + __pyx_v_parser_cls = values[1]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("do_parse_fragment", 1, 2, 2, __pyx_nargs); __PYX_ERR(7, 81, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.lexbor.do_parse_fragment", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_10selectolax_6lexbor_14do_parse_fragment(__pyx_self, __pyx_v_html, __pyx_v_parser_cls); + + /* function exit code */ + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_14do_parse_fragment(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_html, PyObject *__pyx_v_parser_cls) { + PyObject *__pyx_v_tree = NULL; + PyObject *__pyx_v_frag_type = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + size_t __pyx_t_3; + PyObject *__pyx_t_4 = NULL; + int __pyx_t_5; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("do_parse_fragment", 0); + __Pyx_INCREF(__pyx_v_html); + + /* "selectolax/utils.pxi":89 + * if they are missing. This function does not add these tags. + * """ + * html = html.strip() # <<<<<<<<<<<<<< + * tree = parser_cls(html) + * frag_type = get_fragment_type(html, parser_cls, tree) +*/ + __pyx_t_2 = __pyx_v_html; + __Pyx_INCREF(__pyx_t_2); + __pyx_t_3 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL}; + __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_strip, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 89, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __Pyx_DECREF_SET(__pyx_v_html, __pyx_t_1); + __pyx_t_1 = 0; + + /* "selectolax/utils.pxi":90 + * """ + * html = html.strip() + * tree = parser_cls(html) # <<<<<<<<<<<<<< + * frag_type = get_fragment_type(html, parser_cls, tree) + * +*/ + __pyx_t_2 = NULL; + __Pyx_INCREF(__pyx_v_parser_cls); + __pyx_t_4 = __pyx_v_parser_cls; + __pyx_t_3 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4); + assert(__pyx_t_2); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_4, __pyx__function); + __pyx_t_3 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_html}; + __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_3, (2-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 90, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __pyx_v_tree = __pyx_t_1; + __pyx_t_1 = 0; + + /* "selectolax/utils.pxi":91 + * html = html.strip() + * tree = parser_cls(html) + * frag_type = get_fragment_type(html, parser_cls, tree) # <<<<<<<<<<<<<< + * + * if frag_type == "document": +*/ + __pyx_t_4 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_get_fragment_type); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 91, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); + assert(__pyx_t_4); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_2, __pyx__function); + __pyx_t_3 = 0; + } + #endif + { + PyObject *__pyx_callargs[4] = {__pyx_t_4, __pyx_v_html, __pyx_v_parser_cls, __pyx_v_tree}; + __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_2, __pyx_callargs+__pyx_t_3, (4-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 91, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __pyx_v_frag_type = __pyx_t_1; + __pyx_t_1 = 0; + + /* "selectolax/utils.pxi":93 + * frag_type = get_fragment_type(html, parser_cls, tree) + * + * if frag_type == "document": # <<<<<<<<<<<<<< + * return [tree.root] + * if frag_type == "document_no_head": +*/ + __pyx_t_5 = (__Pyx_PyUnicode_Equals(__pyx_v_frag_type, __pyx_mstate_global->__pyx_n_u_document, Py_EQ)); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(7, 93, __pyx_L1_error) + if (__pyx_t_5) { + + /* "selectolax/utils.pxi":94 + * + * if frag_type == "document": + * return [tree.root] # <<<<<<<<<<<<<< + * if frag_type == "document_no_head": + * tree.head.decompose(recursive=True) +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_tree, __pyx_mstate_global->__pyx_n_u_root); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 94, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 94, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_GIVEREF(__pyx_t_1); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_t_1) != (0)) __PYX_ERR(7, 94, __pyx_L1_error); + __pyx_t_1 = 0; + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; + + /* "selectolax/utils.pxi":93 + * frag_type = get_fragment_type(html, parser_cls, tree) + * + * if frag_type == "document": # <<<<<<<<<<<<<< + * return [tree.root] + * if frag_type == "document_no_head": +*/ + } + + /* "selectolax/utils.pxi":95 + * if frag_type == "document": + * return [tree.root] + * if frag_type == "document_no_head": # <<<<<<<<<<<<<< + * tree.head.decompose(recursive=True) + * return [tree.root] +*/ + __pyx_t_5 = (__Pyx_PyUnicode_Equals(__pyx_v_frag_type, __pyx_mstate_global->__pyx_n_u_document_no_head, Py_EQ)); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(7, 95, __pyx_L1_error) + if (__pyx_t_5) { + + /* "selectolax/utils.pxi":96 + * return [tree.root] + * if frag_type == "document_no_head": + * tree.head.decompose(recursive=True) # <<<<<<<<<<<<<< + * return [tree.root] + * if frag_type == "document_no_body": +*/ + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_tree, __pyx_mstate_global->__pyx_n_u_head_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 96, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_1 = __pyx_t_4; + __Pyx_INCREF(__pyx_t_1); + __pyx_t_3 = 0; + { + PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_1, NULL}; + __pyx_t_6 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(7, 96, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_recursive, Py_True, __pyx_t_6, __pyx_callargs+1, 0) < (0)) __PYX_ERR(7, 96, __pyx_L1_error) + __pyx_t_2 = __Pyx_Object_VectorcallMethod_CallFromBuilder((PyObject*)__pyx_mstate_global->__pyx_n_u_decompose, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_6); + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 96, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "selectolax/utils.pxi":97 + * if frag_type == "document_no_head": + * tree.head.decompose(recursive=True) + * return [tree.root] # <<<<<<<<<<<<<< + * if frag_type == "document_no_body": + * tree.body.decompose(recursive=True) +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_tree, __pyx_mstate_global->__pyx_n_u_root); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 97, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 97, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_2); + if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_2) != (0)) __PYX_ERR(7, 97, __pyx_L1_error); + __pyx_t_2 = 0; + __pyx_r = __pyx_t_4; + __pyx_t_4 = 0; + goto __pyx_L0; + + /* "selectolax/utils.pxi":95 + * if frag_type == "document": + * return [tree.root] + * if frag_type == "document_no_head": # <<<<<<<<<<<<<< + * tree.head.decompose(recursive=True) + * return [tree.root] +*/ + } + + /* "selectolax/utils.pxi":98 + * tree.head.decompose(recursive=True) + * return [tree.root] + * if frag_type == "document_no_body": # <<<<<<<<<<<<<< + * tree.body.decompose(recursive=True) + * return [tree.root] +*/ + __pyx_t_5 = (__Pyx_PyUnicode_Equals(__pyx_v_frag_type, __pyx_mstate_global->__pyx_n_u_document_no_body, Py_EQ)); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(7, 98, __pyx_L1_error) + if (__pyx_t_5) { + + /* "selectolax/utils.pxi":99 + * return [tree.root] + * if frag_type == "document_no_body": + * tree.body.decompose(recursive=True) # <<<<<<<<<<<<<< + * return [tree.root] + * if frag_type == "document_no_head_no_body": +*/ + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_tree, __pyx_mstate_global->__pyx_n_u_body_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(7, 99, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_2 = __pyx_t_6; + __Pyx_INCREF(__pyx_t_2); + __pyx_t_3 = 0; + { + PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_2, NULL}; + __pyx_t_1 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 99, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_recursive, Py_True, __pyx_t_1, __pyx_callargs+1, 0) < (0)) __PYX_ERR(7, 99, __pyx_L1_error) + __pyx_t_4 = __Pyx_Object_VectorcallMethod_CallFromBuilder((PyObject*)__pyx_mstate_global->__pyx_n_u_decompose, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 99, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + } + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "selectolax/utils.pxi":100 + * if frag_type == "document_no_body": + * tree.body.decompose(recursive=True) + * return [tree.root] # <<<<<<<<<<<<<< + * if frag_type == "document_no_head_no_body": + * tree.head.decompose(recursive=True) +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_tree, __pyx_mstate_global->__pyx_n_u_root); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 100, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_6 = PyList_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(7, 100, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_GIVEREF(__pyx_t_4); + if (__Pyx_PyList_SET_ITEM(__pyx_t_6, 0, __pyx_t_4) != (0)) __PYX_ERR(7, 100, __pyx_L1_error); + __pyx_t_4 = 0; + __pyx_r = __pyx_t_6; + __pyx_t_6 = 0; + goto __pyx_L0; + + /* "selectolax/utils.pxi":98 + * tree.head.decompose(recursive=True) + * return [tree.root] + * if frag_type == "document_no_body": # <<<<<<<<<<<<<< + * tree.body.decompose(recursive=True) + * return [tree.root] +*/ + } + + /* "selectolax/utils.pxi":101 + * tree.body.decompose(recursive=True) + * return [tree.root] + * if frag_type == "document_no_head_no_body": # <<<<<<<<<<<<<< + * tree.head.decompose(recursive=True) + * tree.body.decompose(recursive=True) +*/ + __pyx_t_5 = (__Pyx_PyUnicode_Equals(__pyx_v_frag_type, __pyx_mstate_global->__pyx_n_u_document_no_head_no_body, Py_EQ)); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(7, 101, __pyx_L1_error) + if (__pyx_t_5) { + + /* "selectolax/utils.pxi":102 + * return [tree.root] + * if frag_type == "document_no_head_no_body": + * tree.head.decompose(recursive=True) # <<<<<<<<<<<<<< + * tree.body.decompose(recursive=True) + * return [tree.root] +*/ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_tree, __pyx_mstate_global->__pyx_n_u_head_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 102, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_4 = __pyx_t_1; + __Pyx_INCREF(__pyx_t_4); + __pyx_t_3 = 0; + { + PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_4, NULL}; + __pyx_t_2 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 102, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_recursive, Py_True, __pyx_t_2, __pyx_callargs+1, 0) < (0)) __PYX_ERR(7, 102, __pyx_L1_error) + __pyx_t_6 = __Pyx_Object_VectorcallMethod_CallFromBuilder((PyObject*)__pyx_mstate_global->__pyx_n_u_decompose, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_2); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (unlikely(!__pyx_t_6)) __PYX_ERR(7, 102, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + } + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + + /* "selectolax/utils.pxi":103 + * if frag_type == "document_no_head_no_body": + * tree.head.decompose(recursive=True) + * tree.body.decompose(recursive=True) # <<<<<<<<<<<<<< + * return [tree.root] + * elif frag_type == "head": +*/ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_tree, __pyx_mstate_global->__pyx_n_u_body_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 103, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_1 = __pyx_t_2; + __Pyx_INCREF(__pyx_t_1); + __pyx_t_3 = 0; + { + PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_1, NULL}; + __pyx_t_4 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 103, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_recursive, Py_True, __pyx_t_4, __pyx_callargs+1, 0) < (0)) __PYX_ERR(7, 103, __pyx_L1_error) + __pyx_t_6 = __Pyx_Object_VectorcallMethod_CallFromBuilder((PyObject*)__pyx_mstate_global->__pyx_n_u_decompose, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_4); + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_6)) __PYX_ERR(7, 103, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + } + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + + /* "selectolax/utils.pxi":104 + * tree.head.decompose(recursive=True) + * tree.body.decompose(recursive=True) + * return [tree.root] # <<<<<<<<<<<<<< + * elif frag_type == "head": + * tree.body.decompose(recursive=True) +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_tree, __pyx_mstate_global->__pyx_n_u_root); if (unlikely(!__pyx_t_6)) __PYX_ERR(7, 104, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 104, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_GIVEREF(__pyx_t_6); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_t_6) != (0)) __PYX_ERR(7, 104, __pyx_L1_error); + __pyx_t_6 = 0; + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; + + /* "selectolax/utils.pxi":101 + * tree.body.decompose(recursive=True) + * return [tree.root] + * if frag_type == "document_no_head_no_body": # <<<<<<<<<<<<<< + * tree.head.decompose(recursive=True) + * tree.body.decompose(recursive=True) +*/ + } + + /* "selectolax/utils.pxi":105 + * tree.body.decompose(recursive=True) + * return [tree.root] + * elif frag_type == "head": # <<<<<<<<<<<<<< + * tree.body.decompose(recursive=True) + * return [tree.head] +*/ + __pyx_t_5 = (__Pyx_PyUnicode_Equals(__pyx_v_frag_type, __pyx_mstate_global->__pyx_n_u_head_2, Py_EQ)); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(7, 105, __pyx_L1_error) + if (__pyx_t_5) { + + /* "selectolax/utils.pxi":106 + * return [tree.root] + * elif frag_type == "head": + * tree.body.decompose(recursive=True) # <<<<<<<<<<<<<< + * return [tree.head] + * elif frag_type == "body": +*/ + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_tree, __pyx_mstate_global->__pyx_n_u_body_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 106, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_6 = __pyx_t_4; + __Pyx_INCREF(__pyx_t_6); + __pyx_t_3 = 0; + { + PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_6, NULL}; + __pyx_t_1 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 106, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_recursive, Py_True, __pyx_t_1, __pyx_callargs+1, 0) < (0)) __PYX_ERR(7, 106, __pyx_L1_error) + __pyx_t_2 = __Pyx_Object_VectorcallMethod_CallFromBuilder((PyObject*)__pyx_mstate_global->__pyx_n_u_decompose, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_1); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 106, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "selectolax/utils.pxi":107 + * elif frag_type == "head": + * tree.body.decompose(recursive=True) + * return [tree.head] # <<<<<<<<<<<<<< + * elif frag_type == "body": + * tree.head.decompose(recursive=True) +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_tree, __pyx_mstate_global->__pyx_n_u_head_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 107, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 107, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_2); + if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_2) != (0)) __PYX_ERR(7, 107, __pyx_L1_error); + __pyx_t_2 = 0; + __pyx_r = __pyx_t_4; + __pyx_t_4 = 0; + goto __pyx_L0; + + /* "selectolax/utils.pxi":105 + * tree.body.decompose(recursive=True) + * return [tree.root] + * elif frag_type == "head": # <<<<<<<<<<<<<< + * tree.body.decompose(recursive=True) + * return [tree.head] +*/ + } + + /* "selectolax/utils.pxi":108 + * tree.body.decompose(recursive=True) + * return [tree.head] + * elif frag_type == "body": # <<<<<<<<<<<<<< + * tree.head.decompose(recursive=True) + * return [tree.body] +*/ + __pyx_t_5 = (__Pyx_PyUnicode_Equals(__pyx_v_frag_type, __pyx_mstate_global->__pyx_n_u_body_2, Py_EQ)); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(7, 108, __pyx_L1_error) + if (__pyx_t_5) { + + /* "selectolax/utils.pxi":109 + * return [tree.head] + * elif frag_type == "body": + * tree.head.decompose(recursive=True) # <<<<<<<<<<<<<< + * return [tree.body] + * elif frag_type == "head_and_body": +*/ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_tree, __pyx_mstate_global->__pyx_n_u_head_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 109, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __pyx_t_1; + __Pyx_INCREF(__pyx_t_2); + __pyx_t_3 = 0; + { + PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_2, NULL}; + __pyx_t_6 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(7, 109, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_recursive, Py_True, __pyx_t_6, __pyx_callargs+1, 0) < (0)) __PYX_ERR(7, 109, __pyx_L1_error) + __pyx_t_4 = __Pyx_Object_VectorcallMethod_CallFromBuilder((PyObject*)__pyx_mstate_global->__pyx_n_u_decompose, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_6); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 109, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + } + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "selectolax/utils.pxi":110 + * elif frag_type == "body": + * tree.head.decompose(recursive=True) + * return [tree.body] # <<<<<<<<<<<<<< + * elif frag_type == "head_and_body": + * return [tree.head, tree.body] +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_tree, __pyx_mstate_global->__pyx_n_u_body_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 110, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 110, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_4); + if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 0, __pyx_t_4) != (0)) __PYX_ERR(7, 110, __pyx_L1_error); + __pyx_t_4 = 0; + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "selectolax/utils.pxi":108 + * tree.body.decompose(recursive=True) + * return [tree.head] + * elif frag_type == "body": # <<<<<<<<<<<<<< + * tree.head.decompose(recursive=True) + * return [tree.body] +*/ + } + + /* "selectolax/utils.pxi":111 + * tree.head.decompose(recursive=True) + * return [tree.body] + * elif frag_type == "head_and_body": # <<<<<<<<<<<<<< + * return [tree.head, tree.body] + * else: +*/ + __pyx_t_5 = (__Pyx_PyUnicode_Equals(__pyx_v_frag_type, __pyx_mstate_global->__pyx_n_u_head_and_body, Py_EQ)); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(7, 111, __pyx_L1_error) + if (__pyx_t_5) { + + /* "selectolax/utils.pxi":112 + * return [tree.body] + * elif frag_type == "head_and_body": + * return [tree.head, tree.body] # <<<<<<<<<<<<<< + * else: + * return [ +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_tree, __pyx_mstate_global->__pyx_n_u_head_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 112, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_tree, __pyx_mstate_global->__pyx_n_u_body_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 112, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_6 = PyList_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(7, 112, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_GIVEREF(__pyx_t_1); + if (__Pyx_PyList_SET_ITEM(__pyx_t_6, 0, __pyx_t_1) != (0)) __PYX_ERR(7, 112, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_4); + if (__Pyx_PyList_SET_ITEM(__pyx_t_6, 1, __pyx_t_4) != (0)) __PYX_ERR(7, 112, __pyx_L1_error); + __pyx_t_1 = 0; + __pyx_t_4 = 0; + __pyx_r = __pyx_t_6; + __pyx_t_6 = 0; + goto __pyx_L0; + + /* "selectolax/utils.pxi":111 + * tree.head.decompose(recursive=True) + * return [tree.body] + * elif frag_type == "head_and_body": # <<<<<<<<<<<<<< + * return [tree.head, tree.body] + * else: +*/ + } + + /* "selectolax/utils.pxi":114 + * return [tree.head, tree.body] + * else: + * return [ # <<<<<<<<<<<<<< + * *tree.head.iter(include_text=True), + * *tree.body.iter(include_text=True), +*/ + /*else*/ { + __Pyx_XDECREF(__pyx_r); + + /* "selectolax/utils.pxi":115 + * else: + * return [ + * *tree.head.iter(include_text=True), # <<<<<<<<<<<<<< + * *tree.body.iter(include_text=True), + * ] +*/ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_tree, __pyx_mstate_global->__pyx_n_u_head_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 115, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_1 = __pyx_t_2; + __Pyx_INCREF(__pyx_t_1); + __pyx_t_3 = 0; + { + PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_1, NULL}; + __pyx_t_7 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(7, 115, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_include_text, Py_True, __pyx_t_7, __pyx_callargs+1, 0) < (0)) __PYX_ERR(7, 115, __pyx_L1_error) + __pyx_t_4 = __Pyx_Object_VectorcallMethod_CallFromBuilder((PyObject*)__pyx_mstate_global->__pyx_n_u_iter, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_7); + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 115, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + } + __pyx_t_6 = __Pyx_PySequence_ListKeepNew(__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(7, 114, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "selectolax/utils.pxi":116 + * return [ + * *tree.head.iter(include_text=True), + * *tree.body.iter(include_text=True), # <<<<<<<<<<<<<< + * ] +*/ + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_tree, __pyx_mstate_global->__pyx_n_u_body_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(7, 116, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_2 = __pyx_t_7; + __Pyx_INCREF(__pyx_t_2); + __pyx_t_3 = 0; + { + PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_2, NULL}; + __pyx_t_1 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 116, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_include_text, Py_True, __pyx_t_1, __pyx_callargs+1, 0) < (0)) __PYX_ERR(7, 116, __pyx_L1_error) + __pyx_t_4 = __Pyx_Object_VectorcallMethod_CallFromBuilder((PyObject*)__pyx_mstate_global->__pyx_n_u_iter, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 116, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + } + if (__Pyx_PyList_Extend(__pyx_t_6, __pyx_t_4) < (0)) __PYX_ERR(7, 116, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_r = __pyx_t_6; + __pyx_t_6 = 0; + goto __pyx_L0; + } + + /* "selectolax/utils.pxi":81 + * + * + * def do_parse_fragment(html: str, parser_cls: ParserCls): # <<<<<<<<<<<<<< + * """ + * Given HTML, parse it into a list of Nodes, such that the nodes +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_AddTraceback("selectolax.lexbor.do_parse_fragment", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_tree); + __Pyx_XDECREF(__pyx_v_frag_type); + __Pyx_XDECREF(__pyx_v_html); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor/util.pxi":6 + * + * + * def create_tag(tag: str): # <<<<<<<<<<<<<< + * """ + * Given an HTML tag name, e.g. `"div"`, create a single empty node for that tag, +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_17create_tag(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6lexbor_16create_tag, "create_tag(tag: str)\n\nGiven an HTML tag name, e.g. `\"div\"`, create a single empty node for that tag,\ne.g. `\"
\"`.\n\nUse `LexborHTMLParser().create_node(..)` if you need to create a node tied to a specific parser instance."); +static PyMethodDef __pyx_mdef_10selectolax_6lexbor_17create_tag = {"create_tag", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_17create_tag, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_16create_tag}; +static PyObject *__pyx_pw_10selectolax_6lexbor_17create_tag(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_tag = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("create_tag (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_tag,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(8, 6, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(8, 6, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "create_tag", 0) < (0)) __PYX_ERR(8, 6, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("create_tag", 1, 1, 1, i); __PYX_ERR(8, 6, __pyx_L3_error) } + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(8, 6, __pyx_L3_error) + } + __pyx_v_tag = values[0]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("create_tag", 1, 1, 1, __pyx_nargs); __PYX_ERR(8, 6, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.lexbor.create_tag", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_10selectolax_6lexbor_16create_tag(__pyx_self, __pyx_v_tag); + + /* function exit code */ + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_16create_tag(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_tag) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5[5]; + PyObject *__pyx_t_6 = NULL; + size_t __pyx_t_7; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("create_tag", 0); + + /* "selectolax/lexbor/util.pxi":13 + * Use `LexborHTMLParser().create_node(..)` if you need to create a node tied to a specific parser instance. + * """ + * return LexborHTMLParser(f"<{tag}>", is_fragment=True).root # <<<<<<<<<<<<<< + * + * +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_2 = NULL; + __pyx_t_3 = __Pyx_PyObject_FormatSimple(__pyx_v_tag, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = __Pyx_PyObject_FormatSimple(__pyx_v_tag, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(8, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5[0] = __pyx_mstate_global->__pyx_kp_u__2; + __pyx_t_5[1] = __pyx_t_3; + __pyx_t_5[2] = __pyx_mstate_global->__pyx_kp_u__3; + __pyx_t_5[3] = __pyx_t_4; + __pyx_t_5[4] = __pyx_mstate_global->__pyx_kp_u__4; + __pyx_t_6 = __Pyx_PyUnicode_Join(__pyx_t_5, 5, 1 * 2 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_3) + 3 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4), 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4)); + if (unlikely(!__pyx_t_6)) __PYX_ERR(8, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_7 = 1; + { + PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_2, __pyx_t_6}; + __pyx_t_4 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(8, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_is_fragment, Py_True, __pyx_t_4, __pyx_callargs+2, 0) < (0)) __PYX_ERR(8, 13, __pyx_L1_error) + __pyx_t_1 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborHTMLParser, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_4); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(8, 13, __pyx_L1_error) + __Pyx_GOTREF((PyObject *)__pyx_t_1); + } + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_t_1), __pyx_mstate_global->__pyx_n_u_root); if (unlikely(!__pyx_t_4)) __PYX_ERR(8, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF((PyObject *)__pyx_t_1); __pyx_t_1 = 0; + __pyx_r = __pyx_t_4; + __pyx_t_4 = 0; + goto __pyx_L0; + + /* "selectolax/lexbor/util.pxi":6 + * + * + * def create_tag(tag: str): # <<<<<<<<<<<<<< + * """ + * Given an HTML tag name, e.g. `"div"`, create a single empty node for that tag, +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_AddTraceback("selectolax.lexbor.create_tag", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor/util.pxi":16 + * + * + * def parse_fragment(html: str): # <<<<<<<<<<<<<< + * """ + * Given HTML, parse it into a list of Nodes, such that the nodes +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_19parse_fragment(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6lexbor_18parse_fragment, "parse_fragment(html: str)\n\nGiven HTML, parse it into a list of Nodes, such that the nodes\ncorrespond to the given HTML.\n\nFor contrast, HTMLParser adds ``, ``, and `` tags\nif they are missing. This function does not add these tags."); +static PyMethodDef __pyx_mdef_10selectolax_6lexbor_19parse_fragment = {"parse_fragment", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_19parse_fragment, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_18parse_fragment}; +static PyObject *__pyx_pw_10selectolax_6lexbor_19parse_fragment(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_html = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("parse_fragment (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_html,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(8, 16, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(8, 16, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "parse_fragment", 0) < (0)) __PYX_ERR(8, 16, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("parse_fragment", 1, 1, 1, i); __PYX_ERR(8, 16, __pyx_L3_error) } + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(8, 16, __pyx_L3_error) + } + __pyx_v_html = values[0]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("parse_fragment", 1, 1, 1, __pyx_nargs); __PYX_ERR(8, 16, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.lexbor.parse_fragment", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_10selectolax_6lexbor_18parse_fragment(__pyx_self, __pyx_v_html); + + /* function exit code */ + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_18parse_fragment(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_html) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + size_t __pyx_t_4; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("parse_fragment", 0); + + /* "selectolax/lexbor/util.pxi":24 + * if they are missing. This function does not add these tags. + * """ + * return do_parse_fragment(html, LexborHTMLParser) # <<<<<<<<<<<<<< + * + * +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_2 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_do_parse_fragment); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 24, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); + assert(__pyx_t_2); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_3, __pyx__function); + __pyx_t_4 = 0; + } + #endif + { + PyObject *__pyx_callargs[3] = {__pyx_t_2, __pyx_v_html, ((PyObject *)__pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborHTMLParser)}; + __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_3, __pyx_callargs+__pyx_t_4, (3-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(8, 24, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "selectolax/lexbor/util.pxi":16 + * + * + * def parse_fragment(html: str): # <<<<<<<<<<<<<< + * """ + * Given HTML, parse it into a list of Nodes, such that the nodes +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("selectolax.lexbor.parse_fragment", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor/util.pxi":27 + * + * + * def extract_html_comment(text: str) -> str: # <<<<<<<<<<<<<< + * """Extract the inner content of an HTML comment string. + * +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_21extract_html_comment(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6lexbor_20extract_html_comment, "extract_html_comment(text: str) -> str\n\nExtract the inner content of an HTML comment string.\n\nArgs:\n text: Raw HTML comment, including the ```` markers.\n\nReturns:\n The comment body with surrounding whitespace stripped.\n\nRaises:\n ValueError: If the input is not a well-formed HTML comment.\n\nExamples:\n >>> extract_html_comment(\"\")\n 'hello'"); +static PyMethodDef __pyx_mdef_10selectolax_6lexbor_21extract_html_comment = {"extract_html_comment", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_21extract_html_comment, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_20extract_html_comment}; +static PyObject *__pyx_pw_10selectolax_6lexbor_21extract_html_comment(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_text = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("extract_html_comment (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_text,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(8, 27, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(8, 27, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "extract_html_comment", 0) < (0)) __PYX_ERR(8, 27, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("extract_html_comment", 1, 1, 1, i); __PYX_ERR(8, 27, __pyx_L3_error) } + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(8, 27, __pyx_L3_error) + } + __pyx_v_text = values[0]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("extract_html_comment", 1, 1, 1, __pyx_nargs); __PYX_ERR(8, 27, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.lexbor.extract_html_comment", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_10selectolax_6lexbor_20extract_html_comment(__pyx_self, __pyx_v_text); + + /* function exit code */ + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_20extract_html_comment(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_text) { + PyObject *__pyx_v_msg = NULL; + PyObject *__pyx_v_match = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + size_t __pyx_t_6; + int __pyx_t_7; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("extract_html_comment", 0); + + /* "selectolax/lexbor/util.pxi":43 + * 'hello' + * """ + * if match := re.fullmatch(r"\s*\s*", text, flags=re.DOTALL): # <<<<<<<<<<<<<< + * return match.group(1).strip() + * msg = "Input is not a valid HTML comment" +*/ + __pyx_t_2 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_re); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 43, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_fullmatch); if (unlikely(!__pyx_t_4)) __PYX_ERR(8, 43, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_re); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 43, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_DOTALL); if (unlikely(!__pyx_t_5)) __PYX_ERR(8, 43, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_6 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4); + assert(__pyx_t_2); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_4, __pyx__function); + __pyx_t_6 = 0; + } + #endif + { + PyObject *__pyx_callargs[3 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_s_s_s_s, __pyx_v_text}; + __pyx_t_3 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 43, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_flags, __pyx_t_5, __pyx_t_3, __pyx_callargs+3, 0) < (0)) __PYX_ERR(8, 43, __pyx_L1_error) + __pyx_t_1 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_3); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(8, 43, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __Pyx_INCREF(__pyx_t_1); + __pyx_v_match = __pyx_t_1; + __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(8, 43, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (__pyx_t_7) { + + /* "selectolax/lexbor/util.pxi":44 + * """ + * if match := re.fullmatch(r"\s*\s*", text, flags=re.DOTALL): + * return match.group(1).strip() # <<<<<<<<<<<<<< + * msg = "Input is not a valid HTML comment" + * raise ValueError(msg) +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_5 = __pyx_v_match; + __Pyx_INCREF(__pyx_t_5); + __pyx_t_6 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_mstate_global->__pyx_int_1}; + __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_group, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 44, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __pyx_t_4 = __pyx_t_3; + __Pyx_INCREF(__pyx_t_4); + __pyx_t_6 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL}; + __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_strip, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(8, 44, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "selectolax/lexbor/util.pxi":43 + * 'hello' + * """ + * if match := re.fullmatch(r"\s*\s*", text, flags=re.DOTALL): # <<<<<<<<<<<<<< + * return match.group(1).strip() + * msg = "Input is not a valid HTML comment" +*/ + } + + /* "selectolax/lexbor/util.pxi":45 + * if match := re.fullmatch(r"\s*\s*", text, flags=re.DOTALL): + * return match.group(1).strip() + * msg = "Input is not a valid HTML comment" # <<<<<<<<<<<<<< + * raise ValueError(msg) + * +*/ + __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u_Input_is_not_a_valid_HTML_commen); + __pyx_v_msg = __pyx_mstate_global->__pyx_kp_u_Input_is_not_a_valid_HTML_commen; + + /* "selectolax/lexbor/util.pxi":46 + * return match.group(1).strip() + * msg = "Input is not a valid HTML comment" + * raise ValueError(msg) # <<<<<<<<<<<<<< + * + * +*/ + __pyx_t_3 = NULL; + __pyx_t_6 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_msg}; + __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(8, 46, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __Pyx_Raise(__pyx_t_1, 0, 0, 0); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __PYX_ERR(8, 46, __pyx_L1_error) + + /* "selectolax/lexbor/util.pxi":27 + * + * + * def extract_html_comment(text: str) -> str: # <<<<<<<<<<<<<< + * """Extract the inner content of an HTML comment string. + * +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_AddTraceback("selectolax.lexbor.extract_html_comment", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_msg); + __Pyx_XDECREF(__pyx_v_match); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor/util.pxi":49 + * + * + * cdef inline bint is_empty_text_node(lxb_dom_node_t *text_node): # <<<<<<<<<<<<<< + * """ + * Check whether a node is a text node made up solely of HTML ASCII whitespace. +*/ + +static CYTHON_INLINE int __pyx_f_10selectolax_6lexbor_is_empty_text_node(lxb_dom_node_t *__pyx_v_text_node) { + lxb_dom_character_data_t *__pyx_v_text_character_data; + lexbor_str_t *__pyx_v_text_buffer; + size_t __pyx_v_text_length; + lxb_char_t *__pyx_v_text_bytes; + int __pyx_r; + int __pyx_t_1; + int __pyx_t_2; + size_t __pyx_t_3; + lxb_char_t *__pyx_t_4; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + + /* "selectolax/lexbor/util.pxi":65 + * otherwise ``False``. + * """ + * if text_node == NULL or text_node.type != LXB_DOM_NODE_TYPE_TEXT: # <<<<<<<<<<<<<< + * return False + * +*/ + __pyx_t_2 = (__pyx_v_text_node == NULL); + if (!__pyx_t_2) { + } else { + __pyx_t_1 = __pyx_t_2; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_2 = (__pyx_v_text_node->type != LXB_DOM_NODE_TYPE_TEXT); + __pyx_t_1 = __pyx_t_2; + __pyx_L4_bool_binop_done:; + if (__pyx_t_1) { + + /* "selectolax/lexbor/util.pxi":66 + * """ + * if text_node == NULL or text_node.type != LXB_DOM_NODE_TYPE_TEXT: + * return False # <<<<<<<<<<<<<< + * + * cdef lxb_dom_character_data_t *text_character_data = text_node +*/ + __pyx_r = 0; + goto __pyx_L0; + + /* "selectolax/lexbor/util.pxi":65 + * otherwise ``False``. + * """ + * if text_node == NULL or text_node.type != LXB_DOM_NODE_TYPE_TEXT: # <<<<<<<<<<<<<< + * return False + * +*/ + } + + /* "selectolax/lexbor/util.pxi":68 + * return False + * + * cdef lxb_dom_character_data_t *text_character_data = text_node # <<<<<<<<<<<<<< + * cdef lexbor_str_t *text_buffer = &text_character_data.data + * cdef size_t text_length = text_buffer.length +*/ + __pyx_v_text_character_data = ((lxb_dom_character_data_t *)__pyx_v_text_node); + + /* "selectolax/lexbor/util.pxi":69 + * + * cdef lxb_dom_character_data_t *text_character_data = text_node + * cdef lexbor_str_t *text_buffer = &text_character_data.data # <<<<<<<<<<<<<< + * cdef size_t text_length = text_buffer.length + * cdef lxb_char_t *text_bytes = text_buffer.data +*/ + __pyx_v_text_buffer = (&__pyx_v_text_character_data->data); + + /* "selectolax/lexbor/util.pxi":70 + * cdef lxb_dom_character_data_t *text_character_data = text_node + * cdef lexbor_str_t *text_buffer = &text_character_data.data + * cdef size_t text_length = text_buffer.length # <<<<<<<<<<<<<< + * cdef lxb_char_t *text_bytes = text_buffer.data + * +*/ + __pyx_t_3 = __pyx_v_text_buffer->length; + __pyx_v_text_length = __pyx_t_3; + + /* "selectolax/lexbor/util.pxi":71 + * cdef lexbor_str_t *text_buffer = &text_character_data.data + * cdef size_t text_length = text_buffer.length + * cdef lxb_char_t *text_bytes = text_buffer.data # <<<<<<<<<<<<<< + * + * return _is_whitespace_only(text_bytes, text_length) +*/ + __pyx_t_4 = __pyx_v_text_buffer->data; + __pyx_v_text_bytes = __pyx_t_4; + + /* "selectolax/lexbor/util.pxi":73 + * cdef lxb_char_t *text_bytes = text_buffer.data + * + * return _is_whitespace_only(text_bytes, text_length) # <<<<<<<<<<<<<< + * + * +*/ + __pyx_t_1 = __pyx_f_10selectolax_6lexbor__is_whitespace_only(__pyx_v_text_bytes, __pyx_v_text_length); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(8, 73, __pyx_L1_error) + __pyx_r = __pyx_t_1; + goto __pyx_L0; + + /* "selectolax/lexbor/util.pxi":49 + * + * + * cdef inline bint is_empty_text_node(lxb_dom_node_t *text_node): # <<<<<<<<<<<<<< + * """ + * Check whether a node is a text node made up solely of HTML ASCII whitespace. +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_AddTraceback("selectolax.lexbor.is_empty_text_node", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + return __pyx_r; +} + +/* "selectolax/lexbor/util.pxi":76 + * + * + * cdef inline bint _is_whitespace_only(const lxb_char_t *buffer, size_t buffer_length) nogil: # <<<<<<<<<<<<<< + * """ + * Determine whether a byte buffer consists only of HTML ASCII whitespace. +*/ + +static CYTHON_INLINE int __pyx_f_10selectolax_6lexbor__is_whitespace_only(lxb_char_t const *__pyx_v_buffer, size_t __pyx_v_buffer_length) { + lxb_char_t const *__pyx_v_cursor; + lxb_char_t const *__pyx_v_end; + lxb_char_t __pyx_v_current_char; + int __pyx_r; + int __pyx_t_1; + int __pyx_t_2; + + /* "selectolax/lexbor/util.pxi":99 + * keep the GIL released in hot loops. + * """ + * cdef const lxb_char_t *cursor = buffer # <<<<<<<<<<<<<< + * cdef const lxb_char_t *end = buffer + buffer_length + * cdef lxb_char_t current_char +*/ + __pyx_v_cursor = __pyx_v_buffer; + + /* "selectolax/lexbor/util.pxi":100 + * """ + * cdef const lxb_char_t *cursor = buffer + * cdef const lxb_char_t *end = buffer + buffer_length # <<<<<<<<<<<<<< + * cdef lxb_char_t current_char + * +*/ + __pyx_v_end = (__pyx_v_buffer + __pyx_v_buffer_length); + + /* "selectolax/lexbor/util.pxi":103 + * cdef lxb_char_t current_char + * + * if buffer == NULL or buffer_length == 0: # <<<<<<<<<<<<<< + * return True + * +*/ + __pyx_t_2 = (__pyx_v_buffer == NULL); + if (!__pyx_t_2) { + } else { + __pyx_t_1 = __pyx_t_2; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_2 = (__pyx_v_buffer_length == 0); + __pyx_t_1 = __pyx_t_2; + __pyx_L4_bool_binop_done:; + if (__pyx_t_1) { + + /* "selectolax/lexbor/util.pxi":104 + * + * if buffer == NULL or buffer_length == 0: + * return True # <<<<<<<<<<<<<< + * + * # Inline whitespace check mirroring lexbor_utils_whitespace(chr, !=, &&) +*/ + __pyx_r = 1; + goto __pyx_L0; + + /* "selectolax/lexbor/util.pxi":103 + * cdef lxb_char_t current_char + * + * if buffer == NULL or buffer_length == 0: # <<<<<<<<<<<<<< + * return True + * +*/ + } + + /* "selectolax/lexbor/util.pxi":107 + * + * # Inline whitespace check mirroring lexbor_utils_whitespace(chr, !=, &&) + * while cursor < end: # <<<<<<<<<<<<<< + * current_char = cursor[0] + * if (current_char != ' ' and current_char != '\t' and current_char != '\n' +*/ + while (1) { + __pyx_t_1 = (__pyx_v_cursor < __pyx_v_end); + if (!__pyx_t_1) break; + + /* "selectolax/lexbor/util.pxi":108 + * # Inline whitespace check mirroring lexbor_utils_whitespace(chr, !=, &&) + * while cursor < end: + * current_char = cursor[0] # <<<<<<<<<<<<<< + * if (current_char != ' ' and current_char != '\t' and current_char != '\n' + * and current_char != '\f' and current_char != '\r'): +*/ + __pyx_v_current_char = (__pyx_v_cursor[0]); + + /* "selectolax/lexbor/util.pxi":109 + * while cursor < end: + * current_char = cursor[0] + * if (current_char != ' ' and current_char != '\t' and current_char != '\n' # <<<<<<<<<<<<<< + * and current_char != '\f' and current_char != '\r'): + * return False +*/ + switch (__pyx_v_current_char) { + case ' ': + case '\t': + case '\n': + case '\x0C': + + /* "selectolax/lexbor/util.pxi":110 + * current_char = cursor[0] + * if (current_char != ' ' and current_char != '\t' and current_char != '\n' + * and current_char != '\f' and current_char != '\r'): # <<<<<<<<<<<<<< + * return False + * cursor += 1 +*/ + case '\r': + + /* "selectolax/lexbor/util.pxi":109 + * while cursor < end: + * current_char = cursor[0] + * if (current_char != ' ' and current_char != '\t' and current_char != '\n' # <<<<<<<<<<<<<< + * and current_char != '\f' and current_char != '\r'): + * return False +*/ + __pyx_t_1 = 0; + break; + default: + __pyx_t_1 = 1; + break; + } + if (__pyx_t_1) { + + /* "selectolax/lexbor/util.pxi":111 + * if (current_char != ' ' and current_char != '\t' and current_char != '\n' + * and current_char != '\f' and current_char != '\r'): + * return False # <<<<<<<<<<<<<< + * cursor += 1 + * +*/ + __pyx_r = 0; + goto __pyx_L0; + + /* "selectolax/lexbor/util.pxi":109 + * while cursor < end: + * current_char = cursor[0] + * if (current_char != ' ' and current_char != '\t' and current_char != '\n' # <<<<<<<<<<<<<< + * and current_char != '\f' and current_char != '\r'): + * return False +*/ + } + + /* "selectolax/lexbor/util.pxi":112 + * and current_char != '\f' and current_char != '\r'): + * return False + * cursor += 1 # <<<<<<<<<<<<<< + * + * return True +*/ + __pyx_v_cursor = (__pyx_v_cursor + 1); + } + + /* "selectolax/lexbor/util.pxi":114 + * cursor += 1 + * + * return True # <<<<<<<<<<<<<< +*/ + __pyx_r = 1; + goto __pyx_L0; + + /* "selectolax/lexbor/util.pxi":76 + * + * + * cdef inline bint _is_whitespace_only(const lxb_char_t *buffer, size_t buffer_length) nogil: # <<<<<<<<<<<<<< + * """ + * Determine whether a byte buffer consists only of HTML ASCII whitespace. +*/ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "selectolax/lexbor/node_remove.pxi":2 + * + * cdef lxb_dom_node_t * node_remove_deep(lxb_dom_node_t* root): # <<<<<<<<<<<<<< + * cdef lxb_dom_node_t *tmp + * cdef lxb_dom_node_t *node = root +*/ + +static lxb_dom_node_t *__pyx_f_10selectolax_6lexbor_node_remove_deep(lxb_dom_node_t *__pyx_v_root) { + lxb_dom_node_t *__pyx_v_tmp; + lxb_dom_node_t *__pyx_v_node; + lxb_dom_node_t *__pyx_r; + int __pyx_t_1; + lxb_dom_node_t *__pyx_t_2; + int __pyx_t_3; + + /* "selectolax/lexbor/node_remove.pxi":4 + * cdef lxb_dom_node_t * node_remove_deep(lxb_dom_node_t* root): + * cdef lxb_dom_node_t *tmp + * cdef lxb_dom_node_t *node = root # <<<<<<<<<<<<<< + * + * while node != NULL: +*/ + __pyx_v_node = __pyx_v_root; + + /* "selectolax/lexbor/node_remove.pxi":6 + * cdef lxb_dom_node_t *node = root + * + * while node != NULL: # <<<<<<<<<<<<<< + * if node.first_child != NULL: + * node = node.first_child +*/ + while (1) { + __pyx_t_1 = (__pyx_v_node != NULL); + if (!__pyx_t_1) break; + + /* "selectolax/lexbor/node_remove.pxi":7 + * + * while node != NULL: + * if node.first_child != NULL: # <<<<<<<<<<<<<< + * node = node.first_child + * else: +*/ + __pyx_t_1 = (__pyx_v_node->first_child != NULL); + if (__pyx_t_1) { + + /* "selectolax/lexbor/node_remove.pxi":8 + * while node != NULL: + * if node.first_child != NULL: + * node = node.first_child # <<<<<<<<<<<<<< + * else: + * while node != root and node.next == NULL: +*/ + __pyx_t_2 = __pyx_v_node->first_child; + __pyx_v_node = __pyx_t_2; + + /* "selectolax/lexbor/node_remove.pxi":7 + * + * while node != NULL: + * if node.first_child != NULL: # <<<<<<<<<<<<<< + * node = node.first_child + * else: +*/ + goto __pyx_L5; + } + + /* "selectolax/lexbor/node_remove.pxi":10 + * node = node.first_child + * else: + * while node != root and node.next == NULL: # <<<<<<<<<<<<<< + * tmp = node.parent + * lxb_dom_node_remove(node) +*/ + /*else*/ { + while (1) { + __pyx_t_3 = (__pyx_v_node != __pyx_v_root); + if (__pyx_t_3) { + } else { + __pyx_t_1 = __pyx_t_3; + goto __pyx_L8_bool_binop_done; + } + __pyx_t_3 = (__pyx_v_node->next == NULL); + __pyx_t_1 = __pyx_t_3; + __pyx_L8_bool_binop_done:; + if (!__pyx_t_1) break; + + /* "selectolax/lexbor/node_remove.pxi":11 + * else: + * while node != root and node.next == NULL: + * tmp = node.parent # <<<<<<<<<<<<<< + * lxb_dom_node_remove(node) + * node = tmp +*/ + __pyx_t_2 = __pyx_v_node->parent; + __pyx_v_tmp = __pyx_t_2; + + /* "selectolax/lexbor/node_remove.pxi":12 + * while node != root and node.next == NULL: + * tmp = node.parent + * lxb_dom_node_remove(node) # <<<<<<<<<<<<<< + * node = tmp + * +*/ + lxb_dom_node_remove(__pyx_v_node); + + /* "selectolax/lexbor/node_remove.pxi":13 + * tmp = node.parent + * lxb_dom_node_remove(node) + * node = tmp # <<<<<<<<<<<<<< + * + * if node == root: +*/ + __pyx_v_node = __pyx_v_tmp; + } + + /* "selectolax/lexbor/node_remove.pxi":15 + * node = tmp + * + * if node == root: # <<<<<<<<<<<<<< + * lxb_dom_node_remove(node) + * break +*/ + __pyx_t_1 = (__pyx_v_node == __pyx_v_root); + if (__pyx_t_1) { + + /* "selectolax/lexbor/node_remove.pxi":16 + * + * if node == root: + * lxb_dom_node_remove(node) # <<<<<<<<<<<<<< + * break + * +*/ + lxb_dom_node_remove(__pyx_v_node); + + /* "selectolax/lexbor/node_remove.pxi":17 + * if node == root: + * lxb_dom_node_remove(node) + * break # <<<<<<<<<<<<<< + * + * tmp = node.next +*/ + goto __pyx_L4_break; + + /* "selectolax/lexbor/node_remove.pxi":15 + * node = tmp + * + * if node == root: # <<<<<<<<<<<<<< + * lxb_dom_node_remove(node) + * break +*/ + } + + /* "selectolax/lexbor/node_remove.pxi":19 + * break + * + * tmp = node.next # <<<<<<<<<<<<<< + * lxb_dom_node_remove(node) + * node = tmp +*/ + __pyx_t_2 = __pyx_v_node->next; + __pyx_v_tmp = __pyx_t_2; + + /* "selectolax/lexbor/node_remove.pxi":20 + * + * tmp = node.next + * lxb_dom_node_remove(node) # <<<<<<<<<<<<<< + * node = tmp + * +*/ + lxb_dom_node_remove(__pyx_v_node); + + /* "selectolax/lexbor/node_remove.pxi":21 + * tmp = node.next + * lxb_dom_node_remove(node) + * node = tmp # <<<<<<<<<<<<<< + * + * return NULL +*/ + __pyx_v_node = __pyx_v_tmp; + } + __pyx_L5:; + } + __pyx_L4_break:; + + /* "selectolax/lexbor/node_remove.pxi":23 + * node = tmp + * + * return NULL # <<<<<<<<<<<<<< + * + * cdef bint node_is_removed(lxb_dom_node_t* node): +*/ + __pyx_r = NULL; + goto __pyx_L0; + + /* "selectolax/lexbor/node_remove.pxi":2 + * + * cdef lxb_dom_node_t * node_remove_deep(lxb_dom_node_t* root): # <<<<<<<<<<<<<< + * cdef lxb_dom_node_t *tmp + * cdef lxb_dom_node_t *node = root +*/ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "selectolax/lexbor/node_remove.pxi":25 + * return NULL + * + * cdef bint node_is_removed(lxb_dom_node_t* node): # <<<<<<<<<<<<<< + * if node.parent == NULL and node.next == NULL \ + * and node.prev == NULL: +*/ + +static int __pyx_f_10selectolax_6lexbor_node_is_removed(lxb_dom_node_t *__pyx_v_node) { + int __pyx_r; + int __pyx_t_1; + int __pyx_t_2; + + /* "selectolax/lexbor/node_remove.pxi":26 + * + * cdef bint node_is_removed(lxb_dom_node_t* node): + * if node.parent == NULL and node.next == NULL \ # <<<<<<<<<<<<<< + * and node.prev == NULL: + * return 1 +*/ + __pyx_t_2 = (__pyx_v_node->parent == NULL); + if (__pyx_t_2) { + } else { + __pyx_t_1 = __pyx_t_2; + goto __pyx_L4_bool_binop_done; + } + + /* "selectolax/lexbor/node_remove.pxi":27 + * cdef bint node_is_removed(lxb_dom_node_t* node): + * if node.parent == NULL and node.next == NULL \ + * and node.prev == NULL: # <<<<<<<<<<<<<< + * return 1 + * return 0 +*/ + __pyx_t_2 = (__pyx_v_node->next == NULL); + if (__pyx_t_2) { + } else { + __pyx_t_1 = __pyx_t_2; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_2 = (__pyx_v_node->prev == NULL); + __pyx_t_1 = __pyx_t_2; + __pyx_L4_bool_binop_done:; + + /* "selectolax/lexbor/node_remove.pxi":26 + * + * cdef bint node_is_removed(lxb_dom_node_t* node): + * if node.parent == NULL and node.next == NULL \ # <<<<<<<<<<<<<< + * and node.prev == NULL: + * return 1 +*/ + if (__pyx_t_1) { + + /* "selectolax/lexbor/node_remove.pxi":28 + * if node.parent == NULL and node.next == NULL \ + * and node.prev == NULL: + * return 1 # <<<<<<<<<<<<<< + * return 0 +*/ + __pyx_r = 1; + goto __pyx_L0; + + /* "selectolax/lexbor/node_remove.pxi":26 + * + * cdef bint node_is_removed(lxb_dom_node_t* node): + * if node.parent == NULL and node.next == NULL \ # <<<<<<<<<<<<<< + * and node.prev == NULL: + * return 1 +*/ + } + + /* "selectolax/lexbor/node_remove.pxi":29 + * and node.prev == NULL: + * return 1 + * return 0 # <<<<<<<<<<<<<< +*/ + __pyx_r = 0; + goto __pyx_L0; + + /* "selectolax/lexbor/node_remove.pxi":25 + * return NULL + * + * cdef bint node_is_removed(lxb_dom_node_t* node): # <<<<<<<<<<<<<< + * if node.parent == NULL and node.next == NULL \ + * and node.prev == NULL: +*/ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "selectolax/lexbor.pyx":27 + * html : str (unicode) or bytes + * """ + * def __init__(self, html: str | bytes, is_fragment: bool = False): # <<<<<<<<<<<<<< + * """Create a parser and load HTML. + * +*/ + +/* Python wrapper */ +static int __pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6lexbor_16LexborHTMLParser___init__, "Create a parser and load HTML.\n\n Parameters\n ----------\n html : str or bytes\n HTML content to parse.\n is_fragment : bool, optional\n When ``False`` (default), the input is parsed as a full HTML document.\n If the input is only a fragment, the parser still accepts it and inserts any missing required elements,\n (such as ``, ``, and ``) into the tree,\n according to the HTML parsing rules in the HTML Standard.\n This matches how browsers construct the DOM when they load an HTML page.\n\n When ``True``, the input is parsed as an HTML fragment.\n The parser does not insert any missing required HTML elements.\n Behaves the same way as `DocumentFragment` in browsers.\n When ``, `` or `` are present, ignores them entirely.\n As per the HTML Standard.\n\n "); +#if CYTHON_UPDATE_DESCRIPTOR_DOC +struct wrapperbase __pyx_wrapperbase_10selectolax_6lexbor_16LexborHTMLParser___init__; +#endif +static int __pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_html = 0; + PyObject *__pyx_v_is_fragment = 0; + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[2] = {0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1; + #endif + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_html,&__pyx_mstate_global->__pyx_n_u_is_fragment,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 27, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 2: + values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 27, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 27, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__init__", 0) < (0)) __PYX_ERR(0, 27, __pyx_L3_error) + if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_False)); + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 2, i); __PYX_ERR(0, 27, __pyx_L3_error) } + } + } else { + switch (__pyx_nargs) { + case 2: + values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 27, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 27, __pyx_L3_error) + break; + default: goto __pyx_L5_argtuple_error; + } + if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_False)); + } + __pyx_v_html = values[0]; + __pyx_v_is_fragment = values[1]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 2, __pyx_nargs); __PYX_ERR(0, 27, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.lexbor.LexborHTMLParser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return -1; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_10selectolax_6lexbor_16LexborHTMLParser___init__(((struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *)__pyx_v_self), __pyx_v_html, __pyx_v_is_fragment); + + /* function exit code */ + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_10selectolax_6lexbor_16LexborHTMLParser___init__(struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *__pyx_v_self, PyObject *__pyx_v_html, PyObject *__pyx_v_is_fragment) { + size_t __pyx_v_html_len; + PyObject *__pyx_v_bytes_html = 0; + int __pyx_r; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + size_t __pyx_t_5; + PyObject *__pyx_t_6 = NULL; + PyObject *(*__pyx_t_7)(PyObject *); + char *__pyx_t_8; + int __pyx_t_9; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__init__", 0); + + /* "selectolax/lexbor.pyx":50 + * cdef size_t html_len + * cdef object bytes_html + * self._is_fragment = is_fragment # <<<<<<<<<<<<<< + * self._fragment_document = NULL + * self._selector = None +*/ + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_is_fragment); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 50, __pyx_L1_error) + __pyx_v_self->_is_fragment = __pyx_t_1; + + /* "selectolax/lexbor.pyx":51 + * cdef object bytes_html + * self._is_fragment = is_fragment + * self._fragment_document = NULL # <<<<<<<<<<<<<< + * self._selector = None + * self._new_html_document() +*/ + __pyx_v_self->_fragment_document = NULL; + + /* "selectolax/lexbor.pyx":52 + * self._is_fragment = is_fragment + * self._fragment_document = NULL + * self._selector = None # <<<<<<<<<<<<<< + * self._new_html_document() + * bytes_html, html_len = preprocess_input(html) +*/ + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + __Pyx_GOTREF((PyObject *)__pyx_v_self->_selector); + __Pyx_DECREF((PyObject *)__pyx_v_self->_selector); + __pyx_v_self->_selector = ((struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector *)Py_None); + + /* "selectolax/lexbor.pyx":53 + * self._fragment_document = NULL + * self._selector = None + * self._new_html_document() # <<<<<<<<<<<<<< + * bytes_html, html_len = preprocess_input(html) + * self._parse_html(bytes_html, html_len) +*/ + __pyx_f_10selectolax_6lexbor_16LexborHTMLParser__new_html_document(__pyx_v_self); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 53, __pyx_L1_error) + + /* "selectolax/lexbor.pyx":54 + * self._selector = None + * self._new_html_document() + * bytes_html, html_len = preprocess_input(html) # <<<<<<<<<<<<<< + * self._parse_html(bytes_html, html_len) + * self.raw_html = bytes_html +*/ + __pyx_t_3 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_preprocess_input); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 54, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4); + assert(__pyx_t_3); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_4, __pyx__function); + __pyx_t_5 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_html}; + __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 54, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + } + if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) { + PyObject* sequence = __pyx_t_2; + Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); + if (unlikely(size != 2)) { + if (size > 2) __Pyx_RaiseTooManyValuesError(2); + else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); + __PYX_ERR(0, 54, __pyx_L1_error) + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + if (likely(PyTuple_CheckExact(sequence))) { + __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); + __Pyx_INCREF(__pyx_t_4); + __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); + __Pyx_INCREF(__pyx_t_3); + } else { + __pyx_t_4 = __Pyx_PyList_GetItemRefFast(sequence, 0, __Pyx_ReferenceSharing_SharedReference); + if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 54, __pyx_L1_error) + __Pyx_XGOTREF(__pyx_t_4); + __pyx_t_3 = __Pyx_PyList_GetItemRefFast(sequence, 1, __Pyx_ReferenceSharing_SharedReference); + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 54, __pyx_L1_error) + __Pyx_XGOTREF(__pyx_t_3); + } + #else + __pyx_t_4 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 54, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 54, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + #endif + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } else { + Py_ssize_t index = -1; + __pyx_t_6 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 54, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_7 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_6); + index = 0; __pyx_t_4 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_4)) goto __pyx_L3_unpacking_failed; + __Pyx_GOTREF(__pyx_t_4); + index = 1; __pyx_t_3 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_3)) goto __pyx_L3_unpacking_failed; + __Pyx_GOTREF(__pyx_t_3); + if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_6), 2) < (0)) __PYX_ERR(0, 54, __pyx_L1_error) + __pyx_t_7 = NULL; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + goto __pyx_L4_unpacking_done; + __pyx_L3_unpacking_failed:; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_7 = NULL; + if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); + __PYX_ERR(0, 54, __pyx_L1_error) + __pyx_L4_unpacking_done:; + } + __pyx_t_5 = __Pyx_PyLong_As_size_t(__pyx_t_3); if (unlikely((__pyx_t_5 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 54, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_v_bytes_html = __pyx_t_4; + __pyx_t_4 = 0; + __pyx_v_html_len = __pyx_t_5; + + /* "selectolax/lexbor.pyx":55 + * self._new_html_document() + * bytes_html, html_len = preprocess_input(html) + * self._parse_html(bytes_html, html_len) # <<<<<<<<<<<<<< + * self.raw_html = bytes_html + * +*/ + __pyx_t_8 = __Pyx_PyObject_AsWritableString(__pyx_v_bytes_html); if (unlikely((!__pyx_t_8) && PyErr_Occurred())) __PYX_ERR(0, 55, __pyx_L1_error) + __pyx_t_9 = ((struct __pyx_vtabstruct_10selectolax_6lexbor_LexborHTMLParser *)__pyx_v_self->__pyx_vtab)->_parse_html(__pyx_v_self, __pyx_t_8, __pyx_v_html_len); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(0, 55, __pyx_L1_error) + + /* "selectolax/lexbor.pyx":56 + * bytes_html, html_len = preprocess_input(html) + * self._parse_html(bytes_html, html_len) + * self.raw_html = bytes_html # <<<<<<<<<<<<<< + * + * cdef inline lxb_html_document_t* main_document(self) nogil: +*/ + __pyx_t_2 = __pyx_v_bytes_html; + __Pyx_INCREF(__pyx_t_2); + if (!(likely(PyBytes_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("bytes", __pyx_t_2))) __PYX_ERR(0, 56, __pyx_L1_error) + __Pyx_GIVEREF(__pyx_t_2); + __Pyx_GOTREF(__pyx_v_self->raw_html); + __Pyx_DECREF(__pyx_v_self->raw_html); + __pyx_v_self->raw_html = ((PyObject*)__pyx_t_2); + __pyx_t_2 = 0; + + /* "selectolax/lexbor.pyx":27 + * html : str (unicode) or bytes + * """ + * def __init__(self, html: str | bytes, is_fragment: bool = False): # <<<<<<<<<<<<<< + * """Create a parser and load HTML. + * +*/ + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_AddTraceback("selectolax.lexbor.LexborHTMLParser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_bytes_html); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor.pyx":58 + * self.raw_html = bytes_html + * + * cdef inline lxb_html_document_t* main_document(self) nogil: # <<<<<<<<<<<<<< + * if self._is_fragment: + * return self._fragment_document +*/ + +static CYTHON_INLINE lxb_html_document_t *__pyx_f_10selectolax_6lexbor_16LexborHTMLParser_main_document(struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *__pyx_v_self) { + lxb_html_document_t *__pyx_r; + + /* "selectolax/lexbor.pyx":59 + * + * cdef inline lxb_html_document_t* main_document(self) nogil: + * if self._is_fragment: # <<<<<<<<<<<<<< + * return self._fragment_document + * else: +*/ + if (__pyx_v_self->_is_fragment) { + + /* "selectolax/lexbor.pyx":60 + * cdef inline lxb_html_document_t* main_document(self) nogil: + * if self._is_fragment: + * return self._fragment_document # <<<<<<<<<<<<<< + * else: + * return self.document +*/ + __pyx_r = __pyx_v_self->_fragment_document; + goto __pyx_L0; + + /* "selectolax/lexbor.pyx":59 + * + * cdef inline lxb_html_document_t* main_document(self) nogil: + * if self._is_fragment: # <<<<<<<<<<<<<< + * return self._fragment_document + * else: +*/ + } + + /* "selectolax/lexbor.pyx":62 + * return self._fragment_document + * else: + * return self.document # <<<<<<<<<<<<<< + * + * cdef inline void _new_html_document(self): +*/ + /*else*/ { + __pyx_r = __pyx_v_self->document; + goto __pyx_L0; + } + + /* "selectolax/lexbor.pyx":58 + * self.raw_html = bytes_html + * + * cdef inline lxb_html_document_t* main_document(self) nogil: # <<<<<<<<<<<<<< + * if self._is_fragment: + * return self._fragment_document +*/ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "selectolax/lexbor.pyx":64 + * return self.document + * + * cdef inline void _new_html_document(self): # <<<<<<<<<<<<<< + * """Initialize a fresh Lexbor HTML document. + * +*/ + +static CYTHON_INLINE void __pyx_f_10selectolax_6lexbor_16LexborHTMLParser__new_html_document(struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *__pyx_v_self) { + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("_new_html_document", 0); + + /* "selectolax/lexbor.pyx":76 + * If the underlying Lexbor document cannot be created. + * """ + * with nogil: # <<<<<<<<<<<<<< + * self.document = lxb_html_document_create() + * +*/ + { + PyThreadState * _save; + _save = PyEval_SaveThread(); + __Pyx_FastGIL_Remember(); + /*try:*/ { + + /* "selectolax/lexbor.pyx":77 + * """ + * with nogil: + * self.document = lxb_html_document_create() # <<<<<<<<<<<<<< + * + * if self.document == NULL: +*/ + __pyx_v_self->document = lxb_html_document_create(); + } + + /* "selectolax/lexbor.pyx":76 + * If the underlying Lexbor document cannot be created. + * """ + * with nogil: # <<<<<<<<<<<<<< + * self.document = lxb_html_document_create() + * +*/ + /*finally:*/ { + /*normal exit:*/{ + __Pyx_FastGIL_Forget(); + PyEval_RestoreThread(_save); + goto __pyx_L5; + } + __pyx_L5:; + } + } + + /* "selectolax/lexbor.pyx":79 + * self.document = lxb_html_document_create() + * + * if self.document == NULL: # <<<<<<<<<<<<<< + * PyErr_SetObject(SelectolaxError, "Failed to initialize object for HTML Document.") + * +*/ + __pyx_t_1 = (__pyx_v_self->document == NULL); + if (__pyx_t_1) { + + /* "selectolax/lexbor.pyx":80 + * + * if self.document == NULL: + * PyErr_SetObject(SelectolaxError, "Failed to initialize object for HTML Document.") # <<<<<<<<<<<<<< + * + * cdef int _parse_html(self, char *html, size_t html_len) except -1: +*/ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_SelectolaxError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 80, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + PyErr_SetObject(__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_Failed_to_initialize_object_for); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "selectolax/lexbor.pyx":79 + * self.document = lxb_html_document_create() + * + * if self.document == NULL: # <<<<<<<<<<<<<< + * PyErr_SetObject(SelectolaxError, "Failed to initialize object for HTML Document.") + * +*/ + } + + /* "selectolax/lexbor.pyx":64 + * return self.document + * + * cdef inline void _new_html_document(self): # <<<<<<<<<<<<<< + * """Initialize a fresh Lexbor HTML document. + * +*/ + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("selectolax.lexbor.LexborHTMLParser._new_html_document", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_L0:; + __Pyx_RefNannyFinishContext(); +} + +/* "selectolax/lexbor.pyx":82 + * PyErr_SetObject(SelectolaxError, "Failed to initialize object for HTML Document.") + * + * cdef int _parse_html(self, char *html, size_t html_len) except -1: # <<<<<<<<<<<<<< + * """Parse HTML content into the internal document. + * +*/ + +static int __pyx_f_10selectolax_6lexbor_16LexborHTMLParser__parse_html(struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *__pyx_v_self, char *__pyx_v_html, size_t __pyx_v_html_len) { + lxb_status_t __pyx_v_status; + int __pyx_r; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + lxb_status_t __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("_parse_html", 0); + + /* "selectolax/lexbor.pyx":106 + * cdef lxb_status_t status + * + * if self.document == NULL: # <<<<<<<<<<<<<< + * return -1 + * +*/ + __pyx_t_1 = (__pyx_v_self->document == NULL); + if (__pyx_t_1) { + + /* "selectolax/lexbor.pyx":107 + * + * if self.document == NULL: + * return -1 # <<<<<<<<<<<<<< + * + * with nogil: +*/ + __pyx_r = -1; + goto __pyx_L0; + + /* "selectolax/lexbor.pyx":106 + * cdef lxb_status_t status + * + * if self.document == NULL: # <<<<<<<<<<<<<< + * return -1 + * +*/ + } + + /* "selectolax/lexbor.pyx":109 + * return -1 + * + * with nogil: # <<<<<<<<<<<<<< + * if self._is_fragment: + * status = self._parse_html_fragment(html, html_len) +*/ + { + PyThreadState * _save; + _save = PyEval_SaveThread(); + __Pyx_FastGIL_Remember(); + /*try:*/ { + + /* "selectolax/lexbor.pyx":110 + * + * with nogil: + * if self._is_fragment: # <<<<<<<<<<<<<< + * status = self._parse_html_fragment(html, html_len) + * else: +*/ + if (__pyx_v_self->_is_fragment) { + + /* "selectolax/lexbor.pyx":111 + * with nogil: + * if self._is_fragment: + * status = self._parse_html_fragment(html, html_len) # <<<<<<<<<<<<<< + * else: + * status = self._parse_html_document(html, html_len) +*/ + __pyx_t_2 = __pyx_f_10selectolax_6lexbor_16LexborHTMLParser__parse_html_fragment(__pyx_v_self, __pyx_v_html, __pyx_v_html_len); if (unlikely(__Pyx_ErrOccurredWithGIL())) __PYX_ERR(0, 111, __pyx_L5_error) + __pyx_v_status = __pyx_t_2; + + /* "selectolax/lexbor.pyx":110 + * + * with nogil: + * if self._is_fragment: # <<<<<<<<<<<<<< + * status = self._parse_html_fragment(html, html_len) + * else: +*/ + goto __pyx_L7; + } + + /* "selectolax/lexbor.pyx":113 + * status = self._parse_html_fragment(html, html_len) + * else: + * status = self._parse_html_document(html, html_len) # <<<<<<<<<<<<<< + * + * if status != LXB_STATUS_OK: +*/ + /*else*/ { + __pyx_t_2 = __pyx_f_10selectolax_6lexbor_16LexborHTMLParser__parse_html_document(__pyx_v_self, __pyx_v_html, __pyx_v_html_len); if (unlikely(__Pyx_ErrOccurredWithGIL())) __PYX_ERR(0, 113, __pyx_L5_error) + __pyx_v_status = __pyx_t_2; + } + __pyx_L7:; + } + + /* "selectolax/lexbor.pyx":109 + * return -1 + * + * with nogil: # <<<<<<<<<<<<<< + * if self._is_fragment: + * status = self._parse_html_fragment(html, html_len) +*/ + /*finally:*/ { + /*normal exit:*/{ + __Pyx_FastGIL_Forget(); + PyEval_RestoreThread(_save); + goto __pyx_L6; + } + __pyx_L5_error: { + __Pyx_FastGIL_Forget(); + PyEval_RestoreThread(_save); + goto __pyx_L1_error; + } + __pyx_L6:; + } + } + + /* "selectolax/lexbor.pyx":115 + * status = self._parse_html_document(html, html_len) + * + * if status != LXB_STATUS_OK: # <<<<<<<<<<<<<< + * PyErr_SetObject(SelectolaxError, "Can't parse HTML.") + * return -1 +*/ + __pyx_t_1 = (__pyx_v_status != LXB_STATUS_OK); + if (__pyx_t_1) { + + /* "selectolax/lexbor.pyx":116 + * + * if status != LXB_STATUS_OK: + * PyErr_SetObject(SelectolaxError, "Can't parse HTML.") # <<<<<<<<<<<<<< + * return -1 + * +*/ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_SelectolaxError); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 116, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + PyErr_SetObject(__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_Can_t_parse_HTML); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "selectolax/lexbor.pyx":117 + * if status != LXB_STATUS_OK: + * PyErr_SetObject(SelectolaxError, "Can't parse HTML.") + * return -1 # <<<<<<<<<<<<<< + * + * if self.document == NULL: +*/ + __pyx_r = -1; + goto __pyx_L0; + + /* "selectolax/lexbor.pyx":115 + * status = self._parse_html_document(html, html_len) + * + * if status != LXB_STATUS_OK: # <<<<<<<<<<<<<< + * PyErr_SetObject(SelectolaxError, "Can't parse HTML.") + * return -1 +*/ + } + + /* "selectolax/lexbor.pyx":119 + * return -1 + * + * if self.document == NULL: # <<<<<<<<<<<<<< + * PyErr_SetObject(RuntimeError, "document is NULL even after html was parsed correctly") + * return -1 +*/ + __pyx_t_1 = (__pyx_v_self->document == NULL); + if (__pyx_t_1) { + + /* "selectolax/lexbor.pyx":120 + * + * if self.document == NULL: + * PyErr_SetObject(RuntimeError, "document is NULL even after html was parsed correctly") # <<<<<<<<<<<<<< + * return -1 + * return 0 +*/ + PyErr_SetObject(((PyObject *)(((PyTypeObject*)PyExc_RuntimeError))), __pyx_mstate_global->__pyx_kp_u_document_is_NULL_even_after_html); + + /* "selectolax/lexbor.pyx":121 + * if self.document == NULL: + * PyErr_SetObject(RuntimeError, "document is NULL even after html was parsed correctly") + * return -1 # <<<<<<<<<<<<<< + * return 0 + * +*/ + __pyx_r = -1; + goto __pyx_L0; + + /* "selectolax/lexbor.pyx":119 + * return -1 + * + * if self.document == NULL: # <<<<<<<<<<<<<< + * PyErr_SetObject(RuntimeError, "document is NULL even after html was parsed correctly") + * return -1 +*/ + } + + /* "selectolax/lexbor.pyx":122 + * PyErr_SetObject(RuntimeError, "document is NULL even after html was parsed correctly") + * return -1 + * return 0 # <<<<<<<<<<<<<< + * + * cdef inline lxb_status_t _parse_html_document(self, char *html, size_t html_len) nogil: +*/ + __pyx_r = 0; + goto __pyx_L0; + + /* "selectolax/lexbor.pyx":82 + * PyErr_SetObject(SelectolaxError, "Failed to initialize object for HTML Document.") + * + * cdef int _parse_html(self, char *html, size_t html_len) except -1: # <<<<<<<<<<<<<< + * """Parse HTML content into the internal document. + * +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("selectolax.lexbor.LexborHTMLParser._parse_html", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor.pyx":124 + * return 0 + * + * cdef inline lxb_status_t _parse_html_document(self, char *html, size_t html_len) nogil: # <<<<<<<<<<<<<< + * """Parse HTML as a full HTML document. + * If the input is only a fragment, the parser still accepts it and inserts any missing required elements, +*/ + +static CYTHON_INLINE lxb_status_t __pyx_f_10selectolax_6lexbor_16LexborHTMLParser__parse_html_document(struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *__pyx_v_self, char *__pyx_v_html, size_t __pyx_v_html_len) { + lxb_status_t __pyx_r; + + /* "selectolax/lexbor.pyx":143 + * Lexbor status code produced by ``lxb_html_document_parse``. + * """ + * return lxb_html_document_parse(self.document, html, html_len) # <<<<<<<<<<<<<< + * + * cdef inline lxb_status_t _parse_html_fragment(self, char *html, size_t html_len) nogil: +*/ + __pyx_r = lxb_html_document_parse(__pyx_v_self->document, ((lxb_char_t *)__pyx_v_html), __pyx_v_html_len); + goto __pyx_L0; + + /* "selectolax/lexbor.pyx":124 + * return 0 + * + * cdef inline lxb_status_t _parse_html_document(self, char *html, size_t html_len) nogil: # <<<<<<<<<<<<<< + * """Parse HTML as a full HTML document. + * If the input is only a fragment, the parser still accepts it and inserts any missing required elements, +*/ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "selectolax/lexbor.pyx":145 + * return lxb_html_document_parse(self.document, html, html_len) + * + * cdef inline lxb_status_t _parse_html_fragment(self, char *html, size_t html_len) nogil: # <<<<<<<<<<<<<< + * """Parse HTML as an HTML fragment. + * The parser does not insert any missing required HTML elements. +*/ + +static CYTHON_INLINE lxb_status_t __pyx_f_10selectolax_6lexbor_16LexborHTMLParser__parse_html_fragment(struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *__pyx_v_self, char *__pyx_v_html, size_t __pyx_v_html_len) { + lxb_char_t const *__pyx_v_dummy_root_name; + size_t __pyx_v_dummy_root_len; + lxb_html_element_t *__pyx_v_dummy_root; + lxb_dom_node_t *__pyx_v_fragment_html_node; + lxb_status_t __pyx_r; + int __pyx_t_1; + + /* "selectolax/lexbor.pyx":161 + * Lexbor status code; ``LXB_STATUS_OK`` when parsing the fragment succeeded. + * """ + * cdef const lxb_char_t *dummy_root_name = "" # <<<<<<<<<<<<<< + * cdef size_t dummy_root_len = 0 + * cdef lxb_html_element_t *dummy_root = NULL +*/ + __pyx_v_dummy_root_name = ((lxb_char_t const *)((lxb_char_t const *)__pyx_k_)); + + /* "selectolax/lexbor.pyx":162 + * """ + * cdef const lxb_char_t *dummy_root_name = "" + * cdef size_t dummy_root_len = 0 # <<<<<<<<<<<<<< + * cdef lxb_html_element_t *dummy_root = NULL + * cdef lxb_dom_node_t *fragment_html_node = NULL +*/ + __pyx_v_dummy_root_len = 0; + + /* "selectolax/lexbor.pyx":163 + * cdef const lxb_char_t *dummy_root_name = "" + * cdef size_t dummy_root_len = 0 + * cdef lxb_html_element_t *dummy_root = NULL # <<<<<<<<<<<<<< + * cdef lxb_dom_node_t *fragment_html_node = NULL + * +*/ + __pyx_v_dummy_root = NULL; + + /* "selectolax/lexbor.pyx":164 + * cdef size_t dummy_root_len = 0 + * cdef lxb_html_element_t *dummy_root = NULL + * cdef lxb_dom_node_t *fragment_html_node = NULL # <<<<<<<<<<<<<< + * + * dummy_root = lxb_html_document_create_element( +*/ + __pyx_v_fragment_html_node = NULL; + + /* "selectolax/lexbor.pyx":166 + * cdef lxb_dom_node_t *fragment_html_node = NULL + * + * dummy_root = lxb_html_document_create_element( # <<<<<<<<<<<<<< + * self.document, + * dummy_root_name, +*/ + __pyx_v_dummy_root = lxb_html_document_create_element(__pyx_v_self->document, __pyx_v_dummy_root_name, __pyx_v_dummy_root_len, NULL); + + /* "selectolax/lexbor.pyx":172 + * NULL + * ) + * if dummy_root == NULL: # <<<<<<<<<<<<<< + * return LXB_STATUS_ERROR + * fragment_html_node = lxb_html_document_parse_fragment( +*/ + __pyx_t_1 = (__pyx_v_dummy_root == NULL); + if (__pyx_t_1) { + + /* "selectolax/lexbor.pyx":173 + * ) + * if dummy_root == NULL: + * return LXB_STATUS_ERROR # <<<<<<<<<<<<<< + * fragment_html_node = lxb_html_document_parse_fragment( + * self.document, +*/ + __pyx_r = LXB_STATUS_ERROR; + goto __pyx_L0; + + /* "selectolax/lexbor.pyx":172 + * NULL + * ) + * if dummy_root == NULL: # <<<<<<<<<<<<<< + * return LXB_STATUS_ERROR + * fragment_html_node = lxb_html_document_parse_fragment( +*/ + } + + /* "selectolax/lexbor.pyx":174 + * if dummy_root == NULL: + * return LXB_STATUS_ERROR + * fragment_html_node = lxb_html_document_parse_fragment( # <<<<<<<<<<<<<< + * self.document, + * dummy_root, +*/ + __pyx_v_fragment_html_node = lxb_html_document_parse_fragment(__pyx_v_self->document, ((lxb_dom_element_t *)__pyx_v_dummy_root), ((lxb_char_t *)__pyx_v_html), __pyx_v_html_len); + + /* "selectolax/lexbor.pyx":180 + * html_len + * ) + * if fragment_html_node == NULL: # <<<<<<<<<<<<<< + * return LXB_STATUS_ERROR + * +*/ + __pyx_t_1 = (__pyx_v_fragment_html_node == NULL); + if (__pyx_t_1) { + + /* "selectolax/lexbor.pyx":181 + * ) + * if fragment_html_node == NULL: + * return LXB_STATUS_ERROR # <<<<<<<<<<<<<< + * + * self._fragment_document = fragment_html_node +*/ + __pyx_r = LXB_STATUS_ERROR; + goto __pyx_L0; + + /* "selectolax/lexbor.pyx":180 + * html_len + * ) + * if fragment_html_node == NULL: # <<<<<<<<<<<<<< + * return LXB_STATUS_ERROR + * +*/ + } + + /* "selectolax/lexbor.pyx":183 + * return LXB_STATUS_ERROR + * + * self._fragment_document = fragment_html_node # <<<<<<<<<<<<<< + * return LXB_STATUS_OK + * +*/ + __pyx_v_self->_fragment_document = ((lxb_html_document_t *)__pyx_v_fragment_html_node); + + /* "selectolax/lexbor.pyx":184 + * + * self._fragment_document = fragment_html_node + * return LXB_STATUS_OK # <<<<<<<<<<<<<< + * + * def __dealloc__(self): +*/ + __pyx_r = LXB_STATUS_OK; + goto __pyx_L0; + + /* "selectolax/lexbor.pyx":145 + * return lxb_html_document_parse(self.document, html, html_len) + * + * cdef inline lxb_status_t _parse_html_fragment(self, char *html, size_t html_len) nogil: # <<<<<<<<<<<<<< + * """Parse HTML as an HTML fragment. + * The parser does not insert any missing required HTML elements. +*/ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "selectolax/lexbor.pyx":186 + * return LXB_STATUS_OK + * + * def __dealloc__(self): # <<<<<<<<<<<<<< + * """Release the underlying Lexbor HTML document. + * +*/ + +/* Python wrapper */ +static void __pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_3__dealloc__(PyObject *__pyx_v_self); /*proto*/ +static void __pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_3__dealloc__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_pf_10selectolax_6lexbor_16LexborHTMLParser_2__dealloc__(((struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); +} + +static void __pyx_pf_10selectolax_6lexbor_16LexborHTMLParser_2__dealloc__(struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *__pyx_v_self) { + int __pyx_t_1; + + /* "selectolax/lexbor.pyx":198 + * freed. + * """ + * if self._fragment_document != NULL: # <<<<<<<<<<<<<< + * lxb_html_document_destroy(self._fragment_document) + * if self.document != NULL: +*/ + __pyx_t_1 = (__pyx_v_self->_fragment_document != NULL); + if (__pyx_t_1) { + + /* "selectolax/lexbor.pyx":199 + * """ + * if self._fragment_document != NULL: + * lxb_html_document_destroy(self._fragment_document) # <<<<<<<<<<<<<< + * if self.document != NULL: + * lxb_html_document_destroy(self.document) +*/ + (void)(lxb_html_document_destroy(__pyx_v_self->_fragment_document)); + + /* "selectolax/lexbor.pyx":198 + * freed. + * """ + * if self._fragment_document != NULL: # <<<<<<<<<<<<<< + * lxb_html_document_destroy(self._fragment_document) + * if self.document != NULL: +*/ + } + + /* "selectolax/lexbor.pyx":200 + * if self._fragment_document != NULL: + * lxb_html_document_destroy(self._fragment_document) + * if self.document != NULL: # <<<<<<<<<<<<<< + * lxb_html_document_destroy(self.document) + * +*/ + __pyx_t_1 = (__pyx_v_self->document != NULL); + if (__pyx_t_1) { + + /* "selectolax/lexbor.pyx":201 + * lxb_html_document_destroy(self._fragment_document) + * if self.document != NULL: + * lxb_html_document_destroy(self.document) # <<<<<<<<<<<<<< + * + * def __repr__(self): +*/ + (void)(lxb_html_document_destroy(__pyx_v_self->document)); + + /* "selectolax/lexbor.pyx":200 + * if self._fragment_document != NULL: + * lxb_html_document_destroy(self._fragment_document) + * if self.document != NULL: # <<<<<<<<<<<<<< + * lxb_html_document_destroy(self.document) + * +*/ + } + + /* "selectolax/lexbor.pyx":186 + * return LXB_STATUS_OK + * + * def __dealloc__(self): # <<<<<<<<<<<<<< + * """Release the underlying Lexbor HTML document. + * +*/ + + /* function exit code */ +} + +/* "selectolax/lexbor.pyx":203 + * lxb_html_document_destroy(self.document) + * + * def __repr__(self): # <<<<<<<<<<<<<< + * """Return a concise representation of the parsed document. + * +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_5__repr__(PyObject *__pyx_v_self); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6lexbor_16LexborHTMLParser_4__repr__, "LexborHTMLParser.__repr__(self)\n\nReturn a concise representation of the parsed document.\n\nReturns\n-------\nstr\n A string showing the number of characters in the parsed HTML."); +#if CYTHON_UPDATE_DESCRIPTOR_DOC +struct wrapperbase __pyx_wrapperbase_10selectolax_6lexbor_16LexborHTMLParser_4__repr__; +#endif +static PyObject *__pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_5__repr__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6lexbor_16LexborHTMLParser_4__repr__(((struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_16LexborHTMLParser_4__repr__(struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *__pyx_v_self) { + Py_ssize_t __pyx_v_html_len; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + int __pyx_t_3; + PyObject *__pyx_t_4 = NULL; + Py_ssize_t __pyx_t_5; + PyObject *__pyx_t_6[3]; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__repr__", 0); + + /* "selectolax/lexbor.pyx":211 + * A string showing the number of characters in the parsed HTML. + * """ + * html_len = len(self.root.html if self.root is not None else "") # <<<<<<<<<<<<<< + * return f"" + * +*/ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_root); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 211, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = (__pyx_t_2 != Py_None); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (__pyx_t_3) { + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_root); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 211, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_html); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 211, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_1 = __pyx_t_4; + __pyx_t_4 = 0; + } else { + __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u_); + __pyx_t_1 = __pyx_mstate_global->__pyx_kp_u_; + } + __pyx_t_5 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(0, 211, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v_html_len = __pyx_t_5; + + /* "selectolax/lexbor.pyx":212 + * """ + * html_len = len(self.root.html if self.root is not None else "") + * return f"" # <<<<<<<<<<<<<< + * + * @property +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_v_html_len, 0, ' ', 'd'); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 212, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_6[0] = __pyx_mstate_global->__pyx_kp_u_LexborHTMLParser_chars; + __pyx_t_6[1] = __pyx_t_1; + __pyx_t_6[2] = __pyx_mstate_global->__pyx_kp_u__9; + __pyx_t_4 = __Pyx_PyUnicode_Join(__pyx_t_6, 3, 25 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_1) + 2, 127); + if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 212, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_r = __pyx_t_4; + __pyx_t_4 = 0; + goto __pyx_L0; + + /* "selectolax/lexbor.pyx":203 + * lxb_html_document_destroy(self.document) + * + * def __repr__(self): # <<<<<<<<<<<<<< + * """Return a concise representation of the parsed document. + * +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("selectolax.lexbor.LexborHTMLParser.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor.pyx":214 + * return f"" + * + * @property # <<<<<<<<<<<<<< + * def selector(self): + * """Return a lazily created CSS selector helper. +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_8selector_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_8selector_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6lexbor_16LexborHTMLParser_8selector___get__(((struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_16LexborHTMLParser_8selector___get__(struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + size_t __pyx_t_4; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + + /* "selectolax/lexbor.pyx":223 + * Selector instance bound to this parser. + * """ + * if self._selector is None: # <<<<<<<<<<<<<< + * self._selector = LexborCSSSelector() + * return self._selector +*/ + __pyx_t_1 = (((PyObject *)__pyx_v_self->_selector) == Py_None); + if (__pyx_t_1) { + + /* "selectolax/lexbor.pyx":224 + * """ + * if self._selector is None: + * self._selector = LexborCSSSelector() # <<<<<<<<<<<<<< + * return self._selector + * +*/ + __pyx_t_3 = NULL; + __pyx_t_4 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL}; + __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborCSSSelector, __pyx_callargs+__pyx_t_4, (1-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 224, __pyx_L1_error) + __Pyx_GOTREF((PyObject *)__pyx_t_2); + } + __Pyx_GIVEREF((PyObject *)__pyx_t_2); + __Pyx_GOTREF((PyObject *)__pyx_v_self->_selector); + __Pyx_DECREF((PyObject *)__pyx_v_self->_selector); + __pyx_v_self->_selector = ((struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector *)__pyx_t_2); + __pyx_t_2 = 0; + + /* "selectolax/lexbor.pyx":223 + * Selector instance bound to this parser. + * """ + * if self._selector is None: # <<<<<<<<<<<<<< + * self._selector = LexborCSSSelector() + * return self._selector +*/ + } + + /* "selectolax/lexbor.pyx":225 + * if self._selector is None: + * self._selector = LexborCSSSelector() + * return self._selector # <<<<<<<<<<<<<< + * + * @property +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF((PyObject *)__pyx_v_self->_selector); + __pyx_r = ((PyObject *)__pyx_v_self->_selector); + goto __pyx_L0; + + /* "selectolax/lexbor.pyx":214 + * return f"" + * + * @property # <<<<<<<<<<<<<< + * def selector(self): + * """Return a lazily created CSS selector helper. +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("selectolax.lexbor.LexborHTMLParser.selector.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor.pyx":227 + * return self._selector + * + * @property # <<<<<<<<<<<<<< + * def root(self): + * """Return the document root node. +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_4root_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_4root_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6lexbor_16LexborHTMLParser_4root___get__(((struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_16LexborHTMLParser_4root___get__(struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *__pyx_v_self) { + struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_node = 0; + lxb_dom_node_t *__pyx_v_dom_root; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + + /* "selectolax/lexbor.pyx":236 + * Root of the parsed document, or ``None`` if unavailable. + * """ + * if self.document == NULL: # <<<<<<<<<<<<<< + * return None + * cdef LexborNode node +*/ + __pyx_t_1 = (__pyx_v_self->document == NULL); + if (__pyx_t_1) { + + /* "selectolax/lexbor.pyx":237 + * """ + * if self.document == NULL: + * return None # <<<<<<<<<<<<<< + * cdef LexborNode node + * cdef lxb_dom_node_t* dom_root +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + + /* "selectolax/lexbor.pyx":236 + * Root of the parsed document, or ``None`` if unavailable. + * """ + * if self.document == NULL: # <<<<<<<<<<<<<< + * return None + * cdef LexborNode node +*/ + } + + /* "selectolax/lexbor.pyx":240 + * cdef LexborNode node + * cdef lxb_dom_node_t* dom_root + * if self._is_fragment and self._fragment_document != NULL: # <<<<<<<<<<<<<< + * dom_root = lxb_dom_document_root(&self._fragment_document.dom_document) + * else: +*/ + if (__pyx_v_self->_is_fragment) { + } else { + __pyx_t_1 = __pyx_v_self->_is_fragment; + goto __pyx_L5_bool_binop_done; + } + __pyx_t_2 = (__pyx_v_self->_fragment_document != NULL); + __pyx_t_1 = __pyx_t_2; + __pyx_L5_bool_binop_done:; + if (__pyx_t_1) { + + /* "selectolax/lexbor.pyx":241 + * cdef lxb_dom_node_t* dom_root + * if self._is_fragment and self._fragment_document != NULL: + * dom_root = lxb_dom_document_root(&self._fragment_document.dom_document) # <<<<<<<<<<<<<< + * else: + * dom_root = lxb_dom_document_root(&self.document.dom_document) +*/ + __pyx_v_dom_root = lxb_dom_document_root((&__pyx_v_self->_fragment_document->dom_document)); + + /* "selectolax/lexbor.pyx":240 + * cdef LexborNode node + * cdef lxb_dom_node_t* dom_root + * if self._is_fragment and self._fragment_document != NULL: # <<<<<<<<<<<<<< + * dom_root = lxb_dom_document_root(&self._fragment_document.dom_document) + * else: +*/ + goto __pyx_L4; + } + + /* "selectolax/lexbor.pyx":243 + * dom_root = lxb_dom_document_root(&self._fragment_document.dom_document) + * else: + * dom_root = lxb_dom_document_root(&self.document.dom_document) # <<<<<<<<<<<<<< + * if dom_root == NULL: + * return None +*/ + /*else*/ { + __pyx_v_dom_root = lxb_dom_document_root((&__pyx_v_self->document->dom_document)); + } + __pyx_L4:; + + /* "selectolax/lexbor.pyx":244 + * else: + * dom_root = lxb_dom_document_root(&self.document.dom_document) + * if dom_root == NULL: # <<<<<<<<<<<<<< + * return None + * node = LexborNode.new(dom_root, self) +*/ + __pyx_t_1 = (__pyx_v_dom_root == NULL); + if (__pyx_t_1) { + + /* "selectolax/lexbor.pyx":245 + * dom_root = lxb_dom_document_root(&self.document.dom_document) + * if dom_root == NULL: + * return None # <<<<<<<<<<<<<< + * node = LexborNode.new(dom_root, self) + * if self._is_fragment: +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + + /* "selectolax/lexbor.pyx":244 + * else: + * dom_root = lxb_dom_document_root(&self.document.dom_document) + * if dom_root == NULL: # <<<<<<<<<<<<<< + * return None + * node = LexborNode.new(dom_root, self) +*/ + } + + /* "selectolax/lexbor.pyx":246 + * if dom_root == NULL: + * return None + * node = LexborNode.new(dom_root, self) # <<<<<<<<<<<<<< + * if self._is_fragment: + * node.set_as_fragment_root() +*/ + __pyx_t_3 = ((PyObject *)__pyx_f_10selectolax_6lexbor_10LexborNode_new(__pyx_v_dom_root, __pyx_v_self)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 246, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_v_node = ((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/lexbor.pyx":247 + * return None + * node = LexborNode.new(dom_root, self) + * if self._is_fragment: # <<<<<<<<<<<<<< + * node.set_as_fragment_root() + * return node +*/ + if (__pyx_v_self->_is_fragment) { + + /* "selectolax/lexbor.pyx":248 + * node = LexborNode.new(dom_root, self) + * if self._is_fragment: + * node.set_as_fragment_root() # <<<<<<<<<<<<<< + * return node + * +*/ + __pyx_f_10selectolax_6lexbor_10LexborNode_set_as_fragment_root(__pyx_v_node); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 248, __pyx_L1_error) + + /* "selectolax/lexbor.pyx":247 + * return None + * node = LexborNode.new(dom_root, self) + * if self._is_fragment: # <<<<<<<<<<<<<< + * node.set_as_fragment_root() + * return node +*/ + } + + /* "selectolax/lexbor.pyx":249 + * if self._is_fragment: + * node.set_as_fragment_root() + * return node # <<<<<<<<<<<<<< + * + * @property +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF((PyObject *)__pyx_v_node); + __pyx_r = ((PyObject *)__pyx_v_node); + goto __pyx_L0; + + /* "selectolax/lexbor.pyx":227 + * return self._selector + * + * @property # <<<<<<<<<<<<<< + * def root(self): + * """Return the document root node. +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("selectolax.lexbor.LexborHTMLParser.root.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF((PyObject *)__pyx_v_node); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor.pyx":251 + * return node + * + * @property # <<<<<<<<<<<<<< + * def body(self): + * """Return document body. +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_4body_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_4body_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6lexbor_16LexborHTMLParser_4body___get__(((struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_16LexborHTMLParser_4body___get__(struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *__pyx_v_self) { + lxb_html_body_element_t *__pyx_v_body; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + + /* "selectolax/lexbor.pyx":261 + * """ + * cdef lxb_html_body_element_t* body + * body = lxb_html_document_body_element_noi(self.document) # <<<<<<<<<<<<<< + * if body == NULL: + * return None +*/ + __pyx_v_body = lxb_html_document_body_element_noi(__pyx_v_self->document); + + /* "selectolax/lexbor.pyx":262 + * cdef lxb_html_body_element_t* body + * body = lxb_html_document_body_element_noi(self.document) + * if body == NULL: # <<<<<<<<<<<<<< + * return None + * return LexborNode.new( body, self) +*/ + __pyx_t_1 = (__pyx_v_body == NULL); + if (__pyx_t_1) { + + /* "selectolax/lexbor.pyx":263 + * body = lxb_html_document_body_element_noi(self.document) + * if body == NULL: + * return None # <<<<<<<<<<<<<< + * return LexborNode.new( body, self) + * +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + + /* "selectolax/lexbor.pyx":262 + * cdef lxb_html_body_element_t* body + * body = lxb_html_document_body_element_noi(self.document) + * if body == NULL: # <<<<<<<<<<<<<< + * return None + * return LexborNode.new( body, self) +*/ + } + + /* "selectolax/lexbor.pyx":264 + * if body == NULL: + * return None + * return LexborNode.new( body, self) # <<<<<<<<<<<<<< + * + * @property +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_2 = ((PyObject *)__pyx_f_10selectolax_6lexbor_10LexborNode_new(((lxb_dom_node_t *)__pyx_v_body), __pyx_v_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 264, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; + + /* "selectolax/lexbor.pyx":251 + * return node + * + * @property # <<<<<<<<<<<<<< + * def body(self): + * """Return document body. +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("selectolax.lexbor.LexborHTMLParser.body.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor.pyx":266 + * return LexborNode.new( body, self) + * + * @property # <<<<<<<<<<<<<< + * def head(self): + * """Return document head. +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_4head_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_4head_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6lexbor_16LexborHTMLParser_4head___get__(((struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_16LexborHTMLParser_4head___get__(struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *__pyx_v_self) { + lxb_html_head_element_t *__pyx_v_head; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + + /* "selectolax/lexbor.pyx":276 + * """ + * cdef lxb_html_head_element_t* head + * head = lxb_html_document_head_element_noi(self.document) # <<<<<<<<<<<<<< + * if head == NULL: + * return None +*/ + __pyx_v_head = lxb_html_document_head_element_noi(__pyx_v_self->document); + + /* "selectolax/lexbor.pyx":277 + * cdef lxb_html_head_element_t* head + * head = lxb_html_document_head_element_noi(self.document) + * if head == NULL: # <<<<<<<<<<<<<< + * return None + * return LexborNode.new( head, self) +*/ + __pyx_t_1 = (__pyx_v_head == NULL); + if (__pyx_t_1) { + + /* "selectolax/lexbor.pyx":278 + * head = lxb_html_document_head_element_noi(self.document) + * if head == NULL: + * return None # <<<<<<<<<<<<<< + * return LexborNode.new( head, self) + * +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + + /* "selectolax/lexbor.pyx":277 + * cdef lxb_html_head_element_t* head + * head = lxb_html_document_head_element_noi(self.document) + * if head == NULL: # <<<<<<<<<<<<<< + * return None + * return LexborNode.new( head, self) +*/ + } + + /* "selectolax/lexbor.pyx":279 + * if head == NULL: + * return None + * return LexborNode.new( head, self) # <<<<<<<<<<<<<< + * + * def tags(self, str name): +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_2 = ((PyObject *)__pyx_f_10selectolax_6lexbor_10LexborNode_new(((lxb_dom_node_t *)__pyx_v_head), __pyx_v_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 279, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; + + /* "selectolax/lexbor.pyx":266 + * return LexborNode.new( body, self) + * + * @property # <<<<<<<<<<<<<< + * def head(self): + * """Return document head. +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("selectolax.lexbor.LexborHTMLParser.head.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor.pyx":281 + * return LexborNode.new( head, self) + * + * def tags(self, str name): # <<<<<<<<<<<<<< + * """Return all tags that match the provided name. + * +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_7tags(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6lexbor_16LexborHTMLParser_6tags, "LexborHTMLParser.tags(self, str name)\n\nReturn all tags that match the provided name.\n\nParameters\n----------\nname : str\n Tag name to search for (e.g., ``\"div\"``).\n\nReturns\n-------\nlist of LexborNode\n Matching elements in document order.\n\nRaises\n------\nValueError\n If ``name`` is empty or longer than 100 characters.\nSelectolaxError\n If Lexbor cannot locate the elements."); +static PyMethodDef __pyx_mdef_10selectolax_6lexbor_16LexborHTMLParser_7tags = {"tags", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_7tags, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_16LexborHTMLParser_6tags}; +static PyObject *__pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_7tags(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_name = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("tags (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_name_2,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 281, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 281, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "tags", 0) < (0)) __PYX_ERR(0, 281, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("tags", 1, 1, 1, i); __PYX_ERR(0, 281, __pyx_L3_error) } + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 281, __pyx_L3_error) + } + __pyx_v_name = ((PyObject*)values[0]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("tags", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 281, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.lexbor.LexborHTMLParser.tags", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyUnicode_Type), 1, "name", 1))) __PYX_ERR(0, 281, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6lexbor_16LexborHTMLParser_6tags(((struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *)__pyx_v_self), __pyx_v_name); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_16LexborHTMLParser_6tags(struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *__pyx_v_self, PyObject *__pyx_v_name) { + lxb_dom_collection_t *__pyx_v_collection; + lxb_status_t __pyx_v_status; + PyObject *__pyx_v_pybyte_name = NULL; + PyObject *__pyx_v_result = NULL; + size_t __pyx_v_i; + struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_node = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + size_t __pyx_t_5; + Py_ssize_t __pyx_t_6; + lxb_char_t *__pyx_t_7; + PyObject *__pyx_t_8 = NULL; + size_t __pyx_t_9; + size_t __pyx_t_10; + int __pyx_t_11; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("tags", 0); + + /* "selectolax/lexbor.pyx":302 + * """ + * + * if not name: # <<<<<<<<<<<<<< + * raise ValueError("Tag name cannot be empty") + * if len(name) > 100: +*/ + if (__pyx_v_name == Py_None) __pyx_t_1 = 0; + else + { + Py_ssize_t __pyx_temp = __Pyx_PyUnicode_IS_TRUE(__pyx_v_name); + if (unlikely(((!CYTHON_ASSUME_SAFE_SIZE) && __pyx_temp < 0))) __PYX_ERR(0, 302, __pyx_L1_error) + __pyx_t_1 = (__pyx_temp != 0); + } + + __pyx_t_2 = (!__pyx_t_1); + if (unlikely(__pyx_t_2)) { + + /* "selectolax/lexbor.pyx":303 + * + * if not name: + * raise ValueError("Tag name cannot be empty") # <<<<<<<<<<<<<< + * if len(name) > 100: + * raise ValueError("Tag name is too long") +*/ + __pyx_t_4 = NULL; + __pyx_t_5 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_Tag_name_cannot_be_empty}; + __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 303, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(0, 303, __pyx_L1_error) + + /* "selectolax/lexbor.pyx":302 + * """ + * + * if not name: # <<<<<<<<<<<<<< + * raise ValueError("Tag name cannot be empty") + * if len(name) > 100: +*/ + } + + /* "selectolax/lexbor.pyx":304 + * if not name: + * raise ValueError("Tag name cannot be empty") + * if len(name) > 100: # <<<<<<<<<<<<<< + * raise ValueError("Tag name is too long") + * +*/ + if (unlikely(__pyx_v_name == Py_None)) { + PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); + __PYX_ERR(0, 304, __pyx_L1_error) + } + __pyx_t_6 = __Pyx_PyUnicode_GET_LENGTH(__pyx_v_name); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 304, __pyx_L1_error) + __pyx_t_2 = (__pyx_t_6 > 0x64); + if (unlikely(__pyx_t_2)) { + + /* "selectolax/lexbor.pyx":305 + * raise ValueError("Tag name cannot be empty") + * if len(name) > 100: + * raise ValueError("Tag name is too long") # <<<<<<<<<<<<<< + * + * cdef lxb_dom_collection_t* collection = NULL +*/ + __pyx_t_4 = NULL; + __pyx_t_5 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_Tag_name_is_too_long}; + __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 305, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(0, 305, __pyx_L1_error) + + /* "selectolax/lexbor.pyx":304 + * if not name: + * raise ValueError("Tag name cannot be empty") + * if len(name) > 100: # <<<<<<<<<<<<<< + * raise ValueError("Tag name is too long") + * +*/ + } + + /* "selectolax/lexbor.pyx":307 + * raise ValueError("Tag name is too long") + * + * cdef lxb_dom_collection_t* collection = NULL # <<<<<<<<<<<<<< + * cdef lxb_status_t status + * pybyte_name = name.encode('UTF-8') +*/ + __pyx_v_collection = NULL; + + /* "selectolax/lexbor.pyx":309 + * cdef lxb_dom_collection_t* collection = NULL + * cdef lxb_status_t status + * pybyte_name = name.encode('UTF-8') # <<<<<<<<<<<<<< + * + * result = list() +*/ + if (unlikely(__pyx_v_name == Py_None)) { + PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "encode"); + __PYX_ERR(0, 309, __pyx_L1_error) + } + __pyx_t_3 = PyUnicode_AsUTF8String(__pyx_v_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 309, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_v_pybyte_name = ((PyObject*)__pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/lexbor.pyx":311 + * pybyte_name = name.encode('UTF-8') + * + * result = list() # <<<<<<<<<<<<<< + * collection = lxb_dom_collection_make(&self.document.dom_document, 128) + * +*/ + __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 311, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_v_result = ((PyObject*)__pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/lexbor.pyx":312 + * + * result = list() + * collection = lxb_dom_collection_make(&self.document.dom_document, 128) # <<<<<<<<<<<<<< + * + * if collection == NULL: +*/ + __pyx_v_collection = lxb_dom_collection_make((&__pyx_v_self->document->dom_document), 0x80); + + /* "selectolax/lexbor.pyx":314 + * collection = lxb_dom_collection_make(&self.document.dom_document, 128) + * + * if collection == NULL: # <<<<<<<<<<<<<< + * return result + * status = lxb_dom_elements_by_tag_name( +*/ + __pyx_t_2 = (__pyx_v_collection == NULL); + if (__pyx_t_2) { + + /* "selectolax/lexbor.pyx":315 + * + * if collection == NULL: + * return result # <<<<<<<<<<<<<< + * status = lxb_dom_elements_by_tag_name( + * self.document, +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_result); + __pyx_r = __pyx_v_result; + goto __pyx_L0; + + /* "selectolax/lexbor.pyx":314 + * collection = lxb_dom_collection_make(&self.document.dom_document, 128) + * + * if collection == NULL: # <<<<<<<<<<<<<< + * return result + * status = lxb_dom_elements_by_tag_name( +*/ + } + + /* "selectolax/lexbor.pyx":319 + * self.document, + * collection, + * pybyte_name, # <<<<<<<<<<<<<< + * len(pybyte_name) + * ) +*/ + __pyx_t_7 = __Pyx_PyBytes_AsWritableUString(__pyx_v_pybyte_name); if (unlikely((!__pyx_t_7) && PyErr_Occurred())) __PYX_ERR(0, 319, __pyx_L1_error) + + /* "selectolax/lexbor.pyx":320 + * collection, + * pybyte_name, + * len(pybyte_name) # <<<<<<<<<<<<<< + * ) + * if status != 0x0000: +*/ + __pyx_t_6 = __Pyx_PyBytes_GET_SIZE(__pyx_v_pybyte_name); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 320, __pyx_L1_error) + + /* "selectolax/lexbor.pyx":316 + * if collection == NULL: + * return result + * status = lxb_dom_elements_by_tag_name( # <<<<<<<<<<<<<< + * self.document, + * collection, +*/ + __pyx_v_status = lxb_dom_elements_by_tag_name(((lxb_dom_element_t *)__pyx_v_self->document), __pyx_v_collection, ((lxb_char_t *)__pyx_t_7), __pyx_t_6); + + /* "selectolax/lexbor.pyx":322 + * len(pybyte_name) + * ) + * if status != 0x0000: # <<<<<<<<<<<<<< + * lxb_dom_collection_destroy(collection, True) + * raise SelectolaxError("Can't locate elements.") +*/ + __pyx_t_2 = (__pyx_v_status != 0x0000); + if (unlikely(__pyx_t_2)) { + + /* "selectolax/lexbor.pyx":323 + * ) + * if status != 0x0000: + * lxb_dom_collection_destroy(collection, True) # <<<<<<<<<<<<<< + * raise SelectolaxError("Can't locate elements.") + * +*/ + (void)(lxb_dom_collection_destroy(__pyx_v_collection, 1)); + + /* "selectolax/lexbor.pyx":324 + * if status != 0x0000: + * lxb_dom_collection_destroy(collection, True) + * raise SelectolaxError("Can't locate elements.") # <<<<<<<<<<<<<< + * + * for i in range(lxb_dom_collection_length_noi(collection)): +*/ + __pyx_t_4 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_SelectolaxError); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 324, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_5 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_8))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_8); + assert(__pyx_t_4); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_8); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_8, __pyx__function); + __pyx_t_5 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_Can_t_locate_elements}; + __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_8, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 324, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(0, 324, __pyx_L1_error) + + /* "selectolax/lexbor.pyx":322 + * len(pybyte_name) + * ) + * if status != 0x0000: # <<<<<<<<<<<<<< + * lxb_dom_collection_destroy(collection, True) + * raise SelectolaxError("Can't locate elements.") +*/ + } + + /* "selectolax/lexbor.pyx":326 + * raise SelectolaxError("Can't locate elements.") + * + * for i in range(lxb_dom_collection_length_noi(collection)): # <<<<<<<<<<<<<< + * node = LexborNode.new( + * lxb_dom_collection_element_noi(collection, i), +*/ + __pyx_t_5 = lxb_dom_collection_length_noi(__pyx_v_collection); + __pyx_t_9 = __pyx_t_5; + for (__pyx_t_10 = 0; __pyx_t_10 < __pyx_t_9; __pyx_t_10+=1) { + __pyx_v_i = __pyx_t_10; + + /* "selectolax/lexbor.pyx":327 + * + * for i in range(lxb_dom_collection_length_noi(collection)): + * node = LexborNode.new( # <<<<<<<<<<<<<< + * lxb_dom_collection_element_noi(collection, i), + * self +*/ + __pyx_t_3 = ((PyObject *)__pyx_f_10selectolax_6lexbor_10LexborNode_new(((lxb_dom_node_t *)lxb_dom_collection_element_noi(__pyx_v_collection, __pyx_v_i)), __pyx_v_self)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 327, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_XDECREF_SET(__pyx_v_node, ((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_t_3)); + __pyx_t_3 = 0; + + /* "selectolax/lexbor.pyx":331 + * self + * ) + * result.append(node) # <<<<<<<<<<<<<< + * lxb_dom_collection_destroy(collection, True) + * return result +*/ + __pyx_t_11 = __Pyx_PyList_Append(__pyx_v_result, ((PyObject *)__pyx_v_node)); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(0, 331, __pyx_L1_error) + } + + /* "selectolax/lexbor.pyx":332 + * ) + * result.append(node) + * lxb_dom_collection_destroy(collection, True) # <<<<<<<<<<<<<< + * return result + * +*/ + (void)(lxb_dom_collection_destroy(__pyx_v_collection, 1)); + + /* "selectolax/lexbor.pyx":333 + * result.append(node) + * lxb_dom_collection_destroy(collection, True) + * return result # <<<<<<<<<<<<<< + * + * def text( +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_result); + __pyx_r = __pyx_v_result; + goto __pyx_L0; + + /* "selectolax/lexbor.pyx":281 + * return LexborNode.new( head, self) + * + * def tags(self, str name): # <<<<<<<<<<<<<< + * """Return all tags that match the provided name. + * +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_AddTraceback("selectolax.lexbor.LexborHTMLParser.tags", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_pybyte_name); + __Pyx_XDECREF(__pyx_v_result); + __Pyx_XDECREF((PyObject *)__pyx_v_node); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor.pyx":335 + * return result + * + * def text( # <<<<<<<<<<<<<< + * self, + * deep: bool = True, +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_9text(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6lexbor_16LexborHTMLParser_8text, "LexborHTMLParser.text(self, deep: bool = True, separator: str = '', strip: bool = False, skip_empty: bool = False) -> str\n\nReturns the text of the node including text of all its child nodes.\n\nParameters\n----------\nstrip : bool, default False\n If true, calls ``str.strip()`` on each text part to remove extra white spaces.\nseparator : str, default ''\n The separator to use when joining text from different nodes.\ndeep : bool, default True\n If True, includes text from all child nodes.\nskip_empty : bool, optional\n Exclude text nodes whose content is only ASCII whitespace (space,\n tab, newline, form feed or carriage return) when ``True``.\n Defaults to ``False``.\n\nReturns\n-------\ntext : str\n Combined textual content assembled according to the provided options."); +static PyMethodDef __pyx_mdef_10selectolax_6lexbor_16LexborHTMLParser_9text = {"text", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_9text, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_16LexborHTMLParser_8text}; +static PyObject *__pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_9text(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_deep = 0; + PyObject *__pyx_v_separator = 0; + PyObject *__pyx_v_strip = 0; + PyObject *__pyx_v_skip_empty = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[4] = {0,0,0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("text (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_deep,&__pyx_mstate_global->__pyx_n_u_separator,&__pyx_mstate_global->__pyx_n_u_strip,&__pyx_mstate_global->__pyx_n_u_skip_empty,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 335, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 4: + values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 335, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 3: + values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 335, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 335, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 335, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "text", 0) < (0)) __PYX_ERR(0, 335, __pyx_L3_error) + + /* "selectolax/lexbor.pyx":337 + * def text( + * self, + * deep: bool = True, # <<<<<<<<<<<<<< + * separator: str = "", + * strip: bool = False, +*/ + if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)Py_True)); + if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_kp_u_)); + + /* "selectolax/lexbor.pyx":339 + * deep: bool = True, + * separator: str = "", + * strip: bool = False, # <<<<<<<<<<<<<< + * skip_empty: bool = False, + * ) -> str: +*/ + if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_False)); + + /* "selectolax/lexbor.pyx":340 + * separator: str = "", + * strip: bool = False, + * skip_empty: bool = False, # <<<<<<<<<<<<<< + * ) -> str: + * """Returns the text of the node including text of all its child nodes. +*/ + if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)Py_False)); + } else { + switch (__pyx_nargs) { + case 4: + values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 335, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 3: + values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 335, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 335, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 335, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + + /* "selectolax/lexbor.pyx":337 + * def text( + * self, + * deep: bool = True, # <<<<<<<<<<<<<< + * separator: str = "", + * strip: bool = False, +*/ + if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)Py_True)); + if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_kp_u_)); + + /* "selectolax/lexbor.pyx":339 + * deep: bool = True, + * separator: str = "", + * strip: bool = False, # <<<<<<<<<<<<<< + * skip_empty: bool = False, + * ) -> str: +*/ + if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_False)); + + /* "selectolax/lexbor.pyx":340 + * separator: str = "", + * strip: bool = False, + * skip_empty: bool = False, # <<<<<<<<<<<<<< + * ) -> str: + * """Returns the text of the node including text of all its child nodes. +*/ + if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)Py_False)); + } + __pyx_v_deep = values[0]; + __pyx_v_separator = values[1]; + __pyx_v_strip = values[2]; + __pyx_v_skip_empty = values[3]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("text", 0, 0, 4, __pyx_nargs); __PYX_ERR(0, 335, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.lexbor.LexborHTMLParser.text", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_10selectolax_6lexbor_16LexborHTMLParser_8text(((struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *)__pyx_v_self), __pyx_v_deep, __pyx_v_separator, __pyx_v_strip, __pyx_v_skip_empty); + + /* "selectolax/lexbor.pyx":335 + * return result + * + * def text( # <<<<<<<<<<<<<< + * self, + * deep: bool = True, +*/ + + /* function exit code */ + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_16LexborHTMLParser_8text(struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *__pyx_v_self, PyObject *__pyx_v_deep, PyObject *__pyx_v_separator, PyObject *__pyx_v_strip, PyObject *__pyx_v_skip_empty) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + size_t __pyx_t_5; + PyObject *__pyx_t_6 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("text", 0); + + /* "selectolax/lexbor.pyx":362 + * Combined textual content assembled according to the provided options. + * """ + * if self.root is None: # <<<<<<<<<<<<<< + * return "" + * return self.root.text(deep=deep, separator=separator, strip=strip, skip_empty=skip_empty) +*/ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_root); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 362, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = (__pyx_t_1 == Py_None); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (__pyx_t_2) { + + /* "selectolax/lexbor.pyx":363 + * """ + * if self.root is None: + * return "" # <<<<<<<<<<<<<< + * return self.root.text(deep=deep, separator=separator, strip=strip, skip_empty=skip_empty) + * +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u_); + __pyx_r = __pyx_mstate_global->__pyx_kp_u_; + goto __pyx_L0; + + /* "selectolax/lexbor.pyx":362 + * Combined textual content assembled according to the provided options. + * """ + * if self.root is None: # <<<<<<<<<<<<<< + * return "" + * return self.root.text(deep=deep, separator=separator, strip=strip, skip_empty=skip_empty) +*/ + } + + /* "selectolax/lexbor.pyx":364 + * if self.root is None: + * return "" + * return self.root.text(deep=deep, separator=separator, strip=strip, skip_empty=skip_empty) # <<<<<<<<<<<<<< + * + * @property +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_root); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 364, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = __pyx_t_4; + __Pyx_INCREF(__pyx_t_3); + __pyx_t_5 = 0; + { + PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 4 : 0)] = {__pyx_t_3, NULL}; + __pyx_t_6 = __Pyx_MakeVectorcallBuilderKwds(4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 364, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_deep, __pyx_v_deep, __pyx_t_6, __pyx_callargs+1, 0) < (0)) __PYX_ERR(0, 364, __pyx_L1_error) + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_separator, __pyx_v_separator, __pyx_t_6, __pyx_callargs+1, 1) < (0)) __PYX_ERR(0, 364, __pyx_L1_error) + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_strip, __pyx_v_strip, __pyx_t_6, __pyx_callargs+1, 2) < (0)) __PYX_ERR(0, 364, __pyx_L1_error) + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_skip_empty, __pyx_v_skip_empty, __pyx_t_6, __pyx_callargs+1, 3) < (0)) __PYX_ERR(0, 364, __pyx_L1_error) + __pyx_t_1 = __Pyx_Object_VectorcallMethod_CallFromBuilder((PyObject*)__pyx_mstate_global->__pyx_n_u_text, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_6); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 364, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "selectolax/lexbor.pyx":335 + * return result + * + * def text( # <<<<<<<<<<<<<< + * self, + * deep: bool = True, +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_AddTraceback("selectolax.lexbor.LexborHTMLParser.text", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor.pyx":366 + * return self.root.text(deep=deep, separator=separator, strip=strip, skip_empty=skip_empty) + * + * @property # <<<<<<<<<<<<<< + * def html(self): + * """Return HTML representation of the page. +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_4html_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_4html_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6lexbor_16LexborHTMLParser_4html___get__(((struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_16LexborHTMLParser_4html___get__(struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *__pyx_v_self) { + struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_node = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + + /* "selectolax/lexbor.pyx":375 + * Serialized HTML of the current document. + * """ + * if self.document == NULL: # <<<<<<<<<<<<<< + * return None + * if self._is_fragment: +*/ + __pyx_t_1 = (__pyx_v_self->document == NULL); + if (__pyx_t_1) { + + /* "selectolax/lexbor.pyx":376 + * """ + * if self.document == NULL: + * return None # <<<<<<<<<<<<<< + * if self._is_fragment: + * if self.root is None: +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + + /* "selectolax/lexbor.pyx":375 + * Serialized HTML of the current document. + * """ + * if self.document == NULL: # <<<<<<<<<<<<<< + * return None + * if self._is_fragment: +*/ + } + + /* "selectolax/lexbor.pyx":377 + * if self.document == NULL: + * return None + * if self._is_fragment: # <<<<<<<<<<<<<< + * if self.root is None: + * return None +*/ + if (__pyx_v_self->_is_fragment) { + + /* "selectolax/lexbor.pyx":378 + * return None + * if self._is_fragment: + * if self.root is None: # <<<<<<<<<<<<<< + * return None + * return self.root.html +*/ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_root); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 378, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_1 = (__pyx_t_2 == Py_None); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (__pyx_t_1) { + + /* "selectolax/lexbor.pyx":379 + * if self._is_fragment: + * if self.root is None: + * return None # <<<<<<<<<<<<<< + * return self.root.html + * node = LexborNode.new( &self.document.dom_document, self) +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + + /* "selectolax/lexbor.pyx":378 + * return None + * if self._is_fragment: + * if self.root is None: # <<<<<<<<<<<<<< + * return None + * return self.root.html +*/ + } + + /* "selectolax/lexbor.pyx":380 + * if self.root is None: + * return None + * return self.root.html # <<<<<<<<<<<<<< + * node = LexborNode.new( &self.document.dom_document, self) + * return node.html +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_root); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 380, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_html); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 380, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_r = __pyx_t_3; + __pyx_t_3 = 0; + goto __pyx_L0; + + /* "selectolax/lexbor.pyx":377 + * if self.document == NULL: + * return None + * if self._is_fragment: # <<<<<<<<<<<<<< + * if self.root is None: + * return None +*/ + } + + /* "selectolax/lexbor.pyx":381 + * return None + * return self.root.html + * node = LexborNode.new( &self.document.dom_document, self) # <<<<<<<<<<<<<< + * return node.html + * +*/ + __pyx_t_3 = ((PyObject *)__pyx_f_10selectolax_6lexbor_10LexborNode_new(((lxb_dom_node_t *)(&__pyx_v_self->document->dom_document)), __pyx_v_self)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 381, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_v_node = ((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/lexbor.pyx":382 + * return self.root.html + * node = LexborNode.new( &self.document.dom_document, self) + * return node.html # <<<<<<<<<<<<<< + * + * def css(self, str query): +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_node), __pyx_mstate_global->__pyx_n_u_html); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 382, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_r = __pyx_t_3; + __pyx_t_3 = 0; + goto __pyx_L0; + + /* "selectolax/lexbor.pyx":366 + * return self.root.text(deep=deep, separator=separator, strip=strip, skip_empty=skip_empty) + * + * @property # <<<<<<<<<<<<<< + * def html(self): + * """Return HTML representation of the page. +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("selectolax.lexbor.LexborHTMLParser.html.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF((PyObject *)__pyx_v_node); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor.pyx":384 + * return node.html + * + * def css(self, str query): # <<<<<<<<<<<<<< + * """A CSS selector. + * +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_11css(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6lexbor_16LexborHTMLParser_10css, "LexborHTMLParser.css(self, str query)\n\nA CSS selector.\n\nMatches pattern `query` against HTML tree.\n`CSS selectors reference `_.\n\nSpecial selectors:\n\n - parser.css('p:lexbor-contains(\"awesome\" i)') -- case-insensitive contains\n - parser.css('p:lexbor-contains(\"awesome\")') -- case-sensitive contains\n\nParameters\n----------\nquery : str\n CSS selector (e.g. \"div > :nth-child(2n+1):not(:has(a))\").\n\nReturns\n-------\nselector : list of `Node` objects"); +static PyMethodDef __pyx_mdef_10selectolax_6lexbor_16LexborHTMLParser_11css = {"css", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_11css, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_16LexborHTMLParser_10css}; +static PyObject *__pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_11css(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_query = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("css (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_query,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 384, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 384, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "css", 0) < (0)) __PYX_ERR(0, 384, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("css", 1, 1, 1, i); __PYX_ERR(0, 384, __pyx_L3_error) } + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 384, __pyx_L3_error) + } + __pyx_v_query = ((PyObject*)values[0]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("css", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 384, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.lexbor.LexborHTMLParser.css", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_query), (&PyUnicode_Type), 1, "query", 1))) __PYX_ERR(0, 384, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6lexbor_16LexborHTMLParser_10css(((struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *)__pyx_v_self), __pyx_v_query); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_16LexborHTMLParser_10css(struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *__pyx_v_self, PyObject *__pyx_v_query) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + size_t __pyx_t_4; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("css", 0); + + /* "selectolax/lexbor.pyx":404 + * selector : list of `Node` objects + * """ + * return self.root.css(query) # <<<<<<<<<<<<<< + * + * def css_first(self, str query, default=None, strict=False): +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_root); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 404, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = __pyx_t_3; + __Pyx_INCREF(__pyx_t_2); + __pyx_t_4 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_query}; + __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_css, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 404, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "selectolax/lexbor.pyx":384 + * return node.html + * + * def css(self, str query): # <<<<<<<<<<<<<< + * """A CSS selector. + * +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("selectolax.lexbor.LexborHTMLParser.css", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor.pyx":406 + * return self.root.css(query) + * + * def css_first(self, str query, default=None, strict=False): # <<<<<<<<<<<<<< + * """Same as `css` but returns only the first match. + * +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_13css_first(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6lexbor_16LexborHTMLParser_12css_first, "LexborHTMLParser.css_first(self, str query, default=None, strict=False)\n\nSame as `css` but returns only the first match.\n\nParameters\n----------\n\nquery : str\ndefault : Any, default None\n Default value to return if there is no match.\nstrict: bool, default False\n Set to True if you want to check if there is strictly only one match in the document.\n\n\nReturns\n-------\nselector : `LexborNode` object"); +static PyMethodDef __pyx_mdef_10selectolax_6lexbor_16LexborHTMLParser_13css_first = {"css_first", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_13css_first, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_16LexborHTMLParser_12css_first}; +static PyObject *__pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_13css_first(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_query = 0; + PyObject *__pyx_v_default = 0; + PyObject *__pyx_v_strict = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[3] = {0,0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("css_first (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_query,&__pyx_mstate_global->__pyx_n_u_default,&__pyx_mstate_global->__pyx_n_u_strict,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 406, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 3: + values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 406, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 406, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 406, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "css_first", 0) < (0)) __PYX_ERR(0, 406, __pyx_L3_error) + if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None)); + if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_False)); + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("css_first", 0, 1, 3, i); __PYX_ERR(0, 406, __pyx_L3_error) } + } + } else { + switch (__pyx_nargs) { + case 3: + values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 406, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 406, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 406, __pyx_L3_error) + break; + default: goto __pyx_L5_argtuple_error; + } + if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None)); + if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_False)); + } + __pyx_v_query = ((PyObject*)values[0]); + __pyx_v_default = values[1]; + __pyx_v_strict = values[2]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("css_first", 0, 1, 3, __pyx_nargs); __PYX_ERR(0, 406, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.lexbor.LexborHTMLParser.css_first", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_query), (&PyUnicode_Type), 1, "query", 1))) __PYX_ERR(0, 406, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6lexbor_16LexborHTMLParser_12css_first(((struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *)__pyx_v_self), __pyx_v_query, __pyx_v_default, __pyx_v_strict); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_16LexborHTMLParser_12css_first(struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *__pyx_v_self, PyObject *__pyx_v_query, PyObject *__pyx_v_default, PyObject *__pyx_v_strict) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + size_t __pyx_t_4; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("css_first", 0); + + /* "selectolax/lexbor.pyx":423 + * selector : `LexborNode` object + * """ + * return self.root.css_first(query, default, strict) # <<<<<<<<<<<<<< + * + * def strip_tags(self, list tags, bool recursive = False): +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_root); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 423, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = __pyx_t_3; + __Pyx_INCREF(__pyx_t_2); + __pyx_t_4 = 0; + { + PyObject *__pyx_callargs[4] = {__pyx_t_2, __pyx_v_query, __pyx_v_default, __pyx_v_strict}; + __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_css_first, __pyx_callargs+__pyx_t_4, (4-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 423, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "selectolax/lexbor.pyx":406 + * return self.root.css(query) + * + * def css_first(self, str query, default=None, strict=False): # <<<<<<<<<<<<<< + * """Same as `css` but returns only the first match. + * +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("selectolax.lexbor.LexborHTMLParser.css_first", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor.pyx":425 + * return self.root.css_first(query, default, strict) + * + * def strip_tags(self, list tags, bool recursive = False): # <<<<<<<<<<<<<< + * """Remove specified tags from the node. + * +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_15strip_tags(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6lexbor_16LexborHTMLParser_14strip_tags, "LexborHTMLParser.strip_tags(self, list tags, bool recursive=False)\n\nRemove specified tags from the node.\n\nParameters\n----------\ntags : list of str\n List of tags to remove.\nrecursive : bool, default False\n Whenever to delete all its child nodes\n\nExamples\n--------\n\n>>> tree = LexborHTMLParser('
Hello world!
')\n>>> tags = ['head', 'style', 'script', 'xmp', 'iframe', 'noembed', 'noframes']\n>>> tree.strip_tags(tags)\n>>> tree.html\n'
Hello world!
'\n\nReturns\n-------\nNone"); +static PyMethodDef __pyx_mdef_10selectolax_6lexbor_16LexborHTMLParser_15strip_tags = {"strip_tags", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_15strip_tags, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_16LexborHTMLParser_14strip_tags}; +static PyObject *__pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_15strip_tags(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_tags = 0; + PyLongObject *__pyx_v_recursive = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[2] = {0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("strip_tags (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_tags,&__pyx_mstate_global->__pyx_n_u_recursive,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 425, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 425, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 425, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "strip_tags", 0) < (0)) __PYX_ERR(0, 425, __pyx_L3_error) + if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)((PyLongObject *)Py_False)); + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("strip_tags", 0, 1, 2, i); __PYX_ERR(0, 425, __pyx_L3_error) } + } + } else { + switch (__pyx_nargs) { + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 425, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 425, __pyx_L3_error) + break; + default: goto __pyx_L5_argtuple_error; + } + if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)((PyLongObject *)Py_False)); + } + __pyx_v_tags = ((PyObject*)values[0]); + __pyx_v_recursive = ((PyLongObject *)values[1]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("strip_tags", 0, 1, 2, __pyx_nargs); __PYX_ERR(0, 425, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.lexbor.LexborHTMLParser.strip_tags", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_tags), (&PyList_Type), 1, "tags", 1))) __PYX_ERR(0, 425, __pyx_L1_error) + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_recursive), __pyx_mstate_global->__pyx_ptype_7cpython_4bool_bool, 1, "recursive", 0))) __PYX_ERR(0, 425, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6lexbor_16LexborHTMLParser_14strip_tags(((struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *)__pyx_v_self), __pyx_v_tags, __pyx_v_recursive); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_16LexborHTMLParser_14strip_tags(struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *__pyx_v_self, PyObject *__pyx_v_tags, PyLongObject *__pyx_v_recursive) { + lxb_dom_collection_t *__pyx_v_collection; + lxb_status_t __pyx_v_status; + PyObject *__pyx_v_tag = NULL; + PyObject *__pyx_v_pybyte_name = NULL; + size_t __pyx_v_i; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + Py_ssize_t __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + size_t __pyx_t_5; + int __pyx_t_6; + PyObject *__pyx_t_7 = NULL; + lxb_char_t *__pyx_t_8; + Py_ssize_t __pyx_t_9; + size_t __pyx_t_10; + size_t __pyx_t_11; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("strip_tags", 0); + + /* "selectolax/lexbor.pyx":448 + * None + * """ + * cdef lxb_dom_collection_t* collection = NULL # <<<<<<<<<<<<<< + * cdef lxb_status_t status + * +*/ + __pyx_v_collection = NULL; + + /* "selectolax/lexbor.pyx":451 + * cdef lxb_status_t status + * + * for tag in tags: # <<<<<<<<<<<<<< + * pybyte_name = tag.encode('UTF-8') + * +*/ + if (unlikely(__pyx_v_tags == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); + __PYX_ERR(0, 451, __pyx_L1_error) + } + __pyx_t_1 = __pyx_v_tags; __Pyx_INCREF(__pyx_t_1); + __pyx_t_2 = 0; + for (;;) { + { + Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1); + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 451, __pyx_L1_error) + #endif + if (__pyx_t_2 >= __pyx_temp) break; + } + __pyx_t_3 = __Pyx_PyList_GetItemRefFast(__pyx_t_1, __pyx_t_2, __Pyx_ReferenceSharing_OwnStrongReference); + ++__pyx_t_2; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 451, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_XDECREF_SET(__pyx_v_tag, __pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/lexbor.pyx":452 + * + * for tag in tags: + * pybyte_name = tag.encode('UTF-8') # <<<<<<<<<<<<<< + * + * collection = lxb_dom_collection_make(&self.document.dom_document, 128) +*/ + __pyx_t_4 = __pyx_v_tag; + __Pyx_INCREF(__pyx_t_4); + __pyx_t_5 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_UTF_8}; + __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_encode, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 452, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_XDECREF_SET(__pyx_v_pybyte_name, __pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/lexbor.pyx":454 + * pybyte_name = tag.encode('UTF-8') + * + * collection = lxb_dom_collection_make(&self.document.dom_document, 128) # <<<<<<<<<<<<<< + * + * if collection == NULL: +*/ + __pyx_v_collection = lxb_dom_collection_make((&__pyx_v_self->document->dom_document), 0x80); + + /* "selectolax/lexbor.pyx":456 + * collection = lxb_dom_collection_make(&self.document.dom_document, 128) + * + * if collection == NULL: # <<<<<<<<<<<<<< + * raise SelectolaxError("Can't initialize DOM collection.") + * +*/ + __pyx_t_6 = (__pyx_v_collection == NULL); + if (unlikely(__pyx_t_6)) { + + /* "selectolax/lexbor.pyx":457 + * + * if collection == NULL: + * raise SelectolaxError("Can't initialize DOM collection.") # <<<<<<<<<<<<<< + * + * status = lxb_dom_elements_by_tag_name( +*/ + __pyx_t_4 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_SelectolaxError); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 457, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_5 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_7))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_7); + assert(__pyx_t_4); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_7, __pyx__function); + __pyx_t_5 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_Can_t_initialize_DOM_collection}; + __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 457, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(0, 457, __pyx_L1_error) + + /* "selectolax/lexbor.pyx":456 + * collection = lxb_dom_collection_make(&self.document.dom_document, 128) + * + * if collection == NULL: # <<<<<<<<<<<<<< + * raise SelectolaxError("Can't initialize DOM collection.") + * +*/ + } + + /* "selectolax/lexbor.pyx":462 + * self.document, + * collection, + * pybyte_name, # <<<<<<<<<<<<<< + * len(pybyte_name) + * ) +*/ + __pyx_t_8 = __Pyx_PyObject_AsWritableUString(__pyx_v_pybyte_name); if (unlikely((!__pyx_t_8) && PyErr_Occurred())) __PYX_ERR(0, 462, __pyx_L1_error) + + /* "selectolax/lexbor.pyx":463 + * collection, + * pybyte_name, + * len(pybyte_name) # <<<<<<<<<<<<<< + * ) + * if status != 0x0000: +*/ + __pyx_t_9 = PyObject_Length(__pyx_v_pybyte_name); if (unlikely(__pyx_t_9 == ((Py_ssize_t)-1))) __PYX_ERR(0, 463, __pyx_L1_error) + + /* "selectolax/lexbor.pyx":459 + * raise SelectolaxError("Can't initialize DOM collection.") + * + * status = lxb_dom_elements_by_tag_name( # <<<<<<<<<<<<<< + * self.document, + * collection, +*/ + __pyx_v_status = lxb_dom_elements_by_tag_name(((lxb_dom_element_t *)__pyx_v_self->document), __pyx_v_collection, ((lxb_char_t *)__pyx_t_8), __pyx_t_9); + + /* "selectolax/lexbor.pyx":465 + * len(pybyte_name) + * ) + * if status != 0x0000: # <<<<<<<<<<<<<< + * lxb_dom_collection_destroy(collection, True) + * raise SelectolaxError("Can't locate elements.") +*/ + __pyx_t_6 = (__pyx_v_status != 0x0000); + if (unlikely(__pyx_t_6)) { + + /* "selectolax/lexbor.pyx":466 + * ) + * if status != 0x0000: + * lxb_dom_collection_destroy(collection, True) # <<<<<<<<<<<<<< + * raise SelectolaxError("Can't locate elements.") + * +*/ + (void)(lxb_dom_collection_destroy(__pyx_v_collection, 1)); + + /* "selectolax/lexbor.pyx":467 + * if status != 0x0000: + * lxb_dom_collection_destroy(collection, True) + * raise SelectolaxError("Can't locate elements.") # <<<<<<<<<<<<<< + * + * for i in range(lxb_dom_collection_length_noi(collection)): +*/ + __pyx_t_7 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_SelectolaxError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 467, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_4); + assert(__pyx_t_7); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_4, __pyx__function); + __pyx_t_5 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_mstate_global->__pyx_kp_u_Can_t_locate_elements}; + __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 467, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(0, 467, __pyx_L1_error) + + /* "selectolax/lexbor.pyx":465 + * len(pybyte_name) + * ) + * if status != 0x0000: # <<<<<<<<<<<<<< + * lxb_dom_collection_destroy(collection, True) + * raise SelectolaxError("Can't locate elements.") +*/ + } + + /* "selectolax/lexbor.pyx":469 + * raise SelectolaxError("Can't locate elements.") + * + * for i in range(lxb_dom_collection_length_noi(collection)): # <<<<<<<<<<<<<< + * if recursive: + * lxb_dom_node_destroy_deep( lxb_dom_collection_element_noi(collection, i)) +*/ + __pyx_t_5 = lxb_dom_collection_length_noi(__pyx_v_collection); + __pyx_t_10 = __pyx_t_5; + for (__pyx_t_11 = 0; __pyx_t_11 < __pyx_t_10; __pyx_t_11+=1) { + __pyx_v_i = __pyx_t_11; + + /* "selectolax/lexbor.pyx":470 + * + * for i in range(lxb_dom_collection_length_noi(collection)): + * if recursive: # <<<<<<<<<<<<<< + * lxb_dom_node_destroy_deep( lxb_dom_collection_element_noi(collection, i)) + * else: +*/ + __pyx_t_6 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_v_recursive)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 470, __pyx_L1_error) + if (__pyx_t_6) { + + /* "selectolax/lexbor.pyx":471 + * for i in range(lxb_dom_collection_length_noi(collection)): + * if recursive: + * lxb_dom_node_destroy_deep( lxb_dom_collection_element_noi(collection, i)) # <<<<<<<<<<<<<< + * else: + * lxb_dom_node_destroy( lxb_dom_collection_element_noi(collection, i)) +*/ + (void)(lxb_dom_node_destroy_deep(((lxb_dom_node_t *)lxb_dom_collection_element_noi(__pyx_v_collection, __pyx_v_i)))); + + /* "selectolax/lexbor.pyx":470 + * + * for i in range(lxb_dom_collection_length_noi(collection)): + * if recursive: # <<<<<<<<<<<<<< + * lxb_dom_node_destroy_deep( lxb_dom_collection_element_noi(collection, i)) + * else: +*/ + goto __pyx_L9; + } + + /* "selectolax/lexbor.pyx":473 + * lxb_dom_node_destroy_deep( lxb_dom_collection_element_noi(collection, i)) + * else: + * lxb_dom_node_destroy( lxb_dom_collection_element_noi(collection, i)) # <<<<<<<<<<<<<< + * lxb_dom_collection_destroy(collection, True) + * +*/ + /*else*/ { + (void)(lxb_dom_node_destroy(((lxb_dom_node_t *)lxb_dom_collection_element_noi(__pyx_v_collection, __pyx_v_i)))); + } + __pyx_L9:; + } + + /* "selectolax/lexbor.pyx":474 + * else: + * lxb_dom_node_destroy( lxb_dom_collection_element_noi(collection, i)) + * lxb_dom_collection_destroy(collection, True) # <<<<<<<<<<<<<< + * + * def select(self, query=None): +*/ + (void)(lxb_dom_collection_destroy(__pyx_v_collection, 1)); + + /* "selectolax/lexbor.pyx":451 + * cdef lxb_status_t status + * + * for tag in tags: # <<<<<<<<<<<<<< + * pybyte_name = tag.encode('UTF-8') + * +*/ + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "selectolax/lexbor.pyx":425 + * return self.root.css_first(query, default, strict) + * + * def strip_tags(self, list tags, bool recursive = False): # <<<<<<<<<<<<<< + * """Remove specified tags from the node. + * +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_AddTraceback("selectolax.lexbor.LexborHTMLParser.strip_tags", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_tag); + __Pyx_XDECREF(__pyx_v_pybyte_name); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor.pyx":476 + * lxb_dom_collection_destroy(collection, True) + * + * def select(self, query=None): # <<<<<<<<<<<<<< + * """Select nodes given a CSS selector. + * +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_17select(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6lexbor_16LexborHTMLParser_16select, "LexborHTMLParser.select(self, query=None)\n\nSelect nodes given a CSS selector.\n\nWorks similarly to the ``css`` method, but supports chained filtering and extra features.\n\nParameters\n----------\nquery : str or None\n The CSS selector to use when searching for nodes.\n\nReturns\n-------\nLexborSelector or None\n Selector bound to the root node, or ``None`` if the document is empty."); +static PyMethodDef __pyx_mdef_10selectolax_6lexbor_16LexborHTMLParser_17select = {"select", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_17select, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_16LexborHTMLParser_16select}; +static PyObject *__pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_17select(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_query = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("select (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_query,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 476, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 476, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "select", 0) < (0)) __PYX_ERR(0, 476, __pyx_L3_error) + if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)Py_None)); + } else { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 476, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)Py_None)); + } + __pyx_v_query = values[0]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("select", 0, 0, 1, __pyx_nargs); __PYX_ERR(0, 476, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.lexbor.LexborHTMLParser.select", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_10selectolax_6lexbor_16LexborHTMLParser_16select(((struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *)__pyx_v_self), __pyx_v_query); + + /* function exit code */ + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_16LexborHTMLParser_16select(struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *__pyx_v_self, PyObject *__pyx_v_query) { + struct __pyx_obj_10selectolax_6lexbor_LexborNode *__pyx_v_node = 0; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + size_t __pyx_t_4; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("select", 0); + + /* "selectolax/lexbor.pyx":492 + * """ + * cdef LexborNode node + * node = self.root # <<<<<<<<<<<<<< + * if node: + * return LexborSelector(node, query) +*/ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_root); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 492, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborNode))))) __PYX_ERR(0, 492, __pyx_L1_error) + __pyx_v_node = ((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_t_1); + __pyx_t_1 = 0; + + /* "selectolax/lexbor.pyx":493 + * cdef LexborNode node + * node = self.root + * if node: # <<<<<<<<<<<<<< + * return LexborSelector(node, query) + * return None +*/ + __pyx_t_2 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_v_node)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 493, __pyx_L1_error) + if (__pyx_t_2) { + + /* "selectolax/lexbor.pyx":494 + * node = self.root + * if node: + * return LexborSelector(node, query) # <<<<<<<<<<<<<< + * return None + * +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_3 = NULL; + __pyx_t_4 = 1; + { + PyObject *__pyx_callargs[3] = {__pyx_t_3, ((PyObject *)__pyx_v_node), __pyx_v_query}; + __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborSelector, __pyx_callargs+__pyx_t_4, (3-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 494, __pyx_L1_error) + __Pyx_GOTREF((PyObject *)__pyx_t_1); + } + __pyx_r = ((PyObject *)__pyx_t_1); + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "selectolax/lexbor.pyx":493 + * cdef LexborNode node + * node = self.root + * if node: # <<<<<<<<<<<<<< + * return LexborSelector(node, query) + * return None +*/ + } + + /* "selectolax/lexbor.pyx":495 + * if node: + * return LexborSelector(node, query) + * return None # <<<<<<<<<<<<<< + * + * def any_css_matches(self, tuple selectors): +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + + /* "selectolax/lexbor.pyx":476 + * lxb_dom_collection_destroy(collection, True) + * + * def select(self, query=None): # <<<<<<<<<<<<<< + * """Select nodes given a CSS selector. + * +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("selectolax.lexbor.LexborHTMLParser.select", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF((PyObject *)__pyx_v_node); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor.pyx":497 + * return None + * + * def any_css_matches(self, tuple selectors): # <<<<<<<<<<<<<< + * """Return ``True`` if any of the specified CSS selectors match. + * +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_19any_css_matches(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6lexbor_16LexborHTMLParser_18any_css_matches, "LexborHTMLParser.any_css_matches(self, tuple selectors)\n\nReturn ``True`` if any of the specified CSS selectors match.\n\nParameters\n----------\nselectors : tuple[str]\n CSS selectors to evaluate.\n\nReturns\n-------\nbool\n ``True`` when at least one selector matches."); +static PyMethodDef __pyx_mdef_10selectolax_6lexbor_16LexborHTMLParser_19any_css_matches = {"any_css_matches", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_19any_css_matches, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_16LexborHTMLParser_18any_css_matches}; +static PyObject *__pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_19any_css_matches(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_selectors = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("any_css_matches (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_selectors,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 497, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 497, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "any_css_matches", 0) < (0)) __PYX_ERR(0, 497, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("any_css_matches", 1, 1, 1, i); __PYX_ERR(0, 497, __pyx_L3_error) } + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 497, __pyx_L3_error) + } + __pyx_v_selectors = ((PyObject*)values[0]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("any_css_matches", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 497, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.lexbor.LexborHTMLParser.any_css_matches", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_selectors), (&PyTuple_Type), 1, "selectors", 1))) __PYX_ERR(0, 497, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6lexbor_16LexborHTMLParser_18any_css_matches(((struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *)__pyx_v_self), __pyx_v_selectors); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_16LexborHTMLParser_18any_css_matches(struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *__pyx_v_self, PyObject *__pyx_v_selectors) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + size_t __pyx_t_4; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("any_css_matches", 0); + + /* "selectolax/lexbor.pyx":510 + * ``True`` when at least one selector matches. + * """ + * return self.root.any_css_matches(selectors) # <<<<<<<<<<<<<< + * + * def scripts_contain(self, str query): +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_root); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 510, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = __pyx_t_3; + __Pyx_INCREF(__pyx_t_2); + __pyx_t_4 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_selectors}; + __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_any_css_matches, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 510, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "selectolax/lexbor.pyx":497 + * return None + * + * def any_css_matches(self, tuple selectors): # <<<<<<<<<<<<<< + * """Return ``True`` if any of the specified CSS selectors match. + * +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("selectolax.lexbor.LexborHTMLParser.any_css_matches", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor.pyx":512 + * return self.root.any_css_matches(selectors) + * + * def scripts_contain(self, str query): # <<<<<<<<<<<<<< + * """Return ``True`` if any script tag contains the given text. + * +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_21scripts_contain(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6lexbor_16LexborHTMLParser_20scripts_contain, "LexborHTMLParser.scripts_contain(self, str query)\n\nReturn ``True`` if any script tag contains the given text.\n\nCaches script tags on the first call to improve performance.\n\nParameters\n----------\nquery : str\n Text to search for within script contents.\n\nReturns\n-------\nbool\n ``True`` when a matching script tag is found."); +static PyMethodDef __pyx_mdef_10selectolax_6lexbor_16LexborHTMLParser_21scripts_contain = {"scripts_contain", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_21scripts_contain, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_16LexborHTMLParser_20scripts_contain}; +static PyObject *__pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_21scripts_contain(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_query = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("scripts_contain (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_query,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 512, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 512, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "scripts_contain", 0) < (0)) __PYX_ERR(0, 512, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("scripts_contain", 1, 1, 1, i); __PYX_ERR(0, 512, __pyx_L3_error) } + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 512, __pyx_L3_error) + } + __pyx_v_query = ((PyObject*)values[0]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("scripts_contain", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 512, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.lexbor.LexborHTMLParser.scripts_contain", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_query), (&PyUnicode_Type), 1, "query", 1))) __PYX_ERR(0, 512, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6lexbor_16LexborHTMLParser_20scripts_contain(((struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *)__pyx_v_self), __pyx_v_query); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_16LexborHTMLParser_20scripts_contain(struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *__pyx_v_self, PyObject *__pyx_v_query) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + size_t __pyx_t_4; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("scripts_contain", 0); + + /* "selectolax/lexbor.pyx":527 + * ``True`` when a matching script tag is found. + * """ + * return self.root.scripts_contain(query) # <<<<<<<<<<<<<< + * + * def script_srcs_contain(self, tuple queries): +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_root); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 527, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = __pyx_t_3; + __Pyx_INCREF(__pyx_t_2); + __pyx_t_4 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_query}; + __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_scripts_contain, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 527, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "selectolax/lexbor.pyx":512 + * return self.root.any_css_matches(selectors) + * + * def scripts_contain(self, str query): # <<<<<<<<<<<<<< + * """Return ``True`` if any script tag contains the given text. + * +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("selectolax.lexbor.LexborHTMLParser.scripts_contain", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor.pyx":529 + * return self.root.scripts_contain(query) + * + * def script_srcs_contain(self, tuple queries): # <<<<<<<<<<<<<< + * """Return ``True`` if any script ``src`` contains one of the strings. + * +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_23script_srcs_contain(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6lexbor_16LexborHTMLParser_22script_srcs_contain, "LexborHTMLParser.script_srcs_contain(self, tuple queries)\n\nReturn ``True`` if any script ``src`` contains one of the strings.\n\nCaches values on the first call to improve performance.\n\nParameters\n----------\nqueries : tuple of str\n Strings to look for inside ``src`` attributes.\n\nReturns\n-------\nbool\n ``True`` when a matching source value is found."); +static PyMethodDef __pyx_mdef_10selectolax_6lexbor_16LexborHTMLParser_23script_srcs_contain = {"script_srcs_contain", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_23script_srcs_contain, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_16LexborHTMLParser_22script_srcs_contain}; +static PyObject *__pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_23script_srcs_contain(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_queries = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("script_srcs_contain (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_queries,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 529, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 529, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "script_srcs_contain", 0) < (0)) __PYX_ERR(0, 529, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("script_srcs_contain", 1, 1, 1, i); __PYX_ERR(0, 529, __pyx_L3_error) } + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 529, __pyx_L3_error) + } + __pyx_v_queries = ((PyObject*)values[0]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("script_srcs_contain", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 529, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.lexbor.LexborHTMLParser.script_srcs_contain", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_queries), (&PyTuple_Type), 1, "queries", 1))) __PYX_ERR(0, 529, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6lexbor_16LexborHTMLParser_22script_srcs_contain(((struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *)__pyx_v_self), __pyx_v_queries); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_16LexborHTMLParser_22script_srcs_contain(struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *__pyx_v_self, PyObject *__pyx_v_queries) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + size_t __pyx_t_4; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("script_srcs_contain", 0); + + /* "selectolax/lexbor.pyx":544 + * ``True`` when a matching source value is found. + * """ + * return self.root.script_srcs_contain(queries) # <<<<<<<<<<<<<< + * + * def css_matches(self, str selector): +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_root); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 544, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = __pyx_t_3; + __Pyx_INCREF(__pyx_t_2); + __pyx_t_4 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_queries}; + __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_script_srcs_contain, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 544, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "selectolax/lexbor.pyx":529 + * return self.root.scripts_contain(query) + * + * def script_srcs_contain(self, tuple queries): # <<<<<<<<<<<<<< + * """Return ``True`` if any script ``src`` contains one of the strings. + * +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("selectolax.lexbor.LexborHTMLParser.script_srcs_contain", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor.pyx":546 + * return self.root.script_srcs_contain(queries) + * + * def css_matches(self, str selector): # <<<<<<<<<<<<<< + * """Return ``True`` if the document matches the selector at least once. + * +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_25css_matches(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6lexbor_16LexborHTMLParser_24css_matches, "LexborHTMLParser.css_matches(self, str selector)\n\nReturn ``True`` if the document matches the selector at least once.\n\nParameters\n----------\nselector : str\n CSS selector to test.\n\nReturns\n-------\nbool\n ``True`` when a match exists."); +static PyMethodDef __pyx_mdef_10selectolax_6lexbor_16LexborHTMLParser_25css_matches = {"css_matches", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_25css_matches, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_16LexborHTMLParser_24css_matches}; +static PyObject *__pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_25css_matches(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_selector = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("css_matches (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_selector,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 546, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 546, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "css_matches", 0) < (0)) __PYX_ERR(0, 546, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("css_matches", 1, 1, 1, i); __PYX_ERR(0, 546, __pyx_L3_error) } + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 546, __pyx_L3_error) + } + __pyx_v_selector = ((PyObject*)values[0]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("css_matches", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 546, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.lexbor.LexborHTMLParser.css_matches", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_selector), (&PyUnicode_Type), 1, "selector", 1))) __PYX_ERR(0, 546, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6lexbor_16LexborHTMLParser_24css_matches(((struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *)__pyx_v_self), __pyx_v_selector); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_16LexborHTMLParser_24css_matches(struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *__pyx_v_self, PyObject *__pyx_v_selector) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + size_t __pyx_t_4; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("css_matches", 0); + + /* "selectolax/lexbor.pyx":559 + * ``True`` when a match exists. + * """ + * return self.root.css_matches(selector) # <<<<<<<<<<<<<< + * + * def merge_text_nodes(self): +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_root); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 559, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = __pyx_t_3; + __Pyx_INCREF(__pyx_t_2); + __pyx_t_4 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_selector}; + __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_css_matches, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 559, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "selectolax/lexbor.pyx":546 + * return self.root.script_srcs_contain(queries) + * + * def css_matches(self, str selector): # <<<<<<<<<<<<<< + * """Return ``True`` if the document matches the selector at least once. + * +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("selectolax.lexbor.LexborHTMLParser.css_matches", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor.pyx":561 + * return self.root.css_matches(selector) + * + * def merge_text_nodes(self): # <<<<<<<<<<<<<< + * """Iterates over all text nodes and merges all text nodes that are close to each other. + * +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_27merge_text_nodes(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6lexbor_16LexborHTMLParser_26merge_text_nodes, "LexborHTMLParser.merge_text_nodes(self)\n\nIterates over all text nodes and merges all text nodes that are close to each other.\n\nThis is useful for text extraction.\nUse it when you need to strip HTML tags and merge \"dangling\" text.\n\nExamples\n--------\n\n>>> tree = LexborHTMLParser(\"

John

Doe

\")\n>>> node = tree.css_first('div')\n>>> tree.unwrap_tags([\"strong\"])\n>>> tree.text(deep=True, separator=\" \", strip=True)\n\"J ohn Doe\" # Text extraction produces an extra space because the strong tag was removed.\n>>> node.merge_text_nodes()\n>>> tree.text(deep=True, separator=\" \", strip=True)\n\"John Doe\"\n\nReturns\n-------\nNone"); +static PyMethodDef __pyx_mdef_10selectolax_6lexbor_16LexborHTMLParser_27merge_text_nodes = {"merge_text_nodes", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_27merge_text_nodes, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_16LexborHTMLParser_26merge_text_nodes}; +static PyObject *__pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_27merge_text_nodes(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("merge_text_nodes (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("merge_text_nodes", 1, 0, 0, __pyx_nargs); return NULL; } + const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len < 0)) return NULL; + if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("merge_text_nodes", __pyx_kwds); return NULL;} + __pyx_r = __pyx_pf_10selectolax_6lexbor_16LexborHTMLParser_26merge_text_nodes(((struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_16LexborHTMLParser_26merge_text_nodes(struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + size_t __pyx_t_4; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("merge_text_nodes", 0); + + /* "selectolax/lexbor.pyx":583 + * None + * """ + * return self.root.merge_text_nodes() # <<<<<<<<<<<<<< + * + * @staticmethod +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_root); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 583, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = __pyx_t_3; + __Pyx_INCREF(__pyx_t_2); + __pyx_t_4 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL}; + __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_merge_text_nodes, __pyx_callargs+__pyx_t_4, (1-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 583, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "selectolax/lexbor.pyx":561 + * return self.root.css_matches(selector) + * + * def merge_text_nodes(self): # <<<<<<<<<<<<<< + * """Iterates over all text nodes and merges all text nodes that are close to each other. + * +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("selectolax.lexbor.LexborHTMLParser.merge_text_nodes", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor.pyx":585 + * return self.root.merge_text_nodes() + * + * @staticmethod # <<<<<<<<<<<<<< + * cdef LexborHTMLParser from_document(lxb_html_document_t *document, bytes raw_html): + * """Construct a parser from an existing Lexbor document. +*/ + +static struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *__pyx_f_10selectolax_6lexbor_16LexborHTMLParser_from_document(lxb_html_document_t *__pyx_v_document, PyObject *__pyx_v_raw_html) { + struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *__pyx_v_obj = NULL; + struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("from_document", 0); + + /* "selectolax/lexbor.pyx":601 + * Parser instance wrapping the provided document. + * """ + * obj = LexborHTMLParser.__new__(LexborHTMLParser) # <<<<<<<<<<<<<< + * obj.document = document + * obj.raw_html = raw_html +*/ + __pyx_t_1 = ((PyObject *)__pyx_tp_new_10selectolax_6lexbor_LexborHTMLParser(((PyTypeObject *)__pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborHTMLParser), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 601, __pyx_L1_error) + __Pyx_GOTREF((PyObject *)__pyx_t_1); + __pyx_t_2 = ((PyObject *)__pyx_t_1); + __Pyx_INCREF(__pyx_t_2); + __Pyx_DECREF((PyObject *)__pyx_t_1); __pyx_t_1 = 0; + __pyx_v_obj = ((struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *)__pyx_t_2); + __pyx_t_2 = 0; + + /* "selectolax/lexbor.pyx":602 + * """ + * obj = LexborHTMLParser.__new__(LexborHTMLParser) + * obj.document = document # <<<<<<<<<<<<<< + * obj.raw_html = raw_html + * obj.cached_script_texts = None +*/ + __pyx_v_obj->document = __pyx_v_document; + + /* "selectolax/lexbor.pyx":603 + * obj = LexborHTMLParser.__new__(LexborHTMLParser) + * obj.document = document + * obj.raw_html = raw_html # <<<<<<<<<<<<<< + * obj.cached_script_texts = None + * obj.cached_script_srcs = None +*/ + __Pyx_INCREF(__pyx_v_raw_html); + __Pyx_GIVEREF(__pyx_v_raw_html); + __Pyx_GOTREF(__pyx_v_obj->raw_html); + __Pyx_DECREF(__pyx_v_obj->raw_html); + __pyx_v_obj->raw_html = __pyx_v_raw_html; + + /* "selectolax/lexbor.pyx":604 + * obj.document = document + * obj.raw_html = raw_html + * obj.cached_script_texts = None # <<<<<<<<<<<<<< + * obj.cached_script_srcs = None + * obj._selector = None +*/ + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + __Pyx_GOTREF(__pyx_v_obj->cached_script_texts); + __Pyx_DECREF(__pyx_v_obj->cached_script_texts); + __pyx_v_obj->cached_script_texts = Py_None; + + /* "selectolax/lexbor.pyx":605 + * obj.raw_html = raw_html + * obj.cached_script_texts = None + * obj.cached_script_srcs = None # <<<<<<<<<<<<<< + * obj._selector = None + * return obj +*/ + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + __Pyx_GOTREF(__pyx_v_obj->cached_script_srcs); + __Pyx_DECREF(__pyx_v_obj->cached_script_srcs); + __pyx_v_obj->cached_script_srcs = Py_None; + + /* "selectolax/lexbor.pyx":606 + * obj.cached_script_texts = None + * obj.cached_script_srcs = None + * obj._selector = None # <<<<<<<<<<<<<< + * return obj + * +*/ + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + __Pyx_GOTREF((PyObject *)__pyx_v_obj->_selector); + __Pyx_DECREF((PyObject *)__pyx_v_obj->_selector); + __pyx_v_obj->_selector = ((struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector *)Py_None); + + /* "selectolax/lexbor.pyx":607 + * obj.cached_script_srcs = None + * obj._selector = None + * return obj # <<<<<<<<<<<<<< + * + * def clone(self): +*/ + __Pyx_XDECREF((PyObject *)__pyx_r); + __Pyx_INCREF((PyObject *)__pyx_v_obj); + __pyx_r = __pyx_v_obj; + goto __pyx_L0; + + /* "selectolax/lexbor.pyx":585 + * return self.root.merge_text_nodes() + * + * @staticmethod # <<<<<<<<<<<<<< + * cdef LexborHTMLParser from_document(lxb_html_document_t *document, bytes raw_html): + * """Construct a parser from an existing Lexbor document. +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("selectolax.lexbor.LexborHTMLParser.from_document", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF((PyObject *)__pyx_v_obj); + __Pyx_XGIVEREF((PyObject *)__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor.pyx":609 + * return obj + * + * def clone(self): # <<<<<<<<<<<<<< + * """Clone the current document tree. + * +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_29clone(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6lexbor_16LexborHTMLParser_28clone, "LexborHTMLParser.clone(self)\n\nClone the current document tree.\n\nYou can use to do temporary modifications without affecting the original HTML tree.\nIt is tied to the current parser instance.\nGets destroyed when the parser instance is destroyed.\n\nReturns\n-------\nLexborHTMLParser\n A parser instance backed by a deep-copied document."); +static PyMethodDef __pyx_mdef_10selectolax_6lexbor_16LexborHTMLParser_29clone = {"clone", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_29clone, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_16LexborHTMLParser_28clone}; +static PyObject *__pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_29clone(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("clone (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("clone", 1, 0, 0, __pyx_nargs); return NULL; } + const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len < 0)) return NULL; + if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("clone", __pyx_kwds); return NULL;} + __pyx_r = __pyx_pf_10selectolax_6lexbor_16LexborHTMLParser_28clone(((struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_16LexborHTMLParser_28clone(struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *__pyx_v_self) { + lxb_html_document_t *__pyx_v_cloned_document; + lxb_dom_node_t *__pyx_v_cloned_node; + struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *__pyx_v_cls = 0; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + size_t __pyx_t_5; + lxb_html_document_t *__pyx_t_6; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("clone", 0); + + /* "selectolax/lexbor.pyx":625 + * cdef LexborHTMLParser cls + * + * with nogil: # <<<<<<<<<<<<<< + * cloned_document = lxb_html_document_create() + * +*/ + { + PyThreadState * _save; + _save = PyEval_SaveThread(); + __Pyx_FastGIL_Remember(); + /*try:*/ { + + /* "selectolax/lexbor.pyx":626 + * + * with nogil: + * cloned_document = lxb_html_document_create() # <<<<<<<<<<<<<< + * + * if cloned_document == NULL: +*/ + __pyx_v_cloned_document = lxb_html_document_create(); + } + + /* "selectolax/lexbor.pyx":625 + * cdef LexborHTMLParser cls + * + * with nogil: # <<<<<<<<<<<<<< + * cloned_document = lxb_html_document_create() + * +*/ + /*finally:*/ { + /*normal exit:*/{ + __Pyx_FastGIL_Forget(); + PyEval_RestoreThread(_save); + goto __pyx_L5; + } + __pyx_L5:; + } + } + + /* "selectolax/lexbor.pyx":628 + * cloned_document = lxb_html_document_create() + * + * if cloned_document == NULL: # <<<<<<<<<<<<<< + * raise SelectolaxError("Can't create a new document") + * +*/ + __pyx_t_1 = (__pyx_v_cloned_document == NULL); + if (unlikely(__pyx_t_1)) { + + /* "selectolax/lexbor.pyx":629 + * + * if cloned_document == NULL: + * raise SelectolaxError("Can't create a new document") # <<<<<<<<<<<<<< + * + * cloned_document.ready_state = LXB_HTML_DOCUMENT_READY_STATE_COMPLETE +*/ + __pyx_t_3 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_SelectolaxError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 629, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4); + assert(__pyx_t_3); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_4, __pyx__function); + __pyx_t_5 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_Can_t_create_a_new_document}; + __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 629, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + } + __Pyx_Raise(__pyx_t_2, 0, 0, 0); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __PYX_ERR(0, 629, __pyx_L1_error) + + /* "selectolax/lexbor.pyx":628 + * cloned_document = lxb_html_document_create() + * + * if cloned_document == NULL: # <<<<<<<<<<<<<< + * raise SelectolaxError("Can't create a new document") + * +*/ + } + + /* "selectolax/lexbor.pyx":631 + * raise SelectolaxError("Can't create a new document") + * + * cloned_document.ready_state = LXB_HTML_DOCUMENT_READY_STATE_COMPLETE # <<<<<<<<<<<<<< + * + * with nogil: +*/ + __pyx_v_cloned_document->ready_state = LXB_HTML_DOCUMENT_READY_STATE_COMPLETE; + + /* "selectolax/lexbor.pyx":633 + * cloned_document.ready_state = LXB_HTML_DOCUMENT_READY_STATE_COMPLETE + * + * with nogil: # <<<<<<<<<<<<<< + * cloned_node = lxb_dom_document_import_node( + * &cloned_document.dom_document, +*/ + { + PyThreadState * _save; + _save = PyEval_SaveThread(); + __Pyx_FastGIL_Remember(); + /*try:*/ { + + /* "selectolax/lexbor.pyx":636 + * cloned_node = lxb_dom_document_import_node( + * &cloned_document.dom_document, + * lxb_dom_document_root(&self.main_document().dom_document), # <<<<<<<<<<<<<< + * True + * ) +*/ + __pyx_t_6 = __pyx_f_10selectolax_6lexbor_16LexborHTMLParser_main_document(__pyx_v_self); if (unlikely(__Pyx_ErrOccurredWithGIL())) __PYX_ERR(0, 636, __pyx_L8_error) + + /* "selectolax/lexbor.pyx":634 + * + * with nogil: + * cloned_node = lxb_dom_document_import_node( # <<<<<<<<<<<<<< + * &cloned_document.dom_document, + * lxb_dom_document_root(&self.main_document().dom_document), +*/ + __pyx_v_cloned_node = lxb_dom_document_import_node((&__pyx_v_cloned_document->dom_document), ((lxb_dom_node_t *)lxb_dom_document_root((&__pyx_t_6->dom_document))), 1); + } + + /* "selectolax/lexbor.pyx":633 + * cloned_document.ready_state = LXB_HTML_DOCUMENT_READY_STATE_COMPLETE + * + * with nogil: # <<<<<<<<<<<<<< + * cloned_node = lxb_dom_document_import_node( + * &cloned_document.dom_document, +*/ + /*finally:*/ { + /*normal exit:*/{ + __Pyx_FastGIL_Forget(); + PyEval_RestoreThread(_save); + goto __pyx_L9; + } + __pyx_L8_error: { + __Pyx_FastGIL_Forget(); + PyEval_RestoreThread(_save); + goto __pyx_L1_error; + } + __pyx_L9:; + } + } + + /* "selectolax/lexbor.pyx":640 + * ) + * + * if cloned_node == NULL: # <<<<<<<<<<<<<< + * raise SelectolaxError("Can't create a new document") + * +*/ + __pyx_t_1 = (__pyx_v_cloned_node == NULL); + if (unlikely(__pyx_t_1)) { + + /* "selectolax/lexbor.pyx":641 + * + * if cloned_node == NULL: + * raise SelectolaxError("Can't create a new document") # <<<<<<<<<<<<<< + * + * with nogil: +*/ + __pyx_t_4 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_SelectolaxError); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 641, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_5 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); + assert(__pyx_t_4); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_3, __pyx__function); + __pyx_t_5 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_Can_t_create_a_new_document}; + __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_3, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 641, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + } + __Pyx_Raise(__pyx_t_2, 0, 0, 0); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __PYX_ERR(0, 641, __pyx_L1_error) + + /* "selectolax/lexbor.pyx":640 + * ) + * + * if cloned_node == NULL: # <<<<<<<<<<<<<< + * raise SelectolaxError("Can't create a new document") + * +*/ + } + + /* "selectolax/lexbor.pyx":643 + * raise SelectolaxError("Can't create a new document") + * + * with nogil: # <<<<<<<<<<<<<< + * lxb_dom_node_insert_child( cloned_document, cloned_node) + * +*/ + { + PyThreadState * _save; + _save = PyEval_SaveThread(); + __Pyx_FastGIL_Remember(); + /*try:*/ { + + /* "selectolax/lexbor.pyx":644 + * + * with nogil: + * lxb_dom_node_insert_child( cloned_document, cloned_node) # <<<<<<<<<<<<<< + * + * cls = LexborHTMLParser.from_document(cloned_document, self.raw_html) +*/ + lxb_dom_node_insert_child(((lxb_dom_node_t *)__pyx_v_cloned_document), __pyx_v_cloned_node); + } + + /* "selectolax/lexbor.pyx":643 + * raise SelectolaxError("Can't create a new document") + * + * with nogil: # <<<<<<<<<<<<<< + * lxb_dom_node_insert_child( cloned_document, cloned_node) + * +*/ + /*finally:*/ { + /*normal exit:*/{ + __Pyx_FastGIL_Forget(); + PyEval_RestoreThread(_save); + goto __pyx_L13; + } + __pyx_L13:; + } + } + + /* "selectolax/lexbor.pyx":646 + * lxb_dom_node_insert_child( cloned_document, cloned_node) + * + * cls = LexborHTMLParser.from_document(cloned_document, self.raw_html) # <<<<<<<<<<<<<< + * return cls + * +*/ + __pyx_t_2 = __pyx_v_self->raw_html; + __Pyx_INCREF(__pyx_t_2); + __pyx_t_3 = ((PyObject *)__pyx_f_10selectolax_6lexbor_16LexborHTMLParser_from_document(__pyx_v_cloned_document, ((PyObject*)__pyx_t_2))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 646, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_v_cls = ((struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *)__pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/lexbor.pyx":647 + * + * cls = LexborHTMLParser.from_document(cloned_document, self.raw_html) + * return cls # <<<<<<<<<<<<<< + * + * def unwrap_tags(self, list tags, delete_empty = False): +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF((PyObject *)__pyx_v_cls); + __pyx_r = ((PyObject *)__pyx_v_cls); + goto __pyx_L0; + + /* "selectolax/lexbor.pyx":609 + * return obj + * + * def clone(self): # <<<<<<<<<<<<<< + * """Clone the current document tree. + * +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("selectolax.lexbor.LexborHTMLParser.clone", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF((PyObject *)__pyx_v_cls); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor.pyx":649 + * return cls + * + * def unwrap_tags(self, list tags, delete_empty = False): # <<<<<<<<<<<<<< + * """Unwraps specified tags from the HTML tree. + * +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_31unwrap_tags(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6lexbor_16LexborHTMLParser_30unwrap_tags, "LexborHTMLParser.unwrap_tags(self, list tags, delete_empty=False)\n\nUnwraps specified tags from the HTML tree.\n\nWorks the same as the ``unwrap`` method, but applied to a list of tags.\n\nParameters\n----------\ntags : list\n List of tags to remove.\ndelete_empty : bool\n Whenever to delete empty tags.\n\nExamples\n--------\n\n>>> tree = LexborHTMLParser(\"
Hello world!
\")\n>>> tree.body.unwrap_tags(['i','a'])\n>>> tree.body.html\n'
Hello world!
'\n\nReturns\n-------\nNone"); +static PyMethodDef __pyx_mdef_10selectolax_6lexbor_16LexborHTMLParser_31unwrap_tags = {"unwrap_tags", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_31unwrap_tags, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_16LexborHTMLParser_30unwrap_tags}; +static PyObject *__pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_31unwrap_tags(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_tags = 0; + PyObject *__pyx_v_delete_empty = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[2] = {0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("unwrap_tags (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_tags,&__pyx_mstate_global->__pyx_n_u_delete_empty,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 649, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 649, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 649, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "unwrap_tags", 0) < (0)) __PYX_ERR(0, 649, __pyx_L3_error) + if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_False)); + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("unwrap_tags", 0, 1, 2, i); __PYX_ERR(0, 649, __pyx_L3_error) } + } + } else { + switch (__pyx_nargs) { + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 649, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 649, __pyx_L3_error) + break; + default: goto __pyx_L5_argtuple_error; + } + if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_False)); + } + __pyx_v_tags = ((PyObject*)values[0]); + __pyx_v_delete_empty = values[1]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("unwrap_tags", 0, 1, 2, __pyx_nargs); __PYX_ERR(0, 649, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.lexbor.LexborHTMLParser.unwrap_tags", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_tags), (&PyList_Type), 1, "tags", 1))) __PYX_ERR(0, 649, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6lexbor_16LexborHTMLParser_30unwrap_tags(((struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *)__pyx_v_self), __pyx_v_tags, __pyx_v_delete_empty); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_16LexborHTMLParser_30unwrap_tags(struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *__pyx_v_self, PyObject *__pyx_v_tags, PyObject *__pyx_v_delete_empty) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + size_t __pyx_t_5; + PyObject *__pyx_t_6 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("unwrap_tags", 0); + + /* "selectolax/lexbor.pyx":674 + * """ + * # faster to check if the document is empty which should determine if we have a root + * if self.document != NULL: # <<<<<<<<<<<<<< + * self.root.unwrap_tags(tags, delete_empty=delete_empty) + * +*/ + __pyx_t_1 = (__pyx_v_self->document != NULL); + if (__pyx_t_1) { + + /* "selectolax/lexbor.pyx":675 + * # faster to check if the document is empty which should determine if we have a root + * if self.document != NULL: + * self.root.unwrap_tags(tags, delete_empty=delete_empty) # <<<<<<<<<<<<<< + * + * @property +*/ + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_root); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 675, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = __pyx_t_4; + __Pyx_INCREF(__pyx_t_3); + __pyx_t_5 = 0; + { + PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_3, __pyx_v_tags}; + __pyx_t_6 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 675, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_delete_empty, __pyx_v_delete_empty, __pyx_t_6, __pyx_callargs+2, 0) < (0)) __PYX_ERR(0, 675, __pyx_L1_error) + __pyx_t_2 = __Pyx_Object_VectorcallMethod_CallFromBuilder((PyObject*)__pyx_mstate_global->__pyx_n_u_unwrap_tags, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_6); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 675, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "selectolax/lexbor.pyx":674 + * """ + * # faster to check if the document is empty which should determine if we have a root + * if self.document != NULL: # <<<<<<<<<<<<<< + * self.root.unwrap_tags(tags, delete_empty=delete_empty) + * +*/ + } + + /* "selectolax/lexbor.pyx":649 + * return cls + * + * def unwrap_tags(self, list tags, delete_empty = False): # <<<<<<<<<<<<<< + * """Unwraps specified tags from the HTML tree. + * +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_AddTraceback("selectolax.lexbor.LexborHTMLParser.unwrap_tags", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor.pyx":677 + * self.root.unwrap_tags(tags, delete_empty=delete_empty) + * + * @property # <<<<<<<<<<<<<< + * def inner_html(self) -> str: + * """Return HTML representation of the child nodes. +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_10inner_html_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_10inner_html_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6lexbor_16LexborHTMLParser_10inner_html___get__(((struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_16LexborHTMLParser_10inner_html___get__(struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + + /* "selectolax/lexbor.pyx":689 + * text : str | None + * """ + * return self.root.inner_html # <<<<<<<<<<<<<< + * + * @inner_html.setter +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_root); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 689, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_inner_html); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 689, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; + + /* "selectolax/lexbor.pyx":677 + * self.root.unwrap_tags(tags, delete_empty=delete_empty) + * + * @property # <<<<<<<<<<<<<< + * def inner_html(self) -> str: + * """Return HTML representation of the child nodes. +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("selectolax.lexbor.LexborHTMLParser.inner_html.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor.pyx":691 + * return self.root.inner_html + * + * @inner_html.setter # <<<<<<<<<<<<<< + * def inner_html(self, str html): + * """Set inner HTML to the specified HTML. +*/ + +/* Python wrapper */ +static int __pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_10inner_html_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_html); /*proto*/ +static int __pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_10inner_html_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_html) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_html), (&PyUnicode_Type), 1, "html", 1))) __PYX_ERR(0, 692, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6lexbor_16LexborHTMLParser_10inner_html_2__set__(((struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *)__pyx_v_self), ((PyObject*)__pyx_v_html)); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = -1; + goto __pyx_L5_cleaned_up; + __pyx_L0:; + __pyx_L5_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_10selectolax_6lexbor_16LexborHTMLParser_10inner_html_2__set__(struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *__pyx_v_self, PyObject *__pyx_v_html) { + int __pyx_r; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__set__", 0); + + /* "selectolax/lexbor.pyx":706 + * None + * """ + * self.root.inner_html = html # <<<<<<<<<<<<<< + * + * def create_node(self, str tag): +*/ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_root); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 706, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (__Pyx_PyObject_SetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_inner_html, __pyx_v_html) < (0)) __PYX_ERR(0, 706, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "selectolax/lexbor.pyx":691 + * return self.root.inner_html + * + * @inner_html.setter # <<<<<<<<<<<<<< + * def inner_html(self, str html): + * """Set inner HTML to the specified HTML. +*/ + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("selectolax.lexbor.LexborHTMLParser.inner_html.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor.pyx":708 + * self.root.inner_html = html + * + * def create_node(self, str tag): # <<<<<<<<<<<<<< + * """Given an HTML tag name, e.g. `"div"`, create a single empty node for that tag, + * e.g. `"
"`. +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_33create_node(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6lexbor_16LexborHTMLParser_32create_node, "LexborHTMLParser.create_node(self, str tag)\n\nGiven an HTML tag name, e.g. `\"div\"`, create a single empty node for that tag,\ne.g. `\"
\"`.\n\nParameters\n----------\ntag : str\n Name of the tag to create.\n\nReturns\n-------\nLexborNode\n Newly created element node.\nRaises\n------\nSelectolaxError\n If the element cannot be created.\n\nExamples\n--------\n>>> parser = LexborHTMLParser(\"
\")\n>>> new_node = parser.create_node(\"span\")\n>>> new_node.tag_name\n'span'\n>>> parser.root.append_child(new_node)\n>>> parser.html\n'
'"); +static PyMethodDef __pyx_mdef_10selectolax_6lexbor_16LexborHTMLParser_33create_node = {"create_node", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_33create_node, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_16LexborHTMLParser_32create_node}; +static PyObject *__pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_33create_node(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_tag = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("create_node (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_tag,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 708, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 708, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "create_node", 0) < (0)) __PYX_ERR(0, 708, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("create_node", 1, 1, 1, i); __PYX_ERR(0, 708, __pyx_L3_error) } + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 708, __pyx_L3_error) + } + __pyx_v_tag = ((PyObject*)values[0]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("create_node", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 708, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.lexbor.LexborHTMLParser.create_node", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_tag), (&PyUnicode_Type), 1, "tag", 1))) __PYX_ERR(0, 708, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6lexbor_16LexborHTMLParser_32create_node(((struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *)__pyx_v_self), __pyx_v_tag); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_16LexborHTMLParser_32create_node(struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *__pyx_v_self, PyObject *__pyx_v_tag) { + lxb_html_element_t *__pyx_v_element; + lxb_dom_node_t *__pyx_v_dom_node; + PyObject *__pyx_v_pybyte_name = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + size_t __pyx_t_6; + lxb_char_t const *__pyx_t_7; + Py_ssize_t __pyx_t_8; + PyObject *__pyx_t_9 = NULL; + PyObject *__pyx_t_10[3]; + PyObject *__pyx_t_11 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("create_node", 0); + + /* "selectolax/lexbor.pyx":738 + * cdef lxb_html_element_t* element + * cdef lxb_dom_node_t* dom_node + * if not tag: # <<<<<<<<<<<<<< + * raise SelectolaxError("Tag name cannot be empty") + * pybyte_name = tag.encode('UTF-8') +*/ + if (__pyx_v_tag == Py_None) __pyx_t_1 = 0; + else + { + Py_ssize_t __pyx_temp = __Pyx_PyUnicode_IS_TRUE(__pyx_v_tag); + if (unlikely(((!CYTHON_ASSUME_SAFE_SIZE) && __pyx_temp < 0))) __PYX_ERR(0, 738, __pyx_L1_error) + __pyx_t_1 = (__pyx_temp != 0); + } + + __pyx_t_2 = (!__pyx_t_1); + if (unlikely(__pyx_t_2)) { + + /* "selectolax/lexbor.pyx":739 + * cdef lxb_dom_node_t* dom_node + * if not tag: + * raise SelectolaxError("Tag name cannot be empty") # <<<<<<<<<<<<<< + * pybyte_name = tag.encode('UTF-8') + * +*/ + __pyx_t_4 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_SelectolaxError); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 739, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_5))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5); + assert(__pyx_t_4); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_5, __pyx__function); + __pyx_t_6 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_Tag_name_cannot_be_empty}; + __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 739, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(0, 739, __pyx_L1_error) + + /* "selectolax/lexbor.pyx":738 + * cdef lxb_html_element_t* element + * cdef lxb_dom_node_t* dom_node + * if not tag: # <<<<<<<<<<<<<< + * raise SelectolaxError("Tag name cannot be empty") + * pybyte_name = tag.encode('UTF-8') +*/ + } + + /* "selectolax/lexbor.pyx":740 + * if not tag: + * raise SelectolaxError("Tag name cannot be empty") + * pybyte_name = tag.encode('UTF-8') # <<<<<<<<<<<<<< + * + * element = lxb_html_document_create_element( +*/ + if (unlikely(__pyx_v_tag == Py_None)) { + PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "encode"); + __PYX_ERR(0, 740, __pyx_L1_error) + } + __pyx_t_3 = PyUnicode_AsUTF8String(__pyx_v_tag); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 740, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_v_pybyte_name = ((PyObject*)__pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/lexbor.pyx":744 + * element = lxb_html_document_create_element( + * self.document, + * pybyte_name, # <<<<<<<<<<<<<< + * len(pybyte_name), + * NULL +*/ + __pyx_t_7 = __Pyx_PyBytes_AsUString(__pyx_v_pybyte_name); if (unlikely((!__pyx_t_7) && PyErr_Occurred())) __PYX_ERR(0, 744, __pyx_L1_error) + + /* "selectolax/lexbor.pyx":745 + * self.document, + * pybyte_name, + * len(pybyte_name), # <<<<<<<<<<<<<< + * NULL + * ) +*/ + __pyx_t_8 = __Pyx_PyBytes_GET_SIZE(__pyx_v_pybyte_name); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(0, 745, __pyx_L1_error) + + /* "selectolax/lexbor.pyx":742 + * pybyte_name = tag.encode('UTF-8') + * + * element = lxb_html_document_create_element( # <<<<<<<<<<<<<< + * self.document, + * pybyte_name, +*/ + __pyx_v_element = lxb_html_document_create_element(__pyx_v_self->document, ((lxb_char_t const *)__pyx_t_7), __pyx_t_8, NULL); + + /* "selectolax/lexbor.pyx":749 + * ) + * + * if element == NULL: # <<<<<<<<<<<<<< + * raise SelectolaxError(f"Can't create element for tag '{tag}'") + * +*/ + __pyx_t_2 = (__pyx_v_element == NULL); + if (unlikely(__pyx_t_2)) { + + /* "selectolax/lexbor.pyx":750 + * + * if element == NULL: + * raise SelectolaxError(f"Can't create element for tag '{tag}'") # <<<<<<<<<<<<<< + * + * dom_node = element +*/ + __pyx_t_5 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_SelectolaxError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 750, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_9 = __Pyx_PyUnicode_Unicode(__pyx_v_tag); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 750, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_10[0] = __pyx_mstate_global->__pyx_kp_u_Can_t_create_element_for_tag; + __pyx_t_10[1] = __pyx_t_9; + __pyx_t_10[2] = __pyx_mstate_global->__pyx_kp_u__10; + __pyx_t_11 = __Pyx_PyUnicode_Join(__pyx_t_10, 3, 30 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_9) + 1, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_9)); + if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 750, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __pyx_t_6 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); + assert(__pyx_t_5); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_5); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_4, __pyx__function); + __pyx_t_6 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_11}; + __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 750, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(0, 750, __pyx_L1_error) + + /* "selectolax/lexbor.pyx":749 + * ) + * + * if element == NULL: # <<<<<<<<<<<<<< + * raise SelectolaxError(f"Can't create element for tag '{tag}'") + * +*/ + } + + /* "selectolax/lexbor.pyx":752 + * raise SelectolaxError(f"Can't create element for tag '{tag}'") + * + * dom_node = element # <<<<<<<<<<<<<< + * + * return LexborNode.new(dom_node, self) +*/ + __pyx_v_dom_node = ((lxb_dom_node_t *)__pyx_v_element); + + /* "selectolax/lexbor.pyx":754 + * dom_node = element + * + * return LexborNode.new(dom_node, self) # <<<<<<<<<<<<<< +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_3 = ((PyObject *)__pyx_f_10selectolax_6lexbor_10LexborNode_new(__pyx_v_dom_node, __pyx_v_self)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 754, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_r = __pyx_t_3; + __pyx_t_3 = 0; + goto __pyx_L0; + + /* "selectolax/lexbor.pyx":708 + * self.root.inner_html = html + * + * def create_node(self, str tag): # <<<<<<<<<<<<<< + * """Given an HTML tag name, e.g. `"div"`, create a single empty node for that tag, + * e.g. `"
"`. +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_9); + __Pyx_XDECREF(__pyx_t_11); + __Pyx_AddTraceback("selectolax.lexbor.LexborHTMLParser.create_node", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_pybyte_name); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/lexbor.pxd":272 + * cdef lxb_html_document_t *_fragment_document + * cdef bint _is_fragment + * cdef public bytes raw_html # <<<<<<<<<<<<<< + * cdef LexborCSSSelector _selector + * cdef inline void _new_html_document(self) +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_8raw_html_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_8raw_html_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6lexbor_16LexborHTMLParser_8raw_html___get__(((struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_16LexborHTMLParser_8raw_html___get__(struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__", 0); + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_self->raw_html); + __pyx_r = __pyx_v_self->raw_html; + goto __pyx_L0; + + /* function exit code */ + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_8raw_html_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_8raw_html_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6lexbor_16LexborHTMLParser_8raw_html_2__set__(((struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_10selectolax_6lexbor_16LexborHTMLParser_8raw_html_2__set__(struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *__pyx_v_self, PyObject *__pyx_v_value) { + int __pyx_r; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__set__", 0); + __pyx_t_1 = __pyx_v_value; + __Pyx_INCREF(__pyx_t_1); + if (!(likely(PyBytes_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("bytes", __pyx_t_1))) __PYX_ERR(5, 272, __pyx_L1_error) + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF(__pyx_v_self->raw_html); + __Pyx_DECREF(__pyx_v_self->raw_html); + __pyx_v_self->raw_html = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("selectolax.lexbor.LexborHTMLParser.raw_html.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_8raw_html_5__del__(PyObject *__pyx_v_self); /*proto*/ +static int __pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_8raw_html_5__del__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6lexbor_16LexborHTMLParser_8raw_html_4__del__(((struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_10selectolax_6lexbor_16LexborHTMLParser_8raw_html_4__del__(struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *__pyx_v_self) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__del__", 0); + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + __Pyx_GOTREF(__pyx_v_self->raw_html); + __Pyx_DECREF(__pyx_v_self->raw_html); + __pyx_v_self->raw_html = ((PyObject*)Py_None); + + /* function exit code */ + __pyx_r = 0; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * raise TypeError, "self._fragment_document,self.document cannot be converted to a Python object for pickling" + * def __setstate_cython__(self, __pyx_state): +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_35__reduce_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6lexbor_16LexborHTMLParser_34__reduce_cython__, "LexborHTMLParser.__reduce_cython__(self)"); +static PyMethodDef __pyx_mdef_10selectolax_6lexbor_16LexborHTMLParser_35__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_35__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_16LexborHTMLParser_34__reduce_cython__}; +static PyObject *__pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_35__reduce_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL; } + const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len < 0)) return NULL; + if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;} + __pyx_r = __pyx_pf_10selectolax_6lexbor_16LexborHTMLParser_34__reduce_cython__(((struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_16LexborHTMLParser_34__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__reduce_cython__", 0); + + /* "(tree fragment)":2 + * def __reduce_cython__(self): + * raise TypeError, "self._fragment_document,self.document cannot be converted to a Python object for pickling" # <<<<<<<<<<<<<< + * def __setstate_cython__(self, __pyx_state): + * raise TypeError, "self._fragment_document,self.document cannot be converted to a Python object for pickling" +*/ + __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), __pyx_mstate_global->__pyx_kp_u_self__fragment_document_self_doc, 0, 0); + __PYX_ERR(1, 2, __pyx_L1_error) + + /* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * raise TypeError, "self._fragment_document,self.document cannot be converted to a Python object for pickling" + * def __setstate_cython__(self, __pyx_state): +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_AddTraceback("selectolax.lexbor.LexborHTMLParser.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":3 + * def __reduce_cython__(self): + * raise TypeError, "self._fragment_document,self.document cannot be converted to a Python object for pickling" + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * raise TypeError, "self._fragment_document,self.document cannot be converted to a Python object for pickling" +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_37__setstate_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6lexbor_16LexborHTMLParser_36__setstate_cython__, "LexborHTMLParser.__setstate_cython__(self, __pyx_state)"); +static PyMethodDef __pyx_mdef_10selectolax_6lexbor_16LexborHTMLParser_37__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_37__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_16LexborHTMLParser_36__setstate_cython__}; +static PyObject *__pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_37__setstate_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_state,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 3, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < (0)) __PYX_ERR(1, 3, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 3, __pyx_L3_error) } + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error) + } + __pyx_v___pyx_state = values[0]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.lexbor.LexborHTMLParser.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_10selectolax_6lexbor_16LexborHTMLParser_36__setstate_cython__(((struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *)__pyx_v_self), __pyx_v___pyx_state); + + /* function exit code */ + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_16LexborHTMLParser_36__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__setstate_cython__", 0); + + /* "(tree fragment)":4 + * raise TypeError, "self._fragment_document,self.document cannot be converted to a Python object for pickling" + * def __setstate_cython__(self, __pyx_state): + * raise TypeError, "self._fragment_document,self.document cannot be converted to a Python object for pickling" # <<<<<<<<<<<<<< +*/ + __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), __pyx_mstate_global->__pyx_kp_u_self__fragment_document_self_doc, 0, 0); + __PYX_ERR(1, 4, __pyx_L1_error) + + /* "(tree fragment)":3 + * def __reduce_cython__(self): + * raise TypeError, "self._fragment_document,self.document cannot be converted to a Python object for pickling" + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * raise TypeError, "self._fragment_document,self.document cannot be converted to a Python object for pickling" +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_AddTraceback("selectolax.lexbor.LexborHTMLParser.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":4 + * int __Pyx_CheckUnpickleChecksum(long, long, long, long, const char*) except -1 + * int __Pyx_UpdateUnpickledDict(object, object, Py_ssize_t) except -1 + * def __pyx_unpickle_TextContainer(__pyx_type, long __pyx_checksum, tuple __pyx_state): # <<<<<<<<<<<<<< + * cdef object __pyx_result + * __Pyx_CheckUnpickleChecksum(__pyx_checksum, 0x69fd762, 0xf301bc8, 0x2cd3639, b'_text, separator, strip') +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_23__pyx_unpickle_TextContainer(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6lexbor_22__pyx_unpickle_TextContainer, "__pyx_unpickle_TextContainer(__pyx_type, long __pyx_checksum, tuple __pyx_state)"); +static PyMethodDef __pyx_mdef_10selectolax_6lexbor_23__pyx_unpickle_TextContainer = {"__pyx_unpickle_TextContainer", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_23__pyx_unpickle_TextContainer, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_22__pyx_unpickle_TextContainer}; +static PyObject *__pyx_pw_10selectolax_6lexbor_23__pyx_unpickle_TextContainer(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v___pyx_type = 0; + long __pyx_v___pyx_checksum; + PyObject *__pyx_v___pyx_state = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[3] = {0,0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__pyx_unpickle_TextContainer (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_type,&__pyx_mstate_global->__pyx_n_u_pyx_checksum,&__pyx_mstate_global->__pyx_n_u_pyx_state,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 4, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 3: + values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(1, 4, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(1, 4, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 4, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__pyx_unpickle_TextContainer", 0) < (0)) __PYX_ERR(1, 4, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 3; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_TextContainer", 1, 3, 3, i); __PYX_ERR(1, 4, __pyx_L3_error) } + } + } else if (unlikely(__pyx_nargs != 3)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 4, __pyx_L3_error) + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(1, 4, __pyx_L3_error) + values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(1, 4, __pyx_L3_error) + } + __pyx_v___pyx_type = values[0]; + __pyx_v___pyx_checksum = __Pyx_PyLong_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 4, __pyx_L3_error) + __pyx_v___pyx_state = ((PyObject*)values[2]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_TextContainer", 1, 3, 3, __pyx_nargs); __PYX_ERR(1, 4, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.lexbor.__pyx_unpickle_TextContainer", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v___pyx_state), (&PyTuple_Type), 1, "__pyx_state", 1))) __PYX_ERR(1, 4, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6lexbor_22__pyx_unpickle_TextContainer(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_22__pyx_unpickle_TextContainer(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_v___pyx_result = 0; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + size_t __pyx_t_4; + int __pyx_t_5; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__pyx_unpickle_TextContainer", 0); + + /* "(tree fragment)":6 + * def __pyx_unpickle_TextContainer(__pyx_type, long __pyx_checksum, tuple __pyx_state): + * cdef object __pyx_result + * __Pyx_CheckUnpickleChecksum(__pyx_checksum, 0x69fd762, 0xf301bc8, 0x2cd3639, b'_text, separator, strip') # <<<<<<<<<<<<<< + * __pyx_result = TextContainer.__new__(__pyx_type) + * if __pyx_state is not None: +*/ + __pyx_t_1 = __Pyx_CheckUnpickleChecksum(__pyx_v___pyx_checksum, 0x69fd762, 0xf301bc8, 0x2cd3639, __pyx_k_text_separator_strip); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(1, 6, __pyx_L1_error) + + /* "(tree fragment)":7 + * cdef object __pyx_result + * __Pyx_CheckUnpickleChecksum(__pyx_checksum, 0x69fd762, 0xf301bc8, 0x2cd3639, b'_text, separator, strip') + * __pyx_result = TextContainer.__new__(__pyx_type) # <<<<<<<<<<<<<< + * if __pyx_state is not None: + * __pyx_unpickle_TextContainer__set_state( __pyx_result, __pyx_state) +*/ + __pyx_t_3 = ((PyObject *)__pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_TextContainer); + __Pyx_INCREF(__pyx_t_3); + __pyx_t_4 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v___pyx_type}; + __pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_new, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + } + __pyx_v___pyx_result = __pyx_t_2; + __pyx_t_2 = 0; + + /* "(tree fragment)":8 + * __Pyx_CheckUnpickleChecksum(__pyx_checksum, 0x69fd762, 0xf301bc8, 0x2cd3639, b'_text, separator, strip') + * __pyx_result = TextContainer.__new__(__pyx_type) + * if __pyx_state is not None: # <<<<<<<<<<<<<< + * __pyx_unpickle_TextContainer__set_state( __pyx_result, __pyx_state) + * return __pyx_result +*/ + __pyx_t_5 = (__pyx_v___pyx_state != ((PyObject*)Py_None)); + if (__pyx_t_5) { + + /* "(tree fragment)":9 + * __pyx_result = TextContainer.__new__(__pyx_type) + * if __pyx_state is not None: + * __pyx_unpickle_TextContainer__set_state( __pyx_result, __pyx_state) # <<<<<<<<<<<<<< + * return __pyx_result + * cdef __pyx_unpickle_TextContainer__set_state(TextContainer __pyx_result, __pyx_state: tuple): +*/ + __pyx_t_2 = __pyx_f_10selectolax_6lexbor___pyx_unpickle_TextContainer__set_state(((struct __pyx_obj_10selectolax_6lexbor_TextContainer *)__pyx_v___pyx_result), __pyx_v___pyx_state); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 9, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "(tree fragment)":8 + * __Pyx_CheckUnpickleChecksum(__pyx_checksum, 0x69fd762, 0xf301bc8, 0x2cd3639, b'_text, separator, strip') + * __pyx_result = TextContainer.__new__(__pyx_type) + * if __pyx_state is not None: # <<<<<<<<<<<<<< + * __pyx_unpickle_TextContainer__set_state( __pyx_result, __pyx_state) + * return __pyx_result +*/ + } + + /* "(tree fragment)":10 + * if __pyx_state is not None: + * __pyx_unpickle_TextContainer__set_state( __pyx_result, __pyx_state) + * return __pyx_result # <<<<<<<<<<<<<< + * cdef __pyx_unpickle_TextContainer__set_state(TextContainer __pyx_result, __pyx_state: tuple): + * __pyx_result._text = __pyx_state[0]; __pyx_result.separator = __pyx_state[1]; __pyx_result.strip = __pyx_state[2] +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v___pyx_result); + __pyx_r = __pyx_v___pyx_result; + goto __pyx_L0; + + /* "(tree fragment)":4 + * int __Pyx_CheckUnpickleChecksum(long, long, long, long, const char*) except -1 + * int __Pyx_UpdateUnpickledDict(object, object, Py_ssize_t) except -1 + * def __pyx_unpickle_TextContainer(__pyx_type, long __pyx_checksum, tuple __pyx_state): # <<<<<<<<<<<<<< + * cdef object __pyx_result + * __Pyx_CheckUnpickleChecksum(__pyx_checksum, 0x69fd762, 0xf301bc8, 0x2cd3639, b'_text, separator, strip') +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("selectolax.lexbor.__pyx_unpickle_TextContainer", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v___pyx_result); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":11 + * __pyx_unpickle_TextContainer__set_state( __pyx_result, __pyx_state) + * return __pyx_result + * cdef __pyx_unpickle_TextContainer__set_state(TextContainer __pyx_result, __pyx_state: tuple): # <<<<<<<<<<<<<< + * __pyx_result._text = __pyx_state[0]; __pyx_result.separator = __pyx_state[1]; __pyx_result.strip = __pyx_state[2] + * __Pyx_UpdateUnpickledDict(__pyx_result, __pyx_state, 3) +*/ + +static PyObject *__pyx_f_10selectolax_6lexbor___pyx_unpickle_TextContainer__set_state(struct __pyx_obj_10selectolax_6lexbor_TextContainer *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + int __pyx_t_3; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__pyx_unpickle_TextContainer__set_state", 0); + + /* "(tree fragment)":12 + * return __pyx_result + * cdef __pyx_unpickle_TextContainer__set_state(TextContainer __pyx_result, __pyx_state: tuple): + * __pyx_result._text = __pyx_state[0]; __pyx_result.separator = __pyx_state[1]; __pyx_result.strip = __pyx_state[2] # <<<<<<<<<<<<<< + * __Pyx_UpdateUnpickledDict(__pyx_result, __pyx_state, 3) +*/ + __pyx_t_1 = __Pyx_GetItemInt(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 0, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (!(likely(PyUnicode_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_1))) __PYX_ERR(1, 12, __pyx_L1_error) + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF(__pyx_v___pyx_result->_text); + __Pyx_DECREF(__pyx_v___pyx_result->_text); + __pyx_v___pyx_result->_text = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_GetItemInt(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyLong_From_long, 0, 0, 0, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (!(likely(PyUnicode_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_1))) __PYX_ERR(1, 12, __pyx_L1_error) + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF(__pyx_v___pyx_result->separator); + __Pyx_DECREF(__pyx_v___pyx_result->separator); + __pyx_v___pyx_result->separator = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_GetItemInt(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyLong_From_long, 0, 0, 0, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v___pyx_result->strip = __pyx_t_2; + + /* "(tree fragment)":13 + * cdef __pyx_unpickle_TextContainer__set_state(TextContainer __pyx_result, __pyx_state: tuple): + * __pyx_result._text = __pyx_state[0]; __pyx_result.separator = __pyx_state[1]; __pyx_result.strip = __pyx_state[2] + * __Pyx_UpdateUnpickledDict(__pyx_result, __pyx_state, 3) # <<<<<<<<<<<<<< +*/ + __pyx_t_3 = __Pyx_UpdateUnpickledDict(((PyObject *)__pyx_v___pyx_result), __pyx_v___pyx_state, 3); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error) + + /* "(tree fragment)":11 + * __pyx_unpickle_TextContainer__set_state( __pyx_result, __pyx_state) + * return __pyx_result + * cdef __pyx_unpickle_TextContainer__set_state(TextContainer __pyx_result, __pyx_state: tuple): # <<<<<<<<<<<<<< + * __pyx_result._text = __pyx_state[0]; __pyx_result.separator = __pyx_state[1]; __pyx_result.strip = __pyx_state[2] + * __Pyx_UpdateUnpickledDict(__pyx_result, __pyx_state, 3) +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("selectolax.lexbor.__pyx_unpickle_TextContainer__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":4 + * int __Pyx_CheckUnpickleChecksum(long, long, long, long, const char*) except -1 + * int __Pyx_UpdateUnpickledDict(object, object, Py_ssize_t) except -1 + * def __pyx_unpickle_LexborSelector(__pyx_type, long __pyx_checksum, tuple __pyx_state): # <<<<<<<<<<<<<< + * cdef object __pyx_result + * __Pyx_CheckUnpickleChecksum(__pyx_checksum, 0xc5dfe7e, 0xad8d8ab, 0xc00154f, b'node, nodes') +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6lexbor_25__pyx_unpickle_LexborSelector(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6lexbor_24__pyx_unpickle_LexborSelector, "__pyx_unpickle_LexborSelector(__pyx_type, long __pyx_checksum, tuple __pyx_state)"); +static PyMethodDef __pyx_mdef_10selectolax_6lexbor_25__pyx_unpickle_LexborSelector = {"__pyx_unpickle_LexborSelector", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_25__pyx_unpickle_LexborSelector, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_24__pyx_unpickle_LexborSelector}; +static PyObject *__pyx_pw_10selectolax_6lexbor_25__pyx_unpickle_LexborSelector(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v___pyx_type = 0; + long __pyx_v___pyx_checksum; + PyObject *__pyx_v___pyx_state = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[3] = {0,0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__pyx_unpickle_LexborSelector (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_type,&__pyx_mstate_global->__pyx_n_u_pyx_checksum,&__pyx_mstate_global->__pyx_n_u_pyx_state,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 4, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 3: + values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(1, 4, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(1, 4, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 4, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__pyx_unpickle_LexborSelector", 0) < (0)) __PYX_ERR(1, 4, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 3; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_LexborSelector", 1, 3, 3, i); __PYX_ERR(1, 4, __pyx_L3_error) } + } + } else if (unlikely(__pyx_nargs != 3)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 4, __pyx_L3_error) + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(1, 4, __pyx_L3_error) + values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(1, 4, __pyx_L3_error) + } + __pyx_v___pyx_type = values[0]; + __pyx_v___pyx_checksum = __Pyx_PyLong_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 4, __pyx_L3_error) + __pyx_v___pyx_state = ((PyObject*)values[2]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_LexborSelector", 1, 3, 3, __pyx_nargs); __PYX_ERR(1, 4, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.lexbor.__pyx_unpickle_LexborSelector", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v___pyx_state), (&PyTuple_Type), 1, "__pyx_state", 1))) __PYX_ERR(1, 4, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6lexbor_24__pyx_unpickle_LexborSelector(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6lexbor_24__pyx_unpickle_LexborSelector(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_v___pyx_result = 0; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + size_t __pyx_t_4; + int __pyx_t_5; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__pyx_unpickle_LexborSelector", 0); + + /* "(tree fragment)":6 + * def __pyx_unpickle_LexborSelector(__pyx_type, long __pyx_checksum, tuple __pyx_state): + * cdef object __pyx_result + * __Pyx_CheckUnpickleChecksum(__pyx_checksum, 0xc5dfe7e, 0xad8d8ab, 0xc00154f, b'node, nodes') # <<<<<<<<<<<<<< + * __pyx_result = LexborSelector.__new__(__pyx_type) + * if __pyx_state is not None: +*/ + __pyx_t_1 = __Pyx_CheckUnpickleChecksum(__pyx_v___pyx_checksum, 0xc5dfe7e, 0xad8d8ab, 0xc00154f, __pyx_k_node_nodes); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(1, 6, __pyx_L1_error) + + /* "(tree fragment)":7 + * cdef object __pyx_result + * __Pyx_CheckUnpickleChecksum(__pyx_checksum, 0xc5dfe7e, 0xad8d8ab, 0xc00154f, b'node, nodes') + * __pyx_result = LexborSelector.__new__(__pyx_type) # <<<<<<<<<<<<<< + * if __pyx_state is not None: + * __pyx_unpickle_LexborSelector__set_state( __pyx_result, __pyx_state) +*/ + __pyx_t_3 = ((PyObject *)__pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborSelector); + __Pyx_INCREF(__pyx_t_3); + __pyx_t_4 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v___pyx_type}; + __pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_new, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + } + __pyx_v___pyx_result = __pyx_t_2; + __pyx_t_2 = 0; + + /* "(tree fragment)":8 + * __Pyx_CheckUnpickleChecksum(__pyx_checksum, 0xc5dfe7e, 0xad8d8ab, 0xc00154f, b'node, nodes') + * __pyx_result = LexborSelector.__new__(__pyx_type) + * if __pyx_state is not None: # <<<<<<<<<<<<<< + * __pyx_unpickle_LexborSelector__set_state( __pyx_result, __pyx_state) + * return __pyx_result +*/ + __pyx_t_5 = (__pyx_v___pyx_state != ((PyObject*)Py_None)); + if (__pyx_t_5) { + + /* "(tree fragment)":9 + * __pyx_result = LexborSelector.__new__(__pyx_type) + * if __pyx_state is not None: + * __pyx_unpickle_LexborSelector__set_state( __pyx_result, __pyx_state) # <<<<<<<<<<<<<< + * return __pyx_result + * cdef __pyx_unpickle_LexborSelector__set_state(LexborSelector __pyx_result, __pyx_state: tuple): +*/ + __pyx_t_2 = __pyx_f_10selectolax_6lexbor___pyx_unpickle_LexborSelector__set_state(((struct __pyx_obj_10selectolax_6lexbor_LexborSelector *)__pyx_v___pyx_result), __pyx_v___pyx_state); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 9, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "(tree fragment)":8 + * __Pyx_CheckUnpickleChecksum(__pyx_checksum, 0xc5dfe7e, 0xad8d8ab, 0xc00154f, b'node, nodes') + * __pyx_result = LexborSelector.__new__(__pyx_type) + * if __pyx_state is not None: # <<<<<<<<<<<<<< + * __pyx_unpickle_LexborSelector__set_state( __pyx_result, __pyx_state) + * return __pyx_result +*/ + } + + /* "(tree fragment)":10 + * if __pyx_state is not None: + * __pyx_unpickle_LexborSelector__set_state( __pyx_result, __pyx_state) + * return __pyx_result # <<<<<<<<<<<<<< + * cdef __pyx_unpickle_LexborSelector__set_state(LexborSelector __pyx_result, __pyx_state: tuple): + * __pyx_result.node = __pyx_state[0]; __pyx_result.nodes = __pyx_state[1] +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v___pyx_result); + __pyx_r = __pyx_v___pyx_result; + goto __pyx_L0; + + /* "(tree fragment)":4 + * int __Pyx_CheckUnpickleChecksum(long, long, long, long, const char*) except -1 + * int __Pyx_UpdateUnpickledDict(object, object, Py_ssize_t) except -1 + * def __pyx_unpickle_LexborSelector(__pyx_type, long __pyx_checksum, tuple __pyx_state): # <<<<<<<<<<<<<< + * cdef object __pyx_result + * __Pyx_CheckUnpickleChecksum(__pyx_checksum, 0xc5dfe7e, 0xad8d8ab, 0xc00154f, b'node, nodes') +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("selectolax.lexbor.__pyx_unpickle_LexborSelector", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v___pyx_result); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":11 + * __pyx_unpickle_LexborSelector__set_state( __pyx_result, __pyx_state) + * return __pyx_result + * cdef __pyx_unpickle_LexborSelector__set_state(LexborSelector __pyx_result, __pyx_state: tuple): # <<<<<<<<<<<<<< + * __pyx_result.node = __pyx_state[0]; __pyx_result.nodes = __pyx_state[1] + * __Pyx_UpdateUnpickledDict(__pyx_result, __pyx_state, 2) +*/ + +static PyObject *__pyx_f_10selectolax_6lexbor___pyx_unpickle_LexborSelector__set_state(struct __pyx_obj_10selectolax_6lexbor_LexborSelector *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__pyx_unpickle_LexborSelector__set_state", 0); + + /* "(tree fragment)":12 + * return __pyx_result + * cdef __pyx_unpickle_LexborSelector__set_state(LexborSelector __pyx_result, __pyx_state: tuple): + * __pyx_result.node = __pyx_state[0]; __pyx_result.nodes = __pyx_state[1] # <<<<<<<<<<<<<< + * __Pyx_UpdateUnpickledDict(__pyx_result, __pyx_state, 2) +*/ + __pyx_t_1 = __Pyx_GetItemInt(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 0, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborNode))))) __PYX_ERR(1, 12, __pyx_L1_error) + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF((PyObject *)__pyx_v___pyx_result->node); + __Pyx_DECREF((PyObject *)__pyx_v___pyx_result->node); + __pyx_v___pyx_result->node = ((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)__pyx_t_1); + __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_GetItemInt(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyLong_From_long, 0, 0, 0, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (!(likely(PyList_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("list", __pyx_t_1))) __PYX_ERR(1, 12, __pyx_L1_error) + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF(__pyx_v___pyx_result->nodes); + __Pyx_DECREF(__pyx_v___pyx_result->nodes); + __pyx_v___pyx_result->nodes = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* "(tree fragment)":13 + * cdef __pyx_unpickle_LexborSelector__set_state(LexborSelector __pyx_result, __pyx_state: tuple): + * __pyx_result.node = __pyx_state[0]; __pyx_result.nodes = __pyx_state[1] + * __Pyx_UpdateUnpickledDict(__pyx_result, __pyx_state, 2) # <<<<<<<<<<<<<< +*/ + __pyx_t_2 = __Pyx_UpdateUnpickledDict(((PyObject *)__pyx_v___pyx_result), __pyx_v___pyx_state, 2); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error) + + /* "(tree fragment)":11 + * __pyx_unpickle_LexborSelector__set_state( __pyx_result, __pyx_state) + * return __pyx_result + * cdef __pyx_unpickle_LexborSelector__set_state(LexborSelector __pyx_result, __pyx_state: tuple): # <<<<<<<<<<<<<< + * __pyx_result.node = __pyx_state[0]; __pyx_result.nodes = __pyx_state[1] + * __Pyx_UpdateUnpickledDict(__pyx_result, __pyx_state, 2) +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("selectolax.lexbor.__pyx_unpickle_LexborSelector__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} +/* #### Code section: module_exttypes ### */ +static struct __pyx_vtabstruct_10selectolax_6lexbor_LexborNode __pyx_vtable_10selectolax_6lexbor_LexborNode; + +static PyObject *__pyx_tp_new_10selectolax_6lexbor_LexborNode(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { + struct __pyx_obj_10selectolax_6lexbor_LexborNode *p; + PyObject *o; + o = __Pyx_AllocateExtensionType(t, 1); + if (unlikely(!o)) return 0; + p = ((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)o); + p->__pyx_vtab = __pyx_vtabptr_10selectolax_6lexbor_LexborNode; + p->parser = ((struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *)Py_None); Py_INCREF(Py_None); + return o; +} + +static void __pyx_tp_dealloc_10selectolax_6lexbor_LexborNode(PyObject *o) { + struct __pyx_obj_10selectolax_6lexbor_LexborNode *p = (struct __pyx_obj_10selectolax_6lexbor_LexborNode *)o; + PyObject_GC_UnTrack(o); + Py_CLEAR(p->parser); + PyTypeObject *tp = Py_TYPE(o); + #if CYTHON_USE_TYPE_SLOTS + (*tp->tp_free)(o); + #else + { + freefunc tp_free = (freefunc)PyType_GetSlot(tp, Py_tp_free); + if (tp_free) tp_free(o); + } + #endif + #if CYTHON_USE_TYPE_SPECS + Py_DECREF(tp); + #endif +} + +static int __pyx_tp_traverse_10selectolax_6lexbor_LexborNode(PyObject *o, visitproc v, void *a) { + int e; + struct __pyx_obj_10selectolax_6lexbor_LexborNode *p = (struct __pyx_obj_10selectolax_6lexbor_LexborNode *)o; + { + e = __Pyx_call_type_traverse(o, 1, v, a); + if (e) return e; + } + if (p->parser) { + e = (*v)(((PyObject *)p->parser), a); if (e) return e; + } + return 0; +} + +static int __pyx_tp_clear_10selectolax_6lexbor_LexborNode(PyObject *o) { + PyObject* tmp; + struct __pyx_obj_10selectolax_6lexbor_LexborNode *p = (struct __pyx_obj_10selectolax_6lexbor_LexborNode *)o; + tmp = ((PyObject*)p->parser); + p->parser = ((struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *)Py_None); Py_INCREF(Py_None); + Py_XDECREF(tmp); + return 0; +} + +static PyObject *__pyx_tp_richcompare_10selectolax_6lexbor_LexborNode(PyObject *o1, PyObject *o2, int op) { + switch (op) { + case Py_EQ: { + return __pyx_pw_10selectolax_6lexbor_10LexborNode_53__eq__(o1, o2); + } + case Py_NE: { + PyObject *ret; + ret = __pyx_pw_10selectolax_6lexbor_10LexborNode_53__eq__(o1, o2); + if (likely(ret && ret != Py_NotImplemented)) { + int b = __Pyx_PyObject_IsTrue(ret); + Py_DECREF(ret); + if (unlikely(b < 0)) return NULL; + ret = (b) ? Py_False : Py_True; + Py_INCREF(ret); + } + return ret; + } + default: { + return __Pyx_NewRef(Py_NotImplemented); + } + } +} + +static PyObject *__pyx_getprop_10selectolax_6lexbor_10LexborNode_mem_id(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_10selectolax_6lexbor_10LexborNode_6mem_id_1__get__(o); +} + +static PyObject *__pyx_getprop_10selectolax_6lexbor_10LexborNode_child(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_10selectolax_6lexbor_10LexborNode_5child_1__get__(o); +} + +static PyObject *__pyx_getprop_10selectolax_6lexbor_10LexborNode_first_child(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_10selectolax_6lexbor_10LexborNode_11first_child_1__get__(o); +} + +static PyObject *__pyx_getprop_10selectolax_6lexbor_10LexborNode_parent(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_10selectolax_6lexbor_10LexborNode_6parent_1__get__(o); +} + +static PyObject *__pyx_getprop_10selectolax_6lexbor_10LexborNode_next(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_10selectolax_6lexbor_10LexborNode_4next_1__get__(o); +} + +static PyObject *__pyx_getprop_10selectolax_6lexbor_10LexborNode_prev(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_10selectolax_6lexbor_10LexborNode_4prev_1__get__(o); +} + +static PyObject *__pyx_getprop_10selectolax_6lexbor_10LexborNode_last_child(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_10selectolax_6lexbor_10LexborNode_10last_child_1__get__(o); +} + +static PyObject *__pyx_getprop_10selectolax_6lexbor_10LexborNode_html(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_10selectolax_6lexbor_10LexborNode_4html_1__get__(o); +} + +static PyObject *__pyx_getprop_10selectolax_6lexbor_10LexborNode_tag_id(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_10selectolax_6lexbor_10LexborNode_6tag_id_1__get__(o); +} + +static PyObject *__pyx_getprop_10selectolax_6lexbor_10LexborNode_tag(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_10selectolax_6lexbor_10LexborNode_3tag_1__get__(o); +} + +static PyObject *__pyx_getprop_10selectolax_6lexbor_10LexborNode_attributes(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_10selectolax_6lexbor_10LexborNode_10attributes_1__get__(o); +} + +static PyObject *__pyx_getprop_10selectolax_6lexbor_10LexborNode_attrs(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_10selectolax_6lexbor_10LexborNode_5attrs_1__get__(o); +} + +static PyObject *__pyx_getprop_10selectolax_6lexbor_10LexborNode_id(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_10selectolax_6lexbor_10LexborNode_2id_1__get__(o); +} + +static PyObject *__pyx_getprop_10selectolax_6lexbor_10LexborNode_raw_value(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_10selectolax_6lexbor_10LexborNode_9raw_value_1__get__(o); +} + +static PyObject *__pyx_getprop_10selectolax_6lexbor_10LexborNode_text_content(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_10selectolax_6lexbor_10LexborNode_12text_content_1__get__(o); +} + +static PyObject *__pyx_getprop_10selectolax_6lexbor_10LexborNode_comment_content(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_10selectolax_6lexbor_10LexborNode_15comment_content_1__get__(o); +} + +static PyObject *__pyx_getprop_10selectolax_6lexbor_10LexborNode_inner_html(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_10selectolax_6lexbor_10LexborNode_10inner_html_1__get__(o); +} + +static int __pyx_setprop_10selectolax_6lexbor_10LexborNode_inner_html(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { + if (v) { + return __pyx_pw_10selectolax_6lexbor_10LexborNode_10inner_html_3__set__(o, v); + } + else { + PyErr_SetString(PyExc_NotImplementedError, "__del__"); + return -1; + } +} + +static PyObject *__pyx_getprop_10selectolax_6lexbor_10LexborNode_is_element_node(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_10selectolax_6lexbor_10LexborNode_15is_element_node_1__get__(o); +} + +static PyObject *__pyx_getprop_10selectolax_6lexbor_10LexborNode_is_text_node(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_10selectolax_6lexbor_10LexborNode_12is_text_node_1__get__(o); +} + +static PyObject *__pyx_getprop_10selectolax_6lexbor_10LexborNode_is_comment_node(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_10selectolax_6lexbor_10LexborNode_15is_comment_node_1__get__(o); +} + +static PyObject *__pyx_getprop_10selectolax_6lexbor_10LexborNode_is_document_node(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_10selectolax_6lexbor_10LexborNode_16is_document_node_1__get__(o); +} + +static PyObject *__pyx_getprop_10selectolax_6lexbor_10LexborNode_is_empty_text_node(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_10selectolax_6lexbor_10LexborNode_18is_empty_text_node_1__get__(o); +} + +static PyObject *__pyx_getprop_10selectolax_6lexbor_10LexborNode_parser(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_10selectolax_6lexbor_10LexborNode_6parser_1__get__(o); +} + +static int __pyx_setprop_10selectolax_6lexbor_10LexborNode_parser(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { + if (v) { + return __pyx_pw_10selectolax_6lexbor_10LexborNode_6parser_3__set__(o, v); + } + else { + return __pyx_pw_10selectolax_6lexbor_10LexborNode_6parser_5__del__(o); + } +} + +static PyObject *__pyx_specialmethod___pyx_pw_10selectolax_6lexbor_10LexborNode_26__next__(PyObject *self, CYTHON_UNUSED PyObject *arg) { + PyObject *res = __pyx_pw_10selectolax_6lexbor_10LexborNode_26__next__(self); + if (!res && !PyErr_Occurred()) { PyErr_SetNone(PyExc_StopIteration); } + return res; +} + +static PyMethodDef __pyx_methods_10selectolax_6lexbor_LexborNode[] = { + {"text_lexbor", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_10LexborNode_3text_lexbor, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_10LexborNode_2text_lexbor}, + {"text", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_10LexborNode_5text, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_10LexborNode_4text}, + {"css", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_10LexborNode_7css, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_10LexborNode_6css}, + {"css_first", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_10LexborNode_9css_first, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_10LexborNode_8css_first}, + {"any_css_matches", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_10LexborNode_11any_css_matches, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_10LexborNode_10any_css_matches}, + {"css_matches", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_10LexborNode_13css_matches, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_10LexborNode_12css_matches}, + {"decompose", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_10LexborNode_17decompose, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_10LexborNode_16decompose}, + {"strip_tags", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_10LexborNode_19strip_tags, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_10LexborNode_18strip_tags}, + {"iter", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_10LexborNode_21iter, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_10LexborNode_20iter}, + {"__next__", (PyCFunction)__pyx_specialmethod___pyx_pw_10selectolax_6lexbor_10LexborNode_26__next__, METH_NOARGS|METH_COEXIST, 0}, + {"unwrap", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_10LexborNode_28unwrap, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_10LexborNode_27unwrap}, + {"unwrap_tags", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_10LexborNode_30unwrap_tags, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_10LexborNode_29unwrap_tags}, + {"merge_text_nodes", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_10LexborNode_32merge_text_nodes, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_10LexborNode_31merge_text_nodes}, + {"traverse", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_10LexborNode_34traverse, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_10LexborNode_33traverse}, + {"scripts_contain", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_10LexborNode_45scripts_contain, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_10LexborNode_44scripts_contain}, + {"script_srcs_contain", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_10LexborNode_47script_srcs_contain, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_10LexborNode_46script_srcs_contain}, + {"remove", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_10LexborNode_49remove, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_10LexborNode_48remove}, + {"select", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_10LexborNode_51select, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_10LexborNode_50select}, + {"clone", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_10LexborNode_55clone, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_10LexborNode_54clone}, + {"__pyx_fuse_0replace_with", (PyCFunction)(void(*)(void))(PyCFunctionWithKeywords)__pyx_fuse_0__pyx_pw_10selectolax_6lexbor_10LexborNode_57replace_with, METH_VARARGS|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_10LexborNode_36replace_with}, + {"__pyx_fuse_1replace_with", (PyCFunction)(void(*)(void))(PyCFunctionWithKeywords)__pyx_fuse_1__pyx_pw_10selectolax_6lexbor_10LexborNode_59replace_with, METH_VARARGS|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_10LexborNode_36replace_with}, + {"__pyx_fuse_2replace_with", (PyCFunction)(void(*)(void))(PyCFunctionWithKeywords)__pyx_fuse_2__pyx_pw_10selectolax_6lexbor_10LexborNode_61replace_with, METH_VARARGS|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_10LexborNode_36replace_with}, + {"__pyx_fuse_0insert_before", (PyCFunction)(void(*)(void))(PyCFunctionWithKeywords)__pyx_fuse_0__pyx_pw_10selectolax_6lexbor_10LexborNode_65insert_before, METH_VARARGS|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_10LexborNode_38insert_before}, + {"__pyx_fuse_1insert_before", (PyCFunction)(void(*)(void))(PyCFunctionWithKeywords)__pyx_fuse_1__pyx_pw_10selectolax_6lexbor_10LexborNode_67insert_before, METH_VARARGS|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_10LexborNode_38insert_before}, + {"__pyx_fuse_2insert_before", (PyCFunction)(void(*)(void))(PyCFunctionWithKeywords)__pyx_fuse_2__pyx_pw_10selectolax_6lexbor_10LexborNode_69insert_before, METH_VARARGS|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_10LexborNode_38insert_before}, + {"__pyx_fuse_0insert_after", (PyCFunction)(void(*)(void))(PyCFunctionWithKeywords)__pyx_fuse_0__pyx_pw_10selectolax_6lexbor_10LexborNode_73insert_after, METH_VARARGS|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_10LexborNode_40insert_after}, + {"__pyx_fuse_1insert_after", (PyCFunction)(void(*)(void))(PyCFunctionWithKeywords)__pyx_fuse_1__pyx_pw_10selectolax_6lexbor_10LexborNode_75insert_after, METH_VARARGS|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_10LexborNode_40insert_after}, + {"__pyx_fuse_2insert_after", (PyCFunction)(void(*)(void))(PyCFunctionWithKeywords)__pyx_fuse_2__pyx_pw_10selectolax_6lexbor_10LexborNode_77insert_after, METH_VARARGS|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_10LexborNode_40insert_after}, + {"__pyx_fuse_0insert_child", (PyCFunction)(void(*)(void))(PyCFunctionWithKeywords)__pyx_fuse_0__pyx_pw_10selectolax_6lexbor_10LexborNode_81insert_child, METH_VARARGS|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_10LexborNode_42insert_child}, + {"__pyx_fuse_1insert_child", (PyCFunction)(void(*)(void))(PyCFunctionWithKeywords)__pyx_fuse_1__pyx_pw_10selectolax_6lexbor_10LexborNode_83insert_child, METH_VARARGS|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_10LexborNode_42insert_child}, + {"__pyx_fuse_2insert_child", (PyCFunction)(void(*)(void))(PyCFunctionWithKeywords)__pyx_fuse_2__pyx_pw_10selectolax_6lexbor_10LexborNode_85insert_child, METH_VARARGS|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_10LexborNode_42insert_child}, + {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_10LexborNode_89__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_10LexborNode_88__reduce_cython__}, + {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_10LexborNode_91__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_10LexborNode_90__setstate_cython__}, + {0, 0, 0, 0} +}; + +static struct PyGetSetDef __pyx_getsets_10selectolax_6lexbor_LexborNode[] = { + {"mem_id", __pyx_getprop_10selectolax_6lexbor_10LexborNode_mem_id, 0, 0, 0}, + {"child", __pyx_getprop_10selectolax_6lexbor_10LexborNode_child, 0, PyDoc_STR("Alias for the `first_child` property.\n\n **Deprecated**. Please use `first_child` instead.\n "), 0}, + {"first_child", __pyx_getprop_10selectolax_6lexbor_10LexborNode_first_child, 0, PyDoc_STR("Return the first child node."), 0}, + {"parent", __pyx_getprop_10selectolax_6lexbor_10LexborNode_parent, 0, PyDoc_STR("Return the parent node."), 0}, + {"next", __pyx_getprop_10selectolax_6lexbor_10LexborNode_next, 0, PyDoc_STR("Return next node."), 0}, + {"prev", __pyx_getprop_10selectolax_6lexbor_10LexborNode_prev, 0, PyDoc_STR("Return previous node."), 0}, + {"last_child", __pyx_getprop_10selectolax_6lexbor_10LexborNode_last_child, 0, PyDoc_STR("Return last child node."), 0}, + {"html", __pyx_getprop_10selectolax_6lexbor_10LexborNode_html, 0, PyDoc_STR("Return HTML representation of the current node including all its child nodes.\n\n Returns\n -------\n text : str\n "), 0}, + {"tag_id", __pyx_getprop_10selectolax_6lexbor_10LexborNode_tag_id, 0, 0, 0}, + {"tag", __pyx_getprop_10selectolax_6lexbor_10LexborNode_tag, 0, PyDoc_STR("Return the name of the current tag (e.g. div, p, img).\n\n For for non-tag nodes, returns the following names:\n\n * `-text` - text node\n * `-document` - document node\n * `-comment` - comment node\n\n This\n\n Returns\n -------\n text : str\n "), 0}, + {"attributes", __pyx_getprop_10selectolax_6lexbor_10LexborNode_attributes, 0, PyDoc_STR("Get all attributes that belong to the current node.\n\n The value of empty attributes is None.\n\n Returns\n -------\n attributes : dictionary of all attributes.\n\n Examples\n --------\n\n >>> tree = LexborHTMLParser(\"
\")\n >>> node = tree.css_first('div')\n >>> node.attributes\n {'data': None, 'id': 'my_id'}\n "), 0}, + {"attrs", __pyx_getprop_10selectolax_6lexbor_10LexborNode_attrs, 0, PyDoc_STR("A dict-like object that is similar to the ``attributes`` property, but operates directly on the Node data.\n\n .. warning:: Use ``attributes`` instead, if you don't want to modify Node attributes.\n\n Returns\n -------\n attributes : Attributes mapping object.\n\n Examples\n --------\n\n >>> tree = LexborHTMLParser(\"
\")\n >>> node = tree.css_first('div')\n >>> node.attrs\n
\n >>> node.attrs['id']\n 'a'\n >>> node.attrs['foo'] = 'bar'\n >>> del node.attrs['id']\n >>> node.attributes\n {'foo': 'bar'}\n >>> node.attrs['id'] = 'new_id'\n >>> node.html\n '
'\n "), 0}, + {"id", __pyx_getprop_10selectolax_6lexbor_10LexborNode_id, 0, PyDoc_STR("Get the id attribute of the node.\n\n Returns None if id does not set.\n\n Returns\n -------\n text : str\n "), 0}, + {"raw_value", __pyx_getprop_10selectolax_6lexbor_10LexborNode_raw_value, 0, PyDoc_STR("Return the raw (unparsed, original) value of a node.\n\n Currently, works on text nodes only.\n\n Returns\n -------\n\n raw_value : bytes\n\n Examples\n --------\n\n >>> html_parser = LexborHTMLParser('
<test>
')\n >>> selector = html_parser.css_first('div')\n >>> selector.child.html\n '<test>'\n >>> selector.child.raw_value\n b'<test>'\n "), 0}, + {"text_content", __pyx_getprop_10selectolax_6lexbor_10LexborNode_text_content, 0, PyDoc_STR("Returns the text of the node if it is a text node.\n\n Returns None for other nodes.\n Unlike the ``text`` method, does not include child nodes.\n\n Returns\n -------\n text : str or None.\n "), 0}, + {"comment_content", __pyx_getprop_10selectolax_6lexbor_10LexborNode_comment_content, 0, PyDoc_STR("LexborNode.comment_content: str | None\n\nExtract the textual content of an HTML comment node.\n\nReturns\n-------\nstr or None\n Comment text with surrounding whitespace removed, or ``None`` if\n the current node is not a comment or the comment markup cannot be\n parsed.\n\nExamples\n--------\n>>> parse_fragment(\"\")[0].comment_content\n'hello'\n>>> parse_fragment(\"
not a comment
\")[0].comment_content is None\nTrue"), 0}, + {"inner_html", __pyx_getprop_10selectolax_6lexbor_10LexborNode_inner_html, __pyx_setprop_10selectolax_6lexbor_10LexborNode_inner_html, PyDoc_STR("LexborNode.inner_html: str | None\n\nReturn HTML representation of the child nodes.\n\nWorks similar to innerHTML in JavaScript.\nUnlike the `.html` property, does not include the current node.\nCan be used to set HTML as well. See the setter docstring.\n\nReturns\n-------\ntext : str | None"), 0}, + {"is_element_node", __pyx_getprop_10selectolax_6lexbor_10LexborNode_is_element_node, 0, PyDoc_STR("LexborNode.is_element_node: bool\n\nReturn True if the node represents an element node."), 0}, + {"is_text_node", __pyx_getprop_10selectolax_6lexbor_10LexborNode_is_text_node, 0, PyDoc_STR("LexborNode.is_text_node: bool\n\nReturn True if the node represents a text node."), 0}, + {"is_comment_node", __pyx_getprop_10selectolax_6lexbor_10LexborNode_is_comment_node, 0, PyDoc_STR("LexborNode.is_comment_node: bool\n\nReturn True if the node represents a comment node."), 0}, + {"is_document_node", __pyx_getprop_10selectolax_6lexbor_10LexborNode_is_document_node, 0, PyDoc_STR("LexborNode.is_document_node: bool\n\nReturn True if the node represents a document node."), 0}, + {"is_empty_text_node", __pyx_getprop_10selectolax_6lexbor_10LexborNode_is_empty_text_node, 0, PyDoc_STR("LexborNode.is_empty_text_node: bool\n\nCheck whether the current node is an empty text node.\n\nReturns\n-------\nbool\n ``True`` when the node is a text node whose character data consists\n only of ASCII whitespace characters (space, tab, newline, form feed\n or carriage return)."), 0}, + {"parser", __pyx_getprop_10selectolax_6lexbor_10LexborNode_parser, __pyx_setprop_10selectolax_6lexbor_10LexborNode_parser, PyDoc_STR("parser: selectolax.lexbor.LexborHTMLParser"), 0}, + {0, 0, 0, 0, 0} +}; +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_type_10selectolax_6lexbor_LexborNode_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_10selectolax_6lexbor_LexborNode}, + {Py_tp_repr, (void *)__pyx_pw_10selectolax_6lexbor_10LexborNode_15__repr__}, + {Py_tp_hash, (void *)__pyx_pw_10selectolax_6lexbor_10LexborNode_1__hash__}, + {Py_tp_doc, (void *)PyDoc_STR("A class that represents HTML node (element).")}, + {Py_tp_traverse, (void *)__pyx_tp_traverse_10selectolax_6lexbor_LexborNode}, + {Py_tp_clear, (void *)__pyx_tp_clear_10selectolax_6lexbor_LexborNode}, + {Py_tp_richcompare, (void *)__pyx_tp_richcompare_10selectolax_6lexbor_LexborNode}, + {Py_tp_iter, (void *)__pyx_pw_10selectolax_6lexbor_10LexborNode_24__iter__}, + {Py_tp_iternext, (void *)__pyx_pw_10selectolax_6lexbor_10LexborNode_26__next__}, + {Py_tp_methods, (void *)__pyx_methods_10selectolax_6lexbor_LexborNode}, + {Py_tp_getset, (void *)__pyx_getsets_10selectolax_6lexbor_LexborNode}, + {Py_tp_new, (void *)__pyx_tp_new_10selectolax_6lexbor_LexborNode}, + {0, 0}, +}; +static PyType_Spec __pyx_type_10selectolax_6lexbor_LexborNode_spec = { + "selectolax.lexbor.LexborNode", + sizeof(struct __pyx_obj_10selectolax_6lexbor_LexborNode), + 0, + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, + __pyx_type_10selectolax_6lexbor_LexborNode_slots, +}; +#else + +static PyTypeObject __pyx_type_10selectolax_6lexbor_LexborNode = { + PyVarObject_HEAD_INIT(0, 0) + "selectolax.lexbor.""LexborNode", /*tp_name*/ + sizeof(struct __pyx_obj_10selectolax_6lexbor_LexborNode), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_10selectolax_6lexbor_LexborNode, /*tp_dealloc*/ + 0, /*tp_vectorcall_offset*/ + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + 0, /*tp_as_async*/ + __pyx_pw_10selectolax_6lexbor_10LexborNode_15__repr__, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + __pyx_pw_10selectolax_6lexbor_10LexborNode_1__hash__, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ + PyDoc_STR("A class that represents HTML node (element)."), /*tp_doc*/ + __pyx_tp_traverse_10selectolax_6lexbor_LexborNode, /*tp_traverse*/ + __pyx_tp_clear_10selectolax_6lexbor_LexborNode, /*tp_clear*/ + __pyx_tp_richcompare_10selectolax_6lexbor_LexborNode, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + __pyx_pw_10selectolax_6lexbor_10LexborNode_24__iter__, /*tp_iter*/ + __pyx_pw_10selectolax_6lexbor_10LexborNode_26__next__, /*tp_iternext*/ + __pyx_methods_10selectolax_6lexbor_LexborNode, /*tp_methods*/ + 0, /*tp_members*/ + __pyx_getsets_10selectolax_6lexbor_LexborNode, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + #if !CYTHON_USE_TYPE_SPECS + 0, /*tp_dictoffset*/ + #endif + 0, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_10selectolax_6lexbor_LexborNode, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if CYTHON_USE_TP_FINALIZE + 0, /*tp_finalize*/ + #else + NULL, /*tp_finalize*/ + #endif + #if !CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800 + 0, /*tp_vectorcall*/ + #endif + #if __PYX_NEED_TP_PRINT_SLOT == 1 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030C0000 + 0, /*tp_watched*/ + #endif + #if PY_VERSION_HEX >= 0x030d00A4 + 0, /*tp_versions_used*/ + #endif + #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, /*tp_pypy_flags*/ + #endif +}; +#endif +static struct __pyx_vtabstruct_10selectolax_6lexbor_LexborCSSSelector __pyx_vtable_10selectolax_6lexbor_LexborCSSSelector; + +static PyObject *__pyx_tp_new_10selectolax_6lexbor_LexborCSSSelector(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { + struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector *p; + PyObject *o; + o = __Pyx_AllocateExtensionType(t, 1); + if (unlikely(!o)) return 0; + p = ((struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector *)o); + p->__pyx_vtab = __pyx_vtabptr_10selectolax_6lexbor_LexborCSSSelector; + p->results = ((PyObject*)Py_None); Py_INCREF(Py_None); + p->current_node = ((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)Py_None); Py_INCREF(Py_None); + return o; +} + +static void __pyx_tp_dealloc_10selectolax_6lexbor_LexborCSSSelector(PyObject *o) { + struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector *p = (struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector *)o; + PyObject_GC_UnTrack(o); + { + PyObject *etype, *eval, *etb; + PyErr_Fetch(&etype, &eval, &etb); + __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1); + __pyx_pw_10selectolax_6lexbor_17LexborCSSSelector_11__dealloc__(o); + __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1); + PyErr_Restore(etype, eval, etb); + } + Py_CLEAR(p->results); + Py_CLEAR(p->current_node); + PyTypeObject *tp = Py_TYPE(o); + #if CYTHON_USE_TYPE_SLOTS + (*tp->tp_free)(o); + #else + { + freefunc tp_free = (freefunc)PyType_GetSlot(tp, Py_tp_free); + if (tp_free) tp_free(o); + } + #endif + #if CYTHON_USE_TYPE_SPECS + Py_DECREF(tp); + #endif +} + +static int __pyx_tp_traverse_10selectolax_6lexbor_LexborCSSSelector(PyObject *o, visitproc v, void *a) { + int e; + struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector *p = (struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector *)o; + { + e = __Pyx_call_type_traverse(o, 1, v, a); + if (e) return e; + } + if (p->results) { + e = (*v)(p->results, a); if (e) return e; + } + if (p->current_node) { + e = (*v)(((PyObject *)p->current_node), a); if (e) return e; + } + return 0; +} + +static int __pyx_tp_clear_10selectolax_6lexbor_LexborCSSSelector(PyObject *o) { + PyObject* tmp; + struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector *p = (struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector *)o; + tmp = ((PyObject*)p->results); + p->results = ((PyObject*)Py_None); Py_INCREF(Py_None); + Py_XDECREF(tmp); + tmp = ((PyObject*)p->current_node); + p->current_node = ((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)Py_None); Py_INCREF(Py_None); + Py_XDECREF(tmp); + return 0; +} + +static PyObject *__pyx_getprop_10selectolax_6lexbor_17LexborCSSSelector_results(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_10selectolax_6lexbor_17LexborCSSSelector_7results_1__get__(o); +} + +static int __pyx_setprop_10selectolax_6lexbor_17LexborCSSSelector_results(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { + if (v) { + return __pyx_pw_10selectolax_6lexbor_17LexborCSSSelector_7results_3__set__(o, v); + } + else { + return __pyx_pw_10selectolax_6lexbor_17LexborCSSSelector_7results_5__del__(o); + } +} + +static PyObject *__pyx_getprop_10selectolax_6lexbor_17LexborCSSSelector_current_node(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_10selectolax_6lexbor_17LexborCSSSelector_12current_node_1__get__(o); +} + +static int __pyx_setprop_10selectolax_6lexbor_17LexborCSSSelector_current_node(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { + if (v) { + return __pyx_pw_10selectolax_6lexbor_17LexborCSSSelector_12current_node_3__set__(o, v); + } + else { + return __pyx_pw_10selectolax_6lexbor_17LexborCSSSelector_12current_node_5__del__(o); + } +} + +static PyMethodDef __pyx_methods_10selectolax_6lexbor_LexborCSSSelector[] = { + {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_17LexborCSSSelector_13__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_17LexborCSSSelector_12__reduce_cython__}, + {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_17LexborCSSSelector_15__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_17LexborCSSSelector_14__setstate_cython__}, + {0, 0, 0, 0} +}; + +static struct PyGetSetDef __pyx_getsets_10selectolax_6lexbor_LexborCSSSelector[] = { + {"results", __pyx_getprop_10selectolax_6lexbor_17LexborCSSSelector_results, __pyx_setprop_10selectolax_6lexbor_17LexborCSSSelector_results, PyDoc_STR("results: list"), 0}, + {"current_node", __pyx_getprop_10selectolax_6lexbor_17LexborCSSSelector_current_node, __pyx_setprop_10selectolax_6lexbor_17LexborCSSSelector_current_node, PyDoc_STR("current_node: selectolax.lexbor.LexborNode"), 0}, + {0, 0, 0, 0, 0} +}; +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_type_10selectolax_6lexbor_LexborCSSSelector_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_10selectolax_6lexbor_LexborCSSSelector}, + {Py_tp_doc, (void *)PyDoc_STR("LexborCSSSelector()")}, + {Py_tp_traverse, (void *)__pyx_tp_traverse_10selectolax_6lexbor_LexborCSSSelector}, + {Py_tp_clear, (void *)__pyx_tp_clear_10selectolax_6lexbor_LexborCSSSelector}, + {Py_tp_methods, (void *)__pyx_methods_10selectolax_6lexbor_LexborCSSSelector}, + {Py_tp_getset, (void *)__pyx_getsets_10selectolax_6lexbor_LexborCSSSelector}, + {Py_tp_init, (void *)__pyx_pw_10selectolax_6lexbor_17LexborCSSSelector_1__init__}, + {Py_tp_new, (void *)__pyx_tp_new_10selectolax_6lexbor_LexborCSSSelector}, + {0, 0}, +}; +static PyType_Spec __pyx_type_10selectolax_6lexbor_LexborCSSSelector_spec = { + "selectolax.lexbor.LexborCSSSelector", + sizeof(struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector), + 0, + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, + __pyx_type_10selectolax_6lexbor_LexborCSSSelector_slots, +}; +#else + +static PyTypeObject __pyx_type_10selectolax_6lexbor_LexborCSSSelector = { + PyVarObject_HEAD_INIT(0, 0) + "selectolax.lexbor.""LexborCSSSelector", /*tp_name*/ + sizeof(struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_10selectolax_6lexbor_LexborCSSSelector, /*tp_dealloc*/ + 0, /*tp_vectorcall_offset*/ + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + 0, /*tp_as_async*/ + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ + PyDoc_STR("LexborCSSSelector()"), /*tp_doc*/ + __pyx_tp_traverse_10selectolax_6lexbor_LexborCSSSelector, /*tp_traverse*/ + __pyx_tp_clear_10selectolax_6lexbor_LexborCSSSelector, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + __pyx_methods_10selectolax_6lexbor_LexborCSSSelector, /*tp_methods*/ + 0, /*tp_members*/ + __pyx_getsets_10selectolax_6lexbor_LexborCSSSelector, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + #if !CYTHON_USE_TYPE_SPECS + 0, /*tp_dictoffset*/ + #endif + __pyx_pw_10selectolax_6lexbor_17LexborCSSSelector_1__init__, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_10selectolax_6lexbor_LexborCSSSelector, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if CYTHON_USE_TP_FINALIZE + 0, /*tp_finalize*/ + #else + NULL, /*tp_finalize*/ + #endif + #if !CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800 + 0, /*tp_vectorcall*/ + #endif + #if __PYX_NEED_TP_PRINT_SLOT == 1 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030C0000 + 0, /*tp_watched*/ + #endif + #if PY_VERSION_HEX >= 0x030d00A4 + 0, /*tp_versions_used*/ + #endif + #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, /*tp_pypy_flags*/ + #endif +}; +#endif +static struct __pyx_vtabstruct_10selectolax_6lexbor_LexborHTMLParser __pyx_vtable_10selectolax_6lexbor_LexborHTMLParser; + +static PyObject *__pyx_tp_new_10selectolax_6lexbor_LexborHTMLParser(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { + struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *p; + PyObject *o; + o = __Pyx_AllocateExtensionType(t, 0); + if (unlikely(!o)) return 0; + p = ((struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *)o); + p->__pyx_vtab = __pyx_vtabptr_10selectolax_6lexbor_LexborHTMLParser; + p->raw_html = ((PyObject*)Py_None); Py_INCREF(Py_None); + p->_selector = ((struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector *)Py_None); Py_INCREF(Py_None); + p->cached_script_texts = Py_None; Py_INCREF(Py_None); + p->cached_script_srcs = Py_None; Py_INCREF(Py_None); + return o; +} + +static void __pyx_tp_dealloc_10selectolax_6lexbor_LexborHTMLParser(PyObject *o) { + struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *p = (struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *)o; + #if CYTHON_USE_TP_FINALIZE + if (unlikely(__Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { + if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_10selectolax_6lexbor_LexborHTMLParser) { + if (PyObject_CallFinalizerFromDealloc(o)) return; + } + } + #endif + PyObject_GC_UnTrack(o); + { + PyObject *etype, *eval, *etb; + PyErr_Fetch(&etype, &eval, &etb); + __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1); + __pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_3__dealloc__(o); + __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1); + PyErr_Restore(etype, eval, etb); + } + Py_CLEAR(p->raw_html); + Py_CLEAR(p->_selector); + Py_CLEAR(p->cached_script_texts); + Py_CLEAR(p->cached_script_srcs); + PyTypeObject *tp = Py_TYPE(o); + #if CYTHON_USE_TYPE_SLOTS + (*tp->tp_free)(o); + #else + { + freefunc tp_free = (freefunc)PyType_GetSlot(tp, Py_tp_free); + if (tp_free) tp_free(o); + } + #endif + #if CYTHON_USE_TYPE_SPECS + Py_DECREF(tp); + #endif +} + +static int __pyx_tp_traverse_10selectolax_6lexbor_LexborHTMLParser(PyObject *o, visitproc v, void *a) { + int e; + struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *p = (struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *)o; + { + e = __Pyx_call_type_traverse(o, 1, v, a); + if (e) return e; + } + if (p->_selector) { + e = (*v)(((PyObject *)p->_selector), a); if (e) return e; + } + if (p->cached_script_texts) { + e = (*v)(p->cached_script_texts, a); if (e) return e; + } + if (p->cached_script_srcs) { + e = (*v)(p->cached_script_srcs, a); if (e) return e; + } + return 0; +} + +static int __pyx_tp_clear_10selectolax_6lexbor_LexborHTMLParser(PyObject *o) { + PyObject* tmp; + struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *p = (struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *)o; + tmp = ((PyObject*)p->_selector); + p->_selector = ((struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector *)Py_None); Py_INCREF(Py_None); + Py_XDECREF(tmp); + tmp = ((PyObject*)p->cached_script_texts); + p->cached_script_texts = Py_None; Py_INCREF(Py_None); + Py_XDECREF(tmp); + tmp = ((PyObject*)p->cached_script_srcs); + p->cached_script_srcs = Py_None; Py_INCREF(Py_None); + Py_XDECREF(tmp); + return 0; +} + +static PyObject *__pyx_getprop_10selectolax_6lexbor_16LexborHTMLParser_selector(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_8selector_1__get__(o); +} + +static PyObject *__pyx_getprop_10selectolax_6lexbor_16LexborHTMLParser_root(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_4root_1__get__(o); +} + +static PyObject *__pyx_getprop_10selectolax_6lexbor_16LexborHTMLParser_body(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_4body_1__get__(o); +} + +static PyObject *__pyx_getprop_10selectolax_6lexbor_16LexborHTMLParser_head(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_4head_1__get__(o); +} + +static PyObject *__pyx_getprop_10selectolax_6lexbor_16LexborHTMLParser_html(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_4html_1__get__(o); +} + +static PyObject *__pyx_getprop_10selectolax_6lexbor_16LexborHTMLParser_inner_html(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_10inner_html_1__get__(o); +} + +static int __pyx_setprop_10selectolax_6lexbor_16LexborHTMLParser_inner_html(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { + if (v) { + return __pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_10inner_html_3__set__(o, v); + } + else { + PyErr_SetString(PyExc_NotImplementedError, "__del__"); + return -1; + } +} + +static PyObject *__pyx_getprop_10selectolax_6lexbor_16LexborHTMLParser_raw_html(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_8raw_html_1__get__(o); +} + +static int __pyx_setprop_10selectolax_6lexbor_16LexborHTMLParser_raw_html(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { + if (v) { + return __pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_8raw_html_3__set__(o, v); + } + else { + return __pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_8raw_html_5__del__(o); + } +} + +static PyMethodDef __pyx_methods_10selectolax_6lexbor_LexborHTMLParser[] = { + {"tags", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_7tags, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_16LexborHTMLParser_6tags}, + {"text", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_9text, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_16LexborHTMLParser_8text}, + {"css", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_11css, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_16LexborHTMLParser_10css}, + {"css_first", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_13css_first, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_16LexborHTMLParser_12css_first}, + {"strip_tags", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_15strip_tags, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_16LexborHTMLParser_14strip_tags}, + {"select", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_17select, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_16LexborHTMLParser_16select}, + {"any_css_matches", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_19any_css_matches, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_16LexborHTMLParser_18any_css_matches}, + {"scripts_contain", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_21scripts_contain, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_16LexborHTMLParser_20scripts_contain}, + {"script_srcs_contain", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_23script_srcs_contain, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_16LexborHTMLParser_22script_srcs_contain}, + {"css_matches", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_25css_matches, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_16LexborHTMLParser_24css_matches}, + {"merge_text_nodes", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_27merge_text_nodes, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_16LexborHTMLParser_26merge_text_nodes}, + {"clone", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_29clone, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_16LexborHTMLParser_28clone}, + {"unwrap_tags", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_31unwrap_tags, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_16LexborHTMLParser_30unwrap_tags}, + {"create_node", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_33create_node, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_16LexborHTMLParser_32create_node}, + {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_35__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_16LexborHTMLParser_34__reduce_cython__}, + {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_37__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_16LexborHTMLParser_36__setstate_cython__}, + {0, 0, 0, 0} +}; + +static struct PyGetSetDef __pyx_getsets_10selectolax_6lexbor_LexborHTMLParser[] = { + {"selector", __pyx_getprop_10selectolax_6lexbor_16LexborHTMLParser_selector, 0, PyDoc_STR("Return a lazily created CSS selector helper.\n\n Returns\n -------\n LexborCSSSelector\n Selector instance bound to this parser.\n "), 0}, + {"root", __pyx_getprop_10selectolax_6lexbor_16LexborHTMLParser_root, 0, PyDoc_STR("Return the document root node.\n\n Returns\n -------\n LexborNode or None\n Root of the parsed document, or ``None`` if unavailable.\n "), 0}, + {"body", __pyx_getprop_10selectolax_6lexbor_16LexborHTMLParser_body, 0, PyDoc_STR("Return document body.\n\n Returns\n -------\n LexborNode or None\n ```` element when present, otherwise ``None``.\n "), 0}, + {"head", __pyx_getprop_10selectolax_6lexbor_16LexborHTMLParser_head, 0, PyDoc_STR("Return document head.\n\n Returns\n -------\n LexborNode or None\n ```` element when present, otherwise ``None``.\n "), 0}, + {"html", __pyx_getprop_10selectolax_6lexbor_16LexborHTMLParser_html, 0, PyDoc_STR("Return HTML representation of the page.\n\n Returns\n -------\n str or None\n Serialized HTML of the current document.\n "), 0}, + {"inner_html", __pyx_getprop_10selectolax_6lexbor_16LexborHTMLParser_inner_html, __pyx_setprop_10selectolax_6lexbor_16LexborHTMLParser_inner_html, PyDoc_STR("LexborHTMLParser.inner_html: str\n\nReturn HTML representation of the child nodes.\n\nWorks similar to innerHTML in JavaScript.\nUnlike the `.html` property, does not include the current node.\nCan be used to set HTML as well. See the setter docstring.\n\nReturns\n-------\ntext : str | None"), 0}, + {"raw_html", __pyx_getprop_10selectolax_6lexbor_16LexborHTMLParser_raw_html, __pyx_setprop_10selectolax_6lexbor_16LexborHTMLParser_raw_html, PyDoc_STR("raw_html: bytes"), 0}, + {0, 0, 0, 0, 0} +}; +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_type_10selectolax_6lexbor_LexborHTMLParser_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_10selectolax_6lexbor_LexborHTMLParser}, + {Py_tp_repr, (void *)__pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_5__repr__}, + {Py_tp_doc, (void *)PyDoc_STR("LexborHTMLParser(html: str | bytes, is_fragment: bool = False)\n\nThe lexbor HTML parser.\n\nUse this class to parse raw HTML.\n\nThis parser mimics most of the stuff from ``HTMLParser`` but not inherits it directly.\n\nParameters\n----------\n\nhtml : str (unicode) or bytes")}, + {Py_tp_traverse, (void *)__pyx_tp_traverse_10selectolax_6lexbor_LexborHTMLParser}, + {Py_tp_clear, (void *)__pyx_tp_clear_10selectolax_6lexbor_LexborHTMLParser}, + {Py_tp_methods, (void *)__pyx_methods_10selectolax_6lexbor_LexborHTMLParser}, + {Py_tp_getset, (void *)__pyx_getsets_10selectolax_6lexbor_LexborHTMLParser}, + {Py_tp_init, (void *)__pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_1__init__}, + {Py_tp_new, (void *)__pyx_tp_new_10selectolax_6lexbor_LexborHTMLParser}, + {0, 0}, +}; +static PyType_Spec __pyx_type_10selectolax_6lexbor_LexborHTMLParser_spec = { + "selectolax.lexbor.LexborHTMLParser", + sizeof(struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser), + 0, + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, + __pyx_type_10selectolax_6lexbor_LexborHTMLParser_slots, +}; +#else + +static PyTypeObject __pyx_type_10selectolax_6lexbor_LexborHTMLParser = { + PyVarObject_HEAD_INIT(0, 0) + "selectolax.lexbor.""LexborHTMLParser", /*tp_name*/ + sizeof(struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_10selectolax_6lexbor_LexborHTMLParser, /*tp_dealloc*/ + 0, /*tp_vectorcall_offset*/ + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + 0, /*tp_as_async*/ + __pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_5__repr__, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ + PyDoc_STR("LexborHTMLParser(html: str | bytes, is_fragment: bool = False)\n\nThe lexbor HTML parser.\n\nUse this class to parse raw HTML.\n\nThis parser mimics most of the stuff from ``HTMLParser`` but not inherits it directly.\n\nParameters\n----------\n\nhtml : str (unicode) or bytes"), /*tp_doc*/ + __pyx_tp_traverse_10selectolax_6lexbor_LexborHTMLParser, /*tp_traverse*/ + __pyx_tp_clear_10selectolax_6lexbor_LexborHTMLParser, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + __pyx_methods_10selectolax_6lexbor_LexborHTMLParser, /*tp_methods*/ + 0, /*tp_members*/ + __pyx_getsets_10selectolax_6lexbor_LexborHTMLParser, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + #if !CYTHON_USE_TYPE_SPECS + 0, /*tp_dictoffset*/ + #endif + __pyx_pw_10selectolax_6lexbor_16LexborHTMLParser_1__init__, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_10selectolax_6lexbor_LexborHTMLParser, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if CYTHON_USE_TP_FINALIZE + 0, /*tp_finalize*/ + #else + NULL, /*tp_finalize*/ + #endif + #if !CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800 + 0, /*tp_vectorcall*/ + #endif + #if __PYX_NEED_TP_PRINT_SLOT == 1 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030C0000 + 0, /*tp_watched*/ + #endif + #if PY_VERSION_HEX >= 0x030d00A4 + 0, /*tp_versions_used*/ + #endif + #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, /*tp_pypy_flags*/ + #endif +}; +#endif +static struct __pyx_vtabstruct_10selectolax_6lexbor_LexborAttributes __pyx_vtable_10selectolax_6lexbor_LexborAttributes; + +static PyObject *__pyx_tp_new_10selectolax_6lexbor_LexborAttributes(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { + struct __pyx_obj_10selectolax_6lexbor_LexborAttributes *p; + PyObject *o; + o = __Pyx_AllocateExtensionType(t, 1); + if (unlikely(!o)) return 0; + p = ((struct __pyx_obj_10selectolax_6lexbor_LexborAttributes *)o); + p->__pyx_vtab = __pyx_vtabptr_10selectolax_6lexbor_LexborAttributes; + p->decode_errors = ((PyObject*)Py_None); Py_INCREF(Py_None); + return o; +} + +static void __pyx_tp_dealloc_10selectolax_6lexbor_LexborAttributes(PyObject *o) { + struct __pyx_obj_10selectolax_6lexbor_LexborAttributes *p = (struct __pyx_obj_10selectolax_6lexbor_LexborAttributes *)o; + Py_CLEAR(p->decode_errors); + PyTypeObject *tp = Py_TYPE(o); + #if CYTHON_USE_TYPE_SLOTS + (*tp->tp_free)(o); + #else + { + freefunc tp_free = (freefunc)PyType_GetSlot(tp, Py_tp_free); + if (tp_free) tp_free(o); + } + #endif + #if CYTHON_USE_TYPE_SPECS + Py_DECREF(tp); + #endif +} + +static PyObject *__pyx_sq_item_10selectolax_6lexbor_LexborAttributes(PyObject *o, Py_ssize_t i) { + PyObject *r; + PyObject *x = PyLong_FromSsize_t(i); if(!x) return 0; + #if CYTHON_USE_TYPE_SLOTS || (!CYTHON_USE_TYPE_SPECS && __PYX_LIMITED_VERSION_HEX < 0x030A0000) + r = Py_TYPE(o)->tp_as_mapping->mp_subscript(o, x); + #else + r = ((binaryfunc)PyType_GetSlot(Py_TYPE(o), Py_mp_subscript))(o, x); + #endif + Py_DECREF(x); + return r; +} + +static int __pyx_mp_ass_subscript_10selectolax_6lexbor_LexborAttributes(PyObject *o, PyObject *i, PyObject *v) { + if (v) { + return __pyx_pw_10selectolax_6lexbor_16LexborAttributes_4__setitem__(o, i, v); + } + else { + return __pyx_pw_10selectolax_6lexbor_16LexborAttributes_6__delitem__(o, i); + } +} + +static PyMethodDef __pyx_methods_10selectolax_6lexbor_LexborAttributes[] = { + {"keys", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_16LexborAttributes_12keys, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_16LexborAttributes_11keys}, + {"items", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_16LexborAttributes_14items, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_16LexborAttributes_13items}, + {"values", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_16LexborAttributes_17values, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_16LexborAttributes_16values}, + {"get", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_16LexborAttributes_20get, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_16LexborAttributes_19get}, + {"sget", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_16LexborAttributes_22sget, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_16LexborAttributes_21sget}, + {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_16LexborAttributes_28__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_16LexborAttributes_27__reduce_cython__}, + {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_16LexborAttributes_30__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_16LexborAttributes_29__setstate_cython__}, + {0, 0, 0, 0} +}; +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_type_10selectolax_6lexbor_LexborAttributes_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_10selectolax_6lexbor_LexborAttributes}, + {Py_tp_repr, (void *)__pyx_pw_10selectolax_6lexbor_16LexborAttributes_26__repr__}, + {Py_sq_length, (void *)__pyx_pw_10selectolax_6lexbor_16LexborAttributes_10__len__}, + {Py_sq_item, (void *)__pyx_sq_item_10selectolax_6lexbor_LexborAttributes}, + {Py_sq_contains, (void *)__pyx_pw_10selectolax_6lexbor_16LexborAttributes_24__contains__}, + {Py_mp_length, (void *)__pyx_pw_10selectolax_6lexbor_16LexborAttributes_10__len__}, + {Py_mp_subscript, (void *)__pyx_pw_10selectolax_6lexbor_16LexborAttributes_8__getitem__}, + {Py_mp_ass_subscript, (void *)__pyx_mp_ass_subscript_10selectolax_6lexbor_LexborAttributes}, + {Py_tp_doc, (void *)PyDoc_STR("A dict-like object that represents attributes.")}, + {Py_tp_iter, (void *)__pyx_pw_10selectolax_6lexbor_16LexborAttributes_1__iter__}, + {Py_tp_methods, (void *)__pyx_methods_10selectolax_6lexbor_LexborAttributes}, + {Py_tp_new, (void *)__pyx_tp_new_10selectolax_6lexbor_LexborAttributes}, + {0, 0}, +}; +static PyType_Spec __pyx_type_10selectolax_6lexbor_LexborAttributes_spec = { + "selectolax.lexbor.LexborAttributes", + sizeof(struct __pyx_obj_10selectolax_6lexbor_LexborAttributes), + 0, + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER, + __pyx_type_10selectolax_6lexbor_LexborAttributes_slots, +}; +#else + +static PySequenceMethods __pyx_tp_as_sequence_LexborAttributes = { + __pyx_pw_10selectolax_6lexbor_16LexborAttributes_10__len__, /*sq_length*/ + 0, /*sq_concat*/ + 0, /*sq_repeat*/ + __pyx_sq_item_10selectolax_6lexbor_LexborAttributes, /*sq_item*/ + 0, /*sq_slice*/ + 0, /*sq_ass_item*/ + 0, /*sq_ass_slice*/ + __pyx_pw_10selectolax_6lexbor_16LexborAttributes_24__contains__, /*sq_contains*/ + 0, /*sq_inplace_concat*/ + 0, /*sq_inplace_repeat*/ +}; + +static PyMappingMethods __pyx_tp_as_mapping_LexborAttributes = { + __pyx_pw_10selectolax_6lexbor_16LexborAttributes_10__len__, /*mp_length*/ + __pyx_pw_10selectolax_6lexbor_16LexborAttributes_8__getitem__, /*mp_subscript*/ + __pyx_mp_ass_subscript_10selectolax_6lexbor_LexborAttributes, /*mp_ass_subscript*/ +}; + +static PyTypeObject __pyx_type_10selectolax_6lexbor_LexborAttributes = { + PyVarObject_HEAD_INIT(0, 0) + "selectolax.lexbor.""LexborAttributes", /*tp_name*/ + sizeof(struct __pyx_obj_10selectolax_6lexbor_LexborAttributes), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_10selectolax_6lexbor_LexborAttributes, /*tp_dealloc*/ + 0, /*tp_vectorcall_offset*/ + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + 0, /*tp_as_async*/ + __pyx_pw_10selectolax_6lexbor_16LexborAttributes_26__repr__, /*tp_repr*/ + 0, /*tp_as_number*/ + &__pyx_tp_as_sequence_LexborAttributes, /*tp_as_sequence*/ + &__pyx_tp_as_mapping_LexborAttributes, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER, /*tp_flags*/ + PyDoc_STR("A dict-like object that represents attributes."), /*tp_doc*/ + 0, /*tp_traverse*/ + 0, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + __pyx_pw_10selectolax_6lexbor_16LexborAttributes_1__iter__, /*tp_iter*/ + 0, /*tp_iternext*/ + __pyx_methods_10selectolax_6lexbor_LexborAttributes, /*tp_methods*/ + 0, /*tp_members*/ + 0, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + #if !CYTHON_USE_TYPE_SPECS + 0, /*tp_dictoffset*/ + #endif + 0, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_10selectolax_6lexbor_LexborAttributes, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if CYTHON_USE_TP_FINALIZE + 0, /*tp_finalize*/ + #else + NULL, /*tp_finalize*/ + #endif + #if !CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800 + 0, /*tp_vectorcall*/ + #endif + #if __PYX_NEED_TP_PRINT_SLOT == 1 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030C0000 + 0, /*tp_watched*/ + #endif + #if PY_VERSION_HEX >= 0x030d00A4 + 0, /*tp_versions_used*/ + #endif + #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, /*tp_pypy_flags*/ + #endif +}; +#endif +static struct __pyx_vtabstruct_10selectolax_6lexbor_TextContainer __pyx_vtable_10selectolax_6lexbor_TextContainer; + +static PyObject *__pyx_tp_new_10selectolax_6lexbor_TextContainer(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { + struct __pyx_obj_10selectolax_6lexbor_TextContainer *p; + PyObject *o; + o = __Pyx_AllocateExtensionType(t, 1); + if (unlikely(!o)) return 0; + p = ((struct __pyx_obj_10selectolax_6lexbor_TextContainer *)o); + p->__pyx_vtab = __pyx_vtabptr_10selectolax_6lexbor_TextContainer; + p->_text = ((PyObject*)Py_None); Py_INCREF(Py_None); + p->separator = ((PyObject*)Py_None); Py_INCREF(Py_None); + return o; +} + +static void __pyx_tp_dealloc_10selectolax_6lexbor_TextContainer(PyObject *o) { + struct __pyx_obj_10selectolax_6lexbor_TextContainer *p = (struct __pyx_obj_10selectolax_6lexbor_TextContainer *)o; + Py_CLEAR(p->_text); + Py_CLEAR(p->separator); + PyTypeObject *tp = Py_TYPE(o); + #if CYTHON_USE_TYPE_SLOTS + (*tp->tp_free)(o); + #else + { + freefunc tp_free = (freefunc)PyType_GetSlot(tp, Py_tp_free); + if (tp_free) tp_free(o); + } + #endif + #if CYTHON_USE_TYPE_SPECS + Py_DECREF(tp); + #endif +} + +static PyObject *__pyx_getprop_10selectolax_6lexbor_13TextContainer_text(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_10selectolax_6lexbor_13TextContainer_4text_1__get__(o); +} + +static PyMethodDef __pyx_methods_10selectolax_6lexbor_TextContainer[] = { + {"append", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_13TextContainer_3append, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_13TextContainer_2append}, + {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_13TextContainer_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_13TextContainer_4__reduce_cython__}, + {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_13TextContainer_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_13TextContainer_6__setstate_cython__}, + {0, 0, 0, 0} +}; + +static struct PyGetSetDef __pyx_getsets_10selectolax_6lexbor_TextContainer[] = { + {"text", __pyx_getprop_10selectolax_6lexbor_13TextContainer_text, 0, 0, 0}, + {0, 0, 0, 0, 0} +}; +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_type_10selectolax_6lexbor_TextContainer_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_10selectolax_6lexbor_TextContainer}, + {Py_tp_doc, (void *)PyDoc_STR("TextContainer(str separator='', bool strip=False)")}, + {Py_tp_methods, (void *)__pyx_methods_10selectolax_6lexbor_TextContainer}, + {Py_tp_getset, (void *)__pyx_getsets_10selectolax_6lexbor_TextContainer}, + {Py_tp_init, (void *)__pyx_pw_10selectolax_6lexbor_13TextContainer_1__init__}, + {Py_tp_new, (void *)__pyx_tp_new_10selectolax_6lexbor_TextContainer}, + {0, 0}, +}; +static PyType_Spec __pyx_type_10selectolax_6lexbor_TextContainer_spec = { + "selectolax.lexbor.TextContainer", + sizeof(struct __pyx_obj_10selectolax_6lexbor_TextContainer), + 0, + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER, + __pyx_type_10selectolax_6lexbor_TextContainer_slots, +}; +#else + +static PyTypeObject __pyx_type_10selectolax_6lexbor_TextContainer = { + PyVarObject_HEAD_INIT(0, 0) + "selectolax.lexbor.""TextContainer", /*tp_name*/ + sizeof(struct __pyx_obj_10selectolax_6lexbor_TextContainer), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_10selectolax_6lexbor_TextContainer, /*tp_dealloc*/ + 0, /*tp_vectorcall_offset*/ + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + 0, /*tp_as_async*/ + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER, /*tp_flags*/ + PyDoc_STR("TextContainer(str separator='', bool strip=False)"), /*tp_doc*/ + 0, /*tp_traverse*/ + 0, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + __pyx_methods_10selectolax_6lexbor_TextContainer, /*tp_methods*/ + 0, /*tp_members*/ + __pyx_getsets_10selectolax_6lexbor_TextContainer, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + #if !CYTHON_USE_TYPE_SPECS + 0, /*tp_dictoffset*/ + #endif + __pyx_pw_10selectolax_6lexbor_13TextContainer_1__init__, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_10selectolax_6lexbor_TextContainer, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if CYTHON_USE_TP_FINALIZE + 0, /*tp_finalize*/ + #else + NULL, /*tp_finalize*/ + #endif + #if !CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800 + 0, /*tp_vectorcall*/ + #endif + #if __PYX_NEED_TP_PRINT_SLOT == 1 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030C0000 + 0, /*tp_watched*/ + #endif + #if PY_VERSION_HEX >= 0x030d00A4 + 0, /*tp_versions_used*/ + #endif + #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, /*tp_pypy_flags*/ + #endif +}; +#endif +static struct __pyx_vtabstruct_10selectolax_6lexbor_LexborSelector __pyx_vtable_10selectolax_6lexbor_LexborSelector; + +static PyObject *__pyx_tp_new_10selectolax_6lexbor_LexborSelector(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { + struct __pyx_obj_10selectolax_6lexbor_LexborSelector *p; + PyObject *o; + o = __Pyx_AllocateExtensionType(t, 0); + if (unlikely(!o)) return 0; + p = ((struct __pyx_obj_10selectolax_6lexbor_LexborSelector *)o); + p->__pyx_vtab = __pyx_vtabptr_10selectolax_6lexbor_LexborSelector; + p->node = ((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)Py_None); Py_INCREF(Py_None); + p->nodes = ((PyObject*)Py_None); Py_INCREF(Py_None); + return o; +} + +static void __pyx_tp_dealloc_10selectolax_6lexbor_LexborSelector(PyObject *o) { + struct __pyx_obj_10selectolax_6lexbor_LexborSelector *p = (struct __pyx_obj_10selectolax_6lexbor_LexborSelector *)o; + #if CYTHON_USE_TP_FINALIZE + if (unlikely(__Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { + if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_10selectolax_6lexbor_LexborSelector) { + if (PyObject_CallFinalizerFromDealloc(o)) return; + } + } + #endif + PyObject_GC_UnTrack(o); + Py_CLEAR(p->node); + Py_CLEAR(p->nodes); + PyTypeObject *tp = Py_TYPE(o); + #if CYTHON_USE_TYPE_SLOTS + (*tp->tp_free)(o); + #else + { + freefunc tp_free = (freefunc)PyType_GetSlot(tp, Py_tp_free); + if (tp_free) tp_free(o); + } + #endif + #if CYTHON_USE_TYPE_SPECS + Py_DECREF(tp); + #endif +} + +static int __pyx_tp_traverse_10selectolax_6lexbor_LexborSelector(PyObject *o, visitproc v, void *a) { + int e; + struct __pyx_obj_10selectolax_6lexbor_LexborSelector *p = (struct __pyx_obj_10selectolax_6lexbor_LexborSelector *)o; + { + e = __Pyx_call_type_traverse(o, 1, v, a); + if (e) return e; + } + if (p->node) { + e = (*v)(((PyObject *)p->node), a); if (e) return e; + } + if (p->nodes) { + e = (*v)(p->nodes, a); if (e) return e; + } + return 0; +} + +static int __pyx_tp_clear_10selectolax_6lexbor_LexborSelector(PyObject *o) { + PyObject* tmp; + struct __pyx_obj_10selectolax_6lexbor_LexborSelector *p = (struct __pyx_obj_10selectolax_6lexbor_LexborSelector *)o; + tmp = ((PyObject*)p->node); + p->node = ((struct __pyx_obj_10selectolax_6lexbor_LexborNode *)Py_None); Py_INCREF(Py_None); + Py_XDECREF(tmp); + tmp = ((PyObject*)p->nodes); + p->nodes = ((PyObject*)Py_None); Py_INCREF(Py_None); + Py_XDECREF(tmp); + return 0; +} + +static PyObject *__pyx_getprop_10selectolax_6lexbor_14LexborSelector_matches(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_10selectolax_6lexbor_14LexborSelector_7matches_1__get__(o); +} + +static PyObject *__pyx_getprop_10selectolax_6lexbor_14LexborSelector_any_matches(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_10selectolax_6lexbor_14LexborSelector_11any_matches_1__get__(o); +} + +static PyMethodDef __pyx_methods_10selectolax_6lexbor_LexborSelector[] = { + {"text_contains", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_14LexborSelector_5text_contains, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_14LexborSelector_4text_contains}, + {"any_text_contains", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_14LexborSelector_7any_text_contains, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_14LexborSelector_6any_text_contains}, + {"attribute_longer_than", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_14LexborSelector_9attribute_longer_than, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_14LexborSelector_8attribute_longer_than}, + {"any_attribute_longer_than", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_14LexborSelector_11any_attribute_longer_than, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_14LexborSelector_10any_attribute_longer_than}, + {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_14LexborSelector_15__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_14LexborSelector_14__reduce_cython__}, + {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6lexbor_14LexborSelector_17__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6lexbor_14LexborSelector_16__setstate_cython__}, + {0, 0, 0, 0} +}; + +static struct PyGetSetDef __pyx_getsets_10selectolax_6lexbor_LexborSelector[] = { + {"matches", __pyx_getprop_10selectolax_6lexbor_14LexborSelector_matches, 0, PyDoc_STR("LexborSelector.matches: list\n\nReturns all possible matches"), 0}, + {"any_matches", __pyx_getprop_10selectolax_6lexbor_14LexborSelector_any_matches, 0, PyDoc_STR("LexborSelector.any_matches: bool\n\nReturns True if there are any matches"), 0}, + {0, 0, 0, 0, 0} +}; +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_type_10selectolax_6lexbor_LexborSelector_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_10selectolax_6lexbor_LexborSelector}, + {Py_nb_bool, (void *)__pyx_pw_10selectolax_6lexbor_14LexborSelector_13__bool__}, + {Py_tp_doc, (void *)PyDoc_STR("LexborSelector(LexborNode node, query)\n\nAn advanced CSS selector that supports additional operations.\n\nThink of it as a toolkit that mimics some of the features of XPath.\n\nPlease note, this is an experimental feature that can change in the future.")}, + {Py_tp_traverse, (void *)__pyx_tp_traverse_10selectolax_6lexbor_LexborSelector}, + {Py_tp_clear, (void *)__pyx_tp_clear_10selectolax_6lexbor_LexborSelector}, + {Py_tp_methods, (void *)__pyx_methods_10selectolax_6lexbor_LexborSelector}, + {Py_tp_getset, (void *)__pyx_getsets_10selectolax_6lexbor_LexborSelector}, + {Py_tp_init, (void *)__pyx_pw_10selectolax_6lexbor_14LexborSelector_1__init__}, + {Py_tp_new, (void *)__pyx_tp_new_10selectolax_6lexbor_LexborSelector}, + {0, 0}, +}; +static PyType_Spec __pyx_type_10selectolax_6lexbor_LexborSelector_spec = { + "selectolax.lexbor.LexborSelector", + sizeof(struct __pyx_obj_10selectolax_6lexbor_LexborSelector), + 0, + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, + __pyx_type_10selectolax_6lexbor_LexborSelector_slots, +}; +#else + +static PyNumberMethods __pyx_tp_as_number_LexborSelector = { + 0, /*nb_add*/ + 0, /*nb_subtract*/ + 0, /*nb_multiply*/ + 0, /*nb_remainder*/ + 0, /*nb_divmod*/ + 0, /*nb_power*/ + 0, /*nb_negative*/ + 0, /*nb_positive*/ + 0, /*nb_absolute*/ + __pyx_pw_10selectolax_6lexbor_14LexborSelector_13__bool__, /*nb_bool*/ + 0, /*nb_invert*/ + 0, /*nb_lshift*/ + 0, /*nb_rshift*/ + 0, /*nb_and*/ + 0, /*nb_xor*/ + 0, /*nb_or*/ + 0, /*nb_int*/ + 0, /*nb_long (reserved)*/ + 0, /*nb_float*/ + 0, /*nb_inplace_add*/ + 0, /*nb_inplace_subtract*/ + 0, /*nb_inplace_multiply*/ + 0, /*nb_inplace_remainder*/ + 0, /*nb_inplace_power*/ + 0, /*nb_inplace_lshift*/ + 0, /*nb_inplace_rshift*/ + 0, /*nb_inplace_and*/ + 0, /*nb_inplace_xor*/ + 0, /*nb_inplace_or*/ + 0, /*nb_floor_divide*/ + 0, /*nb_true_divide*/ + 0, /*nb_inplace_floor_divide*/ + 0, /*nb_inplace_true_divide*/ + 0, /*nb_index*/ + 0, /*nb_matrix_multiply*/ + 0, /*nb_inplace_matrix_multiply*/ +}; + +static PyTypeObject __pyx_type_10selectolax_6lexbor_LexborSelector = { + PyVarObject_HEAD_INIT(0, 0) + "selectolax.lexbor.""LexborSelector", /*tp_name*/ + sizeof(struct __pyx_obj_10selectolax_6lexbor_LexborSelector), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_10selectolax_6lexbor_LexborSelector, /*tp_dealloc*/ + 0, /*tp_vectorcall_offset*/ + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + 0, /*tp_as_async*/ + 0, /*tp_repr*/ + &__pyx_tp_as_number_LexborSelector, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ + PyDoc_STR("LexborSelector(LexborNode node, query)\n\nAn advanced CSS selector that supports additional operations.\n\nThink of it as a toolkit that mimics some of the features of XPath.\n\nPlease note, this is an experimental feature that can change in the future."), /*tp_doc*/ + __pyx_tp_traverse_10selectolax_6lexbor_LexborSelector, /*tp_traverse*/ + __pyx_tp_clear_10selectolax_6lexbor_LexborSelector, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + __pyx_methods_10selectolax_6lexbor_LexborSelector, /*tp_methods*/ + 0, /*tp_members*/ + __pyx_getsets_10selectolax_6lexbor_LexborSelector, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + #if !CYTHON_USE_TYPE_SPECS + 0, /*tp_dictoffset*/ + #endif + __pyx_pw_10selectolax_6lexbor_14LexborSelector_1__init__, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_10selectolax_6lexbor_LexborSelector, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if CYTHON_USE_TP_FINALIZE + 0, /*tp_finalize*/ + #else + NULL, /*tp_finalize*/ + #endif + #if !CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800 + 0, /*tp_vectorcall*/ + #endif + #if __PYX_NEED_TP_PRINT_SLOT == 1 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030C0000 + 0, /*tp_watched*/ + #endif + #if PY_VERSION_HEX >= 0x030d00A4 + 0, /*tp_versions_used*/ + #endif + #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, /*tp_pypy_flags*/ + #endif +}; +#endif + +static PyObject *__pyx_tp_new_10selectolax_6lexbor___pyx_scope_struct____iter__(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { + PyObject *o; + #if CYTHON_USE_FREELISTS + if (likely((int)(__pyx_mstate_global->__pyx_freecount_10selectolax_6lexbor___pyx_scope_struct____iter__ > 0) & __PYX_CHECK_FINAL_TYPE_FOR_FREELISTS(t, __pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor___pyx_scope_struct____iter__, sizeof(struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct____iter__)))) + { + o = (PyObject*)__pyx_mstate_global->__pyx_freelist_10selectolax_6lexbor___pyx_scope_struct____iter__[--__pyx_mstate_global->__pyx_freecount_10selectolax_6lexbor___pyx_scope_struct____iter__]; + #if CYTHON_USE_TYPE_SPECS + Py_DECREF(Py_TYPE(o)); + #endif + memset(o, 0, sizeof(struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct____iter__)); + #if CYTHON_COMPILING_IN_LIMITED_API + (void) PyObject_Init(o, t); + #else + (void) PyObject_INIT(o, t); + #endif + PyObject_GC_Track(o); + } else + #endif + { + o = __Pyx_AllocateExtensionType(t, 1); + if (unlikely(!o)) return 0; + } + return o; +} + +static void __pyx_tp_dealloc_10selectolax_6lexbor___pyx_scope_struct____iter__(PyObject *o) { + struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct____iter__ *p = (struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct____iter__ *)o; + #if CYTHON_USE_TP_FINALIZE + if (unlikely(__Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { + if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_10selectolax_6lexbor___pyx_scope_struct____iter__) { + if (PyObject_CallFinalizerFromDealloc(o)) return; + } + } + #endif + PyObject_GC_UnTrack(o); + Py_CLEAR(p->__pyx_v_attributes); + Py_CLEAR(p->__pyx_v_self); + #if CYTHON_USE_FREELISTS + if (likely((int)(__pyx_mstate_global->__pyx_freecount_10selectolax_6lexbor___pyx_scope_struct____iter__ < 8) & __PYX_CHECK_FINAL_TYPE_FOR_FREELISTS(Py_TYPE(o), __pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor___pyx_scope_struct____iter__, sizeof(struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct____iter__)))) + { + __pyx_mstate_global->__pyx_freelist_10selectolax_6lexbor___pyx_scope_struct____iter__[__pyx_mstate_global->__pyx_freecount_10selectolax_6lexbor___pyx_scope_struct____iter__++] = ((struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct____iter__ *)o); + } else + #endif + { + PyTypeObject *tp = Py_TYPE(o); + #if CYTHON_USE_TYPE_SLOTS + (*tp->tp_free)(o); + #else + { + freefunc tp_free = (freefunc)PyType_GetSlot(tp, Py_tp_free); + if (tp_free) tp_free(o); + } + #endif + #if CYTHON_USE_TYPE_SPECS + Py_DECREF(tp); + #endif + } +} + +static int __pyx_tp_traverse_10selectolax_6lexbor___pyx_scope_struct____iter__(PyObject *o, visitproc v, void *a) { + int e; + struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct____iter__ *p = (struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct____iter__ *)o; + { + e = __Pyx_call_type_traverse(o, 1, v, a); + if (e) return e; + } + if (p->__pyx_v_attributes) { + e = (*v)(p->__pyx_v_attributes, a); if (e) return e; + } + if (p->__pyx_v_self) { + e = (*v)(((PyObject *)p->__pyx_v_self), a); if (e) return e; + } + return 0; +} +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_type_10selectolax_6lexbor___pyx_scope_struct____iter___slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_10selectolax_6lexbor___pyx_scope_struct____iter__}, + {Py_tp_traverse, (void *)__pyx_tp_traverse_10selectolax_6lexbor___pyx_scope_struct____iter__}, + {Py_tp_new, (void *)__pyx_tp_new_10selectolax_6lexbor___pyx_scope_struct____iter__}, + {0, 0}, +}; +static PyType_Spec __pyx_type_10selectolax_6lexbor___pyx_scope_struct____iter___spec = { + "selectolax.lexbor.__pyx_scope_struct____iter__", + sizeof(struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct____iter__), + 0, + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, + __pyx_type_10selectolax_6lexbor___pyx_scope_struct____iter___slots, +}; +#else + +static PyTypeObject __pyx_type_10selectolax_6lexbor___pyx_scope_struct____iter__ = { + PyVarObject_HEAD_INIT(0, 0) + "selectolax.lexbor.""__pyx_scope_struct____iter__", /*tp_name*/ + sizeof(struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct____iter__), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_10selectolax_6lexbor___pyx_scope_struct____iter__, /*tp_dealloc*/ + 0, /*tp_vectorcall_offset*/ + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + 0, /*tp_as_async*/ + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ + 0, /*tp_doc*/ + __pyx_tp_traverse_10selectolax_6lexbor___pyx_scope_struct____iter__, /*tp_traverse*/ + 0, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + 0, /*tp_methods*/ + 0, /*tp_members*/ + 0, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + #if !CYTHON_USE_TYPE_SPECS + 0, /*tp_dictoffset*/ + #endif + 0, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_10selectolax_6lexbor___pyx_scope_struct____iter__, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if CYTHON_USE_TP_FINALIZE + 0, /*tp_finalize*/ + #else + NULL, /*tp_finalize*/ + #endif + #if !CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800 + 0, /*tp_vectorcall*/ + #endif + #if __PYX_NEED_TP_PRINT_SLOT == 1 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030C0000 + 0, /*tp_watched*/ + #endif + #if PY_VERSION_HEX >= 0x030d00A4 + 0, /*tp_versions_used*/ + #endif + #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, /*tp_pypy_flags*/ + #endif +}; +#endif + +static PyObject *__pyx_tp_new_10selectolax_6lexbor___pyx_scope_struct_1_items(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { + PyObject *o; + #if CYTHON_USE_FREELISTS + if (likely((int)(__pyx_mstate_global->__pyx_freecount_10selectolax_6lexbor___pyx_scope_struct_1_items > 0) & __PYX_CHECK_FINAL_TYPE_FOR_FREELISTS(t, __pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor___pyx_scope_struct_1_items, sizeof(struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct_1_items)))) + { + o = (PyObject*)__pyx_mstate_global->__pyx_freelist_10selectolax_6lexbor___pyx_scope_struct_1_items[--__pyx_mstate_global->__pyx_freecount_10selectolax_6lexbor___pyx_scope_struct_1_items]; + #if CYTHON_USE_TYPE_SPECS + Py_DECREF(Py_TYPE(o)); + #endif + memset(o, 0, sizeof(struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct_1_items)); + #if CYTHON_COMPILING_IN_LIMITED_API + (void) PyObject_Init(o, t); + #else + (void) PyObject_INIT(o, t); + #endif + PyObject_GC_Track(o); + } else + #endif + { + o = __Pyx_AllocateExtensionType(t, 1); + if (unlikely(!o)) return 0; + } + return o; +} + +static void __pyx_tp_dealloc_10selectolax_6lexbor___pyx_scope_struct_1_items(PyObject *o) { + struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct_1_items *p = (struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct_1_items *)o; + #if CYTHON_USE_TP_FINALIZE + if (unlikely(__Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { + if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_10selectolax_6lexbor___pyx_scope_struct_1_items) { + if (PyObject_CallFinalizerFromDealloc(o)) return; + } + } + #endif + PyObject_GC_UnTrack(o); + Py_CLEAR(p->__pyx_v_key); + Py_CLEAR(p->__pyx_v_self); + Py_CLEAR(p->__pyx_t_0); + #if CYTHON_USE_FREELISTS + if (likely((int)(__pyx_mstate_global->__pyx_freecount_10selectolax_6lexbor___pyx_scope_struct_1_items < 8) & __PYX_CHECK_FINAL_TYPE_FOR_FREELISTS(Py_TYPE(o), __pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor___pyx_scope_struct_1_items, sizeof(struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct_1_items)))) + { + __pyx_mstate_global->__pyx_freelist_10selectolax_6lexbor___pyx_scope_struct_1_items[__pyx_mstate_global->__pyx_freecount_10selectolax_6lexbor___pyx_scope_struct_1_items++] = ((struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct_1_items *)o); + } else + #endif + { + PyTypeObject *tp = Py_TYPE(o); + #if CYTHON_USE_TYPE_SLOTS + (*tp->tp_free)(o); + #else + { + freefunc tp_free = (freefunc)PyType_GetSlot(tp, Py_tp_free); + if (tp_free) tp_free(o); + } + #endif + #if CYTHON_USE_TYPE_SPECS + Py_DECREF(tp); + #endif + } +} + +static int __pyx_tp_traverse_10selectolax_6lexbor___pyx_scope_struct_1_items(PyObject *o, visitproc v, void *a) { + int e; + struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct_1_items *p = (struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct_1_items *)o; + { + e = __Pyx_call_type_traverse(o, 1, v, a); + if (e) return e; + } + if (p->__pyx_v_key) { + e = (*v)(p->__pyx_v_key, a); if (e) return e; + } + if (p->__pyx_v_self) { + e = (*v)(((PyObject *)p->__pyx_v_self), a); if (e) return e; + } + if (p->__pyx_t_0) { + e = (*v)(p->__pyx_t_0, a); if (e) return e; + } + return 0; +} +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_type_10selectolax_6lexbor___pyx_scope_struct_1_items_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_10selectolax_6lexbor___pyx_scope_struct_1_items}, + {Py_tp_traverse, (void *)__pyx_tp_traverse_10selectolax_6lexbor___pyx_scope_struct_1_items}, + {Py_tp_new, (void *)__pyx_tp_new_10selectolax_6lexbor___pyx_scope_struct_1_items}, + {0, 0}, +}; +static PyType_Spec __pyx_type_10selectolax_6lexbor___pyx_scope_struct_1_items_spec = { + "selectolax.lexbor.__pyx_scope_struct_1_items", + sizeof(struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct_1_items), + 0, + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, + __pyx_type_10selectolax_6lexbor___pyx_scope_struct_1_items_slots, +}; +#else + +static PyTypeObject __pyx_type_10selectolax_6lexbor___pyx_scope_struct_1_items = { + PyVarObject_HEAD_INIT(0, 0) + "selectolax.lexbor.""__pyx_scope_struct_1_items", /*tp_name*/ + sizeof(struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct_1_items), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_10selectolax_6lexbor___pyx_scope_struct_1_items, /*tp_dealloc*/ + 0, /*tp_vectorcall_offset*/ + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + 0, /*tp_as_async*/ + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ + 0, /*tp_doc*/ + __pyx_tp_traverse_10selectolax_6lexbor___pyx_scope_struct_1_items, /*tp_traverse*/ + 0, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + 0, /*tp_methods*/ + 0, /*tp_members*/ + 0, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + #if !CYTHON_USE_TYPE_SPECS + 0, /*tp_dictoffset*/ + #endif + 0, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_10selectolax_6lexbor___pyx_scope_struct_1_items, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if CYTHON_USE_TP_FINALIZE + 0, /*tp_finalize*/ + #else + NULL, /*tp_finalize*/ + #endif + #if !CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800 + 0, /*tp_vectorcall*/ + #endif + #if __PYX_NEED_TP_PRINT_SLOT == 1 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030C0000 + 0, /*tp_watched*/ + #endif + #if PY_VERSION_HEX >= 0x030d00A4 + 0, /*tp_versions_used*/ + #endif + #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, /*tp_pypy_flags*/ + #endif +}; +#endif + +static PyObject *__pyx_tp_new_10selectolax_6lexbor___pyx_scope_struct_2_values(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { + PyObject *o; + #if CYTHON_USE_FREELISTS + if (likely((int)(__pyx_mstate_global->__pyx_freecount_10selectolax_6lexbor___pyx_scope_struct_2_values > 0) & __PYX_CHECK_FINAL_TYPE_FOR_FREELISTS(t, __pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor___pyx_scope_struct_2_values, sizeof(struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct_2_values)))) + { + o = (PyObject*)__pyx_mstate_global->__pyx_freelist_10selectolax_6lexbor___pyx_scope_struct_2_values[--__pyx_mstate_global->__pyx_freecount_10selectolax_6lexbor___pyx_scope_struct_2_values]; + #if CYTHON_USE_TYPE_SPECS + Py_DECREF(Py_TYPE(o)); + #endif + memset(o, 0, sizeof(struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct_2_values)); + #if CYTHON_COMPILING_IN_LIMITED_API + (void) PyObject_Init(o, t); + #else + (void) PyObject_INIT(o, t); + #endif + PyObject_GC_Track(o); + } else + #endif + { + o = __Pyx_AllocateExtensionType(t, 1); + if (unlikely(!o)) return 0; + } + return o; +} + +static void __pyx_tp_dealloc_10selectolax_6lexbor___pyx_scope_struct_2_values(PyObject *o) { + struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct_2_values *p = (struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct_2_values *)o; + #if CYTHON_USE_TP_FINALIZE + if (unlikely(__Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { + if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_10selectolax_6lexbor___pyx_scope_struct_2_values) { + if (PyObject_CallFinalizerFromDealloc(o)) return; + } + } + #endif + PyObject_GC_UnTrack(o); + Py_CLEAR(p->__pyx_v_key); + Py_CLEAR(p->__pyx_v_self); + Py_CLEAR(p->__pyx_t_0); + #if CYTHON_USE_FREELISTS + if (likely((int)(__pyx_mstate_global->__pyx_freecount_10selectolax_6lexbor___pyx_scope_struct_2_values < 8) & __PYX_CHECK_FINAL_TYPE_FOR_FREELISTS(Py_TYPE(o), __pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor___pyx_scope_struct_2_values, sizeof(struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct_2_values)))) + { + __pyx_mstate_global->__pyx_freelist_10selectolax_6lexbor___pyx_scope_struct_2_values[__pyx_mstate_global->__pyx_freecount_10selectolax_6lexbor___pyx_scope_struct_2_values++] = ((struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct_2_values *)o); + } else + #endif + { + PyTypeObject *tp = Py_TYPE(o); + #if CYTHON_USE_TYPE_SLOTS + (*tp->tp_free)(o); + #else + { + freefunc tp_free = (freefunc)PyType_GetSlot(tp, Py_tp_free); + if (tp_free) tp_free(o); + } + #endif + #if CYTHON_USE_TYPE_SPECS + Py_DECREF(tp); + #endif + } +} + +static int __pyx_tp_traverse_10selectolax_6lexbor___pyx_scope_struct_2_values(PyObject *o, visitproc v, void *a) { + int e; + struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct_2_values *p = (struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct_2_values *)o; + { + e = __Pyx_call_type_traverse(o, 1, v, a); + if (e) return e; + } + if (p->__pyx_v_key) { + e = (*v)(p->__pyx_v_key, a); if (e) return e; + } + if (p->__pyx_v_self) { + e = (*v)(((PyObject *)p->__pyx_v_self), a); if (e) return e; + } + if (p->__pyx_t_0) { + e = (*v)(p->__pyx_t_0, a); if (e) return e; + } + return 0; +} +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_type_10selectolax_6lexbor___pyx_scope_struct_2_values_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_10selectolax_6lexbor___pyx_scope_struct_2_values}, + {Py_tp_traverse, (void *)__pyx_tp_traverse_10selectolax_6lexbor___pyx_scope_struct_2_values}, + {Py_tp_new, (void *)__pyx_tp_new_10selectolax_6lexbor___pyx_scope_struct_2_values}, + {0, 0}, +}; +static PyType_Spec __pyx_type_10selectolax_6lexbor___pyx_scope_struct_2_values_spec = { + "selectolax.lexbor.__pyx_scope_struct_2_values", + sizeof(struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct_2_values), + 0, + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, + __pyx_type_10selectolax_6lexbor___pyx_scope_struct_2_values_slots, +}; +#else + +static PyTypeObject __pyx_type_10selectolax_6lexbor___pyx_scope_struct_2_values = { + PyVarObject_HEAD_INIT(0, 0) + "selectolax.lexbor.""__pyx_scope_struct_2_values", /*tp_name*/ + sizeof(struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct_2_values), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_10selectolax_6lexbor___pyx_scope_struct_2_values, /*tp_dealloc*/ + 0, /*tp_vectorcall_offset*/ + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + 0, /*tp_as_async*/ + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ + 0, /*tp_doc*/ + __pyx_tp_traverse_10selectolax_6lexbor___pyx_scope_struct_2_values, /*tp_traverse*/ + 0, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + 0, /*tp_methods*/ + 0, /*tp_members*/ + 0, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + #if !CYTHON_USE_TYPE_SPECS + 0, /*tp_dictoffset*/ + #endif + 0, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_10selectolax_6lexbor___pyx_scope_struct_2_values, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if CYTHON_USE_TP_FINALIZE + 0, /*tp_finalize*/ + #else + NULL, /*tp_finalize*/ + #endif + #if !CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800 + 0, /*tp_vectorcall*/ + #endif + #if __PYX_NEED_TP_PRINT_SLOT == 1 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030C0000 + 0, /*tp_watched*/ + #endif + #if PY_VERSION_HEX >= 0x030d00A4 + 0, /*tp_versions_used*/ + #endif + #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, /*tp_pypy_flags*/ + #endif +}; +#endif + +static PyObject *__pyx_tp_new_10selectolax_6lexbor___pyx_scope_struct_3_iter(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { + PyObject *o; + #if CYTHON_USE_FREELISTS + if (likely((int)(__pyx_mstate_global->__pyx_freecount_10selectolax_6lexbor___pyx_scope_struct_3_iter > 0) & __PYX_CHECK_FINAL_TYPE_FOR_FREELISTS(t, __pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor___pyx_scope_struct_3_iter, sizeof(struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct_3_iter)))) + { + o = (PyObject*)__pyx_mstate_global->__pyx_freelist_10selectolax_6lexbor___pyx_scope_struct_3_iter[--__pyx_mstate_global->__pyx_freecount_10selectolax_6lexbor___pyx_scope_struct_3_iter]; + #if CYTHON_USE_TYPE_SPECS + Py_DECREF(Py_TYPE(o)); + #endif + memset(o, 0, sizeof(struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct_3_iter)); + #if CYTHON_COMPILING_IN_LIMITED_API + (void) PyObject_Init(o, t); + #else + (void) PyObject_INIT(o, t); + #endif + PyObject_GC_Track(o); + } else + #endif + { + o = __Pyx_AllocateExtensionType(t, 1); + if (unlikely(!o)) return 0; + } + return o; +} + +static void __pyx_tp_dealloc_10selectolax_6lexbor___pyx_scope_struct_3_iter(PyObject *o) { + struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct_3_iter *p = (struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct_3_iter *)o; + #if CYTHON_USE_TP_FINALIZE + if (unlikely(__Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { + if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_10selectolax_6lexbor___pyx_scope_struct_3_iter) { + if (PyObject_CallFinalizerFromDealloc(o)) return; + } + } + #endif + PyObject_GC_UnTrack(o); + Py_CLEAR(p->__pyx_v_include_text); + Py_CLEAR(p->__pyx_v_next_node); + Py_CLEAR(p->__pyx_v_self); + Py_CLEAR(p->__pyx_v_skip_empty); + #if CYTHON_USE_FREELISTS + if (likely((int)(__pyx_mstate_global->__pyx_freecount_10selectolax_6lexbor___pyx_scope_struct_3_iter < 8) & __PYX_CHECK_FINAL_TYPE_FOR_FREELISTS(Py_TYPE(o), __pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor___pyx_scope_struct_3_iter, sizeof(struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct_3_iter)))) + { + __pyx_mstate_global->__pyx_freelist_10selectolax_6lexbor___pyx_scope_struct_3_iter[__pyx_mstate_global->__pyx_freecount_10selectolax_6lexbor___pyx_scope_struct_3_iter++] = ((struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct_3_iter *)o); + } else + #endif + { + PyTypeObject *tp = Py_TYPE(o); + #if CYTHON_USE_TYPE_SLOTS + (*tp->tp_free)(o); + #else + { + freefunc tp_free = (freefunc)PyType_GetSlot(tp, Py_tp_free); + if (tp_free) tp_free(o); + } + #endif + #if CYTHON_USE_TYPE_SPECS + Py_DECREF(tp); + #endif + } +} + +static int __pyx_tp_traverse_10selectolax_6lexbor___pyx_scope_struct_3_iter(PyObject *o, visitproc v, void *a) { + int e; + struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct_3_iter *p = (struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct_3_iter *)o; + { + e = __Pyx_call_type_traverse(o, 1, v, a); + if (e) return e; + } + if (p->__pyx_v_include_text) { + e = (*v)(((PyObject *)p->__pyx_v_include_text), a); if (e) return e; + } + if (p->__pyx_v_next_node) { + e = (*v)(((PyObject *)p->__pyx_v_next_node), a); if (e) return e; + } + if (p->__pyx_v_self) { + e = (*v)(((PyObject *)p->__pyx_v_self), a); if (e) return e; + } + if (p->__pyx_v_skip_empty) { + e = (*v)(((PyObject *)p->__pyx_v_skip_empty), a); if (e) return e; + } + return 0; +} +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_type_10selectolax_6lexbor___pyx_scope_struct_3_iter_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_10selectolax_6lexbor___pyx_scope_struct_3_iter}, + {Py_tp_traverse, (void *)__pyx_tp_traverse_10selectolax_6lexbor___pyx_scope_struct_3_iter}, + {Py_tp_new, (void *)__pyx_tp_new_10selectolax_6lexbor___pyx_scope_struct_3_iter}, + {0, 0}, +}; +static PyType_Spec __pyx_type_10selectolax_6lexbor___pyx_scope_struct_3_iter_spec = { + "selectolax.lexbor.__pyx_scope_struct_3_iter", + sizeof(struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct_3_iter), + 0, + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, + __pyx_type_10selectolax_6lexbor___pyx_scope_struct_3_iter_slots, +}; +#else + +static PyTypeObject __pyx_type_10selectolax_6lexbor___pyx_scope_struct_3_iter = { + PyVarObject_HEAD_INIT(0, 0) + "selectolax.lexbor.""__pyx_scope_struct_3_iter", /*tp_name*/ + sizeof(struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct_3_iter), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_10selectolax_6lexbor___pyx_scope_struct_3_iter, /*tp_dealloc*/ + 0, /*tp_vectorcall_offset*/ + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + 0, /*tp_as_async*/ + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ + 0, /*tp_doc*/ + __pyx_tp_traverse_10selectolax_6lexbor___pyx_scope_struct_3_iter, /*tp_traverse*/ + 0, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + 0, /*tp_methods*/ + 0, /*tp_members*/ + 0, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + #if !CYTHON_USE_TYPE_SPECS + 0, /*tp_dictoffset*/ + #endif + 0, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_10selectolax_6lexbor___pyx_scope_struct_3_iter, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if CYTHON_USE_TP_FINALIZE + 0, /*tp_finalize*/ + #else + NULL, /*tp_finalize*/ + #endif + #if !CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800 + 0, /*tp_vectorcall*/ + #endif + #if __PYX_NEED_TP_PRINT_SLOT == 1 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030C0000 + 0, /*tp_watched*/ + #endif + #if PY_VERSION_HEX >= 0x030d00A4 + 0, /*tp_versions_used*/ + #endif + #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, /*tp_pypy_flags*/ + #endif +}; +#endif + +static PyObject *__pyx_tp_new_10selectolax_6lexbor___pyx_scope_struct_4_traverse(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { + PyObject *o; + #if CYTHON_USE_FREELISTS + if (likely((int)(__pyx_mstate_global->__pyx_freecount_10selectolax_6lexbor___pyx_scope_struct_4_traverse > 0) & __PYX_CHECK_FINAL_TYPE_FOR_FREELISTS(t, __pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor___pyx_scope_struct_4_traverse, sizeof(struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct_4_traverse)))) + { + o = (PyObject*)__pyx_mstate_global->__pyx_freelist_10selectolax_6lexbor___pyx_scope_struct_4_traverse[--__pyx_mstate_global->__pyx_freecount_10selectolax_6lexbor___pyx_scope_struct_4_traverse]; + #if CYTHON_USE_TYPE_SPECS + Py_DECREF(Py_TYPE(o)); + #endif + memset(o, 0, sizeof(struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct_4_traverse)); + #if CYTHON_COMPILING_IN_LIMITED_API + (void) PyObject_Init(o, t); + #else + (void) PyObject_INIT(o, t); + #endif + PyObject_GC_Track(o); + } else + #endif + { + o = __Pyx_AllocateExtensionType(t, 1); + if (unlikely(!o)) return 0; + } + return o; +} + +static void __pyx_tp_dealloc_10selectolax_6lexbor___pyx_scope_struct_4_traverse(PyObject *o) { + struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct_4_traverse *p = (struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct_4_traverse *)o; + #if CYTHON_USE_TP_FINALIZE + if (unlikely(__Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { + if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_10selectolax_6lexbor___pyx_scope_struct_4_traverse) { + if (PyObject_CallFinalizerFromDealloc(o)) return; + } + } + #endif + PyObject_GC_UnTrack(o); + Py_CLEAR(p->__pyx_v_include_text); + Py_CLEAR(p->__pyx_v_lxb_node); + Py_CLEAR(p->__pyx_v_self); + Py_CLEAR(p->__pyx_v_skip_empty); + #if CYTHON_USE_FREELISTS + if (likely((int)(__pyx_mstate_global->__pyx_freecount_10selectolax_6lexbor___pyx_scope_struct_4_traverse < 8) & __PYX_CHECK_FINAL_TYPE_FOR_FREELISTS(Py_TYPE(o), __pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor___pyx_scope_struct_4_traverse, sizeof(struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct_4_traverse)))) + { + __pyx_mstate_global->__pyx_freelist_10selectolax_6lexbor___pyx_scope_struct_4_traverse[__pyx_mstate_global->__pyx_freecount_10selectolax_6lexbor___pyx_scope_struct_4_traverse++] = ((struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct_4_traverse *)o); + } else + #endif + { + PyTypeObject *tp = Py_TYPE(o); + #if CYTHON_USE_TYPE_SLOTS + (*tp->tp_free)(o); + #else + { + freefunc tp_free = (freefunc)PyType_GetSlot(tp, Py_tp_free); + if (tp_free) tp_free(o); + } + #endif + #if CYTHON_USE_TYPE_SPECS + Py_DECREF(tp); + #endif + } +} + +static int __pyx_tp_traverse_10selectolax_6lexbor___pyx_scope_struct_4_traverse(PyObject *o, visitproc v, void *a) { + int e; + struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct_4_traverse *p = (struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct_4_traverse *)o; + { + e = __Pyx_call_type_traverse(o, 1, v, a); + if (e) return e; + } + if (p->__pyx_v_include_text) { + e = (*v)(((PyObject *)p->__pyx_v_include_text), a); if (e) return e; + } + if (p->__pyx_v_lxb_node) { + e = (*v)(((PyObject *)p->__pyx_v_lxb_node), a); if (e) return e; + } + if (p->__pyx_v_self) { + e = (*v)(((PyObject *)p->__pyx_v_self), a); if (e) return e; + } + if (p->__pyx_v_skip_empty) { + e = (*v)(((PyObject *)p->__pyx_v_skip_empty), a); if (e) return e; + } + return 0; +} +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_type_10selectolax_6lexbor___pyx_scope_struct_4_traverse_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_10selectolax_6lexbor___pyx_scope_struct_4_traverse}, + {Py_tp_traverse, (void *)__pyx_tp_traverse_10selectolax_6lexbor___pyx_scope_struct_4_traverse}, + {Py_tp_new, (void *)__pyx_tp_new_10selectolax_6lexbor___pyx_scope_struct_4_traverse}, + {0, 0}, +}; +static PyType_Spec __pyx_type_10selectolax_6lexbor___pyx_scope_struct_4_traverse_spec = { + "selectolax.lexbor.__pyx_scope_struct_4_traverse", + sizeof(struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct_4_traverse), + 0, + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, + __pyx_type_10selectolax_6lexbor___pyx_scope_struct_4_traverse_slots, +}; +#else + +static PyTypeObject __pyx_type_10selectolax_6lexbor___pyx_scope_struct_4_traverse = { + PyVarObject_HEAD_INIT(0, 0) + "selectolax.lexbor.""__pyx_scope_struct_4_traverse", /*tp_name*/ + sizeof(struct __pyx_obj_10selectolax_6lexbor___pyx_scope_struct_4_traverse), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_10selectolax_6lexbor___pyx_scope_struct_4_traverse, /*tp_dealloc*/ + 0, /*tp_vectorcall_offset*/ + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + 0, /*tp_as_async*/ + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ + 0, /*tp_doc*/ + __pyx_tp_traverse_10selectolax_6lexbor___pyx_scope_struct_4_traverse, /*tp_traverse*/ + 0, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + 0, /*tp_methods*/ + 0, /*tp_members*/ + 0, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + #if !CYTHON_USE_TYPE_SPECS + 0, /*tp_dictoffset*/ + #endif + 0, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_10selectolax_6lexbor___pyx_scope_struct_4_traverse, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if CYTHON_USE_TP_FINALIZE + 0, /*tp_finalize*/ + #else + NULL, /*tp_finalize*/ + #endif + #if !CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800 + 0, /*tp_vectorcall*/ + #endif + #if __PYX_NEED_TP_PRINT_SLOT == 1 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030C0000 + 0, /*tp_watched*/ + #endif + #if PY_VERSION_HEX >= 0x030d00A4 + 0, /*tp_versions_used*/ + #endif + #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, /*tp_pypy_flags*/ + #endif +}; +#endif + +static PyMethodDef __pyx_methods[] = { + {0, 0, 0, 0} +}; +/* #### Code section: initfunc_declarations ### */ +static CYTHON_SMALL_CODE int __Pyx_InitCachedBuiltins(__pyx_mstatetype *__pyx_mstate); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(__pyx_mstatetype *__pyx_mstate); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_InitGlobals(void); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_InitConstants(__pyx_mstatetype *__pyx_mstate); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_global_init_code(__pyx_mstatetype *__pyx_mstate); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_variable_export_code(__pyx_mstatetype *__pyx_mstate); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_function_export_code(__pyx_mstatetype *__pyx_mstate); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_type_init_code(__pyx_mstatetype *__pyx_mstate); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_type_import_code(__pyx_mstatetype *__pyx_mstate); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_variable_import_code(__pyx_mstatetype *__pyx_mstate); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_function_import_code(__pyx_mstatetype *__pyx_mstate); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_CreateCodeObjects(__pyx_mstatetype *__pyx_mstate); /*proto*/ +/* #### Code section: init_module ### */ + +static int __Pyx_modinit_global_init_code(__pyx_mstatetype *__pyx_mstate) { + __Pyx_RefNannyDeclarations + CYTHON_UNUSED_VAR(__pyx_mstate); + __Pyx_RefNannySetupContext("__Pyx_modinit_global_init_code", 0); + /*--- Global init code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + +static int __Pyx_modinit_variable_export_code(__pyx_mstatetype *__pyx_mstate) { + __Pyx_RefNannyDeclarations + CYTHON_UNUSED_VAR(__pyx_mstate); + __Pyx_RefNannySetupContext("__Pyx_modinit_variable_export_code", 0); + /*--- Variable export code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + +static int __Pyx_modinit_function_export_code(__pyx_mstatetype *__pyx_mstate) { + __Pyx_RefNannyDeclarations + CYTHON_UNUSED_VAR(__pyx_mstate); + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__Pyx_modinit_function_export_code", 0); + /*--- Function export code ---*/ + { + __pyx_t_1 = __Pyx_ApiExport_GetApiDict(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + const char * __pyx_export_signature = __Pyx_PyBytes_AsString(__pyx_mstate_global->__pyx_kp_b_int_lxb_char_t_const_size_t_int); + #if !CYTHON_ASSUME_SAFE_MACROS + if (unlikely(!__pyx_export_signature)) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + const char * __pyx_export_name = __pyx_export_signature + 56; + void (*const __pyx_export_pointers[])(void) = {(void (*)(void))&__pyx_f_10selectolax_6lexbor__is_whitespace_only, (void (*)(void))&__pyx_f_10selectolax_6lexbor_is_empty_text_node, (void (*)(void)) NULL}; + void (*const *__pyx_export_pointer)(void) = __pyx_export_pointers; + const char *__pyx_export_current_signature = __pyx_export_signature; + while (*__pyx_export_pointer) { + if (__Pyx_ExportFunction(__pyx_t_1, __pyx_export_name, *__pyx_export_pointer, __pyx_export_current_signature) < (0)) __PYX_ERR(0, 1, __pyx_L1_error) + ++__pyx_export_pointer; + __pyx_export_name = strchr(__pyx_export_name, '\0') + 1; + __pyx_export_signature = strchr(__pyx_export_signature, '\0') + 1; + if (*__pyx_export_signature != '\0') __pyx_export_current_signature = __pyx_export_signature; + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + __Pyx_RefNannyFinishContext(); + return 0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_RefNannyFinishContext(); + return -1; +} + +static int __Pyx_modinit_type_init_code(__pyx_mstatetype *__pyx_mstate) { + __Pyx_RefNannyDeclarations + CYTHON_UNUSED_VAR(__pyx_mstate); + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__Pyx_modinit_type_init_code", 0); + /*--- Type init code ---*/ + __pyx_vtabptr_10selectolax_6lexbor_LexborNode = &__pyx_vtable_10selectolax_6lexbor_LexborNode; + __pyx_vtable_10selectolax_6lexbor_LexborNode.__pyx_new = (struct __pyx_obj_10selectolax_6lexbor_LexborNode *(*)(lxb_dom_node_t *, struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *))__pyx_f_10selectolax_6lexbor_10LexborNode_new; + __pyx_vtable_10selectolax_6lexbor_LexborNode.set_as_fragment_root = (void (*)(struct __pyx_obj_10selectolax_6lexbor_LexborNode *))__pyx_f_10selectolax_6lexbor_10LexborNode_set_as_fragment_root; + __pyx_vtable_10selectolax_6lexbor_LexborNode._get_node = (struct __pyx_obj_10selectolax_6lexbor_LexborNode *(*)(struct __pyx_obj_10selectolax_6lexbor_LexborNode *))__pyx_f_10selectolax_6lexbor_10LexborNode__get_node; + #if CYTHON_USE_TYPE_SPECS + __pyx_mstate->__pyx_ptype_10selectolax_6lexbor_LexborNode = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_10selectolax_6lexbor_LexborNode_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_10selectolax_6lexbor_LexborNode)) __PYX_ERR(4, 31, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_10selectolax_6lexbor_LexborNode_spec, __pyx_mstate->__pyx_ptype_10selectolax_6lexbor_LexborNode) < (0)) __PYX_ERR(4, 31, __pyx_L1_error) + #else + __pyx_mstate->__pyx_ptype_10selectolax_6lexbor_LexborNode = &__pyx_type_10selectolax_6lexbor_LexborNode; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + #endif + #if !CYTHON_USE_TYPE_SPECS + if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_10selectolax_6lexbor_LexborNode) < (0)) __PYX_ERR(4, 31, __pyx_L1_error) + #endif + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_10selectolax_6lexbor_LexborNode); + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_10selectolax_6lexbor_LexborNode->tp_dictoffset && __pyx_mstate->__pyx_ptype_10selectolax_6lexbor_LexborNode->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_mstate->__pyx_ptype_10selectolax_6lexbor_LexborNode->tp_getattro = PyObject_GenericGetAttr; + } + #endif + if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_10selectolax_6lexbor_LexborNode, __pyx_vtabptr_10selectolax_6lexbor_LexborNode) < (0)) __PYX_ERR(4, 31, __pyx_L1_error) + if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_10selectolax_6lexbor_LexborNode) < (0)) __PYX_ERR(4, 31, __pyx_L1_error) + if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_LexborNode, (PyObject *) __pyx_mstate->__pyx_ptype_10selectolax_6lexbor_LexborNode) < (0)) __PYX_ERR(4, 31, __pyx_L1_error) + if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_10selectolax_6lexbor_LexborNode) < (0)) __PYX_ERR(4, 31, __pyx_L1_error) + __pyx_vtabptr_10selectolax_6lexbor_LexborCSSSelector = &__pyx_vtable_10selectolax_6lexbor_LexborCSSSelector; + __pyx_vtable_10selectolax_6lexbor_LexborCSSSelector._create_css_parser = (int (*)(struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector *))__pyx_f_10selectolax_6lexbor_17LexborCSSSelector__create_css_parser; + __pyx_vtable_10selectolax_6lexbor_LexborCSSSelector.find = (PyObject *(*)(struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector *, PyObject *, struct __pyx_obj_10selectolax_6lexbor_LexborNode *, int __pyx_skip_dispatch))__pyx_f_10selectolax_6lexbor_17LexborCSSSelector_find; + __pyx_vtable_10selectolax_6lexbor_LexborCSSSelector.find_first = (PyObject *(*)(struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector *, PyObject *, struct __pyx_obj_10selectolax_6lexbor_LexborNode *, int __pyx_skip_dispatch))__pyx_f_10selectolax_6lexbor_17LexborCSSSelector_find_first; + __pyx_vtable_10selectolax_6lexbor_LexborCSSSelector._find = (PyObject *(*)(struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector *, PyObject *, struct __pyx_obj_10selectolax_6lexbor_LexborNode *, int, int __pyx_skip_dispatch))__pyx_f_10selectolax_6lexbor_17LexborCSSSelector__find; + __pyx_vtable_10selectolax_6lexbor_LexborCSSSelector.any_matches = (int (*)(struct __pyx_obj_10selectolax_6lexbor_LexborCSSSelector *, PyObject *, struct __pyx_obj_10selectolax_6lexbor_LexborNode *, int __pyx_skip_dispatch))__pyx_f_10selectolax_6lexbor_17LexborCSSSelector_any_matches; + #if CYTHON_USE_TYPE_SPECS + __pyx_mstate->__pyx_ptype_10selectolax_6lexbor_LexborCSSSelector = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_10selectolax_6lexbor_LexborCSSSelector_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_10selectolax_6lexbor_LexborCSSSelector)) __PYX_ERR(6, 6, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_10selectolax_6lexbor_LexborCSSSelector_spec, __pyx_mstate->__pyx_ptype_10selectolax_6lexbor_LexborCSSSelector) < (0)) __PYX_ERR(6, 6, __pyx_L1_error) + #else + __pyx_mstate->__pyx_ptype_10selectolax_6lexbor_LexborCSSSelector = &__pyx_type_10selectolax_6lexbor_LexborCSSSelector; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + #endif + #if !CYTHON_USE_TYPE_SPECS + if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_10selectolax_6lexbor_LexborCSSSelector) < (0)) __PYX_ERR(6, 6, __pyx_L1_error) + #endif + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_10selectolax_6lexbor_LexborCSSSelector); + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_10selectolax_6lexbor_LexborCSSSelector->tp_dictoffset && __pyx_mstate->__pyx_ptype_10selectolax_6lexbor_LexborCSSSelector->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_mstate->__pyx_ptype_10selectolax_6lexbor_LexborCSSSelector->tp_getattro = PyObject_GenericGetAttr; + } + #endif + if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_10selectolax_6lexbor_LexborCSSSelector, __pyx_vtabptr_10selectolax_6lexbor_LexborCSSSelector) < (0)) __PYX_ERR(6, 6, __pyx_L1_error) + if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_10selectolax_6lexbor_LexborCSSSelector) < (0)) __PYX_ERR(6, 6, __pyx_L1_error) + if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_LexborCSSSelector, (PyObject *) __pyx_mstate->__pyx_ptype_10selectolax_6lexbor_LexborCSSSelector) < (0)) __PYX_ERR(6, 6, __pyx_L1_error) + if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_10selectolax_6lexbor_LexborCSSSelector) < (0)) __PYX_ERR(6, 6, __pyx_L1_error) + __pyx_vtabptr_10selectolax_6lexbor_LexborHTMLParser = &__pyx_vtable_10selectolax_6lexbor_LexborHTMLParser; + __pyx_vtable_10selectolax_6lexbor_LexborHTMLParser._new_html_document = (void (*)(struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *))__pyx_f_10selectolax_6lexbor_16LexborHTMLParser__new_html_document; + __pyx_vtable_10selectolax_6lexbor_LexborHTMLParser._parse_html_document = (lxb_status_t (*)(struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *, char *, size_t))__pyx_f_10selectolax_6lexbor_16LexborHTMLParser__parse_html_document; + __pyx_vtable_10selectolax_6lexbor_LexborHTMLParser._parse_html_fragment = (lxb_status_t (*)(struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *, char *, size_t))__pyx_f_10selectolax_6lexbor_16LexborHTMLParser__parse_html_fragment; + __pyx_vtable_10selectolax_6lexbor_LexborHTMLParser._parse_html = (int (*)(struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *, char *, size_t))__pyx_f_10selectolax_6lexbor_16LexborHTMLParser__parse_html; + __pyx_vtable_10selectolax_6lexbor_LexborHTMLParser.from_document = (struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *(*)(lxb_html_document_t *, PyObject *))__pyx_f_10selectolax_6lexbor_16LexborHTMLParser_from_document; + __pyx_vtable_10selectolax_6lexbor_LexborHTMLParser.main_document = (lxb_html_document_t *(*)(struct __pyx_obj_10selectolax_6lexbor_LexborHTMLParser *))__pyx_f_10selectolax_6lexbor_16LexborHTMLParser_main_document; + #if CYTHON_USE_TYPE_SPECS + __pyx_mstate->__pyx_ptype_10selectolax_6lexbor_LexborHTMLParser = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_10selectolax_6lexbor_LexborHTMLParser_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_10selectolax_6lexbor_LexborHTMLParser)) __PYX_ERR(0, 15, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_10selectolax_6lexbor_LexborHTMLParser_spec, __pyx_mstate->__pyx_ptype_10selectolax_6lexbor_LexborHTMLParser) < (0)) __PYX_ERR(0, 15, __pyx_L1_error) + #else + __pyx_mstate->__pyx_ptype_10selectolax_6lexbor_LexborHTMLParser = &__pyx_type_10selectolax_6lexbor_LexborHTMLParser; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + #endif + #if !CYTHON_USE_TYPE_SPECS + if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_10selectolax_6lexbor_LexborHTMLParser) < (0)) __PYX_ERR(0, 15, __pyx_L1_error) + #endif + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_10selectolax_6lexbor_LexborHTMLParser); + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_10selectolax_6lexbor_LexborHTMLParser->tp_dictoffset && __pyx_mstate->__pyx_ptype_10selectolax_6lexbor_LexborHTMLParser->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_mstate->__pyx_ptype_10selectolax_6lexbor_LexborHTMLParser->tp_getattro = PyObject_GenericGetAttr; + } + #endif + #if CYTHON_UPDATE_DESCRIPTOR_DOC + { + PyObject *wrapper = PyObject_GetAttrString((PyObject *)__pyx_mstate->__pyx_ptype_10selectolax_6lexbor_LexborHTMLParser, "__init__"); if (unlikely(!wrapper)) __PYX_ERR(0, 15, __pyx_L1_error) + if (__Pyx_IS_TYPE(wrapper, &PyWrapperDescr_Type)) { + __pyx_wrapperbase_10selectolax_6lexbor_16LexborHTMLParser___init__ = *((PyWrapperDescrObject *)wrapper)->d_base; + __pyx_wrapperbase_10selectolax_6lexbor_16LexborHTMLParser___init__.doc = __pyx_doc_10selectolax_6lexbor_16LexborHTMLParser___init__; + ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_10selectolax_6lexbor_16LexborHTMLParser___init__; + } + } + #endif + #if CYTHON_UPDATE_DESCRIPTOR_DOC + { + PyObject *wrapper = PyObject_GetAttrString((PyObject *)__pyx_mstate->__pyx_ptype_10selectolax_6lexbor_LexborHTMLParser, "__repr__"); if (unlikely(!wrapper)) __PYX_ERR(0, 15, __pyx_L1_error) + if (__Pyx_IS_TYPE(wrapper, &PyWrapperDescr_Type)) { + __pyx_wrapperbase_10selectolax_6lexbor_16LexborHTMLParser_4__repr__ = *((PyWrapperDescrObject *)wrapper)->d_base; + __pyx_wrapperbase_10selectolax_6lexbor_16LexborHTMLParser_4__repr__.doc = __pyx_doc_10selectolax_6lexbor_16LexborHTMLParser_4__repr__; + ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_10selectolax_6lexbor_16LexborHTMLParser_4__repr__; + } + } + #endif + if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_10selectolax_6lexbor_LexborHTMLParser, __pyx_vtabptr_10selectolax_6lexbor_LexborHTMLParser) < (0)) __PYX_ERR(0, 15, __pyx_L1_error) + if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_10selectolax_6lexbor_LexborHTMLParser) < (0)) __PYX_ERR(0, 15, __pyx_L1_error) + if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_LexborHTMLParser, (PyObject *) __pyx_mstate->__pyx_ptype_10selectolax_6lexbor_LexborHTMLParser) < (0)) __PYX_ERR(0, 15, __pyx_L1_error) + if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_10selectolax_6lexbor_LexborHTMLParser) < (0)) __PYX_ERR(0, 15, __pyx_L1_error) + __pyx_vtabptr_10selectolax_6lexbor_LexborAttributes = &__pyx_vtable_10selectolax_6lexbor_LexborAttributes; + __pyx_vtable_10selectolax_6lexbor_LexborAttributes.create = (struct __pyx_obj_10selectolax_6lexbor_LexborAttributes *(*)(lxb_dom_node_t *))__pyx_f_10selectolax_6lexbor_16LexborAttributes_create; + #if CYTHON_USE_TYPE_SPECS + __pyx_mstate->__pyx_ptype_10selectolax_6lexbor_LexborAttributes = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_10selectolax_6lexbor_LexborAttributes_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_10selectolax_6lexbor_LexborAttributes)) __PYX_ERR(3, 4, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_10selectolax_6lexbor_LexborAttributes_spec, __pyx_mstate->__pyx_ptype_10selectolax_6lexbor_LexborAttributes) < (0)) __PYX_ERR(3, 4, __pyx_L1_error) + #else + __pyx_mstate->__pyx_ptype_10selectolax_6lexbor_LexborAttributes = &__pyx_type_10selectolax_6lexbor_LexborAttributes; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + #endif + #if !CYTHON_USE_TYPE_SPECS + if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_10selectolax_6lexbor_LexborAttributes) < (0)) __PYX_ERR(3, 4, __pyx_L1_error) + #endif + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_10selectolax_6lexbor_LexborAttributes); + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_10selectolax_6lexbor_LexborAttributes->tp_dictoffset && __pyx_mstate->__pyx_ptype_10selectolax_6lexbor_LexborAttributes->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_mstate->__pyx_ptype_10selectolax_6lexbor_LexborAttributes->tp_getattro = PyObject_GenericGetAttr; + } + #endif + if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_10selectolax_6lexbor_LexborAttributes, __pyx_vtabptr_10selectolax_6lexbor_LexborAttributes) < (0)) __PYX_ERR(3, 4, __pyx_L1_error) + if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_10selectolax_6lexbor_LexborAttributes) < (0)) __PYX_ERR(3, 4, __pyx_L1_error) + if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_LexborAttributes, (PyObject *) __pyx_mstate->__pyx_ptype_10selectolax_6lexbor_LexborAttributes) < (0)) __PYX_ERR(3, 4, __pyx_L1_error) + if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_10selectolax_6lexbor_LexborAttributes) < (0)) __PYX_ERR(3, 4, __pyx_L1_error) + __pyx_vtabptr_10selectolax_6lexbor_TextContainer = &__pyx_vtable_10selectolax_6lexbor_TextContainer; + __pyx_vtable_10selectolax_6lexbor_TextContainer.new_with_defaults = (struct __pyx_obj_10selectolax_6lexbor_TextContainer *(*)(void))__pyx_f_10selectolax_6lexbor_13TextContainer_new_with_defaults; + #if CYTHON_USE_TYPE_SPECS + __pyx_mstate->__pyx_ptype_10selectolax_6lexbor_TextContainer = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_10selectolax_6lexbor_TextContainer_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_10selectolax_6lexbor_TextContainer)) __PYX_ERR(4, 1090, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_10selectolax_6lexbor_TextContainer_spec, __pyx_mstate->__pyx_ptype_10selectolax_6lexbor_TextContainer) < (0)) __PYX_ERR(4, 1090, __pyx_L1_error) + #else + __pyx_mstate->__pyx_ptype_10selectolax_6lexbor_TextContainer = &__pyx_type_10selectolax_6lexbor_TextContainer; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + #endif + #if !CYTHON_USE_TYPE_SPECS + if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_10selectolax_6lexbor_TextContainer) < (0)) __PYX_ERR(4, 1090, __pyx_L1_error) + #endif + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_10selectolax_6lexbor_TextContainer); + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_10selectolax_6lexbor_TextContainer->tp_dictoffset && __pyx_mstate->__pyx_ptype_10selectolax_6lexbor_TextContainer->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_mstate->__pyx_ptype_10selectolax_6lexbor_TextContainer->tp_getattro = PyObject_GenericGetAttr; + } + #endif + if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_10selectolax_6lexbor_TextContainer, __pyx_vtabptr_10selectolax_6lexbor_TextContainer) < (0)) __PYX_ERR(4, 1090, __pyx_L1_error) + if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_10selectolax_6lexbor_TextContainer) < (0)) __PYX_ERR(4, 1090, __pyx_L1_error) + if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_10selectolax_6lexbor_TextContainer) < (0)) __PYX_ERR(4, 1090, __pyx_L1_error) + __pyx_vtabptr_10selectolax_6lexbor_LexborSelector = &__pyx_vtable_10selectolax_6lexbor_LexborSelector; + __pyx_vtable_10selectolax_6lexbor_LexborSelector.css = (PyObject *(*)(struct __pyx_obj_10selectolax_6lexbor_LexborSelector *, PyObject *, int __pyx_skip_dispatch))__pyx_f_10selectolax_6lexbor_14LexborSelector_css; + #if CYTHON_USE_TYPE_SPECS + __pyx_mstate->__pyx_ptype_10selectolax_6lexbor_LexborSelector = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_10selectolax_6lexbor_LexborSelector_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_10selectolax_6lexbor_LexborSelector)) __PYX_ERR(6, 113, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_10selectolax_6lexbor_LexborSelector_spec, __pyx_mstate->__pyx_ptype_10selectolax_6lexbor_LexborSelector) < (0)) __PYX_ERR(6, 113, __pyx_L1_error) + #else + __pyx_mstate->__pyx_ptype_10selectolax_6lexbor_LexborSelector = &__pyx_type_10selectolax_6lexbor_LexborSelector; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + #endif + #if !CYTHON_USE_TYPE_SPECS + if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_10selectolax_6lexbor_LexborSelector) < (0)) __PYX_ERR(6, 113, __pyx_L1_error) + #endif + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_10selectolax_6lexbor_LexborSelector); + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_10selectolax_6lexbor_LexborSelector->tp_dictoffset && __pyx_mstate->__pyx_ptype_10selectolax_6lexbor_LexborSelector->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_mstate->__pyx_ptype_10selectolax_6lexbor_LexborSelector->tp_getattro = PyObject_GenericGetAttr; + } + #endif + if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_10selectolax_6lexbor_LexborSelector, __pyx_vtabptr_10selectolax_6lexbor_LexborSelector) < (0)) __PYX_ERR(6, 113, __pyx_L1_error) + if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_10selectolax_6lexbor_LexborSelector) < (0)) __PYX_ERR(6, 113, __pyx_L1_error) + if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_LexborSelector, (PyObject *) __pyx_mstate->__pyx_ptype_10selectolax_6lexbor_LexborSelector) < (0)) __PYX_ERR(6, 113, __pyx_L1_error) + if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_10selectolax_6lexbor_LexborSelector) < (0)) __PYX_ERR(6, 113, __pyx_L1_error) + #if CYTHON_USE_TYPE_SPECS + __pyx_mstate->__pyx_ptype_10selectolax_6lexbor___pyx_scope_struct____iter__ = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_10selectolax_6lexbor___pyx_scope_struct____iter___spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_10selectolax_6lexbor___pyx_scope_struct____iter__)) __PYX_ERR(3, 16, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_10selectolax_6lexbor___pyx_scope_struct____iter___spec, __pyx_mstate->__pyx_ptype_10selectolax_6lexbor___pyx_scope_struct____iter__) < (0)) __PYX_ERR(3, 16, __pyx_L1_error) + #else + __pyx_mstate->__pyx_ptype_10selectolax_6lexbor___pyx_scope_struct____iter__ = &__pyx_type_10selectolax_6lexbor___pyx_scope_struct____iter__; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + #endif + #if !CYTHON_USE_TYPE_SPECS + if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_10selectolax_6lexbor___pyx_scope_struct____iter__) < (0)) __PYX_ERR(3, 16, __pyx_L1_error) + #endif + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_10selectolax_6lexbor___pyx_scope_struct____iter__); + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_10selectolax_6lexbor___pyx_scope_struct____iter__->tp_dictoffset && __pyx_mstate->__pyx_ptype_10selectolax_6lexbor___pyx_scope_struct____iter__->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_mstate->__pyx_ptype_10selectolax_6lexbor___pyx_scope_struct____iter__->tp_getattro = PyObject_GenericGetAttr; + } + #endif + #if CYTHON_USE_TYPE_SPECS + __pyx_mstate->__pyx_ptype_10selectolax_6lexbor___pyx_scope_struct_1_items = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_10selectolax_6lexbor___pyx_scope_struct_1_items_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_10selectolax_6lexbor___pyx_scope_struct_1_items)) __PYX_ERR(3, 83, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_10selectolax_6lexbor___pyx_scope_struct_1_items_spec, __pyx_mstate->__pyx_ptype_10selectolax_6lexbor___pyx_scope_struct_1_items) < (0)) __PYX_ERR(3, 83, __pyx_L1_error) + #else + __pyx_mstate->__pyx_ptype_10selectolax_6lexbor___pyx_scope_struct_1_items = &__pyx_type_10selectolax_6lexbor___pyx_scope_struct_1_items; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + #endif + #if !CYTHON_USE_TYPE_SPECS + if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_10selectolax_6lexbor___pyx_scope_struct_1_items) < (0)) __PYX_ERR(3, 83, __pyx_L1_error) + #endif + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_10selectolax_6lexbor___pyx_scope_struct_1_items); + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_10selectolax_6lexbor___pyx_scope_struct_1_items->tp_dictoffset && __pyx_mstate->__pyx_ptype_10selectolax_6lexbor___pyx_scope_struct_1_items->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_mstate->__pyx_ptype_10selectolax_6lexbor___pyx_scope_struct_1_items->tp_getattro = PyObject_GenericGetAttr; + } + #endif + #if CYTHON_USE_TYPE_SPECS + __pyx_mstate->__pyx_ptype_10selectolax_6lexbor___pyx_scope_struct_2_values = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_10selectolax_6lexbor___pyx_scope_struct_2_values_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_10selectolax_6lexbor___pyx_scope_struct_2_values)) __PYX_ERR(3, 87, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_10selectolax_6lexbor___pyx_scope_struct_2_values_spec, __pyx_mstate->__pyx_ptype_10selectolax_6lexbor___pyx_scope_struct_2_values) < (0)) __PYX_ERR(3, 87, __pyx_L1_error) + #else + __pyx_mstate->__pyx_ptype_10selectolax_6lexbor___pyx_scope_struct_2_values = &__pyx_type_10selectolax_6lexbor___pyx_scope_struct_2_values; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + #endif + #if !CYTHON_USE_TYPE_SPECS + if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_10selectolax_6lexbor___pyx_scope_struct_2_values) < (0)) __PYX_ERR(3, 87, __pyx_L1_error) + #endif + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_10selectolax_6lexbor___pyx_scope_struct_2_values); + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_10selectolax_6lexbor___pyx_scope_struct_2_values->tp_dictoffset && __pyx_mstate->__pyx_ptype_10selectolax_6lexbor___pyx_scope_struct_2_values->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_mstate->__pyx_ptype_10selectolax_6lexbor___pyx_scope_struct_2_values->tp_getattro = PyObject_GenericGetAttr; + } + #endif + #if CYTHON_USE_TYPE_SPECS + __pyx_mstate->__pyx_ptype_10selectolax_6lexbor___pyx_scope_struct_3_iter = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_10selectolax_6lexbor___pyx_scope_struct_3_iter_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_10selectolax_6lexbor___pyx_scope_struct_3_iter)) __PYX_ERR(4, 451, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_10selectolax_6lexbor___pyx_scope_struct_3_iter_spec, __pyx_mstate->__pyx_ptype_10selectolax_6lexbor___pyx_scope_struct_3_iter) < (0)) __PYX_ERR(4, 451, __pyx_L1_error) + #else + __pyx_mstate->__pyx_ptype_10selectolax_6lexbor___pyx_scope_struct_3_iter = &__pyx_type_10selectolax_6lexbor___pyx_scope_struct_3_iter; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + #endif + #if !CYTHON_USE_TYPE_SPECS + if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_10selectolax_6lexbor___pyx_scope_struct_3_iter) < (0)) __PYX_ERR(4, 451, __pyx_L1_error) + #endif + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_10selectolax_6lexbor___pyx_scope_struct_3_iter); + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_10selectolax_6lexbor___pyx_scope_struct_3_iter->tp_dictoffset && __pyx_mstate->__pyx_ptype_10selectolax_6lexbor___pyx_scope_struct_3_iter->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_mstate->__pyx_ptype_10selectolax_6lexbor___pyx_scope_struct_3_iter->tp_getattro = PyObject_GenericGetAttr; + } + #endif + #if CYTHON_USE_TYPE_SPECS + __pyx_mstate->__pyx_ptype_10selectolax_6lexbor___pyx_scope_struct_4_traverse = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_10selectolax_6lexbor___pyx_scope_struct_4_traverse_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_10selectolax_6lexbor___pyx_scope_struct_4_traverse)) __PYX_ERR(4, 606, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_10selectolax_6lexbor___pyx_scope_struct_4_traverse_spec, __pyx_mstate->__pyx_ptype_10selectolax_6lexbor___pyx_scope_struct_4_traverse) < (0)) __PYX_ERR(4, 606, __pyx_L1_error) + #else + __pyx_mstate->__pyx_ptype_10selectolax_6lexbor___pyx_scope_struct_4_traverse = &__pyx_type_10selectolax_6lexbor___pyx_scope_struct_4_traverse; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + #endif + #if !CYTHON_USE_TYPE_SPECS + if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_10selectolax_6lexbor___pyx_scope_struct_4_traverse) < (0)) __PYX_ERR(4, 606, __pyx_L1_error) + #endif + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_10selectolax_6lexbor___pyx_scope_struct_4_traverse); + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_10selectolax_6lexbor___pyx_scope_struct_4_traverse->tp_dictoffset && __pyx_mstate->__pyx_ptype_10selectolax_6lexbor___pyx_scope_struct_4_traverse->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_mstate->__pyx_ptype_10selectolax_6lexbor___pyx_scope_struct_4_traverse->tp_getattro = PyObject_GenericGetAttr; + } + #endif + __Pyx_RefNannyFinishContext(); + return 0; + __pyx_L1_error:; + __Pyx_RefNannyFinishContext(); + return -1; +} + +static int __Pyx_modinit_type_import_code(__pyx_mstatetype *__pyx_mstate) { + __Pyx_RefNannyDeclarations + CYTHON_UNUSED_VAR(__pyx_mstate); + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__Pyx_modinit_type_import_code", 0); + /*--- Type import code ---*/ + __pyx_t_1 = PyImport_ImportModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 8, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_mstate->__pyx_ptype_7cpython_4bool_bool = __Pyx_ImportType_3_2_2(__pyx_t_1, __Pyx_BUILTIN_MODULE_NAME, "bool", + #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000 + sizeof(PyLongObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_2(PyLongObject), + #elif CYTHON_COMPILING_IN_LIMITED_API + 0, 0, + #else + sizeof(PyLongObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_2(PyLongObject), + #endif + __Pyx_ImportType_CheckSize_Warn_3_2_2); if (!__pyx_mstate->__pyx_ptype_7cpython_4bool_bool) __PYX_ERR(9, 8, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = PyImport_ImportModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 9, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_mstate->__pyx_ptype_7cpython_4type_type = __Pyx_ImportType_3_2_2(__pyx_t_1, __Pyx_BUILTIN_MODULE_NAME, "type", + #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000 + sizeof(PyTypeObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_2(PyTypeObject), + #elif CYTHON_COMPILING_IN_LIMITED_API + 0, 0, + #else + sizeof(PyHeapTypeObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_2(PyHeapTypeObject), + #endif + __Pyx_ImportType_CheckSize_Warn_3_2_2); if (!__pyx_mstate->__pyx_ptype_7cpython_4type_type) __PYX_ERR(10, 9, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_RefNannyFinishContext(); + return 0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_RefNannyFinishContext(); + return -1; +} + +static int __Pyx_modinit_variable_import_code(__pyx_mstatetype *__pyx_mstate) { + __Pyx_RefNannyDeclarations + CYTHON_UNUSED_VAR(__pyx_mstate); + __Pyx_RefNannySetupContext("__Pyx_modinit_variable_import_code", 0); + /*--- Variable import code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + +static int __Pyx_modinit_function_import_code(__pyx_mstatetype *__pyx_mstate) { + __Pyx_RefNannyDeclarations + CYTHON_UNUSED_VAR(__pyx_mstate); + __Pyx_RefNannySetupContext("__Pyx_modinit_function_import_code", 0); + /*--- Function import code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + +#if CYTHON_PEP489_MULTI_PHASE_INIT +static PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def); /*proto*/ +static int __pyx_pymod_exec_lexbor(PyObject* module); /*proto*/ +static PyModuleDef_Slot __pyx_moduledef_slots[] = { + {Py_mod_create, (void*)__pyx_pymod_create}, + {Py_mod_exec, (void*)__pyx_pymod_exec_lexbor}, + #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING + {Py_mod_gil, Py_MOD_GIL_USED}, + #endif + #if PY_VERSION_HEX >= 0x030C0000 && CYTHON_USE_MODULE_STATE + {Py_mod_multiple_interpreters, Py_MOD_MULTIPLE_INTERPRETERS_NOT_SUPPORTED}, + #endif + {0, NULL} +}; +#endif + +#ifdef __cplusplus +namespace { + struct PyModuleDef __pyx_moduledef = + #else + static struct PyModuleDef __pyx_moduledef = + #endif + { + PyModuleDef_HEAD_INIT, + "lexbor", + 0, /* m_doc */ + #if CYTHON_USE_MODULE_STATE + sizeof(__pyx_mstatetype), /* m_size */ + #else + (CYTHON_PEP489_MULTI_PHASE_INIT) ? 0 : -1, /* m_size */ + #endif + __pyx_methods /* m_methods */, + #if CYTHON_PEP489_MULTI_PHASE_INIT + __pyx_moduledef_slots, /* m_slots */ + #else + NULL, /* m_reload */ + #endif + #if CYTHON_USE_MODULE_STATE + __pyx_m_traverse, /* m_traverse */ + __pyx_m_clear, /* m_clear */ + NULL /* m_free */ + #else + NULL, /* m_traverse */ + NULL, /* m_clear */ + NULL /* m_free */ + #endif + }; + #ifdef __cplusplus +} /* anonymous namespace */ +#endif + +/* PyModInitFuncType */ +#ifndef CYTHON_NO_PYINIT_EXPORT + #define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC +#else + #ifdef __cplusplus + #define __Pyx_PyMODINIT_FUNC extern "C" PyObject * + #else + #define __Pyx_PyMODINIT_FUNC PyObject * + #endif +#endif + +__Pyx_PyMODINIT_FUNC PyInit_lexbor(void) CYTHON_SMALL_CODE; /*proto*/ +__Pyx_PyMODINIT_FUNC PyInit_lexbor(void) +#if CYTHON_PEP489_MULTI_PHASE_INIT +{ + return PyModuleDef_Init(&__pyx_moduledef); +} +/* ModuleCreationPEP489 */ +#if CYTHON_COMPILING_IN_LIMITED_API && (__PYX_LIMITED_VERSION_HEX < 0x03090000\ + || ((defined(_WIN32) || defined(WIN32) || defined(MS_WINDOWS)) && __PYX_LIMITED_VERSION_HEX < 0x030A0000)) +static PY_INT64_T __Pyx_GetCurrentInterpreterId(void) { + { + PyObject *module = PyImport_ImportModule("_interpreters"); // 3.13+ I think + if (!module) { + PyErr_Clear(); // just try the 3.8-3.12 version + module = PyImport_ImportModule("_xxsubinterpreters"); + if (!module) goto bad; + } + PyObject *current = PyObject_CallMethod(module, "get_current", NULL); + Py_DECREF(module); + if (!current) goto bad; + if (PyTuple_Check(current)) { + PyObject *new_current = PySequence_GetItem(current, 0); + Py_DECREF(current); + current = new_current; + if (!new_current) goto bad; + } + long long as_c_int = PyLong_AsLongLong(current); + Py_DECREF(current); + return as_c_int; + } + bad: + PySys_WriteStderr("__Pyx_GetCurrentInterpreterId failed. Try setting the C define CYTHON_PEP489_MULTI_PHASE_INIT=0\n"); + return -1; +} +#endif +#if !CYTHON_USE_MODULE_STATE +static CYTHON_SMALL_CODE int __Pyx_check_single_interpreter(void) { + static PY_INT64_T main_interpreter_id = -1; +#if CYTHON_COMPILING_IN_GRAAL && defined(GRAALPY_VERSION_NUM) && GRAALPY_VERSION_NUM > 0x19000000 + PY_INT64_T current_id = GraalPyInterpreterState_GetIDFromThreadState(PyThreadState_Get()); +#elif CYTHON_COMPILING_IN_GRAAL + PY_INT64_T current_id = PyInterpreterState_GetIDFromThreadState(PyThreadState_Get()); +#elif CYTHON_COMPILING_IN_LIMITED_API && (__PYX_LIMITED_VERSION_HEX < 0x03090000\ + || ((defined(_WIN32) || defined(WIN32) || defined(MS_WINDOWS)) && __PYX_LIMITED_VERSION_HEX < 0x030A0000)) + PY_INT64_T current_id = __Pyx_GetCurrentInterpreterId(); +#elif CYTHON_COMPILING_IN_LIMITED_API + PY_INT64_T current_id = PyInterpreterState_GetID(PyInterpreterState_Get()); +#else + PY_INT64_T current_id = PyInterpreterState_GetID(PyThreadState_Get()->interp); +#endif + if (unlikely(current_id == -1)) { + return -1; + } + if (main_interpreter_id == -1) { + main_interpreter_id = current_id; + return 0; + } else if (unlikely(main_interpreter_id != current_id)) { + PyErr_SetString( + PyExc_ImportError, + "Interpreter change detected - this module can only be loaded into one interpreter per process."); + return -1; + } + return 0; +} +#endif +static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name, int allow_none) +{ + PyObject *value = PyObject_GetAttrString(spec, from_name); + int result = 0; + if (likely(value)) { + if (allow_none || value != Py_None) { + result = PyDict_SetItemString(moddict, to_name, value); + } + Py_DECREF(value); + } else if (PyErr_ExceptionMatches(PyExc_AttributeError)) { + PyErr_Clear(); + } else { + result = -1; + } + return result; +} +static CYTHON_SMALL_CODE PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def) { + PyObject *module = NULL, *moddict, *modname; + CYTHON_UNUSED_VAR(def); + #if !CYTHON_USE_MODULE_STATE + if (__Pyx_check_single_interpreter()) + return NULL; + #endif + if (__pyx_m) + return __Pyx_NewRef(__pyx_m); + modname = PyObject_GetAttrString(spec, "name"); + if (unlikely(!modname)) goto bad; + module = PyModule_NewObject(modname); + Py_DECREF(modname); + if (unlikely(!module)) goto bad; + moddict = PyModule_GetDict(module); + if (unlikely(!moddict)) goto bad; + if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "loader", "__loader__", 1) < 0)) goto bad; + if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "origin", "__file__", 1) < 0)) goto bad; + if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "parent", "__package__", 1) < 0)) goto bad; + if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "submodule_search_locations", "__path__", 0) < 0)) goto bad; + return module; +bad: + Py_XDECREF(module); + return NULL; +} + + +static CYTHON_SMALL_CODE int __pyx_pymod_exec_lexbor(PyObject *__pyx_pyinit_module) +#endif +{ + int stringtab_initialized = 0; + #if CYTHON_USE_MODULE_STATE + int pystate_addmodule_run = 0; + #endif + __pyx_mstatetype *__pyx_mstate = NULL; + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + Py_ssize_t __pyx_t_6; + size_t __pyx_t_7; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannyDeclarations + #if CYTHON_PEP489_MULTI_PHASE_INIT + if (__pyx_m) { + if (__pyx_m == __pyx_pyinit_module) return 0; + PyErr_SetString(PyExc_RuntimeError, "Module 'lexbor' has already been imported. Re-initialisation is not supported."); + return -1; + } + #else + if (__pyx_m) return __Pyx_NewRef(__pyx_m); + #endif + /*--- Module creation code ---*/ + #if CYTHON_PEP489_MULTI_PHASE_INIT + __pyx_t_1 = __pyx_pyinit_module; + Py_INCREF(__pyx_t_1); + #else + __pyx_t_1 = PyModule_Create(&__pyx_moduledef); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #if CYTHON_USE_MODULE_STATE + { + int add_module_result = __Pyx_State_AddModule(__pyx_t_1, &__pyx_moduledef); + __pyx_t_1 = 0; /* transfer ownership from __pyx_t_1 to "lexbor" pseudovariable */ + if (unlikely((add_module_result < 0))) __PYX_ERR(0, 1, __pyx_L1_error) + pystate_addmodule_run = 1; + } + #else + __pyx_m = __pyx_t_1; + #endif + #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING + PyUnstable_Module_SetGIL(__pyx_m, Py_MOD_GIL_USED); + #endif + __pyx_mstate = __pyx_mstate_global; + CYTHON_UNUSED_VAR(__pyx_t_1); + __pyx_mstate->__pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_mstate->__pyx_d)) __PYX_ERR(0, 1, __pyx_L1_error) + Py_INCREF(__pyx_mstate->__pyx_d); + __pyx_mstate->__pyx_b = __Pyx_PyImport_AddModuleRef(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_mstate->__pyx_b)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_mstate->__pyx_cython_runtime = __Pyx_PyImport_AddModuleRef("cython_runtime"); if (unlikely(!__pyx_mstate->__pyx_cython_runtime)) __PYX_ERR(0, 1, __pyx_L1_error) + if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_mstate->__pyx_b) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + /* ImportRefnannyAPI */ + #if CYTHON_REFNANNY + __Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny"); + if (!__Pyx_RefNanny) { + PyErr_Clear(); + __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny"); + if (!__Pyx_RefNanny) + Py_FatalError("failed to import 'refnanny' module"); + } + #endif + +__Pyx_RefNannySetupContext("PyInit_lexbor", 0); + __Pyx_init_runtime_version(); + if (__Pyx_check_binary_version(__PYX_LIMITED_VERSION_HEX, __Pyx_get_runtime_version(), CYTHON_COMPILING_IN_LIMITED_API) < (0)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_mstate->__pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_mstate->__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_mstate->__pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_mstate->__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_mstate->__pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_mstate->__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error) + /*--- Library function declarations ---*/ + /*--- Initialize various global constants etc. ---*/ + if (__Pyx_InitConstants(__pyx_mstate) < (0)) __PYX_ERR(0, 1, __pyx_L1_error) + stringtab_initialized = 1; + if (__Pyx_InitGlobals() < (0)) __PYX_ERR(0, 1, __pyx_L1_error) + if (__pyx_module_is_main_selectolax__lexbor) { + if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_name, __pyx_mstate_global->__pyx_n_u_main) < (0)) __PYX_ERR(0, 1, __pyx_L1_error) + } + { + PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(0, 1, __pyx_L1_error) + if (!PyDict_GetItemString(modules, "selectolax.lexbor")) { + if (unlikely((PyDict_SetItemString(modules, "selectolax.lexbor", __pyx_m) < 0))) __PYX_ERR(0, 1, __pyx_L1_error) + } + } + /*--- Builtin init code ---*/ + if (__Pyx_InitCachedBuiltins(__pyx_mstate) < (0)) __PYX_ERR(0, 1, __pyx_L1_error) + /*--- Constants init code ---*/ + if (__Pyx_InitCachedConstants(__pyx_mstate) < (0)) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_CreateCodeObjects(__pyx_mstate) < (0)) __PYX_ERR(0, 1, __pyx_L1_error) + /*--- Global type/function init code ---*/ + (void)__Pyx_modinit_global_init_code(__pyx_mstate); + (void)__Pyx_modinit_variable_export_code(__pyx_mstate); + if (unlikely((__Pyx_modinit_function_export_code(__pyx_mstate) < 0))) __PYX_ERR(0, 1, __pyx_L1_error) + if (unlikely((__Pyx_modinit_type_init_code(__pyx_mstate) < 0))) __PYX_ERR(0, 1, __pyx_L1_error) + if (unlikely((__Pyx_modinit_type_import_code(__pyx_mstate) < 0))) __PYX_ERR(0, 1, __pyx_L1_error) + (void)__Pyx_modinit_variable_import_code(__pyx_mstate); + (void)__Pyx_modinit_function_import_code(__pyx_mstate); + /*--- Execution code ---*/ + + /* "selectolax/lexbor.pyx":3 + * from cpython.bool cimport bool + * + * _ENCODING = 'UTF-8' # <<<<<<<<<<<<<< + * + * include "base.pxi" +*/ + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ENCODING, __pyx_mstate_global->__pyx_kp_u_UTF_8) < (0)) __PYX_ERR(0, 3, __pyx_L1_error) + + /* "selectolax/base.pxi":2 + * + * class SelectolaxError(Exception): # <<<<<<<<<<<<<< + * """An exception that indicates error.""" + * pass +*/ + __pyx_t_2 = PyTuple_Pack(1, ((PyObject *)(((PyTypeObject*)PyExc_Exception)))); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 2, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PEP560_update_bases(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 2, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = __Pyx_CalculateMetaclass(NULL, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 2, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = __Pyx_Py3MetaclassPrepare(__pyx_t_4, __pyx_t_3, __pyx_mstate_global->__pyx_n_u_SelectolaxError, __pyx_mstate_global->__pyx_n_u_SelectolaxError, (PyObject *) NULL, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor, __pyx_mstate_global->__pyx_kp_u_An_exception_that_indicates_erro); if (unlikely(!__pyx_t_5)) __PYX_ERR(11, 2, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + if (__pyx_t_3 != __pyx_t_2) { + if (unlikely((PyDict_SetItemString(__pyx_t_5, "__orig_bases__", __pyx_t_2) < 0))) __PYX_ERR(11, 2, __pyx_L1_error) + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_Py3ClassCreate(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_SelectolaxError, __pyx_t_3, __pyx_t_5, NULL, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 2, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2); + #endif + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_SelectolaxError, __pyx_t_2) < (0)) __PYX_ERR(11, 2, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "selectolax/utils.pxi":1 + * from typing import Literal, Optional, Union, Type # <<<<<<<<<<<<<< + * + * MAX_HTML_INPUT_SIZE = 250e+7 +*/ + { + PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_Literal,__pyx_mstate_global->__pyx_n_u_Optional,__pyx_mstate_global->__pyx_n_u_Union,__pyx_mstate_global->__pyx_n_u_Type}; + __pyx_t_1 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_typing, __pyx_imported_names, 4, NULL, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1, __pyx_L1_error) + } + __pyx_t_3 = __pyx_t_1; + __Pyx_GOTREF(__pyx_t_3); + { + PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_Literal,__pyx_mstate_global->__pyx_n_u_Optional,__pyx_mstate_global->__pyx_n_u_Union,__pyx_mstate_global->__pyx_n_u_Type}; + for (__pyx_t_6=0; __pyx_t_6 < 4; __pyx_t_6++) { + __pyx_t_4 = __Pyx_ImportFrom(__pyx_t_3, __pyx_imported_names[__pyx_t_6]); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_imported_names[__pyx_t_6], __pyx_t_4) < (0)) __PYX_ERR(2, 1, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "selectolax/utils.pxi":3 + * from typing import Literal, Optional, Union, Type + * + * MAX_HTML_INPUT_SIZE = 250e+7 # <<<<<<<<<<<<<< + * + * ParserCls = Union[Type["HTMLParser"], Type["LexborHTMLParser"]] +*/ + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_MAX_HTML_INPUT_SIZE, __pyx_mstate_global->__pyx_float_250e_7) < (0)) __PYX_ERR(2, 3, __pyx_L1_error) + + /* "selectolax/utils.pxi":5 + * MAX_HTML_INPUT_SIZE = 250e+7 + * + * ParserCls = Union[Type["HTMLParser"], Type["LexborHTMLParser"]] # <<<<<<<<<<<<<< + * Parser = Union["HTMLParser", "LexborHTMLParser"] + * FRAGMENT = Literal[ +*/ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_Union); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_Type); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = __Pyx_PyObject_Dict_GetItem(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_HTMLParser); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_Type); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_2 = __Pyx_PyObject_Dict_GetItem(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_LexborHTMLParser); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = PyTuple_Pack(2, __pyx_t_5, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyObject_GetItem(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ParserCls, __pyx_t_2) < (0)) __PYX_ERR(2, 5, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "selectolax/utils.pxi":6 + * + * ParserCls = Union[Type["HTMLParser"], Type["LexborHTMLParser"]] + * Parser = Union["HTMLParser", "LexborHTMLParser"] # <<<<<<<<<<<<<< + * FRAGMENT = Literal[ + * "document", +*/ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_Union); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_4 = __Pyx_PyObject_GetItem(__pyx_t_2, __pyx_mstate_global->__pyx_tuple[2]); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_Parser, __pyx_t_4) < (0)) __PYX_ERR(2, 6, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "selectolax/utils.pxi":7 + * ParserCls = Union[Type["HTMLParser"], Type["LexborHTMLParser"]] + * Parser = Union["HTMLParser", "LexborHTMLParser"] + * FRAGMENT = Literal[ # <<<<<<<<<<<<<< + * "document", + * "fragment", +*/ + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_Literal); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 7, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_2 = __Pyx_PyObject_GetItem(__pyx_t_4, __pyx_mstate_global->__pyx_tuple[3]); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 7, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_FRAGMENT, __pyx_t_2) < (0)) __PYX_ERR(2, 7, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "selectolax/utils.pxi":19 + * + * + * def preprocess_input(html, decode_errors='ignore'): # <<<<<<<<<<<<<< + * if isinstance(html, (str, unicode)): + * bytes_html = html.encode('UTF-8', errors=decode_errors) +*/ + __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6lexbor_1preprocess_input, 0, __pyx_mstate_global->__pyx_n_u_preprocess_input, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[5])); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 19, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2); + #endif + __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_mstate_global->__pyx_tuple[4]); + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_preprocess_input, __pyx_t_2) < (0)) __PYX_ERR(2, 19, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "selectolax/utils.pxi":32 + * + * + * def do_create_tag(tag: str, parser_cls: ParserCls): # <<<<<<<<<<<<<< + * if not tag: + * raise ValueError("Tag name cannot be empty") +*/ + __pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 32, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_tag, __pyx_mstate_global->__pyx_n_u_str) < (0)) __PYX_ERR(2, 32, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_parser_cls, __pyx_mstate_global->__pyx_n_u_ParserCls) < (0)) __PYX_ERR(2, 32, __pyx_L1_error) + __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6lexbor_3do_create_tag, 0, __pyx_mstate_global->__pyx_n_u_do_create_tag, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[6])); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 32, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_4); + #endif + __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_4, __pyx_t_2); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_do_create_tag, __pyx_t_4) < (0)) __PYX_ERR(2, 32, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "selectolax/utils.pxi":38 + * + * + * def get_fragment_type( # <<<<<<<<<<<<<< + * html: str, + * parser_cls: ParserCls, +*/ + __pyx_t_4 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 38, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + if (PyDict_SetItem(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_html, __pyx_mstate_global->__pyx_n_u_str) < (0)) __PYX_ERR(2, 38, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_parser_cls, __pyx_mstate_global->__pyx_n_u_ParserCls) < (0)) __PYX_ERR(2, 38, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_tree, __pyx_mstate_global->__pyx_kp_u_Optional_Parser) < (0)) __PYX_ERR(2, 38, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_FRAGMENT) < (0)) __PYX_ERR(2, 38, __pyx_L1_error) + __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6lexbor_5get_fragment_type, 0, __pyx_mstate_global->__pyx_n_u_get_fragment_type, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[7])); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 38, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2); + #endif + __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_mstate_global->__pyx_tuple[5]); + __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_4); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_get_fragment_type, __pyx_t_2) < (0)) __PYX_ERR(2, 38, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "selectolax/utils.pxi":81 + * + * + * def do_parse_fragment(html: str, parser_cls: ParserCls): # <<<<<<<<<<<<<< + * """ + * Given HTML, parse it into a list of Nodes, such that the nodes +*/ + __pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 81, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_html, __pyx_mstate_global->__pyx_n_u_str) < (0)) __PYX_ERR(2, 81, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_parser_cls, __pyx_mstate_global->__pyx_n_u_ParserCls) < (0)) __PYX_ERR(2, 81, __pyx_L1_error) + __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6lexbor_7do_parse_fragment, 0, __pyx_mstate_global->__pyx_n_u_do_parse_fragment, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[8])); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 81, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_4); + #endif + __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_4, __pyx_t_2); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_do_parse_fragment, __pyx_t_4) < (0)) __PYX_ERR(2, 81, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "selectolax/lexbor/attrs.pxi":80 + * return len(list(self.__iter__())) + * + * def keys(self): # <<<<<<<<<<<<<< + * return self.__iter__() + * +*/ + __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6lexbor_16LexborAttributes_12keys, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_LexborAttributes_keys, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[9])); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 80, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_4); + #endif + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborAttributes, __pyx_mstate_global->__pyx_n_u_keys, __pyx_t_4) < (0)) __PYX_ERR(3, 80, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "selectolax/lexbor/attrs.pxi":83 + * return self.__iter__() + * + * def items(self): # <<<<<<<<<<<<<< + * for key in self.__iter__(): + * yield key, self[key] +*/ + __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6lexbor_16LexborAttributes_14items, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_LexborAttributes_items, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[1])); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 83, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_4); + #endif + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborAttributes, __pyx_mstate_global->__pyx_n_u_items, __pyx_t_4) < (0)) __PYX_ERR(3, 83, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "selectolax/lexbor/attrs.pxi":87 + * yield key, self[key] + * + * def values(self): # <<<<<<<<<<<<<< + * for key in self.__iter__(): + * yield self[key] +*/ + __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6lexbor_16LexborAttributes_17values, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_LexborAttributes_values, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[2])); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 87, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_4); + #endif + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborAttributes, __pyx_mstate_global->__pyx_n_u_values, __pyx_t_4) < (0)) __PYX_ERR(3, 87, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "selectolax/lexbor/attrs.pxi":91 + * yield self[key] + * + * def get(self, key, default=None): # <<<<<<<<<<<<<< + * try: + * return self[key] +*/ + __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6lexbor_16LexborAttributes_20get, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_LexborAttributes_get, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[10])); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 91, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_4); + #endif + __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_4, __pyx_mstate_global->__pyx_tuple[5]); + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborAttributes, __pyx_mstate_global->__pyx_n_u_get, __pyx_t_4) < (0)) __PYX_ERR(3, 91, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "selectolax/lexbor/attrs.pxi":97 + * return default + * + * def sget(self, key, default=""): # <<<<<<<<<<<<<< + * """Same as get, but returns empty strings instead of None values for empty attributes.""" + * try: +*/ + __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6lexbor_16LexborAttributes_22sget, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_LexborAttributes_sget, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[11])); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 97, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_4); + #endif + __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_4, __pyx_mstate_global->__pyx_tuple[6]); + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborAttributes, __pyx_mstate_global->__pyx_n_u_sget, __pyx_t_4) < (0)) __PYX_ERR(3, 97, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * raise TypeError, "self.node cannot be converted to a Python object for pickling" + * def __setstate_cython__(self, __pyx_state): +*/ + __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6lexbor_16LexborAttributes_28__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_LexborAttributes___reduce_cython, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[12])); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_4); + #endif + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_4) < (0)) __PYX_ERR(1, 1, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "(tree fragment)":3 + * def __reduce_cython__(self): + * raise TypeError, "self.node cannot be converted to a Python object for pickling" + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * raise TypeError, "self.node cannot be converted to a Python object for pickling" +*/ + __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6lexbor_16LexborAttributes_30__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_LexborAttributes___setstate_cyth, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[13])); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 3, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_4); + #endif + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_4) < (0)) __PYX_ERR(1, 3, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "selectolax/lexbor/node.pxi":4 + * from cpython.exc cimport PyErr_SetNone + * + * import logging # <<<<<<<<<<<<<< + * + * logger = logging.getLogger("selectolax") +*/ + __pyx_t_1 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_logging, 0, 0, NULL, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 4, __pyx_L1_error) + __pyx_t_4 = __pyx_t_1; + __Pyx_GOTREF(__pyx_t_4); + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_logging, __pyx_t_4) < (0)) __PYX_ERR(4, 4, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "selectolax/lexbor/node.pxi":6 + * import logging + * + * logger = logging.getLogger("selectolax") # <<<<<<<<<<<<<< + * + * _TAG_TO_NAME = { +*/ + __pyx_t_2 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_logging); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_getLogger); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_7 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_n_u_selectolax}; + __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + } + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_logger, __pyx_t_4) < (0)) __PYX_ERR(4, 6, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "selectolax/lexbor/node.pxi":9 + * + * _TAG_TO_NAME = { + * 0x0005: "-doctype", # <<<<<<<<<<<<<< + * 0x0002: "-text", + * 0x0004: "-comment", +*/ + __pyx_t_4 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 9, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + if (PyDict_SetItem(__pyx_t_4, __pyx_mstate_global->__pyx_int_5, __pyx_mstate_global->__pyx_kp_u_doctype) < (0)) __PYX_ERR(4, 9, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_4, __pyx_mstate_global->__pyx_int_2, __pyx_mstate_global->__pyx_kp_u_text_2) < (0)) __PYX_ERR(4, 9, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_4, __pyx_mstate_global->__pyx_int_4, __pyx_mstate_global->__pyx_kp_u_comment) < (0)) __PYX_ERR(4, 9, __pyx_L1_error) + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_TAG_TO_NAME, __pyx_t_4) < (0)) __PYX_ERR(4, 8, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "selectolax/lexbor/node.pxi":129 + * return self.mem_id + * + * def text_lexbor(self): # <<<<<<<<<<<<<< + * """Returns the text of the node including text of all its child nodes. + * +*/ + __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6lexbor_10LexborNode_3text_lexbor, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_LexborNode_text_lexbor, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[14])); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 129, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_4); + #endif + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborNode, __pyx_mstate_global->__pyx_n_u_text_lexbor, __pyx_t_4) < (0)) __PYX_ERR(4, 129, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "selectolax/lexbor/node.pxi":146 + * return unicode_text + * + * def text(self, bool deep=True, str separator='', bool strip=False, bool skip_empty=False): # <<<<<<<<<<<<<< + * """Return concatenated text from this node. + * +*/ + __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6lexbor_10LexborNode_5text, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_LexborNode_text, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[15])); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 146, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_4); + #endif + __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_4, __pyx_mstate_global->__pyx_tuple[7]); + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborNode, __pyx_mstate_global->__pyx_n_u_text, __pyx_t_4) < (0)) __PYX_ERR(4, 146, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "selectolax/lexbor/node.pxi":214 + * return node + * + * def css(self, str query): # <<<<<<<<<<<<<< + * """Evaluate CSS selector against current node and its child nodes. + * +*/ + __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6lexbor_10LexborNode_7css, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_LexborNode_css, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[16])); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 214, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_4); + #endif + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborNode, __pyx_mstate_global->__pyx_n_u_css, __pyx_t_4) < (0)) __PYX_ERR(4, 214, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "selectolax/lexbor/node.pxi":237 + * return self.parser.selector.find(query, self._get_node()) + * + * def css_first(self, str query, default=None, bool strict=False): # <<<<<<<<<<<<<< + * """Same as `css` but returns only the first match. + * +*/ + __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6lexbor_10LexborNode_9css_first, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_LexborNode_css_first, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[17])); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 237, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_4); + #endif + __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_4, __pyx_mstate_global->__pyx_tuple[8]); + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborNode, __pyx_mstate_global->__pyx_n_u_css_first, __pyx_t_4) < (0)) __PYX_ERR(4, 237, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "selectolax/lexbor/node.pxi":267 + * return default + * + * def any_css_matches(self, tuple selectors): # <<<<<<<<<<<<<< + * """Returns True if any of CSS selectors matches a node""" + * for selector in selectors: +*/ + __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6lexbor_10LexborNode_11any_css_matches, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_LexborNode_any_css_matches, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[18])); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 267, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_4); + #endif + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborNode, __pyx_mstate_global->__pyx_n_u_any_css_matches, __pyx_t_4) < (0)) __PYX_ERR(4, 267, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "selectolax/lexbor/node.pxi":274 + * return False + * + * def css_matches(self, str selector): # <<<<<<<<<<<<<< + * """Returns True if CSS selector matches a node.""" + * return bool(self.parser.selector.any_matches(selector, self)) +*/ + __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6lexbor_10LexborNode_13css_matches, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_LexborNode_css_matches, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[19])); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 274, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_4); + #endif + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborNode, __pyx_mstate_global->__pyx_n_u_css_matches, __pyx_t_4) < (0)) __PYX_ERR(4, 274, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "selectolax/lexbor/node.pxi":313 + * return text + * + * def decompose(self, bool recursive=True): # <<<<<<<<<<<<<< + * """Remove the current node from the tree. + * +*/ + __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6lexbor_10LexborNode_17decompose, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_LexborNode_decompose, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[20])); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 313, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_4); + #endif + __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_4, __pyx_mstate_global->__pyx_tuple[9]); + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborNode, __pyx_mstate_global->__pyx_n_u_decompose, __pyx_t_4) < (0)) __PYX_ERR(4, 313, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "selectolax/lexbor/node.pxi":337 + * lxb_dom_node_remove( self.node) + * + * def strip_tags(self, list tags, bool recursive = False): # <<<<<<<<<<<<<< + * """Remove specified tags from the HTML tree. + * +*/ + __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6lexbor_10LexborNode_19strip_tags, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_LexborNode_strip_tags, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[21])); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 337, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_4); + #endif + __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_4, __pyx_mstate_global->__pyx_tuple[10]); + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborNode, __pyx_mstate_global->__pyx_n_u_strip_tags, __pyx_t_4) < (0)) __PYX_ERR(4, 337, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "selectolax/lexbor/node.pxi":451 + * return None + * + * def iter(self, bool include_text = False, bool skip_empty = False): # <<<<<<<<<<<<<< + * """Iterate over direct children of this node. + * +*/ + __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6lexbor_10LexborNode_21iter, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_LexborNode_iter, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[3])); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 451, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_4); + #endif + __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_4, __pyx_mstate_global->__pyx_tuple[11]); + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborNode, __pyx_mstate_global->__pyx_n_u_iter, __pyx_t_4) < (0)) __PYX_ERR(4, 451, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "selectolax/lexbor/node.pxi":492 + * return self.next + * + * def unwrap(self, bint delete_empty=False): # <<<<<<<<<<<<<< + * """Replace node with whatever is inside this node. + * +*/ + __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6lexbor_10LexborNode_28unwrap, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_LexborNode_unwrap, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[22])); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 492, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_4); + #endif + __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_4, __pyx_mstate_global->__pyx_tuple[10]); + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborNode, __pyx_mstate_global->__pyx_n_u_unwrap, __pyx_t_4) < (0)) __PYX_ERR(4, 492, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "selectolax/lexbor/node.pxi":536 + * lxb_dom_node_remove( self.node) + * + * def unwrap_tags(self, list tags, bint delete_empty = False): # <<<<<<<<<<<<<< + * """Unwraps specified tags from the HTML tree. + * +*/ + __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6lexbor_10LexborNode_30unwrap_tags, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_LexborNode_unwrap_tags, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[23])); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 536, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_4); + #endif + __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_4, __pyx_mstate_global->__pyx_tuple[10]); + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborNode, __pyx_mstate_global->__pyx_n_u_unwrap_tags, __pyx_t_4) < (0)) __PYX_ERR(4, 536, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "selectolax/lexbor/node.pxi":563 + * element.unwrap(delete_empty) + * + * def merge_text_nodes(self): # <<<<<<<<<<<<<< + * """Iterates over all text nodes and merges all text nodes that are close to each other. + * +*/ + __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6lexbor_10LexborNode_32merge_text_nodes, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_LexborNode_merge_text_nodes, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[24])); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 563, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_4); + #endif + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborNode, __pyx_mstate_global->__pyx_n_u_merge_text_nodes, __pyx_t_4) < (0)) __PYX_ERR(4, 563, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "selectolax/lexbor/node.pxi":606 + * node = next_node + * + * def traverse(self, bool include_text = False, bool skip_empty = False): # <<<<<<<<<<<<<< + * """Depth-first traversal starting at the current node. + * +*/ + __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6lexbor_10LexborNode_34traverse, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_LexborNode_traverse, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[4])); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 606, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_4); + #endif + __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_4, __pyx_mstate_global->__pyx_tuple[11]); + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborNode, __pyx_mstate_global->__pyx_n_u_traverse, __pyx_t_4) < (0)) __PYX_ERR(4, 606, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "selectolax/lexbor/node.pxi":644 + * node = node.next + * + * def replace_with(self, str_or_LexborNode value): # <<<<<<<<<<<<<< + * """Replace current Node with specified value. + * +*/ + __pyx_t_4 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 644, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_mstate_global->__pyx_k__5 = __pyx_t_4; + __Pyx_GIVEREF(__pyx_t_4); + __pyx_t_4 = 0; + __pyx_t_4 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 644, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = __pyx_FusedFunction_New(&__pyx_fuse_0__pyx_mdef_10selectolax_6lexbor_10LexborNode_57replace_with, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_LexborNode_replace_with_str, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[25])); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 644, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5); + #endif + __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_5, __pyx_mstate_global->__pyx_empty_tuple); + if (PyDict_SetItem(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_str, __pyx_t_5) < (0)) __PYX_ERR(4, 644, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = __pyx_FusedFunction_New(&__pyx_fuse_1__pyx_mdef_10selectolax_6lexbor_10LexborNode_59replace_with, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_LexborNode_replace_with_bytes, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[26])); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 644, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5); + #endif + __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_5, __pyx_mstate_global->__pyx_empty_tuple); + if (PyDict_SetItem(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_bytes, __pyx_t_5) < (0)) __PYX_ERR(4, 644, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = __pyx_FusedFunction_New(&__pyx_fuse_2__pyx_mdef_10selectolax_6lexbor_10LexborNode_61replace_with, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_LexborNode_replace_with_LexborNo, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[27])); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 644, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5); + #endif + __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_5, __pyx_mstate_global->__pyx_empty_tuple); + if (PyDict_SetItem(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_LexborNode, __pyx_t_5) < (0)) __PYX_ERR(4, 644, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = __pyx_FusedFunction_New(&__pyx_mdef_10selectolax_6lexbor_10LexborNode_37replace_with, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_LexborNode_replace_with, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[28])); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 644, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5); + #endif + __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_5, __pyx_mstate_global->__pyx_empty_tuple); + ((__pyx_FusedFunctionObject *) __pyx_t_5)->__signatures__ = __pyx_t_4; + __Pyx_GIVEREF(__pyx_t_4); + __pyx_t_4 = 0; + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborNode, __pyx_mstate_global->__pyx_n_u_replace_with, __pyx_t_5) < (0)) __PYX_ERR(4, 644, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "selectolax/lexbor/node.pxi":696 + * raise SelectolaxError("Expected a string or LexborNode instance, but %s found" % type(value).__name__) + * + * def insert_before(self, str_or_LexborNode value): # <<<<<<<<<<<<<< + * """ + * Insert a node before the current Node. +*/ + __pyx_t_5 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 696, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_mstate_global->__pyx_k__6 = __pyx_t_5; + __Pyx_GIVEREF(__pyx_t_5); + __pyx_t_5 = 0; + __pyx_t_5 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 696, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_4 = __pyx_FusedFunction_New(&__pyx_fuse_0__pyx_mdef_10selectolax_6lexbor_10LexborNode_65insert_before, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_LexborNode_insert_before_str, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[29])); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 696, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_4); + #endif + __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_4, __pyx_mstate_global->__pyx_empty_tuple); + if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_str, __pyx_t_4) < (0)) __PYX_ERR(4, 696, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = __pyx_FusedFunction_New(&__pyx_fuse_1__pyx_mdef_10selectolax_6lexbor_10LexborNode_67insert_before, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_LexborNode_insert_before_bytes, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[30])); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 696, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_4); + #endif + __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_4, __pyx_mstate_global->__pyx_empty_tuple); + if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_bytes, __pyx_t_4) < (0)) __PYX_ERR(4, 696, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = __pyx_FusedFunction_New(&__pyx_fuse_2__pyx_mdef_10selectolax_6lexbor_10LexborNode_69insert_before, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_LexborNode_insert_before_LexborN, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[31])); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 696, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_4); + #endif + __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_4, __pyx_mstate_global->__pyx_empty_tuple); + if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_LexborNode, __pyx_t_4) < (0)) __PYX_ERR(4, 696, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = __pyx_FusedFunction_New(&__pyx_mdef_10selectolax_6lexbor_10LexborNode_39insert_before, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_LexborNode_insert_before, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[32])); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 696, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_4); + #endif + __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_4, __pyx_mstate_global->__pyx_empty_tuple); + ((__pyx_FusedFunctionObject *) __pyx_t_4)->__signatures__ = __pyx_t_5; + __Pyx_GIVEREF(__pyx_t_5); + __pyx_t_5 = 0; + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborNode, __pyx_mstate_global->__pyx_n_u_insert_before, __pyx_t_4) < (0)) __PYX_ERR(4, 696, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "selectolax/lexbor/node.pxi":747 + * raise SelectolaxError("Expected a string or LexborNode instance, but %s found" % type(value).__name__) + * + * def insert_after(self, str_or_LexborNode value): # <<<<<<<<<<<<<< + * """ + * Insert a node after the current Node. +*/ + __pyx_t_4 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 747, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_mstate_global->__pyx_k__7 = __pyx_t_4; + __Pyx_GIVEREF(__pyx_t_4); + __pyx_t_4 = 0; + __pyx_t_4 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 747, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = __pyx_FusedFunction_New(&__pyx_fuse_0__pyx_mdef_10selectolax_6lexbor_10LexborNode_73insert_after, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_LexborNode_insert_after_str, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[33])); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 747, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5); + #endif + __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_5, __pyx_mstate_global->__pyx_empty_tuple); + if (PyDict_SetItem(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_str, __pyx_t_5) < (0)) __PYX_ERR(4, 747, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = __pyx_FusedFunction_New(&__pyx_fuse_1__pyx_mdef_10selectolax_6lexbor_10LexborNode_75insert_after, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_LexborNode_insert_after_bytes, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[34])); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 747, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5); + #endif + __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_5, __pyx_mstate_global->__pyx_empty_tuple); + if (PyDict_SetItem(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_bytes, __pyx_t_5) < (0)) __PYX_ERR(4, 747, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = __pyx_FusedFunction_New(&__pyx_fuse_2__pyx_mdef_10selectolax_6lexbor_10LexborNode_77insert_after, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_LexborNode_insert_after_LexborNo, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[35])); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 747, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5); + #endif + __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_5, __pyx_mstate_global->__pyx_empty_tuple); + if (PyDict_SetItem(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_LexborNode, __pyx_t_5) < (0)) __PYX_ERR(4, 747, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = __pyx_FusedFunction_New(&__pyx_mdef_10selectolax_6lexbor_10LexborNode_41insert_after, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_LexborNode_insert_after, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[36])); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 747, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5); + #endif + __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_5, __pyx_mstate_global->__pyx_empty_tuple); + ((__pyx_FusedFunctionObject *) __pyx_t_5)->__signatures__ = __pyx_t_4; + __Pyx_GIVEREF(__pyx_t_4); + __pyx_t_4 = 0; + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborNode, __pyx_mstate_global->__pyx_n_u_insert_after, __pyx_t_5) < (0)) __PYX_ERR(4, 747, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "selectolax/lexbor/node.pxi":798 + * raise SelectolaxError("Expected a string or LexborNode instance, but %s found" % type(value).__name__) + * + * def insert_child(self, str_or_LexborNode value): # <<<<<<<<<<<<<< + * """ + * Insert a node inside (at the end of) the current Node. +*/ + __pyx_t_5 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 798, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_mstate_global->__pyx_k__8 = __pyx_t_5; + __Pyx_GIVEREF(__pyx_t_5); + __pyx_t_5 = 0; + __pyx_t_5 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 798, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_4 = __pyx_FusedFunction_New(&__pyx_fuse_0__pyx_mdef_10selectolax_6lexbor_10LexborNode_81insert_child, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_LexborNode_insert_child_str, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[37])); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 798, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_4); + #endif + __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_4, __pyx_mstate_global->__pyx_empty_tuple); + if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_str, __pyx_t_4) < (0)) __PYX_ERR(4, 798, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = __pyx_FusedFunction_New(&__pyx_fuse_1__pyx_mdef_10selectolax_6lexbor_10LexborNode_83insert_child, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_LexborNode_insert_child_bytes, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[38])); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 798, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_4); + #endif + __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_4, __pyx_mstate_global->__pyx_empty_tuple); + if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_bytes, __pyx_t_4) < (0)) __PYX_ERR(4, 798, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = __pyx_FusedFunction_New(&__pyx_fuse_2__pyx_mdef_10selectolax_6lexbor_10LexborNode_85insert_child, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_LexborNode_insert_child_LexborNo, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[39])); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 798, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_4); + #endif + __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_4, __pyx_mstate_global->__pyx_empty_tuple); + if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_LexborNode, __pyx_t_4) < (0)) __PYX_ERR(4, 798, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = __pyx_FusedFunction_New(&__pyx_mdef_10selectolax_6lexbor_10LexborNode_43insert_child, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_LexborNode_insert_child, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[40])); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 798, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_4); + #endif + __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_4, __pyx_mstate_global->__pyx_empty_tuple); + ((__pyx_FusedFunctionObject *) __pyx_t_4)->__signatures__ = __pyx_t_5; + __Pyx_GIVEREF(__pyx_t_5); + __pyx_t_5 = 0; + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborNode, __pyx_mstate_global->__pyx_n_u_insert_child, __pyx_t_4) < (0)) __PYX_ERR(4, 798, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "selectolax/lexbor/node.pxi":872 + * raise NotImplementedError("This features is not supported by the lexbor backend. Please use Modest backend.") + * + * def scripts_contain(self, str query): # <<<<<<<<<<<<<< + * """Returns True if any of the script tags contain specified text. + * +*/ + __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6lexbor_10LexborNode_45scripts_contain, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_LexborNode_scripts_contain, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[41])); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 872, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_4); + #endif + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborNode, __pyx_mstate_global->__pyx_n_u_scripts_contain, __pyx_t_4) < (0)) __PYX_ERR(4, 872, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "selectolax/lexbor/node.pxi":898 + * return False + * + * def script_srcs_contain(self, tuple queries): # <<<<<<<<<<<<<< + * """Returns True if any of the script SRCs attributes contain on of the specified text. + * +*/ + __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6lexbor_10LexborNode_47script_srcs_contain, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_LexborNode_script_srcs_contain, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[42])); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 898, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_4); + #endif + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborNode, __pyx_mstate_global->__pyx_n_u_script_srcs_contain, __pyx_t_4) < (0)) __PYX_ERR(4, 898, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "selectolax/lexbor/node.pxi":924 + * return False + * + * def remove(self, bool recursive=True): # <<<<<<<<<<<<<< + * """An alias for the decompose method.""" + * self.decompose(recursive) +*/ + __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6lexbor_10LexborNode_49remove, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_LexborNode_remove, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[43])); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 924, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_4); + #endif + __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_4, __pyx_mstate_global->__pyx_tuple[9]); + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborNode, __pyx_mstate_global->__pyx_n_u_remove, __pyx_t_4) < (0)) __PYX_ERR(4, 924, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "selectolax/lexbor/node.pxi":928 + * self.decompose(recursive) + * + * def select(self, query=None): # <<<<<<<<<<<<<< + * """Select nodes given a CSS selector. + * +*/ + __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6lexbor_10LexborNode_51select, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_LexborNode_select, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[44])); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 928, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_4); + #endif + __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_4, __pyx_mstate_global->__pyx_tuple[5]); + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborNode, __pyx_mstate_global->__pyx_n_u_select, __pyx_t_4) < (0)) __PYX_ERR(4, 928, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "selectolax/lexbor/node.pxi":1044 + * ) + * + * def clone(self) -> LexborNode: # <<<<<<<<<<<<<< + * """Clone the current node. + * +*/ + __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 1044, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + if (PyDict_SetItem(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_LexborNode) < (0)) __PYX_ERR(4, 1044, __pyx_L1_error) + __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6lexbor_10LexborNode_55clone, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_LexborNode_clone, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[45])); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 1044, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5); + #endif + __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_4); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborNode, __pyx_mstate_global->__pyx_n_u_clone, __pyx_t_5) < (0)) __PYX_ERR(4, 1044, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * raise TypeError, "self.node cannot be converted to a Python object for pickling" + * def __setstate_cython__(self, __pyx_state): +*/ + __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6lexbor_10LexborNode_89__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_LexborNode___reduce_cython, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[46])); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5); + #endif + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_5) < (0)) __PYX_ERR(1, 1, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "(tree fragment)":3 + * def __reduce_cython__(self): + * raise TypeError, "self.node cannot be converted to a Python object for pickling" + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * raise TypeError, "self.node cannot be converted to a Python object for pickling" +*/ + __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6lexbor_10LexborNode_91__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_LexborNode___setstate_cython, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[47])); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 3, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5); + #endif + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_5) < (0)) __PYX_ERR(1, 3, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "selectolax/lexbor/node.pxi":1110 + * self.strip = strip + * + * def append(self, str node_text): # <<<<<<<<<<<<<< + * if self.strip: + * self._text += node_text.strip() + self.separator +*/ + __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6lexbor_13TextContainer_3append, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_TextContainer_append, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[48])); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 1110, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5); + #endif + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_TextContainer, __pyx_mstate_global->__pyx_n_u_append, __pyx_t_5) < (0)) __PYX_ERR(4, 1110, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * cdef tuple state + * cdef object _dict +*/ + __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6lexbor_13TextContainer_5__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_TextContainer___reduce_cython, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[49])); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5); + #endif + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_TextContainer, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_5) < (0)) __PYX_ERR(1, 1, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "(tree fragment)":16 + * else: + * return __pyx_unpickle_TextContainer, (type(self), 0x69fd762, state) + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * __pyx_unpickle_TextContainer__set_state(self, __pyx_state) +*/ + __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6lexbor_13TextContainer_7__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_TextContainer___setstate_cython, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[50])); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 16, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5); + #endif + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_TextContainer, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_5) < (0)) __PYX_ERR(1, 16, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "selectolax/lexbor/selection.pxi":41 + * return 0 + * + * cpdef list find(self, str query, LexborNode node): # <<<<<<<<<<<<<< + * return self._find(query, node, 0) + * +*/ + __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6lexbor_17LexborCSSSelector_3find, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_LexborCSSSelector_find, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[51])); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 41, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5); + #endif + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborCSSSelector, __pyx_mstate_global->__pyx_n_u_find, __pyx_t_5) < (0)) __PYX_ERR(6, 41, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "selectolax/lexbor/selection.pxi":44 + * return self._find(query, node, 0) + * + * cpdef list find_first(self, str query, LexborNode node): # <<<<<<<<<<<<<< + * return self._find(query, node, 1) + * +*/ + __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6lexbor_17LexborCSSSelector_5find_first, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_LexborCSSSelector_find_first, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[52])); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 44, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5); + #endif + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborCSSSelector, __pyx_mstate_global->__pyx_n_u_find_first, __pyx_t_5) < (0)) __PYX_ERR(6, 44, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "selectolax/lexbor/selection.pxi":47 + * return self._find(query, node, 1) + * + * cpdef list _find(self, str query, LexborNode node, bint only_first): # <<<<<<<<<<<<<< + * cdef lxb_css_selector_list_t* selectors + * cdef lxb_char_t* c_selector +*/ + __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6lexbor_17LexborCSSSelector_7_find, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_LexborCSSSelector__find, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[53])); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 47, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5); + #endif + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborCSSSelector, __pyx_mstate_global->__pyx_n_u_find_2, __pyx_t_5) < (0)) __PYX_ERR(6, 47, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "selectolax/lexbor/selection.pxi":75 + * return results + * + * cpdef int any_matches(self, str query, LexborNode node) except -1: # <<<<<<<<<<<<<< + * cdef lxb_css_selector_list_t * selectors + * cdef lxb_char_t * c_selector +*/ + __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6lexbor_17LexborCSSSelector_9any_matches, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_LexborCSSSelector_any_matches, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[54])); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 75, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5); + #endif + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborCSSSelector, __pyx_mstate_global->__pyx_n_u_any_matches, __pyx_t_5) < (0)) __PYX_ERR(6, 75, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * raise TypeError, "self.css_selectors,self.parser,self.selectors cannot be converted to a Python object for pickling" + * def __setstate_cython__(self, __pyx_state): +*/ + __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6lexbor_17LexborCSSSelector_13__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_LexborCSSSelector___reduce_cytho, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[55])); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5); + #endif + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_5) < (0)) __PYX_ERR(1, 1, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "(tree fragment)":3 + * def __reduce_cython__(self): + * raise TypeError, "self.css_selectors,self.parser,self.selectors cannot be converted to a Python object for pickling" + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * raise TypeError, "self.css_selectors,self.parser,self.selectors cannot be converted to a Python object for pickling" +*/ + __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6lexbor_17LexborCSSSelector_15__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_LexborCSSSelector___setstate_cyt, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[56])); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 3, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5); + #endif + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_5) < (0)) __PYX_ERR(1, 3, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "selectolax/lexbor/selection.pxi":127 + * self.nodes = self.node.parser.selector.find(query, self.node) if query else [node, ] + * + * cpdef css(self, str query): # <<<<<<<<<<<<<< + * """Evaluate CSS selector against current scope.""" + * raise NotImplementedError("This features is not supported by the lexbor backend. Please use Modest backend.") +*/ + __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6lexbor_14LexborSelector_3css, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_LexborSelector_css, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[57])); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 127, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5); + #endif + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborSelector, __pyx_mstate_global->__pyx_n_u_css, __pyx_t_5) < (0)) __PYX_ERR(6, 127, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "selectolax/lexbor/selection.pxi":141 + * return bool(self.nodes) + * + * def text_contains(self, str text, bool deep=True, str separator='', bool strip=False) -> LexborSelector: # <<<<<<<<<<<<<< + * """Filter all current matches given text.""" + * cdef list nodes = [] +*/ + __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 141, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_LexborSelector) < (0)) __PYX_ERR(6, 141, __pyx_L1_error) + __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6lexbor_14LexborSelector_5text_contains, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_LexborSelector_text_contains, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[58])); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 141, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_4); + #endif + __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_4, __pyx_mstate_global->__pyx_tuple[12]); + __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_4, __pyx_t_5); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborSelector, __pyx_mstate_global->__pyx_n_u_text_contains, __pyx_t_4) < (0)) __PYX_ERR(6, 141, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "selectolax/lexbor/selection.pxi":151 + * return self + * + * def any_text_contains(self, str text, bool deep=True, str separator='', bool strip=False) -> bool: # <<<<<<<<<<<<<< + * """Returns True if any node in the current search scope contains specified text""" + * cdef LexborNode node +*/ + __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 151, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + if (PyDict_SetItem(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_bool) < (0)) __PYX_ERR(6, 151, __pyx_L1_error) + __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6lexbor_14LexborSelector_7any_text_contains, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_LexborSelector_any_text_contains, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[59])); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 151, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5); + #endif + __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_5, __pyx_mstate_global->__pyx_tuple[12]); + __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_4); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborSelector, __pyx_mstate_global->__pyx_n_u_any_text_contains, __pyx_t_5) < (0)) __PYX_ERR(6, 151, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "selectolax/lexbor/selection.pxi":160 + * return False + * + * def attribute_longer_than(self, str attribute, int length, str start = None) -> LexborSelector: # <<<<<<<<<<<<<< + * """Filter all current matches by attribute length. + * +*/ + __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 160, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_LexborSelector) < (0)) __PYX_ERR(6, 160, __pyx_L1_error) + __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6lexbor_14LexborSelector_9attribute_longer_than, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_LexborSelector_attribute_longer, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[60])); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 160, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_4); + #endif + __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_4, __pyx_mstate_global->__pyx_tuple[5]); + __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_4, __pyx_t_5); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborSelector, __pyx_mstate_global->__pyx_n_u_attribute_longer_than, __pyx_t_4) < (0)) __PYX_ERR(6, 160, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "selectolax/lexbor/selection.pxi":177 + * return self + * + * def any_attribute_longer_than(self, str attribute, int length, str start = None) -> bool: # <<<<<<<<<<<<<< + * """Returns True any href attribute longer than a specified length. + * +*/ + __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 177, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + if (PyDict_SetItem(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_bool) < (0)) __PYX_ERR(6, 177, __pyx_L1_error) + __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6lexbor_14LexborSelector_11any_attribute_longer_than, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_LexborSelector_any_attribute_lon, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[61])); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 177, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5); + #endif + __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_5, __pyx_mstate_global->__pyx_tuple[5]); + __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_4); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborSelector, __pyx_mstate_global->__pyx_n_u_any_attribute_longer_than, __pyx_t_5) < (0)) __PYX_ERR(6, 177, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * cdef tuple state + * cdef object _dict +*/ + __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6lexbor_14LexborSelector_15__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_LexborSelector___reduce_cython, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[62])); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5); + #endif + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborSelector, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_5) < (0)) __PYX_ERR(1, 1, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "(tree fragment)":16 + * else: + * return __pyx_unpickle_LexborSelector, (type(self), 0xc5dfe7e, state) + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * __pyx_unpickle_LexborSelector__set_state(self, __pyx_state) +*/ + __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6lexbor_14LexborSelector_17__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_LexborSelector___setstate_cython, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[63])); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 16, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5); + #endif + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborSelector, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_5) < (0)) __PYX_ERR(1, 16, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "selectolax/utils.pxi":1 + * from typing import Literal, Optional, Union, Type # <<<<<<<<<<<<<< + * + * MAX_HTML_INPUT_SIZE = 250e+7 +*/ + { + PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_Literal,__pyx_mstate_global->__pyx_n_u_Optional,__pyx_mstate_global->__pyx_n_u_Union,__pyx_mstate_global->__pyx_n_u_Type}; + __pyx_t_1 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_typing, __pyx_imported_names, 4, NULL, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 1, __pyx_L1_error) + } + __pyx_t_5 = __pyx_t_1; + __Pyx_GOTREF(__pyx_t_5); + { + PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_Literal,__pyx_mstate_global->__pyx_n_u_Optional,__pyx_mstate_global->__pyx_n_u_Union,__pyx_mstate_global->__pyx_n_u_Type}; + for (__pyx_t_6=0; __pyx_t_6 < 4; __pyx_t_6++) { + __pyx_t_4 = __Pyx_ImportFrom(__pyx_t_5, __pyx_imported_names[__pyx_t_6]); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_imported_names[__pyx_t_6], __pyx_t_4) < (0)) __PYX_ERR(7, 1, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } + } + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "selectolax/utils.pxi":3 + * from typing import Literal, Optional, Union, Type + * + * MAX_HTML_INPUT_SIZE = 250e+7 # <<<<<<<<<<<<<< + * + * ParserCls = Union[Type["HTMLParser"], Type["LexborHTMLParser"]] +*/ + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_MAX_HTML_INPUT_SIZE, __pyx_mstate_global->__pyx_float_250e_7) < (0)) __PYX_ERR(7, 3, __pyx_L1_error) + + /* "selectolax/utils.pxi":5 + * MAX_HTML_INPUT_SIZE = 250e+7 + * + * ParserCls = Union[Type["HTMLParser"], Type["LexborHTMLParser"]] # <<<<<<<<<<<<<< + * Parser = Union["HTMLParser", "LexborHTMLParser"] + * FRAGMENT = Literal[ +*/ + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_Union); if (unlikely(!__pyx_t_5)) __PYX_ERR(7, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_Type); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_2 = __Pyx_PyObject_Dict_GetItem(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_HTMLParser); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_Type); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = __Pyx_PyObject_Dict_GetItem(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_LexborHTMLParser); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = PyTuple_Pack(2, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyObject_GetItem(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ParserCls, __pyx_t_3) < (0)) __PYX_ERR(7, 5, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "selectolax/utils.pxi":6 + * + * ParserCls = Union[Type["HTMLParser"], Type["LexborHTMLParser"]] + * Parser = Union["HTMLParser", "LexborHTMLParser"] # <<<<<<<<<<<<<< + * FRAGMENT = Literal[ + * "document", +*/ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_Union); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = __Pyx_PyObject_GetItem(__pyx_t_3, __pyx_mstate_global->__pyx_tuple[2]); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_Parser, __pyx_t_4) < (0)) __PYX_ERR(7, 6, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "selectolax/utils.pxi":7 + * ParserCls = Union[Type["HTMLParser"], Type["LexborHTMLParser"]] + * Parser = Union["HTMLParser", "LexborHTMLParser"] + * FRAGMENT = Literal[ # <<<<<<<<<<<<<< + * "document", + * "fragment", +*/ + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_Literal); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 7, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = __Pyx_PyObject_GetItem(__pyx_t_4, __pyx_mstate_global->__pyx_tuple[3]); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 7, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_FRAGMENT, __pyx_t_3) < (0)) __PYX_ERR(7, 7, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "selectolax/utils.pxi":19 + * + * + * def preprocess_input(html, decode_errors='ignore'): # <<<<<<<<<<<<<< + * if isinstance(html, (str, unicode)): + * bytes_html = html.encode('UTF-8', errors=decode_errors) +*/ + __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6lexbor_9preprocess_input, 0, __pyx_mstate_global->__pyx_n_u_preprocess_input, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[64])); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 19, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3); + #endif + __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_mstate_global->__pyx_tuple[4]); + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_preprocess_input, __pyx_t_3) < (0)) __PYX_ERR(7, 19, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "selectolax/utils.pxi":32 + * + * + * def do_create_tag(tag: str, parser_cls: ParserCls): # <<<<<<<<<<<<<< + * if not tag: + * raise ValueError("Tag name cannot be empty") +*/ + __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 32, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_tag, __pyx_mstate_global->__pyx_n_u_str) < (0)) __PYX_ERR(7, 32, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_parser_cls, __pyx_mstate_global->__pyx_n_u_ParserCls) < (0)) __PYX_ERR(7, 32, __pyx_L1_error) + __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6lexbor_11do_create_tag, 0, __pyx_mstate_global->__pyx_n_u_do_create_tag, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[65])); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 32, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_4); + #endif + __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_4, __pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_do_create_tag, __pyx_t_4) < (0)) __PYX_ERR(7, 32, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "selectolax/utils.pxi":38 + * + * + * def get_fragment_type( # <<<<<<<<<<<<<< + * html: str, + * parser_cls: ParserCls, +*/ + __pyx_t_4 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 38, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + if (PyDict_SetItem(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_html, __pyx_mstate_global->__pyx_n_u_str) < (0)) __PYX_ERR(7, 38, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_parser_cls, __pyx_mstate_global->__pyx_n_u_ParserCls) < (0)) __PYX_ERR(7, 38, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_tree, __pyx_mstate_global->__pyx_kp_u_Optional_Parser) < (0)) __PYX_ERR(7, 38, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_FRAGMENT) < (0)) __PYX_ERR(7, 38, __pyx_L1_error) + __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6lexbor_13get_fragment_type, 0, __pyx_mstate_global->__pyx_n_u_get_fragment_type, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[66])); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 38, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3); + #endif + __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_mstate_global->__pyx_tuple[5]); + __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_4); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_get_fragment_type, __pyx_t_3) < (0)) __PYX_ERR(7, 38, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "selectolax/utils.pxi":81 + * + * + * def do_parse_fragment(html: str, parser_cls: ParserCls): # <<<<<<<<<<<<<< + * """ + * Given HTML, parse it into a list of Nodes, such that the nodes +*/ + __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 81, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_html, __pyx_mstate_global->__pyx_n_u_str) < (0)) __PYX_ERR(7, 81, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_parser_cls, __pyx_mstate_global->__pyx_n_u_ParserCls) < (0)) __PYX_ERR(7, 81, __pyx_L1_error) + __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6lexbor_15do_parse_fragment, 0, __pyx_mstate_global->__pyx_n_u_do_parse_fragment, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[67])); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 81, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_4); + #endif + __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_4, __pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_do_parse_fragment, __pyx_t_4) < (0)) __PYX_ERR(7, 81, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "selectolax/lexbor/util.pxi":3 + * include "../utils.pxi" + * + * import re # <<<<<<<<<<<<<< + * + * +*/ + __pyx_t_1 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_re, 0, 0, NULL, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(8, 3, __pyx_L1_error) + __pyx_t_4 = __pyx_t_1; + __Pyx_GOTREF(__pyx_t_4); + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_re, __pyx_t_4) < (0)) __PYX_ERR(8, 3, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "selectolax/lexbor/util.pxi":6 + * + * + * def create_tag(tag: str): # <<<<<<<<<<<<<< + * """ + * Given an HTML tag name, e.g. `"div"`, create a single empty node for that tag, +*/ + __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(8, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + if (PyDict_SetItem(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_tag, __pyx_mstate_global->__pyx_n_u_str) < (0)) __PYX_ERR(8, 6, __pyx_L1_error) + __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6lexbor_17create_tag, 0, __pyx_mstate_global->__pyx_n_u_create_tag, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[68])); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3); + #endif + __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_4); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_create_tag, __pyx_t_3) < (0)) __PYX_ERR(8, 6, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "selectolax/lexbor/util.pxi":16 + * + * + * def parse_fragment(html: str): # <<<<<<<<<<<<<< + * """ + * Given HTML, parse it into a list of Nodes, such that the nodes +*/ + __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 16, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_html, __pyx_mstate_global->__pyx_n_u_str) < (0)) __PYX_ERR(8, 16, __pyx_L1_error) + __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6lexbor_19parse_fragment, 0, __pyx_mstate_global->__pyx_n_u_parse_fragment, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[69])); if (unlikely(!__pyx_t_4)) __PYX_ERR(8, 16, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_4); + #endif + __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_4, __pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_parse_fragment, __pyx_t_4) < (0)) __PYX_ERR(8, 16, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "selectolax/lexbor/util.pxi":27 + * + * + * def extract_html_comment(text: str) -> str: # <<<<<<<<<<<<<< + * """Extract the inner content of an HTML comment string. + * +*/ + __pyx_t_4 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(8, 27, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + if (PyDict_SetItem(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_text, __pyx_mstate_global->__pyx_n_u_str) < (0)) __PYX_ERR(8, 27, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_str) < (0)) __PYX_ERR(8, 27, __pyx_L1_error) + __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6lexbor_21extract_html_comment, 0, __pyx_mstate_global->__pyx_n_u_extract_html_comment, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[70])); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 27, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3); + #endif + __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_4); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_extract_html_comment, __pyx_t_3) < (0)) __PYX_ERR(8, 27, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "selectolax/lexbor.pyx":281 + * return LexborNode.new( head, self) + * + * def tags(self, str name): # <<<<<<<<<<<<<< + * """Return all tags that match the provided name. + * +*/ + __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6lexbor_16LexborHTMLParser_7tags, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_LexborHTMLParser_tags, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[71])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 281, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3); + #endif + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborHTMLParser, __pyx_mstate_global->__pyx_n_u_tags, __pyx_t_3) < (0)) __PYX_ERR(0, 281, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "selectolax/lexbor.pyx":335 + * return result + * + * def text( # <<<<<<<<<<<<<< + * self, + * deep: bool = True, +*/ + __pyx_t_3 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 335, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_deep, __pyx_mstate_global->__pyx_n_u_bool) < (0)) __PYX_ERR(0, 335, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_separator, __pyx_mstate_global->__pyx_n_u_str) < (0)) __PYX_ERR(0, 335, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_strip, __pyx_mstate_global->__pyx_n_u_bool) < (0)) __PYX_ERR(0, 335, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_skip_empty, __pyx_mstate_global->__pyx_n_u_bool) < (0)) __PYX_ERR(0, 335, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_str) < (0)) __PYX_ERR(0, 335, __pyx_L1_error) + __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6lexbor_16LexborHTMLParser_9text, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_LexborHTMLParser_text, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[72])); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 335, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_4); + #endif + __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_4, __pyx_mstate_global->__pyx_tuple[7]); + __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_4, __pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborHTMLParser, __pyx_mstate_global->__pyx_n_u_text, __pyx_t_4) < (0)) __PYX_ERR(0, 335, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "selectolax/lexbor.pyx":384 + * return node.html + * + * def css(self, str query): # <<<<<<<<<<<<<< + * """A CSS selector. + * +*/ + __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6lexbor_16LexborHTMLParser_11css, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_LexborHTMLParser_css, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[73])); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 384, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_4); + #endif + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborHTMLParser, __pyx_mstate_global->__pyx_n_u_css, __pyx_t_4) < (0)) __PYX_ERR(0, 384, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "selectolax/lexbor.pyx":406 + * return self.root.css(query) + * + * def css_first(self, str query, default=None, strict=False): # <<<<<<<<<<<<<< + * """Same as `css` but returns only the first match. + * +*/ + __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6lexbor_16LexborHTMLParser_13css_first, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_LexborHTMLParser_css_first, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[74])); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 406, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_4); + #endif + __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_4, __pyx_mstate_global->__pyx_tuple[8]); + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborHTMLParser, __pyx_mstate_global->__pyx_n_u_css_first, __pyx_t_4) < (0)) __PYX_ERR(0, 406, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "selectolax/lexbor.pyx":425 + * return self.root.css_first(query, default, strict) + * + * def strip_tags(self, list tags, bool recursive = False): # <<<<<<<<<<<<<< + * """Remove specified tags from the node. + * +*/ + __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6lexbor_16LexborHTMLParser_15strip_tags, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_LexborHTMLParser_strip_tags, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[75])); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 425, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_4); + #endif + __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_4, __pyx_mstate_global->__pyx_tuple[10]); + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborHTMLParser, __pyx_mstate_global->__pyx_n_u_strip_tags, __pyx_t_4) < (0)) __PYX_ERR(0, 425, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "selectolax/lexbor.pyx":476 + * lxb_dom_collection_destroy(collection, True) + * + * def select(self, query=None): # <<<<<<<<<<<<<< + * """Select nodes given a CSS selector. + * +*/ + __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6lexbor_16LexborHTMLParser_17select, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_LexborHTMLParser_select, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[76])); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 476, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_4); + #endif + __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_4, __pyx_mstate_global->__pyx_tuple[5]); + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborHTMLParser, __pyx_mstate_global->__pyx_n_u_select, __pyx_t_4) < (0)) __PYX_ERR(0, 476, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "selectolax/lexbor.pyx":497 + * return None + * + * def any_css_matches(self, tuple selectors): # <<<<<<<<<<<<<< + * """Return ``True`` if any of the specified CSS selectors match. + * +*/ + __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6lexbor_16LexborHTMLParser_19any_css_matches, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_LexborHTMLParser_any_css_matches, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[77])); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 497, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_4); + #endif + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborHTMLParser, __pyx_mstate_global->__pyx_n_u_any_css_matches, __pyx_t_4) < (0)) __PYX_ERR(0, 497, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "selectolax/lexbor.pyx":512 + * return self.root.any_css_matches(selectors) + * + * def scripts_contain(self, str query): # <<<<<<<<<<<<<< + * """Return ``True`` if any script tag contains the given text. + * +*/ + __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6lexbor_16LexborHTMLParser_21scripts_contain, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_LexborHTMLParser_scripts_contain, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[78])); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 512, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_4); + #endif + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborHTMLParser, __pyx_mstate_global->__pyx_n_u_scripts_contain, __pyx_t_4) < (0)) __PYX_ERR(0, 512, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "selectolax/lexbor.pyx":529 + * return self.root.scripts_contain(query) + * + * def script_srcs_contain(self, tuple queries): # <<<<<<<<<<<<<< + * """Return ``True`` if any script ``src`` contains one of the strings. + * +*/ + __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6lexbor_16LexborHTMLParser_23script_srcs_contain, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_LexborHTMLParser_script_srcs_con, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[79])); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 529, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_4); + #endif + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborHTMLParser, __pyx_mstate_global->__pyx_n_u_script_srcs_contain, __pyx_t_4) < (0)) __PYX_ERR(0, 529, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "selectolax/lexbor.pyx":546 + * return self.root.script_srcs_contain(queries) + * + * def css_matches(self, str selector): # <<<<<<<<<<<<<< + * """Return ``True`` if the document matches the selector at least once. + * +*/ + __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6lexbor_16LexborHTMLParser_25css_matches, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_LexborHTMLParser_css_matches, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[80])); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 546, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_4); + #endif + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborHTMLParser, __pyx_mstate_global->__pyx_n_u_css_matches, __pyx_t_4) < (0)) __PYX_ERR(0, 546, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "selectolax/lexbor.pyx":561 + * return self.root.css_matches(selector) + * + * def merge_text_nodes(self): # <<<<<<<<<<<<<< + * """Iterates over all text nodes and merges all text nodes that are close to each other. + * +*/ + __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6lexbor_16LexborHTMLParser_27merge_text_nodes, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_LexborHTMLParser_merge_text_node, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[81])); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 561, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_4); + #endif + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborHTMLParser, __pyx_mstate_global->__pyx_n_u_merge_text_nodes, __pyx_t_4) < (0)) __PYX_ERR(0, 561, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "selectolax/lexbor.pyx":609 + * return obj + * + * def clone(self): # <<<<<<<<<<<<<< + * """Clone the current document tree. + * +*/ + __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6lexbor_16LexborHTMLParser_29clone, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_LexborHTMLParser_clone, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[82])); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 609, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_4); + #endif + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborHTMLParser, __pyx_mstate_global->__pyx_n_u_clone, __pyx_t_4) < (0)) __PYX_ERR(0, 609, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "selectolax/lexbor.pyx":649 + * return cls + * + * def unwrap_tags(self, list tags, delete_empty = False): # <<<<<<<<<<<<<< + * """Unwraps specified tags from the HTML tree. + * +*/ + __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6lexbor_16LexborHTMLParser_31unwrap_tags, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_LexborHTMLParser_unwrap_tags, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[83])); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 649, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_4); + #endif + __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_4, __pyx_mstate_global->__pyx_tuple[10]); + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborHTMLParser, __pyx_mstate_global->__pyx_n_u_unwrap_tags, __pyx_t_4) < (0)) __PYX_ERR(0, 649, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "selectolax/lexbor.pyx":708 + * self.root.inner_html = html + * + * def create_node(self, str tag): # <<<<<<<<<<<<<< + * """Given an HTML tag name, e.g. `"div"`, create a single empty node for that tag, + * e.g. `"
"`. +*/ + __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6lexbor_16LexborHTMLParser_33create_node, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_LexborHTMLParser_create_node, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[84])); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 708, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_4); + #endif + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6lexbor_LexborHTMLParser, __pyx_mstate_global->__pyx_n_u_create_node, __pyx_t_4) < (0)) __PYX_ERR(0, 708, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * raise TypeError, "self._fragment_document,self.document cannot be converted to a Python object for pickling" + * def __setstate_cython__(self, __pyx_state): +*/ + __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6lexbor_16LexborHTMLParser_35__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_LexborHTMLParser___reduce_cython, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[85])); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_4); + #endif + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_4) < (0)) __PYX_ERR(1, 1, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "(tree fragment)":3 + * def __reduce_cython__(self): + * raise TypeError, "self._fragment_document,self.document cannot be converted to a Python object for pickling" + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * raise TypeError, "self._fragment_document,self.document cannot be converted to a Python object for pickling" +*/ + __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6lexbor_16LexborHTMLParser_37__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_LexborHTMLParser___setstate_cyth, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[86])); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 3, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_4); + #endif + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_4) < (0)) __PYX_ERR(1, 3, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "(tree fragment)":4 + * int __Pyx_CheckUnpickleChecksum(long, long, long, long, const char*) except -1 + * int __Pyx_UpdateUnpickledDict(object, object, Py_ssize_t) except -1 + * def __pyx_unpickle_TextContainer(__pyx_type, long __pyx_checksum, tuple __pyx_state): # <<<<<<<<<<<<<< + * cdef object __pyx_result + * __Pyx_CheckUnpickleChecksum(__pyx_checksum, 0x69fd762, 0xf301bc8, 0x2cd3639, b'_text, separator, strip') +*/ + __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6lexbor_23__pyx_unpickle_TextContainer, 0, __pyx_mstate_global->__pyx_n_u_pyx_unpickle_TextContainer, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[87])); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_4); + #endif + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_pyx_unpickle_TextContainer, __pyx_t_4) < (0)) __PYX_ERR(1, 4, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "(tree fragment)":1 + * cdef extern from *: # <<<<<<<<<<<<<< + * int __Pyx_CheckUnpickleChecksum(long, long, long, long, const char*) except -1 + * int __Pyx_UpdateUnpickledDict(object, object, Py_ssize_t) except -1 +*/ + __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6lexbor_25__pyx_unpickle_LexborSelector, 0, __pyx_mstate_global->__pyx_n_u_pyx_unpickle_LexborSelector, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_lexbor, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[88])); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_4); + #endif + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_pyx_unpickle_LexborSelector, __pyx_t_4) < (0)) __PYX_ERR(1, 4, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "selectolax/lexbor.pyx":1 + * from cpython.bool cimport bool # <<<<<<<<<<<<<< + * + * _ENCODING = 'UTF-8' +*/ + __pyx_t_4 = __Pyx_PyDict_NewPresized(18); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + if (PyDict_SetItem(__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_LexborNode_decompose_line_313, __pyx_mstate_global->__pyx_kp_u_Remove_the_current_node_from_the) < (0)) __PYX_ERR(0, 1, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_LexborNode_strip_tags_line_337, __pyx_mstate_global->__pyx_kp_u_Remove_specified_tags_from_the_H) < (0)) __PYX_ERR(0, 1, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_LexborNode_attributes___get___li, __pyx_mstate_global->__pyx_kp_u_Get_all_attributes_that_belong_t) < (0)) __PYX_ERR(0, 1, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_LexborNode_attrs___get___line_40, __pyx_mstate_global->__pyx_kp_u_A_dict_like_object_that_is_simil) < (0)) __PYX_ERR(0, 1, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_LexborNode_unwrap_line_492, __pyx_mstate_global->__pyx_kp_u_Replace_node_with_whatever_is_in) < (0)) __PYX_ERR(0, 1, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_LexborNode_unwrap_tags_line_536, __pyx_mstate_global->__pyx_kp_u_Unwraps_specified_tags_from_the) < (0)) __PYX_ERR(0, 1, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_LexborNode_merge_text_nodes_line, __pyx_mstate_global->__pyx_kp_u_Iterates_over_all_text_nodes_and) < (0)) __PYX_ERR(0, 1, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_LexborNode_replace_with_line_644, __pyx_mstate_global->__pyx_kp_u_Replace_current_Node_with_specif) < (0)) __PYX_ERR(0, 1, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_LexborNode_insert_before_line_69, __pyx_mstate_global->__pyx_kp_u_Insert_a_node_before_the_curren) < (0)) __PYX_ERR(0, 1, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_LexborNode_insert_after_line_747, __pyx_mstate_global->__pyx_kp_u_Insert_a_node_after_the_current) < (0)) __PYX_ERR(0, 1, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_LexborNode_insert_child_line_798, __pyx_mstate_global->__pyx_kp_u_Insert_a_node_inside_at_the_end) < (0)) __PYX_ERR(0, 1, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_LexborNode_raw_value___get___lin, __pyx_mstate_global->__pyx_kp_u_Return_the_raw_unparsed_original) < (0)) __PYX_ERR(0, 1, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_LexborNode_comment_content___get, __pyx_mstate_global->__pyx_kp_u_Extract_the_textual_content_of_a) < (0)) __PYX_ERR(0, 1, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_extract_html_comment_line_27, __pyx_mstate_global->__pyx_kp_u_Extract_the_inner_content_of_an) < (0)) __PYX_ERR(0, 1, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_LexborHTMLParser_strip_tags_line, __pyx_mstate_global->__pyx_kp_u_Remove_specified_tags_from_the_n) < (0)) __PYX_ERR(0, 1, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_LexborHTMLParser_merge_text_node_2, __pyx_mstate_global->__pyx_kp_u_Iterates_over_all_text_nodes_and_2) < (0)) __PYX_ERR(0, 1, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_LexborHTMLParser_unwrap_tags_lin, __pyx_mstate_global->__pyx_kp_u_Unwraps_specified_tags_from_the_2) < (0)) __PYX_ERR(0, 1, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_LexborHTMLParser_create_node_lin, __pyx_mstate_global->__pyx_kp_u_Given_an_HTML_tag_name_e_g_div_c) < (0)) __PYX_ERR(0, 1, __pyx_L1_error) + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_test, __pyx_t_4) < (0)) __PYX_ERR(0, 1, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /*--- Wrapped vars code ---*/ + + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + if (__pyx_m) { + if (__pyx_mstate->__pyx_d && stringtab_initialized) { + __Pyx_AddTraceback("init selectolax.lexbor", __pyx_clineno, __pyx_lineno, __pyx_filename); + } + #if !CYTHON_USE_MODULE_STATE + Py_CLEAR(__pyx_m); + #else + Py_DECREF(__pyx_m); + if (pystate_addmodule_run) { + PyObject *tp, *value, *tb; + PyErr_Fetch(&tp, &value, &tb); + PyState_RemoveModule(&__pyx_moduledef); + PyErr_Restore(tp, value, tb); + } + #endif + } else if (!PyErr_Occurred()) { + PyErr_SetString(PyExc_ImportError, "init selectolax.lexbor"); + } + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + #if CYTHON_PEP489_MULTI_PHASE_INIT + return (__pyx_m != NULL) ? 0 : -1; + #else + return __pyx_m; + #endif +} +/* #### Code section: pystring_table ### */ +/* #### Code section: cached_builtins ### */ + +static int __Pyx_InitCachedBuiltins(__pyx_mstatetype *__pyx_mstate) { + CYTHON_UNUSED_VAR(__pyx_mstate); + __pyx_builtin___import__ = __Pyx_GetBuiltinName(__pyx_mstate->__pyx_n_u_import); if (!__pyx_builtin___import__) __PYX_ERR(1, 15, __pyx_L1_error) + + /* Cached unbound methods */ + __pyx_mstate->__pyx_umethod_PyDict_Type_get.type = (PyObject*)&PyDict_Type; + __pyx_mstate->__pyx_umethod_PyDict_Type_get.method_name = &__pyx_mstate->__pyx_n_u_get; + __pyx_mstate->__pyx_umethod_PyDict_Type_items.type = (PyObject*)&PyDict_Type; + __pyx_mstate->__pyx_umethod_PyDict_Type_items.method_name = &__pyx_mstate->__pyx_n_u_items; + __pyx_mstate->__pyx_umethod_PyDict_Type_pop.type = (PyObject*)&PyDict_Type; + __pyx_mstate->__pyx_umethod_PyDict_Type_pop.method_name = &__pyx_mstate->__pyx_n_u_pop; + __pyx_mstate->__pyx_umethod_PyDict_Type_values.type = (PyObject*)&PyDict_Type; + __pyx_mstate->__pyx_umethod_PyDict_Type_values.method_name = &__pyx_mstate->__pyx_n_u_values; + __pyx_mstate->__pyx_umethod_PyBytes_Type__encode.type = (PyObject*)(&PyBytes_Type); + __pyx_mstate->__pyx_umethod_PyBytes_Type__encode.method_name = &__pyx_mstate->__pyx_n_u_encode; + __pyx_mstate->__pyx_umethod_PyUnicode_Type__strip.type = (PyObject*)(&PyUnicode_Type); + __pyx_mstate->__pyx_umethod_PyUnicode_Type__strip.method_name = &__pyx_mstate->__pyx_n_u_strip; + return 0; + __pyx_L1_error:; + return -1; +} +/* #### Code section: cached_constants ### */ + +static int __Pyx_InitCachedConstants(__pyx_mstatetype *__pyx_mstate) { + __Pyx_RefNannyDeclarations + CYTHON_UNUSED_VAR(__pyx_mstate); + __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0); + + /* "(tree fragment)":11 + * use_setstate = True + * else: + * use_setstate = ('self._text is not None or self.separator is not None',) # <<<<<<<<<<<<<< + * if use_setstate: + * return __pyx_unpickle_TextContainer, (type(self), 0x69fd762, None), state +*/ + __pyx_mstate_global->__pyx_tuple[0] = PyTuple_Pack(1, __pyx_mstate_global->__pyx_kp_u_self__text_is_not_None_or_self_s); if (unlikely(!__pyx_mstate_global->__pyx_tuple[0])) __PYX_ERR(1, 11, __pyx_L1_error) + __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[0]); + __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[0]); + __pyx_mstate_global->__pyx_tuple[1] = PyTuple_Pack(1, __pyx_mstate_global->__pyx_kp_u_self_node_is_not_None_or_self_no); if (unlikely(!__pyx_mstate_global->__pyx_tuple[1])) __PYX_ERR(1, 11, __pyx_L1_error) + __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[1]); + __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[1]); + + /* "selectolax/utils.pxi":6 + * + * ParserCls = Union[Type["HTMLParser"], Type["LexborHTMLParser"]] + * Parser = Union["HTMLParser", "LexborHTMLParser"] # <<<<<<<<<<<<<< + * FRAGMENT = Literal[ + * "document", +*/ + __pyx_mstate_global->__pyx_tuple[2] = PyTuple_Pack(2, __pyx_mstate_global->__pyx_n_u_HTMLParser, __pyx_mstate_global->__pyx_n_u_LexborHTMLParser); if (unlikely(!__pyx_mstate_global->__pyx_tuple[2])) __PYX_ERR(2, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[2]); + __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[2]); + + /* "selectolax/utils.pxi":7 + * ParserCls = Union[Type["HTMLParser"], Type["LexborHTMLParser"]] + * Parser = Union["HTMLParser", "LexborHTMLParser"] + * FRAGMENT = Literal[ # <<<<<<<<<<<<<< + * "document", + * "fragment", +*/ + __pyx_mstate_global->__pyx_tuple[3] = PyTuple_Pack(8, __pyx_mstate_global->__pyx_n_u_document, __pyx_mstate_global->__pyx_n_u_fragment, __pyx_mstate_global->__pyx_n_u_head_2, __pyx_mstate_global->__pyx_n_u_body_2, __pyx_mstate_global->__pyx_n_u_head_and_body, __pyx_mstate_global->__pyx_n_u_document_no_head, __pyx_mstate_global->__pyx_n_u_document_no_body, __pyx_mstate_global->__pyx_n_u_document_no_head_no_body); if (unlikely(!__pyx_mstate_global->__pyx_tuple[3])) __PYX_ERR(2, 7, __pyx_L1_error) + __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[3]); + __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[3]); + + /* "selectolax/utils.pxi":19 + * + * + * def preprocess_input(html, decode_errors='ignore'): # <<<<<<<<<<<<<< + * if isinstance(html, (str, unicode)): + * bytes_html = html.encode('UTF-8', errors=decode_errors) +*/ + __pyx_mstate_global->__pyx_tuple[4] = PyTuple_Pack(1, ((PyObject*)__pyx_mstate_global->__pyx_n_u_ignore)); if (unlikely(!__pyx_mstate_global->__pyx_tuple[4])) __PYX_ERR(2, 19, __pyx_L1_error) + __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[4]); + __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[4]); + + /* "selectolax/utils.pxi":38 + * + * + * def get_fragment_type( # <<<<<<<<<<<<<< + * html: str, + * parser_cls: ParserCls, +*/ + __pyx_mstate_global->__pyx_tuple[5] = PyTuple_Pack(1, Py_None); if (unlikely(!__pyx_mstate_global->__pyx_tuple[5])) __PYX_ERR(2, 38, __pyx_L1_error) + __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[5]); + __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[5]); + + /* "selectolax/lexbor/attrs.pxi":97 + * return default + * + * def sget(self, key, default=""): # <<<<<<<<<<<<<< + * """Same as get, but returns empty strings instead of None values for empty attributes.""" + * try: +*/ + __pyx_mstate_global->__pyx_tuple[6] = PyTuple_Pack(1, __pyx_mstate_global->__pyx_kp_u_); if (unlikely(!__pyx_mstate_global->__pyx_tuple[6])) __PYX_ERR(3, 97, __pyx_L1_error) + __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[6]); + __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[6]); + + /* "selectolax/lexbor/node.pxi":146 + * return unicode_text + * + * def text(self, bool deep=True, str separator='', bool strip=False, bool skip_empty=False): # <<<<<<<<<<<<<< + * """Return concatenated text from this node. + * +*/ + __pyx_mstate_global->__pyx_tuple[7] = PyTuple_Pack(4, Py_True, __pyx_mstate_global->__pyx_kp_u_, Py_False, Py_False); if (unlikely(!__pyx_mstate_global->__pyx_tuple[7])) __PYX_ERR(4, 146, __pyx_L1_error) + __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[7]); + __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[7]); + + /* "selectolax/lexbor/node.pxi":237 + * return self.parser.selector.find(query, self._get_node()) + * + * def css_first(self, str query, default=None, bool strict=False): # <<<<<<<<<<<<<< + * """Same as `css` but returns only the first match. + * +*/ + __pyx_mstate_global->__pyx_tuple[8] = PyTuple_Pack(2, Py_None, Py_False); if (unlikely(!__pyx_mstate_global->__pyx_tuple[8])) __PYX_ERR(4, 237, __pyx_L1_error) + __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[8]); + __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[8]); + + /* "selectolax/lexbor/node.pxi":313 + * return text + * + * def decompose(self, bool recursive=True): # <<<<<<<<<<<<<< + * """Remove the current node from the tree. + * +*/ + __pyx_mstate_global->__pyx_tuple[9] = PyTuple_Pack(1, Py_True); if (unlikely(!__pyx_mstate_global->__pyx_tuple[9])) __PYX_ERR(4, 313, __pyx_L1_error) + __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[9]); + __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[9]); + + /* "selectolax/lexbor/node.pxi":337 + * lxb_dom_node_remove( self.node) + * + * def strip_tags(self, list tags, bool recursive = False): # <<<<<<<<<<<<<< + * """Remove specified tags from the HTML tree. + * +*/ + __pyx_mstate_global->__pyx_tuple[10] = PyTuple_Pack(1, Py_False); if (unlikely(!__pyx_mstate_global->__pyx_tuple[10])) __PYX_ERR(4, 337, __pyx_L1_error) + __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[10]); + __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[10]); + + /* "selectolax/lexbor/node.pxi":451 + * return None + * + * def iter(self, bool include_text = False, bool skip_empty = False): # <<<<<<<<<<<<<< + * """Iterate over direct children of this node. + * +*/ + __pyx_mstate_global->__pyx_tuple[11] = PyTuple_Pack(2, Py_False, Py_False); if (unlikely(!__pyx_mstate_global->__pyx_tuple[11])) __PYX_ERR(4, 451, __pyx_L1_error) + __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[11]); + __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[11]); + + /* "selectolax/lexbor/selection.pxi":141 + * return bool(self.nodes) + * + * def text_contains(self, str text, bool deep=True, str separator='', bool strip=False) -> LexborSelector: # <<<<<<<<<<<<<< + * """Filter all current matches given text.""" + * cdef list nodes = [] +*/ + __pyx_mstate_global->__pyx_tuple[12] = PyTuple_Pack(3, Py_True, __pyx_mstate_global->__pyx_kp_u_, Py_False); if (unlikely(!__pyx_mstate_global->__pyx_tuple[12])) __PYX_ERR(6, 141, __pyx_L1_error) + __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[12]); + __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[12]); + #if CYTHON_IMMORTAL_CONSTANTS + { + PyObject **table = __pyx_mstate->__pyx_tuple; + for (Py_ssize_t i=0; i<13; ++i) { + #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING + Py_SET_REFCNT(table[i], _Py_IMMORTAL_REFCNT_LOCAL); + #else + Py_SET_REFCNT(table[i], _Py_IMMORTAL_INITIAL_REFCNT); + #endif + } + } + #endif + __Pyx_RefNannyFinishContext(); + return 0; + __pyx_L1_error:; + __Pyx_RefNannyFinishContext(); + return -1; +} +/* #### Code section: init_constants ### */ + +static int __Pyx_InitConstants(__pyx_mstatetype *__pyx_mstate) { + CYTHON_UNUSED_VAR(__pyx_mstate); + { + const struct { const unsigned int length: 11; } index[] = {{0},{752},{34},{45},{27},{23},{30},{18},{28},{30},{32},{22},{25},{17},{41},{38},{31},{54},{18},{31},{384},{499},{46},{402},{733},{33},{1203},{1207},{1160},{693},{739},{25},{39},{44},{38},{39},{40},{35},{45},{31},{34},{35},{34},{38},{39},{34},{15},{32},{28},{33},{27},{4},{179},{16},{23},{594},{642},{330},{1159},{588},{449},{24},{20},{64},{80},{5},{637},{584},{1},{1},{1},{1},{1},{3},{1},{2},{8},{16},{13},{5},{8},{7},{8},{53},{6},{30},{2},{5},{5},{23},{9},{7},{24},{17},{27},{26},{21},{31},{26},{30},{20},{89},{52},{97},{61},{47},{14},{5},{8},{5},{6},{9},{8},{10},{10},{16},{25},{34},{36},{20},{22},{21},{21},{23},{17},{35},{37},{23},{29},{22},{28},{16},{34},{36},{32},{22},{28},{20},{26},{28},{33},{36},{32},{23},{27},{21},{21},{28},{10},{28},{30},{26},{16},{14},{20},{22},{20},{23},{35},{30},{28},{24},{36},{31},{29},{23},{35},{30},{28},{15},{27},{17},{23},{35},{30},{28},{30},{26},{17},{21},{15},{22},{19},{17},{22},{14},{32},{34},{40},{32},{36},{18},{28},{7},{19},{8},{6},{9},{20},{15},{12},{31},{33},{20},{4},{5},{25},{15},{11},{17},{6},{4},{18},{4},{9},{21},{10},{5},{4},{4},{5},{10},{9},{17},{18},{5},{15},{11},{5},{3},{10},{8},{7},{9},{11},{10},{3},{9},{11},{12},{1},{6},{13},{9},{4},{7},{8},{12},{8},{5},{13},{17},{7},{8},{16},{16},{24},{8},{7},{6},{5},{6},{20},{4},{5},{10},{8},{11},{5},{9},{8},{9},{8},{15},{3},{9},{17},{11},{12},{5},{8},{8},{8},{4},{13},{4},{8},{7},{1},{6},{10},{12},{10},{12},{24},{19},{17},{13},{25},{20},{18},{12},{24},{19},{17},{15},{13},{18},{11},{5},{4},{8},{3},{4},{6},{11},{9},{6},{6},{7},{8},{8},{5},{6},{16},{13},{10},{15},{3},{9},{8},{4},{7},{8},{4},{9},{4},{8},{9},{5},{10},{6},{14},{10},{3},{11},{16},{7},{11},{12},{14},{12},{11},{10},{29},{28},{14},{12},{7},{5},{2},{9},{10},{17},{13},{6},{7},{12},{24},{19},{17},{6},{7},{6},{12},{10},{4},{6},{19},{15},{6},{10},{17},{8},{9},{4},{4},{9},{12},{10},{12},{19},{4},{10},{3},{9},{5},{5},{6},{3},{7},{6},{5},{10},{3},{6},{4},{8},{4},{13},{11},{10},{5},{8},{4},{6},{12},{7},{6},{11},{6},{12},{3},{5},{6},{0},{94},{83},{11},{22},{348},{35},{108},{69},{33},{197},{38},{36},{2},{11},{19},{31},{12},{39},{215},{103},{114},{121},{201},{135},{225},{14},{36},{71},{185},{209},{185},{77},{23},{18},{18},{16},{17},{18},{17},{17},{25},{11},{8},{193},{121},{96},{9},{116},{275},{95},{99},{8},{44},{57},{56},{25},{73},{37},{162},{48},{264},{26},{62}}; + #if (CYTHON_COMPRESS_STRINGS) == 2 /* compression: bz2 (7357 bytes) */ +const char* const cstring = "BZh91AY&SY\027\374\265\200\000\016\006\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\300@@@@@@@@@@@@\000@\000`!\237^we^\307V\203\267w\nTT\364\3102\257xv\357;\037&{ogE\033}\357y\354>\217\257\275c\224\373\005\223&X\372\000\001lv\315WX\353Q\227\334gX\2460\240h^\335\003\203\340\000\000>\000\022\204!M4\002\031Si\264\306\2016\232\2320\321\241\352i\244\362h\230\223\t\232\247\232\237\250S\364\215\252{T\374\224\314\t?T\317E=Oe0\220$\220L\004#Q0\246\302Q\372H\364\236MA\352da6\246\215\000\320h\000\032\000=C\324\032\000\032\r4\000i\246\202E2\020\215=\021\206\243#G\250\003OP\0324\014\2004\000\000d\000\000\000\003@\000\223J$h\200\"OS\365'\222y\251\001\352z\217Q\221\221\350\232\000\032\000\000\000\001\240\001\246\2322\031\r\000\021*\224\375\023P\365<\232\203\324\000\036\247\244\000\014\200\320\000\001\243\324\006\200\000\000\000\000\000\000$D@ \t\220#M4dh\322zM\021\350\023!\350\322\233Hh\365\014\200\032\001\352\000\001\240\321\241\246\231\016\366\255/\023\247\257\337\230\263\217\227^\337F\273\375\347\027\371\334X\336\035\236>\203\253\265\335\325\317\206\214|\272s\347\374bT:\2365\342dGr\374y\016P\034\007\360\037#\346\014\256\201\006{\206\371#7\322'\311\246D5G\024\330&\2646\027:\2306{\234\210\033@\332\177\311?\352\0133\000\341)&\020\345\n&\001H\014\303\032H\024\210\000\231\204&`\006d\201H\t\"J\245\024\275\220\2622\272\222\377\310\311\"\2054vv$\250\0052\313\002\365\2432lc\033m\241\200\306(\250\250\244\005\200\253\005U\202*\014D\025\025H\361\204\r\373\366M\363y\305\257\031 \260\214\006\037\373f\303O\021\221\275\030\037\0204(_\201\210i\2224\207\305\004x\\\001\333\237\230\243\023`\177/-\205I\372o\243\236\010@\333ng\261\3155L8\203$6\271\371\377$f4C\2541\260\265\t\210\264b\231H0\266q\264\321:\002\324,\316\014'\000m\255)\246Y!B#\210z\211p\244\260\242\006\270\200,\200\023\373q\n\330`\031\316\371\274\201\320tv\273]\356\237V\033N\300E\024\324\332\\u;\001\330\220\325\"\244E\213\"\305PP\030\220R*\254\001E\223Q*\013\005\206\340\351a5\223Q\ts\241[\"\007\227B\211PS'\334E""\375\214\261c\027^+y\206\026B\304\020XhM\261\222\266\225\210\212,\005\202\035\276\367\021\254\201\302\204\n2E\004L\023\024\363H\232a\227\226,\314\335\303\275\0362K%\302\270\250L\213\t\305\334\027t\202@\261g\200U\231\230N\342\336\246En55\006cX\353!\311\004\213\302\372\317+M\310rrrrd\301\253\233DUi\246\226\274n#s\005N\030\270\250\262J\245Q\241]\002{1\241EL\270,d\333P\237\004H\214=\006\r\003 \\\n\001\222\310\331\351\335\364\341\331\231\225F\356\r\244TZf\031\212\304\004X\255O<2D}\355mBj.,Zo\205\205m\237\025\305\310\362V\334?y\027g\346q\345\246\205\3052jf,\350\204'hP\217\225\034K9\216N\342\366\264\231\361\016\324\222\022\027q\036\303I$\007\202\027\224;\340\311>\364\276\323}\253\314\351\341\213\270aQGkl\037\324\267\336`u7B\307\360G4o\206\245`\004\311&\357\032P\260\344\241\314m`j\233\211=\271\241\304\301A\017\034*\240\367#\327`\252\357\007\003\325\033\301\353\004`\030\246\350\233\334;\204\362\002\253\254\r|q7\200\261\256\230\016\t\200\2544\325&Kf\014n\373\352\2779S\322N%\206\214P\301\206,5+\206A\n\350\250\361\n\025\010\211u\205a\221M\001a\310\014N\322*}\366\026\007\352\260\202\374A\217V\033\371\242\271\256\002C:(Kf\241g\345\024\030\270\010\335\\\326\303\270a\205\025\002O\347\342\201\357i\241\211EV\005\232\272\304\rZ(y\315\020\307\334\327\316|N\277\257I\2250\334\r\002d&\303_\n\323\213\n\351\204N\262\331\251\014\034\205\307\306m6\334\216T0\344\306\274\227sbZ\n'0k\251\246\024N\210E\332B\205#=iI\231\034\336\017\036\361\212\007\325\333z\264\262\342\r\007\302\230}\037\n\004Gr]u\225\r\302b\025\206e\030A+\013\021\231\206\371TE\211+5'\230\014\230F6\026L$\345\341!\030:2p87\357\210\367\277\260D\201\201\315\372\270\334m\200\250d\033Y?SWe \347|\314\310<4\266\006,d\026\214\370 \306D\310\r\256@\274N,\3306\330*3h\\*\254F\306g\034pG2\005\214\006`\360zqh\\o4\262C@a\306g\010\245\256U\264\243\374*kFg\260 5AA\377\t\241z\r\212\300+Z\216\231)\3120Z3!\256N\340\362\014\244\354\201\360R\264\n\241\213H\271\332V\352P\006\\H\253RC\002o\317\233i~\006\275s\243?\020tpk.\335`\244a\200~\020\302w\301\2403""\264\267\232\306\303\267\332\355\2079.\221'\371\245\227)\n\205j5ii\222\004\224\203Iz\323\010@\331\031\304\330\331\034\342\025\266\305mT\0314\245,\371\030Vc\340\343<`\317\"<}\363\230\252\016\025\312\300\353\tG\027\316\216\326+\203\265w2\205,P\235\207x.B\205S\332\306\230\205\235oT\363\371\271\271y:*f|\340\347:\341\364rG\\\350GC\371\351\360h\226\234t\nt\232\332\234\032\242\276\205\227\314\261j\231\371\274\275\303\014\373U/\207\265\356\215\327\334i\204\035\306;>\337\252\035\237\242\300~\017\370\343\342U\360\264\252\232j\010n\326t\311\275\177\327\020P\3533\214d\2241\317M\034\205\027t\033m\264\306\014\031Je]\025\352\260\366\213\342\342\372\372\013U\313\361\300\237Z\260\230(\323 V@\263\204\301X\203bC7\343\316t\213\321\373\005\347J\357w\246zs\230\200\370\263JK5\0007:\361\311\372\236\"\311\013\255\013\2755\276I\212\202)a\035\207\243_\332\313\035\370\006\036\313N{\347\272\300$L\253\027\300\252l\017-\206# hH\310k\341'\005}\376\036\306\377\007\007\013H\350\237\024-\356\n\260\275\3051P\275\323\302\305\350\230hM\234)^\355\032\254\320\232Jy%,\322@\217\036\013k@k\205\266\245|\230j\013I3\324y~>\020\370\372Qg\220\276.\226(\027\227\230$\277\"\313p\342\3425y\373\245\327d\021\003|T\020\031\004\016\211ou\003\212\207\252@\275\024\272\347]\363%\330\313\254k`\267\321\316s\337\315\335\370\263\220Q\214T$\335B\005\245\303\\\303*9=\362\002\320\2009@!\3020\001\251\324\033]\217\003\341Z7\264\343NO\247=\032-PP\342\202!\311Y\327\022\263-\233\"O\010\0209C(%\357\017\276\304\252\261H\301]]\255\301M\301\277S\024\023,\330\221a\360\030l_\364i\210\272\203\352t\344M7h\033\220\300\252\3554\270E\024\025g\220\2258\013s\334\354{\243\261\344\355\351\213\002\007v\034\304\306\010\262\017F;\244;\231\223\014\031t\351_\025N\r\245&\0349f\"\224\352Y\004\267\002g\240\232I.\326f\215\246\231{\033$\314\306m\016\356\356\210\315#\312\221\3074\346\304\207\246ri\241\236\344\000A\016\027*\311\3519\203W\327\200\343\333\260\267\350\365\335S\326\367\367\313\231\257H\030j\352W.\177^\2111\330\357\2720\305\304\256\256.@\3069\371""\001\274\232\252PS\016st\216\307k \337\313\326\342f\272\276H\271\321\365=?\007\260\361-\265\2145\313\243\211`8\227\203\210q\332\245\353\314[w\217\341\211:1\335\336\311p\234\373|\034\274\220\311&b4\273\217\0230TC:\326\325\013RCc\002\373no\254\365\021}\374\347z\340\355\340^#\363>\\>oP\300\217\317c\374\331C&$m\241B\373\216\210\2261C\021\352\\g\306Hr0o\366O\237\243\277\335U,}\321\243\362Y\262\215\262\242aYJ\215\264\3312\225\023$\034\327\361Hf\250\276\305\253[\025T\200K\020\313\032\212\346\021*\010\227\301Xw\344\034\2029+\031\370W\0036j\274\264\357C\202\332\221%\323\020\010\234\307\002\200$\\\216\024\222\223\"\260\273\305\366\250\203\220\322F\\\343c`\323\201k\014\005\264\221Q\2241\031QT\261P+\000\313J\221\006p\022;\240$A *\235\244\020k`\026\334\264t\013\313\224\347\034\330\361\272\030\227\370\001\200\230\315$\226\366\331\374~\357y\356\352\371\254\361C\262\034\376\016\363\347\240z\377\245\024\014\204\307\023\355\013\304x\356\323\r24t\214\215\006p\346I\030\215sP\016k'\253jz\006)Ud`\321\001\240\201Bv9C.H\354\367z\355\256\315\267W\223\330\356D\242\273\344\030o\273a\300\264\177\265>\326\035\222\216\303\000\302p\005\202\334\267p\361\316\273\267\231\200\342\377\177\206\377\227\3737w\355Y\210\006\r\346^J\335\263\347\242^\027\2074\354\030\334sf\004a\313\331\360\372\255\322\001\272y\242|\346gn\342G\212\204\215\033\226\302(/FQ\376ysu,\014\342\274\317\270^^\3038\312\320Z\275VP=\245\363s\213\356\260\017\301\305\t$K\305\013\2670i9\366\256\330\037\263\303C\301V\376+@U\251K\372\210\277\343\203\352\2212C\215\356y\336B\205\224\366\234\254\371a\024C\235\005\236\014\231\346Kh\032\331Y\3060\376\265~\350\025\310\276\215\221\314\021\177\03777\214\333\351\365y{\236! 8o\274\317\311\344\271\305\232J\360l\2406&\300b\022\373 \264)K\222c\206\207\301\343\363=Y\274\337o\262p\370\025\317\004\216\244$hg\0175\273\032\1771o\025\353\243\317\357\363w,\006\022\001)v\204\356E)\236&\334\254Q\t\002\340\320t\306-H\352\356\354\311\r%\336bh\262\333K\340\375\377\006\177\245\257\253\222\210T\320`_\201\365Omx\267""\363\210\224\267\343\362Oq\266\333Lm\235y\215\356\375\236\216\367\373\211\001L\251\227\325\363\201\302x-U\371{\002;\032\260\372\001\214<\332\315Z\321\3369N^^y\335\315\337\337\331\247\325\252\014\371\313\024\301\207\025\003h\025?\266\362`Mo\241\257\217\375;T\272\352\354\277\373\220\307\031\343u\275e\336\311k\251,\177\217D\367\\\203\2076\310\351w\333=\242IquZfe$\242\"!$\270\315\336Sx9m\016\017\007\227\330\0168\0033\3118\371\271m\266\333i\304\030\302\342\332[z\347\207\336\233\017K\265\343xA<~\226\304&\346\350k\277\036\332\243\210\324\010\201\372\202\027*<\017\325\321v\224\202\307\336\235\034\266P\204\347zB\345X\310\2342P\177\217\256\014\256\202\321\227\013T\315(+\357\236\026\221\325\240\204\217\236F\025\375-\024\366A\241}\344\231\202\t\206\006\235\026\004\244\2437V\002\221\244\336g(\244\231\206\244\024)\027\321'4\207A1mI\232\367\347F\223\275\007\254\206\266n$\010\312\330\022\355\202\"\\\035$(m\316\204PE\326\274\351\270H\325\201\265\225\256\214\342\014P\r\353\3134\240\261\333\027+#CZ\300,\327\251Q&\355q\024\233\003\n]\252`\307B\210\265#\323\370\217\260\220v\2350\330\227\232\313{5\222\nmH,8\301\236\277\t\262\250\364\033!\006\321\240\362KO\356\030\307\001\220X\031\3161\215\264\213\336\203\272\256\240\211Ijk=\311\210\252\350\030\025!\000\210\245X\357`f\242\227H\036\273\027\220\303/\202\260\224\361!\001\2654*\210\370X[\264c\365\340H\232\0270\202\325\342\334\004\rr\010b$c4\"\2026\310\274'P\264t#\2473\033\320\336t\225\210\222wS\021\236@C\341\345Y\276\024\215B\264\031]\031\351\201\026\330\222\265\002c\202\214\021E\200\200\301\346\344\322m&\311\327\331\r\342\002^<\212\257\335\311d\205`jy\010`\264\022\311\253\265\310\257\331\255\335I=FB`\301.\030\300P\262t\2236D-K4\276T\271\004\255\257VT\225:\310\232\216c9)1\332\345(\212v\016-\301q\335\024\0323I\322\253\2504Y;^\307\r\267[\301\326\360\311\343\204\013\342\365\205\020\\|\200~h\201\340\010d\337\202`\000\300`L\006\250\275:RH\010K \001\251b\370\000\267\272wx\376\276p\367y\301t\353\214E\200i\246~\022\364\213\221v\344\022\205\251\301i""\272N\223!b\334 p\232\334!\240\223\021cb\311\023\025\363\016\340\270\373\326_B\n\336g\302\215\315tE\330\301f\351}\303\334\332M0\025\002\213\035/\257\006\026o\323L\233\2112\032\004.j\274\027\251\2649\024@\342dK\033\006\205+\020\207\251#\004\257\240^%\341G}n\325^'\203%\202\375\346\240\035\024\n\301HY2S\204\244\305I\302\\\3004\\\300\306\221\003\001\204Ii\226[\316\366\214\361\366\236\356\233Wy7\244\"0\201;\366I\n\354\267\300;\241\027^\311p\335\240\364u-\n>\t\"L\332\350:\034#GH\026P\302c\276\030k\024\364$\250\304\223\001\211\215\211\006\313xr\344\333\262o\263\203\242\211\323>\026\240\324\222\0160<+\221\035H\361/\035\376'\302\306\370\315(\230}\034\004\224\366\034w\342\321\007\266\256F\241* \374\205\256\345\003\022moX\326\003\"<##!XX\025\201U\330s:\313\nX\331$ \266\342n\230\277\247\"\206r\241\203\265\2439\020\244\0322\234\262\264\"\334\212h%\311`]\r\025\326\013\032\017\215\014\003\355I>\002\223\226\243\003\361'\220\033\000\301\\\234\023 \"\260\020\351\350\270\210@DA\":\234F\356\034\353\212;\270\270.<\034\223@8\203]\372:i\306W\031\273\235\231UUU\213'P(\370 \204\036m\003rOQH\311\300\2647,\230K\006\020\017\366\263\330\320R\255p\302\364\235g\377\261\003\211!\225\323!\003\331\301\033\353\314\360\220\033\256\270\2404\311\340Q\234\260,w\030E\324$=\254\345^b)h\tQQ(\305\221\350b0B\262\245\247\224\264\272\330t\005\352\0304\014i28V\215\001\017Hk\354z@0\3065[\371M\021\271f\n=K\t0\314\016\n\206\30709-:\243(\234*9\006\353\203\r,\313\203!\315Eh\220Y\n\200\217\ns\206\244\315\343)'F\335\t\310=\3660\3040\004\247\321\274Bh\252\204\014\212E\226\275p\307W\226\220\255k\010\341\"|\360v\332kX\244mS0`d\200ej\221\331Gd\004\2223#9$\33420\216\001]I\023\034Z\032\n\024F,\026\026k\227\223,c\220\037\034\004\232\340\326\0236YUf\202I_P\006F\200\365 1\320\220\364<\342!\"X\311m\2607\330\320p_\231\351z\020\354mV\\\021VA@\215K\027\245QX\020\274\213V)!M\301\346a!\275}.\260\353\016\277\036n\276\357\275\311\366Nd&8\207\031\266\210\324%\247\244,\026\376\313^i\226\200\344j|\345\302/B\257\261!\276\324U\230\031\212""\2435O@\2232\264\250[\301\333\356\3706\227\230\035\013\271\014\032a\000\230Cc\016\2245\"\2308\006J\226\240P@\237\314\315\245\006\003\017\t\004\005\201\267^\260\257\271\005>M\313i\3063\034C -\240n/\242H1bv(\210\203\356\270R\367\235\345\336\367\317\203\333\r\210\343\030\233\001\26408{y\350\227\262\320\216\266$6\2301\364\036\221{\201f\325\340\307qi\365\003\014E\001\005R\001\267\212j\213\221ANQ@\"\341\256S\230\024\373\372t\211\213B\321Q*\207\025\rn\317\"\353X\233\026*\253\2038f\345\0007Q\031\210\367\031F\353\230\301\264\364\256u\007\022*;\n\256\001Z]Eq\317a\323~~\237hB\323\321\312\005Oe\336\266\202\320.5(3\354\213/D\357t\332\211p\364$\0346\332\207\243`in6\344\313\212T\253\337fV*Y\222/flQ\013\221\026?\205\273\241\033\234\2664gp\331b\013r\352\220\342\310F\206d/;I\030\233\020\213C[i\210\031\226\235\0318\267\306.\275&\260\364\0031\026\201\233!\337\261\331\206u\310\010\330\027\252\010\022\265^\375\274B.^\216\377_ \203gB*W\313\3508\303\227\301\274 \235\333\372t\325\033\254P\347\260\354:\201x\367\te\342!-\254*R\250\233\024#@EL\352\266\350\313\327\n\240\324\224\005u\210\306!r\311\223\270h\356\375\245\251\2533\t\004^\333sA\034]\014\266\020\016\214\252\331\262\000\271\330\320.\021\364\362\233\365\246\366Et^\320\355\234\246\030\243\257:>\213\214\343\200\357%0\363V\213E\020v\224D\030\030\204\030\261\177\245\334\336I\234\306*\211t\344k\226\333\277s\211\270m#\323X\007z\251\010*\222\014\2444lE\222\352gZ\217\345\242t\215\2338\314\037\247-xBN\211\013\204\017\177\214\336\202j\005\266@.L\341\206T\220\244\274T\006 (\t\226\002\"\326\200`\323a\215K\355\224\0034\261\0336y\361H\026l\365\000.0`\005\322\004hYT\2638k\212_\r\006\327=\270\352\220\251\030\304\214\2059\202\232H;\202mC\204\3467<\216\335<\025\216\204\001)\3256=\242 m\021\265\243\2165\330\272\005\324\350Q\014'\242\020\22235%&\327d%5\342R\031m\325\274!\"\304\327\271\2315H#`\016\374\013\235\345\034\237\025\016\n\345\316\027\237(\257\276D\035\353\014\335\r\272C\000\0179\350\010}-\201\rlC\242\221\322\240\232\001(Z\nB\321\376\364\227\203\025i0\0046\333\0104\344\277\032\264n\331\361\226n\245\027\rqT\345\214y\034-\005\264\021\377=[C\013\346$\234\350\n\246\234\225\014\003}\235lF\014D\021Ri\311\240fQ!\016\000\347Z\274\001N\023^A\021\231\221\224(\336\010\272W\3655\261\000Q\016\022ub\037\344\003\334\247\003\365\233\310\003\246{n""\242\267\251\351\257\2703\246p3@\321\r\302\205$\240>kE/\330\036\231M\347\300\242a=\326$5\203^\203{\n>\311fnp>\222bh8)Sz\005\274\311*t\221\222I\010\013>avH\311\313\034z\265\031y=#\030zr6\034\206\221\315\331\360})kjY/\207\t\252=6n\306v(mn\027\345\032 \222\006\214`\201\3171e\030t\203\341\"\200\357\221\321\321&\236\243h\027Q2\300\026Y\327\336\214\363o7\005\013\220\246\320\260=\372\370\210\243\2216\310\303\033\357\322o\331LxN\360AU\300\250\033D\341\033\363J\373A\227\231a\266\223\270\013{>J\357\224>\007\276\300\022\370\031\361\311w4\220\324\357w\366\rL\267\027\206G\275\rd\2552p\304\354?\n\263|,}\001\255\377M\320\342*\360\031P\313\001\247w\360\377\005\265\352k\360q\260\025\344r\377\322x\027l\001\2172|\215H|\323\000\302E\010\355G\377\243`\314a\361\013\214\3757\300Xk+\304\244{?\2514\224\270V\303\223\226\0107\200\310\307FV\237+\230\342\206\347'.|F4B\302\357\200#J\010\333\364\n\212\366\243\360\250\325\274\033#\251\3268t\327t\316\27240,\332\347!\333E\376\0142\263u\246\243\2227\324\320\016\207\204F\240h\006\241\003\223\222k\202\006\206\240\007\266\250d\332\211\312\031,\235S\370\336\010\022q\366Tq\343\336k\213gg\262\317zU\306\367\321h\327\327\007\020\036SB8\005\006\250\000\306\2049\222|\332m\251\271\231,\344\326\246\256\251\231\271{ =\376\244\255\2513\227\262X\007\310AO\037\265YE-\370\311\214\210\263\033y\021\346\003\205_\266h\210\263\034I1\226\235\305=\307q\301`\2400\222\251\351\263a!<\316%EU\365\276\341{\002\260\2140\027\026\316\n\313A\341\343\271g*\227\244\225\346\305\002\337\031^eI)gp8\344\374\320\326\322&`\266\263i\034m\336s\243E\021\221GRoc\344S\315\300\235\300\027\245\375\242\264\377}J\273\357M\330\300\241\302L\343\372b\270\241\033\263\221\306r\377v\2450\002\212\305\204\353\227o\21465k\234\250\323\366\352\265Xs[\232\021-\255\323j\352\312\325\346V>\rp\232]\233\2729Z\337J\366\2478\242\010I\216(:\355&\257]il\327\330d\352\362e\177\223\2063\230\206\3067\257_\3637N9g\271\256<&c\223\376j\377\356\205+\261\251\353-Z8\t\2733\267\233\327Z4!\037\355\022\271y\303\337\242\255\300\003""\314\350\322\246H\301y\303\224n\004E\251\263\254\002:.R\024\353\n{jt\306wf|\336\230\363uhZ\302\311\311\300\024\235\333\000\216\260o^i\256\363w\276:ymtI\343\207\333\030\323\033rF\225(\010\246\203i\324\334%\315d\034a\347\267\31550S@\320\024S\344U\202je\233\314$\311wm\301p\037->\232\230\2721E\300\2503\214\224\r\301\310\255&\025\214\242\r<\317X\315\311\212)\253\202\271\235\005\005\302\323\002?\300R\364\357\353`\"\002\033\214\247M\021:J\220\020-D\350\016\034G\234\273<\362k\302\375\037 g\321\207tqBR^p\205~\231\3101}[X\317\031t\n\341\036\315G\037\023x\000\310\260\244\234\226qx\024LZ\327\326i0\016\362\210\023\037p\236\203Gm\212l\230\201\034\343>\024\320\211\016\326\003\267\034\275\352\340\005\023\311\351\006NeZX\3254e\034\004\235\226r\212\031<\212t\3631\206N\022\310\300j0<\264\002\247(\203\264\271\352\222j~\302\034\244\355Q\205\221\004\20541\035v\036\320\003\375Hg\270\220\237)\251P\313\243\213\0064F\201\314\n/\"H\030wK\014s[a\364@D\361ik=\213_r\032W\000\237T\215\255\257\262\024\177\244R\243\341~\017-^\335`F\360\243\205\033hy(S?\207y\347\\\374\236`O\215R?$\303\367)\023\352N\343)\341\207\353\024\331\312\027\245\372/P\252\367\010/\034\rl\272\335\341\351\340\007\001\332\177.0\241\260\202\322wo\251\241\207q\"\336\021w\305G\2037\200\034\363\252\307\025\020$\372$I\2369\260=\347\334\272\361\314\233;\370\177\307\236\235\0237\324o\257\"g_\266\354\376\207N\036\374\221\343\347;x\370r\276\020\214\321\337\275\235\027y\217\363\205}\234'\2700\244z\360\263\t\2618!,\356f\270{\366t\367#\020]\370o\000\273w\324\263L\307[\222\316\225a\272Gn\000\366\201\005\2332^6\342\267\341\r\274x\364A\261\n\007|\221\337\232zw\274\001\241?O\274y\320b8\327\255\020{\336\337\026\337\261\177\302\035\356\214w\346\222<\027j\271Y\322l}\221Q'q\032i\325\362}n\364\274\207\323\307\254\013\004\270\355Jo\334'\033\332\352\202D\rrX\000r\334\031\t\373\005\037\246\233b\004\210\244\030\321\206H\202_\203\2266\205\221\234\312\357m\342EQ9#C\3064Z\277x(5\252\300\324#\025r\352\336\255ij#\341\256\245I\2760\253kIF.s\344|\212\257\306(\355\226\246\031\355\006\030\356\3352#\227\315j:\206\014\240\232\250G\nI]X\225\222\340MSQ\341\021\336_g\244\224\017P-L\257\352\351\362\017\0237\236\222!\031\357\225s?#e\363\200Ir#\rn\224x\025\235\231kZ\212_\251\007TSd\276\223 y9S\003\240|\336$\376\337\211\201\357\330B\226\2045\235\245\361\230\216\220h\346\2224\267\017D\254\007\014\201\255a\000\306\361\210\024y\331\256q\0030\356\003\005?7\374\375o*\337\273\262\263/\372\366\2769v$\372\347\355\031 2\027\231\223R)\210\0211\307\3253t\363\337\340?\321\t\374\326\215x\231pv\272S\262!\255*l\"\245%q\003\324\375\035\026]\353\177z\377\276\300\350\232:ma\343\214\350\224\203{i!\251\351\374g\213LE\022\255~\277\342l\353^\271>\232IR\024B\001\t}\374Il\374I\245#\267CL\037\225\rN(\345\374\026\357Wc\014\177\200\001_#\321\261\333\243\360=1\201\205\206w\327;\312\341\276^p\211\027\\\342;\375\331-\271\271\212\242\210V5\321\354\366Vss^\202gq-\251\345LYi]\023\215Re#\027\376\262t\324\373m\210\350\n~\234\312\275e\360]V\347\371\255k\316\217\370\346\267\357\027\037Y9\371\n\317\3738a\212\204\034/\211\332\202Y;\325x\207J\376Z\252\301\360\302\r\007\014\316\007\017<\306\235\216N\325\0073E9\303Gun5!\036\356\371jf\370\356\202\241\345\364$\233\233@I\314L\344T\200\356\271\234\231\236\270\261\360p9~\377\276\270\2704\377p\341\356\322\235\037\036\307\357\375g\242\2703\264\327Iis\235a\264*k=\253\350^c7\236""\3735\237\256\322&\243h\350I\203\3163%Ym\323f\217z\022\375\036\007\267MU\255\013\201\313\275\316u\353\207\202\276\343\3016K\350\324\265Y<~\320\333j\331\370\371n}\301\370\273a\004\337\374\013\341\2255\323\361\266h\333\234\367\266)~Q/\177\331\256\t\245;mkA\362/\333\235 \267+\337{T\247M\273a\235\352\326\343R\322\330\246x\357Qy\223v\203\362\332\3061\203rm\255\377\316)6\206\241m\216\265\333\024\267a7\320\244\211\335@m\003\273m\315\317W\333\262\306gr\rG\354\276\302\272Ey\257\"\217<\374\245\272\004\0366\240\244\334\350Z\037\302\363\322\240Cx\2277x\267+\010\000\276\027\207\212\270'\000\236\023\017\351[\264\243\3718\2621\032\353\367A\303\263k\257$H\021uIR\036\304\177\026\021\220\304\273K\217\236.\213O\356>_t\317\3529F\361\317y\305\020\305G\333[\360\177A\206\010w\tH=f\351\206\337\034\212\313\361;\342\362Cq)\376`\021\257\022\315\363\261Z\371\242\306\352&\311\005\033\360\337\363-Cx\376TE\346\332\311\261\001\366|\016\266I\244\234$d\t\206dl\253IY\213B4\257Ap\n\261 \322\366\350\267\036\310\213&(\320\306@\036S;2\017\372\240$\200?A\270!\212t{\002\357\235`\360\202\2570\216(\253\"f\014\014wd\010\227\351#\345\205\302\316+\0327]\244K*F\375\0171\000\374\256\002\221\024\302\260\254\260\244+,\237\357u\036A\263A(\036\264\373\004\344\034\245Q\343\024\":|\321\247H\177\324\302\360@\036\357d9\231\277\363e\3703[Q\304_1\213\374+\245\211\365\201\341%\370\033p\021g'zSt\277\201\005\021\245\350\177\307\304\250\361\275\336n\235\270v~\323\312T\344\232\230\346\234\267\312\305\234\340IM\325\243(|BK\240\027\016\272i\005\200\000\271\305\013-\314e;\235S\024\022\232(\246s*L\000\276@,\242\201\333\264)\266\005+\213\241\246\226\311 (\233\365\351\"\021\261\276\360\364\310U]\314\200\276e\327$\203&\204\3378A\372\006\246\351\031',\001\257\324\000\013q6\nS\351[g2\337t\201\020|\0357\001\341\233\376L\004\367\t\364g(\210\224\337}\266\363\305-\034p\223\327\r\370\303\266\376\265\225Sm\366\244~7\327\316g\266p\224M\336Q6\334\325%u\020\351\335\261cx\346\332\351\271H(q\027\206\222\010\236\272\360O\310\0370\205x\265\211\230""\240\2604z\0235c\256\321#Rp^i\211\361\023\177\220\276\265\312\207\005\203\002c\346f\265\016\353,\247\032\2353T2S\3420\000\377\326\265TNa\364\244k\"\360\243\313\324\306\310\250\260\260\006\032\230H?y\366>\331&\377@j*\220U]\322\356\177t\264\364\215\203\322\230x\002\300\365\034l\020\306\010Z\"Om\001\212\214\254\226\025\305\254\216y1\343\017|\373Y\244\375\351,\027`v\033\227\300\341&\013\276 )ee\234\000=\257\261\344+#\267\316\337\370\004\370\263\243\353\370\310M\001\237r*e\266\254\301A6T\006|\000\257{m\342\376\010\216\272\221\223\024\316\313F\216\241\360\360k\033\254\337\275\031\341\371\034\261\311\373x\005l\013\0371Tr\342\030\1778\323.6j\021\0205EA\\\002\316B\352\264\227\245\313\2315W\247\3703J\025\177\256\356DB\315\321RC\210\304\343\242\372VJ\273m\240\3727n\017\030\340\346\274-\017\362\264\316\032\302\223\203\345>\377+\266\360\305\230D\033\257 \002#kB\006\365$Wjh\247\363\306\370\221\203w\3205\035'\311\357 R\340V\217\336\340?\376\222_N\341\213(b/\221\244\020\360\314\276H\256n> 3m\323\215\346p\217\221\3376t\376\014\017\021\311\251\257TmS\345\341\234/\250\313eS\300 \240\26573\360\310\264\007\3007\002d\332\245\003K\306{\277\242\211\2732\206)\214\215\013\206\374;P\036\355\360\032\270N\007\032\215\215v \326\324\377\306\213\210\306\326\321\0149v\327e\373\362B\345\241\375\344\245\375\362\037\265\356S\371P\265\273w\347Gk!\337Y\355\035\316w\345\027\013\375\205\363\205\327\305\347\245?*\027v\241\360\330\316\357\371\301\374\323\302\331B\242\332w\302z\226\217\347\023\330\347\256\005_\307v6\336tV\273.\026c\305\037J!\273\353t>\366\366LGO\337\316\377\345\023\371Ta\254\270P\352\264\273\276\261\277\211\225\276\263\377\366\314~\366\363\333+\035=\027\354\3637\312]\345\305J\177\255\373\360\316\324\316\006\016}\244\220(\274*\365\343\200\377\2041\226\013C\305\316j\337\220=4j\217\316\224\343\345\307\366\355_\355_W\354\225\264\235\316T\373\006\254\253\371\277\346c\325\301!\313\314\337*$\213\203\305e\350=\034.\234+d\212\211\242T\035\016!\211b\177\255\367\270u\3362`\246\320i\266\320Y\370\272""\260Q\035v\0074\251v\035|\363\273\325oE\362'\362R\265\373\204\265\234\037\002I\234\304\031U{\006\254\230\365\003j\302\t+Q\353>\272#[\033\366\360t9\\^\000\361\234\250H\325\256c;\206\025\262\210\314\266\365\027\013\232\036\335\371-\337i\237\204\351\374\303\376\207X\355:\2743\003\275\272\246\354\251\037w\217\331\317$[Z}\373UG\317\221\375\353\326\220\265\301\031\356\232*\305QMzA5~\317\017\344\343\325\336>\353\200\365+M\352H)aw]-%\336F;zb\245N>\306\035`\255\367T\376l\376Y!^\000\211\235\264O^.u\302b\235+\311\345\177\355J5\030\351\017\250\206Q\276\2664X$(9a\237\210\301\344\373p]A5\340\351;X\370>\224E\034\333oZ\311<\024\216\025C\366\305\271\262\344\353\211\314<\315\207\354\3237\312\235\345~\352R\035\234(&\354h\334\216\213\266\010\353\253\330\312zmp\244\330\t\353n\317<\267\237\277\260_d\354\314Z\265\367BA\262#\323\345\020\237\304\230\307}\237u\030T\316,\304p\261\207\254\337a\262cEX\337\233\345~\234j\353V\233y)\277\361&\216&8\016\032\371S)fw\200r\274\355\3538\320k\037>\003*\370S\001\212\006\255\370\333\243T\004\252\200\372]8X\330(v\227z\321\004\337\304a\311\355\243!\0300\364&^u\r\262\317:\224\037-\\+\016\024\277/\246J\241\032\025\214\025\276Gi\275\211#\343\275\274\341qk\214C\302\341\235\311\035i\347\265\365\330\252\227\326\272a\035j\335_[\251|\004\007\250\241\212\201\236\331'\220\337\004P\036-\337\336\r!\014\334\"y\367\2420\273\373\355~\220g\265\027\215Y\252\366\036\251\366\242\016\303\242lX\235\330\366\272u\026\310x\262\304\341.q\362\275;\213\326\tK\262\207\246\320v\252\275\337\200\021\302\022\205\3550\232\372\231]\320\000\002\204H\276\037\025>\\\010\331g\257\225$\216d\361\2673\276i\021\305*\360""\236$[\001\254:n\037\277\002\366\017\242\000\335\005\2019\034\001\203\250\206\275;7\254IKr\272\332\341\357+\241J\254\326=`\017\000\237\265\356\223\240\351\211\374o\305N\030f\230\017\263i\177}\2618\tP\325;\010Fr0\277]<\0002\371\255\014\024O\242,\372\254n0\235\2763\371\205\302\001P=V\2149\312\366m>\203\252\210-\016\332C\321\242Ts@\374 \25000\365\332z\202\035]\213\202\021\277\366F\034\003TK\264\030q\030\255\324\031\021\321\357ua\271\330_\0149#~\303M\313\031\021\026'0b\237\325\223'C\270F\346:\210\253\345\014|\310\265\343~\324\000\024\316(\350`\034u\202\345\257\027B\005h\351\230\353`\351\227\262\266\373\322~\276j\257\"\034\003F\342b\337&\303\365-\261\335\013\232\215.\350\3578?\202\370\225;\225Xu\004\314\016\334\rbS\255um\302N\374l\377\374K\265\373\270u\316\222\010\310]\222\356\010\244\243\356D\204\216\243\307\252\275\337\332\337\202\272\000[hK\223y\311\307\327\220\365/X\347#G\001\211\354S\250S}\375\326w\005\220\346Y\373,!E\371\\Y\335\375~W\252\016\rs}\231!\257\344Q\300\256\347\013\t\373\302\264=\375\367]P\235o\363*@\300\304\\9U\t\271l\234\353\3509_X\300e{\333\333\321sl\207q\235Cx\215\343\322\233\270\006\366\231\311\322T\311,_\253\014V\226wO\354\246\355e\364\275\240J\366\031\200\235R\252\034\251\364\003\315>\360\314\300i\351u9\201\0107`M\223\271\014\n\205\356bO\351xi\2562P\371q\367\236\375\023Ij\020\360\262t\241|\250r\266\222\000\2470\310e\032\257Q?P\217\352 \247}\336\276\375\310~\224@z\267PQ\033\312k\304e\254z\352[@/\324\262a;\006\266B\246ow\201\263C\325\272\007K\262\361\206\036\357\347;\371\304\256\003 \315\0247J\207\300\342}\272];\212\2302\200\026s\354k\220\005i_\317!\027\242\270-p\\A*W\363\007\300\016\031@\333\251\322\255r\272rg\367\226\375\3233\327\366\247\255\204\265\006\265\327A\363A\250\335h\370\325^\360\340c\366\030\254\t\256\351 \304@w\321a}G\021\002\204\0328\243m\362\344\256\223\240\205\344\001C\365\010\260\312\315\004\310L\226\2024\316\026\256\202\237\036\032\336\203\204\035[\250\304k.\252\200#\201\320\r\335\253\275\272f\257\311\300\370""\364'e\034\300\252`\026\257#\316\201C\264\005\324\244\215\017\237\204C\316\276\262XI\370)\3565\241\231\3174\241O2\211\275\030\007\213\374./\241q\367\331\307F\3521\034\242\3245k\230\3072\307\255qt\333\010\030\246\213\200\243\000\265\347\212\314\236\204\245v\325\232\2645\346\300t/\220y^F\0008\305\203\275\253\3660\016\000\356\373\355\267M%\343^\311(\275\2178\357\010\022\371D\240\013a\234\217l\276\027q\376M\234\033\3135\202m\010\230\271\313\357s\254\020$U\034*u\225\356\225%\267%\005\243\027\355\2130\001\273\013>P\026\357\r\374I;\211\250\017\201\222\017\370\301\234\3553\023\334g\021 \020FC\210p\026\302\240\005\220\314B\371`y\243z\356\246}\363\341\3566A\272\027!P\024\330D\202p\2710Xx^\324\241\326\245XG{\273\353\376\356]\373\351O\350\274N\0072\244\001k\312\372\003\203\222\302F\325\201\261>\n\003rP\377\025d<\027\212\177E/M\211\201\343\2663\305\307E\243\024*Q\000\203a\364\265\374q\324\256\026\271\224\335\005\000\371\213\375\313s\224\336\2216\203~\300P\036XB\240xh\347\242\225\240\245\232-'\336^\300U\202\346v\251h\226b\245;\345[\225\314.\304d\201\022\251N~\030\210\374\nh\224\370\200!\242\030\377\227\256\227/V\236\355\306k\301\022P\244\210\035\201\320\332\356\022\n\020\232\367\240\235c8\345\230\007\312\243\017\2352\371\337c}\364\375\246\263\326E\216\340r\3510\260\371\312N<\256va\322:L\001'\014\374'\252M\025s\007\014\r\242\030L\200\246\264\3538\013\321\n\340\236\257#d\311\366\345\277U\216B\254\205\375l\354UE\346\320\224Py\035N\200\373\302\006\246\317N\240`\017\203Y`""\242\320_9\007\002\375\005\002\003_\200G\221&\004\206\3667\227\001\373\300%\327\275\231\335\005r{{\234p?\204\316\341ji\271
\")\n >>> node = tree.css_first('div')\n >>> node.attrs\n
\n >>> node.attrs['id']\n 'a'\n >>> node.attrs['foo'] = 'bar'\n >>> del node.attrs['id']\n >>> node.attributes\n {'foo': 'bar'}\n >>> node.attrs['id'] = 'new_id'\n >>> node.html\n '
'\n An exception that indicates error.Attempt to unwrap removed node. Does nothing.Can't create a new documentCan't create a new nodeCan't create element for tag 'Can't extract textCan't initialize CSS parser.Can't initialize CSS selector.Can't initialize DOM collection.Can't locate elements.Can't parse CSS selector.Can't parse HTML.Decomposing the root node is not allowed.Expected 1 match, but found %s matchesExpected a string, but %s foundExpected a string or LexborNode instance, but %s foundExpected at least Expected str or unicode, got %sExtract the inner content of an HTML comment string.\n\n Args:\n text: Raw HTML comment, including the ```` markers.\n\n Returns:\n The comment body with surrounding whitespace stripped.\n\n Raises:\n ValueError: If the input is not a well-formed HTML comment.\n\n Examples:\n >>> extract_html_comment(\"\")\n 'hello'\n Extract the textual content of an HTML comment node.\n\n Returns\n -------\n str or None\n Comment text with surrounding whitespace removed, or ``None`` if\n the current node is not a comment or the comment markup cannot be\n "" parsed.\n\n Examples\n --------\n >>> parse_fragment(\"\")[0].comment_content\n 'hello'\n >>> parse_fragment(\"
not a comment
\")[0].comment_content is None\n True\n Failed to initialize object for HTML Document.Get all attributes that belong to the current node.\n\n The value of empty attributes is None.\n\n Returns\n -------\n attributes : dictionary of all attributes.\n\n Examples\n --------\n\n >>> tree = LexborHTMLParser(\"
\")\n >>> node = tree.css_first('div')\n >>> node.attributes\n {'data': None, 'id': 'my_id'}\n Given an HTML tag name, e.g. `\"div\"`, create a single empty node for that tag,\n e.g. `\"
\"`.\n\n Parameters\n ----------\n tag : str\n Name of the tag to create.\n\n Returns\n -------\n LexborNode\n Newly created element node.\n Raises\n ------\n SelectolaxError\n If the element cannot be created.\n\n Examples\n --------\n >>> parser = LexborHTMLParser(\"
\")\n >>> new_node = parser.create_node(\"span\")\n >>> new_node.tag_name\n 'span'\n >>> parser.root.append_child(new_node)\n >>> parser.html\n '
'\n Input is not a valid HTML comment\n Insert a node after the current Node.\n\n Parameters\n ----------\n value : str, bytes or Node\n The text or Node instance to insert after the Node.\n When a text string is passed, it's treated as text. All HTML tags will be escaped.\n Convert and pass the ``Node`` object when you want to work with HTML.\n Does not clone the ``Node`` object.\n All future changes to the passed ``Node`` object will also ""be taken into account.\n\n Examples\n --------\n\n >>> tree = LexborHTMLParser('
Get \"Laptop\"
')\n >>> img = tree.css_first('img')\n >>> img.insert_after(img.attributes.get('alt', ''))\n >>> tree.body.child.html\n '
Get \"Laptop\"Laptop
'\n\n >>> html_parser = LexborHTMLParser('
Get
')\n >>> html_parser2 = LexborHTMLParser('
Test
')\n >>> img_node = html_parser.css_first('img')\n >>> img_node.insert_after(html_parser2.body.child)\n
Get
Test
'\n \n Insert a node before the current Node.\n\n Parameters\n ----------\n value : str, bytes or Node\n The text or Node instance to insert before the Node.\n When a text string is passed, it's treated as text. All HTML tags will be escaped.\n Convert and pass the ``Node`` object when you want to work with HTML.\n Does not clone the ``Node`` object.\n All future changes to the passed ``Node`` object will also be taken into account.\n\n Examples\n --------\n\n >>> tree = LexborHTMLParser('
Get \"Laptop\"
')\n >>> img = tree.css_first('img')\n >>> img.insert_before(img.attributes.get('alt', ''))\n >>> tree.body.child.html\n '
Get Laptop\"Laptop\"
'\n\n >>> html_parser = LexborHTMLParser('
Get
')\n >>> html_parser2 = LexborHTMLParser('
Test
')\n >>> img_node = html_parser.css_first('img')\n >>> img_node.insert_before(html_parser2.body.child)\n
Get
Test
'\n "" \n Insert a node inside (at the end of) the current Node.\n\n Parameters\n ----------\n value : str, bytes or Node\n The text or Node instance to insert inside the Node.\n When a text string is passed, it's treated as text. All HTML tags will be escaped.\n Convert and pass the ``Node`` object when you want to work with HTML.\n Does not clone the ``Node`` object.\n All future changes to the passed ``Node`` object will also be taken into account.\n\n Examples\n --------\n\n >>> tree = LexborHTMLParser('
Get
')\n >>> div = tree.css_first('div')\n >>> div.insert_child('Laptop')\n >>> tree.body.child.html\n '
Get Laptop
'\n\n >>> html_parser = LexborHTMLParser('
Get
Laptop
')\n >>> html_parser2 = LexborHTMLParser('
Test
')\n >>> span_node = html_parser.css_first('span')\n >>> span_node.insert_child(html_parser2.body.child)\n
Get
Laptop
Test
'\n Iterates over all text nodes and merges all text nodes that are close to each other.\n\n This is useful for text extraction.\n Use it when you need to strip HTML tags and merge \"dangling\" text.\n\n Examples\n --------\n\n >>> tree = LexborHTMLParser(\"

John

Doe

\")\n >>> node = tree.css_first('div')\n >>> tree.unwrap_tags([\"strong\"])\n >>> tree.text(deep=True, separator=\" \", strip=True)\n \"J ohn Doe\" # Text extraction produces an extra space because the strong tag was removed.\n >>> node.merge_text_nodes()\n >>> tree.text(deep=True, separator=\" \", strip=True)\n \"John Doe\"\n Iterates over all text nodes and merges all text nodes that are close to each ot""her.\n\n This is useful for text extraction.\n Use it when you need to strip HTML tags and merge \"dangling\" text.\n\n Examples\n --------\n\n >>> tree = LexborHTMLParser(\"

John

Doe

\")\n >>> node = tree.css_first('div')\n >>> tree.unwrap_tags([\"strong\"])\n >>> tree.text(deep=True, separator=\" \", strip=True)\n \"J ohn Doe\" # Text extraction produces an extra space because the strong tag was removed.\n >>> node.merge_text_nodes()\n >>> tree.text(deep=True, separator=\" \", strip=True)\n \"John Doe\"\n\n Returns\n -------\n None\n >> tree = LexborHTMLParser('
Hello world!
')\n "" >>> tags = ['head', 'style', 'script', 'xmp', 'iframe', 'noembed', 'noframes']\n >>> tree.strip_tags(tags)\n >>> tree.html\n '
Hello world!
'\n\n Remove specified tags from the node.\n\n Parameters\n ----------\n tags : list of str\n List of tags to remove.\n recursive : bool, default False\n Whenever to delete all its child nodes\n\n Examples\n --------\n\n >>> tree = LexborHTMLParser('
Hello world!
')\n >>> tags = ['head', 'style', 'script', 'xmp', 'iframe', 'noembed', 'noframes']\n >>> tree.strip_tags(tags)\n >>> tree.html\n '
Hello world!
'\n\n Returns\n -------\n None\n Remove the current node from the tree.\n\n Parameters\n ----------\n recursive : bool, default True\n Whenever to delete all its child nodes\n\n Examples\n --------\n\n >>> tree = LexborHTMLParser(html)\n >>> for tag in tree.css('script'):\n >>> tag.decompose()\n\n Replace current Node with specified value.\n\n Parameters\n ----------\n value : str, bytes or Node\n The text or Node instance to replace the Node with.\n When a text string is passed, it's treated as text. All HTML tags will be escaped.\n Convert and pass the ``Node`` object when you want to work with HTML.\n Does not clone the ``Node`` object.\n All future changes to the passed ``Node`` object will also be taken into account.\n\n Examples\n --------\n\n >>> tree = LexborHTMLParser('
Get \"Laptop\"
')\n >>> img = tree.css_first('img')\n >>> img.replace_with(img.attributes.get('alt', ''))\n >>> tree.body.child.html\n '<""div>Get Laptop
'\n\n >>> html_parser = LexborHTMLParser('
Get
')\n >>> html_parser2 = LexborHTMLParser('
Test
')\n >>> img_node = html_parser.css_first('img')\n >>> img_node.replace_with(html_parser2.body.child)\n '
Get
Test
'\n Replace node with whatever is inside this node.\n\n Does nothing if you perform unwrapping second time on the same node.\n\n Parameters\n ----------\n delete_empty : bool, default False\n If True, removes empty tags.\n\n Examples\n --------\n\n >>> tree = LexborHTMLParser(\"
Hello world!
\")\n >>> tree.css_first('i').unwrap()\n >>> tree.html\n '
Hello world!
'\n\n Note: by default, empty tags are ignored, use \"delete_empty\" to change this.\n Return the raw (unparsed, original) value of a node.\n\n Currently, works on text nodes only.\n\n Returns\n -------\n\n raw_value : bytes\n\n Examples\n --------\n\n >>> html_parser = LexborHTMLParser('
<test>
')\n >>> selector = html_parser.css_first('div')\n >>> selector.child.html\n '<test>'\n >>> selector.child.raw_value\n b'<test>'\n Tag name cannot be emptyTag name is too longThe specified HTML input is too large to be processed (%d bytes)This features is not supported by the lexbor backend. Please use Modest backend.UTF-8Unwraps specified tags from the HTML tree.\n\n Works the same as the ``unwrap`` method, but applied to a list of tags.\n\n Parameters\n ----------\n tags : list\n List of tags to remove.\n delete_empty : bool, default False\n If True, removes empty tags.\n""\n Examples\n --------\n\n >>> tree = LexborHTMLParser(\"
Hello world!
\")\n >>> tree.body.unwrap_tags(['i','a'])\n >>> tree.body.html\n '
Hello world!
'\n\n Note: by default, empty tags are ignored, use \"delete_empty\" to change this.\n Unwraps specified tags from the HTML tree.\n\n Works the same as the ``unwrap`` method, but applied to a list of tags.\n\n Parameters\n ----------\n tags : list\n List of tags to remove.\n delete_empty : bool\n Whenever to delete empty tags.\n\n Examples\n --------\n\n >>> tree = LexborHTMLParser(\"
Hello world!
\")\n >>> tree.body.unwrap_tags(['i','a'])\n >>> tree.body.html\n '
Hello world!
'\n\n Returns\n -------\n None\n '.|?<>'>add_note arguments, got attributes, \\s*\\s*selectolax.lexborselectolax/lexbor/attrs.pxiselectolax/lexbor/node.pxiselectolax/lexbor.pyxselectolax/lexbor/selection.pxiselectolax/lexbor/util.pxiselectolax/lexbor/../utils.pxiselectolax/utils.pxiself._fragment_document,self.document cannot be converted to a Python object for picklingself._text is not None or self.separator is not Noneself.css_selectors,self.parser,self.selectors cannot be converted to a Python object for picklingself.node cannot be converted to a Python object for picklingself.node is not None or self.nodes is not None-text<-undef>utf-8DOTALL_ENCODINGFRAGMENTHTMLParserIGNORECASELexborAttributesLexborAttributes.__iter__LexborAttributes.__reduce_cython__LexborAttributes.__setstate_cython__LexborAttributes.getLexborAttributes.itemsLexborAttributes.keysLex""borAttributes.sgetLexborAttributes.valuesLexborCSSSelectorLexborCSSSelector.__reduce_cython__LexborCSSSelector.__setstate_cython__LexborCSSSelector._findLexborCSSSelector.any_matchesLexborCSSSelector.findLexborCSSSelector.find_firstLexborHTMLParserLexborHTMLParser.__reduce_cython__LexborHTMLParser.__setstate_cython__LexborHTMLParser.any_css_matchesLexborHTMLParser.cloneLexborHTMLParser.create_nodeLexborHTMLParser.cssLexborHTMLParser.css_firstLexborHTMLParser.css_matchesLexborHTMLParser.merge_text_nodesLexborHTMLParser.script_srcs_containLexborHTMLParser.scripts_containLexborHTMLParser.selectLexborHTMLParser.strip_tagsLexborHTMLParser.tagsLexborHTMLParser.textLexborHTMLParser.unwrap_tagsLexborNodeLexborNode.__reduce_cython__LexborNode.__setstate_cython__LexborNode.any_css_matchesLexborNode.cloneLexborNode.cssLexborNode.css_firstLexborNode.css_matchesLexborNode.decomposeLexborNode.insert_afterLexborNode.insert_after[LexborNode]LexborNode.insert_after[bytes]LexborNode.insert_after[str]LexborNode.insert_beforeLexborNode.insert_before[LexborNode]LexborNode.insert_before[bytes]LexborNode.insert_before[str]LexborNode.insert_childLexborNode.insert_child[LexborNode]LexborNode.insert_child[bytes]LexborNode.insert_child[str]LexborNode.iterLexborNode.merge_text_nodesLexborNode.removeLexborNode.replace_withLexborNode.replace_with[LexborNode]LexborNode.replace_with[bytes]LexborNode.replace_with[str]LexborNode.script_srcs_containLexborNode.scripts_containLexborNode.selectLexborNode.strip_tagsLexborNode.textLexborNode.text_lexborLexborNode.traverseLexborNode.unwrapLexborNode.unwrap_tagsLexborSelectorLexborSelector.__reduce_cython__LexborSelector.__setstate_cython__LexborSelector.any_attribute_longer_thanLexborSelector.any_text_containsLexborSelector.attribute_longer_thanLexborSelector.cssLexborSelector.text_containsLiteralMAX_HTML_INPUT_SIZEOptionalParserParserCls__Pyx_PyDict_NextRefSelectolaxError_TAG_TO_NAMETextContainer.__reduce_cython__TextContainer.__setstate_cython__TextConta""iner.appendTypeUnionany_attribute_longer_thanany_css_matchesany_matchesany_text_containsappendargsasyncio.coroutinesattrattributeattribute_longer_thanattributesattrsbodyboolbytesbytes_htmlbytes_val__class_getitem__cline_in_tracebackclonecloned_documentcloned_nodecloseclscollectioncombinedcompilecontainercreate_nodecreate_tagcsscss_firstcss_matchescurrent_nodeddecodedecode_errorsdecomposedeepdefaultdefaultsdelete_empty__dict___dictdo_create_tagdo_parse_fragment__doc__documentdocument_no_bodydocument_no_headdocument_no_head_no_bodydom_nodeelementencodeerrorerrorsextract_html_commentfind_findfind_firstfinditerfirst_childflagsfrag_typefragmentfullmatch__func___fused_sigindexgetgetLoggerget_fragment_type__getitem____getstate__grouphas_bodyhas_headhas_htmlheadhead_and_bodyhtmlhtml_lenhtml_reiignore__import__include_textinner_htmlinsert_afterinsert_after[LexborNode]insert_after[bytes]insert_after[str]insert_beforeinsert_before[LexborNode]insert_before[bytes]insert_before[str]insert_childinsert_child[LexborNode]insert_child[bytes]insert_child[str]is_comment_node_is_coroutineis_empty_text_nodeis_fragmentitemsiter__iter__keykeyskwargsleft_lengthleft_textlengthloggerlogginglxb_node__main__matchmem_idmerge_text_nodes__metaclass____module____mro_entries__msgn_results__name__name__new__new_nodenextnext_nodenodenode_srcnode_textnodesonly_firstparentparse_fragmentparser_clspop__prepare__preprocess_inputpy_textpybyte_name__pyx_capi____pyx_checksum__pyx_result__pyx_state__pyx_type__pyx_unpickle_LexborSelector__pyx_unpickle_TextContainer__pyx_vtable____qualname__queriesqueryrerecursive__reduce____reduce_cython____reduce_ex__removereplacereplace_withreplace_with[LexborNode]replace_with[bytes]replace_with[str]resultresultsreturnright_lengthright_textrootscriptscript_srcs_containscripts_containselectselectolaxselectolax.lexborselectorselectorsselfsendseparator__set_name__setdefault__setstate____setstate_cython__sgetskip_emptysrcsrc_nodesstartstatestatusstrstr_lenstrictstripstrip_tagstagt""ag_idtags__test__texttext_containstext_lexbortext_nodesthrowtraversetreetypingunicode_textunknownunwrapunwrap_tagsupdateuse_setstatevalvaluevaluesint (lxb_char_t const *, size_t)\000int (lxb_dom_node_t *)\000_is_whitespace_only\000is_empty_text_node\320\0040\3200D\300O\320S]\320]^\340\010\032\230!\330\010\014\210H\220D\230\001\330\014\030\230\004\230E\240\021\240%\240v\250Z\260{\300&\310\001\330\014\017\210z\230\024\230U\240#\240Q\330\020\025\220W\230A\230Q\330\010\014\210I\220Q\330\010\017\210q\200\001\330\004+\2501\250F\260!\320\004\033\2301\360\034\000\t\020\210~\230Q\230d\240*\250D\260\001\320\004\035\320\0351\260\037\320@W\320WX\3602\000\t&\320%8\270\004\270E\300\021\340\010\013\2104\210q\330\014\030\230\r\240Q\240k\260\021\330\014\017\210}\230A\230T\240\027\250\001\330\020\027\320\027)\320)<\270A\270R\320?\\\320\\`\320`f\320fg\330\020\023\2205\230\003\2301\330\024\027\220t\230;\240c\250\024\250T\260\021\330\030\"\240$\240g\250Q\250a\330\030!\240\027\250\001\250\021\340\014\022\220%\220s\230!\330\020\023\220=\240\001\240\026\240q\330\024\033\320\033-\320-@\300\001\300\022\320C`\320`e\320ef\330\024\027\220u\230C\230q\330\030\033\2304\230{\250#\250T\3201C\3001\300A\330\034&\240d\250'\260\021\260!\330\034%\240W\250A\250Q\330\020\027\220t\2301\330\014\023\2209\230A\340\014\030\230\r\240Q\240k\260\021\330\014\017\210}\230A\230T\240\027\250\001\330\020\027\320\027)\320)<\270A\270R\320?\\\320\\`\320`f\320fg\330\020\023\2205\230\003\2301\330\024\027\220t\230;\240c\250\024\250T\260\021\330\030!\240\027\250\001\250\024\250W\260A\260Q\340\014$\240A\330\020#\2404\240q\330\020/\250q\330\020\031\230\021\340\014\023\2209\230A\320\004\033\2301\360 \000\t\020\210t\2201\330\010\013\2101\330\014\023\220>\240\021\240&\250\001\330\010\017\210q\320\000\033\2301\330\004\007\200z\220\021\220'\230\025\230a\330\010\025\220T\230\027\240\001\240\031\250'\260\021\330\t\023\2201\220F\230!\330\010\025\220Q\340\010\016\210i\220q\320\030:\270\"\270D\300\001\300\025\300a\330\004\017\210s\220!""\2201\330\004\007\200y\220\002\220!\330\010\016\210j\230\001\320\031\\\320\\^\320^_\330\004\013\210<\220q\320\0044\3204H\310\017\320Wa\320ab\360\006\000\t\r\210H\220D\230\001\330\014\030\230\004\230E\240\021\240%\240v\250Z\260{\300&\310\001\330\014\017\210z\230\024\230U\240#\240Q\330\020\027\220q\330\010\017\210q\320\0044\260A\3602\000\t\014\2104\210z\230\023\230A\330\014\020\220\005\220\\\240\021\240&\250\r\260Q\320\0045\260Q\360.\000\t1\260\001\360\006\000\t\r\210G\2201\330\014\032\230#\230W\240A\240Q\340\014\031\320\0310\260\001\260\021\260$\260i\270\177\310a\340\014\017\210{\230#\230Q\330\020\026\220o\240Q\240a\340\014\025\320\0251\260\021\330\020&\240d\250!\330\020\021\330\020\037\230q\330\020\023\2201\220A\340\014\017\210w\220c\230\021\330\020*\250!\320+>\270a\330\020\026\220o\240Q\240a\340\014\020\220\005\220U\230!\320\0338\270\001\270\021\330\020\023\2201\330\024-\250Q\320.A\320A_\320_`\320`l\320lm\340\024(\250\001\320)<\320\270d\300!\330\010\017\210q\200A\360$\000\t%\240D\250\005\250Q\360\014\000\t\017\210e\2203\220a\330\014\030\230\004\230A\330\014\017\210t\2206\230\023\320\0343\2604\260t\2706\300\024\300T\310\025\310f\320TW\320WX\330\020\034\320\0345\260Q\260d\270'\300\021\300!\330\020\035\320\0356\260a\260v\270Q\270a\330\020\023\220:\230T\240\021\330\024 \240\010\250\t\260\022\260>\300\023\300H\310J\320VX\320XY\330\0241\260\021\260&\270\n\300#\300Q\300a\330\024'\240q\250\004\250A\340\020\023\220:\230W\240A\330\0245\260Q\260d\270%\320?P\320PQ\330\020\023\220;\230g\240Q\330\0245\260Q\260d\270%\320?P\320PQ\340\014\017\210t\2201\330\032\036\230a\230v\240T\250\030\3201B\300!\330\014\023\2201\320\004$\240A\340\010\014\210J\220a\220q\200A\340\010\014\210L\230\001\330\014\017\210t\2207\230)\240<\250q\260\n\270!\330\020\027\220q\330\010\017\210q\200A\340\016\025\220Q\330\023\031\230\021\330\017\026\220a\330\024\033\2301\330\t\n\360*\000\t\014\2104\210v\220S\230\001\330\014\023\2201\330\010\017\210t\2205\230\005\230Q\230e\2406\250\032\260;\270f\300G\310;\320VW\200A\360<\000\t\014\210:\220Q\220h\230e\2407\250!\330\014\030\230\010\240\001\240\021\330\014\027\320\027*\320*K\3101\330\020\021\220\024\220W\230I\240Q\330\020\037\230{\250#\250Q\250a\340\014\017\210y\230\003\2301\330\020\026\220o\240Q\240a\330\014%\240Q\240d\250'\260\021\330\r\027\220q\230\007\230q\330\014\027\320\0273\2601\330\020\021\220\024\220W\230I\240Q\330\020#\2405\250\001\330\027\030\340\014\017\210y\230\003\2301\330\020\026\220o\240Q\240a\330\014%\240Q\240d\250'\3201D\300A\340\014\022\220/\240\021\320\"[\320[]\320]a\320ab\320bh\320hi\200A\360:\000\t\014\210:\220Q\220h\230e\2407\250!\330""\014\030\230\010\240\001\240\021\330\014\027\320\027*\320*K\3101\330\020\021\220\024\220W\230I\240Q\330\020\037\230{\250#\250Q\250a\340\014\017\210y\230\003\2301\330\020\026\220o\240Q\240a\330\014&\240a\240t\2507\260!\330\014\037\230q\320 3\2604\260q\330\r\027\220q\230\007\230q\330\014\027\320\0273\2601\330\020\021\220\024\220W\230I\240Q\330\020#\2405\250\001\330\027\030\340\014\017\210y\230\003\2301\330\020\026\220o\240Q\240a\330\014&\240a\240t\2507\3202E\300Q\330\014\037\230q\320 3\2604\260q\340\014\022\220/\240\021\320\"[\320[]\320]a\320ab\320bh\320hi\200A\360<\000\t\014\210:\220Q\220h\230e\2407\250!\330\014\030\230\010\240\001\240\021\330\014\027\320\027*\320*K\3101\330\020\021\220\024\220W\230I\240Q\330\020\037\230{\250#\250Q\250a\340\014\017\210y\230\003\2301\330\020\026\220o\240Q\240a\330\014&\240a\240t\2507\260!\330\r\027\220q\230\007\230q\330\014\027\320\0273\2601\330\020\021\220\024\220W\230I\240Q\330\020#\2405\250\001\330\027\030\340\014\017\210y\230\003\2301\330\020\026\220o\240Q\240a\330\014&\240a\240t\2507\3202E\300Q\340\014\022\220/\240\021\320\"[\320[]\320]a\320ab\320bh\320hi\200A\360\014\000\t\037\230a\360\006\000\t\020\320\017(\250\001\250\024\250W\260A\260Q\330\010\013\2106\220\030\230\023\230A\330\014\022\220,\230a\230q\340\010\027\220t\2307\240!\2401\330\010)\250\021\250$\250e\3203D\300A\330\010\017\210q\200A\340\010\017\210t\2201\220D\230\007\230y\250\014\260A\260Z\270q\200A\360\032\000\t\020\210t\2205\320\030(\250\001\250\021\200A\360\036\000\t\020\210t\2205\320\030(\250\001\250\021\200A\360,\000\t\020\210t\2205\320\030)\250\021\200A\360(\000\t\020\210t\2205\230\004\230A\230Q\200A\360\036\000\t\020\210t\2205\320\030,\250A\250Q\200A\360\032\000\t\020\210t\2205\230\014\240A\240Q\200A\330\010\017\210t\2206\230\021\230'\240\026\240q\200A\360*\000\t\020\210t\2207\230)\2405\250\001\250\027\260\004\260J\270a\200A\330\010\017\210t\2209\230A\320\004+\320+D\300A\320\004D\300A\360\014\000\t\014\2104\210z\230\021\230'\240\021\330\014\022\220)\2301\230A""\340\010\026\220e\2307\240!\2401\330\010\031\320\0310\260\001\260\024\260Y\270o\310]\320Zc\320cf\320fg\320gh\340\010\013\210?\230#\230Q\330\014\033\2301\320\034-\250Q\330\014\024\220A\340\010\014\210K\220q\330\010\021\320\021#\2401\240D\250\014\260D\270\007\270q\330$9\3209O\310y\320XY\330\010\013\2107\220#\220Q\330\0140\260\001\260\021\330\014\033\2301\320\034-\250Q\330\014\024\220A\340\010\021\220\037\240\001\240\024\240Z\250r\260\021\330\010\014\210K\220q\330\010,\250A\250Q\330\010\017\210q\320\004L\310I\320UV\360\n\000\t\033\230!\330\010\014\210H\220D\230\001\330\014\023\2204\220{\240$\240a\240q\330\014\017\210t\2201\330\020\021\330\014\017\210u\220D\230\006\230d\240&\250\003\2501\330\020\027\220t\2301\230D\240\005\240Q\240g\250R\250s\260!\2601\330\014\017\210s\220!\2206\230\022\2301\330\020\025\220W\230A\230Q\330\010\014\210I\220Q\330\010\017\210q\320\004P\320PY\320YZ\360\014\000\t\r\210H\220D\230\001\330\014\023\2204\220{\240$\240a\240q\330\014\017\210u\220D\230\006\230d\240&\250\003\2501\330\020\027\220t\2301\230D\240\005\240Q\240g\250R\250s\260!\2601\330\014\017\210s\220!\2206\230\022\2301\330\020\027\220q\330\010\017\210q\200\001\330\004\n\210+\220Q\320\004+\320+=\270Q\360&\000\t\014\2101\330\014\026\220d\230'\240\031\250%\250q\260\007\260t\270:\300Q\340\014\026\220d\230'\240\031\250+\260Q\260g\270T\300\032\3101\330\010\024\220C\220q\230\001\330\010\013\210:\220R\220q\330\014\017\210w\220d\230*\240B\240a\330\020\026\220j\240\001\320!J\310\"\310A\330\014\023\2207\230!\2301\330\010\017\210q\320\000\034\320\034-\250Q\360\020\000\005\014\2104\210v\220Q\330\004\013\210:\220Q\220a\330\004\020\320\020!\240\021\240&\250\014\260A\340\004\007\200z\220\023\220A\330\010\017\210q\220\004\220A\330\004\007\200z\220\023\220A\330\010\014\210E\220\032\2301\230J\240a\330\010\017\210q\220\004\220A\330\004\007\200z\220\023\220A\330\010\014\210E\220\032\2301\230J\240a\330\010\017\210q\220\004\220A\330\004\007\200z\220\023\220A\330\010\014\210E\220\032\2301\230J\240a\330\010\014""\210E\220\032\2301\230J\240a\330\010\017\210q\220\004\220A\330\t\023\2203\220a\330\010\014\210E\220\032\2301\230J\240a\330\010\017\210q\220\004\220A\330\t\023\2203\220a\330\010\014\210E\220\032\2301\230J\240a\330\010\017\210q\220\004\220A\330\t\023\2203\220a\330\010\017\210q\220\004\220G\2304\230q\340\010\017\210q\330\r\021\220\025\220e\2301\230M\250\021\330\r\021\220\025\220e\2301\230M\250\021\200\001\360\010\000\005\016\210T\220\027\230\004\230A\330\004\014\210G\2201\220F\230,\240a\330\004\007\200v\210W\220E\230\024\230Q\330\010\022\220!\330\010\027\220q\340\010\030\230\001\330\004\007\200q\330\010\017\320\017/\250t\2601\260G\270;\300g\310Q\340\010\017\320\017/\250t\2601\260G\270;\300a\200\001\360\010\000\005\016\210T\220\030\230\024\230\\\250\024\250Q\330\004\014\210G\2201\220F\230,\240a\330\004\007\200v\210W\220E\230\024\230Q\330\010\022\220!\330\010\027\220q\340\010\030\230\001\330\004\007\200q\330\010\017\320\017.\250d\260!\2607\270+\300W\310A\340\010\017\320\017.\250d\260!\2607\270+\300Q\320\004'\320'@\300\001\320\004 \240\001\340\010\t\330\014\022\220$\220a\220q\330\014\017\210t\2203\220a\330\020\026\220a\330\014\023\2201\330\017\020\330\014\023\2201\200\001\340\004\037\230q\320 0\260\013\270;\300k\320QR\330\004\023\220>\240\030\250\021\250!\330\004\007\200|\2207\230!\330\0100\260\001\3201B\300.\320PQ\330\004\013\2101\200\001\340\004\037\230q\320 0\260\013\270;\300k\320QR\330\004\023\220=\240\010\250\001\250\021\330\004\007\200|\2207\230!\330\010/\250q\3200@\300\016\310a\330\004\013\2101\320\004\037\230q\330\010\t\330\014\023\2204\220q\230\001\330\017\020\330\014\023\2201\320\004'\240q\360 \000\t\014\2104\210v\220S\320\030+\320+@\300\001\300\021\300$\300g\310Y\320VW\330\014\022\220/\240\021\240!\340\010\013\2101\330\014\034\230A\320\0350\260\004\260A\340\014\037\230q\320 3\2604\260q\320\004\027\220q\360\022\000\t\020\320\017!\240\021\320\"5\260T\270\027\300\001\330\010\031\230\024\230Q\230f\240D\250\001\320\004'\240q\360*\000\t\014\210?\230!\320\033.\250d""\260'\270\023\270A\330\014\022\220&\230\001\230\021\330\014\r\340\010\013\2104\210u\220M\240\023\240A\330\014\017\210q\330\020#\2401\320$7\260t\2701\330\014\r\360\010\000\t\014\2104\210u\220L\240\006\240c\250\021\330\014\033\2304\230u\240A\330\014\030\230\014\240A\340\014\022\220*\230C\230q\330\020\034\230L\250\001\330\020*\250!\2504\250w\260a\330\020\037\230q\340\014&\240a\240t\2507\260$\260e\2701\330\010\033\2301\320\034/\250t\2601\320\000\027\320\027(\250\001\330\004\007\200t\2101\330\010\016\210j\230\001\230\021\330\004\013\320\013\034\230A\230S\240\001\240\027\250\001\250\030\260\033\270A\270Q\200\001\330\n\013\330\020\021\330\004\n\210!\330\005\006\330\004\007\200t\2101\330\010\017\210z\230\021\230!\340\013\014\330\004\016\210b\220\010\230\001\320\0315\260R\260q\340\004\017\210q\330\004\017\210q\330\004\017\210q\330\004\010\210\t\220\027\230\t\240\021\240!\330\010\013\2105\220\001\220\023\220C\220q\330\014\027\220q\330\r\022\220!\2203\220c\230\021\330\014\027\220q\330\r\022\220!\2203\220c\230\021\330\014\027\220q\340\010\013\2109\220D\230\t\240\024\240Q\330\014\r\340\004\007\200y\220\004\220I\230T\240\021\330\010\017\210q\330\t\022\220$\220d\230)\2404\240q\330\010\017\210q\330\t\022\220$\220i\230t\2404\240q\330\010\017\210q\330\t\022\220$\220d\230)\2404\240t\2501\330\010\017\210q\330\t\022\220$\220d\230!\330\010\017\210q\330\t\r\210Y\220d\230!\330\010\017\210q\330\t\022\220$\220a\330\010\017\210q\340\010\017\210q\320\004+\250=\270\001\360\"\000\t\020\210t\2205\230\n\240!\2407\250)\2601\320\000\037\230x\240q\360 \000\005\010\200v\210S\220\002\220*\230A\320\035:\270&\300\006\300b\310\001\330\010\017\210u\220F\230!\2302\230V\2401\330\004\n\210!\330\004\n\210*\220A\220Q"; + PyObject *data = NULL; + CYTHON_UNUSED_VAR(__Pyx_DecompressString); + #endif + PyObject **stringtab = __pyx_mstate->__pyx_string_tab; + Py_ssize_t pos = 0; + for (int i = 0; i < 425; i++) { + Py_ssize_t bytes_length = index[i].length; + PyObject *string = PyUnicode_DecodeUTF8(bytes + pos, bytes_length, NULL); + if (likely(string) && i >= 110) PyUnicode_InternInPlace(&string); + if (unlikely(!string)) { + Py_XDECREF(data); + __PYX_ERR(0, 1, __pyx_L1_error) + } + stringtab[i] = string; + pos += bytes_length; + } + for (int i = 425; i < 489; i++) { + Py_ssize_t bytes_length = index[i].length; + PyObject *string = PyBytes_FromStringAndSize(bytes + pos, bytes_length); + stringtab[i] = string; + pos += bytes_length; + if (unlikely(!string)) { + Py_XDECREF(data); + __PYX_ERR(0, 1, __pyx_L1_error) + } + } + Py_XDECREF(data); + for (Py_ssize_t i = 0; i < 489; i++) { + if (unlikely(PyObject_Hash(stringtab[i]) == -1)) { + __PYX_ERR(0, 1, __pyx_L1_error) + } + } + #if CYTHON_IMMORTAL_CONSTANTS + { + PyObject **table = stringtab + 425; + for (Py_ssize_t i=0; i<64; ++i) { + #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING + Py_SET_REFCNT(table[i], _Py_IMMORTAL_REFCNT_LOCAL); + #else + Py_SET_REFCNT(table[i], _Py_IMMORTAL_INITIAL_REFCNT); + #endif + } + } + #endif + } + { + PyObject **numbertab = __pyx_mstate->__pyx_number_tab; + double const c_constants[] = {250e+7}; + for (int i = 0; i < 1; i++) { + numbertab[i] = PyFloat_FromDouble(c_constants[i]); + if (unlikely(!numbertab[i])) __PYX_ERR(0, 1, __pyx_L1_error) + } + } + { + PyObject **numbertab = __pyx_mstate->__pyx_number_tab + 1; + int8_t const cint_constants_1[] = {0,1,2,4,5}; + int32_t const cint_constants_4[] = {111138658L,207486590L}; + for (int i = 0; i < 7; i++) { + numbertab[i] = PyLong_FromLong((i < 5 ? cint_constants_1[i - 0] : cint_constants_4[i - 5])); + if (unlikely(!numbertab[i])) __PYX_ERR(0, 1, __pyx_L1_error) + } + } + #if CYTHON_IMMORTAL_CONSTANTS + { + PyObject **table = __pyx_mstate->__pyx_number_tab; + for (Py_ssize_t i=0; i<8; ++i) { + #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING + Py_SET_REFCNT(table[i], _Py_IMMORTAL_REFCNT_LOCAL); + #else + Py_SET_REFCNT(table[i], _Py_IMMORTAL_INITIAL_REFCNT); + #endif + } + } + #endif + return 0; + __pyx_L1_error:; + return -1; +} +/* #### Code section: init_codeobjects ### */ +typedef struct { + unsigned int argcount : 3; + unsigned int num_posonly_args : 1; + unsigned int num_kwonly_args : 1; + unsigned int nlocals : 4; + unsigned int flags : 10; + unsigned int first_line : 11; +} __Pyx_PyCode_New_function_description; +/* NewCodeObj.proto */ +static PyObject* __Pyx_PyCode_New( + const __Pyx_PyCode_New_function_description descr, + PyObject * const *varnames, + PyObject *filename, + PyObject *funcname, + PyObject *line_table, + PyObject *tuple_dedup_map +); + + +static int __Pyx_CreateCodeObjects(__pyx_mstatetype *__pyx_mstate) { + PyObject* tuple_dedup_map = PyDict_New(); + if (unlikely(!tuple_dedup_map)) return -1; + { + const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS|CO_GENERATOR), 16}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_attr, __pyx_mstate->__pyx_n_u_str_len, __pyx_mstate->__pyx_n_u_attributes_2, __pyx_mstate->__pyx_n_u_key}; + __pyx_mstate_global->__pyx_codeobj_tab[0] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_lexbor_attrs_pxi, __pyx_mstate->__pyx_n_u_iter_2, __pyx_mstate->__pyx_kp_b_iso88591_A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[0])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS|CO_GENERATOR), 83}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_key}; + __pyx_mstate_global->__pyx_codeobj_tab[1] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_lexbor_attrs_pxi, __pyx_mstate->__pyx_n_u_items, __pyx_mstate->__pyx_kp_b_iso88591_A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[1])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS|CO_GENERATOR), 87}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_key}; + __pyx_mstate_global->__pyx_codeobj_tab[2] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_lexbor_attrs_pxi, __pyx_mstate->__pyx_n_u_values, __pyx_mstate->__pyx_kp_b_iso88591_A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[2])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS|CO_GENERATOR), 451}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_include_text, __pyx_mstate->__pyx_n_u_skip_empty, __pyx_mstate->__pyx_n_u_node, __pyx_mstate->__pyx_n_u_next_node}; + __pyx_mstate_global->__pyx_codeobj_tab[3] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_lexbor_node_pxi, __pyx_mstate->__pyx_n_u_iter, __pyx_mstate->__pyx_kp_b_iso88591__14, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[3])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS|CO_GENERATOR), 606}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_include_text, __pyx_mstate->__pyx_n_u_skip_empty, __pyx_mstate->__pyx_n_u_root, __pyx_mstate->__pyx_n_u_node, __pyx_mstate->__pyx_n_u_lxb_node}; + __pyx_mstate_global->__pyx_codeobj_tab[4] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_lexbor_node_pxi, __pyx_mstate->__pyx_n_u_traverse, __pyx_mstate->__pyx_kp_b_iso88591_DA, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[4])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 19}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_html, __pyx_mstate->__pyx_n_u_decode_errors, __pyx_mstate->__pyx_n_u_bytes_html, __pyx_mstate->__pyx_n_u_html_len}; + __pyx_mstate_global->__pyx_codeobj_tab[5] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_utils_pxi, __pyx_mstate->__pyx_n_u_preprocess_input, __pyx_mstate->__pyx_kp_b_iso88591_1_z_a_T_1F_Q_iq_D_a_s_1_y_j___q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[5])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 32}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_tag, __pyx_mstate->__pyx_n_u_parser_cls}; + __pyx_mstate_global->__pyx_codeobj_tab[6] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_utils_pxi, __pyx_mstate->__pyx_n_u_do_create_tag, __pyx_mstate->__pyx_kp_b_iso88591_t1_j_AS_AQ, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[6])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 9, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 38}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_html, __pyx_mstate->__pyx_n_u_parser_cls, __pyx_mstate->__pyx_n_u_tree, __pyx_mstate->__pyx_n_u_re, __pyx_mstate->__pyx_n_u_html_re, __pyx_mstate->__pyx_n_u_has_html, __pyx_mstate->__pyx_n_u_has_head, __pyx_mstate->__pyx_n_u_has_body, __pyx_mstate->__pyx_n_u_match}; + __pyx_mstate_global->__pyx_codeobj_tab[7] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_utils_pxi, __pyx_mstate->__pyx_n_u_get_fragment_type, __pyx_mstate->__pyx_kp_b_iso88591_t1_z_b_5Rq_q_q_q_5_Cq_q_3c_q_3c, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[7])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 81}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_html, __pyx_mstate->__pyx_n_u_parser_cls, __pyx_mstate->__pyx_n_u_tree, __pyx_mstate->__pyx_n_u_frag_type}; + __pyx_mstate_global->__pyx_codeobj_tab[8] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_utils_pxi, __pyx_mstate->__pyx_n_u_do_parse_fragment, __pyx_mstate->__pyx_kp_b_iso88591_Q_4vQ_Qa_A_z_A_q_A_z_A_E_1Ja_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[8])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 80}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self}; + __pyx_mstate_global->__pyx_codeobj_tab[9] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_lexbor_attrs_pxi, __pyx_mstate->__pyx_n_u_keys, __pyx_mstate->__pyx_kp_b_iso88591_A_t9A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[9])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 91}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_key, __pyx_mstate->__pyx_n_u_default}; + __pyx_mstate_global->__pyx_codeobj_tab[10] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_lexbor_attrs_pxi, __pyx_mstate->__pyx_n_u_get, __pyx_mstate->__pyx_kp_b_iso88591_q_4q_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[10])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 97}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_key, __pyx_mstate->__pyx_n_u_default, __pyx_mstate->__pyx_n_u_val}; + __pyx_mstate_global->__pyx_codeobj_tab[11] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_lexbor_attrs_pxi, __pyx_mstate->__pyx_n_u_sget, __pyx_mstate->__pyx_kp_b_iso88591_aq_t3a_a_1_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[11])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self}; + __pyx_mstate_global->__pyx_codeobj_tab[12] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_mstate->__pyx_kp_b_iso88591_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[12])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state}; + __pyx_mstate_global->__pyx_codeobj_tab[13] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_mstate->__pyx_kp_b_iso88591_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[13])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 129}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_str_len, __pyx_mstate->__pyx_n_u_text, __pyx_mstate->__pyx_n_u_unicode_text}; + __pyx_mstate_global->__pyx_codeobj_tab[14] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_lexbor_node_pxi, __pyx_mstate->__pyx_n_u_text_lexbor, __pyx_mstate->__pyx_kp_b_iso88591_A_a_WAQ_6_A_aq_t7_1_e3DA_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[14])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {5, 0, 0, 9, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 146}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_deep, __pyx_mstate->__pyx_n_u_separator, __pyx_mstate->__pyx_n_u_strip, __pyx_mstate->__pyx_n_u_skip_empty, __pyx_mstate->__pyx_n_u_text, __pyx_mstate->__pyx_n_u_node, __pyx_mstate->__pyx_n_u_container, __pyx_mstate->__pyx_n_u_py_text}; + __pyx_mstate_global->__pyx_codeobj_tab[15] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_lexbor_node_pxi, __pyx_mstate->__pyx_n_u_text, __pyx_mstate->__pyx_kp_b_iso88591_1_WWX2_8_E_4q_Qk_AT_AR_ffg_5_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[15])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 214}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_query}; + __pyx_mstate_global->__pyx_codeobj_tab[16] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_lexbor_node_pxi, __pyx_mstate->__pyx_n_u_css, __pyx_mstate->__pyx_kp_b_iso88591_A_t7_5_Ja, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[16])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 237}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_query, __pyx_mstate->__pyx_n_u_default, __pyx_mstate->__pyx_n_u_strict, __pyx_mstate->__pyx_n_u_results, __pyx_mstate->__pyx_n_u_n_results}; + __pyx_mstate_global->__pyx_codeobj_tab[17] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_lexbor_node_pxi, __pyx_mstate->__pyx_n_u_css_first, __pyx_mstate->__pyx_kp_b_iso88591_Q_1_d_q_t_Q_d_QgT_1_Cq_Rq_wd_Ba, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[17])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 267}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_selectors, __pyx_mstate->__pyx_n_u_selector}; + __pyx_mstate_global->__pyx_codeobj_tab[18] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_lexbor_node_pxi, __pyx_mstate->__pyx_n_u_any_css_matches, __pyx_mstate->__pyx_kp_b_iso88591_A_L_t7_q_q_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[18])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 274}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_selector}; + __pyx_mstate_global->__pyx_codeobj_tab[19] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_lexbor_node_pxi, __pyx_mstate->__pyx_n_u_css_matches, __pyx_mstate->__pyx_kp_b_iso88591_A_t1D_y_AZq, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[19])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 313}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_recursive}; + __pyx_mstate_global->__pyx_codeobj_tab[20] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_lexbor_node_pxi, __pyx_mstate->__pyx_n_u_decompose, __pyx_mstate->__pyx_kp_b_iso88591_q_4vS_gYVW_1_A_0_A_q_34q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[20])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 337}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_tags, __pyx_mstate->__pyx_n_u_recursive, __pyx_mstate->__pyx_n_u_element, __pyx_mstate->__pyx_n_u_tag}; + __pyx_mstate_global->__pyx_codeobj_tab[21] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_lexbor_node_pxi, __pyx_mstate->__pyx_n_u_strip_tags, __pyx_mstate->__pyx_kp_b_iso88591_5Q_G1_4t1A_z_A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[21])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 492}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_delete_empty, __pyx_mstate->__pyx_n_u_next_node, __pyx_mstate->__pyx_n_u_current_node}; + __pyx_mstate_global->__pyx_codeobj_tab[22] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_lexbor_node_pxi, __pyx_mstate->__pyx_n_u_unwrap, __pyx_mstate->__pyx_kp_b_iso88591_q_d_A_4uM_A_q_1_7t1_4uL_c_4uA_A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[22])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 536}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_tags, __pyx_mstate->__pyx_n_u_delete_empty, __pyx_mstate->__pyx_n_u_element, __pyx_mstate->__pyx_n_u_tag}; + __pyx_mstate_global->__pyx_codeobj_tab[23] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_lexbor_node_pxi, __pyx_mstate->__pyx_n_u_unwrap_tags, __pyx_mstate->__pyx_kp_b_iso88591_9_G1_4t1A_waq, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[23])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 8, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 563}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_node, __pyx_mstate->__pyx_n_u_next_node, __pyx_mstate->__pyx_n_u_left_text, __pyx_mstate->__pyx_n_u_right_text, __pyx_mstate->__pyx_n_u_left_length, __pyx_mstate->__pyx_n_u_right_length, __pyx_mstate->__pyx_n_u_combined}; + __pyx_mstate_global->__pyx_codeobj_tab[24] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_lexbor_node_pxi, __pyx_mstate->__pyx_n_u_merge_text_nodes, __pyx_mstate->__pyx_kp_b_iso88591_A_D_Q_e3a_A_t6_34t6_T_fTWWX_5Qd, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[24])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 644}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_value}; + __pyx_mstate_global->__pyx_codeobj_tab[25] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_lexbor_node_pxi, __pyx_mstate->__pyx_n_u_replace_with_str, __pyx_mstate->__pyx_kp_b_iso88591_A_Qhe7_K1_WIQ_Qa_y_1_oQa_at7_q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[25])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 644}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_value}; + __pyx_mstate_global->__pyx_codeobj_tab[26] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_lexbor_node_pxi, __pyx_mstate->__pyx_n_u_replace_with_bytes, __pyx_mstate->__pyx_kp_b_iso88591_A_Qhe7_K1_WIQ_Qa_y_1_oQa_at7_q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[26])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 644}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_value}; + __pyx_mstate_global->__pyx_codeobj_tab[27] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_lexbor_node_pxi, __pyx_mstate->__pyx_n_u_replace_with_LexborNode, __pyx_mstate->__pyx_kp_b_iso88591_A_Qhe7_K1_WIQ_Qa_y_1_oQa_at7_q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[27])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 644}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_value, __pyx_mstate->__pyx_n_u_new_node, __pyx_mstate->__pyx_n_u_bytes_val}; + __pyx_mstate_global->__pyx_codeobj_tab[28] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_lexbor_node_pxi, __pyx_mstate->__pyx_n_u_replace_with_str, __pyx_mstate->__pyx_kp_b_iso88591_A_Qhe7_K1_WIQ_Qa_y_1_oQa_at7_q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[28])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 696}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_value}; + __pyx_mstate_global->__pyx_codeobj_tab[29] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_lexbor_node_pxi, __pyx_mstate->__pyx_n_u_insert_before_str, __pyx_mstate->__pyx_kp_b_iso88591_A_Qhe7_K1_WIQ_Qa_y_1_oQa_at7_q_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[29])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 696}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_value}; + __pyx_mstate_global->__pyx_codeobj_tab[30] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_lexbor_node_pxi, __pyx_mstate->__pyx_n_u_insert_before_bytes, __pyx_mstate->__pyx_kp_b_iso88591_A_Qhe7_K1_WIQ_Qa_y_1_oQa_at7_q_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[30])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 696}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_value}; + __pyx_mstate_global->__pyx_codeobj_tab[31] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_lexbor_node_pxi, __pyx_mstate->__pyx_n_u_insert_before_LexborNode, __pyx_mstate->__pyx_kp_b_iso88591_A_Qhe7_K1_WIQ_Qa_y_1_oQa_at7_q_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[31])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 696}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_value, __pyx_mstate->__pyx_n_u_new_node, __pyx_mstate->__pyx_n_u_bytes_val}; + __pyx_mstate_global->__pyx_codeobj_tab[32] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_lexbor_node_pxi, __pyx_mstate->__pyx_n_u_insert_before_str, __pyx_mstate->__pyx_kp_b_iso88591_A_Qhe7_K1_WIQ_Qa_y_1_oQa_at7_q_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[32])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 747}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_value}; + __pyx_mstate_global->__pyx_codeobj_tab[33] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_lexbor_node_pxi, __pyx_mstate->__pyx_n_u_insert_after_str, __pyx_mstate->__pyx_kp_b_iso88591_A_Qhe7_K1_WIQ_Qa_y_1_oQa_Qd_q_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[33])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 747}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_value}; + __pyx_mstate_global->__pyx_codeobj_tab[34] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_lexbor_node_pxi, __pyx_mstate->__pyx_n_u_insert_after_bytes, __pyx_mstate->__pyx_kp_b_iso88591_A_Qhe7_K1_WIQ_Qa_y_1_oQa_Qd_q_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[34])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 747}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_value}; + __pyx_mstate_global->__pyx_codeobj_tab[35] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_lexbor_node_pxi, __pyx_mstate->__pyx_n_u_insert_after_LexborNode, __pyx_mstate->__pyx_kp_b_iso88591_A_Qhe7_K1_WIQ_Qa_y_1_oQa_Qd_q_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[35])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 747}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_value, __pyx_mstate->__pyx_n_u_new_node, __pyx_mstate->__pyx_n_u_bytes_val}; + __pyx_mstate_global->__pyx_codeobj_tab[36] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_lexbor_node_pxi, __pyx_mstate->__pyx_n_u_insert_after_str, __pyx_mstate->__pyx_kp_b_iso88591_A_Qhe7_K1_WIQ_Qa_y_1_oQa_Qd_q_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[36])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 798}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_value}; + __pyx_mstate_global->__pyx_codeobj_tab[37] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_lexbor_node_pxi, __pyx_mstate->__pyx_n_u_insert_child_str, __pyx_mstate->__pyx_kp_b_iso88591_A_Qhe7_K1_WIQ_Qa_y_1_oQa_Qd_q_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[37])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 798}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_value}; + __pyx_mstate_global->__pyx_codeobj_tab[38] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_lexbor_node_pxi, __pyx_mstate->__pyx_n_u_insert_child_bytes, __pyx_mstate->__pyx_kp_b_iso88591_A_Qhe7_K1_WIQ_Qa_y_1_oQa_Qd_q_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[38])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 798}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_value}; + __pyx_mstate_global->__pyx_codeobj_tab[39] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_lexbor_node_pxi, __pyx_mstate->__pyx_n_u_insert_child_LexborNode, __pyx_mstate->__pyx_kp_b_iso88591_A_Qhe7_K1_WIQ_Qa_y_1_oQa_Qd_q_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[39])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 798}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_value, __pyx_mstate->__pyx_n_u_new_node, __pyx_mstate->__pyx_n_u_bytes_val}; + __pyx_mstate_global->__pyx_codeobj_tab[40] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_lexbor_node_pxi, __pyx_mstate->__pyx_n_u_insert_child_str, __pyx_mstate->__pyx_kp_b_iso88591_A_Qhe7_K1_WIQ_Qa_y_1_oQa_Qd_q_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[40])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 7, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 872}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_query, __pyx_mstate->__pyx_n_u_node, __pyx_mstate->__pyx_n_u_nodes, __pyx_mstate->__pyx_n_u_text_nodes, __pyx_mstate->__pyx_n_u_node_text, __pyx_mstate->__pyx_n_u_text}; + __pyx_mstate_global->__pyx_codeobj_tab[41] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_lexbor_node_pxi, __pyx_mstate->__pyx_n_u_scripts_contain, __pyx_mstate->__pyx_kp_b_iso88591_A_4w_3a_D_y_Qj_D_Qe1_1_gQa_a_HD, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[41])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 8, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 898}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_queries, __pyx_mstate->__pyx_n_u_node, __pyx_mstate->__pyx_n_u_nodes, __pyx_mstate->__pyx_n_u_src_nodes, __pyx_mstate->__pyx_n_u_node_src, __pyx_mstate->__pyx_n_u_text, __pyx_mstate->__pyx_n_u_query}; + __pyx_mstate_global->__pyx_codeobj_tab[42] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_lexbor_node_pxi, __pyx_mstate->__pyx_n_u_script_srcs_contain, __pyx_mstate->__pyx_kp_b_iso88591_A_4w_Q_D_y_Qj_4vT_1_WAQ_Q_HD_q_6, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[42])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 924}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_recursive}; + __pyx_mstate_global->__pyx_codeobj_tab[43] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_lexbor_node_pxi, __pyx_mstate->__pyx_n_u_remove, __pyx_mstate->__pyx_kp_b_iso88591_A_Jaq, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[43])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 928}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_query}; + __pyx_mstate_global->__pyx_codeobj_tab[44] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_lexbor_node_pxi, __pyx_mstate->__pyx_n_u_select, __pyx_mstate->__pyx_kp_b_iso88591_1_Qd_D, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[44])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1044}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_node}; + __pyx_mstate_global->__pyx_codeobj_tab[45] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_lexbor_node_pxi, __pyx_mstate->__pyx_n_u_clone, __pyx_mstate->__pyx_kp_b_iso88591_q_5T_QfD, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[45])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self}; + __pyx_mstate_global->__pyx_codeobj_tab[46] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_mstate->__pyx_kp_b_iso88591_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[46])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state}; + __pyx_mstate_global->__pyx_codeobj_tab[47] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_mstate->__pyx_kp_b_iso88591_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[47])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1110}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_node_text}; + __pyx_mstate_global->__pyx_codeobj_tab[48] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_lexbor_node_pxi, __pyx_mstate->__pyx_n_u_append, __pyx_mstate->__pyx_kp_b_iso88591_A_4q_6_Bd_Bd, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[48])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_state, __pyx_mstate->__pyx_n_u_dict_2, __pyx_mstate->__pyx_n_u_use_setstate}; + __pyx_mstate_global->__pyx_codeobj_tab[49] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_mstate->__pyx_kp_b_iso88591_T_Q_G1F_a_vWE_Q_q_q_d_7_WA_d_7, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[49])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 16}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state}; + __pyx_mstate_global->__pyx_codeobj_tab[50] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_mstate->__pyx_kp_b_iso88591_1F, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[50])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 41}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_query, __pyx_mstate->__pyx_n_u_node}; + __pyx_mstate_global->__pyx_codeobj_tab[51] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_lexbor_selection_pxi, __pyx_mstate->__pyx_n_u_find, __pyx_mstate->__pyx_kp_b_iso88591_A_t6_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[51])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 44}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_query, __pyx_mstate->__pyx_n_u_node}; + __pyx_mstate_global->__pyx_codeobj_tab[52] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_lexbor_selection_pxi, __pyx_mstate->__pyx_n_u_find_first, __pyx_mstate->__pyx_kp_b_iso88591_A_t6_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[52])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 47}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_query, __pyx_mstate->__pyx_n_u_node, __pyx_mstate->__pyx_n_u_only_first}; + __pyx_mstate_global->__pyx_codeobj_tab[53] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_lexbor_selection_pxi, __pyx_mstate->__pyx_n_u_find_2, __pyx_mstate->__pyx_kp_b_iso88591_A_4z_1A_e7_1_0_Yo_Zbbeeffg_Q_A_K, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[53])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 75}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_query, __pyx_mstate->__pyx_n_u_node}; + __pyx_mstate_global->__pyx_codeobj_tab[54] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_lexbor_selection_pxi, __pyx_mstate->__pyx_n_u_any_matches, __pyx_mstate->__pyx_kp_b_iso88591_DA_4z_1A_e7_1_0_Yo_Zccffggh_Q_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[54])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self}; + __pyx_mstate_global->__pyx_codeobj_tab[55] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_mstate->__pyx_kp_b_iso88591_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[55])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state}; + __pyx_mstate_global->__pyx_codeobj_tab[56] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_mstate->__pyx_kp_b_iso88591_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[56])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 127}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_query}; + __pyx_mstate_global->__pyx_codeobj_tab[57] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_lexbor_selection_pxi, __pyx_mstate->__pyx_n_u_css, __pyx_mstate->__pyx_kp_b_iso88591_A_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[57])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {5, 0, 0, 8, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 141}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_text, __pyx_mstate->__pyx_n_u_deep, __pyx_mstate->__pyx_n_u_separator, __pyx_mstate->__pyx_n_u_strip, __pyx_mstate->__pyx_n_u_nodes, __pyx_mstate->__pyx_n_u_node, __pyx_mstate->__pyx_n_u_node_text}; + __pyx_mstate_global->__pyx_codeobj_tab[58] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_lexbor_selection_pxi, __pyx_mstate->__pyx_n_u_text_contains, __pyx_mstate->__pyx_kp_b_iso88591_00DOS_HD_E_vZ_z_U_Q_WAQ_IQ_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[58])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {5, 0, 0, 7, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 151}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_text, __pyx_mstate->__pyx_n_u_deep, __pyx_mstate->__pyx_n_u_separator, __pyx_mstate->__pyx_n_u_strip, __pyx_mstate->__pyx_n_u_node, __pyx_mstate->__pyx_n_u_node_text}; + __pyx_mstate_global->__pyx_codeobj_tab[59] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_lexbor_selection_pxi, __pyx_mstate->__pyx_n_u_any_text_contains, __pyx_mstate->__pyx_kp_b_iso88591_44H_Waab_HD_E_vZ_z_U_Q_q_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[59])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 7, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 160}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_attribute, __pyx_mstate->__pyx_n_u_length, __pyx_mstate->__pyx_n_u_start, __pyx_mstate->__pyx_n_u_nodes, __pyx_mstate->__pyx_n_u_node, __pyx_mstate->__pyx_n_u_attr}; + __pyx_mstate_global->__pyx_codeobj_tab[60] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_lexbor_selection_pxi, __pyx_mstate->__pyx_n_u_attribute_longer_than, __pyx_mstate->__pyx_kp_b_iso88591_LIUV_HD_4_aq_t1_uD_d_1_t1D_QgRs, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[60])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 177}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_attribute, __pyx_mstate->__pyx_n_u_length, __pyx_mstate->__pyx_n_u_start, __pyx_mstate->__pyx_n_u_node, __pyx_mstate->__pyx_n_u_attr}; + __pyx_mstate_global->__pyx_codeobj_tab[61] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_lexbor_selection_pxi, __pyx_mstate->__pyx_n_u_any_attribute_longer_than, __pyx_mstate->__pyx_kp_b_iso88591_PPYYZ_HD_4_aq_uD_d_1_t1D_QgRs_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[61])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_state, __pyx_mstate->__pyx_n_u_dict_2, __pyx_mstate->__pyx_n_u_use_setstate}; + __pyx_mstate_global->__pyx_codeobj_tab[62] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_mstate->__pyx_kp_b_iso88591_T_A_G1F_a_vWE_Q_q_q_t1G_gQ_t1G, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[62])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 16}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state}; + __pyx_mstate_global->__pyx_codeobj_tab[63] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_mstate->__pyx_kp_b_iso88591_AV1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[63])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 19}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_html, __pyx_mstate->__pyx_n_u_decode_errors, __pyx_mstate->__pyx_n_u_bytes_html, __pyx_mstate->__pyx_n_u_html_len}; + __pyx_mstate_global->__pyx_codeobj_tab[64] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_lexbor_utils_pxi, __pyx_mstate->__pyx_n_u_preprocess_input, __pyx_mstate->__pyx_kp_b_iso88591_1_z_a_T_1F_Q_iq_D_a_s_1_y_j___q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[64])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 32}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_tag, __pyx_mstate->__pyx_n_u_parser_cls}; + __pyx_mstate_global->__pyx_codeobj_tab[65] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_lexbor_utils_pxi, __pyx_mstate->__pyx_n_u_do_create_tag, __pyx_mstate->__pyx_kp_b_iso88591_t1_j_AS_AQ, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[65])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 9, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 38}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_html, __pyx_mstate->__pyx_n_u_parser_cls, __pyx_mstate->__pyx_n_u_tree, __pyx_mstate->__pyx_n_u_re, __pyx_mstate->__pyx_n_u_html_re, __pyx_mstate->__pyx_n_u_has_html, __pyx_mstate->__pyx_n_u_has_head, __pyx_mstate->__pyx_n_u_has_body, __pyx_mstate->__pyx_n_u_match}; + __pyx_mstate_global->__pyx_codeobj_tab[66] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_lexbor_utils_pxi, __pyx_mstate->__pyx_n_u_get_fragment_type, __pyx_mstate->__pyx_kp_b_iso88591_t1_z_b_5Rq_q_q_q_5_Cq_q_3c_q_3c, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[66])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 81}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_html, __pyx_mstate->__pyx_n_u_parser_cls, __pyx_mstate->__pyx_n_u_tree, __pyx_mstate->__pyx_n_u_frag_type}; + __pyx_mstate_global->__pyx_codeobj_tab[67] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_lexbor_utils_pxi, __pyx_mstate->__pyx_n_u_do_parse_fragment, __pyx_mstate->__pyx_kp_b_iso88591_Q_4vQ_Qa_A_z_A_q_A_z_A_E_1Ja_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[67])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 6}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_tag}; + __pyx_mstate_global->__pyx_codeobj_tab[68] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_lexbor_util_pxi, __pyx_mstate->__pyx_n_u_create_tag, __pyx_mstate->__pyx_kp_b_iso88591_A_1Cq_q_E, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[68])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 16}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_html}; + __pyx_mstate_global->__pyx_codeobj_tab[69] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_lexbor_util_pxi, __pyx_mstate->__pyx_n_u_parse_fragment, __pyx_mstate->__pyx_kp_b_iso88591_AV1_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[69])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 27}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_text, __pyx_mstate->__pyx_n_u_msg, __pyx_mstate->__pyx_n_u_match}; + __pyx_mstate_global->__pyx_codeobj_tab[70] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_lexbor_util_pxi, __pyx_mstate->__pyx_n_u_extract_html_comment, __pyx_mstate->__pyx_kp_b_iso88591_xq_vS_A_b_uF_2V1_AQ, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[70])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 8, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 281}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_name_2, __pyx_mstate->__pyx_n_u_collection, __pyx_mstate->__pyx_n_u_status, __pyx_mstate->__pyx_n_u_pybyte_name, __pyx_mstate->__pyx_n_u_result, __pyx_mstate->__pyx_n_u_i, __pyx_mstate->__pyx_n_u_node}; + __pyx_mstate_global->__pyx_codeobj_tab[71] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_lexbor_pyx, __pyx_mstate->__pyx_n_u_tags, __pyx_mstate->__pyx_kp_b_iso88591_A_4q_AQ_3avRq_AQ_0_d_Q_AQd_c_1_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[71])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {5, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 335}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_deep, __pyx_mstate->__pyx_n_u_separator, __pyx_mstate->__pyx_n_u_strip, __pyx_mstate->__pyx_n_u_skip_empty}; + __pyx_mstate_global->__pyx_codeobj_tab[72] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_lexbor_pyx, __pyx_mstate->__pyx_n_u_text, __pyx_mstate->__pyx_kp_b_iso88591_A_Q_a_1_4vS_1_t5_Qe6_fG_VW, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[72])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 384}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_query}; + __pyx_mstate_global->__pyx_codeobj_tab[73] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_lexbor_pyx, __pyx_mstate->__pyx_n_u_css, __pyx_mstate->__pyx_kp_b_iso88591_A_t5_AQ, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[73])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 406}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_query, __pyx_mstate->__pyx_n_u_default, __pyx_mstate->__pyx_n_u_strict}; + __pyx_mstate_global->__pyx_codeobj_tab[74] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_lexbor_pyx, __pyx_mstate->__pyx_n_u_css_first, __pyx_mstate->__pyx_kp_b_iso88591_t5_7_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[74])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 8, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 425}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_tags, __pyx_mstate->__pyx_n_u_recursive, __pyx_mstate->__pyx_n_u_collection, __pyx_mstate->__pyx_n_u_status, __pyx_mstate->__pyx_n_u_tag, __pyx_mstate->__pyx_n_u_pybyte_name, __pyx_mstate->__pyx_n_u_i}; + __pyx_mstate_global->__pyx_codeobj_tab[75] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_lexbor_pyx, __pyx_mstate->__pyx_n_u_strip_tags, __pyx_mstate->__pyx_kp_b_iso88591_5Q_1_G1_WAQ_0_i_a_Q_oQa_1_d_q_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[75])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 476}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_query, __pyx_mstate->__pyx_n_u_node}; + __pyx_mstate_global->__pyx_codeobj_tab[76] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_lexbor_pyx, __pyx_mstate->__pyx_n_u_select, __pyx_mstate->__pyx_kp_b_iso88591_1_t1_1_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[76])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 497}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_selectors}; + __pyx_mstate_global->__pyx_codeobj_tab[77] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_lexbor_pyx, __pyx_mstate->__pyx_n_u_any_css_matches, __pyx_mstate->__pyx_kp_b_iso88591_A_t5, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[77])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 512}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_query}; + __pyx_mstate_global->__pyx_codeobj_tab[78] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_lexbor_pyx, __pyx_mstate->__pyx_n_u_scripts_contain, __pyx_mstate->__pyx_kp_b_iso88591_A_t5_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[78])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 529}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_queries}; + __pyx_mstate_global->__pyx_codeobj_tab[79] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_lexbor_pyx, __pyx_mstate->__pyx_n_u_script_srcs_contain, __pyx_mstate->__pyx_kp_b_iso88591_A_t5_AQ_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[79])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 546}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_selector}; + __pyx_mstate_global->__pyx_codeobj_tab[80] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_lexbor_pyx, __pyx_mstate->__pyx_n_u_css_matches, __pyx_mstate->__pyx_kp_b_iso88591_A_t5_AQ_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[80])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 561}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self}; + __pyx_mstate_global->__pyx_codeobj_tab[81] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_lexbor_pyx, __pyx_mstate->__pyx_n_u_merge_text_nodes, __pyx_mstate->__pyx_kp_b_iso88591_A_t5_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[81])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 609}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_cloned_document, __pyx_mstate->__pyx_n_u_cloned_node, __pyx_mstate->__pyx_n_u_cls}; + __pyx_mstate_global->__pyx_codeobj_tab[82] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_lexbor_pyx, __pyx_mstate->__pyx_n_u_clone, __pyx_mstate->__pyx_kp_b_iso88591_A_6a_3a_a_6a_8_nBa_s_Q_K1_nA_d_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[82])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 649}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_tags, __pyx_mstate->__pyx_n_u_delete_empty}; + __pyx_mstate_global->__pyx_codeobj_tab[83] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_lexbor_pyx, __pyx_mstate->__pyx_n_u_unwrap_tags, __pyx_mstate->__pyx_kp_b_iso88591_4A2_4z_A_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[83])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 708}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_tag, __pyx_mstate->__pyx_n_u_element, __pyx_mstate->__pyx_n_u_dom_node, __pyx_mstate->__pyx_n_u_pybyte_name}; + __pyx_mstate_global->__pyx_codeobj_tab[84] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_lexbor_pyx, __pyx_mstate->__pyx_n_u_create_node, __pyx_mstate->__pyx_kp_b_iso88591_A_4q_c_2_q_83a_B_1_a_Qj, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[84])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self}; + __pyx_mstate_global->__pyx_codeobj_tab[85] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_mstate->__pyx_kp_b_iso88591_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[85])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state}; + __pyx_mstate_global->__pyx_codeobj_tab[86] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_mstate->__pyx_kp_b_iso88591_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[86])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 4}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_pyx_type, __pyx_mstate->__pyx_n_u_pyx_checksum, __pyx_mstate->__pyx_n_u_pyx_state, __pyx_mstate->__pyx_n_u_pyx_result}; + __pyx_mstate_global->__pyx_codeobj_tab[87] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_pyx_unpickle_TextContainer, __pyx_mstate->__pyx_kp_b_iso88591_q_0_kQR_7_q0_a_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[87])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 4}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_pyx_type, __pyx_mstate->__pyx_n_u_pyx_checksum, __pyx_mstate->__pyx_n_u_pyx_state, __pyx_mstate->__pyx_n_u_pyx_result}; + __pyx_mstate_global->__pyx_codeobj_tab[88] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_pyx_unpickle_LexborSelector, __pyx_mstate->__pyx_kp_b_iso88591_q_0_kQR_7_0_1B_PQ_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[88])) goto bad; + } + Py_DECREF(tuple_dedup_map); + return 0; + bad: + Py_DECREF(tuple_dedup_map); + return -1; +} +/* #### Code section: init_globals ### */ + +static int __Pyx_InitGlobals(void) { + /* PythonCompatibility.init */ + if (likely(__Pyx_init_co_variables() == 0)); else + + if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1, __pyx_L1_error) + + /* CommonTypesMetaclass.init */ + if (likely(__pyx_CommonTypesMetaclass_init(__pyx_m) == 0)); else + + if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1, __pyx_L1_error) + + /* CachedMethodType.init */ + #if CYTHON_COMPILING_IN_LIMITED_API + { + PyObject *typesModule=NULL; + typesModule = PyImport_ImportModule("types"); + if (typesModule) { + __pyx_mstate_global->__Pyx_CachedMethodType = PyObject_GetAttrString(typesModule, "MethodType"); + Py_DECREF(typesModule); + } + } // error handling follows + #endif + + if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1, __pyx_L1_error) + + /* CythonFunctionShared.init */ + if (likely(__pyx_CyFunction_init(__pyx_m) == 0)); else + + if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1, __pyx_L1_error) + + /* FusedFunction.init */ + if (likely(__pyx_FusedFunction_init(__pyx_m) == 0)); else + + if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1, __pyx_L1_error) + + /* Generator.init */ + if (likely(__pyx_Generator_init(__pyx_m) == 0)); else + + if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1, __pyx_L1_error) + + return 0; + __pyx_L1_error:; + return -1; +} +/* #### Code section: cleanup_globals ### */ +/* #### Code section: cleanup_module ### */ +/* #### Code section: main_method ### */ +/* #### Code section: utility_code_pragmas ### */ +#ifdef _MSC_VER +#pragma warning( push ) +/* Warning 4127: conditional expression is constant + * Cython uses constant conditional expressions to allow in inline functions to be optimized at + * compile-time, so this warning is not useful + */ +#pragma warning( disable : 4127 ) +#endif + + + +/* #### Code section: utility_code_def ### */ + +/* --- Runtime support code --- */ +/* Refnanny */ +#if CYTHON_REFNANNY +static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) { + PyObject *m = NULL, *p = NULL; + void *r = NULL; + m = PyImport_ImportModule(modname); + if (!m) goto end; + p = PyObject_GetAttrString(m, "RefNannyAPI"); + if (!p) goto end; + r = PyLong_AsVoidPtr(p); +end: + Py_XDECREF(p); + Py_XDECREF(m); + return (__Pyx_RefNannyAPIStruct *)r; +} +#endif + +/* PyErrExceptionMatches (used by PyObjectGetAttrStrNoError) */ +#if CYTHON_FAST_THREAD_STATE +static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { + Py_ssize_t i, n; + n = PyTuple_GET_SIZE(tuple); + for (i=0; i= 0x030C00A6 + PyObject *current_exception = tstate->current_exception; + if (unlikely(!current_exception)) return 0; + exc_type = (PyObject*) Py_TYPE(current_exception); + if (exc_type == err) return 1; +#else + exc_type = tstate->curexc_type; + if (exc_type == err) return 1; + if (unlikely(!exc_type)) return 0; +#endif + #if CYTHON_AVOID_BORROWED_REFS + Py_INCREF(exc_type); + #endif + if (unlikely(PyTuple_Check(err))) { + result = __Pyx_PyErr_ExceptionMatchesTuple(exc_type, err); + } else { + result = __Pyx_PyErr_GivenExceptionMatches(exc_type, err); + } + #if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(exc_type); + #endif + return result; +} +#endif + +/* PyErrFetchRestore (used by PyObjectGetAttrStrNoError) */ +#if CYTHON_FAST_THREAD_STATE +static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { +#if PY_VERSION_HEX >= 0x030C00A6 + PyObject *tmp_value; + assert(type == NULL || (value != NULL && type == (PyObject*) Py_TYPE(value))); + if (value) { + #if CYTHON_COMPILING_IN_CPYTHON + if (unlikely(((PyBaseExceptionObject*) value)->traceback != tb)) + #endif + PyException_SetTraceback(value, tb); + } + tmp_value = tstate->current_exception; + tstate->current_exception = value; + Py_XDECREF(tmp_value); + Py_XDECREF(type); + Py_XDECREF(tb); +#else + PyObject *tmp_type, *tmp_value, *tmp_tb; + tmp_type = tstate->curexc_type; + tmp_value = tstate->curexc_value; + tmp_tb = tstate->curexc_traceback; + tstate->curexc_type = type; + tstate->curexc_value = value; + tstate->curexc_traceback = tb; + Py_XDECREF(tmp_type); + Py_XDECREF(tmp_value); + Py_XDECREF(tmp_tb); +#endif +} +static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { +#if PY_VERSION_HEX >= 0x030C00A6 + PyObject* exc_value; + exc_value = tstate->current_exception; + tstate->current_exception = 0; + *value = exc_value; + *type = NULL; + *tb = NULL; + if (exc_value) { + *type = (PyObject*) Py_TYPE(exc_value); + Py_INCREF(*type); + #if CYTHON_COMPILING_IN_CPYTHON + *tb = ((PyBaseExceptionObject*) exc_value)->traceback; + Py_XINCREF(*tb); + #else + *tb = PyException_GetTraceback(exc_value); + #endif + } +#else + *type = tstate->curexc_type; + *value = tstate->curexc_value; + *tb = tstate->curexc_traceback; + tstate->curexc_type = 0; + tstate->curexc_value = 0; + tstate->curexc_traceback = 0; +#endif +} +#endif + +/* PyObjectGetAttrStr (used by PyObjectGetAttrStrNoError) */ +#if CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) { + PyTypeObject* tp = Py_TYPE(obj); + if (likely(tp->tp_getattro)) + return tp->tp_getattro(obj, attr_name); + return PyObject_GetAttr(obj, attr_name); +} +#endif + +/* PyObjectGetAttrStrNoError (used by GetBuiltinName) */ +#if __PYX_LIMITED_VERSION_HEX < 0x030d0000 +static void __Pyx_PyObject_GetAttrStr_ClearAttributeError(void) { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + if (likely(__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError))) + __Pyx_PyErr_Clear(); +} +#endif +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name) { + PyObject *result; +#if __PYX_LIMITED_VERSION_HEX >= 0x030d0000 + (void) PyObject_GetOptionalAttr(obj, attr_name, &result); + return result; +#else +#if CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_TYPE_SLOTS + PyTypeObject* tp = Py_TYPE(obj); + if (likely(tp->tp_getattro == PyObject_GenericGetAttr)) { + return _PyObject_GenericGetAttrWithDict(obj, attr_name, NULL, 1); + } +#endif + result = __Pyx_PyObject_GetAttrStr(obj, attr_name); + if (unlikely(!result)) { + __Pyx_PyObject_GetAttrStr_ClearAttributeError(); + } + return result; +#endif +} + +/* GetBuiltinName */ +static PyObject *__Pyx_GetBuiltinName(PyObject *name) { + PyObject* result = __Pyx_PyObject_GetAttrStrNoError(__pyx_mstate_global->__pyx_b, name); + if (unlikely(!result) && !PyErr_Occurred()) { + PyErr_Format(PyExc_NameError, + "name '%U' is not defined", name); + } + return result; +} + +/* PyObjectCall (used by PyObjectFastCall) */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) { + PyObject *result; + ternaryfunc call = Py_TYPE(func)->tp_call; + if (unlikely(!call)) + return PyObject_Call(func, arg, kw); + if (unlikely(Py_EnterRecursiveCall(" while calling a Python object"))) + return NULL; + result = (*call)(func, arg, kw); + Py_LeaveRecursiveCall(); + if (unlikely(!result) && unlikely(!PyErr_Occurred())) { + PyErr_SetString( + PyExc_SystemError, + "NULL result without error in PyObject_Call"); + } + return result; +} +#endif + +/* PyObjectCallMethO (used by PyObjectFastCall) */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) { + PyObject *self, *result; + PyCFunction cfunc; + cfunc = __Pyx_CyOrPyCFunction_GET_FUNCTION(func); + self = __Pyx_CyOrPyCFunction_GET_SELF(func); + if (unlikely(Py_EnterRecursiveCall(" while calling a Python object"))) + return NULL; + result = cfunc(self, arg); + Py_LeaveRecursiveCall(); + if (unlikely(!result) && unlikely(!PyErr_Occurred())) { + PyErr_SetString( + PyExc_SystemError, + "NULL result without error in PyObject_Call"); + } + return result; +} +#endif + +/* PyObjectFastCall */ +#if PY_VERSION_HEX < 0x03090000 || CYTHON_COMPILING_IN_LIMITED_API +static PyObject* __Pyx_PyObject_FastCall_fallback(PyObject *func, PyObject * const*args, size_t nargs, PyObject *kwargs) { + PyObject *argstuple; + PyObject *result = 0; + size_t i; + argstuple = PyTuple_New((Py_ssize_t)nargs); + if (unlikely(!argstuple)) return NULL; + for (i = 0; i < nargs; i++) { + Py_INCREF(args[i]); + if (__Pyx_PyTuple_SET_ITEM(argstuple, (Py_ssize_t)i, args[i]) != (0)) goto bad; + } + result = __Pyx_PyObject_Call(func, argstuple, kwargs); + bad: + Py_DECREF(argstuple); + return result; +} +#endif +#if CYTHON_VECTORCALL && !CYTHON_COMPILING_IN_LIMITED_API + #if PY_VERSION_HEX < 0x03090000 + #define __Pyx_PyVectorcall_Function(callable) _PyVectorcall_Function(callable) + #elif CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE vectorcallfunc __Pyx_PyVectorcall_Function(PyObject *callable) { + PyTypeObject *tp = Py_TYPE(callable); + #if defined(__Pyx_CyFunction_USED) + if (__Pyx_CyFunction_CheckExact(callable)) { + return __Pyx_CyFunction_func_vectorcall(callable); + } + #endif + if (!PyType_HasFeature(tp, Py_TPFLAGS_HAVE_VECTORCALL)) { + return NULL; + } + assert(PyCallable_Check(callable)); + Py_ssize_t offset = tp->tp_vectorcall_offset; + assert(offset > 0); + vectorcallfunc ptr; + memcpy(&ptr, (char *) callable + offset, sizeof(ptr)); + return ptr; +} + #else + #define __Pyx_PyVectorcall_Function(callable) PyVectorcall_Function(callable) + #endif +#endif +static CYTHON_INLINE PyObject* __Pyx_PyObject_FastCallDict(PyObject *func, PyObject *const *args, size_t _nargs, PyObject *kwargs) { + Py_ssize_t nargs = __Pyx_PyVectorcall_NARGS(_nargs); +#if CYTHON_COMPILING_IN_CPYTHON + if (nargs == 0 && kwargs == NULL) { + if (__Pyx_CyOrPyCFunction_Check(func) && likely( __Pyx_CyOrPyCFunction_GET_FLAGS(func) & METH_NOARGS)) + return __Pyx_PyObject_CallMethO(func, NULL); + } + else if (nargs == 1 && kwargs == NULL) { + if (__Pyx_CyOrPyCFunction_Check(func) && likely( __Pyx_CyOrPyCFunction_GET_FLAGS(func) & METH_O)) + return __Pyx_PyObject_CallMethO(func, args[0]); + } +#endif + if (kwargs == NULL) { + #if CYTHON_VECTORCALL + #if CYTHON_COMPILING_IN_LIMITED_API + return PyObject_Vectorcall(func, args, _nargs, NULL); + #else + vectorcallfunc f = __Pyx_PyVectorcall_Function(func); + if (f) { + return f(func, args, _nargs, NULL); + } + #endif + #endif + } + if (nargs == 0) { + return __Pyx_PyObject_Call(func, __pyx_mstate_global->__pyx_empty_tuple, kwargs); + } + #if PY_VERSION_HEX >= 0x03090000 && !CYTHON_COMPILING_IN_LIMITED_API + return PyObject_VectorcallDict(func, args, (size_t)nargs, kwargs); + #else + return __Pyx_PyObject_FastCall_fallback(func, args, (size_t)nargs, kwargs); + #endif +} + +/* PyObjectCall2Args (used by CallUnboundCMethod1) */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2) { + PyObject *args[3] = {NULL, arg1, arg2}; + return __Pyx_PyObject_FastCall(function, args+1, 2 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET); +} + +/* UnpackUnboundCMethod (used by CallUnboundCMethod1) */ +#if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030C0000 +static PyObject *__Pyx_SelflessCall(PyObject *method, PyObject *args, PyObject *kwargs) { + PyObject *result; + PyObject *selfless_args = PyTuple_GetSlice(args, 1, PyTuple_Size(args)); + if (unlikely(!selfless_args)) return NULL; + result = PyObject_Call(method, selfless_args, kwargs); + Py_DECREF(selfless_args); + return result; +} +#elif CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03090000 +static PyObject *__Pyx_SelflessCall(PyObject *method, PyObject **args, Py_ssize_t nargs, PyObject *kwnames) { + return _PyObject_Vectorcall + (method, args ? args+1 : NULL, nargs ? nargs-1 : 0, kwnames); +} +#else +static PyObject *__Pyx_SelflessCall(PyObject *method, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) { + return +#if PY_VERSION_HEX < 0x03090000 + _PyObject_Vectorcall +#else + PyObject_Vectorcall +#endif + (method, args ? args+1 : NULL, nargs ? (size_t) nargs-1 : 0, kwnames); +} +#endif +static PyMethodDef __Pyx_UnboundCMethod_Def = { + "CythonUnboundCMethod", + __PYX_REINTERPRET_FUNCION(PyCFunction, __Pyx_SelflessCall), +#if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030C0000 + METH_VARARGS | METH_KEYWORDS, +#else + METH_FASTCALL | METH_KEYWORDS, +#endif + NULL +}; +static int __Pyx_TryUnpackUnboundCMethod(__Pyx_CachedCFunction* target) { + PyObject *method, *result=NULL; + method = __Pyx_PyObject_GetAttrStr(target->type, *target->method_name); + if (unlikely(!method)) + return -1; + result = method; +#if CYTHON_COMPILING_IN_CPYTHON + if (likely(__Pyx_TypeCheck(method, &PyMethodDescr_Type))) + { + PyMethodDescrObject *descr = (PyMethodDescrObject*) method; + target->func = descr->d_method->ml_meth; + target->flag = descr->d_method->ml_flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_STACKLESS); + } else +#endif +#if CYTHON_COMPILING_IN_PYPY +#else + if (PyCFunction_Check(method)) +#endif + { + PyObject *self; + int self_found; +#if CYTHON_COMPILING_IN_LIMITED_API || CYTHON_COMPILING_IN_PYPY + self = PyObject_GetAttrString(method, "__self__"); + if (!self) { + PyErr_Clear(); + } +#else + self = PyCFunction_GET_SELF(method); +#endif + self_found = (self && self != Py_None); +#if CYTHON_COMPILING_IN_LIMITED_API || CYTHON_COMPILING_IN_PYPY + Py_XDECREF(self); +#endif + if (self_found) { + PyObject *unbound_method = PyCFunction_New(&__Pyx_UnboundCMethod_Def, method); + if (unlikely(!unbound_method)) return -1; + Py_DECREF(method); + result = unbound_method; + } + } +#if !CYTHON_COMPILING_IN_CPYTHON_FREETHREADING + if (unlikely(target->method)) { + Py_DECREF(result); + } else +#endif + target->method = result; + return 0; +} + +/* CallUnboundCMethod1 */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_CallUnboundCMethod1(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg) { + int was_initialized = __Pyx_CachedCFunction_GetAndSetInitializing(cfunc); + if (likely(was_initialized == 2 && cfunc->func)) { + int flag = cfunc->flag; + if (flag == METH_O) { + return __Pyx_CallCFunction(cfunc, self, arg); + } else if (flag == METH_FASTCALL) { + return __Pyx_CallCFunctionFast(cfunc, self, &arg, 1); + } else if (flag == (METH_FASTCALL | METH_KEYWORDS)) { + return __Pyx_CallCFunctionFastWithKeywords(cfunc, self, &arg, 1, NULL); + } + } +#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING + else if (unlikely(was_initialized == 1)) { + __Pyx_CachedCFunction tmp_cfunc = { +#ifndef __cplusplus + 0 +#endif + }; + tmp_cfunc.type = cfunc->type; + tmp_cfunc.method_name = cfunc->method_name; + return __Pyx__CallUnboundCMethod1(&tmp_cfunc, self, arg); + } +#endif + PyObject* result = __Pyx__CallUnboundCMethod1(cfunc, self, arg); + __Pyx_CachedCFunction_SetFinishedInitializing(cfunc); + return result; +} +#endif +static PyObject* __Pyx__CallUnboundCMethod1(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg){ + PyObject *result = NULL; + if (unlikely(!cfunc->func && !cfunc->method) && unlikely(__Pyx_TryUnpackUnboundCMethod(cfunc) < 0)) return NULL; +#if CYTHON_COMPILING_IN_CPYTHON + if (cfunc->func && (cfunc->flag & METH_VARARGS)) { + PyObject *args = PyTuple_New(1); + if (unlikely(!args)) return NULL; + Py_INCREF(arg); + PyTuple_SET_ITEM(args, 0, arg); + if (cfunc->flag & METH_KEYWORDS) + result = __Pyx_CallCFunctionWithKeywords(cfunc, self, args, NULL); + else + result = __Pyx_CallCFunction(cfunc, self, args); + Py_DECREF(args); + } else +#endif + { + result = __Pyx_PyObject_Call2Args(cfunc->method, self, arg); + } + return result; +} + +/* CallUnboundCMethod2 */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject *__Pyx_CallUnboundCMethod2(__Pyx_CachedCFunction *cfunc, PyObject *self, PyObject *arg1, PyObject *arg2) { + int was_initialized = __Pyx_CachedCFunction_GetAndSetInitializing(cfunc); + if (likely(was_initialized == 2 && cfunc->func)) { + PyObject *args[2] = {arg1, arg2}; + if (cfunc->flag == METH_FASTCALL) { + return __Pyx_CallCFunctionFast(cfunc, self, args, 2); + } + if (cfunc->flag == (METH_FASTCALL | METH_KEYWORDS)) + return __Pyx_CallCFunctionFastWithKeywords(cfunc, self, args, 2, NULL); + } +#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING + else if (unlikely(was_initialized == 1)) { + __Pyx_CachedCFunction tmp_cfunc = { +#ifndef __cplusplus + 0 +#endif + }; + tmp_cfunc.type = cfunc->type; + tmp_cfunc.method_name = cfunc->method_name; + return __Pyx__CallUnboundCMethod2(&tmp_cfunc, self, arg1, arg2); + } +#endif + PyObject *result = __Pyx__CallUnboundCMethod2(cfunc, self, arg1, arg2); + __Pyx_CachedCFunction_SetFinishedInitializing(cfunc); + return result; +} +#endif +static PyObject* __Pyx__CallUnboundCMethod2(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg1, PyObject* arg2){ + if (unlikely(!cfunc->func && !cfunc->method) && unlikely(__Pyx_TryUnpackUnboundCMethod(cfunc) < 0)) return NULL; +#if CYTHON_COMPILING_IN_CPYTHON + if (cfunc->func && (cfunc->flag & METH_VARARGS)) { + PyObject *result = NULL; + PyObject *args = PyTuple_New(2); + if (unlikely(!args)) return NULL; + Py_INCREF(arg1); + PyTuple_SET_ITEM(args, 0, arg1); + Py_INCREF(arg2); + PyTuple_SET_ITEM(args, 1, arg2); + if (cfunc->flag & METH_KEYWORDS) + result = __Pyx_CallCFunctionWithKeywords(cfunc, self, args, NULL); + else + result = __Pyx_CallCFunction(cfunc, self, args); + Py_DECREF(args); + return result; + } +#endif + { + PyObject *args[4] = {NULL, self, arg1, arg2}; + return __Pyx_PyObject_FastCall(cfunc->method, args+1, 3 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET); + } +} + +/* dict_getitem_default */ +static PyObject* __Pyx_PyDict_GetItemDefault(PyObject* d, PyObject* key, PyObject* default_value) { + PyObject* value; +#if !CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07020000 + value = PyDict_GetItemWithError(d, key); + if (unlikely(!value)) { + if (unlikely(PyErr_Occurred())) + return NULL; + value = default_value; + } + Py_INCREF(value); + if ((1)); +#else + if (PyBytes_CheckExact(key) || PyUnicode_CheckExact(key) || PyLong_CheckExact(key)) { + value = PyDict_GetItem(d, key); + if (unlikely(!value)) { + value = default_value; + } + Py_INCREF(value); + } +#endif + else { + if (default_value == Py_None) + value = __Pyx_CallUnboundCMethod1(&__pyx_mstate_global->__pyx_umethod_PyDict_Type_get, d, key); + else + value = __Pyx_CallUnboundCMethod2(&__pyx_mstate_global->__pyx_umethod_PyDict_Type_get, d, key, default_value); + } + return value; +} + +/* RaiseException */ +static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) { + PyObject* owned_instance = NULL; + if (tb == Py_None) { + tb = 0; + } else if (tb && !PyTraceBack_Check(tb)) { + PyErr_SetString(PyExc_TypeError, + "raise: arg 3 must be a traceback or None"); + goto bad; + } + if (value == Py_None) + value = 0; + if (PyExceptionInstance_Check(type)) { + if (value) { + PyErr_SetString(PyExc_TypeError, + "instance exception may not have a separate value"); + goto bad; + } + value = type; + type = (PyObject*) Py_TYPE(value); + } else if (PyExceptionClass_Check(type)) { + PyObject *instance_class = NULL; + if (value && PyExceptionInstance_Check(value)) { + instance_class = (PyObject*) Py_TYPE(value); + if (instance_class != type) { + int is_subclass = PyObject_IsSubclass(instance_class, type); + if (!is_subclass) { + instance_class = NULL; + } else if (unlikely(is_subclass == -1)) { + goto bad; + } else { + type = instance_class; + } + } + } + if (!instance_class) { + PyObject *args; + if (!value) + args = PyTuple_New(0); + else if (PyTuple_Check(value)) { + Py_INCREF(value); + args = value; + } else + args = PyTuple_Pack(1, value); + if (!args) + goto bad; + owned_instance = PyObject_Call(type, args, NULL); + Py_DECREF(args); + if (!owned_instance) + goto bad; + value = owned_instance; + if (!PyExceptionInstance_Check(value)) { + PyErr_Format(PyExc_TypeError, + "calling %R should have returned an instance of " + "BaseException, not %R", + type, Py_TYPE(value)); + goto bad; + } + } + } else { + PyErr_SetString(PyExc_TypeError, + "raise: exception class must be a subclass of BaseException"); + goto bad; + } + if (cause) { + PyObject *fixed_cause; + if (cause == Py_None) { + fixed_cause = NULL; + } else if (PyExceptionClass_Check(cause)) { + fixed_cause = PyObject_CallObject(cause, NULL); + if (fixed_cause == NULL) + goto bad; + } else if (PyExceptionInstance_Check(cause)) { + fixed_cause = cause; + Py_INCREF(fixed_cause); + } else { + PyErr_SetString(PyExc_TypeError, + "exception causes must derive from " + "BaseException"); + goto bad; + } + PyException_SetCause(value, fixed_cause); + } + PyErr_SetObject(type, value); + if (tb) { +#if PY_VERSION_HEX >= 0x030C00A6 + PyException_SetTraceback(value, tb); +#elif CYTHON_FAST_THREAD_STATE + PyThreadState *tstate = __Pyx_PyThreadState_Current; + PyObject* tmp_tb = tstate->curexc_traceback; + if (tb != tmp_tb) { + Py_INCREF(tb); + tstate->curexc_traceback = tb; + Py_XDECREF(tmp_tb); + } +#else + PyObject *tmp_type, *tmp_value, *tmp_tb; + PyErr_Fetch(&tmp_type, &tmp_value, &tmp_tb); + Py_INCREF(tb); + PyErr_Restore(tmp_type, tmp_value, tb); + Py_XDECREF(tmp_tb); +#endif + } +bad: + Py_XDECREF(owned_instance); + return; +} + +/* TupleAndListFromArray (used by fastcall) */ +#if !CYTHON_COMPILING_IN_CPYTHON && CYTHON_METH_FASTCALL +static CYTHON_INLINE PyObject * +__Pyx_PyTuple_FromArray(PyObject *const *src, Py_ssize_t n) +{ + PyObject *res; + Py_ssize_t i; + if (n <= 0) { + return __Pyx_NewRef(__pyx_mstate_global->__pyx_empty_tuple); + } + res = PyTuple_New(n); + if (unlikely(res == NULL)) return NULL; + for (i = 0; i < n; i++) { + if (unlikely(__Pyx_PyTuple_SET_ITEM(res, i, src[i]) < (0))) { + Py_DECREF(res); + return NULL; + } + Py_INCREF(src[i]); + } + return res; +} +#elif CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE void __Pyx_copy_object_array(PyObject *const *CYTHON_RESTRICT src, PyObject** CYTHON_RESTRICT dest, Py_ssize_t length) { + PyObject *v; + Py_ssize_t i; + for (i = 0; i < length; i++) { + v = dest[i] = src[i]; + Py_INCREF(v); + } +} +static CYTHON_INLINE PyObject * +__Pyx_PyTuple_FromArray(PyObject *const *src, Py_ssize_t n) +{ + PyObject *res; + if (n <= 0) { + return __Pyx_NewRef(__pyx_mstate_global->__pyx_empty_tuple); + } + res = PyTuple_New(n); + if (unlikely(res == NULL)) return NULL; + __Pyx_copy_object_array(src, ((PyTupleObject*)res)->ob_item, n); + return res; +} +static CYTHON_INLINE PyObject * +__Pyx_PyList_FromArray(PyObject *const *src, Py_ssize_t n) +{ + PyObject *res; + if (n <= 0) { + return PyList_New(0); + } + res = PyList_New(n); + if (unlikely(res == NULL)) return NULL; + __Pyx_copy_object_array(src, ((PyListObject*)res)->ob_item, n); + return res; +} +#endif + +/* BytesEquals (used by UnicodeEquals) */ +static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) { +#if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API || CYTHON_COMPILING_IN_GRAAL ||\ + !(CYTHON_ASSUME_SAFE_SIZE && CYTHON_ASSUME_SAFE_MACROS) + return PyObject_RichCompareBool(s1, s2, equals); +#else + if (s1 == s2) { + return (equals == Py_EQ); + } else if (PyBytes_CheckExact(s1) & PyBytes_CheckExact(s2)) { + const char *ps1, *ps2; + Py_ssize_t length = PyBytes_GET_SIZE(s1); + if (length != PyBytes_GET_SIZE(s2)) + return (equals == Py_NE); + ps1 = PyBytes_AS_STRING(s1); + ps2 = PyBytes_AS_STRING(s2); + if (ps1[0] != ps2[0]) { + return (equals == Py_NE); + } else if (length == 1) { + return (equals == Py_EQ); + } else { + int result; +#if CYTHON_USE_UNICODE_INTERNALS && (PY_VERSION_HEX < 0x030B0000) + Py_hash_t hash1, hash2; + hash1 = ((PyBytesObject*)s1)->ob_shash; + hash2 = ((PyBytesObject*)s2)->ob_shash; + if (hash1 != hash2 && hash1 != -1 && hash2 != -1) { + return (equals == Py_NE); + } +#endif + result = memcmp(ps1, ps2, (size_t)length); + return (equals == Py_EQ) ? (result == 0) : (result != 0); + } + } else if ((s1 == Py_None) & PyBytes_CheckExact(s2)) { + return (equals == Py_NE); + } else if ((s2 == Py_None) & PyBytes_CheckExact(s1)) { + return (equals == Py_NE); + } else { + int result; + PyObject* py_result = PyObject_RichCompare(s1, s2, equals); + if (!py_result) + return -1; + result = __Pyx_PyObject_IsTrue(py_result); + Py_DECREF(py_result); + return result; + } +#endif +} + +/* UnicodeEquals (used by fastcall) */ +static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) { +#if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API || CYTHON_COMPILING_IN_GRAAL + return PyObject_RichCompareBool(s1, s2, equals); +#else + int s1_is_unicode, s2_is_unicode; + if (s1 == s2) { + goto return_eq; + } + s1_is_unicode = PyUnicode_CheckExact(s1); + s2_is_unicode = PyUnicode_CheckExact(s2); + if (s1_is_unicode & s2_is_unicode) { + Py_ssize_t length, length2; + int kind; + void *data1, *data2; + #if !CYTHON_COMPILING_IN_LIMITED_API + if (unlikely(__Pyx_PyUnicode_READY(s1) < 0) || unlikely(__Pyx_PyUnicode_READY(s2) < 0)) + return -1; + #endif + length = __Pyx_PyUnicode_GET_LENGTH(s1); + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely(length < 0)) return -1; + #endif + length2 = __Pyx_PyUnicode_GET_LENGTH(s2); + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely(length2 < 0)) return -1; + #endif + if (length != length2) { + goto return_ne; + } +#if CYTHON_USE_UNICODE_INTERNALS + { + Py_hash_t hash1, hash2; + hash1 = ((PyASCIIObject*)s1)->hash; + hash2 = ((PyASCIIObject*)s2)->hash; + if (hash1 != hash2 && hash1 != -1 && hash2 != -1) { + goto return_ne; + } + } +#endif + kind = __Pyx_PyUnicode_KIND(s1); + if (kind != __Pyx_PyUnicode_KIND(s2)) { + goto return_ne; + } + data1 = __Pyx_PyUnicode_DATA(s1); + data2 = __Pyx_PyUnicode_DATA(s2); + if (__Pyx_PyUnicode_READ(kind, data1, 0) != __Pyx_PyUnicode_READ(kind, data2, 0)) { + goto return_ne; + } else if (length == 1) { + goto return_eq; + } else { + int result = memcmp(data1, data2, (size_t)(length * kind)); + return (equals == Py_EQ) ? (result == 0) : (result != 0); + } + } else if ((s1 == Py_None) & s2_is_unicode) { + goto return_ne; + } else if ((s2 == Py_None) & s1_is_unicode) { + goto return_ne; + } else { + int result; + PyObject* py_result = PyObject_RichCompare(s1, s2, equals); + if (!py_result) + return -1; + result = __Pyx_PyObject_IsTrue(py_result); + Py_DECREF(py_result); + return result; + } +return_eq: + return (equals == Py_EQ); +return_ne: + return (equals == Py_NE); +#endif +} + +/* fastcall */ +#if CYTHON_METH_FASTCALL +static CYTHON_INLINE PyObject * __Pyx_GetKwValue_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues, PyObject *s) +{ + Py_ssize_t i, n = __Pyx_PyTuple_GET_SIZE(kwnames); + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely(n == -1)) return NULL; + #endif + for (i = 0; i < n; i++) + { + PyObject *namei = __Pyx_PyTuple_GET_ITEM(kwnames, i); + #if !CYTHON_ASSUME_SAFE_MACROS + if (unlikely(!namei)) return NULL; + #endif + if (s == namei) return kwvalues[i]; + } + for (i = 0; i < n; i++) + { + PyObject *namei = __Pyx_PyTuple_GET_ITEM(kwnames, i); + #if !CYTHON_ASSUME_SAFE_MACROS + if (unlikely(!namei)) return NULL; + #endif + int eq = __Pyx_PyUnicode_Equals(s, namei, Py_EQ); + if (unlikely(eq != 0)) { + if (unlikely(eq < 0)) return NULL; + return kwvalues[i]; + } + } + return NULL; +} +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030d0000 || CYTHON_COMPILING_IN_LIMITED_API +CYTHON_UNUSED static PyObject *__Pyx_KwargsAsDict_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues) { + Py_ssize_t i, nkwargs; + PyObject *dict; +#if !CYTHON_ASSUME_SAFE_SIZE + nkwargs = PyTuple_Size(kwnames); + if (unlikely(nkwargs < 0)) return NULL; +#else + nkwargs = PyTuple_GET_SIZE(kwnames); +#endif + dict = PyDict_New(); + if (unlikely(!dict)) + return NULL; + for (i=0; ifunc)) { + if (likely(cfunc->flag == METH_NOARGS)) + return __Pyx_CallCFunction(cfunc, self, NULL); + if (likely(cfunc->flag == METH_FASTCALL)) + return __Pyx_CallCFunctionFast(cfunc, self, NULL, 0); + if (cfunc->flag == (METH_FASTCALL | METH_KEYWORDS)) + return __Pyx_CallCFunctionFastWithKeywords(cfunc, self, NULL, 0, NULL); + if (likely(cfunc->flag == (METH_VARARGS | METH_KEYWORDS))) + return __Pyx_CallCFunctionWithKeywords(cfunc, self, __pyx_mstate_global->__pyx_empty_tuple, NULL); + if (cfunc->flag == METH_VARARGS) + return __Pyx_CallCFunction(cfunc, self, __pyx_mstate_global->__pyx_empty_tuple); + return __Pyx__CallUnboundCMethod0(cfunc, self); + } +#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING + else if (unlikely(was_initialized == 1)) { + __Pyx_CachedCFunction tmp_cfunc = { +#ifndef __cplusplus + 0 +#endif + }; + tmp_cfunc.type = cfunc->type; + tmp_cfunc.method_name = cfunc->method_name; + return __Pyx__CallUnboundCMethod0(&tmp_cfunc, self); + } +#endif + PyObject *result = __Pyx__CallUnboundCMethod0(cfunc, self); + __Pyx_CachedCFunction_SetFinishedInitializing(cfunc); + return result; +} +#endif +static PyObject* __Pyx__CallUnboundCMethod0(__Pyx_CachedCFunction* cfunc, PyObject* self) { + PyObject *result; + if (unlikely(!cfunc->method) && unlikely(__Pyx_TryUnpackUnboundCMethod(cfunc) < 0)) return NULL; + result = __Pyx_PyObject_CallOneArg(cfunc->method, self); + return result; +} + +/* py_dict_items (used by OwnedDictNext) */ +static CYTHON_INLINE PyObject* __Pyx_PyDict_Items(PyObject* d) { + return __Pyx_CallUnboundCMethod0(&__pyx_mstate_global->__pyx_umethod_PyDict_Type_items, d); +} + +/* py_dict_values (used by OwnedDictNext) */ +static CYTHON_INLINE PyObject* __Pyx_PyDict_Values(PyObject* d) { + return __Pyx_CallUnboundCMethod0(&__pyx_mstate_global->__pyx_umethod_PyDict_Type_values, d); +} + +/* OwnedDictNext (used by ParseKeywordsImpl) */ +#if CYTHON_AVOID_BORROWED_REFS +static int __Pyx_PyDict_NextRef(PyObject *p, PyObject **ppos, PyObject **pkey, PyObject **pvalue) { + PyObject *next = NULL; + if (!*ppos) { + if (pvalue) { + PyObject *dictview = pkey ? __Pyx_PyDict_Items(p) : __Pyx_PyDict_Values(p); + if (unlikely(!dictview)) goto bad; + *ppos = PyObject_GetIter(dictview); + Py_DECREF(dictview); + } else { + *ppos = PyObject_GetIter(p); + } + if (unlikely(!*ppos)) goto bad; + } + next = PyIter_Next(*ppos); + if (!next) { + if (PyErr_Occurred()) goto bad; + return 0; + } + if (pkey && pvalue) { + *pkey = __Pyx_PySequence_ITEM(next, 0); + if (unlikely(*pkey)) goto bad; + *pvalue = __Pyx_PySequence_ITEM(next, 1); + if (unlikely(*pvalue)) goto bad; + Py_DECREF(next); + } else if (pkey) { + *pkey = next; + } else { + assert(pvalue); + *pvalue = next; + } + return 1; + bad: + Py_XDECREF(next); +#if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d0000 + PyErr_FormatUnraisable("Exception ignored in __Pyx_PyDict_NextRef"); +#else + PyErr_WriteUnraisable(__pyx_mstate_global->__pyx_n_u_Pyx_PyDict_NextRef); +#endif + if (pkey) *pkey = NULL; + if (pvalue) *pvalue = NULL; + return 0; +} +#else // !CYTHON_AVOID_BORROWED_REFS +static int __Pyx_PyDict_NextRef(PyObject *p, Py_ssize_t *ppos, PyObject **pkey, PyObject **pvalue) { + int result = PyDict_Next(p, ppos, pkey, pvalue); + if (likely(result == 1)) { + if (pkey) Py_INCREF(*pkey); + if (pvalue) Py_INCREF(*pvalue); + } + return result; +} +#endif + +/* RaiseDoubleKeywords (used by ParseKeywordsImpl) */ +static void __Pyx_RaiseDoubleKeywordsError( + const char* func_name, + PyObject* kw_name) +{ + PyErr_Format(PyExc_TypeError, + "%s() got multiple values for keyword argument '%U'", func_name, kw_name); +} + +/* ParseKeywordsImpl (used by ParseKeywords) */ +static int __Pyx_ValidateDuplicatePosArgs( + PyObject *kwds, + PyObject ** const argnames[], + PyObject ** const *first_kw_arg, + const char* function_name) +{ + PyObject ** const *name = argnames; + while (name != first_kw_arg) { + PyObject *key = **name; + int found = PyDict_Contains(kwds, key); + if (unlikely(found)) { + if (found == 1) __Pyx_RaiseDoubleKeywordsError(function_name, key); + goto bad; + } + name++; + } + return 0; +bad: + return -1; +} +#if CYTHON_USE_UNICODE_INTERNALS +static CYTHON_INLINE int __Pyx_UnicodeKeywordsEqual(PyObject *s1, PyObject *s2) { + int kind; + Py_ssize_t len = PyUnicode_GET_LENGTH(s1); + if (len != PyUnicode_GET_LENGTH(s2)) return 0; + kind = PyUnicode_KIND(s1); + if (kind != PyUnicode_KIND(s2)) return 0; + const void *data1 = PyUnicode_DATA(s1); + const void *data2 = PyUnicode_DATA(s2); + return (memcmp(data1, data2, (size_t) len * (size_t) kind) == 0); +} +#endif +static int __Pyx_MatchKeywordArg_str( + PyObject *key, + PyObject ** const argnames[], + PyObject ** const *first_kw_arg, + size_t *index_found, + const char *function_name) +{ + PyObject ** const *name; + #if CYTHON_USE_UNICODE_INTERNALS + Py_hash_t key_hash = ((PyASCIIObject*)key)->hash; + if (unlikely(key_hash == -1)) { + key_hash = PyObject_Hash(key); + if (unlikely(key_hash == -1)) + goto bad; + } + #endif + name = first_kw_arg; + while (*name) { + PyObject *name_str = **name; + #if CYTHON_USE_UNICODE_INTERNALS + if (key_hash == ((PyASCIIObject*)name_str)->hash && __Pyx_UnicodeKeywordsEqual(name_str, key)) { + *index_found = (size_t) (name - argnames); + return 1; + } + #else + #if CYTHON_ASSUME_SAFE_SIZE + if (PyUnicode_GET_LENGTH(name_str) == PyUnicode_GET_LENGTH(key)) + #endif + { + int cmp = PyUnicode_Compare(name_str, key); + if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; + if (cmp == 0) { + *index_found = (size_t) (name - argnames); + return 1; + } + } + #endif + name++; + } + name = argnames; + while (name != first_kw_arg) { + PyObject *name_str = **name; + #if CYTHON_USE_UNICODE_INTERNALS + if (unlikely(key_hash == ((PyASCIIObject*)name_str)->hash)) { + if (__Pyx_UnicodeKeywordsEqual(name_str, key)) + goto arg_passed_twice; + } + #else + #if CYTHON_ASSUME_SAFE_SIZE + if (PyUnicode_GET_LENGTH(name_str) == PyUnicode_GET_LENGTH(key)) + #endif + { + if (unlikely(name_str == key)) goto arg_passed_twice; + int cmp = PyUnicode_Compare(name_str, key); + if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; + if (cmp == 0) goto arg_passed_twice; + } + #endif + name++; + } + return 0; +arg_passed_twice: + __Pyx_RaiseDoubleKeywordsError(function_name, key); + goto bad; +bad: + return -1; +} +static int __Pyx_MatchKeywordArg_nostr( + PyObject *key, + PyObject ** const argnames[], + PyObject ** const *first_kw_arg, + size_t *index_found, + const char *function_name) +{ + PyObject ** const *name; + if (unlikely(!PyUnicode_Check(key))) goto invalid_keyword_type; + name = first_kw_arg; + while (*name) { + int cmp = PyObject_RichCompareBool(**name, key, Py_EQ); + if (cmp == 1) { + *index_found = (size_t) (name - argnames); + return 1; + } + if (unlikely(cmp == -1)) goto bad; + name++; + } + name = argnames; + while (name != first_kw_arg) { + int cmp = PyObject_RichCompareBool(**name, key, Py_EQ); + if (unlikely(cmp != 0)) { + if (cmp == 1) goto arg_passed_twice; + else goto bad; + } + name++; + } + return 0; +arg_passed_twice: + __Pyx_RaiseDoubleKeywordsError(function_name, key); + goto bad; +invalid_keyword_type: + PyErr_Format(PyExc_TypeError, + "%.200s() keywords must be strings", function_name); + goto bad; +bad: + return -1; +} +static CYTHON_INLINE int __Pyx_MatchKeywordArg( + PyObject *key, + PyObject ** const argnames[], + PyObject ** const *first_kw_arg, + size_t *index_found, + const char *function_name) +{ + return likely(PyUnicode_CheckExact(key)) ? + __Pyx_MatchKeywordArg_str(key, argnames, first_kw_arg, index_found, function_name) : + __Pyx_MatchKeywordArg_nostr(key, argnames, first_kw_arg, index_found, function_name); +} +static void __Pyx_RejectUnknownKeyword( + PyObject *kwds, + PyObject ** const argnames[], + PyObject ** const *first_kw_arg, + const char *function_name) +{ + #if CYTHON_AVOID_BORROWED_REFS + PyObject *pos = NULL; + #else + Py_ssize_t pos = 0; + #endif + PyObject *key = NULL; + __Pyx_BEGIN_CRITICAL_SECTION(kwds); + while ( + #if CYTHON_AVOID_BORROWED_REFS + __Pyx_PyDict_NextRef(kwds, &pos, &key, NULL) + #else + PyDict_Next(kwds, &pos, &key, NULL) + #endif + ) { + PyObject** const *name = first_kw_arg; + while (*name && (**name != key)) name++; + if (!*name) { + size_t index_found = 0; + int cmp = __Pyx_MatchKeywordArg(key, argnames, first_kw_arg, &index_found, function_name); + if (cmp != 1) { + if (cmp == 0) { + PyErr_Format(PyExc_TypeError, + "%s() got an unexpected keyword argument '%U'", + function_name, key); + } + #if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(key); + #endif + break; + } + } + #if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(key); + #endif + } + __Pyx_END_CRITICAL_SECTION(); + #if CYTHON_AVOID_BORROWED_REFS + Py_XDECREF(pos); + #endif + assert(PyErr_Occurred()); +} +static int __Pyx_ParseKeywordDict( + PyObject *kwds, + PyObject ** const argnames[], + PyObject *values[], + Py_ssize_t num_pos_args, + Py_ssize_t num_kwargs, + const char* function_name, + int ignore_unknown_kwargs) +{ + PyObject** const *name; + PyObject** const *first_kw_arg = argnames + num_pos_args; + Py_ssize_t extracted = 0; +#if !CYTHON_COMPILING_IN_PYPY || defined(PyArg_ValidateKeywordArguments) + if (unlikely(!PyArg_ValidateKeywordArguments(kwds))) return -1; +#endif + name = first_kw_arg; + while (*name && num_kwargs > extracted) { + PyObject * key = **name; + PyObject *value; + int found = 0; + #if __PYX_LIMITED_VERSION_HEX >= 0x030d0000 + found = PyDict_GetItemRef(kwds, key, &value); + #else + value = PyDict_GetItemWithError(kwds, key); + if (value) { + Py_INCREF(value); + found = 1; + } else { + if (unlikely(PyErr_Occurred())) goto bad; + } + #endif + if (found) { + if (unlikely(found < 0)) goto bad; + values[name-argnames] = value; + extracted++; + } + name++; + } + if (num_kwargs > extracted) { + if (ignore_unknown_kwargs) { + if (unlikely(__Pyx_ValidateDuplicatePosArgs(kwds, argnames, first_kw_arg, function_name) == -1)) + goto bad; + } else { + __Pyx_RejectUnknownKeyword(kwds, argnames, first_kw_arg, function_name); + goto bad; + } + } + return 0; +bad: + return -1; +} +static int __Pyx_ParseKeywordDictToDict( + PyObject *kwds, + PyObject ** const argnames[], + PyObject *kwds2, + PyObject *values[], + Py_ssize_t num_pos_args, + const char* function_name) +{ + PyObject** const *name; + PyObject** const *first_kw_arg = argnames + num_pos_args; + Py_ssize_t len; +#if !CYTHON_COMPILING_IN_PYPY || defined(PyArg_ValidateKeywordArguments) + if (unlikely(!PyArg_ValidateKeywordArguments(kwds))) return -1; +#endif + if (PyDict_Update(kwds2, kwds) < 0) goto bad; + name = first_kw_arg; + while (*name) { + PyObject *key = **name; + PyObject *value; +#if !CYTHON_COMPILING_IN_LIMITED_API && (PY_VERSION_HEX >= 0x030d00A2 || defined(PyDict_Pop)) + int found = PyDict_Pop(kwds2, key, &value); + if (found) { + if (unlikely(found < 0)) goto bad; + values[name-argnames] = value; + } +#elif __PYX_LIMITED_VERSION_HEX >= 0x030d0000 + int found = PyDict_GetItemRef(kwds2, key, &value); + if (found) { + if (unlikely(found < 0)) goto bad; + values[name-argnames] = value; + if (unlikely(PyDict_DelItem(kwds2, key) < 0)) goto bad; + } +#else + #if CYTHON_COMPILING_IN_CPYTHON + value = _PyDict_Pop(kwds2, key, kwds2); + #else + value = __Pyx_CallUnboundCMethod2(&__pyx_mstate_global->__pyx_umethod_PyDict_Type_pop, kwds2, key, kwds2); + #endif + if (value == kwds2) { + Py_DECREF(value); + } else { + if (unlikely(!value)) goto bad; + values[name-argnames] = value; + } +#endif + name++; + } + len = PyDict_Size(kwds2); + if (len > 0) { + return __Pyx_ValidateDuplicatePosArgs(kwds, argnames, first_kw_arg, function_name); + } else if (unlikely(len == -1)) { + goto bad; + } + return 0; +bad: + return -1; +} +static int __Pyx_ParseKeywordsTuple( + PyObject *kwds, + PyObject * const *kwvalues, + PyObject ** const argnames[], + PyObject *kwds2, + PyObject *values[], + Py_ssize_t num_pos_args, + Py_ssize_t num_kwargs, + const char* function_name, + int ignore_unknown_kwargs) +{ + PyObject *key = NULL; + PyObject** const * name; + PyObject** const *first_kw_arg = argnames + num_pos_args; + for (Py_ssize_t pos = 0; pos < num_kwargs; pos++) { +#if CYTHON_AVOID_BORROWED_REFS + key = __Pyx_PySequence_ITEM(kwds, pos); +#else + key = __Pyx_PyTuple_GET_ITEM(kwds, pos); +#endif +#if !CYTHON_ASSUME_SAFE_MACROS + if (unlikely(!key)) goto bad; +#endif + name = first_kw_arg; + while (*name && (**name != key)) name++; + if (*name) { + PyObject *value = kwvalues[pos]; + values[name-argnames] = __Pyx_NewRef(value); + } else { + size_t index_found = 0; + int cmp = __Pyx_MatchKeywordArg(key, argnames, first_kw_arg, &index_found, function_name); + if (cmp == 1) { + PyObject *value = kwvalues[pos]; + values[index_found] = __Pyx_NewRef(value); + } else { + if (unlikely(cmp == -1)) goto bad; + if (kwds2) { + PyObject *value = kwvalues[pos]; + if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad; + } else if (!ignore_unknown_kwargs) { + goto invalid_keyword; + } + } + } + #if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(key); + key = NULL; + #endif + } + return 0; +invalid_keyword: + PyErr_Format(PyExc_TypeError, + "%s() got an unexpected keyword argument '%U'", + function_name, key); + goto bad; +bad: + #if CYTHON_AVOID_BORROWED_REFS + Py_XDECREF(key); + #endif + return -1; +} + +/* ParseKeywords */ +static int __Pyx_ParseKeywords( + PyObject *kwds, + PyObject * const *kwvalues, + PyObject ** const argnames[], + PyObject *kwds2, + PyObject *values[], + Py_ssize_t num_pos_args, + Py_ssize_t num_kwargs, + const char* function_name, + int ignore_unknown_kwargs) +{ + if (CYTHON_METH_FASTCALL && likely(PyTuple_Check(kwds))) + return __Pyx_ParseKeywordsTuple(kwds, kwvalues, argnames, kwds2, values, num_pos_args, num_kwargs, function_name, ignore_unknown_kwargs); + else if (kwds2) + return __Pyx_ParseKeywordDictToDict(kwds, argnames, kwds2, values, num_pos_args, function_name); + else + return __Pyx_ParseKeywordDict(kwds, argnames, values, num_pos_args, num_kwargs, function_name, ignore_unknown_kwargs); +} + +/* RaiseArgTupleInvalid */ +static void __Pyx_RaiseArgtupleInvalid( + const char* func_name, + int exact, + Py_ssize_t num_min, + Py_ssize_t num_max, + Py_ssize_t num_found) +{ + Py_ssize_t num_expected; + const char *more_or_less; + if (num_found < num_min) { + num_expected = num_min; + more_or_less = "at least"; + } else { + num_expected = num_max; + more_or_less = "at most"; + } + if (exact) { + more_or_less = "exactly"; + } + PyErr_Format(PyExc_TypeError, + "%.200s() takes %.8s %" CYTHON_FORMAT_SSIZE_T "d positional argument%.1s (%" CYTHON_FORMAT_SSIZE_T "d given)", + func_name, more_or_less, num_expected, + (num_expected == 1) ? "" : "s", num_found); +} + +/* PyObjectVectorCallKwBuilder (used by PyObjectVectorCallMethodKwBuilder) */ +#if CYTHON_VECTORCALL +static int __Pyx_VectorcallBuilder_AddArg(PyObject *key, PyObject *value, PyObject *builder, PyObject **args, int n) { + (void)__Pyx_PyObject_FastCallDict; + if (__Pyx_PyTuple_SET_ITEM(builder, n, key) != (0)) return -1; + Py_INCREF(key); + args[n] = value; + return 0; +} +CYTHON_UNUSED static int __Pyx_VectorcallBuilder_AddArg_Check(PyObject *key, PyObject *value, PyObject *builder, PyObject **args, int n) { + (void)__Pyx_VectorcallBuilder_AddArgStr; + if (unlikely(!PyUnicode_Check(key))) { + PyErr_SetString(PyExc_TypeError, "keywords must be strings"); + return -1; + } + return __Pyx_VectorcallBuilder_AddArg(key, value, builder, args, n); +} +static int __Pyx_VectorcallBuilder_AddArgStr(const char *key, PyObject *value, PyObject *builder, PyObject **args, int n) { + PyObject *pyKey = PyUnicode_FromString(key); + if (!pyKey) return -1; + return __Pyx_VectorcallBuilder_AddArg(pyKey, value, builder, args, n); +} +#else // CYTHON_VECTORCALL +CYTHON_UNUSED static int __Pyx_VectorcallBuilder_AddArg_Check(PyObject *key, PyObject *value, PyObject *builder, CYTHON_UNUSED PyObject **args, CYTHON_UNUSED int n) { + if (unlikely(!PyUnicode_Check(key))) { + PyErr_SetString(PyExc_TypeError, "keywords must be strings"); + return -1; + } + return PyDict_SetItem(builder, key, value); +} +#endif + +/* PyObjectVectorCallMethodKwBuilder */ +#if !CYTHON_VECTORCALL || PY_VERSION_HEX < 0x03090000 +static PyObject *__Pyx_Object_VectorcallMethod_CallFromBuilder(PyObject *name, PyObject *const *args, size_t nargsf, PyObject *kwnames) { + PyObject *result; + PyObject *obj = PyObject_GetAttr(args[0], name); + if (unlikely(!obj)) + return NULL; + result = __Pyx_Object_Vectorcall_CallFromBuilder(obj, args+1, nargsf-1, kwnames); + Py_DECREF(obj); + return result; +} +#endif + +/* PyDictVersioning (used by GetModuleGlobalName) */ +#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj) { + PyObject *dict = Py_TYPE(obj)->tp_dict; + return likely(dict) ? __PYX_GET_DICT_VERSION(dict) : 0; +} +static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj) { + PyObject **dictptr = NULL; + Py_ssize_t offset = Py_TYPE(obj)->tp_dictoffset; + if (offset) { +#if CYTHON_COMPILING_IN_CPYTHON + dictptr = (likely(offset > 0)) ? (PyObject **) ((char *)obj + offset) : _PyObject_GetDictPtr(obj); +#else + dictptr = _PyObject_GetDictPtr(obj); +#endif + } + return (dictptr && *dictptr) ? __PYX_GET_DICT_VERSION(*dictptr) : 0; +} +static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version) { + PyObject *dict = Py_TYPE(obj)->tp_dict; + if (unlikely(!dict) || unlikely(tp_dict_version != __PYX_GET_DICT_VERSION(dict))) + return 0; + return obj_dict_version == __Pyx_get_object_dict_version(obj); +} +#endif + +/* GetModuleGlobalName */ +#if CYTHON_USE_DICT_VERSIONS +static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value) +#else +static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name) +#endif +{ + PyObject *result; +#if CYTHON_COMPILING_IN_LIMITED_API + if (unlikely(!__pyx_m)) { + if (!PyErr_Occurred()) + PyErr_SetNone(PyExc_NameError); + return NULL; + } + result = PyObject_GetAttr(__pyx_m, name); + if (likely(result)) { + return result; + } + PyErr_Clear(); +#elif CYTHON_AVOID_BORROWED_REFS || CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS + if (unlikely(__Pyx_PyDict_GetItemRef(__pyx_mstate_global->__pyx_d, name, &result) == -1)) PyErr_Clear(); + __PYX_UPDATE_DICT_CACHE(__pyx_mstate_global->__pyx_d, result, *dict_cached_value, *dict_version) + if (likely(result)) { + return result; + } +#else + result = _PyDict_GetItem_KnownHash(__pyx_mstate_global->__pyx_d, name, ((PyASCIIObject *) name)->hash); + __PYX_UPDATE_DICT_CACHE(__pyx_mstate_global->__pyx_d, result, *dict_cached_value, *dict_version) + if (likely(result)) { + return __Pyx_NewRef(result); + } + PyErr_Clear(); +#endif + return __Pyx_GetBuiltinName(name); +} + +/* JoinPyUnicode */ +static PyObject* __Pyx_PyUnicode_Join(PyObject** values, Py_ssize_t value_count, Py_ssize_t result_ulength, + Py_UCS4 max_char) { +#if CYTHON_USE_UNICODE_INTERNALS && CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + PyObject *result_uval; + int result_ukind, kind_shift; + Py_ssize_t i, char_pos; + void *result_udata; + if (max_char > 1114111) max_char = 1114111; + result_uval = PyUnicode_New(result_ulength, max_char); + if (unlikely(!result_uval)) return NULL; + result_ukind = (max_char <= 255) ? PyUnicode_1BYTE_KIND : (max_char <= 65535) ? PyUnicode_2BYTE_KIND : PyUnicode_4BYTE_KIND; + kind_shift = (result_ukind == PyUnicode_4BYTE_KIND) ? 2 : result_ukind - 1; + result_udata = PyUnicode_DATA(result_uval); + assert(kind_shift == 2 || kind_shift == 1 || kind_shift == 0); + if (unlikely((PY_SSIZE_T_MAX >> kind_shift) - result_ulength < 0)) + goto overflow; + char_pos = 0; + for (i=0; i < value_count; i++) { + int ukind; + Py_ssize_t ulength; + void *udata; + PyObject *uval = values[i]; + #if !CYTHON_COMPILING_IN_LIMITED_API + if (__Pyx_PyUnicode_READY(uval) == (-1)) + goto bad; + #endif + ulength = __Pyx_PyUnicode_GET_LENGTH(uval); + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely(ulength < 0)) goto bad; + #endif + if (unlikely(!ulength)) + continue; + if (unlikely((PY_SSIZE_T_MAX >> kind_shift) - ulength < char_pos)) + goto overflow; + ukind = __Pyx_PyUnicode_KIND(uval); + udata = __Pyx_PyUnicode_DATA(uval); + if (ukind == result_ukind) { + memcpy((char *)result_udata + (char_pos << kind_shift), udata, (size_t) (ulength << kind_shift)); + } else { + #if PY_VERSION_HEX >= 0x030d0000 + if (unlikely(PyUnicode_CopyCharacters(result_uval, char_pos, uval, 0, ulength) < 0)) goto bad; + #elif CYTHON_COMPILING_IN_CPYTHON || defined(_PyUnicode_FastCopyCharacters) + _PyUnicode_FastCopyCharacters(result_uval, char_pos, uval, 0, ulength); + #else + Py_ssize_t j; + for (j=0; j < ulength; j++) { + Py_UCS4 uchar = __Pyx_PyUnicode_READ(ukind, udata, j); + __Pyx_PyUnicode_WRITE(result_ukind, result_udata, char_pos+j, uchar); + } + #endif + } + char_pos += ulength; + } + return result_uval; +overflow: + PyErr_SetString(PyExc_OverflowError, "join() result is too long for a Python string"); +bad: + Py_DECREF(result_uval); + return NULL; +#else + Py_ssize_t i; + PyObject *result = NULL; + PyObject *value_tuple = PyTuple_New(value_count); + if (unlikely(!value_tuple)) return NULL; + CYTHON_UNUSED_VAR(max_char); + CYTHON_UNUSED_VAR(result_ulength); + for (i=0; i__pyx_empty_unicode, value_tuple); +bad: + Py_DECREF(value_tuple); + return result; +#endif +} + +/* GetItemInt */ +static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) { + PyObject *r; + if (unlikely(!j)) return NULL; + r = PyObject_GetItem(o, j); + Py_DECREF(j); + return r; +} +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, + int wraparound, int boundscheck, int unsafe_shared) { + CYTHON_MAYBE_UNUSED_VAR(unsafe_shared); +#if CYTHON_ASSUME_SAFE_SIZE + Py_ssize_t wrapped_i = i; + if (wraparound & unlikely(i < 0)) { + wrapped_i += PyList_GET_SIZE(o); + } + if ((CYTHON_AVOID_BORROWED_REFS || CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS || !CYTHON_ASSUME_SAFE_MACROS)) { + return __Pyx_PyList_GetItemRefFast(o, wrapped_i, unsafe_shared); + } else + if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyList_GET_SIZE(o)))) { + return __Pyx_NewRef(PyList_GET_ITEM(o, wrapped_i)); + } + return __Pyx_GetItemInt_Generic(o, PyLong_FromSsize_t(i)); +#else + (void)wraparound; + (void)boundscheck; + return PySequence_GetItem(o, i); +#endif +} +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, + int wraparound, int boundscheck, int unsafe_shared) { + CYTHON_MAYBE_UNUSED_VAR(unsafe_shared); +#if CYTHON_ASSUME_SAFE_SIZE && CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + Py_ssize_t wrapped_i = i; + if (wraparound & unlikely(i < 0)) { + wrapped_i += PyTuple_GET_SIZE(o); + } + if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyTuple_GET_SIZE(o)))) { + return __Pyx_NewRef(PyTuple_GET_ITEM(o, wrapped_i)); + } + return __Pyx_GetItemInt_Generic(o, PyLong_FromSsize_t(i)); +#else + (void)wraparound; + (void)boundscheck; + return PySequence_GetItem(o, i); +#endif +} +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, int is_list, + int wraparound, int boundscheck, int unsafe_shared) { + CYTHON_MAYBE_UNUSED_VAR(unsafe_shared); +#if CYTHON_ASSUME_SAFE_MACROS && CYTHON_ASSUME_SAFE_SIZE + if (is_list || PyList_CheckExact(o)) { + Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o); + if ((CYTHON_AVOID_BORROWED_REFS || CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS)) { + return __Pyx_PyList_GetItemRefFast(o, n, unsafe_shared); + } else if ((!boundscheck) || (likely(__Pyx_is_valid_index(n, PyList_GET_SIZE(o))))) { + return __Pyx_NewRef(PyList_GET_ITEM(o, n)); + } + } else + #if !CYTHON_AVOID_BORROWED_REFS + if (PyTuple_CheckExact(o)) { + Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o); + if ((!boundscheck) || likely(__Pyx_is_valid_index(n, PyTuple_GET_SIZE(o)))) { + return __Pyx_NewRef(PyTuple_GET_ITEM(o, n)); + } + } else + #endif +#endif +#if CYTHON_USE_TYPE_SLOTS && !CYTHON_COMPILING_IN_PYPY + { + PyMappingMethods *mm = Py_TYPE(o)->tp_as_mapping; + PySequenceMethods *sm = Py_TYPE(o)->tp_as_sequence; + if (!is_list && mm && mm->mp_subscript) { + PyObject *r, *key = PyLong_FromSsize_t(i); + if (unlikely(!key)) return NULL; + r = mm->mp_subscript(o, key); + Py_DECREF(key); + return r; + } + if (is_list || likely(sm && sm->sq_item)) { + if (wraparound && unlikely(i < 0) && likely(sm->sq_length)) { + Py_ssize_t l = sm->sq_length(o); + if (likely(l >= 0)) { + i += l; + } else { + if (!PyErr_ExceptionMatches(PyExc_OverflowError)) + return NULL; + PyErr_Clear(); + } + } + return sm->sq_item(o, i); + } + } +#else + if (is_list || !PyMapping_Check(o)) { + return PySequence_GetItem(o, i); + } +#endif + (void)wraparound; + (void)boundscheck; + return __Pyx_GetItemInt_Generic(o, PyLong_FromSsize_t(i)); +} + +/* HasAttr (used by ImportImpl) */ +#if __PYX_LIMITED_VERSION_HEX < 0x030d0000 +static CYTHON_INLINE int __Pyx_HasAttr(PyObject *o, PyObject *n) { + PyObject *r; + if (unlikely(!PyUnicode_Check(n))) { + PyErr_SetString(PyExc_TypeError, + "hasattr(): attribute name must be string"); + return -1; + } + r = __Pyx_PyObject_GetAttrStrNoError(o, n); + if (!r) { + return (unlikely(PyErr_Occurred())) ? -1 : 0; + } else { + Py_DECREF(r); + return 1; + } +} +#endif + +/* ImportImpl (used by Import) */ +static int __Pyx__Import_GetModule(PyObject *qualname, PyObject **module) { + PyObject *imported_module = PyImport_GetModule(qualname); + if (unlikely(!imported_module)) { + *module = NULL; + if (PyErr_Occurred()) { + return -1; + } + return 0; + } + *module = imported_module; + return 1; +} +static int __Pyx__Import_Lookup(PyObject *qualname, PyObject *const *imported_names, Py_ssize_t len_imported_names, PyObject **module) { + PyObject *imported_module; + PyObject *top_level_package_name; + Py_ssize_t i; + int status, module_found; + Py_ssize_t dot_index; + module_found = __Pyx__Import_GetModule(qualname, &imported_module); + if (unlikely(!module_found || module_found == -1)) { + *module = NULL; + return module_found; + } + if (imported_names) { + for (i = 0; i < len_imported_names; i++) { + PyObject *imported_name = imported_names[i]; +#if __PYX_LIMITED_VERSION_HEX < 0x030d0000 + int has_imported_attribute = PyObject_HasAttr(imported_module, imported_name); +#else + int has_imported_attribute = PyObject_HasAttrWithError(imported_module, imported_name); + if (unlikely(has_imported_attribute == -1)) goto error; +#endif + if (!has_imported_attribute) { + goto not_found; + } + } + *module = imported_module; + return 1; + } + dot_index = PyUnicode_FindChar(qualname, '.', 0, PY_SSIZE_T_MAX, 1); + if (dot_index == -1) { + *module = imported_module; + return 1; + } + if (unlikely(dot_index == -2)) goto error; + top_level_package_name = PyUnicode_Substring(qualname, 0, dot_index); + if (unlikely(!top_level_package_name)) goto error; + Py_DECREF(imported_module); + status = __Pyx__Import_GetModule(top_level_package_name, module); + Py_DECREF(top_level_package_name); + return status; +error: + Py_DECREF(imported_module); + *module = NULL; + return -1; +not_found: + Py_DECREF(imported_module); + *module = NULL; + return 0; +} +static PyObject *__Pyx__Import(PyObject *name, PyObject *const *imported_names, Py_ssize_t len_imported_names, PyObject *qualname, PyObject *moddict, int level) { + PyObject *module = 0; + PyObject *empty_dict = 0; + PyObject *from_list = 0; + int module_found; + if (!qualname) { + qualname = name; + } + module_found = __Pyx__Import_Lookup(qualname, imported_names, len_imported_names, &module); + if (likely(module_found == 1)) { + return module; + } else if (unlikely(module_found == -1)) { + return NULL; + } + empty_dict = PyDict_New(); + if (unlikely(!empty_dict)) + goto bad; + if (imported_names) { +#if CYTHON_COMPILING_IN_CPYTHON + from_list = __Pyx_PyList_FromArray(imported_names, len_imported_names); + if (unlikely(!from_list)) + goto bad; +#else + from_list = PyList_New(len_imported_names); + if (unlikely(!from_list)) goto bad; + for (Py_ssize_t i=0; i__pyx_d, level); +} + +/* PyObjectFastCallMethod */ +#if !CYTHON_VECTORCALL || PY_VERSION_HEX < 0x03090000 +static PyObject *__Pyx_PyObject_FastCallMethod(PyObject *name, PyObject *const *args, size_t nargsf) { + PyObject *result; + PyObject *attr = PyObject_GetAttr(args[0], name); + if (unlikely(!attr)) + return NULL; + result = __Pyx_PyObject_FastCall(attr, args+1, nargsf - 1); + Py_DECREF(attr); + return result; +} +#endif + +/* GetException (used by pep479) */ +#if CYTHON_FAST_THREAD_STATE +static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) +#else +static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) +#endif +{ + PyObject *local_type = NULL, *local_value, *local_tb = NULL; +#if CYTHON_FAST_THREAD_STATE + PyObject *tmp_type, *tmp_value, *tmp_tb; + #if PY_VERSION_HEX >= 0x030C0000 + local_value = tstate->current_exception; + tstate->current_exception = 0; + #else + local_type = tstate->curexc_type; + local_value = tstate->curexc_value; + local_tb = tstate->curexc_traceback; + tstate->curexc_type = 0; + tstate->curexc_value = 0; + tstate->curexc_traceback = 0; + #endif +#elif __PYX_LIMITED_VERSION_HEX > 0x030C0000 + local_value = PyErr_GetRaisedException(); +#else + PyErr_Fetch(&local_type, &local_value, &local_tb); +#endif +#if __PYX_LIMITED_VERSION_HEX > 0x030C0000 + if (likely(local_value)) { + local_type = (PyObject*) Py_TYPE(local_value); + Py_INCREF(local_type); + local_tb = PyException_GetTraceback(local_value); + } +#else + PyErr_NormalizeException(&local_type, &local_value, &local_tb); +#if CYTHON_FAST_THREAD_STATE + if (unlikely(tstate->curexc_type)) +#else + if (unlikely(PyErr_Occurred())) +#endif + goto bad; + if (local_tb) { + if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0)) + goto bad; + } +#endif // __PYX_LIMITED_VERSION_HEX > 0x030C0000 + Py_XINCREF(local_tb); + Py_XINCREF(local_type); + Py_XINCREF(local_value); + *type = local_type; + *value = local_value; + *tb = local_tb; +#if CYTHON_FAST_THREAD_STATE + #if CYTHON_USE_EXC_INFO_STACK + { + _PyErr_StackItem *exc_info = tstate->exc_info; + #if PY_VERSION_HEX >= 0x030B00a4 + tmp_value = exc_info->exc_value; + exc_info->exc_value = local_value; + tmp_type = NULL; + tmp_tb = NULL; + Py_XDECREF(local_type); + Py_XDECREF(local_tb); + #else + tmp_type = exc_info->exc_type; + tmp_value = exc_info->exc_value; + tmp_tb = exc_info->exc_traceback; + exc_info->exc_type = local_type; + exc_info->exc_value = local_value; + exc_info->exc_traceback = local_tb; + #endif + } + #else + tmp_type = tstate->exc_type; + tmp_value = tstate->exc_value; + tmp_tb = tstate->exc_traceback; + tstate->exc_type = local_type; + tstate->exc_value = local_value; + tstate->exc_traceback = local_tb; + #endif + Py_XDECREF(tmp_type); + Py_XDECREF(tmp_value); + Py_XDECREF(tmp_tb); +#elif __PYX_LIMITED_VERSION_HEX >= 0x030b0000 + PyErr_SetHandledException(local_value); + Py_XDECREF(local_value); + Py_XDECREF(local_type); + Py_XDECREF(local_tb); +#else + PyErr_SetExcInfo(local_type, local_value, local_tb); +#endif + return 0; +#if __PYX_LIMITED_VERSION_HEX <= 0x030C0000 +bad: + *type = 0; + *value = 0; + *tb = 0; + Py_XDECREF(local_type); + Py_XDECREF(local_value); + Py_XDECREF(local_tb); + return -1; +#endif +} + +/* pep479 */ +static void __Pyx_Generator_Replace_StopIteration(int in_async_gen) { + PyObject *exc, *val, *tb, *cur_exc, *new_exc; + __Pyx_PyThreadState_declare + int is_async_stopiteration = 0; + CYTHON_MAYBE_UNUSED_VAR(in_async_gen); + __Pyx_PyThreadState_assign + cur_exc = __Pyx_PyErr_CurrentExceptionType(); + if (likely(!__Pyx_PyErr_GivenExceptionMatches(cur_exc, PyExc_StopIteration))) { + if (in_async_gen && unlikely(__Pyx_PyErr_GivenExceptionMatches(cur_exc, PyExc_StopAsyncIteration))) { + is_async_stopiteration = 1; + } else { + return; + } + } + __Pyx_GetException(&exc, &val, &tb); + Py_XDECREF(exc); + Py_XDECREF(tb); + new_exc = PyObject_CallFunction(PyExc_RuntimeError, "s", + is_async_stopiteration ? "async generator raised StopAsyncIteration" : + in_async_gen ? "async generator raised StopIteration" : + "generator raised StopIteration"); + if (!new_exc) { + Py_XDECREF(val); + return; + } + PyException_SetCause(new_exc, val); // steals ref to val + PyErr_SetObject(PyExc_RuntimeError, new_exc); +} + +/* ArgTypeTestFunc (used by ArgTypeTest) */ +static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact) +{ + __Pyx_TypeName type_name; + __Pyx_TypeName obj_type_name; + PyObject *extra_info = __pyx_mstate_global->__pyx_empty_unicode; + int from_annotation_subclass = 0; + if (unlikely(!type)) { + PyErr_SetString(PyExc_SystemError, "Missing type object"); + return 0; + } + else if (!exact) { + if (likely(__Pyx_TypeCheck(obj, type))) return 1; + } else if (exact == 2) { + if (__Pyx_TypeCheck(obj, type)) { + from_annotation_subclass = 1; + extra_info = __pyx_mstate_global->__pyx_kp_u_Note_that_Cython_is_deliberately; + } + } + type_name = __Pyx_PyType_GetFullyQualifiedName(type); + obj_type_name = __Pyx_PyType_GetFullyQualifiedName(Py_TYPE(obj)); + PyErr_Format(PyExc_TypeError, + "Argument '%.200s' has incorrect type (expected " __Pyx_FMT_TYPENAME + ", got " __Pyx_FMT_TYPENAME ")" +#if __PYX_LIMITED_VERSION_HEX < 0x030C0000 + "%s%U" +#endif + , name, type_name, obj_type_name +#if __PYX_LIMITED_VERSION_HEX < 0x030C0000 + , (from_annotation_subclass ? ". " : ""), extra_info +#endif + ); +#if __PYX_LIMITED_VERSION_HEX >= 0x030C0000 + if (exact == 2 && from_annotation_subclass) { + PyObject *res; + PyObject *vargs[2]; + vargs[0] = PyErr_GetRaisedException(); + vargs[1] = extra_info; + res = PyObject_VectorcallMethod(__pyx_mstate_global->__pyx_kp_u_add_note, vargs, 2, NULL); + Py_XDECREF(res); + PyErr_SetRaisedException(vargs[0]); + } +#endif + __Pyx_DECREF_TypeName(type_name); + __Pyx_DECREF_TypeName(obj_type_name); + return 0; +} + +/* GetTopmostException (used by SaveResetException) */ +#if CYTHON_USE_EXC_INFO_STACK && CYTHON_FAST_THREAD_STATE +static _PyErr_StackItem * +__Pyx_PyErr_GetTopmostException(PyThreadState *tstate) +{ + _PyErr_StackItem *exc_info = tstate->exc_info; + while ((exc_info->exc_value == NULL || exc_info->exc_value == Py_None) && + exc_info->previous_item != NULL) + { + exc_info = exc_info->previous_item; + } + return exc_info; +} +#endif + +/* SaveResetException */ +#if CYTHON_FAST_THREAD_STATE +static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { + #if CYTHON_USE_EXC_INFO_STACK && PY_VERSION_HEX >= 0x030B00a4 + _PyErr_StackItem *exc_info = __Pyx_PyErr_GetTopmostException(tstate); + PyObject *exc_value = exc_info->exc_value; + if (exc_value == NULL || exc_value == Py_None) { + *value = NULL; + *type = NULL; + *tb = NULL; + } else { + *value = exc_value; + Py_INCREF(*value); + *type = (PyObject*) Py_TYPE(exc_value); + Py_INCREF(*type); + *tb = PyException_GetTraceback(exc_value); + } + #elif CYTHON_USE_EXC_INFO_STACK + _PyErr_StackItem *exc_info = __Pyx_PyErr_GetTopmostException(tstate); + *type = exc_info->exc_type; + *value = exc_info->exc_value; + *tb = exc_info->exc_traceback; + Py_XINCREF(*type); + Py_XINCREF(*value); + Py_XINCREF(*tb); + #else + *type = tstate->exc_type; + *value = tstate->exc_value; + *tb = tstate->exc_traceback; + Py_XINCREF(*type); + Py_XINCREF(*value); + Py_XINCREF(*tb); + #endif +} +static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { + #if CYTHON_USE_EXC_INFO_STACK && PY_VERSION_HEX >= 0x030B00a4 + _PyErr_StackItem *exc_info = tstate->exc_info; + PyObject *tmp_value = exc_info->exc_value; + exc_info->exc_value = value; + Py_XDECREF(tmp_value); + Py_XDECREF(type); + Py_XDECREF(tb); + #else + PyObject *tmp_type, *tmp_value, *tmp_tb; + #if CYTHON_USE_EXC_INFO_STACK + _PyErr_StackItem *exc_info = tstate->exc_info; + tmp_type = exc_info->exc_type; + tmp_value = exc_info->exc_value; + tmp_tb = exc_info->exc_traceback; + exc_info->exc_type = type; + exc_info->exc_value = value; + exc_info->exc_traceback = tb; + #else + tmp_type = tstate->exc_type; + tmp_value = tstate->exc_value; + tmp_tb = tstate->exc_traceback; + tstate->exc_type = type; + tstate->exc_value = value; + tstate->exc_traceback = tb; + #endif + Py_XDECREF(tmp_type); + Py_XDECREF(tmp_value); + Py_XDECREF(tmp_tb); + #endif +} +#endif + +/* RejectKeywords */ +static void __Pyx_RejectKeywords(const char* function_name, PyObject *kwds) { + PyObject *key = NULL; + if (CYTHON_METH_FASTCALL && likely(PyTuple_Check(kwds))) { + key = __Pyx_PySequence_ITEM(kwds, 0); + } else { +#if CYTHON_AVOID_BORROWED_REFS + PyObject *pos = NULL; +#else + Py_ssize_t pos = 0; +#endif +#if !CYTHON_COMPILING_IN_PYPY || defined(PyArg_ValidateKeywordArguments) + if (unlikely(!PyArg_ValidateKeywordArguments(kwds))) return; +#endif + __Pyx_PyDict_NextRef(kwds, &pos, &key, NULL); +#if CYTHON_AVOID_BORROWED_REFS + Py_XDECREF(pos); +#endif + } + if (likely(key)) { + PyErr_Format(PyExc_TypeError, + "%s() got an unexpected keyword argument '%U'", + function_name, key); + Py_DECREF(key); + } +} + +/* ObjectGetItem */ +#if CYTHON_USE_TYPE_SLOTS +static PyObject *__Pyx_PyObject_GetIndex(PyObject *obj, PyObject *index) { + PyObject *runerr = NULL; + Py_ssize_t key_value; + key_value = __Pyx_PyIndex_AsSsize_t(index); + if (likely(key_value != -1 || !(runerr = PyErr_Occurred()))) { + return __Pyx_GetItemInt_Fast(obj, key_value, 0, 1, 1, 1); + } + if (PyErr_GivenExceptionMatches(runerr, PyExc_OverflowError)) { + __Pyx_TypeName index_type_name = __Pyx_PyType_GetFullyQualifiedName(Py_TYPE(index)); + PyErr_Clear(); + PyErr_Format(PyExc_IndexError, + "cannot fit '" __Pyx_FMT_TYPENAME "' into an index-sized integer", index_type_name); + __Pyx_DECREF_TypeName(index_type_name); + } + return NULL; +} +static PyObject *__Pyx_PyObject_GetItem_Slow(PyObject *obj, PyObject *key) { + __Pyx_TypeName obj_type_name; + if (likely(PyType_Check(obj))) { + PyObject *meth = __Pyx_PyObject_GetAttrStrNoError(obj, __pyx_mstate_global->__pyx_n_u_class_getitem); + if (!meth) { + PyErr_Clear(); + } else { + PyObject *result = __Pyx_PyObject_CallOneArg(meth, key); + Py_DECREF(meth); + return result; + } + } + obj_type_name = __Pyx_PyType_GetFullyQualifiedName(Py_TYPE(obj)); + PyErr_Format(PyExc_TypeError, + "'" __Pyx_FMT_TYPENAME "' object is not subscriptable", obj_type_name); + __Pyx_DECREF_TypeName(obj_type_name); + return NULL; +} +static PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject *key) { + PyTypeObject *tp = Py_TYPE(obj); + PyMappingMethods *mm = tp->tp_as_mapping; + PySequenceMethods *sm = tp->tp_as_sequence; + if (likely(mm && mm->mp_subscript)) { + return mm->mp_subscript(obj, key); + } + if (likely(sm && sm->sq_item)) { + return __Pyx_PyObject_GetIndex(obj, key); + } + return __Pyx_PyObject_GetItem_Slow(obj, key); +} +#endif + +/* PyObjectFormatAndDecref */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_FormatSimpleAndDecref(PyObject* s, PyObject* f) { + if (unlikely(!s)) return NULL; + if (likely(PyUnicode_CheckExact(s))) return s; + return __Pyx_PyObject_FormatAndDecref(s, f); +} +static CYTHON_INLINE PyObject* __Pyx_PyObject_FormatAndDecref(PyObject* s, PyObject* f) { + PyObject *result; + if (unlikely(!s)) return NULL; + result = PyObject_Format(s, f); + Py_DECREF(s); + return result; +} + +/* CIntToDigits (used by CIntToPyUnicode) */ +static const char DIGIT_PAIRS_10[2*10*10+1] = { + "00010203040506070809" + "10111213141516171819" + "20212223242526272829" + "30313233343536373839" + "40414243444546474849" + "50515253545556575859" + "60616263646566676869" + "70717273747576777879" + "80818283848586878889" + "90919293949596979899" +}; +static const char DIGIT_PAIRS_8[2*8*8+1] = { + "0001020304050607" + "1011121314151617" + "2021222324252627" + "3031323334353637" + "4041424344454647" + "5051525354555657" + "6061626364656667" + "7071727374757677" +}; +static const char DIGITS_HEX[2*16+1] = { + "0123456789abcdef" + "0123456789ABCDEF" +}; + +/* BuildPyUnicode (used by COrdinalToPyUnicode) */ +static PyObject* __Pyx_PyUnicode_BuildFromAscii(Py_ssize_t ulength, const char* chars, int clength, + int prepend_sign, char padding_char) { + PyObject *uval; + Py_ssize_t uoffset = ulength - clength; +#if CYTHON_USE_UNICODE_INTERNALS + Py_ssize_t i; + void *udata; + uval = PyUnicode_New(ulength, 127); + if (unlikely(!uval)) return NULL; + udata = PyUnicode_DATA(uval); + if (uoffset > 0) { + i = 0; + if (prepend_sign) { + __Pyx_PyUnicode_WRITE(PyUnicode_1BYTE_KIND, udata, 0, '-'); + i++; + } + for (; i < uoffset; i++) { + __Pyx_PyUnicode_WRITE(PyUnicode_1BYTE_KIND, udata, i, padding_char); + } + } + for (i=0; i < clength; i++) { + __Pyx_PyUnicode_WRITE(PyUnicode_1BYTE_KIND, udata, uoffset+i, chars[i]); + } +#else + { + PyObject *sign = NULL, *padding = NULL; + uval = NULL; + if (uoffset > 0) { + prepend_sign = !!prepend_sign; + if (uoffset > prepend_sign) { + padding = PyUnicode_FromOrdinal(padding_char); + if (likely(padding) && uoffset > prepend_sign + 1) { + PyObject *tmp = PySequence_Repeat(padding, uoffset - prepend_sign); + Py_DECREF(padding); + padding = tmp; + } + if (unlikely(!padding)) goto done_or_error; + } + if (prepend_sign) { + sign = PyUnicode_FromOrdinal('-'); + if (unlikely(!sign)) goto done_or_error; + } + } + uval = PyUnicode_DecodeASCII(chars, clength, NULL); + if (likely(uval) && padding) { + PyObject *tmp = PyUnicode_Concat(padding, uval); + Py_DECREF(uval); + uval = tmp; + } + if (likely(uval) && sign) { + PyObject *tmp = PyUnicode_Concat(sign, uval); + Py_DECREF(uval); + uval = tmp; + } +done_or_error: + Py_XDECREF(padding); + Py_XDECREF(sign); + } +#endif + return uval; +} + +/* COrdinalToPyUnicode (used by CIntToPyUnicode) */ +static CYTHON_INLINE int __Pyx_CheckUnicodeValue(int value) { + return value <= 1114111; +} +static PyObject* __Pyx_PyUnicode_FromOrdinal_Padded(int value, Py_ssize_t ulength, char padding_char) { + Py_ssize_t padding_length = ulength - 1; + if (likely((padding_length <= 250) && (value < 0xD800 || value > 0xDFFF))) { + char chars[256]; + if (value <= 255) { + memset(chars, padding_char, (size_t) padding_length); + chars[ulength-1] = (char) value; + return PyUnicode_DecodeLatin1(chars, ulength, NULL); + } + char *cpos = chars + sizeof(chars); + if (value < 0x800) { + *--cpos = (char) (0x80 | (value & 0x3f)); + value >>= 6; + *--cpos = (char) (0xc0 | (value & 0x1f)); + } else if (value < 0x10000) { + *--cpos = (char) (0x80 | (value & 0x3f)); + value >>= 6; + *--cpos = (char) (0x80 | (value & 0x3f)); + value >>= 6; + *--cpos = (char) (0xe0 | (value & 0x0f)); + } else { + *--cpos = (char) (0x80 | (value & 0x3f)); + value >>= 6; + *--cpos = (char) (0x80 | (value & 0x3f)); + value >>= 6; + *--cpos = (char) (0x80 | (value & 0x3f)); + value >>= 6; + *--cpos = (char) (0xf0 | (value & 0x07)); + } + cpos -= padding_length; + memset(cpos, padding_char, (size_t) padding_length); + return PyUnicode_DecodeUTF8(cpos, chars + sizeof(chars) - cpos, NULL); + } + if (value <= 127 && CYTHON_USE_UNICODE_INTERNALS) { + const char chars[1] = {(char) value}; + return __Pyx_PyUnicode_BuildFromAscii(ulength, chars, 1, 0, padding_char); + } + { + PyObject *uchar, *padding_uchar, *padding, *result; + padding_uchar = PyUnicode_FromOrdinal(padding_char); + if (unlikely(!padding_uchar)) return NULL; + padding = PySequence_Repeat(padding_uchar, padding_length); + Py_DECREF(padding_uchar); + if (unlikely(!padding)) return NULL; + uchar = PyUnicode_FromOrdinal(value); + if (unlikely(!uchar)) { + Py_DECREF(padding); + return NULL; + } + result = PyUnicode_Concat(padding, uchar); + Py_DECREF(padding); + Py_DECREF(uchar); + return result; + } +} + +/* CIntToPyUnicode */ +static CYTHON_INLINE PyObject* __Pyx_uchar___Pyx_PyUnicode_From_Py_ssize_t(Py_ssize_t value, Py_ssize_t width, char padding_char) { +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif + const Py_ssize_t neg_one = (Py_ssize_t) -1, const_zero = (Py_ssize_t) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic pop +#endif + const int is_unsigned = neg_one > const_zero; + if (unlikely(!(is_unsigned || value == 0 || value > 0) || + !(sizeof(value) <= 2 || value & ~ (Py_ssize_t) 0x01fffff || __Pyx_CheckUnicodeValue((int) value)))) { + PyErr_SetString(PyExc_OverflowError, "%c arg not in range(0x110000)"); + return NULL; + } + if (width <= 1) { + return PyUnicode_FromOrdinal((int) value); + } + return __Pyx_PyUnicode_FromOrdinal_Padded((int) value, width, padding_char); +} +static CYTHON_INLINE PyObject* __Pyx____Pyx_PyUnicode_From_Py_ssize_t(Py_ssize_t value, Py_ssize_t width, char padding_char, char format_char) { + char digits[sizeof(Py_ssize_t)*3+2]; + char *dpos, *end = digits + sizeof(Py_ssize_t)*3+2; + const char *hex_digits = DIGITS_HEX; + Py_ssize_t length, ulength; + int prepend_sign, last_one_off; + Py_ssize_t remaining; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif + const Py_ssize_t neg_one = (Py_ssize_t) -1, const_zero = (Py_ssize_t) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic pop +#endif + const int is_unsigned = neg_one > const_zero; + if (format_char == 'X') { + hex_digits += 16; + format_char = 'x'; + } + remaining = value; + last_one_off = 0; + dpos = end; + do { + int digit_pos; + switch (format_char) { + case 'o': + digit_pos = abs((int)(remaining % (8*8))); + remaining = (Py_ssize_t) (remaining / (8*8)); + dpos -= 2; + memcpy(dpos, DIGIT_PAIRS_8 + digit_pos * 2, 2); + last_one_off = (digit_pos < 8); + break; + case 'd': + digit_pos = abs((int)(remaining % (10*10))); + remaining = (Py_ssize_t) (remaining / (10*10)); + dpos -= 2; + memcpy(dpos, DIGIT_PAIRS_10 + digit_pos * 2, 2); + last_one_off = (digit_pos < 10); + break; + case 'x': + *(--dpos) = hex_digits[abs((int)(remaining % 16))]; + remaining = (Py_ssize_t) (remaining / 16); + break; + default: + assert(0); + break; + } + } while (unlikely(remaining != 0)); + assert(!last_one_off || *dpos == '0'); + dpos += last_one_off; + length = end - dpos; + ulength = length; + prepend_sign = 0; + if (!is_unsigned && value <= neg_one) { + if (padding_char == ' ' || width <= length + 1) { + *(--dpos) = '-'; + ++length; + } else { + prepend_sign = 1; + } + ++ulength; + } + if (width > ulength) { + ulength = width; + } + if (ulength == 1) { + return PyUnicode_FromOrdinal(*dpos); + } + return __Pyx_PyUnicode_BuildFromAscii(ulength, dpos, (int) length, prepend_sign, padding_char); +} + +/* RaiseUnboundLocalError */ +static void __Pyx_RaiseUnboundLocalError(const char *varname) { + PyErr_Format(PyExc_UnboundLocalError, "local variable '%s' referenced before assignment", varname); +} + +/* PyObjectGetMethod (used by PyObjectCallMethod1) */ +#if !(CYTHON_VECTORCALL && (__PYX_LIMITED_VERSION_HEX >= 0x030C0000 || (!CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x03090000))) +static int __Pyx_PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **method) { + PyObject *attr; +#if CYTHON_UNPACK_METHODS && CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_PYTYPE_LOOKUP + __Pyx_TypeName type_name; + PyTypeObject *tp = Py_TYPE(obj); + PyObject *descr; + descrgetfunc f = NULL; + PyObject **dictptr, *dict; + int meth_found = 0; + assert (*method == NULL); + if (unlikely(tp->tp_getattro != PyObject_GenericGetAttr)) { + attr = __Pyx_PyObject_GetAttrStr(obj, name); + goto try_unpack; + } + if (unlikely(tp->tp_dict == NULL) && unlikely(PyType_Ready(tp) < 0)) { + return 0; + } + descr = _PyType_Lookup(tp, name); + if (likely(descr != NULL)) { + Py_INCREF(descr); +#if defined(Py_TPFLAGS_METHOD_DESCRIPTOR) && Py_TPFLAGS_METHOD_DESCRIPTOR + if (__Pyx_PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_METHOD_DESCRIPTOR)) +#else + #ifdef __Pyx_CyFunction_USED + if (likely(PyFunction_Check(descr) || __Pyx_IS_TYPE(descr, &PyMethodDescr_Type) || __Pyx_CyFunction_Check(descr))) + #else + if (likely(PyFunction_Check(descr) || __Pyx_IS_TYPE(descr, &PyMethodDescr_Type))) + #endif +#endif + { + meth_found = 1; + } else { + f = Py_TYPE(descr)->tp_descr_get; + if (f != NULL && PyDescr_IsData(descr)) { + attr = f(descr, obj, (PyObject *)Py_TYPE(obj)); + Py_DECREF(descr); + goto try_unpack; + } + } + } + dictptr = _PyObject_GetDictPtr(obj); + if (dictptr != NULL && (dict = *dictptr) != NULL) { + Py_INCREF(dict); + attr = __Pyx_PyDict_GetItemStr(dict, name); + if (attr != NULL) { + Py_INCREF(attr); + Py_DECREF(dict); + Py_XDECREF(descr); + goto try_unpack; + } + Py_DECREF(dict); + } + if (meth_found) { + *method = descr; + return 1; + } + if (f != NULL) { + attr = f(descr, obj, (PyObject *)Py_TYPE(obj)); + Py_DECREF(descr); + goto try_unpack; + } + if (likely(descr != NULL)) { + *method = descr; + return 0; + } + type_name = __Pyx_PyType_GetFullyQualifiedName(tp); + PyErr_Format(PyExc_AttributeError, + "'" __Pyx_FMT_TYPENAME "' object has no attribute '%U'", + type_name, name); + __Pyx_DECREF_TypeName(type_name); + return 0; +#else + attr = __Pyx_PyObject_GetAttrStr(obj, name); + goto try_unpack; +#endif +try_unpack: +#if CYTHON_UNPACK_METHODS + if (likely(attr) && PyMethod_Check(attr) && likely(PyMethod_GET_SELF(attr) == obj)) { + PyObject *function = PyMethod_GET_FUNCTION(attr); + Py_INCREF(function); + Py_DECREF(attr); + *method = function; + return 1; + } +#endif + *method = attr; + return 0; +} +#endif + +/* PyObjectCallMethod1 (used by append) */ +#if !(CYTHON_VECTORCALL && (__PYX_LIMITED_VERSION_HEX >= 0x030C0000 || (!CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x03090000))) +static PyObject* __Pyx__PyObject_CallMethod1(PyObject* method, PyObject* arg) { + PyObject *result = __Pyx_PyObject_CallOneArg(method, arg); + Py_DECREF(method); + return result; +} +#endif +static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg) { +#if CYTHON_VECTORCALL && (__PYX_LIMITED_VERSION_HEX >= 0x030C0000 || (!CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x03090000)) + PyObject *args[2] = {obj, arg}; + (void) __Pyx_PyObject_CallOneArg; + (void) __Pyx_PyObject_Call2Args; + return PyObject_VectorcallMethod(method_name, args, 2 | PY_VECTORCALL_ARGUMENTS_OFFSET, NULL); +#else + PyObject *method = NULL, *result; + int is_method = __Pyx_PyObject_GetMethod(obj, method_name, &method); + if (likely(is_method)) { + result = __Pyx_PyObject_Call2Args(method, obj, arg); + Py_DECREF(method); + return result; + } + if (unlikely(!method)) return NULL; + return __Pyx__PyObject_CallMethod1(method, arg); +#endif +} + +/* append */ +static CYTHON_INLINE int __Pyx_PyObject_Append(PyObject* L, PyObject* x) { + if (likely(PyList_CheckExact(L))) { + if (unlikely(__Pyx_PyList_Append(L, x) < 0)) return -1; + } else { + PyObject* retval = __Pyx_PyObject_CallMethod1(L, __pyx_mstate_global->__pyx_n_u_append, x); + if (unlikely(!retval)) + return -1; + Py_DECREF(retval); + } + return 0; +} + +/* ExtTypeTest */ +static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) { + __Pyx_TypeName obj_type_name; + __Pyx_TypeName type_name; + if (unlikely(!type)) { + PyErr_SetString(PyExc_SystemError, "Missing type object"); + return 0; + } + if (likely(__Pyx_TypeCheck(obj, type))) + return 1; + obj_type_name = __Pyx_PyType_GetFullyQualifiedName(Py_TYPE(obj)); + type_name = __Pyx_PyType_GetFullyQualifiedName(type); + PyErr_Format(PyExc_TypeError, + "Cannot convert " __Pyx_FMT_TYPENAME " to " __Pyx_FMT_TYPENAME, + obj_type_name, type_name); + __Pyx_DECREF_TypeName(obj_type_name); + __Pyx_DECREF_TypeName(type_name); + return 0; +} + +/* DictGetItem */ +#if !CYTHON_COMPILING_IN_PYPY +static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) { + PyObject *value; + if (unlikely(__Pyx_PyDict_GetItemRef(d, key, &value) == 0)) { // no value, no error + if (unlikely(PyTuple_Check(key))) { + PyObject* args = PyTuple_Pack(1, key); + if (likely(args)) { + PyErr_SetObject(PyExc_KeyError, args); + Py_DECREF(args); + } + } else { + PyErr_SetObject(PyExc_KeyError, key); + } + } + return value; +} +#endif + +/* CIntToPyUnicode */ +static CYTHON_INLINE PyObject* __Pyx_uchar___Pyx_PyUnicode_From_long(long value, Py_ssize_t width, char padding_char) { +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif + const long neg_one = (long) -1, const_zero = (long) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic pop +#endif + const int is_unsigned = neg_one > const_zero; + if (unlikely(!(is_unsigned || value == 0 || value > 0) || + !(sizeof(value) <= 2 || value & ~ (long) 0x01fffff || __Pyx_CheckUnicodeValue((int) value)))) { + PyErr_SetString(PyExc_OverflowError, "%c arg not in range(0x110000)"); + return NULL; + } + if (width <= 1) { + return PyUnicode_FromOrdinal((int) value); + } + return __Pyx_PyUnicode_FromOrdinal_Padded((int) value, width, padding_char); +} +static CYTHON_INLINE PyObject* __Pyx____Pyx_PyUnicode_From_long(long value, Py_ssize_t width, char padding_char, char format_char) { + char digits[sizeof(long)*3+2]; + char *dpos, *end = digits + sizeof(long)*3+2; + const char *hex_digits = DIGITS_HEX; + Py_ssize_t length, ulength; + int prepend_sign, last_one_off; + long remaining; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif + const long neg_one = (long) -1, const_zero = (long) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic pop +#endif + const int is_unsigned = neg_one > const_zero; + if (format_char == 'X') { + hex_digits += 16; + format_char = 'x'; + } + remaining = value; + last_one_off = 0; + dpos = end; + do { + int digit_pos; + switch (format_char) { + case 'o': + digit_pos = abs((int)(remaining % (8*8))); + remaining = (long) (remaining / (8*8)); + dpos -= 2; + memcpy(dpos, DIGIT_PAIRS_8 + digit_pos * 2, 2); + last_one_off = (digit_pos < 8); + break; + case 'd': + digit_pos = abs((int)(remaining % (10*10))); + remaining = (long) (remaining / (10*10)); + dpos -= 2; + memcpy(dpos, DIGIT_PAIRS_10 + digit_pos * 2, 2); + last_one_off = (digit_pos < 10); + break; + case 'x': + *(--dpos) = hex_digits[abs((int)(remaining % 16))]; + remaining = (long) (remaining / 16); + break; + default: + assert(0); + break; + } + } while (unlikely(remaining != 0)); + assert(!last_one_off || *dpos == '0'); + dpos += last_one_off; + length = end - dpos; + ulength = length; + prepend_sign = 0; + if (!is_unsigned && value <= neg_one) { + if (padding_char == ' ' || width <= length + 1) { + *(--dpos) = '-'; + ++length; + } else { + prepend_sign = 1; + } + ++ulength; + } + if (width > ulength) { + ulength = width; + } + if (ulength == 1) { + return PyUnicode_FromOrdinal(*dpos); + } + return __Pyx_PyUnicode_BuildFromAscii(ulength, dpos, (int) length, prepend_sign, padding_char); +} + +/* UnicodeConcatInPlace */ +# if CYTHON_COMPILING_IN_CPYTHON +static int +__Pyx_unicode_modifiable(PyObject *unicode, int unsafe_shared) +{ + if (!__Pyx_IS_UNIQUELY_REFERENCED(unicode, unsafe_shared)) + return 0; +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX > 0x030F0000 + if (PyUnstable_Unicode_GET_CACHED_HASH(unicode) != -1) + return 0; +#endif + if (!PyUnicode_CheckExact(unicode)) + return 0; + if (PyUnicode_CHECK_INTERNED(unicode)) + return 0; + return 1; +} +static CYTHON_INLINE PyObject *__Pyx_PyUnicode_ConcatInPlaceImpl(PyObject **p_left, PyObject *right, int unsafe_shared + #if CYTHON_REFNANNY + , void* __pyx_refnanny + #endif + ) { + PyObject *left = *p_left; + Py_ssize_t left_len, right_len, new_len; + if (unlikely(__Pyx_PyUnicode_READY(left) == -1)) + return NULL; + if (unlikely(__Pyx_PyUnicode_READY(right) == -1)) + return NULL; + left_len = PyUnicode_GET_LENGTH(left); + if (left_len == 0) { + Py_INCREF(right); + return right; + } + right_len = PyUnicode_GET_LENGTH(right); + if (right_len == 0) { + Py_INCREF(left); + return left; + } + if (unlikely(left_len > PY_SSIZE_T_MAX - right_len)) { + PyErr_SetString(PyExc_OverflowError, + "strings are too large to concat"); + return NULL; + } + new_len = left_len + right_len; + if (__Pyx_unicode_modifiable(left, unsafe_shared) + && PyUnicode_CheckExact(right) + && PyUnicode_KIND(right) <= PyUnicode_KIND(left) + && !(PyUnicode_IS_ASCII(left) && !PyUnicode_IS_ASCII(right))) { + int ret; + __Pyx_GIVEREF(*p_left); + ret = PyUnicode_Resize(p_left, new_len); + __Pyx_GOTREF(*p_left); + if (unlikely(ret != 0)) + return NULL; + #if PY_VERSION_HEX >= 0x030d0000 + if (unlikely(PyUnicode_CopyCharacters(*p_left, left_len, right, 0, right_len) < 0)) return NULL; + #else + _PyUnicode_FastCopyCharacters(*p_left, left_len, right, 0, right_len); + #endif + __Pyx_INCREF(*p_left); + __Pyx_GIVEREF(*p_left); + return *p_left; + } else { + return __Pyx_PyUnicode_Concat(left, right); + } + } +#endif + +/* unicode_tailmatch */ +static int __Pyx_PyUnicode_TailmatchTuple(PyObject* s, PyObject* substrings, + Py_ssize_t start, Py_ssize_t end, int direction) { + Py_ssize_t i, count = __Pyx_PyTuple_GET_SIZE(substrings); + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely(count < 0)) return -1; + #endif + for (i = 0; i < count; i++) { + Py_ssize_t result; +#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + result = PyUnicode_Tailmatch(s, PyTuple_GET_ITEM(substrings, i), + start, end, direction); +#else + PyObject* sub = __Pyx_PySequence_ITEM(substrings, i); + if (unlikely(!sub)) return -1; + result = PyUnicode_Tailmatch(s, sub, start, end, direction); + Py_DECREF(sub); +#endif + if (result) { + return (int) result; + } + } + return 0; +} +static int __Pyx_PyUnicode_Tailmatch(PyObject* s, PyObject* substr, + Py_ssize_t start, Py_ssize_t end, int direction) { + if (unlikely(PyTuple_Check(substr))) { + return __Pyx_PyUnicode_TailmatchTuple(s, substr, start, end, direction); + } + return (int) PyUnicode_Tailmatch(s, substr, start, end, direction); +} + +/* PyUnicode_Substring */ +static CYTHON_INLINE PyObject* __Pyx_PyUnicode_Substring( + PyObject* text, Py_ssize_t start, Py_ssize_t stop) { + Py_ssize_t length; + #if !CYTHON_COMPILING_IN_LIMITED_API + if (unlikely(__Pyx_PyUnicode_READY(text) == -1)) return NULL; + #endif + length = __Pyx_PyUnicode_GET_LENGTH(text); + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely(length < 0)) return NULL; + #endif + if (start < 0) { + start += length; + if (start < 0) + start = 0; + } + if (stop < 0) + stop += length; + else if (stop > length) + stop = length; + if (stop <= start) + return __Pyx_NewRef(__pyx_mstate_global->__pyx_empty_unicode); + if (start == 0 && stop == length) + return __Pyx_NewRef(text); +#if CYTHON_COMPILING_IN_LIMITED_API + return PyUnicode_Substring(text, start, stop); +#else + return PyUnicode_FromKindAndData(PyUnicode_KIND(text), + PyUnicode_1BYTE_DATA(text) + start*PyUnicode_KIND(text), stop-start); +#endif +} + +/* GetAttr3 */ +#if __PYX_LIMITED_VERSION_HEX < 0x030d0000 +static PyObject *__Pyx_GetAttr3Default(PyObject *d) { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + if (unlikely(!__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError))) + return NULL; + __Pyx_PyErr_Clear(); + Py_INCREF(d); + return d; +} +#endif +static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *o, PyObject *n, PyObject *d) { + PyObject *r; +#if __PYX_LIMITED_VERSION_HEX >= 0x030d0000 + int res = PyObject_GetOptionalAttr(o, n, &r); + return (res != 0) ? r : __Pyx_NewRef(d); +#else + #if CYTHON_USE_TYPE_SLOTS + if (likely(PyUnicode_Check(n))) { + r = __Pyx_PyObject_GetAttrStrNoError(o, n); + if (unlikely(!r) && likely(!PyErr_Occurred())) { + r = __Pyx_NewRef(d); + } + return r; + } + #endif + r = PyObject_GetAttr(o, n); + return (likely(r)) ? r : __Pyx_GetAttr3Default(d); +#endif +} + +/* RaiseUnexpectedTypeError */ +static int +__Pyx_RaiseUnexpectedTypeError(const char *expected, PyObject *obj) +{ + __Pyx_TypeName obj_type_name = __Pyx_PyType_GetFullyQualifiedName(Py_TYPE(obj)); + PyErr_Format(PyExc_TypeError, "Expected %s, got " __Pyx_FMT_TYPENAME, + expected, obj_type_name); + __Pyx_DECREF_TypeName(obj_type_name); + return 0; +} + +/* SliceObject */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetSlice(PyObject* obj, + Py_ssize_t cstart, Py_ssize_t cstop, + PyObject** _py_start, PyObject** _py_stop, PyObject** _py_slice, + int has_cstart, int has_cstop, CYTHON_UNUSED int wraparound) { + __Pyx_TypeName obj_type_name; +#if CYTHON_USE_TYPE_SLOTS + PyMappingMethods* mp = Py_TYPE(obj)->tp_as_mapping; + if (likely(mp && mp->mp_subscript)) +#endif + { + PyObject* result; + PyObject *py_slice, *py_start, *py_stop; + if (_py_slice) { + py_slice = *_py_slice; + } else { + PyObject* owned_start = NULL; + PyObject* owned_stop = NULL; + if (_py_start) { + py_start = *_py_start; + } else { + if (has_cstart) { + owned_start = py_start = PyLong_FromSsize_t(cstart); + if (unlikely(!py_start)) goto bad; + } else + py_start = Py_None; + } + if (_py_stop) { + py_stop = *_py_stop; + } else { + if (has_cstop) { + owned_stop = py_stop = PyLong_FromSsize_t(cstop); + if (unlikely(!py_stop)) { + Py_XDECREF(owned_start); + goto bad; + } + } else + py_stop = Py_None; + } + py_slice = PySlice_New(py_start, py_stop, Py_None); + Py_XDECREF(owned_start); + Py_XDECREF(owned_stop); + if (unlikely(!py_slice)) goto bad; + } +#if CYTHON_USE_TYPE_SLOTS + result = mp->mp_subscript(obj, py_slice); +#else + result = PyObject_GetItem(obj, py_slice); +#endif + if (!_py_slice) { + Py_DECREF(py_slice); + } + return result; + } + obj_type_name = __Pyx_PyType_GetFullyQualifiedName(Py_TYPE(obj)); + PyErr_Format(PyExc_TypeError, + "'" __Pyx_FMT_TYPENAME "' object is unsliceable", obj_type_name); + __Pyx_DECREF_TypeName(obj_type_name); +bad: + return NULL; +} + +/* RaiseTooManyValuesToUnpack */ +static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) { + PyErr_Format(PyExc_ValueError, + "too many values to unpack (expected %" CYTHON_FORMAT_SSIZE_T "d)", expected); +} + +/* RaiseNeedMoreValuesToUnpack */ +static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) { + PyErr_Format(PyExc_ValueError, + "need more than %" CYTHON_FORMAT_SSIZE_T "d value%.1s to unpack", + index, (index == 1) ? "" : "s"); +} + +/* IterFinish */ +static CYTHON_INLINE int __Pyx_IterFinish(void) { + PyObject* exc_type; + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (unlikely(exc_type)) { + if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) + return -1; + __Pyx_PyErr_Clear(); + return 0; + } + return 0; +} + +/* UnpackItemEndCheck */ +static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected) { + if (unlikely(retval)) { + Py_DECREF(retval); + __Pyx_RaiseTooManyValuesError(expected); + return -1; + } + return __Pyx_IterFinish(); +} + +/* ErrOccurredWithGIL */ +static CYTHON_INLINE int __Pyx_ErrOccurredWithGIL(void) { + int err; + PyGILState_STATE _save = PyGILState_Ensure(); + err = !!PyErr_Occurred(); + PyGILState_Release(_save); + return err; +} + +/* PyObjectSetAttrStr */ +#if CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr_name, PyObject* value) { + PyTypeObject* tp = Py_TYPE(obj); + if (likely(tp->tp_setattro)) + return tp->tp_setattro(obj, attr_name, value); + return PyObject_SetAttr(obj, attr_name, value); +} +#endif + +/* PyUnicode_Unicode */ +static CYTHON_INLINE PyObject* __Pyx_PyUnicode_Unicode(PyObject *obj) { + if (unlikely(obj == Py_None)) + obj = __pyx_mstate_global->__pyx_kp_u_None; + return __Pyx_NewRef(obj); +} + +/* AllocateExtensionType */ +static PyObject *__Pyx_AllocateExtensionType(PyTypeObject *t, int is_final) { + if (is_final || likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) { + allocfunc alloc_func = __Pyx_PyType_GetSlot(t, tp_alloc, allocfunc); + return alloc_func(t, 0); + } else { + newfunc tp_new = __Pyx_PyType_TryGetSlot(&PyBaseObject_Type, tp_new, newfunc); + #if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030A0000 + if (!tp_new) { + PyObject *new_str = PyUnicode_FromString("__new__"); + if (likely(new_str)) { + PyObject *o = PyObject_CallMethodObjArgs((PyObject *)&PyBaseObject_Type, new_str, t, NULL); + Py_DECREF(new_str); + return o; + } else + return NULL; + } else + #endif + return tp_new(t, __pyx_mstate_global->__pyx_empty_tuple, 0); + } +} + +/* CallTypeTraverse */ +#if !CYTHON_USE_TYPE_SPECS || (!CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x03090000) +#else +static int __Pyx_call_type_traverse(PyObject *o, int always_call, visitproc visit, void *arg) { + #if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x03090000 + if (__Pyx_get_runtime_version() < 0x03090000) return 0; + #endif + if (!always_call) { + PyTypeObject *base = __Pyx_PyObject_GetSlot(o, tp_base, PyTypeObject*); + unsigned long flags = PyType_GetFlags(base); + if (flags & Py_TPFLAGS_HEAPTYPE) { + return 0; + } + } + Py_VISIT((PyObject*)Py_TYPE(o)); + return 0; +} +#endif + +/* FunctionExport */ +static int __Pyx_ExportFunction(PyObject *api_dict, const char *name, void (*f)(void), const char *sig) { + PyObject *cobj; + union { + void (*fp)(void); + void *p; + } tmp; + tmp.fp = f; + cobj = PyCapsule_New(tmp.p, sig, 0); + if (!cobj) + goto bad; + if (PyDict_SetItemString(api_dict, name, cobj) < 0) + goto bad; + Py_DECREF(cobj); + return 0; +bad: + Py_XDECREF(cobj); + return -1; +} + +/* GetApiDict */ +static PyObject *__Pyx_ApiExport_GetApiDict(void) { + PyObject *d; + if (__Pyx_PyDict_GetItemRef(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_pyx_capi, &d) == -1) + return NULL; + if (!d) { + d = PyDict_New(); + if (!d) + goto bad; + if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_pyx_capi, d) < 0) + goto bad; + } + return d; +bad: + Py_XDECREF(d); + return NULL; +} + +/* LimitedApiGetTypeDict (used by SetItemOnTypeDict) */ +#if CYTHON_COMPILING_IN_LIMITED_API +static Py_ssize_t __Pyx_GetTypeDictOffset(void) { + PyObject *tp_dictoffset_o; + Py_ssize_t tp_dictoffset; + tp_dictoffset_o = PyObject_GetAttrString((PyObject*)(&PyType_Type), "__dictoffset__"); + if (unlikely(!tp_dictoffset_o)) return -1; + tp_dictoffset = PyLong_AsSsize_t(tp_dictoffset_o); + Py_DECREF(tp_dictoffset_o); + if (unlikely(tp_dictoffset == 0)) { + PyErr_SetString( + PyExc_TypeError, + "'type' doesn't have a dictoffset"); + return -1; + } else if (unlikely(tp_dictoffset < 0)) { + PyErr_SetString( + PyExc_TypeError, + "'type' has an unexpected negative dictoffset. " + "Please report this as Cython bug"); + return -1; + } + return tp_dictoffset; +} +static PyObject *__Pyx_GetTypeDict(PyTypeObject *tp) { + static Py_ssize_t tp_dictoffset = 0; + if (unlikely(tp_dictoffset == 0)) { + tp_dictoffset = __Pyx_GetTypeDictOffset(); + if (unlikely(tp_dictoffset == -1 && PyErr_Occurred())) { + tp_dictoffset = 0; // try again next time? + return NULL; + } + } + return *(PyObject**)((char*)tp + tp_dictoffset); +} +#endif + +/* SetItemOnTypeDict (used by FixUpExtensionType) */ +static int __Pyx__SetItemOnTypeDict(PyTypeObject *tp, PyObject *k, PyObject *v) { + int result; + PyObject *tp_dict; +#if CYTHON_COMPILING_IN_LIMITED_API + tp_dict = __Pyx_GetTypeDict(tp); + if (unlikely(!tp_dict)) return -1; +#else + tp_dict = tp->tp_dict; +#endif + result = PyDict_SetItem(tp_dict, k, v); + if (likely(!result)) { + PyType_Modified(tp); + if (unlikely(PyObject_HasAttr(v, __pyx_mstate_global->__pyx_n_u_set_name))) { + PyObject *setNameResult = PyObject_CallMethodObjArgs(v, __pyx_mstate_global->__pyx_n_u_set_name, (PyObject *) tp, k, NULL); + if (!setNameResult) return -1; + Py_DECREF(setNameResult); + } + } + return result; +} + +/* FixUpExtensionType */ +static int __Pyx_fix_up_extension_type_from_spec(PyType_Spec *spec, PyTypeObject *type) { +#if __PYX_LIMITED_VERSION_HEX > 0x030900B1 + CYTHON_UNUSED_VAR(spec); + CYTHON_UNUSED_VAR(type); + CYTHON_UNUSED_VAR(__Pyx__SetItemOnTypeDict); +#else + const PyType_Slot *slot = spec->slots; + int changed = 0; +#if !CYTHON_COMPILING_IN_LIMITED_API + while (slot && slot->slot && slot->slot != Py_tp_members) + slot++; + if (slot && slot->slot == Py_tp_members) { +#if !CYTHON_COMPILING_IN_CPYTHON + const +#endif // !CYTHON_COMPILING_IN_CPYTHON) + PyMemberDef *memb = (PyMemberDef*) slot->pfunc; + while (memb && memb->name) { + if (memb->name[0] == '_' && memb->name[1] == '_') { + if (strcmp(memb->name, "__weaklistoffset__") == 0) { + assert(memb->type == T_PYSSIZET); + assert(memb->flags == READONLY); + type->tp_weaklistoffset = memb->offset; + changed = 1; + } + else if (strcmp(memb->name, "__dictoffset__") == 0) { + assert(memb->type == T_PYSSIZET); + assert(memb->flags == READONLY); + type->tp_dictoffset = memb->offset; + changed = 1; + } +#if CYTHON_METH_FASTCALL + else if (strcmp(memb->name, "__vectorcalloffset__") == 0) { + assert(memb->type == T_PYSSIZET); + assert(memb->flags == READONLY); + type->tp_vectorcall_offset = memb->offset; + changed = 1; + } +#endif // CYTHON_METH_FASTCALL +#if !CYTHON_COMPILING_IN_PYPY + else if (strcmp(memb->name, "__module__") == 0) { + PyObject *descr; + assert(memb->type == T_OBJECT); + assert(memb->flags == 0 || memb->flags == READONLY); + descr = PyDescr_NewMember(type, memb); + if (unlikely(!descr)) + return -1; + int set_item_result = PyDict_SetItem(type->tp_dict, PyDescr_NAME(descr), descr); + Py_DECREF(descr); + if (unlikely(set_item_result < 0)) { + return -1; + } + changed = 1; + } +#endif // !CYTHON_COMPILING_IN_PYPY + } + memb++; + } + } +#endif // !CYTHON_COMPILING_IN_LIMITED_API +#if !CYTHON_COMPILING_IN_PYPY + slot = spec->slots; + while (slot && slot->slot && slot->slot != Py_tp_getset) + slot++; + if (slot && slot->slot == Py_tp_getset) { + PyGetSetDef *getset = (PyGetSetDef*) slot->pfunc; + while (getset && getset->name) { + if (getset->name[0] == '_' && getset->name[1] == '_' && strcmp(getset->name, "__module__") == 0) { + PyObject *descr = PyDescr_NewGetSet(type, getset); + if (unlikely(!descr)) + return -1; + #if CYTHON_COMPILING_IN_LIMITED_API + PyObject *pyname = PyUnicode_FromString(getset->name); + if (unlikely(!pyname)) { + Py_DECREF(descr); + return -1; + } + int set_item_result = __Pyx_SetItemOnTypeDict(type, pyname, descr); + Py_DECREF(pyname); + #else + CYTHON_UNUSED_VAR(__Pyx__SetItemOnTypeDict); + int set_item_result = PyDict_SetItem(type->tp_dict, PyDescr_NAME(descr), descr); + #endif + Py_DECREF(descr); + if (unlikely(set_item_result < 0)) { + return -1; + } + changed = 1; + } + ++getset; + } + } +#else + CYTHON_UNUSED_VAR(__Pyx__SetItemOnTypeDict); +#endif // !CYTHON_COMPILING_IN_PYPY + if (changed) + PyType_Modified(type); +#endif // PY_VERSION_HEX > 0x030900B1 + return 0; +} + +/* PyObjectCallNoArg (used by PyObjectCallMethod0) */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) { + PyObject *arg[2] = {NULL, NULL}; + return __Pyx_PyObject_FastCall(func, arg + 1, 0 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET); +} + +/* PyObjectCallMethod0 (used by PyType_Ready) */ +static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name) { +#if CYTHON_VECTORCALL && (__PYX_LIMITED_VERSION_HEX >= 0x030C0000 || (!CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x03090000)) + PyObject *args[1] = {obj}; + (void) __Pyx_PyObject_CallOneArg; + (void) __Pyx_PyObject_CallNoArg; + return PyObject_VectorcallMethod(method_name, args, 1 | PY_VECTORCALL_ARGUMENTS_OFFSET, NULL); +#else + PyObject *method = NULL, *result = NULL; + int is_method = __Pyx_PyObject_GetMethod(obj, method_name, &method); + if (likely(is_method)) { + result = __Pyx_PyObject_CallOneArg(method, obj); + Py_DECREF(method); + return result; + } + if (unlikely(!method)) goto bad; + result = __Pyx_PyObject_CallNoArg(method); + Py_DECREF(method); +bad: + return result; +#endif +} + +/* ValidateBasesTuple (used by PyType_Ready) */ +#if CYTHON_COMPILING_IN_CPYTHON || CYTHON_COMPILING_IN_LIMITED_API || CYTHON_USE_TYPE_SPECS +static int __Pyx_validate_bases_tuple(const char *type_name, Py_ssize_t dictoffset, PyObject *bases) { + Py_ssize_t i, n; +#if CYTHON_ASSUME_SAFE_SIZE + n = PyTuple_GET_SIZE(bases); +#else + n = PyTuple_Size(bases); + if (unlikely(n < 0)) return -1; +#endif + for (i = 1; i < n; i++) + { + PyTypeObject *b; +#if CYTHON_AVOID_BORROWED_REFS + PyObject *b0 = PySequence_GetItem(bases, i); + if (!b0) return -1; +#elif CYTHON_ASSUME_SAFE_MACROS + PyObject *b0 = PyTuple_GET_ITEM(bases, i); +#else + PyObject *b0 = PyTuple_GetItem(bases, i); + if (!b0) return -1; +#endif + b = (PyTypeObject*) b0; + if (!__Pyx_PyType_HasFeature(b, Py_TPFLAGS_HEAPTYPE)) + { + __Pyx_TypeName b_name = __Pyx_PyType_GetFullyQualifiedName(b); + PyErr_Format(PyExc_TypeError, + "base class '" __Pyx_FMT_TYPENAME "' is not a heap type", b_name); + __Pyx_DECREF_TypeName(b_name); +#if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(b0); +#endif + return -1; + } + if (dictoffset == 0) + { + Py_ssize_t b_dictoffset = 0; +#if CYTHON_USE_TYPE_SLOTS + b_dictoffset = b->tp_dictoffset; +#else + PyObject *py_b_dictoffset = PyObject_GetAttrString((PyObject*)b, "__dictoffset__"); + if (!py_b_dictoffset) goto dictoffset_return; + b_dictoffset = PyLong_AsSsize_t(py_b_dictoffset); + Py_DECREF(py_b_dictoffset); + if (b_dictoffset == -1 && PyErr_Occurred()) goto dictoffset_return; +#endif + if (b_dictoffset) { + { + __Pyx_TypeName b_name = __Pyx_PyType_GetFullyQualifiedName(b); + PyErr_Format(PyExc_TypeError, + "extension type '%.200s' has no __dict__ slot, " + "but base type '" __Pyx_FMT_TYPENAME "' has: " + "either add 'cdef dict __dict__' to the extension type " + "or add '__slots__ = [...]' to the base type", + type_name, b_name); + __Pyx_DECREF_TypeName(b_name); + } +#if !CYTHON_USE_TYPE_SLOTS + dictoffset_return: +#endif +#if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(b0); +#endif + return -1; + } + } +#if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(b0); +#endif + } + return 0; +} +#endif + +/* PyType_Ready */ +CYTHON_UNUSED static int __Pyx_PyType_HasMultipleInheritance(PyTypeObject *t) { + while (t) { + PyObject *bases = __Pyx_PyType_GetSlot(t, tp_bases, PyObject*); + if (bases) { + return 1; + } + t = __Pyx_PyType_GetSlot(t, tp_base, PyTypeObject*); + } + return 0; +} +static int __Pyx_PyType_Ready(PyTypeObject *t) { +#if CYTHON_USE_TYPE_SPECS || !CYTHON_COMPILING_IN_CPYTHON || defined(PYSTON_MAJOR_VERSION) + (void)__Pyx_PyObject_CallMethod0; +#if CYTHON_USE_TYPE_SPECS + (void)__Pyx_validate_bases_tuple; +#endif + return PyType_Ready(t); +#else + int r; + if (!__Pyx_PyType_HasMultipleInheritance(t)) { + return PyType_Ready(t); + } + PyObject *bases = __Pyx_PyType_GetSlot(t, tp_bases, PyObject*); + if (bases && unlikely(__Pyx_validate_bases_tuple(t->tp_name, t->tp_dictoffset, bases) == -1)) + return -1; +#if !defined(PYSTON_MAJOR_VERSION) + { + int gc_was_enabled; + #if PY_VERSION_HEX >= 0x030A00b1 + gc_was_enabled = PyGC_Disable(); + (void)__Pyx_PyObject_CallMethod0; + #else + PyObject *ret, *py_status; + PyObject *gc = NULL; + #if (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM+0 >= 0x07030400) &&\ + !CYTHON_COMPILING_IN_GRAAL + gc = PyImport_GetModule(__pyx_mstate_global->__pyx_kp_u_gc); + #endif + if (unlikely(!gc)) gc = PyImport_Import(__pyx_mstate_global->__pyx_kp_u_gc); + if (unlikely(!gc)) return -1; + py_status = __Pyx_PyObject_CallMethod0(gc, __pyx_mstate_global->__pyx_kp_u_isenabled); + if (unlikely(!py_status)) { + Py_DECREF(gc); + return -1; + } + gc_was_enabled = __Pyx_PyObject_IsTrue(py_status); + Py_DECREF(py_status); + if (gc_was_enabled > 0) { + ret = __Pyx_PyObject_CallMethod0(gc, __pyx_mstate_global->__pyx_kp_u_disable); + if (unlikely(!ret)) { + Py_DECREF(gc); + return -1; + } + Py_DECREF(ret); + } else if (unlikely(gc_was_enabled == -1)) { + Py_DECREF(gc); + return -1; + } + #endif + t->tp_flags |= Py_TPFLAGS_HEAPTYPE; +#if PY_VERSION_HEX >= 0x030A0000 + t->tp_flags |= Py_TPFLAGS_IMMUTABLETYPE; +#endif +#else + (void)__Pyx_PyObject_CallMethod0; +#endif + r = PyType_Ready(t); +#if !defined(PYSTON_MAJOR_VERSION) + t->tp_flags &= ~Py_TPFLAGS_HEAPTYPE; + #if PY_VERSION_HEX >= 0x030A00b1 + if (gc_was_enabled) + PyGC_Enable(); + #else + if (gc_was_enabled) { + PyObject *tp, *v, *tb; + PyErr_Fetch(&tp, &v, &tb); + ret = __Pyx_PyObject_CallMethod0(gc, __pyx_mstate_global->__pyx_kp_u_enable); + if (likely(ret || r == -1)) { + Py_XDECREF(ret); + PyErr_Restore(tp, v, tb); + } else { + Py_XDECREF(tp); + Py_XDECREF(v); + Py_XDECREF(tb); + r = -1; + } + } + Py_DECREF(gc); + #endif + } +#endif + return r; +#endif +} + +/* SetVTable */ +static int __Pyx_SetVtable(PyTypeObject *type, void *vtable) { + PyObject *ob = PyCapsule_New(vtable, 0, 0); + if (unlikely(!ob)) + goto bad; +#if CYTHON_COMPILING_IN_LIMITED_API + if (unlikely(PyObject_SetAttr((PyObject *) type, __pyx_mstate_global->__pyx_n_u_pyx_vtable, ob) < 0)) +#else + if (unlikely(PyDict_SetItem(type->tp_dict, __pyx_mstate_global->__pyx_n_u_pyx_vtable, ob) < 0)) +#endif + goto bad; + Py_DECREF(ob); + return 0; +bad: + Py_XDECREF(ob); + return -1; +} + +/* GetVTable (used by MergeVTables) */ +static void* __Pyx_GetVtable(PyTypeObject *type) { + void* ptr; +#if CYTHON_COMPILING_IN_LIMITED_API + PyObject *ob = PyObject_GetAttr((PyObject *)type, __pyx_mstate_global->__pyx_n_u_pyx_vtable); +#else + PyObject *ob = PyObject_GetItem(type->tp_dict, __pyx_mstate_global->__pyx_n_u_pyx_vtable); +#endif + if (!ob) + goto bad; + ptr = PyCapsule_GetPointer(ob, 0); + if (!ptr && !PyErr_Occurred()) + PyErr_SetString(PyExc_RuntimeError, "invalid vtable found for imported type"); + Py_DECREF(ob); + return ptr; +bad: + Py_XDECREF(ob); + return NULL; +} + +/* MergeVTables */ +static int __Pyx_MergeVtables(PyTypeObject *type) { + int i=0; + Py_ssize_t size; + void** base_vtables; + __Pyx_TypeName tp_base_name = NULL; + __Pyx_TypeName base_name = NULL; + void* unknown = (void*)-1; + PyObject* bases = __Pyx_PyType_GetSlot(type, tp_bases, PyObject*); + int base_depth = 0; + { + PyTypeObject* base = __Pyx_PyType_GetSlot(type, tp_base, PyTypeObject*); + while (base) { + base_depth += 1; + base = __Pyx_PyType_GetSlot(base, tp_base, PyTypeObject*); + } + } + base_vtables = (void**) PyMem_Malloc(sizeof(void*) * (size_t)(base_depth + 1)); + base_vtables[0] = unknown; +#if CYTHON_COMPILING_IN_LIMITED_API + size = PyTuple_Size(bases); + if (size < 0) goto other_failure; +#else + size = PyTuple_GET_SIZE(bases); +#endif + for (i = 1; i < size; i++) { + PyObject *basei; + void* base_vtable; +#if CYTHON_AVOID_BORROWED_REFS + basei = PySequence_GetItem(bases, i); + if (unlikely(!basei)) goto other_failure; +#elif !CYTHON_ASSUME_SAFE_MACROS + basei = PyTuple_GetItem(bases, i); + if (unlikely(!basei)) goto other_failure; +#else + basei = PyTuple_GET_ITEM(bases, i); +#endif + base_vtable = __Pyx_GetVtable((PyTypeObject*)basei); +#if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(basei); +#endif + if (base_vtable != NULL) { + int j; + PyTypeObject* base = __Pyx_PyType_GetSlot(type, tp_base, PyTypeObject*); + for (j = 0; j < base_depth; j++) { + if (base_vtables[j] == unknown) { + base_vtables[j] = __Pyx_GetVtable(base); + base_vtables[j + 1] = unknown; + } + if (base_vtables[j] == base_vtable) { + break; + } else if (base_vtables[j] == NULL) { + goto bad; + } + base = __Pyx_PyType_GetSlot(base, tp_base, PyTypeObject*); + } + } + } + PyErr_Clear(); + PyMem_Free(base_vtables); + return 0; +bad: + { + PyTypeObject* basei = NULL; + PyTypeObject* tp_base = __Pyx_PyType_GetSlot(type, tp_base, PyTypeObject*); + tp_base_name = __Pyx_PyType_GetFullyQualifiedName(tp_base); +#if CYTHON_AVOID_BORROWED_REFS + basei = (PyTypeObject*)PySequence_GetItem(bases, i); + if (unlikely(!basei)) goto really_bad; +#elif !CYTHON_ASSUME_SAFE_MACROS + basei = (PyTypeObject*)PyTuple_GetItem(bases, i); + if (unlikely(!basei)) goto really_bad; +#else + basei = (PyTypeObject*)PyTuple_GET_ITEM(bases, i); +#endif + base_name = __Pyx_PyType_GetFullyQualifiedName(basei); +#if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(basei); +#endif + } + PyErr_Format(PyExc_TypeError, + "multiple bases have vtable conflict: '" __Pyx_FMT_TYPENAME "' and '" __Pyx_FMT_TYPENAME "'", tp_base_name, base_name); +#if CYTHON_AVOID_BORROWED_REFS || !CYTHON_ASSUME_SAFE_MACROS +really_bad: // bad has failed! +#endif + __Pyx_DECREF_TypeName(tp_base_name); + __Pyx_DECREF_TypeName(base_name); +#if CYTHON_COMPILING_IN_LIMITED_API || CYTHON_AVOID_BORROWED_REFS || !CYTHON_ASSUME_SAFE_MACROS +other_failure: +#endif + PyMem_Free(base_vtables); + return -1; +} + +/* DelItemOnTypeDict (used by SetupReduce) */ +static int __Pyx__DelItemOnTypeDict(PyTypeObject *tp, PyObject *k) { + int result; + PyObject *tp_dict; +#if CYTHON_COMPILING_IN_LIMITED_API + tp_dict = __Pyx_GetTypeDict(tp); + if (unlikely(!tp_dict)) return -1; +#else + tp_dict = tp->tp_dict; +#endif + result = PyDict_DelItem(tp_dict, k); + if (likely(!result)) PyType_Modified(tp); + return result; +} + +/* SetupReduce */ +static int __Pyx_setup_reduce_is_named(PyObject* meth, PyObject* name) { + int ret; + PyObject *name_attr; + name_attr = __Pyx_PyObject_GetAttrStrNoError(meth, __pyx_mstate_global->__pyx_n_u_name); + if (likely(name_attr)) { + ret = PyObject_RichCompareBool(name_attr, name, Py_EQ); + } else { + ret = -1; + } + if (unlikely(ret < 0)) { + PyErr_Clear(); + ret = 0; + } + Py_XDECREF(name_attr); + return ret; +} +static int __Pyx_setup_reduce(PyObject* type_obj) { + int ret = 0; + PyObject *object_reduce = NULL; + PyObject *object_getstate = NULL; + PyObject *object_reduce_ex = NULL; + PyObject *reduce = NULL; + PyObject *reduce_ex = NULL; + PyObject *reduce_cython = NULL; + PyObject *setstate = NULL; + PyObject *setstate_cython = NULL; + PyObject *getstate = NULL; +#if CYTHON_USE_PYTYPE_LOOKUP + getstate = _PyType_Lookup((PyTypeObject*)type_obj, __pyx_mstate_global->__pyx_n_u_getstate); +#else + getstate = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_mstate_global->__pyx_n_u_getstate); + if (!getstate && PyErr_Occurred()) { + goto __PYX_BAD; + } +#endif + if (getstate) { +#if CYTHON_USE_PYTYPE_LOOKUP + object_getstate = _PyType_Lookup(&PyBaseObject_Type, __pyx_mstate_global->__pyx_n_u_getstate); +#else + object_getstate = __Pyx_PyObject_GetAttrStrNoError((PyObject*)&PyBaseObject_Type, __pyx_mstate_global->__pyx_n_u_getstate); + if (!object_getstate && PyErr_Occurred()) { + goto __PYX_BAD; + } +#endif + if (object_getstate != getstate) { + goto __PYX_GOOD; + } + } +#if CYTHON_USE_PYTYPE_LOOKUP + object_reduce_ex = _PyType_Lookup(&PyBaseObject_Type, __pyx_mstate_global->__pyx_n_u_reduce_ex); if (!object_reduce_ex) goto __PYX_BAD; +#else + object_reduce_ex = __Pyx_PyObject_GetAttrStr((PyObject*)&PyBaseObject_Type, __pyx_mstate_global->__pyx_n_u_reduce_ex); if (!object_reduce_ex) goto __PYX_BAD; +#endif + reduce_ex = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_mstate_global->__pyx_n_u_reduce_ex); if (unlikely(!reduce_ex)) goto __PYX_BAD; + if (reduce_ex == object_reduce_ex) { +#if CYTHON_USE_PYTYPE_LOOKUP + object_reduce = _PyType_Lookup(&PyBaseObject_Type, __pyx_mstate_global->__pyx_n_u_reduce); if (!object_reduce) goto __PYX_BAD; +#else + object_reduce = __Pyx_PyObject_GetAttrStr((PyObject*)&PyBaseObject_Type, __pyx_mstate_global->__pyx_n_u_reduce); if (!object_reduce) goto __PYX_BAD; +#endif + reduce = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_mstate_global->__pyx_n_u_reduce); if (unlikely(!reduce)) goto __PYX_BAD; + if (reduce == object_reduce || __Pyx_setup_reduce_is_named(reduce, __pyx_mstate_global->__pyx_n_u_reduce_cython)) { + reduce_cython = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_mstate_global->__pyx_n_u_reduce_cython); + if (likely(reduce_cython)) { + ret = __Pyx_SetItemOnTypeDict((PyTypeObject*)type_obj, __pyx_mstate_global->__pyx_n_u_reduce, reduce_cython); if (unlikely(ret < 0)) goto __PYX_BAD; + ret = __Pyx_DelItemOnTypeDict((PyTypeObject*)type_obj, __pyx_mstate_global->__pyx_n_u_reduce_cython); if (unlikely(ret < 0)) goto __PYX_BAD; + } else if (reduce == object_reduce || PyErr_Occurred()) { + goto __PYX_BAD; + } + setstate = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_mstate_global->__pyx_n_u_setstate); + if (!setstate) PyErr_Clear(); + if (!setstate || __Pyx_setup_reduce_is_named(setstate, __pyx_mstate_global->__pyx_n_u_setstate_cython)) { + setstate_cython = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_mstate_global->__pyx_n_u_setstate_cython); + if (likely(setstate_cython)) { + ret = __Pyx_SetItemOnTypeDict((PyTypeObject*)type_obj, __pyx_mstate_global->__pyx_n_u_setstate, setstate_cython); if (unlikely(ret < 0)) goto __PYX_BAD; + ret = __Pyx_DelItemOnTypeDict((PyTypeObject*)type_obj, __pyx_mstate_global->__pyx_n_u_setstate_cython); if (unlikely(ret < 0)) goto __PYX_BAD; + } else if (!setstate || PyErr_Occurred()) { + goto __PYX_BAD; + } + } + PyType_Modified((PyTypeObject*)type_obj); + } + } + goto __PYX_GOOD; +__PYX_BAD: + if (!PyErr_Occurred()) { + __Pyx_TypeName type_obj_name = + __Pyx_PyType_GetFullyQualifiedName((PyTypeObject*)type_obj); + PyErr_Format(PyExc_RuntimeError, + "Unable to initialize pickling for " __Pyx_FMT_TYPENAME, type_obj_name); + __Pyx_DECREF_TypeName(type_obj_name); + } + ret = -1; +__PYX_GOOD: +#if !CYTHON_USE_PYTYPE_LOOKUP + Py_XDECREF(object_reduce); + Py_XDECREF(object_reduce_ex); + Py_XDECREF(object_getstate); + Py_XDECREF(getstate); +#endif + Py_XDECREF(reduce); + Py_XDECREF(reduce_ex); + Py_XDECREF(reduce_cython); + Py_XDECREF(setstate); + Py_XDECREF(setstate_cython); + return ret; +} + +/* TypeImport */ +#ifndef __PYX_HAVE_RT_ImportType_3_2_2 +#define __PYX_HAVE_RT_ImportType_3_2_2 +static PyTypeObject *__Pyx_ImportType_3_2_2(PyObject *module, const char *module_name, const char *class_name, + size_t size, size_t alignment, enum __Pyx_ImportType_CheckSize_3_2_2 check_size) +{ + PyObject *result = 0; + Py_ssize_t basicsize; + Py_ssize_t itemsize; +#if defined(Py_LIMITED_API) || (defined(CYTHON_COMPILING_IN_LIMITED_API) && CYTHON_COMPILING_IN_LIMITED_API) + PyObject *py_basicsize; + PyObject *py_itemsize; +#endif + result = PyObject_GetAttrString(module, class_name); + if (!result) + goto bad; + if (!PyType_Check(result)) { + PyErr_Format(PyExc_TypeError, + "%.200s.%.200s is not a type object", + module_name, class_name); + goto bad; + } +#if !( defined(Py_LIMITED_API) || (defined(CYTHON_COMPILING_IN_LIMITED_API) && CYTHON_COMPILING_IN_LIMITED_API) ) + basicsize = ((PyTypeObject *)result)->tp_basicsize; + itemsize = ((PyTypeObject *)result)->tp_itemsize; +#else + if (size == 0) { + return (PyTypeObject *)result; + } + py_basicsize = PyObject_GetAttrString(result, "__basicsize__"); + if (!py_basicsize) + goto bad; + basicsize = PyLong_AsSsize_t(py_basicsize); + Py_DECREF(py_basicsize); + py_basicsize = 0; + if (basicsize == (Py_ssize_t)-1 && PyErr_Occurred()) + goto bad; + py_itemsize = PyObject_GetAttrString(result, "__itemsize__"); + if (!py_itemsize) + goto bad; + itemsize = PyLong_AsSsize_t(py_itemsize); + Py_DECREF(py_itemsize); + py_itemsize = 0; + if (itemsize == (Py_ssize_t)-1 && PyErr_Occurred()) + goto bad; +#endif + if (itemsize) { + if (size % alignment) { + alignment = size % alignment; + } + if (itemsize < (Py_ssize_t)alignment) + itemsize = (Py_ssize_t)alignment; + } + if ((size_t)(basicsize + itemsize) < size) { + PyErr_Format(PyExc_ValueError, + "%.200s.%.200s size changed, may indicate binary incompatibility. " + "Expected %zd from C header, got %zd from PyObject", + module_name, class_name, size, basicsize+itemsize); + goto bad; + } + if (check_size == __Pyx_ImportType_CheckSize_Error_3_2_2 && + ((size_t)basicsize > size || (size_t)(basicsize + itemsize) < size)) { + PyErr_Format(PyExc_ValueError, + "%.200s.%.200s size changed, may indicate binary incompatibility. " + "Expected %zd from C header, got %zd-%zd from PyObject", + module_name, class_name, size, basicsize, basicsize+itemsize); + goto bad; + } + else if (check_size == __Pyx_ImportType_CheckSize_Warn_3_2_2 && (size_t)basicsize > size) { + if (PyErr_WarnFormat(NULL, 0, + "%.200s.%.200s size changed, may indicate binary incompatibility. " + "Expected %zd from C header, got %zd from PyObject", + module_name, class_name, size, basicsize) < 0) { + goto bad; + } + } + return (PyTypeObject *)result; +bad: + Py_XDECREF(result); + return NULL; +} +#endif + +/* Py3UpdateBases */ +static PyObject* +__Pyx_PEP560_update_bases(PyObject *bases) +{ + Py_ssize_t i, j, size_bases; + PyObject *base = NULL, *meth, *new_base, *result, *new_bases = NULL; +#if CYTHON_ASSUME_SAFE_SIZE + size_bases = PyTuple_GET_SIZE(bases); +#else + size_bases = PyTuple_Size(bases); + if (size_bases < 0) return NULL; +#endif + for (i = 0; i < size_bases; i++) { +#if CYTHON_AVOID_BORROWED_REFS + Py_CLEAR(base); +#endif +#if CYTHON_ASSUME_SAFE_MACROS + base = PyTuple_GET_ITEM(bases, i); +#else + base = PyTuple_GetItem(bases, i); + if (!base) goto error; +#endif +#if CYTHON_AVOID_BORROWED_REFS + Py_INCREF(base); +#endif + if (PyType_Check(base)) { + if (new_bases) { + if (PyList_Append(new_bases, base) < 0) { + goto error; + } + } + continue; + } + meth = __Pyx_PyObject_GetAttrStrNoError(base, __pyx_mstate_global->__pyx_n_u_mro_entries); + if (!meth && PyErr_Occurred()) { + goto error; + } + if (!meth) { + if (new_bases) { + if (PyList_Append(new_bases, base) < 0) { + goto error; + } + } + continue; + } + new_base = __Pyx_PyObject_CallOneArg(meth, bases); + Py_DECREF(meth); + if (!new_base) { + goto error; + } + if (!PyTuple_Check(new_base)) { + PyErr_SetString(PyExc_TypeError, + "__mro_entries__ must return a tuple"); + Py_DECREF(new_base); + goto error; + } + if (!new_bases) { + if (!(new_bases = PyList_New(i))) { + goto error; + } + for (j = 0; j < i; j++) { + PyObject *base_from_list; +#if CYTHON_ASSUME_SAFE_MACROS + base_from_list = PyTuple_GET_ITEM(bases, j); + PyList_SET_ITEM(new_bases, j, base_from_list); + Py_INCREF(base_from_list); +#else + base_from_list = PyTuple_GetItem(bases, j); + if (!base_from_list) goto error; + Py_INCREF(base_from_list); + if (PyList_SetItem(new_bases, j, base_from_list) < 0) goto error; +#endif + } + } +#if CYTHON_ASSUME_SAFE_SIZE + j = PyList_GET_SIZE(new_bases); +#else + j = PyList_Size(new_bases); + if (j < 0) goto error; +#endif + if (PyList_SetSlice(new_bases, j, j, new_base) < 0) { + goto error; + } + Py_DECREF(new_base); + } + if (!new_bases) { + Py_INCREF(bases); + return bases; + } + result = PyList_AsTuple(new_bases); + Py_DECREF(new_bases); +#if CYTHON_AVOID_BORROWED_REFS + Py_XDECREF(base); +#endif + return result; +error: + Py_XDECREF(new_bases); +#if CYTHON_AVOID_BORROWED_REFS + Py_XDECREF(base); +#endif + return NULL; +} + +/* CalculateMetaclass */ +static PyObject *__Pyx_CalculateMetaclass(PyTypeObject *metaclass, PyObject *bases) { + Py_ssize_t i, nbases; +#if CYTHON_ASSUME_SAFE_SIZE + nbases = PyTuple_GET_SIZE(bases); +#else + nbases = PyTuple_Size(bases); + if (nbases < 0) return NULL; +#endif + for (i=0; i < nbases; i++) { + PyTypeObject *tmptype; +#if CYTHON_ASSUME_SAFE_MACROS + PyObject *tmp = PyTuple_GET_ITEM(bases, i); +#else + PyObject *tmp = PyTuple_GetItem(bases, i); + if (!tmp) return NULL; +#endif + tmptype = Py_TYPE(tmp); + if (!metaclass) { + metaclass = tmptype; + continue; + } + if (PyType_IsSubtype(metaclass, tmptype)) + continue; + if (PyType_IsSubtype(tmptype, metaclass)) { + metaclass = tmptype; + continue; + } + PyErr_SetString(PyExc_TypeError, + "metaclass conflict: " + "the metaclass of a derived class " + "must be a (non-strict) subclass " + "of the metaclasses of all its bases"); + return NULL; + } + if (!metaclass) { + metaclass = &PyType_Type; + } + Py_INCREF((PyObject*) metaclass); + return (PyObject*) metaclass; +} + +/* PyObjectLookupSpecial (used by Py3ClassCreate) */ +#if CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PyObject* __Pyx__PyObject_LookupSpecial(PyObject* obj, PyObject* attr_name, int with_error) { + PyObject *res; + PyTypeObject *tp = Py_TYPE(obj); + res = _PyType_Lookup(tp, attr_name); + if (likely(res)) { + descrgetfunc f = Py_TYPE(res)->tp_descr_get; + if (!f) { + Py_INCREF(res); + } else { + res = f(res, obj, (PyObject *)tp); + } + } else if (with_error) { + PyErr_SetObject(PyExc_AttributeError, attr_name); + } + return res; +} +#endif + +/* Py3ClassCreate */ +static PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObject *name, + PyObject *qualname, PyObject *mkw, PyObject *modname, PyObject *doc) { + PyObject *ns; + if (metaclass) { + PyObject *prep = __Pyx_PyObject_GetAttrStrNoError(metaclass, __pyx_mstate_global->__pyx_n_u_prepare); + if (prep) { + PyObject *pargs[3] = {NULL, name, bases}; + ns = __Pyx_PyObject_FastCallDict(prep, pargs+1, 2 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET, mkw); + Py_DECREF(prep); + } else { + if (unlikely(PyErr_Occurred())) + return NULL; + ns = PyDict_New(); + } + } else { + ns = PyDict_New(); + } + if (unlikely(!ns)) + return NULL; + if (unlikely(PyObject_SetItem(ns, __pyx_mstate_global->__pyx_n_u_module, modname) < 0)) goto bad; + if (unlikely(PyObject_SetItem(ns, __pyx_mstate_global->__pyx_n_u_qualname, qualname) < 0)) goto bad; + if (unlikely(doc && PyObject_SetItem(ns, __pyx_mstate_global->__pyx_n_u_doc, doc) < 0)) goto bad; + return ns; +bad: + Py_DECREF(ns); + return NULL; +} +static PyObject *__Pyx_Py3ClassCreate(PyObject *metaclass, PyObject *name, PyObject *bases, + PyObject *dict, PyObject *mkw, + int calculate_metaclass, int allow_py2_metaclass) { + PyObject *result; + PyObject *owned_metaclass = NULL; + PyObject *margs[4] = {NULL, name, bases, dict}; + if (allow_py2_metaclass) { + owned_metaclass = PyObject_GetItem(dict, __pyx_mstate_global->__pyx_n_u_metaclass); + if (owned_metaclass) { + metaclass = owned_metaclass; + } else if (likely(PyErr_ExceptionMatches(PyExc_KeyError))) { + PyErr_Clear(); + } else { + return NULL; + } + } + if (calculate_metaclass && (!metaclass || PyType_Check(metaclass))) { + metaclass = __Pyx_CalculateMetaclass((PyTypeObject*) metaclass, bases); + Py_XDECREF(owned_metaclass); + if (unlikely(!metaclass)) + return NULL; + owned_metaclass = metaclass; + } + result = __Pyx_PyObject_FastCallDict(metaclass, margs+1, 3 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET, mkw); + Py_XDECREF(owned_metaclass); + return result; +} + +/* ImportFrom */ +static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) { + PyObject* value = __Pyx_PyObject_GetAttrStr(module, name); + if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) { + const char* module_name_str = 0; + PyObject* module_name = 0; + PyObject* module_dot = 0; + PyObject* full_name = 0; + PyErr_Clear(); + module_name_str = PyModule_GetName(module); + if (unlikely(!module_name_str)) { goto modbad; } + module_name = PyUnicode_FromString(module_name_str); + if (unlikely(!module_name)) { goto modbad; } + module_dot = PyUnicode_Concat(module_name, __pyx_mstate_global->__pyx_kp_u__11); + if (unlikely(!module_dot)) { goto modbad; } + full_name = PyUnicode_Concat(module_dot, name); + if (unlikely(!full_name)) { goto modbad; } + #if (CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM < 0x07030400) ||\ + CYTHON_COMPILING_IN_GRAAL + { + PyObject *modules = PyImport_GetModuleDict(); + if (unlikely(!modules)) + goto modbad; + value = PyObject_GetItem(modules, full_name); + } + #else + value = PyImport_GetModule(full_name); + #endif + modbad: + Py_XDECREF(full_name); + Py_XDECREF(module_dot); + Py_XDECREF(module_name); + } + if (unlikely(!value)) { + PyErr_Format(PyExc_ImportError, "cannot import name %S", name); + } + return value; +} + +/* dict_setdefault (used by FetchCommonType) */ +static CYTHON_INLINE PyObject *__Pyx_PyDict_SetDefault(PyObject *d, PyObject *key, PyObject *default_value) { + PyObject* value; +#if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX >= 0x030C0000 + PyObject *args[] = {d, key, default_value}; + value = PyObject_VectorcallMethod(__pyx_mstate_global->__pyx_n_u_setdefault, args, 3 | PY_VECTORCALL_ARGUMENTS_OFFSET, NULL); +#elif CYTHON_COMPILING_IN_LIMITED_API + value = PyObject_CallMethodObjArgs(d, __pyx_mstate_global->__pyx_n_u_setdefault, key, default_value, NULL); +#elif PY_VERSION_HEX >= 0x030d0000 + PyDict_SetDefaultRef(d, key, default_value, &value); +#else + value = PyDict_SetDefault(d, key, default_value); + if (unlikely(!value)) return NULL; + Py_INCREF(value); +#endif + return value; +} + +/* AddModuleRef (used by FetchSharedCythonModule) */ +#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING + static PyObject *__Pyx_PyImport_AddModuleObjectRef(PyObject *name) { + PyObject *module_dict = PyImport_GetModuleDict(); + PyObject *m; + if (PyMapping_GetOptionalItem(module_dict, name, &m) < 0) { + return NULL; + } + if (m != NULL && PyModule_Check(m)) { + return m; + } + Py_XDECREF(m); + m = PyModule_NewObject(name); + if (m == NULL) + return NULL; + if (PyDict_CheckExact(module_dict)) { + PyObject *new_m; + (void)PyDict_SetDefaultRef(module_dict, name, m, &new_m); + Py_DECREF(m); + return new_m; + } else { + if (PyObject_SetItem(module_dict, name, m) != 0) { + Py_DECREF(m); + return NULL; + } + return m; + } + } + static PyObject *__Pyx_PyImport_AddModuleRef(const char *name) { + PyObject *py_name = PyUnicode_FromString(name); + if (!py_name) return NULL; + PyObject *module = __Pyx_PyImport_AddModuleObjectRef(py_name); + Py_DECREF(py_name); + return module; + } +#elif __PYX_LIMITED_VERSION_HEX >= 0x030d0000 + #define __Pyx_PyImport_AddModuleRef(name) PyImport_AddModuleRef(name) +#else + static PyObject *__Pyx_PyImport_AddModuleRef(const char *name) { + PyObject *module = PyImport_AddModule(name); + Py_XINCREF(module); + return module; + } +#endif + +/* FetchSharedCythonModule (used by FetchCommonType) */ +static PyObject *__Pyx_FetchSharedCythonABIModule(void) { + return __Pyx_PyImport_AddModuleRef(__PYX_ABI_MODULE_NAME); +} + +/* FetchCommonType (used by CommonTypesMetaclass) */ +#if __PYX_LIMITED_VERSION_HEX < 0x030C0000 +static PyObject* __Pyx_PyType_FromMetaclass(PyTypeObject *metaclass, PyObject *module, PyType_Spec *spec, PyObject *bases) { + PyObject *result = __Pyx_PyType_FromModuleAndSpec(module, spec, bases); + if (result && metaclass) { + PyObject *old_tp = (PyObject*)Py_TYPE(result); + Py_INCREF((PyObject*)metaclass); +#if __PYX_LIMITED_VERSION_HEX >= 0x03090000 + Py_SET_TYPE(result, metaclass); +#else + result->ob_type = metaclass; +#endif + Py_DECREF(old_tp); + } + return result; +} +#else +#define __Pyx_PyType_FromMetaclass(me, mo, s, b) PyType_FromMetaclass(me, mo, s, b) +#endif +static int __Pyx_VerifyCachedType(PyObject *cached_type, + const char *name, + Py_ssize_t expected_basicsize) { + Py_ssize_t basicsize; + if (!PyType_Check(cached_type)) { + PyErr_Format(PyExc_TypeError, + "Shared Cython type %.200s is not a type object", name); + return -1; + } + if (expected_basicsize == 0) { + return 0; // size is inherited, nothing useful to check + } +#if CYTHON_COMPILING_IN_LIMITED_API + PyObject *py_basicsize; + py_basicsize = PyObject_GetAttrString(cached_type, "__basicsize__"); + if (unlikely(!py_basicsize)) return -1; + basicsize = PyLong_AsSsize_t(py_basicsize); + Py_DECREF(py_basicsize); + py_basicsize = NULL; + if (unlikely(basicsize == (Py_ssize_t)-1) && PyErr_Occurred()) return -1; +#else + basicsize = ((PyTypeObject*) cached_type)->tp_basicsize; +#endif + if (basicsize != expected_basicsize) { + PyErr_Format(PyExc_TypeError, + "Shared Cython type %.200s has the wrong size, try recompiling", + name); + return -1; + } + return 0; +} +static PyTypeObject *__Pyx_FetchCommonTypeFromSpec(PyTypeObject *metaclass, PyObject *module, PyType_Spec *spec, PyObject *bases) { + PyObject *abi_module = NULL, *cached_type = NULL, *abi_module_dict, *new_cached_type, *py_object_name; + int get_item_ref_result; + const char* object_name = strrchr(spec->name, '.'); + object_name = object_name ? object_name+1 : spec->name; + py_object_name = PyUnicode_FromString(object_name); + if (!py_object_name) return NULL; + abi_module = __Pyx_FetchSharedCythonABIModule(); + if (!abi_module) goto done; + abi_module_dict = PyModule_GetDict(abi_module); + if (!abi_module_dict) goto done; + get_item_ref_result = __Pyx_PyDict_GetItemRef(abi_module_dict, py_object_name, &cached_type); + if (get_item_ref_result == 1) { + if (__Pyx_VerifyCachedType( + cached_type, + object_name, + spec->basicsize) < 0) { + goto bad; + } + goto done; + } else if (unlikely(get_item_ref_result == -1)) { + goto bad; + } + cached_type = __Pyx_PyType_FromMetaclass( + metaclass, + CYTHON_USE_MODULE_STATE ? module : abi_module, + spec, bases); + if (unlikely(!cached_type)) goto bad; + if (unlikely(__Pyx_fix_up_extension_type_from_spec(spec, (PyTypeObject *) cached_type) < 0)) goto bad; + new_cached_type = __Pyx_PyDict_SetDefault(abi_module_dict, py_object_name, cached_type); + if (unlikely(new_cached_type != cached_type)) { + if (unlikely(!new_cached_type)) goto bad; + Py_DECREF(cached_type); + cached_type = new_cached_type; + if (__Pyx_VerifyCachedType( + cached_type, + object_name, + spec->basicsize) < 0) { + goto bad; + } + goto done; + } else { + Py_DECREF(new_cached_type); + } +done: + Py_XDECREF(abi_module); + Py_DECREF(py_object_name); + assert(cached_type == NULL || PyType_Check(cached_type)); + return (PyTypeObject *) cached_type; +bad: + Py_XDECREF(cached_type); + cached_type = NULL; + goto done; +} + +/* CommonTypesMetaclass (used by CythonFunctionShared) */ +static PyObject* __pyx_CommonTypesMetaclass_get_module(CYTHON_UNUSED PyObject *self, CYTHON_UNUSED void* context) { + return PyUnicode_FromString(__PYX_ABI_MODULE_NAME); +} +#if __PYX_LIMITED_VERSION_HEX < 0x030A0000 +static PyObject* __pyx_CommonTypesMetaclass_call(CYTHON_UNUSED PyObject *self, CYTHON_UNUSED PyObject *args, CYTHON_UNUSED PyObject *kwds) { + PyErr_SetString(PyExc_TypeError, "Cannot instantiate Cython internal types"); + return NULL; +} +static int __pyx_CommonTypesMetaclass_setattr(CYTHON_UNUSED PyObject *self, CYTHON_UNUSED PyObject *attr, CYTHON_UNUSED PyObject *value) { + PyErr_SetString(PyExc_TypeError, "Cython internal types are immutable"); + return -1; +} +#endif +static PyGetSetDef __pyx_CommonTypesMetaclass_getset[] = { + {"__module__", __pyx_CommonTypesMetaclass_get_module, NULL, NULL, NULL}, + {0, 0, 0, 0, 0} +}; +static PyType_Slot __pyx_CommonTypesMetaclass_slots[] = { + {Py_tp_getset, (void *)__pyx_CommonTypesMetaclass_getset}, + #if __PYX_LIMITED_VERSION_HEX < 0x030A0000 + {Py_tp_call, (void*)__pyx_CommonTypesMetaclass_call}, + {Py_tp_new, (void*)__pyx_CommonTypesMetaclass_call}, + {Py_tp_setattro, (void*)__pyx_CommonTypesMetaclass_setattr}, + #endif + {0, 0} +}; +static PyType_Spec __pyx_CommonTypesMetaclass_spec = { + __PYX_TYPE_MODULE_PREFIX "_common_types_metatype", + 0, + 0, + Py_TPFLAGS_IMMUTABLETYPE | + Py_TPFLAGS_DISALLOW_INSTANTIATION | + Py_TPFLAGS_DEFAULT, + __pyx_CommonTypesMetaclass_slots +}; +static int __pyx_CommonTypesMetaclass_init(PyObject *module) { + __pyx_mstatetype *mstate = __Pyx_PyModule_GetState(module); + PyObject *bases = PyTuple_Pack(1, &PyType_Type); + if (unlikely(!bases)) { + return -1; + } + mstate->__pyx_CommonTypesMetaclassType = __Pyx_FetchCommonTypeFromSpec(NULL, module, &__pyx_CommonTypesMetaclass_spec, bases); + Py_DECREF(bases); + if (unlikely(mstate->__pyx_CommonTypesMetaclassType == NULL)) { + return -1; + } + return 0; +} + +/* PyMethodNew (used by CythonFunctionShared) */ +#if CYTHON_COMPILING_IN_LIMITED_API +static PyObject *__Pyx_PyMethod_New(PyObject *func, PyObject *self, PyObject *typ) { + PyObject *result; + CYTHON_UNUSED_VAR(typ); + if (!self) + return __Pyx_NewRef(func); + #if __PYX_LIMITED_VERSION_HEX >= 0x030C0000 + { + PyObject *args[] = {func, self}; + result = PyObject_Vectorcall(__pyx_mstate_global->__Pyx_CachedMethodType, args, 2, NULL); + } + #else + result = PyObject_CallFunctionObjArgs(__pyx_mstate_global->__Pyx_CachedMethodType, func, self, NULL); + #endif + return result; +} +#else +static PyObject *__Pyx_PyMethod_New(PyObject *func, PyObject *self, PyObject *typ) { + CYTHON_UNUSED_VAR(typ); + if (!self) + return __Pyx_NewRef(func); + return PyMethod_New(func, self); +} +#endif + +/* PyVectorcallFastCallDict (used by CythonFunctionShared) */ +#if CYTHON_METH_FASTCALL && CYTHON_VECTORCALL +static PyObject *__Pyx_PyVectorcall_FastCallDict_kw(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw) +{ + PyObject *res = NULL; + PyObject *kwnames; + PyObject **newargs; + PyObject **kwvalues; + Py_ssize_t i; + #if CYTHON_AVOID_BORROWED_REFS + PyObject *pos; + #else + Py_ssize_t pos; + #endif + size_t j; + PyObject *key, *value; + unsigned long keys_are_strings; + #if !CYTHON_ASSUME_SAFE_SIZE + Py_ssize_t nkw = PyDict_Size(kw); + if (unlikely(nkw == -1)) return NULL; + #else + Py_ssize_t nkw = PyDict_GET_SIZE(kw); + #endif + newargs = (PyObject **)PyMem_Malloc((nargs + (size_t)nkw) * sizeof(args[0])); + if (unlikely(newargs == NULL)) { + PyErr_NoMemory(); + return NULL; + } + for (j = 0; j < nargs; j++) newargs[j] = args[j]; + kwnames = PyTuple_New(nkw); + if (unlikely(kwnames == NULL)) { + PyMem_Free(newargs); + return NULL; + } + kwvalues = newargs + nargs; + pos = 0; + i = 0; + keys_are_strings = Py_TPFLAGS_UNICODE_SUBCLASS; + while (__Pyx_PyDict_NextRef(kw, &pos, &key, &value)) { + keys_are_strings &= + #if CYTHON_COMPILING_IN_LIMITED_API + PyType_GetFlags(Py_TYPE(key)); + #else + Py_TYPE(key)->tp_flags; + #endif + #if !CYTHON_ASSUME_SAFE_MACROS + if (unlikely(PyTuple_SetItem(kwnames, i, key) < 0)) goto cleanup; + #else + PyTuple_SET_ITEM(kwnames, i, key); + #endif + kwvalues[i] = value; + i++; + } + if (unlikely(!keys_are_strings)) { + PyErr_SetString(PyExc_TypeError, "keywords must be strings"); + goto cleanup; + } + res = vc(func, newargs, nargs, kwnames); +cleanup: + #if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(pos); + #endif + Py_DECREF(kwnames); + for (i = 0; i < nkw; i++) + Py_DECREF(kwvalues[i]); + PyMem_Free(newargs); + return res; +} +static CYTHON_INLINE PyObject *__Pyx_PyVectorcall_FastCallDict(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw) +{ + Py_ssize_t kw_size = + likely(kw == NULL) ? + 0 : +#if !CYTHON_ASSUME_SAFE_SIZE + PyDict_Size(kw); +#else + PyDict_GET_SIZE(kw); +#endif + if (kw_size == 0) { + return vc(func, args, nargs, NULL); + } +#if !CYTHON_ASSUME_SAFE_SIZE + else if (unlikely(kw_size == -1)) { + return NULL; + } +#endif + return __Pyx_PyVectorcall_FastCallDict_kw(func, vc, args, nargs, kw); +} +#endif + +/* CythonFunctionShared (used by CythonFunction) */ +#if CYTHON_COMPILING_IN_LIMITED_API +static CYTHON_INLINE int __Pyx__IsSameCyOrCFunctionNoMethod(PyObject *func, void (*cfunc)(void)) { + if (__Pyx_CyFunction_Check(func)) { + return PyCFunction_GetFunction(((__pyx_CyFunctionObject*)func)->func) == (PyCFunction) cfunc; + } else if (PyCFunction_Check(func)) { + return PyCFunction_GetFunction(func) == (PyCFunction) cfunc; + } + return 0; +} +static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void (*cfunc)(void)) { + if ((PyObject*)Py_TYPE(func) == __pyx_mstate_global->__Pyx_CachedMethodType) { + int result; + PyObject *newFunc = PyObject_GetAttr(func, __pyx_mstate_global->__pyx_n_u_func); + if (unlikely(!newFunc)) { + PyErr_Clear(); // It's only an optimization, so don't throw an error + return 0; + } + result = __Pyx__IsSameCyOrCFunctionNoMethod(newFunc, cfunc); + Py_DECREF(newFunc); + return result; + } + return __Pyx__IsSameCyOrCFunctionNoMethod(func, cfunc); +} +#else +static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void (*cfunc)(void)) { + if (PyMethod_Check(func)) { + func = PyMethod_GET_FUNCTION(func); + } + return __Pyx_CyOrPyCFunction_Check(func) && __Pyx_CyOrPyCFunction_GET_FUNCTION(func) == (PyCFunction) cfunc; +} +#endif +static CYTHON_INLINE void __Pyx__CyFunction_SetClassObj(__pyx_CyFunctionObject* f, PyObject* classobj) { +#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API + __Pyx_Py_XDECREF_SET( + __Pyx_CyFunction_GetClassObj(f), + ((classobj) ? __Pyx_NewRef(classobj) : NULL)); +#else + __Pyx_Py_XDECREF_SET( + ((PyCMethodObject *) (f))->mm_class, + (PyTypeObject*)((classobj) ? __Pyx_NewRef(classobj) : NULL)); +#endif +} +static PyObject * +__Pyx_CyFunction_get_doc_locked(__pyx_CyFunctionObject *op) +{ + if (unlikely(op->func_doc == NULL)) { +#if CYTHON_COMPILING_IN_LIMITED_API + op->func_doc = PyObject_GetAttrString(op->func, "__doc__"); + if (unlikely(!op->func_doc)) return NULL; +#else + if (((PyCFunctionObject*)op)->m_ml->ml_doc) { + op->func_doc = PyUnicode_FromString(((PyCFunctionObject*)op)->m_ml->ml_doc); + if (unlikely(op->func_doc == NULL)) + return NULL; + } else { + Py_INCREF(Py_None); + return Py_None; + } +#endif + } + Py_INCREF(op->func_doc); + return op->func_doc; +} +static PyObject * +__Pyx_CyFunction_get_doc(__pyx_CyFunctionObject *op, void *closure) { + PyObject *result; + CYTHON_UNUSED_VAR(closure); + __Pyx_BEGIN_CRITICAL_SECTION(op); + result = __Pyx_CyFunction_get_doc_locked(op); + __Pyx_END_CRITICAL_SECTION(); + return result; +} +static int +__Pyx_CyFunction_set_doc(__pyx_CyFunctionObject *op, PyObject *value, void *context) +{ + CYTHON_UNUSED_VAR(context); + if (value == NULL) { + value = Py_None; + } + Py_INCREF(value); + __Pyx_BEGIN_CRITICAL_SECTION(op); + __Pyx_Py_XDECREF_SET(op->func_doc, value); + __Pyx_END_CRITICAL_SECTION(); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_name_locked(__pyx_CyFunctionObject *op) +{ + if (unlikely(op->func_name == NULL)) { +#if CYTHON_COMPILING_IN_LIMITED_API + op->func_name = PyObject_GetAttrString(op->func, "__name__"); +#else + op->func_name = PyUnicode_InternFromString(((PyCFunctionObject*)op)->m_ml->ml_name); +#endif + if (unlikely(op->func_name == NULL)) + return NULL; + } + Py_INCREF(op->func_name); + return op->func_name; +} +static PyObject * +__Pyx_CyFunction_get_name(__pyx_CyFunctionObject *op, void *context) +{ + PyObject *result = NULL; + CYTHON_UNUSED_VAR(context); + __Pyx_BEGIN_CRITICAL_SECTION(op); + result = __Pyx_CyFunction_get_name_locked(op); + __Pyx_END_CRITICAL_SECTION(); + return result; +} +static int +__Pyx_CyFunction_set_name(__pyx_CyFunctionObject *op, PyObject *value, void *context) +{ + CYTHON_UNUSED_VAR(context); + if (unlikely(value == NULL || !PyUnicode_Check(value))) { + PyErr_SetString(PyExc_TypeError, + "__name__ must be set to a string object"); + return -1; + } + Py_INCREF(value); + __Pyx_BEGIN_CRITICAL_SECTION(op); + __Pyx_Py_XDECREF_SET(op->func_name, value); + __Pyx_END_CRITICAL_SECTION(); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_qualname(__pyx_CyFunctionObject *op, void *context) +{ + CYTHON_UNUSED_VAR(context); + PyObject *result; + __Pyx_BEGIN_CRITICAL_SECTION(op); + Py_INCREF(op->func_qualname); + result = op->func_qualname; + __Pyx_END_CRITICAL_SECTION(); + return result; +} +static int +__Pyx_CyFunction_set_qualname(__pyx_CyFunctionObject *op, PyObject *value, void *context) +{ + CYTHON_UNUSED_VAR(context); + if (unlikely(value == NULL || !PyUnicode_Check(value))) { + PyErr_SetString(PyExc_TypeError, + "__qualname__ must be set to a string object"); + return -1; + } + Py_INCREF(value); + __Pyx_BEGIN_CRITICAL_SECTION(op); + __Pyx_Py_XDECREF_SET(op->func_qualname, value); + __Pyx_END_CRITICAL_SECTION(); + return 0; +} +#if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030A0000 +static PyObject * +__Pyx_CyFunction_get_dict(__pyx_CyFunctionObject *op, void *context) +{ + CYTHON_UNUSED_VAR(context); + if (unlikely(op->func_dict == NULL)) { + op->func_dict = PyDict_New(); + if (unlikely(op->func_dict == NULL)) + return NULL; + } + Py_INCREF(op->func_dict); + return op->func_dict; +} +#endif +static PyObject * +__Pyx_CyFunction_get_globals(__pyx_CyFunctionObject *op, void *context) +{ + CYTHON_UNUSED_VAR(context); + Py_INCREF(op->func_globals); + return op->func_globals; +} +static PyObject * +__Pyx_CyFunction_get_closure(__pyx_CyFunctionObject *op, void *context) +{ + CYTHON_UNUSED_VAR(op); + CYTHON_UNUSED_VAR(context); + Py_INCREF(Py_None); + return Py_None; +} +static PyObject * +__Pyx_CyFunction_get_code(__pyx_CyFunctionObject *op, void *context) +{ + PyObject* result = (op->func_code) ? op->func_code : Py_None; + CYTHON_UNUSED_VAR(context); + Py_INCREF(result); + return result; +} +static int +__Pyx_CyFunction_init_defaults(__pyx_CyFunctionObject *op) { + int result = 0; + PyObject *res = op->defaults_getter((PyObject *) op); + if (unlikely(!res)) + return -1; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + op->defaults_tuple = PyTuple_GET_ITEM(res, 0); + Py_INCREF(op->defaults_tuple); + op->defaults_kwdict = PyTuple_GET_ITEM(res, 1); + Py_INCREF(op->defaults_kwdict); + #else + op->defaults_tuple = __Pyx_PySequence_ITEM(res, 0); + if (unlikely(!op->defaults_tuple)) result = -1; + else { + op->defaults_kwdict = __Pyx_PySequence_ITEM(res, 1); + if (unlikely(!op->defaults_kwdict)) result = -1; + } + #endif + Py_DECREF(res); + return result; +} +static int +__Pyx_CyFunction_set_defaults(__pyx_CyFunctionObject *op, PyObject* value, void *context) { + CYTHON_UNUSED_VAR(context); + if (!value) { + value = Py_None; + } else if (unlikely(value != Py_None && !PyTuple_Check(value))) { + PyErr_SetString(PyExc_TypeError, + "__defaults__ must be set to a tuple object"); + return -1; + } + PyErr_WarnEx(PyExc_RuntimeWarning, "changes to cyfunction.__defaults__ will not " + "currently affect the values used in function calls", 1); + Py_INCREF(value); + __Pyx_BEGIN_CRITICAL_SECTION(op); + __Pyx_Py_XDECREF_SET(op->defaults_tuple, value); + __Pyx_END_CRITICAL_SECTION(); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_defaults_locked(__pyx_CyFunctionObject *op) { + PyObject* result = op->defaults_tuple; + if (unlikely(!result)) { + if (op->defaults_getter) { + if (unlikely(__Pyx_CyFunction_init_defaults(op) < 0)) return NULL; + result = op->defaults_tuple; + } else { + result = Py_None; + } + } + Py_INCREF(result); + return result; +} +static PyObject * +__Pyx_CyFunction_get_defaults(__pyx_CyFunctionObject *op, void *context) { + PyObject* result = NULL; + CYTHON_UNUSED_VAR(context); + __Pyx_BEGIN_CRITICAL_SECTION(op); + result = __Pyx_CyFunction_get_defaults_locked(op); + __Pyx_END_CRITICAL_SECTION(); + return result; +} +static int +__Pyx_CyFunction_set_kwdefaults(__pyx_CyFunctionObject *op, PyObject* value, void *context) { + CYTHON_UNUSED_VAR(context); + if (!value) { + value = Py_None; + } else if (unlikely(value != Py_None && !PyDict_Check(value))) { + PyErr_SetString(PyExc_TypeError, + "__kwdefaults__ must be set to a dict object"); + return -1; + } + PyErr_WarnEx(PyExc_RuntimeWarning, "changes to cyfunction.__kwdefaults__ will not " + "currently affect the values used in function calls", 1); + Py_INCREF(value); + __Pyx_BEGIN_CRITICAL_SECTION(op); + __Pyx_Py_XDECREF_SET(op->defaults_kwdict, value); + __Pyx_END_CRITICAL_SECTION(); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_kwdefaults_locked(__pyx_CyFunctionObject *op) { + PyObject* result = op->defaults_kwdict; + if (unlikely(!result)) { + if (op->defaults_getter) { + if (unlikely(__Pyx_CyFunction_init_defaults(op) < 0)) return NULL; + result = op->defaults_kwdict; + } else { + result = Py_None; + } + } + Py_INCREF(result); + return result; +} +static PyObject * +__Pyx_CyFunction_get_kwdefaults(__pyx_CyFunctionObject *op, void *context) { + PyObject* result; + CYTHON_UNUSED_VAR(context); + __Pyx_BEGIN_CRITICAL_SECTION(op); + result = __Pyx_CyFunction_get_kwdefaults_locked(op); + __Pyx_END_CRITICAL_SECTION(); + return result; +} +static int +__Pyx_CyFunction_set_annotations(__pyx_CyFunctionObject *op, PyObject* value, void *context) { + CYTHON_UNUSED_VAR(context); + if (!value || value == Py_None) { + value = NULL; + } else if (unlikely(!PyDict_Check(value))) { + PyErr_SetString(PyExc_TypeError, + "__annotations__ must be set to a dict object"); + return -1; + } + Py_XINCREF(value); + __Pyx_BEGIN_CRITICAL_SECTION(op); + __Pyx_Py_XDECREF_SET(op->func_annotations, value); + __Pyx_END_CRITICAL_SECTION(); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_annotations_locked(__pyx_CyFunctionObject *op) { + PyObject* result = op->func_annotations; + if (unlikely(!result)) { + result = PyDict_New(); + if (unlikely(!result)) return NULL; + op->func_annotations = result; + } + Py_INCREF(result); + return result; +} +static PyObject * +__Pyx_CyFunction_get_annotations(__pyx_CyFunctionObject *op, void *context) { + PyObject *result; + CYTHON_UNUSED_VAR(context); + __Pyx_BEGIN_CRITICAL_SECTION(op); + result = __Pyx_CyFunction_get_annotations_locked(op); + __Pyx_END_CRITICAL_SECTION(); + return result; +} +static PyObject * +__Pyx_CyFunction_get_is_coroutine_value(__pyx_CyFunctionObject *op) { + int is_coroutine = op->flags & __Pyx_CYFUNCTION_COROUTINE; + if (is_coroutine) { + PyObject *is_coroutine_value, *module, *fromlist, *marker = __pyx_mstate_global->__pyx_n_u_is_coroutine; + fromlist = PyList_New(1); + if (unlikely(!fromlist)) return NULL; + Py_INCREF(marker); +#if CYTHON_ASSUME_SAFE_MACROS + PyList_SET_ITEM(fromlist, 0, marker); +#else + if (unlikely(PyList_SetItem(fromlist, 0, marker) < 0)) { + Py_DECREF(marker); + Py_DECREF(fromlist); + return NULL; + } +#endif + module = PyImport_ImportModuleLevelObject(__pyx_mstate_global->__pyx_n_u_asyncio_coroutines, NULL, NULL, fromlist, 0); + Py_DECREF(fromlist); + if (unlikely(!module)) goto ignore; + is_coroutine_value = __Pyx_PyObject_GetAttrStr(module, marker); + Py_DECREF(module); + if (likely(is_coroutine_value)) { + return is_coroutine_value; + } +ignore: + PyErr_Clear(); + } + return __Pyx_PyBool_FromLong(is_coroutine); +} +static PyObject * +__Pyx_CyFunction_get_is_coroutine(__pyx_CyFunctionObject *op, void *context) { + PyObject *result; + CYTHON_UNUSED_VAR(context); + if (op->func_is_coroutine) { + return __Pyx_NewRef(op->func_is_coroutine); + } + result = __Pyx_CyFunction_get_is_coroutine_value(op); + if (unlikely(!result)) + return NULL; + __Pyx_BEGIN_CRITICAL_SECTION(op); + if (op->func_is_coroutine) { + Py_DECREF(result); + result = __Pyx_NewRef(op->func_is_coroutine); + } else { + op->func_is_coroutine = __Pyx_NewRef(result); + } + __Pyx_END_CRITICAL_SECTION(); + return result; +} +static void __Pyx_CyFunction_raise_argument_count_error(__pyx_CyFunctionObject *func, const char* message, Py_ssize_t size) { +#if CYTHON_COMPILING_IN_LIMITED_API + PyObject *py_name = __Pyx_CyFunction_get_name(func, NULL); + if (!py_name) return; + PyErr_Format(PyExc_TypeError, + "%.200S() %s (%" CYTHON_FORMAT_SSIZE_T "d given)", + py_name, message, size); + Py_DECREF(py_name); +#else + const char* name = ((PyCFunctionObject*)func)->m_ml->ml_name; + PyErr_Format(PyExc_TypeError, + "%.200s() %s (%" CYTHON_FORMAT_SSIZE_T "d given)", + name, message, size); +#endif +} +static void __Pyx_CyFunction_raise_type_error(__pyx_CyFunctionObject *func, const char* message) { +#if CYTHON_COMPILING_IN_LIMITED_API + PyObject *py_name = __Pyx_CyFunction_get_name(func, NULL); + if (!py_name) return; + PyErr_Format(PyExc_TypeError, + "%.200S() %s", + py_name, message); + Py_DECREF(py_name); +#else + const char* name = ((PyCFunctionObject*)func)->m_ml->ml_name; + PyErr_Format(PyExc_TypeError, + "%.200s() %s", + name, message); +#endif +} +#if CYTHON_COMPILING_IN_LIMITED_API +static PyObject * +__Pyx_CyFunction_get_module(__pyx_CyFunctionObject *op, void *context) { + CYTHON_UNUSED_VAR(context); + return PyObject_GetAttrString(op->func, "__module__"); +} +static int +__Pyx_CyFunction_set_module(__pyx_CyFunctionObject *op, PyObject* value, void *context) { + CYTHON_UNUSED_VAR(context); + return PyObject_SetAttrString(op->func, "__module__", value); +} +#endif +static PyGetSetDef __pyx_CyFunction_getsets[] = { + {"func_doc", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, + {"__doc__", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, + {"func_name", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, + {"__name__", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, + {"__qualname__", (getter)__Pyx_CyFunction_get_qualname, (setter)__Pyx_CyFunction_set_qualname, 0, 0}, +#if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030A0000 + {"func_dict", (getter)__Pyx_CyFunction_get_dict, (setter)PyObject_GenericSetDict, 0, 0}, + {"__dict__", (getter)__Pyx_CyFunction_get_dict, (setter)PyObject_GenericSetDict, 0, 0}, +#else + {"func_dict", (getter)PyObject_GenericGetDict, (setter)PyObject_GenericSetDict, 0, 0}, + {"__dict__", (getter)PyObject_GenericGetDict, (setter)PyObject_GenericSetDict, 0, 0}, +#endif + {"func_globals", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, + {"__globals__", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, + {"func_closure", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, + {"__closure__", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, + {"func_code", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, + {"__code__", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, + {"func_defaults", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, + {"__defaults__", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, + {"__kwdefaults__", (getter)__Pyx_CyFunction_get_kwdefaults, (setter)__Pyx_CyFunction_set_kwdefaults, 0, 0}, + {"__annotations__", (getter)__Pyx_CyFunction_get_annotations, (setter)__Pyx_CyFunction_set_annotations, 0, 0}, + {"_is_coroutine", (getter)__Pyx_CyFunction_get_is_coroutine, 0, 0, 0}, +#if CYTHON_COMPILING_IN_LIMITED_API + {"__module__", (getter)__Pyx_CyFunction_get_module, (setter)__Pyx_CyFunction_set_module, 0, 0}, +#endif + {0, 0, 0, 0, 0} +}; +static PyMemberDef __pyx_CyFunction_members[] = { +#if !CYTHON_COMPILING_IN_LIMITED_API + {"__module__", T_OBJECT, offsetof(PyCFunctionObject, m_module), 0, 0}, +#endif +#if PY_VERSION_HEX < 0x030C0000 || CYTHON_COMPILING_IN_LIMITED_API + {"__dictoffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_dict), READONLY, 0}, +#endif +#if CYTHON_METH_FASTCALL +#if CYTHON_COMPILING_IN_LIMITED_API + {"__vectorcalloffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_vectorcall), READONLY, 0}, +#else + {"__vectorcalloffset__", T_PYSSIZET, offsetof(PyCFunctionObject, vectorcall), READONLY, 0}, +#endif +#if CYTHON_COMPILING_IN_LIMITED_API + {"__weaklistoffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_weakreflist), READONLY, 0}, +#else + {"__weaklistoffset__", T_PYSSIZET, offsetof(PyCFunctionObject, m_weakreflist), READONLY, 0}, +#endif +#endif + {0, 0, 0, 0, 0} +}; +static PyObject * +__Pyx_CyFunction_reduce(__pyx_CyFunctionObject *m, PyObject *args) +{ + PyObject *result = NULL; + CYTHON_UNUSED_VAR(args); + __Pyx_BEGIN_CRITICAL_SECTION(m); + Py_INCREF(m->func_qualname); + result = m->func_qualname; + __Pyx_END_CRITICAL_SECTION(); + return result; +} +static PyMethodDef __pyx_CyFunction_methods[] = { + {"__reduce__", (PyCFunction)__Pyx_CyFunction_reduce, METH_VARARGS, 0}, + {0, 0, 0, 0} +}; +#if CYTHON_COMPILING_IN_LIMITED_API +#define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func_weakreflist) +#else +#define __Pyx_CyFunction_weakreflist(cyfunc) (((PyCFunctionObject*)cyfunc)->m_weakreflist) +#endif +static PyObject *__Pyx_CyFunction_Init(__pyx_CyFunctionObject *op, PyMethodDef *ml, int flags, PyObject* qualname, + PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) { +#if !CYTHON_COMPILING_IN_LIMITED_API + PyCFunctionObject *cf = (PyCFunctionObject*) op; +#endif + if (unlikely(op == NULL)) + return NULL; +#if CYTHON_COMPILING_IN_LIMITED_API + op->func = PyCFunction_NewEx(ml, (PyObject*)op, module); + if (unlikely(!op->func)) return NULL; +#endif + op->flags = flags; + __Pyx_CyFunction_weakreflist(op) = NULL; +#if !CYTHON_COMPILING_IN_LIMITED_API + cf->m_ml = ml; + cf->m_self = (PyObject *) op; +#endif + Py_XINCREF(closure); + op->func_closure = closure; +#if !CYTHON_COMPILING_IN_LIMITED_API + Py_XINCREF(module); + cf->m_module = module; +#endif +#if PY_VERSION_HEX < 0x030C0000 || CYTHON_COMPILING_IN_LIMITED_API + op->func_dict = NULL; +#endif + op->func_name = NULL; + Py_INCREF(qualname); + op->func_qualname = qualname; + op->func_doc = NULL; +#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API + op->func_classobj = NULL; +#else + ((PyCMethodObject*)op)->mm_class = NULL; +#endif + op->func_globals = globals; + Py_INCREF(op->func_globals); + Py_XINCREF(code); + op->func_code = code; + op->defaults = NULL; + op->defaults_tuple = NULL; + op->defaults_kwdict = NULL; + op->defaults_getter = NULL; + op->func_annotations = NULL; + op->func_is_coroutine = NULL; +#if CYTHON_METH_FASTCALL + switch (ml->ml_flags & (METH_VARARGS | METH_FASTCALL | METH_NOARGS | METH_O | METH_KEYWORDS | METH_METHOD)) { + case METH_NOARGS: + __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_NOARGS; + break; + case METH_O: + __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_O; + break; + case METH_METHOD | METH_FASTCALL | METH_KEYWORDS: + __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD; + break; + case METH_FASTCALL | METH_KEYWORDS: + __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS; + break; + case METH_VARARGS | METH_KEYWORDS: + __Pyx_CyFunction_func_vectorcall(op) = NULL; + break; + default: + PyErr_SetString(PyExc_SystemError, "Bad call flags for CyFunction"); + Py_DECREF(op); + return NULL; + } +#endif + return (PyObject *) op; +} +static int +__Pyx_CyFunction_clear(__pyx_CyFunctionObject *m) +{ + Py_CLEAR(m->func_closure); +#if CYTHON_COMPILING_IN_LIMITED_API + Py_CLEAR(m->func); +#else + Py_CLEAR(((PyCFunctionObject*)m)->m_module); +#endif +#if PY_VERSION_HEX < 0x030C0000 || CYTHON_COMPILING_IN_LIMITED_API + Py_CLEAR(m->func_dict); +#elif PY_VERSION_HEX < 0x030d0000 + _PyObject_ClearManagedDict((PyObject*)m); +#else + PyObject_ClearManagedDict((PyObject*)m); +#endif + Py_CLEAR(m->func_name); + Py_CLEAR(m->func_qualname); + Py_CLEAR(m->func_doc); + Py_CLEAR(m->func_globals); + Py_CLEAR(m->func_code); +#if !CYTHON_COMPILING_IN_LIMITED_API +#if PY_VERSION_HEX < 0x030900B1 + Py_CLEAR(__Pyx_CyFunction_GetClassObj(m)); +#else + { + PyObject *cls = (PyObject*) ((PyCMethodObject *) (m))->mm_class; + ((PyCMethodObject *) (m))->mm_class = NULL; + Py_XDECREF(cls); + } +#endif +#endif + Py_CLEAR(m->defaults_tuple); + Py_CLEAR(m->defaults_kwdict); + Py_CLEAR(m->func_annotations); + Py_CLEAR(m->func_is_coroutine); + Py_CLEAR(m->defaults); + return 0; +} +static void __Pyx__CyFunction_dealloc(__pyx_CyFunctionObject *m) +{ + if (__Pyx_CyFunction_weakreflist(m) != NULL) + PyObject_ClearWeakRefs((PyObject *) m); + __Pyx_CyFunction_clear(m); + __Pyx_PyHeapTypeObject_GC_Del(m); +} +static void __Pyx_CyFunction_dealloc(__pyx_CyFunctionObject *m) +{ + PyObject_GC_UnTrack(m); + __Pyx__CyFunction_dealloc(m); +} +static int __Pyx_CyFunction_traverse(__pyx_CyFunctionObject *m, visitproc visit, void *arg) +{ + { + int e = __Pyx_call_type_traverse((PyObject*)m, 1, visit, arg); + if (e) return e; + } + Py_VISIT(m->func_closure); +#if CYTHON_COMPILING_IN_LIMITED_API + Py_VISIT(m->func); +#else + Py_VISIT(((PyCFunctionObject*)m)->m_module); +#endif +#if PY_VERSION_HEX < 0x030C0000 || CYTHON_COMPILING_IN_LIMITED_API + Py_VISIT(m->func_dict); +#else + { + int e = +#if PY_VERSION_HEX < 0x030d0000 + _PyObject_VisitManagedDict +#else + PyObject_VisitManagedDict +#endif + ((PyObject*)m, visit, arg); + if (e != 0) return e; + } +#endif + __Pyx_VISIT_CONST(m->func_name); + __Pyx_VISIT_CONST(m->func_qualname); + Py_VISIT(m->func_doc); + Py_VISIT(m->func_globals); + __Pyx_VISIT_CONST(m->func_code); +#if !CYTHON_COMPILING_IN_LIMITED_API + Py_VISIT(__Pyx_CyFunction_GetClassObj(m)); +#endif + Py_VISIT(m->defaults_tuple); + Py_VISIT(m->defaults_kwdict); + Py_VISIT(m->func_is_coroutine); + Py_VISIT(m->defaults); + return 0; +} +static PyObject* +__Pyx_CyFunction_repr(__pyx_CyFunctionObject *op) +{ + PyObject *repr; + __Pyx_BEGIN_CRITICAL_SECTION(op); + repr = PyUnicode_FromFormat("", + op->func_qualname, (void *)op); + __Pyx_END_CRITICAL_SECTION(); + return repr; +} +static PyObject * __Pyx_CyFunction_CallMethod(PyObject *func, PyObject *self, PyObject *arg, PyObject *kw) { +#if CYTHON_COMPILING_IN_LIMITED_API + PyObject *f = ((__pyx_CyFunctionObject*)func)->func; + PyCFunction meth; + int flags; + meth = PyCFunction_GetFunction(f); + if (unlikely(!meth)) return NULL; + flags = PyCFunction_GetFlags(f); + if (unlikely(flags < 0)) return NULL; +#else + PyCFunctionObject* f = (PyCFunctionObject*)func; + PyCFunction meth = f->m_ml->ml_meth; + int flags = f->m_ml->ml_flags; +#endif + Py_ssize_t size; + switch (flags & (METH_VARARGS | METH_KEYWORDS | METH_NOARGS | METH_O)) { + case METH_VARARGS: + if (likely(kw == NULL || PyDict_Size(kw) == 0)) + return (*meth)(self, arg); + break; + case METH_VARARGS | METH_KEYWORDS: + return (*(PyCFunctionWithKeywords)(void(*)(void))meth)(self, arg, kw); + case METH_NOARGS: + if (likely(kw == NULL || PyDict_Size(kw) == 0)) { +#if CYTHON_ASSUME_SAFE_SIZE + size = PyTuple_GET_SIZE(arg); +#else + size = PyTuple_Size(arg); + if (unlikely(size < 0)) return NULL; +#endif + if (likely(size == 0)) + return (*meth)(self, NULL); + __Pyx_CyFunction_raise_argument_count_error( + (__pyx_CyFunctionObject*)func, + "takes no arguments", size); + return NULL; + } + break; + case METH_O: + if (likely(kw == NULL || PyDict_Size(kw) == 0)) { +#if CYTHON_ASSUME_SAFE_SIZE + size = PyTuple_GET_SIZE(arg); +#else + size = PyTuple_Size(arg); + if (unlikely(size < 0)) return NULL; +#endif + if (likely(size == 1)) { + PyObject *result, *arg0; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + arg0 = PyTuple_GET_ITEM(arg, 0); + #else + arg0 = __Pyx_PySequence_ITEM(arg, 0); if (unlikely(!arg0)) return NULL; + #endif + result = (*meth)(self, arg0); + #if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS) + Py_DECREF(arg0); + #endif + return result; + } + __Pyx_CyFunction_raise_argument_count_error( + (__pyx_CyFunctionObject*)func, + "takes exactly one argument", size); + return NULL; + } + break; + default: + PyErr_SetString(PyExc_SystemError, "Bad call flags for CyFunction"); + return NULL; + } + __Pyx_CyFunction_raise_type_error( + (__pyx_CyFunctionObject*)func, "takes no keyword arguments"); + return NULL; +} +static CYTHON_INLINE PyObject *__Pyx_CyFunction_Call(PyObject *func, PyObject *arg, PyObject *kw) { + PyObject *self, *result; +#if CYTHON_COMPILING_IN_LIMITED_API + self = PyCFunction_GetSelf(((__pyx_CyFunctionObject*)func)->func); + if (unlikely(!self) && PyErr_Occurred()) return NULL; +#else + self = ((PyCFunctionObject*)func)->m_self; +#endif + result = __Pyx_CyFunction_CallMethod(func, self, arg, kw); + return result; +} +static PyObject *__Pyx_CyFunction_CallAsMethod(PyObject *func, PyObject *args, PyObject *kw) { + PyObject *result; + __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *) func; +#if CYTHON_METH_FASTCALL && CYTHON_VECTORCALL + __pyx_vectorcallfunc vc = __Pyx_CyFunction_func_vectorcall(cyfunc); + if (vc) { +#if CYTHON_ASSUME_SAFE_MACROS && CYTHON_ASSUME_SAFE_SIZE + return __Pyx_PyVectorcall_FastCallDict(func, vc, &PyTuple_GET_ITEM(args, 0), (size_t)PyTuple_GET_SIZE(args), kw); +#else + (void) &__Pyx_PyVectorcall_FastCallDict; + return PyVectorcall_Call(func, args, kw); +#endif + } +#endif + if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) { + Py_ssize_t argc; + PyObject *new_args; + PyObject *self; +#if CYTHON_ASSUME_SAFE_SIZE + argc = PyTuple_GET_SIZE(args); +#else + argc = PyTuple_Size(args); + if (unlikely(argc < 0)) return NULL; +#endif + new_args = PyTuple_GetSlice(args, 1, argc); + if (unlikely(!new_args)) + return NULL; + self = PyTuple_GetItem(args, 0); + if (unlikely(!self)) { + Py_DECREF(new_args); + PyErr_Format(PyExc_TypeError, + "unbound method %.200S() needs an argument", + cyfunc->func_qualname); + return NULL; + } + result = __Pyx_CyFunction_CallMethod(func, self, new_args, kw); + Py_DECREF(new_args); + } else { + result = __Pyx_CyFunction_Call(func, args, kw); + } + return result; +} +#if CYTHON_METH_FASTCALL && CYTHON_VECTORCALL +static CYTHON_INLINE int __Pyx_CyFunction_Vectorcall_CheckArgs(__pyx_CyFunctionObject *cyfunc, Py_ssize_t nargs, PyObject *kwnames) +{ + int ret = 0; + if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) { + if (unlikely(nargs < 1)) { + __Pyx_CyFunction_raise_type_error( + cyfunc, "needs an argument"); + return -1; + } + ret = 1; + } + if (unlikely(kwnames) && unlikely(__Pyx_PyTuple_GET_SIZE(kwnames))) { + __Pyx_CyFunction_raise_type_error( + cyfunc, "takes no keyword arguments"); + return -1; + } + return ret; +} +static PyObject * __Pyx_CyFunction_Vectorcall_NOARGS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames) +{ + __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func; + Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); + PyObject *self; +#if CYTHON_COMPILING_IN_LIMITED_API + PyCFunction meth = PyCFunction_GetFunction(cyfunc->func); + if (unlikely(!meth)) return NULL; +#else + PyCFunction meth = ((PyCFunctionObject*)cyfunc)->m_ml->ml_meth; +#endif + switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, kwnames)) { + case 1: + self = args[0]; + args += 1; + nargs -= 1; + break; + case 0: +#if CYTHON_COMPILING_IN_LIMITED_API + self = PyCFunction_GetSelf(((__pyx_CyFunctionObject*)cyfunc)->func); + if (unlikely(!self) && PyErr_Occurred()) return NULL; +#else + self = ((PyCFunctionObject*)cyfunc)->m_self; +#endif + break; + default: + return NULL; + } + if (unlikely(nargs != 0)) { + __Pyx_CyFunction_raise_argument_count_error( + cyfunc, "takes no arguments", nargs); + return NULL; + } + return meth(self, NULL); +} +static PyObject * __Pyx_CyFunction_Vectorcall_O(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames) +{ + __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func; + Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); + PyObject *self; +#if CYTHON_COMPILING_IN_LIMITED_API + PyCFunction meth = PyCFunction_GetFunction(cyfunc->func); + if (unlikely(!meth)) return NULL; +#else + PyCFunction meth = ((PyCFunctionObject*)cyfunc)->m_ml->ml_meth; +#endif + switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, kwnames)) { + case 1: + self = args[0]; + args += 1; + nargs -= 1; + break; + case 0: +#if CYTHON_COMPILING_IN_LIMITED_API + self = PyCFunction_GetSelf(((__pyx_CyFunctionObject*)cyfunc)->func); + if (unlikely(!self) && PyErr_Occurred()) return NULL; +#else + self = ((PyCFunctionObject*)cyfunc)->m_self; +#endif + break; + default: + return NULL; + } + if (unlikely(nargs != 1)) { + __Pyx_CyFunction_raise_argument_count_error( + cyfunc, "takes exactly one argument", nargs); + return NULL; + } + return meth(self, args[0]); +} +static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames) +{ + __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func; + Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); + PyObject *self; +#if CYTHON_COMPILING_IN_LIMITED_API + PyCFunction meth = PyCFunction_GetFunction(cyfunc->func); + if (unlikely(!meth)) return NULL; +#else + PyCFunction meth = ((PyCFunctionObject*)cyfunc)->m_ml->ml_meth; +#endif + switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, NULL)) { + case 1: + self = args[0]; + args += 1; + nargs -= 1; + break; + case 0: +#if CYTHON_COMPILING_IN_LIMITED_API + self = PyCFunction_GetSelf(((__pyx_CyFunctionObject*)cyfunc)->func); + if (unlikely(!self) && PyErr_Occurred()) return NULL; +#else + self = ((PyCFunctionObject*)cyfunc)->m_self; +#endif + break; + default: + return NULL; + } + return ((__Pyx_PyCFunctionFastWithKeywords)(void(*)(void))meth)(self, args, nargs, kwnames); +} +static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames) +{ + __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func; + PyTypeObject *cls = (PyTypeObject *) __Pyx_CyFunction_GetClassObj(cyfunc); + Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); + PyObject *self; +#if CYTHON_COMPILING_IN_LIMITED_API + PyCFunction meth = PyCFunction_GetFunction(cyfunc->func); + if (unlikely(!meth)) return NULL; +#else + PyCFunction meth = ((PyCFunctionObject*)cyfunc)->m_ml->ml_meth; +#endif + switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, NULL)) { + case 1: + self = args[0]; + args += 1; + nargs -= 1; + break; + case 0: +#if CYTHON_COMPILING_IN_LIMITED_API + self = PyCFunction_GetSelf(((__pyx_CyFunctionObject*)cyfunc)->func); + if (unlikely(!self) && PyErr_Occurred()) return NULL; +#else + self = ((PyCFunctionObject*)cyfunc)->m_self; +#endif + break; + default: + return NULL; + } + #if PY_VERSION_HEX < 0x030e00A6 + size_t nargs_value = (size_t) nargs; + #else + Py_ssize_t nargs_value = nargs; + #endif + return ((__Pyx_PyCMethod)(void(*)(void))meth)(self, cls, args, nargs_value, kwnames); +} +#endif +static PyType_Slot __pyx_CyFunctionType_slots[] = { + {Py_tp_dealloc, (void *)__Pyx_CyFunction_dealloc}, + {Py_tp_repr, (void *)__Pyx_CyFunction_repr}, + {Py_tp_call, (void *)__Pyx_CyFunction_CallAsMethod}, + {Py_tp_traverse, (void *)__Pyx_CyFunction_traverse}, + {Py_tp_clear, (void *)__Pyx_CyFunction_clear}, + {Py_tp_methods, (void *)__pyx_CyFunction_methods}, + {Py_tp_members, (void *)__pyx_CyFunction_members}, + {Py_tp_getset, (void *)__pyx_CyFunction_getsets}, + {Py_tp_descr_get, (void *)__Pyx_PyMethod_New}, + {0, 0}, +}; +static PyType_Spec __pyx_CyFunctionType_spec = { + __PYX_TYPE_MODULE_PREFIX "cython_function_or_method", + sizeof(__pyx_CyFunctionObject), + 0, +#ifdef Py_TPFLAGS_METHOD_DESCRIPTOR + Py_TPFLAGS_METHOD_DESCRIPTOR | +#endif +#if CYTHON_METH_FASTCALL +#if defined(Py_TPFLAGS_HAVE_VECTORCALL) + Py_TPFLAGS_HAVE_VECTORCALL | +#elif defined(_Py_TPFLAGS_HAVE_VECTORCALL) + _Py_TPFLAGS_HAVE_VECTORCALL | +#endif +#endif // CYTHON_METH_FASTCALL +#if PY_VERSION_HEX >= 0x030C0000 && !CYTHON_COMPILING_IN_LIMITED_API + Py_TPFLAGS_MANAGED_DICT | +#endif + Py_TPFLAGS_IMMUTABLETYPE | Py_TPFLAGS_DISALLOW_INSTANTIATION | + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE, + __pyx_CyFunctionType_slots +}; +static int __pyx_CyFunction_init(PyObject *module) { + __pyx_mstatetype *mstate = __Pyx_PyModule_GetState(module); + mstate->__pyx_CyFunctionType = __Pyx_FetchCommonTypeFromSpec( + mstate->__pyx_CommonTypesMetaclassType, module, &__pyx_CyFunctionType_spec, NULL); + if (unlikely(mstate->__pyx_CyFunctionType == NULL)) { + return -1; + } + return 0; +} +static CYTHON_INLINE PyObject *__Pyx_CyFunction_InitDefaults(PyObject *func, PyTypeObject *defaults_type) { + __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; + m->defaults = PyObject_CallObject((PyObject*)defaults_type, NULL); // _PyObject_New(defaults_type); + if (unlikely(!m->defaults)) + return NULL; + return m->defaults; +} +static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *func, PyObject *tuple) { + __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; + m->defaults_tuple = tuple; + Py_INCREF(tuple); +} +static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *func, PyObject *dict) { + __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; + m->defaults_kwdict = dict; + Py_INCREF(dict); +} +static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *func, PyObject *dict) { + __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; + m->func_annotations = dict; + Py_INCREF(dict); +} + +/* CythonFunction */ +static PyObject *__Pyx_CyFunction_New(PyMethodDef *ml, int flags, PyObject* qualname, + PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) { + PyObject *op = __Pyx_CyFunction_Init( + PyObject_GC_New(__pyx_CyFunctionObject, __pyx_mstate_global->__pyx_CyFunctionType), + ml, flags, qualname, closure, module, globals, code + ); + if (likely(op)) { + PyObject_GC_Track(op); + } + return op; +} + +/* FusedFunction */ +static PyObject * +__pyx_FusedFunction_New(PyMethodDef *ml, int flags, + PyObject *qualname, PyObject *closure, + PyObject *module, PyObject *globals, + PyObject *code) +{ + PyObject *op = __Pyx_CyFunction_Init( + PyObject_GC_New(__pyx_CyFunctionObject, __pyx_mstate_global->__pyx_FusedFunctionType), + ml, flags, qualname, closure, module, globals, code + ); + if (likely(op)) { + __pyx_FusedFunctionObject *fusedfunc = (__pyx_FusedFunctionObject *) op; + fusedfunc->__signatures__ = NULL; + fusedfunc->self = NULL; + #if CYTHON_COMPILING_IN_LIMITED_API + fusedfunc->ml = ml; + #endif + PyObject_GC_Track(op); + } + return op; +} +static void +__pyx_FusedFunction_dealloc(__pyx_FusedFunctionObject *self) +{ + PyObject_GC_UnTrack(self); + Py_CLEAR(self->self); + Py_CLEAR(self->__signatures__); + __Pyx__CyFunction_dealloc((__pyx_CyFunctionObject *) self); +} +static int +__pyx_FusedFunction_traverse(__pyx_FusedFunctionObject *self, + visitproc visit, + void *arg) +{ + Py_VISIT(self->self); + Py_VISIT(self->__signatures__); + return __Pyx_CyFunction_traverse((__pyx_CyFunctionObject *) self, visit, arg); +} +static int +__pyx_FusedFunction_clear(__pyx_FusedFunctionObject *self) +{ + Py_CLEAR(self->self); + Py_CLEAR(self->__signatures__); + return __Pyx_CyFunction_clear((__pyx_CyFunctionObject *) self); +} +static __pyx_FusedFunctionObject * +__pyx_FusedFunction_descr_get_locked(__pyx_FusedFunctionObject *func, PyObject *obj) +{ + PyObject *module; + __pyx_FusedFunctionObject *meth; + #if CYTHON_COMPILING_IN_LIMITED_API + module = __Pyx_CyFunction_get_module((__pyx_CyFunctionObject *) func, NULL); + if ((unlikely(!module))) return NULL; + #else + module = ((PyCFunctionObject *) func)->m_module; + #endif + meth = (__pyx_FusedFunctionObject *) __pyx_FusedFunction_New( + #if CYTHON_COMPILING_IN_LIMITED_API + func->ml, + #else + ((PyCFunctionObject *) func)->m_ml, + #endif + ((__pyx_CyFunctionObject *) func)->flags, + ((__pyx_CyFunctionObject *) func)->func_qualname, + ((__pyx_CyFunctionObject *) func)->func_closure, + module, + ((__pyx_CyFunctionObject *) func)->func_globals, + ((__pyx_CyFunctionObject *) func)->func_code); + #if CYTHON_COMPILING_IN_LIMITED_API + Py_DECREF(module); + #endif + if (unlikely(!meth)) + return NULL; + Py_XINCREF(func->func.defaults); + meth->func.defaults = func->func.defaults; + __Pyx_CyFunction_SetClassObj(meth, __Pyx_CyFunction_GetClassObj(func)); + Py_XINCREF(func->__signatures__); + meth->__signatures__ = func->__signatures__; + Py_XINCREF(func->func.defaults_tuple); + meth->func.defaults_tuple = func->func.defaults_tuple; + Py_XINCREF(obj); + meth->self = obj; + return meth; +} +static PyObject * +__pyx_FusedFunction_descr_get(PyObject *self, PyObject *obj, PyObject *type) +{ + __pyx_FusedFunctionObject *func, *meth; + func = (__pyx_FusedFunctionObject *) self; + if (func->self || func->func.flags & __Pyx_CYFUNCTION_STATICMETHOD) { + Py_INCREF(self); + return self; + } + if (obj == Py_None) + obj = NULL; + if (func->func.flags & __Pyx_CYFUNCTION_CLASSMETHOD) + obj = type; + if (obj == NULL) { + Py_INCREF(self); + return self; + } + __Pyx_BEGIN_CRITICAL_SECTION(func); + meth = __pyx_FusedFunction_descr_get_locked(func, obj); + __Pyx_END_CRITICAL_SECTION() + return (PyObject *) meth; +} +static PyObject * +_obj_to_string(PyObject *obj) +{ + if (PyUnicode_CheckExact(obj)) + return __Pyx_NewRef(obj); + else if (PyType_Check(obj)) + return PyObject_GetAttr(obj, __pyx_mstate_global->__pyx_n_u_name); + else + return PyObject_Str(obj); +} +static PyObject * +__pyx_FusedFunction_getitem(__pyx_FusedFunctionObject *self, PyObject *idx) +{ + PyObject *signature = NULL; + PyObject *unbound_result_func; + PyObject *result_func = NULL; + if (unlikely(self->__signatures__ == NULL)) { + PyErr_SetString(PyExc_TypeError, "Function is not fused"); + return NULL; + } + if (PyTuple_Check(idx)) { + Py_ssize_t n = __Pyx_PyTuple_GET_SIZE(idx); + PyObject *list; + int i; + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely(n < 0)) return NULL; + #endif + list = PyList_New(n); + if (unlikely(!list)) + return NULL; + for (i = 0; i < n; i++) { + PyObject *string; +#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + PyObject *item = PyTuple_GET_ITEM(idx, i); +#else + PyObject *item = __Pyx_PySequence_ITEM(idx, i); if (unlikely(!item)) goto __pyx_err; +#endif + string = _obj_to_string(item); +#if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS) + Py_DECREF(item); +#endif + if (unlikely(!string)) goto __pyx_err; + if (__Pyx_PyList_SET_ITEM(list, i, string) < (0)) goto __pyx_err; + } + signature = PyUnicode_Join(__pyx_mstate_global->__pyx_kp_u__12, list); +__pyx_err:; + Py_DECREF(list); + } else { + signature = _obj_to_string(idx); + } + if (unlikely(!signature)) + return NULL; + unbound_result_func = PyObject_GetItem(self->__signatures__, signature); + if (likely(unbound_result_func)) { + if (self->self) { + __pyx_FusedFunctionObject *unbound = (__pyx_FusedFunctionObject *) unbound_result_func; + __Pyx_CyFunction_SetClassObj(unbound, __Pyx_CyFunction_GetClassObj(self)); + result_func = __pyx_FusedFunction_descr_get(unbound_result_func, + self->self, self->self); + } else { + result_func = unbound_result_func; + Py_INCREF(result_func); + } + } + Py_DECREF(signature); + Py_XDECREF(unbound_result_func); + return result_func; +} +static PyObject * +__pyx_FusedFunction_callfunction(PyObject *func, PyObject *args, PyObject *kw) +{ + __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *) func; + int static_specialized = (cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD && + !((__pyx_FusedFunctionObject *) func)->__signatures__); + if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !static_specialized) { + return __Pyx_CyFunction_CallAsMethod(func, args, kw); + } else { + return __Pyx_CyFunction_Call(func, args, kw); + } +} +static PyObject * +__pyx_FusedFunction_call(PyObject *func, PyObject *args, PyObject *kw) +{ + __pyx_FusedFunctionObject *binding_func = (__pyx_FusedFunctionObject *) func; + Py_ssize_t argc = __Pyx_PyTuple_GET_SIZE(args); + PyObject *new_args = NULL; + __pyx_FusedFunctionObject *new_func = NULL; + PyObject *result = NULL; + int is_staticmethod = binding_func->func.flags & __Pyx_CYFUNCTION_STATICMETHOD; + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely(argc < 0)) return NULL; + #endif + if (binding_func->self) { + PyObject *self; + Py_ssize_t i; + new_args = PyTuple_New(argc + 1); + if (unlikely(!new_args)) + return NULL; + self = binding_func->self; + Py_INCREF(self); + if (__Pyx_PyTuple_SET_ITEM(new_args, 0, self) < (0)) goto bad; + self = NULL; + for (i = 0; i < argc; i++) { +#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + PyObject *item = PyTuple_GET_ITEM(args, i); + Py_INCREF(item); +#else + PyObject *item = __Pyx_PySequence_ITEM(args, i); if (unlikely(!item)) goto bad; +#endif + if (__Pyx_PyTuple_SET_ITEM(new_args, i + 1, item) < (0)) goto bad; + } + args = new_args; + } + if (binding_func->__signatures__) { + PyObject *tup; + if (is_staticmethod && binding_func->func.flags & __Pyx_CYFUNCTION_CCLASS) { + tup = PyTuple_Pack(3, args, + kw == NULL ? Py_None : kw, + binding_func->func.defaults_tuple); + if (unlikely(!tup)) goto bad; + new_func = (__pyx_FusedFunctionObject *) __Pyx_CyFunction_CallMethod( + func, binding_func->__signatures__, tup, NULL); + } else { + tup = PyTuple_Pack(4, binding_func->__signatures__, args, + kw == NULL ? Py_None : kw, + binding_func->func.defaults_tuple); + if (unlikely(!tup)) goto bad; + new_func = (__pyx_FusedFunctionObject *) __pyx_FusedFunction_callfunction(func, tup, NULL); + } + Py_DECREF(tup); + if (unlikely(!new_func)) + goto bad; + __Pyx_CyFunction_SetClassObj(new_func, __Pyx_CyFunction_GetClassObj(binding_func)); + func = (PyObject *) new_func; + } + result = __pyx_FusedFunction_callfunction(func, args, kw); +bad: + Py_XDECREF(new_args); + Py_XDECREF((PyObject *) new_func); + return result; +} +static PyMemberDef __pyx_FusedFunction_members[] = { + {"__signatures__", + T_OBJECT, + offsetof(__pyx_FusedFunctionObject, __signatures__), + READONLY, + 0}, + {"__self__", T_OBJECT_EX, offsetof(__pyx_FusedFunctionObject, self), READONLY, 0}, + #if !CYTHON_COMPILING_IN_LIMITED_API + {"__module__", T_OBJECT, offsetof(PyCFunctionObject, m_module), 0, 0}, + #endif + {0, 0, 0, 0, 0}, +}; +static PyGetSetDef __pyx_FusedFunction_getsets[] = { + {"__doc__", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, + #if CYTHON_COMPILING_IN_LIMITED_API + {"__module__", (getter)__Pyx_CyFunction_get_module, (setter)__Pyx_CyFunction_set_module, 0, 0}, + #endif + {0, 0, 0, 0, 0} +}; +static PyType_Slot __pyx_FusedFunctionType_slots[] = { + {Py_tp_dealloc, (void *)__pyx_FusedFunction_dealloc}, + {Py_tp_call, (void *)__pyx_FusedFunction_call}, + {Py_tp_traverse, (void *)__pyx_FusedFunction_traverse}, + {Py_tp_clear, (void *)__pyx_FusedFunction_clear}, + {Py_tp_members, (void *)__pyx_FusedFunction_members}, + {Py_tp_getset, (void *)__pyx_FusedFunction_getsets}, + {Py_tp_descr_get, (void *)__pyx_FusedFunction_descr_get}, + {Py_mp_subscript, (void *)__pyx_FusedFunction_getitem}, + {0, 0}, +}; +static PyType_Spec __pyx_FusedFunctionType_spec = { + __PYX_TYPE_MODULE_PREFIX "fused_cython_function", + sizeof(__pyx_FusedFunctionObject), + 0, + Py_TPFLAGS_IMMUTABLETYPE | Py_TPFLAGS_DISALLOW_INSTANTIATION | + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC , + __pyx_FusedFunctionType_slots +}; +static int __pyx_FusedFunction_init(PyObject *module) { + __pyx_mstatetype *mstate = __Pyx_PyModule_GetState(module); + PyObject *bases = PyTuple_Pack(1, mstate->__pyx_CyFunctionType); + if (unlikely(!bases)) { + return -1; + } + mstate->__pyx_FusedFunctionType = __Pyx_FetchCommonTypeFromSpec( + mstate->__pyx_CommonTypesMetaclassType, module, &__pyx_FusedFunctionType_spec, bases); + Py_DECREF(bases); + if (unlikely(mstate->__pyx_FusedFunctionType == NULL)) { + return -1; + } + return 0; +} + +/* CLineInTraceback (used by AddTraceback) */ +#if CYTHON_CLINE_IN_TRACEBACK && CYTHON_CLINE_IN_TRACEBACK_RUNTIME +#if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030A0000 +#define __Pyx_PyProbablyModule_GetDict(o) __Pyx_XNewRef(PyModule_GetDict(o)) +#elif !CYTHON_COMPILING_IN_CPYTHON || CYTHON_COMPILING_IN_CPYTHON_FREETHREADING +#define __Pyx_PyProbablyModule_GetDict(o) PyObject_GenericGetDict(o, NULL); +#else +PyObject* __Pyx_PyProbablyModule_GetDict(PyObject *o) { + PyObject **dict_ptr = _PyObject_GetDictPtr(o); + return dict_ptr ? __Pyx_XNewRef(*dict_ptr) : NULL; +} +#endif +static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line) { + PyObject *use_cline = NULL; + PyObject *ptype, *pvalue, *ptraceback; + PyObject *cython_runtime_dict; + CYTHON_MAYBE_UNUSED_VAR(tstate); + if (unlikely(!__pyx_mstate_global->__pyx_cython_runtime)) { + return c_line; + } + __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback); + cython_runtime_dict = __Pyx_PyProbablyModule_GetDict(__pyx_mstate_global->__pyx_cython_runtime); + if (likely(cython_runtime_dict)) { + __PYX_PY_DICT_LOOKUP_IF_MODIFIED( + use_cline, cython_runtime_dict, + __Pyx_PyDict_SetDefault(cython_runtime_dict, __pyx_mstate_global->__pyx_n_u_cline_in_traceback, Py_False)) + } + if (use_cline == NULL || use_cline == Py_False || (use_cline != Py_True && PyObject_Not(use_cline) != 0)) { + c_line = 0; + } + Py_XDECREF(use_cline); + Py_XDECREF(cython_runtime_dict); + __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback); + return c_line; +} +#endif + +/* CodeObjectCache (used by AddTraceback) */ +static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) { + int start = 0, mid = 0, end = count - 1; + if (end >= 0 && code_line > entries[end].code_line) { + return count; + } + while (start < end) { + mid = start + (end - start) / 2; + if (code_line < entries[mid].code_line) { + end = mid; + } else if (code_line > entries[mid].code_line) { + start = mid + 1; + } else { + return mid; + } + } + if (code_line <= entries[mid].code_line) { + return mid; + } else { + return mid + 1; + } +} +static __Pyx_CachedCodeObjectType *__pyx__find_code_object(struct __Pyx_CodeObjectCache *code_cache, int code_line) { + __Pyx_CachedCodeObjectType* code_object; + int pos; + if (unlikely(!code_line) || unlikely(!code_cache->entries)) { + return NULL; + } + pos = __pyx_bisect_code_objects(code_cache->entries, code_cache->count, code_line); + if (unlikely(pos >= code_cache->count) || unlikely(code_cache->entries[pos].code_line != code_line)) { + return NULL; + } + code_object = code_cache->entries[pos].code_object; + Py_INCREF(code_object); + return code_object; +} +static __Pyx_CachedCodeObjectType *__pyx_find_code_object(int code_line) { +#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING && !CYTHON_ATOMICS + (void)__pyx__find_code_object; + return NULL; // Most implementation should have atomics. But otherwise, don't make it thread-safe, just miss. +#else + struct __Pyx_CodeObjectCache *code_cache = &__pyx_mstate_global->__pyx_code_cache; +#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING + __pyx_nonatomic_int_type old_count = __pyx_atomic_incr_acq_rel(&code_cache->accessor_count); + if (old_count < 0) { + __pyx_atomic_decr_acq_rel(&code_cache->accessor_count); + return NULL; + } +#endif + __Pyx_CachedCodeObjectType *result = __pyx__find_code_object(code_cache, code_line); +#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING + __pyx_atomic_decr_acq_rel(&code_cache->accessor_count); +#endif + return result; +#endif +} +static void __pyx__insert_code_object(struct __Pyx_CodeObjectCache *code_cache, int code_line, __Pyx_CachedCodeObjectType* code_object) +{ + int pos, i; + __Pyx_CodeObjectCacheEntry* entries = code_cache->entries; + if (unlikely(!code_line)) { + return; + } + if (unlikely(!entries)) { + entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry)); + if (likely(entries)) { + code_cache->entries = entries; + code_cache->max_count = 64; + code_cache->count = 1; + entries[0].code_line = code_line; + entries[0].code_object = code_object; + Py_INCREF(code_object); + } + return; + } + pos = __pyx_bisect_code_objects(code_cache->entries, code_cache->count, code_line); + if ((pos < code_cache->count) && unlikely(code_cache->entries[pos].code_line == code_line)) { + __Pyx_CachedCodeObjectType* tmp = entries[pos].code_object; + entries[pos].code_object = code_object; + Py_INCREF(code_object); + Py_DECREF(tmp); + return; + } + if (code_cache->count == code_cache->max_count) { + int new_max = code_cache->max_count + 64; + entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc( + code_cache->entries, ((size_t)new_max) * sizeof(__Pyx_CodeObjectCacheEntry)); + if (unlikely(!entries)) { + return; + } + code_cache->entries = entries; + code_cache->max_count = new_max; + } + for (i=code_cache->count; i>pos; i--) { + entries[i] = entries[i-1]; + } + entries[pos].code_line = code_line; + entries[pos].code_object = code_object; + code_cache->count++; + Py_INCREF(code_object); +} +static void __pyx_insert_code_object(int code_line, __Pyx_CachedCodeObjectType* code_object) { +#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING && !CYTHON_ATOMICS + (void)__pyx__insert_code_object; + return; // Most implementation should have atomics. But otherwise, don't make it thread-safe, just fail. +#else + struct __Pyx_CodeObjectCache *code_cache = &__pyx_mstate_global->__pyx_code_cache; +#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING + __pyx_nonatomic_int_type expected = 0; + if (!__pyx_atomic_int_cmp_exchange(&code_cache->accessor_count, &expected, INT_MIN)) { + return; + } +#endif + __pyx__insert_code_object(code_cache, code_line, code_object); +#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING + __pyx_atomic_sub(&code_cache->accessor_count, INT_MIN); +#endif +#endif +} + +/* AddTraceback */ +#include "compile.h" +#include "frameobject.h" +#include "traceback.h" +#if PY_VERSION_HEX >= 0x030b00a6 && !CYTHON_COMPILING_IN_LIMITED_API && !defined(PYPY_VERSION) + #ifndef Py_BUILD_CORE + #define Py_BUILD_CORE 1 + #endif + #include "internal/pycore_frame.h" +#endif +#if CYTHON_COMPILING_IN_LIMITED_API +static PyObject *__Pyx_PyCode_Replace_For_AddTraceback(PyObject *code, PyObject *scratch_dict, + PyObject *firstlineno, PyObject *name) { + PyObject *replace = NULL; + if (unlikely(PyDict_SetItemString(scratch_dict, "co_firstlineno", firstlineno))) return NULL; + if (unlikely(PyDict_SetItemString(scratch_dict, "co_name", name))) return NULL; + replace = PyObject_GetAttrString(code, "replace"); + if (likely(replace)) { + PyObject *result = PyObject_Call(replace, __pyx_mstate_global->__pyx_empty_tuple, scratch_dict); + Py_DECREF(replace); + return result; + } + PyErr_Clear(); + return NULL; +} +static void __Pyx_AddTraceback(const char *funcname, int c_line, + int py_line, const char *filename) { + PyObject *code_object = NULL, *py_py_line = NULL, *py_funcname = NULL, *dict = NULL; + PyObject *replace = NULL, *getframe = NULL, *frame = NULL; + PyObject *exc_type, *exc_value, *exc_traceback; + int success = 0; + if (c_line) { + c_line = __Pyx_CLineForTraceback(__Pyx_PyThreadState_Current, c_line); + } + PyErr_Fetch(&exc_type, &exc_value, &exc_traceback); + code_object = __pyx_find_code_object(c_line ? -c_line : py_line); + if (!code_object) { + code_object = Py_CompileString("_getframe()", filename, Py_eval_input); + if (unlikely(!code_object)) goto bad; + py_py_line = PyLong_FromLong(py_line); + if (unlikely(!py_py_line)) goto bad; + if (c_line) { + py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); + } else { + py_funcname = PyUnicode_FromString(funcname); + } + if (unlikely(!py_funcname)) goto bad; + dict = PyDict_New(); + if (unlikely(!dict)) goto bad; + { + PyObject *old_code_object = code_object; + code_object = __Pyx_PyCode_Replace_For_AddTraceback(code_object, dict, py_py_line, py_funcname); + Py_DECREF(old_code_object); + } + if (unlikely(!code_object)) goto bad; + __pyx_insert_code_object(c_line ? -c_line : py_line, code_object); + } else { + dict = PyDict_New(); + } + getframe = PySys_GetObject("_getframe"); + if (unlikely(!getframe)) goto bad; + if (unlikely(PyDict_SetItemString(dict, "_getframe", getframe))) goto bad; + frame = PyEval_EvalCode(code_object, dict, dict); + if (unlikely(!frame) || frame == Py_None) goto bad; + success = 1; + bad: + PyErr_Restore(exc_type, exc_value, exc_traceback); + Py_XDECREF(code_object); + Py_XDECREF(py_py_line); + Py_XDECREF(py_funcname); + Py_XDECREF(dict); + Py_XDECREF(replace); + if (success) { + PyTraceBack_Here( + (struct _frame*)frame); + } + Py_XDECREF(frame); +} +#else +static PyCodeObject* __Pyx_CreateCodeObjectForTraceback( + const char *funcname, int c_line, + int py_line, const char *filename) { + PyCodeObject *py_code = NULL; + PyObject *py_funcname = NULL; + if (c_line) { + py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); + if (!py_funcname) goto bad; + funcname = PyUnicode_AsUTF8(py_funcname); + if (!funcname) goto bad; + } + py_code = PyCode_NewEmpty(filename, funcname, py_line); + Py_XDECREF(py_funcname); + return py_code; +bad: + Py_XDECREF(py_funcname); + return NULL; +} +static void __Pyx_AddTraceback(const char *funcname, int c_line, + int py_line, const char *filename) { + PyCodeObject *py_code = 0; + PyFrameObject *py_frame = 0; + PyThreadState *tstate = __Pyx_PyThreadState_Current; + PyObject *ptype, *pvalue, *ptraceback; + if (c_line) { + c_line = __Pyx_CLineForTraceback(tstate, c_line); + } + py_code = __pyx_find_code_object(c_line ? -c_line : py_line); + if (!py_code) { + __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback); + py_code = __Pyx_CreateCodeObjectForTraceback( + funcname, c_line, py_line, filename); + if (!py_code) { + /* If the code object creation fails, then we should clear the + fetched exception references and propagate the new exception */ + Py_XDECREF(ptype); + Py_XDECREF(pvalue); + Py_XDECREF(ptraceback); + goto bad; + } + __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback); + __pyx_insert_code_object(c_line ? -c_line : py_line, py_code); + } + py_frame = PyFrame_New( + tstate, /*PyThreadState *tstate,*/ + py_code, /*PyCodeObject *code,*/ + __pyx_mstate_global->__pyx_d, /*PyObject *globals,*/ + 0 /*PyObject *locals*/ + ); + if (!py_frame) goto bad; + __Pyx_PyFrame_SetLineNumber(py_frame, py_line); + PyTraceBack_Here(py_frame); +bad: + Py_XDECREF(py_code); + Py_XDECREF(py_frame); +} +#endif + +/* CheckUnpickleChecksum */ +static void __Pyx_RaiseUnpickleChecksumError(long checksum, long checksum1, long checksum2, long checksum3, const char *members) { + PyObject *pickle_module = PyImport_ImportModule("pickle"); + if (unlikely(!pickle_module)) return; + PyObject *pickle_error = PyObject_GetAttrString(pickle_module, "PickleError"); + Py_DECREF(pickle_module); + if (unlikely(!pickle_error)) return; + if (checksum2 == checksum1) { + PyErr_Format(pickle_error, "Incompatible checksums (0x%x vs (0x%x) = (%s))", + checksum, checksum1, members); + } else if (checksum3 == checksum2) { + PyErr_Format(pickle_error, "Incompatible checksums (0x%x vs (0x%x, 0x%x) = (%s))", + checksum, checksum1, checksum2, members); + } else { + PyErr_Format(pickle_error, "Incompatible checksums (0x%x vs (0x%x, 0x%x, 0x%x) = (%s))", + checksum, checksum1, checksum2, checksum3, members); + } + Py_DECREF(pickle_error); +} +static int __Pyx_CheckUnpickleChecksum(long checksum, long checksum1, long checksum2, long checksum3, const char *members) { + int found = 0; + found |= checksum1 == checksum; + found |= checksum2 == checksum; + found |= checksum3 == checksum; + if (likely(found)) + return 0; + __Pyx_RaiseUnpickleChecksumError(checksum, checksum1, checksum2, checksum3, members); + return -1; +} + +/* CIntFromPyVerify */ +#define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\ + __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0) +#define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\ + __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1) +#define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\ + {\ + func_type value = func_value;\ + if (sizeof(target_type) < sizeof(func_type)) {\ + if (unlikely(value != (func_type) (target_type) value)) {\ + func_type zero = 0;\ + if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\ + return (target_type) -1;\ + if (is_unsigned && unlikely(value < zero))\ + goto raise_neg_overflow;\ + else\ + goto raise_overflow;\ + }\ + }\ + return (target_type) value;\ + } + +/* CIntFromPy */ +static CYTHON_INLINE int __Pyx_PyLong_As_int(PyObject *x) { +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif + const int neg_one = (int) -1, const_zero = (int) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic pop +#endif + const int is_unsigned = neg_one > const_zero; + if (unlikely(!PyLong_Check(x))) { + int val; + PyObject *tmp = __Pyx_PyNumber_Long(x); + if (!tmp) return (int) -1; + val = __Pyx_PyLong_As_int(tmp); + Py_DECREF(tmp); + return val; + } + if (is_unsigned) { +#if CYTHON_USE_PYLONG_INTERNALS + if (unlikely(__Pyx_PyLong_IsNeg(x))) { + goto raise_neg_overflow; + } else if (__Pyx_PyLong_IsCompact(x)) { + __PYX_VERIFY_RETURN_INT(int, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x)) + } else { + const digit* digits = __Pyx_PyLong_Digits(x); + assert(__Pyx_PyLong_DigitCount(x) > 1); + switch (__Pyx_PyLong_DigitCount(x)) { + case 2: + if ((8 * sizeof(int) > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) >= 2 * PyLong_SHIFT)) { + return (int) (((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); + } + } + break; + case 3: + if ((8 * sizeof(int) > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) >= 3 * PyLong_SHIFT)) { + return (int) (((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); + } + } + break; + case 4: + if ((8 * sizeof(int) > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) >= 4 * PyLong_SHIFT)) { + return (int) (((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); + } + } + break; + } + } +#endif +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7 + if (unlikely(Py_SIZE(x) < 0)) { + goto raise_neg_overflow; + } +#else + { + int result = PyObject_RichCompareBool(x, Py_False, Py_LT); + if (unlikely(result < 0)) + return (int) -1; + if (unlikely(result == 1)) + goto raise_neg_overflow; + } +#endif + if ((sizeof(int) <= sizeof(unsigned long))) { + __PYX_VERIFY_RETURN_INT_EXC(int, unsigned long, PyLong_AsUnsignedLong(x)) + } else if ((sizeof(int) <= sizeof(unsigned PY_LONG_LONG))) { + __PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) + } + } else { +#if CYTHON_USE_PYLONG_INTERNALS + if (__Pyx_PyLong_IsCompact(x)) { + __PYX_VERIFY_RETURN_INT(int, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x)) + } else { + const digit* digits = __Pyx_PyLong_Digits(x); + assert(__Pyx_PyLong_DigitCount(x) > 1); + switch (__Pyx_PyLong_SignedDigitCount(x)) { + case -2: + if ((8 * sizeof(int) - 1 > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) - 1 > 2 * PyLong_SHIFT)) { + return (int) (((int)-1)*(((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case 2: + if ((8 * sizeof(int) > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) - 1 > 2 * PyLong_SHIFT)) { + return (int) ((((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case -3: + if ((8 * sizeof(int) - 1 > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) - 1 > 3 * PyLong_SHIFT)) { + return (int) (((int)-1)*(((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case 3: + if ((8 * sizeof(int) > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) - 1 > 3 * PyLong_SHIFT)) { + return (int) ((((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case -4: + if ((8 * sizeof(int) - 1 > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) - 1 > 4 * PyLong_SHIFT)) { + return (int) (((int)-1)*(((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case 4: + if ((8 * sizeof(int) > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) - 1 > 4 * PyLong_SHIFT)) { + return (int) ((((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + } + } +#endif + if ((sizeof(int) <= sizeof(long))) { + __PYX_VERIFY_RETURN_INT_EXC(int, long, PyLong_AsLong(x)) + } else if ((sizeof(int) <= sizeof(PY_LONG_LONG))) { + __PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x)) + } + } + { + int val; + int ret = -1; +#if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API + Py_ssize_t bytes_copied = PyLong_AsNativeBytes( + x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0)); + if (unlikely(bytes_copied == -1)) { + } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) { + goto raise_overflow; + } else { + ret = 0; + } +#elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray) + int one = 1; int is_little = (int)*(unsigned char *)&one; + unsigned char *bytes = (unsigned char *)&val; + ret = _PyLong_AsByteArray((PyLongObject *)x, + bytes, sizeof(val), + is_little, !is_unsigned); +#else + PyObject *v; + PyObject *stepval = NULL, *mask = NULL, *shift = NULL; + int bits, remaining_bits, is_negative = 0; + int chunk_size = (sizeof(long) < 8) ? 30 : 62; + if (likely(PyLong_CheckExact(x))) { + v = __Pyx_NewRef(x); + } else { + v = PyNumber_Long(x); + if (unlikely(!v)) return (int) -1; + assert(PyLong_CheckExact(v)); + } + { + int result = PyObject_RichCompareBool(v, Py_False, Py_LT); + if (unlikely(result < 0)) { + Py_DECREF(v); + return (int) -1; + } + is_negative = result == 1; + } + if (is_unsigned && unlikely(is_negative)) { + Py_DECREF(v); + goto raise_neg_overflow; + } else if (is_negative) { + stepval = PyNumber_Invert(v); + Py_DECREF(v); + if (unlikely(!stepval)) + return (int) -1; + } else { + stepval = v; + } + v = NULL; + val = (int) 0; + mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done; + shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done; + for (bits = 0; bits < (int) sizeof(int) * 8 - chunk_size; bits += chunk_size) { + PyObject *tmp, *digit; + long idigit; + digit = PyNumber_And(stepval, mask); + if (unlikely(!digit)) goto done; + idigit = PyLong_AsLong(digit); + Py_DECREF(digit); + if (unlikely(idigit < 0)) goto done; + val |= ((int) idigit) << bits; + tmp = PyNumber_Rshift(stepval, shift); + if (unlikely(!tmp)) goto done; + Py_DECREF(stepval); stepval = tmp; + } + Py_DECREF(shift); shift = NULL; + Py_DECREF(mask); mask = NULL; + { + long idigit = PyLong_AsLong(stepval); + if (unlikely(idigit < 0)) goto done; + remaining_bits = ((int) sizeof(int) * 8) - bits - (is_unsigned ? 0 : 1); + if (unlikely(idigit >= (1L << remaining_bits))) + goto raise_overflow; + val |= ((int) idigit) << bits; + } + if (!is_unsigned) { + if (unlikely(val & (((int) 1) << (sizeof(int) * 8 - 1)))) + goto raise_overflow; + if (is_negative) + val = ~val; + } + ret = 0; + done: + Py_XDECREF(shift); + Py_XDECREF(mask); + Py_XDECREF(stepval); +#endif + if (unlikely(ret)) + return (int) -1; + return val; + } +raise_overflow: + PyErr_SetString(PyExc_OverflowError, + "value too large to convert to int"); + return (int) -1; +raise_neg_overflow: + PyErr_SetString(PyExc_OverflowError, + "can't convert negative value to int"); + return (int) -1; +} + +/* CIntFromPy */ +static CYTHON_INLINE long __Pyx_PyLong_As_long(PyObject *x) { +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif + const long neg_one = (long) -1, const_zero = (long) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic pop +#endif + const int is_unsigned = neg_one > const_zero; + if (unlikely(!PyLong_Check(x))) { + long val; + PyObject *tmp = __Pyx_PyNumber_Long(x); + if (!tmp) return (long) -1; + val = __Pyx_PyLong_As_long(tmp); + Py_DECREF(tmp); + return val; + } + if (is_unsigned) { +#if CYTHON_USE_PYLONG_INTERNALS + if (unlikely(__Pyx_PyLong_IsNeg(x))) { + goto raise_neg_overflow; + } else if (__Pyx_PyLong_IsCompact(x)) { + __PYX_VERIFY_RETURN_INT(long, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x)) + } else { + const digit* digits = __Pyx_PyLong_Digits(x); + assert(__Pyx_PyLong_DigitCount(x) > 1); + switch (__Pyx_PyLong_DigitCount(x)) { + case 2: + if ((8 * sizeof(long) > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) >= 2 * PyLong_SHIFT)) { + return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); + } + } + break; + case 3: + if ((8 * sizeof(long) > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) >= 3 * PyLong_SHIFT)) { + return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); + } + } + break; + case 4: + if ((8 * sizeof(long) > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) >= 4 * PyLong_SHIFT)) { + return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); + } + } + break; + } + } +#endif +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7 + if (unlikely(Py_SIZE(x) < 0)) { + goto raise_neg_overflow; + } +#else + { + int result = PyObject_RichCompareBool(x, Py_False, Py_LT); + if (unlikely(result < 0)) + return (long) -1; + if (unlikely(result == 1)) + goto raise_neg_overflow; + } +#endif + if ((sizeof(long) <= sizeof(unsigned long))) { + __PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x)) + } else if ((sizeof(long) <= sizeof(unsigned PY_LONG_LONG))) { + __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) + } + } else { +#if CYTHON_USE_PYLONG_INTERNALS + if (__Pyx_PyLong_IsCompact(x)) { + __PYX_VERIFY_RETURN_INT(long, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x)) + } else { + const digit* digits = __Pyx_PyLong_Digits(x); + assert(__Pyx_PyLong_DigitCount(x) > 1); + switch (__Pyx_PyLong_SignedDigitCount(x)) { + case -2: + if ((8 * sizeof(long) - 1 > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 2 * PyLong_SHIFT)) { + return (long) (((long)-1)*(((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case 2: + if ((8 * sizeof(long) > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 2 * PyLong_SHIFT)) { + return (long) ((((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case -3: + if ((8 * sizeof(long) - 1 > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 3 * PyLong_SHIFT)) { + return (long) (((long)-1)*(((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case 3: + if ((8 * sizeof(long) > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 3 * PyLong_SHIFT)) { + return (long) ((((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case -4: + if ((8 * sizeof(long) - 1 > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 4 * PyLong_SHIFT)) { + return (long) (((long)-1)*(((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case 4: + if ((8 * sizeof(long) > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 4 * PyLong_SHIFT)) { + return (long) ((((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + } + } +#endif + if ((sizeof(long) <= sizeof(long))) { + __PYX_VERIFY_RETURN_INT_EXC(long, long, PyLong_AsLong(x)) + } else if ((sizeof(long) <= sizeof(PY_LONG_LONG))) { + __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x)) + } + } + { + long val; + int ret = -1; +#if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API + Py_ssize_t bytes_copied = PyLong_AsNativeBytes( + x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0)); + if (unlikely(bytes_copied == -1)) { + } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) { + goto raise_overflow; + } else { + ret = 0; + } +#elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray) + int one = 1; int is_little = (int)*(unsigned char *)&one; + unsigned char *bytes = (unsigned char *)&val; + ret = _PyLong_AsByteArray((PyLongObject *)x, + bytes, sizeof(val), + is_little, !is_unsigned); +#else + PyObject *v; + PyObject *stepval = NULL, *mask = NULL, *shift = NULL; + int bits, remaining_bits, is_negative = 0; + int chunk_size = (sizeof(long) < 8) ? 30 : 62; + if (likely(PyLong_CheckExact(x))) { + v = __Pyx_NewRef(x); + } else { + v = PyNumber_Long(x); + if (unlikely(!v)) return (long) -1; + assert(PyLong_CheckExact(v)); + } + { + int result = PyObject_RichCompareBool(v, Py_False, Py_LT); + if (unlikely(result < 0)) { + Py_DECREF(v); + return (long) -1; + } + is_negative = result == 1; + } + if (is_unsigned && unlikely(is_negative)) { + Py_DECREF(v); + goto raise_neg_overflow; + } else if (is_negative) { + stepval = PyNumber_Invert(v); + Py_DECREF(v); + if (unlikely(!stepval)) + return (long) -1; + } else { + stepval = v; + } + v = NULL; + val = (long) 0; + mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done; + shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done; + for (bits = 0; bits < (int) sizeof(long) * 8 - chunk_size; bits += chunk_size) { + PyObject *tmp, *digit; + long idigit; + digit = PyNumber_And(stepval, mask); + if (unlikely(!digit)) goto done; + idigit = PyLong_AsLong(digit); + Py_DECREF(digit); + if (unlikely(idigit < 0)) goto done; + val |= ((long) idigit) << bits; + tmp = PyNumber_Rshift(stepval, shift); + if (unlikely(!tmp)) goto done; + Py_DECREF(stepval); stepval = tmp; + } + Py_DECREF(shift); shift = NULL; + Py_DECREF(mask); mask = NULL; + { + long idigit = PyLong_AsLong(stepval); + if (unlikely(idigit < 0)) goto done; + remaining_bits = ((int) sizeof(long) * 8) - bits - (is_unsigned ? 0 : 1); + if (unlikely(idigit >= (1L << remaining_bits))) + goto raise_overflow; + val |= ((long) idigit) << bits; + } + if (!is_unsigned) { + if (unlikely(val & (((long) 1) << (sizeof(long) * 8 - 1)))) + goto raise_overflow; + if (is_negative) + val = ~val; + } + ret = 0; + done: + Py_XDECREF(shift); + Py_XDECREF(mask); + Py_XDECREF(stepval); +#endif + if (unlikely(ret)) + return (long) -1; + return val; + } +raise_overflow: + PyErr_SetString(PyExc_OverflowError, + "value too large to convert to long"); + return (long) -1; +raise_neg_overflow: + PyErr_SetString(PyExc_OverflowError, + "can't convert negative value to long"); + return (long) -1; +} + +/* CIntToPy */ +static CYTHON_INLINE PyObject* __Pyx_PyLong_From_long(long value) { +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif + const long neg_one = (long) -1, const_zero = (long) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic pop +#endif + const int is_unsigned = neg_one > const_zero; + if (is_unsigned) { + if (sizeof(long) < sizeof(long)) { + return PyLong_FromLong((long) value); + } else if (sizeof(long) <= sizeof(unsigned long)) { + return PyLong_FromUnsignedLong((unsigned long) value); +#if !CYTHON_COMPILING_IN_PYPY + } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { + return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); +#endif + } + } else { + if (sizeof(long) <= sizeof(long)) { + return PyLong_FromLong((long) value); + } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { + return PyLong_FromLongLong((PY_LONG_LONG) value); + } + } + { + unsigned char *bytes = (unsigned char *)&value; +#if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4 + if (is_unsigned) { + return PyLong_FromUnsignedNativeBytes(bytes, sizeof(value), -1); + } else { + return PyLong_FromNativeBytes(bytes, sizeof(value), -1); + } +#elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000 + int one = 1; int little = (int)*(unsigned char *)&one; + return _PyLong_FromByteArray(bytes, sizeof(long), + little, !is_unsigned); +#else + int one = 1; int little = (int)*(unsigned char *)&one; + PyObject *from_bytes, *result = NULL, *kwds = NULL; + PyObject *py_bytes = NULL, *order_str = NULL; + from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes"); + if (!from_bytes) return NULL; + py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(long)); + if (!py_bytes) goto limited_bad; + order_str = PyUnicode_FromString(little ? "little" : "big"); + if (!order_str) goto limited_bad; + { + PyObject *args[3+(CYTHON_VECTORCALL ? 1 : 0)] = { NULL, py_bytes, order_str }; + if (!is_unsigned) { + kwds = __Pyx_MakeVectorcallBuilderKwds(1); + if (!kwds) goto limited_bad; + if (__Pyx_VectorcallBuilder_AddArgStr("signed", __Pyx_NewRef(Py_True), kwds, args+3, 0) < 0) goto limited_bad; + } + result = __Pyx_Object_Vectorcall_CallFromBuilder(from_bytes, args+1, 2 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET, kwds); + } + limited_bad: + Py_XDECREF(kwds); + Py_XDECREF(order_str); + Py_XDECREF(py_bytes); + Py_XDECREF(from_bytes); + return result; +#endif + } +} + +/* CIntToPy */ +static CYTHON_INLINE PyObject* __Pyx_PyLong_From_lxb_tag_id_enum_t(lxb_tag_id_enum_t value) { +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif + const lxb_tag_id_enum_t neg_one = (lxb_tag_id_enum_t) -1, const_zero = (lxb_tag_id_enum_t) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic pop +#endif + const int is_unsigned = neg_one > const_zero; + if (is_unsigned) { + if (sizeof(lxb_tag_id_enum_t) < sizeof(long)) { + return PyLong_FromLong((long) value); + } else if (sizeof(lxb_tag_id_enum_t) <= sizeof(unsigned long)) { + return PyLong_FromUnsignedLong((unsigned long) value); +#if !CYTHON_COMPILING_IN_PYPY + } else if (sizeof(lxb_tag_id_enum_t) <= sizeof(unsigned PY_LONG_LONG)) { + return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); +#endif + } + } else { + if (sizeof(lxb_tag_id_enum_t) <= sizeof(long)) { + return PyLong_FromLong((long) value); + } else if (sizeof(lxb_tag_id_enum_t) <= sizeof(PY_LONG_LONG)) { + return PyLong_FromLongLong((PY_LONG_LONG) value); + } + } + { + unsigned char *bytes = (unsigned char *)&value; +#if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4 + if (is_unsigned) { + return PyLong_FromUnsignedNativeBytes(bytes, sizeof(value), -1); + } else { + return PyLong_FromNativeBytes(bytes, sizeof(value), -1); + } +#elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000 + int one = 1; int little = (int)*(unsigned char *)&one; + return _PyLong_FromByteArray(bytes, sizeof(lxb_tag_id_enum_t), + little, !is_unsigned); +#else + int one = 1; int little = (int)*(unsigned char *)&one; + PyObject *from_bytes, *result = NULL, *kwds = NULL; + PyObject *py_bytes = NULL, *order_str = NULL; + from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes"); + if (!from_bytes) return NULL; + py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(lxb_tag_id_enum_t)); + if (!py_bytes) goto limited_bad; + order_str = PyUnicode_FromString(little ? "little" : "big"); + if (!order_str) goto limited_bad; + { + PyObject *args[3+(CYTHON_VECTORCALL ? 1 : 0)] = { NULL, py_bytes, order_str }; + if (!is_unsigned) { + kwds = __Pyx_MakeVectorcallBuilderKwds(1); + if (!kwds) goto limited_bad; + if (__Pyx_VectorcallBuilder_AddArgStr("signed", __Pyx_NewRef(Py_True), kwds, args+3, 0) < 0) goto limited_bad; + } + result = __Pyx_Object_Vectorcall_CallFromBuilder(from_bytes, args+1, 2 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET, kwds); + } + limited_bad: + Py_XDECREF(kwds); + Py_XDECREF(order_str); + Py_XDECREF(py_bytes); + Py_XDECREF(from_bytes); + return result; +#endif + } +} + +/* CIntToPy */ +static CYTHON_INLINE PyObject* __Pyx_PyLong_From_int(int value) { +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif + const int neg_one = (int) -1, const_zero = (int) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic pop +#endif + const int is_unsigned = neg_one > const_zero; + if (is_unsigned) { + if (sizeof(int) < sizeof(long)) { + return PyLong_FromLong((long) value); + } else if (sizeof(int) <= sizeof(unsigned long)) { + return PyLong_FromUnsignedLong((unsigned long) value); +#if !CYTHON_COMPILING_IN_PYPY + } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) { + return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); +#endif + } + } else { + if (sizeof(int) <= sizeof(long)) { + return PyLong_FromLong((long) value); + } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) { + return PyLong_FromLongLong((PY_LONG_LONG) value); + } + } + { + unsigned char *bytes = (unsigned char *)&value; +#if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4 + if (is_unsigned) { + return PyLong_FromUnsignedNativeBytes(bytes, sizeof(value), -1); + } else { + return PyLong_FromNativeBytes(bytes, sizeof(value), -1); + } +#elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000 + int one = 1; int little = (int)*(unsigned char *)&one; + return _PyLong_FromByteArray(bytes, sizeof(int), + little, !is_unsigned); +#else + int one = 1; int little = (int)*(unsigned char *)&one; + PyObject *from_bytes, *result = NULL, *kwds = NULL; + PyObject *py_bytes = NULL, *order_str = NULL; + from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes"); + if (!from_bytes) return NULL; + py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(int)); + if (!py_bytes) goto limited_bad; + order_str = PyUnicode_FromString(little ? "little" : "big"); + if (!order_str) goto limited_bad; + { + PyObject *args[3+(CYTHON_VECTORCALL ? 1 : 0)] = { NULL, py_bytes, order_str }; + if (!is_unsigned) { + kwds = __Pyx_MakeVectorcallBuilderKwds(1); + if (!kwds) goto limited_bad; + if (__Pyx_VectorcallBuilder_AddArgStr("signed", __Pyx_NewRef(Py_True), kwds, args+3, 0) < 0) goto limited_bad; + } + result = __Pyx_Object_Vectorcall_CallFromBuilder(from_bytes, args+1, 2 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET, kwds); + } + limited_bad: + Py_XDECREF(kwds); + Py_XDECREF(order_str); + Py_XDECREF(py_bytes); + Py_XDECREF(from_bytes); + return result; +#endif + } +} + +/* CIntFromPy */ +static CYTHON_INLINE size_t __Pyx_PyLong_As_size_t(PyObject *x) { +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif + const size_t neg_one = (size_t) -1, const_zero = (size_t) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic pop +#endif + const int is_unsigned = neg_one > const_zero; + if (unlikely(!PyLong_Check(x))) { + size_t val; + PyObject *tmp = __Pyx_PyNumber_Long(x); + if (!tmp) return (size_t) -1; + val = __Pyx_PyLong_As_size_t(tmp); + Py_DECREF(tmp); + return val; + } + if (is_unsigned) { +#if CYTHON_USE_PYLONG_INTERNALS + if (unlikely(__Pyx_PyLong_IsNeg(x))) { + goto raise_neg_overflow; + } else if (__Pyx_PyLong_IsCompact(x)) { + __PYX_VERIFY_RETURN_INT(size_t, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x)) + } else { + const digit* digits = __Pyx_PyLong_Digits(x); + assert(__Pyx_PyLong_DigitCount(x) > 1); + switch (__Pyx_PyLong_DigitCount(x)) { + case 2: + if ((8 * sizeof(size_t) > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(size_t) >= 2 * PyLong_SHIFT)) { + return (size_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + } + break; + case 3: + if ((8 * sizeof(size_t) > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(size_t) >= 3 * PyLong_SHIFT)) { + return (size_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + } + break; + case 4: + if ((8 * sizeof(size_t) > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(size_t) >= 4 * PyLong_SHIFT)) { + return (size_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + } + break; + } + } +#endif +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7 + if (unlikely(Py_SIZE(x) < 0)) { + goto raise_neg_overflow; + } +#else + { + int result = PyObject_RichCompareBool(x, Py_False, Py_LT); + if (unlikely(result < 0)) + return (size_t) -1; + if (unlikely(result == 1)) + goto raise_neg_overflow; + } +#endif + if ((sizeof(size_t) <= sizeof(unsigned long))) { + __PYX_VERIFY_RETURN_INT_EXC(size_t, unsigned long, PyLong_AsUnsignedLong(x)) + } else if ((sizeof(size_t) <= sizeof(unsigned PY_LONG_LONG))) { + __PYX_VERIFY_RETURN_INT_EXC(size_t, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) + } + } else { +#if CYTHON_USE_PYLONG_INTERNALS + if (__Pyx_PyLong_IsCompact(x)) { + __PYX_VERIFY_RETURN_INT(size_t, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x)) + } else { + const digit* digits = __Pyx_PyLong_Digits(x); + assert(__Pyx_PyLong_DigitCount(x) > 1); + switch (__Pyx_PyLong_SignedDigitCount(x)) { + case -2: + if ((8 * sizeof(size_t) - 1 > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(size_t, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(size_t) - 1 > 2 * PyLong_SHIFT)) { + return (size_t) (((size_t)-1)*(((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]))); + } + } + break; + case 2: + if ((8 * sizeof(size_t) > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(size_t) - 1 > 2 * PyLong_SHIFT)) { + return (size_t) ((((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]))); + } + } + break; + case -3: + if ((8 * sizeof(size_t) - 1 > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(size_t, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(size_t) - 1 > 3 * PyLong_SHIFT)) { + return (size_t) (((size_t)-1)*(((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]))); + } + } + break; + case 3: + if ((8 * sizeof(size_t) > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(size_t) - 1 > 3 * PyLong_SHIFT)) { + return (size_t) ((((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]))); + } + } + break; + case -4: + if ((8 * sizeof(size_t) - 1 > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(size_t, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(size_t) - 1 > 4 * PyLong_SHIFT)) { + return (size_t) (((size_t)-1)*(((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]))); + } + } + break; + case 4: + if ((8 * sizeof(size_t) > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(size_t) - 1 > 4 * PyLong_SHIFT)) { + return (size_t) ((((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]))); + } + } + break; + } + } +#endif + if ((sizeof(size_t) <= sizeof(long))) { + __PYX_VERIFY_RETURN_INT_EXC(size_t, long, PyLong_AsLong(x)) + } else if ((sizeof(size_t) <= sizeof(PY_LONG_LONG))) { + __PYX_VERIFY_RETURN_INT_EXC(size_t, PY_LONG_LONG, PyLong_AsLongLong(x)) + } + } + { + size_t val; + int ret = -1; +#if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API + Py_ssize_t bytes_copied = PyLong_AsNativeBytes( + x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0)); + if (unlikely(bytes_copied == -1)) { + } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) { + goto raise_overflow; + } else { + ret = 0; + } +#elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray) + int one = 1; int is_little = (int)*(unsigned char *)&one; + unsigned char *bytes = (unsigned char *)&val; + ret = _PyLong_AsByteArray((PyLongObject *)x, + bytes, sizeof(val), + is_little, !is_unsigned); +#else + PyObject *v; + PyObject *stepval = NULL, *mask = NULL, *shift = NULL; + int bits, remaining_bits, is_negative = 0; + int chunk_size = (sizeof(long) < 8) ? 30 : 62; + if (likely(PyLong_CheckExact(x))) { + v = __Pyx_NewRef(x); + } else { + v = PyNumber_Long(x); + if (unlikely(!v)) return (size_t) -1; + assert(PyLong_CheckExact(v)); + } + { + int result = PyObject_RichCompareBool(v, Py_False, Py_LT); + if (unlikely(result < 0)) { + Py_DECREF(v); + return (size_t) -1; + } + is_negative = result == 1; + } + if (is_unsigned && unlikely(is_negative)) { + Py_DECREF(v); + goto raise_neg_overflow; + } else if (is_negative) { + stepval = PyNumber_Invert(v); + Py_DECREF(v); + if (unlikely(!stepval)) + return (size_t) -1; + } else { + stepval = v; + } + v = NULL; + val = (size_t) 0; + mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done; + shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done; + for (bits = 0; bits < (int) sizeof(size_t) * 8 - chunk_size; bits += chunk_size) { + PyObject *tmp, *digit; + long idigit; + digit = PyNumber_And(stepval, mask); + if (unlikely(!digit)) goto done; + idigit = PyLong_AsLong(digit); + Py_DECREF(digit); + if (unlikely(idigit < 0)) goto done; + val |= ((size_t) idigit) << bits; + tmp = PyNumber_Rshift(stepval, shift); + if (unlikely(!tmp)) goto done; + Py_DECREF(stepval); stepval = tmp; + } + Py_DECREF(shift); shift = NULL; + Py_DECREF(mask); mask = NULL; + { + long idigit = PyLong_AsLong(stepval); + if (unlikely(idigit < 0)) goto done; + remaining_bits = ((int) sizeof(size_t) * 8) - bits - (is_unsigned ? 0 : 1); + if (unlikely(idigit >= (1L << remaining_bits))) + goto raise_overflow; + val |= ((size_t) idigit) << bits; + } + if (!is_unsigned) { + if (unlikely(val & (((size_t) 1) << (sizeof(size_t) * 8 - 1)))) + goto raise_overflow; + if (is_negative) + val = ~val; + } + ret = 0; + done: + Py_XDECREF(shift); + Py_XDECREF(mask); + Py_XDECREF(stepval); +#endif + if (unlikely(ret)) + return (size_t) -1; + return val; + } +raise_overflow: + PyErr_SetString(PyExc_OverflowError, + "value too large to convert to size_t"); + return (size_t) -1; +raise_neg_overflow: + PyErr_SetString(PyExc_OverflowError, + "can't convert negative value to size_t"); + return (size_t) -1; +} + +/* UpdateUnpickledDict */ +static int __Pyx__UpdateUnpickledDict(PyObject *obj, PyObject *state, Py_ssize_t index) { + PyObject *state_dict = __Pyx_PySequence_ITEM(state, index); + if (unlikely(!state_dict)) { + return -1; + } + int non_empty = PyObject_IsTrue(state_dict); + if (non_empty == 0) { + Py_DECREF(state_dict); + return 0; + } else if (unlikely(non_empty == -1)) { + return -1; + } + PyObject *dict; + #if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030A0000 + dict = PyObject_GetAttrString(obj, "__dict__"); + #else + dict = PyObject_GenericGetDict(obj, NULL); + #endif + if (unlikely(!dict)) { + Py_DECREF(state_dict); + return -1; + } + int result; + if (likely(PyDict_CheckExact(dict))) { + result = PyDict_Update(dict, state_dict); + } else { + PyObject *obj_result = __Pyx_PyObject_CallMethod1(dict, __pyx_mstate_global->__pyx_n_u_update, state_dict); + if (likely(obj_result)) { + Py_DECREF(obj_result); + result = 0; + } else { + result = -1; + } + } + Py_DECREF(state_dict); + Py_DECREF(dict); + return result; +} +static int __Pyx_UpdateUnpickledDict(PyObject *obj, PyObject *state, Py_ssize_t index) { + Py_ssize_t state_size = __Pyx_PyTuple_GET_SIZE(state); + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely(state_size == -1)) return -1; + #endif + if (state_size <= index) { + return 0; + } + return __Pyx__UpdateUnpickledDict(obj, state, index); +} + +/* FormatTypeName */ +#if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030d0000 +static __Pyx_TypeName +__Pyx_PyType_GetFullyQualifiedName(PyTypeObject* tp) +{ + PyObject *module = NULL, *name = NULL, *result = NULL; + #if __PYX_LIMITED_VERSION_HEX < 0x030b0000 + name = __Pyx_PyObject_GetAttrStr((PyObject *)tp, + __pyx_mstate_global->__pyx_n_u_qualname); + #else + name = PyType_GetQualName(tp); + #endif + if (unlikely(name == NULL) || unlikely(!PyUnicode_Check(name))) goto bad; + module = __Pyx_PyObject_GetAttrStr((PyObject *)tp, + __pyx_mstate_global->__pyx_n_u_module); + if (unlikely(module == NULL) || unlikely(!PyUnicode_Check(module))) goto bad; + if (PyUnicode_CompareWithASCIIString(module, "builtins") == 0) { + result = name; + name = NULL; + goto done; + } + result = PyUnicode_FromFormat("%U.%U", module, name); + if (unlikely(result == NULL)) goto bad; + done: + Py_XDECREF(name); + Py_XDECREF(module); + return result; + bad: + PyErr_Clear(); + if (name) { + result = name; + name = NULL; + } else { + result = __Pyx_NewRef(__pyx_mstate_global->__pyx_kp_u__13); + } + goto done; +} +#endif + +/* FastTypeChecks */ +#if CYTHON_COMPILING_IN_CPYTHON +static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) { + while (a) { + a = __Pyx_PyType_GetSlot(a, tp_base, PyTypeObject*); + if (a == b) + return 1; + } + return b == &PyBaseObject_Type; +} +static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b) { + PyObject *mro; + if (a == b) return 1; + mro = a->tp_mro; + if (likely(mro)) { + Py_ssize_t i, n; + n = PyTuple_GET_SIZE(mro); + for (i = 0; i < n; i++) { + if (PyTuple_GET_ITEM(mro, i) == (PyObject *)b) + return 1; + } + return 0; + } + return __Pyx_InBases(a, b); +} +static CYTHON_INLINE int __Pyx_IsAnySubtype2(PyTypeObject *cls, PyTypeObject *a, PyTypeObject *b) { + PyObject *mro; + if (cls == a || cls == b) return 1; + mro = cls->tp_mro; + if (likely(mro)) { + Py_ssize_t i, n; + n = PyTuple_GET_SIZE(mro); + for (i = 0; i < n; i++) { + PyObject *base = PyTuple_GET_ITEM(mro, i); + if (base == (PyObject *)a || base == (PyObject *)b) + return 1; + } + return 0; + } + return __Pyx_InBases(cls, a) || __Pyx_InBases(cls, b); +} +static CYTHON_INLINE int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject *exc_type2) { + if (exc_type1) { + return __Pyx_IsAnySubtype2((PyTypeObject*)err, (PyTypeObject*)exc_type1, (PyTypeObject*)exc_type2); + } else { + return __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type2); + } +} +static int __Pyx_PyErr_GivenExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { + Py_ssize_t i, n; + assert(PyExceptionClass_Check(exc_type)); + n = PyTuple_GET_SIZE(tuple); + for (i=0; i>= 8; + ++i; + } + __Pyx_cached_runtime_version = version; + } +} +#endif +static unsigned long __Pyx_get_runtime_version(void) { +#if __PYX_LIMITED_VERSION_HEX >= 0x030b0000 + return Py_Version & ~0xFFUL; +#else + return __Pyx_cached_runtime_version; +#endif +} + +/* SwapException (used by CoroutineBase) */ +#if CYTHON_FAST_THREAD_STATE +static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { + PyObject *tmp_type, *tmp_value, *tmp_tb; + #if CYTHON_USE_EXC_INFO_STACK && PY_VERSION_HEX >= 0x030B00a4 + _PyErr_StackItem *exc_info = tstate->exc_info; + tmp_value = exc_info->exc_value; + exc_info->exc_value = *value; + if (tmp_value == NULL || tmp_value == Py_None) { + Py_XDECREF(tmp_value); + tmp_value = NULL; + tmp_type = NULL; + tmp_tb = NULL; + } else { + tmp_type = (PyObject*) Py_TYPE(tmp_value); + Py_INCREF(tmp_type); + #if CYTHON_COMPILING_IN_CPYTHON + tmp_tb = ((PyBaseExceptionObject*) tmp_value)->traceback; + Py_XINCREF(tmp_tb); + #else + tmp_tb = PyException_GetTraceback(tmp_value); + #endif + } + #elif CYTHON_USE_EXC_INFO_STACK + _PyErr_StackItem *exc_info = tstate->exc_info; + tmp_type = exc_info->exc_type; + tmp_value = exc_info->exc_value; + tmp_tb = exc_info->exc_traceback; + exc_info->exc_type = *type; + exc_info->exc_value = *value; + exc_info->exc_traceback = *tb; + #else + tmp_type = tstate->exc_type; + tmp_value = tstate->exc_value; + tmp_tb = tstate->exc_traceback; + tstate->exc_type = *type; + tstate->exc_value = *value; + tstate->exc_traceback = *tb; + #endif + *type = tmp_type; + *value = tmp_value; + *tb = tmp_tb; +} +#else +static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb) { + PyObject *tmp_type, *tmp_value, *tmp_tb; + PyErr_GetExcInfo(&tmp_type, &tmp_value, &tmp_tb); + PyErr_SetExcInfo(*type, *value, *tb); + *type = tmp_type; + *value = tmp_value; + *tb = tmp_tb; +} +#endif + +/* IterNextPlain (used by CoroutineBase) */ +#if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030A0000 +static PyObject *__Pyx_GetBuiltinNext_LimitedAPI(void) { + if (unlikely(!__pyx_mstate_global->__Pyx_GetBuiltinNext_LimitedAPI_cache)) + __pyx_mstate_global->__Pyx_GetBuiltinNext_LimitedAPI_cache = __Pyx_GetBuiltinName(__pyx_mstate_global->__pyx_n_u_next); + return __pyx_mstate_global->__Pyx_GetBuiltinNext_LimitedAPI_cache; +} +#endif +static CYTHON_INLINE PyObject *__Pyx_PyIter_Next_Plain(PyObject *iterator) { +#if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030A0000 + PyObject *result; + PyObject *next = __Pyx_GetBuiltinNext_LimitedAPI(); + if (unlikely(!next)) return NULL; + result = PyObject_CallFunctionObjArgs(next, iterator, NULL); + return result; +#else + (void)__Pyx_GetBuiltinName; // only for early limited API + iternextfunc iternext = __Pyx_PyObject_GetIterNextFunc(iterator); + assert(iternext); + return iternext(iterator); +#endif +} + +/* ReturnWithStopIteration (used by CoroutineBase) */ +static void __Pyx__ReturnWithStopIteration(PyObject* value, int async); +static CYTHON_INLINE void __Pyx_ReturnWithStopIteration(PyObject* value, int async, int iternext) { + if (value == Py_None) { + if (async || !iternext) + PyErr_SetNone(async ? PyExc_StopAsyncIteration : PyExc_StopIteration); + return; + } + __Pyx__ReturnWithStopIteration(value, async); +} +static void __Pyx__ReturnWithStopIteration(PyObject* value, int async) { +#if CYTHON_COMPILING_IN_CPYTHON + __Pyx_PyThreadState_declare +#endif + PyObject *exc; + PyObject *exc_type = async ? PyExc_StopAsyncIteration : PyExc_StopIteration; +#if CYTHON_COMPILING_IN_CPYTHON + if ((PY_VERSION_HEX >= (0x030C00A6)) || unlikely(PyTuple_Check(value) || PyExceptionInstance_Check(value))) { + if (PY_VERSION_HEX >= (0x030e00A1)) { + exc = __Pyx_PyObject_CallOneArg(exc_type, value); + } else { + PyObject *args_tuple = PyTuple_New(1); + if (unlikely(!args_tuple)) return; + Py_INCREF(value); + PyTuple_SET_ITEM(args_tuple, 0, value); + exc = PyObject_Call(exc_type, args_tuple, NULL); + Py_DECREF(args_tuple); + } + if (unlikely(!exc)) return; + } else { + Py_INCREF(value); + exc = value; + } + #if CYTHON_FAST_THREAD_STATE + __Pyx_PyThreadState_assign + #if CYTHON_USE_EXC_INFO_STACK + if (!__pyx_tstate->exc_info->exc_value) + #else + if (!__pyx_tstate->exc_type) + #endif + { + Py_INCREF(exc_type); + __Pyx_ErrRestore(exc_type, exc, NULL); + return; + } + #endif +#else + exc = __Pyx_PyObject_CallOneArg(exc_type, value); + if (unlikely(!exc)) return; +#endif + PyErr_SetObject(exc_type, exc); + Py_DECREF(exc); +} + +/* CoroutineBase (used by Generator) */ +#if !CYTHON_COMPILING_IN_LIMITED_API +#include +#if PY_VERSION_HEX >= 0x030b00a6 && !defined(PYPY_VERSION) + #ifndef Py_BUILD_CORE + #define Py_BUILD_CORE 1 + #endif + #include "internal/pycore_frame.h" +#endif +#endif // CYTHON_COMPILING_IN_LIMITED_API +static CYTHON_INLINE void +__Pyx_Coroutine_Undelegate(__pyx_CoroutineObject *gen) { +#if CYTHON_USE_AM_SEND + gen->yieldfrom_am_send = NULL; +#endif + Py_CLEAR(gen->yieldfrom); +} +static int __Pyx_PyGen__FetchStopIterationValue(PyThreadState *__pyx_tstate, PyObject **pvalue) { + PyObject *et, *ev, *tb; + PyObject *value = NULL; + CYTHON_UNUSED_VAR(__pyx_tstate); + __Pyx_ErrFetch(&et, &ev, &tb); + if (!et) { + Py_XDECREF(tb); + Py_XDECREF(ev); + Py_INCREF(Py_None); + *pvalue = Py_None; + return 0; + } + if (likely(et == PyExc_StopIteration)) { + if (!ev) { + Py_INCREF(Py_None); + value = Py_None; + } + else if (likely(__Pyx_IS_TYPE(ev, (PyTypeObject*)PyExc_StopIteration))) { + #if CYTHON_COMPILING_IN_LIMITED_API || CYTHON_COMPILING_IN_GRAAL + value = PyObject_GetAttr(ev, __pyx_mstate_global->__pyx_n_u_value); + if (unlikely(!value)) goto limited_api_failure; + #else + value = ((PyStopIterationObject *)ev)->value; + Py_INCREF(value); + #endif + Py_DECREF(ev); + } + else if (unlikely(PyTuple_Check(ev))) { + Py_ssize_t tuple_size = __Pyx_PyTuple_GET_SIZE(ev); + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely(tuple_size < 0)) { + Py_XDECREF(tb); + Py_DECREF(ev); + Py_DECREF(et); + return -1; + } + #endif + if (tuple_size >= 1) { +#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + value = PyTuple_GET_ITEM(ev, 0); + Py_INCREF(value); +#elif CYTHON_ASSUME_SAFE_MACROS + value = PySequence_ITEM(ev, 0); +#else + value = PySequence_GetItem(ev, 0); + if (!value) goto limited_api_failure; +#endif + } else { + Py_INCREF(Py_None); + value = Py_None; + } + Py_DECREF(ev); + } + else if (!__Pyx_TypeCheck(ev, (PyTypeObject*)PyExc_StopIteration)) { + value = ev; + } + if (likely(value)) { + Py_XDECREF(tb); + Py_DECREF(et); + *pvalue = value; + return 0; + } + } else if (!__Pyx_PyErr_GivenExceptionMatches(et, PyExc_StopIteration)) { + __Pyx_ErrRestore(et, ev, tb); + return -1; + } + PyErr_NormalizeException(&et, &ev, &tb); + if (unlikely(!PyObject_TypeCheck(ev, (PyTypeObject*)PyExc_StopIteration))) { + __Pyx_ErrRestore(et, ev, tb); + return -1; + } + Py_XDECREF(tb); + Py_DECREF(et); +#if CYTHON_COMPILING_IN_LIMITED_API + value = PyObject_GetAttr(ev, __pyx_mstate_global->__pyx_n_u_value); +#else + value = ((PyStopIterationObject *)ev)->value; + Py_INCREF(value); +#endif + Py_DECREF(ev); +#if CYTHON_COMPILING_IN_LIMITED_API + if (unlikely(!value)) return -1; +#endif + *pvalue = value; + return 0; +#if CYTHON_COMPILING_IN_LIMITED_API || CYTHON_COMPILING_IN_GRAAL || !CYTHON_ASSUME_SAFE_MACROS + limited_api_failure: + Py_XDECREF(et); + Py_XDECREF(tb); + Py_XDECREF(ev); + return -1; +#endif +} +static CYTHON_INLINE +__Pyx_PySendResult __Pyx_Coroutine_status_from_result(PyObject **retval) { + if (*retval) { + return PYGEN_NEXT; + } else if (likely(__Pyx_PyGen__FetchStopIterationValue(__Pyx_PyThreadState_Current, retval) == 0)) { + return PYGEN_RETURN; + } else { + return PYGEN_ERROR; + } +} +static CYTHON_INLINE +void __Pyx_Coroutine_ExceptionClear(__Pyx_ExcInfoStruct *exc_state) { +#if PY_VERSION_HEX >= 0x030B00a4 + Py_CLEAR(exc_state->exc_value); +#else + PyObject *t, *v, *tb; + t = exc_state->exc_type; + v = exc_state->exc_value; + tb = exc_state->exc_traceback; + exc_state->exc_type = NULL; + exc_state->exc_value = NULL; + exc_state->exc_traceback = NULL; + Py_XDECREF(t); + Py_XDECREF(v); + Py_XDECREF(tb); +#endif +} +#define __Pyx_Coroutine_AlreadyRunningError(gen) (__Pyx__Coroutine_AlreadyRunningError(gen), (PyObject*)NULL) +static void __Pyx__Coroutine_AlreadyRunningError(__pyx_CoroutineObject *gen) { + const char *msg; + CYTHON_MAYBE_UNUSED_VAR(gen); + if ((0)) { + #ifdef __Pyx_Coroutine_USED + } else if (__Pyx_Coroutine_Check((PyObject*)gen)) { + msg = "coroutine already executing"; + #endif + #ifdef __Pyx_AsyncGen_USED + } else if (__Pyx_AsyncGen_CheckExact((PyObject*)gen)) { + msg = "async generator already executing"; + #endif + } else { + msg = "generator already executing"; + } + PyErr_SetString(PyExc_ValueError, msg); +} +static void __Pyx_Coroutine_AlreadyTerminatedError(PyObject *gen, PyObject *value, int closing) { + CYTHON_MAYBE_UNUSED_VAR(gen); + CYTHON_MAYBE_UNUSED_VAR(closing); + #ifdef __Pyx_Coroutine_USED + if (!closing && __Pyx_Coroutine_Check(gen)) { + PyErr_SetString(PyExc_RuntimeError, "cannot reuse already awaited coroutine"); + } else + #endif + if (value) { + #ifdef __Pyx_AsyncGen_USED + if (__Pyx_AsyncGen_CheckExact(gen)) + PyErr_SetNone(PyExc_StopAsyncIteration); + else + #endif + PyErr_SetNone(PyExc_StopIteration); + } +} +static +__Pyx_PySendResult __Pyx_Coroutine_SendEx(__pyx_CoroutineObject *self, PyObject *value, PyObject **result, int closing) { + __Pyx_PyThreadState_declare + PyThreadState *tstate; + __Pyx_ExcInfoStruct *exc_state; + PyObject *retval; + assert(__Pyx_Coroutine_get_is_running(self)); // Callers should ensure is_running + if (unlikely(self->resume_label == -1)) { + __Pyx_Coroutine_AlreadyTerminatedError((PyObject*)self, value, closing); + return PYGEN_ERROR; + } +#if CYTHON_FAST_THREAD_STATE + __Pyx_PyThreadState_assign + tstate = __pyx_tstate; +#else + tstate = __Pyx_PyThreadState_Current; +#endif + exc_state = &self->gi_exc_state; + if (exc_state->exc_value) { + #if CYTHON_COMPILING_IN_LIMITED_API || CYTHON_COMPILING_IN_PYPY + #else + PyObject *exc_tb; + #if PY_VERSION_HEX >= 0x030B00a4 && !CYTHON_COMPILING_IN_CPYTHON + exc_tb = PyException_GetTraceback(exc_state->exc_value); + #elif PY_VERSION_HEX >= 0x030B00a4 + exc_tb = ((PyBaseExceptionObject*) exc_state->exc_value)->traceback; + #else + exc_tb = exc_state->exc_traceback; + #endif + if (exc_tb) { + PyTracebackObject *tb = (PyTracebackObject *) exc_tb; + PyFrameObject *f = tb->tb_frame; + assert(f->f_back == NULL); + #if PY_VERSION_HEX >= 0x030B00A1 + f->f_back = PyThreadState_GetFrame(tstate); + #else + Py_XINCREF(tstate->frame); + f->f_back = tstate->frame; + #endif + #if PY_VERSION_HEX >= 0x030B00a4 && !CYTHON_COMPILING_IN_CPYTHON + Py_DECREF(exc_tb); + #endif + } + #endif + } +#if CYTHON_USE_EXC_INFO_STACK + exc_state->previous_item = tstate->exc_info; + tstate->exc_info = exc_state; +#else + if (exc_state->exc_type) { + __Pyx_ExceptionSwap(&exc_state->exc_type, &exc_state->exc_value, &exc_state->exc_traceback); + } else { + __Pyx_Coroutine_ExceptionClear(exc_state); + __Pyx_ExceptionSave(&exc_state->exc_type, &exc_state->exc_value, &exc_state->exc_traceback); + } +#endif + retval = self->body(self, tstate, value); +#if CYTHON_USE_EXC_INFO_STACK + exc_state = &self->gi_exc_state; + tstate->exc_info = exc_state->previous_item; + exc_state->previous_item = NULL; + __Pyx_Coroutine_ResetFrameBackpointer(exc_state); +#endif + *result = retval; + if (self->resume_label == -1) { + return likely(retval) ? PYGEN_RETURN : PYGEN_ERROR; + } + return PYGEN_NEXT; +} +static CYTHON_INLINE void __Pyx_Coroutine_ResetFrameBackpointer(__Pyx_ExcInfoStruct *exc_state) { +#if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API + CYTHON_UNUSED_VAR(exc_state); +#else + PyObject *exc_tb; + #if PY_VERSION_HEX >= 0x030B00a4 + if (!exc_state->exc_value) return; + exc_tb = PyException_GetTraceback(exc_state->exc_value); + #else + exc_tb = exc_state->exc_traceback; + #endif + if (likely(exc_tb)) { + PyTracebackObject *tb = (PyTracebackObject *) exc_tb; + PyFrameObject *f = tb->tb_frame; + Py_CLEAR(f->f_back); + #if PY_VERSION_HEX >= 0x030B00a4 + Py_DECREF(exc_tb); + #endif + } +#endif +} +#define __Pyx_Coroutine_MethodReturnFromResult(gen, result, retval, iternext)\ + ((result) == PYGEN_NEXT ? (retval) : __Pyx__Coroutine_MethodReturnFromResult(gen, result, retval, iternext)) +static PyObject * +__Pyx__Coroutine_MethodReturnFromResult(PyObject* gen, __Pyx_PySendResult result, PyObject *retval, int iternext) { + CYTHON_MAYBE_UNUSED_VAR(gen); + if (likely(result == PYGEN_RETURN)) { + int is_async = 0; + #ifdef __Pyx_AsyncGen_USED + is_async = __Pyx_AsyncGen_CheckExact(gen); + #endif + __Pyx_ReturnWithStopIteration(retval, is_async, iternext); + Py_XDECREF(retval); + } + return NULL; +} +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE +PyObject *__Pyx_PyGen_Send(PyGenObject *gen, PyObject *arg) { +#if PY_VERSION_HEX <= 0x030A00A1 + return _PyGen_Send(gen, arg); +#else + PyObject *result; + if (PyIter_Send((PyObject*)gen, arg ? arg : Py_None, &result) == PYGEN_RETURN) { + if (PyAsyncGen_CheckExact(gen)) { + assert(result == Py_None); + PyErr_SetNone(PyExc_StopAsyncIteration); + } + else if (result == Py_None) { + PyErr_SetNone(PyExc_StopIteration); + } + else { +#if PY_VERSION_HEX < 0x030d00A1 + _PyGen_SetStopIterationValue(result); +#else + if (!PyTuple_Check(result) && !PyExceptionInstance_Check(result)) { + PyErr_SetObject(PyExc_StopIteration, result); + } else { + PyObject *exc = __Pyx_PyObject_CallOneArg(PyExc_StopIteration, result); + if (likely(exc != NULL)) { + PyErr_SetObject(PyExc_StopIteration, exc); + Py_DECREF(exc); + } + } +#endif + } + Py_DECREF(result); + result = NULL; + } + return result; +#endif +} +#endif +static CYTHON_INLINE __Pyx_PySendResult +__Pyx_Coroutine_FinishDelegation(__pyx_CoroutineObject *gen, PyObject** retval) { + __Pyx_PySendResult result; + PyObject *val = NULL; + assert(__Pyx_Coroutine_get_is_running(gen)); + __Pyx_Coroutine_Undelegate(gen); + __Pyx_PyGen__FetchStopIterationValue(__Pyx_PyThreadState_Current, &val); + result = __Pyx_Coroutine_SendEx(gen, val, retval, 0); + Py_XDECREF(val); + return result; +} +#if CYTHON_USE_AM_SEND +static __Pyx_PySendResult +__Pyx_Coroutine_SendToDelegate(__pyx_CoroutineObject *gen, __Pyx_pyiter_sendfunc gen_am_send, PyObject *value, PyObject **retval) { + PyObject *ret = NULL; + __Pyx_PySendResult delegate_result, result; + assert(__Pyx_Coroutine_get_is_running(gen)); + delegate_result = gen_am_send(gen->yieldfrom, value, &ret); + if (delegate_result == PYGEN_NEXT) { + assert (ret != NULL); + *retval = ret; + return PYGEN_NEXT; + } + assert (delegate_result != PYGEN_ERROR || ret == NULL); + __Pyx_Coroutine_Undelegate(gen); + result = __Pyx_Coroutine_SendEx(gen, ret, retval, 0); + Py_XDECREF(ret); + return result; +} +#endif +static PyObject *__Pyx_Coroutine_Send(PyObject *self, PyObject *value) { + PyObject *retval = NULL; + __Pyx_PySendResult result = __Pyx_Coroutine_AmSend(self, value, &retval); + return __Pyx_Coroutine_MethodReturnFromResult(self, result, retval, 0); +} +static __Pyx_PySendResult +__Pyx_Coroutine_AmSend(PyObject *self, PyObject *value, PyObject **retval) { + __Pyx_PySendResult result; + __pyx_CoroutineObject *gen = (__pyx_CoroutineObject*) self; + if (unlikely(__Pyx_Coroutine_test_and_set_is_running(gen))) { + *retval = __Pyx_Coroutine_AlreadyRunningError(gen); + return PYGEN_ERROR; + } + #if CYTHON_USE_AM_SEND + if (gen->yieldfrom_am_send) { + result = __Pyx_Coroutine_SendToDelegate(gen, gen->yieldfrom_am_send, value, retval); + } else + #endif + if (gen->yieldfrom) { + PyObject *yf = gen->yieldfrom; + PyObject *ret; + #if !CYTHON_USE_AM_SEND + #ifdef __Pyx_Generator_USED + if (__Pyx_Generator_CheckExact(yf)) { + ret = __Pyx_Coroutine_Send(yf, value); + } else + #endif + #ifdef __Pyx_Coroutine_USED + if (__Pyx_Coroutine_Check(yf)) { + ret = __Pyx_Coroutine_Send(yf, value); + } else + #endif + #ifdef __Pyx_AsyncGen_USED + if (__pyx_PyAsyncGenASend_CheckExact(yf)) { + ret = __Pyx_async_gen_asend_send(yf, value); + } else + #endif + #if CYTHON_COMPILING_IN_CPYTHON + if (PyGen_CheckExact(yf)) { + ret = __Pyx_PyGen_Send((PyGenObject*)yf, value == Py_None ? NULL : value); + } else + if (PyCoro_CheckExact(yf)) { + ret = __Pyx_PyGen_Send((PyGenObject*)yf, value == Py_None ? NULL : value); + } else + #endif + #endif + { + #if !CYTHON_COMPILING_IN_LIMITED_API || __PYX_LIMITED_VERSION_HEX >= 0x03080000 + if (value == Py_None && PyIter_Check(yf)) + ret = __Pyx_PyIter_Next_Plain(yf); + else + #endif + ret = __Pyx_PyObject_CallMethod1(yf, __pyx_mstate_global->__pyx_n_u_send, value); + } + if (likely(ret)) { + __Pyx_Coroutine_unset_is_running(gen); + *retval = ret; + return PYGEN_NEXT; + } + result = __Pyx_Coroutine_FinishDelegation(gen, retval); + } else { + result = __Pyx_Coroutine_SendEx(gen, value, retval, 0); + } + __Pyx_Coroutine_unset_is_running(gen); + return result; +} +static int __Pyx_Coroutine_CloseIter(__pyx_CoroutineObject *gen, PyObject *yf) { + __Pyx_PySendResult result; + PyObject *retval = NULL; + CYTHON_UNUSED_VAR(gen); + assert(__Pyx_Coroutine_get_is_running(gen)); + #ifdef __Pyx_Generator_USED + if (__Pyx_Generator_CheckExact(yf)) { + result = __Pyx_Coroutine_Close(yf, &retval); + } else + #endif + #ifdef __Pyx_Coroutine_USED + if (__Pyx_Coroutine_Check(yf)) { + result = __Pyx_Coroutine_Close(yf, &retval); + } else + if (__Pyx_CoroutineAwait_CheckExact(yf)) { + result = __Pyx_CoroutineAwait_Close((__pyx_CoroutineAwaitObject*)yf); + } else + #endif + #ifdef __Pyx_AsyncGen_USED + if (__pyx_PyAsyncGenASend_CheckExact(yf)) { + retval = __Pyx_async_gen_asend_close(yf, NULL); + result = PYGEN_RETURN; + } else + if (__pyx_PyAsyncGenAThrow_CheckExact(yf)) { + retval = __Pyx_async_gen_athrow_close(yf, NULL); + result = PYGEN_RETURN; + } else + #endif + { + PyObject *meth; + result = PYGEN_RETURN; + meth = __Pyx_PyObject_GetAttrStrNoError(yf, __pyx_mstate_global->__pyx_n_u_close); + if (unlikely(!meth)) { + if (unlikely(PyErr_Occurred())) { + PyErr_WriteUnraisable(yf); + } + } else { + retval = __Pyx_PyObject_CallNoArg(meth); + Py_DECREF(meth); + if (unlikely(!retval)) { + result = PYGEN_ERROR; + } + } + } + Py_XDECREF(retval); + return result == PYGEN_ERROR ? -1 : 0; +} +static PyObject *__Pyx_Generator_Next(PyObject *self) { + __Pyx_PySendResult result; + PyObject *retval = NULL; + __pyx_CoroutineObject *gen = (__pyx_CoroutineObject*) self; + if (unlikely(__Pyx_Coroutine_test_and_set_is_running(gen))) { + return __Pyx_Coroutine_AlreadyRunningError(gen); + } + #if CYTHON_USE_AM_SEND + if (gen->yieldfrom_am_send) { + result = __Pyx_Coroutine_SendToDelegate(gen, gen->yieldfrom_am_send, Py_None, &retval); + } else + #endif + if (gen->yieldfrom) { + PyObject *yf = gen->yieldfrom; + PyObject *ret; + #ifdef __Pyx_Generator_USED + if (__Pyx_Generator_CheckExact(yf)) { + ret = __Pyx_Generator_Next(yf); + } else + #endif + #ifdef __Pyx_Coroutine_USED + if (__Pyx_Coroutine_CheckExact(yf)) { + ret = __Pyx_Coroutine_Send(yf, Py_None); + } else + #endif + #if CYTHON_COMPILING_IN_CPYTHON && (PY_VERSION_HEX < 0x030A00A3 || !CYTHON_USE_AM_SEND) + if (PyGen_CheckExact(yf)) { + ret = __Pyx_PyGen_Send((PyGenObject*)yf, NULL); + } else + #endif + ret = __Pyx_PyIter_Next_Plain(yf); + if (likely(ret)) { + __Pyx_Coroutine_unset_is_running(gen); + return ret; + } + result = __Pyx_Coroutine_FinishDelegation(gen, &retval); + } else { + result = __Pyx_Coroutine_SendEx(gen, Py_None, &retval, 0); + } + __Pyx_Coroutine_unset_is_running(gen); + return __Pyx_Coroutine_MethodReturnFromResult(self, result, retval, 1); +} +static PyObject *__Pyx_Coroutine_Close_Method(PyObject *self, PyObject *arg) { + PyObject *retval = NULL; + __Pyx_PySendResult result; + CYTHON_UNUSED_VAR(arg); + result = __Pyx_Coroutine_Close(self, &retval); + if (unlikely(result == PYGEN_ERROR)) + return NULL; + Py_XDECREF(retval); + Py_RETURN_NONE; +} +static __Pyx_PySendResult +__Pyx_Coroutine_Close(PyObject *self, PyObject **retval) { + __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self; + __Pyx_PySendResult result; + PyObject *yf; + int err = 0; + if (unlikely(__Pyx_Coroutine_test_and_set_is_running(gen))) { + *retval = __Pyx_Coroutine_AlreadyRunningError(gen); + return PYGEN_ERROR; + } + yf = gen->yieldfrom; + if (yf) { + Py_INCREF(yf); + err = __Pyx_Coroutine_CloseIter(gen, yf); + __Pyx_Coroutine_Undelegate(gen); + Py_DECREF(yf); + } + if (err == 0) + PyErr_SetNone(PyExc_GeneratorExit); + result = __Pyx_Coroutine_SendEx(gen, NULL, retval, 1); + if (result == PYGEN_ERROR) { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_Coroutine_unset_is_running(gen); + if (!__Pyx_PyErr_Occurred()) { + return PYGEN_RETURN; + } else if (likely(__Pyx_PyErr_ExceptionMatches2(PyExc_GeneratorExit, PyExc_StopIteration))) { + __Pyx_PyErr_Clear(); + return PYGEN_RETURN; + } + return PYGEN_ERROR; + } else if (likely(result == PYGEN_RETURN && *retval == Py_None)) { + __Pyx_Coroutine_unset_is_running(gen); + return PYGEN_RETURN; + } else { + const char *msg; + Py_DECREF(*retval); + *retval = NULL; + if ((0)) { + #ifdef __Pyx_Coroutine_USED + } else if (__Pyx_Coroutine_Check(self)) { + msg = "coroutine ignored GeneratorExit"; + #endif + #ifdef __Pyx_AsyncGen_USED + } else if (__Pyx_AsyncGen_CheckExact(self)) { + msg = "async generator ignored GeneratorExit"; + #endif + } else { + msg = "generator ignored GeneratorExit"; + } + PyErr_SetString(PyExc_RuntimeError, msg); + __Pyx_Coroutine_unset_is_running(gen); + return PYGEN_ERROR; + } +} +static PyObject *__Pyx__Coroutine_Throw(PyObject *self, PyObject *typ, PyObject *val, PyObject *tb, + PyObject *args, int close_on_genexit) { + __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self; + PyObject *yf; + if (unlikely(__Pyx_Coroutine_test_and_set_is_running(gen))) + return __Pyx_Coroutine_AlreadyRunningError(gen); + yf = gen->yieldfrom; + if (yf) { + __Pyx_PySendResult result; + PyObject *ret; + Py_INCREF(yf); + if (__Pyx_PyErr_GivenExceptionMatches(typ, PyExc_GeneratorExit) && close_on_genexit) { + int err = __Pyx_Coroutine_CloseIter(gen, yf); + Py_DECREF(yf); + __Pyx_Coroutine_Undelegate(gen); + if (err < 0) + goto propagate_exception; + goto throw_here; + } + if (0 + #ifdef __Pyx_Generator_USED + || __Pyx_Generator_CheckExact(yf) + #endif + #ifdef __Pyx_Coroutine_USED + || __Pyx_Coroutine_Check(yf) + #endif + ) { + ret = __Pyx__Coroutine_Throw(yf, typ, val, tb, args, close_on_genexit); + #ifdef __Pyx_Coroutine_USED + } else if (__Pyx_CoroutineAwait_CheckExact(yf)) { + ret = __Pyx__Coroutine_Throw(((__pyx_CoroutineAwaitObject*)yf)->coroutine, typ, val, tb, args, close_on_genexit); + #endif + } else { + PyObject *meth = __Pyx_PyObject_GetAttrStrNoError(yf, __pyx_mstate_global->__pyx_n_u_throw); + if (unlikely(!meth)) { + Py_DECREF(yf); + if (unlikely(PyErr_Occurred())) { + __Pyx_Coroutine_unset_is_running(gen); + return NULL; + } + __Pyx_Coroutine_Undelegate(gen); + goto throw_here; + } + if (likely(args)) { + ret = __Pyx_PyObject_Call(meth, args, NULL); + } else { + PyObject *cargs[4] = {NULL, typ, val, tb}; + ret = __Pyx_PyObject_FastCall(meth, cargs+1, 3 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET); + } + Py_DECREF(meth); + } + Py_DECREF(yf); + if (ret) { + __Pyx_Coroutine_unset_is_running(gen); + return ret; + } + result = __Pyx_Coroutine_FinishDelegation(gen, &ret); + __Pyx_Coroutine_unset_is_running(gen); + return __Pyx_Coroutine_MethodReturnFromResult(self, result, ret, 0); + } +throw_here: + __Pyx_Raise(typ, val, tb, NULL); +propagate_exception: + { + PyObject *retval = NULL; + __Pyx_PySendResult result = __Pyx_Coroutine_SendEx(gen, NULL, &retval, 0); + __Pyx_Coroutine_unset_is_running(gen); + return __Pyx_Coroutine_MethodReturnFromResult(self, result, retval, 0); + } +} +static PyObject *__Pyx_Coroutine_Throw(PyObject *self, PyObject *args) { + PyObject *typ; + PyObject *val = NULL; + PyObject *tb = NULL; + if (unlikely(!PyArg_UnpackTuple(args, "throw", 1, 3, &typ, &val, &tb))) + return NULL; + return __Pyx__Coroutine_Throw(self, typ, val, tb, args, 1); +} +static CYTHON_INLINE int __Pyx_Coroutine_traverse_excstate(__Pyx_ExcInfoStruct *exc_state, visitproc visit, void *arg) { +#if PY_VERSION_HEX >= 0x030B00a4 + Py_VISIT(exc_state->exc_value); +#else + Py_VISIT(exc_state->exc_type); + Py_VISIT(exc_state->exc_value); + Py_VISIT(exc_state->exc_traceback); +#endif + return 0; +} +static int __Pyx_Coroutine_traverse(__pyx_CoroutineObject *gen, visitproc visit, void *arg) { + { + int e = __Pyx_call_type_traverse((PyObject*)gen, 1, visit, arg); + if (e) return e; + } + Py_VISIT(gen->closure); + Py_VISIT(gen->classobj); + Py_VISIT(gen->yieldfrom); + return __Pyx_Coroutine_traverse_excstate(&gen->gi_exc_state, visit, arg); +} +static int __Pyx_Coroutine_clear(PyObject *self) { + __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self; + Py_CLEAR(gen->closure); + Py_CLEAR(gen->classobj); + __Pyx_Coroutine_Undelegate(gen); + __Pyx_Coroutine_ExceptionClear(&gen->gi_exc_state); +#ifdef __Pyx_AsyncGen_USED + if (__Pyx_AsyncGen_CheckExact(self)) { + Py_CLEAR(((__pyx_PyAsyncGenObject*)gen)->ag_finalizer); + } +#endif + Py_CLEAR(gen->gi_code); + Py_CLEAR(gen->gi_frame); + Py_CLEAR(gen->gi_name); + Py_CLEAR(gen->gi_qualname); + Py_CLEAR(gen->gi_modulename); + return 0; +} +static void __Pyx_Coroutine_dealloc(PyObject *self) { + __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self; + PyObject_GC_UnTrack(gen); + #if PY_VERSION_HEX < 0x030C0000 || CYTHON_COMPILING_IN_LIMITED_API + if (gen->gi_weakreflist != NULL) + #endif + PyObject_ClearWeakRefs(self); + if (gen->resume_label >= 0) { + PyObject_GC_Track(self); +#if CYTHON_USE_TP_FINALIZE + if (unlikely(PyObject_CallFinalizerFromDealloc(self))) +#else + { + destructor del = __Pyx_PyObject_GetSlot(gen, tp_del, destructor); + if (del) del(self); + } + if (unlikely(Py_REFCNT(self) > 0)) +#endif + { + return; + } + PyObject_GC_UnTrack(self); + } +#ifdef __Pyx_AsyncGen_USED + if (__Pyx_AsyncGen_CheckExact(self)) { + /* We have to handle this case for asynchronous generators + right here, because this code has to be between UNTRACK + and GC_Del. */ + Py_CLEAR(((__pyx_PyAsyncGenObject*)self)->ag_finalizer); + } +#endif + __Pyx_Coroutine_clear(self); + __Pyx_PyHeapTypeObject_GC_Del(gen); +} +#if CYTHON_USE_TP_FINALIZE +static void __Pyx_Coroutine_del(PyObject *self) { + PyObject *error_type, *error_value, *error_traceback; + __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self; + __Pyx_PyThreadState_declare + if (gen->resume_label < 0) { + return; + } + __Pyx_PyThreadState_assign + __Pyx_ErrFetch(&error_type, &error_value, &error_traceback); +#ifdef __Pyx_AsyncGen_USED + if (__Pyx_AsyncGen_CheckExact(self)) { + __pyx_PyAsyncGenObject *agen = (__pyx_PyAsyncGenObject*)self; + PyObject *finalizer = agen->ag_finalizer; + if (finalizer && !agen->ag_closed) { + PyObject *res = __Pyx_PyObject_CallOneArg(finalizer, self); + if (unlikely(!res)) { + PyErr_WriteUnraisable(self); + } else { + Py_DECREF(res); + } + __Pyx_ErrRestore(error_type, error_value, error_traceback); + return; + } + } +#endif + if (unlikely(gen->resume_label == 0 && !error_value)) { +#ifdef __Pyx_Coroutine_USED +#ifdef __Pyx_Generator_USED + if (!__Pyx_Generator_CheckExact(self)) +#endif + { + PyObject_GC_UnTrack(self); + if (unlikely(PyErr_WarnFormat(PyExc_RuntimeWarning, 1, "coroutine '%.50S' was never awaited", gen->gi_qualname) < 0)) + PyErr_WriteUnraisable(self); + PyObject_GC_Track(self); + } +#endif + } else { + PyObject *retval = NULL; + __Pyx_PySendResult result = __Pyx_Coroutine_Close(self, &retval); + if (result == PYGEN_ERROR) { + PyErr_WriteUnraisable(self); + } else { + Py_XDECREF(retval); + } + } + __Pyx_ErrRestore(error_type, error_value, error_traceback); +} +#endif +static PyObject * +__Pyx_Coroutine_get_name(__pyx_CoroutineObject *self, void *context) +{ + PyObject *name = self->gi_name; + CYTHON_UNUSED_VAR(context); + if (unlikely(!name)) name = Py_None; + Py_INCREF(name); + return name; +} +static int +__Pyx_Coroutine_set_name(__pyx_CoroutineObject *self, PyObject *value, void *context) +{ + CYTHON_UNUSED_VAR(context); + if (unlikely(value == NULL || !PyUnicode_Check(value))) { + PyErr_SetString(PyExc_TypeError, + "__name__ must be set to a string object"); + return -1; + } + Py_INCREF(value); + __Pyx_Py_XDECREF_SET(self->gi_name, value); + return 0; +} +static PyObject * +__Pyx_Coroutine_get_qualname(__pyx_CoroutineObject *self, void *context) +{ + PyObject *name = self->gi_qualname; + CYTHON_UNUSED_VAR(context); + if (unlikely(!name)) name = Py_None; + Py_INCREF(name); + return name; +} +static int +__Pyx_Coroutine_set_qualname(__pyx_CoroutineObject *self, PyObject *value, void *context) +{ + CYTHON_UNUSED_VAR(context); + if (unlikely(value == NULL || !PyUnicode_Check(value))) { + PyErr_SetString(PyExc_TypeError, + "__qualname__ must be set to a string object"); + return -1; + } + Py_INCREF(value); + __Pyx_Py_XDECREF_SET(self->gi_qualname, value); + return 0; +} +static PyObject * +__Pyx__Coroutine_get_frame(__pyx_CoroutineObject *self) +{ +#if !CYTHON_COMPILING_IN_LIMITED_API + PyObject *frame; + #if PY_VERSION_HEX >= 0x030d0000 + Py_BEGIN_CRITICAL_SECTION(self); + #endif + frame = self->gi_frame; + if (!frame) { + if (unlikely(!self->gi_code)) { + Py_RETURN_NONE; + } + PyObject *globals = PyDict_New(); + if (unlikely(!globals)) return NULL; + frame = (PyObject *) PyFrame_New( + PyThreadState_Get(), /*PyThreadState *tstate,*/ + (PyCodeObject*) self->gi_code, /*PyCodeObject *code,*/ + globals, /*PyObject *globals,*/ + 0 /*PyObject *locals*/ + ); + Py_DECREF(globals); + if (unlikely(!frame)) + return NULL; + if (unlikely(self->gi_frame)) { + Py_DECREF(frame); + frame = self->gi_frame; + } else { + self->gi_frame = frame; + } + } + Py_INCREF(frame); + #if PY_VERSION_HEX >= 0x030d0000 + Py_END_CRITICAL_SECTION(); + #endif + return frame; +#else + CYTHON_UNUSED_VAR(self); + Py_RETURN_NONE; +#endif +} +static PyObject * +__Pyx_Coroutine_get_frame(__pyx_CoroutineObject *self, void *context) { + CYTHON_UNUSED_VAR(context); + PyObject *frame = self->gi_frame; + if (frame) + return __Pyx_NewRef(frame); + return __Pyx__Coroutine_get_frame(self); +} +static __pyx_CoroutineObject *__Pyx__Coroutine_New( + PyTypeObject* type, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure, + PyObject *name, PyObject *qualname, PyObject *module_name) { + __pyx_CoroutineObject *gen = PyObject_GC_New(__pyx_CoroutineObject, type); + if (unlikely(!gen)) + return NULL; + return __Pyx__Coroutine_NewInit(gen, body, code, closure, name, qualname, module_name); +} +static __pyx_CoroutineObject *__Pyx__Coroutine_NewInit( + __pyx_CoroutineObject *gen, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure, + PyObject *name, PyObject *qualname, PyObject *module_name) { + gen->body = body; + gen->closure = closure; + Py_XINCREF(closure); + gen->is_running = 0; + gen->resume_label = 0; + gen->classobj = NULL; + gen->yieldfrom = NULL; + gen->yieldfrom_am_send = NULL; + #if PY_VERSION_HEX >= 0x030B00a4 && !CYTHON_COMPILING_IN_LIMITED_API + gen->gi_exc_state.exc_value = NULL; + #else + gen->gi_exc_state.exc_type = NULL; + gen->gi_exc_state.exc_value = NULL; + gen->gi_exc_state.exc_traceback = NULL; + #endif +#if CYTHON_USE_EXC_INFO_STACK + gen->gi_exc_state.previous_item = NULL; +#endif +#if PY_VERSION_HEX < 0x030C0000 || CYTHON_COMPILING_IN_LIMITED_API + gen->gi_weakreflist = NULL; +#endif + Py_XINCREF(qualname); + gen->gi_qualname = qualname; + Py_XINCREF(name); + gen->gi_name = name; + Py_XINCREF(module_name); + gen->gi_modulename = module_name; + Py_XINCREF(code); + gen->gi_code = code; + gen->gi_frame = NULL; + PyObject_GC_Track(gen); + return gen; +} +static char __Pyx_Coroutine_test_and_set_is_running(__pyx_CoroutineObject *gen) { + char result; + #if PY_VERSION_HEX >= 0x030d0000 && !CYTHON_COMPILING_IN_LIMITED_API + Py_BEGIN_CRITICAL_SECTION(gen); + #endif + result = gen->is_running; + gen->is_running = 1; + #if PY_VERSION_HEX >= 0x030d0000 && !CYTHON_COMPILING_IN_LIMITED_API + Py_END_CRITICAL_SECTION(); + #endif + return result; +} +static void __Pyx_Coroutine_unset_is_running(__pyx_CoroutineObject *gen) { + #if PY_VERSION_HEX >= 0x030d0000 && !CYTHON_COMPILING_IN_LIMITED_API + Py_BEGIN_CRITICAL_SECTION(gen); + #endif + assert(gen->is_running); + gen->is_running = 0; + #if PY_VERSION_HEX >= 0x030d0000 && !CYTHON_COMPILING_IN_LIMITED_API + Py_END_CRITICAL_SECTION(); + #endif +} +static char __Pyx_Coroutine_get_is_running(__pyx_CoroutineObject *gen) { + char result; + #if PY_VERSION_HEX >= 0x030d0000 && !CYTHON_COMPILING_IN_LIMITED_API + Py_BEGIN_CRITICAL_SECTION(gen); + #endif + result = gen->is_running; + #if PY_VERSION_HEX >= 0x030d0000 && !CYTHON_COMPILING_IN_LIMITED_API + Py_END_CRITICAL_SECTION(); + #endif + return result; +} +static PyObject *__Pyx_Coroutine_get_is_running_getter(PyObject *gen, void *closure) { + CYTHON_UNUSED_VAR(closure); + char result = __Pyx_Coroutine_get_is_running((__pyx_CoroutineObject*)gen); + if (result) Py_RETURN_TRUE; + else Py_RETURN_FALSE; +} +#if __PYX_HAS_PY_AM_SEND == 2 +static void __Pyx_SetBackportTypeAmSend(PyTypeObject *type, __Pyx_PyAsyncMethodsStruct *static_amsend_methods, __Pyx_pyiter_sendfunc am_send) { + Py_ssize_t ptr_offset = (char*)(type->tp_as_async) - (char*)type; + if (ptr_offset < 0 || ptr_offset > type->tp_basicsize) { + return; + } + memcpy((void*)static_amsend_methods, (void*)(type->tp_as_async), sizeof(*type->tp_as_async)); + static_amsend_methods->am_send = am_send; + type->tp_as_async = __Pyx_SlotTpAsAsync(static_amsend_methods); +} +#endif +static PyObject *__Pyx_Coroutine_fail_reduce_ex(PyObject *self, PyObject *arg) { + CYTHON_UNUSED_VAR(arg); + __Pyx_TypeName self_type_name = __Pyx_PyType_GetFullyQualifiedName(Py_TYPE((PyObject*)self)); + PyErr_Format(PyExc_TypeError, "cannot pickle '" __Pyx_FMT_TYPENAME "' object", + self_type_name); + __Pyx_DECREF_TypeName(self_type_name); + return NULL; +} + +/* Generator */ +static PyMethodDef __pyx_Generator_methods[] = { + {"send", (PyCFunction) __Pyx_Coroutine_Send, METH_O, + PyDoc_STR("send(arg) -> send 'arg' into generator,\nreturn next yielded value or raise StopIteration.")}, + {"throw", (PyCFunction) __Pyx_Coroutine_Throw, METH_VARARGS, + PyDoc_STR("throw(typ[,val[,tb]]) -> raise exception in generator,\nreturn next yielded value or raise StopIteration.")}, + {"close", (PyCFunction) __Pyx_Coroutine_Close_Method, METH_NOARGS, + PyDoc_STR("close() -> raise GeneratorExit inside generator.")}, + {"__reduce_ex__", (PyCFunction) __Pyx_Coroutine_fail_reduce_ex, METH_O, 0}, + {"__reduce__", (PyCFunction) __Pyx_Coroutine_fail_reduce_ex, METH_NOARGS, 0}, + {0, 0, 0, 0} +}; +static PyMemberDef __pyx_Generator_memberlist[] = { + {"gi_yieldfrom", T_OBJECT, offsetof(__pyx_CoroutineObject, yieldfrom), READONLY, + PyDoc_STR("object being iterated by 'yield from', or None")}, + {"gi_code", T_OBJECT, offsetof(__pyx_CoroutineObject, gi_code), READONLY, NULL}, + {"__module__", T_OBJECT, offsetof(__pyx_CoroutineObject, gi_modulename), 0, 0}, +#if PY_VERSION_HEX < 0x030C0000 || CYTHON_COMPILING_IN_LIMITED_API + {"__weaklistoffset__", T_PYSSIZET, offsetof(__pyx_CoroutineObject, gi_weakreflist), READONLY, 0}, +#endif + {0, 0, 0, 0, 0} +}; +static PyGetSetDef __pyx_Generator_getsets[] = { + {"__name__", (getter)__Pyx_Coroutine_get_name, (setter)__Pyx_Coroutine_set_name, + PyDoc_STR("name of the generator"), 0}, + {"__qualname__", (getter)__Pyx_Coroutine_get_qualname, (setter)__Pyx_Coroutine_set_qualname, + PyDoc_STR("qualified name of the generator"), 0}, + {"gi_frame", (getter)__Pyx_Coroutine_get_frame, NULL, + PyDoc_STR("Frame of the generator"), 0}, + {"gi_running", __Pyx_Coroutine_get_is_running_getter, NULL, NULL, NULL}, + {0, 0, 0, 0, 0} +}; +static PyType_Slot __pyx_GeneratorType_slots[] = { + {Py_tp_dealloc, (void *)__Pyx_Coroutine_dealloc}, + {Py_tp_traverse, (void *)__Pyx_Coroutine_traverse}, + {Py_tp_iter, (void *)PyObject_SelfIter}, + {Py_tp_iternext, (void *)__Pyx_Generator_Next}, + {Py_tp_methods, (void *)__pyx_Generator_methods}, + {Py_tp_members, (void *)__pyx_Generator_memberlist}, + {Py_tp_getset, (void *)__pyx_Generator_getsets}, + {Py_tp_getattro, (void *) PyObject_GenericGetAttr}, +#if CYTHON_USE_TP_FINALIZE + {Py_tp_finalize, (void *)__Pyx_Coroutine_del}, +#endif +#if __PYX_HAS_PY_AM_SEND == 1 + {Py_am_send, (void *)__Pyx_Coroutine_AmSend}, +#endif + {0, 0}, +}; +static PyType_Spec __pyx_GeneratorType_spec = { + __PYX_TYPE_MODULE_PREFIX "generator", + sizeof(__pyx_CoroutineObject), + 0, +#if PY_VERSION_HEX >= 0x030C0000 && !CYTHON_COMPILING_IN_LIMITED_API + Py_TPFLAGS_MANAGED_WEAKREF | +#endif + Py_TPFLAGS_IMMUTABLETYPE | Py_TPFLAGS_DISALLOW_INSTANTIATION | + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | __Pyx_TPFLAGS_HAVE_AM_SEND, + __pyx_GeneratorType_slots +}; +#if __PYX_HAS_PY_AM_SEND == 2 +static __Pyx_PyAsyncMethodsStruct __pyx_Generator_as_async; +#endif +static int __pyx_Generator_init(PyObject *module) { + __pyx_mstatetype *mstate = __Pyx_PyModule_GetState(module); + mstate->__pyx_GeneratorType = __Pyx_FetchCommonTypeFromSpec( + mstate->__pyx_CommonTypesMetaclassType, module, &__pyx_GeneratorType_spec, NULL); + if (unlikely(!mstate->__pyx_GeneratorType)) { + return -1; + } +#if __PYX_HAS_PY_AM_SEND == 2 + __Pyx_SetBackportTypeAmSend(mstate->__pyx_GeneratorType, &__pyx_Generator_as_async, &__Pyx_Coroutine_AmSend); +#endif + return 0; +} +static PyObject *__Pyx_Generator_GetInlinedResult(PyObject *self) { + __pyx_CoroutineObject *gen = (__pyx_CoroutineObject*) self; + PyObject *retval = NULL; + if (unlikely(__Pyx_Coroutine_test_and_set_is_running(gen))) { + return __Pyx_Coroutine_AlreadyRunningError(gen); + } + __Pyx_PySendResult result = __Pyx_Coroutine_SendEx(gen, Py_None, &retval, 0); + __Pyx_Coroutine_unset_is_running(gen); + (void) result; + assert (result == PYGEN_RETURN || result == PYGEN_ERROR); + assert ((result == PYGEN_RETURN && retval != NULL) || (result == PYGEN_ERROR && retval == NULL)); + return retval; +} + +/* CheckBinaryVersion */ +static int __Pyx_check_binary_version(unsigned long ct_version, unsigned long rt_version, int allow_newer) { + const unsigned long MAJOR_MINOR = 0xFFFF0000UL; + if ((rt_version & MAJOR_MINOR) == (ct_version & MAJOR_MINOR)) + return 0; + if (likely(allow_newer && (rt_version & MAJOR_MINOR) > (ct_version & MAJOR_MINOR))) + return 1; + { + char message[200]; + PyOS_snprintf(message, sizeof(message), + "compile time Python version %d.%d " + "of module '%.100s' " + "%s " + "runtime version %d.%d", + (int) (ct_version >> 24), (int) ((ct_version >> 16) & 0xFF), + __Pyx_MODULE_NAME, + (allow_newer) ? "was newer than" : "does not match", + (int) (rt_version >> 24), (int) ((rt_version >> 16) & 0xFF) + ); + return PyErr_WarnEx(NULL, message, 1); + } +} + +/* NewCodeObj */ +#if CYTHON_COMPILING_IN_LIMITED_API + static PyObject* __Pyx__PyCode_New(int a, int p, int k, int l, int s, int f, + PyObject *code, PyObject *c, PyObject* n, PyObject *v, + PyObject *fv, PyObject *cell, PyObject* fn, + PyObject *name, int fline, PyObject *lnos) { + PyObject *exception_table = NULL; + PyObject *types_module=NULL, *code_type=NULL, *result=NULL; + #if __PYX_LIMITED_VERSION_HEX < 0x030b0000 + PyObject *version_info; + PyObject *py_minor_version = NULL; + #endif + long minor_version = 0; + PyObject *type, *value, *traceback; + PyErr_Fetch(&type, &value, &traceback); + #if __PYX_LIMITED_VERSION_HEX >= 0x030b0000 + minor_version = 11; + #else + if (!(version_info = PySys_GetObject("version_info"))) goto end; + if (!(py_minor_version = PySequence_GetItem(version_info, 1))) goto end; + minor_version = PyLong_AsLong(py_minor_version); + Py_DECREF(py_minor_version); + if (minor_version == -1 && PyErr_Occurred()) goto end; + #endif + if (!(types_module = PyImport_ImportModule("types"))) goto end; + if (!(code_type = PyObject_GetAttrString(types_module, "CodeType"))) goto end; + if (minor_version <= 7) { + (void)p; + result = PyObject_CallFunction(code_type, "iiiiiOOOOOOiOOO", a, k, l, s, f, code, + c, n, v, fn, name, fline, lnos, fv, cell); + } else if (minor_version <= 10) { + result = PyObject_CallFunction(code_type, "iiiiiiOOOOOOiOOO", a,p, k, l, s, f, code, + c, n, v, fn, name, fline, lnos, fv, cell); + } else { + if (!(exception_table = PyBytes_FromStringAndSize(NULL, 0))) goto end; + result = PyObject_CallFunction(code_type, "iiiiiiOOOOOOOiOOOO", a,p, k, l, s, f, code, + c, n, v, fn, name, name, fline, lnos, exception_table, fv, cell); + } + end: + Py_XDECREF(code_type); + Py_XDECREF(exception_table); + Py_XDECREF(types_module); + if (type) { + PyErr_Restore(type, value, traceback); + } + return result; + } +#elif PY_VERSION_HEX >= 0x030B0000 + static PyCodeObject* __Pyx__PyCode_New(int a, int p, int k, int l, int s, int f, + PyObject *code, PyObject *c, PyObject* n, PyObject *v, + PyObject *fv, PyObject *cell, PyObject* fn, + PyObject *name, int fline, PyObject *lnos) { + PyCodeObject *result; + result = + #if PY_VERSION_HEX >= 0x030C0000 + PyUnstable_Code_NewWithPosOnlyArgs + #else + PyCode_NewWithPosOnlyArgs + #endif + (a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, name, fline, lnos, __pyx_mstate_global->__pyx_empty_bytes); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030c00A1 + if (likely(result)) + result->_co_firsttraceable = 0; + #endif + return result; + } +#elif !CYTHON_COMPILING_IN_PYPY + #define __Pyx__PyCode_New(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ + PyCode_NewWithPosOnlyArgs(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) +#else + #define __Pyx__PyCode_New(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ + PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) +#endif +static PyObject* __Pyx_PyCode_New( + const __Pyx_PyCode_New_function_description descr, + PyObject * const *varnames, + PyObject *filename, + PyObject *funcname, + PyObject *line_table, + PyObject *tuple_dedup_map +) { + PyObject *code_obj = NULL, *varnames_tuple_dedup = NULL, *code_bytes = NULL; + Py_ssize_t var_count = (Py_ssize_t) descr.nlocals; + PyObject *varnames_tuple = PyTuple_New(var_count); + if (unlikely(!varnames_tuple)) return NULL; + for (Py_ssize_t i=0; i < var_count; i++) { + Py_INCREF(varnames[i]); + if (__Pyx_PyTuple_SET_ITEM(varnames_tuple, i, varnames[i]) != (0)) goto done; + } + #if CYTHON_COMPILING_IN_LIMITED_API + varnames_tuple_dedup = PyDict_GetItem(tuple_dedup_map, varnames_tuple); + if (!varnames_tuple_dedup) { + if (unlikely(PyDict_SetItem(tuple_dedup_map, varnames_tuple, varnames_tuple) < 0)) goto done; + varnames_tuple_dedup = varnames_tuple; + } + #else + varnames_tuple_dedup = PyDict_SetDefault(tuple_dedup_map, varnames_tuple, varnames_tuple); + if (unlikely(!varnames_tuple_dedup)) goto done; + #endif + #if CYTHON_AVOID_BORROWED_REFS + Py_INCREF(varnames_tuple_dedup); + #endif + if (__PYX_LIMITED_VERSION_HEX >= (0x030b0000) && line_table != NULL && !CYTHON_COMPILING_IN_GRAAL) { + Py_ssize_t line_table_length = __Pyx_PyBytes_GET_SIZE(line_table); + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely(line_table_length == -1)) goto done; + #endif + Py_ssize_t code_len = (line_table_length * 2 + 4) & ~3LL; + code_bytes = PyBytes_FromStringAndSize(NULL, code_len); + if (unlikely(!code_bytes)) goto done; + char* c_code_bytes = PyBytes_AsString(code_bytes); + if (unlikely(!c_code_bytes)) goto done; + memset(c_code_bytes, 0, (size_t) code_len); + } + code_obj = (PyObject*) __Pyx__PyCode_New( + (int) descr.argcount, + (int) descr.num_posonly_args, + (int) descr.num_kwonly_args, + (int) descr.nlocals, + 0, + (int) descr.flags, + code_bytes ? code_bytes : __pyx_mstate_global->__pyx_empty_bytes, + __pyx_mstate_global->__pyx_empty_tuple, + __pyx_mstate_global->__pyx_empty_tuple, + varnames_tuple_dedup, + __pyx_mstate_global->__pyx_empty_tuple, + __pyx_mstate_global->__pyx_empty_tuple, + filename, + funcname, + (int) descr.first_line, + (__PYX_LIMITED_VERSION_HEX >= (0x030b0000) && line_table) ? line_table : __pyx_mstate_global->__pyx_empty_bytes + ); +done: + Py_XDECREF(code_bytes); + #if CYTHON_AVOID_BORROWED_REFS + Py_XDECREF(varnames_tuple_dedup); + #endif + Py_DECREF(varnames_tuple); + return code_obj; +} + +/* DecompressString */ +static PyObject *__Pyx_DecompressString(const char *s, Py_ssize_t length, int algo) { + PyObject *module, *decompress, *compressed_bytes, *decompressed; + const char* module_name = algo == 3 ? "compression.zstd" : algo == 2 ? "bz2" : "zlib"; + PyObject *methodname = PyUnicode_FromString("decompress"); + if (unlikely(!methodname)) return NULL; + #if __PYX_LIMITED_VERSION_HEX >= 0x030e0000 + if (algo == 3) { + PyObject *fromlist = Py_BuildValue("[O]", methodname); + if (unlikely(!fromlist)) return NULL; + module = PyImport_ImportModuleLevel("compression.zstd", NULL, NULL, fromlist, 0); + Py_DECREF(fromlist); + } else + #endif + module = PyImport_ImportModule(module_name); + if (unlikely(!module)) goto import_failed; + decompress = PyObject_GetAttr(module, methodname); + if (unlikely(!decompress)) goto import_failed; + { + #ifdef __cplusplus + char *memview_bytes = const_cast(s); + #else + #if defined(__clang__) + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wcast-qual" + #elif !defined(__INTEL_COMPILER) && defined(__GNUC__) + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wcast-qual" + #endif + char *memview_bytes = (char*) s; + #if defined(__clang__) + #pragma clang diagnostic pop + #elif !defined(__INTEL_COMPILER) && defined(__GNUC__) + #pragma GCC diagnostic pop + #endif + #endif + #if CYTHON_COMPILING_IN_LIMITED_API && !defined(PyBUF_READ) + int memview_flags = 0x100; + #else + int memview_flags = PyBUF_READ; + #endif + compressed_bytes = PyMemoryView_FromMemory(memview_bytes, length, memview_flags); + } + if (unlikely(!compressed_bytes)) { + Py_DECREF(decompress); + goto bad; + } + decompressed = PyObject_CallFunctionObjArgs(decompress, compressed_bytes, NULL); + Py_DECREF(compressed_bytes); + Py_DECREF(decompress); + Py_DECREF(module); + Py_DECREF(methodname); + return decompressed; +import_failed: + PyErr_Format(PyExc_ImportError, + "Failed to import '%.20s.decompress' - cannot initialise module strings. " + "String compression was configured with the C macro 'CYTHON_COMPRESS_STRINGS=%d'.", + module_name, algo); +bad: + Py_XDECREF(module); + Py_DECREF(methodname); + return NULL; +} + +#include +static CYTHON_INLINE Py_ssize_t __Pyx_ssize_strlen(const char *s) { + size_t len = strlen(s); + if (unlikely(len > (size_t) PY_SSIZE_T_MAX)) { + PyErr_SetString(PyExc_OverflowError, "byte string is too long"); + return -1; + } + return (Py_ssize_t) len; +} +static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_str) { + Py_ssize_t len = __Pyx_ssize_strlen(c_str); + if (unlikely(len < 0)) return NULL; + return __Pyx_PyUnicode_FromStringAndSize(c_str, len); +} +static CYTHON_INLINE PyObject* __Pyx_PyByteArray_FromString(const char* c_str) { + Py_ssize_t len = __Pyx_ssize_strlen(c_str); + if (unlikely(len < 0)) return NULL; + return PyByteArray_FromStringAndSize(c_str, len); +} +static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject* o) { + Py_ssize_t ignore; + return __Pyx_PyObject_AsStringAndSize(o, &ignore); +} +#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_UTF8 +static CYTHON_INLINE const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) { + if (unlikely(__Pyx_PyUnicode_READY(o) == -1)) return NULL; +#if CYTHON_COMPILING_IN_LIMITED_API + { + const char* result; + Py_ssize_t unicode_length; + CYTHON_MAYBE_UNUSED_VAR(unicode_length); // only for __PYX_DEFAULT_STRING_ENCODING_IS_ASCII + #if __PYX_LIMITED_VERSION_HEX < 0x030A0000 + if (unlikely(PyArg_Parse(o, "s#", &result, length) < 0)) return NULL; + #else + result = PyUnicode_AsUTF8AndSize(o, length); + #endif + #if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII + unicode_length = PyUnicode_GetLength(o); + if (unlikely(unicode_length < 0)) return NULL; + if (unlikely(unicode_length != *length)) { + PyUnicode_AsASCIIString(o); + return NULL; + } + #endif + return result; + } +#else +#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII + if (likely(PyUnicode_IS_ASCII(o))) { + *length = PyUnicode_GET_LENGTH(o); + return PyUnicode_AsUTF8(o); + } else { + PyUnicode_AsASCIIString(o); + return NULL; + } +#else + return PyUnicode_AsUTF8AndSize(o, length); +#endif +#endif +} +#endif +static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) { +#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_UTF8 + if (PyUnicode_Check(o)) { + return __Pyx_PyUnicode_AsStringAndSize(o, length); + } else +#endif + if (PyByteArray_Check(o)) { +#if (CYTHON_ASSUME_SAFE_SIZE && CYTHON_ASSUME_SAFE_MACROS) || (CYTHON_COMPILING_IN_PYPY && (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE))) + *length = PyByteArray_GET_SIZE(o); + return PyByteArray_AS_STRING(o); +#else + *length = PyByteArray_Size(o); + if (*length == -1) return NULL; + return PyByteArray_AsString(o); +#endif + } else + { + char* result; + int r = PyBytes_AsStringAndSize(o, &result, length); + if (unlikely(r < 0)) { + return NULL; + } else { + return result; + } + } +} +static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) { + int is_true = x == Py_True; + if (is_true | (x == Py_False) | (x == Py_None)) return is_true; + else return PyObject_IsTrue(x); +} +static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject* x) { + int retval; + if (unlikely(!x)) return -1; + retval = __Pyx_PyObject_IsTrue(x); + Py_DECREF(x); + return retval; +} +static PyObject* __Pyx_PyNumber_LongWrongResultType(PyObject* result) { + __Pyx_TypeName result_type_name = __Pyx_PyType_GetFullyQualifiedName(Py_TYPE(result)); + if (PyLong_Check(result)) { + if (PyErr_WarnFormat(PyExc_DeprecationWarning, 1, + "__int__ returned non-int (type " __Pyx_FMT_TYPENAME "). " + "The ability to return an instance of a strict subclass of int is deprecated, " + "and may be removed in a future version of Python.", + result_type_name)) { + __Pyx_DECREF_TypeName(result_type_name); + Py_DECREF(result); + return NULL; + } + __Pyx_DECREF_TypeName(result_type_name); + return result; + } + PyErr_Format(PyExc_TypeError, + "__int__ returned non-int (type " __Pyx_FMT_TYPENAME ")", + result_type_name); + __Pyx_DECREF_TypeName(result_type_name); + Py_DECREF(result); + return NULL; +} +static CYTHON_INLINE PyObject* __Pyx_PyNumber_Long(PyObject* x) { +#if CYTHON_USE_TYPE_SLOTS + PyNumberMethods *m; +#endif + PyObject *res = NULL; + if (likely(PyLong_Check(x))) + return __Pyx_NewRef(x); +#if CYTHON_USE_TYPE_SLOTS + m = Py_TYPE(x)->tp_as_number; + if (likely(m && m->nb_int)) { + res = m->nb_int(x); + } +#else + if (!PyBytes_CheckExact(x) && !PyUnicode_CheckExact(x)) { + res = PyNumber_Long(x); + } +#endif + if (likely(res)) { + if (unlikely(!PyLong_CheckExact(res))) { + return __Pyx_PyNumber_LongWrongResultType(res); + } + } + else if (!PyErr_Occurred()) { + PyErr_SetString(PyExc_TypeError, + "an integer is required"); + } + return res; +} +static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) { + Py_ssize_t ival; + PyObject *x; + if (likely(PyLong_CheckExact(b))) { + #if CYTHON_USE_PYLONG_INTERNALS + if (likely(__Pyx_PyLong_IsCompact(b))) { + return __Pyx_PyLong_CompactValue(b); + } else { + const digit* digits = __Pyx_PyLong_Digits(b); + const Py_ssize_t size = __Pyx_PyLong_SignedDigitCount(b); + switch (size) { + case 2: + if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { + return (Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case -2: + if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { + return -(Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case 3: + if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { + return (Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case -3: + if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { + return -(Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case 4: + if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { + return (Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case -4: + if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { + return -(Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + } + } + #endif + return PyLong_AsSsize_t(b); + } + x = PyNumber_Index(b); + if (!x) return -1; + ival = PyLong_AsSsize_t(x); + Py_DECREF(x); + return ival; +} +static CYTHON_INLINE Py_hash_t __Pyx_PyIndex_AsHash_t(PyObject* o) { + if (sizeof(Py_hash_t) == sizeof(Py_ssize_t)) { + return (Py_hash_t) __Pyx_PyIndex_AsSsize_t(o); + } else { + Py_ssize_t ival; + PyObject *x; + x = PyNumber_Index(o); + if (!x) return -1; + ival = PyLong_AsLong(x); + Py_DECREF(x); + return ival; + } +} +static CYTHON_INLINE PyObject *__Pyx_Owned_Py_None(int b) { + CYTHON_UNUSED_VAR(b); + return __Pyx_NewRef(Py_None); +} +static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b) { + return __Pyx_NewRef(b ? Py_True: Py_False); +} +static CYTHON_INLINE PyObject * __Pyx_PyLong_FromSize_t(size_t ival) { + return PyLong_FromSize_t(ival); +} + + +/* MultiPhaseInitModuleState */ +#if CYTHON_PEP489_MULTI_PHASE_INIT && CYTHON_USE_MODULE_STATE +#ifndef CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE +#if (CYTHON_COMPILING_IN_LIMITED_API || PY_VERSION_HEX >= 0x030C0000) + #define CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE 1 +#else + #define CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE 0 +#endif +#endif +#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE && !CYTHON_ATOMICS +#error "Module state with PEP489 requires atomics. Currently that's one of\ + C11, C++11, gcc atomic intrinsics or MSVC atomic intrinsics" +#endif +#if !CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE +#define __Pyx_ModuleStateLookup_Lock() +#define __Pyx_ModuleStateLookup_Unlock() +#elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d0000 +static PyMutex __Pyx_ModuleStateLookup_mutex = {0}; +#define __Pyx_ModuleStateLookup_Lock() PyMutex_Lock(&__Pyx_ModuleStateLookup_mutex) +#define __Pyx_ModuleStateLookup_Unlock() PyMutex_Unlock(&__Pyx_ModuleStateLookup_mutex) +#elif defined(__cplusplus) && __cplusplus >= 201103L +#include +static std::mutex __Pyx_ModuleStateLookup_mutex; +#define __Pyx_ModuleStateLookup_Lock() __Pyx_ModuleStateLookup_mutex.lock() +#define __Pyx_ModuleStateLookup_Unlock() __Pyx_ModuleStateLookup_mutex.unlock() +#elif defined(__STDC_VERSION__) && (__STDC_VERSION__ > 201112L) && !defined(__STDC_NO_THREADS__) +#include +static mtx_t __Pyx_ModuleStateLookup_mutex; +static once_flag __Pyx_ModuleStateLookup_mutex_once_flag = ONCE_FLAG_INIT; +static void __Pyx_ModuleStateLookup_initialize_mutex(void) { + mtx_init(&__Pyx_ModuleStateLookup_mutex, mtx_plain); +} +#define __Pyx_ModuleStateLookup_Lock()\ + call_once(&__Pyx_ModuleStateLookup_mutex_once_flag, __Pyx_ModuleStateLookup_initialize_mutex);\ + mtx_lock(&__Pyx_ModuleStateLookup_mutex) +#define __Pyx_ModuleStateLookup_Unlock() mtx_unlock(&__Pyx_ModuleStateLookup_mutex) +#elif defined(HAVE_PTHREAD_H) +#include +static pthread_mutex_t __Pyx_ModuleStateLookup_mutex = PTHREAD_MUTEX_INITIALIZER; +#define __Pyx_ModuleStateLookup_Lock() pthread_mutex_lock(&__Pyx_ModuleStateLookup_mutex) +#define __Pyx_ModuleStateLookup_Unlock() pthread_mutex_unlock(&__Pyx_ModuleStateLookup_mutex) +#elif defined(_WIN32) +#include // synchapi.h on its own doesn't work +static SRWLOCK __Pyx_ModuleStateLookup_mutex = SRWLOCK_INIT; +#define __Pyx_ModuleStateLookup_Lock() AcquireSRWLockExclusive(&__Pyx_ModuleStateLookup_mutex) +#define __Pyx_ModuleStateLookup_Unlock() ReleaseSRWLockExclusive(&__Pyx_ModuleStateLookup_mutex) +#else +#error "No suitable lock available for CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE.\ + Requires C standard >= C11, or C++ standard >= C++11,\ + or pthreads, or the Windows 32 API, or Python >= 3.13." +#endif +typedef struct { + int64_t id; + PyObject *module; +} __Pyx_InterpreterIdAndModule; +typedef struct { + char interpreter_id_as_index; + Py_ssize_t count; + Py_ssize_t allocated; + __Pyx_InterpreterIdAndModule table[1]; +} __Pyx_ModuleStateLookupData; +#define __PYX_MODULE_STATE_LOOKUP_SMALL_SIZE 32 +#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE +static __pyx_atomic_int_type __Pyx_ModuleStateLookup_read_counter = 0; +#endif +#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE +static __pyx_atomic_ptr_type __Pyx_ModuleStateLookup_data = 0; +#else +static __Pyx_ModuleStateLookupData* __Pyx_ModuleStateLookup_data = NULL; +#endif +static __Pyx_InterpreterIdAndModule* __Pyx_State_FindModuleStateLookupTableLowerBound( + __Pyx_InterpreterIdAndModule* table, + Py_ssize_t count, + int64_t interpreterId) { + __Pyx_InterpreterIdAndModule* begin = table; + __Pyx_InterpreterIdAndModule* end = begin + count; + if (begin->id == interpreterId) { + return begin; + } + while ((end - begin) > __PYX_MODULE_STATE_LOOKUP_SMALL_SIZE) { + __Pyx_InterpreterIdAndModule* halfway = begin + (end - begin)/2; + if (halfway->id == interpreterId) { + return halfway; + } + if (halfway->id < interpreterId) { + begin = halfway; + } else { + end = halfway; + } + } + for (; begin < end; ++begin) { + if (begin->id >= interpreterId) return begin; + } + return begin; +} +static PyObject *__Pyx_State_FindModule(CYTHON_UNUSED void* dummy) { + int64_t interpreter_id = PyInterpreterState_GetID(__Pyx_PyInterpreterState_Get()); + if (interpreter_id == -1) return NULL; +#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE + __Pyx_ModuleStateLookupData* data = (__Pyx_ModuleStateLookupData*)__pyx_atomic_pointer_load_relaxed(&__Pyx_ModuleStateLookup_data); + { + __pyx_atomic_incr_acq_rel(&__Pyx_ModuleStateLookup_read_counter); + if (likely(data)) { + __Pyx_ModuleStateLookupData* new_data = (__Pyx_ModuleStateLookupData*)__pyx_atomic_pointer_load_acquire(&__Pyx_ModuleStateLookup_data); + if (likely(data == new_data)) { + goto read_finished; + } + } + __pyx_atomic_decr_acq_rel(&__Pyx_ModuleStateLookup_read_counter); + __Pyx_ModuleStateLookup_Lock(); + __pyx_atomic_incr_relaxed(&__Pyx_ModuleStateLookup_read_counter); + data = (__Pyx_ModuleStateLookupData*)__pyx_atomic_pointer_load_relaxed(&__Pyx_ModuleStateLookup_data); + __Pyx_ModuleStateLookup_Unlock(); + } + read_finished:; +#else + __Pyx_ModuleStateLookupData* data = __Pyx_ModuleStateLookup_data; +#endif + __Pyx_InterpreterIdAndModule* found = NULL; + if (unlikely(!data)) goto end; + if (data->interpreter_id_as_index) { + if (interpreter_id < data->count) { + found = data->table+interpreter_id; + } + } else { + found = __Pyx_State_FindModuleStateLookupTableLowerBound( + data->table, data->count, interpreter_id); + } + end: + { + PyObject *result=NULL; + if (found && found->id == interpreter_id) { + result = found->module; + } +#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE + __pyx_atomic_decr_acq_rel(&__Pyx_ModuleStateLookup_read_counter); +#endif + return result; + } +} +#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE +static void __Pyx_ModuleStateLookup_wait_until_no_readers(void) { + while (__pyx_atomic_load(&__Pyx_ModuleStateLookup_read_counter) != 0); +} +#else +#define __Pyx_ModuleStateLookup_wait_until_no_readers() +#endif +static int __Pyx_State_AddModuleInterpIdAsIndex(__Pyx_ModuleStateLookupData **old_data, PyObject* module, int64_t interpreter_id) { + Py_ssize_t to_allocate = (*old_data)->allocated; + while (to_allocate <= interpreter_id) { + if (to_allocate == 0) to_allocate = 1; + else to_allocate *= 2; + } + __Pyx_ModuleStateLookupData *new_data = *old_data; + if (to_allocate != (*old_data)->allocated) { + new_data = (__Pyx_ModuleStateLookupData *)realloc( + *old_data, + sizeof(__Pyx_ModuleStateLookupData)+(to_allocate-1)*sizeof(__Pyx_InterpreterIdAndModule)); + if (!new_data) { + PyErr_NoMemory(); + return -1; + } + for (Py_ssize_t i = new_data->allocated; i < to_allocate; ++i) { + new_data->table[i].id = i; + new_data->table[i].module = NULL; + } + new_data->allocated = to_allocate; + } + new_data->table[interpreter_id].module = module; + if (new_data->count < interpreter_id+1) { + new_data->count = interpreter_id+1; + } + *old_data = new_data; + return 0; +} +static void __Pyx_State_ConvertFromInterpIdAsIndex(__Pyx_ModuleStateLookupData *data) { + __Pyx_InterpreterIdAndModule *read = data->table; + __Pyx_InterpreterIdAndModule *write = data->table; + __Pyx_InterpreterIdAndModule *end = read + data->count; + for (; readmodule) { + write->id = read->id; + write->module = read->module; + ++write; + } + } + data->count = write - data->table; + for (; writeid = 0; + write->module = NULL; + } + data->interpreter_id_as_index = 0; +} +static int __Pyx_State_AddModule(PyObject* module, CYTHON_UNUSED void* dummy) { + int64_t interpreter_id = PyInterpreterState_GetID(__Pyx_PyInterpreterState_Get()); + if (interpreter_id == -1) return -1; + int result = 0; + __Pyx_ModuleStateLookup_Lock(); +#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE + __Pyx_ModuleStateLookupData *old_data = (__Pyx_ModuleStateLookupData *) + __pyx_atomic_pointer_exchange(&__Pyx_ModuleStateLookup_data, 0); +#else + __Pyx_ModuleStateLookupData *old_data = __Pyx_ModuleStateLookup_data; +#endif + __Pyx_ModuleStateLookupData *new_data = old_data; + if (!new_data) { + new_data = (__Pyx_ModuleStateLookupData *)calloc(1, sizeof(__Pyx_ModuleStateLookupData)); + if (!new_data) { + result = -1; + PyErr_NoMemory(); + goto end; + } + new_data->allocated = 1; + new_data->interpreter_id_as_index = 1; + } + __Pyx_ModuleStateLookup_wait_until_no_readers(); + if (new_data->interpreter_id_as_index) { + if (interpreter_id < __PYX_MODULE_STATE_LOOKUP_SMALL_SIZE) { + result = __Pyx_State_AddModuleInterpIdAsIndex(&new_data, module, interpreter_id); + goto end; + } + __Pyx_State_ConvertFromInterpIdAsIndex(new_data); + } + { + Py_ssize_t insert_at = 0; + { + __Pyx_InterpreterIdAndModule* lower_bound = __Pyx_State_FindModuleStateLookupTableLowerBound( + new_data->table, new_data->count, interpreter_id); + assert(lower_bound); + insert_at = lower_bound - new_data->table; + if (unlikely(insert_at < new_data->count && lower_bound->id == interpreter_id)) { + lower_bound->module = module; + goto end; // already in table, nothing more to do + } + } + if (new_data->count+1 >= new_data->allocated) { + Py_ssize_t to_allocate = (new_data->count+1)*2; + new_data = + (__Pyx_ModuleStateLookupData*)realloc( + new_data, + sizeof(__Pyx_ModuleStateLookupData) + + (to_allocate-1)*sizeof(__Pyx_InterpreterIdAndModule)); + if (!new_data) { + result = -1; + new_data = old_data; + PyErr_NoMemory(); + goto end; + } + new_data->allocated = to_allocate; + } + ++new_data->count; + int64_t last_id = interpreter_id; + PyObject *last_module = module; + for (Py_ssize_t i=insert_at; icount; ++i) { + int64_t current_id = new_data->table[i].id; + new_data->table[i].id = last_id; + last_id = current_id; + PyObject *current_module = new_data->table[i].module; + new_data->table[i].module = last_module; + last_module = current_module; + } + } + end: +#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE + __pyx_atomic_pointer_exchange(&__Pyx_ModuleStateLookup_data, new_data); +#else + __Pyx_ModuleStateLookup_data = new_data; +#endif + __Pyx_ModuleStateLookup_Unlock(); + return result; +} +static int __Pyx_State_RemoveModule(CYTHON_UNUSED void* dummy) { + int64_t interpreter_id = PyInterpreterState_GetID(__Pyx_PyInterpreterState_Get()); + if (interpreter_id == -1) return -1; + __Pyx_ModuleStateLookup_Lock(); +#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE + __Pyx_ModuleStateLookupData *data = (__Pyx_ModuleStateLookupData *) + __pyx_atomic_pointer_exchange(&__Pyx_ModuleStateLookup_data, 0); +#else + __Pyx_ModuleStateLookupData *data = __Pyx_ModuleStateLookup_data; +#endif + if (data->interpreter_id_as_index) { + if (interpreter_id < data->count) { + data->table[interpreter_id].module = NULL; + } + goto done; + } + { + __Pyx_ModuleStateLookup_wait_until_no_readers(); + __Pyx_InterpreterIdAndModule* lower_bound = __Pyx_State_FindModuleStateLookupTableLowerBound( + data->table, data->count, interpreter_id); + if (!lower_bound) goto done; + if (lower_bound->id != interpreter_id) goto done; + __Pyx_InterpreterIdAndModule *end = data->table+data->count; + for (;lower_boundid = (lower_bound+1)->id; + lower_bound->module = (lower_bound+1)->module; + } + } + --data->count; + if (data->count == 0) { + free(data); + data = NULL; + } + done: +#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE + __pyx_atomic_pointer_exchange(&__Pyx_ModuleStateLookup_data, data); +#else + __Pyx_ModuleStateLookup_data = data; +#endif + __Pyx_ModuleStateLookup_Unlock(); + return 0; +} +#endif + +/* #### Code section: utility_code_pragmas_end ### */ +#ifdef _MSC_VER +#pragma warning( pop ) +#endif + + + +/* #### Code section: end ### */ +#endif /* Py_PYTHON_H */ diff --git a/dist/HandoverSystem/_internal/selectolax/lexbor.cp311-win_amd64.pyd b/dist/HandoverSystem/_internal/selectolax/lexbor.cp311-win_amd64.pyd new file mode 100644 index 0000000..d1b9379 Binary files /dev/null and b/dist/HandoverSystem/_internal/selectolax/lexbor.cp311-win_amd64.pyd differ diff --git a/dist/HandoverSystem/_internal/selectolax/lexbor.pxd b/dist/HandoverSystem/_internal/selectolax/lexbor.pxd new file mode 100644 index 0000000..361eb53 --- /dev/null +++ b/dist/HandoverSystem/_internal/selectolax/lexbor.pxd @@ -0,0 +1,606 @@ +from libc.stdint cimport uint8_t, uint32_t, uintptr_t + + +cdef extern from "lexbor/core/core.h" nogil: + ctypedef uint32_t lxb_codepoint_t + ctypedef unsigned char lxb_char_t + ctypedef unsigned int lxb_status_t + ctypedef enum lexbor_status_t: + LXB_STATUS_OK = 0x0000 + LXB_STATUS_ERROR = 0x0001 + LXB_STATUS_ERROR_MEMORY_ALLOCATION + LXB_STATUS_ERROR_OBJECT_IS_NULL + LXB_STATUS_ERROR_SMALL_BUFFER + LXB_STATUS_ERROR_INCOMPLETE_OBJECT + LXB_STATUS_ERROR_NO_FREE_SLOT + LXB_STATUS_ERROR_TOO_SMALL_SIZE + LXB_STATUS_ERROR_NOT_EXISTS + LXB_STATUS_ERROR_WRONG_ARGS + LXB_STATUS_ERROR_WRONG_STAGE + LXB_STATUS_ERROR_UNEXPECTED_RESULT + LXB_STATUS_ERROR_UNEXPECTED_DATA + LXB_STATUS_ERROR_OVERFLOW + LXB_STATUS_CONTINUE + LXB_STATUS_SMALL_BUFFER + LXB_STATUS_ABORTED + LXB_STATUS_STOPPED + LXB_STATUS_NEXT + LXB_STATUS_STOP + + lexbor_str_t* lexbor_str_destroy(lexbor_str_t *str, lexbor_mraw_t *mraw, bint destroy_obj) + + lexbor_str_t* lexbor_str_create() + lxb_char_t * lexbor_str_data_noi(lexbor_str_t *str) + +cdef extern from "lexbor/html/html.h" nogil: + ctypedef unsigned int lxb_html_document_opt_t + + ctypedef struct lxb_html_tokenizer_t + ctypedef struct lxb_html_form_element_t + ctypedef struct lxb_html_head_element_t + ctypedef struct lxb_html_body_element_t + ctypedef struct lxb_dom_element_t + ctypedef struct lexbor_mraw_t + ctypedef struct lexbor_hash_t + ctypedef struct lxb_dom_document_type_t + ctypedef void lxb_dom_interface_t + ctypedef uintptr_t lxb_tag_id_t + ctypedef uintptr_t lxb_ns_id_t + ctypedef lxb_dom_interface_t *(*lxb_dom_interface_destroy_f)(lxb_dom_interface_t *intrfc) + ctypedef lxb_dom_interface_t *(*lxb_dom_interface_create_f)(lxb_dom_document_t *document, lxb_tag_id_t tag_id, + lxb_ns_id_t ns) + + ctypedef struct lxb_dom_event_target_t: + void *events + + ctypedef struct lexbor_str_t: + lxb_char_t *data + size_t length + + ctypedef struct lxb_dom_node_t: + lxb_dom_event_target_t event_target + + uintptr_t local_name + uintptr_t prefix + uintptr_t ns + + lxb_dom_document_t *owner_document + + lxb_dom_node_t *next + lxb_dom_node_t *prev + lxb_dom_node_t *parent + lxb_dom_node_t *first_child + lxb_dom_node_t *last_child + void *user + + lxb_dom_node_type_t type + + ctypedef struct lxb_dom_document_t: + lxb_dom_node_t node + + lxb_dom_document_cmode_t compat_mode + lxb_dom_document_dtype_t type + + lxb_dom_document_type_t *doctype + lxb_dom_element_t *element + + lxb_dom_interface_create_f create_interface + lxb_dom_interface_destroy_f destroy_interface + + lexbor_mraw_t *mraw + lexbor_mraw_t *text + lexbor_hash_t *tags + lexbor_hash_t *attrs + lexbor_hash_t *prefix + lexbor_hash_t *ns + void *parser + void *user + + bint tags_inherited + bint ns_inherited + + bint scripting + + ctypedef struct lxb_html_document_t: + lxb_dom_document_t dom_document + + void *iframe_srcdoc + + lxb_html_head_element_t *head + lxb_html_body_element_t *body + lxb_html_document_ready_state_t ready_state + lxb_html_document_opt_t opt + + ctypedef enum lxb_html_document_ready_state_t: + LXB_HTML_DOCUMENT_READY_STATE_UNDEF = 0x00 + LXB_HTML_DOCUMENT_READY_STATE_LOADING = 0x01 + LXB_HTML_DOCUMENT_READY_STATE_INTERACTIVE = 0x02 + LXB_HTML_DOCUMENT_READY_STATE_COMPLETE = 0x03 + + ctypedef enum lxb_html_parser_state_t: + LXB_HTML_PARSER_STATE_BEGIN = 0x00 + LXB_HTML_PARSER_STATE_PROCESS = 0x01 + LXB_HTML_PARSER_STATE_END = 0x02 + LXB_HTML_PARSER_STATE_FRAGMENT_PROCESS = 0x03 + LXB_HTML_PARSER_STATE_ERROR = 0x04 + + ctypedef enum lxb_dom_node_type_t: + LXB_DOM_NODE_TYPE_ELEMENT = 0x01 + LXB_DOM_NODE_TYPE_ATTRIBUTE = 0x02 + LXB_DOM_NODE_TYPE_TEXT = 0x03 + LXB_DOM_NODE_TYPE_CDATA_SECTION = 0x04 + LXB_DOM_NODE_TYPE_ENTITY_REFERENCE = 0x05 + LXB_DOM_NODE_TYPE_ENTITY = 0x06 + LXB_DOM_NODE_TYPE_PROCESSING_INSTRUCTION = 0x07 + LXB_DOM_NODE_TYPE_COMMENT = 0x08 + LXB_DOM_NODE_TYPE_DOCUMENT = 0x09 + LXB_DOM_NODE_TYPE_DOCUMENT_TYPE = 0x0A + LXB_DOM_NODE_TYPE_DOCUMENT_FRAGMENT = 0x0B + LXB_DOM_NODE_TYPE_NOTATION = 0x0C + LXB_DOM_NODE_TYPE_LAST_ENTRY = 0x0D + + ctypedef enum lxb_dom_document_cmode_t: + LXB_DOM_DOCUMENT_CMODE_NO_QUIRKS = 0x00 + LXB_DOM_DOCUMENT_CMODE_QUIRKS = 0x01 + LXB_DOM_DOCUMENT_CMODE_LIMITED_QUIRKS = 0x02 + + ctypedef enum lxb_dom_document_dtype_t: + LXB_DOM_DOCUMENT_DTYPE_UNDEF = 0x00, + LXB_DOM_DOCUMENT_DTYPE_HTML = 0x01, + LXB_DOM_DOCUMENT_DTYPE_XML = 0x02 + + ctypedef enum lxb_html_serialize_opt_t: + LXB_HTML_SERIALIZE_OPT_UNDEF = 0x00 + LXB_HTML_SERIALIZE_OPT_SKIP_WS_NODES = 0x01 + LXB_HTML_SERIALIZE_OPT_SKIP_COMMENT = 0x02 + LXB_HTML_SERIALIZE_OPT_RAW = 0x04 + LXB_HTML_SERIALIZE_OPT_WITHOUT_CLOSING = 0x08 + LXB_HTML_SERIALIZE_OPT_TAG_WITH_NS = 0x10 + LXB_HTML_SERIALIZE_OPT_WITHOUT_TEXT_INDENT = 0x20 + LXB_HTML_SERIALIZE_OPT_FULL_DOCTYPE = 0x40 + + ctypedef struct lexbor_array_t: + void **list + size_t size + size_t length + + ctypedef struct lexbor_array_obj_t: + uint8_t *list + size_t size + size_t length + size_t struct_size + + ctypedef struct lxb_html_tree_pending_table_t + ctypedef bint lxb_html_tree_insertion_mode_f + ctypedef lxb_status_t lxb_html_tree_append_attr_f + + ctypedef struct lxb_html_tree_t: + + lxb_html_tokenizer_t *tkz_ref + + lxb_html_document_t *document + lxb_dom_node_t *fragment + + lxb_html_form_element_t *form + + lexbor_array_t *open_elements + lexbor_array_t *active_formatting + lexbor_array_obj_t *template_insertion_modes + + lxb_html_tree_pending_table_t *pending_table + + lexbor_array_obj_t *parse_errors + + bint foster_parenting + bint frameset_ok + bint scripting + + lxb_html_tree_insertion_mode_f mode + lxb_html_tree_insertion_mode_f original_mode + lxb_html_tree_append_attr_f before_append_attr + + lxb_status_t status + + size_t ref_count + + ctypedef struct lxb_html_parser_t: + lxb_html_tokenizer_t *tkz + lxb_html_tree_t *tree + lxb_html_tree_t *original_tree + + lxb_dom_node_t *root + lxb_dom_node_t *form + + lxb_html_parser_state_t state + lxb_status_t status + + size_t ref_count + + ctypedef struct lxb_html_element_t + + # Functions + lxb_html_document_t * lxb_html_document_create() + lxb_html_element_t * lxb_html_document_create_element(lxb_html_document_t *document, + const lxb_char_t *local_name, size_t lname_len, + void *reserved_for_opt) + lxb_status_t lxb_html_document_parse(lxb_html_document_t *document, const lxb_char_t *html, size_t size) + lxb_dom_node_t * lxb_html_document_parse_fragment(lxb_html_document_t *document, + lxb_dom_element_t *element, + const lxb_char_t *html, + size_t size) + lxb_html_body_element_t * lxb_html_document_body_element_noi(lxb_html_document_t *document) + lxb_html_head_element_t * lxb_html_document_head_element_noi(lxb_html_document_t *document) + lxb_dom_element_t * lxb_dom_document_element(lxb_dom_document_t *document) + + lxb_status_t lxb_html_serialize_tree_str(lxb_dom_node_t *node, lexbor_str_t *str) + lxb_status_t lxb_html_serialize_deep_str(lxb_dom_node_t *node, lexbor_str_t *str) + lxb_html_element_t* lxb_html_element_inner_html_set(lxb_html_element_t *element, + const lxb_char_t *html, size_t size) + +cdef class LexborNode: + cdef: + lxb_dom_node_t *node + public LexborHTMLParser parser + cdef bint _is_fragment_root + + @staticmethod + cdef LexborNode new(lxb_dom_node_t *node, LexborHTMLParser parser) + cdef void set_as_fragment_root(self) + cdef inline LexborNode _get_node(self) + + +cdef bint is_empty_text_node(lxb_dom_node_t *node) +cdef inline bint _is_whitespace_only(const lxb_char_t *buffer, size_t buffer_length) nogil + + +cdef class LexborCSSSelector: + cdef lxb_css_parser_t* parser + cdef lxb_selectors_t * selectors + cdef lxb_css_selectors_t * css_selectors + cdef public list results + cdef public LexborNode current_node + cdef int _create_css_parser(self) except -1 + cpdef list find(self, str query, LexborNode node) + cpdef list find_first(self, str query, LexborNode node) + cpdef list _find(self, str query, LexborNode node, bint only_first) + cpdef int any_matches(self, str query, LexborNode node) except -1 + +cdef class LexborHTMLParser: + cdef lxb_html_document_t *document + cdef lxb_html_document_t *_fragment_document + cdef bint _is_fragment + cdef public bytes raw_html + cdef LexborCSSSelector _selector + cdef inline void _new_html_document(self) + cdef inline lxb_status_t _parse_html_document(self, char *html, size_t html_len) nogil + cdef inline lxb_status_t _parse_html_fragment(self, char *html, size_t html_len) nogil + cdef int _parse_html(self, char *html, size_t html_len) except -1 + cdef object cached_script_texts + cdef object cached_script_srcs + + @staticmethod + cdef LexborHTMLParser from_document(lxb_html_document_t * document, bytes raw_html) + cdef inline lxb_html_document_t* main_document(self) nogil + +cdef extern from "lexbor/dom/dom.h" nogil: + ctypedef enum lexbor_action_t: + LEXBOR_ACTION_OK = 0x00 + LEXBOR_ACTION_STOP = 0x01 + LEXBOR_ACTION_NEXT = 0x02 + + ctypedef lexbor_action_t (*lxb_dom_node_simple_walker_f)(lxb_dom_node_t *node, void *ctx) + + ctypedef struct lxb_dom_character_data_t: + lxb_dom_node_t node + lexbor_str_t data + + ctypedef struct lxb_dom_text_t: + lxb_dom_character_data_t char_data + + ctypedef uintptr_t lxb_dom_attr_id_t + ctypedef struct lxb_dom_collection_t: + lexbor_array_t array + lxb_dom_document_t *document + + ctypedef struct lxb_dom_attr_t: + lxb_dom_node_t node + + lxb_dom_attr_id_t upper_name + lxb_dom_attr_id_t qualified_name + + lexbor_str_t *value + + lxb_dom_element_t *owner + + lxb_dom_attr_t *next + lxb_dom_attr_t *prev + + lxb_dom_collection_t * lxb_dom_collection_make(lxb_dom_document_t *document, size_t start_list_size) + lxb_char_t * lxb_dom_node_text_content(lxb_dom_node_t *node, size_t *len) + lxb_status_t lxb_dom_node_text_content_set(lxb_dom_node_t *node, const lxb_char_t *content, size_t len) + bint lxb_dom_node_is_empty(lxb_dom_node_t *node) + void lxb_dom_node_remove(lxb_dom_node_t *node) + void * lxb_dom_document_destroy_text_noi(lxb_dom_document_t *document, lxb_char_t *text) + lxb_dom_node_t * lxb_dom_document_root(lxb_dom_document_t *document) + lxb_dom_element_t * lxb_dom_interface_element(lxb_dom_node_t *node) + lxb_char_t * lxb_dom_element_qualified_name(lxb_dom_element_t *element, size_t *len) + lxb_dom_node_t * lxb_dom_node_destroy(lxb_dom_node_t *node) + lxb_dom_node_t * lxb_dom_node_destroy_deep(lxb_dom_node_t *root) + lxb_dom_attr_t * lxb_dom_element_first_attribute_noi(lxb_dom_element_t *element) + + const lxb_char_t * lxb_dom_attr_local_name_noi(lxb_dom_attr_t *attr, size_t *len) + const lxb_char_t * lxb_dom_attr_value_noi(lxb_dom_attr_t *attr, size_t *len) + + lxb_dom_attr_t * lxb_dom_element_set_attribute(lxb_dom_element_t *element, + const lxb_char_t *qualified_name, size_t qn_len, + const lxb_char_t *value, size_t value_len) + lxb_status_t lxb_dom_element_remove_attribute(lxb_dom_element_t *element, + const lxb_char_t *qualified_name, size_t qn_len) + lxb_dom_attr_t * lxb_dom_element_attr_by_name(lxb_dom_element_t *element, + const lxb_char_t *qualified_name, size_t length) + lxb_tag_id_t lxb_dom_node_tag_id_noi(lxb_dom_node_t *node) + lxb_dom_node_t * lxb_dom_document_import_node(lxb_dom_document_t *doc, lxb_dom_node_t *node, bint deep) + void lxb_dom_node_insert_after(lxb_dom_node_t *to, lxb_dom_node_t *node) + lxb_status_t lxb_dom_node_replace_all(lxb_dom_node_t *parent, lxb_dom_node_t *node) + void lxb_dom_node_insert_child(lxb_dom_node_t *to, lxb_dom_node_t *node) + void lxb_dom_node_insert_before(lxb_dom_node_t *to, lxb_dom_node_t *node) + void lxb_dom_node_insert_after(lxb_dom_node_t *to, lxb_dom_node_t *node) + lxb_dom_text_t * lxb_dom_document_create_text_node(lxb_dom_document_t *document, const lxb_char_t *data, size_t len) + void lxb_dom_node_simple_walk(lxb_dom_node_t *root, lxb_dom_node_simple_walker_f walker_cb, void *ctx) + lxb_dom_node_t* lxb_dom_node_clone(lxb_dom_node_t *node, bint deep) + + +cdef extern from "lexbor/dom/interfaces/element.h" nogil: + lxb_status_t lxb_dom_elements_by_tag_name(lxb_dom_element_t *root, lxb_dom_collection_t *collection, + const lxb_char_t *qualified_name, size_t len) + + +cdef extern from "lexbor/dom/interfaces/document.h" nogil: + lxb_html_document_t * lxb_html_document_destroy(lxb_html_document_t *document) + + +cdef extern from "lexbor/dom/collection.h" nogil: + size_t lxb_dom_collection_length_noi(lxb_dom_collection_t *col) + + lxb_dom_element_t * lxb_dom_collection_element_noi(lxb_dom_collection_t *col, size_t idx) + lxb_dom_collection_t * lxb_dom_collection_destroy(lxb_dom_collection_t *col, bint self_destroy) + + +cdef extern from "lexbor/css/css.h" nogil: + ctypedef struct lxb_css_parser_t: + lxb_css_memory_t* memory + ctypedef struct lxb_css_syntax_tokenizer_t + ctypedef struct lxb_css_memory_t + + lxb_css_parser_t * lxb_css_parser_create() + lxb_status_t lxb_css_parser_init(lxb_css_parser_t *parser, lxb_css_syntax_tokenizer_t *tkz) + lxb_css_parser_t * lxb_css_parser_destroy(lxb_css_parser_t *parser, bint self_destroy) + lxb_css_memory_t * lxb_css_memory_destroy(lxb_css_memory_t *memory, bint self_destroy) + void lxb_css_selector_list_destroy_memory(lxb_css_selector_list_t *list) + + +cdef extern from "lexbor/tag/tag.h" nogil: + ctypedef enum lxb_tag_id_enum_t: + LXB_TAG__UNDEF = 0x0000 + LXB_TAG__END_OF_FILE = 0x0001 + LXB_TAG__TEXT = 0x0002 + LXB_TAG__DOCUMENT = 0x0003 + LXB_TAG__EM_COMMENT = 0x0004 + LXB_TAG__EM_DOCTYPE = 0x0005 + LXB_TAG_A = 0x0006 + LXB_TAG_ABBR = 0x0007 + LXB_TAG_ACRONYM = 0x0008 + LXB_TAG_ADDRESS = 0x0009 + LXB_TAG_ALTGLYPH = 0x000a + LXB_TAG_ALTGLYPHDEF = 0x000b + LXB_TAG_ALTGLYPHITEM = 0x000c + LXB_TAG_ANIMATECOLOR = 0x000d + LXB_TAG_ANIMATEMOTION = 0x000e + LXB_TAG_ANIMATETRANSFORM = 0x000f + LXB_TAG_ANNOTATION_XML = 0x0010 + LXB_TAG_APPLET = 0x0011 + LXB_TAG_AREA = 0x0012 + LXB_TAG_ARTICLE = 0x0013 + LXB_TAG_ASIDE = 0x0014 + LXB_TAG_AUDIO = 0x0015 + LXB_TAG_B = 0x0016 + LXB_TAG_BASE = 0x0017 + LXB_TAG_BASEFONT = 0x0018 + LXB_TAG_BDI = 0x0019 + LXB_TAG_BDO = 0x001a + LXB_TAG_BGSOUND = 0x001b + LXB_TAG_BIG = 0x001c + LXB_TAG_BLINK = 0x001d + LXB_TAG_BLOCKQUOTE = 0x001e + LXB_TAG_BODY = 0x001f + LXB_TAG_BR = 0x0020 + LXB_TAG_BUTTON = 0x0021 + LXB_TAG_CANVAS = 0x0022 + LXB_TAG_CAPTION = 0x0023 + LXB_TAG_CENTER = 0x0024 + LXB_TAG_CITE = 0x0025 + LXB_TAG_CLIPPATH = 0x0026 + LXB_TAG_CODE = 0x0027 + LXB_TAG_COL = 0x0028 + LXB_TAG_COLGROUP = 0x0029 + LXB_TAG_DATA = 0x002a + LXB_TAG_DATALIST = 0x002b + LXB_TAG_DD = 0x002c + LXB_TAG_DEL = 0x002d + LXB_TAG_DESC = 0x002e + LXB_TAG_DETAILS = 0x002f + LXB_TAG_DFN = 0x0030 + LXB_TAG_DIALOG = 0x0031 + LXB_TAG_DIR = 0x0032 + LXB_TAG_DIV = 0x0033 + LXB_TAG_DL = 0x0034 + LXB_TAG_DT = 0x0035 + LXB_TAG_EM = 0x0036 + LXB_TAG_EMBED = 0x0037 + LXB_TAG_FEBLEND = 0x0038 + LXB_TAG_FECOLORMATRIX = 0x0039 + LXB_TAG_FECOMPONENTTRANSFER = 0x003a + LXB_TAG_FECOMPOSITE = 0x003b + LXB_TAG_FECONVOLVEMATRIX = 0x003c + LXB_TAG_FEDIFFUSELIGHTING = 0x003d + LXB_TAG_FEDISPLACEMENTMAP = 0x003e + LXB_TAG_FEDISTANTLIGHT = 0x003f + LXB_TAG_FEDROPSHADOW = 0x0040 + LXB_TAG_FEFLOOD = 0x0041 + LXB_TAG_FEFUNCA = 0x0042 + LXB_TAG_FEFUNCB = 0x0043 + LXB_TAG_FEFUNCG = 0x0044 + LXB_TAG_FEFUNCR = 0x0045 + LXB_TAG_FEGAUSSIANBLUR = 0x0046 + LXB_TAG_FEIMAGE = 0x0047 + LXB_TAG_FEMERGE = 0x0048 + LXB_TAG_FEMERGENODE = 0x0049 + LXB_TAG_FEMORPHOLOGY = 0x004a + LXB_TAG_FEOFFSET = 0x004b + LXB_TAG_FEPOINTLIGHT = 0x004c + LXB_TAG_FESPECULARLIGHTING = 0x004d + LXB_TAG_FESPOTLIGHT = 0x004e + LXB_TAG_FETILE = 0x004f + LXB_TAG_FETURBULENCE = 0x0050 + LXB_TAG_FIELDSET = 0x0051 + LXB_TAG_FIGCAPTION = 0x0052 + LXB_TAG_FIGURE = 0x0053 + LXB_TAG_FONT = 0x0054 + LXB_TAG_FOOTER = 0x0055 + LXB_TAG_FOREIGNOBJECT = 0x0056 + LXB_TAG_FORM = 0x0057 + LXB_TAG_FRAME = 0x0058 + LXB_TAG_FRAMESET = 0x0059 + LXB_TAG_GLYPHREF = 0x005a + LXB_TAG_H1 = 0x005b + LXB_TAG_H2 = 0x005c + LXB_TAG_H3 = 0x005d + LXB_TAG_H4 = 0x005e + LXB_TAG_H5 = 0x005f + LXB_TAG_H6 = 0x0060 + LXB_TAG_HEAD = 0x0061 + LXB_TAG_HEADER = 0x0062 + LXB_TAG_HGROUP = 0x0063 + LXB_TAG_HR = 0x0064 + LXB_TAG_HTML = 0x0065 + LXB_TAG_I = 0x0066 + LXB_TAG_IFRAME = 0x0067 + LXB_TAG_IMAGE = 0x0068 + LXB_TAG_IMG = 0x0069 + LXB_TAG_INPUT = 0x006a + LXB_TAG_INS = 0x006b + LXB_TAG_ISINDEX = 0x006c + LXB_TAG_KBD = 0x006d + LXB_TAG_KEYGEN = 0x006e + LXB_TAG_LABEL = 0x006f + LXB_TAG_LEGEND = 0x0070 + LXB_TAG_LI = 0x0071 + LXB_TAG_LINEARGRADIENT = 0x0072 + LXB_TAG_LINK = 0x0073 + LXB_TAG_LISTING = 0x0074 + LXB_TAG_MAIN = 0x0075 + LXB_TAG_MALIGNMARK = 0x0076 + LXB_TAG_MAP = 0x0077 + LXB_TAG_MARK = 0x0078 + LXB_TAG_MARQUEE = 0x0079 + LXB_TAG_MATH = 0x007a + LXB_TAG_MENU = 0x007b + LXB_TAG_META = 0x007c + LXB_TAG_METER = 0x007d + LXB_TAG_MFENCED = 0x007e + LXB_TAG_MGLYPH = 0x007f + LXB_TAG_MI = 0x0080 + LXB_TAG_MN = 0x0081 + LXB_TAG_MO = 0x0082 + LXB_TAG_MS = 0x0083 + LXB_TAG_MTEXT = 0x0084 + LXB_TAG_MULTICOL = 0x0085 + LXB_TAG_NAV = 0x0086 + LXB_TAG_NEXTID = 0x0087 + LXB_TAG_NOBR = 0x0088 + LXB_TAG_NOEMBED = 0x0089 + LXB_TAG_NOFRAMES = 0x008a + LXB_TAG_NOSCRIPT = 0x008b + LXB_TAG_OBJECT = 0x008c + LXB_TAG_OL = 0x008d + LXB_TAG_OPTGROUP = 0x008e + LXB_TAG_OPTION = 0x008f + LXB_TAG_OUTPUT = 0x0090 + LXB_TAG_P = 0x0091 + LXB_TAG_PARAM = 0x0092 + LXB_TAG_PATH = 0x0093 + LXB_TAG_PICTURE = 0x0094 + LXB_TAG_PLAINTEXT = 0x0095 + LXB_TAG_PRE = 0x0096 + LXB_TAG_PROGRESS = 0x0097 + LXB_TAG_Q = 0x0098 + LXB_TAG_RADIALGRADIENT = 0x0099 + LXB_TAG_RB = 0x009a + LXB_TAG_RP = 0x009b + LXB_TAG_RT = 0x009c + LXB_TAG_RTC = 0x009d + LXB_TAG_RUBY = 0x009e + LXB_TAG_S = 0x009f + LXB_TAG_SAMP = 0x00a0 + LXB_TAG_SCRIPT = 0x00a1 + LXB_TAG_SECTION = 0x00a2 + LXB_TAG_SELECT = 0x00a3 + LXB_TAG_SLOT = 0x00a4 + LXB_TAG_SMALL = 0x00a5 + LXB_TAG_SOURCE = 0x00a6 + LXB_TAG_SPACER = 0x00a7 + LXB_TAG_SPAN = 0x00a8 + LXB_TAG_STRIKE = 0x00a9 + LXB_TAG_STRONG = 0x00aa + LXB_TAG_STYLE = 0x00ab + LXB_TAG_SUB = 0x00ac + LXB_TAG_SUMMARY = 0x00ad + LXB_TAG_SUP = 0x00ae + LXB_TAG_SVG = 0x00af + LXB_TAG_TABLE = 0x00b0 + LXB_TAG_TBODY = 0x00b1 + LXB_TAG_TD = 0x00b2 + LXB_TAG_TEMPLATE = 0x00b3 + LXB_TAG_TEXTAREA = 0x00b4 + LXB_TAG_TEXTPATH = 0x00b5 + LXB_TAG_TFOOT = 0x00b6 + LXB_TAG_TH = 0x00b7 + LXB_TAG_THEAD = 0x00b8 + LXB_TAG_TIME = 0x00b9 + LXB_TAG_TITLE = 0x00ba + LXB_TAG_TR = 0x00bb + LXB_TAG_TRACK = 0x00bc + LXB_TAG_TT = 0x00bd + LXB_TAG_U = 0x00be + LXB_TAG_UL = 0x00bf + LXB_TAG_VAR = 0x00c0 + LXB_TAG_VIDEO = 0x00c1 + LXB_TAG_WBR = 0x00c2 + LXB_TAG_XMP = 0x00c3 + LXB_TAG__LAST_ENTRY = 0x00c4 + + +cdef extern from "lexbor/selectors/selectors.h" nogil: + ctypedef struct lxb_css_selectors_t + + ctypedef struct lxb_selectors_t + ctypedef struct lxb_css_selector_list_t + ctypedef struct lxb_css_selector_specificity_t + ctypedef lxb_status_t (*lxb_selectors_cb_f)(lxb_dom_node_t *node, lxb_css_selector_specificity_t *spec, void *ctx) + ctypedef enum lxb_selectors_opt_t: + LXB_SELECTORS_OPT_DEFAULT = 0x00 + LXB_SELECTORS_OPT_MATCH_ROOT = 1 << 1 + LXB_SELECTORS_OPT_MATCH_FIRST = 1 << 2 + + void lxb_selectors_opt_set(lxb_selectors_t *selectors, lxb_selectors_opt_t opt) + lxb_css_selectors_t * lxb_css_selectors_create() + lxb_status_t lxb_css_selectors_init(lxb_css_selectors_t *selectors) + void lxb_css_parser_selectors_set(lxb_css_parser_t *parser, lxb_css_selectors_t *selectors) + lxb_css_selector_list_t * lxb_css_selectors_parse(lxb_css_parser_t *parser, const lxb_char_t *data, size_t length) + lxb_css_selectors_t * lxb_css_selectors_destroy(lxb_css_selectors_t *selectors, bint self_destroy) + + lxb_selectors_t * lxb_selectors_create() + lxb_status_t lxb_selectors_init(lxb_selectors_t *selectors) + lxb_selectors_t * lxb_selectors_destroy(lxb_selectors_t *selectors, bint self_destroy) + lxb_status_t lxb_selectors_find(lxb_selectors_t *selectors, lxb_dom_node_t *root, + lxb_css_selector_list_t *list, lxb_selectors_cb_f cb, void *ctx) diff --git a/dist/HandoverSystem/_internal/selectolax/lexbor.pyi b/dist/HandoverSystem/_internal/selectolax/lexbor.pyi new file mode 100644 index 0000000..545098d --- /dev/null +++ b/dist/HandoverSystem/_internal/selectolax/lexbor.pyi @@ -0,0 +1,1309 @@ +from __future__ import annotations + +from typing import Any, Iterator, Literal, NoReturn, Optional, TypeVar, overload + +DefaultT = TypeVar("DefaultT") + +class LexborAttributes: + """A dict-like object that represents attributes.""" + + @staticmethod + def create(node: LexborAttributes) -> LexborAttributes: ... + def keys(self) -> Iterator[str]: ... + def items(self) -> Iterator[tuple[str, str | None]]: ... + def values(self) -> Iterator[str | None]: ... + def __iter__(self) -> Iterator[str]: ... + def __len__(self) -> int: ... + def __getitem__(self, key: str) -> str | None: ... + def __setitem__(self, key: str, value: Optional[str]) -> None: ... + def __delitem__(self, key: str) -> None: ... + def __contains__(self, key: str) -> bool: ... + def __repr__(self) -> str: ... + @overload + def get(self, key: str, default: DefaultT) -> DefaultT | str | None: ... + @overload + def get(self, key: str, default: None = ...) -> str | None: ... + @overload + def sget(self, key: str, default: str | DefaultT) -> str | DefaultT: ... + @overload + def sget(self, key: str, default: str = "") -> str: ... + +class LexborSelector: + """An advanced CSS selector that supports additional operations. + + Think of it as a toolkit that mimics some of the features of XPath. + + Please note, this is an experimental feature that can change in the future. + """ + + def __init__(self, node: LexborNode, query: str): ... + def css(self, query: str) -> NoReturn: ... + @property + def matches(self) -> list[LexborNode]: + """Returns all possible matches""" + ... + + @property + def any_matches(self) -> bool: + """Returns True if there are any matches""" + ... + + def text_contains( + self, text: str, deep: bool = True, separator: str = "", strip: bool = False + ) -> LexborSelector: + """Filter all current matches given text.""" + ... + + def any_text_contains( + self, text: str, deep: bool = True, separator: str = "", strip: bool = False + ) -> bool: + """Returns True if any node in the current search scope contains specified text""" + ... + + def attribute_longer_than( + self, attribute: str, length: int, start: str | None = None + ) -> LexborSelector: + """Filter all current matches by attribute length. + + Similar to string-length in XPath. + """ + ... + + def any_attribute_longer_than( + self, attribute: str, length: int, start: str | None = None + ) -> bool: + """Returns True any href attribute longer than a specified length. + + Similar to string-length in XPath. + """ + ... + + @property + def inner_html(self) -> str | None: + """Return HTML representation of the child nodes. + + Works similar to innerHTML in JavaScript. + Unlike the `.html` property, does not include the current node. + Can be used to set HTML as well. See the setter docstring. + + Returns + ------- + text : str or None + """ + ... + + @inner_html.setter + def inner_html(self, html: str): + """Set inner HTML to the specified HTML. + + Replaces existing data inside the node. + Works similar to innerHTML in JavaScript. + + Parameters + ---------- + html : str + + """ + ... + +class LexborCSSSelector: + def __init__(self): ... + def find(self, query: str, node: LexborNode) -> list[LexborNode]: ... + def any_matches(self, query: str, node: LexborNode) -> bool: ... + +class LexborNode: + """A class that represents HTML node (element).""" + + parser: LexborHTMLParser + + @property + def mem_id(self) -> int: ... + @property + def child(self) -> LexborNode | None: + """Alias for the `first_child` property. + + **Deprecated**. Please use `first_child` instead. + """ + ... + + @property + def first_child(self) -> LexborNode | None: + """Return the first child node.""" + ... + + @property + def parent(self) -> LexborNode | None: + """Return the parent node.""" + ... + + @property + def next(self) -> LexborNode | None: + """Return next node.""" + ... + + @property + def prev(self) -> LexborNode | None: + """Return previous node.""" + ... + + @property + def last_child(self) -> LexborNode | None: + """Return last child node.""" + ... + + @property + def html(self) -> str | None: + """Return HTML representation of the current node including all its child nodes. + + Returns + ------- + text : str + """ + ... + + def __hash__(self) -> int: ... + def text_lexbor(self) -> str: + """Returns the text of the node including text of all its child nodes. + + Uses builtin method from lexbor. + """ + ... + + def text( + self, + deep: bool = True, + separator: str = "", + strip: bool = False, + skip_empty: bool = False, + ) -> str: + """Return concatenated text from this node. + + Parameters + ---------- + deep : bool, optional + When ``True`` (default), include text from all descendant nodes; when + ``False``, only include direct children. + separator : str, optional + String inserted between successive text fragments. + strip : bool, optional + If ``True``, apply ``str.strip()`` to each fragment before joining to + remove surrounding whitespace. Defaults to ``False``. + skip_empty : bool, optional + Exclude text nodes whose content is only ASCII whitespace (space, + tab, newline, form feed or carriage return) when ``True``. + Defaults to ``False``. + + Returns + ------- + text : str + Combined textual content assembled according to the provided options. + """ + ... + + def css(self, query: str) -> list[LexborNode]: + """Evaluate CSS selector against current node and its child nodes. + + Matches pattern `query` against HTML tree. + `CSS selectors reference `_. + + Special selectors: + + - parser.css('p:lexbor-contains("awesome" i)') -- case-insensitive contains + - parser.css('p:lexbor-contains("awesome")') -- case-sensitive contains + + + Parameters + ---------- + query : str + CSS selector (e.g. "div > :nth-child(2n+1):not(:has(a))"). + + Returns + ------- + selector : list of `Node` objects + """ + ... + + @overload + def css_first( + self, query: str, default: Any = ..., strict: Literal[True] = ... + ) -> LexborNode: + """Same as `css` but returns only the first match. + + Parameters + ---------- + + query : str + default : bool, default None + Default value to return if there is no match. + strict: bool, default False + Set to True if you want to check if there is strictly only one match in the document. + + + Returns + ------- + selector : `LexborNode` object + """ + ... + + @overload + def css_first( + self, query: str, default: DefaultT, strict: bool = False + ) -> LexborNode | DefaultT: + """Same as `css` but returns only the first match. + + Parameters + ---------- + + query : str + default : bool, default None + Default value to return if there is no match. + strict: bool, default False + Set to True if you want to check if there is strictly only one match in the document. + + + Returns + ------- + selector : `LexborNode` object + """ + ... + + @overload + def css_first( + self, query: str, default: None = ..., strict: bool = False + ) -> LexborNode | None: + """Same as `css` but returns only the first match. + + Parameters + ---------- + + query : str + default : bool, default None + Default value to return if there is no match. + strict: bool, default False + Set to True if you want to check if there is strictly only one match in the document. + + + Returns + ------- + selector : `LexborNode` object + """ + ... + + def any_css_matches(self, selectors: tuple[str]) -> bool: + """Returns True if any of CSS selectors matches a node""" + ... + + def css_matches(self, selector: str) -> bool: + """Returns True if CSS selector matches a node.""" + ... + + @property + def tag_id(self) -> int: ... + @property + def tag(self) -> str | None: + """Return the name of the current tag (e.g. div, p, img). + + For for non-tag nodes, returns the following names: + + * `-text` - text node + * `-document` - document node + * `-comment` - comment node + + Returns + ------- + text : str + """ + ... + + def decompose(self, recursive: bool = True) -> None: + """Remove the current node from the tree. + + Parameters + ---------- + recursive : bool, default True + Whenever to delete all its child nodes + + Examples + -------- + + >>> tree = LexborHTMLParser(html) + >>> for tag in tree.css('script'): + >>> tag.decompose() + """ + ... + + def strip_tags(self, tags: list[str], recursive: bool = False) -> None: + """Remove specified tags from the HTML tree. + + Parameters + ---------- + tags : list + List of tags to remove. + recursive : bool, default True + Whenever to delete all its child nodes + + Examples + -------- + + >>> tree = LexborHTMLParser('
Hello world!
') + >>> tags = ['head', 'style', 'script', 'xmp', 'iframe', 'noembed', 'noframes'] + >>> tree.strip_tags(tags) + >>> tree.html + '
Hello world!
' + """ + ... + + @property + def attributes(self) -> dict[str, str | None]: + """Get all attributes that belong to the current node. + + The value of empty attributes is None. + + Returns + ------- + attributes : dictionary of all attributes. + + Examples + -------- + + >>> tree = LexborHTMLParser("
") + >>> node = tree.css_first('div') + >>> node.attributes + {'data': None, 'id': 'my_id'} + """ + ... + + @property + def attrs(self) -> LexborAttributes: + """A dict-like object that is similar to the ``attributes`` property, but operates directly on the Node data. + + .. warning:: Use ``attributes`` instead, if you don't want to modify Node attributes. + + Returns + ------- + attributes : Attributes mapping object. + + Examples + -------- + + >>> tree = LexborHTMLParser("
") + >>> node = tree.css_first('div') + >>> node.attrs +
+ >>> node.attrs['id'] + 'a' + >>> node.attrs['foo'] = 'bar' + >>> del node.attrs['id'] + >>> node.attributes + {'foo': 'bar'} + >>> node.attrs['id'] = 'new_id' + >>> node.html + '
' + """ + ... + + @property + def id(self) -> str | None: + """Get the id attribute of the node. + + Returns None if id does not set. + + Returns + ------- + text : str + """ + ... + + def iter( + self, include_text: bool = False, skip_empty: bool = False + ) -> Iterator[LexborNode]: + """Iterate over direct children of this node. + + Parameters + ---------- + include_text : bool, optional + When ``True``, yield text nodes in addition to element nodes. Defaults + to ``False``. + skip_empty : bool, optional + When ``include_text`` is ``True``, ignore text nodes made up solely + of ASCII whitespace (space, tab, newline, form feed or carriage + return). Defaults to ``False``. + + Yields + ------ + LexborNode + Child nodes on the same tree level as this node, filtered according + to the provided options. + """ + ... + + def unwrap(self, delete_empty: bool = False) -> None: + """Replace node with whatever is inside this node. + + Does nothing if you perform unwrapping second time on the same node. + + Parameters + ---------- + delete_empty : bool, default False + If True, removes empty tags. + + Examples + -------- + + >>> tree = LexborHTMLParser("
Hello world!
") + >>> tree.css_first('i').unwrap() + >>> tree.html + '
Hello world!
' + + Note: by default, empty tags are ignored, use "delete_empty" to change this. + """ + ... + + def unwrap_tags(self, tags: list[str], delete_empty: bool = False) -> None: + """Unwraps specified tags from the HTML tree. + + Works the same as the ``unwrap`` method, but applied to a list of tags. + + Parameters + ---------- + tags : list + List of tags to remove. + delete_empty : bool, default False + If True, removes empty tags. + + Examples + -------- + + >>> tree = LexborHTMLParser("
Hello world!
") + >>> tree.body.unwrap_tags(['i','a']) + >>> tree.body.html + '
Hello world!
' + + Note: by default, empty tags are ignored, use "delete_empty" to change this. + """ + ... + + def merge_text_nodes(self) -> None: + """Iterates over all text nodes and merges all text nodes that are close to each other. + + This is useful for text extraction. + Use it when you need to strip HTML tags and merge "dangling" text. + + Examples + -------- + + >>> tree = LexborHTMLParser("

John

Doe

") + >>> node = tree.css_first('div') + >>> tree.unwrap_tags(["strong"]) + >>> tree.text(deep=True, separator=" ", strip=True) + "J ohn Doe" # Text extraction produces an extra space because the strong tag was removed. + >>> node.merge_text_nodes() + >>> tree.text(deep=True, separator=" ", strip=True) + "John Doe" + """ + ... + + def traverse( + self, include_text: bool = False, skip_empty: bool = False + ) -> Iterator[LexborNode]: + """Depth-first traversal starting at the current node. + + Parameters + ---------- + include_text : bool, optional + When ``True``, include text nodes in the traversal sequence. Defaults + to ``False``. + skip_empty : bool, optional + Skip text nodes that contain only ASCII whitespace (space, tab, + newline, form feed or carriage return) when ``include_text`` is + ``True``. Defaults to ``False``. + + Yields + ------ + LexborNode + Nodes encountered in depth-first order beginning with the current + node, filtered according to the provided options. + """ + ... + + def replace_with(self, value: bytes | str | LexborNode) -> None: + """Replace current Node with specified value. + + Parameters + ---------- + value : str, bytes or Node + The text or Node instance to replace the Node with. + When a text string is passed, it's treated as text. All HTML tags will be escaped. + Convert and pass the ``Node`` object when you want to work with HTML. + Does not clone the ``Node`` object. + All future changes to the passed ``Node`` object will also be taken into account. + + Examples + -------- + + >>> tree = LexborHTMLParser('
Get Laptop
') + >>> img = tree.css_first('img') + >>> img.replace_with(img.attributes.get('alt', '')) + >>> tree.body.child.html + '
Get Laptop
' + + >>> html_parser = LexborHTMLParser('
Get
') + >>> html_parser2 = LexborHTMLParser('
Test
') + >>> img_node = html_parser.css_first('img') + >>> img_node.replace_with(html_parser2.body.child) + '
Get
Test
' + """ + ... + + def insert_before(self, value: bytes | str | LexborNode) -> None: + """Insert a node before the current Node. + + Parameters + ---------- + value : str, bytes or Node + The text or Node instance to insert before the Node. + When a text string is passed, it's treated as text. All HTML tags will be escaped. + Convert and pass the ``Node`` object when you want to work with HTML. + Does not clone the ``Node`` object. + All future changes to the passed ``Node`` object will also be taken into account. + + Examples + -------- + + >>> tree = LexborHTMLParser('
Get Laptop
') + >>> img = tree.css_first('img') + >>> img.insert_before(img.attributes.get('alt', '')) + >>> tree.body.child.html + '
Get LaptopLaptop
' + + >>> html_parser = LexborHTMLParser('
Get
') + >>> html_parser2 = LexborHTMLParser('
Test
') + >>> img_node = html_parser.css_first('img') + >>> img_node.insert_before(html_parser2.body.child) +
Get
Test
' + """ + ... + + def insert_after(self, value: bytes | str | LexborNode) -> None: + """Insert a node after the current Node. + + Parameters + ---------- + value : str, bytes or Node + The text or Node instance to insert after the Node. + When a text string is passed, it's treated as text. All HTML tags will be escaped. + Convert and pass the ``Node`` object when you want to work with HTML. + Does not clone the ``Node`` object. + All future changes to the passed ``Node`` object will also be taken into account. + + Examples + -------- + + >>> tree = LexborHTMLParser('
Get Laptop
') + >>> img = tree.css_first('img') + >>> img.insert_after(img.attributes.get('alt', '')) + >>> tree.body.child.html + '
Get LaptopLaptop
' + + >>> html_parser = LexborHTMLParser('
Get
') + >>> html_parser2 = LexborHTMLParser('
Test
') + >>> img_node = html_parser.css_first('img') + >>> img_node.insert_after(html_parser2.body.child) +
Get
Test
' + """ + ... + + def insert_child(self, value: bytes | str | LexborNode) -> None: + """Insert a node inside (at the end of) the current Node. + + Parameters + ---------- + value : str, bytes or Node + The text or Node instance to insert inside the Node. + When a text string is passed, it's treated as text. All HTML tags will be escaped. + Convert and pass the ``Node`` object when you want to work with HTML. + Does not clone the ``Node`` object. + All future changes to the passed ``Node`` object will also be taken into account. + + Examples + -------- + + >>> tree = LexborHTMLParser('
Get
') + >>> div = tree.css_first('div') + >>> div.insert_child('Laptop') + >>> tree.body.child.html + '
Get Laptop
' + + >>> html_parser = LexborHTMLParser('
Get
Laptop
') + >>> html_parser2 = LexborHTMLParser('
Test
') + >>> span_node = html_parser.css_first('span') + >>> span_node.insert_child(html_parser2.body.child) +
Get
Laptop
Test
' + """ + ... + + @property + def raw_value(self) -> NoReturn: + """Return the raw (unparsed, original) value of a node. + + Currently, works on text nodes only. + + Returns + ------- + + raw_value : bytes + + Examples + -------- + + >>> html_parser = LexborHTMLParser('
<test>
') + >>> selector = html_parser.css_first('div') + >>> selector.child.html + '<test>' + >>> selector.child.raw_value + b'<test>' + """ + ... + + def scripts_contain(self, query: str) -> bool: + """Returns True if any of the script tags contain specified text. + + Caches script tags on the first call to improve performance. + + Parameters + ---------- + query : str + The query to check. + """ + ... + + def script_srcs_contain(self, queries: tuple[str]) -> bool: + """Returns True if any of the script SRCs attributes contain on of the specified text. + + Caches values on the first call to improve performance. + + Parameters + ---------- + queries : tuple of str + """ + ... + + def remove(self, recursive: bool = True) -> None: + """An alias for the decompose method.""" + ... + + def select(self, query: str | None = None) -> LexborSelector: + """Select nodes given a CSS selector. + + Works similarly to the the ``css`` method, but supports chained filtering and extra features. + + Parameters + ---------- + query : str or None + The CSS selector to use when searching for nodes. + + Returns + ------- + selector : The `Selector` class. + """ + ... + + @property + def text_content(self) -> str | None: + """Returns the text of the node if it is a text node. + + Returns None for other nodes. + Unlike the ``text`` method, does not include child nodes. + + Returns + ------- + text : str or None. + """ + ... + + @property + def comment_content(self) -> str | None: + """Extract the textual content of an HTML comment node. + + Returns + ------- + str or None + Comment text with surrounding whitespace removed, or ``None`` if + the current node is not a comment or the comment markup cannot be + parsed. + + Examples + -------- + >>> parse_fragment("")[0].comment_content + 'hello' + >>> parse_fragment("
not a comment
")[0].comment_content is None + True + """ + ... + + @property + def inner_html(self) -> str | None: + """Return HTML representation of the child nodes. + + Works similar to innerHTML in JavaScript. + Unlike the `.html` property, does not include the current node. + Can be used to set HTML as well. See the setter docstring. + + Returns + ------- + text : str or None + """ + ... + + @inner_html.setter + def inner_html(self, html: str): + """Set inner HTML to the specified HTML. + + Replaces existing data inside the node. + Works similar to innerHTML in JavaScript. + + Parameters + ---------- + html : str + + """ + ... + + def clone(self) -> LexborNode: + """Clone the current node. + + You can it use to do temporary modifications without affecting the original HTML tree. + + It is tied to the current parser instance. + Gets destroyed when parser instance is destroyed. + """ + ... + + @property + def is_element_node(self) -> bool: + """Return True if the node represents an element node.""" + ... + + @property + def is_text_node(self) -> bool: + """Return True if the node represents a text node.""" + ... + + @property + def is_comment_node(self) -> bool: + """Return True if the node represents a comment node.""" + ... + + @property + def is_document_node(self) -> bool: + """Return True if the node represents a document node.""" + ... + + @property + def is_empty_text_node(self) -> bool: + """Check whether the current node is an empty text node. + + Returns + ------- + bool + ``True`` when the node is a text node whose data consists solely of + ASCII whitespace characters (space, tab, newline, form feed or + carriage return). + """ + ... + +class LexborHTMLParser: + """The lexbor HTML parser. + + Use this class to parse raw HTML. + + This parser mimics most of the stuff from ``HTMLParser`` but not inherits it directly. + + Parameters + ---------- + + html : str (unicode) or bytes + """ + + raw_html: bytes + + def __init__(self, html: str | bytes, is_fragment: bool = False) -> None: + """Create a parser and load HTML. + + Parameters + ---------- + html : str or bytes + HTML content to parse. + is_fragment : bool, optional + When ``False`` (default), the input is parsed as a full HTML document. + If the input is only a fragment, the parser still accepts it and inserts any missing required elements, + (such as ``, ``, and ``) into the tree, + according to the HTML parsing rules in the HTML Standard. + This matches how browsers construct the DOM when they load an HTML page. + + When ``True``, the input is parsed as an HTML fragment. + The parser does not insert any missing required HTML elements. + Behaves the same way as `DocumentFragment` in browsers. + When ``, `` or `` are present, ignores them entirely. + As per the HTML Standard. + + """ + ... + + def __repr__(self) -> str: + """Return a concise representation of the parsed document. + + Returns + ------- + str + A string showing the number of characters in the parsed HTML. + """ + ... + + @property + def selector(self) -> LexborCSSSelector: + """Return a lazily created CSS selector helper. + + Returns + ------- + LexborCSSSelector + Selector instance bound to this parser. + """ + ... + + @property + def root(self) -> LexborNode | None: + """Return the document root node. + + Returns + ------- + LexborNode or None + Root of the parsed document, or ``None`` if unavailable. + """ + ... + + @property + def body(self) -> LexborNode | None: + """Return document body. + + Returns + ------- + LexborNode or None + ```` element when present, otherwise ``None``. + """ + ... + + @property + def head(self) -> LexborNode | None: + """Return document head. + + Returns + ------- + LexborNode or None + ```` element when present, otherwise ``None``. + """ + ... + + def tags(self, name: str) -> list[LexborNode]: + """Return all tags that match the provided name. + + Parameters + ---------- + name : str + Tag name to search for (e.g., ``"div"``). + + Returns + ------- + list of LexborNode + Matching elements in document order. + + Raises + ------ + ValueError + If ``name`` is empty or longer than 100 characters. + SelectolaxError + If Lexbor cannot locate the elements. + """ + ... + + def text( + self, + deep: bool = True, + separator: str = "", + strip: bool = False, + skip_empty: bool = False, + ) -> str: + """Returns the text of the node including text of all its child nodes. + + Parameters + ---------- + strip : bool, default False + If true, calls ``str.strip()`` on each text part to remove extra white spaces. + separator : str, default '' + The separator to use when joining text from different nodes. + deep : bool, default True + If True, includes text from all child nodes. + skip_empty : bool, optional + Exclude text nodes whose content is only ASCII whitespace (space, + tab, newline, form feed or carriage return) when ``True``. + Defaults to ``False``. + + Returns + ------- + text : str + Combined textual content assembled according to the provided options. + """ + ... + + @property + def html(self) -> str | None: + """Return HTML representation of the page. + + Returns + ------- + str or None + Serialized HTML of the current document. + """ + ... + + def css(self, query: str) -> list[LexborNode]: + """A CSS selector. + + Matches pattern `query` against HTML tree. + `CSS selectors reference `_. + + Special selectors: + + - parser.css('p:lexbor-contains("awesome" i)') -- case-insensitive contains + - parser.css('p:lexbor-contains("awesome")') -- case-sensitive contains + + Parameters + ---------- + query : str + CSS selector (e.g. "div > :nth-child(2n+1):not(:has(a))"). + + Returns + ------- + selector : list of `Node` objects + """ + ... + + @overload + def css_first( + self, query: str, default: Any = ..., strict: Literal[True] = ... + ) -> LexborNode: + """Same as `css` but returns only the first match. + + Parameters + ---------- + + query : str + default : Any, default None + Default value to return if there is no match. + strict: bool, default False + Set to True if you want to check if there is strictly only one match in the document. + + + Returns + ------- + selector : `LexborNode` object + """ + ... + + @overload + def css_first( + self, query: str, default: DefaultT, strict: bool = False + ) -> LexborNode | DefaultT: + """Same as `css` but returns only the first match. + + Parameters + ---------- + + query : str + default : Any, default None + Default value to return if there is no match. + strict: bool, default False + Set to True if you want to check if there is strictly only one match in the document. + + + Returns + ------- + selector : `LexborNode` object + """ + ... + + @overload + def css_first( + self, query: str, default: None = ..., strict: bool = False + ) -> LexborNode | None: + """Same as `css` but returns only the first match. + + Parameters + ---------- + + query : str + default : Any, default None + Default value to return if there is no match. + strict: bool, default False + Set to True if you want to check if there is strictly only one match in the document. + + + Returns + ------- + selector : `LexborNode` object + """ + ... + + def strip_tags(self, tags: list[str], recursive: bool = False) -> None: + """Remove specified tags from the node. + + Parameters + ---------- + tags : list of str + List of tags to remove. + recursive : bool, default False + Whenever to delete all its child nodes + + Examples + -------- + + >>> tree = LexborHTMLParser('
Hello world!
') + >>> tags = ['head', 'style', 'script', 'xmp', 'iframe', 'noembed', 'noframes'] + >>> tree.strip_tags(tags) + >>> tree.html + '
Hello world!
' + + Returns + ------- + None + """ + ... + + def select(self, query: str | None = None) -> LexborSelector | None: + """Select nodes given a CSS selector. + + Works similarly to the ``css`` method, but supports chained filtering and extra features. + + Parameters + ---------- + query : str or None + The CSS selector to use when searching for nodes. + + Returns + ------- + LexborSelector or None + Selector bound to the root node, or ``None`` if the document is empty. + """ + ... + + def any_css_matches(self, selectors: tuple[str]) -> bool: + """Return ``True`` if any of the specified CSS selectors match. + + Parameters + ---------- + selectors : tuple[str] + CSS selectors to evaluate. + + Returns + ------- + bool + ``True`` when at least one selector matches. + """ + ... + + def scripts_contain(self, query: str) -> bool: + """Return ``True`` if any script tag contains the given text. + + Caches script tags on the first call to improve performance. + + Parameters + ---------- + query : str + Text to search for within script contents. + + Returns + ------- + bool + ``True`` when a matching script tag is found. + """ + ... + + def script_srcs_contain(self, queries: tuple[str]) -> bool: + """Return ``True`` if any script ``src`` contains one of the strings. + + Caches values on the first call to improve performance. + + Parameters + ---------- + queries : tuple of str + Strings to look for inside ``src`` attributes. + + Returns + ------- + bool + ``True`` when a matching source value is found. + """ + ... + + def css_matches(self, selector: str) -> bool: + """Return ``True`` if the document matches the selector at least once. + + Parameters + ---------- + selector : str + CSS selector to test. + + Returns + ------- + bool + ``True`` when a match exists. + """ + ... + + def merge_text_nodes(self) -> None: + """Iterates over all text nodes and merges all text nodes that are close to each other. + + This is useful for text extraction. + Use it when you need to strip HTML tags and merge "dangling" text. + + Examples + -------- + + >>> tree = LexborHTMLParser("

John

Doe

") + >>> node = tree.css_first('div') + >>> tree.unwrap_tags(["strong"]) + >>> tree.text(deep=True, separator=" ", strip=True) + "J ohn Doe" # Text extraction produces an extra space because the strong tag was removed. + >>> node.merge_text_nodes() + >>> tree.text(deep=True, separator=" ", strip=True) + "John Doe" + + Returns + ------- + None + """ + ... + + def clone(self) -> LexborHTMLParser: + """Clone the current document tree. + + You can use it to do temporary modifications without affecting the original HTML tree. + It is tied to the current parser instance. + Gets destroyed when the parser instance is destroyed. + + Returns + ------- + LexborHTMLParser + A parser instance backed by a deep-copied document. + """ + ... + + def unwrap_tags(self, tags: list[str], delete_empty: bool = False) -> None: + """Unwraps specified tags from the HTML tree. + + Works the same as the ``unwrap`` method, but applied to a list of tags. + + Parameters + ---------- + tags : list + List of tags to remove. + delete_empty : bool + Whenever to delete empty tags. + + Examples + -------- + + >>> tree = LexborHTMLParser("
Hello world!
") + >>> tree.body.unwrap_tags(['i','a']) + >>> tree.body.html + '
Hello world!
' + + Returns + ------- + None + """ + ... + + @property + def inner_html(self) -> str: + """Return HTML representation of the child nodes. + + Works similar to innerHTML in JavaScript. + Unlike the `.html` property, does not include the current node. + Can be used to set HTML as well. See the setter docstring. + + Returns + ------- + text : str | None + """ + ... + + @inner_html.setter + def inner_html(self, html: str) -> None: + """Set inner HTML to the specified HTML. + + Replaces existing data inside the node. + Works similar to innerHTML in JavaScript. + + Parameters + ---------- + html : str + + Returns + ------- + None + """ + ... + def create_node(self, tag: str) -> LexborNode: + """Given an HTML tag name, e.g. `"div"`, create a single empty node for that tag, + e.g. `"
"`. + + + Parameters + ---------- + tag : str + Name of the tag to create. + + Returns + ------- + LexborNode + Newly created element node. + Raises + ------ + SelectolaxError + If the element cannot be created. + + Examples + -------- + >>> parser = LexborHTMLParser("
") + >>> new_node = parser.create_node("span") + >>> new_node.tag_name + 'span' + >>> parser.css_first("div").append_child(new_node) + >>> parser.html + '
' + """ + +def create_tag(tag: str) -> LexborNode: + """ + Given an HTML tag name, e.g. `"div"`, create a single empty node for that tag, + e.g. `"
"`. + + Use `LexborHTMLParser().create_node(..)` if you need to create a node tied to a specific parser instance. + """ + ... + +def parse_fragment(html: str) -> list[LexborNode]: + """ + Given HTML, parse it into a list of Nodes, such that the nodes + correspond to the given HTML. + + For contrast, HTMLParser adds ``, ``, and `` tags + if they are missing. This function does not add these tags. + """ + ... + +class SelectolaxError(Exception): + """An exception that indicates error.""" + + pass diff --git a/dist/HandoverSystem/_internal/selectolax/lexbor.pyx b/dist/HandoverSystem/_internal/selectolax/lexbor.pyx new file mode 100644 index 0000000..ba4bb47 --- /dev/null +++ b/dist/HandoverSystem/_internal/selectolax/lexbor.pyx @@ -0,0 +1,754 @@ +from cpython.bool cimport bool + +_ENCODING = 'UTF-8' + +include "base.pxi" +include "utils.pxi" +include "lexbor/attrs.pxi" +include "lexbor/node.pxi" +include "lexbor/selection.pxi" +include "lexbor/util.pxi" +include "lexbor/node_remove.pxi" + +# We don't inherit from HTMLParser here, because it also includes all the C code from Modest. + +cdef class LexborHTMLParser: + """The lexbor HTML parser. + + Use this class to parse raw HTML. + + This parser mimics most of the stuff from ``HTMLParser`` but not inherits it directly. + + Parameters + ---------- + + html : str (unicode) or bytes + """ + def __init__(self, html: str | bytes, is_fragment: bool = False): + """Create a parser and load HTML. + + Parameters + ---------- + html : str or bytes + HTML content to parse. + is_fragment : bool, optional + When ``False`` (default), the input is parsed as a full HTML document. + If the input is only a fragment, the parser still accepts it and inserts any missing required elements, + (such as ``, ``, and ``) into the tree, + according to the HTML parsing rules in the HTML Standard. + This matches how browsers construct the DOM when they load an HTML page. + + When ``True``, the input is parsed as an HTML fragment. + The parser does not insert any missing required HTML elements. + Behaves the same way as `DocumentFragment` in browsers. + When ``, `` or `` are present, ignores them entirely. + As per the HTML Standard. + + """ + cdef size_t html_len + cdef object bytes_html + self._is_fragment = is_fragment + self._fragment_document = NULL + self._selector = None + self._new_html_document() + bytes_html, html_len = preprocess_input(html) + self._parse_html(bytes_html, html_len) + self.raw_html = bytes_html + + cdef inline lxb_html_document_t* main_document(self) nogil: + if self._is_fragment: + return self._fragment_document + else: + return self.document + + cdef inline void _new_html_document(self): + """Initialize a fresh Lexbor HTML document. + + Returns + ------- + None + + Raises + ------ + SelectolaxError + If the underlying Lexbor document cannot be created. + """ + with nogil: + self.document = lxb_html_document_create() + + if self.document == NULL: + PyErr_SetObject(SelectolaxError, "Failed to initialize object for HTML Document.") + + cdef int _parse_html(self, char *html, size_t html_len) except -1: + """Parse HTML content into the internal document. + + Parameters + ---------- + html : char * + Pointer to UTF-8 encoded HTML bytes. + html_len : size_t + Length of the HTML buffer. + + Returns + ------- + int + ``0`` on success; ``-1`` when parsing fails. + + Raises + ------ + SelectolaxError + If Lexbor returns a non-OK status. + RuntimeError + If the internal document is ``NULL`` after a successful parse. + """ + cdef lxb_status_t status + + if self.document == NULL: + return -1 + + with nogil: + if self._is_fragment: + status = self._parse_html_fragment(html, html_len) + else: + status = self._parse_html_document(html, html_len) + + if status != LXB_STATUS_OK: + PyErr_SetObject(SelectolaxError, "Can't parse HTML.") + return -1 + + if self.document == NULL: + PyErr_SetObject(RuntimeError, "document is NULL even after html was parsed correctly") + return -1 + return 0 + + cdef inline lxb_status_t _parse_html_document(self, char *html, size_t html_len) nogil: + """Parse HTML as a full HTML document. + If the input is only a fragment, the parser still accepts it and inserts any missing required elements, + (such as ``, ``, and ``) into the tree, + according to the HTML parsing rules in the HTML Standard. + This matches how browsers construct the DOM when they load an HTML page. + + Parameters + ---------- + html : char * + Pointer to UTF-8 encoded HTML bytes. + html_len : size_t + Length of the HTML buffer. + + Returns + ------- + lxb_status_t + Lexbor status code produced by ``lxb_html_document_parse``. + """ + return lxb_html_document_parse(self.document, html, html_len) + + cdef inline lxb_status_t _parse_html_fragment(self, char *html, size_t html_len) nogil: + """Parse HTML as an HTML fragment. + The parser does not insert any missing required HTML elements. + + Parameters + ---------- + html : char * + Pointer to UTF-8 encoded HTML bytes. + html_len : size_t + Length of the HTML buffer. + + Returns + ------- + lxb_status_t + Lexbor status code; ``LXB_STATUS_OK`` when parsing the fragment succeeded. + """ + cdef const lxb_char_t *dummy_root_name = "" + cdef size_t dummy_root_len = 0 + cdef lxb_html_element_t *dummy_root = NULL + cdef lxb_dom_node_t *fragment_html_node = NULL + + dummy_root = lxb_html_document_create_element( + self.document, + dummy_root_name, + dummy_root_len, + NULL + ) + if dummy_root == NULL: + return LXB_STATUS_ERROR + fragment_html_node = lxb_html_document_parse_fragment( + self.document, + dummy_root, + html, + html_len + ) + if fragment_html_node == NULL: + return LXB_STATUS_ERROR + + self._fragment_document = fragment_html_node + return LXB_STATUS_OK + + def __dealloc__(self): + """Release the underlying Lexbor HTML document. + + Returns + ------- + None + + Notes + ----- + Safe to call multiple times; does nothing if the document is already + freed. + """ + if self._fragment_document != NULL: + lxb_html_document_destroy(self._fragment_document) + if self.document != NULL: + lxb_html_document_destroy(self.document) + + def __repr__(self): + """Return a concise representation of the parsed document. + + Returns + ------- + str + A string showing the number of characters in the parsed HTML. + """ + html_len = len(self.root.html if self.root is not None else "") + return f"" + + @property + def selector(self): + """Return a lazily created CSS selector helper. + + Returns + ------- + LexborCSSSelector + Selector instance bound to this parser. + """ + if self._selector is None: + self._selector = LexborCSSSelector() + return self._selector + + @property + def root(self): + """Return the document root node. + + Returns + ------- + LexborNode or None + Root of the parsed document, or ``None`` if unavailable. + """ + if self.document == NULL: + return None + cdef LexborNode node + cdef lxb_dom_node_t* dom_root + if self._is_fragment and self._fragment_document != NULL: + dom_root = lxb_dom_document_root(&self._fragment_document.dom_document) + else: + dom_root = lxb_dom_document_root(&self.document.dom_document) + if dom_root == NULL: + return None + node = LexborNode.new(dom_root, self) + if self._is_fragment: + node.set_as_fragment_root() + return node + + @property + def body(self): + """Return document body. + + Returns + ------- + LexborNode or None + ```` element when present, otherwise ``None``. + """ + cdef lxb_html_body_element_t* body + body = lxb_html_document_body_element_noi(self.document) + if body == NULL: + return None + return LexborNode.new( body, self) + + @property + def head(self): + """Return document head. + + Returns + ------- + LexborNode or None + ```` element when present, otherwise ``None``. + """ + cdef lxb_html_head_element_t* head + head = lxb_html_document_head_element_noi(self.document) + if head == NULL: + return None + return LexborNode.new( head, self) + + def tags(self, str name): + """Return all tags that match the provided name. + + Parameters + ---------- + name : str + Tag name to search for (e.g., ``"div"``). + + Returns + ------- + list of LexborNode + Matching elements in document order. + + Raises + ------ + ValueError + If ``name`` is empty or longer than 100 characters. + SelectolaxError + If Lexbor cannot locate the elements. + """ + + if not name: + raise ValueError("Tag name cannot be empty") + if len(name) > 100: + raise ValueError("Tag name is too long") + + cdef lxb_dom_collection_t* collection = NULL + cdef lxb_status_t status + pybyte_name = name.encode('UTF-8') + + result = list() + collection = lxb_dom_collection_make(&self.document.dom_document, 128) + + if collection == NULL: + return result + status = lxb_dom_elements_by_tag_name( + self.document, + collection, + pybyte_name, + len(pybyte_name) + ) + if status != 0x0000: + lxb_dom_collection_destroy(collection, True) + raise SelectolaxError("Can't locate elements.") + + for i in range(lxb_dom_collection_length_noi(collection)): + node = LexborNode.new( + lxb_dom_collection_element_noi(collection, i), + self + ) + result.append(node) + lxb_dom_collection_destroy(collection, True) + return result + + def text( + self, + deep: bool = True, + separator: str = "", + strip: bool = False, + skip_empty: bool = False, + ) -> str: + """Returns the text of the node including text of all its child nodes. + + Parameters + ---------- + strip : bool, default False + If true, calls ``str.strip()`` on each text part to remove extra white spaces. + separator : str, default '' + The separator to use when joining text from different nodes. + deep : bool, default True + If True, includes text from all child nodes. + skip_empty : bool, optional + Exclude text nodes whose content is only ASCII whitespace (space, + tab, newline, form feed or carriage return) when ``True``. + Defaults to ``False``. + + Returns + ------- + text : str + Combined textual content assembled according to the provided options. + """ + if self.root is None: + return "" + return self.root.text(deep=deep, separator=separator, strip=strip, skip_empty=skip_empty) + + @property + def html(self): + """Return HTML representation of the page. + + Returns + ------- + str or None + Serialized HTML of the current document. + """ + if self.document == NULL: + return None + if self._is_fragment: + if self.root is None: + return None + return self.root.html + node = LexborNode.new( &self.document.dom_document, self) + return node.html + + def css(self, str query): + """A CSS selector. + + Matches pattern `query` against HTML tree. + `CSS selectors reference `_. + + Special selectors: + + - parser.css('p:lexbor-contains("awesome" i)') -- case-insensitive contains + - parser.css('p:lexbor-contains("awesome")') -- case-sensitive contains + + Parameters + ---------- + query : str + CSS selector (e.g. "div > :nth-child(2n+1):not(:has(a))"). + + Returns + ------- + selector : list of `Node` objects + """ + return self.root.css(query) + + def css_first(self, str query, default=None, strict=False): + """Same as `css` but returns only the first match. + + Parameters + ---------- + + query : str + default : Any, default None + Default value to return if there is no match. + strict: bool, default False + Set to True if you want to check if there is strictly only one match in the document. + + + Returns + ------- + selector : `LexborNode` object + """ + return self.root.css_first(query, default, strict) + + def strip_tags(self, list tags, bool recursive = False): + """Remove specified tags from the node. + + Parameters + ---------- + tags : list of str + List of tags to remove. + recursive : bool, default False + Whenever to delete all its child nodes + + Examples + -------- + + >>> tree = LexborHTMLParser('
Hello world!
') + >>> tags = ['head', 'style', 'script', 'xmp', 'iframe', 'noembed', 'noframes'] + >>> tree.strip_tags(tags) + >>> tree.html + '
Hello world!
' + + Returns + ------- + None + """ + cdef lxb_dom_collection_t* collection = NULL + cdef lxb_status_t status + + for tag in tags: + pybyte_name = tag.encode('UTF-8') + + collection = lxb_dom_collection_make(&self.document.dom_document, 128) + + if collection == NULL: + raise SelectolaxError("Can't initialize DOM collection.") + + status = lxb_dom_elements_by_tag_name( + self.document, + collection, + pybyte_name, + len(pybyte_name) + ) + if status != 0x0000: + lxb_dom_collection_destroy(collection, True) + raise SelectolaxError("Can't locate elements.") + + for i in range(lxb_dom_collection_length_noi(collection)): + if recursive: + lxb_dom_node_destroy_deep( lxb_dom_collection_element_noi(collection, i)) + else: + lxb_dom_node_destroy( lxb_dom_collection_element_noi(collection, i)) + lxb_dom_collection_destroy(collection, True) + + def select(self, query=None): + """Select nodes given a CSS selector. + + Works similarly to the ``css`` method, but supports chained filtering and extra features. + + Parameters + ---------- + query : str or None + The CSS selector to use when searching for nodes. + + Returns + ------- + LexborSelector or None + Selector bound to the root node, or ``None`` if the document is empty. + """ + cdef LexborNode node + node = self.root + if node: + return LexborSelector(node, query) + return None + + def any_css_matches(self, tuple selectors): + """Return ``True`` if any of the specified CSS selectors match. + + Parameters + ---------- + selectors : tuple[str] + CSS selectors to evaluate. + + Returns + ------- + bool + ``True`` when at least one selector matches. + """ + return self.root.any_css_matches(selectors) + + def scripts_contain(self, str query): + """Return ``True`` if any script tag contains the given text. + + Caches script tags on the first call to improve performance. + + Parameters + ---------- + query : str + Text to search for within script contents. + + Returns + ------- + bool + ``True`` when a matching script tag is found. + """ + return self.root.scripts_contain(query) + + def script_srcs_contain(self, tuple queries): + """Return ``True`` if any script ``src`` contains one of the strings. + + Caches values on the first call to improve performance. + + Parameters + ---------- + queries : tuple of str + Strings to look for inside ``src`` attributes. + + Returns + ------- + bool + ``True`` when a matching source value is found. + """ + return self.root.script_srcs_contain(queries) + + def css_matches(self, str selector): + """Return ``True`` if the document matches the selector at least once. + + Parameters + ---------- + selector : str + CSS selector to test. + + Returns + ------- + bool + ``True`` when a match exists. + """ + return self.root.css_matches(selector) + + def merge_text_nodes(self): + """Iterates over all text nodes and merges all text nodes that are close to each other. + + This is useful for text extraction. + Use it when you need to strip HTML tags and merge "dangling" text. + + Examples + -------- + + >>> tree = LexborHTMLParser("

John

Doe

") + >>> node = tree.css_first('div') + >>> tree.unwrap_tags(["strong"]) + >>> tree.text(deep=True, separator=" ", strip=True) + "J ohn Doe" # Text extraction produces an extra space because the strong tag was removed. + >>> node.merge_text_nodes() + >>> tree.text(deep=True, separator=" ", strip=True) + "John Doe" + + Returns + ------- + None + """ + return self.root.merge_text_nodes() + + @staticmethod + cdef LexborHTMLParser from_document(lxb_html_document_t *document, bytes raw_html): + """Construct a parser from an existing Lexbor document. + + Parameters + ---------- + document : lxb_html_document_t * + Borrowed pointer to an initialized Lexbor HTML document. + raw_html : bytes + Original HTML bytes backing the document. + + Returns + ------- + LexborHTMLParser + Parser instance wrapping the provided document. + """ + obj = LexborHTMLParser.__new__(LexborHTMLParser) + obj.document = document + obj.raw_html = raw_html + obj.cached_script_texts = None + obj.cached_script_srcs = None + obj._selector = None + return obj + + def clone(self): + """Clone the current document tree. + + You can use to do temporary modifications without affecting the original HTML tree. + It is tied to the current parser instance. + Gets destroyed when the parser instance is destroyed. + + Returns + ------- + LexborHTMLParser + A parser instance backed by a deep-copied document. + """ + cdef lxb_html_document_t* cloned_document + cdef lxb_dom_node_t* cloned_node + cdef LexborHTMLParser cls + + with nogil: + cloned_document = lxb_html_document_create() + + if cloned_document == NULL: + raise SelectolaxError("Can't create a new document") + + cloned_document.ready_state = LXB_HTML_DOCUMENT_READY_STATE_COMPLETE + + with nogil: + cloned_node = lxb_dom_document_import_node( + &cloned_document.dom_document, + lxb_dom_document_root(&self.main_document().dom_document), + True + ) + + if cloned_node == NULL: + raise SelectolaxError("Can't create a new document") + + with nogil: + lxb_dom_node_insert_child( cloned_document, cloned_node) + + cls = LexborHTMLParser.from_document(cloned_document, self.raw_html) + return cls + + def unwrap_tags(self, list tags, delete_empty = False): + """Unwraps specified tags from the HTML tree. + + Works the same as the ``unwrap`` method, but applied to a list of tags. + + Parameters + ---------- + tags : list + List of tags to remove. + delete_empty : bool + Whenever to delete empty tags. + + Examples + -------- + + >>> tree = LexborHTMLParser("
Hello world!
") + >>> tree.body.unwrap_tags(['i','a']) + >>> tree.body.html + '
Hello world!
' + + Returns + ------- + None + """ + # faster to check if the document is empty which should determine if we have a root + if self.document != NULL: + self.root.unwrap_tags(tags, delete_empty=delete_empty) + + @property + def inner_html(self) -> str: + """Return HTML representation of the child nodes. + + Works similar to innerHTML in JavaScript. + Unlike the `.html` property, does not include the current node. + Can be used to set HTML as well. See the setter docstring. + + Returns + ------- + text : str | None + """ + return self.root.inner_html + + @inner_html.setter + def inner_html(self, str html): + """Set inner HTML to the specified HTML. + + Replaces existing data inside the node. + Works similar to innerHTML in JavaScript. + + Parameters + ---------- + html : str + + Returns + ------- + None + """ + self.root.inner_html = html + + def create_node(self, str tag): + """Given an HTML tag name, e.g. `"div"`, create a single empty node for that tag, + e.g. `"
"`. + + Parameters + ---------- + tag : str + Name of the tag to create. + + Returns + ------- + LexborNode + Newly created element node. + Raises + ------ + SelectolaxError + If the element cannot be created. + + Examples + -------- + >>> parser = LexborHTMLParser("
") + >>> new_node = parser.create_node("span") + >>> new_node.tag_name + 'span' + >>> parser.root.append_child(new_node) + >>> parser.html + '
' + """ + cdef lxb_html_element_t* element + cdef lxb_dom_node_t* dom_node + if not tag: + raise SelectolaxError("Tag name cannot be empty") + pybyte_name = tag.encode('UTF-8') + + element = lxb_html_document_create_element( + self.document, + pybyte_name, + len(pybyte_name), + NULL + ) + + if element == NULL: + raise SelectolaxError(f"Can't create element for tag '{tag}'") + + dom_node = element + + return LexborNode.new(dom_node, self) diff --git a/dist/HandoverSystem/_internal/selectolax/lexbor/attrs.pxi b/dist/HandoverSystem/_internal/selectolax/lexbor/attrs.pxi new file mode 100644 index 0000000..1d4c310 --- /dev/null +++ b/dist/HandoverSystem/_internal/selectolax/lexbor/attrs.pxi @@ -0,0 +1,120 @@ +cimport cython + + +@cython.final +cdef class LexborAttributes: + """A dict-like object that represents attributes.""" + cdef lxb_dom_node_t *node + cdef unicode decode_errors + + @staticmethod + cdef LexborAttributes create(lxb_dom_node_t *node): + obj = LexborAttributes.__new__(LexborAttributes) + obj.node = node + return obj + + def __iter__(self): + cdef lxb_dom_attr_t *attr = lxb_dom_element_first_attribute_noi( self.node) + cdef size_t str_len = 0 + attributes = dict() + + while attr != NULL: + key = lxb_dom_attr_local_name_noi(attr, &str_len) + if key is not NULL: + yield key.decode(_ENCODING) + attr = attr.next + + def __setitem__(self, str key, object value): + value = value + bytes_key = key.encode(_ENCODING) + bytes_value = value.encode(_ENCODING) if value else b"" + cdef lxb_dom_attr_t *attr + cdef lxb_dom_document_t *doc + + if value is None: + # N.B. This is suboptimal, but there is not API to set empty attributes + attr = lxb_dom_element_set_attribute( + self.node, + bytes_key, len(bytes_key), + NULL, 0 + ) + doc = (attr).owner_document + lexbor_str_destroy(attr.value, doc.text, 0) + attr.value = NULL + + elif isinstance(value, str) or isinstance(value, unicode) : + lxb_dom_element_set_attribute( + self.node, + bytes_key, len(bytes_key), + bytes_value, len(bytes_value), + ) + else: + raise TypeError("Expected str or unicode, got %s" % type(value)) + + def __delitem__(self, key): + try: + self.__getitem__(key) + except KeyError: + raise KeyError(key) + bytes_key = key.encode(_ENCODING) + lxb_dom_element_remove_attribute( + self.node, + bytes_key, len(bytes_key), + ) + + def __getitem__(self, str key): + bytes_key = key.encode(_ENCODING) + cdef lxb_dom_attr_t * attr = lxb_dom_element_attr_by_name( + self.node, + bytes_key, len(bytes_key) + ) + cdef size_t str_len = 0 + if attr != NULL: + value = lxb_dom_attr_value_noi(attr, &str_len) + return value.decode(_ENCODING) if value else None + raise KeyError(key) + + def __len__(self): + return len(list(self.__iter__())) + + def keys(self): + return self.__iter__() + + def items(self): + for key in self.__iter__(): + yield key, self[key] + + def values(self): + for key in self.__iter__(): + yield self[key] + + def get(self, key, default=None): + try: + return self[key] + except KeyError: + return default + + def sget(self, key, default=""): + """Same as get, but returns empty strings instead of None values for empty attributes.""" + try: + val = self[key] + if val is None: + val = "" + return val + except KeyError: + return default + + def __contains__(self, key): + try: + self[key] + except KeyError: + return False + else: + return True + + def __repr__(self): + cdef lxb_char_t *c_text + cdef size_t str_len = 0 + c_text = lxb_dom_element_qualified_name( self.node, &str_len) + tag_name = c_text.decode(_ENCODING, 'ignore') if c_text != NULL else 'unknown' + return "<%s attributes, %s items>" % (tag_name, len(self)) diff --git a/dist/HandoverSystem/_internal/selectolax/lexbor/node.pxi b/dist/HandoverSystem/_internal/selectolax/lexbor/node.pxi new file mode 100644 index 0000000..1281c6a --- /dev/null +++ b/dist/HandoverSystem/_internal/selectolax/lexbor/node.pxi @@ -0,0 +1,1155 @@ +cimport cython +from cpython.exc cimport PyErr_SetNone + +import logging + +logger = logging.getLogger("selectolax") + +_TAG_TO_NAME = { + 0x0005: "-doctype", + 0x0002: "-text", + 0x0004: "-comment", +} +ctypedef fused str_or_LexborNode: + str + bytes + LexborNode + +ctypedef fused str_or_bytes: + str + bytes + +cdef inline bytes to_bytes(str_or_LexborNode value): + cdef bytes bytes_val + if isinstance(value, unicode): + bytes_val = value.encode("utf-8") + elif isinstance(value, bytes): + bytes_val = value + return bytes_val + + +@cython.final +cdef class LexborNode: + """A class that represents HTML node (element).""" + + cdef void set_as_fragment_root(self): + self._is_fragment_root = 1 + + @staticmethod + cdef LexborNode new(lxb_dom_node_t *node, LexborHTMLParser parser): + cdef LexborNode lxbnode = LexborNode.__new__(LexborNode) + lxbnode.node = node + lxbnode.parser = parser + lxbnode._is_fragment_root = 0 + return lxbnode + + @property + def mem_id(self): + return self.node + + @property + def child(self): + """Alias for the `first_child` property. + + **Deprecated**. Please use `first_child` instead. + """ + return self.first_child + + @property + def first_child(self): + """Return the first child node.""" + cdef LexborNode node + if self.node.first_child: + node = LexborNode.new( self.node.first_child, self.parser) + return node + return None + + @property + def parent(self): + """Return the parent node.""" + cdef LexborNode node + if self.node.parent != NULL: + node = LexborNode.new( self.node.parent, self.parser) + return node + return None + + @property + def next(self): + """Return next node.""" + cdef LexborNode node + if self.node.next != NULL: + node = LexborNode.new( self.node.next, self.parser) + return node + return None + + @property + def prev(self): + """Return previous node.""" + cdef LexborNode node + if self.node.prev != NULL: + node = LexborNode.new( self.node.prev, self.parser) + return node + return None + + @property + def last_child(self): + """Return last child node.""" + cdef LexborNode node + if self.node.last_child != NULL: + node = LexborNode.new( self.node.last_child, self.parser) + return node + return None + + @property + def html(self): + """Return HTML representation of the current node including all its child nodes. + + Returns + ------- + text : str + """ + cdef lexbor_str_t *lxb_str + cdef lxb_status_t status + + lxb_str = lexbor_str_create() + if self._is_fragment_root: + status = serialize_fragment(self.node, lxb_str) + # status = lxb_html_serialize_tree_str(self.node, lxb_str) + else: + status = lxb_html_serialize_tree_str(self.node, lxb_str) + if status == 0 and lxb_str.data: + html = lxb_str.data.decode(_ENCODING).replace('<-undef>', '') + lexbor_str_destroy(lxb_str, self.node.owner_document.text, True) + return html + return None + + def __hash__(self): + return self.mem_id + + def text_lexbor(self): + """Returns the text of the node including text of all its child nodes. + + Uses builtin method from lexbor. + """ + + cdef size_t str_len = 0 + cdef lxb_char_t * text + + text = lxb_dom_node_text_content(self.node, &str_len) + if str_len == 0: + raise RuntimeError("Can't extract text") + + unicode_text = text.decode(_ENCODING) + lxb_dom_document_destroy_text_noi(self.node.owner_document, text) + return unicode_text + + def text(self, bool deep=True, str separator='', bool strip=False, bool skip_empty=False): + """Return concatenated text from this node. + + Parameters + ---------- + deep : bool, optional + When ``True`` (default), include text from all descendant nodes; when + ``False``, only include direct children. + separator : str, optional + String inserted between successive text fragments. + strip : bool, optional + If ``True``, apply ``str.strip()`` to each fragment before joining to + remove surrounding whitespace. Defaults to ``False``. + skip_empty : bool, optional + Exclude text nodes whose content is only ASCII whitespace (space, + tab, newline, form feed or carriage return) when ``True``. + Defaults to ``False``. + + Returns + ------- + text : str + Combined textual content assembled according to the provided options. + + """ + cdef unsigned char * text + cdef lxb_dom_node_t * node = self.node.first_child + + if not deep: + container = TextContainer(separator, strip) + if _is_node_type(self.node, LXB_DOM_NODE_TYPE_TEXT): + text = lexbor_str_data_noi(&( self.node).data) + if text != NULL: + if not skip_empty or not self.is_empty_text_node: + py_text = text.decode(_ENCODING) + container.append(py_text) + + while node != NULL: + if _is_node_type(node, LXB_DOM_NODE_TYPE_TEXT): + text = lexbor_str_data_noi(&( node).data) + if text != NULL: + if not skip_empty or not is_empty_text_node(node): + py_text = text.decode(_ENCODING) + container.append(py_text) + node = node.next + return container.text + else: + container = TextContainer(separator, strip) + if _is_node_type(self.node, LXB_DOM_NODE_TYPE_TEXT): + text = lexbor_str_data_noi(&( self.node).data) + if text != NULL: + if not skip_empty or not self.is_empty_text_node: + container.append(text.decode(_ENCODING)) + + lxb_dom_node_simple_walk( + self.node, + text_callback, + container + ) + return container.text + + cdef inline LexborNode _get_node(self): + cdef LexborNode node + if self._is_fragment_root: + node = self.parent + else: + node = self + return node + + def css(self, str query): + """Evaluate CSS selector against current node and its child nodes. + + Matches pattern `query` against HTML tree. + `CSS selectors reference `_. + + Special selectors: + + - parser.css('p:lexbor-contains("awesome" i)') -- case-insensitive contains + - parser.css('p:lexbor-contains("awesome")') -- case-sensitive contains + + + Parameters + ---------- + query : str + CSS selector (e.g. "div > :nth-child(2n+1):not(:has(a))"). + + Returns + ------- + selector : list of `Node` objects + """ + return self.parser.selector.find(query, self._get_node()) + + def css_first(self, str query, default=None, bool strict=False): + """Same as `css` but returns only the first match. + + When `strict=False` stops at the first match. Works faster. + + Parameters + ---------- + + query : str + default : Any, default None + Default value to return if there is no match. + strict: bool, default False + Set to True if you want to check if there is strictly only one match in the document. + + + Returns + ------- + selector : `LexborNode` object + """ + if strict: + results = self.parser.selector.find(query, self._get_node()) + else: + results = self.parser.selector.find_first(query, self._get_node()) + n_results = len(results) + if n_results > 0: + if strict and n_results > 1: + raise ValueError("Expected 1 match, but found %s matches" % n_results) + return results[0] + return default + + def any_css_matches(self, tuple selectors): + """Returns True if any of CSS selectors matches a node""" + for selector in selectors: + if self.parser.selector.any_matches(selector, self): + return True + return False + + def css_matches(self, str selector): + """Returns True if CSS selector matches a node.""" + return bool(self.parser.selector.any_matches(selector, self)) + + def __repr__(self): + return '' % self.tag + + @property + def tag_id(self): + cdef lxb_tag_id_t tag_id = lxb_dom_node_tag_id_noi(self.node) + return tag_id + + @property + def tag(self): + """Return the name of the current tag (e.g. div, p, img). + + For for non-tag nodes, returns the following names: + + * `-text` - text node + * `-document` - document node + * `-comment` - comment node + + This + + Returns + ------- + text : str + """ + + cdef lxb_char_t *c_text + cdef size_t str_len = 0 + if self.tag_id in [LXB_TAG__EM_DOCTYPE, LXB_TAG__TEXT, LXB_TAG__EM_COMMENT]: + return _TAG_TO_NAME[self.tag_id] + c_text = lxb_dom_element_qualified_name( self.node, &str_len) + text = None + if c_text: + text = c_text.decode(_ENCODING) + return text + + def decompose(self, bool recursive=True): + """Remove the current node from the tree. + + Parameters + ---------- + recursive : bool, default True + Whenever to delete all its child nodes + + Examples + -------- + + >>> tree = LexborHTMLParser(html) + >>> for tag in tree.css('script'): + >>> tag.decompose() + + """ + if self.node == lxb_dom_document_root(&self.parser.document.dom_document): + raise SelectolaxError("Decomposing the root node is not allowed.") + + if recursive: + node_remove_deep( self.node) + else: + lxb_dom_node_remove( self.node) + + def strip_tags(self, list tags, bool recursive = False): + """Remove specified tags from the HTML tree. + + Parameters + ---------- + tags : list + List of tags to remove. + recursive : bool, default True + Whenever to delete all its child nodes + + Examples + -------- + + >>> tree = LexborHTMLParser('
Hello world!
') + >>> tags = ['head', 'style', 'script', 'xmp', 'iframe', 'noembed', 'noframes'] + >>> tree.strip_tags(tags) + >>> tree.html + '
Hello world!
' + + """ + cdef LexborNode element + for tag in tags: + for element in self.css(tag): + element.decompose(recursive=recursive) + + @property + def attributes(self): + """Get all attributes that belong to the current node. + + The value of empty attributes is None. + + Returns + ------- + attributes : dictionary of all attributes. + + Examples + -------- + + >>> tree = LexborHTMLParser("
") + >>> node = tree.css_first('div') + >>> node.attributes + {'data': None, 'id': 'my_id'} + """ + cdef lxb_dom_attr_t *attr = lxb_dom_element_first_attribute_noi( self.node) + cdef size_t str_len = 0 + attributes = dict() + + if not _is_node_type(self.node, LXB_DOM_NODE_TYPE_ELEMENT): + return attributes + + while attr != NULL: + key = lxb_dom_attr_local_name_noi(attr, &str_len) + value = lxb_dom_attr_value_noi(attr, &str_len) + + if value: + py_value = value.decode(_ENCODING) + else: + py_value = None + attributes[key.decode(_ENCODING)] = py_value + + attr = attr.next + return attributes + + @property + def attrs(self): + """A dict-like object that is similar to the ``attributes`` property, but operates directly on the Node data. + + .. warning:: Use ``attributes`` instead, if you don't want to modify Node attributes. + + Returns + ------- + attributes : Attributes mapping object. + + Examples + -------- + + >>> tree = LexborHTMLParser("
") + >>> node = tree.css_first('div') + >>> node.attrs +
+ >>> node.attrs['id'] + 'a' + >>> node.attrs['foo'] = 'bar' + >>> del node.attrs['id'] + >>> node.attributes + {'foo': 'bar'} + >>> node.attrs['id'] = 'new_id' + >>> node.html + '
' + """ + cdef LexborAttributes attributes = LexborAttributes.create( self.node) + return attributes + + @property + def id(self): + """Get the id attribute of the node. + + Returns None if id does not set. + + Returns + ------- + text : str + """ + cdef char * key = 'id' + cdef size_t str_len + cdef lxb_dom_attr_t * attr = lxb_dom_element_attr_by_name( + self.node, + key, 2 + ) + if attr != NULL: + value = lxb_dom_attr_value_noi(attr, &str_len) + return value.decode(_ENCODING) if value else None + return None + + def iter(self, bool include_text = False, bool skip_empty = False): + """Iterate over direct children of this node. + + Parameters + ---------- + include_text : bool, optional + When ``True``, yield text nodes in addition to element nodes. Defaults + to ``False``. + skip_empty : bool, optional + When ``include_text`` is ``True``, ignore text nodes made up solely + of ASCII whitespace (space, tab, newline, form feed or carriage + return). Defaults to ``False``. + + Yields + ------ + LexborNode + Child nodes on the same tree level as this node, filtered according + to the provided options. + """ + + cdef lxb_dom_node_t *node = self.node.first_child + cdef LexborNode next_node + + while node != NULL: + if node.type == LXB_DOM_NODE_TYPE_TEXT and not include_text: + node = node.next + continue + if node.type == LXB_DOM_NODE_TYPE_TEXT and include_text and skip_empty and is_empty_text_node(node): + node = node.next + continue + + next_node = LexborNode.new( node, self.parser) + yield next_node + node = node.next + + def __iter__(self): + return self.iter() + + def __next__(self): + return self.next + + def unwrap(self, bint delete_empty=False): + """Replace node with whatever is inside this node. + + Does nothing if you perform unwrapping second time on the same node. + + Parameters + ---------- + delete_empty : bool, default False + If True, removes empty tags. + + Examples + -------- + + >>> tree = LexborHTMLParser("
Hello world!
") + >>> tree.css_first('i').unwrap() + >>> tree.html + '
Hello world!
' + + Note: by default, empty tags are ignored, use "delete_empty" to change this. + """ + + if node_is_removed( self.node) == 1: + logger.error("Attempt to unwrap removed node. Does nothing.") + return + + if self.node.first_child == NULL: + if delete_empty: + lxb_dom_node_remove( self.node) + return + cdef lxb_dom_node_t * next_node + cdef lxb_dom_node_t * current_node + + if self.node.first_child.next != NULL: + current_node = self.node.first_child + next_node = current_node.next + + while next_node != NULL: + next_node = current_node.next + lxb_dom_node_insert_before(self.node, current_node) + current_node = next_node + else: + lxb_dom_node_insert_before(self.node, self.node.first_child) + lxb_dom_node_remove( self.node) + + def unwrap_tags(self, list tags, bint delete_empty = False): + """Unwraps specified tags from the HTML tree. + + Works the same as the ``unwrap`` method, but applied to a list of tags. + + Parameters + ---------- + tags : list + List of tags to remove. + delete_empty : bool, default False + If True, removes empty tags. + + Examples + -------- + + >>> tree = LexborHTMLParser("
Hello world!
") + >>> tree.body.unwrap_tags(['i','a']) + >>> tree.body.html + '
Hello world!
' + + Note: by default, empty tags are ignored, use "delete_empty" to change this. + """ + cdef LexborNode element + for tag in tags: + for element in self.css(tag): + element.unwrap(delete_empty) + + def merge_text_nodes(self): + """Iterates over all text nodes and merges all text nodes that are close to each other. + + This is useful for text extraction. + Use it when you need to strip HTML tags and merge "dangling" text. + + Examples + -------- + + >>> tree = LexborHTMLParser("

John

Doe

") + >>> node = tree.css_first('div') + >>> tree.unwrap_tags(["strong"]) + >>> tree.text(deep=True, separator=" ", strip=True) + "J ohn Doe" # Text extraction produces an extra space because the strong tag was removed. + >>> node.merge_text_nodes() + >>> tree.text(deep=True, separator=" ", strip=True) + "John Doe" + """ + cdef lxb_dom_node_t *node = self.node.first_child + cdef lxb_dom_node_t *next_node + cdef lxb_char_t *left_text + cdef lxb_char_t *right_text + cdef size_t left_length, right_length + + while node != NULL: + next_node = node.next + if node.type == LXB_DOM_NODE_TYPE_TEXT and node.prev and node.prev.type == LXB_DOM_NODE_TYPE_TEXT: + left_text = lxb_dom_node_text_content(node.prev, &left_length) + right_text = lxb_dom_node_text_content(node, &right_length) + if left_text and right_text: + combined = ( left_text[:left_length]) + ( right_text[:right_length]) + lxb_dom_node_text_content_set(node, combined, len(combined)) + lxb_dom_node_remove(node.prev) + + if left_text is not NULL: + lxb_dom_document_destroy_text_noi(self.node.owner_document, left_text) + if right_text is not NULL: + lxb_dom_document_destroy_text_noi(self.node.owner_document, right_text) + + if node.first_child: + LexborNode.new(node, self.parser).merge_text_nodes() + node = next_node + + def traverse(self, bool include_text = False, bool skip_empty = False): + """Depth-first traversal starting at the current node. + + Parameters + ---------- + include_text : bool, optional + When ``True``, include text nodes in the traversal sequence. Defaults + to ``False``. + skip_empty : bool, optional + Skip text nodes that contain only ASCII whitespace (space, tab, + newline, form feed or carriage return) when ``include_text`` is + ``True``. Defaults to ``False``. + + Yields + ------ + LexborNode + Nodes encountered in depth-first order beginning with the current + node, filtered according to the provided options. + """ + cdef lxb_dom_node_t * root = self.node + cdef lxb_dom_node_t * node = root + cdef LexborNode lxb_node + + while node != NULL: + if include_text or node.type != LXB_DOM_NODE_TYPE_TEXT: + if not skip_empty or not is_empty_text_node(node): + lxb_node = LexborNode.new( node, self.parser) + yield lxb_node + + if node.first_child != NULL: + node = node.first_child + else: + while node != root and node.next == NULL: + node = node.parent + if node == root: + break + node = node.next + + def replace_with(self, str_or_LexborNode value): + """Replace current Node with specified value. + + Parameters + ---------- + value : str, bytes or Node + The text or Node instance to replace the Node with. + When a text string is passed, it's treated as text. All HTML tags will be escaped. + Convert and pass the ``Node`` object when you want to work with HTML. + Does not clone the ``Node`` object. + All future changes to the passed ``Node`` object will also be taken into account. + + Examples + -------- + + >>> tree = LexborHTMLParser('
Get Laptop
') + >>> img = tree.css_first('img') + >>> img.replace_with(img.attributes.get('alt', '')) + >>> tree.body.child.html + '
Get Laptop
' + + >>> html_parser = LexborHTMLParser('
Get
') + >>> html_parser2 = LexborHTMLParser('
Test
') + >>> img_node = html_parser.css_first('img') + >>> img_node.replace_with(html_parser2.body.child) + '
Get
Test
' + """ + cdef lxb_dom_node_t * new_node + + if isinstance(value, (str, bytes, unicode)): + bytes_val = to_bytes(value) + new_node = lxb_dom_document_create_text_node( + &self.parser.document.dom_document, + bytes_val, len(bytes_val) + ) + if new_node == NULL: + raise SelectolaxError("Can't create a new node") + lxb_dom_node_insert_before(self.node, new_node) + lxb_dom_node_remove( self.node) + elif isinstance(value, LexborNode): + new_node = lxb_dom_document_import_node( + &self.parser.document.dom_document, + value.node, + True + ) + if new_node == NULL: + raise SelectolaxError("Can't create a new node") + lxb_dom_node_insert_before(self.node, new_node) + lxb_dom_node_remove( self.node) + else: + raise SelectolaxError("Expected a string or LexborNode instance, but %s found" % type(value).__name__) + + def insert_before(self, str_or_LexborNode value): + """ + Insert a node before the current Node. + + Parameters + ---------- + value : str, bytes or Node + The text or Node instance to insert before the Node. + When a text string is passed, it's treated as text. All HTML tags will be escaped. + Convert and pass the ``Node`` object when you want to work with HTML. + Does not clone the ``Node`` object. + All future changes to the passed ``Node`` object will also be taken into account. + + Examples + -------- + + >>> tree = LexborHTMLParser('
Get Laptop
') + >>> img = tree.css_first('img') + >>> img.insert_before(img.attributes.get('alt', '')) + >>> tree.body.child.html + '
Get LaptopLaptop
' + + >>> html_parser = LexborHTMLParser('
Get
') + >>> html_parser2 = LexborHTMLParser('
Test
') + >>> img_node = html_parser.css_first('img') + >>> img_node.insert_before(html_parser2.body.child) +
Get
Test
' + """ + cdef lxb_dom_node_t * new_node + + if isinstance(value, (str, bytes, unicode)): + bytes_val = to_bytes(value) + new_node = lxb_dom_document_create_text_node( + &self.parser.document.dom_document, + bytes_val, len(bytes_val) + ) + if new_node == NULL: + raise SelectolaxError("Can't create a new node") + lxb_dom_node_insert_before(self.node, new_node) + elif isinstance(value, LexborNode): + new_node = lxb_dom_document_import_node( + &self.parser.document.dom_document, + value.node, + True + ) + if new_node == NULL: + raise SelectolaxError("Can't create a new node") + lxb_dom_node_insert_before(self.node, new_node) + else: + raise SelectolaxError("Expected a string or LexborNode instance, but %s found" % type(value).__name__) + + def insert_after(self, str_or_LexborNode value): + """ + Insert a node after the current Node. + + Parameters + ---------- + value : str, bytes or Node + The text or Node instance to insert after the Node. + When a text string is passed, it's treated as text. All HTML tags will be escaped. + Convert and pass the ``Node`` object when you want to work with HTML. + Does not clone the ``Node`` object. + All future changes to the passed ``Node`` object will also be taken into account. + + Examples + -------- + + >>> tree = LexborHTMLParser('
Get Laptop
') + >>> img = tree.css_first('img') + >>> img.insert_after(img.attributes.get('alt', '')) + >>> tree.body.child.html + '
Get LaptopLaptop
' + + >>> html_parser = LexborHTMLParser('
Get
') + >>> html_parser2 = LexborHTMLParser('
Test
') + >>> img_node = html_parser.css_first('img') + >>> img_node.insert_after(html_parser2.body.child) +
Get
Test
' + """ + cdef lxb_dom_node_t * new_node + + if isinstance(value, (str, bytes, unicode)): + bytes_val = to_bytes(value) + new_node = lxb_dom_document_create_text_node( + &self.parser.document.dom_document, + bytes_val, len(bytes_val) + ) + if new_node == NULL: + raise SelectolaxError("Can't create a new node") + lxb_dom_node_insert_after(self.node, new_node) + elif isinstance(value, LexborNode): + new_node = lxb_dom_document_import_node( + &self.parser.document.dom_document, + value.node, + True + ) + if new_node == NULL: + raise SelectolaxError("Can't create a new node") + lxb_dom_node_insert_after(self.node, new_node) + else: + raise SelectolaxError("Expected a string or LexborNode instance, but %s found" % type(value).__name__) + + def insert_child(self, str_or_LexborNode value): + """ + Insert a node inside (at the end of) the current Node. + + Parameters + ---------- + value : str, bytes or Node + The text or Node instance to insert inside the Node. + When a text string is passed, it's treated as text. All HTML tags will be escaped. + Convert and pass the ``Node`` object when you want to work with HTML. + Does not clone the ``Node`` object. + All future changes to the passed ``Node`` object will also be taken into account. + + Examples + -------- + + >>> tree = LexborHTMLParser('
Get
') + >>> div = tree.css_first('div') + >>> div.insert_child('Laptop') + >>> tree.body.child.html + '
Get Laptop
' + + >>> html_parser = LexborHTMLParser('
Get
Laptop
') + >>> html_parser2 = LexborHTMLParser('
Test
') + >>> span_node = html_parser.css_first('span') + >>> span_node.insert_child(html_parser2.body.child) +
Get
Laptop
Test
' + """ + cdef lxb_dom_node_t * new_node + + if isinstance(value, (str, bytes, unicode)): + bytes_val = to_bytes(value) + new_node = lxb_dom_document_create_text_node( + &self.parser.document.dom_document, + bytes_val, len(bytes_val) + ) + if new_node == NULL: + raise SelectolaxError("Can't create a new node") + lxb_dom_node_insert_child(self.node, new_node) + elif isinstance(value, LexborNode): + new_node = lxb_dom_document_import_node( + &self.parser.document.dom_document, + value.node, + True + ) + if new_node == NULL: + raise SelectolaxError("Can't create a new node") + lxb_dom_node_insert_child(self.node, new_node) + else: + raise SelectolaxError("Expected a string or LexborNode instance, but %s found" % type(value).__name__) + + @property + def raw_value(self): + """Return the raw (unparsed, original) value of a node. + + Currently, works on text nodes only. + + Returns + ------- + + raw_value : bytes + + Examples + -------- + + >>> html_parser = LexborHTMLParser('
<test>
') + >>> selector = html_parser.css_first('div') + >>> selector.child.html + '<test>' + >>> selector.child.raw_value + b'<test>' + """ + raise NotImplementedError("This features is not supported by the lexbor backend. Please use Modest backend.") + + def scripts_contain(self, str query): + """Returns True if any of the script tags contain specified text. + + Caches script tags on the first call to improve performance. + + Parameters + ---------- + query : str + The query to check. + + """ + cdef LexborNode node + if self.parser.cached_script_texts is None: + nodes = self.parser.selector.find('script', self) + text_nodes = [] + for node in nodes: + node_text = node.text(deep=True) + if node_text: + text_nodes.append(node_text) + self.parser.cached_script_texts = text_nodes + + for text in self.parser.cached_script_texts: + if query in text: + return True + return False + + def script_srcs_contain(self, tuple queries): + """Returns True if any of the script SRCs attributes contain on of the specified text. + + Caches values on the first call to improve performance. + + Parameters + ---------- + queries : tuple of str + + """ + cdef LexborNode node + if self.parser.cached_script_srcs is None: + nodes = self.parser.selector.find('script', self) + src_nodes = [] + for node in nodes: + node_src = node.attrs.get('src') + if node_src: + src_nodes.append(node_src) + self.parser.cached_script_srcs = src_nodes + + for text in self.parser.cached_script_srcs: + for query in queries: + if query in text: + return True + return False + + def remove(self, bool recursive=True): + """An alias for the decompose method.""" + self.decompose(recursive) + + def select(self, query=None): + """Select nodes given a CSS selector. + + Works similarly to the the ``css`` method, but supports chained filtering and extra features. + + Parameters + ---------- + query : str or None + The CSS selector to use when searching for nodes. + + Returns + ------- + selector : The `Selector` class. + """ + return LexborSelector(self._get_node(), query) + + def __eq__(self, other): + if isinstance(other, str): + return self.html == other + if not isinstance(other, LexborNode): + return False + return self.html == other.html + + @property + def text_content(self): + """Returns the text of the node if it is a text node. + + Returns None for other nodes. + Unlike the ``text`` method, does not include child nodes. + + Returns + ------- + text : str or None. + """ + cdef unsigned char * text + cdef lxb_dom_node_t * node = self.node.first_child + cdef TextContainer container + if not _is_node_type(self.node, LXB_DOM_NODE_TYPE_TEXT): + return None + + text = lexbor_str_data_noi(&( self.node).data) + if text != NULL: + container = TextContainer.new_with_defaults() + py_text = text.decode(_ENCODING) + container.append(py_text) + return container.text + return None + + @property + def comment_content(self) -> str | None: + """Extract the textual content of an HTML comment node. + + Returns + ------- + str or None + Comment text with surrounding whitespace removed, or ``None`` if + the current node is not a comment or the comment markup cannot be + parsed. + + Examples + -------- + >>> parse_fragment("")[0].comment_content + 'hello' + >>> parse_fragment("
not a comment
")[0].comment_content is None + True + """ + if not self.is_comment_node: + return None + try: + return extract_html_comment(self.html) + except (ValueError, AttributeError, IndexError): + return None + + @property + def inner_html(self) -> str | None: + """Return HTML representation of the child nodes. + + Works similar to innerHTML in JavaScript. + Unlike the `.html` property, does not include the current node. + Can be used to set HTML as well. See the setter docstring. + + Returns + ------- + text : str | None + """ + + cdef lexbor_str_t *lxb_str + cdef lxb_status_t status + + lxb_str = lexbor_str_create() + status = lxb_html_serialize_deep_str(self.node, lxb_str) + if status == 0 and lxb_str.data: + html = lxb_str.data.decode(_ENCODING).replace('<-undef>', '') + lexbor_str_destroy(lxb_str, self.node.owner_document.text, True) + return html + return None + + @inner_html.setter + def inner_html(self, str html) -> None: + """Set inner HTML to the specified HTML. + + Replaces existing data inside the node. + Works similar to innerHTML in JavaScript. + + Parameters + ---------- + html : str | None + + """ + cdef bytes bytes_val + bytes_val = html.encode("utf-8") + lxb_html_element_inner_html_set( + self.node, + bytes_val, len(bytes_val) + ) + + def clone(self) -> LexborNode: + """Clone the current node. + + You can use to do temporary modifications without affecting the original HTML tree. + + It is tied to the current parser instance. + Gets destroyed when parser instance is destroyed. + """ + cdef lxb_dom_node_t * node + node = lxb_dom_node_clone( self.node, 1) + return LexborNode.new(node, self.parser) + + @property + def is_element_node(self) -> bool: + """Return True if the node represents an element node.""" + return _is_node_type(self.node, LXB_DOM_NODE_TYPE_ELEMENT) + + @property + def is_text_node(self) -> bool: + """Return True if the node represents a text node.""" + return _is_node_type(self.node, LXB_DOM_NODE_TYPE_TEXT) + + @property + def is_comment_node(self) -> bool: + """Return True if the node represents a comment node.""" + return _is_node_type(self.node, LXB_DOM_NODE_TYPE_COMMENT) + + @property + def is_document_node(self) -> bool: + """Return True if the node represents a document node.""" + return _is_node_type(self.node, LXB_DOM_NODE_TYPE_DOCUMENT) + + @property + def is_empty_text_node(self) -> bool: + """Check whether the current node is an empty text node. + + Returns + ------- + bool + ``True`` when the node is a text node whose character data consists + only of ASCII whitespace characters (space, tab, newline, form feed + or carriage return). + """ + return is_empty_text_node(self.node) + + +@cython.internal +@cython.final +cdef class TextContainer: + cdef str _text + cdef str separator + cdef bint strip + + @staticmethod + cdef TextContainer new_with_defaults(): + cdef TextContainer cls = TextContainer.__new__(TextContainer) + cls._text = '' + cls.separator = '' + cls.strip = False + return cls + + def __init__(self, str separator = '', bool strip = False): + self._text = "" + self.separator = separator + self.strip = strip + + def append(self, str node_text): + if self.strip: + self._text += node_text.strip() + self.separator + else: + self._text += node_text + self.separator + + @property + def text(self): + if self.separator and self._text and self._text.endswith(self.separator): + self._text = self._text[:-len(self.separator)] + return self._text + +cdef lexbor_action_t text_callback(lxb_dom_node_t *node, void *ctx): + cdef unsigned char *text + cdef lxb_tag_id_t tag_id = lxb_dom_node_tag_id_noi(node) + if tag_id != LXB_TAG__TEXT: + return LEXBOR_ACTION_OK + + text = lexbor_str_data_noi(&( node).char_data.data) + if not text: + return LEXBOR_ACTION_OK + + try: + py_str = text.decode(_ENCODING, "replace") + + except Exception as e: + PyErr_SetNone(e) + return LEXBOR_ACTION_STOP + + cdef TextContainer cls + cls = ctx + cls.append(py_str) + return LEXBOR_ACTION_OK + +cdef lxb_status_t serialize_fragment(lxb_dom_node_t *node, lexbor_str_t *lxb_str): + cdef lxb_status_t status + while node != NULL: + status = lxb_html_serialize_tree_str(node, lxb_str) + if status != LXB_STATUS_OK: + return status + node = node.next + + return LXB_STATUS_OK + +cdef inline bint _is_node_type(lxb_dom_node_t *node, lxb_dom_node_type_t expected_type): + return node != NULL and node.type == expected_type diff --git a/dist/HandoverSystem/_internal/selectolax/lexbor/node_remove.pxi b/dist/HandoverSystem/_internal/selectolax/lexbor/node_remove.pxi new file mode 100644 index 0000000..ba65aa1 --- /dev/null +++ b/dist/HandoverSystem/_internal/selectolax/lexbor/node_remove.pxi @@ -0,0 +1,29 @@ + +cdef lxb_dom_node_t * node_remove_deep(lxb_dom_node_t* root): + cdef lxb_dom_node_t *tmp + cdef lxb_dom_node_t *node = root + + while node != NULL: + if node.first_child != NULL: + node = node.first_child + else: + while node != root and node.next == NULL: + tmp = node.parent + lxb_dom_node_remove(node) + node = tmp + + if node == root: + lxb_dom_node_remove(node) + break + + tmp = node.next + lxb_dom_node_remove(node) + node = tmp + + return NULL + +cdef bint node_is_removed(lxb_dom_node_t* node): + if node.parent == NULL and node.next == NULL \ + and node.prev == NULL: + return 1 + return 0 diff --git a/dist/HandoverSystem/_internal/selectolax/lexbor/selection.pxi b/dist/HandoverSystem/_internal/selectolax/lexbor/selection.pxi new file mode 100644 index 0000000..c30aa75 --- /dev/null +++ b/dist/HandoverSystem/_internal/selectolax/lexbor/selection.pxi @@ -0,0 +1,217 @@ +cimport cython +from cpython.exc cimport PyErr_SetObject +from cpython.list cimport PyList_GET_SIZE + + +@cython.final +cdef class LexborCSSSelector: + + def __init__(self): + self._create_css_parser() + self.results = [] + self.current_node = None + + cdef int _create_css_parser(self) except -1: + cdef lxb_status_t status + + self.parser = lxb_css_parser_create() + status = lxb_css_parser_init(self.parser, NULL) + + if status != LXB_STATUS_OK: + PyErr_SetObject(SelectolaxError, "Can't initialize CSS parser.") + return -1 + + self.css_selectors = lxb_css_selectors_create() + status = lxb_css_selectors_init(self.css_selectors) + + if status != LXB_STATUS_OK: + PyErr_SetObject(SelectolaxError, "Can't initialize CSS selector.") + return -1 + + lxb_css_parser_selectors_set(self.parser, self.css_selectors) + + self.selectors = lxb_selectors_create() + status = lxb_selectors_init(self.selectors) + lxb_selectors_opt_set(self.selectors, LXB_SELECTORS_OPT_MATCH_ROOT) + if status != LXB_STATUS_OK: + PyErr_SetObject(SelectolaxError, "Can't initialize CSS selector.") + return -1 + return 0 + + cpdef list find(self, str query, LexborNode node): + return self._find(query, node, 0) + + cpdef list find_first(self, str query, LexborNode node): + return self._find(query, node, 1) + + cpdef list _find(self, str query, LexborNode node, bint only_first): + cdef lxb_css_selector_list_t* selectors + cdef lxb_char_t* c_selector + cdef lxb_css_selector_list_t * selectors_list + + if not isinstance(query, str): + raise TypeError("Query must be a string.") + + bytes_query = query.encode(_ENCODING) + selectors_list = lxb_css_selectors_parse(self.parser, bytes_query, len(bytes_query)) + + if selectors_list == NULL: + raise SelectolaxError("Can't parse CSS selector.") + + self.current_node = node + self.results = [] + if only_first: + status = lxb_selectors_find(self.selectors, node.node, selectors_list, + css_finder_callback_first, self) + else: + status = lxb_selectors_find(self.selectors, node.node, selectors_list, + css_finder_callback, self) + results = list(self.results) + self.results = [] + self.current_node = None + lxb_css_selector_list_destroy_memory(selectors_list) + return results + + cpdef int any_matches(self, str query, LexborNode node) except -1: + cdef lxb_css_selector_list_t * selectors + cdef lxb_char_t * c_selector + cdef lxb_css_selector_list_t * selectors_list + cdef int result + + if not isinstance(query, str): + raise TypeError("Query must be a string.") + + bytes_query = query.encode(_ENCODING) + selectors_list = lxb_css_selectors_parse(self.parser, bytes_query, len(query)) + + if selectors_list == NULL: + PyErr_SetObject(SelectolaxError, "Can't parse CSS selector.") + return -1 + + self.results = [] + status = lxb_selectors_find(self.selectors, node.node, selectors_list, + css_matcher_callback, self) + if status != LXB_STATUS_OK: + lxb_css_selector_list_destroy_memory(selectors_list) + PyErr_SetObject(SelectolaxError, "Can't parse CSS selector.") + return -1 + + result = PyList_GET_SIZE(self.results) > 0 + self.results = [] + lxb_css_selector_list_destroy_memory(selectors_list) + return result + + def __dealloc__(self): + if self.selectors != NULL: + lxb_selectors_destroy(self.selectors, True) + if self.parser != NULL: + lxb_css_parser_destroy(self.parser, True) + if self.css_selectors != NULL: + lxb_css_selectors_destroy(self.css_selectors, True) + + +cdef class LexborSelector: + """An advanced CSS selector that supports additional operations. + + Think of it as a toolkit that mimics some of the features of XPath. + + Please note, this is an experimental feature that can change in the future. + """ + cdef LexborNode node + cdef list nodes + + def __init__(self, LexborNode node, query): + self.node = node + self.nodes = self.node.parser.selector.find(query, self.node) if query else [node, ] + + cpdef css(self, str query): + """Evaluate CSS selector against current scope.""" + raise NotImplementedError("This features is not supported by the lexbor backend. Please use Modest backend.") + + @property + def matches(self) -> list: + """Returns all possible matches""" + return self.nodes + + @property + def any_matches(self) -> bool: + """Returns True if there are any matches""" + return bool(self.nodes) + + def text_contains(self, str text, bool deep=True, str separator='', bool strip=False) -> LexborSelector: + """Filter all current matches given text.""" + cdef list nodes = [] + for node in self.nodes: + node_text = node.text(deep=deep, separator=separator, strip=strip) + if node_text and text in node_text: + nodes.append(node) + self.nodes = nodes + return self + + def any_text_contains(self, str text, bool deep=True, str separator='', bool strip=False) -> bool: + """Returns True if any node in the current search scope contains specified text""" + cdef LexborNode node + for node in self.nodes: + node_text = node.text(deep=deep, separator=separator, strip=strip) + if node_text and text in node_text: + return True + return False + + def attribute_longer_than(self, str attribute, int length, str start = None) -> LexborSelector: + """Filter all current matches by attribute length. + + Similar to `string-length` in XPath. + """ + cdef list nodes = [] + for node in self.nodes: + attr = node.attributes.get(attribute) + if not attr: + continue + if attr and start and start in attr: + attr = attr[attr.find(start) + len(start):] + if len(attr) > length: + nodes.append(node) + self.nodes = nodes + return self + + def any_attribute_longer_than(self, str attribute, int length, str start = None) -> bool: + """Returns True any href attribute longer than a specified length. + + Similar to `string-length` in XPath. + """ + cdef LexborNode node + for node in self.nodes: + attr = node.attributes.get(attribute) + if attr and start and start in attr: + attr = attr[attr.find(start) + len(start):] + if len(attr) > length: + return True + return False + + def __bool__(self): + return bool(self.nodes) + + +cdef lxb_status_t css_finder_callback(lxb_dom_node_t *node, lxb_css_selector_specificity_t *spec, void *ctx): + cdef LexborNode lxb_node + cdef LexborCSSSelector cls + cls = ctx + lxb_node = LexborNode.new( node, cls.current_node.parser) + cls.results.append(lxb_node) + return LXB_STATUS_OK + +cdef lxb_status_t css_finder_callback_first(lxb_dom_node_t *node, lxb_css_selector_specificity_t *spec, void *ctx): + cdef LexborNode lxb_node + cdef LexborCSSSelector cls + cls = ctx + lxb_node = LexborNode.new( node, cls.current_node.parser) + cls.results.append(lxb_node) + return LXB_STATUS_STOP + + +cdef lxb_status_t css_matcher_callback(lxb_dom_node_t *node, lxb_css_selector_specificity_t *spec, void *ctx): + cdef LexborNode lxb_node + cdef LexborCSSSelector cls + cls = ctx + cls.results.append(True) + return LXB_STATUS_STOP diff --git a/dist/HandoverSystem/_internal/selectolax/lexbor/util.pxi b/dist/HandoverSystem/_internal/selectolax/lexbor/util.pxi new file mode 100644 index 0000000..2e42ae7 --- /dev/null +++ b/dist/HandoverSystem/_internal/selectolax/lexbor/util.pxi @@ -0,0 +1,114 @@ +include "../utils.pxi" + +import re + + +def create_tag(tag: str): + """ + Given an HTML tag name, e.g. `"div"`, create a single empty node for that tag, + e.g. `"
"`. + + Use `LexborHTMLParser().create_node(..)` if you need to create a node tied to a specific parser instance. + """ + return LexborHTMLParser(f"<{tag}>", is_fragment=True).root + + +def parse_fragment(html: str): + """ + Given HTML, parse it into a list of Nodes, such that the nodes + correspond to the given HTML. + + For contrast, HTMLParser adds ``, ``, and `` tags + if they are missing. This function does not add these tags. + """ + return do_parse_fragment(html, LexborHTMLParser) + + +def extract_html_comment(text: str) -> str: + """Extract the inner content of an HTML comment string. + + Args: + text: Raw HTML comment, including the ```` markers. + + Returns: + The comment body with surrounding whitespace stripped. + + Raises: + ValueError: If the input is not a well-formed HTML comment. + + Examples: + >>> extract_html_comment("") + 'hello' + """ + if match := re.fullmatch(r"\s*\s*", text, flags=re.DOTALL): + return match.group(1).strip() + msg = "Input is not a valid HTML comment" + raise ValueError(msg) + + +cdef inline bint is_empty_text_node(lxb_dom_node_t *text_node): + """ + Check whether a node is a text node made up solely of HTML ASCII whitespace. + + Parameters + ---------- + text_node : lxb_dom_node_t * + Pointer to the node that should be inspected. + + Returns + ------- + bint + ``True`` if ``text_node`` is a text node whose character data contains + only space, tab, newline, form feed, or carriage return characters; + otherwise ``False``. + """ + if text_node == NULL or text_node.type != LXB_DOM_NODE_TYPE_TEXT: + return False + + cdef lxb_dom_character_data_t *text_character_data = text_node + cdef lexbor_str_t *text_buffer = &text_character_data.data + cdef size_t text_length = text_buffer.length + cdef lxb_char_t *text_bytes = text_buffer.data + + return _is_whitespace_only(text_bytes, text_length) + + +cdef inline bint _is_whitespace_only(const lxb_char_t *buffer, size_t buffer_length) nogil: + """ + Determine whether a byte buffer consists only of HTML ASCII whitespace. + + Parameters + ---------- + buffer : const lxb_char_t * + Pointer to the buffer to inspect. + buffer_length : size_t + Number of bytes available in ``buffer``. + + Returns + ------- + bint + ``True`` if ``buffer`` is ``NULL``, empty, or contains only space + (0x20), tab (0x09), line feed (0x0A), form feed (0x0C), or carriage + return (0x0D) bytes; otherwise ``False``. + + Notes + ----- + Mirrors Lexbor's ``lexbor_utils_whitespace`` macro and stays inline to + keep the GIL released in hot loops. + """ + cdef const lxb_char_t *cursor = buffer + cdef const lxb_char_t *end = buffer + buffer_length + cdef lxb_char_t current_char + + if buffer == NULL or buffer_length == 0: + return True + + # Inline whitespace check mirroring lexbor_utils_whitespace(chr, !=, &&) + while cursor < end: + current_char = cursor[0] + if (current_char != ' ' and current_char != '\t' and current_char != '\n' + and current_char != '\f' and current_char != '\r'): + return False + cursor += 1 + + return True diff --git a/dist/HandoverSystem/_internal/selectolax/modest/node.pxi b/dist/HandoverSystem/_internal/selectolax/modest/node.pxi new file mode 100644 index 0000000..2e4457f --- /dev/null +++ b/dist/HandoverSystem/_internal/selectolax/modest/node.pxi @@ -0,0 +1,992 @@ +cimport cython +from cpython.exc cimport PyErr_NoMemory + +from libc.stdlib cimport free +from libc.stdlib cimport malloc +from libc.stdlib cimport realloc +from libc.string cimport memcpy + +DEF _STACK_SIZE = 100 +DEF _ENCODING = 'UTF-8' + + +@cython.final +@cython.internal +cdef class Stack: + def __cinit__(self, size_t capacity=25): + self.capacity = capacity + self.top = 0 + self._stack = malloc(capacity * sizeof(myhtml_tree_node_t)) + if self._stack == NULL: + raise MemoryError("Failed to allocate memory for stack") + + def __dealloc__(self): + free(self._stack) + + cdef bint is_empty(self): + return self.top <= 0 + + cdef int push(self, myhtml_tree_node_t* res) except -1: + if self.top >= self.capacity: + if self.resize() < 0: + return -1 + self._stack[self.top] = res + self.top += 1 + + cdef myhtml_tree_node_t * pop(self): + self.top = self.top - 1 + return self._stack[self.top] + + cdef int resize(self) except -1: + self.capacity *= 2 + self._stack = realloc( self._stack, self.capacity * sizeof(myhtml_tree_node_t)) + if self._stack == NULL: + PyErr_NoMemory() + return -1 + return 0 + +cdef class _Attributes: + """A dict-like object that represents attributes.""" + cdef myhtml_tree_node_t * node + cdef unicode decode_errors + + @staticmethod + cdef _Attributes create(myhtml_tree_node_t *node, unicode decode_errors): + obj = <_Attributes>_Attributes.__new__(_Attributes) + obj.node = node + obj.decode_errors = decode_errors + return obj + + def __iter__(self): + cdef myhtml_tree_attr_t *attr = myhtml_node_attribute_first(self.node) + while attr: + if attr.key.data == NULL: + attr = attr.next + continue + key = attr.key.data.decode(_ENCODING, self.decode_errors) + attr = attr.next + yield key + + def __setitem__(self, str key, value): + value = str(value) + bytes_key = key.encode(_ENCODING) + bytes_value = value.encode(_ENCODING) + myhtml_attribute_remove_by_key(self.node, bytes_key, len(bytes_key)) + myhtml_attribute_add(self.node, bytes_key, len(bytes_key), bytes_value, len(bytes_value), + MyENCODING_UTF_8) + + def __delitem__(self, key): + try: + self.__getitem__(key) + except KeyError: + raise KeyError(key) + bytes_key = key.encode(_ENCODING) + myhtml_attribute_remove_by_key(self.node, bytes_key, len(bytes_key)) + + def __getitem__(self, str key): + bytes_key = key.encode(_ENCODING) + cdef myhtml_tree_attr_t * attr = myhtml_attribute_by_key(self.node, bytes_key, len(bytes_key)) + if attr != NULL: + if attr.value.data != NULL: + return attr.value.data.decode(_ENCODING, self.decode_errors) + elif attr.key.data != NULL: + return None + raise KeyError(key) + + def __len__(self): + return len(list(self.__iter__())) + + def keys(self): + return self.__iter__() + + def items(self): + for key in self.__iter__(): + yield key, self[key] + + def values(self): + for key in self.__iter__(): + yield self[key] + + def get(self, key, default=None): + try: + return self[key] + except KeyError: + return default + + def sget(self, key, default=""): + """Same as get, but returns empty strings instead of None values for empty attributes.""" + try: + val = self[key] + if val is None: + val = "" + return val + except KeyError: + return default + + def __contains__(self, key): + try: + self[key] + except KeyError: + return False + else: + return True + + def __repr__(self): + cdef const char *c_text + c_text = myhtml_tag_name_by_id(self.node.tree, self.node.tag_id, NULL) + tag_name = c_text.decode(_ENCODING, 'ignore') if c_text != NULL else 'unknown' + return "<%s attributes, %s items>" % (tag_name, len(self)) + +ctypedef fused str_or_Node: + str + bytes + Node + +cdef class Node: + """A class that represents HTML node (element).""" + cdef myhtml_tree_node_t *node + cdef public HTMLParser parser + + @staticmethod + cdef Node new(myhtml_tree_node_t *node, HTMLParser parser): + # custom __init__ for C, because __cinit__ doesn't accept C types + cdef Node cls = Node.__new__(Node) + cls.node = node + # Keep reference to the selector object, so myhtml structures will not be garbage collected prematurely + cls.parser = parser + return cls + + @property + def attributes(self): + """Get all attributes that belong to the current node. + + The value of empty attributes is None. + + Returns + ------- + attributes : dictionary of all attributes. + + Examples + -------- + + >>> tree = HTMLParser("
") + >>> node = tree.css_first('div') + >>> node.attributes + {'data': None, 'id': 'my_id'} + """ + cdef myhtml_tree_attr_t *attr = myhtml_node_attribute_first(self.node) + attributes = dict() + + while attr: + if attr.key.data == NULL: + attr = attr.next + continue + key = attr.key.data.decode(_ENCODING, self.parser.decode_errors) + if attr.value.data: + value = attr.value.data.decode(_ENCODING, self.parser.decode_errors) + else: + value = None + attributes[key] = value + + attr = attr.next + + return attributes + + @property + def attrs(self): + """A dict-like object that is similar to the ``attributes`` property, but operates directly on the Node data. + + .. warning:: Use ``attributes`` instead, if you don't want to modify Node attributes. + + Returns + ------- + attributes : Attributes mapping object. + + Examples + -------- + + >>> tree = HTMLParser("
") + >>> node = tree.css_first('div') + >>> node.attrs +
+ >>> node.attrs['id'] + 'a' + >>> node.attrs['foo'] = 'bar' + >>> del node.attrs['id'] + >>> node.attributes + {'foo': 'bar'} + >>> node.attrs['id'] = 'new_id' + >>> node.html + '
' + """ + cdef _Attributes attributes = _Attributes.create(self.node, self.parser.decode_errors) + return attributes + + @property + def mem_id(self): + """Get the mem_id attribute of the node. + + Returns + ------- + text : int + """ + return self.node + + @property + def id(self): + """Get the id attribute of the node. + + Returns None if id does not set. + + Returns + ------- + text : str + """ + cdef char* key = 'id' + cdef myhtml_tree_attr_t *attr + attr = myhtml_attribute_by_key(self.node, key, 2) + return None if attr == NULL else attr.value.data.decode(_ENCODING, self.parser.decode_errors) + + def __hash__(self): + return self.mem_id + + def text(self, bool deep=True, str separator='', bool strip=False): + """Returns the text of the node including text of all its child nodes. + + Parameters + ---------- + strip : bool, default False + If true, calls ``str.strip()`` on each text part to remove extra white spaces. + separator : str, default '' + The separator to use when joining text from different nodes. + deep : bool, default True + If True, includes text from all child nodes. + + Returns + ------- + text : str + + """ + text = "" + cdef const char* c_text + cdef myhtml_tree_node_t *node = self.node.child + + if not deep: + if self.node.tag_id == MyHTML_TAG__TEXT: + c_text = myhtml_node_text(self.node, NULL) + if c_text != NULL: + node_text = c_text.decode(_ENCODING, self.parser.decode_errors) + text = append_text(text, node_text, separator, strip) + + while node != NULL: + if node.tag_id == MyHTML_TAG__TEXT: + c_text = myhtml_node_text(node, NULL) + if c_text != NULL: + node_text = c_text.decode(_ENCODING, self.parser.decode_errors) + text = append_text(text, node_text, separator, strip) + node = node.next + else: + text = self._text_deep(self.node, separator=separator, strip=strip) + if separator and text and text.endswith(separator): + text = text[:-len(separator)] + return text + + cdef inline _text_deep(self, myhtml_tree_node_t *node, separator='', strip=False): + text = "" + cdef Stack stack = Stack(_STACK_SIZE) + cdef myhtml_tree_node_t* current_node = NULL + + if node.tag_id == MyHTML_TAG__TEXT: + c_text = myhtml_node_text(node, NULL) + if c_text != NULL: + node_text = c_text.decode(_ENCODING, self.parser.decode_errors) + text = append_text(text, node_text, separator, strip) + + if node.child == NULL: + return text + + stack.push(node.child) + + # Depth-first left-to-right tree traversal + while not stack.is_empty(): + current_node = stack.pop() + + if current_node != NULL: + if current_node.tag_id == MyHTML_TAG__TEXT: + c_text = myhtml_node_text(current_node, NULL) + if c_text != NULL: + node_text = c_text.decode(_ENCODING, self.parser.decode_errors) + text = append_text(text, node_text, separator, strip) + + if current_node.next is not NULL: + stack.push(current_node.next) + + if current_node.child is not NULL: + stack.push(current_node.child) + + return text + + def iter(self, include_text=False): + """Iterate over nodes on the current level. + + Parameters + ---------- + include_text : bool + If True, includes text nodes as well. + + Yields + ------- + node + """ + + cdef myhtml_tree_node_t *node = self.node.child + cdef Node next_node + + while node != NULL: + if node.tag_id == MyHTML_TAG__TEXT and not include_text: + node = node.next + continue + + next_node = Node.new(node, self.parser) + yield next_node + node = node.next + + def traverse(self, include_text=False): + """Iterate over all child and next nodes starting from the current level. + + Parameters + ---------- + include_text : bool + If True, includes text nodes as well. + + Yields + ------- + node + """ + cdef Stack stack = Stack(_STACK_SIZE) + cdef myhtml_tree_node_t* current_node = NULL + cdef Node next_node + + stack.push(self.node) + + while not stack.is_empty(): + current_node = stack.pop() + if current_node != NULL and not (current_node.tag_id == MyHTML_TAG__TEXT and not include_text): + next_node = Node.new(current_node, self.parser) + yield next_node + + if current_node.next is not NULL: + stack.push(current_node.next) + + if current_node.child is not NULL: + stack.push(current_node.child) + + @property + def tag(self): + """Return the name of the current tag (e.g. div, p, img). + + Returns + ------- + text : str + """ + cdef const char *c_text + c_text = myhtml_tag_name_by_id(self.node.tree, self.node.tag_id, NULL) + text = None + if c_text: + text = c_text.decode(_ENCODING, self.parser.decode_errors) + return text + + @property + def child(self): + """Alias for the `first_child` property. + + **Deprecated**. Please use `first_child` instead. + """ + cdef Node node + if self.node.child: + node = Node.new(self.node.child, self.parser) + return node + return None + + @property + def parent(self): + """Return the parent node.""" + cdef Node node + if self.node.parent: + node = Node.new(self.node.parent, self.parser) + return node + return None + + @property + def next(self): + """Return next node.""" + cdef Node node + if self.node.next: + node = Node.new(self.node.next, self.parser) + return node + return None + + @property + def prev(self): + """Return previous node.""" + cdef Node node + if self.node.prev: + node = Node.new(self.node.prev, self.parser) + return node + return None + + @property + def last_child(self): + """Return last child node.""" + cdef Node node + if self.node.last_child: + node = Node.new(self.node.last_child, self.parser) + return node + return None + + @property + def html(self): + """Return HTML representation of the current node including all its child nodes. + + Returns + ------- + text : str + """ + cdef mycore_string_raw_t c_str + c_str.data = NULL + c_str.length = 0 + c_str.size = 0 + + cdef mystatus_t status + status = myhtml_serialization(self.node, &c_str) + + if status == 0 and c_str.data: + html = c_str.data.decode(_ENCODING).replace('<-undef>', '') + free(c_str.data) + return html + + return None + + def css(self, str query): + """Evaluate CSS selector against current node and its child nodes.""" + return find_nodes(self.parser, self.node, query) + + def any_css_matches(self, tuple selectors): + """Returns True if any of CSS selectors matches a node""" + return find_matches(self.parser, self.node, selectors) + + def css_matches(self, str selector): + """Returns True if CSS selector matches a node.""" + return find_matches(self.parser, self.node, (selector, )) + + def css_first(self, str query, default=None, bool strict=False): + """Evaluate CSS selector against current node and its child nodes.""" + results = self.css(query) + n_results = len(results) + + if n_results > 0: + + if strict and n_results > 1: + raise ValueError("Expected 1 match, but found %s matches" % n_results) + + return results[0] + + return default + + def decompose(self, bool recursive=True): + """Remove a Node from the tree. + + Parameters + ---------- + recursive : bool, default True + Whenever to delete all its child nodes + + Examples + -------- + + >>> tree = HTMLParser(html) + >>> for tag in tree.css('script'): + >>> tag.decompose() + + """ + if recursive: + myhtml_node_delete_recursive(self.node) + else: + myhtml_node_delete(self.node) + + def remove(self, bool recursive=True): + """An alias for the decompose method.""" + self.decompose(recursive) + + def unwrap(self, delete_empty = False): + """Replace node with whatever is inside this node. + + Parameters + ---------- + delete_empty : bool, default False + Whenever to delete empty tags. + + Examples + -------- + + >>> tree = HTMLParser("
Hello world!
") + >>> tree.css_first('i').unwrap() + >>> tree.html + '
Hello world!
' + + Note: by default, empty tags are ignored, set "delete_empty" to "True" to change this. + """ + if self.node.child == NULL: + if delete_empty: + myhtml_node_delete(self.node) + return + cdef myhtml_tree_node_t* next_node + cdef myhtml_tree_node_t* current_node + + if self.node.child.next != NULL: + current_node = self.node.child + next_node = current_node.next + + while next_node != NULL: + next_node = current_node.next + myhtml_node_insert_before(self.node, current_node) + current_node = next_node + else: + myhtml_node_insert_before(self.node, self.node.child) + myhtml_node_delete(self.node) + + def strip_tags(self, list tags, bool recursive = False): + """Remove specified tags from the HTML tree. + + Parameters + ---------- + tags : list + List of tags to remove. + recursive : bool, default True + Whenever to delete all its child nodes + + Examples + -------- + + >>> tree = HTMLParser('
Hello world!
') + >>> tags = ['head', 'style', 'script', 'xmp', 'iframe', 'noembed', 'noframes'] + >>> tree.strip_tags(tags) + >>> tree.html + '
Hello world!
' + + """ + # ensure cython can recast element to a Node so that decompose will be called sooner. + cdef Node element + for tag in tags: + for element in self.css(tag): + element.decompose(recursive=recursive) + + def unwrap_tags(self, list tags, delete_empty = False): + """Unwraps specified tags from the HTML tree. + + Works the same as the ``unwrap`` method, but applied to a list of tags. + + Parameters + ---------- + tags : list + List of tags to remove. + delete_empty : bool, default False + Whenever to delete empty tags. + + Examples + -------- + + >>> tree = HTMLParser("
Hello world!
") + >>> tree.body.unwrap_tags(['i','a']) + >>> tree.body.html + '
Hello world!
' + + Note: by default, empty tags are ignored, set "delete_empty" to "True" to change this. + """ + cdef Node element + for tag in tags: + for element in self.css(tag): + element.unwrap(delete_empty) + + def replace_with(self, str_or_Node value): + """Replace current Node with specified value. + + Parameters + ---------- + value : str, bytes or Node + The text or Node instance to replace the Node with. + When a text string is passed, it's treated as text. All HTML tags will be escaped. + Convert and pass the ``Node`` object when you want to work with HTML. + Does not clone the ``Node`` object. + All future changes to the passed ``Node`` object will also be taken into account. + + Examples + -------- + + >>> tree = HTMLParser('
Get Laptop
') + >>> img = tree.css_first('img') + >>> img.replace_with(img.attributes.get('alt', '')) + >>> tree.body.child.html + '
Get Laptop
' + + >>> html_parser = HTMLParser('
Get
') + >>> html_parser2 = HTMLParser('
Test
') + >>> img_node = html_parser.css_first('img') + >>> img_node.replace_with(html_parser2.body.child) + '
Get
Test
' + """ + cdef myhtml_tree_node_t *node + if isinstance(value, (str, bytes, unicode)): + bytes_val = to_bytes(value) + node = myhtml_node_create(self.parser.html_tree, MyHTML_TAG__TEXT, MyHTML_NAMESPACE_HTML) + myhtml_node_text_set(node, bytes_val, len(bytes_val), MyENCODING_UTF_8) + myhtml_node_insert_before(self.node, node) + myhtml_node_delete(self.node) + elif isinstance(value, Node): + node = myhtml_node_clone_deep(self.parser.html_tree, value.node) + myhtml_node_insert_before(self.node, node) + myhtml_node_delete(self.node) + else: + raise TypeError("Expected a string or Node instance, but %s found" % type(value).__name__) + + def insert_before(self, str_or_Node value): + """ + Insert a node before the current Node. + + Parameters + ---------- + value : str, bytes or Node + The text or Node instance to insert before the Node. + When a text string is passed, it's treated as text. All HTML tags will be escaped. + Convert and pass the ``Node`` object when you want to work with HTML. + Does not clone the ``Node`` object. + All future changes to the passed ``Node`` object will also be taken into account. + + Examples + -------- + + >>> tree = HTMLParser('
Get Laptop
') + >>> img = tree.css_first('img') + >>> img.insert_before(img.attributes.get('alt', '')) + >>> tree.body.child.html + '
Get LaptopLaptop
' + + >>> html_parser = HTMLParser('
Get
') + >>> html_parser2 = HTMLParser('
Test
') + >>> img_node = html_parser.css_first('img') + >>> img_node.insert_before(html_parser2.body.child) +
Get
Test
' + """ + cdef myhtml_tree_node_t *node + if isinstance(value, (str, bytes, unicode)): + bytes_val = to_bytes(value) + node = myhtml_node_create(self.parser.html_tree, MyHTML_TAG__TEXT, MyHTML_NAMESPACE_HTML) + myhtml_node_text_set(node, bytes_val, len(bytes_val), MyENCODING_UTF_8) + myhtml_node_insert_before(self.node, node) + elif isinstance(value, Node): + node = myhtml_node_clone_deep(self.parser.html_tree, value.node) + myhtml_node_insert_before(self.node, node) + else: + raise TypeError("Expected a string or Node instance, but %s found" % type(value).__name__) + + def insert_after(self, str_or_Node value): + """ + Insert a node after the current Node. + + Parameters + ---------- + value : str, bytes or Node + The text or Node instance to insert after the Node. + When a text string is passed, it's treated as text. All HTML tags will be escaped. + Convert and pass the ``Node`` object when you want to work with HTML. + Does not clone the ``Node`` object. + All future changes to the passed ``Node`` object will also be taken into account. + + Examples + -------- + + >>> tree = HTMLParser('
Get Laptop
') + >>> img = tree.css_first('img') + >>> img.insert_after(img.attributes.get('alt', '')) + >>> tree.body.child.html + '
Get LaptopLaptop
' + + >>> html_parser = HTMLParser('
Get
') + >>> html_parser2 = HTMLParser('
Test
') + >>> img_node = html_parser.css_first('img') + >>> img_node.insert_after(html_parser2.body.child) +
Get
Test
' + """ + cdef myhtml_tree_node_t *node + if isinstance(value, (str, bytes, unicode)): + bytes_val = to_bytes(value) + node = myhtml_node_create(self.parser.html_tree, MyHTML_TAG__TEXT, MyHTML_NAMESPACE_HTML) + myhtml_node_text_set(node, bytes_val, len(bytes_val), MyENCODING_UTF_8) + myhtml_node_insert_after(self.node, node) + elif isinstance(value, Node): + node = myhtml_node_clone_deep(self.parser.html_tree, value.node) + myhtml_node_insert_after(self.node, node) + else: + raise TypeError("Expected a string or Node instance, but %s found" % type(value).__name__) + + def insert_child(self, str_or_Node value): + """ + Insert a node inside (at the end of) the current Node. + + Parameters + ---------- + value : str, bytes or Node + The text or Node instance to insert inside the Node. + When a text string is passed, it's treated as text. All HTML tags will be escaped. + Convert and pass the ``Node`` object when you want to work with HTML. + Does not clone the ``Node`` object. + All future changes to the passed ``Node`` object will also be taken into account. + + Examples + -------- + + >>> tree = HTMLParser('
Get
') + >>> div = tree.css_first('div') + >>> div.insert_child('Laptop') + >>> tree.body.child.html + '
Get Laptop
' + + >>> html_parser = HTMLParser('
Get
Laptop
') + >>> html_parser2 = HTMLParser('
Test
') + >>> span_node = html_parser.css_first('span') + >>> span_node.insert_child(html_parser2.body.child) +
Get
Laptop
Test
' + """ + cdef myhtml_tree_node_t *node + if isinstance(value, (str, bytes, unicode)): + bytes_val = to_bytes(value) + node = myhtml_node_create(self.parser.html_tree, MyHTML_TAG__TEXT, MyHTML_NAMESPACE_HTML) + myhtml_node_text_set(node, bytes_val, len(bytes_val), MyENCODING_UTF_8) + myhtml_node_append_child(self.node, node) + elif isinstance(value, Node): + node = myhtml_node_clone_deep(self.parser.html_tree, value.node) + myhtml_node_append_child(self.node, node) + else: + raise TypeError("Expected a string or Node instance, but %s found" % type(value).__name__) + + def unwrap_tags(self, list tags, delete_empty = False): + """Unwraps specified tags from the HTML tree. + + Works the same as th ``unwrap`` method, but applied to a list of tags. + + Parameters + ---------- + tags : list + List of tags to remove. + delete_empty : bool, default False + Whenever to delete empty tags. + + Examples + -------- + + >>> tree = HTMLParser("
Hello world!
") + >>> tree.body.unwrap_tags(['i','a']) + >>> tree.body.html + '
Hello world!
' + + Note: by default, empty tags are ignored, set "delete_empty" to "True" to change this. + """ + cdef Node element + for tag in tags: + for element in self.css(tag): + element.unwrap(delete_empty) + + @property + def raw_value(self): + """Return the raw (unparsed, original) value of a node. + + Currently, works on text nodes only. + + Returns + ------- + + raw_value : bytes + + Examples + -------- + + >>> html_parser = HTMLParser('
<test>
') + >>> selector = html_parser.css_first('div') + >>> selector.child.html + '<test>' + >>> selector.child.raw_value + b'<test>' + """ + cdef int begin = self.node.token.element_begin + cdef int length = self.node.token.element_length + if self.node.tag_id != MyHTML_TAG__TEXT: + raise ValueError("Can't obtain raw value for non-text node.") + return self.parser.raw_html[begin:begin + length] + + def select(self, query=None): + """Select nodes given a CSS selector. + + Works similarly to the ``css`` method, but supports chained filtering and extra features. + + Parameters + ---------- + query : str or None + The CSS selector to use when searching for nodes. + + Returns + ------- + selector : The `Selector` class. + """ + return Selector(self, query) + + def scripts_contain(self, str query): + """Returns True if any of the script tags contain specified text. + + Caches script tags on the first call to improve performance. + + Parameters + ---------- + query : str + The query to check. + + """ + cdef Node node + if self.parser.cached_script_texts is None: + nodes = find_nodes(self.parser, self.node, 'script') + text_nodes = [] + for node in nodes: + node_text = node.text(deep=True) + if node_text: + text_nodes.append(node_text) + self.parser.cached_script_texts = text_nodes + + for text in self.parser.cached_script_texts: + if query in text: + return True + return False + + def script_srcs_contain(self, tuple queries): + """Returns True if any of the script SRCs attributes contain on of the specified text. + + Caches values on the first call to improve performance. + + Parameters + ---------- + queries : tuple of str + + """ + if self.parser.cached_script_srcs is None: + nodes = find_nodes(self.parser, self.node, 'script') + src_nodes = [] + for node in nodes: + node_src = node.attrs.get('src') + if node_src: + src_nodes.append(node_src) + self.parser.cached_script_srcs = src_nodes + + for text in self.parser.cached_script_srcs: + for query in queries: + if query in text: + return True + return False + + def __repr__(self): + return '' % self.tag + + def __eq__(self, other): + if isinstance(other, str): + return self.html == other + if not isinstance(other, Node): + return False + return self.html == other.html + + @property + def text_content(self): + """Returns the text of the node if it is a text node. + + Returns None for other nodes. + Unlike the ``text`` method, does not include child nodes. + + Returns + ------- + text : str or None. + """ + text = "" + cdef const char* c_text + cdef myhtml_tree_node_t *node = self.node.child + + if self.node.tag_id == MyHTML_TAG__TEXT: + c_text = myhtml_node_text(self.node, NULL) + if c_text != NULL: + node_text = c_text.decode(_ENCODING, self.parser.decode_errors) + return append_text(text, node_text) + return None + + def merge_text_nodes(self): + """Iterates over all text nodes and merges all text nodes that are close to each other. + + This is useful for text extraction. + Use it when you need to strip HTML tags and merge "dangling" text. + + Examples + -------- + + >>> tree = HTMLParser("

John

Doe

") + >>> node = tree.css_first('div') + >>> tree.unwrap_tags(["strong"]) + >>> tree.text(deep=True, separator=" ", strip=True) + "J ohn Doe" # Text extraction produces an extra space because the strong tag was removed. + >>> node.merge_text_nodes() + >>> tree.text(deep=True, separator=" ", strip=True) + "John Doe" + """ + cdef Stack stack = Stack(_STACK_SIZE) + cdef myhtml_tree_node_t * current_node = NULL + cdef Node next_node + cdef const char* left_text + cdef const char* right_text + cdef char* final_text + cdef size_t left_length, right_length, final_length + + stack.push(self.node) + + while not stack.is_empty(): + current_node = stack.pop() + + if (current_node.tag_id == MyHTML_TAG__TEXT and current_node.prev and + current_node.prev.tag_id == MyHTML_TAG__TEXT): + left_text = myhtml_node_text(current_node.prev, &left_length) + right_text = myhtml_node_text(current_node, &right_length) + if left_text and right_text: + final_length = left_length + right_length + final_text = malloc(final_length + 1) + if final_text == NULL: + raise MemoryError("Can't allocate memory for a new node.") + memcpy(final_text, left_text, left_length) + memcpy(final_text + left_length, right_text, right_length + 1) + myhtml_node_text_set(current_node, final_text, final_length, MyENCODING_UTF_8) + myhtml_node_delete(current_node.prev) + free(final_text) + + if current_node.next is not NULL: + stack.push(current_node.next) + + if current_node.child is not NULL: + stack.push(current_node.child) + +cdef inline str append_text(str text, str node_text, str separator='', bint strip=False): + if strip: + text += node_text.strip() + separator + else: + text += node_text + separator + + return text + + +cdef inline bytes to_bytes(str_or_Node value): + cdef bytes bytes_val + if isinstance(value, unicode): + bytes_val = value.encode("utf-8") + elif isinstance(value, bytes): + bytes_val = value + return bytes_val diff --git a/dist/HandoverSystem/_internal/selectolax/modest/selection.pxi b/dist/HandoverSystem/_internal/selectolax/modest/selection.pxi new file mode 100644 index 0000000..62ed09a --- /dev/null +++ b/dist/HandoverSystem/_internal/selectolax/modest/selection.pxi @@ -0,0 +1,195 @@ +cimport cython +from cpython.exc cimport PyErr_SetObject + + +@cython.final +cdef class CSSSelector: + + cdef char *c_selector + cdef mycss_entry_t *css_entry + cdef modest_finder_t *finder + cdef mycss_selectors_list_t *selectors_list + + def __init__(self, str selector): + + selector_pybyte = selector.encode('UTF-8') + self.c_selector = selector_pybyte + + # In order to propagate errors these methods should return no value + self._create_css_parser() + self._prepare_selector(self.css_entry, self.c_selector, len(self.c_selector)) + self.finder = modest_finder_create_simple() + + cdef myhtml_collection_t* find(self, myhtml_tree_node_t* scope): + """Find all possible matches.""" + + cdef myhtml_collection_t *collection + + collection = NULL + modest_finder_by_selectors_list(self.finder, scope, self.selectors_list, &collection) + + return collection + + cdef int _create_css_parser(self) except -1: + cdef mystatus_t status + + cdef mycss_t *mycss = mycss_create() + status = mycss_init(mycss) + + if status != 0: + PyErr_SetObject(RuntimeError, "Can't init MyCSS object.") + return -1 + + self.css_entry = mycss_entry_create() + status = mycss_entry_init(mycss, self.css_entry) + + if status != 0: + PyErr_SetObject(RuntimeError, "Can't init MyCSS Entry object.") + return -1 + return 0 + + cdef int _prepare_selector(self, mycss_entry_t *css_entry, const char *selector, size_t selector_size) except -1: + cdef mystatus_t out_status + self.selectors_list = mycss_selectors_parse(mycss_entry_selectors(css_entry), myencoding_t.MyENCODING_UTF_8, + selector, selector_size, &out_status) + + if (self.selectors_list == NULL) or (self.selectors_list.flags and MyCSS_SELECTORS_FLAGS_SELECTOR_BAD): + PyErr_SetObject(ValueError, "Bad CSS Selectors: %s" % self.c_selector.decode('utf-8')) + return -1 + return 0 + + def __dealloc__(self): + mycss_selectors_list_destroy(mycss_entry_selectors(self.css_entry), self.selectors_list, 1) + modest_finder_destroy(self.finder, 1) + + cdef mycss_t *mycss = self.css_entry.mycss + mycss_entry_destroy(self.css_entry, 1) + mycss_destroy(mycss, 1) + + +cdef class Selector: + """An advanced CSS selector that supports additional operations. + + Think of it as a toolkit that mimics some of the features of XPath. + + Please note, this is an experimental feature that can change in the future. + """ + cdef Node node + cdef list nodes + + def __init__(self, Node node, str query): + """custom init, because __cinit__ doesn't accept C types""" + self.node = node + self.nodes = find_nodes(node.parser, node.node, query) if query else [node, ] + + cpdef css(self, str query): + """Evaluate CSS selector against current scope.""" + cdef Node current_node + nodes = list() + for node in self.nodes: + current_node = node + nodes.extend(find_nodes(self.node.parser, current_node.node, query)) + self.nodes = nodes + return self + + @property + def matches(self): + """Returns all possible matches""" + return self.nodes + + @property + def any_matches(self): + """Returns True if there are any matches""" + return bool(self.nodes) + + def text_contains(self, str text, bool deep=True, str separator='', bool strip=False): + """Filter all current matches given text.""" + nodes = [] + cdef Node node + for node in self.nodes: + node_text = node.text(deep=deep, separator=separator, strip=strip) + if node_text and text in node_text: + nodes.append(node) + self.nodes = nodes + return self + + def any_text_contains(self, str text, bool deep=True, str separator='', bool strip=False): + """Returns True if any node in the current search scope contains specified text""" + nodes = [] + cdef Node node + for node in self.nodes: + node_text = node.text(deep=deep, separator=separator, strip=strip) + if node_text and text in node_text: + return True + return False + + def attribute_longer_than(self, str attribute, int length, str start = None): + """Filter all current matches by attribute length. + + Similar to `string-length` in XPath. + """ + nodes = [] + for node in self.nodes: + attr = node.attributes.get(attribute) + if attr and start and start in attr: + attr = attr[attr.find(start) + len(start):] + if len(attr) > length: + nodes.append(node) + self.nodes = nodes + return self + + def any_attribute_longer_than(self, str attribute, int length, str start = None): + """Returns True any href attribute longer than a specified length. + + Similar to `string-length` in XPath. + """ + cdef list nodes = [] + cdef Node node + for node in self.nodes: + attr = node.attributes.get(attribute) + if attr and start and start in attr: + attr = attr[attr.find(start) + len(start):] + if len(attr) > length: + return True + return False + + def __bool__(self): + return bool(self.nodes) + +cdef find_nodes(HTMLParser parser, myhtml_tree_node_t *node, str query): + cdef myhtml_collection_t *collection + cdef CSSSelector selector = CSSSelector(query) + cdef Node n + cdef list result = [] + collection = selector.find(node) + + if collection == NULL: + return result + + for i in range(collection.length): + n = Node.new(collection.list[i], parser) + result.append(n) + myhtml_collection_destroy(collection) + return result + + +cdef bool find_matches(HTMLParser parser, myhtml_tree_node_t *node, tuple selectors): + cdef myhtml_collection_t *collection + cdef CSSSelector selector + cdef int collection_size + cdef str query + + for query in selectors: + selector = CSSSelector(query) + collection_size = 0 + collection = NULL + + collection = selector.find(node) + if collection == NULL: + continue + + collection_size = collection.length + myhtml_collection_destroy(collection) + if collection_size > 0: + return True + return False diff --git a/dist/HandoverSystem/_internal/selectolax/modest/util.pxi b/dist/HandoverSystem/_internal/selectolax/modest/util.pxi new file mode 100644 index 0000000..a9b7f7f --- /dev/null +++ b/dist/HandoverSystem/_internal/selectolax/modest/util.pxi @@ -0,0 +1,20 @@ +include "../utils.pxi" + + +def create_tag(tag: str): + """ + Given an HTML tag name, e.g. `"div"`, create a single empty node for that tag, + e.g. `"
"`. + """ + return do_create_tag(tag, HTMLParser) + + +def parse_fragment(html: str): + """ + Given HTML, parse it into a list of Nodes, such that the nodes + correspond to the given HTML. + + For contrast, HTMLParser adds ``, ``, and `` tags + if they are missing. This function does not add these tags. + """ + return do_parse_fragment(html, HTMLParser) diff --git a/dist/HandoverSystem/_internal/selectolax/parser.c b/dist/HandoverSystem/_internal/selectolax/parser.c new file mode 100644 index 0000000..e87f0bf --- /dev/null +++ b/dist/HandoverSystem/_internal/selectolax/parser.c @@ -0,0 +1,47841 @@ +/* Generated by Cython 3.2.2 */ + +/* BEGIN: Cython Metadata +{ + "distutils": { + "depends": [ + "modest\\include\\modest\\finder\\finder.h", + "modest\\include\\mycss\\mycss.h", + "modest\\include\\myencoding\\encoding.h", + "modest\\include\\myhtml\\myhtml.h", + "modest\\include\\myhtml\\serialization.h", + "modest\\include\\myhtml\\tree.h" + ], + "extra_compile_args": [ + "-DMODEST_BUILD_OS=Windows", + "-DMyCORE_OS_Windows", + "-DMODEST_PORT_NAME=windows_nt", + "-DMyCORE_BUILD_WITHOUT_THREADS=YES", + "-DMyCORE_BUILD_DEBUG=NO" + ], + "include_dirs": [ + "modest/include/" + ], + "language": "c", + "name": "selectolax.parser", + "sources": [ + "selectolax/parser.pyx", + "modest/source\\modest\\declaration.c", + "modest/source\\modest\\glue.c", + "modest/source\\modest\\modest.c", + "modest/source\\modest\\finder\\finder.c", + "modest/source\\modest\\finder\\match.c", + "modest/source\\modest\\finder\\pseudo_class.c", + "modest/source\\modest\\finder\\thread.c", + "modest/source\\modest\\finder\\type.c", + "modest/source\\modest\\layer\\layer.c", + "modest/source\\modest\\node\\node.c", + "modest/source\\modest\\node\\property.c", + "modest/source\\modest\\node\\raw_property.c", + "modest/source\\modest\\node\\serialization.c", + "modest/source\\modest\\render\\begin.c", + "modest/source\\modest\\render\\binding.c", + "modest/source\\modest\\render\\tree.c", + "modest/source\\modest\\render\\tree_node.c", + "modest/source\\modest\\style\\default.c", + "modest/source\\modest\\style\\map.c", + "modest/source\\modest\\style\\raw.c", + "modest/source\\modest\\style\\sheet.c", + "modest/source\\modest\\style\\type.c", + "modest/source\\mycore\\incoming.c", + "modest/source\\mycore\\myosi.c", + "modest/source\\mycore\\mystring.c", + "modest/source\\mycore\\mythread.c", + "modest/source\\mycore\\thread_queue.c", + "modest/source\\mycore\\utils.c", + "modest/source\\mycore\\utils\\avl_tree.c", + "modest/source\\mycore\\utils\\mchar_async.c", + "modest/source\\mycore\\utils\\mcobject.c", + "modest/source\\mycore\\utils\\mcobject_async.c", + "modest/source\\mycore\\utils\\mcsimple.c", + "modest/source\\mycore\\utils\\mcsync.c", + "modest/source\\mycore\\utils\\mctree.c", + "modest/source\\mycore\\utils\\mhash.c", + "modest/source\\mycss\\an_plus_b.c", + "modest/source\\mycss\\check.c", + "modest/source\\mycss\\convert.c", + "modest/source\\mycss\\entry.c", + "modest/source\\mycss\\mycss.c", + "modest/source\\mycss\\mystring.c", + "modest/source\\mycss\\parser.c", + "modest/source\\mycss\\stack.c", + "modest/source\\mycss\\stylesheet.c", + "modest/source\\mycss\\tokenizer.c", + "modest/source\\mycss\\tokenizer_end.c", + "modest/source\\mycss\\tokenizer_global.c", + "modest/source\\mycss\\declaration\\default.c", + "modest/source\\mycss\\declaration\\entry.c", + "modest/source\\mycss\\declaration\\entry_destroy.c", + "modest/source\\mycss\\declaration\\init.c", + "modest/source\\mycss\\declaration\\parser.c", + "modest/source\\mycss\\declaration\\serialization.c", + "modest/source\\mycss\\declaration\\state.c", + "modest/source\\mycss\\media\\init.c", + "modest/source\\mycss\\media\\state.c", + "modest/source\\mycss\\namespace\\init.c", + "modest/source\\mycss\\namespace\\parser.c", + "modest/source\\mycss\\namespace\\serialization.c", + "modest/source\\mycss\\namespace\\state.c", + "modest/source\\mycss\\property\\init.c", + "modest/source\\mycss\\property\\parser.c", + "modest/source\\mycss\\property\\parser_background.c", + "modest/source\\mycss\\property\\parser_image.c", + "modest/source\\mycss\\property\\parser_text_decoration.c", + "modest/source\\mycss\\property\\parser_url.c", + "modest/source\\mycss\\property\\serialization.c", + "modest/source\\mycss\\property\\shared.c", + "modest/source\\mycss\\selectors\\function.c", + "modest/source\\mycss\\selectors\\function_parser.c", + "modest/source\\mycss\\selectors\\init.c", + "modest/source\\mycss\\selectors\\list.c", + "modest/source\\mycss\\selectors\\parser.c", + "modest/source\\mycss\\selectors\\pseudo.c", + "modest/source\\mycss\\selectors\\serialization.c", + "modest/source\\mycss\\selectors\\state.c", + "modest/source\\mycss\\selectors\\value.c", + "modest/source\\mycss\\values\\color.c", + "modest/source\\mycss\\values\\color_parser.c", + "modest/source\\mycss\\values\\consume.c", + "modest/source\\mycss\\values\\destroy.c", + "modest/source\\mycss\\values\\image.c", + "modest/source\\mycss\\values\\serialization.c", + "modest/source\\mycss\\values\\units.c", + "modest/source\\mycss\\values\\values.c", + "modest/source\\myencoding\\detect.c", + "modest/source\\myencoding\\encoding.c", + "modest/source\\myencoding\\mystring.c", + "modest/source\\myfont\\cmap.c", + "modest/source\\myfont\\glyf.c", + "modest/source\\myfont\\head.c", + "modest/source\\myfont\\hhea.c", + "modest/source\\myfont\\hmtx.c", + "modest/source\\myfont\\loca.c", + "modest/source\\myfont\\maxp.c", + "modest/source\\myfont\\myfont.c", + "modest/source\\myfont\\myosi.c", + "modest/source\\myfont\\name.c", + "modest/source\\myfont\\os_2.c", + "modest/source\\myfont\\pclt.c", + "modest/source\\myfont\\vhea.c", + "modest/source\\myfont\\vmtx.c", + "modest/source\\myhtml\\callback.c", + "modest/source\\myhtml\\charef.c", + "modest/source\\myhtml\\data_process.c", + "modest/source\\myhtml\\myhtml.c", + "modest/source\\myhtml\\mynamespace.c", + "modest/source\\myhtml\\mystring.c", + "modest/source\\myhtml\\parser.c", + "modest/source\\myhtml\\rules.c", + "modest/source\\myhtml\\serialization.c", + "modest/source\\myhtml\\stream.c", + "modest/source\\myhtml\\tag.c", + "modest/source\\myhtml\\tag_init.c", + "modest/source\\myhtml\\token.c", + "modest/source\\myhtml\\tokenizer.c", + "modest/source\\myhtml\\tokenizer_doctype.c", + "modest/source\\myhtml\\tokenizer_end.c", + "modest/source\\myhtml\\tokenizer_script.c", + "modest/source\\myhtml\\tree.c", + "modest/source\\myport\\windows_nt\\mycore\\io.c", + "modest/source\\myport\\windows_nt\\mycore\\memory.c", + "modest/source\\myport\\windows_nt\\mycore\\perf.c", + "modest/source\\myport\\windows_nt\\mycore\\thread.c", + "modest/source\\myport\\windows_nt\\mycore\\utils\\mcsync.c", + "modest/source\\myunicode\\myosi.c", + "modest/source\\myurl\\host.c", + "modest/source\\myurl\\myosi.c", + "modest/source\\myurl\\parser.c", + "modest/source\\myurl\\parser_end.c", + "modest/source\\myurl\\path.c", + "modest/source\\myurl\\punycode.c", + "modest/source\\myurl\\scheme.c", + "modest/source\\myurl\\serialization.c", + "modest/source\\myurl\\url.c", + "modest/source\\myurl\\utils.c" + ] + }, + "module_name": "selectolax.parser" +} +END: Cython Metadata */ + +#ifndef PY_SSIZE_T_CLEAN +#define PY_SSIZE_T_CLEAN +#endif /* PY_SSIZE_T_CLEAN */ +/* InitLimitedAPI */ +#if defined(Py_LIMITED_API) + #if !defined(CYTHON_LIMITED_API) + #define CYTHON_LIMITED_API 1 + #endif +#elif defined(CYTHON_LIMITED_API) + #ifdef _MSC_VER + #pragma message ("Limited API usage is enabled with 'CYTHON_LIMITED_API' but 'Py_LIMITED_API' does not define a Python target version. Consider setting 'Py_LIMITED_API' instead.") + #else + #warning Limited API usage is enabled with 'CYTHON_LIMITED_API' but 'Py_LIMITED_API' does not define a Python target version. Consider setting 'Py_LIMITED_API' instead. + #endif +#endif + +#include "Python.h" +#ifndef Py_PYTHON_H + #error Python headers needed to compile C extensions, please install development version of Python. +#elif PY_VERSION_HEX < 0x03080000 + #error Cython requires Python 3.8+. +#else +#define __PYX_ABI_VERSION "3_2_2" +#define CYTHON_HEX_VERSION 0x030202F0 +#define CYTHON_FUTURE_DIVISION 1 +/* CModulePreamble */ +#include +#ifndef offsetof + #define offsetof(type, member) ( (size_t) & ((type*)0) -> member ) +#endif +#if !defined(_WIN32) && !defined(WIN32) && !defined(MS_WINDOWS) + #ifndef __stdcall + #define __stdcall + #endif + #ifndef __cdecl + #define __cdecl + #endif + #ifndef __fastcall + #define __fastcall + #endif +#endif +#ifndef DL_IMPORT + #define DL_IMPORT(t) t +#endif +#ifndef DL_EXPORT + #define DL_EXPORT(t) t +#endif +#define __PYX_COMMA , +#ifndef PY_LONG_LONG + #define PY_LONG_LONG LONG_LONG +#endif +#ifndef Py_HUGE_VAL + #define Py_HUGE_VAL HUGE_VAL +#endif +#define __PYX_LIMITED_VERSION_HEX PY_VERSION_HEX +#if defined(GRAALVM_PYTHON) + /* For very preliminary testing purposes. Most variables are set the same as PyPy. + The existence of this section does not imply that anything works or is even tested */ + #define CYTHON_COMPILING_IN_PYPY 0 + #define CYTHON_COMPILING_IN_CPYTHON 0 + #define CYTHON_COMPILING_IN_LIMITED_API 0 + #define CYTHON_COMPILING_IN_GRAAL 1 + #define CYTHON_COMPILING_IN_CPYTHON_FREETHREADING 0 + #undef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 0 + #undef CYTHON_USE_TYPE_SPECS + #define CYTHON_USE_TYPE_SPECS 0 + #undef CYTHON_USE_PYTYPE_LOOKUP + #define CYTHON_USE_PYTYPE_LOOKUP 0 + #undef CYTHON_USE_PYLIST_INTERNALS + #define CYTHON_USE_PYLIST_INTERNALS 0 + #undef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 0 + #undef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #undef CYTHON_USE_PYLONG_INTERNALS + #define CYTHON_USE_PYLONG_INTERNALS 0 + #undef CYTHON_AVOID_BORROWED_REFS + #define CYTHON_AVOID_BORROWED_REFS 1 + #undef CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS + #define CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS 0 + #undef CYTHON_ASSUME_SAFE_MACROS + #define CYTHON_ASSUME_SAFE_MACROS 0 + #undef CYTHON_ASSUME_SAFE_SIZE + #define CYTHON_ASSUME_SAFE_SIZE 0 + #undef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 0 + #undef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 0 + #undef CYTHON_FAST_GIL + #define CYTHON_FAST_GIL 0 + #undef CYTHON_METH_FASTCALL + #define CYTHON_METH_FASTCALL 0 + #undef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 0 + #ifndef CYTHON_PEP487_INIT_SUBCLASS + #define CYTHON_PEP487_INIT_SUBCLASS 1 + #endif + #undef CYTHON_PEP489_MULTI_PHASE_INIT + #define CYTHON_PEP489_MULTI_PHASE_INIT 1 + #undef CYTHON_USE_MODULE_STATE + #define CYTHON_USE_MODULE_STATE 0 + #undef CYTHON_USE_SYS_MONITORING + #define CYTHON_USE_SYS_MONITORING 0 + #undef CYTHON_USE_TP_FINALIZE + #define CYTHON_USE_TP_FINALIZE 0 + #undef CYTHON_USE_AM_SEND + #define CYTHON_USE_AM_SEND 0 + #undef CYTHON_USE_DICT_VERSIONS + #define CYTHON_USE_DICT_VERSIONS 0 + #undef CYTHON_USE_EXC_INFO_STACK + #define CYTHON_USE_EXC_INFO_STACK 1 + #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC + #define CYTHON_UPDATE_DESCRIPTOR_DOC 0 + #endif + #undef CYTHON_USE_FREELISTS + #define CYTHON_USE_FREELISTS 0 + #undef CYTHON_IMMORTAL_CONSTANTS + #define CYTHON_IMMORTAL_CONSTANTS 0 +#elif defined(PYPY_VERSION) + #define CYTHON_COMPILING_IN_PYPY 1 + #define CYTHON_COMPILING_IN_CPYTHON 0 + #define CYTHON_COMPILING_IN_LIMITED_API 0 + #define CYTHON_COMPILING_IN_GRAAL 0 + #define CYTHON_COMPILING_IN_CPYTHON_FREETHREADING 0 + #undef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 1 + #ifndef CYTHON_USE_TYPE_SPECS + #define CYTHON_USE_TYPE_SPECS 0 + #endif + #undef CYTHON_USE_PYTYPE_LOOKUP + #define CYTHON_USE_PYTYPE_LOOKUP 0 + #undef CYTHON_USE_PYLIST_INTERNALS + #define CYTHON_USE_PYLIST_INTERNALS 0 + #undef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 0 + #undef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #undef CYTHON_USE_PYLONG_INTERNALS + #define CYTHON_USE_PYLONG_INTERNALS 0 + #undef CYTHON_AVOID_BORROWED_REFS + #define CYTHON_AVOID_BORROWED_REFS 1 + #undef CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS + #define CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS 1 + #undef CYTHON_ASSUME_SAFE_MACROS + #define CYTHON_ASSUME_SAFE_MACROS 0 + #ifndef CYTHON_ASSUME_SAFE_SIZE + #define CYTHON_ASSUME_SAFE_SIZE 1 + #endif + #undef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 0 + #undef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 0 + #undef CYTHON_FAST_GIL + #define CYTHON_FAST_GIL 0 + #undef CYTHON_METH_FASTCALL + #define CYTHON_METH_FASTCALL 0 + #undef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 0 + #ifndef CYTHON_PEP487_INIT_SUBCLASS + #define CYTHON_PEP487_INIT_SUBCLASS 1 + #endif + #if PY_VERSION_HEX < 0x03090000 + #undef CYTHON_PEP489_MULTI_PHASE_INIT + #define CYTHON_PEP489_MULTI_PHASE_INIT 0 + #elif !defined(CYTHON_PEP489_MULTI_PHASE_INIT) + #define CYTHON_PEP489_MULTI_PHASE_INIT 1 + #endif + #undef CYTHON_USE_MODULE_STATE + #define CYTHON_USE_MODULE_STATE 0 + #undef CYTHON_USE_SYS_MONITORING + #define CYTHON_USE_SYS_MONITORING 0 + #ifndef CYTHON_USE_TP_FINALIZE + #define CYTHON_USE_TP_FINALIZE (PYPY_VERSION_NUM >= 0x07030C00) + #endif + #undef CYTHON_USE_AM_SEND + #define CYTHON_USE_AM_SEND 0 + #undef CYTHON_USE_DICT_VERSIONS + #define CYTHON_USE_DICT_VERSIONS 0 + #undef CYTHON_USE_EXC_INFO_STACK + #define CYTHON_USE_EXC_INFO_STACK 0 + #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC + #define CYTHON_UPDATE_DESCRIPTOR_DOC (PYPY_VERSION_NUM >= 0x07031100) + #endif + #undef CYTHON_USE_FREELISTS + #define CYTHON_USE_FREELISTS 0 + #undef CYTHON_IMMORTAL_CONSTANTS + #define CYTHON_IMMORTAL_CONSTANTS 0 +#elif defined(CYTHON_LIMITED_API) + #ifdef Py_LIMITED_API + #undef __PYX_LIMITED_VERSION_HEX + #define __PYX_LIMITED_VERSION_HEX Py_LIMITED_API + #endif + #define CYTHON_COMPILING_IN_PYPY 0 + #define CYTHON_COMPILING_IN_CPYTHON 0 + #define CYTHON_COMPILING_IN_LIMITED_API 1 + #define CYTHON_COMPILING_IN_GRAAL 0 + #define CYTHON_COMPILING_IN_CPYTHON_FREETHREADING 0 + #undef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 0 + #undef CYTHON_USE_TYPE_SPECS + #define CYTHON_USE_TYPE_SPECS 1 + #undef CYTHON_USE_PYTYPE_LOOKUP + #define CYTHON_USE_PYTYPE_LOOKUP 0 + #undef CYTHON_USE_PYLIST_INTERNALS + #define CYTHON_USE_PYLIST_INTERNALS 0 + #undef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 0 + #ifndef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #endif + #undef CYTHON_USE_PYLONG_INTERNALS + #define CYTHON_USE_PYLONG_INTERNALS 0 + #ifndef CYTHON_AVOID_BORROWED_REFS + #define CYTHON_AVOID_BORROWED_REFS 0 + #endif + #ifndef CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS + #define CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS 0 + #endif + #undef CYTHON_ASSUME_SAFE_MACROS + #define CYTHON_ASSUME_SAFE_MACROS 0 + #undef CYTHON_ASSUME_SAFE_SIZE + #define CYTHON_ASSUME_SAFE_SIZE 0 + #undef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 0 + #undef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 0 + #undef CYTHON_FAST_GIL + #define CYTHON_FAST_GIL 0 + #undef CYTHON_METH_FASTCALL + #define CYTHON_METH_FASTCALL (__PYX_LIMITED_VERSION_HEX >= 0x030C0000) + #undef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 0 + #ifndef CYTHON_PEP487_INIT_SUBCLASS + #define CYTHON_PEP487_INIT_SUBCLASS 1 + #endif + #ifndef CYTHON_PEP489_MULTI_PHASE_INIT + #define CYTHON_PEP489_MULTI_PHASE_INIT 1 + #endif + #ifndef CYTHON_USE_MODULE_STATE + #define CYTHON_USE_MODULE_STATE 0 + #endif + #undef CYTHON_USE_SYS_MONITORING + #define CYTHON_USE_SYS_MONITORING 0 + #ifndef CYTHON_USE_TP_FINALIZE + #define CYTHON_USE_TP_FINALIZE 0 + #endif + #ifndef CYTHON_USE_AM_SEND + #define CYTHON_USE_AM_SEND (__PYX_LIMITED_VERSION_HEX >= 0x030A0000) + #endif + #undef CYTHON_USE_DICT_VERSIONS + #define CYTHON_USE_DICT_VERSIONS 0 + #undef CYTHON_USE_EXC_INFO_STACK + #define CYTHON_USE_EXC_INFO_STACK 0 + #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC + #define CYTHON_UPDATE_DESCRIPTOR_DOC 0 + #endif + #ifndef CYTHON_USE_FREELISTS + #define CYTHON_USE_FREELISTS 1 + #endif + #undef CYTHON_IMMORTAL_CONSTANTS + #define CYTHON_IMMORTAL_CONSTANTS 0 +#else + #define CYTHON_COMPILING_IN_PYPY 0 + #define CYTHON_COMPILING_IN_CPYTHON 1 + #define CYTHON_COMPILING_IN_LIMITED_API 0 + #define CYTHON_COMPILING_IN_GRAAL 0 + #ifdef Py_GIL_DISABLED + #define CYTHON_COMPILING_IN_CPYTHON_FREETHREADING 1 + #else + #define CYTHON_COMPILING_IN_CPYTHON_FREETHREADING 0 + #endif + #if PY_VERSION_HEX < 0x030A0000 + #undef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 1 + #elif !defined(CYTHON_USE_TYPE_SLOTS) + #define CYTHON_USE_TYPE_SLOTS 1 + #endif + #ifndef CYTHON_USE_TYPE_SPECS + #define CYTHON_USE_TYPE_SPECS 0 + #endif + #ifndef CYTHON_USE_PYTYPE_LOOKUP + #define CYTHON_USE_PYTYPE_LOOKUP 1 + #endif + #ifndef CYTHON_USE_PYLONG_INTERNALS + #define CYTHON_USE_PYLONG_INTERNALS 1 + #endif + #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING + #undef CYTHON_USE_PYLIST_INTERNALS + #define CYTHON_USE_PYLIST_INTERNALS 0 + #elif !defined(CYTHON_USE_PYLIST_INTERNALS) + #define CYTHON_USE_PYLIST_INTERNALS 1 + #endif + #ifndef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 1 + #endif + #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING || PY_VERSION_HEX >= 0x030B00A2 + #undef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #elif !defined(CYTHON_USE_UNICODE_WRITER) + #define CYTHON_USE_UNICODE_WRITER 1 + #endif + #ifndef CYTHON_AVOID_BORROWED_REFS + #define CYTHON_AVOID_BORROWED_REFS 0 + #endif + #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING + #undef CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS + #define CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS 1 + #elif !defined(CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS) + #define CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS 0 + #endif + #ifndef CYTHON_ASSUME_SAFE_MACROS + #define CYTHON_ASSUME_SAFE_MACROS 1 + #endif + #ifndef CYTHON_ASSUME_SAFE_SIZE + #define CYTHON_ASSUME_SAFE_SIZE 1 + #endif + #ifndef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 1 + #endif + #ifndef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 1 + #endif + #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING + #undef CYTHON_FAST_GIL + #define CYTHON_FAST_GIL 0 + #elif !defined(CYTHON_FAST_GIL) + #define CYTHON_FAST_GIL (PY_VERSION_HEX < 0x030C00A6) + #endif + #ifndef CYTHON_METH_FASTCALL + #define CYTHON_METH_FASTCALL 1 + #endif + #ifndef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 1 + #endif + #ifndef CYTHON_PEP487_INIT_SUBCLASS + #define CYTHON_PEP487_INIT_SUBCLASS 1 + #endif + #ifndef CYTHON_PEP489_MULTI_PHASE_INIT + #define CYTHON_PEP489_MULTI_PHASE_INIT 1 + #endif + #ifndef CYTHON_USE_MODULE_STATE + #define CYTHON_USE_MODULE_STATE 0 + #endif + #ifndef CYTHON_USE_SYS_MONITORING + #define CYTHON_USE_SYS_MONITORING (PY_VERSION_HEX >= 0x030d00B1) + #endif + #ifndef CYTHON_USE_TP_FINALIZE + #define CYTHON_USE_TP_FINALIZE 1 + #endif + #ifndef CYTHON_USE_AM_SEND + #define CYTHON_USE_AM_SEND 1 + #endif + #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING + #undef CYTHON_USE_DICT_VERSIONS + #define CYTHON_USE_DICT_VERSIONS 0 + #elif !defined(CYTHON_USE_DICT_VERSIONS) + #define CYTHON_USE_DICT_VERSIONS (PY_VERSION_HEX < 0x030C00A5 && !CYTHON_USE_MODULE_STATE) + #endif + #ifndef CYTHON_USE_EXC_INFO_STACK + #define CYTHON_USE_EXC_INFO_STACK 1 + #endif + #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC + #define CYTHON_UPDATE_DESCRIPTOR_DOC 1 + #endif + #ifndef CYTHON_USE_FREELISTS + #define CYTHON_USE_FREELISTS (!CYTHON_COMPILING_IN_CPYTHON_FREETHREADING) + #endif + #if defined(CYTHON_IMMORTAL_CONSTANTS) && PY_VERSION_HEX < 0x030C0000 + #undef CYTHON_IMMORTAL_CONSTANTS + #define CYTHON_IMMORTAL_CONSTANTS 0 // definitely won't work + #elif !defined(CYTHON_IMMORTAL_CONSTANTS) + #define CYTHON_IMMORTAL_CONSTANTS (PY_VERSION_HEX >= 0x030C0000 && !CYTHON_USE_MODULE_STATE && CYTHON_COMPILING_IN_CPYTHON_FREETHREADING) + #endif +#endif +#ifndef CYTHON_COMPRESS_STRINGS + #define CYTHON_COMPRESS_STRINGS 1 +#endif +#ifndef CYTHON_FAST_PYCCALL +#define CYTHON_FAST_PYCCALL CYTHON_FAST_PYCALL +#endif +#ifndef CYTHON_VECTORCALL +#if CYTHON_COMPILING_IN_LIMITED_API +#define CYTHON_VECTORCALL (__PYX_LIMITED_VERSION_HEX >= 0x030C0000) +#else +#define CYTHON_VECTORCALL (CYTHON_FAST_PYCCALL) +#endif +#endif +#if CYTHON_USE_PYLONG_INTERNALS + #undef SHIFT + #undef BASE + #undef MASK + #ifdef SIZEOF_VOID_P + enum { __pyx_check_sizeof_voidp = 1 / (int)(SIZEOF_VOID_P == sizeof(void*)) }; + #endif +#endif +#ifndef __has_attribute + #define __has_attribute(x) 0 +#endif +#ifndef __has_cpp_attribute + #define __has_cpp_attribute(x) 0 +#endif +#ifndef CYTHON_RESTRICT + #if defined(__GNUC__) + #define CYTHON_RESTRICT __restrict__ + #elif defined(_MSC_VER) && _MSC_VER >= 1400 + #define CYTHON_RESTRICT __restrict + #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + #define CYTHON_RESTRICT restrict + #else + #define CYTHON_RESTRICT + #endif +#endif +#ifndef CYTHON_UNUSED + #if defined(__cplusplus) + /* for clang __has_cpp_attribute(maybe_unused) is true even before C++17 + * but leads to warnings with -pedantic, since it is a C++17 feature */ + #if ((defined(_MSVC_LANG) && _MSVC_LANG >= 201703L) || __cplusplus >= 201703L) + #if __has_cpp_attribute(maybe_unused) + #define CYTHON_UNUSED [[maybe_unused]] + #endif + #endif + #endif +#endif +#ifndef CYTHON_UNUSED +# if defined(__GNUC__) +# if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) +# define CYTHON_UNUSED __attribute__ ((__unused__)) +# else +# define CYTHON_UNUSED +# endif +# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER)) +# define CYTHON_UNUSED __attribute__ ((__unused__)) +# else +# define CYTHON_UNUSED +# endif +#endif +#ifndef CYTHON_UNUSED_VAR +# if defined(__cplusplus) + template void CYTHON_UNUSED_VAR( const T& ) { } +# else +# define CYTHON_UNUSED_VAR(x) (void)(x) +# endif +#endif +#ifndef CYTHON_MAYBE_UNUSED_VAR + #define CYTHON_MAYBE_UNUSED_VAR(x) CYTHON_UNUSED_VAR(x) +#endif +#ifndef CYTHON_NCP_UNUSED +# if CYTHON_COMPILING_IN_CPYTHON && !CYTHON_COMPILING_IN_CPYTHON_FREETHREADING +# define CYTHON_NCP_UNUSED +# else +# define CYTHON_NCP_UNUSED CYTHON_UNUSED +# endif +#endif +#ifndef CYTHON_USE_CPP_STD_MOVE + #if defined(__cplusplus) && (\ + __cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1600)) + #define CYTHON_USE_CPP_STD_MOVE 1 + #else + #define CYTHON_USE_CPP_STD_MOVE 0 + #endif +#endif +#define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None) +#include +typedef uintptr_t __pyx_uintptr_t; +#ifndef CYTHON_FALLTHROUGH + #if defined(__cplusplus) + /* for clang __has_cpp_attribute(fallthrough) is true even before C++17 + * but leads to warnings with -pedantic, since it is a C++17 feature */ + #if ((defined(_MSVC_LANG) && _MSVC_LANG >= 201703L) || __cplusplus >= 201703L) + #if __has_cpp_attribute(fallthrough) + #define CYTHON_FALLTHROUGH [[fallthrough]] + #endif + #endif + #ifndef CYTHON_FALLTHROUGH + #if __has_cpp_attribute(clang::fallthrough) + #define CYTHON_FALLTHROUGH [[clang::fallthrough]] + #elif __has_cpp_attribute(gnu::fallthrough) + #define CYTHON_FALLTHROUGH [[gnu::fallthrough]] + #endif + #endif + #endif + #ifndef CYTHON_FALLTHROUGH + #if __has_attribute(fallthrough) + #define CYTHON_FALLTHROUGH __attribute__((fallthrough)) + #else + #define CYTHON_FALLTHROUGH + #endif + #endif + #if defined(__clang__) && defined(__apple_build_version__) + #if __apple_build_version__ < 7000000 + #undef CYTHON_FALLTHROUGH + #define CYTHON_FALLTHROUGH + #endif + #endif +#endif +#ifndef Py_UNREACHABLE + #define Py_UNREACHABLE() assert(0); abort() +#endif +#ifdef __cplusplus + template + struct __PYX_IS_UNSIGNED_IMPL {static const bool value = T(0) < T(-1);}; + #define __PYX_IS_UNSIGNED(type) (__PYX_IS_UNSIGNED_IMPL::value) +#else + #define __PYX_IS_UNSIGNED(type) (((type)-1) > 0) +#endif +#if CYTHON_COMPILING_IN_PYPY == 1 + #define __PYX_NEED_TP_PRINT_SLOT (PY_VERSION_HEX < 0x030A0000) +#else + #define __PYX_NEED_TP_PRINT_SLOT (PY_VERSION_HEX < 0x03090000) +#endif +#define __PYX_REINTERPRET_FUNCION(func_pointer, other_pointer) ((func_pointer)(void(*)(void))(other_pointer)) + +/* CInitCode */ +#ifndef CYTHON_INLINE + #if defined(__clang__) + #define CYTHON_INLINE __inline__ __attribute__ ((__unused__)) + #elif defined(__GNUC__) + #define CYTHON_INLINE __inline__ + #elif defined(_MSC_VER) + #define CYTHON_INLINE __inline + #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + #define CYTHON_INLINE inline + #else + #define CYTHON_INLINE + #endif +#endif + +/* PythonCompatibility */ +#define __PYX_BUILD_PY_SSIZE_T "n" +#define CYTHON_FORMAT_SSIZE_T "z" +#define __Pyx_BUILTIN_MODULE_NAME "builtins" +#define __Pyx_DefaultClassType PyType_Type +#if CYTHON_COMPILING_IN_LIMITED_API + #ifndef CO_OPTIMIZED + static int CO_OPTIMIZED; + #endif + #ifndef CO_NEWLOCALS + static int CO_NEWLOCALS; + #endif + #ifndef CO_VARARGS + static int CO_VARARGS; + #endif + #ifndef CO_VARKEYWORDS + static int CO_VARKEYWORDS; + #endif + #ifndef CO_ASYNC_GENERATOR + static int CO_ASYNC_GENERATOR; + #endif + #ifndef CO_GENERATOR + static int CO_GENERATOR; + #endif + #ifndef CO_COROUTINE + static int CO_COROUTINE; + #endif +#else + #ifndef CO_COROUTINE + #define CO_COROUTINE 0x80 + #endif + #ifndef CO_ASYNC_GENERATOR + #define CO_ASYNC_GENERATOR 0x200 + #endif +#endif +static int __Pyx_init_co_variables(void); +#if PY_VERSION_HEX >= 0x030900A4 || defined(Py_IS_TYPE) + #define __Pyx_IS_TYPE(ob, type) Py_IS_TYPE(ob, type) +#else + #define __Pyx_IS_TYPE(ob, type) (((const PyObject*)ob)->ob_type == (type)) +#endif +#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_Is) + #define __Pyx_Py_Is(x, y) Py_Is(x, y) +#else + #define __Pyx_Py_Is(x, y) ((x) == (y)) +#endif +#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsNone) + #define __Pyx_Py_IsNone(ob) Py_IsNone(ob) +#else + #define __Pyx_Py_IsNone(ob) __Pyx_Py_Is((ob), Py_None) +#endif +#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsTrue) + #define __Pyx_Py_IsTrue(ob) Py_IsTrue(ob) +#else + #define __Pyx_Py_IsTrue(ob) __Pyx_Py_Is((ob), Py_True) +#endif +#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsFalse) + #define __Pyx_Py_IsFalse(ob) Py_IsFalse(ob) +#else + #define __Pyx_Py_IsFalse(ob) __Pyx_Py_Is((ob), Py_False) +#endif +#define __Pyx_NoneAsNull(obj) (__Pyx_Py_IsNone(obj) ? NULL : (obj)) +#if PY_VERSION_HEX >= 0x030900F0 && !CYTHON_COMPILING_IN_PYPY + #define __Pyx_PyObject_GC_IsFinalized(o) PyObject_GC_IsFinalized(o) +#else + #define __Pyx_PyObject_GC_IsFinalized(o) _PyGC_FINALIZED(o) +#endif +#ifndef Py_TPFLAGS_CHECKTYPES + #define Py_TPFLAGS_CHECKTYPES 0 +#endif +#ifndef Py_TPFLAGS_HAVE_INDEX + #define Py_TPFLAGS_HAVE_INDEX 0 +#endif +#ifndef Py_TPFLAGS_HAVE_NEWBUFFER + #define Py_TPFLAGS_HAVE_NEWBUFFER 0 +#endif +#ifndef Py_TPFLAGS_HAVE_FINALIZE + #define Py_TPFLAGS_HAVE_FINALIZE 0 +#endif +#ifndef Py_TPFLAGS_SEQUENCE + #define Py_TPFLAGS_SEQUENCE 0 +#endif +#ifndef Py_TPFLAGS_MAPPING + #define Py_TPFLAGS_MAPPING 0 +#endif +#ifndef Py_TPFLAGS_IMMUTABLETYPE + #define Py_TPFLAGS_IMMUTABLETYPE (1UL << 8) +#endif +#ifndef Py_TPFLAGS_DISALLOW_INSTANTIATION + #define Py_TPFLAGS_DISALLOW_INSTANTIATION (1UL << 7) +#endif +#ifndef METH_STACKLESS + #define METH_STACKLESS 0 +#endif +#ifndef METH_FASTCALL + #ifndef METH_FASTCALL + #define METH_FASTCALL 0x80 + #endif + typedef PyObject *(*__Pyx_PyCFunctionFast) (PyObject *self, PyObject *const *args, Py_ssize_t nargs); + typedef PyObject *(*__Pyx_PyCFunctionFastWithKeywords) (PyObject *self, PyObject *const *args, + Py_ssize_t nargs, PyObject *kwnames); +#else + #if PY_VERSION_HEX >= 0x030d00A4 + # define __Pyx_PyCFunctionFast PyCFunctionFast + # define __Pyx_PyCFunctionFastWithKeywords PyCFunctionFastWithKeywords + #else + # define __Pyx_PyCFunctionFast _PyCFunctionFast + # define __Pyx_PyCFunctionFastWithKeywords _PyCFunctionFastWithKeywords + #endif +#endif +#if CYTHON_METH_FASTCALL + #define __Pyx_METH_FASTCALL METH_FASTCALL + #define __Pyx_PyCFunction_FastCall __Pyx_PyCFunctionFast + #define __Pyx_PyCFunction_FastCallWithKeywords __Pyx_PyCFunctionFastWithKeywords +#else + #define __Pyx_METH_FASTCALL METH_VARARGS + #define __Pyx_PyCFunction_FastCall PyCFunction + #define __Pyx_PyCFunction_FastCallWithKeywords PyCFunctionWithKeywords +#endif +#if CYTHON_VECTORCALL + #define __pyx_vectorcallfunc vectorcallfunc + #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET PY_VECTORCALL_ARGUMENTS_OFFSET + #define __Pyx_PyVectorcall_NARGS(n) PyVectorcall_NARGS((size_t)(n)) +#else + #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET 0 + #define __Pyx_PyVectorcall_NARGS(n) ((Py_ssize_t)(n)) +#endif +#if PY_VERSION_HEX >= 0x030900B1 +#define __Pyx_PyCFunction_CheckExact(func) PyCFunction_CheckExact(func) +#else +#define __Pyx_PyCFunction_CheckExact(func) PyCFunction_Check(func) +#endif +#define __Pyx_CyOrPyCFunction_Check(func) PyCFunction_Check(func) +#if CYTHON_COMPILING_IN_CPYTHON +#define __Pyx_CyOrPyCFunction_GET_FUNCTION(func) (((PyCFunctionObject*)(func))->m_ml->ml_meth) +#elif !CYTHON_COMPILING_IN_LIMITED_API +#define __Pyx_CyOrPyCFunction_GET_FUNCTION(func) PyCFunction_GET_FUNCTION(func) +#endif +#if CYTHON_COMPILING_IN_CPYTHON +#define __Pyx_CyOrPyCFunction_GET_FLAGS(func) (((PyCFunctionObject*)(func))->m_ml->ml_flags) +static CYTHON_INLINE PyObject* __Pyx_CyOrPyCFunction_GET_SELF(PyObject *func) { + return (__Pyx_CyOrPyCFunction_GET_FLAGS(func) & METH_STATIC) ? NULL : ((PyCFunctionObject*)func)->m_self; +} +#endif +static CYTHON_INLINE int __Pyx__IsSameCFunction(PyObject *func, void (*cfunc)(void)) { +#if CYTHON_COMPILING_IN_LIMITED_API + return PyCFunction_Check(func) && PyCFunction_GetFunction(func) == (PyCFunction) cfunc; +#else + return PyCFunction_Check(func) && PyCFunction_GET_FUNCTION(func) == (PyCFunction) cfunc; +#endif +} +#define __Pyx_IsSameCFunction(func, cfunc) __Pyx__IsSameCFunction(func, cfunc) +#if PY_VERSION_HEX < 0x03090000 || (CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030A0000) + #define __Pyx_PyType_FromModuleAndSpec(m, s, b) ((void)m, PyType_FromSpecWithBases(s, b)) + typedef PyObject *(*__Pyx_PyCMethod)(PyObject *, PyTypeObject *, PyObject *const *, size_t, PyObject *); +#else + #define __Pyx_PyType_FromModuleAndSpec(m, s, b) PyType_FromModuleAndSpec(m, s, b) + #define __Pyx_PyCMethod PyCMethod +#endif +#ifndef METH_METHOD + #define METH_METHOD 0x200 +#endif +#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc) + #define PyObject_Malloc(s) PyMem_Malloc(s) + #define PyObject_Free(p) PyMem_Free(p) + #define PyObject_Realloc(p) PyMem_Realloc(p) +#endif +#if CYTHON_COMPILING_IN_LIMITED_API + #define __Pyx_PyFrame_SetLineNumber(frame, lineno) +#elif CYTHON_COMPILING_IN_GRAAL && defined(GRAALPY_VERSION_NUM) && GRAALPY_VERSION_NUM > 0x19000000 + #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0) + #define __Pyx_PyFrame_SetLineNumber(frame, lineno) GraalPyFrame_SetLineNumber((frame), (lineno)) +#elif CYTHON_COMPILING_IN_GRAAL + #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0) + #define __Pyx_PyFrame_SetLineNumber(frame, lineno) _PyFrame_SetLineNumber((frame), (lineno)) +#else + #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0) + #define __Pyx_PyFrame_SetLineNumber(frame, lineno) (frame)->f_lineno = (lineno) +#endif +#if CYTHON_COMPILING_IN_LIMITED_API + #define __Pyx_PyThreadState_Current PyThreadState_Get() +#elif !CYTHON_FAST_THREAD_STATE + #define __Pyx_PyThreadState_Current PyThreadState_GET() +#elif PY_VERSION_HEX >= 0x030d00A1 + #define __Pyx_PyThreadState_Current PyThreadState_GetUnchecked() +#else + #define __Pyx_PyThreadState_Current _PyThreadState_UncheckedGet() +#endif +#if CYTHON_USE_MODULE_STATE +static CYTHON_INLINE void *__Pyx__PyModule_GetState(PyObject *op) +{ + void *result; + result = PyModule_GetState(op); + if (!result) + Py_FatalError("Couldn't find the module state"); + return result; +} +#define __Pyx_PyModule_GetState(o) (__pyx_mstatetype *)__Pyx__PyModule_GetState(o) +#else +#define __Pyx_PyModule_GetState(op) ((void)op,__pyx_mstate_global) +#endif +#define __Pyx_PyObject_GetSlot(obj, name, func_ctype) __Pyx_PyType_GetSlot(Py_TYPE((PyObject *) obj), name, func_ctype) +#define __Pyx_PyObject_TryGetSlot(obj, name, func_ctype) __Pyx_PyType_TryGetSlot(Py_TYPE(obj), name, func_ctype) +#define __Pyx_PyObject_GetSubSlot(obj, sub, name, func_ctype) __Pyx_PyType_GetSubSlot(Py_TYPE(obj), sub, name, func_ctype) +#define __Pyx_PyObject_TryGetSubSlot(obj, sub, name, func_ctype) __Pyx_PyType_TryGetSubSlot(Py_TYPE(obj), sub, name, func_ctype) +#if CYTHON_USE_TYPE_SLOTS + #define __Pyx_PyType_GetSlot(type, name, func_ctype) ((type)->name) + #define __Pyx_PyType_TryGetSlot(type, name, func_ctype) __Pyx_PyType_GetSlot(type, name, func_ctype) + #define __Pyx_PyType_GetSubSlot(type, sub, name, func_ctype) (((type)->sub) ? ((type)->sub->name) : NULL) + #define __Pyx_PyType_TryGetSubSlot(type, sub, name, func_ctype) __Pyx_PyType_GetSubSlot(type, sub, name, func_ctype) +#else + #define __Pyx_PyType_GetSlot(type, name, func_ctype) ((func_ctype) PyType_GetSlot((type), Py_##name)) + #define __Pyx_PyType_TryGetSlot(type, name, func_ctype)\ + ((__PYX_LIMITED_VERSION_HEX >= 0x030A0000 ||\ + (PyType_GetFlags(type) & Py_TPFLAGS_HEAPTYPE) || __Pyx_get_runtime_version() >= 0x030A0000) ?\ + __Pyx_PyType_GetSlot(type, name, func_ctype) : NULL) + #define __Pyx_PyType_GetSubSlot(obj, sub, name, func_ctype) __Pyx_PyType_GetSlot(obj, name, func_ctype) + #define __Pyx_PyType_TryGetSubSlot(obj, sub, name, func_ctype) __Pyx_PyType_TryGetSlot(obj, name, func_ctype) +#endif +#if CYTHON_COMPILING_IN_CPYTHON || defined(_PyDict_NewPresized) +#define __Pyx_PyDict_NewPresized(n) ((n <= 8) ? PyDict_New() : _PyDict_NewPresized(n)) +#else +#define __Pyx_PyDict_NewPresized(n) PyDict_New() +#endif +#define __Pyx_PyNumber_Divide(x,y) PyNumber_TrueDivide(x,y) +#define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceTrueDivide(x,y) +#if CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_UNICODE_INTERNALS +#define __Pyx_PyDict_GetItemStrWithError(dict, name) _PyDict_GetItem_KnownHash(dict, name, ((PyASCIIObject *) name)->hash) +static CYTHON_INLINE PyObject * __Pyx_PyDict_GetItemStr(PyObject *dict, PyObject *name) { + PyObject *res = __Pyx_PyDict_GetItemStrWithError(dict, name); + if (res == NULL) PyErr_Clear(); + return res; +} +#elif !CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07020000 +#define __Pyx_PyDict_GetItemStrWithError PyDict_GetItemWithError +#define __Pyx_PyDict_GetItemStr PyDict_GetItem +#else +static CYTHON_INLINE PyObject * __Pyx_PyDict_GetItemStrWithError(PyObject *dict, PyObject *name) { +#if CYTHON_COMPILING_IN_PYPY + return PyDict_GetItem(dict, name); +#else + PyDictEntry *ep; + PyDictObject *mp = (PyDictObject*) dict; + long hash = ((PyStringObject *) name)->ob_shash; + assert(hash != -1); + ep = (mp->ma_lookup)(mp, name, hash); + if (ep == NULL) { + return NULL; + } + return ep->me_value; +#endif +} +#define __Pyx_PyDict_GetItemStr PyDict_GetItem +#endif +#if CYTHON_USE_TYPE_SLOTS + #define __Pyx_PyType_GetFlags(tp) (((PyTypeObject *)tp)->tp_flags) + #define __Pyx_PyType_HasFeature(type, feature) ((__Pyx_PyType_GetFlags(type) & (feature)) != 0) +#else + #define __Pyx_PyType_GetFlags(tp) (PyType_GetFlags((PyTypeObject *)tp)) + #define __Pyx_PyType_HasFeature(type, feature) PyType_HasFeature(type, feature) +#endif +#define __Pyx_PyObject_GetIterNextFunc(iterator) __Pyx_PyObject_GetSlot(iterator, tp_iternext, iternextfunc) +#if CYTHON_USE_TYPE_SPECS +#define __Pyx_PyHeapTypeObject_GC_Del(obj) {\ + PyTypeObject *type = Py_TYPE((PyObject*)obj);\ + assert(__Pyx_PyType_HasFeature(type, Py_TPFLAGS_HEAPTYPE));\ + PyObject_GC_Del(obj);\ + Py_DECREF(type);\ +} +#else +#define __Pyx_PyHeapTypeObject_GC_Del(obj) PyObject_GC_Del(obj) +#endif +#if CYTHON_COMPILING_IN_LIMITED_API + #define __Pyx_PyUnicode_READY(op) (0) + #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_ReadChar(u, i) + #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) ((void)u, 1114111U) + #define __Pyx_PyUnicode_KIND(u) ((void)u, (0)) + #define __Pyx_PyUnicode_DATA(u) ((void*)u) + #define __Pyx_PyUnicode_READ(k, d, i) ((void)k, PyUnicode_ReadChar((PyObject*)(d), i)) + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GetLength(u)) +#else + #if PY_VERSION_HEX >= 0x030C0000 + #define __Pyx_PyUnicode_READY(op) (0) + #else + #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\ + 0 : _PyUnicode_Ready((PyObject *)(op))) + #endif + #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i) + #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) PyUnicode_MAX_CHAR_VALUE(u) + #define __Pyx_PyUnicode_KIND(u) ((int)PyUnicode_KIND(u)) + #define __Pyx_PyUnicode_DATA(u) PyUnicode_DATA(u) + #define __Pyx_PyUnicode_READ(k, d, i) PyUnicode_READ(k, d, i) + #define __Pyx_PyUnicode_WRITE(k, d, i, ch) PyUnicode_WRITE(k, d, i, (Py_UCS4) ch) + #if PY_VERSION_HEX >= 0x030C0000 + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_LENGTH(u)) + #else + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03090000 + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : ((PyCompactUnicodeObject *)(u))->wstr_length)) + #else + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u))) + #endif + #endif +#endif +#if CYTHON_COMPILING_IN_PYPY + #define __Pyx_PyUnicode_Concat(a, b) PyNumber_Add(a, b) + #define __Pyx_PyUnicode_ConcatSafe(a, b) PyNumber_Add(a, b) +#else + #define __Pyx_PyUnicode_Concat(a, b) PyUnicode_Concat(a, b) + #define __Pyx_PyUnicode_ConcatSafe(a, b) ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\ + PyNumber_Add(a, b) : __Pyx_PyUnicode_Concat(a, b)) +#endif +#if CYTHON_COMPILING_IN_PYPY + #if !defined(PyUnicode_DecodeUnicodeEscape) + #define PyUnicode_DecodeUnicodeEscape(s, size, errors) PyUnicode_Decode(s, size, "unicode_escape", errors) + #endif + #if !defined(PyUnicode_Contains) + #define PyUnicode_Contains(u, s) PySequence_Contains(u, s) + #endif + #if !defined(PyByteArray_Check) + #define PyByteArray_Check(obj) PyObject_TypeCheck(obj, &PyByteArray_Type) + #endif + #if !defined(PyObject_Format) + #define PyObject_Format(obj, fmt) PyObject_CallMethod(obj, "__format__", "O", fmt) + #endif +#endif +#define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyUnicode_Check(b) && !PyUnicode_CheckExact(b)))) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b)) +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + #define __Pyx_PySequence_ListKeepNew(obj)\ + (likely(PyList_CheckExact(obj) && PyUnstable_Object_IsUniquelyReferenced(obj)) ? __Pyx_NewRef(obj) : PySequence_List(obj)) +#elif CYTHON_COMPILING_IN_CPYTHON + #define __Pyx_PySequence_ListKeepNew(obj)\ + (likely(PyList_CheckExact(obj) && Py_REFCNT(obj) == 1) ? __Pyx_NewRef(obj) : PySequence_List(obj)) +#else + #define __Pyx_PySequence_ListKeepNew(obj) PySequence_List(obj) +#endif +#ifndef PySet_CheckExact + #define PySet_CheckExact(obj) __Pyx_IS_TYPE(obj, &PySet_Type) +#endif +#if PY_VERSION_HEX >= 0x030900A4 + #define __Pyx_SET_REFCNT(obj, refcnt) Py_SET_REFCNT(obj, refcnt) + #define __Pyx_SET_SIZE(obj, size) Py_SET_SIZE(obj, size) +#else + #define __Pyx_SET_REFCNT(obj, refcnt) Py_REFCNT(obj) = (refcnt) + #define __Pyx_SET_SIZE(obj, size) Py_SIZE(obj) = (size) +#endif +enum __Pyx_ReferenceSharing { + __Pyx_ReferenceSharing_DefinitelyUnique, // We created it so we know it's unshared - no need to check + __Pyx_ReferenceSharing_OwnStrongReference, + __Pyx_ReferenceSharing_FunctionArgument, + __Pyx_ReferenceSharing_SharedReference, // Never trust it to be unshared because it's a global or similar +}; +#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING && PY_VERSION_HEX >= 0x030E0000 +#define __Pyx_IS_UNIQUELY_REFERENCED(o, sharing)\ + (sharing == __Pyx_ReferenceSharing_DefinitelyUnique ? 1 :\ + (sharing == __Pyx_ReferenceSharing_FunctionArgument ? PyUnstable_Object_IsUniqueReferencedTemporary(o) :\ + (sharing == __Pyx_ReferenceSharing_OwnStrongReference ? PyUnstable_Object_IsUniquelyReferenced(o) : 0))) +#elif (CYTHON_COMPILING_IN_CPYTHON && !CYTHON_COMPILING_IN_CPYTHON_FREETHREADING) || CYTHON_COMPILING_IN_LIMITED_API +#define __Pyx_IS_UNIQUELY_REFERENCED(o, sharing) (((void)sharing), Py_REFCNT(o) == 1) +#else +#define __Pyx_IS_UNIQUELY_REFERENCED(o, sharing) (((void)o), ((void)sharing), 0) +#endif +#if CYTHON_AVOID_BORROWED_REFS || CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS + #if __PYX_LIMITED_VERSION_HEX >= 0x030d0000 + #define __Pyx_PyList_GetItemRef(o, i) PyList_GetItemRef(o, i) + #elif CYTHON_COMPILING_IN_LIMITED_API || !CYTHON_ASSUME_SAFE_MACROS + #define __Pyx_PyList_GetItemRef(o, i) (likely((i) >= 0) ? PySequence_GetItem(o, i) : (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL)) + #else + #define __Pyx_PyList_GetItemRef(o, i) PySequence_ITEM(o, i) + #endif +#elif CYTHON_COMPILING_IN_LIMITED_API || !CYTHON_ASSUME_SAFE_MACROS + #if __PYX_LIMITED_VERSION_HEX >= 0x030d0000 + #define __Pyx_PyList_GetItemRef(o, i) PyList_GetItemRef(o, i) + #else + #define __Pyx_PyList_GetItemRef(o, i) __Pyx_XNewRef(PyList_GetItem(o, i)) + #endif +#else + #define __Pyx_PyList_GetItemRef(o, i) __Pyx_NewRef(PyList_GET_ITEM(o, i)) +#endif +#if CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS && !CYTHON_COMPILING_IN_LIMITED_API && CYTHON_ASSUME_SAFE_MACROS + #define __Pyx_PyList_GetItemRefFast(o, i, unsafe_shared) (__Pyx_IS_UNIQUELY_REFERENCED(o, unsafe_shared) ?\ + __Pyx_NewRef(PyList_GET_ITEM(o, i)) : __Pyx_PyList_GetItemRef(o, i)) +#else + #define __Pyx_PyList_GetItemRefFast(o, i, unsafe_shared) __Pyx_PyList_GetItemRef(o, i) +#endif +#if __PYX_LIMITED_VERSION_HEX >= 0x030d0000 +#define __Pyx_PyDict_GetItemRef(dict, key, result) PyDict_GetItemRef(dict, key, result) +#elif CYTHON_AVOID_BORROWED_REFS || CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS +static CYTHON_INLINE int __Pyx_PyDict_GetItemRef(PyObject *dict, PyObject *key, PyObject **result) { + *result = PyObject_GetItem(dict, key); + if (*result == NULL) { + if (PyErr_ExceptionMatches(PyExc_KeyError)) { + PyErr_Clear(); + return 0; + } + return -1; + } + return 1; +} +#else +static CYTHON_INLINE int __Pyx_PyDict_GetItemRef(PyObject *dict, PyObject *key, PyObject **result) { + *result = PyDict_GetItemWithError(dict, key); + if (*result == NULL) { + return PyErr_Occurred() ? -1 : 0; + } + Py_INCREF(*result); + return 1; +} +#endif +#if defined(CYTHON_DEBUG_VISIT_CONST) && CYTHON_DEBUG_VISIT_CONST + #define __Pyx_VISIT_CONST(obj) Py_VISIT(obj) +#else + #define __Pyx_VISIT_CONST(obj) +#endif +#if CYTHON_ASSUME_SAFE_MACROS + #define __Pyx_PySequence_ITEM(o, i) PySequence_ITEM(o, i) + #define __Pyx_PySequence_SIZE(seq) Py_SIZE(seq) + #define __Pyx_PyTuple_SET_ITEM(o, i, v) (PyTuple_SET_ITEM(o, i, v), (0)) + #define __Pyx_PyTuple_GET_ITEM(o, i) PyTuple_GET_ITEM(o, i) + #define __Pyx_PyList_SET_ITEM(o, i, v) (PyList_SET_ITEM(o, i, v), (0)) + #define __Pyx_PyList_GET_ITEM(o, i) PyList_GET_ITEM(o, i) +#else + #define __Pyx_PySequence_ITEM(o, i) PySequence_GetItem(o, i) + #define __Pyx_PySequence_SIZE(seq) PySequence_Size(seq) + #define __Pyx_PyTuple_SET_ITEM(o, i, v) PyTuple_SetItem(o, i, v) + #define __Pyx_PyTuple_GET_ITEM(o, i) PyTuple_GetItem(o, i) + #define __Pyx_PyList_SET_ITEM(o, i, v) PyList_SetItem(o, i, v) + #define __Pyx_PyList_GET_ITEM(o, i) PyList_GetItem(o, i) +#endif +#if CYTHON_ASSUME_SAFE_SIZE + #define __Pyx_PyTuple_GET_SIZE(o) PyTuple_GET_SIZE(o) + #define __Pyx_PyList_GET_SIZE(o) PyList_GET_SIZE(o) + #define __Pyx_PySet_GET_SIZE(o) PySet_GET_SIZE(o) + #define __Pyx_PyBytes_GET_SIZE(o) PyBytes_GET_SIZE(o) + #define __Pyx_PyByteArray_GET_SIZE(o) PyByteArray_GET_SIZE(o) + #define __Pyx_PyUnicode_GET_LENGTH(o) PyUnicode_GET_LENGTH(o) +#else + #define __Pyx_PyTuple_GET_SIZE(o) PyTuple_Size(o) + #define __Pyx_PyList_GET_SIZE(o) PyList_Size(o) + #define __Pyx_PySet_GET_SIZE(o) PySet_Size(o) + #define __Pyx_PyBytes_GET_SIZE(o) PyBytes_Size(o) + #define __Pyx_PyByteArray_GET_SIZE(o) PyByteArray_Size(o) + #define __Pyx_PyUnicode_GET_LENGTH(o) PyUnicode_GetLength(o) +#endif +#if CYTHON_COMPILING_IN_PYPY && !defined(PyUnicode_InternFromString) + #define PyUnicode_InternFromString(s) PyUnicode_FromString(s) +#endif +#define __Pyx_PyLong_FromHash_t PyLong_FromSsize_t +#define __Pyx_PyLong_AsHash_t __Pyx_PyIndex_AsSsize_t +#if __PYX_LIMITED_VERSION_HEX >= 0x030A0000 + #define __Pyx_PySendResult PySendResult +#else + typedef enum { + PYGEN_RETURN = 0, + PYGEN_ERROR = -1, + PYGEN_NEXT = 1, + } __Pyx_PySendResult; +#endif +#if CYTHON_COMPILING_IN_LIMITED_API || PY_VERSION_HEX < 0x030A00A3 + typedef __Pyx_PySendResult (*__Pyx_pyiter_sendfunc)(PyObject *iter, PyObject *value, PyObject **result); +#else + #define __Pyx_pyiter_sendfunc sendfunc +#endif +#if !CYTHON_USE_AM_SEND +#define __PYX_HAS_PY_AM_SEND 0 +#elif __PYX_LIMITED_VERSION_HEX >= 0x030A0000 +#define __PYX_HAS_PY_AM_SEND 1 +#else +#define __PYX_HAS_PY_AM_SEND 2 // our own backported implementation +#endif +#if __PYX_HAS_PY_AM_SEND < 2 + #define __Pyx_PyAsyncMethodsStruct PyAsyncMethods +#else + typedef struct { + unaryfunc am_await; + unaryfunc am_aiter; + unaryfunc am_anext; + __Pyx_pyiter_sendfunc am_send; + } __Pyx_PyAsyncMethodsStruct; + #define __Pyx_SlotTpAsAsync(s) ((PyAsyncMethods*)(s)) +#endif +#if CYTHON_USE_AM_SEND && PY_VERSION_HEX < 0x030A00F0 + #define __Pyx_TPFLAGS_HAVE_AM_SEND (1UL << 21) +#else + #define __Pyx_TPFLAGS_HAVE_AM_SEND (0) +#endif +#if PY_VERSION_HEX >= 0x03090000 +#define __Pyx_PyInterpreterState_Get() PyInterpreterState_Get() +#else +#define __Pyx_PyInterpreterState_Get() PyThreadState_Get()->interp +#endif +#if CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030A0000 +#ifdef __cplusplus +extern "C" +#endif +PyAPI_FUNC(void *) PyMem_Calloc(size_t nelem, size_t elsize); +#endif +#if CYTHON_COMPILING_IN_LIMITED_API +static int __Pyx_init_co_variable(PyObject *inspect, const char* name, int *write_to) { + int value; + PyObject *py_value = PyObject_GetAttrString(inspect, name); + if (!py_value) return 0; + value = (int) PyLong_AsLong(py_value); + Py_DECREF(py_value); + *write_to = value; + return value != -1 || !PyErr_Occurred(); +} +static int __Pyx_init_co_variables(void) { + PyObject *inspect; + int result; + inspect = PyImport_ImportModule("inspect"); + result = +#if !defined(CO_OPTIMIZED) + __Pyx_init_co_variable(inspect, "CO_OPTIMIZED", &CO_OPTIMIZED) && +#endif +#if !defined(CO_NEWLOCALS) + __Pyx_init_co_variable(inspect, "CO_NEWLOCALS", &CO_NEWLOCALS) && +#endif +#if !defined(CO_VARARGS) + __Pyx_init_co_variable(inspect, "CO_VARARGS", &CO_VARARGS) && +#endif +#if !defined(CO_VARKEYWORDS) + __Pyx_init_co_variable(inspect, "CO_VARKEYWORDS", &CO_VARKEYWORDS) && +#endif +#if !defined(CO_ASYNC_GENERATOR) + __Pyx_init_co_variable(inspect, "CO_ASYNC_GENERATOR", &CO_ASYNC_GENERATOR) && +#endif +#if !defined(CO_GENERATOR) + __Pyx_init_co_variable(inspect, "CO_GENERATOR", &CO_GENERATOR) && +#endif +#if !defined(CO_COROUTINE) + __Pyx_init_co_variable(inspect, "CO_COROUTINE", &CO_COROUTINE) && +#endif + 1; + Py_DECREF(inspect); + return result ? 0 : -1; +} +#else +static int __Pyx_init_co_variables(void) { + return 0; // It's a limited API-only feature +} +#endif + +/* MathInitCode */ +#if defined(_WIN32) || defined(WIN32) || defined(MS_WINDOWS) + #ifndef _USE_MATH_DEFINES + #define _USE_MATH_DEFINES + #endif +#endif +#include +#if defined(__CYGWIN__) && defined(_LDBL_EQ_DBL) +#define __Pyx_truncl trunc +#else +#define __Pyx_truncl truncl +#endif + +#ifndef CYTHON_CLINE_IN_TRACEBACK_RUNTIME +#define CYTHON_CLINE_IN_TRACEBACK_RUNTIME 0 +#endif +#ifndef CYTHON_CLINE_IN_TRACEBACK +#define CYTHON_CLINE_IN_TRACEBACK CYTHON_CLINE_IN_TRACEBACK_RUNTIME +#endif +#if CYTHON_CLINE_IN_TRACEBACK +#define __PYX_MARK_ERR_POS(f_index, lineno) { __pyx_filename = __pyx_f[f_index]; (void) __pyx_filename; __pyx_lineno = lineno; (void) __pyx_lineno; __pyx_clineno = __LINE__; (void) __pyx_clineno; } +#else +#define __PYX_MARK_ERR_POS(f_index, lineno) { __pyx_filename = __pyx_f[f_index]; (void) __pyx_filename; __pyx_lineno = lineno; (void) __pyx_lineno; (void) __pyx_clineno; } +#endif +#define __PYX_ERR(f_index, lineno, Ln_error) \ + { __PYX_MARK_ERR_POS(f_index, lineno) goto Ln_error; } + +#ifdef CYTHON_EXTERN_C + #undef __PYX_EXTERN_C + #define __PYX_EXTERN_C CYTHON_EXTERN_C +#elif defined(__PYX_EXTERN_C) + #ifdef _MSC_VER + #pragma message ("Please do not define the '__PYX_EXTERN_C' macro externally. Use 'CYTHON_EXTERN_C' instead.") + #else + #warning Please do not define the '__PYX_EXTERN_C' macro externally. Use 'CYTHON_EXTERN_C' instead. + #endif +#else + #ifdef __cplusplus + #define __PYX_EXTERN_C extern "C" + #else + #define __PYX_EXTERN_C extern + #endif +#endif + +#define __PYX_HAVE__selectolax__parser +#define __PYX_HAVE_API__selectolax__parser +/* Early includes */ +#include "myhtml/myhtml.h" +#include "myhtml/tree.h" +#include "myhtml/serialization.h" +#include "myencoding/encoding.h" +#include "mycss/mycss.h" +#include "modest/finder/finder.h" +#include +#include +#include +#ifdef _OPENMP +#include +#endif /* _OPENMP */ + +#if defined(PYREX_WITHOUT_ASSERTIONS) && !defined(CYTHON_WITHOUT_ASSERTIONS) +#define CYTHON_WITHOUT_ASSERTIONS +#endif + +#define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0 +#define __PYX_DEFAULT_STRING_ENCODING_IS_UTF8 0 +#define __PYX_DEFAULT_STRING_ENCODING "" +#define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString +#define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize +#define __Pyx_uchar_cast(c) ((unsigned char)c) +#define __Pyx_long_cast(x) ((long)x) +#define __Pyx_fits_Py_ssize_t(v, type, is_signed) (\ + (sizeof(type) < sizeof(Py_ssize_t)) ||\ + (sizeof(type) > sizeof(Py_ssize_t) &&\ + likely(v < (type)PY_SSIZE_T_MAX ||\ + v == (type)PY_SSIZE_T_MAX) &&\ + (!is_signed || likely(v > (type)PY_SSIZE_T_MIN ||\ + v == (type)PY_SSIZE_T_MIN))) ||\ + (sizeof(type) == sizeof(Py_ssize_t) &&\ + (is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\ + v == (type)PY_SSIZE_T_MAX))) ) +static CYTHON_INLINE int __Pyx_is_valid_index(Py_ssize_t i, Py_ssize_t limit) { + return (size_t) i < (size_t) limit; +} +#if defined (__cplusplus) && __cplusplus >= 201103L + #include + #define __Pyx_sst_abs(value) std::abs(value) +#elif SIZEOF_INT >= SIZEOF_SIZE_T + #define __Pyx_sst_abs(value) abs(value) +#elif SIZEOF_LONG >= SIZEOF_SIZE_T + #define __Pyx_sst_abs(value) labs(value) +#elif defined (_MSC_VER) + #define __Pyx_sst_abs(value) ((Py_ssize_t)_abs64(value)) +#elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + #define __Pyx_sst_abs(value) llabs(value) +#elif defined (__GNUC__) + #define __Pyx_sst_abs(value) __builtin_llabs(value) +#else + #define __Pyx_sst_abs(value) ((value<0) ? -value : value) +#endif +static CYTHON_INLINE Py_ssize_t __Pyx_ssize_strlen(const char *s); +static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject*); +static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length); +static CYTHON_INLINE PyObject* __Pyx_PyByteArray_FromString(const char*); +#define __Pyx_PyByteArray_FromStringAndSize(s, l) PyByteArray_FromStringAndSize((const char*)s, l) +#define __Pyx_PyBytes_FromString PyBytes_FromString +#define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize +static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*); +#if CYTHON_ASSUME_SAFE_MACROS + #define __Pyx_PyBytes_AsWritableString(s) ((char*) PyBytes_AS_STRING(s)) + #define __Pyx_PyBytes_AsWritableSString(s) ((signed char*) PyBytes_AS_STRING(s)) + #define __Pyx_PyBytes_AsWritableUString(s) ((unsigned char*) PyBytes_AS_STRING(s)) + #define __Pyx_PyBytes_AsString(s) ((const char*) PyBytes_AS_STRING(s)) + #define __Pyx_PyBytes_AsSString(s) ((const signed char*) PyBytes_AS_STRING(s)) + #define __Pyx_PyBytes_AsUString(s) ((const unsigned char*) PyBytes_AS_STRING(s)) + #define __Pyx_PyByteArray_AsString(s) PyByteArray_AS_STRING(s) +#else + #define __Pyx_PyBytes_AsWritableString(s) ((char*) PyBytes_AsString(s)) + #define __Pyx_PyBytes_AsWritableSString(s) ((signed char*) PyBytes_AsString(s)) + #define __Pyx_PyBytes_AsWritableUString(s) ((unsigned char*) PyBytes_AsString(s)) + #define __Pyx_PyBytes_AsString(s) ((const char*) PyBytes_AsString(s)) + #define __Pyx_PyBytes_AsSString(s) ((const signed char*) PyBytes_AsString(s)) + #define __Pyx_PyBytes_AsUString(s) ((const unsigned char*) PyBytes_AsString(s)) + #define __Pyx_PyByteArray_AsString(s) PyByteArray_AsString(s) +#endif +#define __Pyx_PyObject_AsWritableString(s) ((char*)(__pyx_uintptr_t) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_AsWritableSString(s) ((signed char*)(__pyx_uintptr_t) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_AsWritableUString(s) ((unsigned char*)(__pyx_uintptr_t) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_AsSString(s) ((const signed char*) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_AsUString(s) ((const unsigned char*) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_FromCString(s) __Pyx_PyObject_FromString((const char*)s) +#define __Pyx_PyBytes_FromCString(s) __Pyx_PyBytes_FromString((const char*)s) +#define __Pyx_PyByteArray_FromCString(s) __Pyx_PyByteArray_FromString((const char*)s) +#define __Pyx_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s) +#define __Pyx_PyUnicode_FromOrdinal(o) PyUnicode_FromOrdinal((int)o) +#define __Pyx_PyUnicode_AsUnicode PyUnicode_AsUnicode +static CYTHON_INLINE PyObject *__Pyx_NewRef(PyObject *obj) { +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030a0000 || defined(Py_NewRef) + return Py_NewRef(obj); +#else + Py_INCREF(obj); + return obj; +#endif +} +static CYTHON_INLINE PyObject *__Pyx_XNewRef(PyObject *obj) { +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030a0000 || defined(Py_XNewRef) + return Py_XNewRef(obj); +#else + Py_XINCREF(obj); + return obj; +#endif +} +static CYTHON_INLINE PyObject *__Pyx_Owned_Py_None(int b); +static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b); +static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*); +static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject*); +static CYTHON_INLINE PyObject* __Pyx_PyNumber_Long(PyObject* x); +#define __Pyx_PySequence_Tuple(obj)\ + (likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj)) +static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*); +static CYTHON_INLINE PyObject * __Pyx_PyLong_FromSize_t(size_t); +static CYTHON_INLINE Py_hash_t __Pyx_PyIndex_AsHash_t(PyObject*); +#if CYTHON_ASSUME_SAFE_MACROS +#define __Pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x)) +#define __Pyx_PyFloat_AS_DOUBLE(x) PyFloat_AS_DOUBLE(x) +#else +#define __Pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x) +#define __Pyx_PyFloat_AS_DOUBLE(x) PyFloat_AsDouble(x) +#endif +#define __Pyx_PyFloat_AsFloat(x) ((float) __Pyx_PyFloat_AsDouble(x)) +#define __Pyx_PyNumber_Int(x) (PyLong_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Long(x)) +#if CYTHON_USE_PYLONG_INTERNALS + #if PY_VERSION_HEX >= 0x030C00A7 + #ifndef _PyLong_SIGN_MASK + #define _PyLong_SIGN_MASK 3 + #endif + #ifndef _PyLong_NON_SIZE_BITS + #define _PyLong_NON_SIZE_BITS 3 + #endif + #define __Pyx_PyLong_Sign(x) (((PyLongObject*)x)->long_value.lv_tag & _PyLong_SIGN_MASK) + #define __Pyx_PyLong_IsNeg(x) ((__Pyx_PyLong_Sign(x) & 2) != 0) + #define __Pyx_PyLong_IsNonNeg(x) (!__Pyx_PyLong_IsNeg(x)) + #define __Pyx_PyLong_IsZero(x) (__Pyx_PyLong_Sign(x) & 1) + #define __Pyx_PyLong_IsPos(x) (__Pyx_PyLong_Sign(x) == 0) + #define __Pyx_PyLong_CompactValueUnsigned(x) (__Pyx_PyLong_Digits(x)[0]) + #define __Pyx_PyLong_DigitCount(x) ((Py_ssize_t) (((PyLongObject*)x)->long_value.lv_tag >> _PyLong_NON_SIZE_BITS)) + #define __Pyx_PyLong_SignedDigitCount(x)\ + ((1 - (Py_ssize_t) __Pyx_PyLong_Sign(x)) * __Pyx_PyLong_DigitCount(x)) + #if defined(PyUnstable_Long_IsCompact) && defined(PyUnstable_Long_CompactValue) + #define __Pyx_PyLong_IsCompact(x) PyUnstable_Long_IsCompact((PyLongObject*) x) + #define __Pyx_PyLong_CompactValue(x) PyUnstable_Long_CompactValue((PyLongObject*) x) + #else + #define __Pyx_PyLong_IsCompact(x) (((PyLongObject*)x)->long_value.lv_tag < (2 << _PyLong_NON_SIZE_BITS)) + #define __Pyx_PyLong_CompactValue(x) ((1 - (Py_ssize_t) __Pyx_PyLong_Sign(x)) * (Py_ssize_t) __Pyx_PyLong_Digits(x)[0]) + #endif + typedef Py_ssize_t __Pyx_compact_pylong; + typedef size_t __Pyx_compact_upylong; + #else + #define __Pyx_PyLong_IsNeg(x) (Py_SIZE(x) < 0) + #define __Pyx_PyLong_IsNonNeg(x) (Py_SIZE(x) >= 0) + #define __Pyx_PyLong_IsZero(x) (Py_SIZE(x) == 0) + #define __Pyx_PyLong_IsPos(x) (Py_SIZE(x) > 0) + #define __Pyx_PyLong_CompactValueUnsigned(x) ((Py_SIZE(x) == 0) ? 0 : __Pyx_PyLong_Digits(x)[0]) + #define __Pyx_PyLong_DigitCount(x) __Pyx_sst_abs(Py_SIZE(x)) + #define __Pyx_PyLong_SignedDigitCount(x) Py_SIZE(x) + #define __Pyx_PyLong_IsCompact(x) (Py_SIZE(x) == 0 || Py_SIZE(x) == 1 || Py_SIZE(x) == -1) + #define __Pyx_PyLong_CompactValue(x)\ + ((Py_SIZE(x) == 0) ? (sdigit) 0 : ((Py_SIZE(x) < 0) ? -(sdigit)__Pyx_PyLong_Digits(x)[0] : (sdigit)__Pyx_PyLong_Digits(x)[0])) + typedef sdigit __Pyx_compact_pylong; + typedef digit __Pyx_compact_upylong; + #endif + #if PY_VERSION_HEX >= 0x030C00A5 + #define __Pyx_PyLong_Digits(x) (((PyLongObject*)x)->long_value.ob_digit) + #else + #define __Pyx_PyLong_Digits(x) (((PyLongObject*)x)->ob_digit) + #endif +#endif +#if __PYX_DEFAULT_STRING_ENCODING_IS_UTF8 + #define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL) +#elif __PYX_DEFAULT_STRING_ENCODING_IS_ASCII + #define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeASCII(c_str, size, NULL) +#else + #define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL) +#endif + + +/* Test for GCC > 2.95 */ +#if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))) + #define likely(x) __builtin_expect(!!(x), 1) + #define unlikely(x) __builtin_expect(!!(x), 0) +#else /* !__GNUC__ or GCC < 2.95 */ + #define likely(x) (x) + #define unlikely(x) (x) +#endif /* __GNUC__ */ +/* PretendToInitialize */ +#ifdef __cplusplus +#if __cplusplus > 201103L +#include +#endif +template +static void __Pyx_pretend_to_initialize(T* ptr) { +#if __cplusplus > 201103L + if ((std::is_trivially_default_constructible::value)) +#endif + *ptr = T(); + (void)ptr; +} +#else +static CYTHON_INLINE void __Pyx_pretend_to_initialize(void* ptr) { (void)ptr; } +#endif + + +#if !CYTHON_USE_MODULE_STATE +static PyObject *__pyx_m = NULL; +#endif +static int __pyx_lineno; +static int __pyx_clineno = 0; +static const char * const __pyx_cfilenm = __FILE__; +static const char *__pyx_filename; + +/* #### Code section: filename_table ### */ + +static const char* const __pyx_f[] = { + "selectolax/parser.pyx", + "", + "selectolax/modest/selection.pxi", + "selectolax/modest/node.pxi", + "selectolax/modest/../utils.pxi", + "selectolax/modest/util.pxi", + "selectolax/utils.pxi", + "selectolax/parser.pxd", + "cpython/bool.pxd", + "cpython/type.pxd", +}; +/* #### Code section: utility_code_proto_before_types ### */ +/* Atomics.proto (used by UnpackUnboundCMethod) */ +#include +#ifndef CYTHON_ATOMICS + #define CYTHON_ATOMICS 1 +#endif +#define __PYX_CYTHON_ATOMICS_ENABLED() CYTHON_ATOMICS +#define __PYX_GET_CYTHON_COMPILING_IN_CPYTHON_FREETHREADING() CYTHON_COMPILING_IN_CPYTHON_FREETHREADING +#define __pyx_atomic_int_type int +#define __pyx_nonatomic_int_type int +#if CYTHON_ATOMICS && (defined(__STDC_VERSION__) &&\ + (__STDC_VERSION__ >= 201112L) &&\ + !defined(__STDC_NO_ATOMICS__)) + #include +#elif CYTHON_ATOMICS && (defined(__cplusplus) && (\ + (__cplusplus >= 201103L) ||\ + (defined(_MSC_VER) && _MSC_VER >= 1700))) + #include +#endif +#if CYTHON_ATOMICS && (defined(__STDC_VERSION__) &&\ + (__STDC_VERSION__ >= 201112L) &&\ + !defined(__STDC_NO_ATOMICS__) &&\ + ATOMIC_INT_LOCK_FREE == 2) + #undef __pyx_atomic_int_type + #define __pyx_atomic_int_type atomic_int + #define __pyx_atomic_ptr_type atomic_uintptr_t + #define __pyx_nonatomic_ptr_type uintptr_t + #define __pyx_atomic_incr_relaxed(value) atomic_fetch_add_explicit(value, 1, memory_order_relaxed) + #define __pyx_atomic_incr_acq_rel(value) atomic_fetch_add_explicit(value, 1, memory_order_acq_rel) + #define __pyx_atomic_decr_acq_rel(value) atomic_fetch_sub_explicit(value, 1, memory_order_acq_rel) + #define __pyx_atomic_sub(value, arg) atomic_fetch_sub(value, arg) + #define __pyx_atomic_int_cmp_exchange(value, expected, desired) atomic_compare_exchange_strong(value, expected, desired) + #define __pyx_atomic_load(value) atomic_load(value) + #define __pyx_atomic_store(value, new_value) atomic_store(value, new_value) + #define __pyx_atomic_pointer_load_relaxed(value) atomic_load_explicit(value, memory_order_relaxed) + #define __pyx_atomic_pointer_load_acquire(value) atomic_load_explicit(value, memory_order_acquire) + #define __pyx_atomic_pointer_exchange(value, new_value) atomic_exchange(value, (__pyx_nonatomic_ptr_type)new_value) + #define __pyx_atomic_pointer_cmp_exchange(value, expected, desired) atomic_compare_exchange_strong(value, expected, desired) + #if defined(__PYX_DEBUG_ATOMICS) && defined(_MSC_VER) + #pragma message ("Using standard C atomics") + #elif defined(__PYX_DEBUG_ATOMICS) + #warning "Using standard C atomics" + #endif +#elif CYTHON_ATOMICS && (defined(__cplusplus) && (\ + (__cplusplus >= 201103L) ||\ +\ + (defined(_MSC_VER) && _MSC_VER >= 1700)) &&\ + ATOMIC_INT_LOCK_FREE == 2) + #undef __pyx_atomic_int_type + #define __pyx_atomic_int_type std::atomic_int + #define __pyx_atomic_ptr_type std::atomic_uintptr_t + #define __pyx_nonatomic_ptr_type uintptr_t + #define __pyx_atomic_incr_relaxed(value) std::atomic_fetch_add_explicit(value, 1, std::memory_order_relaxed) + #define __pyx_atomic_incr_acq_rel(value) std::atomic_fetch_add_explicit(value, 1, std::memory_order_acq_rel) + #define __pyx_atomic_decr_acq_rel(value) std::atomic_fetch_sub_explicit(value, 1, std::memory_order_acq_rel) + #define __pyx_atomic_sub(value, arg) std::atomic_fetch_sub(value, arg) + #define __pyx_atomic_int_cmp_exchange(value, expected, desired) std::atomic_compare_exchange_strong(value, expected, desired) + #define __pyx_atomic_load(value) std::atomic_load(value) + #define __pyx_atomic_store(value, new_value) std::atomic_store(value, new_value) + #define __pyx_atomic_pointer_load_relaxed(value) std::atomic_load_explicit(value, std::memory_order_relaxed) + #define __pyx_atomic_pointer_load_acquire(value) std::atomic_load_explicit(value, std::memory_order_acquire) + #define __pyx_atomic_pointer_exchange(value, new_value) std::atomic_exchange(value, (__pyx_nonatomic_ptr_type)new_value) + #define __pyx_atomic_pointer_cmp_exchange(value, expected, desired) std::atomic_compare_exchange_strong(value, expected, desired) + #if defined(__PYX_DEBUG_ATOMICS) && defined(_MSC_VER) + #pragma message ("Using standard C++ atomics") + #elif defined(__PYX_DEBUG_ATOMICS) + #warning "Using standard C++ atomics" + #endif +#elif CYTHON_ATOMICS && (__GNUC__ >= 5 || (__GNUC__ == 4 &&\ + (__GNUC_MINOR__ > 1 ||\ + (__GNUC_MINOR__ == 1 && __GNUC_PATCHLEVEL__ >= 2)))) + #define __pyx_atomic_ptr_type void* + #define __pyx_nonatomic_ptr_type void* + #define __pyx_atomic_incr_relaxed(value) __sync_fetch_and_add(value, 1) + #define __pyx_atomic_incr_acq_rel(value) __sync_fetch_and_add(value, 1) + #define __pyx_atomic_decr_acq_rel(value) __sync_fetch_and_sub(value, 1) + #define __pyx_atomic_sub(value, arg) __sync_fetch_and_sub(value, arg) + static CYTHON_INLINE int __pyx_atomic_int_cmp_exchange(__pyx_atomic_int_type* value, __pyx_nonatomic_int_type* expected, __pyx_nonatomic_int_type desired) { + __pyx_nonatomic_int_type old = __sync_val_compare_and_swap(value, *expected, desired); + int result = old == *expected; + *expected = old; + return result; + } + #define __pyx_atomic_load(value) __sync_fetch_and_add(value, 0) + #define __pyx_atomic_store(value, new_value) __sync_lock_test_and_set(value, new_value) + #define __pyx_atomic_pointer_load_relaxed(value) __sync_fetch_and_add(value, 0) + #define __pyx_atomic_pointer_load_acquire(value) __sync_fetch_and_add(value, 0) + #define __pyx_atomic_pointer_exchange(value, new_value) __sync_lock_test_and_set(value, (__pyx_atomic_ptr_type)new_value) + static CYTHON_INLINE int __pyx_atomic_pointer_cmp_exchange(__pyx_atomic_ptr_type* value, __pyx_nonatomic_ptr_type* expected, __pyx_nonatomic_ptr_type desired) { + __pyx_nonatomic_ptr_type old = __sync_val_compare_and_swap(value, *expected, desired); + int result = old == *expected; + *expected = old; + return result; + } + #ifdef __PYX_DEBUG_ATOMICS + #warning "Using GNU atomics" + #endif +#elif CYTHON_ATOMICS && defined(_MSC_VER) + #include + #undef __pyx_atomic_int_type + #define __pyx_atomic_int_type long + #define __pyx_atomic_ptr_type void* + #undef __pyx_nonatomic_int_type + #define __pyx_nonatomic_int_type long + #define __pyx_nonatomic_ptr_type void* + #pragma intrinsic (_InterlockedExchangeAdd, _InterlockedExchange, _InterlockedCompareExchange, _InterlockedCompareExchangePointer, _InterlockedExchangePointer) + #define __pyx_atomic_incr_relaxed(value) _InterlockedExchangeAdd(value, 1) + #define __pyx_atomic_incr_acq_rel(value) _InterlockedExchangeAdd(value, 1) + #define __pyx_atomic_decr_acq_rel(value) _InterlockedExchangeAdd(value, -1) + #define __pyx_atomic_sub(value, arg) _InterlockedExchangeAdd(value, -arg) + static CYTHON_INLINE int __pyx_atomic_int_cmp_exchange(__pyx_atomic_int_type* value, __pyx_nonatomic_int_type* expected, __pyx_nonatomic_int_type desired) { + __pyx_nonatomic_int_type old = _InterlockedCompareExchange(value, desired, *expected); + int result = old == *expected; + *expected = old; + return result; + } + #define __pyx_atomic_load(value) _InterlockedExchangeAdd(value, 0) + #define __pyx_atomic_store(value, new_value) _InterlockedExchange(value, new_value) + #define __pyx_atomic_pointer_load_relaxed(value) *(void * volatile *)value + #define __pyx_atomic_pointer_load_acquire(value) _InterlockedCompareExchangePointer(value, 0, 0) + #define __pyx_atomic_pointer_exchange(value, new_value) _InterlockedExchangePointer(value, (__pyx_atomic_ptr_type)new_value) + static CYTHON_INLINE int __pyx_atomic_pointer_cmp_exchange(__pyx_atomic_ptr_type* value, __pyx_nonatomic_ptr_type* expected, __pyx_nonatomic_ptr_type desired) { + __pyx_atomic_ptr_type old = _InterlockedCompareExchangePointer(value, desired, *expected); + int result = old == *expected; + *expected = old; + return result; + } + #ifdef __PYX_DEBUG_ATOMICS + #pragma message ("Using MSVC atomics") + #endif +#else + #undef CYTHON_ATOMICS + #define CYTHON_ATOMICS 0 + #ifdef __PYX_DEBUG_ATOMICS + #warning "Not using atomics" + #endif +#endif + +/* CriticalSectionsDefinition.proto (used by CriticalSections) */ +#if !CYTHON_COMPILING_IN_CPYTHON_FREETHREADING +#define __Pyx_PyCriticalSection void* +#define __Pyx_PyCriticalSection2 void* +#define __Pyx_PyCriticalSection_End(cs) +#define __Pyx_PyCriticalSection2_End(cs) +#else +#define __Pyx_PyCriticalSection PyCriticalSection +#define __Pyx_PyCriticalSection2 PyCriticalSection2 +#define __Pyx_PyCriticalSection_End PyCriticalSection_End +#define __Pyx_PyCriticalSection2_End PyCriticalSection2_End +#endif + +/* CriticalSections.proto (used by ParseKeywordsImpl) */ +#if !CYTHON_COMPILING_IN_CPYTHON_FREETHREADING +#define __Pyx_PyCriticalSection_Begin(cs, arg) (void)(cs) +#define __Pyx_PyCriticalSection2_Begin(cs, arg1, arg2) (void)(cs) +#else +#define __Pyx_PyCriticalSection_Begin PyCriticalSection_Begin +#define __Pyx_PyCriticalSection2_Begin PyCriticalSection2_Begin +#endif +#if PY_VERSION_HEX < 0x030d0000 || CYTHON_COMPILING_IN_LIMITED_API +#define __Pyx_BEGIN_CRITICAL_SECTION(o) { +#define __Pyx_END_CRITICAL_SECTION() } +#else +#define __Pyx_BEGIN_CRITICAL_SECTION Py_BEGIN_CRITICAL_SECTION +#define __Pyx_END_CRITICAL_SECTION Py_END_CRITICAL_SECTION +#endif + +/* NoFastGil.proto */ +#define __Pyx_PyGILState_Ensure PyGILState_Ensure +#define __Pyx_PyGILState_Release PyGILState_Release +#define __Pyx_FastGIL_Remember() +#define __Pyx_FastGIL_Forget() +#define __Pyx_FastGilFuncInit() + +/* IncludeStructmemberH.proto (used by FixUpExtensionType) */ +#include + +/* ForceInitThreads.proto */ +#ifndef __PYX_FORCE_INIT_THREADS + #define __PYX_FORCE_INIT_THREADS 0 +#endif + +/* #### Code section: numeric_typedefs ### */ +/* #### Code section: complex_type_declarations ### */ +/* #### Code section: type_declarations ### */ + +/*--- Type declarations ---*/ +struct __pyx_obj_10selectolax_6parser_HTMLParser; +struct __pyx_obj_10selectolax_6parser_Stack; +struct __pyx_obj_10selectolax_6parser_CSSSelector; +struct __pyx_obj_10selectolax_6parser_Selector; +struct __pyx_obj_10selectolax_6parser__Attributes; +struct __pyx_obj_10selectolax_6parser_Node; +struct __pyx_obj_10selectolax_6parser___pyx_scope_struct____iter__; +struct __pyx_obj_10selectolax_6parser___pyx_scope_struct_1_items; +struct __pyx_obj_10selectolax_6parser___pyx_scope_struct_2_values; +struct __pyx_obj_10selectolax_6parser___pyx_scope_struct_3_iter; +struct __pyx_obj_10selectolax_6parser___pyx_scope_struct_4_traverse; +struct __pyx_opt_args_10selectolax_6parser_4Node__text_deep; +struct __pyx_opt_args_10selectolax_6parser_append_text; + +/* "selectolax/modest/node.pxi":294 + * return text + * + * cdef inline _text_deep(self, myhtml_tree_node_t *node, separator='', strip=False): # <<<<<<<<<<<<<< + * text = "" + * cdef Stack stack = Stack(_STACK_SIZE) +*/ +struct __pyx_opt_args_10selectolax_6parser_4Node__text_deep { + int __pyx_n; + PyObject *separator; + PyObject *strip; +}; + +/* "selectolax/modest/node.pxi":977 + * stack.push(current_node.child) + * + * cdef inline str append_text(str text, str node_text, str separator='', bint strip=False): # <<<<<<<<<<<<<< + * if strip: + * text += node_text.strip() + separator +*/ +struct __pyx_opt_args_10selectolax_6parser_append_text { + int __pyx_n; + PyObject *separator; + int strip; +}; + +/* "selectolax/parser.pxd":550 + * + * + * cdef class HTMLParser: # <<<<<<<<<<<<<< + * cdef myhtml_tree_t *html_tree + * cdef public bint detect_encoding +*/ +struct __pyx_obj_10selectolax_6parser_HTMLParser { + PyObject_HEAD + struct __pyx_vtabstruct_10selectolax_6parser_HTMLParser *__pyx_vtab; + myhtml_tree_t *html_tree; + int detect_encoding; + int use_meta_tags; + myencoding_t _encoding; + PyObject *decode_errors; + PyObject *raw_html; + PyObject *cached_script_texts; + PyObject *cached_script_srcs; +}; + + +/* "selectolax/parser.pxd":570 + * + * + * cdef class Stack: # <<<<<<<<<<<<<< + * cdef size_t capacity + * cdef size_t top +*/ +struct __pyx_obj_10selectolax_6parser_Stack { + PyObject_HEAD + struct __pyx_vtabstruct_10selectolax_6parser_Stack *__pyx_vtab; + size_t capacity; + size_t top; + myhtml_tree_node_t **_stack; +}; + + +/* "selectolax/modest/selection.pxi":5 + * + * + * @cython.final # <<<<<<<<<<<<<< + * cdef class CSSSelector: + * +*/ +struct __pyx_obj_10selectolax_6parser_CSSSelector { + PyObject_HEAD + struct __pyx_vtabstruct_10selectolax_6parser_CSSSelector *__pyx_vtab; + char *c_selector; + mycss_entry_t *css_entry; + modest_finder_t *finder; + mycss_selectors_list_t *selectors_list; +}; + + +/* "selectolax/modest/selection.pxi":70 + * + * + * cdef class Selector: # <<<<<<<<<<<<<< + * """An advanced CSS selector that supports additional operations. + * +*/ +struct __pyx_obj_10selectolax_6parser_Selector { + PyObject_HEAD + struct __pyx_vtabstruct_10selectolax_6parser_Selector *__pyx_vtab; + struct __pyx_obj_10selectolax_6parser_Node *node; + PyObject *nodes; +}; + + +/* "selectolax/modest/node.pxi":48 + * return 0 + * + * cdef class _Attributes: # <<<<<<<<<<<<<< + * """A dict-like object that represents attributes.""" + * cdef myhtml_tree_node_t * node +*/ +struct __pyx_obj_10selectolax_6parser__Attributes { + PyObject_HEAD + struct __pyx_vtabstruct_10selectolax_6parser__Attributes *__pyx_vtab; + myhtml_tree_node_t *node; + PyObject *decode_errors; +}; + + +/* "selectolax/modest/node.pxi":145 + * Node + * + * cdef class Node: # <<<<<<<<<<<<<< + * """A class that represents HTML node (element).""" + * cdef myhtml_tree_node_t *node +*/ +struct __pyx_obj_10selectolax_6parser_Node { + PyObject_HEAD + struct __pyx_vtabstruct_10selectolax_6parser_Node *__pyx_vtab; + myhtml_tree_node_t *node; + struct __pyx_obj_10selectolax_6parser_HTMLParser *parser; +}; + + +/* "selectolax/modest/node.pxi":60 + * return obj + * + * def __iter__(self): # <<<<<<<<<<<<<< + * cdef myhtml_tree_attr_t *attr = myhtml_node_attribute_first(self.node) + * while attr: +*/ +struct __pyx_obj_10selectolax_6parser___pyx_scope_struct____iter__ { + PyObject_HEAD + myhtml_tree_attr_t *__pyx_v_attr; + PyObject *__pyx_v_key; + struct __pyx_obj_10selectolax_6parser__Attributes *__pyx_v_self; +}; + + +/* "selectolax/modest/node.pxi":102 + * return self.__iter__() + * + * def items(self): # <<<<<<<<<<<<<< + * for key in self.__iter__(): + * yield key, self[key] +*/ +struct __pyx_obj_10selectolax_6parser___pyx_scope_struct_1_items { + PyObject_HEAD + PyObject *__pyx_v_key; + struct __pyx_obj_10selectolax_6parser__Attributes *__pyx_v_self; + PyObject *__pyx_t_0; + Py_ssize_t __pyx_t_1; + PyObject *(*__pyx_t_2)(PyObject *); +}; + + +/* "selectolax/modest/node.pxi":106 + * yield key, self[key] + * + * def values(self): # <<<<<<<<<<<<<< + * for key in self.__iter__(): + * yield self[key] +*/ +struct __pyx_obj_10selectolax_6parser___pyx_scope_struct_2_values { + PyObject_HEAD + PyObject *__pyx_v_key; + struct __pyx_obj_10selectolax_6parser__Attributes *__pyx_v_self; + PyObject *__pyx_t_0; + Py_ssize_t __pyx_t_1; + PyObject *(*__pyx_t_2)(PyObject *); +}; + + +/* "selectolax/modest/node.pxi":329 + * return text + * + * def iter(self, include_text=False): # <<<<<<<<<<<<<< + * """Iterate over nodes on the current level. + * +*/ +struct __pyx_obj_10selectolax_6parser___pyx_scope_struct_3_iter { + PyObject_HEAD + PyObject *__pyx_v_include_text; + struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_next_node; + myhtml_tree_node_t *__pyx_v_node; + struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self; +}; + + +/* "selectolax/modest/node.pxi":354 + * node = node.next + * + * def traverse(self, include_text=False): # <<<<<<<<<<<<<< + * """Iterate over all child and next nodes starting from the current level. + * +*/ +struct __pyx_obj_10selectolax_6parser___pyx_scope_struct_4_traverse { + PyObject_HEAD + myhtml_tree_node_t *__pyx_v_current_node; + PyObject *__pyx_v_include_text; + struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_next_node; + struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self; + struct __pyx_obj_10selectolax_6parser_Stack *__pyx_v_stack; +}; + + + +/* "selectolax/parser.pyx":10 + * include "utils.pxi" + * + * cdef class HTMLParser: # <<<<<<<<<<<<<< + * """The HTML parser. + * +*/ + +struct __pyx_vtabstruct_10selectolax_6parser_HTMLParser { + void (*_detect_encoding)(struct __pyx_obj_10selectolax_6parser_HTMLParser *, char *, size_t); + int (*_parse_html)(struct __pyx_obj_10selectolax_6parser_HTMLParser *, char *, size_t); + struct __pyx_obj_10selectolax_6parser_HTMLParser *(*from_tree)(myhtml_tree_t *, PyObject *, int, int, PyObject *, myencoding_t); +}; +static struct __pyx_vtabstruct_10selectolax_6parser_HTMLParser *__pyx_vtabptr_10selectolax_6parser_HTMLParser; + + +/* "selectolax/modest/node.pxi":13 + * + * + * @cython.final # <<<<<<<<<<<<<< + * @cython.internal + * cdef class Stack: +*/ + +struct __pyx_vtabstruct_10selectolax_6parser_Stack { + int (*is_empty)(struct __pyx_obj_10selectolax_6parser_Stack *); + int (*push)(struct __pyx_obj_10selectolax_6parser_Stack *, myhtml_tree_node_t *); + myhtml_tree_node_t *(*pop)(struct __pyx_obj_10selectolax_6parser_Stack *); + int (*resize)(struct __pyx_obj_10selectolax_6parser_Stack *); +}; +static struct __pyx_vtabstruct_10selectolax_6parser_Stack *__pyx_vtabptr_10selectolax_6parser_Stack; +static int __pyx_f_10selectolax_6parser_5Stack_is_empty(struct __pyx_obj_10selectolax_6parser_Stack *); +static int __pyx_f_10selectolax_6parser_5Stack_push(struct __pyx_obj_10selectolax_6parser_Stack *, myhtml_tree_node_t *); +static myhtml_tree_node_t *__pyx_f_10selectolax_6parser_5Stack_pop(struct __pyx_obj_10selectolax_6parser_Stack *); +static int __pyx_f_10selectolax_6parser_5Stack_resize(struct __pyx_obj_10selectolax_6parser_Stack *); + + +/* "selectolax/modest/selection.pxi":5 + * + * + * @cython.final # <<<<<<<<<<<<<< + * cdef class CSSSelector: + * +*/ + +struct __pyx_vtabstruct_10selectolax_6parser_CSSSelector { + myhtml_collection_t *(*find)(struct __pyx_obj_10selectolax_6parser_CSSSelector *, myhtml_tree_node_t *); + int (*_create_css_parser)(struct __pyx_obj_10selectolax_6parser_CSSSelector *); + int (*_prepare_selector)(struct __pyx_obj_10selectolax_6parser_CSSSelector *, mycss_entry_t *, char const *, size_t); +}; +static struct __pyx_vtabstruct_10selectolax_6parser_CSSSelector *__pyx_vtabptr_10selectolax_6parser_CSSSelector; +static myhtml_collection_t *__pyx_f_10selectolax_6parser_11CSSSelector_find(struct __pyx_obj_10selectolax_6parser_CSSSelector *, myhtml_tree_node_t *); +static int __pyx_f_10selectolax_6parser_11CSSSelector__create_css_parser(struct __pyx_obj_10selectolax_6parser_CSSSelector *); +static int __pyx_f_10selectolax_6parser_11CSSSelector__prepare_selector(struct __pyx_obj_10selectolax_6parser_CSSSelector *, mycss_entry_t *, char const *, size_t); + + +/* "selectolax/modest/selection.pxi":70 + * + * + * cdef class Selector: # <<<<<<<<<<<<<< + * """An advanced CSS selector that supports additional operations. + * +*/ + +struct __pyx_vtabstruct_10selectolax_6parser_Selector { + PyObject *(*css)(struct __pyx_obj_10selectolax_6parser_Selector *, PyObject *, int __pyx_skip_dispatch); +}; +static struct __pyx_vtabstruct_10selectolax_6parser_Selector *__pyx_vtabptr_10selectolax_6parser_Selector; + + +/* "selectolax/modest/node.pxi":48 + * return 0 + * + * cdef class _Attributes: # <<<<<<<<<<<<<< + * """A dict-like object that represents attributes.""" + * cdef myhtml_tree_node_t * node +*/ + +struct __pyx_vtabstruct_10selectolax_6parser__Attributes { + struct __pyx_obj_10selectolax_6parser__Attributes *(*create)(myhtml_tree_node_t *, PyObject *); +}; +static struct __pyx_vtabstruct_10selectolax_6parser__Attributes *__pyx_vtabptr_10selectolax_6parser__Attributes; + + +/* "selectolax/modest/node.pxi":145 + * Node + * + * cdef class Node: # <<<<<<<<<<<<<< + * """A class that represents HTML node (element).""" + * cdef myhtml_tree_node_t *node +*/ + +struct __pyx_vtabstruct_10selectolax_6parser_Node { + struct __pyx_obj_10selectolax_6parser_Node *(*__pyx_new)(myhtml_tree_node_t *, struct __pyx_obj_10selectolax_6parser_HTMLParser *); + PyObject *(*_text_deep)(struct __pyx_obj_10selectolax_6parser_Node *, myhtml_tree_node_t *, struct __pyx_opt_args_10selectolax_6parser_4Node__text_deep *__pyx_optional_args); +}; +static struct __pyx_vtabstruct_10selectolax_6parser_Node *__pyx_vtabptr_10selectolax_6parser_Node; +static CYTHON_INLINE PyObject *__pyx_f_10selectolax_6parser_4Node__text_deep(struct __pyx_obj_10selectolax_6parser_Node *, myhtml_tree_node_t *, struct __pyx_opt_args_10selectolax_6parser_4Node__text_deep *__pyx_optional_args); +/* #### Code section: utility_code_proto ### */ + +/* --- Runtime support code (head) --- */ +/* Refnanny.proto */ +#ifndef CYTHON_REFNANNY + #define CYTHON_REFNANNY 0 +#endif +#if CYTHON_REFNANNY + typedef struct { + void (*INCREF)(void*, PyObject*, Py_ssize_t); + void (*DECREF)(void*, PyObject*, Py_ssize_t); + void (*GOTREF)(void*, PyObject*, Py_ssize_t); + void (*GIVEREF)(void*, PyObject*, Py_ssize_t); + void* (*SetupContext)(const char*, Py_ssize_t, const char*); + void (*FinishContext)(void**); + } __Pyx_RefNannyAPIStruct; + static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL; + static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); + #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL; + #define __Pyx_RefNannySetupContext(name, acquire_gil)\ + if (acquire_gil) {\ + PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ + __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), (__LINE__), (__FILE__));\ + PyGILState_Release(__pyx_gilstate_save);\ + } else {\ + __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), (__LINE__), (__FILE__));\ + } + #define __Pyx_RefNannyFinishContextNogil() {\ + PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ + __Pyx_RefNannyFinishContext();\ + PyGILState_Release(__pyx_gilstate_save);\ + } + #define __Pyx_RefNannyFinishContextNogil() {\ + PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ + __Pyx_RefNannyFinishContext();\ + PyGILState_Release(__pyx_gilstate_save);\ + } + #define __Pyx_RefNannyFinishContext()\ + __Pyx_RefNanny->FinishContext(&__pyx_refnanny) + #define __Pyx_INCREF(r) __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), (__LINE__)) + #define __Pyx_DECREF(r) __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), (__LINE__)) + #define __Pyx_GOTREF(r) __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), (__LINE__)) + #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), (__LINE__)) + #define __Pyx_XINCREF(r) do { if((r) == NULL); else {__Pyx_INCREF(r); }} while(0) + #define __Pyx_XDECREF(r) do { if((r) == NULL); else {__Pyx_DECREF(r); }} while(0) + #define __Pyx_XGOTREF(r) do { if((r) == NULL); else {__Pyx_GOTREF(r); }} while(0) + #define __Pyx_XGIVEREF(r) do { if((r) == NULL); else {__Pyx_GIVEREF(r);}} while(0) +#else + #define __Pyx_RefNannyDeclarations + #define __Pyx_RefNannySetupContext(name, acquire_gil) + #define __Pyx_RefNannyFinishContextNogil() + #define __Pyx_RefNannyFinishContext() + #define __Pyx_INCREF(r) Py_INCREF(r) + #define __Pyx_DECREF(r) Py_DECREF(r) + #define __Pyx_GOTREF(r) + #define __Pyx_GIVEREF(r) + #define __Pyx_XINCREF(r) Py_XINCREF(r) + #define __Pyx_XDECREF(r) Py_XDECREF(r) + #define __Pyx_XGOTREF(r) + #define __Pyx_XGIVEREF(r) +#endif +#define __Pyx_Py_XDECREF_SET(r, v) do {\ + PyObject *tmp = (PyObject *) r;\ + r = v; Py_XDECREF(tmp);\ + } while (0) +#define __Pyx_XDECREF_SET(r, v) do {\ + PyObject *tmp = (PyObject *) r;\ + r = v; __Pyx_XDECREF(tmp);\ + } while (0) +#define __Pyx_DECREF_SET(r, v) do {\ + PyObject *tmp = (PyObject *) r;\ + r = v; __Pyx_DECREF(tmp);\ + } while (0) +#define __Pyx_CLEAR(r) do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0) +#define __Pyx_XCLEAR(r) do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0) + +/* PyErrExceptionMatches.proto (used by PyObjectGetAttrStrNoError) */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_PyErr_ExceptionMatches(err) __Pyx_PyErr_ExceptionMatchesInState(__pyx_tstate, err) +static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err); +#else +#define __Pyx_PyErr_ExceptionMatches(err) PyErr_ExceptionMatches(err) +#endif + +/* PyThreadStateGet.proto (used by PyErrFetchRestore) */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_PyThreadState_declare PyThreadState *__pyx_tstate; +#define __Pyx_PyThreadState_assign __pyx_tstate = __Pyx_PyThreadState_Current; +#if PY_VERSION_HEX >= 0x030C00A6 +#define __Pyx_PyErr_Occurred() (__pyx_tstate->current_exception != NULL) +#define __Pyx_PyErr_CurrentExceptionType() (__pyx_tstate->current_exception ? (PyObject*) Py_TYPE(__pyx_tstate->current_exception) : (PyObject*) NULL) +#else +#define __Pyx_PyErr_Occurred() (__pyx_tstate->curexc_type != NULL) +#define __Pyx_PyErr_CurrentExceptionType() (__pyx_tstate->curexc_type) +#endif +#else +#define __Pyx_PyThreadState_declare +#define __Pyx_PyThreadState_assign +#define __Pyx_PyErr_Occurred() (PyErr_Occurred() != NULL) +#define __Pyx_PyErr_CurrentExceptionType() PyErr_Occurred() +#endif + +/* PyErrFetchRestore.proto (used by PyObjectGetAttrStrNoError) */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL) +#define __Pyx_ErrRestoreWithState(type, value, tb) __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb) +#define __Pyx_ErrFetchWithState(type, value, tb) __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb) +#define __Pyx_ErrRestore(type, value, tb) __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb) +#define __Pyx_ErrFetch(type, value, tb) __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb) +static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); +static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A6 +#define __Pyx_PyErr_SetNone(exc) (Py_INCREF(exc), __Pyx_ErrRestore((exc), NULL, NULL)) +#else +#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) +#endif +#else +#define __Pyx_PyErr_Clear() PyErr_Clear() +#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) +#define __Pyx_ErrRestoreWithState(type, value, tb) PyErr_Restore(type, value, tb) +#define __Pyx_ErrFetchWithState(type, value, tb) PyErr_Fetch(type, value, tb) +#define __Pyx_ErrRestoreInState(tstate, type, value, tb) PyErr_Restore(type, value, tb) +#define __Pyx_ErrFetchInState(tstate, type, value, tb) PyErr_Fetch(type, value, tb) +#define __Pyx_ErrRestore(type, value, tb) PyErr_Restore(type, value, tb) +#define __Pyx_ErrFetch(type, value, tb) PyErr_Fetch(type, value, tb) +#endif + +/* PyObjectGetAttrStr.proto (used by PyObjectGetAttrStrNoError) */ +#if CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name); +#else +#define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n) +#endif + +/* PyObjectGetAttrStrNoError.proto (used by GetBuiltinName) */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name); + +/* GetBuiltinName.proto */ +static PyObject *__Pyx_GetBuiltinName(PyObject *name); + +/* PyObjectCall.proto (used by PyObjectFastCall) */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw); +#else +#define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw) +#endif + +/* PyObjectCallMethO.proto (used by PyObjectFastCall) */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg); +#endif + +/* PyObjectFastCall.proto */ +#define __Pyx_PyObject_FastCall(func, args, nargs) __Pyx_PyObject_FastCallDict(func, args, (size_t)(nargs), NULL) +static CYTHON_INLINE PyObject* __Pyx_PyObject_FastCallDict(PyObject *func, PyObject * const*args, size_t nargs, PyObject *kwargs); + +/* dict_getitem_default.proto */ +static PyObject* __Pyx_PyDict_GetItemDefault(PyObject* d, PyObject* key, PyObject* default_value); + +/* CallCFunction.proto (used by CallUnboundCMethod1) */ +#define __Pyx_CallCFunction(cfunc, self, args)\ + ((PyCFunction)(void(*)(void))(cfunc)->func)(self, args) +#define __Pyx_CallCFunctionWithKeywords(cfunc, self, args, kwargs)\ + ((PyCFunctionWithKeywords)(void(*)(void))(cfunc)->func)(self, args, kwargs) +#define __Pyx_CallCFunctionFast(cfunc, self, args, nargs)\ + ((__Pyx_PyCFunctionFast)(void(*)(void))(PyCFunction)(cfunc)->func)(self, args, nargs) +#define __Pyx_CallCFunctionFastWithKeywords(cfunc, self, args, nargs, kwnames)\ + ((__Pyx_PyCFunctionFastWithKeywords)(void(*)(void))(PyCFunction)(cfunc)->func)(self, args, nargs, kwnames) + +/* PyObjectCall2Args.proto (used by CallUnboundCMethod1) */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2); + +/* UnpackUnboundCMethod.proto (used by CallUnboundCMethod1) */ +typedef struct { + PyObject *type; + PyObject **method_name; +#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING && CYTHON_ATOMICS + __pyx_atomic_int_type initialized; +#endif + PyCFunction func; + PyObject *method; + int flag; +} __Pyx_CachedCFunction; +#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING +static CYTHON_INLINE int __Pyx_CachedCFunction_GetAndSetInitializing(__Pyx_CachedCFunction *cfunc) { +#if !CYTHON_ATOMICS + return 1; +#else + __pyx_nonatomic_int_type expected = 0; + if (__pyx_atomic_int_cmp_exchange(&cfunc->initialized, &expected, 1)) { + return 0; + } + return expected; +#endif +} +static CYTHON_INLINE void __Pyx_CachedCFunction_SetFinishedInitializing(__Pyx_CachedCFunction *cfunc) { +#if CYTHON_ATOMICS + __pyx_atomic_store(&cfunc->initialized, 2); +#endif +} +#else +#define __Pyx_CachedCFunction_GetAndSetInitializing(cfunc) 2 +#define __Pyx_CachedCFunction_SetFinishedInitializing(cfunc) +#endif + +/* CallUnboundCMethod1.proto */ +CYTHON_UNUSED +static PyObject* __Pyx__CallUnboundCMethod1(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg); +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_CallUnboundCMethod1(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg); +#else +#define __Pyx_CallUnboundCMethod1(cfunc, self, arg) __Pyx__CallUnboundCMethod1(cfunc, self, arg) +#endif + +/* CallUnboundCMethod2.proto */ +CYTHON_UNUSED +static PyObject* __Pyx__CallUnboundCMethod2(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg1, PyObject* arg2); +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject *__Pyx_CallUnboundCMethod2(__Pyx_CachedCFunction *cfunc, PyObject *self, PyObject *arg1, PyObject *arg2); +#else +#define __Pyx_CallUnboundCMethod2(cfunc, self, arg1, arg2) __Pyx__CallUnboundCMethod2(cfunc, self, arg1, arg2) +#endif + +/* PyTypeError_Check.proto */ +#define __Pyx_PyExc_TypeError_Check(obj) __Pyx_TypeCheck(obj, PyExc_TypeError) + +/* RaiseException.export */ +static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause); + +/* TupleAndListFromArray.proto (used by fastcall) */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyList_FromArray(PyObject *const *src, Py_ssize_t n); +#endif +#if CYTHON_COMPILING_IN_CPYTHON || CYTHON_METH_FASTCALL +static CYTHON_INLINE PyObject* __Pyx_PyTuple_FromArray(PyObject *const *src, Py_ssize_t n); +#endif + +/* IncludeStringH.proto (used by BytesEquals) */ +#include + +/* BytesEquals.proto (used by UnicodeEquals) */ +static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals); + +/* UnicodeEquals.proto (used by fastcall) */ +static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals); + +/* fastcall.proto */ +#if CYTHON_AVOID_BORROWED_REFS + #define __Pyx_ArgRef_VARARGS(args, i) __Pyx_PySequence_ITEM(args, i) +#elif CYTHON_ASSUME_SAFE_MACROS + #define __Pyx_ArgRef_VARARGS(args, i) __Pyx_NewRef(__Pyx_PyTuple_GET_ITEM(args, i)) +#else + #define __Pyx_ArgRef_VARARGS(args, i) __Pyx_XNewRef(PyTuple_GetItem(args, i)) +#endif +#define __Pyx_NumKwargs_VARARGS(kwds) PyDict_Size(kwds) +#define __Pyx_KwValues_VARARGS(args, nargs) NULL +#define __Pyx_GetKwValue_VARARGS(kw, kwvalues, s) __Pyx_PyDict_GetItemStrWithError(kw, s) +#define __Pyx_KwargsAsDict_VARARGS(kw, kwvalues) PyDict_Copy(kw) +#if CYTHON_METH_FASTCALL + #define __Pyx_ArgRef_FASTCALL(args, i) __Pyx_NewRef(args[i]) + #define __Pyx_NumKwargs_FASTCALL(kwds) __Pyx_PyTuple_GET_SIZE(kwds) + #define __Pyx_KwValues_FASTCALL(args, nargs) ((args) + (nargs)) + static CYTHON_INLINE PyObject * __Pyx_GetKwValue_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues, PyObject *s); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030d0000 || CYTHON_COMPILING_IN_LIMITED_API + CYTHON_UNUSED static PyObject *__Pyx_KwargsAsDict_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues); + #else + #define __Pyx_KwargsAsDict_FASTCALL(kw, kwvalues) _PyStack_AsDict(kwvalues, kw) + #endif +#else + #define __Pyx_ArgRef_FASTCALL __Pyx_ArgRef_VARARGS + #define __Pyx_NumKwargs_FASTCALL __Pyx_NumKwargs_VARARGS + #define __Pyx_KwValues_FASTCALL __Pyx_KwValues_VARARGS + #define __Pyx_GetKwValue_FASTCALL __Pyx_GetKwValue_VARARGS + #define __Pyx_KwargsAsDict_FASTCALL __Pyx_KwargsAsDict_VARARGS +#endif +#define __Pyx_ArgsSlice_VARARGS(args, start, stop) PyTuple_GetSlice(args, start, stop) +#if CYTHON_METH_FASTCALL || (CYTHON_COMPILING_IN_CPYTHON && CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS) +#define __Pyx_ArgsSlice_FASTCALL(args, start, stop) __Pyx_PyTuple_FromArray(args + start, stop - start) +#else +#define __Pyx_ArgsSlice_FASTCALL(args, start, stop) PyTuple_GetSlice(args, start, stop) +#endif + +/* py_dict_items.proto (used by OwnedDictNext) */ +static CYTHON_INLINE PyObject* __Pyx_PyDict_Items(PyObject* d); + +/* PyObjectCallOneArg.proto (used by CallUnboundCMethod0) */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg); + +/* CallUnboundCMethod0.proto */ +CYTHON_UNUSED +static PyObject* __Pyx__CallUnboundCMethod0(__Pyx_CachedCFunction* cfunc, PyObject* self); +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_CallUnboundCMethod0(__Pyx_CachedCFunction* cfunc, PyObject* self); +#else +#define __Pyx_CallUnboundCMethod0(cfunc, self) __Pyx__CallUnboundCMethod0(cfunc, self) +#endif + +/* py_dict_values.proto (used by OwnedDictNext) */ +static CYTHON_INLINE PyObject* __Pyx_PyDict_Values(PyObject* d); + +/* OwnedDictNext.proto (used by ParseKeywordsImpl) */ +#if CYTHON_AVOID_BORROWED_REFS +static int __Pyx_PyDict_NextRef(PyObject *p, PyObject **ppos, PyObject **pkey, PyObject **pvalue); +#else +CYTHON_INLINE +static int __Pyx_PyDict_NextRef(PyObject *p, Py_ssize_t *ppos, PyObject **pkey, PyObject **pvalue); +#endif + +/* RaiseDoubleKeywords.proto (used by ParseKeywordsImpl) */ +static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name); + +/* ParseKeywordsImpl.export */ +static int __Pyx_ParseKeywordsTuple( + PyObject *kwds, + PyObject * const *kwvalues, + PyObject ** const argnames[], + PyObject *kwds2, + PyObject *values[], + Py_ssize_t num_pos_args, + Py_ssize_t num_kwargs, + const char* function_name, + int ignore_unknown_kwargs +); +static int __Pyx_ParseKeywordDictToDict( + PyObject *kwds, + PyObject ** const argnames[], + PyObject *kwds2, + PyObject *values[], + Py_ssize_t num_pos_args, + const char* function_name +); +static int __Pyx_ParseKeywordDict( + PyObject *kwds, + PyObject ** const argnames[], + PyObject *values[], + Py_ssize_t num_pos_args, + Py_ssize_t num_kwargs, + const char* function_name, + int ignore_unknown_kwargs +); + +/* ParseKeywords.proto */ +static CYTHON_INLINE int __Pyx_ParseKeywords( + PyObject *kwds, PyObject *const *kwvalues, PyObject ** const argnames[], + PyObject *kwds2, PyObject *values[], + Py_ssize_t num_pos_args, Py_ssize_t num_kwargs, + const char* function_name, + int ignore_unknown_kwargs +); + +/* RaiseArgTupleInvalid.proto */ +static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact, + Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); + +/* ArgTypeTestFunc.export */ +static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact); + +/* ArgTypeTest.proto */ +#define __Pyx_ArgTypeTest(obj, type, none_allowed, name, exact)\ + ((likely(__Pyx_IS_TYPE(obj, type) | (none_allowed && (obj == Py_None)))) ? 1 :\ + __Pyx__ArgTypeTest(obj, type, name, exact)) + +/* PyRuntimeError_Check.proto */ +#define __Pyx_PyExc_RuntimeError_Check(obj) __Pyx_TypeCheck(obj, PyExc_RuntimeError) + +/* PyValueError_Check.proto */ +#define __Pyx_PyExc_ValueError_Check(obj) __Pyx_TypeCheck(obj, PyExc_ValueError) + +/* decode_c_string_utf16.proto (used by decode_c_string) */ +static CYTHON_INLINE PyObject *__Pyx_PyUnicode_DecodeUTF16(const char *s, Py_ssize_t size, const char *errors) { + int byteorder = 0; + return PyUnicode_DecodeUTF16(s, size, errors, &byteorder); +} +static CYTHON_INLINE PyObject *__Pyx_PyUnicode_DecodeUTF16LE(const char *s, Py_ssize_t size, const char *errors) { + int byteorder = -1; + return PyUnicode_DecodeUTF16(s, size, errors, &byteorder); +} +static CYTHON_INLINE PyObject *__Pyx_PyUnicode_DecodeUTF16BE(const char *s, Py_ssize_t size, const char *errors) { + int byteorder = 1; + return PyUnicode_DecodeUTF16(s, size, errors, &byteorder); +} + +/* decode_c_string.proto */ +static CYTHON_INLINE PyObject* __Pyx_decode_c_string( + const char* cstring, Py_ssize_t start, Py_ssize_t stop, + const char* encoding, const char* errors, + PyObject* (*decode_func)(const char *s, Py_ssize_t size, const char *errors)); + +/* RejectKeywords.export */ +static void __Pyx_RejectKeywords(const char* function_name, PyObject *kwds); + +/* RaiseUnexpectedTypeError.proto */ +static int __Pyx_RaiseUnexpectedTypeError(const char *expected, PyObject *obj); + +/* PyDictVersioning.proto */ +#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS +#define __PYX_DICT_VERSION_INIT ((PY_UINT64_T) -1) +#define __PYX_GET_DICT_VERSION(dict) (((PyDictObject*)(dict))->ma_version_tag) +#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)\ + (version_var) = __PYX_GET_DICT_VERSION(dict);\ + (cache_var) = (value); +#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) {\ + static PY_UINT64_T __pyx_dict_version = 0;\ + static PyObject *__pyx_dict_cached_value = NULL;\ + if (likely(__PYX_GET_DICT_VERSION(DICT) == __pyx_dict_version)) {\ + (VAR) = __Pyx_XNewRef(__pyx_dict_cached_value);\ + } else {\ + (VAR) = __pyx_dict_cached_value = (LOOKUP);\ + __pyx_dict_version = __PYX_GET_DICT_VERSION(DICT);\ + }\ +} +static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj); +static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj); +static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version); +#else +#define __PYX_GET_DICT_VERSION(dict) (0) +#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var) +#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) (VAR) = (LOOKUP); +#endif + +/* ExtTypeTest.proto */ +static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type); + +/* ListExtend.proto */ +static CYTHON_INLINE int __Pyx_PyList_Extend(PyObject* L, PyObject* v) { +#if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00a2 + return PyList_Extend(L, v); +#elif CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030d0000 + PyObject* none = _PyList_Extend((PyListObject*)L, v); + if (unlikely(!none)) + return -1; + Py_DECREF(none); + return 0; +#else + return PyList_SetSlice(L, PY_SSIZE_T_MAX, PY_SSIZE_T_MAX, v); +#endif +} + +/* PyObjectVectorCallKwBuilder.proto (used by PyObjectVectorCallMethodKwBuilder) */ +CYTHON_UNUSED static int __Pyx_VectorcallBuilder_AddArg_Check(PyObject *key, PyObject *value, PyObject *builder, PyObject **args, int n); +#if CYTHON_VECTORCALL +#if PY_VERSION_HEX >= 0x03090000 +#define __Pyx_Object_Vectorcall_CallFromBuilder PyObject_Vectorcall +#else +#define __Pyx_Object_Vectorcall_CallFromBuilder _PyObject_Vectorcall +#endif +#define __Pyx_MakeVectorcallBuilderKwds(n) PyTuple_New(n) +static int __Pyx_VectorcallBuilder_AddArg(PyObject *key, PyObject *value, PyObject *builder, PyObject **args, int n); +static int __Pyx_VectorcallBuilder_AddArgStr(const char *key, PyObject *value, PyObject *builder, PyObject **args, int n); +#else +#define __Pyx_Object_Vectorcall_CallFromBuilder __Pyx_PyObject_FastCallDict +#define __Pyx_MakeVectorcallBuilderKwds(n) __Pyx_PyDict_NewPresized(n) +#define __Pyx_VectorcallBuilder_AddArg(key, value, builder, args, n) PyDict_SetItem(builder, key, value) +#define __Pyx_VectorcallBuilder_AddArgStr(key, value, builder, args, n) PyDict_SetItemString(builder, key, value) +#endif + +/* PyObjectVectorCallMethodKwBuilder.proto */ +#if CYTHON_VECTORCALL && PY_VERSION_HEX >= 0x03090000 +#define __Pyx_Object_VectorcallMethod_CallFromBuilder PyObject_VectorcallMethod +#else +static PyObject *__Pyx_Object_VectorcallMethod_CallFromBuilder(PyObject *name, PyObject *const *args, size_t nargsf, PyObject *kwnames); +#endif + +/* PySequenceContains.proto */ +static CYTHON_INLINE int __Pyx_PySequence_ContainsTF(PyObject* item, PyObject* seq, int eq) { + int result = PySequence_Contains(seq, item); + return unlikely(result < 0) ? result : (result == (eq == Py_EQ)); +} + +/* ListAppend.proto */ +#if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS +static CYTHON_INLINE int __Pyx_PyList_Append(PyObject* list, PyObject* x) { + PyListObject* L = (PyListObject*) list; + Py_ssize_t len = Py_SIZE(list); + if (likely(L->allocated > len) & likely(len > (L->allocated >> 1))) { + Py_INCREF(x); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030d0000 + L->ob_item[len] = x; + #else + PyList_SET_ITEM(list, len, x); + #endif + __Pyx_SET_SIZE(list, len + 1); + return 0; + } + return PyList_Append(list, x); +} +#else +#define __Pyx_PyList_Append(L,x) PyList_Append(L,x) +#endif + +/* PyObjectFastCallMethod.proto */ +#if CYTHON_VECTORCALL && PY_VERSION_HEX >= 0x03090000 +#define __Pyx_PyObject_FastCallMethod(name, args, nargsf) PyObject_VectorcallMethod(name, args, nargsf, NULL) +#else +static PyObject *__Pyx_PyObject_FastCallMethod(PyObject *name, PyObject *const *args, size_t nargsf); +#endif + +/* SliceObject.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetSlice( + PyObject* obj, Py_ssize_t cstart, Py_ssize_t cstop, + PyObject** py_start, PyObject** py_stop, PyObject** py_slice, + int has_cstart, int has_cstop, int wraparound); + +/* GetAttr3.proto */ +static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *, PyObject *, PyObject *); + +/* GetModuleGlobalName.proto */ +#if CYTHON_USE_DICT_VERSIONS +#define __Pyx_GetModuleGlobalName(var, name) do {\ + static PY_UINT64_T __pyx_dict_version = 0;\ + static PyObject *__pyx_dict_cached_value = NULL;\ + (var) = (likely(__pyx_dict_version == __PYX_GET_DICT_VERSION(__pyx_mstate_global->__pyx_d))) ?\ + (likely(__pyx_dict_cached_value) ? __Pyx_NewRef(__pyx_dict_cached_value) : __Pyx_GetBuiltinName(name)) :\ + __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\ +} while(0) +#define __Pyx_GetModuleGlobalNameUncached(var, name) do {\ + PY_UINT64_T __pyx_dict_version;\ + PyObject *__pyx_dict_cached_value;\ + (var) = __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\ +} while(0) +static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value); +#else +#define __Pyx_GetModuleGlobalName(var, name) (var) = __Pyx__GetModuleGlobalName(name) +#define __Pyx_GetModuleGlobalNameUncached(var, name) (var) = __Pyx__GetModuleGlobalName(name) +static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name); +#endif + +/* PyMemoryError_Check.proto */ +#define __Pyx_PyExc_MemoryError_Check(obj) __Pyx_TypeCheck(obj, PyExc_MemoryError) + +/* GetException.proto (used by pep479) */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_GetException(type, value, tb) __Pyx__GetException(__pyx_tstate, type, value, tb) +static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); +#else +static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb); +#endif + +/* pep479.proto */ +static void __Pyx_Generator_Replace_StopIteration(int in_async_gen); + +/* PyObject_Unicode.proto */ +#define __Pyx_PyObject_Unicode(obj)\ + (likely(PyUnicode_CheckExact(obj)) ? __Pyx_NewRef(obj) : PyObject_Str(obj)) + +/* GetTopmostException.proto (used by SaveResetException) */ +#if CYTHON_USE_EXC_INFO_STACK && CYTHON_FAST_THREAD_STATE +static _PyErr_StackItem * __Pyx_PyErr_GetTopmostException(PyThreadState *tstate); +#endif + +/* SaveResetException.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_ExceptionSave(type, value, tb) __Pyx__ExceptionSave(__pyx_tstate, type, value, tb) +static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); +#define __Pyx_ExceptionReset(type, value, tb) __Pyx__ExceptionReset(__pyx_tstate, type, value, tb) +static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); +#else +#define __Pyx_ExceptionSave(type, value, tb) PyErr_GetExcInfo(type, value, tb) +#define __Pyx_ExceptionReset(type, value, tb) PyErr_SetExcInfo(type, value, tb) +#endif + +/* PyKeyError_Check.proto */ +#define __Pyx_PyExc_KeyError_Check(obj) __Pyx_TypeCheck(obj, PyExc_KeyError) + +/* GetItemInt.proto */ +#define __Pyx_GetItemInt(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck, has_gil, unsafe_shared)\ + (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ + __Pyx_GetItemInt_Fast(o, (Py_ssize_t)i, is_list, wraparound, boundscheck, unsafe_shared) :\ + (is_list ? (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL) :\ + __Pyx_GetItemInt_Generic(o, to_py_func(i)))) +#define __Pyx_GetItemInt_List(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck, has_gil, unsafe_shared)\ + (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ + __Pyx_GetItemInt_List_Fast(o, (Py_ssize_t)i, wraparound, boundscheck, unsafe_shared) :\ + (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL)) +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, + int wraparound, int boundscheck, int unsafe_shared); +#define __Pyx_GetItemInt_Tuple(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck, has_gil, unsafe_shared)\ + (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ + __Pyx_GetItemInt_Tuple_Fast(o, (Py_ssize_t)i, wraparound, boundscheck, unsafe_shared) :\ + (PyErr_SetString(PyExc_IndexError, "tuple index out of range"), (PyObject*)NULL)) +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, + int wraparound, int boundscheck, int unsafe_shared); +static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j); +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, + int is_list, int wraparound, int boundscheck, int unsafe_shared); + +/* ObjectGetItem.proto */ +#if CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject *key); +#else +#define __Pyx_PyObject_GetItem(obj, key) PyObject_GetItem(obj, key) +#endif + +/* PyObjectFormatAndDecref.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_FormatSimpleAndDecref(PyObject* s, PyObject* f); +static CYTHON_INLINE PyObject* __Pyx_PyObject_FormatAndDecref(PyObject* s, PyObject* f); + +/* BuildPyUnicode.proto (used by COrdinalToPyUnicode) */ +static PyObject* __Pyx_PyUnicode_BuildFromAscii(Py_ssize_t ulength, const char* chars, int clength, + int prepend_sign, char padding_char); + +/* COrdinalToPyUnicode.proto (used by CIntToPyUnicode) */ +static CYTHON_INLINE int __Pyx_CheckUnicodeValue(int value); +static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromOrdinal_Padded(int value, Py_ssize_t width, char padding_char); + +/* GCCDiagnostics.proto (used by CIntToPyUnicode) */ +#if !defined(__INTEL_COMPILER) && defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) +#define __Pyx_HAS_GCC_DIAGNOSTIC +#endif + +/* IncludeStdlibH.proto (used by CIntToPyUnicode) */ +#include + +/* CIntToPyUnicode.proto */ +#define __Pyx_PyUnicode_From_Py_ssize_t(value, width, padding_char, format_char) (\ + ((format_char) == ('c')) ?\ + __Pyx_uchar___Pyx_PyUnicode_From_Py_ssize_t(value, width, padding_char) :\ + __Pyx____Pyx_PyUnicode_From_Py_ssize_t(value, width, padding_char, format_char)\ + ) +static CYTHON_INLINE PyObject* __Pyx_uchar___Pyx_PyUnicode_From_Py_ssize_t(Py_ssize_t value, Py_ssize_t width, char padding_char); +static CYTHON_INLINE PyObject* __Pyx____Pyx_PyUnicode_From_Py_ssize_t(Py_ssize_t value, Py_ssize_t width, char padding_char, char format_char); + +/* JoinPyUnicode.export */ +static PyObject* __Pyx_PyUnicode_Join(PyObject** values, Py_ssize_t value_count, Py_ssize_t result_ulength, + Py_UCS4 max_char); + +/* PyDictContains.proto */ +static CYTHON_INLINE int __Pyx_PyDict_ContainsTF(PyObject* item, PyObject* dict, int eq) { + int result = PyDict_Contains(dict, item); + return unlikely(result < 0) ? result : (result == (eq == Py_EQ)); +} + +/* DictGetItem.proto */ +#if !CYTHON_COMPILING_IN_PYPY +static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key); +#define __Pyx_PyObject_Dict_GetItem(obj, name)\ + (likely(PyDict_CheckExact(obj)) ?\ + __Pyx_PyDict_GetItem(obj, name) : PyObject_GetItem(obj, name)) +#else +#define __Pyx_PyDict_GetItem(d, key) PyObject_GetItem(d, key) +#define __Pyx_PyObject_Dict_GetItem(obj, name) PyObject_GetItem(obj, name) +#endif + +/* CIntToPyUnicode.proto */ +#define __Pyx_PyUnicode_From_long(value, width, padding_char, format_char) (\ + ((format_char) == ('c')) ?\ + __Pyx_uchar___Pyx_PyUnicode_From_long(value, width, padding_char) :\ + __Pyx____Pyx_PyUnicode_From_long(value, width, padding_char, format_char)\ + ) +static CYTHON_INLINE PyObject* __Pyx_uchar___Pyx_PyUnicode_From_long(long value, Py_ssize_t width, char padding_char); +static CYTHON_INLINE PyObject* __Pyx____Pyx_PyUnicode_From_long(long value, Py_ssize_t width, char padding_char, char format_char); + +/* UnicodeConcatInPlace.proto */ +# if CYTHON_COMPILING_IN_CPYTHON + #if CYTHON_REFNANNY + #define __Pyx_PyUnicode_ConcatInPlace(left, right, unsafe_shared) __Pyx_PyUnicode_ConcatInPlaceImpl(&left, right, unsafe_shared, __pyx_refnanny) + #else + #define __Pyx_PyUnicode_ConcatInPlace(left, right, unsafe_shared) __Pyx_PyUnicode_ConcatInPlaceImpl(&left, right, unsafe_shared) + #endif + #define __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_DefinitelyUniqueInPlace(left, right) __Pyx_PyUnicode_ConcatInPlace(left, right, __Pyx_ReferenceSharing_DefinitelyUnique) + #define __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlace(left, right) __Pyx_PyUnicode_ConcatInPlace(left, right, __Pyx_ReferenceSharing_OwnStrongReference) + #define __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_FunctionArgumentInPlace(left, right) __Pyx_PyUnicode_ConcatInPlace(left, right, __Pyx_ReferenceSharing_DefinitelyUnique) + #define __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_SharedReferenceInPlace(left, right) __Pyx_PyUnicode_ConcatInPlace(left, right, __Pyx_ReferenceSharing_SharedReference) + static CYTHON_INLINE PyObject *__Pyx_PyUnicode_ConcatInPlaceImpl(PyObject **p_left, PyObject *right, int unsafe_shared + #if CYTHON_REFNANNY + , void* __pyx_refnanny + #endif + ); +#else +#define __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_DefinitelyUniqueInPlace __Pyx_PyUnicode_Concat +#define __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlace __Pyx_PyUnicode_Concat +#define __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_FunctionArgumentInPlace __Pyx_PyUnicode_Concat +#define __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_SharedReferenceInPlace __Pyx_PyUnicode_Concat +#endif +#define __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_DefinitelyUniqueInPlaceSafe(left, right)\ + ((unlikely((left) == Py_None) || unlikely((right) == Py_None)) ?\ + PyNumber_InPlaceAdd(left, right) : __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_DefinitelyUniqueInPlace(left, right)) +#define __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlaceSafe(left, right)\ + ((unlikely((left) == Py_None) || unlikely((right) == Py_None)) ?\ + PyNumber_InPlaceAdd(left, right) : __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlace(left, right)) +#define __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_FunctionArgumentInPlaceSafe(left, right)\ + ((unlikely((left) == Py_None) || unlikely((right) == Py_None)) ?\ + PyNumber_InPlaceAdd(left, right) : __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_FunctionArgumentInPlace(left, right)) +#define __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_SharedReferenceInPlaceSafe(left, right)\ + ((unlikely((left) == Py_None) || unlikely((right) == Py_None)) ?\ + PyNumber_InPlaceAdd(left, right) : __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_SharedReferenceInPlace(left, right)) + +/* RaiseUnboundLocalError.proto */ +static void __Pyx_RaiseUnboundLocalError(const char *varname); + +/* PyObjectFormatSimple.proto */ +#if CYTHON_COMPILING_IN_PYPY + #define __Pyx_PyObject_FormatSimple(s, f) (\ + likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\ + PyObject_Format(s, f)) +#elif CYTHON_USE_TYPE_SLOTS + #define __Pyx_PyObject_FormatSimple(s, f) (\ + likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\ + likely(PyLong_CheckExact(s)) ? PyLong_Type.tp_repr(s) :\ + likely(PyFloat_CheckExact(s)) ? PyFloat_Type.tp_repr(s) :\ + PyObject_Format(s, f)) +#else + #define __Pyx_PyObject_FormatSimple(s, f) (\ + likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\ + PyObject_Format(s, f)) +#endif + +/* HasAttr.proto (used by ImportImpl) */ +#if __PYX_LIMITED_VERSION_HEX >= 0x030d0000 +#define __Pyx_HasAttr(o, n) PyObject_HasAttrWithError(o, n) +#else +static CYTHON_INLINE int __Pyx_HasAttr(PyObject *, PyObject *); +#endif + +/* ImportImpl.export */ +static PyObject *__Pyx__Import(PyObject *name, PyObject *const *imported_names, Py_ssize_t len_imported_names, PyObject *qualname, PyObject *moddict, int level); + +/* Import.proto */ +static CYTHON_INLINE PyObject *__Pyx_Import(PyObject *name, PyObject *const *imported_names, Py_ssize_t len_imported_names, PyObject *qualname, int level); + +/* RaiseTooManyValuesToUnpack.proto */ +static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected); + +/* RaiseNeedMoreValuesToUnpack.proto */ +static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index); + +/* IterFinish.proto */ +static CYTHON_INLINE int __Pyx_IterFinish(void); + +/* UnpackItemEndCheck.proto */ +static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected); + +/* AllocateExtensionType.proto */ +static PyObject *__Pyx_AllocateExtensionType(PyTypeObject *t, int is_final); + +/* CallTypeTraverse.proto */ +#if !CYTHON_USE_TYPE_SPECS || (!CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x03090000) +#define __Pyx_call_type_traverse(o, always_call, visit, arg) 0 +#else +static int __Pyx_call_type_traverse(PyObject *o, int always_call, visitproc visit, void *arg); +#endif + +/* CheckTypeForFreelists.proto */ +#if CYTHON_USE_FREELISTS +#if CYTHON_USE_TYPE_SPECS +#define __PYX_CHECK_FINAL_TYPE_FOR_FREELISTS(t, expected_tp, expected_size) ((int) ((t) == (expected_tp))) +#define __PYX_CHECK_TYPE_FOR_FREELIST_FLAGS Py_TPFLAGS_IS_ABSTRACT +#else +#define __PYX_CHECK_FINAL_TYPE_FOR_FREELISTS(t, expected_tp, expected_size) ((int) ((t)->tp_basicsize == (expected_size))) +#define __PYX_CHECK_TYPE_FOR_FREELIST_FLAGS (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE) +#endif +#define __PYX_CHECK_TYPE_FOR_FREELISTS(t, expected_tp, expected_size)\ + (__PYX_CHECK_FINAL_TYPE_FOR_FREELISTS((t), (expected_tp), (expected_size)) &\ + (int) (!__Pyx_PyType_HasFeature((t), __PYX_CHECK_TYPE_FOR_FREELIST_FLAGS))) +#endif + +/* LimitedApiGetTypeDict.proto (used by SetItemOnTypeDict) */ +#if CYTHON_COMPILING_IN_LIMITED_API +static PyObject *__Pyx_GetTypeDict(PyTypeObject *tp); +#endif + +/* SetItemOnTypeDict.proto (used by FixUpExtensionType) */ +static int __Pyx__SetItemOnTypeDict(PyTypeObject *tp, PyObject *k, PyObject *v); +#define __Pyx_SetItemOnTypeDict(tp, k, v) __Pyx__SetItemOnTypeDict((PyTypeObject*)tp, k, v) + +/* FixUpExtensionType.proto */ +static CYTHON_INLINE int __Pyx_fix_up_extension_type_from_spec(PyType_Spec *spec, PyTypeObject *type); + +/* PyObjectCallNoArg.proto (used by PyObjectCallMethod0) */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func); + +/* PyObjectGetMethod.proto (used by PyObjectCallMethod0) */ +#if !(CYTHON_VECTORCALL && (__PYX_LIMITED_VERSION_HEX >= 0x030C0000 || (!CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x03090000))) +static int __Pyx_PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **method); +#endif + +/* PyObjectCallMethod0.proto (used by PyType_Ready) */ +static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name); + +/* ValidateBasesTuple.proto (used by PyType_Ready) */ +#if CYTHON_COMPILING_IN_CPYTHON || CYTHON_COMPILING_IN_LIMITED_API || CYTHON_USE_TYPE_SPECS +static int __Pyx_validate_bases_tuple(const char *type_name, Py_ssize_t dictoffset, PyObject *bases); +#endif + +/* PyType_Ready.proto */ +CYTHON_UNUSED static int __Pyx_PyType_Ready(PyTypeObject *t); + +/* SetVTable.proto */ +static int __Pyx_SetVtable(PyTypeObject* typeptr , void* vtable); + +/* GetVTable.proto (used by MergeVTables) */ +static void* __Pyx_GetVtable(PyTypeObject *type); + +/* MergeVTables.proto */ +static int __Pyx_MergeVtables(PyTypeObject *type); + +/* DelItemOnTypeDict.proto (used by SetupReduce) */ +static int __Pyx__DelItemOnTypeDict(PyTypeObject *tp, PyObject *k); +#define __Pyx_DelItemOnTypeDict(tp, k) __Pyx__DelItemOnTypeDict((PyTypeObject*)tp, k) + +/* SetupReduce.proto */ +static int __Pyx_setup_reduce(PyObject* type_obj); + +/* TypeImport.proto */ +#ifndef __PYX_HAVE_RT_ImportType_proto_3_2_2 +#define __PYX_HAVE_RT_ImportType_proto_3_2_2 +#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 201112L +#include +#endif +#if (defined (__STDC_VERSION__) && __STDC_VERSION__ >= 201112L) || __cplusplus >= 201103L +#define __PYX_GET_STRUCT_ALIGNMENT_3_2_2(s) alignof(s) +#else +#define __PYX_GET_STRUCT_ALIGNMENT_3_2_2(s) sizeof(void*) +#endif +enum __Pyx_ImportType_CheckSize_3_2_2 { + __Pyx_ImportType_CheckSize_Error_3_2_2 = 0, + __Pyx_ImportType_CheckSize_Warn_3_2_2 = 1, + __Pyx_ImportType_CheckSize_Ignore_3_2_2 = 2 +}; +static PyTypeObject *__Pyx_ImportType_3_2_2(PyObject* module, const char *module_name, const char *class_name, size_t size, size_t alignment, enum __Pyx_ImportType_CheckSize_3_2_2 check_size); +#endif + +/* dict_setdefault.proto (used by FetchCommonType) */ +static CYTHON_INLINE PyObject *__Pyx_PyDict_SetDefault(PyObject *d, PyObject *key, PyObject *default_value); + +/* AddModuleRef.proto (used by FetchSharedCythonModule) */ +#if ((CYTHON_COMPILING_IN_CPYTHON_FREETHREADING ) ||\ + __PYX_LIMITED_VERSION_HEX < 0x030d0000) + static PyObject *__Pyx_PyImport_AddModuleRef(const char *name); +#else + #define __Pyx_PyImport_AddModuleRef(name) PyImport_AddModuleRef(name) +#endif + +/* FetchSharedCythonModule.proto (used by FetchCommonType) */ +static PyObject *__Pyx_FetchSharedCythonABIModule(void); + +/* FetchCommonType.proto (used by CommonTypesMetaclass) */ +static PyTypeObject* __Pyx_FetchCommonTypeFromSpec(PyTypeObject *metaclass, PyObject *module, PyType_Spec *spec, PyObject *bases); + +/* CommonTypesMetaclass.proto (used by CythonFunctionShared) */ +static int __pyx_CommonTypesMetaclass_init(PyObject *module); +#define __Pyx_CommonTypesMetaclass_USED + +/* PyMethodNew.proto (used by CythonFunctionShared) */ +static PyObject *__Pyx_PyMethod_New(PyObject *func, PyObject *self, PyObject *typ); + +/* PyVectorcallFastCallDict.proto (used by CythonFunctionShared) */ +#if CYTHON_METH_FASTCALL && CYTHON_VECTORCALL +static CYTHON_INLINE PyObject *__Pyx_PyVectorcall_FastCallDict(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw); +#endif + +/* CythonFunctionShared.proto (used by CythonFunction) */ +#define __Pyx_CyFunction_USED +#define __Pyx_CYFUNCTION_STATICMETHOD 0x01 +#define __Pyx_CYFUNCTION_CLASSMETHOD 0x02 +#define __Pyx_CYFUNCTION_CCLASS 0x04 +#define __Pyx_CYFUNCTION_COROUTINE 0x08 +#define __Pyx_CyFunction_GetClosure(f)\ + (((__pyx_CyFunctionObject *) (f))->func_closure) +#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API + #define __Pyx_CyFunction_GetClassObj(f)\ + (((__pyx_CyFunctionObject *) (f))->func_classobj) +#else + #define __Pyx_CyFunction_GetClassObj(f)\ + ((PyObject*) ((PyCMethodObject *) (f))->mm_class) +#endif +#define __Pyx_CyFunction_SetClassObj(f, classobj)\ + __Pyx__CyFunction_SetClassObj((__pyx_CyFunctionObject *) (f), (classobj)) +#define __Pyx_CyFunction_Defaults(type, f)\ + ((type *)(((__pyx_CyFunctionObject *) (f))->defaults)) +#define __Pyx_CyFunction_SetDefaultsGetter(f, g)\ + ((__pyx_CyFunctionObject *) (f))->defaults_getter = (g) +typedef struct { +#if CYTHON_COMPILING_IN_LIMITED_API + PyObject_HEAD + PyObject *func; +#elif PY_VERSION_HEX < 0x030900B1 + PyCFunctionObject func; +#else + PyCMethodObject func; +#endif +#if CYTHON_COMPILING_IN_LIMITED_API && CYTHON_METH_FASTCALL + __pyx_vectorcallfunc func_vectorcall; +#endif +#if CYTHON_COMPILING_IN_LIMITED_API + PyObject *func_weakreflist; +#endif +#if PY_VERSION_HEX < 0x030C0000 || CYTHON_COMPILING_IN_LIMITED_API + PyObject *func_dict; +#endif + PyObject *func_name; + PyObject *func_qualname; + PyObject *func_doc; + PyObject *func_globals; + PyObject *func_code; + PyObject *func_closure; +#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API + PyObject *func_classobj; +#endif + PyObject *defaults; + int flags; + PyObject *defaults_tuple; + PyObject *defaults_kwdict; + PyObject *(*defaults_getter)(PyObject *); + PyObject *func_annotations; + PyObject *func_is_coroutine; +} __pyx_CyFunctionObject; +#undef __Pyx_CyOrPyCFunction_Check +#define __Pyx_CyFunction_Check(obj) __Pyx_TypeCheck(obj, __pyx_mstate_global->__pyx_CyFunctionType) +#define __Pyx_CyOrPyCFunction_Check(obj) __Pyx_TypeCheck2(obj, __pyx_mstate_global->__pyx_CyFunctionType, &PyCFunction_Type) +#define __Pyx_CyFunction_CheckExact(obj) __Pyx_IS_TYPE(obj, __pyx_mstate_global->__pyx_CyFunctionType) +static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void (*cfunc)(void)); +#undef __Pyx_IsSameCFunction +#define __Pyx_IsSameCFunction(func, cfunc) __Pyx__IsSameCyOrCFunction(func, cfunc) +static PyObject *__Pyx_CyFunction_Init(__pyx_CyFunctionObject* op, PyMethodDef *ml, + int flags, PyObject* qualname, + PyObject *closure, + PyObject *module, PyObject *globals, + PyObject* code); +static CYTHON_INLINE void __Pyx__CyFunction_SetClassObj(__pyx_CyFunctionObject* f, PyObject* classobj); +static CYTHON_INLINE PyObject *__Pyx_CyFunction_InitDefaults(PyObject *func, + PyTypeObject *defaults_type); +static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *m, + PyObject *tuple); +static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *m, + PyObject *dict); +static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *m, + PyObject *dict); +static int __pyx_CyFunction_init(PyObject *module); +#if CYTHON_METH_FASTCALL +static PyObject * __Pyx_CyFunction_Vectorcall_NOARGS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames); +static PyObject * __Pyx_CyFunction_Vectorcall_O(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames); +static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames); +static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames); +#if CYTHON_COMPILING_IN_LIMITED_API +#define __Pyx_CyFunction_func_vectorcall(f) (((__pyx_CyFunctionObject*)f)->func_vectorcall) +#else +#define __Pyx_CyFunction_func_vectorcall(f) (((PyCFunctionObject*)f)->vectorcall) +#endif +#endif + +/* CythonFunction.proto */ +static PyObject *__Pyx_CyFunction_New(PyMethodDef *ml, + int flags, PyObject* qualname, + PyObject *closure, + PyObject *module, PyObject *globals, + PyObject* code); + +/* FusedFunction.proto */ +typedef struct { + __pyx_CyFunctionObject func; + PyObject *__signatures__; + PyObject *self; +#if CYTHON_COMPILING_IN_LIMITED_API + PyMethodDef *ml; +#endif +} __pyx_FusedFunctionObject; +static PyObject *__pyx_FusedFunction_New(PyMethodDef *ml, int flags, + PyObject *qualname, PyObject *closure, + PyObject *module, PyObject *globals, + PyObject *code); +static int __pyx_FusedFunction_clear(__pyx_FusedFunctionObject *self); +static int __pyx_FusedFunction_init(PyObject *module); +#define __Pyx_FusedFunction_USED + +/* ImportFrom.proto */ +static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name); + +/* CLineInTraceback.proto (used by AddTraceback) */ +#if CYTHON_CLINE_IN_TRACEBACK && CYTHON_CLINE_IN_TRACEBACK_RUNTIME +static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line); +#else +#define __Pyx_CLineForTraceback(tstate, c_line) (((CYTHON_CLINE_IN_TRACEBACK)) ? c_line : 0) +#endif + +/* CodeObjectCache.proto (used by AddTraceback) */ +#if CYTHON_COMPILING_IN_LIMITED_API +typedef PyObject __Pyx_CachedCodeObjectType; +#else +typedef PyCodeObject __Pyx_CachedCodeObjectType; +#endif +typedef struct { + __Pyx_CachedCodeObjectType* code_object; + int code_line; +} __Pyx_CodeObjectCacheEntry; +struct __Pyx_CodeObjectCache { + int count; + int max_count; + __Pyx_CodeObjectCacheEntry* entries; + #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING + __pyx_atomic_int_type accessor_count; + #endif +}; +static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line); +static __Pyx_CachedCodeObjectType *__pyx_find_code_object(int code_line); +static void __pyx_insert_code_object(int code_line, __Pyx_CachedCodeObjectType* code_object); + +/* AddTraceback.proto */ +static void __Pyx_AddTraceback(const char *funcname, int c_line, + int py_line, const char *filename); + +/* CheckUnpickleChecksum.proto */ +static CYTHON_INLINE int __Pyx_CheckUnpickleChecksum(long checksum, long checksum1, long checksum2, long checksum3, const char *members); + +/* CIntFromPy.proto */ +static CYTHON_INLINE int __Pyx_PyLong_As_int(PyObject *); + +/* CIntFromPy.proto */ +static CYTHON_INLINE size_t __Pyx_PyLong_As_size_t(PyObject *); + +/* CIntFromPy.proto */ +static CYTHON_INLINE long __Pyx_PyLong_As_long(PyObject *); + +/* CIntToPy.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyLong_From_long(long value); + +/* CIntToPy.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyLong_From_mystatus_t(mystatus_t value); + +/* PyObjectCallMethod1.proto */ +static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg); + +/* UpdateUnpickledDict.proto */ +static int __Pyx_UpdateUnpickledDict(PyObject *obj, PyObject *state, Py_ssize_t index); + +/* FormatTypeName.proto */ +#if CYTHON_COMPILING_IN_LIMITED_API +typedef PyObject *__Pyx_TypeName; +#define __Pyx_FMT_TYPENAME "%U" +#define __Pyx_DECREF_TypeName(obj) Py_XDECREF(obj) +#if __PYX_LIMITED_VERSION_HEX >= 0x030d0000 +#define __Pyx_PyType_GetFullyQualifiedName PyType_GetFullyQualifiedName +#else +static __Pyx_TypeName __Pyx_PyType_GetFullyQualifiedName(PyTypeObject* tp); +#endif +#else // !LIMITED_API +typedef const char *__Pyx_TypeName; +#define __Pyx_FMT_TYPENAME "%.200s" +#define __Pyx_PyType_GetFullyQualifiedName(tp) ((tp)->tp_name) +#define __Pyx_DECREF_TypeName(obj) +#endif + +/* FastTypeChecks.proto */ +#if CYTHON_COMPILING_IN_CPYTHON +#define __Pyx_TypeCheck(obj, type) __Pyx_IsSubtype(Py_TYPE(obj), (PyTypeObject *)type) +#define __Pyx_TypeCheck2(obj, type1, type2) __Pyx_IsAnySubtype2(Py_TYPE(obj), (PyTypeObject *)type1, (PyTypeObject *)type2) +static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b); +static CYTHON_INLINE int __Pyx_IsAnySubtype2(PyTypeObject *cls, PyTypeObject *a, PyTypeObject *b); +static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject *type); +static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *type1, PyObject *type2); +#else +#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type) +#define __Pyx_TypeCheck2(obj, type1, type2) (PyObject_TypeCheck(obj, (PyTypeObject *)type1) || PyObject_TypeCheck(obj, (PyTypeObject *)type2)) +#define __Pyx_PyErr_GivenExceptionMatches(err, type) PyErr_GivenExceptionMatches(err, type) +static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *type1, PyObject *type2) { + return PyErr_GivenExceptionMatches(err, type1) || PyErr_GivenExceptionMatches(err, type2); +} +#endif +#define __Pyx_PyErr_ExceptionMatches2(err1, err2) __Pyx_PyErr_GivenExceptionMatches2(__Pyx_PyErr_CurrentExceptionType(), err1, err2) +#define __Pyx_PyException_Check(obj) __Pyx_TypeCheck(obj, PyExc_Exception) +#ifdef PyExceptionInstance_Check + #define __Pyx_PyBaseException_Check(obj) PyExceptionInstance_Check(obj) +#else + #define __Pyx_PyBaseException_Check(obj) __Pyx_TypeCheck(obj, PyExc_BaseException) +#endif + +/* GetRuntimeVersion.proto */ +#if __PYX_LIMITED_VERSION_HEX < 0x030b0000 +static unsigned long __Pyx_cached_runtime_version = 0; +static void __Pyx_init_runtime_version(void); +#else +#define __Pyx_init_runtime_version() +#endif +static unsigned long __Pyx_get_runtime_version(void); + +/* SwapException.proto (used by CoroutineBase) */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_ExceptionSwap(type, value, tb) __Pyx__ExceptionSwap(__pyx_tstate, type, value, tb) +static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); +#else +static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb); +#endif + +/* IterNextPlain.proto (used by CoroutineBase) */ +static CYTHON_INLINE PyObject *__Pyx_PyIter_Next_Plain(PyObject *iterator); +#if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030A0000 +static PyObject *__Pyx_GetBuiltinNext_LimitedAPI(void); +#endif + +/* ReturnWithStopIteration.proto (used by CoroutineBase) */ +static CYTHON_INLINE void __Pyx_ReturnWithStopIteration(PyObject* value, int async, int iternext); + +/* CoroutineBase.proto (used by Generator) */ +struct __pyx_CoroutineObject; +typedef PyObject *(*__pyx_coroutine_body_t)(struct __pyx_CoroutineObject *, PyThreadState *, PyObject *); +#if CYTHON_USE_EXC_INFO_STACK +#define __Pyx_ExcInfoStruct _PyErr_StackItem +#else +typedef struct { + PyObject *exc_type; + PyObject *exc_value; + PyObject *exc_traceback; +} __Pyx_ExcInfoStruct; +#endif +typedef struct __pyx_CoroutineObject { + PyObject_HEAD + __pyx_coroutine_body_t body; + PyObject *closure; + __Pyx_ExcInfoStruct gi_exc_state; +#if PY_VERSION_HEX < 0x030C0000 || CYTHON_COMPILING_IN_LIMITED_API + PyObject *gi_weakreflist; +#endif + PyObject *classobj; + PyObject *yieldfrom; + __Pyx_pyiter_sendfunc yieldfrom_am_send; + PyObject *gi_name; + PyObject *gi_qualname; + PyObject *gi_modulename; + PyObject *gi_code; + PyObject *gi_frame; +#if CYTHON_USE_SYS_MONITORING && (CYTHON_PROFILE || CYTHON_TRACE) + PyMonitoringState __pyx_pymonitoring_state[__Pyx_MonitoringEventTypes_CyGen_count]; + uint64_t __pyx_pymonitoring_version; +#endif + int resume_label; + char is_running; +} __pyx_CoroutineObject; +static __pyx_CoroutineObject *__Pyx__Coroutine_New( + PyTypeObject *type, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure, + PyObject *name, PyObject *qualname, PyObject *module_name); +static __pyx_CoroutineObject *__Pyx__Coroutine_NewInit( + __pyx_CoroutineObject *gen, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure, + PyObject *name, PyObject *qualname, PyObject *module_name); +static CYTHON_INLINE void __Pyx_Coroutine_ExceptionClear(__Pyx_ExcInfoStruct *self); +static int __Pyx_Coroutine_clear(PyObject *self); +static __Pyx_PySendResult __Pyx_Coroutine_AmSend(PyObject *self, PyObject *value, PyObject **retval); +static PyObject *__Pyx_Coroutine_Send(PyObject *self, PyObject *value); +static __Pyx_PySendResult __Pyx_Coroutine_Close(PyObject *self, PyObject **retval); +static PyObject *__Pyx_Coroutine_Throw(PyObject *gen, PyObject *args); +#if CYTHON_USE_EXC_INFO_STACK +#define __Pyx_Coroutine_SwapException(self) +#define __Pyx_Coroutine_ResetAndClearException(self) __Pyx_Coroutine_ExceptionClear(&(self)->gi_exc_state) +#else +#define __Pyx_Coroutine_SwapException(self) {\ + __Pyx_ExceptionSwap(&(self)->gi_exc_state.exc_type, &(self)->gi_exc_state.exc_value, &(self)->gi_exc_state.exc_traceback);\ + __Pyx_Coroutine_ResetFrameBackpointer(&(self)->gi_exc_state);\ + } +#define __Pyx_Coroutine_ResetAndClearException(self) {\ + __Pyx_ExceptionReset((self)->gi_exc_state.exc_type, (self)->gi_exc_state.exc_value, (self)->gi_exc_state.exc_traceback);\ + (self)->gi_exc_state.exc_type = (self)->gi_exc_state.exc_value = (self)->gi_exc_state.exc_traceback = NULL;\ + } +#endif +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_PyGen_FetchStopIterationValue(pvalue)\ + __Pyx_PyGen__FetchStopIterationValue(__pyx_tstate, pvalue) +#else +#define __Pyx_PyGen_FetchStopIterationValue(pvalue)\ + __Pyx_PyGen__FetchStopIterationValue(__Pyx_PyThreadState_Current, pvalue) +#endif +static int __Pyx_PyGen__FetchStopIterationValue(PyThreadState *tstate, PyObject **pvalue); +static CYTHON_INLINE void __Pyx_Coroutine_ResetFrameBackpointer(__Pyx_ExcInfoStruct *exc_state); +static char __Pyx_Coroutine_test_and_set_is_running(__pyx_CoroutineObject *gen); +static void __Pyx_Coroutine_unset_is_running(__pyx_CoroutineObject *gen); +static char __Pyx_Coroutine_get_is_running(__pyx_CoroutineObject *gen); +static PyObject *__Pyx_Coroutine_get_is_running_getter(PyObject *gen, void *closure); +#if __PYX_HAS_PY_AM_SEND == 2 +static void __Pyx_SetBackportTypeAmSend(PyTypeObject *type, __Pyx_PyAsyncMethodsStruct *static_amsend_methods, __Pyx_pyiter_sendfunc am_send); +#endif +static PyObject *__Pyx_Coroutine_fail_reduce_ex(PyObject *self, PyObject *arg); + +/* Generator.proto */ +#define __Pyx_Generator_USED +#define __Pyx_Generator_CheckExact(obj) __Pyx_IS_TYPE(obj, __pyx_mstate_global->__pyx_GeneratorType) +#define __Pyx_Generator_New(body, code, closure, name, qualname, module_name)\ + __Pyx__Coroutine_New(__pyx_mstate_global->__pyx_GeneratorType, body, code, closure, name, qualname, module_name) +static PyObject *__Pyx_Generator_Next(PyObject *self); +static int __pyx_Generator_init(PyObject *module); +static CYTHON_INLINE PyObject *__Pyx_Generator_GetInlinedResult(PyObject *self); + +/* CheckBinaryVersion.proto */ +static int __Pyx_check_binary_version(unsigned long ct_version, unsigned long rt_version, int allow_newer); + +/* DecompressString.proto */ +static PyObject *__Pyx_DecompressString(const char *s, Py_ssize_t length, int algo); + +/* MultiPhaseInitModuleState.proto */ +#if CYTHON_PEP489_MULTI_PHASE_INIT && CYTHON_USE_MODULE_STATE +static PyObject *__Pyx_State_FindModule(void*); +static int __Pyx_State_AddModule(PyObject* module, void*); +static int __Pyx_State_RemoveModule(void*); +#elif CYTHON_USE_MODULE_STATE +#define __Pyx_State_FindModule PyState_FindModule +#define __Pyx_State_AddModule PyState_AddModule +#define __Pyx_State_RemoveModule PyState_RemoveModule +#endif + +/* #### Code section: module_declarations ### */ +/* CythonABIVersion.proto */ +#if CYTHON_COMPILING_IN_LIMITED_API + #if CYTHON_METH_FASTCALL + #define __PYX_FASTCALL_ABI_SUFFIX "_fastcall" + #else + #define __PYX_FASTCALL_ABI_SUFFIX + #endif + #define __PYX_LIMITED_ABI_SUFFIX "limited" __PYX_FASTCALL_ABI_SUFFIX __PYX_AM_SEND_ABI_SUFFIX +#else + #define __PYX_LIMITED_ABI_SUFFIX +#endif +#if __PYX_HAS_PY_AM_SEND == 1 + #define __PYX_AM_SEND_ABI_SUFFIX +#elif __PYX_HAS_PY_AM_SEND == 2 + #define __PYX_AM_SEND_ABI_SUFFIX "amsendbackport" +#else + #define __PYX_AM_SEND_ABI_SUFFIX "noamsend" +#endif +#ifndef __PYX_MONITORING_ABI_SUFFIX + #define __PYX_MONITORING_ABI_SUFFIX +#endif +#if CYTHON_USE_TP_FINALIZE + #define __PYX_TP_FINALIZE_ABI_SUFFIX +#else + #define __PYX_TP_FINALIZE_ABI_SUFFIX "nofinalize" +#endif +#if CYTHON_USE_FREELISTS || !defined(__Pyx_AsyncGen_USED) + #define __PYX_FREELISTS_ABI_SUFFIX +#else + #define __PYX_FREELISTS_ABI_SUFFIX "nofreelists" +#endif +#define CYTHON_ABI __PYX_ABI_VERSION __PYX_LIMITED_ABI_SUFFIX __PYX_MONITORING_ABI_SUFFIX __PYX_TP_FINALIZE_ABI_SUFFIX __PYX_FREELISTS_ABI_SUFFIX __PYX_AM_SEND_ABI_SUFFIX +#define __PYX_ABI_MODULE_NAME "_cython_" CYTHON_ABI +#define __PYX_TYPE_MODULE_PREFIX __PYX_ABI_MODULE_NAME "." + +static myhtml_collection_t *__pyx_f_10selectolax_6parser_11CSSSelector_find(struct __pyx_obj_10selectolax_6parser_CSSSelector *__pyx_v_self, myhtml_tree_node_t *__pyx_v_scope); /* proto*/ +static int __pyx_f_10selectolax_6parser_11CSSSelector__create_css_parser(struct __pyx_obj_10selectolax_6parser_CSSSelector *__pyx_v_self); /* proto*/ +static int __pyx_f_10selectolax_6parser_11CSSSelector__prepare_selector(struct __pyx_obj_10selectolax_6parser_CSSSelector *__pyx_v_self, mycss_entry_t *__pyx_v_css_entry, char const *__pyx_v_selector, size_t __pyx_v_selector_size); /* proto*/ +static PyObject *__pyx_f_10selectolax_6parser_8Selector_css(struct __pyx_obj_10selectolax_6parser_Selector *__pyx_v_self, PyObject *__pyx_v_query, int __pyx_skip_dispatch); /* proto*/ +static int __pyx_f_10selectolax_6parser_5Stack_is_empty(struct __pyx_obj_10selectolax_6parser_Stack *__pyx_v_self); /* proto*/ +static int __pyx_f_10selectolax_6parser_5Stack_push(struct __pyx_obj_10selectolax_6parser_Stack *__pyx_v_self, myhtml_tree_node_t *__pyx_v_res); /* proto*/ +static myhtml_tree_node_t *__pyx_f_10selectolax_6parser_5Stack_pop(struct __pyx_obj_10selectolax_6parser_Stack *__pyx_v_self); /* proto*/ +static int __pyx_f_10selectolax_6parser_5Stack_resize(struct __pyx_obj_10selectolax_6parser_Stack *__pyx_v_self); /* proto*/ +static struct __pyx_obj_10selectolax_6parser__Attributes *__pyx_f_10selectolax_6parser_11_Attributes_create(myhtml_tree_node_t *__pyx_v_node, PyObject *__pyx_v_decode_errors); /* proto*/ +static struct __pyx_obj_10selectolax_6parser_Node *__pyx_f_10selectolax_6parser_4Node_new(myhtml_tree_node_t *__pyx_v_node, struct __pyx_obj_10selectolax_6parser_HTMLParser *__pyx_v_parser); /* proto*/ +static CYTHON_INLINE PyObject *__pyx_f_10selectolax_6parser_4Node__text_deep(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self, myhtml_tree_node_t *__pyx_v_node, struct __pyx_opt_args_10selectolax_6parser_4Node__text_deep *__pyx_optional_args); /* proto*/ +static void __pyx_f_10selectolax_6parser_10HTMLParser__detect_encoding(struct __pyx_obj_10selectolax_6parser_HTMLParser *__pyx_v_self, char *__pyx_v_html, size_t __pyx_v_html_len); /* proto*/ +static int __pyx_f_10selectolax_6parser_10HTMLParser__parse_html(struct __pyx_obj_10selectolax_6parser_HTMLParser *__pyx_v_self, char *__pyx_v_html, size_t __pyx_v_html_len); /* proto*/ +static struct __pyx_obj_10selectolax_6parser_HTMLParser *__pyx_f_10selectolax_6parser_10HTMLParser_from_tree(myhtml_tree_t *__pyx_v_tree, PyObject *__pyx_v_raw_html, int __pyx_v_detect_encoding, int __pyx_v_use_meta_tags, PyObject *__pyx_v_decode_errors, myencoding_t __pyx_v_encoding); /* proto*/ + +/* Module declarations from "__builtin__" */ + +/* Module declarations from "cpython.bool" */ + +/* Module declarations from "libc.string" */ + +/* Module declarations from "libc.stdio" */ + +/* Module declarations from "__builtin__" */ + +/* Module declarations from "cpython.type" */ + +/* Module declarations from "cpython" */ + +/* Module declarations from "cpython.object" */ + +/* Module declarations from "cpython.exc" */ + +/* Module declarations from "cython" */ + +/* Module declarations from "libc.stdlib" */ + +/* Module declarations from "selectolax.parser" */ +static PyObject *__pyx_f_10selectolax_6parser_find_nodes(struct __pyx_obj_10selectolax_6parser_HTMLParser *, myhtml_tree_node_t *, PyObject *); /*proto*/ +static PyLongObject *__pyx_f_10selectolax_6parser_find_matches(struct __pyx_obj_10selectolax_6parser_HTMLParser *, myhtml_tree_node_t *, PyObject *); /*proto*/ +static CYTHON_INLINE PyObject *__pyx_f_10selectolax_6parser_append_text(PyObject *, PyObject *, struct __pyx_opt_args_10selectolax_6parser_append_text *__pyx_optional_args); /*proto*/ +static PyObject *__pyx_f_10selectolax_6parser___pyx_unpickle_Selector__set_state(struct __pyx_obj_10selectolax_6parser_Selector *, PyObject *); /*proto*/ +static CYTHON_INLINE PyObject *__pyx_fuse_0__pyx_f_10selectolax_6parser_to_bytes(PyObject *); /*proto*/ +static CYTHON_INLINE PyObject *__pyx_fuse_1__pyx_f_10selectolax_6parser_to_bytes(PyObject *); /*proto*/ +static CYTHON_INLINE PyObject *__pyx_fuse_2__pyx_f_10selectolax_6parser_to_bytes(struct __pyx_obj_10selectolax_6parser_Node *); /*proto*/ +static PyObject *__pyx_ff_map_fused_7df988_1_3_02b106__11__dunderbuiltin__dunder_PyObject__ptr__and_1__etc(PyObject *); /*proto*/ +static PyObject *__pyx_ff_match_signatures_single(PyObject *, PyObject *); /*proto*/ +/* #### Code section: typeinfo ### */ +/* #### Code section: before_global_var ### */ +#define __Pyx_MODULE_NAME "selectolax.parser" +extern int __pyx_module_is_main_selectolax__parser; +int __pyx_module_is_main_selectolax__parser = 0; + +/* Implementation of "selectolax.parser" */ +/* #### Code section: global_var ### */ +static PyObject *__pyx_builtin___import__; +/* #### Code section: string_decls ### */ +static const char __pyx_k_ignore[] = "ignore"; +static const char __pyx_k_node_nodes[] = "node, nodes"; +/* #### Code section: decls ### */ +static int __pyx_pf_10selectolax_6parser_11CSSSelector___init__(struct __pyx_obj_10selectolax_6parser_CSSSelector *__pyx_v_self, PyObject *__pyx_v_selector); /* proto */ +static void __pyx_pf_10selectolax_6parser_11CSSSelector_2__dealloc__(struct __pyx_obj_10selectolax_6parser_CSSSelector *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_11CSSSelector_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_10selectolax_6parser_CSSSelector *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_11CSSSelector_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_10selectolax_6parser_CSSSelector *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */ +static int __pyx_pf_10selectolax_6parser_8Selector___init__(struct __pyx_obj_10selectolax_6parser_Selector *__pyx_v_self, struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_node, PyObject *__pyx_v_query); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_8Selector_2css(struct __pyx_obj_10selectolax_6parser_Selector *__pyx_v_self, PyObject *__pyx_v_query); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_8Selector_7matches___get__(struct __pyx_obj_10selectolax_6parser_Selector *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_8Selector_11any_matches___get__(struct __pyx_obj_10selectolax_6parser_Selector *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_8Selector_4text_contains(struct __pyx_obj_10selectolax_6parser_Selector *__pyx_v_self, PyObject *__pyx_v_text, PyLongObject *__pyx_v_deep, PyObject *__pyx_v_separator, PyLongObject *__pyx_v_strip); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_8Selector_6any_text_contains(struct __pyx_obj_10selectolax_6parser_Selector *__pyx_v_self, PyObject *__pyx_v_text, PyLongObject *__pyx_v_deep, PyObject *__pyx_v_separator, PyLongObject *__pyx_v_strip); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_8Selector_8attribute_longer_than(struct __pyx_obj_10selectolax_6parser_Selector *__pyx_v_self, PyObject *__pyx_v_attribute, int __pyx_v_length, PyObject *__pyx_v_start); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_8Selector_10any_attribute_longer_than(struct __pyx_obj_10selectolax_6parser_Selector *__pyx_v_self, PyObject *__pyx_v_attribute, int __pyx_v_length, PyObject *__pyx_v_start); /* proto */ +static int __pyx_pf_10selectolax_6parser_8Selector_12__bool__(struct __pyx_obj_10selectolax_6parser_Selector *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_8Selector_14__reduce_cython__(struct __pyx_obj_10selectolax_6parser_Selector *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_8Selector_16__setstate_cython__(struct __pyx_obj_10selectolax_6parser_Selector *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */ +static int __pyx_pf_10selectolax_6parser_5Stack___cinit__(struct __pyx_obj_10selectolax_6parser_Stack *__pyx_v_self, size_t __pyx_v_capacity); /* proto */ +static void __pyx_pf_10selectolax_6parser_5Stack_2__dealloc__(struct __pyx_obj_10selectolax_6parser_Stack *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_5Stack_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_10selectolax_6parser_Stack *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_5Stack_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_10selectolax_6parser_Stack *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_11_Attributes___iter__(struct __pyx_obj_10selectolax_6parser__Attributes *__pyx_v_self); /* proto */ +static int __pyx_pf_10selectolax_6parser_11_Attributes_3__setitem__(struct __pyx_obj_10selectolax_6parser__Attributes *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_value); /* proto */ +static int __pyx_pf_10selectolax_6parser_11_Attributes_5__delitem__(struct __pyx_obj_10selectolax_6parser__Attributes *__pyx_v_self, PyObject *__pyx_v_key); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_11_Attributes_7__getitem__(struct __pyx_obj_10selectolax_6parser__Attributes *__pyx_v_self, PyObject *__pyx_v_key); /* proto */ +static Py_ssize_t __pyx_pf_10selectolax_6parser_11_Attributes_9__len__(struct __pyx_obj_10selectolax_6parser__Attributes *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_11_Attributes_11keys(struct __pyx_obj_10selectolax_6parser__Attributes *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_11_Attributes_13items(struct __pyx_obj_10selectolax_6parser__Attributes *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_11_Attributes_16values(struct __pyx_obj_10selectolax_6parser__Attributes *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_11_Attributes_19get(struct __pyx_obj_10selectolax_6parser__Attributes *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_default); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_11_Attributes_21sget(struct __pyx_obj_10selectolax_6parser__Attributes *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_default); /* proto */ +static int __pyx_pf_10selectolax_6parser_11_Attributes_23__contains__(struct __pyx_obj_10selectolax_6parser__Attributes *__pyx_v_self, PyObject *__pyx_v_key); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_11_Attributes_25__repr__(struct __pyx_obj_10selectolax_6parser__Attributes *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_11_Attributes_27__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_10selectolax_6parser__Attributes *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_11_Attributes_29__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_10selectolax_6parser__Attributes *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_4Node_10attributes___get__(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_4Node_5attrs___get__(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_4Node_6mem_id___get__(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_4Node_2id___get__(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self); /* proto */ +static Py_hash_t __pyx_pf_10selectolax_6parser_4Node___hash__(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_4Node_2text(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self, PyLongObject *__pyx_v_deep, PyObject *__pyx_v_separator, PyLongObject *__pyx_v_strip); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_4Node_4iter(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self, PyObject *__pyx_v_include_text); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_4Node_7traverse(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self, PyObject *__pyx_v_include_text); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_4Node_3tag___get__(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_4Node_5child___get__(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_4Node_6parent___get__(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_4Node_4next___get__(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_4Node_4prev___get__(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_4Node_10last_child___get__(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_4Node_4html___get__(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_4Node_10css(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self, PyObject *__pyx_v_query); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_4Node_12any_css_matches(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self, PyObject *__pyx_v_selectors); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_4Node_14css_matches(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self, PyObject *__pyx_v_selector); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_4Node_16css_first(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self, PyObject *__pyx_v_query, PyObject *__pyx_v_default, PyLongObject *__pyx_v_strict); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_4Node_18decompose(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self, PyLongObject *__pyx_v_recursive); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_4Node_20remove(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self, PyLongObject *__pyx_v_recursive); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_4Node_22unwrap(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self, PyObject *__pyx_v_delete_empty); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_4Node_24strip_tags(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self, PyObject *__pyx_v_tags, PyLongObject *__pyx_v_recursive); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_4Node_26unwrap_tags(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self, PyObject *__pyx_v_tags, PyObject *__pyx_v_delete_empty); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_4Node_28replace_with(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_signatures, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs, CYTHON_UNUSED PyObject *__pyx_v_defaults, CYTHON_UNUSED PyObject *__pyx_v__fused_sigindex); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_4Node_50replace_with(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_4Node_52replace_with(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_4Node_54replace_with(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self, struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_value); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_4Node_30insert_before(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_signatures, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs, CYTHON_UNUSED PyObject *__pyx_v_defaults, CYTHON_UNUSED PyObject *__pyx_v__fused_sigindex); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_4Node_58insert_before(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_4Node_60insert_before(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_4Node_62insert_before(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self, struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_value); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_4Node_32insert_after(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_signatures, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs, CYTHON_UNUSED PyObject *__pyx_v_defaults, CYTHON_UNUSED PyObject *__pyx_v__fused_sigindex); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_4Node_66insert_after(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_4Node_68insert_after(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_4Node_70insert_after(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self, struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_value); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_4Node_34insert_child(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_signatures, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs, CYTHON_UNUSED PyObject *__pyx_v_defaults, CYTHON_UNUSED PyObject *__pyx_v__fused_sigindex); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_4Node_74insert_child(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_4Node_76insert_child(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_4Node_78insert_child(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self, struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_value); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_4Node_36unwrap_tags(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self, PyObject *__pyx_v_tags, PyObject *__pyx_v_delete_empty); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_4Node_9raw_value___get__(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_4Node_38select(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self, PyObject *__pyx_v_query); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_4Node_40scripts_contain(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self, PyObject *__pyx_v_query); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_4Node_42script_srcs_contain(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self, PyObject *__pyx_v_queries); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_4Node_44__repr__(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_4Node_46__eq__(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self, PyObject *__pyx_v_other); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_4Node_12text_content___get__(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_4Node_48merge_text_nodes(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_4Node_6parser___get__(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self); /* proto */ +static int __pyx_pf_10selectolax_6parser_4Node_6parser_2__set__(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ +static int __pyx_pf_10selectolax_6parser_4Node_6parser_4__del__(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_4Node_82__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_4Node_84__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_preprocess_input(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_html, PyObject *__pyx_v_decode_errors); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_2do_create_tag(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_tag, PyObject *__pyx_v_parser_cls); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_4get_fragment_type(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_html, PyObject *__pyx_v_parser_cls, PyObject *__pyx_v_tree); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_6do_parse_fragment(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_html, PyObject *__pyx_v_parser_cls); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_8create_tag(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_tag); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_10parse_fragment(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_html); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_12preprocess_input(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_html, PyObject *__pyx_v_decode_errors); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_14do_create_tag(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_tag, PyObject *__pyx_v_parser_cls); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_16get_fragment_type(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_html, PyObject *__pyx_v_parser_cls, PyObject *__pyx_v_tree); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_18do_parse_fragment(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_html, PyObject *__pyx_v_parser_cls); /* proto */ +static int __pyx_pf_10selectolax_6parser_10HTMLParser___init__(struct __pyx_obj_10selectolax_6parser_HTMLParser *__pyx_v_self, PyObject *__pyx_v_html, PyObject *__pyx_v_detect_encoding, PyObject *__pyx_v_use_meta_tags, PyObject *__pyx_v_decode_errors); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_10HTMLParser_2css(struct __pyx_obj_10selectolax_6parser_HTMLParser *__pyx_v_self, PyObject *__pyx_v_query); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_10HTMLParser_4css_first(struct __pyx_obj_10selectolax_6parser_HTMLParser *__pyx_v_self, PyObject *__pyx_v_query, PyObject *__pyx_v_default, PyObject *__pyx_v_strict); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_10HTMLParser_14input_encoding___get__(struct __pyx_obj_10selectolax_6parser_HTMLParser *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_10HTMLParser_4root___get__(struct __pyx_obj_10selectolax_6parser_HTMLParser *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_10HTMLParser_4head___get__(struct __pyx_obj_10selectolax_6parser_HTMLParser *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_10HTMLParser_4body___get__(struct __pyx_obj_10selectolax_6parser_HTMLParser *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_10HTMLParser_6tags(struct __pyx_obj_10selectolax_6parser_HTMLParser *__pyx_v_self, PyObject *__pyx_v_name); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_10HTMLParser_8text(struct __pyx_obj_10selectolax_6parser_HTMLParser *__pyx_v_self, PyLongObject *__pyx_v_deep, PyObject *__pyx_v_separator, PyLongObject *__pyx_v_strip); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_10HTMLParser_10strip_tags(struct __pyx_obj_10selectolax_6parser_HTMLParser *__pyx_v_self, PyObject *__pyx_v_tags, PyLongObject *__pyx_v_recursive); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_10HTMLParser_12unwrap_tags(struct __pyx_obj_10selectolax_6parser_HTMLParser *__pyx_v_self, PyObject *__pyx_v_tags, PyObject *__pyx_v_delete_empty); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_10HTMLParser_4html___get__(struct __pyx_obj_10selectolax_6parser_HTMLParser *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_10HTMLParser_14select(struct __pyx_obj_10selectolax_6parser_HTMLParser *__pyx_v_self, PyObject *__pyx_v_query); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_10HTMLParser_16any_css_matches(struct __pyx_obj_10selectolax_6parser_HTMLParser *__pyx_v_self, PyObject *__pyx_v_selectors); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_10HTMLParser_18scripts_contain(struct __pyx_obj_10selectolax_6parser_HTMLParser *__pyx_v_self, PyObject *__pyx_v_query); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_10HTMLParser_20script_srcs_contain(struct __pyx_obj_10selectolax_6parser_HTMLParser *__pyx_v_self, PyObject *__pyx_v_queries); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_10HTMLParser_22css_matches(struct __pyx_obj_10selectolax_6parser_HTMLParser *__pyx_v_self, PyObject *__pyx_v_selector); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_10HTMLParser_24merge_text_nodes(struct __pyx_obj_10selectolax_6parser_HTMLParser *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_10HTMLParser_26clone(struct __pyx_obj_10selectolax_6parser_HTMLParser *__pyx_v_self); /* proto */ +static void __pyx_pf_10selectolax_6parser_10HTMLParser_28__dealloc__(struct __pyx_obj_10selectolax_6parser_HTMLParser *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_10HTMLParser_30__repr__(struct __pyx_obj_10selectolax_6parser_HTMLParser *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_10HTMLParser_15detect_encoding___get__(struct __pyx_obj_10selectolax_6parser_HTMLParser *__pyx_v_self); /* proto */ +static int __pyx_pf_10selectolax_6parser_10HTMLParser_15detect_encoding_2__set__(struct __pyx_obj_10selectolax_6parser_HTMLParser *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_10HTMLParser_13use_meta_tags___get__(struct __pyx_obj_10selectolax_6parser_HTMLParser *__pyx_v_self); /* proto */ +static int __pyx_pf_10selectolax_6parser_10HTMLParser_13use_meta_tags_2__set__(struct __pyx_obj_10selectolax_6parser_HTMLParser *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_10HTMLParser_13decode_errors___get__(struct __pyx_obj_10selectolax_6parser_HTMLParser *__pyx_v_self); /* proto */ +static int __pyx_pf_10selectolax_6parser_10HTMLParser_13decode_errors_2__set__(struct __pyx_obj_10selectolax_6parser_HTMLParser *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ +static int __pyx_pf_10selectolax_6parser_10HTMLParser_13decode_errors_4__del__(struct __pyx_obj_10selectolax_6parser_HTMLParser *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_10HTMLParser_8raw_html___get__(struct __pyx_obj_10selectolax_6parser_HTMLParser *__pyx_v_self); /* proto */ +static int __pyx_pf_10selectolax_6parser_10HTMLParser_8raw_html_2__set__(struct __pyx_obj_10selectolax_6parser_HTMLParser *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ +static int __pyx_pf_10selectolax_6parser_10HTMLParser_8raw_html_4__del__(struct __pyx_obj_10selectolax_6parser_HTMLParser *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_10HTMLParser_32__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_10selectolax_6parser_HTMLParser *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_10HTMLParser_34__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_10selectolax_6parser_HTMLParser *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */ +static PyObject *__pyx_pf_10selectolax_6parser_20__pyx_unpickle_Selector(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */ +static PyObject *__pyx_tp_new_10selectolax_6parser_HTMLParser(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_10selectolax_6parser_Stack(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_10selectolax_6parser_CSSSelector(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_10selectolax_6parser_Selector(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_10selectolax_6parser__Attributes(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_10selectolax_6parser_Node(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_10selectolax_6parser___pyx_scope_struct____iter__(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_10selectolax_6parser___pyx_scope_struct_1_items(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_10selectolax_6parser___pyx_scope_struct_2_values(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_10selectolax_6parser___pyx_scope_struct_3_iter(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_10selectolax_6parser___pyx_scope_struct_4_traverse(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +/* #### Code section: late_includes ### */ +/* #### Code section: module_state ### */ +/* SmallCodeConfig */ +#ifndef CYTHON_SMALL_CODE +#if defined(__clang__) + #define CYTHON_SMALL_CODE +#elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) + #define CYTHON_SMALL_CODE __attribute__((cold)) +#else + #define CYTHON_SMALL_CODE +#endif +#endif + +typedef struct { + PyObject *__pyx_d; + PyObject *__pyx_b; + PyObject *__pyx_cython_runtime; + PyObject *__pyx_empty_tuple; + PyObject *__pyx_empty_bytes; + PyObject *__pyx_empty_unicode; + PyTypeObject *__pyx_ptype_7cpython_4bool_bool; + PyTypeObject *__pyx_ptype_7cpython_4type_type; + PyObject *__pyx_type_10selectolax_6parser_HTMLParser; + PyObject *__pyx_type_10selectolax_6parser_Stack; + PyObject *__pyx_type_10selectolax_6parser_CSSSelector; + PyObject *__pyx_type_10selectolax_6parser_Selector; + PyObject *__pyx_type_10selectolax_6parser__Attributes; + PyObject *__pyx_type_10selectolax_6parser_Node; + PyObject *__pyx_type_10selectolax_6parser___pyx_scope_struct____iter__; + PyObject *__pyx_type_10selectolax_6parser___pyx_scope_struct_1_items; + PyObject *__pyx_type_10selectolax_6parser___pyx_scope_struct_2_values; + PyObject *__pyx_type_10selectolax_6parser___pyx_scope_struct_3_iter; + PyObject *__pyx_type_10selectolax_6parser___pyx_scope_struct_4_traverse; + PyTypeObject *__pyx_ptype_10selectolax_6parser_HTMLParser; + PyTypeObject *__pyx_ptype_10selectolax_6parser_Stack; + PyTypeObject *__pyx_ptype_10selectolax_6parser_CSSSelector; + PyTypeObject *__pyx_ptype_10selectolax_6parser_Selector; + PyTypeObject *__pyx_ptype_10selectolax_6parser__Attributes; + PyTypeObject *__pyx_ptype_10selectolax_6parser_Node; + PyTypeObject *__pyx_ptype_10selectolax_6parser___pyx_scope_struct____iter__; + PyTypeObject *__pyx_ptype_10selectolax_6parser___pyx_scope_struct_1_items; + PyTypeObject *__pyx_ptype_10selectolax_6parser___pyx_scope_struct_2_values; + PyTypeObject *__pyx_ptype_10selectolax_6parser___pyx_scope_struct_3_iter; + PyTypeObject *__pyx_ptype_10selectolax_6parser___pyx_scope_struct_4_traverse; + __Pyx_CachedCFunction __pyx_umethod_PyDict_Type_get; + __Pyx_CachedCFunction __pyx_umethod_PyDict_Type_items; + __Pyx_CachedCFunction __pyx_umethod_PyDict_Type_pop; + __Pyx_CachedCFunction __pyx_umethod_PyDict_Type_values; + __Pyx_CachedCFunction __pyx_umethod_PyBytes_Type__encode; + __Pyx_CachedCFunction __pyx_umethod_PyUnicode_Type__strip; + PyObject *__pyx_k__3; + PyObject *__pyx_k__4; + PyObject *__pyx_k__5; + PyObject *__pyx_k__6; + PyObject *__pyx_tuple[10]; + PyObject *__pyx_codeobj_tab[80]; + PyObject *__pyx_string_tab[410]; + PyObject *__pyx_number_tab[5]; +/* #### Code section: module_state_contents ### */ + +#if CYTHON_USE_FREELISTS +struct __pyx_obj_10selectolax_6parser___pyx_scope_struct____iter__ *__pyx_freelist_10selectolax_6parser___pyx_scope_struct____iter__[8]; +int __pyx_freecount_10selectolax_6parser___pyx_scope_struct____iter__; +#endif + +#if CYTHON_USE_FREELISTS +struct __pyx_obj_10selectolax_6parser___pyx_scope_struct_1_items *__pyx_freelist_10selectolax_6parser___pyx_scope_struct_1_items[8]; +int __pyx_freecount_10selectolax_6parser___pyx_scope_struct_1_items; +#endif + +#if CYTHON_USE_FREELISTS +struct __pyx_obj_10selectolax_6parser___pyx_scope_struct_2_values *__pyx_freelist_10selectolax_6parser___pyx_scope_struct_2_values[8]; +int __pyx_freecount_10selectolax_6parser___pyx_scope_struct_2_values; +#endif + +#if CYTHON_USE_FREELISTS +struct __pyx_obj_10selectolax_6parser___pyx_scope_struct_3_iter *__pyx_freelist_10selectolax_6parser___pyx_scope_struct_3_iter[8]; +int __pyx_freecount_10selectolax_6parser___pyx_scope_struct_3_iter; +#endif + +#if CYTHON_USE_FREELISTS +struct __pyx_obj_10selectolax_6parser___pyx_scope_struct_4_traverse *__pyx_freelist_10selectolax_6parser___pyx_scope_struct_4_traverse[8]; +int __pyx_freecount_10selectolax_6parser___pyx_scope_struct_4_traverse; +#endif +/* CommonTypesMetaclass.module_state_decls */ +PyTypeObject *__pyx_CommonTypesMetaclassType; + +/* CachedMethodType.module_state_decls */ +#if CYTHON_COMPILING_IN_LIMITED_API +PyObject *__Pyx_CachedMethodType; +#endif + +/* CythonFunctionShared.module_state_decls */ +PyTypeObject *__pyx_CyFunctionType; + +/* FusedFunction.module_state_decls */ +PyTypeObject *__pyx_FusedFunctionType; + +/* CodeObjectCache.module_state_decls */ +struct __Pyx_CodeObjectCache __pyx_code_cache; + +/* IterNextPlain.module_state_decls */ +#if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030A0000 +PyObject *__Pyx_GetBuiltinNext_LimitedAPI_cache; +#endif + +/* Generator.module_state_decls */ +PyTypeObject *__pyx_GeneratorType; + +/* #### Code section: module_state_end ### */ +} __pyx_mstatetype; + +#if CYTHON_USE_MODULE_STATE +#ifdef __cplusplus +namespace { +extern struct PyModuleDef __pyx_moduledef; +} /* anonymous namespace */ +#else +static struct PyModuleDef __pyx_moduledef; +#endif + +#define __pyx_mstate_global (__Pyx_PyModule_GetState(__Pyx_State_FindModule(&__pyx_moduledef))) + +#define __pyx_m (__Pyx_State_FindModule(&__pyx_moduledef)) +#else +static __pyx_mstatetype __pyx_mstate_global_static = +#ifdef __cplusplus + {}; +#else + {0}; +#endif +static __pyx_mstatetype * const __pyx_mstate_global = &__pyx_mstate_global_static; +#endif +/* #### Code section: constant_name_defines ### */ +#define __pyx_kp_u_ __pyx_string_tab[0] +#define __pyx_kp_u_A_dict_like_object_that_is_simil __pyx_string_tab[1] +#define __pyx_kp_u_Bad_CSS_Selectors_s __pyx_string_tab[2] +#define __pyx_kp_u_Can_t_allocate_memory_for_a_new __pyx_string_tab[3] +#define __pyx_kp_u_Can_t_init_MyCSS_Entry_object __pyx_string_tab[4] +#define __pyx_kp_u_Can_t_init_MyCSS_object __pyx_string_tab[5] +#define __pyx_kp_u_Can_t_init_MyHTML_Tree_object __pyx_string_tab[6] +#define __pyx_kp_u_Can_t_init_MyHTML_object __pyx_string_tab[7] +#define __pyx_kp_u_Can_t_obtain_raw_value_for_non_t __pyx_string_tab[8] +#define __pyx_kp_u_Can_t_parse_HTML_status_code_d __pyx_string_tab[9] +#define __pyx_kp_u_Expected_1_match_but_found_s_mat __pyx_string_tab[10] +#define __pyx_kp_u_Expected_a_string_but_s_found __pyx_string_tab[11] +#define __pyx_kp_u_Expected_a_string_or_Node_instan __pyx_string_tab[12] +#define __pyx_kp_u_Expected_at_least __pyx_string_tab[13] +#define __pyx_kp_u_Failed_to_allocate_memory_for_st __pyx_string_tab[14] +#define __pyx_kp_u_Get_all_attributes_that_belong_t __pyx_string_tab[15] +#define __pyx_kp_u_HTMLParser_chars_s __pyx_string_tab[16] +#define __pyx_kp_u_HTMLParser_merge_text_nodes_line __pyx_string_tab[17] +#define __pyx_kp_u_HTMLParser_strip_tags_line_235 __pyx_string_tab[18] +#define __pyx_kp_u_HTMLParser_unwrap_tags_line_277 __pyx_string_tab[19] +#define __pyx_kp_u_Insert_a_node_after_the_current __pyx_string_tab[20] +#define __pyx_kp_u_Insert_a_node_before_the_curren __pyx_string_tab[21] +#define __pyx_kp_u_Insert_a_node_inside_at_the_end __pyx_string_tab[22] +#define __pyx_kp_u_Iterates_over_all_text_nodes_and __pyx_string_tab[23] +#define __pyx_kp_u_No_matching_signature_found __pyx_string_tab[24] +#define __pyx_kp_u_Node_attributes___get___line_159 __pyx_string_tab[25] +#define __pyx_kp_u_Node_attrs___get___line_195 __pyx_string_tab[26] +#define __pyx_kp_u_Node_decompose_line_496 __pyx_string_tab[27] +#define __pyx_kp_u_Node_insert_after_line_692 __pyx_string_tab[28] +#define __pyx_kp_u_Node_insert_before_line_652 __pyx_string_tab[29] +#define __pyx_kp_u_Node_insert_child_line_732 __pyx_string_tab[30] +#define __pyx_kp_u_Node_merge_text_nodes_line_925 __pyx_string_tab[31] +#define __pyx_kp_u_Node_raw_value___get___line_799 __pyx_string_tab[32] +#define __pyx_kp_u_Node_replace_with_line_611 __pyx_string_tab[33] +#define __pyx_kp_u_Node_s __pyx_string_tab[34] +#define __pyx_kp_u_Node_strip_tags_line_558 __pyx_string_tab[35] +#define __pyx_kp_u_Node_unwrap_line_521 __pyx_string_tab[36] +#define __pyx_kp_u_Node_unwrap_tags_line_584 __pyx_string_tab[37] +#define __pyx_kp_u_Node_unwrap_tags_line_772 __pyx_string_tab[38] +#define __pyx_kp_u_Note_that_Cython_is_deliberately __pyx_string_tab[39] +#define __pyx_kp_u_Optional_Parser __pyx_string_tab[40] +#define __pyx_kp_u_Remove_a_Node_from_the_tree_Para __pyx_string_tab[41] +#define __pyx_kp_u_Remove_specified_tags_from_the_H __pyx_string_tab[42] +#define __pyx_kp_u_Remove_specified_tags_from_the_n __pyx_string_tab[43] +#define __pyx_kp_u_Replace_current_Node_with_specif __pyx_string_tab[44] +#define __pyx_kp_u_Replace_node_with_whatever_is_in __pyx_string_tab[45] +#define __pyx_kp_u_Return_the_raw_unparsed_original __pyx_string_tab[46] +#define __pyx_kp_u_Tag_name_cannot_be_empty __pyx_string_tab[47] +#define __pyx_kp_u_Tag_name_is_too_long __pyx_string_tab[48] +#define __pyx_kp_u_The_specified_HTML_input_is_too __pyx_string_tab[49] +#define __pyx_kp_u_UTF_8 __pyx_string_tab[50] +#define __pyx_kp_u_Unwraps_specified_tags_from_the __pyx_string_tab[51] +#define __pyx_kp_u_Unwraps_specified_tags_from_the_2 __pyx_string_tab[52] +#define __pyx_kp_u_Unwraps_specified_tags_from_the_3 __pyx_string_tab[53] +#define __pyx_kp_u__10 __pyx_string_tab[54] +#define __pyx_kp_u__11 __pyx_string_tab[55] +#define __pyx_kp_u__2 __pyx_string_tab[56] +#define __pyx_kp_u__7 __pyx_string_tab[57] +#define __pyx_kp_u__8 __pyx_string_tab[58] +#define __pyx_kp_u__9 __pyx_string_tab[59] +#define __pyx_kp_u_add_note __pyx_string_tab[60] +#define __pyx_kp_u_arguments_got __pyx_string_tab[61] +#define __pyx_kp_u_attributes_2 __pyx_string_tab[62] +#define __pyx_kp_u_body __pyx_string_tab[63] +#define __pyx_kp_u_disable __pyx_string_tab[64] +#define __pyx_kp_u_enable __pyx_string_tab[65] +#define __pyx_kp_u_gc __pyx_string_tab[66] +#define __pyx_kp_u_head __pyx_string_tab[67] +#define __pyx_kp_u_html_2 __pyx_string_tab[68] +#define __pyx_kp_u_html_body_head_er __pyx_string_tab[69] +#define __pyx_kp_u_html_tree_is_still_NULL_even_aft __pyx_string_tab[70] +#define __pyx_kp_u_isenabled __pyx_string_tab[71] +#define __pyx_kp_u_items_2 __pyx_string_tab[72] +#define __pyx_kp_u_no_default___reduce___due_to_non __pyx_string_tab[73] +#define __pyx_kp_u_selectolax_modest_node_pxi __pyx_string_tab[74] +#define __pyx_kp_u_selectolax_modest_selection_pxi __pyx_string_tab[75] +#define __pyx_kp_u_selectolax_modest_util_pxi __pyx_string_tab[76] +#define __pyx_kp_u_selectolax_modest_utils_pxi __pyx_string_tab[77] +#define __pyx_kp_u_selectolax_parser __pyx_string_tab[78] +#define __pyx_kp_u_selectolax_parser_pyx __pyx_string_tab[79] +#define __pyx_kp_u_selectolax_utils_pxi __pyx_string_tab[80] +#define __pyx_kp_u_self_css_entry_self_finder_self __pyx_string_tab[81] +#define __pyx_kp_u_self_html_tree_cannot_be_convert __pyx_string_tab[82] +#define __pyx_kp_u_self_node_cannot_be_converted_to __pyx_string_tab[83] +#define __pyx_kp_u_self_node_is_not_None_or_self_no __pyx_string_tab[84] +#define __pyx_kp_u_stringsource __pyx_string_tab[85] +#define __pyx_kp_u_undef __pyx_string_tab[86] +#define __pyx_kp_u_utf_8 __pyx_string_tab[87] +#define __pyx_n_u_Attributes __pyx_string_tab[88] +#define __pyx_n_u_Attributes___iter __pyx_string_tab[89] +#define __pyx_n_u_Attributes___reduce_cython __pyx_string_tab[90] +#define __pyx_n_u_Attributes___setstate_cython __pyx_string_tab[91] +#define __pyx_n_u_Attributes_get __pyx_string_tab[92] +#define __pyx_n_u_Attributes_items __pyx_string_tab[93] +#define __pyx_n_u_Attributes_keys __pyx_string_tab[94] +#define __pyx_n_u_Attributes_sget __pyx_string_tab[95] +#define __pyx_n_u_Attributes_values __pyx_string_tab[96] +#define __pyx_n_u_CSSSelector __pyx_string_tab[97] +#define __pyx_n_u_CSSSelector___reduce_cython __pyx_string_tab[98] +#define __pyx_n_u_CSSSelector___setstate_cython __pyx_string_tab[99] +#define __pyx_n_u_FRAGMENT __pyx_string_tab[100] +#define __pyx_n_u_HTMLParser __pyx_string_tab[101] +#define __pyx_n_u_HTMLParser___reduce_cython __pyx_string_tab[102] +#define __pyx_n_u_HTMLParser___setstate_cython __pyx_string_tab[103] +#define __pyx_n_u_HTMLParser_any_css_matches __pyx_string_tab[104] +#define __pyx_n_u_HTMLParser_clone __pyx_string_tab[105] +#define __pyx_n_u_HTMLParser_css __pyx_string_tab[106] +#define __pyx_n_u_HTMLParser_css_first __pyx_string_tab[107] +#define __pyx_n_u_HTMLParser_css_matches __pyx_string_tab[108] +#define __pyx_n_u_HTMLParser_merge_text_nodes __pyx_string_tab[109] +#define __pyx_n_u_HTMLParser_script_srcs_contain __pyx_string_tab[110] +#define __pyx_n_u_HTMLParser_scripts_contain __pyx_string_tab[111] +#define __pyx_n_u_HTMLParser_select __pyx_string_tab[112] +#define __pyx_n_u_HTMLParser_strip_tags __pyx_string_tab[113] +#define __pyx_n_u_HTMLParser_tags __pyx_string_tab[114] +#define __pyx_n_u_HTMLParser_text __pyx_string_tab[115] +#define __pyx_n_u_HTMLParser_unwrap_tags __pyx_string_tab[116] +#define __pyx_n_u_IGNORECASE __pyx_string_tab[117] +#define __pyx_n_u_LexborHTMLParser __pyx_string_tab[118] +#define __pyx_n_u_Literal __pyx_string_tab[119] +#define __pyx_n_u_MAX_HTML_INPUT_SIZE __pyx_string_tab[120] +#define __pyx_n_u_Node __pyx_string_tab[121] +#define __pyx_n_u_Node___reduce_cython __pyx_string_tab[122] +#define __pyx_n_u_Node___setstate_cython __pyx_string_tab[123] +#define __pyx_n_u_Node_any_css_matches __pyx_string_tab[124] +#define __pyx_n_u_Node_css __pyx_string_tab[125] +#define __pyx_n_u_Node_css_first __pyx_string_tab[126] +#define __pyx_n_u_Node_css_matches __pyx_string_tab[127] +#define __pyx_n_u_Node_decompose __pyx_string_tab[128] +#define __pyx_n_u_Node_insert_after __pyx_string_tab[129] +#define __pyx_n_u_Node_insert_after_Node __pyx_string_tab[130] +#define __pyx_n_u_Node_insert_after_bytes __pyx_string_tab[131] +#define __pyx_n_u_Node_insert_after_str __pyx_string_tab[132] +#define __pyx_n_u_Node_insert_before __pyx_string_tab[133] +#define __pyx_n_u_Node_insert_before_Node __pyx_string_tab[134] +#define __pyx_n_u_Node_insert_before_bytes __pyx_string_tab[135] +#define __pyx_n_u_Node_insert_before_str __pyx_string_tab[136] +#define __pyx_n_u_Node_insert_child __pyx_string_tab[137] +#define __pyx_n_u_Node_insert_child_Node __pyx_string_tab[138] +#define __pyx_n_u_Node_insert_child_bytes __pyx_string_tab[139] +#define __pyx_n_u_Node_insert_child_str __pyx_string_tab[140] +#define __pyx_n_u_Node_iter __pyx_string_tab[141] +#define __pyx_n_u_Node_merge_text_nodes __pyx_string_tab[142] +#define __pyx_n_u_Node_remove __pyx_string_tab[143] +#define __pyx_n_u_Node_replace_with __pyx_string_tab[144] +#define __pyx_n_u_Node_replace_with_Node __pyx_string_tab[145] +#define __pyx_n_u_Node_replace_with_bytes __pyx_string_tab[146] +#define __pyx_n_u_Node_replace_with_str __pyx_string_tab[147] +#define __pyx_n_u_Node_script_srcs_contain __pyx_string_tab[148] +#define __pyx_n_u_Node_scripts_contain __pyx_string_tab[149] +#define __pyx_n_u_Node_select __pyx_string_tab[150] +#define __pyx_n_u_Node_strip_tags __pyx_string_tab[151] +#define __pyx_n_u_Node_text __pyx_string_tab[152] +#define __pyx_n_u_Node_traverse __pyx_string_tab[153] +#define __pyx_n_u_Node_unwrap __pyx_string_tab[154] +#define __pyx_n_u_Node_unwrap_tags __pyx_string_tab[155] +#define __pyx_n_u_Optional __pyx_string_tab[156] +#define __pyx_n_u_Parser __pyx_string_tab[157] +#define __pyx_n_u_ParserCls __pyx_string_tab[158] +#define __pyx_n_u_Pyx_PyDict_NextRef __pyx_string_tab[159] +#define __pyx_n_u_Selector __pyx_string_tab[160] +#define __pyx_n_u_Selector___reduce_cython __pyx_string_tab[161] +#define __pyx_n_u_Selector___setstate_cython __pyx_string_tab[162] +#define __pyx_n_u_Selector_any_attribute_longer_th __pyx_string_tab[163] +#define __pyx_n_u_Selector_any_text_contains __pyx_string_tab[164] +#define __pyx_n_u_Selector_attribute_longer_than __pyx_string_tab[165] +#define __pyx_n_u_Selector_css __pyx_string_tab[166] +#define __pyx_n_u_Selector_text_contains __pyx_string_tab[167] +#define __pyx_n_u_Stack___reduce_cython __pyx_string_tab[168] +#define __pyx_n_u_Stack___setstate_cython __pyx_string_tab[169] +#define __pyx_n_u_Type __pyx_string_tab[170] +#define __pyx_n_u_Union __pyx_string_tab[171] +#define __pyx_n_u_any_attribute_longer_than __pyx_string_tab[172] +#define __pyx_n_u_any_css_matches __pyx_string_tab[173] +#define __pyx_n_u_any_text_contains __pyx_string_tab[174] +#define __pyx_n_u_args __pyx_string_tab[175] +#define __pyx_n_u_asyncio_coroutines __pyx_string_tab[176] +#define __pyx_n_u_attr __pyx_string_tab[177] +#define __pyx_n_u_attribute __pyx_string_tab[178] +#define __pyx_n_u_attribute_longer_than __pyx_string_tab[179] +#define __pyx_n_u_attributes __pyx_string_tab[180] +#define __pyx_n_u_attrs __pyx_string_tab[181] +#define __pyx_n_u_body_2 __pyx_string_tab[182] +#define __pyx_n_u_bool __pyx_string_tab[183] +#define __pyx_n_u_bytes __pyx_string_tab[184] +#define __pyx_n_u_bytes_html __pyx_string_tab[185] +#define __pyx_n_u_bytes_val __pyx_string_tab[186] +#define __pyx_n_u_c_text __pyx_string_tab[187] +#define __pyx_n_u_capacity __pyx_string_tab[188] +#define __pyx_n_u_class_getitem __pyx_string_tab[189] +#define __pyx_n_u_cline_in_traceback __pyx_string_tab[190] +#define __pyx_n_u_clone __pyx_string_tab[191] +#define __pyx_n_u_close __pyx_string_tab[192] +#define __pyx_n_u_cls __pyx_string_tab[193] +#define __pyx_n_u_collection __pyx_string_tab[194] +#define __pyx_n_u_compile __pyx_string_tab[195] +#define __pyx_n_u_create_tag __pyx_string_tab[196] +#define __pyx_n_u_css __pyx_string_tab[197] +#define __pyx_n_u_css_first __pyx_string_tab[198] +#define __pyx_n_u_css_matches __pyx_string_tab[199] +#define __pyx_n_u_current_node __pyx_string_tab[200] +#define __pyx_n_u_d __pyx_string_tab[201] +#define __pyx_n_u_decode __pyx_string_tab[202] +#define __pyx_n_u_decode_errors __pyx_string_tab[203] +#define __pyx_n_u_decompose __pyx_string_tab[204] +#define __pyx_n_u_deep __pyx_string_tab[205] +#define __pyx_n_u_default __pyx_string_tab[206] +#define __pyx_n_u_defaults __pyx_string_tab[207] +#define __pyx_n_u_delete_empty __pyx_string_tab[208] +#define __pyx_n_u_detect_encoding __pyx_string_tab[209] +#define __pyx_n_u_dict __pyx_string_tab[210] +#define __pyx_n_u_dict_2 __pyx_string_tab[211] +#define __pyx_n_u_do_create_tag __pyx_string_tab[212] +#define __pyx_n_u_do_parse_fragment __pyx_string_tab[213] +#define __pyx_n_u_document __pyx_string_tab[214] +#define __pyx_n_u_document_no_body __pyx_string_tab[215] +#define __pyx_n_u_document_no_head __pyx_string_tab[216] +#define __pyx_n_u_document_no_head_no_body __pyx_string_tab[217] +#define __pyx_n_u_element __pyx_string_tab[218] +#define __pyx_n_u_encode __pyx_string_tab[219] +#define __pyx_n_u_endswith __pyx_string_tab[220] +#define __pyx_n_u_errors __pyx_string_tab[221] +#define __pyx_n_u_final_length __pyx_string_tab[222] +#define __pyx_n_u_final_text __pyx_string_tab[223] +#define __pyx_n_u_find __pyx_string_tab[224] +#define __pyx_n_u_finditer __pyx_string_tab[225] +#define __pyx_n_u_frag_type __pyx_string_tab[226] +#define __pyx_n_u_fragment __pyx_string_tab[227] +#define __pyx_n_u_func __pyx_string_tab[228] +#define __pyx_n_u_fused_sigindex __pyx_string_tab[229] +#define __pyx_n_u_get __pyx_string_tab[230] +#define __pyx_n_u_get_fragment_type __pyx_string_tab[231] +#define __pyx_n_u_getitem __pyx_string_tab[232] +#define __pyx_n_u_getstate __pyx_string_tab[233] +#define __pyx_n_u_has_body __pyx_string_tab[234] +#define __pyx_n_u_has_head __pyx_string_tab[235] +#define __pyx_n_u_has_html __pyx_string_tab[236] +#define __pyx_n_u_head_2 __pyx_string_tab[237] +#define __pyx_n_u_head_and_body __pyx_string_tab[238] +#define __pyx_n_u_html __pyx_string_tab[239] +#define __pyx_n_u_html_len __pyx_string_tab[240] +#define __pyx_n_u_html_re __pyx_string_tab[241] +#define __pyx_n_u_html_tree __pyx_string_tab[242] +#define __pyx_n_u_i __pyx_string_tab[243] +#define __pyx_n_u_ignore __pyx_string_tab[244] +#define __pyx_n_u_import __pyx_string_tab[245] +#define __pyx_n_u_include_text __pyx_string_tab[246] +#define __pyx_n_u_insert_after __pyx_string_tab[247] +#define __pyx_n_u_insert_after_Node __pyx_string_tab[248] +#define __pyx_n_u_insert_after_bytes __pyx_string_tab[249] +#define __pyx_n_u_insert_after_str __pyx_string_tab[250] +#define __pyx_n_u_insert_before __pyx_string_tab[251] +#define __pyx_n_u_insert_before_Node __pyx_string_tab[252] +#define __pyx_n_u_insert_before_bytes __pyx_string_tab[253] +#define __pyx_n_u_insert_before_str __pyx_string_tab[254] +#define __pyx_n_u_insert_child __pyx_string_tab[255] +#define __pyx_n_u_insert_child_Node __pyx_string_tab[256] +#define __pyx_n_u_insert_child_bytes __pyx_string_tab[257] +#define __pyx_n_u_insert_child_str __pyx_string_tab[258] +#define __pyx_n_u_is_coroutine __pyx_string_tab[259] +#define __pyx_n_u_items __pyx_string_tab[260] +#define __pyx_n_u_iter __pyx_string_tab[261] +#define __pyx_n_u_iter_2 __pyx_string_tab[262] +#define __pyx_n_u_key __pyx_string_tab[263] +#define __pyx_n_u_keys __pyx_string_tab[264] +#define __pyx_n_u_kwargs __pyx_string_tab[265] +#define __pyx_n_u_left_length __pyx_string_tab[266] +#define __pyx_n_u_left_text __pyx_string_tab[267] +#define __pyx_n_u_length __pyx_string_tab[268] +#define __pyx_n_u_main __pyx_string_tab[269] +#define __pyx_n_u_match __pyx_string_tab[270] +#define __pyx_n_u_mem_id __pyx_string_tab[271] +#define __pyx_n_u_merge_text_nodes __pyx_string_tab[272] +#define __pyx_n_u_module __pyx_string_tab[273] +#define __pyx_n_u_myhtml __pyx_string_tab[274] +#define __pyx_n_u_n_results __pyx_string_tab[275] +#define __pyx_n_u_name __pyx_string_tab[276] +#define __pyx_n_u_name_2 __pyx_string_tab[277] +#define __pyx_n_u_new __pyx_string_tab[278] +#define __pyx_n_u_next __pyx_string_tab[279] +#define __pyx_n_u_next_node __pyx_string_tab[280] +#define __pyx_n_u_node __pyx_string_tab[281] +#define __pyx_n_u_node_src __pyx_string_tab[282] +#define __pyx_n_u_node_text __pyx_string_tab[283] +#define __pyx_n_u_nodes __pyx_string_tab[284] +#define __pyx_n_u_parse_fragment __pyx_string_tab[285] +#define __pyx_n_u_parser_cls __pyx_string_tab[286] +#define __pyx_n_u_pop __pyx_string_tab[287] +#define __pyx_n_u_preprocess_input __pyx_string_tab[288] +#define __pyx_n_u_pybyte_name __pyx_string_tab[289] +#define __pyx_n_u_pyx_checksum __pyx_string_tab[290] +#define __pyx_n_u_pyx_result __pyx_string_tab[291] +#define __pyx_n_u_pyx_state __pyx_string_tab[292] +#define __pyx_n_u_pyx_type __pyx_string_tab[293] +#define __pyx_n_u_pyx_unpickle_Selector __pyx_string_tab[294] +#define __pyx_n_u_pyx_vtable __pyx_string_tab[295] +#define __pyx_n_u_qualname __pyx_string_tab[296] +#define __pyx_n_u_queries __pyx_string_tab[297] +#define __pyx_n_u_query __pyx_string_tab[298] +#define __pyx_n_u_re __pyx_string_tab[299] +#define __pyx_n_u_recursive __pyx_string_tab[300] +#define __pyx_n_u_reduce __pyx_string_tab[301] +#define __pyx_n_u_reduce_cython __pyx_string_tab[302] +#define __pyx_n_u_reduce_ex __pyx_string_tab[303] +#define __pyx_n_u_remove __pyx_string_tab[304] +#define __pyx_n_u_replace_with __pyx_string_tab[305] +#define __pyx_n_u_replace_with_Node __pyx_string_tab[306] +#define __pyx_n_u_replace_with_bytes __pyx_string_tab[307] +#define __pyx_n_u_replace_with_str __pyx_string_tab[308] +#define __pyx_n_u_result __pyx_string_tab[309] +#define __pyx_n_u_results __pyx_string_tab[310] +#define __pyx_n_u_return __pyx_string_tab[311] +#define __pyx_n_u_right_length __pyx_string_tab[312] +#define __pyx_n_u_right_text __pyx_string_tab[313] +#define __pyx_n_u_root __pyx_string_tab[314] +#define __pyx_n_u_script __pyx_string_tab[315] +#define __pyx_n_u_script_srcs_contain __pyx_string_tab[316] +#define __pyx_n_u_scripts_contain __pyx_string_tab[317] +#define __pyx_n_u_select __pyx_string_tab[318] +#define __pyx_n_u_selectolax_parser __pyx_string_tab[319] +#define __pyx_n_u_selector __pyx_string_tab[320] +#define __pyx_n_u_selectors __pyx_string_tab[321] +#define __pyx_n_u_self __pyx_string_tab[322] +#define __pyx_n_u_send __pyx_string_tab[323] +#define __pyx_n_u_separator __pyx_string_tab[324] +#define __pyx_n_u_set_name __pyx_string_tab[325] +#define __pyx_n_u_setdefault __pyx_string_tab[326] +#define __pyx_n_u_setstate __pyx_string_tab[327] +#define __pyx_n_u_setstate_cython __pyx_string_tab[328] +#define __pyx_n_u_sget __pyx_string_tab[329] +#define __pyx_n_u_src __pyx_string_tab[330] +#define __pyx_n_u_src_nodes __pyx_string_tab[331] +#define __pyx_n_u_stack __pyx_string_tab[332] +#define __pyx_n_u_start __pyx_string_tab[333] +#define __pyx_n_u_state __pyx_string_tab[334] +#define __pyx_n_u_status __pyx_string_tab[335] +#define __pyx_n_u_str __pyx_string_tab[336] +#define __pyx_n_u_strict __pyx_string_tab[337] +#define __pyx_n_u_strip __pyx_string_tab[338] +#define __pyx_n_u_strip_tags __pyx_string_tab[339] +#define __pyx_n_u_tag __pyx_string_tab[340] +#define __pyx_n_u_tags __pyx_string_tab[341] +#define __pyx_n_u_test __pyx_string_tab[342] +#define __pyx_n_u_text __pyx_string_tab[343] +#define __pyx_n_u_text_contains __pyx_string_tab[344] +#define __pyx_n_u_text_nodes __pyx_string_tab[345] +#define __pyx_n_u_throw __pyx_string_tab[346] +#define __pyx_n_u_traverse __pyx_string_tab[347] +#define __pyx_n_u_tree __pyx_string_tab[348] +#define __pyx_n_u_typing __pyx_string_tab[349] +#define __pyx_n_u_unknown __pyx_string_tab[350] +#define __pyx_n_u_unwrap __pyx_string_tab[351] +#define __pyx_n_u_unwrap_tags __pyx_string_tab[352] +#define __pyx_n_u_update __pyx_string_tab[353] +#define __pyx_n_u_use_meta_tags __pyx_string_tab[354] +#define __pyx_n_u_use_setstate __pyx_string_tab[355] +#define __pyx_n_u_val __pyx_string_tab[356] +#define __pyx_n_u_value __pyx_string_tab[357] +#define __pyx_n_u_values __pyx_string_tab[358] +#define __pyx_kp_b_iso88591_00DOST_HD_E_vZ_z_U_Q_WAQ_IQ_q __pyx_string_tab[359] +#define __pyx_kp_b_iso88591_1_4t1_1_t5_Qe6_fA __pyx_string_tab[360] +#define __pyx_kp_b_iso88591_1_q_E_4q_t5_1_gQ_7_Q_gQk_WA_av __pyx_string_tab[361] +#define __pyx_kp_b_iso88591_1_t1_1_81F __pyx_string_tab[362] +#define __pyx_kp_b_iso88591_1_xq_a __pyx_string_tab[363] +#define __pyx_kp_b_iso88591_1_z_a_T_1F_Q_iq_D_a_s_1_y_j___q __pyx_string_tab[364] +#define __pyx_kp_b_iso88591_44H_WX_HD_E_vZ_z_U_Q_q_q __pyx_string_tab[365] +#define __pyx_kp_b_iso88591_4A_G1_4t1A_waq __pyx_string_tab[366] +#define __pyx_kp_b_iso88591_4G1_4vWA_Q __pyx_string_tab[367] +#define __pyx_kp_b_iso88591_5Q_0q_G1_WAQ_1_l_UXXYYgghhi_Q_w __pyx_string_tab[368] +#define __pyx_kp_b_iso88591_5Q_G1_4t1A_z_A __pyx_string_tab[369] +#define __pyx_kp_b_iso88591_A __pyx_string_tab[370] +#define __pyx_kp_b_iso88591_A8_Qhe7_Qd_Oq_x_Ql_Qd_at1_q_q_g __pyx_string_tab[371] +#define __pyx_kp_b_iso88591_AV1 __pyx_string_tab[372] +#define __pyx_kp_b_iso88591_A_1D_WA __pyx_string_tab[373] +#define __pyx_kp_b_iso88591_A_1D_XQ __pyx_string_tab[374] +#define __pyx_kp_b_iso88591_A_2 __pyx_string_tab[375] +#define __pyx_kp_b_iso88591_A_4q_AQ_3avRq_AQ_q_d_Q_Qd_fMQTTU __pyx_string_tab[376] +#define __pyx_kp_b_iso88591_A_4uG3a_q_4q_4uF_1_4uA_A_Cq_L_g __pyx_string_tab[377] +#define __pyx_kp_b_iso88591_A_4w_3a_Jat9D_q_D_Qe1_1_gQa_a_HD __pyx_string_tab[378] +#define __pyx_kp_b_iso88591_A_4w_Q_Jat9D_q_4vT_1_WAQ_Q_HD_q __pyx_string_tab[379] +#define __pyx_kp_b_iso88591_A_5_1_U_4q_d_y_5_A_HC_8_L_a_XS_A __pyx_string_tab[380] +#define __pyx_kp_b_iso88591_A_A_A_7_Q_aq_Qk_7_Q_aq_Qk_Zq_9Kq __pyx_string_tab[381] +#define __pyx_kp_b_iso88591_A_A_HD_1_1D_Yl_IQ_q __pyx_string_tab[382] +#define __pyx_kp_b_iso88591_A_Jaq __pyx_string_tab[383] +#define __pyx_kp_b_iso88591_A_Qhe7_Qd_Oq_x_Ql_AT_q_q_g_AXX_A __pyx_string_tab[384] +#define __pyx_kp_b_iso88591_A_Qhe7_Qd_Oq_x_Ql_Qd_q_q_g_AXX_Q __pyx_string_tab[385] +#define __pyx_kp_b_iso88591_A_T_j_A_t4q __pyx_string_tab[386] +#define __pyx_kp_b_iso88591_A_a __pyx_string_tab[387] +#define __pyx_kp_b_iso88591_A_t5 __pyx_string_tab[388] +#define __pyx_kp_b_iso88591_A_t5_2 __pyx_string_tab[389] +#define __pyx_kp_b_iso88591_A_t5_3 __pyx_string_tab[390] +#define __pyx_kp_b_iso88591_A_t5_AQ __pyx_string_tab[391] +#define __pyx_kp_b_iso88591_A_t5_AQ_2 __pyx_string_tab[392] +#define __pyx_kp_b_iso88591_A_t9A __pyx_string_tab[393] +#define __pyx_kp_b_iso88591_A_z_it7 __pyx_string_tab[394] +#define __pyx_kp_b_iso88591_LA_HD_4_aq_uD_d_1_t1D_QgRs_1_s __pyx_string_tab[395] +#define __pyx_kp_b_iso88591_PPQ_HD_4_aq_uD_d_1_t1D_QgRs_1_s __pyx_string_tab[396] +#define __pyx_kp_b_iso88591_Q __pyx_string_tab[397] +#define __pyx_kp_b_iso88591_Q_4vQ_Qa_A_z_A_q_A_z_A_E_1Ja_q __pyx_string_tab[398] +#define __pyx_kp_b_iso88591_Q_d_1_Cq_Rq_wd_Ba_j_J_A_7_1_q __pyx_string_tab[399] +#define __pyx_kp_b_iso88591_T_A_G1F_a_vWE_Q_q_q_Qg_q_Qg __pyx_string_tab[400] +#define __pyx_kp_b_iso88591_T_j_A_t_QgYa __pyx_string_tab[401] +#define __pyx_kp_b_iso88591__12 __pyx_string_tab[402] +#define __pyx_kp_b_iso88591_aq_t3a_a_1_1 __pyx_string_tab[403] +#define __pyx_kp_b_iso88591_avQ __pyx_string_tab[404] +#define __pyx_kp_b_iso88591_q_0_kQR_881A_7_nA_1 __pyx_string_tab[405] +#define __pyx_kp_b_iso88591_q_1_Q_at1 __pyx_string_tab[406] +#define __pyx_kp_b_iso88591_q_4q_1 __pyx_string_tab[407] +#define __pyx_kp_b_iso88591_t1_j_AS_AQ __pyx_string_tab[408] +#define __pyx_kp_b_iso88591_t1_z_b_5Rq_q_q_q_5_Cq_q_3c_q_3c __pyx_string_tab[409] +#define __pyx_float_250e_7 __pyx_number_tab[0] +#define __pyx_int_0 __pyx_number_tab[1] +#define __pyx_int_1 __pyx_number_tab[2] +#define __pyx_int_100 __pyx_number_tab[3] +#define __pyx_int_207486590 __pyx_number_tab[4] +/* #### Code section: module_state_clear ### */ +#if CYTHON_USE_MODULE_STATE +static CYTHON_SMALL_CODE int __pyx_m_clear(PyObject *m) { + __pyx_mstatetype *clear_module_state = __Pyx_PyModule_GetState(m); + if (!clear_module_state) return 0; + Py_CLEAR(clear_module_state->__pyx_d); + Py_CLEAR(clear_module_state->__pyx_b); + Py_CLEAR(clear_module_state->__pyx_cython_runtime); + Py_CLEAR(clear_module_state->__pyx_empty_tuple); + Py_CLEAR(clear_module_state->__pyx_empty_bytes); + Py_CLEAR(clear_module_state->__pyx_empty_unicode); + #if CYTHON_PEP489_MULTI_PHASE_INIT + __Pyx_State_RemoveModule(NULL); + #endif + Py_CLEAR(clear_module_state->__pyx_ptype_7cpython_4bool_bool); + Py_CLEAR(clear_module_state->__pyx_ptype_7cpython_4type_type); + Py_CLEAR(clear_module_state->__pyx_ptype_10selectolax_6parser_HTMLParser); + Py_CLEAR(clear_module_state->__pyx_type_10selectolax_6parser_HTMLParser); + Py_CLEAR(clear_module_state->__pyx_ptype_10selectolax_6parser_Stack); + Py_CLEAR(clear_module_state->__pyx_type_10selectolax_6parser_Stack); + Py_CLEAR(clear_module_state->__pyx_ptype_10selectolax_6parser_CSSSelector); + Py_CLEAR(clear_module_state->__pyx_type_10selectolax_6parser_CSSSelector); + Py_CLEAR(clear_module_state->__pyx_ptype_10selectolax_6parser_Selector); + Py_CLEAR(clear_module_state->__pyx_type_10selectolax_6parser_Selector); + Py_CLEAR(clear_module_state->__pyx_ptype_10selectolax_6parser__Attributes); + Py_CLEAR(clear_module_state->__pyx_type_10selectolax_6parser__Attributes); + Py_CLEAR(clear_module_state->__pyx_ptype_10selectolax_6parser_Node); + Py_CLEAR(clear_module_state->__pyx_type_10selectolax_6parser_Node); + Py_CLEAR(clear_module_state->__pyx_ptype_10selectolax_6parser___pyx_scope_struct____iter__); + Py_CLEAR(clear_module_state->__pyx_type_10selectolax_6parser___pyx_scope_struct____iter__); + Py_CLEAR(clear_module_state->__pyx_ptype_10selectolax_6parser___pyx_scope_struct_1_items); + Py_CLEAR(clear_module_state->__pyx_type_10selectolax_6parser___pyx_scope_struct_1_items); + Py_CLEAR(clear_module_state->__pyx_ptype_10selectolax_6parser___pyx_scope_struct_2_values); + Py_CLEAR(clear_module_state->__pyx_type_10selectolax_6parser___pyx_scope_struct_2_values); + Py_CLEAR(clear_module_state->__pyx_ptype_10selectolax_6parser___pyx_scope_struct_3_iter); + Py_CLEAR(clear_module_state->__pyx_type_10selectolax_6parser___pyx_scope_struct_3_iter); + Py_CLEAR(clear_module_state->__pyx_ptype_10selectolax_6parser___pyx_scope_struct_4_traverse); + Py_CLEAR(clear_module_state->__pyx_type_10selectolax_6parser___pyx_scope_struct_4_traverse); + Py_CLEAR(clear_module_state->__pyx_k__3); + Py_CLEAR(clear_module_state->__pyx_k__4); + Py_CLEAR(clear_module_state->__pyx_k__5); + Py_CLEAR(clear_module_state->__pyx_k__6); + for (int i=0; i<10; ++i) { Py_CLEAR(clear_module_state->__pyx_tuple[i]); } + for (int i=0; i<80; ++i) { Py_CLEAR(clear_module_state->__pyx_codeobj_tab[i]); } + for (int i=0; i<410; ++i) { Py_CLEAR(clear_module_state->__pyx_string_tab[i]); } + for (int i=0; i<5; ++i) { Py_CLEAR(clear_module_state->__pyx_number_tab[i]); } +/* #### Code section: module_state_clear_contents ### */ +/* CommonTypesMetaclass.module_state_clear */ +Py_CLEAR(clear_module_state->__pyx_CommonTypesMetaclassType); + +/* CythonFunctionShared.module_state_clear */ +Py_CLEAR(clear_module_state->__pyx_CyFunctionType); + +/* FusedFunction.module_state_clear */ +Py_CLEAR(clear_module_state->__pyx_FusedFunctionType); + +/* Generator.module_state_clear */ +Py_CLEAR(clear_module_state->__pyx_GeneratorType); + +/* #### Code section: module_state_clear_end ### */ +return 0; +} +#endif +/* #### Code section: module_state_traverse ### */ +#if CYTHON_USE_MODULE_STATE +static CYTHON_SMALL_CODE int __pyx_m_traverse(PyObject *m, visitproc visit, void *arg) { + __pyx_mstatetype *traverse_module_state = __Pyx_PyModule_GetState(m); + if (!traverse_module_state) return 0; + Py_VISIT(traverse_module_state->__pyx_d); + Py_VISIT(traverse_module_state->__pyx_b); + Py_VISIT(traverse_module_state->__pyx_cython_runtime); + __Pyx_VISIT_CONST(traverse_module_state->__pyx_empty_tuple); + __Pyx_VISIT_CONST(traverse_module_state->__pyx_empty_bytes); + __Pyx_VISIT_CONST(traverse_module_state->__pyx_empty_unicode); + Py_VISIT(traverse_module_state->__pyx_ptype_7cpython_4bool_bool); + Py_VISIT(traverse_module_state->__pyx_ptype_7cpython_4type_type); + Py_VISIT(traverse_module_state->__pyx_ptype_10selectolax_6parser_HTMLParser); + Py_VISIT(traverse_module_state->__pyx_type_10selectolax_6parser_HTMLParser); + Py_VISIT(traverse_module_state->__pyx_ptype_10selectolax_6parser_Stack); + Py_VISIT(traverse_module_state->__pyx_type_10selectolax_6parser_Stack); + Py_VISIT(traverse_module_state->__pyx_ptype_10selectolax_6parser_CSSSelector); + Py_VISIT(traverse_module_state->__pyx_type_10selectolax_6parser_CSSSelector); + Py_VISIT(traverse_module_state->__pyx_ptype_10selectolax_6parser_Selector); + Py_VISIT(traverse_module_state->__pyx_type_10selectolax_6parser_Selector); + Py_VISIT(traverse_module_state->__pyx_ptype_10selectolax_6parser__Attributes); + Py_VISIT(traverse_module_state->__pyx_type_10selectolax_6parser__Attributes); + Py_VISIT(traverse_module_state->__pyx_ptype_10selectolax_6parser_Node); + Py_VISIT(traverse_module_state->__pyx_type_10selectolax_6parser_Node); + Py_VISIT(traverse_module_state->__pyx_ptype_10selectolax_6parser___pyx_scope_struct____iter__); + Py_VISIT(traverse_module_state->__pyx_type_10selectolax_6parser___pyx_scope_struct____iter__); + Py_VISIT(traverse_module_state->__pyx_ptype_10selectolax_6parser___pyx_scope_struct_1_items); + Py_VISIT(traverse_module_state->__pyx_type_10selectolax_6parser___pyx_scope_struct_1_items); + Py_VISIT(traverse_module_state->__pyx_ptype_10selectolax_6parser___pyx_scope_struct_2_values); + Py_VISIT(traverse_module_state->__pyx_type_10selectolax_6parser___pyx_scope_struct_2_values); + Py_VISIT(traverse_module_state->__pyx_ptype_10selectolax_6parser___pyx_scope_struct_3_iter); + Py_VISIT(traverse_module_state->__pyx_type_10selectolax_6parser___pyx_scope_struct_3_iter); + Py_VISIT(traverse_module_state->__pyx_ptype_10selectolax_6parser___pyx_scope_struct_4_traverse); + Py_VISIT(traverse_module_state->__pyx_type_10selectolax_6parser___pyx_scope_struct_4_traverse); + Py_VISIT(traverse_module_state->__pyx_k__3); + Py_VISIT(traverse_module_state->__pyx_k__4); + Py_VISIT(traverse_module_state->__pyx_k__5); + Py_VISIT(traverse_module_state->__pyx_k__6); + for (int i=0; i<10; ++i) { __Pyx_VISIT_CONST(traverse_module_state->__pyx_tuple[i]); } + for (int i=0; i<80; ++i) { __Pyx_VISIT_CONST(traverse_module_state->__pyx_codeobj_tab[i]); } + for (int i=0; i<410; ++i) { __Pyx_VISIT_CONST(traverse_module_state->__pyx_string_tab[i]); } + for (int i=0; i<5; ++i) { __Pyx_VISIT_CONST(traverse_module_state->__pyx_number_tab[i]); } +/* #### Code section: module_state_traverse_contents ### */ +/* CommonTypesMetaclass.module_state_traverse */ +Py_VISIT(traverse_module_state->__pyx_CommonTypesMetaclassType); + +/* CythonFunctionShared.module_state_traverse */ +Py_VISIT(traverse_module_state->__pyx_CyFunctionType); + +/* FusedFunction.module_state_traverse */ +Py_VISIT(traverse_module_state->__pyx_FusedFunctionType); + +/* Generator.module_state_traverse */ +Py_VISIT(traverse_module_state->__pyx_GeneratorType); + +/* #### Code section: module_state_traverse_end ### */ +return 0; +} +#endif +/* #### Code section: module_code ### */ + +/* "__pyx_ff_map_fused_7df988_1_3_02b106__11__dunderbuiltin__dunder_PyObject__ptr__and_1__etc":6 + * int __Pyx_Is_Little_Endian() + * + * @cname('__pyx_ff_map_fused_7df988_1_3_02b106__11__dunderbuiltin__dunder_PyObject__ptr__and_1__etc') # <<<<<<<<<<<<<< + * cdef str map_fused_type(object arg): + * +*/ + +static PyObject *__pyx_ff_map_fused_7df988_1_3_02b106__11__dunderbuiltin__dunder_PyObject__ptr__and_1__etc(PyObject *__pyx_v_arg) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + size_t __pyx_t_5; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("map_fused_type", 0); + + /* "__pyx_ff_map_fused_7df988_1_3_02b106__11__dunderbuiltin__dunder_PyObject__ptr__and_1__etc":9 + * cdef str map_fused_type(object arg): + * + * if isinstance(arg, str): # <<<<<<<<<<<<<< + * return 'str' + * +*/ + __pyx_t_1 = PyUnicode_Check(__pyx_v_arg); + if (__pyx_t_1) { + + /* "__pyx_ff_map_fused_7df988_1_3_02b106__11__dunderbuiltin__dunder_PyObject__ptr__and_1__etc":10 + * + * if isinstance(arg, str): + * return 'str' # <<<<<<<<<<<<<< + * + * if isinstance(arg, bytes): +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_str); + __pyx_r = __pyx_mstate_global->__pyx_n_u_str; + goto __pyx_L0; + + /* "__pyx_ff_map_fused_7df988_1_3_02b106__11__dunderbuiltin__dunder_PyObject__ptr__and_1__etc":9 + * cdef str map_fused_type(object arg): + * + * if isinstance(arg, str): # <<<<<<<<<<<<<< + * return 'str' + * +*/ + } + + /* "__pyx_ff_map_fused_7df988_1_3_02b106__11__dunderbuiltin__dunder_PyObject__ptr__and_1__etc":12 + * return 'str' + * + * if isinstance(arg, bytes): # <<<<<<<<<<<<<< + * return 'bytes' + * +*/ + __pyx_t_1 = PyBytes_Check(__pyx_v_arg); + if (__pyx_t_1) { + + /* "__pyx_ff_map_fused_7df988_1_3_02b106__11__dunderbuiltin__dunder_PyObject__ptr__and_1__etc":13 + * + * if isinstance(arg, bytes): + * return 'bytes' # <<<<<<<<<<<<<< + * + * if isinstance(arg, __import__('selectolax.parser', None, None, ['']).Node): +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_bytes); + __pyx_r = __pyx_mstate_global->__pyx_n_u_bytes; + goto __pyx_L0; + + /* "__pyx_ff_map_fused_7df988_1_3_02b106__11__dunderbuiltin__dunder_PyObject__ptr__and_1__etc":12 + * return 'str' + * + * if isinstance(arg, bytes): # <<<<<<<<<<<<<< + * return 'bytes' + * +*/ + } + + /* "__pyx_ff_map_fused_7df988_1_3_02b106__11__dunderbuiltin__dunder_PyObject__ptr__and_1__etc":15 + * return 'bytes' + * + * if isinstance(arg, __import__('selectolax.parser', None, None, ['']).Node): # <<<<<<<<<<<<<< + * return 'Node' + * return None +*/ + __pyx_t_3 = NULL; + __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 15, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u_); + __Pyx_GIVEREF(__pyx_mstate_global->__pyx_kp_u_); + if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_mstate_global->__pyx_kp_u_) != (0)) __PYX_ERR(1, 15, __pyx_L1_error); + __pyx_t_5 = 1; + { + PyObject *__pyx_callargs[5] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_selectolax_parser, Py_None, Py_None, __pyx_t_4}; + __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin___import__, __pyx_callargs+__pyx_t_5, (5-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 15, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + } + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_Node); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 15, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_1 = PyObject_IsInstance(__pyx_v_arg, __pyx_t_4); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(1, 15, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (__pyx_t_1) { + + /* "__pyx_ff_map_fused_7df988_1_3_02b106__11__dunderbuiltin__dunder_PyObject__ptr__and_1__etc":16 + * + * if isinstance(arg, __import__('selectolax.parser', None, None, ['']).Node): + * return 'Node' # <<<<<<<<<<<<<< + * return None +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_Node); + __pyx_r = __pyx_mstate_global->__pyx_n_u_Node; + goto __pyx_L0; + + /* "__pyx_ff_map_fused_7df988_1_3_02b106__11__dunderbuiltin__dunder_PyObject__ptr__and_1__etc":15 + * return 'bytes' + * + * if isinstance(arg, __import__('selectolax.parser', None, None, ['']).Node): # <<<<<<<<<<<<<< + * return 'Node' + * return None +*/ + } + + /* "__pyx_ff_map_fused_7df988_1_3_02b106__11__dunderbuiltin__dunder_PyObject__ptr__and_1__etc":17 + * if isinstance(arg, __import__('selectolax.parser', None, None, ['']).Node): + * return 'Node' + * return None # <<<<<<<<<<<<<< +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_r = ((PyObject*)Py_None); __Pyx_INCREF(Py_None); + goto __pyx_L0; + + /* "__pyx_ff_map_fused_7df988_1_3_02b106__11__dunderbuiltin__dunder_PyObject__ptr__and_1__etc":6 + * int __Pyx_Is_Little_Endian() + * + * @cname('__pyx_ff_map_fused_7df988_1_3_02b106__11__dunderbuiltin__dunder_PyObject__ptr__and_1__etc') # <<<<<<<<<<<<<< + * cdef str map_fused_type(object arg): + * +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("__pyx_ff_map_fused_7df988_1_3_02b106__11__dunderbuiltin__dunder_PyObject__ptr__and_1__etc.map_fused_type", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "match_signatures_single":3 + * + * + * @cname("__pyx_ff_match_signatures_single") # <<<<<<<<<<<<<< + * cdef object match_signatures_single(signatures: dict, dest_type): + * found_match = signatures.get(dest_type) +*/ + +static PyObject *__pyx_ff_match_signatures_single(PyObject *__pyx_v_signatures, PyObject *__pyx_v_dest_type) { + PyObject *__pyx_v_found_match = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + size_t __pyx_t_4; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("match_signatures_single", 0); + + /* "match_signatures_single":5 + * @cname("__pyx_ff_match_signatures_single") + * cdef object match_signatures_single(signatures: dict, dest_type): + * found_match = signatures.get(dest_type) # <<<<<<<<<<<<<< + * if found_match is None: + * raise TypeError("No matching signature found") +*/ + __pyx_t_1 = __Pyx_PyDict_GetItemDefault(__pyx_v_signatures, __pyx_v_dest_type, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v_found_match = __pyx_t_1; + __pyx_t_1 = 0; + + /* "match_signatures_single":6 + * cdef object match_signatures_single(signatures: dict, dest_type): + * found_match = signatures.get(dest_type) + * if found_match is None: # <<<<<<<<<<<<<< + * raise TypeError("No matching signature found") + * return found_match +*/ + __pyx_t_2 = (__pyx_v_found_match == Py_None); + if (unlikely(__pyx_t_2)) { + + /* "match_signatures_single":7 + * found_match = signatures.get(dest_type) + * if found_match is None: + * raise TypeError("No matching signature found") # <<<<<<<<<<<<<< + * return found_match + * +*/ + __pyx_t_3 = NULL; + __pyx_t_4 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_No_matching_signature_found}; + __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 7, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __Pyx_Raise(__pyx_t_1, 0, 0, 0); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __PYX_ERR(1, 7, __pyx_L1_error) + + /* "match_signatures_single":6 + * cdef object match_signatures_single(signatures: dict, dest_type): + * found_match = signatures.get(dest_type) + * if found_match is None: # <<<<<<<<<<<<<< + * raise TypeError("No matching signature found") + * return found_match +*/ + } + + /* "match_signatures_single":8 + * if found_match is None: + * raise TypeError("No matching signature found") + * return found_match # <<<<<<<<<<<<<< + * +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_found_match); + __pyx_r = __pyx_v_found_match; + goto __pyx_L0; + + /* "match_signatures_single":3 + * + * + * @cname("__pyx_ff_match_signatures_single") # <<<<<<<<<<<<<< + * cdef object match_signatures_single(signatures: dict, dest_type): + * found_match = signatures.get(dest_type) +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("match_signatures_single.match_signatures_single", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_found_match); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/modest/selection.pxi":13 + * cdef mycss_selectors_list_t *selectors_list + * + * def __init__(self, str selector): # <<<<<<<<<<<<<< + * + * selector_pybyte = selector.encode('UTF-8') +*/ + +/* Python wrapper */ +static int __pyx_pw_10selectolax_6parser_11CSSSelector_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static int __pyx_pw_10selectolax_6parser_11CSSSelector_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_selector = 0; + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1; + #endif + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_selector,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(2, 13, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(2, 13, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__init__", 0) < (0)) __PYX_ERR(2, 13, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, i); __PYX_ERR(2, 13, __pyx_L3_error) } + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(2, 13, __pyx_L3_error) + } + __pyx_v_selector = ((PyObject*)values[0]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 13, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.parser.CSSSelector.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return -1; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_selector), (&PyUnicode_Type), 1, "selector", 1))) __PYX_ERR(2, 13, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6parser_11CSSSelector___init__(((struct __pyx_obj_10selectolax_6parser_CSSSelector *)__pyx_v_self), __pyx_v_selector); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = -1; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_10selectolax_6parser_11CSSSelector___init__(struct __pyx_obj_10selectolax_6parser_CSSSelector *__pyx_v_self, PyObject *__pyx_v_selector) { + PyObject *__pyx_v_selector_pybyte = NULL; + int __pyx_r; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + char *__pyx_t_2; + int __pyx_t_3; + Py_ssize_t __pyx_t_4; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__init__", 0); + + /* "selectolax/modest/selection.pxi":15 + * def __init__(self, str selector): + * + * selector_pybyte = selector.encode('UTF-8') # <<<<<<<<<<<<<< + * self.c_selector = selector_pybyte + * +*/ + if (unlikely(__pyx_v_selector == Py_None)) { + PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "encode"); + __PYX_ERR(2, 15, __pyx_L1_error) + } + __pyx_t_1 = PyUnicode_AsUTF8String(__pyx_v_selector); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 15, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v_selector_pybyte = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* "selectolax/modest/selection.pxi":16 + * + * selector_pybyte = selector.encode('UTF-8') + * self.c_selector = selector_pybyte # <<<<<<<<<<<<<< + * + * # In order to propagate errors these methods should return no value +*/ + __pyx_t_2 = __Pyx_PyBytes_AsWritableString(__pyx_v_selector_pybyte); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(2, 16, __pyx_L1_error) + __pyx_v_self->c_selector = __pyx_t_2; + + /* "selectolax/modest/selection.pxi":19 + * + * # In order to propagate errors these methods should return no value + * self._create_css_parser() # <<<<<<<<<<<<<< + * self._prepare_selector(self.css_entry, self.c_selector, len(self.c_selector)) + * self.finder = modest_finder_create_simple() +*/ + __pyx_t_3 = __pyx_f_10selectolax_6parser_11CSSSelector__create_css_parser(__pyx_v_self); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(2, 19, __pyx_L1_error) + + /* "selectolax/modest/selection.pxi":20 + * # In order to propagate errors these methods should return no value + * self._create_css_parser() + * self._prepare_selector(self.css_entry, self.c_selector, len(self.c_selector)) # <<<<<<<<<<<<<< + * self.finder = modest_finder_create_simple() + * +*/ + __pyx_t_4 = __Pyx_ssize_strlen(__pyx_v_self->c_selector); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(2, 20, __pyx_L1_error) + __pyx_t_3 = __pyx_f_10selectolax_6parser_11CSSSelector__prepare_selector(__pyx_v_self, __pyx_v_self->css_entry, __pyx_v_self->c_selector, __pyx_t_4); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(2, 20, __pyx_L1_error) + + /* "selectolax/modest/selection.pxi":21 + * self._create_css_parser() + * self._prepare_selector(self.css_entry, self.c_selector, len(self.c_selector)) + * self.finder = modest_finder_create_simple() # <<<<<<<<<<<<<< + * + * cdef myhtml_collection_t* find(self, myhtml_tree_node_t* scope): +*/ + __pyx_v_self->finder = modest_finder_create_simple(); + + /* "selectolax/modest/selection.pxi":13 + * cdef mycss_selectors_list_t *selectors_list + * + * def __init__(self, str selector): # <<<<<<<<<<<<<< + * + * selector_pybyte = selector.encode('UTF-8') +*/ + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("selectolax.parser.CSSSelector.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_selector_pybyte); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/modest/selection.pxi":23 + * self.finder = modest_finder_create_simple() + * + * cdef myhtml_collection_t* find(self, myhtml_tree_node_t* scope): # <<<<<<<<<<<<<< + * """Find all possible matches.""" + * +*/ + +static myhtml_collection_t *__pyx_f_10selectolax_6parser_11CSSSelector_find(struct __pyx_obj_10selectolax_6parser_CSSSelector *__pyx_v_self, myhtml_tree_node_t *__pyx_v_scope) { + myhtml_collection_t *__pyx_v_collection; + myhtml_collection_t *__pyx_r; + + /* "selectolax/modest/selection.pxi":28 + * cdef myhtml_collection_t *collection + * + * collection = NULL # <<<<<<<<<<<<<< + * modest_finder_by_selectors_list(self.finder, scope, self.selectors_list, &collection) + * +*/ + __pyx_v_collection = NULL; + + /* "selectolax/modest/selection.pxi":29 + * + * collection = NULL + * modest_finder_by_selectors_list(self.finder, scope, self.selectors_list, &collection) # <<<<<<<<<<<<<< + * + * return collection +*/ + (void)(modest_finder_by_selectors_list(__pyx_v_self->finder, __pyx_v_scope, __pyx_v_self->selectors_list, (&__pyx_v_collection))); + + /* "selectolax/modest/selection.pxi":31 + * modest_finder_by_selectors_list(self.finder, scope, self.selectors_list, &collection) + * + * return collection # <<<<<<<<<<<<<< + * + * cdef int _create_css_parser(self) except -1: +*/ + __pyx_r = __pyx_v_collection; + goto __pyx_L0; + + /* "selectolax/modest/selection.pxi":23 + * self.finder = modest_finder_create_simple() + * + * cdef myhtml_collection_t* find(self, myhtml_tree_node_t* scope): # <<<<<<<<<<<<<< + * """Find all possible matches.""" + * +*/ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "selectolax/modest/selection.pxi":33 + * return collection + * + * cdef int _create_css_parser(self) except -1: # <<<<<<<<<<<<<< + * cdef mystatus_t status + * +*/ + +static int __pyx_f_10selectolax_6parser_11CSSSelector__create_css_parser(struct __pyx_obj_10selectolax_6parser_CSSSelector *__pyx_v_self) { + mystatus_t __pyx_v_status; + mycss_t *__pyx_v_mycss; + int __pyx_r; + int __pyx_t_1; + + /* "selectolax/modest/selection.pxi":36 + * cdef mystatus_t status + * + * cdef mycss_t *mycss = mycss_create() # <<<<<<<<<<<<<< + * status = mycss_init(mycss) + * +*/ + __pyx_v_mycss = mycss_create(); + + /* "selectolax/modest/selection.pxi":37 + * + * cdef mycss_t *mycss = mycss_create() + * status = mycss_init(mycss) # <<<<<<<<<<<<<< + * + * if status != 0: +*/ + __pyx_v_status = mycss_init(__pyx_v_mycss); + + /* "selectolax/modest/selection.pxi":39 + * status = mycss_init(mycss) + * + * if status != 0: # <<<<<<<<<<<<<< + * PyErr_SetObject(RuntimeError, "Can't init MyCSS object.") + * return -1 +*/ + __pyx_t_1 = (__pyx_v_status != 0); + if (__pyx_t_1) { + + /* "selectolax/modest/selection.pxi":40 + * + * if status != 0: + * PyErr_SetObject(RuntimeError, "Can't init MyCSS object.") # <<<<<<<<<<<<<< + * return -1 + * +*/ + PyErr_SetObject(((PyObject *)(((PyTypeObject*)PyExc_RuntimeError))), __pyx_mstate_global->__pyx_kp_u_Can_t_init_MyCSS_object); + + /* "selectolax/modest/selection.pxi":41 + * if status != 0: + * PyErr_SetObject(RuntimeError, "Can't init MyCSS object.") + * return -1 # <<<<<<<<<<<<<< + * + * self.css_entry = mycss_entry_create() +*/ + __pyx_r = -1; + goto __pyx_L0; + + /* "selectolax/modest/selection.pxi":39 + * status = mycss_init(mycss) + * + * if status != 0: # <<<<<<<<<<<<<< + * PyErr_SetObject(RuntimeError, "Can't init MyCSS object.") + * return -1 +*/ + } + + /* "selectolax/modest/selection.pxi":43 + * return -1 + * + * self.css_entry = mycss_entry_create() # <<<<<<<<<<<<<< + * status = mycss_entry_init(mycss, self.css_entry) + * +*/ + __pyx_v_self->css_entry = mycss_entry_create(); + + /* "selectolax/modest/selection.pxi":44 + * + * self.css_entry = mycss_entry_create() + * status = mycss_entry_init(mycss, self.css_entry) # <<<<<<<<<<<<<< + * + * if status != 0: +*/ + __pyx_v_status = mycss_entry_init(__pyx_v_mycss, __pyx_v_self->css_entry); + + /* "selectolax/modest/selection.pxi":46 + * status = mycss_entry_init(mycss, self.css_entry) + * + * if status != 0: # <<<<<<<<<<<<<< + * PyErr_SetObject(RuntimeError, "Can't init MyCSS Entry object.") + * return -1 +*/ + __pyx_t_1 = (__pyx_v_status != 0); + if (__pyx_t_1) { + + /* "selectolax/modest/selection.pxi":47 + * + * if status != 0: + * PyErr_SetObject(RuntimeError, "Can't init MyCSS Entry object.") # <<<<<<<<<<<<<< + * return -1 + * return 0 +*/ + PyErr_SetObject(((PyObject *)(((PyTypeObject*)PyExc_RuntimeError))), __pyx_mstate_global->__pyx_kp_u_Can_t_init_MyCSS_Entry_object); + + /* "selectolax/modest/selection.pxi":48 + * if status != 0: + * PyErr_SetObject(RuntimeError, "Can't init MyCSS Entry object.") + * return -1 # <<<<<<<<<<<<<< + * return 0 + * +*/ + __pyx_r = -1; + goto __pyx_L0; + + /* "selectolax/modest/selection.pxi":46 + * status = mycss_entry_init(mycss, self.css_entry) + * + * if status != 0: # <<<<<<<<<<<<<< + * PyErr_SetObject(RuntimeError, "Can't init MyCSS Entry object.") + * return -1 +*/ + } + + /* "selectolax/modest/selection.pxi":49 + * PyErr_SetObject(RuntimeError, "Can't init MyCSS Entry object.") + * return -1 + * return 0 # <<<<<<<<<<<<<< + * + * cdef int _prepare_selector(self, mycss_entry_t *css_entry, const char *selector, size_t selector_size) except -1: +*/ + __pyx_r = 0; + goto __pyx_L0; + + /* "selectolax/modest/selection.pxi":33 + * return collection + * + * cdef int _create_css_parser(self) except -1: # <<<<<<<<<<<<<< + * cdef mystatus_t status + * +*/ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "selectolax/modest/selection.pxi":51 + * return 0 + * + * cdef int _prepare_selector(self, mycss_entry_t *css_entry, const char *selector, size_t selector_size) except -1: # <<<<<<<<<<<<<< + * cdef mystatus_t out_status + * self.selectors_list = mycss_selectors_parse(mycss_entry_selectors(css_entry), myencoding_t.MyENCODING_UTF_8, +*/ + +static int __pyx_f_10selectolax_6parser_11CSSSelector__prepare_selector(struct __pyx_obj_10selectolax_6parser_CSSSelector *__pyx_v_self, mycss_entry_t *__pyx_v_css_entry, char const *__pyx_v_selector, size_t __pyx_v_selector_size) { + mystatus_t __pyx_v_out_status; + int __pyx_r; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_t_2; + char *__pyx_t_3; + Py_ssize_t __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("_prepare_selector", 0); + + /* "selectolax/modest/selection.pxi":53 + * cdef int _prepare_selector(self, mycss_entry_t *css_entry, const char *selector, size_t selector_size) except -1: + * cdef mystatus_t out_status + * self.selectors_list = mycss_selectors_parse(mycss_entry_selectors(css_entry), myencoding_t.MyENCODING_UTF_8, # <<<<<<<<<<<<<< + * selector, selector_size, &out_status) + * +*/ + __pyx_v_self->selectors_list = mycss_selectors_parse(mycss_entry_selectors(__pyx_v_css_entry), MyENCODING_UTF_8, __pyx_v_selector, __pyx_v_selector_size, (&__pyx_v_out_status)); + + /* "selectolax/modest/selection.pxi":56 + * selector, selector_size, &out_status) + * + * if (self.selectors_list == NULL) or (self.selectors_list.flags and MyCSS_SELECTORS_FLAGS_SELECTOR_BAD): # <<<<<<<<<<<<<< + * PyErr_SetObject(ValueError, "Bad CSS Selectors: %s" % self.c_selector.decode('utf-8')) + * return -1 +*/ + __pyx_t_2 = (__pyx_v_self->selectors_list == NULL); + if (!__pyx_t_2) { + } else { + __pyx_t_1 = __pyx_t_2; + goto __pyx_L4_bool_binop_done; + } + if (__pyx_v_self->selectors_list->flags) { + } else { + __pyx_t_1 = __pyx_v_self->selectors_list->flags; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_1 = MyCSS_SELECTORS_FLAGS_SELECTOR_BAD; + __pyx_L4_bool_binop_done:; + if (__pyx_t_1) { + + /* "selectolax/modest/selection.pxi":57 + * + * if (self.selectors_list == NULL) or (self.selectors_list.flags and MyCSS_SELECTORS_FLAGS_SELECTOR_BAD): + * PyErr_SetObject(ValueError, "Bad CSS Selectors: %s" % self.c_selector.decode('utf-8')) # <<<<<<<<<<<<<< + * return -1 + * return 0 +*/ + __pyx_t_3 = __pyx_v_self->c_selector; + __pyx_t_4 = __Pyx_ssize_strlen(__pyx_t_3); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(2, 57, __pyx_L1_error) + __pyx_t_5 = __Pyx_decode_c_string(__pyx_t_3, 0, __pyx_t_4, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 57, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = PyUnicode_Format(__pyx_mstate_global->__pyx_kp_u_Bad_CSS_Selectors_s, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 57, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + PyErr_SetObject(((PyObject *)(((PyTypeObject*)PyExc_ValueError))), __pyx_t_6); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + + /* "selectolax/modest/selection.pxi":58 + * if (self.selectors_list == NULL) or (self.selectors_list.flags and MyCSS_SELECTORS_FLAGS_SELECTOR_BAD): + * PyErr_SetObject(ValueError, "Bad CSS Selectors: %s" % self.c_selector.decode('utf-8')) + * return -1 # <<<<<<<<<<<<<< + * return 0 + * +*/ + __pyx_r = -1; + goto __pyx_L0; + + /* "selectolax/modest/selection.pxi":56 + * selector, selector_size, &out_status) + * + * if (self.selectors_list == NULL) or (self.selectors_list.flags and MyCSS_SELECTORS_FLAGS_SELECTOR_BAD): # <<<<<<<<<<<<<< + * PyErr_SetObject(ValueError, "Bad CSS Selectors: %s" % self.c_selector.decode('utf-8')) + * return -1 +*/ + } + + /* "selectolax/modest/selection.pxi":59 + * PyErr_SetObject(ValueError, "Bad CSS Selectors: %s" % self.c_selector.decode('utf-8')) + * return -1 + * return 0 # <<<<<<<<<<<<<< + * + * def __dealloc__(self): +*/ + __pyx_r = 0; + goto __pyx_L0; + + /* "selectolax/modest/selection.pxi":51 + * return 0 + * + * cdef int _prepare_selector(self, mycss_entry_t *css_entry, const char *selector, size_t selector_size) except -1: # <<<<<<<<<<<<<< + * cdef mystatus_t out_status + * self.selectors_list = mycss_selectors_parse(mycss_entry_selectors(css_entry), myencoding_t.MyENCODING_UTF_8, +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_AddTraceback("selectolax.parser.CSSSelector._prepare_selector", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/modest/selection.pxi":61 + * return 0 + * + * def __dealloc__(self): # <<<<<<<<<<<<<< + * mycss_selectors_list_destroy(mycss_entry_selectors(self.css_entry), self.selectors_list, 1) + * modest_finder_destroy(self.finder, 1) +*/ + +/* Python wrapper */ +static void __pyx_pw_10selectolax_6parser_11CSSSelector_3__dealloc__(PyObject *__pyx_v_self); /*proto*/ +static void __pyx_pw_10selectolax_6parser_11CSSSelector_3__dealloc__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_pf_10selectolax_6parser_11CSSSelector_2__dealloc__(((struct __pyx_obj_10selectolax_6parser_CSSSelector *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); +} + +static void __pyx_pf_10selectolax_6parser_11CSSSelector_2__dealloc__(struct __pyx_obj_10selectolax_6parser_CSSSelector *__pyx_v_self) { + mycss_t *__pyx_v_mycss; + mycss_t *__pyx_t_1; + + /* "selectolax/modest/selection.pxi":62 + * + * def __dealloc__(self): + * mycss_selectors_list_destroy(mycss_entry_selectors(self.css_entry), self.selectors_list, 1) # <<<<<<<<<<<<<< + * modest_finder_destroy(self.finder, 1) + * +*/ + (void)(mycss_selectors_list_destroy(mycss_entry_selectors(__pyx_v_self->css_entry), __pyx_v_self->selectors_list, 1)); + + /* "selectolax/modest/selection.pxi":63 + * def __dealloc__(self): + * mycss_selectors_list_destroy(mycss_entry_selectors(self.css_entry), self.selectors_list, 1) + * modest_finder_destroy(self.finder, 1) # <<<<<<<<<<<<<< + * + * cdef mycss_t *mycss = self.css_entry.mycss +*/ + (void)(modest_finder_destroy(__pyx_v_self->finder, 1)); + + /* "selectolax/modest/selection.pxi":65 + * modest_finder_destroy(self.finder, 1) + * + * cdef mycss_t *mycss = self.css_entry.mycss # <<<<<<<<<<<<<< + * mycss_entry_destroy(self.css_entry, 1) + * mycss_destroy(mycss, 1) +*/ + __pyx_t_1 = __pyx_v_self->css_entry->mycss; + __pyx_v_mycss = __pyx_t_1; + + /* "selectolax/modest/selection.pxi":66 + * + * cdef mycss_t *mycss = self.css_entry.mycss + * mycss_entry_destroy(self.css_entry, 1) # <<<<<<<<<<<<<< + * mycss_destroy(mycss, 1) + * +*/ + (void)(mycss_entry_destroy(__pyx_v_self->css_entry, 1)); + + /* "selectolax/modest/selection.pxi":67 + * cdef mycss_t *mycss = self.css_entry.mycss + * mycss_entry_destroy(self.css_entry, 1) + * mycss_destroy(mycss, 1) # <<<<<<<<<<<<<< + * + * +*/ + (void)(mycss_destroy(__pyx_v_mycss, 1)); + + /* "selectolax/modest/selection.pxi":61 + * return 0 + * + * def __dealloc__(self): # <<<<<<<<<<<<<< + * mycss_selectors_list_destroy(mycss_entry_selectors(self.css_entry), self.selectors_list, 1) + * modest_finder_destroy(self.finder, 1) +*/ + + /* function exit code */ +} + +/* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * raise TypeError, "self.css_entry,self.finder,self.selectors_list cannot be converted to a Python object for pickling" + * def __setstate_cython__(self, __pyx_state): +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_11CSSSelector_5__reduce_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6parser_11CSSSelector_4__reduce_cython__, "CSSSelector.__reduce_cython__(self)"); +static PyMethodDef __pyx_mdef_10selectolax_6parser_11CSSSelector_5__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_11CSSSelector_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_11CSSSelector_4__reduce_cython__}; +static PyObject *__pyx_pw_10selectolax_6parser_11CSSSelector_5__reduce_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL; } + const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len < 0)) return NULL; + if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;} + __pyx_r = __pyx_pf_10selectolax_6parser_11CSSSelector_4__reduce_cython__(((struct __pyx_obj_10selectolax_6parser_CSSSelector *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_11CSSSelector_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_10selectolax_6parser_CSSSelector *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__reduce_cython__", 0); + + /* "(tree fragment)":2 + * def __reduce_cython__(self): + * raise TypeError, "self.css_entry,self.finder,self.selectors_list cannot be converted to a Python object for pickling" # <<<<<<<<<<<<<< + * def __setstate_cython__(self, __pyx_state): + * raise TypeError, "self.css_entry,self.finder,self.selectors_list cannot be converted to a Python object for pickling" +*/ + __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), __pyx_mstate_global->__pyx_kp_u_self_css_entry_self_finder_self, 0, 0); + __PYX_ERR(1, 2, __pyx_L1_error) + + /* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * raise TypeError, "self.css_entry,self.finder,self.selectors_list cannot be converted to a Python object for pickling" + * def __setstate_cython__(self, __pyx_state): +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_AddTraceback("selectolax.parser.CSSSelector.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":3 + * def __reduce_cython__(self): + * raise TypeError, "self.css_entry,self.finder,self.selectors_list cannot be converted to a Python object for pickling" + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * raise TypeError, "self.css_entry,self.finder,self.selectors_list cannot be converted to a Python object for pickling" +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_11CSSSelector_7__setstate_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6parser_11CSSSelector_6__setstate_cython__, "CSSSelector.__setstate_cython__(self, __pyx_state)"); +static PyMethodDef __pyx_mdef_10selectolax_6parser_11CSSSelector_7__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_11CSSSelector_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_11CSSSelector_6__setstate_cython__}; +static PyObject *__pyx_pw_10selectolax_6parser_11CSSSelector_7__setstate_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_state,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 3, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < (0)) __PYX_ERR(1, 3, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 3, __pyx_L3_error) } + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error) + } + __pyx_v___pyx_state = values[0]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.parser.CSSSelector.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_10selectolax_6parser_11CSSSelector_6__setstate_cython__(((struct __pyx_obj_10selectolax_6parser_CSSSelector *)__pyx_v_self), __pyx_v___pyx_state); + + /* function exit code */ + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_11CSSSelector_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_10selectolax_6parser_CSSSelector *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__setstate_cython__", 0); + + /* "(tree fragment)":4 + * raise TypeError, "self.css_entry,self.finder,self.selectors_list cannot be converted to a Python object for pickling" + * def __setstate_cython__(self, __pyx_state): + * raise TypeError, "self.css_entry,self.finder,self.selectors_list cannot be converted to a Python object for pickling" # <<<<<<<<<<<<<< +*/ + __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), __pyx_mstate_global->__pyx_kp_u_self_css_entry_self_finder_self, 0, 0); + __PYX_ERR(1, 4, __pyx_L1_error) + + /* "(tree fragment)":3 + * def __reduce_cython__(self): + * raise TypeError, "self.css_entry,self.finder,self.selectors_list cannot be converted to a Python object for pickling" + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * raise TypeError, "self.css_entry,self.finder,self.selectors_list cannot be converted to a Python object for pickling" +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_AddTraceback("selectolax.parser.CSSSelector.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/modest/selection.pxi":80 + * cdef list nodes + * + * def __init__(self, Node node, str query): # <<<<<<<<<<<<<< + * """custom init, because __cinit__ doesn't accept C types""" + * self.node = node +*/ + +/* Python wrapper */ +static int __pyx_pw_10selectolax_6parser_8Selector_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6parser_8Selector___init__, "custom init, because __cinit__ doesn't accept C types"); +#if CYTHON_UPDATE_DESCRIPTOR_DOC +struct wrapperbase __pyx_wrapperbase_10selectolax_6parser_8Selector___init__; +#endif +static int __pyx_pw_10selectolax_6parser_8Selector_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_node = 0; + PyObject *__pyx_v_query = 0; + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[2] = {0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1; + #endif + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_node,&__pyx_mstate_global->__pyx_n_u_query,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(2, 80, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 2: + values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(2, 80, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(2, 80, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__init__", 0) < (0)) __PYX_ERR(2, 80, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 2; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, i); __PYX_ERR(2, 80, __pyx_L3_error) } + } + } else if (unlikely(__pyx_nargs != 2)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(2, 80, __pyx_L3_error) + values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(2, 80, __pyx_L3_error) + } + __pyx_v_node = ((struct __pyx_obj_10selectolax_6parser_Node *)values[0]); + __pyx_v_query = ((PyObject*)values[1]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, __pyx_nargs); __PYX_ERR(2, 80, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.parser.Selector.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return -1; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_node), __pyx_mstate_global->__pyx_ptype_10selectolax_6parser_Node, 1, "node", 0))) __PYX_ERR(2, 80, __pyx_L1_error) + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_query), (&PyUnicode_Type), 1, "query", 1))) __PYX_ERR(2, 80, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6parser_8Selector___init__(((struct __pyx_obj_10selectolax_6parser_Selector *)__pyx_v_self), __pyx_v_node, __pyx_v_query); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = -1; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_10selectolax_6parser_8Selector___init__(struct __pyx_obj_10selectolax_6parser_Selector *__pyx_v_self, struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_node, PyObject *__pyx_v_query) { + int __pyx_r; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__init__", 0); + + /* "selectolax/modest/selection.pxi":82 + * def __init__(self, Node node, str query): + * """custom init, because __cinit__ doesn't accept C types""" + * self.node = node # <<<<<<<<<<<<<< + * self.nodes = find_nodes(node.parser, node.node, query) if query else [node, ] + * +*/ + __Pyx_INCREF((PyObject *)__pyx_v_node); + __Pyx_GIVEREF((PyObject *)__pyx_v_node); + __Pyx_GOTREF((PyObject *)__pyx_v_self->node); + __Pyx_DECREF((PyObject *)__pyx_v_self->node); + __pyx_v_self->node = __pyx_v_node; + + /* "selectolax/modest/selection.pxi":83 + * """custom init, because __cinit__ doesn't accept C types""" + * self.node = node + * self.nodes = find_nodes(node.parser, node.node, query) if query else [node, ] # <<<<<<<<<<<<<< + * + * cpdef css(self, str query): +*/ + if (__pyx_v_query == Py_None) __pyx_t_2 = 0; + else + { + Py_ssize_t __pyx_temp = __Pyx_PyUnicode_IS_TRUE(__pyx_v_query); + if (unlikely(((!CYTHON_ASSUME_SAFE_SIZE) && __pyx_temp < 0))) __PYX_ERR(2, 83, __pyx_L1_error) + __pyx_t_2 = (__pyx_temp != 0); + } + + if (__pyx_t_2) { + __pyx_t_3 = ((PyObject *)__pyx_v_node->parser); + __Pyx_INCREF(__pyx_t_3); + __pyx_t_4 = __pyx_f_10selectolax_6parser_find_nodes(((struct __pyx_obj_10selectolax_6parser_HTMLParser *)__pyx_t_3), __pyx_v_node->node, __pyx_v_query); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 83, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (!(likely(PyList_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None) || __Pyx_RaiseUnexpectedTypeError("list", __pyx_t_4))) __PYX_ERR(2, 83, __pyx_L1_error) + __pyx_t_1 = __pyx_t_4; + __pyx_t_4 = 0; + } else { + __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 83, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_INCREF((PyObject *)__pyx_v_node); + __Pyx_GIVEREF((PyObject *)__pyx_v_node); + if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_v_node)) != (0)) __PYX_ERR(2, 83, __pyx_L1_error); + __pyx_t_1 = __pyx_t_4; + __pyx_t_4 = 0; + } + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF(__pyx_v_self->nodes); + __Pyx_DECREF(__pyx_v_self->nodes); + __pyx_v_self->nodes = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* "selectolax/modest/selection.pxi":80 + * cdef list nodes + * + * def __init__(self, Node node, str query): # <<<<<<<<<<<<<< + * """custom init, because __cinit__ doesn't accept C types""" + * self.node = node +*/ + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("selectolax.parser.Selector.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/modest/selection.pxi":85 + * self.nodes = find_nodes(node.parser, node.node, query) if query else [node, ] + * + * cpdef css(self, str query): # <<<<<<<<<<<<<< + * """Evaluate CSS selector against current scope.""" + * cdef Node current_node +*/ + +static PyObject *__pyx_pw_10selectolax_6parser_8Selector_3css(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyObject *__pyx_f_10selectolax_6parser_8Selector_css(struct __pyx_obj_10selectolax_6parser_Selector *__pyx_v_self, PyObject *__pyx_v_query, int __pyx_skip_dispatch) { + struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_current_node = 0; + PyObject *__pyx_v_nodes = NULL; + PyObject *__pyx_v_node = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + size_t __pyx_t_5; + Py_ssize_t __pyx_t_6; + int __pyx_t_7; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("css", 0); + /* Check if called by wrapper */ + if (unlikely(__pyx_skip_dispatch)) ; + /* Check if overridden in Python */ + else if ( + #if !CYTHON_USE_TYPE_SLOTS + unlikely(Py_TYPE(((PyObject *)__pyx_v_self)) != __pyx_mstate_global->__pyx_ptype_10selectolax_6parser_Selector && + __Pyx_PyType_HasFeature(Py_TYPE(((PyObject *)__pyx_v_self)), Py_TPFLAGS_HAVE_GC)) + #else + unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0 || __Pyx_PyType_HasFeature(Py_TYPE(((PyObject *)__pyx_v_self)), (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE))) + #endif + ) { + #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS + static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT; + if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) { + PY_UINT64_T __pyx_typedict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self)); + #endif + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_css); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 85, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (!__Pyx_IsSameCFunction(__pyx_t_1, (void(*)(void)) __pyx_pw_10selectolax_6parser_8Selector_3css)) { + __Pyx_XDECREF(__pyx_r); + __pyx_t_3 = NULL; + __Pyx_INCREF(__pyx_t_1); + __pyx_t_4 = __pyx_t_1; + __pyx_t_5 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4); + assert(__pyx_t_3); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_4, __pyx__function); + __pyx_t_5 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_query}; + __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 85, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + } + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + goto __pyx_L0; + } + #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS + __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self)); + __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self)); + if (unlikely(__pyx_typedict_guard != __pyx_tp_dict_version)) { + __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT; + } + #endif + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS + } + #endif + } + + /* "selectolax/modest/selection.pxi":88 + * """Evaluate CSS selector against current scope.""" + * cdef Node current_node + * nodes = list() # <<<<<<<<<<<<<< + * for node in self.nodes: + * current_node = node +*/ + __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 88, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v_nodes = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* "selectolax/modest/selection.pxi":89 + * cdef Node current_node + * nodes = list() + * for node in self.nodes: # <<<<<<<<<<<<<< + * current_node = node + * nodes.extend(find_nodes(self.node.parser, current_node.node, query)) +*/ + if (unlikely(__pyx_v_self->nodes == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); + __PYX_ERR(2, 89, __pyx_L1_error) + } + __pyx_t_1 = __pyx_v_self->nodes; __Pyx_INCREF(__pyx_t_1); + __pyx_t_6 = 0; + for (;;) { + { + Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1); + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely((__pyx_temp < 0))) __PYX_ERR(2, 89, __pyx_L1_error) + #endif + if (__pyx_t_6 >= __pyx_temp) break; + } + __pyx_t_2 = __Pyx_PyList_GetItemRefFast(__pyx_t_1, __pyx_t_6, __Pyx_ReferenceSharing_OwnStrongReference); + ++__pyx_t_6; + if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 89, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_XDECREF_SET(__pyx_v_node, __pyx_t_2); + __pyx_t_2 = 0; + + /* "selectolax/modest/selection.pxi":90 + * nodes = list() + * for node in self.nodes: + * current_node = node # <<<<<<<<<<<<<< + * nodes.extend(find_nodes(self.node.parser, current_node.node, query)) + * self.nodes = nodes +*/ + __pyx_t_2 = __pyx_v_node; + __Pyx_INCREF(__pyx_t_2); + if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_mstate_global->__pyx_ptype_10selectolax_6parser_Node))))) __PYX_ERR(2, 90, __pyx_L1_error) + __Pyx_XDECREF_SET(__pyx_v_current_node, ((struct __pyx_obj_10selectolax_6parser_Node *)__pyx_t_2)); + __pyx_t_2 = 0; + + /* "selectolax/modest/selection.pxi":91 + * for node in self.nodes: + * current_node = node + * nodes.extend(find_nodes(self.node.parser, current_node.node, query)) # <<<<<<<<<<<<<< + * self.nodes = nodes + * return self +*/ + __pyx_t_2 = ((PyObject *)__pyx_v_self->node->parser); + __Pyx_INCREF(__pyx_t_2); + __pyx_t_4 = __pyx_f_10selectolax_6parser_find_nodes(((struct __pyx_obj_10selectolax_6parser_HTMLParser *)__pyx_t_2), __pyx_v_current_node->node, __pyx_v_query); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 91, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_7 = __Pyx_PyList_Extend(__pyx_v_nodes, __pyx_t_4); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(2, 91, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "selectolax/modest/selection.pxi":89 + * cdef Node current_node + * nodes = list() + * for node in self.nodes: # <<<<<<<<<<<<<< + * current_node = node + * nodes.extend(find_nodes(self.node.parser, current_node.node, query)) +*/ + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "selectolax/modest/selection.pxi":92 + * current_node = node + * nodes.extend(find_nodes(self.node.parser, current_node.node, query)) + * self.nodes = nodes # <<<<<<<<<<<<<< + * return self + * +*/ + __Pyx_INCREF(__pyx_v_nodes); + __Pyx_GIVEREF(__pyx_v_nodes); + __Pyx_GOTREF(__pyx_v_self->nodes); + __Pyx_DECREF(__pyx_v_self->nodes); + __pyx_v_self->nodes = __pyx_v_nodes; + + /* "selectolax/modest/selection.pxi":93 + * nodes.extend(find_nodes(self.node.parser, current_node.node, query)) + * self.nodes = nodes + * return self # <<<<<<<<<<<<<< + * + * @property +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF((PyObject *)__pyx_v_self); + __pyx_r = ((PyObject *)__pyx_v_self); + goto __pyx_L0; + + /* "selectolax/modest/selection.pxi":85 + * self.nodes = find_nodes(node.parser, node.node, query) if query else [node, ] + * + * cpdef css(self, str query): # <<<<<<<<<<<<<< + * """Evaluate CSS selector against current scope.""" + * cdef Node current_node +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("selectolax.parser.Selector.css", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF((PyObject *)__pyx_v_current_node); + __Pyx_XDECREF(__pyx_v_nodes); + __Pyx_XDECREF(__pyx_v_node); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_8Selector_3css(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6parser_8Selector_2css, "Selector.css(self, str query)\n\nEvaluate CSS selector against current scope."); +static PyMethodDef __pyx_mdef_10selectolax_6parser_8Selector_3css = {"css", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_8Selector_3css, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_8Selector_2css}; +static PyObject *__pyx_pw_10selectolax_6parser_8Selector_3css(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_query = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("css (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_query,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(2, 85, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(2, 85, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "css", 0) < (0)) __PYX_ERR(2, 85, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("css", 1, 1, 1, i); __PYX_ERR(2, 85, __pyx_L3_error) } + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(2, 85, __pyx_L3_error) + } + __pyx_v_query = ((PyObject*)values[0]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("css", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 85, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.parser.Selector.css", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_query), (&PyUnicode_Type), 1, "query", 1))) __PYX_ERR(2, 85, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6parser_8Selector_2css(((struct __pyx_obj_10selectolax_6parser_Selector *)__pyx_v_self), __pyx_v_query); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_8Selector_2css(struct __pyx_obj_10selectolax_6parser_Selector *__pyx_v_self, PyObject *__pyx_v_query) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("css", 0); + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __pyx_f_10selectolax_6parser_8Selector_css(__pyx_v_self, __pyx_v_query, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 85, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("selectolax.parser.Selector.css", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/modest/selection.pxi":95 + * return self + * + * @property # <<<<<<<<<<<<<< + * def matches(self): + * """Returns all possible matches""" +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_8Selector_7matches_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_10selectolax_6parser_8Selector_7matches_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6parser_8Selector_7matches___get__(((struct __pyx_obj_10selectolax_6parser_Selector *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_8Selector_7matches___get__(struct __pyx_obj_10selectolax_6parser_Selector *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__", 0); + + /* "selectolax/modest/selection.pxi":98 + * def matches(self): + * """Returns all possible matches""" + * return self.nodes # <<<<<<<<<<<<<< + * + * @property +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_self->nodes); + __pyx_r = __pyx_v_self->nodes; + goto __pyx_L0; + + /* "selectolax/modest/selection.pxi":95 + * return self + * + * @property # <<<<<<<<<<<<<< + * def matches(self): + * """Returns all possible matches""" +*/ + + /* function exit code */ + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/modest/selection.pxi":100 + * return self.nodes + * + * @property # <<<<<<<<<<<<<< + * def any_matches(self): + * """Returns True if there are any matches""" +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_8Selector_11any_matches_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_10selectolax_6parser_8Selector_11any_matches_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6parser_8Selector_11any_matches___get__(((struct __pyx_obj_10selectolax_6parser_Selector *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_8Selector_11any_matches___get__(struct __pyx_obj_10selectolax_6parser_Selector *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + size_t __pyx_t_3; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + + /* "selectolax/modest/selection.pxi":103 + * def any_matches(self): + * """Returns True if there are any matches""" + * return bool(self.nodes) # <<<<<<<<<<<<<< + * + * def text_contains(self, str text, bool deep=True, str separator='', bool strip=False): +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_2 = NULL; + __pyx_t_3 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_self->nodes}; + __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_7cpython_4bool_bool, __pyx_callargs+__pyx_t_3, (2-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 103, __pyx_L1_error) + __Pyx_GOTREF((PyObject *)__pyx_t_1); + } + __pyx_r = ((PyObject *)__pyx_t_1); + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "selectolax/modest/selection.pxi":100 + * return self.nodes + * + * @property # <<<<<<<<<<<<<< + * def any_matches(self): + * """Returns True if there are any matches""" +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("selectolax.parser.Selector.any_matches.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/modest/selection.pxi":105 + * return bool(self.nodes) + * + * def text_contains(self, str text, bool deep=True, str separator='', bool strip=False): # <<<<<<<<<<<<<< + * """Filter all current matches given text.""" + * nodes = [] +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_8Selector_5text_contains(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6parser_8Selector_4text_contains, "Selector.text_contains(self, str text, bool deep=True, str separator='', bool strip=False)\n\nFilter all current matches given text."); +static PyMethodDef __pyx_mdef_10selectolax_6parser_8Selector_5text_contains = {"text_contains", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_8Selector_5text_contains, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_8Selector_4text_contains}; +static PyObject *__pyx_pw_10selectolax_6parser_8Selector_5text_contains(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_text = 0; + PyLongObject *__pyx_v_deep = 0; + PyObject *__pyx_v_separator = 0; + PyLongObject *__pyx_v_strip = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[4] = {0,0,0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("text_contains (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_text,&__pyx_mstate_global->__pyx_n_u_deep,&__pyx_mstate_global->__pyx_n_u_separator,&__pyx_mstate_global->__pyx_n_u_strip,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(2, 105, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 4: + values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(2, 105, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 3: + values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(2, 105, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(2, 105, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(2, 105, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "text_contains", 0) < (0)) __PYX_ERR(2, 105, __pyx_L3_error) + if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)((PyLongObject *)Py_True)); + if (!values[2]) values[2] = __Pyx_NewRef(((PyObject*)__pyx_mstate_global->__pyx_kp_u_)); + if (!values[3]) values[3] = __Pyx_NewRef((PyObject *)((PyLongObject *)Py_False)); + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("text_contains", 0, 1, 4, i); __PYX_ERR(2, 105, __pyx_L3_error) } + } + } else { + switch (__pyx_nargs) { + case 4: + values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(2, 105, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 3: + values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(2, 105, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(2, 105, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(2, 105, __pyx_L3_error) + break; + default: goto __pyx_L5_argtuple_error; + } + if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)((PyLongObject *)Py_True)); + if (!values[2]) values[2] = __Pyx_NewRef(((PyObject*)__pyx_mstate_global->__pyx_kp_u_)); + if (!values[3]) values[3] = __Pyx_NewRef((PyObject *)((PyLongObject *)Py_False)); + } + __pyx_v_text = ((PyObject*)values[0]); + __pyx_v_deep = ((PyLongObject *)values[1]); + __pyx_v_separator = ((PyObject*)values[2]); + __pyx_v_strip = ((PyLongObject *)values[3]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("text_contains", 0, 1, 4, __pyx_nargs); __PYX_ERR(2, 105, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.parser.Selector.text_contains", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_text), (&PyUnicode_Type), 1, "text", 1))) __PYX_ERR(2, 105, __pyx_L1_error) + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_deep), __pyx_mstate_global->__pyx_ptype_7cpython_4bool_bool, 1, "deep", 0))) __PYX_ERR(2, 105, __pyx_L1_error) + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_separator), (&PyUnicode_Type), 1, "separator", 1))) __PYX_ERR(2, 105, __pyx_L1_error) + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_strip), __pyx_mstate_global->__pyx_ptype_7cpython_4bool_bool, 1, "strip", 0))) __PYX_ERR(2, 105, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6parser_8Selector_4text_contains(((struct __pyx_obj_10selectolax_6parser_Selector *)__pyx_v_self), __pyx_v_text, __pyx_v_deep, __pyx_v_separator, __pyx_v_strip); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_8Selector_4text_contains(struct __pyx_obj_10selectolax_6parser_Selector *__pyx_v_self, PyObject *__pyx_v_text, PyLongObject *__pyx_v_deep, PyObject *__pyx_v_separator, PyLongObject *__pyx_v_strip) { + PyObject *__pyx_v_nodes = NULL; + struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_node = 0; + PyObject *__pyx_v_node_text = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + Py_ssize_t __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + size_t __pyx_t_5; + PyObject *__pyx_t_6 = NULL; + int __pyx_t_7; + int __pyx_t_8; + int __pyx_t_9; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("text_contains", 0); + + /* "selectolax/modest/selection.pxi":107 + * def text_contains(self, str text, bool deep=True, str separator='', bool strip=False): + * """Filter all current matches given text.""" + * nodes = [] # <<<<<<<<<<<<<< + * cdef Node node + * for node in self.nodes: +*/ + __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 107, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v_nodes = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* "selectolax/modest/selection.pxi":109 + * nodes = [] + * cdef Node node + * for node in self.nodes: # <<<<<<<<<<<<<< + * node_text = node.text(deep=deep, separator=separator, strip=strip) + * if node_text and text in node_text: +*/ + if (unlikely(__pyx_v_self->nodes == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); + __PYX_ERR(2, 109, __pyx_L1_error) + } + __pyx_t_1 = __pyx_v_self->nodes; __Pyx_INCREF(__pyx_t_1); + __pyx_t_2 = 0; + for (;;) { + { + Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1); + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely((__pyx_temp < 0))) __PYX_ERR(2, 109, __pyx_L1_error) + #endif + if (__pyx_t_2 >= __pyx_temp) break; + } + __pyx_t_3 = __Pyx_PyList_GetItemRefFast(__pyx_t_1, __pyx_t_2, __Pyx_ReferenceSharing_OwnStrongReference); + ++__pyx_t_2; + if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 109, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_mstate_global->__pyx_ptype_10selectolax_6parser_Node))))) __PYX_ERR(2, 109, __pyx_L1_error) + __Pyx_XDECREF_SET(__pyx_v_node, ((struct __pyx_obj_10selectolax_6parser_Node *)__pyx_t_3)); + __pyx_t_3 = 0; + + /* "selectolax/modest/selection.pxi":110 + * cdef Node node + * for node in self.nodes: + * node_text = node.text(deep=deep, separator=separator, strip=strip) # <<<<<<<<<<<<<< + * if node_text and text in node_text: + * nodes.append(node) +*/ + __pyx_t_4 = ((PyObject *)__pyx_v_node); + __Pyx_INCREF(__pyx_t_4); + __pyx_t_5 = 0; + { + PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 3 : 0)] = {__pyx_t_4, NULL}; + __pyx_t_6 = __Pyx_MakeVectorcallBuilderKwds(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 110, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_deep, ((PyObject *)__pyx_v_deep), __pyx_t_6, __pyx_callargs+1, 0) < (0)) __PYX_ERR(2, 110, __pyx_L1_error) + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_separator, __pyx_v_separator, __pyx_t_6, __pyx_callargs+1, 1) < (0)) __PYX_ERR(2, 110, __pyx_L1_error) + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_strip, ((PyObject *)__pyx_v_strip), __pyx_t_6, __pyx_callargs+1, 2) < (0)) __PYX_ERR(2, 110, __pyx_L1_error) + __pyx_t_3 = __Pyx_Object_VectorcallMethod_CallFromBuilder((PyObject*)__pyx_mstate_global->__pyx_n_u_text, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_6); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 110, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_XDECREF_SET(__pyx_v_node_text, __pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/modest/selection.pxi":111 + * for node in self.nodes: + * node_text = node.text(deep=deep, separator=separator, strip=strip) + * if node_text and text in node_text: # <<<<<<<<<<<<<< + * nodes.append(node) + * self.nodes = nodes +*/ + __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_node_text); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(2, 111, __pyx_L1_error) + if (__pyx_t_8) { + } else { + __pyx_t_7 = __pyx_t_8; + goto __pyx_L6_bool_binop_done; + } + __pyx_t_8 = (__Pyx_PySequence_ContainsTF(__pyx_v_text, __pyx_v_node_text, Py_EQ)); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(2, 111, __pyx_L1_error) + __pyx_t_7 = __pyx_t_8; + __pyx_L6_bool_binop_done:; + if (__pyx_t_7) { + + /* "selectolax/modest/selection.pxi":112 + * node_text = node.text(deep=deep, separator=separator, strip=strip) + * if node_text and text in node_text: + * nodes.append(node) # <<<<<<<<<<<<<< + * self.nodes = nodes + * return self +*/ + __pyx_t_9 = __Pyx_PyList_Append(__pyx_v_nodes, ((PyObject *)__pyx_v_node)); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(2, 112, __pyx_L1_error) + + /* "selectolax/modest/selection.pxi":111 + * for node in self.nodes: + * node_text = node.text(deep=deep, separator=separator, strip=strip) + * if node_text and text in node_text: # <<<<<<<<<<<<<< + * nodes.append(node) + * self.nodes = nodes +*/ + } + + /* "selectolax/modest/selection.pxi":109 + * nodes = [] + * cdef Node node + * for node in self.nodes: # <<<<<<<<<<<<<< + * node_text = node.text(deep=deep, separator=separator, strip=strip) + * if node_text and text in node_text: +*/ + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "selectolax/modest/selection.pxi":113 + * if node_text and text in node_text: + * nodes.append(node) + * self.nodes = nodes # <<<<<<<<<<<<<< + * return self + * +*/ + __Pyx_INCREF(__pyx_v_nodes); + __Pyx_GIVEREF(__pyx_v_nodes); + __Pyx_GOTREF(__pyx_v_self->nodes); + __Pyx_DECREF(__pyx_v_self->nodes); + __pyx_v_self->nodes = __pyx_v_nodes; + + /* "selectolax/modest/selection.pxi":114 + * nodes.append(node) + * self.nodes = nodes + * return self # <<<<<<<<<<<<<< + * + * def any_text_contains(self, str text, bool deep=True, str separator='', bool strip=False): +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF((PyObject *)__pyx_v_self); + __pyx_r = ((PyObject *)__pyx_v_self); + goto __pyx_L0; + + /* "selectolax/modest/selection.pxi":105 + * return bool(self.nodes) + * + * def text_contains(self, str text, bool deep=True, str separator='', bool strip=False): # <<<<<<<<<<<<<< + * """Filter all current matches given text.""" + * nodes = [] +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_AddTraceback("selectolax.parser.Selector.text_contains", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_nodes); + __Pyx_XDECREF((PyObject *)__pyx_v_node); + __Pyx_XDECREF(__pyx_v_node_text); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/modest/selection.pxi":116 + * return self + * + * def any_text_contains(self, str text, bool deep=True, str separator='', bool strip=False): # <<<<<<<<<<<<<< + * """Returns True if any node in the current search scope contains specified text""" + * nodes = [] +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_8Selector_7any_text_contains(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6parser_8Selector_6any_text_contains, "Selector.any_text_contains(self, str text, bool deep=True, str separator='', bool strip=False)\n\nReturns True if any node in the current search scope contains specified text"); +static PyMethodDef __pyx_mdef_10selectolax_6parser_8Selector_7any_text_contains = {"any_text_contains", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_8Selector_7any_text_contains, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_8Selector_6any_text_contains}; +static PyObject *__pyx_pw_10selectolax_6parser_8Selector_7any_text_contains(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_text = 0; + PyLongObject *__pyx_v_deep = 0; + PyObject *__pyx_v_separator = 0; + PyLongObject *__pyx_v_strip = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[4] = {0,0,0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("any_text_contains (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_text,&__pyx_mstate_global->__pyx_n_u_deep,&__pyx_mstate_global->__pyx_n_u_separator,&__pyx_mstate_global->__pyx_n_u_strip,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(2, 116, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 4: + values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(2, 116, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 3: + values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(2, 116, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(2, 116, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(2, 116, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "any_text_contains", 0) < (0)) __PYX_ERR(2, 116, __pyx_L3_error) + if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)((PyLongObject *)Py_True)); + if (!values[2]) values[2] = __Pyx_NewRef(((PyObject*)__pyx_mstate_global->__pyx_kp_u_)); + if (!values[3]) values[3] = __Pyx_NewRef((PyObject *)((PyLongObject *)Py_False)); + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("any_text_contains", 0, 1, 4, i); __PYX_ERR(2, 116, __pyx_L3_error) } + } + } else { + switch (__pyx_nargs) { + case 4: + values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(2, 116, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 3: + values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(2, 116, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(2, 116, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(2, 116, __pyx_L3_error) + break; + default: goto __pyx_L5_argtuple_error; + } + if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)((PyLongObject *)Py_True)); + if (!values[2]) values[2] = __Pyx_NewRef(((PyObject*)__pyx_mstate_global->__pyx_kp_u_)); + if (!values[3]) values[3] = __Pyx_NewRef((PyObject *)((PyLongObject *)Py_False)); + } + __pyx_v_text = ((PyObject*)values[0]); + __pyx_v_deep = ((PyLongObject *)values[1]); + __pyx_v_separator = ((PyObject*)values[2]); + __pyx_v_strip = ((PyLongObject *)values[3]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("any_text_contains", 0, 1, 4, __pyx_nargs); __PYX_ERR(2, 116, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.parser.Selector.any_text_contains", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_text), (&PyUnicode_Type), 1, "text", 1))) __PYX_ERR(2, 116, __pyx_L1_error) + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_deep), __pyx_mstate_global->__pyx_ptype_7cpython_4bool_bool, 1, "deep", 0))) __PYX_ERR(2, 116, __pyx_L1_error) + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_separator), (&PyUnicode_Type), 1, "separator", 1))) __PYX_ERR(2, 116, __pyx_L1_error) + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_strip), __pyx_mstate_global->__pyx_ptype_7cpython_4bool_bool, 1, "strip", 0))) __PYX_ERR(2, 116, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6parser_8Selector_6any_text_contains(((struct __pyx_obj_10selectolax_6parser_Selector *)__pyx_v_self), __pyx_v_text, __pyx_v_deep, __pyx_v_separator, __pyx_v_strip); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_8Selector_6any_text_contains(struct __pyx_obj_10selectolax_6parser_Selector *__pyx_v_self, PyObject *__pyx_v_text, PyLongObject *__pyx_v_deep, PyObject *__pyx_v_separator, PyLongObject *__pyx_v_strip) { + CYTHON_UNUSED PyObject *__pyx_v_nodes = NULL; + struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_node = 0; + PyObject *__pyx_v_node_text = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + Py_ssize_t __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + size_t __pyx_t_5; + PyObject *__pyx_t_6 = NULL; + int __pyx_t_7; + int __pyx_t_8; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("any_text_contains", 0); + + /* "selectolax/modest/selection.pxi":118 + * def any_text_contains(self, str text, bool deep=True, str separator='', bool strip=False): + * """Returns True if any node in the current search scope contains specified text""" + * nodes = [] # <<<<<<<<<<<<<< + * cdef Node node + * for node in self.nodes: +*/ + __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 118, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v_nodes = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* "selectolax/modest/selection.pxi":120 + * nodes = [] + * cdef Node node + * for node in self.nodes: # <<<<<<<<<<<<<< + * node_text = node.text(deep=deep, separator=separator, strip=strip) + * if node_text and text in node_text: +*/ + if (unlikely(__pyx_v_self->nodes == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); + __PYX_ERR(2, 120, __pyx_L1_error) + } + __pyx_t_1 = __pyx_v_self->nodes; __Pyx_INCREF(__pyx_t_1); + __pyx_t_2 = 0; + for (;;) { + { + Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1); + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely((__pyx_temp < 0))) __PYX_ERR(2, 120, __pyx_L1_error) + #endif + if (__pyx_t_2 >= __pyx_temp) break; + } + __pyx_t_3 = __Pyx_PyList_GetItemRefFast(__pyx_t_1, __pyx_t_2, __Pyx_ReferenceSharing_OwnStrongReference); + ++__pyx_t_2; + if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 120, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_mstate_global->__pyx_ptype_10selectolax_6parser_Node))))) __PYX_ERR(2, 120, __pyx_L1_error) + __Pyx_XDECREF_SET(__pyx_v_node, ((struct __pyx_obj_10selectolax_6parser_Node *)__pyx_t_3)); + __pyx_t_3 = 0; + + /* "selectolax/modest/selection.pxi":121 + * cdef Node node + * for node in self.nodes: + * node_text = node.text(deep=deep, separator=separator, strip=strip) # <<<<<<<<<<<<<< + * if node_text and text in node_text: + * return True +*/ + __pyx_t_4 = ((PyObject *)__pyx_v_node); + __Pyx_INCREF(__pyx_t_4); + __pyx_t_5 = 0; + { + PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 3 : 0)] = {__pyx_t_4, NULL}; + __pyx_t_6 = __Pyx_MakeVectorcallBuilderKwds(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 121, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_deep, ((PyObject *)__pyx_v_deep), __pyx_t_6, __pyx_callargs+1, 0) < (0)) __PYX_ERR(2, 121, __pyx_L1_error) + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_separator, __pyx_v_separator, __pyx_t_6, __pyx_callargs+1, 1) < (0)) __PYX_ERR(2, 121, __pyx_L1_error) + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_strip, ((PyObject *)__pyx_v_strip), __pyx_t_6, __pyx_callargs+1, 2) < (0)) __PYX_ERR(2, 121, __pyx_L1_error) + __pyx_t_3 = __Pyx_Object_VectorcallMethod_CallFromBuilder((PyObject*)__pyx_mstate_global->__pyx_n_u_text, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_6); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 121, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_XDECREF_SET(__pyx_v_node_text, __pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/modest/selection.pxi":122 + * for node in self.nodes: + * node_text = node.text(deep=deep, separator=separator, strip=strip) + * if node_text and text in node_text: # <<<<<<<<<<<<<< + * return True + * return False +*/ + __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_node_text); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(2, 122, __pyx_L1_error) + if (__pyx_t_8) { + } else { + __pyx_t_7 = __pyx_t_8; + goto __pyx_L6_bool_binop_done; + } + __pyx_t_8 = (__Pyx_PySequence_ContainsTF(__pyx_v_text, __pyx_v_node_text, Py_EQ)); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(2, 122, __pyx_L1_error) + __pyx_t_7 = __pyx_t_8; + __pyx_L6_bool_binop_done:; + if (__pyx_t_7) { + + /* "selectolax/modest/selection.pxi":123 + * node_text = node.text(deep=deep, separator=separator, strip=strip) + * if node_text and text in node_text: + * return True # <<<<<<<<<<<<<< + * return False + * +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(Py_True); + __pyx_r = Py_True; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + goto __pyx_L0; + + /* "selectolax/modest/selection.pxi":122 + * for node in self.nodes: + * node_text = node.text(deep=deep, separator=separator, strip=strip) + * if node_text and text in node_text: # <<<<<<<<<<<<<< + * return True + * return False +*/ + } + + /* "selectolax/modest/selection.pxi":120 + * nodes = [] + * cdef Node node + * for node in self.nodes: # <<<<<<<<<<<<<< + * node_text = node.text(deep=deep, separator=separator, strip=strip) + * if node_text and text in node_text: +*/ + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "selectolax/modest/selection.pxi":124 + * if node_text and text in node_text: + * return True + * return False # <<<<<<<<<<<<<< + * + * def attribute_longer_than(self, str attribute, int length, str start = None): +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(Py_False); + __pyx_r = Py_False; + goto __pyx_L0; + + /* "selectolax/modest/selection.pxi":116 + * return self + * + * def any_text_contains(self, str text, bool deep=True, str separator='', bool strip=False): # <<<<<<<<<<<<<< + * """Returns True if any node in the current search scope contains specified text""" + * nodes = [] +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_AddTraceback("selectolax.parser.Selector.any_text_contains", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_nodes); + __Pyx_XDECREF((PyObject *)__pyx_v_node); + __Pyx_XDECREF(__pyx_v_node_text); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/modest/selection.pxi":126 + * return False + * + * def attribute_longer_than(self, str attribute, int length, str start = None): # <<<<<<<<<<<<<< + * """Filter all current matches by attribute length. + * +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_8Selector_9attribute_longer_than(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6parser_8Selector_8attribute_longer_than, "Selector.attribute_longer_than(self, str attribute, int length, str start=None)\n\nFilter all current matches by attribute length.\n\nSimilar to `string-length` in XPath."); +static PyMethodDef __pyx_mdef_10selectolax_6parser_8Selector_9attribute_longer_than = {"attribute_longer_than", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_8Selector_9attribute_longer_than, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_8Selector_8attribute_longer_than}; +static PyObject *__pyx_pw_10selectolax_6parser_8Selector_9attribute_longer_than(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_attribute = 0; + int __pyx_v_length; + PyObject *__pyx_v_start = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[3] = {0,0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("attribute_longer_than (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_attribute,&__pyx_mstate_global->__pyx_n_u_length,&__pyx_mstate_global->__pyx_n_u_start,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(2, 126, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 3: + values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(2, 126, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(2, 126, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(2, 126, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "attribute_longer_than", 0) < (0)) __PYX_ERR(2, 126, __pyx_L3_error) + if (!values[2]) values[2] = __Pyx_NewRef(((PyObject*)Py_None)); + for (Py_ssize_t i = __pyx_nargs; i < 2; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("attribute_longer_than", 0, 2, 3, i); __PYX_ERR(2, 126, __pyx_L3_error) } + } + } else { + switch (__pyx_nargs) { + case 3: + values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(2, 126, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(2, 126, __pyx_L3_error) + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(2, 126, __pyx_L3_error) + break; + default: goto __pyx_L5_argtuple_error; + } + if (!values[2]) values[2] = __Pyx_NewRef(((PyObject*)Py_None)); + } + __pyx_v_attribute = ((PyObject*)values[0]); + __pyx_v_length = __Pyx_PyLong_As_int(values[1]); if (unlikely((__pyx_v_length == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 126, __pyx_L3_error) + __pyx_v_start = ((PyObject*)values[2]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("attribute_longer_than", 0, 2, 3, __pyx_nargs); __PYX_ERR(2, 126, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.parser.Selector.attribute_longer_than", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_attribute), (&PyUnicode_Type), 1, "attribute", 1))) __PYX_ERR(2, 126, __pyx_L1_error) + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_start), (&PyUnicode_Type), 1, "start", 1))) __PYX_ERR(2, 126, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6parser_8Selector_8attribute_longer_than(((struct __pyx_obj_10selectolax_6parser_Selector *)__pyx_v_self), __pyx_v_attribute, __pyx_v_length, __pyx_v_start); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_8Selector_8attribute_longer_than(struct __pyx_obj_10selectolax_6parser_Selector *__pyx_v_self, PyObject *__pyx_v_attribute, int __pyx_v_length, PyObject *__pyx_v_start) { + PyObject *__pyx_v_nodes = NULL; + PyObject *__pyx_v_node = NULL; + PyObject *__pyx_v_attr = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + Py_ssize_t __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + size_t __pyx_t_6; + int __pyx_t_7; + int __pyx_t_8; + Py_ssize_t __pyx_t_9; + int __pyx_t_10; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("attribute_longer_than", 0); + + /* "selectolax/modest/selection.pxi":131 + * Similar to `string-length` in XPath. + * """ + * nodes = [] # <<<<<<<<<<<<<< + * for node in self.nodes: + * attr = node.attributes.get(attribute) +*/ + __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 131, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v_nodes = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* "selectolax/modest/selection.pxi":132 + * """ + * nodes = [] + * for node in self.nodes: # <<<<<<<<<<<<<< + * attr = node.attributes.get(attribute) + * if attr and start and start in attr: +*/ + if (unlikely(__pyx_v_self->nodes == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); + __PYX_ERR(2, 132, __pyx_L1_error) + } + __pyx_t_1 = __pyx_v_self->nodes; __Pyx_INCREF(__pyx_t_1); + __pyx_t_2 = 0; + for (;;) { + { + Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1); + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely((__pyx_temp < 0))) __PYX_ERR(2, 132, __pyx_L1_error) + #endif + if (__pyx_t_2 >= __pyx_temp) break; + } + __pyx_t_3 = __Pyx_PyList_GetItemRefFast(__pyx_t_1, __pyx_t_2, __Pyx_ReferenceSharing_OwnStrongReference); + ++__pyx_t_2; + if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 132, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_XDECREF_SET(__pyx_v_node, __pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/modest/selection.pxi":133 + * nodes = [] + * for node in self.nodes: + * attr = node.attributes.get(attribute) # <<<<<<<<<<<<<< + * if attr and start and start in attr: + * attr = attr[attr.find(start) + len(start):] +*/ + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_node, __pyx_mstate_global->__pyx_n_u_attributes); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 133, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_4 = __pyx_t_5; + __Pyx_INCREF(__pyx_t_4); + __pyx_t_6 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_attribute}; + __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_get, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 133, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_XDECREF_SET(__pyx_v_attr, __pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/modest/selection.pxi":134 + * for node in self.nodes: + * attr = node.attributes.get(attribute) + * if attr and start and start in attr: # <<<<<<<<<<<<<< + * attr = attr[attr.find(start) + len(start):] + * if len(attr) > length: +*/ + __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_attr); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(2, 134, __pyx_L1_error) + if (__pyx_t_8) { + } else { + __pyx_t_7 = __pyx_t_8; + goto __pyx_L6_bool_binop_done; + } + if (__pyx_v_start == Py_None) __pyx_t_8 = 0; + else + { + Py_ssize_t __pyx_temp = __Pyx_PyUnicode_IS_TRUE(__pyx_v_start); + if (unlikely(((!CYTHON_ASSUME_SAFE_SIZE) && __pyx_temp < 0))) __PYX_ERR(2, 134, __pyx_L1_error) + __pyx_t_8 = (__pyx_temp != 0); + } + + if (__pyx_t_8) { + } else { + __pyx_t_7 = __pyx_t_8; + goto __pyx_L6_bool_binop_done; + } + __pyx_t_8 = (__Pyx_PySequence_ContainsTF(__pyx_v_start, __pyx_v_attr, Py_EQ)); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(2, 134, __pyx_L1_error) + __pyx_t_7 = __pyx_t_8; + __pyx_L6_bool_binop_done:; + if (__pyx_t_7) { + + /* "selectolax/modest/selection.pxi":135 + * attr = node.attributes.get(attribute) + * if attr and start and start in attr: + * attr = attr[attr.find(start) + len(start):] # <<<<<<<<<<<<<< + * if len(attr) > length: + * nodes.append(node) +*/ + __pyx_t_5 = __pyx_v_attr; + __Pyx_INCREF(__pyx_t_5); + __pyx_t_6 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_start}; + __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_find, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 135, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + if (unlikely(__pyx_v_start == Py_None)) { + PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); + __PYX_ERR(2, 135, __pyx_L1_error) + } + __pyx_t_9 = __Pyx_PyUnicode_GET_LENGTH(__pyx_v_start); if (unlikely(__pyx_t_9 == ((Py_ssize_t)-1))) __PYX_ERR(2, 135, __pyx_L1_error) + __pyx_t_5 = PyLong_FromSsize_t(__pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 135, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_4 = PyNumber_Add(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 135, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = __Pyx_PyObject_GetSlice(__pyx_v_attr, 0, 0, &__pyx_t_4, NULL, NULL, 0, 0, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 135, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF_SET(__pyx_v_attr, __pyx_t_5); + __pyx_t_5 = 0; + + /* "selectolax/modest/selection.pxi":134 + * for node in self.nodes: + * attr = node.attributes.get(attribute) + * if attr and start and start in attr: # <<<<<<<<<<<<<< + * attr = attr[attr.find(start) + len(start):] + * if len(attr) > length: +*/ + } + + /* "selectolax/modest/selection.pxi":136 + * if attr and start and start in attr: + * attr = attr[attr.find(start) + len(start):] + * if len(attr) > length: # <<<<<<<<<<<<<< + * nodes.append(node) + * self.nodes = nodes +*/ + __pyx_t_9 = PyObject_Length(__pyx_v_attr); if (unlikely(__pyx_t_9 == ((Py_ssize_t)-1))) __PYX_ERR(2, 136, __pyx_L1_error) + __pyx_t_7 = (__pyx_t_9 > __pyx_v_length); + if (__pyx_t_7) { + + /* "selectolax/modest/selection.pxi":137 + * attr = attr[attr.find(start) + len(start):] + * if len(attr) > length: + * nodes.append(node) # <<<<<<<<<<<<<< + * self.nodes = nodes + * return self +*/ + __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_nodes, __pyx_v_node); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(2, 137, __pyx_L1_error) + + /* "selectolax/modest/selection.pxi":136 + * if attr and start and start in attr: + * attr = attr[attr.find(start) + len(start):] + * if len(attr) > length: # <<<<<<<<<<<<<< + * nodes.append(node) + * self.nodes = nodes +*/ + } + + /* "selectolax/modest/selection.pxi":132 + * """ + * nodes = [] + * for node in self.nodes: # <<<<<<<<<<<<<< + * attr = node.attributes.get(attribute) + * if attr and start and start in attr: +*/ + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "selectolax/modest/selection.pxi":138 + * if len(attr) > length: + * nodes.append(node) + * self.nodes = nodes # <<<<<<<<<<<<<< + * return self + * +*/ + __Pyx_INCREF(__pyx_v_nodes); + __Pyx_GIVEREF(__pyx_v_nodes); + __Pyx_GOTREF(__pyx_v_self->nodes); + __Pyx_DECREF(__pyx_v_self->nodes); + __pyx_v_self->nodes = __pyx_v_nodes; + + /* "selectolax/modest/selection.pxi":139 + * nodes.append(node) + * self.nodes = nodes + * return self # <<<<<<<<<<<<<< + * + * def any_attribute_longer_than(self, str attribute, int length, str start = None): +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF((PyObject *)__pyx_v_self); + __pyx_r = ((PyObject *)__pyx_v_self); + goto __pyx_L0; + + /* "selectolax/modest/selection.pxi":126 + * return False + * + * def attribute_longer_than(self, str attribute, int length, str start = None): # <<<<<<<<<<<<<< + * """Filter all current matches by attribute length. + * +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_AddTraceback("selectolax.parser.Selector.attribute_longer_than", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_nodes); + __Pyx_XDECREF(__pyx_v_node); + __Pyx_XDECREF(__pyx_v_attr); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/modest/selection.pxi":141 + * return self + * + * def any_attribute_longer_than(self, str attribute, int length, str start = None): # <<<<<<<<<<<<<< + * """Returns True any href attribute longer than a specified length. + * +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_8Selector_11any_attribute_longer_than(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6parser_8Selector_10any_attribute_longer_than, "Selector.any_attribute_longer_than(self, str attribute, int length, str start=None)\n\nReturns True any href attribute longer than a specified length.\n\nSimilar to `string-length` in XPath."); +static PyMethodDef __pyx_mdef_10selectolax_6parser_8Selector_11any_attribute_longer_than = {"any_attribute_longer_than", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_8Selector_11any_attribute_longer_than, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_8Selector_10any_attribute_longer_than}; +static PyObject *__pyx_pw_10selectolax_6parser_8Selector_11any_attribute_longer_than(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_attribute = 0; + int __pyx_v_length; + PyObject *__pyx_v_start = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[3] = {0,0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("any_attribute_longer_than (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_attribute,&__pyx_mstate_global->__pyx_n_u_length,&__pyx_mstate_global->__pyx_n_u_start,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(2, 141, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 3: + values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(2, 141, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(2, 141, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(2, 141, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "any_attribute_longer_than", 0) < (0)) __PYX_ERR(2, 141, __pyx_L3_error) + if (!values[2]) values[2] = __Pyx_NewRef(((PyObject*)Py_None)); + for (Py_ssize_t i = __pyx_nargs; i < 2; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("any_attribute_longer_than", 0, 2, 3, i); __PYX_ERR(2, 141, __pyx_L3_error) } + } + } else { + switch (__pyx_nargs) { + case 3: + values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(2, 141, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(2, 141, __pyx_L3_error) + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(2, 141, __pyx_L3_error) + break; + default: goto __pyx_L5_argtuple_error; + } + if (!values[2]) values[2] = __Pyx_NewRef(((PyObject*)Py_None)); + } + __pyx_v_attribute = ((PyObject*)values[0]); + __pyx_v_length = __Pyx_PyLong_As_int(values[1]); if (unlikely((__pyx_v_length == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 141, __pyx_L3_error) + __pyx_v_start = ((PyObject*)values[2]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("any_attribute_longer_than", 0, 2, 3, __pyx_nargs); __PYX_ERR(2, 141, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.parser.Selector.any_attribute_longer_than", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_attribute), (&PyUnicode_Type), 1, "attribute", 1))) __PYX_ERR(2, 141, __pyx_L1_error) + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_start), (&PyUnicode_Type), 1, "start", 1))) __PYX_ERR(2, 141, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6parser_8Selector_10any_attribute_longer_than(((struct __pyx_obj_10selectolax_6parser_Selector *)__pyx_v_self), __pyx_v_attribute, __pyx_v_length, __pyx_v_start); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_8Selector_10any_attribute_longer_than(struct __pyx_obj_10selectolax_6parser_Selector *__pyx_v_self, PyObject *__pyx_v_attribute, int __pyx_v_length, PyObject *__pyx_v_start) { + CYTHON_UNUSED PyObject *__pyx_v_nodes = 0; + struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_node = 0; + PyObject *__pyx_v_attr = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + Py_ssize_t __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + size_t __pyx_t_6; + int __pyx_t_7; + int __pyx_t_8; + Py_ssize_t __pyx_t_9; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("any_attribute_longer_than", 0); + + /* "selectolax/modest/selection.pxi":146 + * Similar to `string-length` in XPath. + * """ + * cdef list nodes = [] # <<<<<<<<<<<<<< + * cdef Node node + * for node in self.nodes: +*/ + __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 146, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v_nodes = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* "selectolax/modest/selection.pxi":148 + * cdef list nodes = [] + * cdef Node node + * for node in self.nodes: # <<<<<<<<<<<<<< + * attr = node.attributes.get(attribute) + * if attr and start and start in attr: +*/ + if (unlikely(__pyx_v_self->nodes == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); + __PYX_ERR(2, 148, __pyx_L1_error) + } + __pyx_t_1 = __pyx_v_self->nodes; __Pyx_INCREF(__pyx_t_1); + __pyx_t_2 = 0; + for (;;) { + { + Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1); + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely((__pyx_temp < 0))) __PYX_ERR(2, 148, __pyx_L1_error) + #endif + if (__pyx_t_2 >= __pyx_temp) break; + } + __pyx_t_3 = __Pyx_PyList_GetItemRefFast(__pyx_t_1, __pyx_t_2, __Pyx_ReferenceSharing_OwnStrongReference); + ++__pyx_t_2; + if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 148, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_mstate_global->__pyx_ptype_10selectolax_6parser_Node))))) __PYX_ERR(2, 148, __pyx_L1_error) + __Pyx_XDECREF_SET(__pyx_v_node, ((struct __pyx_obj_10selectolax_6parser_Node *)__pyx_t_3)); + __pyx_t_3 = 0; + + /* "selectolax/modest/selection.pxi":149 + * cdef Node node + * for node in self.nodes: + * attr = node.attributes.get(attribute) # <<<<<<<<<<<<<< + * if attr and start and start in attr: + * attr = attr[attr.find(start) + len(start):] +*/ + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_node), __pyx_mstate_global->__pyx_n_u_attributes); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 149, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_4 = __pyx_t_5; + __Pyx_INCREF(__pyx_t_4); + __pyx_t_6 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_attribute}; + __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_get, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 149, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_XDECREF_SET(__pyx_v_attr, __pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/modest/selection.pxi":150 + * for node in self.nodes: + * attr = node.attributes.get(attribute) + * if attr and start and start in attr: # <<<<<<<<<<<<<< + * attr = attr[attr.find(start) + len(start):] + * if len(attr) > length: +*/ + __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_attr); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(2, 150, __pyx_L1_error) + if (__pyx_t_8) { + } else { + __pyx_t_7 = __pyx_t_8; + goto __pyx_L6_bool_binop_done; + } + if (__pyx_v_start == Py_None) __pyx_t_8 = 0; + else + { + Py_ssize_t __pyx_temp = __Pyx_PyUnicode_IS_TRUE(__pyx_v_start); + if (unlikely(((!CYTHON_ASSUME_SAFE_SIZE) && __pyx_temp < 0))) __PYX_ERR(2, 150, __pyx_L1_error) + __pyx_t_8 = (__pyx_temp != 0); + } + + if (__pyx_t_8) { + } else { + __pyx_t_7 = __pyx_t_8; + goto __pyx_L6_bool_binop_done; + } + __pyx_t_8 = (__Pyx_PySequence_ContainsTF(__pyx_v_start, __pyx_v_attr, Py_EQ)); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(2, 150, __pyx_L1_error) + __pyx_t_7 = __pyx_t_8; + __pyx_L6_bool_binop_done:; + if (__pyx_t_7) { + + /* "selectolax/modest/selection.pxi":151 + * attr = node.attributes.get(attribute) + * if attr and start and start in attr: + * attr = attr[attr.find(start) + len(start):] # <<<<<<<<<<<<<< + * if len(attr) > length: + * return True +*/ + __pyx_t_5 = __pyx_v_attr; + __Pyx_INCREF(__pyx_t_5); + __pyx_t_6 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_start}; + __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_find, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 151, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + if (unlikely(__pyx_v_start == Py_None)) { + PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); + __PYX_ERR(2, 151, __pyx_L1_error) + } + __pyx_t_9 = __Pyx_PyUnicode_GET_LENGTH(__pyx_v_start); if (unlikely(__pyx_t_9 == ((Py_ssize_t)-1))) __PYX_ERR(2, 151, __pyx_L1_error) + __pyx_t_5 = PyLong_FromSsize_t(__pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 151, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_4 = PyNumber_Add(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 151, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = __Pyx_PyObject_GetSlice(__pyx_v_attr, 0, 0, &__pyx_t_4, NULL, NULL, 0, 0, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 151, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF_SET(__pyx_v_attr, __pyx_t_5); + __pyx_t_5 = 0; + + /* "selectolax/modest/selection.pxi":150 + * for node in self.nodes: + * attr = node.attributes.get(attribute) + * if attr and start and start in attr: # <<<<<<<<<<<<<< + * attr = attr[attr.find(start) + len(start):] + * if len(attr) > length: +*/ + } + + /* "selectolax/modest/selection.pxi":152 + * if attr and start and start in attr: + * attr = attr[attr.find(start) + len(start):] + * if len(attr) > length: # <<<<<<<<<<<<<< + * return True + * return False +*/ + __pyx_t_9 = PyObject_Length(__pyx_v_attr); if (unlikely(__pyx_t_9 == ((Py_ssize_t)-1))) __PYX_ERR(2, 152, __pyx_L1_error) + __pyx_t_7 = (__pyx_t_9 > __pyx_v_length); + if (__pyx_t_7) { + + /* "selectolax/modest/selection.pxi":153 + * attr = attr[attr.find(start) + len(start):] + * if len(attr) > length: + * return True # <<<<<<<<<<<<<< + * return False + * +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(Py_True); + __pyx_r = Py_True; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + goto __pyx_L0; + + /* "selectolax/modest/selection.pxi":152 + * if attr and start and start in attr: + * attr = attr[attr.find(start) + len(start):] + * if len(attr) > length: # <<<<<<<<<<<<<< + * return True + * return False +*/ + } + + /* "selectolax/modest/selection.pxi":148 + * cdef list nodes = [] + * cdef Node node + * for node in self.nodes: # <<<<<<<<<<<<<< + * attr = node.attributes.get(attribute) + * if attr and start and start in attr: +*/ + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "selectolax/modest/selection.pxi":154 + * if len(attr) > length: + * return True + * return False # <<<<<<<<<<<<<< + * + * def __bool__(self): +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(Py_False); + __pyx_r = Py_False; + goto __pyx_L0; + + /* "selectolax/modest/selection.pxi":141 + * return self + * + * def any_attribute_longer_than(self, str attribute, int length, str start = None): # <<<<<<<<<<<<<< + * """Returns True any href attribute longer than a specified length. + * +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_AddTraceback("selectolax.parser.Selector.any_attribute_longer_than", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_nodes); + __Pyx_XDECREF((PyObject *)__pyx_v_node); + __Pyx_XDECREF(__pyx_v_attr); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/modest/selection.pxi":156 + * return False + * + * def __bool__(self): # <<<<<<<<<<<<<< + * return bool(self.nodes) + * +*/ + +/* Python wrapper */ +static int __pyx_pw_10selectolax_6parser_8Selector_13__bool__(PyObject *__pyx_v_self); /*proto*/ +static int __pyx_pw_10selectolax_6parser_8Selector_13__bool__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__bool__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6parser_8Selector_12__bool__(((struct __pyx_obj_10selectolax_6parser_Selector *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_10selectolax_6parser_8Selector_12__bool__(struct __pyx_obj_10selectolax_6parser_Selector *__pyx_v_self) { + int __pyx_r; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + size_t __pyx_t_3; + int __pyx_t_4; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__bool__", 0); + + /* "selectolax/modest/selection.pxi":157 + * + * def __bool__(self): + * return bool(self.nodes) # <<<<<<<<<<<<<< + * + * cdef find_nodes(HTMLParser parser, myhtml_tree_node_t *node, str query): +*/ + __pyx_t_2 = NULL; + __pyx_t_3 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_self->nodes}; + __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_7cpython_4bool_bool, __pyx_callargs+__pyx_t_3, (2-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 157, __pyx_L1_error) + __Pyx_GOTREF((PyObject *)__pyx_t_1); + } + __pyx_t_4 = __Pyx_PyLong_As_int(((PyObject *)__pyx_t_1)); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 157, __pyx_L1_error) + __Pyx_DECREF((PyObject *)__pyx_t_1); __pyx_t_1 = 0; + __pyx_r = __pyx_t_4; + goto __pyx_L0; + + /* "selectolax/modest/selection.pxi":156 + * return False + * + * def __bool__(self): # <<<<<<<<<<<<<< + * return bool(self.nodes) + * +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("selectolax.parser.Selector.__bool__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * cdef tuple state + * cdef object _dict +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_8Selector_15__reduce_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6parser_8Selector_14__reduce_cython__, "Selector.__reduce_cython__(self)"); +static PyMethodDef __pyx_mdef_10selectolax_6parser_8Selector_15__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_8Selector_15__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_8Selector_14__reduce_cython__}; +static PyObject *__pyx_pw_10selectolax_6parser_8Selector_15__reduce_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL; } + const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len < 0)) return NULL; + if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;} + __pyx_r = __pyx_pf_10selectolax_6parser_8Selector_14__reduce_cython__(((struct __pyx_obj_10selectolax_6parser_Selector *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_8Selector_14__reduce_cython__(struct __pyx_obj_10selectolax_6parser_Selector *__pyx_v_self) { + PyObject *__pyx_v_state = 0; + PyObject *__pyx_v__dict = 0; + int __pyx_v_use_setstate; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + int __pyx_t_3; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__reduce_cython__", 0); + + /* "(tree fragment)":5 + * cdef object _dict + * cdef bint use_setstate + * state = (self.node, self.nodes) # <<<<<<<<<<<<<< + * _dict = getattr(self, '__dict__', None) + * if _dict is not None and _dict: +*/ + __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF((PyObject *)__pyx_v_self->node); + __Pyx_GIVEREF((PyObject *)__pyx_v_self->node); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_self->node)) != (0)) __PYX_ERR(1, 5, __pyx_L1_error); + __Pyx_INCREF(__pyx_v_self->nodes); + __Pyx_GIVEREF(__pyx_v_self->nodes); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_self->nodes) != (0)) __PYX_ERR(1, 5, __pyx_L1_error); + __pyx_v_state = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* "(tree fragment)":6 + * cdef bint use_setstate + * state = (self.node, self.nodes) + * _dict = getattr(self, '__dict__', None) # <<<<<<<<<<<<<< + * if _dict is not None and _dict: + * state += (_dict,) +*/ + __pyx_t_1 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_dict, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v__dict = __pyx_t_1; + __pyx_t_1 = 0; + + /* "(tree fragment)":7 + * state = (self.node, self.nodes) + * _dict = getattr(self, '__dict__', None) + * if _dict is not None and _dict: # <<<<<<<<<<<<<< + * state += (_dict,) + * use_setstate = True +*/ + __pyx_t_3 = (__pyx_v__dict != Py_None); + if (__pyx_t_3) { + } else { + __pyx_t_2 = __pyx_t_3; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v__dict); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(1, 7, __pyx_L1_error) + __pyx_t_2 = __pyx_t_3; + __pyx_L4_bool_binop_done:; + if (__pyx_t_2) { + + /* "(tree fragment)":8 + * _dict = getattr(self, '__dict__', None) + * if _dict is not None and _dict: + * state += (_dict,) # <<<<<<<<<<<<<< + * use_setstate = True + * else: +*/ + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 8, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(__pyx_v__dict); + __Pyx_GIVEREF(__pyx_v__dict); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v__dict) != (0)) __PYX_ERR(1, 8, __pyx_L1_error); + __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 8, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_4)); + __pyx_t_4 = 0; + + /* "(tree fragment)":9 + * if _dict is not None and _dict: + * state += (_dict,) + * use_setstate = True # <<<<<<<<<<<<<< + * else: + * use_setstate = ('self.node is not None or self.nodes is not None',) +*/ + __pyx_v_use_setstate = 1; + + /* "(tree fragment)":7 + * state = (self.node, self.nodes) + * _dict = getattr(self, '__dict__', None) + * if _dict is not None and _dict: # <<<<<<<<<<<<<< + * state += (_dict,) + * use_setstate = True +*/ + goto __pyx_L3; + } + + /* "(tree fragment)":11 + * use_setstate = True + * else: + * use_setstate = ('self.node is not None or self.nodes is not None',) # <<<<<<<<<<<<<< + * if use_setstate: + * return __pyx_unpickle_Selector, (type(self), 0xc5dfe7e, None), state +*/ + /*else*/ { + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_mstate_global->__pyx_tuple[0]); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 11, __pyx_L1_error) + __pyx_v_use_setstate = __pyx_t_2; + } + __pyx_L3:; + + /* "(tree fragment)":12 + * else: + * use_setstate = ('self.node is not None or self.nodes is not None',) + * if use_setstate: # <<<<<<<<<<<<<< + * return __pyx_unpickle_Selector, (type(self), 0xc5dfe7e, None), state + * else: +*/ + if (__pyx_v_use_setstate) { + + /* "(tree fragment)":13 + * use_setstate = ('self.node is not None or self.nodes is not None',) + * if use_setstate: + * return __pyx_unpickle_Selector, (type(self), 0xc5dfe7e, None), state # <<<<<<<<<<<<<< + * else: + * return __pyx_unpickle_Selector, (type(self), 0xc5dfe7e, state) +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_pyx_unpickle_Selector); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); + __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))) != (0)) __PYX_ERR(1, 13, __pyx_L1_error); + __Pyx_INCREF(__pyx_mstate_global->__pyx_int_207486590); + __Pyx_GIVEREF(__pyx_mstate_global->__pyx_int_207486590); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_mstate_global->__pyx_int_207486590) != (0)) __PYX_ERR(1, 13, __pyx_L1_error); + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 2, Py_None) != (0)) __PYX_ERR(1, 13, __pyx_L1_error); + __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_GIVEREF(__pyx_t_4); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4) != (0)) __PYX_ERR(1, 13, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_1); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_1) != (0)) __PYX_ERR(1, 13, __pyx_L1_error); + __Pyx_INCREF(__pyx_v_state); + __Pyx_GIVEREF(__pyx_v_state); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_v_state) != (0)) __PYX_ERR(1, 13, __pyx_L1_error); + __pyx_t_4 = 0; + __pyx_t_1 = 0; + __pyx_r = __pyx_t_5; + __pyx_t_5 = 0; + goto __pyx_L0; + + /* "(tree fragment)":12 + * else: + * use_setstate = ('self.node is not None or self.nodes is not None',) + * if use_setstate: # <<<<<<<<<<<<<< + * return __pyx_unpickle_Selector, (type(self), 0xc5dfe7e, None), state + * else: +*/ + } + + /* "(tree fragment)":15 + * return __pyx_unpickle_Selector, (type(self), 0xc5dfe7e, None), state + * else: + * return __pyx_unpickle_Selector, (type(self), 0xc5dfe7e, state) # <<<<<<<<<<<<<< + * def __setstate_cython__(self, __pyx_state): + * __pyx_unpickle_Selector__set_state(self, __pyx_state) +*/ + /*else*/ { + __Pyx_XDECREF(__pyx_r); + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_pyx_unpickle_Selector); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 15, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); + __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))) != (0)) __PYX_ERR(1, 15, __pyx_L1_error); + __Pyx_INCREF(__pyx_mstate_global->__pyx_int_207486590); + __Pyx_GIVEREF(__pyx_mstate_global->__pyx_int_207486590); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_mstate_global->__pyx_int_207486590) != (0)) __PYX_ERR(1, 15, __pyx_L1_error); + __Pyx_INCREF(__pyx_v_state); + __Pyx_GIVEREF(__pyx_v_state); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_state) != (0)) __PYX_ERR(1, 15, __pyx_L1_error); + __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 15, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_5); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5) != (0)) __PYX_ERR(1, 15, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_1); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1) != (0)) __PYX_ERR(1, 15, __pyx_L1_error); + __pyx_t_5 = 0; + __pyx_t_1 = 0; + __pyx_r = __pyx_t_4; + __pyx_t_4 = 0; + goto __pyx_L0; + } + + /* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * cdef tuple state + * cdef object _dict +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_AddTraceback("selectolax.parser.Selector.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_state); + __Pyx_XDECREF(__pyx_v__dict); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":16 + * else: + * return __pyx_unpickle_Selector, (type(self), 0xc5dfe7e, state) + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * __pyx_unpickle_Selector__set_state(self, __pyx_state) +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_8Selector_17__setstate_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6parser_8Selector_16__setstate_cython__, "Selector.__setstate_cython__(self, __pyx_state)"); +static PyMethodDef __pyx_mdef_10selectolax_6parser_8Selector_17__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_8Selector_17__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_8Selector_16__setstate_cython__}; +static PyObject *__pyx_pw_10selectolax_6parser_8Selector_17__setstate_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v___pyx_state = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_state,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 16, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 16, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < (0)) __PYX_ERR(1, 16, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 16, __pyx_L3_error) } + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 16, __pyx_L3_error) + } + __pyx_v___pyx_state = values[0]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 16, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.parser.Selector.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_10selectolax_6parser_8Selector_16__setstate_cython__(((struct __pyx_obj_10selectolax_6parser_Selector *)__pyx_v_self), __pyx_v___pyx_state); + + /* function exit code */ + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_8Selector_16__setstate_cython__(struct __pyx_obj_10selectolax_6parser_Selector *__pyx_v_self, PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__setstate_cython__", 0); + + /* "(tree fragment)":17 + * return __pyx_unpickle_Selector, (type(self), 0xc5dfe7e, state) + * def __setstate_cython__(self, __pyx_state): + * __pyx_unpickle_Selector__set_state(self, __pyx_state) # <<<<<<<<<<<<<< +*/ + __pyx_t_1 = __pyx_f_10selectolax_6parser___pyx_unpickle_Selector__set_state(__pyx_v_self, __pyx_v___pyx_state); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "(tree fragment)":16 + * else: + * return __pyx_unpickle_Selector, (type(self), 0xc5dfe7e, state) + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * __pyx_unpickle_Selector__set_state(self, __pyx_state) +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("selectolax.parser.Selector.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/modest/selection.pxi":159 + * return bool(self.nodes) + * + * cdef find_nodes(HTMLParser parser, myhtml_tree_node_t *node, str query): # <<<<<<<<<<<<<< + * cdef myhtml_collection_t *collection + * cdef CSSSelector selector = CSSSelector(query) +*/ + +static PyObject *__pyx_f_10selectolax_6parser_find_nodes(struct __pyx_obj_10selectolax_6parser_HTMLParser *__pyx_v_parser, myhtml_tree_node_t *__pyx_v_node, PyObject *__pyx_v_query) { + myhtml_collection_t *__pyx_v_collection; + struct __pyx_obj_10selectolax_6parser_CSSSelector *__pyx_v_selector = 0; + struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_n = 0; + PyObject *__pyx_v_result = 0; + size_t __pyx_v_i; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + size_t __pyx_t_3; + myhtml_collection_t *__pyx_t_4; + int __pyx_t_5; + size_t __pyx_t_6; + size_t __pyx_t_7; + int __pyx_t_8; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("find_nodes", 0); + + /* "selectolax/modest/selection.pxi":161 + * cdef find_nodes(HTMLParser parser, myhtml_tree_node_t *node, str query): + * cdef myhtml_collection_t *collection + * cdef CSSSelector selector = CSSSelector(query) # <<<<<<<<<<<<<< + * cdef Node n + * cdef list result = [] +*/ + __pyx_t_2 = NULL; + __pyx_t_3 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_query}; + __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_10selectolax_6parser_CSSSelector, __pyx_callargs+__pyx_t_3, (2-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 161, __pyx_L1_error) + __Pyx_GOTREF((PyObject *)__pyx_t_1); + } + __pyx_v_selector = ((struct __pyx_obj_10selectolax_6parser_CSSSelector *)__pyx_t_1); + __pyx_t_1 = 0; + + /* "selectolax/modest/selection.pxi":163 + * cdef CSSSelector selector = CSSSelector(query) + * cdef Node n + * cdef list result = [] # <<<<<<<<<<<<<< + * collection = selector.find(node) + * +*/ + __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 163, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v_result = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* "selectolax/modest/selection.pxi":164 + * cdef Node n + * cdef list result = [] + * collection = selector.find(node) # <<<<<<<<<<<<<< + * + * if collection == NULL: +*/ + __pyx_t_4 = __pyx_f_10selectolax_6parser_11CSSSelector_find(__pyx_v_selector, __pyx_v_node); if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 164, __pyx_L1_error) + __pyx_v_collection = __pyx_t_4; + + /* "selectolax/modest/selection.pxi":166 + * collection = selector.find(node) + * + * if collection == NULL: # <<<<<<<<<<<<<< + * return result + * +*/ + __pyx_t_5 = (__pyx_v_collection == NULL); + if (__pyx_t_5) { + + /* "selectolax/modest/selection.pxi":167 + * + * if collection == NULL: + * return result # <<<<<<<<<<<<<< + * + * for i in range(collection.length): +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_result); + __pyx_r = __pyx_v_result; + goto __pyx_L0; + + /* "selectolax/modest/selection.pxi":166 + * collection = selector.find(node) + * + * if collection == NULL: # <<<<<<<<<<<<<< + * return result + * +*/ + } + + /* "selectolax/modest/selection.pxi":169 + * return result + * + * for i in range(collection.length): # <<<<<<<<<<<<<< + * n = Node.new(collection.list[i], parser) + * result.append(n) +*/ + __pyx_t_3 = __pyx_v_collection->length; + __pyx_t_6 = __pyx_t_3; + for (__pyx_t_7 = 0; __pyx_t_7 < __pyx_t_6; __pyx_t_7+=1) { + __pyx_v_i = __pyx_t_7; + + /* "selectolax/modest/selection.pxi":170 + * + * for i in range(collection.length): + * n = Node.new(collection.list[i], parser) # <<<<<<<<<<<<<< + * result.append(n) + * myhtml_collection_destroy(collection) +*/ + __pyx_t_1 = ((PyObject *)__pyx_f_10selectolax_6parser_4Node_new((__pyx_v_collection->list[__pyx_v_i]), __pyx_v_parser)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 170, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_XDECREF_SET(__pyx_v_n, ((struct __pyx_obj_10selectolax_6parser_Node *)__pyx_t_1)); + __pyx_t_1 = 0; + + /* "selectolax/modest/selection.pxi":171 + * for i in range(collection.length): + * n = Node.new(collection.list[i], parser) + * result.append(n) # <<<<<<<<<<<<<< + * myhtml_collection_destroy(collection) + * return result +*/ + __pyx_t_8 = __Pyx_PyList_Append(__pyx_v_result, ((PyObject *)__pyx_v_n)); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(2, 171, __pyx_L1_error) + } + + /* "selectolax/modest/selection.pxi":172 + * n = Node.new(collection.list[i], parser) + * result.append(n) + * myhtml_collection_destroy(collection) # <<<<<<<<<<<<<< + * return result + * +*/ + (void)(myhtml_collection_destroy(__pyx_v_collection)); + + /* "selectolax/modest/selection.pxi":173 + * result.append(n) + * myhtml_collection_destroy(collection) + * return result # <<<<<<<<<<<<<< + * + * +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_result); + __pyx_r = __pyx_v_result; + goto __pyx_L0; + + /* "selectolax/modest/selection.pxi":159 + * return bool(self.nodes) + * + * cdef find_nodes(HTMLParser parser, myhtml_tree_node_t *node, str query): # <<<<<<<<<<<<<< + * cdef myhtml_collection_t *collection + * cdef CSSSelector selector = CSSSelector(query) +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("selectolax.parser.find_nodes", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF((PyObject *)__pyx_v_selector); + __Pyx_XDECREF((PyObject *)__pyx_v_n); + __Pyx_XDECREF(__pyx_v_result); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/modest/selection.pxi":176 + * + * + * cdef bool find_matches(HTMLParser parser, myhtml_tree_node_t *node, tuple selectors): # <<<<<<<<<<<<<< + * cdef myhtml_collection_t *collection + * cdef CSSSelector selector +*/ + +static PyLongObject *__pyx_f_10selectolax_6parser_find_matches(CYTHON_UNUSED struct __pyx_obj_10selectolax_6parser_HTMLParser *__pyx_v_parser, myhtml_tree_node_t *__pyx_v_node, PyObject *__pyx_v_selectors) { + myhtml_collection_t *__pyx_v_collection; + struct __pyx_obj_10selectolax_6parser_CSSSelector *__pyx_v_selector = 0; + int __pyx_v_collection_size; + PyObject *__pyx_v_query = 0; + PyLongObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + Py_ssize_t __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + size_t __pyx_t_5; + myhtml_collection_t *__pyx_t_6; + int __pyx_t_7; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("find_matches", 0); + + /* "selectolax/modest/selection.pxi":182 + * cdef str query + * + * for query in selectors: # <<<<<<<<<<<<<< + * selector = CSSSelector(query) + * collection_size = 0 +*/ + if (unlikely(__pyx_v_selectors == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); + __PYX_ERR(2, 182, __pyx_L1_error) + } + __pyx_t_1 = __pyx_v_selectors; __Pyx_INCREF(__pyx_t_1); + __pyx_t_2 = 0; + for (;;) { + { + Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1); + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely((__pyx_temp < 0))) __PYX_ERR(2, 182, __pyx_L1_error) + #endif + if (__pyx_t_2 >= __pyx_temp) break; + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_3 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2)); + #else + __pyx_t_3 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); + #endif + ++__pyx_t_2; + if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 182, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (!(likely(PyUnicode_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_3))) __PYX_ERR(2, 182, __pyx_L1_error) + __Pyx_XDECREF_SET(__pyx_v_query, ((PyObject*)__pyx_t_3)); + __pyx_t_3 = 0; + + /* "selectolax/modest/selection.pxi":183 + * + * for query in selectors: + * selector = CSSSelector(query) # <<<<<<<<<<<<<< + * collection_size = 0 + * collection = NULL +*/ + __pyx_t_4 = NULL; + __pyx_t_5 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_query}; + __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_10selectolax_6parser_CSSSelector, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 183, __pyx_L1_error) + __Pyx_GOTREF((PyObject *)__pyx_t_3); + } + __Pyx_XDECREF_SET(__pyx_v_selector, ((struct __pyx_obj_10selectolax_6parser_CSSSelector *)__pyx_t_3)); + __pyx_t_3 = 0; + + /* "selectolax/modest/selection.pxi":184 + * for query in selectors: + * selector = CSSSelector(query) + * collection_size = 0 # <<<<<<<<<<<<<< + * collection = NULL + * +*/ + __pyx_v_collection_size = 0; + + /* "selectolax/modest/selection.pxi":185 + * selector = CSSSelector(query) + * collection_size = 0 + * collection = NULL # <<<<<<<<<<<<<< + * + * collection = selector.find(node) +*/ + __pyx_v_collection = NULL; + + /* "selectolax/modest/selection.pxi":187 + * collection = NULL + * + * collection = selector.find(node) # <<<<<<<<<<<<<< + * if collection == NULL: + * continue +*/ + __pyx_t_6 = __pyx_f_10selectolax_6parser_11CSSSelector_find(__pyx_v_selector, __pyx_v_node); if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 187, __pyx_L1_error) + __pyx_v_collection = __pyx_t_6; + + /* "selectolax/modest/selection.pxi":188 + * + * collection = selector.find(node) + * if collection == NULL: # <<<<<<<<<<<<<< + * continue + * +*/ + __pyx_t_7 = (__pyx_v_collection == NULL); + if (__pyx_t_7) { + + /* "selectolax/modest/selection.pxi":189 + * collection = selector.find(node) + * if collection == NULL: + * continue # <<<<<<<<<<<<<< + * + * collection_size = collection.length +*/ + goto __pyx_L3_continue; + + /* "selectolax/modest/selection.pxi":188 + * + * collection = selector.find(node) + * if collection == NULL: # <<<<<<<<<<<<<< + * continue + * +*/ + } + + /* "selectolax/modest/selection.pxi":191 + * continue + * + * collection_size = collection.length # <<<<<<<<<<<<<< + * myhtml_collection_destroy(collection) + * if collection_size > 0: +*/ + __pyx_t_5 = __pyx_v_collection->length; + __pyx_v_collection_size = __pyx_t_5; + + /* "selectolax/modest/selection.pxi":192 + * + * collection_size = collection.length + * myhtml_collection_destroy(collection) # <<<<<<<<<<<<<< + * if collection_size > 0: + * return True +*/ + (void)(myhtml_collection_destroy(__pyx_v_collection)); + + /* "selectolax/modest/selection.pxi":193 + * collection_size = collection.length + * myhtml_collection_destroy(collection) + * if collection_size > 0: # <<<<<<<<<<<<<< + * return True + * return False +*/ + __pyx_t_7 = (__pyx_v_collection_size > 0); + if (__pyx_t_7) { + + /* "selectolax/modest/selection.pxi":194 + * myhtml_collection_destroy(collection) + * if collection_size > 0: + * return True # <<<<<<<<<<<<<< + * return False +*/ + __Pyx_XDECREF((PyObject *)__pyx_r); + __Pyx_INCREF(Py_True); + __pyx_r = ((PyLongObject *)Py_True); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + goto __pyx_L0; + + /* "selectolax/modest/selection.pxi":193 + * collection_size = collection.length + * myhtml_collection_destroy(collection) + * if collection_size > 0: # <<<<<<<<<<<<<< + * return True + * return False +*/ + } + + /* "selectolax/modest/selection.pxi":182 + * cdef str query + * + * for query in selectors: # <<<<<<<<<<<<<< + * selector = CSSSelector(query) + * collection_size = 0 +*/ + __pyx_L3_continue:; + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "selectolax/modest/selection.pxi":195 + * if collection_size > 0: + * return True + * return False # <<<<<<<<<<<<<< +*/ + __Pyx_XDECREF((PyObject *)__pyx_r); + __Pyx_INCREF(Py_False); + __pyx_r = ((PyLongObject *)Py_False); + goto __pyx_L0; + + /* "selectolax/modest/selection.pxi":176 + * + * + * cdef bool find_matches(HTMLParser parser, myhtml_tree_node_t *node, tuple selectors): # <<<<<<<<<<<<<< + * cdef myhtml_collection_t *collection + * cdef CSSSelector selector +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("selectolax.parser.find_matches", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF((PyObject *)__pyx_v_selector); + __Pyx_XDECREF(__pyx_v_query); + __Pyx_XGIVEREF((PyObject *)__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/modest/node.pxi":16 + * @cython.internal + * cdef class Stack: + * def __cinit__(self, size_t capacity=25): # <<<<<<<<<<<<<< + * self.capacity = capacity + * self.top = 0 +*/ + +/* Python wrapper */ +static int __pyx_pw_10selectolax_6parser_5Stack_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static int __pyx_pw_10selectolax_6parser_5Stack_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + size_t __pyx_v_capacity; + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0); + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1; + #endif + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_capacity,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(3, 16, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(3, 16, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__cinit__", 0) < (0)) __PYX_ERR(3, 16, __pyx_L3_error) + } else { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(3, 16, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + } + if (values[0]) { + __pyx_v_capacity = __Pyx_PyLong_As_size_t(values[0]); if (unlikely((__pyx_v_capacity == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(3, 16, __pyx_L3_error) + } else { + __pyx_v_capacity = ((size_t)25); + } + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 0, 1, __pyx_nargs); __PYX_ERR(3, 16, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.parser.Stack.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return -1; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_10selectolax_6parser_5Stack___cinit__(((struct __pyx_obj_10selectolax_6parser_Stack *)__pyx_v_self), __pyx_v_capacity); + + /* function exit code */ + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_10selectolax_6parser_5Stack___cinit__(struct __pyx_obj_10selectolax_6parser_Stack *__pyx_v_self, size_t __pyx_v_capacity) { + int __pyx_r; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + size_t __pyx_t_4; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__cinit__", 0); + + /* "selectolax/modest/node.pxi":17 + * cdef class Stack: + * def __cinit__(self, size_t capacity=25): + * self.capacity = capacity # <<<<<<<<<<<<<< + * self.top = 0 + * self._stack = malloc(capacity * sizeof(myhtml_tree_node_t)) +*/ + __pyx_v_self->capacity = __pyx_v_capacity; + + /* "selectolax/modest/node.pxi":18 + * def __cinit__(self, size_t capacity=25): + * self.capacity = capacity + * self.top = 0 # <<<<<<<<<<<<<< + * self._stack = malloc(capacity * sizeof(myhtml_tree_node_t)) + * if self._stack == NULL: +*/ + __pyx_v_self->top = 0; + + /* "selectolax/modest/node.pxi":19 + * self.capacity = capacity + * self.top = 0 + * self._stack = malloc(capacity * sizeof(myhtml_tree_node_t)) # <<<<<<<<<<<<<< + * if self._stack == NULL: + * raise MemoryError("Failed to allocate memory for stack") +*/ + __pyx_v_self->_stack = ((myhtml_tree_node_t **)malloc((__pyx_v_capacity * (sizeof(myhtml_tree_node_t))))); + + /* "selectolax/modest/node.pxi":20 + * self.top = 0 + * self._stack = malloc(capacity * sizeof(myhtml_tree_node_t)) + * if self._stack == NULL: # <<<<<<<<<<<<<< + * raise MemoryError("Failed to allocate memory for stack") + * +*/ + __pyx_t_1 = (__pyx_v_self->_stack == NULL); + if (unlikely(__pyx_t_1)) { + + /* "selectolax/modest/node.pxi":21 + * self._stack = malloc(capacity * sizeof(myhtml_tree_node_t)) + * if self._stack == NULL: + * raise MemoryError("Failed to allocate memory for stack") # <<<<<<<<<<<<<< + * + * def __dealloc__(self): +*/ + __pyx_t_3 = NULL; + __pyx_t_4 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_Failed_to_allocate_memory_for_st}; + __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_MemoryError)), __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 21, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + } + __Pyx_Raise(__pyx_t_2, 0, 0, 0); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __PYX_ERR(3, 21, __pyx_L1_error) + + /* "selectolax/modest/node.pxi":20 + * self.top = 0 + * self._stack = malloc(capacity * sizeof(myhtml_tree_node_t)) + * if self._stack == NULL: # <<<<<<<<<<<<<< + * raise MemoryError("Failed to allocate memory for stack") + * +*/ + } + + /* "selectolax/modest/node.pxi":16 + * @cython.internal + * cdef class Stack: + * def __cinit__(self, size_t capacity=25): # <<<<<<<<<<<<<< + * self.capacity = capacity + * self.top = 0 +*/ + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("selectolax.parser.Stack.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/modest/node.pxi":23 + * raise MemoryError("Failed to allocate memory for stack") + * + * def __dealloc__(self): # <<<<<<<<<<<<<< + * free(self._stack) + * +*/ + +/* Python wrapper */ +static void __pyx_pw_10selectolax_6parser_5Stack_3__dealloc__(PyObject *__pyx_v_self); /*proto*/ +static void __pyx_pw_10selectolax_6parser_5Stack_3__dealloc__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_pf_10selectolax_6parser_5Stack_2__dealloc__(((struct __pyx_obj_10selectolax_6parser_Stack *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); +} + +static void __pyx_pf_10selectolax_6parser_5Stack_2__dealloc__(struct __pyx_obj_10selectolax_6parser_Stack *__pyx_v_self) { + + /* "selectolax/modest/node.pxi":24 + * + * def __dealloc__(self): + * free(self._stack) # <<<<<<<<<<<<<< + * + * cdef bint is_empty(self): +*/ + free(__pyx_v_self->_stack); + + /* "selectolax/modest/node.pxi":23 + * raise MemoryError("Failed to allocate memory for stack") + * + * def __dealloc__(self): # <<<<<<<<<<<<<< + * free(self._stack) + * +*/ + + /* function exit code */ +} + +/* "selectolax/modest/node.pxi":26 + * free(self._stack) + * + * cdef bint is_empty(self): # <<<<<<<<<<<<<< + * return self.top <= 0 + * +*/ + +static int __pyx_f_10selectolax_6parser_5Stack_is_empty(struct __pyx_obj_10selectolax_6parser_Stack *__pyx_v_self) { + int __pyx_r; + + /* "selectolax/modest/node.pxi":27 + * + * cdef bint is_empty(self): + * return self.top <= 0 # <<<<<<<<<<<<<< + * + * cdef int push(self, myhtml_tree_node_t* res) except -1: +*/ + __pyx_r = (__pyx_v_self->top <= 0); + goto __pyx_L0; + + /* "selectolax/modest/node.pxi":26 + * free(self._stack) + * + * cdef bint is_empty(self): # <<<<<<<<<<<<<< + * return self.top <= 0 + * +*/ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "selectolax/modest/node.pxi":29 + * return self.top <= 0 + * + * cdef int push(self, myhtml_tree_node_t* res) except -1: # <<<<<<<<<<<<<< + * if self.top >= self.capacity: + * if self.resize() < 0: +*/ + +static int __pyx_f_10selectolax_6parser_5Stack_push(struct __pyx_obj_10selectolax_6parser_Stack *__pyx_v_self, myhtml_tree_node_t *__pyx_v_res) { + int __pyx_r; + int __pyx_t_1; + int __pyx_t_2; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + + /* "selectolax/modest/node.pxi":30 + * + * cdef int push(self, myhtml_tree_node_t* res) except -1: + * if self.top >= self.capacity: # <<<<<<<<<<<<<< + * if self.resize() < 0: + * return -1 +*/ + __pyx_t_1 = (__pyx_v_self->top >= __pyx_v_self->capacity); + if (__pyx_t_1) { + + /* "selectolax/modest/node.pxi":31 + * cdef int push(self, myhtml_tree_node_t* res) except -1: + * if self.top >= self.capacity: + * if self.resize() < 0: # <<<<<<<<<<<<<< + * return -1 + * self._stack[self.top] = res +*/ + __pyx_t_2 = __pyx_f_10selectolax_6parser_5Stack_resize(__pyx_v_self); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(3, 31, __pyx_L1_error) + __pyx_t_1 = (__pyx_t_2 < 0); + if (__pyx_t_1) { + + /* "selectolax/modest/node.pxi":32 + * if self.top >= self.capacity: + * if self.resize() < 0: + * return -1 # <<<<<<<<<<<<<< + * self._stack[self.top] = res + * self.top += 1 +*/ + __pyx_r = -1; + goto __pyx_L0; + + /* "selectolax/modest/node.pxi":31 + * cdef int push(self, myhtml_tree_node_t* res) except -1: + * if self.top >= self.capacity: + * if self.resize() < 0: # <<<<<<<<<<<<<< + * return -1 + * self._stack[self.top] = res +*/ + } + + /* "selectolax/modest/node.pxi":30 + * + * cdef int push(self, myhtml_tree_node_t* res) except -1: + * if self.top >= self.capacity: # <<<<<<<<<<<<<< + * if self.resize() < 0: + * return -1 +*/ + } + + /* "selectolax/modest/node.pxi":33 + * if self.resize() < 0: + * return -1 + * self._stack[self.top] = res # <<<<<<<<<<<<<< + * self.top += 1 + * +*/ + (__pyx_v_self->_stack[__pyx_v_self->top]) = __pyx_v_res; + + /* "selectolax/modest/node.pxi":34 + * return -1 + * self._stack[self.top] = res + * self.top += 1 # <<<<<<<<<<<<<< + * + * cdef myhtml_tree_node_t * pop(self): +*/ + __pyx_v_self->top = (__pyx_v_self->top + 1); + + /* "selectolax/modest/node.pxi":29 + * return self.top <= 0 + * + * cdef int push(self, myhtml_tree_node_t* res) except -1: # <<<<<<<<<<<<<< + * if self.top >= self.capacity: + * if self.resize() < 0: +*/ + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_AddTraceback("selectolax.parser.Stack.push", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + return __pyx_r; +} + +/* "selectolax/modest/node.pxi":36 + * self.top += 1 + * + * cdef myhtml_tree_node_t * pop(self): # <<<<<<<<<<<<<< + * self.top = self.top - 1 + * return self._stack[self.top] +*/ + +static myhtml_tree_node_t *__pyx_f_10selectolax_6parser_5Stack_pop(struct __pyx_obj_10selectolax_6parser_Stack *__pyx_v_self) { + myhtml_tree_node_t *__pyx_r; + + /* "selectolax/modest/node.pxi":37 + * + * cdef myhtml_tree_node_t * pop(self): + * self.top = self.top - 1 # <<<<<<<<<<<<<< + * return self._stack[self.top] + * +*/ + __pyx_v_self->top = (__pyx_v_self->top - 1); + + /* "selectolax/modest/node.pxi":38 + * cdef myhtml_tree_node_t * pop(self): + * self.top = self.top - 1 + * return self._stack[self.top] # <<<<<<<<<<<<<< + * + * cdef int resize(self) except -1: +*/ + __pyx_r = (__pyx_v_self->_stack[__pyx_v_self->top]); + goto __pyx_L0; + + /* "selectolax/modest/node.pxi":36 + * self.top += 1 + * + * cdef myhtml_tree_node_t * pop(self): # <<<<<<<<<<<<<< + * self.top = self.top - 1 + * return self._stack[self.top] +*/ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "selectolax/modest/node.pxi":40 + * return self._stack[self.top] + * + * cdef int resize(self) except -1: # <<<<<<<<<<<<<< + * self.capacity *= 2 + * self._stack = realloc( self._stack, self.capacity * sizeof(myhtml_tree_node_t)) +*/ + +static int __pyx_f_10selectolax_6parser_5Stack_resize(struct __pyx_obj_10selectolax_6parser_Stack *__pyx_v_self) { + int __pyx_r; + int __pyx_t_1; + PyObject *__pyx_t_2; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + + /* "selectolax/modest/node.pxi":41 + * + * cdef int resize(self) except -1: + * self.capacity *= 2 # <<<<<<<<<<<<<< + * self._stack = realloc( self._stack, self.capacity * sizeof(myhtml_tree_node_t)) + * if self._stack == NULL: +*/ + __pyx_v_self->capacity = (__pyx_v_self->capacity * 2); + + /* "selectolax/modest/node.pxi":42 + * cdef int resize(self) except -1: + * self.capacity *= 2 + * self._stack = realloc( self._stack, self.capacity * sizeof(myhtml_tree_node_t)) # <<<<<<<<<<<<<< + * if self._stack == NULL: + * PyErr_NoMemory() +*/ + __pyx_v_self->_stack = ((myhtml_tree_node_t **)realloc(((void *)__pyx_v_self->_stack), (__pyx_v_self->capacity * (sizeof(myhtml_tree_node_t))))); + + /* "selectolax/modest/node.pxi":43 + * self.capacity *= 2 + * self._stack = realloc( self._stack, self.capacity * sizeof(myhtml_tree_node_t)) + * if self._stack == NULL: # <<<<<<<<<<<<<< + * PyErr_NoMemory() + * return -1 +*/ + __pyx_t_1 = (__pyx_v_self->_stack == NULL); + if (__pyx_t_1) { + + /* "selectolax/modest/node.pxi":44 + * self._stack = realloc( self._stack, self.capacity * sizeof(myhtml_tree_node_t)) + * if self._stack == NULL: + * PyErr_NoMemory() # <<<<<<<<<<<<<< + * return -1 + * return 0 +*/ + __pyx_t_2 = PyErr_NoMemory(); if (unlikely(__pyx_t_2 == ((void *)NULL))) __PYX_ERR(3, 44, __pyx_L1_error) + + /* "selectolax/modest/node.pxi":45 + * if self._stack == NULL: + * PyErr_NoMemory() + * return -1 # <<<<<<<<<<<<<< + * return 0 + * +*/ + __pyx_r = -1; + goto __pyx_L0; + + /* "selectolax/modest/node.pxi":43 + * self.capacity *= 2 + * self._stack = realloc( self._stack, self.capacity * sizeof(myhtml_tree_node_t)) + * if self._stack == NULL: # <<<<<<<<<<<<<< + * PyErr_NoMemory() + * return -1 +*/ + } + + /* "selectolax/modest/node.pxi":46 + * PyErr_NoMemory() + * return -1 + * return 0 # <<<<<<<<<<<<<< + * + * cdef class _Attributes: +*/ + __pyx_r = 0; + goto __pyx_L0; + + /* "selectolax/modest/node.pxi":40 + * return self._stack[self.top] + * + * cdef int resize(self) except -1: # <<<<<<<<<<<<<< + * self.capacity *= 2 + * self._stack = realloc( self._stack, self.capacity * sizeof(myhtml_tree_node_t)) +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_AddTraceback("selectolax.parser.Stack.resize", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + return __pyx_r; +} + +/* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" + * def __setstate_cython__(self, __pyx_state): +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_5Stack_5__reduce_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6parser_5Stack_4__reduce_cython__, "Stack.__reduce_cython__(self)"); +static PyMethodDef __pyx_mdef_10selectolax_6parser_5Stack_5__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_5Stack_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_5Stack_4__reduce_cython__}; +static PyObject *__pyx_pw_10selectolax_6parser_5Stack_5__reduce_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL; } + const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len < 0)) return NULL; + if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;} + __pyx_r = __pyx_pf_10selectolax_6parser_5Stack_4__reduce_cython__(((struct __pyx_obj_10selectolax_6parser_Stack *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_5Stack_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_10selectolax_6parser_Stack *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__reduce_cython__", 0); + + /* "(tree fragment)":2 + * def __reduce_cython__(self): + * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" # <<<<<<<<<<<<<< + * def __setstate_cython__(self, __pyx_state): + * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" +*/ + __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), __pyx_mstate_global->__pyx_kp_u_no_default___reduce___due_to_non, 0, 0); + __PYX_ERR(1, 2, __pyx_L1_error) + + /* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" + * def __setstate_cython__(self, __pyx_state): +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_AddTraceback("selectolax.parser.Stack.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":3 + * def __reduce_cython__(self): + * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_5Stack_7__setstate_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6parser_5Stack_6__setstate_cython__, "Stack.__setstate_cython__(self, __pyx_state)"); +static PyMethodDef __pyx_mdef_10selectolax_6parser_5Stack_7__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_5Stack_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_5Stack_6__setstate_cython__}; +static PyObject *__pyx_pw_10selectolax_6parser_5Stack_7__setstate_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_state,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 3, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < (0)) __PYX_ERR(1, 3, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 3, __pyx_L3_error) } + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error) + } + __pyx_v___pyx_state = values[0]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.parser.Stack.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_10selectolax_6parser_5Stack_6__setstate_cython__(((struct __pyx_obj_10selectolax_6parser_Stack *)__pyx_v_self), __pyx_v___pyx_state); + + /* function exit code */ + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_5Stack_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_10selectolax_6parser_Stack *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__setstate_cython__", 0); + + /* "(tree fragment)":4 + * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" + * def __setstate_cython__(self, __pyx_state): + * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" # <<<<<<<<<<<<<< +*/ + __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), __pyx_mstate_global->__pyx_kp_u_no_default___reduce___due_to_non, 0, 0); + __PYX_ERR(1, 4, __pyx_L1_error) + + /* "(tree fragment)":3 + * def __reduce_cython__(self): + * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_AddTraceback("selectolax.parser.Stack.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/modest/node.pxi":53 + * cdef unicode decode_errors + * + * @staticmethod # <<<<<<<<<<<<<< + * cdef _Attributes create(myhtml_tree_node_t *node, unicode decode_errors): + * obj = <_Attributes>_Attributes.__new__(_Attributes) +*/ + +static struct __pyx_obj_10selectolax_6parser__Attributes *__pyx_f_10selectolax_6parser_11_Attributes_create(myhtml_tree_node_t *__pyx_v_node, PyObject *__pyx_v_decode_errors) { + struct __pyx_obj_10selectolax_6parser__Attributes *__pyx_v_obj = NULL; + struct __pyx_obj_10selectolax_6parser__Attributes *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("create", 0); + + /* "selectolax/modest/node.pxi":55 + * @staticmethod + * cdef _Attributes create(myhtml_tree_node_t *node, unicode decode_errors): + * obj = <_Attributes>_Attributes.__new__(_Attributes) # <<<<<<<<<<<<<< + * obj.node = node + * obj.decode_errors = decode_errors +*/ + __pyx_t_1 = ((PyObject *)__pyx_tp_new_10selectolax_6parser__Attributes(((PyTypeObject *)__pyx_mstate_global->__pyx_ptype_10selectolax_6parser__Attributes), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 55, __pyx_L1_error) + __Pyx_GOTREF((PyObject *)__pyx_t_1); + __pyx_t_2 = ((PyObject *)__pyx_t_1); + __Pyx_INCREF(__pyx_t_2); + __Pyx_DECREF((PyObject *)__pyx_t_1); __pyx_t_1 = 0; + __pyx_v_obj = ((struct __pyx_obj_10selectolax_6parser__Attributes *)__pyx_t_2); + __pyx_t_2 = 0; + + /* "selectolax/modest/node.pxi":56 + * cdef _Attributes create(myhtml_tree_node_t *node, unicode decode_errors): + * obj = <_Attributes>_Attributes.__new__(_Attributes) + * obj.node = node # <<<<<<<<<<<<<< + * obj.decode_errors = decode_errors + * return obj +*/ + __pyx_v_obj->node = __pyx_v_node; + + /* "selectolax/modest/node.pxi":57 + * obj = <_Attributes>_Attributes.__new__(_Attributes) + * obj.node = node + * obj.decode_errors = decode_errors # <<<<<<<<<<<<<< + * return obj + * +*/ + __Pyx_INCREF(__pyx_v_decode_errors); + __Pyx_GIVEREF(__pyx_v_decode_errors); + __Pyx_GOTREF(__pyx_v_obj->decode_errors); + __Pyx_DECREF(__pyx_v_obj->decode_errors); + __pyx_v_obj->decode_errors = __pyx_v_decode_errors; + + /* "selectolax/modest/node.pxi":58 + * obj.node = node + * obj.decode_errors = decode_errors + * return obj # <<<<<<<<<<<<<< + * + * def __iter__(self): +*/ + __Pyx_XDECREF((PyObject *)__pyx_r); + __Pyx_INCREF((PyObject *)__pyx_v_obj); + __pyx_r = __pyx_v_obj; + goto __pyx_L0; + + /* "selectolax/modest/node.pxi":53 + * cdef unicode decode_errors + * + * @staticmethod # <<<<<<<<<<<<<< + * cdef _Attributes create(myhtml_tree_node_t *node, unicode decode_errors): + * obj = <_Attributes>_Attributes.__new__(_Attributes) +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("selectolax.parser._Attributes.create", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF((PyObject *)__pyx_v_obj); + __Pyx_XGIVEREF((PyObject *)__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} +static PyObject *__pyx_gb_10selectolax_6parser_11_Attributes_2generator(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ + +/* "selectolax/modest/node.pxi":60 + * return obj + * + * def __iter__(self): # <<<<<<<<<<<<<< + * cdef myhtml_tree_attr_t *attr = myhtml_node_attribute_first(self.node) + * while attr: +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_11_Attributes_1__iter__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_10selectolax_6parser_11_Attributes_1__iter__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__iter__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6parser_11_Attributes___iter__(((struct __pyx_obj_10selectolax_6parser__Attributes *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_11_Attributes___iter__(struct __pyx_obj_10selectolax_6parser__Attributes *__pyx_v_self) { + struct __pyx_obj_10selectolax_6parser___pyx_scope_struct____iter__ *__pyx_cur_scope; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__iter__", 0); + __pyx_cur_scope = (struct __pyx_obj_10selectolax_6parser___pyx_scope_struct____iter__ *)__pyx_tp_new_10selectolax_6parser___pyx_scope_struct____iter__(__pyx_mstate_global->__pyx_ptype_10selectolax_6parser___pyx_scope_struct____iter__, __pyx_mstate_global->__pyx_empty_tuple, NULL); + if (unlikely(!__pyx_cur_scope)) { + __pyx_cur_scope = ((struct __pyx_obj_10selectolax_6parser___pyx_scope_struct____iter__ *)Py_None); + __Pyx_INCREF(Py_None); + __PYX_ERR(3, 60, __pyx_L1_error) + } else { + __Pyx_GOTREF((PyObject *)__pyx_cur_scope); + } + __pyx_cur_scope->__pyx_v_self = __pyx_v_self; + __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self); + __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self); + { + __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_10selectolax_6parser_11_Attributes_2generator, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[0]), (PyObject *) __pyx_cur_scope, __pyx_mstate_global->__pyx_n_u_iter, __pyx_mstate_global->__pyx_n_u_Attributes___iter, __pyx_mstate_global->__pyx_n_u_selectolax_parser); if (unlikely(!gen)) __PYX_ERR(3, 60, __pyx_L1_error) + __Pyx_DECREF(__pyx_cur_scope); + __Pyx_RefNannyFinishContext(); + return (PyObject *) gen; + } + + /* function exit code */ + __pyx_L1_error:; + __Pyx_AddTraceback("selectolax.parser._Attributes.__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_DECREF((PyObject *)__pyx_cur_scope); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_gb_10selectolax_6parser_11_Attributes_2generator(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ +{ + struct __pyx_obj_10selectolax_6parser___pyx_scope_struct____iter__ *__pyx_cur_scope = ((struct __pyx_obj_10selectolax_6parser___pyx_scope_struct____iter__ *)__pyx_generator->closure); + PyObject *__pyx_r = NULL; + int __pyx_t_1; + myhtml_tree_attr_t *__pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + size_t __pyx_t_6; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__iter__", 0); + switch (__pyx_generator->resume_label) { + case 0: goto __pyx_L3_first_run; + case 1: goto __pyx_L7_resume_from_yield; + default: /* CPython raises the right error here */ + __Pyx_RefNannyFinishContext(); + return NULL; + } + __pyx_L3_first_run:; + if (unlikely(__pyx_sent_value != Py_None)) { + if (unlikely(__pyx_sent_value)) PyErr_SetString(PyExc_TypeError, "can't send non-None value to a just-started generator"); + __PYX_ERR(3, 60, __pyx_L1_error) + } + + /* "selectolax/modest/node.pxi":61 + * + * def __iter__(self): + * cdef myhtml_tree_attr_t *attr = myhtml_node_attribute_first(self.node) # <<<<<<<<<<<<<< + * while attr: + * if attr.key.data == NULL: +*/ + __pyx_cur_scope->__pyx_v_attr = myhtml_node_attribute_first(__pyx_cur_scope->__pyx_v_self->node); + + /* "selectolax/modest/node.pxi":62 + * def __iter__(self): + * cdef myhtml_tree_attr_t *attr = myhtml_node_attribute_first(self.node) + * while attr: # <<<<<<<<<<<<<< + * if attr.key.data == NULL: + * attr = attr.next +*/ + while (1) { + __pyx_t_1 = (__pyx_cur_scope->__pyx_v_attr != 0); + if (!__pyx_t_1) break; + + /* "selectolax/modest/node.pxi":63 + * cdef myhtml_tree_attr_t *attr = myhtml_node_attribute_first(self.node) + * while attr: + * if attr.key.data == NULL: # <<<<<<<<<<<<<< + * attr = attr.next + * continue +*/ + __pyx_t_1 = (__pyx_cur_scope->__pyx_v_attr->key.data == NULL); + if (__pyx_t_1) { + + /* "selectolax/modest/node.pxi":64 + * while attr: + * if attr.key.data == NULL: + * attr = attr.next # <<<<<<<<<<<<<< + * continue + * key = attr.key.data.decode(_ENCODING, self.decode_errors) +*/ + __pyx_t_2 = __pyx_cur_scope->__pyx_v_attr->next; + __pyx_cur_scope->__pyx_v_attr = __pyx_t_2; + + /* "selectolax/modest/node.pxi":65 + * if attr.key.data == NULL: + * attr = attr.next + * continue # <<<<<<<<<<<<<< + * key = attr.key.data.decode(_ENCODING, self.decode_errors) + * attr = attr.next +*/ + goto __pyx_L4_continue; + + /* "selectolax/modest/node.pxi":63 + * cdef myhtml_tree_attr_t *attr = myhtml_node_attribute_first(self.node) + * while attr: + * if attr.key.data == NULL: # <<<<<<<<<<<<<< + * attr = attr.next + * continue +*/ + } + + /* "selectolax/modest/node.pxi":66 + * attr = attr.next + * continue + * key = attr.key.data.decode(_ENCODING, self.decode_errors) # <<<<<<<<<<<<<< + * attr = attr.next + * yield key +*/ + __pyx_t_5 = __Pyx_PyBytes_FromString(__pyx_cur_scope->__pyx_v_attr->key.data); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 66, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_4 = __pyx_t_5; + __Pyx_INCREF(__pyx_t_4); + __pyx_t_6 = 0; + { + PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_UTF_8, __pyx_cur_scope->__pyx_v_self->decode_errors}; + __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_decode, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 66, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_key); + __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_key, __pyx_t_3); + __Pyx_GIVEREF(__pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/modest/node.pxi":67 + * continue + * key = attr.key.data.decode(_ENCODING, self.decode_errors) + * attr = attr.next # <<<<<<<<<<<<<< + * yield key + * +*/ + __pyx_t_2 = __pyx_cur_scope->__pyx_v_attr->next; + __pyx_cur_scope->__pyx_v_attr = __pyx_t_2; + + /* "selectolax/modest/node.pxi":68 + * key = attr.key.data.decode(_ENCODING, self.decode_errors) + * attr = attr.next + * yield key # <<<<<<<<<<<<<< + * + * def __setitem__(self, str key, value): +*/ + __Pyx_INCREF(__pyx_cur_scope->__pyx_v_key); + __pyx_r = __pyx_cur_scope->__pyx_v_key; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, yielding value */ + __pyx_generator->resume_label = 1; + return __pyx_r; + __pyx_L7_resume_from_yield:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(3, 68, __pyx_L1_error) + __pyx_L4_continue:; + } + CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); + + /* "selectolax/modest/node.pxi":60 + * return obj + * + * def __iter__(self): # <<<<<<<<<<<<<< + * cdef myhtml_tree_attr_t *attr = myhtml_node_attribute_first(self.node) + * while attr: +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + if (__Pyx_PyErr_Occurred()) { + __Pyx_Generator_Replace_StopIteration(0); + __Pyx_AddTraceback("__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename); + } + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + #if !CYTHON_USE_EXC_INFO_STACK + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + #endif + __pyx_generator->resume_label = -1; + __Pyx_Coroutine_clear((PyObject*)__pyx_generator); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/modest/node.pxi":70 + * yield key + * + * def __setitem__(self, str key, value): # <<<<<<<<<<<<<< + * value = str(value) + * bytes_key = key.encode(_ENCODING) +*/ + +/* Python wrapper */ +static int __pyx_pw_10selectolax_6parser_11_Attributes_4__setitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_10selectolax_6parser_11_Attributes_4__setitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_value) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__setitem__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_key), (&PyUnicode_Type), 1, "key", 1))) __PYX_ERR(3, 70, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6parser_11_Attributes_3__setitem__(((struct __pyx_obj_10selectolax_6parser__Attributes *)__pyx_v_self), ((PyObject*)__pyx_v_key), ((PyObject *)__pyx_v_value)); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = -1; + goto __pyx_L5_cleaned_up; + __pyx_L0:; + __pyx_L5_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_10selectolax_6parser_11_Attributes_3__setitem__(struct __pyx_obj_10selectolax_6parser__Attributes *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_value) { + PyObject *__pyx_v_bytes_key = NULL; + PyObject *__pyx_v_bytes_value = NULL; + int __pyx_r; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + size_t __pyx_t_3; + char *__pyx_t_4; + Py_ssize_t __pyx_t_5; + char *__pyx_t_6; + Py_ssize_t __pyx_t_7; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__setitem__", 0); + __Pyx_INCREF(__pyx_v_value); + + /* "selectolax/modest/node.pxi":71 + * + * def __setitem__(self, str key, value): + * value = str(value) # <<<<<<<<<<<<<< + * bytes_key = key.encode(_ENCODING) + * bytes_value = value.encode(_ENCODING) +*/ + __pyx_t_1 = __Pyx_PyObject_Unicode(__pyx_v_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 71, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF_SET(__pyx_v_value, __pyx_t_1); + __pyx_t_1 = 0; + + /* "selectolax/modest/node.pxi":72 + * def __setitem__(self, str key, value): + * value = str(value) + * bytes_key = key.encode(_ENCODING) # <<<<<<<<<<<<<< + * bytes_value = value.encode(_ENCODING) + * myhtml_attribute_remove_by_key(self.node, bytes_key, len(bytes_key)) +*/ + if (unlikely(__pyx_v_key == Py_None)) { + PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "encode"); + __PYX_ERR(3, 72, __pyx_L1_error) + } + __pyx_t_1 = PyUnicode_AsUTF8String(__pyx_v_key); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 72, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v_bytes_key = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* "selectolax/modest/node.pxi":73 + * value = str(value) + * bytes_key = key.encode(_ENCODING) + * bytes_value = value.encode(_ENCODING) # <<<<<<<<<<<<<< + * myhtml_attribute_remove_by_key(self.node, bytes_key, len(bytes_key)) + * myhtml_attribute_add(self.node, bytes_key, len(bytes_key), bytes_value, len(bytes_value), +*/ + __pyx_t_2 = __pyx_v_value; + __Pyx_INCREF(__pyx_t_2); + __pyx_t_3 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_UTF_8}; + __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_encode, __pyx_callargs+__pyx_t_3, (2-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 73, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __pyx_v_bytes_value = __pyx_t_1; + __pyx_t_1 = 0; + + /* "selectolax/modest/node.pxi":74 + * bytes_key = key.encode(_ENCODING) + * bytes_value = value.encode(_ENCODING) + * myhtml_attribute_remove_by_key(self.node, bytes_key, len(bytes_key)) # <<<<<<<<<<<<<< + * myhtml_attribute_add(self.node, bytes_key, len(bytes_key), bytes_value, len(bytes_value), + * MyENCODING_UTF_8) +*/ + __pyx_t_4 = __Pyx_PyBytes_AsWritableString(__pyx_v_bytes_key); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(3, 74, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyBytes_GET_SIZE(__pyx_v_bytes_key); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(3, 74, __pyx_L1_error) + (void)(myhtml_attribute_remove_by_key(__pyx_v_self->node, ((char *)__pyx_t_4), __pyx_t_5)); + + /* "selectolax/modest/node.pxi":75 + * bytes_value = value.encode(_ENCODING) + * myhtml_attribute_remove_by_key(self.node, bytes_key, len(bytes_key)) + * myhtml_attribute_add(self.node, bytes_key, len(bytes_key), bytes_value, len(bytes_value), # <<<<<<<<<<<<<< + * MyENCODING_UTF_8) + * +*/ + __pyx_t_4 = __Pyx_PyBytes_AsWritableString(__pyx_v_bytes_key); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(3, 75, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyBytes_GET_SIZE(__pyx_v_bytes_key); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(3, 75, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_AsWritableString(__pyx_v_bytes_value); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(3, 75, __pyx_L1_error) + __pyx_t_7 = PyObject_Length(__pyx_v_bytes_value); if (unlikely(__pyx_t_7 == ((Py_ssize_t)-1))) __PYX_ERR(3, 75, __pyx_L1_error) + + /* "selectolax/modest/node.pxi":76 + * myhtml_attribute_remove_by_key(self.node, bytes_key, len(bytes_key)) + * myhtml_attribute_add(self.node, bytes_key, len(bytes_key), bytes_value, len(bytes_value), + * MyENCODING_UTF_8) # <<<<<<<<<<<<<< + * + * def __delitem__(self, key): +*/ + (void)(myhtml_attribute_add(__pyx_v_self->node, ((char *)__pyx_t_4), __pyx_t_5, ((char *)__pyx_t_6), __pyx_t_7, MyENCODING_UTF_8)); + + /* "selectolax/modest/node.pxi":70 + * yield key + * + * def __setitem__(self, str key, value): # <<<<<<<<<<<<<< + * value = str(value) + * bytes_key = key.encode(_ENCODING) +*/ + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("selectolax.parser._Attributes.__setitem__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_bytes_key); + __Pyx_XDECREF(__pyx_v_bytes_value); + __Pyx_XDECREF(__pyx_v_value); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/modest/node.pxi":78 + * MyENCODING_UTF_8) + * + * def __delitem__(self, key): # <<<<<<<<<<<<<< + * try: + * self.__getitem__(key) +*/ + +/* Python wrapper */ +static int __pyx_pw_10selectolax_6parser_11_Attributes_6__delitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_key); /*proto*/ +static int __pyx_pw_10selectolax_6parser_11_Attributes_6__delitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_key) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__delitem__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6parser_11_Attributes_5__delitem__(((struct __pyx_obj_10selectolax_6parser__Attributes *)__pyx_v_self), ((PyObject *)__pyx_v_key)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_10selectolax_6parser_11_Attributes_5__delitem__(struct __pyx_obj_10selectolax_6parser__Attributes *__pyx_v_self, PyObject *__pyx_v_key) { + PyObject *__pyx_v_bytes_key = NULL; + int __pyx_r; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + size_t __pyx_t_6; + int __pyx_t_7; + PyObject *__pyx_t_8 = NULL; + PyObject *__pyx_t_9 = NULL; + PyObject *__pyx_t_10 = NULL; + char *__pyx_t_11; + Py_ssize_t __pyx_t_12; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__delitem__", 0); + + /* "selectolax/modest/node.pxi":79 + * + * def __delitem__(self, key): + * try: # <<<<<<<<<<<<<< + * self.__getitem__(key) + * except KeyError: +*/ + { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); + __Pyx_XGOTREF(__pyx_t_1); + __Pyx_XGOTREF(__pyx_t_2); + __Pyx_XGOTREF(__pyx_t_3); + /*try:*/ { + + /* "selectolax/modest/node.pxi":80 + * def __delitem__(self, key): + * try: + * self.__getitem__(key) # <<<<<<<<<<<<<< + * except KeyError: + * raise KeyError(key) +*/ + __pyx_t_5 = ((PyObject *)__pyx_v_self); + __Pyx_INCREF(__pyx_t_5); + __pyx_t_6 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_key}; + __pyx_t_4 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_getitem, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 80, __pyx_L3_error) + __Pyx_GOTREF(__pyx_t_4); + } + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "selectolax/modest/node.pxi":79 + * + * def __delitem__(self, key): + * try: # <<<<<<<<<<<<<< + * self.__getitem__(key) + * except KeyError: +*/ + } + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + goto __pyx_L8_try_end; + __pyx_L3_error:; + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "selectolax/modest/node.pxi":81 + * try: + * self.__getitem__(key) + * except KeyError: # <<<<<<<<<<<<<< + * raise KeyError(key) + * bytes_key = key.encode(_ENCODING) +*/ + __pyx_t_7 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_KeyError)))); + if (__pyx_t_7) { + __Pyx_AddTraceback("selectolax.parser._Attributes.__delitem__", __pyx_clineno, __pyx_lineno, __pyx_filename); + if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_5, &__pyx_t_8) < 0) __PYX_ERR(3, 81, __pyx_L5_except_error) + __Pyx_XGOTREF(__pyx_t_4); + __Pyx_XGOTREF(__pyx_t_5); + __Pyx_XGOTREF(__pyx_t_8); + + /* "selectolax/modest/node.pxi":82 + * self.__getitem__(key) + * except KeyError: + * raise KeyError(key) # <<<<<<<<<<<<<< + * bytes_key = key.encode(_ENCODING) + * myhtml_attribute_remove_by_key(self.node, bytes_key, len(bytes_key)) +*/ + __pyx_t_10 = NULL; + __pyx_t_6 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_10, __pyx_v_key}; + __pyx_t_9 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_KeyError)), __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; + if (unlikely(!__pyx_t_9)) __PYX_ERR(3, 82, __pyx_L5_except_error) + __Pyx_GOTREF(__pyx_t_9); + } + __Pyx_Raise(__pyx_t_9, 0, 0, 0); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __PYX_ERR(3, 82, __pyx_L5_except_error) + } + goto __pyx_L5_except_error; + + /* "selectolax/modest/node.pxi":79 + * + * def __delitem__(self, key): + * try: # <<<<<<<<<<<<<< + * self.__getitem__(key) + * except KeyError: +*/ + __pyx_L5_except_error:; + __Pyx_XGIVEREF(__pyx_t_1); + __Pyx_XGIVEREF(__pyx_t_2); + __Pyx_XGIVEREF(__pyx_t_3); + __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); + goto __pyx_L1_error; + __pyx_L8_try_end:; + } + + /* "selectolax/modest/node.pxi":83 + * except KeyError: + * raise KeyError(key) + * bytes_key = key.encode(_ENCODING) # <<<<<<<<<<<<<< + * myhtml_attribute_remove_by_key(self.node, bytes_key, len(bytes_key)) + * +*/ + __pyx_t_5 = __pyx_v_key; + __Pyx_INCREF(__pyx_t_5); + __pyx_t_6 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_UTF_8}; + __pyx_t_8 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_encode, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_8)) __PYX_ERR(3, 83, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + } + __pyx_v_bytes_key = __pyx_t_8; + __pyx_t_8 = 0; + + /* "selectolax/modest/node.pxi":84 + * raise KeyError(key) + * bytes_key = key.encode(_ENCODING) + * myhtml_attribute_remove_by_key(self.node, bytes_key, len(bytes_key)) # <<<<<<<<<<<<<< + * + * def __getitem__(self, str key): +*/ + __pyx_t_11 = __Pyx_PyObject_AsWritableString(__pyx_v_bytes_key); if (unlikely((!__pyx_t_11) && PyErr_Occurred())) __PYX_ERR(3, 84, __pyx_L1_error) + __pyx_t_12 = PyObject_Length(__pyx_v_bytes_key); if (unlikely(__pyx_t_12 == ((Py_ssize_t)-1))) __PYX_ERR(3, 84, __pyx_L1_error) + (void)(myhtml_attribute_remove_by_key(__pyx_v_self->node, ((char *)__pyx_t_11), __pyx_t_12)); + + /* "selectolax/modest/node.pxi":78 + * MyENCODING_UTF_8) + * + * def __delitem__(self, key): # <<<<<<<<<<<<<< + * try: + * self.__getitem__(key) +*/ + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_XDECREF(__pyx_t_9); + __Pyx_XDECREF(__pyx_t_10); + __Pyx_AddTraceback("selectolax.parser._Attributes.__delitem__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_bytes_key); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/modest/node.pxi":86 + * myhtml_attribute_remove_by_key(self.node, bytes_key, len(bytes_key)) + * + * def __getitem__(self, str key): # <<<<<<<<<<<<<< + * bytes_key = key.encode(_ENCODING) + * cdef myhtml_tree_attr_t * attr = myhtml_attribute_by_key(self.node, bytes_key, len(bytes_key)) +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_11_Attributes_8__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_key); /*proto*/ +static PyObject *__pyx_pw_10selectolax_6parser_11_Attributes_8__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_key) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__getitem__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_key), (&PyUnicode_Type), 1, "key", 1))) __PYX_ERR(3, 86, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6parser_11_Attributes_7__getitem__(((struct __pyx_obj_10selectolax_6parser__Attributes *)__pyx_v_self), ((PyObject*)__pyx_v_key)); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + goto __pyx_L5_cleaned_up; + __pyx_L0:; + __pyx_L5_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_11_Attributes_7__getitem__(struct __pyx_obj_10selectolax_6parser__Attributes *__pyx_v_self, PyObject *__pyx_v_key) { + PyObject *__pyx_v_bytes_key = NULL; + myhtml_tree_attr_t *__pyx_v_attr; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + char *__pyx_t_2; + Py_ssize_t __pyx_t_3; + int __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + size_t __pyx_t_7; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__getitem__", 0); + + /* "selectolax/modest/node.pxi":87 + * + * def __getitem__(self, str key): + * bytes_key = key.encode(_ENCODING) # <<<<<<<<<<<<<< + * cdef myhtml_tree_attr_t * attr = myhtml_attribute_by_key(self.node, bytes_key, len(bytes_key)) + * if attr != NULL: +*/ + if (unlikely(__pyx_v_key == Py_None)) { + PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "encode"); + __PYX_ERR(3, 87, __pyx_L1_error) + } + __pyx_t_1 = PyUnicode_AsUTF8String(__pyx_v_key); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 87, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v_bytes_key = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* "selectolax/modest/node.pxi":88 + * def __getitem__(self, str key): + * bytes_key = key.encode(_ENCODING) + * cdef myhtml_tree_attr_t * attr = myhtml_attribute_by_key(self.node, bytes_key, len(bytes_key)) # <<<<<<<<<<<<<< + * if attr != NULL: + * if attr.value.data != NULL: +*/ + __pyx_t_2 = __Pyx_PyBytes_AsWritableString(__pyx_v_bytes_key); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(3, 88, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyBytes_GET_SIZE(__pyx_v_bytes_key); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(3, 88, __pyx_L1_error) + __pyx_v_attr = myhtml_attribute_by_key(__pyx_v_self->node, ((char *)__pyx_t_2), __pyx_t_3); + + /* "selectolax/modest/node.pxi":89 + * bytes_key = key.encode(_ENCODING) + * cdef myhtml_tree_attr_t * attr = myhtml_attribute_by_key(self.node, bytes_key, len(bytes_key)) + * if attr != NULL: # <<<<<<<<<<<<<< + * if attr.value.data != NULL: + * return attr.value.data.decode(_ENCODING, self.decode_errors) +*/ + __pyx_t_4 = (__pyx_v_attr != NULL); + if (__pyx_t_4) { + + /* "selectolax/modest/node.pxi":90 + * cdef myhtml_tree_attr_t * attr = myhtml_attribute_by_key(self.node, bytes_key, len(bytes_key)) + * if attr != NULL: + * if attr.value.data != NULL: # <<<<<<<<<<<<<< + * return attr.value.data.decode(_ENCODING, self.decode_errors) + * elif attr.key.data != NULL: +*/ + __pyx_t_4 = (__pyx_v_attr->value.data != NULL); + if (__pyx_t_4) { + + /* "selectolax/modest/node.pxi":91 + * if attr != NULL: + * if attr.value.data != NULL: + * return attr.value.data.decode(_ENCODING, self.decode_errors) # <<<<<<<<<<<<<< + * elif attr.key.data != NULL: + * return None +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_6 = __Pyx_PyBytes_FromString(__pyx_v_attr->value.data); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 91, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_5 = __pyx_t_6; + __Pyx_INCREF(__pyx_t_5); + __pyx_t_7 = 0; + { + PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_UTF_8, __pyx_v_self->decode_errors}; + __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_decode, __pyx_callargs+__pyx_t_7, (3-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 91, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "selectolax/modest/node.pxi":90 + * cdef myhtml_tree_attr_t * attr = myhtml_attribute_by_key(self.node, bytes_key, len(bytes_key)) + * if attr != NULL: + * if attr.value.data != NULL: # <<<<<<<<<<<<<< + * return attr.value.data.decode(_ENCODING, self.decode_errors) + * elif attr.key.data != NULL: +*/ + } + + /* "selectolax/modest/node.pxi":92 + * if attr.value.data != NULL: + * return attr.value.data.decode(_ENCODING, self.decode_errors) + * elif attr.key.data != NULL: # <<<<<<<<<<<<<< + * return None + * raise KeyError(key) +*/ + __pyx_t_4 = (__pyx_v_attr->key.data != NULL); + if (__pyx_t_4) { + + /* "selectolax/modest/node.pxi":93 + * return attr.value.data.decode(_ENCODING, self.decode_errors) + * elif attr.key.data != NULL: + * return None # <<<<<<<<<<<<<< + * raise KeyError(key) + * +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + + /* "selectolax/modest/node.pxi":92 + * if attr.value.data != NULL: + * return attr.value.data.decode(_ENCODING, self.decode_errors) + * elif attr.key.data != NULL: # <<<<<<<<<<<<<< + * return None + * raise KeyError(key) +*/ + } + + /* "selectolax/modest/node.pxi":89 + * bytes_key = key.encode(_ENCODING) + * cdef myhtml_tree_attr_t * attr = myhtml_attribute_by_key(self.node, bytes_key, len(bytes_key)) + * if attr != NULL: # <<<<<<<<<<<<<< + * if attr.value.data != NULL: + * return attr.value.data.decode(_ENCODING, self.decode_errors) +*/ + } + + /* "selectolax/modest/node.pxi":94 + * elif attr.key.data != NULL: + * return None + * raise KeyError(key) # <<<<<<<<<<<<<< + * + * def __len__(self): +*/ + __pyx_t_6 = NULL; + __pyx_t_7 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_v_key}; + __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_KeyError)), __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 94, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __Pyx_Raise(__pyx_t_1, 0, 0, 0); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __PYX_ERR(3, 94, __pyx_L1_error) + + /* "selectolax/modest/node.pxi":86 + * myhtml_attribute_remove_by_key(self.node, bytes_key, len(bytes_key)) + * + * def __getitem__(self, str key): # <<<<<<<<<<<<<< + * bytes_key = key.encode(_ENCODING) + * cdef myhtml_tree_attr_t * attr = myhtml_attribute_by_key(self.node, bytes_key, len(bytes_key)) +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_AddTraceback("selectolax.parser._Attributes.__getitem__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_bytes_key); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/modest/node.pxi":96 + * raise KeyError(key) + * + * def __len__(self): # <<<<<<<<<<<<<< + * return len(list(self.__iter__())) + * +*/ + +/* Python wrapper */ +static Py_ssize_t __pyx_pw_10selectolax_6parser_11_Attributes_10__len__(PyObject *__pyx_v_self); /*proto*/ +static Py_ssize_t __pyx_pw_10selectolax_6parser_11_Attributes_10__len__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + Py_ssize_t __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__len__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6parser_11_Attributes_9__len__(((struct __pyx_obj_10selectolax_6parser__Attributes *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static Py_ssize_t __pyx_pf_10selectolax_6parser_11_Attributes_9__len__(struct __pyx_obj_10selectolax_6parser__Attributes *__pyx_v_self) { + Py_ssize_t __pyx_r; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + size_t __pyx_t_3; + Py_ssize_t __pyx_t_4; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__len__", 0); + + /* "selectolax/modest/node.pxi":97 + * + * def __len__(self): + * return len(list(self.__iter__())) # <<<<<<<<<<<<<< + * + * def keys(self): +*/ + __pyx_t_2 = ((PyObject *)__pyx_v_self); + __Pyx_INCREF(__pyx_t_2); + __pyx_t_3 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL}; + __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_iter, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 97, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __pyx_t_2 = __Pyx_PySequence_ListKeepNew(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 97, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_4 = __Pyx_PyList_GET_SIZE(__pyx_t_2); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(3, 97, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_r = __pyx_t_4; + goto __pyx_L0; + + /* "selectolax/modest/node.pxi":96 + * raise KeyError(key) + * + * def __len__(self): # <<<<<<<<<<<<<< + * return len(list(self.__iter__())) + * +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("selectolax.parser._Attributes.__len__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/modest/node.pxi":99 + * return len(list(self.__iter__())) + * + * def keys(self): # <<<<<<<<<<<<<< + * return self.__iter__() + * +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_11_Attributes_12keys(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6parser_11_Attributes_11keys, "_Attributes.keys(self)"); +static PyMethodDef __pyx_mdef_10selectolax_6parser_11_Attributes_12keys = {"keys", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_11_Attributes_12keys, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_11_Attributes_11keys}; +static PyObject *__pyx_pw_10selectolax_6parser_11_Attributes_12keys(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("keys (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("keys", 1, 0, 0, __pyx_nargs); return NULL; } + const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len < 0)) return NULL; + if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("keys", __pyx_kwds); return NULL;} + __pyx_r = __pyx_pf_10selectolax_6parser_11_Attributes_11keys(((struct __pyx_obj_10selectolax_6parser__Attributes *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_11_Attributes_11keys(struct __pyx_obj_10selectolax_6parser__Attributes *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + size_t __pyx_t_3; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("keys", 0); + + /* "selectolax/modest/node.pxi":100 + * + * def keys(self): + * return self.__iter__() # <<<<<<<<<<<<<< + * + * def items(self): +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_2 = ((PyObject *)__pyx_v_self); + __Pyx_INCREF(__pyx_t_2); + __pyx_t_3 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL}; + __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_iter, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 100, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "selectolax/modest/node.pxi":99 + * return len(list(self.__iter__())) + * + * def keys(self): # <<<<<<<<<<<<<< + * return self.__iter__() + * +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("selectolax.parser._Attributes.keys", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} +static PyObject *__pyx_gb_10selectolax_6parser_11_Attributes_15generator1(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ + +/* "selectolax/modest/node.pxi":102 + * return self.__iter__() + * + * def items(self): # <<<<<<<<<<<<<< + * for key in self.__iter__(): + * yield key, self[key] +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_11_Attributes_14items(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6parser_11_Attributes_13items, "_Attributes.items(self)"); +static PyMethodDef __pyx_mdef_10selectolax_6parser_11_Attributes_14items = {"items", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_11_Attributes_14items, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_11_Attributes_13items}; +static PyObject *__pyx_pw_10selectolax_6parser_11_Attributes_14items(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("items (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("items", 1, 0, 0, __pyx_nargs); return NULL; } + const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len < 0)) return NULL; + if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("items", __pyx_kwds); return NULL;} + __pyx_r = __pyx_pf_10selectolax_6parser_11_Attributes_13items(((struct __pyx_obj_10selectolax_6parser__Attributes *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_11_Attributes_13items(struct __pyx_obj_10selectolax_6parser__Attributes *__pyx_v_self) { + struct __pyx_obj_10selectolax_6parser___pyx_scope_struct_1_items *__pyx_cur_scope; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("items", 0); + __pyx_cur_scope = (struct __pyx_obj_10selectolax_6parser___pyx_scope_struct_1_items *)__pyx_tp_new_10selectolax_6parser___pyx_scope_struct_1_items(__pyx_mstate_global->__pyx_ptype_10selectolax_6parser___pyx_scope_struct_1_items, __pyx_mstate_global->__pyx_empty_tuple, NULL); + if (unlikely(!__pyx_cur_scope)) { + __pyx_cur_scope = ((struct __pyx_obj_10selectolax_6parser___pyx_scope_struct_1_items *)Py_None); + __Pyx_INCREF(Py_None); + __PYX_ERR(3, 102, __pyx_L1_error) + } else { + __Pyx_GOTREF((PyObject *)__pyx_cur_scope); + } + __pyx_cur_scope->__pyx_v_self = __pyx_v_self; + __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self); + __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self); + { + __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_10selectolax_6parser_11_Attributes_15generator1, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[1]), (PyObject *) __pyx_cur_scope, __pyx_mstate_global->__pyx_n_u_items, __pyx_mstate_global->__pyx_n_u_Attributes_items, __pyx_mstate_global->__pyx_n_u_selectolax_parser); if (unlikely(!gen)) __PYX_ERR(3, 102, __pyx_L1_error) + __Pyx_DECREF(__pyx_cur_scope); + __Pyx_RefNannyFinishContext(); + return (PyObject *) gen; + } + + /* function exit code */ + __pyx_L1_error:; + __Pyx_AddTraceback("selectolax.parser._Attributes.items", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_DECREF((PyObject *)__pyx_cur_scope); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_gb_10selectolax_6parser_11_Attributes_15generator1(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ +{ + struct __pyx_obj_10selectolax_6parser___pyx_scope_struct_1_items *__pyx_cur_scope = ((struct __pyx_obj_10selectolax_6parser___pyx_scope_struct_1_items *)__pyx_generator->closure); + PyObject *__pyx_r = NULL; + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + size_t __pyx_t_3; + Py_ssize_t __pyx_t_4; + PyObject *(*__pyx_t_5)(PyObject *); + PyObject *__pyx_t_6 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("items", 0); + switch (__pyx_generator->resume_label) { + case 0: goto __pyx_L3_first_run; + case 1: goto __pyx_L6_resume_from_yield; + default: /* CPython raises the right error here */ + __Pyx_RefNannyFinishContext(); + return NULL; + } + __pyx_L3_first_run:; + if (unlikely(__pyx_sent_value != Py_None)) { + if (unlikely(__pyx_sent_value)) PyErr_SetString(PyExc_TypeError, "can't send non-None value to a just-started generator"); + __PYX_ERR(3, 102, __pyx_L1_error) + } + + /* "selectolax/modest/node.pxi":103 + * + * def items(self): + * for key in self.__iter__(): # <<<<<<<<<<<<<< + * yield key, self[key] + * +*/ + __pyx_t_2 = ((PyObject *)__pyx_cur_scope->__pyx_v_self); + __Pyx_INCREF(__pyx_t_2); + __pyx_t_3 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL}; + __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_iter, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 103, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) { + __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); + __pyx_t_4 = 0; + __pyx_t_5 = NULL; + } else { + __pyx_t_4 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 103, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_5 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 103, __pyx_L1_error) + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + for (;;) { + if (likely(!__pyx_t_5)) { + if (likely(PyList_CheckExact(__pyx_t_2))) { + { + Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2); + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely((__pyx_temp < 0))) __PYX_ERR(3, 103, __pyx_L1_error) + #endif + if (__pyx_t_4 >= __pyx_temp) break; + } + __pyx_t_1 = __Pyx_PyList_GetItemRefFast(__pyx_t_2, __pyx_t_4, __Pyx_ReferenceSharing_OwnStrongReference); + ++__pyx_t_4; + } else { + { + Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_2); + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely((__pyx_temp < 0))) __PYX_ERR(3, 103, __pyx_L1_error) + #endif + if (__pyx_t_4 >= __pyx_temp) break; + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_1 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_4)); + #else + __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_4); + #endif + ++__pyx_t_4; + } + if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 103, __pyx_L1_error) + } else { + __pyx_t_1 = __pyx_t_5(__pyx_t_2); + if (unlikely(!__pyx_t_1)) { + PyObject* exc_type = PyErr_Occurred(); + if (exc_type) { + if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(3, 103, __pyx_L1_error) + PyErr_Clear(); + } + break; + } + } + __Pyx_GOTREF(__pyx_t_1); + __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_key); + __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_key, __pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __pyx_t_1 = 0; + + /* "selectolax/modest/node.pxi":104 + * def items(self): + * for key in self.__iter__(): + * yield key, self[key] # <<<<<<<<<<<<<< + * + * def values(self): +*/ + __pyx_t_1 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_cur_scope->__pyx_v_key); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 104, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 104, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_INCREF(__pyx_cur_scope->__pyx_v_key); + __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_key); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_cur_scope->__pyx_v_key) != (0)) __PYX_ERR(3, 104, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_1); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_1) != (0)) __PYX_ERR(3, 104, __pyx_L1_error); + __pyx_t_1 = 0; + __pyx_r = __pyx_t_6; + __pyx_t_6 = 0; + __Pyx_XGIVEREF(__pyx_t_2); + __pyx_cur_scope->__pyx_t_0 = __pyx_t_2; + __pyx_cur_scope->__pyx_t_1 = __pyx_t_4; + __pyx_cur_scope->__pyx_t_2 = __pyx_t_5; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, yielding value */ + __pyx_generator->resume_label = 1; + return __pyx_r; + __pyx_L6_resume_from_yield:; + __pyx_t_2 = __pyx_cur_scope->__pyx_t_0; + __pyx_cur_scope->__pyx_t_0 = 0; + __Pyx_XGOTREF(__pyx_t_2); + __pyx_t_4 = __pyx_cur_scope->__pyx_t_1; + __pyx_t_5 = __pyx_cur_scope->__pyx_t_2; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(3, 104, __pyx_L1_error) + + /* "selectolax/modest/node.pxi":103 + * + * def items(self): + * for key in self.__iter__(): # <<<<<<<<<<<<<< + * yield key, self[key] + * +*/ + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); + + /* "selectolax/modest/node.pxi":102 + * return self.__iter__() + * + * def items(self): # <<<<<<<<<<<<<< + * for key in self.__iter__(): + * yield key, self[key] +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_6); + if (__Pyx_PyErr_Occurred()) { + __Pyx_Generator_Replace_StopIteration(0); + __Pyx_AddTraceback("items", __pyx_clineno, __pyx_lineno, __pyx_filename); + } + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + #if !CYTHON_USE_EXC_INFO_STACK + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + #endif + __pyx_generator->resume_label = -1; + __Pyx_Coroutine_clear((PyObject*)__pyx_generator); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} +static PyObject *__pyx_gb_10selectolax_6parser_11_Attributes_18generator2(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ + +/* "selectolax/modest/node.pxi":106 + * yield key, self[key] + * + * def values(self): # <<<<<<<<<<<<<< + * for key in self.__iter__(): + * yield self[key] +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_11_Attributes_17values(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6parser_11_Attributes_16values, "_Attributes.values(self)"); +static PyMethodDef __pyx_mdef_10selectolax_6parser_11_Attributes_17values = {"values", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_11_Attributes_17values, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_11_Attributes_16values}; +static PyObject *__pyx_pw_10selectolax_6parser_11_Attributes_17values(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("values (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("values", 1, 0, 0, __pyx_nargs); return NULL; } + const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len < 0)) return NULL; + if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("values", __pyx_kwds); return NULL;} + __pyx_r = __pyx_pf_10selectolax_6parser_11_Attributes_16values(((struct __pyx_obj_10selectolax_6parser__Attributes *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_11_Attributes_16values(struct __pyx_obj_10selectolax_6parser__Attributes *__pyx_v_self) { + struct __pyx_obj_10selectolax_6parser___pyx_scope_struct_2_values *__pyx_cur_scope; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("values", 0); + __pyx_cur_scope = (struct __pyx_obj_10selectolax_6parser___pyx_scope_struct_2_values *)__pyx_tp_new_10selectolax_6parser___pyx_scope_struct_2_values(__pyx_mstate_global->__pyx_ptype_10selectolax_6parser___pyx_scope_struct_2_values, __pyx_mstate_global->__pyx_empty_tuple, NULL); + if (unlikely(!__pyx_cur_scope)) { + __pyx_cur_scope = ((struct __pyx_obj_10selectolax_6parser___pyx_scope_struct_2_values *)Py_None); + __Pyx_INCREF(Py_None); + __PYX_ERR(3, 106, __pyx_L1_error) + } else { + __Pyx_GOTREF((PyObject *)__pyx_cur_scope); + } + __pyx_cur_scope->__pyx_v_self = __pyx_v_self; + __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self); + __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self); + { + __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_10selectolax_6parser_11_Attributes_18generator2, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[2]), (PyObject *) __pyx_cur_scope, __pyx_mstate_global->__pyx_n_u_values, __pyx_mstate_global->__pyx_n_u_Attributes_values, __pyx_mstate_global->__pyx_n_u_selectolax_parser); if (unlikely(!gen)) __PYX_ERR(3, 106, __pyx_L1_error) + __Pyx_DECREF(__pyx_cur_scope); + __Pyx_RefNannyFinishContext(); + return (PyObject *) gen; + } + + /* function exit code */ + __pyx_L1_error:; + __Pyx_AddTraceback("selectolax.parser._Attributes.values", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_DECREF((PyObject *)__pyx_cur_scope); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_gb_10selectolax_6parser_11_Attributes_18generator2(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ +{ + struct __pyx_obj_10selectolax_6parser___pyx_scope_struct_2_values *__pyx_cur_scope = ((struct __pyx_obj_10selectolax_6parser___pyx_scope_struct_2_values *)__pyx_generator->closure); + PyObject *__pyx_r = NULL; + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + size_t __pyx_t_3; + Py_ssize_t __pyx_t_4; + PyObject *(*__pyx_t_5)(PyObject *); + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("values", 0); + switch (__pyx_generator->resume_label) { + case 0: goto __pyx_L3_first_run; + case 1: goto __pyx_L6_resume_from_yield; + default: /* CPython raises the right error here */ + __Pyx_RefNannyFinishContext(); + return NULL; + } + __pyx_L3_first_run:; + if (unlikely(__pyx_sent_value != Py_None)) { + if (unlikely(__pyx_sent_value)) PyErr_SetString(PyExc_TypeError, "can't send non-None value to a just-started generator"); + __PYX_ERR(3, 106, __pyx_L1_error) + } + + /* "selectolax/modest/node.pxi":107 + * + * def values(self): + * for key in self.__iter__(): # <<<<<<<<<<<<<< + * yield self[key] + * +*/ + __pyx_t_2 = ((PyObject *)__pyx_cur_scope->__pyx_v_self); + __Pyx_INCREF(__pyx_t_2); + __pyx_t_3 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL}; + __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_iter, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 107, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) { + __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); + __pyx_t_4 = 0; + __pyx_t_5 = NULL; + } else { + __pyx_t_4 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 107, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_5 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 107, __pyx_L1_error) + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + for (;;) { + if (likely(!__pyx_t_5)) { + if (likely(PyList_CheckExact(__pyx_t_2))) { + { + Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2); + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely((__pyx_temp < 0))) __PYX_ERR(3, 107, __pyx_L1_error) + #endif + if (__pyx_t_4 >= __pyx_temp) break; + } + __pyx_t_1 = __Pyx_PyList_GetItemRefFast(__pyx_t_2, __pyx_t_4, __Pyx_ReferenceSharing_OwnStrongReference); + ++__pyx_t_4; + } else { + { + Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_2); + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely((__pyx_temp < 0))) __PYX_ERR(3, 107, __pyx_L1_error) + #endif + if (__pyx_t_4 >= __pyx_temp) break; + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_1 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_4)); + #else + __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_4); + #endif + ++__pyx_t_4; + } + if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 107, __pyx_L1_error) + } else { + __pyx_t_1 = __pyx_t_5(__pyx_t_2); + if (unlikely(!__pyx_t_1)) { + PyObject* exc_type = PyErr_Occurred(); + if (exc_type) { + if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(3, 107, __pyx_L1_error) + PyErr_Clear(); + } + break; + } + } + __Pyx_GOTREF(__pyx_t_1); + __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_key); + __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_key, __pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __pyx_t_1 = 0; + + /* "selectolax/modest/node.pxi":108 + * def values(self): + * for key in self.__iter__(): + * yield self[key] # <<<<<<<<<<<<<< + * + * def get(self, key, default=None): +*/ + __pyx_t_1 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_cur_scope->__pyx_v_key); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 108, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + __Pyx_XGIVEREF(__pyx_t_2); + __pyx_cur_scope->__pyx_t_0 = __pyx_t_2; + __pyx_cur_scope->__pyx_t_1 = __pyx_t_4; + __pyx_cur_scope->__pyx_t_2 = __pyx_t_5; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, yielding value */ + __pyx_generator->resume_label = 1; + return __pyx_r; + __pyx_L6_resume_from_yield:; + __pyx_t_2 = __pyx_cur_scope->__pyx_t_0; + __pyx_cur_scope->__pyx_t_0 = 0; + __Pyx_XGOTREF(__pyx_t_2); + __pyx_t_4 = __pyx_cur_scope->__pyx_t_1; + __pyx_t_5 = __pyx_cur_scope->__pyx_t_2; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(3, 108, __pyx_L1_error) + + /* "selectolax/modest/node.pxi":107 + * + * def values(self): + * for key in self.__iter__(): # <<<<<<<<<<<<<< + * yield self[key] + * +*/ + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); + + /* "selectolax/modest/node.pxi":106 + * yield key, self[key] + * + * def values(self): # <<<<<<<<<<<<<< + * for key in self.__iter__(): + * yield self[key] +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + if (__Pyx_PyErr_Occurred()) { + __Pyx_Generator_Replace_StopIteration(0); + __Pyx_AddTraceback("values", __pyx_clineno, __pyx_lineno, __pyx_filename); + } + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + #if !CYTHON_USE_EXC_INFO_STACK + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + #endif + __pyx_generator->resume_label = -1; + __Pyx_Coroutine_clear((PyObject*)__pyx_generator); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/modest/node.pxi":110 + * yield self[key] + * + * def get(self, key, default=None): # <<<<<<<<<<<<<< + * try: + * return self[key] +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_11_Attributes_20get(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6parser_11_Attributes_19get, "_Attributes.get(self, key, default=None)"); +static PyMethodDef __pyx_mdef_10selectolax_6parser_11_Attributes_20get = {"get", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_11_Attributes_20get, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_11_Attributes_19get}; +static PyObject *__pyx_pw_10selectolax_6parser_11_Attributes_20get(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_key = 0; + PyObject *__pyx_v_default = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[2] = {0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("get (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_key,&__pyx_mstate_global->__pyx_n_u_default,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(3, 110, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(3, 110, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(3, 110, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "get", 0) < (0)) __PYX_ERR(3, 110, __pyx_L3_error) + if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None)); + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("get", 0, 1, 2, i); __PYX_ERR(3, 110, __pyx_L3_error) } + } + } else { + switch (__pyx_nargs) { + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(3, 110, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(3, 110, __pyx_L3_error) + break; + default: goto __pyx_L5_argtuple_error; + } + if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None)); + } + __pyx_v_key = values[0]; + __pyx_v_default = values[1]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("get", 0, 1, 2, __pyx_nargs); __PYX_ERR(3, 110, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.parser._Attributes.get", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_10selectolax_6parser_11_Attributes_19get(((struct __pyx_obj_10selectolax_6parser__Attributes *)__pyx_v_self), __pyx_v_key, __pyx_v_default); + + /* function exit code */ + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_11_Attributes_19get(struct __pyx_obj_10selectolax_6parser__Attributes *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_default) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + int __pyx_t_5; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("get", 0); + + /* "selectolax/modest/node.pxi":111 + * + * def get(self, key, default=None): + * try: # <<<<<<<<<<<<<< + * return self[key] + * except KeyError: +*/ + { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); + __Pyx_XGOTREF(__pyx_t_1); + __Pyx_XGOTREF(__pyx_t_2); + __Pyx_XGOTREF(__pyx_t_3); + /*try:*/ { + + /* "selectolax/modest/node.pxi":112 + * def get(self, key, default=None): + * try: + * return self[key] # <<<<<<<<<<<<<< + * except KeyError: + * return default +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_4 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self), __pyx_v_key); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 112, __pyx_L3_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_r = __pyx_t_4; + __pyx_t_4 = 0; + goto __pyx_L7_try_return; + + /* "selectolax/modest/node.pxi":111 + * + * def get(self, key, default=None): + * try: # <<<<<<<<<<<<<< + * return self[key] + * except KeyError: +*/ + } + __pyx_L3_error:; + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "selectolax/modest/node.pxi":113 + * try: + * return self[key] + * except KeyError: # <<<<<<<<<<<<<< + * return default + * +*/ + __pyx_t_5 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_KeyError)))); + if (__pyx_t_5) { + __Pyx_ErrRestore(0,0,0); + + /* "selectolax/modest/node.pxi":114 + * return self[key] + * except KeyError: + * return default # <<<<<<<<<<<<<< + * + * def sget(self, key, default=""): +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_default); + __pyx_r = __pyx_v_default; + goto __pyx_L6_except_return; + } + goto __pyx_L5_except_error; + + /* "selectolax/modest/node.pxi":111 + * + * def get(self, key, default=None): + * try: # <<<<<<<<<<<<<< + * return self[key] + * except KeyError: +*/ + __pyx_L5_except_error:; + __Pyx_XGIVEREF(__pyx_t_1); + __Pyx_XGIVEREF(__pyx_t_2); + __Pyx_XGIVEREF(__pyx_t_3); + __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); + goto __pyx_L1_error; + __pyx_L7_try_return:; + __Pyx_XGIVEREF(__pyx_t_1); + __Pyx_XGIVEREF(__pyx_t_2); + __Pyx_XGIVEREF(__pyx_t_3); + __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); + goto __pyx_L0; + __pyx_L6_except_return:; + __Pyx_XGIVEREF(__pyx_t_1); + __Pyx_XGIVEREF(__pyx_t_2); + __Pyx_XGIVEREF(__pyx_t_3); + __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); + goto __pyx_L0; + } + + /* "selectolax/modest/node.pxi":110 + * yield self[key] + * + * def get(self, key, default=None): # <<<<<<<<<<<<<< + * try: + * return self[key] +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("selectolax.parser._Attributes.get", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/modest/node.pxi":116 + * return default + * + * def sget(self, key, default=""): # <<<<<<<<<<<<<< + * """Same as get, but returns empty strings instead of None values for empty attributes.""" + * try: +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_11_Attributes_22sget(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6parser_11_Attributes_21sget, "_Attributes.sget(self, key, default='')\n\nSame as get, but returns empty strings instead of None values for empty attributes."); +static PyMethodDef __pyx_mdef_10selectolax_6parser_11_Attributes_22sget = {"sget", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_11_Attributes_22sget, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_11_Attributes_21sget}; +static PyObject *__pyx_pw_10selectolax_6parser_11_Attributes_22sget(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_key = 0; + PyObject *__pyx_v_default = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[2] = {0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("sget (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_key,&__pyx_mstate_global->__pyx_n_u_default,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(3, 116, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(3, 116, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(3, 116, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "sget", 0) < (0)) __PYX_ERR(3, 116, __pyx_L3_error) + if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_kp_u_)); + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("sget", 0, 1, 2, i); __PYX_ERR(3, 116, __pyx_L3_error) } + } + } else { + switch (__pyx_nargs) { + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(3, 116, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(3, 116, __pyx_L3_error) + break; + default: goto __pyx_L5_argtuple_error; + } + if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_kp_u_)); + } + __pyx_v_key = values[0]; + __pyx_v_default = values[1]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("sget", 0, 1, 2, __pyx_nargs); __PYX_ERR(3, 116, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.parser._Attributes.sget", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_10selectolax_6parser_11_Attributes_21sget(((struct __pyx_obj_10selectolax_6parser__Attributes *)__pyx_v_self), __pyx_v_key, __pyx_v_default); + + /* function exit code */ + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_11_Attributes_21sget(struct __pyx_obj_10selectolax_6parser__Attributes *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_default) { + PyObject *__pyx_v_val = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + int __pyx_t_5; + int __pyx_t_6; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("sget", 0); + + /* "selectolax/modest/node.pxi":118 + * def sget(self, key, default=""): + * """Same as get, but returns empty strings instead of None values for empty attributes.""" + * try: # <<<<<<<<<<<<<< + * val = self[key] + * if val is None: +*/ + { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); + __Pyx_XGOTREF(__pyx_t_1); + __Pyx_XGOTREF(__pyx_t_2); + __Pyx_XGOTREF(__pyx_t_3); + /*try:*/ { + + /* "selectolax/modest/node.pxi":119 + * """Same as get, but returns empty strings instead of None values for empty attributes.""" + * try: + * val = self[key] # <<<<<<<<<<<<<< + * if val is None: + * val = "" +*/ + __pyx_t_4 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self), __pyx_v_key); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 119, __pyx_L3_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_v_val = __pyx_t_4; + __pyx_t_4 = 0; + + /* "selectolax/modest/node.pxi":120 + * try: + * val = self[key] + * if val is None: # <<<<<<<<<<<<<< + * val = "" + * return val +*/ + __pyx_t_5 = (__pyx_v_val == Py_None); + if (__pyx_t_5) { + + /* "selectolax/modest/node.pxi":121 + * val = self[key] + * if val is None: + * val = "" # <<<<<<<<<<<<<< + * return val + * except KeyError: +*/ + __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u_); + __Pyx_DECREF_SET(__pyx_v_val, __pyx_mstate_global->__pyx_kp_u_); + + /* "selectolax/modest/node.pxi":120 + * try: + * val = self[key] + * if val is None: # <<<<<<<<<<<<<< + * val = "" + * return val +*/ + } + + /* "selectolax/modest/node.pxi":122 + * if val is None: + * val = "" + * return val # <<<<<<<<<<<<<< + * except KeyError: + * return default +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_val); + __pyx_r = __pyx_v_val; + goto __pyx_L7_try_return; + + /* "selectolax/modest/node.pxi":118 + * def sget(self, key, default=""): + * """Same as get, but returns empty strings instead of None values for empty attributes.""" + * try: # <<<<<<<<<<<<<< + * val = self[key] + * if val is None: +*/ + } + __pyx_L3_error:; + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "selectolax/modest/node.pxi":123 + * val = "" + * return val + * except KeyError: # <<<<<<<<<<<<<< + * return default + * +*/ + __pyx_t_6 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_KeyError)))); + if (__pyx_t_6) { + __Pyx_ErrRestore(0,0,0); + + /* "selectolax/modest/node.pxi":124 + * return val + * except KeyError: + * return default # <<<<<<<<<<<<<< + * + * def __contains__(self, key): +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_default); + __pyx_r = __pyx_v_default; + goto __pyx_L6_except_return; + } + goto __pyx_L5_except_error; + + /* "selectolax/modest/node.pxi":118 + * def sget(self, key, default=""): + * """Same as get, but returns empty strings instead of None values for empty attributes.""" + * try: # <<<<<<<<<<<<<< + * val = self[key] + * if val is None: +*/ + __pyx_L5_except_error:; + __Pyx_XGIVEREF(__pyx_t_1); + __Pyx_XGIVEREF(__pyx_t_2); + __Pyx_XGIVEREF(__pyx_t_3); + __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); + goto __pyx_L1_error; + __pyx_L7_try_return:; + __Pyx_XGIVEREF(__pyx_t_1); + __Pyx_XGIVEREF(__pyx_t_2); + __Pyx_XGIVEREF(__pyx_t_3); + __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); + goto __pyx_L0; + __pyx_L6_except_return:; + __Pyx_XGIVEREF(__pyx_t_1); + __Pyx_XGIVEREF(__pyx_t_2); + __Pyx_XGIVEREF(__pyx_t_3); + __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); + goto __pyx_L0; + } + + /* "selectolax/modest/node.pxi":116 + * return default + * + * def sget(self, key, default=""): # <<<<<<<<<<<<<< + * """Same as get, but returns empty strings instead of None values for empty attributes.""" + * try: +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("selectolax.parser._Attributes.sget", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_val); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/modest/node.pxi":126 + * return default + * + * def __contains__(self, key): # <<<<<<<<<<<<<< + * try: + * self[key] +*/ + +/* Python wrapper */ +static int __pyx_pw_10selectolax_6parser_11_Attributes_24__contains__(PyObject *__pyx_v_self, PyObject *__pyx_v_key); /*proto*/ +static int __pyx_pw_10selectolax_6parser_11_Attributes_24__contains__(PyObject *__pyx_v_self, PyObject *__pyx_v_key) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__contains__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6parser_11_Attributes_23__contains__(((struct __pyx_obj_10selectolax_6parser__Attributes *)__pyx_v_self), ((PyObject *)__pyx_v_key)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_10selectolax_6parser_11_Attributes_23__contains__(struct __pyx_obj_10selectolax_6parser__Attributes *__pyx_v_self, PyObject *__pyx_v_key) { + int __pyx_r; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + int __pyx_t_5; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__contains__", 0); + + /* "selectolax/modest/node.pxi":127 + * + * def __contains__(self, key): + * try: # <<<<<<<<<<<<<< + * self[key] + * except KeyError: +*/ + { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); + __Pyx_XGOTREF(__pyx_t_1); + __Pyx_XGOTREF(__pyx_t_2); + __Pyx_XGOTREF(__pyx_t_3); + /*try:*/ { + + /* "selectolax/modest/node.pxi":128 + * def __contains__(self, key): + * try: + * self[key] # <<<<<<<<<<<<<< + * except KeyError: + * return False +*/ + __pyx_t_4 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self), __pyx_v_key); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 128, __pyx_L3_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "selectolax/modest/node.pxi":127 + * + * def __contains__(self, key): + * try: # <<<<<<<<<<<<<< + * self[key] + * except KeyError: +*/ + } + + /* "selectolax/modest/node.pxi":132 + * return False + * else: + * return True # <<<<<<<<<<<<<< + * + * def __repr__(self): +*/ + /*else:*/ { + __pyx_r = 1; + goto __pyx_L6_except_return; + } + __pyx_L3_error:; + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "selectolax/modest/node.pxi":129 + * try: + * self[key] + * except KeyError: # <<<<<<<<<<<<<< + * return False + * else: +*/ + __pyx_t_5 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_KeyError)))); + if (__pyx_t_5) { + __Pyx_ErrRestore(0,0,0); + + /* "selectolax/modest/node.pxi":130 + * self[key] + * except KeyError: + * return False # <<<<<<<<<<<<<< + * else: + * return True +*/ + __pyx_r = 0; + goto __pyx_L6_except_return; + } + goto __pyx_L5_except_error; + + /* "selectolax/modest/node.pxi":127 + * + * def __contains__(self, key): + * try: # <<<<<<<<<<<<<< + * self[key] + * except KeyError: +*/ + __pyx_L5_except_error:; + __Pyx_XGIVEREF(__pyx_t_1); + __Pyx_XGIVEREF(__pyx_t_2); + __Pyx_XGIVEREF(__pyx_t_3); + __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); + goto __pyx_L1_error; + __pyx_L6_except_return:; + __Pyx_XGIVEREF(__pyx_t_1); + __Pyx_XGIVEREF(__pyx_t_2); + __Pyx_XGIVEREF(__pyx_t_3); + __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); + goto __pyx_L0; + } + + /* "selectolax/modest/node.pxi":126 + * return default + * + * def __contains__(self, key): # <<<<<<<<<<<<<< + * try: + * self[key] +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("selectolax.parser._Attributes.__contains__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/modest/node.pxi":134 + * return True + * + * def __repr__(self): # <<<<<<<<<<<<<< + * cdef const char *c_text + * c_text = myhtml_tag_name_by_id(self.node.tree, self.node.tag_id, NULL) +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_11_Attributes_26__repr__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_10selectolax_6parser_11_Attributes_26__repr__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6parser_11_Attributes_25__repr__(((struct __pyx_obj_10selectolax_6parser__Attributes *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_11_Attributes_25__repr__(struct __pyx_obj_10selectolax_6parser__Attributes *__pyx_v_self) { + char const *__pyx_v_c_text; + PyObject *__pyx_v_tag_name = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + Py_ssize_t __pyx_t_3; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5[5]; + PyObject *__pyx_t_6 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__repr__", 0); + + /* "selectolax/modest/node.pxi":136 + * def __repr__(self): + * cdef const char *c_text + * c_text = myhtml_tag_name_by_id(self.node.tree, self.node.tag_id, NULL) # <<<<<<<<<<<<<< + * tag_name = c_text.decode(_ENCODING, 'ignore') if c_text != NULL else 'unknown' + * return "<%s attributes, %s items>" % (tag_name, len(self)) +*/ + __pyx_v_c_text = myhtml_tag_name_by_id(__pyx_v_self->node->tree, __pyx_v_self->node->tag_id, NULL); + + /* "selectolax/modest/node.pxi":137 + * cdef const char *c_text + * c_text = myhtml_tag_name_by_id(self.node.tree, self.node.tag_id, NULL) + * tag_name = c_text.decode(_ENCODING, 'ignore') if c_text != NULL else 'unknown' # <<<<<<<<<<<<<< + * return "<%s attributes, %s items>" % (tag_name, len(self)) + * +*/ + __pyx_t_2 = (__pyx_v_c_text != NULL); + if (__pyx_t_2) { + __pyx_t_3 = __Pyx_ssize_strlen(__pyx_v_c_text); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(3, 137, __pyx_L1_error) + __pyx_t_4 = __Pyx_decode_c_string(__pyx_v_c_text, 0, __pyx_t_3, NULL, __pyx_k_ignore, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 137, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_1 = __pyx_t_4; + __pyx_t_4 = 0; + } else { + __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_unknown); + __pyx_t_1 = __pyx_mstate_global->__pyx_n_u_unknown; + } + __pyx_v_tag_name = __pyx_t_1; + __pyx_t_1 = 0; + + /* "selectolax/modest/node.pxi":138 + * c_text = myhtml_tag_name_by_id(self.node.tree, self.node.tag_id, NULL) + * tag_name = c_text.decode(_ENCODING, 'ignore') if c_text != NULL else 'unknown' + * return "<%s attributes, %s items>" % (tag_name, len(self)) # <<<<<<<<<<<<<< + * + * ctypedef fused str_or_Node: +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Str(__pyx_v_tag_name), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 138, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = PyObject_Length(((PyObject *)__pyx_v_self)); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(3, 138, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_t_3, 0, ' ', 'd'); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 138, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5[0] = __pyx_mstate_global->__pyx_kp_u__2; + __pyx_t_5[1] = __pyx_t_1; + __pyx_t_5[2] = __pyx_mstate_global->__pyx_kp_u_attributes_2; + __pyx_t_5[3] = __pyx_t_4; + __pyx_t_5[4] = __pyx_mstate_global->__pyx_kp_u_items_2; + __pyx_t_6 = __Pyx_PyUnicode_Join(__pyx_t_5, 5, 1 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_1) + 13 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4) + 7, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_1)); + if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 138, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_r = __pyx_t_6; + __pyx_t_6 = 0; + goto __pyx_L0; + + /* "selectolax/modest/node.pxi":134 + * return True + * + * def __repr__(self): # <<<<<<<<<<<<<< + * cdef const char *c_text + * c_text = myhtml_tag_name_by_id(self.node.tree, self.node.tag_id, NULL) +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_AddTraceback("selectolax.parser._Attributes.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_tag_name); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * raise TypeError, "self.node cannot be converted to a Python object for pickling" + * def __setstate_cython__(self, __pyx_state): +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_11_Attributes_28__reduce_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6parser_11_Attributes_27__reduce_cython__, "_Attributes.__reduce_cython__(self)"); +static PyMethodDef __pyx_mdef_10selectolax_6parser_11_Attributes_28__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_11_Attributes_28__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_11_Attributes_27__reduce_cython__}; +static PyObject *__pyx_pw_10selectolax_6parser_11_Attributes_28__reduce_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL; } + const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len < 0)) return NULL; + if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;} + __pyx_r = __pyx_pf_10selectolax_6parser_11_Attributes_27__reduce_cython__(((struct __pyx_obj_10selectolax_6parser__Attributes *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_11_Attributes_27__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_10selectolax_6parser__Attributes *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__reduce_cython__", 0); + + /* "(tree fragment)":2 + * def __reduce_cython__(self): + * raise TypeError, "self.node cannot be converted to a Python object for pickling" # <<<<<<<<<<<<<< + * def __setstate_cython__(self, __pyx_state): + * raise TypeError, "self.node cannot be converted to a Python object for pickling" +*/ + __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), __pyx_mstate_global->__pyx_kp_u_self_node_cannot_be_converted_to, 0, 0); + __PYX_ERR(1, 2, __pyx_L1_error) + + /* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * raise TypeError, "self.node cannot be converted to a Python object for pickling" + * def __setstate_cython__(self, __pyx_state): +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_AddTraceback("selectolax.parser._Attributes.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":3 + * def __reduce_cython__(self): + * raise TypeError, "self.node cannot be converted to a Python object for pickling" + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * raise TypeError, "self.node cannot be converted to a Python object for pickling" +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_11_Attributes_30__setstate_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6parser_11_Attributes_29__setstate_cython__, "_Attributes.__setstate_cython__(self, __pyx_state)"); +static PyMethodDef __pyx_mdef_10selectolax_6parser_11_Attributes_30__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_11_Attributes_30__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_11_Attributes_29__setstate_cython__}; +static PyObject *__pyx_pw_10selectolax_6parser_11_Attributes_30__setstate_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_state,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 3, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < (0)) __PYX_ERR(1, 3, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 3, __pyx_L3_error) } + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error) + } + __pyx_v___pyx_state = values[0]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.parser._Attributes.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_10selectolax_6parser_11_Attributes_29__setstate_cython__(((struct __pyx_obj_10selectolax_6parser__Attributes *)__pyx_v_self), __pyx_v___pyx_state); + + /* function exit code */ + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_11_Attributes_29__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_10selectolax_6parser__Attributes *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__setstate_cython__", 0); + + /* "(tree fragment)":4 + * raise TypeError, "self.node cannot be converted to a Python object for pickling" + * def __setstate_cython__(self, __pyx_state): + * raise TypeError, "self.node cannot be converted to a Python object for pickling" # <<<<<<<<<<<<<< +*/ + __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), __pyx_mstate_global->__pyx_kp_u_self_node_cannot_be_converted_to, 0, 0); + __PYX_ERR(1, 4, __pyx_L1_error) + + /* "(tree fragment)":3 + * def __reduce_cython__(self): + * raise TypeError, "self.node cannot be converted to a Python object for pickling" + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * raise TypeError, "self.node cannot be converted to a Python object for pickling" +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_AddTraceback("selectolax.parser._Attributes.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/modest/node.pxi":150 + * cdef public HTMLParser parser + * + * @staticmethod # <<<<<<<<<<<<<< + * cdef Node new(myhtml_tree_node_t *node, HTMLParser parser): + * # custom __init__ for C, because __cinit__ doesn't accept C types +*/ + +static struct __pyx_obj_10selectolax_6parser_Node *__pyx_f_10selectolax_6parser_4Node_new(myhtml_tree_node_t *__pyx_v_node, struct __pyx_obj_10selectolax_6parser_HTMLParser *__pyx_v_parser) { + struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_cls = 0; + struct __pyx_obj_10selectolax_6parser_Node *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("new", 0); + + /* "selectolax/modest/node.pxi":153 + * cdef Node new(myhtml_tree_node_t *node, HTMLParser parser): + * # custom __init__ for C, because __cinit__ doesn't accept C types + * cdef Node cls = Node.__new__(Node) # <<<<<<<<<<<<<< + * cls.node = node + * # Keep reference to the selector object, so myhtml structures will not be garbage collected prematurely +*/ + __pyx_t_1 = ((PyObject *)__pyx_tp_new_10selectolax_6parser_Node(((PyTypeObject *)__pyx_mstate_global->__pyx_ptype_10selectolax_6parser_Node), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 153, __pyx_L1_error) + __Pyx_GOTREF((PyObject *)__pyx_t_1); + __pyx_v_cls = ((struct __pyx_obj_10selectolax_6parser_Node *)__pyx_t_1); + __pyx_t_1 = 0; + + /* "selectolax/modest/node.pxi":154 + * # custom __init__ for C, because __cinit__ doesn't accept C types + * cdef Node cls = Node.__new__(Node) + * cls.node = node # <<<<<<<<<<<<<< + * # Keep reference to the selector object, so myhtml structures will not be garbage collected prematurely + * cls.parser = parser +*/ + __pyx_v_cls->node = __pyx_v_node; + + /* "selectolax/modest/node.pxi":156 + * cls.node = node + * # Keep reference to the selector object, so myhtml structures will not be garbage collected prematurely + * cls.parser = parser # <<<<<<<<<<<<<< + * return cls + * +*/ + __Pyx_INCREF((PyObject *)__pyx_v_parser); + __Pyx_GIVEREF((PyObject *)__pyx_v_parser); + __Pyx_GOTREF((PyObject *)__pyx_v_cls->parser); + __Pyx_DECREF((PyObject *)__pyx_v_cls->parser); + __pyx_v_cls->parser = __pyx_v_parser; + + /* "selectolax/modest/node.pxi":157 + * # Keep reference to the selector object, so myhtml structures will not be garbage collected prematurely + * cls.parser = parser + * return cls # <<<<<<<<<<<<<< + * + * @property +*/ + __Pyx_XDECREF((PyObject *)__pyx_r); + __Pyx_INCREF((PyObject *)__pyx_v_cls); + __pyx_r = __pyx_v_cls; + goto __pyx_L0; + + /* "selectolax/modest/node.pxi":150 + * cdef public HTMLParser parser + * + * @staticmethod # <<<<<<<<<<<<<< + * cdef Node new(myhtml_tree_node_t *node, HTMLParser parser): + * # custom __init__ for C, because __cinit__ doesn't accept C types +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("selectolax.parser.Node.new", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF((PyObject *)__pyx_v_cls); + __Pyx_XGIVEREF((PyObject *)__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/modest/node.pxi":159 + * return cls + * + * @property # <<<<<<<<<<<<<< + * def attributes(self): + * """Get all attributes that belong to the current node. +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_4Node_10attributes_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_10selectolax_6parser_4Node_10attributes_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6parser_4Node_10attributes___get__(((struct __pyx_obj_10selectolax_6parser_Node *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_4Node_10attributes___get__(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self) { + myhtml_tree_attr_t *__pyx_v_attr; + PyObject *__pyx_v_attributes = NULL; + PyObject *__pyx_v_key = NULL; + PyObject *__pyx_v_value = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + myhtml_tree_attr_t *__pyx_t_3; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + size_t __pyx_t_6; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + + /* "selectolax/modest/node.pxi":177 + * {'data': None, 'id': 'my_id'} + * """ + * cdef myhtml_tree_attr_t *attr = myhtml_node_attribute_first(self.node) # <<<<<<<<<<<<<< + * attributes = dict() + * +*/ + __pyx_v_attr = myhtml_node_attribute_first(__pyx_v_self->node); + + /* "selectolax/modest/node.pxi":178 + * """ + * cdef myhtml_tree_attr_t *attr = myhtml_node_attribute_first(self.node) + * attributes = dict() # <<<<<<<<<<<<<< + * + * while attr: +*/ + __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 178, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v_attributes = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* "selectolax/modest/node.pxi":180 + * attributes = dict() + * + * while attr: # <<<<<<<<<<<<<< + * if attr.key.data == NULL: + * attr = attr.next +*/ + while (1) { + __pyx_t_2 = (__pyx_v_attr != 0); + if (!__pyx_t_2) break; + + /* "selectolax/modest/node.pxi":181 + * + * while attr: + * if attr.key.data == NULL: # <<<<<<<<<<<<<< + * attr = attr.next + * continue +*/ + __pyx_t_2 = (__pyx_v_attr->key.data == NULL); + if (__pyx_t_2) { + + /* "selectolax/modest/node.pxi":182 + * while attr: + * if attr.key.data == NULL: + * attr = attr.next # <<<<<<<<<<<<<< + * continue + * key = attr.key.data.decode(_ENCODING, self.parser.decode_errors) +*/ + __pyx_t_3 = __pyx_v_attr->next; + __pyx_v_attr = __pyx_t_3; + + /* "selectolax/modest/node.pxi":183 + * if attr.key.data == NULL: + * attr = attr.next + * continue # <<<<<<<<<<<<<< + * key = attr.key.data.decode(_ENCODING, self.parser.decode_errors) + * if attr.value.data: +*/ + goto __pyx_L3_continue; + + /* "selectolax/modest/node.pxi":181 + * + * while attr: + * if attr.key.data == NULL: # <<<<<<<<<<<<<< + * attr = attr.next + * continue +*/ + } + + /* "selectolax/modest/node.pxi":184 + * attr = attr.next + * continue + * key = attr.key.data.decode(_ENCODING, self.parser.decode_errors) # <<<<<<<<<<<<<< + * if attr.value.data: + * value = attr.value.data.decode(_ENCODING, self.parser.decode_errors) +*/ + __pyx_t_5 = __Pyx_PyBytes_FromString(__pyx_v_attr->key.data); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 184, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_4 = __pyx_t_5; + __Pyx_INCREF(__pyx_t_4); + __pyx_t_6 = 0; + { + PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_UTF_8, __pyx_v_self->parser->decode_errors}; + __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_decode, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 184, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_1); + __pyx_t_1 = 0; + + /* "selectolax/modest/node.pxi":185 + * continue + * key = attr.key.data.decode(_ENCODING, self.parser.decode_errors) + * if attr.value.data: # <<<<<<<<<<<<<< + * value = attr.value.data.decode(_ENCODING, self.parser.decode_errors) + * else: +*/ + __pyx_t_2 = (__pyx_v_attr->value.data != 0); + if (__pyx_t_2) { + + /* "selectolax/modest/node.pxi":186 + * key = attr.key.data.decode(_ENCODING, self.parser.decode_errors) + * if attr.value.data: + * value = attr.value.data.decode(_ENCODING, self.parser.decode_errors) # <<<<<<<<<<<<<< + * else: + * value = None +*/ + __pyx_t_4 = __Pyx_PyBytes_FromString(__pyx_v_attr->value.data); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 186, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = __pyx_t_4; + __Pyx_INCREF(__pyx_t_5); + __pyx_t_6 = 0; + { + PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_UTF_8, __pyx_v_self->parser->decode_errors}; + __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_decode, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 186, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_1); + __pyx_t_1 = 0; + + /* "selectolax/modest/node.pxi":185 + * continue + * key = attr.key.data.decode(_ENCODING, self.parser.decode_errors) + * if attr.value.data: # <<<<<<<<<<<<<< + * value = attr.value.data.decode(_ENCODING, self.parser.decode_errors) + * else: +*/ + goto __pyx_L6; + } + + /* "selectolax/modest/node.pxi":188 + * value = attr.value.data.decode(_ENCODING, self.parser.decode_errors) + * else: + * value = None # <<<<<<<<<<<<<< + * attributes[key] = value + * +*/ + /*else*/ { + __Pyx_INCREF(Py_None); + __Pyx_XDECREF_SET(__pyx_v_value, Py_None); + } + __pyx_L6:; + + /* "selectolax/modest/node.pxi":189 + * else: + * value = None + * attributes[key] = value # <<<<<<<<<<<<<< + * + * attr = attr.next +*/ + if (unlikely((PyDict_SetItem(__pyx_v_attributes, __pyx_v_key, __pyx_v_value) < 0))) __PYX_ERR(3, 189, __pyx_L1_error) + + /* "selectolax/modest/node.pxi":191 + * attributes[key] = value + * + * attr = attr.next # <<<<<<<<<<<<<< + * + * return attributes +*/ + __pyx_t_3 = __pyx_v_attr->next; + __pyx_v_attr = __pyx_t_3; + __pyx_L3_continue:; + } + + /* "selectolax/modest/node.pxi":193 + * attr = attr.next + * + * return attributes # <<<<<<<<<<<<<< + * + * @property +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_attributes); + __pyx_r = __pyx_v_attributes; + goto __pyx_L0; + + /* "selectolax/modest/node.pxi":159 + * return cls + * + * @property # <<<<<<<<<<<<<< + * def attributes(self): + * """Get all attributes that belong to the current node. +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_AddTraceback("selectolax.parser.Node.attributes.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_attributes); + __Pyx_XDECREF(__pyx_v_key); + __Pyx_XDECREF(__pyx_v_value); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/modest/node.pxi":195 + * return attributes + * + * @property # <<<<<<<<<<<<<< + * def attrs(self): + * """A dict-like object that is similar to the ``attributes`` property, but operates directly on the Node data. +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_4Node_5attrs_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_10selectolax_6parser_4Node_5attrs_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6parser_4Node_5attrs___get__(((struct __pyx_obj_10selectolax_6parser_Node *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_4Node_5attrs___get__(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self) { + struct __pyx_obj_10selectolax_6parser__Attributes *__pyx_v_attributes = 0; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + + /* "selectolax/modest/node.pxi":222 + * '
' + * """ + * cdef _Attributes attributes = _Attributes.create(self.node, self.parser.decode_errors) # <<<<<<<<<<<<<< + * return attributes + * +*/ + __pyx_t_1 = __pyx_v_self->parser->decode_errors; + __Pyx_INCREF(__pyx_t_1); + __pyx_t_2 = ((PyObject *)__pyx_f_10selectolax_6parser_11_Attributes_create(__pyx_v_self->node, ((PyObject*)__pyx_t_1))); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 222, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v_attributes = ((struct __pyx_obj_10selectolax_6parser__Attributes *)__pyx_t_2); + __pyx_t_2 = 0; + + /* "selectolax/modest/node.pxi":223 + * """ + * cdef _Attributes attributes = _Attributes.create(self.node, self.parser.decode_errors) + * return attributes # <<<<<<<<<<<<<< + * + * @property +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF((PyObject *)__pyx_v_attributes); + __pyx_r = ((PyObject *)__pyx_v_attributes); + goto __pyx_L0; + + /* "selectolax/modest/node.pxi":195 + * return attributes + * + * @property # <<<<<<<<<<<<<< + * def attrs(self): + * """A dict-like object that is similar to the ``attributes`` property, but operates directly on the Node data. +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("selectolax.parser.Node.attrs.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF((PyObject *)__pyx_v_attributes); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/modest/node.pxi":225 + * return attributes + * + * @property # <<<<<<<<<<<<<< + * def mem_id(self): + * """Get the mem_id attribute of the node. +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_4Node_6mem_id_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_10selectolax_6parser_4Node_6mem_id_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6parser_4Node_6mem_id___get__(((struct __pyx_obj_10selectolax_6parser_Node *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_4Node_6mem_id___get__(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + + /* "selectolax/modest/node.pxi":233 + * text : int + * """ + * return self.node # <<<<<<<<<<<<<< + * + * @property +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyLong_FromSize_t(((size_t)__pyx_v_self->node)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 233, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "selectolax/modest/node.pxi":225 + * return attributes + * + * @property # <<<<<<<<<<<<<< + * def mem_id(self): + * """Get the mem_id attribute of the node. +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("selectolax.parser.Node.mem_id.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/modest/node.pxi":235 + * return self.node + * + * @property # <<<<<<<<<<<<<< + * def id(self): + * """Get the id attribute of the node. +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_4Node_2id_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_10selectolax_6parser_4Node_2id_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6parser_4Node_2id___get__(((struct __pyx_obj_10selectolax_6parser_Node *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_4Node_2id___get__(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self) { + char *__pyx_v_key; + myhtml_tree_attr_t *__pyx_v_attr; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + size_t __pyx_t_6; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + + /* "selectolax/modest/node.pxi":245 + * text : str + * """ + * cdef char* key = 'id' # <<<<<<<<<<<<<< + * cdef myhtml_tree_attr_t *attr + * attr = myhtml_attribute_by_key(self.node, key, 2) +*/ + __pyx_v_key = ((char *)"id"); + + /* "selectolax/modest/node.pxi":247 + * cdef char* key = 'id' + * cdef myhtml_tree_attr_t *attr + * attr = myhtml_attribute_by_key(self.node, key, 2) # <<<<<<<<<<<<<< + * return None if attr == NULL else attr.value.data.decode(_ENCODING, self.parser.decode_errors) + * +*/ + __pyx_v_attr = myhtml_attribute_by_key(__pyx_v_self->node, __pyx_v_key, 2); + + /* "selectolax/modest/node.pxi":248 + * cdef myhtml_tree_attr_t *attr + * attr = myhtml_attribute_by_key(self.node, key, 2) + * return None if attr == NULL else attr.value.data.decode(_ENCODING, self.parser.decode_errors) # <<<<<<<<<<<<<< + * + * def __hash__(self): +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_2 = (__pyx_v_attr == NULL); + if (__pyx_t_2) { + __Pyx_INCREF(Py_None); + __pyx_t_1 = Py_None; + } else { + __pyx_t_5 = __Pyx_PyBytes_FromString(__pyx_v_attr->value.data); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 248, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_4 = __pyx_t_5; + __Pyx_INCREF(__pyx_t_4); + __pyx_t_6 = 0; + { + PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_UTF_8, __pyx_v_self->parser->decode_errors}; + __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_decode, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 248, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __pyx_t_1 = __pyx_t_3; + __pyx_t_3 = 0; + } + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "selectolax/modest/node.pxi":235 + * return self.node + * + * @property # <<<<<<<<<<<<<< + * def id(self): + * """Get the id attribute of the node. +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_AddTraceback("selectolax.parser.Node.id.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/modest/node.pxi":250 + * return None if attr == NULL else attr.value.data.decode(_ENCODING, self.parser.decode_errors) + * + * def __hash__(self): # <<<<<<<<<<<<<< + * return self.mem_id + * +*/ + +/* Python wrapper */ +static Py_hash_t __pyx_pw_10selectolax_6parser_4Node_1__hash__(PyObject *__pyx_v_self); /*proto*/ +static Py_hash_t __pyx_pw_10selectolax_6parser_4Node_1__hash__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + Py_hash_t __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__hash__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6parser_4Node___hash__(((struct __pyx_obj_10selectolax_6parser_Node *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static Py_hash_t __pyx_pf_10selectolax_6parser_4Node___hash__(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self) { + Py_hash_t __pyx_r; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + Py_hash_t __pyx_t_2; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__hash__", 0); + + /* "selectolax/modest/node.pxi":251 + * + * def __hash__(self): + * return self.mem_id # <<<<<<<<<<<<<< + * + * def text(self, bool deep=True, str separator='', bool strip=False): +*/ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_mem_id); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 251, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyLong_AsHash_t(__pyx_t_1); if (unlikely((__pyx_t_2 == (Py_hash_t)-1) && PyErr_Occurred())) __PYX_ERR(3, 251, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_r = __pyx_t_2; + goto __pyx_L0; + + /* "selectolax/modest/node.pxi":250 + * return None if attr == NULL else attr.value.data.decode(_ENCODING, self.parser.decode_errors) + * + * def __hash__(self): # <<<<<<<<<<<<<< + * return self.mem_id + * +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("selectolax.parser.Node.__hash__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + if (unlikely(__pyx_r == -1) && !PyErr_Occurred()) __pyx_r = -2; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/modest/node.pxi":253 + * return self.mem_id + * + * def text(self, bool deep=True, str separator='', bool strip=False): # <<<<<<<<<<<<<< + * """Returns the text of the node including text of all its child nodes. + * +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_4Node_3text(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6parser_4Node_2text, "Node.text(self, bool deep=True, str separator='', bool strip=False)\n\nReturns the text of the node including text of all its child nodes.\n\nParameters\n----------\nstrip : bool, default False\n If true, calls ``str.strip()`` on each text part to remove extra white spaces.\nseparator : str, default ''\n The separator to use when joining text from different nodes.\ndeep : bool, default True\n If True, includes text from all child nodes.\n\nReturns\n-------\ntext : str"); +static PyMethodDef __pyx_mdef_10selectolax_6parser_4Node_3text = {"text", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_4Node_3text, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_4Node_2text}; +static PyObject *__pyx_pw_10selectolax_6parser_4Node_3text(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyLongObject *__pyx_v_deep = 0; + PyObject *__pyx_v_separator = 0; + PyLongObject *__pyx_v_strip = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[3] = {0,0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("text (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_deep,&__pyx_mstate_global->__pyx_n_u_separator,&__pyx_mstate_global->__pyx_n_u_strip,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(3, 253, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 3: + values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(3, 253, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(3, 253, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(3, 253, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "text", 0) < (0)) __PYX_ERR(3, 253, __pyx_L3_error) + if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)((PyLongObject *)Py_True)); + if (!values[1]) values[1] = __Pyx_NewRef(((PyObject*)__pyx_mstate_global->__pyx_kp_u_)); + if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)((PyLongObject *)Py_False)); + } else { + switch (__pyx_nargs) { + case 3: + values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(3, 253, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(3, 253, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(3, 253, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)((PyLongObject *)Py_True)); + if (!values[1]) values[1] = __Pyx_NewRef(((PyObject*)__pyx_mstate_global->__pyx_kp_u_)); + if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)((PyLongObject *)Py_False)); + } + __pyx_v_deep = ((PyLongObject *)values[0]); + __pyx_v_separator = ((PyObject*)values[1]); + __pyx_v_strip = ((PyLongObject *)values[2]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("text", 0, 0, 3, __pyx_nargs); __PYX_ERR(3, 253, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.parser.Node.text", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_deep), __pyx_mstate_global->__pyx_ptype_7cpython_4bool_bool, 1, "deep", 0))) __PYX_ERR(3, 253, __pyx_L1_error) + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_separator), (&PyUnicode_Type), 1, "separator", 1))) __PYX_ERR(3, 253, __pyx_L1_error) + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_strip), __pyx_mstate_global->__pyx_ptype_7cpython_4bool_bool, 1, "strip", 0))) __PYX_ERR(3, 253, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6parser_4Node_2text(((struct __pyx_obj_10selectolax_6parser_Node *)__pyx_v_self), __pyx_v_deep, __pyx_v_separator, __pyx_v_strip); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_4Node_2text(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self, PyLongObject *__pyx_v_deep, PyObject *__pyx_v_separator, PyLongObject *__pyx_v_strip) { + PyObject *__pyx_v_text = NULL; + char const *__pyx_v_c_text; + myhtml_tree_node_t *__pyx_v_node; + PyObject *__pyx_v_node_text = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + myhtml_tree_node_t *__pyx_t_1; + int __pyx_t_2; + int __pyx_t_3; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + size_t __pyx_t_7; + struct __pyx_opt_args_10selectolax_6parser_append_text __pyx_t_8; + struct __pyx_opt_args_10selectolax_6parser_4Node__text_deep __pyx_t_9; + Py_ssize_t __pyx_t_10; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("text", 0); + + /* "selectolax/modest/node.pxi":270 + * + * """ + * text = "" # <<<<<<<<<<<<<< + * cdef const char* c_text + * cdef myhtml_tree_node_t *node = self.node.child +*/ + __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u_); + __pyx_v_text = __pyx_mstate_global->__pyx_kp_u_; + + /* "selectolax/modest/node.pxi":272 + * text = "" + * cdef const char* c_text + * cdef myhtml_tree_node_t *node = self.node.child # <<<<<<<<<<<<<< + * + * if not deep: +*/ + __pyx_t_1 = __pyx_v_self->node->child; + __pyx_v_node = __pyx_t_1; + + /* "selectolax/modest/node.pxi":274 + * cdef myhtml_tree_node_t *node = self.node.child + * + * if not deep: # <<<<<<<<<<<<<< + * if self.node.tag_id == MyHTML_TAG__TEXT: + * c_text = myhtml_node_text(self.node, NULL) +*/ + __pyx_t_2 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_v_deep)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(3, 274, __pyx_L1_error) + __pyx_t_3 = (!__pyx_t_2); + if (__pyx_t_3) { + + /* "selectolax/modest/node.pxi":275 + * + * if not deep: + * if self.node.tag_id == MyHTML_TAG__TEXT: # <<<<<<<<<<<<<< + * c_text = myhtml_node_text(self.node, NULL) + * if c_text != NULL: +*/ + __pyx_t_3 = (__pyx_v_self->node->tag_id == MyHTML_TAG__TEXT); + if (__pyx_t_3) { + + /* "selectolax/modest/node.pxi":276 + * if not deep: + * if self.node.tag_id == MyHTML_TAG__TEXT: + * c_text = myhtml_node_text(self.node, NULL) # <<<<<<<<<<<<<< + * if c_text != NULL: + * node_text = c_text.decode(_ENCODING, self.parser.decode_errors) +*/ + __pyx_v_c_text = myhtml_node_text(__pyx_v_self->node, NULL); + + /* "selectolax/modest/node.pxi":277 + * if self.node.tag_id == MyHTML_TAG__TEXT: + * c_text = myhtml_node_text(self.node, NULL) + * if c_text != NULL: # <<<<<<<<<<<<<< + * node_text = c_text.decode(_ENCODING, self.parser.decode_errors) + * text = append_text(text, node_text, separator, strip) +*/ + __pyx_t_3 = (__pyx_v_c_text != NULL); + if (__pyx_t_3) { + + /* "selectolax/modest/node.pxi":278 + * c_text = myhtml_node_text(self.node, NULL) + * if c_text != NULL: + * node_text = c_text.decode(_ENCODING, self.parser.decode_errors) # <<<<<<<<<<<<<< + * text = append_text(text, node_text, separator, strip) + * +*/ + __pyx_t_6 = __Pyx_PyBytes_FromString(__pyx_v_c_text); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 278, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_5 = __pyx_t_6; + __Pyx_INCREF(__pyx_t_5); + __pyx_t_7 = 0; + { + PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_UTF_8, __pyx_v_self->parser->decode_errors}; + __pyx_t_4 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_decode, __pyx_callargs+__pyx_t_7, (3-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 278, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + } + __pyx_v_node_text = __pyx_t_4; + __pyx_t_4 = 0; + + /* "selectolax/modest/node.pxi":279 + * if c_text != NULL: + * node_text = c_text.decode(_ENCODING, self.parser.decode_errors) + * text = append_text(text, node_text, separator, strip) # <<<<<<<<<<<<<< + * + * while node != NULL: +*/ + __pyx_t_4 = __pyx_v_text; + __Pyx_INCREF(__pyx_t_4); + if (!(likely(PyUnicode_CheckExact(__pyx_t_4)) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_4))) __PYX_ERR(3, 279, __pyx_L1_error) + __pyx_t_6 = __pyx_v_node_text; + __Pyx_INCREF(__pyx_t_6); + if (!(likely(PyUnicode_CheckExact(__pyx_t_6)) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_6))) __PYX_ERR(3, 279, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_v_strip)); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 279, __pyx_L1_error) + __pyx_t_8.__pyx_n = 2; + __pyx_t_8.separator = __pyx_v_separator; + __pyx_t_8.strip = __pyx_t_3; + __pyx_t_5 = __pyx_f_10selectolax_6parser_append_text(((PyObject*)__pyx_t_4), ((PyObject*)__pyx_t_6), &__pyx_t_8); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 279, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF_SET(__pyx_v_text, __pyx_t_5); + __pyx_t_5 = 0; + + /* "selectolax/modest/node.pxi":277 + * if self.node.tag_id == MyHTML_TAG__TEXT: + * c_text = myhtml_node_text(self.node, NULL) + * if c_text != NULL: # <<<<<<<<<<<<<< + * node_text = c_text.decode(_ENCODING, self.parser.decode_errors) + * text = append_text(text, node_text, separator, strip) +*/ + } + + /* "selectolax/modest/node.pxi":275 + * + * if not deep: + * if self.node.tag_id == MyHTML_TAG__TEXT: # <<<<<<<<<<<<<< + * c_text = myhtml_node_text(self.node, NULL) + * if c_text != NULL: +*/ + } + + /* "selectolax/modest/node.pxi":281 + * text = append_text(text, node_text, separator, strip) + * + * while node != NULL: # <<<<<<<<<<<<<< + * if node.tag_id == MyHTML_TAG__TEXT: + * c_text = myhtml_node_text(node, NULL) +*/ + while (1) { + __pyx_t_3 = (__pyx_v_node != NULL); + if (!__pyx_t_3) break; + + /* "selectolax/modest/node.pxi":282 + * + * while node != NULL: + * if node.tag_id == MyHTML_TAG__TEXT: # <<<<<<<<<<<<<< + * c_text = myhtml_node_text(node, NULL) + * if c_text != NULL: +*/ + __pyx_t_3 = (__pyx_v_node->tag_id == MyHTML_TAG__TEXT); + if (__pyx_t_3) { + + /* "selectolax/modest/node.pxi":283 + * while node != NULL: + * if node.tag_id == MyHTML_TAG__TEXT: + * c_text = myhtml_node_text(node, NULL) # <<<<<<<<<<<<<< + * if c_text != NULL: + * node_text = c_text.decode(_ENCODING, self.parser.decode_errors) +*/ + __pyx_v_c_text = myhtml_node_text(__pyx_v_node, NULL); + + /* "selectolax/modest/node.pxi":284 + * if node.tag_id == MyHTML_TAG__TEXT: + * c_text = myhtml_node_text(node, NULL) + * if c_text != NULL: # <<<<<<<<<<<<<< + * node_text = c_text.decode(_ENCODING, self.parser.decode_errors) + * text = append_text(text, node_text, separator, strip) +*/ + __pyx_t_3 = (__pyx_v_c_text != NULL); + if (__pyx_t_3) { + + /* "selectolax/modest/node.pxi":285 + * c_text = myhtml_node_text(node, NULL) + * if c_text != NULL: + * node_text = c_text.decode(_ENCODING, self.parser.decode_errors) # <<<<<<<<<<<<<< + * text = append_text(text, node_text, separator, strip) + * node = node.next +*/ + __pyx_t_4 = __Pyx_PyBytes_FromString(__pyx_v_c_text); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 285, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_6 = __pyx_t_4; + __Pyx_INCREF(__pyx_t_6); + __pyx_t_7 = 0; + { + PyObject *__pyx_callargs[3] = {__pyx_t_6, __pyx_mstate_global->__pyx_kp_u_UTF_8, __pyx_v_self->parser->decode_errors}; + __pyx_t_5 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_decode, __pyx_callargs+__pyx_t_7, (3-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 285, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + } + __Pyx_XDECREF_SET(__pyx_v_node_text, __pyx_t_5); + __pyx_t_5 = 0; + + /* "selectolax/modest/node.pxi":286 + * if c_text != NULL: + * node_text = c_text.decode(_ENCODING, self.parser.decode_errors) + * text = append_text(text, node_text, separator, strip) # <<<<<<<<<<<<<< + * node = node.next + * else: +*/ + __pyx_t_5 = __pyx_v_text; + __Pyx_INCREF(__pyx_t_5); + if (!(likely(PyUnicode_CheckExact(__pyx_t_5))||((__pyx_t_5) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_5))) __PYX_ERR(3, 286, __pyx_L1_error) + __pyx_t_4 = __pyx_v_node_text; + __Pyx_INCREF(__pyx_t_4); + if (!(likely(PyUnicode_CheckExact(__pyx_t_4)) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_4))) __PYX_ERR(3, 286, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_v_strip)); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 286, __pyx_L1_error) + __pyx_t_8.__pyx_n = 2; + __pyx_t_8.separator = __pyx_v_separator; + __pyx_t_8.strip = __pyx_t_3; + __pyx_t_6 = __pyx_f_10selectolax_6parser_append_text(((PyObject*)__pyx_t_5), ((PyObject*)__pyx_t_4), &__pyx_t_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 286, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF_SET(__pyx_v_text, __pyx_t_6); + __pyx_t_6 = 0; + + /* "selectolax/modest/node.pxi":284 + * if node.tag_id == MyHTML_TAG__TEXT: + * c_text = myhtml_node_text(node, NULL) + * if c_text != NULL: # <<<<<<<<<<<<<< + * node_text = c_text.decode(_ENCODING, self.parser.decode_errors) + * text = append_text(text, node_text, separator, strip) +*/ + } + + /* "selectolax/modest/node.pxi":282 + * + * while node != NULL: + * if node.tag_id == MyHTML_TAG__TEXT: # <<<<<<<<<<<<<< + * c_text = myhtml_node_text(node, NULL) + * if c_text != NULL: +*/ + } + + /* "selectolax/modest/node.pxi":287 + * node_text = c_text.decode(_ENCODING, self.parser.decode_errors) + * text = append_text(text, node_text, separator, strip) + * node = node.next # <<<<<<<<<<<<<< + * else: + * text = self._text_deep(self.node, separator=separator, strip=strip) +*/ + __pyx_t_1 = __pyx_v_node->next; + __pyx_v_node = __pyx_t_1; + } + + /* "selectolax/modest/node.pxi":274 + * cdef myhtml_tree_node_t *node = self.node.child + * + * if not deep: # <<<<<<<<<<<<<< + * if self.node.tag_id == MyHTML_TAG__TEXT: + * c_text = myhtml_node_text(self.node, NULL) +*/ + goto __pyx_L3; + } + + /* "selectolax/modest/node.pxi":289 + * node = node.next + * else: + * text = self._text_deep(self.node, separator=separator, strip=strip) # <<<<<<<<<<<<<< + * if separator and text and text.endswith(separator): + * text = text[:-len(separator)] +*/ + /*else*/ { + __pyx_t_9.__pyx_n = 2; + __pyx_t_9.separator = __pyx_v_separator; + __pyx_t_9.strip = ((PyObject *)__pyx_v_strip); + __pyx_t_6 = __pyx_f_10selectolax_6parser_4Node__text_deep(__pyx_v_self, __pyx_v_self->node, &__pyx_t_9); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 289, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF_SET(__pyx_v_text, __pyx_t_6); + __pyx_t_6 = 0; + } + __pyx_L3:; + + /* "selectolax/modest/node.pxi":290 + * else: + * text = self._text_deep(self.node, separator=separator, strip=strip) + * if separator and text and text.endswith(separator): # <<<<<<<<<<<<<< + * text = text[:-len(separator)] + * return text +*/ + if (__pyx_v_separator == Py_None) __pyx_t_2 = 0; + else + { + Py_ssize_t __pyx_temp = __Pyx_PyUnicode_IS_TRUE(__pyx_v_separator); + if (unlikely(((!CYTHON_ASSUME_SAFE_SIZE) && __pyx_temp < 0))) __PYX_ERR(3, 290, __pyx_L1_error) + __pyx_t_2 = (__pyx_temp != 0); + } + + if (__pyx_t_2) { + } else { + __pyx_t_3 = __pyx_t_2; + goto __pyx_L11_bool_binop_done; + } + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_text); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(3, 290, __pyx_L1_error) + if (__pyx_t_2) { + } else { + __pyx_t_3 = __pyx_t_2; + goto __pyx_L11_bool_binop_done; + } + __pyx_t_4 = __pyx_v_text; + __Pyx_INCREF(__pyx_t_4); + __pyx_t_7 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_separator}; + __pyx_t_6 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_endswith, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 290, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + } + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(3, 290, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_3 = __pyx_t_2; + __pyx_L11_bool_binop_done:; + if (__pyx_t_3) { + + /* "selectolax/modest/node.pxi":291 + * text = self._text_deep(self.node, separator=separator, strip=strip) + * if separator and text and text.endswith(separator): + * text = text[:-len(separator)] # <<<<<<<<<<<<<< + * return text + * +*/ + if (unlikely(__pyx_v_separator == Py_None)) { + PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); + __PYX_ERR(3, 291, __pyx_L1_error) + } + __pyx_t_10 = __Pyx_PyUnicode_GET_LENGTH(__pyx_v_separator); if (unlikely(__pyx_t_10 == ((Py_ssize_t)-1))) __PYX_ERR(3, 291, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_GetSlice(__pyx_v_text, 0, (-__pyx_t_10), NULL, NULL, NULL, 0, 1, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 291, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF_SET(__pyx_v_text, __pyx_t_6); + __pyx_t_6 = 0; + + /* "selectolax/modest/node.pxi":290 + * else: + * text = self._text_deep(self.node, separator=separator, strip=strip) + * if separator and text and text.endswith(separator): # <<<<<<<<<<<<<< + * text = text[:-len(separator)] + * return text +*/ + } + + /* "selectolax/modest/node.pxi":292 + * if separator and text and text.endswith(separator): + * text = text[:-len(separator)] + * return text # <<<<<<<<<<<<<< + * + * cdef inline _text_deep(self, myhtml_tree_node_t *node, separator='', strip=False): +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_text); + __pyx_r = __pyx_v_text; + goto __pyx_L0; + + /* "selectolax/modest/node.pxi":253 + * return self.mem_id + * + * def text(self, bool deep=True, str separator='', bool strip=False): # <<<<<<<<<<<<<< + * """Returns the text of the node including text of all its child nodes. + * +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_AddTraceback("selectolax.parser.Node.text", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_text); + __Pyx_XDECREF(__pyx_v_node_text); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/modest/node.pxi":294 + * return text + * + * cdef inline _text_deep(self, myhtml_tree_node_t *node, separator='', strip=False): # <<<<<<<<<<<<<< + * text = "" + * cdef Stack stack = Stack(_STACK_SIZE) +*/ + +static CYTHON_INLINE PyObject *__pyx_f_10selectolax_6parser_4Node__text_deep(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self, myhtml_tree_node_t *__pyx_v_node, struct __pyx_opt_args_10selectolax_6parser_4Node__text_deep *__pyx_optional_args) { + PyObject *__pyx_v_separator = ((PyObject *)__pyx_mstate_global->__pyx_kp_u_); + PyObject *__pyx_v_strip = ((PyObject *)Py_False); + PyObject *__pyx_v_text = NULL; + struct __pyx_obj_10selectolax_6parser_Stack *__pyx_v_stack = 0; + myhtml_tree_node_t *__pyx_v_current_node; + char const *__pyx_v_c_text; + PyObject *__pyx_v_node_text = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + size_t __pyx_t_3; + int __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + struct __pyx_opt_args_10selectolax_6parser_append_text __pyx_t_6; + int __pyx_t_7; + int __pyx_t_8; + myhtml_tree_node_t *__pyx_t_9; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("_text_deep", 0); + if (__pyx_optional_args) { + if (__pyx_optional_args->__pyx_n > 0) { + __pyx_v_separator = __pyx_optional_args->separator; + if (__pyx_optional_args->__pyx_n > 1) { + __pyx_v_strip = __pyx_optional_args->strip; + } + } + } + + /* "selectolax/modest/node.pxi":295 + * + * cdef inline _text_deep(self, myhtml_tree_node_t *node, separator='', strip=False): + * text = "" # <<<<<<<<<<<<<< + * cdef Stack stack = Stack(_STACK_SIZE) + * cdef myhtml_tree_node_t* current_node = NULL +*/ + __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u_); + __pyx_v_text = __pyx_mstate_global->__pyx_kp_u_; + + /* "selectolax/modest/node.pxi":296 + * cdef inline _text_deep(self, myhtml_tree_node_t *node, separator='', strip=False): + * text = "" + * cdef Stack stack = Stack(_STACK_SIZE) # <<<<<<<<<<<<<< + * cdef myhtml_tree_node_t* current_node = NULL + * +*/ + __pyx_t_2 = NULL; + __pyx_t_3 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_int_100}; + __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_10selectolax_6parser_Stack, __pyx_callargs+__pyx_t_3, (2-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 296, __pyx_L1_error) + __Pyx_GOTREF((PyObject *)__pyx_t_1); + } + __pyx_v_stack = ((struct __pyx_obj_10selectolax_6parser_Stack *)__pyx_t_1); + __pyx_t_1 = 0; + + /* "selectolax/modest/node.pxi":297 + * text = "" + * cdef Stack stack = Stack(_STACK_SIZE) + * cdef myhtml_tree_node_t* current_node = NULL # <<<<<<<<<<<<<< + * + * if node.tag_id == MyHTML_TAG__TEXT: +*/ + __pyx_v_current_node = NULL; + + /* "selectolax/modest/node.pxi":299 + * cdef myhtml_tree_node_t* current_node = NULL + * + * if node.tag_id == MyHTML_TAG__TEXT: # <<<<<<<<<<<<<< + * c_text = myhtml_node_text(node, NULL) + * if c_text != NULL: +*/ + __pyx_t_4 = (__pyx_v_node->tag_id == MyHTML_TAG__TEXT); + if (__pyx_t_4) { + + /* "selectolax/modest/node.pxi":300 + * + * if node.tag_id == MyHTML_TAG__TEXT: + * c_text = myhtml_node_text(node, NULL) # <<<<<<<<<<<<<< + * if c_text != NULL: + * node_text = c_text.decode(_ENCODING, self.parser.decode_errors) +*/ + __pyx_v_c_text = myhtml_node_text(__pyx_v_node, NULL); + + /* "selectolax/modest/node.pxi":301 + * if node.tag_id == MyHTML_TAG__TEXT: + * c_text = myhtml_node_text(node, NULL) + * if c_text != NULL: # <<<<<<<<<<<<<< + * node_text = c_text.decode(_ENCODING, self.parser.decode_errors) + * text = append_text(text, node_text, separator, strip) +*/ + __pyx_t_4 = (__pyx_v_c_text != NULL); + if (__pyx_t_4) { + + /* "selectolax/modest/node.pxi":302 + * c_text = myhtml_node_text(node, NULL) + * if c_text != NULL: + * node_text = c_text.decode(_ENCODING, self.parser.decode_errors) # <<<<<<<<<<<<<< + * text = append_text(text, node_text, separator, strip) + * +*/ + __pyx_t_5 = __Pyx_PyBytes_FromString(__pyx_v_c_text); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 302, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_2 = __pyx_t_5; + __Pyx_INCREF(__pyx_t_2); + __pyx_t_3 = 0; + { + PyObject *__pyx_callargs[3] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_UTF_8, __pyx_v_self->parser->decode_errors}; + __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_decode, __pyx_callargs+__pyx_t_3, (3-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 302, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __pyx_v_node_text = __pyx_t_1; + __pyx_t_1 = 0; + + /* "selectolax/modest/node.pxi":303 + * if c_text != NULL: + * node_text = c_text.decode(_ENCODING, self.parser.decode_errors) + * text = append_text(text, node_text, separator, strip) # <<<<<<<<<<<<<< + * + * if node.child == NULL: +*/ + __pyx_t_1 = __pyx_v_node_text; + __Pyx_INCREF(__pyx_t_1); + if (!(likely(PyUnicode_CheckExact(__pyx_t_1)) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_1))) __PYX_ERR(3, 303, __pyx_L1_error) + __pyx_t_5 = __pyx_v_separator; + __Pyx_INCREF(__pyx_t_5); + if (!(likely(PyUnicode_CheckExact(__pyx_t_5))||((__pyx_t_5) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_5))) __PYX_ERR(3, 303, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_strip); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 303, __pyx_L1_error) + __pyx_t_6.__pyx_n = 2; + __pyx_t_6.separator = ((PyObject*)__pyx_t_5); + __pyx_t_6.strip = __pyx_t_4; + __pyx_t_2 = __pyx_f_10selectolax_6parser_append_text(__pyx_v_text, ((PyObject*)__pyx_t_1), &__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 303, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF_SET(__pyx_v_text, ((PyObject*)__pyx_t_2)); + __pyx_t_2 = 0; + + /* "selectolax/modest/node.pxi":301 + * if node.tag_id == MyHTML_TAG__TEXT: + * c_text = myhtml_node_text(node, NULL) + * if c_text != NULL: # <<<<<<<<<<<<<< + * node_text = c_text.decode(_ENCODING, self.parser.decode_errors) + * text = append_text(text, node_text, separator, strip) +*/ + } + + /* "selectolax/modest/node.pxi":299 + * cdef myhtml_tree_node_t* current_node = NULL + * + * if node.tag_id == MyHTML_TAG__TEXT: # <<<<<<<<<<<<<< + * c_text = myhtml_node_text(node, NULL) + * if c_text != NULL: +*/ + } + + /* "selectolax/modest/node.pxi":305 + * text = append_text(text, node_text, separator, strip) + * + * if node.child == NULL: # <<<<<<<<<<<<<< + * return text + * +*/ + __pyx_t_4 = (__pyx_v_node->child == NULL); + if (__pyx_t_4) { + + /* "selectolax/modest/node.pxi":306 + * + * if node.child == NULL: + * return text # <<<<<<<<<<<<<< + * + * stack.push(node.child) +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_text); + __pyx_r = __pyx_v_text; + goto __pyx_L0; + + /* "selectolax/modest/node.pxi":305 + * text = append_text(text, node_text, separator, strip) + * + * if node.child == NULL: # <<<<<<<<<<<<<< + * return text + * +*/ + } + + /* "selectolax/modest/node.pxi":308 + * return text + * + * stack.push(node.child) # <<<<<<<<<<<<<< + * + * # Depth-first left-to-right tree traversal +*/ + __pyx_t_7 = __pyx_f_10selectolax_6parser_5Stack_push(__pyx_v_stack, __pyx_v_node->child); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(3, 308, __pyx_L1_error) + + /* "selectolax/modest/node.pxi":311 + * + * # Depth-first left-to-right tree traversal + * while not stack.is_empty(): # <<<<<<<<<<<<<< + * current_node = stack.pop() + * +*/ + while (1) { + __pyx_t_4 = __pyx_f_10selectolax_6parser_5Stack_is_empty(__pyx_v_stack); if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 311, __pyx_L1_error) + __pyx_t_8 = (!__pyx_t_4); + if (!__pyx_t_8) break; + + /* "selectolax/modest/node.pxi":312 + * # Depth-first left-to-right tree traversal + * while not stack.is_empty(): + * current_node = stack.pop() # <<<<<<<<<<<<<< + * + * if current_node != NULL: +*/ + __pyx_t_9 = __pyx_f_10selectolax_6parser_5Stack_pop(__pyx_v_stack); if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 312, __pyx_L1_error) + __pyx_v_current_node = __pyx_t_9; + + /* "selectolax/modest/node.pxi":314 + * current_node = stack.pop() + * + * if current_node != NULL: # <<<<<<<<<<<<<< + * if current_node.tag_id == MyHTML_TAG__TEXT: + * c_text = myhtml_node_text(current_node, NULL) +*/ + __pyx_t_8 = (__pyx_v_current_node != NULL); + if (__pyx_t_8) { + + /* "selectolax/modest/node.pxi":315 + * + * if current_node != NULL: + * if current_node.tag_id == MyHTML_TAG__TEXT: # <<<<<<<<<<<<<< + * c_text = myhtml_node_text(current_node, NULL) + * if c_text != NULL: +*/ + __pyx_t_8 = (__pyx_v_current_node->tag_id == MyHTML_TAG__TEXT); + if (__pyx_t_8) { + + /* "selectolax/modest/node.pxi":316 + * if current_node != NULL: + * if current_node.tag_id == MyHTML_TAG__TEXT: + * c_text = myhtml_node_text(current_node, NULL) # <<<<<<<<<<<<<< + * if c_text != NULL: + * node_text = c_text.decode(_ENCODING, self.parser.decode_errors) +*/ + __pyx_v_c_text = myhtml_node_text(__pyx_v_current_node, NULL); + + /* "selectolax/modest/node.pxi":317 + * if current_node.tag_id == MyHTML_TAG__TEXT: + * c_text = myhtml_node_text(current_node, NULL) + * if c_text != NULL: # <<<<<<<<<<<<<< + * node_text = c_text.decode(_ENCODING, self.parser.decode_errors) + * text = append_text(text, node_text, separator, strip) +*/ + __pyx_t_8 = (__pyx_v_c_text != NULL); + if (__pyx_t_8) { + + /* "selectolax/modest/node.pxi":318 + * c_text = myhtml_node_text(current_node, NULL) + * if c_text != NULL: + * node_text = c_text.decode(_ENCODING, self.parser.decode_errors) # <<<<<<<<<<<<<< + * text = append_text(text, node_text, separator, strip) + * +*/ + __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_c_text); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 318, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_5 = __pyx_t_1; + __Pyx_INCREF(__pyx_t_5); + __pyx_t_3 = 0; + { + PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_UTF_8, __pyx_v_self->parser->decode_errors}; + __pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_decode, __pyx_callargs+__pyx_t_3, (3-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 318, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + } + __Pyx_XDECREF_SET(__pyx_v_node_text, __pyx_t_2); + __pyx_t_2 = 0; + + /* "selectolax/modest/node.pxi":319 + * if c_text != NULL: + * node_text = c_text.decode(_ENCODING, self.parser.decode_errors) + * text = append_text(text, node_text, separator, strip) # <<<<<<<<<<<<<< + * + * if current_node.next is not NULL: +*/ + __pyx_t_2 = __pyx_v_node_text; + __Pyx_INCREF(__pyx_t_2); + if (!(likely(PyUnicode_CheckExact(__pyx_t_2)) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(3, 319, __pyx_L1_error) + __pyx_t_1 = __pyx_v_separator; + __Pyx_INCREF(__pyx_t_1); + if (!(likely(PyUnicode_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_1))) __PYX_ERR(3, 319, __pyx_L1_error) + __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_strip); if (unlikely((__pyx_t_8 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 319, __pyx_L1_error) + __pyx_t_6.__pyx_n = 2; + __pyx_t_6.separator = ((PyObject*)__pyx_t_1); + __pyx_t_6.strip = __pyx_t_8; + __pyx_t_5 = __pyx_f_10selectolax_6parser_append_text(__pyx_v_text, ((PyObject*)__pyx_t_2), &__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 319, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF_SET(__pyx_v_text, ((PyObject*)__pyx_t_5)); + __pyx_t_5 = 0; + + /* "selectolax/modest/node.pxi":317 + * if current_node.tag_id == MyHTML_TAG__TEXT: + * c_text = myhtml_node_text(current_node, NULL) + * if c_text != NULL: # <<<<<<<<<<<<<< + * node_text = c_text.decode(_ENCODING, self.parser.decode_errors) + * text = append_text(text, node_text, separator, strip) +*/ + } + + /* "selectolax/modest/node.pxi":315 + * + * if current_node != NULL: + * if current_node.tag_id == MyHTML_TAG__TEXT: # <<<<<<<<<<<<<< + * c_text = myhtml_node_text(current_node, NULL) + * if c_text != NULL: +*/ + } + + /* "selectolax/modest/node.pxi":314 + * current_node = stack.pop() + * + * if current_node != NULL: # <<<<<<<<<<<<<< + * if current_node.tag_id == MyHTML_TAG__TEXT: + * c_text = myhtml_node_text(current_node, NULL) +*/ + } + + /* "selectolax/modest/node.pxi":321 + * text = append_text(text, node_text, separator, strip) + * + * if current_node.next is not NULL: # <<<<<<<<<<<<<< + * stack.push(current_node.next) + * +*/ + __pyx_t_8 = (__pyx_v_current_node->next != NULL); + if (__pyx_t_8) { + + /* "selectolax/modest/node.pxi":322 + * + * if current_node.next is not NULL: + * stack.push(current_node.next) # <<<<<<<<<<<<<< + * + * if current_node.child is not NULL: +*/ + __pyx_t_7 = __pyx_f_10selectolax_6parser_5Stack_push(__pyx_v_stack, __pyx_v_current_node->next); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(3, 322, __pyx_L1_error) + + /* "selectolax/modest/node.pxi":321 + * text = append_text(text, node_text, separator, strip) + * + * if current_node.next is not NULL: # <<<<<<<<<<<<<< + * stack.push(current_node.next) + * +*/ + } + + /* "selectolax/modest/node.pxi":324 + * stack.push(current_node.next) + * + * if current_node.child is not NULL: # <<<<<<<<<<<<<< + * stack.push(current_node.child) + * +*/ + __pyx_t_8 = (__pyx_v_current_node->child != NULL); + if (__pyx_t_8) { + + /* "selectolax/modest/node.pxi":325 + * + * if current_node.child is not NULL: + * stack.push(current_node.child) # <<<<<<<<<<<<<< + * + * return text +*/ + __pyx_t_7 = __pyx_f_10selectolax_6parser_5Stack_push(__pyx_v_stack, __pyx_v_current_node->child); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(3, 325, __pyx_L1_error) + + /* "selectolax/modest/node.pxi":324 + * stack.push(current_node.next) + * + * if current_node.child is not NULL: # <<<<<<<<<<<<<< + * stack.push(current_node.child) + * +*/ + } + } + + /* "selectolax/modest/node.pxi":327 + * stack.push(current_node.child) + * + * return text # <<<<<<<<<<<<<< + * + * def iter(self, include_text=False): +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_text); + __pyx_r = __pyx_v_text; + goto __pyx_L0; + + /* "selectolax/modest/node.pxi":294 + * return text + * + * cdef inline _text_deep(self, myhtml_tree_node_t *node, separator='', strip=False): # <<<<<<<<<<<<<< + * text = "" + * cdef Stack stack = Stack(_STACK_SIZE) +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_AddTraceback("selectolax.parser.Node._text_deep", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_text); + __Pyx_XDECREF((PyObject *)__pyx_v_stack); + __Pyx_XDECREF(__pyx_v_node_text); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} +static PyObject *__pyx_gb_10selectolax_6parser_4Node_6generator3(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ + +/* "selectolax/modest/node.pxi":329 + * return text + * + * def iter(self, include_text=False): # <<<<<<<<<<<<<< + * """Iterate over nodes on the current level. + * +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_4Node_5iter(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6parser_4Node_4iter, "Node.iter(self, include_text=False)\n\nIterate over nodes on the current level.\n\nParameters\n----------\ninclude_text : bool\n If True, includes text nodes as well.\n\nYields\n-------\nnode"); +static PyMethodDef __pyx_mdef_10selectolax_6parser_4Node_5iter = {"iter", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_4Node_5iter, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_4Node_4iter}; +static PyObject *__pyx_pw_10selectolax_6parser_4Node_5iter(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_include_text = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("iter (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_include_text,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(3, 329, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(3, 329, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "iter", 0) < (0)) __PYX_ERR(3, 329, __pyx_L3_error) + if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)Py_False)); + } else { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(3, 329, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)Py_False)); + } + __pyx_v_include_text = values[0]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("iter", 0, 0, 1, __pyx_nargs); __PYX_ERR(3, 329, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.parser.Node.iter", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_10selectolax_6parser_4Node_4iter(((struct __pyx_obj_10selectolax_6parser_Node *)__pyx_v_self), __pyx_v_include_text); + + /* function exit code */ + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_4Node_4iter(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self, PyObject *__pyx_v_include_text) { + struct __pyx_obj_10selectolax_6parser___pyx_scope_struct_3_iter *__pyx_cur_scope; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("iter", 0); + __pyx_cur_scope = (struct __pyx_obj_10selectolax_6parser___pyx_scope_struct_3_iter *)__pyx_tp_new_10selectolax_6parser___pyx_scope_struct_3_iter(__pyx_mstate_global->__pyx_ptype_10selectolax_6parser___pyx_scope_struct_3_iter, __pyx_mstate_global->__pyx_empty_tuple, NULL); + if (unlikely(!__pyx_cur_scope)) { + __pyx_cur_scope = ((struct __pyx_obj_10selectolax_6parser___pyx_scope_struct_3_iter *)Py_None); + __Pyx_INCREF(Py_None); + __PYX_ERR(3, 329, __pyx_L1_error) + } else { + __Pyx_GOTREF((PyObject *)__pyx_cur_scope); + } + __pyx_cur_scope->__pyx_v_self = __pyx_v_self; + __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self); + __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self); + __pyx_cur_scope->__pyx_v_include_text = __pyx_v_include_text; + __Pyx_INCREF(__pyx_cur_scope->__pyx_v_include_text); + __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_include_text); + { + __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_10selectolax_6parser_4Node_6generator3, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[3]), (PyObject *) __pyx_cur_scope, __pyx_mstate_global->__pyx_n_u_iter_2, __pyx_mstate_global->__pyx_n_u_Node_iter, __pyx_mstate_global->__pyx_n_u_selectolax_parser); if (unlikely(!gen)) __PYX_ERR(3, 329, __pyx_L1_error) + __Pyx_DECREF(__pyx_cur_scope); + __Pyx_RefNannyFinishContext(); + return (PyObject *) gen; + } + + /* function exit code */ + __pyx_L1_error:; + __Pyx_AddTraceback("selectolax.parser.Node.iter", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_DECREF((PyObject *)__pyx_cur_scope); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_gb_10selectolax_6parser_4Node_6generator3(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ +{ + struct __pyx_obj_10selectolax_6parser___pyx_scope_struct_3_iter *__pyx_cur_scope = ((struct __pyx_obj_10selectolax_6parser___pyx_scope_struct_3_iter *)__pyx_generator->closure); + PyObject *__pyx_r = NULL; + myhtml_tree_node_t *__pyx_t_1; + int __pyx_t_2; + int __pyx_t_3; + int __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("iter", 0); + switch (__pyx_generator->resume_label) { + case 0: goto __pyx_L3_first_run; + case 1: goto __pyx_L9_resume_from_yield; + default: /* CPython raises the right error here */ + __Pyx_RefNannyFinishContext(); + return NULL; + } + __pyx_L3_first_run:; + if (unlikely(__pyx_sent_value != Py_None)) { + if (unlikely(__pyx_sent_value)) PyErr_SetString(PyExc_TypeError, "can't send non-None value to a just-started generator"); + __PYX_ERR(3, 329, __pyx_L1_error) + } + + /* "selectolax/modest/node.pxi":342 + * """ + * + * cdef myhtml_tree_node_t *node = self.node.child # <<<<<<<<<<<<<< + * cdef Node next_node + * +*/ + __pyx_t_1 = __pyx_cur_scope->__pyx_v_self->node->child; + __pyx_cur_scope->__pyx_v_node = __pyx_t_1; + + /* "selectolax/modest/node.pxi":345 + * cdef Node next_node + * + * while node != NULL: # <<<<<<<<<<<<<< + * if node.tag_id == MyHTML_TAG__TEXT and not include_text: + * node = node.next +*/ + while (1) { + __pyx_t_2 = (__pyx_cur_scope->__pyx_v_node != NULL); + if (!__pyx_t_2) break; + + /* "selectolax/modest/node.pxi":346 + * + * while node != NULL: + * if node.tag_id == MyHTML_TAG__TEXT and not include_text: # <<<<<<<<<<<<<< + * node = node.next + * continue +*/ + __pyx_t_3 = (__pyx_cur_scope->__pyx_v_node->tag_id == MyHTML_TAG__TEXT); + if (__pyx_t_3) { + } else { + __pyx_t_2 = __pyx_t_3; + goto __pyx_L7_bool_binop_done; + } + __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_include_text); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(3, 346, __pyx_L1_error) + __pyx_t_4 = (!__pyx_t_3); + __pyx_t_2 = __pyx_t_4; + __pyx_L7_bool_binop_done:; + if (__pyx_t_2) { + + /* "selectolax/modest/node.pxi":347 + * while node != NULL: + * if node.tag_id == MyHTML_TAG__TEXT and not include_text: + * node = node.next # <<<<<<<<<<<<<< + * continue + * +*/ + __pyx_t_1 = __pyx_cur_scope->__pyx_v_node->next; + __pyx_cur_scope->__pyx_v_node = __pyx_t_1; + + /* "selectolax/modest/node.pxi":348 + * if node.tag_id == MyHTML_TAG__TEXT and not include_text: + * node = node.next + * continue # <<<<<<<<<<<<<< + * + * next_node = Node.new(node, self.parser) +*/ + goto __pyx_L4_continue; + + /* "selectolax/modest/node.pxi":346 + * + * while node != NULL: + * if node.tag_id == MyHTML_TAG__TEXT and not include_text: # <<<<<<<<<<<<<< + * node = node.next + * continue +*/ + } + + /* "selectolax/modest/node.pxi":350 + * continue + * + * next_node = Node.new(node, self.parser) # <<<<<<<<<<<<<< + * yield next_node + * node = node.next +*/ + __pyx_t_5 = ((PyObject *)__pyx_cur_scope->__pyx_v_self->parser); + __Pyx_INCREF(__pyx_t_5); + __pyx_t_6 = ((PyObject *)__pyx_f_10selectolax_6parser_4Node_new(__pyx_cur_scope->__pyx_v_node, ((struct __pyx_obj_10selectolax_6parser_HTMLParser *)__pyx_t_5))); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 350, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_XGOTREF((PyObject *)__pyx_cur_scope->__pyx_v_next_node); + __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_next_node, ((struct __pyx_obj_10selectolax_6parser_Node *)__pyx_t_6)); + __Pyx_GIVEREF(__pyx_t_6); + __pyx_t_6 = 0; + + /* "selectolax/modest/node.pxi":351 + * + * next_node = Node.new(node, self.parser) + * yield next_node # <<<<<<<<<<<<<< + * node = node.next + * +*/ + __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_next_node); + __pyx_r = ((PyObject *)__pyx_cur_scope->__pyx_v_next_node); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, yielding value */ + __pyx_generator->resume_label = 1; + return __pyx_r; + __pyx_L9_resume_from_yield:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(3, 351, __pyx_L1_error) + + /* "selectolax/modest/node.pxi":352 + * next_node = Node.new(node, self.parser) + * yield next_node + * node = node.next # <<<<<<<<<<<<<< + * + * def traverse(self, include_text=False): +*/ + __pyx_t_1 = __pyx_cur_scope->__pyx_v_node->next; + __pyx_cur_scope->__pyx_v_node = __pyx_t_1; + __pyx_L4_continue:; + } + CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); + + /* "selectolax/modest/node.pxi":329 + * return text + * + * def iter(self, include_text=False): # <<<<<<<<<<<<<< + * """Iterate over nodes on the current level. + * +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + if (__Pyx_PyErr_Occurred()) { + __Pyx_Generator_Replace_StopIteration(0); + __Pyx_AddTraceback("iter", __pyx_clineno, __pyx_lineno, __pyx_filename); + } + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + #if !CYTHON_USE_EXC_INFO_STACK + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + #endif + __pyx_generator->resume_label = -1; + __Pyx_Coroutine_clear((PyObject*)__pyx_generator); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} +static PyObject *__pyx_gb_10selectolax_6parser_4Node_9generator4(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ + +/* "selectolax/modest/node.pxi":354 + * node = node.next + * + * def traverse(self, include_text=False): # <<<<<<<<<<<<<< + * """Iterate over all child and next nodes starting from the current level. + * +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_4Node_8traverse(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6parser_4Node_7traverse, "Node.traverse(self, include_text=False)\n\nIterate over all child and next nodes starting from the current level.\n\nParameters\n----------\ninclude_text : bool\n If True, includes text nodes as well.\n\nYields\n-------\nnode"); +static PyMethodDef __pyx_mdef_10selectolax_6parser_4Node_8traverse = {"traverse", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_4Node_8traverse, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_4Node_7traverse}; +static PyObject *__pyx_pw_10selectolax_6parser_4Node_8traverse(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_include_text = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("traverse (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_include_text,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(3, 354, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(3, 354, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "traverse", 0) < (0)) __PYX_ERR(3, 354, __pyx_L3_error) + if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)Py_False)); + } else { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(3, 354, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)Py_False)); + } + __pyx_v_include_text = values[0]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("traverse", 0, 0, 1, __pyx_nargs); __PYX_ERR(3, 354, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.parser.Node.traverse", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_10selectolax_6parser_4Node_7traverse(((struct __pyx_obj_10selectolax_6parser_Node *)__pyx_v_self), __pyx_v_include_text); + + /* function exit code */ + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_4Node_7traverse(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self, PyObject *__pyx_v_include_text) { + struct __pyx_obj_10selectolax_6parser___pyx_scope_struct_4_traverse *__pyx_cur_scope; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("traverse", 0); + __pyx_cur_scope = (struct __pyx_obj_10selectolax_6parser___pyx_scope_struct_4_traverse *)__pyx_tp_new_10selectolax_6parser___pyx_scope_struct_4_traverse(__pyx_mstate_global->__pyx_ptype_10selectolax_6parser___pyx_scope_struct_4_traverse, __pyx_mstate_global->__pyx_empty_tuple, NULL); + if (unlikely(!__pyx_cur_scope)) { + __pyx_cur_scope = ((struct __pyx_obj_10selectolax_6parser___pyx_scope_struct_4_traverse *)Py_None); + __Pyx_INCREF(Py_None); + __PYX_ERR(3, 354, __pyx_L1_error) + } else { + __Pyx_GOTREF((PyObject *)__pyx_cur_scope); + } + __pyx_cur_scope->__pyx_v_self = __pyx_v_self; + __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self); + __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self); + __pyx_cur_scope->__pyx_v_include_text = __pyx_v_include_text; + __Pyx_INCREF(__pyx_cur_scope->__pyx_v_include_text); + __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_include_text); + { + __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_10selectolax_6parser_4Node_9generator4, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[4]), (PyObject *) __pyx_cur_scope, __pyx_mstate_global->__pyx_n_u_traverse, __pyx_mstate_global->__pyx_n_u_Node_traverse, __pyx_mstate_global->__pyx_n_u_selectolax_parser); if (unlikely(!gen)) __PYX_ERR(3, 354, __pyx_L1_error) + __Pyx_DECREF(__pyx_cur_scope); + __Pyx_RefNannyFinishContext(); + return (PyObject *) gen; + } + + /* function exit code */ + __pyx_L1_error:; + __Pyx_AddTraceback("selectolax.parser.Node.traverse", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_DECREF((PyObject *)__pyx_cur_scope); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_gb_10selectolax_6parser_4Node_9generator4(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ +{ + struct __pyx_obj_10selectolax_6parser___pyx_scope_struct_4_traverse *__pyx_cur_scope = ((struct __pyx_obj_10selectolax_6parser___pyx_scope_struct_4_traverse *)__pyx_generator->closure); + PyObject *__pyx_r = NULL; + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + size_t __pyx_t_3; + int __pyx_t_4; + int __pyx_t_5; + int __pyx_t_6; + myhtml_tree_node_t *__pyx_t_7; + int __pyx_t_8; + int __pyx_t_9; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("traverse", 0); + switch (__pyx_generator->resume_label) { + case 0: goto __pyx_L3_first_run; + case 1: goto __pyx_L11_resume_from_yield; + default: /* CPython raises the right error here */ + __Pyx_RefNannyFinishContext(); + return NULL; + } + __pyx_L3_first_run:; + if (unlikely(__pyx_sent_value != Py_None)) { + if (unlikely(__pyx_sent_value)) PyErr_SetString(PyExc_TypeError, "can't send non-None value to a just-started generator"); + __PYX_ERR(3, 354, __pyx_L1_error) + } + + /* "selectolax/modest/node.pxi":366 + * node + * """ + * cdef Stack stack = Stack(_STACK_SIZE) # <<<<<<<<<<<<<< + * cdef myhtml_tree_node_t* current_node = NULL + * cdef Node next_node +*/ + __pyx_t_2 = NULL; + __pyx_t_3 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_int_100}; + __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_10selectolax_6parser_Stack, __pyx_callargs+__pyx_t_3, (2-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 366, __pyx_L1_error) + __Pyx_GOTREF((PyObject *)__pyx_t_1); + } + __Pyx_GIVEREF((PyObject *)__pyx_t_1); + __pyx_cur_scope->__pyx_v_stack = ((struct __pyx_obj_10selectolax_6parser_Stack *)__pyx_t_1); + __pyx_t_1 = 0; + + /* "selectolax/modest/node.pxi":367 + * """ + * cdef Stack stack = Stack(_STACK_SIZE) + * cdef myhtml_tree_node_t* current_node = NULL # <<<<<<<<<<<<<< + * cdef Node next_node + * +*/ + __pyx_cur_scope->__pyx_v_current_node = NULL; + + /* "selectolax/modest/node.pxi":370 + * cdef Node next_node + * + * stack.push(self.node) # <<<<<<<<<<<<<< + * + * while not stack.is_empty(): +*/ + __pyx_t_4 = __pyx_f_10selectolax_6parser_5Stack_push(__pyx_cur_scope->__pyx_v_stack, __pyx_cur_scope->__pyx_v_self->node); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(3, 370, __pyx_L1_error) + + /* "selectolax/modest/node.pxi":372 + * stack.push(self.node) + * + * while not stack.is_empty(): # <<<<<<<<<<<<<< + * current_node = stack.pop() + * if current_node != NULL and not (current_node.tag_id == MyHTML_TAG__TEXT and not include_text): +*/ + while (1) { + __pyx_t_5 = __pyx_f_10selectolax_6parser_5Stack_is_empty(__pyx_cur_scope->__pyx_v_stack); if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 372, __pyx_L1_error) + __pyx_t_6 = (!__pyx_t_5); + if (!__pyx_t_6) break; + + /* "selectolax/modest/node.pxi":373 + * + * while not stack.is_empty(): + * current_node = stack.pop() # <<<<<<<<<<<<<< + * if current_node != NULL and not (current_node.tag_id == MyHTML_TAG__TEXT and not include_text): + * next_node = Node.new(current_node, self.parser) +*/ + __pyx_t_7 = __pyx_f_10selectolax_6parser_5Stack_pop(__pyx_cur_scope->__pyx_v_stack); if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 373, __pyx_L1_error) + __pyx_cur_scope->__pyx_v_current_node = __pyx_t_7; + + /* "selectolax/modest/node.pxi":374 + * while not stack.is_empty(): + * current_node = stack.pop() + * if current_node != NULL and not (current_node.tag_id == MyHTML_TAG__TEXT and not include_text): # <<<<<<<<<<<<<< + * next_node = Node.new(current_node, self.parser) + * yield next_node +*/ + __pyx_t_5 = (__pyx_cur_scope->__pyx_v_current_node != NULL); + if (__pyx_t_5) { + } else { + __pyx_t_6 = __pyx_t_5; + goto __pyx_L7_bool_binop_done; + } + __pyx_t_8 = (__pyx_cur_scope->__pyx_v_current_node->tag_id == MyHTML_TAG__TEXT); + if (__pyx_t_8) { + } else { + __pyx_t_5 = __pyx_t_8; + goto __pyx_L9_bool_binop_done; + } + __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_include_text); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(3, 374, __pyx_L1_error) + __pyx_t_9 = (!__pyx_t_8); + __pyx_t_5 = __pyx_t_9; + __pyx_L9_bool_binop_done:; + __pyx_t_9 = (!__pyx_t_5); + __pyx_t_6 = __pyx_t_9; + __pyx_L7_bool_binop_done:; + if (__pyx_t_6) { + + /* "selectolax/modest/node.pxi":375 + * current_node = stack.pop() + * if current_node != NULL and not (current_node.tag_id == MyHTML_TAG__TEXT and not include_text): + * next_node = Node.new(current_node, self.parser) # <<<<<<<<<<<<<< + * yield next_node + * +*/ + __pyx_t_1 = ((PyObject *)__pyx_cur_scope->__pyx_v_self->parser); + __Pyx_INCREF(__pyx_t_1); + __pyx_t_2 = ((PyObject *)__pyx_f_10selectolax_6parser_4Node_new(__pyx_cur_scope->__pyx_v_current_node, ((struct __pyx_obj_10selectolax_6parser_HTMLParser *)__pyx_t_1))); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 375, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XGOTREF((PyObject *)__pyx_cur_scope->__pyx_v_next_node); + __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_next_node, ((struct __pyx_obj_10selectolax_6parser_Node *)__pyx_t_2)); + __Pyx_GIVEREF(__pyx_t_2); + __pyx_t_2 = 0; + + /* "selectolax/modest/node.pxi":376 + * if current_node != NULL and not (current_node.tag_id == MyHTML_TAG__TEXT and not include_text): + * next_node = Node.new(current_node, self.parser) + * yield next_node # <<<<<<<<<<<<<< + * + * if current_node.next is not NULL: +*/ + __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_next_node); + __pyx_r = ((PyObject *)__pyx_cur_scope->__pyx_v_next_node); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + /* return from generator, yielding value */ + __pyx_generator->resume_label = 1; + return __pyx_r; + __pyx_L11_resume_from_yield:; + if (unlikely(!__pyx_sent_value)) __PYX_ERR(3, 376, __pyx_L1_error) + + /* "selectolax/modest/node.pxi":374 + * while not stack.is_empty(): + * current_node = stack.pop() + * if current_node != NULL and not (current_node.tag_id == MyHTML_TAG__TEXT and not include_text): # <<<<<<<<<<<<<< + * next_node = Node.new(current_node, self.parser) + * yield next_node +*/ + } + + /* "selectolax/modest/node.pxi":378 + * yield next_node + * + * if current_node.next is not NULL: # <<<<<<<<<<<<<< + * stack.push(current_node.next) + * +*/ + __pyx_t_6 = (__pyx_cur_scope->__pyx_v_current_node->next != NULL); + if (__pyx_t_6) { + + /* "selectolax/modest/node.pxi":379 + * + * if current_node.next is not NULL: + * stack.push(current_node.next) # <<<<<<<<<<<<<< + * + * if current_node.child is not NULL: +*/ + __pyx_t_4 = __pyx_f_10selectolax_6parser_5Stack_push(__pyx_cur_scope->__pyx_v_stack, __pyx_cur_scope->__pyx_v_current_node->next); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(3, 379, __pyx_L1_error) + + /* "selectolax/modest/node.pxi":378 + * yield next_node + * + * if current_node.next is not NULL: # <<<<<<<<<<<<<< + * stack.push(current_node.next) + * +*/ + } + + /* "selectolax/modest/node.pxi":381 + * stack.push(current_node.next) + * + * if current_node.child is not NULL: # <<<<<<<<<<<<<< + * stack.push(current_node.child) + * +*/ + __pyx_t_6 = (__pyx_cur_scope->__pyx_v_current_node->child != NULL); + if (__pyx_t_6) { + + /* "selectolax/modest/node.pxi":382 + * + * if current_node.child is not NULL: + * stack.push(current_node.child) # <<<<<<<<<<<<<< + * + * @property +*/ + __pyx_t_4 = __pyx_f_10selectolax_6parser_5Stack_push(__pyx_cur_scope->__pyx_v_stack, __pyx_cur_scope->__pyx_v_current_node->child); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(3, 382, __pyx_L1_error) + + /* "selectolax/modest/node.pxi":381 + * stack.push(current_node.next) + * + * if current_node.child is not NULL: # <<<<<<<<<<<<<< + * stack.push(current_node.child) + * +*/ + } + } + CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); + + /* "selectolax/modest/node.pxi":354 + * node = node.next + * + * def traverse(self, include_text=False): # <<<<<<<<<<<<<< + * """Iterate over all child and next nodes starting from the current level. + * +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + if (__Pyx_PyErr_Occurred()) { + __Pyx_Generator_Replace_StopIteration(0); + __Pyx_AddTraceback("traverse", __pyx_clineno, __pyx_lineno, __pyx_filename); + } + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + #if !CYTHON_USE_EXC_INFO_STACK + __Pyx_Coroutine_ResetAndClearException(__pyx_generator); + #endif + __pyx_generator->resume_label = -1; + __Pyx_Coroutine_clear((PyObject*)__pyx_generator); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/modest/node.pxi":384 + * stack.push(current_node.child) + * + * @property # <<<<<<<<<<<<<< + * def tag(self): + * """Return the name of the current tag (e.g. div, p, img). +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_4Node_3tag_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_10selectolax_6parser_4Node_3tag_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6parser_4Node_3tag___get__(((struct __pyx_obj_10selectolax_6parser_Node *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_4Node_3tag___get__(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self) { + char const *__pyx_v_c_text; + PyObject *__pyx_v_text = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + size_t __pyx_t_5; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + + /* "selectolax/modest/node.pxi":393 + * """ + * cdef const char *c_text + * c_text = myhtml_tag_name_by_id(self.node.tree, self.node.tag_id, NULL) # <<<<<<<<<<<<<< + * text = None + * if c_text: +*/ + __pyx_v_c_text = myhtml_tag_name_by_id(__pyx_v_self->node->tree, __pyx_v_self->node->tag_id, NULL); + + /* "selectolax/modest/node.pxi":394 + * cdef const char *c_text + * c_text = myhtml_tag_name_by_id(self.node.tree, self.node.tag_id, NULL) + * text = None # <<<<<<<<<<<<<< + * if c_text: + * text = c_text.decode(_ENCODING, self.parser.decode_errors) +*/ + __Pyx_INCREF(Py_None); + __pyx_v_text = Py_None; + + /* "selectolax/modest/node.pxi":395 + * c_text = myhtml_tag_name_by_id(self.node.tree, self.node.tag_id, NULL) + * text = None + * if c_text: # <<<<<<<<<<<<<< + * text = c_text.decode(_ENCODING, self.parser.decode_errors) + * return text +*/ + __pyx_t_1 = (__pyx_v_c_text != 0); + if (__pyx_t_1) { + + /* "selectolax/modest/node.pxi":396 + * text = None + * if c_text: + * text = c_text.decode(_ENCODING, self.parser.decode_errors) # <<<<<<<<<<<<<< + * return text + * +*/ + __pyx_t_4 = __Pyx_PyBytes_FromString(__pyx_v_c_text); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 396, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = __pyx_t_4; + __Pyx_INCREF(__pyx_t_3); + __pyx_t_5 = 0; + { + PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_UTF_8, __pyx_v_self->parser->decode_errors}; + __pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_decode, __pyx_callargs+__pyx_t_5, (3-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 396, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + } + __Pyx_DECREF_SET(__pyx_v_text, __pyx_t_2); + __pyx_t_2 = 0; + + /* "selectolax/modest/node.pxi":395 + * c_text = myhtml_tag_name_by_id(self.node.tree, self.node.tag_id, NULL) + * text = None + * if c_text: # <<<<<<<<<<<<<< + * text = c_text.decode(_ENCODING, self.parser.decode_errors) + * return text +*/ + } + + /* "selectolax/modest/node.pxi":397 + * if c_text: + * text = c_text.decode(_ENCODING, self.parser.decode_errors) + * return text # <<<<<<<<<<<<<< + * + * @property +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_text); + __pyx_r = __pyx_v_text; + goto __pyx_L0; + + /* "selectolax/modest/node.pxi":384 + * stack.push(current_node.child) + * + * @property # <<<<<<<<<<<<<< + * def tag(self): + * """Return the name of the current tag (e.g. div, p, img). +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("selectolax.parser.Node.tag.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_text); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/modest/node.pxi":399 + * return text + * + * @property # <<<<<<<<<<<<<< + * def child(self): + * """Alias for the `first_child` property. +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_4Node_5child_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_10selectolax_6parser_4Node_5child_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6parser_4Node_5child___get__(((struct __pyx_obj_10selectolax_6parser_Node *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_4Node_5child___get__(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self) { + struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_node = 0; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + + /* "selectolax/modest/node.pxi":406 + * """ + * cdef Node node + * if self.node.child: # <<<<<<<<<<<<<< + * node = Node.new(self.node.child, self.parser) + * return node +*/ + __pyx_t_1 = (__pyx_v_self->node->child != 0); + if (__pyx_t_1) { + + /* "selectolax/modest/node.pxi":407 + * cdef Node node + * if self.node.child: + * node = Node.new(self.node.child, self.parser) # <<<<<<<<<<<<<< + * return node + * return None +*/ + __pyx_t_2 = ((PyObject *)__pyx_v_self->parser); + __Pyx_INCREF(__pyx_t_2); + __pyx_t_3 = ((PyObject *)__pyx_f_10selectolax_6parser_4Node_new(__pyx_v_self->node->child, ((struct __pyx_obj_10selectolax_6parser_HTMLParser *)__pyx_t_2))); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 407, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_v_node = ((struct __pyx_obj_10selectolax_6parser_Node *)__pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/modest/node.pxi":408 + * if self.node.child: + * node = Node.new(self.node.child, self.parser) + * return node # <<<<<<<<<<<<<< + * return None + * +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF((PyObject *)__pyx_v_node); + __pyx_r = ((PyObject *)__pyx_v_node); + goto __pyx_L0; + + /* "selectolax/modest/node.pxi":406 + * """ + * cdef Node node + * if self.node.child: # <<<<<<<<<<<<<< + * node = Node.new(self.node.child, self.parser) + * return node +*/ + } + + /* "selectolax/modest/node.pxi":409 + * node = Node.new(self.node.child, self.parser) + * return node + * return None # <<<<<<<<<<<<<< + * + * @property +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + + /* "selectolax/modest/node.pxi":399 + * return text + * + * @property # <<<<<<<<<<<<<< + * def child(self): + * """Alias for the `first_child` property. +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("selectolax.parser.Node.child.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF((PyObject *)__pyx_v_node); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/modest/node.pxi":411 + * return None + * + * @property # <<<<<<<<<<<<<< + * def parent(self): + * """Return the parent node.""" +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_4Node_6parent_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_10selectolax_6parser_4Node_6parent_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6parser_4Node_6parent___get__(((struct __pyx_obj_10selectolax_6parser_Node *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_4Node_6parent___get__(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self) { + struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_node = 0; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + + /* "selectolax/modest/node.pxi":415 + * """Return the parent node.""" + * cdef Node node + * if self.node.parent: # <<<<<<<<<<<<<< + * node = Node.new(self.node.parent, self.parser) + * return node +*/ + __pyx_t_1 = (__pyx_v_self->node->parent != 0); + if (__pyx_t_1) { + + /* "selectolax/modest/node.pxi":416 + * cdef Node node + * if self.node.parent: + * node = Node.new(self.node.parent, self.parser) # <<<<<<<<<<<<<< + * return node + * return None +*/ + __pyx_t_2 = ((PyObject *)__pyx_v_self->parser); + __Pyx_INCREF(__pyx_t_2); + __pyx_t_3 = ((PyObject *)__pyx_f_10selectolax_6parser_4Node_new(__pyx_v_self->node->parent, ((struct __pyx_obj_10selectolax_6parser_HTMLParser *)__pyx_t_2))); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 416, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_v_node = ((struct __pyx_obj_10selectolax_6parser_Node *)__pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/modest/node.pxi":417 + * if self.node.parent: + * node = Node.new(self.node.parent, self.parser) + * return node # <<<<<<<<<<<<<< + * return None + * +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF((PyObject *)__pyx_v_node); + __pyx_r = ((PyObject *)__pyx_v_node); + goto __pyx_L0; + + /* "selectolax/modest/node.pxi":415 + * """Return the parent node.""" + * cdef Node node + * if self.node.parent: # <<<<<<<<<<<<<< + * node = Node.new(self.node.parent, self.parser) + * return node +*/ + } + + /* "selectolax/modest/node.pxi":418 + * node = Node.new(self.node.parent, self.parser) + * return node + * return None # <<<<<<<<<<<<<< + * + * @property +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + + /* "selectolax/modest/node.pxi":411 + * return None + * + * @property # <<<<<<<<<<<<<< + * def parent(self): + * """Return the parent node.""" +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("selectolax.parser.Node.parent.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF((PyObject *)__pyx_v_node); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/modest/node.pxi":420 + * return None + * + * @property # <<<<<<<<<<<<<< + * def next(self): + * """Return next node.""" +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_4Node_4next_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_10selectolax_6parser_4Node_4next_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6parser_4Node_4next___get__(((struct __pyx_obj_10selectolax_6parser_Node *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_4Node_4next___get__(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self) { + struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_node = 0; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + + /* "selectolax/modest/node.pxi":424 + * """Return next node.""" + * cdef Node node + * if self.node.next: # <<<<<<<<<<<<<< + * node = Node.new(self.node.next, self.parser) + * return node +*/ + __pyx_t_1 = (__pyx_v_self->node->next != 0); + if (__pyx_t_1) { + + /* "selectolax/modest/node.pxi":425 + * cdef Node node + * if self.node.next: + * node = Node.new(self.node.next, self.parser) # <<<<<<<<<<<<<< + * return node + * return None +*/ + __pyx_t_2 = ((PyObject *)__pyx_v_self->parser); + __Pyx_INCREF(__pyx_t_2); + __pyx_t_3 = ((PyObject *)__pyx_f_10selectolax_6parser_4Node_new(__pyx_v_self->node->next, ((struct __pyx_obj_10selectolax_6parser_HTMLParser *)__pyx_t_2))); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 425, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_v_node = ((struct __pyx_obj_10selectolax_6parser_Node *)__pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/modest/node.pxi":426 + * if self.node.next: + * node = Node.new(self.node.next, self.parser) + * return node # <<<<<<<<<<<<<< + * return None + * +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF((PyObject *)__pyx_v_node); + __pyx_r = ((PyObject *)__pyx_v_node); + goto __pyx_L0; + + /* "selectolax/modest/node.pxi":424 + * """Return next node.""" + * cdef Node node + * if self.node.next: # <<<<<<<<<<<<<< + * node = Node.new(self.node.next, self.parser) + * return node +*/ + } + + /* "selectolax/modest/node.pxi":427 + * node = Node.new(self.node.next, self.parser) + * return node + * return None # <<<<<<<<<<<<<< + * + * @property +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + + /* "selectolax/modest/node.pxi":420 + * return None + * + * @property # <<<<<<<<<<<<<< + * def next(self): + * """Return next node.""" +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("selectolax.parser.Node.next.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF((PyObject *)__pyx_v_node); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/modest/node.pxi":429 + * return None + * + * @property # <<<<<<<<<<<<<< + * def prev(self): + * """Return previous node.""" +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_4Node_4prev_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_10selectolax_6parser_4Node_4prev_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6parser_4Node_4prev___get__(((struct __pyx_obj_10selectolax_6parser_Node *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_4Node_4prev___get__(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self) { + struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_node = 0; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + + /* "selectolax/modest/node.pxi":433 + * """Return previous node.""" + * cdef Node node + * if self.node.prev: # <<<<<<<<<<<<<< + * node = Node.new(self.node.prev, self.parser) + * return node +*/ + __pyx_t_1 = (__pyx_v_self->node->prev != 0); + if (__pyx_t_1) { + + /* "selectolax/modest/node.pxi":434 + * cdef Node node + * if self.node.prev: + * node = Node.new(self.node.prev, self.parser) # <<<<<<<<<<<<<< + * return node + * return None +*/ + __pyx_t_2 = ((PyObject *)__pyx_v_self->parser); + __Pyx_INCREF(__pyx_t_2); + __pyx_t_3 = ((PyObject *)__pyx_f_10selectolax_6parser_4Node_new(__pyx_v_self->node->prev, ((struct __pyx_obj_10selectolax_6parser_HTMLParser *)__pyx_t_2))); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 434, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_v_node = ((struct __pyx_obj_10selectolax_6parser_Node *)__pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/modest/node.pxi":435 + * if self.node.prev: + * node = Node.new(self.node.prev, self.parser) + * return node # <<<<<<<<<<<<<< + * return None + * +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF((PyObject *)__pyx_v_node); + __pyx_r = ((PyObject *)__pyx_v_node); + goto __pyx_L0; + + /* "selectolax/modest/node.pxi":433 + * """Return previous node.""" + * cdef Node node + * if self.node.prev: # <<<<<<<<<<<<<< + * node = Node.new(self.node.prev, self.parser) + * return node +*/ + } + + /* "selectolax/modest/node.pxi":436 + * node = Node.new(self.node.prev, self.parser) + * return node + * return None # <<<<<<<<<<<<<< + * + * @property +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + + /* "selectolax/modest/node.pxi":429 + * return None + * + * @property # <<<<<<<<<<<<<< + * def prev(self): + * """Return previous node.""" +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("selectolax.parser.Node.prev.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF((PyObject *)__pyx_v_node); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/modest/node.pxi":438 + * return None + * + * @property # <<<<<<<<<<<<<< + * def last_child(self): + * """Return last child node.""" +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_4Node_10last_child_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_10selectolax_6parser_4Node_10last_child_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6parser_4Node_10last_child___get__(((struct __pyx_obj_10selectolax_6parser_Node *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_4Node_10last_child___get__(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self) { + struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_node = 0; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + + /* "selectolax/modest/node.pxi":442 + * """Return last child node.""" + * cdef Node node + * if self.node.last_child: # <<<<<<<<<<<<<< + * node = Node.new(self.node.last_child, self.parser) + * return node +*/ + __pyx_t_1 = (__pyx_v_self->node->last_child != 0); + if (__pyx_t_1) { + + /* "selectolax/modest/node.pxi":443 + * cdef Node node + * if self.node.last_child: + * node = Node.new(self.node.last_child, self.parser) # <<<<<<<<<<<<<< + * return node + * return None +*/ + __pyx_t_2 = ((PyObject *)__pyx_v_self->parser); + __Pyx_INCREF(__pyx_t_2); + __pyx_t_3 = ((PyObject *)__pyx_f_10selectolax_6parser_4Node_new(__pyx_v_self->node->last_child, ((struct __pyx_obj_10selectolax_6parser_HTMLParser *)__pyx_t_2))); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 443, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_v_node = ((struct __pyx_obj_10selectolax_6parser_Node *)__pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/modest/node.pxi":444 + * if self.node.last_child: + * node = Node.new(self.node.last_child, self.parser) + * return node # <<<<<<<<<<<<<< + * return None + * +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF((PyObject *)__pyx_v_node); + __pyx_r = ((PyObject *)__pyx_v_node); + goto __pyx_L0; + + /* "selectolax/modest/node.pxi":442 + * """Return last child node.""" + * cdef Node node + * if self.node.last_child: # <<<<<<<<<<<<<< + * node = Node.new(self.node.last_child, self.parser) + * return node +*/ + } + + /* "selectolax/modest/node.pxi":445 + * node = Node.new(self.node.last_child, self.parser) + * return node + * return None # <<<<<<<<<<<<<< + * + * @property +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + + /* "selectolax/modest/node.pxi":438 + * return None + * + * @property # <<<<<<<<<<<<<< + * def last_child(self): + * """Return last child node.""" +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("selectolax.parser.Node.last_child.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF((PyObject *)__pyx_v_node); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/modest/node.pxi":447 + * return None + * + * @property # <<<<<<<<<<<<<< + * def html(self): + * """Return HTML representation of the current node including all its child nodes. +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_4Node_4html_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_10selectolax_6parser_4Node_4html_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6parser_4Node_4html___get__(((struct __pyx_obj_10selectolax_6parser_Node *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_4Node_4html___get__(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self) { + mycore_string_raw_t __pyx_v_c_str; + mystatus_t __pyx_v_status; + PyObject *__pyx_v_html = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_t_2; + char *__pyx_t_3; + Py_ssize_t __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + + /* "selectolax/modest/node.pxi":456 + * """ + * cdef mycore_string_raw_t c_str + * c_str.data = NULL # <<<<<<<<<<<<<< + * c_str.length = 0 + * c_str.size = 0 +*/ + __pyx_v_c_str.data = NULL; + + /* "selectolax/modest/node.pxi":457 + * cdef mycore_string_raw_t c_str + * c_str.data = NULL + * c_str.length = 0 # <<<<<<<<<<<<<< + * c_str.size = 0 + * +*/ + __pyx_v_c_str.length = 0; + + /* "selectolax/modest/node.pxi":458 + * c_str.data = NULL + * c_str.length = 0 + * c_str.size = 0 # <<<<<<<<<<<<<< + * + * cdef mystatus_t status +*/ + __pyx_v_c_str.size = 0; + + /* "selectolax/modest/node.pxi":461 + * + * cdef mystatus_t status + * status = myhtml_serialization(self.node, &c_str) # <<<<<<<<<<<<<< + * + * if status == 0 and c_str.data: +*/ + __pyx_v_status = myhtml_serialization(__pyx_v_self->node, (&__pyx_v_c_str)); + + /* "selectolax/modest/node.pxi":463 + * status = myhtml_serialization(self.node, &c_str) + * + * if status == 0 and c_str.data: # <<<<<<<<<<<<<< + * html = c_str.data.decode(_ENCODING).replace('<-undef>', '') + * free(c_str.data) +*/ + __pyx_t_2 = (__pyx_v_status == 0); + if (__pyx_t_2) { + } else { + __pyx_t_1 = __pyx_t_2; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_2 = (__pyx_v_c_str.data != 0); + __pyx_t_1 = __pyx_t_2; + __pyx_L4_bool_binop_done:; + if (__pyx_t_1) { + + /* "selectolax/modest/node.pxi":464 + * + * if status == 0 and c_str.data: + * html = c_str.data.decode(_ENCODING).replace('<-undef>', '') # <<<<<<<<<<<<<< + * free(c_str.data) + * return html +*/ + __pyx_t_3 = __pyx_v_c_str.data; + __pyx_t_4 = __Pyx_ssize_strlen(__pyx_t_3); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(3, 464, __pyx_L1_error) + __pyx_t_5 = __Pyx_decode_c_string(__pyx_t_3, 0, __pyx_t_4, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 464, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = PyUnicode_Replace(__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_undef, __pyx_mstate_global->__pyx_kp_u_, -1); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 464, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_v_html = __pyx_t_6; + __pyx_t_6 = 0; + + /* "selectolax/modest/node.pxi":465 + * if status == 0 and c_str.data: + * html = c_str.data.decode(_ENCODING).replace('<-undef>', '') + * free(c_str.data) # <<<<<<<<<<<<<< + * return html + * +*/ + free(__pyx_v_c_str.data); + + /* "selectolax/modest/node.pxi":466 + * html = c_str.data.decode(_ENCODING).replace('<-undef>', '') + * free(c_str.data) + * return html # <<<<<<<<<<<<<< + * + * return None +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_html); + __pyx_r = __pyx_v_html; + goto __pyx_L0; + + /* "selectolax/modest/node.pxi":463 + * status = myhtml_serialization(self.node, &c_str) + * + * if status == 0 and c_str.data: # <<<<<<<<<<<<<< + * html = c_str.data.decode(_ENCODING).replace('<-undef>', '') + * free(c_str.data) +*/ + } + + /* "selectolax/modest/node.pxi":468 + * return html + * + * return None # <<<<<<<<<<<<<< + * + * def css(self, str query): +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + + /* "selectolax/modest/node.pxi":447 + * return None + * + * @property # <<<<<<<<<<<<<< + * def html(self): + * """Return HTML representation of the current node including all its child nodes. +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_AddTraceback("selectolax.parser.Node.html.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_html); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/modest/node.pxi":470 + * return None + * + * def css(self, str query): # <<<<<<<<<<<<<< + * """Evaluate CSS selector against current node and its child nodes.""" + * return find_nodes(self.parser, self.node, query) +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_4Node_11css(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6parser_4Node_10css, "Node.css(self, str query)\n\nEvaluate CSS selector against current node and its child nodes."); +static PyMethodDef __pyx_mdef_10selectolax_6parser_4Node_11css = {"css", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_4Node_11css, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_4Node_10css}; +static PyObject *__pyx_pw_10selectolax_6parser_4Node_11css(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_query = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("css (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_query,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(3, 470, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(3, 470, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "css", 0) < (0)) __PYX_ERR(3, 470, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("css", 1, 1, 1, i); __PYX_ERR(3, 470, __pyx_L3_error) } + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(3, 470, __pyx_L3_error) + } + __pyx_v_query = ((PyObject*)values[0]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("css", 1, 1, 1, __pyx_nargs); __PYX_ERR(3, 470, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.parser.Node.css", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_query), (&PyUnicode_Type), 1, "query", 1))) __PYX_ERR(3, 470, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6parser_4Node_10css(((struct __pyx_obj_10selectolax_6parser_Node *)__pyx_v_self), __pyx_v_query); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_4Node_10css(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self, PyObject *__pyx_v_query) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("css", 0); + + /* "selectolax/modest/node.pxi":472 + * def css(self, str query): + * """Evaluate CSS selector against current node and its child nodes.""" + * return find_nodes(self.parser, self.node, query) # <<<<<<<<<<<<<< + * + * def any_css_matches(self, tuple selectors): +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = ((PyObject *)__pyx_v_self->parser); + __Pyx_INCREF(__pyx_t_1); + __pyx_t_2 = __pyx_f_10selectolax_6parser_find_nodes(((struct __pyx_obj_10selectolax_6parser_HTMLParser *)__pyx_t_1), __pyx_v_self->node, __pyx_v_query); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 472, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; + + /* "selectolax/modest/node.pxi":470 + * return None + * + * def css(self, str query): # <<<<<<<<<<<<<< + * """Evaluate CSS selector against current node and its child nodes.""" + * return find_nodes(self.parser, self.node, query) +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("selectolax.parser.Node.css", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/modest/node.pxi":474 + * return find_nodes(self.parser, self.node, query) + * + * def any_css_matches(self, tuple selectors): # <<<<<<<<<<<<<< + * """Returns True if any of CSS selectors matches a node""" + * return find_matches(self.parser, self.node, selectors) +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_4Node_13any_css_matches(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6parser_4Node_12any_css_matches, "Node.any_css_matches(self, tuple selectors)\n\nReturns True if any of CSS selectors matches a node"); +static PyMethodDef __pyx_mdef_10selectolax_6parser_4Node_13any_css_matches = {"any_css_matches", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_4Node_13any_css_matches, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_4Node_12any_css_matches}; +static PyObject *__pyx_pw_10selectolax_6parser_4Node_13any_css_matches(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_selectors = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("any_css_matches (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_selectors,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(3, 474, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(3, 474, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "any_css_matches", 0) < (0)) __PYX_ERR(3, 474, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("any_css_matches", 1, 1, 1, i); __PYX_ERR(3, 474, __pyx_L3_error) } + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(3, 474, __pyx_L3_error) + } + __pyx_v_selectors = ((PyObject*)values[0]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("any_css_matches", 1, 1, 1, __pyx_nargs); __PYX_ERR(3, 474, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.parser.Node.any_css_matches", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_selectors), (&PyTuple_Type), 1, "selectors", 1))) __PYX_ERR(3, 474, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6parser_4Node_12any_css_matches(((struct __pyx_obj_10selectolax_6parser_Node *)__pyx_v_self), __pyx_v_selectors); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_4Node_12any_css_matches(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self, PyObject *__pyx_v_selectors) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("any_css_matches", 0); + + /* "selectolax/modest/node.pxi":476 + * def any_css_matches(self, tuple selectors): + * """Returns True if any of CSS selectors matches a node""" + * return find_matches(self.parser, self.node, selectors) # <<<<<<<<<<<<<< + * + * def css_matches(self, str selector): +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = ((PyObject *)__pyx_v_self->parser); + __Pyx_INCREF(__pyx_t_1); + __pyx_t_2 = ((PyObject *)__pyx_f_10selectolax_6parser_find_matches(((struct __pyx_obj_10selectolax_6parser_HTMLParser *)__pyx_t_1), __pyx_v_self->node, __pyx_v_selectors)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 476, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; + + /* "selectolax/modest/node.pxi":474 + * return find_nodes(self.parser, self.node, query) + * + * def any_css_matches(self, tuple selectors): # <<<<<<<<<<<<<< + * """Returns True if any of CSS selectors matches a node""" + * return find_matches(self.parser, self.node, selectors) +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("selectolax.parser.Node.any_css_matches", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/modest/node.pxi":478 + * return find_matches(self.parser, self.node, selectors) + * + * def css_matches(self, str selector): # <<<<<<<<<<<<<< + * """Returns True if CSS selector matches a node.""" + * return find_matches(self.parser, self.node, (selector, )) +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_4Node_15css_matches(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6parser_4Node_14css_matches, "Node.css_matches(self, str selector)\n\nReturns True if CSS selector matches a node."); +static PyMethodDef __pyx_mdef_10selectolax_6parser_4Node_15css_matches = {"css_matches", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_4Node_15css_matches, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_4Node_14css_matches}; +static PyObject *__pyx_pw_10selectolax_6parser_4Node_15css_matches(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_selector = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("css_matches (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_selector,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(3, 478, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(3, 478, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "css_matches", 0) < (0)) __PYX_ERR(3, 478, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("css_matches", 1, 1, 1, i); __PYX_ERR(3, 478, __pyx_L3_error) } + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(3, 478, __pyx_L3_error) + } + __pyx_v_selector = ((PyObject*)values[0]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("css_matches", 1, 1, 1, __pyx_nargs); __PYX_ERR(3, 478, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.parser.Node.css_matches", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_selector), (&PyUnicode_Type), 1, "selector", 1))) __PYX_ERR(3, 478, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6parser_4Node_14css_matches(((struct __pyx_obj_10selectolax_6parser_Node *)__pyx_v_self), __pyx_v_selector); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_4Node_14css_matches(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self, PyObject *__pyx_v_selector) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("css_matches", 0); + + /* "selectolax/modest/node.pxi":480 + * def css_matches(self, str selector): + * """Returns True if CSS selector matches a node.""" + * return find_matches(self.parser, self.node, (selector, )) # <<<<<<<<<<<<<< + * + * def css_first(self, str query, default=None, bool strict=False): +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = ((PyObject *)__pyx_v_self->parser); + __Pyx_INCREF(__pyx_t_1); + __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 480, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(__pyx_v_selector); + __Pyx_GIVEREF(__pyx_v_selector); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_selector) != (0)) __PYX_ERR(3, 480, __pyx_L1_error); + __pyx_t_3 = ((PyObject *)__pyx_f_10selectolax_6parser_find_matches(((struct __pyx_obj_10selectolax_6parser_HTMLParser *)__pyx_t_1), __pyx_v_self->node, ((PyObject*)__pyx_t_2))); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 480, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_r = __pyx_t_3; + __pyx_t_3 = 0; + goto __pyx_L0; + + /* "selectolax/modest/node.pxi":478 + * return find_matches(self.parser, self.node, selectors) + * + * def css_matches(self, str selector): # <<<<<<<<<<<<<< + * """Returns True if CSS selector matches a node.""" + * return find_matches(self.parser, self.node, (selector, )) +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("selectolax.parser.Node.css_matches", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/modest/node.pxi":482 + * return find_matches(self.parser, self.node, (selector, )) + * + * def css_first(self, str query, default=None, bool strict=False): # <<<<<<<<<<<<<< + * """Evaluate CSS selector against current node and its child nodes.""" + * results = self.css(query) +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_4Node_17css_first(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6parser_4Node_16css_first, "Node.css_first(self, str query, default=None, bool strict=False)\n\nEvaluate CSS selector against current node and its child nodes."); +static PyMethodDef __pyx_mdef_10selectolax_6parser_4Node_17css_first = {"css_first", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_4Node_17css_first, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_4Node_16css_first}; +static PyObject *__pyx_pw_10selectolax_6parser_4Node_17css_first(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_query = 0; + PyObject *__pyx_v_default = 0; + PyLongObject *__pyx_v_strict = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[3] = {0,0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("css_first (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_query,&__pyx_mstate_global->__pyx_n_u_default,&__pyx_mstate_global->__pyx_n_u_strict,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(3, 482, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 3: + values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(3, 482, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(3, 482, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(3, 482, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "css_first", 0) < (0)) __PYX_ERR(3, 482, __pyx_L3_error) + if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None)); + if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)((PyLongObject *)Py_False)); + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("css_first", 0, 1, 3, i); __PYX_ERR(3, 482, __pyx_L3_error) } + } + } else { + switch (__pyx_nargs) { + case 3: + values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(3, 482, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(3, 482, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(3, 482, __pyx_L3_error) + break; + default: goto __pyx_L5_argtuple_error; + } + if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None)); + if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)((PyLongObject *)Py_False)); + } + __pyx_v_query = ((PyObject*)values[0]); + __pyx_v_default = values[1]; + __pyx_v_strict = ((PyLongObject *)values[2]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("css_first", 0, 1, 3, __pyx_nargs); __PYX_ERR(3, 482, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.parser.Node.css_first", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_query), (&PyUnicode_Type), 1, "query", 1))) __PYX_ERR(3, 482, __pyx_L1_error) + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_strict), __pyx_mstate_global->__pyx_ptype_7cpython_4bool_bool, 1, "strict", 0))) __PYX_ERR(3, 482, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6parser_4Node_16css_first(((struct __pyx_obj_10selectolax_6parser_Node *)__pyx_v_self), __pyx_v_query, __pyx_v_default, __pyx_v_strict); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_4Node_16css_first(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self, PyObject *__pyx_v_query, PyObject *__pyx_v_default, PyLongObject *__pyx_v_strict) { + PyObject *__pyx_v_results = NULL; + PyObject *__pyx_v_n_results = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + size_t __pyx_t_3; + Py_ssize_t __pyx_t_4; + int __pyx_t_5; + int __pyx_t_6; + PyObject *__pyx_t_7 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("css_first", 0); + + /* "selectolax/modest/node.pxi":484 + * def css_first(self, str query, default=None, bool strict=False): + * """Evaluate CSS selector against current node and its child nodes.""" + * results = self.css(query) # <<<<<<<<<<<<<< + * n_results = len(results) + * +*/ + __pyx_t_2 = ((PyObject *)__pyx_v_self); + __Pyx_INCREF(__pyx_t_2); + __pyx_t_3 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_query}; + __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_css, __pyx_callargs+__pyx_t_3, (2-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 484, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __pyx_v_results = __pyx_t_1; + __pyx_t_1 = 0; + + /* "selectolax/modest/node.pxi":485 + * """Evaluate CSS selector against current node and its child nodes.""" + * results = self.css(query) + * n_results = len(results) # <<<<<<<<<<<<<< + * + * if n_results > 0: +*/ + __pyx_t_4 = PyObject_Length(__pyx_v_results); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(3, 485, __pyx_L1_error) + __pyx_t_1 = PyLong_FromSsize_t(__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 485, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v_n_results = __pyx_t_1; + __pyx_t_1 = 0; + + /* "selectolax/modest/node.pxi":487 + * n_results = len(results) + * + * if n_results > 0: # <<<<<<<<<<<<<< + * + * if strict and n_results > 1: +*/ + __pyx_t_1 = PyObject_RichCompare(__pyx_v_n_results, __pyx_mstate_global->__pyx_int_0, Py_GT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 487, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(3, 487, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (__pyx_t_5) { + + /* "selectolax/modest/node.pxi":489 + * if n_results > 0: + * + * if strict and n_results > 1: # <<<<<<<<<<<<<< + * raise ValueError("Expected 1 match, but found %s matches" % n_results) + * +*/ + __pyx_t_6 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_v_strict)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(3, 489, __pyx_L1_error) + if (__pyx_t_6) { + } else { + __pyx_t_5 = __pyx_t_6; + goto __pyx_L5_bool_binop_done; + } + __pyx_t_1 = PyObject_RichCompare(__pyx_v_n_results, __pyx_mstate_global->__pyx_int_1, Py_GT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 489, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(3, 489, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_5 = __pyx_t_6; + __pyx_L5_bool_binop_done:; + if (unlikely(__pyx_t_5)) { + + /* "selectolax/modest/node.pxi":490 + * + * if strict and n_results > 1: + * raise ValueError("Expected 1 match, but found %s matches" % n_results) # <<<<<<<<<<<<<< + * + * return results[0] +*/ + __pyx_t_2 = NULL; + __pyx_t_7 = __Pyx_PyUnicode_FormatSafe(__pyx_mstate_global->__pyx_kp_u_Expected_1_match_but_found_s_mat, __pyx_v_n_results); if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 490, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_3 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_7}; + __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_3, (2-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 490, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __Pyx_Raise(__pyx_t_1, 0, 0, 0); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __PYX_ERR(3, 490, __pyx_L1_error) + + /* "selectolax/modest/node.pxi":489 + * if n_results > 0: + * + * if strict and n_results > 1: # <<<<<<<<<<<<<< + * raise ValueError("Expected 1 match, but found %s matches" % n_results) + * +*/ + } + + /* "selectolax/modest/node.pxi":492 + * raise ValueError("Expected 1 match, but found %s matches" % n_results) + * + * return results[0] # <<<<<<<<<<<<<< + * + * return default +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_results, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 0, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 492, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "selectolax/modest/node.pxi":487 + * n_results = len(results) + * + * if n_results > 0: # <<<<<<<<<<<<<< + * + * if strict and n_results > 1: +*/ + } + + /* "selectolax/modest/node.pxi":494 + * return results[0] + * + * return default # <<<<<<<<<<<<<< + * + * def decompose(self, bool recursive=True): +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_default); + __pyx_r = __pyx_v_default; + goto __pyx_L0; + + /* "selectolax/modest/node.pxi":482 + * return find_matches(self.parser, self.node, (selector, )) + * + * def css_first(self, str query, default=None, bool strict=False): # <<<<<<<<<<<<<< + * """Evaluate CSS selector against current node and its child nodes.""" + * results = self.css(query) +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_AddTraceback("selectolax.parser.Node.css_first", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_results); + __Pyx_XDECREF(__pyx_v_n_results); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/modest/node.pxi":496 + * return default + * + * def decompose(self, bool recursive=True): # <<<<<<<<<<<<<< + * """Remove a Node from the tree. + * +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_4Node_19decompose(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6parser_4Node_18decompose, "Node.decompose(self, bool recursive=True)\n\nRemove a Node from the tree.\n\nParameters\n----------\nrecursive : bool, default True\n Whenever to delete all its child nodes\n\nExamples\n--------\n\n>>> tree = HTMLParser(html)\n>>> for tag in tree.css('script'):\n>>> tag.decompose()"); +static PyMethodDef __pyx_mdef_10selectolax_6parser_4Node_19decompose = {"decompose", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_4Node_19decompose, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_4Node_18decompose}; +static PyObject *__pyx_pw_10selectolax_6parser_4Node_19decompose(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyLongObject *__pyx_v_recursive = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("decompose (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_recursive,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(3, 496, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(3, 496, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "decompose", 0) < (0)) __PYX_ERR(3, 496, __pyx_L3_error) + if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)((PyLongObject *)Py_True)); + } else { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(3, 496, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)((PyLongObject *)Py_True)); + } + __pyx_v_recursive = ((PyLongObject *)values[0]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("decompose", 0, 0, 1, __pyx_nargs); __PYX_ERR(3, 496, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.parser.Node.decompose", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_recursive), __pyx_mstate_global->__pyx_ptype_7cpython_4bool_bool, 1, "recursive", 0))) __PYX_ERR(3, 496, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6parser_4Node_18decompose(((struct __pyx_obj_10selectolax_6parser_Node *)__pyx_v_self), __pyx_v_recursive); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_4Node_18decompose(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self, PyLongObject *__pyx_v_recursive) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("decompose", 0); + + /* "selectolax/modest/node.pxi":512 + * + * """ + * if recursive: # <<<<<<<<<<<<<< + * myhtml_node_delete_recursive(self.node) + * else: +*/ + __pyx_t_1 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_v_recursive)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(3, 512, __pyx_L1_error) + if (__pyx_t_1) { + + /* "selectolax/modest/node.pxi":513 + * """ + * if recursive: + * myhtml_node_delete_recursive(self.node) # <<<<<<<<<<<<<< + * else: + * myhtml_node_delete(self.node) +*/ + myhtml_node_delete_recursive(__pyx_v_self->node); + + /* "selectolax/modest/node.pxi":512 + * + * """ + * if recursive: # <<<<<<<<<<<<<< + * myhtml_node_delete_recursive(self.node) + * else: +*/ + goto __pyx_L3; + } + + /* "selectolax/modest/node.pxi":515 + * myhtml_node_delete_recursive(self.node) + * else: + * myhtml_node_delete(self.node) # <<<<<<<<<<<<<< + * + * def remove(self, bool recursive=True): +*/ + /*else*/ { + myhtml_node_delete(__pyx_v_self->node); + } + __pyx_L3:; + + /* "selectolax/modest/node.pxi":496 + * return default + * + * def decompose(self, bool recursive=True): # <<<<<<<<<<<<<< + * """Remove a Node from the tree. + * +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_AddTraceback("selectolax.parser.Node.decompose", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/modest/node.pxi":517 + * myhtml_node_delete(self.node) + * + * def remove(self, bool recursive=True): # <<<<<<<<<<<<<< + * """An alias for the decompose method.""" + * self.decompose(recursive) +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_4Node_21remove(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6parser_4Node_20remove, "Node.remove(self, bool recursive=True)\n\nAn alias for the decompose method."); +static PyMethodDef __pyx_mdef_10selectolax_6parser_4Node_21remove = {"remove", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_4Node_21remove, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_4Node_20remove}; +static PyObject *__pyx_pw_10selectolax_6parser_4Node_21remove(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyLongObject *__pyx_v_recursive = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("remove (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_recursive,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(3, 517, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(3, 517, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "remove", 0) < (0)) __PYX_ERR(3, 517, __pyx_L3_error) + if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)((PyLongObject *)Py_True)); + } else { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(3, 517, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)((PyLongObject *)Py_True)); + } + __pyx_v_recursive = ((PyLongObject *)values[0]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("remove", 0, 0, 1, __pyx_nargs); __PYX_ERR(3, 517, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.parser.Node.remove", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_recursive), __pyx_mstate_global->__pyx_ptype_7cpython_4bool_bool, 1, "recursive", 0))) __PYX_ERR(3, 517, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6parser_4Node_20remove(((struct __pyx_obj_10selectolax_6parser_Node *)__pyx_v_self), __pyx_v_recursive); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_4Node_20remove(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self, PyLongObject *__pyx_v_recursive) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + size_t __pyx_t_3; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("remove", 0); + + /* "selectolax/modest/node.pxi":519 + * def remove(self, bool recursive=True): + * """An alias for the decompose method.""" + * self.decompose(recursive) # <<<<<<<<<<<<<< + * + * def unwrap(self, delete_empty = False): +*/ + __pyx_t_2 = ((PyObject *)__pyx_v_self); + __Pyx_INCREF(__pyx_t_2); + __pyx_t_3 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, ((PyObject *)__pyx_v_recursive)}; + __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_decompose, __pyx_callargs+__pyx_t_3, (2-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 519, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "selectolax/modest/node.pxi":517 + * myhtml_node_delete(self.node) + * + * def remove(self, bool recursive=True): # <<<<<<<<<<<<<< + * """An alias for the decompose method.""" + * self.decompose(recursive) +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("selectolax.parser.Node.remove", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/modest/node.pxi":521 + * self.decompose(recursive) + * + * def unwrap(self, delete_empty = False): # <<<<<<<<<<<<<< + * """Replace node with whatever is inside this node. + * +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_4Node_23unwrap(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6parser_4Node_22unwrap, "Node.unwrap(self, delete_empty=False)\n\nReplace node with whatever is inside this node.\n\nParameters\n----------\ndelete_empty : bool, default False\n Whenever to delete empty tags.\n\nExamples\n--------\n\n>>> tree = HTMLParser(\"
Hello world!
\")\n>>> tree.css_first('i').unwrap()\n>>> tree.html\n'
Hello world!
'\n\nNote: by default, empty tags are ignored, set \"delete_empty\" to \"True\" to change this."); +static PyMethodDef __pyx_mdef_10selectolax_6parser_4Node_23unwrap = {"unwrap", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_4Node_23unwrap, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_4Node_22unwrap}; +static PyObject *__pyx_pw_10selectolax_6parser_4Node_23unwrap(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_delete_empty = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("unwrap (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_delete_empty,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(3, 521, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(3, 521, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "unwrap", 0) < (0)) __PYX_ERR(3, 521, __pyx_L3_error) + if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)Py_False)); + } else { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(3, 521, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)Py_False)); + } + __pyx_v_delete_empty = values[0]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("unwrap", 0, 0, 1, __pyx_nargs); __PYX_ERR(3, 521, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.parser.Node.unwrap", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_10selectolax_6parser_4Node_22unwrap(((struct __pyx_obj_10selectolax_6parser_Node *)__pyx_v_self), __pyx_v_delete_empty); + + /* function exit code */ + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_4Node_22unwrap(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self, PyObject *__pyx_v_delete_empty) { + myhtml_tree_node_t *__pyx_v_next_node; + myhtml_tree_node_t *__pyx_v_current_node; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + myhtml_tree_node_t *__pyx_t_2; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("unwrap", 0); + + /* "selectolax/modest/node.pxi":539 + * Note: by default, empty tags are ignored, set "delete_empty" to "True" to change this. + * """ + * if self.node.child == NULL: # <<<<<<<<<<<<<< + * if delete_empty: + * myhtml_node_delete(self.node) +*/ + __pyx_t_1 = (__pyx_v_self->node->child == NULL); + if (__pyx_t_1) { + + /* "selectolax/modest/node.pxi":540 + * """ + * if self.node.child == NULL: + * if delete_empty: # <<<<<<<<<<<<<< + * myhtml_node_delete(self.node) + * return +*/ + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_delete_empty); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(3, 540, __pyx_L1_error) + if (__pyx_t_1) { + + /* "selectolax/modest/node.pxi":541 + * if self.node.child == NULL: + * if delete_empty: + * myhtml_node_delete(self.node) # <<<<<<<<<<<<<< + * return + * cdef myhtml_tree_node_t* next_node +*/ + myhtml_node_delete(__pyx_v_self->node); + + /* "selectolax/modest/node.pxi":540 + * """ + * if self.node.child == NULL: + * if delete_empty: # <<<<<<<<<<<<<< + * myhtml_node_delete(self.node) + * return +*/ + } + + /* "selectolax/modest/node.pxi":542 + * if delete_empty: + * myhtml_node_delete(self.node) + * return # <<<<<<<<<<<<<< + * cdef myhtml_tree_node_t* next_node + * cdef myhtml_tree_node_t* current_node +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + + /* "selectolax/modest/node.pxi":539 + * Note: by default, empty tags are ignored, set "delete_empty" to "True" to change this. + * """ + * if self.node.child == NULL: # <<<<<<<<<<<<<< + * if delete_empty: + * myhtml_node_delete(self.node) +*/ + } + + /* "selectolax/modest/node.pxi":546 + * cdef myhtml_tree_node_t* current_node + * + * if self.node.child.next != NULL: # <<<<<<<<<<<<<< + * current_node = self.node.child + * next_node = current_node.next +*/ + __pyx_t_1 = (__pyx_v_self->node->child->next != NULL); + if (__pyx_t_1) { + + /* "selectolax/modest/node.pxi":547 + * + * if self.node.child.next != NULL: + * current_node = self.node.child # <<<<<<<<<<<<<< + * next_node = current_node.next + * +*/ + __pyx_t_2 = __pyx_v_self->node->child; + __pyx_v_current_node = __pyx_t_2; + + /* "selectolax/modest/node.pxi":548 + * if self.node.child.next != NULL: + * current_node = self.node.child + * next_node = current_node.next # <<<<<<<<<<<<<< + * + * while next_node != NULL: +*/ + __pyx_t_2 = __pyx_v_current_node->next; + __pyx_v_next_node = __pyx_t_2; + + /* "selectolax/modest/node.pxi":550 + * next_node = current_node.next + * + * while next_node != NULL: # <<<<<<<<<<<<<< + * next_node = current_node.next + * myhtml_node_insert_before(self.node, current_node) +*/ + while (1) { + __pyx_t_1 = (__pyx_v_next_node != NULL); + if (!__pyx_t_1) break; + + /* "selectolax/modest/node.pxi":551 + * + * while next_node != NULL: + * next_node = current_node.next # <<<<<<<<<<<<<< + * myhtml_node_insert_before(self.node, current_node) + * current_node = next_node +*/ + __pyx_t_2 = __pyx_v_current_node->next; + __pyx_v_next_node = __pyx_t_2; + + /* "selectolax/modest/node.pxi":552 + * while next_node != NULL: + * next_node = current_node.next + * myhtml_node_insert_before(self.node, current_node) # <<<<<<<<<<<<<< + * current_node = next_node + * else: +*/ + (void)(myhtml_node_insert_before(__pyx_v_self->node, __pyx_v_current_node)); + + /* "selectolax/modest/node.pxi":553 + * next_node = current_node.next + * myhtml_node_insert_before(self.node, current_node) + * current_node = next_node # <<<<<<<<<<<<<< + * else: + * myhtml_node_insert_before(self.node, self.node.child) +*/ + __pyx_v_current_node = __pyx_v_next_node; + } + + /* "selectolax/modest/node.pxi":546 + * cdef myhtml_tree_node_t* current_node + * + * if self.node.child.next != NULL: # <<<<<<<<<<<<<< + * current_node = self.node.child + * next_node = current_node.next +*/ + goto __pyx_L5; + } + + /* "selectolax/modest/node.pxi":555 + * current_node = next_node + * else: + * myhtml_node_insert_before(self.node, self.node.child) # <<<<<<<<<<<<<< + * myhtml_node_delete(self.node) + * +*/ + /*else*/ { + (void)(myhtml_node_insert_before(__pyx_v_self->node, __pyx_v_self->node->child)); + } + __pyx_L5:; + + /* "selectolax/modest/node.pxi":556 + * else: + * myhtml_node_insert_before(self.node, self.node.child) + * myhtml_node_delete(self.node) # <<<<<<<<<<<<<< + * + * def strip_tags(self, list tags, bool recursive = False): +*/ + myhtml_node_delete(__pyx_v_self->node); + + /* "selectolax/modest/node.pxi":521 + * self.decompose(recursive) + * + * def unwrap(self, delete_empty = False): # <<<<<<<<<<<<<< + * """Replace node with whatever is inside this node. + * +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_AddTraceback("selectolax.parser.Node.unwrap", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/modest/node.pxi":558 + * myhtml_node_delete(self.node) + * + * def strip_tags(self, list tags, bool recursive = False): # <<<<<<<<<<<<<< + * """Remove specified tags from the HTML tree. + * +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_4Node_25strip_tags(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6parser_4Node_24strip_tags, "Node.strip_tags(self, list tags, bool recursive=False)\n\nRemove specified tags from the HTML tree.\n\nParameters\n----------\ntags : list\n List of tags to remove.\nrecursive : bool, default True\n Whenever to delete all its child nodes\n\nExamples\n--------\n\n>>> tree = HTMLParser('
Hello world!
')\n>>> tags = ['head', 'style', 'script', 'xmp', 'iframe', 'noembed', 'noframes']\n>>> tree.strip_tags(tags)\n>>> tree.html\n'
Hello world!
'"); +static PyMethodDef __pyx_mdef_10selectolax_6parser_4Node_25strip_tags = {"strip_tags", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_4Node_25strip_tags, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_4Node_24strip_tags}; +static PyObject *__pyx_pw_10selectolax_6parser_4Node_25strip_tags(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_tags = 0; + PyLongObject *__pyx_v_recursive = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[2] = {0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("strip_tags (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_tags,&__pyx_mstate_global->__pyx_n_u_recursive,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(3, 558, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(3, 558, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(3, 558, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "strip_tags", 0) < (0)) __PYX_ERR(3, 558, __pyx_L3_error) + if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)((PyLongObject *)Py_False)); + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("strip_tags", 0, 1, 2, i); __PYX_ERR(3, 558, __pyx_L3_error) } + } + } else { + switch (__pyx_nargs) { + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(3, 558, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(3, 558, __pyx_L3_error) + break; + default: goto __pyx_L5_argtuple_error; + } + if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)((PyLongObject *)Py_False)); + } + __pyx_v_tags = ((PyObject*)values[0]); + __pyx_v_recursive = ((PyLongObject *)values[1]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("strip_tags", 0, 1, 2, __pyx_nargs); __PYX_ERR(3, 558, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.parser.Node.strip_tags", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_tags), (&PyList_Type), 1, "tags", 1))) __PYX_ERR(3, 558, __pyx_L1_error) + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_recursive), __pyx_mstate_global->__pyx_ptype_7cpython_4bool_bool, 1, "recursive", 0))) __PYX_ERR(3, 558, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6parser_4Node_24strip_tags(((struct __pyx_obj_10selectolax_6parser_Node *)__pyx_v_self), __pyx_v_tags, __pyx_v_recursive); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_4Node_24strip_tags(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self, PyObject *__pyx_v_tags, PyLongObject *__pyx_v_recursive) { + struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_element = 0; + PyObject *__pyx_v_tag = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + Py_ssize_t __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + size_t __pyx_t_5; + Py_ssize_t __pyx_t_6; + PyObject *(*__pyx_t_7)(PyObject *); + PyObject *__pyx_t_8 = NULL; + PyObject *__pyx_t_9 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("strip_tags", 0); + + /* "selectolax/modest/node.pxi":580 + * # ensure cython can recast element to a Node so that decompose will be called sooner. + * cdef Node element + * for tag in tags: # <<<<<<<<<<<<<< + * for element in self.css(tag): + * element.decompose(recursive=recursive) +*/ + if (unlikely(__pyx_v_tags == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); + __PYX_ERR(3, 580, __pyx_L1_error) + } + __pyx_t_1 = __pyx_v_tags; __Pyx_INCREF(__pyx_t_1); + __pyx_t_2 = 0; + for (;;) { + { + Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1); + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely((__pyx_temp < 0))) __PYX_ERR(3, 580, __pyx_L1_error) + #endif + if (__pyx_t_2 >= __pyx_temp) break; + } + __pyx_t_3 = __Pyx_PyList_GetItemRefFast(__pyx_t_1, __pyx_t_2, __Pyx_ReferenceSharing_OwnStrongReference); + ++__pyx_t_2; + if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 580, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_XDECREF_SET(__pyx_v_tag, __pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/modest/node.pxi":581 + * cdef Node element + * for tag in tags: + * for element in self.css(tag): # <<<<<<<<<<<<<< + * element.decompose(recursive=recursive) + * +*/ + __pyx_t_4 = ((PyObject *)__pyx_v_self); + __Pyx_INCREF(__pyx_t_4); + __pyx_t_5 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_tag}; + __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_css, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 581, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) { + __pyx_t_4 = __pyx_t_3; __Pyx_INCREF(__pyx_t_4); + __pyx_t_6 = 0; + __pyx_t_7 = NULL; + } else { + __pyx_t_6 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 581, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_7 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 581, __pyx_L1_error) + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + for (;;) { + if (likely(!__pyx_t_7)) { + if (likely(PyList_CheckExact(__pyx_t_4))) { + { + Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_4); + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely((__pyx_temp < 0))) __PYX_ERR(3, 581, __pyx_L1_error) + #endif + if (__pyx_t_6 >= __pyx_temp) break; + } + __pyx_t_3 = __Pyx_PyList_GetItemRefFast(__pyx_t_4, __pyx_t_6, __Pyx_ReferenceSharing_OwnStrongReference); + ++__pyx_t_6; + } else { + { + Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_4); + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely((__pyx_temp < 0))) __PYX_ERR(3, 581, __pyx_L1_error) + #endif + if (__pyx_t_6 >= __pyx_temp) break; + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_3 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_6)); + #else + __pyx_t_3 = __Pyx_PySequence_ITEM(__pyx_t_4, __pyx_t_6); + #endif + ++__pyx_t_6; + } + if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 581, __pyx_L1_error) + } else { + __pyx_t_3 = __pyx_t_7(__pyx_t_4); + if (unlikely(!__pyx_t_3)) { + PyObject* exc_type = PyErr_Occurred(); + if (exc_type) { + if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(3, 581, __pyx_L1_error) + PyErr_Clear(); + } + break; + } + } + __Pyx_GOTREF(__pyx_t_3); + if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_mstate_global->__pyx_ptype_10selectolax_6parser_Node))))) __PYX_ERR(3, 581, __pyx_L1_error) + __Pyx_XDECREF_SET(__pyx_v_element, ((struct __pyx_obj_10selectolax_6parser_Node *)__pyx_t_3)); + __pyx_t_3 = 0; + + /* "selectolax/modest/node.pxi":582 + * for tag in tags: + * for element in self.css(tag): + * element.decompose(recursive=recursive) # <<<<<<<<<<<<<< + * + * def unwrap_tags(self, list tags, delete_empty = False): +*/ + __pyx_t_8 = ((PyObject *)__pyx_v_element); + __Pyx_INCREF(__pyx_t_8); + __pyx_t_5 = 0; + { + PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_8, NULL}; + __pyx_t_9 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(3, 582, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_recursive, ((PyObject *)__pyx_v_recursive), __pyx_t_9, __pyx_callargs+1, 0) < (0)) __PYX_ERR(3, 582, __pyx_L1_error) + __pyx_t_3 = __Pyx_Object_VectorcallMethod_CallFromBuilder((PyObject*)__pyx_mstate_global->__pyx_n_u_decompose, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_9); + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 582, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "selectolax/modest/node.pxi":581 + * cdef Node element + * for tag in tags: + * for element in self.css(tag): # <<<<<<<<<<<<<< + * element.decompose(recursive=recursive) + * +*/ + } + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "selectolax/modest/node.pxi":580 + * # ensure cython can recast element to a Node so that decompose will be called sooner. + * cdef Node element + * for tag in tags: # <<<<<<<<<<<<<< + * for element in self.css(tag): + * element.decompose(recursive=recursive) +*/ + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "selectolax/modest/node.pxi":558 + * myhtml_node_delete(self.node) + * + * def strip_tags(self, list tags, bool recursive = False): # <<<<<<<<<<<<<< + * """Remove specified tags from the HTML tree. + * +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_XDECREF(__pyx_t_9); + __Pyx_AddTraceback("selectolax.parser.Node.strip_tags", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF((PyObject *)__pyx_v_element); + __Pyx_XDECREF(__pyx_v_tag); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/modest/node.pxi":584 + * element.decompose(recursive=recursive) + * + * def unwrap_tags(self, list tags, delete_empty = False): # <<<<<<<<<<<<<< + * """Unwraps specified tags from the HTML tree. + * +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_4Node_27unwrap_tags(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6parser_4Node_26unwrap_tags, "Node.unwrap_tags(self, list tags, delete_empty=False)\n\nUnwraps specified tags from the HTML tree.\n\nWorks the same as the ``unwrap`` method, but applied to a list of tags.\n\nParameters\n----------\ntags : list\n List of tags to remove.\ndelete_empty : bool, default False\n Whenever to delete empty tags.\n\nExamples\n--------\n\n>>> tree = HTMLParser(\"
Hello world!
\")\n>>> tree.body.unwrap_tags(['i','a'])\n>>> tree.body.html\n'
Hello world!
'\n\nNote: by default, empty tags are ignored, set \"delete_empty\" to \"True\" to change this."); +static PyMethodDef __pyx_mdef_10selectolax_6parser_4Node_27unwrap_tags = {"unwrap_tags", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_4Node_27unwrap_tags, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_4Node_26unwrap_tags}; +static PyObject *__pyx_pw_10selectolax_6parser_4Node_27unwrap_tags(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_tags = 0; + PyObject *__pyx_v_delete_empty = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[2] = {0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("unwrap_tags (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_tags,&__pyx_mstate_global->__pyx_n_u_delete_empty,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(3, 584, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(3, 584, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(3, 584, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "unwrap_tags", 0) < (0)) __PYX_ERR(3, 584, __pyx_L3_error) + if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_False)); + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("unwrap_tags", 0, 1, 2, i); __PYX_ERR(3, 584, __pyx_L3_error) } + } + } else { + switch (__pyx_nargs) { + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(3, 584, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(3, 584, __pyx_L3_error) + break; + default: goto __pyx_L5_argtuple_error; + } + if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_False)); + } + __pyx_v_tags = ((PyObject*)values[0]); + __pyx_v_delete_empty = values[1]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("unwrap_tags", 0, 1, 2, __pyx_nargs); __PYX_ERR(3, 584, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.parser.Node.unwrap_tags", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_tags), (&PyList_Type), 1, "tags", 1))) __PYX_ERR(3, 584, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6parser_4Node_26unwrap_tags(((struct __pyx_obj_10selectolax_6parser_Node *)__pyx_v_self), __pyx_v_tags, __pyx_v_delete_empty); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_4Node_26unwrap_tags(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self, PyObject *__pyx_v_tags, PyObject *__pyx_v_delete_empty) { + struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_element = 0; + PyObject *__pyx_v_tag = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + Py_ssize_t __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + size_t __pyx_t_5; + Py_ssize_t __pyx_t_6; + PyObject *(*__pyx_t_7)(PyObject *); + PyObject *__pyx_t_8 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("unwrap_tags", 0); + + /* "selectolax/modest/node.pxi":607 + * """ + * cdef Node element + * for tag in tags: # <<<<<<<<<<<<<< + * for element in self.css(tag): + * element.unwrap(delete_empty) +*/ + if (unlikely(__pyx_v_tags == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); + __PYX_ERR(3, 607, __pyx_L1_error) + } + __pyx_t_1 = __pyx_v_tags; __Pyx_INCREF(__pyx_t_1); + __pyx_t_2 = 0; + for (;;) { + { + Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1); + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely((__pyx_temp < 0))) __PYX_ERR(3, 607, __pyx_L1_error) + #endif + if (__pyx_t_2 >= __pyx_temp) break; + } + __pyx_t_3 = __Pyx_PyList_GetItemRefFast(__pyx_t_1, __pyx_t_2, __Pyx_ReferenceSharing_OwnStrongReference); + ++__pyx_t_2; + if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 607, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_XDECREF_SET(__pyx_v_tag, __pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/modest/node.pxi":608 + * cdef Node element + * for tag in tags: + * for element in self.css(tag): # <<<<<<<<<<<<<< + * element.unwrap(delete_empty) + * +*/ + __pyx_t_4 = ((PyObject *)__pyx_v_self); + __Pyx_INCREF(__pyx_t_4); + __pyx_t_5 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_tag}; + __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_css, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 608, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) { + __pyx_t_4 = __pyx_t_3; __Pyx_INCREF(__pyx_t_4); + __pyx_t_6 = 0; + __pyx_t_7 = NULL; + } else { + __pyx_t_6 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 608, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_7 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 608, __pyx_L1_error) + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + for (;;) { + if (likely(!__pyx_t_7)) { + if (likely(PyList_CheckExact(__pyx_t_4))) { + { + Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_4); + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely((__pyx_temp < 0))) __PYX_ERR(3, 608, __pyx_L1_error) + #endif + if (__pyx_t_6 >= __pyx_temp) break; + } + __pyx_t_3 = __Pyx_PyList_GetItemRefFast(__pyx_t_4, __pyx_t_6, __Pyx_ReferenceSharing_OwnStrongReference); + ++__pyx_t_6; + } else { + { + Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_4); + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely((__pyx_temp < 0))) __PYX_ERR(3, 608, __pyx_L1_error) + #endif + if (__pyx_t_6 >= __pyx_temp) break; + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_3 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_6)); + #else + __pyx_t_3 = __Pyx_PySequence_ITEM(__pyx_t_4, __pyx_t_6); + #endif + ++__pyx_t_6; + } + if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 608, __pyx_L1_error) + } else { + __pyx_t_3 = __pyx_t_7(__pyx_t_4); + if (unlikely(!__pyx_t_3)) { + PyObject* exc_type = PyErr_Occurred(); + if (exc_type) { + if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(3, 608, __pyx_L1_error) + PyErr_Clear(); + } + break; + } + } + __Pyx_GOTREF(__pyx_t_3); + if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_mstate_global->__pyx_ptype_10selectolax_6parser_Node))))) __PYX_ERR(3, 608, __pyx_L1_error) + __Pyx_XDECREF_SET(__pyx_v_element, ((struct __pyx_obj_10selectolax_6parser_Node *)__pyx_t_3)); + __pyx_t_3 = 0; + + /* "selectolax/modest/node.pxi":609 + * for tag in tags: + * for element in self.css(tag): + * element.unwrap(delete_empty) # <<<<<<<<<<<<<< + * + * def replace_with(self, str_or_Node value): +*/ + __pyx_t_8 = ((PyObject *)__pyx_v_element); + __Pyx_INCREF(__pyx_t_8); + __pyx_t_5 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_v_delete_empty}; + __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_unwrap, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 609, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "selectolax/modest/node.pxi":608 + * cdef Node element + * for tag in tags: + * for element in self.css(tag): # <<<<<<<<<<<<<< + * element.unwrap(delete_empty) + * +*/ + } + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "selectolax/modest/node.pxi":607 + * """ + * cdef Node element + * for tag in tags: # <<<<<<<<<<<<<< + * for element in self.css(tag): + * element.unwrap(delete_empty) +*/ + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "selectolax/modest/node.pxi":584 + * element.decompose(recursive=recursive) + * + * def unwrap_tags(self, list tags, delete_empty = False): # <<<<<<<<<<<<<< + * """Unwraps specified tags from the HTML tree. + * +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_AddTraceback("selectolax.parser.Node.unwrap_tags", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF((PyObject *)__pyx_v_element); + __Pyx_XDECREF(__pyx_v_tag); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/modest/node.pxi":611 + * element.unwrap(delete_empty) + * + * def replace_with(self, str_or_Node value): # <<<<<<<<<<<<<< + * """Replace current Node with specified value. + * +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_4Node_29replace_with(PyObject *__pyx_v_signatures, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6parser_4Node_28replace_with, "Node.replace_with(signatures, args, kwargs, defaults, _fused_sigindex={})\n\nReplace current Node with specified value.\n\nParameters\n----------\nvalue : str, bytes or Node\n The text or Node instance to replace the Node with.\n When a text string is passed, it's treated as text. All HTML tags will be escaped.\n Convert and pass the ``Node`` object when you want to work with HTML.\n Does not clone the ``Node`` object.\n All future changes to the passed ``Node`` object will also be taken into account.\n\nExamples\n--------\n\n>>> tree = HTMLParser('
Get \"Laptop\"
')\n>>> img = tree.css_first('img')\n>>> img.replace_with(img.attributes.get('alt', ''))\n>>> tree.body.child.html\n'
Get Laptop
'\n\n>>> html_parser = HTMLParser('
Get
')\n>>> html_parser2 = HTMLParser('
Test
')\n>>> img_node = html_parser.css_first('img')\n>>> img_node.replace_with(html_parser2.body.child)\n'
Get
Test
'"); +static PyMethodDef __pyx_mdef_10selectolax_6parser_4Node_29replace_with = {"replace_with", (PyCFunction)(void(*)(void))(PyCFunctionWithKeywords)__pyx_pw_10selectolax_6parser_4Node_29replace_with, METH_VARARGS|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_4Node_28replace_with}; +static PyObject *__pyx_pw_10selectolax_6parser_4Node_29replace_with(PyObject *__pyx_v_signatures, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_args = 0; + PyObject *__pyx_v_kwargs = 0; + CYTHON_UNUSED PyObject *__pyx_v_defaults = 0; + CYTHON_UNUSED PyObject *__pyx_v__fused_sigindex = 0; + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[4] = {0,0,0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__pyx_fused_cpdef (wrapper)", 0); + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_args,&__pyx_mstate_global->__pyx_n_u_kwargs,&__pyx_mstate_global->__pyx_n_u_defaults,&__pyx_mstate_global->__pyx_n_u_fused_sigindex,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(3, 611, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 4: + values[3] = __Pyx_ArgRef_VARARGS(__pyx_args, 3); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(3, 611, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 3: + values[2] = __Pyx_ArgRef_VARARGS(__pyx_args, 2); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(3, 611, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 2: + values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(3, 611, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(3, 611, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__pyx_fused_cpdef", 0) < (0)) __PYX_ERR(3, 611, __pyx_L3_error) + if (!values[3]) values[3] = __Pyx_NewRef(__pyx_mstate_global->__pyx_k__3); + for (Py_ssize_t i = __pyx_nargs; i < 3; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__pyx_fused_cpdef", 0, 3, 4, i); __PYX_ERR(3, 611, __pyx_L3_error) } + } + } else { + switch (__pyx_nargs) { + case 4: + values[3] = __Pyx_ArgRef_VARARGS(__pyx_args, 3); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(3, 611, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 3: + values[2] = __Pyx_ArgRef_VARARGS(__pyx_args, 2); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(3, 611, __pyx_L3_error) + values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(3, 611, __pyx_L3_error) + values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(3, 611, __pyx_L3_error) + break; + default: goto __pyx_L5_argtuple_error; + } + if (!values[3]) values[3] = __Pyx_NewRef(__pyx_mstate_global->__pyx_k__3); + } + __pyx_v_args = values[0]; + __pyx_v_kwargs = values[1]; + __pyx_v_defaults = values[2]; + __pyx_v__fused_sigindex = values[3]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("__pyx_fused_cpdef", 0, 3, 4, __pyx_nargs); __PYX_ERR(3, 611, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.parser.Node.__pyx_fused_cpdef", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_10selectolax_6parser_4Node_28replace_with(((struct __pyx_obj_10selectolax_6parser_Node *)__pyx_v_signatures), __pyx_v_args, __pyx_v_kwargs, __pyx_v_defaults, __pyx_v__fused_sigindex); + + /* function exit code */ + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_4Node_28replace_with(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_signatures, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs, CYTHON_UNUSED PyObject *__pyx_v_defaults, CYTHON_UNUSED PyObject *__pyx_v__fused_sigindex) { + PyObject *__pyx_v_arg = NULL; + PyObject *__pyx_v_dest_sig0 = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_t_2; + int __pyx_t_3; + Py_ssize_t __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + PyObject *__pyx_t_9[4]; + PyObject *__pyx_t_10 = NULL; + size_t __pyx_t_11; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("replace_with", 0); + __Pyx_INCREF(__pyx_v_kwargs); + __pyx_t_2 = (__pyx_v_kwargs != Py_None); + if (__pyx_t_2) { + } else { + __pyx_t_1 = __pyx_t_2; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_kwargs); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(3, 611, __pyx_L1_error) + __pyx_t_3 = (!__pyx_t_2); + __pyx_t_1 = __pyx_t_3; + __pyx_L4_bool_binop_done:; + if (__pyx_t_1) { + __Pyx_INCREF(Py_None); + __Pyx_DECREF_SET(__pyx_v_kwargs, Py_None); + } + if (unlikely(__pyx_v_args == Py_None)) { + PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); + __PYX_ERR(3, 611, __pyx_L1_error) + } + __pyx_t_4 = __Pyx_PyTuple_GET_SIZE(((PyObject*)__pyx_v_args)); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(3, 611, __pyx_L1_error) + __pyx_t_1 = (1 < __pyx_t_4); + if (__pyx_t_1) { + if (unlikely(__pyx_v_args == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(3, 611, __pyx_L1_error) + } + __pyx_t_5 = __Pyx_PyTuple_GET_ITEM(((PyObject*)__pyx_v_args), 1); + __Pyx_INCREF(__pyx_t_5); + __pyx_v_arg = __pyx_t_5; + __pyx_t_5 = 0; + goto __pyx_L6; + } + __pyx_t_3 = (__pyx_v_kwargs != Py_None); + if (__pyx_t_3) { + } else { + __pyx_t_1 = __pyx_t_3; + goto __pyx_L7_bool_binop_done; + } + if (unlikely(__pyx_v_kwargs == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); + __PYX_ERR(3, 611, __pyx_L1_error) + } + __pyx_t_3 = (__Pyx_PyDict_ContainsTF(__pyx_mstate_global->__pyx_n_u_value, ((PyObject*)__pyx_v_kwargs), Py_EQ)); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(3, 611, __pyx_L1_error) + __pyx_t_1 = __pyx_t_3; + __pyx_L7_bool_binop_done:; + if (likely(__pyx_t_1)) { + if (unlikely(__pyx_v_kwargs == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(3, 611, __pyx_L1_error) + } + __pyx_t_5 = __Pyx_PyDict_GetItem(((PyObject*)__pyx_v_kwargs), __pyx_mstate_global->__pyx_n_u_value); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 611, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_v_arg = __pyx_t_5; + __pyx_t_5 = 0; + goto __pyx_L6; + } + /*else*/ { + __pyx_t_6 = NULL; + __pyx_t_7 = __Pyx_PyUnicode_From_long(2, 0, ' ', 'd'); if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 611, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + if (unlikely(__pyx_v_args == Py_None)) { + PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); + __PYX_ERR(3, 611, __pyx_L1_error) + } + __pyx_t_4 = __Pyx_PyTuple_GET_SIZE(((PyObject*)__pyx_v_args)); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(3, 611, __pyx_L1_error) + __pyx_t_8 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_t_4, 0, ' ', 'd'); if (unlikely(!__pyx_t_8)) __PYX_ERR(3, 611, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_9[0] = __pyx_mstate_global->__pyx_kp_u_Expected_at_least; + __pyx_t_9[1] = __pyx_t_7; + __pyx_t_9[2] = __pyx_mstate_global->__pyx_kp_u_arguments_got; + __pyx_t_9[3] = __pyx_t_8; + __pyx_t_10 = __Pyx_PyUnicode_Join(__pyx_t_9, 4, 18 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_7) + 16 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_8), 127); + if (unlikely(!__pyx_t_10)) __PYX_ERR(3, 611, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_11 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_10}; + __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __pyx_callargs+__pyx_t_11, (2-__pyx_t_11) | (__pyx_t_11*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 611, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + } + __Pyx_Raise(__pyx_t_5, 0, 0, 0); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __PYX_ERR(3, 611, __pyx_L1_error) + } + __pyx_L6:; + __pyx_t_5 = __pyx_ff_map_fused_7df988_1_3_02b106__11__dunderbuiltin__dunder_PyObject__ptr__and_1__etc(__pyx_v_arg); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 611, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_v_dest_sig0 = ((PyObject*)__pyx_t_5); + __pyx_t_5 = 0; + __Pyx_XDECREF(__pyx_r); + __pyx_t_5 = __pyx_ff_match_signatures_single(((PyObject*)__pyx_v_signatures), __pyx_v_dest_sig0); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 611, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_r = __pyx_t_5; + __pyx_t_5 = 0; + goto __pyx_L0; + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_XDECREF(__pyx_t_10); + __Pyx_AddTraceback("selectolax.parser.Node.__pyx_fused_cpdef", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_arg); + __Pyx_XDECREF(__pyx_v_dest_sig0); + __Pyx_XDECREF(__pyx_v_kwargs); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static PyObject *__pyx_fuse_0__pyx_pw_10selectolax_6parser_4Node_51replace_with(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static PyMethodDef __pyx_fuse_0__pyx_mdef_10selectolax_6parser_4Node_51replace_with = {"__pyx_fuse_0replace_with", (PyCFunction)(void(*)(void))(PyCFunctionWithKeywords)__pyx_fuse_0__pyx_pw_10selectolax_6parser_4Node_51replace_with, METH_VARARGS|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_4Node_28replace_with}; +static PyObject *__pyx_fuse_0__pyx_pw_10selectolax_6parser_4Node_51replace_with(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_value = 0; + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("replace_with (wrapper)", 0); + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_value,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(3, 611, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(3, 611, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "replace_with", 0) < (0)) __PYX_ERR(3, 611, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("replace_with", 1, 1, 1, i); __PYX_ERR(3, 611, __pyx_L3_error) } + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(3, 611, __pyx_L3_error) + } + __pyx_v_value = ((PyObject*)values[0]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("replace_with", 1, 1, 1, __pyx_nargs); __PYX_ERR(3, 611, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.parser.Node.replace_with", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_value), (&PyUnicode_Type), 1, "value", 1))) __PYX_ERR(3, 611, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6parser_4Node_50replace_with(((struct __pyx_obj_10selectolax_6parser_Node *)__pyx_v_self), __pyx_v_value); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_4Node_50replace_with(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self, PyObject *__pyx_v_value) { + myhtml_tree_node_t *__pyx_v_node; + PyObject *__pyx_v_bytes_val = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + char *__pyx_t_4; + Py_ssize_t __pyx_t_5; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + size_t __pyx_t_9; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__pyx_fuse_0replace_with", 0); + + /* "selectolax/modest/node.pxi":639 + * """ + * cdef myhtml_tree_node_t *node + * if isinstance(value, (str, bytes, unicode)): # <<<<<<<<<<<<<< + * bytes_val = to_bytes(value) + * node = myhtml_node_create(self.parser.html_tree, MyHTML_TAG__TEXT, MyHTML_NAMESPACE_HTML) +*/ + __pyx_t_2 = PyUnicode_Check(__pyx_v_value); + if (!__pyx_t_2) { + } else { + __pyx_t_1 = __pyx_t_2; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_2 = PyBytes_Check(__pyx_v_value); + __pyx_t_1 = __pyx_t_2; + __pyx_L4_bool_binop_done:; + if (__pyx_t_1) { + + /* "selectolax/modest/node.pxi":640 + * cdef myhtml_tree_node_t *node + * if isinstance(value, (str, bytes, unicode)): + * bytes_val = to_bytes(value) # <<<<<<<<<<<<<< + * node = myhtml_node_create(self.parser.html_tree, MyHTML_TAG__TEXT, MyHTML_NAMESPACE_HTML) + * myhtml_node_text_set(node, bytes_val, len(bytes_val), MyENCODING_UTF_8) +*/ + __pyx_t_3 = __pyx_fuse_0__pyx_f_10selectolax_6parser_to_bytes(__pyx_v_value); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 640, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_v_bytes_val = ((PyObject*)__pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/modest/node.pxi":641 + * if isinstance(value, (str, bytes, unicode)): + * bytes_val = to_bytes(value) + * node = myhtml_node_create(self.parser.html_tree, MyHTML_TAG__TEXT, MyHTML_NAMESPACE_HTML) # <<<<<<<<<<<<<< + * myhtml_node_text_set(node, bytes_val, len(bytes_val), MyENCODING_UTF_8) + * myhtml_node_insert_before(self.node, node) +*/ + __pyx_v_node = myhtml_node_create(__pyx_v_self->parser->html_tree, MyHTML_TAG__TEXT, MyHTML_NAMESPACE_HTML); + + /* "selectolax/modest/node.pxi":642 + * bytes_val = to_bytes(value) + * node = myhtml_node_create(self.parser.html_tree, MyHTML_TAG__TEXT, MyHTML_NAMESPACE_HTML) + * myhtml_node_text_set(node, bytes_val, len(bytes_val), MyENCODING_UTF_8) # <<<<<<<<<<<<<< + * myhtml_node_insert_before(self.node, node) + * myhtml_node_delete(self.node) +*/ + if (unlikely(__pyx_v_bytes_val == Py_None)) { + PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); + __PYX_ERR(3, 642, __pyx_L1_error) + } + __pyx_t_4 = __Pyx_PyBytes_AsWritableString(__pyx_v_bytes_val); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(3, 642, __pyx_L1_error) + if (unlikely(__pyx_v_bytes_val == Py_None)) { + PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); + __PYX_ERR(3, 642, __pyx_L1_error) + } + __pyx_t_5 = __Pyx_PyBytes_GET_SIZE(__pyx_v_bytes_val); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(3, 642, __pyx_L1_error) + (void)(myhtml_node_text_set(__pyx_v_node, ((char *)__pyx_t_4), __pyx_t_5, MyENCODING_UTF_8)); + + /* "selectolax/modest/node.pxi":643 + * node = myhtml_node_create(self.parser.html_tree, MyHTML_TAG__TEXT, MyHTML_NAMESPACE_HTML) + * myhtml_node_text_set(node, bytes_val, len(bytes_val), MyENCODING_UTF_8) + * myhtml_node_insert_before(self.node, node) # <<<<<<<<<<<<<< + * myhtml_node_delete(self.node) + * elif isinstance(value, Node): +*/ + (void)(myhtml_node_insert_before(__pyx_v_self->node, __pyx_v_node)); + + /* "selectolax/modest/node.pxi":644 + * myhtml_node_text_set(node, bytes_val, len(bytes_val), MyENCODING_UTF_8) + * myhtml_node_insert_before(self.node, node) + * myhtml_node_delete(self.node) # <<<<<<<<<<<<<< + * elif isinstance(value, Node): + * node = myhtml_node_clone_deep(self.parser.html_tree, value.node) +*/ + myhtml_node_delete(__pyx_v_self->node); + + /* "selectolax/modest/node.pxi":639 + * """ + * cdef myhtml_tree_node_t *node + * if isinstance(value, (str, bytes, unicode)): # <<<<<<<<<<<<<< + * bytes_val = to_bytes(value) + * node = myhtml_node_create(self.parser.html_tree, MyHTML_TAG__TEXT, MyHTML_NAMESPACE_HTML) +*/ + goto __pyx_L3; + } + + /* "selectolax/modest/node.pxi":645 + * myhtml_node_insert_before(self.node, node) + * myhtml_node_delete(self.node) + * elif isinstance(value, Node): # <<<<<<<<<<<<<< + * node = myhtml_node_clone_deep(self.parser.html_tree, value.node) + * myhtml_node_insert_before(self.node, node) +*/ + __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_value, __pyx_mstate_global->__pyx_ptype_10selectolax_6parser_Node); + if (likely(__pyx_t_1)) { + + /* "selectolax/modest/node.pxi":646 + * myhtml_node_delete(self.node) + * elif isinstance(value, Node): + * node = myhtml_node_clone_deep(self.parser.html_tree, value.node) # <<<<<<<<<<<<<< + * myhtml_node_insert_before(self.node, node) + * myhtml_node_delete(self.node) +*/ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_value, __pyx_mstate_global->__pyx_n_u_node); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 646, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_v_node = myhtml_node_clone_deep(__pyx_v_self->parser->html_tree, ((myhtml_tree_node_t *)__pyx_t_3)); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "selectolax/modest/node.pxi":647 + * elif isinstance(value, Node): + * node = myhtml_node_clone_deep(self.parser.html_tree, value.node) + * myhtml_node_insert_before(self.node, node) # <<<<<<<<<<<<<< + * myhtml_node_delete(self.node) + * else: +*/ + (void)(myhtml_node_insert_before(__pyx_v_self->node, __pyx_v_node)); + + /* "selectolax/modest/node.pxi":648 + * node = myhtml_node_clone_deep(self.parser.html_tree, value.node) + * myhtml_node_insert_before(self.node, node) + * myhtml_node_delete(self.node) # <<<<<<<<<<<<<< + * else: + * raise TypeError("Expected a string or Node instance, but %s found" % type(value).__name__) +*/ + myhtml_node_delete(__pyx_v_self->node); + + /* "selectolax/modest/node.pxi":645 + * myhtml_node_insert_before(self.node, node) + * myhtml_node_delete(self.node) + * elif isinstance(value, Node): # <<<<<<<<<<<<<< + * node = myhtml_node_clone_deep(self.parser.html_tree, value.node) + * myhtml_node_insert_before(self.node, node) +*/ + goto __pyx_L3; + } + + /* "selectolax/modest/node.pxi":650 + * myhtml_node_delete(self.node) + * else: + * raise TypeError("Expected a string or Node instance, but %s found" % type(value).__name__) # <<<<<<<<<<<<<< + * + * def insert_before(self, str_or_Node value): +*/ + /*else*/ { + __pyx_t_6 = NULL; + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(__pyx_v_value)), __pyx_mstate_global->__pyx_n_u_name); if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 650, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_8 = __Pyx_PyUnicode_FormatSafe(__pyx_mstate_global->__pyx_kp_u_Expected_a_string_or_Node_instan, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(3, 650, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_t_9 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_8}; + __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (__pyx_t_9*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 650, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(3, 650, __pyx_L1_error) + } + __pyx_L3:; + + /* "selectolax/modest/node.pxi":611 + * element.unwrap(delete_empty) + * + * def replace_with(self, str_or_Node value): # <<<<<<<<<<<<<< + * """Replace current Node with specified value. + * +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_AddTraceback("selectolax.parser.Node.replace_with", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_bytes_val); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static PyObject *__pyx_fuse_1__pyx_pw_10selectolax_6parser_4Node_53replace_with(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static PyMethodDef __pyx_fuse_1__pyx_mdef_10selectolax_6parser_4Node_53replace_with = {"__pyx_fuse_1replace_with", (PyCFunction)(void(*)(void))(PyCFunctionWithKeywords)__pyx_fuse_1__pyx_pw_10selectolax_6parser_4Node_53replace_with, METH_VARARGS|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_4Node_28replace_with}; +static PyObject *__pyx_fuse_1__pyx_pw_10selectolax_6parser_4Node_53replace_with(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_value = 0; + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("replace_with (wrapper)", 0); + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_value,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(3, 611, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(3, 611, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "replace_with", 0) < (0)) __PYX_ERR(3, 611, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("replace_with", 1, 1, 1, i); __PYX_ERR(3, 611, __pyx_L3_error) } + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(3, 611, __pyx_L3_error) + } + __pyx_v_value = ((PyObject*)values[0]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("replace_with", 1, 1, 1, __pyx_nargs); __PYX_ERR(3, 611, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.parser.Node.replace_with", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_value), (&PyBytes_Type), 1, "value", 1))) __PYX_ERR(3, 611, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6parser_4Node_52replace_with(((struct __pyx_obj_10selectolax_6parser_Node *)__pyx_v_self), __pyx_v_value); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_4Node_52replace_with(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self, PyObject *__pyx_v_value) { + myhtml_tree_node_t *__pyx_v_node; + PyObject *__pyx_v_bytes_val = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + char *__pyx_t_4; + Py_ssize_t __pyx_t_5; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + size_t __pyx_t_9; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__pyx_fuse_1replace_with", 0); + + /* "selectolax/modest/node.pxi":639 + * """ + * cdef myhtml_tree_node_t *node + * if isinstance(value, (str, bytes, unicode)): # <<<<<<<<<<<<<< + * bytes_val = to_bytes(value) + * node = myhtml_node_create(self.parser.html_tree, MyHTML_TAG__TEXT, MyHTML_NAMESPACE_HTML) +*/ + __pyx_t_2 = PyUnicode_Check(__pyx_v_value); + if (!__pyx_t_2) { + } else { + __pyx_t_1 = __pyx_t_2; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_2 = PyBytes_Check(__pyx_v_value); + __pyx_t_1 = __pyx_t_2; + __pyx_L4_bool_binop_done:; + if (__pyx_t_1) { + + /* "selectolax/modest/node.pxi":640 + * cdef myhtml_tree_node_t *node + * if isinstance(value, (str, bytes, unicode)): + * bytes_val = to_bytes(value) # <<<<<<<<<<<<<< + * node = myhtml_node_create(self.parser.html_tree, MyHTML_TAG__TEXT, MyHTML_NAMESPACE_HTML) + * myhtml_node_text_set(node, bytes_val, len(bytes_val), MyENCODING_UTF_8) +*/ + __pyx_t_3 = __pyx_fuse_1__pyx_f_10selectolax_6parser_to_bytes(__pyx_v_value); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 640, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_v_bytes_val = ((PyObject*)__pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/modest/node.pxi":641 + * if isinstance(value, (str, bytes, unicode)): + * bytes_val = to_bytes(value) + * node = myhtml_node_create(self.parser.html_tree, MyHTML_TAG__TEXT, MyHTML_NAMESPACE_HTML) # <<<<<<<<<<<<<< + * myhtml_node_text_set(node, bytes_val, len(bytes_val), MyENCODING_UTF_8) + * myhtml_node_insert_before(self.node, node) +*/ + __pyx_v_node = myhtml_node_create(__pyx_v_self->parser->html_tree, MyHTML_TAG__TEXT, MyHTML_NAMESPACE_HTML); + + /* "selectolax/modest/node.pxi":642 + * bytes_val = to_bytes(value) + * node = myhtml_node_create(self.parser.html_tree, MyHTML_TAG__TEXT, MyHTML_NAMESPACE_HTML) + * myhtml_node_text_set(node, bytes_val, len(bytes_val), MyENCODING_UTF_8) # <<<<<<<<<<<<<< + * myhtml_node_insert_before(self.node, node) + * myhtml_node_delete(self.node) +*/ + if (unlikely(__pyx_v_bytes_val == Py_None)) { + PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); + __PYX_ERR(3, 642, __pyx_L1_error) + } + __pyx_t_4 = __Pyx_PyBytes_AsWritableString(__pyx_v_bytes_val); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(3, 642, __pyx_L1_error) + if (unlikely(__pyx_v_bytes_val == Py_None)) { + PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); + __PYX_ERR(3, 642, __pyx_L1_error) + } + __pyx_t_5 = __Pyx_PyBytes_GET_SIZE(__pyx_v_bytes_val); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(3, 642, __pyx_L1_error) + (void)(myhtml_node_text_set(__pyx_v_node, ((char *)__pyx_t_4), __pyx_t_5, MyENCODING_UTF_8)); + + /* "selectolax/modest/node.pxi":643 + * node = myhtml_node_create(self.parser.html_tree, MyHTML_TAG__TEXT, MyHTML_NAMESPACE_HTML) + * myhtml_node_text_set(node, bytes_val, len(bytes_val), MyENCODING_UTF_8) + * myhtml_node_insert_before(self.node, node) # <<<<<<<<<<<<<< + * myhtml_node_delete(self.node) + * elif isinstance(value, Node): +*/ + (void)(myhtml_node_insert_before(__pyx_v_self->node, __pyx_v_node)); + + /* "selectolax/modest/node.pxi":644 + * myhtml_node_text_set(node, bytes_val, len(bytes_val), MyENCODING_UTF_8) + * myhtml_node_insert_before(self.node, node) + * myhtml_node_delete(self.node) # <<<<<<<<<<<<<< + * elif isinstance(value, Node): + * node = myhtml_node_clone_deep(self.parser.html_tree, value.node) +*/ + myhtml_node_delete(__pyx_v_self->node); + + /* "selectolax/modest/node.pxi":639 + * """ + * cdef myhtml_tree_node_t *node + * if isinstance(value, (str, bytes, unicode)): # <<<<<<<<<<<<<< + * bytes_val = to_bytes(value) + * node = myhtml_node_create(self.parser.html_tree, MyHTML_TAG__TEXT, MyHTML_NAMESPACE_HTML) +*/ + goto __pyx_L3; + } + + /* "selectolax/modest/node.pxi":645 + * myhtml_node_insert_before(self.node, node) + * myhtml_node_delete(self.node) + * elif isinstance(value, Node): # <<<<<<<<<<<<<< + * node = myhtml_node_clone_deep(self.parser.html_tree, value.node) + * myhtml_node_insert_before(self.node, node) +*/ + __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_value, __pyx_mstate_global->__pyx_ptype_10selectolax_6parser_Node); + if (likely(__pyx_t_1)) { + + /* "selectolax/modest/node.pxi":646 + * myhtml_node_delete(self.node) + * elif isinstance(value, Node): + * node = myhtml_node_clone_deep(self.parser.html_tree, value.node) # <<<<<<<<<<<<<< + * myhtml_node_insert_before(self.node, node) + * myhtml_node_delete(self.node) +*/ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_value, __pyx_mstate_global->__pyx_n_u_node); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 646, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_v_node = myhtml_node_clone_deep(__pyx_v_self->parser->html_tree, ((myhtml_tree_node_t *)__pyx_t_3)); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "selectolax/modest/node.pxi":647 + * elif isinstance(value, Node): + * node = myhtml_node_clone_deep(self.parser.html_tree, value.node) + * myhtml_node_insert_before(self.node, node) # <<<<<<<<<<<<<< + * myhtml_node_delete(self.node) + * else: +*/ + (void)(myhtml_node_insert_before(__pyx_v_self->node, __pyx_v_node)); + + /* "selectolax/modest/node.pxi":648 + * node = myhtml_node_clone_deep(self.parser.html_tree, value.node) + * myhtml_node_insert_before(self.node, node) + * myhtml_node_delete(self.node) # <<<<<<<<<<<<<< + * else: + * raise TypeError("Expected a string or Node instance, but %s found" % type(value).__name__) +*/ + myhtml_node_delete(__pyx_v_self->node); + + /* "selectolax/modest/node.pxi":645 + * myhtml_node_insert_before(self.node, node) + * myhtml_node_delete(self.node) + * elif isinstance(value, Node): # <<<<<<<<<<<<<< + * node = myhtml_node_clone_deep(self.parser.html_tree, value.node) + * myhtml_node_insert_before(self.node, node) +*/ + goto __pyx_L3; + } + + /* "selectolax/modest/node.pxi":650 + * myhtml_node_delete(self.node) + * else: + * raise TypeError("Expected a string or Node instance, but %s found" % type(value).__name__) # <<<<<<<<<<<<<< + * + * def insert_before(self, str_or_Node value): +*/ + /*else*/ { + __pyx_t_6 = NULL; + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(__pyx_v_value)), __pyx_mstate_global->__pyx_n_u_name); if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 650, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_8 = __Pyx_PyUnicode_FormatSafe(__pyx_mstate_global->__pyx_kp_u_Expected_a_string_or_Node_instan, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(3, 650, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_t_9 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_8}; + __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (__pyx_t_9*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 650, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(3, 650, __pyx_L1_error) + } + __pyx_L3:; + + /* "selectolax/modest/node.pxi":611 + * element.unwrap(delete_empty) + * + * def replace_with(self, str_or_Node value): # <<<<<<<<<<<<<< + * """Replace current Node with specified value. + * +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_AddTraceback("selectolax.parser.Node.replace_with", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_bytes_val); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static PyObject *__pyx_fuse_2__pyx_pw_10selectolax_6parser_4Node_55replace_with(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static PyMethodDef __pyx_fuse_2__pyx_mdef_10selectolax_6parser_4Node_55replace_with = {"__pyx_fuse_2replace_with", (PyCFunction)(void(*)(void))(PyCFunctionWithKeywords)__pyx_fuse_2__pyx_pw_10selectolax_6parser_4Node_55replace_with, METH_VARARGS|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_4Node_28replace_with}; +static PyObject *__pyx_fuse_2__pyx_pw_10selectolax_6parser_4Node_55replace_with(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_value = 0; + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("replace_with (wrapper)", 0); + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_value,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(3, 611, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(3, 611, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "replace_with", 0) < (0)) __PYX_ERR(3, 611, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("replace_with", 1, 1, 1, i); __PYX_ERR(3, 611, __pyx_L3_error) } + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(3, 611, __pyx_L3_error) + } + __pyx_v_value = ((struct __pyx_obj_10selectolax_6parser_Node *)values[0]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("replace_with", 1, 1, 1, __pyx_nargs); __PYX_ERR(3, 611, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.parser.Node.replace_with", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_value), __pyx_mstate_global->__pyx_ptype_10selectolax_6parser_Node, 1, "value", 0))) __PYX_ERR(3, 611, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6parser_4Node_54replace_with(((struct __pyx_obj_10selectolax_6parser_Node *)__pyx_v_self), __pyx_v_value); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_4Node_54replace_with(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self, struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_value) { + myhtml_tree_node_t *__pyx_v_node; + PyObject *__pyx_v_bytes_val = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + char *__pyx_t_4; + Py_ssize_t __pyx_t_5; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + size_t __pyx_t_9; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__pyx_fuse_2replace_with", 0); + + /* "selectolax/modest/node.pxi":639 + * """ + * cdef myhtml_tree_node_t *node + * if isinstance(value, (str, bytes, unicode)): # <<<<<<<<<<<<<< + * bytes_val = to_bytes(value) + * node = myhtml_node_create(self.parser.html_tree, MyHTML_TAG__TEXT, MyHTML_NAMESPACE_HTML) +*/ + __pyx_t_2 = PyUnicode_Check(((PyObject *)__pyx_v_value)); + if (!__pyx_t_2) { + } else { + __pyx_t_1 = __pyx_t_2; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_2 = PyBytes_Check(((PyObject *)__pyx_v_value)); + __pyx_t_1 = __pyx_t_2; + __pyx_L4_bool_binop_done:; + if (__pyx_t_1) { + + /* "selectolax/modest/node.pxi":640 + * cdef myhtml_tree_node_t *node + * if isinstance(value, (str, bytes, unicode)): + * bytes_val = to_bytes(value) # <<<<<<<<<<<<<< + * node = myhtml_node_create(self.parser.html_tree, MyHTML_TAG__TEXT, MyHTML_NAMESPACE_HTML) + * myhtml_node_text_set(node, bytes_val, len(bytes_val), MyENCODING_UTF_8) +*/ + __pyx_t_3 = __pyx_fuse_2__pyx_f_10selectolax_6parser_to_bytes(__pyx_v_value); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 640, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_v_bytes_val = ((PyObject*)__pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/modest/node.pxi":641 + * if isinstance(value, (str, bytes, unicode)): + * bytes_val = to_bytes(value) + * node = myhtml_node_create(self.parser.html_tree, MyHTML_TAG__TEXT, MyHTML_NAMESPACE_HTML) # <<<<<<<<<<<<<< + * myhtml_node_text_set(node, bytes_val, len(bytes_val), MyENCODING_UTF_8) + * myhtml_node_insert_before(self.node, node) +*/ + __pyx_v_node = myhtml_node_create(__pyx_v_self->parser->html_tree, MyHTML_TAG__TEXT, MyHTML_NAMESPACE_HTML); + + /* "selectolax/modest/node.pxi":642 + * bytes_val = to_bytes(value) + * node = myhtml_node_create(self.parser.html_tree, MyHTML_TAG__TEXT, MyHTML_NAMESPACE_HTML) + * myhtml_node_text_set(node, bytes_val, len(bytes_val), MyENCODING_UTF_8) # <<<<<<<<<<<<<< + * myhtml_node_insert_before(self.node, node) + * myhtml_node_delete(self.node) +*/ + if (unlikely(__pyx_v_bytes_val == Py_None)) { + PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); + __PYX_ERR(3, 642, __pyx_L1_error) + } + __pyx_t_4 = __Pyx_PyBytes_AsWritableString(__pyx_v_bytes_val); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(3, 642, __pyx_L1_error) + if (unlikely(__pyx_v_bytes_val == Py_None)) { + PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); + __PYX_ERR(3, 642, __pyx_L1_error) + } + __pyx_t_5 = __Pyx_PyBytes_GET_SIZE(__pyx_v_bytes_val); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(3, 642, __pyx_L1_error) + (void)(myhtml_node_text_set(__pyx_v_node, ((char *)__pyx_t_4), __pyx_t_5, MyENCODING_UTF_8)); + + /* "selectolax/modest/node.pxi":643 + * node = myhtml_node_create(self.parser.html_tree, MyHTML_TAG__TEXT, MyHTML_NAMESPACE_HTML) + * myhtml_node_text_set(node, bytes_val, len(bytes_val), MyENCODING_UTF_8) + * myhtml_node_insert_before(self.node, node) # <<<<<<<<<<<<<< + * myhtml_node_delete(self.node) + * elif isinstance(value, Node): +*/ + (void)(myhtml_node_insert_before(__pyx_v_self->node, __pyx_v_node)); + + /* "selectolax/modest/node.pxi":644 + * myhtml_node_text_set(node, bytes_val, len(bytes_val), MyENCODING_UTF_8) + * myhtml_node_insert_before(self.node, node) + * myhtml_node_delete(self.node) # <<<<<<<<<<<<<< + * elif isinstance(value, Node): + * node = myhtml_node_clone_deep(self.parser.html_tree, value.node) +*/ + myhtml_node_delete(__pyx_v_self->node); + + /* "selectolax/modest/node.pxi":639 + * """ + * cdef myhtml_tree_node_t *node + * if isinstance(value, (str, bytes, unicode)): # <<<<<<<<<<<<<< + * bytes_val = to_bytes(value) + * node = myhtml_node_create(self.parser.html_tree, MyHTML_TAG__TEXT, MyHTML_NAMESPACE_HTML) +*/ + goto __pyx_L3; + } + + /* "selectolax/modest/node.pxi":645 + * myhtml_node_insert_before(self.node, node) + * myhtml_node_delete(self.node) + * elif isinstance(value, Node): # <<<<<<<<<<<<<< + * node = myhtml_node_clone_deep(self.parser.html_tree, value.node) + * myhtml_node_insert_before(self.node, node) +*/ + __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_value), __pyx_mstate_global->__pyx_ptype_10selectolax_6parser_Node); + if (likely(__pyx_t_1)) { + + /* "selectolax/modest/node.pxi":646 + * myhtml_node_delete(self.node) + * elif isinstance(value, Node): + * node = myhtml_node_clone_deep(self.parser.html_tree, value.node) # <<<<<<<<<<<<<< + * myhtml_node_insert_before(self.node, node) + * myhtml_node_delete(self.node) +*/ + __pyx_v_node = myhtml_node_clone_deep(__pyx_v_self->parser->html_tree, ((myhtml_tree_node_t *)__pyx_v_value->node)); + + /* "selectolax/modest/node.pxi":647 + * elif isinstance(value, Node): + * node = myhtml_node_clone_deep(self.parser.html_tree, value.node) + * myhtml_node_insert_before(self.node, node) # <<<<<<<<<<<<<< + * myhtml_node_delete(self.node) + * else: +*/ + (void)(myhtml_node_insert_before(__pyx_v_self->node, __pyx_v_node)); + + /* "selectolax/modest/node.pxi":648 + * node = myhtml_node_clone_deep(self.parser.html_tree, value.node) + * myhtml_node_insert_before(self.node, node) + * myhtml_node_delete(self.node) # <<<<<<<<<<<<<< + * else: + * raise TypeError("Expected a string or Node instance, but %s found" % type(value).__name__) +*/ + myhtml_node_delete(__pyx_v_self->node); + + /* "selectolax/modest/node.pxi":645 + * myhtml_node_insert_before(self.node, node) + * myhtml_node_delete(self.node) + * elif isinstance(value, Node): # <<<<<<<<<<<<<< + * node = myhtml_node_clone_deep(self.parser.html_tree, value.node) + * myhtml_node_insert_before(self.node, node) +*/ + goto __pyx_L3; + } + + /* "selectolax/modest/node.pxi":650 + * myhtml_node_delete(self.node) + * else: + * raise TypeError("Expected a string or Node instance, but %s found" % type(value).__name__) # <<<<<<<<<<<<<< + * + * def insert_before(self, str_or_Node value): +*/ + /*else*/ { + __pyx_t_6 = NULL; + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_value))), __pyx_mstate_global->__pyx_n_u_name); if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 650, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_8 = __Pyx_PyUnicode_FormatSafe(__pyx_mstate_global->__pyx_kp_u_Expected_a_string_or_Node_instan, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(3, 650, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_t_9 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_8}; + __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (__pyx_t_9*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 650, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(3, 650, __pyx_L1_error) + } + __pyx_L3:; + + /* "selectolax/modest/node.pxi":611 + * element.unwrap(delete_empty) + * + * def replace_with(self, str_or_Node value): # <<<<<<<<<<<<<< + * """Replace current Node with specified value. + * +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_AddTraceback("selectolax.parser.Node.replace_with", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_bytes_val); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/modest/node.pxi":652 + * raise TypeError("Expected a string or Node instance, but %s found" % type(value).__name__) + * + * def insert_before(self, str_or_Node value): # <<<<<<<<<<<<<< + * """ + * Insert a node before the current Node. +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_4Node_31insert_before(PyObject *__pyx_v_signatures, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6parser_4Node_30insert_before, "Node.insert_before(signatures, args, kwargs, defaults, _fused_sigindex={})\n\nInsert a node before the current Node.\n\nParameters\n----------\nvalue : str, bytes or Node\n The text or Node instance to insert before the Node.\n When a text string is passed, it's treated as text. All HTML tags will be escaped.\n Convert and pass the ``Node`` object when you want to work with HTML.\n Does not clone the ``Node`` object.\n All future changes to the passed ``Node`` object will also be taken into account.\n\nExamples\n--------\n\n>>> tree = HTMLParser('
Get \"Laptop\"
')\n>>> img = tree.css_first('img')\n>>> img.insert_before(img.attributes.get('alt', ''))\n>>> tree.body.child.html\n'
Get Laptop\"Laptop\"
'\n\n>>> html_parser = HTMLParser('
Get
')\n>>> html_parser2 = HTMLParser('
Test
')\n>>> img_node = html_parser.css_first('img')\n>>> img_node.insert_before(html_parser2.body.child)\n
Get
Test
'"); +static PyMethodDef __pyx_mdef_10selectolax_6parser_4Node_31insert_before = {"insert_before", (PyCFunction)(void(*)(void))(PyCFunctionWithKeywords)__pyx_pw_10selectolax_6parser_4Node_31insert_before, METH_VARARGS|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_4Node_30insert_before}; +static PyObject *__pyx_pw_10selectolax_6parser_4Node_31insert_before(PyObject *__pyx_v_signatures, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_args = 0; + PyObject *__pyx_v_kwargs = 0; + CYTHON_UNUSED PyObject *__pyx_v_defaults = 0; + CYTHON_UNUSED PyObject *__pyx_v__fused_sigindex = 0; + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[4] = {0,0,0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__pyx_fused_cpdef (wrapper)", 0); + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_args,&__pyx_mstate_global->__pyx_n_u_kwargs,&__pyx_mstate_global->__pyx_n_u_defaults,&__pyx_mstate_global->__pyx_n_u_fused_sigindex,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(3, 652, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 4: + values[3] = __Pyx_ArgRef_VARARGS(__pyx_args, 3); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(3, 652, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 3: + values[2] = __Pyx_ArgRef_VARARGS(__pyx_args, 2); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(3, 652, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 2: + values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(3, 652, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(3, 652, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__pyx_fused_cpdef", 0) < (0)) __PYX_ERR(3, 652, __pyx_L3_error) + if (!values[3]) values[3] = __Pyx_NewRef(__pyx_mstate_global->__pyx_k__4); + for (Py_ssize_t i = __pyx_nargs; i < 3; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__pyx_fused_cpdef", 0, 3, 4, i); __PYX_ERR(3, 652, __pyx_L3_error) } + } + } else { + switch (__pyx_nargs) { + case 4: + values[3] = __Pyx_ArgRef_VARARGS(__pyx_args, 3); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(3, 652, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 3: + values[2] = __Pyx_ArgRef_VARARGS(__pyx_args, 2); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(3, 652, __pyx_L3_error) + values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(3, 652, __pyx_L3_error) + values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(3, 652, __pyx_L3_error) + break; + default: goto __pyx_L5_argtuple_error; + } + if (!values[3]) values[3] = __Pyx_NewRef(__pyx_mstate_global->__pyx_k__4); + } + __pyx_v_args = values[0]; + __pyx_v_kwargs = values[1]; + __pyx_v_defaults = values[2]; + __pyx_v__fused_sigindex = values[3]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("__pyx_fused_cpdef", 0, 3, 4, __pyx_nargs); __PYX_ERR(3, 652, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.parser.Node.__pyx_fused_cpdef", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_10selectolax_6parser_4Node_30insert_before(((struct __pyx_obj_10selectolax_6parser_Node *)__pyx_v_signatures), __pyx_v_args, __pyx_v_kwargs, __pyx_v_defaults, __pyx_v__fused_sigindex); + + /* function exit code */ + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_4Node_30insert_before(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_signatures, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs, CYTHON_UNUSED PyObject *__pyx_v_defaults, CYTHON_UNUSED PyObject *__pyx_v__fused_sigindex) { + PyObject *__pyx_v_arg = NULL; + PyObject *__pyx_v_dest_sig0 = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_t_2; + int __pyx_t_3; + Py_ssize_t __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + PyObject *__pyx_t_9[4]; + PyObject *__pyx_t_10 = NULL; + size_t __pyx_t_11; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("insert_before", 0); + __Pyx_INCREF(__pyx_v_kwargs); + __pyx_t_2 = (__pyx_v_kwargs != Py_None); + if (__pyx_t_2) { + } else { + __pyx_t_1 = __pyx_t_2; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_kwargs); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(3, 652, __pyx_L1_error) + __pyx_t_3 = (!__pyx_t_2); + __pyx_t_1 = __pyx_t_3; + __pyx_L4_bool_binop_done:; + if (__pyx_t_1) { + __Pyx_INCREF(Py_None); + __Pyx_DECREF_SET(__pyx_v_kwargs, Py_None); + } + if (unlikely(__pyx_v_args == Py_None)) { + PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); + __PYX_ERR(3, 652, __pyx_L1_error) + } + __pyx_t_4 = __Pyx_PyTuple_GET_SIZE(((PyObject*)__pyx_v_args)); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(3, 652, __pyx_L1_error) + __pyx_t_1 = (1 < __pyx_t_4); + if (__pyx_t_1) { + if (unlikely(__pyx_v_args == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(3, 652, __pyx_L1_error) + } + __pyx_t_5 = __Pyx_PyTuple_GET_ITEM(((PyObject*)__pyx_v_args), 1); + __Pyx_INCREF(__pyx_t_5); + __pyx_v_arg = __pyx_t_5; + __pyx_t_5 = 0; + goto __pyx_L6; + } + __pyx_t_3 = (__pyx_v_kwargs != Py_None); + if (__pyx_t_3) { + } else { + __pyx_t_1 = __pyx_t_3; + goto __pyx_L7_bool_binop_done; + } + if (unlikely(__pyx_v_kwargs == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); + __PYX_ERR(3, 652, __pyx_L1_error) + } + __pyx_t_3 = (__Pyx_PyDict_ContainsTF(__pyx_mstate_global->__pyx_n_u_value, ((PyObject*)__pyx_v_kwargs), Py_EQ)); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(3, 652, __pyx_L1_error) + __pyx_t_1 = __pyx_t_3; + __pyx_L7_bool_binop_done:; + if (likely(__pyx_t_1)) { + if (unlikely(__pyx_v_kwargs == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(3, 652, __pyx_L1_error) + } + __pyx_t_5 = __Pyx_PyDict_GetItem(((PyObject*)__pyx_v_kwargs), __pyx_mstate_global->__pyx_n_u_value); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 652, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_v_arg = __pyx_t_5; + __pyx_t_5 = 0; + goto __pyx_L6; + } + /*else*/ { + __pyx_t_6 = NULL; + __pyx_t_7 = __Pyx_PyUnicode_From_long(2, 0, ' ', 'd'); if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 652, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + if (unlikely(__pyx_v_args == Py_None)) { + PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); + __PYX_ERR(3, 652, __pyx_L1_error) + } + __pyx_t_4 = __Pyx_PyTuple_GET_SIZE(((PyObject*)__pyx_v_args)); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(3, 652, __pyx_L1_error) + __pyx_t_8 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_t_4, 0, ' ', 'd'); if (unlikely(!__pyx_t_8)) __PYX_ERR(3, 652, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_9[0] = __pyx_mstate_global->__pyx_kp_u_Expected_at_least; + __pyx_t_9[1] = __pyx_t_7; + __pyx_t_9[2] = __pyx_mstate_global->__pyx_kp_u_arguments_got; + __pyx_t_9[3] = __pyx_t_8; + __pyx_t_10 = __Pyx_PyUnicode_Join(__pyx_t_9, 4, 18 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_7) + 16 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_8), 127); + if (unlikely(!__pyx_t_10)) __PYX_ERR(3, 652, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_11 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_10}; + __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __pyx_callargs+__pyx_t_11, (2-__pyx_t_11) | (__pyx_t_11*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 652, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + } + __Pyx_Raise(__pyx_t_5, 0, 0, 0); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __PYX_ERR(3, 652, __pyx_L1_error) + } + __pyx_L6:; + __pyx_t_5 = __pyx_ff_map_fused_7df988_1_3_02b106__11__dunderbuiltin__dunder_PyObject__ptr__and_1__etc(__pyx_v_arg); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 652, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_v_dest_sig0 = ((PyObject*)__pyx_t_5); + __pyx_t_5 = 0; + __Pyx_XDECREF(__pyx_r); + __pyx_t_5 = __pyx_ff_match_signatures_single(((PyObject*)__pyx_v_signatures), __pyx_v_dest_sig0); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 652, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_r = __pyx_t_5; + __pyx_t_5 = 0; + goto __pyx_L0; + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_XDECREF(__pyx_t_10); + __Pyx_AddTraceback("selectolax.parser.Node.__pyx_fused_cpdef", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_arg); + __Pyx_XDECREF(__pyx_v_dest_sig0); + __Pyx_XDECREF(__pyx_v_kwargs); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static PyObject *__pyx_fuse_0__pyx_pw_10selectolax_6parser_4Node_59insert_before(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static PyMethodDef __pyx_fuse_0__pyx_mdef_10selectolax_6parser_4Node_59insert_before = {"__pyx_fuse_0insert_before", (PyCFunction)(void(*)(void))(PyCFunctionWithKeywords)__pyx_fuse_0__pyx_pw_10selectolax_6parser_4Node_59insert_before, METH_VARARGS|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_4Node_30insert_before}; +static PyObject *__pyx_fuse_0__pyx_pw_10selectolax_6parser_4Node_59insert_before(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_value = 0; + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("insert_before (wrapper)", 0); + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_value,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(3, 652, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(3, 652, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "insert_before", 0) < (0)) __PYX_ERR(3, 652, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("insert_before", 1, 1, 1, i); __PYX_ERR(3, 652, __pyx_L3_error) } + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(3, 652, __pyx_L3_error) + } + __pyx_v_value = ((PyObject*)values[0]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("insert_before", 1, 1, 1, __pyx_nargs); __PYX_ERR(3, 652, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.parser.Node.insert_before", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_value), (&PyUnicode_Type), 1, "value", 1))) __PYX_ERR(3, 652, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6parser_4Node_58insert_before(((struct __pyx_obj_10selectolax_6parser_Node *)__pyx_v_self), __pyx_v_value); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_4Node_58insert_before(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self, PyObject *__pyx_v_value) { + myhtml_tree_node_t *__pyx_v_node; + PyObject *__pyx_v_bytes_val = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + char *__pyx_t_4; + Py_ssize_t __pyx_t_5; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + size_t __pyx_t_9; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__pyx_fuse_0insert_before", 0); + + /* "selectolax/modest/node.pxi":681 + * """ + * cdef myhtml_tree_node_t *node + * if isinstance(value, (str, bytes, unicode)): # <<<<<<<<<<<<<< + * bytes_val = to_bytes(value) + * node = myhtml_node_create(self.parser.html_tree, MyHTML_TAG__TEXT, MyHTML_NAMESPACE_HTML) +*/ + __pyx_t_2 = PyUnicode_Check(__pyx_v_value); + if (!__pyx_t_2) { + } else { + __pyx_t_1 = __pyx_t_2; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_2 = PyBytes_Check(__pyx_v_value); + __pyx_t_1 = __pyx_t_2; + __pyx_L4_bool_binop_done:; + if (__pyx_t_1) { + + /* "selectolax/modest/node.pxi":682 + * cdef myhtml_tree_node_t *node + * if isinstance(value, (str, bytes, unicode)): + * bytes_val = to_bytes(value) # <<<<<<<<<<<<<< + * node = myhtml_node_create(self.parser.html_tree, MyHTML_TAG__TEXT, MyHTML_NAMESPACE_HTML) + * myhtml_node_text_set(node, bytes_val, len(bytes_val), MyENCODING_UTF_8) +*/ + __pyx_t_3 = __pyx_fuse_0__pyx_f_10selectolax_6parser_to_bytes(__pyx_v_value); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 682, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_v_bytes_val = ((PyObject*)__pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/modest/node.pxi":683 + * if isinstance(value, (str, bytes, unicode)): + * bytes_val = to_bytes(value) + * node = myhtml_node_create(self.parser.html_tree, MyHTML_TAG__TEXT, MyHTML_NAMESPACE_HTML) # <<<<<<<<<<<<<< + * myhtml_node_text_set(node, bytes_val, len(bytes_val), MyENCODING_UTF_8) + * myhtml_node_insert_before(self.node, node) +*/ + __pyx_v_node = myhtml_node_create(__pyx_v_self->parser->html_tree, MyHTML_TAG__TEXT, MyHTML_NAMESPACE_HTML); + + /* "selectolax/modest/node.pxi":684 + * bytes_val = to_bytes(value) + * node = myhtml_node_create(self.parser.html_tree, MyHTML_TAG__TEXT, MyHTML_NAMESPACE_HTML) + * myhtml_node_text_set(node, bytes_val, len(bytes_val), MyENCODING_UTF_8) # <<<<<<<<<<<<<< + * myhtml_node_insert_before(self.node, node) + * elif isinstance(value, Node): +*/ + if (unlikely(__pyx_v_bytes_val == Py_None)) { + PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); + __PYX_ERR(3, 684, __pyx_L1_error) + } + __pyx_t_4 = __Pyx_PyBytes_AsWritableString(__pyx_v_bytes_val); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(3, 684, __pyx_L1_error) + if (unlikely(__pyx_v_bytes_val == Py_None)) { + PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); + __PYX_ERR(3, 684, __pyx_L1_error) + } + __pyx_t_5 = __Pyx_PyBytes_GET_SIZE(__pyx_v_bytes_val); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(3, 684, __pyx_L1_error) + (void)(myhtml_node_text_set(__pyx_v_node, ((char *)__pyx_t_4), __pyx_t_5, MyENCODING_UTF_8)); + + /* "selectolax/modest/node.pxi":685 + * node = myhtml_node_create(self.parser.html_tree, MyHTML_TAG__TEXT, MyHTML_NAMESPACE_HTML) + * myhtml_node_text_set(node, bytes_val, len(bytes_val), MyENCODING_UTF_8) + * myhtml_node_insert_before(self.node, node) # <<<<<<<<<<<<<< + * elif isinstance(value, Node): + * node = myhtml_node_clone_deep(self.parser.html_tree, value.node) +*/ + (void)(myhtml_node_insert_before(__pyx_v_self->node, __pyx_v_node)); + + /* "selectolax/modest/node.pxi":681 + * """ + * cdef myhtml_tree_node_t *node + * if isinstance(value, (str, bytes, unicode)): # <<<<<<<<<<<<<< + * bytes_val = to_bytes(value) + * node = myhtml_node_create(self.parser.html_tree, MyHTML_TAG__TEXT, MyHTML_NAMESPACE_HTML) +*/ + goto __pyx_L3; + } + + /* "selectolax/modest/node.pxi":686 + * myhtml_node_text_set(node, bytes_val, len(bytes_val), MyENCODING_UTF_8) + * myhtml_node_insert_before(self.node, node) + * elif isinstance(value, Node): # <<<<<<<<<<<<<< + * node = myhtml_node_clone_deep(self.parser.html_tree, value.node) + * myhtml_node_insert_before(self.node, node) +*/ + __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_value, __pyx_mstate_global->__pyx_ptype_10selectolax_6parser_Node); + if (likely(__pyx_t_1)) { + + /* "selectolax/modest/node.pxi":687 + * myhtml_node_insert_before(self.node, node) + * elif isinstance(value, Node): + * node = myhtml_node_clone_deep(self.parser.html_tree, value.node) # <<<<<<<<<<<<<< + * myhtml_node_insert_before(self.node, node) + * else: +*/ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_value, __pyx_mstate_global->__pyx_n_u_node); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 687, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_v_node = myhtml_node_clone_deep(__pyx_v_self->parser->html_tree, ((myhtml_tree_node_t *)__pyx_t_3)); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "selectolax/modest/node.pxi":688 + * elif isinstance(value, Node): + * node = myhtml_node_clone_deep(self.parser.html_tree, value.node) + * myhtml_node_insert_before(self.node, node) # <<<<<<<<<<<<<< + * else: + * raise TypeError("Expected a string or Node instance, but %s found" % type(value).__name__) +*/ + (void)(myhtml_node_insert_before(__pyx_v_self->node, __pyx_v_node)); + + /* "selectolax/modest/node.pxi":686 + * myhtml_node_text_set(node, bytes_val, len(bytes_val), MyENCODING_UTF_8) + * myhtml_node_insert_before(self.node, node) + * elif isinstance(value, Node): # <<<<<<<<<<<<<< + * node = myhtml_node_clone_deep(self.parser.html_tree, value.node) + * myhtml_node_insert_before(self.node, node) +*/ + goto __pyx_L3; + } + + /* "selectolax/modest/node.pxi":690 + * myhtml_node_insert_before(self.node, node) + * else: + * raise TypeError("Expected a string or Node instance, but %s found" % type(value).__name__) # <<<<<<<<<<<<<< + * + * def insert_after(self, str_or_Node value): +*/ + /*else*/ { + __pyx_t_6 = NULL; + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(__pyx_v_value)), __pyx_mstate_global->__pyx_n_u_name); if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 690, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_8 = __Pyx_PyUnicode_FormatSafe(__pyx_mstate_global->__pyx_kp_u_Expected_a_string_or_Node_instan, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(3, 690, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_t_9 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_8}; + __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (__pyx_t_9*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 690, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(3, 690, __pyx_L1_error) + } + __pyx_L3:; + + /* "selectolax/modest/node.pxi":652 + * raise TypeError("Expected a string or Node instance, but %s found" % type(value).__name__) + * + * def insert_before(self, str_or_Node value): # <<<<<<<<<<<<<< + * """ + * Insert a node before the current Node. +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_AddTraceback("selectolax.parser.Node.insert_before", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_bytes_val); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static PyObject *__pyx_fuse_1__pyx_pw_10selectolax_6parser_4Node_61insert_before(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static PyMethodDef __pyx_fuse_1__pyx_mdef_10selectolax_6parser_4Node_61insert_before = {"__pyx_fuse_1insert_before", (PyCFunction)(void(*)(void))(PyCFunctionWithKeywords)__pyx_fuse_1__pyx_pw_10selectolax_6parser_4Node_61insert_before, METH_VARARGS|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_4Node_30insert_before}; +static PyObject *__pyx_fuse_1__pyx_pw_10selectolax_6parser_4Node_61insert_before(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_value = 0; + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("insert_before (wrapper)", 0); + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_value,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(3, 652, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(3, 652, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "insert_before", 0) < (0)) __PYX_ERR(3, 652, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("insert_before", 1, 1, 1, i); __PYX_ERR(3, 652, __pyx_L3_error) } + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(3, 652, __pyx_L3_error) + } + __pyx_v_value = ((PyObject*)values[0]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("insert_before", 1, 1, 1, __pyx_nargs); __PYX_ERR(3, 652, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.parser.Node.insert_before", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_value), (&PyBytes_Type), 1, "value", 1))) __PYX_ERR(3, 652, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6parser_4Node_60insert_before(((struct __pyx_obj_10selectolax_6parser_Node *)__pyx_v_self), __pyx_v_value); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_4Node_60insert_before(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self, PyObject *__pyx_v_value) { + myhtml_tree_node_t *__pyx_v_node; + PyObject *__pyx_v_bytes_val = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + char *__pyx_t_4; + Py_ssize_t __pyx_t_5; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + size_t __pyx_t_9; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__pyx_fuse_1insert_before", 0); + + /* "selectolax/modest/node.pxi":681 + * """ + * cdef myhtml_tree_node_t *node + * if isinstance(value, (str, bytes, unicode)): # <<<<<<<<<<<<<< + * bytes_val = to_bytes(value) + * node = myhtml_node_create(self.parser.html_tree, MyHTML_TAG__TEXT, MyHTML_NAMESPACE_HTML) +*/ + __pyx_t_2 = PyUnicode_Check(__pyx_v_value); + if (!__pyx_t_2) { + } else { + __pyx_t_1 = __pyx_t_2; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_2 = PyBytes_Check(__pyx_v_value); + __pyx_t_1 = __pyx_t_2; + __pyx_L4_bool_binop_done:; + if (__pyx_t_1) { + + /* "selectolax/modest/node.pxi":682 + * cdef myhtml_tree_node_t *node + * if isinstance(value, (str, bytes, unicode)): + * bytes_val = to_bytes(value) # <<<<<<<<<<<<<< + * node = myhtml_node_create(self.parser.html_tree, MyHTML_TAG__TEXT, MyHTML_NAMESPACE_HTML) + * myhtml_node_text_set(node, bytes_val, len(bytes_val), MyENCODING_UTF_8) +*/ + __pyx_t_3 = __pyx_fuse_1__pyx_f_10selectolax_6parser_to_bytes(__pyx_v_value); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 682, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_v_bytes_val = ((PyObject*)__pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/modest/node.pxi":683 + * if isinstance(value, (str, bytes, unicode)): + * bytes_val = to_bytes(value) + * node = myhtml_node_create(self.parser.html_tree, MyHTML_TAG__TEXT, MyHTML_NAMESPACE_HTML) # <<<<<<<<<<<<<< + * myhtml_node_text_set(node, bytes_val, len(bytes_val), MyENCODING_UTF_8) + * myhtml_node_insert_before(self.node, node) +*/ + __pyx_v_node = myhtml_node_create(__pyx_v_self->parser->html_tree, MyHTML_TAG__TEXT, MyHTML_NAMESPACE_HTML); + + /* "selectolax/modest/node.pxi":684 + * bytes_val = to_bytes(value) + * node = myhtml_node_create(self.parser.html_tree, MyHTML_TAG__TEXT, MyHTML_NAMESPACE_HTML) + * myhtml_node_text_set(node, bytes_val, len(bytes_val), MyENCODING_UTF_8) # <<<<<<<<<<<<<< + * myhtml_node_insert_before(self.node, node) + * elif isinstance(value, Node): +*/ + if (unlikely(__pyx_v_bytes_val == Py_None)) { + PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); + __PYX_ERR(3, 684, __pyx_L1_error) + } + __pyx_t_4 = __Pyx_PyBytes_AsWritableString(__pyx_v_bytes_val); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(3, 684, __pyx_L1_error) + if (unlikely(__pyx_v_bytes_val == Py_None)) { + PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); + __PYX_ERR(3, 684, __pyx_L1_error) + } + __pyx_t_5 = __Pyx_PyBytes_GET_SIZE(__pyx_v_bytes_val); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(3, 684, __pyx_L1_error) + (void)(myhtml_node_text_set(__pyx_v_node, ((char *)__pyx_t_4), __pyx_t_5, MyENCODING_UTF_8)); + + /* "selectolax/modest/node.pxi":685 + * node = myhtml_node_create(self.parser.html_tree, MyHTML_TAG__TEXT, MyHTML_NAMESPACE_HTML) + * myhtml_node_text_set(node, bytes_val, len(bytes_val), MyENCODING_UTF_8) + * myhtml_node_insert_before(self.node, node) # <<<<<<<<<<<<<< + * elif isinstance(value, Node): + * node = myhtml_node_clone_deep(self.parser.html_tree, value.node) +*/ + (void)(myhtml_node_insert_before(__pyx_v_self->node, __pyx_v_node)); + + /* "selectolax/modest/node.pxi":681 + * """ + * cdef myhtml_tree_node_t *node + * if isinstance(value, (str, bytes, unicode)): # <<<<<<<<<<<<<< + * bytes_val = to_bytes(value) + * node = myhtml_node_create(self.parser.html_tree, MyHTML_TAG__TEXT, MyHTML_NAMESPACE_HTML) +*/ + goto __pyx_L3; + } + + /* "selectolax/modest/node.pxi":686 + * myhtml_node_text_set(node, bytes_val, len(bytes_val), MyENCODING_UTF_8) + * myhtml_node_insert_before(self.node, node) + * elif isinstance(value, Node): # <<<<<<<<<<<<<< + * node = myhtml_node_clone_deep(self.parser.html_tree, value.node) + * myhtml_node_insert_before(self.node, node) +*/ + __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_value, __pyx_mstate_global->__pyx_ptype_10selectolax_6parser_Node); + if (likely(__pyx_t_1)) { + + /* "selectolax/modest/node.pxi":687 + * myhtml_node_insert_before(self.node, node) + * elif isinstance(value, Node): + * node = myhtml_node_clone_deep(self.parser.html_tree, value.node) # <<<<<<<<<<<<<< + * myhtml_node_insert_before(self.node, node) + * else: +*/ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_value, __pyx_mstate_global->__pyx_n_u_node); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 687, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_v_node = myhtml_node_clone_deep(__pyx_v_self->parser->html_tree, ((myhtml_tree_node_t *)__pyx_t_3)); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "selectolax/modest/node.pxi":688 + * elif isinstance(value, Node): + * node = myhtml_node_clone_deep(self.parser.html_tree, value.node) + * myhtml_node_insert_before(self.node, node) # <<<<<<<<<<<<<< + * else: + * raise TypeError("Expected a string or Node instance, but %s found" % type(value).__name__) +*/ + (void)(myhtml_node_insert_before(__pyx_v_self->node, __pyx_v_node)); + + /* "selectolax/modest/node.pxi":686 + * myhtml_node_text_set(node, bytes_val, len(bytes_val), MyENCODING_UTF_8) + * myhtml_node_insert_before(self.node, node) + * elif isinstance(value, Node): # <<<<<<<<<<<<<< + * node = myhtml_node_clone_deep(self.parser.html_tree, value.node) + * myhtml_node_insert_before(self.node, node) +*/ + goto __pyx_L3; + } + + /* "selectolax/modest/node.pxi":690 + * myhtml_node_insert_before(self.node, node) + * else: + * raise TypeError("Expected a string or Node instance, but %s found" % type(value).__name__) # <<<<<<<<<<<<<< + * + * def insert_after(self, str_or_Node value): +*/ + /*else*/ { + __pyx_t_6 = NULL; + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(__pyx_v_value)), __pyx_mstate_global->__pyx_n_u_name); if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 690, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_8 = __Pyx_PyUnicode_FormatSafe(__pyx_mstate_global->__pyx_kp_u_Expected_a_string_or_Node_instan, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(3, 690, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_t_9 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_8}; + __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (__pyx_t_9*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 690, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(3, 690, __pyx_L1_error) + } + __pyx_L3:; + + /* "selectolax/modest/node.pxi":652 + * raise TypeError("Expected a string or Node instance, but %s found" % type(value).__name__) + * + * def insert_before(self, str_or_Node value): # <<<<<<<<<<<<<< + * """ + * Insert a node before the current Node. +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_AddTraceback("selectolax.parser.Node.insert_before", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_bytes_val); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static PyObject *__pyx_fuse_2__pyx_pw_10selectolax_6parser_4Node_63insert_before(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static PyMethodDef __pyx_fuse_2__pyx_mdef_10selectolax_6parser_4Node_63insert_before = {"__pyx_fuse_2insert_before", (PyCFunction)(void(*)(void))(PyCFunctionWithKeywords)__pyx_fuse_2__pyx_pw_10selectolax_6parser_4Node_63insert_before, METH_VARARGS|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_4Node_30insert_before}; +static PyObject *__pyx_fuse_2__pyx_pw_10selectolax_6parser_4Node_63insert_before(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_value = 0; + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("insert_before (wrapper)", 0); + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_value,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(3, 652, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(3, 652, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "insert_before", 0) < (0)) __PYX_ERR(3, 652, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("insert_before", 1, 1, 1, i); __PYX_ERR(3, 652, __pyx_L3_error) } + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(3, 652, __pyx_L3_error) + } + __pyx_v_value = ((struct __pyx_obj_10selectolax_6parser_Node *)values[0]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("insert_before", 1, 1, 1, __pyx_nargs); __PYX_ERR(3, 652, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.parser.Node.insert_before", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_value), __pyx_mstate_global->__pyx_ptype_10selectolax_6parser_Node, 1, "value", 0))) __PYX_ERR(3, 652, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6parser_4Node_62insert_before(((struct __pyx_obj_10selectolax_6parser_Node *)__pyx_v_self), __pyx_v_value); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_4Node_62insert_before(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self, struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_value) { + myhtml_tree_node_t *__pyx_v_node; + PyObject *__pyx_v_bytes_val = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + char *__pyx_t_4; + Py_ssize_t __pyx_t_5; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + size_t __pyx_t_9; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__pyx_fuse_2insert_before", 0); + + /* "selectolax/modest/node.pxi":681 + * """ + * cdef myhtml_tree_node_t *node + * if isinstance(value, (str, bytes, unicode)): # <<<<<<<<<<<<<< + * bytes_val = to_bytes(value) + * node = myhtml_node_create(self.parser.html_tree, MyHTML_TAG__TEXT, MyHTML_NAMESPACE_HTML) +*/ + __pyx_t_2 = PyUnicode_Check(((PyObject *)__pyx_v_value)); + if (!__pyx_t_2) { + } else { + __pyx_t_1 = __pyx_t_2; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_2 = PyBytes_Check(((PyObject *)__pyx_v_value)); + __pyx_t_1 = __pyx_t_2; + __pyx_L4_bool_binop_done:; + if (__pyx_t_1) { + + /* "selectolax/modest/node.pxi":682 + * cdef myhtml_tree_node_t *node + * if isinstance(value, (str, bytes, unicode)): + * bytes_val = to_bytes(value) # <<<<<<<<<<<<<< + * node = myhtml_node_create(self.parser.html_tree, MyHTML_TAG__TEXT, MyHTML_NAMESPACE_HTML) + * myhtml_node_text_set(node, bytes_val, len(bytes_val), MyENCODING_UTF_8) +*/ + __pyx_t_3 = __pyx_fuse_2__pyx_f_10selectolax_6parser_to_bytes(__pyx_v_value); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 682, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_v_bytes_val = ((PyObject*)__pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/modest/node.pxi":683 + * if isinstance(value, (str, bytes, unicode)): + * bytes_val = to_bytes(value) + * node = myhtml_node_create(self.parser.html_tree, MyHTML_TAG__TEXT, MyHTML_NAMESPACE_HTML) # <<<<<<<<<<<<<< + * myhtml_node_text_set(node, bytes_val, len(bytes_val), MyENCODING_UTF_8) + * myhtml_node_insert_before(self.node, node) +*/ + __pyx_v_node = myhtml_node_create(__pyx_v_self->parser->html_tree, MyHTML_TAG__TEXT, MyHTML_NAMESPACE_HTML); + + /* "selectolax/modest/node.pxi":684 + * bytes_val = to_bytes(value) + * node = myhtml_node_create(self.parser.html_tree, MyHTML_TAG__TEXT, MyHTML_NAMESPACE_HTML) + * myhtml_node_text_set(node, bytes_val, len(bytes_val), MyENCODING_UTF_8) # <<<<<<<<<<<<<< + * myhtml_node_insert_before(self.node, node) + * elif isinstance(value, Node): +*/ + if (unlikely(__pyx_v_bytes_val == Py_None)) { + PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); + __PYX_ERR(3, 684, __pyx_L1_error) + } + __pyx_t_4 = __Pyx_PyBytes_AsWritableString(__pyx_v_bytes_val); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(3, 684, __pyx_L1_error) + if (unlikely(__pyx_v_bytes_val == Py_None)) { + PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); + __PYX_ERR(3, 684, __pyx_L1_error) + } + __pyx_t_5 = __Pyx_PyBytes_GET_SIZE(__pyx_v_bytes_val); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(3, 684, __pyx_L1_error) + (void)(myhtml_node_text_set(__pyx_v_node, ((char *)__pyx_t_4), __pyx_t_5, MyENCODING_UTF_8)); + + /* "selectolax/modest/node.pxi":685 + * node = myhtml_node_create(self.parser.html_tree, MyHTML_TAG__TEXT, MyHTML_NAMESPACE_HTML) + * myhtml_node_text_set(node, bytes_val, len(bytes_val), MyENCODING_UTF_8) + * myhtml_node_insert_before(self.node, node) # <<<<<<<<<<<<<< + * elif isinstance(value, Node): + * node = myhtml_node_clone_deep(self.parser.html_tree, value.node) +*/ + (void)(myhtml_node_insert_before(__pyx_v_self->node, __pyx_v_node)); + + /* "selectolax/modest/node.pxi":681 + * """ + * cdef myhtml_tree_node_t *node + * if isinstance(value, (str, bytes, unicode)): # <<<<<<<<<<<<<< + * bytes_val = to_bytes(value) + * node = myhtml_node_create(self.parser.html_tree, MyHTML_TAG__TEXT, MyHTML_NAMESPACE_HTML) +*/ + goto __pyx_L3; + } + + /* "selectolax/modest/node.pxi":686 + * myhtml_node_text_set(node, bytes_val, len(bytes_val), MyENCODING_UTF_8) + * myhtml_node_insert_before(self.node, node) + * elif isinstance(value, Node): # <<<<<<<<<<<<<< + * node = myhtml_node_clone_deep(self.parser.html_tree, value.node) + * myhtml_node_insert_before(self.node, node) +*/ + __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_value), __pyx_mstate_global->__pyx_ptype_10selectolax_6parser_Node); + if (likely(__pyx_t_1)) { + + /* "selectolax/modest/node.pxi":687 + * myhtml_node_insert_before(self.node, node) + * elif isinstance(value, Node): + * node = myhtml_node_clone_deep(self.parser.html_tree, value.node) # <<<<<<<<<<<<<< + * myhtml_node_insert_before(self.node, node) + * else: +*/ + __pyx_v_node = myhtml_node_clone_deep(__pyx_v_self->parser->html_tree, ((myhtml_tree_node_t *)__pyx_v_value->node)); + + /* "selectolax/modest/node.pxi":688 + * elif isinstance(value, Node): + * node = myhtml_node_clone_deep(self.parser.html_tree, value.node) + * myhtml_node_insert_before(self.node, node) # <<<<<<<<<<<<<< + * else: + * raise TypeError("Expected a string or Node instance, but %s found" % type(value).__name__) +*/ + (void)(myhtml_node_insert_before(__pyx_v_self->node, __pyx_v_node)); + + /* "selectolax/modest/node.pxi":686 + * myhtml_node_text_set(node, bytes_val, len(bytes_val), MyENCODING_UTF_8) + * myhtml_node_insert_before(self.node, node) + * elif isinstance(value, Node): # <<<<<<<<<<<<<< + * node = myhtml_node_clone_deep(self.parser.html_tree, value.node) + * myhtml_node_insert_before(self.node, node) +*/ + goto __pyx_L3; + } + + /* "selectolax/modest/node.pxi":690 + * myhtml_node_insert_before(self.node, node) + * else: + * raise TypeError("Expected a string or Node instance, but %s found" % type(value).__name__) # <<<<<<<<<<<<<< + * + * def insert_after(self, str_or_Node value): +*/ + /*else*/ { + __pyx_t_6 = NULL; + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_value))), __pyx_mstate_global->__pyx_n_u_name); if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 690, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_8 = __Pyx_PyUnicode_FormatSafe(__pyx_mstate_global->__pyx_kp_u_Expected_a_string_or_Node_instan, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(3, 690, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_t_9 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_8}; + __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (__pyx_t_9*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 690, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(3, 690, __pyx_L1_error) + } + __pyx_L3:; + + /* "selectolax/modest/node.pxi":652 + * raise TypeError("Expected a string or Node instance, but %s found" % type(value).__name__) + * + * def insert_before(self, str_or_Node value): # <<<<<<<<<<<<<< + * """ + * Insert a node before the current Node. +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_AddTraceback("selectolax.parser.Node.insert_before", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_bytes_val); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/modest/node.pxi":692 + * raise TypeError("Expected a string or Node instance, but %s found" % type(value).__name__) + * + * def insert_after(self, str_or_Node value): # <<<<<<<<<<<<<< + * """ + * Insert a node after the current Node. +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_4Node_33insert_after(PyObject *__pyx_v_signatures, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6parser_4Node_32insert_after, "Node.insert_after(signatures, args, kwargs, defaults, _fused_sigindex={})\n\nInsert a node after the current Node.\n\nParameters\n----------\nvalue : str, bytes or Node\n The text or Node instance to insert after the Node.\n When a text string is passed, it's treated as text. All HTML tags will be escaped.\n Convert and pass the ``Node`` object when you want to work with HTML.\n Does not clone the ``Node`` object.\n All future changes to the passed ``Node`` object will also be taken into account.\n\nExamples\n--------\n\n>>> tree = HTMLParser('
Get \"Laptop\"
')\n>>> img = tree.css_first('img')\n>>> img.insert_after(img.attributes.get('alt', ''))\n>>> tree.body.child.html\n'
Get \"Laptop\"Laptop
'\n\n>>> html_parser = HTMLParser('
Get
')\n>>> html_parser2 = HTMLParser('
Test
')\n>>> img_node = html_parser.css_first('img')\n>>> img_node.insert_after(html_parser2.body.child)\n
Get
Test
'"); +static PyMethodDef __pyx_mdef_10selectolax_6parser_4Node_33insert_after = {"insert_after", (PyCFunction)(void(*)(void))(PyCFunctionWithKeywords)__pyx_pw_10selectolax_6parser_4Node_33insert_after, METH_VARARGS|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_4Node_32insert_after}; +static PyObject *__pyx_pw_10selectolax_6parser_4Node_33insert_after(PyObject *__pyx_v_signatures, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_args = 0; + PyObject *__pyx_v_kwargs = 0; + CYTHON_UNUSED PyObject *__pyx_v_defaults = 0; + CYTHON_UNUSED PyObject *__pyx_v__fused_sigindex = 0; + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[4] = {0,0,0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__pyx_fused_cpdef (wrapper)", 0); + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_args,&__pyx_mstate_global->__pyx_n_u_kwargs,&__pyx_mstate_global->__pyx_n_u_defaults,&__pyx_mstate_global->__pyx_n_u_fused_sigindex,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(3, 692, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 4: + values[3] = __Pyx_ArgRef_VARARGS(__pyx_args, 3); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(3, 692, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 3: + values[2] = __Pyx_ArgRef_VARARGS(__pyx_args, 2); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(3, 692, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 2: + values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(3, 692, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(3, 692, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__pyx_fused_cpdef", 0) < (0)) __PYX_ERR(3, 692, __pyx_L3_error) + if (!values[3]) values[3] = __Pyx_NewRef(__pyx_mstate_global->__pyx_k__5); + for (Py_ssize_t i = __pyx_nargs; i < 3; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__pyx_fused_cpdef", 0, 3, 4, i); __PYX_ERR(3, 692, __pyx_L3_error) } + } + } else { + switch (__pyx_nargs) { + case 4: + values[3] = __Pyx_ArgRef_VARARGS(__pyx_args, 3); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(3, 692, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 3: + values[2] = __Pyx_ArgRef_VARARGS(__pyx_args, 2); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(3, 692, __pyx_L3_error) + values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(3, 692, __pyx_L3_error) + values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(3, 692, __pyx_L3_error) + break; + default: goto __pyx_L5_argtuple_error; + } + if (!values[3]) values[3] = __Pyx_NewRef(__pyx_mstate_global->__pyx_k__5); + } + __pyx_v_args = values[0]; + __pyx_v_kwargs = values[1]; + __pyx_v_defaults = values[2]; + __pyx_v__fused_sigindex = values[3]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("__pyx_fused_cpdef", 0, 3, 4, __pyx_nargs); __PYX_ERR(3, 692, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.parser.Node.__pyx_fused_cpdef", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_10selectolax_6parser_4Node_32insert_after(((struct __pyx_obj_10selectolax_6parser_Node *)__pyx_v_signatures), __pyx_v_args, __pyx_v_kwargs, __pyx_v_defaults, __pyx_v__fused_sigindex); + + /* function exit code */ + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_4Node_32insert_after(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_signatures, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs, CYTHON_UNUSED PyObject *__pyx_v_defaults, CYTHON_UNUSED PyObject *__pyx_v__fused_sigindex) { + PyObject *__pyx_v_arg = NULL; + PyObject *__pyx_v_dest_sig0 = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_t_2; + int __pyx_t_3; + Py_ssize_t __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + PyObject *__pyx_t_9[4]; + PyObject *__pyx_t_10 = NULL; + size_t __pyx_t_11; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("insert_after", 0); + __Pyx_INCREF(__pyx_v_kwargs); + __pyx_t_2 = (__pyx_v_kwargs != Py_None); + if (__pyx_t_2) { + } else { + __pyx_t_1 = __pyx_t_2; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_kwargs); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(3, 692, __pyx_L1_error) + __pyx_t_3 = (!__pyx_t_2); + __pyx_t_1 = __pyx_t_3; + __pyx_L4_bool_binop_done:; + if (__pyx_t_1) { + __Pyx_INCREF(Py_None); + __Pyx_DECREF_SET(__pyx_v_kwargs, Py_None); + } + if (unlikely(__pyx_v_args == Py_None)) { + PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); + __PYX_ERR(3, 692, __pyx_L1_error) + } + __pyx_t_4 = __Pyx_PyTuple_GET_SIZE(((PyObject*)__pyx_v_args)); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(3, 692, __pyx_L1_error) + __pyx_t_1 = (1 < __pyx_t_4); + if (__pyx_t_1) { + if (unlikely(__pyx_v_args == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(3, 692, __pyx_L1_error) + } + __pyx_t_5 = __Pyx_PyTuple_GET_ITEM(((PyObject*)__pyx_v_args), 1); + __Pyx_INCREF(__pyx_t_5); + __pyx_v_arg = __pyx_t_5; + __pyx_t_5 = 0; + goto __pyx_L6; + } + __pyx_t_3 = (__pyx_v_kwargs != Py_None); + if (__pyx_t_3) { + } else { + __pyx_t_1 = __pyx_t_3; + goto __pyx_L7_bool_binop_done; + } + if (unlikely(__pyx_v_kwargs == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); + __PYX_ERR(3, 692, __pyx_L1_error) + } + __pyx_t_3 = (__Pyx_PyDict_ContainsTF(__pyx_mstate_global->__pyx_n_u_value, ((PyObject*)__pyx_v_kwargs), Py_EQ)); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(3, 692, __pyx_L1_error) + __pyx_t_1 = __pyx_t_3; + __pyx_L7_bool_binop_done:; + if (likely(__pyx_t_1)) { + if (unlikely(__pyx_v_kwargs == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(3, 692, __pyx_L1_error) + } + __pyx_t_5 = __Pyx_PyDict_GetItem(((PyObject*)__pyx_v_kwargs), __pyx_mstate_global->__pyx_n_u_value); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 692, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_v_arg = __pyx_t_5; + __pyx_t_5 = 0; + goto __pyx_L6; + } + /*else*/ { + __pyx_t_6 = NULL; + __pyx_t_7 = __Pyx_PyUnicode_From_long(2, 0, ' ', 'd'); if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 692, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + if (unlikely(__pyx_v_args == Py_None)) { + PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); + __PYX_ERR(3, 692, __pyx_L1_error) + } + __pyx_t_4 = __Pyx_PyTuple_GET_SIZE(((PyObject*)__pyx_v_args)); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(3, 692, __pyx_L1_error) + __pyx_t_8 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_t_4, 0, ' ', 'd'); if (unlikely(!__pyx_t_8)) __PYX_ERR(3, 692, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_9[0] = __pyx_mstate_global->__pyx_kp_u_Expected_at_least; + __pyx_t_9[1] = __pyx_t_7; + __pyx_t_9[2] = __pyx_mstate_global->__pyx_kp_u_arguments_got; + __pyx_t_9[3] = __pyx_t_8; + __pyx_t_10 = __Pyx_PyUnicode_Join(__pyx_t_9, 4, 18 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_7) + 16 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_8), 127); + if (unlikely(!__pyx_t_10)) __PYX_ERR(3, 692, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_11 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_10}; + __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __pyx_callargs+__pyx_t_11, (2-__pyx_t_11) | (__pyx_t_11*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 692, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + } + __Pyx_Raise(__pyx_t_5, 0, 0, 0); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __PYX_ERR(3, 692, __pyx_L1_error) + } + __pyx_L6:; + __pyx_t_5 = __pyx_ff_map_fused_7df988_1_3_02b106__11__dunderbuiltin__dunder_PyObject__ptr__and_1__etc(__pyx_v_arg); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 692, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_v_dest_sig0 = ((PyObject*)__pyx_t_5); + __pyx_t_5 = 0; + __Pyx_XDECREF(__pyx_r); + __pyx_t_5 = __pyx_ff_match_signatures_single(((PyObject*)__pyx_v_signatures), __pyx_v_dest_sig0); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 692, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_r = __pyx_t_5; + __pyx_t_5 = 0; + goto __pyx_L0; + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_XDECREF(__pyx_t_10); + __Pyx_AddTraceback("selectolax.parser.Node.__pyx_fused_cpdef", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_arg); + __Pyx_XDECREF(__pyx_v_dest_sig0); + __Pyx_XDECREF(__pyx_v_kwargs); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static PyObject *__pyx_fuse_0__pyx_pw_10selectolax_6parser_4Node_67insert_after(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static PyMethodDef __pyx_fuse_0__pyx_mdef_10selectolax_6parser_4Node_67insert_after = {"__pyx_fuse_0insert_after", (PyCFunction)(void(*)(void))(PyCFunctionWithKeywords)__pyx_fuse_0__pyx_pw_10selectolax_6parser_4Node_67insert_after, METH_VARARGS|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_4Node_32insert_after}; +static PyObject *__pyx_fuse_0__pyx_pw_10selectolax_6parser_4Node_67insert_after(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_value = 0; + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("insert_after (wrapper)", 0); + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_value,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(3, 692, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(3, 692, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "insert_after", 0) < (0)) __PYX_ERR(3, 692, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("insert_after", 1, 1, 1, i); __PYX_ERR(3, 692, __pyx_L3_error) } + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(3, 692, __pyx_L3_error) + } + __pyx_v_value = ((PyObject*)values[0]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("insert_after", 1, 1, 1, __pyx_nargs); __PYX_ERR(3, 692, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.parser.Node.insert_after", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_value), (&PyUnicode_Type), 1, "value", 1))) __PYX_ERR(3, 692, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6parser_4Node_66insert_after(((struct __pyx_obj_10selectolax_6parser_Node *)__pyx_v_self), __pyx_v_value); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_4Node_66insert_after(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self, PyObject *__pyx_v_value) { + myhtml_tree_node_t *__pyx_v_node; + PyObject *__pyx_v_bytes_val = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + char *__pyx_t_4; + Py_ssize_t __pyx_t_5; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + size_t __pyx_t_9; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__pyx_fuse_0insert_after", 0); + + /* "selectolax/modest/node.pxi":721 + * """ + * cdef myhtml_tree_node_t *node + * if isinstance(value, (str, bytes, unicode)): # <<<<<<<<<<<<<< + * bytes_val = to_bytes(value) + * node = myhtml_node_create(self.parser.html_tree, MyHTML_TAG__TEXT, MyHTML_NAMESPACE_HTML) +*/ + __pyx_t_2 = PyUnicode_Check(__pyx_v_value); + if (!__pyx_t_2) { + } else { + __pyx_t_1 = __pyx_t_2; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_2 = PyBytes_Check(__pyx_v_value); + __pyx_t_1 = __pyx_t_2; + __pyx_L4_bool_binop_done:; + if (__pyx_t_1) { + + /* "selectolax/modest/node.pxi":722 + * cdef myhtml_tree_node_t *node + * if isinstance(value, (str, bytes, unicode)): + * bytes_val = to_bytes(value) # <<<<<<<<<<<<<< + * node = myhtml_node_create(self.parser.html_tree, MyHTML_TAG__TEXT, MyHTML_NAMESPACE_HTML) + * myhtml_node_text_set(node, bytes_val, len(bytes_val), MyENCODING_UTF_8) +*/ + __pyx_t_3 = __pyx_fuse_0__pyx_f_10selectolax_6parser_to_bytes(__pyx_v_value); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 722, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_v_bytes_val = ((PyObject*)__pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/modest/node.pxi":723 + * if isinstance(value, (str, bytes, unicode)): + * bytes_val = to_bytes(value) + * node = myhtml_node_create(self.parser.html_tree, MyHTML_TAG__TEXT, MyHTML_NAMESPACE_HTML) # <<<<<<<<<<<<<< + * myhtml_node_text_set(node, bytes_val, len(bytes_val), MyENCODING_UTF_8) + * myhtml_node_insert_after(self.node, node) +*/ + __pyx_v_node = myhtml_node_create(__pyx_v_self->parser->html_tree, MyHTML_TAG__TEXT, MyHTML_NAMESPACE_HTML); + + /* "selectolax/modest/node.pxi":724 + * bytes_val = to_bytes(value) + * node = myhtml_node_create(self.parser.html_tree, MyHTML_TAG__TEXT, MyHTML_NAMESPACE_HTML) + * myhtml_node_text_set(node, bytes_val, len(bytes_val), MyENCODING_UTF_8) # <<<<<<<<<<<<<< + * myhtml_node_insert_after(self.node, node) + * elif isinstance(value, Node): +*/ + if (unlikely(__pyx_v_bytes_val == Py_None)) { + PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); + __PYX_ERR(3, 724, __pyx_L1_error) + } + __pyx_t_4 = __Pyx_PyBytes_AsWritableString(__pyx_v_bytes_val); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(3, 724, __pyx_L1_error) + if (unlikely(__pyx_v_bytes_val == Py_None)) { + PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); + __PYX_ERR(3, 724, __pyx_L1_error) + } + __pyx_t_5 = __Pyx_PyBytes_GET_SIZE(__pyx_v_bytes_val); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(3, 724, __pyx_L1_error) + (void)(myhtml_node_text_set(__pyx_v_node, ((char *)__pyx_t_4), __pyx_t_5, MyENCODING_UTF_8)); + + /* "selectolax/modest/node.pxi":725 + * node = myhtml_node_create(self.parser.html_tree, MyHTML_TAG__TEXT, MyHTML_NAMESPACE_HTML) + * myhtml_node_text_set(node, bytes_val, len(bytes_val), MyENCODING_UTF_8) + * myhtml_node_insert_after(self.node, node) # <<<<<<<<<<<<<< + * elif isinstance(value, Node): + * node = myhtml_node_clone_deep(self.parser.html_tree, value.node) +*/ + (void)(myhtml_node_insert_after(__pyx_v_self->node, __pyx_v_node)); + + /* "selectolax/modest/node.pxi":721 + * """ + * cdef myhtml_tree_node_t *node + * if isinstance(value, (str, bytes, unicode)): # <<<<<<<<<<<<<< + * bytes_val = to_bytes(value) + * node = myhtml_node_create(self.parser.html_tree, MyHTML_TAG__TEXT, MyHTML_NAMESPACE_HTML) +*/ + goto __pyx_L3; + } + + /* "selectolax/modest/node.pxi":726 + * myhtml_node_text_set(node, bytes_val, len(bytes_val), MyENCODING_UTF_8) + * myhtml_node_insert_after(self.node, node) + * elif isinstance(value, Node): # <<<<<<<<<<<<<< + * node = myhtml_node_clone_deep(self.parser.html_tree, value.node) + * myhtml_node_insert_after(self.node, node) +*/ + __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_value, __pyx_mstate_global->__pyx_ptype_10selectolax_6parser_Node); + if (likely(__pyx_t_1)) { + + /* "selectolax/modest/node.pxi":727 + * myhtml_node_insert_after(self.node, node) + * elif isinstance(value, Node): + * node = myhtml_node_clone_deep(self.parser.html_tree, value.node) # <<<<<<<<<<<<<< + * myhtml_node_insert_after(self.node, node) + * else: +*/ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_value, __pyx_mstate_global->__pyx_n_u_node); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 727, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_v_node = myhtml_node_clone_deep(__pyx_v_self->parser->html_tree, ((myhtml_tree_node_t *)__pyx_t_3)); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "selectolax/modest/node.pxi":728 + * elif isinstance(value, Node): + * node = myhtml_node_clone_deep(self.parser.html_tree, value.node) + * myhtml_node_insert_after(self.node, node) # <<<<<<<<<<<<<< + * else: + * raise TypeError("Expected a string or Node instance, but %s found" % type(value).__name__) +*/ + (void)(myhtml_node_insert_after(__pyx_v_self->node, __pyx_v_node)); + + /* "selectolax/modest/node.pxi":726 + * myhtml_node_text_set(node, bytes_val, len(bytes_val), MyENCODING_UTF_8) + * myhtml_node_insert_after(self.node, node) + * elif isinstance(value, Node): # <<<<<<<<<<<<<< + * node = myhtml_node_clone_deep(self.parser.html_tree, value.node) + * myhtml_node_insert_after(self.node, node) +*/ + goto __pyx_L3; + } + + /* "selectolax/modest/node.pxi":730 + * myhtml_node_insert_after(self.node, node) + * else: + * raise TypeError("Expected a string or Node instance, but %s found" % type(value).__name__) # <<<<<<<<<<<<<< + * + * def insert_child(self, str_or_Node value): +*/ + /*else*/ { + __pyx_t_6 = NULL; + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(__pyx_v_value)), __pyx_mstate_global->__pyx_n_u_name); if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 730, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_8 = __Pyx_PyUnicode_FormatSafe(__pyx_mstate_global->__pyx_kp_u_Expected_a_string_or_Node_instan, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(3, 730, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_t_9 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_8}; + __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (__pyx_t_9*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 730, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(3, 730, __pyx_L1_error) + } + __pyx_L3:; + + /* "selectolax/modest/node.pxi":692 + * raise TypeError("Expected a string or Node instance, but %s found" % type(value).__name__) + * + * def insert_after(self, str_or_Node value): # <<<<<<<<<<<<<< + * """ + * Insert a node after the current Node. +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_AddTraceback("selectolax.parser.Node.insert_after", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_bytes_val); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static PyObject *__pyx_fuse_1__pyx_pw_10selectolax_6parser_4Node_69insert_after(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static PyMethodDef __pyx_fuse_1__pyx_mdef_10selectolax_6parser_4Node_69insert_after = {"__pyx_fuse_1insert_after", (PyCFunction)(void(*)(void))(PyCFunctionWithKeywords)__pyx_fuse_1__pyx_pw_10selectolax_6parser_4Node_69insert_after, METH_VARARGS|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_4Node_32insert_after}; +static PyObject *__pyx_fuse_1__pyx_pw_10selectolax_6parser_4Node_69insert_after(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_value = 0; + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("insert_after (wrapper)", 0); + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_value,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(3, 692, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(3, 692, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "insert_after", 0) < (0)) __PYX_ERR(3, 692, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("insert_after", 1, 1, 1, i); __PYX_ERR(3, 692, __pyx_L3_error) } + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(3, 692, __pyx_L3_error) + } + __pyx_v_value = ((PyObject*)values[0]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("insert_after", 1, 1, 1, __pyx_nargs); __PYX_ERR(3, 692, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.parser.Node.insert_after", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_value), (&PyBytes_Type), 1, "value", 1))) __PYX_ERR(3, 692, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6parser_4Node_68insert_after(((struct __pyx_obj_10selectolax_6parser_Node *)__pyx_v_self), __pyx_v_value); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_4Node_68insert_after(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self, PyObject *__pyx_v_value) { + myhtml_tree_node_t *__pyx_v_node; + PyObject *__pyx_v_bytes_val = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + char *__pyx_t_4; + Py_ssize_t __pyx_t_5; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + size_t __pyx_t_9; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__pyx_fuse_1insert_after", 0); + + /* "selectolax/modest/node.pxi":721 + * """ + * cdef myhtml_tree_node_t *node + * if isinstance(value, (str, bytes, unicode)): # <<<<<<<<<<<<<< + * bytes_val = to_bytes(value) + * node = myhtml_node_create(self.parser.html_tree, MyHTML_TAG__TEXT, MyHTML_NAMESPACE_HTML) +*/ + __pyx_t_2 = PyUnicode_Check(__pyx_v_value); + if (!__pyx_t_2) { + } else { + __pyx_t_1 = __pyx_t_2; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_2 = PyBytes_Check(__pyx_v_value); + __pyx_t_1 = __pyx_t_2; + __pyx_L4_bool_binop_done:; + if (__pyx_t_1) { + + /* "selectolax/modest/node.pxi":722 + * cdef myhtml_tree_node_t *node + * if isinstance(value, (str, bytes, unicode)): + * bytes_val = to_bytes(value) # <<<<<<<<<<<<<< + * node = myhtml_node_create(self.parser.html_tree, MyHTML_TAG__TEXT, MyHTML_NAMESPACE_HTML) + * myhtml_node_text_set(node, bytes_val, len(bytes_val), MyENCODING_UTF_8) +*/ + __pyx_t_3 = __pyx_fuse_1__pyx_f_10selectolax_6parser_to_bytes(__pyx_v_value); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 722, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_v_bytes_val = ((PyObject*)__pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/modest/node.pxi":723 + * if isinstance(value, (str, bytes, unicode)): + * bytes_val = to_bytes(value) + * node = myhtml_node_create(self.parser.html_tree, MyHTML_TAG__TEXT, MyHTML_NAMESPACE_HTML) # <<<<<<<<<<<<<< + * myhtml_node_text_set(node, bytes_val, len(bytes_val), MyENCODING_UTF_8) + * myhtml_node_insert_after(self.node, node) +*/ + __pyx_v_node = myhtml_node_create(__pyx_v_self->parser->html_tree, MyHTML_TAG__TEXT, MyHTML_NAMESPACE_HTML); + + /* "selectolax/modest/node.pxi":724 + * bytes_val = to_bytes(value) + * node = myhtml_node_create(self.parser.html_tree, MyHTML_TAG__TEXT, MyHTML_NAMESPACE_HTML) + * myhtml_node_text_set(node, bytes_val, len(bytes_val), MyENCODING_UTF_8) # <<<<<<<<<<<<<< + * myhtml_node_insert_after(self.node, node) + * elif isinstance(value, Node): +*/ + if (unlikely(__pyx_v_bytes_val == Py_None)) { + PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); + __PYX_ERR(3, 724, __pyx_L1_error) + } + __pyx_t_4 = __Pyx_PyBytes_AsWritableString(__pyx_v_bytes_val); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(3, 724, __pyx_L1_error) + if (unlikely(__pyx_v_bytes_val == Py_None)) { + PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); + __PYX_ERR(3, 724, __pyx_L1_error) + } + __pyx_t_5 = __Pyx_PyBytes_GET_SIZE(__pyx_v_bytes_val); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(3, 724, __pyx_L1_error) + (void)(myhtml_node_text_set(__pyx_v_node, ((char *)__pyx_t_4), __pyx_t_5, MyENCODING_UTF_8)); + + /* "selectolax/modest/node.pxi":725 + * node = myhtml_node_create(self.parser.html_tree, MyHTML_TAG__TEXT, MyHTML_NAMESPACE_HTML) + * myhtml_node_text_set(node, bytes_val, len(bytes_val), MyENCODING_UTF_8) + * myhtml_node_insert_after(self.node, node) # <<<<<<<<<<<<<< + * elif isinstance(value, Node): + * node = myhtml_node_clone_deep(self.parser.html_tree, value.node) +*/ + (void)(myhtml_node_insert_after(__pyx_v_self->node, __pyx_v_node)); + + /* "selectolax/modest/node.pxi":721 + * """ + * cdef myhtml_tree_node_t *node + * if isinstance(value, (str, bytes, unicode)): # <<<<<<<<<<<<<< + * bytes_val = to_bytes(value) + * node = myhtml_node_create(self.parser.html_tree, MyHTML_TAG__TEXT, MyHTML_NAMESPACE_HTML) +*/ + goto __pyx_L3; + } + + /* "selectolax/modest/node.pxi":726 + * myhtml_node_text_set(node, bytes_val, len(bytes_val), MyENCODING_UTF_8) + * myhtml_node_insert_after(self.node, node) + * elif isinstance(value, Node): # <<<<<<<<<<<<<< + * node = myhtml_node_clone_deep(self.parser.html_tree, value.node) + * myhtml_node_insert_after(self.node, node) +*/ + __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_value, __pyx_mstate_global->__pyx_ptype_10selectolax_6parser_Node); + if (likely(__pyx_t_1)) { + + /* "selectolax/modest/node.pxi":727 + * myhtml_node_insert_after(self.node, node) + * elif isinstance(value, Node): + * node = myhtml_node_clone_deep(self.parser.html_tree, value.node) # <<<<<<<<<<<<<< + * myhtml_node_insert_after(self.node, node) + * else: +*/ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_value, __pyx_mstate_global->__pyx_n_u_node); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 727, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_v_node = myhtml_node_clone_deep(__pyx_v_self->parser->html_tree, ((myhtml_tree_node_t *)__pyx_t_3)); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "selectolax/modest/node.pxi":728 + * elif isinstance(value, Node): + * node = myhtml_node_clone_deep(self.parser.html_tree, value.node) + * myhtml_node_insert_after(self.node, node) # <<<<<<<<<<<<<< + * else: + * raise TypeError("Expected a string or Node instance, but %s found" % type(value).__name__) +*/ + (void)(myhtml_node_insert_after(__pyx_v_self->node, __pyx_v_node)); + + /* "selectolax/modest/node.pxi":726 + * myhtml_node_text_set(node, bytes_val, len(bytes_val), MyENCODING_UTF_8) + * myhtml_node_insert_after(self.node, node) + * elif isinstance(value, Node): # <<<<<<<<<<<<<< + * node = myhtml_node_clone_deep(self.parser.html_tree, value.node) + * myhtml_node_insert_after(self.node, node) +*/ + goto __pyx_L3; + } + + /* "selectolax/modest/node.pxi":730 + * myhtml_node_insert_after(self.node, node) + * else: + * raise TypeError("Expected a string or Node instance, but %s found" % type(value).__name__) # <<<<<<<<<<<<<< + * + * def insert_child(self, str_or_Node value): +*/ + /*else*/ { + __pyx_t_6 = NULL; + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(__pyx_v_value)), __pyx_mstate_global->__pyx_n_u_name); if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 730, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_8 = __Pyx_PyUnicode_FormatSafe(__pyx_mstate_global->__pyx_kp_u_Expected_a_string_or_Node_instan, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(3, 730, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_t_9 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_8}; + __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (__pyx_t_9*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 730, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(3, 730, __pyx_L1_error) + } + __pyx_L3:; + + /* "selectolax/modest/node.pxi":692 + * raise TypeError("Expected a string or Node instance, but %s found" % type(value).__name__) + * + * def insert_after(self, str_or_Node value): # <<<<<<<<<<<<<< + * """ + * Insert a node after the current Node. +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_AddTraceback("selectolax.parser.Node.insert_after", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_bytes_val); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static PyObject *__pyx_fuse_2__pyx_pw_10selectolax_6parser_4Node_71insert_after(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static PyMethodDef __pyx_fuse_2__pyx_mdef_10selectolax_6parser_4Node_71insert_after = {"__pyx_fuse_2insert_after", (PyCFunction)(void(*)(void))(PyCFunctionWithKeywords)__pyx_fuse_2__pyx_pw_10selectolax_6parser_4Node_71insert_after, METH_VARARGS|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_4Node_32insert_after}; +static PyObject *__pyx_fuse_2__pyx_pw_10selectolax_6parser_4Node_71insert_after(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_value = 0; + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("insert_after (wrapper)", 0); + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_value,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(3, 692, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(3, 692, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "insert_after", 0) < (0)) __PYX_ERR(3, 692, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("insert_after", 1, 1, 1, i); __PYX_ERR(3, 692, __pyx_L3_error) } + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(3, 692, __pyx_L3_error) + } + __pyx_v_value = ((struct __pyx_obj_10selectolax_6parser_Node *)values[0]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("insert_after", 1, 1, 1, __pyx_nargs); __PYX_ERR(3, 692, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.parser.Node.insert_after", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_value), __pyx_mstate_global->__pyx_ptype_10selectolax_6parser_Node, 1, "value", 0))) __PYX_ERR(3, 692, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6parser_4Node_70insert_after(((struct __pyx_obj_10selectolax_6parser_Node *)__pyx_v_self), __pyx_v_value); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_4Node_70insert_after(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self, struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_value) { + myhtml_tree_node_t *__pyx_v_node; + PyObject *__pyx_v_bytes_val = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + char *__pyx_t_4; + Py_ssize_t __pyx_t_5; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + size_t __pyx_t_9; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__pyx_fuse_2insert_after", 0); + + /* "selectolax/modest/node.pxi":721 + * """ + * cdef myhtml_tree_node_t *node + * if isinstance(value, (str, bytes, unicode)): # <<<<<<<<<<<<<< + * bytes_val = to_bytes(value) + * node = myhtml_node_create(self.parser.html_tree, MyHTML_TAG__TEXT, MyHTML_NAMESPACE_HTML) +*/ + __pyx_t_2 = PyUnicode_Check(((PyObject *)__pyx_v_value)); + if (!__pyx_t_2) { + } else { + __pyx_t_1 = __pyx_t_2; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_2 = PyBytes_Check(((PyObject *)__pyx_v_value)); + __pyx_t_1 = __pyx_t_2; + __pyx_L4_bool_binop_done:; + if (__pyx_t_1) { + + /* "selectolax/modest/node.pxi":722 + * cdef myhtml_tree_node_t *node + * if isinstance(value, (str, bytes, unicode)): + * bytes_val = to_bytes(value) # <<<<<<<<<<<<<< + * node = myhtml_node_create(self.parser.html_tree, MyHTML_TAG__TEXT, MyHTML_NAMESPACE_HTML) + * myhtml_node_text_set(node, bytes_val, len(bytes_val), MyENCODING_UTF_8) +*/ + __pyx_t_3 = __pyx_fuse_2__pyx_f_10selectolax_6parser_to_bytes(__pyx_v_value); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 722, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_v_bytes_val = ((PyObject*)__pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/modest/node.pxi":723 + * if isinstance(value, (str, bytes, unicode)): + * bytes_val = to_bytes(value) + * node = myhtml_node_create(self.parser.html_tree, MyHTML_TAG__TEXT, MyHTML_NAMESPACE_HTML) # <<<<<<<<<<<<<< + * myhtml_node_text_set(node, bytes_val, len(bytes_val), MyENCODING_UTF_8) + * myhtml_node_insert_after(self.node, node) +*/ + __pyx_v_node = myhtml_node_create(__pyx_v_self->parser->html_tree, MyHTML_TAG__TEXT, MyHTML_NAMESPACE_HTML); + + /* "selectolax/modest/node.pxi":724 + * bytes_val = to_bytes(value) + * node = myhtml_node_create(self.parser.html_tree, MyHTML_TAG__TEXT, MyHTML_NAMESPACE_HTML) + * myhtml_node_text_set(node, bytes_val, len(bytes_val), MyENCODING_UTF_8) # <<<<<<<<<<<<<< + * myhtml_node_insert_after(self.node, node) + * elif isinstance(value, Node): +*/ + if (unlikely(__pyx_v_bytes_val == Py_None)) { + PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); + __PYX_ERR(3, 724, __pyx_L1_error) + } + __pyx_t_4 = __Pyx_PyBytes_AsWritableString(__pyx_v_bytes_val); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(3, 724, __pyx_L1_error) + if (unlikely(__pyx_v_bytes_val == Py_None)) { + PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); + __PYX_ERR(3, 724, __pyx_L1_error) + } + __pyx_t_5 = __Pyx_PyBytes_GET_SIZE(__pyx_v_bytes_val); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(3, 724, __pyx_L1_error) + (void)(myhtml_node_text_set(__pyx_v_node, ((char *)__pyx_t_4), __pyx_t_5, MyENCODING_UTF_8)); + + /* "selectolax/modest/node.pxi":725 + * node = myhtml_node_create(self.parser.html_tree, MyHTML_TAG__TEXT, MyHTML_NAMESPACE_HTML) + * myhtml_node_text_set(node, bytes_val, len(bytes_val), MyENCODING_UTF_8) + * myhtml_node_insert_after(self.node, node) # <<<<<<<<<<<<<< + * elif isinstance(value, Node): + * node = myhtml_node_clone_deep(self.parser.html_tree, value.node) +*/ + (void)(myhtml_node_insert_after(__pyx_v_self->node, __pyx_v_node)); + + /* "selectolax/modest/node.pxi":721 + * """ + * cdef myhtml_tree_node_t *node + * if isinstance(value, (str, bytes, unicode)): # <<<<<<<<<<<<<< + * bytes_val = to_bytes(value) + * node = myhtml_node_create(self.parser.html_tree, MyHTML_TAG__TEXT, MyHTML_NAMESPACE_HTML) +*/ + goto __pyx_L3; + } + + /* "selectolax/modest/node.pxi":726 + * myhtml_node_text_set(node, bytes_val, len(bytes_val), MyENCODING_UTF_8) + * myhtml_node_insert_after(self.node, node) + * elif isinstance(value, Node): # <<<<<<<<<<<<<< + * node = myhtml_node_clone_deep(self.parser.html_tree, value.node) + * myhtml_node_insert_after(self.node, node) +*/ + __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_value), __pyx_mstate_global->__pyx_ptype_10selectolax_6parser_Node); + if (likely(__pyx_t_1)) { + + /* "selectolax/modest/node.pxi":727 + * myhtml_node_insert_after(self.node, node) + * elif isinstance(value, Node): + * node = myhtml_node_clone_deep(self.parser.html_tree, value.node) # <<<<<<<<<<<<<< + * myhtml_node_insert_after(self.node, node) + * else: +*/ + __pyx_v_node = myhtml_node_clone_deep(__pyx_v_self->parser->html_tree, ((myhtml_tree_node_t *)__pyx_v_value->node)); + + /* "selectolax/modest/node.pxi":728 + * elif isinstance(value, Node): + * node = myhtml_node_clone_deep(self.parser.html_tree, value.node) + * myhtml_node_insert_after(self.node, node) # <<<<<<<<<<<<<< + * else: + * raise TypeError("Expected a string or Node instance, but %s found" % type(value).__name__) +*/ + (void)(myhtml_node_insert_after(__pyx_v_self->node, __pyx_v_node)); + + /* "selectolax/modest/node.pxi":726 + * myhtml_node_text_set(node, bytes_val, len(bytes_val), MyENCODING_UTF_8) + * myhtml_node_insert_after(self.node, node) + * elif isinstance(value, Node): # <<<<<<<<<<<<<< + * node = myhtml_node_clone_deep(self.parser.html_tree, value.node) + * myhtml_node_insert_after(self.node, node) +*/ + goto __pyx_L3; + } + + /* "selectolax/modest/node.pxi":730 + * myhtml_node_insert_after(self.node, node) + * else: + * raise TypeError("Expected a string or Node instance, but %s found" % type(value).__name__) # <<<<<<<<<<<<<< + * + * def insert_child(self, str_or_Node value): +*/ + /*else*/ { + __pyx_t_6 = NULL; + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_value))), __pyx_mstate_global->__pyx_n_u_name); if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 730, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_8 = __Pyx_PyUnicode_FormatSafe(__pyx_mstate_global->__pyx_kp_u_Expected_a_string_or_Node_instan, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(3, 730, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_t_9 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_8}; + __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (__pyx_t_9*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 730, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(3, 730, __pyx_L1_error) + } + __pyx_L3:; + + /* "selectolax/modest/node.pxi":692 + * raise TypeError("Expected a string or Node instance, but %s found" % type(value).__name__) + * + * def insert_after(self, str_or_Node value): # <<<<<<<<<<<<<< + * """ + * Insert a node after the current Node. +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_AddTraceback("selectolax.parser.Node.insert_after", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_bytes_val); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/modest/node.pxi":732 + * raise TypeError("Expected a string or Node instance, but %s found" % type(value).__name__) + * + * def insert_child(self, str_or_Node value): # <<<<<<<<<<<<<< + * """ + * Insert a node inside (at the end of) the current Node. +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_4Node_35insert_child(PyObject *__pyx_v_signatures, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6parser_4Node_34insert_child, "Node.insert_child(signatures, args, kwargs, defaults, _fused_sigindex={})\n\nInsert a node inside (at the end of) the current Node.\n\nParameters\n----------\nvalue : str, bytes or Node\n The text or Node instance to insert inside the Node.\n When a text string is passed, it's treated as text. All HTML tags will be escaped.\n Convert and pass the ``Node`` object when you want to work with HTML.\n Does not clone the ``Node`` object.\n All future changes to the passed ``Node`` object will also be taken into account.\n\nExamples\n--------\n\n>>> tree = HTMLParser('
Get
')\n>>> div = tree.css_first('div')\n>>> div.insert_child('Laptop')\n>>> tree.body.child.html\n'
Get Laptop
'\n\n>>> html_parser = HTMLParser('
Get
Laptop
')\n>>> html_parser2 = HTMLParser('
Test
')\n>>> span_node = html_parser.css_first('span')\n>>> span_node.insert_child(html_parser2.body.child)\n
Get
Laptop
Test
'"); +static PyMethodDef __pyx_mdef_10selectolax_6parser_4Node_35insert_child = {"insert_child", (PyCFunction)(void(*)(void))(PyCFunctionWithKeywords)__pyx_pw_10selectolax_6parser_4Node_35insert_child, METH_VARARGS|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_4Node_34insert_child}; +static PyObject *__pyx_pw_10selectolax_6parser_4Node_35insert_child(PyObject *__pyx_v_signatures, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_args = 0; + PyObject *__pyx_v_kwargs = 0; + CYTHON_UNUSED PyObject *__pyx_v_defaults = 0; + CYTHON_UNUSED PyObject *__pyx_v__fused_sigindex = 0; + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[4] = {0,0,0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__pyx_fused_cpdef (wrapper)", 0); + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_args,&__pyx_mstate_global->__pyx_n_u_kwargs,&__pyx_mstate_global->__pyx_n_u_defaults,&__pyx_mstate_global->__pyx_n_u_fused_sigindex,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(3, 732, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 4: + values[3] = __Pyx_ArgRef_VARARGS(__pyx_args, 3); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(3, 732, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 3: + values[2] = __Pyx_ArgRef_VARARGS(__pyx_args, 2); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(3, 732, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 2: + values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(3, 732, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(3, 732, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__pyx_fused_cpdef", 0) < (0)) __PYX_ERR(3, 732, __pyx_L3_error) + if (!values[3]) values[3] = __Pyx_NewRef(__pyx_mstate_global->__pyx_k__6); + for (Py_ssize_t i = __pyx_nargs; i < 3; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__pyx_fused_cpdef", 0, 3, 4, i); __PYX_ERR(3, 732, __pyx_L3_error) } + } + } else { + switch (__pyx_nargs) { + case 4: + values[3] = __Pyx_ArgRef_VARARGS(__pyx_args, 3); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(3, 732, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 3: + values[2] = __Pyx_ArgRef_VARARGS(__pyx_args, 2); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(3, 732, __pyx_L3_error) + values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(3, 732, __pyx_L3_error) + values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(3, 732, __pyx_L3_error) + break; + default: goto __pyx_L5_argtuple_error; + } + if (!values[3]) values[3] = __Pyx_NewRef(__pyx_mstate_global->__pyx_k__6); + } + __pyx_v_args = values[0]; + __pyx_v_kwargs = values[1]; + __pyx_v_defaults = values[2]; + __pyx_v__fused_sigindex = values[3]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("__pyx_fused_cpdef", 0, 3, 4, __pyx_nargs); __PYX_ERR(3, 732, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.parser.Node.__pyx_fused_cpdef", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_10selectolax_6parser_4Node_34insert_child(((struct __pyx_obj_10selectolax_6parser_Node *)__pyx_v_signatures), __pyx_v_args, __pyx_v_kwargs, __pyx_v_defaults, __pyx_v__fused_sigindex); + + /* function exit code */ + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_4Node_34insert_child(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_signatures, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs, CYTHON_UNUSED PyObject *__pyx_v_defaults, CYTHON_UNUSED PyObject *__pyx_v__fused_sigindex) { + PyObject *__pyx_v_arg = NULL; + PyObject *__pyx_v_dest_sig0 = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_t_2; + int __pyx_t_3; + Py_ssize_t __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + PyObject *__pyx_t_9[4]; + PyObject *__pyx_t_10 = NULL; + size_t __pyx_t_11; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("insert_child", 0); + __Pyx_INCREF(__pyx_v_kwargs); + __pyx_t_2 = (__pyx_v_kwargs != Py_None); + if (__pyx_t_2) { + } else { + __pyx_t_1 = __pyx_t_2; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_kwargs); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(3, 732, __pyx_L1_error) + __pyx_t_3 = (!__pyx_t_2); + __pyx_t_1 = __pyx_t_3; + __pyx_L4_bool_binop_done:; + if (__pyx_t_1) { + __Pyx_INCREF(Py_None); + __Pyx_DECREF_SET(__pyx_v_kwargs, Py_None); + } + if (unlikely(__pyx_v_args == Py_None)) { + PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); + __PYX_ERR(3, 732, __pyx_L1_error) + } + __pyx_t_4 = __Pyx_PyTuple_GET_SIZE(((PyObject*)__pyx_v_args)); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(3, 732, __pyx_L1_error) + __pyx_t_1 = (1 < __pyx_t_4); + if (__pyx_t_1) { + if (unlikely(__pyx_v_args == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(3, 732, __pyx_L1_error) + } + __pyx_t_5 = __Pyx_PyTuple_GET_ITEM(((PyObject*)__pyx_v_args), 1); + __Pyx_INCREF(__pyx_t_5); + __pyx_v_arg = __pyx_t_5; + __pyx_t_5 = 0; + goto __pyx_L6; + } + __pyx_t_3 = (__pyx_v_kwargs != Py_None); + if (__pyx_t_3) { + } else { + __pyx_t_1 = __pyx_t_3; + goto __pyx_L7_bool_binop_done; + } + if (unlikely(__pyx_v_kwargs == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); + __PYX_ERR(3, 732, __pyx_L1_error) + } + __pyx_t_3 = (__Pyx_PyDict_ContainsTF(__pyx_mstate_global->__pyx_n_u_value, ((PyObject*)__pyx_v_kwargs), Py_EQ)); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(3, 732, __pyx_L1_error) + __pyx_t_1 = __pyx_t_3; + __pyx_L7_bool_binop_done:; + if (likely(__pyx_t_1)) { + if (unlikely(__pyx_v_kwargs == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(3, 732, __pyx_L1_error) + } + __pyx_t_5 = __Pyx_PyDict_GetItem(((PyObject*)__pyx_v_kwargs), __pyx_mstate_global->__pyx_n_u_value); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 732, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_v_arg = __pyx_t_5; + __pyx_t_5 = 0; + goto __pyx_L6; + } + /*else*/ { + __pyx_t_6 = NULL; + __pyx_t_7 = __Pyx_PyUnicode_From_long(2, 0, ' ', 'd'); if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 732, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + if (unlikely(__pyx_v_args == Py_None)) { + PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); + __PYX_ERR(3, 732, __pyx_L1_error) + } + __pyx_t_4 = __Pyx_PyTuple_GET_SIZE(((PyObject*)__pyx_v_args)); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(3, 732, __pyx_L1_error) + __pyx_t_8 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_t_4, 0, ' ', 'd'); if (unlikely(!__pyx_t_8)) __PYX_ERR(3, 732, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_9[0] = __pyx_mstate_global->__pyx_kp_u_Expected_at_least; + __pyx_t_9[1] = __pyx_t_7; + __pyx_t_9[2] = __pyx_mstate_global->__pyx_kp_u_arguments_got; + __pyx_t_9[3] = __pyx_t_8; + __pyx_t_10 = __Pyx_PyUnicode_Join(__pyx_t_9, 4, 18 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_7) + 16 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_8), 127); + if (unlikely(!__pyx_t_10)) __PYX_ERR(3, 732, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_11 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_10}; + __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __pyx_callargs+__pyx_t_11, (2-__pyx_t_11) | (__pyx_t_11*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 732, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + } + __Pyx_Raise(__pyx_t_5, 0, 0, 0); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __PYX_ERR(3, 732, __pyx_L1_error) + } + __pyx_L6:; + __pyx_t_5 = __pyx_ff_map_fused_7df988_1_3_02b106__11__dunderbuiltin__dunder_PyObject__ptr__and_1__etc(__pyx_v_arg); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 732, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_v_dest_sig0 = ((PyObject*)__pyx_t_5); + __pyx_t_5 = 0; + __Pyx_XDECREF(__pyx_r); + __pyx_t_5 = __pyx_ff_match_signatures_single(((PyObject*)__pyx_v_signatures), __pyx_v_dest_sig0); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 732, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_r = __pyx_t_5; + __pyx_t_5 = 0; + goto __pyx_L0; + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_XDECREF(__pyx_t_10); + __Pyx_AddTraceback("selectolax.parser.Node.__pyx_fused_cpdef", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_arg); + __Pyx_XDECREF(__pyx_v_dest_sig0); + __Pyx_XDECREF(__pyx_v_kwargs); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static PyObject *__pyx_fuse_0__pyx_pw_10selectolax_6parser_4Node_75insert_child(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static PyMethodDef __pyx_fuse_0__pyx_mdef_10selectolax_6parser_4Node_75insert_child = {"__pyx_fuse_0insert_child", (PyCFunction)(void(*)(void))(PyCFunctionWithKeywords)__pyx_fuse_0__pyx_pw_10selectolax_6parser_4Node_75insert_child, METH_VARARGS|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_4Node_34insert_child}; +static PyObject *__pyx_fuse_0__pyx_pw_10selectolax_6parser_4Node_75insert_child(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_value = 0; + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("insert_child (wrapper)", 0); + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_value,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(3, 732, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(3, 732, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "insert_child", 0) < (0)) __PYX_ERR(3, 732, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("insert_child", 1, 1, 1, i); __PYX_ERR(3, 732, __pyx_L3_error) } + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(3, 732, __pyx_L3_error) + } + __pyx_v_value = ((PyObject*)values[0]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("insert_child", 1, 1, 1, __pyx_nargs); __PYX_ERR(3, 732, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.parser.Node.insert_child", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_value), (&PyUnicode_Type), 1, "value", 1))) __PYX_ERR(3, 732, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6parser_4Node_74insert_child(((struct __pyx_obj_10selectolax_6parser_Node *)__pyx_v_self), __pyx_v_value); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_4Node_74insert_child(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self, PyObject *__pyx_v_value) { + myhtml_tree_node_t *__pyx_v_node; + PyObject *__pyx_v_bytes_val = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + char *__pyx_t_4; + Py_ssize_t __pyx_t_5; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + size_t __pyx_t_9; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__pyx_fuse_0insert_child", 0); + + /* "selectolax/modest/node.pxi":761 + * """ + * cdef myhtml_tree_node_t *node + * if isinstance(value, (str, bytes, unicode)): # <<<<<<<<<<<<<< + * bytes_val = to_bytes(value) + * node = myhtml_node_create(self.parser.html_tree, MyHTML_TAG__TEXT, MyHTML_NAMESPACE_HTML) +*/ + __pyx_t_2 = PyUnicode_Check(__pyx_v_value); + if (!__pyx_t_2) { + } else { + __pyx_t_1 = __pyx_t_2; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_2 = PyBytes_Check(__pyx_v_value); + __pyx_t_1 = __pyx_t_2; + __pyx_L4_bool_binop_done:; + if (__pyx_t_1) { + + /* "selectolax/modest/node.pxi":762 + * cdef myhtml_tree_node_t *node + * if isinstance(value, (str, bytes, unicode)): + * bytes_val = to_bytes(value) # <<<<<<<<<<<<<< + * node = myhtml_node_create(self.parser.html_tree, MyHTML_TAG__TEXT, MyHTML_NAMESPACE_HTML) + * myhtml_node_text_set(node, bytes_val, len(bytes_val), MyENCODING_UTF_8) +*/ + __pyx_t_3 = __pyx_fuse_0__pyx_f_10selectolax_6parser_to_bytes(__pyx_v_value); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 762, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_v_bytes_val = ((PyObject*)__pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/modest/node.pxi":763 + * if isinstance(value, (str, bytes, unicode)): + * bytes_val = to_bytes(value) + * node = myhtml_node_create(self.parser.html_tree, MyHTML_TAG__TEXT, MyHTML_NAMESPACE_HTML) # <<<<<<<<<<<<<< + * myhtml_node_text_set(node, bytes_val, len(bytes_val), MyENCODING_UTF_8) + * myhtml_node_append_child(self.node, node) +*/ + __pyx_v_node = myhtml_node_create(__pyx_v_self->parser->html_tree, MyHTML_TAG__TEXT, MyHTML_NAMESPACE_HTML); + + /* "selectolax/modest/node.pxi":764 + * bytes_val = to_bytes(value) + * node = myhtml_node_create(self.parser.html_tree, MyHTML_TAG__TEXT, MyHTML_NAMESPACE_HTML) + * myhtml_node_text_set(node, bytes_val, len(bytes_val), MyENCODING_UTF_8) # <<<<<<<<<<<<<< + * myhtml_node_append_child(self.node, node) + * elif isinstance(value, Node): +*/ + if (unlikely(__pyx_v_bytes_val == Py_None)) { + PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); + __PYX_ERR(3, 764, __pyx_L1_error) + } + __pyx_t_4 = __Pyx_PyBytes_AsWritableString(__pyx_v_bytes_val); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(3, 764, __pyx_L1_error) + if (unlikely(__pyx_v_bytes_val == Py_None)) { + PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); + __PYX_ERR(3, 764, __pyx_L1_error) + } + __pyx_t_5 = __Pyx_PyBytes_GET_SIZE(__pyx_v_bytes_val); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(3, 764, __pyx_L1_error) + (void)(myhtml_node_text_set(__pyx_v_node, ((char *)__pyx_t_4), __pyx_t_5, MyENCODING_UTF_8)); + + /* "selectolax/modest/node.pxi":765 + * node = myhtml_node_create(self.parser.html_tree, MyHTML_TAG__TEXT, MyHTML_NAMESPACE_HTML) + * myhtml_node_text_set(node, bytes_val, len(bytes_val), MyENCODING_UTF_8) + * myhtml_node_append_child(self.node, node) # <<<<<<<<<<<<<< + * elif isinstance(value, Node): + * node = myhtml_node_clone_deep(self.parser.html_tree, value.node) +*/ + (void)(myhtml_node_append_child(__pyx_v_self->node, __pyx_v_node)); + + /* "selectolax/modest/node.pxi":761 + * """ + * cdef myhtml_tree_node_t *node + * if isinstance(value, (str, bytes, unicode)): # <<<<<<<<<<<<<< + * bytes_val = to_bytes(value) + * node = myhtml_node_create(self.parser.html_tree, MyHTML_TAG__TEXT, MyHTML_NAMESPACE_HTML) +*/ + goto __pyx_L3; + } + + /* "selectolax/modest/node.pxi":766 + * myhtml_node_text_set(node, bytes_val, len(bytes_val), MyENCODING_UTF_8) + * myhtml_node_append_child(self.node, node) + * elif isinstance(value, Node): # <<<<<<<<<<<<<< + * node = myhtml_node_clone_deep(self.parser.html_tree, value.node) + * myhtml_node_append_child(self.node, node) +*/ + __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_value, __pyx_mstate_global->__pyx_ptype_10selectolax_6parser_Node); + if (likely(__pyx_t_1)) { + + /* "selectolax/modest/node.pxi":767 + * myhtml_node_append_child(self.node, node) + * elif isinstance(value, Node): + * node = myhtml_node_clone_deep(self.parser.html_tree, value.node) # <<<<<<<<<<<<<< + * myhtml_node_append_child(self.node, node) + * else: +*/ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_value, __pyx_mstate_global->__pyx_n_u_node); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 767, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_v_node = myhtml_node_clone_deep(__pyx_v_self->parser->html_tree, ((myhtml_tree_node_t *)__pyx_t_3)); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "selectolax/modest/node.pxi":768 + * elif isinstance(value, Node): + * node = myhtml_node_clone_deep(self.parser.html_tree, value.node) + * myhtml_node_append_child(self.node, node) # <<<<<<<<<<<<<< + * else: + * raise TypeError("Expected a string or Node instance, but %s found" % type(value).__name__) +*/ + (void)(myhtml_node_append_child(__pyx_v_self->node, __pyx_v_node)); + + /* "selectolax/modest/node.pxi":766 + * myhtml_node_text_set(node, bytes_val, len(bytes_val), MyENCODING_UTF_8) + * myhtml_node_append_child(self.node, node) + * elif isinstance(value, Node): # <<<<<<<<<<<<<< + * node = myhtml_node_clone_deep(self.parser.html_tree, value.node) + * myhtml_node_append_child(self.node, node) +*/ + goto __pyx_L3; + } + + /* "selectolax/modest/node.pxi":770 + * myhtml_node_append_child(self.node, node) + * else: + * raise TypeError("Expected a string or Node instance, but %s found" % type(value).__name__) # <<<<<<<<<<<<<< + * + * def unwrap_tags(self, list tags, delete_empty = False): +*/ + /*else*/ { + __pyx_t_6 = NULL; + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(__pyx_v_value)), __pyx_mstate_global->__pyx_n_u_name); if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 770, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_8 = __Pyx_PyUnicode_FormatSafe(__pyx_mstate_global->__pyx_kp_u_Expected_a_string_or_Node_instan, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(3, 770, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_t_9 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_8}; + __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (__pyx_t_9*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 770, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(3, 770, __pyx_L1_error) + } + __pyx_L3:; + + /* "selectolax/modest/node.pxi":732 + * raise TypeError("Expected a string or Node instance, but %s found" % type(value).__name__) + * + * def insert_child(self, str_or_Node value): # <<<<<<<<<<<<<< + * """ + * Insert a node inside (at the end of) the current Node. +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_AddTraceback("selectolax.parser.Node.insert_child", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_bytes_val); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static PyObject *__pyx_fuse_1__pyx_pw_10selectolax_6parser_4Node_77insert_child(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static PyMethodDef __pyx_fuse_1__pyx_mdef_10selectolax_6parser_4Node_77insert_child = {"__pyx_fuse_1insert_child", (PyCFunction)(void(*)(void))(PyCFunctionWithKeywords)__pyx_fuse_1__pyx_pw_10selectolax_6parser_4Node_77insert_child, METH_VARARGS|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_4Node_34insert_child}; +static PyObject *__pyx_fuse_1__pyx_pw_10selectolax_6parser_4Node_77insert_child(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_value = 0; + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("insert_child (wrapper)", 0); + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_value,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(3, 732, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(3, 732, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "insert_child", 0) < (0)) __PYX_ERR(3, 732, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("insert_child", 1, 1, 1, i); __PYX_ERR(3, 732, __pyx_L3_error) } + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(3, 732, __pyx_L3_error) + } + __pyx_v_value = ((PyObject*)values[0]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("insert_child", 1, 1, 1, __pyx_nargs); __PYX_ERR(3, 732, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.parser.Node.insert_child", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_value), (&PyBytes_Type), 1, "value", 1))) __PYX_ERR(3, 732, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6parser_4Node_76insert_child(((struct __pyx_obj_10selectolax_6parser_Node *)__pyx_v_self), __pyx_v_value); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_4Node_76insert_child(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self, PyObject *__pyx_v_value) { + myhtml_tree_node_t *__pyx_v_node; + PyObject *__pyx_v_bytes_val = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + char *__pyx_t_4; + Py_ssize_t __pyx_t_5; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + size_t __pyx_t_9; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__pyx_fuse_1insert_child", 0); + + /* "selectolax/modest/node.pxi":761 + * """ + * cdef myhtml_tree_node_t *node + * if isinstance(value, (str, bytes, unicode)): # <<<<<<<<<<<<<< + * bytes_val = to_bytes(value) + * node = myhtml_node_create(self.parser.html_tree, MyHTML_TAG__TEXT, MyHTML_NAMESPACE_HTML) +*/ + __pyx_t_2 = PyUnicode_Check(__pyx_v_value); + if (!__pyx_t_2) { + } else { + __pyx_t_1 = __pyx_t_2; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_2 = PyBytes_Check(__pyx_v_value); + __pyx_t_1 = __pyx_t_2; + __pyx_L4_bool_binop_done:; + if (__pyx_t_1) { + + /* "selectolax/modest/node.pxi":762 + * cdef myhtml_tree_node_t *node + * if isinstance(value, (str, bytes, unicode)): + * bytes_val = to_bytes(value) # <<<<<<<<<<<<<< + * node = myhtml_node_create(self.parser.html_tree, MyHTML_TAG__TEXT, MyHTML_NAMESPACE_HTML) + * myhtml_node_text_set(node, bytes_val, len(bytes_val), MyENCODING_UTF_8) +*/ + __pyx_t_3 = __pyx_fuse_1__pyx_f_10selectolax_6parser_to_bytes(__pyx_v_value); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 762, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_v_bytes_val = ((PyObject*)__pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/modest/node.pxi":763 + * if isinstance(value, (str, bytes, unicode)): + * bytes_val = to_bytes(value) + * node = myhtml_node_create(self.parser.html_tree, MyHTML_TAG__TEXT, MyHTML_NAMESPACE_HTML) # <<<<<<<<<<<<<< + * myhtml_node_text_set(node, bytes_val, len(bytes_val), MyENCODING_UTF_8) + * myhtml_node_append_child(self.node, node) +*/ + __pyx_v_node = myhtml_node_create(__pyx_v_self->parser->html_tree, MyHTML_TAG__TEXT, MyHTML_NAMESPACE_HTML); + + /* "selectolax/modest/node.pxi":764 + * bytes_val = to_bytes(value) + * node = myhtml_node_create(self.parser.html_tree, MyHTML_TAG__TEXT, MyHTML_NAMESPACE_HTML) + * myhtml_node_text_set(node, bytes_val, len(bytes_val), MyENCODING_UTF_8) # <<<<<<<<<<<<<< + * myhtml_node_append_child(self.node, node) + * elif isinstance(value, Node): +*/ + if (unlikely(__pyx_v_bytes_val == Py_None)) { + PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); + __PYX_ERR(3, 764, __pyx_L1_error) + } + __pyx_t_4 = __Pyx_PyBytes_AsWritableString(__pyx_v_bytes_val); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(3, 764, __pyx_L1_error) + if (unlikely(__pyx_v_bytes_val == Py_None)) { + PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); + __PYX_ERR(3, 764, __pyx_L1_error) + } + __pyx_t_5 = __Pyx_PyBytes_GET_SIZE(__pyx_v_bytes_val); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(3, 764, __pyx_L1_error) + (void)(myhtml_node_text_set(__pyx_v_node, ((char *)__pyx_t_4), __pyx_t_5, MyENCODING_UTF_8)); + + /* "selectolax/modest/node.pxi":765 + * node = myhtml_node_create(self.parser.html_tree, MyHTML_TAG__TEXT, MyHTML_NAMESPACE_HTML) + * myhtml_node_text_set(node, bytes_val, len(bytes_val), MyENCODING_UTF_8) + * myhtml_node_append_child(self.node, node) # <<<<<<<<<<<<<< + * elif isinstance(value, Node): + * node = myhtml_node_clone_deep(self.parser.html_tree, value.node) +*/ + (void)(myhtml_node_append_child(__pyx_v_self->node, __pyx_v_node)); + + /* "selectolax/modest/node.pxi":761 + * """ + * cdef myhtml_tree_node_t *node + * if isinstance(value, (str, bytes, unicode)): # <<<<<<<<<<<<<< + * bytes_val = to_bytes(value) + * node = myhtml_node_create(self.parser.html_tree, MyHTML_TAG__TEXT, MyHTML_NAMESPACE_HTML) +*/ + goto __pyx_L3; + } + + /* "selectolax/modest/node.pxi":766 + * myhtml_node_text_set(node, bytes_val, len(bytes_val), MyENCODING_UTF_8) + * myhtml_node_append_child(self.node, node) + * elif isinstance(value, Node): # <<<<<<<<<<<<<< + * node = myhtml_node_clone_deep(self.parser.html_tree, value.node) + * myhtml_node_append_child(self.node, node) +*/ + __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_value, __pyx_mstate_global->__pyx_ptype_10selectolax_6parser_Node); + if (likely(__pyx_t_1)) { + + /* "selectolax/modest/node.pxi":767 + * myhtml_node_append_child(self.node, node) + * elif isinstance(value, Node): + * node = myhtml_node_clone_deep(self.parser.html_tree, value.node) # <<<<<<<<<<<<<< + * myhtml_node_append_child(self.node, node) + * else: +*/ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_value, __pyx_mstate_global->__pyx_n_u_node); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 767, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_v_node = myhtml_node_clone_deep(__pyx_v_self->parser->html_tree, ((myhtml_tree_node_t *)__pyx_t_3)); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "selectolax/modest/node.pxi":768 + * elif isinstance(value, Node): + * node = myhtml_node_clone_deep(self.parser.html_tree, value.node) + * myhtml_node_append_child(self.node, node) # <<<<<<<<<<<<<< + * else: + * raise TypeError("Expected a string or Node instance, but %s found" % type(value).__name__) +*/ + (void)(myhtml_node_append_child(__pyx_v_self->node, __pyx_v_node)); + + /* "selectolax/modest/node.pxi":766 + * myhtml_node_text_set(node, bytes_val, len(bytes_val), MyENCODING_UTF_8) + * myhtml_node_append_child(self.node, node) + * elif isinstance(value, Node): # <<<<<<<<<<<<<< + * node = myhtml_node_clone_deep(self.parser.html_tree, value.node) + * myhtml_node_append_child(self.node, node) +*/ + goto __pyx_L3; + } + + /* "selectolax/modest/node.pxi":770 + * myhtml_node_append_child(self.node, node) + * else: + * raise TypeError("Expected a string or Node instance, but %s found" % type(value).__name__) # <<<<<<<<<<<<<< + * + * def unwrap_tags(self, list tags, delete_empty = False): +*/ + /*else*/ { + __pyx_t_6 = NULL; + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(__pyx_v_value)), __pyx_mstate_global->__pyx_n_u_name); if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 770, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_8 = __Pyx_PyUnicode_FormatSafe(__pyx_mstate_global->__pyx_kp_u_Expected_a_string_or_Node_instan, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(3, 770, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_t_9 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_8}; + __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (__pyx_t_9*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 770, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(3, 770, __pyx_L1_error) + } + __pyx_L3:; + + /* "selectolax/modest/node.pxi":732 + * raise TypeError("Expected a string or Node instance, but %s found" % type(value).__name__) + * + * def insert_child(self, str_or_Node value): # <<<<<<<<<<<<<< + * """ + * Insert a node inside (at the end of) the current Node. +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_AddTraceback("selectolax.parser.Node.insert_child", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_bytes_val); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static PyObject *__pyx_fuse_2__pyx_pw_10selectolax_6parser_4Node_79insert_child(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static PyMethodDef __pyx_fuse_2__pyx_mdef_10selectolax_6parser_4Node_79insert_child = {"__pyx_fuse_2insert_child", (PyCFunction)(void(*)(void))(PyCFunctionWithKeywords)__pyx_fuse_2__pyx_pw_10selectolax_6parser_4Node_79insert_child, METH_VARARGS|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_4Node_34insert_child}; +static PyObject *__pyx_fuse_2__pyx_pw_10selectolax_6parser_4Node_79insert_child(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_value = 0; + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("insert_child (wrapper)", 0); + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_value,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(3, 732, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(3, 732, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "insert_child", 0) < (0)) __PYX_ERR(3, 732, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("insert_child", 1, 1, 1, i); __PYX_ERR(3, 732, __pyx_L3_error) } + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(3, 732, __pyx_L3_error) + } + __pyx_v_value = ((struct __pyx_obj_10selectolax_6parser_Node *)values[0]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("insert_child", 1, 1, 1, __pyx_nargs); __PYX_ERR(3, 732, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.parser.Node.insert_child", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_value), __pyx_mstate_global->__pyx_ptype_10selectolax_6parser_Node, 1, "value", 0))) __PYX_ERR(3, 732, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6parser_4Node_78insert_child(((struct __pyx_obj_10selectolax_6parser_Node *)__pyx_v_self), __pyx_v_value); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_4Node_78insert_child(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self, struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_value) { + myhtml_tree_node_t *__pyx_v_node; + PyObject *__pyx_v_bytes_val = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + char *__pyx_t_4; + Py_ssize_t __pyx_t_5; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + size_t __pyx_t_9; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__pyx_fuse_2insert_child", 0); + + /* "selectolax/modest/node.pxi":761 + * """ + * cdef myhtml_tree_node_t *node + * if isinstance(value, (str, bytes, unicode)): # <<<<<<<<<<<<<< + * bytes_val = to_bytes(value) + * node = myhtml_node_create(self.parser.html_tree, MyHTML_TAG__TEXT, MyHTML_NAMESPACE_HTML) +*/ + __pyx_t_2 = PyUnicode_Check(((PyObject *)__pyx_v_value)); + if (!__pyx_t_2) { + } else { + __pyx_t_1 = __pyx_t_2; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_2 = PyBytes_Check(((PyObject *)__pyx_v_value)); + __pyx_t_1 = __pyx_t_2; + __pyx_L4_bool_binop_done:; + if (__pyx_t_1) { + + /* "selectolax/modest/node.pxi":762 + * cdef myhtml_tree_node_t *node + * if isinstance(value, (str, bytes, unicode)): + * bytes_val = to_bytes(value) # <<<<<<<<<<<<<< + * node = myhtml_node_create(self.parser.html_tree, MyHTML_TAG__TEXT, MyHTML_NAMESPACE_HTML) + * myhtml_node_text_set(node, bytes_val, len(bytes_val), MyENCODING_UTF_8) +*/ + __pyx_t_3 = __pyx_fuse_2__pyx_f_10selectolax_6parser_to_bytes(__pyx_v_value); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 762, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_v_bytes_val = ((PyObject*)__pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/modest/node.pxi":763 + * if isinstance(value, (str, bytes, unicode)): + * bytes_val = to_bytes(value) + * node = myhtml_node_create(self.parser.html_tree, MyHTML_TAG__TEXT, MyHTML_NAMESPACE_HTML) # <<<<<<<<<<<<<< + * myhtml_node_text_set(node, bytes_val, len(bytes_val), MyENCODING_UTF_8) + * myhtml_node_append_child(self.node, node) +*/ + __pyx_v_node = myhtml_node_create(__pyx_v_self->parser->html_tree, MyHTML_TAG__TEXT, MyHTML_NAMESPACE_HTML); + + /* "selectolax/modest/node.pxi":764 + * bytes_val = to_bytes(value) + * node = myhtml_node_create(self.parser.html_tree, MyHTML_TAG__TEXT, MyHTML_NAMESPACE_HTML) + * myhtml_node_text_set(node, bytes_val, len(bytes_val), MyENCODING_UTF_8) # <<<<<<<<<<<<<< + * myhtml_node_append_child(self.node, node) + * elif isinstance(value, Node): +*/ + if (unlikely(__pyx_v_bytes_val == Py_None)) { + PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); + __PYX_ERR(3, 764, __pyx_L1_error) + } + __pyx_t_4 = __Pyx_PyBytes_AsWritableString(__pyx_v_bytes_val); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(3, 764, __pyx_L1_error) + if (unlikely(__pyx_v_bytes_val == Py_None)) { + PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); + __PYX_ERR(3, 764, __pyx_L1_error) + } + __pyx_t_5 = __Pyx_PyBytes_GET_SIZE(__pyx_v_bytes_val); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(3, 764, __pyx_L1_error) + (void)(myhtml_node_text_set(__pyx_v_node, ((char *)__pyx_t_4), __pyx_t_5, MyENCODING_UTF_8)); + + /* "selectolax/modest/node.pxi":765 + * node = myhtml_node_create(self.parser.html_tree, MyHTML_TAG__TEXT, MyHTML_NAMESPACE_HTML) + * myhtml_node_text_set(node, bytes_val, len(bytes_val), MyENCODING_UTF_8) + * myhtml_node_append_child(self.node, node) # <<<<<<<<<<<<<< + * elif isinstance(value, Node): + * node = myhtml_node_clone_deep(self.parser.html_tree, value.node) +*/ + (void)(myhtml_node_append_child(__pyx_v_self->node, __pyx_v_node)); + + /* "selectolax/modest/node.pxi":761 + * """ + * cdef myhtml_tree_node_t *node + * if isinstance(value, (str, bytes, unicode)): # <<<<<<<<<<<<<< + * bytes_val = to_bytes(value) + * node = myhtml_node_create(self.parser.html_tree, MyHTML_TAG__TEXT, MyHTML_NAMESPACE_HTML) +*/ + goto __pyx_L3; + } + + /* "selectolax/modest/node.pxi":766 + * myhtml_node_text_set(node, bytes_val, len(bytes_val), MyENCODING_UTF_8) + * myhtml_node_append_child(self.node, node) + * elif isinstance(value, Node): # <<<<<<<<<<<<<< + * node = myhtml_node_clone_deep(self.parser.html_tree, value.node) + * myhtml_node_append_child(self.node, node) +*/ + __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_value), __pyx_mstate_global->__pyx_ptype_10selectolax_6parser_Node); + if (likely(__pyx_t_1)) { + + /* "selectolax/modest/node.pxi":767 + * myhtml_node_append_child(self.node, node) + * elif isinstance(value, Node): + * node = myhtml_node_clone_deep(self.parser.html_tree, value.node) # <<<<<<<<<<<<<< + * myhtml_node_append_child(self.node, node) + * else: +*/ + __pyx_v_node = myhtml_node_clone_deep(__pyx_v_self->parser->html_tree, ((myhtml_tree_node_t *)__pyx_v_value->node)); + + /* "selectolax/modest/node.pxi":768 + * elif isinstance(value, Node): + * node = myhtml_node_clone_deep(self.parser.html_tree, value.node) + * myhtml_node_append_child(self.node, node) # <<<<<<<<<<<<<< + * else: + * raise TypeError("Expected a string or Node instance, but %s found" % type(value).__name__) +*/ + (void)(myhtml_node_append_child(__pyx_v_self->node, __pyx_v_node)); + + /* "selectolax/modest/node.pxi":766 + * myhtml_node_text_set(node, bytes_val, len(bytes_val), MyENCODING_UTF_8) + * myhtml_node_append_child(self.node, node) + * elif isinstance(value, Node): # <<<<<<<<<<<<<< + * node = myhtml_node_clone_deep(self.parser.html_tree, value.node) + * myhtml_node_append_child(self.node, node) +*/ + goto __pyx_L3; + } + + /* "selectolax/modest/node.pxi":770 + * myhtml_node_append_child(self.node, node) + * else: + * raise TypeError("Expected a string or Node instance, but %s found" % type(value).__name__) # <<<<<<<<<<<<<< + * + * def unwrap_tags(self, list tags, delete_empty = False): +*/ + /*else*/ { + __pyx_t_6 = NULL; + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_value))), __pyx_mstate_global->__pyx_n_u_name); if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 770, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_8 = __Pyx_PyUnicode_FormatSafe(__pyx_mstate_global->__pyx_kp_u_Expected_a_string_or_Node_instan, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(3, 770, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_t_9 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_8}; + __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (__pyx_t_9*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 770, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(3, 770, __pyx_L1_error) + } + __pyx_L3:; + + /* "selectolax/modest/node.pxi":732 + * raise TypeError("Expected a string or Node instance, but %s found" % type(value).__name__) + * + * def insert_child(self, str_or_Node value): # <<<<<<<<<<<<<< + * """ + * Insert a node inside (at the end of) the current Node. +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_AddTraceback("selectolax.parser.Node.insert_child", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_bytes_val); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/modest/node.pxi":772 + * raise TypeError("Expected a string or Node instance, but %s found" % type(value).__name__) + * + * def unwrap_tags(self, list tags, delete_empty = False): # <<<<<<<<<<<<<< + * """Unwraps specified tags from the HTML tree. + * +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_4Node_37unwrap_tags(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6parser_4Node_36unwrap_tags, "Node.unwrap_tags(self, list tags, delete_empty=False)\n\nUnwraps specified tags from the HTML tree.\n\nWorks the same as th ``unwrap`` method, but applied to a list of tags.\n\nParameters\n----------\ntags : list\n List of tags to remove.\ndelete_empty : bool, default False\n Whenever to delete empty tags.\n\nExamples\n--------\n\n>>> tree = HTMLParser(\"
Hello world!
\")\n>>> tree.body.unwrap_tags(['i','a'])\n>>> tree.body.html\n'
Hello world!
'\n\nNote: by default, empty tags are ignored, set \"delete_empty\" to \"True\" to change this."); +static PyMethodDef __pyx_mdef_10selectolax_6parser_4Node_37unwrap_tags = {"unwrap_tags", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_4Node_37unwrap_tags, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_4Node_36unwrap_tags}; +static PyObject *__pyx_pw_10selectolax_6parser_4Node_37unwrap_tags(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_tags = 0; + PyObject *__pyx_v_delete_empty = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[2] = {0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("unwrap_tags (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_tags,&__pyx_mstate_global->__pyx_n_u_delete_empty,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(3, 772, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(3, 772, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(3, 772, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "unwrap_tags", 0) < (0)) __PYX_ERR(3, 772, __pyx_L3_error) + if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_False)); + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("unwrap_tags", 0, 1, 2, i); __PYX_ERR(3, 772, __pyx_L3_error) } + } + } else { + switch (__pyx_nargs) { + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(3, 772, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(3, 772, __pyx_L3_error) + break; + default: goto __pyx_L5_argtuple_error; + } + if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_False)); + } + __pyx_v_tags = ((PyObject*)values[0]); + __pyx_v_delete_empty = values[1]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("unwrap_tags", 0, 1, 2, __pyx_nargs); __PYX_ERR(3, 772, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.parser.Node.unwrap_tags", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_tags), (&PyList_Type), 1, "tags", 1))) __PYX_ERR(3, 772, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6parser_4Node_36unwrap_tags(((struct __pyx_obj_10selectolax_6parser_Node *)__pyx_v_self), __pyx_v_tags, __pyx_v_delete_empty); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_4Node_36unwrap_tags(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self, PyObject *__pyx_v_tags, PyObject *__pyx_v_delete_empty) { + struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_element = 0; + PyObject *__pyx_v_tag = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + Py_ssize_t __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + size_t __pyx_t_5; + Py_ssize_t __pyx_t_6; + PyObject *(*__pyx_t_7)(PyObject *); + PyObject *__pyx_t_8 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("unwrap_tags", 0); + + /* "selectolax/modest/node.pxi":795 + * """ + * cdef Node element + * for tag in tags: # <<<<<<<<<<<<<< + * for element in self.css(tag): + * element.unwrap(delete_empty) +*/ + if (unlikely(__pyx_v_tags == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); + __PYX_ERR(3, 795, __pyx_L1_error) + } + __pyx_t_1 = __pyx_v_tags; __Pyx_INCREF(__pyx_t_1); + __pyx_t_2 = 0; + for (;;) { + { + Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1); + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely((__pyx_temp < 0))) __PYX_ERR(3, 795, __pyx_L1_error) + #endif + if (__pyx_t_2 >= __pyx_temp) break; + } + __pyx_t_3 = __Pyx_PyList_GetItemRefFast(__pyx_t_1, __pyx_t_2, __Pyx_ReferenceSharing_OwnStrongReference); + ++__pyx_t_2; + if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 795, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_XDECREF_SET(__pyx_v_tag, __pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/modest/node.pxi":796 + * cdef Node element + * for tag in tags: + * for element in self.css(tag): # <<<<<<<<<<<<<< + * element.unwrap(delete_empty) + * +*/ + __pyx_t_4 = ((PyObject *)__pyx_v_self); + __Pyx_INCREF(__pyx_t_4); + __pyx_t_5 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_tag}; + __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_css, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 796, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) { + __pyx_t_4 = __pyx_t_3; __Pyx_INCREF(__pyx_t_4); + __pyx_t_6 = 0; + __pyx_t_7 = NULL; + } else { + __pyx_t_6 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 796, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_7 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 796, __pyx_L1_error) + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + for (;;) { + if (likely(!__pyx_t_7)) { + if (likely(PyList_CheckExact(__pyx_t_4))) { + { + Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_4); + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely((__pyx_temp < 0))) __PYX_ERR(3, 796, __pyx_L1_error) + #endif + if (__pyx_t_6 >= __pyx_temp) break; + } + __pyx_t_3 = __Pyx_PyList_GetItemRefFast(__pyx_t_4, __pyx_t_6, __Pyx_ReferenceSharing_OwnStrongReference); + ++__pyx_t_6; + } else { + { + Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_4); + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely((__pyx_temp < 0))) __PYX_ERR(3, 796, __pyx_L1_error) + #endif + if (__pyx_t_6 >= __pyx_temp) break; + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_3 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_6)); + #else + __pyx_t_3 = __Pyx_PySequence_ITEM(__pyx_t_4, __pyx_t_6); + #endif + ++__pyx_t_6; + } + if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 796, __pyx_L1_error) + } else { + __pyx_t_3 = __pyx_t_7(__pyx_t_4); + if (unlikely(!__pyx_t_3)) { + PyObject* exc_type = PyErr_Occurred(); + if (exc_type) { + if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(3, 796, __pyx_L1_error) + PyErr_Clear(); + } + break; + } + } + __Pyx_GOTREF(__pyx_t_3); + if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_mstate_global->__pyx_ptype_10selectolax_6parser_Node))))) __PYX_ERR(3, 796, __pyx_L1_error) + __Pyx_XDECREF_SET(__pyx_v_element, ((struct __pyx_obj_10selectolax_6parser_Node *)__pyx_t_3)); + __pyx_t_3 = 0; + + /* "selectolax/modest/node.pxi":797 + * for tag in tags: + * for element in self.css(tag): + * element.unwrap(delete_empty) # <<<<<<<<<<<<<< + * + * @property +*/ + __pyx_t_8 = ((PyObject *)__pyx_v_element); + __Pyx_INCREF(__pyx_t_8); + __pyx_t_5 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_v_delete_empty}; + __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_unwrap, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 797, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "selectolax/modest/node.pxi":796 + * cdef Node element + * for tag in tags: + * for element in self.css(tag): # <<<<<<<<<<<<<< + * element.unwrap(delete_empty) + * +*/ + } + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "selectolax/modest/node.pxi":795 + * """ + * cdef Node element + * for tag in tags: # <<<<<<<<<<<<<< + * for element in self.css(tag): + * element.unwrap(delete_empty) +*/ + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "selectolax/modest/node.pxi":772 + * raise TypeError("Expected a string or Node instance, but %s found" % type(value).__name__) + * + * def unwrap_tags(self, list tags, delete_empty = False): # <<<<<<<<<<<<<< + * """Unwraps specified tags from the HTML tree. + * +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_AddTraceback("selectolax.parser.Node.unwrap_tags", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF((PyObject *)__pyx_v_element); + __Pyx_XDECREF(__pyx_v_tag); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/modest/node.pxi":799 + * element.unwrap(delete_empty) + * + * @property # <<<<<<<<<<<<<< + * def raw_value(self): + * """Return the raw (unparsed, original) value of a node. +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_4Node_9raw_value_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_10selectolax_6parser_4Node_9raw_value_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6parser_4Node_9raw_value___get__(((struct __pyx_obj_10selectolax_6parser_Node *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_4Node_9raw_value___get__(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self) { + int __pyx_v_begin; + int __pyx_v_length; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + size_t __pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + + /* "selectolax/modest/node.pxi":820 + * b'<test>' + * """ + * cdef int begin = self.node.token.element_begin # <<<<<<<<<<<<<< + * cdef int length = self.node.token.element_length + * if self.node.tag_id != MyHTML_TAG__TEXT: +*/ + __pyx_t_1 = __pyx_v_self->node->token->element_begin; + __pyx_v_begin = __pyx_t_1; + + /* "selectolax/modest/node.pxi":821 + * """ + * cdef int begin = self.node.token.element_begin + * cdef int length = self.node.token.element_length # <<<<<<<<<<<<<< + * if self.node.tag_id != MyHTML_TAG__TEXT: + * raise ValueError("Can't obtain raw value for non-text node.") +*/ + __pyx_t_1 = __pyx_v_self->node->token->element_length; + __pyx_v_length = __pyx_t_1; + + /* "selectolax/modest/node.pxi":822 + * cdef int begin = self.node.token.element_begin + * cdef int length = self.node.token.element_length + * if self.node.tag_id != MyHTML_TAG__TEXT: # <<<<<<<<<<<<<< + * raise ValueError("Can't obtain raw value for non-text node.") + * return self.parser.raw_html[begin:begin + length] +*/ + __pyx_t_2 = (__pyx_v_self->node->tag_id != MyHTML_TAG__TEXT); + if (unlikely(__pyx_t_2)) { + + /* "selectolax/modest/node.pxi":823 + * cdef int length = self.node.token.element_length + * if self.node.tag_id != MyHTML_TAG__TEXT: + * raise ValueError("Can't obtain raw value for non-text node.") # <<<<<<<<<<<<<< + * return self.parser.raw_html[begin:begin + length] + * +*/ + __pyx_t_4 = NULL; + __pyx_t_1 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_Can_t_obtain_raw_value_for_non_t}; + __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_1, (2-__pyx_t_1) | (__pyx_t_1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 823, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(3, 823, __pyx_L1_error) + + /* "selectolax/modest/node.pxi":822 + * cdef int begin = self.node.token.element_begin + * cdef int length = self.node.token.element_length + * if self.node.tag_id != MyHTML_TAG__TEXT: # <<<<<<<<<<<<<< + * raise ValueError("Can't obtain raw value for non-text node.") + * return self.parser.raw_html[begin:begin + length] +*/ + } + + /* "selectolax/modest/node.pxi":824 + * if self.node.tag_id != MyHTML_TAG__TEXT: + * raise ValueError("Can't obtain raw value for non-text node.") + * return self.parser.raw_html[begin:begin + length] # <<<<<<<<<<<<<< + * + * def select(self, query=None): +*/ + __Pyx_XDECREF(__pyx_r); + if (unlikely(__pyx_v_self->parser->raw_html == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(3, 824, __pyx_L1_error) + } + __pyx_t_3 = PySequence_GetSlice(__pyx_v_self->parser->raw_html, __pyx_v_begin, (__pyx_v_begin + __pyx_v_length)); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 824, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_r = __pyx_t_3; + __pyx_t_3 = 0; + goto __pyx_L0; + + /* "selectolax/modest/node.pxi":799 + * element.unwrap(delete_empty) + * + * @property # <<<<<<<<<<<<<< + * def raw_value(self): + * """Return the raw (unparsed, original) value of a node. +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("selectolax.parser.Node.raw_value.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/modest/node.pxi":826 + * return self.parser.raw_html[begin:begin + length] + * + * def select(self, query=None): # <<<<<<<<<<<<<< + * """Select nodes given a CSS selector. + * +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_4Node_39select(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6parser_4Node_38select, "Node.select(self, query=None)\n\nSelect nodes given a CSS selector.\n\nWorks similarly to the ``css`` method, but supports chained filtering and extra features.\n\nParameters\n----------\nquery : str or None\n The CSS selector to use when searching for nodes.\n\nReturns\n-------\nselector : The `Selector` class."); +static PyMethodDef __pyx_mdef_10selectolax_6parser_4Node_39select = {"select", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_4Node_39select, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_4Node_38select}; +static PyObject *__pyx_pw_10selectolax_6parser_4Node_39select(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_query = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("select (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_query,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(3, 826, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(3, 826, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "select", 0) < (0)) __PYX_ERR(3, 826, __pyx_L3_error) + if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)Py_None)); + } else { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(3, 826, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)Py_None)); + } + __pyx_v_query = values[0]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("select", 0, 0, 1, __pyx_nargs); __PYX_ERR(3, 826, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.parser.Node.select", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_10selectolax_6parser_4Node_38select(((struct __pyx_obj_10selectolax_6parser_Node *)__pyx_v_self), __pyx_v_query); + + /* function exit code */ + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_4Node_38select(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self, PyObject *__pyx_v_query) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + size_t __pyx_t_3; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("select", 0); + + /* "selectolax/modest/node.pxi":840 + * selector : The `Selector` class. + * """ + * return Selector(self, query) # <<<<<<<<<<<<<< + * + * def scripts_contain(self, str query): +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_2 = NULL; + __pyx_t_3 = 1; + { + PyObject *__pyx_callargs[3] = {__pyx_t_2, ((PyObject *)__pyx_v_self), __pyx_v_query}; + __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_10selectolax_6parser_Selector, __pyx_callargs+__pyx_t_3, (3-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 840, __pyx_L1_error) + __Pyx_GOTREF((PyObject *)__pyx_t_1); + } + __pyx_r = ((PyObject *)__pyx_t_1); + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "selectolax/modest/node.pxi":826 + * return self.parser.raw_html[begin:begin + length] + * + * def select(self, query=None): # <<<<<<<<<<<<<< + * """Select nodes given a CSS selector. + * +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("selectolax.parser.Node.select", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/modest/node.pxi":842 + * return Selector(self, query) + * + * def scripts_contain(self, str query): # <<<<<<<<<<<<<< + * """Returns True if any of the script tags contain specified text. + * +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_4Node_41scripts_contain(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6parser_4Node_40scripts_contain, "Node.scripts_contain(self, str query)\n\nReturns True if any of the script tags contain specified text.\n\nCaches script tags on the first call to improve performance.\n\nParameters\n----------\nquery : str\n The query to check."); +static PyMethodDef __pyx_mdef_10selectolax_6parser_4Node_41scripts_contain = {"scripts_contain", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_4Node_41scripts_contain, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_4Node_40scripts_contain}; +static PyObject *__pyx_pw_10selectolax_6parser_4Node_41scripts_contain(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_query = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("scripts_contain (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_query,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(3, 842, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(3, 842, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "scripts_contain", 0) < (0)) __PYX_ERR(3, 842, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("scripts_contain", 1, 1, 1, i); __PYX_ERR(3, 842, __pyx_L3_error) } + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(3, 842, __pyx_L3_error) + } + __pyx_v_query = ((PyObject*)values[0]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("scripts_contain", 1, 1, 1, __pyx_nargs); __PYX_ERR(3, 842, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.parser.Node.scripts_contain", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_query), (&PyUnicode_Type), 1, "query", 1))) __PYX_ERR(3, 842, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6parser_4Node_40scripts_contain(((struct __pyx_obj_10selectolax_6parser_Node *)__pyx_v_self), __pyx_v_query); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_4Node_40scripts_contain(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self, PyObject *__pyx_v_query) { + struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_node = 0; + PyObject *__pyx_v_nodes = NULL; + PyObject *__pyx_v_text_nodes = NULL; + PyObject *__pyx_v_node_text = NULL; + PyObject *__pyx_v_text = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + Py_ssize_t __pyx_t_4; + PyObject *(*__pyx_t_5)(PyObject *); + PyObject *__pyx_t_6 = NULL; + size_t __pyx_t_7; + PyObject *__pyx_t_8 = NULL; + int __pyx_t_9; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("scripts_contain", 0); + + /* "selectolax/modest/node.pxi":854 + * """ + * cdef Node node + * if self.parser.cached_script_texts is None: # <<<<<<<<<<<<<< + * nodes = find_nodes(self.parser, self.node, 'script') + * text_nodes = [] +*/ + __pyx_t_1 = (__pyx_v_self->parser->cached_script_texts == Py_None); + if (__pyx_t_1) { + + /* "selectolax/modest/node.pxi":855 + * cdef Node node + * if self.parser.cached_script_texts is None: + * nodes = find_nodes(self.parser, self.node, 'script') # <<<<<<<<<<<<<< + * text_nodes = [] + * for node in nodes: +*/ + __pyx_t_2 = ((PyObject *)__pyx_v_self->parser); + __Pyx_INCREF(__pyx_t_2); + __pyx_t_3 = __pyx_f_10selectolax_6parser_find_nodes(((struct __pyx_obj_10selectolax_6parser_HTMLParser *)__pyx_t_2), __pyx_v_self->node, __pyx_mstate_global->__pyx_n_u_script); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 855, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_v_nodes = __pyx_t_3; + __pyx_t_3 = 0; + + /* "selectolax/modest/node.pxi":856 + * if self.parser.cached_script_texts is None: + * nodes = find_nodes(self.parser, self.node, 'script') + * text_nodes = [] # <<<<<<<<<<<<<< + * for node in nodes: + * node_text = node.text(deep=True) +*/ + __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 856, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_v_text_nodes = ((PyObject*)__pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/modest/node.pxi":857 + * nodes = find_nodes(self.parser, self.node, 'script') + * text_nodes = [] + * for node in nodes: # <<<<<<<<<<<<<< + * node_text = node.text(deep=True) + * if node_text: +*/ + if (likely(PyList_CheckExact(__pyx_v_nodes)) || PyTuple_CheckExact(__pyx_v_nodes)) { + __pyx_t_3 = __pyx_v_nodes; __Pyx_INCREF(__pyx_t_3); + __pyx_t_4 = 0; + __pyx_t_5 = NULL; + } else { + __pyx_t_4 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_nodes); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 857, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_5 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 857, __pyx_L1_error) + } + for (;;) { + if (likely(!__pyx_t_5)) { + if (likely(PyList_CheckExact(__pyx_t_3))) { + { + Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_3); + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely((__pyx_temp < 0))) __PYX_ERR(3, 857, __pyx_L1_error) + #endif + if (__pyx_t_4 >= __pyx_temp) break; + } + __pyx_t_2 = __Pyx_PyList_GetItemRefFast(__pyx_t_3, __pyx_t_4, __Pyx_ReferenceSharing_OwnStrongReference); + ++__pyx_t_4; + } else { + { + Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_3); + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely((__pyx_temp < 0))) __PYX_ERR(3, 857, __pyx_L1_error) + #endif + if (__pyx_t_4 >= __pyx_temp) break; + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_2 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_4)); + #else + __pyx_t_2 = __Pyx_PySequence_ITEM(__pyx_t_3, __pyx_t_4); + #endif + ++__pyx_t_4; + } + if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 857, __pyx_L1_error) + } else { + __pyx_t_2 = __pyx_t_5(__pyx_t_3); + if (unlikely(!__pyx_t_2)) { + PyObject* exc_type = PyErr_Occurred(); + if (exc_type) { + if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(3, 857, __pyx_L1_error) + PyErr_Clear(); + } + break; + } + } + __Pyx_GOTREF(__pyx_t_2); + if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_mstate_global->__pyx_ptype_10selectolax_6parser_Node))))) __PYX_ERR(3, 857, __pyx_L1_error) + __Pyx_XDECREF_SET(__pyx_v_node, ((struct __pyx_obj_10selectolax_6parser_Node *)__pyx_t_2)); + __pyx_t_2 = 0; + + /* "selectolax/modest/node.pxi":858 + * text_nodes = [] + * for node in nodes: + * node_text = node.text(deep=True) # <<<<<<<<<<<<<< + * if node_text: + * text_nodes.append(node_text) +*/ + __pyx_t_6 = ((PyObject *)__pyx_v_node); + __Pyx_INCREF(__pyx_t_6); + __pyx_t_7 = 0; + { + PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_6, NULL}; + __pyx_t_8 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(3, 858, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_deep, Py_True, __pyx_t_8, __pyx_callargs+1, 0) < (0)) __PYX_ERR(3, 858, __pyx_L1_error) + __pyx_t_2 = __Pyx_Object_VectorcallMethod_CallFromBuilder((PyObject*)__pyx_mstate_global->__pyx_n_u_text, __pyx_callargs+__pyx_t_7, (1-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_8); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 858, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + } + __Pyx_XDECREF_SET(__pyx_v_node_text, __pyx_t_2); + __pyx_t_2 = 0; + + /* "selectolax/modest/node.pxi":859 + * for node in nodes: + * node_text = node.text(deep=True) + * if node_text: # <<<<<<<<<<<<<< + * text_nodes.append(node_text) + * self.parser.cached_script_texts = text_nodes +*/ + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_node_text); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(3, 859, __pyx_L1_error) + if (__pyx_t_1) { + + /* "selectolax/modest/node.pxi":860 + * node_text = node.text(deep=True) + * if node_text: + * text_nodes.append(node_text) # <<<<<<<<<<<<<< + * self.parser.cached_script_texts = text_nodes + * +*/ + __pyx_t_9 = __Pyx_PyList_Append(__pyx_v_text_nodes, __pyx_v_node_text); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(3, 860, __pyx_L1_error) + + /* "selectolax/modest/node.pxi":859 + * for node in nodes: + * node_text = node.text(deep=True) + * if node_text: # <<<<<<<<<<<<<< + * text_nodes.append(node_text) + * self.parser.cached_script_texts = text_nodes +*/ + } + + /* "selectolax/modest/node.pxi":857 + * nodes = find_nodes(self.parser, self.node, 'script') + * text_nodes = [] + * for node in nodes: # <<<<<<<<<<<<<< + * node_text = node.text(deep=True) + * if node_text: +*/ + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "selectolax/modest/node.pxi":861 + * if node_text: + * text_nodes.append(node_text) + * self.parser.cached_script_texts = text_nodes # <<<<<<<<<<<<<< + * + * for text in self.parser.cached_script_texts: +*/ + __Pyx_INCREF(__pyx_v_text_nodes); + __Pyx_GIVEREF(__pyx_v_text_nodes); + __Pyx_GOTREF(__pyx_v_self->parser->cached_script_texts); + __Pyx_DECREF(__pyx_v_self->parser->cached_script_texts); + __pyx_v_self->parser->cached_script_texts = __pyx_v_text_nodes; + + /* "selectolax/modest/node.pxi":854 + * """ + * cdef Node node + * if self.parser.cached_script_texts is None: # <<<<<<<<<<<<<< + * nodes = find_nodes(self.parser, self.node, 'script') + * text_nodes = [] +*/ + } + + /* "selectolax/modest/node.pxi":863 + * self.parser.cached_script_texts = text_nodes + * + * for text in self.parser.cached_script_texts: # <<<<<<<<<<<<<< + * if query in text: + * return True +*/ + if (likely(PyList_CheckExact(__pyx_v_self->parser->cached_script_texts)) || PyTuple_CheckExact(__pyx_v_self->parser->cached_script_texts)) { + __pyx_t_3 = __pyx_v_self->parser->cached_script_texts; __Pyx_INCREF(__pyx_t_3); + __pyx_t_4 = 0; + __pyx_t_5 = NULL; + } else { + __pyx_t_4 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_self->parser->cached_script_texts); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 863, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_5 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 863, __pyx_L1_error) + } + for (;;) { + if (likely(!__pyx_t_5)) { + if (likely(PyList_CheckExact(__pyx_t_3))) { + { + Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_3); + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely((__pyx_temp < 0))) __PYX_ERR(3, 863, __pyx_L1_error) + #endif + if (__pyx_t_4 >= __pyx_temp) break; + } + __pyx_t_2 = __Pyx_PyList_GetItemRefFast(__pyx_t_3, __pyx_t_4, __Pyx_ReferenceSharing_OwnStrongReference); + ++__pyx_t_4; + } else { + { + Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_3); + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely((__pyx_temp < 0))) __PYX_ERR(3, 863, __pyx_L1_error) + #endif + if (__pyx_t_4 >= __pyx_temp) break; + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_2 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_4)); + #else + __pyx_t_2 = __Pyx_PySequence_ITEM(__pyx_t_3, __pyx_t_4); + #endif + ++__pyx_t_4; + } + if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 863, __pyx_L1_error) + } else { + __pyx_t_2 = __pyx_t_5(__pyx_t_3); + if (unlikely(!__pyx_t_2)) { + PyObject* exc_type = PyErr_Occurred(); + if (exc_type) { + if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(3, 863, __pyx_L1_error) + PyErr_Clear(); + } + break; + } + } + __Pyx_GOTREF(__pyx_t_2); + __Pyx_XDECREF_SET(__pyx_v_text, __pyx_t_2); + __pyx_t_2 = 0; + + /* "selectolax/modest/node.pxi":864 + * + * for text in self.parser.cached_script_texts: + * if query in text: # <<<<<<<<<<<<<< + * return True + * return False +*/ + __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_v_query, __pyx_v_text, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(3, 864, __pyx_L1_error) + if (__pyx_t_1) { + + /* "selectolax/modest/node.pxi":865 + * for text in self.parser.cached_script_texts: + * if query in text: + * return True # <<<<<<<<<<<<<< + * return False + * +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(Py_True); + __pyx_r = Py_True; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + goto __pyx_L0; + + /* "selectolax/modest/node.pxi":864 + * + * for text in self.parser.cached_script_texts: + * if query in text: # <<<<<<<<<<<<<< + * return True + * return False +*/ + } + + /* "selectolax/modest/node.pxi":863 + * self.parser.cached_script_texts = text_nodes + * + * for text in self.parser.cached_script_texts: # <<<<<<<<<<<<<< + * if query in text: + * return True +*/ + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "selectolax/modest/node.pxi":866 + * if query in text: + * return True + * return False # <<<<<<<<<<<<<< + * + * def script_srcs_contain(self, tuple queries): +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(Py_False); + __pyx_r = Py_False; + goto __pyx_L0; + + /* "selectolax/modest/node.pxi":842 + * return Selector(self, query) + * + * def scripts_contain(self, str query): # <<<<<<<<<<<<<< + * """Returns True if any of the script tags contain specified text. + * +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_AddTraceback("selectolax.parser.Node.scripts_contain", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF((PyObject *)__pyx_v_node); + __Pyx_XDECREF(__pyx_v_nodes); + __Pyx_XDECREF(__pyx_v_text_nodes); + __Pyx_XDECREF(__pyx_v_node_text); + __Pyx_XDECREF(__pyx_v_text); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/modest/node.pxi":868 + * return False + * + * def script_srcs_contain(self, tuple queries): # <<<<<<<<<<<<<< + * """Returns True if any of the script SRCs attributes contain on of the specified text. + * +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_4Node_43script_srcs_contain(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6parser_4Node_42script_srcs_contain, "Node.script_srcs_contain(self, tuple queries)\n\nReturns True if any of the script SRCs attributes contain on of the specified text.\n\nCaches values on the first call to improve performance.\n\nParameters\n----------\nqueries : tuple of str"); +static PyMethodDef __pyx_mdef_10selectolax_6parser_4Node_43script_srcs_contain = {"script_srcs_contain", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_4Node_43script_srcs_contain, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_4Node_42script_srcs_contain}; +static PyObject *__pyx_pw_10selectolax_6parser_4Node_43script_srcs_contain(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_queries = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("script_srcs_contain (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_queries,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(3, 868, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(3, 868, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "script_srcs_contain", 0) < (0)) __PYX_ERR(3, 868, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("script_srcs_contain", 1, 1, 1, i); __PYX_ERR(3, 868, __pyx_L3_error) } + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(3, 868, __pyx_L3_error) + } + __pyx_v_queries = ((PyObject*)values[0]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("script_srcs_contain", 1, 1, 1, __pyx_nargs); __PYX_ERR(3, 868, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.parser.Node.script_srcs_contain", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_queries), (&PyTuple_Type), 1, "queries", 1))) __PYX_ERR(3, 868, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6parser_4Node_42script_srcs_contain(((struct __pyx_obj_10selectolax_6parser_Node *)__pyx_v_self), __pyx_v_queries); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_4Node_42script_srcs_contain(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self, PyObject *__pyx_v_queries) { + PyObject *__pyx_v_nodes = NULL; + PyObject *__pyx_v_src_nodes = NULL; + PyObject *__pyx_v_node = NULL; + PyObject *__pyx_v_node_src = NULL; + PyObject *__pyx_v_text = NULL; + PyObject *__pyx_v_query = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + Py_ssize_t __pyx_t_4; + PyObject *(*__pyx_t_5)(PyObject *); + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + size_t __pyx_t_8; + int __pyx_t_9; + Py_ssize_t __pyx_t_10; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("script_srcs_contain", 0); + + /* "selectolax/modest/node.pxi":878 + * + * """ + * if self.parser.cached_script_srcs is None: # <<<<<<<<<<<<<< + * nodes = find_nodes(self.parser, self.node, 'script') + * src_nodes = [] +*/ + __pyx_t_1 = (__pyx_v_self->parser->cached_script_srcs == Py_None); + if (__pyx_t_1) { + + /* "selectolax/modest/node.pxi":879 + * """ + * if self.parser.cached_script_srcs is None: + * nodes = find_nodes(self.parser, self.node, 'script') # <<<<<<<<<<<<<< + * src_nodes = [] + * for node in nodes: +*/ + __pyx_t_2 = ((PyObject *)__pyx_v_self->parser); + __Pyx_INCREF(__pyx_t_2); + __pyx_t_3 = __pyx_f_10selectolax_6parser_find_nodes(((struct __pyx_obj_10selectolax_6parser_HTMLParser *)__pyx_t_2), __pyx_v_self->node, __pyx_mstate_global->__pyx_n_u_script); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 879, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_v_nodes = __pyx_t_3; + __pyx_t_3 = 0; + + /* "selectolax/modest/node.pxi":880 + * if self.parser.cached_script_srcs is None: + * nodes = find_nodes(self.parser, self.node, 'script') + * src_nodes = [] # <<<<<<<<<<<<<< + * for node in nodes: + * node_src = node.attrs.get('src') +*/ + __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 880, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_v_src_nodes = ((PyObject*)__pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/modest/node.pxi":881 + * nodes = find_nodes(self.parser, self.node, 'script') + * src_nodes = [] + * for node in nodes: # <<<<<<<<<<<<<< + * node_src = node.attrs.get('src') + * if node_src: +*/ + if (likely(PyList_CheckExact(__pyx_v_nodes)) || PyTuple_CheckExact(__pyx_v_nodes)) { + __pyx_t_3 = __pyx_v_nodes; __Pyx_INCREF(__pyx_t_3); + __pyx_t_4 = 0; + __pyx_t_5 = NULL; + } else { + __pyx_t_4 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_nodes); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 881, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_5 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 881, __pyx_L1_error) + } + for (;;) { + if (likely(!__pyx_t_5)) { + if (likely(PyList_CheckExact(__pyx_t_3))) { + { + Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_3); + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely((__pyx_temp < 0))) __PYX_ERR(3, 881, __pyx_L1_error) + #endif + if (__pyx_t_4 >= __pyx_temp) break; + } + __pyx_t_2 = __Pyx_PyList_GetItemRefFast(__pyx_t_3, __pyx_t_4, __Pyx_ReferenceSharing_OwnStrongReference); + ++__pyx_t_4; + } else { + { + Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_3); + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely((__pyx_temp < 0))) __PYX_ERR(3, 881, __pyx_L1_error) + #endif + if (__pyx_t_4 >= __pyx_temp) break; + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_2 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_4)); + #else + __pyx_t_2 = __Pyx_PySequence_ITEM(__pyx_t_3, __pyx_t_4); + #endif + ++__pyx_t_4; + } + if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 881, __pyx_L1_error) + } else { + __pyx_t_2 = __pyx_t_5(__pyx_t_3); + if (unlikely(!__pyx_t_2)) { + PyObject* exc_type = PyErr_Occurred(); + if (exc_type) { + if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(3, 881, __pyx_L1_error) + PyErr_Clear(); + } + break; + } + } + __Pyx_GOTREF(__pyx_t_2); + __Pyx_XDECREF_SET(__pyx_v_node, __pyx_t_2); + __pyx_t_2 = 0; + + /* "selectolax/modest/node.pxi":882 + * src_nodes = [] + * for node in nodes: + * node_src = node.attrs.get('src') # <<<<<<<<<<<<<< + * if node_src: + * src_nodes.append(node_src) +*/ + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_node, __pyx_mstate_global->__pyx_n_u_attrs); if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 882, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_6 = __pyx_t_7; + __Pyx_INCREF(__pyx_t_6); + __pyx_t_8 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_mstate_global->__pyx_n_u_src}; + __pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_get, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 882, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + } + __Pyx_XDECREF_SET(__pyx_v_node_src, __pyx_t_2); + __pyx_t_2 = 0; + + /* "selectolax/modest/node.pxi":883 + * for node in nodes: + * node_src = node.attrs.get('src') + * if node_src: # <<<<<<<<<<<<<< + * src_nodes.append(node_src) + * self.parser.cached_script_srcs = src_nodes +*/ + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_node_src); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(3, 883, __pyx_L1_error) + if (__pyx_t_1) { + + /* "selectolax/modest/node.pxi":884 + * node_src = node.attrs.get('src') + * if node_src: + * src_nodes.append(node_src) # <<<<<<<<<<<<<< + * self.parser.cached_script_srcs = src_nodes + * +*/ + __pyx_t_9 = __Pyx_PyList_Append(__pyx_v_src_nodes, __pyx_v_node_src); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(3, 884, __pyx_L1_error) + + /* "selectolax/modest/node.pxi":883 + * for node in nodes: + * node_src = node.attrs.get('src') + * if node_src: # <<<<<<<<<<<<<< + * src_nodes.append(node_src) + * self.parser.cached_script_srcs = src_nodes +*/ + } + + /* "selectolax/modest/node.pxi":881 + * nodes = find_nodes(self.parser, self.node, 'script') + * src_nodes = [] + * for node in nodes: # <<<<<<<<<<<<<< + * node_src = node.attrs.get('src') + * if node_src: +*/ + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "selectolax/modest/node.pxi":885 + * if node_src: + * src_nodes.append(node_src) + * self.parser.cached_script_srcs = src_nodes # <<<<<<<<<<<<<< + * + * for text in self.parser.cached_script_srcs: +*/ + __Pyx_INCREF(__pyx_v_src_nodes); + __Pyx_GIVEREF(__pyx_v_src_nodes); + __Pyx_GOTREF(__pyx_v_self->parser->cached_script_srcs); + __Pyx_DECREF(__pyx_v_self->parser->cached_script_srcs); + __pyx_v_self->parser->cached_script_srcs = __pyx_v_src_nodes; + + /* "selectolax/modest/node.pxi":878 + * + * """ + * if self.parser.cached_script_srcs is None: # <<<<<<<<<<<<<< + * nodes = find_nodes(self.parser, self.node, 'script') + * src_nodes = [] +*/ + } + + /* "selectolax/modest/node.pxi":887 + * self.parser.cached_script_srcs = src_nodes + * + * for text in self.parser.cached_script_srcs: # <<<<<<<<<<<<<< + * for query in queries: + * if query in text: +*/ + if (likely(PyList_CheckExact(__pyx_v_self->parser->cached_script_srcs)) || PyTuple_CheckExact(__pyx_v_self->parser->cached_script_srcs)) { + __pyx_t_3 = __pyx_v_self->parser->cached_script_srcs; __Pyx_INCREF(__pyx_t_3); + __pyx_t_4 = 0; + __pyx_t_5 = NULL; + } else { + __pyx_t_4 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_self->parser->cached_script_srcs); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 887, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_5 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 887, __pyx_L1_error) + } + for (;;) { + if (likely(!__pyx_t_5)) { + if (likely(PyList_CheckExact(__pyx_t_3))) { + { + Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_3); + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely((__pyx_temp < 0))) __PYX_ERR(3, 887, __pyx_L1_error) + #endif + if (__pyx_t_4 >= __pyx_temp) break; + } + __pyx_t_2 = __Pyx_PyList_GetItemRefFast(__pyx_t_3, __pyx_t_4, __Pyx_ReferenceSharing_OwnStrongReference); + ++__pyx_t_4; + } else { + { + Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_3); + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely((__pyx_temp < 0))) __PYX_ERR(3, 887, __pyx_L1_error) + #endif + if (__pyx_t_4 >= __pyx_temp) break; + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_2 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_4)); + #else + __pyx_t_2 = __Pyx_PySequence_ITEM(__pyx_t_3, __pyx_t_4); + #endif + ++__pyx_t_4; + } + if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 887, __pyx_L1_error) + } else { + __pyx_t_2 = __pyx_t_5(__pyx_t_3); + if (unlikely(!__pyx_t_2)) { + PyObject* exc_type = PyErr_Occurred(); + if (exc_type) { + if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(3, 887, __pyx_L1_error) + PyErr_Clear(); + } + break; + } + } + __Pyx_GOTREF(__pyx_t_2); + __Pyx_XDECREF_SET(__pyx_v_text, __pyx_t_2); + __pyx_t_2 = 0; + + /* "selectolax/modest/node.pxi":888 + * + * for text in self.parser.cached_script_srcs: + * for query in queries: # <<<<<<<<<<<<<< + * if query in text: + * return True +*/ + if (unlikely(__pyx_v_queries == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); + __PYX_ERR(3, 888, __pyx_L1_error) + } + __pyx_t_2 = __pyx_v_queries; __Pyx_INCREF(__pyx_t_2); + __pyx_t_10 = 0; + for (;;) { + { + Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_2); + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely((__pyx_temp < 0))) __PYX_ERR(3, 888, __pyx_L1_error) + #endif + if (__pyx_t_10 >= __pyx_temp) break; + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_7 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_10)); + #else + __pyx_t_7 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_10); + #endif + ++__pyx_t_10; + if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 888, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_XDECREF_SET(__pyx_v_query, __pyx_t_7); + __pyx_t_7 = 0; + + /* "selectolax/modest/node.pxi":889 + * for text in self.parser.cached_script_srcs: + * for query in queries: + * if query in text: # <<<<<<<<<<<<<< + * return True + * return False +*/ + __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_v_query, __pyx_v_text, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(3, 889, __pyx_L1_error) + if (__pyx_t_1) { + + /* "selectolax/modest/node.pxi":890 + * for query in queries: + * if query in text: + * return True # <<<<<<<<<<<<<< + * return False + * +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(Py_True); + __pyx_r = Py_True; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + goto __pyx_L0; + + /* "selectolax/modest/node.pxi":889 + * for text in self.parser.cached_script_srcs: + * for query in queries: + * if query in text: # <<<<<<<<<<<<<< + * return True + * return False +*/ + } + + /* "selectolax/modest/node.pxi":888 + * + * for text in self.parser.cached_script_srcs: + * for query in queries: # <<<<<<<<<<<<<< + * if query in text: + * return True +*/ + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "selectolax/modest/node.pxi":887 + * self.parser.cached_script_srcs = src_nodes + * + * for text in self.parser.cached_script_srcs: # <<<<<<<<<<<<<< + * for query in queries: + * if query in text: +*/ + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "selectolax/modest/node.pxi":891 + * if query in text: + * return True + * return False # <<<<<<<<<<<<<< + * + * def __repr__(self): +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(Py_False); + __pyx_r = Py_False; + goto __pyx_L0; + + /* "selectolax/modest/node.pxi":868 + * return False + * + * def script_srcs_contain(self, tuple queries): # <<<<<<<<<<<<<< + * """Returns True if any of the script SRCs attributes contain on of the specified text. + * +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_AddTraceback("selectolax.parser.Node.script_srcs_contain", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_nodes); + __Pyx_XDECREF(__pyx_v_src_nodes); + __Pyx_XDECREF(__pyx_v_node); + __Pyx_XDECREF(__pyx_v_node_src); + __Pyx_XDECREF(__pyx_v_text); + __Pyx_XDECREF(__pyx_v_query); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/modest/node.pxi":893 + * return False + * + * def __repr__(self): # <<<<<<<<<<<<<< + * return '' % self.tag + * +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_4Node_45__repr__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_10selectolax_6parser_4Node_45__repr__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6parser_4Node_44__repr__(((struct __pyx_obj_10selectolax_6parser_Node *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_4Node_44__repr__(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__repr__", 0); + + /* "selectolax/modest/node.pxi":894 + * + * def __repr__(self): + * return '' % self.tag # <<<<<<<<<<<<<< + * + * def __eq__(self, other): +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_tag); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 894, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyUnicode_FormatSafe(__pyx_mstate_global->__pyx_kp_u_Node_s, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 894, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; + + /* "selectolax/modest/node.pxi":893 + * return False + * + * def __repr__(self): # <<<<<<<<<<<<<< + * return '' % self.tag + * +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("selectolax.parser.Node.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/modest/node.pxi":896 + * return '' % self.tag + * + * def __eq__(self, other): # <<<<<<<<<<<<<< + * if isinstance(other, str): + * return self.html == other +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_4Node_47__eq__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/ +static PyObject *__pyx_pw_10selectolax_6parser_4Node_47__eq__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__eq__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6parser_4Node_46__eq__(((struct __pyx_obj_10selectolax_6parser_Node *)__pyx_v_self), ((PyObject *)__pyx_v_other)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_4Node_46__eq__(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self, PyObject *__pyx_v_other) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + int __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__eq__", 0); + + /* "selectolax/modest/node.pxi":897 + * + * def __eq__(self, other): + * if isinstance(other, str): # <<<<<<<<<<<<<< + * return self.html == other + * if not isinstance(other, Node): +*/ + __pyx_t_1 = PyUnicode_Check(__pyx_v_other); + if (__pyx_t_1) { + + /* "selectolax/modest/node.pxi":898 + * def __eq__(self, other): + * if isinstance(other, str): + * return self.html == other # <<<<<<<<<<<<<< + * if not isinstance(other, Node): + * return False +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_html); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 898, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = PyObject_RichCompare(__pyx_t_2, __pyx_v_other, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 898, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_r = __pyx_t_3; + __pyx_t_3 = 0; + goto __pyx_L0; + + /* "selectolax/modest/node.pxi":897 + * + * def __eq__(self, other): + * if isinstance(other, str): # <<<<<<<<<<<<<< + * return self.html == other + * if not isinstance(other, Node): +*/ + } + + /* "selectolax/modest/node.pxi":899 + * if isinstance(other, str): + * return self.html == other + * if not isinstance(other, Node): # <<<<<<<<<<<<<< + * return False + * return self.html == other.html +*/ + __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_other, __pyx_mstate_global->__pyx_ptype_10selectolax_6parser_Node); + __pyx_t_4 = (!__pyx_t_1); + if (__pyx_t_4) { + + /* "selectolax/modest/node.pxi":900 + * return self.html == other + * if not isinstance(other, Node): + * return False # <<<<<<<<<<<<<< + * return self.html == other.html + * +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(Py_False); + __pyx_r = Py_False; + goto __pyx_L0; + + /* "selectolax/modest/node.pxi":899 + * if isinstance(other, str): + * return self.html == other + * if not isinstance(other, Node): # <<<<<<<<<<<<<< + * return False + * return self.html == other.html +*/ + } + + /* "selectolax/modest/node.pxi":901 + * if not isinstance(other, Node): + * return False + * return self.html == other.html # <<<<<<<<<<<<<< + * + * @property +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_html); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 901, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_other, __pyx_mstate_global->__pyx_n_u_html); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 901, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_5 = PyObject_RichCompare(__pyx_t_3, __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 901, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_r = __pyx_t_5; + __pyx_t_5 = 0; + goto __pyx_L0; + + /* "selectolax/modest/node.pxi":896 + * return '' % self.tag + * + * def __eq__(self, other): # <<<<<<<<<<<<<< + * if isinstance(other, str): + * return self.html == other +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_AddTraceback("selectolax.parser.Node.__eq__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/modest/node.pxi":903 + * return self.html == other.html + * + * @property # <<<<<<<<<<<<<< + * def text_content(self): + * """Returns the text of the node if it is a text node. +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_4Node_12text_content_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_10selectolax_6parser_4Node_12text_content_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6parser_4Node_12text_content___get__(((struct __pyx_obj_10selectolax_6parser_Node *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_4Node_12text_content___get__(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self) { + PyObject *__pyx_v_text = NULL; + char const *__pyx_v_c_text; + CYTHON_UNUSED myhtml_tree_node_t *__pyx_v_node; + PyObject *__pyx_v_node_text = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + myhtml_tree_node_t *__pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + size_t __pyx_t_6; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + + /* "selectolax/modest/node.pxi":914 + * text : str or None. + * """ + * text = "" # <<<<<<<<<<<<<< + * cdef const char* c_text + * cdef myhtml_tree_node_t *node = self.node.child +*/ + __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u_); + __pyx_v_text = __pyx_mstate_global->__pyx_kp_u_; + + /* "selectolax/modest/node.pxi":916 + * text = "" + * cdef const char* c_text + * cdef myhtml_tree_node_t *node = self.node.child # <<<<<<<<<<<<<< + * + * if self.node.tag_id == MyHTML_TAG__TEXT: +*/ + __pyx_t_1 = __pyx_v_self->node->child; + __pyx_v_node = __pyx_t_1; + + /* "selectolax/modest/node.pxi":918 + * cdef myhtml_tree_node_t *node = self.node.child + * + * if self.node.tag_id == MyHTML_TAG__TEXT: # <<<<<<<<<<<<<< + * c_text = myhtml_node_text(self.node, NULL) + * if c_text != NULL: +*/ + __pyx_t_2 = (__pyx_v_self->node->tag_id == MyHTML_TAG__TEXT); + if (__pyx_t_2) { + + /* "selectolax/modest/node.pxi":919 + * + * if self.node.tag_id == MyHTML_TAG__TEXT: + * c_text = myhtml_node_text(self.node, NULL) # <<<<<<<<<<<<<< + * if c_text != NULL: + * node_text = c_text.decode(_ENCODING, self.parser.decode_errors) +*/ + __pyx_v_c_text = myhtml_node_text(__pyx_v_self->node, NULL); + + /* "selectolax/modest/node.pxi":920 + * if self.node.tag_id == MyHTML_TAG__TEXT: + * c_text = myhtml_node_text(self.node, NULL) + * if c_text != NULL: # <<<<<<<<<<<<<< + * node_text = c_text.decode(_ENCODING, self.parser.decode_errors) + * return append_text(text, node_text) +*/ + __pyx_t_2 = (__pyx_v_c_text != NULL); + if (__pyx_t_2) { + + /* "selectolax/modest/node.pxi":921 + * c_text = myhtml_node_text(self.node, NULL) + * if c_text != NULL: + * node_text = c_text.decode(_ENCODING, self.parser.decode_errors) # <<<<<<<<<<<<<< + * return append_text(text, node_text) + * return None +*/ + __pyx_t_5 = __Pyx_PyBytes_FromString(__pyx_v_c_text); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 921, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_4 = __pyx_t_5; + __Pyx_INCREF(__pyx_t_4); + __pyx_t_6 = 0; + { + PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_UTF_8, __pyx_v_self->parser->decode_errors}; + __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_decode, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 921, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __pyx_v_node_text = __pyx_t_3; + __pyx_t_3 = 0; + + /* "selectolax/modest/node.pxi":922 + * if c_text != NULL: + * node_text = c_text.decode(_ENCODING, self.parser.decode_errors) + * return append_text(text, node_text) # <<<<<<<<<<<<<< + * return None + * +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_3 = __pyx_v_node_text; + __Pyx_INCREF(__pyx_t_3); + if (!(likely(PyUnicode_CheckExact(__pyx_t_3)) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_3))) __PYX_ERR(3, 922, __pyx_L1_error) + __pyx_t_5 = __pyx_f_10selectolax_6parser_append_text(__pyx_v_text, ((PyObject*)__pyx_t_3), NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 922, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_r = __pyx_t_5; + __pyx_t_5 = 0; + goto __pyx_L0; + + /* "selectolax/modest/node.pxi":920 + * if self.node.tag_id == MyHTML_TAG__TEXT: + * c_text = myhtml_node_text(self.node, NULL) + * if c_text != NULL: # <<<<<<<<<<<<<< + * node_text = c_text.decode(_ENCODING, self.parser.decode_errors) + * return append_text(text, node_text) +*/ + } + + /* "selectolax/modest/node.pxi":918 + * cdef myhtml_tree_node_t *node = self.node.child + * + * if self.node.tag_id == MyHTML_TAG__TEXT: # <<<<<<<<<<<<<< + * c_text = myhtml_node_text(self.node, NULL) + * if c_text != NULL: +*/ + } + + /* "selectolax/modest/node.pxi":923 + * node_text = c_text.decode(_ENCODING, self.parser.decode_errors) + * return append_text(text, node_text) + * return None # <<<<<<<<<<<<<< + * + * def merge_text_nodes(self): +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + + /* "selectolax/modest/node.pxi":903 + * return self.html == other.html + * + * @property # <<<<<<<<<<<<<< + * def text_content(self): + * """Returns the text of the node if it is a text node. +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_AddTraceback("selectolax.parser.Node.text_content.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_text); + __Pyx_XDECREF(__pyx_v_node_text); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/modest/node.pxi":925 + * return None + * + * def merge_text_nodes(self): # <<<<<<<<<<<<<< + * """Iterates over all text nodes and merges all text nodes that are close to each other. + * +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_4Node_49merge_text_nodes(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6parser_4Node_48merge_text_nodes, "Node.merge_text_nodes(self)\n\nIterates over all text nodes and merges all text nodes that are close to each other.\n\nThis is useful for text extraction.\nUse it when you need to strip HTML tags and merge \"dangling\" text.\n\nExamples\n--------\n\n>>> tree = HTMLParser(\"

John

Doe

\")\n>>> node = tree.css_first('div')\n>>> tree.unwrap_tags([\"strong\"])\n>>> tree.text(deep=True, separator=\" \", strip=True)\n\"J ohn Doe\" # Text extraction produces an extra space because the strong tag was removed.\n>>> node.merge_text_nodes()\n>>> tree.text(deep=True, separator=\" \", strip=True)\n\"John Doe\""); +static PyMethodDef __pyx_mdef_10selectolax_6parser_4Node_49merge_text_nodes = {"merge_text_nodes", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_4Node_49merge_text_nodes, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_4Node_48merge_text_nodes}; +static PyObject *__pyx_pw_10selectolax_6parser_4Node_49merge_text_nodes(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("merge_text_nodes (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("merge_text_nodes", 1, 0, 0, __pyx_nargs); return NULL; } + const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len < 0)) return NULL; + if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("merge_text_nodes", __pyx_kwds); return NULL;} + __pyx_r = __pyx_pf_10selectolax_6parser_4Node_48merge_text_nodes(((struct __pyx_obj_10selectolax_6parser_Node *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_4Node_48merge_text_nodes(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self) { + struct __pyx_obj_10selectolax_6parser_Stack *__pyx_v_stack = 0; + myhtml_tree_node_t *__pyx_v_current_node; + char const *__pyx_v_left_text; + char const *__pyx_v_right_text; + char *__pyx_v_final_text; + size_t __pyx_v_left_length; + size_t __pyx_v_right_length; + size_t __pyx_v_final_length; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + size_t __pyx_t_3; + int __pyx_t_4; + int __pyx_t_5; + int __pyx_t_6; + myhtml_tree_node_t *__pyx_t_7; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("merge_text_nodes", 0); + + /* "selectolax/modest/node.pxi":943 + * "John Doe" + * """ + * cdef Stack stack = Stack(_STACK_SIZE) # <<<<<<<<<<<<<< + * cdef myhtml_tree_node_t * current_node = NULL + * cdef Node next_node +*/ + __pyx_t_2 = NULL; + __pyx_t_3 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_int_100}; + __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_10selectolax_6parser_Stack, __pyx_callargs+__pyx_t_3, (2-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 943, __pyx_L1_error) + __Pyx_GOTREF((PyObject *)__pyx_t_1); + } + __pyx_v_stack = ((struct __pyx_obj_10selectolax_6parser_Stack *)__pyx_t_1); + __pyx_t_1 = 0; + + /* "selectolax/modest/node.pxi":944 + * """ + * cdef Stack stack = Stack(_STACK_SIZE) + * cdef myhtml_tree_node_t * current_node = NULL # <<<<<<<<<<<<<< + * cdef Node next_node + * cdef const char* left_text +*/ + __pyx_v_current_node = NULL; + + /* "selectolax/modest/node.pxi":951 + * cdef size_t left_length, right_length, final_length + * + * stack.push(self.node) # <<<<<<<<<<<<<< + * + * while not stack.is_empty(): +*/ + __pyx_t_4 = __pyx_f_10selectolax_6parser_5Stack_push(__pyx_v_stack, __pyx_v_self->node); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(3, 951, __pyx_L1_error) + + /* "selectolax/modest/node.pxi":953 + * stack.push(self.node) + * + * while not stack.is_empty(): # <<<<<<<<<<<<<< + * current_node = stack.pop() + * +*/ + while (1) { + __pyx_t_5 = __pyx_f_10selectolax_6parser_5Stack_is_empty(__pyx_v_stack); if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 953, __pyx_L1_error) + __pyx_t_6 = (!__pyx_t_5); + if (!__pyx_t_6) break; + + /* "selectolax/modest/node.pxi":954 + * + * while not stack.is_empty(): + * current_node = stack.pop() # <<<<<<<<<<<<<< + * + * if (current_node.tag_id == MyHTML_TAG__TEXT and current_node.prev and +*/ + __pyx_t_7 = __pyx_f_10selectolax_6parser_5Stack_pop(__pyx_v_stack); if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 954, __pyx_L1_error) + __pyx_v_current_node = __pyx_t_7; + + /* "selectolax/modest/node.pxi":956 + * current_node = stack.pop() + * + * if (current_node.tag_id == MyHTML_TAG__TEXT and current_node.prev and # <<<<<<<<<<<<<< + * current_node.prev.tag_id == MyHTML_TAG__TEXT): + * left_text = myhtml_node_text(current_node.prev, &left_length) +*/ + __pyx_t_5 = (__pyx_v_current_node->tag_id == MyHTML_TAG__TEXT); + if (__pyx_t_5) { + } else { + __pyx_t_6 = __pyx_t_5; + goto __pyx_L6_bool_binop_done; + } + __pyx_t_5 = (__pyx_v_current_node->prev != 0); + if (__pyx_t_5) { + } else { + __pyx_t_6 = __pyx_t_5; + goto __pyx_L6_bool_binop_done; + } + + /* "selectolax/modest/node.pxi":957 + * + * if (current_node.tag_id == MyHTML_TAG__TEXT and current_node.prev and + * current_node.prev.tag_id == MyHTML_TAG__TEXT): # <<<<<<<<<<<<<< + * left_text = myhtml_node_text(current_node.prev, &left_length) + * right_text = myhtml_node_text(current_node, &right_length) +*/ + __pyx_t_5 = (__pyx_v_current_node->prev->tag_id == MyHTML_TAG__TEXT); + __pyx_t_6 = __pyx_t_5; + __pyx_L6_bool_binop_done:; + + /* "selectolax/modest/node.pxi":956 + * current_node = stack.pop() + * + * if (current_node.tag_id == MyHTML_TAG__TEXT and current_node.prev and # <<<<<<<<<<<<<< + * current_node.prev.tag_id == MyHTML_TAG__TEXT): + * left_text = myhtml_node_text(current_node.prev, &left_length) +*/ + if (__pyx_t_6) { + + /* "selectolax/modest/node.pxi":958 + * if (current_node.tag_id == MyHTML_TAG__TEXT and current_node.prev and + * current_node.prev.tag_id == MyHTML_TAG__TEXT): + * left_text = myhtml_node_text(current_node.prev, &left_length) # <<<<<<<<<<<<<< + * right_text = myhtml_node_text(current_node, &right_length) + * if left_text and right_text: +*/ + __pyx_v_left_text = myhtml_node_text(__pyx_v_current_node->prev, (&__pyx_v_left_length)); + + /* "selectolax/modest/node.pxi":959 + * current_node.prev.tag_id == MyHTML_TAG__TEXT): + * left_text = myhtml_node_text(current_node.prev, &left_length) + * right_text = myhtml_node_text(current_node, &right_length) # <<<<<<<<<<<<<< + * if left_text and right_text: + * final_length = left_length + right_length +*/ + __pyx_v_right_text = myhtml_node_text(__pyx_v_current_node, (&__pyx_v_right_length)); + + /* "selectolax/modest/node.pxi":960 + * left_text = myhtml_node_text(current_node.prev, &left_length) + * right_text = myhtml_node_text(current_node, &right_length) + * if left_text and right_text: # <<<<<<<<<<<<<< + * final_length = left_length + right_length + * final_text = malloc(final_length + 1) +*/ + __pyx_t_5 = (__pyx_v_left_text != 0); + if (__pyx_t_5) { + } else { + __pyx_t_6 = __pyx_t_5; + goto __pyx_L10_bool_binop_done; + } + __pyx_t_5 = (__pyx_v_right_text != 0); + __pyx_t_6 = __pyx_t_5; + __pyx_L10_bool_binop_done:; + if (__pyx_t_6) { + + /* "selectolax/modest/node.pxi":961 + * right_text = myhtml_node_text(current_node, &right_length) + * if left_text and right_text: + * final_length = left_length + right_length # <<<<<<<<<<<<<< + * final_text = malloc(final_length + 1) + * if final_text == NULL: +*/ + __pyx_v_final_length = (__pyx_v_left_length + __pyx_v_right_length); + + /* "selectolax/modest/node.pxi":962 + * if left_text and right_text: + * final_length = left_length + right_length + * final_text = malloc(final_length + 1) # <<<<<<<<<<<<<< + * if final_text == NULL: + * raise MemoryError("Can't allocate memory for a new node.") +*/ + __pyx_v_final_text = ((char *)malloc((__pyx_v_final_length + 1))); + + /* "selectolax/modest/node.pxi":963 + * final_length = left_length + right_length + * final_text = malloc(final_length + 1) + * if final_text == NULL: # <<<<<<<<<<<<<< + * raise MemoryError("Can't allocate memory for a new node.") + * memcpy(final_text, left_text, left_length) +*/ + __pyx_t_6 = (__pyx_v_final_text == NULL); + if (unlikely(__pyx_t_6)) { + + /* "selectolax/modest/node.pxi":964 + * final_text = malloc(final_length + 1) + * if final_text == NULL: + * raise MemoryError("Can't allocate memory for a new node.") # <<<<<<<<<<<<<< + * memcpy(final_text, left_text, left_length) + * memcpy(final_text + left_length, right_text, right_length + 1) +*/ + __pyx_t_2 = NULL; + __pyx_t_3 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_Can_t_allocate_memory_for_a_new}; + __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_MemoryError)), __pyx_callargs+__pyx_t_3, (2-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 964, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __Pyx_Raise(__pyx_t_1, 0, 0, 0); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __PYX_ERR(3, 964, __pyx_L1_error) + + /* "selectolax/modest/node.pxi":963 + * final_length = left_length + right_length + * final_text = malloc(final_length + 1) + * if final_text == NULL: # <<<<<<<<<<<<<< + * raise MemoryError("Can't allocate memory for a new node.") + * memcpy(final_text, left_text, left_length) +*/ + } + + /* "selectolax/modest/node.pxi":965 + * if final_text == NULL: + * raise MemoryError("Can't allocate memory for a new node.") + * memcpy(final_text, left_text, left_length) # <<<<<<<<<<<<<< + * memcpy(final_text + left_length, right_text, right_length + 1) + * myhtml_node_text_set(current_node, final_text, final_length, MyENCODING_UTF_8) +*/ + (void)(memcpy(__pyx_v_final_text, __pyx_v_left_text, __pyx_v_left_length)); + + /* "selectolax/modest/node.pxi":966 + * raise MemoryError("Can't allocate memory for a new node.") + * memcpy(final_text, left_text, left_length) + * memcpy(final_text + left_length, right_text, right_length + 1) # <<<<<<<<<<<<<< + * myhtml_node_text_set(current_node, final_text, final_length, MyENCODING_UTF_8) + * myhtml_node_delete(current_node.prev) +*/ + (void)(memcpy((__pyx_v_final_text + __pyx_v_left_length), __pyx_v_right_text, (__pyx_v_right_length + 1))); + + /* "selectolax/modest/node.pxi":967 + * memcpy(final_text, left_text, left_length) + * memcpy(final_text + left_length, right_text, right_length + 1) + * myhtml_node_text_set(current_node, final_text, final_length, MyENCODING_UTF_8) # <<<<<<<<<<<<<< + * myhtml_node_delete(current_node.prev) + * free(final_text) +*/ + (void)(myhtml_node_text_set(__pyx_v_current_node, ((char const *)__pyx_v_final_text), __pyx_v_final_length, MyENCODING_UTF_8)); + + /* "selectolax/modest/node.pxi":968 + * memcpy(final_text + left_length, right_text, right_length + 1) + * myhtml_node_text_set(current_node, final_text, final_length, MyENCODING_UTF_8) + * myhtml_node_delete(current_node.prev) # <<<<<<<<<<<<<< + * free(final_text) + * +*/ + myhtml_node_delete(__pyx_v_current_node->prev); + + /* "selectolax/modest/node.pxi":969 + * myhtml_node_text_set(current_node, final_text, final_length, MyENCODING_UTF_8) + * myhtml_node_delete(current_node.prev) + * free(final_text) # <<<<<<<<<<<<<< + * + * if current_node.next is not NULL: +*/ + free(__pyx_v_final_text); + + /* "selectolax/modest/node.pxi":960 + * left_text = myhtml_node_text(current_node.prev, &left_length) + * right_text = myhtml_node_text(current_node, &right_length) + * if left_text and right_text: # <<<<<<<<<<<<<< + * final_length = left_length + right_length + * final_text = malloc(final_length + 1) +*/ + } + + /* "selectolax/modest/node.pxi":956 + * current_node = stack.pop() + * + * if (current_node.tag_id == MyHTML_TAG__TEXT and current_node.prev and # <<<<<<<<<<<<<< + * current_node.prev.tag_id == MyHTML_TAG__TEXT): + * left_text = myhtml_node_text(current_node.prev, &left_length) +*/ + } + + /* "selectolax/modest/node.pxi":971 + * free(final_text) + * + * if current_node.next is not NULL: # <<<<<<<<<<<<<< + * stack.push(current_node.next) + * +*/ + __pyx_t_6 = (__pyx_v_current_node->next != NULL); + if (__pyx_t_6) { + + /* "selectolax/modest/node.pxi":972 + * + * if current_node.next is not NULL: + * stack.push(current_node.next) # <<<<<<<<<<<<<< + * + * if current_node.child is not NULL: +*/ + __pyx_t_4 = __pyx_f_10selectolax_6parser_5Stack_push(__pyx_v_stack, __pyx_v_current_node->next); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(3, 972, __pyx_L1_error) + + /* "selectolax/modest/node.pxi":971 + * free(final_text) + * + * if current_node.next is not NULL: # <<<<<<<<<<<<<< + * stack.push(current_node.next) + * +*/ + } + + /* "selectolax/modest/node.pxi":974 + * stack.push(current_node.next) + * + * if current_node.child is not NULL: # <<<<<<<<<<<<<< + * stack.push(current_node.child) + * +*/ + __pyx_t_6 = (__pyx_v_current_node->child != NULL); + if (__pyx_t_6) { + + /* "selectolax/modest/node.pxi":975 + * + * if current_node.child is not NULL: + * stack.push(current_node.child) # <<<<<<<<<<<<<< + * + * cdef inline str append_text(str text, str node_text, str separator='', bint strip=False): +*/ + __pyx_t_4 = __pyx_f_10selectolax_6parser_5Stack_push(__pyx_v_stack, __pyx_v_current_node->child); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(3, 975, __pyx_L1_error) + + /* "selectolax/modest/node.pxi":974 + * stack.push(current_node.next) + * + * if current_node.child is not NULL: # <<<<<<<<<<<<<< + * stack.push(current_node.child) + * +*/ + } + } + + /* "selectolax/modest/node.pxi":925 + * return None + * + * def merge_text_nodes(self): # <<<<<<<<<<<<<< + * """Iterates over all text nodes and merges all text nodes that are close to each other. + * +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("selectolax.parser.Node.merge_text_nodes", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF((PyObject *)__pyx_v_stack); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/modest/node.pxi":148 + * """A class that represents HTML node (element).""" + * cdef myhtml_tree_node_t *node + * cdef public HTMLParser parser # <<<<<<<<<<<<<< + * + * @staticmethod +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_4Node_6parser_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_10selectolax_6parser_4Node_6parser_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6parser_4Node_6parser___get__(((struct __pyx_obj_10selectolax_6parser_Node *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_4Node_6parser___get__(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__", 0); + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF((PyObject *)__pyx_v_self->parser); + __pyx_r = ((PyObject *)__pyx_v_self->parser); + goto __pyx_L0; + + /* function exit code */ + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_10selectolax_6parser_4Node_6parser_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_10selectolax_6parser_4Node_6parser_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6parser_4Node_6parser_2__set__(((struct __pyx_obj_10selectolax_6parser_Node *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_10selectolax_6parser_4Node_6parser_2__set__(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self, PyObject *__pyx_v_value) { + int __pyx_r; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__set__", 0); + __pyx_t_1 = __pyx_v_value; + __Pyx_INCREF(__pyx_t_1); + if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_mstate_global->__pyx_ptype_10selectolax_6parser_HTMLParser))))) __PYX_ERR(3, 148, __pyx_L1_error) + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF((PyObject *)__pyx_v_self->parser); + __Pyx_DECREF((PyObject *)__pyx_v_self->parser); + __pyx_v_self->parser = ((struct __pyx_obj_10selectolax_6parser_HTMLParser *)__pyx_t_1); + __pyx_t_1 = 0; + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("selectolax.parser.Node.parser.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_10selectolax_6parser_4Node_6parser_5__del__(PyObject *__pyx_v_self); /*proto*/ +static int __pyx_pw_10selectolax_6parser_4Node_6parser_5__del__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6parser_4Node_6parser_4__del__(((struct __pyx_obj_10selectolax_6parser_Node *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_10selectolax_6parser_4Node_6parser_4__del__(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__del__", 0); + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + __Pyx_GOTREF((PyObject *)__pyx_v_self->parser); + __Pyx_DECREF((PyObject *)__pyx_v_self->parser); + __pyx_v_self->parser = ((struct __pyx_obj_10selectolax_6parser_HTMLParser *)Py_None); + + /* function exit code */ + __pyx_r = 0; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * raise TypeError, "self.node cannot be converted to a Python object for pickling" + * def __setstate_cython__(self, __pyx_state): +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_4Node_83__reduce_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6parser_4Node_82__reduce_cython__, "Node.__reduce_cython__(self)"); +static PyMethodDef __pyx_mdef_10selectolax_6parser_4Node_83__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_4Node_83__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_4Node_82__reduce_cython__}; +static PyObject *__pyx_pw_10selectolax_6parser_4Node_83__reduce_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL; } + const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len < 0)) return NULL; + if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;} + __pyx_r = __pyx_pf_10selectolax_6parser_4Node_82__reduce_cython__(((struct __pyx_obj_10selectolax_6parser_Node *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_4Node_82__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__reduce_cython__", 0); + + /* "(tree fragment)":2 + * def __reduce_cython__(self): + * raise TypeError, "self.node cannot be converted to a Python object for pickling" # <<<<<<<<<<<<<< + * def __setstate_cython__(self, __pyx_state): + * raise TypeError, "self.node cannot be converted to a Python object for pickling" +*/ + __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), __pyx_mstate_global->__pyx_kp_u_self_node_cannot_be_converted_to, 0, 0); + __PYX_ERR(1, 2, __pyx_L1_error) + + /* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * raise TypeError, "self.node cannot be converted to a Python object for pickling" + * def __setstate_cython__(self, __pyx_state): +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_AddTraceback("selectolax.parser.Node.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":3 + * def __reduce_cython__(self): + * raise TypeError, "self.node cannot be converted to a Python object for pickling" + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * raise TypeError, "self.node cannot be converted to a Python object for pickling" +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_4Node_85__setstate_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6parser_4Node_84__setstate_cython__, "Node.__setstate_cython__(self, __pyx_state)"); +static PyMethodDef __pyx_mdef_10selectolax_6parser_4Node_85__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_4Node_85__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_4Node_84__setstate_cython__}; +static PyObject *__pyx_pw_10selectolax_6parser_4Node_85__setstate_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_state,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 3, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < (0)) __PYX_ERR(1, 3, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 3, __pyx_L3_error) } + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error) + } + __pyx_v___pyx_state = values[0]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.parser.Node.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_10selectolax_6parser_4Node_84__setstate_cython__(((struct __pyx_obj_10selectolax_6parser_Node *)__pyx_v_self), __pyx_v___pyx_state); + + /* function exit code */ + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_4Node_84__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__setstate_cython__", 0); + + /* "(tree fragment)":4 + * raise TypeError, "self.node cannot be converted to a Python object for pickling" + * def __setstate_cython__(self, __pyx_state): + * raise TypeError, "self.node cannot be converted to a Python object for pickling" # <<<<<<<<<<<<<< +*/ + __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), __pyx_mstate_global->__pyx_kp_u_self_node_cannot_be_converted_to, 0, 0); + __PYX_ERR(1, 4, __pyx_L1_error) + + /* "(tree fragment)":3 + * def __reduce_cython__(self): + * raise TypeError, "self.node cannot be converted to a Python object for pickling" + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * raise TypeError, "self.node cannot be converted to a Python object for pickling" +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_AddTraceback("selectolax.parser.Node.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/modest/node.pxi":977 + * stack.push(current_node.child) + * + * cdef inline str append_text(str text, str node_text, str separator='', bint strip=False): # <<<<<<<<<<<<<< + * if strip: + * text += node_text.strip() + separator +*/ + +static CYTHON_INLINE PyObject *__pyx_f_10selectolax_6parser_append_text(PyObject *__pyx_v_text, PyObject *__pyx_v_node_text, struct __pyx_opt_args_10selectolax_6parser_append_text *__pyx_optional_args) { + PyObject *__pyx_v_separator = ((PyObject*)__pyx_mstate_global->__pyx_kp_u_); + int __pyx_v_strip = ((int)0); + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("append_text", 0); + if (__pyx_optional_args) { + if (__pyx_optional_args->__pyx_n > 0) { + __pyx_v_separator = __pyx_optional_args->separator; + if (__pyx_optional_args->__pyx_n > 1) { + __pyx_v_strip = __pyx_optional_args->strip; + } + } + } + __Pyx_INCREF(__pyx_v_text); + + /* "selectolax/modest/node.pxi":978 + * + * cdef inline str append_text(str text, str node_text, str separator='', bint strip=False): + * if strip: # <<<<<<<<<<<<<< + * text += node_text.strip() + separator + * else: +*/ + if (__pyx_v_strip) { + + /* "selectolax/modest/node.pxi":979 + * cdef inline str append_text(str text, str node_text, str separator='', bint strip=False): + * if strip: + * text += node_text.strip() + separator # <<<<<<<<<<<<<< + * else: + * text += node_text + separator +*/ + __pyx_t_1 = __Pyx_CallUnboundCMethod0(&__pyx_mstate_global->__pyx_umethod_PyUnicode_Type__strip, __pyx_v_node_text); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 979, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlaceSafe(__pyx_t_1, __pyx_v_separator); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 979, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlaceSafe(__pyx_v_text, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 979, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF_SET(__pyx_v_text, ((PyObject*)__pyx_t_1)); + __pyx_t_1 = 0; + + /* "selectolax/modest/node.pxi":978 + * + * cdef inline str append_text(str text, str node_text, str separator='', bint strip=False): + * if strip: # <<<<<<<<<<<<<< + * text += node_text.strip() + separator + * else: +*/ + goto __pyx_L3; + } + + /* "selectolax/modest/node.pxi":981 + * text += node_text.strip() + separator + * else: + * text += node_text + separator # <<<<<<<<<<<<<< + * + * return text +*/ + /*else*/ { + __pyx_t_1 = __Pyx_PyUnicode_ConcatSafe(__pyx_v_node_text, __pyx_v_separator); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 981, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlaceSafe(__pyx_v_text, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 981, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF_SET(__pyx_v_text, ((PyObject*)__pyx_t_2)); + __pyx_t_2 = 0; + } + __pyx_L3:; + + /* "selectolax/modest/node.pxi":983 + * text += node_text + separator + * + * return text # <<<<<<<<<<<<<< + * + * +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_text); + __pyx_r = __pyx_v_text; + goto __pyx_L0; + + /* "selectolax/modest/node.pxi":977 + * stack.push(current_node.child) + * + * cdef inline str append_text(str text, str node_text, str separator='', bint strip=False): # <<<<<<<<<<<<<< + * if strip: + * text += node_text.strip() + separator +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("selectolax.parser.append_text", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_text); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/modest/node.pxi":986 + * + * + * cdef inline bytes to_bytes(str_or_Node value): # <<<<<<<<<<<<<< + * cdef bytes bytes_val + * if isinstance(value, unicode): +*/ + +static CYTHON_INLINE PyObject *__pyx_fuse_0__pyx_f_10selectolax_6parser_to_bytes(PyObject *__pyx_v_value) { + PyObject *__pyx_v_bytes_val = 0; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__pyx_fuse_0to_bytes", 0); + + /* "selectolax/modest/node.pxi":988 + * cdef inline bytes to_bytes(str_or_Node value): + * cdef bytes bytes_val + * if isinstance(value, unicode): # <<<<<<<<<<<<<< + * bytes_val = value.encode("utf-8") + * elif isinstance(value, bytes): +*/ + __pyx_t_1 = PyUnicode_Check(__pyx_v_value); + if (__pyx_t_1) { + + /* "selectolax/modest/node.pxi":989 + * cdef bytes bytes_val + * if isinstance(value, unicode): + * bytes_val = value.encode("utf-8") # <<<<<<<<<<<<<< + * elif isinstance(value, bytes): + * bytes_val = value +*/ + if (unlikely(__pyx_v_value == Py_None)) { + PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "encode"); + __PYX_ERR(3, 989, __pyx_L1_error) + } + __pyx_t_2 = PyUnicode_AsUTF8String(__pyx_v_value); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 989, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __pyx_t_2; + __Pyx_INCREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_v_bytes_val = ((PyObject*)__pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/modest/node.pxi":988 + * cdef inline bytes to_bytes(str_or_Node value): + * cdef bytes bytes_val + * if isinstance(value, unicode): # <<<<<<<<<<<<<< + * bytes_val = value.encode("utf-8") + * elif isinstance(value, bytes): +*/ + goto __pyx_L3; + } + + /* "selectolax/modest/node.pxi":990 + * if isinstance(value, unicode): + * bytes_val = value.encode("utf-8") + * elif isinstance(value, bytes): # <<<<<<<<<<<<<< + * bytes_val = value + * return bytes_val +*/ + __pyx_t_1 = PyBytes_Check(__pyx_v_value); + if (__pyx_t_1) { + + /* "selectolax/modest/node.pxi":991 + * bytes_val = value.encode("utf-8") + * elif isinstance(value, bytes): + * bytes_val = value # <<<<<<<<<<<<<< + * return bytes_val +*/ + __pyx_t_3 = __pyx_v_value; + __Pyx_INCREF(__pyx_t_3); + __pyx_v_bytes_val = ((PyObject*)__pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/modest/node.pxi":990 + * if isinstance(value, unicode): + * bytes_val = value.encode("utf-8") + * elif isinstance(value, bytes): # <<<<<<<<<<<<<< + * bytes_val = value + * return bytes_val +*/ + } + __pyx_L3:; + + /* "selectolax/modest/node.pxi":992 + * elif isinstance(value, bytes): + * bytes_val = value + * return bytes_val # <<<<<<<<<<<<<< +*/ + __Pyx_XDECREF(__pyx_r); + if (unlikely(!__pyx_v_bytes_val)) { __Pyx_RaiseUnboundLocalError("bytes_val"); __PYX_ERR(3, 992, __pyx_L1_error) } + __Pyx_INCREF(__pyx_v_bytes_val); + __pyx_r = __pyx_v_bytes_val; + goto __pyx_L0; + + /* "selectolax/modest/node.pxi":986 + * + * + * cdef inline bytes to_bytes(str_or_Node value): # <<<<<<<<<<<<<< + * cdef bytes bytes_val + * if isinstance(value, unicode): +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("selectolax.parser.to_bytes", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_bytes_val); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static CYTHON_INLINE PyObject *__pyx_fuse_1__pyx_f_10selectolax_6parser_to_bytes(PyObject *__pyx_v_value) { + PyObject *__pyx_v_bytes_val = 0; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__pyx_fuse_1to_bytes", 0); + + /* "selectolax/modest/node.pxi":988 + * cdef inline bytes to_bytes(str_or_Node value): + * cdef bytes bytes_val + * if isinstance(value, unicode): # <<<<<<<<<<<<<< + * bytes_val = value.encode("utf-8") + * elif isinstance(value, bytes): +*/ + __pyx_t_1 = PyUnicode_Check(__pyx_v_value); + if (__pyx_t_1) { + + /* "selectolax/modest/node.pxi":989 + * cdef bytes bytes_val + * if isinstance(value, unicode): + * bytes_val = value.encode("utf-8") # <<<<<<<<<<<<<< + * elif isinstance(value, bytes): + * bytes_val = value +*/ + __pyx_t_2 = __Pyx_CallUnboundCMethod1(&__pyx_mstate_global->__pyx_umethod_PyBytes_Type__encode, __pyx_v_value, __pyx_mstate_global->__pyx_kp_u_utf_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 989, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __pyx_t_2; + __Pyx_INCREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_v_bytes_val = ((PyObject*)__pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/modest/node.pxi":988 + * cdef inline bytes to_bytes(str_or_Node value): + * cdef bytes bytes_val + * if isinstance(value, unicode): # <<<<<<<<<<<<<< + * bytes_val = value.encode("utf-8") + * elif isinstance(value, bytes): +*/ + goto __pyx_L3; + } + + /* "selectolax/modest/node.pxi":990 + * if isinstance(value, unicode): + * bytes_val = value.encode("utf-8") + * elif isinstance(value, bytes): # <<<<<<<<<<<<<< + * bytes_val = value + * return bytes_val +*/ + __pyx_t_1 = PyBytes_Check(__pyx_v_value); + if (__pyx_t_1) { + + /* "selectolax/modest/node.pxi":991 + * bytes_val = value.encode("utf-8") + * elif isinstance(value, bytes): + * bytes_val = value # <<<<<<<<<<<<<< + * return bytes_val +*/ + __pyx_t_3 = __pyx_v_value; + __Pyx_INCREF(__pyx_t_3); + __pyx_v_bytes_val = ((PyObject*)__pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/modest/node.pxi":990 + * if isinstance(value, unicode): + * bytes_val = value.encode("utf-8") + * elif isinstance(value, bytes): # <<<<<<<<<<<<<< + * bytes_val = value + * return bytes_val +*/ + } + __pyx_L3:; + + /* "selectolax/modest/node.pxi":992 + * elif isinstance(value, bytes): + * bytes_val = value + * return bytes_val # <<<<<<<<<<<<<< +*/ + __Pyx_XDECREF(__pyx_r); + if (unlikely(!__pyx_v_bytes_val)) { __Pyx_RaiseUnboundLocalError("bytes_val"); __PYX_ERR(3, 992, __pyx_L1_error) } + __Pyx_INCREF(__pyx_v_bytes_val); + __pyx_r = __pyx_v_bytes_val; + goto __pyx_L0; + + /* "selectolax/modest/node.pxi":986 + * + * + * cdef inline bytes to_bytes(str_or_Node value): # <<<<<<<<<<<<<< + * cdef bytes bytes_val + * if isinstance(value, unicode): +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("selectolax.parser.to_bytes", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_bytes_val); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static CYTHON_INLINE PyObject *__pyx_fuse_2__pyx_f_10selectolax_6parser_to_bytes(struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_value) { + PyObject *__pyx_v_bytes_val = 0; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + size_t __pyx_t_4; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__pyx_fuse_2to_bytes", 0); + + /* "selectolax/modest/node.pxi":988 + * cdef inline bytes to_bytes(str_or_Node value): + * cdef bytes bytes_val + * if isinstance(value, unicode): # <<<<<<<<<<<<<< + * bytes_val = value.encode("utf-8") + * elif isinstance(value, bytes): +*/ + __pyx_t_1 = PyUnicode_Check(((PyObject *)__pyx_v_value)); + if (__pyx_t_1) { + + /* "selectolax/modest/node.pxi":989 + * cdef bytes bytes_val + * if isinstance(value, unicode): + * bytes_val = value.encode("utf-8") # <<<<<<<<<<<<<< + * elif isinstance(value, bytes): + * bytes_val = value +*/ + __pyx_t_3 = ((PyObject *)__pyx_v_value); + __Pyx_INCREF(__pyx_t_3); + __pyx_t_4 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_utf_8}; + __pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_encode, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 989, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + } + __pyx_t_3 = __pyx_t_2; + __Pyx_INCREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_v_bytes_val = ((PyObject*)__pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/modest/node.pxi":988 + * cdef inline bytes to_bytes(str_or_Node value): + * cdef bytes bytes_val + * if isinstance(value, unicode): # <<<<<<<<<<<<<< + * bytes_val = value.encode("utf-8") + * elif isinstance(value, bytes): +*/ + goto __pyx_L3; + } + + /* "selectolax/modest/node.pxi":990 + * if isinstance(value, unicode): + * bytes_val = value.encode("utf-8") + * elif isinstance(value, bytes): # <<<<<<<<<<<<<< + * bytes_val = value + * return bytes_val +*/ + __pyx_t_1 = PyBytes_Check(((PyObject *)__pyx_v_value)); + if (__pyx_t_1) { + + /* "selectolax/modest/node.pxi":991 + * bytes_val = value.encode("utf-8") + * elif isinstance(value, bytes): + * bytes_val = value # <<<<<<<<<<<<<< + * return bytes_val +*/ + __pyx_t_3 = ((PyObject *)__pyx_v_value); + __Pyx_INCREF(__pyx_t_3); + __pyx_v_bytes_val = ((PyObject*)__pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/modest/node.pxi":990 + * if isinstance(value, unicode): + * bytes_val = value.encode("utf-8") + * elif isinstance(value, bytes): # <<<<<<<<<<<<<< + * bytes_val = value + * return bytes_val +*/ + } + __pyx_L3:; + + /* "selectolax/modest/node.pxi":992 + * elif isinstance(value, bytes): + * bytes_val = value + * return bytes_val # <<<<<<<<<<<<<< +*/ + __Pyx_XDECREF(__pyx_r); + if (unlikely(!__pyx_v_bytes_val)) { __Pyx_RaiseUnboundLocalError("bytes_val"); __PYX_ERR(3, 992, __pyx_L1_error) } + __Pyx_INCREF(__pyx_v_bytes_val); + __pyx_r = __pyx_v_bytes_val; + goto __pyx_L0; + + /* "selectolax/modest/node.pxi":986 + * + * + * cdef inline bytes to_bytes(str_or_Node value): # <<<<<<<<<<<<<< + * cdef bytes bytes_val + * if isinstance(value, unicode): +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("selectolax.parser.to_bytes", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_bytes_val); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/utils.pxi":19 + * + * + * def preprocess_input(html, decode_errors='ignore'): # <<<<<<<<<<<<<< + * if isinstance(html, (str, unicode)): + * bytes_html = html.encode('UTF-8', errors=decode_errors) +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_1preprocess_input(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6parser_preprocess_input, "preprocess_input(html, decode_errors='ignore')"); +static PyMethodDef __pyx_mdef_10selectolax_6parser_1preprocess_input = {"preprocess_input", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_1preprocess_input, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_preprocess_input}; +static PyObject *__pyx_pw_10selectolax_6parser_1preprocess_input(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_html = 0; + PyObject *__pyx_v_decode_errors = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[2] = {0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("preprocess_input (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_html,&__pyx_mstate_global->__pyx_n_u_decode_errors,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(4, 19, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(4, 19, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 19, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "preprocess_input", 0) < (0)) __PYX_ERR(4, 19, __pyx_L3_error) + if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)((PyObject*)__pyx_mstate_global->__pyx_n_u_ignore))); + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("preprocess_input", 0, 1, 2, i); __PYX_ERR(4, 19, __pyx_L3_error) } + } + } else { + switch (__pyx_nargs) { + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(4, 19, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 19, __pyx_L3_error) + break; + default: goto __pyx_L5_argtuple_error; + } + if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)((PyObject*)__pyx_mstate_global->__pyx_n_u_ignore))); + } + __pyx_v_html = values[0]; + __pyx_v_decode_errors = values[1]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("preprocess_input", 0, 1, 2, __pyx_nargs); __PYX_ERR(4, 19, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.parser.preprocess_input", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_10selectolax_6parser_preprocess_input(__pyx_self, __pyx_v_html, __pyx_v_decode_errors); + + /* function exit code */ + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_preprocess_input(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_html, PyObject *__pyx_v_decode_errors) { + PyObject *__pyx_v_bytes_html = NULL; + PyObject *__pyx_v_html_len = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + size_t __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + Py_ssize_t __pyx_t_7; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("preprocess_input", 0); + + /* "selectolax/utils.pxi":20 + * + * def preprocess_input(html, decode_errors='ignore'): + * if isinstance(html, (str, unicode)): # <<<<<<<<<<<<<< + * bytes_html = html.encode('UTF-8', errors=decode_errors) + * elif isinstance(html, bytes): +*/ + __pyx_t_1 = PyUnicode_Check(__pyx_v_html); + if (__pyx_t_1) { + + /* "selectolax/utils.pxi":21 + * def preprocess_input(html, decode_errors='ignore'): + * if isinstance(html, (str, unicode)): + * bytes_html = html.encode('UTF-8', errors=decode_errors) # <<<<<<<<<<<<<< + * elif isinstance(html, bytes): + * bytes_html = html +*/ + __pyx_t_3 = __pyx_v_html; + __Pyx_INCREF(__pyx_t_3); + __pyx_t_4 = 0; + { + PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_UTF_8}; + __pyx_t_5 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 21, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_errors, __pyx_v_decode_errors, __pyx_t_5, __pyx_callargs+2, 0) < (0)) __PYX_ERR(4, 21, __pyx_L1_error) + __pyx_t_2 = __Pyx_Object_VectorcallMethod_CallFromBuilder((PyObject*)__pyx_mstate_global->__pyx_n_u_encode, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_5); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 21, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + } + __pyx_v_bytes_html = __pyx_t_2; + __pyx_t_2 = 0; + + /* "selectolax/utils.pxi":20 + * + * def preprocess_input(html, decode_errors='ignore'): + * if isinstance(html, (str, unicode)): # <<<<<<<<<<<<<< + * bytes_html = html.encode('UTF-8', errors=decode_errors) + * elif isinstance(html, bytes): +*/ + goto __pyx_L3; + } + + /* "selectolax/utils.pxi":22 + * if isinstance(html, (str, unicode)): + * bytes_html = html.encode('UTF-8', errors=decode_errors) + * elif isinstance(html, bytes): # <<<<<<<<<<<<<< + * bytes_html = html + * else: +*/ + __pyx_t_1 = PyBytes_Check(__pyx_v_html); + if (likely(__pyx_t_1)) { + + /* "selectolax/utils.pxi":23 + * bytes_html = html.encode('UTF-8', errors=decode_errors) + * elif isinstance(html, bytes): + * bytes_html = html # <<<<<<<<<<<<<< + * else: + * raise TypeError("Expected a string, but %s found" % type(html).__name__) +*/ + __Pyx_INCREF(__pyx_v_html); + __pyx_v_bytes_html = __pyx_v_html; + + /* "selectolax/utils.pxi":22 + * if isinstance(html, (str, unicode)): + * bytes_html = html.encode('UTF-8', errors=decode_errors) + * elif isinstance(html, bytes): # <<<<<<<<<<<<<< + * bytes_html = html + * else: +*/ + goto __pyx_L3; + } + + /* "selectolax/utils.pxi":25 + * bytes_html = html + * else: + * raise TypeError("Expected a string, but %s found" % type(html).__name__) # <<<<<<<<<<<<<< + * html_len = len(bytes_html) + * if html_len > MAX_HTML_INPUT_SIZE: +*/ + /*else*/ { + __pyx_t_5 = NULL; + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(__pyx_v_html)), __pyx_mstate_global->__pyx_n_u_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 25, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_6 = __Pyx_PyUnicode_FormatSafe(__pyx_mstate_global->__pyx_kp_u_Expected_a_string_but_s_found, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 25, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_4 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_6}; + __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 25, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + } + __Pyx_Raise(__pyx_t_2, 0, 0, 0); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __PYX_ERR(4, 25, __pyx_L1_error) + } + __pyx_L3:; + + /* "selectolax/utils.pxi":26 + * else: + * raise TypeError("Expected a string, but %s found" % type(html).__name__) + * html_len = len(bytes_html) # <<<<<<<<<<<<<< + * if html_len > MAX_HTML_INPUT_SIZE: + * raise ValueError("The specified HTML input is too large to be processed (%d bytes)" % html_len) +*/ + __pyx_t_7 = PyObject_Length(__pyx_v_bytes_html); if (unlikely(__pyx_t_7 == ((Py_ssize_t)-1))) __PYX_ERR(4, 26, __pyx_L1_error) + __pyx_t_2 = PyLong_FromSsize_t(__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 26, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_v_html_len = __pyx_t_2; + __pyx_t_2 = 0; + + /* "selectolax/utils.pxi":27 + * raise TypeError("Expected a string, but %s found" % type(html).__name__) + * html_len = len(bytes_html) + * if html_len > MAX_HTML_INPUT_SIZE: # <<<<<<<<<<<<<< + * raise ValueError("The specified HTML input is too large to be processed (%d bytes)" % html_len) + * return bytes_html, html_len +*/ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_MAX_HTML_INPUT_SIZE); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 27, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_6 = PyObject_RichCompare(__pyx_v_html_len, __pyx_t_2, Py_GT); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 27, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(4, 27, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(__pyx_t_1)) { + + /* "selectolax/utils.pxi":28 + * html_len = len(bytes_html) + * if html_len > MAX_HTML_INPUT_SIZE: + * raise ValueError("The specified HTML input is too large to be processed (%d bytes)" % html_len) # <<<<<<<<<<<<<< + * return bytes_html, html_len + * +*/ + __pyx_t_2 = NULL; + __pyx_t_5 = __Pyx_PyUnicode_FormatSafe(__pyx_mstate_global->__pyx_kp_u_The_specified_HTML_input_is_too, __pyx_v_html_len); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 28, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_4 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_5}; + __pyx_t_6 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 28, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + } + __Pyx_Raise(__pyx_t_6, 0, 0, 0); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __PYX_ERR(4, 28, __pyx_L1_error) + + /* "selectolax/utils.pxi":27 + * raise TypeError("Expected a string, but %s found" % type(html).__name__) + * html_len = len(bytes_html) + * if html_len > MAX_HTML_INPUT_SIZE: # <<<<<<<<<<<<<< + * raise ValueError("The specified HTML input is too large to be processed (%d bytes)" % html_len) + * return bytes_html, html_len +*/ + } + + /* "selectolax/utils.pxi":29 + * if html_len > MAX_HTML_INPUT_SIZE: + * raise ValueError("The specified HTML input is too large to be processed (%d bytes)" % html_len) + * return bytes_html, html_len # <<<<<<<<<<<<<< + * + * +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 29, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_INCREF(__pyx_v_bytes_html); + __Pyx_GIVEREF(__pyx_v_bytes_html); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_bytes_html) != (0)) __PYX_ERR(4, 29, __pyx_L1_error); + __Pyx_INCREF(__pyx_v_html_len); + __Pyx_GIVEREF(__pyx_v_html_len); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_v_html_len) != (0)) __PYX_ERR(4, 29, __pyx_L1_error); + __pyx_r = __pyx_t_6; + __pyx_t_6 = 0; + goto __pyx_L0; + + /* "selectolax/utils.pxi":19 + * + * + * def preprocess_input(html, decode_errors='ignore'): # <<<<<<<<<<<<<< + * if isinstance(html, (str, unicode)): + * bytes_html = html.encode('UTF-8', errors=decode_errors) +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_AddTraceback("selectolax.parser.preprocess_input", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_bytes_html); + __Pyx_XDECREF(__pyx_v_html_len); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/utils.pxi":32 + * + * + * def do_create_tag(tag: str, parser_cls: ParserCls): # <<<<<<<<<<<<<< + * if not tag: + * raise ValueError("Tag name cannot be empty") +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_3do_create_tag(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6parser_2do_create_tag, "do_create_tag(tag: str, parser_cls: ParserCls)"); +static PyMethodDef __pyx_mdef_10selectolax_6parser_3do_create_tag = {"do_create_tag", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_3do_create_tag, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_2do_create_tag}; +static PyObject *__pyx_pw_10selectolax_6parser_3do_create_tag(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_tag = 0; + PyObject *__pyx_v_parser_cls = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[2] = {0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("do_create_tag (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_tag,&__pyx_mstate_global->__pyx_n_u_parser_cls,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(4, 32, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(4, 32, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 32, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "do_create_tag", 0) < (0)) __PYX_ERR(4, 32, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 2; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("do_create_tag", 1, 2, 2, i); __PYX_ERR(4, 32, __pyx_L3_error) } + } + } else if (unlikely(__pyx_nargs != 2)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 32, __pyx_L3_error) + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(4, 32, __pyx_L3_error) + } + __pyx_v_tag = values[0]; + __pyx_v_parser_cls = values[1]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("do_create_tag", 1, 2, 2, __pyx_nargs); __PYX_ERR(4, 32, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.parser.do_create_tag", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_10selectolax_6parser_2do_create_tag(__pyx_self, __pyx_v_tag, __pyx_v_parser_cls); + + /* function exit code */ + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_2do_create_tag(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_tag, PyObject *__pyx_v_parser_cls) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + size_t __pyx_t_5; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + PyObject *__pyx_t_9[5]; + PyObject *__pyx_t_10 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("do_create_tag", 0); + + /* "selectolax/utils.pxi":33 + * + * def do_create_tag(tag: str, parser_cls: ParserCls): + * if not tag: # <<<<<<<<<<<<<< + * raise ValueError("Tag name cannot be empty") + * return do_parse_fragment(f"<{tag}>", parser_cls)[0] +*/ + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_tag); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(4, 33, __pyx_L1_error) + __pyx_t_2 = (!__pyx_t_1); + if (unlikely(__pyx_t_2)) { + + /* "selectolax/utils.pxi":34 + * def do_create_tag(tag: str, parser_cls: ParserCls): + * if not tag: + * raise ValueError("Tag name cannot be empty") # <<<<<<<<<<<<<< + * return do_parse_fragment(f"<{tag}>", parser_cls)[0] + * +*/ + __pyx_t_4 = NULL; + __pyx_t_5 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_Tag_name_cannot_be_empty}; + __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 34, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(4, 34, __pyx_L1_error) + + /* "selectolax/utils.pxi":33 + * + * def do_create_tag(tag: str, parser_cls: ParserCls): + * if not tag: # <<<<<<<<<<<<<< + * raise ValueError("Tag name cannot be empty") + * return do_parse_fragment(f"<{tag}>", parser_cls)[0] +*/ + } + + /* "selectolax/utils.pxi":35 + * if not tag: + * raise ValueError("Tag name cannot be empty") + * return do_parse_fragment(f"<{tag}>", parser_cls)[0] # <<<<<<<<<<<<<< + * + * +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_4 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_do_parse_fragment); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 35, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_7 = __Pyx_PyObject_FormatSimple(__pyx_v_tag, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 35, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_8 = __Pyx_PyObject_FormatSimple(__pyx_v_tag, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_8)) __PYX_ERR(4, 35, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_9[0] = __pyx_mstate_global->__pyx_kp_u__2; + __pyx_t_9[1] = __pyx_t_7; + __pyx_t_9[2] = __pyx_mstate_global->__pyx_kp_u__7; + __pyx_t_9[3] = __pyx_t_8; + __pyx_t_9[4] = __pyx_mstate_global->__pyx_kp_u__8; + __pyx_t_10 = __Pyx_PyUnicode_Join(__pyx_t_9, 5, 1 * 2 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_7) + 3 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_8), 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_7) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_8)); + if (unlikely(!__pyx_t_10)) __PYX_ERR(4, 35, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_5 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_6); + assert(__pyx_t_4); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_6, __pyx__function); + __pyx_t_5 = 0; + } + #endif + { + PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_t_10, __pyx_v_parser_cls}; + __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_6, __pyx_callargs+__pyx_t_5, (3-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 35, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __pyx_t_6 = __Pyx_GetItemInt(__pyx_t_3, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 0, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 35, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_r = __pyx_t_6; + __pyx_t_6 = 0; + goto __pyx_L0; + + /* "selectolax/utils.pxi":32 + * + * + * def do_create_tag(tag: str, parser_cls: ParserCls): # <<<<<<<<<<<<<< + * if not tag: + * raise ValueError("Tag name cannot be empty") +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_XDECREF(__pyx_t_10); + __Pyx_AddTraceback("selectolax.parser.do_create_tag", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/utils.pxi":38 + * + * + * def get_fragment_type( # <<<<<<<<<<<<<< + * html: str, + * parser_cls: ParserCls, +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_5get_fragment_type(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6parser_4get_fragment_type, "get_fragment_type(html: str, parser_cls: ParserCls, tree: Optional[Parser] = None) -> FRAGMENT"); +static PyMethodDef __pyx_mdef_10selectolax_6parser_5get_fragment_type = {"get_fragment_type", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_5get_fragment_type, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_4get_fragment_type}; +static PyObject *__pyx_pw_10selectolax_6parser_5get_fragment_type(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_html = 0; + PyObject *__pyx_v_parser_cls = 0; + PyObject *__pyx_v_tree = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[3] = {0,0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("get_fragment_type (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_html,&__pyx_mstate_global->__pyx_n_u_parser_cls,&__pyx_mstate_global->__pyx_n_u_tree,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(4, 38, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 3: + values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(4, 38, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(4, 38, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 38, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "get_fragment_type", 0) < (0)) __PYX_ERR(4, 38, __pyx_L3_error) + + /* "selectolax/utils.pxi":41 + * html: str, + * parser_cls: ParserCls, + * tree: Optional[Parser] = None, # <<<<<<<<<<<<<< + * ) -> FRAGMENT: + * if not tree: +*/ + if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None)); + for (Py_ssize_t i = __pyx_nargs; i < 2; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("get_fragment_type", 0, 2, 3, i); __PYX_ERR(4, 38, __pyx_L3_error) } + } + } else { + switch (__pyx_nargs) { + case 3: + values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(4, 38, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(4, 38, __pyx_L3_error) + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 38, __pyx_L3_error) + break; + default: goto __pyx_L5_argtuple_error; + } + if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None)); + } + __pyx_v_html = values[0]; + __pyx_v_parser_cls = values[1]; + __pyx_v_tree = values[2]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("get_fragment_type", 0, 2, 3, __pyx_nargs); __PYX_ERR(4, 38, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.parser.get_fragment_type", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_10selectolax_6parser_4get_fragment_type(__pyx_self, __pyx_v_html, __pyx_v_parser_cls, __pyx_v_tree); + + /* "selectolax/utils.pxi":38 + * + * + * def get_fragment_type( # <<<<<<<<<<<<<< + * html: str, + * parser_cls: ParserCls, +*/ + + /* function exit code */ + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_4get_fragment_type(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_html, PyObject *__pyx_v_parser_cls, PyObject *__pyx_v_tree) { + PyObject *__pyx_v_re = NULL; + PyObject *__pyx_v_html_re = NULL; + int __pyx_v_has_html; + int __pyx_v_has_head; + int __pyx_v_has_body; + PyObject *__pyx_v_match = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + size_t __pyx_t_6; + PyObject *__pyx_t_7 = NULL; + Py_ssize_t __pyx_t_8; + PyObject *(*__pyx_t_9)(PyObject *); + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("get_fragment_type", 0); + __Pyx_INCREF(__pyx_v_tree); + + /* "selectolax/utils.pxi":43 + * tree: Optional[Parser] = None, + * ) -> FRAGMENT: + * if not tree: # <<<<<<<<<<<<<< + * tree = parser_cls(html) + * +*/ + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_tree); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(4, 43, __pyx_L1_error) + __pyx_t_2 = (!__pyx_t_1); + if (__pyx_t_2) { + + /* "selectolax/utils.pxi":44 + * ) -> FRAGMENT: + * if not tree: + * tree = parser_cls(html) # <<<<<<<<<<<<<< + * + * import re +*/ + __pyx_t_4 = NULL; + __Pyx_INCREF(__pyx_v_parser_cls); + __pyx_t_5 = __pyx_v_parser_cls; + __pyx_t_6 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_5))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5); + assert(__pyx_t_4); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_5, __pyx__function); + __pyx_t_6 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_html}; + __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 44, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_DECREF_SET(__pyx_v_tree, __pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/utils.pxi":43 + * tree: Optional[Parser] = None, + * ) -> FRAGMENT: + * if not tree: # <<<<<<<<<<<<<< + * tree = parser_cls(html) + * +*/ + } + + /* "selectolax/utils.pxi":46 + * tree = parser_cls(html) + * + * import re # <<<<<<<<<<<<<< + * html_re = re.compile(r"__pyx_n_u_re, 0, 0, NULL, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 46, __pyx_L1_error) + __pyx_t_3 = __pyx_t_7; + __Pyx_GOTREF(__pyx_t_3); + __pyx_v_re = __pyx_t_3; + __pyx_t_3 = 0; + + /* "selectolax/utils.pxi":47 + * + * import re + * html_re = re.compile(r"__pyx_n_u_IGNORECASE); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 47, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_6 = 0; + { + PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_html_body_head_er, __pyx_t_4}; + __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_compile, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 47, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __pyx_v_html_re = __pyx_t_3; + __pyx_t_3 = 0; + + /* "selectolax/utils.pxi":49 + * html_re = re.compile(r"__pyx_n_u_finditer, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 52, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) { + __pyx_t_4 = __pyx_t_3; __Pyx_INCREF(__pyx_t_4); + __pyx_t_8 = 0; + __pyx_t_9 = NULL; + } else { + __pyx_t_8 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 52, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_9 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(4, 52, __pyx_L1_error) + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + for (;;) { + if (likely(!__pyx_t_9)) { + if (likely(PyList_CheckExact(__pyx_t_4))) { + { + Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_4); + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely((__pyx_temp < 0))) __PYX_ERR(4, 52, __pyx_L1_error) + #endif + if (__pyx_t_8 >= __pyx_temp) break; + } + __pyx_t_3 = __Pyx_PyList_GetItemRefFast(__pyx_t_4, __pyx_t_8, __Pyx_ReferenceSharing_OwnStrongReference); + ++__pyx_t_8; + } else { + { + Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_4); + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely((__pyx_temp < 0))) __PYX_ERR(4, 52, __pyx_L1_error) + #endif + if (__pyx_t_8 >= __pyx_temp) break; + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_3 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_8)); + #else + __pyx_t_3 = __Pyx_PySequence_ITEM(__pyx_t_4, __pyx_t_8); + #endif + ++__pyx_t_8; + } + if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 52, __pyx_L1_error) + } else { + __pyx_t_3 = __pyx_t_9(__pyx_t_4); + if (unlikely(!__pyx_t_3)) { + PyObject* exc_type = PyErr_Occurred(); + if (exc_type) { + if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(4, 52, __pyx_L1_error) + PyErr_Clear(); + } + break; + } + } + __Pyx_GOTREF(__pyx_t_3); + __Pyx_XDECREF_SET(__pyx_v_match, __pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/utils.pxi":53 + * has_body = False + * for match in html_re.finditer(html): + * if match[0] == "__pyx_kp_u_html_2, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(4, 53, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (__pyx_t_2) { + + /* "selectolax/utils.pxi":54 + * for match in html_re.finditer(html): + * if match[0] == "__pyx_kp_u_head, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(4, 55, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (__pyx_t_2) { + + /* "selectolax/utils.pxi":56 + * has_html = True + * elif match[0] == "__pyx_kp_u_body, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(4, 57, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (__pyx_t_2) { + + /* "selectolax/utils.pxi":58 + * has_head = True + * elif match[0] == "__pyx_n_u_document); + __pyx_r = __pyx_mstate_global->__pyx_n_u_document; + goto __pyx_L0; + + /* "selectolax/utils.pxi":63 + * break + * + * if has_html and has_head and has_body: # <<<<<<<<<<<<<< + * return "document" + * elif has_html and not has_head and has_body: +*/ + } + + /* "selectolax/utils.pxi":65 + * if has_html and has_head and has_body: + * return "document" + * elif has_html and not has_head and has_body: # <<<<<<<<<<<<<< + * return "document_no_head" + * elif has_html and has_head and not has_body: +*/ + if (__pyx_v_has_html) { + } else { + __pyx_t_2 = __pyx_v_has_html; + goto __pyx_L16_bool_binop_done; + } + __pyx_t_1 = (!__pyx_v_has_head); + if (__pyx_t_1) { + } else { + __pyx_t_2 = __pyx_t_1; + goto __pyx_L16_bool_binop_done; + } + __pyx_t_2 = __pyx_v_has_body; + __pyx_L16_bool_binop_done:; + if (__pyx_t_2) { + + /* "selectolax/utils.pxi":66 + * return "document" + * elif has_html and not has_head and has_body: + * return "document_no_head" # <<<<<<<<<<<<<< + * elif has_html and has_head and not has_body: + * return "document_no_body" +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_document_no_head); + __pyx_r = __pyx_mstate_global->__pyx_n_u_document_no_head; + goto __pyx_L0; + + /* "selectolax/utils.pxi":65 + * if has_html and has_head and has_body: + * return "document" + * elif has_html and not has_head and has_body: # <<<<<<<<<<<<<< + * return "document_no_head" + * elif has_html and has_head and not has_body: +*/ + } + + /* "selectolax/utils.pxi":67 + * elif has_html and not has_head and has_body: + * return "document_no_head" + * elif has_html and has_head and not has_body: # <<<<<<<<<<<<<< + * return "document_no_body" + * elif has_html and not has_head and not has_body: +*/ + if (__pyx_v_has_html) { + } else { + __pyx_t_2 = __pyx_v_has_html; + goto __pyx_L19_bool_binop_done; + } + if (__pyx_v_has_head) { + } else { + __pyx_t_2 = __pyx_v_has_head; + goto __pyx_L19_bool_binop_done; + } + __pyx_t_1 = (!__pyx_v_has_body); + __pyx_t_2 = __pyx_t_1; + __pyx_L19_bool_binop_done:; + if (__pyx_t_2) { + + /* "selectolax/utils.pxi":68 + * return "document_no_head" + * elif has_html and has_head and not has_body: + * return "document_no_body" # <<<<<<<<<<<<<< + * elif has_html and not has_head and not has_body: + * return "document_no_head_no_body" +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_document_no_body); + __pyx_r = __pyx_mstate_global->__pyx_n_u_document_no_body; + goto __pyx_L0; + + /* "selectolax/utils.pxi":67 + * elif has_html and not has_head and has_body: + * return "document_no_head" + * elif has_html and has_head and not has_body: # <<<<<<<<<<<<<< + * return "document_no_body" + * elif has_html and not has_head and not has_body: +*/ + } + + /* "selectolax/utils.pxi":69 + * elif has_html and has_head and not has_body: + * return "document_no_body" + * elif has_html and not has_head and not has_body: # <<<<<<<<<<<<<< + * return "document_no_head_no_body" + * elif has_head and not has_body: +*/ + if (__pyx_v_has_html) { + } else { + __pyx_t_2 = __pyx_v_has_html; + goto __pyx_L22_bool_binop_done; + } + __pyx_t_1 = (!__pyx_v_has_head); + if (__pyx_t_1) { + } else { + __pyx_t_2 = __pyx_t_1; + goto __pyx_L22_bool_binop_done; + } + __pyx_t_1 = (!__pyx_v_has_body); + __pyx_t_2 = __pyx_t_1; + __pyx_L22_bool_binop_done:; + if (__pyx_t_2) { + + /* "selectolax/utils.pxi":70 + * return "document_no_body" + * elif has_html and not has_head and not has_body: + * return "document_no_head_no_body" # <<<<<<<<<<<<<< + * elif has_head and not has_body: + * return "head" +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_document_no_head_no_body); + __pyx_r = __pyx_mstate_global->__pyx_n_u_document_no_head_no_body; + goto __pyx_L0; + + /* "selectolax/utils.pxi":69 + * elif has_html and has_head and not has_body: + * return "document_no_body" + * elif has_html and not has_head and not has_body: # <<<<<<<<<<<<<< + * return "document_no_head_no_body" + * elif has_head and not has_body: +*/ + } + + /* "selectolax/utils.pxi":71 + * elif has_html and not has_head and not has_body: + * return "document_no_head_no_body" + * elif has_head and not has_body: # <<<<<<<<<<<<<< + * return "head" + * elif not has_head and has_body: +*/ + if (__pyx_v_has_head) { + } else { + __pyx_t_2 = __pyx_v_has_head; + goto __pyx_L25_bool_binop_done; + } + __pyx_t_1 = (!__pyx_v_has_body); + __pyx_t_2 = __pyx_t_1; + __pyx_L25_bool_binop_done:; + if (__pyx_t_2) { + + /* "selectolax/utils.pxi":72 + * return "document_no_head_no_body" + * elif has_head and not has_body: + * return "head" # <<<<<<<<<<<<<< + * elif not has_head and has_body: + * return "body" +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_head_2); + __pyx_r = __pyx_mstate_global->__pyx_n_u_head_2; + goto __pyx_L0; + + /* "selectolax/utils.pxi":71 + * elif has_html and not has_head and not has_body: + * return "document_no_head_no_body" + * elif has_head and not has_body: # <<<<<<<<<<<<<< + * return "head" + * elif not has_head and has_body: +*/ + } + + /* "selectolax/utils.pxi":73 + * elif has_head and not has_body: + * return "head" + * elif not has_head and has_body: # <<<<<<<<<<<<<< + * return "body" + * elif has_head and has_body: +*/ + __pyx_t_1 = (!__pyx_v_has_head); + if (__pyx_t_1) { + } else { + __pyx_t_2 = __pyx_t_1; + goto __pyx_L27_bool_binop_done; + } + __pyx_t_2 = __pyx_v_has_body; + __pyx_L27_bool_binop_done:; + if (__pyx_t_2) { + + /* "selectolax/utils.pxi":74 + * return "head" + * elif not has_head and has_body: + * return "body" # <<<<<<<<<<<<<< + * elif has_head and has_body: + * return "head_and_body" +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_body_2); + __pyx_r = __pyx_mstate_global->__pyx_n_u_body_2; + goto __pyx_L0; + + /* "selectolax/utils.pxi":73 + * elif has_head and not has_body: + * return "head" + * elif not has_head and has_body: # <<<<<<<<<<<<<< + * return "body" + * elif has_head and has_body: +*/ + } + + /* "selectolax/utils.pxi":75 + * elif not has_head and has_body: + * return "body" + * elif has_head and has_body: # <<<<<<<<<<<<<< + * return "head_and_body" + * else: +*/ + if (__pyx_v_has_head) { + } else { + __pyx_t_2 = __pyx_v_has_head; + goto __pyx_L29_bool_binop_done; + } + __pyx_t_2 = __pyx_v_has_body; + __pyx_L29_bool_binop_done:; + if (__pyx_t_2) { + + /* "selectolax/utils.pxi":76 + * return "body" + * elif has_head and has_body: + * return "head_and_body" # <<<<<<<<<<<<<< + * else: + * return "fragment" +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_head_and_body); + __pyx_r = __pyx_mstate_global->__pyx_n_u_head_and_body; + goto __pyx_L0; + + /* "selectolax/utils.pxi":75 + * elif not has_head and has_body: + * return "body" + * elif has_head and has_body: # <<<<<<<<<<<<<< + * return "head_and_body" + * else: +*/ + } + + /* "selectolax/utils.pxi":78 + * return "head_and_body" + * else: + * return "fragment" # <<<<<<<<<<<<<< + * + * +*/ + /*else*/ { + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_fragment); + __pyx_r = __pyx_mstate_global->__pyx_n_u_fragment; + goto __pyx_L0; + } + + /* "selectolax/utils.pxi":38 + * + * + * def get_fragment_type( # <<<<<<<<<<<<<< + * html: str, + * parser_cls: ParserCls, +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_AddTraceback("selectolax.parser.get_fragment_type", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_re); + __Pyx_XDECREF(__pyx_v_html_re); + __Pyx_XDECREF(__pyx_v_match); + __Pyx_XDECREF(__pyx_v_tree); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/utils.pxi":81 + * + * + * def do_parse_fragment(html: str, parser_cls: ParserCls): # <<<<<<<<<<<<<< + * """ + * Given HTML, parse it into a list of Nodes, such that the nodes +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_7do_parse_fragment(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6parser_6do_parse_fragment, "do_parse_fragment(html: str, parser_cls: ParserCls)\n\nGiven HTML, parse it into a list of Nodes, such that the nodes\ncorrespond to the given HTML.\n\nFor contrast, HTMLParser adds ``, ``, and `` tags\nif they are missing. This function does not add these tags."); +static PyMethodDef __pyx_mdef_10selectolax_6parser_7do_parse_fragment = {"do_parse_fragment", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_7do_parse_fragment, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_6do_parse_fragment}; +static PyObject *__pyx_pw_10selectolax_6parser_7do_parse_fragment(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_html = 0; + PyObject *__pyx_v_parser_cls = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[2] = {0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("do_parse_fragment (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_html,&__pyx_mstate_global->__pyx_n_u_parser_cls,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(4, 81, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(4, 81, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 81, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "do_parse_fragment", 0) < (0)) __PYX_ERR(4, 81, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 2; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("do_parse_fragment", 1, 2, 2, i); __PYX_ERR(4, 81, __pyx_L3_error) } + } + } else if (unlikely(__pyx_nargs != 2)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 81, __pyx_L3_error) + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(4, 81, __pyx_L3_error) + } + __pyx_v_html = values[0]; + __pyx_v_parser_cls = values[1]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("do_parse_fragment", 1, 2, 2, __pyx_nargs); __PYX_ERR(4, 81, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.parser.do_parse_fragment", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_10selectolax_6parser_6do_parse_fragment(__pyx_self, __pyx_v_html, __pyx_v_parser_cls); + + /* function exit code */ + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_6do_parse_fragment(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_html, PyObject *__pyx_v_parser_cls) { + PyObject *__pyx_v_tree = NULL; + PyObject *__pyx_v_frag_type = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + size_t __pyx_t_3; + PyObject *__pyx_t_4 = NULL; + int __pyx_t_5; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("do_parse_fragment", 0); + __Pyx_INCREF(__pyx_v_html); + + /* "selectolax/utils.pxi":89 + * if they are missing. This function does not add these tags. + * """ + * html = html.strip() # <<<<<<<<<<<<<< + * tree = parser_cls(html) + * frag_type = get_fragment_type(html, parser_cls, tree) +*/ + __pyx_t_2 = __pyx_v_html; + __Pyx_INCREF(__pyx_t_2); + __pyx_t_3 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL}; + __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_strip, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 89, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __Pyx_DECREF_SET(__pyx_v_html, __pyx_t_1); + __pyx_t_1 = 0; + + /* "selectolax/utils.pxi":90 + * """ + * html = html.strip() + * tree = parser_cls(html) # <<<<<<<<<<<<<< + * frag_type = get_fragment_type(html, parser_cls, tree) + * +*/ + __pyx_t_2 = NULL; + __Pyx_INCREF(__pyx_v_parser_cls); + __pyx_t_4 = __pyx_v_parser_cls; + __pyx_t_3 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4); + assert(__pyx_t_2); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_4, __pyx__function); + __pyx_t_3 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_html}; + __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_3, (2-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 90, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __pyx_v_tree = __pyx_t_1; + __pyx_t_1 = 0; + + /* "selectolax/utils.pxi":91 + * html = html.strip() + * tree = parser_cls(html) + * frag_type = get_fragment_type(html, parser_cls, tree) # <<<<<<<<<<<<<< + * + * if frag_type == "document": +*/ + __pyx_t_4 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_get_fragment_type); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 91, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); + assert(__pyx_t_4); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_2, __pyx__function); + __pyx_t_3 = 0; + } + #endif + { + PyObject *__pyx_callargs[4] = {__pyx_t_4, __pyx_v_html, __pyx_v_parser_cls, __pyx_v_tree}; + __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_2, __pyx_callargs+__pyx_t_3, (4-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 91, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __pyx_v_frag_type = __pyx_t_1; + __pyx_t_1 = 0; + + /* "selectolax/utils.pxi":93 + * frag_type = get_fragment_type(html, parser_cls, tree) + * + * if frag_type == "document": # <<<<<<<<<<<<<< + * return [tree.root] + * if frag_type == "document_no_head": +*/ + __pyx_t_5 = (__Pyx_PyUnicode_Equals(__pyx_v_frag_type, __pyx_mstate_global->__pyx_n_u_document, Py_EQ)); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(4, 93, __pyx_L1_error) + if (__pyx_t_5) { + + /* "selectolax/utils.pxi":94 + * + * if frag_type == "document": + * return [tree.root] # <<<<<<<<<<<<<< + * if frag_type == "document_no_head": + * tree.head.decompose(recursive=True) +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_tree, __pyx_mstate_global->__pyx_n_u_root); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 94, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 94, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_GIVEREF(__pyx_t_1); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_t_1) != (0)) __PYX_ERR(4, 94, __pyx_L1_error); + __pyx_t_1 = 0; + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; + + /* "selectolax/utils.pxi":93 + * frag_type = get_fragment_type(html, parser_cls, tree) + * + * if frag_type == "document": # <<<<<<<<<<<<<< + * return [tree.root] + * if frag_type == "document_no_head": +*/ + } + + /* "selectolax/utils.pxi":95 + * if frag_type == "document": + * return [tree.root] + * if frag_type == "document_no_head": # <<<<<<<<<<<<<< + * tree.head.decompose(recursive=True) + * return [tree.root] +*/ + __pyx_t_5 = (__Pyx_PyUnicode_Equals(__pyx_v_frag_type, __pyx_mstate_global->__pyx_n_u_document_no_head, Py_EQ)); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(4, 95, __pyx_L1_error) + if (__pyx_t_5) { + + /* "selectolax/utils.pxi":96 + * return [tree.root] + * if frag_type == "document_no_head": + * tree.head.decompose(recursive=True) # <<<<<<<<<<<<<< + * return [tree.root] + * if frag_type == "document_no_body": +*/ + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_tree, __pyx_mstate_global->__pyx_n_u_head_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 96, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_1 = __pyx_t_4; + __Pyx_INCREF(__pyx_t_1); + __pyx_t_3 = 0; + { + PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_1, NULL}; + __pyx_t_6 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 96, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_recursive, Py_True, __pyx_t_6, __pyx_callargs+1, 0) < (0)) __PYX_ERR(4, 96, __pyx_L1_error) + __pyx_t_2 = __Pyx_Object_VectorcallMethod_CallFromBuilder((PyObject*)__pyx_mstate_global->__pyx_n_u_decompose, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_6); + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 96, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "selectolax/utils.pxi":97 + * if frag_type == "document_no_head": + * tree.head.decompose(recursive=True) + * return [tree.root] # <<<<<<<<<<<<<< + * if frag_type == "document_no_body": + * tree.body.decompose(recursive=True) +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_tree, __pyx_mstate_global->__pyx_n_u_root); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 97, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 97, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_2); + if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_2) != (0)) __PYX_ERR(4, 97, __pyx_L1_error); + __pyx_t_2 = 0; + __pyx_r = __pyx_t_4; + __pyx_t_4 = 0; + goto __pyx_L0; + + /* "selectolax/utils.pxi":95 + * if frag_type == "document": + * return [tree.root] + * if frag_type == "document_no_head": # <<<<<<<<<<<<<< + * tree.head.decompose(recursive=True) + * return [tree.root] +*/ + } + + /* "selectolax/utils.pxi":98 + * tree.head.decompose(recursive=True) + * return [tree.root] + * if frag_type == "document_no_body": # <<<<<<<<<<<<<< + * tree.body.decompose(recursive=True) + * return [tree.root] +*/ + __pyx_t_5 = (__Pyx_PyUnicode_Equals(__pyx_v_frag_type, __pyx_mstate_global->__pyx_n_u_document_no_body, Py_EQ)); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(4, 98, __pyx_L1_error) + if (__pyx_t_5) { + + /* "selectolax/utils.pxi":99 + * return [tree.root] + * if frag_type == "document_no_body": + * tree.body.decompose(recursive=True) # <<<<<<<<<<<<<< + * return [tree.root] + * if frag_type == "document_no_head_no_body": +*/ + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_tree, __pyx_mstate_global->__pyx_n_u_body_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 99, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_2 = __pyx_t_6; + __Pyx_INCREF(__pyx_t_2); + __pyx_t_3 = 0; + { + PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_2, NULL}; + __pyx_t_1 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 99, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_recursive, Py_True, __pyx_t_1, __pyx_callargs+1, 0) < (0)) __PYX_ERR(4, 99, __pyx_L1_error) + __pyx_t_4 = __Pyx_Object_VectorcallMethod_CallFromBuilder((PyObject*)__pyx_mstate_global->__pyx_n_u_decompose, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 99, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + } + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "selectolax/utils.pxi":100 + * if frag_type == "document_no_body": + * tree.body.decompose(recursive=True) + * return [tree.root] # <<<<<<<<<<<<<< + * if frag_type == "document_no_head_no_body": + * tree.head.decompose(recursive=True) +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_tree, __pyx_mstate_global->__pyx_n_u_root); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 100, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_6 = PyList_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 100, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_GIVEREF(__pyx_t_4); + if (__Pyx_PyList_SET_ITEM(__pyx_t_6, 0, __pyx_t_4) != (0)) __PYX_ERR(4, 100, __pyx_L1_error); + __pyx_t_4 = 0; + __pyx_r = __pyx_t_6; + __pyx_t_6 = 0; + goto __pyx_L0; + + /* "selectolax/utils.pxi":98 + * tree.head.decompose(recursive=True) + * return [tree.root] + * if frag_type == "document_no_body": # <<<<<<<<<<<<<< + * tree.body.decompose(recursive=True) + * return [tree.root] +*/ + } + + /* "selectolax/utils.pxi":101 + * tree.body.decompose(recursive=True) + * return [tree.root] + * if frag_type == "document_no_head_no_body": # <<<<<<<<<<<<<< + * tree.head.decompose(recursive=True) + * tree.body.decompose(recursive=True) +*/ + __pyx_t_5 = (__Pyx_PyUnicode_Equals(__pyx_v_frag_type, __pyx_mstate_global->__pyx_n_u_document_no_head_no_body, Py_EQ)); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(4, 101, __pyx_L1_error) + if (__pyx_t_5) { + + /* "selectolax/utils.pxi":102 + * return [tree.root] + * if frag_type == "document_no_head_no_body": + * tree.head.decompose(recursive=True) # <<<<<<<<<<<<<< + * tree.body.decompose(recursive=True) + * return [tree.root] +*/ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_tree, __pyx_mstate_global->__pyx_n_u_head_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 102, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_4 = __pyx_t_1; + __Pyx_INCREF(__pyx_t_4); + __pyx_t_3 = 0; + { + PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_4, NULL}; + __pyx_t_2 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 102, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_recursive, Py_True, __pyx_t_2, __pyx_callargs+1, 0) < (0)) __PYX_ERR(4, 102, __pyx_L1_error) + __pyx_t_6 = __Pyx_Object_VectorcallMethod_CallFromBuilder((PyObject*)__pyx_mstate_global->__pyx_n_u_decompose, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_2); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 102, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + } + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + + /* "selectolax/utils.pxi":103 + * if frag_type == "document_no_head_no_body": + * tree.head.decompose(recursive=True) + * tree.body.decompose(recursive=True) # <<<<<<<<<<<<<< + * return [tree.root] + * elif frag_type == "head": +*/ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_tree, __pyx_mstate_global->__pyx_n_u_body_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 103, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_1 = __pyx_t_2; + __Pyx_INCREF(__pyx_t_1); + __pyx_t_3 = 0; + { + PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_1, NULL}; + __pyx_t_4 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 103, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_recursive, Py_True, __pyx_t_4, __pyx_callargs+1, 0) < (0)) __PYX_ERR(4, 103, __pyx_L1_error) + __pyx_t_6 = __Pyx_Object_VectorcallMethod_CallFromBuilder((PyObject*)__pyx_mstate_global->__pyx_n_u_decompose, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_4); + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 103, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + } + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + + /* "selectolax/utils.pxi":104 + * tree.head.decompose(recursive=True) + * tree.body.decompose(recursive=True) + * return [tree.root] # <<<<<<<<<<<<<< + * elif frag_type == "head": + * tree.body.decompose(recursive=True) +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_tree, __pyx_mstate_global->__pyx_n_u_root); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 104, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 104, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_GIVEREF(__pyx_t_6); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_t_6) != (0)) __PYX_ERR(4, 104, __pyx_L1_error); + __pyx_t_6 = 0; + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; + + /* "selectolax/utils.pxi":101 + * tree.body.decompose(recursive=True) + * return [tree.root] + * if frag_type == "document_no_head_no_body": # <<<<<<<<<<<<<< + * tree.head.decompose(recursive=True) + * tree.body.decompose(recursive=True) +*/ + } + + /* "selectolax/utils.pxi":105 + * tree.body.decompose(recursive=True) + * return [tree.root] + * elif frag_type == "head": # <<<<<<<<<<<<<< + * tree.body.decompose(recursive=True) + * return [tree.head] +*/ + __pyx_t_5 = (__Pyx_PyUnicode_Equals(__pyx_v_frag_type, __pyx_mstate_global->__pyx_n_u_head_2, Py_EQ)); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(4, 105, __pyx_L1_error) + if (__pyx_t_5) { + + /* "selectolax/utils.pxi":106 + * return [tree.root] + * elif frag_type == "head": + * tree.body.decompose(recursive=True) # <<<<<<<<<<<<<< + * return [tree.head] + * elif frag_type == "body": +*/ + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_tree, __pyx_mstate_global->__pyx_n_u_body_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 106, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_6 = __pyx_t_4; + __Pyx_INCREF(__pyx_t_6); + __pyx_t_3 = 0; + { + PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_6, NULL}; + __pyx_t_1 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 106, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_recursive, Py_True, __pyx_t_1, __pyx_callargs+1, 0) < (0)) __PYX_ERR(4, 106, __pyx_L1_error) + __pyx_t_2 = __Pyx_Object_VectorcallMethod_CallFromBuilder((PyObject*)__pyx_mstate_global->__pyx_n_u_decompose, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_1); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 106, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "selectolax/utils.pxi":107 + * elif frag_type == "head": + * tree.body.decompose(recursive=True) + * return [tree.head] # <<<<<<<<<<<<<< + * elif frag_type == "body": + * tree.head.decompose(recursive=True) +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_tree, __pyx_mstate_global->__pyx_n_u_head_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 107, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 107, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_2); + if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_2) != (0)) __PYX_ERR(4, 107, __pyx_L1_error); + __pyx_t_2 = 0; + __pyx_r = __pyx_t_4; + __pyx_t_4 = 0; + goto __pyx_L0; + + /* "selectolax/utils.pxi":105 + * tree.body.decompose(recursive=True) + * return [tree.root] + * elif frag_type == "head": # <<<<<<<<<<<<<< + * tree.body.decompose(recursive=True) + * return [tree.head] +*/ + } + + /* "selectolax/utils.pxi":108 + * tree.body.decompose(recursive=True) + * return [tree.head] + * elif frag_type == "body": # <<<<<<<<<<<<<< + * tree.head.decompose(recursive=True) + * return [tree.body] +*/ + __pyx_t_5 = (__Pyx_PyUnicode_Equals(__pyx_v_frag_type, __pyx_mstate_global->__pyx_n_u_body_2, Py_EQ)); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(4, 108, __pyx_L1_error) + if (__pyx_t_5) { + + /* "selectolax/utils.pxi":109 + * return [tree.head] + * elif frag_type == "body": + * tree.head.decompose(recursive=True) # <<<<<<<<<<<<<< + * return [tree.body] + * elif frag_type == "head_and_body": +*/ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_tree, __pyx_mstate_global->__pyx_n_u_head_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 109, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __pyx_t_1; + __Pyx_INCREF(__pyx_t_2); + __pyx_t_3 = 0; + { + PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_2, NULL}; + __pyx_t_6 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 109, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_recursive, Py_True, __pyx_t_6, __pyx_callargs+1, 0) < (0)) __PYX_ERR(4, 109, __pyx_L1_error) + __pyx_t_4 = __Pyx_Object_VectorcallMethod_CallFromBuilder((PyObject*)__pyx_mstate_global->__pyx_n_u_decompose, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_6); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 109, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + } + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "selectolax/utils.pxi":110 + * elif frag_type == "body": + * tree.head.decompose(recursive=True) + * return [tree.body] # <<<<<<<<<<<<<< + * elif frag_type == "head_and_body": + * return [tree.head, tree.body] +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_tree, __pyx_mstate_global->__pyx_n_u_body_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 110, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 110, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_4); + if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 0, __pyx_t_4) != (0)) __PYX_ERR(4, 110, __pyx_L1_error); + __pyx_t_4 = 0; + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "selectolax/utils.pxi":108 + * tree.body.decompose(recursive=True) + * return [tree.head] + * elif frag_type == "body": # <<<<<<<<<<<<<< + * tree.head.decompose(recursive=True) + * return [tree.body] +*/ + } + + /* "selectolax/utils.pxi":111 + * tree.head.decompose(recursive=True) + * return [tree.body] + * elif frag_type == "head_and_body": # <<<<<<<<<<<<<< + * return [tree.head, tree.body] + * else: +*/ + __pyx_t_5 = (__Pyx_PyUnicode_Equals(__pyx_v_frag_type, __pyx_mstate_global->__pyx_n_u_head_and_body, Py_EQ)); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(4, 111, __pyx_L1_error) + if (__pyx_t_5) { + + /* "selectolax/utils.pxi":112 + * return [tree.body] + * elif frag_type == "head_and_body": + * return [tree.head, tree.body] # <<<<<<<<<<<<<< + * else: + * return [ +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_tree, __pyx_mstate_global->__pyx_n_u_head_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 112, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_tree, __pyx_mstate_global->__pyx_n_u_body_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 112, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_6 = PyList_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 112, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_GIVEREF(__pyx_t_1); + if (__Pyx_PyList_SET_ITEM(__pyx_t_6, 0, __pyx_t_1) != (0)) __PYX_ERR(4, 112, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_4); + if (__Pyx_PyList_SET_ITEM(__pyx_t_6, 1, __pyx_t_4) != (0)) __PYX_ERR(4, 112, __pyx_L1_error); + __pyx_t_1 = 0; + __pyx_t_4 = 0; + __pyx_r = __pyx_t_6; + __pyx_t_6 = 0; + goto __pyx_L0; + + /* "selectolax/utils.pxi":111 + * tree.head.decompose(recursive=True) + * return [tree.body] + * elif frag_type == "head_and_body": # <<<<<<<<<<<<<< + * return [tree.head, tree.body] + * else: +*/ + } + + /* "selectolax/utils.pxi":114 + * return [tree.head, tree.body] + * else: + * return [ # <<<<<<<<<<<<<< + * *tree.head.iter(include_text=True), + * *tree.body.iter(include_text=True), +*/ + /*else*/ { + __Pyx_XDECREF(__pyx_r); + + /* "selectolax/utils.pxi":115 + * else: + * return [ + * *tree.head.iter(include_text=True), # <<<<<<<<<<<<<< + * *tree.body.iter(include_text=True), + * ] +*/ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_tree, __pyx_mstate_global->__pyx_n_u_head_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 115, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_1 = __pyx_t_2; + __Pyx_INCREF(__pyx_t_1); + __pyx_t_3 = 0; + { + PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_1, NULL}; + __pyx_t_7 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 115, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_include_text, Py_True, __pyx_t_7, __pyx_callargs+1, 0) < (0)) __PYX_ERR(4, 115, __pyx_L1_error) + __pyx_t_4 = __Pyx_Object_VectorcallMethod_CallFromBuilder((PyObject*)__pyx_mstate_global->__pyx_n_u_iter_2, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_7); + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 115, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + } + __pyx_t_6 = __Pyx_PySequence_ListKeepNew(__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 114, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "selectolax/utils.pxi":116 + * return [ + * *tree.head.iter(include_text=True), + * *tree.body.iter(include_text=True), # <<<<<<<<<<<<<< + * ] +*/ + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_tree, __pyx_mstate_global->__pyx_n_u_body_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 116, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_2 = __pyx_t_7; + __Pyx_INCREF(__pyx_t_2); + __pyx_t_3 = 0; + { + PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_2, NULL}; + __pyx_t_1 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 116, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_include_text, Py_True, __pyx_t_1, __pyx_callargs+1, 0) < (0)) __PYX_ERR(4, 116, __pyx_L1_error) + __pyx_t_4 = __Pyx_Object_VectorcallMethod_CallFromBuilder((PyObject*)__pyx_mstate_global->__pyx_n_u_iter_2, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 116, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + } + if (__Pyx_PyList_Extend(__pyx_t_6, __pyx_t_4) < (0)) __PYX_ERR(4, 116, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_r = __pyx_t_6; + __pyx_t_6 = 0; + goto __pyx_L0; + } + + /* "selectolax/utils.pxi":81 + * + * + * def do_parse_fragment(html: str, parser_cls: ParserCls): # <<<<<<<<<<<<<< + * """ + * Given HTML, parse it into a list of Nodes, such that the nodes +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_AddTraceback("selectolax.parser.do_parse_fragment", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_tree); + __Pyx_XDECREF(__pyx_v_frag_type); + __Pyx_XDECREF(__pyx_v_html); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/modest/util.pxi":4 + * + * + * def create_tag(tag: str): # <<<<<<<<<<<<<< + * """ + * Given an HTML tag name, e.g. `"div"`, create a single empty node for that tag, +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_9create_tag(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6parser_8create_tag, "create_tag(tag: str)\n\nGiven an HTML tag name, e.g. `\"div\"`, create a single empty node for that tag,\ne.g. `\"
\"`."); +static PyMethodDef __pyx_mdef_10selectolax_6parser_9create_tag = {"create_tag", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_9create_tag, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_8create_tag}; +static PyObject *__pyx_pw_10selectolax_6parser_9create_tag(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_tag = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("create_tag (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_tag,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(5, 4, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(5, 4, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "create_tag", 0) < (0)) __PYX_ERR(5, 4, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("create_tag", 1, 1, 1, i); __PYX_ERR(5, 4, __pyx_L3_error) } + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(5, 4, __pyx_L3_error) + } + __pyx_v_tag = values[0]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("create_tag", 1, 1, 1, __pyx_nargs); __PYX_ERR(5, 4, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.parser.create_tag", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_10selectolax_6parser_8create_tag(__pyx_self, __pyx_v_tag); + + /* function exit code */ + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_8create_tag(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_tag) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + size_t __pyx_t_4; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("create_tag", 0); + + /* "selectolax/modest/util.pxi":9 + * e.g. `"
"`. + * """ + * return do_create_tag(tag, HTMLParser) # <<<<<<<<<<<<<< + * + * +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_2 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_do_create_tag); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 9, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); + assert(__pyx_t_2); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_3, __pyx__function); + __pyx_t_4 = 0; + } + #endif + { + PyObject *__pyx_callargs[3] = {__pyx_t_2, __pyx_v_tag, ((PyObject *)__pyx_mstate_global->__pyx_ptype_10selectolax_6parser_HTMLParser)}; + __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_3, __pyx_callargs+__pyx_t_4, (3-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 9, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "selectolax/modest/util.pxi":4 + * + * + * def create_tag(tag: str): # <<<<<<<<<<<<<< + * """ + * Given an HTML tag name, e.g. `"div"`, create a single empty node for that tag, +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("selectolax.parser.create_tag", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/modest/util.pxi":12 + * + * + * def parse_fragment(html: str): # <<<<<<<<<<<<<< + * """ + * Given HTML, parse it into a list of Nodes, such that the nodes +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_11parse_fragment(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6parser_10parse_fragment, "parse_fragment(html: str)\n\nGiven HTML, parse it into a list of Nodes, such that the nodes\ncorrespond to the given HTML.\n\nFor contrast, HTMLParser adds ``, ``, and `` tags\nif they are missing. This function does not add these tags."); +static PyMethodDef __pyx_mdef_10selectolax_6parser_11parse_fragment = {"parse_fragment", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_11parse_fragment, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_10parse_fragment}; +static PyObject *__pyx_pw_10selectolax_6parser_11parse_fragment(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_html = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("parse_fragment (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_html,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(5, 12, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(5, 12, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "parse_fragment", 0) < (0)) __PYX_ERR(5, 12, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("parse_fragment", 1, 1, 1, i); __PYX_ERR(5, 12, __pyx_L3_error) } + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(5, 12, __pyx_L3_error) + } + __pyx_v_html = values[0]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("parse_fragment", 1, 1, 1, __pyx_nargs); __PYX_ERR(5, 12, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.parser.parse_fragment", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_10selectolax_6parser_10parse_fragment(__pyx_self, __pyx_v_html); + + /* function exit code */ + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_10parse_fragment(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_html) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + size_t __pyx_t_4; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("parse_fragment", 0); + + /* "selectolax/modest/util.pxi":20 + * if they are missing. This function does not add these tags. + * """ + * return do_parse_fragment(html, HTMLParser) # <<<<<<<<<<<<<< +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_2 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_do_parse_fragment); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 20, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); + assert(__pyx_t_2); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_3, __pyx__function); + __pyx_t_4 = 0; + } + #endif + { + PyObject *__pyx_callargs[3] = {__pyx_t_2, __pyx_v_html, ((PyObject *)__pyx_mstate_global->__pyx_ptype_10selectolax_6parser_HTMLParser)}; + __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_3, __pyx_callargs+__pyx_t_4, (3-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 20, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "selectolax/modest/util.pxi":12 + * + * + * def parse_fragment(html: str): # <<<<<<<<<<<<<< + * """ + * Given HTML, parse it into a list of Nodes, such that the nodes +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("selectolax.parser.parse_fragment", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/utils.pxi":19 + * + * + * def preprocess_input(html, decode_errors='ignore'): # <<<<<<<<<<<<<< + * if isinstance(html, (str, unicode)): + * bytes_html = html.encode('UTF-8', errors=decode_errors) +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_13preprocess_input(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6parser_12preprocess_input, "preprocess_input(html, decode_errors='ignore')"); +static PyMethodDef __pyx_mdef_10selectolax_6parser_13preprocess_input = {"preprocess_input", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_13preprocess_input, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_12preprocess_input}; +static PyObject *__pyx_pw_10selectolax_6parser_13preprocess_input(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_html = 0; + PyObject *__pyx_v_decode_errors = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[2] = {0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("preprocess_input (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_html,&__pyx_mstate_global->__pyx_n_u_decode_errors,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(6, 19, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(6, 19, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(6, 19, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "preprocess_input", 0) < (0)) __PYX_ERR(6, 19, __pyx_L3_error) + if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)((PyObject*)__pyx_mstate_global->__pyx_n_u_ignore))); + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("preprocess_input", 0, 1, 2, i); __PYX_ERR(6, 19, __pyx_L3_error) } + } + } else { + switch (__pyx_nargs) { + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(6, 19, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(6, 19, __pyx_L3_error) + break; + default: goto __pyx_L5_argtuple_error; + } + if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)((PyObject*)__pyx_mstate_global->__pyx_n_u_ignore))); + } + __pyx_v_html = values[0]; + __pyx_v_decode_errors = values[1]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("preprocess_input", 0, 1, 2, __pyx_nargs); __PYX_ERR(6, 19, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.parser.preprocess_input", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_10selectolax_6parser_12preprocess_input(__pyx_self, __pyx_v_html, __pyx_v_decode_errors); + + /* function exit code */ + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_12preprocess_input(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_html, PyObject *__pyx_v_decode_errors) { + PyObject *__pyx_v_bytes_html = NULL; + PyObject *__pyx_v_html_len = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + size_t __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + Py_ssize_t __pyx_t_7; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("preprocess_input", 0); + + /* "selectolax/utils.pxi":20 + * + * def preprocess_input(html, decode_errors='ignore'): + * if isinstance(html, (str, unicode)): # <<<<<<<<<<<<<< + * bytes_html = html.encode('UTF-8', errors=decode_errors) + * elif isinstance(html, bytes): +*/ + __pyx_t_1 = PyUnicode_Check(__pyx_v_html); + if (__pyx_t_1) { + + /* "selectolax/utils.pxi":21 + * def preprocess_input(html, decode_errors='ignore'): + * if isinstance(html, (str, unicode)): + * bytes_html = html.encode('UTF-8', errors=decode_errors) # <<<<<<<<<<<<<< + * elif isinstance(html, bytes): + * bytes_html = html +*/ + __pyx_t_3 = __pyx_v_html; + __Pyx_INCREF(__pyx_t_3); + __pyx_t_4 = 0; + { + PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_UTF_8}; + __pyx_t_5 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 21, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_errors, __pyx_v_decode_errors, __pyx_t_5, __pyx_callargs+2, 0) < (0)) __PYX_ERR(6, 21, __pyx_L1_error) + __pyx_t_2 = __Pyx_Object_VectorcallMethod_CallFromBuilder((PyObject*)__pyx_mstate_global->__pyx_n_u_encode, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_5); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 21, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + } + __pyx_v_bytes_html = __pyx_t_2; + __pyx_t_2 = 0; + + /* "selectolax/utils.pxi":20 + * + * def preprocess_input(html, decode_errors='ignore'): + * if isinstance(html, (str, unicode)): # <<<<<<<<<<<<<< + * bytes_html = html.encode('UTF-8', errors=decode_errors) + * elif isinstance(html, bytes): +*/ + goto __pyx_L3; + } + + /* "selectolax/utils.pxi":22 + * if isinstance(html, (str, unicode)): + * bytes_html = html.encode('UTF-8', errors=decode_errors) + * elif isinstance(html, bytes): # <<<<<<<<<<<<<< + * bytes_html = html + * else: +*/ + __pyx_t_1 = PyBytes_Check(__pyx_v_html); + if (likely(__pyx_t_1)) { + + /* "selectolax/utils.pxi":23 + * bytes_html = html.encode('UTF-8', errors=decode_errors) + * elif isinstance(html, bytes): + * bytes_html = html # <<<<<<<<<<<<<< + * else: + * raise TypeError("Expected a string, but %s found" % type(html).__name__) +*/ + __Pyx_INCREF(__pyx_v_html); + __pyx_v_bytes_html = __pyx_v_html; + + /* "selectolax/utils.pxi":22 + * if isinstance(html, (str, unicode)): + * bytes_html = html.encode('UTF-8', errors=decode_errors) + * elif isinstance(html, bytes): # <<<<<<<<<<<<<< + * bytes_html = html + * else: +*/ + goto __pyx_L3; + } + + /* "selectolax/utils.pxi":25 + * bytes_html = html + * else: + * raise TypeError("Expected a string, but %s found" % type(html).__name__) # <<<<<<<<<<<<<< + * html_len = len(bytes_html) + * if html_len > MAX_HTML_INPUT_SIZE: +*/ + /*else*/ { + __pyx_t_5 = NULL; + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(__pyx_v_html)), __pyx_mstate_global->__pyx_n_u_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 25, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_6 = __Pyx_PyUnicode_FormatSafe(__pyx_mstate_global->__pyx_kp_u_Expected_a_string_but_s_found, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 25, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_4 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_6}; + __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 25, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + } + __Pyx_Raise(__pyx_t_2, 0, 0, 0); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __PYX_ERR(6, 25, __pyx_L1_error) + } + __pyx_L3:; + + /* "selectolax/utils.pxi":26 + * else: + * raise TypeError("Expected a string, but %s found" % type(html).__name__) + * html_len = len(bytes_html) # <<<<<<<<<<<<<< + * if html_len > MAX_HTML_INPUT_SIZE: + * raise ValueError("The specified HTML input is too large to be processed (%d bytes)" % html_len) +*/ + __pyx_t_7 = PyObject_Length(__pyx_v_bytes_html); if (unlikely(__pyx_t_7 == ((Py_ssize_t)-1))) __PYX_ERR(6, 26, __pyx_L1_error) + __pyx_t_2 = PyLong_FromSsize_t(__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 26, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_v_html_len = __pyx_t_2; + __pyx_t_2 = 0; + + /* "selectolax/utils.pxi":27 + * raise TypeError("Expected a string, but %s found" % type(html).__name__) + * html_len = len(bytes_html) + * if html_len > MAX_HTML_INPUT_SIZE: # <<<<<<<<<<<<<< + * raise ValueError("The specified HTML input is too large to be processed (%d bytes)" % html_len) + * return bytes_html, html_len +*/ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_MAX_HTML_INPUT_SIZE); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 27, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_6 = PyObject_RichCompare(__pyx_v_html_len, __pyx_t_2, Py_GT); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 27, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 27, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(__pyx_t_1)) { + + /* "selectolax/utils.pxi":28 + * html_len = len(bytes_html) + * if html_len > MAX_HTML_INPUT_SIZE: + * raise ValueError("The specified HTML input is too large to be processed (%d bytes)" % html_len) # <<<<<<<<<<<<<< + * return bytes_html, html_len + * +*/ + __pyx_t_2 = NULL; + __pyx_t_5 = __Pyx_PyUnicode_FormatSafe(__pyx_mstate_global->__pyx_kp_u_The_specified_HTML_input_is_too, __pyx_v_html_len); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 28, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_4 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_5}; + __pyx_t_6 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 28, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + } + __Pyx_Raise(__pyx_t_6, 0, 0, 0); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __PYX_ERR(6, 28, __pyx_L1_error) + + /* "selectolax/utils.pxi":27 + * raise TypeError("Expected a string, but %s found" % type(html).__name__) + * html_len = len(bytes_html) + * if html_len > MAX_HTML_INPUT_SIZE: # <<<<<<<<<<<<<< + * raise ValueError("The specified HTML input is too large to be processed (%d bytes)" % html_len) + * return bytes_html, html_len +*/ + } + + /* "selectolax/utils.pxi":29 + * if html_len > MAX_HTML_INPUT_SIZE: + * raise ValueError("The specified HTML input is too large to be processed (%d bytes)" % html_len) + * return bytes_html, html_len # <<<<<<<<<<<<<< + * + * +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 29, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_INCREF(__pyx_v_bytes_html); + __Pyx_GIVEREF(__pyx_v_bytes_html); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_bytes_html) != (0)) __PYX_ERR(6, 29, __pyx_L1_error); + __Pyx_INCREF(__pyx_v_html_len); + __Pyx_GIVEREF(__pyx_v_html_len); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_v_html_len) != (0)) __PYX_ERR(6, 29, __pyx_L1_error); + __pyx_r = __pyx_t_6; + __pyx_t_6 = 0; + goto __pyx_L0; + + /* "selectolax/utils.pxi":19 + * + * + * def preprocess_input(html, decode_errors='ignore'): # <<<<<<<<<<<<<< + * if isinstance(html, (str, unicode)): + * bytes_html = html.encode('UTF-8', errors=decode_errors) +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_AddTraceback("selectolax.parser.preprocess_input", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_bytes_html); + __Pyx_XDECREF(__pyx_v_html_len); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/utils.pxi":32 + * + * + * def do_create_tag(tag: str, parser_cls: ParserCls): # <<<<<<<<<<<<<< + * if not tag: + * raise ValueError("Tag name cannot be empty") +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_15do_create_tag(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6parser_14do_create_tag, "do_create_tag(tag: str, parser_cls: ParserCls)"); +static PyMethodDef __pyx_mdef_10selectolax_6parser_15do_create_tag = {"do_create_tag", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_15do_create_tag, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_14do_create_tag}; +static PyObject *__pyx_pw_10selectolax_6parser_15do_create_tag(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_tag = 0; + PyObject *__pyx_v_parser_cls = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[2] = {0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("do_create_tag (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_tag,&__pyx_mstate_global->__pyx_n_u_parser_cls,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(6, 32, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(6, 32, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(6, 32, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "do_create_tag", 0) < (0)) __PYX_ERR(6, 32, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 2; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("do_create_tag", 1, 2, 2, i); __PYX_ERR(6, 32, __pyx_L3_error) } + } + } else if (unlikely(__pyx_nargs != 2)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(6, 32, __pyx_L3_error) + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(6, 32, __pyx_L3_error) + } + __pyx_v_tag = values[0]; + __pyx_v_parser_cls = values[1]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("do_create_tag", 1, 2, 2, __pyx_nargs); __PYX_ERR(6, 32, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.parser.do_create_tag", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_10selectolax_6parser_14do_create_tag(__pyx_self, __pyx_v_tag, __pyx_v_parser_cls); + + /* function exit code */ + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_14do_create_tag(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_tag, PyObject *__pyx_v_parser_cls) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + size_t __pyx_t_5; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + PyObject *__pyx_t_9[5]; + PyObject *__pyx_t_10 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("do_create_tag", 0); + + /* "selectolax/utils.pxi":33 + * + * def do_create_tag(tag: str, parser_cls: ParserCls): + * if not tag: # <<<<<<<<<<<<<< + * raise ValueError("Tag name cannot be empty") + * return do_parse_fragment(f"<{tag}>", parser_cls)[0] +*/ + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_tag); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 33, __pyx_L1_error) + __pyx_t_2 = (!__pyx_t_1); + if (unlikely(__pyx_t_2)) { + + /* "selectolax/utils.pxi":34 + * def do_create_tag(tag: str, parser_cls: ParserCls): + * if not tag: + * raise ValueError("Tag name cannot be empty") # <<<<<<<<<<<<<< + * return do_parse_fragment(f"<{tag}>", parser_cls)[0] + * +*/ + __pyx_t_4 = NULL; + __pyx_t_5 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_Tag_name_cannot_be_empty}; + __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 34, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(6, 34, __pyx_L1_error) + + /* "selectolax/utils.pxi":33 + * + * def do_create_tag(tag: str, parser_cls: ParserCls): + * if not tag: # <<<<<<<<<<<<<< + * raise ValueError("Tag name cannot be empty") + * return do_parse_fragment(f"<{tag}>", parser_cls)[0] +*/ + } + + /* "selectolax/utils.pxi":35 + * if not tag: + * raise ValueError("Tag name cannot be empty") + * return do_parse_fragment(f"<{tag}>", parser_cls)[0] # <<<<<<<<<<<<<< + * + * +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_4 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_do_parse_fragment); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 35, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_7 = __Pyx_PyObject_FormatSimple(__pyx_v_tag, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 35, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_8 = __Pyx_PyObject_FormatSimple(__pyx_v_tag, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_8)) __PYX_ERR(6, 35, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_9[0] = __pyx_mstate_global->__pyx_kp_u__2; + __pyx_t_9[1] = __pyx_t_7; + __pyx_t_9[2] = __pyx_mstate_global->__pyx_kp_u__7; + __pyx_t_9[3] = __pyx_t_8; + __pyx_t_9[4] = __pyx_mstate_global->__pyx_kp_u__8; + __pyx_t_10 = __Pyx_PyUnicode_Join(__pyx_t_9, 5, 1 * 2 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_7) + 3 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_8), 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_7) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_8)); + if (unlikely(!__pyx_t_10)) __PYX_ERR(6, 35, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_5 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_6); + assert(__pyx_t_4); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_6, __pyx__function); + __pyx_t_5 = 0; + } + #endif + { + PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_t_10, __pyx_v_parser_cls}; + __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_6, __pyx_callargs+__pyx_t_5, (3-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 35, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __pyx_t_6 = __Pyx_GetItemInt(__pyx_t_3, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 0, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 35, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_r = __pyx_t_6; + __pyx_t_6 = 0; + goto __pyx_L0; + + /* "selectolax/utils.pxi":32 + * + * + * def do_create_tag(tag: str, parser_cls: ParserCls): # <<<<<<<<<<<<<< + * if not tag: + * raise ValueError("Tag name cannot be empty") +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_XDECREF(__pyx_t_10); + __Pyx_AddTraceback("selectolax.parser.do_create_tag", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/utils.pxi":38 + * + * + * def get_fragment_type( # <<<<<<<<<<<<<< + * html: str, + * parser_cls: ParserCls, +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_17get_fragment_type(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6parser_16get_fragment_type, "get_fragment_type(html: str, parser_cls: ParserCls, tree: Optional[Parser] = None) -> FRAGMENT"); +static PyMethodDef __pyx_mdef_10selectolax_6parser_17get_fragment_type = {"get_fragment_type", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_17get_fragment_type, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_16get_fragment_type}; +static PyObject *__pyx_pw_10selectolax_6parser_17get_fragment_type(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_html = 0; + PyObject *__pyx_v_parser_cls = 0; + PyObject *__pyx_v_tree = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[3] = {0,0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("get_fragment_type (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_html,&__pyx_mstate_global->__pyx_n_u_parser_cls,&__pyx_mstate_global->__pyx_n_u_tree,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(6, 38, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 3: + values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(6, 38, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(6, 38, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(6, 38, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "get_fragment_type", 0) < (0)) __PYX_ERR(6, 38, __pyx_L3_error) + + /* "selectolax/utils.pxi":41 + * html: str, + * parser_cls: ParserCls, + * tree: Optional[Parser] = None, # <<<<<<<<<<<<<< + * ) -> FRAGMENT: + * if not tree: +*/ + if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None)); + for (Py_ssize_t i = __pyx_nargs; i < 2; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("get_fragment_type", 0, 2, 3, i); __PYX_ERR(6, 38, __pyx_L3_error) } + } + } else { + switch (__pyx_nargs) { + case 3: + values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(6, 38, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(6, 38, __pyx_L3_error) + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(6, 38, __pyx_L3_error) + break; + default: goto __pyx_L5_argtuple_error; + } + if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None)); + } + __pyx_v_html = values[0]; + __pyx_v_parser_cls = values[1]; + __pyx_v_tree = values[2]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("get_fragment_type", 0, 2, 3, __pyx_nargs); __PYX_ERR(6, 38, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.parser.get_fragment_type", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_10selectolax_6parser_16get_fragment_type(__pyx_self, __pyx_v_html, __pyx_v_parser_cls, __pyx_v_tree); + + /* "selectolax/utils.pxi":38 + * + * + * def get_fragment_type( # <<<<<<<<<<<<<< + * html: str, + * parser_cls: ParserCls, +*/ + + /* function exit code */ + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_16get_fragment_type(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_html, PyObject *__pyx_v_parser_cls, PyObject *__pyx_v_tree) { + PyObject *__pyx_v_re = NULL; + PyObject *__pyx_v_html_re = NULL; + int __pyx_v_has_html; + int __pyx_v_has_head; + int __pyx_v_has_body; + PyObject *__pyx_v_match = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + size_t __pyx_t_6; + PyObject *__pyx_t_7 = NULL; + Py_ssize_t __pyx_t_8; + PyObject *(*__pyx_t_9)(PyObject *); + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("get_fragment_type", 0); + __Pyx_INCREF(__pyx_v_tree); + + /* "selectolax/utils.pxi":43 + * tree: Optional[Parser] = None, + * ) -> FRAGMENT: + * if not tree: # <<<<<<<<<<<<<< + * tree = parser_cls(html) + * +*/ + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_tree); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 43, __pyx_L1_error) + __pyx_t_2 = (!__pyx_t_1); + if (__pyx_t_2) { + + /* "selectolax/utils.pxi":44 + * ) -> FRAGMENT: + * if not tree: + * tree = parser_cls(html) # <<<<<<<<<<<<<< + * + * import re +*/ + __pyx_t_4 = NULL; + __Pyx_INCREF(__pyx_v_parser_cls); + __pyx_t_5 = __pyx_v_parser_cls; + __pyx_t_6 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_5))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5); + assert(__pyx_t_4); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_5, __pyx__function); + __pyx_t_6 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_html}; + __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 44, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_DECREF_SET(__pyx_v_tree, __pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/utils.pxi":43 + * tree: Optional[Parser] = None, + * ) -> FRAGMENT: + * if not tree: # <<<<<<<<<<<<<< + * tree = parser_cls(html) + * +*/ + } + + /* "selectolax/utils.pxi":46 + * tree = parser_cls(html) + * + * import re # <<<<<<<<<<<<<< + * html_re = re.compile(r"__pyx_n_u_re, 0, 0, NULL, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 46, __pyx_L1_error) + __pyx_t_3 = __pyx_t_7; + __Pyx_GOTREF(__pyx_t_3); + __pyx_v_re = __pyx_t_3; + __pyx_t_3 = 0; + + /* "selectolax/utils.pxi":47 + * + * import re + * html_re = re.compile(r"__pyx_n_u_IGNORECASE); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 47, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_6 = 0; + { + PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_html_body_head_er, __pyx_t_4}; + __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_compile, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 47, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __pyx_v_html_re = __pyx_t_3; + __pyx_t_3 = 0; + + /* "selectolax/utils.pxi":49 + * html_re = re.compile(r"__pyx_n_u_finditer, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 52, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) { + __pyx_t_4 = __pyx_t_3; __Pyx_INCREF(__pyx_t_4); + __pyx_t_8 = 0; + __pyx_t_9 = NULL; + } else { + __pyx_t_8 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 52, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_9 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(6, 52, __pyx_L1_error) + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + for (;;) { + if (likely(!__pyx_t_9)) { + if (likely(PyList_CheckExact(__pyx_t_4))) { + { + Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_4); + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely((__pyx_temp < 0))) __PYX_ERR(6, 52, __pyx_L1_error) + #endif + if (__pyx_t_8 >= __pyx_temp) break; + } + __pyx_t_3 = __Pyx_PyList_GetItemRefFast(__pyx_t_4, __pyx_t_8, __Pyx_ReferenceSharing_OwnStrongReference); + ++__pyx_t_8; + } else { + { + Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_4); + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely((__pyx_temp < 0))) __PYX_ERR(6, 52, __pyx_L1_error) + #endif + if (__pyx_t_8 >= __pyx_temp) break; + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_3 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_8)); + #else + __pyx_t_3 = __Pyx_PySequence_ITEM(__pyx_t_4, __pyx_t_8); + #endif + ++__pyx_t_8; + } + if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 52, __pyx_L1_error) + } else { + __pyx_t_3 = __pyx_t_9(__pyx_t_4); + if (unlikely(!__pyx_t_3)) { + PyObject* exc_type = PyErr_Occurred(); + if (exc_type) { + if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(6, 52, __pyx_L1_error) + PyErr_Clear(); + } + break; + } + } + __Pyx_GOTREF(__pyx_t_3); + __Pyx_XDECREF_SET(__pyx_v_match, __pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/utils.pxi":53 + * has_body = False + * for match in html_re.finditer(html): + * if match[0] == "__pyx_kp_u_html_2, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(6, 53, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (__pyx_t_2) { + + /* "selectolax/utils.pxi":54 + * for match in html_re.finditer(html): + * if match[0] == "__pyx_kp_u_head, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(6, 55, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (__pyx_t_2) { + + /* "selectolax/utils.pxi":56 + * has_html = True + * elif match[0] == "__pyx_kp_u_body, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(6, 57, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (__pyx_t_2) { + + /* "selectolax/utils.pxi":58 + * has_head = True + * elif match[0] == "__pyx_n_u_document); + __pyx_r = __pyx_mstate_global->__pyx_n_u_document; + goto __pyx_L0; + + /* "selectolax/utils.pxi":63 + * break + * + * if has_html and has_head and has_body: # <<<<<<<<<<<<<< + * return "document" + * elif has_html and not has_head and has_body: +*/ + } + + /* "selectolax/utils.pxi":65 + * if has_html and has_head and has_body: + * return "document" + * elif has_html and not has_head and has_body: # <<<<<<<<<<<<<< + * return "document_no_head" + * elif has_html and has_head and not has_body: +*/ + if (__pyx_v_has_html) { + } else { + __pyx_t_2 = __pyx_v_has_html; + goto __pyx_L16_bool_binop_done; + } + __pyx_t_1 = (!__pyx_v_has_head); + if (__pyx_t_1) { + } else { + __pyx_t_2 = __pyx_t_1; + goto __pyx_L16_bool_binop_done; + } + __pyx_t_2 = __pyx_v_has_body; + __pyx_L16_bool_binop_done:; + if (__pyx_t_2) { + + /* "selectolax/utils.pxi":66 + * return "document" + * elif has_html and not has_head and has_body: + * return "document_no_head" # <<<<<<<<<<<<<< + * elif has_html and has_head and not has_body: + * return "document_no_body" +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_document_no_head); + __pyx_r = __pyx_mstate_global->__pyx_n_u_document_no_head; + goto __pyx_L0; + + /* "selectolax/utils.pxi":65 + * if has_html and has_head and has_body: + * return "document" + * elif has_html and not has_head and has_body: # <<<<<<<<<<<<<< + * return "document_no_head" + * elif has_html and has_head and not has_body: +*/ + } + + /* "selectolax/utils.pxi":67 + * elif has_html and not has_head and has_body: + * return "document_no_head" + * elif has_html and has_head and not has_body: # <<<<<<<<<<<<<< + * return "document_no_body" + * elif has_html and not has_head and not has_body: +*/ + if (__pyx_v_has_html) { + } else { + __pyx_t_2 = __pyx_v_has_html; + goto __pyx_L19_bool_binop_done; + } + if (__pyx_v_has_head) { + } else { + __pyx_t_2 = __pyx_v_has_head; + goto __pyx_L19_bool_binop_done; + } + __pyx_t_1 = (!__pyx_v_has_body); + __pyx_t_2 = __pyx_t_1; + __pyx_L19_bool_binop_done:; + if (__pyx_t_2) { + + /* "selectolax/utils.pxi":68 + * return "document_no_head" + * elif has_html and has_head and not has_body: + * return "document_no_body" # <<<<<<<<<<<<<< + * elif has_html and not has_head and not has_body: + * return "document_no_head_no_body" +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_document_no_body); + __pyx_r = __pyx_mstate_global->__pyx_n_u_document_no_body; + goto __pyx_L0; + + /* "selectolax/utils.pxi":67 + * elif has_html and not has_head and has_body: + * return "document_no_head" + * elif has_html and has_head and not has_body: # <<<<<<<<<<<<<< + * return "document_no_body" + * elif has_html and not has_head and not has_body: +*/ + } + + /* "selectolax/utils.pxi":69 + * elif has_html and has_head and not has_body: + * return "document_no_body" + * elif has_html and not has_head and not has_body: # <<<<<<<<<<<<<< + * return "document_no_head_no_body" + * elif has_head and not has_body: +*/ + if (__pyx_v_has_html) { + } else { + __pyx_t_2 = __pyx_v_has_html; + goto __pyx_L22_bool_binop_done; + } + __pyx_t_1 = (!__pyx_v_has_head); + if (__pyx_t_1) { + } else { + __pyx_t_2 = __pyx_t_1; + goto __pyx_L22_bool_binop_done; + } + __pyx_t_1 = (!__pyx_v_has_body); + __pyx_t_2 = __pyx_t_1; + __pyx_L22_bool_binop_done:; + if (__pyx_t_2) { + + /* "selectolax/utils.pxi":70 + * return "document_no_body" + * elif has_html and not has_head and not has_body: + * return "document_no_head_no_body" # <<<<<<<<<<<<<< + * elif has_head and not has_body: + * return "head" +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_document_no_head_no_body); + __pyx_r = __pyx_mstate_global->__pyx_n_u_document_no_head_no_body; + goto __pyx_L0; + + /* "selectolax/utils.pxi":69 + * elif has_html and has_head and not has_body: + * return "document_no_body" + * elif has_html and not has_head and not has_body: # <<<<<<<<<<<<<< + * return "document_no_head_no_body" + * elif has_head and not has_body: +*/ + } + + /* "selectolax/utils.pxi":71 + * elif has_html and not has_head and not has_body: + * return "document_no_head_no_body" + * elif has_head and not has_body: # <<<<<<<<<<<<<< + * return "head" + * elif not has_head and has_body: +*/ + if (__pyx_v_has_head) { + } else { + __pyx_t_2 = __pyx_v_has_head; + goto __pyx_L25_bool_binop_done; + } + __pyx_t_1 = (!__pyx_v_has_body); + __pyx_t_2 = __pyx_t_1; + __pyx_L25_bool_binop_done:; + if (__pyx_t_2) { + + /* "selectolax/utils.pxi":72 + * return "document_no_head_no_body" + * elif has_head and not has_body: + * return "head" # <<<<<<<<<<<<<< + * elif not has_head and has_body: + * return "body" +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_head_2); + __pyx_r = __pyx_mstate_global->__pyx_n_u_head_2; + goto __pyx_L0; + + /* "selectolax/utils.pxi":71 + * elif has_html and not has_head and not has_body: + * return "document_no_head_no_body" + * elif has_head and not has_body: # <<<<<<<<<<<<<< + * return "head" + * elif not has_head and has_body: +*/ + } + + /* "selectolax/utils.pxi":73 + * elif has_head and not has_body: + * return "head" + * elif not has_head and has_body: # <<<<<<<<<<<<<< + * return "body" + * elif has_head and has_body: +*/ + __pyx_t_1 = (!__pyx_v_has_head); + if (__pyx_t_1) { + } else { + __pyx_t_2 = __pyx_t_1; + goto __pyx_L27_bool_binop_done; + } + __pyx_t_2 = __pyx_v_has_body; + __pyx_L27_bool_binop_done:; + if (__pyx_t_2) { + + /* "selectolax/utils.pxi":74 + * return "head" + * elif not has_head and has_body: + * return "body" # <<<<<<<<<<<<<< + * elif has_head and has_body: + * return "head_and_body" +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_body_2); + __pyx_r = __pyx_mstate_global->__pyx_n_u_body_2; + goto __pyx_L0; + + /* "selectolax/utils.pxi":73 + * elif has_head and not has_body: + * return "head" + * elif not has_head and has_body: # <<<<<<<<<<<<<< + * return "body" + * elif has_head and has_body: +*/ + } + + /* "selectolax/utils.pxi":75 + * elif not has_head and has_body: + * return "body" + * elif has_head and has_body: # <<<<<<<<<<<<<< + * return "head_and_body" + * else: +*/ + if (__pyx_v_has_head) { + } else { + __pyx_t_2 = __pyx_v_has_head; + goto __pyx_L29_bool_binop_done; + } + __pyx_t_2 = __pyx_v_has_body; + __pyx_L29_bool_binop_done:; + if (__pyx_t_2) { + + /* "selectolax/utils.pxi":76 + * return "body" + * elif has_head and has_body: + * return "head_and_body" # <<<<<<<<<<<<<< + * else: + * return "fragment" +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_head_and_body); + __pyx_r = __pyx_mstate_global->__pyx_n_u_head_and_body; + goto __pyx_L0; + + /* "selectolax/utils.pxi":75 + * elif not has_head and has_body: + * return "body" + * elif has_head and has_body: # <<<<<<<<<<<<<< + * return "head_and_body" + * else: +*/ + } + + /* "selectolax/utils.pxi":78 + * return "head_and_body" + * else: + * return "fragment" # <<<<<<<<<<<<<< + * + * +*/ + /*else*/ { + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_fragment); + __pyx_r = __pyx_mstate_global->__pyx_n_u_fragment; + goto __pyx_L0; + } + + /* "selectolax/utils.pxi":38 + * + * + * def get_fragment_type( # <<<<<<<<<<<<<< + * html: str, + * parser_cls: ParserCls, +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_AddTraceback("selectolax.parser.get_fragment_type", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_re); + __Pyx_XDECREF(__pyx_v_html_re); + __Pyx_XDECREF(__pyx_v_match); + __Pyx_XDECREF(__pyx_v_tree); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/utils.pxi":81 + * + * + * def do_parse_fragment(html: str, parser_cls: ParserCls): # <<<<<<<<<<<<<< + * """ + * Given HTML, parse it into a list of Nodes, such that the nodes +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_19do_parse_fragment(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6parser_18do_parse_fragment, "do_parse_fragment(html: str, parser_cls: ParserCls)\n\nGiven HTML, parse it into a list of Nodes, such that the nodes\ncorrespond to the given HTML.\n\nFor contrast, HTMLParser adds ``, ``, and `` tags\nif they are missing. This function does not add these tags."); +static PyMethodDef __pyx_mdef_10selectolax_6parser_19do_parse_fragment = {"do_parse_fragment", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_19do_parse_fragment, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_18do_parse_fragment}; +static PyObject *__pyx_pw_10selectolax_6parser_19do_parse_fragment(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_html = 0; + PyObject *__pyx_v_parser_cls = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[2] = {0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("do_parse_fragment (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_html,&__pyx_mstate_global->__pyx_n_u_parser_cls,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(6, 81, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(6, 81, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(6, 81, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "do_parse_fragment", 0) < (0)) __PYX_ERR(6, 81, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 2; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("do_parse_fragment", 1, 2, 2, i); __PYX_ERR(6, 81, __pyx_L3_error) } + } + } else if (unlikely(__pyx_nargs != 2)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(6, 81, __pyx_L3_error) + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(6, 81, __pyx_L3_error) + } + __pyx_v_html = values[0]; + __pyx_v_parser_cls = values[1]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("do_parse_fragment", 1, 2, 2, __pyx_nargs); __PYX_ERR(6, 81, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.parser.do_parse_fragment", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_10selectolax_6parser_18do_parse_fragment(__pyx_self, __pyx_v_html, __pyx_v_parser_cls); + + /* function exit code */ + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_18do_parse_fragment(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_html, PyObject *__pyx_v_parser_cls) { + PyObject *__pyx_v_tree = NULL; + PyObject *__pyx_v_frag_type = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + size_t __pyx_t_3; + PyObject *__pyx_t_4 = NULL; + int __pyx_t_5; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("do_parse_fragment", 0); + __Pyx_INCREF(__pyx_v_html); + + /* "selectolax/utils.pxi":89 + * if they are missing. This function does not add these tags. + * """ + * html = html.strip() # <<<<<<<<<<<<<< + * tree = parser_cls(html) + * frag_type = get_fragment_type(html, parser_cls, tree) +*/ + __pyx_t_2 = __pyx_v_html; + __Pyx_INCREF(__pyx_t_2); + __pyx_t_3 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL}; + __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_strip, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 89, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __Pyx_DECREF_SET(__pyx_v_html, __pyx_t_1); + __pyx_t_1 = 0; + + /* "selectolax/utils.pxi":90 + * """ + * html = html.strip() + * tree = parser_cls(html) # <<<<<<<<<<<<<< + * frag_type = get_fragment_type(html, parser_cls, tree) + * +*/ + __pyx_t_2 = NULL; + __Pyx_INCREF(__pyx_v_parser_cls); + __pyx_t_4 = __pyx_v_parser_cls; + __pyx_t_3 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4); + assert(__pyx_t_2); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_4, __pyx__function); + __pyx_t_3 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_html}; + __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_3, (2-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 90, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __pyx_v_tree = __pyx_t_1; + __pyx_t_1 = 0; + + /* "selectolax/utils.pxi":91 + * html = html.strip() + * tree = parser_cls(html) + * frag_type = get_fragment_type(html, parser_cls, tree) # <<<<<<<<<<<<<< + * + * if frag_type == "document": +*/ + __pyx_t_4 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_get_fragment_type); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 91, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); + assert(__pyx_t_4); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_2, __pyx__function); + __pyx_t_3 = 0; + } + #endif + { + PyObject *__pyx_callargs[4] = {__pyx_t_4, __pyx_v_html, __pyx_v_parser_cls, __pyx_v_tree}; + __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_2, __pyx_callargs+__pyx_t_3, (4-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 91, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __pyx_v_frag_type = __pyx_t_1; + __pyx_t_1 = 0; + + /* "selectolax/utils.pxi":93 + * frag_type = get_fragment_type(html, parser_cls, tree) + * + * if frag_type == "document": # <<<<<<<<<<<<<< + * return [tree.root] + * if frag_type == "document_no_head": +*/ + __pyx_t_5 = (__Pyx_PyUnicode_Equals(__pyx_v_frag_type, __pyx_mstate_global->__pyx_n_u_document, Py_EQ)); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(6, 93, __pyx_L1_error) + if (__pyx_t_5) { + + /* "selectolax/utils.pxi":94 + * + * if frag_type == "document": + * return [tree.root] # <<<<<<<<<<<<<< + * if frag_type == "document_no_head": + * tree.head.decompose(recursive=True) +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_tree, __pyx_mstate_global->__pyx_n_u_root); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 94, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 94, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_GIVEREF(__pyx_t_1); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_t_1) != (0)) __PYX_ERR(6, 94, __pyx_L1_error); + __pyx_t_1 = 0; + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; + + /* "selectolax/utils.pxi":93 + * frag_type = get_fragment_type(html, parser_cls, tree) + * + * if frag_type == "document": # <<<<<<<<<<<<<< + * return [tree.root] + * if frag_type == "document_no_head": +*/ + } + + /* "selectolax/utils.pxi":95 + * if frag_type == "document": + * return [tree.root] + * if frag_type == "document_no_head": # <<<<<<<<<<<<<< + * tree.head.decompose(recursive=True) + * return [tree.root] +*/ + __pyx_t_5 = (__Pyx_PyUnicode_Equals(__pyx_v_frag_type, __pyx_mstate_global->__pyx_n_u_document_no_head, Py_EQ)); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(6, 95, __pyx_L1_error) + if (__pyx_t_5) { + + /* "selectolax/utils.pxi":96 + * return [tree.root] + * if frag_type == "document_no_head": + * tree.head.decompose(recursive=True) # <<<<<<<<<<<<<< + * return [tree.root] + * if frag_type == "document_no_body": +*/ + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_tree, __pyx_mstate_global->__pyx_n_u_head_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 96, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_1 = __pyx_t_4; + __Pyx_INCREF(__pyx_t_1); + __pyx_t_3 = 0; + { + PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_1, NULL}; + __pyx_t_6 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 96, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_recursive, Py_True, __pyx_t_6, __pyx_callargs+1, 0) < (0)) __PYX_ERR(6, 96, __pyx_L1_error) + __pyx_t_2 = __Pyx_Object_VectorcallMethod_CallFromBuilder((PyObject*)__pyx_mstate_global->__pyx_n_u_decompose, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_6); + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 96, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "selectolax/utils.pxi":97 + * if frag_type == "document_no_head": + * tree.head.decompose(recursive=True) + * return [tree.root] # <<<<<<<<<<<<<< + * if frag_type == "document_no_body": + * tree.body.decompose(recursive=True) +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_tree, __pyx_mstate_global->__pyx_n_u_root); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 97, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 97, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_2); + if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_2) != (0)) __PYX_ERR(6, 97, __pyx_L1_error); + __pyx_t_2 = 0; + __pyx_r = __pyx_t_4; + __pyx_t_4 = 0; + goto __pyx_L0; + + /* "selectolax/utils.pxi":95 + * if frag_type == "document": + * return [tree.root] + * if frag_type == "document_no_head": # <<<<<<<<<<<<<< + * tree.head.decompose(recursive=True) + * return [tree.root] +*/ + } + + /* "selectolax/utils.pxi":98 + * tree.head.decompose(recursive=True) + * return [tree.root] + * if frag_type == "document_no_body": # <<<<<<<<<<<<<< + * tree.body.decompose(recursive=True) + * return [tree.root] +*/ + __pyx_t_5 = (__Pyx_PyUnicode_Equals(__pyx_v_frag_type, __pyx_mstate_global->__pyx_n_u_document_no_body, Py_EQ)); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(6, 98, __pyx_L1_error) + if (__pyx_t_5) { + + /* "selectolax/utils.pxi":99 + * return [tree.root] + * if frag_type == "document_no_body": + * tree.body.decompose(recursive=True) # <<<<<<<<<<<<<< + * return [tree.root] + * if frag_type == "document_no_head_no_body": +*/ + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_tree, __pyx_mstate_global->__pyx_n_u_body_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 99, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_2 = __pyx_t_6; + __Pyx_INCREF(__pyx_t_2); + __pyx_t_3 = 0; + { + PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_2, NULL}; + __pyx_t_1 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 99, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_recursive, Py_True, __pyx_t_1, __pyx_callargs+1, 0) < (0)) __PYX_ERR(6, 99, __pyx_L1_error) + __pyx_t_4 = __Pyx_Object_VectorcallMethod_CallFromBuilder((PyObject*)__pyx_mstate_global->__pyx_n_u_decompose, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 99, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + } + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "selectolax/utils.pxi":100 + * if frag_type == "document_no_body": + * tree.body.decompose(recursive=True) + * return [tree.root] # <<<<<<<<<<<<<< + * if frag_type == "document_no_head_no_body": + * tree.head.decompose(recursive=True) +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_tree, __pyx_mstate_global->__pyx_n_u_root); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 100, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_6 = PyList_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 100, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_GIVEREF(__pyx_t_4); + if (__Pyx_PyList_SET_ITEM(__pyx_t_6, 0, __pyx_t_4) != (0)) __PYX_ERR(6, 100, __pyx_L1_error); + __pyx_t_4 = 0; + __pyx_r = __pyx_t_6; + __pyx_t_6 = 0; + goto __pyx_L0; + + /* "selectolax/utils.pxi":98 + * tree.head.decompose(recursive=True) + * return [tree.root] + * if frag_type == "document_no_body": # <<<<<<<<<<<<<< + * tree.body.decompose(recursive=True) + * return [tree.root] +*/ + } + + /* "selectolax/utils.pxi":101 + * tree.body.decompose(recursive=True) + * return [tree.root] + * if frag_type == "document_no_head_no_body": # <<<<<<<<<<<<<< + * tree.head.decompose(recursive=True) + * tree.body.decompose(recursive=True) +*/ + __pyx_t_5 = (__Pyx_PyUnicode_Equals(__pyx_v_frag_type, __pyx_mstate_global->__pyx_n_u_document_no_head_no_body, Py_EQ)); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(6, 101, __pyx_L1_error) + if (__pyx_t_5) { + + /* "selectolax/utils.pxi":102 + * return [tree.root] + * if frag_type == "document_no_head_no_body": + * tree.head.decompose(recursive=True) # <<<<<<<<<<<<<< + * tree.body.decompose(recursive=True) + * return [tree.root] +*/ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_tree, __pyx_mstate_global->__pyx_n_u_head_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 102, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_4 = __pyx_t_1; + __Pyx_INCREF(__pyx_t_4); + __pyx_t_3 = 0; + { + PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_4, NULL}; + __pyx_t_2 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 102, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_recursive, Py_True, __pyx_t_2, __pyx_callargs+1, 0) < (0)) __PYX_ERR(6, 102, __pyx_L1_error) + __pyx_t_6 = __Pyx_Object_VectorcallMethod_CallFromBuilder((PyObject*)__pyx_mstate_global->__pyx_n_u_decompose, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_2); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 102, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + } + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + + /* "selectolax/utils.pxi":103 + * if frag_type == "document_no_head_no_body": + * tree.head.decompose(recursive=True) + * tree.body.decompose(recursive=True) # <<<<<<<<<<<<<< + * return [tree.root] + * elif frag_type == "head": +*/ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_tree, __pyx_mstate_global->__pyx_n_u_body_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 103, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_1 = __pyx_t_2; + __Pyx_INCREF(__pyx_t_1); + __pyx_t_3 = 0; + { + PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_1, NULL}; + __pyx_t_4 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 103, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_recursive, Py_True, __pyx_t_4, __pyx_callargs+1, 0) < (0)) __PYX_ERR(6, 103, __pyx_L1_error) + __pyx_t_6 = __Pyx_Object_VectorcallMethod_CallFromBuilder((PyObject*)__pyx_mstate_global->__pyx_n_u_decompose, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_4); + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 103, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + } + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + + /* "selectolax/utils.pxi":104 + * tree.head.decompose(recursive=True) + * tree.body.decompose(recursive=True) + * return [tree.root] # <<<<<<<<<<<<<< + * elif frag_type == "head": + * tree.body.decompose(recursive=True) +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_tree, __pyx_mstate_global->__pyx_n_u_root); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 104, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 104, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_GIVEREF(__pyx_t_6); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_t_6) != (0)) __PYX_ERR(6, 104, __pyx_L1_error); + __pyx_t_6 = 0; + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; + + /* "selectolax/utils.pxi":101 + * tree.body.decompose(recursive=True) + * return [tree.root] + * if frag_type == "document_no_head_no_body": # <<<<<<<<<<<<<< + * tree.head.decompose(recursive=True) + * tree.body.decompose(recursive=True) +*/ + } + + /* "selectolax/utils.pxi":105 + * tree.body.decompose(recursive=True) + * return [tree.root] + * elif frag_type == "head": # <<<<<<<<<<<<<< + * tree.body.decompose(recursive=True) + * return [tree.head] +*/ + __pyx_t_5 = (__Pyx_PyUnicode_Equals(__pyx_v_frag_type, __pyx_mstate_global->__pyx_n_u_head_2, Py_EQ)); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(6, 105, __pyx_L1_error) + if (__pyx_t_5) { + + /* "selectolax/utils.pxi":106 + * return [tree.root] + * elif frag_type == "head": + * tree.body.decompose(recursive=True) # <<<<<<<<<<<<<< + * return [tree.head] + * elif frag_type == "body": +*/ + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_tree, __pyx_mstate_global->__pyx_n_u_body_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 106, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_6 = __pyx_t_4; + __Pyx_INCREF(__pyx_t_6); + __pyx_t_3 = 0; + { + PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_6, NULL}; + __pyx_t_1 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 106, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_recursive, Py_True, __pyx_t_1, __pyx_callargs+1, 0) < (0)) __PYX_ERR(6, 106, __pyx_L1_error) + __pyx_t_2 = __Pyx_Object_VectorcallMethod_CallFromBuilder((PyObject*)__pyx_mstate_global->__pyx_n_u_decompose, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_1); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 106, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "selectolax/utils.pxi":107 + * elif frag_type == "head": + * tree.body.decompose(recursive=True) + * return [tree.head] # <<<<<<<<<<<<<< + * elif frag_type == "body": + * tree.head.decompose(recursive=True) +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_tree, __pyx_mstate_global->__pyx_n_u_head_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 107, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 107, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_2); + if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_2) != (0)) __PYX_ERR(6, 107, __pyx_L1_error); + __pyx_t_2 = 0; + __pyx_r = __pyx_t_4; + __pyx_t_4 = 0; + goto __pyx_L0; + + /* "selectolax/utils.pxi":105 + * tree.body.decompose(recursive=True) + * return [tree.root] + * elif frag_type == "head": # <<<<<<<<<<<<<< + * tree.body.decompose(recursive=True) + * return [tree.head] +*/ + } + + /* "selectolax/utils.pxi":108 + * tree.body.decompose(recursive=True) + * return [tree.head] + * elif frag_type == "body": # <<<<<<<<<<<<<< + * tree.head.decompose(recursive=True) + * return [tree.body] +*/ + __pyx_t_5 = (__Pyx_PyUnicode_Equals(__pyx_v_frag_type, __pyx_mstate_global->__pyx_n_u_body_2, Py_EQ)); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(6, 108, __pyx_L1_error) + if (__pyx_t_5) { + + /* "selectolax/utils.pxi":109 + * return [tree.head] + * elif frag_type == "body": + * tree.head.decompose(recursive=True) # <<<<<<<<<<<<<< + * return [tree.body] + * elif frag_type == "head_and_body": +*/ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_tree, __pyx_mstate_global->__pyx_n_u_head_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 109, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __pyx_t_1; + __Pyx_INCREF(__pyx_t_2); + __pyx_t_3 = 0; + { + PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_2, NULL}; + __pyx_t_6 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 109, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_recursive, Py_True, __pyx_t_6, __pyx_callargs+1, 0) < (0)) __PYX_ERR(6, 109, __pyx_L1_error) + __pyx_t_4 = __Pyx_Object_VectorcallMethod_CallFromBuilder((PyObject*)__pyx_mstate_global->__pyx_n_u_decompose, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_6); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 109, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + } + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "selectolax/utils.pxi":110 + * elif frag_type == "body": + * tree.head.decompose(recursive=True) + * return [tree.body] # <<<<<<<<<<<<<< + * elif frag_type == "head_and_body": + * return [tree.head, tree.body] +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_tree, __pyx_mstate_global->__pyx_n_u_body_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 110, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 110, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_4); + if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 0, __pyx_t_4) != (0)) __PYX_ERR(6, 110, __pyx_L1_error); + __pyx_t_4 = 0; + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "selectolax/utils.pxi":108 + * tree.body.decompose(recursive=True) + * return [tree.head] + * elif frag_type == "body": # <<<<<<<<<<<<<< + * tree.head.decompose(recursive=True) + * return [tree.body] +*/ + } + + /* "selectolax/utils.pxi":111 + * tree.head.decompose(recursive=True) + * return [tree.body] + * elif frag_type == "head_and_body": # <<<<<<<<<<<<<< + * return [tree.head, tree.body] + * else: +*/ + __pyx_t_5 = (__Pyx_PyUnicode_Equals(__pyx_v_frag_type, __pyx_mstate_global->__pyx_n_u_head_and_body, Py_EQ)); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(6, 111, __pyx_L1_error) + if (__pyx_t_5) { + + /* "selectolax/utils.pxi":112 + * return [tree.body] + * elif frag_type == "head_and_body": + * return [tree.head, tree.body] # <<<<<<<<<<<<<< + * else: + * return [ +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_tree, __pyx_mstate_global->__pyx_n_u_head_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 112, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_tree, __pyx_mstate_global->__pyx_n_u_body_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 112, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_6 = PyList_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 112, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_GIVEREF(__pyx_t_1); + if (__Pyx_PyList_SET_ITEM(__pyx_t_6, 0, __pyx_t_1) != (0)) __PYX_ERR(6, 112, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_4); + if (__Pyx_PyList_SET_ITEM(__pyx_t_6, 1, __pyx_t_4) != (0)) __PYX_ERR(6, 112, __pyx_L1_error); + __pyx_t_1 = 0; + __pyx_t_4 = 0; + __pyx_r = __pyx_t_6; + __pyx_t_6 = 0; + goto __pyx_L0; + + /* "selectolax/utils.pxi":111 + * tree.head.decompose(recursive=True) + * return [tree.body] + * elif frag_type == "head_and_body": # <<<<<<<<<<<<<< + * return [tree.head, tree.body] + * else: +*/ + } + + /* "selectolax/utils.pxi":114 + * return [tree.head, tree.body] + * else: + * return [ # <<<<<<<<<<<<<< + * *tree.head.iter(include_text=True), + * *tree.body.iter(include_text=True), +*/ + /*else*/ { + __Pyx_XDECREF(__pyx_r); + + /* "selectolax/utils.pxi":115 + * else: + * return [ + * *tree.head.iter(include_text=True), # <<<<<<<<<<<<<< + * *tree.body.iter(include_text=True), + * ] +*/ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_tree, __pyx_mstate_global->__pyx_n_u_head_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 115, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_1 = __pyx_t_2; + __Pyx_INCREF(__pyx_t_1); + __pyx_t_3 = 0; + { + PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_1, NULL}; + __pyx_t_7 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 115, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_include_text, Py_True, __pyx_t_7, __pyx_callargs+1, 0) < (0)) __PYX_ERR(6, 115, __pyx_L1_error) + __pyx_t_4 = __Pyx_Object_VectorcallMethod_CallFromBuilder((PyObject*)__pyx_mstate_global->__pyx_n_u_iter_2, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_7); + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 115, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + } + __pyx_t_6 = __Pyx_PySequence_ListKeepNew(__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 114, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "selectolax/utils.pxi":116 + * return [ + * *tree.head.iter(include_text=True), + * *tree.body.iter(include_text=True), # <<<<<<<<<<<<<< + * ] +*/ + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_tree, __pyx_mstate_global->__pyx_n_u_body_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 116, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_2 = __pyx_t_7; + __Pyx_INCREF(__pyx_t_2); + __pyx_t_3 = 0; + { + PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_2, NULL}; + __pyx_t_1 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 116, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_include_text, Py_True, __pyx_t_1, __pyx_callargs+1, 0) < (0)) __PYX_ERR(6, 116, __pyx_L1_error) + __pyx_t_4 = __Pyx_Object_VectorcallMethod_CallFromBuilder((PyObject*)__pyx_mstate_global->__pyx_n_u_iter_2, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 116, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + } + if (__Pyx_PyList_Extend(__pyx_t_6, __pyx_t_4) < (0)) __PYX_ERR(6, 116, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_r = __pyx_t_6; + __pyx_t_6 = 0; + goto __pyx_L0; + } + + /* "selectolax/utils.pxi":81 + * + * + * def do_parse_fragment(html: str, parser_cls: ParserCls): # <<<<<<<<<<<<<< + * """ + * Given HTML, parse it into a list of Nodes, such that the nodes +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_AddTraceback("selectolax.parser.do_parse_fragment", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_tree); + __Pyx_XDECREF(__pyx_v_frag_type); + __Pyx_XDECREF(__pyx_v_html); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/parser.pyx":26 + * Same as in builtin's str.decode, i.e 'strict', 'ignore' or 'replace'. + * """ + * def __init__(self, html, detect_encoding=True, use_meta_tags=True, decode_errors = 'ignore'): # <<<<<<<<<<<<<< + * + * cdef size_t html_len +*/ + +/* Python wrapper */ +static int __pyx_pw_10selectolax_6parser_10HTMLParser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static int __pyx_pw_10selectolax_6parser_10HTMLParser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_html = 0; + PyObject *__pyx_v_detect_encoding = 0; + PyObject *__pyx_v_use_meta_tags = 0; + PyObject *__pyx_v_decode_errors = 0; + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[4] = {0,0,0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1; + #endif + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_html,&__pyx_mstate_global->__pyx_n_u_detect_encoding,&__pyx_mstate_global->__pyx_n_u_use_meta_tags,&__pyx_mstate_global->__pyx_n_u_decode_errors,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 26, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 4: + values[3] = __Pyx_ArgRef_VARARGS(__pyx_args, 3); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 26, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 3: + values[2] = __Pyx_ArgRef_VARARGS(__pyx_args, 2); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 26, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 2: + values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 26, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 26, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__init__", 0) < (0)) __PYX_ERR(0, 26, __pyx_L3_error) + if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_True)); + if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_True)); + if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_n_u_ignore)); + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 4, i); __PYX_ERR(0, 26, __pyx_L3_error) } + } + } else { + switch (__pyx_nargs) { + case 4: + values[3] = __Pyx_ArgRef_VARARGS(__pyx_args, 3); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 26, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 3: + values[2] = __Pyx_ArgRef_VARARGS(__pyx_args, 2); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 26, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 2: + values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 26, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 26, __pyx_L3_error) + break; + default: goto __pyx_L5_argtuple_error; + } + if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_True)); + if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_True)); + if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_n_u_ignore)); + } + __pyx_v_html = values[0]; + __pyx_v_detect_encoding = values[1]; + __pyx_v_use_meta_tags = values[2]; + __pyx_v_decode_errors = values[3]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 4, __pyx_nargs); __PYX_ERR(0, 26, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.parser.HTMLParser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return -1; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_10selectolax_6parser_10HTMLParser___init__(((struct __pyx_obj_10selectolax_6parser_HTMLParser *)__pyx_v_self), __pyx_v_html, __pyx_v_detect_encoding, __pyx_v_use_meta_tags, __pyx_v_decode_errors); + + /* function exit code */ + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_10selectolax_6parser_10HTMLParser___init__(struct __pyx_obj_10selectolax_6parser_HTMLParser *__pyx_v_self, PyObject *__pyx_v_html, PyObject *__pyx_v_detect_encoding, PyObject *__pyx_v_use_meta_tags, PyObject *__pyx_v_decode_errors) { + size_t __pyx_v_html_len; + char *__pyx_v_html_chars; + PyObject *__pyx_v_bytes_html = NULL; + int __pyx_r; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + size_t __pyx_t_5; + PyObject *__pyx_t_6 = NULL; + PyObject *(*__pyx_t_7)(PyObject *); + char *__pyx_t_8; + int __pyx_t_9; + int __pyx_t_10; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__init__", 0); + + /* "selectolax/parser.pyx":31 + * cdef char* html_chars + * + * self.detect_encoding = detect_encoding # <<<<<<<<<<<<<< + * self.use_meta_tags = use_meta_tags + * self.decode_errors = decode_errors +*/ + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_detect_encoding); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 31, __pyx_L1_error) + __pyx_v_self->detect_encoding = __pyx_t_1; + + /* "selectolax/parser.pyx":32 + * + * self.detect_encoding = detect_encoding + * self.use_meta_tags = use_meta_tags # <<<<<<<<<<<<<< + * self.decode_errors = decode_errors + * self._encoding = MyENCODING_UTF_8 +*/ + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_use_meta_tags); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 32, __pyx_L1_error) + __pyx_v_self->use_meta_tags = __pyx_t_1; + + /* "selectolax/parser.pyx":33 + * self.detect_encoding = detect_encoding + * self.use_meta_tags = use_meta_tags + * self.decode_errors = decode_errors # <<<<<<<<<<<<<< + * self._encoding = MyENCODING_UTF_8 + * +*/ + __pyx_t_2 = __pyx_v_decode_errors; + __Pyx_INCREF(__pyx_t_2); + if (!(likely(PyUnicode_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(0, 33, __pyx_L1_error) + __Pyx_GIVEREF(__pyx_t_2); + __Pyx_GOTREF(__pyx_v_self->decode_errors); + __Pyx_DECREF(__pyx_v_self->decode_errors); + __pyx_v_self->decode_errors = ((PyObject*)__pyx_t_2); + __pyx_t_2 = 0; + + /* "selectolax/parser.pyx":34 + * self.use_meta_tags = use_meta_tags + * self.decode_errors = decode_errors + * self._encoding = MyENCODING_UTF_8 # <<<<<<<<<<<<<< + * + * bytes_html, html_len = preprocess_input(html, decode_errors) +*/ + __pyx_v_self->_encoding = MyENCODING_UTF_8; + + /* "selectolax/parser.pyx":36 + * self._encoding = MyENCODING_UTF_8 + * + * bytes_html, html_len = preprocess_input(html, decode_errors) # <<<<<<<<<<<<<< + * html_chars = bytes_html + * +*/ + __pyx_t_3 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_preprocess_input); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 36, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4); + assert(__pyx_t_3); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_4, __pyx__function); + __pyx_t_5 = 0; + } + #endif + { + PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_v_html, __pyx_v_decode_errors}; + __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_5, (3-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 36, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + } + if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) { + PyObject* sequence = __pyx_t_2; + Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); + if (unlikely(size != 2)) { + if (size > 2) __Pyx_RaiseTooManyValuesError(2); + else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); + __PYX_ERR(0, 36, __pyx_L1_error) + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + if (likely(PyTuple_CheckExact(sequence))) { + __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); + __Pyx_INCREF(__pyx_t_4); + __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); + __Pyx_INCREF(__pyx_t_3); + } else { + __pyx_t_4 = __Pyx_PyList_GetItemRefFast(sequence, 0, __Pyx_ReferenceSharing_SharedReference); + if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 36, __pyx_L1_error) + __Pyx_XGOTREF(__pyx_t_4); + __pyx_t_3 = __Pyx_PyList_GetItemRefFast(sequence, 1, __Pyx_ReferenceSharing_SharedReference); + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 36, __pyx_L1_error) + __Pyx_XGOTREF(__pyx_t_3); + } + #else + __pyx_t_4 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 36, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 36, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + #endif + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } else { + Py_ssize_t index = -1; + __pyx_t_6 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 36, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_7 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_6); + index = 0; __pyx_t_4 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_4)) goto __pyx_L3_unpacking_failed; + __Pyx_GOTREF(__pyx_t_4); + index = 1; __pyx_t_3 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_3)) goto __pyx_L3_unpacking_failed; + __Pyx_GOTREF(__pyx_t_3); + if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_6), 2) < (0)) __PYX_ERR(0, 36, __pyx_L1_error) + __pyx_t_7 = NULL; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + goto __pyx_L4_unpacking_done; + __pyx_L3_unpacking_failed:; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_7 = NULL; + if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); + __PYX_ERR(0, 36, __pyx_L1_error) + __pyx_L4_unpacking_done:; + } + __pyx_t_5 = __Pyx_PyLong_As_size_t(__pyx_t_3); if (unlikely((__pyx_t_5 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 36, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_v_bytes_html = __pyx_t_4; + __pyx_t_4 = 0; + __pyx_v_html_len = __pyx_t_5; + + /* "selectolax/parser.pyx":37 + * + * bytes_html, html_len = preprocess_input(html, decode_errors) + * html_chars = bytes_html # <<<<<<<<<<<<<< + * + * if detect_encoding and isinstance(html, bytes): +*/ + __pyx_t_8 = __Pyx_PyObject_AsWritableString(__pyx_v_bytes_html); if (unlikely((!__pyx_t_8) && PyErr_Occurred())) __PYX_ERR(0, 37, __pyx_L1_error) + __pyx_v_html_chars = ((char *)__pyx_t_8); + + /* "selectolax/parser.pyx":39 + * html_chars = bytes_html + * + * if detect_encoding and isinstance(html, bytes): # <<<<<<<<<<<<<< + * self._detect_encoding(html_chars, html_len) + * +*/ + __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_detect_encoding); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 39, __pyx_L1_error) + if (__pyx_t_9) { + } else { + __pyx_t_1 = __pyx_t_9; + goto __pyx_L6_bool_binop_done; + } + __pyx_t_9 = PyBytes_Check(__pyx_v_html); + __pyx_t_1 = __pyx_t_9; + __pyx_L6_bool_binop_done:; + if (__pyx_t_1) { + + /* "selectolax/parser.pyx":40 + * + * if detect_encoding and isinstance(html, bytes): + * self._detect_encoding(html_chars, html_len) # <<<<<<<<<<<<<< + * + * self._parse_html(html_chars, html_len) +*/ + ((struct __pyx_vtabstruct_10selectolax_6parser_HTMLParser *)__pyx_v_self->__pyx_vtab)->_detect_encoding(__pyx_v_self, __pyx_v_html_chars, __pyx_v_html_len); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 40, __pyx_L1_error) + + /* "selectolax/parser.pyx":39 + * html_chars = bytes_html + * + * if detect_encoding and isinstance(html, bytes): # <<<<<<<<<<<<<< + * self._detect_encoding(html_chars, html_len) + * +*/ + } + + /* "selectolax/parser.pyx":42 + * self._detect_encoding(html_chars, html_len) + * + * self._parse_html(html_chars, html_len) # <<<<<<<<<<<<<< + * + * self.raw_html = bytes_html +*/ + __pyx_t_10 = ((struct __pyx_vtabstruct_10selectolax_6parser_HTMLParser *)__pyx_v_self->__pyx_vtab)->_parse_html(__pyx_v_self, __pyx_v_html_chars, __pyx_v_html_len); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 42, __pyx_L1_error) + + /* "selectolax/parser.pyx":44 + * self._parse_html(html_chars, html_len) + * + * self.raw_html = bytes_html # <<<<<<<<<<<<<< + * self.cached_script_texts = None + * self.cached_script_srcs = None +*/ + __pyx_t_2 = __pyx_v_bytes_html; + __Pyx_INCREF(__pyx_t_2); + if (!(likely(PyBytes_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("bytes", __pyx_t_2))) __PYX_ERR(0, 44, __pyx_L1_error) + __Pyx_GIVEREF(__pyx_t_2); + __Pyx_GOTREF(__pyx_v_self->raw_html); + __Pyx_DECREF(__pyx_v_self->raw_html); + __pyx_v_self->raw_html = ((PyObject*)__pyx_t_2); + __pyx_t_2 = 0; + + /* "selectolax/parser.pyx":45 + * + * self.raw_html = bytes_html + * self.cached_script_texts = None # <<<<<<<<<<<<<< + * self.cached_script_srcs = None + * +*/ + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + __Pyx_GOTREF(__pyx_v_self->cached_script_texts); + __Pyx_DECREF(__pyx_v_self->cached_script_texts); + __pyx_v_self->cached_script_texts = Py_None; + + /* "selectolax/parser.pyx":46 + * self.raw_html = bytes_html + * self.cached_script_texts = None + * self.cached_script_srcs = None # <<<<<<<<<<<<<< + * + * def css(self, str query): +*/ + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + __Pyx_GOTREF(__pyx_v_self->cached_script_srcs); + __Pyx_DECREF(__pyx_v_self->cached_script_srcs); + __pyx_v_self->cached_script_srcs = Py_None; + + /* "selectolax/parser.pyx":26 + * Same as in builtin's str.decode, i.e 'strict', 'ignore' or 'replace'. + * """ + * def __init__(self, html, detect_encoding=True, use_meta_tags=True, decode_errors = 'ignore'): # <<<<<<<<<<<<<< + * + * cdef size_t html_len +*/ + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_AddTraceback("selectolax.parser.HTMLParser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_bytes_html); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/parser.pyx":48 + * self.cached_script_srcs = None + * + * def css(self, str query): # <<<<<<<<<<<<<< + * """A CSS selector. + * +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_10HTMLParser_3css(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6parser_10HTMLParser_2css, "HTMLParser.css(self, str query)\n\nA CSS selector.\n\nMatches pattern `query` against HTML tree.\n`CSS selectors reference `_.\n\nParameters\n----------\nquery : str\n CSS selector (e.g. \"div > :nth-child(2n+1):not(:has(a))\").\n\nReturns\n-------\nselector : list of `Node` objects"); +static PyMethodDef __pyx_mdef_10selectolax_6parser_10HTMLParser_3css = {"css", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_10HTMLParser_3css, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_10HTMLParser_2css}; +static PyObject *__pyx_pw_10selectolax_6parser_10HTMLParser_3css(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_query = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("css (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_query,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 48, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 48, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "css", 0) < (0)) __PYX_ERR(0, 48, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("css", 1, 1, 1, i); __PYX_ERR(0, 48, __pyx_L3_error) } + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 48, __pyx_L3_error) + } + __pyx_v_query = ((PyObject*)values[0]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("css", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 48, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.parser.HTMLParser.css", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_query), (&PyUnicode_Type), 1, "query", 1))) __PYX_ERR(0, 48, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6parser_10HTMLParser_2css(((struct __pyx_obj_10selectolax_6parser_HTMLParser *)__pyx_v_self), __pyx_v_query); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_10HTMLParser_2css(struct __pyx_obj_10selectolax_6parser_HTMLParser *__pyx_v_self, PyObject *__pyx_v_query) { + struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_node = 0; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + size_t __pyx_t_3; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("css", 0); + + /* "selectolax/parser.pyx":65 + * """ + * + * cdef Node node = Node.new(self.html_tree.node_html, self) # <<<<<<<<<<<<<< + * return node.css(query) + * +*/ + __pyx_t_1 = ((PyObject *)__pyx_f_10selectolax_6parser_4Node_new(__pyx_v_self->html_tree->node_html, __pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 65, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v_node = ((struct __pyx_obj_10selectolax_6parser_Node *)__pyx_t_1); + __pyx_t_1 = 0; + + /* "selectolax/parser.pyx":66 + * + * cdef Node node = Node.new(self.html_tree.node_html, self) + * return node.css(query) # <<<<<<<<<<<<<< + * + * def css_first(self, str query, default=None, strict=False): +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_2 = ((PyObject *)__pyx_v_node); + __Pyx_INCREF(__pyx_t_2); + __pyx_t_3 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_query}; + __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_css, __pyx_callargs+__pyx_t_3, (2-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 66, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "selectolax/parser.pyx":48 + * self.cached_script_srcs = None + * + * def css(self, str query): # <<<<<<<<<<<<<< + * """A CSS selector. + * +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("selectolax.parser.HTMLParser.css", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF((PyObject *)__pyx_v_node); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/parser.pyx":68 + * return node.css(query) + * + * def css_first(self, str query, default=None, strict=False): # <<<<<<<<<<<<<< + * """Same as `css` but returns only the first match. + * +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_10HTMLParser_5css_first(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6parser_10HTMLParser_4css_first, "HTMLParser.css_first(self, str query, default=None, strict=False)\n\nSame as `css` but returns only the first match.\n\nParameters\n----------\n\nquery : str\ndefault : Any, default None\n Default value to return if there is no match.\nstrict: bool, default False\n Set to True if you want to check if there is strictly only one match in the document.\n\n\nReturns\n-------\nselector : `Node` object"); +static PyMethodDef __pyx_mdef_10selectolax_6parser_10HTMLParser_5css_first = {"css_first", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_10HTMLParser_5css_first, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_10HTMLParser_4css_first}; +static PyObject *__pyx_pw_10selectolax_6parser_10HTMLParser_5css_first(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_query = 0; + PyObject *__pyx_v_default = 0; + PyObject *__pyx_v_strict = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[3] = {0,0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("css_first (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_query,&__pyx_mstate_global->__pyx_n_u_default,&__pyx_mstate_global->__pyx_n_u_strict,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 68, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 3: + values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 68, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 68, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 68, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "css_first", 0) < (0)) __PYX_ERR(0, 68, __pyx_L3_error) + if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None)); + if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_False)); + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("css_first", 0, 1, 3, i); __PYX_ERR(0, 68, __pyx_L3_error) } + } + } else { + switch (__pyx_nargs) { + case 3: + values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 68, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 68, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 68, __pyx_L3_error) + break; + default: goto __pyx_L5_argtuple_error; + } + if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None)); + if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_False)); + } + __pyx_v_query = ((PyObject*)values[0]); + __pyx_v_default = values[1]; + __pyx_v_strict = values[2]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("css_first", 0, 1, 3, __pyx_nargs); __PYX_ERR(0, 68, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.parser.HTMLParser.css_first", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_query), (&PyUnicode_Type), 1, "query", 1))) __PYX_ERR(0, 68, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6parser_10HTMLParser_4css_first(((struct __pyx_obj_10selectolax_6parser_HTMLParser *)__pyx_v_self), __pyx_v_query, __pyx_v_default, __pyx_v_strict); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_10HTMLParser_4css_first(struct __pyx_obj_10selectolax_6parser_HTMLParser *__pyx_v_self, PyObject *__pyx_v_query, PyObject *__pyx_v_default, PyObject *__pyx_v_strict) { + struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_node = 0; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + size_t __pyx_t_3; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("css_first", 0); + + /* "selectolax/parser.pyx":87 + * """ + * + * cdef Node node = Node.new(self.html_tree.node_html, self) # <<<<<<<<<<<<<< + * return node.css_first(query, default, strict) + * +*/ + __pyx_t_1 = ((PyObject *)__pyx_f_10selectolax_6parser_4Node_new(__pyx_v_self->html_tree->node_html, __pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 87, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v_node = ((struct __pyx_obj_10selectolax_6parser_Node *)__pyx_t_1); + __pyx_t_1 = 0; + + /* "selectolax/parser.pyx":88 + * + * cdef Node node = Node.new(self.html_tree.node_html, self) + * return node.css_first(query, default, strict) # <<<<<<<<<<<<<< + * + * cdef void _detect_encoding(self, char* html, size_t html_len) nogil: +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_2 = ((PyObject *)__pyx_v_node); + __Pyx_INCREF(__pyx_t_2); + __pyx_t_3 = 0; + { + PyObject *__pyx_callargs[4] = {__pyx_t_2, __pyx_v_query, __pyx_v_default, __pyx_v_strict}; + __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_css_first, __pyx_callargs+__pyx_t_3, (4-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 88, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "selectolax/parser.pyx":68 + * return node.css(query) + * + * def css_first(self, str query, default=None, strict=False): # <<<<<<<<<<<<<< + * """Same as `css` but returns only the first match. + * +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("selectolax.parser.HTMLParser.css_first", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF((PyObject *)__pyx_v_node); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/parser.pyx":90 + * return node.css_first(query, default, strict) + * + * cdef void _detect_encoding(self, char* html, size_t html_len) nogil: # <<<<<<<<<<<<<< + * cdef myencoding_t encoding = MyENCODING_DEFAULT + * +*/ + +static void __pyx_f_10selectolax_6parser_10HTMLParser__detect_encoding(struct __pyx_obj_10selectolax_6parser_HTMLParser *__pyx_v_self, char *__pyx_v_html, size_t __pyx_v_html_len) { + myencoding_t __pyx_v_encoding; + int __pyx_t_1; + + /* "selectolax/parser.pyx":91 + * + * cdef void _detect_encoding(self, char* html, size_t html_len) nogil: + * cdef myencoding_t encoding = MyENCODING_DEFAULT # <<<<<<<<<<<<<< + * + * if self.use_meta_tags: +*/ + __pyx_v_encoding = MyENCODING_DEFAULT; + + /* "selectolax/parser.pyx":93 + * cdef myencoding_t encoding = MyENCODING_DEFAULT + * + * if self.use_meta_tags: # <<<<<<<<<<<<<< + * encoding = myencoding_prescan_stream_to_determine_encoding(html, html_len) + * if encoding != MyENCODING_DEFAULT and encoding != MyENCODING_NOT_DETERMINED: +*/ + if (__pyx_v_self->use_meta_tags) { + + /* "selectolax/parser.pyx":94 + * + * if self.use_meta_tags: + * encoding = myencoding_prescan_stream_to_determine_encoding(html, html_len) # <<<<<<<<<<<<<< + * if encoding != MyENCODING_DEFAULT and encoding != MyENCODING_NOT_DETERMINED: + * self._encoding = encoding +*/ + __pyx_v_encoding = myencoding_prescan_stream_to_determine_encoding(__pyx_v_html, __pyx_v_html_len); + + /* "selectolax/parser.pyx":95 + * if self.use_meta_tags: + * encoding = myencoding_prescan_stream_to_determine_encoding(html, html_len) + * if encoding != MyENCODING_DEFAULT and encoding != MyENCODING_NOT_DETERMINED: # <<<<<<<<<<<<<< + * self._encoding = encoding + * return +*/ + switch (__pyx_v_encoding) { + case MyENCODING_DEFAULT: + case MyENCODING_NOT_DETERMINED: + __pyx_t_1 = 0; + break; + default: + __pyx_t_1 = 1; + break; + } + if (__pyx_t_1) { + + /* "selectolax/parser.pyx":96 + * encoding = myencoding_prescan_stream_to_determine_encoding(html, html_len) + * if encoding != MyENCODING_DEFAULT and encoding != MyENCODING_NOT_DETERMINED: + * self._encoding = encoding # <<<<<<<<<<<<<< + * return + * +*/ + __pyx_v_self->_encoding = __pyx_v_encoding; + + /* "selectolax/parser.pyx":97 + * if encoding != MyENCODING_DEFAULT and encoding != MyENCODING_NOT_DETERMINED: + * self._encoding = encoding + * return # <<<<<<<<<<<<<< + * + * if not myencoding_detect_bom(html, html_len, &encoding): +*/ + goto __pyx_L0; + + /* "selectolax/parser.pyx":95 + * if self.use_meta_tags: + * encoding = myencoding_prescan_stream_to_determine_encoding(html, html_len) + * if encoding != MyENCODING_DEFAULT and encoding != MyENCODING_NOT_DETERMINED: # <<<<<<<<<<<<<< + * self._encoding = encoding + * return +*/ + } + + /* "selectolax/parser.pyx":93 + * cdef myencoding_t encoding = MyENCODING_DEFAULT + * + * if self.use_meta_tags: # <<<<<<<<<<<<<< + * encoding = myencoding_prescan_stream_to_determine_encoding(html, html_len) + * if encoding != MyENCODING_DEFAULT and encoding != MyENCODING_NOT_DETERMINED: +*/ + } + + /* "selectolax/parser.pyx":99 + * return + * + * if not myencoding_detect_bom(html, html_len, &encoding): # <<<<<<<<<<<<<< + * myencoding_detect(html, html_len, &encoding) + * +*/ + __pyx_t_1 = (!myencoding_detect_bom(__pyx_v_html, __pyx_v_html_len, (&__pyx_v_encoding))); + if (__pyx_t_1) { + + /* "selectolax/parser.pyx":100 + * + * if not myencoding_detect_bom(html, html_len, &encoding): + * myencoding_detect(html, html_len, &encoding) # <<<<<<<<<<<<<< + * + * self._encoding = encoding +*/ + (void)(myencoding_detect(__pyx_v_html, __pyx_v_html_len, (&__pyx_v_encoding))); + + /* "selectolax/parser.pyx":99 + * return + * + * if not myencoding_detect_bom(html, html_len, &encoding): # <<<<<<<<<<<<<< + * myencoding_detect(html, html_len, &encoding) + * +*/ + } + + /* "selectolax/parser.pyx":102 + * myencoding_detect(html, html_len, &encoding) + * + * self._encoding = encoding # <<<<<<<<<<<<<< + * + * cdef int _parse_html(self, char* html, size_t html_len) except -1: +*/ + __pyx_v_self->_encoding = __pyx_v_encoding; + + /* "selectolax/parser.pyx":90 + * return node.css_first(query, default, strict) + * + * cdef void _detect_encoding(self, char* html, size_t html_len) nogil: # <<<<<<<<<<<<<< + * cdef myencoding_t encoding = MyENCODING_DEFAULT + * +*/ + + /* function exit code */ + __pyx_L0:; +} + +/* "selectolax/parser.pyx":104 + * self._encoding = encoding + * + * cdef int _parse_html(self, char* html, size_t html_len) except -1: # <<<<<<<<<<<<<< + * cdef myhtml_t* myhtml + * cdef mystatus_t status +*/ + +static int __pyx_f_10selectolax_6parser_10HTMLParser__parse_html(struct __pyx_obj_10selectolax_6parser_HTMLParser *__pyx_v_self, char *__pyx_v_html, size_t __pyx_v_html_len) { + myhtml_t *__pyx_v_myhtml; + mystatus_t __pyx_v_status; + int __pyx_r; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("_parse_html", 0); + + /* "selectolax/parser.pyx":108 + * cdef mystatus_t status + * + * with nogil: # <<<<<<<<<<<<<< + * myhtml = myhtml_create() + * status = myhtml_init(myhtml, MyHTML_OPTIONS_DEFAULT, 1, 0) +*/ + { + PyThreadState * _save; + _save = PyEval_SaveThread(); + __Pyx_FastGIL_Remember(); + /*try:*/ { + + /* "selectolax/parser.pyx":109 + * + * with nogil: + * myhtml = myhtml_create() # <<<<<<<<<<<<<< + * status = myhtml_init(myhtml, MyHTML_OPTIONS_DEFAULT, 1, 0) + * +*/ + __pyx_v_myhtml = myhtml_create(); + + /* "selectolax/parser.pyx":110 + * with nogil: + * myhtml = myhtml_create() + * status = myhtml_init(myhtml, MyHTML_OPTIONS_DEFAULT, 1, 0) # <<<<<<<<<<<<<< + * + * if status != 0: +*/ + __pyx_v_status = myhtml_init(__pyx_v_myhtml, MyHTML_OPTIONS_DEFAULT, 1, 0); + } + + /* "selectolax/parser.pyx":108 + * cdef mystatus_t status + * + * with nogil: # <<<<<<<<<<<<<< + * myhtml = myhtml_create() + * status = myhtml_init(myhtml, MyHTML_OPTIONS_DEFAULT, 1, 0) +*/ + /*finally:*/ { + /*normal exit:*/{ + __Pyx_FastGIL_Forget(); + PyEval_RestoreThread(_save); + goto __pyx_L5; + } + __pyx_L5:; + } + } + + /* "selectolax/parser.pyx":112 + * status = myhtml_init(myhtml, MyHTML_OPTIONS_DEFAULT, 1, 0) + * + * if status != 0: # <<<<<<<<<<<<<< + * PyErr_SetObject(RuntimeError, "Can't init MyHTML object.") + * return -1 +*/ + __pyx_t_1 = (__pyx_v_status != 0); + if (__pyx_t_1) { + + /* "selectolax/parser.pyx":113 + * + * if status != 0: + * PyErr_SetObject(RuntimeError, "Can't init MyHTML object.") # <<<<<<<<<<<<<< + * return -1 + * +*/ + PyErr_SetObject(((PyObject *)(((PyTypeObject*)PyExc_RuntimeError))), __pyx_mstate_global->__pyx_kp_u_Can_t_init_MyHTML_object); + + /* "selectolax/parser.pyx":114 + * if status != 0: + * PyErr_SetObject(RuntimeError, "Can't init MyHTML object.") + * return -1 # <<<<<<<<<<<<<< + * + * with nogil: +*/ + __pyx_r = -1; + goto __pyx_L0; + + /* "selectolax/parser.pyx":112 + * status = myhtml_init(myhtml, MyHTML_OPTIONS_DEFAULT, 1, 0) + * + * if status != 0: # <<<<<<<<<<<<<< + * PyErr_SetObject(RuntimeError, "Can't init MyHTML object.") + * return -1 +*/ + } + + /* "selectolax/parser.pyx":116 + * return -1 + * + * with nogil: # <<<<<<<<<<<<<< + * self.html_tree = myhtml_tree_create() + * status = myhtml_tree_init(self.html_tree, myhtml) +*/ + { + PyThreadState * _save; + _save = PyEval_SaveThread(); + __Pyx_FastGIL_Remember(); + /*try:*/ { + + /* "selectolax/parser.pyx":117 + * + * with nogil: + * self.html_tree = myhtml_tree_create() # <<<<<<<<<<<<<< + * status = myhtml_tree_init(self.html_tree, myhtml) + * +*/ + __pyx_v_self->html_tree = myhtml_tree_create(); + + /* "selectolax/parser.pyx":118 + * with nogil: + * self.html_tree = myhtml_tree_create() + * status = myhtml_tree_init(self.html_tree, myhtml) # <<<<<<<<<<<<<< + * + * if status != 0: +*/ + __pyx_v_status = myhtml_tree_init(__pyx_v_self->html_tree, __pyx_v_myhtml); + } + + /* "selectolax/parser.pyx":116 + * return -1 + * + * with nogil: # <<<<<<<<<<<<<< + * self.html_tree = myhtml_tree_create() + * status = myhtml_tree_init(self.html_tree, myhtml) +*/ + /*finally:*/ { + /*normal exit:*/{ + __Pyx_FastGIL_Forget(); + PyEval_RestoreThread(_save); + goto __pyx_L9; + } + __pyx_L9:; + } + } + + /* "selectolax/parser.pyx":120 + * status = myhtml_tree_init(self.html_tree, myhtml) + * + * if status != 0: # <<<<<<<<<<<<<< + * PyErr_SetObject(RuntimeError, "Can't init MyHTML Tree object.") + * return -1 +*/ + __pyx_t_1 = (__pyx_v_status != 0); + if (__pyx_t_1) { + + /* "selectolax/parser.pyx":121 + * + * if status != 0: + * PyErr_SetObject(RuntimeError, "Can't init MyHTML Tree object.") # <<<<<<<<<<<<<< + * return -1 + * +*/ + PyErr_SetObject(((PyObject *)(((PyTypeObject*)PyExc_RuntimeError))), __pyx_mstate_global->__pyx_kp_u_Can_t_init_MyHTML_Tree_object); + + /* "selectolax/parser.pyx":122 + * if status != 0: + * PyErr_SetObject(RuntimeError, "Can't init MyHTML Tree object.") + * return -1 # <<<<<<<<<<<<<< + * + * with nogil: +*/ + __pyx_r = -1; + goto __pyx_L0; + + /* "selectolax/parser.pyx":120 + * status = myhtml_tree_init(self.html_tree, myhtml) + * + * if status != 0: # <<<<<<<<<<<<<< + * PyErr_SetObject(RuntimeError, "Can't init MyHTML Tree object.") + * return -1 +*/ + } + + /* "selectolax/parser.pyx":124 + * return -1 + * + * with nogil: # <<<<<<<<<<<<<< + * status = myhtml_parse(self.html_tree, self._encoding, html, html_len) + * +*/ + { + PyThreadState * _save; + _save = PyEval_SaveThread(); + __Pyx_FastGIL_Remember(); + /*try:*/ { + + /* "selectolax/parser.pyx":125 + * + * with nogil: + * status = myhtml_parse(self.html_tree, self._encoding, html, html_len) # <<<<<<<<<<<<<< + * + * if status != 0: +*/ + __pyx_v_status = myhtml_parse(__pyx_v_self->html_tree, __pyx_v_self->_encoding, __pyx_v_html, __pyx_v_html_len); + } + + /* "selectolax/parser.pyx":124 + * return -1 + * + * with nogil: # <<<<<<<<<<<<<< + * status = myhtml_parse(self.html_tree, self._encoding, html, html_len) + * +*/ + /*finally:*/ { + /*normal exit:*/{ + __Pyx_FastGIL_Forget(); + PyEval_RestoreThread(_save); + goto __pyx_L13; + } + __pyx_L13:; + } + } + + /* "selectolax/parser.pyx":127 + * status = myhtml_parse(self.html_tree, self._encoding, html, html_len) + * + * if status != 0: # <<<<<<<<<<<<<< + * PyErr_SetObject(RuntimeError, "Can't parse HTML (status code: %d)" % status) + * return -1 +*/ + __pyx_t_1 = (__pyx_v_status != 0); + if (__pyx_t_1) { + + /* "selectolax/parser.pyx":128 + * + * if status != 0: + * PyErr_SetObject(RuntimeError, "Can't parse HTML (status code: %d)" % status) # <<<<<<<<<<<<<< + * return -1 + * +*/ + __pyx_t_2 = __Pyx_PyLong_From_mystatus_t(__pyx_v_status); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 128, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = PyUnicode_Format(__pyx_mstate_global->__pyx_kp_u_Can_t_parse_HTML_status_code_d, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 128, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + PyErr_SetObject(((PyObject *)(((PyTypeObject*)PyExc_RuntimeError))), __pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "selectolax/parser.pyx":129 + * if status != 0: + * PyErr_SetObject(RuntimeError, "Can't parse HTML (status code: %d)" % status) + * return -1 # <<<<<<<<<<<<<< + * + * if self.html_tree.node_html == NULL: +*/ + __pyx_r = -1; + goto __pyx_L0; + + /* "selectolax/parser.pyx":127 + * status = myhtml_parse(self.html_tree, self._encoding, html, html_len) + * + * if status != 0: # <<<<<<<<<<<<<< + * PyErr_SetObject(RuntimeError, "Can't parse HTML (status code: %d)" % status) + * return -1 +*/ + } + + /* "selectolax/parser.pyx":131 + * return -1 + * + * if self.html_tree.node_html == NULL: # <<<<<<<<<<<<<< + * PyErr_SetObject(RuntimeError, "html_tree is still NULL even after parsing ") + * return -1 +*/ + __pyx_t_1 = (__pyx_v_self->html_tree->node_html == NULL); + if (__pyx_t_1) { + + /* "selectolax/parser.pyx":132 + * + * if self.html_tree.node_html == NULL: + * PyErr_SetObject(RuntimeError, "html_tree is still NULL even after parsing ") # <<<<<<<<<<<<<< + * return -1 + * return 0 +*/ + PyErr_SetObject(((PyObject *)(((PyTypeObject*)PyExc_RuntimeError))), __pyx_mstate_global->__pyx_kp_u_html_tree_is_still_NULL_even_aft); + + /* "selectolax/parser.pyx":133 + * if self.html_tree.node_html == NULL: + * PyErr_SetObject(RuntimeError, "html_tree is still NULL even after parsing ") + * return -1 # <<<<<<<<<<<<<< + * return 0 + * +*/ + __pyx_r = -1; + goto __pyx_L0; + + /* "selectolax/parser.pyx":131 + * return -1 + * + * if self.html_tree.node_html == NULL: # <<<<<<<<<<<<<< + * PyErr_SetObject(RuntimeError, "html_tree is still NULL even after parsing ") + * return -1 +*/ + } + + /* "selectolax/parser.pyx":134 + * PyErr_SetObject(RuntimeError, "html_tree is still NULL even after parsing ") + * return -1 + * return 0 # <<<<<<<<<<<<<< + * + * @property +*/ + __pyx_r = 0; + goto __pyx_L0; + + /* "selectolax/parser.pyx":104 + * self._encoding = encoding + * + * cdef int _parse_html(self, char* html, size_t html_len) except -1: # <<<<<<<<<<<<<< + * cdef myhtml_t* myhtml + * cdef mystatus_t status +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("selectolax.parser.HTMLParser._parse_html", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/parser.pyx":136 + * return 0 + * + * @property # <<<<<<<<<<<<<< + * def input_encoding(self): + * """Return encoding of the HTML document. +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_10HTMLParser_14input_encoding_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_10selectolax_6parser_10HTMLParser_14input_encoding_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6parser_10HTMLParser_14input_encoding___get__(((struct __pyx_obj_10selectolax_6parser_HTMLParser *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_10HTMLParser_14input_encoding___get__(struct __pyx_obj_10selectolax_6parser_HTMLParser *__pyx_v_self) { + char const *__pyx_v_encoding; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + Py_ssize_t __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + + /* "selectolax/parser.pyx":143 + * """ + * cdef const char* encoding + * encoding = myencoding_name_by_id(self._encoding, NULL) # <<<<<<<<<<<<<< + * + * if encoding != NULL: +*/ + __pyx_v_encoding = myencoding_name_by_id(__pyx_v_self->_encoding, NULL); + + /* "selectolax/parser.pyx":145 + * encoding = myencoding_name_by_id(self._encoding, NULL) + * + * if encoding != NULL: # <<<<<<<<<<<<<< + * return encoding.decode('utf-8') + * else: +*/ + __pyx_t_1 = (__pyx_v_encoding != NULL); + if (__pyx_t_1) { + + /* "selectolax/parser.pyx":146 + * + * if encoding != NULL: + * return encoding.decode('utf-8') # <<<<<<<<<<<<<< + * else: + * return 'unknown' +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_2 = __Pyx_ssize_strlen(__pyx_v_encoding); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 146, __pyx_L1_error) + __pyx_t_3 = __Pyx_decode_c_string(__pyx_v_encoding, 0, __pyx_t_2, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 146, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_r = __pyx_t_3; + __pyx_t_3 = 0; + goto __pyx_L0; + + /* "selectolax/parser.pyx":145 + * encoding = myencoding_name_by_id(self._encoding, NULL) + * + * if encoding != NULL: # <<<<<<<<<<<<<< + * return encoding.decode('utf-8') + * else: +*/ + } + + /* "selectolax/parser.pyx":148 + * return encoding.decode('utf-8') + * else: + * return 'unknown' # <<<<<<<<<<<<<< + * + * @property +*/ + /*else*/ { + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_unknown); + __pyx_r = __pyx_mstate_global->__pyx_n_u_unknown; + goto __pyx_L0; + } + + /* "selectolax/parser.pyx":136 + * return 0 + * + * @property # <<<<<<<<<<<<<< + * def input_encoding(self): + * """Return encoding of the HTML document. +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("selectolax.parser.HTMLParser.input_encoding.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/parser.pyx":150 + * return 'unknown' + * + * @property # <<<<<<<<<<<<<< + * def root(self): + * """Returns root node.""" +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_10HTMLParser_4root_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_10selectolax_6parser_10HTMLParser_4root_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6parser_10HTMLParser_4root___get__(((struct __pyx_obj_10selectolax_6parser_HTMLParser *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_10HTMLParser_4root___get__(struct __pyx_obj_10selectolax_6parser_HTMLParser *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + int __pyx_t_7; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + + /* "selectolax/parser.pyx":153 + * def root(self): + * """Returns root node.""" + * if self.html_tree and self.html_tree.node_html: # <<<<<<<<<<<<<< + * try: + * return Node.new(self.html_tree.node_html, self) +*/ + __pyx_t_2 = (__pyx_v_self->html_tree != 0); + if (__pyx_t_2) { + } else { + __pyx_t_1 = __pyx_t_2; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_2 = (__pyx_v_self->html_tree->node_html != 0); + __pyx_t_1 = __pyx_t_2; + __pyx_L4_bool_binop_done:; + if (__pyx_t_1) { + + /* "selectolax/parser.pyx":154 + * """Returns root node.""" + * if self.html_tree and self.html_tree.node_html: + * try: # <<<<<<<<<<<<<< + * return Node.new(self.html_tree.node_html, self) + * except Exception: +*/ + { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ExceptionSave(&__pyx_t_3, &__pyx_t_4, &__pyx_t_5); + __Pyx_XGOTREF(__pyx_t_3); + __Pyx_XGOTREF(__pyx_t_4); + __Pyx_XGOTREF(__pyx_t_5); + /*try:*/ { + + /* "selectolax/parser.pyx":155 + * if self.html_tree and self.html_tree.node_html: + * try: + * return Node.new(self.html_tree.node_html, self) # <<<<<<<<<<<<<< + * except Exception: + * # If Node creation or initialization fails, return None +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_6 = ((PyObject *)__pyx_f_10selectolax_6parser_4Node_new(__pyx_v_self->html_tree->node_html, __pyx_v_self)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 155, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_r = __pyx_t_6; + __pyx_t_6 = 0; + goto __pyx_L10_try_return; + + /* "selectolax/parser.pyx":154 + * """Returns root node.""" + * if self.html_tree and self.html_tree.node_html: + * try: # <<<<<<<<<<<<<< + * return Node.new(self.html_tree.node_html, self) + * except Exception: +*/ + } + __pyx_L6_error:; + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + + /* "selectolax/parser.pyx":156 + * try: + * return Node.new(self.html_tree.node_html, self) + * except Exception: # <<<<<<<<<<<<<< + * # If Node creation or initialization fails, return None + * return None +*/ + __pyx_t_7 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_Exception)))); + if (__pyx_t_7) { + __Pyx_ErrRestore(0,0,0); + + /* "selectolax/parser.pyx":158 + * except Exception: + * # If Node creation or initialization fails, return None + * return None # <<<<<<<<<<<<<< + * return None + * +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L9_except_return; + } + goto __pyx_L8_except_error; + + /* "selectolax/parser.pyx":154 + * """Returns root node.""" + * if self.html_tree and self.html_tree.node_html: + * try: # <<<<<<<<<<<<<< + * return Node.new(self.html_tree.node_html, self) + * except Exception: +*/ + __pyx_L8_except_error:; + __Pyx_XGIVEREF(__pyx_t_3); + __Pyx_XGIVEREF(__pyx_t_4); + __Pyx_XGIVEREF(__pyx_t_5); + __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5); + goto __pyx_L1_error; + __pyx_L10_try_return:; + __Pyx_XGIVEREF(__pyx_t_3); + __Pyx_XGIVEREF(__pyx_t_4); + __Pyx_XGIVEREF(__pyx_t_5); + __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5); + goto __pyx_L0; + __pyx_L9_except_return:; + __Pyx_XGIVEREF(__pyx_t_3); + __Pyx_XGIVEREF(__pyx_t_4); + __Pyx_XGIVEREF(__pyx_t_5); + __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5); + goto __pyx_L0; + } + + /* "selectolax/parser.pyx":153 + * def root(self): + * """Returns root node.""" + * if self.html_tree and self.html_tree.node_html: # <<<<<<<<<<<<<< + * try: + * return Node.new(self.html_tree.node_html, self) +*/ + } + + /* "selectolax/parser.pyx":159 + * # If Node creation or initialization fails, return None + * return None + * return None # <<<<<<<<<<<<<< + * + * @property +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + + /* "selectolax/parser.pyx":150 + * return 'unknown' + * + * @property # <<<<<<<<<<<<<< + * def root(self): + * """Returns root node.""" +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_6); + __Pyx_AddTraceback("selectolax.parser.HTMLParser.root.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/parser.pyx":161 + * return None + * + * @property # <<<<<<<<<<<<<< + * def head(self): + * """Returns head node.""" +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_10HTMLParser_4head_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_10selectolax_6parser_10HTMLParser_4head_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6parser_10HTMLParser_4head___get__(((struct __pyx_obj_10selectolax_6parser_HTMLParser *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_10HTMLParser_4head___get__(struct __pyx_obj_10selectolax_6parser_HTMLParser *__pyx_v_self) { + myhtml_tree_node_t *__pyx_v_head; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + + /* "selectolax/parser.pyx":165 + * """Returns head node.""" + * cdef myhtml_tree_node_t* head + * head = myhtml_tree_get_node_head(self.html_tree) # <<<<<<<<<<<<<< + * + * if head != NULL: +*/ + __pyx_v_head = myhtml_tree_get_node_head(__pyx_v_self->html_tree); + + /* "selectolax/parser.pyx":167 + * head = myhtml_tree_get_node_head(self.html_tree) + * + * if head != NULL: # <<<<<<<<<<<<<< + * return Node.new(head, self) + * return None +*/ + __pyx_t_1 = (__pyx_v_head != NULL); + if (__pyx_t_1) { + + /* "selectolax/parser.pyx":168 + * + * if head != NULL: + * return Node.new(head, self) # <<<<<<<<<<<<<< + * return None + * +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_2 = ((PyObject *)__pyx_f_10selectolax_6parser_4Node_new(__pyx_v_head, __pyx_v_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 168, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; + + /* "selectolax/parser.pyx":167 + * head = myhtml_tree_get_node_head(self.html_tree) + * + * if head != NULL: # <<<<<<<<<<<<<< + * return Node.new(head, self) + * return None +*/ + } + + /* "selectolax/parser.pyx":169 + * if head != NULL: + * return Node.new(head, self) + * return None # <<<<<<<<<<<<<< + * + * @property +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + + /* "selectolax/parser.pyx":161 + * return None + * + * @property # <<<<<<<<<<<<<< + * def head(self): + * """Returns head node.""" +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("selectolax.parser.HTMLParser.head.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/parser.pyx":171 + * return None + * + * @property # <<<<<<<<<<<<<< + * def body(self): + * """Returns document body.""" +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_10HTMLParser_4body_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_10selectolax_6parser_10HTMLParser_4body_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6parser_10HTMLParser_4body___get__(((struct __pyx_obj_10selectolax_6parser_HTMLParser *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_10HTMLParser_4body___get__(struct __pyx_obj_10selectolax_6parser_HTMLParser *__pyx_v_self) { + myhtml_tree_node_t *__pyx_v_body; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + + /* "selectolax/parser.pyx":175 + * """Returns document body.""" + * cdef myhtml_tree_node_t* body + * body = myhtml_tree_get_node_body(self.html_tree) # <<<<<<<<<<<<<< + * + * if body != NULL: +*/ + __pyx_v_body = myhtml_tree_get_node_body(__pyx_v_self->html_tree); + + /* "selectolax/parser.pyx":177 + * body = myhtml_tree_get_node_body(self.html_tree) + * + * if body != NULL: # <<<<<<<<<<<<<< + * return Node.new(body, self) + * return None +*/ + __pyx_t_1 = (__pyx_v_body != NULL); + if (__pyx_t_1) { + + /* "selectolax/parser.pyx":178 + * + * if body != NULL: + * return Node.new(body, self) # <<<<<<<<<<<<<< + * return None + * +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_2 = ((PyObject *)__pyx_f_10selectolax_6parser_4Node_new(__pyx_v_body, __pyx_v_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 178, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; + + /* "selectolax/parser.pyx":177 + * body = myhtml_tree_get_node_body(self.html_tree) + * + * if body != NULL: # <<<<<<<<<<<<<< + * return Node.new(body, self) + * return None +*/ + } + + /* "selectolax/parser.pyx":179 + * if body != NULL: + * return Node.new(body, self) + * return None # <<<<<<<<<<<<<< + * + * def tags(self, str name): +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + + /* "selectolax/parser.pyx":171 + * return None + * + * @property # <<<<<<<<<<<<<< + * def body(self): + * """Returns document body.""" +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("selectolax.parser.HTMLParser.body.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/parser.pyx":181 + * return None + * + * def tags(self, str name): # <<<<<<<<<<<<<< + * """Returns a list of tags that match specified name. + * +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_10HTMLParser_7tags(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6parser_10HTMLParser_6tags, "HTMLParser.tags(self, str name)\n\nReturns a list of tags that match specified name.\n\nParameters\n----------\nname : str (e.g. div)"); +static PyMethodDef __pyx_mdef_10selectolax_6parser_10HTMLParser_7tags = {"tags", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_10HTMLParser_7tags, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_10HTMLParser_6tags}; +static PyObject *__pyx_pw_10selectolax_6parser_10HTMLParser_7tags(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_name = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("tags (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_name_2,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 181, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 181, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "tags", 0) < (0)) __PYX_ERR(0, 181, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("tags", 1, 1, 1, i); __PYX_ERR(0, 181, __pyx_L3_error) } + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 181, __pyx_L3_error) + } + __pyx_v_name = ((PyObject*)values[0]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("tags", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 181, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.parser.HTMLParser.tags", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyUnicode_Type), 1, "name", 1))) __PYX_ERR(0, 181, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6parser_10HTMLParser_6tags(((struct __pyx_obj_10selectolax_6parser_HTMLParser *)__pyx_v_self), __pyx_v_name); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_10HTMLParser_6tags(struct __pyx_obj_10selectolax_6parser_HTMLParser *__pyx_v_self, PyObject *__pyx_v_name) { + myhtml_collection_t *__pyx_v_collection; + PyObject *__pyx_v_pybyte_name = NULL; + mystatus_t __pyx_v_status; + PyObject *__pyx_v_result = NULL; + size_t __pyx_v_i; + struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_node = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + size_t __pyx_t_5; + Py_ssize_t __pyx_t_6; + char const *__pyx_t_7; + size_t __pyx_t_8; + size_t __pyx_t_9; + int __pyx_t_10; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("tags", 0); + + /* "selectolax/parser.pyx":190 + * """ + * # Validate tag name + * if not name: # <<<<<<<<<<<<<< + * raise ValueError("Tag name cannot be empty") + * if len(name) > 100: # Reasonable limit for tag names +*/ + if (__pyx_v_name == Py_None) __pyx_t_1 = 0; + else + { + Py_ssize_t __pyx_temp = __Pyx_PyUnicode_IS_TRUE(__pyx_v_name); + if (unlikely(((!CYTHON_ASSUME_SAFE_SIZE) && __pyx_temp < 0))) __PYX_ERR(0, 190, __pyx_L1_error) + __pyx_t_1 = (__pyx_temp != 0); + } + + __pyx_t_2 = (!__pyx_t_1); + if (unlikely(__pyx_t_2)) { + + /* "selectolax/parser.pyx":191 + * # Validate tag name + * if not name: + * raise ValueError("Tag name cannot be empty") # <<<<<<<<<<<<<< + * if len(name) > 100: # Reasonable limit for tag names + * raise ValueError("Tag name is too long") +*/ + __pyx_t_4 = NULL; + __pyx_t_5 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_Tag_name_cannot_be_empty}; + __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 191, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(0, 191, __pyx_L1_error) + + /* "selectolax/parser.pyx":190 + * """ + * # Validate tag name + * if not name: # <<<<<<<<<<<<<< + * raise ValueError("Tag name cannot be empty") + * if len(name) > 100: # Reasonable limit for tag names +*/ + } + + /* "selectolax/parser.pyx":192 + * if not name: + * raise ValueError("Tag name cannot be empty") + * if len(name) > 100: # Reasonable limit for tag names # <<<<<<<<<<<<<< + * raise ValueError("Tag name is too long") + * +*/ + if (unlikely(__pyx_v_name == Py_None)) { + PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); + __PYX_ERR(0, 192, __pyx_L1_error) + } + __pyx_t_6 = __Pyx_PyUnicode_GET_LENGTH(__pyx_v_name); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 192, __pyx_L1_error) + __pyx_t_2 = (__pyx_t_6 > 0x64); + if (unlikely(__pyx_t_2)) { + + /* "selectolax/parser.pyx":193 + * raise ValueError("Tag name cannot be empty") + * if len(name) > 100: # Reasonable limit for tag names + * raise ValueError("Tag name is too long") # <<<<<<<<<<<<<< + * + * cdef myhtml_collection_t* collection = NULL +*/ + __pyx_t_4 = NULL; + __pyx_t_5 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_Tag_name_is_too_long}; + __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 193, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(0, 193, __pyx_L1_error) + + /* "selectolax/parser.pyx":192 + * if not name: + * raise ValueError("Tag name cannot be empty") + * if len(name) > 100: # Reasonable limit for tag names # <<<<<<<<<<<<<< + * raise ValueError("Tag name is too long") + * +*/ + } + + /* "selectolax/parser.pyx":195 + * raise ValueError("Tag name is too long") + * + * cdef myhtml_collection_t* collection = NULL # <<<<<<<<<<<<<< + * pybyte_name = name.encode('UTF-8') + * cdef mystatus_t status = 0 +*/ + __pyx_v_collection = NULL; + + /* "selectolax/parser.pyx":196 + * + * cdef myhtml_collection_t* collection = NULL + * pybyte_name = name.encode('UTF-8') # <<<<<<<<<<<<<< + * cdef mystatus_t status = 0 + * +*/ + if (unlikely(__pyx_v_name == Py_None)) { + PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "encode"); + __PYX_ERR(0, 196, __pyx_L1_error) + } + __pyx_t_3 = PyUnicode_AsUTF8String(__pyx_v_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 196, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_v_pybyte_name = ((PyObject*)__pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/parser.pyx":197 + * cdef myhtml_collection_t* collection = NULL + * pybyte_name = name.encode('UTF-8') + * cdef mystatus_t status = 0 # <<<<<<<<<<<<<< + * + * result = list() +*/ + __pyx_v_status = 0; + + /* "selectolax/parser.pyx":199 + * cdef mystatus_t status = 0 + * + * result = list() # <<<<<<<<<<<<<< + * collection = myhtml_get_nodes_by_name(self.html_tree, NULL, pybyte_name, len(pybyte_name), &status) + * +*/ + __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 199, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_v_result = ((PyObject*)__pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/parser.pyx":200 + * + * result = list() + * collection = myhtml_get_nodes_by_name(self.html_tree, NULL, pybyte_name, len(pybyte_name), &status) # <<<<<<<<<<<<<< + * + * if collection == NULL: +*/ + __pyx_t_7 = __Pyx_PyBytes_AsString(__pyx_v_pybyte_name); if (unlikely((!__pyx_t_7) && PyErr_Occurred())) __PYX_ERR(0, 200, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyBytes_GET_SIZE(__pyx_v_pybyte_name); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 200, __pyx_L1_error) + __pyx_v_collection = myhtml_get_nodes_by_name(__pyx_v_self->html_tree, NULL, __pyx_t_7, __pyx_t_6, (&__pyx_v_status)); + + /* "selectolax/parser.pyx":202 + * collection = myhtml_get_nodes_by_name(self.html_tree, NULL, pybyte_name, len(pybyte_name), &status) + * + * if collection == NULL: # <<<<<<<<<<<<<< + * return result + * +*/ + __pyx_t_2 = (__pyx_v_collection == NULL); + if (__pyx_t_2) { + + /* "selectolax/parser.pyx":203 + * + * if collection == NULL: + * return result # <<<<<<<<<<<<<< + * + * if status == 0: +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_result); + __pyx_r = __pyx_v_result; + goto __pyx_L0; + + /* "selectolax/parser.pyx":202 + * collection = myhtml_get_nodes_by_name(self.html_tree, NULL, pybyte_name, len(pybyte_name), &status) + * + * if collection == NULL: # <<<<<<<<<<<<<< + * return result + * +*/ + } + + /* "selectolax/parser.pyx":205 + * return result + * + * if status == 0: # <<<<<<<<<<<<<< + * for i in range(collection.length): + * node = Node.new(collection.list[i], self) +*/ + __pyx_t_2 = (__pyx_v_status == 0); + if (__pyx_t_2) { + + /* "selectolax/parser.pyx":206 + * + * if status == 0: + * for i in range(collection.length): # <<<<<<<<<<<<<< + * node = Node.new(collection.list[i], self) + * result.append(node) +*/ + __pyx_t_5 = __pyx_v_collection->length; + __pyx_t_8 = __pyx_t_5; + for (__pyx_t_9 = 0; __pyx_t_9 < __pyx_t_8; __pyx_t_9+=1) { + __pyx_v_i = __pyx_t_9; + + /* "selectolax/parser.pyx":207 + * if status == 0: + * for i in range(collection.length): + * node = Node.new(collection.list[i], self) # <<<<<<<<<<<<<< + * result.append(node) + * +*/ + __pyx_t_3 = ((PyObject *)__pyx_f_10selectolax_6parser_4Node_new((__pyx_v_collection->list[__pyx_v_i]), __pyx_v_self)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 207, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_XDECREF_SET(__pyx_v_node, ((struct __pyx_obj_10selectolax_6parser_Node *)__pyx_t_3)); + __pyx_t_3 = 0; + + /* "selectolax/parser.pyx":208 + * for i in range(collection.length): + * node = Node.new(collection.list[i], self) + * result.append(node) # <<<<<<<<<<<<<< + * + * myhtml_collection_destroy(collection) +*/ + __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_result, ((PyObject *)__pyx_v_node)); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 208, __pyx_L1_error) + } + + /* "selectolax/parser.pyx":205 + * return result + * + * if status == 0: # <<<<<<<<<<<<<< + * for i in range(collection.length): + * node = Node.new(collection.list[i], self) +*/ + } + + /* "selectolax/parser.pyx":210 + * result.append(node) + * + * myhtml_collection_destroy(collection) # <<<<<<<<<<<<<< + * + * return result +*/ + (void)(myhtml_collection_destroy(__pyx_v_collection)); + + /* "selectolax/parser.pyx":212 + * myhtml_collection_destroy(collection) + * + * return result # <<<<<<<<<<<<<< + * + * def text(self, bool deep=True, str separator='', bool strip=False): +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_result); + __pyx_r = __pyx_v_result; + goto __pyx_L0; + + /* "selectolax/parser.pyx":181 + * return None + * + * def tags(self, str name): # <<<<<<<<<<<<<< + * """Returns a list of tags that match specified name. + * +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("selectolax.parser.HTMLParser.tags", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_pybyte_name); + __Pyx_XDECREF(__pyx_v_result); + __Pyx_XDECREF((PyObject *)__pyx_v_node); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/parser.pyx":214 + * return result + * + * def text(self, bool deep=True, str separator='', bool strip=False): # <<<<<<<<<<<<<< + * """Returns the text of the node including text of all its child nodes. + * +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_10HTMLParser_9text(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6parser_10HTMLParser_8text, "HTMLParser.text(self, bool deep=True, str separator='', bool strip=False)\n\nReturns the text of the node including text of all its child nodes.\n\nParameters\n----------\nstrip : bool, default False\n If true, calls ``str.strip()`` on each text part to remove extra white spaces.\nseparator : str, default ''\n The separator to use when joining text from different nodes.\ndeep : bool, default True\n If True, includes text from all child nodes.\n\nReturns\n-------\ntext : str"); +static PyMethodDef __pyx_mdef_10selectolax_6parser_10HTMLParser_9text = {"text", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_10HTMLParser_9text, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_10HTMLParser_8text}; +static PyObject *__pyx_pw_10selectolax_6parser_10HTMLParser_9text(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyLongObject *__pyx_v_deep = 0; + PyObject *__pyx_v_separator = 0; + PyLongObject *__pyx_v_strip = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[3] = {0,0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("text (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_deep,&__pyx_mstate_global->__pyx_n_u_separator,&__pyx_mstate_global->__pyx_n_u_strip,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 214, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 3: + values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 214, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 214, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 214, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "text", 0) < (0)) __PYX_ERR(0, 214, __pyx_L3_error) + if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)((PyLongObject *)Py_True)); + if (!values[1]) values[1] = __Pyx_NewRef(((PyObject*)__pyx_mstate_global->__pyx_kp_u_)); + if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)((PyLongObject *)Py_False)); + } else { + switch (__pyx_nargs) { + case 3: + values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 214, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 214, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 214, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)((PyLongObject *)Py_True)); + if (!values[1]) values[1] = __Pyx_NewRef(((PyObject*)__pyx_mstate_global->__pyx_kp_u_)); + if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)((PyLongObject *)Py_False)); + } + __pyx_v_deep = ((PyLongObject *)values[0]); + __pyx_v_separator = ((PyObject*)values[1]); + __pyx_v_strip = ((PyLongObject *)values[2]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("text", 0, 0, 3, __pyx_nargs); __PYX_ERR(0, 214, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.parser.HTMLParser.text", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_deep), __pyx_mstate_global->__pyx_ptype_7cpython_4bool_bool, 1, "deep", 0))) __PYX_ERR(0, 214, __pyx_L1_error) + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_separator), (&PyUnicode_Type), 1, "separator", 1))) __PYX_ERR(0, 214, __pyx_L1_error) + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_strip), __pyx_mstate_global->__pyx_ptype_7cpython_4bool_bool, 1, "strip", 0))) __PYX_ERR(0, 214, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6parser_10HTMLParser_8text(((struct __pyx_obj_10selectolax_6parser_HTMLParser *)__pyx_v_self), __pyx_v_deep, __pyx_v_separator, __pyx_v_strip); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_10HTMLParser_8text(struct __pyx_obj_10selectolax_6parser_HTMLParser *__pyx_v_self, PyLongObject *__pyx_v_deep, PyObject *__pyx_v_separator, PyLongObject *__pyx_v_strip) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + int __pyx_t_3; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + size_t __pyx_t_6; + PyObject *__pyx_t_7 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("text", 0); + + /* "selectolax/parser.pyx":231 + * + * """ + * if not self.body: # <<<<<<<<<<<<<< + * return "" + * return self.body.text(deep=deep, separator=separator, strip=strip) +*/ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_body_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 231, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 231, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_3 = (!__pyx_t_2); + if (__pyx_t_3) { + + /* "selectolax/parser.pyx":232 + * """ + * if not self.body: + * return "" # <<<<<<<<<<<<<< + * return self.body.text(deep=deep, separator=separator, strip=strip) + * +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u_); + __pyx_r = __pyx_mstate_global->__pyx_kp_u_; + goto __pyx_L0; + + /* "selectolax/parser.pyx":231 + * + * """ + * if not self.body: # <<<<<<<<<<<<<< + * return "" + * return self.body.text(deep=deep, separator=separator, strip=strip) +*/ + } + + /* "selectolax/parser.pyx":233 + * if not self.body: + * return "" + * return self.body.text(deep=deep, separator=separator, strip=strip) # <<<<<<<<<<<<<< + * + * def strip_tags(self, list tags, bool recursive = False): +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_body_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 233, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_4 = __pyx_t_5; + __Pyx_INCREF(__pyx_t_4); + __pyx_t_6 = 0; + { + PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 3 : 0)] = {__pyx_t_4, NULL}; + __pyx_t_7 = __Pyx_MakeVectorcallBuilderKwds(3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 233, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_deep, ((PyObject *)__pyx_v_deep), __pyx_t_7, __pyx_callargs+1, 0) < (0)) __PYX_ERR(0, 233, __pyx_L1_error) + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_separator, __pyx_v_separator, __pyx_t_7, __pyx_callargs+1, 1) < (0)) __PYX_ERR(0, 233, __pyx_L1_error) + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_strip, ((PyObject *)__pyx_v_strip), __pyx_t_7, __pyx_callargs+1, 2) < (0)) __PYX_ERR(0, 233, __pyx_L1_error) + __pyx_t_1 = __Pyx_Object_VectorcallMethod_CallFromBuilder((PyObject*)__pyx_mstate_global->__pyx_n_u_text, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_7); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 233, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "selectolax/parser.pyx":214 + * return result + * + * def text(self, bool deep=True, str separator='', bool strip=False): # <<<<<<<<<<<<<< + * """Returns the text of the node including text of all its child nodes. + * +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_AddTraceback("selectolax.parser.HTMLParser.text", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/parser.pyx":235 + * return self.body.text(deep=deep, separator=separator, strip=strip) + * + * def strip_tags(self, list tags, bool recursive = False): # <<<<<<<<<<<<<< + * """Remove specified tags from the node. + * +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_10HTMLParser_11strip_tags(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6parser_10HTMLParser_10strip_tags, "HTMLParser.strip_tags(self, list tags, bool recursive=False)\n\nRemove specified tags from the node.\n\nParameters\n----------\ntags : list of str\n List of tags to remove.\nrecursive : bool, default True\n Whenever to delete all its child nodes\n\nExamples\n--------\n\n>>> tree = HTMLParser('
Hello world!
')\n>>> tags = ['head', 'style', 'script', 'xmp', 'iframe', 'noembed', 'noframes']\n>>> tree.strip_tags(tags)\n>>> tree.html\n'
Hello world!
'"); +static PyMethodDef __pyx_mdef_10selectolax_6parser_10HTMLParser_11strip_tags = {"strip_tags", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_10HTMLParser_11strip_tags, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_10HTMLParser_10strip_tags}; +static PyObject *__pyx_pw_10selectolax_6parser_10HTMLParser_11strip_tags(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_tags = 0; + PyLongObject *__pyx_v_recursive = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[2] = {0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("strip_tags (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_tags,&__pyx_mstate_global->__pyx_n_u_recursive,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 235, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 235, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 235, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "strip_tags", 0) < (0)) __PYX_ERR(0, 235, __pyx_L3_error) + if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)((PyLongObject *)Py_False)); + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("strip_tags", 0, 1, 2, i); __PYX_ERR(0, 235, __pyx_L3_error) } + } + } else { + switch (__pyx_nargs) { + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 235, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 235, __pyx_L3_error) + break; + default: goto __pyx_L5_argtuple_error; + } + if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)((PyLongObject *)Py_False)); + } + __pyx_v_tags = ((PyObject*)values[0]); + __pyx_v_recursive = ((PyLongObject *)values[1]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("strip_tags", 0, 1, 2, __pyx_nargs); __PYX_ERR(0, 235, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.parser.HTMLParser.strip_tags", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_tags), (&PyList_Type), 1, "tags", 1))) __PYX_ERR(0, 235, __pyx_L1_error) + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_recursive), __pyx_mstate_global->__pyx_ptype_7cpython_4bool_bool, 1, "recursive", 0))) __PYX_ERR(0, 235, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6parser_10HTMLParser_10strip_tags(((struct __pyx_obj_10selectolax_6parser_HTMLParser *)__pyx_v_self), __pyx_v_tags, __pyx_v_recursive); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_10HTMLParser_10strip_tags(struct __pyx_obj_10selectolax_6parser_HTMLParser *__pyx_v_self, PyObject *__pyx_v_tags, PyLongObject *__pyx_v_recursive) { + myhtml_collection_t *__pyx_v_collection; + mystatus_t __pyx_v_status; + PyObject *__pyx_v_tag = NULL; + PyObject *__pyx_v_pybyte_name = NULL; + size_t __pyx_v_i; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + Py_ssize_t __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + size_t __pyx_t_5; + char const *__pyx_t_6; + Py_ssize_t __pyx_t_7; + int __pyx_t_8; + size_t __pyx_t_9; + size_t __pyx_t_10; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("strip_tags", 0); + + /* "selectolax/parser.pyx":255 + * + * """ + * cdef myhtml_collection_t* collection = NULL # <<<<<<<<<<<<<< + * + * cdef mystatus_t status = 0 +*/ + __pyx_v_collection = NULL; + + /* "selectolax/parser.pyx":257 + * cdef myhtml_collection_t* collection = NULL + * + * cdef mystatus_t status = 0 # <<<<<<<<<<<<<< + * + * for tag in tags: +*/ + __pyx_v_status = 0; + + /* "selectolax/parser.pyx":259 + * cdef mystatus_t status = 0 + * + * for tag in tags: # <<<<<<<<<<<<<< + * pybyte_name = tag.encode('UTF-8') + * collection = myhtml_get_nodes_by_name(self.html_tree, NULL, pybyte_name, len(pybyte_name), &status) +*/ + if (unlikely(__pyx_v_tags == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); + __PYX_ERR(0, 259, __pyx_L1_error) + } + __pyx_t_1 = __pyx_v_tags; __Pyx_INCREF(__pyx_t_1); + __pyx_t_2 = 0; + for (;;) { + { + Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1); + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 259, __pyx_L1_error) + #endif + if (__pyx_t_2 >= __pyx_temp) break; + } + __pyx_t_3 = __Pyx_PyList_GetItemRefFast(__pyx_t_1, __pyx_t_2, __Pyx_ReferenceSharing_OwnStrongReference); + ++__pyx_t_2; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 259, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_XDECREF_SET(__pyx_v_tag, __pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/parser.pyx":260 + * + * for tag in tags: + * pybyte_name = tag.encode('UTF-8') # <<<<<<<<<<<<<< + * collection = myhtml_get_nodes_by_name(self.html_tree, NULL, pybyte_name, len(pybyte_name), &status) + * +*/ + __pyx_t_4 = __pyx_v_tag; + __Pyx_INCREF(__pyx_t_4); + __pyx_t_5 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_UTF_8}; + __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_encode, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 260, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_XDECREF_SET(__pyx_v_pybyte_name, __pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/parser.pyx":261 + * for tag in tags: + * pybyte_name = tag.encode('UTF-8') + * collection = myhtml_get_nodes_by_name(self.html_tree, NULL, pybyte_name, len(pybyte_name), &status) # <<<<<<<<<<<<<< + * + * if collection == NULL: +*/ + __pyx_t_6 = __Pyx_PyObject_AsString(__pyx_v_pybyte_name); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(0, 261, __pyx_L1_error) + __pyx_t_7 = PyObject_Length(__pyx_v_pybyte_name); if (unlikely(__pyx_t_7 == ((Py_ssize_t)-1))) __PYX_ERR(0, 261, __pyx_L1_error) + __pyx_v_collection = myhtml_get_nodes_by_name(__pyx_v_self->html_tree, NULL, __pyx_t_6, __pyx_t_7, (&__pyx_v_status)); + + /* "selectolax/parser.pyx":263 + * collection = myhtml_get_nodes_by_name(self.html_tree, NULL, pybyte_name, len(pybyte_name), &status) + * + * if collection == NULL: # <<<<<<<<<<<<<< + * continue + * +*/ + __pyx_t_8 = (__pyx_v_collection == NULL); + if (__pyx_t_8) { + + /* "selectolax/parser.pyx":264 + * + * if collection == NULL: + * continue # <<<<<<<<<<<<<< + * + * if status != 0: +*/ + goto __pyx_L3_continue; + + /* "selectolax/parser.pyx":263 + * collection = myhtml_get_nodes_by_name(self.html_tree, NULL, pybyte_name, len(pybyte_name), &status) + * + * if collection == NULL: # <<<<<<<<<<<<<< + * continue + * +*/ + } + + /* "selectolax/parser.pyx":266 + * continue + * + * if status != 0: # <<<<<<<<<<<<<< + * continue + * +*/ + __pyx_t_8 = (__pyx_v_status != 0); + if (__pyx_t_8) { + + /* "selectolax/parser.pyx":267 + * + * if status != 0: + * continue # <<<<<<<<<<<<<< + * + * for i in range(collection.length): +*/ + goto __pyx_L3_continue; + + /* "selectolax/parser.pyx":266 + * continue + * + * if status != 0: # <<<<<<<<<<<<<< + * continue + * +*/ + } + + /* "selectolax/parser.pyx":269 + * continue + * + * for i in range(collection.length): # <<<<<<<<<<<<<< + * if recursive: + * myhtml_node_delete_recursive(collection.list[i]) +*/ + __pyx_t_5 = __pyx_v_collection->length; + __pyx_t_9 = __pyx_t_5; + for (__pyx_t_10 = 0; __pyx_t_10 < __pyx_t_9; __pyx_t_10+=1) { + __pyx_v_i = __pyx_t_10; + + /* "selectolax/parser.pyx":270 + * + * for i in range(collection.length): + * if recursive: # <<<<<<<<<<<<<< + * myhtml_node_delete_recursive(collection.list[i]) + * else: +*/ + __pyx_t_8 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_v_recursive)); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(0, 270, __pyx_L1_error) + if (__pyx_t_8) { + + /* "selectolax/parser.pyx":271 + * for i in range(collection.length): + * if recursive: + * myhtml_node_delete_recursive(collection.list[i]) # <<<<<<<<<<<<<< + * else: + * myhtml_node_delete(collection.list[i]) +*/ + myhtml_node_delete_recursive((__pyx_v_collection->list[__pyx_v_i])); + + /* "selectolax/parser.pyx":270 + * + * for i in range(collection.length): + * if recursive: # <<<<<<<<<<<<<< + * myhtml_node_delete_recursive(collection.list[i]) + * else: +*/ + goto __pyx_L9; + } + + /* "selectolax/parser.pyx":273 + * myhtml_node_delete_recursive(collection.list[i]) + * else: + * myhtml_node_delete(collection.list[i]) # <<<<<<<<<<<<<< + * + * myhtml_collection_destroy(collection) +*/ + /*else*/ { + myhtml_node_delete((__pyx_v_collection->list[__pyx_v_i])); + } + __pyx_L9:; + } + + /* "selectolax/parser.pyx":275 + * myhtml_node_delete(collection.list[i]) + * + * myhtml_collection_destroy(collection) # <<<<<<<<<<<<<< + * + * def unwrap_tags(self, list tags, delete_empty : bool = False): +*/ + (void)(myhtml_collection_destroy(__pyx_v_collection)); + + /* "selectolax/parser.pyx":259 + * cdef mystatus_t status = 0 + * + * for tag in tags: # <<<<<<<<<<<<<< + * pybyte_name = tag.encode('UTF-8') + * collection = myhtml_get_nodes_by_name(self.html_tree, NULL, pybyte_name, len(pybyte_name), &status) +*/ + __pyx_L3_continue:; + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "selectolax/parser.pyx":235 + * return self.body.text(deep=deep, separator=separator, strip=strip) + * + * def strip_tags(self, list tags, bool recursive = False): # <<<<<<<<<<<<<< + * """Remove specified tags from the node. + * +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("selectolax.parser.HTMLParser.strip_tags", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_tag); + __Pyx_XDECREF(__pyx_v_pybyte_name); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/parser.pyx":277 + * myhtml_collection_destroy(collection) + * + * def unwrap_tags(self, list tags, delete_empty : bool = False): # <<<<<<<<<<<<<< + * """Unwraps specified tags from the HTML tree. + * +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_10HTMLParser_13unwrap_tags(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6parser_10HTMLParser_12unwrap_tags, "HTMLParser.unwrap_tags(self, list tags, delete_empty: bool = False)\n\nUnwraps specified tags from the HTML tree.\n\nWorks the same as th `unwrap` method, but applied to a list of tags.\n\nParameters\n----------\ntags : list\n List of tags to remove.\ndelete_empty : bool, default False\n If True, removes empty tags.\n\nExamples\n--------\n\n>>> tree = HTMLParser(\"
Hello world!
\")\n>>> tree.head.unwrap_tags(['i','a'])\n>>> tree.head.html\n'
Hello world!
'"); +static PyMethodDef __pyx_mdef_10selectolax_6parser_10HTMLParser_13unwrap_tags = {"unwrap_tags", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_10HTMLParser_13unwrap_tags, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_10HTMLParser_12unwrap_tags}; +static PyObject *__pyx_pw_10selectolax_6parser_10HTMLParser_13unwrap_tags(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_tags = 0; + PyObject *__pyx_v_delete_empty = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[2] = {0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("unwrap_tags (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_tags,&__pyx_mstate_global->__pyx_n_u_delete_empty,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 277, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 277, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 277, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "unwrap_tags", 0) < (0)) __PYX_ERR(0, 277, __pyx_L3_error) + if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_False)); + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("unwrap_tags", 0, 1, 2, i); __PYX_ERR(0, 277, __pyx_L3_error) } + } + } else { + switch (__pyx_nargs) { + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 277, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 277, __pyx_L3_error) + break; + default: goto __pyx_L5_argtuple_error; + } + if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_False)); + } + __pyx_v_tags = ((PyObject*)values[0]); + __pyx_v_delete_empty = values[1]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("unwrap_tags", 0, 1, 2, __pyx_nargs); __PYX_ERR(0, 277, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.parser.HTMLParser.unwrap_tags", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_tags), (&PyList_Type), 1, "tags", 1))) __PYX_ERR(0, 277, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6parser_10HTMLParser_12unwrap_tags(((struct __pyx_obj_10selectolax_6parser_HTMLParser *)__pyx_v_self), __pyx_v_tags, __pyx_v_delete_empty); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_10HTMLParser_12unwrap_tags(struct __pyx_obj_10selectolax_6parser_HTMLParser *__pyx_v_self, PyObject *__pyx_v_tags, PyObject *__pyx_v_delete_empty) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + size_t __pyx_t_5; + PyObject *__pyx_t_6 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("unwrap_tags", 0); + + /* "selectolax/parser.pyx":297 + * '
Hello world!
' + * """ + * if self.root is not None: # <<<<<<<<<<<<<< + * self.root.unwrap_tags(tags, delete_empty=delete_empty) + * +*/ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_root); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 297, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = (__pyx_t_1 != Py_None); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (__pyx_t_2) { + + /* "selectolax/parser.pyx":298 + * """ + * if self.root is not None: + * self.root.unwrap_tags(tags, delete_empty=delete_empty) # <<<<<<<<<<<<<< + * + * @property +*/ + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_root); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 298, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = __pyx_t_4; + __Pyx_INCREF(__pyx_t_3); + __pyx_t_5 = 0; + { + PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_3, __pyx_v_tags}; + __pyx_t_6 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 298, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_delete_empty, __pyx_v_delete_empty, __pyx_t_6, __pyx_callargs+2, 0) < (0)) __PYX_ERR(0, 298, __pyx_L1_error) + __pyx_t_1 = __Pyx_Object_VectorcallMethod_CallFromBuilder((PyObject*)__pyx_mstate_global->__pyx_n_u_unwrap_tags, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_6); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 298, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "selectolax/parser.pyx":297 + * '
Hello world!
' + * """ + * if self.root is not None: # <<<<<<<<<<<<<< + * self.root.unwrap_tags(tags, delete_empty=delete_empty) + * +*/ + } + + /* "selectolax/parser.pyx":277 + * myhtml_collection_destroy(collection) + * + * def unwrap_tags(self, list tags, delete_empty : bool = False): # <<<<<<<<<<<<<< + * """Unwraps specified tags from the HTML tree. + * +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_AddTraceback("selectolax.parser.HTMLParser.unwrap_tags", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/parser.pyx":300 + * self.root.unwrap_tags(tags, delete_empty=delete_empty) + * + * @property # <<<<<<<<<<<<<< + * def html(self): + * """Return HTML representation of the page.""" +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_10HTMLParser_4html_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_10selectolax_6parser_10HTMLParser_4html_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6parser_10HTMLParser_4html___get__(((struct __pyx_obj_10selectolax_6parser_HTMLParser *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_10HTMLParser_4html___get__(struct __pyx_obj_10selectolax_6parser_HTMLParser *__pyx_v_self) { + struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_node = 0; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + + /* "selectolax/parser.pyx":304 + * """Return HTML representation of the page.""" + * cdef Node node + * if self.html_tree != NULL and self.html_tree.document != NULL: # <<<<<<<<<<<<<< + * node = Node.new(self.html_tree.document, self) + * return node.html +*/ + __pyx_t_2 = (__pyx_v_self->html_tree != NULL); + if (__pyx_t_2) { + } else { + __pyx_t_1 = __pyx_t_2; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_2 = (__pyx_v_self->html_tree->document != NULL); + __pyx_t_1 = __pyx_t_2; + __pyx_L4_bool_binop_done:; + if (__pyx_t_1) { + + /* "selectolax/parser.pyx":305 + * cdef Node node + * if self.html_tree != NULL and self.html_tree.document != NULL: + * node = Node.new(self.html_tree.document, self) # <<<<<<<<<<<<<< + * return node.html + * return None +*/ + __pyx_t_3 = ((PyObject *)__pyx_f_10selectolax_6parser_4Node_new(__pyx_v_self->html_tree->document, __pyx_v_self)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 305, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_v_node = ((struct __pyx_obj_10selectolax_6parser_Node *)__pyx_t_3); + __pyx_t_3 = 0; + + /* "selectolax/parser.pyx":306 + * if self.html_tree != NULL and self.html_tree.document != NULL: + * node = Node.new(self.html_tree.document, self) + * return node.html # <<<<<<<<<<<<<< + * return None + * +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_node), __pyx_mstate_global->__pyx_n_u_html); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 306, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_r = __pyx_t_3; + __pyx_t_3 = 0; + goto __pyx_L0; + + /* "selectolax/parser.pyx":304 + * """Return HTML representation of the page.""" + * cdef Node node + * if self.html_tree != NULL and self.html_tree.document != NULL: # <<<<<<<<<<<<<< + * node = Node.new(self.html_tree.document, self) + * return node.html +*/ + } + + /* "selectolax/parser.pyx":307 + * node = Node.new(self.html_tree.document, self) + * return node.html + * return None # <<<<<<<<<<<<<< + * + * def select(self, query=None): +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + + /* "selectolax/parser.pyx":300 + * self.root.unwrap_tags(tags, delete_empty=delete_empty) + * + * @property # <<<<<<<<<<<<<< + * def html(self): + * """Return HTML representation of the page.""" +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("selectolax.parser.HTMLParser.html.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF((PyObject *)__pyx_v_node); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/parser.pyx":309 + * return None + * + * def select(self, query=None): # <<<<<<<<<<<<<< + * """Select nodes given a CSS selector. + * +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_10HTMLParser_15select(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6parser_10HTMLParser_14select, "HTMLParser.select(self, query=None)\n\nSelect nodes given a CSS selector.\n\nWorks similarly to the ``css`` method, but supports chained filtering and extra features.\n\nParameters\n----------\nquery : str or None\n The CSS selector to use when searching for nodes.\n\nReturns\n-------\nselector : The `Selector` class."); +static PyMethodDef __pyx_mdef_10selectolax_6parser_10HTMLParser_15select = {"select", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_10HTMLParser_15select, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_10HTMLParser_14select}; +static PyObject *__pyx_pw_10selectolax_6parser_10HTMLParser_15select(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_query = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("select (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_query,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 309, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 309, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "select", 0) < (0)) __PYX_ERR(0, 309, __pyx_L3_error) + if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)Py_None)); + } else { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 309, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)Py_None)); + } + __pyx_v_query = values[0]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("select", 0, 0, 1, __pyx_nargs); __PYX_ERR(0, 309, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.parser.HTMLParser.select", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_10selectolax_6parser_10HTMLParser_14select(((struct __pyx_obj_10selectolax_6parser_HTMLParser *)__pyx_v_self), __pyx_v_query); + + /* function exit code */ + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_10HTMLParser_14select(struct __pyx_obj_10selectolax_6parser_HTMLParser *__pyx_v_self, PyObject *__pyx_v_query) { + struct __pyx_obj_10selectolax_6parser_Node *__pyx_v_node = 0; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + size_t __pyx_t_4; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("select", 0); + + /* "selectolax/parser.pyx":324 + * """ + * cdef Node node + * node = self.root # <<<<<<<<<<<<<< + * if node: + * return Selector(node, query) +*/ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_root); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 324, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_mstate_global->__pyx_ptype_10selectolax_6parser_Node))))) __PYX_ERR(0, 324, __pyx_L1_error) + __pyx_v_node = ((struct __pyx_obj_10selectolax_6parser_Node *)__pyx_t_1); + __pyx_t_1 = 0; + + /* "selectolax/parser.pyx":325 + * cdef Node node + * node = self.root + * if node: # <<<<<<<<<<<<<< + * return Selector(node, query) + * +*/ + __pyx_t_2 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_v_node)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 325, __pyx_L1_error) + if (__pyx_t_2) { + + /* "selectolax/parser.pyx":326 + * node = self.root + * if node: + * return Selector(node, query) # <<<<<<<<<<<<<< + * + * def any_css_matches(self, tuple selectors): +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_3 = NULL; + __pyx_t_4 = 1; + { + PyObject *__pyx_callargs[3] = {__pyx_t_3, ((PyObject *)__pyx_v_node), __pyx_v_query}; + __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_10selectolax_6parser_Selector, __pyx_callargs+__pyx_t_4, (3-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 326, __pyx_L1_error) + __Pyx_GOTREF((PyObject *)__pyx_t_1); + } + __pyx_r = ((PyObject *)__pyx_t_1); + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "selectolax/parser.pyx":325 + * cdef Node node + * node = self.root + * if node: # <<<<<<<<<<<<<< + * return Selector(node, query) + * +*/ + } + + /* "selectolax/parser.pyx":309 + * return None + * + * def select(self, query=None): # <<<<<<<<<<<<<< + * """Select nodes given a CSS selector. + * +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("selectolax.parser.HTMLParser.select", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF((PyObject *)__pyx_v_node); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/parser.pyx":328 + * return Selector(node, query) + * + * def any_css_matches(self, tuple selectors): # <<<<<<<<<<<<<< + * """Returns True if any of the specified CSS selectors matches a node.""" + * return self.root.any_css_matches(selectors) +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_10HTMLParser_17any_css_matches(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6parser_10HTMLParser_16any_css_matches, "HTMLParser.any_css_matches(self, tuple selectors)\n\nReturns True if any of the specified CSS selectors matches a node."); +static PyMethodDef __pyx_mdef_10selectolax_6parser_10HTMLParser_17any_css_matches = {"any_css_matches", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_10HTMLParser_17any_css_matches, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_10HTMLParser_16any_css_matches}; +static PyObject *__pyx_pw_10selectolax_6parser_10HTMLParser_17any_css_matches(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_selectors = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("any_css_matches (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_selectors,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 328, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 328, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "any_css_matches", 0) < (0)) __PYX_ERR(0, 328, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("any_css_matches", 1, 1, 1, i); __PYX_ERR(0, 328, __pyx_L3_error) } + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 328, __pyx_L3_error) + } + __pyx_v_selectors = ((PyObject*)values[0]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("any_css_matches", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 328, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.parser.HTMLParser.any_css_matches", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_selectors), (&PyTuple_Type), 1, "selectors", 1))) __PYX_ERR(0, 328, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6parser_10HTMLParser_16any_css_matches(((struct __pyx_obj_10selectolax_6parser_HTMLParser *)__pyx_v_self), __pyx_v_selectors); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_10HTMLParser_16any_css_matches(struct __pyx_obj_10selectolax_6parser_HTMLParser *__pyx_v_self, PyObject *__pyx_v_selectors) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + size_t __pyx_t_4; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("any_css_matches", 0); + + /* "selectolax/parser.pyx":330 + * def any_css_matches(self, tuple selectors): + * """Returns True if any of the specified CSS selectors matches a node.""" + * return self.root.any_css_matches(selectors) # <<<<<<<<<<<<<< + * + * def scripts_contain(self, str query): +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_root); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 330, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = __pyx_t_3; + __Pyx_INCREF(__pyx_t_2); + __pyx_t_4 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_selectors}; + __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_any_css_matches, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 330, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "selectolax/parser.pyx":328 + * return Selector(node, query) + * + * def any_css_matches(self, tuple selectors): # <<<<<<<<<<<<<< + * """Returns True if any of the specified CSS selectors matches a node.""" + * return self.root.any_css_matches(selectors) +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("selectolax.parser.HTMLParser.any_css_matches", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/parser.pyx":332 + * return self.root.any_css_matches(selectors) + * + * def scripts_contain(self, str query): # <<<<<<<<<<<<<< + * """Returns True if any of the script tags contain specified text. + * +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_10HTMLParser_19scripts_contain(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6parser_10HTMLParser_18scripts_contain, "HTMLParser.scripts_contain(self, str query)\n\nReturns True if any of the script tags contain specified text.\n\nCaches script tags on the first call to improve performance.\n\nParameters\n----------\nquery : str\n The query to check."); +static PyMethodDef __pyx_mdef_10selectolax_6parser_10HTMLParser_19scripts_contain = {"scripts_contain", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_10HTMLParser_19scripts_contain, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_10HTMLParser_18scripts_contain}; +static PyObject *__pyx_pw_10selectolax_6parser_10HTMLParser_19scripts_contain(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_query = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("scripts_contain (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_query,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 332, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 332, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "scripts_contain", 0) < (0)) __PYX_ERR(0, 332, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("scripts_contain", 1, 1, 1, i); __PYX_ERR(0, 332, __pyx_L3_error) } + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 332, __pyx_L3_error) + } + __pyx_v_query = ((PyObject*)values[0]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("scripts_contain", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 332, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.parser.HTMLParser.scripts_contain", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_query), (&PyUnicode_Type), 1, "query", 1))) __PYX_ERR(0, 332, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6parser_10HTMLParser_18scripts_contain(((struct __pyx_obj_10selectolax_6parser_HTMLParser *)__pyx_v_self), __pyx_v_query); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_10HTMLParser_18scripts_contain(struct __pyx_obj_10selectolax_6parser_HTMLParser *__pyx_v_self, PyObject *__pyx_v_query) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + size_t __pyx_t_4; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("scripts_contain", 0); + + /* "selectolax/parser.pyx":343 + * + * """ + * return self.root.scripts_contain(query) # <<<<<<<<<<<<<< + * + * def script_srcs_contain(self, tuple queries): +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_root); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 343, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = __pyx_t_3; + __Pyx_INCREF(__pyx_t_2); + __pyx_t_4 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_query}; + __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_scripts_contain, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 343, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "selectolax/parser.pyx":332 + * return self.root.any_css_matches(selectors) + * + * def scripts_contain(self, str query): # <<<<<<<<<<<<<< + * """Returns True if any of the script tags contain specified text. + * +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("selectolax.parser.HTMLParser.scripts_contain", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/parser.pyx":345 + * return self.root.scripts_contain(query) + * + * def script_srcs_contain(self, tuple queries): # <<<<<<<<<<<<<< + * """Returns True if any of the script SRCs attributes contain on of the specified text. + * +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_10HTMLParser_21script_srcs_contain(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6parser_10HTMLParser_20script_srcs_contain, "HTMLParser.script_srcs_contain(self, tuple queries)\n\nReturns True if any of the script SRCs attributes contain on of the specified text.\n\nCaches values on the first call to improve performance.\n\nParameters\n----------\nqueries : tuple of str"); +static PyMethodDef __pyx_mdef_10selectolax_6parser_10HTMLParser_21script_srcs_contain = {"script_srcs_contain", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_10HTMLParser_21script_srcs_contain, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_10HTMLParser_20script_srcs_contain}; +static PyObject *__pyx_pw_10selectolax_6parser_10HTMLParser_21script_srcs_contain(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_queries = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("script_srcs_contain (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_queries,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 345, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 345, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "script_srcs_contain", 0) < (0)) __PYX_ERR(0, 345, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("script_srcs_contain", 1, 1, 1, i); __PYX_ERR(0, 345, __pyx_L3_error) } + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 345, __pyx_L3_error) + } + __pyx_v_queries = ((PyObject*)values[0]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("script_srcs_contain", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 345, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.parser.HTMLParser.script_srcs_contain", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_queries), (&PyTuple_Type), 1, "queries", 1))) __PYX_ERR(0, 345, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6parser_10HTMLParser_20script_srcs_contain(((struct __pyx_obj_10selectolax_6parser_HTMLParser *)__pyx_v_self), __pyx_v_queries); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_10HTMLParser_20script_srcs_contain(struct __pyx_obj_10selectolax_6parser_HTMLParser *__pyx_v_self, PyObject *__pyx_v_queries) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + size_t __pyx_t_4; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("script_srcs_contain", 0); + + /* "selectolax/parser.pyx":355 + * + * """ + * return self.root.script_srcs_contain(queries) # <<<<<<<<<<<<<< + * + * def css_matches(self, str selector): +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_root); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 355, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = __pyx_t_3; + __Pyx_INCREF(__pyx_t_2); + __pyx_t_4 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_queries}; + __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_script_srcs_contain, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 355, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "selectolax/parser.pyx":345 + * return self.root.scripts_contain(query) + * + * def script_srcs_contain(self, tuple queries): # <<<<<<<<<<<<<< + * """Returns True if any of the script SRCs attributes contain on of the specified text. + * +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("selectolax.parser.HTMLParser.script_srcs_contain", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/parser.pyx":357 + * return self.root.script_srcs_contain(queries) + * + * def css_matches(self, str selector): # <<<<<<<<<<<<<< + * return self.root.css_matches(selector) + * +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_10HTMLParser_23css_matches(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6parser_10HTMLParser_22css_matches, "HTMLParser.css_matches(self, str selector)"); +static PyMethodDef __pyx_mdef_10selectolax_6parser_10HTMLParser_23css_matches = {"css_matches", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_10HTMLParser_23css_matches, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_10HTMLParser_22css_matches}; +static PyObject *__pyx_pw_10selectolax_6parser_10HTMLParser_23css_matches(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_selector = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("css_matches (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_selector,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 357, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 357, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "css_matches", 0) < (0)) __PYX_ERR(0, 357, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("css_matches", 1, 1, 1, i); __PYX_ERR(0, 357, __pyx_L3_error) } + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 357, __pyx_L3_error) + } + __pyx_v_selector = ((PyObject*)values[0]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("css_matches", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 357, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.parser.HTMLParser.css_matches", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_selector), (&PyUnicode_Type), 1, "selector", 1))) __PYX_ERR(0, 357, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6parser_10HTMLParser_22css_matches(((struct __pyx_obj_10selectolax_6parser_HTMLParser *)__pyx_v_self), __pyx_v_selector); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_10HTMLParser_22css_matches(struct __pyx_obj_10selectolax_6parser_HTMLParser *__pyx_v_self, PyObject *__pyx_v_selector) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + size_t __pyx_t_4; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("css_matches", 0); + + /* "selectolax/parser.pyx":358 + * + * def css_matches(self, str selector): + * return self.root.css_matches(selector) # <<<<<<<<<<<<<< + * + * def merge_text_nodes(self): +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_root); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 358, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = __pyx_t_3; + __Pyx_INCREF(__pyx_t_2); + __pyx_t_4 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_selector}; + __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_css_matches, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 358, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "selectolax/parser.pyx":357 + * return self.root.script_srcs_contain(queries) + * + * def css_matches(self, str selector): # <<<<<<<<<<<<<< + * return self.root.css_matches(selector) + * +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("selectolax.parser.HTMLParser.css_matches", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/parser.pyx":360 + * return self.root.css_matches(selector) + * + * def merge_text_nodes(self): # <<<<<<<<<<<<<< + * """Iterates over all text nodes and merges all text nodes that are close to each other. + * +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_10HTMLParser_25merge_text_nodes(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6parser_10HTMLParser_24merge_text_nodes, "HTMLParser.merge_text_nodes(self)\n\nIterates over all text nodes and merges all text nodes that are close to each other.\n\nThis is useful for text extraction.\nUse it when you need to strip HTML tags and merge \"dangling\" text.\n\nExamples\n--------\n\n>>> tree = HTMLParser(\"

John

Doe

\")\n>>> node = tree.css_first('div')\n>>> tree.unwrap_tags([\"strong\"])\n>>> tree.text(deep=True, separator=\" \", strip=True)\n\"J ohn Doe\" # Text extraction produces an extra space because the strong tag was removed.\n>>> node.merge_text_nodes()\n>>> tree.text(deep=True, separator=\" \", strip=True)\n\"John Doe\""); +static PyMethodDef __pyx_mdef_10selectolax_6parser_10HTMLParser_25merge_text_nodes = {"merge_text_nodes", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_10HTMLParser_25merge_text_nodes, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_10HTMLParser_24merge_text_nodes}; +static PyObject *__pyx_pw_10selectolax_6parser_10HTMLParser_25merge_text_nodes(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("merge_text_nodes (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("merge_text_nodes", 1, 0, 0, __pyx_nargs); return NULL; } + const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len < 0)) return NULL; + if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("merge_text_nodes", __pyx_kwds); return NULL;} + __pyx_r = __pyx_pf_10selectolax_6parser_10HTMLParser_24merge_text_nodes(((struct __pyx_obj_10selectolax_6parser_HTMLParser *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_10HTMLParser_24merge_text_nodes(struct __pyx_obj_10selectolax_6parser_HTMLParser *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + size_t __pyx_t_4; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("merge_text_nodes", 0); + + /* "selectolax/parser.pyx":378 + * "John Doe" + * """ + * return self.root.merge_text_nodes() # <<<<<<<<<<<<<< + * + * @staticmethod +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_root); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 378, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = __pyx_t_3; + __Pyx_INCREF(__pyx_t_2); + __pyx_t_4 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL}; + __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_merge_text_nodes, __pyx_callargs+__pyx_t_4, (1-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 378, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "selectolax/parser.pyx":360 + * return self.root.css_matches(selector) + * + * def merge_text_nodes(self): # <<<<<<<<<<<<<< + * """Iterates over all text nodes and merges all text nodes that are close to each other. + * +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("selectolax.parser.HTMLParser.merge_text_nodes", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/parser.pyx":380 + * return self.root.merge_text_nodes() + * + * @staticmethod # <<<<<<<<<<<<<< + * cdef HTMLParser from_tree( + * myhtml_tree_t * tree, bytes raw_html, bint detect_encoding, bint use_meta_tags, str decode_errors, +*/ + +static struct __pyx_obj_10selectolax_6parser_HTMLParser *__pyx_f_10selectolax_6parser_10HTMLParser_from_tree(myhtml_tree_t *__pyx_v_tree, PyObject *__pyx_v_raw_html, int __pyx_v_detect_encoding, int __pyx_v_use_meta_tags, PyObject *__pyx_v_decode_errors, myencoding_t __pyx_v_encoding) { + struct __pyx_obj_10selectolax_6parser_HTMLParser *__pyx_v_obj = NULL; + struct __pyx_obj_10selectolax_6parser_HTMLParser *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("from_tree", 0); + + /* "selectolax/parser.pyx":385 + * myencoding_t encoding + * ): + * obj = HTMLParser.__new__(HTMLParser) # <<<<<<<<<<<<<< + * obj.html_tree = tree + * obj.raw_html = raw_html +*/ + __pyx_t_1 = ((PyObject *)__pyx_tp_new_10selectolax_6parser_HTMLParser(((PyTypeObject *)__pyx_mstate_global->__pyx_ptype_10selectolax_6parser_HTMLParser), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 385, __pyx_L1_error) + __Pyx_GOTREF((PyObject *)__pyx_t_1); + __pyx_t_2 = ((PyObject *)__pyx_t_1); + __Pyx_INCREF(__pyx_t_2); + __Pyx_DECREF((PyObject *)__pyx_t_1); __pyx_t_1 = 0; + __pyx_v_obj = ((struct __pyx_obj_10selectolax_6parser_HTMLParser *)__pyx_t_2); + __pyx_t_2 = 0; + + /* "selectolax/parser.pyx":386 + * ): + * obj = HTMLParser.__new__(HTMLParser) + * obj.html_tree = tree # <<<<<<<<<<<<<< + * obj.raw_html = raw_html + * obj.detect_encoding = detect_encoding +*/ + __pyx_v_obj->html_tree = __pyx_v_tree; + + /* "selectolax/parser.pyx":387 + * obj = HTMLParser.__new__(HTMLParser) + * obj.html_tree = tree + * obj.raw_html = raw_html # <<<<<<<<<<<<<< + * obj.detect_encoding = detect_encoding + * obj.use_meta_tags = use_meta_tags +*/ + __Pyx_INCREF(__pyx_v_raw_html); + __Pyx_GIVEREF(__pyx_v_raw_html); + __Pyx_GOTREF(__pyx_v_obj->raw_html); + __Pyx_DECREF(__pyx_v_obj->raw_html); + __pyx_v_obj->raw_html = __pyx_v_raw_html; + + /* "selectolax/parser.pyx":388 + * obj.html_tree = tree + * obj.raw_html = raw_html + * obj.detect_encoding = detect_encoding # <<<<<<<<<<<<<< + * obj.use_meta_tags = use_meta_tags + * obj.decode_errors = decode_errors +*/ + __pyx_v_obj->detect_encoding = __pyx_v_detect_encoding; + + /* "selectolax/parser.pyx":389 + * obj.raw_html = raw_html + * obj.detect_encoding = detect_encoding + * obj.use_meta_tags = use_meta_tags # <<<<<<<<<<<<<< + * obj.decode_errors = decode_errors + * obj._encoding = encoding +*/ + __pyx_v_obj->use_meta_tags = __pyx_v_use_meta_tags; + + /* "selectolax/parser.pyx":390 + * obj.detect_encoding = detect_encoding + * obj.use_meta_tags = use_meta_tags + * obj.decode_errors = decode_errors # <<<<<<<<<<<<<< + * obj._encoding = encoding + * obj.cached_script_texts = None +*/ + __Pyx_INCREF(__pyx_v_decode_errors); + __Pyx_GIVEREF(__pyx_v_decode_errors); + __Pyx_GOTREF(__pyx_v_obj->decode_errors); + __Pyx_DECREF(__pyx_v_obj->decode_errors); + __pyx_v_obj->decode_errors = __pyx_v_decode_errors; + + /* "selectolax/parser.pyx":391 + * obj.use_meta_tags = use_meta_tags + * obj.decode_errors = decode_errors + * obj._encoding = encoding # <<<<<<<<<<<<<< + * obj.cached_script_texts = None + * obj.cached_script_srcs = None +*/ + __pyx_v_obj->_encoding = __pyx_v_encoding; + + /* "selectolax/parser.pyx":392 + * obj.decode_errors = decode_errors + * obj._encoding = encoding + * obj.cached_script_texts = None # <<<<<<<<<<<<<< + * obj.cached_script_srcs = None + * return obj +*/ + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + __Pyx_GOTREF(__pyx_v_obj->cached_script_texts); + __Pyx_DECREF(__pyx_v_obj->cached_script_texts); + __pyx_v_obj->cached_script_texts = Py_None; + + /* "selectolax/parser.pyx":393 + * obj._encoding = encoding + * obj.cached_script_texts = None + * obj.cached_script_srcs = None # <<<<<<<<<<<<<< + * return obj + * +*/ + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + __Pyx_GOTREF(__pyx_v_obj->cached_script_srcs); + __Pyx_DECREF(__pyx_v_obj->cached_script_srcs); + __pyx_v_obj->cached_script_srcs = Py_None; + + /* "selectolax/parser.pyx":394 + * obj.cached_script_texts = None + * obj.cached_script_srcs = None + * return obj # <<<<<<<<<<<<<< + * + * def clone(self): +*/ + __Pyx_XDECREF((PyObject *)__pyx_r); + __Pyx_INCREF((PyObject *)__pyx_v_obj); + __pyx_r = __pyx_v_obj; + goto __pyx_L0; + + /* "selectolax/parser.pyx":380 + * return self.root.merge_text_nodes() + * + * @staticmethod # <<<<<<<<<<<<<< + * cdef HTMLParser from_tree( + * myhtml_tree_t * tree, bytes raw_html, bint detect_encoding, bint use_meta_tags, str decode_errors, +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("selectolax.parser.HTMLParser.from_tree", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF((PyObject *)__pyx_v_obj); + __Pyx_XGIVEREF((PyObject *)__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/parser.pyx":396 + * return obj + * + * def clone(self): # <<<<<<<<<<<<<< + * """Clone the current tree.""" + * cdef myhtml_t* myhtml +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_10HTMLParser_27clone(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6parser_10HTMLParser_26clone, "HTMLParser.clone(self)\n\nClone the current tree."); +static PyMethodDef __pyx_mdef_10selectolax_6parser_10HTMLParser_27clone = {"clone", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_10HTMLParser_27clone, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_10HTMLParser_26clone}; +static PyObject *__pyx_pw_10selectolax_6parser_10HTMLParser_27clone(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("clone (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("clone", 1, 0, 0, __pyx_nargs); return NULL; } + const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len < 0)) return NULL; + if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("clone", __pyx_kwds); return NULL;} + __pyx_r = __pyx_pf_10selectolax_6parser_10HTMLParser_26clone(((struct __pyx_obj_10selectolax_6parser_HTMLParser *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_10HTMLParser_26clone(struct __pyx_obj_10selectolax_6parser_HTMLParser *__pyx_v_self) { + myhtml_t *__pyx_v_myhtml; + mystatus_t __pyx_v_status; + myhtml_tree_t *__pyx_v_html_tree; + myhtml_tree_node_t *__pyx_v_node; + struct __pyx_obj_10selectolax_6parser_HTMLParser *__pyx_v_cls = 0; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + size_t __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("clone", 0); + + /* "selectolax/parser.pyx":404 + * cdef HTMLParser cls + * + * with nogil: # <<<<<<<<<<<<<< + * myhtml = myhtml_create() + * status = myhtml_init(myhtml, MyHTML_OPTIONS_DEFAULT, 1, 0) +*/ + { + PyThreadState * _save; + _save = PyEval_SaveThread(); + __Pyx_FastGIL_Remember(); + /*try:*/ { + + /* "selectolax/parser.pyx":405 + * + * with nogil: + * myhtml = myhtml_create() # <<<<<<<<<<<<<< + * status = myhtml_init(myhtml, MyHTML_OPTIONS_DEFAULT, 1, 0) + * +*/ + __pyx_v_myhtml = myhtml_create(); + + /* "selectolax/parser.pyx":406 + * with nogil: + * myhtml = myhtml_create() + * status = myhtml_init(myhtml, MyHTML_OPTIONS_DEFAULT, 1, 0) # <<<<<<<<<<<<<< + * + * if status != 0: +*/ + __pyx_v_status = myhtml_init(__pyx_v_myhtml, MyHTML_OPTIONS_DEFAULT, 1, 0); + } + + /* "selectolax/parser.pyx":404 + * cdef HTMLParser cls + * + * with nogil: # <<<<<<<<<<<<<< + * myhtml = myhtml_create() + * status = myhtml_init(myhtml, MyHTML_OPTIONS_DEFAULT, 1, 0) +*/ + /*finally:*/ { + /*normal exit:*/{ + __Pyx_FastGIL_Forget(); + PyEval_RestoreThread(_save); + goto __pyx_L5; + } + __pyx_L5:; + } + } + + /* "selectolax/parser.pyx":408 + * status = myhtml_init(myhtml, MyHTML_OPTIONS_DEFAULT, 1, 0) + * + * if status != 0: # <<<<<<<<<<<<<< + * raise RuntimeError("Can't init MyHTML object.") + * +*/ + __pyx_t_1 = (__pyx_v_status != 0); + if (unlikely(__pyx_t_1)) { + + /* "selectolax/parser.pyx":409 + * + * if status != 0: + * raise RuntimeError("Can't init MyHTML object.") # <<<<<<<<<<<<<< + * + * with nogil: +*/ + __pyx_t_3 = NULL; + __pyx_t_4 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_Can_t_init_MyHTML_object}; + __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_RuntimeError)), __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 409, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + } + __Pyx_Raise(__pyx_t_2, 0, 0, 0); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __PYX_ERR(0, 409, __pyx_L1_error) + + /* "selectolax/parser.pyx":408 + * status = myhtml_init(myhtml, MyHTML_OPTIONS_DEFAULT, 1, 0) + * + * if status != 0: # <<<<<<<<<<<<<< + * raise RuntimeError("Can't init MyHTML object.") + * +*/ + } + + /* "selectolax/parser.pyx":411 + * raise RuntimeError("Can't init MyHTML object.") + * + * with nogil: # <<<<<<<<<<<<<< + * html_tree = myhtml_tree_create() + * status = myhtml_tree_init(html_tree, myhtml) +*/ + { + PyThreadState * _save; + _save = PyEval_SaveThread(); + __Pyx_FastGIL_Remember(); + /*try:*/ { + + /* "selectolax/parser.pyx":412 + * + * with nogil: + * html_tree = myhtml_tree_create() # <<<<<<<<<<<<<< + * status = myhtml_tree_init(html_tree, myhtml) + * +*/ + __pyx_v_html_tree = myhtml_tree_create(); + + /* "selectolax/parser.pyx":413 + * with nogil: + * html_tree = myhtml_tree_create() + * status = myhtml_tree_init(html_tree, myhtml) # <<<<<<<<<<<<<< + * + * if status != 0: +*/ + __pyx_v_status = myhtml_tree_init(__pyx_v_html_tree, __pyx_v_myhtml); + } + + /* "selectolax/parser.pyx":411 + * raise RuntimeError("Can't init MyHTML object.") + * + * with nogil: # <<<<<<<<<<<<<< + * html_tree = myhtml_tree_create() + * status = myhtml_tree_init(html_tree, myhtml) +*/ + /*finally:*/ { + /*normal exit:*/{ + __Pyx_FastGIL_Forget(); + PyEval_RestoreThread(_save); + goto __pyx_L9; + } + __pyx_L9:; + } + } + + /* "selectolax/parser.pyx":415 + * status = myhtml_tree_init(html_tree, myhtml) + * + * if status != 0: # <<<<<<<<<<<<<< + * raise RuntimeError("Can't init MyHTML Tree object.") + * +*/ + __pyx_t_1 = (__pyx_v_status != 0); + if (unlikely(__pyx_t_1)) { + + /* "selectolax/parser.pyx":416 + * + * if status != 0: + * raise RuntimeError("Can't init MyHTML Tree object.") # <<<<<<<<<<<<<< + * + * node = myhtml_node_clone_deep(html_tree, self.html_tree.node_html) +*/ + __pyx_t_3 = NULL; + __pyx_t_4 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_Can_t_init_MyHTML_Tree_object}; + __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_RuntimeError)), __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 416, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + } + __Pyx_Raise(__pyx_t_2, 0, 0, 0); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __PYX_ERR(0, 416, __pyx_L1_error) + + /* "selectolax/parser.pyx":415 + * status = myhtml_tree_init(html_tree, myhtml) + * + * if status != 0: # <<<<<<<<<<<<<< + * raise RuntimeError("Can't init MyHTML Tree object.") + * +*/ + } + + /* "selectolax/parser.pyx":418 + * raise RuntimeError("Can't init MyHTML Tree object.") + * + * node = myhtml_node_clone_deep(html_tree, self.html_tree.node_html) # <<<<<<<<<<<<<< + * myhtml_tree_node_add_child(html_tree.document, node) + * html_tree.node_html = node +*/ + __pyx_v_node = myhtml_node_clone_deep(__pyx_v_html_tree, __pyx_v_self->html_tree->node_html); + + /* "selectolax/parser.pyx":419 + * + * node = myhtml_node_clone_deep(html_tree, self.html_tree.node_html) + * myhtml_tree_node_add_child(html_tree.document, node) # <<<<<<<<<<<<<< + * html_tree.node_html = node + * +*/ + myhtml_tree_node_add_child(__pyx_v_html_tree->document, __pyx_v_node); + + /* "selectolax/parser.pyx":420 + * node = myhtml_node_clone_deep(html_tree, self.html_tree.node_html) + * myhtml_tree_node_add_child(html_tree.document, node) + * html_tree.node_html = node # <<<<<<<<<<<<<< + * + * cls = HTMLParser.from_tree( +*/ + __pyx_v_html_tree->node_html = __pyx_v_node; + + /* "selectolax/parser.pyx":424 + * cls = HTMLParser.from_tree( + * html_tree, + * self.raw_html, # <<<<<<<<<<<<<< + * self.detect_encoding, + * self.use_meta_tags, +*/ + __pyx_t_2 = __pyx_v_self->raw_html; + __Pyx_INCREF(__pyx_t_2); + + /* "selectolax/parser.pyx":427 + * self.detect_encoding, + * self.use_meta_tags, + * self.decode_errors, # <<<<<<<<<<<<<< + * self._encoding + * ) +*/ + __pyx_t_3 = __pyx_v_self->decode_errors; + __Pyx_INCREF(__pyx_t_3); + + /* "selectolax/parser.pyx":422 + * html_tree.node_html = node + * + * cls = HTMLParser.from_tree( # <<<<<<<<<<<<<< + * html_tree, + * self.raw_html, +*/ + __pyx_t_5 = ((PyObject *)__pyx_f_10selectolax_6parser_10HTMLParser_from_tree(__pyx_v_html_tree, ((PyObject*)__pyx_t_2), __pyx_v_self->detect_encoding, __pyx_v_self->use_meta_tags, ((PyObject*)__pyx_t_3), __pyx_v_self->_encoding)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 422, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_v_cls = ((struct __pyx_obj_10selectolax_6parser_HTMLParser *)__pyx_t_5); + __pyx_t_5 = 0; + + /* "selectolax/parser.pyx":430 + * self._encoding + * ) + * return cls # <<<<<<<<<<<<<< + * + * def __dealloc__(self): +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF((PyObject *)__pyx_v_cls); + __pyx_r = ((PyObject *)__pyx_v_cls); + goto __pyx_L0; + + /* "selectolax/parser.pyx":396 + * return obj + * + * def clone(self): # <<<<<<<<<<<<<< + * """Clone the current tree.""" + * cdef myhtml_t* myhtml +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_AddTraceback("selectolax.parser.HTMLParser.clone", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF((PyObject *)__pyx_v_cls); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/parser.pyx":432 + * return cls + * + * def __dealloc__(self): # <<<<<<<<<<<<<< + * cdef myhtml_t* myhtml + * +*/ + +/* Python wrapper */ +static void __pyx_pw_10selectolax_6parser_10HTMLParser_29__dealloc__(PyObject *__pyx_v_self); /*proto*/ +static void __pyx_pw_10selectolax_6parser_10HTMLParser_29__dealloc__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_pf_10selectolax_6parser_10HTMLParser_28__dealloc__(((struct __pyx_obj_10selectolax_6parser_HTMLParser *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); +} + +static void __pyx_pf_10selectolax_6parser_10HTMLParser_28__dealloc__(struct __pyx_obj_10selectolax_6parser_HTMLParser *__pyx_v_self) { + myhtml_t *__pyx_v_myhtml; + int __pyx_t_1; + myhtml_t *__pyx_t_2; + + /* "selectolax/parser.pyx":435 + * cdef myhtml_t* myhtml + * + * if self.html_tree != NULL: # <<<<<<<<<<<<<< + * myhtml = self.html_tree.myhtml + * myhtml_tree_destroy(self.html_tree) +*/ + __pyx_t_1 = (__pyx_v_self->html_tree != NULL); + if (__pyx_t_1) { + + /* "selectolax/parser.pyx":436 + * + * if self.html_tree != NULL: + * myhtml = self.html_tree.myhtml # <<<<<<<<<<<<<< + * myhtml_tree_destroy(self.html_tree) + * self.html_tree = NULL # Prevent double-free +*/ + __pyx_t_2 = __pyx_v_self->html_tree->myhtml; + __pyx_v_myhtml = __pyx_t_2; + + /* "selectolax/parser.pyx":437 + * if self.html_tree != NULL: + * myhtml = self.html_tree.myhtml + * myhtml_tree_destroy(self.html_tree) # <<<<<<<<<<<<<< + * self.html_tree = NULL # Prevent double-free + * if myhtml != NULL: +*/ + (void)(myhtml_tree_destroy(__pyx_v_self->html_tree)); + + /* "selectolax/parser.pyx":438 + * myhtml = self.html_tree.myhtml + * myhtml_tree_destroy(self.html_tree) + * self.html_tree = NULL # Prevent double-free # <<<<<<<<<<<<<< + * if myhtml != NULL: + * myhtml_destroy(myhtml) +*/ + __pyx_v_self->html_tree = NULL; + + /* "selectolax/parser.pyx":439 + * myhtml_tree_destroy(self.html_tree) + * self.html_tree = NULL # Prevent double-free + * if myhtml != NULL: # <<<<<<<<<<<<<< + * myhtml_destroy(myhtml) + * +*/ + __pyx_t_1 = (__pyx_v_myhtml != NULL); + if (__pyx_t_1) { + + /* "selectolax/parser.pyx":440 + * self.html_tree = NULL # Prevent double-free + * if myhtml != NULL: + * myhtml_destroy(myhtml) # <<<<<<<<<<<<<< + * + * def __repr__(self): +*/ + (void)(myhtml_destroy(__pyx_v_myhtml)); + + /* "selectolax/parser.pyx":439 + * myhtml_tree_destroy(self.html_tree) + * self.html_tree = NULL # Prevent double-free + * if myhtml != NULL: # <<<<<<<<<<<<<< + * myhtml_destroy(myhtml) + * +*/ + } + + /* "selectolax/parser.pyx":435 + * cdef myhtml_t* myhtml + * + * if self.html_tree != NULL: # <<<<<<<<<<<<<< + * myhtml = self.html_tree.myhtml + * myhtml_tree_destroy(self.html_tree) +*/ + } + + /* "selectolax/parser.pyx":432 + * return cls + * + * def __dealloc__(self): # <<<<<<<<<<<<<< + * cdef myhtml_t* myhtml + * +*/ + + /* function exit code */ +} + +/* "selectolax/parser.pyx":442 + * myhtml_destroy(myhtml) + * + * def __repr__(self): # <<<<<<<<<<<<<< + * return '' % len(self.root.html) +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_10HTMLParser_31__repr__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_10selectolax_6parser_10HTMLParser_31__repr__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6parser_10HTMLParser_30__repr__(((struct __pyx_obj_10selectolax_6parser_HTMLParser *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_10HTMLParser_30__repr__(struct __pyx_obj_10selectolax_6parser_HTMLParser *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + Py_ssize_t __pyx_t_3; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__repr__", 0); + + /* "selectolax/parser.pyx":443 + * + * def __repr__(self): + * return '' % len(self.root.html) # <<<<<<<<<<<<<< +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_root); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 443, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_html); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 443, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_3 = PyObject_Length(__pyx_t_2); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(0, 443, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = PyLong_FromSsize_t(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 443, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_1 = PyUnicode_Format(__pyx_mstate_global->__pyx_kp_u_HTMLParser_chars_s, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 443, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "selectolax/parser.pyx":442 + * myhtml_destroy(myhtml) + * + * def __repr__(self): # <<<<<<<<<<<<<< + * return '' % len(self.root.html) +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("selectolax.parser.HTMLParser.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/parser.pxd":552 + * cdef class HTMLParser: + * cdef myhtml_tree_t *html_tree + * cdef public bint detect_encoding # <<<<<<<<<<<<<< + * cdef public bint use_meta_tags + * cdef myencoding_t _encoding +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_10HTMLParser_15detect_encoding_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_10selectolax_6parser_10HTMLParser_15detect_encoding_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6parser_10HTMLParser_15detect_encoding___get__(((struct __pyx_obj_10selectolax_6parser_HTMLParser *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_10HTMLParser_15detect_encoding___get__(struct __pyx_obj_10selectolax_6parser_HTMLParser *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->detect_encoding); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 552, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("selectolax.parser.HTMLParser.detect_encoding.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_10selectolax_6parser_10HTMLParser_15detect_encoding_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_10selectolax_6parser_10HTMLParser_15detect_encoding_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6parser_10HTMLParser_15detect_encoding_2__set__(((struct __pyx_obj_10selectolax_6parser_HTMLParser *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_10selectolax_6parser_10HTMLParser_15detect_encoding_2__set__(struct __pyx_obj_10selectolax_6parser_HTMLParser *__pyx_v_self, PyObject *__pyx_v_value) { + int __pyx_r; + int __pyx_t_1; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(7, 552, __pyx_L1_error) + __pyx_v_self->detect_encoding = __pyx_t_1; + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_AddTraceback("selectolax.parser.HTMLParser.detect_encoding.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + return __pyx_r; +} + +/* "selectolax/parser.pxd":553 + * cdef myhtml_tree_t *html_tree + * cdef public bint detect_encoding + * cdef public bint use_meta_tags # <<<<<<<<<<<<<< + * cdef myencoding_t _encoding + * cdef public unicode decode_errors +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_10HTMLParser_13use_meta_tags_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_10selectolax_6parser_10HTMLParser_13use_meta_tags_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6parser_10HTMLParser_13use_meta_tags___get__(((struct __pyx_obj_10selectolax_6parser_HTMLParser *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_10HTMLParser_13use_meta_tags___get__(struct __pyx_obj_10selectolax_6parser_HTMLParser *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->use_meta_tags); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 553, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("selectolax.parser.HTMLParser.use_meta_tags.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_10selectolax_6parser_10HTMLParser_13use_meta_tags_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_10selectolax_6parser_10HTMLParser_13use_meta_tags_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6parser_10HTMLParser_13use_meta_tags_2__set__(((struct __pyx_obj_10selectolax_6parser_HTMLParser *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_10selectolax_6parser_10HTMLParser_13use_meta_tags_2__set__(struct __pyx_obj_10selectolax_6parser_HTMLParser *__pyx_v_self, PyObject *__pyx_v_value) { + int __pyx_r; + int __pyx_t_1; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(7, 553, __pyx_L1_error) + __pyx_v_self->use_meta_tags = __pyx_t_1; + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_AddTraceback("selectolax.parser.HTMLParser.use_meta_tags.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + return __pyx_r; +} + +/* "selectolax/parser.pxd":555 + * cdef public bint use_meta_tags + * cdef myencoding_t _encoding + * cdef public unicode decode_errors # <<<<<<<<<<<<<< + * cdef public bytes raw_html + * cdef object cached_script_texts +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_10HTMLParser_13decode_errors_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_10selectolax_6parser_10HTMLParser_13decode_errors_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6parser_10HTMLParser_13decode_errors___get__(((struct __pyx_obj_10selectolax_6parser_HTMLParser *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_10HTMLParser_13decode_errors___get__(struct __pyx_obj_10selectolax_6parser_HTMLParser *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__", 0); + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_self->decode_errors); + __pyx_r = __pyx_v_self->decode_errors; + goto __pyx_L0; + + /* function exit code */ + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_10selectolax_6parser_10HTMLParser_13decode_errors_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_10selectolax_6parser_10HTMLParser_13decode_errors_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6parser_10HTMLParser_13decode_errors_2__set__(((struct __pyx_obj_10selectolax_6parser_HTMLParser *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_10selectolax_6parser_10HTMLParser_13decode_errors_2__set__(struct __pyx_obj_10selectolax_6parser_HTMLParser *__pyx_v_self, PyObject *__pyx_v_value) { + int __pyx_r; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__set__", 0); + __pyx_t_1 = __pyx_v_value; + __Pyx_INCREF(__pyx_t_1); + if (!(likely(PyUnicode_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_1))) __PYX_ERR(7, 555, __pyx_L1_error) + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF(__pyx_v_self->decode_errors); + __Pyx_DECREF(__pyx_v_self->decode_errors); + __pyx_v_self->decode_errors = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("selectolax.parser.HTMLParser.decode_errors.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_10selectolax_6parser_10HTMLParser_13decode_errors_5__del__(PyObject *__pyx_v_self); /*proto*/ +static int __pyx_pw_10selectolax_6parser_10HTMLParser_13decode_errors_5__del__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6parser_10HTMLParser_13decode_errors_4__del__(((struct __pyx_obj_10selectolax_6parser_HTMLParser *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_10selectolax_6parser_10HTMLParser_13decode_errors_4__del__(struct __pyx_obj_10selectolax_6parser_HTMLParser *__pyx_v_self) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__del__", 0); + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + __Pyx_GOTREF(__pyx_v_self->decode_errors); + __Pyx_DECREF(__pyx_v_self->decode_errors); + __pyx_v_self->decode_errors = ((PyObject*)Py_None); + + /* function exit code */ + __pyx_r = 0; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "selectolax/parser.pxd":556 + * cdef myencoding_t _encoding + * cdef public unicode decode_errors + * cdef public bytes raw_html # <<<<<<<<<<<<<< + * cdef object cached_script_texts + * cdef object cached_script_srcs +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_10HTMLParser_8raw_html_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_10selectolax_6parser_10HTMLParser_8raw_html_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6parser_10HTMLParser_8raw_html___get__(((struct __pyx_obj_10selectolax_6parser_HTMLParser *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_10HTMLParser_8raw_html___get__(struct __pyx_obj_10selectolax_6parser_HTMLParser *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__", 0); + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_self->raw_html); + __pyx_r = __pyx_v_self->raw_html; + goto __pyx_L0; + + /* function exit code */ + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_10selectolax_6parser_10HTMLParser_8raw_html_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_10selectolax_6parser_10HTMLParser_8raw_html_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6parser_10HTMLParser_8raw_html_2__set__(((struct __pyx_obj_10selectolax_6parser_HTMLParser *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_10selectolax_6parser_10HTMLParser_8raw_html_2__set__(struct __pyx_obj_10selectolax_6parser_HTMLParser *__pyx_v_self, PyObject *__pyx_v_value) { + int __pyx_r; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__set__", 0); + __pyx_t_1 = __pyx_v_value; + __Pyx_INCREF(__pyx_t_1); + if (!(likely(PyBytes_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("bytes", __pyx_t_1))) __PYX_ERR(7, 556, __pyx_L1_error) + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF(__pyx_v_self->raw_html); + __Pyx_DECREF(__pyx_v_self->raw_html); + __pyx_v_self->raw_html = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("selectolax.parser.HTMLParser.raw_html.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_10selectolax_6parser_10HTMLParser_8raw_html_5__del__(PyObject *__pyx_v_self); /*proto*/ +static int __pyx_pw_10selectolax_6parser_10HTMLParser_8raw_html_5__del__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_10selectolax_6parser_10HTMLParser_8raw_html_4__del__(((struct __pyx_obj_10selectolax_6parser_HTMLParser *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_10selectolax_6parser_10HTMLParser_8raw_html_4__del__(struct __pyx_obj_10selectolax_6parser_HTMLParser *__pyx_v_self) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__del__", 0); + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + __Pyx_GOTREF(__pyx_v_self->raw_html); + __Pyx_DECREF(__pyx_v_self->raw_html); + __pyx_v_self->raw_html = ((PyObject*)Py_None); + + /* function exit code */ + __pyx_r = 0; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * raise TypeError, "self.html_tree cannot be converted to a Python object for pickling" + * def __setstate_cython__(self, __pyx_state): +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_10HTMLParser_33__reduce_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6parser_10HTMLParser_32__reduce_cython__, "HTMLParser.__reduce_cython__(self)"); +static PyMethodDef __pyx_mdef_10selectolax_6parser_10HTMLParser_33__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_10HTMLParser_33__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_10HTMLParser_32__reduce_cython__}; +static PyObject *__pyx_pw_10selectolax_6parser_10HTMLParser_33__reduce_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL; } + const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len < 0)) return NULL; + if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;} + __pyx_r = __pyx_pf_10selectolax_6parser_10HTMLParser_32__reduce_cython__(((struct __pyx_obj_10selectolax_6parser_HTMLParser *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_10HTMLParser_32__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_10selectolax_6parser_HTMLParser *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__reduce_cython__", 0); + + /* "(tree fragment)":2 + * def __reduce_cython__(self): + * raise TypeError, "self.html_tree cannot be converted to a Python object for pickling" # <<<<<<<<<<<<<< + * def __setstate_cython__(self, __pyx_state): + * raise TypeError, "self.html_tree cannot be converted to a Python object for pickling" +*/ + __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), __pyx_mstate_global->__pyx_kp_u_self_html_tree_cannot_be_convert, 0, 0); + __PYX_ERR(1, 2, __pyx_L1_error) + + /* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * raise TypeError, "self.html_tree cannot be converted to a Python object for pickling" + * def __setstate_cython__(self, __pyx_state): +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_AddTraceback("selectolax.parser.HTMLParser.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":3 + * def __reduce_cython__(self): + * raise TypeError, "self.html_tree cannot be converted to a Python object for pickling" + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * raise TypeError, "self.html_tree cannot be converted to a Python object for pickling" +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_10HTMLParser_35__setstate_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6parser_10HTMLParser_34__setstate_cython__, "HTMLParser.__setstate_cython__(self, __pyx_state)"); +static PyMethodDef __pyx_mdef_10selectolax_6parser_10HTMLParser_35__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_10HTMLParser_35__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_10HTMLParser_34__setstate_cython__}; +static PyObject *__pyx_pw_10selectolax_6parser_10HTMLParser_35__setstate_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_state,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 3, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < (0)) __PYX_ERR(1, 3, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 3, __pyx_L3_error) } + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error) + } + __pyx_v___pyx_state = values[0]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.parser.HTMLParser.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_10selectolax_6parser_10HTMLParser_34__setstate_cython__(((struct __pyx_obj_10selectolax_6parser_HTMLParser *)__pyx_v_self), __pyx_v___pyx_state); + + /* function exit code */ + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_10HTMLParser_34__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_10selectolax_6parser_HTMLParser *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__setstate_cython__", 0); + + /* "(tree fragment)":4 + * raise TypeError, "self.html_tree cannot be converted to a Python object for pickling" + * def __setstate_cython__(self, __pyx_state): + * raise TypeError, "self.html_tree cannot be converted to a Python object for pickling" # <<<<<<<<<<<<<< +*/ + __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), __pyx_mstate_global->__pyx_kp_u_self_html_tree_cannot_be_convert, 0, 0); + __PYX_ERR(1, 4, __pyx_L1_error) + + /* "(tree fragment)":3 + * def __reduce_cython__(self): + * raise TypeError, "self.html_tree cannot be converted to a Python object for pickling" + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * raise TypeError, "self.html_tree cannot be converted to a Python object for pickling" +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_AddTraceback("selectolax.parser.HTMLParser.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":4 + * int __Pyx_CheckUnpickleChecksum(long, long, long, long, const char*) except -1 + * int __Pyx_UpdateUnpickledDict(object, object, Py_ssize_t) except -1 + * def __pyx_unpickle_Selector(__pyx_type, long __pyx_checksum, tuple __pyx_state): # <<<<<<<<<<<<<< + * cdef object __pyx_result + * __Pyx_CheckUnpickleChecksum(__pyx_checksum, 0xc5dfe7e, 0xad8d8ab, 0xc00154f, b'node, nodes') +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_10selectolax_6parser_21__pyx_unpickle_Selector(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_10selectolax_6parser_20__pyx_unpickle_Selector, "__pyx_unpickle_Selector(__pyx_type, long __pyx_checksum, tuple __pyx_state)"); +static PyMethodDef __pyx_mdef_10selectolax_6parser_21__pyx_unpickle_Selector = {"__pyx_unpickle_Selector", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_21__pyx_unpickle_Selector, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_20__pyx_unpickle_Selector}; +static PyObject *__pyx_pw_10selectolax_6parser_21__pyx_unpickle_Selector(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v___pyx_type = 0; + long __pyx_v___pyx_checksum; + PyObject *__pyx_v___pyx_state = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[3] = {0,0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__pyx_unpickle_Selector (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_type,&__pyx_mstate_global->__pyx_n_u_pyx_checksum,&__pyx_mstate_global->__pyx_n_u_pyx_state,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 4, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 3: + values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(1, 4, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 2: + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(1, 4, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 4, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__pyx_unpickle_Selector", 0) < (0)) __PYX_ERR(1, 4, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 3; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_Selector", 1, 3, 3, i); __PYX_ERR(1, 4, __pyx_L3_error) } + } + } else if (unlikely(__pyx_nargs != 3)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 4, __pyx_L3_error) + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(1, 4, __pyx_L3_error) + values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(1, 4, __pyx_L3_error) + } + __pyx_v___pyx_type = values[0]; + __pyx_v___pyx_checksum = __Pyx_PyLong_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 4, __pyx_L3_error) + __pyx_v___pyx_state = ((PyObject*)values[2]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_Selector", 1, 3, 3, __pyx_nargs); __PYX_ERR(1, 4, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("selectolax.parser.__pyx_unpickle_Selector", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v___pyx_state), (&PyTuple_Type), 1, "__pyx_state", 1))) __PYX_ERR(1, 4, __pyx_L1_error) + __pyx_r = __pyx_pf_10selectolax_6parser_20__pyx_unpickle_Selector(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_10selectolax_6parser_20__pyx_unpickle_Selector(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_v___pyx_result = 0; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + size_t __pyx_t_4; + int __pyx_t_5; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__pyx_unpickle_Selector", 0); + + /* "(tree fragment)":6 + * def __pyx_unpickle_Selector(__pyx_type, long __pyx_checksum, tuple __pyx_state): + * cdef object __pyx_result + * __Pyx_CheckUnpickleChecksum(__pyx_checksum, 0xc5dfe7e, 0xad8d8ab, 0xc00154f, b'node, nodes') # <<<<<<<<<<<<<< + * __pyx_result = Selector.__new__(__pyx_type) + * if __pyx_state is not None: +*/ + __pyx_t_1 = __Pyx_CheckUnpickleChecksum(__pyx_v___pyx_checksum, 0xc5dfe7e, 0xad8d8ab, 0xc00154f, __pyx_k_node_nodes); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(1, 6, __pyx_L1_error) + + /* "(tree fragment)":7 + * cdef object __pyx_result + * __Pyx_CheckUnpickleChecksum(__pyx_checksum, 0xc5dfe7e, 0xad8d8ab, 0xc00154f, b'node, nodes') + * __pyx_result = Selector.__new__(__pyx_type) # <<<<<<<<<<<<<< + * if __pyx_state is not None: + * __pyx_unpickle_Selector__set_state( __pyx_result, __pyx_state) +*/ + __pyx_t_3 = ((PyObject *)__pyx_mstate_global->__pyx_ptype_10selectolax_6parser_Selector); + __Pyx_INCREF(__pyx_t_3); + __pyx_t_4 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v___pyx_type}; + __pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_new, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + } + __pyx_v___pyx_result = __pyx_t_2; + __pyx_t_2 = 0; + + /* "(tree fragment)":8 + * __Pyx_CheckUnpickleChecksum(__pyx_checksum, 0xc5dfe7e, 0xad8d8ab, 0xc00154f, b'node, nodes') + * __pyx_result = Selector.__new__(__pyx_type) + * if __pyx_state is not None: # <<<<<<<<<<<<<< + * __pyx_unpickle_Selector__set_state( __pyx_result, __pyx_state) + * return __pyx_result +*/ + __pyx_t_5 = (__pyx_v___pyx_state != ((PyObject*)Py_None)); + if (__pyx_t_5) { + + /* "(tree fragment)":9 + * __pyx_result = Selector.__new__(__pyx_type) + * if __pyx_state is not None: + * __pyx_unpickle_Selector__set_state( __pyx_result, __pyx_state) # <<<<<<<<<<<<<< + * return __pyx_result + * cdef __pyx_unpickle_Selector__set_state(Selector __pyx_result, __pyx_state: tuple): +*/ + __pyx_t_2 = __pyx_f_10selectolax_6parser___pyx_unpickle_Selector__set_state(((struct __pyx_obj_10selectolax_6parser_Selector *)__pyx_v___pyx_result), __pyx_v___pyx_state); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 9, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "(tree fragment)":8 + * __Pyx_CheckUnpickleChecksum(__pyx_checksum, 0xc5dfe7e, 0xad8d8ab, 0xc00154f, b'node, nodes') + * __pyx_result = Selector.__new__(__pyx_type) + * if __pyx_state is not None: # <<<<<<<<<<<<<< + * __pyx_unpickle_Selector__set_state( __pyx_result, __pyx_state) + * return __pyx_result +*/ + } + + /* "(tree fragment)":10 + * if __pyx_state is not None: + * __pyx_unpickle_Selector__set_state( __pyx_result, __pyx_state) + * return __pyx_result # <<<<<<<<<<<<<< + * cdef __pyx_unpickle_Selector__set_state(Selector __pyx_result, __pyx_state: tuple): + * __pyx_result.node = __pyx_state[0]; __pyx_result.nodes = __pyx_state[1] +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v___pyx_result); + __pyx_r = __pyx_v___pyx_result; + goto __pyx_L0; + + /* "(tree fragment)":4 + * int __Pyx_CheckUnpickleChecksum(long, long, long, long, const char*) except -1 + * int __Pyx_UpdateUnpickledDict(object, object, Py_ssize_t) except -1 + * def __pyx_unpickle_Selector(__pyx_type, long __pyx_checksum, tuple __pyx_state): # <<<<<<<<<<<<<< + * cdef object __pyx_result + * __Pyx_CheckUnpickleChecksum(__pyx_checksum, 0xc5dfe7e, 0xad8d8ab, 0xc00154f, b'node, nodes') +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("selectolax.parser.__pyx_unpickle_Selector", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v___pyx_result); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":11 + * __pyx_unpickle_Selector__set_state( __pyx_result, __pyx_state) + * return __pyx_result + * cdef __pyx_unpickle_Selector__set_state(Selector __pyx_result, __pyx_state: tuple): # <<<<<<<<<<<<<< + * __pyx_result.node = __pyx_state[0]; __pyx_result.nodes = __pyx_state[1] + * __Pyx_UpdateUnpickledDict(__pyx_result, __pyx_state, 2) +*/ + +static PyObject *__pyx_f_10selectolax_6parser___pyx_unpickle_Selector__set_state(struct __pyx_obj_10selectolax_6parser_Selector *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__pyx_unpickle_Selector__set_state", 0); + + /* "(tree fragment)":12 + * return __pyx_result + * cdef __pyx_unpickle_Selector__set_state(Selector __pyx_result, __pyx_state: tuple): + * __pyx_result.node = __pyx_state[0]; __pyx_result.nodes = __pyx_state[1] # <<<<<<<<<<<<<< + * __Pyx_UpdateUnpickledDict(__pyx_result, __pyx_state, 2) +*/ + __pyx_t_1 = __Pyx_GetItemInt(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 0, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_mstate_global->__pyx_ptype_10selectolax_6parser_Node))))) __PYX_ERR(1, 12, __pyx_L1_error) + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF((PyObject *)__pyx_v___pyx_result->node); + __Pyx_DECREF((PyObject *)__pyx_v___pyx_result->node); + __pyx_v___pyx_result->node = ((struct __pyx_obj_10selectolax_6parser_Node *)__pyx_t_1); + __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_GetItemInt(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyLong_From_long, 0, 0, 0, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (!(likely(PyList_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("list", __pyx_t_1))) __PYX_ERR(1, 12, __pyx_L1_error) + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF(__pyx_v___pyx_result->nodes); + __Pyx_DECREF(__pyx_v___pyx_result->nodes); + __pyx_v___pyx_result->nodes = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* "(tree fragment)":13 + * cdef __pyx_unpickle_Selector__set_state(Selector __pyx_result, __pyx_state: tuple): + * __pyx_result.node = __pyx_state[0]; __pyx_result.nodes = __pyx_state[1] + * __Pyx_UpdateUnpickledDict(__pyx_result, __pyx_state, 2) # <<<<<<<<<<<<<< +*/ + __pyx_t_2 = __Pyx_UpdateUnpickledDict(((PyObject *)__pyx_v___pyx_result), __pyx_v___pyx_state, 2); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error) + + /* "(tree fragment)":11 + * __pyx_unpickle_Selector__set_state( __pyx_result, __pyx_state) + * return __pyx_result + * cdef __pyx_unpickle_Selector__set_state(Selector __pyx_result, __pyx_state: tuple): # <<<<<<<<<<<<<< + * __pyx_result.node = __pyx_state[0]; __pyx_result.nodes = __pyx_state[1] + * __Pyx_UpdateUnpickledDict(__pyx_result, __pyx_state, 2) +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("selectolax.parser.__pyx_unpickle_Selector__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} +/* #### Code section: module_exttypes ### */ +static struct __pyx_vtabstruct_10selectolax_6parser_HTMLParser __pyx_vtable_10selectolax_6parser_HTMLParser; + +static PyObject *__pyx_tp_new_10selectolax_6parser_HTMLParser(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { + struct __pyx_obj_10selectolax_6parser_HTMLParser *p; + PyObject *o; + o = __Pyx_AllocateExtensionType(t, 0); + if (unlikely(!o)) return 0; + p = ((struct __pyx_obj_10selectolax_6parser_HTMLParser *)o); + p->__pyx_vtab = __pyx_vtabptr_10selectolax_6parser_HTMLParser; + p->decode_errors = ((PyObject*)Py_None); Py_INCREF(Py_None); + p->raw_html = ((PyObject*)Py_None); Py_INCREF(Py_None); + p->cached_script_texts = Py_None; Py_INCREF(Py_None); + p->cached_script_srcs = Py_None; Py_INCREF(Py_None); + return o; +} + +static void __pyx_tp_dealloc_10selectolax_6parser_HTMLParser(PyObject *o) { + struct __pyx_obj_10selectolax_6parser_HTMLParser *p = (struct __pyx_obj_10selectolax_6parser_HTMLParser *)o; + #if CYTHON_USE_TP_FINALIZE + if (unlikely(__Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { + if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_10selectolax_6parser_HTMLParser) { + if (PyObject_CallFinalizerFromDealloc(o)) return; + } + } + #endif + PyObject_GC_UnTrack(o); + { + PyObject *etype, *eval, *etb; + PyErr_Fetch(&etype, &eval, &etb); + __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1); + __pyx_pw_10selectolax_6parser_10HTMLParser_29__dealloc__(o); + __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1); + PyErr_Restore(etype, eval, etb); + } + Py_CLEAR(p->decode_errors); + Py_CLEAR(p->raw_html); + Py_CLEAR(p->cached_script_texts); + Py_CLEAR(p->cached_script_srcs); + PyTypeObject *tp = Py_TYPE(o); + #if CYTHON_USE_TYPE_SLOTS + (*tp->tp_free)(o); + #else + { + freefunc tp_free = (freefunc)PyType_GetSlot(tp, Py_tp_free); + if (tp_free) tp_free(o); + } + #endif + #if CYTHON_USE_TYPE_SPECS + Py_DECREF(tp); + #endif +} + +static int __pyx_tp_traverse_10selectolax_6parser_HTMLParser(PyObject *o, visitproc v, void *a) { + int e; + struct __pyx_obj_10selectolax_6parser_HTMLParser *p = (struct __pyx_obj_10selectolax_6parser_HTMLParser *)o; + { + e = __Pyx_call_type_traverse(o, 1, v, a); + if (e) return e; + } + if (p->cached_script_texts) { + e = (*v)(p->cached_script_texts, a); if (e) return e; + } + if (p->cached_script_srcs) { + e = (*v)(p->cached_script_srcs, a); if (e) return e; + } + return 0; +} + +static int __pyx_tp_clear_10selectolax_6parser_HTMLParser(PyObject *o) { + PyObject* tmp; + struct __pyx_obj_10selectolax_6parser_HTMLParser *p = (struct __pyx_obj_10selectolax_6parser_HTMLParser *)o; + tmp = ((PyObject*)p->cached_script_texts); + p->cached_script_texts = Py_None; Py_INCREF(Py_None); + Py_XDECREF(tmp); + tmp = ((PyObject*)p->cached_script_srcs); + p->cached_script_srcs = Py_None; Py_INCREF(Py_None); + Py_XDECREF(tmp); + return 0; +} + +static PyObject *__pyx_getprop_10selectolax_6parser_10HTMLParser_input_encoding(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_10selectolax_6parser_10HTMLParser_14input_encoding_1__get__(o); +} + +static PyObject *__pyx_getprop_10selectolax_6parser_10HTMLParser_root(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_10selectolax_6parser_10HTMLParser_4root_1__get__(o); +} + +static PyObject *__pyx_getprop_10selectolax_6parser_10HTMLParser_head(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_10selectolax_6parser_10HTMLParser_4head_1__get__(o); +} + +static PyObject *__pyx_getprop_10selectolax_6parser_10HTMLParser_body(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_10selectolax_6parser_10HTMLParser_4body_1__get__(o); +} + +static PyObject *__pyx_getprop_10selectolax_6parser_10HTMLParser_html(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_10selectolax_6parser_10HTMLParser_4html_1__get__(o); +} + +static PyObject *__pyx_getprop_10selectolax_6parser_10HTMLParser_detect_encoding(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_10selectolax_6parser_10HTMLParser_15detect_encoding_1__get__(o); +} + +static int __pyx_setprop_10selectolax_6parser_10HTMLParser_detect_encoding(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { + if (v) { + return __pyx_pw_10selectolax_6parser_10HTMLParser_15detect_encoding_3__set__(o, v); + } + else { + PyErr_SetString(PyExc_NotImplementedError, "__del__"); + return -1; + } +} + +static PyObject *__pyx_getprop_10selectolax_6parser_10HTMLParser_use_meta_tags(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_10selectolax_6parser_10HTMLParser_13use_meta_tags_1__get__(o); +} + +static int __pyx_setprop_10selectolax_6parser_10HTMLParser_use_meta_tags(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { + if (v) { + return __pyx_pw_10selectolax_6parser_10HTMLParser_13use_meta_tags_3__set__(o, v); + } + else { + PyErr_SetString(PyExc_NotImplementedError, "__del__"); + return -1; + } +} + +static PyObject *__pyx_getprop_10selectolax_6parser_10HTMLParser_decode_errors(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_10selectolax_6parser_10HTMLParser_13decode_errors_1__get__(o); +} + +static int __pyx_setprop_10selectolax_6parser_10HTMLParser_decode_errors(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { + if (v) { + return __pyx_pw_10selectolax_6parser_10HTMLParser_13decode_errors_3__set__(o, v); + } + else { + return __pyx_pw_10selectolax_6parser_10HTMLParser_13decode_errors_5__del__(o); + } +} + +static PyObject *__pyx_getprop_10selectolax_6parser_10HTMLParser_raw_html(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_10selectolax_6parser_10HTMLParser_8raw_html_1__get__(o); +} + +static int __pyx_setprop_10selectolax_6parser_10HTMLParser_raw_html(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { + if (v) { + return __pyx_pw_10selectolax_6parser_10HTMLParser_8raw_html_3__set__(o, v); + } + else { + return __pyx_pw_10selectolax_6parser_10HTMLParser_8raw_html_5__del__(o); + } +} + +static PyMethodDef __pyx_methods_10selectolax_6parser_HTMLParser[] = { + {"css", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_10HTMLParser_3css, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_10HTMLParser_2css}, + {"css_first", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_10HTMLParser_5css_first, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_10HTMLParser_4css_first}, + {"tags", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_10HTMLParser_7tags, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_10HTMLParser_6tags}, + {"text", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_10HTMLParser_9text, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_10HTMLParser_8text}, + {"strip_tags", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_10HTMLParser_11strip_tags, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_10HTMLParser_10strip_tags}, + {"unwrap_tags", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_10HTMLParser_13unwrap_tags, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_10HTMLParser_12unwrap_tags}, + {"select", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_10HTMLParser_15select, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_10HTMLParser_14select}, + {"any_css_matches", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_10HTMLParser_17any_css_matches, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_10HTMLParser_16any_css_matches}, + {"scripts_contain", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_10HTMLParser_19scripts_contain, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_10HTMLParser_18scripts_contain}, + {"script_srcs_contain", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_10HTMLParser_21script_srcs_contain, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_10HTMLParser_20script_srcs_contain}, + {"css_matches", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_10HTMLParser_23css_matches, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_10HTMLParser_22css_matches}, + {"merge_text_nodes", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_10HTMLParser_25merge_text_nodes, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_10HTMLParser_24merge_text_nodes}, + {"clone", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_10HTMLParser_27clone, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_10HTMLParser_26clone}, + {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_10HTMLParser_33__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_10HTMLParser_32__reduce_cython__}, + {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_10HTMLParser_35__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_10HTMLParser_34__setstate_cython__}, + {0, 0, 0, 0} +}; + +static struct PyGetSetDef __pyx_getsets_10selectolax_6parser_HTMLParser[] = { + {"input_encoding", __pyx_getprop_10selectolax_6parser_10HTMLParser_input_encoding, 0, PyDoc_STR("Return encoding of the HTML document.\n\n Returns `unknown` in case the encoding is not determined.\n "), 0}, + {"root", __pyx_getprop_10selectolax_6parser_10HTMLParser_root, 0, PyDoc_STR("Returns root node."), 0}, + {"head", __pyx_getprop_10selectolax_6parser_10HTMLParser_head, 0, PyDoc_STR("Returns head node."), 0}, + {"body", __pyx_getprop_10selectolax_6parser_10HTMLParser_body, 0, PyDoc_STR("Returns document body."), 0}, + {"html", __pyx_getprop_10selectolax_6parser_10HTMLParser_html, 0, PyDoc_STR("Return HTML representation of the page."), 0}, + {"detect_encoding", __pyx_getprop_10selectolax_6parser_10HTMLParser_detect_encoding, __pyx_setprop_10selectolax_6parser_10HTMLParser_detect_encoding, PyDoc_STR("detect_encoding: 'bool'"), 0}, + {"use_meta_tags", __pyx_getprop_10selectolax_6parser_10HTMLParser_use_meta_tags, __pyx_setprop_10selectolax_6parser_10HTMLParser_use_meta_tags, PyDoc_STR("use_meta_tags: 'bool'"), 0}, + {"decode_errors", __pyx_getprop_10selectolax_6parser_10HTMLParser_decode_errors, __pyx_setprop_10selectolax_6parser_10HTMLParser_decode_errors, PyDoc_STR("decode_errors: str"), 0}, + {"raw_html", __pyx_getprop_10selectolax_6parser_10HTMLParser_raw_html, __pyx_setprop_10selectolax_6parser_10HTMLParser_raw_html, PyDoc_STR("raw_html: bytes"), 0}, + {0, 0, 0, 0, 0} +}; +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_type_10selectolax_6parser_HTMLParser_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_10selectolax_6parser_HTMLParser}, + {Py_tp_repr, (void *)__pyx_pw_10selectolax_6parser_10HTMLParser_31__repr__}, + {Py_tp_doc, (void *)PyDoc_STR("HTMLParser(html, detect_encoding=True, use_meta_tags=True, decode_errors='ignore')\n\nThe HTML parser.\n\nUse this class to parse raw HTML.\n\nParameters\n----------\n\nhtml : str (unicode) or bytes\ndetect_encoding : bool, default True\n If `True` and html type is `bytes` then encoding will be detected automatically.\nuse_meta_tags : bool, default True\n Whether to use meta tags in encoding detection process.\ndecode_errors : str, default 'ignore'\n Same as in builtin's str.decode, i.e 'strict', 'ignore' or 'replace'.")}, + {Py_tp_traverse, (void *)__pyx_tp_traverse_10selectolax_6parser_HTMLParser}, + {Py_tp_clear, (void *)__pyx_tp_clear_10selectolax_6parser_HTMLParser}, + {Py_tp_methods, (void *)__pyx_methods_10selectolax_6parser_HTMLParser}, + {Py_tp_getset, (void *)__pyx_getsets_10selectolax_6parser_HTMLParser}, + {Py_tp_init, (void *)__pyx_pw_10selectolax_6parser_10HTMLParser_1__init__}, + {Py_tp_new, (void *)__pyx_tp_new_10selectolax_6parser_HTMLParser}, + {0, 0}, +}; +static PyType_Spec __pyx_type_10selectolax_6parser_HTMLParser_spec = { + "selectolax.parser.HTMLParser", + sizeof(struct __pyx_obj_10selectolax_6parser_HTMLParser), + 0, + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, + __pyx_type_10selectolax_6parser_HTMLParser_slots, +}; +#else + +static PyTypeObject __pyx_type_10selectolax_6parser_HTMLParser = { + PyVarObject_HEAD_INIT(0, 0) + "selectolax.parser.""HTMLParser", /*tp_name*/ + sizeof(struct __pyx_obj_10selectolax_6parser_HTMLParser), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_10selectolax_6parser_HTMLParser, /*tp_dealloc*/ + 0, /*tp_vectorcall_offset*/ + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + 0, /*tp_as_async*/ + __pyx_pw_10selectolax_6parser_10HTMLParser_31__repr__, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ + PyDoc_STR("HTMLParser(html, detect_encoding=True, use_meta_tags=True, decode_errors='ignore')\n\nThe HTML parser.\n\nUse this class to parse raw HTML.\n\nParameters\n----------\n\nhtml : str (unicode) or bytes\ndetect_encoding : bool, default True\n If `True` and html type is `bytes` then encoding will be detected automatically.\nuse_meta_tags : bool, default True\n Whether to use meta tags in encoding detection process.\ndecode_errors : str, default 'ignore'\n Same as in builtin's str.decode, i.e 'strict', 'ignore' or 'replace'."), /*tp_doc*/ + __pyx_tp_traverse_10selectolax_6parser_HTMLParser, /*tp_traverse*/ + __pyx_tp_clear_10selectolax_6parser_HTMLParser, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + __pyx_methods_10selectolax_6parser_HTMLParser, /*tp_methods*/ + 0, /*tp_members*/ + __pyx_getsets_10selectolax_6parser_HTMLParser, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + #if !CYTHON_USE_TYPE_SPECS + 0, /*tp_dictoffset*/ + #endif + __pyx_pw_10selectolax_6parser_10HTMLParser_1__init__, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_10selectolax_6parser_HTMLParser, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if CYTHON_USE_TP_FINALIZE + 0, /*tp_finalize*/ + #else + NULL, /*tp_finalize*/ + #endif + #if !CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800 + 0, /*tp_vectorcall*/ + #endif + #if __PYX_NEED_TP_PRINT_SLOT == 1 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030C0000 + 0, /*tp_watched*/ + #endif + #if PY_VERSION_HEX >= 0x030d00A4 + 0, /*tp_versions_used*/ + #endif + #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, /*tp_pypy_flags*/ + #endif +}; +#endif +static struct __pyx_vtabstruct_10selectolax_6parser_Stack __pyx_vtable_10selectolax_6parser_Stack; + +static PyObject *__pyx_tp_new_10selectolax_6parser_Stack(PyTypeObject *t, PyObject *a, PyObject *k) { + struct __pyx_obj_10selectolax_6parser_Stack *p; + PyObject *o; + o = __Pyx_AllocateExtensionType(t, 1); + if (unlikely(!o)) return 0; + p = ((struct __pyx_obj_10selectolax_6parser_Stack *)o); + p->__pyx_vtab = __pyx_vtabptr_10selectolax_6parser_Stack; + if (unlikely(__pyx_pw_10selectolax_6parser_5Stack_1__cinit__(o, a, k) < 0)) goto bad; + return o; + bad: + Py_DECREF(o); o = 0; + return NULL; +} + +static void __pyx_tp_dealloc_10selectolax_6parser_Stack(PyObject *o) { + { + PyObject *etype, *eval, *etb; + PyErr_Fetch(&etype, &eval, &etb); + __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1); + __pyx_pw_10selectolax_6parser_5Stack_3__dealloc__(o); + __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1); + PyErr_Restore(etype, eval, etb); + } + PyTypeObject *tp = Py_TYPE(o); + #if CYTHON_USE_TYPE_SLOTS + (*tp->tp_free)(o); + #else + { + freefunc tp_free = (freefunc)PyType_GetSlot(tp, Py_tp_free); + if (tp_free) tp_free(o); + } + #endif + #if CYTHON_USE_TYPE_SPECS + Py_DECREF(tp); + #endif +} + +static PyMethodDef __pyx_methods_10selectolax_6parser_Stack[] = { + {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_5Stack_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_5Stack_4__reduce_cython__}, + {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_5Stack_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_5Stack_6__setstate_cython__}, + {0, 0, 0, 0} +}; +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_type_10selectolax_6parser_Stack_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_10selectolax_6parser_Stack}, + {Py_tp_methods, (void *)__pyx_methods_10selectolax_6parser_Stack}, + {Py_tp_new, (void *)__pyx_tp_new_10selectolax_6parser_Stack}, + {0, 0}, +}; +static PyType_Spec __pyx_type_10selectolax_6parser_Stack_spec = { + "selectolax.parser.Stack", + sizeof(struct __pyx_obj_10selectolax_6parser_Stack), + 0, + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER, + __pyx_type_10selectolax_6parser_Stack_slots, +}; +#else + +static PyTypeObject __pyx_type_10selectolax_6parser_Stack = { + PyVarObject_HEAD_INIT(0, 0) + "selectolax.parser.""Stack", /*tp_name*/ + sizeof(struct __pyx_obj_10selectolax_6parser_Stack), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_10selectolax_6parser_Stack, /*tp_dealloc*/ + 0, /*tp_vectorcall_offset*/ + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + 0, /*tp_as_async*/ + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER, /*tp_flags*/ + 0, /*tp_doc*/ + 0, /*tp_traverse*/ + 0, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + __pyx_methods_10selectolax_6parser_Stack, /*tp_methods*/ + 0, /*tp_members*/ + 0, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + #if !CYTHON_USE_TYPE_SPECS + 0, /*tp_dictoffset*/ + #endif + 0, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_10selectolax_6parser_Stack, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if CYTHON_USE_TP_FINALIZE + 0, /*tp_finalize*/ + #else + NULL, /*tp_finalize*/ + #endif + #if !CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800 + 0, /*tp_vectorcall*/ + #endif + #if __PYX_NEED_TP_PRINT_SLOT == 1 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030C0000 + 0, /*tp_watched*/ + #endif + #if PY_VERSION_HEX >= 0x030d00A4 + 0, /*tp_versions_used*/ + #endif + #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, /*tp_pypy_flags*/ + #endif +}; +#endif +static struct __pyx_vtabstruct_10selectolax_6parser_CSSSelector __pyx_vtable_10selectolax_6parser_CSSSelector; + +static PyObject *__pyx_tp_new_10selectolax_6parser_CSSSelector(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { + struct __pyx_obj_10selectolax_6parser_CSSSelector *p; + PyObject *o; + o = __Pyx_AllocateExtensionType(t, 1); + if (unlikely(!o)) return 0; + p = ((struct __pyx_obj_10selectolax_6parser_CSSSelector *)o); + p->__pyx_vtab = __pyx_vtabptr_10selectolax_6parser_CSSSelector; + return o; +} + +static void __pyx_tp_dealloc_10selectolax_6parser_CSSSelector(PyObject *o) { + { + PyObject *etype, *eval, *etb; + PyErr_Fetch(&etype, &eval, &etb); + __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1); + __pyx_pw_10selectolax_6parser_11CSSSelector_3__dealloc__(o); + __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1); + PyErr_Restore(etype, eval, etb); + } + PyTypeObject *tp = Py_TYPE(o); + #if CYTHON_USE_TYPE_SLOTS + (*tp->tp_free)(o); + #else + { + freefunc tp_free = (freefunc)PyType_GetSlot(tp, Py_tp_free); + if (tp_free) tp_free(o); + } + #endif + #if CYTHON_USE_TYPE_SPECS + Py_DECREF(tp); + #endif +} + +static PyMethodDef __pyx_methods_10selectolax_6parser_CSSSelector[] = { + {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_11CSSSelector_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_11CSSSelector_4__reduce_cython__}, + {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_11CSSSelector_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_11CSSSelector_6__setstate_cython__}, + {0, 0, 0, 0} +}; +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_type_10selectolax_6parser_CSSSelector_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_10selectolax_6parser_CSSSelector}, + {Py_tp_doc, (void *)PyDoc_STR("CSSSelector(str selector)")}, + {Py_tp_methods, (void *)__pyx_methods_10selectolax_6parser_CSSSelector}, + {Py_tp_init, (void *)__pyx_pw_10selectolax_6parser_11CSSSelector_1__init__}, + {Py_tp_new, (void *)__pyx_tp_new_10selectolax_6parser_CSSSelector}, + {0, 0}, +}; +static PyType_Spec __pyx_type_10selectolax_6parser_CSSSelector_spec = { + "selectolax.parser.CSSSelector", + sizeof(struct __pyx_obj_10selectolax_6parser_CSSSelector), + 0, + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER, + __pyx_type_10selectolax_6parser_CSSSelector_slots, +}; +#else + +static PyTypeObject __pyx_type_10selectolax_6parser_CSSSelector = { + PyVarObject_HEAD_INIT(0, 0) + "selectolax.parser.""CSSSelector", /*tp_name*/ + sizeof(struct __pyx_obj_10selectolax_6parser_CSSSelector), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_10selectolax_6parser_CSSSelector, /*tp_dealloc*/ + 0, /*tp_vectorcall_offset*/ + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + 0, /*tp_as_async*/ + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER, /*tp_flags*/ + PyDoc_STR("CSSSelector(str selector)"), /*tp_doc*/ + 0, /*tp_traverse*/ + 0, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + __pyx_methods_10selectolax_6parser_CSSSelector, /*tp_methods*/ + 0, /*tp_members*/ + 0, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + #if !CYTHON_USE_TYPE_SPECS + 0, /*tp_dictoffset*/ + #endif + __pyx_pw_10selectolax_6parser_11CSSSelector_1__init__, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_10selectolax_6parser_CSSSelector, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if CYTHON_USE_TP_FINALIZE + 0, /*tp_finalize*/ + #else + NULL, /*tp_finalize*/ + #endif + #if !CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800 + 0, /*tp_vectorcall*/ + #endif + #if __PYX_NEED_TP_PRINT_SLOT == 1 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030C0000 + 0, /*tp_watched*/ + #endif + #if PY_VERSION_HEX >= 0x030d00A4 + 0, /*tp_versions_used*/ + #endif + #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, /*tp_pypy_flags*/ + #endif +}; +#endif +static struct __pyx_vtabstruct_10selectolax_6parser_Selector __pyx_vtable_10selectolax_6parser_Selector; + +static PyObject *__pyx_tp_new_10selectolax_6parser_Selector(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { + struct __pyx_obj_10selectolax_6parser_Selector *p; + PyObject *o; + o = __Pyx_AllocateExtensionType(t, 0); + if (unlikely(!o)) return 0; + p = ((struct __pyx_obj_10selectolax_6parser_Selector *)o); + p->__pyx_vtab = __pyx_vtabptr_10selectolax_6parser_Selector; + p->node = ((struct __pyx_obj_10selectolax_6parser_Node *)Py_None); Py_INCREF(Py_None); + p->nodes = ((PyObject*)Py_None); Py_INCREF(Py_None); + return o; +} + +static void __pyx_tp_dealloc_10selectolax_6parser_Selector(PyObject *o) { + struct __pyx_obj_10selectolax_6parser_Selector *p = (struct __pyx_obj_10selectolax_6parser_Selector *)o; + #if CYTHON_USE_TP_FINALIZE + if (unlikely(__Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { + if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_10selectolax_6parser_Selector) { + if (PyObject_CallFinalizerFromDealloc(o)) return; + } + } + #endif + PyObject_GC_UnTrack(o); + Py_CLEAR(p->node); + Py_CLEAR(p->nodes); + PyTypeObject *tp = Py_TYPE(o); + #if CYTHON_USE_TYPE_SLOTS + (*tp->tp_free)(o); + #else + { + freefunc tp_free = (freefunc)PyType_GetSlot(tp, Py_tp_free); + if (tp_free) tp_free(o); + } + #endif + #if CYTHON_USE_TYPE_SPECS + Py_DECREF(tp); + #endif +} + +static int __pyx_tp_traverse_10selectolax_6parser_Selector(PyObject *o, visitproc v, void *a) { + int e; + struct __pyx_obj_10selectolax_6parser_Selector *p = (struct __pyx_obj_10selectolax_6parser_Selector *)o; + { + e = __Pyx_call_type_traverse(o, 1, v, a); + if (e) return e; + } + if (p->node) { + e = (*v)(((PyObject *)p->node), a); if (e) return e; + } + if (p->nodes) { + e = (*v)(p->nodes, a); if (e) return e; + } + return 0; +} + +static int __pyx_tp_clear_10selectolax_6parser_Selector(PyObject *o) { + PyObject* tmp; + struct __pyx_obj_10selectolax_6parser_Selector *p = (struct __pyx_obj_10selectolax_6parser_Selector *)o; + tmp = ((PyObject*)p->node); + p->node = ((struct __pyx_obj_10selectolax_6parser_Node *)Py_None); Py_INCREF(Py_None); + Py_XDECREF(tmp); + tmp = ((PyObject*)p->nodes); + p->nodes = ((PyObject*)Py_None); Py_INCREF(Py_None); + Py_XDECREF(tmp); + return 0; +} + +static PyObject *__pyx_getprop_10selectolax_6parser_8Selector_matches(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_10selectolax_6parser_8Selector_7matches_1__get__(o); +} + +static PyObject *__pyx_getprop_10selectolax_6parser_8Selector_any_matches(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_10selectolax_6parser_8Selector_11any_matches_1__get__(o); +} + +static PyMethodDef __pyx_methods_10selectolax_6parser_Selector[] = { + {"text_contains", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_8Selector_5text_contains, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_8Selector_4text_contains}, + {"any_text_contains", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_8Selector_7any_text_contains, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_8Selector_6any_text_contains}, + {"attribute_longer_than", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_8Selector_9attribute_longer_than, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_8Selector_8attribute_longer_than}, + {"any_attribute_longer_than", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_8Selector_11any_attribute_longer_than, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_8Selector_10any_attribute_longer_than}, + {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_8Selector_15__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_8Selector_14__reduce_cython__}, + {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_8Selector_17__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_8Selector_16__setstate_cython__}, + {0, 0, 0, 0} +}; + +static struct PyGetSetDef __pyx_getsets_10selectolax_6parser_Selector[] = { + {"matches", __pyx_getprop_10selectolax_6parser_8Selector_matches, 0, PyDoc_STR("Returns all possible matches"), 0}, + {"any_matches", __pyx_getprop_10selectolax_6parser_8Selector_any_matches, 0, PyDoc_STR("Returns True if there are any matches"), 0}, + {0, 0, 0, 0, 0} +}; +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_type_10selectolax_6parser_Selector_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_10selectolax_6parser_Selector}, + {Py_nb_bool, (void *)__pyx_pw_10selectolax_6parser_8Selector_13__bool__}, + {Py_tp_doc, (void *)PyDoc_STR("Selector(Node node, str query)\n\nAn advanced CSS selector that supports additional operations.\n\nThink of it as a toolkit that mimics some of the features of XPath.\n\nPlease note, this is an experimental feature that can change in the future.")}, + {Py_tp_traverse, (void *)__pyx_tp_traverse_10selectolax_6parser_Selector}, + {Py_tp_clear, (void *)__pyx_tp_clear_10selectolax_6parser_Selector}, + {Py_tp_methods, (void *)__pyx_methods_10selectolax_6parser_Selector}, + {Py_tp_getset, (void *)__pyx_getsets_10selectolax_6parser_Selector}, + {Py_tp_init, (void *)__pyx_pw_10selectolax_6parser_8Selector_1__init__}, + {Py_tp_new, (void *)__pyx_tp_new_10selectolax_6parser_Selector}, + {0, 0}, +}; +static PyType_Spec __pyx_type_10selectolax_6parser_Selector_spec = { + "selectolax.parser.Selector", + sizeof(struct __pyx_obj_10selectolax_6parser_Selector), + 0, + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, + __pyx_type_10selectolax_6parser_Selector_slots, +}; +#else + +static PyNumberMethods __pyx_tp_as_number_Selector = { + 0, /*nb_add*/ + 0, /*nb_subtract*/ + 0, /*nb_multiply*/ + 0, /*nb_remainder*/ + 0, /*nb_divmod*/ + 0, /*nb_power*/ + 0, /*nb_negative*/ + 0, /*nb_positive*/ + 0, /*nb_absolute*/ + __pyx_pw_10selectolax_6parser_8Selector_13__bool__, /*nb_bool*/ + 0, /*nb_invert*/ + 0, /*nb_lshift*/ + 0, /*nb_rshift*/ + 0, /*nb_and*/ + 0, /*nb_xor*/ + 0, /*nb_or*/ + 0, /*nb_int*/ + 0, /*nb_long (reserved)*/ + 0, /*nb_float*/ + 0, /*nb_inplace_add*/ + 0, /*nb_inplace_subtract*/ + 0, /*nb_inplace_multiply*/ + 0, /*nb_inplace_remainder*/ + 0, /*nb_inplace_power*/ + 0, /*nb_inplace_lshift*/ + 0, /*nb_inplace_rshift*/ + 0, /*nb_inplace_and*/ + 0, /*nb_inplace_xor*/ + 0, /*nb_inplace_or*/ + 0, /*nb_floor_divide*/ + 0, /*nb_true_divide*/ + 0, /*nb_inplace_floor_divide*/ + 0, /*nb_inplace_true_divide*/ + 0, /*nb_index*/ + 0, /*nb_matrix_multiply*/ + 0, /*nb_inplace_matrix_multiply*/ +}; + +static PyTypeObject __pyx_type_10selectolax_6parser_Selector = { + PyVarObject_HEAD_INIT(0, 0) + "selectolax.parser.""Selector", /*tp_name*/ + sizeof(struct __pyx_obj_10selectolax_6parser_Selector), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_10selectolax_6parser_Selector, /*tp_dealloc*/ + 0, /*tp_vectorcall_offset*/ + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + 0, /*tp_as_async*/ + 0, /*tp_repr*/ + &__pyx_tp_as_number_Selector, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ + PyDoc_STR("Selector(Node node, str query)\n\nAn advanced CSS selector that supports additional operations.\n\nThink of it as a toolkit that mimics some of the features of XPath.\n\nPlease note, this is an experimental feature that can change in the future."), /*tp_doc*/ + __pyx_tp_traverse_10selectolax_6parser_Selector, /*tp_traverse*/ + __pyx_tp_clear_10selectolax_6parser_Selector, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + __pyx_methods_10selectolax_6parser_Selector, /*tp_methods*/ + 0, /*tp_members*/ + __pyx_getsets_10selectolax_6parser_Selector, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + #if !CYTHON_USE_TYPE_SPECS + 0, /*tp_dictoffset*/ + #endif + __pyx_pw_10selectolax_6parser_8Selector_1__init__, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_10selectolax_6parser_Selector, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if CYTHON_USE_TP_FINALIZE + 0, /*tp_finalize*/ + #else + NULL, /*tp_finalize*/ + #endif + #if !CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800 + 0, /*tp_vectorcall*/ + #endif + #if __PYX_NEED_TP_PRINT_SLOT == 1 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030C0000 + 0, /*tp_watched*/ + #endif + #if PY_VERSION_HEX >= 0x030d00A4 + 0, /*tp_versions_used*/ + #endif + #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, /*tp_pypy_flags*/ + #endif +}; +#endif +static struct __pyx_vtabstruct_10selectolax_6parser__Attributes __pyx_vtable_10selectolax_6parser__Attributes; + +static PyObject *__pyx_tp_new_10selectolax_6parser__Attributes(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { + struct __pyx_obj_10selectolax_6parser__Attributes *p; + PyObject *o; + o = __Pyx_AllocateExtensionType(t, 0); + if (unlikely(!o)) return 0; + p = ((struct __pyx_obj_10selectolax_6parser__Attributes *)o); + p->__pyx_vtab = __pyx_vtabptr_10selectolax_6parser__Attributes; + p->decode_errors = ((PyObject*)Py_None); Py_INCREF(Py_None); + return o; +} + +static void __pyx_tp_dealloc_10selectolax_6parser__Attributes(PyObject *o) { + struct __pyx_obj_10selectolax_6parser__Attributes *p = (struct __pyx_obj_10selectolax_6parser__Attributes *)o; + #if CYTHON_USE_TP_FINALIZE + if (unlikely(__Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && (!PyType_IS_GC(Py_TYPE(o)) || !__Pyx_PyObject_GC_IsFinalized(o))) { + if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_10selectolax_6parser__Attributes) { + if (PyObject_CallFinalizerFromDealloc(o)) return; + } + } + #endif + Py_CLEAR(p->decode_errors); + PyTypeObject *tp = Py_TYPE(o); + #if CYTHON_USE_TYPE_SLOTS + (*tp->tp_free)(o); + #else + { + freefunc tp_free = (freefunc)PyType_GetSlot(tp, Py_tp_free); + if (tp_free) tp_free(o); + } + #endif + #if CYTHON_USE_TYPE_SPECS + Py_DECREF(tp); + #endif +} + +static PyObject *__pyx_sq_item_10selectolax_6parser__Attributes(PyObject *o, Py_ssize_t i) { + PyObject *r; + PyObject *x = PyLong_FromSsize_t(i); if(!x) return 0; + #if CYTHON_USE_TYPE_SLOTS || (!CYTHON_USE_TYPE_SPECS && __PYX_LIMITED_VERSION_HEX < 0x030A0000) + r = Py_TYPE(o)->tp_as_mapping->mp_subscript(o, x); + #else + r = ((binaryfunc)PyType_GetSlot(Py_TYPE(o), Py_mp_subscript))(o, x); + #endif + Py_DECREF(x); + return r; +} + +static int __pyx_mp_ass_subscript_10selectolax_6parser__Attributes(PyObject *o, PyObject *i, PyObject *v) { + if (v) { + return __pyx_pw_10selectolax_6parser_11_Attributes_4__setitem__(o, i, v); + } + else { + return __pyx_pw_10selectolax_6parser_11_Attributes_6__delitem__(o, i); + } +} + +static PyMethodDef __pyx_methods_10selectolax_6parser__Attributes[] = { + {"keys", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_11_Attributes_12keys, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_11_Attributes_11keys}, + {"items", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_11_Attributes_14items, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_11_Attributes_13items}, + {"values", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_11_Attributes_17values, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_11_Attributes_16values}, + {"get", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_11_Attributes_20get, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_11_Attributes_19get}, + {"sget", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_11_Attributes_22sget, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_11_Attributes_21sget}, + {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_11_Attributes_28__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_11_Attributes_27__reduce_cython__}, + {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_11_Attributes_30__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_11_Attributes_29__setstate_cython__}, + {0, 0, 0, 0} +}; +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_type_10selectolax_6parser__Attributes_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_10selectolax_6parser__Attributes}, + {Py_tp_repr, (void *)__pyx_pw_10selectolax_6parser_11_Attributes_26__repr__}, + {Py_sq_length, (void *)__pyx_pw_10selectolax_6parser_11_Attributes_10__len__}, + {Py_sq_item, (void *)__pyx_sq_item_10selectolax_6parser__Attributes}, + {Py_sq_contains, (void *)__pyx_pw_10selectolax_6parser_11_Attributes_24__contains__}, + {Py_mp_length, (void *)__pyx_pw_10selectolax_6parser_11_Attributes_10__len__}, + {Py_mp_subscript, (void *)__pyx_pw_10selectolax_6parser_11_Attributes_8__getitem__}, + {Py_mp_ass_subscript, (void *)__pyx_mp_ass_subscript_10selectolax_6parser__Attributes}, + {Py_tp_doc, (void *)PyDoc_STR("A dict-like object that represents attributes.")}, + {Py_tp_iter, (void *)__pyx_pw_10selectolax_6parser_11_Attributes_1__iter__}, + {Py_tp_methods, (void *)__pyx_methods_10selectolax_6parser__Attributes}, + {Py_tp_new, (void *)__pyx_tp_new_10selectolax_6parser__Attributes}, + {0, 0}, +}; +static PyType_Spec __pyx_type_10selectolax_6parser__Attributes_spec = { + "selectolax.parser._Attributes", + sizeof(struct __pyx_obj_10selectolax_6parser__Attributes), + 0, + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, + __pyx_type_10selectolax_6parser__Attributes_slots, +}; +#else + +static PySequenceMethods __pyx_tp_as_sequence__Attributes = { + __pyx_pw_10selectolax_6parser_11_Attributes_10__len__, /*sq_length*/ + 0, /*sq_concat*/ + 0, /*sq_repeat*/ + __pyx_sq_item_10selectolax_6parser__Attributes, /*sq_item*/ + 0, /*sq_slice*/ + 0, /*sq_ass_item*/ + 0, /*sq_ass_slice*/ + __pyx_pw_10selectolax_6parser_11_Attributes_24__contains__, /*sq_contains*/ + 0, /*sq_inplace_concat*/ + 0, /*sq_inplace_repeat*/ +}; + +static PyMappingMethods __pyx_tp_as_mapping__Attributes = { + __pyx_pw_10selectolax_6parser_11_Attributes_10__len__, /*mp_length*/ + __pyx_pw_10selectolax_6parser_11_Attributes_8__getitem__, /*mp_subscript*/ + __pyx_mp_ass_subscript_10selectolax_6parser__Attributes, /*mp_ass_subscript*/ +}; + +static PyTypeObject __pyx_type_10selectolax_6parser__Attributes = { + PyVarObject_HEAD_INIT(0, 0) + "selectolax.parser.""_Attributes", /*tp_name*/ + sizeof(struct __pyx_obj_10selectolax_6parser__Attributes), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_10selectolax_6parser__Attributes, /*tp_dealloc*/ + 0, /*tp_vectorcall_offset*/ + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + 0, /*tp_as_async*/ + __pyx_pw_10selectolax_6parser_11_Attributes_26__repr__, /*tp_repr*/ + 0, /*tp_as_number*/ + &__pyx_tp_as_sequence__Attributes, /*tp_as_sequence*/ + &__pyx_tp_as_mapping__Attributes, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/ + PyDoc_STR("A dict-like object that represents attributes."), /*tp_doc*/ + 0, /*tp_traverse*/ + 0, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + __pyx_pw_10selectolax_6parser_11_Attributes_1__iter__, /*tp_iter*/ + 0, /*tp_iternext*/ + __pyx_methods_10selectolax_6parser__Attributes, /*tp_methods*/ + 0, /*tp_members*/ + 0, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + #if !CYTHON_USE_TYPE_SPECS + 0, /*tp_dictoffset*/ + #endif + 0, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_10selectolax_6parser__Attributes, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if CYTHON_USE_TP_FINALIZE + 0, /*tp_finalize*/ + #else + NULL, /*tp_finalize*/ + #endif + #if !CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800 + 0, /*tp_vectorcall*/ + #endif + #if __PYX_NEED_TP_PRINT_SLOT == 1 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030C0000 + 0, /*tp_watched*/ + #endif + #if PY_VERSION_HEX >= 0x030d00A4 + 0, /*tp_versions_used*/ + #endif + #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, /*tp_pypy_flags*/ + #endif +}; +#endif +static struct __pyx_vtabstruct_10selectolax_6parser_Node __pyx_vtable_10selectolax_6parser_Node; + +static PyObject *__pyx_tp_new_10selectolax_6parser_Node(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { + struct __pyx_obj_10selectolax_6parser_Node *p; + PyObject *o; + o = __Pyx_AllocateExtensionType(t, 0); + if (unlikely(!o)) return 0; + p = ((struct __pyx_obj_10selectolax_6parser_Node *)o); + p->__pyx_vtab = __pyx_vtabptr_10selectolax_6parser_Node; + p->parser = ((struct __pyx_obj_10selectolax_6parser_HTMLParser *)Py_None); Py_INCREF(Py_None); + return o; +} + +static void __pyx_tp_dealloc_10selectolax_6parser_Node(PyObject *o) { + struct __pyx_obj_10selectolax_6parser_Node *p = (struct __pyx_obj_10selectolax_6parser_Node *)o; + #if CYTHON_USE_TP_FINALIZE + if (unlikely(__Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { + if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_10selectolax_6parser_Node) { + if (PyObject_CallFinalizerFromDealloc(o)) return; + } + } + #endif + PyObject_GC_UnTrack(o); + Py_CLEAR(p->parser); + PyTypeObject *tp = Py_TYPE(o); + #if CYTHON_USE_TYPE_SLOTS + (*tp->tp_free)(o); + #else + { + freefunc tp_free = (freefunc)PyType_GetSlot(tp, Py_tp_free); + if (tp_free) tp_free(o); + } + #endif + #if CYTHON_USE_TYPE_SPECS + Py_DECREF(tp); + #endif +} + +static int __pyx_tp_traverse_10selectolax_6parser_Node(PyObject *o, visitproc v, void *a) { + int e; + struct __pyx_obj_10selectolax_6parser_Node *p = (struct __pyx_obj_10selectolax_6parser_Node *)o; + { + e = __Pyx_call_type_traverse(o, 1, v, a); + if (e) return e; + } + if (p->parser) { + e = (*v)(((PyObject *)p->parser), a); if (e) return e; + } + return 0; +} + +static int __pyx_tp_clear_10selectolax_6parser_Node(PyObject *o) { + PyObject* tmp; + struct __pyx_obj_10selectolax_6parser_Node *p = (struct __pyx_obj_10selectolax_6parser_Node *)o; + tmp = ((PyObject*)p->parser); + p->parser = ((struct __pyx_obj_10selectolax_6parser_HTMLParser *)Py_None); Py_INCREF(Py_None); + Py_XDECREF(tmp); + return 0; +} + +static PyObject *__pyx_tp_richcompare_10selectolax_6parser_Node(PyObject *o1, PyObject *o2, int op) { + switch (op) { + case Py_EQ: { + return __pyx_pw_10selectolax_6parser_4Node_47__eq__(o1, o2); + } + case Py_NE: { + PyObject *ret; + ret = __pyx_pw_10selectolax_6parser_4Node_47__eq__(o1, o2); + if (likely(ret && ret != Py_NotImplemented)) { + int b = __Pyx_PyObject_IsTrue(ret); + Py_DECREF(ret); + if (unlikely(b < 0)) return NULL; + ret = (b) ? Py_False : Py_True; + Py_INCREF(ret); + } + return ret; + } + default: { + return __Pyx_NewRef(Py_NotImplemented); + } + } +} + +static PyObject *__pyx_getprop_10selectolax_6parser_4Node_attributes(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_10selectolax_6parser_4Node_10attributes_1__get__(o); +} + +static PyObject *__pyx_getprop_10selectolax_6parser_4Node_attrs(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_10selectolax_6parser_4Node_5attrs_1__get__(o); +} + +static PyObject *__pyx_getprop_10selectolax_6parser_4Node_mem_id(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_10selectolax_6parser_4Node_6mem_id_1__get__(o); +} + +static PyObject *__pyx_getprop_10selectolax_6parser_4Node_id(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_10selectolax_6parser_4Node_2id_1__get__(o); +} + +static PyObject *__pyx_getprop_10selectolax_6parser_4Node_tag(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_10selectolax_6parser_4Node_3tag_1__get__(o); +} + +static PyObject *__pyx_getprop_10selectolax_6parser_4Node_child(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_10selectolax_6parser_4Node_5child_1__get__(o); +} + +static PyObject *__pyx_getprop_10selectolax_6parser_4Node_parent(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_10selectolax_6parser_4Node_6parent_1__get__(o); +} + +static PyObject *__pyx_getprop_10selectolax_6parser_4Node_next(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_10selectolax_6parser_4Node_4next_1__get__(o); +} + +static PyObject *__pyx_getprop_10selectolax_6parser_4Node_prev(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_10selectolax_6parser_4Node_4prev_1__get__(o); +} + +static PyObject *__pyx_getprop_10selectolax_6parser_4Node_last_child(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_10selectolax_6parser_4Node_10last_child_1__get__(o); +} + +static PyObject *__pyx_getprop_10selectolax_6parser_4Node_html(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_10selectolax_6parser_4Node_4html_1__get__(o); +} + +static PyObject *__pyx_getprop_10selectolax_6parser_4Node_raw_value(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_10selectolax_6parser_4Node_9raw_value_1__get__(o); +} + +static PyObject *__pyx_getprop_10selectolax_6parser_4Node_text_content(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_10selectolax_6parser_4Node_12text_content_1__get__(o); +} + +static PyObject *__pyx_getprop_10selectolax_6parser_4Node_parser(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_10selectolax_6parser_4Node_6parser_1__get__(o); +} + +static int __pyx_setprop_10selectolax_6parser_4Node_parser(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { + if (v) { + return __pyx_pw_10selectolax_6parser_4Node_6parser_3__set__(o, v); + } + else { + return __pyx_pw_10selectolax_6parser_4Node_6parser_5__del__(o); + } +} + +static PyMethodDef __pyx_methods_10selectolax_6parser_Node[] = { + {"text", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_4Node_3text, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_4Node_2text}, + {"iter", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_4Node_5iter, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_4Node_4iter}, + {"traverse", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_4Node_8traverse, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_4Node_7traverse}, + {"css", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_4Node_11css, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_4Node_10css}, + {"any_css_matches", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_4Node_13any_css_matches, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_4Node_12any_css_matches}, + {"css_matches", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_4Node_15css_matches, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_4Node_14css_matches}, + {"css_first", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_4Node_17css_first, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_4Node_16css_first}, + {"decompose", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_4Node_19decompose, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_4Node_18decompose}, + {"remove", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_4Node_21remove, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_4Node_20remove}, + {"unwrap", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_4Node_23unwrap, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_4Node_22unwrap}, + {"strip_tags", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_4Node_25strip_tags, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_4Node_24strip_tags}, + {"unwrap_tags", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_4Node_27unwrap_tags, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_4Node_26unwrap_tags}, + {"unwrap_tags", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_4Node_37unwrap_tags, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_4Node_36unwrap_tags}, + {"select", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_4Node_39select, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_4Node_38select}, + {"scripts_contain", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_4Node_41scripts_contain, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_4Node_40scripts_contain}, + {"script_srcs_contain", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_4Node_43script_srcs_contain, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_4Node_42script_srcs_contain}, + {"merge_text_nodes", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_4Node_49merge_text_nodes, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_4Node_48merge_text_nodes}, + {"__pyx_fuse_0replace_with", (PyCFunction)(void(*)(void))(PyCFunctionWithKeywords)__pyx_fuse_0__pyx_pw_10selectolax_6parser_4Node_51replace_with, METH_VARARGS|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_4Node_28replace_with}, + {"__pyx_fuse_1replace_with", (PyCFunction)(void(*)(void))(PyCFunctionWithKeywords)__pyx_fuse_1__pyx_pw_10selectolax_6parser_4Node_53replace_with, METH_VARARGS|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_4Node_28replace_with}, + {"__pyx_fuse_2replace_with", (PyCFunction)(void(*)(void))(PyCFunctionWithKeywords)__pyx_fuse_2__pyx_pw_10selectolax_6parser_4Node_55replace_with, METH_VARARGS|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_4Node_28replace_with}, + {"__pyx_fuse_0insert_before", (PyCFunction)(void(*)(void))(PyCFunctionWithKeywords)__pyx_fuse_0__pyx_pw_10selectolax_6parser_4Node_59insert_before, METH_VARARGS|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_4Node_30insert_before}, + {"__pyx_fuse_1insert_before", (PyCFunction)(void(*)(void))(PyCFunctionWithKeywords)__pyx_fuse_1__pyx_pw_10selectolax_6parser_4Node_61insert_before, METH_VARARGS|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_4Node_30insert_before}, + {"__pyx_fuse_2insert_before", (PyCFunction)(void(*)(void))(PyCFunctionWithKeywords)__pyx_fuse_2__pyx_pw_10selectolax_6parser_4Node_63insert_before, METH_VARARGS|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_4Node_30insert_before}, + {"__pyx_fuse_0insert_after", (PyCFunction)(void(*)(void))(PyCFunctionWithKeywords)__pyx_fuse_0__pyx_pw_10selectolax_6parser_4Node_67insert_after, METH_VARARGS|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_4Node_32insert_after}, + {"__pyx_fuse_1insert_after", (PyCFunction)(void(*)(void))(PyCFunctionWithKeywords)__pyx_fuse_1__pyx_pw_10selectolax_6parser_4Node_69insert_after, METH_VARARGS|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_4Node_32insert_after}, + {"__pyx_fuse_2insert_after", (PyCFunction)(void(*)(void))(PyCFunctionWithKeywords)__pyx_fuse_2__pyx_pw_10selectolax_6parser_4Node_71insert_after, METH_VARARGS|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_4Node_32insert_after}, + {"__pyx_fuse_0insert_child", (PyCFunction)(void(*)(void))(PyCFunctionWithKeywords)__pyx_fuse_0__pyx_pw_10selectolax_6parser_4Node_75insert_child, METH_VARARGS|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_4Node_34insert_child}, + {"__pyx_fuse_1insert_child", (PyCFunction)(void(*)(void))(PyCFunctionWithKeywords)__pyx_fuse_1__pyx_pw_10selectolax_6parser_4Node_77insert_child, METH_VARARGS|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_4Node_34insert_child}, + {"__pyx_fuse_2insert_child", (PyCFunction)(void(*)(void))(PyCFunctionWithKeywords)__pyx_fuse_2__pyx_pw_10selectolax_6parser_4Node_79insert_child, METH_VARARGS|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_4Node_34insert_child}, + {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_4Node_83__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_4Node_82__reduce_cython__}, + {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10selectolax_6parser_4Node_85__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10selectolax_6parser_4Node_84__setstate_cython__}, + {0, 0, 0, 0} +}; + +static struct PyGetSetDef __pyx_getsets_10selectolax_6parser_Node[] = { + {"attributes", __pyx_getprop_10selectolax_6parser_4Node_attributes, 0, PyDoc_STR("Get all attributes that belong to the current node.\n\n The value of empty attributes is None.\n\n Returns\n -------\n attributes : dictionary of all attributes.\n\n Examples\n --------\n\n >>> tree = HTMLParser(\"
\")\n >>> node = tree.css_first('div')\n >>> node.attributes\n {'data': None, 'id': 'my_id'}\n "), 0}, + {"attrs", __pyx_getprop_10selectolax_6parser_4Node_attrs, 0, PyDoc_STR("A dict-like object that is similar to the ``attributes`` property, but operates directly on the Node data.\n\n .. warning:: Use ``attributes`` instead, if you don't want to modify Node attributes.\n\n Returns\n -------\n attributes : Attributes mapping object.\n\n Examples\n --------\n\n >>> tree = HTMLParser(\"
\")\n >>> node = tree.css_first('div')\n >>> node.attrs\n
\n >>> node.attrs['id']\n 'a'\n >>> node.attrs['foo'] = 'bar'\n >>> del node.attrs['id']\n >>> node.attributes\n {'foo': 'bar'}\n >>> node.attrs['id'] = 'new_id'\n >>> node.html\n '
'\n "), 0}, + {"mem_id", __pyx_getprop_10selectolax_6parser_4Node_mem_id, 0, PyDoc_STR("Get the mem_id attribute of the node.\n\n Returns\n -------\n text : int\n "), 0}, + {"id", __pyx_getprop_10selectolax_6parser_4Node_id, 0, PyDoc_STR("Get the id attribute of the node.\n\n Returns None if id does not set.\n\n Returns\n -------\n text : str\n "), 0}, + {"tag", __pyx_getprop_10selectolax_6parser_4Node_tag, 0, PyDoc_STR("Return the name of the current tag (e.g. div, p, img).\n\n Returns\n -------\n text : str\n "), 0}, + {"child", __pyx_getprop_10selectolax_6parser_4Node_child, 0, PyDoc_STR("Alias for the `first_child` property.\n\n **Deprecated**. Please use `first_child` instead.\n "), 0}, + {"parent", __pyx_getprop_10selectolax_6parser_4Node_parent, 0, PyDoc_STR("Return the parent node."), 0}, + {"next", __pyx_getprop_10selectolax_6parser_4Node_next, 0, PyDoc_STR("Return next node."), 0}, + {"prev", __pyx_getprop_10selectolax_6parser_4Node_prev, 0, PyDoc_STR("Return previous node."), 0}, + {"last_child", __pyx_getprop_10selectolax_6parser_4Node_last_child, 0, PyDoc_STR("Return last child node."), 0}, + {"html", __pyx_getprop_10selectolax_6parser_4Node_html, 0, PyDoc_STR("Return HTML representation of the current node including all its child nodes.\n\n Returns\n -------\n text : str\n "), 0}, + {"raw_value", __pyx_getprop_10selectolax_6parser_4Node_raw_value, 0, PyDoc_STR("Return the raw (unparsed, original) value of a node.\n\n Currently, works on text nodes only.\n\n Returns\n -------\n\n raw_value : bytes\n\n Examples\n --------\n\n >>> html_parser = HTMLParser('
<test>
')\n >>> selector = html_parser.css_first('div')\n >>> selector.child.html\n '<test>'\n >>> selector.child.raw_value\n b'<test>'\n "), 0}, + {"text_content", __pyx_getprop_10selectolax_6parser_4Node_text_content, 0, PyDoc_STR("Returns the text of the node if it is a text node.\n\n Returns None for other nodes.\n Unlike the ``text`` method, does not include child nodes.\n\n Returns\n -------\n text : str or None.\n "), 0}, + {"parser", __pyx_getprop_10selectolax_6parser_4Node_parser, __pyx_setprop_10selectolax_6parser_4Node_parser, PyDoc_STR("parser: selectolax.parser.HTMLParser"), 0}, + {0, 0, 0, 0, 0} +}; +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_type_10selectolax_6parser_Node_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_10selectolax_6parser_Node}, + {Py_tp_repr, (void *)__pyx_pw_10selectolax_6parser_4Node_45__repr__}, + {Py_tp_hash, (void *)__pyx_pw_10selectolax_6parser_4Node_1__hash__}, + {Py_tp_doc, (void *)PyDoc_STR("A class that represents HTML node (element).")}, + {Py_tp_traverse, (void *)__pyx_tp_traverse_10selectolax_6parser_Node}, + {Py_tp_clear, (void *)__pyx_tp_clear_10selectolax_6parser_Node}, + {Py_tp_richcompare, (void *)__pyx_tp_richcompare_10selectolax_6parser_Node}, + {Py_tp_methods, (void *)__pyx_methods_10selectolax_6parser_Node}, + {Py_tp_getset, (void *)__pyx_getsets_10selectolax_6parser_Node}, + {Py_tp_new, (void *)__pyx_tp_new_10selectolax_6parser_Node}, + {0, 0}, +}; +static PyType_Spec __pyx_type_10selectolax_6parser_Node_spec = { + "selectolax.parser.Node", + sizeof(struct __pyx_obj_10selectolax_6parser_Node), + 0, + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, + __pyx_type_10selectolax_6parser_Node_slots, +}; +#else + +static PyTypeObject __pyx_type_10selectolax_6parser_Node = { + PyVarObject_HEAD_INIT(0, 0) + "selectolax.parser.""Node", /*tp_name*/ + sizeof(struct __pyx_obj_10selectolax_6parser_Node), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_10selectolax_6parser_Node, /*tp_dealloc*/ + 0, /*tp_vectorcall_offset*/ + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + 0, /*tp_as_async*/ + __pyx_pw_10selectolax_6parser_4Node_45__repr__, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + __pyx_pw_10selectolax_6parser_4Node_1__hash__, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ + PyDoc_STR("A class that represents HTML node (element)."), /*tp_doc*/ + __pyx_tp_traverse_10selectolax_6parser_Node, /*tp_traverse*/ + __pyx_tp_clear_10selectolax_6parser_Node, /*tp_clear*/ + __pyx_tp_richcompare_10selectolax_6parser_Node, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + __pyx_methods_10selectolax_6parser_Node, /*tp_methods*/ + 0, /*tp_members*/ + __pyx_getsets_10selectolax_6parser_Node, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + #if !CYTHON_USE_TYPE_SPECS + 0, /*tp_dictoffset*/ + #endif + 0, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_10selectolax_6parser_Node, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if CYTHON_USE_TP_FINALIZE + 0, /*tp_finalize*/ + #else + NULL, /*tp_finalize*/ + #endif + #if !CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800 + 0, /*tp_vectorcall*/ + #endif + #if __PYX_NEED_TP_PRINT_SLOT == 1 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030C0000 + 0, /*tp_watched*/ + #endif + #if PY_VERSION_HEX >= 0x030d00A4 + 0, /*tp_versions_used*/ + #endif + #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, /*tp_pypy_flags*/ + #endif +}; +#endif + +static PyObject *__pyx_tp_new_10selectolax_6parser___pyx_scope_struct____iter__(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { + PyObject *o; + #if CYTHON_USE_FREELISTS + if (likely((int)(__pyx_mstate_global->__pyx_freecount_10selectolax_6parser___pyx_scope_struct____iter__ > 0) & __PYX_CHECK_FINAL_TYPE_FOR_FREELISTS(t, __pyx_mstate_global->__pyx_ptype_10selectolax_6parser___pyx_scope_struct____iter__, sizeof(struct __pyx_obj_10selectolax_6parser___pyx_scope_struct____iter__)))) + { + o = (PyObject*)__pyx_mstate_global->__pyx_freelist_10selectolax_6parser___pyx_scope_struct____iter__[--__pyx_mstate_global->__pyx_freecount_10selectolax_6parser___pyx_scope_struct____iter__]; + #if CYTHON_USE_TYPE_SPECS + Py_DECREF(Py_TYPE(o)); + #endif + memset(o, 0, sizeof(struct __pyx_obj_10selectolax_6parser___pyx_scope_struct____iter__)); + #if CYTHON_COMPILING_IN_LIMITED_API + (void) PyObject_Init(o, t); + #else + (void) PyObject_INIT(o, t); + #endif + PyObject_GC_Track(o); + } else + #endif + { + o = __Pyx_AllocateExtensionType(t, 1); + if (unlikely(!o)) return 0; + } + return o; +} + +static void __pyx_tp_dealloc_10selectolax_6parser___pyx_scope_struct____iter__(PyObject *o) { + struct __pyx_obj_10selectolax_6parser___pyx_scope_struct____iter__ *p = (struct __pyx_obj_10selectolax_6parser___pyx_scope_struct____iter__ *)o; + #if CYTHON_USE_TP_FINALIZE + if (unlikely(__Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { + if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_10selectolax_6parser___pyx_scope_struct____iter__) { + if (PyObject_CallFinalizerFromDealloc(o)) return; + } + } + #endif + PyObject_GC_UnTrack(o); + Py_CLEAR(p->__pyx_v_key); + Py_CLEAR(p->__pyx_v_self); + #if CYTHON_USE_FREELISTS + if (likely((int)(__pyx_mstate_global->__pyx_freecount_10selectolax_6parser___pyx_scope_struct____iter__ < 8) & __PYX_CHECK_FINAL_TYPE_FOR_FREELISTS(Py_TYPE(o), __pyx_mstate_global->__pyx_ptype_10selectolax_6parser___pyx_scope_struct____iter__, sizeof(struct __pyx_obj_10selectolax_6parser___pyx_scope_struct____iter__)))) + { + __pyx_mstate_global->__pyx_freelist_10selectolax_6parser___pyx_scope_struct____iter__[__pyx_mstate_global->__pyx_freecount_10selectolax_6parser___pyx_scope_struct____iter__++] = ((struct __pyx_obj_10selectolax_6parser___pyx_scope_struct____iter__ *)o); + } else + #endif + { + PyTypeObject *tp = Py_TYPE(o); + #if CYTHON_USE_TYPE_SLOTS + (*tp->tp_free)(o); + #else + { + freefunc tp_free = (freefunc)PyType_GetSlot(tp, Py_tp_free); + if (tp_free) tp_free(o); + } + #endif + #if CYTHON_USE_TYPE_SPECS + Py_DECREF(tp); + #endif + } +} + +static int __pyx_tp_traverse_10selectolax_6parser___pyx_scope_struct____iter__(PyObject *o, visitproc v, void *a) { + int e; + struct __pyx_obj_10selectolax_6parser___pyx_scope_struct____iter__ *p = (struct __pyx_obj_10selectolax_6parser___pyx_scope_struct____iter__ *)o; + { + e = __Pyx_call_type_traverse(o, 1, v, a); + if (e) return e; + } + if (p->__pyx_v_key) { + e = (*v)(p->__pyx_v_key, a); if (e) return e; + } + if (p->__pyx_v_self) { + e = (*v)(((PyObject *)p->__pyx_v_self), a); if (e) return e; + } + return 0; +} +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_type_10selectolax_6parser___pyx_scope_struct____iter___slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_10selectolax_6parser___pyx_scope_struct____iter__}, + {Py_tp_traverse, (void *)__pyx_tp_traverse_10selectolax_6parser___pyx_scope_struct____iter__}, + {Py_tp_new, (void *)__pyx_tp_new_10selectolax_6parser___pyx_scope_struct____iter__}, + {0, 0}, +}; +static PyType_Spec __pyx_type_10selectolax_6parser___pyx_scope_struct____iter___spec = { + "selectolax.parser.__pyx_scope_struct____iter__", + sizeof(struct __pyx_obj_10selectolax_6parser___pyx_scope_struct____iter__), + 0, + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, + __pyx_type_10selectolax_6parser___pyx_scope_struct____iter___slots, +}; +#else + +static PyTypeObject __pyx_type_10selectolax_6parser___pyx_scope_struct____iter__ = { + PyVarObject_HEAD_INIT(0, 0) + "selectolax.parser.""__pyx_scope_struct____iter__", /*tp_name*/ + sizeof(struct __pyx_obj_10selectolax_6parser___pyx_scope_struct____iter__), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_10selectolax_6parser___pyx_scope_struct____iter__, /*tp_dealloc*/ + 0, /*tp_vectorcall_offset*/ + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + 0, /*tp_as_async*/ + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ + 0, /*tp_doc*/ + __pyx_tp_traverse_10selectolax_6parser___pyx_scope_struct____iter__, /*tp_traverse*/ + 0, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + 0, /*tp_methods*/ + 0, /*tp_members*/ + 0, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + #if !CYTHON_USE_TYPE_SPECS + 0, /*tp_dictoffset*/ + #endif + 0, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_10selectolax_6parser___pyx_scope_struct____iter__, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if CYTHON_USE_TP_FINALIZE + 0, /*tp_finalize*/ + #else + NULL, /*tp_finalize*/ + #endif + #if !CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800 + 0, /*tp_vectorcall*/ + #endif + #if __PYX_NEED_TP_PRINT_SLOT == 1 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030C0000 + 0, /*tp_watched*/ + #endif + #if PY_VERSION_HEX >= 0x030d00A4 + 0, /*tp_versions_used*/ + #endif + #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, /*tp_pypy_flags*/ + #endif +}; +#endif + +static PyObject *__pyx_tp_new_10selectolax_6parser___pyx_scope_struct_1_items(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { + PyObject *o; + #if CYTHON_USE_FREELISTS + if (likely((int)(__pyx_mstate_global->__pyx_freecount_10selectolax_6parser___pyx_scope_struct_1_items > 0) & __PYX_CHECK_FINAL_TYPE_FOR_FREELISTS(t, __pyx_mstate_global->__pyx_ptype_10selectolax_6parser___pyx_scope_struct_1_items, sizeof(struct __pyx_obj_10selectolax_6parser___pyx_scope_struct_1_items)))) + { + o = (PyObject*)__pyx_mstate_global->__pyx_freelist_10selectolax_6parser___pyx_scope_struct_1_items[--__pyx_mstate_global->__pyx_freecount_10selectolax_6parser___pyx_scope_struct_1_items]; + #if CYTHON_USE_TYPE_SPECS + Py_DECREF(Py_TYPE(o)); + #endif + memset(o, 0, sizeof(struct __pyx_obj_10selectolax_6parser___pyx_scope_struct_1_items)); + #if CYTHON_COMPILING_IN_LIMITED_API + (void) PyObject_Init(o, t); + #else + (void) PyObject_INIT(o, t); + #endif + PyObject_GC_Track(o); + } else + #endif + { + o = __Pyx_AllocateExtensionType(t, 1); + if (unlikely(!o)) return 0; + } + return o; +} + +static void __pyx_tp_dealloc_10selectolax_6parser___pyx_scope_struct_1_items(PyObject *o) { + struct __pyx_obj_10selectolax_6parser___pyx_scope_struct_1_items *p = (struct __pyx_obj_10selectolax_6parser___pyx_scope_struct_1_items *)o; + #if CYTHON_USE_TP_FINALIZE + if (unlikely(__Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { + if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_10selectolax_6parser___pyx_scope_struct_1_items) { + if (PyObject_CallFinalizerFromDealloc(o)) return; + } + } + #endif + PyObject_GC_UnTrack(o); + Py_CLEAR(p->__pyx_v_key); + Py_CLEAR(p->__pyx_v_self); + Py_CLEAR(p->__pyx_t_0); + #if CYTHON_USE_FREELISTS + if (likely((int)(__pyx_mstate_global->__pyx_freecount_10selectolax_6parser___pyx_scope_struct_1_items < 8) & __PYX_CHECK_FINAL_TYPE_FOR_FREELISTS(Py_TYPE(o), __pyx_mstate_global->__pyx_ptype_10selectolax_6parser___pyx_scope_struct_1_items, sizeof(struct __pyx_obj_10selectolax_6parser___pyx_scope_struct_1_items)))) + { + __pyx_mstate_global->__pyx_freelist_10selectolax_6parser___pyx_scope_struct_1_items[__pyx_mstate_global->__pyx_freecount_10selectolax_6parser___pyx_scope_struct_1_items++] = ((struct __pyx_obj_10selectolax_6parser___pyx_scope_struct_1_items *)o); + } else + #endif + { + PyTypeObject *tp = Py_TYPE(o); + #if CYTHON_USE_TYPE_SLOTS + (*tp->tp_free)(o); + #else + { + freefunc tp_free = (freefunc)PyType_GetSlot(tp, Py_tp_free); + if (tp_free) tp_free(o); + } + #endif + #if CYTHON_USE_TYPE_SPECS + Py_DECREF(tp); + #endif + } +} + +static int __pyx_tp_traverse_10selectolax_6parser___pyx_scope_struct_1_items(PyObject *o, visitproc v, void *a) { + int e; + struct __pyx_obj_10selectolax_6parser___pyx_scope_struct_1_items *p = (struct __pyx_obj_10selectolax_6parser___pyx_scope_struct_1_items *)o; + { + e = __Pyx_call_type_traverse(o, 1, v, a); + if (e) return e; + } + if (p->__pyx_v_key) { + e = (*v)(p->__pyx_v_key, a); if (e) return e; + } + if (p->__pyx_v_self) { + e = (*v)(((PyObject *)p->__pyx_v_self), a); if (e) return e; + } + if (p->__pyx_t_0) { + e = (*v)(p->__pyx_t_0, a); if (e) return e; + } + return 0; +} +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_type_10selectolax_6parser___pyx_scope_struct_1_items_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_10selectolax_6parser___pyx_scope_struct_1_items}, + {Py_tp_traverse, (void *)__pyx_tp_traverse_10selectolax_6parser___pyx_scope_struct_1_items}, + {Py_tp_new, (void *)__pyx_tp_new_10selectolax_6parser___pyx_scope_struct_1_items}, + {0, 0}, +}; +static PyType_Spec __pyx_type_10selectolax_6parser___pyx_scope_struct_1_items_spec = { + "selectolax.parser.__pyx_scope_struct_1_items", + sizeof(struct __pyx_obj_10selectolax_6parser___pyx_scope_struct_1_items), + 0, + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, + __pyx_type_10selectolax_6parser___pyx_scope_struct_1_items_slots, +}; +#else + +static PyTypeObject __pyx_type_10selectolax_6parser___pyx_scope_struct_1_items = { + PyVarObject_HEAD_INIT(0, 0) + "selectolax.parser.""__pyx_scope_struct_1_items", /*tp_name*/ + sizeof(struct __pyx_obj_10selectolax_6parser___pyx_scope_struct_1_items), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_10selectolax_6parser___pyx_scope_struct_1_items, /*tp_dealloc*/ + 0, /*tp_vectorcall_offset*/ + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + 0, /*tp_as_async*/ + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ + 0, /*tp_doc*/ + __pyx_tp_traverse_10selectolax_6parser___pyx_scope_struct_1_items, /*tp_traverse*/ + 0, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + 0, /*tp_methods*/ + 0, /*tp_members*/ + 0, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + #if !CYTHON_USE_TYPE_SPECS + 0, /*tp_dictoffset*/ + #endif + 0, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_10selectolax_6parser___pyx_scope_struct_1_items, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if CYTHON_USE_TP_FINALIZE + 0, /*tp_finalize*/ + #else + NULL, /*tp_finalize*/ + #endif + #if !CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800 + 0, /*tp_vectorcall*/ + #endif + #if __PYX_NEED_TP_PRINT_SLOT == 1 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030C0000 + 0, /*tp_watched*/ + #endif + #if PY_VERSION_HEX >= 0x030d00A4 + 0, /*tp_versions_used*/ + #endif + #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, /*tp_pypy_flags*/ + #endif +}; +#endif + +static PyObject *__pyx_tp_new_10selectolax_6parser___pyx_scope_struct_2_values(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { + PyObject *o; + #if CYTHON_USE_FREELISTS + if (likely((int)(__pyx_mstate_global->__pyx_freecount_10selectolax_6parser___pyx_scope_struct_2_values > 0) & __PYX_CHECK_FINAL_TYPE_FOR_FREELISTS(t, __pyx_mstate_global->__pyx_ptype_10selectolax_6parser___pyx_scope_struct_2_values, sizeof(struct __pyx_obj_10selectolax_6parser___pyx_scope_struct_2_values)))) + { + o = (PyObject*)__pyx_mstate_global->__pyx_freelist_10selectolax_6parser___pyx_scope_struct_2_values[--__pyx_mstate_global->__pyx_freecount_10selectolax_6parser___pyx_scope_struct_2_values]; + #if CYTHON_USE_TYPE_SPECS + Py_DECREF(Py_TYPE(o)); + #endif + memset(o, 0, sizeof(struct __pyx_obj_10selectolax_6parser___pyx_scope_struct_2_values)); + #if CYTHON_COMPILING_IN_LIMITED_API + (void) PyObject_Init(o, t); + #else + (void) PyObject_INIT(o, t); + #endif + PyObject_GC_Track(o); + } else + #endif + { + o = __Pyx_AllocateExtensionType(t, 1); + if (unlikely(!o)) return 0; + } + return o; +} + +static void __pyx_tp_dealloc_10selectolax_6parser___pyx_scope_struct_2_values(PyObject *o) { + struct __pyx_obj_10selectolax_6parser___pyx_scope_struct_2_values *p = (struct __pyx_obj_10selectolax_6parser___pyx_scope_struct_2_values *)o; + #if CYTHON_USE_TP_FINALIZE + if (unlikely(__Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { + if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_10selectolax_6parser___pyx_scope_struct_2_values) { + if (PyObject_CallFinalizerFromDealloc(o)) return; + } + } + #endif + PyObject_GC_UnTrack(o); + Py_CLEAR(p->__pyx_v_key); + Py_CLEAR(p->__pyx_v_self); + Py_CLEAR(p->__pyx_t_0); + #if CYTHON_USE_FREELISTS + if (likely((int)(__pyx_mstate_global->__pyx_freecount_10selectolax_6parser___pyx_scope_struct_2_values < 8) & __PYX_CHECK_FINAL_TYPE_FOR_FREELISTS(Py_TYPE(o), __pyx_mstate_global->__pyx_ptype_10selectolax_6parser___pyx_scope_struct_2_values, sizeof(struct __pyx_obj_10selectolax_6parser___pyx_scope_struct_2_values)))) + { + __pyx_mstate_global->__pyx_freelist_10selectolax_6parser___pyx_scope_struct_2_values[__pyx_mstate_global->__pyx_freecount_10selectolax_6parser___pyx_scope_struct_2_values++] = ((struct __pyx_obj_10selectolax_6parser___pyx_scope_struct_2_values *)o); + } else + #endif + { + PyTypeObject *tp = Py_TYPE(o); + #if CYTHON_USE_TYPE_SLOTS + (*tp->tp_free)(o); + #else + { + freefunc tp_free = (freefunc)PyType_GetSlot(tp, Py_tp_free); + if (tp_free) tp_free(o); + } + #endif + #if CYTHON_USE_TYPE_SPECS + Py_DECREF(tp); + #endif + } +} + +static int __pyx_tp_traverse_10selectolax_6parser___pyx_scope_struct_2_values(PyObject *o, visitproc v, void *a) { + int e; + struct __pyx_obj_10selectolax_6parser___pyx_scope_struct_2_values *p = (struct __pyx_obj_10selectolax_6parser___pyx_scope_struct_2_values *)o; + { + e = __Pyx_call_type_traverse(o, 1, v, a); + if (e) return e; + } + if (p->__pyx_v_key) { + e = (*v)(p->__pyx_v_key, a); if (e) return e; + } + if (p->__pyx_v_self) { + e = (*v)(((PyObject *)p->__pyx_v_self), a); if (e) return e; + } + if (p->__pyx_t_0) { + e = (*v)(p->__pyx_t_0, a); if (e) return e; + } + return 0; +} +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_type_10selectolax_6parser___pyx_scope_struct_2_values_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_10selectolax_6parser___pyx_scope_struct_2_values}, + {Py_tp_traverse, (void *)__pyx_tp_traverse_10selectolax_6parser___pyx_scope_struct_2_values}, + {Py_tp_new, (void *)__pyx_tp_new_10selectolax_6parser___pyx_scope_struct_2_values}, + {0, 0}, +}; +static PyType_Spec __pyx_type_10selectolax_6parser___pyx_scope_struct_2_values_spec = { + "selectolax.parser.__pyx_scope_struct_2_values", + sizeof(struct __pyx_obj_10selectolax_6parser___pyx_scope_struct_2_values), + 0, + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, + __pyx_type_10selectolax_6parser___pyx_scope_struct_2_values_slots, +}; +#else + +static PyTypeObject __pyx_type_10selectolax_6parser___pyx_scope_struct_2_values = { + PyVarObject_HEAD_INIT(0, 0) + "selectolax.parser.""__pyx_scope_struct_2_values", /*tp_name*/ + sizeof(struct __pyx_obj_10selectolax_6parser___pyx_scope_struct_2_values), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_10selectolax_6parser___pyx_scope_struct_2_values, /*tp_dealloc*/ + 0, /*tp_vectorcall_offset*/ + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + 0, /*tp_as_async*/ + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ + 0, /*tp_doc*/ + __pyx_tp_traverse_10selectolax_6parser___pyx_scope_struct_2_values, /*tp_traverse*/ + 0, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + 0, /*tp_methods*/ + 0, /*tp_members*/ + 0, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + #if !CYTHON_USE_TYPE_SPECS + 0, /*tp_dictoffset*/ + #endif + 0, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_10selectolax_6parser___pyx_scope_struct_2_values, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if CYTHON_USE_TP_FINALIZE + 0, /*tp_finalize*/ + #else + NULL, /*tp_finalize*/ + #endif + #if !CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800 + 0, /*tp_vectorcall*/ + #endif + #if __PYX_NEED_TP_PRINT_SLOT == 1 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030C0000 + 0, /*tp_watched*/ + #endif + #if PY_VERSION_HEX >= 0x030d00A4 + 0, /*tp_versions_used*/ + #endif + #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, /*tp_pypy_flags*/ + #endif +}; +#endif + +static PyObject *__pyx_tp_new_10selectolax_6parser___pyx_scope_struct_3_iter(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { + PyObject *o; + #if CYTHON_USE_FREELISTS + if (likely((int)(__pyx_mstate_global->__pyx_freecount_10selectolax_6parser___pyx_scope_struct_3_iter > 0) & __PYX_CHECK_FINAL_TYPE_FOR_FREELISTS(t, __pyx_mstate_global->__pyx_ptype_10selectolax_6parser___pyx_scope_struct_3_iter, sizeof(struct __pyx_obj_10selectolax_6parser___pyx_scope_struct_3_iter)))) + { + o = (PyObject*)__pyx_mstate_global->__pyx_freelist_10selectolax_6parser___pyx_scope_struct_3_iter[--__pyx_mstate_global->__pyx_freecount_10selectolax_6parser___pyx_scope_struct_3_iter]; + #if CYTHON_USE_TYPE_SPECS + Py_DECREF(Py_TYPE(o)); + #endif + memset(o, 0, sizeof(struct __pyx_obj_10selectolax_6parser___pyx_scope_struct_3_iter)); + #if CYTHON_COMPILING_IN_LIMITED_API + (void) PyObject_Init(o, t); + #else + (void) PyObject_INIT(o, t); + #endif + PyObject_GC_Track(o); + } else + #endif + { + o = __Pyx_AllocateExtensionType(t, 1); + if (unlikely(!o)) return 0; + } + return o; +} + +static void __pyx_tp_dealloc_10selectolax_6parser___pyx_scope_struct_3_iter(PyObject *o) { + struct __pyx_obj_10selectolax_6parser___pyx_scope_struct_3_iter *p = (struct __pyx_obj_10selectolax_6parser___pyx_scope_struct_3_iter *)o; + #if CYTHON_USE_TP_FINALIZE + if (unlikely(__Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { + if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_10selectolax_6parser___pyx_scope_struct_3_iter) { + if (PyObject_CallFinalizerFromDealloc(o)) return; + } + } + #endif + PyObject_GC_UnTrack(o); + Py_CLEAR(p->__pyx_v_include_text); + Py_CLEAR(p->__pyx_v_next_node); + Py_CLEAR(p->__pyx_v_self); + #if CYTHON_USE_FREELISTS + if (likely((int)(__pyx_mstate_global->__pyx_freecount_10selectolax_6parser___pyx_scope_struct_3_iter < 8) & __PYX_CHECK_FINAL_TYPE_FOR_FREELISTS(Py_TYPE(o), __pyx_mstate_global->__pyx_ptype_10selectolax_6parser___pyx_scope_struct_3_iter, sizeof(struct __pyx_obj_10selectolax_6parser___pyx_scope_struct_3_iter)))) + { + __pyx_mstate_global->__pyx_freelist_10selectolax_6parser___pyx_scope_struct_3_iter[__pyx_mstate_global->__pyx_freecount_10selectolax_6parser___pyx_scope_struct_3_iter++] = ((struct __pyx_obj_10selectolax_6parser___pyx_scope_struct_3_iter *)o); + } else + #endif + { + PyTypeObject *tp = Py_TYPE(o); + #if CYTHON_USE_TYPE_SLOTS + (*tp->tp_free)(o); + #else + { + freefunc tp_free = (freefunc)PyType_GetSlot(tp, Py_tp_free); + if (tp_free) tp_free(o); + } + #endif + #if CYTHON_USE_TYPE_SPECS + Py_DECREF(tp); + #endif + } +} + +static int __pyx_tp_traverse_10selectolax_6parser___pyx_scope_struct_3_iter(PyObject *o, visitproc v, void *a) { + int e; + struct __pyx_obj_10selectolax_6parser___pyx_scope_struct_3_iter *p = (struct __pyx_obj_10selectolax_6parser___pyx_scope_struct_3_iter *)o; + { + e = __Pyx_call_type_traverse(o, 1, v, a); + if (e) return e; + } + if (p->__pyx_v_include_text) { + e = (*v)(p->__pyx_v_include_text, a); if (e) return e; + } + if (p->__pyx_v_next_node) { + e = (*v)(((PyObject *)p->__pyx_v_next_node), a); if (e) return e; + } + if (p->__pyx_v_self) { + e = (*v)(((PyObject *)p->__pyx_v_self), a); if (e) return e; + } + return 0; +} +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_type_10selectolax_6parser___pyx_scope_struct_3_iter_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_10selectolax_6parser___pyx_scope_struct_3_iter}, + {Py_tp_traverse, (void *)__pyx_tp_traverse_10selectolax_6parser___pyx_scope_struct_3_iter}, + {Py_tp_new, (void *)__pyx_tp_new_10selectolax_6parser___pyx_scope_struct_3_iter}, + {0, 0}, +}; +static PyType_Spec __pyx_type_10selectolax_6parser___pyx_scope_struct_3_iter_spec = { + "selectolax.parser.__pyx_scope_struct_3_iter", + sizeof(struct __pyx_obj_10selectolax_6parser___pyx_scope_struct_3_iter), + 0, + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, + __pyx_type_10selectolax_6parser___pyx_scope_struct_3_iter_slots, +}; +#else + +static PyTypeObject __pyx_type_10selectolax_6parser___pyx_scope_struct_3_iter = { + PyVarObject_HEAD_INIT(0, 0) + "selectolax.parser.""__pyx_scope_struct_3_iter", /*tp_name*/ + sizeof(struct __pyx_obj_10selectolax_6parser___pyx_scope_struct_3_iter), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_10selectolax_6parser___pyx_scope_struct_3_iter, /*tp_dealloc*/ + 0, /*tp_vectorcall_offset*/ + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + 0, /*tp_as_async*/ + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ + 0, /*tp_doc*/ + __pyx_tp_traverse_10selectolax_6parser___pyx_scope_struct_3_iter, /*tp_traverse*/ + 0, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + 0, /*tp_methods*/ + 0, /*tp_members*/ + 0, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + #if !CYTHON_USE_TYPE_SPECS + 0, /*tp_dictoffset*/ + #endif + 0, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_10selectolax_6parser___pyx_scope_struct_3_iter, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if CYTHON_USE_TP_FINALIZE + 0, /*tp_finalize*/ + #else + NULL, /*tp_finalize*/ + #endif + #if !CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800 + 0, /*tp_vectorcall*/ + #endif + #if __PYX_NEED_TP_PRINT_SLOT == 1 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030C0000 + 0, /*tp_watched*/ + #endif + #if PY_VERSION_HEX >= 0x030d00A4 + 0, /*tp_versions_used*/ + #endif + #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, /*tp_pypy_flags*/ + #endif +}; +#endif + +static PyObject *__pyx_tp_new_10selectolax_6parser___pyx_scope_struct_4_traverse(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { + PyObject *o; + #if CYTHON_USE_FREELISTS + if (likely((int)(__pyx_mstate_global->__pyx_freecount_10selectolax_6parser___pyx_scope_struct_4_traverse > 0) & __PYX_CHECK_FINAL_TYPE_FOR_FREELISTS(t, __pyx_mstate_global->__pyx_ptype_10selectolax_6parser___pyx_scope_struct_4_traverse, sizeof(struct __pyx_obj_10selectolax_6parser___pyx_scope_struct_4_traverse)))) + { + o = (PyObject*)__pyx_mstate_global->__pyx_freelist_10selectolax_6parser___pyx_scope_struct_4_traverse[--__pyx_mstate_global->__pyx_freecount_10selectolax_6parser___pyx_scope_struct_4_traverse]; + #if CYTHON_USE_TYPE_SPECS + Py_DECREF(Py_TYPE(o)); + #endif + memset(o, 0, sizeof(struct __pyx_obj_10selectolax_6parser___pyx_scope_struct_4_traverse)); + #if CYTHON_COMPILING_IN_LIMITED_API + (void) PyObject_Init(o, t); + #else + (void) PyObject_INIT(o, t); + #endif + PyObject_GC_Track(o); + } else + #endif + { + o = __Pyx_AllocateExtensionType(t, 1); + if (unlikely(!o)) return 0; + } + return o; +} + +static void __pyx_tp_dealloc_10selectolax_6parser___pyx_scope_struct_4_traverse(PyObject *o) { + struct __pyx_obj_10selectolax_6parser___pyx_scope_struct_4_traverse *p = (struct __pyx_obj_10selectolax_6parser___pyx_scope_struct_4_traverse *)o; + #if CYTHON_USE_TP_FINALIZE + if (unlikely(__Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { + if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_10selectolax_6parser___pyx_scope_struct_4_traverse) { + if (PyObject_CallFinalizerFromDealloc(o)) return; + } + } + #endif + PyObject_GC_UnTrack(o); + Py_CLEAR(p->__pyx_v_include_text); + Py_CLEAR(p->__pyx_v_next_node); + Py_CLEAR(p->__pyx_v_self); + Py_CLEAR(p->__pyx_v_stack); + #if CYTHON_USE_FREELISTS + if (likely((int)(__pyx_mstate_global->__pyx_freecount_10selectolax_6parser___pyx_scope_struct_4_traverse < 8) & __PYX_CHECK_FINAL_TYPE_FOR_FREELISTS(Py_TYPE(o), __pyx_mstate_global->__pyx_ptype_10selectolax_6parser___pyx_scope_struct_4_traverse, sizeof(struct __pyx_obj_10selectolax_6parser___pyx_scope_struct_4_traverse)))) + { + __pyx_mstate_global->__pyx_freelist_10selectolax_6parser___pyx_scope_struct_4_traverse[__pyx_mstate_global->__pyx_freecount_10selectolax_6parser___pyx_scope_struct_4_traverse++] = ((struct __pyx_obj_10selectolax_6parser___pyx_scope_struct_4_traverse *)o); + } else + #endif + { + PyTypeObject *tp = Py_TYPE(o); + #if CYTHON_USE_TYPE_SLOTS + (*tp->tp_free)(o); + #else + { + freefunc tp_free = (freefunc)PyType_GetSlot(tp, Py_tp_free); + if (tp_free) tp_free(o); + } + #endif + #if CYTHON_USE_TYPE_SPECS + Py_DECREF(tp); + #endif + } +} + +static int __pyx_tp_traverse_10selectolax_6parser___pyx_scope_struct_4_traverse(PyObject *o, visitproc v, void *a) { + int e; + struct __pyx_obj_10selectolax_6parser___pyx_scope_struct_4_traverse *p = (struct __pyx_obj_10selectolax_6parser___pyx_scope_struct_4_traverse *)o; + { + e = __Pyx_call_type_traverse(o, 1, v, a); + if (e) return e; + } + if (p->__pyx_v_include_text) { + e = (*v)(p->__pyx_v_include_text, a); if (e) return e; + } + if (p->__pyx_v_next_node) { + e = (*v)(((PyObject *)p->__pyx_v_next_node), a); if (e) return e; + } + if (p->__pyx_v_self) { + e = (*v)(((PyObject *)p->__pyx_v_self), a); if (e) return e; + } + if (p->__pyx_v_stack) { + e = (*v)(((PyObject *)p->__pyx_v_stack), a); if (e) return e; + } + return 0; +} +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_type_10selectolax_6parser___pyx_scope_struct_4_traverse_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_10selectolax_6parser___pyx_scope_struct_4_traverse}, + {Py_tp_traverse, (void *)__pyx_tp_traverse_10selectolax_6parser___pyx_scope_struct_4_traverse}, + {Py_tp_new, (void *)__pyx_tp_new_10selectolax_6parser___pyx_scope_struct_4_traverse}, + {0, 0}, +}; +static PyType_Spec __pyx_type_10selectolax_6parser___pyx_scope_struct_4_traverse_spec = { + "selectolax.parser.__pyx_scope_struct_4_traverse", + sizeof(struct __pyx_obj_10selectolax_6parser___pyx_scope_struct_4_traverse), + 0, + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, + __pyx_type_10selectolax_6parser___pyx_scope_struct_4_traverse_slots, +}; +#else + +static PyTypeObject __pyx_type_10selectolax_6parser___pyx_scope_struct_4_traverse = { + PyVarObject_HEAD_INIT(0, 0) + "selectolax.parser.""__pyx_scope_struct_4_traverse", /*tp_name*/ + sizeof(struct __pyx_obj_10selectolax_6parser___pyx_scope_struct_4_traverse), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_10selectolax_6parser___pyx_scope_struct_4_traverse, /*tp_dealloc*/ + 0, /*tp_vectorcall_offset*/ + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + 0, /*tp_as_async*/ + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ + 0, /*tp_doc*/ + __pyx_tp_traverse_10selectolax_6parser___pyx_scope_struct_4_traverse, /*tp_traverse*/ + 0, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + 0, /*tp_methods*/ + 0, /*tp_members*/ + 0, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + #if !CYTHON_USE_TYPE_SPECS + 0, /*tp_dictoffset*/ + #endif + 0, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_10selectolax_6parser___pyx_scope_struct_4_traverse, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if CYTHON_USE_TP_FINALIZE + 0, /*tp_finalize*/ + #else + NULL, /*tp_finalize*/ + #endif + #if !CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800 + 0, /*tp_vectorcall*/ + #endif + #if __PYX_NEED_TP_PRINT_SLOT == 1 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030C0000 + 0, /*tp_watched*/ + #endif + #if PY_VERSION_HEX >= 0x030d00A4 + 0, /*tp_versions_used*/ + #endif + #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, /*tp_pypy_flags*/ + #endif +}; +#endif + +static PyMethodDef __pyx_methods[] = { + {0, 0, 0, 0} +}; +/* #### Code section: initfunc_declarations ### */ +static CYTHON_SMALL_CODE int __Pyx_InitCachedBuiltins(__pyx_mstatetype *__pyx_mstate); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(__pyx_mstatetype *__pyx_mstate); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_InitGlobals(void); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_InitConstants(__pyx_mstatetype *__pyx_mstate); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_global_init_code(__pyx_mstatetype *__pyx_mstate); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_variable_export_code(__pyx_mstatetype *__pyx_mstate); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_function_export_code(__pyx_mstatetype *__pyx_mstate); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_type_init_code(__pyx_mstatetype *__pyx_mstate); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_type_import_code(__pyx_mstatetype *__pyx_mstate); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_variable_import_code(__pyx_mstatetype *__pyx_mstate); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_function_import_code(__pyx_mstatetype *__pyx_mstate); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_CreateCodeObjects(__pyx_mstatetype *__pyx_mstate); /*proto*/ +/* #### Code section: init_module ### */ + +static int __Pyx_modinit_global_init_code(__pyx_mstatetype *__pyx_mstate) { + __Pyx_RefNannyDeclarations + CYTHON_UNUSED_VAR(__pyx_mstate); + __Pyx_RefNannySetupContext("__Pyx_modinit_global_init_code", 0); + /*--- Global init code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + +static int __Pyx_modinit_variable_export_code(__pyx_mstatetype *__pyx_mstate) { + __Pyx_RefNannyDeclarations + CYTHON_UNUSED_VAR(__pyx_mstate); + __Pyx_RefNannySetupContext("__Pyx_modinit_variable_export_code", 0); + /*--- Variable export code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + +static int __Pyx_modinit_function_export_code(__pyx_mstatetype *__pyx_mstate) { + __Pyx_RefNannyDeclarations + CYTHON_UNUSED_VAR(__pyx_mstate); + __Pyx_RefNannySetupContext("__Pyx_modinit_function_export_code", 0); + /*--- Function export code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + +static int __Pyx_modinit_type_init_code(__pyx_mstatetype *__pyx_mstate) { + __Pyx_RefNannyDeclarations + CYTHON_UNUSED_VAR(__pyx_mstate); + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__Pyx_modinit_type_init_code", 0); + /*--- Type init code ---*/ + __pyx_vtabptr_10selectolax_6parser_HTMLParser = &__pyx_vtable_10selectolax_6parser_HTMLParser; + __pyx_vtable_10selectolax_6parser_HTMLParser._detect_encoding = (void (*)(struct __pyx_obj_10selectolax_6parser_HTMLParser *, char *, size_t))__pyx_f_10selectolax_6parser_10HTMLParser__detect_encoding; + __pyx_vtable_10selectolax_6parser_HTMLParser._parse_html = (int (*)(struct __pyx_obj_10selectolax_6parser_HTMLParser *, char *, size_t))__pyx_f_10selectolax_6parser_10HTMLParser__parse_html; + __pyx_vtable_10selectolax_6parser_HTMLParser.from_tree = (struct __pyx_obj_10selectolax_6parser_HTMLParser *(*)(myhtml_tree_t *, PyObject *, int, int, PyObject *, myencoding_t))__pyx_f_10selectolax_6parser_10HTMLParser_from_tree; + #if CYTHON_USE_TYPE_SPECS + __pyx_mstate->__pyx_ptype_10selectolax_6parser_HTMLParser = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_10selectolax_6parser_HTMLParser_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_10selectolax_6parser_HTMLParser)) __PYX_ERR(0, 10, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_10selectolax_6parser_HTMLParser_spec, __pyx_mstate->__pyx_ptype_10selectolax_6parser_HTMLParser) < (0)) __PYX_ERR(0, 10, __pyx_L1_error) + #else + __pyx_mstate->__pyx_ptype_10selectolax_6parser_HTMLParser = &__pyx_type_10selectolax_6parser_HTMLParser; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + #endif + #if !CYTHON_USE_TYPE_SPECS + if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_10selectolax_6parser_HTMLParser) < (0)) __PYX_ERR(0, 10, __pyx_L1_error) + #endif + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_10selectolax_6parser_HTMLParser); + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_10selectolax_6parser_HTMLParser->tp_dictoffset && __pyx_mstate->__pyx_ptype_10selectolax_6parser_HTMLParser->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_mstate->__pyx_ptype_10selectolax_6parser_HTMLParser->tp_getattro = PyObject_GenericGetAttr; + } + #endif + if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_10selectolax_6parser_HTMLParser, __pyx_vtabptr_10selectolax_6parser_HTMLParser) < (0)) __PYX_ERR(0, 10, __pyx_L1_error) + if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_10selectolax_6parser_HTMLParser) < (0)) __PYX_ERR(0, 10, __pyx_L1_error) + if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_HTMLParser, (PyObject *) __pyx_mstate->__pyx_ptype_10selectolax_6parser_HTMLParser) < (0)) __PYX_ERR(0, 10, __pyx_L1_error) + if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_10selectolax_6parser_HTMLParser) < (0)) __PYX_ERR(0, 10, __pyx_L1_error) + __pyx_vtabptr_10selectolax_6parser_Stack = &__pyx_vtable_10selectolax_6parser_Stack; + __pyx_vtable_10selectolax_6parser_Stack.is_empty = (int (*)(struct __pyx_obj_10selectolax_6parser_Stack *))__pyx_f_10selectolax_6parser_5Stack_is_empty; + __pyx_vtable_10selectolax_6parser_Stack.push = (int (*)(struct __pyx_obj_10selectolax_6parser_Stack *, myhtml_tree_node_t *))__pyx_f_10selectolax_6parser_5Stack_push; + __pyx_vtable_10selectolax_6parser_Stack.pop = (myhtml_tree_node_t *(*)(struct __pyx_obj_10selectolax_6parser_Stack *))__pyx_f_10selectolax_6parser_5Stack_pop; + __pyx_vtable_10selectolax_6parser_Stack.resize = (int (*)(struct __pyx_obj_10selectolax_6parser_Stack *))__pyx_f_10selectolax_6parser_5Stack_resize; + #if CYTHON_USE_TYPE_SPECS + __pyx_mstate->__pyx_ptype_10selectolax_6parser_Stack = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_10selectolax_6parser_Stack_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_10selectolax_6parser_Stack)) __PYX_ERR(3, 13, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_10selectolax_6parser_Stack_spec, __pyx_mstate->__pyx_ptype_10selectolax_6parser_Stack) < (0)) __PYX_ERR(3, 13, __pyx_L1_error) + #else + __pyx_mstate->__pyx_ptype_10selectolax_6parser_Stack = &__pyx_type_10selectolax_6parser_Stack; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + #endif + #if !CYTHON_USE_TYPE_SPECS + if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_10selectolax_6parser_Stack) < (0)) __PYX_ERR(3, 13, __pyx_L1_error) + #endif + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_10selectolax_6parser_Stack); + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_10selectolax_6parser_Stack->tp_dictoffset && __pyx_mstate->__pyx_ptype_10selectolax_6parser_Stack->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_mstate->__pyx_ptype_10selectolax_6parser_Stack->tp_getattro = PyObject_GenericGetAttr; + } + #endif + if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_10selectolax_6parser_Stack, __pyx_vtabptr_10selectolax_6parser_Stack) < (0)) __PYX_ERR(3, 13, __pyx_L1_error) + if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_10selectolax_6parser_Stack) < (0)) __PYX_ERR(3, 13, __pyx_L1_error) + if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_10selectolax_6parser_Stack) < (0)) __PYX_ERR(3, 13, __pyx_L1_error) + __pyx_vtabptr_10selectolax_6parser_CSSSelector = &__pyx_vtable_10selectolax_6parser_CSSSelector; + __pyx_vtable_10selectolax_6parser_CSSSelector.find = (myhtml_collection_t *(*)(struct __pyx_obj_10selectolax_6parser_CSSSelector *, myhtml_tree_node_t *))__pyx_f_10selectolax_6parser_11CSSSelector_find; + __pyx_vtable_10selectolax_6parser_CSSSelector._create_css_parser = (int (*)(struct __pyx_obj_10selectolax_6parser_CSSSelector *))__pyx_f_10selectolax_6parser_11CSSSelector__create_css_parser; + __pyx_vtable_10selectolax_6parser_CSSSelector._prepare_selector = (int (*)(struct __pyx_obj_10selectolax_6parser_CSSSelector *, mycss_entry_t *, char const *, size_t))__pyx_f_10selectolax_6parser_11CSSSelector__prepare_selector; + #if CYTHON_USE_TYPE_SPECS + __pyx_mstate->__pyx_ptype_10selectolax_6parser_CSSSelector = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_10selectolax_6parser_CSSSelector_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_10selectolax_6parser_CSSSelector)) __PYX_ERR(2, 5, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_10selectolax_6parser_CSSSelector_spec, __pyx_mstate->__pyx_ptype_10selectolax_6parser_CSSSelector) < (0)) __PYX_ERR(2, 5, __pyx_L1_error) + #else + __pyx_mstate->__pyx_ptype_10selectolax_6parser_CSSSelector = &__pyx_type_10selectolax_6parser_CSSSelector; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + #endif + #if !CYTHON_USE_TYPE_SPECS + if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_10selectolax_6parser_CSSSelector) < (0)) __PYX_ERR(2, 5, __pyx_L1_error) + #endif + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_10selectolax_6parser_CSSSelector); + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_10selectolax_6parser_CSSSelector->tp_dictoffset && __pyx_mstate->__pyx_ptype_10selectolax_6parser_CSSSelector->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_mstate->__pyx_ptype_10selectolax_6parser_CSSSelector->tp_getattro = PyObject_GenericGetAttr; + } + #endif + if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_10selectolax_6parser_CSSSelector, __pyx_vtabptr_10selectolax_6parser_CSSSelector) < (0)) __PYX_ERR(2, 5, __pyx_L1_error) + if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_10selectolax_6parser_CSSSelector) < (0)) __PYX_ERR(2, 5, __pyx_L1_error) + if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_CSSSelector, (PyObject *) __pyx_mstate->__pyx_ptype_10selectolax_6parser_CSSSelector) < (0)) __PYX_ERR(2, 5, __pyx_L1_error) + if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_10selectolax_6parser_CSSSelector) < (0)) __PYX_ERR(2, 5, __pyx_L1_error) + __pyx_vtabptr_10selectolax_6parser_Selector = &__pyx_vtable_10selectolax_6parser_Selector; + __pyx_vtable_10selectolax_6parser_Selector.css = (PyObject *(*)(struct __pyx_obj_10selectolax_6parser_Selector *, PyObject *, int __pyx_skip_dispatch))__pyx_f_10selectolax_6parser_8Selector_css; + #if CYTHON_USE_TYPE_SPECS + __pyx_mstate->__pyx_ptype_10selectolax_6parser_Selector = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_10selectolax_6parser_Selector_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_10selectolax_6parser_Selector)) __PYX_ERR(2, 70, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_10selectolax_6parser_Selector_spec, __pyx_mstate->__pyx_ptype_10selectolax_6parser_Selector) < (0)) __PYX_ERR(2, 70, __pyx_L1_error) + #else + __pyx_mstate->__pyx_ptype_10selectolax_6parser_Selector = &__pyx_type_10selectolax_6parser_Selector; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + #endif + #if !CYTHON_USE_TYPE_SPECS + if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_10selectolax_6parser_Selector) < (0)) __PYX_ERR(2, 70, __pyx_L1_error) + #endif + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_10selectolax_6parser_Selector); + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_10selectolax_6parser_Selector->tp_dictoffset && __pyx_mstate->__pyx_ptype_10selectolax_6parser_Selector->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_mstate->__pyx_ptype_10selectolax_6parser_Selector->tp_getattro = PyObject_GenericGetAttr; + } + #endif + #if CYTHON_UPDATE_DESCRIPTOR_DOC + { + PyObject *wrapper = PyObject_GetAttrString((PyObject *)__pyx_mstate->__pyx_ptype_10selectolax_6parser_Selector, "__init__"); if (unlikely(!wrapper)) __PYX_ERR(2, 70, __pyx_L1_error) + if (__Pyx_IS_TYPE(wrapper, &PyWrapperDescr_Type)) { + __pyx_wrapperbase_10selectolax_6parser_8Selector___init__ = *((PyWrapperDescrObject *)wrapper)->d_base; + __pyx_wrapperbase_10selectolax_6parser_8Selector___init__.doc = __pyx_doc_10selectolax_6parser_8Selector___init__; + ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_10selectolax_6parser_8Selector___init__; + } + } + #endif + if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_10selectolax_6parser_Selector, __pyx_vtabptr_10selectolax_6parser_Selector) < (0)) __PYX_ERR(2, 70, __pyx_L1_error) + if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_10selectolax_6parser_Selector) < (0)) __PYX_ERR(2, 70, __pyx_L1_error) + if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_Selector, (PyObject *) __pyx_mstate->__pyx_ptype_10selectolax_6parser_Selector) < (0)) __PYX_ERR(2, 70, __pyx_L1_error) + if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_10selectolax_6parser_Selector) < (0)) __PYX_ERR(2, 70, __pyx_L1_error) + __pyx_vtabptr_10selectolax_6parser__Attributes = &__pyx_vtable_10selectolax_6parser__Attributes; + __pyx_vtable_10selectolax_6parser__Attributes.create = (struct __pyx_obj_10selectolax_6parser__Attributes *(*)(myhtml_tree_node_t *, PyObject *))__pyx_f_10selectolax_6parser_11_Attributes_create; + #if CYTHON_USE_TYPE_SPECS + __pyx_mstate->__pyx_ptype_10selectolax_6parser__Attributes = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_10selectolax_6parser__Attributes_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_10selectolax_6parser__Attributes)) __PYX_ERR(3, 48, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_10selectolax_6parser__Attributes_spec, __pyx_mstate->__pyx_ptype_10selectolax_6parser__Attributes) < (0)) __PYX_ERR(3, 48, __pyx_L1_error) + #else + __pyx_mstate->__pyx_ptype_10selectolax_6parser__Attributes = &__pyx_type_10selectolax_6parser__Attributes; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + #endif + #if !CYTHON_USE_TYPE_SPECS + if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_10selectolax_6parser__Attributes) < (0)) __PYX_ERR(3, 48, __pyx_L1_error) + #endif + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_10selectolax_6parser__Attributes); + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_10selectolax_6parser__Attributes->tp_dictoffset && __pyx_mstate->__pyx_ptype_10selectolax_6parser__Attributes->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_mstate->__pyx_ptype_10selectolax_6parser__Attributes->tp_getattro = PyObject_GenericGetAttr; + } + #endif + if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_10selectolax_6parser__Attributes, __pyx_vtabptr_10selectolax_6parser__Attributes) < (0)) __PYX_ERR(3, 48, __pyx_L1_error) + if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_10selectolax_6parser__Attributes) < (0)) __PYX_ERR(3, 48, __pyx_L1_error) + if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_Attributes, (PyObject *) __pyx_mstate->__pyx_ptype_10selectolax_6parser__Attributes) < (0)) __PYX_ERR(3, 48, __pyx_L1_error) + if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_10selectolax_6parser__Attributes) < (0)) __PYX_ERR(3, 48, __pyx_L1_error) + __pyx_vtabptr_10selectolax_6parser_Node = &__pyx_vtable_10selectolax_6parser_Node; + __pyx_vtable_10selectolax_6parser_Node.__pyx_new = (struct __pyx_obj_10selectolax_6parser_Node *(*)(myhtml_tree_node_t *, struct __pyx_obj_10selectolax_6parser_HTMLParser *))__pyx_f_10selectolax_6parser_4Node_new; + __pyx_vtable_10selectolax_6parser_Node._text_deep = (PyObject *(*)(struct __pyx_obj_10selectolax_6parser_Node *, myhtml_tree_node_t *, struct __pyx_opt_args_10selectolax_6parser_4Node__text_deep *__pyx_optional_args))__pyx_f_10selectolax_6parser_4Node__text_deep; + #if CYTHON_USE_TYPE_SPECS + __pyx_mstate->__pyx_ptype_10selectolax_6parser_Node = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_10selectolax_6parser_Node_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_10selectolax_6parser_Node)) __PYX_ERR(3, 145, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_10selectolax_6parser_Node_spec, __pyx_mstate->__pyx_ptype_10selectolax_6parser_Node) < (0)) __PYX_ERR(3, 145, __pyx_L1_error) + #else + __pyx_mstate->__pyx_ptype_10selectolax_6parser_Node = &__pyx_type_10selectolax_6parser_Node; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + #endif + #if !CYTHON_USE_TYPE_SPECS + if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_10selectolax_6parser_Node) < (0)) __PYX_ERR(3, 145, __pyx_L1_error) + #endif + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_10selectolax_6parser_Node); + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_10selectolax_6parser_Node->tp_dictoffset && __pyx_mstate->__pyx_ptype_10selectolax_6parser_Node->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_mstate->__pyx_ptype_10selectolax_6parser_Node->tp_getattro = PyObject_GenericGetAttr; + } + #endif + if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_10selectolax_6parser_Node, __pyx_vtabptr_10selectolax_6parser_Node) < (0)) __PYX_ERR(3, 145, __pyx_L1_error) + if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_10selectolax_6parser_Node) < (0)) __PYX_ERR(3, 145, __pyx_L1_error) + if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_Node, (PyObject *) __pyx_mstate->__pyx_ptype_10selectolax_6parser_Node) < (0)) __PYX_ERR(3, 145, __pyx_L1_error) + if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_10selectolax_6parser_Node) < (0)) __PYX_ERR(3, 145, __pyx_L1_error) + #if CYTHON_USE_TYPE_SPECS + __pyx_mstate->__pyx_ptype_10selectolax_6parser___pyx_scope_struct____iter__ = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_10selectolax_6parser___pyx_scope_struct____iter___spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_10selectolax_6parser___pyx_scope_struct____iter__)) __PYX_ERR(3, 60, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_10selectolax_6parser___pyx_scope_struct____iter___spec, __pyx_mstate->__pyx_ptype_10selectolax_6parser___pyx_scope_struct____iter__) < (0)) __PYX_ERR(3, 60, __pyx_L1_error) + #else + __pyx_mstate->__pyx_ptype_10selectolax_6parser___pyx_scope_struct____iter__ = &__pyx_type_10selectolax_6parser___pyx_scope_struct____iter__; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + #endif + #if !CYTHON_USE_TYPE_SPECS + if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_10selectolax_6parser___pyx_scope_struct____iter__) < (0)) __PYX_ERR(3, 60, __pyx_L1_error) + #endif + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_10selectolax_6parser___pyx_scope_struct____iter__); + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_10selectolax_6parser___pyx_scope_struct____iter__->tp_dictoffset && __pyx_mstate->__pyx_ptype_10selectolax_6parser___pyx_scope_struct____iter__->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_mstate->__pyx_ptype_10selectolax_6parser___pyx_scope_struct____iter__->tp_getattro = PyObject_GenericGetAttr; + } + #endif + #if CYTHON_USE_TYPE_SPECS + __pyx_mstate->__pyx_ptype_10selectolax_6parser___pyx_scope_struct_1_items = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_10selectolax_6parser___pyx_scope_struct_1_items_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_10selectolax_6parser___pyx_scope_struct_1_items)) __PYX_ERR(3, 102, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_10selectolax_6parser___pyx_scope_struct_1_items_spec, __pyx_mstate->__pyx_ptype_10selectolax_6parser___pyx_scope_struct_1_items) < (0)) __PYX_ERR(3, 102, __pyx_L1_error) + #else + __pyx_mstate->__pyx_ptype_10selectolax_6parser___pyx_scope_struct_1_items = &__pyx_type_10selectolax_6parser___pyx_scope_struct_1_items; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + #endif + #if !CYTHON_USE_TYPE_SPECS + if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_10selectolax_6parser___pyx_scope_struct_1_items) < (0)) __PYX_ERR(3, 102, __pyx_L1_error) + #endif + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_10selectolax_6parser___pyx_scope_struct_1_items); + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_10selectolax_6parser___pyx_scope_struct_1_items->tp_dictoffset && __pyx_mstate->__pyx_ptype_10selectolax_6parser___pyx_scope_struct_1_items->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_mstate->__pyx_ptype_10selectolax_6parser___pyx_scope_struct_1_items->tp_getattro = PyObject_GenericGetAttr; + } + #endif + #if CYTHON_USE_TYPE_SPECS + __pyx_mstate->__pyx_ptype_10selectolax_6parser___pyx_scope_struct_2_values = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_10selectolax_6parser___pyx_scope_struct_2_values_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_10selectolax_6parser___pyx_scope_struct_2_values)) __PYX_ERR(3, 106, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_10selectolax_6parser___pyx_scope_struct_2_values_spec, __pyx_mstate->__pyx_ptype_10selectolax_6parser___pyx_scope_struct_2_values) < (0)) __PYX_ERR(3, 106, __pyx_L1_error) + #else + __pyx_mstate->__pyx_ptype_10selectolax_6parser___pyx_scope_struct_2_values = &__pyx_type_10selectolax_6parser___pyx_scope_struct_2_values; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + #endif + #if !CYTHON_USE_TYPE_SPECS + if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_10selectolax_6parser___pyx_scope_struct_2_values) < (0)) __PYX_ERR(3, 106, __pyx_L1_error) + #endif + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_10selectolax_6parser___pyx_scope_struct_2_values); + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_10selectolax_6parser___pyx_scope_struct_2_values->tp_dictoffset && __pyx_mstate->__pyx_ptype_10selectolax_6parser___pyx_scope_struct_2_values->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_mstate->__pyx_ptype_10selectolax_6parser___pyx_scope_struct_2_values->tp_getattro = PyObject_GenericGetAttr; + } + #endif + #if CYTHON_USE_TYPE_SPECS + __pyx_mstate->__pyx_ptype_10selectolax_6parser___pyx_scope_struct_3_iter = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_10selectolax_6parser___pyx_scope_struct_3_iter_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_10selectolax_6parser___pyx_scope_struct_3_iter)) __PYX_ERR(3, 329, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_10selectolax_6parser___pyx_scope_struct_3_iter_spec, __pyx_mstate->__pyx_ptype_10selectolax_6parser___pyx_scope_struct_3_iter) < (0)) __PYX_ERR(3, 329, __pyx_L1_error) + #else + __pyx_mstate->__pyx_ptype_10selectolax_6parser___pyx_scope_struct_3_iter = &__pyx_type_10selectolax_6parser___pyx_scope_struct_3_iter; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + #endif + #if !CYTHON_USE_TYPE_SPECS + if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_10selectolax_6parser___pyx_scope_struct_3_iter) < (0)) __PYX_ERR(3, 329, __pyx_L1_error) + #endif + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_10selectolax_6parser___pyx_scope_struct_3_iter); + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_10selectolax_6parser___pyx_scope_struct_3_iter->tp_dictoffset && __pyx_mstate->__pyx_ptype_10selectolax_6parser___pyx_scope_struct_3_iter->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_mstate->__pyx_ptype_10selectolax_6parser___pyx_scope_struct_3_iter->tp_getattro = PyObject_GenericGetAttr; + } + #endif + #if CYTHON_USE_TYPE_SPECS + __pyx_mstate->__pyx_ptype_10selectolax_6parser___pyx_scope_struct_4_traverse = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_10selectolax_6parser___pyx_scope_struct_4_traverse_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_10selectolax_6parser___pyx_scope_struct_4_traverse)) __PYX_ERR(3, 354, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_10selectolax_6parser___pyx_scope_struct_4_traverse_spec, __pyx_mstate->__pyx_ptype_10selectolax_6parser___pyx_scope_struct_4_traverse) < (0)) __PYX_ERR(3, 354, __pyx_L1_error) + #else + __pyx_mstate->__pyx_ptype_10selectolax_6parser___pyx_scope_struct_4_traverse = &__pyx_type_10selectolax_6parser___pyx_scope_struct_4_traverse; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + #endif + #if !CYTHON_USE_TYPE_SPECS + if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_10selectolax_6parser___pyx_scope_struct_4_traverse) < (0)) __PYX_ERR(3, 354, __pyx_L1_error) + #endif + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_10selectolax_6parser___pyx_scope_struct_4_traverse); + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_10selectolax_6parser___pyx_scope_struct_4_traverse->tp_dictoffset && __pyx_mstate->__pyx_ptype_10selectolax_6parser___pyx_scope_struct_4_traverse->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_mstate->__pyx_ptype_10selectolax_6parser___pyx_scope_struct_4_traverse->tp_getattro = PyObject_GenericGetAttr; + } + #endif + __Pyx_RefNannyFinishContext(); + return 0; + __pyx_L1_error:; + __Pyx_RefNannyFinishContext(); + return -1; +} + +static int __Pyx_modinit_type_import_code(__pyx_mstatetype *__pyx_mstate) { + __Pyx_RefNannyDeclarations + CYTHON_UNUSED_VAR(__pyx_mstate); + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__Pyx_modinit_type_import_code", 0); + /*--- Type import code ---*/ + __pyx_t_1 = PyImport_ImportModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_t_1)) __PYX_ERR(8, 8, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_mstate->__pyx_ptype_7cpython_4bool_bool = __Pyx_ImportType_3_2_2(__pyx_t_1, __Pyx_BUILTIN_MODULE_NAME, "bool", + #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000 + sizeof(PyLongObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_2(PyLongObject), + #elif CYTHON_COMPILING_IN_LIMITED_API + 0, 0, + #else + sizeof(PyLongObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_2(PyLongObject), + #endif + __Pyx_ImportType_CheckSize_Warn_3_2_2); if (!__pyx_mstate->__pyx_ptype_7cpython_4bool_bool) __PYX_ERR(8, 8, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = PyImport_ImportModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 9, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_mstate->__pyx_ptype_7cpython_4type_type = __Pyx_ImportType_3_2_2(__pyx_t_1, __Pyx_BUILTIN_MODULE_NAME, "type", + #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000 + sizeof(PyTypeObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_2(PyTypeObject), + #elif CYTHON_COMPILING_IN_LIMITED_API + 0, 0, + #else + sizeof(PyHeapTypeObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_2(PyHeapTypeObject), + #endif + __Pyx_ImportType_CheckSize_Warn_3_2_2); if (!__pyx_mstate->__pyx_ptype_7cpython_4type_type) __PYX_ERR(9, 9, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_RefNannyFinishContext(); + return 0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_RefNannyFinishContext(); + return -1; +} + +static int __Pyx_modinit_variable_import_code(__pyx_mstatetype *__pyx_mstate) { + __Pyx_RefNannyDeclarations + CYTHON_UNUSED_VAR(__pyx_mstate); + __Pyx_RefNannySetupContext("__Pyx_modinit_variable_import_code", 0); + /*--- Variable import code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + +static int __Pyx_modinit_function_import_code(__pyx_mstatetype *__pyx_mstate) { + __Pyx_RefNannyDeclarations + CYTHON_UNUSED_VAR(__pyx_mstate); + __Pyx_RefNannySetupContext("__Pyx_modinit_function_import_code", 0); + /*--- Function import code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + +#if CYTHON_PEP489_MULTI_PHASE_INIT +static PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def); /*proto*/ +static int __pyx_pymod_exec_parser(PyObject* module); /*proto*/ +static PyModuleDef_Slot __pyx_moduledef_slots[] = { + {Py_mod_create, (void*)__pyx_pymod_create}, + {Py_mod_exec, (void*)__pyx_pymod_exec_parser}, + #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING + {Py_mod_gil, Py_MOD_GIL_USED}, + #endif + #if PY_VERSION_HEX >= 0x030C0000 && CYTHON_USE_MODULE_STATE + {Py_mod_multiple_interpreters, Py_MOD_MULTIPLE_INTERPRETERS_NOT_SUPPORTED}, + #endif + {0, NULL} +}; +#endif + +#ifdef __cplusplus +namespace { + struct PyModuleDef __pyx_moduledef = + #else + static struct PyModuleDef __pyx_moduledef = + #endif + { + PyModuleDef_HEAD_INIT, + "parser", + 0, /* m_doc */ + #if CYTHON_USE_MODULE_STATE + sizeof(__pyx_mstatetype), /* m_size */ + #else + (CYTHON_PEP489_MULTI_PHASE_INIT) ? 0 : -1, /* m_size */ + #endif + __pyx_methods /* m_methods */, + #if CYTHON_PEP489_MULTI_PHASE_INIT + __pyx_moduledef_slots, /* m_slots */ + #else + NULL, /* m_reload */ + #endif + #if CYTHON_USE_MODULE_STATE + __pyx_m_traverse, /* m_traverse */ + __pyx_m_clear, /* m_clear */ + NULL /* m_free */ + #else + NULL, /* m_traverse */ + NULL, /* m_clear */ + NULL /* m_free */ + #endif + }; + #ifdef __cplusplus +} /* anonymous namespace */ +#endif + +/* PyModInitFuncType */ +#ifndef CYTHON_NO_PYINIT_EXPORT + #define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC +#else + #ifdef __cplusplus + #define __Pyx_PyMODINIT_FUNC extern "C" PyObject * + #else + #define __Pyx_PyMODINIT_FUNC PyObject * + #endif +#endif + +__Pyx_PyMODINIT_FUNC PyInit_parser(void) CYTHON_SMALL_CODE; /*proto*/ +__Pyx_PyMODINIT_FUNC PyInit_parser(void) +#if CYTHON_PEP489_MULTI_PHASE_INIT +{ + return PyModuleDef_Init(&__pyx_moduledef); +} +/* ModuleCreationPEP489 */ +#if CYTHON_COMPILING_IN_LIMITED_API && (__PYX_LIMITED_VERSION_HEX < 0x03090000\ + || ((defined(_WIN32) || defined(WIN32) || defined(MS_WINDOWS)) && __PYX_LIMITED_VERSION_HEX < 0x030A0000)) +static PY_INT64_T __Pyx_GetCurrentInterpreterId(void) { + { + PyObject *module = PyImport_ImportModule("_interpreters"); // 3.13+ I think + if (!module) { + PyErr_Clear(); // just try the 3.8-3.12 version + module = PyImport_ImportModule("_xxsubinterpreters"); + if (!module) goto bad; + } + PyObject *current = PyObject_CallMethod(module, "get_current", NULL); + Py_DECREF(module); + if (!current) goto bad; + if (PyTuple_Check(current)) { + PyObject *new_current = PySequence_GetItem(current, 0); + Py_DECREF(current); + current = new_current; + if (!new_current) goto bad; + } + long long as_c_int = PyLong_AsLongLong(current); + Py_DECREF(current); + return as_c_int; + } + bad: + PySys_WriteStderr("__Pyx_GetCurrentInterpreterId failed. Try setting the C define CYTHON_PEP489_MULTI_PHASE_INIT=0\n"); + return -1; +} +#endif +#if !CYTHON_USE_MODULE_STATE +static CYTHON_SMALL_CODE int __Pyx_check_single_interpreter(void) { + static PY_INT64_T main_interpreter_id = -1; +#if CYTHON_COMPILING_IN_GRAAL && defined(GRAALPY_VERSION_NUM) && GRAALPY_VERSION_NUM > 0x19000000 + PY_INT64_T current_id = GraalPyInterpreterState_GetIDFromThreadState(PyThreadState_Get()); +#elif CYTHON_COMPILING_IN_GRAAL + PY_INT64_T current_id = PyInterpreterState_GetIDFromThreadState(PyThreadState_Get()); +#elif CYTHON_COMPILING_IN_LIMITED_API && (__PYX_LIMITED_VERSION_HEX < 0x03090000\ + || ((defined(_WIN32) || defined(WIN32) || defined(MS_WINDOWS)) && __PYX_LIMITED_VERSION_HEX < 0x030A0000)) + PY_INT64_T current_id = __Pyx_GetCurrentInterpreterId(); +#elif CYTHON_COMPILING_IN_LIMITED_API + PY_INT64_T current_id = PyInterpreterState_GetID(PyInterpreterState_Get()); +#else + PY_INT64_T current_id = PyInterpreterState_GetID(PyThreadState_Get()->interp); +#endif + if (unlikely(current_id == -1)) { + return -1; + } + if (main_interpreter_id == -1) { + main_interpreter_id = current_id; + return 0; + } else if (unlikely(main_interpreter_id != current_id)) { + PyErr_SetString( + PyExc_ImportError, + "Interpreter change detected - this module can only be loaded into one interpreter per process."); + return -1; + } + return 0; +} +#endif +static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name, int allow_none) +{ + PyObject *value = PyObject_GetAttrString(spec, from_name); + int result = 0; + if (likely(value)) { + if (allow_none || value != Py_None) { + result = PyDict_SetItemString(moddict, to_name, value); + } + Py_DECREF(value); + } else if (PyErr_ExceptionMatches(PyExc_AttributeError)) { + PyErr_Clear(); + } else { + result = -1; + } + return result; +} +static CYTHON_SMALL_CODE PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def) { + PyObject *module = NULL, *moddict, *modname; + CYTHON_UNUSED_VAR(def); + #if !CYTHON_USE_MODULE_STATE + if (__Pyx_check_single_interpreter()) + return NULL; + #endif + if (__pyx_m) + return __Pyx_NewRef(__pyx_m); + modname = PyObject_GetAttrString(spec, "name"); + if (unlikely(!modname)) goto bad; + module = PyModule_NewObject(modname); + Py_DECREF(modname); + if (unlikely(!module)) goto bad; + moddict = PyModule_GetDict(module); + if (unlikely(!moddict)) goto bad; + if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "loader", "__loader__", 1) < 0)) goto bad; + if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "origin", "__file__", 1) < 0)) goto bad; + if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "parent", "__package__", 1) < 0)) goto bad; + if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "submodule_search_locations", "__path__", 0) < 0)) goto bad; + return module; +bad: + Py_XDECREF(module); + return NULL; +} + + +static CYTHON_SMALL_CODE int __pyx_pymod_exec_parser(PyObject *__pyx_pyinit_module) +#endif +{ + int stringtab_initialized = 0; + #if CYTHON_USE_MODULE_STATE + int pystate_addmodule_run = 0; + #endif + __pyx_mstatetype *__pyx_mstate = NULL; + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + Py_ssize_t __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannyDeclarations + #if CYTHON_PEP489_MULTI_PHASE_INIT + if (__pyx_m) { + if (__pyx_m == __pyx_pyinit_module) return 0; + PyErr_SetString(PyExc_RuntimeError, "Module 'parser' has already been imported. Re-initialisation is not supported."); + return -1; + } + #else + if (__pyx_m) return __Pyx_NewRef(__pyx_m); + #endif + /*--- Module creation code ---*/ + #if CYTHON_PEP489_MULTI_PHASE_INIT + __pyx_t_1 = __pyx_pyinit_module; + Py_INCREF(__pyx_t_1); + #else + __pyx_t_1 = PyModule_Create(&__pyx_moduledef); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2, __pyx_L1_error) + #endif + #if CYTHON_USE_MODULE_STATE + { + int add_module_result = __Pyx_State_AddModule(__pyx_t_1, &__pyx_moduledef); + __pyx_t_1 = 0; /* transfer ownership from __pyx_t_1 to "parser" pseudovariable */ + if (unlikely((add_module_result < 0))) __PYX_ERR(0, 2, __pyx_L1_error) + pystate_addmodule_run = 1; + } + #else + __pyx_m = __pyx_t_1; + #endif + #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING + PyUnstable_Module_SetGIL(__pyx_m, Py_MOD_GIL_USED); + #endif + __pyx_mstate = __pyx_mstate_global; + CYTHON_UNUSED_VAR(__pyx_t_1); + __pyx_mstate->__pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_mstate->__pyx_d)) __PYX_ERR(0, 2, __pyx_L1_error) + Py_INCREF(__pyx_mstate->__pyx_d); + __pyx_mstate->__pyx_b = __Pyx_PyImport_AddModuleRef(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_mstate->__pyx_b)) __PYX_ERR(0, 2, __pyx_L1_error) + __pyx_mstate->__pyx_cython_runtime = __Pyx_PyImport_AddModuleRef("cython_runtime"); if (unlikely(!__pyx_mstate->__pyx_cython_runtime)) __PYX_ERR(0, 2, __pyx_L1_error) + if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_mstate->__pyx_b) < 0) __PYX_ERR(0, 2, __pyx_L1_error) + /* ImportRefnannyAPI */ + #if CYTHON_REFNANNY + __Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny"); + if (!__Pyx_RefNanny) { + PyErr_Clear(); + __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny"); + if (!__Pyx_RefNanny) + Py_FatalError("failed to import 'refnanny' module"); + } + #endif + +__Pyx_RefNannySetupContext("PyInit_parser", 0); + __Pyx_init_runtime_version(); + if (__Pyx_check_binary_version(__PYX_LIMITED_VERSION_HEX, __Pyx_get_runtime_version(), CYTHON_COMPILING_IN_LIMITED_API) < (0)) __PYX_ERR(0, 2, __pyx_L1_error) + __pyx_mstate->__pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_mstate->__pyx_empty_tuple)) __PYX_ERR(0, 2, __pyx_L1_error) + __pyx_mstate->__pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_mstate->__pyx_empty_bytes)) __PYX_ERR(0, 2, __pyx_L1_error) + __pyx_mstate->__pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_mstate->__pyx_empty_unicode)) __PYX_ERR(0, 2, __pyx_L1_error) + /*--- Library function declarations ---*/ + /*--- Initialize various global constants etc. ---*/ + if (__Pyx_InitConstants(__pyx_mstate) < (0)) __PYX_ERR(0, 2, __pyx_L1_error) + stringtab_initialized = 1; + if (__Pyx_InitGlobals() < (0)) __PYX_ERR(0, 2, __pyx_L1_error) + if (__pyx_module_is_main_selectolax__parser) { + if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_name, __pyx_mstate_global->__pyx_n_u_main) < (0)) __PYX_ERR(0, 2, __pyx_L1_error) + } + { + PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(0, 2, __pyx_L1_error) + if (!PyDict_GetItemString(modules, "selectolax.parser")) { + if (unlikely((PyDict_SetItemString(modules, "selectolax.parser", __pyx_m) < 0))) __PYX_ERR(0, 2, __pyx_L1_error) + } + } + /*--- Builtin init code ---*/ + if (__Pyx_InitCachedBuiltins(__pyx_mstate) < (0)) __PYX_ERR(0, 2, __pyx_L1_error) + /*--- Constants init code ---*/ + if (__Pyx_InitCachedConstants(__pyx_mstate) < (0)) __PYX_ERR(0, 2, __pyx_L1_error) + if (__Pyx_CreateCodeObjects(__pyx_mstate) < (0)) __PYX_ERR(0, 2, __pyx_L1_error) + /*--- Global type/function init code ---*/ + (void)__Pyx_modinit_global_init_code(__pyx_mstate); + (void)__Pyx_modinit_variable_export_code(__pyx_mstate); + (void)__Pyx_modinit_function_export_code(__pyx_mstate); + if (unlikely((__Pyx_modinit_type_init_code(__pyx_mstate) < 0))) __PYX_ERR(0, 2, __pyx_L1_error) + if (unlikely((__Pyx_modinit_type_import_code(__pyx_mstate) < 0))) __PYX_ERR(0, 2, __pyx_L1_error) + (void)__Pyx_modinit_variable_import_code(__pyx_mstate); + (void)__Pyx_modinit_function_import_code(__pyx_mstate); + /*--- Execution code ---*/ + + /* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * raise TypeError, "self.css_entry,self.finder,self.selectors_list cannot be converted to a Python object for pickling" + * def __setstate_cython__(self, __pyx_state): +*/ + __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6parser_11CSSSelector_5__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_CSSSelector___reduce_cython, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_parser, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[5])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2); + #endif + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_2) < (0)) __PYX_ERR(1, 1, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "(tree fragment)":3 + * def __reduce_cython__(self): + * raise TypeError, "self.css_entry,self.finder,self.selectors_list cannot be converted to a Python object for pickling" + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * raise TypeError, "self.css_entry,self.finder,self.selectors_list cannot be converted to a Python object for pickling" +*/ + __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6parser_11CSSSelector_7__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_CSSSelector___setstate_cython, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_parser, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[6])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2); + #endif + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_2) < (0)) __PYX_ERR(1, 3, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "selectolax/modest/selection.pxi":85 + * self.nodes = find_nodes(node.parser, node.node, query) if query else [node, ] + * + * cpdef css(self, str query): # <<<<<<<<<<<<<< + * """Evaluate CSS selector against current scope.""" + * cdef Node current_node +*/ + __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6parser_8Selector_3css, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Selector_css, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_parser, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[7])); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 85, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2); + #endif + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6parser_Selector, __pyx_mstate_global->__pyx_n_u_css, __pyx_t_2) < (0)) __PYX_ERR(2, 85, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "selectolax/modest/selection.pxi":105 + * return bool(self.nodes) + * + * def text_contains(self, str text, bool deep=True, str separator='', bool strip=False): # <<<<<<<<<<<<<< + * """Filter all current matches given text.""" + * nodes = [] +*/ + __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6parser_8Selector_5text_contains, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Selector_text_contains, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_parser, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[8])); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 105, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2); + #endif + __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_mstate_global->__pyx_tuple[1]); + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6parser_Selector, __pyx_mstate_global->__pyx_n_u_text_contains, __pyx_t_2) < (0)) __PYX_ERR(2, 105, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "selectolax/modest/selection.pxi":116 + * return self + * + * def any_text_contains(self, str text, bool deep=True, str separator='', bool strip=False): # <<<<<<<<<<<<<< + * """Returns True if any node in the current search scope contains specified text""" + * nodes = [] +*/ + __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6parser_8Selector_7any_text_contains, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Selector_any_text_contains, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_parser, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[9])); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 116, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2); + #endif + __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_mstate_global->__pyx_tuple[1]); + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6parser_Selector, __pyx_mstate_global->__pyx_n_u_any_text_contains, __pyx_t_2) < (0)) __PYX_ERR(2, 116, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "selectolax/modest/selection.pxi":126 + * return False + * + * def attribute_longer_than(self, str attribute, int length, str start = None): # <<<<<<<<<<<<<< + * """Filter all current matches by attribute length. + * +*/ + __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6parser_8Selector_9attribute_longer_than, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Selector_attribute_longer_than, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_parser, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[10])); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 126, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2); + #endif + __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_mstate_global->__pyx_tuple[2]); + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6parser_Selector, __pyx_mstate_global->__pyx_n_u_attribute_longer_than, __pyx_t_2) < (0)) __PYX_ERR(2, 126, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "selectolax/modest/selection.pxi":141 + * return self + * + * def any_attribute_longer_than(self, str attribute, int length, str start = None): # <<<<<<<<<<<<<< + * """Returns True any href attribute longer than a specified length. + * +*/ + __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6parser_8Selector_11any_attribute_longer_than, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Selector_any_attribute_longer_th, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_parser, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[11])); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 141, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2); + #endif + __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_mstate_global->__pyx_tuple[2]); + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6parser_Selector, __pyx_mstate_global->__pyx_n_u_any_attribute_longer_than, __pyx_t_2) < (0)) __PYX_ERR(2, 141, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * cdef tuple state + * cdef object _dict +*/ + __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6parser_8Selector_15__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Selector___reduce_cython, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_parser, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[12])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2); + #endif + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6parser_Selector, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_2) < (0)) __PYX_ERR(1, 1, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "(tree fragment)":16 + * else: + * return __pyx_unpickle_Selector, (type(self), 0xc5dfe7e, state) + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * __pyx_unpickle_Selector__set_state(self, __pyx_state) +*/ + __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6parser_8Selector_17__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Selector___setstate_cython, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_parser, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[13])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 16, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2); + #endif + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6parser_Selector, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_2) < (0)) __PYX_ERR(1, 16, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" + * def __setstate_cython__(self, __pyx_state): +*/ + __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6parser_5Stack_5__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Stack___reduce_cython, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_parser, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[14])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2); + #endif + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_2) < (0)) __PYX_ERR(1, 1, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "(tree fragment)":3 + * def __reduce_cython__(self): + * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" +*/ + __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6parser_5Stack_7__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Stack___setstate_cython, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_parser, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[15])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2); + #endif + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_2) < (0)) __PYX_ERR(1, 3, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "selectolax/modest/node.pxi":99 + * return len(list(self.__iter__())) + * + * def keys(self): # <<<<<<<<<<<<<< + * return self.__iter__() + * +*/ + __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6parser_11_Attributes_12keys, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Attributes_keys, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_parser, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[16])); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 99, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2); + #endif + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6parser__Attributes, __pyx_mstate_global->__pyx_n_u_keys, __pyx_t_2) < (0)) __PYX_ERR(3, 99, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "selectolax/modest/node.pxi":102 + * return self.__iter__() + * + * def items(self): # <<<<<<<<<<<<<< + * for key in self.__iter__(): + * yield key, self[key] +*/ + __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6parser_11_Attributes_14items, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Attributes_items, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_parser, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[1])); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 102, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2); + #endif + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6parser__Attributes, __pyx_mstate_global->__pyx_n_u_items, __pyx_t_2) < (0)) __PYX_ERR(3, 102, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "selectolax/modest/node.pxi":106 + * yield key, self[key] + * + * def values(self): # <<<<<<<<<<<<<< + * for key in self.__iter__(): + * yield self[key] +*/ + __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6parser_11_Attributes_17values, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Attributes_values, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_parser, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[2])); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 106, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2); + #endif + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6parser__Attributes, __pyx_mstate_global->__pyx_n_u_values, __pyx_t_2) < (0)) __PYX_ERR(3, 106, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "selectolax/modest/node.pxi":110 + * yield self[key] + * + * def get(self, key, default=None): # <<<<<<<<<<<<<< + * try: + * return self[key] +*/ + __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6parser_11_Attributes_20get, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Attributes_get, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_parser, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[17])); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 110, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2); + #endif + __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_mstate_global->__pyx_tuple[2]); + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6parser__Attributes, __pyx_mstate_global->__pyx_n_u_get, __pyx_t_2) < (0)) __PYX_ERR(3, 110, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "selectolax/modest/node.pxi":116 + * return default + * + * def sget(self, key, default=""): # <<<<<<<<<<<<<< + * """Same as get, but returns empty strings instead of None values for empty attributes.""" + * try: +*/ + __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6parser_11_Attributes_22sget, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Attributes_sget, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_parser, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[18])); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 116, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2); + #endif + __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_mstate_global->__pyx_tuple[3]); + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6parser__Attributes, __pyx_mstate_global->__pyx_n_u_sget, __pyx_t_2) < (0)) __PYX_ERR(3, 116, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * raise TypeError, "self.node cannot be converted to a Python object for pickling" + * def __setstate_cython__(self, __pyx_state): +*/ + __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6parser_11_Attributes_28__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Attributes___reduce_cython, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_parser, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[19])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2); + #endif + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_2) < (0)) __PYX_ERR(1, 1, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "(tree fragment)":3 + * def __reduce_cython__(self): + * raise TypeError, "self.node cannot be converted to a Python object for pickling" + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * raise TypeError, "self.node cannot be converted to a Python object for pickling" +*/ + __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6parser_11_Attributes_30__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Attributes___setstate_cython, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_parser, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[20])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2); + #endif + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_2) < (0)) __PYX_ERR(1, 3, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "selectolax/modest/node.pxi":253 + * return self.mem_id + * + * def text(self, bool deep=True, str separator='', bool strip=False): # <<<<<<<<<<<<<< + * """Returns the text of the node including text of all its child nodes. + * +*/ + __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6parser_4Node_3text, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Node_text, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_parser, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[21])); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 253, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2); + #endif + __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_mstate_global->__pyx_tuple[1]); + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6parser_Node, __pyx_mstate_global->__pyx_n_u_text, __pyx_t_2) < (0)) __PYX_ERR(3, 253, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "selectolax/modest/node.pxi":329 + * return text + * + * def iter(self, include_text=False): # <<<<<<<<<<<<<< + * """Iterate over nodes on the current level. + * +*/ + __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6parser_4Node_5iter, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Node_iter, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_parser, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[3])); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 329, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2); + #endif + __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_mstate_global->__pyx_tuple[4]); + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6parser_Node, __pyx_mstate_global->__pyx_n_u_iter_2, __pyx_t_2) < (0)) __PYX_ERR(3, 329, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "selectolax/modest/node.pxi":354 + * node = node.next + * + * def traverse(self, include_text=False): # <<<<<<<<<<<<<< + * """Iterate over all child and next nodes starting from the current level. + * +*/ + __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6parser_4Node_8traverse, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Node_traverse, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_parser, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[4])); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 354, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2); + #endif + __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_mstate_global->__pyx_tuple[4]); + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6parser_Node, __pyx_mstate_global->__pyx_n_u_traverse, __pyx_t_2) < (0)) __PYX_ERR(3, 354, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "selectolax/modest/node.pxi":470 + * return None + * + * def css(self, str query): # <<<<<<<<<<<<<< + * """Evaluate CSS selector against current node and its child nodes.""" + * return find_nodes(self.parser, self.node, query) +*/ + __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6parser_4Node_11css, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Node_css, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_parser, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[22])); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 470, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2); + #endif + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6parser_Node, __pyx_mstate_global->__pyx_n_u_css, __pyx_t_2) < (0)) __PYX_ERR(3, 470, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "selectolax/modest/node.pxi":474 + * return find_nodes(self.parser, self.node, query) + * + * def any_css_matches(self, tuple selectors): # <<<<<<<<<<<<<< + * """Returns True if any of CSS selectors matches a node""" + * return find_matches(self.parser, self.node, selectors) +*/ + __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6parser_4Node_13any_css_matches, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Node_any_css_matches, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_parser, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[23])); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 474, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2); + #endif + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6parser_Node, __pyx_mstate_global->__pyx_n_u_any_css_matches, __pyx_t_2) < (0)) __PYX_ERR(3, 474, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "selectolax/modest/node.pxi":478 + * return find_matches(self.parser, self.node, selectors) + * + * def css_matches(self, str selector): # <<<<<<<<<<<<<< + * """Returns True if CSS selector matches a node.""" + * return find_matches(self.parser, self.node, (selector, )) +*/ + __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6parser_4Node_15css_matches, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Node_css_matches, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_parser, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[24])); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 478, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2); + #endif + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6parser_Node, __pyx_mstate_global->__pyx_n_u_css_matches, __pyx_t_2) < (0)) __PYX_ERR(3, 478, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "selectolax/modest/node.pxi":482 + * return find_matches(self.parser, self.node, (selector, )) + * + * def css_first(self, str query, default=None, bool strict=False): # <<<<<<<<<<<<<< + * """Evaluate CSS selector against current node and its child nodes.""" + * results = self.css(query) +*/ + __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6parser_4Node_17css_first, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Node_css_first, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_parser, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[25])); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 482, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2); + #endif + __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_mstate_global->__pyx_tuple[5]); + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6parser_Node, __pyx_mstate_global->__pyx_n_u_css_first, __pyx_t_2) < (0)) __PYX_ERR(3, 482, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "selectolax/modest/node.pxi":496 + * return default + * + * def decompose(self, bool recursive=True): # <<<<<<<<<<<<<< + * """Remove a Node from the tree. + * +*/ + __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6parser_4Node_19decompose, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Node_decompose, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_parser, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[26])); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 496, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2); + #endif + __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_mstate_global->__pyx_tuple[6]); + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6parser_Node, __pyx_mstate_global->__pyx_n_u_decompose, __pyx_t_2) < (0)) __PYX_ERR(3, 496, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "selectolax/modest/node.pxi":517 + * myhtml_node_delete(self.node) + * + * def remove(self, bool recursive=True): # <<<<<<<<<<<<<< + * """An alias for the decompose method.""" + * self.decompose(recursive) +*/ + __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6parser_4Node_21remove, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Node_remove, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_parser, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[27])); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 517, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2); + #endif + __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_mstate_global->__pyx_tuple[6]); + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6parser_Node, __pyx_mstate_global->__pyx_n_u_remove, __pyx_t_2) < (0)) __PYX_ERR(3, 517, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "selectolax/modest/node.pxi":521 + * self.decompose(recursive) + * + * def unwrap(self, delete_empty = False): # <<<<<<<<<<<<<< + * """Replace node with whatever is inside this node. + * +*/ + __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6parser_4Node_23unwrap, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Node_unwrap, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_parser, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[28])); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 521, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2); + #endif + __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_mstate_global->__pyx_tuple[4]); + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6parser_Node, __pyx_mstate_global->__pyx_n_u_unwrap, __pyx_t_2) < (0)) __PYX_ERR(3, 521, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "selectolax/modest/node.pxi":558 + * myhtml_node_delete(self.node) + * + * def strip_tags(self, list tags, bool recursive = False): # <<<<<<<<<<<<<< + * """Remove specified tags from the HTML tree. + * +*/ + __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6parser_4Node_25strip_tags, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Node_strip_tags, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_parser, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[29])); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 558, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2); + #endif + __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_mstate_global->__pyx_tuple[4]); + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6parser_Node, __pyx_mstate_global->__pyx_n_u_strip_tags, __pyx_t_2) < (0)) __PYX_ERR(3, 558, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "selectolax/modest/node.pxi":584 + * element.decompose(recursive=recursive) + * + * def unwrap_tags(self, list tags, delete_empty = False): # <<<<<<<<<<<<<< + * """Unwraps specified tags from the HTML tree. + * +*/ + __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6parser_4Node_27unwrap_tags, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Node_unwrap_tags, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_parser, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[30])); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 584, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2); + #endif + __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_mstate_global->__pyx_tuple[4]); + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6parser_Node, __pyx_mstate_global->__pyx_n_u_unwrap_tags, __pyx_t_2) < (0)) __PYX_ERR(3, 584, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "selectolax/modest/node.pxi":611 + * element.unwrap(delete_empty) + * + * def replace_with(self, str_or_Node value): # <<<<<<<<<<<<<< + * """Replace current Node with specified value. + * +*/ + __pyx_t_2 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 611, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_mstate_global->__pyx_k__3 = __pyx_t_2; + __Pyx_GIVEREF(__pyx_t_2); + __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 611, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __pyx_FusedFunction_New(&__pyx_fuse_0__pyx_mdef_10selectolax_6parser_4Node_51replace_with, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Node_replace_with_str, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_parser, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[31])); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 611, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3); + #endif + __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_mstate_global->__pyx_empty_tuple); + if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_str, __pyx_t_3) < (0)) __PYX_ERR(3, 611, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __pyx_FusedFunction_New(&__pyx_fuse_1__pyx_mdef_10selectolax_6parser_4Node_53replace_with, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Node_replace_with_bytes, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_parser, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[32])); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 611, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3); + #endif + __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_mstate_global->__pyx_empty_tuple); + if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_bytes, __pyx_t_3) < (0)) __PYX_ERR(3, 611, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __pyx_FusedFunction_New(&__pyx_fuse_2__pyx_mdef_10selectolax_6parser_4Node_55replace_with, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Node_replace_with_Node, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_parser, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[33])); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 611, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3); + #endif + __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_mstate_global->__pyx_empty_tuple); + if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_Node, __pyx_t_3) < (0)) __PYX_ERR(3, 611, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __pyx_FusedFunction_New(&__pyx_mdef_10selectolax_6parser_4Node_29replace_with, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Node_replace_with, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_parser, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[34])); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 611, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3); + #endif + __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_mstate_global->__pyx_empty_tuple); + ((__pyx_FusedFunctionObject *) __pyx_t_3)->__signatures__ = __pyx_t_2; + __Pyx_GIVEREF(__pyx_t_2); + __pyx_t_2 = 0; + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6parser_Node, __pyx_mstate_global->__pyx_n_u_replace_with, __pyx_t_3) < (0)) __PYX_ERR(3, 611, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "selectolax/modest/node.pxi":652 + * raise TypeError("Expected a string or Node instance, but %s found" % type(value).__name__) + * + * def insert_before(self, str_or_Node value): # <<<<<<<<<<<<<< + * """ + * Insert a node before the current Node. +*/ + __pyx_t_3 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 652, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_mstate_global->__pyx_k__4 = __pyx_t_3; + __Pyx_GIVEREF(__pyx_t_3); + __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 652, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = __pyx_FusedFunction_New(&__pyx_fuse_0__pyx_mdef_10selectolax_6parser_4Node_59insert_before, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Node_insert_before_str, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_parser, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[35])); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 652, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2); + #endif + __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_mstate_global->__pyx_empty_tuple); + if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_str, __pyx_t_2) < (0)) __PYX_ERR(3, 652, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __pyx_FusedFunction_New(&__pyx_fuse_1__pyx_mdef_10selectolax_6parser_4Node_61insert_before, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Node_insert_before_bytes, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_parser, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[36])); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 652, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2); + #endif + __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_mstate_global->__pyx_empty_tuple); + if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_bytes, __pyx_t_2) < (0)) __PYX_ERR(3, 652, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __pyx_FusedFunction_New(&__pyx_fuse_2__pyx_mdef_10selectolax_6parser_4Node_63insert_before, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Node_insert_before_Node, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_parser, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[37])); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 652, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2); + #endif + __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_mstate_global->__pyx_empty_tuple); + if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_Node, __pyx_t_2) < (0)) __PYX_ERR(3, 652, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __pyx_FusedFunction_New(&__pyx_mdef_10selectolax_6parser_4Node_31insert_before, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Node_insert_before, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_parser, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[38])); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 652, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2); + #endif + __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_mstate_global->__pyx_empty_tuple); + ((__pyx_FusedFunctionObject *) __pyx_t_2)->__signatures__ = __pyx_t_3; + __Pyx_GIVEREF(__pyx_t_3); + __pyx_t_3 = 0; + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6parser_Node, __pyx_mstate_global->__pyx_n_u_insert_before, __pyx_t_2) < (0)) __PYX_ERR(3, 652, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "selectolax/modest/node.pxi":692 + * raise TypeError("Expected a string or Node instance, but %s found" % type(value).__name__) + * + * def insert_after(self, str_or_Node value): # <<<<<<<<<<<<<< + * """ + * Insert a node after the current Node. +*/ + __pyx_t_2 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 692, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_mstate_global->__pyx_k__5 = __pyx_t_2; + __Pyx_GIVEREF(__pyx_t_2); + __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 692, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __pyx_FusedFunction_New(&__pyx_fuse_0__pyx_mdef_10selectolax_6parser_4Node_67insert_after, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Node_insert_after_str, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_parser, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[39])); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 692, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3); + #endif + __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_mstate_global->__pyx_empty_tuple); + if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_str, __pyx_t_3) < (0)) __PYX_ERR(3, 692, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __pyx_FusedFunction_New(&__pyx_fuse_1__pyx_mdef_10selectolax_6parser_4Node_69insert_after, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Node_insert_after_bytes, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_parser, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[40])); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 692, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3); + #endif + __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_mstate_global->__pyx_empty_tuple); + if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_bytes, __pyx_t_3) < (0)) __PYX_ERR(3, 692, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __pyx_FusedFunction_New(&__pyx_fuse_2__pyx_mdef_10selectolax_6parser_4Node_71insert_after, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Node_insert_after_Node, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_parser, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[41])); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 692, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3); + #endif + __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_mstate_global->__pyx_empty_tuple); + if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_Node, __pyx_t_3) < (0)) __PYX_ERR(3, 692, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __pyx_FusedFunction_New(&__pyx_mdef_10selectolax_6parser_4Node_33insert_after, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Node_insert_after, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_parser, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[42])); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 692, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3); + #endif + __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_mstate_global->__pyx_empty_tuple); + ((__pyx_FusedFunctionObject *) __pyx_t_3)->__signatures__ = __pyx_t_2; + __Pyx_GIVEREF(__pyx_t_2); + __pyx_t_2 = 0; + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6parser_Node, __pyx_mstate_global->__pyx_n_u_insert_after, __pyx_t_3) < (0)) __PYX_ERR(3, 692, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "selectolax/modest/node.pxi":732 + * raise TypeError("Expected a string or Node instance, but %s found" % type(value).__name__) + * + * def insert_child(self, str_or_Node value): # <<<<<<<<<<<<<< + * """ + * Insert a node inside (at the end of) the current Node. +*/ + __pyx_t_3 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 732, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_mstate_global->__pyx_k__6 = __pyx_t_3; + __Pyx_GIVEREF(__pyx_t_3); + __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 732, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = __pyx_FusedFunction_New(&__pyx_fuse_0__pyx_mdef_10selectolax_6parser_4Node_75insert_child, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Node_insert_child_str, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_parser, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[43])); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 732, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2); + #endif + __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_mstate_global->__pyx_empty_tuple); + if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_str, __pyx_t_2) < (0)) __PYX_ERR(3, 732, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __pyx_FusedFunction_New(&__pyx_fuse_1__pyx_mdef_10selectolax_6parser_4Node_77insert_child, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Node_insert_child_bytes, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_parser, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[44])); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 732, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2); + #endif + __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_mstate_global->__pyx_empty_tuple); + if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_bytes, __pyx_t_2) < (0)) __PYX_ERR(3, 732, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __pyx_FusedFunction_New(&__pyx_fuse_2__pyx_mdef_10selectolax_6parser_4Node_79insert_child, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Node_insert_child_Node, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_parser, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[45])); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 732, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2); + #endif + __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_mstate_global->__pyx_empty_tuple); + if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_Node, __pyx_t_2) < (0)) __PYX_ERR(3, 732, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __pyx_FusedFunction_New(&__pyx_mdef_10selectolax_6parser_4Node_35insert_child, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Node_insert_child, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_parser, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[46])); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 732, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2); + #endif + __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_mstate_global->__pyx_empty_tuple); + ((__pyx_FusedFunctionObject *) __pyx_t_2)->__signatures__ = __pyx_t_3; + __Pyx_GIVEREF(__pyx_t_3); + __pyx_t_3 = 0; + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6parser_Node, __pyx_mstate_global->__pyx_n_u_insert_child, __pyx_t_2) < (0)) __PYX_ERR(3, 732, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "selectolax/modest/node.pxi":772 + * raise TypeError("Expected a string or Node instance, but %s found" % type(value).__name__) + * + * def unwrap_tags(self, list tags, delete_empty = False): # <<<<<<<<<<<<<< + * """Unwraps specified tags from the HTML tree. + * +*/ + __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6parser_4Node_37unwrap_tags, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Node_unwrap_tags, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_parser, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[47])); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 772, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2); + #endif + __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_mstate_global->__pyx_tuple[4]); + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6parser_Node, __pyx_mstate_global->__pyx_n_u_unwrap_tags, __pyx_t_2) < (0)) __PYX_ERR(3, 772, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "selectolax/modest/node.pxi":826 + * return self.parser.raw_html[begin:begin + length] + * + * def select(self, query=None): # <<<<<<<<<<<<<< + * """Select nodes given a CSS selector. + * +*/ + __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6parser_4Node_39select, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Node_select, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_parser, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[48])); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 826, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2); + #endif + __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_mstate_global->__pyx_tuple[2]); + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6parser_Node, __pyx_mstate_global->__pyx_n_u_select, __pyx_t_2) < (0)) __PYX_ERR(3, 826, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "selectolax/modest/node.pxi":842 + * return Selector(self, query) + * + * def scripts_contain(self, str query): # <<<<<<<<<<<<<< + * """Returns True if any of the script tags contain specified text. + * +*/ + __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6parser_4Node_41scripts_contain, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Node_scripts_contain, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_parser, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[49])); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 842, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2); + #endif + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6parser_Node, __pyx_mstate_global->__pyx_n_u_scripts_contain, __pyx_t_2) < (0)) __PYX_ERR(3, 842, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "selectolax/modest/node.pxi":868 + * return False + * + * def script_srcs_contain(self, tuple queries): # <<<<<<<<<<<<<< + * """Returns True if any of the script SRCs attributes contain on of the specified text. + * +*/ + __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6parser_4Node_43script_srcs_contain, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Node_script_srcs_contain, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_parser, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[50])); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 868, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2); + #endif + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6parser_Node, __pyx_mstate_global->__pyx_n_u_script_srcs_contain, __pyx_t_2) < (0)) __PYX_ERR(3, 868, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "selectolax/modest/node.pxi":925 + * return None + * + * def merge_text_nodes(self): # <<<<<<<<<<<<<< + * """Iterates over all text nodes and merges all text nodes that are close to each other. + * +*/ + __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6parser_4Node_49merge_text_nodes, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Node_merge_text_nodes, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_parser, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[51])); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 925, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2); + #endif + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6parser_Node, __pyx_mstate_global->__pyx_n_u_merge_text_nodes, __pyx_t_2) < (0)) __PYX_ERR(3, 925, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * raise TypeError, "self.node cannot be converted to a Python object for pickling" + * def __setstate_cython__(self, __pyx_state): +*/ + __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6parser_4Node_83__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Node___reduce_cython, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_parser, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[52])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2); + #endif + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_2) < (0)) __PYX_ERR(1, 1, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "(tree fragment)":3 + * def __reduce_cython__(self): + * raise TypeError, "self.node cannot be converted to a Python object for pickling" + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * raise TypeError, "self.node cannot be converted to a Python object for pickling" +*/ + __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6parser_4Node_85__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Node___setstate_cython, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_parser, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[53])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2); + #endif + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_2) < (0)) __PYX_ERR(1, 3, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "selectolax/utils.pxi":1 + * from typing import Literal, Optional, Union, Type # <<<<<<<<<<<<<< + * + * MAX_HTML_INPUT_SIZE = 250e+7 +*/ + { + PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_Literal,__pyx_mstate_global->__pyx_n_u_Optional,__pyx_mstate_global->__pyx_n_u_Union,__pyx_mstate_global->__pyx_n_u_Type}; + __pyx_t_1 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_typing, __pyx_imported_names, 4, NULL, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 1, __pyx_L1_error) + } + __pyx_t_2 = __pyx_t_1; + __Pyx_GOTREF(__pyx_t_2); + { + PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_Literal,__pyx_mstate_global->__pyx_n_u_Optional,__pyx_mstate_global->__pyx_n_u_Union,__pyx_mstate_global->__pyx_n_u_Type}; + for (__pyx_t_4=0; __pyx_t_4 < 4; __pyx_t_4++) { + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_imported_names[__pyx_t_4]); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_imported_names[__pyx_t_4], __pyx_t_3) < (0)) __PYX_ERR(4, 1, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "selectolax/utils.pxi":3 + * from typing import Literal, Optional, Union, Type + * + * MAX_HTML_INPUT_SIZE = 250e+7 # <<<<<<<<<<<<<< + * + * ParserCls = Union[Type["HTMLParser"], Type["LexborHTMLParser"]] +*/ + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_MAX_HTML_INPUT_SIZE, __pyx_mstate_global->__pyx_float_250e_7) < (0)) __PYX_ERR(4, 3, __pyx_L1_error) + + /* "selectolax/utils.pxi":5 + * MAX_HTML_INPUT_SIZE = 250e+7 + * + * ParserCls = Union[Type["HTMLParser"], Type["LexborHTMLParser"]] # <<<<<<<<<<<<<< + * Parser = Union["HTMLParser", "LexborHTMLParser"] + * FRAGMENT = Literal[ +*/ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_Union); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_Type); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_5 = __Pyx_PyObject_Dict_GetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_HTMLParser); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_Type); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_6 = __Pyx_PyObject_Dict_GetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_LexborHTMLParser); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = PyTuple_Pack(2, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ParserCls, __pyx_t_6) < (0)) __PYX_ERR(4, 5, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + + /* "selectolax/utils.pxi":6 + * + * ParserCls = Union[Type["HTMLParser"], Type["LexborHTMLParser"]] + * Parser = Union["HTMLParser", "LexborHTMLParser"] # <<<<<<<<<<<<<< + * FRAGMENT = Literal[ + * "document", +*/ + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_Union); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_3 = __Pyx_PyObject_GetItem(__pyx_t_6, __pyx_mstate_global->__pyx_tuple[7]); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_Parser, __pyx_t_3) < (0)) __PYX_ERR(4, 6, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "selectolax/utils.pxi":7 + * ParserCls = Union[Type["HTMLParser"], Type["LexborHTMLParser"]] + * Parser = Union["HTMLParser", "LexborHTMLParser"] + * FRAGMENT = Literal[ # <<<<<<<<<<<<<< + * "document", + * "fragment", +*/ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_Literal); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 7, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_t_3, __pyx_mstate_global->__pyx_tuple[8]); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 7, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_FRAGMENT, __pyx_t_6) < (0)) __PYX_ERR(4, 7, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + + /* "selectolax/utils.pxi":19 + * + * + * def preprocess_input(html, decode_errors='ignore'): # <<<<<<<<<<<<<< + * if isinstance(html, (str, unicode)): + * bytes_html = html.encode('UTF-8', errors=decode_errors) +*/ + __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6parser_1preprocess_input, 0, __pyx_mstate_global->__pyx_n_u_preprocess_input, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_parser, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[54])); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 19, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_6); + #endif + __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_6, __pyx_mstate_global->__pyx_tuple[9]); + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_preprocess_input, __pyx_t_6) < (0)) __PYX_ERR(4, 19, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + + /* "selectolax/utils.pxi":32 + * + * + * def do_create_tag(tag: str, parser_cls: ParserCls): # <<<<<<<<<<<<<< + * if not tag: + * raise ValueError("Tag name cannot be empty") +*/ + __pyx_t_6 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 32, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + if (PyDict_SetItem(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_tag, __pyx_mstate_global->__pyx_n_u_str) < (0)) __PYX_ERR(4, 32, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_parser_cls, __pyx_mstate_global->__pyx_n_u_ParserCls) < (0)) __PYX_ERR(4, 32, __pyx_L1_error) + __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6parser_3do_create_tag, 0, __pyx_mstate_global->__pyx_n_u_do_create_tag, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_parser, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[55])); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 32, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3); + #endif + __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_6); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_do_create_tag, __pyx_t_3) < (0)) __PYX_ERR(4, 32, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "selectolax/utils.pxi":38 + * + * + * def get_fragment_type( # <<<<<<<<<<<<<< + * html: str, + * parser_cls: ParserCls, +*/ + __pyx_t_3 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 38, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_html, __pyx_mstate_global->__pyx_n_u_str) < (0)) __PYX_ERR(4, 38, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_parser_cls, __pyx_mstate_global->__pyx_n_u_ParserCls) < (0)) __PYX_ERR(4, 38, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_tree, __pyx_mstate_global->__pyx_kp_u_Optional_Parser) < (0)) __PYX_ERR(4, 38, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_FRAGMENT) < (0)) __PYX_ERR(4, 38, __pyx_L1_error) + __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6parser_5get_fragment_type, 0, __pyx_mstate_global->__pyx_n_u_get_fragment_type, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_parser, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[56])); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 38, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_6); + #endif + __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_6, __pyx_mstate_global->__pyx_tuple[2]); + __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_6, __pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_get_fragment_type, __pyx_t_6) < (0)) __PYX_ERR(4, 38, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + + /* "selectolax/utils.pxi":81 + * + * + * def do_parse_fragment(html: str, parser_cls: ParserCls): # <<<<<<<<<<<<<< + * """ + * Given HTML, parse it into a list of Nodes, such that the nodes +*/ + __pyx_t_6 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 81, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + if (PyDict_SetItem(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_html, __pyx_mstate_global->__pyx_n_u_str) < (0)) __PYX_ERR(4, 81, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_parser_cls, __pyx_mstate_global->__pyx_n_u_ParserCls) < (0)) __PYX_ERR(4, 81, __pyx_L1_error) + __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6parser_7do_parse_fragment, 0, __pyx_mstate_global->__pyx_n_u_do_parse_fragment, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_parser, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[57])); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 81, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3); + #endif + __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_6); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_do_parse_fragment, __pyx_t_3) < (0)) __PYX_ERR(4, 81, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "selectolax/modest/util.pxi":4 + * + * + * def create_tag(tag: str): # <<<<<<<<<<<<<< + * """ + * Given an HTML tag name, e.g. `"div"`, create a single empty node for that tag, +*/ + __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_tag, __pyx_mstate_global->__pyx_n_u_str) < (0)) __PYX_ERR(5, 4, __pyx_L1_error) + __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6parser_9create_tag, 0, __pyx_mstate_global->__pyx_n_u_create_tag, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_parser, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[58])); if (unlikely(!__pyx_t_6)) __PYX_ERR(5, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_6); + #endif + __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_6, __pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_create_tag, __pyx_t_6) < (0)) __PYX_ERR(5, 4, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + + /* "selectolax/modest/util.pxi":12 + * + * + * def parse_fragment(html: str): # <<<<<<<<<<<<<< + * """ + * Given HTML, parse it into a list of Nodes, such that the nodes +*/ + __pyx_t_6 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(5, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + if (PyDict_SetItem(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_html, __pyx_mstate_global->__pyx_n_u_str) < (0)) __PYX_ERR(5, 12, __pyx_L1_error) + __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6parser_11parse_fragment, 0, __pyx_mstate_global->__pyx_n_u_parse_fragment, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_parser, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[59])); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_3); + #endif + __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_6); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_parse_fragment, __pyx_t_3) < (0)) __PYX_ERR(5, 12, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "selectolax/utils.pxi":1 + * from typing import Literal, Optional, Union, Type # <<<<<<<<<<<<<< + * + * MAX_HTML_INPUT_SIZE = 250e+7 +*/ + { + PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_Literal,__pyx_mstate_global->__pyx_n_u_Optional,__pyx_mstate_global->__pyx_n_u_Union,__pyx_mstate_global->__pyx_n_u_Type}; + __pyx_t_1 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_typing, __pyx_imported_names, 4, NULL, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 1, __pyx_L1_error) + } + __pyx_t_3 = __pyx_t_1; + __Pyx_GOTREF(__pyx_t_3); + { + PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_Literal,__pyx_mstate_global->__pyx_n_u_Optional,__pyx_mstate_global->__pyx_n_u_Union,__pyx_mstate_global->__pyx_n_u_Type}; + for (__pyx_t_4=0; __pyx_t_4 < 4; __pyx_t_4++) { + __pyx_t_6 = __Pyx_ImportFrom(__pyx_t_3, __pyx_imported_names[__pyx_t_4]); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_imported_names[__pyx_t_4], __pyx_t_6) < (0)) __PYX_ERR(6, 1, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "selectolax/utils.pxi":3 + * from typing import Literal, Optional, Union, Type + * + * MAX_HTML_INPUT_SIZE = 250e+7 # <<<<<<<<<<<<<< + * + * ParserCls = Union[Type["HTMLParser"], Type["LexborHTMLParser"]] +*/ + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_MAX_HTML_INPUT_SIZE, __pyx_mstate_global->__pyx_float_250e_7) < (0)) __PYX_ERR(6, 3, __pyx_L1_error) + + /* "selectolax/utils.pxi":5 + * MAX_HTML_INPUT_SIZE = 250e+7 + * + * ParserCls = Union[Type["HTMLParser"], Type["LexborHTMLParser"]] # <<<<<<<<<<<<<< + * Parser = Union["HTMLParser", "LexborHTMLParser"] + * FRAGMENT = Literal[ +*/ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_Union); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_Type); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_2 = __Pyx_PyObject_Dict_GetItem(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_HTMLParser); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_Type); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_5 = __Pyx_PyObject_Dict_GetItem(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_LexborHTMLParser); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_6 = PyTuple_Pack(2, __pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_t_3, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ParserCls, __pyx_t_5) < (0)) __PYX_ERR(6, 5, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "selectolax/utils.pxi":6 + * + * ParserCls = Union[Type["HTMLParser"], Type["LexborHTMLParser"]] + * Parser = Union["HTMLParser", "LexborHTMLParser"] # <<<<<<<<<<<<<< + * FRAGMENT = Literal[ + * "document", +*/ + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_Union); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_t_5, __pyx_mstate_global->__pyx_tuple[7]); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_Parser, __pyx_t_6) < (0)) __PYX_ERR(6, 6, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + + /* "selectolax/utils.pxi":7 + * ParserCls = Union[Type["HTMLParser"], Type["LexborHTMLParser"]] + * Parser = Union["HTMLParser", "LexborHTMLParser"] + * FRAGMENT = Literal[ # <<<<<<<<<<<<<< + * "document", + * "fragment", +*/ + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_Literal); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 7, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_t_6, __pyx_mstate_global->__pyx_tuple[8]); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 7, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_FRAGMENT, __pyx_t_5) < (0)) __PYX_ERR(6, 7, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "selectolax/utils.pxi":19 + * + * + * def preprocess_input(html, decode_errors='ignore'): # <<<<<<<<<<<<<< + * if isinstance(html, (str, unicode)): + * bytes_html = html.encode('UTF-8', errors=decode_errors) +*/ + __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6parser_13preprocess_input, 0, __pyx_mstate_global->__pyx_n_u_preprocess_input, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_parser, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[60])); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 19, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5); + #endif + __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_5, __pyx_mstate_global->__pyx_tuple[9]); + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_preprocess_input, __pyx_t_5) < (0)) __PYX_ERR(6, 19, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "selectolax/utils.pxi":32 + * + * + * def do_create_tag(tag: str, parser_cls: ParserCls): # <<<<<<<<<<<<<< + * if not tag: + * raise ValueError("Tag name cannot be empty") +*/ + __pyx_t_5 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 32, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_tag, __pyx_mstate_global->__pyx_n_u_str) < (0)) __PYX_ERR(6, 32, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_parser_cls, __pyx_mstate_global->__pyx_n_u_ParserCls) < (0)) __PYX_ERR(6, 32, __pyx_L1_error) + __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6parser_15do_create_tag, 0, __pyx_mstate_global->__pyx_n_u_do_create_tag, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_parser, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[61])); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 32, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_6); + #endif + __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_6, __pyx_t_5); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_do_create_tag, __pyx_t_6) < (0)) __PYX_ERR(6, 32, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + + /* "selectolax/utils.pxi":38 + * + * + * def get_fragment_type( # <<<<<<<<<<<<<< + * html: str, + * parser_cls: ParserCls, +*/ + __pyx_t_6 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 38, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + if (PyDict_SetItem(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_html, __pyx_mstate_global->__pyx_n_u_str) < (0)) __PYX_ERR(6, 38, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_parser_cls, __pyx_mstate_global->__pyx_n_u_ParserCls) < (0)) __PYX_ERR(6, 38, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_tree, __pyx_mstate_global->__pyx_kp_u_Optional_Parser) < (0)) __PYX_ERR(6, 38, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_FRAGMENT) < (0)) __PYX_ERR(6, 38, __pyx_L1_error) + __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6parser_17get_fragment_type, 0, __pyx_mstate_global->__pyx_n_u_get_fragment_type, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_parser, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[62])); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 38, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5); + #endif + __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_5, __pyx_mstate_global->__pyx_tuple[2]); + __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_6); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_get_fragment_type, __pyx_t_5) < (0)) __PYX_ERR(6, 38, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "selectolax/utils.pxi":81 + * + * + * def do_parse_fragment(html: str, parser_cls: ParserCls): # <<<<<<<<<<<<<< + * """ + * Given HTML, parse it into a list of Nodes, such that the nodes +*/ + __pyx_t_5 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 81, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_html, __pyx_mstate_global->__pyx_n_u_str) < (0)) __PYX_ERR(6, 81, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_parser_cls, __pyx_mstate_global->__pyx_n_u_ParserCls) < (0)) __PYX_ERR(6, 81, __pyx_L1_error) + __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6parser_19do_parse_fragment, 0, __pyx_mstate_global->__pyx_n_u_do_parse_fragment, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_parser, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[63])); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 81, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_6); + #endif + __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_6, __pyx_t_5); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_do_parse_fragment, __pyx_t_6) < (0)) __PYX_ERR(6, 81, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + + /* "selectolax/parser.pyx":48 + * self.cached_script_srcs = None + * + * def css(self, str query): # <<<<<<<<<<<<<< + * """A CSS selector. + * +*/ + __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6parser_10HTMLParser_3css, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_HTMLParser_css, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_parser, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[64])); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 48, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_6); + #endif + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6parser_HTMLParser, __pyx_mstate_global->__pyx_n_u_css, __pyx_t_6) < (0)) __PYX_ERR(0, 48, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + + /* "selectolax/parser.pyx":68 + * return node.css(query) + * + * def css_first(self, str query, default=None, strict=False): # <<<<<<<<<<<<<< + * """Same as `css` but returns only the first match. + * +*/ + __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6parser_10HTMLParser_5css_first, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_HTMLParser_css_first, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_parser, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[65])); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 68, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_6); + #endif + __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_6, __pyx_mstate_global->__pyx_tuple[5]); + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6parser_HTMLParser, __pyx_mstate_global->__pyx_n_u_css_first, __pyx_t_6) < (0)) __PYX_ERR(0, 68, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + + /* "selectolax/parser.pyx":181 + * return None + * + * def tags(self, str name): # <<<<<<<<<<<<<< + * """Returns a list of tags that match specified name. + * +*/ + __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6parser_10HTMLParser_7tags, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_HTMLParser_tags, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_parser, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[66])); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 181, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_6); + #endif + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6parser_HTMLParser, __pyx_mstate_global->__pyx_n_u_tags, __pyx_t_6) < (0)) __PYX_ERR(0, 181, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + + /* "selectolax/parser.pyx":214 + * return result + * + * def text(self, bool deep=True, str separator='', bool strip=False): # <<<<<<<<<<<<<< + * """Returns the text of the node including text of all its child nodes. + * +*/ + __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6parser_10HTMLParser_9text, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_HTMLParser_text, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_parser, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[67])); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 214, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_6); + #endif + __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_6, __pyx_mstate_global->__pyx_tuple[1]); + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6parser_HTMLParser, __pyx_mstate_global->__pyx_n_u_text, __pyx_t_6) < (0)) __PYX_ERR(0, 214, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + + /* "selectolax/parser.pyx":235 + * return self.body.text(deep=deep, separator=separator, strip=strip) + * + * def strip_tags(self, list tags, bool recursive = False): # <<<<<<<<<<<<<< + * """Remove specified tags from the node. + * +*/ + __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6parser_10HTMLParser_11strip_tags, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_HTMLParser_strip_tags, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_parser, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[68])); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 235, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_6); + #endif + __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_6, __pyx_mstate_global->__pyx_tuple[4]); + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6parser_HTMLParser, __pyx_mstate_global->__pyx_n_u_strip_tags, __pyx_t_6) < (0)) __PYX_ERR(0, 235, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + + /* "selectolax/parser.pyx":277 + * myhtml_collection_destroy(collection) + * + * def unwrap_tags(self, list tags, delete_empty : bool = False): # <<<<<<<<<<<<<< + * """Unwraps specified tags from the HTML tree. + * +*/ + __pyx_t_6 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 277, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + if (PyDict_SetItem(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_delete_empty, __pyx_mstate_global->__pyx_n_u_bool) < (0)) __PYX_ERR(0, 277, __pyx_L1_error) + __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6parser_10HTMLParser_13unwrap_tags, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_HTMLParser_unwrap_tags, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_parser, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[69])); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 277, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5); + #endif + __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_5, __pyx_mstate_global->__pyx_tuple[4]); + __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_6); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6parser_HTMLParser, __pyx_mstate_global->__pyx_n_u_unwrap_tags, __pyx_t_5) < (0)) __PYX_ERR(0, 277, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "selectolax/parser.pyx":309 + * return None + * + * def select(self, query=None): # <<<<<<<<<<<<<< + * """Select nodes given a CSS selector. + * +*/ + __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6parser_10HTMLParser_15select, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_HTMLParser_select, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_parser, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[70])); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 309, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5); + #endif + __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_5, __pyx_mstate_global->__pyx_tuple[2]); + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6parser_HTMLParser, __pyx_mstate_global->__pyx_n_u_select, __pyx_t_5) < (0)) __PYX_ERR(0, 309, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "selectolax/parser.pyx":328 + * return Selector(node, query) + * + * def any_css_matches(self, tuple selectors): # <<<<<<<<<<<<<< + * """Returns True if any of the specified CSS selectors matches a node.""" + * return self.root.any_css_matches(selectors) +*/ + __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6parser_10HTMLParser_17any_css_matches, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_HTMLParser_any_css_matches, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_parser, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[71])); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 328, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5); + #endif + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6parser_HTMLParser, __pyx_mstate_global->__pyx_n_u_any_css_matches, __pyx_t_5) < (0)) __PYX_ERR(0, 328, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "selectolax/parser.pyx":332 + * return self.root.any_css_matches(selectors) + * + * def scripts_contain(self, str query): # <<<<<<<<<<<<<< + * """Returns True if any of the script tags contain specified text. + * +*/ + __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6parser_10HTMLParser_19scripts_contain, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_HTMLParser_scripts_contain, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_parser, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[72])); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 332, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5); + #endif + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6parser_HTMLParser, __pyx_mstate_global->__pyx_n_u_scripts_contain, __pyx_t_5) < (0)) __PYX_ERR(0, 332, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "selectolax/parser.pyx":345 + * return self.root.scripts_contain(query) + * + * def script_srcs_contain(self, tuple queries): # <<<<<<<<<<<<<< + * """Returns True if any of the script SRCs attributes contain on of the specified text. + * +*/ + __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6parser_10HTMLParser_21script_srcs_contain, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_HTMLParser_script_srcs_contain, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_parser, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[73])); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 345, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5); + #endif + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6parser_HTMLParser, __pyx_mstate_global->__pyx_n_u_script_srcs_contain, __pyx_t_5) < (0)) __PYX_ERR(0, 345, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "selectolax/parser.pyx":357 + * return self.root.script_srcs_contain(queries) + * + * def css_matches(self, str selector): # <<<<<<<<<<<<<< + * return self.root.css_matches(selector) + * +*/ + __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6parser_10HTMLParser_23css_matches, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_HTMLParser_css_matches, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_parser, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[74])); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 357, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5); + #endif + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6parser_HTMLParser, __pyx_mstate_global->__pyx_n_u_css_matches, __pyx_t_5) < (0)) __PYX_ERR(0, 357, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "selectolax/parser.pyx":360 + * return self.root.css_matches(selector) + * + * def merge_text_nodes(self): # <<<<<<<<<<<<<< + * """Iterates over all text nodes and merges all text nodes that are close to each other. + * +*/ + __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6parser_10HTMLParser_25merge_text_nodes, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_HTMLParser_merge_text_nodes, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_parser, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[75])); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 360, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5); + #endif + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6parser_HTMLParser, __pyx_mstate_global->__pyx_n_u_merge_text_nodes, __pyx_t_5) < (0)) __PYX_ERR(0, 360, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "selectolax/parser.pyx":396 + * return obj + * + * def clone(self): # <<<<<<<<<<<<<< + * """Clone the current tree.""" + * cdef myhtml_t* myhtml +*/ + __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6parser_10HTMLParser_27clone, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_HTMLParser_clone, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_parser, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[76])); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 396, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5); + #endif + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10selectolax_6parser_HTMLParser, __pyx_mstate_global->__pyx_n_u_clone, __pyx_t_5) < (0)) __PYX_ERR(0, 396, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * raise TypeError, "self.html_tree cannot be converted to a Python object for pickling" + * def __setstate_cython__(self, __pyx_state): +*/ + __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6parser_10HTMLParser_33__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_HTMLParser___reduce_cython, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_parser, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[77])); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5); + #endif + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_5) < (0)) __PYX_ERR(1, 1, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "(tree fragment)":3 + * def __reduce_cython__(self): + * raise TypeError, "self.html_tree cannot be converted to a Python object for pickling" + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * raise TypeError, "self.html_tree cannot be converted to a Python object for pickling" +*/ + __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6parser_10HTMLParser_35__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_HTMLParser___setstate_cython, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_parser, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[78])); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 3, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5); + #endif + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_5) < (0)) __PYX_ERR(1, 3, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "(tree fragment)":4 + * int __Pyx_CheckUnpickleChecksum(long, long, long, long, const char*) except -1 + * int __Pyx_UpdateUnpickledDict(object, object, Py_ssize_t) except -1 + * def __pyx_unpickle_Selector(__pyx_type, long __pyx_checksum, tuple __pyx_state): # <<<<<<<<<<<<<< + * cdef object __pyx_result + * __Pyx_CheckUnpickleChecksum(__pyx_checksum, 0xc5dfe7e, 0xad8d8ab, 0xc00154f, b'node, nodes') +*/ + __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_10selectolax_6parser_21__pyx_unpickle_Selector, 0, __pyx_mstate_global->__pyx_n_u_pyx_unpickle_Selector, NULL, __pyx_mstate_global->__pyx_n_u_selectolax_parser, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[79])); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5); + #endif + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_pyx_unpickle_Selector, __pyx_t_5) < (0)) __PYX_ERR(1, 4, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "selectolax/parser.pyx":2 + * + * from cpython.bool cimport bool # <<<<<<<<<<<<<< + * from cpython.exc cimport PyErr_SetObject + * +*/ + __pyx_t_5 = __Pyx_PyDict_NewPresized(16); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_Node_attributes___get___line_159, __pyx_mstate_global->__pyx_kp_u_Get_all_attributes_that_belong_t) < (0)) __PYX_ERR(0, 2, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_Node_attrs___get___line_195, __pyx_mstate_global->__pyx_kp_u_A_dict_like_object_that_is_simil) < (0)) __PYX_ERR(0, 2, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_Node_decompose_line_496, __pyx_mstate_global->__pyx_kp_u_Remove_a_Node_from_the_tree_Para) < (0)) __PYX_ERR(0, 2, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_Node_unwrap_line_521, __pyx_mstate_global->__pyx_kp_u_Replace_node_with_whatever_is_in) < (0)) __PYX_ERR(0, 2, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_Node_strip_tags_line_558, __pyx_mstate_global->__pyx_kp_u_Remove_specified_tags_from_the_H) < (0)) __PYX_ERR(0, 2, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_Node_unwrap_tags_line_584, __pyx_mstate_global->__pyx_kp_u_Unwraps_specified_tags_from_the) < (0)) __PYX_ERR(0, 2, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_Node_replace_with_line_611, __pyx_mstate_global->__pyx_kp_u_Replace_current_Node_with_specif) < (0)) __PYX_ERR(0, 2, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_Node_insert_before_line_652, __pyx_mstate_global->__pyx_kp_u_Insert_a_node_before_the_curren) < (0)) __PYX_ERR(0, 2, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_Node_insert_after_line_692, __pyx_mstate_global->__pyx_kp_u_Insert_a_node_after_the_current) < (0)) __PYX_ERR(0, 2, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_Node_insert_child_line_732, __pyx_mstate_global->__pyx_kp_u_Insert_a_node_inside_at_the_end) < (0)) __PYX_ERR(0, 2, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_Node_unwrap_tags_line_772, __pyx_mstate_global->__pyx_kp_u_Unwraps_specified_tags_from_the_2) < (0)) __PYX_ERR(0, 2, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_Node_raw_value___get___line_799, __pyx_mstate_global->__pyx_kp_u_Return_the_raw_unparsed_original) < (0)) __PYX_ERR(0, 2, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_Node_merge_text_nodes_line_925, __pyx_mstate_global->__pyx_kp_u_Iterates_over_all_text_nodes_and) < (0)) __PYX_ERR(0, 2, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_HTMLParser_strip_tags_line_235, __pyx_mstate_global->__pyx_kp_u_Remove_specified_tags_from_the_n) < (0)) __PYX_ERR(0, 2, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_HTMLParser_unwrap_tags_line_277, __pyx_mstate_global->__pyx_kp_u_Unwraps_specified_tags_from_the_3) < (0)) __PYX_ERR(0, 2, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_HTMLParser_merge_text_nodes_line, __pyx_mstate_global->__pyx_kp_u_Iterates_over_all_text_nodes_and) < (0)) __PYX_ERR(0, 2, __pyx_L1_error) + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_test, __pyx_t_5) < (0)) __PYX_ERR(0, 2, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /*--- Wrapped vars code ---*/ + + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + if (__pyx_m) { + if (__pyx_mstate->__pyx_d && stringtab_initialized) { + __Pyx_AddTraceback("init selectolax.parser", __pyx_clineno, __pyx_lineno, __pyx_filename); + } + #if !CYTHON_USE_MODULE_STATE + Py_CLEAR(__pyx_m); + #else + Py_DECREF(__pyx_m); + if (pystate_addmodule_run) { + PyObject *tp, *value, *tb; + PyErr_Fetch(&tp, &value, &tb); + PyState_RemoveModule(&__pyx_moduledef); + PyErr_Restore(tp, value, tb); + } + #endif + } else if (!PyErr_Occurred()) { + PyErr_SetString(PyExc_ImportError, "init selectolax.parser"); + } + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + #if CYTHON_PEP489_MULTI_PHASE_INIT + return (__pyx_m != NULL) ? 0 : -1; + #else + return __pyx_m; + #endif +} +/* #### Code section: pystring_table ### */ +/* #### Code section: cached_builtins ### */ + +static int __Pyx_InitCachedBuiltins(__pyx_mstatetype *__pyx_mstate) { + CYTHON_UNUSED_VAR(__pyx_mstate); + __pyx_builtin___import__ = __Pyx_GetBuiltinName(__pyx_mstate->__pyx_n_u_import); if (!__pyx_builtin___import__) __PYX_ERR(1, 15, __pyx_L1_error) + + /* Cached unbound methods */ + __pyx_mstate->__pyx_umethod_PyDict_Type_get.type = (PyObject*)&PyDict_Type; + __pyx_mstate->__pyx_umethod_PyDict_Type_get.method_name = &__pyx_mstate->__pyx_n_u_get; + __pyx_mstate->__pyx_umethod_PyDict_Type_items.type = (PyObject*)&PyDict_Type; + __pyx_mstate->__pyx_umethod_PyDict_Type_items.method_name = &__pyx_mstate->__pyx_n_u_items; + __pyx_mstate->__pyx_umethod_PyDict_Type_pop.type = (PyObject*)&PyDict_Type; + __pyx_mstate->__pyx_umethod_PyDict_Type_pop.method_name = &__pyx_mstate->__pyx_n_u_pop; + __pyx_mstate->__pyx_umethod_PyDict_Type_values.type = (PyObject*)&PyDict_Type; + __pyx_mstate->__pyx_umethod_PyDict_Type_values.method_name = &__pyx_mstate->__pyx_n_u_values; + __pyx_mstate->__pyx_umethod_PyBytes_Type__encode.type = (PyObject*)(&PyBytes_Type); + __pyx_mstate->__pyx_umethod_PyBytes_Type__encode.method_name = &__pyx_mstate->__pyx_n_u_encode; + __pyx_mstate->__pyx_umethod_PyUnicode_Type__strip.type = (PyObject*)(&PyUnicode_Type); + __pyx_mstate->__pyx_umethod_PyUnicode_Type__strip.method_name = &__pyx_mstate->__pyx_n_u_strip; + return 0; + __pyx_L1_error:; + return -1; +} +/* #### Code section: cached_constants ### */ + +static int __Pyx_InitCachedConstants(__pyx_mstatetype *__pyx_mstate) { + __Pyx_RefNannyDeclarations + CYTHON_UNUSED_VAR(__pyx_mstate); + __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0); + + /* "(tree fragment)":11 + * use_setstate = True + * else: + * use_setstate = ('self.node is not None or self.nodes is not None',) # <<<<<<<<<<<<<< + * if use_setstate: + * return __pyx_unpickle_Selector, (type(self), 0xc5dfe7e, None), state +*/ + __pyx_mstate_global->__pyx_tuple[0] = PyTuple_Pack(1, __pyx_mstate_global->__pyx_kp_u_self_node_is_not_None_or_self_no); if (unlikely(!__pyx_mstate_global->__pyx_tuple[0])) __PYX_ERR(1, 11, __pyx_L1_error) + __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[0]); + __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[0]); + + /* "selectolax/modest/selection.pxi":105 + * return bool(self.nodes) + * + * def text_contains(self, str text, bool deep=True, str separator='', bool strip=False): # <<<<<<<<<<<<<< + * """Filter all current matches given text.""" + * nodes = [] +*/ + __pyx_mstate_global->__pyx_tuple[1] = PyTuple_Pack(3, Py_True, __pyx_mstate_global->__pyx_kp_u_, Py_False); if (unlikely(!__pyx_mstate_global->__pyx_tuple[1])) __PYX_ERR(2, 105, __pyx_L1_error) + __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[1]); + __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[1]); + + /* "selectolax/modest/selection.pxi":126 + * return False + * + * def attribute_longer_than(self, str attribute, int length, str start = None): # <<<<<<<<<<<<<< + * """Filter all current matches by attribute length. + * +*/ + __pyx_mstate_global->__pyx_tuple[2] = PyTuple_Pack(1, Py_None); if (unlikely(!__pyx_mstate_global->__pyx_tuple[2])) __PYX_ERR(2, 126, __pyx_L1_error) + __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[2]); + __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[2]); + + /* "selectolax/modest/node.pxi":116 + * return default + * + * def sget(self, key, default=""): # <<<<<<<<<<<<<< + * """Same as get, but returns empty strings instead of None values for empty attributes.""" + * try: +*/ + __pyx_mstate_global->__pyx_tuple[3] = PyTuple_Pack(1, __pyx_mstate_global->__pyx_kp_u_); if (unlikely(!__pyx_mstate_global->__pyx_tuple[3])) __PYX_ERR(3, 116, __pyx_L1_error) + __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[3]); + __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[3]); + + /* "selectolax/modest/node.pxi":329 + * return text + * + * def iter(self, include_text=False): # <<<<<<<<<<<<<< + * """Iterate over nodes on the current level. + * +*/ + __pyx_mstate_global->__pyx_tuple[4] = PyTuple_Pack(1, Py_False); if (unlikely(!__pyx_mstate_global->__pyx_tuple[4])) __PYX_ERR(3, 329, __pyx_L1_error) + __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[4]); + __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[4]); + + /* "selectolax/modest/node.pxi":482 + * return find_matches(self.parser, self.node, (selector, )) + * + * def css_first(self, str query, default=None, bool strict=False): # <<<<<<<<<<<<<< + * """Evaluate CSS selector against current node and its child nodes.""" + * results = self.css(query) +*/ + __pyx_mstate_global->__pyx_tuple[5] = PyTuple_Pack(2, Py_None, Py_False); if (unlikely(!__pyx_mstate_global->__pyx_tuple[5])) __PYX_ERR(3, 482, __pyx_L1_error) + __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[5]); + __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[5]); + + /* "selectolax/modest/node.pxi":496 + * return default + * + * def decompose(self, bool recursive=True): # <<<<<<<<<<<<<< + * """Remove a Node from the tree. + * +*/ + __pyx_mstate_global->__pyx_tuple[6] = PyTuple_Pack(1, Py_True); if (unlikely(!__pyx_mstate_global->__pyx_tuple[6])) __PYX_ERR(3, 496, __pyx_L1_error) + __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[6]); + __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[6]); + + /* "selectolax/utils.pxi":6 + * + * ParserCls = Union[Type["HTMLParser"], Type["LexborHTMLParser"]] + * Parser = Union["HTMLParser", "LexborHTMLParser"] # <<<<<<<<<<<<<< + * FRAGMENT = Literal[ + * "document", +*/ + __pyx_mstate_global->__pyx_tuple[7] = PyTuple_Pack(2, __pyx_mstate_global->__pyx_n_u_HTMLParser, __pyx_mstate_global->__pyx_n_u_LexborHTMLParser); if (unlikely(!__pyx_mstate_global->__pyx_tuple[7])) __PYX_ERR(4, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[7]); + __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[7]); + + /* "selectolax/utils.pxi":7 + * ParserCls = Union[Type["HTMLParser"], Type["LexborHTMLParser"]] + * Parser = Union["HTMLParser", "LexborHTMLParser"] + * FRAGMENT = Literal[ # <<<<<<<<<<<<<< + * "document", + * "fragment", +*/ + __pyx_mstate_global->__pyx_tuple[8] = PyTuple_Pack(8, __pyx_mstate_global->__pyx_n_u_document, __pyx_mstate_global->__pyx_n_u_fragment, __pyx_mstate_global->__pyx_n_u_head_2, __pyx_mstate_global->__pyx_n_u_body_2, __pyx_mstate_global->__pyx_n_u_head_and_body, __pyx_mstate_global->__pyx_n_u_document_no_head, __pyx_mstate_global->__pyx_n_u_document_no_body, __pyx_mstate_global->__pyx_n_u_document_no_head_no_body); if (unlikely(!__pyx_mstate_global->__pyx_tuple[8])) __PYX_ERR(4, 7, __pyx_L1_error) + __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[8]); + __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[8]); + + /* "selectolax/utils.pxi":19 + * + * + * def preprocess_input(html, decode_errors='ignore'): # <<<<<<<<<<<<<< + * if isinstance(html, (str, unicode)): + * bytes_html = html.encode('UTF-8', errors=decode_errors) +*/ + __pyx_mstate_global->__pyx_tuple[9] = PyTuple_Pack(1, ((PyObject*)__pyx_mstate_global->__pyx_n_u_ignore)); if (unlikely(!__pyx_mstate_global->__pyx_tuple[9])) __PYX_ERR(4, 19, __pyx_L1_error) + __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[9]); + __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[9]); + #if CYTHON_IMMORTAL_CONSTANTS + { + PyObject **table = __pyx_mstate->__pyx_tuple; + for (Py_ssize_t i=0; i<10; ++i) { + #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING + Py_SET_REFCNT(table[i], _Py_IMMORTAL_REFCNT_LOCAL); + #else + Py_SET_REFCNT(table[i], _Py_IMMORTAL_INITIAL_REFCNT); + #endif + } + } + #endif + __Pyx_RefNannyFinishContext(); + return 0; + __pyx_L1_error:; + __Pyx_RefNannyFinishContext(); + return -1; +} +/* #### Code section: init_constants ### */ + +static int __Pyx_InitConstants(__pyx_mstatetype *__pyx_mstate) { + CYTHON_UNUSED_VAR(__pyx_mstate); + { + const struct { const unsigned int length: 11; } index[] = {{0},{746},{21},{37},{30},{24},{30},{25},{41},{34},{38},{31},{48},{18},{35},{396},{21},{38},{32},{33},{1185},{1189},{1142},{687},{27},{34},{29},{25},{28},{29},{28},{32},{33},{28},{9},{26},{22},{27},{27},{179},{16},{314},{588},{590},{1141},{516},{443},{24},{20},{64},{5},{643},{642},{542},{1},{1},{1},{3},{1},{1},{8},{16},{13},{5},{7},{6},{2},{5},{5},{23},{43},{9},{7},{50},{26},{31},{26},{30},{17},{21},{20},{98},{66},{61},{47},{14},{8},{5},{11},{20},{29},{31},{15},{17},{16},{16},{18},{11},{29},{31},{8},{10},{28},{30},{26},{16},{14},{20},{22},{27},{30},{26},{17},{21},{15},{15},{22},{10},{16},{7},{19},{4},{22},{24},{20},{8},{14},{16},{14},{17},{23},{24},{22},{18},{24},{25},{23},{17},{23},{24},{22},{9},{21},{11},{17},{23},{24},{22},{24},{20},{11},{15},{9},{13},{11},{16},{8},{6},{9},{20},{8},{26},{28},{34},{26},{30},{12},{22},{23},{25},{4},{5},{25},{15},{17},{4},{18},{4},{9},{21},{10},{5},{4},{4},{5},{10},{9},{6},{8},{17},{18},{5},{5},{3},{10},{7},{10},{3},{9},{11},{12},{1},{6},{13},{9},{4},{7},{8},{12},{15},{8},{5},{13},{17},{8},{16},{16},{24},{7},{6},{8},{6},{12},{10},{4},{8},{9},{8},{8},{15},{3},{17},{11},{12},{8},{8},{8},{4},{13},{4},{8},{7},{9},{1},{6},{10},{12},{12},{18},{19},{17},{13},{19},{20},{18},{12},{18},{19},{17},{13},{5},{8},{4},{3},{4},{6},{11},{9},{6},{8},{5},{6},{16},{10},{6},{9},{8},{4},{7},{4},{9},{4},{8},{9},{5},{14},{10},{3},{16},{11},{14},{12},{11},{10},{23},{14},{12},{7},{5},{2},{9},{10},{17},{13},{6},{12},{18},{19},{17},{6},{7},{6},{12},{10},{4},{6},{19},{15},{6},{17},{8},{9},{4},{4},{9},{12},{10},{12},{19},{4},{3},{9},{5},{5},{5},{6},{3},{6},{5},{10},{3},{4},{8},{4},{13},{10},{5},{8},{4},{6},{7},{6},{11},{6},{13},{12},{3},{5},{6},{80},{49},{239},{30},{18},{108},{69},{36},{35},{141},{38},{2},{162},{19},{19},{19},{5},{173},{126},{114},{121},{271},{163},{58},{14},{144},{144},{30},{18},{16},{18},{16},{18},{15},{11},{19},{108},{98},{9},{275},{78},{95},{39},{5},{44},{11},{55},{30},{25},{48},{264}}; + #if (CYTHON_COMPRESS_STRINGS) == 2 /* compression: bz2 (5898 bytes) */ +const char* const cstring = "BZh91AY&SY\326V\237B\000\013f\177\377\377\377\377\377\377\377\377\377\277\377\377\377\377\377\377\377@@@@@@@@@@@@@\000@\000`\032m\336\217\252\257\250{\262\355\240\257\263]9\366\342\373\343\356}7\267\236\332\353g\315\333V\024\032\006\263m%E\354\032\350\006D\323Z\364\341\013\242\250j\333\321\321>\257\220\000 \004\242j\005\032\2436\241\244\365=\240M1O\004\3150\243i\033M2z5\002#\312<)\262\231\251\221\351\241\032m5=4\214h4\217$\t$\023\0044D2\025\037\210\232M\352\236P\336TmG\223H\320\000\032\036\241\240=@\320\000\006\2004h<\240\006\214\202\205OTd44\323'\242\001\35265\032\233S\323H\320\000\000\320=@\032\006\020\003@4\032\037\2524\002MH\2012&\246E=O\325<\246\312mO\0224\332\032#CG\224\r\000\320\000\000\017P4\0002h\001\240\320\021JS\3257\225<\325<\322O)\223\322h\017P\365\000\003\324d\032\000\000\000\000\000\000\000\000\000\000\221 \202i\240\002i\243@@\231S\3625O\304\247\232I\352dz\236\246\232\036S@4\000\320\017P\000\003M\251\243F\213IKgy\321\275k\354\033k\214\252K7\036\336\317\002\362U\235\374\273ez\034N\177G\225\016\362\026\276\377\200|P9\020\321\375\264A \274h\024\375 @\213v\024M;\02353MQc\245\034v\261\211\352\303\376\240\245\344\233\024B\314\340\024\313\014\265\022Td\221\"\2501\n\304*\023\001C<\364T\2376\0233L\023\177\250RVZ\367n\204\27468\35648\357\212\301R+\024c\021Q\010\240(,`\242*\301\024E^@\003<&s\204&\010\014\004\237\372\3677\235\223t\360\364=\3200\224\177T\203-*C\275E\001\345\313\"g\371\244\332>\213\020\227]?\004\252\274\224\202\215B\030\"\256_=\221\222\345!\214\"\023\021\226\260\005l[\261x\005cR\222\2437\237\266\335\246M\220#)\000\247\364\207\323\001 b\274\331\263\207a=\3006\236\363\243\262\\\234\362\031\210\306\013\001D\021`(\260\221dP_\251\035LN\341U\202\273\003\267!_]\367\245z\251^\337b\352\354\276\314q\017\177!\245Z@\274d\321\252\224(0F\"3w\223\254\312\000d\232\022A!\201O\276f\243b8l\330\270R$\226\243w!\241\022/\0340\342,\342\274K\\D\307\006\327m\307Sv\273R\025\003\003\211*\314\3225\022\230\314\315wf\214-\021T\320K\201\227\0061$\257\24247hi5p\241r\252w\206\027""\2417\261\212\306\013U\005%\203\203\251\233\025\215\n\031\343|\264Y\212\270\344\206kZ\317v\000\3523\362t\246;!R\227\322\262\226\302\256f~\006y\"{\211*`\242\022\307Gab\265,\243\335\313\002O\261>\332\022\004\2173\224I\ts\271v\217\331\264\241\226\231\037|-\206>\242L\344\206\021\0341\3331\350\221\320Zu\024\377\016\215\376U\200\001_\276\020\020&\032\n4\032\032\316%\356\224K+\006\037d!ZJ\003\310\313\372\256\240\341\316\277\344\375.Fs\217\027x\036\033\203zH\264\305\034\303\202^\263\321\027\262d\331\352\353\340\257\341\343\212\365\347\231\224,\032\203%\240\333\005x\252`f\021\007:\272B\256i\326\340\260\342\014N\212\201\366\230B\266\360i\351\267o(\245\201A\254-e\343'\016\244\224\010n\276\023\030\207&\322\341j@\325\312,1\\\256\026\036\245\274\017\211\344\354J\365VRan\341\271{\305\351\330\354|\310\262\031\341w\005ToC\r\327\316\226*\002\350\2742\346T\226\020\217\271\230$\366\316V\205d\331\357uC\305\277Ui\356E\323\353&u\t\231'\330\342'\242e&\233\255\3454Q\223+'\253\332b\321S 2`\341\346\206\332\272\023s\320[\363B-\006\006\na\301\315\030\347\235BA\020\202vy\271\321\301\030Q\321WS\202%il\300\220\364\330\304\024\341\307\304\027\270T\313\"\323)\\Mj\256\214\220\360x9L%\267Fxd\033\361\026\020qs\306\023\204X\2100h\347\277\337BRpJK\0109\3014\361I\302\270P\026\271\321\021\023\3170\2401g\027&\225\232\002\000\311\304\"\311\340\346C\360\343\274\361\257 vr\337\004\024\017\030Mm\r\354\006\3434u&14\350\005\240\030~*\002v\0202g\251\025$\242P\034\261\272(\221{L\312\220\006b9Y\023\223~\305\267\254}\310\356\351\361)\252\010\330\227q\010\371R\250z\226\373\341I\212\001\363\025B\261R \037\334\337\277f\312\375p\334\265\2076\325\272\325\271U*\346\3423\3014M\034\234Y\006\306*P_Az\177\n\245s\357r\364\247k\256\322a\357T\201tu\363\376\t\247\323\364\337\261S\340iQ4\324\020\337\211\235\222\316\276\366\220\231\336e\030\311\023^3\305\277\036\001\341\002\252\304A\211kU\035\303\n\274\303\255\343L\247,\365j\017\215CRi\220*@\262\204\240l\324\003/\335\331\307\016~\221\034zK\022\271\244\256\301%\251\355\335)\260\255""\n\372)d\211E\020\025\037y\335\327\366\274\233-2\007\226WfJ\2002(\024UJ\303\n\274\341\320?\343\241\023!\231}+w{\310\276I\021\315\335\212G\355&_%\3613s+\256\224H\022\013\210{\2706\271m\207Ip\255\322\365A:\007]\256\023\007/\246\027h\230l\367\3433\016t\232\243\023\332-Y\347X\346*&\002/\263\313\236\261\251<8\375\243ME\274l\034\"\366\232 \204\305\262 \330\326\371,\262EBa\371A#\235\314+\371:\376\210\2140\004\300]\305?\016\324Y\265\250\2623\255\022{ @\340\027A;\366\245\351\324\246\014\0251m\220Q\311\220\322\014\272`\221a\357Xb\271P\270O\370_\261~kc\245\303D,\252\347\205\255\025ES\314p\326B\311J\233\363\363\240A\334\214BR!\220\320=r\361\372|\177\243\370\237\017\006zxZ\035\306\253\216\345\203\0208\231\273Q1\255L\235\311\344$\265\002\005\323\311s0\034(\300!\357 \345\3619C\275\337\374\376\204\001\372E\241\261\333\302\371\n\327\360\036t\271$\202@I-\003x\315\246yn\251\243o\265\225\212\233\370 \026\306\211\352Yk\264\215\330\305IJJ]W\3606\315\244\311\373\2427\340\313\202\272^\267Y\236g\227\345\346Y\276[\222\202d\216\335ERY\223\177\3507\307@\371m{q\236NE\002\034\345\027\367dTp\345T\021\223I^\002B\206\007\2404\372d\032\230?\320\371\274<(\271\223E\177\005=4nb\200\204\244\333M\221@&\231 t\373\360\260\232=\372\206\206* `c\033\267.\252*\032R\250\353\230\033(\340\326\315A\241k\005\031o5\375p\306mD$c\267\310 \371\202@\266{FA\014\002\r\277\014\200\336c\177H\330\33051hW#Q$\022\274d\3052\212j\220\016\312\017\004$\034\350H\"`\034\365@\201>\307\016\031\300+}V\201OC/\233\217\013\327p\227\201L\027i\002\352\373\026\377\234\203\026\0205\006\237}\303i4\230M\207,\247\007\016h\272\240\034m\232%\232L\243\\e\361\036\367Vg\346\317\320o\024\265\005\366bg\302\371\235v\005DU\025\326j\371\2648\374\\~OK=\022\\\235<-\346\213]M?\266\372\212*;~\317\255\270\003\344\330$sS\221\231\220\272\231${\014\215z\333\315\305\307Q\303\007\216v\331\316@\263Ko\243H\362\364g\306\023Y=\326\236\210\226R\201\327\341\3473'\006\025\372\302)\221F\365P\254]\245-d\252\330\275\360\302\022J\340\251\346\237fJo\272\003\223\000\3453\277""\227A\312!\323G\352\022rd:\264\3504Z?6+\262qRM)1\337\277\325\003\324\005p\216\253\327\257_\211zk}\251\356I\321#\264B63\2436\373S\255\242\351\356<\376\020\352\010IHSS\363\016\211\246\345\335\304\224\361%\212\316\246\252T\275\r\276\216\373K0\003!b\362\375\365\233_u\264\0316\207\265\314\355\351n_\213=\263\214vf\363\363\375\321$\262\313W\253\302\006\037\215\347\n\022\017uw\220\305\374\355\r\003\241rrqm\351\354p#\271\241\335\321\331\346\031\234\371/oU\r\351\334\"(\251F\241\275\352l\016\006\3562M\374\3165Z5\310\335x\034\016\250\026-\331u\232\372\351%\302\210\210I$\222t\226\357,\206\344\004\220\032\332\033oe\200\354\362\351\363\022I$\221\270gI\334\232\252\252\377f\3174\306\274i\331\201\223;\224>\035\203.\355\354}G\260\233\331/*\247\216M\020\250p\243\320\300\247\037?\253\343\343\334\323\027\333\314\345\253]z\273[\025=\007vtd\354\324\025\343\030:\002\245\037\302\311\034\327\034\221\351\021\205`\221uh\203\323\014\330Id\022\250\300\245 `\021\004\205'B\026%LiWM\260\272\256\034\350\027\2424\203z\035\223\226r\"\320\034\315\367\350@\312H\274\231\321\n6\016\222\213\217A\001\362\260\271\001Z\256\2334u\013EB\271A\331\352\235D\217m\376\373\334Y\t\225\030\004\256\230\005\3058Pw\346\372\003\221'\260\262\017\307\211z4B\332\211O\027\311~&\201\343\212K\302\313:&\021\2078\304\230`d\220\2766\216\206#\346\306\214>{\220}\026\242\003RhSIiU,\032\032\026\364\227n\240,\177U&\004\2063*&\226y%\325\322\031z\021\335\225\215\343\210\005Q\253\"\222\357\004>\034\027\302\221\241T'v\022y\250\202\250I\241\203h\030\r\0144cJ\245UDZ\300g5\323\n{\272Va\031\314DLWN\213M\236\251\267cJ\017<\363\0218:\r\\)\272\207\277\022\312\211g\003\341\366y\310\003\330/Tz\344z\351\014hsl\210\233\217\236S4\352\365r;\215\242\\\r\3601\017\277\320\204z\003\200/p\017(\034]\240\355K\321\342\272@^\00056/\310\002\336\007\r\333\275\336 \272\235n\016\253\203)\277XzX\\\213\267\010\220'R-\270\rp\223\204\315\242\030\022/J.\2525\003\234\374c\264-\373\021Bv\3419\2221p\024\0214\354\354\t\312\242V\005\001\025jWn\206!7\262\010\250;\312\244\000x""\006\260\322\341\231\027Pr\370\263S[\310\301}\3472i\212\022P\006\004\024 R\206\212`\245D)\303C`\350\230\252\244\224C\361S\257\036\267\344\255\035\350\275\202\030\300H\336\320\247v\265\246k\310S.D\215\2308K\2703+\245qc\004uG\027\234\246\341\324\325\005\225\216\300\326\210\355\005&$\230\230\232l\020l\315\301\354\272,\270\324#\t0A\327\316\227:\353\003\277\227\035\330\204(Y\245\344r\352\314\001\347V#8\225R\255\210\006\312K@xTdv9^\216\345KB\226)\311\205p\213&Js\254\312S\265\205\014`\026db3\201\202s\307\031\003\254\374\225\034\252\257w\025Z\211\254N\005\227\2232]\n\323\021\204N$\260D\"\312@K\300P\020E\214\200\"\211\024\3375\3136\371i\245u\354K\201\256K\246\016\027\332Z\365\233\215\325UU`eY\232\\)oFbq\024\206\005\305u\026\022\266\"~\032d\226\026\265EO\370\2041I\004\027\215!M\300V\234\320\020\224\344\210MF\2022\024EV{\202W\216\362\022j:\\(\037\224\222g\t\226\006N;\234\334\260\t\347H\211\020\347\220\224\000\376PW\342\265\3540\203\025\221\007Pl\001\246\354\ra\247x@\261\323J\3319\320Y\021\230\275\030\003`\335\256\245\211\340Q\n\371\243\005\240IRB\217\221\246\267\220\013\212E\037Z\025\307\245Zi[\001\317G\r\325!\206\341A\006@\031\2367\326rI(\2416\347\265\262i\346\013\245$7\025\014\t\315\027\260W\344Sc\222\006\3027A\250%=\371J\302!\355\200\242\272\001\246\371\347\300\036\020\036\017@\223+H]\211uX\033-km\367\274\3178\215~\2543PH\371XU\2447bg2\353:\303\256\357\255\301\013|E\273R\320\220Q-|\336Z\335\250\003\302gAr\023\r\3215y\201AaC\304$\352L+\337\362\034U\233P\306\240\023!\362C$&\345\231PIZ&\327\214\210(q\016]\247C\273E\277W\003\332&{\202\241L\212\rYX\211\037\034H\027\321n\331m\262\277\312V\344\004@\260\005:\0149\207\300\304\007[`\337A\370[\306\036ue\313\247'\312\027\344D\n\t$\332\005\222\003{\227R\204#zk\304b\013\323\2332\0322\330%0\335_\313\352\320k.\346Xl\014\2410\362\343\316\000v\206\377\374d\233\300\271\264\364\256\305\036\321\\\235i\271+\013f\255;*\264\335\273\277\302\002\315\333>@3\313r\326\0130\270\251 \307U\322\266\021-\332\310p\314\310\n\032B\334c5%.:\346\245<\003c\303*!u""a\213\347.\372\207\254l\243\rZS\030\031!\246D\3314\20139\000*\261\032CXO\304\211\346\027\231\r^\022C\274\203\034\316\342\313\243rA\202\316\002\020\266*5\373\274\335=;:\320\215;\010\221,\t\206!\317\270\037\267\263\020\3310\2036k\217\037\267\260\02720b;\032ZY9\370\022\317$\211\003\0046\271\tK\233\025P(\353@\314\003\004\301\201\240\363\356\313}2\254\254\022\244\236\235\361>n!\241%!#8\341}\276\320\r]\271\326`\271\207\330\014\310\3260\200\204l\300\024\031^\221,\202\235\267\004\213\217\253\026 z\300\204\327\236\020\241Q\204\344\222\323s\343\207\306{\3130\252\\\362\342\230\233\202\360[\246j\252m\321\304\271#\266,-i\020\263\210\014\300\205\332\022\245\342^\003-\251+`&\204x\312\342Vhh\030Q\025\2109H\222&\004\321H\002`\311!C\203t\245B e\345\252\216uo>xG+n+J\022p\250\267\013\010\005\340.\205\026%g\346\357\343l@\310V1\322P0\240\314\027\207z\320\327\034a\362s\003htU\222Ty\253^z\246\351\216\214\200\312\314BF\200g00s\350\304\314h\006\217ZbH\301\031\321@\201h\020\302`\376v{\223J\200\032\323\261/\017F\225\314\320\274\000\326\206\"\343\337\200E\000\221\214(\241\322\307\254H\231\244\220t+\221\210\n\"\301U\214X\214EP`\253\005\202\221V(\007;\001\242\20240\016\270-c]\271\000\362TF\n\2118\372\316\347\311+\200\325\250\231\030\205\344gQ\344\004\230Y\334\030\231\254a\226d; \315O\"q\003+\0041\257gk@\302\013(\223\006PM\201\277<<\310\204\320\304\321]:#\262/_P\234\003&\236\364\261\014\003vS\001\0262\351p\325x\225\t@\244t\035\307\244\244\333db\252\033\226@\302n\354[Z!\232\0077d\304\223\257\237Bi'l5\007\3467\242\214\250\264\342\211Q'\244\236\252\344P)\010\311Ah\221\341\034\010\240\312\001[\216\020\344\342J\362\274\333p\264\356\276S\345\2622W\211-\n\2655Q\313@\365\264\353=\206\232$X(\263\320\360\332\020\330\225u!@\225\204\034*\205p\351\023\247 \305d`r\202BX\022\312(\240\213\000R\014E\005%\002\202P\302\203\257\nB\362\036\304\021%\nky\257\353=H]-\027\300X\332\200]\205\241\300\265_E\270\r\345@>& <\212t\304X\271>\344\234\221G\3607\177W]\263w\351\251\241\244\324\204\004r\277,\322\233H\322$\344\022`\032""\254a\202\330*\2423\225.\252V\241T\235\260\020\334I\246D!\001\021\023\010\326\001J\010\262\0200yd,^\355\371\372\236\024\260rFI\260D\355\213\030\311\255\024\2639\265\356|\003\010Z\302\332\245C\313IA\263\3069\363\\\230\024\025\214\266pC\023\332\203`\261\213@3*\244\215\342j\300\361D\243\263\260\332\2234\3124\224p\263\210^\006<\371\325\267g\277\247e]\265 N\256/b\222\237:\214.\202\255\0311^C\310t\031Ytam\322\2707\313\322m\221\006\202x\351 {\336\324+z7\261b]\315T\236g\037\325\261`\354\241\317\003\256h@Z\222\n\223\014\204\332]\2162ES\2414sa\244\034\366\001\267H\0226\264\253\020\013}\341\254\336\211!\016\220\223\2000dm\326\022b$\246\204\3011\333\247\034\350\347\310`\320|\026\335R.\027\310\003\233\026\226\265\213\246\351w\343\301~\022%\202\372\033\366\367\027\225\333\355\023\260t9q\214%8r\203\316@\336\022&\033\202\232 .WT%\027H:\216*\266\005\226I\337P\245\250) \223\tRRDm\020&\267\342\230\200MA\n\204V\003\246\016\007\003\004\003M \006\205hD\351\021\005\2044\354\302\313\235\222@\026\005l\345\340\213\202\200^\251I\345U\372\237!\220\336}\336\264\275\304H\021\002\354!(\353k[Vz\362\210\250HA\275\232s\010\214\3335\332IX\325H\006\"\000\336\035\322-\224\354S\007\271F\361]\270\243D\230\232\366\270v$_pZ\310\010\210`\010\n1\3733\241p\343\357\031\016\210\301.\275\244\234Y4\346\327hf0[\"\240\320#T\347 tX\210'+\256l\326\313\364\254\334H/\033\275\036\250BX\336B\300\310\005\300LB\024\023!\212\027\316\250R\273\032k\325a\004F\000\033,\360\000&\010\332\301G\244\353\032\254\261f`\325\023\276\032\r\316W\350H\370\330\232i\211\210\322\016\210e\311f\212\261A]\246&\274\\F\343p\rQ\200\275\n\206}K%v\000\222@ \230\327W*iH\261\214l\332\035\024\2748K\257T\303\240\026\337\256\270\344\247@\214\005\3610\214y\253\233\2054\213\006\200>\247\225`N\300\347\016\035\002\020\265/\000`\021\25773\252\310\233\023p\332OA\255(\235\2358\006\035\001m\315\246\260G\225\000\315\",\235'[Bs\006\360\205\265:\302h\007\354\016\326\311=\362J\r\250\363\022\t\315$\213-\316\270\006\367\301v\206\362I\016\037`%\372\307\3462\206\244{""\006SD\341\023\306F\375\311|\022\026\0242\210;2\256\301'\202Xt\232\2325\204k\353% \345?y{M\334\334\257\270,\342Y\343\373\177d\2174\035\22171\277P{\365Vm\352\004\372\276\211\351u\207\321D\004\214A\003\323\020\237\304\357[\301hz!'\200g\357cTJ\210T\345\252D\265@\375<\266\223\251\313#H`(\2374+@\230\2343\304l~CI\307\311\275\010\240b\300\340=g}w.\\\303\225\300U\206\251\205IE\037y\226\037\"3\3705=2\274\020\370\242z_c\305\272\344Bp\207\006\006\252}\021\242\263\352\256\367\n\014\256_\317\222~\";\332\355u5\236\367\227:""\312\206\233T\263Lt\360\377U\177N\342?\325\243\234\231k\274\227Z\001$A\204\237/o\227\271\333\3767\303?\013\2023\201\301\317K[4-J\030\017\013\014\361\226K\034[\006\2630\365V\r\212v\022!\344M@\232\207gB\215J\204\316\364C=5\304\315X,$o\034\t\267\245\205[sH\241\234E\325[B\031`\330Z\336k\2032Q\010<\210C\000\204Jy\006\215\222\013\020YX\016\222)\3041`\266\204\013\034b\271\336\244\206'r\263f\240#\016\325P\261\272F\\\223h\377'+L\007\315ID\3502\000\302\202dY\014c\232\235\266p\r%\362\021\213\232\215\n\031\000\02691\031d]\205\307e&0K\226\nL\211\213\2373\364\227\244\002x1\n\r\2033\352\001\2613\214\341\353\250\003\306\316Z\324\\7\314U\220k\257\3200q\2117\r\260\204n\330\202\014\336\306Z\311\213\267Ge\263Ep\"\206\000\321s\350\255\334C\371$\223\332\340|$\3152pR\266\264\n\272\251:\362\201,\003e|\222PK\221`\026ydZ\315\347\004\313\224gR)\030\323\236I\335\223\n\266Q\250\007\204\270\257`\343\244OAi\262\335(_{\221\326~\010\013\"T\220c\320\r\206K\203_\245\207\207\023\332\216.\033JiT^Q5\245E\010{\263\342\374Z\213g1\321(J,pg\335\313\036VA\322\233,Q\037\351\322\257\205\\j\226R\211\320>\323\227\260}kcEF\373\256\325p\213\314\262\367\262\262\030\322WD\306[-N}\342f\217\252\020\261\351p,+z\327y7)\275\267\031\352\322\367 \250e\006\241\214\375\245\030*\242\322g\212\372\273Q\024_\374?\200\243B*z\213\376\177[\216\n\355\376q$\025\327\362\335\355\3606\222\002\035U\270\014I69\002\003\3474\262\303\177)\322\nU\374LZ\177m\322j\355y\270\221y\227\355\t\224\324\374\205\334b(\315\241\237\376\330\254\351\323'J\334\331\242b\205?\204{P\344[\310\007\233\354\325+n\316\217b\237V3n\316\222Z\263\316\035;<\0024\300\215h\247\\?\253\260\310\251h\343h5\327\320>_B\310k\206E\\\300$yE0\000\366fl\223\257\322^\276h\261lQ\243\223\003\022\002\377L\211\266\350\r_\302#E5\342\253:\343\307\017\264'\215\320A])!\245\200\273\301.4\227\342\274\361\2516\366\263\323\205\331i\030\326\320s\263w\301n\374\316X\321\247/\025\260\016\030\202\356>j\273O-\"\373\351\241g)>P\352E\213\2068\277!\205\261\302\314\242Yd#\202\305\000*\222m\2303)!5\302mDU\215\276\251\273\002\250\214t\226\022\316\n\213q\263\343A\260R\224i\215y1\342R\306\234X\226\212\026\247=\256\017Z\035\210\323\022L\226\007\220D\370\267~""j\321|\2700\364\251fP\233@\275\350\201\301\017\3000\214XjN\227\210w\351\010\353A\374\374dT\024!s\022\305\360\234bl\342\372p\275E\242\362\372\004\257T\230l\344\013\210h^1~\375*\257\210\356f\302\272\253\327\277\213\325\205\251{X9\021\257$_\016\353&\257\204u{\234\311\\\377.\324\306\224\326E\n\323M\352N^\017\347b\262\202\006\213&R$\013\007\036\033\033\236\246@}\336\232\245F\2113\235\211\211k\274;G_\255\364\273\261hi\254\303\265\361\275\252&'q.6\343\2040W\262W\000[\340\360\n\323\324eb\026\255Dk+\363\223\027@\333\303\371\207\027\307\257\215\223\037\233\014#\242%X\305eY\303hi\341y\335rQ\325lU\027\354R\001\326Q\270\223\215\361\001E\371H\007\033\t\303b<=JK:\204n\t!.Bw\200I:|\271\241\276$\232\272\005\201\227\215\376P\240\343A\355\031w\373\027\217\010\332\220\246\220\345\262\246\221'i\004\334\367M\254`\260\242i\341pS\302\262ah#`\214\254T\324l\001\321\235\310\215\030\362.(\006\026\003\321\304\263*X\204\003\206`\361\th\r\203K\334'\211\212\301\261\321\314!WA\264\222\001*vzx*\326\024\377\203\246\r\347\000\367\216\034\313\222\345\254\002\223\325\254\212+\204\340\250[\220\323\366\207\230\221\344L\t\232j\3311\233\335\203\002\004\t\325\203\3358+\215\376\245\315\237\236\306\005\230\235^a\222\002a\203_0\306C\230!\223\343\236 \274\301\230\362=\3234JR5e\260\266g\340\315/\221\240\346P\202\246\230\021\236\245Q0n\023-\273\2441\272\341\013\nw\033\371\002^\324,\332\036\357t\203\345\227\231\302o\251\324jz'D\313\326`\217!\374iA\354M\031\036\237)\327\366\235\346\362\316X\322?d\233\023\201\021\242\006\246\363\031M\177\0274Qp\214\355\222\371\236\257\0010\036]\377\214\255s\030\272\033o\333Q\263\317;\347\277\305q_4m\373\343N\373\376\256\207z1\353\276uW\235~\217C\275w8\304\253\221\216^'\233uH\214),\340N\270vP\246Z\037\026\315x\\\021\371\353\362\346\210D\251\355\333B\022\357\212\354\360\376\336\262\347~\231\263\362\264:K\304<}I\235\035l\2719N\372Gz8\334T\014\265j\3312\030\264\010{\357\031\031p\303\002\306+\325,7\022\261\n\035j\300\306\022\266r\312\010m+RQ\243\247\320\224)\214\375t\307i\213\026t\264""\351K\005\3421\374\022d\250\250\023\000A\234a\2529\025\266\035\303\215/\037\244f \314\361p\245\225F\210k-\372$\253q\360b\350Z\351\035\276\212h$0\265=$\302\005C\325{\257\372[8\343\302\331\215+s7@\260\215w\3637Z\237\224\205_\357\354\355\320\311\003\222Z\237\226dwA\263\371\2309\373F\372M\335\352\363\2577ZN7\253\334\020\260\010;\"\035\374P\220i\037I\261\023\227\275^\256b\2102\004\374\276\005\303{#\223\240\240\253\352\205\242]o#\341\031\225M\261\252`\0322\243\2206t^\341\3530\274\264x\353\342\265%\002\277\365^\373\247'\004\013:\240A\225\244Z\344\346\216\004\321\022xd\305P\370\007>R\241\240\251\341w<\365,\270\311\375\377\330\r\331\237\313Y{\036\361I\302\212\311\262x\376L\3141}I\232}\007\006k\204\340\330\321\035\020\331HZJ\277\330\253q\023\221\275\003k\375\337\321\325\247\202\340g\004~F\340\237\215\300\020\200\377\277\361w'+\360#r.\307\372\313\241\017S\257wF\0375\376\020\364\325\277;\377\3474\024\316\276\226\024\005\022|X\272wO\000\022\320\303o\0061a\341\033p.U\t?\332\326\215\372B\212\"x@\0216\036\242\240\024)\360\323\227\277\246\372R\2254\250\225\361\263aQ\014\363\023M\332\270\224\307\214\316\276D\t`aCM\326\360\022|K\326\262\272\010\252\266\256\031\035\245J+^;\312\323\256H\3630\017+\2246\"\205\321\236Y\312\321\030~9=B\217YUW\230\311\357k\251\226%\222[5r&\231\037-\324\234\356!\177-\020n\342\361\344\271\240\312\253\370\342\216\3044\314\377\241\022h\267\365Q\235U~p\201\237\330\342qM\275\302\212\326L\363S\030\313(\2322\233\235\276X\004Sdg\213v\366\3425\261\361\027\t\221\333QQ\004\230\230\242\030/\013q\"\223^\315\225\300\240\370Ex\353j|\013\024y$\014F\013VY)\366l5u\240L\330\232{\374\270\3669}\3446\251X\2742\241\330\255G\231\333\367\347\037,6\270%\362\245pBX\254.!+R+\351%\021A\027~\350\036\251\241c\245\350\263e\305\237\370f\242\251,)\247\371\275[\364\003h:\342\024-S\266D\200\021~\316\237\250mYCvj\371%u\244\260\371\0214h\375q\365\235""\333\017~x4?\227y<\177\217m,\033\021\303\336C@I\332\375\314S\262\231x\347\301\303\245E\361\361\235\237\347\361\250\214\336\322%L\037\226&\214\316\337\207\306\315Me\360\\\273r\223\326\237\242\255\352\357\203\022oH\023\005\317\260\344E\262\230vB-\312\301z/\222\357V\223%I\271ayRpX\321,\231v\211\211\202\244\\^\234\024\313\313\033Rk\263o\306X\370\276\026\003z\342\325m\242 2|\25482|\254\274>|\013\370F\312\233\312\010\262M\257\210\351\021\265\3467\246\364\022\343E\344\345o\363{\340\332\233T\216N\376;\247Y\242\370\260\264\001\377n\252\262->\000y\217X\266\306%{\023\316\233\330\246^\207\200\255\207|\021w\342\300\260\370f9\326\202,\037N\327j\324\274\261\037\000\274~\037\357\217\177\355\322B\335\2608\241\353b\251\300\226t\264\313^\2726y]Bc\310q,\311*\351\262j\214\312\206i@L\326\241\031\210\252\213k-\267\316\365\364\235\003f:\230n\022p\350G\304h\313\357 \030\3104\252,\025$Y\265K\220\243\340;u\374\326\000#\013>\302\250\242\252\213\370\331\010[\206\331\022\005\3237?\262f\311\206\026\346'H\004*\334\323\353\010\304\005\314\255N\036\221y\206\357b\310%\024\344\017\270\320\257\310L\023\022\211:\245\340\207\"ab\025^\254h\026\255\300\035\000\213\301\300\nDdQ\304?\370\021\371E1\304\206\036\360@9\216\2305\245\034&\215\212!\027\243WPE\244\2341\362\214\231a\363s\255\035(\201\30542d\230\212\205\016\310\225\317\342\321\236\2501=g\257\360{4.&L\370\017\231\001\225\300\317\022XM\033Q\314\026uY\304\013\314Y\264\360xPa\033\260\000\030\270\353\255\260\213\330X\026\272\345\210\023W$\213\364\302+\352IWXb\272G\275%]\341\r\260\0203-P\220\256&\253'^*\337\277A\266\002\306\007R\203%\227\265\242\302\371+J\314INoA\347\t&\2171p\013\376nE\335I\326\216\022n\222\253[\320t\202\241E\025\0310t&\236;\205\371\031\376B\356\204\351\323\352:\372\236\306\262v\270\224t\213\206\340\217\"`\031<\202#:\017\313\241*\315\\\017\225\206R\324\300\236y2\273\016\266\266\020\302\242\210\207\210\365_\266\216?\033\266^\353Y\373\207\004NW\224I\"\343 \346i;\270\247U0\n\005\010\005\374xQ\244\363\307B\t\247\037\216\001\231=\030\200\311""\253V1\317\237\270*\374>\304\020\336r\210\341]Q\247\364\230\325\031\227\027\277\264q\337\203\340[+J\032\227\276V\004H0\013/%\223\325\337\2257vB\311\\\267V\3006\360\026\303a4\222%\203`\213\370\227\010}|J\241\215M:\0217\325\334Jm\001\371=\232\3224\014;\014\205\311@\331\024#yx\334k\363\324\270\342V\301B\"\250}\317F\361 4?\334\205\364\025\211\022b\213\210\201\211:*c\312\034B\364\367\225\360c\362v\374oDa\256\374S*\212\327\215\240\r\377\360\"\212\330P\244\231\306\202I\003\231`\014c\275\026\325\321\363\3717RE}U7\326u\036\326#\301\275XP`p\240&1\317l\211\027\301CM{\010 \264\241\340\273\212\240\375rp\371\346\326\017\301\343\305\235\216n\247m\247\243k\363{\347\246\333V\355\032p\333\335y\257\307;\357\275\364\177.\277\332\272\260\r\205G7\177s{\335%\357\254\267P\355\356s\236\270\031w\241\n}\3568p9\272\271\026\264\177\025|5V\376z\253m7\265\257\263ks|\323v\306\252]\307\341\007\252mg\302\335\357.\270\314\273\352\237*\337\250d\2672\361\016\335\233k;\035C~\273?_\356\331\3518\004\335\327pL\354\327\341\375\303\033\253v\237\014N\016\373=\3769?W\006\r\216;\223\356Y\320\240W\360\016x9\177\301_\255\364V\236le\252\275_\2727<\t4\177V9\2645\266\323u\3149\357X\356 \366\030w6\\\313\033\254\366\302\300\027\241K\266\014\315\373\235uW\366z\252\003\347\274[~\272\334S\376\266\262\270\325\0173\036\370\332}\345\017\372W\313_V\376\275\265V\355\356wl\027\344\241\230W\336\2407\036\244\257\005\327\356l\367TA\333)g\321\355s\025\357\234\247\372k\345\266*\2652\335\036T\321\225B\373|\351\216\355\236\301\231\242a\240\023Y\347\232;\346\336\362\006y\355i\254\335p\326\334\003\256\024\354\203\222j\373\027\277\377\346\3648i\220\016b\372`\230~\257\315;\211\212V;\301\266\316-\230\032\224/\354t\034\331T\235\265``\252\222\252\334\334j\333\352\333\222\252\355G7-g\320!1%\347\277\034hzd\363W\267-8\371\032 b\320\353AeH\340)\260\346\023/\003cv\001\026\306`\251\316\2255P\350p\260\3644x\372S\360S.\310\255\004+\352\016\350\367\212\300\321\335\203\367\353\216\354\366\320=\016\264\344\016\272S\036!h\254\332{\271\334V>U\231\000{\365\354\364^\000\334\374V\356+K\345\265\235\256\363\336\202'qeF\366\232\323o\240\3647~\346w\370\177\367\032Ni\312YpV\000\344\223\376 \232\256\003\326\252\007V98\216\322\024X\265\323\301\314\017\333\200l\001jNx\033\376\253\312\331\312BE\333\206\346\265&\320\341\014\330\n\006\251\036\006\333\272_\270k$\242\006\376\347A\006\246\373\"x\361\237V}\020\360\303\356Xp\372\207m3XX\n\226~\014~\204\305~\021\354;\351\366\354v\357\333\337\025\034:\r\276\373\2437\366{f\007\326\3555\000\360\246\327\351\367\372O\312\231\346\242\247\270\036\347<\234\3371\276d\240\3131\347\033\356\374\2076\257lJ\260\210\217\234F\351N\307%\037\360p\302Q\3344X\007\020GK\330\207,\321\027\364\241\333)\345\021\360\377\373\301\302b\260\010\n\312\201\254\004\nC\247\277A+\205\234\201O\223\316Y\350\025_\264/\301\374k\336A\377<\270Y;\270o\367\t'\207.FH\361\006w8\020A\343\335s\\\337\242s\333\275\002\276\0038\000\037N\241\343z\240\355\341\335\216Z\375-\367\002\021L\027\312.\302\302\302\302uy\231\035\232\321\034\030\277\373\264{\317o\253vG\330\347k7D\010\032\277\267\274T\201y\236\002\035A90\325\000\027\275\036\234\370\326\277\342\303\330\275\316]Z\235\353\376\315\362\027e\030\376$N\263\333\351\000\017\003\3517\275\375 \212\371c!(\317\2709\004\037\266\370\"\350\037\365\245\232?\022\024\216\202\305\037c\307\232\343\301\210\275\365\021\277\361\317\372\013-F\034@g\016G\304\211\276\364\026a:\203\341\210_\325\034\213F\204E\212\215\330\355t\242\003\035w\256\272\307]b\330\261\332\300`\345\323\356\004\301\274\003\206\3746\377L\371\177\266\236\007\013b \376R%\022x]\006\233\200\305\\\342\217\327\356U\257\037\001\320G8\234\366\326x\351\244\227\366{\"\245`\216\356}G\216V\273\372\234\027\000|\270<\003\303\014\004\303\231\255\343[\231\010\242\2179#H\206;\207\217\300\272\004\003\337 Y\200o \236Vy\364kj\330q48\312k{\313?\3034;\020\307\327\375\177\303\302v\3648_!\374\007\334\2038\346a\\\255\266V?;\341\212\035\330\327\331\347d\252\r\206\307\325\354\352q\372a\272\247\200\330n\372\373\375\237\200W\323\030\331\242\341\035\234\nQq\327\221\034\2243\365\261|\007\362\000\203\375\260\350o\245\271z\323\275\330\255\245>'\335\001b\240\367\346\337w\247\3357\350\0039\315\031\304*\344\004\277\226\273*\031\236\005\201[@\370\335\327\353dv\017\002\027o\316\200\325!\264s\336\205d'\030@@\366@\377\023q\346!7\204\225?\206\351f?\206\001\214=P\207k\025\034\035\206\264b\001\374\351\331\326\027[\234\331\032%m\240\254?Si\333\275\320\322y\246 \322\347\274\237|H\313\300\177\351g\247\243\023i\362\034\222\022\337/\240y`\002\022\337z\034\355\246+\002\344\002\355\n\026~o\333i\207""\360\035\010\227\313\207*7\266V\203\205G\325v\314\303\257QV\007z\276\306\371V;\200\226\375\033e\035\266\024\200\240\261\240=\355\255\355\nH2\200BtIPz\247\226u\005(\262\212\272\034\347.^\0338\330\327\037\364Ck\224kCO\236\177C4m?\304\363\260\307@D\020\\\374\001\330f@\210\003E\017\036\202\\\025\361\350/\207a]\300H\224h\265xFH\\\007O\354\364z1\0378\274C[\207v\347\016\305]\202Z'\007\3220eR\215\022\025\014\021/\341ml\177,V6\030>\035\336\374)\362DkH\367\204\263\377\005\243\333\351n"; + PyObject *data = __Pyx_DecompressString(cstring, 5747, 1); + if (unlikely(!data)) __PYX_ERR(0, 2, __pyx_L1_error) + const char* const bytes = __Pyx_PyBytes_AsString(data); + #if !CYTHON_ASSUME_SAFE_MACROS + if (likely(bytes)); else { Py_DECREF(data); __PYX_ERR(0, 2, __pyx_L1_error) } + #endif + #else /* compression: none (19762 bytes) */ +const char* const bytes = "A dict-like object that is similar to the ``attributes`` property, but operates directly on the Node data.\n\n .. warning:: Use ``attributes`` instead, if you don't want to modify Node attributes.\n\n Returns\n -------\n attributes : Attributes mapping object.\n\n Examples\n --------\n\n >>> tree = HTMLParser(\"
\")\n >>> node = tree.css_first('div')\n >>> node.attrs\n
\n >>> node.attrs['id']\n 'a'\n >>> node.attrs['foo'] = 'bar'\n >>> del node.attrs['id']\n >>> node.attributes\n {'foo': 'bar'}\n >>> node.attrs['id'] = 'new_id'\n >>> node.html\n '
'\n Bad CSS Selectors: %sCan't allocate memory for a new node.Can't init MyCSS Entry object.Can't init MyCSS object.Can't init MyHTML Tree object.Can't init MyHTML object.Can't obtain raw value for non-text node.Can't parse HTML (status code: %d)Expected 1 match, but found %s matchesExpected a string, but %s foundExpected a string or Node instance, but %s foundExpected at least Failed to allocate memory for stackGet all attributes that belong to the current node.\n\n The value of empty attributes is None.\n\n Returns\n -------\n attributes : dictionary of all attributes.\n\n Examples\n --------\n\n >>> tree = HTMLParser(\"
\")\n >>> node = tree.css_first('div')\n >>> node.attributes\n {'data': None, 'id': 'my_id'}\n HTMLParser.merge_text_nodes (line 360)HTMLParser.strip_tags (line 235)HTMLParser.unwrap_tags (line 277)\n Insert a node after the current Node.\n\n Parameters\n ----------\n value : str, bytes or Node\n The text or Node instance to insert after the Node.\n When a text string is passed, it's treated as text. All HTML tags will ""be escaped.\n Convert and pass the ``Node`` object when you want to work with HTML.\n Does not clone the ``Node`` object.\n All future changes to the passed ``Node`` object will also be taken into account.\n\n Examples\n --------\n\n >>> tree = HTMLParser('
Get \"Laptop\"
')\n >>> img = tree.css_first('img')\n >>> img.insert_after(img.attributes.get('alt', ''))\n >>> tree.body.child.html\n '
Get \"Laptop\"Laptop
'\n\n >>> html_parser = HTMLParser('
Get
')\n >>> html_parser2 = HTMLParser('
Test
')\n >>> img_node = html_parser.css_first('img')\n >>> img_node.insert_after(html_parser2.body.child)\n
Get
Test
'\n \n Insert a node before the current Node.\n\n Parameters\n ----------\n value : str, bytes or Node\n The text or Node instance to insert before the Node.\n When a text string is passed, it's treated as text. All HTML tags will be escaped.\n Convert and pass the ``Node`` object when you want to work with HTML.\n Does not clone the ``Node`` object.\n All future changes to the passed ``Node`` object will also be taken into account.\n\n Examples\n --------\n\n >>> tree = HTMLParser('
Get \"Laptop\"
')\n >>> img = tree.css_first('img')\n >>> img.insert_before(img.attributes.get('alt', ''))\n >>> tree.body.child.html\n '
Get Laptop\"Laptop\"
'\n\n >>> html_parser = HTMLParser('
Get
')\n >>> html_parser2 = HTMLParser('
Test
')\n >>> img_node = html_parser.css""_first('img')\n >>> img_node.insert_before(html_parser2.body.child)\n
Get
Test
'\n \n Insert a node inside (at the end of) the current Node.\n\n Parameters\n ----------\n value : str, bytes or Node\n The text or Node instance to insert inside the Node.\n When a text string is passed, it's treated as text. All HTML tags will be escaped.\n Convert and pass the ``Node`` object when you want to work with HTML.\n Does not clone the ``Node`` object.\n All future changes to the passed ``Node`` object will also be taken into account.\n\n Examples\n --------\n\n >>> tree = HTMLParser('
Get
')\n >>> div = tree.css_first('div')\n >>> div.insert_child('Laptop')\n >>> tree.body.child.html\n '
Get Laptop
'\n\n >>> html_parser = HTMLParser('
Get
Laptop
')\n >>> html_parser2 = HTMLParser('
Test
')\n >>> span_node = html_parser.css_first('span')\n >>> span_node.insert_child(html_parser2.body.child)\n
Get
Laptop
Test
'\n Iterates over all text nodes and merges all text nodes that are close to each other.\n\n This is useful for text extraction.\n Use it when you need to strip HTML tags and merge \"dangling\" text.\n\n Examples\n --------\n\n >>> tree = HTMLParser(\"

John

Doe

\")\n >>> node = tree.css_first('div')\n >>> tree.unwrap_tags([\"strong\"])\n >>> tree.text(deep=True, separator=\" \", strip=True)\n \"J ohn Doe\" # Text extraction produces an extra space because the strong tag was removed.\n >>> node.merge_text_nodes()\n >>> tree.""text(deep=True, separator=\" \", strip=True)\n \"John Doe\"\n No matching signature foundNode.attributes.__get__ (line 159)Node.attrs.__get__ (line 195)Node.decompose (line 496)Node.insert_after (line 692)Node.insert_before (line 652)Node.insert_child (line 732)Node.merge_text_nodes (line 925)Node.raw_value.__get__ (line 799)Node.replace_with (line 611)Node.strip_tags (line 558)Node.unwrap (line 521)Node.unwrap_tags (line 584)Node.unwrap_tags (line 772)Note that Cython is deliberately stricter than PEP-484 and rejects subclasses of builtin types. If you need to pass subclasses then set the 'annotation_typing' directive to False.Optional[Parser]Remove a Node from the tree.\n\n Parameters\n ----------\n recursive : bool, default True\n Whenever to delete all its child nodes\n\n Examples\n --------\n\n >>> tree = HTMLParser(html)\n >>> for tag in tree.css('script'):\n >>> tag.decompose()\n\n Remove specified tags from the HTML tree.\n\n Parameters\n ----------\n tags : list\n List of tags to remove.\n recursive : bool, default True\n Whenever to delete all its child nodes\n\n Examples\n --------\n\n >>> tree = HTMLParser('
Hello world!
')\n >>> tags = ['head', 'style', 'script', 'xmp', 'iframe', 'noembed', 'noframes']\n >>> tree.strip_tags(tags)\n >>> tree.html\n '
Hello world!
'\n\n Remove specified tags from the node.\n\n Parameters\n ----------\n tags : list of str\n List of tags to remove.\n recursive : bool, default True\n Whenever to delete all its child nodes\n\n Examples\n --------\n\n >>> tree = HTMLParser('
Hello world!
')""\n >>> tags = ['head', 'style', 'script', 'xmp', 'iframe', 'noembed', 'noframes']\n >>> tree.strip_tags(tags)\n >>> tree.html\n '
Hello world!
'\n\n Replace current Node with specified value.\n\n Parameters\n ----------\n value : str, bytes or Node\n The text or Node instance to replace the Node with.\n When a text string is passed, it's treated as text. All HTML tags will be escaped.\n Convert and pass the ``Node`` object when you want to work with HTML.\n Does not clone the ``Node`` object.\n All future changes to the passed ``Node`` object will also be taken into account.\n\n Examples\n --------\n\n >>> tree = HTMLParser('
Get \"Laptop\"
')\n >>> img = tree.css_first('img')\n >>> img.replace_with(img.attributes.get('alt', ''))\n >>> tree.body.child.html\n '
Get Laptop
'\n\n >>> html_parser = HTMLParser('
Get
')\n >>> html_parser2 = HTMLParser('
Test
')\n >>> img_node = html_parser.css_first('img')\n >>> img_node.replace_with(html_parser2.body.child)\n '
Get
Test
'\n Replace node with whatever is inside this node.\n\n Parameters\n ----------\n delete_empty : bool, default False\n Whenever to delete empty tags.\n\n Examples\n --------\n\n >>> tree = HTMLParser(\"
Hello world!
\")\n >>> tree.css_first('i').unwrap()\n >>> tree.html\n '
Hello world!
'\n\n Note: by default, empty tags are ignored, set \"delete_empty\" to \"True\" to change this.\n Return the raw (unparsed, original) value of a node.\n\n Cur""rently, works on text nodes only.\n\n Returns\n -------\n\n raw_value : bytes\n\n Examples\n --------\n\n >>> html_parser = HTMLParser('
<test>
')\n >>> selector = html_parser.css_first('div')\n >>> selector.child.html\n '<test>'\n >>> selector.child.raw_value\n b'<test>'\n Tag name cannot be emptyTag name is too longThe specified HTML input is too large to be processed (%d bytes)UTF-8Unwraps specified tags from the HTML tree.\n\n Works the same as the ``unwrap`` method, but applied to a list of tags.\n\n Parameters\n ----------\n tags : list\n List of tags to remove.\n delete_empty : bool, default False\n Whenever to delete empty tags.\n\n Examples\n --------\n\n >>> tree = HTMLParser(\"
Hello world!
\")\n >>> tree.body.unwrap_tags(['i','a'])\n >>> tree.body.html\n '
Hello world!
'\n\n Note: by default, empty tags are ignored, set \"delete_empty\" to \"True\" to change this.\n Unwraps specified tags from the HTML tree.\n\n Works the same as th ``unwrap`` method, but applied to a list of tags.\n\n Parameters\n ----------\n tags : list\n List of tags to remove.\n delete_empty : bool, default False\n Whenever to delete empty tags.\n\n Examples\n --------\n\n >>> tree = HTMLParser(\"
Hello world!
\")\n >>> tree.body.unwrap_tags(['i','a'])\n >>> tree.body.html\n '
Hello world!
'\n\n Note: by default, empty tags are ignored, set \"delete_empty\" to \"True\" to change this.\n Unwraps specified tags from the HTML tree.\n\n Works the same as th `unwrap` method, but applied to a list of tags.\n\n Parameters\n "" ----------\n tags : list\n List of tags to remove.\n delete_empty : bool, default False\n If True, removes empty tags.\n\n Examples\n --------\n\n >>> tree = HTMLParser(\"
Hello world!
\")\n >>> tree.head.unwrap_tags(['i','a'])\n >>> tree.head.html\n '
Hello world!
'\n .?<>|add_note arguments, got attributes, no default __reduce__ due to non-trivial __cinit__selectolax/modest/node.pxiselectolax/modest/selection.pxiselectolax/modest/util.pxiselectolax/modest/../utils.pxiselectolax.parserselectolax/parser.pyxselectolax/utils.pxiself.css_entry,self.finder,self.selectors_list cannot be converted to a Python object for picklingself.html_tree cannot be converted to a Python object for picklingself.node cannot be converted to a Python object for picklingself.node is not None or self.nodes is not None<-undef>utf-8_Attributes_Attributes.__iter___Attributes.__reduce_cython___Attributes.__setstate_cython___Attributes.get_Attributes.items_Attributes.keys_Attributes.sget_Attributes.valuesCSSSelectorCSSSelector.__reduce_cython__CSSSelector.__setstate_cython__FRAGMENTHTMLParserHTMLParser.__reduce_cython__HTMLParser.__setstate_cython__HTMLParser.any_css_matchesHTMLParser.cloneHTMLParser.cssHTMLParser.css_firstHTMLParser.css_matchesHTMLParser.merge_text_nodesHTMLParser.script_srcs_containHTMLParser.scripts_containHTMLParser.selectHTMLParser.strip_tagsHTMLParser.tagsHTMLParser.textHTMLParser.unwrap_tagsIGNORECASELexborHTMLParserLiteralMAX_HTML_INPUT_SIZENodeNode.__reduce_cython__Node.__setstate_cython__Node.any_css_matchesNode.cssNode.css_firstNode.css_matchesNode.decomposeNode.insert_afterNode.insert_after[Node]Node.insert_after[bytes]Node.insert_after[str]Node.insert_beforeNode.insert_before[Node]Node.insert_before""[bytes]Node.insert_before[str]Node.insert_childNode.insert_child[Node]Node.insert_child[bytes]Node.insert_child[str]Node.iterNode.merge_text_nodesNode.removeNode.replace_withNode.replace_with[Node]Node.replace_with[bytes]Node.replace_with[str]Node.script_srcs_containNode.scripts_containNode.selectNode.strip_tagsNode.textNode.traverseNode.unwrapNode.unwrap_tagsOptionalParserParserCls__Pyx_PyDict_NextRefSelectorSelector.__reduce_cython__Selector.__setstate_cython__Selector.any_attribute_longer_thanSelector.any_text_containsSelector.attribute_longer_thanSelector.cssSelector.text_containsStack.__reduce_cython__Stack.__setstate_cython__TypeUnionany_attribute_longer_thanany_css_matchesany_text_containsargsasyncio.coroutinesattrattributeattribute_longer_thanattributesattrsbodyboolbytesbytes_htmlbytes_valc_textcapacity__class_getitem__cline_in_tracebackclonecloseclscollectioncompilecreate_tagcsscss_firstcss_matchescurrent_nodeddecodedecode_errorsdecomposedeepdefaultdefaultsdelete_emptydetect_encoding__dict___dictdo_create_tagdo_parse_fragmentdocumentdocument_no_bodydocument_no_headdocument_no_head_no_bodyelementencodeendswitherrorsfinal_lengthfinal_textfindfinditerfrag_typefragment__func___fused_sigindexgetget_fragment_type__getitem____getstate__has_bodyhas_headhas_htmlheadhead_and_bodyhtmlhtml_lenhtml_rehtml_treeiignore__import__include_textinsert_afterinsert_after[Node]insert_after[bytes]insert_after[str]insert_beforeinsert_before[Node]insert_before[bytes]insert_before[str]insert_childinsert_child[Node]insert_child[bytes]insert_child[str]_is_coroutineitems__iter__iterkeykeyskwargsleft_lengthleft_textlength__main__matchmem_idmerge_text_nodes__module__myhtmln_results__name__name__new__nextnext_nodenodenode_srcnode_textnodesparse_fragmentparser_clspoppreprocess_inputpybyte_name__pyx_checksum__pyx_result__pyx_state__pyx_type__pyx_unpickle_Selector__pyx_vtable____qualname__queriesqueryrerecursive__reduce____reduce_cython____reduce_ex__removereplace_withreplace_with[Node]replac""e_with[bytes]replace_with[str]resultresultsreturnright_lengthright_textrootscriptscript_srcs_containscripts_containselectselectolax.parserselectorselectorsselfsendseparator__set_name__setdefault__setstate____setstate_cython__sgetsrcsrc_nodesstackstartstatestatusstrstrictstripstrip_tagstagtags__test__texttext_containstext_nodesthrowtraversetreetypingunknownunwrapunwrap_tagsupdateuse_meta_tagsuse_setstatevalvaluevalues\320\0040\3200D\300O\320ST\340\010\020\220\001\340\010\014\210H\220D\230\001\330\014\030\230\004\230E\240\021\240%\240v\250Z\260{\300&\310\001\330\014\017\210z\230\024\230U\240#\240Q\330\020\025\220W\230A\230Q\330\010\014\210I\220Q\330\010\017\210q\320\004\035\320\0351\260\037\300\001\360\"\000\t\014\2104\210t\2201\330\014\023\2201\330\010\017\210t\2205\230\005\230Q\230e\2406\250\032\260;\270f\300A\320\004\035\320\0351\260\037\300\001\360\"\000\t\020\210q\340\010(\250\004\250E\260\021\340\010\013\2104\210q\330\014\017\210t\2205\230\010\240\003\2401\330\020\031\320\031)\250\021\250$\250g\260Q\330\020\023\2207\230#\230Q\330\024 \240\006\240g\250Q\250k\270\024\270W\300A\330\024\033\230;\240a\240v\250[\270\013\3001\340\014\022\220%\220s\230!\330\020\023\2204\220x\230s\240!\330\024\035\320\035-\250Q\250f\260A\330\024\027\220w\230c\240\021\330\030$\240F\250'\260\021\260+\270T\300\027\310\001\330\030\037\230{\250!\2506\260\033\270K\300q\330\020\027\220t\2301\340\014\023\2204\220{\240!\2404\320'8\3208I\310\021\330\010\013\210:\220T\230\025\230d\240$\240i\250q\260\001\330\014\023\2204\220r\230\021\230#\230Q\230a\330\010\017\210q\320\004\033\2301\360\036\000\t\020\210t\2201\330\010\013\2101\330\014\023\2208\2301\230F\240!\320\004\033\2301\360\034\000\t\020\210x\220q\230\006\230a\320\000\033\2301\330\004\007\200z\220\021\220'\230\025\230a\330\010\025\220T\230\027\240\001\240\031\250'\260\021\330\t\023\2201\220F\230!\330\010\025\220Q\340\010\016\210i\220q\320\030:\270\"\270D\300\001\300\025\300a\330\004\017\210s\220!\2201\330\004\007\200y\220\002\220!\330\010\016""\210j\230\001\320\031\\\320\\^\320^_\330\004\013\210<\220q\320\0044\3204H\310\017\320WX\340\010\020\220\001\340\010\014\210H\220D\230\001\330\014\030\230\004\230E\240\021\240%\240v\250Z\260{\300&\310\001\330\014\017\210z\230\024\230U\240#\240Q\330\020\027\220q\330\010\017\210q\320\0044\260A\360.\000\t\r\210G\2201\330\014\020\220\013\2304\230t\2401\240A\330\020\027\220w\230a\230q\320\0044\260G\2701\360(\000\t\014\2104\210v\220W\230A\330\014\020\220\005\220\\\240\021\240&\250\r\260Q\320\0045\260Q\360(\000\t0\250q\340\010!\240\021\340\010\014\210G\2201\330\014\032\230#\230W\240A\240Q\330\014\031\320\0311\260\021\260$\260l\300&\310\r\320UX\320XY\320Yg\320gh\320hi\340\014\017\210{\230#\230Q\330\020\021\340\014\017\210w\220c\230\021\330\020\021\340\014\020\220\005\220U\230!\230:\240Q\330\020\023\2201\330\0240\260\001\260\032\2705\300\001\300\021\340\024&\240a\240z\260\025\260a\260q\340\014%\240Q\240a\320\0045\260Q\360,\000\t\r\210G\2201\330\014\020\220\013\2304\230t\2401\240A\330\020\027\220z\240\021\240*\250A\200A\200A\3608\000\t\014\210:\220Q\220h\230e\2407\250!\330\014\030\230\010\240\001\240\021\330\014\023\320\023%\240Q\240d\250'\260\034\320=O\310q\330\014 \240\001\240\026\240x\250{\270#\270Q\270l\310!\330\014%\240Q\240d\250'\260\021\330\014\036\230a\230t\2401\330\r\027\220q\230\007\230q\330\014\023\320\023)\250\021\250$\250g\260\\\320AX\320X]\320]^\330\014%\240Q\240d\250'\260\021\330\014\036\230a\230t\2401\340\014\022\220)\2301\320\034O\310r\320QU\320UV\320V\\\320\\]\320\000\031\230\021\360\020\000\005\014\320\013\034\230A\230V\2401\200A\340\010\017\210|\2301\230D\240\t\250\024\250W\260A\200A\340\010\017\210|\2301\230D\240\t\250\024\250X\260Q\320\004$\240A\200A\360\022\000\t\014\2104\210q\330\014\022\220*\230A\230Q\330\010\013\2103\210a\210v\220R\220q\330\014\022\220*\230A\230Q\340\010/\250q\330\010\026\220d\230'\240\021\240!\330\010!\240\021\340\010\025\220Q\330\010\025\320\025-\250Q\250d\260,\270f\300M\320QT\320TU\320Uc\320cd\320de\340\010\013\210;\220c\230\021""\330\014\023\2201\340\010\013\2107\220#\220Q\330\014\020\220\005\220U\230!\230:\240Q\330\020\033\2304\230q\240\n\250%\250q\260\004\260A\330\020\026\220g\230Q\230a\340\010!\240\021\240!\340\010\017\210q\320\004$\240A\360$\000\t\014\2104\210u\220G\2303\230a\330\014\017\210q\330\020\"\240!\2404\240q\330\014\r\360\010\000\t\014\2104\210u\220F\230&\240\003\2401\330\014\033\2304\230u\240A\330\014\030\230\014\240A\340\014\022\220*\230C\230q\330\020\034\230L\250\001\330\020)\250\021\250$\250g\260Q\330\020\037\230q\340\014%\240Q\240d\250'\260\024\260U\270!\330\010\032\230!\2304\230q\200A\360\030\000\t\014\2104\210w\320\026+\2503\250a\330\014\024\220J\230a\230t\2409\250D\260\007\260q\330\014\031\230\021\330\014\020\220\010\230\001\330\020\034\230D\240\005\240Q\240e\2501\330\020\023\2201\330\024\036\230g\240Q\240a\330\014\020\220\007\320\027.\250a\340\010\014\210H\220D\230\007\230q\330\014\017\210v\220S\230\001\330\020\027\220q\330\010\017\210q\200A\360\024\000\t\014\2104\210w\320\026*\250#\250Q\330\014\024\220J\230a\230t\2409\250D\260\007\260q\330\014\030\230\001\330\014\020\220\010\230\001\330\020\033\2304\230v\240T\250\021\250!\330\020\023\2201\330\024\035\230W\240A\240Q\330\014\020\220\007\320\027-\250Q\340\010\014\210H\220D\230\007\230q\330\014\020\220\t\230\021\330\020\023\2206\230\023\230A\330\024\033\2301\330\010\017\210q\200A\360$\000\t\034\2305\240\001\240\021\330\0101\260\021\360\016\000\t\016\210U\220!\2204\220q\340\010\016\210d\220%\220y\240\001\330\014\033\2305\240\004\240A\340\014\020\220\014\230H\240C\320'8\270\004\270L\310\006\310a\330\024 \240\005\240X\250S\260\001\330\020\034\320\034,\250A\250\\\270\027\300\001\300\021\330\020\035\320\035-\250Q\250n\270A\270Q\330\020\023\220:\230T\240\021\330\024#\240<\250r\260\021\330\024!\240\030\250\026\250q\260\r\270R\270q\330\024\027\220{\240#\240Q\330\030\036\230k\250\021\250!\330\024\032\230!\230<\240{\260!\330\024\032\230!\230;\240b\250\r\260\\\300\035\310b\320PQ\330\024(\250\001\250\036\260~\300\\\320Q_\320_`\330""\024&\240a\240|\2601\330\024\030\230\001\230\021\340\014\017\210|\2306\240\027\250\001\330\020\025\220U\230!\230<\240q\340\014\017\210|\2307\240'\250\021\330\020\025\220U\230!\230<\240q\200A\360\020\000\016\017\330\014\025\220]\240!\330\014\025\220[\240\001\240\030\320)A\300\023\300A\340\010\013\2107\220#\220Q\330\014\022\220,\230a\230q\340\r\016\330\014\030\320\030*\250!\330\014\025\320\025%\240Q\240k\260\021\340\010\013\2107\220#\220Q\330\014\022\220,\230a\230q\340\010\017\320\017%\240Q\240k\260\024\260Z\270q\330\010\"\240!\2409\250K\260q\330\010\021\220\035\230a\340\010\030\230\n\240!\330\014\r\330\014\020\220\001\330\014\020\220\001\330\014\020\220\001\330\014\020\220\001\330\014\020\220\001\340\010\017\210q\200A\360\006\000\t\025\220A\330\010\014\210H\220D\230\001\330\014\033\2301\330\014\021\220\027\230\001\230\032\2401\240D\250\005\250Y\260l\300'\310\021\330\010\014\210I\220Q\330\010\017\210q\320\004$\240A\340\010\014\210J\220a\220q\200A\360:\000\t\014\210:\220Q\220h\230e\2407\250!\330\014\030\230\010\240\001\240\021\330\014\023\320\023%\240Q\240d\250'\260\034\320=O\310q\330\014 \240\001\240\026\240x\250{\270#\270Q\270l\310!\330\014$\240A\240T\250\027\260\001\330\r\027\220q\230\007\230q\330\014\023\320\023)\250\021\250$\250g\260\\\320AX\320X]\320]^\330\014$\240A\240T\250\027\260\001\340\014\022\220)\2301\320\034O\310r\320QU\320UV\320V\\\320\\]\200A\360:\000\t\014\210:\220Q\220h\230e\2407\250!\330\014\031\230\030\240\021\240!\330\014\023\320\023%\240Q\240d\250'\260\034\320=O\310q\330\014 \240\001\240\026\240x\250{\270#\270Q\270l\310!\330\014%\240Q\240d\250'\260\021\330\r\027\220q\230\007\230q\330\014\023\320\023)\250\021\250$\250g\260\\\320AX\320X]\320]^\330\014%\240Q\240d\250'\260\021\340\014\022\220)\2301\320\034O\310r\320QU\320UV\320V\\\320\\]\200A\360\"\000\t\036\230T\240\021\240$\240j\260\014\270A\330\010\017\210t\2204\220q\230\001\320\000\024\220A\360\n\000\005\014\210=\230\001\230\025\230a\200A\340\010\017\210t\2205\320\030(\250\001\250\021\200A\360""\026\000\t\020\210t\2205\320\030(\250\001\250\021\200A\360$\000\t\020\210t\2205\320\030)\250\021\200A\360\024\000\t\020\210t\2205\320\030,\250A\250Q\200A\330\010\017\210t\2205\230\014\240A\240Q\200A\330\010\017\210t\2209\230A\200A\340\010\017\210z\230\021\230$\230i\240t\2507\260!\320\004L\310A\360\n\000\t\021\220\001\330\010\014\210H\220D\230\001\330\014\023\2204\220{\240$\240a\240q\330\014\017\210u\220D\230\006\230d\240&\250\003\2501\330\020\027\220t\2301\230D\240\005\240Q\240g\250R\250s\260!\2601\330\014\017\210s\220!\2206\230\022\2301\330\020\025\220W\230A\230Q\330\010\014\210I\220Q\330\010\017\210q\320\004P\320PQ\360\n\000\t\033\230!\340\010\014\210H\220D\230\001\330\014\023\2204\220{\240$\240a\240q\330\014\017\210u\220D\230\006\230d\240&\250\003\2501\330\020\027\220t\2301\230D\240\005\240Q\240g\250R\250s\260!\2601\330\014\017\210s\220!\2206\230\022\2301\330\020\027\220q\330\010\017\210q\200\001\330\004\n\210+\220Q\320\000\034\320\034-\250Q\360\020\000\005\014\2104\210v\220Q\330\004\013\210:\220Q\220a\330\004\020\320\020!\240\021\240&\250\014\260A\340\004\007\200z\220\023\220A\330\010\017\210q\220\004\220A\330\004\007\200z\220\023\220A\330\010\014\210E\220\032\2301\230J\240a\330\010\017\210q\220\004\220A\330\004\007\200z\220\023\220A\330\010\014\210E\220\032\2301\230J\240a\330\010\017\210q\220\004\220A\330\004\007\200z\220\023\220A\330\010\014\210E\220\032\2301\230J\240a\330\010\014\210E\220\032\2301\230J\240a\330\010\017\210q\220\004\220A\330\t\023\2203\220a\330\010\014\210E\220\032\2301\230J\240a\330\010\017\210q\220\004\220A\330\t\023\2203\220a\330\010\014\210E\220\032\2301\230J\240a\330\010\017\210q\220\004\220A\330\t\023\2203\220a\330\010\017\210q\220\004\220G\2304\230q\340\010\017\210q\330\r\021\220\025\220e\2301\230M\250\021\330\r\021\220\025\220e\2301\230M\250\021\320\004+\320+=\270Q\340\010\022\220$\220d\230!\2301\330\010\024\220C\220q\230\001\340\010\013\210:\220R\220q\340\014\017\210w\220d\230*\240B\240a\330\020\026\220j\240\001\320!J\310\"\310A\340""\014\023\2207\230!\2301\340\010\017\210q\200\001\360\010\000\005\016\210T\220\027\230\004\230A\330\004\014\210G\2201\220F\230,\240a\330\004\007\200v\210W\220E\230\024\230Q\330\010\022\220!\330\010\027\220q\340\010\030\230\001\330\004\007\200q\330\010\017\320\017)\250\024\250Q\250g\260[\300\007\300q\340\010\017\320\017)\250\024\250Q\250g\260[\300\001\320\004+\250=\270\001\360&\000\t\036\230T\240\021\240$\240j\260\014\270A\330\010\017\210t\220:\230Q\230g\240Y\250a\320\004 \240\001\320\004 \240\001\340\010\t\330\014\022\220$\220a\220q\330\014\017\210t\2203\220a\330\020\026\220a\330\014\023\2201\330\017\020\330\014\023\2201\200\001\330\004&\240a\240v\250Q\200\001\340\004\037\230q\320 0\260\013\270;\300k\320QR\330\004\023\2208\2308\2401\240A\330\004\007\200|\2207\230!\330\010*\250!\250;\260n\300A\330\004\013\2101\320\004'\240q\360 \000\t\014\2101\330\014(\250\001\250\024\250Q\340\014\036\230a\230t\2401\320\004\037\230q\330\010\t\330\014\023\2204\220q\230\001\330\017\020\330\014\023\2201\320\000\027\320\027(\250\001\330\004\007\200t\2101\330\010\016\210j\230\001\230\021\330\004\013\320\013\034\230A\230S\240\001\240\027\250\001\250\030\260\033\270A\270Q\200\001\330\n\013\330\020\021\330\004\n\210!\330\005\006\330\004\007\200t\2101\330\010\017\210z\230\021\230!\340\013\014\330\004\016\210b\220\010\230\001\320\0315\260R\260q\340\004\017\210q\330\004\017\210q\330\004\017\210q\330\004\010\210\t\220\027\230\t\240\021\240!\330\010\013\2105\220\001\220\023\220C\220q\330\014\027\220q\330\r\022\220!\2203\220c\230\021\330\014\027\220q\330\r\022\220!\2203\220c\230\021\330\014\027\220q\340\010\013\2109\220D\230\t\240\024\240Q\330\014\r\340\004\007\200y\220\004\220I\230T\240\021\330\010\017\210q\330\t\022\220$\220d\230)\2404\240q\330\010\017\210q\330\t\022\220$\220i\230t\2404\240q\330\010\017\210q\330\t\022\220$\220d\230)\2404\240t\2501\330\010\017\210q\330\t\022\220$\220d\230!\330\010\017\210q\330\t\r\210Y\220d\230!\330\010\017\210q\330\t\022\220$\220a\330\010\017\210q\340\010\017""\210q"; + PyObject *data = NULL; + CYTHON_UNUSED_VAR(__Pyx_DecompressString); + #endif + PyObject **stringtab = __pyx_mstate->__pyx_string_tab; + Py_ssize_t pos = 0; + for (int i = 0; i < 359; i++) { + Py_ssize_t bytes_length = index[i].length; + PyObject *string = PyUnicode_DecodeUTF8(bytes + pos, bytes_length, NULL); + if (likely(string) && i >= 88) PyUnicode_InternInPlace(&string); + if (unlikely(!string)) { + Py_XDECREF(data); + __PYX_ERR(0, 2, __pyx_L1_error) + } + stringtab[i] = string; + pos += bytes_length; + } + for (int i = 359; i < 410; i++) { + Py_ssize_t bytes_length = index[i].length; + PyObject *string = PyBytes_FromStringAndSize(bytes + pos, bytes_length); + stringtab[i] = string; + pos += bytes_length; + if (unlikely(!string)) { + Py_XDECREF(data); + __PYX_ERR(0, 2, __pyx_L1_error) + } + } + Py_XDECREF(data); + for (Py_ssize_t i = 0; i < 410; i++) { + if (unlikely(PyObject_Hash(stringtab[i]) == -1)) { + __PYX_ERR(0, 2, __pyx_L1_error) + } + } + #if CYTHON_IMMORTAL_CONSTANTS + { + PyObject **table = stringtab + 359; + for (Py_ssize_t i=0; i<51; ++i) { + #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING + Py_SET_REFCNT(table[i], _Py_IMMORTAL_REFCNT_LOCAL); + #else + Py_SET_REFCNT(table[i], _Py_IMMORTAL_INITIAL_REFCNT); + #endif + } + } + #endif + } + { + PyObject **numbertab = __pyx_mstate->__pyx_number_tab; + double const c_constants[] = {250e+7}; + for (int i = 0; i < 1; i++) { + numbertab[i] = PyFloat_FromDouble(c_constants[i]); + if (unlikely(!numbertab[i])) __PYX_ERR(0, 2, __pyx_L1_error) + } + } + { + PyObject **numbertab = __pyx_mstate->__pyx_number_tab + 1; + int8_t const cint_constants_1[] = {0,1,100}; + int32_t const cint_constants_4[] = {207486590L}; + for (int i = 0; i < 4; i++) { + numbertab[i] = PyLong_FromLong((i < 3 ? cint_constants_1[i - 0] : cint_constants_4[i - 3])); + if (unlikely(!numbertab[i])) __PYX_ERR(0, 2, __pyx_L1_error) + } + } + #if CYTHON_IMMORTAL_CONSTANTS + { + PyObject **table = __pyx_mstate->__pyx_number_tab; + for (Py_ssize_t i=0; i<5; ++i) { + #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING + Py_SET_REFCNT(table[i], _Py_IMMORTAL_REFCNT_LOCAL); + #else + Py_SET_REFCNT(table[i], _Py_IMMORTAL_INITIAL_REFCNT); + #endif + } + } + #endif + return 0; + __pyx_L1_error:; + return -1; +} +/* #### Code section: init_codeobjects ### */ +typedef struct { + unsigned int argcount : 3; + unsigned int num_posonly_args : 1; + unsigned int num_kwonly_args : 1; + unsigned int nlocals : 4; + unsigned int flags : 10; + unsigned int first_line : 10; +} __Pyx_PyCode_New_function_description; +/* NewCodeObj.proto */ +static PyObject* __Pyx_PyCode_New( + const __Pyx_PyCode_New_function_description descr, + PyObject * const *varnames, + PyObject *filename, + PyObject *funcname, + PyObject *line_table, + PyObject *tuple_dedup_map +); + + +static int __Pyx_CreateCodeObjects(__pyx_mstatetype *__pyx_mstate) { + PyObject* tuple_dedup_map = PyDict_New(); + if (unlikely(!tuple_dedup_map)) return -1; + { + const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS|CO_GENERATOR), 60}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_attr, __pyx_mstate->__pyx_n_u_key}; + __pyx_mstate_global->__pyx_codeobj_tab[0] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_modest_node_pxi, __pyx_mstate->__pyx_n_u_iter, __pyx_mstate->__pyx_kp_b_iso88591_A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[0])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS|CO_GENERATOR), 102}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_key}; + __pyx_mstate_global->__pyx_codeobj_tab[1] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_modest_node_pxi, __pyx_mstate->__pyx_n_u_items, __pyx_mstate->__pyx_kp_b_iso88591_A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[1])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS|CO_GENERATOR), 106}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_key}; + __pyx_mstate_global->__pyx_codeobj_tab[2] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_modest_node_pxi, __pyx_mstate->__pyx_n_u_values, __pyx_mstate->__pyx_kp_b_iso88591_A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[2])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS|CO_GENERATOR), 329}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_include_text, __pyx_mstate->__pyx_n_u_node, __pyx_mstate->__pyx_n_u_next_node}; + __pyx_mstate_global->__pyx_codeobj_tab[3] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_modest_node_pxi, __pyx_mstate->__pyx_n_u_iter_2, __pyx_mstate->__pyx_kp_b_iso88591__12, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[3])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS|CO_GENERATOR), 354}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_include_text, __pyx_mstate->__pyx_n_u_stack, __pyx_mstate->__pyx_n_u_current_node, __pyx_mstate->__pyx_n_u_next_node}; + __pyx_mstate_global->__pyx_codeobj_tab[4] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_modest_node_pxi, __pyx_mstate->__pyx_n_u_traverse, __pyx_mstate->__pyx_kp_b_iso88591_A_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[4])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self}; + __pyx_mstate_global->__pyx_codeobj_tab[5] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_mstate->__pyx_kp_b_iso88591_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[5])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state}; + __pyx_mstate_global->__pyx_codeobj_tab[6] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_mstate->__pyx_kp_b_iso88591_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[6])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 85}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_query}; + __pyx_mstate_global->__pyx_codeobj_tab[7] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_modest_selection_pxi, __pyx_mstate->__pyx_n_u_css, __pyx_mstate->__pyx_kp_b_iso88591_A_A_HD_1_1D_Yl_IQ_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[7])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {5, 0, 0, 8, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 105}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_text, __pyx_mstate->__pyx_n_u_deep, __pyx_mstate->__pyx_n_u_separator, __pyx_mstate->__pyx_n_u_strip, __pyx_mstate->__pyx_n_u_nodes, __pyx_mstate->__pyx_n_u_node, __pyx_mstate->__pyx_n_u_node_text}; + __pyx_mstate_global->__pyx_codeobj_tab[8] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_modest_selection_pxi, __pyx_mstate->__pyx_n_u_text_contains, __pyx_mstate->__pyx_kp_b_iso88591_00DOST_HD_E_vZ_z_U_Q_WAQ_IQ_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[8])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {5, 0, 0, 8, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 116}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_text, __pyx_mstate->__pyx_n_u_deep, __pyx_mstate->__pyx_n_u_separator, __pyx_mstate->__pyx_n_u_strip, __pyx_mstate->__pyx_n_u_nodes, __pyx_mstate->__pyx_n_u_node, __pyx_mstate->__pyx_n_u_node_text}; + __pyx_mstate_global->__pyx_codeobj_tab[9] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_modest_selection_pxi, __pyx_mstate->__pyx_n_u_any_text_contains, __pyx_mstate->__pyx_kp_b_iso88591_44H_WX_HD_E_vZ_z_U_Q_q_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[9])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 7, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 126}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_attribute, __pyx_mstate->__pyx_n_u_length, __pyx_mstate->__pyx_n_u_start, __pyx_mstate->__pyx_n_u_nodes, __pyx_mstate->__pyx_n_u_node, __pyx_mstate->__pyx_n_u_attr}; + __pyx_mstate_global->__pyx_codeobj_tab[10] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_modest_selection_pxi, __pyx_mstate->__pyx_n_u_attribute_longer_than, __pyx_mstate->__pyx_kp_b_iso88591_LA_HD_4_aq_uD_d_1_t1D_QgRs_1_s, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[10])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 7, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 141}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_attribute, __pyx_mstate->__pyx_n_u_length, __pyx_mstate->__pyx_n_u_start, __pyx_mstate->__pyx_n_u_nodes, __pyx_mstate->__pyx_n_u_node, __pyx_mstate->__pyx_n_u_attr}; + __pyx_mstate_global->__pyx_codeobj_tab[11] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_modest_selection_pxi, __pyx_mstate->__pyx_n_u_any_attribute_longer_than, __pyx_mstate->__pyx_kp_b_iso88591_PPQ_HD_4_aq_uD_d_1_t1D_QgRs_1_s, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[11])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_state, __pyx_mstate->__pyx_n_u_dict_2, __pyx_mstate->__pyx_n_u_use_setstate}; + __pyx_mstate_global->__pyx_codeobj_tab[12] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_mstate->__pyx_kp_b_iso88591_T_A_G1F_a_vWE_Q_q_q_Qg_q_Qg, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[12])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 16}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state}; + __pyx_mstate_global->__pyx_codeobj_tab[13] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_mstate->__pyx_kp_b_iso88591_avQ, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[13])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self}; + __pyx_mstate_global->__pyx_codeobj_tab[14] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_mstate->__pyx_kp_b_iso88591_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[14])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state}; + __pyx_mstate_global->__pyx_codeobj_tab[15] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_mstate->__pyx_kp_b_iso88591_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[15])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 99}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self}; + __pyx_mstate_global->__pyx_codeobj_tab[16] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_modest_node_pxi, __pyx_mstate->__pyx_n_u_keys, __pyx_mstate->__pyx_kp_b_iso88591_A_t9A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[16])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 110}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_key, __pyx_mstate->__pyx_n_u_default}; + __pyx_mstate_global->__pyx_codeobj_tab[17] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_modest_node_pxi, __pyx_mstate->__pyx_n_u_get, __pyx_mstate->__pyx_kp_b_iso88591_q_4q_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[17])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 116}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_key, __pyx_mstate->__pyx_n_u_default, __pyx_mstate->__pyx_n_u_val}; + __pyx_mstate_global->__pyx_codeobj_tab[18] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_modest_node_pxi, __pyx_mstate->__pyx_n_u_sget, __pyx_mstate->__pyx_kp_b_iso88591_aq_t3a_a_1_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[18])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self}; + __pyx_mstate_global->__pyx_codeobj_tab[19] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_mstate->__pyx_kp_b_iso88591_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[19])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state}; + __pyx_mstate_global->__pyx_codeobj_tab[20] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_mstate->__pyx_kp_b_iso88591_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[20])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 8, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 253}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_deep, __pyx_mstate->__pyx_n_u_separator, __pyx_mstate->__pyx_n_u_strip, __pyx_mstate->__pyx_n_u_text, __pyx_mstate->__pyx_n_u_c_text, __pyx_mstate->__pyx_n_u_node, __pyx_mstate->__pyx_n_u_node_text}; + __pyx_mstate_global->__pyx_codeobj_tab[21] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_modest_node_pxi, __pyx_mstate->__pyx_n_u_text, __pyx_mstate->__pyx_kp_b_iso88591_1_q_E_4q_t5_1_gQ_7_Q_gQk_WA_av, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[21])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 470}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_query}; + __pyx_mstate_global->__pyx_codeobj_tab[22] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_modest_node_pxi, __pyx_mstate->__pyx_n_u_css, __pyx_mstate->__pyx_kp_b_iso88591_A_z_it7, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[22])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 474}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_selectors}; + __pyx_mstate_global->__pyx_codeobj_tab[23] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_modest_node_pxi, __pyx_mstate->__pyx_n_u_any_css_matches, __pyx_mstate->__pyx_kp_b_iso88591_A_1D_WA, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[23])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 478}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_selector}; + __pyx_mstate_global->__pyx_codeobj_tab[24] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_modest_node_pxi, __pyx_mstate->__pyx_n_u_css_matches, __pyx_mstate->__pyx_kp_b_iso88591_A_1D_XQ, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[24])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 482}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_query, __pyx_mstate->__pyx_n_u_default, __pyx_mstate->__pyx_n_u_strict, __pyx_mstate->__pyx_n_u_results, __pyx_mstate->__pyx_n_u_n_results}; + __pyx_mstate_global->__pyx_codeobj_tab[25] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_modest_node_pxi, __pyx_mstate->__pyx_n_u_css_first, __pyx_mstate->__pyx_kp_b_iso88591_Q_d_1_Cq_Rq_wd_Ba_j_J_A_7_1_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[25])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 496}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_recursive}; + __pyx_mstate_global->__pyx_codeobj_tab[26] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_modest_node_pxi, __pyx_mstate->__pyx_n_u_decompose, __pyx_mstate->__pyx_kp_b_iso88591_q_1_Q_at1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[26])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 517}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_recursive}; + __pyx_mstate_global->__pyx_codeobj_tab[27] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_modest_node_pxi, __pyx_mstate->__pyx_n_u_remove, __pyx_mstate->__pyx_kp_b_iso88591_A_Jaq, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[27])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 521}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_delete_empty, __pyx_mstate->__pyx_n_u_next_node, __pyx_mstate->__pyx_n_u_current_node}; + __pyx_mstate_global->__pyx_codeobj_tab[28] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_modest_node_pxi, __pyx_mstate->__pyx_n_u_unwrap, __pyx_mstate->__pyx_kp_b_iso88591_A_4uG3a_q_4q_4uF_1_4uA_A_Cq_L_g, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[28])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 558}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_tags, __pyx_mstate->__pyx_n_u_recursive, __pyx_mstate->__pyx_n_u_element, __pyx_mstate->__pyx_n_u_tag}; + __pyx_mstate_global->__pyx_codeobj_tab[29] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_modest_node_pxi, __pyx_mstate->__pyx_n_u_strip_tags, __pyx_mstate->__pyx_kp_b_iso88591_5Q_G1_4t1A_z_A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[29])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 584}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_tags, __pyx_mstate->__pyx_n_u_delete_empty, __pyx_mstate->__pyx_n_u_element, __pyx_mstate->__pyx_n_u_tag}; + __pyx_mstate_global->__pyx_codeobj_tab[30] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_modest_node_pxi, __pyx_mstate->__pyx_n_u_unwrap_tags, __pyx_mstate->__pyx_kp_b_iso88591_4A_G1_4t1A_waq, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[30])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 611}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_value}; + __pyx_mstate_global->__pyx_codeobj_tab[31] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_modest_node_pxi, __pyx_mstate->__pyx_n_u_replace_with_str, __pyx_mstate->__pyx_kp_b_iso88591_A8_Qhe7_Qd_Oq_x_Ql_Qd_at1_q_q_g, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[31])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 611}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_value}; + __pyx_mstate_global->__pyx_codeobj_tab[32] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_modest_node_pxi, __pyx_mstate->__pyx_n_u_replace_with_bytes, __pyx_mstate->__pyx_kp_b_iso88591_A8_Qhe7_Qd_Oq_x_Ql_Qd_at1_q_q_g, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[32])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 611}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_value}; + __pyx_mstate_global->__pyx_codeobj_tab[33] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_modest_node_pxi, __pyx_mstate->__pyx_n_u_replace_with_Node, __pyx_mstate->__pyx_kp_b_iso88591_A8_Qhe7_Qd_Oq_x_Ql_Qd_at1_q_q_g, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[33])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 611}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_value, __pyx_mstate->__pyx_n_u_node, __pyx_mstate->__pyx_n_u_bytes_val}; + __pyx_mstate_global->__pyx_codeobj_tab[34] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_modest_node_pxi, __pyx_mstate->__pyx_n_u_replace_with_str, __pyx_mstate->__pyx_kp_b_iso88591_A8_Qhe7_Qd_Oq_x_Ql_Qd_at1_q_q_g, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[34])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 652}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_value}; + __pyx_mstate_global->__pyx_codeobj_tab[35] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_modest_node_pxi, __pyx_mstate->__pyx_n_u_insert_before_str, __pyx_mstate->__pyx_kp_b_iso88591_A_Qhe7_Qd_Oq_x_Ql_Qd_q_q_g_AXX_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[35])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 652}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_value}; + __pyx_mstate_global->__pyx_codeobj_tab[36] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_modest_node_pxi, __pyx_mstate->__pyx_n_u_insert_before_bytes, __pyx_mstate->__pyx_kp_b_iso88591_A_Qhe7_Qd_Oq_x_Ql_Qd_q_q_g_AXX_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[36])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 652}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_value}; + __pyx_mstate_global->__pyx_codeobj_tab[37] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_modest_node_pxi, __pyx_mstate->__pyx_n_u_insert_before_Node, __pyx_mstate->__pyx_kp_b_iso88591_A_Qhe7_Qd_Oq_x_Ql_Qd_q_q_g_AXX_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[37])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 652}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_value, __pyx_mstate->__pyx_n_u_node, __pyx_mstate->__pyx_n_u_bytes_val}; + __pyx_mstate_global->__pyx_codeobj_tab[38] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_modest_node_pxi, __pyx_mstate->__pyx_n_u_insert_before_str, __pyx_mstate->__pyx_kp_b_iso88591_A_Qhe7_Qd_Oq_x_Ql_Qd_q_q_g_AXX_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[38])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 692}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_value}; + __pyx_mstate_global->__pyx_codeobj_tab[39] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_modest_node_pxi, __pyx_mstate->__pyx_n_u_insert_after_str, __pyx_mstate->__pyx_kp_b_iso88591_A_Qhe7_Qd_Oq_x_Ql_AT_q_q_g_AXX_A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[39])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 692}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_value}; + __pyx_mstate_global->__pyx_codeobj_tab[40] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_modest_node_pxi, __pyx_mstate->__pyx_n_u_insert_after_bytes, __pyx_mstate->__pyx_kp_b_iso88591_A_Qhe7_Qd_Oq_x_Ql_AT_q_q_g_AXX_A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[40])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 692}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_value}; + __pyx_mstate_global->__pyx_codeobj_tab[41] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_modest_node_pxi, __pyx_mstate->__pyx_n_u_insert_after_Node, __pyx_mstate->__pyx_kp_b_iso88591_A_Qhe7_Qd_Oq_x_Ql_AT_q_q_g_AXX_A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[41])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 692}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_value, __pyx_mstate->__pyx_n_u_node, __pyx_mstate->__pyx_n_u_bytes_val}; + __pyx_mstate_global->__pyx_codeobj_tab[42] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_modest_node_pxi, __pyx_mstate->__pyx_n_u_insert_after_str, __pyx_mstate->__pyx_kp_b_iso88591_A_Qhe7_Qd_Oq_x_Ql_AT_q_q_g_AXX_A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[42])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 732}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_value}; + __pyx_mstate_global->__pyx_codeobj_tab[43] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_modest_node_pxi, __pyx_mstate->__pyx_n_u_insert_child_str, __pyx_mstate->__pyx_kp_b_iso88591_A_Qhe7_Qd_Oq_x_Ql_AT_q_q_g_AXX_A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[43])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 732}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_value}; + __pyx_mstate_global->__pyx_codeobj_tab[44] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_modest_node_pxi, __pyx_mstate->__pyx_n_u_insert_child_bytes, __pyx_mstate->__pyx_kp_b_iso88591_A_Qhe7_Qd_Oq_x_Ql_AT_q_q_g_AXX_A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[44])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 732}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_value}; + __pyx_mstate_global->__pyx_codeobj_tab[45] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_modest_node_pxi, __pyx_mstate->__pyx_n_u_insert_child_Node, __pyx_mstate->__pyx_kp_b_iso88591_A_Qhe7_Qd_Oq_x_Ql_AT_q_q_g_AXX_A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[45])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 732}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_value, __pyx_mstate->__pyx_n_u_node, __pyx_mstate->__pyx_n_u_bytes_val}; + __pyx_mstate_global->__pyx_codeobj_tab[46] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_modest_node_pxi, __pyx_mstate->__pyx_n_u_insert_child_str, __pyx_mstate->__pyx_kp_b_iso88591_A_Qhe7_Qd_Oq_x_Ql_AT_q_q_g_AXX_A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[46])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 772}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_tags, __pyx_mstate->__pyx_n_u_delete_empty, __pyx_mstate->__pyx_n_u_element, __pyx_mstate->__pyx_n_u_tag}; + __pyx_mstate_global->__pyx_codeobj_tab[47] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_modest_node_pxi, __pyx_mstate->__pyx_n_u_unwrap_tags, __pyx_mstate->__pyx_kp_b_iso88591_4A_G1_4t1A_waq, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[47])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 826}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_query}; + __pyx_mstate_global->__pyx_codeobj_tab[48] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_modest_node_pxi, __pyx_mstate->__pyx_n_u_select, __pyx_mstate->__pyx_kp_b_iso88591_1_xq_a, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[48])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 7, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 842}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_query, __pyx_mstate->__pyx_n_u_node, __pyx_mstate->__pyx_n_u_nodes, __pyx_mstate->__pyx_n_u_text_nodes, __pyx_mstate->__pyx_n_u_node_text, __pyx_mstate->__pyx_n_u_text}; + __pyx_mstate_global->__pyx_codeobj_tab[49] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_modest_node_pxi, __pyx_mstate->__pyx_n_u_scripts_contain, __pyx_mstate->__pyx_kp_b_iso88591_A_4w_3a_Jat9D_q_D_Qe1_1_gQa_a_HD, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[49])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 8, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 868}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_queries, __pyx_mstate->__pyx_n_u_nodes, __pyx_mstate->__pyx_n_u_src_nodes, __pyx_mstate->__pyx_n_u_node, __pyx_mstate->__pyx_n_u_node_src, __pyx_mstate->__pyx_n_u_text, __pyx_mstate->__pyx_n_u_query}; + __pyx_mstate_global->__pyx_codeobj_tab[50] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_modest_node_pxi, __pyx_mstate->__pyx_n_u_script_srcs_contain, __pyx_mstate->__pyx_kp_b_iso88591_A_4w_Q_Jat9D_q_4vT_1_WAQ_Q_HD_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[50])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 10, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 925}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_stack, __pyx_mstate->__pyx_n_u_current_node, __pyx_mstate->__pyx_n_u_next_node, __pyx_mstate->__pyx_n_u_left_text, __pyx_mstate->__pyx_n_u_right_text, __pyx_mstate->__pyx_n_u_final_text, __pyx_mstate->__pyx_n_u_left_length, __pyx_mstate->__pyx_n_u_right_length, __pyx_mstate->__pyx_n_u_final_length}; + __pyx_mstate_global->__pyx_codeobj_tab[51] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_modest_node_pxi, __pyx_mstate->__pyx_n_u_merge_text_nodes, __pyx_mstate->__pyx_kp_b_iso88591_A_5_1_U_4q_d_y_5_A_HC_8_L_a_XS_A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[51])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self}; + __pyx_mstate_global->__pyx_codeobj_tab[52] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_mstate->__pyx_kp_b_iso88591_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[52])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state}; + __pyx_mstate_global->__pyx_codeobj_tab[53] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_mstate->__pyx_kp_b_iso88591_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[53])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 19}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_html, __pyx_mstate->__pyx_n_u_decode_errors, __pyx_mstate->__pyx_n_u_bytes_html, __pyx_mstate->__pyx_n_u_html_len}; + __pyx_mstate_global->__pyx_codeobj_tab[54] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_modest_utils_pxi, __pyx_mstate->__pyx_n_u_preprocess_input, __pyx_mstate->__pyx_kp_b_iso88591_1_z_a_T_1F_Q_iq_D_a_s_1_y_j___q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[54])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 32}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_tag, __pyx_mstate->__pyx_n_u_parser_cls}; + __pyx_mstate_global->__pyx_codeobj_tab[55] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_modest_utils_pxi, __pyx_mstate->__pyx_n_u_do_create_tag, __pyx_mstate->__pyx_kp_b_iso88591_t1_j_AS_AQ, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[55])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 9, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 38}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_html, __pyx_mstate->__pyx_n_u_parser_cls, __pyx_mstate->__pyx_n_u_tree, __pyx_mstate->__pyx_n_u_re, __pyx_mstate->__pyx_n_u_html_re, __pyx_mstate->__pyx_n_u_has_html, __pyx_mstate->__pyx_n_u_has_head, __pyx_mstate->__pyx_n_u_has_body, __pyx_mstate->__pyx_n_u_match}; + __pyx_mstate_global->__pyx_codeobj_tab[56] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_modest_utils_pxi, __pyx_mstate->__pyx_n_u_get_fragment_type, __pyx_mstate->__pyx_kp_b_iso88591_t1_z_b_5Rq_q_q_q_5_Cq_q_3c_q_3c, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[56])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 81}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_html, __pyx_mstate->__pyx_n_u_parser_cls, __pyx_mstate->__pyx_n_u_tree, __pyx_mstate->__pyx_n_u_frag_type}; + __pyx_mstate_global->__pyx_codeobj_tab[57] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_modest_utils_pxi, __pyx_mstate->__pyx_n_u_do_parse_fragment, __pyx_mstate->__pyx_kp_b_iso88591_Q_4vQ_Qa_A_z_A_q_A_z_A_E_1Ja_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[57])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 4}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_tag}; + __pyx_mstate_global->__pyx_codeobj_tab[58] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_modest_util_pxi, __pyx_mstate->__pyx_n_u_create_tag, __pyx_mstate->__pyx_kp_b_iso88591_A_a, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[58])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 12}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_html}; + __pyx_mstate_global->__pyx_codeobj_tab[59] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_modest_util_pxi, __pyx_mstate->__pyx_n_u_parse_fragment, __pyx_mstate->__pyx_kp_b_iso88591_AV1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[59])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 19}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_html, __pyx_mstate->__pyx_n_u_decode_errors, __pyx_mstate->__pyx_n_u_bytes_html, __pyx_mstate->__pyx_n_u_html_len}; + __pyx_mstate_global->__pyx_codeobj_tab[60] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_utils_pxi, __pyx_mstate->__pyx_n_u_preprocess_input, __pyx_mstate->__pyx_kp_b_iso88591_1_z_a_T_1F_Q_iq_D_a_s_1_y_j___q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[60])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 32}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_tag, __pyx_mstate->__pyx_n_u_parser_cls}; + __pyx_mstate_global->__pyx_codeobj_tab[61] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_utils_pxi, __pyx_mstate->__pyx_n_u_do_create_tag, __pyx_mstate->__pyx_kp_b_iso88591_t1_j_AS_AQ, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[61])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 9, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 38}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_html, __pyx_mstate->__pyx_n_u_parser_cls, __pyx_mstate->__pyx_n_u_tree, __pyx_mstate->__pyx_n_u_re, __pyx_mstate->__pyx_n_u_html_re, __pyx_mstate->__pyx_n_u_has_html, __pyx_mstate->__pyx_n_u_has_head, __pyx_mstate->__pyx_n_u_has_body, __pyx_mstate->__pyx_n_u_match}; + __pyx_mstate_global->__pyx_codeobj_tab[62] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_utils_pxi, __pyx_mstate->__pyx_n_u_get_fragment_type, __pyx_mstate->__pyx_kp_b_iso88591_t1_z_b_5Rq_q_q_q_5_Cq_q_3c_q_3c, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[62])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 81}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_html, __pyx_mstate->__pyx_n_u_parser_cls, __pyx_mstate->__pyx_n_u_tree, __pyx_mstate->__pyx_n_u_frag_type}; + __pyx_mstate_global->__pyx_codeobj_tab[63] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_utils_pxi, __pyx_mstate->__pyx_n_u_do_parse_fragment, __pyx_mstate->__pyx_kp_b_iso88591_Q_4vQ_Qa_A_z_A_q_A_z_A_E_1Ja_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[63])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 48}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_query, __pyx_mstate->__pyx_n_u_node}; + __pyx_mstate_global->__pyx_codeobj_tab[64] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_parser_pyx, __pyx_mstate->__pyx_n_u_css, __pyx_mstate->__pyx_kp_b_iso88591_A_T_j_A_t4q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[64])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 68}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_query, __pyx_mstate->__pyx_n_u_default, __pyx_mstate->__pyx_n_u_strict, __pyx_mstate->__pyx_n_u_node}; + __pyx_mstate_global->__pyx_codeobj_tab[65] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_parser_pyx, __pyx_mstate->__pyx_n_u_css_first, __pyx_mstate->__pyx_kp_b_iso88591_T_j_A_t_QgYa, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[65])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 8, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 181}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_name_2, __pyx_mstate->__pyx_n_u_collection, __pyx_mstate->__pyx_n_u_pybyte_name, __pyx_mstate->__pyx_n_u_status, __pyx_mstate->__pyx_n_u_result, __pyx_mstate->__pyx_n_u_i, __pyx_mstate->__pyx_n_u_node}; + __pyx_mstate_global->__pyx_codeobj_tab[66] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_parser_pyx, __pyx_mstate->__pyx_n_u_tags, __pyx_mstate->__pyx_kp_b_iso88591_A_4q_AQ_3avRq_AQ_q_d_Q_Qd_fMQTTU, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[66])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 214}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_deep, __pyx_mstate->__pyx_n_u_separator, __pyx_mstate->__pyx_n_u_strip}; + __pyx_mstate_global->__pyx_codeobj_tab[67] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_parser_pyx, __pyx_mstate->__pyx_n_u_text, __pyx_mstate->__pyx_kp_b_iso88591_1_4t1_1_t5_Qe6_fA, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[67])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 8, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 235}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_tags, __pyx_mstate->__pyx_n_u_recursive, __pyx_mstate->__pyx_n_u_collection, __pyx_mstate->__pyx_n_u_status, __pyx_mstate->__pyx_n_u_tag, __pyx_mstate->__pyx_n_u_pybyte_name, __pyx_mstate->__pyx_n_u_i}; + __pyx_mstate_global->__pyx_codeobj_tab[68] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_parser_pyx, __pyx_mstate->__pyx_n_u_strip_tags, __pyx_mstate->__pyx_kp_b_iso88591_5Q_0q_G1_WAQ_1_l_UXXYYgghhi_Q_w, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[68])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 277}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_tags, __pyx_mstate->__pyx_n_u_delete_empty}; + __pyx_mstate_global->__pyx_codeobj_tab[69] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_parser_pyx, __pyx_mstate->__pyx_n_u_unwrap_tags, __pyx_mstate->__pyx_kp_b_iso88591_4G1_4vWA_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[69])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 309}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_query, __pyx_mstate->__pyx_n_u_node}; + __pyx_mstate_global->__pyx_codeobj_tab[70] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_parser_pyx, __pyx_mstate->__pyx_n_u_select, __pyx_mstate->__pyx_kp_b_iso88591_1_t1_1_81F, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[70])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 328}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_selectors}; + __pyx_mstate_global->__pyx_codeobj_tab[71] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_parser_pyx, __pyx_mstate->__pyx_n_u_any_css_matches, __pyx_mstate->__pyx_kp_b_iso88591_A_t5, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[71])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 332}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_query}; + __pyx_mstate_global->__pyx_codeobj_tab[72] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_parser_pyx, __pyx_mstate->__pyx_n_u_scripts_contain, __pyx_mstate->__pyx_kp_b_iso88591_A_t5_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[72])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 345}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_queries}; + __pyx_mstate_global->__pyx_codeobj_tab[73] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_parser_pyx, __pyx_mstate->__pyx_n_u_script_srcs_contain, __pyx_mstate->__pyx_kp_b_iso88591_A_t5_AQ, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[73])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 357}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_selector}; + __pyx_mstate_global->__pyx_codeobj_tab[74] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_parser_pyx, __pyx_mstate->__pyx_n_u_css_matches, __pyx_mstate->__pyx_kp_b_iso88591_A_t5_AQ_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[74])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 360}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self}; + __pyx_mstate_global->__pyx_codeobj_tab[75] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_parser_pyx, __pyx_mstate->__pyx_n_u_merge_text_nodes, __pyx_mstate->__pyx_kp_b_iso88591_A_t5_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[75])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 396}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_myhtml, __pyx_mstate->__pyx_n_u_status, __pyx_mstate->__pyx_n_u_html_tree, __pyx_mstate->__pyx_n_u_node, __pyx_mstate->__pyx_n_u_cls}; + __pyx_mstate_global->__pyx_codeobj_tab[76] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_selectolax_parser_pyx, __pyx_mstate->__pyx_n_u_clone, __pyx_mstate->__pyx_kp_b_iso88591_A_A_A_7_Q_aq_Qk_7_Q_aq_Qk_Zq_9Kq, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[76])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self}; + __pyx_mstate_global->__pyx_codeobj_tab[77] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_mstate->__pyx_kp_b_iso88591_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[77])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state}; + __pyx_mstate_global->__pyx_codeobj_tab[78] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_mstate->__pyx_kp_b_iso88591_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[78])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 4}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_pyx_type, __pyx_mstate->__pyx_n_u_pyx_checksum, __pyx_mstate->__pyx_n_u_pyx_state, __pyx_mstate->__pyx_n_u_pyx_result}; + __pyx_mstate_global->__pyx_codeobj_tab[79] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_pyx_unpickle_Selector, __pyx_mstate->__pyx_kp_b_iso88591_q_0_kQR_881A_7_nA_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[79])) goto bad; + } + Py_DECREF(tuple_dedup_map); + return 0; + bad: + Py_DECREF(tuple_dedup_map); + return -1; +} +/* #### Code section: init_globals ### */ + +static int __Pyx_InitGlobals(void) { + /* PythonCompatibility.init */ + if (likely(__Pyx_init_co_variables() == 0)); else + + if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 2, __pyx_L1_error) + + /* CommonTypesMetaclass.init */ + if (likely(__pyx_CommonTypesMetaclass_init(__pyx_m) == 0)); else + + if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 2, __pyx_L1_error) + + /* CachedMethodType.init */ + #if CYTHON_COMPILING_IN_LIMITED_API + { + PyObject *typesModule=NULL; + typesModule = PyImport_ImportModule("types"); + if (typesModule) { + __pyx_mstate_global->__Pyx_CachedMethodType = PyObject_GetAttrString(typesModule, "MethodType"); + Py_DECREF(typesModule); + } + } // error handling follows + #endif + + if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 2, __pyx_L1_error) + + /* CythonFunctionShared.init */ + if (likely(__pyx_CyFunction_init(__pyx_m) == 0)); else + + if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 2, __pyx_L1_error) + + /* FusedFunction.init */ + if (likely(__pyx_FusedFunction_init(__pyx_m) == 0)); else + + if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 2, __pyx_L1_error) + + /* Generator.init */ + if (likely(__pyx_Generator_init(__pyx_m) == 0)); else + + if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 2, __pyx_L1_error) + + return 0; + __pyx_L1_error:; + return -1; +} +/* #### Code section: cleanup_globals ### */ +/* #### Code section: cleanup_module ### */ +/* #### Code section: main_method ### */ +/* #### Code section: utility_code_pragmas ### */ +#ifdef _MSC_VER +#pragma warning( push ) +/* Warning 4127: conditional expression is constant + * Cython uses constant conditional expressions to allow in inline functions to be optimized at + * compile-time, so this warning is not useful + */ +#pragma warning( disable : 4127 ) +#endif + + + +/* #### Code section: utility_code_def ### */ + +/* --- Runtime support code --- */ +/* Refnanny */ +#if CYTHON_REFNANNY +static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) { + PyObject *m = NULL, *p = NULL; + void *r = NULL; + m = PyImport_ImportModule(modname); + if (!m) goto end; + p = PyObject_GetAttrString(m, "RefNannyAPI"); + if (!p) goto end; + r = PyLong_AsVoidPtr(p); +end: + Py_XDECREF(p); + Py_XDECREF(m); + return (__Pyx_RefNannyAPIStruct *)r; +} +#endif + +/* PyErrExceptionMatches (used by PyObjectGetAttrStrNoError) */ +#if CYTHON_FAST_THREAD_STATE +static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { + Py_ssize_t i, n; + n = PyTuple_GET_SIZE(tuple); + for (i=0; i= 0x030C00A6 + PyObject *current_exception = tstate->current_exception; + if (unlikely(!current_exception)) return 0; + exc_type = (PyObject*) Py_TYPE(current_exception); + if (exc_type == err) return 1; +#else + exc_type = tstate->curexc_type; + if (exc_type == err) return 1; + if (unlikely(!exc_type)) return 0; +#endif + #if CYTHON_AVOID_BORROWED_REFS + Py_INCREF(exc_type); + #endif + if (unlikely(PyTuple_Check(err))) { + result = __Pyx_PyErr_ExceptionMatchesTuple(exc_type, err); + } else { + result = __Pyx_PyErr_GivenExceptionMatches(exc_type, err); + } + #if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(exc_type); + #endif + return result; +} +#endif + +/* PyErrFetchRestore (used by PyObjectGetAttrStrNoError) */ +#if CYTHON_FAST_THREAD_STATE +static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { +#if PY_VERSION_HEX >= 0x030C00A6 + PyObject *tmp_value; + assert(type == NULL || (value != NULL && type == (PyObject*) Py_TYPE(value))); + if (value) { + #if CYTHON_COMPILING_IN_CPYTHON + if (unlikely(((PyBaseExceptionObject*) value)->traceback != tb)) + #endif + PyException_SetTraceback(value, tb); + } + tmp_value = tstate->current_exception; + tstate->current_exception = value; + Py_XDECREF(tmp_value); + Py_XDECREF(type); + Py_XDECREF(tb); +#else + PyObject *tmp_type, *tmp_value, *tmp_tb; + tmp_type = tstate->curexc_type; + tmp_value = tstate->curexc_value; + tmp_tb = tstate->curexc_traceback; + tstate->curexc_type = type; + tstate->curexc_value = value; + tstate->curexc_traceback = tb; + Py_XDECREF(tmp_type); + Py_XDECREF(tmp_value); + Py_XDECREF(tmp_tb); +#endif +} +static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { +#if PY_VERSION_HEX >= 0x030C00A6 + PyObject* exc_value; + exc_value = tstate->current_exception; + tstate->current_exception = 0; + *value = exc_value; + *type = NULL; + *tb = NULL; + if (exc_value) { + *type = (PyObject*) Py_TYPE(exc_value); + Py_INCREF(*type); + #if CYTHON_COMPILING_IN_CPYTHON + *tb = ((PyBaseExceptionObject*) exc_value)->traceback; + Py_XINCREF(*tb); + #else + *tb = PyException_GetTraceback(exc_value); + #endif + } +#else + *type = tstate->curexc_type; + *value = tstate->curexc_value; + *tb = tstate->curexc_traceback; + tstate->curexc_type = 0; + tstate->curexc_value = 0; + tstate->curexc_traceback = 0; +#endif +} +#endif + +/* PyObjectGetAttrStr (used by PyObjectGetAttrStrNoError) */ +#if CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) { + PyTypeObject* tp = Py_TYPE(obj); + if (likely(tp->tp_getattro)) + return tp->tp_getattro(obj, attr_name); + return PyObject_GetAttr(obj, attr_name); +} +#endif + +/* PyObjectGetAttrStrNoError (used by GetBuiltinName) */ +#if __PYX_LIMITED_VERSION_HEX < 0x030d0000 +static void __Pyx_PyObject_GetAttrStr_ClearAttributeError(void) { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + if (likely(__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError))) + __Pyx_PyErr_Clear(); +} +#endif +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name) { + PyObject *result; +#if __PYX_LIMITED_VERSION_HEX >= 0x030d0000 + (void) PyObject_GetOptionalAttr(obj, attr_name, &result); + return result; +#else +#if CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_TYPE_SLOTS + PyTypeObject* tp = Py_TYPE(obj); + if (likely(tp->tp_getattro == PyObject_GenericGetAttr)) { + return _PyObject_GenericGetAttrWithDict(obj, attr_name, NULL, 1); + } +#endif + result = __Pyx_PyObject_GetAttrStr(obj, attr_name); + if (unlikely(!result)) { + __Pyx_PyObject_GetAttrStr_ClearAttributeError(); + } + return result; +#endif +} + +/* GetBuiltinName */ +static PyObject *__Pyx_GetBuiltinName(PyObject *name) { + PyObject* result = __Pyx_PyObject_GetAttrStrNoError(__pyx_mstate_global->__pyx_b, name); + if (unlikely(!result) && !PyErr_Occurred()) { + PyErr_Format(PyExc_NameError, + "name '%U' is not defined", name); + } + return result; +} + +/* PyObjectCall (used by PyObjectFastCall) */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) { + PyObject *result; + ternaryfunc call = Py_TYPE(func)->tp_call; + if (unlikely(!call)) + return PyObject_Call(func, arg, kw); + if (unlikely(Py_EnterRecursiveCall(" while calling a Python object"))) + return NULL; + result = (*call)(func, arg, kw); + Py_LeaveRecursiveCall(); + if (unlikely(!result) && unlikely(!PyErr_Occurred())) { + PyErr_SetString( + PyExc_SystemError, + "NULL result without error in PyObject_Call"); + } + return result; +} +#endif + +/* PyObjectCallMethO (used by PyObjectFastCall) */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) { + PyObject *self, *result; + PyCFunction cfunc; + cfunc = __Pyx_CyOrPyCFunction_GET_FUNCTION(func); + self = __Pyx_CyOrPyCFunction_GET_SELF(func); + if (unlikely(Py_EnterRecursiveCall(" while calling a Python object"))) + return NULL; + result = cfunc(self, arg); + Py_LeaveRecursiveCall(); + if (unlikely(!result) && unlikely(!PyErr_Occurred())) { + PyErr_SetString( + PyExc_SystemError, + "NULL result without error in PyObject_Call"); + } + return result; +} +#endif + +/* PyObjectFastCall */ +#if PY_VERSION_HEX < 0x03090000 || CYTHON_COMPILING_IN_LIMITED_API +static PyObject* __Pyx_PyObject_FastCall_fallback(PyObject *func, PyObject * const*args, size_t nargs, PyObject *kwargs) { + PyObject *argstuple; + PyObject *result = 0; + size_t i; + argstuple = PyTuple_New((Py_ssize_t)nargs); + if (unlikely(!argstuple)) return NULL; + for (i = 0; i < nargs; i++) { + Py_INCREF(args[i]); + if (__Pyx_PyTuple_SET_ITEM(argstuple, (Py_ssize_t)i, args[i]) != (0)) goto bad; + } + result = __Pyx_PyObject_Call(func, argstuple, kwargs); + bad: + Py_DECREF(argstuple); + return result; +} +#endif +#if CYTHON_VECTORCALL && !CYTHON_COMPILING_IN_LIMITED_API + #if PY_VERSION_HEX < 0x03090000 + #define __Pyx_PyVectorcall_Function(callable) _PyVectorcall_Function(callable) + #elif CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE vectorcallfunc __Pyx_PyVectorcall_Function(PyObject *callable) { + PyTypeObject *tp = Py_TYPE(callable); + #if defined(__Pyx_CyFunction_USED) + if (__Pyx_CyFunction_CheckExact(callable)) { + return __Pyx_CyFunction_func_vectorcall(callable); + } + #endif + if (!PyType_HasFeature(tp, Py_TPFLAGS_HAVE_VECTORCALL)) { + return NULL; + } + assert(PyCallable_Check(callable)); + Py_ssize_t offset = tp->tp_vectorcall_offset; + assert(offset > 0); + vectorcallfunc ptr; + memcpy(&ptr, (char *) callable + offset, sizeof(ptr)); + return ptr; +} + #else + #define __Pyx_PyVectorcall_Function(callable) PyVectorcall_Function(callable) + #endif +#endif +static CYTHON_INLINE PyObject* __Pyx_PyObject_FastCallDict(PyObject *func, PyObject *const *args, size_t _nargs, PyObject *kwargs) { + Py_ssize_t nargs = __Pyx_PyVectorcall_NARGS(_nargs); +#if CYTHON_COMPILING_IN_CPYTHON + if (nargs == 0 && kwargs == NULL) { + if (__Pyx_CyOrPyCFunction_Check(func) && likely( __Pyx_CyOrPyCFunction_GET_FLAGS(func) & METH_NOARGS)) + return __Pyx_PyObject_CallMethO(func, NULL); + } + else if (nargs == 1 && kwargs == NULL) { + if (__Pyx_CyOrPyCFunction_Check(func) && likely( __Pyx_CyOrPyCFunction_GET_FLAGS(func) & METH_O)) + return __Pyx_PyObject_CallMethO(func, args[0]); + } +#endif + if (kwargs == NULL) { + #if CYTHON_VECTORCALL + #if CYTHON_COMPILING_IN_LIMITED_API + return PyObject_Vectorcall(func, args, _nargs, NULL); + #else + vectorcallfunc f = __Pyx_PyVectorcall_Function(func); + if (f) { + return f(func, args, _nargs, NULL); + } + #endif + #endif + } + if (nargs == 0) { + return __Pyx_PyObject_Call(func, __pyx_mstate_global->__pyx_empty_tuple, kwargs); + } + #if PY_VERSION_HEX >= 0x03090000 && !CYTHON_COMPILING_IN_LIMITED_API + return PyObject_VectorcallDict(func, args, (size_t)nargs, kwargs); + #else + return __Pyx_PyObject_FastCall_fallback(func, args, (size_t)nargs, kwargs); + #endif +} + +/* PyObjectCall2Args (used by CallUnboundCMethod1) */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2) { + PyObject *args[3] = {NULL, arg1, arg2}; + return __Pyx_PyObject_FastCall(function, args+1, 2 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET); +} + +/* UnpackUnboundCMethod (used by CallUnboundCMethod1) */ +#if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030C0000 +static PyObject *__Pyx_SelflessCall(PyObject *method, PyObject *args, PyObject *kwargs) { + PyObject *result; + PyObject *selfless_args = PyTuple_GetSlice(args, 1, PyTuple_Size(args)); + if (unlikely(!selfless_args)) return NULL; + result = PyObject_Call(method, selfless_args, kwargs); + Py_DECREF(selfless_args); + return result; +} +#elif CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03090000 +static PyObject *__Pyx_SelflessCall(PyObject *method, PyObject **args, Py_ssize_t nargs, PyObject *kwnames) { + return _PyObject_Vectorcall + (method, args ? args+1 : NULL, nargs ? nargs-1 : 0, kwnames); +} +#else +static PyObject *__Pyx_SelflessCall(PyObject *method, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) { + return +#if PY_VERSION_HEX < 0x03090000 + _PyObject_Vectorcall +#else + PyObject_Vectorcall +#endif + (method, args ? args+1 : NULL, nargs ? (size_t) nargs-1 : 0, kwnames); +} +#endif +static PyMethodDef __Pyx_UnboundCMethod_Def = { + "CythonUnboundCMethod", + __PYX_REINTERPRET_FUNCION(PyCFunction, __Pyx_SelflessCall), +#if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030C0000 + METH_VARARGS | METH_KEYWORDS, +#else + METH_FASTCALL | METH_KEYWORDS, +#endif + NULL +}; +static int __Pyx_TryUnpackUnboundCMethod(__Pyx_CachedCFunction* target) { + PyObject *method, *result=NULL; + method = __Pyx_PyObject_GetAttrStr(target->type, *target->method_name); + if (unlikely(!method)) + return -1; + result = method; +#if CYTHON_COMPILING_IN_CPYTHON + if (likely(__Pyx_TypeCheck(method, &PyMethodDescr_Type))) + { + PyMethodDescrObject *descr = (PyMethodDescrObject*) method; + target->func = descr->d_method->ml_meth; + target->flag = descr->d_method->ml_flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_STACKLESS); + } else +#endif +#if CYTHON_COMPILING_IN_PYPY +#else + if (PyCFunction_Check(method)) +#endif + { + PyObject *self; + int self_found; +#if CYTHON_COMPILING_IN_LIMITED_API || CYTHON_COMPILING_IN_PYPY + self = PyObject_GetAttrString(method, "__self__"); + if (!self) { + PyErr_Clear(); + } +#else + self = PyCFunction_GET_SELF(method); +#endif + self_found = (self && self != Py_None); +#if CYTHON_COMPILING_IN_LIMITED_API || CYTHON_COMPILING_IN_PYPY + Py_XDECREF(self); +#endif + if (self_found) { + PyObject *unbound_method = PyCFunction_New(&__Pyx_UnboundCMethod_Def, method); + if (unlikely(!unbound_method)) return -1; + Py_DECREF(method); + result = unbound_method; + } + } +#if !CYTHON_COMPILING_IN_CPYTHON_FREETHREADING + if (unlikely(target->method)) { + Py_DECREF(result); + } else +#endif + target->method = result; + return 0; +} + +/* CallUnboundCMethod1 */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_CallUnboundCMethod1(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg) { + int was_initialized = __Pyx_CachedCFunction_GetAndSetInitializing(cfunc); + if (likely(was_initialized == 2 && cfunc->func)) { + int flag = cfunc->flag; + if (flag == METH_O) { + return __Pyx_CallCFunction(cfunc, self, arg); + } else if (flag == METH_FASTCALL) { + return __Pyx_CallCFunctionFast(cfunc, self, &arg, 1); + } else if (flag == (METH_FASTCALL | METH_KEYWORDS)) { + return __Pyx_CallCFunctionFastWithKeywords(cfunc, self, &arg, 1, NULL); + } + } +#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING + else if (unlikely(was_initialized == 1)) { + __Pyx_CachedCFunction tmp_cfunc = { +#ifndef __cplusplus + 0 +#endif + }; + tmp_cfunc.type = cfunc->type; + tmp_cfunc.method_name = cfunc->method_name; + return __Pyx__CallUnboundCMethod1(&tmp_cfunc, self, arg); + } +#endif + PyObject* result = __Pyx__CallUnboundCMethod1(cfunc, self, arg); + __Pyx_CachedCFunction_SetFinishedInitializing(cfunc); + return result; +} +#endif +static PyObject* __Pyx__CallUnboundCMethod1(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg){ + PyObject *result = NULL; + if (unlikely(!cfunc->func && !cfunc->method) && unlikely(__Pyx_TryUnpackUnboundCMethod(cfunc) < 0)) return NULL; +#if CYTHON_COMPILING_IN_CPYTHON + if (cfunc->func && (cfunc->flag & METH_VARARGS)) { + PyObject *args = PyTuple_New(1); + if (unlikely(!args)) return NULL; + Py_INCREF(arg); + PyTuple_SET_ITEM(args, 0, arg); + if (cfunc->flag & METH_KEYWORDS) + result = __Pyx_CallCFunctionWithKeywords(cfunc, self, args, NULL); + else + result = __Pyx_CallCFunction(cfunc, self, args); + Py_DECREF(args); + } else +#endif + { + result = __Pyx_PyObject_Call2Args(cfunc->method, self, arg); + } + return result; +} + +/* CallUnboundCMethod2 */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject *__Pyx_CallUnboundCMethod2(__Pyx_CachedCFunction *cfunc, PyObject *self, PyObject *arg1, PyObject *arg2) { + int was_initialized = __Pyx_CachedCFunction_GetAndSetInitializing(cfunc); + if (likely(was_initialized == 2 && cfunc->func)) { + PyObject *args[2] = {arg1, arg2}; + if (cfunc->flag == METH_FASTCALL) { + return __Pyx_CallCFunctionFast(cfunc, self, args, 2); + } + if (cfunc->flag == (METH_FASTCALL | METH_KEYWORDS)) + return __Pyx_CallCFunctionFastWithKeywords(cfunc, self, args, 2, NULL); + } +#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING + else if (unlikely(was_initialized == 1)) { + __Pyx_CachedCFunction tmp_cfunc = { +#ifndef __cplusplus + 0 +#endif + }; + tmp_cfunc.type = cfunc->type; + tmp_cfunc.method_name = cfunc->method_name; + return __Pyx__CallUnboundCMethod2(&tmp_cfunc, self, arg1, arg2); + } +#endif + PyObject *result = __Pyx__CallUnboundCMethod2(cfunc, self, arg1, arg2); + __Pyx_CachedCFunction_SetFinishedInitializing(cfunc); + return result; +} +#endif +static PyObject* __Pyx__CallUnboundCMethod2(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg1, PyObject* arg2){ + if (unlikely(!cfunc->func && !cfunc->method) && unlikely(__Pyx_TryUnpackUnboundCMethod(cfunc) < 0)) return NULL; +#if CYTHON_COMPILING_IN_CPYTHON + if (cfunc->func && (cfunc->flag & METH_VARARGS)) { + PyObject *result = NULL; + PyObject *args = PyTuple_New(2); + if (unlikely(!args)) return NULL; + Py_INCREF(arg1); + PyTuple_SET_ITEM(args, 0, arg1); + Py_INCREF(arg2); + PyTuple_SET_ITEM(args, 1, arg2); + if (cfunc->flag & METH_KEYWORDS) + result = __Pyx_CallCFunctionWithKeywords(cfunc, self, args, NULL); + else + result = __Pyx_CallCFunction(cfunc, self, args); + Py_DECREF(args); + return result; + } +#endif + { + PyObject *args[4] = {NULL, self, arg1, arg2}; + return __Pyx_PyObject_FastCall(cfunc->method, args+1, 3 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET); + } +} + +/* dict_getitem_default */ +static PyObject* __Pyx_PyDict_GetItemDefault(PyObject* d, PyObject* key, PyObject* default_value) { + PyObject* value; +#if !CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07020000 + value = PyDict_GetItemWithError(d, key); + if (unlikely(!value)) { + if (unlikely(PyErr_Occurred())) + return NULL; + value = default_value; + } + Py_INCREF(value); + if ((1)); +#else + if (PyBytes_CheckExact(key) || PyUnicode_CheckExact(key) || PyLong_CheckExact(key)) { + value = PyDict_GetItem(d, key); + if (unlikely(!value)) { + value = default_value; + } + Py_INCREF(value); + } +#endif + else { + if (default_value == Py_None) + value = __Pyx_CallUnboundCMethod1(&__pyx_mstate_global->__pyx_umethod_PyDict_Type_get, d, key); + else + value = __Pyx_CallUnboundCMethod2(&__pyx_mstate_global->__pyx_umethod_PyDict_Type_get, d, key, default_value); + } + return value; +} + +/* RaiseException */ +static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) { + PyObject* owned_instance = NULL; + if (tb == Py_None) { + tb = 0; + } else if (tb && !PyTraceBack_Check(tb)) { + PyErr_SetString(PyExc_TypeError, + "raise: arg 3 must be a traceback or None"); + goto bad; + } + if (value == Py_None) + value = 0; + if (PyExceptionInstance_Check(type)) { + if (value) { + PyErr_SetString(PyExc_TypeError, + "instance exception may not have a separate value"); + goto bad; + } + value = type; + type = (PyObject*) Py_TYPE(value); + } else if (PyExceptionClass_Check(type)) { + PyObject *instance_class = NULL; + if (value && PyExceptionInstance_Check(value)) { + instance_class = (PyObject*) Py_TYPE(value); + if (instance_class != type) { + int is_subclass = PyObject_IsSubclass(instance_class, type); + if (!is_subclass) { + instance_class = NULL; + } else if (unlikely(is_subclass == -1)) { + goto bad; + } else { + type = instance_class; + } + } + } + if (!instance_class) { + PyObject *args; + if (!value) + args = PyTuple_New(0); + else if (PyTuple_Check(value)) { + Py_INCREF(value); + args = value; + } else + args = PyTuple_Pack(1, value); + if (!args) + goto bad; + owned_instance = PyObject_Call(type, args, NULL); + Py_DECREF(args); + if (!owned_instance) + goto bad; + value = owned_instance; + if (!PyExceptionInstance_Check(value)) { + PyErr_Format(PyExc_TypeError, + "calling %R should have returned an instance of " + "BaseException, not %R", + type, Py_TYPE(value)); + goto bad; + } + } + } else { + PyErr_SetString(PyExc_TypeError, + "raise: exception class must be a subclass of BaseException"); + goto bad; + } + if (cause) { + PyObject *fixed_cause; + if (cause == Py_None) { + fixed_cause = NULL; + } else if (PyExceptionClass_Check(cause)) { + fixed_cause = PyObject_CallObject(cause, NULL); + if (fixed_cause == NULL) + goto bad; + } else if (PyExceptionInstance_Check(cause)) { + fixed_cause = cause; + Py_INCREF(fixed_cause); + } else { + PyErr_SetString(PyExc_TypeError, + "exception causes must derive from " + "BaseException"); + goto bad; + } + PyException_SetCause(value, fixed_cause); + } + PyErr_SetObject(type, value); + if (tb) { +#if PY_VERSION_HEX >= 0x030C00A6 + PyException_SetTraceback(value, tb); +#elif CYTHON_FAST_THREAD_STATE + PyThreadState *tstate = __Pyx_PyThreadState_Current; + PyObject* tmp_tb = tstate->curexc_traceback; + if (tb != tmp_tb) { + Py_INCREF(tb); + tstate->curexc_traceback = tb; + Py_XDECREF(tmp_tb); + } +#else + PyObject *tmp_type, *tmp_value, *tmp_tb; + PyErr_Fetch(&tmp_type, &tmp_value, &tmp_tb); + Py_INCREF(tb); + PyErr_Restore(tmp_type, tmp_value, tb); + Py_XDECREF(tmp_tb); +#endif + } +bad: + Py_XDECREF(owned_instance); + return; +} + +/* TupleAndListFromArray (used by fastcall) */ +#if !CYTHON_COMPILING_IN_CPYTHON && CYTHON_METH_FASTCALL +static CYTHON_INLINE PyObject * +__Pyx_PyTuple_FromArray(PyObject *const *src, Py_ssize_t n) +{ + PyObject *res; + Py_ssize_t i; + if (n <= 0) { + return __Pyx_NewRef(__pyx_mstate_global->__pyx_empty_tuple); + } + res = PyTuple_New(n); + if (unlikely(res == NULL)) return NULL; + for (i = 0; i < n; i++) { + if (unlikely(__Pyx_PyTuple_SET_ITEM(res, i, src[i]) < (0))) { + Py_DECREF(res); + return NULL; + } + Py_INCREF(src[i]); + } + return res; +} +#elif CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE void __Pyx_copy_object_array(PyObject *const *CYTHON_RESTRICT src, PyObject** CYTHON_RESTRICT dest, Py_ssize_t length) { + PyObject *v; + Py_ssize_t i; + for (i = 0; i < length; i++) { + v = dest[i] = src[i]; + Py_INCREF(v); + } +} +static CYTHON_INLINE PyObject * +__Pyx_PyTuple_FromArray(PyObject *const *src, Py_ssize_t n) +{ + PyObject *res; + if (n <= 0) { + return __Pyx_NewRef(__pyx_mstate_global->__pyx_empty_tuple); + } + res = PyTuple_New(n); + if (unlikely(res == NULL)) return NULL; + __Pyx_copy_object_array(src, ((PyTupleObject*)res)->ob_item, n); + return res; +} +static CYTHON_INLINE PyObject * +__Pyx_PyList_FromArray(PyObject *const *src, Py_ssize_t n) +{ + PyObject *res; + if (n <= 0) { + return PyList_New(0); + } + res = PyList_New(n); + if (unlikely(res == NULL)) return NULL; + __Pyx_copy_object_array(src, ((PyListObject*)res)->ob_item, n); + return res; +} +#endif + +/* BytesEquals (used by UnicodeEquals) */ +static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) { +#if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API || CYTHON_COMPILING_IN_GRAAL ||\ + !(CYTHON_ASSUME_SAFE_SIZE && CYTHON_ASSUME_SAFE_MACROS) + return PyObject_RichCompareBool(s1, s2, equals); +#else + if (s1 == s2) { + return (equals == Py_EQ); + } else if (PyBytes_CheckExact(s1) & PyBytes_CheckExact(s2)) { + const char *ps1, *ps2; + Py_ssize_t length = PyBytes_GET_SIZE(s1); + if (length != PyBytes_GET_SIZE(s2)) + return (equals == Py_NE); + ps1 = PyBytes_AS_STRING(s1); + ps2 = PyBytes_AS_STRING(s2); + if (ps1[0] != ps2[0]) { + return (equals == Py_NE); + } else if (length == 1) { + return (equals == Py_EQ); + } else { + int result; +#if CYTHON_USE_UNICODE_INTERNALS && (PY_VERSION_HEX < 0x030B0000) + Py_hash_t hash1, hash2; + hash1 = ((PyBytesObject*)s1)->ob_shash; + hash2 = ((PyBytesObject*)s2)->ob_shash; + if (hash1 != hash2 && hash1 != -1 && hash2 != -1) { + return (equals == Py_NE); + } +#endif + result = memcmp(ps1, ps2, (size_t)length); + return (equals == Py_EQ) ? (result == 0) : (result != 0); + } + } else if ((s1 == Py_None) & PyBytes_CheckExact(s2)) { + return (equals == Py_NE); + } else if ((s2 == Py_None) & PyBytes_CheckExact(s1)) { + return (equals == Py_NE); + } else { + int result; + PyObject* py_result = PyObject_RichCompare(s1, s2, equals); + if (!py_result) + return -1; + result = __Pyx_PyObject_IsTrue(py_result); + Py_DECREF(py_result); + return result; + } +#endif +} + +/* UnicodeEquals (used by fastcall) */ +static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) { +#if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API || CYTHON_COMPILING_IN_GRAAL + return PyObject_RichCompareBool(s1, s2, equals); +#else + int s1_is_unicode, s2_is_unicode; + if (s1 == s2) { + goto return_eq; + } + s1_is_unicode = PyUnicode_CheckExact(s1); + s2_is_unicode = PyUnicode_CheckExact(s2); + if (s1_is_unicode & s2_is_unicode) { + Py_ssize_t length, length2; + int kind; + void *data1, *data2; + #if !CYTHON_COMPILING_IN_LIMITED_API + if (unlikely(__Pyx_PyUnicode_READY(s1) < 0) || unlikely(__Pyx_PyUnicode_READY(s2) < 0)) + return -1; + #endif + length = __Pyx_PyUnicode_GET_LENGTH(s1); + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely(length < 0)) return -1; + #endif + length2 = __Pyx_PyUnicode_GET_LENGTH(s2); + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely(length2 < 0)) return -1; + #endif + if (length != length2) { + goto return_ne; + } +#if CYTHON_USE_UNICODE_INTERNALS + { + Py_hash_t hash1, hash2; + hash1 = ((PyASCIIObject*)s1)->hash; + hash2 = ((PyASCIIObject*)s2)->hash; + if (hash1 != hash2 && hash1 != -1 && hash2 != -1) { + goto return_ne; + } + } +#endif + kind = __Pyx_PyUnicode_KIND(s1); + if (kind != __Pyx_PyUnicode_KIND(s2)) { + goto return_ne; + } + data1 = __Pyx_PyUnicode_DATA(s1); + data2 = __Pyx_PyUnicode_DATA(s2); + if (__Pyx_PyUnicode_READ(kind, data1, 0) != __Pyx_PyUnicode_READ(kind, data2, 0)) { + goto return_ne; + } else if (length == 1) { + goto return_eq; + } else { + int result = memcmp(data1, data2, (size_t)(length * kind)); + return (equals == Py_EQ) ? (result == 0) : (result != 0); + } + } else if ((s1 == Py_None) & s2_is_unicode) { + goto return_ne; + } else if ((s2 == Py_None) & s1_is_unicode) { + goto return_ne; + } else { + int result; + PyObject* py_result = PyObject_RichCompare(s1, s2, equals); + if (!py_result) + return -1; + result = __Pyx_PyObject_IsTrue(py_result); + Py_DECREF(py_result); + return result; + } +return_eq: + return (equals == Py_EQ); +return_ne: + return (equals == Py_NE); +#endif +} + +/* fastcall */ +#if CYTHON_METH_FASTCALL +static CYTHON_INLINE PyObject * __Pyx_GetKwValue_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues, PyObject *s) +{ + Py_ssize_t i, n = __Pyx_PyTuple_GET_SIZE(kwnames); + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely(n == -1)) return NULL; + #endif + for (i = 0; i < n; i++) + { + PyObject *namei = __Pyx_PyTuple_GET_ITEM(kwnames, i); + #if !CYTHON_ASSUME_SAFE_MACROS + if (unlikely(!namei)) return NULL; + #endif + if (s == namei) return kwvalues[i]; + } + for (i = 0; i < n; i++) + { + PyObject *namei = __Pyx_PyTuple_GET_ITEM(kwnames, i); + #if !CYTHON_ASSUME_SAFE_MACROS + if (unlikely(!namei)) return NULL; + #endif + int eq = __Pyx_PyUnicode_Equals(s, namei, Py_EQ); + if (unlikely(eq != 0)) { + if (unlikely(eq < 0)) return NULL; + return kwvalues[i]; + } + } + return NULL; +} +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030d0000 || CYTHON_COMPILING_IN_LIMITED_API +CYTHON_UNUSED static PyObject *__Pyx_KwargsAsDict_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues) { + Py_ssize_t i, nkwargs; + PyObject *dict; +#if !CYTHON_ASSUME_SAFE_SIZE + nkwargs = PyTuple_Size(kwnames); + if (unlikely(nkwargs < 0)) return NULL; +#else + nkwargs = PyTuple_GET_SIZE(kwnames); +#endif + dict = PyDict_New(); + if (unlikely(!dict)) + return NULL; + for (i=0; ifunc)) { + if (likely(cfunc->flag == METH_NOARGS)) + return __Pyx_CallCFunction(cfunc, self, NULL); + if (likely(cfunc->flag == METH_FASTCALL)) + return __Pyx_CallCFunctionFast(cfunc, self, NULL, 0); + if (cfunc->flag == (METH_FASTCALL | METH_KEYWORDS)) + return __Pyx_CallCFunctionFastWithKeywords(cfunc, self, NULL, 0, NULL); + if (likely(cfunc->flag == (METH_VARARGS | METH_KEYWORDS))) + return __Pyx_CallCFunctionWithKeywords(cfunc, self, __pyx_mstate_global->__pyx_empty_tuple, NULL); + if (cfunc->flag == METH_VARARGS) + return __Pyx_CallCFunction(cfunc, self, __pyx_mstate_global->__pyx_empty_tuple); + return __Pyx__CallUnboundCMethod0(cfunc, self); + } +#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING + else if (unlikely(was_initialized == 1)) { + __Pyx_CachedCFunction tmp_cfunc = { +#ifndef __cplusplus + 0 +#endif + }; + tmp_cfunc.type = cfunc->type; + tmp_cfunc.method_name = cfunc->method_name; + return __Pyx__CallUnboundCMethod0(&tmp_cfunc, self); + } +#endif + PyObject *result = __Pyx__CallUnboundCMethod0(cfunc, self); + __Pyx_CachedCFunction_SetFinishedInitializing(cfunc); + return result; +} +#endif +static PyObject* __Pyx__CallUnboundCMethod0(__Pyx_CachedCFunction* cfunc, PyObject* self) { + PyObject *result; + if (unlikely(!cfunc->method) && unlikely(__Pyx_TryUnpackUnboundCMethod(cfunc) < 0)) return NULL; + result = __Pyx_PyObject_CallOneArg(cfunc->method, self); + return result; +} + +/* py_dict_items (used by OwnedDictNext) */ +static CYTHON_INLINE PyObject* __Pyx_PyDict_Items(PyObject* d) { + return __Pyx_CallUnboundCMethod0(&__pyx_mstate_global->__pyx_umethod_PyDict_Type_items, d); +} + +/* py_dict_values (used by OwnedDictNext) */ +static CYTHON_INLINE PyObject* __Pyx_PyDict_Values(PyObject* d) { + return __Pyx_CallUnboundCMethod0(&__pyx_mstate_global->__pyx_umethod_PyDict_Type_values, d); +} + +/* OwnedDictNext (used by ParseKeywordsImpl) */ +#if CYTHON_AVOID_BORROWED_REFS +static int __Pyx_PyDict_NextRef(PyObject *p, PyObject **ppos, PyObject **pkey, PyObject **pvalue) { + PyObject *next = NULL; + if (!*ppos) { + if (pvalue) { + PyObject *dictview = pkey ? __Pyx_PyDict_Items(p) : __Pyx_PyDict_Values(p); + if (unlikely(!dictview)) goto bad; + *ppos = PyObject_GetIter(dictview); + Py_DECREF(dictview); + } else { + *ppos = PyObject_GetIter(p); + } + if (unlikely(!*ppos)) goto bad; + } + next = PyIter_Next(*ppos); + if (!next) { + if (PyErr_Occurred()) goto bad; + return 0; + } + if (pkey && pvalue) { + *pkey = __Pyx_PySequence_ITEM(next, 0); + if (unlikely(*pkey)) goto bad; + *pvalue = __Pyx_PySequence_ITEM(next, 1); + if (unlikely(*pvalue)) goto bad; + Py_DECREF(next); + } else if (pkey) { + *pkey = next; + } else { + assert(pvalue); + *pvalue = next; + } + return 1; + bad: + Py_XDECREF(next); +#if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d0000 + PyErr_FormatUnraisable("Exception ignored in __Pyx_PyDict_NextRef"); +#else + PyErr_WriteUnraisable(__pyx_mstate_global->__pyx_n_u_Pyx_PyDict_NextRef); +#endif + if (pkey) *pkey = NULL; + if (pvalue) *pvalue = NULL; + return 0; +} +#else // !CYTHON_AVOID_BORROWED_REFS +static int __Pyx_PyDict_NextRef(PyObject *p, Py_ssize_t *ppos, PyObject **pkey, PyObject **pvalue) { + int result = PyDict_Next(p, ppos, pkey, pvalue); + if (likely(result == 1)) { + if (pkey) Py_INCREF(*pkey); + if (pvalue) Py_INCREF(*pvalue); + } + return result; +} +#endif + +/* RaiseDoubleKeywords (used by ParseKeywordsImpl) */ +static void __Pyx_RaiseDoubleKeywordsError( + const char* func_name, + PyObject* kw_name) +{ + PyErr_Format(PyExc_TypeError, + "%s() got multiple values for keyword argument '%U'", func_name, kw_name); +} + +/* ParseKeywordsImpl (used by ParseKeywords) */ +static int __Pyx_ValidateDuplicatePosArgs( + PyObject *kwds, + PyObject ** const argnames[], + PyObject ** const *first_kw_arg, + const char* function_name) +{ + PyObject ** const *name = argnames; + while (name != first_kw_arg) { + PyObject *key = **name; + int found = PyDict_Contains(kwds, key); + if (unlikely(found)) { + if (found == 1) __Pyx_RaiseDoubleKeywordsError(function_name, key); + goto bad; + } + name++; + } + return 0; +bad: + return -1; +} +#if CYTHON_USE_UNICODE_INTERNALS +static CYTHON_INLINE int __Pyx_UnicodeKeywordsEqual(PyObject *s1, PyObject *s2) { + int kind; + Py_ssize_t len = PyUnicode_GET_LENGTH(s1); + if (len != PyUnicode_GET_LENGTH(s2)) return 0; + kind = PyUnicode_KIND(s1); + if (kind != PyUnicode_KIND(s2)) return 0; + const void *data1 = PyUnicode_DATA(s1); + const void *data2 = PyUnicode_DATA(s2); + return (memcmp(data1, data2, (size_t) len * (size_t) kind) == 0); +} +#endif +static int __Pyx_MatchKeywordArg_str( + PyObject *key, + PyObject ** const argnames[], + PyObject ** const *first_kw_arg, + size_t *index_found, + const char *function_name) +{ + PyObject ** const *name; + #if CYTHON_USE_UNICODE_INTERNALS + Py_hash_t key_hash = ((PyASCIIObject*)key)->hash; + if (unlikely(key_hash == -1)) { + key_hash = PyObject_Hash(key); + if (unlikely(key_hash == -1)) + goto bad; + } + #endif + name = first_kw_arg; + while (*name) { + PyObject *name_str = **name; + #if CYTHON_USE_UNICODE_INTERNALS + if (key_hash == ((PyASCIIObject*)name_str)->hash && __Pyx_UnicodeKeywordsEqual(name_str, key)) { + *index_found = (size_t) (name - argnames); + return 1; + } + #else + #if CYTHON_ASSUME_SAFE_SIZE + if (PyUnicode_GET_LENGTH(name_str) == PyUnicode_GET_LENGTH(key)) + #endif + { + int cmp = PyUnicode_Compare(name_str, key); + if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; + if (cmp == 0) { + *index_found = (size_t) (name - argnames); + return 1; + } + } + #endif + name++; + } + name = argnames; + while (name != first_kw_arg) { + PyObject *name_str = **name; + #if CYTHON_USE_UNICODE_INTERNALS + if (unlikely(key_hash == ((PyASCIIObject*)name_str)->hash)) { + if (__Pyx_UnicodeKeywordsEqual(name_str, key)) + goto arg_passed_twice; + } + #else + #if CYTHON_ASSUME_SAFE_SIZE + if (PyUnicode_GET_LENGTH(name_str) == PyUnicode_GET_LENGTH(key)) + #endif + { + if (unlikely(name_str == key)) goto arg_passed_twice; + int cmp = PyUnicode_Compare(name_str, key); + if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; + if (cmp == 0) goto arg_passed_twice; + } + #endif + name++; + } + return 0; +arg_passed_twice: + __Pyx_RaiseDoubleKeywordsError(function_name, key); + goto bad; +bad: + return -1; +} +static int __Pyx_MatchKeywordArg_nostr( + PyObject *key, + PyObject ** const argnames[], + PyObject ** const *first_kw_arg, + size_t *index_found, + const char *function_name) +{ + PyObject ** const *name; + if (unlikely(!PyUnicode_Check(key))) goto invalid_keyword_type; + name = first_kw_arg; + while (*name) { + int cmp = PyObject_RichCompareBool(**name, key, Py_EQ); + if (cmp == 1) { + *index_found = (size_t) (name - argnames); + return 1; + } + if (unlikely(cmp == -1)) goto bad; + name++; + } + name = argnames; + while (name != first_kw_arg) { + int cmp = PyObject_RichCompareBool(**name, key, Py_EQ); + if (unlikely(cmp != 0)) { + if (cmp == 1) goto arg_passed_twice; + else goto bad; + } + name++; + } + return 0; +arg_passed_twice: + __Pyx_RaiseDoubleKeywordsError(function_name, key); + goto bad; +invalid_keyword_type: + PyErr_Format(PyExc_TypeError, + "%.200s() keywords must be strings", function_name); + goto bad; +bad: + return -1; +} +static CYTHON_INLINE int __Pyx_MatchKeywordArg( + PyObject *key, + PyObject ** const argnames[], + PyObject ** const *first_kw_arg, + size_t *index_found, + const char *function_name) +{ + return likely(PyUnicode_CheckExact(key)) ? + __Pyx_MatchKeywordArg_str(key, argnames, first_kw_arg, index_found, function_name) : + __Pyx_MatchKeywordArg_nostr(key, argnames, first_kw_arg, index_found, function_name); +} +static void __Pyx_RejectUnknownKeyword( + PyObject *kwds, + PyObject ** const argnames[], + PyObject ** const *first_kw_arg, + const char *function_name) +{ + #if CYTHON_AVOID_BORROWED_REFS + PyObject *pos = NULL; + #else + Py_ssize_t pos = 0; + #endif + PyObject *key = NULL; + __Pyx_BEGIN_CRITICAL_SECTION(kwds); + while ( + #if CYTHON_AVOID_BORROWED_REFS + __Pyx_PyDict_NextRef(kwds, &pos, &key, NULL) + #else + PyDict_Next(kwds, &pos, &key, NULL) + #endif + ) { + PyObject** const *name = first_kw_arg; + while (*name && (**name != key)) name++; + if (!*name) { + size_t index_found = 0; + int cmp = __Pyx_MatchKeywordArg(key, argnames, first_kw_arg, &index_found, function_name); + if (cmp != 1) { + if (cmp == 0) { + PyErr_Format(PyExc_TypeError, + "%s() got an unexpected keyword argument '%U'", + function_name, key); + } + #if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(key); + #endif + break; + } + } + #if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(key); + #endif + } + __Pyx_END_CRITICAL_SECTION(); + #if CYTHON_AVOID_BORROWED_REFS + Py_XDECREF(pos); + #endif + assert(PyErr_Occurred()); +} +static int __Pyx_ParseKeywordDict( + PyObject *kwds, + PyObject ** const argnames[], + PyObject *values[], + Py_ssize_t num_pos_args, + Py_ssize_t num_kwargs, + const char* function_name, + int ignore_unknown_kwargs) +{ + PyObject** const *name; + PyObject** const *first_kw_arg = argnames + num_pos_args; + Py_ssize_t extracted = 0; +#if !CYTHON_COMPILING_IN_PYPY || defined(PyArg_ValidateKeywordArguments) + if (unlikely(!PyArg_ValidateKeywordArguments(kwds))) return -1; +#endif + name = first_kw_arg; + while (*name && num_kwargs > extracted) { + PyObject * key = **name; + PyObject *value; + int found = 0; + #if __PYX_LIMITED_VERSION_HEX >= 0x030d0000 + found = PyDict_GetItemRef(kwds, key, &value); + #else + value = PyDict_GetItemWithError(kwds, key); + if (value) { + Py_INCREF(value); + found = 1; + } else { + if (unlikely(PyErr_Occurred())) goto bad; + } + #endif + if (found) { + if (unlikely(found < 0)) goto bad; + values[name-argnames] = value; + extracted++; + } + name++; + } + if (num_kwargs > extracted) { + if (ignore_unknown_kwargs) { + if (unlikely(__Pyx_ValidateDuplicatePosArgs(kwds, argnames, first_kw_arg, function_name) == -1)) + goto bad; + } else { + __Pyx_RejectUnknownKeyword(kwds, argnames, first_kw_arg, function_name); + goto bad; + } + } + return 0; +bad: + return -1; +} +static int __Pyx_ParseKeywordDictToDict( + PyObject *kwds, + PyObject ** const argnames[], + PyObject *kwds2, + PyObject *values[], + Py_ssize_t num_pos_args, + const char* function_name) +{ + PyObject** const *name; + PyObject** const *first_kw_arg = argnames + num_pos_args; + Py_ssize_t len; +#if !CYTHON_COMPILING_IN_PYPY || defined(PyArg_ValidateKeywordArguments) + if (unlikely(!PyArg_ValidateKeywordArguments(kwds))) return -1; +#endif + if (PyDict_Update(kwds2, kwds) < 0) goto bad; + name = first_kw_arg; + while (*name) { + PyObject *key = **name; + PyObject *value; +#if !CYTHON_COMPILING_IN_LIMITED_API && (PY_VERSION_HEX >= 0x030d00A2 || defined(PyDict_Pop)) + int found = PyDict_Pop(kwds2, key, &value); + if (found) { + if (unlikely(found < 0)) goto bad; + values[name-argnames] = value; + } +#elif __PYX_LIMITED_VERSION_HEX >= 0x030d0000 + int found = PyDict_GetItemRef(kwds2, key, &value); + if (found) { + if (unlikely(found < 0)) goto bad; + values[name-argnames] = value; + if (unlikely(PyDict_DelItem(kwds2, key) < 0)) goto bad; + } +#else + #if CYTHON_COMPILING_IN_CPYTHON + value = _PyDict_Pop(kwds2, key, kwds2); + #else + value = __Pyx_CallUnboundCMethod2(&__pyx_mstate_global->__pyx_umethod_PyDict_Type_pop, kwds2, key, kwds2); + #endif + if (value == kwds2) { + Py_DECREF(value); + } else { + if (unlikely(!value)) goto bad; + values[name-argnames] = value; + } +#endif + name++; + } + len = PyDict_Size(kwds2); + if (len > 0) { + return __Pyx_ValidateDuplicatePosArgs(kwds, argnames, first_kw_arg, function_name); + } else if (unlikely(len == -1)) { + goto bad; + } + return 0; +bad: + return -1; +} +static int __Pyx_ParseKeywordsTuple( + PyObject *kwds, + PyObject * const *kwvalues, + PyObject ** const argnames[], + PyObject *kwds2, + PyObject *values[], + Py_ssize_t num_pos_args, + Py_ssize_t num_kwargs, + const char* function_name, + int ignore_unknown_kwargs) +{ + PyObject *key = NULL; + PyObject** const * name; + PyObject** const *first_kw_arg = argnames + num_pos_args; + for (Py_ssize_t pos = 0; pos < num_kwargs; pos++) { +#if CYTHON_AVOID_BORROWED_REFS + key = __Pyx_PySequence_ITEM(kwds, pos); +#else + key = __Pyx_PyTuple_GET_ITEM(kwds, pos); +#endif +#if !CYTHON_ASSUME_SAFE_MACROS + if (unlikely(!key)) goto bad; +#endif + name = first_kw_arg; + while (*name && (**name != key)) name++; + if (*name) { + PyObject *value = kwvalues[pos]; + values[name-argnames] = __Pyx_NewRef(value); + } else { + size_t index_found = 0; + int cmp = __Pyx_MatchKeywordArg(key, argnames, first_kw_arg, &index_found, function_name); + if (cmp == 1) { + PyObject *value = kwvalues[pos]; + values[index_found] = __Pyx_NewRef(value); + } else { + if (unlikely(cmp == -1)) goto bad; + if (kwds2) { + PyObject *value = kwvalues[pos]; + if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad; + } else if (!ignore_unknown_kwargs) { + goto invalid_keyword; + } + } + } + #if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(key); + key = NULL; + #endif + } + return 0; +invalid_keyword: + PyErr_Format(PyExc_TypeError, + "%s() got an unexpected keyword argument '%U'", + function_name, key); + goto bad; +bad: + #if CYTHON_AVOID_BORROWED_REFS + Py_XDECREF(key); + #endif + return -1; +} + +/* ParseKeywords */ +static int __Pyx_ParseKeywords( + PyObject *kwds, + PyObject * const *kwvalues, + PyObject ** const argnames[], + PyObject *kwds2, + PyObject *values[], + Py_ssize_t num_pos_args, + Py_ssize_t num_kwargs, + const char* function_name, + int ignore_unknown_kwargs) +{ + if (CYTHON_METH_FASTCALL && likely(PyTuple_Check(kwds))) + return __Pyx_ParseKeywordsTuple(kwds, kwvalues, argnames, kwds2, values, num_pos_args, num_kwargs, function_name, ignore_unknown_kwargs); + else if (kwds2) + return __Pyx_ParseKeywordDictToDict(kwds, argnames, kwds2, values, num_pos_args, function_name); + else + return __Pyx_ParseKeywordDict(kwds, argnames, values, num_pos_args, num_kwargs, function_name, ignore_unknown_kwargs); +} + +/* RaiseArgTupleInvalid */ +static void __Pyx_RaiseArgtupleInvalid( + const char* func_name, + int exact, + Py_ssize_t num_min, + Py_ssize_t num_max, + Py_ssize_t num_found) +{ + Py_ssize_t num_expected; + const char *more_or_less; + if (num_found < num_min) { + num_expected = num_min; + more_or_less = "at least"; + } else { + num_expected = num_max; + more_or_less = "at most"; + } + if (exact) { + more_or_less = "exactly"; + } + PyErr_Format(PyExc_TypeError, + "%.200s() takes %.8s %" CYTHON_FORMAT_SSIZE_T "d positional argument%.1s (%" CYTHON_FORMAT_SSIZE_T "d given)", + func_name, more_or_less, num_expected, + (num_expected == 1) ? "" : "s", num_found); +} + +/* ArgTypeTestFunc (used by ArgTypeTest) */ +static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact) +{ + __Pyx_TypeName type_name; + __Pyx_TypeName obj_type_name; + PyObject *extra_info = __pyx_mstate_global->__pyx_empty_unicode; + int from_annotation_subclass = 0; + if (unlikely(!type)) { + PyErr_SetString(PyExc_SystemError, "Missing type object"); + return 0; + } + else if (!exact) { + if (likely(__Pyx_TypeCheck(obj, type))) return 1; + } else if (exact == 2) { + if (__Pyx_TypeCheck(obj, type)) { + from_annotation_subclass = 1; + extra_info = __pyx_mstate_global->__pyx_kp_u_Note_that_Cython_is_deliberately; + } + } + type_name = __Pyx_PyType_GetFullyQualifiedName(type); + obj_type_name = __Pyx_PyType_GetFullyQualifiedName(Py_TYPE(obj)); + PyErr_Format(PyExc_TypeError, + "Argument '%.200s' has incorrect type (expected " __Pyx_FMT_TYPENAME + ", got " __Pyx_FMT_TYPENAME ")" +#if __PYX_LIMITED_VERSION_HEX < 0x030C0000 + "%s%U" +#endif + , name, type_name, obj_type_name +#if __PYX_LIMITED_VERSION_HEX < 0x030C0000 + , (from_annotation_subclass ? ". " : ""), extra_info +#endif + ); +#if __PYX_LIMITED_VERSION_HEX >= 0x030C0000 + if (exact == 2 && from_annotation_subclass) { + PyObject *res; + PyObject *vargs[2]; + vargs[0] = PyErr_GetRaisedException(); + vargs[1] = extra_info; + res = PyObject_VectorcallMethod(__pyx_mstate_global->__pyx_kp_u_add_note, vargs, 2, NULL); + Py_XDECREF(res); + PyErr_SetRaisedException(vargs[0]); + } +#endif + __Pyx_DECREF_TypeName(type_name); + __Pyx_DECREF_TypeName(obj_type_name); + return 0; +} + +/* decode_c_string */ +static CYTHON_INLINE PyObject* __Pyx_decode_c_string( + const char* cstring, Py_ssize_t start, Py_ssize_t stop, + const char* encoding, const char* errors, + PyObject* (*decode_func)(const char *s, Py_ssize_t size, const char *errors)) { + Py_ssize_t length; + if (unlikely((start < 0) | (stop < 0))) { + size_t slen = strlen(cstring); + if (unlikely(slen > (size_t) PY_SSIZE_T_MAX)) { + PyErr_SetString(PyExc_OverflowError, + "c-string too long to convert to Python"); + return NULL; + } + length = (Py_ssize_t) slen; + if (start < 0) { + start += length; + if (start < 0) + start = 0; + } + if (stop < 0) + stop += length; + } + if (unlikely(stop <= start)) + return __Pyx_NewRef(__pyx_mstate_global->__pyx_empty_unicode); + length = stop - start; + cstring += start; + if (decode_func) { + return decode_func(cstring, length, errors); + } else { + return PyUnicode_Decode(cstring, length, encoding, errors); + } +} + +/* RejectKeywords */ +static void __Pyx_RejectKeywords(const char* function_name, PyObject *kwds) { + PyObject *key = NULL; + if (CYTHON_METH_FASTCALL && likely(PyTuple_Check(kwds))) { + key = __Pyx_PySequence_ITEM(kwds, 0); + } else { +#if CYTHON_AVOID_BORROWED_REFS + PyObject *pos = NULL; +#else + Py_ssize_t pos = 0; +#endif +#if !CYTHON_COMPILING_IN_PYPY || defined(PyArg_ValidateKeywordArguments) + if (unlikely(!PyArg_ValidateKeywordArguments(kwds))) return; +#endif + __Pyx_PyDict_NextRef(kwds, &pos, &key, NULL); +#if CYTHON_AVOID_BORROWED_REFS + Py_XDECREF(pos); +#endif + } + if (likely(key)) { + PyErr_Format(PyExc_TypeError, + "%s() got an unexpected keyword argument '%U'", + function_name, key); + Py_DECREF(key); + } +} + +/* RaiseUnexpectedTypeError */ +static int +__Pyx_RaiseUnexpectedTypeError(const char *expected, PyObject *obj) +{ + __Pyx_TypeName obj_type_name = __Pyx_PyType_GetFullyQualifiedName(Py_TYPE(obj)); + PyErr_Format(PyExc_TypeError, "Expected %s, got " __Pyx_FMT_TYPENAME, + expected, obj_type_name); + __Pyx_DECREF_TypeName(obj_type_name); + return 0; +} + +/* PyDictVersioning */ +#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj) { + PyObject *dict = Py_TYPE(obj)->tp_dict; + return likely(dict) ? __PYX_GET_DICT_VERSION(dict) : 0; +} +static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj) { + PyObject **dictptr = NULL; + Py_ssize_t offset = Py_TYPE(obj)->tp_dictoffset; + if (offset) { +#if CYTHON_COMPILING_IN_CPYTHON + dictptr = (likely(offset > 0)) ? (PyObject **) ((char *)obj + offset) : _PyObject_GetDictPtr(obj); +#else + dictptr = _PyObject_GetDictPtr(obj); +#endif + } + return (dictptr && *dictptr) ? __PYX_GET_DICT_VERSION(*dictptr) : 0; +} +static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version) { + PyObject *dict = Py_TYPE(obj)->tp_dict; + if (unlikely(!dict) || unlikely(tp_dict_version != __PYX_GET_DICT_VERSION(dict))) + return 0; + return obj_dict_version == __Pyx_get_object_dict_version(obj); +} +#endif + +/* ExtTypeTest */ +static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) { + __Pyx_TypeName obj_type_name; + __Pyx_TypeName type_name; + if (unlikely(!type)) { + PyErr_SetString(PyExc_SystemError, "Missing type object"); + return 0; + } + if (likely(__Pyx_TypeCheck(obj, type))) + return 1; + obj_type_name = __Pyx_PyType_GetFullyQualifiedName(Py_TYPE(obj)); + type_name = __Pyx_PyType_GetFullyQualifiedName(type); + PyErr_Format(PyExc_TypeError, + "Cannot convert " __Pyx_FMT_TYPENAME " to " __Pyx_FMT_TYPENAME, + obj_type_name, type_name); + __Pyx_DECREF_TypeName(obj_type_name); + __Pyx_DECREF_TypeName(type_name); + return 0; +} + +/* PyObjectVectorCallKwBuilder (used by PyObjectVectorCallMethodKwBuilder) */ +#if CYTHON_VECTORCALL +static int __Pyx_VectorcallBuilder_AddArg(PyObject *key, PyObject *value, PyObject *builder, PyObject **args, int n) { + (void)__Pyx_PyObject_FastCallDict; + if (__Pyx_PyTuple_SET_ITEM(builder, n, key) != (0)) return -1; + Py_INCREF(key); + args[n] = value; + return 0; +} +CYTHON_UNUSED static int __Pyx_VectorcallBuilder_AddArg_Check(PyObject *key, PyObject *value, PyObject *builder, PyObject **args, int n) { + (void)__Pyx_VectorcallBuilder_AddArgStr; + if (unlikely(!PyUnicode_Check(key))) { + PyErr_SetString(PyExc_TypeError, "keywords must be strings"); + return -1; + } + return __Pyx_VectorcallBuilder_AddArg(key, value, builder, args, n); +} +static int __Pyx_VectorcallBuilder_AddArgStr(const char *key, PyObject *value, PyObject *builder, PyObject **args, int n) { + PyObject *pyKey = PyUnicode_FromString(key); + if (!pyKey) return -1; + return __Pyx_VectorcallBuilder_AddArg(pyKey, value, builder, args, n); +} +#else // CYTHON_VECTORCALL +CYTHON_UNUSED static int __Pyx_VectorcallBuilder_AddArg_Check(PyObject *key, PyObject *value, PyObject *builder, CYTHON_UNUSED PyObject **args, CYTHON_UNUSED int n) { + if (unlikely(!PyUnicode_Check(key))) { + PyErr_SetString(PyExc_TypeError, "keywords must be strings"); + return -1; + } + return PyDict_SetItem(builder, key, value); +} +#endif + +/* PyObjectVectorCallMethodKwBuilder */ +#if !CYTHON_VECTORCALL || PY_VERSION_HEX < 0x03090000 +static PyObject *__Pyx_Object_VectorcallMethod_CallFromBuilder(PyObject *name, PyObject *const *args, size_t nargsf, PyObject *kwnames) { + PyObject *result; + PyObject *obj = PyObject_GetAttr(args[0], name); + if (unlikely(!obj)) + return NULL; + result = __Pyx_Object_Vectorcall_CallFromBuilder(obj, args+1, nargsf-1, kwnames); + Py_DECREF(obj); + return result; +} +#endif + +/* PyObjectFastCallMethod */ +#if !CYTHON_VECTORCALL || PY_VERSION_HEX < 0x03090000 +static PyObject *__Pyx_PyObject_FastCallMethod(PyObject *name, PyObject *const *args, size_t nargsf) { + PyObject *result; + PyObject *attr = PyObject_GetAttr(args[0], name); + if (unlikely(!attr)) + return NULL; + result = __Pyx_PyObject_FastCall(attr, args+1, nargsf - 1); + Py_DECREF(attr); + return result; +} +#endif + +/* SliceObject */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetSlice(PyObject* obj, + Py_ssize_t cstart, Py_ssize_t cstop, + PyObject** _py_start, PyObject** _py_stop, PyObject** _py_slice, + int has_cstart, int has_cstop, CYTHON_UNUSED int wraparound) { + __Pyx_TypeName obj_type_name; +#if CYTHON_USE_TYPE_SLOTS + PyMappingMethods* mp = Py_TYPE(obj)->tp_as_mapping; + if (likely(mp && mp->mp_subscript)) +#endif + { + PyObject* result; + PyObject *py_slice, *py_start, *py_stop; + if (_py_slice) { + py_slice = *_py_slice; + } else { + PyObject* owned_start = NULL; + PyObject* owned_stop = NULL; + if (_py_start) { + py_start = *_py_start; + } else { + if (has_cstart) { + owned_start = py_start = PyLong_FromSsize_t(cstart); + if (unlikely(!py_start)) goto bad; + } else + py_start = Py_None; + } + if (_py_stop) { + py_stop = *_py_stop; + } else { + if (has_cstop) { + owned_stop = py_stop = PyLong_FromSsize_t(cstop); + if (unlikely(!py_stop)) { + Py_XDECREF(owned_start); + goto bad; + } + } else + py_stop = Py_None; + } + py_slice = PySlice_New(py_start, py_stop, Py_None); + Py_XDECREF(owned_start); + Py_XDECREF(owned_stop); + if (unlikely(!py_slice)) goto bad; + } +#if CYTHON_USE_TYPE_SLOTS + result = mp->mp_subscript(obj, py_slice); +#else + result = PyObject_GetItem(obj, py_slice); +#endif + if (!_py_slice) { + Py_DECREF(py_slice); + } + return result; + } + obj_type_name = __Pyx_PyType_GetFullyQualifiedName(Py_TYPE(obj)); + PyErr_Format(PyExc_TypeError, + "'" __Pyx_FMT_TYPENAME "' object is unsliceable", obj_type_name); + __Pyx_DECREF_TypeName(obj_type_name); +bad: + return NULL; +} + +/* GetAttr3 */ +#if __PYX_LIMITED_VERSION_HEX < 0x030d0000 +static PyObject *__Pyx_GetAttr3Default(PyObject *d) { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + if (unlikely(!__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError))) + return NULL; + __Pyx_PyErr_Clear(); + Py_INCREF(d); + return d; +} +#endif +static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *o, PyObject *n, PyObject *d) { + PyObject *r; +#if __PYX_LIMITED_VERSION_HEX >= 0x030d0000 + int res = PyObject_GetOptionalAttr(o, n, &r); + return (res != 0) ? r : __Pyx_NewRef(d); +#else + #if CYTHON_USE_TYPE_SLOTS + if (likely(PyUnicode_Check(n))) { + r = __Pyx_PyObject_GetAttrStrNoError(o, n); + if (unlikely(!r) && likely(!PyErr_Occurred())) { + r = __Pyx_NewRef(d); + } + return r; + } + #endif + r = PyObject_GetAttr(o, n); + return (likely(r)) ? r : __Pyx_GetAttr3Default(d); +#endif +} + +/* GetModuleGlobalName */ +#if CYTHON_USE_DICT_VERSIONS +static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value) +#else +static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name) +#endif +{ + PyObject *result; +#if CYTHON_COMPILING_IN_LIMITED_API + if (unlikely(!__pyx_m)) { + if (!PyErr_Occurred()) + PyErr_SetNone(PyExc_NameError); + return NULL; + } + result = PyObject_GetAttr(__pyx_m, name); + if (likely(result)) { + return result; + } + PyErr_Clear(); +#elif CYTHON_AVOID_BORROWED_REFS || CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS + if (unlikely(__Pyx_PyDict_GetItemRef(__pyx_mstate_global->__pyx_d, name, &result) == -1)) PyErr_Clear(); + __PYX_UPDATE_DICT_CACHE(__pyx_mstate_global->__pyx_d, result, *dict_cached_value, *dict_version) + if (likely(result)) { + return result; + } +#else + result = _PyDict_GetItem_KnownHash(__pyx_mstate_global->__pyx_d, name, ((PyASCIIObject *) name)->hash); + __PYX_UPDATE_DICT_CACHE(__pyx_mstate_global->__pyx_d, result, *dict_cached_value, *dict_version) + if (likely(result)) { + return __Pyx_NewRef(result); + } + PyErr_Clear(); +#endif + return __Pyx_GetBuiltinName(name); +} + +/* GetException (used by pep479) */ +#if CYTHON_FAST_THREAD_STATE +static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) +#else +static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) +#endif +{ + PyObject *local_type = NULL, *local_value, *local_tb = NULL; +#if CYTHON_FAST_THREAD_STATE + PyObject *tmp_type, *tmp_value, *tmp_tb; + #if PY_VERSION_HEX >= 0x030C0000 + local_value = tstate->current_exception; + tstate->current_exception = 0; + #else + local_type = tstate->curexc_type; + local_value = tstate->curexc_value; + local_tb = tstate->curexc_traceback; + tstate->curexc_type = 0; + tstate->curexc_value = 0; + tstate->curexc_traceback = 0; + #endif +#elif __PYX_LIMITED_VERSION_HEX > 0x030C0000 + local_value = PyErr_GetRaisedException(); +#else + PyErr_Fetch(&local_type, &local_value, &local_tb); +#endif +#if __PYX_LIMITED_VERSION_HEX > 0x030C0000 + if (likely(local_value)) { + local_type = (PyObject*) Py_TYPE(local_value); + Py_INCREF(local_type); + local_tb = PyException_GetTraceback(local_value); + } +#else + PyErr_NormalizeException(&local_type, &local_value, &local_tb); +#if CYTHON_FAST_THREAD_STATE + if (unlikely(tstate->curexc_type)) +#else + if (unlikely(PyErr_Occurred())) +#endif + goto bad; + if (local_tb) { + if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0)) + goto bad; + } +#endif // __PYX_LIMITED_VERSION_HEX > 0x030C0000 + Py_XINCREF(local_tb); + Py_XINCREF(local_type); + Py_XINCREF(local_value); + *type = local_type; + *value = local_value; + *tb = local_tb; +#if CYTHON_FAST_THREAD_STATE + #if CYTHON_USE_EXC_INFO_STACK + { + _PyErr_StackItem *exc_info = tstate->exc_info; + #if PY_VERSION_HEX >= 0x030B00a4 + tmp_value = exc_info->exc_value; + exc_info->exc_value = local_value; + tmp_type = NULL; + tmp_tb = NULL; + Py_XDECREF(local_type); + Py_XDECREF(local_tb); + #else + tmp_type = exc_info->exc_type; + tmp_value = exc_info->exc_value; + tmp_tb = exc_info->exc_traceback; + exc_info->exc_type = local_type; + exc_info->exc_value = local_value; + exc_info->exc_traceback = local_tb; + #endif + } + #else + tmp_type = tstate->exc_type; + tmp_value = tstate->exc_value; + tmp_tb = tstate->exc_traceback; + tstate->exc_type = local_type; + tstate->exc_value = local_value; + tstate->exc_traceback = local_tb; + #endif + Py_XDECREF(tmp_type); + Py_XDECREF(tmp_value); + Py_XDECREF(tmp_tb); +#elif __PYX_LIMITED_VERSION_HEX >= 0x030b0000 + PyErr_SetHandledException(local_value); + Py_XDECREF(local_value); + Py_XDECREF(local_type); + Py_XDECREF(local_tb); +#else + PyErr_SetExcInfo(local_type, local_value, local_tb); +#endif + return 0; +#if __PYX_LIMITED_VERSION_HEX <= 0x030C0000 +bad: + *type = 0; + *value = 0; + *tb = 0; + Py_XDECREF(local_type); + Py_XDECREF(local_value); + Py_XDECREF(local_tb); + return -1; +#endif +} + +/* pep479 */ +static void __Pyx_Generator_Replace_StopIteration(int in_async_gen) { + PyObject *exc, *val, *tb, *cur_exc, *new_exc; + __Pyx_PyThreadState_declare + int is_async_stopiteration = 0; + CYTHON_MAYBE_UNUSED_VAR(in_async_gen); + __Pyx_PyThreadState_assign + cur_exc = __Pyx_PyErr_CurrentExceptionType(); + if (likely(!__Pyx_PyErr_GivenExceptionMatches(cur_exc, PyExc_StopIteration))) { + if (in_async_gen && unlikely(__Pyx_PyErr_GivenExceptionMatches(cur_exc, PyExc_StopAsyncIteration))) { + is_async_stopiteration = 1; + } else { + return; + } + } + __Pyx_GetException(&exc, &val, &tb); + Py_XDECREF(exc); + Py_XDECREF(tb); + new_exc = PyObject_CallFunction(PyExc_RuntimeError, "s", + is_async_stopiteration ? "async generator raised StopAsyncIteration" : + in_async_gen ? "async generator raised StopIteration" : + "generator raised StopIteration"); + if (!new_exc) { + Py_XDECREF(val); + return; + } + PyException_SetCause(new_exc, val); // steals ref to val + PyErr_SetObject(PyExc_RuntimeError, new_exc); +} + +/* GetTopmostException (used by SaveResetException) */ +#if CYTHON_USE_EXC_INFO_STACK && CYTHON_FAST_THREAD_STATE +static _PyErr_StackItem * +__Pyx_PyErr_GetTopmostException(PyThreadState *tstate) +{ + _PyErr_StackItem *exc_info = tstate->exc_info; + while ((exc_info->exc_value == NULL || exc_info->exc_value == Py_None) && + exc_info->previous_item != NULL) + { + exc_info = exc_info->previous_item; + } + return exc_info; +} +#endif + +/* SaveResetException */ +#if CYTHON_FAST_THREAD_STATE +static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { + #if CYTHON_USE_EXC_INFO_STACK && PY_VERSION_HEX >= 0x030B00a4 + _PyErr_StackItem *exc_info = __Pyx_PyErr_GetTopmostException(tstate); + PyObject *exc_value = exc_info->exc_value; + if (exc_value == NULL || exc_value == Py_None) { + *value = NULL; + *type = NULL; + *tb = NULL; + } else { + *value = exc_value; + Py_INCREF(*value); + *type = (PyObject*) Py_TYPE(exc_value); + Py_INCREF(*type); + *tb = PyException_GetTraceback(exc_value); + } + #elif CYTHON_USE_EXC_INFO_STACK + _PyErr_StackItem *exc_info = __Pyx_PyErr_GetTopmostException(tstate); + *type = exc_info->exc_type; + *value = exc_info->exc_value; + *tb = exc_info->exc_traceback; + Py_XINCREF(*type); + Py_XINCREF(*value); + Py_XINCREF(*tb); + #else + *type = tstate->exc_type; + *value = tstate->exc_value; + *tb = tstate->exc_traceback; + Py_XINCREF(*type); + Py_XINCREF(*value); + Py_XINCREF(*tb); + #endif +} +static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { + #if CYTHON_USE_EXC_INFO_STACK && PY_VERSION_HEX >= 0x030B00a4 + _PyErr_StackItem *exc_info = tstate->exc_info; + PyObject *tmp_value = exc_info->exc_value; + exc_info->exc_value = value; + Py_XDECREF(tmp_value); + Py_XDECREF(type); + Py_XDECREF(tb); + #else + PyObject *tmp_type, *tmp_value, *tmp_tb; + #if CYTHON_USE_EXC_INFO_STACK + _PyErr_StackItem *exc_info = tstate->exc_info; + tmp_type = exc_info->exc_type; + tmp_value = exc_info->exc_value; + tmp_tb = exc_info->exc_traceback; + exc_info->exc_type = type; + exc_info->exc_value = value; + exc_info->exc_traceback = tb; + #else + tmp_type = tstate->exc_type; + tmp_value = tstate->exc_value; + tmp_tb = tstate->exc_traceback; + tstate->exc_type = type; + tstate->exc_value = value; + tstate->exc_traceback = tb; + #endif + Py_XDECREF(tmp_type); + Py_XDECREF(tmp_value); + Py_XDECREF(tmp_tb); + #endif +} +#endif + +/* GetItemInt */ +static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) { + PyObject *r; + if (unlikely(!j)) return NULL; + r = PyObject_GetItem(o, j); + Py_DECREF(j); + return r; +} +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, + int wraparound, int boundscheck, int unsafe_shared) { + CYTHON_MAYBE_UNUSED_VAR(unsafe_shared); +#if CYTHON_ASSUME_SAFE_SIZE + Py_ssize_t wrapped_i = i; + if (wraparound & unlikely(i < 0)) { + wrapped_i += PyList_GET_SIZE(o); + } + if ((CYTHON_AVOID_BORROWED_REFS || CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS || !CYTHON_ASSUME_SAFE_MACROS)) { + return __Pyx_PyList_GetItemRefFast(o, wrapped_i, unsafe_shared); + } else + if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyList_GET_SIZE(o)))) { + return __Pyx_NewRef(PyList_GET_ITEM(o, wrapped_i)); + } + return __Pyx_GetItemInt_Generic(o, PyLong_FromSsize_t(i)); +#else + (void)wraparound; + (void)boundscheck; + return PySequence_GetItem(o, i); +#endif +} +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, + int wraparound, int boundscheck, int unsafe_shared) { + CYTHON_MAYBE_UNUSED_VAR(unsafe_shared); +#if CYTHON_ASSUME_SAFE_SIZE && CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + Py_ssize_t wrapped_i = i; + if (wraparound & unlikely(i < 0)) { + wrapped_i += PyTuple_GET_SIZE(o); + } + if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyTuple_GET_SIZE(o)))) { + return __Pyx_NewRef(PyTuple_GET_ITEM(o, wrapped_i)); + } + return __Pyx_GetItemInt_Generic(o, PyLong_FromSsize_t(i)); +#else + (void)wraparound; + (void)boundscheck; + return PySequence_GetItem(o, i); +#endif +} +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, int is_list, + int wraparound, int boundscheck, int unsafe_shared) { + CYTHON_MAYBE_UNUSED_VAR(unsafe_shared); +#if CYTHON_ASSUME_SAFE_MACROS && CYTHON_ASSUME_SAFE_SIZE + if (is_list || PyList_CheckExact(o)) { + Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o); + if ((CYTHON_AVOID_BORROWED_REFS || CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS)) { + return __Pyx_PyList_GetItemRefFast(o, n, unsafe_shared); + } else if ((!boundscheck) || (likely(__Pyx_is_valid_index(n, PyList_GET_SIZE(o))))) { + return __Pyx_NewRef(PyList_GET_ITEM(o, n)); + } + } else + #if !CYTHON_AVOID_BORROWED_REFS + if (PyTuple_CheckExact(o)) { + Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o); + if ((!boundscheck) || likely(__Pyx_is_valid_index(n, PyTuple_GET_SIZE(o)))) { + return __Pyx_NewRef(PyTuple_GET_ITEM(o, n)); + } + } else + #endif +#endif +#if CYTHON_USE_TYPE_SLOTS && !CYTHON_COMPILING_IN_PYPY + { + PyMappingMethods *mm = Py_TYPE(o)->tp_as_mapping; + PySequenceMethods *sm = Py_TYPE(o)->tp_as_sequence; + if (!is_list && mm && mm->mp_subscript) { + PyObject *r, *key = PyLong_FromSsize_t(i); + if (unlikely(!key)) return NULL; + r = mm->mp_subscript(o, key); + Py_DECREF(key); + return r; + } + if (is_list || likely(sm && sm->sq_item)) { + if (wraparound && unlikely(i < 0) && likely(sm->sq_length)) { + Py_ssize_t l = sm->sq_length(o); + if (likely(l >= 0)) { + i += l; + } else { + if (!PyErr_ExceptionMatches(PyExc_OverflowError)) + return NULL; + PyErr_Clear(); + } + } + return sm->sq_item(o, i); + } + } +#else + if (is_list || !PyMapping_Check(o)) { + return PySequence_GetItem(o, i); + } +#endif + (void)wraparound; + (void)boundscheck; + return __Pyx_GetItemInt_Generic(o, PyLong_FromSsize_t(i)); +} + +/* ObjectGetItem */ +#if CYTHON_USE_TYPE_SLOTS +static PyObject *__Pyx_PyObject_GetIndex(PyObject *obj, PyObject *index) { + PyObject *runerr = NULL; + Py_ssize_t key_value; + key_value = __Pyx_PyIndex_AsSsize_t(index); + if (likely(key_value != -1 || !(runerr = PyErr_Occurred()))) { + return __Pyx_GetItemInt_Fast(obj, key_value, 0, 1, 1, 1); + } + if (PyErr_GivenExceptionMatches(runerr, PyExc_OverflowError)) { + __Pyx_TypeName index_type_name = __Pyx_PyType_GetFullyQualifiedName(Py_TYPE(index)); + PyErr_Clear(); + PyErr_Format(PyExc_IndexError, + "cannot fit '" __Pyx_FMT_TYPENAME "' into an index-sized integer", index_type_name); + __Pyx_DECREF_TypeName(index_type_name); + } + return NULL; +} +static PyObject *__Pyx_PyObject_GetItem_Slow(PyObject *obj, PyObject *key) { + __Pyx_TypeName obj_type_name; + if (likely(PyType_Check(obj))) { + PyObject *meth = __Pyx_PyObject_GetAttrStrNoError(obj, __pyx_mstate_global->__pyx_n_u_class_getitem); + if (!meth) { + PyErr_Clear(); + } else { + PyObject *result = __Pyx_PyObject_CallOneArg(meth, key); + Py_DECREF(meth); + return result; + } + } + obj_type_name = __Pyx_PyType_GetFullyQualifiedName(Py_TYPE(obj)); + PyErr_Format(PyExc_TypeError, + "'" __Pyx_FMT_TYPENAME "' object is not subscriptable", obj_type_name); + __Pyx_DECREF_TypeName(obj_type_name); + return NULL; +} +static PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject *key) { + PyTypeObject *tp = Py_TYPE(obj); + PyMappingMethods *mm = tp->tp_as_mapping; + PySequenceMethods *sm = tp->tp_as_sequence; + if (likely(mm && mm->mp_subscript)) { + return mm->mp_subscript(obj, key); + } + if (likely(sm && sm->sq_item)) { + return __Pyx_PyObject_GetIndex(obj, key); + } + return __Pyx_PyObject_GetItem_Slow(obj, key); +} +#endif + +/* PyObjectFormatAndDecref */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_FormatSimpleAndDecref(PyObject* s, PyObject* f) { + if (unlikely(!s)) return NULL; + if (likely(PyUnicode_CheckExact(s))) return s; + return __Pyx_PyObject_FormatAndDecref(s, f); +} +static CYTHON_INLINE PyObject* __Pyx_PyObject_FormatAndDecref(PyObject* s, PyObject* f) { + PyObject *result; + if (unlikely(!s)) return NULL; + result = PyObject_Format(s, f); + Py_DECREF(s); + return result; +} + +/* CIntToDigits (used by CIntToPyUnicode) */ +static const char DIGIT_PAIRS_10[2*10*10+1] = { + "00010203040506070809" + "10111213141516171819" + "20212223242526272829" + "30313233343536373839" + "40414243444546474849" + "50515253545556575859" + "60616263646566676869" + "70717273747576777879" + "80818283848586878889" + "90919293949596979899" +}; +static const char DIGIT_PAIRS_8[2*8*8+1] = { + "0001020304050607" + "1011121314151617" + "2021222324252627" + "3031323334353637" + "4041424344454647" + "5051525354555657" + "6061626364656667" + "7071727374757677" +}; +static const char DIGITS_HEX[2*16+1] = { + "0123456789abcdef" + "0123456789ABCDEF" +}; + +/* BuildPyUnicode (used by COrdinalToPyUnicode) */ +static PyObject* __Pyx_PyUnicode_BuildFromAscii(Py_ssize_t ulength, const char* chars, int clength, + int prepend_sign, char padding_char) { + PyObject *uval; + Py_ssize_t uoffset = ulength - clength; +#if CYTHON_USE_UNICODE_INTERNALS + Py_ssize_t i; + void *udata; + uval = PyUnicode_New(ulength, 127); + if (unlikely(!uval)) return NULL; + udata = PyUnicode_DATA(uval); + if (uoffset > 0) { + i = 0; + if (prepend_sign) { + __Pyx_PyUnicode_WRITE(PyUnicode_1BYTE_KIND, udata, 0, '-'); + i++; + } + for (; i < uoffset; i++) { + __Pyx_PyUnicode_WRITE(PyUnicode_1BYTE_KIND, udata, i, padding_char); + } + } + for (i=0; i < clength; i++) { + __Pyx_PyUnicode_WRITE(PyUnicode_1BYTE_KIND, udata, uoffset+i, chars[i]); + } +#else + { + PyObject *sign = NULL, *padding = NULL; + uval = NULL; + if (uoffset > 0) { + prepend_sign = !!prepend_sign; + if (uoffset > prepend_sign) { + padding = PyUnicode_FromOrdinal(padding_char); + if (likely(padding) && uoffset > prepend_sign + 1) { + PyObject *tmp = PySequence_Repeat(padding, uoffset - prepend_sign); + Py_DECREF(padding); + padding = tmp; + } + if (unlikely(!padding)) goto done_or_error; + } + if (prepend_sign) { + sign = PyUnicode_FromOrdinal('-'); + if (unlikely(!sign)) goto done_or_error; + } + } + uval = PyUnicode_DecodeASCII(chars, clength, NULL); + if (likely(uval) && padding) { + PyObject *tmp = PyUnicode_Concat(padding, uval); + Py_DECREF(uval); + uval = tmp; + } + if (likely(uval) && sign) { + PyObject *tmp = PyUnicode_Concat(sign, uval); + Py_DECREF(uval); + uval = tmp; + } +done_or_error: + Py_XDECREF(padding); + Py_XDECREF(sign); + } +#endif + return uval; +} + +/* COrdinalToPyUnicode (used by CIntToPyUnicode) */ +static CYTHON_INLINE int __Pyx_CheckUnicodeValue(int value) { + return value <= 1114111; +} +static PyObject* __Pyx_PyUnicode_FromOrdinal_Padded(int value, Py_ssize_t ulength, char padding_char) { + Py_ssize_t padding_length = ulength - 1; + if (likely((padding_length <= 250) && (value < 0xD800 || value > 0xDFFF))) { + char chars[256]; + if (value <= 255) { + memset(chars, padding_char, (size_t) padding_length); + chars[ulength-1] = (char) value; + return PyUnicode_DecodeLatin1(chars, ulength, NULL); + } + char *cpos = chars + sizeof(chars); + if (value < 0x800) { + *--cpos = (char) (0x80 | (value & 0x3f)); + value >>= 6; + *--cpos = (char) (0xc0 | (value & 0x1f)); + } else if (value < 0x10000) { + *--cpos = (char) (0x80 | (value & 0x3f)); + value >>= 6; + *--cpos = (char) (0x80 | (value & 0x3f)); + value >>= 6; + *--cpos = (char) (0xe0 | (value & 0x0f)); + } else { + *--cpos = (char) (0x80 | (value & 0x3f)); + value >>= 6; + *--cpos = (char) (0x80 | (value & 0x3f)); + value >>= 6; + *--cpos = (char) (0x80 | (value & 0x3f)); + value >>= 6; + *--cpos = (char) (0xf0 | (value & 0x07)); + } + cpos -= padding_length; + memset(cpos, padding_char, (size_t) padding_length); + return PyUnicode_DecodeUTF8(cpos, chars + sizeof(chars) - cpos, NULL); + } + if (value <= 127 && CYTHON_USE_UNICODE_INTERNALS) { + const char chars[1] = {(char) value}; + return __Pyx_PyUnicode_BuildFromAscii(ulength, chars, 1, 0, padding_char); + } + { + PyObject *uchar, *padding_uchar, *padding, *result; + padding_uchar = PyUnicode_FromOrdinal(padding_char); + if (unlikely(!padding_uchar)) return NULL; + padding = PySequence_Repeat(padding_uchar, padding_length); + Py_DECREF(padding_uchar); + if (unlikely(!padding)) return NULL; + uchar = PyUnicode_FromOrdinal(value); + if (unlikely(!uchar)) { + Py_DECREF(padding); + return NULL; + } + result = PyUnicode_Concat(padding, uchar); + Py_DECREF(padding); + Py_DECREF(uchar); + return result; + } +} + +/* CIntToPyUnicode */ +static CYTHON_INLINE PyObject* __Pyx_uchar___Pyx_PyUnicode_From_Py_ssize_t(Py_ssize_t value, Py_ssize_t width, char padding_char) { +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif + const Py_ssize_t neg_one = (Py_ssize_t) -1, const_zero = (Py_ssize_t) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic pop +#endif + const int is_unsigned = neg_one > const_zero; + if (unlikely(!(is_unsigned || value == 0 || value > 0) || + !(sizeof(value) <= 2 || value & ~ (Py_ssize_t) 0x01fffff || __Pyx_CheckUnicodeValue((int) value)))) { + PyErr_SetString(PyExc_OverflowError, "%c arg not in range(0x110000)"); + return NULL; + } + if (width <= 1) { + return PyUnicode_FromOrdinal((int) value); + } + return __Pyx_PyUnicode_FromOrdinal_Padded((int) value, width, padding_char); +} +static CYTHON_INLINE PyObject* __Pyx____Pyx_PyUnicode_From_Py_ssize_t(Py_ssize_t value, Py_ssize_t width, char padding_char, char format_char) { + char digits[sizeof(Py_ssize_t)*3+2]; + char *dpos, *end = digits + sizeof(Py_ssize_t)*3+2; + const char *hex_digits = DIGITS_HEX; + Py_ssize_t length, ulength; + int prepend_sign, last_one_off; + Py_ssize_t remaining; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif + const Py_ssize_t neg_one = (Py_ssize_t) -1, const_zero = (Py_ssize_t) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic pop +#endif + const int is_unsigned = neg_one > const_zero; + if (format_char == 'X') { + hex_digits += 16; + format_char = 'x'; + } + remaining = value; + last_one_off = 0; + dpos = end; + do { + int digit_pos; + switch (format_char) { + case 'o': + digit_pos = abs((int)(remaining % (8*8))); + remaining = (Py_ssize_t) (remaining / (8*8)); + dpos -= 2; + memcpy(dpos, DIGIT_PAIRS_8 + digit_pos * 2, 2); + last_one_off = (digit_pos < 8); + break; + case 'd': + digit_pos = abs((int)(remaining % (10*10))); + remaining = (Py_ssize_t) (remaining / (10*10)); + dpos -= 2; + memcpy(dpos, DIGIT_PAIRS_10 + digit_pos * 2, 2); + last_one_off = (digit_pos < 10); + break; + case 'x': + *(--dpos) = hex_digits[abs((int)(remaining % 16))]; + remaining = (Py_ssize_t) (remaining / 16); + break; + default: + assert(0); + break; + } + } while (unlikely(remaining != 0)); + assert(!last_one_off || *dpos == '0'); + dpos += last_one_off; + length = end - dpos; + ulength = length; + prepend_sign = 0; + if (!is_unsigned && value <= neg_one) { + if (padding_char == ' ' || width <= length + 1) { + *(--dpos) = '-'; + ++length; + } else { + prepend_sign = 1; + } + ++ulength; + } + if (width > ulength) { + ulength = width; + } + if (ulength == 1) { + return PyUnicode_FromOrdinal(*dpos); + } + return __Pyx_PyUnicode_BuildFromAscii(ulength, dpos, (int) length, prepend_sign, padding_char); +} + +/* JoinPyUnicode */ +static PyObject* __Pyx_PyUnicode_Join(PyObject** values, Py_ssize_t value_count, Py_ssize_t result_ulength, + Py_UCS4 max_char) { +#if CYTHON_USE_UNICODE_INTERNALS && CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + PyObject *result_uval; + int result_ukind, kind_shift; + Py_ssize_t i, char_pos; + void *result_udata; + if (max_char > 1114111) max_char = 1114111; + result_uval = PyUnicode_New(result_ulength, max_char); + if (unlikely(!result_uval)) return NULL; + result_ukind = (max_char <= 255) ? PyUnicode_1BYTE_KIND : (max_char <= 65535) ? PyUnicode_2BYTE_KIND : PyUnicode_4BYTE_KIND; + kind_shift = (result_ukind == PyUnicode_4BYTE_KIND) ? 2 : result_ukind - 1; + result_udata = PyUnicode_DATA(result_uval); + assert(kind_shift == 2 || kind_shift == 1 || kind_shift == 0); + if (unlikely((PY_SSIZE_T_MAX >> kind_shift) - result_ulength < 0)) + goto overflow; + char_pos = 0; + for (i=0; i < value_count; i++) { + int ukind; + Py_ssize_t ulength; + void *udata; + PyObject *uval = values[i]; + #if !CYTHON_COMPILING_IN_LIMITED_API + if (__Pyx_PyUnicode_READY(uval) == (-1)) + goto bad; + #endif + ulength = __Pyx_PyUnicode_GET_LENGTH(uval); + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely(ulength < 0)) goto bad; + #endif + if (unlikely(!ulength)) + continue; + if (unlikely((PY_SSIZE_T_MAX >> kind_shift) - ulength < char_pos)) + goto overflow; + ukind = __Pyx_PyUnicode_KIND(uval); + udata = __Pyx_PyUnicode_DATA(uval); + if (ukind == result_ukind) { + memcpy((char *)result_udata + (char_pos << kind_shift), udata, (size_t) (ulength << kind_shift)); + } else { + #if PY_VERSION_HEX >= 0x030d0000 + if (unlikely(PyUnicode_CopyCharacters(result_uval, char_pos, uval, 0, ulength) < 0)) goto bad; + #elif CYTHON_COMPILING_IN_CPYTHON || defined(_PyUnicode_FastCopyCharacters) + _PyUnicode_FastCopyCharacters(result_uval, char_pos, uval, 0, ulength); + #else + Py_ssize_t j; + for (j=0; j < ulength; j++) { + Py_UCS4 uchar = __Pyx_PyUnicode_READ(ukind, udata, j); + __Pyx_PyUnicode_WRITE(result_ukind, result_udata, char_pos+j, uchar); + } + #endif + } + char_pos += ulength; + } + return result_uval; +overflow: + PyErr_SetString(PyExc_OverflowError, "join() result is too long for a Python string"); +bad: + Py_DECREF(result_uval); + return NULL; +#else + Py_ssize_t i; + PyObject *result = NULL; + PyObject *value_tuple = PyTuple_New(value_count); + if (unlikely(!value_tuple)) return NULL; + CYTHON_UNUSED_VAR(max_char); + CYTHON_UNUSED_VAR(result_ulength); + for (i=0; i__pyx_empty_unicode, value_tuple); +bad: + Py_DECREF(value_tuple); + return result; +#endif +} + +/* DictGetItem */ +#if !CYTHON_COMPILING_IN_PYPY +static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) { + PyObject *value; + if (unlikely(__Pyx_PyDict_GetItemRef(d, key, &value) == 0)) { // no value, no error + if (unlikely(PyTuple_Check(key))) { + PyObject* args = PyTuple_Pack(1, key); + if (likely(args)) { + PyErr_SetObject(PyExc_KeyError, args); + Py_DECREF(args); + } + } else { + PyErr_SetObject(PyExc_KeyError, key); + } + } + return value; +} +#endif + +/* CIntToPyUnicode */ +static CYTHON_INLINE PyObject* __Pyx_uchar___Pyx_PyUnicode_From_long(long value, Py_ssize_t width, char padding_char) { +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif + const long neg_one = (long) -1, const_zero = (long) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic pop +#endif + const int is_unsigned = neg_one > const_zero; + if (unlikely(!(is_unsigned || value == 0 || value > 0) || + !(sizeof(value) <= 2 || value & ~ (long) 0x01fffff || __Pyx_CheckUnicodeValue((int) value)))) { + PyErr_SetString(PyExc_OverflowError, "%c arg not in range(0x110000)"); + return NULL; + } + if (width <= 1) { + return PyUnicode_FromOrdinal((int) value); + } + return __Pyx_PyUnicode_FromOrdinal_Padded((int) value, width, padding_char); +} +static CYTHON_INLINE PyObject* __Pyx____Pyx_PyUnicode_From_long(long value, Py_ssize_t width, char padding_char, char format_char) { + char digits[sizeof(long)*3+2]; + char *dpos, *end = digits + sizeof(long)*3+2; + const char *hex_digits = DIGITS_HEX; + Py_ssize_t length, ulength; + int prepend_sign, last_one_off; + long remaining; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif + const long neg_one = (long) -1, const_zero = (long) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic pop +#endif + const int is_unsigned = neg_one > const_zero; + if (format_char == 'X') { + hex_digits += 16; + format_char = 'x'; + } + remaining = value; + last_one_off = 0; + dpos = end; + do { + int digit_pos; + switch (format_char) { + case 'o': + digit_pos = abs((int)(remaining % (8*8))); + remaining = (long) (remaining / (8*8)); + dpos -= 2; + memcpy(dpos, DIGIT_PAIRS_8 + digit_pos * 2, 2); + last_one_off = (digit_pos < 8); + break; + case 'd': + digit_pos = abs((int)(remaining % (10*10))); + remaining = (long) (remaining / (10*10)); + dpos -= 2; + memcpy(dpos, DIGIT_PAIRS_10 + digit_pos * 2, 2); + last_one_off = (digit_pos < 10); + break; + case 'x': + *(--dpos) = hex_digits[abs((int)(remaining % 16))]; + remaining = (long) (remaining / 16); + break; + default: + assert(0); + break; + } + } while (unlikely(remaining != 0)); + assert(!last_one_off || *dpos == '0'); + dpos += last_one_off; + length = end - dpos; + ulength = length; + prepend_sign = 0; + if (!is_unsigned && value <= neg_one) { + if (padding_char == ' ' || width <= length + 1) { + *(--dpos) = '-'; + ++length; + } else { + prepend_sign = 1; + } + ++ulength; + } + if (width > ulength) { + ulength = width; + } + if (ulength == 1) { + return PyUnicode_FromOrdinal(*dpos); + } + return __Pyx_PyUnicode_BuildFromAscii(ulength, dpos, (int) length, prepend_sign, padding_char); +} + +/* UnicodeConcatInPlace */ +# if CYTHON_COMPILING_IN_CPYTHON +static int +__Pyx_unicode_modifiable(PyObject *unicode, int unsafe_shared) +{ + if (!__Pyx_IS_UNIQUELY_REFERENCED(unicode, unsafe_shared)) + return 0; +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX > 0x030F0000 + if (PyUnstable_Unicode_GET_CACHED_HASH(unicode) != -1) + return 0; +#endif + if (!PyUnicode_CheckExact(unicode)) + return 0; + if (PyUnicode_CHECK_INTERNED(unicode)) + return 0; + return 1; +} +static CYTHON_INLINE PyObject *__Pyx_PyUnicode_ConcatInPlaceImpl(PyObject **p_left, PyObject *right, int unsafe_shared + #if CYTHON_REFNANNY + , void* __pyx_refnanny + #endif + ) { + PyObject *left = *p_left; + Py_ssize_t left_len, right_len, new_len; + if (unlikely(__Pyx_PyUnicode_READY(left) == -1)) + return NULL; + if (unlikely(__Pyx_PyUnicode_READY(right) == -1)) + return NULL; + left_len = PyUnicode_GET_LENGTH(left); + if (left_len == 0) { + Py_INCREF(right); + return right; + } + right_len = PyUnicode_GET_LENGTH(right); + if (right_len == 0) { + Py_INCREF(left); + return left; + } + if (unlikely(left_len > PY_SSIZE_T_MAX - right_len)) { + PyErr_SetString(PyExc_OverflowError, + "strings are too large to concat"); + return NULL; + } + new_len = left_len + right_len; + if (__Pyx_unicode_modifiable(left, unsafe_shared) + && PyUnicode_CheckExact(right) + && PyUnicode_KIND(right) <= PyUnicode_KIND(left) + && !(PyUnicode_IS_ASCII(left) && !PyUnicode_IS_ASCII(right))) { + int ret; + __Pyx_GIVEREF(*p_left); + ret = PyUnicode_Resize(p_left, new_len); + __Pyx_GOTREF(*p_left); + if (unlikely(ret != 0)) + return NULL; + #if PY_VERSION_HEX >= 0x030d0000 + if (unlikely(PyUnicode_CopyCharacters(*p_left, left_len, right, 0, right_len) < 0)) return NULL; + #else + _PyUnicode_FastCopyCharacters(*p_left, left_len, right, 0, right_len); + #endif + __Pyx_INCREF(*p_left); + __Pyx_GIVEREF(*p_left); + return *p_left; + } else { + return __Pyx_PyUnicode_Concat(left, right); + } + } +#endif + +/* RaiseUnboundLocalError */ +static void __Pyx_RaiseUnboundLocalError(const char *varname) { + PyErr_Format(PyExc_UnboundLocalError, "local variable '%s' referenced before assignment", varname); +} + +/* HasAttr (used by ImportImpl) */ +#if __PYX_LIMITED_VERSION_HEX < 0x030d0000 +static CYTHON_INLINE int __Pyx_HasAttr(PyObject *o, PyObject *n) { + PyObject *r; + if (unlikely(!PyUnicode_Check(n))) { + PyErr_SetString(PyExc_TypeError, + "hasattr(): attribute name must be string"); + return -1; + } + r = __Pyx_PyObject_GetAttrStrNoError(o, n); + if (!r) { + return (unlikely(PyErr_Occurred())) ? -1 : 0; + } else { + Py_DECREF(r); + return 1; + } +} +#endif + +/* ImportImpl (used by Import) */ +static int __Pyx__Import_GetModule(PyObject *qualname, PyObject **module) { + PyObject *imported_module = PyImport_GetModule(qualname); + if (unlikely(!imported_module)) { + *module = NULL; + if (PyErr_Occurred()) { + return -1; + } + return 0; + } + *module = imported_module; + return 1; +} +static int __Pyx__Import_Lookup(PyObject *qualname, PyObject *const *imported_names, Py_ssize_t len_imported_names, PyObject **module) { + PyObject *imported_module; + PyObject *top_level_package_name; + Py_ssize_t i; + int status, module_found; + Py_ssize_t dot_index; + module_found = __Pyx__Import_GetModule(qualname, &imported_module); + if (unlikely(!module_found || module_found == -1)) { + *module = NULL; + return module_found; + } + if (imported_names) { + for (i = 0; i < len_imported_names; i++) { + PyObject *imported_name = imported_names[i]; +#if __PYX_LIMITED_VERSION_HEX < 0x030d0000 + int has_imported_attribute = PyObject_HasAttr(imported_module, imported_name); +#else + int has_imported_attribute = PyObject_HasAttrWithError(imported_module, imported_name); + if (unlikely(has_imported_attribute == -1)) goto error; +#endif + if (!has_imported_attribute) { + goto not_found; + } + } + *module = imported_module; + return 1; + } + dot_index = PyUnicode_FindChar(qualname, '.', 0, PY_SSIZE_T_MAX, 1); + if (dot_index == -1) { + *module = imported_module; + return 1; + } + if (unlikely(dot_index == -2)) goto error; + top_level_package_name = PyUnicode_Substring(qualname, 0, dot_index); + if (unlikely(!top_level_package_name)) goto error; + Py_DECREF(imported_module); + status = __Pyx__Import_GetModule(top_level_package_name, module); + Py_DECREF(top_level_package_name); + return status; +error: + Py_DECREF(imported_module); + *module = NULL; + return -1; +not_found: + Py_DECREF(imported_module); + *module = NULL; + return 0; +} +static PyObject *__Pyx__Import(PyObject *name, PyObject *const *imported_names, Py_ssize_t len_imported_names, PyObject *qualname, PyObject *moddict, int level) { + PyObject *module = 0; + PyObject *empty_dict = 0; + PyObject *from_list = 0; + int module_found; + if (!qualname) { + qualname = name; + } + module_found = __Pyx__Import_Lookup(qualname, imported_names, len_imported_names, &module); + if (likely(module_found == 1)) { + return module; + } else if (unlikely(module_found == -1)) { + return NULL; + } + empty_dict = PyDict_New(); + if (unlikely(!empty_dict)) + goto bad; + if (imported_names) { +#if CYTHON_COMPILING_IN_CPYTHON + from_list = __Pyx_PyList_FromArray(imported_names, len_imported_names); + if (unlikely(!from_list)) + goto bad; +#else + from_list = PyList_New(len_imported_names); + if (unlikely(!from_list)) goto bad; + for (Py_ssize_t i=0; i__pyx_d, level); +} + +/* RaiseTooManyValuesToUnpack */ +static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) { + PyErr_Format(PyExc_ValueError, + "too many values to unpack (expected %" CYTHON_FORMAT_SSIZE_T "d)", expected); +} + +/* RaiseNeedMoreValuesToUnpack */ +static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) { + PyErr_Format(PyExc_ValueError, + "need more than %" CYTHON_FORMAT_SSIZE_T "d value%.1s to unpack", + index, (index == 1) ? "" : "s"); +} + +/* IterFinish */ +static CYTHON_INLINE int __Pyx_IterFinish(void) { + PyObject* exc_type; + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (unlikely(exc_type)) { + if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) + return -1; + __Pyx_PyErr_Clear(); + return 0; + } + return 0; +} + +/* UnpackItemEndCheck */ +static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected) { + if (unlikely(retval)) { + Py_DECREF(retval); + __Pyx_RaiseTooManyValuesError(expected); + return -1; + } + return __Pyx_IterFinish(); +} + +/* AllocateExtensionType */ +static PyObject *__Pyx_AllocateExtensionType(PyTypeObject *t, int is_final) { + if (is_final || likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) { + allocfunc alloc_func = __Pyx_PyType_GetSlot(t, tp_alloc, allocfunc); + return alloc_func(t, 0); + } else { + newfunc tp_new = __Pyx_PyType_TryGetSlot(&PyBaseObject_Type, tp_new, newfunc); + #if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030A0000 + if (!tp_new) { + PyObject *new_str = PyUnicode_FromString("__new__"); + if (likely(new_str)) { + PyObject *o = PyObject_CallMethodObjArgs((PyObject *)&PyBaseObject_Type, new_str, t, NULL); + Py_DECREF(new_str); + return o; + } else + return NULL; + } else + #endif + return tp_new(t, __pyx_mstate_global->__pyx_empty_tuple, 0); + } +} + +/* CallTypeTraverse */ +#if !CYTHON_USE_TYPE_SPECS || (!CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x03090000) +#else +static int __Pyx_call_type_traverse(PyObject *o, int always_call, visitproc visit, void *arg) { + #if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x03090000 + if (__Pyx_get_runtime_version() < 0x03090000) return 0; + #endif + if (!always_call) { + PyTypeObject *base = __Pyx_PyObject_GetSlot(o, tp_base, PyTypeObject*); + unsigned long flags = PyType_GetFlags(base); + if (flags & Py_TPFLAGS_HEAPTYPE) { + return 0; + } + } + Py_VISIT((PyObject*)Py_TYPE(o)); + return 0; +} +#endif + +/* LimitedApiGetTypeDict (used by SetItemOnTypeDict) */ +#if CYTHON_COMPILING_IN_LIMITED_API +static Py_ssize_t __Pyx_GetTypeDictOffset(void) { + PyObject *tp_dictoffset_o; + Py_ssize_t tp_dictoffset; + tp_dictoffset_o = PyObject_GetAttrString((PyObject*)(&PyType_Type), "__dictoffset__"); + if (unlikely(!tp_dictoffset_o)) return -1; + tp_dictoffset = PyLong_AsSsize_t(tp_dictoffset_o); + Py_DECREF(tp_dictoffset_o); + if (unlikely(tp_dictoffset == 0)) { + PyErr_SetString( + PyExc_TypeError, + "'type' doesn't have a dictoffset"); + return -1; + } else if (unlikely(tp_dictoffset < 0)) { + PyErr_SetString( + PyExc_TypeError, + "'type' has an unexpected negative dictoffset. " + "Please report this as Cython bug"); + return -1; + } + return tp_dictoffset; +} +static PyObject *__Pyx_GetTypeDict(PyTypeObject *tp) { + static Py_ssize_t tp_dictoffset = 0; + if (unlikely(tp_dictoffset == 0)) { + tp_dictoffset = __Pyx_GetTypeDictOffset(); + if (unlikely(tp_dictoffset == -1 && PyErr_Occurred())) { + tp_dictoffset = 0; // try again next time? + return NULL; + } + } + return *(PyObject**)((char*)tp + tp_dictoffset); +} +#endif + +/* SetItemOnTypeDict (used by FixUpExtensionType) */ +static int __Pyx__SetItemOnTypeDict(PyTypeObject *tp, PyObject *k, PyObject *v) { + int result; + PyObject *tp_dict; +#if CYTHON_COMPILING_IN_LIMITED_API + tp_dict = __Pyx_GetTypeDict(tp); + if (unlikely(!tp_dict)) return -1; +#else + tp_dict = tp->tp_dict; +#endif + result = PyDict_SetItem(tp_dict, k, v); + if (likely(!result)) { + PyType_Modified(tp); + if (unlikely(PyObject_HasAttr(v, __pyx_mstate_global->__pyx_n_u_set_name))) { + PyObject *setNameResult = PyObject_CallMethodObjArgs(v, __pyx_mstate_global->__pyx_n_u_set_name, (PyObject *) tp, k, NULL); + if (!setNameResult) return -1; + Py_DECREF(setNameResult); + } + } + return result; +} + +/* FixUpExtensionType */ +static int __Pyx_fix_up_extension_type_from_spec(PyType_Spec *spec, PyTypeObject *type) { +#if __PYX_LIMITED_VERSION_HEX > 0x030900B1 + CYTHON_UNUSED_VAR(spec); + CYTHON_UNUSED_VAR(type); + CYTHON_UNUSED_VAR(__Pyx__SetItemOnTypeDict); +#else + const PyType_Slot *slot = spec->slots; + int changed = 0; +#if !CYTHON_COMPILING_IN_LIMITED_API + while (slot && slot->slot && slot->slot != Py_tp_members) + slot++; + if (slot && slot->slot == Py_tp_members) { +#if !CYTHON_COMPILING_IN_CPYTHON + const +#endif // !CYTHON_COMPILING_IN_CPYTHON) + PyMemberDef *memb = (PyMemberDef*) slot->pfunc; + while (memb && memb->name) { + if (memb->name[0] == '_' && memb->name[1] == '_') { + if (strcmp(memb->name, "__weaklistoffset__") == 0) { + assert(memb->type == T_PYSSIZET); + assert(memb->flags == READONLY); + type->tp_weaklistoffset = memb->offset; + changed = 1; + } + else if (strcmp(memb->name, "__dictoffset__") == 0) { + assert(memb->type == T_PYSSIZET); + assert(memb->flags == READONLY); + type->tp_dictoffset = memb->offset; + changed = 1; + } +#if CYTHON_METH_FASTCALL + else if (strcmp(memb->name, "__vectorcalloffset__") == 0) { + assert(memb->type == T_PYSSIZET); + assert(memb->flags == READONLY); + type->tp_vectorcall_offset = memb->offset; + changed = 1; + } +#endif // CYTHON_METH_FASTCALL +#if !CYTHON_COMPILING_IN_PYPY + else if (strcmp(memb->name, "__module__") == 0) { + PyObject *descr; + assert(memb->type == T_OBJECT); + assert(memb->flags == 0 || memb->flags == READONLY); + descr = PyDescr_NewMember(type, memb); + if (unlikely(!descr)) + return -1; + int set_item_result = PyDict_SetItem(type->tp_dict, PyDescr_NAME(descr), descr); + Py_DECREF(descr); + if (unlikely(set_item_result < 0)) { + return -1; + } + changed = 1; + } +#endif // !CYTHON_COMPILING_IN_PYPY + } + memb++; + } + } +#endif // !CYTHON_COMPILING_IN_LIMITED_API +#if !CYTHON_COMPILING_IN_PYPY + slot = spec->slots; + while (slot && slot->slot && slot->slot != Py_tp_getset) + slot++; + if (slot && slot->slot == Py_tp_getset) { + PyGetSetDef *getset = (PyGetSetDef*) slot->pfunc; + while (getset && getset->name) { + if (getset->name[0] == '_' && getset->name[1] == '_' && strcmp(getset->name, "__module__") == 0) { + PyObject *descr = PyDescr_NewGetSet(type, getset); + if (unlikely(!descr)) + return -1; + #if CYTHON_COMPILING_IN_LIMITED_API + PyObject *pyname = PyUnicode_FromString(getset->name); + if (unlikely(!pyname)) { + Py_DECREF(descr); + return -1; + } + int set_item_result = __Pyx_SetItemOnTypeDict(type, pyname, descr); + Py_DECREF(pyname); + #else + CYTHON_UNUSED_VAR(__Pyx__SetItemOnTypeDict); + int set_item_result = PyDict_SetItem(type->tp_dict, PyDescr_NAME(descr), descr); + #endif + Py_DECREF(descr); + if (unlikely(set_item_result < 0)) { + return -1; + } + changed = 1; + } + ++getset; + } + } +#else + CYTHON_UNUSED_VAR(__Pyx__SetItemOnTypeDict); +#endif // !CYTHON_COMPILING_IN_PYPY + if (changed) + PyType_Modified(type); +#endif // PY_VERSION_HEX > 0x030900B1 + return 0; +} + +/* PyObjectCallNoArg (used by PyObjectCallMethod0) */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) { + PyObject *arg[2] = {NULL, NULL}; + return __Pyx_PyObject_FastCall(func, arg + 1, 0 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET); +} + +/* PyObjectGetMethod (used by PyObjectCallMethod0) */ +#if !(CYTHON_VECTORCALL && (__PYX_LIMITED_VERSION_HEX >= 0x030C0000 || (!CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x03090000))) +static int __Pyx_PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **method) { + PyObject *attr; +#if CYTHON_UNPACK_METHODS && CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_PYTYPE_LOOKUP + __Pyx_TypeName type_name; + PyTypeObject *tp = Py_TYPE(obj); + PyObject *descr; + descrgetfunc f = NULL; + PyObject **dictptr, *dict; + int meth_found = 0; + assert (*method == NULL); + if (unlikely(tp->tp_getattro != PyObject_GenericGetAttr)) { + attr = __Pyx_PyObject_GetAttrStr(obj, name); + goto try_unpack; + } + if (unlikely(tp->tp_dict == NULL) && unlikely(PyType_Ready(tp) < 0)) { + return 0; + } + descr = _PyType_Lookup(tp, name); + if (likely(descr != NULL)) { + Py_INCREF(descr); +#if defined(Py_TPFLAGS_METHOD_DESCRIPTOR) && Py_TPFLAGS_METHOD_DESCRIPTOR + if (__Pyx_PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_METHOD_DESCRIPTOR)) +#else + #ifdef __Pyx_CyFunction_USED + if (likely(PyFunction_Check(descr) || __Pyx_IS_TYPE(descr, &PyMethodDescr_Type) || __Pyx_CyFunction_Check(descr))) + #else + if (likely(PyFunction_Check(descr) || __Pyx_IS_TYPE(descr, &PyMethodDescr_Type))) + #endif +#endif + { + meth_found = 1; + } else { + f = Py_TYPE(descr)->tp_descr_get; + if (f != NULL && PyDescr_IsData(descr)) { + attr = f(descr, obj, (PyObject *)Py_TYPE(obj)); + Py_DECREF(descr); + goto try_unpack; + } + } + } + dictptr = _PyObject_GetDictPtr(obj); + if (dictptr != NULL && (dict = *dictptr) != NULL) { + Py_INCREF(dict); + attr = __Pyx_PyDict_GetItemStr(dict, name); + if (attr != NULL) { + Py_INCREF(attr); + Py_DECREF(dict); + Py_XDECREF(descr); + goto try_unpack; + } + Py_DECREF(dict); + } + if (meth_found) { + *method = descr; + return 1; + } + if (f != NULL) { + attr = f(descr, obj, (PyObject *)Py_TYPE(obj)); + Py_DECREF(descr); + goto try_unpack; + } + if (likely(descr != NULL)) { + *method = descr; + return 0; + } + type_name = __Pyx_PyType_GetFullyQualifiedName(tp); + PyErr_Format(PyExc_AttributeError, + "'" __Pyx_FMT_TYPENAME "' object has no attribute '%U'", + type_name, name); + __Pyx_DECREF_TypeName(type_name); + return 0; +#else + attr = __Pyx_PyObject_GetAttrStr(obj, name); + goto try_unpack; +#endif +try_unpack: +#if CYTHON_UNPACK_METHODS + if (likely(attr) && PyMethod_Check(attr) && likely(PyMethod_GET_SELF(attr) == obj)) { + PyObject *function = PyMethod_GET_FUNCTION(attr); + Py_INCREF(function); + Py_DECREF(attr); + *method = function; + return 1; + } +#endif + *method = attr; + return 0; +} +#endif + +/* PyObjectCallMethod0 (used by PyType_Ready) */ +static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name) { +#if CYTHON_VECTORCALL && (__PYX_LIMITED_VERSION_HEX >= 0x030C0000 || (!CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x03090000)) + PyObject *args[1] = {obj}; + (void) __Pyx_PyObject_CallOneArg; + (void) __Pyx_PyObject_CallNoArg; + return PyObject_VectorcallMethod(method_name, args, 1 | PY_VECTORCALL_ARGUMENTS_OFFSET, NULL); +#else + PyObject *method = NULL, *result = NULL; + int is_method = __Pyx_PyObject_GetMethod(obj, method_name, &method); + if (likely(is_method)) { + result = __Pyx_PyObject_CallOneArg(method, obj); + Py_DECREF(method); + return result; + } + if (unlikely(!method)) goto bad; + result = __Pyx_PyObject_CallNoArg(method); + Py_DECREF(method); +bad: + return result; +#endif +} + +/* ValidateBasesTuple (used by PyType_Ready) */ +#if CYTHON_COMPILING_IN_CPYTHON || CYTHON_COMPILING_IN_LIMITED_API || CYTHON_USE_TYPE_SPECS +static int __Pyx_validate_bases_tuple(const char *type_name, Py_ssize_t dictoffset, PyObject *bases) { + Py_ssize_t i, n; +#if CYTHON_ASSUME_SAFE_SIZE + n = PyTuple_GET_SIZE(bases); +#else + n = PyTuple_Size(bases); + if (unlikely(n < 0)) return -1; +#endif + for (i = 1; i < n; i++) + { + PyTypeObject *b; +#if CYTHON_AVOID_BORROWED_REFS + PyObject *b0 = PySequence_GetItem(bases, i); + if (!b0) return -1; +#elif CYTHON_ASSUME_SAFE_MACROS + PyObject *b0 = PyTuple_GET_ITEM(bases, i); +#else + PyObject *b0 = PyTuple_GetItem(bases, i); + if (!b0) return -1; +#endif + b = (PyTypeObject*) b0; + if (!__Pyx_PyType_HasFeature(b, Py_TPFLAGS_HEAPTYPE)) + { + __Pyx_TypeName b_name = __Pyx_PyType_GetFullyQualifiedName(b); + PyErr_Format(PyExc_TypeError, + "base class '" __Pyx_FMT_TYPENAME "' is not a heap type", b_name); + __Pyx_DECREF_TypeName(b_name); +#if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(b0); +#endif + return -1; + } + if (dictoffset == 0) + { + Py_ssize_t b_dictoffset = 0; +#if CYTHON_USE_TYPE_SLOTS + b_dictoffset = b->tp_dictoffset; +#else + PyObject *py_b_dictoffset = PyObject_GetAttrString((PyObject*)b, "__dictoffset__"); + if (!py_b_dictoffset) goto dictoffset_return; + b_dictoffset = PyLong_AsSsize_t(py_b_dictoffset); + Py_DECREF(py_b_dictoffset); + if (b_dictoffset == -1 && PyErr_Occurred()) goto dictoffset_return; +#endif + if (b_dictoffset) { + { + __Pyx_TypeName b_name = __Pyx_PyType_GetFullyQualifiedName(b); + PyErr_Format(PyExc_TypeError, + "extension type '%.200s' has no __dict__ slot, " + "but base type '" __Pyx_FMT_TYPENAME "' has: " + "either add 'cdef dict __dict__' to the extension type " + "or add '__slots__ = [...]' to the base type", + type_name, b_name); + __Pyx_DECREF_TypeName(b_name); + } +#if !CYTHON_USE_TYPE_SLOTS + dictoffset_return: +#endif +#if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(b0); +#endif + return -1; + } + } +#if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(b0); +#endif + } + return 0; +} +#endif + +/* PyType_Ready */ +CYTHON_UNUSED static int __Pyx_PyType_HasMultipleInheritance(PyTypeObject *t) { + while (t) { + PyObject *bases = __Pyx_PyType_GetSlot(t, tp_bases, PyObject*); + if (bases) { + return 1; + } + t = __Pyx_PyType_GetSlot(t, tp_base, PyTypeObject*); + } + return 0; +} +static int __Pyx_PyType_Ready(PyTypeObject *t) { +#if CYTHON_USE_TYPE_SPECS || !CYTHON_COMPILING_IN_CPYTHON || defined(PYSTON_MAJOR_VERSION) + (void)__Pyx_PyObject_CallMethod0; +#if CYTHON_USE_TYPE_SPECS + (void)__Pyx_validate_bases_tuple; +#endif + return PyType_Ready(t); +#else + int r; + if (!__Pyx_PyType_HasMultipleInheritance(t)) { + return PyType_Ready(t); + } + PyObject *bases = __Pyx_PyType_GetSlot(t, tp_bases, PyObject*); + if (bases && unlikely(__Pyx_validate_bases_tuple(t->tp_name, t->tp_dictoffset, bases) == -1)) + return -1; +#if !defined(PYSTON_MAJOR_VERSION) + { + int gc_was_enabled; + #if PY_VERSION_HEX >= 0x030A00b1 + gc_was_enabled = PyGC_Disable(); + (void)__Pyx_PyObject_CallMethod0; + #else + PyObject *ret, *py_status; + PyObject *gc = NULL; + #if (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM+0 >= 0x07030400) &&\ + !CYTHON_COMPILING_IN_GRAAL + gc = PyImport_GetModule(__pyx_mstate_global->__pyx_kp_u_gc); + #endif + if (unlikely(!gc)) gc = PyImport_Import(__pyx_mstate_global->__pyx_kp_u_gc); + if (unlikely(!gc)) return -1; + py_status = __Pyx_PyObject_CallMethod0(gc, __pyx_mstate_global->__pyx_kp_u_isenabled); + if (unlikely(!py_status)) { + Py_DECREF(gc); + return -1; + } + gc_was_enabled = __Pyx_PyObject_IsTrue(py_status); + Py_DECREF(py_status); + if (gc_was_enabled > 0) { + ret = __Pyx_PyObject_CallMethod0(gc, __pyx_mstate_global->__pyx_kp_u_disable); + if (unlikely(!ret)) { + Py_DECREF(gc); + return -1; + } + Py_DECREF(ret); + } else if (unlikely(gc_was_enabled == -1)) { + Py_DECREF(gc); + return -1; + } + #endif + t->tp_flags |= Py_TPFLAGS_HEAPTYPE; +#if PY_VERSION_HEX >= 0x030A0000 + t->tp_flags |= Py_TPFLAGS_IMMUTABLETYPE; +#endif +#else + (void)__Pyx_PyObject_CallMethod0; +#endif + r = PyType_Ready(t); +#if !defined(PYSTON_MAJOR_VERSION) + t->tp_flags &= ~Py_TPFLAGS_HEAPTYPE; + #if PY_VERSION_HEX >= 0x030A00b1 + if (gc_was_enabled) + PyGC_Enable(); + #else + if (gc_was_enabled) { + PyObject *tp, *v, *tb; + PyErr_Fetch(&tp, &v, &tb); + ret = __Pyx_PyObject_CallMethod0(gc, __pyx_mstate_global->__pyx_kp_u_enable); + if (likely(ret || r == -1)) { + Py_XDECREF(ret); + PyErr_Restore(tp, v, tb); + } else { + Py_XDECREF(tp); + Py_XDECREF(v); + Py_XDECREF(tb); + r = -1; + } + } + Py_DECREF(gc); + #endif + } +#endif + return r; +#endif +} + +/* SetVTable */ +static int __Pyx_SetVtable(PyTypeObject *type, void *vtable) { + PyObject *ob = PyCapsule_New(vtable, 0, 0); + if (unlikely(!ob)) + goto bad; +#if CYTHON_COMPILING_IN_LIMITED_API + if (unlikely(PyObject_SetAttr((PyObject *) type, __pyx_mstate_global->__pyx_n_u_pyx_vtable, ob) < 0)) +#else + if (unlikely(PyDict_SetItem(type->tp_dict, __pyx_mstate_global->__pyx_n_u_pyx_vtable, ob) < 0)) +#endif + goto bad; + Py_DECREF(ob); + return 0; +bad: + Py_XDECREF(ob); + return -1; +} + +/* GetVTable (used by MergeVTables) */ +static void* __Pyx_GetVtable(PyTypeObject *type) { + void* ptr; +#if CYTHON_COMPILING_IN_LIMITED_API + PyObject *ob = PyObject_GetAttr((PyObject *)type, __pyx_mstate_global->__pyx_n_u_pyx_vtable); +#else + PyObject *ob = PyObject_GetItem(type->tp_dict, __pyx_mstate_global->__pyx_n_u_pyx_vtable); +#endif + if (!ob) + goto bad; + ptr = PyCapsule_GetPointer(ob, 0); + if (!ptr && !PyErr_Occurred()) + PyErr_SetString(PyExc_RuntimeError, "invalid vtable found for imported type"); + Py_DECREF(ob); + return ptr; +bad: + Py_XDECREF(ob); + return NULL; +} + +/* MergeVTables */ +static int __Pyx_MergeVtables(PyTypeObject *type) { + int i=0; + Py_ssize_t size; + void** base_vtables; + __Pyx_TypeName tp_base_name = NULL; + __Pyx_TypeName base_name = NULL; + void* unknown = (void*)-1; + PyObject* bases = __Pyx_PyType_GetSlot(type, tp_bases, PyObject*); + int base_depth = 0; + { + PyTypeObject* base = __Pyx_PyType_GetSlot(type, tp_base, PyTypeObject*); + while (base) { + base_depth += 1; + base = __Pyx_PyType_GetSlot(base, tp_base, PyTypeObject*); + } + } + base_vtables = (void**) PyMem_Malloc(sizeof(void*) * (size_t)(base_depth + 1)); + base_vtables[0] = unknown; +#if CYTHON_COMPILING_IN_LIMITED_API + size = PyTuple_Size(bases); + if (size < 0) goto other_failure; +#else + size = PyTuple_GET_SIZE(bases); +#endif + for (i = 1; i < size; i++) { + PyObject *basei; + void* base_vtable; +#if CYTHON_AVOID_BORROWED_REFS + basei = PySequence_GetItem(bases, i); + if (unlikely(!basei)) goto other_failure; +#elif !CYTHON_ASSUME_SAFE_MACROS + basei = PyTuple_GetItem(bases, i); + if (unlikely(!basei)) goto other_failure; +#else + basei = PyTuple_GET_ITEM(bases, i); +#endif + base_vtable = __Pyx_GetVtable((PyTypeObject*)basei); +#if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(basei); +#endif + if (base_vtable != NULL) { + int j; + PyTypeObject* base = __Pyx_PyType_GetSlot(type, tp_base, PyTypeObject*); + for (j = 0; j < base_depth; j++) { + if (base_vtables[j] == unknown) { + base_vtables[j] = __Pyx_GetVtable(base); + base_vtables[j + 1] = unknown; + } + if (base_vtables[j] == base_vtable) { + break; + } else if (base_vtables[j] == NULL) { + goto bad; + } + base = __Pyx_PyType_GetSlot(base, tp_base, PyTypeObject*); + } + } + } + PyErr_Clear(); + PyMem_Free(base_vtables); + return 0; +bad: + { + PyTypeObject* basei = NULL; + PyTypeObject* tp_base = __Pyx_PyType_GetSlot(type, tp_base, PyTypeObject*); + tp_base_name = __Pyx_PyType_GetFullyQualifiedName(tp_base); +#if CYTHON_AVOID_BORROWED_REFS + basei = (PyTypeObject*)PySequence_GetItem(bases, i); + if (unlikely(!basei)) goto really_bad; +#elif !CYTHON_ASSUME_SAFE_MACROS + basei = (PyTypeObject*)PyTuple_GetItem(bases, i); + if (unlikely(!basei)) goto really_bad; +#else + basei = (PyTypeObject*)PyTuple_GET_ITEM(bases, i); +#endif + base_name = __Pyx_PyType_GetFullyQualifiedName(basei); +#if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(basei); +#endif + } + PyErr_Format(PyExc_TypeError, + "multiple bases have vtable conflict: '" __Pyx_FMT_TYPENAME "' and '" __Pyx_FMT_TYPENAME "'", tp_base_name, base_name); +#if CYTHON_AVOID_BORROWED_REFS || !CYTHON_ASSUME_SAFE_MACROS +really_bad: // bad has failed! +#endif + __Pyx_DECREF_TypeName(tp_base_name); + __Pyx_DECREF_TypeName(base_name); +#if CYTHON_COMPILING_IN_LIMITED_API || CYTHON_AVOID_BORROWED_REFS || !CYTHON_ASSUME_SAFE_MACROS +other_failure: +#endif + PyMem_Free(base_vtables); + return -1; +} + +/* DelItemOnTypeDict (used by SetupReduce) */ +static int __Pyx__DelItemOnTypeDict(PyTypeObject *tp, PyObject *k) { + int result; + PyObject *tp_dict; +#if CYTHON_COMPILING_IN_LIMITED_API + tp_dict = __Pyx_GetTypeDict(tp); + if (unlikely(!tp_dict)) return -1; +#else + tp_dict = tp->tp_dict; +#endif + result = PyDict_DelItem(tp_dict, k); + if (likely(!result)) PyType_Modified(tp); + return result; +} + +/* SetupReduce */ +static int __Pyx_setup_reduce_is_named(PyObject* meth, PyObject* name) { + int ret; + PyObject *name_attr; + name_attr = __Pyx_PyObject_GetAttrStrNoError(meth, __pyx_mstate_global->__pyx_n_u_name); + if (likely(name_attr)) { + ret = PyObject_RichCompareBool(name_attr, name, Py_EQ); + } else { + ret = -1; + } + if (unlikely(ret < 0)) { + PyErr_Clear(); + ret = 0; + } + Py_XDECREF(name_attr); + return ret; +} +static int __Pyx_setup_reduce(PyObject* type_obj) { + int ret = 0; + PyObject *object_reduce = NULL; + PyObject *object_getstate = NULL; + PyObject *object_reduce_ex = NULL; + PyObject *reduce = NULL; + PyObject *reduce_ex = NULL; + PyObject *reduce_cython = NULL; + PyObject *setstate = NULL; + PyObject *setstate_cython = NULL; + PyObject *getstate = NULL; +#if CYTHON_USE_PYTYPE_LOOKUP + getstate = _PyType_Lookup((PyTypeObject*)type_obj, __pyx_mstate_global->__pyx_n_u_getstate); +#else + getstate = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_mstate_global->__pyx_n_u_getstate); + if (!getstate && PyErr_Occurred()) { + goto __PYX_BAD; + } +#endif + if (getstate) { +#if CYTHON_USE_PYTYPE_LOOKUP + object_getstate = _PyType_Lookup(&PyBaseObject_Type, __pyx_mstate_global->__pyx_n_u_getstate); +#else + object_getstate = __Pyx_PyObject_GetAttrStrNoError((PyObject*)&PyBaseObject_Type, __pyx_mstate_global->__pyx_n_u_getstate); + if (!object_getstate && PyErr_Occurred()) { + goto __PYX_BAD; + } +#endif + if (object_getstate != getstate) { + goto __PYX_GOOD; + } + } +#if CYTHON_USE_PYTYPE_LOOKUP + object_reduce_ex = _PyType_Lookup(&PyBaseObject_Type, __pyx_mstate_global->__pyx_n_u_reduce_ex); if (!object_reduce_ex) goto __PYX_BAD; +#else + object_reduce_ex = __Pyx_PyObject_GetAttrStr((PyObject*)&PyBaseObject_Type, __pyx_mstate_global->__pyx_n_u_reduce_ex); if (!object_reduce_ex) goto __PYX_BAD; +#endif + reduce_ex = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_mstate_global->__pyx_n_u_reduce_ex); if (unlikely(!reduce_ex)) goto __PYX_BAD; + if (reduce_ex == object_reduce_ex) { +#if CYTHON_USE_PYTYPE_LOOKUP + object_reduce = _PyType_Lookup(&PyBaseObject_Type, __pyx_mstate_global->__pyx_n_u_reduce); if (!object_reduce) goto __PYX_BAD; +#else + object_reduce = __Pyx_PyObject_GetAttrStr((PyObject*)&PyBaseObject_Type, __pyx_mstate_global->__pyx_n_u_reduce); if (!object_reduce) goto __PYX_BAD; +#endif + reduce = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_mstate_global->__pyx_n_u_reduce); if (unlikely(!reduce)) goto __PYX_BAD; + if (reduce == object_reduce || __Pyx_setup_reduce_is_named(reduce, __pyx_mstate_global->__pyx_n_u_reduce_cython)) { + reduce_cython = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_mstate_global->__pyx_n_u_reduce_cython); + if (likely(reduce_cython)) { + ret = __Pyx_SetItemOnTypeDict((PyTypeObject*)type_obj, __pyx_mstate_global->__pyx_n_u_reduce, reduce_cython); if (unlikely(ret < 0)) goto __PYX_BAD; + ret = __Pyx_DelItemOnTypeDict((PyTypeObject*)type_obj, __pyx_mstate_global->__pyx_n_u_reduce_cython); if (unlikely(ret < 0)) goto __PYX_BAD; + } else if (reduce == object_reduce || PyErr_Occurred()) { + goto __PYX_BAD; + } + setstate = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_mstate_global->__pyx_n_u_setstate); + if (!setstate) PyErr_Clear(); + if (!setstate || __Pyx_setup_reduce_is_named(setstate, __pyx_mstate_global->__pyx_n_u_setstate_cython)) { + setstate_cython = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_mstate_global->__pyx_n_u_setstate_cython); + if (likely(setstate_cython)) { + ret = __Pyx_SetItemOnTypeDict((PyTypeObject*)type_obj, __pyx_mstate_global->__pyx_n_u_setstate, setstate_cython); if (unlikely(ret < 0)) goto __PYX_BAD; + ret = __Pyx_DelItemOnTypeDict((PyTypeObject*)type_obj, __pyx_mstate_global->__pyx_n_u_setstate_cython); if (unlikely(ret < 0)) goto __PYX_BAD; + } else if (!setstate || PyErr_Occurred()) { + goto __PYX_BAD; + } + } + PyType_Modified((PyTypeObject*)type_obj); + } + } + goto __PYX_GOOD; +__PYX_BAD: + if (!PyErr_Occurred()) { + __Pyx_TypeName type_obj_name = + __Pyx_PyType_GetFullyQualifiedName((PyTypeObject*)type_obj); + PyErr_Format(PyExc_RuntimeError, + "Unable to initialize pickling for " __Pyx_FMT_TYPENAME, type_obj_name); + __Pyx_DECREF_TypeName(type_obj_name); + } + ret = -1; +__PYX_GOOD: +#if !CYTHON_USE_PYTYPE_LOOKUP + Py_XDECREF(object_reduce); + Py_XDECREF(object_reduce_ex); + Py_XDECREF(object_getstate); + Py_XDECREF(getstate); +#endif + Py_XDECREF(reduce); + Py_XDECREF(reduce_ex); + Py_XDECREF(reduce_cython); + Py_XDECREF(setstate); + Py_XDECREF(setstate_cython); + return ret; +} + +/* TypeImport */ +#ifndef __PYX_HAVE_RT_ImportType_3_2_2 +#define __PYX_HAVE_RT_ImportType_3_2_2 +static PyTypeObject *__Pyx_ImportType_3_2_2(PyObject *module, const char *module_name, const char *class_name, + size_t size, size_t alignment, enum __Pyx_ImportType_CheckSize_3_2_2 check_size) +{ + PyObject *result = 0; + Py_ssize_t basicsize; + Py_ssize_t itemsize; +#if defined(Py_LIMITED_API) || (defined(CYTHON_COMPILING_IN_LIMITED_API) && CYTHON_COMPILING_IN_LIMITED_API) + PyObject *py_basicsize; + PyObject *py_itemsize; +#endif + result = PyObject_GetAttrString(module, class_name); + if (!result) + goto bad; + if (!PyType_Check(result)) { + PyErr_Format(PyExc_TypeError, + "%.200s.%.200s is not a type object", + module_name, class_name); + goto bad; + } +#if !( defined(Py_LIMITED_API) || (defined(CYTHON_COMPILING_IN_LIMITED_API) && CYTHON_COMPILING_IN_LIMITED_API) ) + basicsize = ((PyTypeObject *)result)->tp_basicsize; + itemsize = ((PyTypeObject *)result)->tp_itemsize; +#else + if (size == 0) { + return (PyTypeObject *)result; + } + py_basicsize = PyObject_GetAttrString(result, "__basicsize__"); + if (!py_basicsize) + goto bad; + basicsize = PyLong_AsSsize_t(py_basicsize); + Py_DECREF(py_basicsize); + py_basicsize = 0; + if (basicsize == (Py_ssize_t)-1 && PyErr_Occurred()) + goto bad; + py_itemsize = PyObject_GetAttrString(result, "__itemsize__"); + if (!py_itemsize) + goto bad; + itemsize = PyLong_AsSsize_t(py_itemsize); + Py_DECREF(py_itemsize); + py_itemsize = 0; + if (itemsize == (Py_ssize_t)-1 && PyErr_Occurred()) + goto bad; +#endif + if (itemsize) { + if (size % alignment) { + alignment = size % alignment; + } + if (itemsize < (Py_ssize_t)alignment) + itemsize = (Py_ssize_t)alignment; + } + if ((size_t)(basicsize + itemsize) < size) { + PyErr_Format(PyExc_ValueError, + "%.200s.%.200s size changed, may indicate binary incompatibility. " + "Expected %zd from C header, got %zd from PyObject", + module_name, class_name, size, basicsize+itemsize); + goto bad; + } + if (check_size == __Pyx_ImportType_CheckSize_Error_3_2_2 && + ((size_t)basicsize > size || (size_t)(basicsize + itemsize) < size)) { + PyErr_Format(PyExc_ValueError, + "%.200s.%.200s size changed, may indicate binary incompatibility. " + "Expected %zd from C header, got %zd-%zd from PyObject", + module_name, class_name, size, basicsize, basicsize+itemsize); + goto bad; + } + else if (check_size == __Pyx_ImportType_CheckSize_Warn_3_2_2 && (size_t)basicsize > size) { + if (PyErr_WarnFormat(NULL, 0, + "%.200s.%.200s size changed, may indicate binary incompatibility. " + "Expected %zd from C header, got %zd from PyObject", + module_name, class_name, size, basicsize) < 0) { + goto bad; + } + } + return (PyTypeObject *)result; +bad: + Py_XDECREF(result); + return NULL; +} +#endif + +/* dict_setdefault (used by FetchCommonType) */ +static CYTHON_INLINE PyObject *__Pyx_PyDict_SetDefault(PyObject *d, PyObject *key, PyObject *default_value) { + PyObject* value; +#if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX >= 0x030C0000 + PyObject *args[] = {d, key, default_value}; + value = PyObject_VectorcallMethod(__pyx_mstate_global->__pyx_n_u_setdefault, args, 3 | PY_VECTORCALL_ARGUMENTS_OFFSET, NULL); +#elif CYTHON_COMPILING_IN_LIMITED_API + value = PyObject_CallMethodObjArgs(d, __pyx_mstate_global->__pyx_n_u_setdefault, key, default_value, NULL); +#elif PY_VERSION_HEX >= 0x030d0000 + PyDict_SetDefaultRef(d, key, default_value, &value); +#else + value = PyDict_SetDefault(d, key, default_value); + if (unlikely(!value)) return NULL; + Py_INCREF(value); +#endif + return value; +} + +/* AddModuleRef (used by FetchSharedCythonModule) */ +#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING + static PyObject *__Pyx_PyImport_AddModuleObjectRef(PyObject *name) { + PyObject *module_dict = PyImport_GetModuleDict(); + PyObject *m; + if (PyMapping_GetOptionalItem(module_dict, name, &m) < 0) { + return NULL; + } + if (m != NULL && PyModule_Check(m)) { + return m; + } + Py_XDECREF(m); + m = PyModule_NewObject(name); + if (m == NULL) + return NULL; + if (PyDict_CheckExact(module_dict)) { + PyObject *new_m; + (void)PyDict_SetDefaultRef(module_dict, name, m, &new_m); + Py_DECREF(m); + return new_m; + } else { + if (PyObject_SetItem(module_dict, name, m) != 0) { + Py_DECREF(m); + return NULL; + } + return m; + } + } + static PyObject *__Pyx_PyImport_AddModuleRef(const char *name) { + PyObject *py_name = PyUnicode_FromString(name); + if (!py_name) return NULL; + PyObject *module = __Pyx_PyImport_AddModuleObjectRef(py_name); + Py_DECREF(py_name); + return module; + } +#elif __PYX_LIMITED_VERSION_HEX >= 0x030d0000 + #define __Pyx_PyImport_AddModuleRef(name) PyImport_AddModuleRef(name) +#else + static PyObject *__Pyx_PyImport_AddModuleRef(const char *name) { + PyObject *module = PyImport_AddModule(name); + Py_XINCREF(module); + return module; + } +#endif + +/* FetchSharedCythonModule (used by FetchCommonType) */ +static PyObject *__Pyx_FetchSharedCythonABIModule(void) { + return __Pyx_PyImport_AddModuleRef(__PYX_ABI_MODULE_NAME); +} + +/* FetchCommonType (used by CommonTypesMetaclass) */ +#if __PYX_LIMITED_VERSION_HEX < 0x030C0000 +static PyObject* __Pyx_PyType_FromMetaclass(PyTypeObject *metaclass, PyObject *module, PyType_Spec *spec, PyObject *bases) { + PyObject *result = __Pyx_PyType_FromModuleAndSpec(module, spec, bases); + if (result && metaclass) { + PyObject *old_tp = (PyObject*)Py_TYPE(result); + Py_INCREF((PyObject*)metaclass); +#if __PYX_LIMITED_VERSION_HEX >= 0x03090000 + Py_SET_TYPE(result, metaclass); +#else + result->ob_type = metaclass; +#endif + Py_DECREF(old_tp); + } + return result; +} +#else +#define __Pyx_PyType_FromMetaclass(me, mo, s, b) PyType_FromMetaclass(me, mo, s, b) +#endif +static int __Pyx_VerifyCachedType(PyObject *cached_type, + const char *name, + Py_ssize_t expected_basicsize) { + Py_ssize_t basicsize; + if (!PyType_Check(cached_type)) { + PyErr_Format(PyExc_TypeError, + "Shared Cython type %.200s is not a type object", name); + return -1; + } + if (expected_basicsize == 0) { + return 0; // size is inherited, nothing useful to check + } +#if CYTHON_COMPILING_IN_LIMITED_API + PyObject *py_basicsize; + py_basicsize = PyObject_GetAttrString(cached_type, "__basicsize__"); + if (unlikely(!py_basicsize)) return -1; + basicsize = PyLong_AsSsize_t(py_basicsize); + Py_DECREF(py_basicsize); + py_basicsize = NULL; + if (unlikely(basicsize == (Py_ssize_t)-1) && PyErr_Occurred()) return -1; +#else + basicsize = ((PyTypeObject*) cached_type)->tp_basicsize; +#endif + if (basicsize != expected_basicsize) { + PyErr_Format(PyExc_TypeError, + "Shared Cython type %.200s has the wrong size, try recompiling", + name); + return -1; + } + return 0; +} +static PyTypeObject *__Pyx_FetchCommonTypeFromSpec(PyTypeObject *metaclass, PyObject *module, PyType_Spec *spec, PyObject *bases) { + PyObject *abi_module = NULL, *cached_type = NULL, *abi_module_dict, *new_cached_type, *py_object_name; + int get_item_ref_result; + const char* object_name = strrchr(spec->name, '.'); + object_name = object_name ? object_name+1 : spec->name; + py_object_name = PyUnicode_FromString(object_name); + if (!py_object_name) return NULL; + abi_module = __Pyx_FetchSharedCythonABIModule(); + if (!abi_module) goto done; + abi_module_dict = PyModule_GetDict(abi_module); + if (!abi_module_dict) goto done; + get_item_ref_result = __Pyx_PyDict_GetItemRef(abi_module_dict, py_object_name, &cached_type); + if (get_item_ref_result == 1) { + if (__Pyx_VerifyCachedType( + cached_type, + object_name, + spec->basicsize) < 0) { + goto bad; + } + goto done; + } else if (unlikely(get_item_ref_result == -1)) { + goto bad; + } + cached_type = __Pyx_PyType_FromMetaclass( + metaclass, + CYTHON_USE_MODULE_STATE ? module : abi_module, + spec, bases); + if (unlikely(!cached_type)) goto bad; + if (unlikely(__Pyx_fix_up_extension_type_from_spec(spec, (PyTypeObject *) cached_type) < 0)) goto bad; + new_cached_type = __Pyx_PyDict_SetDefault(abi_module_dict, py_object_name, cached_type); + if (unlikely(new_cached_type != cached_type)) { + if (unlikely(!new_cached_type)) goto bad; + Py_DECREF(cached_type); + cached_type = new_cached_type; + if (__Pyx_VerifyCachedType( + cached_type, + object_name, + spec->basicsize) < 0) { + goto bad; + } + goto done; + } else { + Py_DECREF(new_cached_type); + } +done: + Py_XDECREF(abi_module); + Py_DECREF(py_object_name); + assert(cached_type == NULL || PyType_Check(cached_type)); + return (PyTypeObject *) cached_type; +bad: + Py_XDECREF(cached_type); + cached_type = NULL; + goto done; +} + +/* CommonTypesMetaclass (used by CythonFunctionShared) */ +static PyObject* __pyx_CommonTypesMetaclass_get_module(CYTHON_UNUSED PyObject *self, CYTHON_UNUSED void* context) { + return PyUnicode_FromString(__PYX_ABI_MODULE_NAME); +} +#if __PYX_LIMITED_VERSION_HEX < 0x030A0000 +static PyObject* __pyx_CommonTypesMetaclass_call(CYTHON_UNUSED PyObject *self, CYTHON_UNUSED PyObject *args, CYTHON_UNUSED PyObject *kwds) { + PyErr_SetString(PyExc_TypeError, "Cannot instantiate Cython internal types"); + return NULL; +} +static int __pyx_CommonTypesMetaclass_setattr(CYTHON_UNUSED PyObject *self, CYTHON_UNUSED PyObject *attr, CYTHON_UNUSED PyObject *value) { + PyErr_SetString(PyExc_TypeError, "Cython internal types are immutable"); + return -1; +} +#endif +static PyGetSetDef __pyx_CommonTypesMetaclass_getset[] = { + {"__module__", __pyx_CommonTypesMetaclass_get_module, NULL, NULL, NULL}, + {0, 0, 0, 0, 0} +}; +static PyType_Slot __pyx_CommonTypesMetaclass_slots[] = { + {Py_tp_getset, (void *)__pyx_CommonTypesMetaclass_getset}, + #if __PYX_LIMITED_VERSION_HEX < 0x030A0000 + {Py_tp_call, (void*)__pyx_CommonTypesMetaclass_call}, + {Py_tp_new, (void*)__pyx_CommonTypesMetaclass_call}, + {Py_tp_setattro, (void*)__pyx_CommonTypesMetaclass_setattr}, + #endif + {0, 0} +}; +static PyType_Spec __pyx_CommonTypesMetaclass_spec = { + __PYX_TYPE_MODULE_PREFIX "_common_types_metatype", + 0, + 0, + Py_TPFLAGS_IMMUTABLETYPE | + Py_TPFLAGS_DISALLOW_INSTANTIATION | + Py_TPFLAGS_DEFAULT, + __pyx_CommonTypesMetaclass_slots +}; +static int __pyx_CommonTypesMetaclass_init(PyObject *module) { + __pyx_mstatetype *mstate = __Pyx_PyModule_GetState(module); + PyObject *bases = PyTuple_Pack(1, &PyType_Type); + if (unlikely(!bases)) { + return -1; + } + mstate->__pyx_CommonTypesMetaclassType = __Pyx_FetchCommonTypeFromSpec(NULL, module, &__pyx_CommonTypesMetaclass_spec, bases); + Py_DECREF(bases); + if (unlikely(mstate->__pyx_CommonTypesMetaclassType == NULL)) { + return -1; + } + return 0; +} + +/* PyMethodNew (used by CythonFunctionShared) */ +#if CYTHON_COMPILING_IN_LIMITED_API +static PyObject *__Pyx_PyMethod_New(PyObject *func, PyObject *self, PyObject *typ) { + PyObject *result; + CYTHON_UNUSED_VAR(typ); + if (!self) + return __Pyx_NewRef(func); + #if __PYX_LIMITED_VERSION_HEX >= 0x030C0000 + { + PyObject *args[] = {func, self}; + result = PyObject_Vectorcall(__pyx_mstate_global->__Pyx_CachedMethodType, args, 2, NULL); + } + #else + result = PyObject_CallFunctionObjArgs(__pyx_mstate_global->__Pyx_CachedMethodType, func, self, NULL); + #endif + return result; +} +#else +static PyObject *__Pyx_PyMethod_New(PyObject *func, PyObject *self, PyObject *typ) { + CYTHON_UNUSED_VAR(typ); + if (!self) + return __Pyx_NewRef(func); + return PyMethod_New(func, self); +} +#endif + +/* PyVectorcallFastCallDict (used by CythonFunctionShared) */ +#if CYTHON_METH_FASTCALL && CYTHON_VECTORCALL +static PyObject *__Pyx_PyVectorcall_FastCallDict_kw(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw) +{ + PyObject *res = NULL; + PyObject *kwnames; + PyObject **newargs; + PyObject **kwvalues; + Py_ssize_t i; + #if CYTHON_AVOID_BORROWED_REFS + PyObject *pos; + #else + Py_ssize_t pos; + #endif + size_t j; + PyObject *key, *value; + unsigned long keys_are_strings; + #if !CYTHON_ASSUME_SAFE_SIZE + Py_ssize_t nkw = PyDict_Size(kw); + if (unlikely(nkw == -1)) return NULL; + #else + Py_ssize_t nkw = PyDict_GET_SIZE(kw); + #endif + newargs = (PyObject **)PyMem_Malloc((nargs + (size_t)nkw) * sizeof(args[0])); + if (unlikely(newargs == NULL)) { + PyErr_NoMemory(); + return NULL; + } + for (j = 0; j < nargs; j++) newargs[j] = args[j]; + kwnames = PyTuple_New(nkw); + if (unlikely(kwnames == NULL)) { + PyMem_Free(newargs); + return NULL; + } + kwvalues = newargs + nargs; + pos = 0; + i = 0; + keys_are_strings = Py_TPFLAGS_UNICODE_SUBCLASS; + while (__Pyx_PyDict_NextRef(kw, &pos, &key, &value)) { + keys_are_strings &= + #if CYTHON_COMPILING_IN_LIMITED_API + PyType_GetFlags(Py_TYPE(key)); + #else + Py_TYPE(key)->tp_flags; + #endif + #if !CYTHON_ASSUME_SAFE_MACROS + if (unlikely(PyTuple_SetItem(kwnames, i, key) < 0)) goto cleanup; + #else + PyTuple_SET_ITEM(kwnames, i, key); + #endif + kwvalues[i] = value; + i++; + } + if (unlikely(!keys_are_strings)) { + PyErr_SetString(PyExc_TypeError, "keywords must be strings"); + goto cleanup; + } + res = vc(func, newargs, nargs, kwnames); +cleanup: + #if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(pos); + #endif + Py_DECREF(kwnames); + for (i = 0; i < nkw; i++) + Py_DECREF(kwvalues[i]); + PyMem_Free(newargs); + return res; +} +static CYTHON_INLINE PyObject *__Pyx_PyVectorcall_FastCallDict(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw) +{ + Py_ssize_t kw_size = + likely(kw == NULL) ? + 0 : +#if !CYTHON_ASSUME_SAFE_SIZE + PyDict_Size(kw); +#else + PyDict_GET_SIZE(kw); +#endif + if (kw_size == 0) { + return vc(func, args, nargs, NULL); + } +#if !CYTHON_ASSUME_SAFE_SIZE + else if (unlikely(kw_size == -1)) { + return NULL; + } +#endif + return __Pyx_PyVectorcall_FastCallDict_kw(func, vc, args, nargs, kw); +} +#endif + +/* CythonFunctionShared (used by CythonFunction) */ +#if CYTHON_COMPILING_IN_LIMITED_API +static CYTHON_INLINE int __Pyx__IsSameCyOrCFunctionNoMethod(PyObject *func, void (*cfunc)(void)) { + if (__Pyx_CyFunction_Check(func)) { + return PyCFunction_GetFunction(((__pyx_CyFunctionObject*)func)->func) == (PyCFunction) cfunc; + } else if (PyCFunction_Check(func)) { + return PyCFunction_GetFunction(func) == (PyCFunction) cfunc; + } + return 0; +} +static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void (*cfunc)(void)) { + if ((PyObject*)Py_TYPE(func) == __pyx_mstate_global->__Pyx_CachedMethodType) { + int result; + PyObject *newFunc = PyObject_GetAttr(func, __pyx_mstate_global->__pyx_n_u_func); + if (unlikely(!newFunc)) { + PyErr_Clear(); // It's only an optimization, so don't throw an error + return 0; + } + result = __Pyx__IsSameCyOrCFunctionNoMethod(newFunc, cfunc); + Py_DECREF(newFunc); + return result; + } + return __Pyx__IsSameCyOrCFunctionNoMethod(func, cfunc); +} +#else +static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void (*cfunc)(void)) { + if (PyMethod_Check(func)) { + func = PyMethod_GET_FUNCTION(func); + } + return __Pyx_CyOrPyCFunction_Check(func) && __Pyx_CyOrPyCFunction_GET_FUNCTION(func) == (PyCFunction) cfunc; +} +#endif +static CYTHON_INLINE void __Pyx__CyFunction_SetClassObj(__pyx_CyFunctionObject* f, PyObject* classobj) { +#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API + __Pyx_Py_XDECREF_SET( + __Pyx_CyFunction_GetClassObj(f), + ((classobj) ? __Pyx_NewRef(classobj) : NULL)); +#else + __Pyx_Py_XDECREF_SET( + ((PyCMethodObject *) (f))->mm_class, + (PyTypeObject*)((classobj) ? __Pyx_NewRef(classobj) : NULL)); +#endif +} +static PyObject * +__Pyx_CyFunction_get_doc_locked(__pyx_CyFunctionObject *op) +{ + if (unlikely(op->func_doc == NULL)) { +#if CYTHON_COMPILING_IN_LIMITED_API + op->func_doc = PyObject_GetAttrString(op->func, "__doc__"); + if (unlikely(!op->func_doc)) return NULL; +#else + if (((PyCFunctionObject*)op)->m_ml->ml_doc) { + op->func_doc = PyUnicode_FromString(((PyCFunctionObject*)op)->m_ml->ml_doc); + if (unlikely(op->func_doc == NULL)) + return NULL; + } else { + Py_INCREF(Py_None); + return Py_None; + } +#endif + } + Py_INCREF(op->func_doc); + return op->func_doc; +} +static PyObject * +__Pyx_CyFunction_get_doc(__pyx_CyFunctionObject *op, void *closure) { + PyObject *result; + CYTHON_UNUSED_VAR(closure); + __Pyx_BEGIN_CRITICAL_SECTION(op); + result = __Pyx_CyFunction_get_doc_locked(op); + __Pyx_END_CRITICAL_SECTION(); + return result; +} +static int +__Pyx_CyFunction_set_doc(__pyx_CyFunctionObject *op, PyObject *value, void *context) +{ + CYTHON_UNUSED_VAR(context); + if (value == NULL) { + value = Py_None; + } + Py_INCREF(value); + __Pyx_BEGIN_CRITICAL_SECTION(op); + __Pyx_Py_XDECREF_SET(op->func_doc, value); + __Pyx_END_CRITICAL_SECTION(); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_name_locked(__pyx_CyFunctionObject *op) +{ + if (unlikely(op->func_name == NULL)) { +#if CYTHON_COMPILING_IN_LIMITED_API + op->func_name = PyObject_GetAttrString(op->func, "__name__"); +#else + op->func_name = PyUnicode_InternFromString(((PyCFunctionObject*)op)->m_ml->ml_name); +#endif + if (unlikely(op->func_name == NULL)) + return NULL; + } + Py_INCREF(op->func_name); + return op->func_name; +} +static PyObject * +__Pyx_CyFunction_get_name(__pyx_CyFunctionObject *op, void *context) +{ + PyObject *result = NULL; + CYTHON_UNUSED_VAR(context); + __Pyx_BEGIN_CRITICAL_SECTION(op); + result = __Pyx_CyFunction_get_name_locked(op); + __Pyx_END_CRITICAL_SECTION(); + return result; +} +static int +__Pyx_CyFunction_set_name(__pyx_CyFunctionObject *op, PyObject *value, void *context) +{ + CYTHON_UNUSED_VAR(context); + if (unlikely(value == NULL || !PyUnicode_Check(value))) { + PyErr_SetString(PyExc_TypeError, + "__name__ must be set to a string object"); + return -1; + } + Py_INCREF(value); + __Pyx_BEGIN_CRITICAL_SECTION(op); + __Pyx_Py_XDECREF_SET(op->func_name, value); + __Pyx_END_CRITICAL_SECTION(); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_qualname(__pyx_CyFunctionObject *op, void *context) +{ + CYTHON_UNUSED_VAR(context); + PyObject *result; + __Pyx_BEGIN_CRITICAL_SECTION(op); + Py_INCREF(op->func_qualname); + result = op->func_qualname; + __Pyx_END_CRITICAL_SECTION(); + return result; +} +static int +__Pyx_CyFunction_set_qualname(__pyx_CyFunctionObject *op, PyObject *value, void *context) +{ + CYTHON_UNUSED_VAR(context); + if (unlikely(value == NULL || !PyUnicode_Check(value))) { + PyErr_SetString(PyExc_TypeError, + "__qualname__ must be set to a string object"); + return -1; + } + Py_INCREF(value); + __Pyx_BEGIN_CRITICAL_SECTION(op); + __Pyx_Py_XDECREF_SET(op->func_qualname, value); + __Pyx_END_CRITICAL_SECTION(); + return 0; +} +#if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030A0000 +static PyObject * +__Pyx_CyFunction_get_dict(__pyx_CyFunctionObject *op, void *context) +{ + CYTHON_UNUSED_VAR(context); + if (unlikely(op->func_dict == NULL)) { + op->func_dict = PyDict_New(); + if (unlikely(op->func_dict == NULL)) + return NULL; + } + Py_INCREF(op->func_dict); + return op->func_dict; +} +#endif +static PyObject * +__Pyx_CyFunction_get_globals(__pyx_CyFunctionObject *op, void *context) +{ + CYTHON_UNUSED_VAR(context); + Py_INCREF(op->func_globals); + return op->func_globals; +} +static PyObject * +__Pyx_CyFunction_get_closure(__pyx_CyFunctionObject *op, void *context) +{ + CYTHON_UNUSED_VAR(op); + CYTHON_UNUSED_VAR(context); + Py_INCREF(Py_None); + return Py_None; +} +static PyObject * +__Pyx_CyFunction_get_code(__pyx_CyFunctionObject *op, void *context) +{ + PyObject* result = (op->func_code) ? op->func_code : Py_None; + CYTHON_UNUSED_VAR(context); + Py_INCREF(result); + return result; +} +static int +__Pyx_CyFunction_init_defaults(__pyx_CyFunctionObject *op) { + int result = 0; + PyObject *res = op->defaults_getter((PyObject *) op); + if (unlikely(!res)) + return -1; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + op->defaults_tuple = PyTuple_GET_ITEM(res, 0); + Py_INCREF(op->defaults_tuple); + op->defaults_kwdict = PyTuple_GET_ITEM(res, 1); + Py_INCREF(op->defaults_kwdict); + #else + op->defaults_tuple = __Pyx_PySequence_ITEM(res, 0); + if (unlikely(!op->defaults_tuple)) result = -1; + else { + op->defaults_kwdict = __Pyx_PySequence_ITEM(res, 1); + if (unlikely(!op->defaults_kwdict)) result = -1; + } + #endif + Py_DECREF(res); + return result; +} +static int +__Pyx_CyFunction_set_defaults(__pyx_CyFunctionObject *op, PyObject* value, void *context) { + CYTHON_UNUSED_VAR(context); + if (!value) { + value = Py_None; + } else if (unlikely(value != Py_None && !PyTuple_Check(value))) { + PyErr_SetString(PyExc_TypeError, + "__defaults__ must be set to a tuple object"); + return -1; + } + PyErr_WarnEx(PyExc_RuntimeWarning, "changes to cyfunction.__defaults__ will not " + "currently affect the values used in function calls", 1); + Py_INCREF(value); + __Pyx_BEGIN_CRITICAL_SECTION(op); + __Pyx_Py_XDECREF_SET(op->defaults_tuple, value); + __Pyx_END_CRITICAL_SECTION(); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_defaults_locked(__pyx_CyFunctionObject *op) { + PyObject* result = op->defaults_tuple; + if (unlikely(!result)) { + if (op->defaults_getter) { + if (unlikely(__Pyx_CyFunction_init_defaults(op) < 0)) return NULL; + result = op->defaults_tuple; + } else { + result = Py_None; + } + } + Py_INCREF(result); + return result; +} +static PyObject * +__Pyx_CyFunction_get_defaults(__pyx_CyFunctionObject *op, void *context) { + PyObject* result = NULL; + CYTHON_UNUSED_VAR(context); + __Pyx_BEGIN_CRITICAL_SECTION(op); + result = __Pyx_CyFunction_get_defaults_locked(op); + __Pyx_END_CRITICAL_SECTION(); + return result; +} +static int +__Pyx_CyFunction_set_kwdefaults(__pyx_CyFunctionObject *op, PyObject* value, void *context) { + CYTHON_UNUSED_VAR(context); + if (!value) { + value = Py_None; + } else if (unlikely(value != Py_None && !PyDict_Check(value))) { + PyErr_SetString(PyExc_TypeError, + "__kwdefaults__ must be set to a dict object"); + return -1; + } + PyErr_WarnEx(PyExc_RuntimeWarning, "changes to cyfunction.__kwdefaults__ will not " + "currently affect the values used in function calls", 1); + Py_INCREF(value); + __Pyx_BEGIN_CRITICAL_SECTION(op); + __Pyx_Py_XDECREF_SET(op->defaults_kwdict, value); + __Pyx_END_CRITICAL_SECTION(); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_kwdefaults_locked(__pyx_CyFunctionObject *op) { + PyObject* result = op->defaults_kwdict; + if (unlikely(!result)) { + if (op->defaults_getter) { + if (unlikely(__Pyx_CyFunction_init_defaults(op) < 0)) return NULL; + result = op->defaults_kwdict; + } else { + result = Py_None; + } + } + Py_INCREF(result); + return result; +} +static PyObject * +__Pyx_CyFunction_get_kwdefaults(__pyx_CyFunctionObject *op, void *context) { + PyObject* result; + CYTHON_UNUSED_VAR(context); + __Pyx_BEGIN_CRITICAL_SECTION(op); + result = __Pyx_CyFunction_get_kwdefaults_locked(op); + __Pyx_END_CRITICAL_SECTION(); + return result; +} +static int +__Pyx_CyFunction_set_annotations(__pyx_CyFunctionObject *op, PyObject* value, void *context) { + CYTHON_UNUSED_VAR(context); + if (!value || value == Py_None) { + value = NULL; + } else if (unlikely(!PyDict_Check(value))) { + PyErr_SetString(PyExc_TypeError, + "__annotations__ must be set to a dict object"); + return -1; + } + Py_XINCREF(value); + __Pyx_BEGIN_CRITICAL_SECTION(op); + __Pyx_Py_XDECREF_SET(op->func_annotations, value); + __Pyx_END_CRITICAL_SECTION(); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_annotations_locked(__pyx_CyFunctionObject *op) { + PyObject* result = op->func_annotations; + if (unlikely(!result)) { + result = PyDict_New(); + if (unlikely(!result)) return NULL; + op->func_annotations = result; + } + Py_INCREF(result); + return result; +} +static PyObject * +__Pyx_CyFunction_get_annotations(__pyx_CyFunctionObject *op, void *context) { + PyObject *result; + CYTHON_UNUSED_VAR(context); + __Pyx_BEGIN_CRITICAL_SECTION(op); + result = __Pyx_CyFunction_get_annotations_locked(op); + __Pyx_END_CRITICAL_SECTION(); + return result; +} +static PyObject * +__Pyx_CyFunction_get_is_coroutine_value(__pyx_CyFunctionObject *op) { + int is_coroutine = op->flags & __Pyx_CYFUNCTION_COROUTINE; + if (is_coroutine) { + PyObject *is_coroutine_value, *module, *fromlist, *marker = __pyx_mstate_global->__pyx_n_u_is_coroutine; + fromlist = PyList_New(1); + if (unlikely(!fromlist)) return NULL; + Py_INCREF(marker); +#if CYTHON_ASSUME_SAFE_MACROS + PyList_SET_ITEM(fromlist, 0, marker); +#else + if (unlikely(PyList_SetItem(fromlist, 0, marker) < 0)) { + Py_DECREF(marker); + Py_DECREF(fromlist); + return NULL; + } +#endif + module = PyImport_ImportModuleLevelObject(__pyx_mstate_global->__pyx_n_u_asyncio_coroutines, NULL, NULL, fromlist, 0); + Py_DECREF(fromlist); + if (unlikely(!module)) goto ignore; + is_coroutine_value = __Pyx_PyObject_GetAttrStr(module, marker); + Py_DECREF(module); + if (likely(is_coroutine_value)) { + return is_coroutine_value; + } +ignore: + PyErr_Clear(); + } + return __Pyx_PyBool_FromLong(is_coroutine); +} +static PyObject * +__Pyx_CyFunction_get_is_coroutine(__pyx_CyFunctionObject *op, void *context) { + PyObject *result; + CYTHON_UNUSED_VAR(context); + if (op->func_is_coroutine) { + return __Pyx_NewRef(op->func_is_coroutine); + } + result = __Pyx_CyFunction_get_is_coroutine_value(op); + if (unlikely(!result)) + return NULL; + __Pyx_BEGIN_CRITICAL_SECTION(op); + if (op->func_is_coroutine) { + Py_DECREF(result); + result = __Pyx_NewRef(op->func_is_coroutine); + } else { + op->func_is_coroutine = __Pyx_NewRef(result); + } + __Pyx_END_CRITICAL_SECTION(); + return result; +} +static void __Pyx_CyFunction_raise_argument_count_error(__pyx_CyFunctionObject *func, const char* message, Py_ssize_t size) { +#if CYTHON_COMPILING_IN_LIMITED_API + PyObject *py_name = __Pyx_CyFunction_get_name(func, NULL); + if (!py_name) return; + PyErr_Format(PyExc_TypeError, + "%.200S() %s (%" CYTHON_FORMAT_SSIZE_T "d given)", + py_name, message, size); + Py_DECREF(py_name); +#else + const char* name = ((PyCFunctionObject*)func)->m_ml->ml_name; + PyErr_Format(PyExc_TypeError, + "%.200s() %s (%" CYTHON_FORMAT_SSIZE_T "d given)", + name, message, size); +#endif +} +static void __Pyx_CyFunction_raise_type_error(__pyx_CyFunctionObject *func, const char* message) { +#if CYTHON_COMPILING_IN_LIMITED_API + PyObject *py_name = __Pyx_CyFunction_get_name(func, NULL); + if (!py_name) return; + PyErr_Format(PyExc_TypeError, + "%.200S() %s", + py_name, message); + Py_DECREF(py_name); +#else + const char* name = ((PyCFunctionObject*)func)->m_ml->ml_name; + PyErr_Format(PyExc_TypeError, + "%.200s() %s", + name, message); +#endif +} +#if CYTHON_COMPILING_IN_LIMITED_API +static PyObject * +__Pyx_CyFunction_get_module(__pyx_CyFunctionObject *op, void *context) { + CYTHON_UNUSED_VAR(context); + return PyObject_GetAttrString(op->func, "__module__"); +} +static int +__Pyx_CyFunction_set_module(__pyx_CyFunctionObject *op, PyObject* value, void *context) { + CYTHON_UNUSED_VAR(context); + return PyObject_SetAttrString(op->func, "__module__", value); +} +#endif +static PyGetSetDef __pyx_CyFunction_getsets[] = { + {"func_doc", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, + {"__doc__", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, + {"func_name", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, + {"__name__", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, + {"__qualname__", (getter)__Pyx_CyFunction_get_qualname, (setter)__Pyx_CyFunction_set_qualname, 0, 0}, +#if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030A0000 + {"func_dict", (getter)__Pyx_CyFunction_get_dict, (setter)PyObject_GenericSetDict, 0, 0}, + {"__dict__", (getter)__Pyx_CyFunction_get_dict, (setter)PyObject_GenericSetDict, 0, 0}, +#else + {"func_dict", (getter)PyObject_GenericGetDict, (setter)PyObject_GenericSetDict, 0, 0}, + {"__dict__", (getter)PyObject_GenericGetDict, (setter)PyObject_GenericSetDict, 0, 0}, +#endif + {"func_globals", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, + {"__globals__", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, + {"func_closure", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, + {"__closure__", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, + {"func_code", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, + {"__code__", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, + {"func_defaults", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, + {"__defaults__", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, + {"__kwdefaults__", (getter)__Pyx_CyFunction_get_kwdefaults, (setter)__Pyx_CyFunction_set_kwdefaults, 0, 0}, + {"__annotations__", (getter)__Pyx_CyFunction_get_annotations, (setter)__Pyx_CyFunction_set_annotations, 0, 0}, + {"_is_coroutine", (getter)__Pyx_CyFunction_get_is_coroutine, 0, 0, 0}, +#if CYTHON_COMPILING_IN_LIMITED_API + {"__module__", (getter)__Pyx_CyFunction_get_module, (setter)__Pyx_CyFunction_set_module, 0, 0}, +#endif + {0, 0, 0, 0, 0} +}; +static PyMemberDef __pyx_CyFunction_members[] = { +#if !CYTHON_COMPILING_IN_LIMITED_API + {"__module__", T_OBJECT, offsetof(PyCFunctionObject, m_module), 0, 0}, +#endif +#if PY_VERSION_HEX < 0x030C0000 || CYTHON_COMPILING_IN_LIMITED_API + {"__dictoffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_dict), READONLY, 0}, +#endif +#if CYTHON_METH_FASTCALL +#if CYTHON_COMPILING_IN_LIMITED_API + {"__vectorcalloffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_vectorcall), READONLY, 0}, +#else + {"__vectorcalloffset__", T_PYSSIZET, offsetof(PyCFunctionObject, vectorcall), READONLY, 0}, +#endif +#if CYTHON_COMPILING_IN_LIMITED_API + {"__weaklistoffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_weakreflist), READONLY, 0}, +#else + {"__weaklistoffset__", T_PYSSIZET, offsetof(PyCFunctionObject, m_weakreflist), READONLY, 0}, +#endif +#endif + {0, 0, 0, 0, 0} +}; +static PyObject * +__Pyx_CyFunction_reduce(__pyx_CyFunctionObject *m, PyObject *args) +{ + PyObject *result = NULL; + CYTHON_UNUSED_VAR(args); + __Pyx_BEGIN_CRITICAL_SECTION(m); + Py_INCREF(m->func_qualname); + result = m->func_qualname; + __Pyx_END_CRITICAL_SECTION(); + return result; +} +static PyMethodDef __pyx_CyFunction_methods[] = { + {"__reduce__", (PyCFunction)__Pyx_CyFunction_reduce, METH_VARARGS, 0}, + {0, 0, 0, 0} +}; +#if CYTHON_COMPILING_IN_LIMITED_API +#define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func_weakreflist) +#else +#define __Pyx_CyFunction_weakreflist(cyfunc) (((PyCFunctionObject*)cyfunc)->m_weakreflist) +#endif +static PyObject *__Pyx_CyFunction_Init(__pyx_CyFunctionObject *op, PyMethodDef *ml, int flags, PyObject* qualname, + PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) { +#if !CYTHON_COMPILING_IN_LIMITED_API + PyCFunctionObject *cf = (PyCFunctionObject*) op; +#endif + if (unlikely(op == NULL)) + return NULL; +#if CYTHON_COMPILING_IN_LIMITED_API + op->func = PyCFunction_NewEx(ml, (PyObject*)op, module); + if (unlikely(!op->func)) return NULL; +#endif + op->flags = flags; + __Pyx_CyFunction_weakreflist(op) = NULL; +#if !CYTHON_COMPILING_IN_LIMITED_API + cf->m_ml = ml; + cf->m_self = (PyObject *) op; +#endif + Py_XINCREF(closure); + op->func_closure = closure; +#if !CYTHON_COMPILING_IN_LIMITED_API + Py_XINCREF(module); + cf->m_module = module; +#endif +#if PY_VERSION_HEX < 0x030C0000 || CYTHON_COMPILING_IN_LIMITED_API + op->func_dict = NULL; +#endif + op->func_name = NULL; + Py_INCREF(qualname); + op->func_qualname = qualname; + op->func_doc = NULL; +#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API + op->func_classobj = NULL; +#else + ((PyCMethodObject*)op)->mm_class = NULL; +#endif + op->func_globals = globals; + Py_INCREF(op->func_globals); + Py_XINCREF(code); + op->func_code = code; + op->defaults = NULL; + op->defaults_tuple = NULL; + op->defaults_kwdict = NULL; + op->defaults_getter = NULL; + op->func_annotations = NULL; + op->func_is_coroutine = NULL; +#if CYTHON_METH_FASTCALL + switch (ml->ml_flags & (METH_VARARGS | METH_FASTCALL | METH_NOARGS | METH_O | METH_KEYWORDS | METH_METHOD)) { + case METH_NOARGS: + __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_NOARGS; + break; + case METH_O: + __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_O; + break; + case METH_METHOD | METH_FASTCALL | METH_KEYWORDS: + __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD; + break; + case METH_FASTCALL | METH_KEYWORDS: + __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS; + break; + case METH_VARARGS | METH_KEYWORDS: + __Pyx_CyFunction_func_vectorcall(op) = NULL; + break; + default: + PyErr_SetString(PyExc_SystemError, "Bad call flags for CyFunction"); + Py_DECREF(op); + return NULL; + } +#endif + return (PyObject *) op; +} +static int +__Pyx_CyFunction_clear(__pyx_CyFunctionObject *m) +{ + Py_CLEAR(m->func_closure); +#if CYTHON_COMPILING_IN_LIMITED_API + Py_CLEAR(m->func); +#else + Py_CLEAR(((PyCFunctionObject*)m)->m_module); +#endif +#if PY_VERSION_HEX < 0x030C0000 || CYTHON_COMPILING_IN_LIMITED_API + Py_CLEAR(m->func_dict); +#elif PY_VERSION_HEX < 0x030d0000 + _PyObject_ClearManagedDict((PyObject*)m); +#else + PyObject_ClearManagedDict((PyObject*)m); +#endif + Py_CLEAR(m->func_name); + Py_CLEAR(m->func_qualname); + Py_CLEAR(m->func_doc); + Py_CLEAR(m->func_globals); + Py_CLEAR(m->func_code); +#if !CYTHON_COMPILING_IN_LIMITED_API +#if PY_VERSION_HEX < 0x030900B1 + Py_CLEAR(__Pyx_CyFunction_GetClassObj(m)); +#else + { + PyObject *cls = (PyObject*) ((PyCMethodObject *) (m))->mm_class; + ((PyCMethodObject *) (m))->mm_class = NULL; + Py_XDECREF(cls); + } +#endif +#endif + Py_CLEAR(m->defaults_tuple); + Py_CLEAR(m->defaults_kwdict); + Py_CLEAR(m->func_annotations); + Py_CLEAR(m->func_is_coroutine); + Py_CLEAR(m->defaults); + return 0; +} +static void __Pyx__CyFunction_dealloc(__pyx_CyFunctionObject *m) +{ + if (__Pyx_CyFunction_weakreflist(m) != NULL) + PyObject_ClearWeakRefs((PyObject *) m); + __Pyx_CyFunction_clear(m); + __Pyx_PyHeapTypeObject_GC_Del(m); +} +static void __Pyx_CyFunction_dealloc(__pyx_CyFunctionObject *m) +{ + PyObject_GC_UnTrack(m); + __Pyx__CyFunction_dealloc(m); +} +static int __Pyx_CyFunction_traverse(__pyx_CyFunctionObject *m, visitproc visit, void *arg) +{ + { + int e = __Pyx_call_type_traverse((PyObject*)m, 1, visit, arg); + if (e) return e; + } + Py_VISIT(m->func_closure); +#if CYTHON_COMPILING_IN_LIMITED_API + Py_VISIT(m->func); +#else + Py_VISIT(((PyCFunctionObject*)m)->m_module); +#endif +#if PY_VERSION_HEX < 0x030C0000 || CYTHON_COMPILING_IN_LIMITED_API + Py_VISIT(m->func_dict); +#else + { + int e = +#if PY_VERSION_HEX < 0x030d0000 + _PyObject_VisitManagedDict +#else + PyObject_VisitManagedDict +#endif + ((PyObject*)m, visit, arg); + if (e != 0) return e; + } +#endif + __Pyx_VISIT_CONST(m->func_name); + __Pyx_VISIT_CONST(m->func_qualname); + Py_VISIT(m->func_doc); + Py_VISIT(m->func_globals); + __Pyx_VISIT_CONST(m->func_code); +#if !CYTHON_COMPILING_IN_LIMITED_API + Py_VISIT(__Pyx_CyFunction_GetClassObj(m)); +#endif + Py_VISIT(m->defaults_tuple); + Py_VISIT(m->defaults_kwdict); + Py_VISIT(m->func_is_coroutine); + Py_VISIT(m->defaults); + return 0; +} +static PyObject* +__Pyx_CyFunction_repr(__pyx_CyFunctionObject *op) +{ + PyObject *repr; + __Pyx_BEGIN_CRITICAL_SECTION(op); + repr = PyUnicode_FromFormat("", + op->func_qualname, (void *)op); + __Pyx_END_CRITICAL_SECTION(); + return repr; +} +static PyObject * __Pyx_CyFunction_CallMethod(PyObject *func, PyObject *self, PyObject *arg, PyObject *kw) { +#if CYTHON_COMPILING_IN_LIMITED_API + PyObject *f = ((__pyx_CyFunctionObject*)func)->func; + PyCFunction meth; + int flags; + meth = PyCFunction_GetFunction(f); + if (unlikely(!meth)) return NULL; + flags = PyCFunction_GetFlags(f); + if (unlikely(flags < 0)) return NULL; +#else + PyCFunctionObject* f = (PyCFunctionObject*)func; + PyCFunction meth = f->m_ml->ml_meth; + int flags = f->m_ml->ml_flags; +#endif + Py_ssize_t size; + switch (flags & (METH_VARARGS | METH_KEYWORDS | METH_NOARGS | METH_O)) { + case METH_VARARGS: + if (likely(kw == NULL || PyDict_Size(kw) == 0)) + return (*meth)(self, arg); + break; + case METH_VARARGS | METH_KEYWORDS: + return (*(PyCFunctionWithKeywords)(void(*)(void))meth)(self, arg, kw); + case METH_NOARGS: + if (likely(kw == NULL || PyDict_Size(kw) == 0)) { +#if CYTHON_ASSUME_SAFE_SIZE + size = PyTuple_GET_SIZE(arg); +#else + size = PyTuple_Size(arg); + if (unlikely(size < 0)) return NULL; +#endif + if (likely(size == 0)) + return (*meth)(self, NULL); + __Pyx_CyFunction_raise_argument_count_error( + (__pyx_CyFunctionObject*)func, + "takes no arguments", size); + return NULL; + } + break; + case METH_O: + if (likely(kw == NULL || PyDict_Size(kw) == 0)) { +#if CYTHON_ASSUME_SAFE_SIZE + size = PyTuple_GET_SIZE(arg); +#else + size = PyTuple_Size(arg); + if (unlikely(size < 0)) return NULL; +#endif + if (likely(size == 1)) { + PyObject *result, *arg0; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + arg0 = PyTuple_GET_ITEM(arg, 0); + #else + arg0 = __Pyx_PySequence_ITEM(arg, 0); if (unlikely(!arg0)) return NULL; + #endif + result = (*meth)(self, arg0); + #if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS) + Py_DECREF(arg0); + #endif + return result; + } + __Pyx_CyFunction_raise_argument_count_error( + (__pyx_CyFunctionObject*)func, + "takes exactly one argument", size); + return NULL; + } + break; + default: + PyErr_SetString(PyExc_SystemError, "Bad call flags for CyFunction"); + return NULL; + } + __Pyx_CyFunction_raise_type_error( + (__pyx_CyFunctionObject*)func, "takes no keyword arguments"); + return NULL; +} +static CYTHON_INLINE PyObject *__Pyx_CyFunction_Call(PyObject *func, PyObject *arg, PyObject *kw) { + PyObject *self, *result; +#if CYTHON_COMPILING_IN_LIMITED_API + self = PyCFunction_GetSelf(((__pyx_CyFunctionObject*)func)->func); + if (unlikely(!self) && PyErr_Occurred()) return NULL; +#else + self = ((PyCFunctionObject*)func)->m_self; +#endif + result = __Pyx_CyFunction_CallMethod(func, self, arg, kw); + return result; +} +static PyObject *__Pyx_CyFunction_CallAsMethod(PyObject *func, PyObject *args, PyObject *kw) { + PyObject *result; + __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *) func; +#if CYTHON_METH_FASTCALL && CYTHON_VECTORCALL + __pyx_vectorcallfunc vc = __Pyx_CyFunction_func_vectorcall(cyfunc); + if (vc) { +#if CYTHON_ASSUME_SAFE_MACROS && CYTHON_ASSUME_SAFE_SIZE + return __Pyx_PyVectorcall_FastCallDict(func, vc, &PyTuple_GET_ITEM(args, 0), (size_t)PyTuple_GET_SIZE(args), kw); +#else + (void) &__Pyx_PyVectorcall_FastCallDict; + return PyVectorcall_Call(func, args, kw); +#endif + } +#endif + if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) { + Py_ssize_t argc; + PyObject *new_args; + PyObject *self; +#if CYTHON_ASSUME_SAFE_SIZE + argc = PyTuple_GET_SIZE(args); +#else + argc = PyTuple_Size(args); + if (unlikely(argc < 0)) return NULL; +#endif + new_args = PyTuple_GetSlice(args, 1, argc); + if (unlikely(!new_args)) + return NULL; + self = PyTuple_GetItem(args, 0); + if (unlikely(!self)) { + Py_DECREF(new_args); + PyErr_Format(PyExc_TypeError, + "unbound method %.200S() needs an argument", + cyfunc->func_qualname); + return NULL; + } + result = __Pyx_CyFunction_CallMethod(func, self, new_args, kw); + Py_DECREF(new_args); + } else { + result = __Pyx_CyFunction_Call(func, args, kw); + } + return result; +} +#if CYTHON_METH_FASTCALL && CYTHON_VECTORCALL +static CYTHON_INLINE int __Pyx_CyFunction_Vectorcall_CheckArgs(__pyx_CyFunctionObject *cyfunc, Py_ssize_t nargs, PyObject *kwnames) +{ + int ret = 0; + if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) { + if (unlikely(nargs < 1)) { + __Pyx_CyFunction_raise_type_error( + cyfunc, "needs an argument"); + return -1; + } + ret = 1; + } + if (unlikely(kwnames) && unlikely(__Pyx_PyTuple_GET_SIZE(kwnames))) { + __Pyx_CyFunction_raise_type_error( + cyfunc, "takes no keyword arguments"); + return -1; + } + return ret; +} +static PyObject * __Pyx_CyFunction_Vectorcall_NOARGS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames) +{ + __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func; + Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); + PyObject *self; +#if CYTHON_COMPILING_IN_LIMITED_API + PyCFunction meth = PyCFunction_GetFunction(cyfunc->func); + if (unlikely(!meth)) return NULL; +#else + PyCFunction meth = ((PyCFunctionObject*)cyfunc)->m_ml->ml_meth; +#endif + switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, kwnames)) { + case 1: + self = args[0]; + args += 1; + nargs -= 1; + break; + case 0: +#if CYTHON_COMPILING_IN_LIMITED_API + self = PyCFunction_GetSelf(((__pyx_CyFunctionObject*)cyfunc)->func); + if (unlikely(!self) && PyErr_Occurred()) return NULL; +#else + self = ((PyCFunctionObject*)cyfunc)->m_self; +#endif + break; + default: + return NULL; + } + if (unlikely(nargs != 0)) { + __Pyx_CyFunction_raise_argument_count_error( + cyfunc, "takes no arguments", nargs); + return NULL; + } + return meth(self, NULL); +} +static PyObject * __Pyx_CyFunction_Vectorcall_O(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames) +{ + __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func; + Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); + PyObject *self; +#if CYTHON_COMPILING_IN_LIMITED_API + PyCFunction meth = PyCFunction_GetFunction(cyfunc->func); + if (unlikely(!meth)) return NULL; +#else + PyCFunction meth = ((PyCFunctionObject*)cyfunc)->m_ml->ml_meth; +#endif + switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, kwnames)) { + case 1: + self = args[0]; + args += 1; + nargs -= 1; + break; + case 0: +#if CYTHON_COMPILING_IN_LIMITED_API + self = PyCFunction_GetSelf(((__pyx_CyFunctionObject*)cyfunc)->func); + if (unlikely(!self) && PyErr_Occurred()) return NULL; +#else + self = ((PyCFunctionObject*)cyfunc)->m_self; +#endif + break; + default: + return NULL; + } + if (unlikely(nargs != 1)) { + __Pyx_CyFunction_raise_argument_count_error( + cyfunc, "takes exactly one argument", nargs); + return NULL; + } + return meth(self, args[0]); +} +static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames) +{ + __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func; + Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); + PyObject *self; +#if CYTHON_COMPILING_IN_LIMITED_API + PyCFunction meth = PyCFunction_GetFunction(cyfunc->func); + if (unlikely(!meth)) return NULL; +#else + PyCFunction meth = ((PyCFunctionObject*)cyfunc)->m_ml->ml_meth; +#endif + switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, NULL)) { + case 1: + self = args[0]; + args += 1; + nargs -= 1; + break; + case 0: +#if CYTHON_COMPILING_IN_LIMITED_API + self = PyCFunction_GetSelf(((__pyx_CyFunctionObject*)cyfunc)->func); + if (unlikely(!self) && PyErr_Occurred()) return NULL; +#else + self = ((PyCFunctionObject*)cyfunc)->m_self; +#endif + break; + default: + return NULL; + } + return ((__Pyx_PyCFunctionFastWithKeywords)(void(*)(void))meth)(self, args, nargs, kwnames); +} +static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames) +{ + __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func; + PyTypeObject *cls = (PyTypeObject *) __Pyx_CyFunction_GetClassObj(cyfunc); + Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); + PyObject *self; +#if CYTHON_COMPILING_IN_LIMITED_API + PyCFunction meth = PyCFunction_GetFunction(cyfunc->func); + if (unlikely(!meth)) return NULL; +#else + PyCFunction meth = ((PyCFunctionObject*)cyfunc)->m_ml->ml_meth; +#endif + switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, NULL)) { + case 1: + self = args[0]; + args += 1; + nargs -= 1; + break; + case 0: +#if CYTHON_COMPILING_IN_LIMITED_API + self = PyCFunction_GetSelf(((__pyx_CyFunctionObject*)cyfunc)->func); + if (unlikely(!self) && PyErr_Occurred()) return NULL; +#else + self = ((PyCFunctionObject*)cyfunc)->m_self; +#endif + break; + default: + return NULL; + } + #if PY_VERSION_HEX < 0x030e00A6 + size_t nargs_value = (size_t) nargs; + #else + Py_ssize_t nargs_value = nargs; + #endif + return ((__Pyx_PyCMethod)(void(*)(void))meth)(self, cls, args, nargs_value, kwnames); +} +#endif +static PyType_Slot __pyx_CyFunctionType_slots[] = { + {Py_tp_dealloc, (void *)__Pyx_CyFunction_dealloc}, + {Py_tp_repr, (void *)__Pyx_CyFunction_repr}, + {Py_tp_call, (void *)__Pyx_CyFunction_CallAsMethod}, + {Py_tp_traverse, (void *)__Pyx_CyFunction_traverse}, + {Py_tp_clear, (void *)__Pyx_CyFunction_clear}, + {Py_tp_methods, (void *)__pyx_CyFunction_methods}, + {Py_tp_members, (void *)__pyx_CyFunction_members}, + {Py_tp_getset, (void *)__pyx_CyFunction_getsets}, + {Py_tp_descr_get, (void *)__Pyx_PyMethod_New}, + {0, 0}, +}; +static PyType_Spec __pyx_CyFunctionType_spec = { + __PYX_TYPE_MODULE_PREFIX "cython_function_or_method", + sizeof(__pyx_CyFunctionObject), + 0, +#ifdef Py_TPFLAGS_METHOD_DESCRIPTOR + Py_TPFLAGS_METHOD_DESCRIPTOR | +#endif +#if CYTHON_METH_FASTCALL +#if defined(Py_TPFLAGS_HAVE_VECTORCALL) + Py_TPFLAGS_HAVE_VECTORCALL | +#elif defined(_Py_TPFLAGS_HAVE_VECTORCALL) + _Py_TPFLAGS_HAVE_VECTORCALL | +#endif +#endif // CYTHON_METH_FASTCALL +#if PY_VERSION_HEX >= 0x030C0000 && !CYTHON_COMPILING_IN_LIMITED_API + Py_TPFLAGS_MANAGED_DICT | +#endif + Py_TPFLAGS_IMMUTABLETYPE | Py_TPFLAGS_DISALLOW_INSTANTIATION | + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE, + __pyx_CyFunctionType_slots +}; +static int __pyx_CyFunction_init(PyObject *module) { + __pyx_mstatetype *mstate = __Pyx_PyModule_GetState(module); + mstate->__pyx_CyFunctionType = __Pyx_FetchCommonTypeFromSpec( + mstate->__pyx_CommonTypesMetaclassType, module, &__pyx_CyFunctionType_spec, NULL); + if (unlikely(mstate->__pyx_CyFunctionType == NULL)) { + return -1; + } + return 0; +} +static CYTHON_INLINE PyObject *__Pyx_CyFunction_InitDefaults(PyObject *func, PyTypeObject *defaults_type) { + __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; + m->defaults = PyObject_CallObject((PyObject*)defaults_type, NULL); // _PyObject_New(defaults_type); + if (unlikely(!m->defaults)) + return NULL; + return m->defaults; +} +static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *func, PyObject *tuple) { + __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; + m->defaults_tuple = tuple; + Py_INCREF(tuple); +} +static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *func, PyObject *dict) { + __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; + m->defaults_kwdict = dict; + Py_INCREF(dict); +} +static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *func, PyObject *dict) { + __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; + m->func_annotations = dict; + Py_INCREF(dict); +} + +/* CythonFunction */ +static PyObject *__Pyx_CyFunction_New(PyMethodDef *ml, int flags, PyObject* qualname, + PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) { + PyObject *op = __Pyx_CyFunction_Init( + PyObject_GC_New(__pyx_CyFunctionObject, __pyx_mstate_global->__pyx_CyFunctionType), + ml, flags, qualname, closure, module, globals, code + ); + if (likely(op)) { + PyObject_GC_Track(op); + } + return op; +} + +/* FusedFunction */ +static PyObject * +__pyx_FusedFunction_New(PyMethodDef *ml, int flags, + PyObject *qualname, PyObject *closure, + PyObject *module, PyObject *globals, + PyObject *code) +{ + PyObject *op = __Pyx_CyFunction_Init( + PyObject_GC_New(__pyx_CyFunctionObject, __pyx_mstate_global->__pyx_FusedFunctionType), + ml, flags, qualname, closure, module, globals, code + ); + if (likely(op)) { + __pyx_FusedFunctionObject *fusedfunc = (__pyx_FusedFunctionObject *) op; + fusedfunc->__signatures__ = NULL; + fusedfunc->self = NULL; + #if CYTHON_COMPILING_IN_LIMITED_API + fusedfunc->ml = ml; + #endif + PyObject_GC_Track(op); + } + return op; +} +static void +__pyx_FusedFunction_dealloc(__pyx_FusedFunctionObject *self) +{ + PyObject_GC_UnTrack(self); + Py_CLEAR(self->self); + Py_CLEAR(self->__signatures__); + __Pyx__CyFunction_dealloc((__pyx_CyFunctionObject *) self); +} +static int +__pyx_FusedFunction_traverse(__pyx_FusedFunctionObject *self, + visitproc visit, + void *arg) +{ + Py_VISIT(self->self); + Py_VISIT(self->__signatures__); + return __Pyx_CyFunction_traverse((__pyx_CyFunctionObject *) self, visit, arg); +} +static int +__pyx_FusedFunction_clear(__pyx_FusedFunctionObject *self) +{ + Py_CLEAR(self->self); + Py_CLEAR(self->__signatures__); + return __Pyx_CyFunction_clear((__pyx_CyFunctionObject *) self); +} +static __pyx_FusedFunctionObject * +__pyx_FusedFunction_descr_get_locked(__pyx_FusedFunctionObject *func, PyObject *obj) +{ + PyObject *module; + __pyx_FusedFunctionObject *meth; + #if CYTHON_COMPILING_IN_LIMITED_API + module = __Pyx_CyFunction_get_module((__pyx_CyFunctionObject *) func, NULL); + if ((unlikely(!module))) return NULL; + #else + module = ((PyCFunctionObject *) func)->m_module; + #endif + meth = (__pyx_FusedFunctionObject *) __pyx_FusedFunction_New( + #if CYTHON_COMPILING_IN_LIMITED_API + func->ml, + #else + ((PyCFunctionObject *) func)->m_ml, + #endif + ((__pyx_CyFunctionObject *) func)->flags, + ((__pyx_CyFunctionObject *) func)->func_qualname, + ((__pyx_CyFunctionObject *) func)->func_closure, + module, + ((__pyx_CyFunctionObject *) func)->func_globals, + ((__pyx_CyFunctionObject *) func)->func_code); + #if CYTHON_COMPILING_IN_LIMITED_API + Py_DECREF(module); + #endif + if (unlikely(!meth)) + return NULL; + Py_XINCREF(func->func.defaults); + meth->func.defaults = func->func.defaults; + __Pyx_CyFunction_SetClassObj(meth, __Pyx_CyFunction_GetClassObj(func)); + Py_XINCREF(func->__signatures__); + meth->__signatures__ = func->__signatures__; + Py_XINCREF(func->func.defaults_tuple); + meth->func.defaults_tuple = func->func.defaults_tuple; + Py_XINCREF(obj); + meth->self = obj; + return meth; +} +static PyObject * +__pyx_FusedFunction_descr_get(PyObject *self, PyObject *obj, PyObject *type) +{ + __pyx_FusedFunctionObject *func, *meth; + func = (__pyx_FusedFunctionObject *) self; + if (func->self || func->func.flags & __Pyx_CYFUNCTION_STATICMETHOD) { + Py_INCREF(self); + return self; + } + if (obj == Py_None) + obj = NULL; + if (func->func.flags & __Pyx_CYFUNCTION_CLASSMETHOD) + obj = type; + if (obj == NULL) { + Py_INCREF(self); + return self; + } + __Pyx_BEGIN_CRITICAL_SECTION(func); + meth = __pyx_FusedFunction_descr_get_locked(func, obj); + __Pyx_END_CRITICAL_SECTION() + return (PyObject *) meth; +} +static PyObject * +_obj_to_string(PyObject *obj) +{ + if (PyUnicode_CheckExact(obj)) + return __Pyx_NewRef(obj); + else if (PyType_Check(obj)) + return PyObject_GetAttr(obj, __pyx_mstate_global->__pyx_n_u_name); + else + return PyObject_Str(obj); +} +static PyObject * +__pyx_FusedFunction_getitem(__pyx_FusedFunctionObject *self, PyObject *idx) +{ + PyObject *signature = NULL; + PyObject *unbound_result_func; + PyObject *result_func = NULL; + if (unlikely(self->__signatures__ == NULL)) { + PyErr_SetString(PyExc_TypeError, "Function is not fused"); + return NULL; + } + if (PyTuple_Check(idx)) { + Py_ssize_t n = __Pyx_PyTuple_GET_SIZE(idx); + PyObject *list; + int i; + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely(n < 0)) return NULL; + #endif + list = PyList_New(n); + if (unlikely(!list)) + return NULL; + for (i = 0; i < n; i++) { + PyObject *string; +#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + PyObject *item = PyTuple_GET_ITEM(idx, i); +#else + PyObject *item = __Pyx_PySequence_ITEM(idx, i); if (unlikely(!item)) goto __pyx_err; +#endif + string = _obj_to_string(item); +#if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS) + Py_DECREF(item); +#endif + if (unlikely(!string)) goto __pyx_err; + if (__Pyx_PyList_SET_ITEM(list, i, string) < (0)) goto __pyx_err; + } + signature = PyUnicode_Join(__pyx_mstate_global->__pyx_kp_u__9, list); +__pyx_err:; + Py_DECREF(list); + } else { + signature = _obj_to_string(idx); + } + if (unlikely(!signature)) + return NULL; + unbound_result_func = PyObject_GetItem(self->__signatures__, signature); + if (likely(unbound_result_func)) { + if (self->self) { + __pyx_FusedFunctionObject *unbound = (__pyx_FusedFunctionObject *) unbound_result_func; + __Pyx_CyFunction_SetClassObj(unbound, __Pyx_CyFunction_GetClassObj(self)); + result_func = __pyx_FusedFunction_descr_get(unbound_result_func, + self->self, self->self); + } else { + result_func = unbound_result_func; + Py_INCREF(result_func); + } + } + Py_DECREF(signature); + Py_XDECREF(unbound_result_func); + return result_func; +} +static PyObject * +__pyx_FusedFunction_callfunction(PyObject *func, PyObject *args, PyObject *kw) +{ + __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *) func; + int static_specialized = (cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD && + !((__pyx_FusedFunctionObject *) func)->__signatures__); + if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !static_specialized) { + return __Pyx_CyFunction_CallAsMethod(func, args, kw); + } else { + return __Pyx_CyFunction_Call(func, args, kw); + } +} +static PyObject * +__pyx_FusedFunction_call(PyObject *func, PyObject *args, PyObject *kw) +{ + __pyx_FusedFunctionObject *binding_func = (__pyx_FusedFunctionObject *) func; + Py_ssize_t argc = __Pyx_PyTuple_GET_SIZE(args); + PyObject *new_args = NULL; + __pyx_FusedFunctionObject *new_func = NULL; + PyObject *result = NULL; + int is_staticmethod = binding_func->func.flags & __Pyx_CYFUNCTION_STATICMETHOD; + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely(argc < 0)) return NULL; + #endif + if (binding_func->self) { + PyObject *self; + Py_ssize_t i; + new_args = PyTuple_New(argc + 1); + if (unlikely(!new_args)) + return NULL; + self = binding_func->self; + Py_INCREF(self); + if (__Pyx_PyTuple_SET_ITEM(new_args, 0, self) < (0)) goto bad; + self = NULL; + for (i = 0; i < argc; i++) { +#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + PyObject *item = PyTuple_GET_ITEM(args, i); + Py_INCREF(item); +#else + PyObject *item = __Pyx_PySequence_ITEM(args, i); if (unlikely(!item)) goto bad; +#endif + if (__Pyx_PyTuple_SET_ITEM(new_args, i + 1, item) < (0)) goto bad; + } + args = new_args; + } + if (binding_func->__signatures__) { + PyObject *tup; + if (is_staticmethod && binding_func->func.flags & __Pyx_CYFUNCTION_CCLASS) { + tup = PyTuple_Pack(3, args, + kw == NULL ? Py_None : kw, + binding_func->func.defaults_tuple); + if (unlikely(!tup)) goto bad; + new_func = (__pyx_FusedFunctionObject *) __Pyx_CyFunction_CallMethod( + func, binding_func->__signatures__, tup, NULL); + } else { + tup = PyTuple_Pack(4, binding_func->__signatures__, args, + kw == NULL ? Py_None : kw, + binding_func->func.defaults_tuple); + if (unlikely(!tup)) goto bad; + new_func = (__pyx_FusedFunctionObject *) __pyx_FusedFunction_callfunction(func, tup, NULL); + } + Py_DECREF(tup); + if (unlikely(!new_func)) + goto bad; + __Pyx_CyFunction_SetClassObj(new_func, __Pyx_CyFunction_GetClassObj(binding_func)); + func = (PyObject *) new_func; + } + result = __pyx_FusedFunction_callfunction(func, args, kw); +bad: + Py_XDECREF(new_args); + Py_XDECREF((PyObject *) new_func); + return result; +} +static PyMemberDef __pyx_FusedFunction_members[] = { + {"__signatures__", + T_OBJECT, + offsetof(__pyx_FusedFunctionObject, __signatures__), + READONLY, + 0}, + {"__self__", T_OBJECT_EX, offsetof(__pyx_FusedFunctionObject, self), READONLY, 0}, + #if !CYTHON_COMPILING_IN_LIMITED_API + {"__module__", T_OBJECT, offsetof(PyCFunctionObject, m_module), 0, 0}, + #endif + {0, 0, 0, 0, 0}, +}; +static PyGetSetDef __pyx_FusedFunction_getsets[] = { + {"__doc__", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, + #if CYTHON_COMPILING_IN_LIMITED_API + {"__module__", (getter)__Pyx_CyFunction_get_module, (setter)__Pyx_CyFunction_set_module, 0, 0}, + #endif + {0, 0, 0, 0, 0} +}; +static PyType_Slot __pyx_FusedFunctionType_slots[] = { + {Py_tp_dealloc, (void *)__pyx_FusedFunction_dealloc}, + {Py_tp_call, (void *)__pyx_FusedFunction_call}, + {Py_tp_traverse, (void *)__pyx_FusedFunction_traverse}, + {Py_tp_clear, (void *)__pyx_FusedFunction_clear}, + {Py_tp_members, (void *)__pyx_FusedFunction_members}, + {Py_tp_getset, (void *)__pyx_FusedFunction_getsets}, + {Py_tp_descr_get, (void *)__pyx_FusedFunction_descr_get}, + {Py_mp_subscript, (void *)__pyx_FusedFunction_getitem}, + {0, 0}, +}; +static PyType_Spec __pyx_FusedFunctionType_spec = { + __PYX_TYPE_MODULE_PREFIX "fused_cython_function", + sizeof(__pyx_FusedFunctionObject), + 0, + Py_TPFLAGS_IMMUTABLETYPE | Py_TPFLAGS_DISALLOW_INSTANTIATION | + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC , + __pyx_FusedFunctionType_slots +}; +static int __pyx_FusedFunction_init(PyObject *module) { + __pyx_mstatetype *mstate = __Pyx_PyModule_GetState(module); + PyObject *bases = PyTuple_Pack(1, mstate->__pyx_CyFunctionType); + if (unlikely(!bases)) { + return -1; + } + mstate->__pyx_FusedFunctionType = __Pyx_FetchCommonTypeFromSpec( + mstate->__pyx_CommonTypesMetaclassType, module, &__pyx_FusedFunctionType_spec, bases); + Py_DECREF(bases); + if (unlikely(mstate->__pyx_FusedFunctionType == NULL)) { + return -1; + } + return 0; +} + +/* ImportFrom */ +static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) { + PyObject* value = __Pyx_PyObject_GetAttrStr(module, name); + if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) { + const char* module_name_str = 0; + PyObject* module_name = 0; + PyObject* module_dot = 0; + PyObject* full_name = 0; + PyErr_Clear(); + module_name_str = PyModule_GetName(module); + if (unlikely(!module_name_str)) { goto modbad; } + module_name = PyUnicode_FromString(module_name_str); + if (unlikely(!module_name)) { goto modbad; } + module_dot = PyUnicode_Concat(module_name, __pyx_mstate_global->__pyx_kp_u__10); + if (unlikely(!module_dot)) { goto modbad; } + full_name = PyUnicode_Concat(module_dot, name); + if (unlikely(!full_name)) { goto modbad; } + #if (CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM < 0x07030400) ||\ + CYTHON_COMPILING_IN_GRAAL + { + PyObject *modules = PyImport_GetModuleDict(); + if (unlikely(!modules)) + goto modbad; + value = PyObject_GetItem(modules, full_name); + } + #else + value = PyImport_GetModule(full_name); + #endif + modbad: + Py_XDECREF(full_name); + Py_XDECREF(module_dot); + Py_XDECREF(module_name); + } + if (unlikely(!value)) { + PyErr_Format(PyExc_ImportError, "cannot import name %S", name); + } + return value; +} + +/* CLineInTraceback (used by AddTraceback) */ +#if CYTHON_CLINE_IN_TRACEBACK && CYTHON_CLINE_IN_TRACEBACK_RUNTIME +#if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030A0000 +#define __Pyx_PyProbablyModule_GetDict(o) __Pyx_XNewRef(PyModule_GetDict(o)) +#elif !CYTHON_COMPILING_IN_CPYTHON || CYTHON_COMPILING_IN_CPYTHON_FREETHREADING +#define __Pyx_PyProbablyModule_GetDict(o) PyObject_GenericGetDict(o, NULL); +#else +PyObject* __Pyx_PyProbablyModule_GetDict(PyObject *o) { + PyObject **dict_ptr = _PyObject_GetDictPtr(o); + return dict_ptr ? __Pyx_XNewRef(*dict_ptr) : NULL; +} +#endif +static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line) { + PyObject *use_cline = NULL; + PyObject *ptype, *pvalue, *ptraceback; + PyObject *cython_runtime_dict; + CYTHON_MAYBE_UNUSED_VAR(tstate); + if (unlikely(!__pyx_mstate_global->__pyx_cython_runtime)) { + return c_line; + } + __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback); + cython_runtime_dict = __Pyx_PyProbablyModule_GetDict(__pyx_mstate_global->__pyx_cython_runtime); + if (likely(cython_runtime_dict)) { + __PYX_PY_DICT_LOOKUP_IF_MODIFIED( + use_cline, cython_runtime_dict, + __Pyx_PyDict_SetDefault(cython_runtime_dict, __pyx_mstate_global->__pyx_n_u_cline_in_traceback, Py_False)) + } + if (use_cline == NULL || use_cline == Py_False || (use_cline != Py_True && PyObject_Not(use_cline) != 0)) { + c_line = 0; + } + Py_XDECREF(use_cline); + Py_XDECREF(cython_runtime_dict); + __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback); + return c_line; +} +#endif + +/* CodeObjectCache (used by AddTraceback) */ +static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) { + int start = 0, mid = 0, end = count - 1; + if (end >= 0 && code_line > entries[end].code_line) { + return count; + } + while (start < end) { + mid = start + (end - start) / 2; + if (code_line < entries[mid].code_line) { + end = mid; + } else if (code_line > entries[mid].code_line) { + start = mid + 1; + } else { + return mid; + } + } + if (code_line <= entries[mid].code_line) { + return mid; + } else { + return mid + 1; + } +} +static __Pyx_CachedCodeObjectType *__pyx__find_code_object(struct __Pyx_CodeObjectCache *code_cache, int code_line) { + __Pyx_CachedCodeObjectType* code_object; + int pos; + if (unlikely(!code_line) || unlikely(!code_cache->entries)) { + return NULL; + } + pos = __pyx_bisect_code_objects(code_cache->entries, code_cache->count, code_line); + if (unlikely(pos >= code_cache->count) || unlikely(code_cache->entries[pos].code_line != code_line)) { + return NULL; + } + code_object = code_cache->entries[pos].code_object; + Py_INCREF(code_object); + return code_object; +} +static __Pyx_CachedCodeObjectType *__pyx_find_code_object(int code_line) { +#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING && !CYTHON_ATOMICS + (void)__pyx__find_code_object; + return NULL; // Most implementation should have atomics. But otherwise, don't make it thread-safe, just miss. +#else + struct __Pyx_CodeObjectCache *code_cache = &__pyx_mstate_global->__pyx_code_cache; +#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING + __pyx_nonatomic_int_type old_count = __pyx_atomic_incr_acq_rel(&code_cache->accessor_count); + if (old_count < 0) { + __pyx_atomic_decr_acq_rel(&code_cache->accessor_count); + return NULL; + } +#endif + __Pyx_CachedCodeObjectType *result = __pyx__find_code_object(code_cache, code_line); +#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING + __pyx_atomic_decr_acq_rel(&code_cache->accessor_count); +#endif + return result; +#endif +} +static void __pyx__insert_code_object(struct __Pyx_CodeObjectCache *code_cache, int code_line, __Pyx_CachedCodeObjectType* code_object) +{ + int pos, i; + __Pyx_CodeObjectCacheEntry* entries = code_cache->entries; + if (unlikely(!code_line)) { + return; + } + if (unlikely(!entries)) { + entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry)); + if (likely(entries)) { + code_cache->entries = entries; + code_cache->max_count = 64; + code_cache->count = 1; + entries[0].code_line = code_line; + entries[0].code_object = code_object; + Py_INCREF(code_object); + } + return; + } + pos = __pyx_bisect_code_objects(code_cache->entries, code_cache->count, code_line); + if ((pos < code_cache->count) && unlikely(code_cache->entries[pos].code_line == code_line)) { + __Pyx_CachedCodeObjectType* tmp = entries[pos].code_object; + entries[pos].code_object = code_object; + Py_INCREF(code_object); + Py_DECREF(tmp); + return; + } + if (code_cache->count == code_cache->max_count) { + int new_max = code_cache->max_count + 64; + entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc( + code_cache->entries, ((size_t)new_max) * sizeof(__Pyx_CodeObjectCacheEntry)); + if (unlikely(!entries)) { + return; + } + code_cache->entries = entries; + code_cache->max_count = new_max; + } + for (i=code_cache->count; i>pos; i--) { + entries[i] = entries[i-1]; + } + entries[pos].code_line = code_line; + entries[pos].code_object = code_object; + code_cache->count++; + Py_INCREF(code_object); +} +static void __pyx_insert_code_object(int code_line, __Pyx_CachedCodeObjectType* code_object) { +#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING && !CYTHON_ATOMICS + (void)__pyx__insert_code_object; + return; // Most implementation should have atomics. But otherwise, don't make it thread-safe, just fail. +#else + struct __Pyx_CodeObjectCache *code_cache = &__pyx_mstate_global->__pyx_code_cache; +#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING + __pyx_nonatomic_int_type expected = 0; + if (!__pyx_atomic_int_cmp_exchange(&code_cache->accessor_count, &expected, INT_MIN)) { + return; + } +#endif + __pyx__insert_code_object(code_cache, code_line, code_object); +#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING + __pyx_atomic_sub(&code_cache->accessor_count, INT_MIN); +#endif +#endif +} + +/* AddTraceback */ +#include "compile.h" +#include "frameobject.h" +#include "traceback.h" +#if PY_VERSION_HEX >= 0x030b00a6 && !CYTHON_COMPILING_IN_LIMITED_API && !defined(PYPY_VERSION) + #ifndef Py_BUILD_CORE + #define Py_BUILD_CORE 1 + #endif + #include "internal/pycore_frame.h" +#endif +#if CYTHON_COMPILING_IN_LIMITED_API +static PyObject *__Pyx_PyCode_Replace_For_AddTraceback(PyObject *code, PyObject *scratch_dict, + PyObject *firstlineno, PyObject *name) { + PyObject *replace = NULL; + if (unlikely(PyDict_SetItemString(scratch_dict, "co_firstlineno", firstlineno))) return NULL; + if (unlikely(PyDict_SetItemString(scratch_dict, "co_name", name))) return NULL; + replace = PyObject_GetAttrString(code, "replace"); + if (likely(replace)) { + PyObject *result = PyObject_Call(replace, __pyx_mstate_global->__pyx_empty_tuple, scratch_dict); + Py_DECREF(replace); + return result; + } + PyErr_Clear(); + return NULL; +} +static void __Pyx_AddTraceback(const char *funcname, int c_line, + int py_line, const char *filename) { + PyObject *code_object = NULL, *py_py_line = NULL, *py_funcname = NULL, *dict = NULL; + PyObject *replace = NULL, *getframe = NULL, *frame = NULL; + PyObject *exc_type, *exc_value, *exc_traceback; + int success = 0; + if (c_line) { + c_line = __Pyx_CLineForTraceback(__Pyx_PyThreadState_Current, c_line); + } + PyErr_Fetch(&exc_type, &exc_value, &exc_traceback); + code_object = __pyx_find_code_object(c_line ? -c_line : py_line); + if (!code_object) { + code_object = Py_CompileString("_getframe()", filename, Py_eval_input); + if (unlikely(!code_object)) goto bad; + py_py_line = PyLong_FromLong(py_line); + if (unlikely(!py_py_line)) goto bad; + if (c_line) { + py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); + } else { + py_funcname = PyUnicode_FromString(funcname); + } + if (unlikely(!py_funcname)) goto bad; + dict = PyDict_New(); + if (unlikely(!dict)) goto bad; + { + PyObject *old_code_object = code_object; + code_object = __Pyx_PyCode_Replace_For_AddTraceback(code_object, dict, py_py_line, py_funcname); + Py_DECREF(old_code_object); + } + if (unlikely(!code_object)) goto bad; + __pyx_insert_code_object(c_line ? -c_line : py_line, code_object); + } else { + dict = PyDict_New(); + } + getframe = PySys_GetObject("_getframe"); + if (unlikely(!getframe)) goto bad; + if (unlikely(PyDict_SetItemString(dict, "_getframe", getframe))) goto bad; + frame = PyEval_EvalCode(code_object, dict, dict); + if (unlikely(!frame) || frame == Py_None) goto bad; + success = 1; + bad: + PyErr_Restore(exc_type, exc_value, exc_traceback); + Py_XDECREF(code_object); + Py_XDECREF(py_py_line); + Py_XDECREF(py_funcname); + Py_XDECREF(dict); + Py_XDECREF(replace); + if (success) { + PyTraceBack_Here( + (struct _frame*)frame); + } + Py_XDECREF(frame); +} +#else +static PyCodeObject* __Pyx_CreateCodeObjectForTraceback( + const char *funcname, int c_line, + int py_line, const char *filename) { + PyCodeObject *py_code = NULL; + PyObject *py_funcname = NULL; + if (c_line) { + py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); + if (!py_funcname) goto bad; + funcname = PyUnicode_AsUTF8(py_funcname); + if (!funcname) goto bad; + } + py_code = PyCode_NewEmpty(filename, funcname, py_line); + Py_XDECREF(py_funcname); + return py_code; +bad: + Py_XDECREF(py_funcname); + return NULL; +} +static void __Pyx_AddTraceback(const char *funcname, int c_line, + int py_line, const char *filename) { + PyCodeObject *py_code = 0; + PyFrameObject *py_frame = 0; + PyThreadState *tstate = __Pyx_PyThreadState_Current; + PyObject *ptype, *pvalue, *ptraceback; + if (c_line) { + c_line = __Pyx_CLineForTraceback(tstate, c_line); + } + py_code = __pyx_find_code_object(c_line ? -c_line : py_line); + if (!py_code) { + __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback); + py_code = __Pyx_CreateCodeObjectForTraceback( + funcname, c_line, py_line, filename); + if (!py_code) { + /* If the code object creation fails, then we should clear the + fetched exception references and propagate the new exception */ + Py_XDECREF(ptype); + Py_XDECREF(pvalue); + Py_XDECREF(ptraceback); + goto bad; + } + __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback); + __pyx_insert_code_object(c_line ? -c_line : py_line, py_code); + } + py_frame = PyFrame_New( + tstate, /*PyThreadState *tstate,*/ + py_code, /*PyCodeObject *code,*/ + __pyx_mstate_global->__pyx_d, /*PyObject *globals,*/ + 0 /*PyObject *locals*/ + ); + if (!py_frame) goto bad; + __Pyx_PyFrame_SetLineNumber(py_frame, py_line); + PyTraceBack_Here(py_frame); +bad: + Py_XDECREF(py_code); + Py_XDECREF(py_frame); +} +#endif + +/* CheckUnpickleChecksum */ +static void __Pyx_RaiseUnpickleChecksumError(long checksum, long checksum1, long checksum2, long checksum3, const char *members) { + PyObject *pickle_module = PyImport_ImportModule("pickle"); + if (unlikely(!pickle_module)) return; + PyObject *pickle_error = PyObject_GetAttrString(pickle_module, "PickleError"); + Py_DECREF(pickle_module); + if (unlikely(!pickle_error)) return; + if (checksum2 == checksum1) { + PyErr_Format(pickle_error, "Incompatible checksums (0x%x vs (0x%x) = (%s))", + checksum, checksum1, members); + } else if (checksum3 == checksum2) { + PyErr_Format(pickle_error, "Incompatible checksums (0x%x vs (0x%x, 0x%x) = (%s))", + checksum, checksum1, checksum2, members); + } else { + PyErr_Format(pickle_error, "Incompatible checksums (0x%x vs (0x%x, 0x%x, 0x%x) = (%s))", + checksum, checksum1, checksum2, checksum3, members); + } + Py_DECREF(pickle_error); +} +static int __Pyx_CheckUnpickleChecksum(long checksum, long checksum1, long checksum2, long checksum3, const char *members) { + int found = 0; + found |= checksum1 == checksum; + found |= checksum2 == checksum; + found |= checksum3 == checksum; + if (likely(found)) + return 0; + __Pyx_RaiseUnpickleChecksumError(checksum, checksum1, checksum2, checksum3, members); + return -1; +} + +/* CIntFromPyVerify */ +#define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\ + __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0) +#define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\ + __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1) +#define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\ + {\ + func_type value = func_value;\ + if (sizeof(target_type) < sizeof(func_type)) {\ + if (unlikely(value != (func_type) (target_type) value)) {\ + func_type zero = 0;\ + if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\ + return (target_type) -1;\ + if (is_unsigned && unlikely(value < zero))\ + goto raise_neg_overflow;\ + else\ + goto raise_overflow;\ + }\ + }\ + return (target_type) value;\ + } + +/* CIntFromPy */ +static CYTHON_INLINE int __Pyx_PyLong_As_int(PyObject *x) { +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif + const int neg_one = (int) -1, const_zero = (int) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic pop +#endif + const int is_unsigned = neg_one > const_zero; + if (unlikely(!PyLong_Check(x))) { + int val; + PyObject *tmp = __Pyx_PyNumber_Long(x); + if (!tmp) return (int) -1; + val = __Pyx_PyLong_As_int(tmp); + Py_DECREF(tmp); + return val; + } + if (is_unsigned) { +#if CYTHON_USE_PYLONG_INTERNALS + if (unlikely(__Pyx_PyLong_IsNeg(x))) { + goto raise_neg_overflow; + } else if (__Pyx_PyLong_IsCompact(x)) { + __PYX_VERIFY_RETURN_INT(int, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x)) + } else { + const digit* digits = __Pyx_PyLong_Digits(x); + assert(__Pyx_PyLong_DigitCount(x) > 1); + switch (__Pyx_PyLong_DigitCount(x)) { + case 2: + if ((8 * sizeof(int) > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) >= 2 * PyLong_SHIFT)) { + return (int) (((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); + } + } + break; + case 3: + if ((8 * sizeof(int) > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) >= 3 * PyLong_SHIFT)) { + return (int) (((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); + } + } + break; + case 4: + if ((8 * sizeof(int) > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) >= 4 * PyLong_SHIFT)) { + return (int) (((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); + } + } + break; + } + } +#endif +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7 + if (unlikely(Py_SIZE(x) < 0)) { + goto raise_neg_overflow; + } +#else + { + int result = PyObject_RichCompareBool(x, Py_False, Py_LT); + if (unlikely(result < 0)) + return (int) -1; + if (unlikely(result == 1)) + goto raise_neg_overflow; + } +#endif + if ((sizeof(int) <= sizeof(unsigned long))) { + __PYX_VERIFY_RETURN_INT_EXC(int, unsigned long, PyLong_AsUnsignedLong(x)) + } else if ((sizeof(int) <= sizeof(unsigned PY_LONG_LONG))) { + __PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) + } + } else { +#if CYTHON_USE_PYLONG_INTERNALS + if (__Pyx_PyLong_IsCompact(x)) { + __PYX_VERIFY_RETURN_INT(int, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x)) + } else { + const digit* digits = __Pyx_PyLong_Digits(x); + assert(__Pyx_PyLong_DigitCount(x) > 1); + switch (__Pyx_PyLong_SignedDigitCount(x)) { + case -2: + if ((8 * sizeof(int) - 1 > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) - 1 > 2 * PyLong_SHIFT)) { + return (int) (((int)-1)*(((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case 2: + if ((8 * sizeof(int) > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) - 1 > 2 * PyLong_SHIFT)) { + return (int) ((((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case -3: + if ((8 * sizeof(int) - 1 > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) - 1 > 3 * PyLong_SHIFT)) { + return (int) (((int)-1)*(((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case 3: + if ((8 * sizeof(int) > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) - 1 > 3 * PyLong_SHIFT)) { + return (int) ((((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case -4: + if ((8 * sizeof(int) - 1 > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) - 1 > 4 * PyLong_SHIFT)) { + return (int) (((int)-1)*(((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case 4: + if ((8 * sizeof(int) > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) - 1 > 4 * PyLong_SHIFT)) { + return (int) ((((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + } + } +#endif + if ((sizeof(int) <= sizeof(long))) { + __PYX_VERIFY_RETURN_INT_EXC(int, long, PyLong_AsLong(x)) + } else if ((sizeof(int) <= sizeof(PY_LONG_LONG))) { + __PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x)) + } + } + { + int val; + int ret = -1; +#if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API + Py_ssize_t bytes_copied = PyLong_AsNativeBytes( + x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0)); + if (unlikely(bytes_copied == -1)) { + } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) { + goto raise_overflow; + } else { + ret = 0; + } +#elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray) + int one = 1; int is_little = (int)*(unsigned char *)&one; + unsigned char *bytes = (unsigned char *)&val; + ret = _PyLong_AsByteArray((PyLongObject *)x, + bytes, sizeof(val), + is_little, !is_unsigned); +#else + PyObject *v; + PyObject *stepval = NULL, *mask = NULL, *shift = NULL; + int bits, remaining_bits, is_negative = 0; + int chunk_size = (sizeof(long) < 8) ? 30 : 62; + if (likely(PyLong_CheckExact(x))) { + v = __Pyx_NewRef(x); + } else { + v = PyNumber_Long(x); + if (unlikely(!v)) return (int) -1; + assert(PyLong_CheckExact(v)); + } + { + int result = PyObject_RichCompareBool(v, Py_False, Py_LT); + if (unlikely(result < 0)) { + Py_DECREF(v); + return (int) -1; + } + is_negative = result == 1; + } + if (is_unsigned && unlikely(is_negative)) { + Py_DECREF(v); + goto raise_neg_overflow; + } else if (is_negative) { + stepval = PyNumber_Invert(v); + Py_DECREF(v); + if (unlikely(!stepval)) + return (int) -1; + } else { + stepval = v; + } + v = NULL; + val = (int) 0; + mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done; + shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done; + for (bits = 0; bits < (int) sizeof(int) * 8 - chunk_size; bits += chunk_size) { + PyObject *tmp, *digit; + long idigit; + digit = PyNumber_And(stepval, mask); + if (unlikely(!digit)) goto done; + idigit = PyLong_AsLong(digit); + Py_DECREF(digit); + if (unlikely(idigit < 0)) goto done; + val |= ((int) idigit) << bits; + tmp = PyNumber_Rshift(stepval, shift); + if (unlikely(!tmp)) goto done; + Py_DECREF(stepval); stepval = tmp; + } + Py_DECREF(shift); shift = NULL; + Py_DECREF(mask); mask = NULL; + { + long idigit = PyLong_AsLong(stepval); + if (unlikely(idigit < 0)) goto done; + remaining_bits = ((int) sizeof(int) * 8) - bits - (is_unsigned ? 0 : 1); + if (unlikely(idigit >= (1L << remaining_bits))) + goto raise_overflow; + val |= ((int) idigit) << bits; + } + if (!is_unsigned) { + if (unlikely(val & (((int) 1) << (sizeof(int) * 8 - 1)))) + goto raise_overflow; + if (is_negative) + val = ~val; + } + ret = 0; + done: + Py_XDECREF(shift); + Py_XDECREF(mask); + Py_XDECREF(stepval); +#endif + if (unlikely(ret)) + return (int) -1; + return val; + } +raise_overflow: + PyErr_SetString(PyExc_OverflowError, + "value too large to convert to int"); + return (int) -1; +raise_neg_overflow: + PyErr_SetString(PyExc_OverflowError, + "can't convert negative value to int"); + return (int) -1; +} + +/* CIntFromPy */ +static CYTHON_INLINE size_t __Pyx_PyLong_As_size_t(PyObject *x) { +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif + const size_t neg_one = (size_t) -1, const_zero = (size_t) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic pop +#endif + const int is_unsigned = neg_one > const_zero; + if (unlikely(!PyLong_Check(x))) { + size_t val; + PyObject *tmp = __Pyx_PyNumber_Long(x); + if (!tmp) return (size_t) -1; + val = __Pyx_PyLong_As_size_t(tmp); + Py_DECREF(tmp); + return val; + } + if (is_unsigned) { +#if CYTHON_USE_PYLONG_INTERNALS + if (unlikely(__Pyx_PyLong_IsNeg(x))) { + goto raise_neg_overflow; + } else if (__Pyx_PyLong_IsCompact(x)) { + __PYX_VERIFY_RETURN_INT(size_t, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x)) + } else { + const digit* digits = __Pyx_PyLong_Digits(x); + assert(__Pyx_PyLong_DigitCount(x) > 1); + switch (__Pyx_PyLong_DigitCount(x)) { + case 2: + if ((8 * sizeof(size_t) > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(size_t) >= 2 * PyLong_SHIFT)) { + return (size_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + } + break; + case 3: + if ((8 * sizeof(size_t) > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(size_t) >= 3 * PyLong_SHIFT)) { + return (size_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + } + break; + case 4: + if ((8 * sizeof(size_t) > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(size_t) >= 4 * PyLong_SHIFT)) { + return (size_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + } + break; + } + } +#endif +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7 + if (unlikely(Py_SIZE(x) < 0)) { + goto raise_neg_overflow; + } +#else + { + int result = PyObject_RichCompareBool(x, Py_False, Py_LT); + if (unlikely(result < 0)) + return (size_t) -1; + if (unlikely(result == 1)) + goto raise_neg_overflow; + } +#endif + if ((sizeof(size_t) <= sizeof(unsigned long))) { + __PYX_VERIFY_RETURN_INT_EXC(size_t, unsigned long, PyLong_AsUnsignedLong(x)) + } else if ((sizeof(size_t) <= sizeof(unsigned PY_LONG_LONG))) { + __PYX_VERIFY_RETURN_INT_EXC(size_t, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) + } + } else { +#if CYTHON_USE_PYLONG_INTERNALS + if (__Pyx_PyLong_IsCompact(x)) { + __PYX_VERIFY_RETURN_INT(size_t, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x)) + } else { + const digit* digits = __Pyx_PyLong_Digits(x); + assert(__Pyx_PyLong_DigitCount(x) > 1); + switch (__Pyx_PyLong_SignedDigitCount(x)) { + case -2: + if ((8 * sizeof(size_t) - 1 > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(size_t, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(size_t) - 1 > 2 * PyLong_SHIFT)) { + return (size_t) (((size_t)-1)*(((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]))); + } + } + break; + case 2: + if ((8 * sizeof(size_t) > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(size_t) - 1 > 2 * PyLong_SHIFT)) { + return (size_t) ((((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]))); + } + } + break; + case -3: + if ((8 * sizeof(size_t) - 1 > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(size_t, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(size_t) - 1 > 3 * PyLong_SHIFT)) { + return (size_t) (((size_t)-1)*(((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]))); + } + } + break; + case 3: + if ((8 * sizeof(size_t) > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(size_t) - 1 > 3 * PyLong_SHIFT)) { + return (size_t) ((((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]))); + } + } + break; + case -4: + if ((8 * sizeof(size_t) - 1 > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(size_t, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(size_t) - 1 > 4 * PyLong_SHIFT)) { + return (size_t) (((size_t)-1)*(((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]))); + } + } + break; + case 4: + if ((8 * sizeof(size_t) > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(size_t) - 1 > 4 * PyLong_SHIFT)) { + return (size_t) ((((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]))); + } + } + break; + } + } +#endif + if ((sizeof(size_t) <= sizeof(long))) { + __PYX_VERIFY_RETURN_INT_EXC(size_t, long, PyLong_AsLong(x)) + } else if ((sizeof(size_t) <= sizeof(PY_LONG_LONG))) { + __PYX_VERIFY_RETURN_INT_EXC(size_t, PY_LONG_LONG, PyLong_AsLongLong(x)) + } + } + { + size_t val; + int ret = -1; +#if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API + Py_ssize_t bytes_copied = PyLong_AsNativeBytes( + x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0)); + if (unlikely(bytes_copied == -1)) { + } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) { + goto raise_overflow; + } else { + ret = 0; + } +#elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray) + int one = 1; int is_little = (int)*(unsigned char *)&one; + unsigned char *bytes = (unsigned char *)&val; + ret = _PyLong_AsByteArray((PyLongObject *)x, + bytes, sizeof(val), + is_little, !is_unsigned); +#else + PyObject *v; + PyObject *stepval = NULL, *mask = NULL, *shift = NULL; + int bits, remaining_bits, is_negative = 0; + int chunk_size = (sizeof(long) < 8) ? 30 : 62; + if (likely(PyLong_CheckExact(x))) { + v = __Pyx_NewRef(x); + } else { + v = PyNumber_Long(x); + if (unlikely(!v)) return (size_t) -1; + assert(PyLong_CheckExact(v)); + } + { + int result = PyObject_RichCompareBool(v, Py_False, Py_LT); + if (unlikely(result < 0)) { + Py_DECREF(v); + return (size_t) -1; + } + is_negative = result == 1; + } + if (is_unsigned && unlikely(is_negative)) { + Py_DECREF(v); + goto raise_neg_overflow; + } else if (is_negative) { + stepval = PyNumber_Invert(v); + Py_DECREF(v); + if (unlikely(!stepval)) + return (size_t) -1; + } else { + stepval = v; + } + v = NULL; + val = (size_t) 0; + mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done; + shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done; + for (bits = 0; bits < (int) sizeof(size_t) * 8 - chunk_size; bits += chunk_size) { + PyObject *tmp, *digit; + long idigit; + digit = PyNumber_And(stepval, mask); + if (unlikely(!digit)) goto done; + idigit = PyLong_AsLong(digit); + Py_DECREF(digit); + if (unlikely(idigit < 0)) goto done; + val |= ((size_t) idigit) << bits; + tmp = PyNumber_Rshift(stepval, shift); + if (unlikely(!tmp)) goto done; + Py_DECREF(stepval); stepval = tmp; + } + Py_DECREF(shift); shift = NULL; + Py_DECREF(mask); mask = NULL; + { + long idigit = PyLong_AsLong(stepval); + if (unlikely(idigit < 0)) goto done; + remaining_bits = ((int) sizeof(size_t) * 8) - bits - (is_unsigned ? 0 : 1); + if (unlikely(idigit >= (1L << remaining_bits))) + goto raise_overflow; + val |= ((size_t) idigit) << bits; + } + if (!is_unsigned) { + if (unlikely(val & (((size_t) 1) << (sizeof(size_t) * 8 - 1)))) + goto raise_overflow; + if (is_negative) + val = ~val; + } + ret = 0; + done: + Py_XDECREF(shift); + Py_XDECREF(mask); + Py_XDECREF(stepval); +#endif + if (unlikely(ret)) + return (size_t) -1; + return val; + } +raise_overflow: + PyErr_SetString(PyExc_OverflowError, + "value too large to convert to size_t"); + return (size_t) -1; +raise_neg_overflow: + PyErr_SetString(PyExc_OverflowError, + "can't convert negative value to size_t"); + return (size_t) -1; +} + +/* CIntFromPy */ +static CYTHON_INLINE long __Pyx_PyLong_As_long(PyObject *x) { +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif + const long neg_one = (long) -1, const_zero = (long) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic pop +#endif + const int is_unsigned = neg_one > const_zero; + if (unlikely(!PyLong_Check(x))) { + long val; + PyObject *tmp = __Pyx_PyNumber_Long(x); + if (!tmp) return (long) -1; + val = __Pyx_PyLong_As_long(tmp); + Py_DECREF(tmp); + return val; + } + if (is_unsigned) { +#if CYTHON_USE_PYLONG_INTERNALS + if (unlikely(__Pyx_PyLong_IsNeg(x))) { + goto raise_neg_overflow; + } else if (__Pyx_PyLong_IsCompact(x)) { + __PYX_VERIFY_RETURN_INT(long, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x)) + } else { + const digit* digits = __Pyx_PyLong_Digits(x); + assert(__Pyx_PyLong_DigitCount(x) > 1); + switch (__Pyx_PyLong_DigitCount(x)) { + case 2: + if ((8 * sizeof(long) > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) >= 2 * PyLong_SHIFT)) { + return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); + } + } + break; + case 3: + if ((8 * sizeof(long) > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) >= 3 * PyLong_SHIFT)) { + return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); + } + } + break; + case 4: + if ((8 * sizeof(long) > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) >= 4 * PyLong_SHIFT)) { + return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); + } + } + break; + } + } +#endif +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7 + if (unlikely(Py_SIZE(x) < 0)) { + goto raise_neg_overflow; + } +#else + { + int result = PyObject_RichCompareBool(x, Py_False, Py_LT); + if (unlikely(result < 0)) + return (long) -1; + if (unlikely(result == 1)) + goto raise_neg_overflow; + } +#endif + if ((sizeof(long) <= sizeof(unsigned long))) { + __PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x)) + } else if ((sizeof(long) <= sizeof(unsigned PY_LONG_LONG))) { + __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) + } + } else { +#if CYTHON_USE_PYLONG_INTERNALS + if (__Pyx_PyLong_IsCompact(x)) { + __PYX_VERIFY_RETURN_INT(long, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x)) + } else { + const digit* digits = __Pyx_PyLong_Digits(x); + assert(__Pyx_PyLong_DigitCount(x) > 1); + switch (__Pyx_PyLong_SignedDigitCount(x)) { + case -2: + if ((8 * sizeof(long) - 1 > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 2 * PyLong_SHIFT)) { + return (long) (((long)-1)*(((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case 2: + if ((8 * sizeof(long) > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 2 * PyLong_SHIFT)) { + return (long) ((((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case -3: + if ((8 * sizeof(long) - 1 > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 3 * PyLong_SHIFT)) { + return (long) (((long)-1)*(((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case 3: + if ((8 * sizeof(long) > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 3 * PyLong_SHIFT)) { + return (long) ((((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case -4: + if ((8 * sizeof(long) - 1 > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 4 * PyLong_SHIFT)) { + return (long) (((long)-1)*(((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case 4: + if ((8 * sizeof(long) > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 4 * PyLong_SHIFT)) { + return (long) ((((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + } + } +#endif + if ((sizeof(long) <= sizeof(long))) { + __PYX_VERIFY_RETURN_INT_EXC(long, long, PyLong_AsLong(x)) + } else if ((sizeof(long) <= sizeof(PY_LONG_LONG))) { + __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x)) + } + } + { + long val; + int ret = -1; +#if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API + Py_ssize_t bytes_copied = PyLong_AsNativeBytes( + x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0)); + if (unlikely(bytes_copied == -1)) { + } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) { + goto raise_overflow; + } else { + ret = 0; + } +#elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray) + int one = 1; int is_little = (int)*(unsigned char *)&one; + unsigned char *bytes = (unsigned char *)&val; + ret = _PyLong_AsByteArray((PyLongObject *)x, + bytes, sizeof(val), + is_little, !is_unsigned); +#else + PyObject *v; + PyObject *stepval = NULL, *mask = NULL, *shift = NULL; + int bits, remaining_bits, is_negative = 0; + int chunk_size = (sizeof(long) < 8) ? 30 : 62; + if (likely(PyLong_CheckExact(x))) { + v = __Pyx_NewRef(x); + } else { + v = PyNumber_Long(x); + if (unlikely(!v)) return (long) -1; + assert(PyLong_CheckExact(v)); + } + { + int result = PyObject_RichCompareBool(v, Py_False, Py_LT); + if (unlikely(result < 0)) { + Py_DECREF(v); + return (long) -1; + } + is_negative = result == 1; + } + if (is_unsigned && unlikely(is_negative)) { + Py_DECREF(v); + goto raise_neg_overflow; + } else if (is_negative) { + stepval = PyNumber_Invert(v); + Py_DECREF(v); + if (unlikely(!stepval)) + return (long) -1; + } else { + stepval = v; + } + v = NULL; + val = (long) 0; + mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done; + shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done; + for (bits = 0; bits < (int) sizeof(long) * 8 - chunk_size; bits += chunk_size) { + PyObject *tmp, *digit; + long idigit; + digit = PyNumber_And(stepval, mask); + if (unlikely(!digit)) goto done; + idigit = PyLong_AsLong(digit); + Py_DECREF(digit); + if (unlikely(idigit < 0)) goto done; + val |= ((long) idigit) << bits; + tmp = PyNumber_Rshift(stepval, shift); + if (unlikely(!tmp)) goto done; + Py_DECREF(stepval); stepval = tmp; + } + Py_DECREF(shift); shift = NULL; + Py_DECREF(mask); mask = NULL; + { + long idigit = PyLong_AsLong(stepval); + if (unlikely(idigit < 0)) goto done; + remaining_bits = ((int) sizeof(long) * 8) - bits - (is_unsigned ? 0 : 1); + if (unlikely(idigit >= (1L << remaining_bits))) + goto raise_overflow; + val |= ((long) idigit) << bits; + } + if (!is_unsigned) { + if (unlikely(val & (((long) 1) << (sizeof(long) * 8 - 1)))) + goto raise_overflow; + if (is_negative) + val = ~val; + } + ret = 0; + done: + Py_XDECREF(shift); + Py_XDECREF(mask); + Py_XDECREF(stepval); +#endif + if (unlikely(ret)) + return (long) -1; + return val; + } +raise_overflow: + PyErr_SetString(PyExc_OverflowError, + "value too large to convert to long"); + return (long) -1; +raise_neg_overflow: + PyErr_SetString(PyExc_OverflowError, + "can't convert negative value to long"); + return (long) -1; +} + +/* CIntToPy */ +static CYTHON_INLINE PyObject* __Pyx_PyLong_From_long(long value) { +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif + const long neg_one = (long) -1, const_zero = (long) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic pop +#endif + const int is_unsigned = neg_one > const_zero; + if (is_unsigned) { + if (sizeof(long) < sizeof(long)) { + return PyLong_FromLong((long) value); + } else if (sizeof(long) <= sizeof(unsigned long)) { + return PyLong_FromUnsignedLong((unsigned long) value); +#if !CYTHON_COMPILING_IN_PYPY + } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { + return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); +#endif + } + } else { + if (sizeof(long) <= sizeof(long)) { + return PyLong_FromLong((long) value); + } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { + return PyLong_FromLongLong((PY_LONG_LONG) value); + } + } + { + unsigned char *bytes = (unsigned char *)&value; +#if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4 + if (is_unsigned) { + return PyLong_FromUnsignedNativeBytes(bytes, sizeof(value), -1); + } else { + return PyLong_FromNativeBytes(bytes, sizeof(value), -1); + } +#elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000 + int one = 1; int little = (int)*(unsigned char *)&one; + return _PyLong_FromByteArray(bytes, sizeof(long), + little, !is_unsigned); +#else + int one = 1; int little = (int)*(unsigned char *)&one; + PyObject *from_bytes, *result = NULL, *kwds = NULL; + PyObject *py_bytes = NULL, *order_str = NULL; + from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes"); + if (!from_bytes) return NULL; + py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(long)); + if (!py_bytes) goto limited_bad; + order_str = PyUnicode_FromString(little ? "little" : "big"); + if (!order_str) goto limited_bad; + { + PyObject *args[3+(CYTHON_VECTORCALL ? 1 : 0)] = { NULL, py_bytes, order_str }; + if (!is_unsigned) { + kwds = __Pyx_MakeVectorcallBuilderKwds(1); + if (!kwds) goto limited_bad; + if (__Pyx_VectorcallBuilder_AddArgStr("signed", __Pyx_NewRef(Py_True), kwds, args+3, 0) < 0) goto limited_bad; + } + result = __Pyx_Object_Vectorcall_CallFromBuilder(from_bytes, args+1, 2 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET, kwds); + } + limited_bad: + Py_XDECREF(kwds); + Py_XDECREF(order_str); + Py_XDECREF(py_bytes); + Py_XDECREF(from_bytes); + return result; +#endif + } +} + +/* CIntToPy */ +static CYTHON_INLINE PyObject* __Pyx_PyLong_From_mystatus_t(mystatus_t value) { +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif + const mystatus_t neg_one = (mystatus_t) -1, const_zero = (mystatus_t) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic pop +#endif + const int is_unsigned = neg_one > const_zero; + if (is_unsigned) { + if (sizeof(mystatus_t) < sizeof(long)) { + return PyLong_FromLong((long) value); + } else if (sizeof(mystatus_t) <= sizeof(unsigned long)) { + return PyLong_FromUnsignedLong((unsigned long) value); +#if !CYTHON_COMPILING_IN_PYPY + } else if (sizeof(mystatus_t) <= sizeof(unsigned PY_LONG_LONG)) { + return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); +#endif + } + } else { + if (sizeof(mystatus_t) <= sizeof(long)) { + return PyLong_FromLong((long) value); + } else if (sizeof(mystatus_t) <= sizeof(PY_LONG_LONG)) { + return PyLong_FromLongLong((PY_LONG_LONG) value); + } + } + { + unsigned char *bytes = (unsigned char *)&value; +#if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4 + if (is_unsigned) { + return PyLong_FromUnsignedNativeBytes(bytes, sizeof(value), -1); + } else { + return PyLong_FromNativeBytes(bytes, sizeof(value), -1); + } +#elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000 + int one = 1; int little = (int)*(unsigned char *)&one; + return _PyLong_FromByteArray(bytes, sizeof(mystatus_t), + little, !is_unsigned); +#else + int one = 1; int little = (int)*(unsigned char *)&one; + PyObject *from_bytes, *result = NULL, *kwds = NULL; + PyObject *py_bytes = NULL, *order_str = NULL; + from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes"); + if (!from_bytes) return NULL; + py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(mystatus_t)); + if (!py_bytes) goto limited_bad; + order_str = PyUnicode_FromString(little ? "little" : "big"); + if (!order_str) goto limited_bad; + { + PyObject *args[3+(CYTHON_VECTORCALL ? 1 : 0)] = { NULL, py_bytes, order_str }; + if (!is_unsigned) { + kwds = __Pyx_MakeVectorcallBuilderKwds(1); + if (!kwds) goto limited_bad; + if (__Pyx_VectorcallBuilder_AddArgStr("signed", __Pyx_NewRef(Py_True), kwds, args+3, 0) < 0) goto limited_bad; + } + result = __Pyx_Object_Vectorcall_CallFromBuilder(from_bytes, args+1, 2 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET, kwds); + } + limited_bad: + Py_XDECREF(kwds); + Py_XDECREF(order_str); + Py_XDECREF(py_bytes); + Py_XDECREF(from_bytes); + return result; +#endif + } +} + +/* PyObjectCallMethod1 */ +#if !(CYTHON_VECTORCALL && (__PYX_LIMITED_VERSION_HEX >= 0x030C0000 || (!CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x03090000))) +static PyObject* __Pyx__PyObject_CallMethod1(PyObject* method, PyObject* arg) { + PyObject *result = __Pyx_PyObject_CallOneArg(method, arg); + Py_DECREF(method); + return result; +} +#endif +static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg) { +#if CYTHON_VECTORCALL && (__PYX_LIMITED_VERSION_HEX >= 0x030C0000 || (!CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x03090000)) + PyObject *args[2] = {obj, arg}; + (void) __Pyx_PyObject_CallOneArg; + (void) __Pyx_PyObject_Call2Args; + return PyObject_VectorcallMethod(method_name, args, 2 | PY_VECTORCALL_ARGUMENTS_OFFSET, NULL); +#else + PyObject *method = NULL, *result; + int is_method = __Pyx_PyObject_GetMethod(obj, method_name, &method); + if (likely(is_method)) { + result = __Pyx_PyObject_Call2Args(method, obj, arg); + Py_DECREF(method); + return result; + } + if (unlikely(!method)) return NULL; + return __Pyx__PyObject_CallMethod1(method, arg); +#endif +} + +/* UpdateUnpickledDict */ +static int __Pyx__UpdateUnpickledDict(PyObject *obj, PyObject *state, Py_ssize_t index) { + PyObject *state_dict = __Pyx_PySequence_ITEM(state, index); + if (unlikely(!state_dict)) { + return -1; + } + int non_empty = PyObject_IsTrue(state_dict); + if (non_empty == 0) { + Py_DECREF(state_dict); + return 0; + } else if (unlikely(non_empty == -1)) { + return -1; + } + PyObject *dict; + #if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030A0000 + dict = PyObject_GetAttrString(obj, "__dict__"); + #else + dict = PyObject_GenericGetDict(obj, NULL); + #endif + if (unlikely(!dict)) { + Py_DECREF(state_dict); + return -1; + } + int result; + if (likely(PyDict_CheckExact(dict))) { + result = PyDict_Update(dict, state_dict); + } else { + PyObject *obj_result = __Pyx_PyObject_CallMethod1(dict, __pyx_mstate_global->__pyx_n_u_update, state_dict); + if (likely(obj_result)) { + Py_DECREF(obj_result); + result = 0; + } else { + result = -1; + } + } + Py_DECREF(state_dict); + Py_DECREF(dict); + return result; +} +static int __Pyx_UpdateUnpickledDict(PyObject *obj, PyObject *state, Py_ssize_t index) { + Py_ssize_t state_size = __Pyx_PyTuple_GET_SIZE(state); + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely(state_size == -1)) return -1; + #endif + if (state_size <= index) { + return 0; + } + return __Pyx__UpdateUnpickledDict(obj, state, index); +} + +/* FormatTypeName */ +#if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030d0000 +static __Pyx_TypeName +__Pyx_PyType_GetFullyQualifiedName(PyTypeObject* tp) +{ + PyObject *module = NULL, *name = NULL, *result = NULL; + #if __PYX_LIMITED_VERSION_HEX < 0x030b0000 + name = __Pyx_PyObject_GetAttrStr((PyObject *)tp, + __pyx_mstate_global->__pyx_n_u_qualname); + #else + name = PyType_GetQualName(tp); + #endif + if (unlikely(name == NULL) || unlikely(!PyUnicode_Check(name))) goto bad; + module = __Pyx_PyObject_GetAttrStr((PyObject *)tp, + __pyx_mstate_global->__pyx_n_u_module); + if (unlikely(module == NULL) || unlikely(!PyUnicode_Check(module))) goto bad; + if (PyUnicode_CompareWithASCIIString(module, "builtins") == 0) { + result = name; + name = NULL; + goto done; + } + result = PyUnicode_FromFormat("%U.%U", module, name); + if (unlikely(result == NULL)) goto bad; + done: + Py_XDECREF(name); + Py_XDECREF(module); + return result; + bad: + PyErr_Clear(); + if (name) { + result = name; + name = NULL; + } else { + result = __Pyx_NewRef(__pyx_mstate_global->__pyx_kp_u__11); + } + goto done; +} +#endif + +/* FastTypeChecks */ +#if CYTHON_COMPILING_IN_CPYTHON +static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) { + while (a) { + a = __Pyx_PyType_GetSlot(a, tp_base, PyTypeObject*); + if (a == b) + return 1; + } + return b == &PyBaseObject_Type; +} +static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b) { + PyObject *mro; + if (a == b) return 1; + mro = a->tp_mro; + if (likely(mro)) { + Py_ssize_t i, n; + n = PyTuple_GET_SIZE(mro); + for (i = 0; i < n; i++) { + if (PyTuple_GET_ITEM(mro, i) == (PyObject *)b) + return 1; + } + return 0; + } + return __Pyx_InBases(a, b); +} +static CYTHON_INLINE int __Pyx_IsAnySubtype2(PyTypeObject *cls, PyTypeObject *a, PyTypeObject *b) { + PyObject *mro; + if (cls == a || cls == b) return 1; + mro = cls->tp_mro; + if (likely(mro)) { + Py_ssize_t i, n; + n = PyTuple_GET_SIZE(mro); + for (i = 0; i < n; i++) { + PyObject *base = PyTuple_GET_ITEM(mro, i); + if (base == (PyObject *)a || base == (PyObject *)b) + return 1; + } + return 0; + } + return __Pyx_InBases(cls, a) || __Pyx_InBases(cls, b); +} +static CYTHON_INLINE int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject *exc_type2) { + if (exc_type1) { + return __Pyx_IsAnySubtype2((PyTypeObject*)err, (PyTypeObject*)exc_type1, (PyTypeObject*)exc_type2); + } else { + return __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type2); + } +} +static int __Pyx_PyErr_GivenExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { + Py_ssize_t i, n; + assert(PyExceptionClass_Check(exc_type)); + n = PyTuple_GET_SIZE(tuple); + for (i=0; i>= 8; + ++i; + } + __Pyx_cached_runtime_version = version; + } +} +#endif +static unsigned long __Pyx_get_runtime_version(void) { +#if __PYX_LIMITED_VERSION_HEX >= 0x030b0000 + return Py_Version & ~0xFFUL; +#else + return __Pyx_cached_runtime_version; +#endif +} + +/* SwapException (used by CoroutineBase) */ +#if CYTHON_FAST_THREAD_STATE +static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { + PyObject *tmp_type, *tmp_value, *tmp_tb; + #if CYTHON_USE_EXC_INFO_STACK && PY_VERSION_HEX >= 0x030B00a4 + _PyErr_StackItem *exc_info = tstate->exc_info; + tmp_value = exc_info->exc_value; + exc_info->exc_value = *value; + if (tmp_value == NULL || tmp_value == Py_None) { + Py_XDECREF(tmp_value); + tmp_value = NULL; + tmp_type = NULL; + tmp_tb = NULL; + } else { + tmp_type = (PyObject*) Py_TYPE(tmp_value); + Py_INCREF(tmp_type); + #if CYTHON_COMPILING_IN_CPYTHON + tmp_tb = ((PyBaseExceptionObject*) tmp_value)->traceback; + Py_XINCREF(tmp_tb); + #else + tmp_tb = PyException_GetTraceback(tmp_value); + #endif + } + #elif CYTHON_USE_EXC_INFO_STACK + _PyErr_StackItem *exc_info = tstate->exc_info; + tmp_type = exc_info->exc_type; + tmp_value = exc_info->exc_value; + tmp_tb = exc_info->exc_traceback; + exc_info->exc_type = *type; + exc_info->exc_value = *value; + exc_info->exc_traceback = *tb; + #else + tmp_type = tstate->exc_type; + tmp_value = tstate->exc_value; + tmp_tb = tstate->exc_traceback; + tstate->exc_type = *type; + tstate->exc_value = *value; + tstate->exc_traceback = *tb; + #endif + *type = tmp_type; + *value = tmp_value; + *tb = tmp_tb; +} +#else +static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb) { + PyObject *tmp_type, *tmp_value, *tmp_tb; + PyErr_GetExcInfo(&tmp_type, &tmp_value, &tmp_tb); + PyErr_SetExcInfo(*type, *value, *tb); + *type = tmp_type; + *value = tmp_value; + *tb = tmp_tb; +} +#endif + +/* IterNextPlain (used by CoroutineBase) */ +#if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030A0000 +static PyObject *__Pyx_GetBuiltinNext_LimitedAPI(void) { + if (unlikely(!__pyx_mstate_global->__Pyx_GetBuiltinNext_LimitedAPI_cache)) + __pyx_mstate_global->__Pyx_GetBuiltinNext_LimitedAPI_cache = __Pyx_GetBuiltinName(__pyx_mstate_global->__pyx_n_u_next); + return __pyx_mstate_global->__Pyx_GetBuiltinNext_LimitedAPI_cache; +} +#endif +static CYTHON_INLINE PyObject *__Pyx_PyIter_Next_Plain(PyObject *iterator) { +#if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030A0000 + PyObject *result; + PyObject *next = __Pyx_GetBuiltinNext_LimitedAPI(); + if (unlikely(!next)) return NULL; + result = PyObject_CallFunctionObjArgs(next, iterator, NULL); + return result; +#else + (void)__Pyx_GetBuiltinName; // only for early limited API + iternextfunc iternext = __Pyx_PyObject_GetIterNextFunc(iterator); + assert(iternext); + return iternext(iterator); +#endif +} + +/* ReturnWithStopIteration (used by CoroutineBase) */ +static void __Pyx__ReturnWithStopIteration(PyObject* value, int async); +static CYTHON_INLINE void __Pyx_ReturnWithStopIteration(PyObject* value, int async, int iternext) { + if (value == Py_None) { + if (async || !iternext) + PyErr_SetNone(async ? PyExc_StopAsyncIteration : PyExc_StopIteration); + return; + } + __Pyx__ReturnWithStopIteration(value, async); +} +static void __Pyx__ReturnWithStopIteration(PyObject* value, int async) { +#if CYTHON_COMPILING_IN_CPYTHON + __Pyx_PyThreadState_declare +#endif + PyObject *exc; + PyObject *exc_type = async ? PyExc_StopAsyncIteration : PyExc_StopIteration; +#if CYTHON_COMPILING_IN_CPYTHON + if ((PY_VERSION_HEX >= (0x030C00A6)) || unlikely(PyTuple_Check(value) || PyExceptionInstance_Check(value))) { + if (PY_VERSION_HEX >= (0x030e00A1)) { + exc = __Pyx_PyObject_CallOneArg(exc_type, value); + } else { + PyObject *args_tuple = PyTuple_New(1); + if (unlikely(!args_tuple)) return; + Py_INCREF(value); + PyTuple_SET_ITEM(args_tuple, 0, value); + exc = PyObject_Call(exc_type, args_tuple, NULL); + Py_DECREF(args_tuple); + } + if (unlikely(!exc)) return; + } else { + Py_INCREF(value); + exc = value; + } + #if CYTHON_FAST_THREAD_STATE + __Pyx_PyThreadState_assign + #if CYTHON_USE_EXC_INFO_STACK + if (!__pyx_tstate->exc_info->exc_value) + #else + if (!__pyx_tstate->exc_type) + #endif + { + Py_INCREF(exc_type); + __Pyx_ErrRestore(exc_type, exc, NULL); + return; + } + #endif +#else + exc = __Pyx_PyObject_CallOneArg(exc_type, value); + if (unlikely(!exc)) return; +#endif + PyErr_SetObject(exc_type, exc); + Py_DECREF(exc); +} + +/* CoroutineBase (used by Generator) */ +#if !CYTHON_COMPILING_IN_LIMITED_API +#include +#if PY_VERSION_HEX >= 0x030b00a6 && !defined(PYPY_VERSION) + #ifndef Py_BUILD_CORE + #define Py_BUILD_CORE 1 + #endif + #include "internal/pycore_frame.h" +#endif +#endif // CYTHON_COMPILING_IN_LIMITED_API +static CYTHON_INLINE void +__Pyx_Coroutine_Undelegate(__pyx_CoroutineObject *gen) { +#if CYTHON_USE_AM_SEND + gen->yieldfrom_am_send = NULL; +#endif + Py_CLEAR(gen->yieldfrom); +} +static int __Pyx_PyGen__FetchStopIterationValue(PyThreadState *__pyx_tstate, PyObject **pvalue) { + PyObject *et, *ev, *tb; + PyObject *value = NULL; + CYTHON_UNUSED_VAR(__pyx_tstate); + __Pyx_ErrFetch(&et, &ev, &tb); + if (!et) { + Py_XDECREF(tb); + Py_XDECREF(ev); + Py_INCREF(Py_None); + *pvalue = Py_None; + return 0; + } + if (likely(et == PyExc_StopIteration)) { + if (!ev) { + Py_INCREF(Py_None); + value = Py_None; + } + else if (likely(__Pyx_IS_TYPE(ev, (PyTypeObject*)PyExc_StopIteration))) { + #if CYTHON_COMPILING_IN_LIMITED_API || CYTHON_COMPILING_IN_GRAAL + value = PyObject_GetAttr(ev, __pyx_mstate_global->__pyx_n_u_value); + if (unlikely(!value)) goto limited_api_failure; + #else + value = ((PyStopIterationObject *)ev)->value; + Py_INCREF(value); + #endif + Py_DECREF(ev); + } + else if (unlikely(PyTuple_Check(ev))) { + Py_ssize_t tuple_size = __Pyx_PyTuple_GET_SIZE(ev); + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely(tuple_size < 0)) { + Py_XDECREF(tb); + Py_DECREF(ev); + Py_DECREF(et); + return -1; + } + #endif + if (tuple_size >= 1) { +#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + value = PyTuple_GET_ITEM(ev, 0); + Py_INCREF(value); +#elif CYTHON_ASSUME_SAFE_MACROS + value = PySequence_ITEM(ev, 0); +#else + value = PySequence_GetItem(ev, 0); + if (!value) goto limited_api_failure; +#endif + } else { + Py_INCREF(Py_None); + value = Py_None; + } + Py_DECREF(ev); + } + else if (!__Pyx_TypeCheck(ev, (PyTypeObject*)PyExc_StopIteration)) { + value = ev; + } + if (likely(value)) { + Py_XDECREF(tb); + Py_DECREF(et); + *pvalue = value; + return 0; + } + } else if (!__Pyx_PyErr_GivenExceptionMatches(et, PyExc_StopIteration)) { + __Pyx_ErrRestore(et, ev, tb); + return -1; + } + PyErr_NormalizeException(&et, &ev, &tb); + if (unlikely(!PyObject_TypeCheck(ev, (PyTypeObject*)PyExc_StopIteration))) { + __Pyx_ErrRestore(et, ev, tb); + return -1; + } + Py_XDECREF(tb); + Py_DECREF(et); +#if CYTHON_COMPILING_IN_LIMITED_API + value = PyObject_GetAttr(ev, __pyx_mstate_global->__pyx_n_u_value); +#else + value = ((PyStopIterationObject *)ev)->value; + Py_INCREF(value); +#endif + Py_DECREF(ev); +#if CYTHON_COMPILING_IN_LIMITED_API + if (unlikely(!value)) return -1; +#endif + *pvalue = value; + return 0; +#if CYTHON_COMPILING_IN_LIMITED_API || CYTHON_COMPILING_IN_GRAAL || !CYTHON_ASSUME_SAFE_MACROS + limited_api_failure: + Py_XDECREF(et); + Py_XDECREF(tb); + Py_XDECREF(ev); + return -1; +#endif +} +static CYTHON_INLINE +__Pyx_PySendResult __Pyx_Coroutine_status_from_result(PyObject **retval) { + if (*retval) { + return PYGEN_NEXT; + } else if (likely(__Pyx_PyGen__FetchStopIterationValue(__Pyx_PyThreadState_Current, retval) == 0)) { + return PYGEN_RETURN; + } else { + return PYGEN_ERROR; + } +} +static CYTHON_INLINE +void __Pyx_Coroutine_ExceptionClear(__Pyx_ExcInfoStruct *exc_state) { +#if PY_VERSION_HEX >= 0x030B00a4 + Py_CLEAR(exc_state->exc_value); +#else + PyObject *t, *v, *tb; + t = exc_state->exc_type; + v = exc_state->exc_value; + tb = exc_state->exc_traceback; + exc_state->exc_type = NULL; + exc_state->exc_value = NULL; + exc_state->exc_traceback = NULL; + Py_XDECREF(t); + Py_XDECREF(v); + Py_XDECREF(tb); +#endif +} +#define __Pyx_Coroutine_AlreadyRunningError(gen) (__Pyx__Coroutine_AlreadyRunningError(gen), (PyObject*)NULL) +static void __Pyx__Coroutine_AlreadyRunningError(__pyx_CoroutineObject *gen) { + const char *msg; + CYTHON_MAYBE_UNUSED_VAR(gen); + if ((0)) { + #ifdef __Pyx_Coroutine_USED + } else if (__Pyx_Coroutine_Check((PyObject*)gen)) { + msg = "coroutine already executing"; + #endif + #ifdef __Pyx_AsyncGen_USED + } else if (__Pyx_AsyncGen_CheckExact((PyObject*)gen)) { + msg = "async generator already executing"; + #endif + } else { + msg = "generator already executing"; + } + PyErr_SetString(PyExc_ValueError, msg); +} +static void __Pyx_Coroutine_AlreadyTerminatedError(PyObject *gen, PyObject *value, int closing) { + CYTHON_MAYBE_UNUSED_VAR(gen); + CYTHON_MAYBE_UNUSED_VAR(closing); + #ifdef __Pyx_Coroutine_USED + if (!closing && __Pyx_Coroutine_Check(gen)) { + PyErr_SetString(PyExc_RuntimeError, "cannot reuse already awaited coroutine"); + } else + #endif + if (value) { + #ifdef __Pyx_AsyncGen_USED + if (__Pyx_AsyncGen_CheckExact(gen)) + PyErr_SetNone(PyExc_StopAsyncIteration); + else + #endif + PyErr_SetNone(PyExc_StopIteration); + } +} +static +__Pyx_PySendResult __Pyx_Coroutine_SendEx(__pyx_CoroutineObject *self, PyObject *value, PyObject **result, int closing) { + __Pyx_PyThreadState_declare + PyThreadState *tstate; + __Pyx_ExcInfoStruct *exc_state; + PyObject *retval; + assert(__Pyx_Coroutine_get_is_running(self)); // Callers should ensure is_running + if (unlikely(self->resume_label == -1)) { + __Pyx_Coroutine_AlreadyTerminatedError((PyObject*)self, value, closing); + return PYGEN_ERROR; + } +#if CYTHON_FAST_THREAD_STATE + __Pyx_PyThreadState_assign + tstate = __pyx_tstate; +#else + tstate = __Pyx_PyThreadState_Current; +#endif + exc_state = &self->gi_exc_state; + if (exc_state->exc_value) { + #if CYTHON_COMPILING_IN_LIMITED_API || CYTHON_COMPILING_IN_PYPY + #else + PyObject *exc_tb; + #if PY_VERSION_HEX >= 0x030B00a4 && !CYTHON_COMPILING_IN_CPYTHON + exc_tb = PyException_GetTraceback(exc_state->exc_value); + #elif PY_VERSION_HEX >= 0x030B00a4 + exc_tb = ((PyBaseExceptionObject*) exc_state->exc_value)->traceback; + #else + exc_tb = exc_state->exc_traceback; + #endif + if (exc_tb) { + PyTracebackObject *tb = (PyTracebackObject *) exc_tb; + PyFrameObject *f = tb->tb_frame; + assert(f->f_back == NULL); + #if PY_VERSION_HEX >= 0x030B00A1 + f->f_back = PyThreadState_GetFrame(tstate); + #else + Py_XINCREF(tstate->frame); + f->f_back = tstate->frame; + #endif + #if PY_VERSION_HEX >= 0x030B00a4 && !CYTHON_COMPILING_IN_CPYTHON + Py_DECREF(exc_tb); + #endif + } + #endif + } +#if CYTHON_USE_EXC_INFO_STACK + exc_state->previous_item = tstate->exc_info; + tstate->exc_info = exc_state; +#else + if (exc_state->exc_type) { + __Pyx_ExceptionSwap(&exc_state->exc_type, &exc_state->exc_value, &exc_state->exc_traceback); + } else { + __Pyx_Coroutine_ExceptionClear(exc_state); + __Pyx_ExceptionSave(&exc_state->exc_type, &exc_state->exc_value, &exc_state->exc_traceback); + } +#endif + retval = self->body(self, tstate, value); +#if CYTHON_USE_EXC_INFO_STACK + exc_state = &self->gi_exc_state; + tstate->exc_info = exc_state->previous_item; + exc_state->previous_item = NULL; + __Pyx_Coroutine_ResetFrameBackpointer(exc_state); +#endif + *result = retval; + if (self->resume_label == -1) { + return likely(retval) ? PYGEN_RETURN : PYGEN_ERROR; + } + return PYGEN_NEXT; +} +static CYTHON_INLINE void __Pyx_Coroutine_ResetFrameBackpointer(__Pyx_ExcInfoStruct *exc_state) { +#if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API + CYTHON_UNUSED_VAR(exc_state); +#else + PyObject *exc_tb; + #if PY_VERSION_HEX >= 0x030B00a4 + if (!exc_state->exc_value) return; + exc_tb = PyException_GetTraceback(exc_state->exc_value); + #else + exc_tb = exc_state->exc_traceback; + #endif + if (likely(exc_tb)) { + PyTracebackObject *tb = (PyTracebackObject *) exc_tb; + PyFrameObject *f = tb->tb_frame; + Py_CLEAR(f->f_back); + #if PY_VERSION_HEX >= 0x030B00a4 + Py_DECREF(exc_tb); + #endif + } +#endif +} +#define __Pyx_Coroutine_MethodReturnFromResult(gen, result, retval, iternext)\ + ((result) == PYGEN_NEXT ? (retval) : __Pyx__Coroutine_MethodReturnFromResult(gen, result, retval, iternext)) +static PyObject * +__Pyx__Coroutine_MethodReturnFromResult(PyObject* gen, __Pyx_PySendResult result, PyObject *retval, int iternext) { + CYTHON_MAYBE_UNUSED_VAR(gen); + if (likely(result == PYGEN_RETURN)) { + int is_async = 0; + #ifdef __Pyx_AsyncGen_USED + is_async = __Pyx_AsyncGen_CheckExact(gen); + #endif + __Pyx_ReturnWithStopIteration(retval, is_async, iternext); + Py_XDECREF(retval); + } + return NULL; +} +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE +PyObject *__Pyx_PyGen_Send(PyGenObject *gen, PyObject *arg) { +#if PY_VERSION_HEX <= 0x030A00A1 + return _PyGen_Send(gen, arg); +#else + PyObject *result; + if (PyIter_Send((PyObject*)gen, arg ? arg : Py_None, &result) == PYGEN_RETURN) { + if (PyAsyncGen_CheckExact(gen)) { + assert(result == Py_None); + PyErr_SetNone(PyExc_StopAsyncIteration); + } + else if (result == Py_None) { + PyErr_SetNone(PyExc_StopIteration); + } + else { +#if PY_VERSION_HEX < 0x030d00A1 + _PyGen_SetStopIterationValue(result); +#else + if (!PyTuple_Check(result) && !PyExceptionInstance_Check(result)) { + PyErr_SetObject(PyExc_StopIteration, result); + } else { + PyObject *exc = __Pyx_PyObject_CallOneArg(PyExc_StopIteration, result); + if (likely(exc != NULL)) { + PyErr_SetObject(PyExc_StopIteration, exc); + Py_DECREF(exc); + } + } +#endif + } + Py_DECREF(result); + result = NULL; + } + return result; +#endif +} +#endif +static CYTHON_INLINE __Pyx_PySendResult +__Pyx_Coroutine_FinishDelegation(__pyx_CoroutineObject *gen, PyObject** retval) { + __Pyx_PySendResult result; + PyObject *val = NULL; + assert(__Pyx_Coroutine_get_is_running(gen)); + __Pyx_Coroutine_Undelegate(gen); + __Pyx_PyGen__FetchStopIterationValue(__Pyx_PyThreadState_Current, &val); + result = __Pyx_Coroutine_SendEx(gen, val, retval, 0); + Py_XDECREF(val); + return result; +} +#if CYTHON_USE_AM_SEND +static __Pyx_PySendResult +__Pyx_Coroutine_SendToDelegate(__pyx_CoroutineObject *gen, __Pyx_pyiter_sendfunc gen_am_send, PyObject *value, PyObject **retval) { + PyObject *ret = NULL; + __Pyx_PySendResult delegate_result, result; + assert(__Pyx_Coroutine_get_is_running(gen)); + delegate_result = gen_am_send(gen->yieldfrom, value, &ret); + if (delegate_result == PYGEN_NEXT) { + assert (ret != NULL); + *retval = ret; + return PYGEN_NEXT; + } + assert (delegate_result != PYGEN_ERROR || ret == NULL); + __Pyx_Coroutine_Undelegate(gen); + result = __Pyx_Coroutine_SendEx(gen, ret, retval, 0); + Py_XDECREF(ret); + return result; +} +#endif +static PyObject *__Pyx_Coroutine_Send(PyObject *self, PyObject *value) { + PyObject *retval = NULL; + __Pyx_PySendResult result = __Pyx_Coroutine_AmSend(self, value, &retval); + return __Pyx_Coroutine_MethodReturnFromResult(self, result, retval, 0); +} +static __Pyx_PySendResult +__Pyx_Coroutine_AmSend(PyObject *self, PyObject *value, PyObject **retval) { + __Pyx_PySendResult result; + __pyx_CoroutineObject *gen = (__pyx_CoroutineObject*) self; + if (unlikely(__Pyx_Coroutine_test_and_set_is_running(gen))) { + *retval = __Pyx_Coroutine_AlreadyRunningError(gen); + return PYGEN_ERROR; + } + #if CYTHON_USE_AM_SEND + if (gen->yieldfrom_am_send) { + result = __Pyx_Coroutine_SendToDelegate(gen, gen->yieldfrom_am_send, value, retval); + } else + #endif + if (gen->yieldfrom) { + PyObject *yf = gen->yieldfrom; + PyObject *ret; + #if !CYTHON_USE_AM_SEND + #ifdef __Pyx_Generator_USED + if (__Pyx_Generator_CheckExact(yf)) { + ret = __Pyx_Coroutine_Send(yf, value); + } else + #endif + #ifdef __Pyx_Coroutine_USED + if (__Pyx_Coroutine_Check(yf)) { + ret = __Pyx_Coroutine_Send(yf, value); + } else + #endif + #ifdef __Pyx_AsyncGen_USED + if (__pyx_PyAsyncGenASend_CheckExact(yf)) { + ret = __Pyx_async_gen_asend_send(yf, value); + } else + #endif + #if CYTHON_COMPILING_IN_CPYTHON + if (PyGen_CheckExact(yf)) { + ret = __Pyx_PyGen_Send((PyGenObject*)yf, value == Py_None ? NULL : value); + } else + if (PyCoro_CheckExact(yf)) { + ret = __Pyx_PyGen_Send((PyGenObject*)yf, value == Py_None ? NULL : value); + } else + #endif + #endif + { + #if !CYTHON_COMPILING_IN_LIMITED_API || __PYX_LIMITED_VERSION_HEX >= 0x03080000 + if (value == Py_None && PyIter_Check(yf)) + ret = __Pyx_PyIter_Next_Plain(yf); + else + #endif + ret = __Pyx_PyObject_CallMethod1(yf, __pyx_mstate_global->__pyx_n_u_send, value); + } + if (likely(ret)) { + __Pyx_Coroutine_unset_is_running(gen); + *retval = ret; + return PYGEN_NEXT; + } + result = __Pyx_Coroutine_FinishDelegation(gen, retval); + } else { + result = __Pyx_Coroutine_SendEx(gen, value, retval, 0); + } + __Pyx_Coroutine_unset_is_running(gen); + return result; +} +static int __Pyx_Coroutine_CloseIter(__pyx_CoroutineObject *gen, PyObject *yf) { + __Pyx_PySendResult result; + PyObject *retval = NULL; + CYTHON_UNUSED_VAR(gen); + assert(__Pyx_Coroutine_get_is_running(gen)); + #ifdef __Pyx_Generator_USED + if (__Pyx_Generator_CheckExact(yf)) { + result = __Pyx_Coroutine_Close(yf, &retval); + } else + #endif + #ifdef __Pyx_Coroutine_USED + if (__Pyx_Coroutine_Check(yf)) { + result = __Pyx_Coroutine_Close(yf, &retval); + } else + if (__Pyx_CoroutineAwait_CheckExact(yf)) { + result = __Pyx_CoroutineAwait_Close((__pyx_CoroutineAwaitObject*)yf); + } else + #endif + #ifdef __Pyx_AsyncGen_USED + if (__pyx_PyAsyncGenASend_CheckExact(yf)) { + retval = __Pyx_async_gen_asend_close(yf, NULL); + result = PYGEN_RETURN; + } else + if (__pyx_PyAsyncGenAThrow_CheckExact(yf)) { + retval = __Pyx_async_gen_athrow_close(yf, NULL); + result = PYGEN_RETURN; + } else + #endif + { + PyObject *meth; + result = PYGEN_RETURN; + meth = __Pyx_PyObject_GetAttrStrNoError(yf, __pyx_mstate_global->__pyx_n_u_close); + if (unlikely(!meth)) { + if (unlikely(PyErr_Occurred())) { + PyErr_WriteUnraisable(yf); + } + } else { + retval = __Pyx_PyObject_CallNoArg(meth); + Py_DECREF(meth); + if (unlikely(!retval)) { + result = PYGEN_ERROR; + } + } + } + Py_XDECREF(retval); + return result == PYGEN_ERROR ? -1 : 0; +} +static PyObject *__Pyx_Generator_Next(PyObject *self) { + __Pyx_PySendResult result; + PyObject *retval = NULL; + __pyx_CoroutineObject *gen = (__pyx_CoroutineObject*) self; + if (unlikely(__Pyx_Coroutine_test_and_set_is_running(gen))) { + return __Pyx_Coroutine_AlreadyRunningError(gen); + } + #if CYTHON_USE_AM_SEND + if (gen->yieldfrom_am_send) { + result = __Pyx_Coroutine_SendToDelegate(gen, gen->yieldfrom_am_send, Py_None, &retval); + } else + #endif + if (gen->yieldfrom) { + PyObject *yf = gen->yieldfrom; + PyObject *ret; + #ifdef __Pyx_Generator_USED + if (__Pyx_Generator_CheckExact(yf)) { + ret = __Pyx_Generator_Next(yf); + } else + #endif + #ifdef __Pyx_Coroutine_USED + if (__Pyx_Coroutine_CheckExact(yf)) { + ret = __Pyx_Coroutine_Send(yf, Py_None); + } else + #endif + #if CYTHON_COMPILING_IN_CPYTHON && (PY_VERSION_HEX < 0x030A00A3 || !CYTHON_USE_AM_SEND) + if (PyGen_CheckExact(yf)) { + ret = __Pyx_PyGen_Send((PyGenObject*)yf, NULL); + } else + #endif + ret = __Pyx_PyIter_Next_Plain(yf); + if (likely(ret)) { + __Pyx_Coroutine_unset_is_running(gen); + return ret; + } + result = __Pyx_Coroutine_FinishDelegation(gen, &retval); + } else { + result = __Pyx_Coroutine_SendEx(gen, Py_None, &retval, 0); + } + __Pyx_Coroutine_unset_is_running(gen); + return __Pyx_Coroutine_MethodReturnFromResult(self, result, retval, 1); +} +static PyObject *__Pyx_Coroutine_Close_Method(PyObject *self, PyObject *arg) { + PyObject *retval = NULL; + __Pyx_PySendResult result; + CYTHON_UNUSED_VAR(arg); + result = __Pyx_Coroutine_Close(self, &retval); + if (unlikely(result == PYGEN_ERROR)) + return NULL; + Py_XDECREF(retval); + Py_RETURN_NONE; +} +static __Pyx_PySendResult +__Pyx_Coroutine_Close(PyObject *self, PyObject **retval) { + __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self; + __Pyx_PySendResult result; + PyObject *yf; + int err = 0; + if (unlikely(__Pyx_Coroutine_test_and_set_is_running(gen))) { + *retval = __Pyx_Coroutine_AlreadyRunningError(gen); + return PYGEN_ERROR; + } + yf = gen->yieldfrom; + if (yf) { + Py_INCREF(yf); + err = __Pyx_Coroutine_CloseIter(gen, yf); + __Pyx_Coroutine_Undelegate(gen); + Py_DECREF(yf); + } + if (err == 0) + PyErr_SetNone(PyExc_GeneratorExit); + result = __Pyx_Coroutine_SendEx(gen, NULL, retval, 1); + if (result == PYGEN_ERROR) { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_Coroutine_unset_is_running(gen); + if (!__Pyx_PyErr_Occurred()) { + return PYGEN_RETURN; + } else if (likely(__Pyx_PyErr_ExceptionMatches2(PyExc_GeneratorExit, PyExc_StopIteration))) { + __Pyx_PyErr_Clear(); + return PYGEN_RETURN; + } + return PYGEN_ERROR; + } else if (likely(result == PYGEN_RETURN && *retval == Py_None)) { + __Pyx_Coroutine_unset_is_running(gen); + return PYGEN_RETURN; + } else { + const char *msg; + Py_DECREF(*retval); + *retval = NULL; + if ((0)) { + #ifdef __Pyx_Coroutine_USED + } else if (__Pyx_Coroutine_Check(self)) { + msg = "coroutine ignored GeneratorExit"; + #endif + #ifdef __Pyx_AsyncGen_USED + } else if (__Pyx_AsyncGen_CheckExact(self)) { + msg = "async generator ignored GeneratorExit"; + #endif + } else { + msg = "generator ignored GeneratorExit"; + } + PyErr_SetString(PyExc_RuntimeError, msg); + __Pyx_Coroutine_unset_is_running(gen); + return PYGEN_ERROR; + } +} +static PyObject *__Pyx__Coroutine_Throw(PyObject *self, PyObject *typ, PyObject *val, PyObject *tb, + PyObject *args, int close_on_genexit) { + __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self; + PyObject *yf; + if (unlikely(__Pyx_Coroutine_test_and_set_is_running(gen))) + return __Pyx_Coroutine_AlreadyRunningError(gen); + yf = gen->yieldfrom; + if (yf) { + __Pyx_PySendResult result; + PyObject *ret; + Py_INCREF(yf); + if (__Pyx_PyErr_GivenExceptionMatches(typ, PyExc_GeneratorExit) && close_on_genexit) { + int err = __Pyx_Coroutine_CloseIter(gen, yf); + Py_DECREF(yf); + __Pyx_Coroutine_Undelegate(gen); + if (err < 0) + goto propagate_exception; + goto throw_here; + } + if (0 + #ifdef __Pyx_Generator_USED + || __Pyx_Generator_CheckExact(yf) + #endif + #ifdef __Pyx_Coroutine_USED + || __Pyx_Coroutine_Check(yf) + #endif + ) { + ret = __Pyx__Coroutine_Throw(yf, typ, val, tb, args, close_on_genexit); + #ifdef __Pyx_Coroutine_USED + } else if (__Pyx_CoroutineAwait_CheckExact(yf)) { + ret = __Pyx__Coroutine_Throw(((__pyx_CoroutineAwaitObject*)yf)->coroutine, typ, val, tb, args, close_on_genexit); + #endif + } else { + PyObject *meth = __Pyx_PyObject_GetAttrStrNoError(yf, __pyx_mstate_global->__pyx_n_u_throw); + if (unlikely(!meth)) { + Py_DECREF(yf); + if (unlikely(PyErr_Occurred())) { + __Pyx_Coroutine_unset_is_running(gen); + return NULL; + } + __Pyx_Coroutine_Undelegate(gen); + goto throw_here; + } + if (likely(args)) { + ret = __Pyx_PyObject_Call(meth, args, NULL); + } else { + PyObject *cargs[4] = {NULL, typ, val, tb}; + ret = __Pyx_PyObject_FastCall(meth, cargs+1, 3 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET); + } + Py_DECREF(meth); + } + Py_DECREF(yf); + if (ret) { + __Pyx_Coroutine_unset_is_running(gen); + return ret; + } + result = __Pyx_Coroutine_FinishDelegation(gen, &ret); + __Pyx_Coroutine_unset_is_running(gen); + return __Pyx_Coroutine_MethodReturnFromResult(self, result, ret, 0); + } +throw_here: + __Pyx_Raise(typ, val, tb, NULL); +propagate_exception: + { + PyObject *retval = NULL; + __Pyx_PySendResult result = __Pyx_Coroutine_SendEx(gen, NULL, &retval, 0); + __Pyx_Coroutine_unset_is_running(gen); + return __Pyx_Coroutine_MethodReturnFromResult(self, result, retval, 0); + } +} +static PyObject *__Pyx_Coroutine_Throw(PyObject *self, PyObject *args) { + PyObject *typ; + PyObject *val = NULL; + PyObject *tb = NULL; + if (unlikely(!PyArg_UnpackTuple(args, "throw", 1, 3, &typ, &val, &tb))) + return NULL; + return __Pyx__Coroutine_Throw(self, typ, val, tb, args, 1); +} +static CYTHON_INLINE int __Pyx_Coroutine_traverse_excstate(__Pyx_ExcInfoStruct *exc_state, visitproc visit, void *arg) { +#if PY_VERSION_HEX >= 0x030B00a4 + Py_VISIT(exc_state->exc_value); +#else + Py_VISIT(exc_state->exc_type); + Py_VISIT(exc_state->exc_value); + Py_VISIT(exc_state->exc_traceback); +#endif + return 0; +} +static int __Pyx_Coroutine_traverse(__pyx_CoroutineObject *gen, visitproc visit, void *arg) { + { + int e = __Pyx_call_type_traverse((PyObject*)gen, 1, visit, arg); + if (e) return e; + } + Py_VISIT(gen->closure); + Py_VISIT(gen->classobj); + Py_VISIT(gen->yieldfrom); + return __Pyx_Coroutine_traverse_excstate(&gen->gi_exc_state, visit, arg); +} +static int __Pyx_Coroutine_clear(PyObject *self) { + __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self; + Py_CLEAR(gen->closure); + Py_CLEAR(gen->classobj); + __Pyx_Coroutine_Undelegate(gen); + __Pyx_Coroutine_ExceptionClear(&gen->gi_exc_state); +#ifdef __Pyx_AsyncGen_USED + if (__Pyx_AsyncGen_CheckExact(self)) { + Py_CLEAR(((__pyx_PyAsyncGenObject*)gen)->ag_finalizer); + } +#endif + Py_CLEAR(gen->gi_code); + Py_CLEAR(gen->gi_frame); + Py_CLEAR(gen->gi_name); + Py_CLEAR(gen->gi_qualname); + Py_CLEAR(gen->gi_modulename); + return 0; +} +static void __Pyx_Coroutine_dealloc(PyObject *self) { + __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self; + PyObject_GC_UnTrack(gen); + #if PY_VERSION_HEX < 0x030C0000 || CYTHON_COMPILING_IN_LIMITED_API + if (gen->gi_weakreflist != NULL) + #endif + PyObject_ClearWeakRefs(self); + if (gen->resume_label >= 0) { + PyObject_GC_Track(self); +#if CYTHON_USE_TP_FINALIZE + if (unlikely(PyObject_CallFinalizerFromDealloc(self))) +#else + { + destructor del = __Pyx_PyObject_GetSlot(gen, tp_del, destructor); + if (del) del(self); + } + if (unlikely(Py_REFCNT(self) > 0)) +#endif + { + return; + } + PyObject_GC_UnTrack(self); + } +#ifdef __Pyx_AsyncGen_USED + if (__Pyx_AsyncGen_CheckExact(self)) { + /* We have to handle this case for asynchronous generators + right here, because this code has to be between UNTRACK + and GC_Del. */ + Py_CLEAR(((__pyx_PyAsyncGenObject*)self)->ag_finalizer); + } +#endif + __Pyx_Coroutine_clear(self); + __Pyx_PyHeapTypeObject_GC_Del(gen); +} +#if CYTHON_USE_TP_FINALIZE +static void __Pyx_Coroutine_del(PyObject *self) { + PyObject *error_type, *error_value, *error_traceback; + __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self; + __Pyx_PyThreadState_declare + if (gen->resume_label < 0) { + return; + } + __Pyx_PyThreadState_assign + __Pyx_ErrFetch(&error_type, &error_value, &error_traceback); +#ifdef __Pyx_AsyncGen_USED + if (__Pyx_AsyncGen_CheckExact(self)) { + __pyx_PyAsyncGenObject *agen = (__pyx_PyAsyncGenObject*)self; + PyObject *finalizer = agen->ag_finalizer; + if (finalizer && !agen->ag_closed) { + PyObject *res = __Pyx_PyObject_CallOneArg(finalizer, self); + if (unlikely(!res)) { + PyErr_WriteUnraisable(self); + } else { + Py_DECREF(res); + } + __Pyx_ErrRestore(error_type, error_value, error_traceback); + return; + } + } +#endif + if (unlikely(gen->resume_label == 0 && !error_value)) { +#ifdef __Pyx_Coroutine_USED +#ifdef __Pyx_Generator_USED + if (!__Pyx_Generator_CheckExact(self)) +#endif + { + PyObject_GC_UnTrack(self); + if (unlikely(PyErr_WarnFormat(PyExc_RuntimeWarning, 1, "coroutine '%.50S' was never awaited", gen->gi_qualname) < 0)) + PyErr_WriteUnraisable(self); + PyObject_GC_Track(self); + } +#endif + } else { + PyObject *retval = NULL; + __Pyx_PySendResult result = __Pyx_Coroutine_Close(self, &retval); + if (result == PYGEN_ERROR) { + PyErr_WriteUnraisable(self); + } else { + Py_XDECREF(retval); + } + } + __Pyx_ErrRestore(error_type, error_value, error_traceback); +} +#endif +static PyObject * +__Pyx_Coroutine_get_name(__pyx_CoroutineObject *self, void *context) +{ + PyObject *name = self->gi_name; + CYTHON_UNUSED_VAR(context); + if (unlikely(!name)) name = Py_None; + Py_INCREF(name); + return name; +} +static int +__Pyx_Coroutine_set_name(__pyx_CoroutineObject *self, PyObject *value, void *context) +{ + CYTHON_UNUSED_VAR(context); + if (unlikely(value == NULL || !PyUnicode_Check(value))) { + PyErr_SetString(PyExc_TypeError, + "__name__ must be set to a string object"); + return -1; + } + Py_INCREF(value); + __Pyx_Py_XDECREF_SET(self->gi_name, value); + return 0; +} +static PyObject * +__Pyx_Coroutine_get_qualname(__pyx_CoroutineObject *self, void *context) +{ + PyObject *name = self->gi_qualname; + CYTHON_UNUSED_VAR(context); + if (unlikely(!name)) name = Py_None; + Py_INCREF(name); + return name; +} +static int +__Pyx_Coroutine_set_qualname(__pyx_CoroutineObject *self, PyObject *value, void *context) +{ + CYTHON_UNUSED_VAR(context); + if (unlikely(value == NULL || !PyUnicode_Check(value))) { + PyErr_SetString(PyExc_TypeError, + "__qualname__ must be set to a string object"); + return -1; + } + Py_INCREF(value); + __Pyx_Py_XDECREF_SET(self->gi_qualname, value); + return 0; +} +static PyObject * +__Pyx__Coroutine_get_frame(__pyx_CoroutineObject *self) +{ +#if !CYTHON_COMPILING_IN_LIMITED_API + PyObject *frame; + #if PY_VERSION_HEX >= 0x030d0000 + Py_BEGIN_CRITICAL_SECTION(self); + #endif + frame = self->gi_frame; + if (!frame) { + if (unlikely(!self->gi_code)) { + Py_RETURN_NONE; + } + PyObject *globals = PyDict_New(); + if (unlikely(!globals)) return NULL; + frame = (PyObject *) PyFrame_New( + PyThreadState_Get(), /*PyThreadState *tstate,*/ + (PyCodeObject*) self->gi_code, /*PyCodeObject *code,*/ + globals, /*PyObject *globals,*/ + 0 /*PyObject *locals*/ + ); + Py_DECREF(globals); + if (unlikely(!frame)) + return NULL; + if (unlikely(self->gi_frame)) { + Py_DECREF(frame); + frame = self->gi_frame; + } else { + self->gi_frame = frame; + } + } + Py_INCREF(frame); + #if PY_VERSION_HEX >= 0x030d0000 + Py_END_CRITICAL_SECTION(); + #endif + return frame; +#else + CYTHON_UNUSED_VAR(self); + Py_RETURN_NONE; +#endif +} +static PyObject * +__Pyx_Coroutine_get_frame(__pyx_CoroutineObject *self, void *context) { + CYTHON_UNUSED_VAR(context); + PyObject *frame = self->gi_frame; + if (frame) + return __Pyx_NewRef(frame); + return __Pyx__Coroutine_get_frame(self); +} +static __pyx_CoroutineObject *__Pyx__Coroutine_New( + PyTypeObject* type, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure, + PyObject *name, PyObject *qualname, PyObject *module_name) { + __pyx_CoroutineObject *gen = PyObject_GC_New(__pyx_CoroutineObject, type); + if (unlikely(!gen)) + return NULL; + return __Pyx__Coroutine_NewInit(gen, body, code, closure, name, qualname, module_name); +} +static __pyx_CoroutineObject *__Pyx__Coroutine_NewInit( + __pyx_CoroutineObject *gen, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure, + PyObject *name, PyObject *qualname, PyObject *module_name) { + gen->body = body; + gen->closure = closure; + Py_XINCREF(closure); + gen->is_running = 0; + gen->resume_label = 0; + gen->classobj = NULL; + gen->yieldfrom = NULL; + gen->yieldfrom_am_send = NULL; + #if PY_VERSION_HEX >= 0x030B00a4 && !CYTHON_COMPILING_IN_LIMITED_API + gen->gi_exc_state.exc_value = NULL; + #else + gen->gi_exc_state.exc_type = NULL; + gen->gi_exc_state.exc_value = NULL; + gen->gi_exc_state.exc_traceback = NULL; + #endif +#if CYTHON_USE_EXC_INFO_STACK + gen->gi_exc_state.previous_item = NULL; +#endif +#if PY_VERSION_HEX < 0x030C0000 || CYTHON_COMPILING_IN_LIMITED_API + gen->gi_weakreflist = NULL; +#endif + Py_XINCREF(qualname); + gen->gi_qualname = qualname; + Py_XINCREF(name); + gen->gi_name = name; + Py_XINCREF(module_name); + gen->gi_modulename = module_name; + Py_XINCREF(code); + gen->gi_code = code; + gen->gi_frame = NULL; + PyObject_GC_Track(gen); + return gen; +} +static char __Pyx_Coroutine_test_and_set_is_running(__pyx_CoroutineObject *gen) { + char result; + #if PY_VERSION_HEX >= 0x030d0000 && !CYTHON_COMPILING_IN_LIMITED_API + Py_BEGIN_CRITICAL_SECTION(gen); + #endif + result = gen->is_running; + gen->is_running = 1; + #if PY_VERSION_HEX >= 0x030d0000 && !CYTHON_COMPILING_IN_LIMITED_API + Py_END_CRITICAL_SECTION(); + #endif + return result; +} +static void __Pyx_Coroutine_unset_is_running(__pyx_CoroutineObject *gen) { + #if PY_VERSION_HEX >= 0x030d0000 && !CYTHON_COMPILING_IN_LIMITED_API + Py_BEGIN_CRITICAL_SECTION(gen); + #endif + assert(gen->is_running); + gen->is_running = 0; + #if PY_VERSION_HEX >= 0x030d0000 && !CYTHON_COMPILING_IN_LIMITED_API + Py_END_CRITICAL_SECTION(); + #endif +} +static char __Pyx_Coroutine_get_is_running(__pyx_CoroutineObject *gen) { + char result; + #if PY_VERSION_HEX >= 0x030d0000 && !CYTHON_COMPILING_IN_LIMITED_API + Py_BEGIN_CRITICAL_SECTION(gen); + #endif + result = gen->is_running; + #if PY_VERSION_HEX >= 0x030d0000 && !CYTHON_COMPILING_IN_LIMITED_API + Py_END_CRITICAL_SECTION(); + #endif + return result; +} +static PyObject *__Pyx_Coroutine_get_is_running_getter(PyObject *gen, void *closure) { + CYTHON_UNUSED_VAR(closure); + char result = __Pyx_Coroutine_get_is_running((__pyx_CoroutineObject*)gen); + if (result) Py_RETURN_TRUE; + else Py_RETURN_FALSE; +} +#if __PYX_HAS_PY_AM_SEND == 2 +static void __Pyx_SetBackportTypeAmSend(PyTypeObject *type, __Pyx_PyAsyncMethodsStruct *static_amsend_methods, __Pyx_pyiter_sendfunc am_send) { + Py_ssize_t ptr_offset = (char*)(type->tp_as_async) - (char*)type; + if (ptr_offset < 0 || ptr_offset > type->tp_basicsize) { + return; + } + memcpy((void*)static_amsend_methods, (void*)(type->tp_as_async), sizeof(*type->tp_as_async)); + static_amsend_methods->am_send = am_send; + type->tp_as_async = __Pyx_SlotTpAsAsync(static_amsend_methods); +} +#endif +static PyObject *__Pyx_Coroutine_fail_reduce_ex(PyObject *self, PyObject *arg) { + CYTHON_UNUSED_VAR(arg); + __Pyx_TypeName self_type_name = __Pyx_PyType_GetFullyQualifiedName(Py_TYPE((PyObject*)self)); + PyErr_Format(PyExc_TypeError, "cannot pickle '" __Pyx_FMT_TYPENAME "' object", + self_type_name); + __Pyx_DECREF_TypeName(self_type_name); + return NULL; +} + +/* Generator */ +static PyMethodDef __pyx_Generator_methods[] = { + {"send", (PyCFunction) __Pyx_Coroutine_Send, METH_O, + PyDoc_STR("send(arg) -> send 'arg' into generator,\nreturn next yielded value or raise StopIteration.")}, + {"throw", (PyCFunction) __Pyx_Coroutine_Throw, METH_VARARGS, + PyDoc_STR("throw(typ[,val[,tb]]) -> raise exception in generator,\nreturn next yielded value or raise StopIteration.")}, + {"close", (PyCFunction) __Pyx_Coroutine_Close_Method, METH_NOARGS, + PyDoc_STR("close() -> raise GeneratorExit inside generator.")}, + {"__reduce_ex__", (PyCFunction) __Pyx_Coroutine_fail_reduce_ex, METH_O, 0}, + {"__reduce__", (PyCFunction) __Pyx_Coroutine_fail_reduce_ex, METH_NOARGS, 0}, + {0, 0, 0, 0} +}; +static PyMemberDef __pyx_Generator_memberlist[] = { + {"gi_yieldfrom", T_OBJECT, offsetof(__pyx_CoroutineObject, yieldfrom), READONLY, + PyDoc_STR("object being iterated by 'yield from', or None")}, + {"gi_code", T_OBJECT, offsetof(__pyx_CoroutineObject, gi_code), READONLY, NULL}, + {"__module__", T_OBJECT, offsetof(__pyx_CoroutineObject, gi_modulename), 0, 0}, +#if PY_VERSION_HEX < 0x030C0000 || CYTHON_COMPILING_IN_LIMITED_API + {"__weaklistoffset__", T_PYSSIZET, offsetof(__pyx_CoroutineObject, gi_weakreflist), READONLY, 0}, +#endif + {0, 0, 0, 0, 0} +}; +static PyGetSetDef __pyx_Generator_getsets[] = { + {"__name__", (getter)__Pyx_Coroutine_get_name, (setter)__Pyx_Coroutine_set_name, + PyDoc_STR("name of the generator"), 0}, + {"__qualname__", (getter)__Pyx_Coroutine_get_qualname, (setter)__Pyx_Coroutine_set_qualname, + PyDoc_STR("qualified name of the generator"), 0}, + {"gi_frame", (getter)__Pyx_Coroutine_get_frame, NULL, + PyDoc_STR("Frame of the generator"), 0}, + {"gi_running", __Pyx_Coroutine_get_is_running_getter, NULL, NULL, NULL}, + {0, 0, 0, 0, 0} +}; +static PyType_Slot __pyx_GeneratorType_slots[] = { + {Py_tp_dealloc, (void *)__Pyx_Coroutine_dealloc}, + {Py_tp_traverse, (void *)__Pyx_Coroutine_traverse}, + {Py_tp_iter, (void *)PyObject_SelfIter}, + {Py_tp_iternext, (void *)__Pyx_Generator_Next}, + {Py_tp_methods, (void *)__pyx_Generator_methods}, + {Py_tp_members, (void *)__pyx_Generator_memberlist}, + {Py_tp_getset, (void *)__pyx_Generator_getsets}, + {Py_tp_getattro, (void *) PyObject_GenericGetAttr}, +#if CYTHON_USE_TP_FINALIZE + {Py_tp_finalize, (void *)__Pyx_Coroutine_del}, +#endif +#if __PYX_HAS_PY_AM_SEND == 1 + {Py_am_send, (void *)__Pyx_Coroutine_AmSend}, +#endif + {0, 0}, +}; +static PyType_Spec __pyx_GeneratorType_spec = { + __PYX_TYPE_MODULE_PREFIX "generator", + sizeof(__pyx_CoroutineObject), + 0, +#if PY_VERSION_HEX >= 0x030C0000 && !CYTHON_COMPILING_IN_LIMITED_API + Py_TPFLAGS_MANAGED_WEAKREF | +#endif + Py_TPFLAGS_IMMUTABLETYPE | Py_TPFLAGS_DISALLOW_INSTANTIATION | + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | __Pyx_TPFLAGS_HAVE_AM_SEND, + __pyx_GeneratorType_slots +}; +#if __PYX_HAS_PY_AM_SEND == 2 +static __Pyx_PyAsyncMethodsStruct __pyx_Generator_as_async; +#endif +static int __pyx_Generator_init(PyObject *module) { + __pyx_mstatetype *mstate = __Pyx_PyModule_GetState(module); + mstate->__pyx_GeneratorType = __Pyx_FetchCommonTypeFromSpec( + mstate->__pyx_CommonTypesMetaclassType, module, &__pyx_GeneratorType_spec, NULL); + if (unlikely(!mstate->__pyx_GeneratorType)) { + return -1; + } +#if __PYX_HAS_PY_AM_SEND == 2 + __Pyx_SetBackportTypeAmSend(mstate->__pyx_GeneratorType, &__pyx_Generator_as_async, &__Pyx_Coroutine_AmSend); +#endif + return 0; +} +static PyObject *__Pyx_Generator_GetInlinedResult(PyObject *self) { + __pyx_CoroutineObject *gen = (__pyx_CoroutineObject*) self; + PyObject *retval = NULL; + if (unlikely(__Pyx_Coroutine_test_and_set_is_running(gen))) { + return __Pyx_Coroutine_AlreadyRunningError(gen); + } + __Pyx_PySendResult result = __Pyx_Coroutine_SendEx(gen, Py_None, &retval, 0); + __Pyx_Coroutine_unset_is_running(gen); + (void) result; + assert (result == PYGEN_RETURN || result == PYGEN_ERROR); + assert ((result == PYGEN_RETURN && retval != NULL) || (result == PYGEN_ERROR && retval == NULL)); + return retval; +} + +/* CheckBinaryVersion */ +static int __Pyx_check_binary_version(unsigned long ct_version, unsigned long rt_version, int allow_newer) { + const unsigned long MAJOR_MINOR = 0xFFFF0000UL; + if ((rt_version & MAJOR_MINOR) == (ct_version & MAJOR_MINOR)) + return 0; + if (likely(allow_newer && (rt_version & MAJOR_MINOR) > (ct_version & MAJOR_MINOR))) + return 1; + { + char message[200]; + PyOS_snprintf(message, sizeof(message), + "compile time Python version %d.%d " + "of module '%.100s' " + "%s " + "runtime version %d.%d", + (int) (ct_version >> 24), (int) ((ct_version >> 16) & 0xFF), + __Pyx_MODULE_NAME, + (allow_newer) ? "was newer than" : "does not match", + (int) (rt_version >> 24), (int) ((rt_version >> 16) & 0xFF) + ); + return PyErr_WarnEx(NULL, message, 1); + } +} + +/* NewCodeObj */ +#if CYTHON_COMPILING_IN_LIMITED_API + static PyObject* __Pyx__PyCode_New(int a, int p, int k, int l, int s, int f, + PyObject *code, PyObject *c, PyObject* n, PyObject *v, + PyObject *fv, PyObject *cell, PyObject* fn, + PyObject *name, int fline, PyObject *lnos) { + PyObject *exception_table = NULL; + PyObject *types_module=NULL, *code_type=NULL, *result=NULL; + #if __PYX_LIMITED_VERSION_HEX < 0x030b0000 + PyObject *version_info; + PyObject *py_minor_version = NULL; + #endif + long minor_version = 0; + PyObject *type, *value, *traceback; + PyErr_Fetch(&type, &value, &traceback); + #if __PYX_LIMITED_VERSION_HEX >= 0x030b0000 + minor_version = 11; + #else + if (!(version_info = PySys_GetObject("version_info"))) goto end; + if (!(py_minor_version = PySequence_GetItem(version_info, 1))) goto end; + minor_version = PyLong_AsLong(py_minor_version); + Py_DECREF(py_minor_version); + if (minor_version == -1 && PyErr_Occurred()) goto end; + #endif + if (!(types_module = PyImport_ImportModule("types"))) goto end; + if (!(code_type = PyObject_GetAttrString(types_module, "CodeType"))) goto end; + if (minor_version <= 7) { + (void)p; + result = PyObject_CallFunction(code_type, "iiiiiOOOOOOiOOO", a, k, l, s, f, code, + c, n, v, fn, name, fline, lnos, fv, cell); + } else if (minor_version <= 10) { + result = PyObject_CallFunction(code_type, "iiiiiiOOOOOOiOOO", a,p, k, l, s, f, code, + c, n, v, fn, name, fline, lnos, fv, cell); + } else { + if (!(exception_table = PyBytes_FromStringAndSize(NULL, 0))) goto end; + result = PyObject_CallFunction(code_type, "iiiiiiOOOOOOOiOOOO", a,p, k, l, s, f, code, + c, n, v, fn, name, name, fline, lnos, exception_table, fv, cell); + } + end: + Py_XDECREF(code_type); + Py_XDECREF(exception_table); + Py_XDECREF(types_module); + if (type) { + PyErr_Restore(type, value, traceback); + } + return result; + } +#elif PY_VERSION_HEX >= 0x030B0000 + static PyCodeObject* __Pyx__PyCode_New(int a, int p, int k, int l, int s, int f, + PyObject *code, PyObject *c, PyObject* n, PyObject *v, + PyObject *fv, PyObject *cell, PyObject* fn, + PyObject *name, int fline, PyObject *lnos) { + PyCodeObject *result; + result = + #if PY_VERSION_HEX >= 0x030C0000 + PyUnstable_Code_NewWithPosOnlyArgs + #else + PyCode_NewWithPosOnlyArgs + #endif + (a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, name, fline, lnos, __pyx_mstate_global->__pyx_empty_bytes); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030c00A1 + if (likely(result)) + result->_co_firsttraceable = 0; + #endif + return result; + } +#elif !CYTHON_COMPILING_IN_PYPY + #define __Pyx__PyCode_New(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ + PyCode_NewWithPosOnlyArgs(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) +#else + #define __Pyx__PyCode_New(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ + PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) +#endif +static PyObject* __Pyx_PyCode_New( + const __Pyx_PyCode_New_function_description descr, + PyObject * const *varnames, + PyObject *filename, + PyObject *funcname, + PyObject *line_table, + PyObject *tuple_dedup_map +) { + PyObject *code_obj = NULL, *varnames_tuple_dedup = NULL, *code_bytes = NULL; + Py_ssize_t var_count = (Py_ssize_t) descr.nlocals; + PyObject *varnames_tuple = PyTuple_New(var_count); + if (unlikely(!varnames_tuple)) return NULL; + for (Py_ssize_t i=0; i < var_count; i++) { + Py_INCREF(varnames[i]); + if (__Pyx_PyTuple_SET_ITEM(varnames_tuple, i, varnames[i]) != (0)) goto done; + } + #if CYTHON_COMPILING_IN_LIMITED_API + varnames_tuple_dedup = PyDict_GetItem(tuple_dedup_map, varnames_tuple); + if (!varnames_tuple_dedup) { + if (unlikely(PyDict_SetItem(tuple_dedup_map, varnames_tuple, varnames_tuple) < 0)) goto done; + varnames_tuple_dedup = varnames_tuple; + } + #else + varnames_tuple_dedup = PyDict_SetDefault(tuple_dedup_map, varnames_tuple, varnames_tuple); + if (unlikely(!varnames_tuple_dedup)) goto done; + #endif + #if CYTHON_AVOID_BORROWED_REFS + Py_INCREF(varnames_tuple_dedup); + #endif + if (__PYX_LIMITED_VERSION_HEX >= (0x030b0000) && line_table != NULL && !CYTHON_COMPILING_IN_GRAAL) { + Py_ssize_t line_table_length = __Pyx_PyBytes_GET_SIZE(line_table); + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely(line_table_length == -1)) goto done; + #endif + Py_ssize_t code_len = (line_table_length * 2 + 4) & ~3LL; + code_bytes = PyBytes_FromStringAndSize(NULL, code_len); + if (unlikely(!code_bytes)) goto done; + char* c_code_bytes = PyBytes_AsString(code_bytes); + if (unlikely(!c_code_bytes)) goto done; + memset(c_code_bytes, 0, (size_t) code_len); + } + code_obj = (PyObject*) __Pyx__PyCode_New( + (int) descr.argcount, + (int) descr.num_posonly_args, + (int) descr.num_kwonly_args, + (int) descr.nlocals, + 0, + (int) descr.flags, + code_bytes ? code_bytes : __pyx_mstate_global->__pyx_empty_bytes, + __pyx_mstate_global->__pyx_empty_tuple, + __pyx_mstate_global->__pyx_empty_tuple, + varnames_tuple_dedup, + __pyx_mstate_global->__pyx_empty_tuple, + __pyx_mstate_global->__pyx_empty_tuple, + filename, + funcname, + (int) descr.first_line, + (__PYX_LIMITED_VERSION_HEX >= (0x030b0000) && line_table) ? line_table : __pyx_mstate_global->__pyx_empty_bytes + ); +done: + Py_XDECREF(code_bytes); + #if CYTHON_AVOID_BORROWED_REFS + Py_XDECREF(varnames_tuple_dedup); + #endif + Py_DECREF(varnames_tuple); + return code_obj; +} + +/* DecompressString */ +static PyObject *__Pyx_DecompressString(const char *s, Py_ssize_t length, int algo) { + PyObject *module, *decompress, *compressed_bytes, *decompressed; + const char* module_name = algo == 3 ? "compression.zstd" : algo == 2 ? "bz2" : "zlib"; + PyObject *methodname = PyUnicode_FromString("decompress"); + if (unlikely(!methodname)) return NULL; + #if __PYX_LIMITED_VERSION_HEX >= 0x030e0000 + if (algo == 3) { + PyObject *fromlist = Py_BuildValue("[O]", methodname); + if (unlikely(!fromlist)) return NULL; + module = PyImport_ImportModuleLevel("compression.zstd", NULL, NULL, fromlist, 0); + Py_DECREF(fromlist); + } else + #endif + module = PyImport_ImportModule(module_name); + if (unlikely(!module)) goto import_failed; + decompress = PyObject_GetAttr(module, methodname); + if (unlikely(!decompress)) goto import_failed; + { + #ifdef __cplusplus + char *memview_bytes = const_cast(s); + #else + #if defined(__clang__) + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wcast-qual" + #elif !defined(__INTEL_COMPILER) && defined(__GNUC__) + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wcast-qual" + #endif + char *memview_bytes = (char*) s; + #if defined(__clang__) + #pragma clang diagnostic pop + #elif !defined(__INTEL_COMPILER) && defined(__GNUC__) + #pragma GCC diagnostic pop + #endif + #endif + #if CYTHON_COMPILING_IN_LIMITED_API && !defined(PyBUF_READ) + int memview_flags = 0x100; + #else + int memview_flags = PyBUF_READ; + #endif + compressed_bytes = PyMemoryView_FromMemory(memview_bytes, length, memview_flags); + } + if (unlikely(!compressed_bytes)) { + Py_DECREF(decompress); + goto bad; + } + decompressed = PyObject_CallFunctionObjArgs(decompress, compressed_bytes, NULL); + Py_DECREF(compressed_bytes); + Py_DECREF(decompress); + Py_DECREF(module); + Py_DECREF(methodname); + return decompressed; +import_failed: + PyErr_Format(PyExc_ImportError, + "Failed to import '%.20s.decompress' - cannot initialise module strings. " + "String compression was configured with the C macro 'CYTHON_COMPRESS_STRINGS=%d'.", + module_name, algo); +bad: + Py_XDECREF(module); + Py_DECREF(methodname); + return NULL; +} + +#include +static CYTHON_INLINE Py_ssize_t __Pyx_ssize_strlen(const char *s) { + size_t len = strlen(s); + if (unlikely(len > (size_t) PY_SSIZE_T_MAX)) { + PyErr_SetString(PyExc_OverflowError, "byte string is too long"); + return -1; + } + return (Py_ssize_t) len; +} +static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_str) { + Py_ssize_t len = __Pyx_ssize_strlen(c_str); + if (unlikely(len < 0)) return NULL; + return __Pyx_PyUnicode_FromStringAndSize(c_str, len); +} +static CYTHON_INLINE PyObject* __Pyx_PyByteArray_FromString(const char* c_str) { + Py_ssize_t len = __Pyx_ssize_strlen(c_str); + if (unlikely(len < 0)) return NULL; + return PyByteArray_FromStringAndSize(c_str, len); +} +static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject* o) { + Py_ssize_t ignore; + return __Pyx_PyObject_AsStringAndSize(o, &ignore); +} +#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_UTF8 +static CYTHON_INLINE const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) { + if (unlikely(__Pyx_PyUnicode_READY(o) == -1)) return NULL; +#if CYTHON_COMPILING_IN_LIMITED_API + { + const char* result; + Py_ssize_t unicode_length; + CYTHON_MAYBE_UNUSED_VAR(unicode_length); // only for __PYX_DEFAULT_STRING_ENCODING_IS_ASCII + #if __PYX_LIMITED_VERSION_HEX < 0x030A0000 + if (unlikely(PyArg_Parse(o, "s#", &result, length) < 0)) return NULL; + #else + result = PyUnicode_AsUTF8AndSize(o, length); + #endif + #if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII + unicode_length = PyUnicode_GetLength(o); + if (unlikely(unicode_length < 0)) return NULL; + if (unlikely(unicode_length != *length)) { + PyUnicode_AsASCIIString(o); + return NULL; + } + #endif + return result; + } +#else +#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII + if (likely(PyUnicode_IS_ASCII(o))) { + *length = PyUnicode_GET_LENGTH(o); + return PyUnicode_AsUTF8(o); + } else { + PyUnicode_AsASCIIString(o); + return NULL; + } +#else + return PyUnicode_AsUTF8AndSize(o, length); +#endif +#endif +} +#endif +static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) { +#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_UTF8 + if (PyUnicode_Check(o)) { + return __Pyx_PyUnicode_AsStringAndSize(o, length); + } else +#endif + if (PyByteArray_Check(o)) { +#if (CYTHON_ASSUME_SAFE_SIZE && CYTHON_ASSUME_SAFE_MACROS) || (CYTHON_COMPILING_IN_PYPY && (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE))) + *length = PyByteArray_GET_SIZE(o); + return PyByteArray_AS_STRING(o); +#else + *length = PyByteArray_Size(o); + if (*length == -1) return NULL; + return PyByteArray_AsString(o); +#endif + } else + { + char* result; + int r = PyBytes_AsStringAndSize(o, &result, length); + if (unlikely(r < 0)) { + return NULL; + } else { + return result; + } + } +} +static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) { + int is_true = x == Py_True; + if (is_true | (x == Py_False) | (x == Py_None)) return is_true; + else return PyObject_IsTrue(x); +} +static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject* x) { + int retval; + if (unlikely(!x)) return -1; + retval = __Pyx_PyObject_IsTrue(x); + Py_DECREF(x); + return retval; +} +static PyObject* __Pyx_PyNumber_LongWrongResultType(PyObject* result) { + __Pyx_TypeName result_type_name = __Pyx_PyType_GetFullyQualifiedName(Py_TYPE(result)); + if (PyLong_Check(result)) { + if (PyErr_WarnFormat(PyExc_DeprecationWarning, 1, + "__int__ returned non-int (type " __Pyx_FMT_TYPENAME "). " + "The ability to return an instance of a strict subclass of int is deprecated, " + "and may be removed in a future version of Python.", + result_type_name)) { + __Pyx_DECREF_TypeName(result_type_name); + Py_DECREF(result); + return NULL; + } + __Pyx_DECREF_TypeName(result_type_name); + return result; + } + PyErr_Format(PyExc_TypeError, + "__int__ returned non-int (type " __Pyx_FMT_TYPENAME ")", + result_type_name); + __Pyx_DECREF_TypeName(result_type_name); + Py_DECREF(result); + return NULL; +} +static CYTHON_INLINE PyObject* __Pyx_PyNumber_Long(PyObject* x) { +#if CYTHON_USE_TYPE_SLOTS + PyNumberMethods *m; +#endif + PyObject *res = NULL; + if (likely(PyLong_Check(x))) + return __Pyx_NewRef(x); +#if CYTHON_USE_TYPE_SLOTS + m = Py_TYPE(x)->tp_as_number; + if (likely(m && m->nb_int)) { + res = m->nb_int(x); + } +#else + if (!PyBytes_CheckExact(x) && !PyUnicode_CheckExact(x)) { + res = PyNumber_Long(x); + } +#endif + if (likely(res)) { + if (unlikely(!PyLong_CheckExact(res))) { + return __Pyx_PyNumber_LongWrongResultType(res); + } + } + else if (!PyErr_Occurred()) { + PyErr_SetString(PyExc_TypeError, + "an integer is required"); + } + return res; +} +static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) { + Py_ssize_t ival; + PyObject *x; + if (likely(PyLong_CheckExact(b))) { + #if CYTHON_USE_PYLONG_INTERNALS + if (likely(__Pyx_PyLong_IsCompact(b))) { + return __Pyx_PyLong_CompactValue(b); + } else { + const digit* digits = __Pyx_PyLong_Digits(b); + const Py_ssize_t size = __Pyx_PyLong_SignedDigitCount(b); + switch (size) { + case 2: + if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { + return (Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case -2: + if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { + return -(Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case 3: + if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { + return (Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case -3: + if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { + return -(Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case 4: + if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { + return (Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case -4: + if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { + return -(Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + } + } + #endif + return PyLong_AsSsize_t(b); + } + x = PyNumber_Index(b); + if (!x) return -1; + ival = PyLong_AsSsize_t(x); + Py_DECREF(x); + return ival; +} +static CYTHON_INLINE Py_hash_t __Pyx_PyIndex_AsHash_t(PyObject* o) { + if (sizeof(Py_hash_t) == sizeof(Py_ssize_t)) { + return (Py_hash_t) __Pyx_PyIndex_AsSsize_t(o); + } else { + Py_ssize_t ival; + PyObject *x; + x = PyNumber_Index(o); + if (!x) return -1; + ival = PyLong_AsLong(x); + Py_DECREF(x); + return ival; + } +} +static CYTHON_INLINE PyObject *__Pyx_Owned_Py_None(int b) { + CYTHON_UNUSED_VAR(b); + return __Pyx_NewRef(Py_None); +} +static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b) { + return __Pyx_NewRef(b ? Py_True: Py_False); +} +static CYTHON_INLINE PyObject * __Pyx_PyLong_FromSize_t(size_t ival) { + return PyLong_FromSize_t(ival); +} + + +/* MultiPhaseInitModuleState */ +#if CYTHON_PEP489_MULTI_PHASE_INIT && CYTHON_USE_MODULE_STATE +#ifndef CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE +#if (CYTHON_COMPILING_IN_LIMITED_API || PY_VERSION_HEX >= 0x030C0000) + #define CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE 1 +#else + #define CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE 0 +#endif +#endif +#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE && !CYTHON_ATOMICS +#error "Module state with PEP489 requires atomics. Currently that's one of\ + C11, C++11, gcc atomic intrinsics or MSVC atomic intrinsics" +#endif +#if !CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE +#define __Pyx_ModuleStateLookup_Lock() +#define __Pyx_ModuleStateLookup_Unlock() +#elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d0000 +static PyMutex __Pyx_ModuleStateLookup_mutex = {0}; +#define __Pyx_ModuleStateLookup_Lock() PyMutex_Lock(&__Pyx_ModuleStateLookup_mutex) +#define __Pyx_ModuleStateLookup_Unlock() PyMutex_Unlock(&__Pyx_ModuleStateLookup_mutex) +#elif defined(__cplusplus) && __cplusplus >= 201103L +#include +static std::mutex __Pyx_ModuleStateLookup_mutex; +#define __Pyx_ModuleStateLookup_Lock() __Pyx_ModuleStateLookup_mutex.lock() +#define __Pyx_ModuleStateLookup_Unlock() __Pyx_ModuleStateLookup_mutex.unlock() +#elif defined(__STDC_VERSION__) && (__STDC_VERSION__ > 201112L) && !defined(__STDC_NO_THREADS__) +#include +static mtx_t __Pyx_ModuleStateLookup_mutex; +static once_flag __Pyx_ModuleStateLookup_mutex_once_flag = ONCE_FLAG_INIT; +static void __Pyx_ModuleStateLookup_initialize_mutex(void) { + mtx_init(&__Pyx_ModuleStateLookup_mutex, mtx_plain); +} +#define __Pyx_ModuleStateLookup_Lock()\ + call_once(&__Pyx_ModuleStateLookup_mutex_once_flag, __Pyx_ModuleStateLookup_initialize_mutex);\ + mtx_lock(&__Pyx_ModuleStateLookup_mutex) +#define __Pyx_ModuleStateLookup_Unlock() mtx_unlock(&__Pyx_ModuleStateLookup_mutex) +#elif defined(HAVE_PTHREAD_H) +#include +static pthread_mutex_t __Pyx_ModuleStateLookup_mutex = PTHREAD_MUTEX_INITIALIZER; +#define __Pyx_ModuleStateLookup_Lock() pthread_mutex_lock(&__Pyx_ModuleStateLookup_mutex) +#define __Pyx_ModuleStateLookup_Unlock() pthread_mutex_unlock(&__Pyx_ModuleStateLookup_mutex) +#elif defined(_WIN32) +#include // synchapi.h on its own doesn't work +static SRWLOCK __Pyx_ModuleStateLookup_mutex = SRWLOCK_INIT; +#define __Pyx_ModuleStateLookup_Lock() AcquireSRWLockExclusive(&__Pyx_ModuleStateLookup_mutex) +#define __Pyx_ModuleStateLookup_Unlock() ReleaseSRWLockExclusive(&__Pyx_ModuleStateLookup_mutex) +#else +#error "No suitable lock available for CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE.\ + Requires C standard >= C11, or C++ standard >= C++11,\ + or pthreads, or the Windows 32 API, or Python >= 3.13." +#endif +typedef struct { + int64_t id; + PyObject *module; +} __Pyx_InterpreterIdAndModule; +typedef struct { + char interpreter_id_as_index; + Py_ssize_t count; + Py_ssize_t allocated; + __Pyx_InterpreterIdAndModule table[1]; +} __Pyx_ModuleStateLookupData; +#define __PYX_MODULE_STATE_LOOKUP_SMALL_SIZE 32 +#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE +static __pyx_atomic_int_type __Pyx_ModuleStateLookup_read_counter = 0; +#endif +#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE +static __pyx_atomic_ptr_type __Pyx_ModuleStateLookup_data = 0; +#else +static __Pyx_ModuleStateLookupData* __Pyx_ModuleStateLookup_data = NULL; +#endif +static __Pyx_InterpreterIdAndModule* __Pyx_State_FindModuleStateLookupTableLowerBound( + __Pyx_InterpreterIdAndModule* table, + Py_ssize_t count, + int64_t interpreterId) { + __Pyx_InterpreterIdAndModule* begin = table; + __Pyx_InterpreterIdAndModule* end = begin + count; + if (begin->id == interpreterId) { + return begin; + } + while ((end - begin) > __PYX_MODULE_STATE_LOOKUP_SMALL_SIZE) { + __Pyx_InterpreterIdAndModule* halfway = begin + (end - begin)/2; + if (halfway->id == interpreterId) { + return halfway; + } + if (halfway->id < interpreterId) { + begin = halfway; + } else { + end = halfway; + } + } + for (; begin < end; ++begin) { + if (begin->id >= interpreterId) return begin; + } + return begin; +} +static PyObject *__Pyx_State_FindModule(CYTHON_UNUSED void* dummy) { + int64_t interpreter_id = PyInterpreterState_GetID(__Pyx_PyInterpreterState_Get()); + if (interpreter_id == -1) return NULL; +#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE + __Pyx_ModuleStateLookupData* data = (__Pyx_ModuleStateLookupData*)__pyx_atomic_pointer_load_relaxed(&__Pyx_ModuleStateLookup_data); + { + __pyx_atomic_incr_acq_rel(&__Pyx_ModuleStateLookup_read_counter); + if (likely(data)) { + __Pyx_ModuleStateLookupData* new_data = (__Pyx_ModuleStateLookupData*)__pyx_atomic_pointer_load_acquire(&__Pyx_ModuleStateLookup_data); + if (likely(data == new_data)) { + goto read_finished; + } + } + __pyx_atomic_decr_acq_rel(&__Pyx_ModuleStateLookup_read_counter); + __Pyx_ModuleStateLookup_Lock(); + __pyx_atomic_incr_relaxed(&__Pyx_ModuleStateLookup_read_counter); + data = (__Pyx_ModuleStateLookupData*)__pyx_atomic_pointer_load_relaxed(&__Pyx_ModuleStateLookup_data); + __Pyx_ModuleStateLookup_Unlock(); + } + read_finished:; +#else + __Pyx_ModuleStateLookupData* data = __Pyx_ModuleStateLookup_data; +#endif + __Pyx_InterpreterIdAndModule* found = NULL; + if (unlikely(!data)) goto end; + if (data->interpreter_id_as_index) { + if (interpreter_id < data->count) { + found = data->table+interpreter_id; + } + } else { + found = __Pyx_State_FindModuleStateLookupTableLowerBound( + data->table, data->count, interpreter_id); + } + end: + { + PyObject *result=NULL; + if (found && found->id == interpreter_id) { + result = found->module; + } +#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE + __pyx_atomic_decr_acq_rel(&__Pyx_ModuleStateLookup_read_counter); +#endif + return result; + } +} +#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE +static void __Pyx_ModuleStateLookup_wait_until_no_readers(void) { + while (__pyx_atomic_load(&__Pyx_ModuleStateLookup_read_counter) != 0); +} +#else +#define __Pyx_ModuleStateLookup_wait_until_no_readers() +#endif +static int __Pyx_State_AddModuleInterpIdAsIndex(__Pyx_ModuleStateLookupData **old_data, PyObject* module, int64_t interpreter_id) { + Py_ssize_t to_allocate = (*old_data)->allocated; + while (to_allocate <= interpreter_id) { + if (to_allocate == 0) to_allocate = 1; + else to_allocate *= 2; + } + __Pyx_ModuleStateLookupData *new_data = *old_data; + if (to_allocate != (*old_data)->allocated) { + new_data = (__Pyx_ModuleStateLookupData *)realloc( + *old_data, + sizeof(__Pyx_ModuleStateLookupData)+(to_allocate-1)*sizeof(__Pyx_InterpreterIdAndModule)); + if (!new_data) { + PyErr_NoMemory(); + return -1; + } + for (Py_ssize_t i = new_data->allocated; i < to_allocate; ++i) { + new_data->table[i].id = i; + new_data->table[i].module = NULL; + } + new_data->allocated = to_allocate; + } + new_data->table[interpreter_id].module = module; + if (new_data->count < interpreter_id+1) { + new_data->count = interpreter_id+1; + } + *old_data = new_data; + return 0; +} +static void __Pyx_State_ConvertFromInterpIdAsIndex(__Pyx_ModuleStateLookupData *data) { + __Pyx_InterpreterIdAndModule *read = data->table; + __Pyx_InterpreterIdAndModule *write = data->table; + __Pyx_InterpreterIdAndModule *end = read + data->count; + for (; readmodule) { + write->id = read->id; + write->module = read->module; + ++write; + } + } + data->count = write - data->table; + for (; writeid = 0; + write->module = NULL; + } + data->interpreter_id_as_index = 0; +} +static int __Pyx_State_AddModule(PyObject* module, CYTHON_UNUSED void* dummy) { + int64_t interpreter_id = PyInterpreterState_GetID(__Pyx_PyInterpreterState_Get()); + if (interpreter_id == -1) return -1; + int result = 0; + __Pyx_ModuleStateLookup_Lock(); +#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE + __Pyx_ModuleStateLookupData *old_data = (__Pyx_ModuleStateLookupData *) + __pyx_atomic_pointer_exchange(&__Pyx_ModuleStateLookup_data, 0); +#else + __Pyx_ModuleStateLookupData *old_data = __Pyx_ModuleStateLookup_data; +#endif + __Pyx_ModuleStateLookupData *new_data = old_data; + if (!new_data) { + new_data = (__Pyx_ModuleStateLookupData *)calloc(1, sizeof(__Pyx_ModuleStateLookupData)); + if (!new_data) { + result = -1; + PyErr_NoMemory(); + goto end; + } + new_data->allocated = 1; + new_data->interpreter_id_as_index = 1; + } + __Pyx_ModuleStateLookup_wait_until_no_readers(); + if (new_data->interpreter_id_as_index) { + if (interpreter_id < __PYX_MODULE_STATE_LOOKUP_SMALL_SIZE) { + result = __Pyx_State_AddModuleInterpIdAsIndex(&new_data, module, interpreter_id); + goto end; + } + __Pyx_State_ConvertFromInterpIdAsIndex(new_data); + } + { + Py_ssize_t insert_at = 0; + { + __Pyx_InterpreterIdAndModule* lower_bound = __Pyx_State_FindModuleStateLookupTableLowerBound( + new_data->table, new_data->count, interpreter_id); + assert(lower_bound); + insert_at = lower_bound - new_data->table; + if (unlikely(insert_at < new_data->count && lower_bound->id == interpreter_id)) { + lower_bound->module = module; + goto end; // already in table, nothing more to do + } + } + if (new_data->count+1 >= new_data->allocated) { + Py_ssize_t to_allocate = (new_data->count+1)*2; + new_data = + (__Pyx_ModuleStateLookupData*)realloc( + new_data, + sizeof(__Pyx_ModuleStateLookupData) + + (to_allocate-1)*sizeof(__Pyx_InterpreterIdAndModule)); + if (!new_data) { + result = -1; + new_data = old_data; + PyErr_NoMemory(); + goto end; + } + new_data->allocated = to_allocate; + } + ++new_data->count; + int64_t last_id = interpreter_id; + PyObject *last_module = module; + for (Py_ssize_t i=insert_at; icount; ++i) { + int64_t current_id = new_data->table[i].id; + new_data->table[i].id = last_id; + last_id = current_id; + PyObject *current_module = new_data->table[i].module; + new_data->table[i].module = last_module; + last_module = current_module; + } + } + end: +#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE + __pyx_atomic_pointer_exchange(&__Pyx_ModuleStateLookup_data, new_data); +#else + __Pyx_ModuleStateLookup_data = new_data; +#endif + __Pyx_ModuleStateLookup_Unlock(); + return result; +} +static int __Pyx_State_RemoveModule(CYTHON_UNUSED void* dummy) { + int64_t interpreter_id = PyInterpreterState_GetID(__Pyx_PyInterpreterState_Get()); + if (interpreter_id == -1) return -1; + __Pyx_ModuleStateLookup_Lock(); +#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE + __Pyx_ModuleStateLookupData *data = (__Pyx_ModuleStateLookupData *) + __pyx_atomic_pointer_exchange(&__Pyx_ModuleStateLookup_data, 0); +#else + __Pyx_ModuleStateLookupData *data = __Pyx_ModuleStateLookup_data; +#endif + if (data->interpreter_id_as_index) { + if (interpreter_id < data->count) { + data->table[interpreter_id].module = NULL; + } + goto done; + } + { + __Pyx_ModuleStateLookup_wait_until_no_readers(); + __Pyx_InterpreterIdAndModule* lower_bound = __Pyx_State_FindModuleStateLookupTableLowerBound( + data->table, data->count, interpreter_id); + if (!lower_bound) goto done; + if (lower_bound->id != interpreter_id) goto done; + __Pyx_InterpreterIdAndModule *end = data->table+data->count; + for (;lower_boundid = (lower_bound+1)->id; + lower_bound->module = (lower_bound+1)->module; + } + } + --data->count; + if (data->count == 0) { + free(data); + data = NULL; + } + done: +#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE + __pyx_atomic_pointer_exchange(&__Pyx_ModuleStateLookup_data, data); +#else + __Pyx_ModuleStateLookup_data = data; +#endif + __Pyx_ModuleStateLookup_Unlock(); + return 0; +} +#endif + +/* #### Code section: utility_code_pragmas_end ### */ +#ifdef _MSC_VER +#pragma warning( pop ) +#endif + + + +/* #### Code section: end ### */ +#endif /* Py_PYTHON_H */ diff --git a/dist/HandoverSystem/_internal/selectolax/parser.cp311-win_amd64.pyd b/dist/HandoverSystem/_internal/selectolax/parser.cp311-win_amd64.pyd new file mode 100644 index 0000000..b85953b Binary files /dev/null and b/dist/HandoverSystem/_internal/selectolax/parser.cp311-win_amd64.pyd differ diff --git a/dist/HandoverSystem/_internal/selectolax/parser.pxd b/dist/HandoverSystem/_internal/selectolax/parser.pxd new file mode 100644 index 0000000..66b86a5 --- /dev/null +++ b/dist/HandoverSystem/_internal/selectolax/parser.pxd @@ -0,0 +1,578 @@ + +cdef extern from "myhtml/myhtml.h" nogil: + ctypedef unsigned int mystatus_t + ctypedef struct myhtml_t + ctypedef size_t myhtml_tag_id_t + + ctypedef struct myhtml_tree_t: + # not completed struct + myhtml_t* myhtml + myhtml_tree_node_t* document + myhtml_tree_node_t* node_html + + ctypedef struct mchar_async_t + ctypedef struct mycore_string_t: + char* data + size_t size + size_t length + + mchar_async_t *mchar + size_t node_idx + + ctypedef struct mycore_string_raw_t: + char* data + size_t size + size_t length + + myhtml_namespace ns + + ctypedef enum myhtml_options: + MyHTML_OPTIONS_DEFAULT = 0x00 + MyHTML_OPTIONS_PARSE_MODE_SINGLE = 0x01 + MyHTML_OPTIONS_PARSE_MODE_ALL_IN_ONE = 0x02 + MyHTML_OPTIONS_PARSE_MODE_SEPARATELY = 0x04 + + ctypedef struct myhtml_collection_t: + myhtml_tree_node_t **list + size_t size + size_t length + + ctypedef struct myhtml_tree_node_t: + myhtml_tree_node_flags flags + + myhtml_tag_id_t tag_id + myhtml_namespace ns + + myhtml_tree_node_t* prev + myhtml_tree_node_t* next + myhtml_tree_node_t* child + myhtml_tree_node_t* parent + + myhtml_tree_node_t* last_child + + myhtml_token_node_t* token + void* data + + myhtml_tree_t* tree + + ctypedef enum myhtml_namespace: + MyHTML_NAMESPACE_UNDEF = 0x00 + MyHTML_NAMESPACE_HTML = 0x01 + MyHTML_NAMESPACE_MATHML = 0x02 + MyHTML_NAMESPACE_SVG = 0x03 + MyHTML_NAMESPACE_XLINK = 0x04 + MyHTML_NAMESPACE_XML = 0x05 + MyHTML_NAMESPACE_XMLNS = 0x06 + MyHTML_NAMESPACE_ANY = 0x07 + MyHTML_NAMESPACE_LAST_ENTRY = 0x07 + + ctypedef enum myhtml_tree_node_flags: + MyHTML_TREE_NODE_UNDEF = 0 + MyHTML_TREE_NODE_PARSER_INSERTED = 1 + MyHTML_TREE_NODE_BLOCKING = 2 + + ctypedef enum myhtml_token_type: + MyHTML_TOKEN_TYPE_OPEN = 0x000 + MyHTML_TOKEN_TYPE_CLOSE = 0x001 + MyHTML_TOKEN_TYPE_CLOSE_SELF = 0x002 + MyHTML_TOKEN_TYPE_DONE = 0x004 + MyHTML_TOKEN_TYPE_WHITESPACE = 0x008 + MyHTML_TOKEN_TYPE_RCDATA = 0x010 + MyHTML_TOKEN_TYPE_RAWTEXT = 0x020 + MyHTML_TOKEN_TYPE_SCRIPT = 0x040 + MyHTML_TOKEN_TYPE_PLAINTEXT = 0x080 + MyHTML_TOKEN_TYPE_CDATA = 0x100 + MyHTML_TOKEN_TYPE_DATA = 0x200 + MyHTML_TOKEN_TYPE_COMMENT = 0x400 + MyHTML_TOKEN_TYPE_NULL = 0x800 + + ctypedef enum myhtml_tags: + MyHTML_TAG__UNDEF = 0x000 + MyHTML_TAG__TEXT = 0x001 + MyHTML_TAG__COMMENT = 0x002 + MyHTML_TAG__DOCTYPE = 0x003 + MyHTML_TAG_A = 0x004 + MyHTML_TAG_ABBR = 0x005 + MyHTML_TAG_ACRONYM = 0x006 + MyHTML_TAG_ADDRESS = 0x007 + MyHTML_TAG_ANNOTATION_XML = 0x008 + MyHTML_TAG_APPLET = 0x009 + MyHTML_TAG_AREA = 0x00a + MyHTML_TAG_ARTICLE = 0x00b + MyHTML_TAG_ASIDE = 0x00c + MyHTML_TAG_AUDIO = 0x00d + MyHTML_TAG_B = 0x00e + MyHTML_TAG_BASE = 0x00f + MyHTML_TAG_BASEFONT = 0x010 + MyHTML_TAG_BDI = 0x011 + MyHTML_TAG_BDO = 0x012 + MyHTML_TAG_BGSOUND = 0x013 + MyHTML_TAG_BIG = 0x014 + MyHTML_TAG_BLINK = 0x015 + MyHTML_TAG_BLOCKQUOTE = 0x016 + MyHTML_TAG_BODY = 0x017 + MyHTML_TAG_BR = 0x018 + MyHTML_TAG_BUTTON = 0x019 + MyHTML_TAG_CANVAS = 0x01a + MyHTML_TAG_CAPTION = 0x01b + MyHTML_TAG_CENTER = 0x01c + MyHTML_TAG_CITE = 0x01d + MyHTML_TAG_CODE = 0x01e + MyHTML_TAG_COL = 0x01f + MyHTML_TAG_COLGROUP = 0x020 + MyHTML_TAG_COMMAND = 0x021 + MyHTML_TAG_COMMENT = 0x022 + MyHTML_TAG_DATALIST = 0x023 + MyHTML_TAG_DD = 0x024 + MyHTML_TAG_DEL = 0x025 + MyHTML_TAG_DETAILS = 0x026 + MyHTML_TAG_DFN = 0x027 + MyHTML_TAG_DIALOG = 0x028 + MyHTML_TAG_DIR = 0x029 + MyHTML_TAG_DIV = 0x02a + MyHTML_TAG_DL = 0x02b + MyHTML_TAG_DT = 0x02c + MyHTML_TAG_EM = 0x02d + MyHTML_TAG_EMBED = 0x02e + MyHTML_TAG_FIELDSET = 0x02f + MyHTML_TAG_FIGCAPTION = 0x030 + MyHTML_TAG_FIGURE = 0x031 + MyHTML_TAG_FONT = 0x032 + MyHTML_TAG_FOOTER = 0x033 + MyHTML_TAG_FORM = 0x034 + MyHTML_TAG_FRAME = 0x035 + MyHTML_TAG_FRAMESET = 0x036 + MyHTML_TAG_H1 = 0x037 + MyHTML_TAG_H2 = 0x038 + MyHTML_TAG_H3 = 0x039 + MyHTML_TAG_H4 = 0x03a + MyHTML_TAG_H5 = 0x03b + MyHTML_TAG_H6 = 0x03c + MyHTML_TAG_HEAD = 0x03d + MyHTML_TAG_HEADER = 0x03e + MyHTML_TAG_HGROUP = 0x03f + MyHTML_TAG_HR = 0x040 + MyHTML_TAG_HTML = 0x041 + MyHTML_TAG_I = 0x042 + MyHTML_TAG_IFRAME = 0x043 + MyHTML_TAG_IMAGE = 0x044 + MyHTML_TAG_IMG = 0x045 + MyHTML_TAG_INPUT = 0x046 + MyHTML_TAG_INS = 0x047 + MyHTML_TAG_ISINDEX = 0x048 + MyHTML_TAG_KBD = 0x049 + MyHTML_TAG_KEYGEN = 0x04a + MyHTML_TAG_LABEL = 0x04b + MyHTML_TAG_LEGEND = 0x04c + MyHTML_TAG_LI = 0x04d + MyHTML_TAG_LINK = 0x04e + MyHTML_TAG_LISTING = 0x04f + MyHTML_TAG_MAIN = 0x050 + MyHTML_TAG_MAP = 0x051 + MyHTML_TAG_MARK = 0x052 + MyHTML_TAG_MARQUEE = 0x053 + MyHTML_TAG_MENU = 0x054 + MyHTML_TAG_MENUITEM = 0x055 + MyHTML_TAG_META = 0x056 + MyHTML_TAG_METER = 0x057 + MyHTML_TAG_MTEXT = 0x058 + MyHTML_TAG_NAV = 0x059 + MyHTML_TAG_NOBR = 0x05a + MyHTML_TAG_NOEMBED = 0x05b + MyHTML_TAG_NOFRAMES = 0x05c + MyHTML_TAG_NOSCRIPT = 0x05d + MyHTML_TAG_OBJECT = 0x05e + MyHTML_TAG_OL = 0x05f + MyHTML_TAG_OPTGROUP = 0x060 + MyHTML_TAG_OPTION = 0x061 + MyHTML_TAG_OUTPUT = 0x062 + MyHTML_TAG_P = 0x063 + MyHTML_TAG_PARAM = 0x064 + MyHTML_TAG_PLAINTEXT = 0x065 + MyHTML_TAG_PRE = 0x066 + MyHTML_TAG_PROGRESS = 0x067 + MyHTML_TAG_Q = 0x068 + MyHTML_TAG_RB = 0x069 + MyHTML_TAG_RP = 0x06a + MyHTML_TAG_RT = 0x06b + MyHTML_TAG_RTC = 0x06c + MyHTML_TAG_RUBY = 0x06d + MyHTML_TAG_S = 0x06e + MyHTML_TAG_SAMP = 0x06f + MyHTML_TAG_SCRIPT = 0x070 + MyHTML_TAG_SECTION = 0x071 + MyHTML_TAG_SELECT = 0x072 + MyHTML_TAG_SMALL = 0x073 + MyHTML_TAG_SOURCE = 0x074 + MyHTML_TAG_SPAN = 0x075 + MyHTML_TAG_STRIKE = 0x076 + MyHTML_TAG_STRONG = 0x077 + MyHTML_TAG_STYLE = 0x078 + MyHTML_TAG_SUB = 0x079 + MyHTML_TAG_SUMMARY = 0x07a + MyHTML_TAG_SUP = 0x07b + MyHTML_TAG_SVG = 0x07c + MyHTML_TAG_TABLE = 0x07d + MyHTML_TAG_TBODY = 0x07e + MyHTML_TAG_TD = 0x07f + MyHTML_TAG_TEMPLATE = 0x080 + MyHTML_TAG_TEXTAREA = 0x081 + MyHTML_TAG_TFOOT = 0x082 + MyHTML_TAG_TH = 0x083 + MyHTML_TAG_THEAD = 0x084 + MyHTML_TAG_TIME = 0x085 + MyHTML_TAG_TITLE = 0x086 + MyHTML_TAG_TR = 0x087 + MyHTML_TAG_TRACK = 0x088 + MyHTML_TAG_TT = 0x089 + MyHTML_TAG_U = 0x08a + MyHTML_TAG_UL = 0x08b + MyHTML_TAG_VAR = 0x08c + MyHTML_TAG_VIDEO = 0x08d + MyHTML_TAG_WBR = 0x08e + MyHTML_TAG_XMP = 0x08f + MyHTML_TAG_ALTGLYPH = 0x090 + MyHTML_TAG_ALTGLYPHDEF = 0x091 + MyHTML_TAG_ALTGLYPHITEM = 0x092 + MyHTML_TAG_ANIMATE = 0x093 + MyHTML_TAG_ANIMATECOLOR = 0x094 + MyHTML_TAG_ANIMATEMOTION = 0x095 + MyHTML_TAG_ANIMATETRANSFORM = 0x096 + MyHTML_TAG_CIRCLE = 0x097 + MyHTML_TAG_CLIPPATH = 0x098 + MyHTML_TAG_COLOR_PROFILE = 0x099 + MyHTML_TAG_CURSOR = 0x09a + MyHTML_TAG_DEFS = 0x09b + MyHTML_TAG_DESC = 0x09c + MyHTML_TAG_ELLIPSE = 0x09d + MyHTML_TAG_FEBLEND = 0x09e + MyHTML_TAG_FECOLORMATRIX = 0x09f + MyHTML_TAG_FECOMPONENTTRANSFER = 0x0a0 + MyHTML_TAG_FECOMPOSITE = 0x0a1 + MyHTML_TAG_FECONVOLVEMATRIX = 0x0a2 + MyHTML_TAG_FEDIFFUSELIGHTING = 0x0a3 + MyHTML_TAG_FEDISPLACEMENTMAP = 0x0a4 + MyHTML_TAG_FEDISTANTLIGHT = 0x0a5 + MyHTML_TAG_FEDROPSHADOW = 0x0a6 + MyHTML_TAG_FEFLOOD = 0x0a7 + MyHTML_TAG_FEFUNCA = 0x0a8 + MyHTML_TAG_FEFUNCB = 0x0a9 + MyHTML_TAG_FEFUNCG = 0x0aa + MyHTML_TAG_FEFUNCR = 0x0ab + MyHTML_TAG_FEGAUSSIANBLUR = 0x0ac + MyHTML_TAG_FEIMAGE = 0x0ad + MyHTML_TAG_FEMERGE = 0x0ae + MyHTML_TAG_FEMERGENODE = 0x0af + MyHTML_TAG_FEMORPHOLOGY = 0x0b0 + MyHTML_TAG_FEOFFSET = 0x0b1 + MyHTML_TAG_FEPOINTLIGHT = 0x0b2 + MyHTML_TAG_FESPECULARLIGHTING = 0x0b3 + MyHTML_TAG_FESPOTLIGHT = 0x0b4 + MyHTML_TAG_FETILE = 0x0b5 + MyHTML_TAG_FETURBULENCE = 0x0b6 + MyHTML_TAG_FILTER = 0x0b7 + MyHTML_TAG_FONT_FACE = 0x0b8 + MyHTML_TAG_FONT_FACE_FORMAT = 0x0b9 + MyHTML_TAG_FONT_FACE_NAME = 0x0ba + MyHTML_TAG_FONT_FACE_SRC = 0x0bb + MyHTML_TAG_FONT_FACE_URI = 0x0bc + MyHTML_TAG_FOREIGNOBJECT = 0x0bd + MyHTML_TAG_G = 0x0be + MyHTML_TAG_GLYPH = 0x0bf + MyHTML_TAG_GLYPHREF = 0x0c0 + MyHTML_TAG_HKERN = 0x0c1 + MyHTML_TAG_LINE = 0x0c2 + MyHTML_TAG_LINEARGRADIENT = 0x0c3 + MyHTML_TAG_MARKER = 0x0c4 + MyHTML_TAG_MASK = 0x0c5 + MyHTML_TAG_METADATA = 0x0c6 + MyHTML_TAG_MISSING_GLYPH = 0x0c7 + MyHTML_TAG_MPATH = 0x0c8 + MyHTML_TAG_PATH = 0x0c9 + MyHTML_TAG_PATTERN = 0x0ca + MyHTML_TAG_POLYGON = 0x0cb + MyHTML_TAG_POLYLINE = 0x0cc + MyHTML_TAG_RADIALGRADIENT = 0x0cd + MyHTML_TAG_RECT = 0x0ce + MyHTML_TAG_SET = 0x0cf + MyHTML_TAG_STOP = 0x0d0 + MyHTML_TAG_SWITCH = 0x0d1 + MyHTML_TAG_SYMBOL = 0x0d2 + MyHTML_TAG_TEXT = 0x0d3 + MyHTML_TAG_TEXTPATH = 0x0d4 + MyHTML_TAG_TREF = 0x0d5 + MyHTML_TAG_TSPAN = 0x0d6 + MyHTML_TAG_USE = 0x0d7 + MyHTML_TAG_VIEW = 0x0d8 + MyHTML_TAG_VKERN = 0x0d9 + MyHTML_TAG_MATH = 0x0da + MyHTML_TAG_MACTION = 0x0db + MyHTML_TAG_MALIGNGROUP = 0x0dc + MyHTML_TAG_MALIGNMARK = 0x0dd + MyHTML_TAG_MENCLOSE = 0x0de + MyHTML_TAG_MERROR = 0x0df + MyHTML_TAG_MFENCED = 0x0e0 + MyHTML_TAG_MFRAC = 0x0e1 + MyHTML_TAG_MGLYPH = 0x0e2 + MyHTML_TAG_MI = 0x0e3 + MyHTML_TAG_MLABELEDTR = 0x0e4 + MyHTML_TAG_MLONGDIV = 0x0e5 + MyHTML_TAG_MMULTISCRIPTS = 0x0e6 + MyHTML_TAG_MN = 0x0e7 + MyHTML_TAG_MO = 0x0e8 + MyHTML_TAG_MOVER = 0x0e9 + MyHTML_TAG_MPADDED = 0x0ea + MyHTML_TAG_MPHANTOM = 0x0eb + MyHTML_TAG_MROOT = 0x0ec + MyHTML_TAG_MROW = 0x0ed + MyHTML_TAG_MS = 0x0ee + MyHTML_TAG_MSCARRIES = 0x0ef + MyHTML_TAG_MSCARRY = 0x0f0 + MyHTML_TAG_MSGROUP = 0x0f1 + MyHTML_TAG_MSLINE = 0x0f2 + MyHTML_TAG_MSPACE = 0x0f3 + MyHTML_TAG_MSQRT = 0x0f4 + MyHTML_TAG_MSROW = 0x0f5 + MyHTML_TAG_MSTACK = 0x0f6 + MyHTML_TAG_MSTYLE = 0x0f7 + MyHTML_TAG_MSUB = 0x0f8 + MyHTML_TAG_MSUP = 0x0f9 + MyHTML_TAG_MSUBSUP = 0x0fa + MyHTML_TAG__END_OF_FILE = 0x0fb + MyHTML_TAG_FIRST_ENTRY = MyHTML_TAG__TEXT + MyHTML_TAG_LAST_ENTRY = 0x0fc + + ctypedef enum myhtml_tree_parse_flags_t: + MyHTML_TREE_PARSE_FLAGS_CLEAN = 0x000 + MyHTML_TREE_PARSE_FLAGS_WITHOUT_BUILD_TREE = 0x001 + MyHTML_TREE_PARSE_FLAGS_WITHOUT_PROCESS_TOKEN = 0x003 + MyHTML_TREE_PARSE_FLAGS_SKIP_WHITESPACE_TOKEN = 0x004 + MyHTML_TREE_PARSE_FLAGS_WITHOUT_DOCTYPE_IN_TREE = 0x008 + + ctypedef struct myhtml_token_node_t: + myhtml_tag_id_t tag_id + + mycore_string_t str + + size_t raw_begin + size_t raw_length + + size_t element_begin + size_t element_length + + myhtml_token_attr_t* attr_first + myhtml_token_attr_t* attr_last + + myhtml_token_type type + + ctypedef struct myhtml_token_attr_t: + myhtml_token_attr_t* next + myhtml_token_attr_t* prev + + mycore_string_t key + mycore_string_t value + + size_t raw_key_begin + size_t raw_key_length + size_t raw_value_begin + size_t raw_value_length + + myhtml_namespace ns + + ctypedef struct myhtml_tree_attr_t: + myhtml_tree_attr_t* next + myhtml_tree_attr_t* prev + + mycore_string_t key + mycore_string_t value + + size_t raw_key_begin + size_t raw_key_length + size_t raw_value_begin + size_t raw_value_length + + myhtml_t * myhtml_create() + mystatus_t myhtml_init(myhtml_t* myhtml, myhtml_options opt, size_t thread_count, size_t queue_size) + myhtml_tree_t * myhtml_tree_create() + mystatus_t myhtml_tree_init(myhtml_tree_t* tree, myhtml_t* myhtml) + mystatus_t myhtml_parse(myhtml_tree_t* tree, myencoding_t encoding, const char* html, size_t html_size) + + myhtml_tree_attr_t* myhtml_node_attribute_first(myhtml_tree_node_t* node) + myhtml_tree_attr_t* myhtml_attribute_by_key(myhtml_tree_node_t *node, const char *key, size_t key_len) + const char* myhtml_node_text(myhtml_tree_node_t *node, size_t *length) + mycore_string_t * myhtml_node_string(myhtml_tree_node_t *node) + const char * myhtml_tag_name_by_id(myhtml_tree_t* tree, myhtml_tag_id_t tag_id, size_t *length) + + myhtml_collection_t * myhtml_collection_destroy(myhtml_collection_t *collection) + myhtml_tree_t * myhtml_tree_destroy(myhtml_tree_t* tree) + myhtml_t* myhtml_destroy(myhtml_t* myhtml) + + myhtml_tree_node_t* myhtml_tree_get_document(myhtml_tree_t* tree) + myhtml_tree_node_t* myhtml_tree_get_node_body(myhtml_tree_t* tree) + myhtml_tree_node_t* myhtml_tree_get_node_head(myhtml_tree_t* tree) + + myhtml_collection_t* myhtml_get_nodes_by_name(myhtml_tree_t* tree, myhtml_collection_t *collection, + const char* name, size_t length, mystatus_t *status) + + void myhtml_node_delete(myhtml_tree_node_t *node) + void myhtml_node_delete_recursive(myhtml_tree_node_t *node) + void myhtml_tree_parse_flags_set(myhtml_tree_t* tree, myhtml_tree_parse_flags_t parse_flags) + myhtml_tree_node_t * myhtml_node_insert_before(myhtml_tree_node_t *target, myhtml_tree_node_t *node) + myhtml_tree_node_t * myhtml_node_insert_after(myhtml_tree_node_t *target, myhtml_tree_node_t *node) + myhtml_tree_node_t * myhtml_node_create(myhtml_tree_t* tree, myhtml_tag_id_t tag_id, myhtml_namespace ns) + myhtml_tree_node_t * myhtml_node_clone_deep(myhtml_tree_t* dest_tree, myhtml_tree_node_t* src) + myhtml_tree_node_t * myhtml_node_append_child(myhtml_tree_node_t* target, myhtml_tree_node_t* node) + + mycore_string_t * myhtml_node_text_set(myhtml_tree_node_t *node, const char* text, size_t length, + myencoding_t encoding) + myhtml_tree_attr_t * myhtml_attribute_by_key(myhtml_tree_node_t *node, const char *key, size_t key_len) + myhtml_tree_attr_t * myhtml_attribute_remove_by_key(myhtml_tree_node_t *node, const char *key, size_t key_len) + myhtml_tree_attr_t * myhtml_attribute_add(myhtml_tree_node_t *node, const char *key, size_t key_len, + const char *value, size_t value_len, myencoding_t encoding) + + myhtml_tree_node_t * myhtml_node_insert_to_appropriate_place(myhtml_tree_node_t *target, myhtml_tree_node_t *node) + +cdef extern from "myhtml/tree.h" nogil: + myhtml_tree_node_t * myhtml_tree_node_clone(myhtml_tree_node_t* node) + myhtml_tree_node_t * myhtml_tree_node_insert_root(myhtml_tree_t* tree, myhtml_token_node_t* token, + myhtml_namespace ns) + void myhtml_tree_node_add_child(myhtml_tree_node_t* root, myhtml_tree_node_t* node) + +cdef extern from "myhtml/serialization.h" nogil: + mystatus_t myhtml_serialization(myhtml_tree_node_t* scope_node, mycore_string_raw_t* str) + + +cdef extern from "myencoding/encoding.h" nogil: + ctypedef enum myencoding_t: + MyENCODING_DEFAULT = 0x00 + # MyENCODING_AUTO = 0x01 // future + MyENCODING_NOT_DETERMINED = 0x02 + MyENCODING_UTF_8 = 0x00 # default encoding + MyENCODING_UTF_16LE = 0x04 + MyENCODING_UTF_16BE = 0x05 + MyENCODING_X_USER_DEFINED = 0x06 + MyENCODING_BIG5 = 0x07 + MyENCODING_EUC_JP = 0x08 + MyENCODING_EUC_KR = 0x09 + MyENCODING_GB18030 = 0x0a + MyENCODING_GBK = 0x0b + MyENCODING_IBM866 = 0x0c + MyENCODING_ISO_2022_JP = 0x0d + MyENCODING_ISO_8859_10 = 0x0e + MyENCODING_ISO_8859_13 = 0x0f + MyENCODING_ISO_8859_14 = 0x10 + MyENCODING_ISO_8859_15 = 0x11 + MyENCODING_ISO_8859_16 = 0x12 + MyENCODING_ISO_8859_2 = 0x13 + MyENCODING_ISO_8859_3 = 0x14 + MyENCODING_ISO_8859_4 = 0x15 + MyENCODING_ISO_8859_5 = 0x16 + MyENCODING_ISO_8859_6 = 0x17 + MyENCODING_ISO_8859_7 = 0x18 + MyENCODING_ISO_8859_8 = 0x19 + MyENCODING_ISO_8859_8_I = 0x1a + MyENCODING_KOI8_R = 0x1b + MyENCODING_KOI8_U = 0x1c + MyENCODING_MACINTOSH = 0x1d + MyENCODING_SHIFT_JIS = 0x1e + MyENCODING_WINDOWS_1250 = 0x1f + MyENCODING_WINDOWS_1251 = 0x20 + MyENCODING_WINDOWS_1252 = 0x21 + MyENCODING_WINDOWS_1253 = 0x22 + MyENCODING_WINDOWS_1254 = 0x23 + MyENCODING_WINDOWS_1255 = 0x24 + MyENCODING_WINDOWS_1256 = 0x25 + MyENCODING_WINDOWS_1257 = 0x26 + MyENCODING_WINDOWS_1258 = 0x27 + MyENCODING_WINDOWS_874 = 0x28 + MyENCODING_X_MAC_CYRILLIC = 0x29 + MyENCODING_LAST_ENTRY = 0x2a + + bint myencoding_detect_bom(const char *text, size_t length, myencoding_t *encoding) + bint myencoding_detect(const char *text, size_t length, myencoding_t *encoding) + myencoding_t myencoding_prescan_stream_to_determine_encoding(const char *data, size_t data_size) + const char* myencoding_name_by_id(myencoding_t encoding, size_t *length) + + +cdef extern from "mycss/mycss.h" nogil: + ctypedef struct mycss_entry_t: + # not completed struct + mycss_t* mycss + + ctypedef struct mycss_t + + ctypedef struct mycss_selectors_t + + ctypedef struct mycss_selectors_entries_list_t + ctypedef struct mycss_declaration_entry_t + + ctypedef enum mycss_selectors_flags: + MyCSS_SELECTORS_FLAGS_UNDEF = 0x00 + MyCSS_SELECTORS_FLAGS_SELECTOR_BAD = 0x01 + ctypedef mycss_selectors_flags mycss_selectors_flags_t + + ctypedef struct mycss_selectors_list_t: + mycss_selectors_entries_list_t* entries_list + size_t entries_list_length + + mycss_declaration_entry_t* declaration_entry + + mycss_selectors_flags_t flags + + mycss_selectors_list_t* parent + mycss_selectors_list_t* next + mycss_selectors_list_t* prev + + # CSS init routines + mycss_t * mycss_create() + mystatus_t mycss_init(mycss_t* mycss) + mycss_entry_t * mycss_entry_create() + mystatus_t mycss_entry_init(mycss_t* mycss, mycss_entry_t* entry) + + mycss_selectors_list_t * mycss_selectors_parse(mycss_selectors_t* selectors, myencoding_t encoding, + const char* data, size_t data_size, mystatus_t* out_status) + mycss_selectors_t * mycss_entry_selectors(mycss_entry_t* entry) + + mycss_selectors_list_t * mycss_selectors_list_destroy(mycss_selectors_t* selectors, + mycss_selectors_list_t* selectors_list, bint self_destroy) + mycss_entry_t * mycss_entry_destroy(mycss_entry_t* entry, bint self_destroy) + mycss_t * mycss_destroy(mycss_t* mycss, bint self_destroy) + + +cdef extern from "modest/finder/finder.h" nogil: + ctypedef struct modest_finder_t + modest_finder_t* modest_finder_create_simple() + mystatus_t modest_finder_by_selectors_list(modest_finder_t* finder, myhtml_tree_node_t* scope_node, + mycss_selectors_list_t* selector_list, myhtml_collection_t** collection) + modest_finder_t * modest_finder_destroy(modest_finder_t* finder, bint self_destroy) + + +cdef class HTMLParser: + cdef myhtml_tree_t *html_tree + cdef public bint detect_encoding + cdef public bint use_meta_tags + cdef myencoding_t _encoding + cdef public unicode decode_errors + cdef public bytes raw_html + cdef object cached_script_texts + cdef object cached_script_srcs + + cdef void _detect_encoding(self, char* html, size_t html_len) nogil + cdef int _parse_html(self, char* html, size_t html_len) except -1 + + @staticmethod + cdef HTMLParser from_tree( + myhtml_tree_t * tree, bytes raw_html, bint detect_encoding, bint use_meta_tags, str decode_errors, + myencoding_t encoding + ) + + +cdef class Stack: + cdef size_t capacity + cdef size_t top + cdef myhtml_tree_node_t ** _stack + + cdef bint is_empty(self) + cdef int push(self, myhtml_tree_node_t* res) except -1 + cdef myhtml_tree_node_t * pop(self) + cdef int resize(self) except -1 diff --git a/dist/HandoverSystem/_internal/selectolax/parser.pyi b/dist/HandoverSystem/_internal/selectolax/parser.pyi new file mode 100644 index 0000000..7e56c01 --- /dev/null +++ b/dist/HandoverSystem/_internal/selectolax/parser.pyi @@ -0,0 +1,770 @@ +from typing import Iterator, Literal, TypeVar, overload + +DefaultT = TypeVar("DefaultT") + +class _Attributes: + """A dict-like object that represents attributes.""" + + @staticmethod + def create(node: Node, decode_errors: str) -> _Attributes: ... + def keys(self) -> Iterator[str]: ... + def items(self) -> Iterator[tuple[str, str | None]]: ... + def values(self) -> Iterator[str | None]: ... + def __iter__(self) -> Iterator[str]: ... + def __len__(self) -> int: ... + def __getitem__(self, key: str) -> str | None: ... + def __setitem__(self, key: str, value: str) -> None: ... + def __delitem__(self, key: str) -> None: ... + def __contains__(self, key: str) -> bool: ... + def __repr__(self) -> str: ... + @overload + def get(self, key: str, default: DefaultT) -> DefaultT | str | None: ... + @overload + def get(self, key: str, default: None = ...) -> str | None: ... + @overload + def sget(self, key: str, default: str | DefaultT) -> str | DefaultT: ... + @overload + def sget(self, key: str, default: str = "") -> str: + """Same as get, but returns empty strings instead of None values for empty attributes.""" + ... + +class Selector: + """An advanced CSS selector that supports additional operations. + + Think of it as a toolkit that mimics some of the features of XPath. + + Please note, this is an experimental feature that can change in the future.""" + + def __init__(self, node: Node, query: str): ... + def css(self, query: str) -> Node: + """Evaluate CSS selector against current scope.""" + ... + @property + def matches(self) -> list[Node]: + """Returns all possible selector matches""" + ... + @property + def any_matches(self) -> bool: + """Returns True if there are any matches""" + ... + def text_contains( + self, text: str, deep: bool = True, separator: str = "", strip: bool = False + ) -> Selector: + """Filter all current matches given text.""" + ... + def any_text_contains( + self, text: str, deep: bool = True, separator: str = "", strip: bool = False + ) -> bool: + """Returns True if any node in the current search scope contains specified text""" + ... + def attribute_longer_than( + self, text: str, length: int, start: str | None = None + ) -> Selector: + """Filter all current matches by attribute length. + + Similar to string-length in XPath.""" + ... + def any_attribute_longer_than( + self, text: str, length: int, start: str | None = None + ) -> bool: + """Returns True any href attribute longer than a specified length. + + Similar to string-length in XPath.""" + ... + +class Node: + """A class that represents HTML node (element).""" + + parser: HTMLParser + @property + def attributes(self) -> dict[str, str | None]: + """Get all attributes that belong to the current node. + + The value of empty attributes is None. + + Returns + ------- + attributes : dictionary of all attributes. + + Examples + -------- + + >>> tree = HTMLParser("
") + >>> node = tree.css_first('div') + >>> node.attributes + {'data': None, 'id': 'my_id'} + """ + ... + @property + def attrs(self) -> _Attributes: + """A dict-like object that is similar to the ``attributes`` property, but operates directly on the Node data. + + .. warning:: Use ``attributes`` instead, if you don't want to modify Node attributes. + + Returns + ------- + attributes : Attributes mapping object. + + Examples + -------- + + >>> tree = HTMLParser("
") + >>> node = tree.css_first('div') + >>> node.attrs +
+ >>> node.attrs['id'] + 'a' + >>> node.attrs['foo'] = 'bar' + >>> del node.attrs['id'] + >>> node.attributes + {'foo': 'bar'} + >>> node.attrs['id'] = 'new_id' + >>> node.html + '
' + """ + ... + @property + def id(self) -> str | None: + """Get the id attribute of the node. + + Returns None if id does not set. + + Returns + ------- + text : str + """ + ... + + def mem_id(self) -> int: + """Get the mem_id attribute of the node. + + Returns + ------- + text : int + """ + ... + + def __hash__(self) -> int: + """Get the hash of this node + :return: int + """ + ... + def text(self, deep: bool = True, separator: str = "", strip: bool = False) -> str: + """Returns the text of the node including text of all its child nodes. + + Parameters + ---------- + strip : bool, default False + If true, calls ``str.strip()`` on each text part to remove extra white spaces. + separator : str, default '' + The separator to use when joining text from different nodes. + deep : bool, default True + If True, includes text from all child nodes. + + Returns + ------- + text : str + """ + ... + def iter(self, include_text: bool = False) -> Iterator[Node]: + """Iterate over nodes on the current level. + + Parameters + ---------- + include_text : bool + If True, includes text nodes as well. + + Yields + ------- + node + """ + ... + def traverse(self, include_text: bool = False) -> Iterator[Node]: + """Iterate over all child and next nodes starting from the current level. + + Parameters + ---------- + include_text : bool + If True, includes text nodes as well. + + Yields + ------- + node + """ + ... + @property + def tag(self) -> str: + """Return the name of the current tag (e.g. div, p, img). + + Returns + ------- + text : str + """ + ... + @property + def child(self) -> Node | None: + """Alias for the `first_child` property. + + **Deprecated**. Please use `first_child` instead. + """ + ... + @property + def parent(self) -> Node | None: + """Return the parent node.""" + ... + @property + def next(self) -> Node | None: + """Return next node.""" + ... + @property + def prev(self) -> Node | None: + """Return previous node.""" + ... + @property + def last_child(self) -> Node | None: + """Return last child node.""" + ... + @property + def html(self) -> str | None: + """Return HTML representation of the current node including all its child nodes. + + Returns + ------- + text : str + """ + ... + def css(self, query: str) -> list[Node]: + """Evaluate CSS selector against current node and its child nodes.""" + ... + def any_css_matches(self, selectors: tuple[str]) -> bool: + """Returns True if any of CSS selectors matches a node""" + ... + def css_matches(self, selector: str) -> bool: + """Returns True if CSS selector matches a node.""" + ... + @overload + def css_first( + self, query: str, default: DefaultT, strict: bool = False + ) -> Node | DefaultT: ... + @overload + def css_first( + self, query: str, default: None = None, strict: bool = False + ) -> Node | None | DefaultT: + """Evaluate CSS selector against current node and its child nodes.""" + ... + def decompose(self, recursive: bool = True) -> None: + """Remove a Node from the tree. + + Parameters + ---------- + recursive : bool, default True + Whenever to delete all its child nodes + + Examples + -------- + + >>> tree = HTMLParser(html) + >>> for tag in tree.css('script'): + >>> tag.decompose() + """ + ... + def remove(self, recursive: bool = True) -> None: + """An alias for the decompose method.""" + ... + def unwrap(self, delete_empty: bool = False) -> None: + """Replace node with whatever is inside this node. + + Parameters + ---------- + delete_empty : bool, default False + Whenever to delete empty tags. + + Examples + -------- + + >>> tree = HTMLParser("
Hello world!
") + >>> tree.css_first('i').unwrap() + >>> tree.html + '
Hello world!
' + + Note: by default, empty tags are ignored, set "delete_empty" to "True" to change this. + """ + ... + def strip_tags(self, tags: list[str], recursive: bool = False) -> None: + """Remove specified tags from the HTML tree. + + Parameters + ---------- + tags : list + List of tags to remove. + recursive : bool, default True + Whenever to delete all its child nodes + + Examples + -------- + + >>> tree = HTMLParser('
Hello world!
') + >>> tags = ['head', 'style', 'script', 'xmp', 'iframe', 'noembed', 'noframes'] + >>> tree.strip_tags(tags) + >>> tree.html + '
Hello world!
' + """ + ... + def unwrap_tags(self, tags: list[str], delete_empty: bool = False) -> None: + """Unwraps specified tags from the HTML tree. + + Works the same as the unwrap method, but applied to a list of tags. + + Parameters + ---------- + tags : list + List of tags to remove. + delete_empty : bool, default False + Whenever to delete empty tags. + + Examples + -------- + + >>> tree = HTMLParser("
Hello world!
") + >>> tree.body.unwrap_tags(['i','a']) + >>> tree.body.html + '
Hello world!
' + + Note: by default, empty tags are ignored, set "delete_empty" to "True" to change this. + """ + ... + def replace_with(self, value: str | bytes | None) -> None: + """Replace current Node with specified value. + + Parameters + ---------- + value : str, bytes or Node + The text or Node instance to replace the Node with. + When a text string is passed, it's treated as text. All HTML tags will be escaped. + Convert and pass the ``Node`` object when you want to work with HTML. + Does not clone the ``Node`` object. + All future changes to the passed ``Node`` object will also be taken into account. + + Examples + -------- + + >>> tree = HTMLParser('
Get Laptop
') + >>> img = tree.css_first('img') + >>> img.replace_with(img.attributes.get('alt', '')) + >>> tree.body.child.html + '
Get Laptop
' + + >>> html_parser = HTMLParser('
Get
') + >>> html_parser2 = HTMLParser('
Test
') + >>> img_node = html_parser.css_first('img') + >>> img_node.replace_with(html_parser2.body.child) + '
Get
Test
' + """ + ... + def insert_before(self, value: str | bytes | None) -> None: + """Insert a node before the current Node. + + Parameters + ---------- + value : str, bytes or Node + The text or Node instance to insert before the Node. + When a text string is passed, it's treated as text. All HTML tags will be escaped. + Convert and pass the ``Node`` object when you want to work with HTML. + Does not clone the ``Node`` object. + All future changes to the passed ``Node`` object will also be taken into account. + + Examples + -------- + + >>> tree = HTMLParser('
Get Laptop
') + >>> img = tree.css_first('img') + >>> img.insert_before(img.attributes.get('alt', '')) + >>> tree.body.child.html + '
Get LaptopLaptop
' + + >>> html_parser = HTMLParser('
Get
') + >>> html_parser2 = HTMLParser('
Test
') + >>> img_node = html_parser.css_first('img') + >>> img_node.insert_before(html_parser2.body.child) +
Get
Test
' + """ + ... + def insert_after(self, value: str | bytes | None) -> None: + """Insert a node after the current Node. + + Parameters + ---------- + value : str, bytes or Node + The text or Node instance to insert after the Node. + When a text string is passed, it's treated as text. All HTML tags will be escaped. + Convert and pass the ``Node`` object when you want to work with HTML. + Does not clone the ``Node`` object. + All future changes to the passed ``Node`` object will also be taken into account. + + Examples + -------- + + >>> tree = HTMLParser('
Get Laptop
') + >>> img = tree.css_first('img') + >>> img.insert_after(img.attributes.get('alt', '')) + >>> tree.body.child.html + '
Get LaptopLaptop
' + + >>> html_parser = HTMLParser('
Get
') + >>> html_parser2 = HTMLParser('
Test
') + >>> img_node = html_parser.css_first('img') + >>> img_node.insert_after(html_parser2.body.child) +
Get
Test
' + """ + ... + def insert_child(self, value: str | bytes | None) -> None: + """Insert a node inside (at the end of) the current Node. + + Parameters + ---------- + value : str, bytes or Node + The text or Node instance to insert inside the Node. + When a text string is passed, it's treated as text. All HTML tags will be escaped. + Convert and pass the ``Node`` object when you want to work with HTML. + Does not clone the ``Node`` object. + All future changes to the passed ``Node`` object will also be taken into account. + + Examples + -------- + + >>> tree = HTMLParser('
Get
') + >>> div = tree.css_first('div') + >>> div.insert_child('Laptop') + >>> tree.body.child.html + '
Get Laptop
' + + >>> html_parser = HTMLParser('
Get
Laptop
') + >>> html_parser2 = HTMLParser('
Test
') + >>> span_node = html_parser.css_first('span') + >>> span_node.insert_child(html_parser2.body.child) +
Get
Laptop
Test
' + """ + ... + @property + def raw_value(self) -> bytes: + """Return the raw (unparsed, original) value of a node. + + Currently, works on text nodes only. + + Returns + ------- + + raw_value : bytes + + Examples + -------- + + >>> html_parser = HTMLParser('
<test>
') + >>> selector = html_parser.css_first('div') + >>> selector.child.html + '<test>' + >>> selector.child.raw_value + b'<test>' + """ + ... + def select(self, query: str | None = None) -> Selector: + """Select nodes given a CSS selector. + + Works similarly to the css method, but supports chained filtering and extra features. + + Parameters + ---------- + query : str or None + The CSS selector to use when searching for nodes. + + Returns + ------- + selector : The `Selector` class. + """ + ... + def scripts_contain(self, query: str) -> bool: + """Returns True if any of the script tags contain specified text. + + Caches script tags on the first call to improve performance. + + Parameters + ---------- + query : str + The query to check. + """ + ... + def script_srcs_contain(self, queries: tuple[str]) -> bool: + """Returns True if any of the script SRCs attributes contain on of the specified text. + + Caches values on the first call to improve performance. + + Parameters + ---------- + queries : tuple of str + """ + ... + @property + def text_content(self) -> str | None: + """Returns the text of the node if it is a text node. + + Returns None for other nodes. + Unlike the ``text`` method, does not include child nodes. + + Returns + ------- + text : str or None. + """ + ... + def merge_text_nodes(self): + """Iterates over all text nodes and merges all text nodes that are close to each other. + + This is useful for text extraction. + Use it when you need to strip HTML tags and merge "dangling" text. + + Examples + -------- + + >>> tree = HTMLParser("

John

Doe

") + >>> node = tree.css_first('div') + >>> tree.unwrap_tags(["strong"]) + >>> tree.text(deep=True, separator=" ", strip=True) + "J ohn Doe" # Text extraction produces an extra space because the strong tag was removed. + >>> node.merge_text_nodes() + >>> tree.text(deep=True, separator=" ", strip=True) + "John Doe" + """ + ... + +class HTMLParser: + """The HTML parser. + + Use this class to parse raw HTML. + + Parameters + ---------- + + html : str (unicode) or bytes + detect_encoding : bool, default True + If `True` and html type is `bytes` then encoding will be detected automatically. + use_meta_tags : bool, default True + Whether to use meta tags in encoding detection process. + decode_errors : str, default 'ignore' + Same as in builtin's str.decode, i.e 'strict', 'ignore' or 'replace'. + """ + + def __init__( + self, + html: bytes | str, + detect_encoding: bool = True, + use_meta_tags: bool = True, + decode_errors: Literal["strict", "ignore", "replace"] = "ignore", + ): ... + def css(self, query: str) -> list[Node]: + """A CSS selector. + + Matches pattern `query` against HTML tree. + `CSS selectors reference `_. + + Parameters + ---------- + query : str + CSS selector (e.g. "div > :nth-child(2n+1):not(:has(a))"). + + Returns + ------- + selector : list of `Node` objects + """ + ... + @overload + def css_first( + self, query: str, default: DefaultT, strict: bool = False + ) -> Node | DefaultT: ... + @overload + def css_first( + self, query: str, default: None = None, strict: bool = False + ) -> Node | None | DefaultT: + """Same as `css` but returns only the first match. + + Parameters + ---------- + + query : str + default : bool, default None + Default value to return if there is no match. + strict: bool, default False + Set to True if you want to check if there is strictly only one match in the document. + + + Returns + ------- + selector : `Node` object + """ + ... + @property + def input_encoding(self) -> str: + """Return encoding of the HTML document. + + Returns `unknown` in case the encoding is not determined. + """ + ... + @property + def root(self) -> Node | None: + """Returns root node.""" + ... + @property + def head(self) -> Node | None: + """Returns head node.""" + ... + @property + def body(self) -> Node | None: + """Returns document body.""" + ... + def tags(self, name: str) -> list[Node]: + """Returns a list of tags that match specified name. + + Parameters + ---------- + name : str (e.g. div) + """ + ... + def text(self, deep: bool = True, separator: str = "", strip: bool = False) -> str: + """Returns the text of the node including text of all its child nodes. + + Parameters + ---------- + strip : bool, default False + If true, calls ``str.strip()`` on each text part to remove extra white spaces. + separator : str, default '' + The separator to use when joining text from different nodes. + deep : bool, default True + If True, includes text from all child nodes. + + Returns + ------- + text : str + """ + ... + def strip_tags(self, tags: list[str], recursive: bool = False) -> None: + """Remove specified tags from the node. + + Parameters + ---------- + tags : list of str + List of tags to remove. + recursive : bool, default True + Whenever to delete all its child nodes + + Examples + -------- + + >>> tree = HTMLParser('
Hello world!
') + >>> tags = ['head', 'style', 'script', 'xmp', 'iframe', 'noembed', 'noframes'] + >>> tree.strip_tags(tags) + >>> tree.html + '
Hello world!
' + """ + ... + def unwrap_tags(self, tags: list[str], delete_empty: bool = False) -> None: + """Unwraps specified tags from the HTML tree. + + Works the same as th unwrap method, but applied to a list of tags. + + Parameters + ---------- + tags : list + List of tags to remove. + delete_empty : bool, default False + If True, removes empty tags. + + Examples + -------- + + >>> tree = HTMLParser("
Hello world!
") + >>> tree.head.unwrap_tags(['i','a']) + >>> tree.head.html + '
Hello world!
' + """ + ... + @property + def html(self) -> str | None: + """Return HTML representation of the page.""" + ... + def select(self, query: str | None = None) -> Selector | None: + """Select nodes given a CSS selector. + + Works similarly to the ``css`` method, but supports chained filtering and extra features. + + Parameters + ---------- + query : str or None + The CSS selector to use when searching for nodes. + + Returns + ------- + selector : The `Selector` class. + """ + ... + def any_css_matches(self, selectors: tuple[str]) -> bool: + """Returns True if any of the specified CSS selectors matches a node.""" + ... + def scripts_contain(self, query: str) -> bool: + """Returns True if any of the script tags contain specified text. + + Caches script tags on the first call to improve performance. + + Parameters + ---------- + query : str + The query to check. + """ + ... + def scripts_srcs_contain(self, queries: tuple[str]) -> bool: + """Returns True if any of the script SRCs attributes contain on of the specified text. + + Caches values on the first call to improve performance. + + Parameters + ---------- + queries : tuple of str + """ + ... + def css_matches(self, selector: str) -> bool: ... + def clone(self) -> HTMLParser: + """Clone the current tree.""" + ... + def merge_text_nodes(self): + """Iterates over all text nodes and merges all text nodes that are close to each other. + + This is useful for text extraction. + Use it when you need to strip HTML tags and merge "dangling" text. + + Examples + -------- + + >>> tree = HTMLParser("

John

Doe

") + >>> node = tree.css_first('div') + >>> tree.unwrap_tags(["strong"]) + >>> tree.text(deep=True, separator=" ", strip=True) + "J ohn Doe" # Text extraction produces an extra space because the strong tag was removed. + >>> node.merge_text_nodes() + >>> tree.text(deep=True, separator=" ", strip=True) + "John Doe" + """ + ... + +def create_tag(tag: str) -> Node: + """ + Given an HTML tag name, e.g. `"div"`, create a single empty node for that tag, + e.g. `"
"`. + """ + ... + +def parse_fragment(html: str) -> list[Node]: + """ + Given HTML, parse it into a list of Nodes, such that the nodes + correspond to the given HTML. + + For contrast, HTMLParser adds ``, ``, and `` tags + if they are missing. This function does not add these tags. + """ + ... diff --git a/dist/HandoverSystem/_internal/selectolax/parser.pyx b/dist/HandoverSystem/_internal/selectolax/parser.pyx new file mode 100644 index 0000000..bd17feb --- /dev/null +++ b/dist/HandoverSystem/_internal/selectolax/parser.pyx @@ -0,0 +1,443 @@ + +from cpython.bool cimport bool +from cpython.exc cimport PyErr_SetObject + +include "modest/selection.pxi" +include "modest/node.pxi" +include "modest/util.pxi" +include "utils.pxi" + +cdef class HTMLParser: + """The HTML parser. + + Use this class to parse raw HTML. + + Parameters + ---------- + + html : str (unicode) or bytes + detect_encoding : bool, default True + If `True` and html type is `bytes` then encoding will be detected automatically. + use_meta_tags : bool, default True + Whether to use meta tags in encoding detection process. + decode_errors : str, default 'ignore' + Same as in builtin's str.decode, i.e 'strict', 'ignore' or 'replace'. + """ + def __init__(self, html, detect_encoding=True, use_meta_tags=True, decode_errors = 'ignore'): + + cdef size_t html_len + cdef char* html_chars + + self.detect_encoding = detect_encoding + self.use_meta_tags = use_meta_tags + self.decode_errors = decode_errors + self._encoding = MyENCODING_UTF_8 + + bytes_html, html_len = preprocess_input(html, decode_errors) + html_chars = bytes_html + + if detect_encoding and isinstance(html, bytes): + self._detect_encoding(html_chars, html_len) + + self._parse_html(html_chars, html_len) + + self.raw_html = bytes_html + self.cached_script_texts = None + self.cached_script_srcs = None + + def css(self, str query): + """A CSS selector. + + Matches pattern `query` against HTML tree. + `CSS selectors reference `_. + + Parameters + ---------- + query : str + CSS selector (e.g. "div > :nth-child(2n+1):not(:has(a))"). + + Returns + ------- + selector : list of `Node` objects + + """ + + cdef Node node = Node.new(self.html_tree.node_html, self) + return node.css(query) + + def css_first(self, str query, default=None, strict=False): + """Same as `css` but returns only the first match. + + Parameters + ---------- + + query : str + default : Any, default None + Default value to return if there is no match. + strict: bool, default False + Set to True if you want to check if there is strictly only one match in the document. + + + Returns + ------- + selector : `Node` object + + """ + + cdef Node node = Node.new(self.html_tree.node_html, self) + return node.css_first(query, default, strict) + + cdef void _detect_encoding(self, char* html, size_t html_len) nogil: + cdef myencoding_t encoding = MyENCODING_DEFAULT + + if self.use_meta_tags: + encoding = myencoding_prescan_stream_to_determine_encoding(html, html_len) + if encoding != MyENCODING_DEFAULT and encoding != MyENCODING_NOT_DETERMINED: + self._encoding = encoding + return + + if not myencoding_detect_bom(html, html_len, &encoding): + myencoding_detect(html, html_len, &encoding) + + self._encoding = encoding + + cdef int _parse_html(self, char* html, size_t html_len) except -1: + cdef myhtml_t* myhtml + cdef mystatus_t status + + with nogil: + myhtml = myhtml_create() + status = myhtml_init(myhtml, MyHTML_OPTIONS_DEFAULT, 1, 0) + + if status != 0: + PyErr_SetObject(RuntimeError, "Can't init MyHTML object.") + return -1 + + with nogil: + self.html_tree = myhtml_tree_create() + status = myhtml_tree_init(self.html_tree, myhtml) + + if status != 0: + PyErr_SetObject(RuntimeError, "Can't init MyHTML Tree object.") + return -1 + + with nogil: + status = myhtml_parse(self.html_tree, self._encoding, html, html_len) + + if status != 0: + PyErr_SetObject(RuntimeError, "Can't parse HTML (status code: %d)" % status) + return -1 + + if self.html_tree.node_html == NULL: + PyErr_SetObject(RuntimeError, "html_tree is still NULL even after parsing ") + return -1 + return 0 + + @property + def input_encoding(self): + """Return encoding of the HTML document. + + Returns `unknown` in case the encoding is not determined. + """ + cdef const char* encoding + encoding = myencoding_name_by_id(self._encoding, NULL) + + if encoding != NULL: + return encoding.decode('utf-8') + else: + return 'unknown' + + @property + def root(self): + """Returns root node.""" + if self.html_tree and self.html_tree.node_html: + try: + return Node.new(self.html_tree.node_html, self) + except Exception: + # If Node creation or initialization fails, return None + return None + return None + + @property + def head(self): + """Returns head node.""" + cdef myhtml_tree_node_t* head + head = myhtml_tree_get_node_head(self.html_tree) + + if head != NULL: + return Node.new(head, self) + return None + + @property + def body(self): + """Returns document body.""" + cdef myhtml_tree_node_t* body + body = myhtml_tree_get_node_body(self.html_tree) + + if body != NULL: + return Node.new(body, self) + return None + + def tags(self, str name): + """Returns a list of tags that match specified name. + + Parameters + ---------- + name : str (e.g. div) + + """ + # Validate tag name + if not name: + raise ValueError("Tag name cannot be empty") + if len(name) > 100: # Reasonable limit for tag names + raise ValueError("Tag name is too long") + + cdef myhtml_collection_t* collection = NULL + pybyte_name = name.encode('UTF-8') + cdef mystatus_t status = 0 + + result = list() + collection = myhtml_get_nodes_by_name(self.html_tree, NULL, pybyte_name, len(pybyte_name), &status) + + if collection == NULL: + return result + + if status == 0: + for i in range(collection.length): + node = Node.new(collection.list[i], self) + result.append(node) + + myhtml_collection_destroy(collection) + + return result + + def text(self, bool deep=True, str separator='', bool strip=False): + """Returns the text of the node including text of all its child nodes. + + Parameters + ---------- + strip : bool, default False + If true, calls ``str.strip()`` on each text part to remove extra white spaces. + separator : str, default '' + The separator to use when joining text from different nodes. + deep : bool, default True + If True, includes text from all child nodes. + + Returns + ------- + text : str + + """ + if not self.body: + return "" + return self.body.text(deep=deep, separator=separator, strip=strip) + + def strip_tags(self, list tags, bool recursive = False): + """Remove specified tags from the node. + + Parameters + ---------- + tags : list of str + List of tags to remove. + recursive : bool, default True + Whenever to delete all its child nodes + + Examples + -------- + + >>> tree = HTMLParser('
Hello world!
') + >>> tags = ['head', 'style', 'script', 'xmp', 'iframe', 'noembed', 'noframes'] + >>> tree.strip_tags(tags) + >>> tree.html + '
Hello world!
' + + """ + cdef myhtml_collection_t* collection = NULL + + cdef mystatus_t status = 0 + + for tag in tags: + pybyte_name = tag.encode('UTF-8') + collection = myhtml_get_nodes_by_name(self.html_tree, NULL, pybyte_name, len(pybyte_name), &status) + + if collection == NULL: + continue + + if status != 0: + continue + + for i in range(collection.length): + if recursive: + myhtml_node_delete_recursive(collection.list[i]) + else: + myhtml_node_delete(collection.list[i]) + + myhtml_collection_destroy(collection) + + def unwrap_tags(self, list tags, delete_empty : bool = False): + """Unwraps specified tags from the HTML tree. + + Works the same as th `unwrap` method, but applied to a list of tags. + + Parameters + ---------- + tags : list + List of tags to remove. + delete_empty : bool, default False + If True, removes empty tags. + + Examples + -------- + + >>> tree = HTMLParser("
Hello world!
") + >>> tree.head.unwrap_tags(['i','a']) + >>> tree.head.html + '
Hello world!
' + """ + if self.root is not None: + self.root.unwrap_tags(tags, delete_empty=delete_empty) + + @property + def html(self): + """Return HTML representation of the page.""" + cdef Node node + if self.html_tree != NULL and self.html_tree.document != NULL: + node = Node.new(self.html_tree.document, self) + return node.html + return None + + def select(self, query=None): + """Select nodes given a CSS selector. + + Works similarly to the ``css`` method, but supports chained filtering and extra features. + + Parameters + ---------- + query : str or None + The CSS selector to use when searching for nodes. + + Returns + ------- + selector : The `Selector` class. + """ + cdef Node node + node = self.root + if node: + return Selector(node, query) + + def any_css_matches(self, tuple selectors): + """Returns True if any of the specified CSS selectors matches a node.""" + return self.root.any_css_matches(selectors) + + def scripts_contain(self, str query): + """Returns True if any of the script tags contain specified text. + + Caches script tags on the first call to improve performance. + + Parameters + ---------- + query : str + The query to check. + + """ + return self.root.scripts_contain(query) + + def script_srcs_contain(self, tuple queries): + """Returns True if any of the script SRCs attributes contain on of the specified text. + + Caches values on the first call to improve performance. + + Parameters + ---------- + queries : tuple of str + + """ + return self.root.script_srcs_contain(queries) + + def css_matches(self, str selector): + return self.root.css_matches(selector) + + def merge_text_nodes(self): + """Iterates over all text nodes and merges all text nodes that are close to each other. + + This is useful for text extraction. + Use it when you need to strip HTML tags and merge "dangling" text. + + Examples + -------- + + >>> tree = HTMLParser("

John

Doe

") + >>> node = tree.css_first('div') + >>> tree.unwrap_tags(["strong"]) + >>> tree.text(deep=True, separator=" ", strip=True) + "J ohn Doe" # Text extraction produces an extra space because the strong tag was removed. + >>> node.merge_text_nodes() + >>> tree.text(deep=True, separator=" ", strip=True) + "John Doe" + """ + return self.root.merge_text_nodes() + + @staticmethod + cdef HTMLParser from_tree( + myhtml_tree_t * tree, bytes raw_html, bint detect_encoding, bint use_meta_tags, str decode_errors, + myencoding_t encoding + ): + obj = HTMLParser.__new__(HTMLParser) + obj.html_tree = tree + obj.raw_html = raw_html + obj.detect_encoding = detect_encoding + obj.use_meta_tags = use_meta_tags + obj.decode_errors = decode_errors + obj._encoding = encoding + obj.cached_script_texts = None + obj.cached_script_srcs = None + return obj + + def clone(self): + """Clone the current tree.""" + cdef myhtml_t* myhtml + cdef mystatus_t status + cdef myhtml_tree_t* html_tree + cdef myhtml_tree_node_t* node + cdef HTMLParser cls + + with nogil: + myhtml = myhtml_create() + status = myhtml_init(myhtml, MyHTML_OPTIONS_DEFAULT, 1, 0) + + if status != 0: + raise RuntimeError("Can't init MyHTML object.") + + with nogil: + html_tree = myhtml_tree_create() + status = myhtml_tree_init(html_tree, myhtml) + + if status != 0: + raise RuntimeError("Can't init MyHTML Tree object.") + + node = myhtml_node_clone_deep(html_tree, self.html_tree.node_html) + myhtml_tree_node_add_child(html_tree.document, node) + html_tree.node_html = node + + cls = HTMLParser.from_tree( + html_tree, + self.raw_html, + self.detect_encoding, + self.use_meta_tags, + self.decode_errors, + self._encoding + ) + return cls + + def __dealloc__(self): + cdef myhtml_t* myhtml + + if self.html_tree != NULL: + myhtml = self.html_tree.myhtml + myhtml_tree_destroy(self.html_tree) + self.html_tree = NULL # Prevent double-free + if myhtml != NULL: + myhtml_destroy(myhtml) + + def __repr__(self): + return '' % len(self.root.html) diff --git a/dist/HandoverSystem/_internal/selectolax/py.typed b/dist/HandoverSystem/_internal/selectolax/py.typed new file mode 100644 index 0000000..e69de29 diff --git a/dist/HandoverSystem/_internal/selectolax/utils.pxi b/dist/HandoverSystem/_internal/selectolax/utils.pxi new file mode 100644 index 0000000..37c1442 --- /dev/null +++ b/dist/HandoverSystem/_internal/selectolax/utils.pxi @@ -0,0 +1,117 @@ +from typing import Literal, Optional, Union, Type + +MAX_HTML_INPUT_SIZE = 250e+7 + +ParserCls = Union[Type["HTMLParser"], Type["LexborHTMLParser"]] +Parser = Union["HTMLParser", "LexborHTMLParser"] +FRAGMENT = Literal[ + "document", + "fragment", + "head", + "body", + "head_and_body", + "document_no_head", + "document_no_body", + "document_no_head_no_body", +] + + +def preprocess_input(html, decode_errors='ignore'): + if isinstance(html, (str, unicode)): + bytes_html = html.encode('UTF-8', errors=decode_errors) + elif isinstance(html, bytes): + bytes_html = html + else: + raise TypeError("Expected a string, but %s found" % type(html).__name__) + html_len = len(bytes_html) + if html_len > MAX_HTML_INPUT_SIZE: + raise ValueError("The specified HTML input is too large to be processed (%d bytes)" % html_len) + return bytes_html, html_len + + +def do_create_tag(tag: str, parser_cls: ParserCls): + if not tag: + raise ValueError("Tag name cannot be empty") + return do_parse_fragment(f"<{tag}>", parser_cls)[0] + + +def get_fragment_type( + html: str, + parser_cls: ParserCls, + tree: Optional[Parser] = None, +) -> FRAGMENT: + if not tree: + tree = parser_cls(html) + + import re + html_re = re.compile(r"`, ``, and `` tags + if they are missing. This function does not add these tags. + """ + html = html.strip() + tree = parser_cls(html) + frag_type = get_fragment_type(html, parser_cls, tree) + + if frag_type == "document": + return [tree.root] + if frag_type == "document_no_head": + tree.head.decompose(recursive=True) + return [tree.root] + if frag_type == "document_no_body": + tree.body.decompose(recursive=True) + return [tree.root] + if frag_type == "document_no_head_no_body": + tree.head.decompose(recursive=True) + tree.body.decompose(recursive=True) + return [tree.root] + elif frag_type == "head": + tree.body.decompose(recursive=True) + return [tree.head] + elif frag_type == "body": + tree.head.decompose(recursive=True) + return [tree.body] + elif frag_type == "head_and_body": + return [tree.head, tree.body] + else: + return [ + *tree.head.iter(include_text=True), + *tree.body.iter(include_text=True), + ] diff --git a/dist/HandoverSystem/_internal/setuptools/_vendor/jaraco/text/Lorem ipsum.txt b/dist/HandoverSystem/_internal/setuptools/_vendor/jaraco/text/Lorem ipsum.txt new file mode 100644 index 0000000..986f944 --- /dev/null +++ b/dist/HandoverSystem/_internal/setuptools/_vendor/jaraco/text/Lorem ipsum.txt @@ -0,0 +1,2 @@ +Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +Curabitur pretium tincidunt lacus. Nulla gravida orci a odio. Nullam varius, turpis et commodo pharetra, est eros bibendum elit, nec luctus magna felis sollicitudin mauris. Integer in mauris eu nibh euismod gravida. Duis ac tellus et risus vulputate vehicula. Donec lobortis risus a elit. Etiam tempor. Ut ullamcorper, ligula eu tempor congue, eros est euismod turpis, id tincidunt sapien risus a quam. Maecenas fermentum consequat mi. Donec fermentum. Pellentesque malesuada nulla a mi. Duis sapien sem, aliquet nec, commodo eget, consequat quis, neque. Aliquam faucibus, elit ut dictum aliquet, felis nisl adipiscing sapien, sed malesuada diam lacus eget erat. Cras mollis scelerisque nunc. Nullam arcu. Aliquam consequat. Curabitur augue lorem, dapibus quis, laoreet et, pretium ac, nisi. Aenean magna nisl, mollis quis, molestie eu, feugiat in, orci. In hac habitasse platea dictumst. diff --git a/dist/HandoverSystem/_internal/shiboken6/MSVCP140.dll b/dist/HandoverSystem/_internal/shiboken6/MSVCP140.dll new file mode 100644 index 0000000..f229049 Binary files /dev/null and b/dist/HandoverSystem/_internal/shiboken6/MSVCP140.dll differ diff --git a/dist/HandoverSystem/_internal/shiboken6/Shiboken.pyd b/dist/HandoverSystem/_internal/shiboken6/Shiboken.pyd new file mode 100644 index 0000000..664637e Binary files /dev/null and b/dist/HandoverSystem/_internal/shiboken6/Shiboken.pyd differ diff --git a/dist/HandoverSystem/_internal/shiboken6/VCRUNTIME140.dll b/dist/HandoverSystem/_internal/shiboken6/VCRUNTIME140.dll new file mode 100644 index 0000000..1782c45 Binary files /dev/null and b/dist/HandoverSystem/_internal/shiboken6/VCRUNTIME140.dll differ diff --git a/dist/HandoverSystem/_internal/shiboken6/VCRUNTIME140_1.dll b/dist/HandoverSystem/_internal/shiboken6/VCRUNTIME140_1.dll new file mode 100644 index 0000000..7dfc0a1 Binary files /dev/null and b/dist/HandoverSystem/_internal/shiboken6/VCRUNTIME140_1.dll differ diff --git a/dist/HandoverSystem/_internal/shiboken6/shiboken6.abi3.dll b/dist/HandoverSystem/_internal/shiboken6/shiboken6.abi3.dll new file mode 100644 index 0000000..d6f9c47 Binary files /dev/null and b/dist/HandoverSystem/_internal/shiboken6/shiboken6.abi3.dll differ diff --git a/dist/HandoverSystem/_internal/sqlite3.dll b/dist/HandoverSystem/_internal/sqlite3.dll new file mode 100644 index 0000000..4fab3f1 Binary files /dev/null and b/dist/HandoverSystem/_internal/sqlite3.dll differ diff --git a/dist/HandoverSystem/_internal/ucrtbase.dll b/dist/HandoverSystem/_internal/ucrtbase.dll new file mode 100644 index 0000000..0b41078 Binary files /dev/null and b/dist/HandoverSystem/_internal/ucrtbase.dll differ diff --git a/dist/HandoverSystem/_internal/unicodedata.pyd b/dist/HandoverSystem/_internal/unicodedata.pyd new file mode 100644 index 0000000..723ceb2 Binary files /dev/null and b/dist/HandoverSystem/_internal/unicodedata.pyd differ diff --git a/dist/HandoverSystem/_internal/win32/win32api.pyd b/dist/HandoverSystem/_internal/win32/win32api.pyd new file mode 100644 index 0000000..79ea601 Binary files /dev/null and b/dist/HandoverSystem/_internal/win32/win32api.pyd differ diff --git a/dist/HandoverSystem/_internal/win32/win32evtlog.pyd b/dist/HandoverSystem/_internal/win32/win32evtlog.pyd new file mode 100644 index 0000000..b22cb4e Binary files /dev/null and b/dist/HandoverSystem/_internal/win32/win32evtlog.pyd differ diff --git a/dist/HandoverSystem/_internal/win32/win32gui.pyd b/dist/HandoverSystem/_internal/win32/win32gui.pyd new file mode 100644 index 0000000..50582e4 Binary files /dev/null and b/dist/HandoverSystem/_internal/win32/win32gui.pyd differ diff --git a/dist/HandoverSystem/_internal/win32/win32pdh.pyd b/dist/HandoverSystem/_internal/win32/win32pdh.pyd new file mode 100644 index 0000000..e136554 Binary files /dev/null and b/dist/HandoverSystem/_internal/win32/win32pdh.pyd differ diff --git a/dist/HandoverSystem/_internal/yaml/_yaml.cp311-win_amd64.pyd b/dist/HandoverSystem/_internal/yaml/_yaml.cp311-win_amd64.pyd new file mode 100644 index 0000000..cff8724 Binary files /dev/null and b/dist/HandoverSystem/_internal/yaml/_yaml.cp311-win_amd64.pyd differ diff --git a/dist/HandoverSystem/_internal/zstandard/_cffi.cp311-win_amd64.pyd b/dist/HandoverSystem/_internal/zstandard/_cffi.cp311-win_amd64.pyd new file mode 100644 index 0000000..a66f575 Binary files /dev/null and b/dist/HandoverSystem/_internal/zstandard/_cffi.cp311-win_amd64.pyd differ diff --git a/dist/HandoverSystem/_internal/zstandard/backend_c.cp311-win_amd64.pyd b/dist/HandoverSystem/_internal/zstandard/backend_c.cp311-win_amd64.pyd new file mode 100644 index 0000000..a051b8e Binary files /dev/null and b/dist/HandoverSystem/_internal/zstandard/backend_c.cp311-win_amd64.pyd differ diff --git a/dist/HandoverSystem/updater.exe b/dist/HandoverSystem/updater.exe new file mode 100644 index 0000000..fb4f00e Binary files /dev/null and b/dist/HandoverSystem/updater.exe differ diff --git a/insert_trains.py b/insert_trains.py new file mode 100644 index 0000000..2d34676 --- /dev/null +++ b/insert_trains.py @@ -0,0 +1,53 @@ +import sys +import os +from datetime import date + +# Add project root to path +sys.path.append(os.path.abspath("d:/py_train/handover")) + +from database.common_db_manager import CommonDatabaseManager + +def insert_train_formations(): + db = CommonDatabaseManager() + + formations = [ + # 101B~105B, 노포배속, 현대로템1단계 + *[{"train_number": f"{i}B", "depot": "노포", "manufacturer": "현대로템1단계", + "total_cars": 40, "introduction_date": "2018-01-01", "is_new_train": 0} + for i in range(101, 106)], + + # 106B~111B, 노포배속, 현대로템2단계 + *[{"train_number": f"{i}B", "depot": "노포", "manufacturer": "현대로템2단계", + "total_cars": 48, "introduction_date": "2021-01-01", "is_new_train": 0} + for i in range(106, 112)], + + # 112B~145B, 노포배속, 우진3단계 + *[{"train_number": f"{i}B", "depot": "노포", "manufacturer": "우진3단계", + "total_cars": 200, "introduction_date": "2023-01-01", "is_new_train": 1} + for i in range(112, 146)], + + # 146A~151A, 신평배속, 다대 + *[{"train_number": f"{i}A", "depot": "신평", "manufacturer": "다대", + "total_cars": 48, "introduction_date": "2015-01-01", "is_new_train": 0} + for i in range(146, 152)], + ] + + for formation in formations: + query = """ + INSERT OR REPLACE INTO train_formations + (train_number, depot, manufacturer, introduction_date, is_new_train) + VALUES (?, ?, ?, ?, ?) + """ + db.execute(query, ( + formation["train_number"], + formation["depot"], + formation["manufacturer"], + formation["introduction_date"], + formation["is_new_train"] + )) + + db.commit() + print(f"✅ {len(formations)}개의 편성 정보가 입력되었습니다.") + +if __name__ == "__main__": + insert_train_formations() diff --git a/logs/app_20260105.log b/logs/app_20260105.log new file mode 100644 index 0000000..e69de29 diff --git a/logs/app_20260109.log b/logs/app_20260109.log new file mode 100644 index 0000000..e69de29 diff --git a/logs/app_20260113.log b/logs/app_20260113.log new file mode 100644 index 0000000..e69de29 diff --git a/logs/app_20260117.log b/logs/app_20260117.log new file mode 100644 index 0000000..e69de29 diff --git a/logs/app_20260118.log b/logs/app_20260118.log new file mode 100644 index 0000000..e69de29 diff --git a/logs/error_20260104.log b/logs/error_20260104.log new file mode 100644 index 0000000..e69de29 diff --git a/logs/error_20260105.log b/logs/error_20260105.log new file mode 100644 index 0000000..e69de29 diff --git a/logs/error_20260109.log b/logs/error_20260109.log new file mode 100644 index 0000000..e69de29 diff --git a/logs/error_20260113.log b/logs/error_20260113.log new file mode 100644 index 0000000..e69de29 diff --git a/logs/error_20260117.log b/logs/error_20260117.log new file mode 100644 index 0000000..e69de29 diff --git a/logs/error_20260118.log b/logs/error_20260118.log new file mode 100644 index 0000000..e69de29 diff --git a/main.py b/main.py new file mode 100644 index 0000000..6d8d389 --- /dev/null +++ b/main.py @@ -0,0 +1,128 @@ +# -*- coding: utf-8 -*- +""" +전동차 업무 인수인계 및 고장관리 프로그램 +메인 진입점 + +이 프로그램은 전동차 운용실의 24시간 교대 근무 환경에서 +업무 인수인계 및 고장관리를 위한 윈도우 데스크톱 애플리케이션입니다. + +Features: + - 지시, 고장, 작업, 기타 섹션 관리 + - 일상검수 편성 관리 + - 할일 목록 및 메모 + - 팀별 확인 체크 + - 편성별 고장 이력 조회 + +Author: 검수팀 +Version: 1.0.0 +""" + +import sys +from pathlib import Path + +# 프로젝트 루트를 Python 경로에 추가 +project_root = Path(__file__).parent +sys.path.insert(0, str(project_root)) + +from PySide6.QtWidgets import QApplication +from PySide6.QtGui import QFont + +from core.constants import APP_NAME, APP_VERSION, DATA_DIR, LOGS_DIR +from core.logger import setup_logger, get_logger, cleanup_old_logs +from core.config import ConfigManager + + +def setup_environment(): + """ + 애플리케이션 환경 설정 + + 필요한 디렉토리를 생성하고 로깅을 초기화합니다. + """ + # 필요한 디렉토리 생성 + DATA_DIR.mkdir(parents=True, exist_ok=True) + LOGS_DIR.mkdir(parents=True, exist_ok=True) + + # 로깅 설정 + setup_logger() + + # 오래된 로그 정리 + cleanup_old_logs() + + +def create_application() -> QApplication: + """ + Qt 애플리케이션 생성 및 설정 + + Returns: + QApplication 인스턴스 + """ + # High DPI 설정 (Qt6에서는 기본 활성화됨) + + # 애플리케이션 생성 + app = QApplication(sys.argv) + + # 애플리케이션 정보 설정 + app.setApplicationName(APP_NAME) + app.setApplicationVersion(APP_VERSION) + app.setOrganizationName("검수팀") + + # 기본 폰트 설정 + font = QFont("GmarketSans", 12) + app.setFont(font) + + return app + + +def main(): + """ + 메인 함수 + + 애플리케이션을 초기화하고 실행합니다. + """ + # 환경 설정 + setup_environment() + + # 로거 가져오기 + logger = get_logger(__name__) + logger.info("%s v%s 시작", APP_NAME, APP_VERSION) + + try: + # 설정 로드 + config_manager = ConfigManager() + logger.info("설정 로드 완료") + + # 데이터베이스 마이그레이션 실행 + try: + from database.migrations import run_migrations + if run_migrations(): + logger.info("데이터베이스 마이그레이션 완료") + else: + logger.warning("데이터베이스 마이그레이션 실패") + except Exception as e: + logger.warning(f"마이그레이션 실행 중 오류 발생: {e}") + + # Qt 애플리케이션 생성 + app = create_application() + logger.info("애플리케이션 생성 완료") + + # 메인 윈도우 생성 및 표시 + from ui.main_window import MainWindow + + window = MainWindow(config_manager) + window.show() + logger.info("메인 윈도우 표시") + + # 이벤트 루프 시작 + exit_code = app.exec() + + logger.info("%s 종료 (코드: %d)", APP_NAME, exit_code) + return exit_code + + except (RuntimeError, OSError) as e: + logger.critical("치명적 오류 발생: %s", e, exc_info=True) + return 1 + + +if __name__ == "__main__": + sys.exit(main()) + diff --git a/ori_data/Fault_Code_Table_rows.sql b/ori_data/Fault_Code_Table_rows.sql new file mode 100644 index 0000000..14b7dd6 --- /dev/null +++ b/ori_data/Fault_Code_Table_rows.sql @@ -0,0 +1,21185 @@ +INSERT INTO "public"."Fault_Code_Table" ("id", "f_code", "f_code_num", "f_name", "car_type", "f_class", "fault_name", "grade", "device", "fault_detail", "fault_reaction", "fault_detection", "fault_clear", "fault_action", "fault_schematics", "car_id", "created_at", "updated_at", "alias_name", "manufacturer") VALUES ('0017b1cf-777d-4332-bb20-efecabadded5', '0509', '509', 'DCU#3 3위(R2) - 출입문 잠김 리미트 스위치 고장', 'M2', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 “DLS Failure” 신호가 “1”이 되면 검지 +', '출입문 잠김 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('002c62ff-f851-4198-84d8-dab693d4b474', '0507', '507', 'DCU#7 3위(R2) - 초기화 실패', 'M4', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 “Calibration failure” 신호가 “1”이 되면 검지 +', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터 고장, 장애물감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우 +', '초기화 실패를 야기한 고장코드를 확인하여 조치 후, 재닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인한다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('00365cc7-5c7b-4c71-9816-383e47ecec10', '0506', '506', 'DCU#2 3위(R2)-출입문 입력 저전압', 'M1', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 "1"이 되면 검지.', '저전안 상태 (출입문 동작이 심하게 느려지거나 작동조차 안될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('0041cb7c-ff3a-4832-a5c9-446ed68f0514', '0515', '515', 'DCU#1 1위(R1) - 출입문 열림 시간 초과', 'Tc1', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 “Open time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 열림 동작시간이 6초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도한 후, ‘장애물로 인한 열림 실패' 고장과 함께 ‘Open time out' 고장이 함께 현시 +', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('004aeb4c-8821-4fe0-91b5-991c9b2d9b79', '0406', '406', 'SIV#1 - 인버터1 입력과전류(INV1OC)', 'Tc1', 'C', 'SIV-인버터1 입력 과전류(INV1OC)', 'C', 'SIV', '보조전원장치(SIV)의 RS485 데이터 중 SIV-TCMS SD TEXT4의 Bit4 “INV1OC” 신호가 “1”이 되면 검지 +', '1) TCMS 화면하단 또는 고장화면에 ‘인버터1 입력 과전류' 표시됨. +2) 보조전원장치(SIV)는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 보조전원장치 중고장이 발생됨. +5) 중고장이 발생되면 TCMS 일반화면에 보조전원장치 상태 붉은색으로 표기되며, 연장급전 됨.', '보조전원장치(SIV) 내부인버터1에서의전류가450A 이상일 경우 검지됨. +', '1) 경고장이 발생할 경우 보조전원장치(SIV) 자동 재기동에 의해 재기동 됨. +2) 중고장이 발생했을 경우 조치 완료 후 보조전원장치(SIV) 리셋으로 고장 소거됨.', '1) 상기 고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 보조전원장치(SIV) 고장기록을 수집하여 FC전압, 전류에 이상이 있는지 확인한다. +3) 보조전원장치(SIV) 내부 고전압부에 소손흔적이 있는지 확인한다. +4) FC에 연결된 부스바의 체결상태가 양호한지 확인한고, 부스바를 분리하여 FC의 Capacitance를 측정하여 이상이 없는지 확인한다. +5) 전압센서와 보조전원장치(SIV) 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +6) SEN 보드의 동작 상태를 시험기를 통해 확인한다. +7) 출력단 각상의 절연상태 및 각상과 접지 간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('004e9a91-8292-47cf-b13e-c1e459f373ae', '0101', '101', 'VVVF#3-인버터 중고장(INV CUT)', 'M2', 'A', 'VVVF-인버터중고장(INV CUT)', 'A', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT1의 Bit4 “INV CUT” 신호가 "1"이 되면 검지.', '1) TCMS 일반화면에 추진제어장치 상태 붉은색으로 표시됨. +2) 추진제어장치 중고장 상태인 동력차에 동력 손실됨. +3) TCMS 상태화면의 추진제어장치 화면에 HSCB, LB1,2 개방된것으로 표시됨.', '1) 추진제어장치의 경고장이 1분에 3회 이상누적또는 지속적으로 검지되어 중고장 발생함. +2) 장치에 중대한 소손 가능성이 있는 고장에 대해서는 1번 발생으로 중고장 발생함.', '동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) 소거조건 내용과 같이 조치 후 중고장 소거됨을 확인함. +2) TCMS 고장데이터 또는 추진제어장치 고장 데이터를 통해 중고장이 발생한 고장 내역 수집함. +3) 수집된 고장내역에 따라 조치 실시함.', null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('004f3d4c-edef-4567-9613-9ac8b0f440ec', '0512', '512', 'DCU#4 4위(L2) - 파라미터 로딩 실패', 'T1', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 “Paraneter error” 신호가 “1”이 되면 검지 +', 'Parametererror 현시(출입문은 정상작동 가능)', 'DCU 자체 내의 EEPROM으로부터 parameter데이터 로딩 실패 +', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('004fb262-864b-49b0-83b9-c58e0835f3e9', '0203', '203', 'BECU#1 - 전자제어밸브의 고장', 'Tc1', 'C', 'BECU-전자제어밸브의 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit2 “전자제어밸브의 고장” 신호가 “1”이 +되면 검지 +', '해당 차량 전자제어밸브의 고장검지 현시 및 해당 차량 제동제어불가', '해당 차량의 상용전자제어밸브가 작동하지 않음. +', '해당 차량의 상용전자제어밸브가 정상작동 시 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('00523a17-e1fc-4f03-9735-6356072d749e', '0706', '706', 'HVAC#6 - 냉난방장치1 증발기2 과부하', 'M3', 'C', 'HVAC-냉난방장치1 증발기2 과부하', 'C', 'HVAC', 'HVAC 냉방 작동 중 냉난방장치1 증발기 모터에 과부하 발생 +', 'UNIT1냉방 작동 불가', ' +1) 냉방 작동 중 UNIT1의 증발기 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CREF2와 연결된 THR6이 Trip 됨. +', 'UNIT1의 증발기모터의 과부하조건을 해소하여 정상 가능 상태로 만들고, THR6 및 마이콤 전원 리셋', '1) 냉난방 배전반의 점검커버를 열고, THR6의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR6의 전류 세팅값이 3A에 맞춰져 있는지 확인하여, 아닐 경우, (+) 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동시킨 후, THR6의 2차측 2, 4, 6 단자에서 각 단자 간 상간 전압이 AC 380V로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 증발기 단품 상태 에서 점검을 한다. +7) THR6의 2차측 2, 4, 6 단자에서 각 단자 간 권선저항이 모두 같은지 확인한다. (±10% 이하) (증발기 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT1의 증발기 모터의 결선을 해제한 후 4극 및 6극 모터의 권선저항을 확인 후, 문제가 있을 경우, 증발기 모터를 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR6 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('005a3d7d-b2a8-4240-86ed-919ef33757da', '0519', '519', 'DCU#3 5위(R3) - ZVR 신호 에러', 'M2', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 “ZVR signal error” 신호가 “1”이 되면 검지 +', '출입문이강제로 닫히게 되고, 열림은 불가능', ' +1) 차량 ZVR 신호가 없는 상태(차량 주행상태)에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함. +', '해당 출입문 ZVR 신호 수신', '1) 차량 이 주행중이라면, 차량 이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('005e3f5d-4f96-4ae9-8957-f013a50423f2', '0513', '513', 'DCU#5 1위(R1) - 모듈 상태체크 에러', 'T2', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 “Module check error” 신호가 “1”이 되면 검지 +', 'Modulecheckerror현시(출입문은 정상작동가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태 체크 기능에 이상이 생긴 경우 고장 발생 +', 'DCU의 ‘A' 모듈과 ‘B' 모듈 간, 상태 체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('007116d9-23e6-4a58-a8d5-f71c924853ae', '0155', '155', 'VVVF#6 - 역행/회생 이상검지(PBR)', 'M3', 'C', 'VVVF-역행/회생 이상 검지(PBR)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT31의 Bit4 “PBR” 신호가 “1”이 되면 검지 +', '1) TCMS 화면 하단 또는 고장화면에 ‘역행/회생 신호 이상 검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생함. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉은색으로 표기되며, HSCB, LB1, 2 개방되어 동력 손실 발생함.', '추진제어장치 입력되는 역행/제동신호가 동시에 입력될 경우 검지됨. +', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반 배전반의 VVVFIC nfb 재투입 또는 차량 배터리 전원 재투입', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 역행/제동신호에 이상이 있는지 확인한다. +3) 차량의 제어 회로 중 역행/제동 신호가 추진제어장치로 연결되는 경로에 이상이 없는지 확인 한다. +4) DIN 보드의 동작 상태를 시험기를 통해 확인한다. +5) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('00749090-d890-4df7-9b4e-edc5215031f0', '0217', '217', 'BECU#4-회생제동달성 비정상', 'T1', 'C', 'BECU-회생제동달성 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit0 “회생제동달성 비정상” 신호가 "1"이 되면 검지.', '해당 차량 회생제동달성 비정상 검지 현시 및 해당차량 정상적인 전공 교차제어 불가.', '해당 차량의 회생제동달성 신호가 정상범위를 벗어남(5.0~95.0%).', '해당 차량의 회생제동달성 신호가 정상범위일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. +소거되지 않을 경우 해당 차량 추진제어장치 리셋(CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('00a372c6-3037-41ea-858a-6b79cd4f5d01', '0209', '209', 'BECU#5-4축속도신호의 비정상', 'T2', 'C', 'BECU-4축속도신호의 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit0 “4축속도신호의 비정상” 신호가 "1"이 되면 검지.', '해당 차량 4축속도신호의 비정상 검지 현시 및 해당 차량 활주제어 불가.', '해당 차량의 4축 속도센서 고장 발생.', '해당 차량의 4축 속도센서가 정상적일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('00a9e880-1f97-4148-9e80-e73485d26bd3', '1414', '1414', 'BMS#1-', 'Tc1', '0', null, null, '0', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('00c37fe1-ffca-42ad-92cb-2ee42a972797', '0711', '711', 'HVAC#3-냉난방장치2 압력스위치1(DPS) 저압', 'M2', 'D', 'HVAC-냉난방장치2 압력스위치1(DPS) 저압', 'D', 'HVAC', '냉난방장치2 냉매 압력스위치1 저압 발생.', 'UNIT2 CYCLE1 냉방 기능 불가', 'UNIT2 DSP1측 냉매 압력이 3초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우', '냉매 압력이 정상 수치 2±0.5(kgf/cm2 이상으로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CREF4의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)을 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안되는 것을 확인한 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('00ddd39b-9ae5-461e-b48b-1052eb874b9f', '0871', '871', '실내카메라#1(SCAM) 고장(Car#7)', 'M4', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('00def30c-175b-4ebf-9697-a0ac99897cc8', '0014', '14', 'TU S/W 버전 불일치', 'Tc1', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('00e870cc-9c56-45f1-8c18-bbc06904b06b', '0013', '13', 'CU S/W 버전 불일치', 'Tc1', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('00eb0625-9dea-49c7-b222-998c5d0f9417', '0517', '517', 'DCU#5 1위(R1) - 출입문 장애물로 인한 열림 실패', 'T2', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Open failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘 상태로 대기', '도어열림 중 3회 장애물감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 열림 시, 장애물감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('00f49a72-f34a-49d3-a782-0d0a101ad2d3', '0502', '502', 'DCU#1 1위(R1)-출입문 장애물검지', 'Tc1', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('00fa7743-db7a-4aca-b6f6-53aca8079c42', '0007', '7', 'TU 통신고장(Car2)', 'M1', 'B', 'TU 통신고장(CAR2)', 'C', 'TCMS', 'M,T 차량의 단말장치(TU) 통신고장 +', ' +1) 해당 차호의 단말장치(TU)와의 통신불능시 화면에 현시. +2) TU 통신 고장시 해당호차의 VVVF, BECU, DCU, HVAC, FDU 등과의 통신도 불가. +(해당 차량의 출입문 열림/닫힘 정보도 현시 불가하므로 출입문 열림/닫힘 램프로 주의 운행) +3) 2호차(6호차) TU 통신 고장시 판토상승/하강 명령 전달 불가(단, 이미 상승된 판토는 상승 유지됨) +4) 4호차 TU 통신고장시, 연장급전 접촉기 출력이 불가 +', ' +1) CU에서 TU의 통신정보를 2초이상 수신받지 못할 경우 해당 고장 현시. +', ' +1) TU가 정상적으로 통신을 재개할 경우 소거됨. +', '1) TU 전원차단기 리셋(IFF->ON) 실시 +2) VPS보드의 전원 LED가 정상이라면, 멀티미터로 VPS 보드의 전원출력(5V)를 확인. +3) TU 상단의 커넥터 체결상태를 확인 +4) 상기 항목에 이상이 없을 경우 VARCM 보드를 교체한다.', null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('010375b7-7ff4-4ebf-9737-a727090b5cc9', '0502', '502', 'DCU#3 2위(L1) - 출입문 장애물검지', 'M2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('011e06c6-bf23-472f-8338-bf36566ddf04', '1202', '1202', 'FDU#5-감지기1 고장', 'T2', 'C', 'FDU-감지기1 고장', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 "Detector1 State” 신호가 "10"이 되면 검지.', '감지기 고장상태 현시(자동 소거 안됨)', '1) 감지기로부터 데이터 응답이 없는경우. +2) 감지기로부터 수신된 데이터의 CRC가 맞지 않는경우 +3) 감지기로부터 수신된 데이터의 ID가 송신 ID와 일치하지 않는경우', 'FDU 전원 리셋 후 감지기로부터 정상적으로 데이터가 수신된 경우', '1) FDU 전원 리셋 후 고장 소거 여부 확인 +2) 정상 동작중인 감지기와 위치 교환 후 FDU 전원 리셋 및 고장 상태 확인 +3) 동일한 감지기에서 고장 발생시 감지기 교체 +4) 동일한 위치에서 고장 발생시 감지기 라인 점검', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('01339fce-79c1-4777-8738-b1f2fa6bb9af', '0136', '136', 'VVVF#6 - OVT 전류센서 이상검지(OVCTD)', 'M3', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('0133b321-8ee0-45f9-9925-629505a4226c', '0748', '748', 'HVAC#2-전자접촉기 차량히터1(CRRHT) 고장', 'M1', 'C', 'HVAC-전자접촉기 차량히터1(CRRHT) 고장', 'C', 'HVAC', '객실 난방기 작동 중 CRRHT1 전자접촉기 고장 발생.', '객실 전난방 시 2/3난방만 작동', '객실 전난방 작동 중 2.5초 이상동안 CRRHT1 작동 feedback 신호가 수신되지 않는 경우', 'CRRHT1 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CRRHT1을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRRHT1과 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('013fd4ee-b36c-4b44-9925-0c47d04facbd', '0506', '506', 'DCU#6 5위(R3) - 출입문 입력 저전압', 'M3', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 “1”이 되면 검지 +', '저전압상태(출입문 동작이 심하게 느려지거나 작동조차 안 될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하 +', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('015ceedc-1c57-44a4-af05-04c2e8647ce7', '0151', '151', 'VVVF#3-통신이상검지(MONIA_ERR)', 'M2', 'C', 'VVVF-통신이상검지(MONIA_ERR)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT31의 Bit0 “MONIA_ERR” 신호가 "1"이 되면 검지.', null, 'TCMS와 VVVF간 통신이상 발생 시 고장검지.', 'TCMS와 VVVF간 정상통신 가능 시 소거됨.', '1) 추진제어장치(VVVF) 리셋 실시 후 통신고장 소거됨을 확인. +2) 통신고장 소거가 되지 않을 경우 추진제어장치 PUZ 보드 신품으로 교체후 통신고장 소거여부 확인. +3) 위 조건에도 고장이 소거되지 않을 경우, TCMS-추진제어장치간 RS485 통신케이블 연결상태 점검.', null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('017b87da-0c73-43e9-98b8-21d403c52c36', '0038', '38', '강제완해 스위치 취급', 'Tc2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('01823d0f-2877-41d2-935e-300cd9587a41', '0751', '751', 'HVAC#3 - 냉난방장치1 보조히터 과열', 'M2', 'C', 'HVAC-냉난방장치1 보조히터 과열', 'C', 'HVAC', 'HVAC1 보조난방기 작동 중 과열 발생 +', 'UNIT1보조난방기난방불가', '보조난방기 작동 중 1초 이상 동안 온도가 70도 이상으로 과온 센서 정상신호가 수신 되지 않는 경우 +', '1초 이상 동안 60도 미만으로 온도가 떨어져 과온 센서 정상신호가 수신되는 경우', '1) 보조난방기가 꺼진 상태에서도 문제 발생 시, 과온 센서를 교체한다. +2) 센서 교체 후에도 문제가 발생되면, 배선에 문제가 없는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('01976195-0f8b-4c54-94cd-b08f708aa6ad', '0519', '519', 'DCU#8 4위(L2)-ZVR 신호 에러', 'Tc2', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 "ZVR signal error” 신호가 "1"이 되면 검지.', '출입문이 강제로 닫히게 되고, 열림은 불가능', '1) 차량 ZVR 신호가 없는 상태 (차량 주행상태) 에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함.', '해당출입문 ZVR 신호 수신', '1) 차량이 주행중이라면, 차량이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('019ea393-dd96-41d8-9d6e-ec9bd060aad0', '0302', '302', 'ATC#1-EB 명령', 'Tc1', 'W', 'ATC-EB 명령', 'W', 'ATC', 'ATC의 RS485 데이터 중 ATC-TCMS SD TEXT12의 Bit0 “EB Command” 신호가 "1"이 되면 검지.', '1) MMI화면에 열차 EB체결 관련 메시지 현시 +2) MMI화면에 EB체결 경보음 출력 +3) 비상제동 체결', '1) 제한속도 초과 시, 과속조건(FSB)에서 3초 동안 일정 감속도(2.4km/h/s) 이하일 경우 +2) 노코드(02코드) 검지 시 +3) 열차 Rollback(방향제어기와 이동방향 다를경우) +4) No Motion Time Out(추진시, 10초이상 움직이지 않을 경우) +5) ATS STOP 신호 검지 시 +6) 열차 이동 시, 모드 전환 에러 +7) 열차 이동 시, 방향 제어기 스위치 전환 에러 +8) ATCATO 1,2계 동시 고장 발생 시 +9) FA/AUTO운전모드에서 PG3-2 검지시점 열차속도 25km/h 이상 +10) MCS운전모드에서 후진 2m이상 이동 시 +11) FA/AUTO운전모드에서 PG1 미검지 상태에서 PG2 검지 시', '열차 정지(영속도 검지) 및 마스콘 제동 취급 시', '열차 정지 및 마스콘제동 취급이 되었는지 확인한다.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('01e15ca2-11e0-4905-8cf0-63f82a5d9435', '0506', '506', 'DCU#3 6위(L3) - 출입문 입력 저전압', 'M2', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 “1”이 되면 검지 +', '저전압상태(출입문 동작이 심하게 느려지거나 작동조차 안 될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하 +', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('01e5f6ab-d258-4c6e-bf02-4798bb79505e', '0201', '201', 'BECU#1-덤프밸브고장(후미대차)', 'Tc1', 'C', 'BECU-덤프밸브고장(후미대차)', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit0 “덤프밸브고장(후미대차)” 신호가 "1"이 되면 검지.', '해당 차량 덤프밸브고장(후미대차) 검지 현시 및 해당 차량 활주제어 불가.', '해당 차량 후미대차의 덤프밸브가 작동하지 않음.', '해당 차량 후미대차의 덤프밸브가 정상 작동 시 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('0203b741-2be5-477a-bc5d-5cd7b73e00e2', '0519', '519', 'DCU#1 1위(R1) - ZVR 신호 에러', 'Tc1', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 “ZVR signal error” 신호가 “1”이 되면 검지 +', '출입문이강제로 닫히게 되고, 열림은 불가능', ' +1) 차량 ZVR 신호가 없는 상태(차량 주행상태)에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함. +', '해당 출입문 ZVR 신호 수신', '1) 차량 이 주행중이라면, 차량 이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('020a0cd4-6ee7-4ee7-a899-1ba5276bdaea', '0521', '521', 'DCU#2 3위(R2)-모듈 상태 이상', 'M1', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 "01"또는 "00"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('02142482-fa18-4a29-9398-b7cd0a66438d', '0514', '514', 'DCU#6 2위(L1)-출입문 닫힘 시간 초과', 'M3', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 "Close time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 닫힘 동작시간이 7초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도 한 후, '장애물로 인한 닫힘실패' 고장과 함께 'Close time out' 고장이 함께 현시', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('0217a63b-5f7a-4df0-a200-e96b4cf7ee93', '0502', '502', 'DCU#4 2위(L1)-출입문 장애물검지', 'T1', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('021bd80e-3a09-49d9-9200-1ce67f8a3a0d', '0232', '232', 'BC 코크(차하#2) 차단(Car8)', 'Tc2', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('021ecf57-33cc-4367-9f9f-c3aed8babe59', '0201', '201', 'BECU#6 - 덤프밸브 고장(후미대차)', 'M3', 'C', 'BECU-덤프밸브고장(후미대차)', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit0 “덤프밸브고장(후미대차)” 신호가 “1”이 +되면 검지 +', '해당 차량 덤프밸브 고장(후미대차)검지 현시 및 해당 차량 활주제어 불가', '해당 차량 후미대차의 덤프밸브가 작동하지 않음. +', '해당 차량 후미대차의 덤프밸브가 정상작동 시 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('0226f1f3-8add-4876-864f-a839838ac63f', '0506', '506', 'DCU#5 2위(L1) - 출입문 입력 저전압', 'T2', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 “1”이 되면 검지 +', '저전압상태(출입문 동작이 심하게 느려지거나 작동조차 안 될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하 +', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('02417c01-db2b-4522-9514-af23c73aa06e', '0509', '509', 'DCU#1 3위(R2)-출입문 잠김 리미트 스위치 고장', 'Tc1', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 "DLS Failure” 신호가 "1"이 되면 검지.', '출입문 잠김 상태 확인 불가', '1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('0248d1eb-f6f3-4649-89e0-dfdec71527c9', '0703', '703', 'HVAC#4-냉난방장치1 압축기2 과부하', 'T1', 'C', 'HVAC-냉난방장치1 압축기2 과부하', 'C', 'HVAC', 'HVAC 냉방작동 중 냉난방장치1 압축기2 또는 응축기2 모터에 과부하 발생.', '냉방 기능 저하(전냉방시 반냉방으로 작동)', '1) 냉방작동 중 UNIT1의 압축기2 또는 응축기2 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRCM2와 연결된 THR2가 Trip 됨.', 'UNIT1의 압축기2 또는 응축기2 모터의 과부하 조건을 해소하여 정상 가능 상태로 만들고, THR2 및 마이콤 전원 리셋', '1) 냉난방배전반의 점검커버를 열고, THR2의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR2의 전류 세팅값이 11.5A에 맞춰져 있는지 확인하여, 아닐 경우, 십자 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동 시킨 후, THR2의 2차측 2,4,6 단자에서 각 단자간 상간 전압이 AC 380V으로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 압축기 및 응축기 단품 상태에서 점검을 한다. +7) THR2의 2차측 2,4,6 단자에서 각 단자간 권선저항이 모두 같은지 확인한다. (±10% 이하) (압축기2 및 응축기2 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT1의 압축기1 또는 응축기1 모터의 결선을 해제한 후 각 부품의 권선저항을 확인 후, 문제가 있는 부품을 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR2 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('024f28ff-5671-493c-b762-0c6d905d114c', '1516', '1516', 'CU2 모듈고장 - AUX1(Car1)', 'Tc1', 'C', 'CU1, 2 모듈고장 - AUX1', 'C', 'TCMS', 'CU의 AUX1 PCB가 이 정상적으로 인식되지 않아 점검이 필요할 때 +', '1) CU1의 AUX1 PCB가 모듈 고장이 발생하면, CU2로 자동 절체됨. (CU2로 자동 절체되면 운행에는 지장이 없음) +2) CU2 자동절체 시 화면의 우측 상단 경고장글자 하단에 “B.SYS” 라는 표시가 나타남. +3) 자동절체 시 열차 운행에는 관계없음. +4) CU2의 AUX1 모듈고장 시는 CU1 정상동작시 운행에는 지장이 없음.', 'CU AUX1의 ID를 정상적으로 검출하지 못할 때 화면에 현시 +', 'CU AUX1의 ID를 정상적으로 검출하는 경우 소거됨.', '1) CU의 AUX1 PCB 교체 +2) 불량 해소가 되지 않을 경우, 순차적으로 MCPU, SCM, DIM PCB를 교체하여 정상여부 확인', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('025b7ed8-2d51-43ac-839f-f6a03c8ca296', '1407', '1407', 'BMS#1 - Cell 저전압(CUV, 2.75V 이하)', 'Tc1', 'D', 'BMS-Cell 저전압(CUV)', 'D', 'BMS', '해당 차량의 배터리 셀 전압이 2.98V 이하가 되면 검지 +', '차량 배터리셀 저전압 검지 후, 2.84V 이하이면 방전접촉기(DCK)가 차단된다.', '배터리셀 저전압(2.98V 이하) +', '배터리셀 전압 정상범위로 회복(3 ~ 4.21V)', '1) 배터리 NFB 상태 확인 +2) 이상이 없으면 차량 전체를 리셋한다. +3) 차량 리셋 후에도 동일고장이면 사령실과 연락하여 조치를 취한다. (외부 충전기 연결 또는 차량 지원)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('025e7c09-7c21-432d-9080-ed91c8ad2de4', '0238', '238', 'BECU#6-4축스키드신호', 'M3', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('02727df9-70fc-4c6d-b3d5-539664b191c5', '0700', '700', 'HVAC#3 통신고장', 'M2', 'C', 'HVAC-통신고장', 'C', 'HVAC', 'HVAC와 TCMS 간 RS485 통신고장이 검지되면 발생 +', '화면상 HVAC의 실내온도, 운전모드 등의 데이터가 반응하지 않음.', ' +1) 마이콤 전원 CB OFF +2) 통신연결 불량 +3) 해당 마이콤이 검수요원에 의해 firmware 업데이트 중인 경우 +', '해당 차량의 마이콤 및 CU/TU의전원이정상상태이고, 통신라인 연결 상태가 정상', '1) 냉난방 배전반의 점검커버를 열고, 마이콤이 정상적으로 켜져 있는지 확인한다. +2) 만약 마이콤 전원이 꺼져 있다면, 마이콤 DC 전원 CB 및 차량 배전반에 위치한 냉난방장치 CB가 정상적으로 켜져 있는지 확인한다. +3) 마이콤이 정상적으로 켜져 있는 데도 지속적으로 통신고장이 검지되면, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀 밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('027a0127-aa39-4584-bf63-66af7acc1055', '0745', '745', 'HVAC#8-전자접촉기 배기팬2(CRVF) 고장', 'Tc2', 'C', 'HVAC-전자접촉기 배기팬2(CRVF) 고장', 'C', 'HVAC', 'HVAC 환기 작동 중 CRVF2 전자접촉기 고장 발생.', '환기 시 차량 배기팬2 운전 불가능', '환기 작동 중 2.5초 이상동안 CRVF2 작동 feedback 신호가 수신되지 않는 경우', 'CRVF2 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CRVF2를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRVF2와 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('028125e6-4665-45b2-85bb-e07630168a30', '0519', '519', 'DCU#2 3위(R2) - ZVR 신호 에러', 'M1', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 “ZVR signal error” 신호가 “1”이 되면 검지 +', '출입문이강제로 닫히게 되고, 열림은 불가능', ' +1) 차량 ZVR 신호가 없는 상태(차량 주행상태)에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함. +', '해당 출입문 ZVR 신호 수신', '1) 차량 이 주행중이라면, 차량 이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('028981ff-9c63-42a5-aa9b-08180b8ddf6e', '0220', '220', 'BECU#5-공기제동 감쇄지령 비정상', 'T2', 'C', 'BECU-공기제동 감쇄지령 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit3 “공기제동 감쇄지령 비정상” 신호가 "1"이 되면 검지.', '해당 차량 공기제동 감쇄지령 비정상 검지 현시 및 해당차량 정상적인 전공 교차제어 불가.(부수차량 공기제동 감쇄 불가)', '해당 차량의 공기제동 감쇄지령 신호가 정상범위를 벗어남(5.0~95.0%).', '해당 차량의 공기제동 감쇄지령 신호가 정상범위일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. +소거되지 않을 경우 해당 차량 옆의 Pair 차량(구동차) BECU를 리셋(CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('02ab2a5b-857b-4ff4-b0ae-5adada260991', '0505', '505', 'DCU#2 4위(L2)-출입문 입력 고전압', 'M1', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 "1"이 되면 검지.', '고전압 상태. (그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('02bf6543-fc50-4942-a6db-8236cbf573a5', '0753', '753', 'HVAC#4-배기댐퍼 열림고장', 'T1', 'C', 'HVAC-배기댐퍼 열림고장', 'C', 'HVAC', '환기 시, 차량 배기댐퍼가 열려 있는 상태에서 배기댐퍼 열림 리미트 스위치가 작동되지 않음', '배기댐퍼 열림 고장 현시', '배기댐퍼를 열림으로 제어했으나 열림 리미트 스위치 입력이 없을 경우', '배기댐퍼 열림 상태에서 리미트 스위치 입력이 정상적으로 입력', '1) 배기댐퍼가 열린 상태에서 열림 리미트 스위치가 정상적으로 작동되었는지 확인한다. +2) 열림 리미트 스위치가 정상작동 되었음에도 문제가 발생될 경우, 스위치를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('02c205be-dee8-43f4-863f-e2f38c734eeb', '0501', '501', 'DCU#2 2위(L1)-출입문 차단', 'M1', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('02e351d6-8b78-4813-85bf-33996078a7af', '0505', '505', 'DCU#3 1위(R1)-출입문 입력 고전압', 'M2', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 "1"이 되면 검지.', '고전압 상태. (그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('02e53b85-4ded-4192-9b1e-8d7d10273d0c', '1202', '1202', 'FDU#2 - 감지기1 고장', 'M1', 'C', 'FDU-감지기1 고장 (Car1~8)', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 “Detector1 State” 신호가 “10”이 되면 검지 +', '감지기고장상태현시(자동소거 안 됨)', ' +1) 감지기로부터 데이터 응답이 없는 경우 +2) 감지기로부터 수신된 데이터의 CRC가 맞지 않는 경우 +3) 감지기로부터 수신된 데이터의 ID가 송신 ID와 일치하지 않는 경우 +', 'FDU 전원 리셋 후 감지기로부터 정상적으로 데이터가 수신된 경우', '1) FDU 전원 리셋 후 고장 소거 여부 확인 +2) 정상동작중인 감지기와 위치 교환 후 FDU 전원 리셋 및 고장 상태 확인 +3) 동일한 감지기에서 고장 발생 시 감지기 교체 +4) 동일한 위치에서 고장 발생 시 감지기 라인 점검', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('02e5e5ae-d83c-4bda-abf7-3de37104fb33', '0506', '506', 'DCU#2 1위(R1) - 출입문 입력 저전압', 'M1', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 “1”이 되면 검지 +', '저전압상태(출입문 동작이 심하게 느려지거나 작동조차 안 될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하 +', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('0302f24f-2006-43b1-89a4-c702efafb18b', '0011', '11', 'TU 통신고장(Car6)', 'M3', 'B', 'TU 통신고장(CAR6)', 'C', 'TCMS', 'M,T 차량의 단말장치(TU) 통신고장', '1) 해당 차호의 단말장치(TU)와의 통신불능시 화면에 현시. +2) TU 통신 고장시 해당호차의 VVVF, BECU, DCU, HVAC, FDU 등과의 통신도 불가. +(해당 차량의 출입문 열림/닫힘 정보도 현시 불가하므로 출입문 열림/닫힘 램프로 주의 운행) +3) 2호차(6호차) TU 통신 고장시 판토상승/하강 명령 전달 불가(단, 이미 상승된 판토는 상승 유지됨) +4) 4호차 TU 통신고장시, 연장급전 접촉기 출력이 불가', '1) CU에서 TU의 통신정보를 2초이상 수신받지 못할 경우 해당 고장 현시.', '1) TU가 정상적으로 통신을 재개할 경우 소거됨.', '1) TU 전원차단기 리셋(IFF->ON) 실시 +2) VPS보드의 전원 LED가 정상이라면, 멀티미터로 VPS 보드의 전원출력(5V)를 확인. +3) TU 상단의 커넥터 체결상태를 확인 +4) 상기 항목에 이상이 없을 경우 VARCM 보드를 교체한다.', null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('030af97f-3661-4df6-a8a4-7f8e098af668', '0725', '725', 'HVAC#3-냉방시험 불가능', 'M2', 'C', 'HVAC-냉방시험 불가능', 'C', 'HVAC', '운전실 TCMS에서 냉방시험 작동을 할 때, 냉방운전이 불가능한 경우 발생.', '냉방 시험 운전 불가능', '실내 또는 실외 온도가 10도 미만일 경우, (환절기 또는 겨울철에 냉방 가동시 시스템 보호를 위한 온도조건)', '실내 또는 실외 온도가 10도 이상일 때, 냉방시험 작동', '1) TCMS 화면에서 실내 또는 실외 온도가 10도 미만인지 확인한다. +2) 실내 및 실외 온도가 10도 이상인대도 냉방 가동이 되지 않을 시, TCMS-마이콤 간 통신불량이 있는지 확인하고 조치한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('03190eaa-62ef-47dd-bf7b-a7aef7ed254c', '1504', '1504', '냉방장치용 AC 회로차단기 차단(Car6)', 'M3', 'W', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('031e99c0-1b0e-40eb-b613-6c1ce9d0f8ad', '0514', '514', 'DCU#5 6위(L3)-출입문 닫힘 시간 초과', 'T2', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 "Close time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 닫힘 동작시간이 7초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도 한 후, '장애물로 인한 닫힘실패' 고장과 함께 'Close time out' 고장이 함께 현시', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('031f09fd-9713-45cd-8815-8a7bd25290e6', '1205', '1205', 'FDU#7-감지기3 화재감지', 'M4', 'W', 'FDU-감지기3 화재감지', 'W', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 "Detector1 State” 신호가 "11"이 되면 검지.', '화재상태 현시(자동 소거 안됨)', '하기 2가지 조건을 모두 만족하여야 화재신호가 출력 됨(연동모드 동작). +1) 이웃한(앞 혹은 뒤에 위치한) 감지기 중 하나의 감지기라도 주의 혹은 화재상태에 있어야 함. +2) Detector1(해당 감지기)에서 측정된 연기농도가 15% 이상이거나 온도가 65℃ 이상인 경우', '1) FDU의 복귀버튼 조작시 +2) FDU 전원 리셋시', '1) 해당 감지기 위치의 화재 발생 여부 확인 +2) 화재 오 감지일경우 FDU의 복귀버튼 취급 +3) 오감지일경우 감지기의 청소주기 확인(내부 먼지 제거)', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('03351244-1872-4ae7-a1e5-94ea2b938feb', '1200', '1200', 'FDU#5 통신고장', 'T2', 'B', 'FDU 통신고장', 'B', 'FDU', 'FDU와 TCMS 간 RS485 통신고장이 검지되면 발생 +', '화면상 FDU의 화재검지신호 등의 데이터가 반응하지 않음.', 'FDU 통신고장 또는 통신케이블문제 +', 'TCMSSDR 신호에 의해 FDU로부터 SD 신호가 정상 수신된 경우', '1) FDU 및 TCMS의 전원을 리셋하여 소거여부 확인 +2) 통신 고장이 발생하지 않은 다른 차량의 수신기와 교체하여 소거 여부 확인(고장이 수신기를 따라가는지 확인) +3) TCMS와 FDU간의 통신계통 점검 및 FDU NFB 점검 +4) 문제가 지속될 경우, 수신기 교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('0343c984-a8dc-4635-b51a-ff7a6bcebc45', '0319', '319', 'ATC#8-', 'Tc2', '0', null, null, '0', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('0356bf07-8592-48da-b061-89aa0028c9c9', '0804', '804', '측면제어기(SOB) 매립형 고장(Car#1)', 'Tc1', 'C', '통합방송표시기-측면제어기(SOB) 매립형 고장', 'C', 'AVC', '통합방송표시기의 E-NET 데이터 중 통합방송표시기-TCMS SD TEXT7의 Bit2 “SOB IN 고장” 신호가 +“1”이 되면 검지 +', '고장장치 통신불량으로 방송기능불능', '마스터통합방송제어기에 주기적(2초) TCP 응답이 없을 경우 통신불량으로 판단 +', '마스터통합방송제어기에 TCP 응답재개', '관련 CB(방송/표시기/CCTV 전원공급장치1, CBPAU# +1) 리셋하고 통신라인 및 상태점검 관련도면 :', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('0359cd96-6d40-40d6-940b-e6f86b36373e', '0145', '145', 'VVVF#7 - 과온검지2(THDH)', 'M4', 'C', 'VVVF-Stack 과온검지2(THDH)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT30의 Bit2 “THDH” 신호가 “1”이 되면 검지 +', '1) TCMS 화면 하단 또는 고장화면에 ‘스택과온검지2' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동이 되지 않으며 중고장으로 처리됨. +3) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉은색으로 표기되며, HSCB, LB1, 2 개방되어 동력 손실 발생함.', '추진제어장치 냉각기의 온도가 105도 이상인 조건에서 검지 +', '추진제어장치 리셋으로 고장 소거됨.', '1) 상기고장이 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 냉각기의 손상이 없는지 확인한다. +3) 추진제어장치 내부에 IPM에 손상이 없는지 확인한다. +4) 인버터 유니트 내부에 온도센서 및 결선에 이상이 없는지 확인한다. +5) DIN 보드의 동작 상태를 시험기를 통해 확인한다. +6) IPM 전원공급기의 전원연결 상태 또는 광케이블의 연결 상태와 배선상태를 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지 간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('036049d6-b56a-44b5-827f-db9b67ef5115', '0909', '909', '비상인터폰 동작(Car#8-2)', 'Tc2', 'W', null, null, 'RADIO', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('03706dbb-a10e-40a0-8338-8bdac129d410', '0502', '502', 'DCU#2 5위(R3)-출입문 장애물검지', 'M1', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('037427de-1a58-4806-b6bc-a47d6986cc5d', '0519', '519', 'DCU#8 4위(L2) - ZVR 신호 에러', 'Tc2', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 “ZVR signal error” 신호가 “1”이 되면 검지 +', '출입문이강제로 닫히게 되고, 열림은 불가능', ' +1) 차량 ZVR 신호가 없는 상태(차량 주행상태)에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함. +', '해당 출입문 ZVR 신호 수신', '1) 차량 이 주행중이라면, 차량 이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('03a74186-7923-4b98-ac69-c63ff50789dd', '0502', '502', 'DCU#7 6위(L3)-출입문 장애물검지', 'M4', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('03c60c94-3e8d-4c05-a0cc-3dafc3f6cb7e', '0137', '137', 'VVVF#2-전동기 과전류 검지(MMOCD)', 'M1', 'C', 'VVVF-전동기 과전류 검지(MMOCD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT29의 Bit2 “MMOCD” 신호가 "1"이 되면 검지.', null, '1) 견인전동기의 입력전류가 800A이상일 때 경고장 발생. +2) 1분 이내 3회 발생 시 중고장 발생.', '1) 경고장 +역행 고장검지 2초 후 자동 재기동 제동 제동 OFF시 고장 소거 +2) 중고장 +동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 견인전동기로 출력되는 3상의 전류치 확인함. +3) 특정상의 전류치가 비정상적일 경우 특정상에 해당되는 IGBT, 전류센서, 모터결선을 확인한다. +4) 전류센서와 추진제어장치의 PWM 보드에 연결되는 저전압 배선상태를 확인한다. +5) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +6) 추진제어장치 시험기를 이용하여 PWM 보드의 이상여부를 확인한다. +7) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('03c8d9cd-f0d0-4ddc-af7a-df694930627c', '0093', '93', '화재검지기 고장(Car8)', 'Tc2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('03d5e8e8-2aa4-4e6e-a8b1-c8315f748779', '0752', '752', 'HVAC#1-배기댐퍼 닫힘고장', 'Tc1', 'C', 'HVAC-배기댐퍼 닫힘고장', 'C', 'HVAC', '차량 배기댐퍼가 닫혀있는 상태에서 배기댐퍼 닫힘 리미트 스위치가 작동되지 않음', '배기댐퍼 닫힘 고장 현시', '배기댐퍼를 닫힘으로 제어했으나 닫힘 리미트 스위치 입력이 없을 경우', '배기댐퍼 닫힘 상태에서 리미트 스위치 입력이 정상적으로 입력', '1) 배기댐퍼가 닫힌 상태에서 닫힘 리미트 스위치가 정상적으로 작동되었는지 확인한다. +2) 닫힘 리미트 스위치가 정상작동 되었음에도 문제가 발생될 경우, 스위치를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('03e2d0c6-0b63-4cf4-8dad-db2e53427edd', '0705', '705', 'HVAC#4 - 냉난방장치2 증발기2 과부하', 'T1', 'C', 'HVAC-냉난방장치2 증발기2 과부하', 'C', 'HVAC', 'HVAC 냉방 작동 중 냉난방장치2 증발기 모터에 과부하 발생 +', 'UNIT2냉방기능불가', ' +1) 냉방 작동 중 UNIT2의 증발기 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CREF4와 연결된 THR8이 Trip 됨. +', 'UNIT2의 증발기모터의 과부하조건을 해소하여 정상 가능 상태로 만들고, THR8 및 마이콤 전원 리셋', '1) 냉난방 배전반의 점검커버를 열고, THR8의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR8의 전류 세팅값이 3A에 맞춰져 있는지 확인하여, 아닐 경우, (+) 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동시킨 후, THR8의 2차측 2, 4, 6 단자에서 각 단자 간 상간 전압이 AC 380V로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 증발기 단품 상태에서 점검을 한다. +7) THR8의 2차측 2, 4, 6 단자에서 각 단자 간 권선저항이 모두 같은지 확인한다. (±10% 이하) (증발기 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT2의 증발기 모터의 결선을 해제한 후 4극 및 6극 모터의 권선저항을 확인 후, 문제가 있을 경우, 증발기 모터를 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR8 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('03e8c35b-c5df-4748-bb18-f66a0938f78f', '0503', '503', 'DCU#5 6위(L3)-출입문 내부비상핸들 취급(EED)', 'T2', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('03f05079-3ab8-4d42-8f4f-1856ecc95884', '0111', '111', 'VVVF-검출기 전원이상검지(SPSF) (Car6)', 'M3', 'C', 'VVVF-검출기 전원이상검지(SPSF)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT31의 Bit6 “SPSF” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 '검출기 전원이상검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치 제어기에 SPW 보드에서 출력하는 센서 전원에 이상이 발생할 경우.', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반배전반의 VVVFIC nfb 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) SPW 보드의 LED 상태를 확인한다. LED가 소등되어 있거나 특정LED의 상태가 이상할 경우 SPW 보드를 교환한다. +3) SPW-SEN 보드로 연결되는 배선에 이상이 없는지 확인한다. +4) SEN 보드의 동작상태를 시험기를 통해 확인한다. +5) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.656536+00', null, '다대48량(2015)', 'Rotem'), ('03fd53ec-b650-4458-bc9d-4d3664391660', '0209', '209', 'BECU#3 - 4축 속도신호의 비정상', 'M2', 'C', 'BECU-4축속도신호의 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit0 “4축속도신호의 비정상” 신호가 “1”이 +되면 검지 +', '해당 차량 4축속도신호의 비정상 검지 현시 및 해당 차량 활주제어불가', '해당 차량의 4축속도센서 고장 발생 +', '해당 차량의 4축속도센서가 정상적일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('03ff6f90-49bb-4975-be84-55a2040f4203', '0721', '721', 'HVAC#6 - 냉난방장치2 압력스위치2(DPS) 냉매부족', 'M3', 'C', 'HVAC-냉난방장치2 압력스위치2(DPS) 냉매부족', 'C', 'HVAC', '냉난방장치2 냉매 압력스위치2 저압 발생 +', 'UNIT2CYCLE2 냉방 기능 불가', 'UNIT2DSP2측 냉매압력이 30초 이상0.5±0.3(kgf/cm2) 이하로 떨어지는 경우 +', '냉매압력이 정상수치 2±0.5(kgf/cm2) 이상 유지하도록 하고, 마이콤전원을 리셋', '1) 배전반 점검 커버를 열고 마이콤 전원을 리셋한 후, 냉방 가동 시, CREF4의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)을 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설 여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안 되는 것을 확인한 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('040063a0-dfa5-4dc2-8275-3daea3457e50', '0722', '722', 'HVAC#7 - 냉난방장치2 압력스위치1(DPS) 냉매부족', 'M4', 'C', 'HVAC-냉난방장치2 압력스위치1(DPS) 냉매부족', 'C', 'HVAC', '냉난방장치2 냉매 압력스위치1 저압 발생 +', 'UNIT2CYCLE1냉방 기능 불가', 'UNIT2DSP1측 냉매압력이 30초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우 +', '냉매압력이 정상수치 2±0.5(kgf/cm2) 이상유지하도록 하고, 마이콤전원을 리셋', '1) 배전반 점검 커버를 열고 마이콤 전원을 리셋한 후, 냉방 가동 시, CREF4의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)를 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설 여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안 되는 것을 확인한 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('0405a6e9-e799-4ad0-9667-1631fb72a8a7', '0510', '510', 'DCU#8 1위(R1)-출입문 닫힘 리미트 스위치1 고장', 'Tc2', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 "DCS1 Failure(Leftt)” 신호가 "1"이 되면 검지.', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('0415f37f-b96a-445e-a7d4-0aff921255ee', '0508', '508', 'DCU#7 1위(R1)-출입문 모터/인코더 고장', 'M4', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 "Motor / Encoder failure” 신호가 "1"이 되면 검지.', '출입문 정상동작 불가', '1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우 (인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터 / 인코더 회로가 손상된 경우', '모터/인코더 및 DCU가 정상상태이고, 전기적 연결상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있느지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. +★ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. + +1. DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. +2. DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) +3. DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('041db02e-07ae-4587-9207-0986905f78e1', '0084', '84', '화재검지(Car7)', 'M4', 'W', null, null, 'FDU', null, null, null, null, null, null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('041dde2d-df10-408c-8fe4-6a9c790cd16a', '0748', '748', 'HVAC#6-전자접촉기 차량히터1(CRRHT) 고장', 'M3', 'C', 'HVAC-전자접촉기 차량히터1(CRRHT) 고장', 'C', 'HVAC', '객실 난방기 작동 중 CRRHT1 전자접촉기 고장 발생.', '객실 전난방 시 2/3난방만 작동', '객실 전난방 작동 중 2.5초 이상동안 CRRHT1 작동 feedback 신호가 수신되지 않는 경우', 'CRRHT1 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CRRHT1을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRRHT1과 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('041eb4e3-4dc2-4088-bd1e-346553943cdc', '0097', '97', 'PWM 엔코더#2 고장(Car8)', 'Tc2', 'B', 'PWM 엔코더#2 고장 (TC8)', 'B', '기타', '차량으로부터 PWM ENCODER#1(#2) FAULT 신호 미입력 시 +', '1) 엔코더 1계 PWM 출력 고장 시 1계 고장에 해당되는 신호 출력 +2) 엔코더 2계로 자동 절체 +3) 엔코더 2계 PWM 출력 고장 시 1계, 2계 고장 모두 출력 +4) 엔코더 PWM 출력 신호 없음', '1) 엔코더 1계 PWM 출력 신호 이상 시 +2) 엔코더 2계 PWM 출력 신호 이상 시 +3) 엔코더 1계, 2계 PWM 출력 신호 이상 시 +4) 엔코더 수동절체버튼 3초 이상 조작 시 +', '1) 엔코더의 전원 차단 후 재투입하여 소거되는지 확인 +2) 수동절체버튼의 조작으로 인한 고장 출력 또한 전원 재투입으로 소거함', '1) 엔코더의 전원 차단 후 재투입하여 소거되지 않을 시 정상품으로 교체하여 정상동작 확인 +2) 교체된 고장품의 고장원인 분석 회로 도면 : REC10100DX0', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('045c866e-904b-44ca-872c-c52ed20f8aa4', '0239', '239', 'BECU#3-3축스키드신호', 'M2', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('04656aeb-a964-4cf1-8ce8-725cbace877f', '0161', '161', 'VVVF#6-통합제어장치 이상검지(CPUWDTD)', 'M3', 'C', 'VVVF-마이컴이상(TCU)(CPUWDTD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT32의 Bit2 “CPUWDTD” 신호가 "1"이 되면 검지.', null, '통합제어기 내 CPU고장에 의한 Watch Dog Timer 카운터 정지시 고장검지.', '동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) 판토 하강상태에서 인버터 재 기동 후 해당 고장 재발여부를 확인한다. +2) 추진제어장치 시험기를 이용하여 TCU(통합제어장치)의 이상여부를 확인한다. +3) 상기 점검부에 이상이 있는 경우 TCU(통합제어장치)를 교체한다.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('04670ecb-ef18-4bff-ae8e-d750861a716e', '0520', '520', 'DCU#2 4위(L2)-이중계 절체 동작', 'M1', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 "Module switchover' 신호가 "1"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.392739+00', null, '로템40량(2018)-1단계', 'Rotem'), ('046d0e91-89e4-4fc0-8e8d-aed6bb04dbaf', '0007', '7', 'TU 통신고장(Car2)', 'M1', 'B', 'TU 통신고장(Car2)', 'C', 'TCMS', 'M, T 차량의 차량제어장치(TU) 통신고장 +', '1) 해당 차호의 차량제어장치(TU)와의 통신불능 시 화면에 현시 +2) TU 통신 고장 시 해당호차의 VVVF, BECU, DCU, HVAC, FDU 등과의 통신도 불가 +(해당 차량의 출입문 열림/닫힘 정보도 현시 불가하므로 출입문 열림/닫힘 램프로 주의 운행) +3) 2호차(6호차) TU 통신 고장 시 판토상승/하강 명령 전달 불가(단, 이미 상승된 판토는 상승 유지됨.) +4) 4호차 TU 통신고장 시, 연장급전접촉기 출력이 불가', 'CU에서 TU의 통신정보를 약 3초 이상 수신 받지 못할 경우 해당 고장 현시 +', 'TU가 정상적으로 통신을 재개할 경우 소거됨.', '1) TU 전원차단기 리셋(OFF → ON) 실시 +2) SCM 보드의 전원 LED가 정상이라면, 멀티미터로 AVR 보드의 전원출력(5V)을 확인 +3) TU 상단의 커넥터 체결상태를 확인 +4) 상기 항목에 이상이 없을 경우 SCM 보드를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('04773ab8-0bc0-4a5b-9d2c-4e4bcab506ee', '0727', '727', 'HVAC#8 - 배기팬1 과부하', 'Tc2', 'C', 'HVAC-배기팬1 과부하', 'C', 'HVAC', 'HVAC 환기작동 중 차량 배기팬1 모터에 과부하 발생 +', '환기 시 차량 배기팬2 운전 불가능', ' +1) 냉방 작동 중 챠량 배기팬1 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRVF1와 연결된 THR9가 Trip 됨. +', '차량 배기팬1 모터의 과부하조건을 해소하여 정상 가능 상태로 만들고, THR9 및 마이콤 전원 리셋', '1) 냉난방 배전반의 점검커버를 열고, THR9의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR9의 전류 세팅값이 2.5A에 맞춰져 있는지 확인하여, 아닐 경우, (+) 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동시킨 후, THR9의 2차측 2, 4 단자와 6 단자 사이의 전압이 DC 100V로 정상 측정 되는지 확인한다. +5) 만약 전압이 측정되지 않을 시, 전원이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, THR9 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('04843961-a26b-4adb-8ae6-42e34a1de489', '0512', '512', 'DCU#6 5위(R3) - 파라미터 로딩 실패', 'M3', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 “Paraneter error” 신호가 “1”이 되면 검지 +', 'Parametererror 현시(출입문은 정상작동 가능)', 'DCU 자체 내의 EEPROM으로부터 parameter데이터 로딩 실패 +', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('04989209-5106-4942-9748-32b54c6bcb8c', '1505', '1505', '기타장치용 AC 회로차단기 차단(Car2)', 'M1', 'W', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('049f89b0-f33a-42b6-9afc-e32cf3894646', '0503', '503', 'DCU#7 2위(L1)-출입문 내부비상핸들 취급(EED)', 'M4', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('04b06f42-5732-42bc-8950-34f182bdc136', '0323', '323', 'ATC#8 - 역코드 오류', 'Tc2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('04c881f9-ff5c-49db-9019-06a9b449849a', '0241', '241', 'BECU#3 - 1축 스키드신호', 'M2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('04d43eb6-43dc-4691-b5d7-c31ba253fa53', '0518', '518', 'DCU#3 2위(L1) - 출입문 Enable 신호 에러', 'M2', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 “Enable signal error” 신호가 “1”이 되면 검지 +', 'DCU 출입문Enable신호에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드 시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을 때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드 시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입 상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호 장치로부터의 출입문 열림 명령 신호) 취급 시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함. +', '해당 출입문 enable 신호수신', '1) AUTO/MCS 모드 시에는 YARD 모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인 한다. (YARD/FMC 모드 시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('04dcfd6c-0328-4e57-ba7e-982dbc787942', '0520', '520', 'DCU#5 2위(L1)-이중계 절체 동작', 'T2', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 "Module switchover' 신호가 "1"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.392739+00', null, '로템40량(2018)-1단계', 'Rotem'), ('04ed6e6f-b330-489d-831f-90838c07a109', '0144', '144', 'VVVF#3 - HSCB 트립검지(HBT)', 'M2', 'B', 'VVVF-HSCB 트립검지(HBT)', 'B', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT30의 Bit1 “HBT” 신호가 “1”이 되면 검지 +', '1) TCMS 화면 하단 또는 고장화면에 ‘HSCB 자기트립검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동이 되지 않으며 중고장으로 처리됨. +3) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉은색으로 표기되며, HSCB, LB1, 2 개방되어 동력 손실 발생함.', '추진제어장치 입력전류가 1,500A 이상인 조건 +', '추진제어장치 리셋으로 고장 소거됨.', '1) 상기고장이 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 고장기록의 FC 전압 및 입력전류 확인 +3) 추진제어장치 내부에 접지흔적 확인 및 고압 회로 점검 +4) 전류/전압 센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작 상태를 시험기를 통해 확인한다. +6) IPM 전원공급기의 전원연결 상태 또는 광케이블의 연결 상태와 배선상태를 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지 간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('04f63ed4-d57f-482c-a006-af583085646d', '1203', '1203', 'FDU#6 - 감지기2 화재감지', 'M3', 'W', 'FDU-감지기2 화재감지 (Car1~8)', 'W', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 “Detector1 State” 신호가 “11”이 되면 검지 +', '화재상태현시(자동소거 안 됨.)', '하기 2가지 조건을 모두 만족하여야 화재신호가 출력 됨. (연동모드 동작) +1) 이웃한(앞 혹은 뒤에 위치한) 감지기 중 하나의 감지기라도 주의 혹은 화재상태에 있어야 함. +2) Detector1(해당 감지기)에서 측정된 연기농도가 15% 이상이거나 온도가 65℃ 이상인 경우 +', '1) FDU의 복귀버튼 조작 시 +2) FDU 전원 리셋 시', '1) 해당 감지기 위치의 화재 발생 여부 확인 +2) 화재 오감지일 경우 FDU의 복귀버튼 취급 +3) 오감지일 경우 감지기의 청소주기 확인(내부 먼지 제거)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('050731cb-03b0-4db9-8e6f-86e62a6f87c5', '1207', '1207', 'FDU#8-감지기4 화재감지', 'Tc2', 'W', 'FDU-감지기4 화재감지', 'W', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 "Detector1 State” 신호가 "11"이 되면 검지.', '화재상태 현시(자동 소거 안됨)', '하기 2가지 조건을 모두 만족하여야 화재신호가 출력 됨(연동모드 동작). +1) 이웃한(앞 혹은 뒤에 위치한) 감지기 중 하나의 감지기라도 주의 혹은 화재상태에 있어야 함. +2) Detector1(해당 감지기)에서 측정된 연기농도가 15% 이상이거나 온도가 65℃ 이상인 경우', '1) FDU의 복귀버튼 조작시 +2) FDU 전원 리셋시', '1) 해당 감지기 위치의 화재 발생 여부 확인 +2) 화재 오 감지일경우 FDU의 복귀버튼 취급 +3) 오감지일경우 감지기의 청소주기 확인(내부 먼지 제거)', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('051c957e-7631-43e0-9bfe-e46c0c465c6e', '0873', '873', '출력증폭기#1(AMP) 고장(Car#7)', 'M4', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('0521506e-3152-455d-a2cf-6779bd9a6ab4', '0103', '103', 'VVVF#3 - 추진차단(P BLOCK)', 'M2', 'D', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('052d0ff3-a214-4ab6-99a4-98e9326bb527', '0735', '735', 'HVAC#2-전자접촉기 압축기(CRCM)2 고장', 'M1', 'C', 'HVAC-전자접촉기 압축기(CRCM)2 고장', 'C', 'HVAC', 'HVAC 냉방작동 중 CRCM2 전자접촉기 고장 발생.', '냉방 기능 저하(전냉방시 반냉방으로 작동)', '냉방작동 중 2.5초 이상동안 CRCM2 작동 feedback 신호가 수신되지 않는 경우', 'CRCM2 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CRCM2를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRCM2와 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('0531763b-55a0-402c-a05d-dc754886ee80', '0500', '500', 'DCU#7 4위(L2) 통신고장', 'M4', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS 간 RS485 통신고장이 검지되면 발생 +', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐상태 등의 변화가 없음.', ' +1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우 +', '해당 차량의 DCU 및 CU/TU의 전원이 정상상태이고, 통신 라인 연결 상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜져 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적 으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는 데도 지속적으로 통신고장이 검지되면, DCU의 X2, X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상 체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('05437ae5-e0d3-47ce-afde-7461523e2a2a', '0505', '505', 'DCU#4 4위(L2)-출입문 입력 고전압', 'T1', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 "1"이 되면 검지.', '고전압 상태. (그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('054c34c2-1367-4833-b840-3854ba4e5935', '0154', '154', 'VVVF#3 - 후진속도검지(BSD)', 'M2', 'W', 'VVVF-후진속도검지(BSD)', 'W', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT31의 Bit3 “BSD” 신호가 “1”이 되면 검지 +', '1) TCMS 화면 하단 또는 고장화면에 ‘후진속도검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨.', '추진제어장치에서 계산한 속도가 -5km/h 이하인 경우 검지됨. +', '경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 견인전동기 속도센서 상태를 확인하고, 속도센서가 연결된 경로 배선연결 상태를 확인한다. +3) PGI 보드의 동작 상태를 시험기를 통해 확인한다. +4) 속도신호에 이상이 없을 경우 운행기록을 수집하여 출발 시 정차제동에 이상이 없는지 확인 한다. +5) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('056c6ef9-65d0-406f-ac9b-60b20e62e376', '1703', '1703', '노선안내표시기#2 고장(Car2)', 'M1', 'C', '노선안내표시기#1 고장', 'C', 'PIC', 'PIC 장치의 노선안내표시기#1이 고장이 났을 때 발생 +', '1) 노선안내표시기 화면 미현시 +2) 노선안내표시기 안내 화면 오현시', '통신고장 +', '통신 재개 시', '1) 이더넷 스위치 링크 확인 +2) 이더넷 케이블 점검 +3) 제어보드 및 전원보드 교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('0577a9d3-1f5c-41c8-a197-0c38bd58798a', '0502', '502', 'DCU#5 3위(R2)-출입문 장애물검지', 'T2', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('057ff618-4a21-4089-9788-6a4e07c28559', '0517', '517', 'DCU#2 3위(R2) - 출입문 장애물로 인한 열림 실패', 'M1', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Open failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘 상태로 대기', '도어열림 중 3회 장애물감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 열림 시, 장애물감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('059a37ce-1e92-419a-9be4-dbacdeffb7da', '0150', '150', 'VVVF#2 - 가선저전압검지(ESLVD)', 'M1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('05a09611-7f61-4dcc-b403-6c0ff75b739b', '0014', '14', 'TU S/W 버전 불일치', 'Tc1', 'B', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('05a26948-01fd-4457-b9b6-2c6de8575ca8', '0508', '508', 'DCU#5 5위(R3) - 출입문 모터/인코더 고장', 'T2', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 “Motor / Encoder failure” 신호가 “1”이 되면 +검지 +', '출입문 정상동작 불가', ' +1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우(인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터/인코더 회로 가 손상된 경우 +', '모터/인코더 및 DCU가 정상 상태이고, 전기적 연결 상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있는지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. ※ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. ? DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. ? DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) ? DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('05baca9a-961f-4146-8f32-dde3ac9051de', '0741', '741', 'HVAC#4-전자접촉기 보조히터4(AHEK) 고장', 'T1', 'C', 'HVAC-전자접촉기 보조히터4(AHEK) 고장', 'C', 'HVAC', 'HVAC 보조난방기 작동 중 AHEK4 전자접촉기 고장 발생.', 'UNIT2 보조난방기 전난방 시 반난방만 작동', '보조난방기 작동 중 2.5초 이상동안 AHEK4 작동 feedback 신호가 수신되지 않는 경우', 'AHEK4 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) AHEK4를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, AHEK4와 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('05bd131d-a200-4078-b240-efffa0e26465', '0736', '736', 'HVAC#8 - 전자접촉기 압축기(CRCM)1 고장', 'Tc2', 'C', 'HVAC-전자접촉기 압축기(CRCM)1 고장', 'C', 'HVAC', 'HVAC 냉방 작동 중 CRCM1 전자접촉기 고장 발생 +', '냉방 기능 저하(전냉방 시 반냉방으로 작동)', '냉방 작동 중 2.5초 이상 동안 CRCM1 작동 feedback 신호가 수신되지 않는 경우 +', 'CRCM1 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CRCM1을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRCM1과 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('05c4a55c-a641-4e77-9932-9658a10a2173', '0869', '869', '0', 'M4', '0', null, null, '0', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('05c81ef2-e857-4885-b7b2-a976f1c1e2f3', '0753', '753', 'HVAC#3-배기댐퍼 열림고장', 'M2', 'C', 'HVAC-배기댐퍼 열림고장', 'C', 'HVAC', '환기 시, 차량 배기댐퍼가 열려 있는 상태에서 배기댐퍼 열림 리미트 스위치가 작동되지 않음', '배기댐퍼 열림 고장 현시', '배기댐퍼를 열림으로 제어했으나 열림 리미트 스위치 입력이 없을 경우', '배기댐퍼 열림 상태에서 리미트 스위치 입력이 정상적으로 입력', '1) 배기댐퍼가 열린 상태에서 열림 리미트 스위치가 정상적으로 작동되었는지 확인한다. +2) 열림 리미트 스위치가 정상작동 되었음에도 문제가 발생될 경우, 스위치를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('05d524c5-30b0-4814-b092-d5c64aaf38b0', '0170', '170', 'VVVF#2-보호동작 설정치 이상검지(SETERR)', 'M1', 'C', 'VVVF-보호설정치 이상(SETERR)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT33의 Bit3 “SETERR” 신호가 "1"이 되면 검지.', null, '제어기 내부 보호동작 기준 설정값에 이상이 있을 때 고장검지', '동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) PUZ 보드 전면의 SELECT 스위치와 DATA스위치가 모두 0임을 확인한다. +2) TCU(통합제어장치) 및 PWM 보드를 분리하고 추진제어장치 시험기를 이용하여 제어기 시험을 실시하여 이상여부를 확인한다. +3) 추진장치 시험기 결과를 확인하여 이상이 있을 경우 교체한다.', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('05e2b1a1-2833-42f6-94ef-235961b9472b', '0501', '501', 'DCU#4 5위(R3)-출입문 차단', 'T1', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('05f5d5f8-c3d2-4d69-9e20-61af1a930194', '0428', '428', 'SIV#8 - 인버터1 입력 저전압(INV1LV)', 'Tc2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('05fd3f02-7373-41ad-bc48-bc337b4e767c', '0510', '510', 'DCU#3 1위(R1)-출입문 닫힘 리미트 스위치1 고장', 'M2', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 "DCS1 Failure(Leftt)” 신호가 "1"이 되면 검지.', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('060f42a1-cf96-423e-8a1a-947f3b03ac2e', '0140', '140', 'VVVF#2 - 제어전원전압 이상(TCU) (CLVD_S)', 'M1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('06108d58-87ef-487d-bff9-77e97b0cfb2d', '0224', '224', 'BECU#2-파트너차 ECU 고장(PECUF)', 'M1', 'C', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('0618b551-d779-4e23-9569-9a3d4e7a2d4d', '0514', '514', 'DCU#6 2위(L1) - 출입문 닫힘 시간 초과', 'M3', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 “Close time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 닫힘 동작 시간이 7초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도한 후, ‘장애물로 인한 닫힘 실패' 고장과 함께 ‘Close time out' 고장이 함께 현시 +', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('06195963-22b3-4c2b-b5b2-19d804a45e35', '0739', '739', 'HVAC#5 - 전자접촉기 증발기2(CREF) 고장', 'T2', 'C', 'HVAC-전자접촉기 증발기2(CREF) 고장', 'C', 'HVAC', 'HVAC 냉방 작동 중 CREF2 전자접촉기 고장 발생 +', 'UNIT1 냉방 작동 불가', '냉방 작동 중 2.5초 이상 동안 CREF2 작동 feedback 신호가 수신되지 않는 경우 +', 'CREF2 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CREF2를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CREF2와 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('061d2c5f-9d24-4037-ac3d-ec12b3e166eb', '0736', '736', 'HVAC#7 - 전자접촉기 압축기(CRCM)1 고장', 'M4', 'C', 'HVAC-전자접촉기 압축기(CRCM)1 고장', 'C', 'HVAC', 'HVAC 냉방 작동 중 CRCM1 전자접촉기 고장 발생 +', '냉방 기능 저하(전냉방 시 반냉방으로 작동)', '냉방 작동 중 2.5초 이상 동안 CRCM1 작동 feedback 신호가 수신되지 않는 경우 +', 'CRCM1 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CRCM1을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRCM1과 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('061fdbad-c172-45bf-a74a-51275571c3e0', '0512', '512', 'DCU#8 4위(L2) - 파라미터 로딩 실패', 'Tc2', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 “Paraneter error” 신호가 “1”이 되면 검지 +', 'Parametererror 현시(출입문은 정상작동 가능)', 'DCU 자체 내의 EEPROM으로부터 parameter데이터 로딩 실패 +', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('0622f28b-04fb-4153-b706-d468d5b814e7', '0232', '232', 'BC 코크(차하#2) 차단(Car6)', 'M3', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('062cd8ee-a172-47f5-b491-b15f1cb8c06c', '0897', '897', '비상인터폰 동작(Car#2 - 2)', 'M1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('063cf01d-bbbc-4a22-90e0-d02659a091ca', '0509', '509', 'DCU#2 3위(R2)-출입문 잠김 리미트 스위치 고장', 'M1', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 "DLS Failure” 신호가 "1"이 되면 검지.', '출입문 잠김 상태 확인 불가', '1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('063d4769-b526-45ab-9797-0300d7d3ebb4', '0700', '700', 'HVAC#5 통신고장', 'T2', 'C', 'HVAC-통신고장', 'C', 'HVAC', 'HVAC와 TCMS간 RS485 통신고장이 검지되면 발생.', '화면상 HVAC의 실내온도, 운전모드 등의 데이터가 반응하지 않음.', '1) 마이콤 전원 CB OFF +2) 통신연결 불량 +3) 해당 마이콤이 검수요원에 의해 firmware 업데이트 중인 경우', '해당차량의 마이콤 및 CU/TU 의 전원이 정상상태이고, 통신라인 연결상태가 정상', '1) 냉난방배전반의 점검커버를 열고, 마이콤이 정상적으로 켜저 있는지 확인한다. +2) 만약 마이콤 전원이 꺼져 있다면, 마이콤 DC전원 CB 및 차량 배전반에 위치한 냉난방장치 CB가 정상적으로 켜져 있는지 확인한다. +3) 마이콤이 정상적으로 켜져 있는데도 지속적으로 통순고장이 검지되면, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('06445ab7-896a-4893-a9fa-89c5390497b8', '0206', '206', 'BECU#1-RAM 점검 고장', 'Tc1', 'C', 'BECU-RAM 점검 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit5 “RAM 점검 고장” 신호가 "1"이 되면 검지.', '해당 차량 RAM 점검 고장 검지 현시 및 해당 차량 정상적인 제동제어 불가.', '해당 차량 BECU의 자가진단 시 고장 발생.', '해당 차량 BECU의 자가진단 시 정상적일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('064634c7-f4a0-4a52-ade6-9b9fc5fd079d', '0509', '509', 'DCU#6 5위(R3) - 출입문 잠김 리미트 스위치 고장', 'M3', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 “DLS Failure” 신호가 “1”이 되면 검지 +', '출입문 잠김 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('06604b02-612f-4e98-a283-29b8ce4873a7', '1706', '1706', '노선안내표시기#1 고장(Car5)', 'T2', 'C', '노선안내표시기#4 고장', 'C', 'PIC', 'PIC 장치의 노선안내표시기#4이 고장이 났을 때 발생 +', '1) 노선안내표시기 화면 미현시 +2) 노선안내표시기 안내 화면 오현시', '통신고장 +', '통신 재개 시', '1) 이더넷 스위치 링크 확인 +2) 이더넷 케이블 점검 +3) 제어보드 및 전원보드 교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('0665f750-50a8-466e-86aa-7e337f407f74', '0517', '517', 'DCU#7 3위(R2) - 출입문 장애물로 인한 열림 실패', 'M4', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Open failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘 상태로 대기', '도어열림 중 3회 장애물감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 열림 시, 장애물감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('0684fe9a-855c-4898-8d01-81c79a4d7c8e', '0500', '500', 'DCU#7 1위(R1) 통신고장', 'M4', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS 간 RS485 통신고장이 검지되면 발생 +', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐상태 등의 변화가 없음.', ' +1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우 +', '해당 차량의 DCU 및 CU/TU의 전원이 정상상태이고, 통신 라인 연결 상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜져 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적 으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는 데도 지속적으로 통신고장이 검지되면, DCU의 X2, X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상 체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('06929443-66e6-4721-8f2b-3625b4fb29ae', '0513', '513', 'DCU#2 1위(R1)-모듈 상태체크 에러', 'M1', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 "Module check error” 신호가 "1"이 되면 검지.', 'Module check error 현시 (출입문은 정상작동 가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태체크 기능에 이상이 생긴 경우 고장 발생.', 'DCU의 'A'모듈과 'B'모듈 간, 상태체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('0696feab-ae5c-4b38-b4dd-57135a3d074c', '0714', '714', 'HVAC#8 - 냉난방장치1 압력스위치2(DPS) 고압', 'Tc2', 'D', 'HVAC-냉난방장치1 압력스위치2(DPS) 고압', 'D', 'HVAC', '냉난방장치1 냉매 압력스위치2 고압 발생 +', 'UNIT1CYCLE2 냉방기능불가', 'UNIT1DSP2측 냉매압력이 3초 이상 28±1(kgf/cm2) 이상 되는 경우 +', '냉매압력이 정상수치 15±0.7(kgf/cm2) 이하로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CRCM2의 부하측 전류를 측정하여 응축기 팬의 동작여부를 확인한다. +2) 응축기 코일의 전면에 이물질로 인한 막힘이 있는지 확인한다. +3) 응축기 팬 상부 그릴에 외부 이물질로 인한 막힘이 있는지 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('0698c824-fbee-4a76-ac63-3e3c2d9adc45', '0214', '214', 'BECU#4-BC 압력센서고장', 'T1', 'C', 'BECU-BC 압력센서 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit5 “BC 압력센서 고장” 신호가 "1"이 되면 검지.', '해당 차량 BC압력센서 고장 검지 현시 및 해당차량 제동력 부족, 제동불완해 검지 불가.', '해당 차량의 BC압력센서 고장.', '해당 차량의 BC압력센서가 정상일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('06a509be-392a-44fd-8e6e-0e604bab422c', '0155', '155', 'VVVF#3 - 역행/회생 이상검지(PBR)', 'M2', 'C', 'VVVF-역행/회생 이상 검지(PBR)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT31의 Bit4 “PBR” 신호가 “1”이 되면 검지 +', '1) TCMS 화면 하단 또는 고장화면에 ‘역행/회생 신호 이상 검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생함. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉은색으로 표기되며, HSCB, LB1, 2 개방되어 동력 손실 발생함.', '추진제어장치 입력되는 역행/제동신호가 동시에 입력될 경우 검지됨. +', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반 배전반의 VVVFIC nfb 재투입 또는 차량 배터리 전원 재투입', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 역행/제동신호에 이상이 있는지 확인한다. +3) 차량의 제어 회로 중 역행/제동 신호가 추진제어장치로 연결되는 경로에 이상이 없는지 확인 한다. +4) DIN 보드의 동작 상태를 시험기를 통해 확인한다. +5) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('06a69c35-b797-4036-8908-d9538e1ca50f', '1500', '1500', '출입문 회로차단기 차단(Car5)', 'T2', 'W', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('06b2978a-e3df-4ac2-bb31-7ab7e074c8dc', '1501', '1501', '차상신호장치(ATC) 회로차단기 차단(Car2)', 'M1', 'W', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('06c1b099-c9e5-4587-ad7c-b9c405124fce', '0511', '511', 'DCU#3 4위(L2)-출입문 닫힘 리미트 스위치2 고장', 'M2', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 "DCS2 Failure(Right)” 신호가 "1"이 되면 검지.', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('06c7ac99-2f88-4e9c-b29a-afac1ce3767c', '0105', '105', 'VVVF#2 - 상전류 불평형 검지(PUD)', 'M1', 'C', 'VVVF-상전류 불평형 검지(PUD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT29의 Bit0 “PUD” 신호가 “1”이 되면 검지 +', '1) TCMS 화면 하단 또는 고장화면에 ‘상전류 불평형 검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생함. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉은색으로 표기되며, HSCB, LB1, 2 개방되어 동력 손실 발생함.', '추진제어장치에서 견인전동기로 출력되는 U, V, W 상 전류의 합이 300A 이상일 경우 검지됨. +', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반 배전반의 VVVFIC NFB 재투입 또는 차량 배터리 전원 재투입', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 견인전동기로 출력되는 3상의 전류치 확인함. +3) 특정상의 전류치가 비정상적일 경우 특정상에 해당되는 IPM, 전류센서, 모터결선을 확인한다. +4) 전류센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작 상태를 시험기를 통해 확인한다. +6) 견인전동기 각상의 절연상태 및 각상과 접지 간의 절연상태를 확인한다. +7) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('06c84f88-9118-475b-acb5-2e3dbdeba365', '1406', '1406', 'BMS#8 - Cell 과전압(COV, 4,25V 이상)', 'Tc2', 'D', 'BMS-Cell 과전압(COV)', 'D', 'BMS', '해당 차량의 배터리 셀 전압이 4.23V 이상이 되면 검지 +', '차량 배터리셀 과전압 검지 후, 4.26V 이상이면 충전접촉기(CK)가 차단된다.', '배터리셀 과전압(4.23V 이하) +', '배터리셀 전압 정상범위로 회복(3 ~ 4.21V)', '1) 배터리 NFB 상태 확인 +2) 이상이 없으면 차량 전체를 리셋한다. +3) 차량 리셋 후에도 동일고장이면 사령실과 연락하여 조치를 취한다. (외부 방전기 연결 또는 차량 지원)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('06d31f12-9e27-4dea-b16b-fbd410d665a3', '0727', '727', 'HVAC#7 - 배기팬1 과부하', 'M4', 'C', 'HVAC-배기팬1 과부하', 'C', 'HVAC', 'HVAC 환기작동 중 차량 배기팬1 모터에 과부하 발생 +', '환기 시 차량 배기팬2 운전 불가능', ' +1) 냉방 작동 중 챠량 배기팬1 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRVF1와 연결된 THR9가 Trip 됨. +', '차량 배기팬1 모터의 과부하조건을 해소하여 정상 가능 상태로 만들고, THR9 및 마이콤 전원 리셋', '1) 냉난방 배전반의 점검커버를 열고, THR9의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR9의 전류 세팅값이 2.5A에 맞춰져 있는지 확인하여, 아닐 경우, (+) 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동시킨 후, THR9의 2차측 2, 4 단자와 6 단자 사이의 전압이 DC 100V로 정상 측정 되는지 확인한다. +5) 만약 전압이 측정되지 않을 시, 전원이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, THR9 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('06da3fa9-1285-473f-902c-bdb5b4f8b2cd', '0722', '722', 'HVAC#8-냉난방장치2 압력스위치1(DPS) 냉매부족', 'Tc2', 'C', 'HVAC-냉난방장치2 압력스위치1(DPS) 냉매부족', 'C', 'HVAC', '냉난방장치2 냉매 압력스위치1 저압 발생.', 'UNIT2 CYCLE1 냉방 기능 불가', 'UNIT2 DSP1측 냉매 압력이 30초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우', '냉매 압력이 정상 수치 2±0.5(kgf/cm2 이상 유지하도록 하고, 마이콤 전원을 리셋', '1) 배전반 점검 커버를 열고 마이콤 전원을 리셋한 후, 냉방 가동 시, CREF4의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)을 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안되는 것을 확인한 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('06e104df-1105-48d5-8324-7500424175ae', '0203', '203', 'BECU#5-전자제어밸브의 고장', 'T2', 'C', 'BECU-전자제어밸브의 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit2 “전자제어밸브의 고장” 신호가 "1"이 되면 검지.', '해당 차량 전자제어밸브의 고장 검지 현시 및 해당 차량 제동제어 불가.', '해당 차량의 상용전자제어밸브가 작동하지 않음.', '해당 차량의 상용전자제어밸브가 정상 작동 시 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('06edb01a-5fea-4d1a-bf50-ed55983b6384', '0405', '405', 'SIV#8 - AC 출력과전류(ACOC)', 'Tc2', 'C', 'SIV-AC 출력과전류(ACOC)', 'C', 'SIV', '보조전원장치(SIV)의 RS485 데이터 중 SIV-TCMS SD TEXT4의 Bit3 “ACOC” 신호가 “1”이 되면 +검지 +', '1) TCMS 화면하단 또는 고장화면에 ‘SIVAC 출력 과전류 검지' 표시됨. +2) 보조전원장치(SIV)는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 보조전원장치 중고장이 발생됨. +5) 중고장이 발생되면 TCMS 일반화면에 보조전원장치 상태 붉은색으로 표기되며, 연장급전 됨.', '보조전원장치(SIV)에서 출력되는 ACU, V, W 상의 전류가 700A 이상일 경우 검지됨. +', '1) 경고장이 발생할 경우 보조전원장치(SIV) 자동 재기동에 의해 재기동 됨. +2) 중고장이 발생했을 경우 조치 완료 후 보조전원장치(SIV) 리셋으로 고장 소거됨.', '1) 상기 고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 보조전원장치(SIV) 고장기록을 수집하여 출력되는 3상의 AC 전류치 확인함. +3) 특정상의 전류치가 비정상적일 경우 특정상에 해당되는 GDU, 전류센서, AC 출력단 결선을 확인한다. +4) 전류센서와 보조전원장치(SIV) 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작 상태를 시험기를 통해 확인한다. +6) 출력단 각 상의 절연상태 및 각상과 접지 간의 절연상태를 확인한다. +7) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('06edfb9c-6268-4758-a044-8647c9f12ca6', '0502', '502', 'DCU#7 1위(R1) - 출입문 장애물검지', 'M4', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('0708bbea-564a-41cd-ae07-68272cb61095', '0502', '502', 'DCU#3 1위(R1)-출입문 장애물검지', 'M2', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('07213b78-40e8-49e9-8ed3-27ed7dafbb01', '0509', '509', 'DCU#6 5위(R3)-출입문 잠김 리미트 스위치 고장', 'M3', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 "DLS Failure” 신호가 "1"이 되면 검지.', '출입문 잠김 상태 확인 불가', '1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('0724b3c0-4e86-4a45-adc6-703067710d4a', '0212', '212', 'BECU#1 - 1축 속도신호의 비정상', 'Tc1', 'C', 'BECU-1축속도신호의 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit3 “1축속도신호의 비정상” 신호가 “1”이 +되면 검지 +', '해당 차량 1축속도신호의 비정상 검지 현시 및 해당 차량 활주제어불가', '해당 차량의 1축속도센서 고장 발생 +', '해당 차량의 1축속도센서가 정상적일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('072e14fe-d0ec-41f2-b2e5-89eb77bde8e0', '0719', '719', 'HVAC#3 - 실내온도 센서2 고장', 'M2', 'C', 'HVAC-실내온도 센서2 고장', 'C', 'HVAC', '객실 실내 온도센서2 고장 발생 +', '실내 온도센서2 고장현시', '온도센서 검지범위는 -45 ~ 85도(820 ~ 1,330Ω)인데, 2초 이상 검지범위를 벗어나는 경우 +', '온도센서 검지값이 2초 이상 허용온도 범위 내일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820~1,330Ω을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('073f517f-c19f-4f3e-b721-f140c1c8e59e', '0156', '156', 'VVVF#2-전진/후진이상검지(FRD)', 'M1', 'C', 'VVVF-전진/후진이상검지(FRD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT31의 Bit5 “FRD” 신호가 "1"이 되면 검지.', null, '전진 후진지령 동시에 입력 시 고장검지.', '동시 입력상황 해제', '1) 상기고장이 간헐적으로 발생하는 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 전진/후진신호에 이상이 있는지 확인한다. +3) 차량의 제어회로 중 전진/후진 신호가 추진제어장치로 연결되는 경로에 이상이 없는지 확인한다. +4) 추진제어장치 시험기를 이용하여 TCU(통합제어장치)의 이상여부를 확인한다. +5) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('074a0ac7-a8b6-42ca-be1c-948828424d09', '1207', '1207', 'FDU#6 - 감지기4 화재감지', 'M3', 'W', 'FDU-감지기4 화재감지 (Car1~8)', 'W', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 “Detector1 State” 신호가 “11”이 되면 검지 +', '화재상태현시(자동소거 안 됨.)', '하기 2가지 조건을 모두 만족하여야 화재신호가 출력 됨. (연동모드 동작) +1) 이웃한(앞 혹은 뒤에 위치한) 감지기 중 하나의 감지기라도 주의 혹은 화재상태에 있어야 함. +2) Detector1(해당 감지기)에서 측정된 연기농도가 15% 이상이거나 온도가 65℃ 이상인 경우 +', '1) FDU의 복귀버튼 조작 시 +2) FDU 전원 리셋 시', '1) 해당 감지기 위치의 화재 발생 여부 확인 +2) 화재 오감지일 경우 FDU의 복귀버튼 취급 +3) 오감지일 경우 감지기의 청소주기 확인(내부 먼지 제거)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('074f7f0f-7ebf-471b-8aed-998464cc5378', '0733', '733', 'HVAC#1 - 전자접촉기 압축기(CRCM)4 고장', 'Tc1', 'C', 'HVAC-전자접촉기 압축기(CRCM)4 고장', 'C', 'HVAC', 'HVAC 냉방 작동 중 CRCM4 전자접촉기 고장 발생 +', '냉방 기능 저하(전냉방 시 반냉방으로 작동)', '냉방 작동 중 2.5초 이상 동안 CRCM4 작동 feedback 신호가 수신되지 않는 경우 +', 'CRCM4 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CRCM4를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRCM4와 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('07696507-9041-4495-93a5-3cea3c35d437', '0204', '204', 'BECU#1 - 응하중 비정상', 'Tc1', 'C', 'BECU-응하중 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit3 “응하중 비정상” 신호가 “1”이 되면 검지 +', '해당 차량 응하중 비정상 검지 현시', '해당 차량의 응하중 출력이 정상범위를 벗어남. +', '해당 차량 응하중 출력이 정상범위로 복귀 시 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('076b12d6-2a5b-4c5d-a073-1db6ea7c429f', '0736', '736', 'HVAC#5 - 전자접촉기 압축기(CRCM)1 고장', 'T2', 'C', 'HVAC-전자접촉기 압축기(CRCM)1 고장', 'C', 'HVAC', 'HVAC 냉방 작동 중 CRCM1 전자접촉기 고장 발생 +', '냉방 기능 저하(전냉방 시 반냉방으로 작동)', '냉방 작동 중 2.5초 이상 동안 CRCM1 작동 feedback 신호가 수신되지 않는 경우 +', 'CRCM1 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CRCM1을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRCM1과 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('076b5958-5106-4f45-9c6c-1fa6dd0f50b8', '0510', '510', 'DCU#5 2위(L1)-출입문 닫힘 리미트 스위치1 고장', 'T2', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 "DCS1 Failure(Leftt)” 신호가 "1"이 되면 검지.', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('076f01de-bfc5-4e14-9a21-05adfb005565', '0735', '735', 'HVAC#2 - 전자접촉기 압축기(CRCM)2 고장', 'M1', 'C', 'HVAC-전자접촉기 압축기(CRCM)2 고장', 'C', 'HVAC', 'HVAC 냉방 작동 중 CRCM2 전자접촉기 고장 발생 +', '냉방 기능 저하(전냉방 시 반냉방으로 작동)', '냉방 작동 중 2.5초 이상 동안 CRCM2 작동 feedback 신호가 수신되지 않는 경우 +', 'CRCM2 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CRCM2를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRCM2와 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('0775caf0-8305-4a47-90a8-738b7fe42ef1', '0230', '230', 'ECU 전원공급 고장(Car1)', 'Tc1', 'B', 'ECU 전원공급 고장', 'B', 'BECU', '해당 차량의 ECU 전원공급 고장(CB OFF) 발생 시 검지 +', '해당 차량의 ECU 전원공급 고장검지 현시', '해당 차량의 ECU 전원차단(CBOFF) +', '해당 차량의 ECU 전원공급(CBON)', 'BECU를 리셋(BECUCBOFF/ON)하여 소거 여부 확인, 지속적으로 고장 발생 시 관제 보고하고 지시에 따를 것', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('07893abf-8170-4ee8-9855-575df7c5403f', '0503', '503', 'DCU#1 2위(L1)-출입문 내부비상핸들 취급(EED)', 'Tc1', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('078e972e-04ce-43de-8aee-2efa3e6f64a6', '0510', '510', 'DCU#5 2위(L1) - 출입문 닫힘 리미트 스위치1 고장', 'T2', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 “DCS1 Failure(Leftt)” 신호가 “1”이 되면 검지 +', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('07a3b4d1-e125-4fa6-8a10-4e9e6ad59a4f', '0743', '743', 'HVAC#4-전자접촉기 보조히터2(AHEK) 고장', 'T1', 'C', 'HVAC-전자접촉기 보조히터2(AHEK) 고장', 'C', 'HVAC', 'HVAC 보조난방기 작동 중 AHEK2 전자접촉기 고장 발생.', 'UNIT1 보조난방기 전난방 시 반난방만 작동', '보조난방기 작동 중 2.5초 이상동안 AHEK2 작동 feedback 신호가 수신되지 않는 경우', 'AHEK2 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) AHEK2를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, AHEK2와 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('07d63692-80dd-4149-888c-ef16eded8ea5', '0163', '163', 'VVVF#6-FC과전압검지2(OVD2)', 'M3', 'C', 'VVVF-FC과전압검지2(OVD2)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT32의 Bit4 “OVD2” 신호가 "1"이 되면 검지.', null, 'FC전압 1850V이상 도달 시 고장검지', '제동 OFF', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 FC전압에 이상이 있는지 확인한다. +3) 추진제어장치 내부 고전압부에 소손흔적이 있는지 확인한다. +4) FC에 연결된 버스바의 체결상태가 양호한지 확인한고, 버스바를 분리하여 FC의 Capacitance를 측정하여 이상이 없는지 확인한다. +5) 전압센서의 외관 및 단자 체결상태를 확인한다. +6) 추진제어장치 시험기를 이용하여 TCU(통합제어장치)의 이상여부를 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('07d91258-9422-4cdd-9018-20e47606ca37', '0137', '137', 'VVVF#3 - 전동기 과전류 검지(MMOCD)', 'M2', 'C', 'VVVF-전동기 과전류 검지(MMOCD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT31의 Bit2 “MMOCD” 신호가 “1”이 되면 검지 +', '1) TCMS 화면 하단 또는 고장화면에 ‘전동기 과전류 검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생함. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉은색으로 표기되며, HSCB, LB1, 2 개방되어 동력 손실 발생함.', '추진제어장치에서 견인전동기로 출력되는 U, V, W 상의 전류가 1, 850A 이상일 경우 검지됨. +', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반 배전반의 VVVFIC nfb 재투입 또는 차량 배터리 전원 재투입', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 견인전동기로 출력되는 3상의 전류치 확인함. +3) 특정상의 전류치가 비정상적일 경우 특정상에 해당되는 IPM, 전류센서, 모터결선을 확인한다. +4) 전류센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작 상태를 시험기를 통해 확인한다. +6) 견인전동기 각상의 절연상태 및 각상과 접지 간의 절연상태를 확인한다. +7) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('07dc7b6f-25d0-4a65-8fcc-37e5e125bf5a', '1208', '1208', 'FDU#7-감지기4 고장', 'M4', 'C', 'FDU-감지기4 고장', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 "Detector1 State” 신호가 "10"이 되면 검지.', '감지기 고장상태 현시(자동 소거 안됨)', '1) 감지기로부터 데이터 응답이 없는경우. +2) 감지기로부터 수신된 데이터의 CRC가 맞지 않는경우 +3) 감지기로부터 수신된 데이터의 ID가 송신 ID와 일치하지 않는경우', 'FDU 전원 리셋 후 감지기로부터 정상적으로 데이터가 수신된 경우', '1) FDU 전원 리셋 후 고장 소거 여부 확인 +2) 정상 동작중인 감지기와 위치 교환 후 FDU 전원 리셋 및 고장 상태 확인 +3) 동일한 감지기에서 고장 발생시 감지기 교체 +4) 동일한 위치에서 고장 발생시 감지기 라인 점검', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('07e472a6-4b80-4e6f-8c54-f37a3c6b5a5f', '0035', '35', '보안제동 동작', 'Tc1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('07efbb8a-ef8e-4dc6-8bd4-2967bc46562c', '0222', '222', 'BECU#5 - 공기스프링 누설(후미대차)', 'T2', 'C', 'BECU-공기스프링누설(후미대차)', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit5 “공기스프링누설(후미대차)” 신호가 “1”이 +되면 검지 +', '해당 차량 공기스프링 누설(후미대차) 검지 현시 및 해당 차량 정상적인제동제어 불가 (응하중제어)', '해당 차량 후미대차의 공기스프링(AS3, AS4) 압력이 정상범위를 벗어남. (100kPa 미만) +', '해당 차량 후미대차의 공기스프링(AS3, AS4) 압력이 정상범위일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('07f04cc1-47dd-4e58-8d07-f8d868fea3ee', '0143', '143', 'VVVF#6 - 주회로 접지검지(LGD)', 'M3', 'B', 'VVVF-주회로 접지검지(LGD)', 'B', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT30의 Bit0 “LGD” 신호가 “1”이 되면 검지 +', '1) TCMS 화면 하단 또는 고장화면에 ‘주회로 접지검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동이 되지 않으며 중고장으로 처리됨. +3) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉은색으로 표기되며, HSCB, LB1, 2 개방되어 동력 손실 발생함.', '추진제어장치 입력전압이 300V 이하로 하강되며, 입력전류가 1,700A 이상인 조건 +', '추진제어장치 리셋으로 고장 소거됨.', '1) 상기고장이 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 고장기록의 FC 전압 및 입력전류 확인 +3) 추진제어장치 내부에 접지흔적 확인 및 고압 회로 점검 +4) 전류/전압 센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작 상태를 시험기를 통해 확인한다. +6) IPM 전원공급기의 전원연결 상태 또는 광케이블의 연결 상태와 배선상태를 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지 간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('07f3c663-e45e-4054-904a-74720c8f5825', '0743', '743', 'HVAC#8 - 전자접촉기 보조히터2(AHEK) 고장', 'Tc2', 'C', 'HVAC-전자접촉기 보조히터2(AHEK) 고장', 'C', 'HVAC', 'HVAC 보조난방기 작동 중 AHEK2 전자접촉기 고장 발생 +', 'UNIT1 보조난방기 전난방 시 반난방만 작동', '보조난방기 작동 중 2.5초 이상 동안 AHEK2 작동 feedback 신호가 수신되지 않는 경우 +', 'AHEK2 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) AHEK2를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, AHEK2와 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('081154a2-4198-43cb-8f0b-e3c11087658f', '0163', '163', 'VVVF#2 - FC과전압검지2(OVD2)', 'M1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('081666cb-a673-4b55-9e53-92f2a074d798', '0500', '500', 'DCU#8 1위(R1) 통신고장', 'Tc2', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS간 RS485 통신고장이 검지되면 발생.', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐 상태 등의 변화가 없음.', '1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우', '해당차량의 DCU 및 CU/TU 의 전원이 정상상태이고, 통신라인 연결상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜저 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는데도 지속적으로 통순고장이 검지되면, DCU의 X2,X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('08240ce5-7c97-4ee5-83a6-772e701a9115', '1107', '1107', '0', 'Tc2', '0', null, null, '0', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('0825c257-f30e-45a2-89b9-d3a9414ef4dc', '0741', '741', 'HVAC#6-전자접촉기 보조히터4(AHEK) 고장', 'M3', 'C', 'HVAC-전자접촉기 보조히터4(AHEK) 고장', 'C', 'HVAC', 'HVAC 보조난방기 작동 중 AHEK4 전자접촉기 고장 발생.', 'UNIT2 보조난방기 전난방 시 반난방만 작동', '보조난방기 작동 중 2.5초 이상동안 AHEK4 작동 feedback 신호가 수신되지 않는 경우', 'AHEK4 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) AHEK4를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, AHEK4와 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('0828c4bd-4fdd-4ebb-99d8-196c8e4a1eba', '0240', '240', 'BECU#1 - 2축 스키드신호', 'Tc1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('082b1ebf-7f29-4aff-a949-c59d1ce1f22a', '0162', '162', 'VVVF#7 - PWM제어장치 이상검지(WDTD_P)', 'M4', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('083b7786-20e0-4285-abfe-a1f0c3905b19', '0726', '726', 'HVAC#1-배기팬2 과부하', 'Tc1', 'C', 'HVAC-배기팬2 과부하', 'C', 'HVAC', 'HVAC 환기작동 중 차량 배기팬2 모터에 과부하 발생.', '환기 시 차량 배기팬2 운전 불가능', '1) 냉방작동 중 챠량 배기팬2 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRVF2와 연결된 THR10이 Trip 됨.', '차량 배기팬2 모터의 과부하 조건을 해소하여 정상 가능 상태로 만들고, THR10 및 마이콤 전원 리셋', '1) 냉난방배전반의 점검커버를 열고, THR10의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR10의 전류 세팅값이 2.5A에 맞춰져 있는지 확인하여, 아닐 경우, 십자 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동 시킨 후, THR10의 2차측 2,4 단자와 6 단자 사이의 전압이 DC 100V으로 정상 측정되는지 확인한다. +5) 만약 전압이 측정되지 않을 시, 전원이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, THR10 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('084360d3-7b6b-4147-91ef-424aa27a77b1', '0223', '223', 'BECU#8-공기스프링누설(전두대차)', 'Tc2', 'C', 'BECU-공기스프링누설(전두대차)', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit6 “공기스프링누설(전두대차)” 신호가 "1"이 되면 검지.', '해당 차량 공기스프링누설(전두대차) 검지 현시 및 해당차량 정상적인 제동제어 불가.(응하중 제어)', '해당 차량 전두대차의 공기스프링(AS1, AS2) 압력이 정상범위를 벗어남.(100kPa 미만)', '해당 차량 전두대차의 공기스프링(AS1, AS2) 압력이 정상범위일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('08466fe6-ac83-442e-9fb5-033839745f72', '0518', '518', 'DCU#3 3위(R2)-출입문 Enable 신호 에러', 'M2', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 "Enable signal error” 신호가 "1"이 되면 검지.', 'DCU 출입문 Enable 신호 에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) 취급시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함.', '해당출입문 enable 신호 수신', '1) AUTO/MCS 모드시에는 YARD모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인한다. (YARD/FMC 모드시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.392739+00', null, '로템40량(2018)-1단계', 'Rotem'), ('0846b29a-c33e-47e0-9993-82746b16a248', '0215', '215', 'BECU#2-후미대차 AS압력센서고장', 'M1', 'C', 'BECU-후미대차 AS압력센서 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit6 “후미대차 AS압력센서 고장” 신호가 "1"이 되면 검지.', '해당 차량 후미대차 AS압력센서 고장 검지 현시 및 해당차량 정상적인 응하중 제동제어 불가.', '해당 차량의 후미대차 AS 압력센서(AS3, AS4) 고장.', '해당 차량의 후미대차 AS 압력센서(AS3, AS4)가 정상일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('084b33d1-3860-4ff5-9279-8d5243238101', '1206', '1206', 'FDU#3 - 감지기3 고장', 'M2', 'C', 'FDU-감지기3 고장 (Car1~8)', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 “Detector1 State” 신호가 “10”이 되면 검지 +', '감지기고장상태현시(자동소거 안 됨)', ' +1) 감지기로부터 데이터 응답이 없는 경우 +2) 감지기로부터 수신된 데이터의 CRC가 맞지 않는 경우 +3) 감지기로부터 수신된 데이터의 ID가 송신 ID와 일치하지 않는 경우 +', 'FDU 전원 리셋 후 감지기로부터 정상적으로 데이터가 수신된 경우', '1) FDU 전원 리셋 후 고장 소거 여부 확인 +2) 정상동작중인 감지기와 위치 교환 후 FDU 전원 리셋 및 고장 상태 확인 +3) 동일한 감지기에서 고장 발생 시 감지기 교체 +4) 동일한 위치에서 고장 발생 시 감지기 라인 점검', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('084be7a7-cb48-4fd9-a988-7fc6921bfea8', '0504', '504', 'DCU#2 1위(R1) - 출입문 외부 비상핸들 취급(EAD)', 'M1', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('084d1077-8ae3-45e0-a2a1-0aa7e7586185', '0504', '504', 'DCU#1 1위(R1)-출입문 외부비상핸들 취급(EAD)', 'Tc1', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('0851302d-fc4c-41df-acbf-99b3d433d5f1', '0310', '310', 'ATC#8 - 50cm 이상 미달정차', 'Tc2', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('0851c6fa-0ce5-419b-8504-9146e8006bdf', '0404', '404', 'SIV#8-AC 출력과전압(ACOV)', 'Tc2', 'C', 'SIV-AC 출력과전압(ACOV)', 'C', 'SIV', '보조전원장치(SIV)의 RS485 데이터 중 SIV-TCMS SD TEXT4의 Bit2 “ACOV” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 'SIV AC 출력과전압 검지' 표시됨. +2) 보조전원장치(SIV)는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 보조전원장치 중고장이 발생됨. +5) 중고장이 발생되면 TCMS 일반화면에 보조전원장치 상태 붉을색으로 표기되며, 연장급전 됨.', '보조전원장치(SIV)에서 출력되는 AC U, V, W 상의 전압이 500V 이상일 경우 검지됨.', '1) 경고장이 발생할 경우 보조전원장치(SIV) 자동 재기동에 의해 재기동 됨. +2) 중고장이 발생했을 경우 조치 완료 후 보조전원장치(SIV) 리셋으로 고장 소거됨.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 보조전원장치(SIV) 고장기록을 수집하여 출력되는 3상의 AC 전압값 확인함. +3) 특정상의 전압치가 비정상적일 경우 특정상에 해당되는 GDU, 전압센서, AC 출력단 결선을 확인한다. +4) 전압센서와 보조전원장치(SIV) 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작상태를 시험기를 통해 확인한다. +6) 출력단 각 상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +7) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('085d0658-c636-4fd8-b0cc-8a37913f1f37', '0405', '405', 'SIV#1 - AC 출력과전류(ACOC)', 'Tc1', 'C', 'SIV-AC 출력과전류(ACOC)', 'C', 'SIV', '보조전원장치(SIV)의 RS485 데이터 중 SIV-TCMS SD TEXT4의 Bit3 “ACOC” 신호가 “1”이 되면 +검지 +', '1) TCMS 화면하단 또는 고장화면에 ‘SIVAC 출력 과전류 검지' 표시됨. +2) 보조전원장치(SIV)는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 보조전원장치 중고장이 발생됨. +5) 중고장이 발생되면 TCMS 일반화면에 보조전원장치 상태 붉은색으로 표기되며, 연장급전 됨.', '보조전원장치(SIV)에서 출력되는 ACU, V, W 상의 전류가 700A 이상일 경우 검지됨. +', '1) 경고장이 발생할 경우 보조전원장치(SIV) 자동 재기동에 의해 재기동 됨. +2) 중고장이 발생했을 경우 조치 완료 후 보조전원장치(SIV) 리셋으로 고장 소거됨.', '1) 상기 고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 보조전원장치(SIV) 고장기록을 수집하여 출력되는 3상의 AC 전류치 확인함. +3) 특정상의 전류치가 비정상적일 경우 특정상에 해당되는 GDU, 전류센서, AC 출력단 결선을 확인한다. +4) 전류센서와 보조전원장치(SIV) 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작 상태를 시험기를 통해 확인한다. +6) 출력단 각 상의 절연상태 및 각상과 접지 간의 절연상태를 확인한다. +7) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('085e2765-2940-466a-bb95-4a5178dae2d1', '0516', '516', 'DCU#1 5위(R3) - 출입문 장애물로 인한 닫힘 실패', 'Tc1', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Close failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림 상태로 대기', '도어 닫힘 중 3회 장애물감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('086828ea-2b0b-423e-a479-40c72659ee8d', '0737', '737', 'HVAC#5-전자접촉기 증발기4(CREF) 고장', 'T2', 'C', 'HVAC-전자접촉기 증발기4(CREF) 고장', 'C', 'HVAC', 'HVAC 냉방작동 중 CREF4 전자접촉기 고장 발생.', 'UNIT2 냉방 작동 불가', '냉방작동 중 2.5초 이상동안 CREF4 작동 feedback 신호가 수신되지 않는 경우', 'CREF4 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CREF4를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CREF4와 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('086d8658-7c4f-4398-adf2-15bfff0ebe50', '0237', '237', '보안제동코크 차단(Car8)', 'Tc2', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('087420ec-70d8-45e8-8d3d-829dabd6359a', '0505', '505', 'DCU#7 3위(R2) - 출입문 입력 고전압', 'M4', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 “1”이 되면 검지 +', '고전압 상태(그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상 +', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('088b850c-2178-4033-af97-3852e7cbafe9', '0515', '515', 'DCU#8 1위(R1)-출입문 열림 시간 초과', 'Tc2', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 "Open time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 열림 동작시간이 6초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도 한 후, '장애물로 인한 열림실패' 고장과 함께 'Open time out' 고장이 함께 현시', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('0896877d-c5ee-478d-9353-f36e9ace8d29', '0217', '217', 'BECU#2 - 회생제동달성 비정상', 'M1', 'C', 'BECU-회생제동달성 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit0 “회생제동달성 비정상” 신호가 “1”이 되면 검지 +', '해당 차량 회생제동달성비정상 검지 현시 및 해당 차량 정상적인 전공교차제어 불가', '해당 차량의 회생제동 달성 신호가 정상범위를 벗어남. (5.0 ~ 95.0%) +', '해당 차량의 회생제동달성신호가정상범위일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 소거되지 않을 경우 해당 차량 추진제어장치 리셋(CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르 시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('08a755d8-26dd-4c24-a771-7d56ebe5674f', '0414', '414', 'SIV#1-게이트 드라이버 고장, WZ1상(GDFWZ1)', 'Tc1', 'C', 'SIV-게이트 드라이버 고장, WZ1상(GDFWZ1)', 'C', 'SIV', '보조전원장치(SIV)의 RS485 데이터 중 SIV-TCMS SD TEXT5의 Bit4 “GDFUX1” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 'GDF UX 1상 이상검지' 표시됨. +2) 보조전원장치(SIV)는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 보조전원장치(SIV) 중고장이 발생됨. +5) 중고장이 발생되면 TCMS 일반화면에 보조전원장치(SIV) 상태 붉을색으로 표기되며, 연장급점 됨.', '보조전원장치(SIV) 내부 GDU에 과전류, 과온이 검지될경우.', '1) 경고장이 발생할 경우 보조전원장치(SIV) 자동 재기동에 의해 재기동 됨. +2) 중고장이 발생할 경우 보조전원장치(SIV) 리셋으로 고장 소거됨.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 보조전원장치(SIV) 고장기록을 수집하여 출력되는 3상의 AC 전류치를 확인함. +3) 특정상의 전류치가 비정상적일 경우 특정상에 해당되는 GDU, 전류센서, 출력단 결선을 확인한다. +4) 전류센서와 보조전원장치(SIV) 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작상태를 시험기를 통해 확인한다. +6) GDU 전원공급기의 전원연결상태 또는 광케이블의 연결상태와 배선상태를 확인한다. +7) 출력단 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('08d89827-8817-4ed0-9435-7575e192acd5', '0737', '737', 'HVAC#4-전자접촉기 증발기4(CREF) 고장', 'T1', 'C', 'HVAC-전자접촉기 증발기4(CREF) 고장', 'C', 'HVAC', 'HVAC 냉방작동 중 CREF4 전자접촉기 고장 발생.', 'UNIT2 냉방 작동 불가', '냉방작동 중 2.5초 이상동안 CREF4 작동 feedback 신호가 수신되지 않는 경우', 'CREF4 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CREF4를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CREF4와 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('08dd60ee-957a-4149-a81f-0c3d36b4c113', '0027', '27', '장애물 검지 후 출입문 닫힘 스위치 취급', 'Tc2', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('08ed10f5-4f14-41f9-8755-c1b5c5551341', '0749', '749', 'HVAC#7-380V 전원고장', 'M4', 'C', 'HVAC-380V 전원고장', 'C', 'HVAC', 'HVAC 메인 전원 AC 380V 전원 고장 발생', 'HVAC 냉방 및 난방 기능 불가', '차량으로부터 공급되는 AC 380V가 입력되지 않는 경우', '차량으로부터 AC 380V 전압이 정상적으로 입력', '1) 차량으로부터 AC 380V 전압이 정상적으로 입력되는지 확인한다. +2) 차량전원이 정상일 경우, 냉난방 배전반의 CBLVD 차단기가 꺼져 있는지 확인 후, 꺼져있을 경우, 켠다. +3) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('08f3b173-5692-4476-a9d9-f8306bb474aa', '0706', '706', 'HVAC#2-냉난방장치1 증발기2 과부하', 'M1', 'C', 'HVAC-냉난방장치1 증발기2 과부하', 'C', 'HVAC', 'HVAC 냉방작동 중 냉난방장치1 증발기 모터에 과부하 발생.', 'UNIT1 냉방 작동 불가', '1) 냉방작동 중 UNIT1의 증발기 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CREF2와 연결된 THR6이 Trip 됨.', 'UNIT1의 증발기 모터의 과부하 조건을 해소하여 정상 가능 상태로 만들고, THR6 및 마이콤 전원 리셋', '1) 냉난방배전반의 점검커버를 열고, THR6의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR6의 전류 세팅값이 3A에 맞춰져 있는지 확인하여, 아닐 경우, 십자 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동 시킨 후, THR6의 2차측 2,4,6 단자에서 각 단자간 상간 전압이 AC 380V으로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 증발기 단품 상태에서 점검을 한다. +7) THR6의 2차측 2,4,6 단자에서 각 단자간 권선저항이 모두 같은지 확인한다. (±10% 이하) (증발기 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT1의 증발기 모터의 결선을 해제한 후 4극 및 6극 모터의 권선저항을 확인 후, 문제가 있을 겨우, 증발기 모터를 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR6 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('08f45ba0-a956-4bda-817e-de546488a2de', '1003', '1003', 'CMSB#8-출력단락', 'Tc2', 'C', 'CMSB-출력단락', 'C', 'CMSB', 'CMSB의 RS485 데이터 중 CMSB-TCMS SD TEXT3의 Bit4 “출력 단락” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 'CM출력 단락' 표시됨. +2) 바이패스 모드로 전환되고, CM 기동 시 '바이패스 기동'으로 표시됨.', '1) CM 모터의 단락이 발생되었을 경우 검지됨. +2) CMSB 내 IBGT 보드의 결함이 발생될 경우 검지됨. +3) CM 출력부하가 급변할 경우 검지됨.', '1) 차량 전원 OFF +2) CMSB 내부의 표시기패널 RESET 버튼 누름.', '0) 정상운행 후, 검수고에 입고하여 아래와 같이 조치한다. +1) 상기고장은 고장 소거 후, 재현시험을 진행하여 지속적으로 발생될 경우 아래와 같이 조치한다. +2) CM 모터의 절연상태를 점검한다. +3) CMSB 내 IGBT 보드를 점검한다.', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('090c69da-2dbe-49df-9125-dcc2cfb2e482', '0503', '503', 'DCU#8 4위(L2)-출입문 내부비상핸들 취급(EED)', 'Tc2', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('090cd734-b0e6-4052-bb73-e50c75bc769b', '0509', '509', 'DCU#6 3위(R2)-출입문 잠김 리미트 스위치 고장', 'M3', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 "DLS Failure” 신호가 "1"이 되면 검지.', '출입문 잠김 상태 확인 불가', '1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('091a711e-12a7-4fa7-a0a3-94df48cdc606', '0505', '505', 'DCU#3 1위(R1) - 출입문 입력 고전압', 'M2', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 “1”이 되면 검지 +', '고전압 상태(그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상 +', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('0945d623-c311-4f39-a1f2-a9e4526bc316', '0502', '502', 'DCU#2 4위(L2)-출입문 장애물검지', 'M1', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('095163e4-8da5-46f4-ba4e-fc3e55b18557', '0812', '812', '출력증폭기#2(AMP) 고장(Car#1)', 'Tc1', 'C', '통합방송표시기-출력증폭기#2(AMP) 고장', 'C', 'TCMS', '통합방송표시기의 RS485 데이터 중 통합방송표시기-TCMS SD TEXT9의 Bit4 “AMP#2 고장” 신호가 "1"이 되면 검지.', '고장장치 통신 불량으로 실내 출력 반절 불능', '마스터 통합방송제어기에 주기적(2초) TCP 응답이 없을 경우 통신 불량으로 판단', '마스터 통합방송제어기에 TCP 응답 재개', '관련 CB(방송/표시기/CCTV 전원공급장치2, CBPAU# +2) 리셋하고 통신라인 및 상태 점검. +관련도면 RES12001HN0, REC70700HN0', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('09525c0b-bcb3-4e50-bede-a119071f0987', '1520', '1520', 'TU 모듈고장 - AUX3(Car5)', 'T2', 'C', 'TU 모듈고장 - AUX3', 'C', 'TCMS', 'TU의 AUX3 PCB가 이 정상적으로 인식되지 않아 점검이 필요할 때 +', '1) TU의 AUX PCB가 모듈 고장이 발생하면, 해당 TU의 모든 디지털 출력 불가 +2) 해당 차량의 실내등 제어 및 라인플로우팬 제어 불가 +3) 해당 TU가 M1 차량 인 경우 판토제어 상승/하강 변경 불가(판토 및 공기압축기 제어) +4) 해당 TU가 T1 차량 인 경우 연장급전상태 제어 불가', 'TU AUX3의 ID를 정상적으로 검출하지 못할 때 화면에 현시 +', 'TU AUX3의 ID를 정상적으로 검출하는 경우 소거됨.', '1) TU의 AUX3 PCB 교체 +2) 불량 해소가 되지 않을 경우, 순차적으로 SCM, DIM PCB를 교체하여 정상여부 확인', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('095495b4-aca8-4112-a6cc-90d4e10745c8', '0738', '738', 'HVAC#2-전자접촉기 증발기3(CREF) 고장', 'M1', 'C', 'HVAC-전자접촉기 증발기3(CREF) 고장', 'C', 'HVAC', 'HVAC 냉방작동 중 CREF3 전자접촉기 고장 발생.', 'UNIT2 냉방 작동 불가', '냉방작동 중 2.5초 이상동안 CREF3 작동 feedback 신호가 수신되지 않는 경우', 'CREF3 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CREF3을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CREF3과 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('0969f047-ce1c-41b9-9c8d-4f494c72e19b', '0884', '884', 'CCTV 모니터(CTM) 고장(Car#8)', 'Tc2', 'C', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('0972c0ba-72b4-4aa7-8fa2-f968351cede2', '0716', '716', 'HVAC#6 - 냉난방장치1 압력스위치1(DPS) 고압', 'M3', 'D', 'HVAC-냉난방장치1 압력스위치1(DPS) 고압', 'D', 'HVAC', '냉난방장치1 냉매 압력스위치2 고압 발생 +', 'UNIT1CYCLE1 냉방기능불가', 'UNIT1DSP1측 냉매압력이 3초 이상 28±1(kgf/cm2) 이상 되는 경우 +', '냉매압력이 정상수치 15±0.7(kgf/cm2) 이하로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CRCM1의 부하측 전류를 측정하여 응축기 팬의 동작여부를 확인한다. +2) 응축기 코일의 전면에 이물질로 인한 막힘이 있는지 확인한다. +3) 응축기 팬 상부 그릴에 외부 이물질로 인한 막힘이 있는지 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('097ac654-00b1-4cc8-ad2f-535019c14ca3', '0519', '519', 'DCU#7 2위(L1) - ZVR 신호 에러', 'M4', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 “ZVR signal error” 신호가 “1”이 되면 검지 +', '출입문이강제로 닫히게 되고, 열림은 불가능', ' +1) 차량 ZVR 신호가 없는 상태(차량 주행상태)에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함. +', '해당 출입문 ZVR 신호 수신', '1) 차량 이 주행중이라면, 차량 이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('09a3b9c9-3b3d-4693-8540-f303f592ef18', '0504', '504', 'DCU#7 1위(R1) - 출입문 외부 비상핸들 취급(EAD)', 'M4', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('09b1ce41-f34a-4428-a92b-83d061f00e2c', '0036', '36', '주차제동 동작', 'Tc1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('09b2eae6-d383-464f-a398-1535e34841f2', '0241', '241', 'BECU#4-1축스키드신호', 'T1', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('09ca1041-1b9c-4274-8f21-a76ffabef3e4', '0219', '219', 'BECU#6 - 제동지령 비정상', 'M3', 'C', 'BECU-제동지령 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit2 “제동지령 비정상” 신호가 “1”이 되면 검지 +', '해당 차량 제동지령비정상 검지 현시 및 해당 차량 정상적인제동제어불가(상용제동지령에 따른 제어)', '해당 차량의 제동지령 신호가 정상범위를 벗어남. (5.0 ~ 95.0%) +', '해당 차량의 제동지령 신호가 정상범위일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 소거되지 않을 경우 해당 선택 운전실의 PWM 엔코더를 리셋(CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('09d5fe1f-e719-4987-b0d8-4f0d028e868e', '0404', '404', 'SIV#1 - AC 출력과전압(ACOV)', 'Tc1', 'C', 'SIV-AC 출력과전압(ACOV)', 'C', 'SIV', '보조전원장치(SIV)의 RS485 데이터 중 SIV-TCMS SD TEXT4의 Bit2 “ACOV” 신호가 “1”이 되면 +검지 +', '1) TCMS 화면하단 또는 고장화면에 ‘SIV AC 출력 과전압 검지' 표시됨. +2) 보조전원장치(SIV)는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 보조전원장치 중고장이 발생됨. +5) 중고장이 발생되면 TCMS 일반화면에 보조전원장치 상태 붉은색으로 표기되며, 연장급전 됨.', '보조전원장치(SIV)에서 출력되는 ACU, V, W 상의 전압이 500V 이상일 경우 검지됨. +', '1) 경고장이 발생할 경우 보조전원장치(SIV) 자동 재기동에 의해 재기동 됨. +2) 중고장이 발생했을 경우 조치 완료 후 보조전원장치(SIV) 리셋으로 고장 소거됨.', '1) 상기 고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 보조전원장치(SIV) 고장기록을 수집하여 출력되는 3상의 AC 전압값 확인함. +3) 특정상의 전압치가 비정상적일 경우 특정상에 해당되는 GDU, 전압센서, AC 출력단 결선을 확인한다. +4) 전압센서와 보조전원장치(SIV) 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작 상태를 시험기를 통해 확인한다. +6) 출력단 각 상의 절연상태 및 각상과 접지 간의 절연상태를 확인한다. +7) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('09ececfb-dee9-42dc-a09f-16e4f2e1b229', '0509', '509', 'DCU#2 4위(L2) - 출입문 잠김 리미트 스위치 고장', 'M1', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 “DLS Failure” 신호가 “1”이 되면 검지 +', '출입문 잠김 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('09ee38c6-40d2-456c-b47b-32ea733cba06', '1104', '1104', 'PSD#8-차상 메모리고장(1계)', 'Tc2', 'C', 'PSD-차상 메모리고장', 'D', 'PSD', 'PSD 의 RS485 데이터 중 PSD-TCMS SD TEXT5(TEXT6)의 Bit6 “차상 메모리고장” 신호가 "1"이 되면 검지. (차상제어장치 로그 기록용 메모리 고장)', '차상장치 이벤트 발생시. (각종 신호) 출입문 열림, 마스콘KEY ON등등 +PSD 열림 닫힘이 연동되는 역사 , 연동되지 않는 역사가 있음. +PSD 고장코드가 지상설비로 전달되면 차상 ERROR코드 Interlock회로에 의하여 차단될수 있으며 이 회로가 적용된 역사는 PSD가 가동되지 않는다. 그외 역사는 전동차 출입문에따라 가동됨.', '로그 기록용 메모리 고장', '메모리 고장이라도 무선통신기능은 정상동작 하므로 기관사는 전동차 출입문 개/폐시 PSD 상태를 주의하여 확인하고, 차상장치 메모리 고장 코드로으로 인하여 PSD 열림 및 닫힘이 동작하지 않는 역사는 조작반으로 수동취급 실시 한다. 기관사는 주의 운행을 한다. +차량사업소 복귀시 해당장치는 점검을 하도록 한다.', null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('09fd53d1-ceef-4284-9710-26c975ae6642', '0419', '419', 'SIV#1-시퀀스 고장(SQCFLT)', 'Tc1', 'C', 'SIV-시퀀스 고장(SQCFLT)', 'C', 'SIV', '보조전원장치(SIV)의 RS485데이터 중 SIV-TCMS SD TEXT6의 Bit4 "SQCFLT"신호가 "1"이 되면 검지.', '1) 보조전원장치(SIV) 일반화면에 보조전원장치 상태 붉은색으로 표시됨. +2) 보조전원장치(SIV)는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 보조전원장치(SIV) 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 보조전원장치(SIV) 상태 붉을색으로 표기되며, 연장급전 됨.', '1) 보조전원장치(SIV)에 고압인가 후 60초 이내 출력전압 공급 불가 시. +2) 기동 중 컨텍터(CHK, LK, SIVK), FC, 릴레이, 전압센서등 보조전원장치 내부 부품 불량발생 시 +3) DIO, SEN 보드 불량 또는 결선라인 이상 발생 시', '1) 경고장이 발생할 경우 보조전원장치(SIV) 자동 재기동에 의해 재기동 됨. +2) 중고장이 발생했을 경우 조치 완료 후 보조전원장치(SIV) 리셋으로 고장 소거됨.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 보조전원장치(SIV) 고장기록을 수집하여 동작과정 중 이상이 있는지 확인한다. +3) 보조전원장치(SIV) 내부 구성품의 상태 및 광케이블 상태, 결선상태, 릴레이 상태를 확인한다. +4) 전압(입력단, FC단)센서 상태확인 및 보조전원장치(SIV) 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) 컨텍터의 주접점, 보조접점의 상태확인 및 보조전원장치(SIV) 제어기 DIO 보드에 연결되는 저전압 배선상태를 확인한다. +6) 충전저항 및 방전저항의 상태를 확인한다. +7) DIO, SEN 보드의 동작상태를 시험기를 통해 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('0a095161-8fc5-4505-ae1a-d1cb7deda0fa', '0834', '834', '비상인터폰#2(PEI) 고장(Car#3)', 'M2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('0a0ab6eb-5123-4fba-9a94-160c3997e86b', '0509', '509', 'DCU#1 5위(R3) - 출입문 잠김 리미트 스위치 고장', 'Tc1', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 “DLS Failure” 신호가 “1”이 되면 검지 +', '출입문 잠김 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('0a1619cc-2646-4ed9-ac3e-309a3f5e69b2', '1212', '1212', 'FDU#5-', 'T2', '0', null, null, 'FDU', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('0a2c38f3-1185-47b0-be92-9c38bb49f6cc', '0417', '417', 'SIV#1 - 배터리 충전기 출력과전압(BCOV)', 'Tc1', 'C', 'SIV-배터리 충전기 출력 과전압(BCOV)', 'C', 'SIV', '보조전원장치(SIV)의 RS485 데이터 중 SIV-TCMS SD TEXT5의 Bit7 “BCOV” 신호가 “1”이 되면 +검지 +', '1) TCMS 화면하단 또는 고장화면에 ‘배터리 충전기 출력 과전압 검지' 표시됨. +2) 보조전원장치(SIV)는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 보조전원장치 중고장이 발생됨. +5) 중고장이 발생되면 TCMS 일반화면에 보조전원장치 상태 붉은색으로 표기되며, 연장급전 됨.', '보조전원장치(SIV)의 배터리 충전부에서 출력되는 DC 전압이 150V 이상일 경우 검지됨. +', '1) 경고장이 발생할 경우 보조전원장치(SIV) 자동 재기동에 의해 재기동 됨. +2) 중고장이 발생했을 경우 조치 완료 후 보조전원장치(SIV) 리셋으로 고장 소거됨.', '1) 상기 고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 보조전원장치(SIV) 고장기록을 수집하여 배터리 충전부에서 출력되는 DC 전압값을 확인함. +3) 전압값이 비정상적일 경우 전압센서, DC 출력단 결선을 확인한다. +4) 전압센서와 보조전원장치(SIV) 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작 상태를 시험기를 통해 확인한다. +6) 출력단의 절연상태 및 접지 간의 절연상태를 확인한다. +7) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('0a2cabe8-7847-4423-a6bb-86bfafd86453', '0721', '721', 'HVAC#5 - 냉난방장치2 압력스위치2(DPS) 냉매부족', 'T2', 'C', 'HVAC-냉난방장치2 압력스위치2(DPS) 냉매부족', 'C', 'HVAC', '냉난방장치2 냉매 압력스위치2 저압 발생 +', 'UNIT2CYCLE2 냉방 기능 불가', 'UNIT2DSP2측 냉매압력이 30초 이상0.5±0.3(kgf/cm2) 이하로 떨어지는 경우 +', '냉매압력이 정상수치 2±0.5(kgf/cm2) 이상 유지하도록 하고, 마이콤전원을 리셋', '1) 배전반 점검 커버를 열고 마이콤 전원을 리셋한 후, 냉방 가동 시, CREF4의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)을 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설 여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안 되는 것을 확인한 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('0a55c26f-c9f5-4870-9120-2ff61ec0bb8e', '0510', '510', 'DCU#4 3위(R2) - 출입문 닫힘 리미트 스위치1 고장', 'T1', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 “DCS1 Failure(Leftt)” 신호가 “1”이 되면 검지 +', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('0a6cfe46-b5fa-49e2-a8bf-cb2101d96358', '0105', '105', 'VVVF#7 - 상전류 불평형 검지(PUD)', 'M4', 'C', 'VVVF-상전류 불평형 검지(PUD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT29의 Bit0 “PUD” 신호가 “1”이 되면 검지 +', '1) TCMS 화면 하단 또는 고장화면에 ‘상전류 불평형 검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생함. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉은색으로 표기되며, HSCB, LB1, 2 개방되어 동력 손실 발생함.', '추진제어장치에서 견인전동기로 출력되는 U, V, W 상 전류의 합이 300A 이상일 경우 검지됨. +', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반 배전반의 VVVFIC NFB 재투입 또는 차량 배터리 전원 재투입', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 견인전동기로 출력되는 3상의 전류치 확인함. +3) 특정상의 전류치가 비정상적일 경우 특정상에 해당되는 IPM, 전류센서, 모터결선을 확인한다. +4) 전류센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작 상태를 시험기를 통해 확인한다. +6) 견인전동기 각상의 절연상태 및 각상과 접지 간의 절연상태를 확인한다. +7) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('0a6ea1b5-b3be-47d9-9a69-e2c0a38b00af', '0157', '157', 'VVVF#7 - FC충전불량(FCD)', 'M4', 'C', 'VVVF-FC 충전불량검지(FCD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT33의 Bit6 “FCD” 신호가 “1”이 되면 검지 +', '1) TCMS 화면 하단 또는 고장화면에 ‘FC 충전 불량 검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생함. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉은색으로 표기되며, HSCB, LB1, 2 개방되어 동력 손실 발생함.', '추진제어장치 기동 시 FC전압이 1,000V 이하일 경우 검지됨. +', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반 배전반의 VVVFIC nfb 재투입 또는 차량 배터리 전원 재투입', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 FC전압에 이상이 있는지 확인한다. +3) 추진제어장치 내부 고전압부에 소손흔적이 있는지 확인한다. +4) LB Box 내부의 충전저항기의 소손이 없는지 확인한다. +5) FC에 연결된 부스바의 체결상태가 양호한지 확인한고, 부스바를 분리하여 FC의 Capacitance를 측정하여 이상이 없는지 확인한다. +6) 전압센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +7) SEN 보드의 동작 상태를 시험기를 통해 확인한다. +8) 견인전동기 각상의 절연상태 및 각상과 접지 간의 절연상태를 확인한다. +9) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('0a701209-8768-42a5-9f8b-115d82456649', '0511', '511', 'DCU#3 2위(L1)-출입문 닫힘 리미트 스위치2 고장', 'M2', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 "DCS2 Failure(Right)” 신호가 "1"이 되면 검지.', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('0a774a89-38bb-4e92-a4eb-57142db26c45', '0427', '427', 'IVS 서비스위치 아님(Car8)', 'Tc2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('0a8cd1e9-09f7-4b68-864a-4a68b9ea7017', '0183', '183', 'VVVF#6 - Over Load(OL)', 'M3', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('0a8ff04b-59b5-429e-a014-756dfe588b27', '0512', '512', 'DCU#1 2위(L1)-파라미터 로딩 실패', 'Tc1', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 "Paraneter error” 신호가 "1"이 되면 검지.', 'Parameter error 현시 (출입문은 정상작동 가능)', 'DCU 자체내의 EEPROM으로부터 parameter 데이터 로딩 실패', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('0a98910e-bd4d-4273-b8f3-8ef6e9082357', '0723', '723', 'HVAC#8-냉난방장치1 압력스위치2(DPS) 냉매부족', 'Tc2', 'C', 'HVAC-냉난방장치1 압력스위치2(DPS) 냉매부족', 'C', 'HVAC', '냉난방장치1 냉매 압력스위치2 저압 발생.', 'UNIT1 CYCLE2 냉방 기능 불가', 'UNIT1 DSP2측 냉매 압력이 30초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우', '냉매 압력이 정상 수치 2±0.5(kgf/cm2 이상 유지하도록 하고, 마이콤 전원을 리셋', '1) 배전반 점검 커버를 열고 마이콤 전원을 리셋한 후, 냉방 가동 시, CREF2의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)을 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안되는 것을 확인한 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('0a9e65a3-9619-41d2-9099-16895e7926c9', '0517', '517', 'DCU#5 2위(L1)-출입문 장애물로 인한 열림 실패', 'T2', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Open failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘상태로 대기', '도어 열림 중 3회 장애물 감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 열림 시, 장애물 감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('0ac94040-38a4-4263-8d20-f27b7588344a', '0724', '724', 'HVAC#8-냉난방장치1 압력스위치1(DPS) 냉매부족', 'Tc2', 'C', 'HVAC-냉난방장치1 압력스위치1(DPS) 냉매부족', 'C', 'HVAC', '냉난방장치1 냉매 압력스위치1 저압 발생.', 'UNIT1 CYCLE1 냉방 기능 불가', 'UNIT1 DSP1측 냉매 압력이 30초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우', '냉매 압력이 정상 수치 2±0.5(kgf/cm2 이상 유지하도록 하고, 마이콤 전원을 리셋', '1) 배전반 점검 커버를 열고 마이콤 전원을 리셋한 후, 냉방 가동 시, CREF2의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)을 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안되는 것을 확인한 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('0ad8d043-e906-4e64-8ea5-d4345b781602', '0514', '514', 'DCU#3 1위(R1)-출입문 닫힘 시간 초과', 'M2', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 "Close time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 닫힘 동작시간이 7초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도 한 후, '장애물로 인한 닫힘실패' 고장과 함께 'Close time out' 고장이 함께 현시', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('0aefa39e-6f4f-437f-b79d-bdbdbef09420', '0208', '208', 'BECU#3-공기제동장치고장', 'M2', 'C', 'BECU-공기제동장치고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit7 “공기제동장치고장” 신호가 "1"이 되면 검지.', '해당 차량 공기제동장치고장 검지 현시 및 해당 차량 정상적인 제동제어 불가.', '해당 차량 BECU의 자가진단 시 고장 발생 또는 AC압력센서 고장.', '해당 차량 BECU의 자가진단 시 정상적일 경우 또는 AC압력센서가 정상일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('0afaf15d-216f-4473-8e50-ae88f466e940', '0518', '518', 'DCU#1 6위(L3)-출입문 Enable 신호 에러', 'Tc1', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 "Enable signal error” 신호가 "1"이 되면 검지.', 'DCU 출입문 Enable 신호 에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) 취급시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함.', '해당출입문 enable 신호 수신', '1) AUTO/MCS 모드시에는 YARD모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인한다. (YARD/FMC 모드시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('0b2092b6-3d78-4fe6-8347-e1f7284b4a06', '0516', '516', 'DCU#5 1위(R1) - 출입문 장애물로 인한 닫힘 실패', 'T2', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Close failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림 상태로 대기', '도어 닫힘 중 3회 장애물감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('0b24cac3-2ad6-40d4-9933-36dcc208a4ed', '0851', '851', '실내카메라#1(SCAM) 고장(Car#5)', 'T2', 'C', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('0b378b6a-9778-4f84-a6e5-2cf25e341fff', '0137', '137', 'VVVF#6 - 전동기 과전류 검지(MMOCD)', 'M3', 'C', 'VVVF-전동기 과전류 검지(MMOCD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT31의 Bit2 “MMOCD” 신호가 “1”이 되면 검지 +', '1) TCMS 화면 하단 또는 고장화면에 ‘전동기 과전류 검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생함. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉은색으로 표기되며, HSCB, LB1, 2 개방되어 동력 손실 발생함.', '추진제어장치에서 견인전동기로 출력되는 U, V, W 상의 전류가 1, 850A 이상일 경우 검지됨. +', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반 배전반의 VVVFIC nfb 재투입 또는 차량 배터리 전원 재투입', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 견인전동기로 출력되는 3상의 전류치 확인함. +3) 특정상의 전류치가 비정상적일 경우 특정상에 해당되는 IPM, 전류센서, 모터결선을 확인한다. +4) 전류센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작 상태를 시험기를 통해 확인한다. +6) 견인전동기 각상의 절연상태 및 각상과 접지 간의 절연상태를 확인한다. +7) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('0b396a5c-aeef-46a7-a7c7-d70e993d3aa9', '0230', '230', 'ECU 전원공급 고장(Car3)', 'M2', 'B', 'ECU 전원공급 고장', 'B', 'BECU', '해당 차량의 ECU 전원공급 고장(CB OFF) 발생 시 검지 +', '해당 차량의 ECU 전원공급 고장검지 현시', '해당 차량의 ECU 전원차단(CBOFF) +', '해당 차량의 ECU 전원공급(CBON)', 'BECU를 리셋(BECUCBOFF/ON)하여 소거 여부 확인, 지속적으로 고장 발생 시 관제 보고하고 지시에 따를 것', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('0b45cc0a-d159-47a8-91d6-e6d4a277275d', '0095', '95', 'PWM 엔코더#2 고장(Car1)', 'Tc1', 'B', 'PWM 엔코더#2 고장(TC1)', 'B', 'VVVF', '차량으로부터 PWM ENCODER#1(#2) FAULT 신호 미입력시', '1) 엔코더 1계 PWM 출력 고장시 1계 고장에 해당되는 신호 출력 +2) 엔코더 2계로 자동 절체 +3) 엔코더 2계 PWM 출력 고장시 1계, 2계 고장 모두 출력 +4) 엔코더 PWM 출력 신호 없음', '1) 엔코더 1계 PWM 출력 신호 이상 시 +2) 엔코더 2계 PWM 출력 신호 이상 시 +3) 엔코더 1계, 2계 PWM 출력 신호 이상 시 +4) 엔코더 수동절체버튼 3초 이상 조작 시', '1) 엔코더의 전원 차단 후 재투입하여 소거되는지 확인 +2) 수동절체버튼의 조작으로 인한 고장 출력 또한 전원 재투입으로 소거함', '1) 엔코더의 전원 차단 후 재투입하여 소거되지 않을 시 정상품으로 교체하여 정상동작 확인 +2) 교체된 고장품의 고장원인 분석', ' +REC20210HN0', '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('0b571250-7e7a-4f4c-934a-03dd1cbd26a7', '0511', '511', 'DCU#3 1위(R1)-출입문 닫힘 리미트 스위치2 고장', 'M2', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 "DCS2 Failure(Right)” 신호가 "1"이 되면 검지.', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('0b599f12-8277-43ec-9cf6-f21eb21c2855', '0216', '216', 'BECU#5-전두대차 AS압력센서고장', 'T2', 'C', 'BECU-전두대차 AS압력센서 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit7 “전두대차 AS압력센서 고장” 신호가 "1"이 되면 검지.', '해당 차량 전두대차 AS압력센서 고장 검지 현시 및 해당차량 정상적인 응하중 제동제어 불가.', '해당 차량의 전두대차 AS 압력센서(AS1, AS2) 고장.', '해당 차량의 전두대차 AS 압력센서(AS1, AS2)가 정상일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('0b59b24a-87bc-4029-b04c-68561cb0d2f6', '0891', '891', '비상인터폰#2(PEI) 고장(Car#8)', 'Tc2', 'C', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('0b6fff61-793d-4c55-b156-bd6aa8647ea8', '0505', '505', 'DCU#6 4위(L2) - 출입문 입력 고전압', 'M3', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 “1”이 되면 검지 +', '고전압 상태(그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상 +', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('0b8fbb20-8da2-41f5-b663-6532b68afa72', '0520', '520', 'DCU#7 1위(R1) - 이중계 절체 동작', 'M4', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 “Module switchover” 신호가 “1”이 되면 검지 +', '이중계 절체 동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러) 이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A'모듈 및 ‘B'모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('0b941333-6f00-4963-b204-efa2afcc6de5', '0700', '700', 'HVAC#8 통신고장', 'Tc2', 'C', 'HVAC-통신고장', 'C', 'HVAC', 'HVAC와 TCMS 간 RS485 통신고장이 검지되면 발생 +', '화면상 HVAC의 실내온도, 운전모드 등의 데이터가 반응하지 않음.', ' +1) 마이콤 전원 CB OFF +2) 통신연결 불량 +3) 해당 마이콤이 검수요원에 의해 firmware 업데이트 중인 경우 +', '해당 차량의 마이콤 및 CU/TU의전원이정상상태이고, 통신라인 연결 상태가 정상', '1) 냉난방 배전반의 점검커버를 열고, 마이콤이 정상적으로 켜져 있는지 확인한다. +2) 만약 마이콤 전원이 꺼져 있다면, 마이콤 DC 전원 CB 및 차량 배전반에 위치한 냉난방장치 CB가 정상적으로 켜져 있는지 확인한다. +3) 마이콤이 정상적으로 켜져 있는 데도 지속적으로 통신고장이 검지되면, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀 밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('0bba193a-7745-4719-8943-5efdeb51d9d6', '0835', '835', '비상인터폰#1(PEI) 고장(Car#3)', 'M2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('0be47125-187b-4915-8e2a-3964f58aba18', '0730', '730', 'HVAC#7 - 냉난방장치1 토출 센서 고장', 'M4', 'C', 'HVAC-냉난방장치1 토출 센서 고장', 'C', 'HVAC', '냉난방장치1의 토출 센서 고장 발생 +', '냉난방장치1 토출 센서 고장현시', '온도센서 검지범위는 -45 ~ 85도(820 ~ 1,330Ω)인데, 2초 이상 검지범위를 벗어나는 경우 +', '온도센서 검지값이 2초 이상 허용온도 범위 내일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820 ~ 1,330Ω을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('0bf8bd6f-c3a7-47e5-98b7-e67ce7a87981', '0503', '503', 'DCU#1 5위(R3)-출입문 내부비상핸들 취급(EED)', 'Tc1', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('0bf90ab2-b845-4e07-8dae-21c73ae98d82', '0502', '502', 'DCU#5 4위(L2)-출입문 장애물검지', 'T2', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('0c223220-fd35-4811-8304-607f41c2d6e4', '0179', '179', 'VVVF#7-LB2 투입불량(LB2NC)', 'M4', 'C', 'VVVF-LB2 투입불량(LB2NC)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT34의 Bit4 “LB2NC” 신호가 "1"이 되면 검지.', null, 'LB2 투입이 되지 않을 때 고장검지.', '동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) 판토하강상태에서 테스트모드로 전환하여 시퀀스를 투입하고 LB2의 주접점 동작을 확인한다. +2) 주회로 차단기함 내에 LB2의 보조접점의 동작상태를 확인한다. +3) 추진제어장치 계전기 유니트에 LB2R 계전기 상태를 확인하여 계전기의 동작 여부를 확인한다. +4) 추진제어장치 시험기를 이용하여 제어기 시험을 실시하여 이상여부를 확인한다.', null, '3', '2025-10-12 01:21:37.578803+00', null, '로템40량(2018)-1단계', 'Rotem'), ('0c27d049-f101-4947-a057-22c1730e3f2a', '0510', '510', 'DCU#8 5위(R3) - 출입문 닫힘 리미트 스위치1 고장', 'Tc2', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 “DCS1 Failure(Leftt)” 신호가 “1”이 되면 검지 +', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('0c329f37-2c40-4866-a6f9-5a524c402b26', '0505', '505', 'DCU#7 4위(L2)-출입문 입력 고전압', 'M4', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 "1"이 되면 검지.', '고전압 상태. (그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('0c3e13a8-c346-43be-8347-cbef3ff1f1eb', '0506', '506', 'DCU#5 2위(L1)-출입문 입력 저전압', 'T2', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 "1"이 되면 검지.', '저전안 상태 (출입문 동작이 심하게 느려지거나 작동조차 안될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('0c51baec-3458-46cd-98a9-19676c8b490a', '1525', '1525', 'TCMS 데이타버스1 우측라인 통신 이상(Car6)', 'M3', 'C', 'TCMS 데이터버스1 우측라인 통신 이상', 'C', 'TCMS', 'TCMS의 초기 기동 시 자기진단에 의한 2중계 메인통신선 중 1계 메인통신 이상 검지 시 +', '1) SL-NET 2중계이므로 데이터버스 2계로 정상통신, 운행에 지장 없음. +2) 초기기동 자기진단 시 2중계를 점검하여 1계측의 이상이 검지되었다는 점검 필요용 메시지', '초기 기동 시 SL-NET 1계와 2계를 각각 통신 후 비교하여 2계는 정상통신이 되나 1계는 정상통신이 안 되는 경우 +', '정상 수리 후 차량 전체 재기동하여 SL-NET 1계와 2계 모두 정상통신이 되는 경우', '1) 고장검출호차와 고장검출 우측호차와의 SL-NET 통신 1계 정상여부 확인(예 : 고장호차가 3호차인 경우, 1-2-3-4-5-6-7-8에서 3호차의 우측 즉, 3-4호차 간 SL-NET 1계 통신 상태 점검 필요) +2) 고장검지호차의 SCM PCB 교체 정상여부 확인 +3) 고장검지호차의 우측호차 SCM PCB 교체 정상여부 확인 +4) 고장검지호차와 고장검지 우측호차의 SL-NET 1계 메인통신 배선의 연결 상태 확인 +5) 상기 2 ~ 4번 점검에도 정상적으로 복귀되지 않는 경우, CU/TU ASS'Y 교체(백보드 확인 필요)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('0c5923ee-724d-459e-a60a-691a63e1d8d7', '0020', '20', '비상제동 스위치 취급(측면)', 'Tc2', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('0c5e1d71-ee12-4051-b72c-b15be344ac7d', '0207', '207', 'BECU#6-자기진단고장', 'M3', 'C', 'BECU-자기진단고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit6 “RAM 점검 고장” 신호가 "1"이 되면 검지.', '해당 차량 자기진단고장 검지 현시 및 해당 차량 활주제어 불가.', '해당 차량 BECU의 자가진단 시 고장 발생(활주방지밸브 고장).', '해당 차량 BECU의 자가진단 시 정상적일 경우 소거(활주방지밸브 정상).', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('0c70ab78-00b2-4200-addc-9e2710d685b1', '0737', '737', 'HVAC#2-전자접촉기 증발기4(CREF) 고장', 'M1', 'C', 'HVAC-전자접촉기 증발기4(CREF) 고장', 'C', 'HVAC', 'HVAC 냉방작동 중 CREF4 전자접촉기 고장 발생.', 'UNIT2 냉방 작동 불가', '냉방작동 중 2.5초 이상동안 CREF4 작동 feedback 신호가 수신되지 않는 경우', 'CREF4 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CREF4를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CREF4와 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('0c7ff4f0-1b4d-41bb-b3dd-a4994ac4cd7a', '0505', '505', 'DCU#8 5위(R3)-출입문 입력 고전압', 'Tc2', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 "1"이 되면 검지.', '고전압 상태. (그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('0c811e19-d751-47d5-8e0d-48dc39596705', '0200', '200', 'BECU#8 통신고장', 'Tc2', 'B', 'BECU-통신고장', 'B', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT23의 ‘Life sign'이 변하지 않음. +', '해당 차량 통신고장현시 및 해당 차량의 제동압력(BCP) 등의 데이터가 반응하지 않음. (고장은 현시되나 제동제어는 정상적일 수 있음.)', 'BECU 전원 CBOFF 혹은 통신연결 불량 +', 'BECU와 TCMS 간 RS485 통신이 복귀되어 BECU-TCMSSDTEXT23의'Lifesign'이 변동 시 소거', 'BECU를 리셋(BECUCBOFF/ON) 후 복귀여부를 확인, 리셋 후 복귀되지 않을 경우 관제 보고하고 지시에 따를 것', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('0c836287-6791-48c7-8963-2c61b5662422', '0521', '521', 'DCU#3 4위(L2) - 모듈 상태 이상', 'M2', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 “01” 또는 “00”이 되면 +검지 +', '이중계절체동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러)이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('0c967f5f-f81f-41f6-98f4-622ba8b38fec', '0501', '501', 'DCU#2 3위(R2)-출입문 차단', 'M1', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('0cbf07fc-f52e-4d10-a204-c34c3e634a3b', '0202', '202', 'BECU#8-덤프밸브고장(전두대차)', 'Tc2', 'C', 'BECU-덤프밸브고장(선두대차)', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit1 “덤프밸브고장(선두대차)” 신호가 "1"이 되면 검지.', '해당 차량 덤프밸브고장(선두대차) 검지 현시 및 해당 차량 활주제어 불가.', '해당 차량 선두대차의 덤프밸브가 작동하지 않음.', '해당 차량 선두대차의 덤프밸브가 정상 작동 시 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('0ccc1b13-3fb2-429e-b2c7-46660ad8c2cb', '0510', '510', 'DCU#3 5위(R3) - 출입문 닫힘 리미트 스위치1 고장', 'M2', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 “DCS1 Failure(Leftt)” 신호가 “1”이 되면 검지 +', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('0cd47828-f09b-48c8-9d4e-0bfe90a13dd7', '0501', '501', 'DCU#2 2위(L1) - 출입문 차단', 'M1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('0cdf95b8-6e2f-4eff-87b8-80e88250225e', '0717', '717', 'HVAC#2 - CO2 센서2 고장', 'M1', 'C', 'HVAC-CO2 센서2 고장', 'C', 'HVAC', '객실 CO2 센서2 고장 발생 +', 'CO2 센서2 고장 현시', 'CO2 센서의 검지범위는 0 ~ 4,000ppm(2 ~ 10Vdc)인데, 1초 이상 출력전압이 2Vdc(0ppm) 미만으로 떨어지는 경우 +', 'CO2 센서 검지값이 1초 이상 2Vdc(0ppm) 이상 지속되는 경우', '1) 전원을 인가한 상태에서 CO2 센서 커버를 열고 테스터기를 통해 ‘OUT2' 단자와 ‘G' 단자 간의 전압이 2Vdc 미만인지 확인한다. +2) 만약 전압이 2Vdc 이상인데도 고장이 지속될 경우 마이콤을 교체한다. +3) 만약 전압이 2Vdc 미만으로 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('0cf0998d-92c0-46ec-97e9-c5ac66a5f974', '0513', '513', 'DCU#2 4위(L2)-모듈 상태체크 에러', 'M1', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 "Module check error” 신호가 "1"이 되면 검지.', 'Module check error 현시 (출입문은 정상작동 가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태체크 기능에 이상이 생긴 경우 고장 발생.', 'DCU의 'A'모듈과 'B'모듈 간, 상태체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('0cf178eb-0f03-4255-b39c-d06ce088b853', '0508', '508', 'DCU#6 6위(L3)-출입문 모터/인코더 고장', 'M3', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 "Motor / Encoder failure” 신호가 "1"이 되면 검지.', '출입문 정상동작 불가', '1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우 (인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터 / 인코더 회로가 손상된 경우', '모터/인코더 및 DCU가 정상상태이고, 전기적 연결상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있느지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. +★ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. + +1. DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. +2. DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) +3. DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('0cf3ba9d-1aca-444c-be86-5f19cf41d934', '0502', '502', 'DCU#8 1위(R1) - 출입문 장애물검지', 'Tc2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('0cf56d91-4e5c-4c0f-83b0-cd52c80000fc', '0520', '520', 'DCU#2 6위(L3) - 이중계 절체 동작', 'M1', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 “Module switchover” 신호가 “1”이 되면 검지 +', '이중계 절체 동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러) 이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A'모듈 및 ‘B'모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('0cfd1511-c0cc-4c75-a24b-57a5ed39413c', '0708', '708', 'HVAC#1 - 냉난방장치1 증발기1 과부하', 'Tc1', 'C', 'HVAC-냉난방장치1 증발기1 과부하', 'C', 'HVAC', 'HVAC 냉방 작동 중 냉난방장치1 증발기 모터에 과부하 발생 +', 'UNIT1냉방 작동 불가', ' +1) 냉방 작동 중 UNIT1의 증발기 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CREF1과 연결된 THR5가 Trip 됨. +', 'UNIT1의 증발기모터의 과부하조건을 해소하여 정상 가능 상태로 만들고, THR5 및 마이콤 전원 리셋', '1) 냉난방 배전반의 점검커버를 열고, THR5의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR5의 전류 세팅값이 3A에 맞춰져 있는지 확인하여, 아닐 경우, (+) 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동시킨 후, THR5의 2차측 2, 4, 6 단자에서 각 단자 간 상간 전압이 AC 380V로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 증발기 단품 상태 에서 점검을 한다. +7) THR5의 2차측 2, 4, 6 단자에서 각 단자 간 권선저항이 모두 같은지 확인한다. (±10% 이하) (증발기 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT2의 증발기 모터의 결선을 해제한 후 4극 및 6극 모터의 권선저항을 확인 후, 문제가 있을 경우, 증발기 모터를 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR5 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('0d06433f-dda6-48df-b079-edf23caac7f5', '0718', '718', 'HVAC#2-CO2 센서1 고장', 'M1', 'C', 'HVAC-CO2 센서1 고장', 'C', 'HVAC', '객실 CO2 센서1 고장 발생', 'CO2 센서1 고장현시', 'CO2 센서의 검지범위는 0~4000ppm (2~10Vdc) 인데, 1초 이상 출력전압이 2Vdc (0ppm) 미만으로 떨어지는 경우', 'CO2 센서 검지 값이 1초 이상 2Vdc (0ppm) 이상 지속되는 경우', '1) 전원을 인가한 상태에서 CO2센서 커버를 열고 테스터기를 통해 'OUT2' 단자와 'G' 단자간의 전압이 2Vdc 미만인지 확인한다. +2) 만약 전압이 2Vdc 이상인데도 고장이 지속될 경우, 마이콤을 교체한다. +3) 만약 전압이 2Vdc 미만으로 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('0d19ce9b-a3b3-4c16-b786-9ea944a9069d', '0154', '154', 'VVVF#6 - 후진속도검지(BSD)', 'M3', 'W', 'VVVF-후진속도검지(BSD)', 'W', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT31의 Bit3 “BSD” 신호가 “1”이 되면 검지 +', '1) TCMS 화면 하단 또는 고장화면에 ‘후진속도검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨.', '추진제어장치에서 계산한 속도가 -5km/h 이하인 경우 검지됨. +', '경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 견인전동기 속도센서 상태를 확인하고, 속도센서가 연결된 경로 배선연결 상태를 확인한다. +3) PGI 보드의 동작 상태를 시험기를 통해 확인한다. +4) 속도신호에 이상이 없을 경우 운행기록을 수집하여 출발 시 정차제동에 이상이 없는지 확인 한다. +5) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('0d1d6cec-18a9-4a71-9763-49ea1ef2df7a', '0518', '518', 'DCU#4 6위(L3)-출입문 Enable 신호 에러', 'T1', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 "Enable signal error” 신호가 "1"이 되면 검지.', 'DCU 출입문 Enable 신호 에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) 취급시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함.', '해당출입문 enable 신호 수신', '1) AUTO/MCS 모드시에는 YARD모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인한다. (YARD/FMC 모드시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.392739+00', null, '로템40량(2018)-1단계', 'Rotem'), ('0d21fa79-44f4-4072-b2ed-3778ade7d06b', '0517', '517', 'DCU#2 3위(R2)-출입문 장애물로 인한 열림 실패', 'M1', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Open failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘상태로 대기', '도어 열림 중 3회 장애물 감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 열림 시, 장애물 감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('0d23fb89-1986-4bb5-bd05-cfc8a91948ca', '0701', '701', 'HVAC#1-냉난방장치2 압축기2 과부하', 'Tc1', 'C', 'HVAC-냉난방장치2 압축기2 과부하', 'C', 'HVAC', 'HVAC 냉방작동 중 냉난방장치2 압축기2 또는 응축기2 모터에 과부하 발생.', '냉방 기능 저하(전냉방시 반냉방으로 작동)', '1) 냉방작동 중 UNIT2의 압축기2 또는 응축기2 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRCM4와 연결된 THR4가 Trip 됨.', 'UNIT2의 압축기2 또는 응축기2 모터의 과부하 조건을 해소하여 정상 가능 상태로 만들고, THR4 및 마이콤 전원 리셋', '1) 냉난방배전반의 점검커버를 열고, THR4의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR4의 전류 세팅값이 11.5A에 맞춰져 있는지 확인하여, 아닐 경우, 십자 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동 시킨 후, THR4의 2차측 2,4,6 단자에서 각 단자간 상간 전압이 AC 380V으로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 압축기 및 응축기 단품 상태에서 점검을 한다. +7) THR4의 2차측 2,4,6 단자에서 각 단자간 권선저항이 모두 같은지 확인한다. (±10% 이하) (압축기2 및 응축기2 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT2의 압축기2 또는 응축기2 모터의 결선을 해제한 후 각 부품의 권선저항을 확인 후, 문제가 있는 부품을 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR4 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('0d375e70-12a2-4666-abbe-b29d8a23bd12', '0150', '150', 'VVVF#7 - 가선저전압검지(ESLVD)', 'M4', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('0d3e2d47-5d8a-4a51-80a9-3dd8fc4ec090', '0510', '510', 'DCU#2 6위(L3)-출입문 닫힘 리미트 스위치1 고장', 'M1', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 "DCS1 Failure(Leftt)” 신호가 "1"이 되면 검지.', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('0d5f7cfd-fc48-4275-aebb-4b3cf5976c3c', '0723', '723', 'HVAC#7 - 냉난방장치1 압력스위치2(DPS) 냉매부족', 'M4', 'C', 'HVAC-냉난방장치1 압력스위치2(DPS) 냉매부족', 'C', 'HVAC', '냉난방장치1 냉매 압력스위치2 저압 발생 +', 'UNIT1CYCLE2 냉방 기능 불가', 'UNIT1DSP2측 냉매압력이 30초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우 +', '냉매압력이 정상수치 2±0.5(kgf/cm2) 이상 유지하도록 하고, 마이콤전원을 리셋', '1) 배전반 점검 커버를 열고 마이콤 전원을 리셋한 후, 냉방 가동 시, CREF2의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)을 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설 여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안 되는 것을 확인한 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('0d6c0bb0-41c9-418b-8848-00215787f81b', '0503', '503', 'DCU#5 5위(R3)-출입문 내부비상핸들 취급(EED)', 'T2', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('0d729c49-b1be-4a5c-8484-7b23d9721aed', '0517', '517', 'DCU#1 6위(L3)-출입문 장애물로 인한 열림 실패', 'Tc1', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Open failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘상태로 대기', '도어 열림 중 3회 장애물 감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 열림 시, 장애물 감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('0d81807e-c496-4124-b173-da2a45029f2f', '0508', '508', 'DCU#4 4위(L2)-출입문 모터/인코더 고장', 'T1', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 "Motor / Encoder failure” 신호가 "1"이 되면 검지.', '출입문 정상동작 불가', '1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우 (인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터 / 인코더 회로가 손상된 경우', '모터/인코더 및 DCU가 정상상태이고, 전기적 연결상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있느지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. +★ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. + +1. DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. +2. DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) +3. DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('0d853afb-2b65-4fa8-b28f-cf29a0e4bda7', '0507', '507', 'DCU#7 2위(L1)-초기화 실패', 'M4', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 "Calibration failure” 신호가 "1"이 되면 검지.', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터고장, 장애물 감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우', '초기화 실패를 야기한 고장 코드를 확인하여 조치 후, 재 닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('0d91d1ff-51ca-4ce2-8b3d-c7b0eced2b84', '1207', '1207', 'FDU#1 - 감지기4 화재감지', 'Tc1', 'W', 'FDU-감지기4 화재감지 (Car1~8)', 'W', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 “Detector1 State” 신호가 “11”이 되면 검지 +', '화재상태현시(자동소거 안 됨.)', '하기 2가지 조건을 모두 만족하여야 화재신호가 출력 됨. (연동모드 동작) +1) 이웃한(앞 혹은 뒤에 위치한) 감지기 중 하나의 감지기라도 주의 혹은 화재상태에 있어야 함. +2) Detector1(해당 감지기)에서 측정된 연기농도가 15% 이상이거나 온도가 65℃ 이상인 경우 +', '1) FDU의 복귀버튼 조작 시 +2) FDU 전원 리셋 시', '1) 해당 감지기 위치의 화재 발생 여부 확인 +2) 화재 오감지일 경우 FDU의 복귀버튼 취급 +3) 오감지일 경우 감지기의 청소주기 확인(내부 먼지 제거)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('0db2787c-bf6a-44db-ab31-84934beeec19', '0238', '238', 'BECU#6 - 4축 스키드신호', 'M3', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('0db28f13-7b63-48b6-9419-e37d870355d0', '0506', '506', 'DCU#4 6위(L3) - 출입문 입력 저전압', 'T1', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 “1”이 되면 검지 +', '저전압상태(출입문 동작이 심하게 느려지거나 작동조차 안 될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하 +', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('0dd5e166-522f-4412-ad36-90373e3b62c3', '1503', '1503', '난방장치용 AC 회로차단기 차단(Car4)', 'T1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('0de615f2-c602-4659-954b-3360cc79b653', '0225', '225', 'BECU#4-강제완해검지(CPRD)', 'T1', 'C', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('0df9b393-0773-459f-b92f-6e843c4136a1', '0504', '504', 'DCU#1 5위(R3)-출입문 외부비상핸들 취급(EAD)', 'Tc1', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('0e0f27f2-f9d8-4ab5-9f0b-79fe88ba8cfe', '0512', '512', 'DCU#6 4위(L2)-파라미터 로딩 실패', 'M3', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 "Paraneter error” 신호가 "1"이 되면 검지.', 'Parameter error 현시 (출입문은 정상작동 가능)', 'DCU 자체내의 EEPROM으로부터 parameter 데이터 로딩 실패', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('0e0fbda5-aae6-4763-a936-a902ef4ea50a', '0226', '226', 'BECU#3 - 제동불완해검지(NRBD)', 'M2', 'B', 'BECU-제동불완해검지(NRBD)', 'B', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT8의 Bit2 “NRBD” 신호가 “1”이 되면 검지 +', '해당 차량 제동불완해 검지 현시 및 완해 취급하였음에도 불구하고 해당 차량 제동압력 (BCP)이 완해되지 않음.', '제동완해상태(정차제동포함)에서 해당 차량의 제동압력이 완전히 배기되지 않음. +', '제동완해상태(정차제동포함)에서 해당 차량의 제동압력이 완전히 배기됨.', '정차하여 강제완해 스위치를 취급하여 소거 여부 확인, 제동 완해상태 확인 후 주의 운전할 것, 2 ~ 3회 시도에도 완해불능 시 관제보고하고 지시에 따를 것', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('0e1a113f-5d6a-4c73-a03c-5c6521da8d0a', '0503', '503', 'DCU#3 1위(R1) - 출입문 내부 비상핸들 취급(EED)', 'M2', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('0e2642af-54d8-436f-aff1-c031bfcb4cf5', '0185', '185', 'VVVF#7 - 인통선 대비 ZVR 불일치 검지', 'M4', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('0e3b21f2-cb7a-49ca-92df-5de31b1a368c', '1503', '1503', '난방장치용 AC 회로차단기 차단(Car5)', 'T2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('0e588f2d-ae54-4f9a-bedc-c1d9cc0dafc6', '0839', '839', '실내카메라#3(SCAM) 고장(Car#4)', 'T1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('0e6af42d-6303-4182-9111-3d09f4f14eab', '1401', '1401', 'BMS#1-배터리 단락', 'Tc1', 'C', 'BMS-배터리 단락', 'C', 'BMS', 'BMS의 RS485 데이터 중 BMS-TCMS SD TEXT2의 Bit0 “배터리 단락” 신호가 "1"이 되면 검지.', '배터리 Pre-charging 시 배터리 전압보다 낮으면 Mascon SW 검지 안됨.', '배터리 내부 또는 외부 회로 단락.', '배터리 내부 또는 외부 회로 단락 해제', '1) 배터리 팩 절연저항 확인한다. +2) 배터리 외부 단락 검사.', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('0e6c369b-a51a-48d3-b881-8e0f10f1b101', '0226', '226', 'BECU#8 - 제동불완해검지(NRBD)', 'Tc2', 'B', 'BECU-제동불완해검지(NRBD)', 'B', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT8의 Bit2 “NRBD” 신호가 “1”이 되면 검지 +', '해당 차량 제동불완해 검지 현시 및 완해 취급하였음에도 불구하고 해당 차량 제동압력 (BCP)이 완해되지 않음.', '제동완해상태(정차제동포함)에서 해당 차량의 제동압력이 완전히 배기되지 않음. +', '제동완해상태(정차제동포함)에서 해당 차량의 제동압력이 완전히 배기됨.', '정차하여 강제완해 스위치를 취급하여 소거 여부 확인, 제동 완해상태 확인 후 주의 운전할 것, 2 ~ 3회 시도에도 완해불능 시 관제보고하고 지시에 따를 것', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('0e7e7a72-9a13-4658-912e-65b626121fe2', '0503', '503', 'DCU#8 3위(R2) - 출입문 내부 비상핸들 취급(EED)', 'Tc2', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('0e841871-1bdc-4ae5-9aa6-a1e4106bf4bc', '0864', '864', '비상인터폰#2(PEI) 고장(Car#6)', 'M3', 'C', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('0e9b2d0f-ad1a-42fa-ac03-bfce8c10668c', '0892', '892', '비상인터폰#1(PEI) 고장(Car#8)', 'Tc2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('0ea1110d-0642-4622-a223-e290ac3a9b4c', '0747', '747', 'HVAC#4-전자접촉기 차량히터2(CRRHT) 고장', 'T1', 'C', 'HVAC-전자접촉기 차량히터2(CRRHT) 고장', 'C', 'HVAC', '객실 난방기 작동 중 CRRHT2 전자접촉기 고장 발생.', '객실 전난방 시 1/3난방만 작동', '객실 전난방 작동 중 2.5초 이상동안 CRRHT2 작동 feedback 신호가 수신되지 않는 경우', 'CRRHT2 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CRRHT2를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRRHT2와 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('0ec0c5cd-f40b-4aa9-ac7f-904aa1f016cf', '0504', '504', 'DCU#8 4위(L2)-출입문 외부비상핸들 취급(EAD)', 'Tc2', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('0ec95614-2088-4fdb-8f3e-acfda542d4e9', '0734', '734', 'HVAC#7-전자접촉기 압축기(CRCM)3 고장', 'M4', 'C', 'HVAC-전자접촉기 압축기(CRCM)3 고장', 'C', 'HVAC', 'HVAC 냉방작동 중 CRCM3 전자접촉기 고장 발생.', '냉방 기능 저하(전냉방시 반냉방으로 작동)', '냉방작동 중 2.5초 이상동안 CRCM3 작동 feedback 신호가 수신되지 않는 경우', 'CRCM3 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CRCM3을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRCM3과 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('0ed23f8b-6df7-4068-b31e-14043e4a1e3a', '1522', '1522', 'TCMS 데이타버스1 좌측라인 통신 이상(Car3)', 'M2', 'C', 'TCMS 데이터버스1 좌측라인 통신 이상', 'C', 'TCMS', 'TCMS의 초기 기동 시 자기진단에 의한 2중계 메인통신선 중 1계 메인통신 이상 검지 시 +', '1) SL-NET 2중계이므로 데이터버스 2계로 정상통신, 운행에 지장 없음. +2) 초기기동 자기진단 시 2중계를 점검하여 1계측의 이상이 검지되었다는 점검 필요용 메시지', '초기 기동 시 SL-NET 1계와 2계를 각각 통신 후 비교하여 2계는 정상통신이 되나 1계는 정상통신이 안 되는 경우 +', '정상 수리 후 차량 전체 재기동하여 SL-NET 1계와 2계 모두 정상통신이 되는 경우', '1) 고장검출호차와 고장검출 좌측호차와의 SL-NET 통신 1계 정상여부 확인(예 : 고장호차가 3호차인 경우 1-2-3-4-5-6-7-8에서 3호차의 좌측, 즉 2-3호차 간 SL-NET 1계 통신 상태 점검 필요) +2) 고장검지호차의 SCM PCB 교체 정상여부 확인 +3) 고장검지호차의 좌측호차 SCM PCB 교체 정상여부 확인 +4) 고장검지호차와 고장검지 좌측호차의 SL-NET 1계 메인통신 배선의 연결 상태 확인 +5) 상기 2 ~ 4번 점검에도 정상적으로 복귀되지 않는 경우, CU/TU ASS'Y 교체(백보드 확인 필요)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('0edbc8d8-b87f-4431-b405-a7983a1b7319', '0509', '509', 'DCU#4 6위(L3) - 출입문 잠김 리미트 스위치 고장', 'T1', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 “DLS Failure” 신호가 “1”이 되면 검지 +', '출입문 잠김 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('0edc4872-3cc3-412f-a770-83c627ec4b58', '1502', '1502', '기타장치용 DC 회로차단기 차단(Car1)', 'Tc1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('0eede59d-27a3-4a07-b600-c459c2361b27', '0148', '148', 'VVVF#3 - FC 과전압검지(OVD1)', 'M2', 'C', 'VVVF-FC 과전압검지(OVD1)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT30의 Bit5 “OVD1” 신호가 “1”이 되면 검지 +', '1) TCMS 화면 하단 또는 고장화면에 ‘FC 과전압검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생함. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉은색으로 표기되며, HSCB, LB1, 2 개방되어 동력 손실 발생함.', '추진제어장치 내부 FC 전압이 2,100V 이상일 경우 검지됨. +', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반 배전반의 VVVFIC nfb 재투입 또는 차량 배터리 전원 재투입', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 FC전압에 이상이 있는지 확인한다. +3) 추진제어장치 내부 고전압부에 소손흔적이 있는지 확인한다. +4) FC에 연결된 부스바의 체결상태가 양호한지 확인한고, 부스바를 분리하여 FC의 Capacitance를 측정하여 이상이 없는지 확인한다. +5) 전압센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +6) SEN 보드의 동작 상태를 시험기를 통해 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지 간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('0efe8e2e-010c-4808-bf09-aafa3e0c1930', '1008', '1008', 'CMSB#1-', 'Tc1', '0', null, null, '0', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('0f0572c4-4d5f-47e0-bd12-abf314d80d2a', '0025', '25', '단부출입문 고장(Car6)', 'M3', 'C', '단부출입문 고장 (Car6)', 'C', '기타', '차량 이 단부 통로 문으로부터 END DOOR FAULT 신호를 검지 +', '출입문 정상동작 불가', ' +1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우 (인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +4) DCU 내부의 모터 / 인코더 회로 가 손상된 경우 +', '모터/인코더 및 DCU가 정상상태이고, 전기적 연결 상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있는지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. ※ 고장 조치 완료 후, 반드시 DCU의 reset 버튼을 누르거나 전원을 OFF/ON 하여 시스템을 재가동해야 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('0f05b94c-9b4d-42db-8c75-a8fab8a467bb', '0739', '739', 'HVAC#3-전자접촉기 증발기2(CREF) 고장', 'M2', 'C', 'HVAC-전자접촉기 증발기2(CREF) 고장', 'C', 'HVAC', 'HVAC 냉방작동 중 CREF2 전자접촉기 고장 발생.', 'UNIT1 냉방 작동 불가', '냉방작동 중 2.5초 이상동안 CREF2 작동 feedback 신호가 수신되지 않는 경우', 'CREF2 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CREF2를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CREF2와 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('0f0a718c-58a0-4632-aacf-66a51f30f7bc', '0502', '502', 'DCU#4 6위(L3) - 출입문 장애물검지', 'T1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('0f1a5a42-dcb9-478d-a902-716930bf5174', '0507', '507', 'DCU#6 4위(L2)-초기화 실패', 'M3', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 "Calibration failure” 신호가 "1"이 되면 검지.', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터고장, 장애물 감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우', '초기화 실패를 야기한 고장 코드를 확인하여 조치 후, 재 닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('0f36f0f6-5c59-4311-a631-36762172cd46', '0024', '24', '단부출입문 고장(Car5)', 'T2', 'C', '단부출입문 고장 (Car5)', 'C', '기타', '차량 이 단부 통로 문으로부터 END DOOR FAULT 신호를 검지 +', '출입문 정상동작 불가', ' +1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우 (인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +4) DCU 내부의 모터 / 인코더 회로 가 손상된 경우 +', '모터/인코더 및 DCU가 정상상태이고, 전기적 연결 상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있는지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. ※ 고장 조치 완료 후, 반드시 DCU의 reset 버튼을 누르거나 전원을 OFF/ON 하여 시스템을 재가동해야 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('0f4bca1f-261f-4e53-9565-8013e6c532b5', '1202', '1202', 'FDU#8 - 감지기1 고장', 'Tc2', 'C', 'FDU-감지기1 고장 (Car1~8)', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 “Detector1 State” 신호가 “10”이 되면 검지 +', '감지기고장상태현시(자동소거 안 됨)', ' +1) 감지기로부터 데이터 응답이 없는 경우 +2) 감지기로부터 수신된 데이터의 CRC가 맞지 않는 경우 +3) 감지기로부터 수신된 데이터의 ID가 송신 ID와 일치하지 않는 경우 +', 'FDU 전원 리셋 후 감지기로부터 정상적으로 데이터가 수신된 경우', '1) FDU 전원 리셋 후 고장 소거 여부 확인 +2) 정상동작중인 감지기와 위치 교환 후 FDU 전원 리셋 및 고장 상태 확인 +3) 동일한 감지기에서 고장 발생 시 감지기 교체 +4) 동일한 위치에서 고장 발생 시 감지기 라인 점검', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('0f4c4d0f-4756-4e4c-9d6d-da5c26e63fd2', '0874', '874', '비상인터폰#2(PEI) 고장(Car#7)', 'M4', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('0f589e29-601e-40cc-a3c9-58178fabbf3d', '0040', '40', 'Zero Speed 바이패스', 'Tc2', 'W', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('0f6dbb97-7496-48bc-862d-c17dfec738c1', '0031', '31', '비상제동 스위치 취급', 'Tc2', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('0f7097b6-4d5a-4af5-bcb8-b7d10c3cd096', '0312', '312', 'ATC#8 - 50cm 이상 과주정차', 'Tc2', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('0f74f5e4-3b13-409e-aca0-ed99cce534e0', '0237', '237', '보안제동코크 차단(Car6)', 'M3', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('0f860a95-0b93-4321-8047-1b99c1326b38', '0521', '521', 'DCU#7 2위(L1)-모듈 상태 이상', 'M4', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 "01"또는 "00"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('0f9489a5-6b82-4f35-81e2-50b2399bc8cb', '0721', '721', 'HVAC#2 - 냉난방장치2 압력스위치2(DPS) 냉매부족', 'M1', 'C', 'HVAC-냉난방장치2 압력스위치2(DPS) 냉매부족', 'C', 'HVAC', '냉난방장치2 냉매 압력스위치2 저압 발생 +', 'UNIT2CYCLE2 냉방 기능 불가', 'UNIT2DSP2측 냉매압력이 30초 이상0.5±0.3(kgf/cm2) 이하로 떨어지는 경우 +', '냉매압력이 정상수치 2±0.5(kgf/cm2) 이상 유지하도록 하고, 마이콤전원을 리셋', '1) 배전반 점검 커버를 열고 마이콤 전원을 리셋한 후, 냉방 가동 시, CREF4의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)을 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설 여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안 되는 것을 확인한 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('0fad3326-2220-47c4-854a-a03bd5a3bf1a', '0507', '507', 'DCU#1 3위(R2)-초기화 실패', 'Tc1', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 "Calibration failure” 신호가 "1"이 되면 검지.', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터고장, 장애물 감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우', '초기화 실패를 야기한 고장 코드를 확인하여 조치 후, 재 닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('0fc1fb94-2f38-4b7a-a881-f347851c8095', '0508', '508', 'DCU#5 1위(R1) - 출입문 모터/인코더 고장', 'T2', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 “Motor / Encoder failure” 신호가 “1”이 되면 +검지 +', '출입문 정상동작 불가', ' +1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우(인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터/인코더 회로 가 손상된 경우 +', '모터/인코더 및 DCU가 정상 상태이고, 전기적 연결 상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있는지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. ※ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. ? DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. ? DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) ? DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('0fd88a03-f682-4330-9f39-22d4a0e6e3dc', '0893', '893', '전면카메라(FCAM) 고장(Car#8)', 'Tc2', 'C', '통합방송표시기-전면카메라(FCAM) 고장(CAR8)', 'C', 'TCMS', '통합방송표시기의 RS485 데이터 중 통합방송표시기-TCMS SD TEXT9의 Bit1, TEX23의 Bit1 “FCAM 고장” 신호가 "1"이 되면 검지.', '고장 발생FCAM 영상 저장 불가능', '정면카메라(FCAM) 통신 고장', '정면카메라(FCAM) 통신 정상', '정면카메라(FCAM) 전원 및 통신 라인 점검 +관련도면 RES41002FG0', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('0fe76e83-45c9-4b28-8bf4-2b3a08a92292', '0734', '734', 'HVAC#5 - 전자접촉기 압축기(CRCM)3 고장', 'T2', 'C', 'HVAC-전자접촉기 압축기(CRCM)3 고장', 'C', 'HVAC', 'HVAC 냉방 작동 중 CRCM3 전자접촉기 고장 발생 +', '냉방 기능 저하(전냉방 시 반냉방으로 작동)', '냉방 작동 중 2.5초 이상 동안 CRCM3 작동 feedback 신호가 수신되지 않는 경우 +', 'CRCM3 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CRCM3을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRCM3과 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('0fe95882-6147-4c2a-8d90-5778cd1f9dd6', '0505', '505', 'DCU#3 5위(R3)-출입문 입력 고전압', 'M2', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 "1"이 되면 검지.', '고전압 상태. (그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('0fea986b-9465-46fc-9a8f-e44f5d6ccb4a', '1518', '1518', 'CU2 운용다이아 CRC 오류(Car8)', 'Tc2', 'C', 'CU2, 2 운용다이아 CRC 오류', 'C', 'TCMS', '초기 기동 시 CU의 MCPU 내부에 들어가 있는 운용다이아 데이터가 CRC 오류가 발생한 경우 +', '1) 내부의 데이터가 CRC 오류가 발생하여 운용다이아를 사용할 수 없을 때 발생 +2) 열차번호 입력 시 다음역, 행선역이 표출되지 않음. +3) 방송/표시기 데이터를 정상적으로 송출 할 수 없음. (운행중인 경우 수동방송필요) +4) 열번/역설정 화면의 역설정/운용설정이 정상적으로 표시되지 않음.', '초기 기동 시 내부에 가지고 있는 운용다이아 데이터가 손상된 경우 +', 'CU 리셋 후 초기 기동 시 운용다이아 데이터가 정상적인 것을 확인한 경우', '1) 운용다이아 데이터 재설치 후 재기동 +2) 불량 해소가 되지 않을 경우, MCPU PCB 교체 후 운용다이아 데이터 재설치', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('0fec2587-f1ff-44b9-b201-3bf5211a732b', '0707', '707', 'HVAC#1-냉난방장치2 증발기1 과부하', 'Tc1', 'C', 'HVAC-냉난방장치2 증발기1 과부하', 'C', 'HVAC', 'HVAC 냉방작동 중 냉난방장치2 증발기 모터에 과부하 발생.', 'UNIT2 냉방 기능 불가', '1) 냉방작동 중 UNIT2의 증발기 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CREF3과 연결된 THR7이 Trip 됨.', 'UNIT2의 증발기 모터의 과부하 조건을 해소하여 정상 가능 상태로 만들고, THR7 및 마이콤 전원 리셋', '1) 냉난방배전반의 점검커버를 열고, THR7의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR7의 전류 세팅값이 3A에 맞춰져 있는지 확인하여, 아닐 경우, 십자 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동 시킨 후, THR7의 2차측 2,4,6 단자에서 각 단자간 상간 전압이 AC 380V으로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 증발기 단품 상태에서 점검을 한다. +7) THR7의 2차측 2,4,6 단자에서 각 단자간 권선저항이 모두 같은지 확인한다. (±10% 이하) (증발기 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT2의 증발기 모터의 결선을 해제한 후 4극 및 6극 모터의 권선저항을 확인 후, 문제가 있을 겨우, 증발기 모터를 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR7 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('100438a5-c9ba-4330-8f42-6dea1c5c4fa1', '0203', '203', 'BECU#3 - 전자제어밸브의 고장', 'M2', 'C', 'BECU-전자제어밸브의 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit2 “전자제어밸브의 고장” 신호가 “1”이 +되면 검지 +', '해당 차량 전자제어밸브의 고장검지 현시 및 해당 차량 제동제어불가', '해당 차량의 상용전자제어밸브가 작동하지 않음. +', '해당 차량의 상용전자제어밸브가 정상작동 시 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('10044a82-4d9d-4dc9-a58e-2e41b1ada87b', '0517', '517', 'DCU#8 3위(R2) - 출입문 장애물로 인한 열림 실패', 'Tc2', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Open failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘 상태로 대기', '도어열림 중 3회 장애물감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 열림 시, 장애물감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('1034f29c-aebc-41fe-93b1-8d45fc0278ba', '0233', '233', 'AS 코크#2 차단(Car8)', 'Tc2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('104f82df-046b-4a9b-8fda-7e53edabfb4d', '0237', '237', '보안제동코크 차단(Car2)', 'M1', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1054a372-97d6-4936-b1a6-91dbe35c96b8', '0515', '515', 'DCU#7 1위(R1)-출입문 열림 시간 초과', 'M4', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 "Open time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 열림 동작시간이 6초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도 한 후, '장애물로 인한 열림실패' 고장과 함께 'Open time out' 고장이 함께 현시', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('10592693-e86e-42ae-adba-ab9976d7b44e', '0223', '223', 'BECU#5-공기스프링누설(전두대차)', 'T2', 'C', 'BECU-공기스프링누설(전두대차)', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit6 “공기스프링누설(전두대차)” 신호가 "1"이 되면 검지.', '해당 차량 공기스프링누설(전두대차) 검지 현시 및 해당차량 정상적인 제동제어 불가.(응하중 제어)', '해당 차량 전두대차의 공기스프링(AS1, AS2) 압력이 정상범위를 벗어남.(100kPa 미만)', '해당 차량 전두대차의 공기스프링(AS1, AS2) 압력이 정상범위일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('105d0163-f4a5-4a26-9620-da8a05427f5e', '1500', '1500', '출입문 회로차단기 차단(Car8)', 'Tc2', 'W', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('106015f8-ccac-4f4e-818b-fc5b20a0d751', '0411', '411', 'SIV#8 - 게이트 드라이버 고장, WZ2상(GDFWZ2)', 'Tc2', 'C', 'SIV-게이트 드라이버 고장, WZ2상(GDFWZ2)', 'C', 'SIV', '보조전원장치(SIV)의 RS485 데이터 중 SIV-TCMS SD TEXT5의 Bit1 “GDFWZ2” 신호가 “1”이 되면 검지 +', '1) TCMS 화면하단 또는 고장화면에 ‘GDFWZ2상 이상 검지' 표시됨. +2) 보조전원장치(SIV)는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 보조전원장치(SIV) 중고장이 발생됨. +5) 중고장이 발생되면 TCMS 일반화면에 보조전원장치(SIV) 상태 붉은색으로 표기되며, 연장급점 됨.', '보조전원장치(SIV) 내부GDU에 과전류, 과온이 검지될 경우 +', '1) 경고장이 발생할 경우 보조전원장치(SIV) 자동 재기동에 의해 재기동 됨. +2) 중고장이 발생할 경우 보조전원장치(SIV) 리셋으로 고장 소거됨.', '1) 상기 고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 보조전원장치(SIV) 고장기록을 수집하여 출력되는 3상의 AC 전류치를 확인함. +3) 특정상의 전류치가 비정상적일 경우 특정상에 해당되는 GDU, 전류센서, 출력단 결선을 확인 한다. +4) 전류센서와 보조전원장치(SIV) 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작 상태를 시험기를 통해 확인한다. +6) GDU 전원공급기의 전원연결 상태 또는 광케이블의 연결 상태와 배선상태를 확인한다. +7) 출력단 각상의 절연상태 및 각상과 접지 간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('106077ff-8290-4bc7-8d27-a74518268092', '1204', '1204', 'FDU#3 - 감지기2 고장', 'M2', 'C', 'FDU-감지기2 고장 (Car1~8)', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 “Detector1 State” 신호가 “10”이 되면 검지 +', '감지기고장상태현시(자동소거 안 됨)', ' +1) 감지기로부터 데이터 응답이 없는 경우 +2) 감지기로부터 수신된 데이터의 CRC가 맞지 않는 경우 +3) 감지기로부터 수신된 데이터의 ID가 송신 ID와 일치하지 않는 경우 +', 'FDU 전원 리셋 후 감지기로부터 정상적으로 데이터가 수신된 경우', '1) FDU 전원 리셋 후 고장 소거 여부 확인 +2) 정상동작중인 감지기와 위치 교환 후 FDU 전원 리셋 및 고장 상태 확인 +3) 동일한 감지기에서 고장 발생 시 감지기 교체 +4) 동일한 위치에서 고장 발생 시 감지기 라인 점검', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('1065ea77-c2d7-4350-8b75-6f5544e43834', '0212', '212', 'BECU#3-1축속도신호의 비정상', 'M2', 'C', 'BECU-1축속도신호의 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit3 “1축속도신호의 비정상” 신호가 "1"이 되면 검지.', '해당 차량 1축속도신호의 비정상 검지 현시 및 해당 차량 활주제어 불가.', '해당 차량의 1축 속도센서 고장 발생.', '해당 차량의 1축 속도센서가 정상적일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('106df4f7-da7a-411f-bb7f-b3027b29c440', '0514', '514', 'DCU#3 4위(L2)-출입문 닫힘 시간 초과', 'M2', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 "Close time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 닫힘 동작시간이 7초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도 한 후, '장애물로 인한 닫힘실패' 고장과 함께 'Close time out' 고장이 함께 현시', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('10783c20-76ae-4c48-b720-76a87bd9f4a9', '763', '763', 'CAB HVAC#8 - 댐퍼 이상', 'Tc2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('1079c354-81ca-4cf9-987b-2096ba1c57ed', '0520', '520', 'DCU#6 3위(R2)-이중계 절체 동작', 'M3', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 "Module switchover' 신호가 "1"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('108ad387-1f6f-41e8-bde9-28c8b27eb6f3', '0518', '518', 'DCU#8 5위(R3) - 출입문 Enable 신호 에러', 'Tc2', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 “Enable signal error” 신호가 “1”이 되면 검지 +', 'DCU 출입문Enable신호에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드 시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을 때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드 시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입 상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호 장치로부터의 출입문 열림 명령 신호) 취급 시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함. +', '해당 출입문 enable 신호수신', '1) AUTO/MCS 모드 시에는 YARD 모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인 한다. (YARD/FMC 모드 시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('10c17a0b-528c-479d-95f9-4b17502f8a48', '0713', '713', 'HVAC#6-냉난방장치1 압력스위치2(DPS) 저압', 'M3', 'D', 'HVAC-냉난방장치1 압력스위치2(DPS) 저압', 'D', 'HVAC', '냉난방장치1 냉매 압력스위치2 저압 발생.', 'UNIT1 CYCLE2 냉방 기능 불가', 'UNIT1 DSP2측 냉매 압력이 3초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우', '냉매 압력이 정상 수치 2±0.5(kgf/cm2 이상으로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CREF2의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)을 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안되는 것을 확인한 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('10e20aa4-4de7-4553-8320-694f40b68308', '0408', '408', 'SIV#1-인버터1 입력 과전압(INV1OV)', 'Tc1', 'C', 'SIV-인버터1 입력 과전압(INV1OV)', 'C', 'SIV', '보조전원장치(SIV)의 RS485 데이터 중 SIV-TCMS SD TEXT4의 Bit6 “INV1OV” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 '인버터2 입력 과전압(INV1OV)' 표시됨. +2) 보조전원장치(SIV)는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 보조전원장치(SIV) 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 보조전원장치(SIV) 상태 붉을색으로 표기되며, 연장급전 됨.', '보조전원장치(SIV) 내부 인버터 2의 FC전압이 1,200V 이상일 경우 검지됨.', '1) 경고장이 발생할 경우 보조전원장치(SIV) 자동 재기동에 의해 재기동 됨. +2) 중고장이 발생했을 경우 조치 완료 후 보조전원장치(SIV) 리셋으로 고장 소거됨.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 보조전원장치(SIV) 고장기록을 수집하여 FC전압에 이상이 있는지 확인한다. +3) 보조전원장치(SIV) 내부 고전압부에 소손흔적이 있는지 확인한다. +4) FC에 연결된 버스바의 체결상태가 양호한지 확인한고, 버스바를 분리하여 FC의 Capacitance를 측정하여 이상이 없는지 확인한다. +5) 전압센서와 보조전원장치(SIV) 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +6) SEN 보드의 동작상태를 시험기를 통해 확인한다. +7) 출력단 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('10e59ccc-6e21-49a4-8e5f-b713d4406647', '0728', '728', 'HVAC#5-냉난방장치2 토출 센서 고장', 'T2', 'C', 'HVAC-냉난방장치2 토출 센서 고장', 'C', 'HVAC', '냉난방장치2의 토출 센서 고장 발생', '냉난방장치2 토출센서 고장현시', '온도센서 검지범위는 -45~85도 (820~1330옴) 인데, 2초 이상 검지범위를 벗어나는 경우', '온도센서 검지 값이 2초 이상 허용온도 범위 내 일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820~1330옴 을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우, 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('10e6093c-4277-4dc4-9023-cd425bcd7cc8', '0912', '912', 'TRAIN RADIO#8-TRCP(차량조작반) 고장', 'Tc2', 'C', 'TRAIN RADIO-TRCP(차량조작반) 고장', 'C', 'RADIO', 'Train Radio의 RS485 데이터 중 Train Radio-TCMS SD TEXT15의 Bit0 “TRCP 고장” 신호가 "1"이 되면 검지.', '기관사 무전기 통화 불능', 'HW 고장', '제어기 리셋', null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('10e60a89-f27e-44e3-967d-31f0c0de06d8', '0016', '16', '열차번호 불일치', 'Tc2', 'W', '열차번호 불일치', 'W', 'ATC', '기관사가 설정한 열차번호와 신호장치로부터 전송받은 열차번호가 일치하지 않을 경우 검지.', '1) TCMS 화면 하단에 '열차번호 불일치' 현시(차량 운행에는 지장 없음.)', '1) 기관사가 설정한 열차번호와 신호장치로부터 수신된 열차번호가 불일치시 현시됨.(단, 지상으로부터 열차번호가 수시될 수 있는 구간에 한함)', '1) 열차번호가 동일하게 입력되면 고장 소거됨.', '1) 입력한 열차번호가 맞는지 확인. +2) 입력한 열차번호가 맞다면 신호장치로부터의 열차번호가 정상인지 확인', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('10f218b2-8279-49c2-ae93-24c3975ca1d0', '0239', '239', 'BECU#2 - 3축 스키드신호', 'M1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('10f9676c-0f18-4145-99f5-56b15f1d5e88', '0504', '504', 'DCU#2 2위(L1)-출입문 외부비상핸들 취급(EAD)', 'M1', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1109a4a9-4e9e-43f2-a003-1c2413e3f5c8', '0507', '507', 'DCU#7 6위(L3)-초기화 실패', 'M4', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 "Calibration failure” 신호가 "1"이 되면 검지.', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터고장, 장애물 감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우', '초기화 실패를 야기한 고장 코드를 확인하여 조치 후, 재 닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('110e62e8-f657-445b-a2cf-b5be5179cfa1', '0119', '119', 'VVVF-FC 저전압검지(FCLVD) (Car6)', 'M3', 'C', 'VVVF-FC 저전압검지(FCLVD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT32의 Bit6 “FCLVD” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 'FC 저전압검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치 내부 FC전압이 850V 이상일 경우 검지됨.', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반배전반의 VVVFIC nfb 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 FC전압에 이상이 있는지 확인한다. +3) 추진제어장치 내부 고전압부에 소손흔적이 있는지 확인한다. +4) FC에 연결된 버스바의 체결상태가 양호한지 확인한고, 버스바를 분리하여 FC의 Capacitance를 측정하여 이상이 없는지 확인한다. +5) 전압센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +6) SEN 보드의 동작상태를 시험기를 통해 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.656536+00', null, '다대48량(2015)', 'Rotem'), ('11134bb2-de03-4bf3-845e-61bcf804bfa2', '1410', '1410', 'BMS#1-충전저온(CUT, -10도이하)', 'Tc1', 'D', 'BMS-충전저온(CUT)', 'D', 'BMS', '해당차량의 배터리 온도가 -25도이하가 되면 검지', '차량 배터리 충전저온 검지 후, -35도이하이면 충전 접촉기(CK)가 차단된다.', '배터리 충전저온 (-20도 이상).', '배터리 충전저온 정상범위로 회복 (-20도 이상)', '1) 배터리 NFB 상태 확인 +2) 이상이 없으면 차량 전체를 리셋한다. +3) 차량 리셋 후에도 동일고장이면 사령실과 연락하여 조치를 취한다 (배터리를 상온조건으로 만든다.)', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('11164d3f-c488-470c-9c54-f08e1590f4dd', '1002', '1002', 'CMSB#8-방열판 과온', 'Tc2', 'C', 'CMSB-방열판 과온', 'C', 'CMSB', 'CMSB의 RS485 데이터 중 CMSB-TCMS SD TEXT3의 Bit3 “방열판 과온” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 'CM출력과부하' 표시됨. +2) 바이패스 모드로 전환되고, CM 기동 시 '바이패스 기동'으로 표시됨.', '1) CMSB 내부 방열판 온도가 85 ±5℃일 경우 검지됨.', '1) 차량 전원 OFF +2) CMSB 내부의 표시기패널 RESET 버튼 누름.', '0) 정상운행 후, 검수고에 입고하여 아래와 같이 조치한다. +1) 상기고장은 고장 소거 후, 재현시험을 진행하여 지속적으로 발생될 경우 아래와 같이 조치한다. +2) 방열판 온도 측정 +3) 방열판에 부착되어 있는 온도스위치을 점검한다. +4) 온도스위치와 CMSB 제어기 간 연결된 케이블 접촉상태를 확인한다.', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('111e743a-05f5-4085-92e2-1cae4cbc2544', '1209', '1209', 'FDU#2-스위치 고장', 'M1', 'C', 'FDU-스위치 고장', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT5의 Bit4 “Switch Fault” 신호가 "1"이 되면 검지.', 'Switch Fault 현시 및 FDU의 조작 버튼 동작 안됨(화재 검지 및 기타 기능에는 상관없음)', '1) FDU가 부팅될때 스위치가 눌려진 상태(3.3V 전압이 인가된 상태)인 경우 +2) FDU가 부팅될때 스위치 고장으로 인하여 항상 눌러진 상태(3.3V 전압이 인가된 상태)에 있는 경우.', 'FDU가 부팅될때 스위치가 눌려진 상태(3.3V 전압이 인가된 상태)가 아닌 경우 +조치조건 : +1) 고장이 발생한 수신기의 스위치 상태 확인 및 점검 +2) FDU의 전원을 리셋하여 소거여부 확인 +3) 문제가 지속될 경우, 수신기 교체', null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('11230f6b-fdbc-40d0-8f58-f6b222de011f', '0825', '825', '비상인터폰#1(PEI) 고장(Car#2)', 'M1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('1135b608-422e-4838-94c4-55408518f80f', '0205', '205', 'BECU#6-회생제동요구 비정상', 'M3', 'C', 'BECU-회생제동요구 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit4 “회생제동요구 비정상” 신호가 "1"이 되면 검지.', '해당 차량 회생제동요구 비정상 검지 현시.', '해당 차량의 회생제동요구 출력이 정상범위를 벗어남.', '해당 차량 회생제동요구 출력이 정상범위로 복귀 시 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('114a9643-a364-40b9-987e-32cde713e37e', '0712', '712', 'HVAC#3-냉난방장치2 압력스위치1(DPS) 고압', 'M2', 'D', 'HVAC-냉난방장치2 압력스위치1(DPS) 고압', 'D', 'HVAC', '냉난방장치2 냉매 압력스위치1 고압 발생.', 'UNIT2 CYCLE1 냉방 기능 불가', 'UNIT2 DSP1측 냉매 압력이 3초 이상 28±1(kgf/cm2) 이상 되는 경우', '냉매 압력이 정상 수치 15±0.7(kgf/cm2 이하로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CRCM3의 부하측 전류를 측정하여 응축기 팬의 동작여부를 확인한다. +2) 응축기 코일의 전면에 이물질로 인한 막힘이 있는지 확인한다. +3) 응축기 팬 상부 그릴에 외부 이물질로 인한 막힘이 있는지 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('115b9025-b00f-4c2d-822a-4e52d8a009fc', '0506', '506', 'DCU#8 3위(R2) - 출입문 입력 저전압', 'Tc2', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 “1”이 되면 검지 +', '저전압상태(출입문 동작이 심하게 느려지거나 작동조차 안 될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하 +', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('11609c45-791b-41fa-bcd2-39ea0ecfc0c0', '0224', '224', 'BECU#5-파트너차 ECU 고장(PECUF)', 'T2', 'C', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('11619953-ea69-42e5-89d2-78bc4d87fbdc', '0231', '231', 'BC 코크(차상) 차단(Car2)', 'M1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('11680bb7-cffe-404e-948c-badc60f582f9', '0509', '509', 'DCU#4 2위(L1) - 출입문 잠김 리미트 스위치 고장', 'T1', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 “DLS Failure” 신호가 “1”이 되면 검지 +', '출입문 잠김 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('116c37a8-2986-42ba-ba2a-76fc189bba5b', '0500', '500', 'DCU#7 2위(L1) 통신고장', 'M4', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS 간 RS485 통신고장이 검지되면 발생 +', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐상태 등의 변화가 없음.', ' +1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우 +', '해당 차량의 DCU 및 CU/TU의 전원이 정상상태이고, 통신 라인 연결 상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜져 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적 으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는 데도 지속적으로 통신고장이 검지되면, DCU의 X2, X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상 체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('1176bd36-d872-4126-a485-1b4f8d2d8fc9', '0736', '736', 'HVAC#2-전자접촉기 압축기(CRCM)1 고장', 'M1', 'C', 'HVAC-전자접촉기 압축기(CRCM)1 고장', 'C', 'HVAC', 'HVAC 냉방작동 중 CRCM1 전자접촉기 고장 발생.', '냉방 기능 저하(전냉방시 반냉방으로 작동)', '냉방작동 중 2.5초 이상동안 CRCM1 작동 feedback 신호가 수신되지 않는 경우', 'CRCM1 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CRCM1을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRCM1과 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('11a8920d-09db-4bdc-9e86-0d7bdef2b784', '0509', '509', 'DCU#5 1위(R1) - 출입문 잠김 리미트 스위치 고장', 'T2', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 “DLS Failure” 신호가 “1”이 되면 검지 +', '출입문 잠김 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('11bc5192-4db6-4599-b4b8-3c5a611c676c', '0512', '512', 'DCU#7 4위(L2)-파라미터 로딩 실패', 'M4', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 "Paraneter error” 신호가 "1"이 되면 검지.', 'Parameter error 현시 (출입문은 정상작동 가능)', 'DCU 자체내의 EEPROM으로부터 parameter 데이터 로딩 실패', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('11c6b53b-d59f-412b-a4db-cbc2f8f983ef', '0735', '735', 'HVAC#3-전자접촉기 압축기(CRCM)2 고장', 'M2', 'C', 'HVAC-전자접촉기 압축기(CRCM)2 고장', 'C', 'HVAC', 'HVAC 냉방작동 중 CRCM2 전자접촉기 고장 발생.', '냉방 기능 저하(전냉방시 반냉방으로 작동)', '냉방작동 중 2.5초 이상동안 CRCM2 작동 feedback 신호가 수신되지 않는 경우', 'CRCM2 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CRCM2를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRCM2와 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('11d0992d-2d1a-4af2-810e-d7f00c815c2b', '0205', '205', 'BECU#4 - 회생제동요구 비정상', 'T1', 'C', 'BECU-회생제동요구 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit4 “회생제동요구 비정상” 신호가 “1”이 +되면 검지 +', '해당 차량 회생제동 요구 비정상 검지 현시', '해당 차량의 회생제동 요구 출력이 정상범위를 벗어남. +', '해당 차량 회생제동 요구 출력이 정상범위로 복귀 시 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('11fff114-4d70-47b3-b979-644e63ef3188', '1201', '1201', 'FDU#4 - 감지기1 화재감지', 'T1', 'W', 'FDU-감지기1 화재감지 (Car1~8)', 'W', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 “Detector1 State” 신호가 “11”이 되면 검지 +', '화재상태현시(자동소거 안 됨.)', '하기 2가지 조건을 모두 만족하여야 화재신호가 출력 됨. (연동모드 동작) +1) 이웃한(앞 혹은 뒤에 위치한) 감지기 중 하나의 감지기라도 주의 혹은 화재상태에 있어야 함. +2) Detector1(해당 감지기)에서 측정된 연기농도가 15% 이상이거나 온도가 65℃ 이상인 경우 +', '1) FDU의 복귀버튼 조작 시 +2) FDU 전원 리셋 시', '1) 해당 감지기 위치의 화재 발생 여부 확인 +2) 화재 오감지일 경우 FDU의 복귀버튼 취급 +3) 오감지일 경우 감지기의 청소주기 확인(내부 먼지 제거)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('120127b9-3cdd-414b-8451-1b22acd1b6dc', '0239', '239', 'BECU#6-3축스키드신호', 'M3', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1207dce5-4d6f-41cb-a790-169eb13cc0eb', '0706', '706', 'HVAC#2 - 냉난방장치1 증발기2 과부하', 'M1', 'C', 'HVAC-냉난방장치1 증발기2 과부하', 'C', 'HVAC', 'HVAC 냉방 작동 중 냉난방장치1 증발기 모터에 과부하 발생 +', 'UNIT1냉방 작동 불가', ' +1) 냉방 작동 중 UNIT1의 증발기 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CREF2와 연결된 THR6이 Trip 됨. +', 'UNIT1의 증발기모터의 과부하조건을 해소하여 정상 가능 상태로 만들고, THR6 및 마이콤 전원 리셋', '1) 냉난방 배전반의 점검커버를 열고, THR6의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR6의 전류 세팅값이 3A에 맞춰져 있는지 확인하여, 아닐 경우, (+) 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동시킨 후, THR6의 2차측 2, 4, 6 단자에서 각 단자 간 상간 전압이 AC 380V로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 증발기 단품 상태 에서 점검을 한다. +7) THR6의 2차측 2, 4, 6 단자에서 각 단자 간 권선저항이 모두 같은지 확인한다. (±10% 이하) (증발기 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT1의 증발기 모터의 결선을 해제한 후 4극 및 6극 모터의 권선저항을 확인 후, 문제가 있을 경우, 증발기 모터를 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR6 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('120b22f4-d9fb-46f4-9245-b9b548345a11', '0221', '221', 'BECU#7 - 제동력부족(ISBD)', 'M4', 'B', 'BECU-제동력부족(ISBD)', 'B', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit5 “ISBD” 신호가 “1”이 되면 검지 +', '해당 차량 제동력 부족 검지 현시 및 해당 차량 제동압력(BCP)이 타차량에 비해 현저히 낮음.', '제동 7단 취급 시 해당 차량의 제동압력이 생성되지 않음. +', '제동 7단 취급 시 정상적인 제동압력이 생성된 경우 소거', 'MCS 모드로 전환 후, 마스콘을 N(중립) → 제동 7단까지 수 회 취급하여 소거 여부 확인, 제동 취급 확인 후, 주의 운전할 것, 지속발생 시 관제보고하고 지시에 따를 것', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('1213bfa5-9dbd-47be-a536-876278488652', '0326', '326', 'ATC#1 - ATO PG32 미스 오류', 'Tc1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('1215f30a-6754-4536-938d-f00783f09960', '0502', '502', 'DCU#5 1위(R1)-출입문 장애물검지', 'T2', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('122b5daa-21ef-4d69-8c74-340a6d05c8fc', '1516', '1516', 'CU1 모듈고장 - AUX1(Car1)', 'Tc1', 'C', 'CU1, 2 모듈고장 - AUX1', 'C', 'TCMS', 'CU의 AUX1 PCB가 이 정상적으로 인식되지 않아 점검이 필요할 때 +', '1) CU1의 AUX1 PCB가 모듈 고장이 발생하면, CU2로 자동 절체됨. (CU2로 자동 절체되면 운행에는 지장이 없음) +2) CU2 자동절체 시 화면의 우측 상단 경고장글자 하단에 “B.SYS” 라는 표시가 나타남. +3) 자동절체 시 열차 운행에는 관계없음. +4) CU2의 AUX1 모듈고장 시는 CU1 정상동작시 운행에는 지장이 없음.', 'CU AUX1의 ID를 정상적으로 검출하지 못할 때 화면에 현시 +', 'CU AUX1의 ID를 정상적으로 검출하는 경우 소거됨.', '1) CU의 AUX1 PCB 교체 +2) 불량 해소가 되지 않을 경우, 순차적으로 MCPU, SCM, DIM PCB를 교체하여 정상여부 확인', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('122dbbf0-8e7c-4b72-ba3a-802e3cad7676', '0861', '861', '실내카메라#1(SCAM) 고장(Car#6)', 'M3', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('122e5aca-3d22-4922-8ce8-4ecd2cb1ba81', '0041', '41', '보안제동 동작', 'Tc2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('122efa85-be57-4c95-b387-c63198bf3aa4', '0520', '520', 'DCU#1 5위(R3)-이중계 절체 동작', 'Tc1', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 "Module switchover' 신호가 "1"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.392739+00', null, '로템40량(2018)-1단계', 'Rotem'), ('122f7f0c-a8e7-4f32-a2af-76bb6c101d3a', '0507', '507', 'DCU#4 6위(L3)-초기화 실패', 'T1', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 "Calibration failure” 신호가 "1"이 되면 검지.', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터고장, 장애물 감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우', '초기화 실패를 야기한 고장 코드를 확인하여 조치 후, 재 닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('12398240-e9f4-4cd8-95a1-703ee43c3889', '0410', '410', 'SIV#1 - 인버터1 과온검지(INV1THF)', 'Tc1', 'B', 'SIV-인버터1 과온검지(INV1THF)', 'B', 'SIV', '보조전원장치(SIV) 의 RS485 데이터 중 SIV-TCMS SD TEXT5의 Bit0 “INV1THF” 신호가 “1”이 되면 +검지 +', '1) TCMS 화면하단 또는 고장화면에 ‘SIV 인버터1의 스택 과온' 표시됨. +2) 보조전원장치는 상기 고장검지 후 자동 재기동이 되지 않으며 중고장으로 처리함. +3) 중고장이 발생되면 TCMS 일반화면에 보조전원장치 상태 붉은색으로 표기되며, 연장급전 됨.', '보조전원장치(SIV)인버터1의 냉각기 온도가 105도 이상인 조건에서 검지 +', '1) 보조전원장치(SIV)인버터1의 냉각기 온도가 105도 미만으로 떨어졌을 시 +2) 보조전원장치(SIV) 리셋으로 고장 소거 됨.', '1) 상기 고장이 발생이 된 경우 아래와 같이 조치한다. +2) 보조전원장치(SIV) 냉각기의 손상이 없는지 확인한다. +3) 보조전원장치(SIV) 내부에 인버터 유니트 구성품에 손상이 없는지 확인한다. +4) 인버터 유니트 내부에 온도센서 및 결선에 이상이 없는지 확인한다. +5) DIN 보드의 동작 상태를 시험기를 통해 확인한다. +6) 인버터 유니트 구성품들의 배선상태와 광케이블의 연결 상태를 확인한다. +7) 부하단의 절연상태 및 접지 간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('12532ec4-4c87-42eb-a7ff-1c4a7169bf31', '0116', '116', 'VVVF-Stack 과온검지1(OTD1) (Car2)', 'M1', 'C', 'VVVF-Stack 과온검지1(OTD1)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT32의 Bit3 “OTD1” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 '스택과온검지1' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동이 되지 않으며 중고장으로 처리됨. +3) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치 냉각기의 온도가 105도 이상인 조건에서 검지.', '1) 추진제어장치 리셋으로 고장 소거됨.', '1) 상기고장이 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 냉각기의 손상이 없는지 확인한다. +3) 추진제어장치 내부에 IPM에 손상이 없는지 확인한다. +4) 인버터 유닛 내부에 온도센서 및 결선에 이상이 없느지 확인한다. +5) DIN 보드의 동작상태를 시험기를 통해 확인한다. +6) IPM 전원공급기의 전원연결상태 또는 광케이블의 연결상태와 배선상태를 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.578803+00', null, '다대48량(2015)', 'Rotem'), ('1265568f-b27d-4477-aa47-8527c09ab7db', '0507', '507', 'DCU#2 4위(L2)-초기화 실패', 'M1', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 "Calibration failure” 신호가 "1"이 되면 검지.', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터고장, 장애물 감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우', '초기화 실패를 야기한 고장 코드를 확인하여 조치 후, 재 닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('126bc124-3052-4291-97f0-c4d9d41b6549', '0731', '731', 'HVAC#4-냉난방장치1 리턴 센서 고장', 'T1', 'C', 'HVAC-냉난방장치1 리턴 센서 고장', 'C', 'HVAC', '냉난방장치1의 리턴 센서 고장 발생', '냉난방장치1 리턴센서 고장현시', '온도센서 검지범위는 -45~85도 (820~1330옴) 인데, 2초 이상 검지범위를 벗어나는 경우', '온도센서 검지 값이 2초 이상 허용온도 범위 내 일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820~1330옴 을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우, 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('12918cc5-8e0c-457a-91fb-9fd5b7fbe044', '0228', '228', 'BC 코크(차하#1) 차단(Car8)', 'Tc2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('12934f82-1637-4a1c-a281-e327238057f8', '0213', '213', 'BECU#8 - AC 압력센서 고장', 'Tc2', 'C', 'BECU-AC 압력센서 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit4 “AC 압력센서 고장” 신호가 “1”이 되면 검지 +', '해당 차량 공기제동장치고장, AC 압력센서 고장검지 현시 및 해당 차량 제동제어불가', '해당 차량의 AC 압력센서 고장 +', '해당 차량의 AC 압력센서가 정상일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('12a94567-90f3-4266-98f0-de9425632763', '0505', '505', 'DCU#2 6위(L3)-출입문 입력 고전압', 'M1', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 "1"이 되면 검지.', '고전압 상태. (그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('12b87767-6e59-45bf-9a61-ccaf3ad02beb', '0503', '503', 'DCU#2 1위(R1) - 출입문 내부 비상핸들 취급(EED)', 'M1', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('12c0e8ef-8583-447e-bd8e-daf5388ea3a3', '0911', '911', 'TRAIN RADIO#1 통신고장', 'Tc1', 'C', 'TRAIN RADIO 통신고장', 'C', 'TRS', 'Train Radio와 TCMS(CU)간 E-NET 통신고장이 검지되면 발생 +', '화면상 Train Radio 고장 현시', 'Train Radio 통신고장(전원 OFF) 또는 통신케이블 문제 +', 'TCMS와 Train Radio 간의 통신계통 점검 및 Train Radio NFB 점검', null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('12c6080a-9a43-47fc-b502-88a5f70ffdc2', '0500', '500', 'DCU#5 1위(R1) 통신고장', 'T2', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS 간 RS485 통신고장이 검지되면 발생 +', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐상태 등의 변화가 없음.', ' +1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우 +', '해당 차량의 DCU 및 CU/TU의 전원이 정상상태이고, 통신 라인 연결 상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜져 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적 으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는 데도 지속적으로 통신고장이 검지되면, DCU의 X2, X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상 체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('12dc5c1b-8461-4bd9-8bcb-32a09ca3f814', '0516', '516', 'DCU#5 2위(L1) - 출입문 장애물로 인한 닫힘 실패', 'T2', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Close failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림 상태로 대기', '도어 닫힘 중 3회 장애물감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('12ed77aa-a3ca-4a7d-8af9-b0820c5935f9', '0504', '504', 'DCU#6 4위(L2)-출입문 외부비상핸들 취급(EAD)', 'M3', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('130b07a3-6274-4b08-a970-1521a3ac1875', '0516', '516', 'DCU#6 6위(L3)-출입문 장애물로 인한 닫힘 실패', 'M3', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Close failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림상태로 대기', '도어 닫힘 중 3회 장애물 감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1310ba37-1a94-4648-a0b0-6d36a4eccdca', '0500', '500', 'DCU#1 6위(L3) 통신고장', 'Tc1', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS간 RS485 통신고장이 검지되면 발생.', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐 상태 등의 변화가 없음.', '1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우', '해당차량의 DCU 및 CU/TU 의 전원이 정상상태이고, 통신라인 연결상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜저 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는데도 지속적으로 통순고장이 검지되면, DCU의 X2,X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1317c37e-d75a-453b-ba19-c37bffacd0b2', '0517', '517', 'DCU#4 1위(R1) - 출입문 장애물로 인한 열림 실패', 'T1', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Open failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘 상태로 대기', '도어열림 중 3회 장애물감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 열림 시, 장애물감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('1320b853-c9d1-47a6-a1c7-eb1eb408fb5a', '0513', '513', 'DCU#4 6위(L3) - 모듈 상태체크 에러', 'T1', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 “Module check error” 신호가 “1”이 되면 검지 +', 'Modulecheckerror현시(출입문은 정상작동가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태 체크 기능에 이상이 생긴 경우 고장 발생 +', 'DCU의 ‘A' 모듈과 ‘B' 모듈 간, 상태 체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('133da902-64c2-4cbd-b069-83f9d9781129', '0508', '508', 'DCU#3 1위(R1) - 출입문 모터/인코더 고장', 'M2', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 “Motor / Encoder failure” 신호가 “1”이 되면 +검지 +', '출입문 정상동작 불가', ' +1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우(인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터/인코더 회로 가 손상된 경우 +', '모터/인코더 및 DCU가 정상 상태이고, 전기적 연결 상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있는지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. ※ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. ? DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. ? DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) ? DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('135fc3e7-6c04-40ab-8357-8f47524f65f1', '0518', '518', 'DCU#8 5위(R3)-출입문 Enable 신호 에러', 'Tc2', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 "Enable signal error” 신호가 "1"이 되면 검지.', 'DCU 출입문 Enable 신호 에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) 취급시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함.', '해당출입문 enable 신호 수신', '1) AUTO/MCS 모드시에는 YARD모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인한다. (YARD/FMC 모드시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1364c207-76db-4283-b793-4c266b6f5a70', '0736', '736', 'HVAC#5-전자접촉기 압축기(CRCM)1 고장', 'T2', 'C', 'HVAC-전자접촉기 압축기(CRCM)1 고장', 'C', 'HVAC', 'HVAC 냉방작동 중 CRCM1 전자접촉기 고장 발생.', '냉방 기능 저하(전냉방시 반냉방으로 작동)', '냉방작동 중 2.5초 이상동안 CRCM1 작동 feedback 신호가 수신되지 않는 경우', 'CRCM1 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CRCM1을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRCM1과 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('136dcb44-55e9-467b-8563-3d56290023db', '0136', '136', 'VVVF#3-OVT 전류센서 이상검지(OVCTD)', 'M2', 'C', 'VVVF-OVT 고장 과전류 검지(OVCTD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT29의 Bit1 “OVCTD” 신호가 "1"이 되면 검지.', null, 'OVT의 동작 조건에서 동작하지 않았을 때 중고장 발생.', '동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) OVCT 외관파손 및 커넥터 분리 유무 확인. +2) OVRe 저항값 측정.(기준값 6.4Ω) +3) OVT UNIT과 OVRe의 주 회로 결선상태 확인 +4) OVT UNIT의 IGBT 크랙 발생 유무 확인. +5) OVT UNIT의 PCB기판 상태 확인. +6) OVCT 커넥터의 P15A1~F15A1의 전압이 +15V임을 확인한다. +7) OVCT 커넥터의 N15A1~F15A1의 전압이 -15V임을 확인한다. +8) 상기의 점검부분에 이상이 있을 경우 관련부품을 교체한다.', null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1376f7b0-ec58-454c-ad6d-3c7f2484241f', '0512', '512', 'DCU#3 2위(L1) - 파라미터 로딩 실패', 'M2', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 “Paraneter error” 신호가 “1”이 되면 검지 +', 'Parametererror 현시(출입문은 정상작동 가능)', 'DCU 자체 내의 EEPROM으로부터 parameter데이터 로딩 실패 +', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('1388ea23-9317-4c28-9658-bbc582e4bd98', '0136', '136', 'VVVF#3 - OVT 전류센서 이상검지(OVCTD)', 'M2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('13a5f760-17c9-4f38-ad81-37579804ec27', '0229', '229', 'AS 코크#1 차단(Car2)', 'M1', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('13af96f0-0f2b-4512-8df1-b55ce265674f', '0144', '144', 'VVVF#6 - HSCB 트립검지(HBT)', 'M3', 'B', 'VVVF-HSCB 트립검지(HBT)', 'B', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT30의 Bit1 “HBT” 신호가 “1”이 되면 검지 +', '1) TCMS 화면 하단 또는 고장화면에 ‘HSCB 자기트립검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동이 되지 않으며 중고장으로 처리됨. +3) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉은색으로 표기되며, HSCB, LB1, 2 개방되어 동력 손실 발생함.', '추진제어장치 입력전류가 1,500A 이상인 조건 +', '추진제어장치 리셋으로 고장 소거됨.', '1) 상기고장이 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 고장기록의 FC 전압 및 입력전류 확인 +3) 추진제어장치 내부에 접지흔적 확인 및 고압 회로 점검 +4) 전류/전압 센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작 상태를 시험기를 통해 확인한다. +6) IPM 전원공급기의 전원연결 상태 또는 광케이블의 연결 상태와 배선상태를 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지 간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('13bd0d4b-2f68-4f63-9adf-18a598f433b3', '0114', '114', 'VVVF-HSCB 트립검지(HBTF) (Car3)', 'M2', 'B', 'VVVF-HSCB 트립검지(HBTF)', 'B', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT32의 Bit1 “HBTF” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 'HSCB 자기트립검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동이 되지 않으며 중고장으로 처리됨. +3) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치 입력전류가 1500A 이상인 조건.', '1) 추진제어장치 리셋으로 고장 소거됨.', '1) 상기고장이 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 고장기록의 FC 전압 및 입력전류 확인. +3) 추진제어장치 내부에 접지흔적 확인 및 고압회로 점검. +4) 전류/전압 센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작상태를 시험기를 통해 확인한다. +6) IPM 전원공급기의 전원연결상태 또는 광케이블의 연결상태와 배선상태를 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.656536+00', null, '다대48량(2015)', 'Rotem'), ('13c03ebe-b5f3-4bcc-9172-6a612ff7c254', '0156', '156', 'VVVF#7-전진/후진이상검지(FRD)', 'M4', 'C', 'VVVF-전진/후진이상검지(FRD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT31의 Bit5 “FRD” 신호가 "1"이 되면 검지.', null, '전진 후진지령 동시에 입력 시 고장검지.', '동시 입력상황 해제', '1) 상기고장이 간헐적으로 발생하는 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 전진/후진신호에 이상이 있는지 확인한다. +3) 차량의 제어회로 중 전진/후진 신호가 추진제어장치로 연결되는 경로에 이상이 없는지 확인한다. +4) 추진제어장치 시험기를 이용하여 TCU(통합제어장치)의 이상여부를 확인한다. +5) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('13dd9c97-a9b4-4189-846b-d2e27206f6b2', '0114', '114', 'VVVF-HSCB 트립검지(HBTF) (Car6)', 'M3', 'B', 'VVVF-HSCB 트립검지(HBTF)', 'B', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT32의 Bit1 “HBTF” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 'HSCB 자기트립검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동이 되지 않으며 중고장으로 처리됨. +3) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치 입력전류가 1500A 이상인 조건.', '1) 추진제어장치 리셋으로 고장 소거됨.', '1) 상기고장이 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 고장기록의 FC 전압 및 입력전류 확인. +3) 추진제어장치 내부에 접지흔적 확인 및 고압회로 점검. +4) 전류/전압 센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작상태를 시험기를 통해 확인한다. +6) IPM 전원공급기의 전원연결상태 또는 광케이블의 연결상태와 배선상태를 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.656536+00', null, '다대48량(2015)', 'Rotem'), ('13e7e5cb-8848-46a7-9166-6069545b6186', '0739', '739', 'HVAC#2 - 전자접촉기 증발기2(CREF) 고장', 'M1', 'C', 'HVAC-전자접촉기 증발기2(CREF) 고장', 'C', 'HVAC', 'HVAC 냉방 작동 중 CREF2 전자접촉기 고장 발생 +', 'UNIT1 냉방 작동 불가', '냉방 작동 중 2.5초 이상 동안 CREF2 작동 feedback 신호가 수신되지 않는 경우 +', 'CREF2 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CREF2를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CREF2와 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('13edd35d-b424-4314-8f88-2efb0a256c0a', '0506', '506', 'DCU#3 5위(R3)-출입문 입력 저전압', 'M2', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 "1"이 되면 검지.', '저전안 상태 (출입문 동작이 심하게 느려지거나 작동조차 안될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('13f11189-b5db-41d8-bdc2-a67c657f9ceb', '0509', '509', 'DCU#4 3위(R2)-출입문 잠김 리미트 스위치 고장', 'T1', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 "DLS Failure” 신호가 "1"이 되면 검지.', '출입문 잠김 상태 확인 불가', '1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('13f3e4ee-9b45-4a4b-9008-caa3175e3350', '0868', '868', '실내객실표시기(PIB) 고장(Car#7)', 'M4', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('13f4af76-a7ee-4e62-bcea-7a7c62837019', '0155', '155', 'VVVF#7-역행/회생이상검지(PBR)', 'M4', 'C', 'VVVF-역행/회생이상검지(PBR)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT31의 Bit4 “PBR” 신호가 "1"이 되면 검지.', null, '역행, 제동신호 동시 입력', '동시 입력상황 해제', '1) 상기고장이 간헐적으로 발생하는 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 역행/제동신호에 이상이 있는지 확인한다. +3) 차량의 제어회로 중 전진/후진 신호가 추진제어장치로 연결되는 경로에 이상이 없는지 확인한다. +4) 추진제어장치 시험기를 이용하여 TCU(통합제어장치)의 이상여부를 확인한다. +5) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('13fcc431-9824-4890-9898-f8bf7cd43f9b', '0517', '517', 'DCU#7 6위(L3) - 출입문 장애물로 인한 열림 실패', 'M4', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Open failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘 상태로 대기', '도어열림 중 3회 장애물감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 열림 시, 장애물감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('140e0345-7857-42fb-9f4d-8501181685c6', '0512', '512', 'DCU#7 5위(R3)-파라미터 로딩 실패', 'M4', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 "Paraneter error” 신호가 "1"이 되면 검지.', 'Parameter error 현시 (출입문은 정상작동 가능)', 'DCU 자체내의 EEPROM으로부터 parameter 데이터 로딩 실패', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('141b80b5-5766-4ef1-88fc-e81a07b1ff61', '1500', '1500', '출입문 회로차단기 차단(Car1)', 'Tc1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('1432388c-8175-4c9d-ab3e-e5b9b1cf1e85', '1703', '1703', '노선안내표시기#3 고장(Car3)', 'M2', 'C', '노선안내표시기#1 고장', 'C', 'PIC', 'PIC 장치의 노선안내표시기#1이 고장이 났을 때 발생 +', '1) 노선안내표시기 화면 미현시 +2) 노선안내표시기 안내 화면 오현시', '통신고장 +', '통신 재개 시', '1) 이더넷 스위치 링크 확인 +2) 이더넷 케이블 점검 +3) 제어보드 및 전원보드 교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('14354078-8751-4e69-acf3-394a6bfc819b', '0747', '747', 'HVAC#3-전자접촉기 차량히터2(CRRHT) 고장', 'M2', 'C', 'HVAC-전자접촉기 차량히터2(CRRHT) 고장', 'C', 'HVAC', '객실 난방기 작동 중 CRRHT2 전자접촉기 고장 발생.', '객실 전난방 시 1/3난방만 작동', '객실 전난방 작동 중 2.5초 이상동안 CRRHT2 작동 feedback 신호가 수신되지 않는 경우', 'CRRHT2 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CRRHT2를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRRHT2와 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('143ef3ee-ef47-423c-ad63-2497ccb37cee', '0728', '728', 'HVAC#1 - 냉난방장치2 토출 센서 고장', 'Tc1', 'C', 'HVAC-냉난방장치2 토출 센서 고장', 'C', 'HVAC', '냉난방장치2의 토출 센서 고장 발생 +', '냉난방장치2 토출 센서 고장현시', '온도센서 검지범위는 -45 ~ 85도(820 ~ 1,330Ω)인데, 2초 이상 검지범위를 벗어나는 경우 +', '온도센서 검지값이 2초 이상 허용온도 범위 내일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820 ~ 1,330Ω을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('1440a4e4-421e-4fca-8642-e00271f2a021', '1525', '1525', 'TCMS 데이타버스1 우측라인 통신 이상(Car5)', 'T2', 'C', 'TCMS 데이터버스1 우측라인 통신 이상', 'C', 'TCMS', 'TCMS의 초기 기동 시 자기진단에 의한 2중계 메인통신선 중 1계 메인통신 이상 검지 시 +', '1) SL-NET 2중계이므로 데이터버스 2계로 정상통신, 운행에 지장 없음. +2) 초기기동 자기진단 시 2중계를 점검하여 1계측의 이상이 검지되었다는 점검 필요용 메시지', '초기 기동 시 SL-NET 1계와 2계를 각각 통신 후 비교하여 2계는 정상통신이 되나 1계는 정상통신이 안 되는 경우 +', '정상 수리 후 차량 전체 재기동하여 SL-NET 1계와 2계 모두 정상통신이 되는 경우', '1) 고장검출호차와 고장검출 우측호차와의 SL-NET 통신 1계 정상여부 확인(예 : 고장호차가 3호차인 경우, 1-2-3-4-5-6-7-8에서 3호차의 우측 즉, 3-4호차 간 SL-NET 1계 통신 상태 점검 필요) +2) 고장검지호차의 SCM PCB 교체 정상여부 확인 +3) 고장검지호차의 우측호차 SCM PCB 교체 정상여부 확인 +4) 고장검지호차와 고장검지 우측호차의 SL-NET 1계 메인통신 배선의 연결 상태 확인 +5) 상기 2 ~ 4번 점검에도 정상적으로 복귀되지 않는 경우, CU/TU ASS'Y 교체(백보드 확인 필요)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('14426bfa-d504-4192-9692-cf003f4462e7', '0702', '702', 'HVAC#6-냉난방장치2 압축기1 과부하', 'M3', 'C', 'HVAC-냉난방장치2 압축기1 과부하', 'C', 'HVAC', 'HVAC 냉방작동 중 냉난방장치2 압축기1 또는 응축기1 모터에 과부하 발생.', '냉방 기능 저하(전냉방시 반냉방으로 작동)', '1) 냉방작동 중 UNIT2의 압축기1 또는 응축기1 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRCM3과 연결된 THR3이 Trip 됨.', 'UNIT2의 압축기1 또는 응축기1 모터의 과부하 조건을 해소하여 정상 가능 상태로 만들고, THR3 및 마이콤 전원 리셋', '1) 냉난방배전반의 점검커버를 열고, THR3의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR4의 전류 세팅값이 11.5A에 맞춰져 있는지 확인하여, 아닐 경우, 십자 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동 시킨 후, THR3의 2차측 2,4,6 단자에서 각 단자간 상간 전압이 AC 380V으로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 압축기 및 응축기 단품 상태에서 점검을 한다. +7) THR3의 2차측 2,4,6 단자에서 각 단자간 권선저항이 모두 같은지 확인한다. (±10% 이하) (압축기1 및 응축기1 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT2의 압축기1 또는 응축기1 모터의 결선을 해제한 후 각 부품의 권선저항을 확인 후, 문제가 있는 부품을 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR3 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('144516b9-19de-4c61-a6f0-8529a54139dd', '0037', '37', '주차제동 바이패스 스위치 취급', 'Tc1', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1449b4f3-48f9-49eb-8df2-4c10b532f0a5', '0224', '224', 'BECU#4 - 파트너차 ECU 고장(PECUF)', 'T1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('144b59cd-b871-425b-87a3-538b49eeb09b', '0147', '147', 'VVVF#3-ZVR 이상검지(ZVRD)', 'M2', 'D', 'VVVF-ZVR 이상검지(ZVRD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT30의 Bit4 “ZVRD” 신호가 "1"이 되면 검지.', null, 'ZVR 신호의 지령과 출력 불일치 시 고장검지.', '검지조건 해제 시.', '1) 상기고장이 간헐적으로 발생하는 경우 아래와 같이 조치한다. +2) 통합제어기 전면의 CNC1커넥터 고정상태 확인. +3) RELAY 유니트 내부의 ZVR 계전기 접점상태 확인. +4) RELAY 유니트 전면의 커넥터 핀 및 배선상태 확인. +5) TC1, TC2 일반배전반의 계전기 동작상태 점검. +6) 상기의 점검부분에 이상이 있을 경우 관련부품을 교체한다.', null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1486ac93-a994-4e3a-a6c1-7de18b07781a', '0743', '743', 'HVAC#7 - 전자접촉기 보조히터2(AHEK) 고장', 'M4', 'C', 'HVAC-전자접촉기 보조히터2(AHEK) 고장', 'C', 'HVAC', 'HVAC 보조난방기 작동 중 AHEK2 전자접촉기 고장 발생 +', 'UNIT1 보조난방기 전난방 시 반난방만 작동', '보조난방기 작동 중 2.5초 이상 동안 AHEK2 작동 feedback 신호가 수신되지 않는 경우 +', 'AHEK2 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) AHEK2를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, AHEK2와 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('148a4967-a25c-4fb5-94a2-97445909b379', '0509', '509', 'DCU#8 6위(L3)-출입문 잠김 리미트 스위치 고장', 'Tc2', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 "DLS Failure” 신호가 "1"이 되면 검지.', '출입문 잠김 상태 확인 불가', '1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('148ee8b4-60a5-4bcd-85e4-ac98c459417b', '0518', '518', 'DCU#6 6위(L3) - 출입문 Enable 신호 에러', 'M3', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 “Enable signal error” 신호가 “1”이 되면 검지 +', 'DCU 출입문Enable신호에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드 시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을 때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드 시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입 상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호 장치로부터의 출입문 열림 명령 신호) 취급 시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함. +', '해당 출입문 enable 신호수신', '1) AUTO/MCS 모드 시에는 YARD 모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인 한다. (YARD/FMC 모드 시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('14a79777-9dda-45da-94ad-1ee5f642a4a3', '0732', '732', 'HVAC#1 - 실외온도 센서1 고장', 'Tc1', 'C', 'HVAC-실외온도 센서 고장', 'C', 'HVAC', '실외온도 센서 고장 발생 +', '실외온도 센서 고장 현시', '온도센서 검지범위는 -45 ~ 85도(820 ~ 1,330Ω)인데, 2초 이상 검지범위를 벗어나는 경우 +', '온도센서 검지값이 2초 이상 허용온도 범위 내일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820 ~ 1,330Ω을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('14aaa204-3d20-467b-95c1-c5b69c422c1f', '0236', '236', '상용제동코크 차단(Car4)', 'T1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('14b4a7ec-e908-40f6-af5d-8067e91f63c3', '0720', '720', 'HVAC#1 - 실내온도 센서1 고장', 'Tc1', 'C', 'HVAC-실내온도 센서1 고장', 'C', 'HVAC', '객실 실내온도 센서1 고장 발생 +', '실내온도센서1 고장 현시', '온도센서 검지범위는 -45 ~ 85도(820 ~ 1,330Ω)인데, 2초 이상 검지범위를 벗어나는 경우 +', '온도센서 검지값이 2초 이상 허용온도 범위 내일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820 ~ 1,330Ω을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('14b548ca-62a3-496d-9cc9-68edc1673438', '0222', '222', 'BECU#1 - 공기스프링 누설(후미대차)', 'Tc1', 'C', 'BECU-공기스프링누설(후미대차)', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit5 “공기스프링누설(후미대차)” 신호가 “1”이 +되면 검지 +', '해당 차량 공기스프링 누설(후미대차) 검지 현시 및 해당 차량 정상적인제동제어 불가 (응하중제어)', '해당 차량 후미대차의 공기스프링(AS3, AS4) 압력이 정상범위를 벗어남. (100kPa 미만) +', '해당 차량 후미대차의 공기스프링(AS3, AS4) 압력이 정상범위일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('14b62597-3ec4-4cba-9137-da1e248acdbc', '0237', '237', '보안제동코크 차단(Car2)', 'M1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('14bc8c05-3171-4838-977e-81e51d7e7290', '0513', '513', 'DCU#7 1위(R1)-모듈 상태체크 에러', 'M4', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 "Module check error” 신호가 "1"이 되면 검지.', 'Module check error 현시 (출입문은 정상작동 가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태체크 기능에 이상이 생긴 경우 고장 발생.', 'DCU의 'A'모듈과 'B'모듈 간, 상태체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('14c266e9-279e-477a-b2cb-859cd431ed35', '0095', '95', 'PWM 엔코더#2 고장(Car1)', 'Tc1', 'B', 'PWM 엔코더#2 고장 (TC1)', 'B', '기타', '차량으로부터 PWM ENCODER#1(#2) FAULT 신호 미입력 시 +', '1) 엔코더 1계 PWM 출력 고장 시 1계 고장에 해당되는 신호 출력 +2) 엔코더 2계로 자동 절체 +3) 엔코더 2계 PWM 출력 고장 시 1계, 2계 고장 모두 출력 +4) 엔코더 PWM 출력 신호 없음', '1) 엔코더 1계 PWM 출력 신호 이상 시 +2) 엔코더 2계 PWM 출력 신호 이상 시 +3) 엔코더 1계, 2계 PWM 출력 신호 이상 시 +4) 엔코더 수동절체버튼 3초 이상 조작 시 +', '1) 엔코더의 전원 차단 후 재투입하여 소거되는지 확인 +2) 수동절체버튼의 조작으로 인한 고장 출력 또한 전원 재투입으로 소거함', '1) 엔코더의 전원 차단 후 재투입하여 소거되지 않을 시 정상품으로 교체하여 정상동작 확인 +2) 교체된 고장품의 고장원인 분석 회로 도면 : REC10100DX0', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('14c50011-8118-41f5-9906-1cdb226c9636', '0519', '519', 'DCU#7 2위(L1)-ZVR 신호 에러', 'M4', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 "ZVR signal error” 신호가 "1"이 되면 검지.', '출입문이 강제로 닫히게 되고, 열림은 불가능', '1) 차량 ZVR 신호가 없는 상태 (차량 주행상태) 에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함.', '해당출입문 ZVR 신호 수신', '1) 차량이 주행중이라면, 차량이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('14d309eb-6a74-404b-a5df-2f24d3fb240e', '1510', '1510', '열차분리#2 검지(Car6)', 'M3', 'B', '열차분리#2 검지', 'B', 'TCMS', '차량의 열차분리#2 검지 +', '1) 2위측 열차검지신호(SOTS2) 검출 시 화면에 현시 +2) 실제 열차분리 시 검지되었는지 확인 필요(실제 열차분리 시 다른 차량 이 접근하지 못하도록 선조치 필요) +3) 실제 열차 분리 시 비상제동 안전루프에 의해 비상제동체결 됨. +4) 열차 분리에 따라 분리 위치부터 차량제어장치(TU)와 반대편의 편성제어장치(CU)의 통신고장 동반 발생', 'CU/TU의 2위측 열차분리신호(SOTS2) 신호 활성(LOW) 입력 시 고장 현시 +', 'CU/TU의 2위측 열차분리신호(SOTS2) 신호 정상(HIGH) 입력 시 소거됨.', '1) 실제 열차분리 시 관제에 연락하고, 지시에 따름 +2) 회로 차단기 ELCB ON 상태 확인 +3) CU인 경우 2위측 열차분리신호 DIM1 PCB의 입력채널(SOTS +2) 점검/교체 +4) TU인 경우 2위측 열차분리신호 DIM3 PCB의 입력채널(SOTS +2) 점검/교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('14f197be-57d4-4361-a0ce-bebb495418a2', '0143', '143', 'VVVF#6-주회로 접지검지(LGD)', 'M3', 'B', 'VVVF-주 회로 접지검지(LGD)', 'B', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT30의 Bit0 “LGD” 신호가 "1"이 되면 검지.', null, '가선전압이 15ms이내에 300V이상 감압 시 고장검지.', '제동 OFF.', '1) 상기고장이 간헐적으로 발생하는 경우 아래와 같이 조치한다. +2) 주 회로 차단기함 내부의 고압회로에 소손이 없는지 확인하고 소손품은 교체한다. +3) 주 회로 차단기함 내부에 설치된 가선전압 측정용 전압센서의 외관에 손상이 있는지 확인한다. +4) 전압센서의 고압 / 저압 단자대의 체결상태 확인. +5) 인버터 함 내부의 고압회로에 소손 또는 단락이 있는지 확인한다. +6) IGBT의 소손여부를 확인한다. +7) 추진제어장치 시험기를 이용하여 TCU(통합제어장치) 및 PWM보드의 이상 여부를 확인한다. +8) 상기의 점검부분에 이상이 있을 경우 관련부품을 교체한다.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('14fe3ace-5c46-4417-aa13-017b8df18982', '0713', '713', 'HVAC#5 - 냉난방장치1 압력스위치2(DPS) 저압', 'T2', 'D', 'HVAC-냉난방장치1 압력스위치2(DPS) 저압', 'D', 'HVAC', '냉난방장치1 냉매 압력스위치2 저압 발생 +', 'UNIT1CYCLE2 냉방기능불가', 'UNIT1DSP2측 냉매압력이 3초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우 +', '냉매압력이 정상수치 2±0.5(kgf/cm2) 이상으로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CREF2의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)를 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설 여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안 되는 것을 확인한 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('150da273-3ebe-445b-9f40-ffb85af5f81a', '0504', '504', 'DCU#8 6위(L3) - 출입문 외부 비상핸들 취급(EAD)', 'Tc2', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('15266d34-07f7-47b3-b207-d1c8f4348f35', '0512', '512', 'DCU#3 1위(R1) - 파라미터 로딩 실패', 'M2', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 “Paraneter error” 신호가 “1”이 되면 검지 +', 'Parametererror 현시(출입문은 정상작동 가능)', 'DCU 자체 내의 EEPROM으로부터 parameter데이터 로딩 실패 +', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('1537ebc9-309b-4ea2-a016-e4fe911e71eb', '1006', '1006', 'CMSB#8 - 입력 DC 과전압', 'Tc2', 'C', 'CMSB-입력 DC 과전압', 'C', 'CMSB', 'CMSB의 RS485 데이터 중 CMSB-TCMS SD TEXT3의 Bit7 “입력 DC 과전압” 신호가 “1”이 되면 검지 +', '1) TCMS 화면 하단 또는 고장화면에 ‘입력 DC 과전압' 표시됨. +2) 바이패스 모드로 전환되고, CM 기동 시 ‘바이패스 기동'으로 표시됨.', 'CMSB 내 콘덴서(DC-LINK) 충전 전압이 DC750V 이상 일 경우 검지됨. +', '1) 차량 전원 OFF +2) CMSB 내부의 표시기 패널 RESET 버튼 누름', '0) 정상운행 후, 검수고에 입고하여 아래와 같이 조치한다. +1) 상기고장은 고장 소거 후, 재현시험을 진행하여 지속적으로 발생될 경우 아래와 같이 조치한다. +2) 차량 전원 AC 380V를 확인한다. +3) CMSB 제어기에서 DC_LINK 전압을 오검지 하는지 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('153df833-7c15-456b-88e2-54af267eb3f8', '0708', '708', 'HVAC#5 - 냉난방장치1 증발기1 과부하', 'T2', 'C', 'HVAC-냉난방장치1 증발기1 과부하', 'C', 'HVAC', 'HVAC 냉방 작동 중 냉난방장치1 증발기 모터에 과부하 발생 +', 'UNIT1냉방 작동 불가', ' +1) 냉방 작동 중 UNIT1의 증발기 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CREF1과 연결된 THR5가 Trip 됨. +', 'UNIT1의 증발기모터의 과부하조건을 해소하여 정상 가능 상태로 만들고, THR5 및 마이콤 전원 리셋', '1) 냉난방 배전반의 점검커버를 열고, THR5의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR5의 전류 세팅값이 3A에 맞춰져 있는지 확인하여, 아닐 경우, (+) 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동시킨 후, THR5의 2차측 2, 4, 6 단자에서 각 단자 간 상간 전압이 AC 380V로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 증발기 단품 상태 에서 점검을 한다. +7) THR5의 2차측 2, 4, 6 단자에서 각 단자 간 권선저항이 모두 같은지 확인한다. (±10% 이하) (증발기 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT2의 증발기 모터의 결선을 해제한 후 4극 및 6극 모터의 권선저항을 확인 후, 문제가 있을 경우, 증발기 모터를 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR5 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('154e1fec-1da5-4bb8-a94e-d6bc1b740041', '0159', '159', 'VVVF#6-제어전원전압이상(PWM2)(CLVD_P2)', 'M3', 'C', 'VVVF-제어전원전압이상(PWM2)(CLVD_P2)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT32의 Bit0 “CLVD_P2” 신호가 "1"이 되면 검지.', null, 'PWM보드 내부의 제어전원 이상 검지 시 중고장 발생.', '동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) PWM보드 2군 전면의 CN1, CN2 커넥터 핀 상태 및 체결상태 확인. +2) PWM보드 2군 내부의 PCB의 소손, 냉납, 열화 유무 확인. +3) 추진제어장치 시험기를 이용하여 PWM보드의 정상동작을 확인한다. +4) 상기의 점검부분에 이상이 있을 경우 관련부품을 교체한다.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1551a9cb-3f59-434e-a5f4-38f224285f1a', '0422', '422', 'SIV#8-인버터2 과온검지(INV2THF) ', 'Tc2', 'B', 'SIV-인버터2 과온검지(INV2THF)', 'B', 'SIV', '보조전원장치(SIV) 의 RS485 데이터 중 SIV-TCMS SD TEXT6의 Bit7 “INV2THF” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 'SIV 인버터 2의 스택 과온' 표시됨. +2) 보조전원장치는 상기 고장검지 후 자동 재기동이 되지 않으며 중고장으로 처리함. +3) 중고장이 발생되면 TCMS 일반화면에 보조전원장치 상태 붉을색으로 표기되며, 연장급전 됨.', '보조전원장치(SIV) 인버터 2의 냉각기 온도가 105도 이상인 조건에서 검지.', '1) 보조전원장치(SIV) 인버터 1의 냉각기 온도가 105도 미만으로 떨어졌을 시 +2) 보조전원장치(SIV) 리셋으로 고장 소거 됨.', '1) 상기고장이 발생이 된 경우 아래와 같이 조치한다. +2) 보조전원장치(SIV) 냉각기의 손상이 없는지 확인한다. +3) 보조전원장치(SIV) 내부에 인버터 유닛 구성품에 손상이 없는지 확인한다. +4) 인버터 유닛 내부에 온도센서 및 결선에 이상이 없느지 확인한다. +5) DIN 보드의 동작상태를 시험기를 통해 확인한다. +6) 인버터 유닛 구성품들의 배선상태와 광케이블의 연결상태를 확인한다. +7) 부하단의 절연상태 및 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1579ec03-9ab6-4622-bdab-59f66f2ca4f2', '0207', '207', 'BECU#8 - 자기진단 고장', 'Tc2', 'C', 'BECU-자기진단고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit6 “RAM 점검 고장” 신호가 “1”이 되면 검지 +', '해당 차량 자기진단 고장검지 현시 및 해당 차량 활주제어 불가', '해당 차량 BECU의 자가진단 시 고장 발생(활주방지밸브 고장) +', '해당 차량 BECU의 자가진단 시 정상적일 경우 소거(활주방지밸브 정상)', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('15885728-3e12-42eb-a882-21523916301a', '0029', '29', '비상제동 차단 스위치 취급', 'Tc2', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('158864ee-fe2b-4f47-a40b-c611c2a9107e', '0516', '516', 'DCU#8 5위(R3)-출입문 장애물로 인한 닫힘 실패', 'Tc2', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Close failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림상태로 대기', '도어 닫힘 중 3회 장애물 감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1592a811-2307-4a1b-9a88-56222c23b09c', '0521', '521', 'DCU#6 5위(R3)-모듈 상태 이상', 'M3', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 "01"또는 "00"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1597b26e-0233-4d47-b442-b8cab53be4ae', '1500', '1500', '출입문 회로차단기 차단(Car5)', 'T2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('1599bc52-76b9-4b42-8f3e-3802cf2fad1a', '1204', '1204', 'FDU#2-감지기2 고장', 'M1', 'C', 'FDU-감지기2 고장', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 "Detector1 State” 신호가 "10"이 되면 검지.', '감지기 고장상태 현시(자동 소거 안됨)', '1) 감지기로부터 데이터 응답이 없는경우. +2) 감지기로부터 수신된 데이터의 CRC가 맞지 않는경우 +3) 감지기로부터 수신된 데이터의 ID가 송신 ID와 일치하지 않는경우', 'FDU 전원 리셋 후 감지기로부터 정상적으로 데이터가 수신된 경우', '1) FDU 전원 리셋 후 고장 소거 여부 확인 +2) 정상 동작중인 감지기와 위치 교환 후 FDU 전원 리셋 및 고장 상태 확인 +3) 동일한 감지기에서 고장 발생시 감지기 교체 +4) 동일한 위치에서 고장 발생시 감지기 라인 점검', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('159e969a-0ae2-48e9-80f5-8443c2fcd771', '1003', '1003', 'CMSB#1 - 출력단락', 'Tc1', 'C', 'CMSB-출력단락', 'C', 'CMSB', 'CMSB의 RS485 데이터 중 CMSB-TCMS SD TEXT3의 Bit4 “출력 단락” 신호가 “1”이 되면 검지 +', '1) TCMS 화면 하단 또는 고장화면에 ‘CM 출력 단락' 표시됨. +2) 바이패스 모드로 전환되고, CM 기동 시 ‘바이패스 기동'으로 표시됨.', ' +1) CM 모터의 단락이 발생되었을 경우 검지됨. +2) CMSB 내 IBGT 보드의 결함이 발생될 경우 검지됨. +3) CM 출력부하가 급변할 경우 검지됨. +', '1) 차량 전원 OFF +2) CMSB 내부의 표시기 패널 RESET 버튼 누름', '0) 정상운행 후, 검수고에 입고하여 아래와 같이 조치한다. +1) 상기고장은 고장 소거 후, 재현시험을 진행하여 지속적으로 발생될 경우 아래와 같이 조치한다. +2) CM 모터의 절연상태를 점검한다. +3) CMSB 내 IGBT 보드를 점검한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('15a2937c-3c7f-4b49-8cd3-fab15850b002', '0226', '226', 'BECU#5-제동불완해검지(NRBD)', 'T2', 'B', 'BECU-제동불완해검지(NRBD)', 'B', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT8의 Bit2 “NRBD” 신호가 "1"이 되면 검지.', '해당 차량 제동불완해 검지 현시 및 완해 취급하였음에도 불구하고 해당 차량 제동압력(BCP)이 완해되지 않음.', '제동완해 상태(정차제동 포함)에서 해당 차량의 제동압력이 완전히 배기 되지 않음.', '제동완해 상태(정차제동 포함)에서 해당 차량의 제동압력이 완전히 배기 됨.', '정차하여 강제완해스위치를 취급하여 소거 여부 확인. 제동 완해상태 확인 후 주의 운전 할 것. +2~3회 시도에도 완해불능시 관제보고하고 지시에 따를 것.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('15a64c0a-12da-43df-8b44-4a544e1962b4', '1702', '1702', '노선안내표시기#6 고장(Car7)', 'M4', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('15a6a3ed-7bdc-45d1-9136-9993b3c1a7bf', '0737', '737', 'HVAC#6 - 전자접촉기 증발기4(CREF) 고장', 'M3', 'C', 'HVAC-전자접촉기 증발기4(CREF) 고장', 'C', 'HVAC', 'HVAC 냉방 작동 중 CREF4 전자접촉기 고장 발생 +', 'UNIT2 냉방 작동 불가', '냉방 작동 중 2.5초 이상 동안 CREF4 작동 feedback 신호가 수신되지 않는 경우 +', 'CREF4 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CREF4를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CREF4와 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('15aa1f40-560f-48ae-8686-d8a7d75f2e0c', '0064', '64', 'MAIN FUSE#1 DISCONNECTED(Car7)', 'M4', 'W', 'MAIN FUSE#1 DISCONNECTED(Car7)', 'W', '기타', '차량으로부터 AUX FUSE DISCONNECTED 신호 입력 시 +', 'VVVF 고압 차단으로 추진 불능', '해당 퓨즈 소손 +', '해당 퓨즈 교체 +회로 도면 : REC20210DX0', null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('15c401f0-2860-45ac-a9db-9a8a12c2bb94', '754', '754', '운전실 마이컴 고장(Car1)', 'Tc1', 'C', '운전실 마이컴 고장', 'C', 'TCMS', '열차의 운전실의 마이컴 고장(CHVACF) 신호를 디지털 입력으로 검지한 경우 +', '1) 운전실의 마이컴 고장 현시 +2) 운전실 마이컴 고장의 경우 운전실 냉난방이 정상적으로 동작하지 않음. +3) DU이 “운전자 HVAC” 버튼을 눌러 고장상태 확인', 'CU의 디지털 입력으로 운전실의 마이컴고장 신호가 검지된 경우 +', 'CU의 디지털 입력으로 운전실의 마이컴고장 신호가 검지되지 않을 경우', '운전실의 냉난 마이컴의 고장상태를 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('15e58739-a9d7-4be8-baf7-ad5fd2ae7bc9', '1210', '1210', 'FDU#4 - 메모리 고장', 'T1', 'C', 'FDU-메모리 고장', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT5의 Bit6 “Memory Fault” 신호가 “1”이 되면 검지 +', '1) Memory Fault 현시 +2) FDU의 이벤트 기록 및 읽기 동작 안 됨. +3) FDU 환경설정 정보 로딩 실패(차량 번호, 주차시간, 절전시간 등의 설정값을 기본값으로 로딩)', '메모리 연결 포트의 이상 혹은 배드섹터 발생(메모리 접근 및 읽기, 쓰기가 실패한 경우) +', '메모리의 접근 및 읽기, 쓰기 성공', '1) FDU의 전원을 리셋하여 소거여부 확인 +2) 문제가 지속될 경우, 수신기 교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('15f7e1cc-a1dc-472c-b0a4-a7f0384e1eb8', '0090', '90', '화재검지기 고장(Car5)', 'T2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('15f92384-5924-4401-8652-bf06ef37651e', '0730', '730', 'HVAC#4 - 냉난방장치1 토출 센서 고장', 'T1', 'C', 'HVAC-냉난방장치1 토출 센서 고장', 'C', 'HVAC', '냉난방장치1의 토출 센서 고장 발생 +', '냉난방장치1 토출 센서 고장현시', '온도센서 검지범위는 -45 ~ 85도(820 ~ 1,330Ω)인데, 2초 이상 검지범위를 벗어나는 경우 +', '온도센서 검지값이 2초 이상 허용온도 범위 내일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820 ~ 1,330Ω을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('16139b34-b7a7-4015-92d1-88b23d054e5a', '0725', '725', 'HVAC#3 - 냉방시험 불가능', 'M2', 'C', 'HVAC-냉방시험 불가능', 'C', 'HVAC', '운전실 TCMS에서 냉방시험 작동을 할 때, 냉방운전이 불가능한 경우 발생 +', '냉방시험 운전 불가능', '실내 또는 실외온도가 10도 미만일 경우(환절기 또는 겨울철에 냉방가동 시 시스템 보호를 위한 온도조건) +', '실내 또는 실외온도가10도 이상일 때, 냉방시험작동', '1) TCMS 화면에서 실내 또는 실외 온도가 10도 미만인지 확인한다. +2) 실내 및 실외 온도가 10도 이상인데도 냉방 가동이 되지 않을 시, TCMS-마이콤 간 통신불량이 있는지 확인하고 조치한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('1629f7c1-3deb-453d-876a-3ff664ff0c73', '0100', '100', 'VVVF#3 통신고장', 'M2', 'B', 'VVVF-통신고장', 'B', 'VVVF', 'VVVF와 TCMS 간 RS485 통신고장이 검지되면 발생 +', 'TCMS 화면에 고정정보 현시되며, 추진제어장치상태화면에 나타나는 데이터에 변동이 없음.', 'TCMS-추진제어장치(VVVF)간 통신정보가 3초 이상 동일한 정보로 유지되면 통신고장을 검지함. +', 'TCMS-추진제어장치(VVVF) 간 통신정보가정상적으로 통신이 될 경우 소거됨.', '1) 추진제어장치(VVVF) 리셋 실시 후 통신고장 소거됨을 확인 +2) 통신고장 소거가 되지 않을 경우 추진제어장치 PUZ 보드 신품으로 교체 후 통신고장 소거여부 확인 +3) 위 조건에도 고장이 소거되지 않을 경우, TCMS-추진제어장치 간 RS485 통신케이블 연결 상태 점검', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('16486d77-f7e0-4d39-ba39-6b2b7a7647cd', '0502', '502', 'DCU#7 6위(L3) - 출입문 장애물검지', 'M4', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('164b93de-8ca5-488b-8f44-a05c833fdc43', '0507', '507', 'DCU#6 5위(R3) - 초기화 실패', 'M3', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 “Calibration failure” 신호가 “1”이 되면 검지 +', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터 고장, 장애물감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우 +', '초기화 실패를 야기한 고장코드를 확인하여 조치 후, 재닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인한다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('167aa4e2-6217-4532-a475-bda6ffedd371', '0507', '507', 'DCU#5 3위(R2)-초기화 실패', 'T2', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 "Calibration failure” 신호가 "1"이 되면 검지.', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터고장, 장애물 감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우', '초기화 실패를 야기한 고장 코드를 확인하여 조치 후, 재 닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1686fe67-fef7-4b3c-957c-a6639c3741fa', '1211', '1211', 'FDU#6-체크섬 고장', 'M3', 'C', 'FDU-체크섬 고장', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT5의 Bit7 "Checksum Fault” 신호가 "1"이 되면 검지.', 'Checksum Fault 현시 및 FDU의 정상 동작 불가능', '수신기 펌웨어의 오류로 인한 체크섬 이상(MCU 내부 플래쉬 메모리에 저장된 체크섬과 프로그램의 체크섬 계산값이 다를경우)', 'FDU가 부팅될때 MCU 내부 플래쉬 메모리에 저장된 체크섬과 프로그램의 체크섬 계산값이 같을 경우', '1) FDU의 전원을 리셋하여 소거여부 확인 +2) 문제가 지속될 경우, 수신기 교체', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('16959c90-0ddf-4568-b0ab-552c6c396545', '0520', '520', 'DCU#5 4위(L2)-이중계 절체 동작', 'T2', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 "Module switchover' 신호가 "1"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.392739+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1697ce05-5fda-4974-9995-3b7059c83272', '0500', '500', 'DCU#5 3위(R2) 통신고장', 'T2', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS간 RS485 통신고장이 검지되면 발생.', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐 상태 등의 변화가 없음.', '1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우', '해당차량의 DCU 및 CU/TU 의 전원이 정상상태이고, 통신라인 연결상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜저 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는데도 지속적으로 통순고장이 검지되면, DCU의 X2,X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('169e403f-f56d-4a79-a803-e60081071241', '0508', '508', 'DCU#2 4위(L2) - 출입문 모터/인코더 고장', 'M1', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 “Motor / Encoder failure” 신호가 “1”이 되면 +검지 +', '출입문 정상동작 불가', ' +1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우(인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터/인코더 회로 가 손상된 경우 +', '모터/인코더 및 DCU가 정상 상태이고, 전기적 연결 상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있는지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. ※ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. ? DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. ? DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) ? DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('16a3edd1-c346-4e49-8738-e00c2b4e4506', '0109', '109', 'VVVF-IPM 이상검지(GDF) (Car3)', 'M2', 'C', 'VVVF-IPM 이상검지(GDF)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT31의 Bit4 “GDF” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 'IPM 이상검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치 내부 IPM에 과전류, 과온이 검지될경우.', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반배전반의 VVVFIC nfb 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 견인전동기로 출력되는 3상의 전류치 확인함. +3) 특정상의 전류치가 비정상적일 경우 특정상에 해당되는 IPM, 전류센서, 모터결선을 확인한다. +4) 전류센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작상태를 시험기를 통해 확인한다. +6) IPM 전원공급기의 전원연결상태 또는 광케이블의 연결상태와 배선상태를 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.656536+00', null, '다대48량(2015)', 'Rotem'), ('16bc8064-0cf7-4b42-8def-c704f39afb50', '1207', '1207', 'FDU#2 - 감지기4 화재감지', 'M1', 'W', 'FDU-감지기4 화재감지 (Car1~8)', 'W', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 “Detector1 State” 신호가 “11”이 되면 검지 +', '화재상태현시(자동소거 안 됨.)', '하기 2가지 조건을 모두 만족하여야 화재신호가 출력 됨. (연동모드 동작) +1) 이웃한(앞 혹은 뒤에 위치한) 감지기 중 하나의 감지기라도 주의 혹은 화재상태에 있어야 함. +2) Detector1(해당 감지기)에서 측정된 연기농도가 15% 이상이거나 온도가 65℃ 이상인 경우 +', '1) FDU의 복귀버튼 조작 시 +2) FDU 전원 리셋 시', '1) 해당 감지기 위치의 화재 발생 여부 확인 +2) 화재 오감지일 경우 FDU의 복귀버튼 취급 +3) 오감지일 경우 감지기의 청소주기 확인(내부 먼지 제거)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('16db3be7-d61b-40ec-a6b1-90da6bf2a2d6', '0183', '183', 'VVVF#2-Over Load(OL)', 'M1', 'C', 'VVVF-Over Load(OL)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT35의 Bit2 “OL” 신호가 "1"이 되면 검지.', null, '차량의 구속상태에서 역행을 5초 이상 계속한 경우', '노치 OFF', '1) 상기고장이 간헐적으로 발생하는 경우 아래와 같이 조치한다. +2) 출발 시 보안제동의 투입 해제를 확인한다. +3) 고임목 등의 장애물이 차량을 구속하고 있는경우 제거한다. +4) 견인 전동기의 주 회로 오배선 여부 및 결선상태를 확인한다. +5) 추진제어장치 시험기를 이용하여 TCU(통합 제어장치)의 이상여부를 확인한다. +6) PWS보드 또는 통합제어기 교체. +7) 상기의 점검부분에 이상이 있을경우 관련부품을 교체한다.', null, '3', '2025-10-12 01:21:37.578803+00', null, '로템40량(2018)-1단계', 'Rotem'), ('16e0c45c-b99e-422e-a15f-355bc02214e9', '0729', '729', 'HVAC#2 - 냉난방장치2 리턴 센서 고장', 'M1', 'C', 'HVAC-냉난방장치2 리턴 센서 고장', 'C', 'HVAC', '냉난방장치2의 리턴 센서 고장 발생 +', '냉난방장치2 리턴 센서 고장현시', '온도센서 검지범위는 -45 ~ 85도(820 ~ 1,330Ω)인데, 2초 이상 검지범위를 벗어나는 경우 +', '온도센서 검지값이 2초 이상 허용온도 범위 내일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820 ~ 1,330Ω을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('16f70d4d-134f-4542-8466-eab5e3ec2411', '1504', '1504', '냉방장치용 AC 회로차단기 차단(Car3)', 'M2', 'W', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('17093d63-e89a-4e87-8cd2-a8e1dee36905', '1707', '1707', '노선안내표시기#5 고장(Car1)', 'Tc1', 'C', '노선안내표시기#5 고장', 'C', 'PIC', 'PIC 장치의 노선안내표시기#5이 고장이 났을 때 발생 +', '1) 노선안내표시기 화면 미현시 +2) 노선안내표시기 안내 화면 오현시', '통신고장 +', '통신 재개 시', '1) 이더넷 스위치 링크 확인 +2) 이더넷 케이블 점검 +3) 제어보드 및 전원보드 교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('170ba99a-c012-48fe-94d3-1e3ccdeeab5b', '0710', '710', 'HVAC#6 - 냉난방장치2 압력스위치2(DPS) 고압', 'M3', 'D', 'HVAC-냉난방장치2 압력스위치2(DPS) 고압', 'D', 'HVAC', '냉난방장치2 냉매 압력스위치2 고압 발생 +', 'UNIT2CYCLE2 냉방기능불가', 'UNIT2DSP2측 냉매압력이 3초 이상 28±1(kgf/cm2) 이상 되는 경우 +', '냉매압력이 정상수치 15±0.7(kgf/cm2) 이하로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CRCM4의 부하측 전류를 측정하여 응축기 팬의 동작여부를 확인한다. +2) 응축기 코일의 전면에 이물질로 인한 막힘이 있는지 확인한다. +3) 응축기 팬 상부 그릴에 외부 이물질로 인한 막힘이 있는지 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('1710e0d0-90a4-4a6f-92d3-a3a46afd4c88', '0518', '518', 'DCU#1 2위(L1)-출입문 Enable 신호 에러', 'Tc1', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 "Enable signal error” 신호가 "1"이 되면 검지.', 'DCU 출입문 Enable 신호 에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) 취급시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함.', '해당출입문 enable 신호 수신', '1) AUTO/MCS 모드시에는 YARD모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인한다. (YARD/FMC 모드시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('171ea1eb-a837-46f2-95d4-9598d3a76c82', '0515', '515', 'DCU#4 2위(L1) - 출입문 열림 시간 초과', 'T1', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 “Open time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 열림 동작시간이 6초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도한 후, ‘장애물로 인한 열림 실패' 고장과 함께 ‘Open time out' 고장이 함께 현시 +', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('172975d7-9c81-4844-ba0c-063291f53509', '0211', '211', 'BECU#4 - 2축 속도신호의 비정상', 'T1', 'C', 'BECU-2축속도신호의 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit2 “2축속도신호의 비정상” 신호가 “1”이 +되면 검지 +', '해당 차량 2축속도신호의 비정상 검지 현시 및 해당 차량 활주제어불가', '해당 차량의 2축속도센서 고장 발생 +', '해당 차량의 2축속도센서가 정상적일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('17302fdb-1921-4eae-9661-a9a45e9934d3', '0830', '830', '실내카메라#2(SCAM) 고장(Car#3)', 'M2', 'C', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1731529f-ebbe-48dd-b5ab-1d08d170c82a', '0503', '503', 'DCU#1 4위(L2) - 출입문 내부 비상핸들 취급(EED)', 'Tc1', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('1745b397-4295-4c18-8cde-8d9fec5fa022', '0913', '913', 'TRAIN RADIO#8 - TCI(열차통신장치) 고장', 'Tc2', 'C', 'TRAIN RADIO-TCI(열차통신장치) 고장', 'C', 'TRS', 'Train Radio의 E-NET 데이터 중 Train Radio-TCMS SD TEXT15의 Bit1 “TCI 고장” 신호가 “1”이 되면 +검지 +', '객실방송, 비상인터폰 기능 불능', 'HW 고장 +', '제어기 리셋', null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('174b6bb1-66ac-47bf-a6ee-e689c56a5f7d', '0508', '508', 'DCU#7 3위(R2)-출입문 모터/인코더 고장', 'M4', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 "Motor / Encoder failure” 신호가 "1"이 되면 검지.', '출입문 정상동작 불가', '1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우 (인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터 / 인코더 회로가 손상된 경우', '모터/인코더 및 DCU가 정상상태이고, 전기적 연결상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있느지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. +★ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. + +1. DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. +2. DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) +3. DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('175a5d95-84b3-4a8e-91a4-1bd6e0a1a0ef', '0511', '511', 'DCU#8 2위(L1) - 출입문 닫힘 리미트 스위치2 고장', 'Tc2', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 “DCS2 Failure(Right)” 신호가 “1”이 되면 검지 +', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('176bde8f-eb80-4e37-93a0-3240713af690', '1705', '1705', '노선안내표시기#5 고장(Car3)', 'M2', 'C', '노선안내표시기#3 고장', 'C', 'PIC', 'PIC 장치의 노선안내표시기#3이 고장이 났을 때 발생 +', '1) 노선안내표시기 화면 미현시 +2) 노선안내표시기 안내 화면 오현시', '통신고장 +', '통신 재개 시', '1) 이더넷 스위치 링크 확인 +2) 이더넷 케이블 점검 +3) 제어보드 및 전원보드 교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('17714716-f6d5-4182-9eae-cf46943ab718', '0402', '402', 'SIV#1-배터리 충전기 출력 과전류(BCOC)', 'Tc1', 'C', 'SIV-배터리 충전기 출력 과전류(BCOC)', 'C', 'SIV', '보조전원장치(SIV)의 RS485 데이터 중 SIV-TCMS SD TEXT4의 Bit0 “BCOC” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 '배터리 충전기 출력과전류 검지' 표시됨. +2) 보조전원장치(SIV)는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 보조전원장치 중고장이 발생됨. +5) 중고장이 발생되면 TCMS 일반화면에 보조전원장치 상태 붉을색으로 표기되며, 연장급전 됨.', '보조전원장치(SIV)의 배터리 충전부에서 출력되는 DC전류가 300A 이상일 경우 검지됨.', '1) 경고장이 발생할 경우 보조전원장치(SIV) 자동 재기동에 의해 재기동 됨. +2) 중고장이 발생했을 경우 조치 완료 후 보조전원장치(SIV) 리셋으로 고장 소거됨.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 보조전원장치(SIV) 고장기록을 수집하여 배터리 충전부에서 출력되는 DC 전류치 확인함. +3) 전류치가 비정상적일 경우 전류센서, DC 출력단 결선을 확인한다. +4) 전류센서와 보조전원장치(SIV) 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작상태를 시험기를 통해 확인한다. +6) 출력단의 절연상태 및 접지간의 절연상태를 확인한다. +7) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1774280e-3b06-4576-8ecb-a8940fbf0019', '0116', '116', 'VVVF-Stack 과온검지1(OTD1) (Car7)', 'M4', 'C', 'VVVF-Stack 과온검지1(OTD1)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT32의 Bit3 “OTD1” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 '스택과온검지1' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동이 되지 않으며 중고장으로 처리됨. +3) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치 냉각기의 온도가 105도 이상인 조건에서 검지.', '1) 추진제어장치 리셋으로 고장 소거됨.', '1) 상기고장이 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 냉각기의 손상이 없는지 확인한다. +3) 추진제어장치 내부에 IPM에 손상이 없는지 확인한다. +4) 인버터 유닛 내부에 온도센서 및 결선에 이상이 없느지 확인한다. +5) DIN 보드의 동작상태를 시험기를 통해 확인한다. +6) IPM 전원공급기의 전원연결상태 또는 광케이블의 연결상태와 배선상태를 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.71571+00', null, '다대48량(2015)', 'Rotem'), ('177aa4a5-2db5-426d-8531-ed9820e88102', '0713', '713', 'HVAC#6 - 냉난방장치1 압력스위치2(DPS) 저압', 'M3', 'D', 'HVAC-냉난방장치1 압력스위치2(DPS) 저압', 'D', 'HVAC', '냉난방장치1 냉매 압력스위치2 저압 발생 +', 'UNIT1CYCLE2 냉방기능불가', 'UNIT1DSP2측 냉매압력이 3초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우 +', '냉매압력이 정상수치 2±0.5(kgf/cm2) 이상으로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CREF2의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)를 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설 여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안 되는 것을 확인한 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('178d4b6a-ee6b-4de7-9cf4-edd85be50a65', '0808', '808', 'CCTV 모니터(CTM) 고장(Car#1)', 'Tc1', 'C', '통합방송표시기-CCTV 모니터(CTM) 고장', 'C', 'TCMS', '통합방송표시기의 RS485 데이터 중 통합방송표시기-TCMS SD TEXT8의 Bit6 “CTM 고장” 신호가 "1"이 되면 검지.', '고장장치 통신 불량으로 CCTV현시 기능. 화재, 비상인터폰 발생시 전체화면 현시 기능 불능', '마스터 통합방송제어기에 주기적(2초) TCP 응답이 없을 경우 통신 불량으로 판단', '마스터 통합방송제어기에 TCP 응답 재개', '관련 CB(대열차공간화상장치, CBCCTV) 리셋하고 통신라인 및 상태 점검. +관련도면 RES40001HN0, REC70720HN0', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('17980f87-223b-469d-8a4e-6a13336941dd', '0909', '909', '비상인터폰 동작(Car#8 - 2)', 'Tc2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('17d4e7e7-9697-4cbe-9370-802e2cf3afd7', '0413', '413', 'SIV#8 - 게이트 드라이버 고장, UX2상(GDFUX2)', 'Tc2', 'C', 'SIV-게이트 드라이버 고장, UX2상(GDFUX2)', 'C', 'SIV', '보조전원장치(SIV)의 RS485 데이터 중 SIV-TCMS SD TEXT5의 Bit3 “GDFUX2” 신호가 “1”이 되면 +검지 +', '1) TCMS 화면하단 또는 고장화면에 ‘GDFUX2상 이상 검지' 표시됨. +2) 보조전원장치(SIV)는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 보조전원장치(SIV) 중고장이 발생됨. +5) 중고장이 발생되면 TCMS 일반화면에 보조전원장치(SIV) 상태 붉은색으로 표기되며, 연장급점 됨.', '보조전원장치(SIV) 내부 GDU에 과전류, 과온이 검지될 경우 +', '1) 경고장이 발생할 경우 보조전원장치(SIV) 자동 재기동에 의해 재기동 됨. +2) 중고장이 발생할 경우 보조전원장치(SIV) 리셋으로 고장 소거됨.', '1) 상기 고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 보조전원장치(SIV) 고장기록을 수집하여 출력되는 3상의 AC 전류치를 확인함. +3) 특정상의 전류치가 비정상적일 경우 특정상에 해당되는 GDU, 전류센서, 출력단 결선을 확인 한다. +4) 전류센서와 보조전원장치(SIV) 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작 상태를 시험기를 통해 확인한다. +6) GDU 전원공급기의 전원연결 상태 또는 광케이블의 연결 상태와 배선상태를 확인한다. +7) 출력단 각상의 절연상태 및 각상과 접지 간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('17d91b5e-46d8-48c0-be00-f4d640c4a914', '0179', '179', 'VVVF#6-LB2 투입불량(LB2NC)', 'M3', 'C', 'VVVF-LB2 투입불량(LB2NC)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT34의 Bit4 “LB2NC” 신호가 "1"이 되면 검지.', null, 'LB2 투입이 되지 않을 때 고장검지.', '동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) 판토하강상태에서 테스트모드로 전환하여 시퀀스를 투입하고 LB2의 주접점 동작을 확인한다. +2) 주회로 차단기함 내에 LB2의 보조접점의 동작상태를 확인한다. +3) 추진제어장치 계전기 유니트에 LB2R 계전기 상태를 확인하여 계전기의 동작 여부를 확인한다. +4) 추진제어장치 시험기를 이용하여 제어기 시험을 실시하여 이상여부를 확인한다.', null, '3', '2025-10-12 01:21:37.578803+00', null, '로템40량(2018)-1단계', 'Rotem'), ('17dfd990-0aa7-4b37-9b69-3820e3b3fa68', '0503', '503', 'DCU#1 4위(L2)-출입문 내부비상핸들 취급(EED)', 'Tc1', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('17fa835f-cc4f-4589-9ecd-c77461e4df93', '0508', '508', 'DCU#4 2위(L1) - 출입문 모터/인코더 고장', 'T1', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 “Motor / Encoder failure” 신호가 “1”이 되면 +검지 +', '출입문 정상동작 불가', ' +1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우(인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터/인코더 회로 가 손상된 경우 +', '모터/인코더 및 DCU가 정상 상태이고, 전기적 연결 상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있는지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. ※ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. ? DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. ? DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) ? DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('17fd7421-02ee-41b0-be8b-cd3b82aa55c6', '1601', '1601', '미세먼지감지센서 모듈#3 - 센서 고장', 'M2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('17fef3f9-ba6b-4ad4-b006-c766f4a8018b', '0505', '505', 'DCU#8 3위(R2)-출입문 입력 고전압', 'Tc2', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 "1"이 되면 검지.', '고전압 상태. (그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('17ffcc49-d65a-4fe9-8d93-394a8e6fa9cc', '1517', '1517', 'CU2 모듈고장 - AUX2(Car8)', 'Tc2', 'C', 'CU1, 2 모듈고장 - AUX2', 'C', 'TCMS', 'CU의 AUX2 PCB가 이 정상적으로 인식되지 않아 점검이 필요할 때 +', '1) CU1의 AUX2 PCB가 모듈 고장이 발생하면, CU2로 자동 절체됨. (CU2로 자동 절체되면 운행 에는 지장이 없음.) +2) CU2 자동 절체 시 화면의 우측 상단 경고장글자 하단에 “B.SYS” 라는 표시가 나타남. +3) 자동절체 시 열차 운행에는 관계없음. +4) CU2의 AUX2 모듈고장 시는 CU1 정상동작시 운행에는 지장이 없음.', 'CU AUX2의 ID를 정상적으로 검출하지 못할 때 화면에 현시 +', 'CU AUX2의 ID를 정상적으로 검출하는 경우 소거됨.', '1) CU의 AUX2 PCB 교체 +2) 불량 해소가 되지 않을 경우, 순차적으로 MCPU, SCM, DIM PCB를 교체하여 정상여부 확인', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('18119e8a-9f8c-46e1-b19e-4c0ccd44f290', '1409', '1409', 'BMS#8-방전과전류(OCD, 방전220A이상)', 'Tc2', 'D', 'BMS-방전과전류(OCD)', 'D', 'BMS', '해당차량의 방전 전류가 180A이상이 되면 검지', '차량 배터리 방전과전류 검지 후, 220A 이상이면 방전 접촉기(DCK)가 차단된다.', '배터리 방전과전류 (180A 이상).', '배터리 방전 전류 정상범위로 회복 (0~150A)', '1) 배터리 NFB 상태 확인 +2) 이상이 없으면 차량 전체를 리셋한다. +3) 차량 리셋 후에도 동일고장이면 사령실과 연락하여 조치를 취한다 (외부 충전기 연결 또는 차량 지원)', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('18165baf-7923-4a8f-afbf-00416c5b3651', '0211', '211', 'BECU#2-2축속도신호의 비정상', 'M1', 'C', 'BECU-2축속도신호의 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit2 “2축속도신호의 비정상” 신호가 "1"이 되면 검지.', '해당 차량 2축속도신호의 비정상 검지 현시 및 해당 차량 활주제어 불가.', '해당 차량의 2축 속도센서 고장 발생.', '해당 차량의 2축 속도센서가 정상적일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('18166f6b-3714-4274-99ce-e04162386e4c', '0152', '152', 'VVVF#2 - 제동패턴 이상검지(BPD)', 'M1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('181a23b4-c563-4c84-ab97-4a1eee399c2f', '0504', '504', 'DCU#8 5위(R3)-출입문 외부비상핸들 취급(EAD)', 'Tc2', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('184e52f7-1d19-40bc-b360-3a68af435b96', '0520', '520', 'DCU#5 1위(R1)-이중계 절체 동작', 'T2', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 "Module switchover' 신호가 "1"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.392739+00', null, '로템40량(2018)-1단계', 'Rotem'), ('185018e3-c8a0-4bf0-8bc7-ff3a346d16d4', '0511', '511', 'DCU#6 1위(R1) - 출입문 닫힘 리미트 스위치2 고장', 'M3', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 “DCS2 Failure(Right)” 신호가 “1”이 되면 검지 +', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('18714ac6-e1ee-4990-961c-147b70f10203', '0517', '517', 'DCU#3 2위(L1) - 출입문 장애물로 인한 열림 실패', 'M2', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Open failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘 상태로 대기', '도어열림 중 3회 장애물감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 열림 시, 장애물감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('18727fd8-05b2-41dd-9c91-8f6fc45f0a8e', '0512', '512', 'DCU#5 2위(L1)-파라미터 로딩 실패', 'T2', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 "Paraneter error” 신호가 "1"이 되면 검지.', 'Parameter error 현시 (출입문은 정상작동 가능)', 'DCU 자체내의 EEPROM으로부터 parameter 데이터 로딩 실패', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1882f925-6fd5-49f7-abd7-aaffc9c10782', '0223', '223', 'BECU#2 - 공기스프링 누설(전두대차)', 'M1', 'C', 'BECU-공기스프링누설(전두대차)', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit6 “공기스프링누설(전두대차)” 신호가 “1”이 +되면 검지 +', '해당 차량 공기스프링 누설(전두대차) 검지 현시 및 해당 차량 정상적인제동제어 불가 (응하중제어)', '해당 차량 전두대차의 공기스프링(AS1, AS2) 압력이 정상범위를 벗어남. (100kPa 미만) +', '해당 차량 전두대차의 공기스프링(AS1, AS2) 압력이 정상범위일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('18854a5d-6bcb-4e22-889d-765ed1497245', '0513', '513', 'DCU#1 4위(L2)-모듈 상태체크 에러', 'Tc1', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 "Module check error” 신호가 "1"이 되면 검지.', 'Module check error 현시 (출입문은 정상작동 가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태체크 기능에 이상이 생긴 경우 고장 발생.', 'DCU의 'A'모듈과 'B'모듈 간, 상태체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('188650b7-38df-41c6-ba0d-26a40a957541', '0411', '411', 'SIV#8-게이트 드라이버 고장, WZ2상(GDFWZ2)', 'Tc2', 'C', 'SIV-게이트 드라이버 고장, WZ2상(GDFWZ2)', 'C', 'SIV', '보조전원장치(SIV)의 RS485 데이터 중 SIV-TCMS SD TEXT5의 Bit1 “GDFWZ2” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 'GDF WZ 2상 이상검지' 표시됨. +2) 보조전원장치(SIV)는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 보조전원장치(SIV) 중고장이 발생됨. +5) 중고장이 발생되면 TCMS 일반화면에 보조전원장치(SIV) 상태 붉을색으로 표기되며, 연장급점 됨.', '보조전원장치(SIV) 내부 GDU에 과전류, 과온이 검지될경우.', '1) 경고장이 발생할 경우 보조전원장치(SIV) 자동 재기동에 의해 재기동 됨. +2) 중고장이 발생할 경우 보조전원장치(SIV) 리셋으로 고장 소거됨.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 보조전원장치(SIV) 고장기록을 수집하여 출력되는 3상의 AC 전류치를 확인함. +3) 특정상의 전류치가 비정상적일 경우 특정상에 해당되는 GDU, 전류센서, 출력단 결선을 확인한다. +4) 전류센서와 보조전원장치(SIV) 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작상태를 시험기를 통해 확인한다. +6) GDU 전원공급기의 전원연결상태 또는 광케이블의 연결상태와 배선상태를 확인한다. +7) 출력단 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('18895022-8604-4f0a-9361-a8f3446759c6', '0502', '502', 'DCU#7 2위(L1) - 출입문 장애물검지', 'M4', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('189ba1fe-a221-41ef-a9d5-718953fa6ef0', '0849', '849', '실내카메라#3(SCAM) 고장(Car#5)', 'T2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('18b586e8-58cd-49d9-a8c4-0c656cc5256a', '0139', '139', 'VVVF#7-INV ARM 단락(CFD)', 'M4', 'C', 'VVVF-INV ARM 단락(CFD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT29의 Bit4 “CFD” 신호가 "1"이 되면 검지.', null, '게이트신호와 피드백신호 불일치 발생 시 고장검지.', '동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) 육안으로 IGBT의 상태를 확인하여 외관에 손상이 있는지 확인한다. +2) FC 양 옆의 PWM 제어기판의 고정상태 확인. +3) IGBT의 Collector와 Emitter 양단을 멀티미터를 이용하여 단락 여부 및 다이오드 상태를 확인한다. +4) PWM 보드의 후면 커넥터 핀 상태 확인. +5) 추진제어장치 시험기를 이용하여 PWM 보드의 이상여부를 확인한다. +6) 게이트 드라이버 외관 및 커넥터 핀 상태 확인. +7) 상기의 점검부분에 이상이 있을 경우 관련부품을 교체한다. +8) 동일 고장 재발 시 INV 스택을 교체한다.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('18cb4627-cca9-4a8e-a589-0821da5cacd1', '1412', '1412', 'BMS#8-방전저온(DUT, -20도이하)', 'Tc2', 'D', 'BMS-방전저온(DUT)', 'D', 'BMS', '해당차량의 배터리 온도가 -25도이하가 되면 검지', '차량 배터리 방전저온 검지 후, -35도이하이면 충전 접촉기(CK)가 차단된다.', '배터리 방전저온 (-20도 이상).', '배터리 방전저온 정상범위로 회복 (-20도 이상)', '1) 배터리 NFB 상태 확인 +2) 이상이 없으면 차량 전체를 리셋한다. +3) 차량 리셋 후에도 동일고장이면 사령실과 연락하여 조치를 취한다 (배터리를 상온조건으로 만든다.)', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('18db198a-a42d-4e60-a412-cf9cbe71269a', '0513', '513', 'DCU#6 6위(L3) - 모듈 상태체크 에러', 'M3', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 “Module check error” 신호가 “1”이 되면 검지 +', 'Modulecheckerror현시(출입문은 정상작동가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태 체크 기능에 이상이 생긴 경우 고장 발생 +', 'DCU의 ‘A' 모듈과 ‘B' 모듈 간, 상태 체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('18f40893-317b-4c7f-b37d-50311e178ba8', '1202', '1202', 'FDU#6 - 감지기1 고장', 'M3', 'C', 'FDU-감지기1 고장 (Car1~8)', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 “Detector1 State” 신호가 “10”이 되면 검지 +', '감지기고장상태현시(자동소거 안 됨)', ' +1) 감지기로부터 데이터 응답이 없는 경우 +2) 감지기로부터 수신된 데이터의 CRC가 맞지 않는 경우 +3) 감지기로부터 수신된 데이터의 ID가 송신 ID와 일치하지 않는 경우 +', 'FDU 전원 리셋 후 감지기로부터 정상적으로 데이터가 수신된 경우', '1) FDU 전원 리셋 후 고장 소거 여부 확인 +2) 정상동작중인 감지기와 위치 교환 후 FDU 전원 리셋 및 고장 상태 확인 +3) 동일한 감지기에서 고장 발생 시 감지기 교체 +4) 동일한 위치에서 고장 발생 시 감지기 라인 점검', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('18fa70eb-bc74-4ff0-b52a-a71f3f3b4982', '0516', '516', 'DCU#7 2위(L1) - 출입문 장애물로 인한 닫힘 실패', 'M4', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Close failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림 상태로 대기', '도어 닫힘 중 3회 장애물감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('18fd5d93-a745-4523-a33b-9decb43b135b', '0723', '723', 'HVAC#2-냉난방장치1 압력스위치2(DPS) 냉매부족', 'M1', 'C', 'HVAC-냉난방장치1 압력스위치2(DPS) 냉매부족', 'C', 'HVAC', '냉난방장치1 냉매 압력스위치2 저압 발생.', 'UNIT1 CYCLE2 냉방 기능 불가', 'UNIT1 DSP2측 냉매 압력이 30초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우', '냉매 압력이 정상 수치 2±0.5(kgf/cm2 이상 유지하도록 하고, 마이콤 전원을 리셋', '1) 배전반 점검 커버를 열고 마이콤 전원을 리셋한 후, 냉방 가동 시, CREF2의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)을 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안되는 것을 확인한 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1908a5f8-35d6-4f6a-a87e-1c76714854c4', '0500', '500', 'DCU#7 1위(R1) 통신고장', 'M4', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS간 RS485 통신고장이 검지되면 발생.', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐 상태 등의 변화가 없음.', '1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우', '해당차량의 DCU 및 CU/TU 의 전원이 정상상태이고, 통신라인 연결상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜저 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는데도 지속적으로 통순고장이 검지되면, DCU의 X2,X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('190eadc9-1125-4234-9e7e-e847c79c749b', '0213', '213', 'BECU#5 - AC 압력센서 고장', 'T2', 'C', 'BECU-AC 압력센서 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit4 “AC 압력센서 고장” 신호가 “1”이 되면 검지 +', '해당 차량 공기제동장치고장, AC 압력센서 고장검지 현시 및 해당 차량 제동제어불가', '해당 차량의 AC 압력센서 고장 +', '해당 차량의 AC 압력센서가 정상일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('190fdc5e-234e-462e-be87-c9a90ff06fbd', '0508', '508', 'DCU#2 2위(L1)-출입문 모터/인코더 고장', 'M1', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 "Motor / Encoder failure” 신호가 "1"이 되면 검지.', '출입문 정상동작 불가', '1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우 (인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터 / 인코더 회로가 손상된 경우', '모터/인코더 및 DCU가 정상상태이고, 전기적 연결상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있느지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. +★ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. + +1. DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. +2. DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) +3. DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1913dad7-73d7-47f1-973d-1a6228bd6294', '0719', '719', 'HVAC#4-실내온도 센서2 고장', 'T1', 'C', 'HVAC-실내온도 센서2 고장', 'C', 'HVAC', '객실 실내온도 센서2 고장 발생', '실내온도 센서2 고장현시', '온도센서 검지범위는 -45~85도 (820~1330옴) 인데, 2초 이상 검지범위를 벗어나는 경우', '온도센서 검지 값이 2초 이상 허용온도 범위 내 일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820~1330옴 을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우, 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('192693a7-47a6-45cd-a020-4a1267bcd117', '0133', '133', 'VVVF-IPM U상 이상검지(GDFU) (Car7)', 'M4', 'C', 'VVVF-IPM U상 이상검지(GDFU)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT34의 Bit7 “GDFU” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 'IPM U상 이상검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치 내부 IPM에 과전류, 과온이 검지될경우.', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반배전반의 VVVFIC nfb 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 견인전동기로 출력되는 3상의 전류치 확인함. +3) 특정상의 전류치가 비정상적일 경우 특정상에 해당되는 IPM, 전류센서, 모터결선을 확인한다. +4) 전류센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작상태를 시험기를 통해 확인한다. +6) IPM 전원공급기의 전원연결상태 또는 광케이블의 연결상태와 배선상태를 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.71571+00', null, '다대48량(2015)', 'Rotem'), ('192f21b6-457d-43b0-b2a4-1ec99368f0fa', '0712', '712', 'HVAC#4 - 냉난방장치2 압력스위치1(DPS) 고압', 'T1', 'D', 'HVAC-냉난방장치2 압력스위치1(DPS) 고압', 'D', 'HVAC', '냉난방장치2 냉매 압력스위치1 고압 발생 +', 'UNIT2CYCLE1 냉방기능불가', 'UNIT2DSP1측 냉매압력이 3초 이상 28±1(kgf/cm2) 이상 되는 경우 +', '냉매압력이 정상수치 15±0.7(kgf/cm2) 이하로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CRCM3의 부하측 전류를 측정하여 응축기 팬의 동작여부를 확인한다. +2) 응축기 코일의 전면에 이물질로 인한 막힘이 있는지 확인한다. +3) 응축기 팬 상부 그릴에 외부 이물질로 인한 막힘이 있는지 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('1936160b-1ce6-4276-97ae-465103798e10', '0503', '503', 'DCU#4 4위(L2) - 출입문 내부 비상핸들 취급(EED)', 'T1', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('194ffe1b-b104-46b4-9073-50b8e237997a', '0903', '903', '비상인터폰 동작(Car#5-2)', 'T2', 'W', null, null, 'RADIO', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1953e17d-0416-4855-8968-c67b242dfe07', '0703', '703', 'HVAC#5 - 냉난방장치1 압축기2 과부하', 'T2', 'C', 'HVAC-냉난방장치1 압축기2 과부하', 'C', 'HVAC', 'HVAC 냉방 작동 중 냉난방장치1 압축기2 또는 응축기2 모터에 과부하 발생 +', '냉방 기능 저하(전냉방 시 반냉방으로 작동)', ' +1) 냉방 작동 중 UNIT1의 압축기2 또는 응축기2 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRCM2와 연결된 THR2가 Trip 됨. +', 'UNIT1의 압축기2 또는 응축기2 모터의 과부하조건을 해소하여 정상 가능 상태로 만들고, THR2 및 마이콤 전원 리셋', '1) 냉난방 배전반의 점검커버를 열고, THR2의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR2의 전류 세팅값이 11.5A에 맞춰져 있는지 확인하여, 아닐 경우, (+) 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동시킨 후, THR2의 2차측 2, 4, 6 단자에서 각 단자 간 상간 전압이 AC 380V로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 압축기 및 응축기 단품 상태에서 점검을 한다. +7) THR2의 2차측 2, 4, 6 단자에서 각 단자 간 권선저항이 모두 같은지 확인한다. (±10% 이하) (압축기2 및 응축기2 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT1의 압축기1 또는 응축기1 모터의 결선을 해제한 후 각 부품의 권선저항을 확인 후, 문제가 있는 부품을 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR2 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('1971c87f-d34b-408b-81db-46c82b9bc891', '0509', '509', 'DCU#4 5위(R3)-출입문 잠김 리미트 스위치 고장', 'T1', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 "DLS Failure” 신호가 "1"이 되면 검지.', '출입문 잠김 상태 확인 불가', '1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1973bd12-bb91-4513-967f-d33008bbf709', '0231', '231', 'BC 코크(차상) 차단(Car6)', 'M3', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('197ca03c-319b-4212-9e96-6590883fa513', '1209', '1209', 'FDU#6-스위치 고장', 'M3', 'C', 'FDU-스위치 고장', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT5의 Bit4 “Switch Fault” 신호가 "1"이 되면 검지.', 'Switch Fault 현시 및 FDU의 조작 버튼 동작 안됨(화재 검지 및 기타 기능에는 상관없음)', '1) FDU가 부팅될때 스위치가 눌려진 상태(3.3V 전압이 인가된 상태)인 경우 +2) FDU가 부팅될때 스위치 고장으로 인하여 항상 눌러진 상태(3.3V 전압이 인가된 상태)에 있는 경우.', 'FDU가 부팅될때 스위치가 눌려진 상태(3.3V 전압이 인가된 상태)가 아닌 경우 +조치조건 : +1) 고장이 발생한 수신기의 스위치 상태 확인 및 점검 +2) FDU의 전원을 리셋하여 소거여부 확인 +3) 문제가 지속될 경우, 수신기 교체', null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('198d8beb-6e65-4edf-a26c-2cf396937afb', '1207', '1207', 'FDU#7 - 감지기4 화재감지', 'M4', 'W', 'FDU-감지기4 화재감지 (Car1~8)', 'W', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 “Detector1 State” 신호가 “11”이 되면 검지 +', '화재상태현시(자동소거 안 됨.)', '하기 2가지 조건을 모두 만족하여야 화재신호가 출력 됨. (연동모드 동작) +1) 이웃한(앞 혹은 뒤에 위치한) 감지기 중 하나의 감지기라도 주의 혹은 화재상태에 있어야 함. +2) Detector1(해당 감지기)에서 측정된 연기농도가 15% 이상이거나 온도가 65℃ 이상인 경우 +', '1) FDU의 복귀버튼 조작 시 +2) FDU 전원 리셋 시', '1) 해당 감지기 위치의 화재 발생 여부 확인 +2) 화재 오감지일 경우 FDU의 복귀버튼 취급 +3) 오감지일 경우 감지기의 청소주기 확인(내부 먼지 제거)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('199021ea-8739-4257-b36f-83884bd86977', '0511', '511', 'DCU#4 6위(L3)-출입문 닫힘 리미트 스위치2 고장', 'T1', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 "DCS2 Failure(Right)” 신호가 "1"이 되면 검지.', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('19cef723-e7a6-4b0d-adb1-9a18164e73d8', '0520', '520', 'DCU#6 4위(L2) - 이중계 절체 동작', 'M3', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 “Module switchover” 신호가 “1”이 되면 검지 +', '이중계 절체 동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러) 이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A'모듈 및 ‘B'모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('19cf3e23-c5fa-4aaf-be98-02e2e48600b1', '0825', '825', '비상인터폰#1(PEI) 고장(Car#2)', 'M1', 'C', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('19d0d739-01d6-4938-839e-427aa7b1f935', '1210', '1210', 'FDU#3-메모리 고장', 'M2', 'C', 'FDU-메모리 고장', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT5의 Bit6 “Memory Fault” 신호가 "1"이 되면 검지.', '1) Memory Fault 현시 +2) FDU의 이벤트 기록 및 읽기 동작 안됨. +3) FDU 환경설정 정보 로딩 실패(차량번호, 주차시간, 절전시간등의 설정값을 기본값으로 로딩)', '메모리 연결 포트의 이상 혹은 배드섹터 발생(메모리 접근 및 읽기, 쓰기가 실패한 경우)', '메모리의 접근 및 읽기, 쓰기 성공', '1) FDU의 전원을 리셋하여 소거여부 확인 +2) 문제가 지속될 경우, 수신기 교체', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('19e406a3-2310-48c9-8f8c-a68da4479a49', '1408', '1408', 'BMS#8-충전과전류(OCC, 충전150A이상)', 'Tc2', 'D', 'BMS-충전과전류(OCC)', 'D', 'BMS', '해당차량의 충전 전류가 105A이상이 되면 검지', '차량 배터리 충전과전류 검지 후, 110A 이상이면 충전 접촉기(CK)가 차단된다.', '배터리 충전과전류 (105A 이상).', '배터리 충전 전류 정상범위로 회복 (0~100A)', '1) 배터리 NFB 상태 확인 +2) 이상이 없으면 차량 전체를 리셋한다. +3) 차량 리셋 후에도 동일고장이면 사령실과 연락하여 조치를 취한다 (외부 방전기 연결 또는 차량 지원)', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('19e75f40-46b7-4c26-bc2c-47cf3b8b305f', '0506', '506', 'DCU#5 1위(R1)-출입문 입력 저전압', 'T2', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 "1"이 되면 검지.', '저전안 상태 (출입문 동작이 심하게 느려지거나 작동조차 안될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('19f35eb4-e7c3-437b-aa0c-678129b30097', '0508', '508', 'DCU#5 3위(R2)-출입문 모터/인코더 고장', 'T2', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 "Motor / Encoder failure” 신호가 "1"이 되면 검지.', '출입문 정상동작 불가', '1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우 (인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터 / 인코더 회로가 손상된 경우', '모터/인코더 및 DCU가 정상상태이고, 전기적 연결상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있느지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. +★ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. + +1. DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. +2. DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) +3. DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('19f7c58d-2b93-40e8-8306-f142e95500c7', '0750', '750', 'HVAC#7 - 냉난방장치2 보조히터 과열', 'M4', 'C', 'HVAC-냉난방장치2 보조히터 과열', 'C', 'HVAC', 'HVAC2 보조난방기 작동 중 과열 발생 +', 'UNIT2 보조난방기난방불가', '보조난방기 작동 중 1초 이상 동안 온도가 70도 이상으로 과온 센서 정상신호가 수신 되지 않는 경우 +', '1초 이상 동안 60도 미만으로 온도가 떨어져 과온 센서 정상신호가 수신되는 경우', '1) 보조난방기가 꺼진 상태에서도 문제 발생 시, 과온 센서를 교체한다. +2) 센서 교체 후에도 문제가 발생되면, 배선에 문제가 없는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('19f9d570-5d46-439f-bd04-037fac5c8260', '0501', '501', 'DCU#5 4위(L2) - 출입문 차단', 'T2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('1a0d0e08-bc24-4068-ac0e-42b12746f3e4', '1204', '1204', 'FDU#4-감지기2 고장', 'T1', 'C', 'FDU-감지기2 고장', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 "Detector1 State” 신호가 "10"이 되면 검지.', '감지기 고장상태 현시(자동 소거 안됨)', '1) 감지기로부터 데이터 응답이 없는경우. +2) 감지기로부터 수신된 데이터의 CRC가 맞지 않는경우 +3) 감지기로부터 수신된 데이터의 ID가 송신 ID와 일치하지 않는경우', 'FDU 전원 리셋 후 감지기로부터 정상적으로 데이터가 수신된 경우', '1) FDU 전원 리셋 후 고장 소거 여부 확인 +2) 정상 동작중인 감지기와 위치 교환 후 FDU 전원 리셋 및 고장 상태 확인 +3) 동일한 감지기에서 고장 발생시 감지기 교체 +4) 동일한 위치에서 고장 발생시 감지기 라인 점검', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1a135cbc-ed8d-4968-9a9b-7b6158bc89f3', '0214', '214', 'BECU#3-BC 압력센서고장', 'M2', 'C', 'BECU-BC 압력센서 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit5 “BC 압력센서 고장” 신호가 "1"이 되면 검지.', '해당 차량 BC압력센서 고장 검지 현시 및 해당차량 제동력 부족, 제동불완해 검지 불가.', '해당 차량의 BC압력센서 고장.', '해당 차량의 BC압력센서가 정상일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1a2b9c25-dd83-4c22-898d-3122bc7be0ee', '0743', '743', 'HVAC#7-전자접촉기 보조히터2(AHEK) 고장', 'M4', 'C', 'HVAC-전자접촉기 보조히터2(AHEK) 고장', 'C', 'HVAC', 'HVAC 보조난방기 작동 중 AHEK2 전자접촉기 고장 발생.', 'UNIT1 보조난방기 전난방 시 반난방만 작동', '보조난방기 작동 중 2.5초 이상동안 AHEK2 작동 feedback 신호가 수신되지 않는 경우', 'AHEK2 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) AHEK2를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, AHEK2와 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1a3340b3-c235-478d-b4ee-7b0861f34faf', '0516', '516', 'DCU#4 6위(L3)-출입문 장애물로 인한 닫힘 실패', 'T1', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Close failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림상태로 대기', '도어 닫힘 중 3회 장애물 감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1a5e78f1-23f6-4c48-9da5-f5cf7716940f', '0516', '516', 'DCU#6 6위(L3) - 출입문 장애물로 인한 닫힘 실패', 'M3', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Close failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림 상태로 대기', '도어 닫힘 중 3회 장애물감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('1a656cff-15cd-4a06-806a-850a9f02487d', '0520', '520', 'DCU#1 6위(L3) - 이중계 절체 동작', 'Tc1', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 “Module switchover” 신호가 “1”이 되면 검지 +', '이중계 절체 동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러) 이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A'모듈 및 ‘B'모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('1a66e7c1-2b11-49c0-b962-bb25831b2ada', '0519', '519', 'DCU#1 5위(R3)-ZVR 신호 에러', 'Tc1', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 "ZVR signal error” 신호가 "1"이 되면 검지.', '출입문이 강제로 닫히게 되고, 열림은 불가능', '1) 차량 ZVR 신호가 없는 상태 (차량 주행상태) 에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함.', '해당출입문 ZVR 신호 수신', '1) 차량이 주행중이라면, 차량이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.392739+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1a6e8a7d-0830-4026-a696-371f3835000a', '0709', '709', 'HVAC#1 - 냉난방장치2 압력스위치2(DPS) 저압', 'Tc1', 'D', 'HVAC-냉난방장치2 압력스위치2(DPS) 저압', 'D', 'HVAC', '냉난방장치2 냉매 압력스위치2 저압 발생 +', 'UNIT2CYCLE2 냉방기능불가', 'UNIT2DSP2측 냉매압력이 3초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우 +', '냉매압력이 정상수치 2±0.5(kgf/cm2) 이상으로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CREF4의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)를 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설 여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안 되는 것을 확인한 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('1a722169-4773-4533-9b19-a93f72133bcd', '0518', '518', 'DCU#8 6위(L3)-출입문 Enable 신호 에러', 'Tc2', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 "Enable signal error” 신호가 "1"이 되면 검지.', 'DCU 출입문 Enable 신호 에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) 취급시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함.', '해당출입문 enable 신호 수신', '1) AUTO/MCS 모드시에는 YARD모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인한다. (YARD/FMC 모드시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1a76a735-6af2-4f27-a1c4-7b9d354f2fd0', '0146', '146', 'VVVF#7-과온검지1(THDL)', 'M4', 'C', 'VVVF-과온검지1(THDL)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT30의 Bit3 “THDL” 신호가 "1"이 되면 검지.', null, '인버터 내부 온도가 100 °C이상 도달 시 고장발생.', '90 °C 이하 도달 및 제동 OFF.', '1) 상기고장이 간헐적으로 발생하는 경우 아래와 같이 조치한다. +2) 상온에서 TCU(통합제어기)에 RS232케이블을 이용하여 노트북(제공품)과 연결 후 모니터링 프로그램으로 인버터의 온도값을 확인한다. +3) 인버터 유니트의 온도센서 배선 및 커넥터 체결상태를 확인한다. +4) 추진제어장치의 냉각부에 손상이 없는지 확인한다. +5) 추진제어장치 시험기를 이용하여 TCU(통합제어장치)의 이상여부를 확인한다. +6) 상기의 점검부분에 이상이 있을 경우 관련부품을 교체한다. +7) 동일 고장이 지속적으로 발생 시 INV 스택을 교체한다.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1a87290e-ccb9-41e0-8196-80994a52ff25', '1501', '1501', '차상신호장치(ATC) 회로차단기 차단(Car6)', 'M3', 'W', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1a8f3b62-0bd8-4102-984e-7a16326e204e', '1210', '1210', 'FDU#1 - 메모리 고장', 'Tc1', 'C', 'FDU-메모리 고장', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT5의 Bit6 “Memory Fault” 신호가 “1”이 되면 검지 +', '1) Memory Fault 현시 +2) FDU의 이벤트 기록 및 읽기 동작 안 됨. +3) FDU 환경설정 정보 로딩 실패(차량 번호, 주차시간, 절전시간 등의 설정값을 기본값으로 로딩)', '메모리 연결 포트의 이상 혹은 배드섹터 발생(메모리 접근 및 읽기, 쓰기가 실패한 경우) +', '메모리의 접근 및 읽기, 쓰기 성공', '1) FDU의 전원을 리셋하여 소거여부 확인 +2) 문제가 지속될 경우, 수신기 교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('1ab455a9-4af6-491d-9f0b-f92fb3cd9cd0', '1403', '1403', 'BMS#1-배터리 저전압(BUV, 77V이하)', 'Tc1', 'W', 'BMS-배터리 저전압(BUV, 77V이하)', 'B', 'BMS', '해당차량의 배터리 전압이 77V이하가 되면 검지', '차량 배터리 저전압 검지.', '배터리 저전압(77V 이하).', '배터리 전압 회복', '1) 충전 전압 확인. +2) 배터리 NFB 상태 확인 +3) 이상이 없으면 차량 전체를 리셋한다. +4) 차량 리셋 후에도 동일고장이면 사령실과 연락하여 조치를 취한다. (외부 충전기 연결 또는 차량 지원)', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1ac9c0b9-c62f-490b-8ea5-de57e37858ae', '1201', '1201', 'FDU#8-감지기1 화재감지', 'Tc2', 'W', 'FDU-감지기1 화재감지', 'W', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 "Detector1 State” 신호가 "11"이 되면 검지.', '화재상태 현시(자동 소거 안됨)', '하기 2가지 조건을 모두 만족하여야 화재신호가 출력 됨(연동모드 동작). +1) 이웃한(앞 혹은 뒤에 위치한) 감지기 중 하나의 감지기라도 주의 혹은 화재상태에 있어야 함. +2) Detector1(해당 감지기)에서 측정된 연기농도가 15% 이상이거나 온도가 65℃ 이상인 경우', '1) FDU의 복귀버튼 조작시 +2) FDU 전원 리셋시', '1) 해당 감지기 위치의 화재 발생 여부 확인 +2) 화재 오 감지일경우 FDU의 복귀버튼 취급 +3) 오감지일경우 감지기의 청소주기 확인(내부 먼지 제거)', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1ad0748e-a58c-4dad-808b-ee051ed3bf2e', '0505', '505', 'DCU#2 6위(L3) - 출입문 입력 고전압', 'M1', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 “1”이 되면 검지 +', '고전압 상태(그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상 +', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('1aef2b2e-773f-4623-b2ef-e1ad16cdf1ee', '0410', '410', 'SIV#8 - 인버터1 과온검지(INV1THF)', 'Tc2', 'B', 'SIV-인버터1 과온검지(INV1THF)', 'B', 'SIV', '보조전원장치(SIV) 의 RS485 데이터 중 SIV-TCMS SD TEXT5의 Bit0 “INV1THF” 신호가 “1”이 되면 +검지 +', '1) TCMS 화면하단 또는 고장화면에 ‘SIV 인버터1의 스택 과온' 표시됨. +2) 보조전원장치는 상기 고장검지 후 자동 재기동이 되지 않으며 중고장으로 처리함. +3) 중고장이 발생되면 TCMS 일반화면에 보조전원장치 상태 붉은색으로 표기되며, 연장급전 됨.', '보조전원장치(SIV)인버터1의 냉각기 온도가 105도 이상인 조건에서 검지 +', '1) 보조전원장치(SIV)인버터1의 냉각기 온도가 105도 미만으로 떨어졌을 시 +2) 보조전원장치(SIV) 리셋으로 고장 소거 됨.', '1) 상기 고장이 발생이 된 경우 아래와 같이 조치한다. +2) 보조전원장치(SIV) 냉각기의 손상이 없는지 확인한다. +3) 보조전원장치(SIV) 내부에 인버터 유니트 구성품에 손상이 없는지 확인한다. +4) 인버터 유니트 내부에 온도센서 및 결선에 이상이 없는지 확인한다. +5) DIN 보드의 동작 상태를 시험기를 통해 확인한다. +6) 인버터 유니트 구성품들의 배선상태와 광케이블의 연결 상태를 확인한다. +7) 부하단의 절연상태 및 접지 간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('1af0c801-9b08-4323-9b78-bc8bf3142dd3', '0220', '220', 'BECU#1-공기제동 감쇄지령 비정상', 'Tc1', 'C', 'BECU-공기제동 감쇄지령 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit3 “공기제동 감쇄지령 비정상” 신호가 "1"이 되면 검지.', '해당 차량 공기제동 감쇄지령 비정상 검지 현시 및 해당차량 정상적인 전공 교차제어 불가.(부수차량 공기제동 감쇄 불가)', '해당 차량의 공기제동 감쇄지령 신호가 정상범위를 벗어남(5.0~95.0%).', '해당 차량의 공기제동 감쇄지령 신호가 정상범위일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. +소거되지 않을 경우 해당 차량 옆의 Pair 차량(구동차) BECU를 리셋(CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1af28cda-075f-4a65-87c4-77f5c9a47168', '0500', '500', 'DCU#6 5위(R3) 통신고장', 'M3', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS간 RS485 통신고장이 검지되면 발생.', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐 상태 등의 변화가 없음.', '1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우', '해당차량의 DCU 및 CU/TU 의 전원이 정상상태이고, 통신라인 연결상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜저 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는데도 지속적으로 통순고장이 검지되면, DCU의 X2,X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1af5f87a-9984-4d43-90b8-e4a5a6f488b0', '0140', '140', 'VVVF#3 - 제어전원전압 이상(TCU) (CLVD_S)', 'M2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('1afa614f-5b42-4a37-8c51-36bab5a3e119', '0721', '721', 'HVAC#1-냉난방장치2 압력스위치2(DPS) 냉매부족', 'Tc1', 'C', 'HVAC-냉난방장치2 압력스위치2(DPS) 냉매부족', 'C', 'HVAC', '냉난방장치2 냉매 압력스위치2 저압 발생.', 'UNIT2 CYCLE2 냉방 기능 불가', 'UNIT2 DSP2측 냉매 압력이 30초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우', '냉매 압력이 정상 수치 2±0.5(kgf/cm2 이상 유지하도록 하고, 마이콤 전원을 리셋', '1) 배전반 점검 커버를 열고 마이콤 전원을 리셋한 후, 냉방 가동 시, CREF4의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)을 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안되는 것을 확인한 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1b13e57a-41f7-4fbb-b3da-64fb2c59efba', '0170', '170', 'VVVF#7 - 보호동작 설정치 이상검지(SETERR)', 'M4', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('1b1b53e5-b6ec-418b-a756-05f29c705bc9', '0513', '513', 'DCU#5 6위(L3) - 모듈 상태체크 에러', 'T2', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 “Module check error” 신호가 “1”이 되면 검지 +', 'Modulecheckerror현시(출입문은 정상작동가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태 체크 기능에 이상이 생긴 경우 고장 발생 +', 'DCU의 ‘A' 모듈과 ‘B' 모듈 간, 상태 체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('1b3fdda0-fecb-4aba-a41a-cde56e98ac85', '0508', '508', 'DCU#4 1위(R1) - 출입문 모터/인코더 고장', 'T1', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 “Motor / Encoder failure” 신호가 “1”이 되면 +검지 +', '출입문 정상동작 불가', ' +1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우(인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터/인코더 회로 가 손상된 경우 +', '모터/인코더 및 DCU가 정상 상태이고, 전기적 연결 상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있는지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. ※ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. ? DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. ? DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) ? DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('1b49addc-c0e9-480b-a608-d241a3b7595c', '0309', '309', 'ATC#8-', 'Tc2', '0', null, null, '0', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1b4e79cd-de93-49a6-9f2b-b79d5be65c7b', '0518', '518', 'DCU#4 4위(L2) - 출입문 Enable 신호 에러', 'T1', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 “Enable signal error” 신호가 “1”이 되면 검지 +', 'DCU 출입문Enable신호에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드 시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을 때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드 시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입 상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호 장치로부터의 출입문 열림 명령 신호) 취급 시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함. +', '해당 출입문 enable 신호수신', '1) AUTO/MCS 모드 시에는 YARD 모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인 한다. (YARD/FMC 모드 시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('1b5ad72e-ac11-4d7b-a358-6f38a976a28b', '0744', '744', 'HVAC#5-전자접촉기 보조히터1(AHEK) 고장', 'T2', 'C', 'HVAC-전자접촉기 보조히터1(AHEK) 고장', 'C', 'HVAC', 'HVAC 보조난방기 작동 중 AHEK1 전자접촉기 고장 발생.', 'UNIT1 보조난방기 전난방 시 반난방만 작동', '보조난방기 작동 중 2.5초 이상동안 AHEK1 작동 feedback 신호가 수신되지 않는 경우', 'AHEK1 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) AHEK1을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, AHEK1과 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1b5cb883-5da8-4ff0-8b2a-b679ff12d591', '0214', '214', 'BECU#8-BC 압력센서고장', 'Tc2', 'C', 'BECU-BC 압력센서 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit5 “BC 압력센서 고장” 신호가 "1"이 되면 검지.', '해당 차량 BC압력센서 고장 검지 현시 및 해당차량 제동력 부족, 제동불완해 검지 불가.', '해당 차량의 BC압력센서 고장.', '해당 차량의 BC압력센서가 정상일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1b5dd630-d8e0-47df-a72b-2e99b29e2536', '1101', '1101', 'PSD#1 - 지상 PSD 장애(1계)', 'Tc1', 'D', 'PSD-지상 PSD 장애', 'D', 'PSD', 'PSD의 RS485 데이터 중 PSD-TCMS SD TEXT5(TEXT6)의 Bit1 “지상 PSD장애” 신호가 “1”이 되면 검지 ([지상 PSD 설비 장애] - 역사 내 종합 제어반으로부터 PSD 장애 신호 발생) +', '역사 내 PSD 개별도어 등이 고장검지 될 때 발생됨.', ' +1) 개별 도어 물체 검지 혹은 PSD 개별도어 고장 등일 때 발생됨. +2) 차상장치와 무관한 고장코드이며 차상장치 동작상에 문제가 없다. +', '1) PSD 장애는 역사 내 PSD 개별도어 등에 대한 고장이므로 기관사는 주의를 한다. +2) 기관사는 전면 PSD 개별도어 상태를 확인하고 PSD 닫힘을 확인하고 출발한다. +3) PSD 닫힘이 시행되지 않고, 전동차에서 PSD 열림 현시로 인하여 자동출발이 시행되지 않을 경우 사령실과 연락하여 조치를 취하고 확인 후 안전 출발한다. +* 해당 역사를 벗어나면 소멸됨.', null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('1b745981-67f9-468d-a00b-95e7f125f919', '0228', '228', 'BC 코크(차하#1) 차단(Car1)', 'Tc1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('1b8952e5-e486-4678-8a4b-93c27f78dae7', '0817', '817', '통합제어기(AVC) 문구 없음(Car#1)', 'Tc1', 'C', '통합방송표시기-통합제어기(AVC) 문구 없음', 'C', 'AVC', '통합방송표시기의 E-NET 데이터 중 통합방송표시기-TCMS SD TEXT5의 Bit1 “문구없음” 신호가 +“1”이 되면 검지 +', '해당역사에 자동으로 표시하여야 할 역 안내문구 현시하지 않음', '역사별 역 안내문구가 없는 경우 발생 다음역 안내문구 현시까지 고장 비트 유지 +', '역사별 역 안내문구가 있는 경우 소거', '스케쥴러의 역 안내문구 확인 및 차량에 스케쥴러 업데이트 관련도면 : 없음', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('1b8e3e5d-6ff5-4c0f-86c4-6dc06470163f', '0509', '509', 'DCU#1 5위(R3)-출입문 잠김 리미트 스위치 고장', 'Tc1', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 "DLS Failure” 신호가 "1"이 되면 검지.', '출입문 잠김 상태 확인 불가', '1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1b915951-6c69-471c-a4ed-429364b79e5a', '0520', '520', 'DCU#4 5위(R3)-이중계 절체 동작', 'T1', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 "Module switchover' 신호가 "1"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.392739+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1ba0b646-13f4-4a48-b5df-4b40771e9b69', '0027', '27', '장애물 검지 후 출입문 닫힘 스위치 취급', 'Tc1', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1ba6be12-9be6-46a3-9be6-b1533deaed1d', '0504', '504', 'DCU#2 1위(R1)-출입문 외부비상핸들 취급(EAD)', 'M1', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1ba997f4-abe1-4b44-8fd8-dfc9ecfcc618', '0501', '501', 'DCU#1 6위(L3)-출입문 차단', 'Tc1', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1bb00354-c72e-457c-a70c-4ecf55b97557', '0511', '511', 'DCU#2 1위(R1) - 출입문 닫힘 리미트 스위치2 고장', 'M1', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 “DCS2 Failure(Right)” 신호가 “1”이 되면 검지 +', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결��상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('1bb1d087-d542-4e00-9c01-44b290feddb9', '1202', '1202', 'FDU#2-감지기1 고장', 'M1', 'C', 'FDU-감지기1 고장', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 "Detector1 State” 신호가 "10"이 되면 검지.', '감지기 고장상태 현시(자동 소거 안됨)', '1) 감지기로부터 데이터 응답이 없는경우. +2) 감지기로부터 수신된 데이터의 CRC가 맞지 않는경우 +3) 감지기로부터 수신된 데이터의 ID가 송신 ID와 일치하지 않는경우', 'FDU 전원 리셋 후 감지기로부터 정상적으로 데이터가 수신된 경우', '1) FDU 전원 리셋 후 고장 소거 여부 확인 +2) 정상 동작중인 감지기와 위치 교환 후 FDU 전원 리셋 및 고장 상태 확인 +3) 동일한 감지기에서 고장 발생시 감지기 교체 +4) 동일한 위치에서 고장 발생시 감지기 라인 점검', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1bb4ddd2-2fcd-4826-9285-defd02f943c2', '1502', '1502', '기타장치용 DC 회로차단기 차단(Car2)', 'M1', 'W', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1bb56cdb-49ac-47b7-a99a-165d7bbe7912', '0505', '505', 'DCU#6 3위(R2)-출입문 입력 고전압', 'M3', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 "1"이 되면 검지.', '고전압 상태. (그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1bb570b7-c9e9-46de-b33c-c8284a8212cd', '0521', '521', 'DCU#2 6위(L3) - 모듈 상태 이상', 'M1', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 “01” 또는 “00”이 되면 +검지 +', '이중계절체동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러)이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('1bba654e-a382-48b7-9d04-b40ca8152600', '0181', '181', 'VVVF#6-MCOK 투입불량(MCOKNC)', 'M3', 'C', 'VVVF-MCOK 투입불량(MCOKNC)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT34의 Bit6 “MCOKNC” 신호가 "1"이 되면 검지.', null, 'MCOK 투입조건에서 개방상태 유지 시 고장검지.', '동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) 판토하강상태에서 테스트모드로 전환하여 시퀀스를 투입하고 MCOK의 주접점 동작을 확인한다. +2) 주회로 차단기함 내에 MCOK의 보조접점의 동작상태를 확인한다. +3) 추진제어장치 계전기 유니트에 MCHK1( +2) 보조접촉기 상태를 확인하여 동작 여부를 확인한다. +4) 추진제어장치 시험기를 이용하여 제어기 시험을 실시하여 이상여부를 확인한다.', null, '3', '2025-10-12 01:21:37.578803+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1bbdf223-e0e6-4876-8d21-c91a15d1e785', '0228', '228', 'BC 코크(차하#1) 차단(Car8)', 'Tc2', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1bc85392-1fc3-4b41-8c03-b0deae7b5ecd', '0213', '213', 'BECU#7-AC 압력센서고장', 'M4', 'C', 'BECU-AC 압력센서 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit4 “AC 압력센서 고장” 신호가 "1"이 되면 검지.', '해당 차량 공기제동장치고장, AC압력센서 고장 검지 현시 및 해당 차량 제동제어 불가.', '해당 차량의 AC압력센서 고장.', '해당 차량의 AC압력센서가 정상일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1bcb4db1-e98c-4ffe-b652-a2bf8ab16c97', '0216', '216', 'BECU#2 - 전두대차 AS 압력센서 고장', 'M1', 'C', 'BECU-전두대차 AS 압력센서 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit7 “전두대차 AS 압력센서 고장” 신호가 +“1”이 되면 검지 +', '해당 차량 전두대차 AS 압력센서 고장검지 현시 및 해당 차량 정상적인 응하중제동제어 불가', '해당 차량의 전두대차 AS 압력센서(AS1, AS2) 고장 +', '해당 차량의 전두대차 AS 압력센서(AS1, AS2)가 정상일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('1bd7c4d1-485d-46b9-a9ea-f99e2af93e0e', '0513', '513', 'DCU#3 5위(R3) - 모듈 상태체크 에러', 'M2', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 “Module check error” 신호가 “1”이 되면 검지 +', 'Modulecheckerror현시(출입문은 정상작동가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태 체크 기능에 이상이 생긴 경우 고장 발생 +', 'DCU의 ‘A' 모듈과 ‘B' 모듈 간, 상태 체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('1be3093b-1b35-4b03-817e-8e1ad8bb42d5', '0732', '732', 'HVAC#2-실외온도 센서1 고장', 'M1', 'C', 'HVAC-실외온도 센서 고장', 'C', 'HVAC', '실외온도 센서 고장 발생', '실외온도 센서 고장현시', '온도센서 검지범위는 -45~85도 (820~1330옴) 인데, 2초 이상 검지범위를 벗어나는 경우', '온도센서 검지 값이 2초 이상 허용온도 범위 내 일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820~1330옴 을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우, 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1bedcd58-b047-49aa-bd98-18e565fde33a', '0745', '745', 'HVAC#5 - 전자접촉기 배기팬2(CRVF) 고장', 'T2', 'C', 'HVAC-전자접촉기 배기팬2(CRVF) 고장', 'C', 'HVAC', 'HVAC 환기 작동 중 CRVF2 전자접촉기 고장 발생 +', '환기 시 차량 배기팬2 운전 불가능', '환기 작동 중 2.5초 이상 동안 CRVF2 작동 feedback 신호가 수신되지 않는 경우 +', 'CRVF2 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CRVF2를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRVF2와 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('1beecb4a-f767-4af5-9101-c9241526206e', '0150', '150', 'VVVF#7-가선저전압검지(ESLVD)', 'M4', 'C', 'VVVF-가선저전압검지(ESLVD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT30의 Bit7 “ESLVD” 신호가 "1"이 되면 검지.', null, '가선 전압이 850V 이하 감압 시 고장검지.', '1) 역행 고장검지 2초 후 자동 재기동 +2) 제동 제동 OFF시 고장 소거', '1) 상기고장이 간헐적으로 발생하는 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 가선전압에 이상이 있는지 확인한다. +3) 추진제어장치 내부 고전압부에 소손흔적이 있는지 확인한다. +4) FC에 연결된 버스바의 체결상태가 양호한지 확인한고, 버스바를 분리하여 FC의 Capacitance를 측정하여 이상이 없는지 확인한다. +5) 전압센서의 외관 및 단자 체결상태를 확인한다. +6) 추진제어장치 시험기를 이용하여 TCU(통합제어장치)의 이상여부를 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1bf7a1b7-45ce-4709-981c-8922dd2b3b97', '0241', '241', 'BECU#2-1축스키드신호', 'M1', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1c352ae1-ec07-4ddf-8e25-8db2c046217c', '0515', '515', 'DCU#3 5위(R3)-출입문 열림 시간 초과', 'M2', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 "Open time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 열림 동작시간이 6초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도 한 후, '장애물로 인한 열림실패' 고장과 함께 'Open time out' 고장이 함께 현시', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1c367114-88cd-4796-8dba-2d3e33110bb5', '0521', '521', 'DCU#2 1위(R1)-모듈 상태 이상', 'M1', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 "01"또는 "00"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1c3bfcb9-7f53-468d-8d0e-97d30dff6fb1', '0742', '742', 'HVAC#2 - 전자접촉기 보조히터3(AHEK) 고장', 'M1', 'C', 'HVAC-전자접촉기 보조히터3(AHEK) 고장', 'C', 'HVAC', 'HVAC 보조난방기 작동 중 AHEK3 전자접촉기 고장 발생 +', 'UNIT2 보조난방기 전난방 시 반난방만 작동', '보조난방기 작동 중 2.5초 이상 동안 AHEK3 작동 feedback 신호가 수신되지 않는 경우 +', 'AHEK3 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) AHEK3을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, AHEK3과 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('1c4be9ec-d5ed-449f-9cc9-ce4826e45354', '0230', '230', 'ECU 전원공급 고장(Car7)', 'M4', 'B', 'ECU 전원공급 고장', 'B', 'BECU', '해당 차량의 ECU 전원공급 고장(CB OFF) 발생 시 검지 +', '해당 차량의 ECU 전원공급 고장검지 현시', '해당 차량의 ECU 전원차단(CBOFF) +', '해당 차량의 ECU 전원공급(CBON)', 'BECU를 리셋(BECUCBOFF/ON)하여 소거 여부 확인, 지속적으로 고장 발생 시 관제 보고하고 지시에 따를 것', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('1c65c91e-c3d1-4fd3-888f-f39f75cf5bbc', '0070', '70', 'MAIN FUSE#2 DISCONNECTED(Car7)', 'M4', 'W', 'MAIN FUSE#2 DISCONNECTED(Car7)', 'W', 'TCMS', '차량으로부터 AUX FUSE DISCONNECTED 신호 입력시', 'VVVF고압 차단으로 추진 불능', '해당 퓨우즈 소손', '해당 퓨우즈 교체', null, ' +REC20210HN0', '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1c75b66c-6595-4ba5-aa63-80d52681d8fe', '0730', '730', 'HVAC#5-냉난방장치1 토출 센서 고장', 'T2', 'C', 'HVAC-냉난방장치1 토출 센서 고장', 'C', 'HVAC', '냉난방장치1의 토출 센서 고장 발생', '냉난방장치1 토출센서 고장현시', '온도센서 검지범위는 -45~85도 (820~1330옴) 인데, 2초 이상 검지범위를 벗어나는 경우', '온도센서 검지 값이 2초 이상 허용온도 범위 내 일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820~1330옴 을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우, 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1c7b55ca-3193-4d2b-92a7-cd9c4c84f503', '0520', '520', 'DCU#7 4위(L2) - 이중계 절체 동작', 'M4', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 “Module switchover” 신호가 “1”이 되면 검지 +', '이중계 절체 동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러) 이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A'모듈 및 ‘B'모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('1c90cc17-4025-47da-a396-8520a53b7fc8', '0165', '165', 'VVVF#3-OVT 오동작검지(OVTD)', 'M2', 'C', 'VVVF-OVT 오점호검지(OVTD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT32의 Bit6 “OVTD” 신호가 "1"이 되면 검지.', null, '1) OVT 점호 지령 없는 상태에서 점호되었을 시 고장검지. +2) 1분 이내 3회 발생 시 중고장 발생.', '1) 경고장 +역행 고장검지 2초 후 자동 재기동 제동 제동 OFF시 고장 소거 +2) 중고장 +동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기 고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) OVCT 전류센서의 외관상태 및 저전압 커넥터 체결상태를 확인한다. +3) IGBT 외관에 크랙 또는 폭발흔적이 있는지 확인한다. +4) IGBT의 C-E간 개방상태임을 확인한다. +5) 게이트 드라이버 PCB 기판에 소손, 냉납, 열화 유무 확인. +6) OVCT 커넥터의 P15A1~F15A1의 전압이 +15V, N15A1~F15A1의 전압이 -15V임을 확인한다. +7) 상기의 점검부분에 이상이 있을 경우 관련부품을 교체한다.', null, '3', '2025-10-12 01:21:37.578803+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1c93f5da-7dc6-443a-b654-451bd24f9c1a', '0751', '751', 'HVAC#7-냉난방장치1 보조히터 과열', 'M4', 'C', 'HVAC-냉난방장치1 보조히터 과열', 'C', 'HVAC', 'HVAC1 보조난방기 작동 중 과열 발생.', 'UNIT1 보조난방기 난방 불가', '보조난방기 작동 중 1초 이상동안 온도가 70도 이상으로 과온센서 정상 신호가 수신되지 않는 경우', '1초 이상동안 60도 미만으로 온도가 떨어져 과온센서 정상 신호가 수신되는 경우', '1) 보조난방기가 꺼진 상태에서도 문제 발생 시, 과온 센서를 교체한다. +2) 센서 교체 후에도 문제가 발생되면, 배선에 문제가 없는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1ca37ed0-bb58-4f43-853e-1b0c747f881a', '0421', '421', 'SIV#8 - 제어전원 저전압(CPCF)', 'Tc2', 'C', 'SIV-제어전원 저전압(CPCF)', 'C', 'SIV', '보조전원장치(SIV)의 RS485 데이터 중 SIV-TCMS SD TEXT6의 Bit6 “CPCF” 신호가 “1”이 되면 검지 +', '1) TCMS 화면하단 또는 고장화면에 ‘제어전원 저전압 이상 검지' 표시됨. +2) 보조전원장치(SIV)는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 보조전원장치(SIV) 중고장이 발생함. +5) 중고장이 발생되면 TCMS 일반화면에 보조전원장치(SIV) 상태 붉은색으로 표기되며, 연장급전 됨.', '보조전원장치(SIV)제어기에 입력되는 제어전원이65V 이하일 경우 검지 +', '1) 경고장이 발생할 경우 보조전원장치(SIV) 자동 재기동에 의해 재기동 됨. +2) 중고장이 발생할 경우 보조전원장치(SIV) 리셋으로 고장 소거됨.', '1) 상기 고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 보조전원장치(SIV)로 입력되는 제어전원 배선을 점검한다. +3) 제어전원부 내부 부품에 소손이 없는지 확인한다. +4) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('1cbd673f-e9f9-4856-a9bc-36aadb87e658', '0508', '508', 'DCU#5 2위(L1) - 출입문 모터/인코더 고장', 'T2', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 “Motor / Encoder failure” 신호가 “1”이 되면 +검지 +', '출입문 정상동작 불가', ' +1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우(인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터/인코더 회로 가 손상된 경우 +', '모터/인코더 및 DCU가 정상 상태이고, 전기적 연결 상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있는지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. ※ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. ? DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. ? DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) ? DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('1ccd49d1-7706-4b32-a372-9b3669a8ea71', '0728', '728', 'HVAC#2-냉난방장치2 토출 센서 고장', 'M1', 'C', 'HVAC-냉난방장치2 토출 센서 고장', 'C', 'HVAC', '냉난방장치2의 토출 센서 고장 발생', '냉난방장치2 토출센서 고장현시', '온도센서 검지범위는 -45~85도 (820~1330옴) 인데, 2초 이상 검지범위를 벗어나는 경우', '온도센서 검지 값이 2초 이상 허용온도 범위 내 일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820~1330옴 을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우, 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1ccf6263-7f6f-4517-90f5-37486df7374a', '0160', '160', 'VVVF#3-게이트전원전압이상(GPLVD)', 'M2', 'C', 'VVVF-게이트전원전압이상(GPLVD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT32의 Bit1 “GPLVD” 신호가 "1"이 되면 검지.', null, '통합제어장치 PWS보드의 AC24V 출력전압 이상 시 고장검지.', '동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) TCU(통합제어기) 입력에 제어전원 DC 100V가 인가되는지 확인한다. +2) PWS 보드의 전면부에서 AC 24V 출력단 LED가 점등되어있는 것을 확인한다. +3) 상기 점검부에 이상이 없을 경우 TCU(통합제어장치)를 교체한다. +4) TCU교체 후 동일증상 반복 시 인버터 스택을 교체한다.', null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1cdd5cb3-aabe-4fa3-b6d0-8bdf97902127', '0225', '225', 'BECU#5-강제완해검지(CPRD)', 'T2', 'C', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1ce62b18-0623-4485-898e-f73796d0ad53', '0512', '512', 'DCU#2 5위(R3) - 파라미터 로딩 실패', 'M1', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 “Paraneter error” 신호가 “1”이 되면 검지 +', 'Parametererror 현시(출입문은 정상작동 가능)', 'DCU 자체 내의 EEPROM으로부터 parameter데이터 로딩 실패 +', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('1cef144e-530a-4cd6-9b5d-06ae0aabdf7e', '0503', '503', 'DCU#4 5위(R3) - 출입문 내부 비상핸들 취급(EED)', 'T1', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('1cf8286b-8197-4013-b9ce-85b7f76f0804', '0752', '752', 'HVAC#2 - 배기댐퍼 닫힘고장', 'M1', 'C', 'HVAC-배기댐퍼 닫힘고장', 'C', 'HVAC', '차량 배기댐퍼가 닫혀있는 상태에서 배기댐퍼 닫힘 리미트 스위치가 작동되지 않음 +', '배기댐퍼 닫힘 고장 현시', '배기댐퍼를 닫힘으로 제어했으나 닫힘 리미트 스위치 입력이 없을 경우 +', '배기댐퍼 닫힘 상태에서 리미트 스위치 입력이 정상적으로 입력', '1) 배기댐퍼가 닫힌 상태에서 닫힘 리미트 스위치가 정상적으로 작동되었는지 확인한다. +2) 닫힘 리미트 스위치가 정상작동 되었음에도 문제가 발생될 경우, 스위치를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('1cf9c186-13cc-47af-a6e6-7de923468b0f', '0726', '726', 'HVAC#6 - 배기팬2 과부하', 'M3', 'C', 'HVAC-배기팬2 과부하', 'C', 'HVAC', 'HVAC 환기작동 중 차량 배기팬2 모터에 과부하 발생 +', '환기 시 차량 배기팬2 운전 불가능', ' +1) 냉방 작동 중 챠량 배기팬2 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRVF2와 연결된 THR10이 Trip 됨. +', '차량 배기팬2 모터의 과부하조건을 해소하여 정상 가능 상태로 만들고, THR10 및 마이콤 전원 리셋', '1) 냉난방 배전반의 점검커버를 열고, THR10의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR10의 전류 세팅값이 2.5A에 맞춰져 있는지 확인하여, 아닐 경우, (+) 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동시킨 후, THR10의 2차측 2, 4 단자와 6 단자 사이의 전압이 DC 100V로 정상 측정 되는지 확인한다. +5) 만약 전압이 측정되지 않을 시, 전원이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, THR10 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('1d06597e-756d-42b5-8658-6ee77674873e', '0727', '727', 'HVAC#8-배기팬1 과부하', 'Tc2', 'C', 'HVAC-배기팬1 과부하', 'C', 'HVAC', 'HVAC 환기작동 중 차량 배기팬1 모터에 과부하 발생.', '환기 시 차량 배기팬2 운전 불가능', '1) 냉방작동 중 챠량 배기팬1 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRVF1와 연결된 THR9가 Trip 됨.', '차량 배기팬1 모터의 과부하 조건을 해소하여 정상 가능 상태로 만들고, THR9 및 마이콤 전원 리셋', '1) 냉난방배전반의 점검커버를 열고, THR9의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR9의 전류 세팅값이 2.5A에 맞춰져 있는지 확인하여, 아닐 경우, 십자 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동 시킨 후, THR9의 2차측 2,4 단자와 6 단자 사이의 전압이 DC 100V으로 정상 측정되는지 확인한다. +5) 만약 전압이 측정되지 않을 시, 전원이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, THR9 부품을 교체한다.', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1d0cf7eb-c185-4228-a473-f06692355ec2', '1518', '1518', 'CU2 운용다이아 CRC 오류(Car1)', 'Tc1', 'C', 'CU2, 2 운용다이아 CRC 오류', 'C', 'TCMS', '초기 기동 시 CU의 MCPU 내부에 들어가 있는 운용다이아 데이터가 CRC 오류가 발생한 경우 +', '1) 내부의 데이터가 CRC 오류가 발생하여 운용다이아를 사용할 수 없을 때 발생 +2) 열차번호 입력 시 다음역, 행선역이 표출되지 않음. +3) 방송/표시기 데이터를 정상적으로 송출 할 수 없음. (운행중인 경우 수동방송필요) +4) 열번/역설정 화면의 역설정/운용설정이 정상적으로 표시되지 않음.', '초기 기동 시 내부에 가지고 있는 운용다이아 데이터가 손상된 경우 +', 'CU 리셋 후 초기 기동 시 운용다이아 데이터가 정상적인 것을 확인한 경우', '1) 운용다이아 데이터 재설치 후 재기동 +2) 불량 해소가 되지 않을 경우, MCPU PCB 교체 후 운용다이아 데이터 재설치', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('1d0fca91-4677-4136-960b-a8a3bfb7fc7e', '0514', '514', 'DCU#6 3위(R2) - 출입문 닫힘 시간 초과', 'M3', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 “Close time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 닫힘 동작 시간이 7초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도한 후, ‘장애물로 인한 닫힘 실패' 고장과 함께 ‘Close time out' 고장이 함께 현시 +', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('1d1f8915-b41b-44e7-aca3-a1450db9f26f', '0508', '508', 'DCU#4 2위(L1)-출입문 모터/인코더 고장', 'T1', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 "Motor / Encoder failure” 신호가 "1"이 되면 검지.', '출입문 정상동작 불가', '1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우 (인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터 / 인코더 회로가 손상된 경우', '모터/인코더 및 DCU가 정상상태이고, 전기적 연결상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있느지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. +★ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. + +1. DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. +2. DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) +3. DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1d23e1f7-3859-4b04-85b2-976979d6317d', '0500', '500', 'DCU#3 6위(L3) 통신고장', 'M2', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS 간 RS485 통신고장이 검지되면 발생 +', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐상태 등의 변화가 없음.', ' +1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우 +', '해당 차량의 DCU 및 CU/TU의 전원이 정상상태이고, 통신 라인 연결 상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜져 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적 으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는 데도 지속적으로 통신고장이 검지되면, DCU의 X2, X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상 체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('1d2caeab-7581-4c12-abb8-ccda220c3d9e', '0174', '174', 'VVVF#7 - 통합제어장치 - PWM 제어장치간 신호 이상 검지(ERRDIO)', 'M4', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('1d2ff091-43c4-4d4b-8367-7f9e0d2aef87', '1203', '1203', 'FDU#4 - 감지기2 화재감지', 'T1', 'W', 'FDU-감지기2 화재감지 (Car1~8)', 'W', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 “Detector1 State” 신호가 “11”이 되면 검지 +', '화재상태현시(자동소거 안 됨.)', '하기 2가지 조건을 모두 만족하여야 화재신호가 출력 됨. (연동모드 동작) +1) 이웃한(앞 혹은 뒤에 위치한) 감지기 중 하나의 감지기라도 주의 혹은 화재상태에 있어야 함. +2) Detector1(해당 감지기)에서 측정된 연기농도가 15% 이상이거나 온도가 65℃ 이상인 경우 +', '1) FDU의 복귀버튼 조작 시 +2) FDU 전원 리셋 시', '1) 해당 감지기 위치의 화재 발생 여부 확인 +2) 화재 오감지일 경우 FDU의 복귀버튼 취급 +3) 오감지일 경우 감지기의 청소주기 확인(내부 먼지 제거)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('1d356a11-bb4d-47b7-bf16-ac4a5edf046a', '0517', '517', 'DCU#3 5위(R3)-출입문 장애물로 인한 열림 실패', 'M2', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Open failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘상태로 대기', '도어 열림 중 3회 장애물 감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 열림 시, 장애물 감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1d483155-6edf-4df5-8233-802b59036e9c', '1109', '1109', 'PSD#1-차상 메모리고장(2계)', 'Tc1', 'C', null, null, 'PSD', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1d4f7d0a-a29d-4f80-b039-d0d4ebc05364', '0237', '237', '보안제동코크 차단(Car5)', 'T2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('1d7cd50f-60f9-409f-94e8-21363cf37000', '0509', '509', 'DCU#2 1위(R1) - 출입문 잠김 리미트 스위치 고장', 'M1', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 “DLS Failure” 신호가 “1”이 되면 검지 +', '출입문 잠김 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('1d92c802-28af-460a-8243-66ac9f27a05d', '0504', '504', 'DCU#6 5위(R3)-출입문 외부비상핸들 취급(EAD)', 'M3', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1d955368-cb85-4e0e-8ee7-27f2bd4c9f05', '1522', '1522', 'TCMS 데이타버스1 좌측라인 통신 이상(Car2)', 'M1', 'C', 'TCMS 데이터버스1 좌측라인 통신 이상', 'C', 'TCMS', 'TCMS의 초기 기동 시 자기진단에 의한 2중계 메인통신선 중 1계 메인통신 이상 검지 시 +', '1) SL-NET 2중계이므로 데이터버스 2계로 정상통신, 운행에 지장 없음. +2) 초기기동 자기진단 시 2중계를 점검하여 1계측의 이상이 검지되었다는 점검 필요용 메시지', '초기 기동 시 SL-NET 1계와 2계를 각각 통신 후 비교하여 2계는 정상통신이 되나 1계는 정상통신이 안 되는 경우 +', '정상 수리 후 차량 전체 재기동하여 SL-NET 1계와 2계 모두 정상통신이 되는 경우', '1) 고장검출호차와 고장검출 좌측호차와의 SL-NET 통신 1계 정상여부 확인(예 : 고장호차가 3호차인 경우 1-2-3-4-5-6-7-8에서 3호차의 좌측, 즉 2-3호차 간 SL-NET 1계 통신 상태 점검 필요) +2) 고장검지호차의 SCM PCB 교체 정상여부 확인 +3) 고장검지호차의 좌측호차 SCM PCB 교체 정상여부 확인 +4) 고장검지호차와 고장검지 좌측호차의 SL-NET 1계 메인통신 배선의 연결 상태 확인 +5) 상기 2 ~ 4번 점검에도 정상적으로 복귀되지 않는 경우, CU/TU ASS'Y 교체(백보드 확인 필요)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('1d9f1031-1fa0-4690-878e-f78c3f0afcd9', '1302', '1302', 'RTD#1-무선랜 상태 고장', 'Tc1', 'D', 'RTD-무선랜 상태 고장', 'D', 'RTD', 'RTD의 RS485 데이터 중 RTD-TCMS SD TEXT1의 Bit5 “무선랜 상태 고장” 신호가 "1"이 되면 검지.', 'RTD 무선랜 상태 고장 메시지 현시.', 'RTD장치 내부 무선브릿지 보드로부터 ping 체크에 대한 응답 없을 경우.', 'RTD장치 내무 무선브릿지 보드가 Ping체크에 정상 응답할 경우.', 'RTD장치 내부 메인보드 와 브릿지보드 Ethernet line 연결상태를 확인한다.', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1da3d054-761e-46ba-bcb9-9288f7d5ab54', '0519', '519', 'DCU#8 3위(R2) - ZVR 신호 에러', 'Tc2', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 “ZVR signal error” 신호가 “1”이 되면 검지 +', '출입문이강제로 닫히게 되고, 열림은 불가능', ' +1) 차량 ZVR 신호가 없는 상태(차량 주행상태)에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함. +', '해당 출입문 ZVR 신호 수신', '1) 차량 이 주행중이라면, 차량 이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('1db59785-3872-43b5-add6-9c9dad6a10ad', '0720', '720', 'HVAC#4 - 실내온도 센서1 고장', 'T1', 'C', 'HVAC-실내온도 센서1 고장', 'C', 'HVAC', '객실 실내온도 센서1 고장 발생 +', '실내온도센서1 고장 현시', '온도센서 검지범위는 -45 ~ 85도(820 ~ 1,330Ω)인데, 2초 이상 검지범위를 벗어나는 경우 +', '온도센서 검지값이 2초 이상 허용온도 범위 내일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820 ~ 1,330Ω을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('1dd0016c-1827-45cc-9120-28f248663dbd', '0736', '736', 'HVAC#6-전자접촉기 압축기(CRCM)1 고장', 'M3', 'C', 'HVAC-전자접촉기 압축기(CRCM)1 고장', 'C', 'HVAC', 'HVAC 냉방작동 중 CRCM1 전자접촉기 고장 발생.', '냉방 기능 저하(전냉방시 반냉방으로 작동)', '냉방작동 중 2.5초 이상동안 CRCM1 작동 feedback 신호가 수신되지 않는 경우', 'CRCM1 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CRCM1을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRCM1과 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1ddf0f57-cae1-455a-aff7-9d8b6fb4fa1c', '0514', '514', 'DCU#6 5위(R3) - 출입문 닫힘 시간 초과', 'M3', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 “Close time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 닫힘 동작 시간이 7초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도한 후, ‘장애물로 인한 닫힘 실패' 고장과 함께 ‘Close time out' 고장이 함께 현시 +', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('1df1092b-a2d5-4314-a6a5-f1207587a0de', '0148', '148', 'VVVF#6-FC 과전압검지(OVD1)', 'M3', 'C', 'VVVF-FC 과전압검지(OVD1)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT30의 Bit5 “OVD1” 신호가 "1"이 되면 검지.', null, '필터캐패시터의 전압이 2000V 이상 승압 시 고장발생.', '1) 경고장 +역행 고장검지 3초 후 자동 재기동 +제동 제동 OFF시 고장 소거 +2) 중고장 +동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 FC전압에 이상이 있는지 확인한다. +3) 추진제어장치 내부 고전압부에 소손흔적이 있는지 확인한다. +4) FC에 연결된 버스바의 체결상태가 양호한지 확인한고, 버스바를 분리하여 FC의 Capacitance를 측정하여 이상이 없는지 확인한다. +5) 전압센서의 외관 및 단자 체결상태를 확인한다. +6) 추진제어장치 시험기를 이용하여 TCU(통합제어장치)의 이상여부를 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1df15036-71dd-4f6f-afe0-a136e236d5c4', '0028', '28', '비상제동 차단 스위치 취급', 'Tc1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('1df57f81-55c6-4ccc-8c65-a6bae6724eda', '0709', '709', 'HVAC#5-냉난방장치2 압력스위치2(DPS) 저압', 'T2', 'D', 'HVAC-냉난방장치2 압력스위치2(DPS) 저압', 'D', 'HVAC', '냉난방장치2 냉매 압력스위치2 저압 발생.', 'UNIT2 CYCLE2 냉방 기능 불가', 'UNIT2 DSP2측 냉매 압력이 3초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우', '냉매 압력이 정상 수치 2±0.5(kgf/cm2 이상으로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CREF4의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)을 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안되는 것을 확인한 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1dfbc8da-2445-4f42-aebd-4d210f2aff9c', '0500', '500', 'DCU#1 1위(R1) 통신고장', 'Tc1', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS간 RS485 통신고장이 검지되면 발생.', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐 상태 등의 변화가 없음.', '1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우', '해당차량의 DCU 및 CU/TU 의 전원이 정상상태이고, 통신라인 연결상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜저 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는데도 지속적으로 통순고장이 검지되면, DCU의 X2,X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1dfc35f9-a46a-4d8c-bcd6-30cf37e7be43', '0153', '153', 'VVVF#6 - FC 용량저하(FCLCD)', 'M3', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('1e20bb06-7bbf-419b-8239-4c3d87549159', '0155', '155', 'VVVF#6-역행/회생이상검지(PBR)', 'M3', 'C', 'VVVF-역행/회생이상검지(PBR)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT31의 Bit4 “PBR” 신호가 "1"이 되면 검지.', null, '역행, 제동신호 동시 입력', '동시 입력상황 해제', '1) 상기고장이 간헐적으로 발생하는 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 역행/제동신호에 이상이 있는지 확인한다. +3) 차량의 제어회로 중 전진/후진 신호가 추진제어장치로 연결되는 경로에 이상이 없는지 확인한다. +4) 추진제어장치 시험기를 이용하여 TCU(통합제어장치)의 이상여부를 확인한다. +5) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1e239e5c-16af-450b-815e-3354e1e78f6f', '0506', '506', 'DCU#6 4위(L2) - 출입문 입력 저전압', 'M3', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 “1”이 되면 검지 +', '저전압상태(출입문 동작이 심하게 느려지거나 작동조차 안 될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하 +', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('1e2bbad6-b1b7-4c95-a8db-b58de07a4ef7', '1203', '1203', 'FDU#7-감지기2 화재감지', 'M4', 'W', 'FDU-감지기2 화재감지', 'W', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 "Detector1 State” 신호가 "11"이 되면 검지.', '화재상태 현시(자동 소거 안됨)', '하기 2가지 조건을 모두 만족하여야 화재신호가 출력 됨(연동모드 동작). +1) 이웃한(앞 혹은 뒤에 위치한) 감지기 중 하나의 감지기라도 주의 혹은 화재상태에 있어야 함. +2) Detector1(해당 감지기)에서 측정된 연기농도가 15% 이상이거나 온도가 65℃ 이상인 경우', '1) FDU의 복귀버튼 조작시 +2) FDU 전원 리셋시', '1) 해당 감지기 위치의 화재 발생 여부 확인 +2) 화재 오 감지일경우 FDU의 복귀버튼 취급 +3) 오감지일경우 감지기의 청소주기 확인(내부 먼지 제거)', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1e2d5630-01e8-4f30-bf22-eb992ead5593', '0503', '503', 'DCU#6 4위(L2)-출입문 내부비상핸들 취급(EED)', 'M3', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1e2f5e17-56f6-417c-9d0f-d0b937c3306c', '0735', '735', 'HVAC#7-전자접촉기 압축기(CRCM)2 고장', 'M4', 'C', 'HVAC-전자접촉기 압축기(CRCM)2 고장', 'C', 'HVAC', 'HVAC 냉방작동 중 CRCM2 전자접촉기 고장 발생.', '냉방 기능 저하(전냉방시 반냉방으로 작동)', '냉방작동 중 2.5초 이상동안 CRCM2 작동 feedback 신호가 수신되지 않는 경우', 'CRCM2 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CRCM2를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRCM2와 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1e310f77-da52-4a5e-ab25-0f5ee4af2999', '0502', '502', 'DCU#1 1위(R1) - 출입문 장애물검지', 'Tc1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('1e381564-2dd8-4fa3-92f4-efc8edf1b187', '0719', '719', 'HVAC#6-실내온도 센서2 고장', 'M3', 'C', 'HVAC-실내온도 센서2 고장', 'C', 'HVAC', '객실 실내온도 센서2 고장 발생', '실내온도 센서2 고장현시', '온도센서 검지범위는 -45~85도 (820~1330옴) 인데, 2초 이상 검지범위를 벗어나는 경우', '온도센서 검지 값이 2초 이상 허용온도 범위 내 일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820~1330옴 을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우, 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1e3a575b-e166-46be-b0b7-90378a49fd02', '0509', '509', 'DCU#8 1위(R1)-출입문 잠김 리미트 스위치 고장', 'Tc2', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 "DLS Failure” 신호가 "1"이 되면 검지.', '출입문 잠김 상태 확인 불가', '1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1e479ec7-ad21-4ac1-9d1d-4150be403992', '0232', '232', 'BC 코크(차하#2) 차단(Car2)', 'M1', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1e5b5a0f-6294-49f8-b9f9-77c3231311ab', '0733', '733', 'HVAC#7-전자접촉기 압축기(CRCM)4 고장', 'M4', 'C', 'HVAC-전자접촉기 압축기(CRCM)4 고장', 'C', 'HVAC', 'HVAC 냉방작동 중 CRCM4 전자접촉기 고장 발생.', '냉방 기능 저하(전냉방시 반냉방으로 작동)', '냉방작동 중 2.5초 이상동안 CRCM4 작동 feedback 신호가 수신되지 않는 경우', 'CRCM4 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CRCM4를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRCM4와 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1e68fa86-3e0f-40ec-bfb2-fd62f3dffcf6', '0716', '716', 'HVAC#4-냉난방장치1 압력스위치1(DPS) 고압', 'T1', 'D', 'HVAC-냉난방장치1 압력스위치1(DPS) 고압', 'D', 'HVAC', '냉난방장치1 냉매 압력스위치2 고압 발생.', 'UNIT1 CYCLE1 냉방 기능 불가', 'UNIT1 DSP1측 냉매 압력이 3초 이상 28±1(kgf/cm2) 이상 되는 경우', '냉매 압력이 정상 수치 15±0.7(kgf/cm2 이하로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CRCM1의 부하측 전류를 측정하여 응축기 팬의 동작여부를 확인한다. +2) 응축기 코일의 전면에 이물질로 인한 막힘이 있는지 확인한다. +3) 응축기 팬 상부 그릴에 외부 이물질로 인한 막힘이 있는지 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1e75d397-4f5b-4bcc-925e-5260bc6a0e8d', '0517', '517', 'DCU#1 5위(R3)-출입문 장애물로 인한 열림 실패', 'Tc1', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Open failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘상태로 대기', '도어 열림 중 3회 장애물 감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 열림 시, 장애물 감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1e75e200-0713-4ba4-a051-76b7e9eefcd4', '0512', '512', 'DCU#1 6위(L3) - 파라미터 로딩 실패', 'Tc1', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 “Paraneter error” 신호가 “1”이 되면 검지 +', 'Parametererror 현시(출입문은 정상작동 가능)', 'DCU 자체 내의 EEPROM으로부터 parameter데이터 로딩 실패 +', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('1e858884-616d-4697-a7fa-d564fc2a64c5', '0206', '206', 'BECU#7 - RAM 점검 고장', 'M4', 'C', 'BECU-RAM 점검 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit5 “RAM 점검 고장” 신호가 “1”이 되면 검지 +', '해당 차량 RAM 점검 고장검지 현시 및 해당 차량 정상적인 제동제어 불가', '해당 차량 BECU의 자가진단 시 고장 발생 +', '해당 차량 BECU의 자가진단 시 정상적일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('1e8af393-c8ad-4306-b25c-040d25460114', '0701', '701', 'HVAC#1 - 냉난방장치2 압축기2 과부하', 'Tc1', 'C', 'HVAC-냉난방장치2 압축기2 과부하', 'C', 'HVAC', 'HVAC 냉방 작동 중 냉난방장치2 압축기2 또는 응축기2 모터에 과부하 발생 +', '냉방 기능 저하(전냉방 시 반냉방으로 작동)', ' +1) 냉방 작동 중 UNIT2의 압축기2 또는 응축기2 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRCM4와 연결된 THR4가 Trip 됨. +', 'UNIT2의 압축기2 또는 응축기2 모터의 과부하조건을 해소하여 정상 가능 상태로 만들고, THR4 및 마이콤 전원 리셋', '1) 냉난방 배전반의 점검커버를 열고, THR4의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR4의 전류 세팅값이 11.5A에 맞춰져 있는지 확인하여, 아닐 경우, (+) 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동시킨 후, THR4의 2차측 2, 4, 6 단자에서 각 단자 간 상간 전압이 AC 380V로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 압축기 및 응축기 단품 상태에서 점검을 한다. +7) THR4의 2차측 2, 4, 6 단자에서 각 단자 간 권선저항이 모두 같은지 확인한다. (±10% 이하) (압축기2 및 응축기2 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT2의 압축기2 또는 응축기2 모터의 결선을 해제한 후 각 부품의 권선저항을 확인 후, 문제가 있는 부품을 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR4 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('1e9240b9-10a6-429d-9fe7-ec915fdc30c6', '0177', '177', 'VVVF#6 - LB1 투입불량(LB1NC)', 'M3', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('1e929cc4-8c01-4064-8ea4-958b68a98565', '0167', '167', 'VVVF#3 - 마스콘 노치신호 이상검지(PWMERR)', 'M2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('1e933644-52a3-48ab-8715-cf8993d6c8e7', '0720', '720', 'HVAC#6-실내온도 센서1 고장', 'M3', 'C', 'HVAC-실내온도 센서1 고장', 'C', 'HVAC', '객실 실내온도 센서1 고장 발생', '실내온도 센서1 고장현시', '온도센서 검지범위는 -45~85도 (820~1330옴) 인데, 2초 이상 검지범위를 벗어나는 경우', '온도센서 검지 값이 2초 이상 허용온도 범위 내 일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820~1330옴 을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우, 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1ea33bf2-8666-4bda-a690-a2b5e6df0acf', '0514', '514', 'DCU#1 3위(R2)-출입문 닫힘 시간 초과', 'Tc1', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 "Close time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 닫힘 동작시간이 7초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도 한 후, '장애물로 인한 닫힘실패' 고장과 함께 'Close time out' 고장이 함께 현시', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1eb03342-1d23-4512-90f7-1e60fba0f121', '0226', '226', 'BECU#4 - 제동불완해검지(NRBD)', 'T1', 'B', 'BECU-제동불완해검지(NRBD)', 'B', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT8의 Bit2 “NRBD” 신호가 “1”이 되면 검지 +', '해당 차량 제동불완해 검지 현시 및 완해 취급하였음에도 불구하고 해당 차량 제동압력 (BCP)이 완해되지 않음.', '제동완해상태(정차제동포함)에서 해당 차량의 제동압력이 완전히 배기되지 않음. +', '제동완해상태(정차제동포함)에서 해당 차량의 제동압력이 완전히 배기됨.', '정차하여 강제완해 스위치를 취급하여 소거 여부 확인, 제동 완해상태 확인 후 주의 운전할 것, 2 ~ 3회 시도에도 완해불능 시 관제보고하고 지시에 따를 것', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('1eb4962f-276f-4d52-9845-f945770c9a22', '0512', '512', 'DCU#1 1위(R1)-파라미터 로딩 실패', 'Tc1', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 "Paraneter error” 신호가 "1"이 되면 검지.', 'Parameter error 현시 (출입문은 정상작동 가능)', 'DCU 자체내의 EEPROM으로부터 parameter 데이터 로딩 실패', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1eb55fde-1dd0-4bb6-bd20-0e6aca953059', '0514', '514', 'DCU#1 2위(L1)-출입문 닫힘 시간 초과', 'Tc1', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 "Close time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 닫힘 동작시간이 7초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도 한 후, '장애물로 인한 닫힘실패' 고장과 함께 'Close time out' 고장이 함께 현시', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1eb889c5-e5d8-482d-a9ec-120108e11449', '1206', '1206', 'FDU#7 - 감지기3 고장', 'M4', 'C', 'FDU-감지기3 고장 (Car1~8)', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 “Detector1 State” 신호가 “10”이 되면 검지 +', '감지기고장상태현시(자동소거 안 됨)', ' +1) 감지기로부터 데이터 응답이 없는 경우 +2) 감지기로부터 수신된 데이터의 CRC가 맞지 않는 경우 +3) 감지기로부터 수신된 데이터의 ID가 송신 ID와 일치하지 않는 경우 +', 'FDU 전원 리셋 후 감지기로부터 정상적으로 데이터가 수신된 경우', '1) FDU 전원 리셋 후 고장 소거 여부 확인 +2) 정상동작중인 감지기와 위치 교환 후 FDU 전원 리셋 및 고장 상태 확인 +3) 동일한 감지기에서 고장 발생 시 감지기 교체 +4) 동일한 위치에서 고장 발생 시 감지기 라인 점검', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('1ec18a46-34e9-4a4c-9a0d-865741931e46', '1517', '1517', 'CU2 모듈고장 - AUX2(Car1)', 'Tc1', 'C', 'CU1, 2 모듈고장 - AUX2', 'C', 'TCMS', 'CU의 AUX2 PCB가 이 정상적으로 인식되지 않아 점검이 필요할 때 +', '1) CU1의 AUX2 PCB가 모듈 고장이 발생하면, CU2로 자동 절체됨. (CU2로 자동 절체되면 운행 에는 지장이 없음.) +2) CU2 자동 절체 시 화면의 우측 상단 경고장글자 하단에 “B.SYS” 라는 표시가 나타남. +3) 자동절체 시 열차 운행에는 관계없음. +4) CU2의 AUX2 모듈고장 시는 CU1 정상동작시 운행에는 지장이 없음.', 'CU AUX2의 ID를 정상적으로 검출하지 못할 때 화면에 현시 +', 'CU AUX2의 ID를 정상적으로 검출하는 경우 소거됨.', '1) CU의 AUX2 PCB 교체 +2) 불량 해소가 되지 않을 경우, 순차적으로 MCPU, SCM, DIM PCB를 교체하여 정상여부 확인', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('1ec5da39-6961-4050-92e8-639594a121e6', '0517', '517', 'DCU#5 1위(R1)-출입문 장애물로 인한 열림 실패', 'T2', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Open failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘상태로 대기', '도어 열림 중 3회 장애물 감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 열림 시, 장애물 감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1ec8d467-3277-4874-a9f9-9e449cf3548a', '0805', '805', '측면제어기(SOB) 돌출형 고장(Car#1)', 'Tc1', 'C', '통합방송표시기-측면제어기(SOB) 돌출형 고장', 'C', 'TCMS', '통합방송표시기의 RS485 데이터 중 통합방송표시기-TCMS SD TEXT8의 Bit3 “SOB OUT 고장” 신호가 "1"이 되면 검지.', '고장장치 통신 불량으로 방송기능 불능', '마스터 통합방송제어기에 주기적(2초) TCP 응답이 없을 경우 통신 불량으로 판단', '마스터 통합방송제어기에 TCP 응답 재개', '관련 CB(방송/표시기/CCTV 전원공급장치2, CBPAU# +2) 리셋하고 통신라인 및 상태 점검. +관련도면 :', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1ed287f2-89a2-45cc-99ea-c42ad2651daf', '1212', '1212', 'FDU#8-', 'Tc2', '0', null, null, 'FDU', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1eda2f69-7dc0-4ff5-95f6-8e30fe571a51', '0521', '521', 'DCU#7 3위(R2)-모듈 상태 이상', 'M4', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 "01"또는 "00"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1edcf76d-930f-45e8-b9cf-23f02a7c7896', '0512', '512', 'DCU#5 3위(R2)-파라미터 로딩 실패', 'T2', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 "Paraneter error” 신호가 "1"이 되면 검지.', 'Parameter error 현시 (출입문은 정상작동 가능)', 'DCU 자체내의 EEPROM으로부터 parameter 데이터 로딩 실패', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1f0c8557-a9e1-4596-bc9a-eab3b886e5f3', '0169', '169', 'VVVF#2 - 상전류 동기 불평형 검지(RETRY)', 'M1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('1f0d6b0a-d6e8-406e-840f-f2f4cad4b024', '0500', '500', 'DCU#8 3위(R2) 통신고장', 'Tc2', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS간 RS485 통신고장이 검지되면 발생.', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐 상태 등의 변화가 없음.', '1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우', '해당차량의 DCU 및 CU/TU 의 전원이 정상상태이고, 통신라인 연결상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜저 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는데도 지속적으로 통순고장이 검지되면, DCU의 X2,X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1f1b3329-54ba-4de2-8e9f-3b4ec339221a', '0503', '503', 'DCU#8 1위(R1)-출입문 내부비상핸들 취급(EED)', 'Tc2', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1f1ce101-ed1d-4a42-9f25-aa3d6fbb37d5', '0078', '78', '화재검지(Car1)', 'Tc1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('1f22c7af-5f58-4cf1-adfe-9ee17310cd64', '0500', '500', 'DCU#6 4위(L2) 통신고장', 'M3', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS간 RS485 통신고장이 검지되면 발생.', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐 상태 등의 변화�� 없음.', '1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우', '해당차량의 DCU 및 CU/TU 의 전원이 정상상태이고, 통신라인 연결상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜저 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는데도 지속적으로 통순고장이 검지되면, DCU의 X2,X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1f2429ef-1a02-4af7-abdd-4877db0c9f45', '0168', '168', 'VVVF#6 - 응하중 신호 이상검지(BRFD)', 'M3', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('1f298836-9f78-44e1-a750-c81129304d49', '0184', '184', '역행관련 회로차단기 차단(Car1)', 'Tc1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('1f3ac338-8554-4739-b79f-834f319ee942', '0505', '505', 'DCU#2 5위(R3) - 출입문 입력 고전압', 'M1', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 “1”이 되면 검지 +', '고전압 상태(그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상 +', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('1f3e8c54-ef2d-46c9-82e6-68d840f41db7', '0520', '520', 'DCU#1 4위(L2)-이중계 절체 동작', 'Tc1', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 "Module switchover' 신호가 "1"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1f4e015d-8e61-4358-a5fe-2ee0dbc525a2', '0515', '515', 'DCU#2 4위(L2) - 출입문 열림 시간 초과', 'M1', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 “Open time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 열림 동작시간이 6초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도한 후, ‘장애물로 인한 열림 실패' 고장과 함께 ‘Open time out' 고장이 함께 현시 +', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('1f4e6437-2a1f-4bce-9325-37025b7f46ad', '0509', '509', 'DCU#7 1위(R1)-출입문 잠김 리미트 스위치 고장', 'M4', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 "DLS Failure” 신호가 "1"이 되면 검지.', '출입문 잠김 상태 확인 불가', '1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1f5010bb-c484-4769-aff1-6fc3f38388c8', '0115', '115', 'VVVF-Stack 과온검지2(OTD2) (Car6)', 'M3', 'C', 'VVVF-Stack 과온검지2(OTD2)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT32의 Bit2 “OTD2” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 '스택과온검지2' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동이 되지 않으며 중고장으로 처리됨. +3) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치 냉각기의 온도가 105도 이상인 조건에서 검지.', '1) 추진제어장치 리셋으로 고장 소거됨.', '1) 상기고장이 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 냉각기의 손상이 없는지 확인한다. +3) 추진제어장치 내부에 IPM에 손상이 없는지 확인한다. +4) 인버터 유닛 내부에 온도센서 및 결선에 이상이 없느지 확인한다. +5) DIN 보드의 동작상태를 시험기를 통해 확인한다. +6) IPM 전원공급기의 전원연결상태 또는 광케이블의 연결상태와 배선상태를 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.656536+00', null, '다대48량(2015)', 'Rotem'), ('1f609d25-d4bd-4bd2-9d6a-1a0728730330', '0141', '141', 'VVVF#7 - 제어전원전압 이상(PWM1) (CLVD_P1)', 'M4', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('1f670b06-398b-4d21-a4f5-f7eab92dc7e3', '0510', '510', 'DCU#4 4위(L2) - 출입문 닫힘 리미트 스위치1 고장', 'T1', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 “DCS1 Failure(Leftt)” 신호가 “1”이 되면 검지 +', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('1f7befcd-ed64-4939-ac46-b105fd3512de', '0515', '515', 'DCU#8 3위(R2)-출입문 열림 시간 초과', 'Tc2', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 "Open time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 열림 동작시간이 6초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도 한 후, '장애물로 인한 열림실패' 고장과 함께 'Open time out' 고장이 함께 현시', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1f7ffc3a-d004-4151-875f-03bbb1308aa9', '0903', '903', '비상인터폰 동작(Car#5 - 2)', 'T2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('1f94cdaf-a306-4965-ad7c-f535a3f63d4c', '0513', '513', 'DCU#4 4위(L2) - 모듈 상태체크 에러', 'T1', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 “Module check error” 신호가 “1”이 되면 검지 +', 'Modulecheckerror현시(출입문은 정상작동가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태 체크 기능에 이상이 생긴 경우 고장 발생 +', 'DCU의 ‘A' 모듈과 ‘B' 모듈 간, 상태 체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('1fa2aae3-0bbe-4257-88f3-d407472ba1d4', '0517', '517', 'DCU#4 2위(L1)-출입문 장애물로 인한 열림 실패', 'T1', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Open failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘상태로 대기', '도어 열림 중 3회 장애물 감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 열림 시, 장애물 감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1fa5e742-570e-4ce8-a19a-a29c3a5521e8', '0504', '504', 'DCU#2 6위(L3)-출입문 외부비상핸들 취급(EAD)', 'M1', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1fd9fc91-bd55-48a7-b17e-a3cda4c4adb7', '0703', '703', 'HVAC#7 - 냉난방장치1 압축기2 과부하', 'M4', 'C', 'HVAC-냉난방장치1 압축기2 과부하', 'C', 'HVAC', 'HVAC 냉방 작동 중 냉난방장치1 압축기2 또는 응축기2 모터에 과부하 발생 +', '냉방 기능 저하(전냉방 시 반냉방으로 작동)', ' +1) 냉방 작동 중 UNIT1의 압축기2 또는 응축기2 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRCM2와 연결된 THR2가 Trip 됨. +', 'UNIT1의 압축기2 또는 응축기2 모터의 과부하조건을 해소하여 정상 가능 상태로 만들고, THR2 및 마이콤 전원 리셋', '1) 냉난방 배전반의 점검커버를 열고, THR2의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR2의 전류 세팅값이 11.5A에 맞춰져 있는지 확인하여, 아닐 경우, (+) 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동시킨 후, THR2의 2차측 2, 4, 6 단자에서 각 단자 간 상간 전압이 AC 380V로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 압축기 및 응축기 단품 상태에서 점검을 한다. +7) THR2의 2차측 2, 4, 6 단자에서 각 단자 간 권선저항이 모두 같은지 확인한다. (±10% 이하) (압축기2 및 응축기2 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT1의 압축기1 또는 응축기1 모터의 결선을 해제한 후 각 부품의 권선저항을 확인 후, 문제가 있는 부품을 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR2 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('1fdeb3a4-589a-4288-8ce5-8707fd4b24a4', '1505', '1505', '기타장치용 AC 회로차단기 차단(Car8)', 'Tc2', 'W', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1fefe5b3-89e1-401c-8c11-644e70ca2638', '1519', '1519', 'TU 모듈고장 - DIM3(Car3)', 'M2', 'C', 'TU 모듈고장 - DIM3', 'C', 'TCMS', 'TU의 DIM3 PCB가 이 정상적으로 인식되지 않아 점검이 필요할 때 +', '1) TU의 DIM3 PCB가 모듈 고장이 발생하면, 해당 TU의 모든 디지털 데이터 입력 동작인식 불가 +2) 해당 TU가 M1 차량 인 경우 판토상태 갱신 불가 +3) 해당 TU가 T1차량 인 경우 연장급전상태 갱신 불가', 'TU DIM3의 ID를 정상적으로 검출하지 못할 때 화면에 현시 +', 'TU DIM3의 ID를 정상적으로 검출하는 경우 소거됨', '1) TU의 DIM3 PCB 교체 +2) 불량 해소가 되지 않을 경우, 순차적으로 SCM, AUX PCB를 교체하여 정상여부 확인', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('1ff47999-9d86-4815-80fd-4bb4081c584b', '0505', '505', 'DCU#1 2위(L1)-출입문 입력 고전압', 'Tc1', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 "1"이 되면 검지.', '고전압 상태. (그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('1ffe2019-f9f7-458f-a0b6-2377799a74da', '0746', '746', 'HVAC#3 - 전자접촉기 배기팬1(CRVF) 고장', 'M2', 'C', 'HVAC-전자접촉기 배기팬1(CRVF) 고장', 'C', 'HVAC', 'HVAC 환기 작동 중 CRVF1 전자접촉기 고장 발생 +', '환기 시 차량 배기팬1 운전 불가능', '환기 작동 중 2.5초 이상 동안 CRVF1 작동 feedback 신호가 수신되지 않는 경우 +', 'CRVF1 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CRVF1을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRVF1과 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('200ef136-fe57-4668-a6be-8d859d60103a', '0221', '221', 'BECU#8 - 제동력부족(ISBD)', 'Tc2', 'B', 'BECU-제동력부족(ISBD)', 'B', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit5 “ISBD” 신호가 “1”이 되면 검지 +', '해당 차량 제동력 부족 검지 현시 및 해당 차량 제동압력(BCP)이 타차량에 비해 현저히 낮음.', '제동 7단 취급 시 해당 차량의 제동압력이 생성되지 않음. +', '제동 7단 취급 시 정상적인 제동압력이 생성된 경우 소거', 'MCS 모드로 전환 후, 마스콘을 N(중립) → 제동 7단까지 수 회 취급하여 소거 여부 확인, 제동 취급 확인 후, 주의 운전할 것, 지속발생 시 관제보고하고 지시에 따를 것', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('20167504-2ace-46a2-8d2f-5f7f63fb458b', '0504', '504', 'DCU#3 3위(R2) - 출입문 외부 비상핸들 취급(EAD)', 'M2', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('201f0711-3f07-40a2-a30c-0cae2d093305', '1753', '1753', 'EVR#1 메모리 이상', 'Tc1', 'C', 'EVR#1 메모리 이상', 'C', 'EVR', 'EVR의 메모리에 데이터 저장이 안 될 경우 경고 +', 'EMPU 전면의 ERR LED가 붉은색으로 점등', 'CPM에 데이터 저장이 실패한 경우 +', '없음.', 'EMPU 전면 Reset 버튼을 눌러 재기동, 재기동 후 동일 증상 발생 시 케이블 연결 상태 확인 후 Reset 지속 발생 시 CPM 교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2040f109-e682-493b-a918-7042b9995f1a', '0520', '520', 'DCU#6 1위(R1)-이중계 절체 동작', 'M3', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 "Module switchover' 신호가 "1"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('20443566-fc68-4289-953f-6976ad008c1b', '0142', '142', 'VVVF#3 - 배터리 전원저하(P100LVD)', 'M2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('204a5a20-be97-4241-9847-a3d97119c137', '0520', '520', 'DCU#3 2위(L1)-이중계 절체 동작', 'M2', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 "Module switchover' 신호가 "1"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.392739+00', null, '로템40량(2018)-1단계', 'Rotem'), ('204aafe4-171d-4860-b211-7d84149915ae', '0736', '736', 'HVAC#8-전자접촉기 압축기(CRCM)1 고장', 'Tc2', 'C', 'HVAC-전자접촉기 압축기(CRCM)1 고장', 'C', 'HVAC', 'HVAC 냉방작동 중 CRCM1 전자접촉기 고장 발생.', '냉방 기능 저하(전냉방시 반냉방으로 작동)', '냉방작동 중 2.5초 이상동안 CRCM1 작동 feedback 신호가 수신되지 않는 경우', 'CRCM1 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CRCM1을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRCM1과 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('204f0130-3fd9-4fc4-b379-c7865e0eb411', '0515', '515', 'DCU#7 1위(R1) - 출입문 열림 시간 초과', 'M4', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 “Open time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 열림 동작시간이 6초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도한 후, ‘장애물로 인한 열림 실패' 고장과 함께 ‘Open time out' 고장이 함께 현시 +', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('204f5b91-8113-4b7f-abaa-c7e05afa213a', '0515', '515', 'DCU#4 6위(L3) - 출입문 열림 시간 초과', 'T1', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 “Open time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 열림 동작시간이 6초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도한 후, ‘장애물로 인한 열림 실패' 고장과 함께 ‘Open time out' 고장이 함께 현시 +', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2055e620-2997-4ee6-9cd4-71a1520e4c03', '1513', '1513', 'CU1 모듈고장 - SCM1(Car8)', 'Tc2', 'C', 'CU1, 2 모듈고장 - SCM1', 'C', 'TCMS', 'CU의 SCM1 PCB가 이 정상적으로 인식되지 않아 점검이 필요할 때 +', '1) CU1의 SCM1 PCB가 모듈 고장이 발생하면, CU2로 자동 절체됨. (CU2로 자동 절체되면 운행 에는 지장이 없음) +2) CU2 자동 절체 시 화면의 우측 상단 경고장글자 하단에 “B.SYS” 라는 표시가 나타남. +3) 자동절체 시 열차 운행에는 관계없음. +4) CU2의 SCM1 모듈고장 시는 CU1 정상동작시 운행에는 지장이 없음.', 'CU SCM1의 ID를 정상적으로 검출하지 못할 때 화면에 현시 +', 'CU SCM1의 ID를 정상적으로 검출하는 경우 소거됨.', '1) CU의 SCM1 PCB 교체(SCM1 PCB의 설정 스위치 확인) +2) 불량 해소가 되지 않을 경우, 순차적으로 MCPU, DIM, AUX PCB를 교체하여 정상여부 확인', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('205c0079-8ad2-4ab6-8140-9bfc743b4a4f', '1200', '1200', 'FDU#2 통신고장', 'M1', 'B', 'FDU 통신고장', 'B', 'FDU', 'FDU와 TCMS 간 RS485 통신고장이 검지되면 발생 +', '화면상 FDU의 화재검지신호 등의 데이터가 반응하지 않음.', 'FDU 통신고장 또는 통신케이블문제 +', 'TCMSSDR 신호에 의해 FDU로부터 SD 신호가 정상 수신된 경우', '1) FDU 및 TCMS의 전원을 리셋하여 소거여부 확인 +2) 통신 고장이 발생하지 않은 다른 차량의 수신기와 교체하여 소거 여부 확인(고장이 수신기를 따라가는지 확인) +3) TCMS와 FDU간의 통신계통 점검 및 FDU NFB 점검 +4) 문제가 지속될 경우, 수신기 교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('205fc1a0-6fd3-4a78-b397-98e1e21cba4e', '0221', '221', 'BECU#1 - 제동력부족(ISBD)', 'Tc1', 'B', 'BECU-제동력부족(ISBD)', 'B', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit5 “ISBD” 신호가 “1”이 되면 검지 +', '해당 차량 제동력 부족 검지 현시 및 해당 차량 제동압력(BCP)이 타차량에 비해 현저히 낮음.', '제동 7단 취급 시 해당 차량의 제동압력이 생성되지 않음. +', '제동 7단 취급 시 정상적인 제동압력이 생성된 경우 소거', 'MCS 모드로 전환 후, 마스콘을 N(중립) → 제동 7단까지 수 회 취급하여 소거 여부 확인, 제동 취급 확인 후, 주의 운전할 것, 지속발생 시 관제보고하고 지시에 따를 것', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2075521a-0077-47ac-8a76-19cdf890ff7e', '1504', '1504', '냉방장치용 AC 회로차단기 차단(Car4)', 'T1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('20789e59-bf0e-456f-97d6-60beff2b18bd', '1109', '1109', 'PSD#8-차상 메모리고장(2계)', 'Tc2', 'C', null, null, 'PSD', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('20796f2f-622f-4738-a5a5-c3ad2ba941f1', '0727', '727', 'HVAC#2-배기팬1 과부하', 'M1', 'C', 'HVAC-배기팬1 과부하', 'C', 'HVAC', 'HVAC 환기작동 중 차량 배기팬1 모터에 과부하 발생.', '환기 시 차량 배기팬2 운전 불가능', '1) 냉방작동 중 챠량 배기팬1 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRVF1와 연결된 THR9가 Trip 됨.', '차량 배기팬1 모터의 과부하 조건을 해소하여 정상 가능 상태로 만들고, THR9 및 마이콤 전원 리셋', '1) 냉난방배전반의 점검커버를 열고, THR9의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR9의 전류 세팅값이 2.5A에 맞춰져 있는지 확인하여, 아닐 경우, 십자 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동 시킨 후, THR9의 2차측 2,4 단자와 6 단자 사이의 전압이 DC 100V으로 정상 측정되는지 확인한다. +5) 만약 전압이 측정되지 않을 시, 전원이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, THR9 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('208ded12-08b5-45d8-a32b-2110b8e1180e', '0503', '503', 'DCU#6 1위(R1) - 출입문 내부 비상핸들 취급(EED)', 'M3', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('20a42ba5-275b-463e-9e0e-d8d02ed43623', '0750', '750', 'HVAC#3-냉난방장치2 보조히터 과열', 'M2', 'C', 'HVAC-냉난방장치2 보조히터 과열', 'C', 'HVAC', 'HVAC2 보조난방기 작동 중 과열 발생.', 'UNIT2 보조난방기 난방 불가', '보조난방기 작동 중 1초 이상동안 온도가 70도 이상으로 과온센서 정상 신호가 수신되지 않는 경우', '1초 이상동안 60도 미만으로 온도가 떨어져 과온센서 정상 신호가 수신되는 경우', '1) 보조난방기가 꺼진 상태에서도 문제 발생 시, 과온 센서를 교체한다. +2) 센서 교체 후에도 문제가 발생되면, 배선에 문제가 없는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('20a93045-6d33-4e23-aa62-a31c20d227c3', '0518', '518', 'DCU#5 1위(R1) - 출입문 Enable 신호 에러', 'T2', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 “Enable signal error” 신호가 “1”이 되면 검지 +', 'DCU 출입문Enable신호에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드 시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을 때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드 시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입 상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호 장치로부터의 출입문 열림 명령 신호) 취급 시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함. +', '해당 출입문 enable 신호수신', '1) AUTO/MCS 모드 시에는 YARD 모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인 한다. (YARD/FMC 모드 시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('20aeeccf-09de-4403-a408-4785e19f3f5b', '0517', '517', 'DCU#6 5위(R3) - 출입문 장애물로 인한 열림 실패', 'M3', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Open failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘 상태로 대기', '도어열림 중 3회 장애물감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 열림 시, 장애물감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('20b046aa-3ea6-4b9c-9030-4f9fe303d6ca', '0082', '82', '화재검지(Car5)', 'T2', 'W', null, null, 'FDU', null, null, null, null, null, null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('20b5cf97-5409-4c46-a5a0-1212bd2cc05a', '0511', '511', 'DCU#6 2위(L1)-출입문 닫힘 리미트 스위치2 고장', 'M3', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 "DCS2 Failure(Right)” 신호가 "1"이 되면 검지.', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('20bb9247-79b3-4e59-9fa1-93993bfe7601', '0170', '170', 'VVVF#3-보호동작 설정치 이상검지(SETERR)', 'M2', 'C', 'VVVF-보호설정치 이상(SETERR)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT33의 Bit3 “SETERR” 신호가 "1"이 되면 검지.', null, '제어기 내부 보호동작 기준 설정값에 이상이 있을 때 고장검지', '동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) PUZ 보드 전면의 SELECT 스위치와 DATA스위치가 모두 0임을 확인한다. +2) TCU(통합제어장치) 및 PWM 보드를 분리하고 추진제어장치 시험기를 이용하여 제어기 시험을 실시하여 이상여부를 확인한다. +3) 추진장치 시험기 결과를 확인하여 이상이 있을 경우 교체한다.', null, '3', '2025-10-12 01:21:37.578803+00', null, '로템40량(2018)-1단계', 'Rotem'), ('20bdad22-e3cf-4406-9803-0400a1593332', '0510', '510', 'DCU#1 3위(R2) - 출입문 닫힘 리미트 스위치1 고장', 'Tc1', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 “DCS1 Failure(Leftt)” 신호가 “1”이 되면 검지 +', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('20c79c54-4780-4922-bf27-fa52d627bb39', '1403', '1403', 'BMS#8 - 배터리 저전압(BUV, 77V 이하)', 'Tc2', 'W', 'BMS-배터리 저전압(BUV, 77V 이하)', 'B', 'BMS', '해당 차량의 배터리 전압이 77V 이하가 되면 검지 +', '차량 배터리 저전압 검지', '배터리 저전압(77V 이하) +', '배터리 전압 회복', '1) 충전 전압 확인 +2) 배터리 NFB 상태 확인 +3) 이상이 없으면 차량 전체를 리셋한다. +4) 차량 리셋 후에도 동일고장이면 사령실과 연락하여 조치를 취한다. (외부 충전기 연결 또는 차량 지원)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('20d37d4c-9aa8-48ce-b24e-f13115b1a4bf', '0176', '176', 'VVVF#2 - LB1 고착(LB1NO)', 'M1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('20e37d2d-e882-46b5-8edc-191c312d3f4d', '0232', '232', 'BC 코크(차하#2) 차단(Car6)', 'M3', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('20e4d996-1c46-43eb-91af-f486d3012b88', '0504', '504', 'DCU#1 3위(R2)-출입문 외부비상핸들 취급(EAD)', 'Tc1', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('20e9a6d0-84ab-40fb-bc5a-18e0de4a339c', '0712', '712', 'HVAC#5-냉난방장치2 압력스위치1(DPS) 고압', 'T2', 'D', 'HVAC-냉난방장치2 압력스위치1(DPS) 고압', 'D', 'HVAC', '냉난방장치2 냉매 압력스위치1 고압 발생.', 'UNIT2 CYCLE1 냉방 기능 불가', 'UNIT2 DSP1측 냉매 압력이 3초 이상 28±1(kgf/cm2) 이상 되는 경우', '냉매 압력이 정상 수치 15±0.7(kgf/cm2 이하로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CRCM3의 부하측 전류를 측정하여 응축기 팬의 동작여부를 확인한다. +2) 응축기 코일의 전면에 이물질로 인한 막힘이 있는지 확인한다. +3) 응축기 팬 상부 그릴에 외부 이물질로 인한 막힘이 있는지 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('20f9375f-838f-4215-9efe-b486f48f156c', '0418', '418', 'SIV#1-FC 1, 2 언밸런스 고장(FC12UB)', 'Tc1', 'C', 'SIV-FC1,2 언밸런스 고장(FC12UB)', 'C', 'SIV', '보조전원장치(SIV)의 RS485 데이터 중 SIV-TCMS SD TEXT6의 Bit3 “FC12UB” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 'SIV FC1,2 언밸런스 고장' 표시됨. +2) 보조전원장치(SIV)는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 보조전원장치(SIV) 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 보조전원장치(SIV) 상태 붉을색으로 표기되며, 연장급전 됨.', '보조전원장치(SIV) 내부 FC 1, 2의 전압차이가 500V 이상일 경우 검지됨.', '1) 경고장이 발생할 경우 보조전원장치(SIV) 자동 재기동에 의해 재기동 됨. +2) 중고장이 발생했을 경우 조치 완료 후 보조전원장치(SIV) 리셋으로 고장 소거됨.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 보조전원장치(SIV) 고장기록을 수집하여 FC전압에 이상이 있는지 확인한다. +3) 보조전원장치(SIV) 내부 고전압부에 소손흔적이 있는지 확인한다. +4) FC에 연결된 버스바의 체결상태가 양호한지 확인한고, 버스바를 분리하여 FC의 Capacitance를 측정하여 이상이 없는지 확인한다. +5) 인버터 내부 구성품의 상태 및 광케이블 상태, 결선상태를 확인한다. +6) 전압센서와 보조전원장치(SIV) 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +7) SEN 보드의 동작상태를 시험기를 통해 확인한다. +8) 출력단 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +9) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('21036649-46fb-43f7-96d5-4cd2d8b466f5', '0719', '719', 'HVAC#8-실내온도 센서2 고장', 'Tc2', 'C', 'HVAC-실내온도 센서2 고장', 'C', 'HVAC', '객실 실내온도 센서2 고장 발생', '실내온도 센서2 고장현시', '온도센서 검지범위는 -45~85도 (820~1330옴) 인데, 2초 이상 검지범위를 벗어나는 경우', '온도센서 검지 값이 2초 이상 허용온도 범위 내 일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820~1330옴 을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우, 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('210777b0-3936-4efe-ab50-ea914bcde399', '0139', '139', 'VVVF#7 - INV ARM 단락(CFD)', 'M4', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('210876c0-4006-4761-95b3-5bead99c553a', '0520', '520', 'DCU#3 6위(L3)-이중계 절체 동작', 'M2', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 "Module switchover' 신호가 "1"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.392739+00', null, '로템40량(2018)-1단계', 'Rotem'), ('21153c59-fdbd-49d7-b05b-bde1bfe54859', '0519', '519', 'DCU#5 3위(R2)-ZVR 신호 에러', 'T2', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 "ZVR signal error” 신호가 "1"이 되면 검지.', '출입문이 강제로 닫히게 되고, 열림은 불가능', '1) 차량 ZVR 신호가 없는 상태 (차량 주행상태) 에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함.', '해당출입문 ZVR 신호 수신', '1) 차량이 주행중이라면, 차량이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.392739+00', null, '로템40량(2018)-1단계', 'Rotem'), ('211ed96b-8d52-45fb-8ed3-e22cfebd33cf', '0734', '734', 'HVAC#8-전자접촉기 압축기(CRCM)3 고장', 'Tc2', 'C', 'HVAC-전자접촉기 압축기(CRCM)3 고장', 'C', 'HVAC', 'HVAC 냉방작동 중 CRCM3 전자접촉기 고장 발생.', '냉방 기능 저하(전냉방시 반냉방으로 작동)', '냉방작동 중 2.5초 이상동안 CRCM3 작동 feedback 신호가 수신되지 않는 경우', 'CRCM3 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CRCM3을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRCM3과 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('212ebf74-62ac-4e48-9c90-108d099ffe83', '1509', '1509', '열차분리#1 검지(Car4)', 'T1', 'B', '열차분리#1 검지', 'B', 'TCMS', '차량의 열차분리#1 검지 +', '1) 1위측 열차검지신호(SOTS1) 검출 시 화면에 현시 +2) 실제 열차분리 시 검지되었는지 확인 필요 +(실제 열차분리 시 다른 차량 이 접근하지 못하도록 선조치 필요) +3) 실제 열차 분리 시 비상제동 안전루프에 의해 비상제동 체결됨. +4) 열차 분리에 따라 분리 위치부터 차량제어장치(TU)와 반대편 편성제어장치(CU)의 통신고장 동반 발생', 'TU의 1위측 열차분리신호(SOTS1) 신호 활성(LOW) 입력 시 고장 현시 +', 'TU의 1위측 열차분리신호(SOTS1) 신호 정상(HIGH) 입력 시 소거됨.', '1) 실제 열차분리 시 관제에 연락하고, 지시에 따름 +2) 회로 차단기 ELCB ON 상태 확인 +3) TU의 1위측 열차분리신호 DIM3 PCB의 입력채널(SOTS +1) 점검/교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('213420ea-46e5-4738-b947-33f13f2566a7', '0702', '702', 'HVAC#3 - 냉난방장치2 압축기1 과부하', 'M2', 'C', 'HVAC-냉난방장치2 압축기1 과부하', 'C', 'HVAC', 'HVAC 냉방 작동 중 냉난방장치2 압축기1 또는 응축기1 모터에 과부하 발생 +', '냉방 기능 저하(전냉방 시 반냉방으로 작동)', ' +1) 냉방 작동 중 UNIT2의 압축기1 또는 응축기1 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRCM3과 연결된 THR3이 Trip 됨. +', 'UNIT2의 압축기1 또는 응축기1 모터의 과부하조건을 해소하여 정상 가능 상태로 만들고, THR3 및 마이콤 전원 리셋', '1) 냉난방 배전반의 점검커버를 열고, THR3의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR4의 전류 세팅값이 11.5A에 맞춰져 있는지 확인하여, 아닐 경우, (+) 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동시킨 후, THR3의 2차측 2, 4, 6 단자에서 각 단자 간 상간 전압이 AC 380V로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 압축기 및 응축기 단품 상태에서 점검을 한다. +7) THR3의 2차측 2, 4, 6 단자에서 각 단자 간 권선저항이 모두 같은지 확인한다. (±10% 이하) (압축기1 및 응축기1 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT2의 압축기1 또는 응축기1 모터의 결선을 해제한 후 각 부품의 권선저항을 확인 후, 문제가 있는 부품을 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR3 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2136573e-610e-453d-a318-dda76e4f67aa', '0517', '517', 'DCU#3 3위(R2)-출입문 장애물로 인한 열림 실패', 'M2', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Open failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘상태로 대기', '도어 열림 중 3회 장애물 감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 열림 시, 장애물 감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('21522685-bf30-4d13-8276-1a1d10174db3', '1408', '1408', 'BMS#1-충전과전류(OCC, 충전150A이상)', 'Tc1', 'D', 'BMS-충전과전류(OCC)', 'D', 'BMS', '해당차량의 충전 전류가 105A이상이 되면 검지', '차량 배터리 충전과전류 검지 후, 110A 이상이면 충전 접촉기(CK)가 차단된다.', '배터리 충전과전류 (105A 이상).', '배터리 충전 전류 정상범위로 회복 (0~100A)', '1) 배터리 NFB 상태 확인 +2) 이상이 없으면 차량 전체를 리셋한다. +3) 차량 리셋 후에도 동일고장이면 사령실과 연락하여 조치를 취한다 (외부 방전기 연결 또는 차량 지원)', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('216304cc-7f1e-413b-bd87-72e05d0d6322', '0103', '103', 'VVVF#2 - 추진차단(P BLOCK)', 'M1', 'D', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('21720725-ca19-4d70-abd3-f5ac3df76afc', '0517', '517', 'DCU#7 1위(R1)-출입문 장애물로 인한 열림 실패', 'M4', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Open failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘상태로 대기', '도어 열림 중 3회 장애물 감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 열림 시, 장애물 감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('21728165-70c9-415e-becb-55fd5838e11d', '0521', '521', 'DCU#8 5위(R3)-모듈 상태 이상', 'Tc2', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 "01"또는 "00"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('217e5f58-bc83-497e-9506-e307e6f3421e', '0727', '727', 'HVAC#6-배기팬1 과부하', 'M3', 'C', 'HVAC-배기팬1 과부하', 'C', 'HVAC', 'HVAC 환기작동 중 차량 배기팬1 모터에 과부하 발생.', '환기 시 차량 배기팬2 운전 불가능', '1) 냉방작동 중 챠량 배기팬1 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRVF1와 연결된 THR9가 Trip 됨.', '차량 배기팬1 모터의 과부하 조건을 해소하여 정상 가능 상태로 만들고, THR9 및 마이콤 전원 리셋', '1) 냉난방배전반의 점검커버를 열고, THR9의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR9의 전류 세팅값이 2.5A에 맞춰져 있는지 확인하여, 아닐 경우, 십자 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동 시킨 후, THR9의 2차측 2,4 단자와 6 단자 사이의 전압이 DC 100V으로 정상 측정되는지 확인한다. +5) 만약 전압이 측정되지 않을 시, 전원이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, THR9 부품을 교체한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('21841cf4-51d5-48ea-a507-7b88fbeb27cc', '0509', '509', 'DCU#6 1위(R1)-출입문 잠김 리미트 스위치 고장', 'M3', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 "DLS Failure” 신호가 "1"이 되면 검지.', '출입문 잠김 상태 확인 불가', '1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('218461a2-c0eb-443b-8249-545a19f7805b', '0228', '228', 'BC 코크(차하#1) 차단(Car4)', 'T1', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('21851979-7f04-470b-a748-2da9a9864643', '0204', '204', 'BECU#5-응하중 비정상', 'T2', 'C', 'BECU-응하중 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit3 “응하중 비정상” 신호가 "1"이 되면 검지.', '해당 차량 응하중 비정상 검지 현시.', '해당 차량의 응하중 출력이 정상범위를 벗어남.', '해당 차량 응하중 출력이 정상범위로 복귀 시 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('218c74d3-8b4f-441e-bcf0-5db9fb9649ce', '0504', '504', 'DCU#6 6위(L3)-출입문 외부비상핸들 취급(EAD)', 'M3', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('218fc633-d69f-433a-88d2-56a35370a6c0', '0180', '180', 'VVVF#2-MCOK 고착(MCOKNO)', 'M1', 'C', 'VVVF-MCOK 고착(MCOKNO)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT34의 Bit5 “MCOKNO” 신호가 "1"이 되면 검지.', null, 'MCOK 개방조건에서 투입상태 유지 시 고장검지.', '동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) 주회로 차단기함 내에 MCOK의 주접점을 확인하여 고착여부를 확인한다. +2) 주회로 차단기함 내에 MCOK의 보조접점을 확인하여 고착여부를 확인한다. +3) 추진제어장치 계전기 유니트에 MCHK1( +2) 계전기 상태를 확인하여 고착여부를 확인한다. +4) 추진제어장치 시험기를 이용하여 TCU(통합제어기) 시험을 실시하여 이상여부를 확인한다. +5) 상기의 점검부분에 이상이 있을경우 관련부품을 교체한다.', null, '3', '2025-10-12 01:21:37.578803+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2190f2b2-09f2-4b98-b73a-ea880f063de6', '0517', '517', 'DCU#8 3위(R2)-출입문 장애물로 인한 열림 실패', 'Tc2', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Open failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘상태로 대기', '도어 열림 중 3회 장애물 감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 열림 시, 장애물 감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('21929ccd-0e96-424d-b398-baec63fb8b83', '0731', '731', 'HVAC#6-냉난방장치1 리턴 센서 고장', 'M3', 'C', 'HVAC-냉난방장치1 리턴 센서 고장', 'C', 'HVAC', '냉난방장치1의 리턴 센서 고장 발생', '냉난방장치1 리턴센서 고장현시', '온도센서 검지범위는 -45~85도 (820~1330옴) 인데, 2초 이상 검지범위를 벗어나는 경우', '온도센서 검지 값이 2초 이상 허용온도 범위 내 일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820~1330옴 을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우, 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2193c4a4-07c5-4fa5-a43f-a92ac562695c', '0823', '823', '출력증폭기#1(AMP) 고장(Car#2)', 'M1', 'C', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2195ba14-f9fe-4428-8845-faf48e4d3c63', '1005', '1005', 'CMSB#8 - 입력 DC 저전압', 'Tc2', 'C', 'CMSB-입력 DC 저전압', 'C', 'CMSB', 'CMSB의 RS485 데이터 중 CMSB-TCMS SD TEXT3의 Bit6 “입력 DC 저전압” 신호가 “1”이 되면 검지 +', '1) TCMS 화면 하단 또는 고장화면에 ‘입력 DC 저전압' 표시됨. +2) 바이패스 모드로 전환되고, CM 기동 시 ‘바이패스 기동'으로 표시됨.', 'CMSB 내 콘덴서(DC-LINK) 충전 전압이 DC 402V 이하일 경우 검지됨. +', '1) 차량 전원 OFF +2) CMSB 내부의 표시기 패널 RESET 버튼 누름', '0) 정상운행 후, 검수고에 입고하여 아래와 같이 조치한다. +1) 상기고장은 고장 소거 후, 재현시험을 진행하여 지속적으로 발생될 경우 아래와 같이 조치한다. +2) 회로 차단기(CMN) 상태를 확인한다. +3) 충전저항 상태를 확인한다. +4) MC 접촉기 동작여부를 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2199fb7b-2618-41a9-b8de-577bb9e168bc', '1503', '1503', '난방장치용 AC 회로차단기 차단(Car6)', 'M3', 'W', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('21a0a8ae-d493-4848-8a73-3a02ce17e1e7', '0824', '824', '비상인터폰#2(PEI) 고장(Car#2)', 'M1', 'C', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('21a4079c-7b8e-4913-80af-f0b471d2f8fe', '0325', '325', 'ATC#8 - ATO PG2 미스 오류', 'Tc2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('21a5cd84-fa34-4f75-ae4b-0bb27036b220', '1207', '1207', 'FDU#4-감지기4 화재감지', 'T1', 'W', 'FDU-감지기4 화재감지', 'W', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 "Detector1 State” 신호가 "11"이 되면 검지.', '화재상태 현시(자동 소거 안됨)', '하기 2가지 조건을 모두 만족하여야 화재신호가 출력 됨(연동모드 동작). +1) 이웃한(앞 혹은 뒤에 위치한) 감지기 중 하나의 감지기라도 주의 혹은 화재상태에 있어야 함. +2) Detector1(해당 감지기)에서 측정된 연기농도가 15% 이상이거나 온도가 65℃ 이상인 경우', '1) FDU의 복귀버튼 조작시 +2) FDU 전원 리셋시', '1) 해당 감지기 위치의 화재 발생 여부 확인 +2) 화재 오 감지일경우 FDU의 복귀버튼 취급 +3) 오감지일경우 감지기의 청소주기 확인(내부 먼지 제거)', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('21aa64cc-50b2-4434-ab6e-2a4e040595a5', '0227', '227', '제동관련 회로차단기 차단(Car6)', 'M3', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('21abc673-99d4-4424-9d24-49f722573879', '0906', '906', '비상인터폰 동작(Car#7-1)', 'M4', 'W', null, null, 'RADIO', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('21ad7042-cd55-477d-ba04-62e67f47925f', '1404', '1404', 'BMS#1-배터리 과전압(BOV, 105V이상)', 'Tc1', 'W', 'BMS-배터리 과전압(BOV)', 'W', 'BMS', '해당차량의 배터리 전압이 105.7V 이상이 되면 검지', '차량 배터리 팩 과전압 검지 후, 106.5V 이상이면 충전 접촉기(CK)가 차단된다.', '배터리 팩 과전압 (105.7V 이하).', '배터리 팩 전압 정상범위로 회복 (75~105V)', '1) 배터리 NFB 상태 확인 +2) 이상이 없으면 차량 전체를 리셋한다. +3) 차량 리셋 후에도 동일고장이면 사령실과 연락하여 조치를 취한다 (외부 방전기 연결 또는 차량 지원)', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('21b0bfe7-0353-45e5-abf9-82990877a145', '0751', '751', 'HVAC#6 - 냉난방장치1 보조히터 과열', 'M3', 'C', 'HVAC-냉난방장치1 보조히터 과열', 'C', 'HVAC', 'HVAC1 보조난방기 작동 중 과열 발생 +', 'UNIT1보조난방기난방불가', '보조난방기 작동 중 1초 이상 동안 온도가 70도 이상으로 과온 센서 정상신호가 수신 되지 않는 경우 +', '1초 이상 동안 60도 미만으로 온도가 떨어져 과온 센서 정상신호가 수신되는 경우', '1) 보조난방기가 꺼진 상태에서도 문제 발생 시, 과온 센서를 교체한다. +2) 센서 교체 후에도 문제가 발생되면, 배선에 문제가 없는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('21b489d2-a211-4402-9be5-f97bbab60ec9', '0148', '148', 'VVVF#3-FC 과전압검지(OVD1)', 'M2', 'C', 'VVVF-FC 과전압검지(OVD1)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT30의 Bit5 “OVD1” 신호가 "1"이 되면 검지.', null, '필터캐패시터의 전압이 2000V 이상 승압 시 고장발생.', '1) 경고장 +역행 고장검지 3초 후 자동 재기동 +제동 제동 OFF시 고장 소거 +2) 중고장 +동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 FC전압에 이상이 있는지 확인한다. +3) 추진제어장치 내부 고전압부에 소손흔적이 있는지 확인한다. +4) FC에 연결된 버스바의 체결상태가 양호한지 확인한고, 버스바를 분리하여 FC의 Capacitance를 측정하여 이상이 없는지 확인한다. +5) 전압센서의 외관 및 단자 체결상태를 확인한다. +6) 추진제어장치 시험기를 이용하여 TCU(통합제어장치)의 이상여부를 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('21b8c8c0-9903-41b7-a718-e737df701a08', '0508', '508', 'DCU#7 2위(L1) - 출입문 모터/인코더 고장', 'M4', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 “Motor / Encoder failure” 신호가 “1”이 되면 +검지 +', '출입문 정상동작 불가', ' +1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우(인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터/인코더 회로 가 손상된 경우 +', '모터/인코더 및 DCU가 정상 상태이고, 전기적 연결 상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있는지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. ※ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. ? DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. ? DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) ? DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('21c1d9c0-6759-4966-950d-b493610b4ac7', '0511', '511', 'DCU#4 6위(L3) - 출입문 닫힘 리미트 스위치2 고장', 'T1', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 “DCS2 Failure(Right)” 신호가 “1”이 되면 검지 +', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('21d2e808-ea18-42c4-b7bd-35220a1379a0', '0513', '513', 'DCU#4 3위(R2) - 모듈 상태체크 에러', 'T1', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 “Module check error” 신호가 “1”이 되면 검지 +', 'Modulecheckerror현시(출입문은 정상작동가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태 체크 기능에 이상이 생긴 경우 고장 발생 +', 'DCU의 ‘A' 모듈과 ‘B' 모듈 간, 상태 체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('21efe64f-13e7-49b0-b4bd-6be4ddb8f12a', '1505', '1505', '기타장치용 AC 회로차단기 차단(Car1)', 'Tc1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('21f4ef17-ad46-48db-ab90-38fb362d1439', '0032', '32', '주간제어기 비상제동 취급', 'Tc1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('22001cb5-d0f1-4f5a-a0ec-103fc6fd7c8a', '1200', '1200', 'FDU#4 통신고장', 'T1', 'B', 'FDU 통신고장', 'B', 'FDU', 'FDU와 TCMS간 RS485 통신고장이 검지되면 발생.', '화면상 FDU의 화재검지신호 등의 데이터가 반응하지 않음.', 'FDU 통신고장 또는 통신 케이블 문제', 'TCMS SDR 신호의 의해 FDU로부터 SD신호가 정상 수신된 경우 +조치조건 : +1) FDU 및 TCMS의 전원을 리셋하여 소거여부 확인 +2) 통신 고장이 발생하지 않은 다른차량의 수신기와 교체하여 소거 여부 확인(고장이 수신기를 따라가는지 확인) +3) TCMS와 FDU간의 통신계통 점검 및 FDU NFB 점검 +4) 문제가 지속될 경우, 수신기 교체', null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2234f872-5712-4f70-848e-5791883a6557', '0515', '515', 'DCU#6 1위(R1) - 출입문 열림 시간 초과', 'M3', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 “Open time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 열림 동작시간이 6초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도한 후, ‘장애물로 인한 열림 실패' 고장과 함께 ‘Open time out' 고장이 함께 현시 +', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('223bc187-b2f0-488a-8388-399b9d29b3ee', '0305', '305', 'ATC#1 - 2계 고장', 'Tc1', 'C', 'ATC-2계 고장', 'C', 'ATC', 'ATC의 RS485 데이터 중 ATC-TCMS SD TEXT7의 Bit4 ~ 7 “ATC/ATO Status” 데이터가 ATC 2계 Bad +상태이면 검지 +', 'MMI에 ATC/ATO1이 빨간색으로 표기되며 관련 고장메시지 현시', ' +1) ATC 시스템 자체 진단테스트 실행 시 하기와 같은 항목에서 비정상상태일 경우 가) 서브랙 내 보드(DI1, 2/DO/Tacho) 존재 유무 체크 +나) 각 장치(DI1, 2/DO/Tacho/ATC/ATO/TWC/MMI)별 통신 상태 확인 다) 보드 동작 상태(Alive 상태) +라) Digital Input 상태 확인(중복입력/무입력) 마) Digital Input/Output Check-back 상태 확인 바) Tachometer 고장검지 확인 +사) 열차길이/휠 사이즈 세팅 확인 +2) ATC-1계 CPU 보드 고장 시 +3) ATC-1계 POWER 보드 고장 시 +', '상기 검지조건 해제 시', '1) 전원스위치CBATC#1, 2OFF → ON하여 복귀 시도 후, 복귀되었는지 확인한다. +2) 1, 2계 동시 고장 시, 완전수동(FMC)전환 운행한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('223c7092-e1d2-4f62-a2d6-dc031e2f5935', '1708', '1708', '노선안내표시기#6 고장(Car8)', 'Tc2', 'C', '노선안내표시기#6 고장', 'C', 'PIC', 'PIC 장치의 노선안내표시기#6이 고장이 났을 때 발생 +', '1) 노선안내표시기 화면 미현시 +2) 노선안내표시기 안내 화면 오현시', '통신고장 +', '통신 재개 시', '1) 이더넷 스위치 링크 확인 +2) 이더넷 케이블 점검 +3) 제어보드 및 전원보드 교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('225b625f-cbd3-49b1-9dd6-a13f2eebb5a1', '0739', '739', 'HVAC#5-전자접촉기 증발기2(CREF) 고장', 'T2', 'C', 'HVAC-전자접촉기 증발기2(CREF) 고장', 'C', 'HVAC', 'HVAC 냉방작동 중 CREF2 전자접촉기 고장 발생.', 'UNIT1 냉방 작동 불가', '냉방작동 중 2.5초 이상동안 CREF2 작동 feedback 신호가 수신되지 않는 경우', 'CREF2 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CREF2를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CREF2와 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('225dcb2d-8855-4560-836e-f75fdbedfbd2', '0328', '328', 'ATC#1-', 'Tc1', '0', null, null, '0', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('225f496a-a9c5-4bb7-88a1-eea458ecf7b8', '0146', '146', 'VVVF#6 - 과온검지1(THDL)', 'M3', 'C', 'VVVF-Stack 과온검지1(THDL)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT30의 Bit3 “THDL” 신호가 “1”이 되면 검지 +', '1) TCMS 화면 하단 또는 고장화면에 ‘스택 과온검지1' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동이 되지 않으며 중고장으로 처리됨. +3) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉은색으로 표기되며, HSCB, LB1, 2 개방되어 동력 손실 발생함.', '추진제어장치 냉각기의 온도가 105도 이상인 조건에서 검지 +', '추진제어장치 리셋으로 고장 소거됨.', '1) 상기고장이 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 냉각기의 손상이 없는지 확인한다. +3) 추진제어장치 내부에 IPM에 손상이 없는지 확인한다. +4) 인버터 유니트 내부에 온도센서 및 결선에 이상이 없는지 확인한다. +5) DIN 보드의 동작 상태를 시험기를 통해 확인한다. +6) IPM 전원공급기의 전원연결 상태 또는 광케이블의 연결 상태와 배선상태를 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지 간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2280a65d-a72a-4ed7-96b4-edbeb1b34071', '0212', '212', 'BECU#5 - 1축 속도신호의 비정상', 'T2', 'C', 'BECU-1축속도신호의 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit3 “1축속도신호의 비정상” 신호가 “1”이 +되면 검지 +', '해당 차량 1축속도신호의 비정상 검지 현시 및 해당 차량 활주제어불가', '해당 차량의 1축속도센서 고장 발생 +', '해당 차량의 1축속도센서가 정상적일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2291d0e1-2b32-4b13-a227-e724ccaadbe6', '0076', '76', '주공기압축기 장시간 기동(Car8)', 'Tc2', 'B', '주공기압축기 장시간 기동(Car8)', 'B', 'CMSB', '차량으로부터 INVERTER RUN for CMSB 또는 BYPASS RUN for CMSB 신호 입력이 12분 이상 지속시', '주공기압축기 장시간 기동', '주공기압축기 12분이상 기동시', '해당 공기관의 누기여부 확인 및 장치 점검', null, null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('22922770-e801-4cf4-b7fe-52804aead13b', '1204', '1204', 'FDU#3-감지기2 고장', 'M2', 'C', 'FDU-감지기2 고장', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 "Detector1 State” 신호가 "10"이 되면 검지.', '감지기 고장상태 현시(자동 소거 안됨)', '1) 감지기로부터 데이터 응답이 없는경우. +2) 감지기로부터 수신된 데이터의 CRC가 맞지 않는경우 +3) 감지기로부터 수신된 데이터의 ID가 송신 ID와 일치하지 않는경우', 'FDU 전원 리셋 후 감지기로부터 정상적으로 데이터가 수신된 경우', '1) FDU 전원 리셋 후 고장 소거 여부 확인 +2) 정상 동작중인 감지기와 위치 교환 후 FDU 전원 리셋 및 고장 상태 확인 +3) 동일한 감지기에서 고장 발생시 감지기 교체 +4) 동일한 위치에서 고장 발생시 감지기 라인 점검', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('22a31d85-d65f-43c0-b110-3c65f9cd4aad', '0500', '500', 'DCU#4 4위(L2) 통신고장', 'T1', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS간 RS485 통신고장이 검지되면 발생.', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐 상태 등의 변화가 없음.', '1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우', '해당차량의 DCU 및 CU/TU 의 전원이 정상상태이고, 통신라인 연결상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜저 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는데도 지속적으로 통순고장이 검지되면, DCU의 X2,X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('22ab4610-1607-4f94-8ed8-01e8f6cff5ea', '0516', '516', 'DCU#8 4위(L2) - 출입문 장애물로 인한 닫힘 실패', 'Tc2', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Close failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림 상태로 대기', '도어 닫힘 중 3회 장애물감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('22b5f7d5-4df3-4f49-a8f6-34bb7a352d11', '0518', '518', 'DCU#5 4위(L2)-출입문 Enable 신호 에러', 'T2', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 "Enable signal error” 신호가 "1"이 되면 검지.', 'DCU 출입문 Enable 신호 에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) 취급시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함.', '해당출입문 enable 신호 수신', '1) AUTO/MCS 모드시에는 YARD모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인한다. (YARD/FMC 모드시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.392739+00', null, '로템40량(2018)-1단계', 'Rotem'), ('22bff532-4712-40cf-836a-8a6e9a7114dd', '1200', '1200', 'FDU#5 통신고장', 'T2', 'B', 'FDU 통신고장', 'B', 'FDU', 'FDU와 TCMS간 RS485 통신고장이 검지되면 발생.', '화면상 FDU의 화재검지신호 등의 데이터가 반응하지 않음.', 'FDU 통신고장 또는 통신 케이블 문제', 'TCMS SDR 신호의 의해 FDU로부터 SD신호가 정상 수신된 경우 +조치조건 : +1) FDU 및 TCMS의 전원을 리셋하여 소거여부 확인 +2) 통신 고장이 발생하지 않은 다른차량의 수신기와 교체하여 소거 여부 확인(고장이 수신기를 따라가는지 확인) +3) TCMS와 FDU간의 통신계통 점검 및 FDU NFB 점검 +4) 문제가 지속될 경우, 수신기 교체', null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('22c13476-b11a-416a-bb61-3581a0bd78cd', '0501', '501', 'DCU#4 2위(L1) - 출입문 차단', 'T1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('22ce248e-da07-4f26-b5eb-3d2343646f04', '0504', '504', 'DCU#7 6위(L3) - 출입문 외부 비상핸들 취급(EAD)', 'M4', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('22d2867e-7ef1-4f88-bb9d-a4e384a4cbe7', '0234', '234', '제동불완해검지(NRBD, Car2)', 'M1', 'B', '제동불완해검지(NRBD)', 'B', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT8의 Bit2 “NRBD” 신호가 “1”이 되면 검지 +', '해당 차량 제동불완해 검지 현시 및 완해 취급하였음에도 불구하고 해당 차량 제동압력 (BCP)이 완해되지 않음.', '제동완해상태(정차제동포함)에서 해당 차량의 제동압력이 완전 배기되지 않음. +', '제동완해상태(정차제동포함)에서 해당 차량의 제동압력이 완전히 배기됨.', '정차하여 강제완해스위치를 취급하여 소거 여부 확인, 제동 완해상태 확인 후 주의 운전할 것, 2 ~ 3회 시도에도 완해불능 시 관제보고하고 지시에 따를 것', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('22dc85f6-fd96-4505-8918-e373061433f1', '0867', '867', '통합제어기(AVC) 문구없음(Car#8)', 'Tc2', 'C', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('22e7f24e-262b-420e-9934-c6ecf9fd72cd', '0829', '829', '실내카메라#3(SCAM) 고장(Car#3)', 'M2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('22f913c1-94ee-48c4-a8f4-6f6bc95a3883', '0228', '228', 'BC 코크(차하#1) 차단(Car1)', 'Tc1', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('22fc46d9-f36e-485e-ad29-b8f1041fbb29', '0205', '205', 'BECU#5 - 회생제동요구 비정상', 'T2', 'C', 'BECU-회생제동요구 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit4 “회생제동요구 비정상” 신호가 “1”이 +되면 검지 +', '해당 차량 회생제동 요구 비정상 검지 현시', '해당 차량의 회생제동 요구 출력이 정상범위를 벗어남. +', '해당 차량 회생제동 요구 출력이 정상범위로 복귀 시 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('22fd4882-2bb9-4bf9-a760-2804d9dcb606', '0504', '504', 'DCU#4 3위(R2) - 출입문 외부 비상핸들 취급(EAD)', 'T1', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('230ab809-803e-4d82-926d-1dea7f3e36c2', '0201', '201', 'BECU#2 - 덤프밸브 고장(후미대차)', 'M1', 'C', 'BECU-덤프밸브고장(후미대차)', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit0 “덤프밸브고장(후미대차)” 신호가 “1”이 +되면 검지 +', '해당 차량 덤프밸브 고장(후미대차)검지 현시 및 해당 차량 활주제어 불가', '해당 차량 후미대차의 덤프밸브가 작동하지 않음. +', '해당 차량 후미대차의 덤프밸브가 정상작동 시 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('23126d66-6442-4423-b698-0f5498456638', '0519', '519', 'DCU#8 6위(L3)-ZVR 신호 에러', 'Tc2', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 "ZVR signal error” 신호가 "1"이 되면 검지.', '출입문이 강제로 닫히게 되고, 열림은 불가능', '1) 차량 ZVR 신호가 없는 상태 (차량 주행상태) 에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함.', '해당출입문 ZVR 신호 수신', '1) 차량이 주행중이라면, 차량이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2316ad22-13f6-4644-8976-8ab4614757fc', '0503', '503', 'DCU#1 1위(R1)-출입문 내부비상핸들 취급(EED)', 'Tc1', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('23244f00-68b5-466a-91c4-14ff2837b098', '0511', '511', 'DCU#6 4위(L2)-출입문 닫힘 리미트 스위치2 고장', 'M3', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 "DCS2 Failure(Right)” 신호가 "1"이 되면 검지.', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('232482e5-d884-4a01-86b5-c0d51a0d195f', '0708', '708', 'HVAC#7 - 냉난방장치1 증발기1 과부하', 'M4', 'C', 'HVAC-냉난방장치1 증발기1 과부하', 'C', 'HVAC', 'HVAC 냉방 작동 중 냉난방장치1 증발기 모터에 과부하 발생 +', 'UNIT1냉방 작동 불가', ' +1) 냉방 작동 중 UNIT1의 증발기 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CREF1과 연결된 THR5가 Trip 됨. +', 'UNIT1의 증발기모터의 과부하조건을 해소하여 정상 가능 상태로 만들고, THR5 및 마이콤 전원 리셋', '1) 냉난방 배전반의 점검커버를 열고, THR5의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR5의 전류 세팅값이 3A에 맞춰져 있는지 확인하여, 아닐 경우, (+) 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동시킨 후, THR5의 2차측 2, 4, 6 단자에서 각 단자 간 상간 전압이 AC 380V로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 증발기 단품 상태 에서 점검을 한다. +7) THR5의 2차측 2, 4, 6 단자에서 각 단자 간 권선저항이 모두 같은지 확인한다. (±10% 이하) (증발기 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT2의 증발기 모터의 결선을 해제한 후 4극 및 6극 모터의 권선저항을 확인 후, 문제가 있을 경우, 증발기 모터를 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR5 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('23248f8b-d412-49de-88ef-5477bf57df4c', '0500', '500', 'DCU#6 6위(L3) 통신고장', 'M3', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS간 RS485 통신고장이 검지되면 발생.', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐 상태 등의 변화가 없음.', '1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우', '해당차량의 DCU 및 CU/TU 의 전원이 정상상태이고, 통신라인 연결상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜저 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는데도 지속적으로 통순고장이 검지되면, DCU의 X2,X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2333579e-0d7a-4784-9c8e-034156205b5a', '0509', '509', 'DCU#8 3위(R2)-출입문 잠김 리미트 스위치 고장', 'Tc2', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 "DLS Failure” 신호가 "1"이 되면 검지.', '출입문 잠김 상태 확인 불가', '1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2338e47f-6d70-4e6c-bc92-ec7f3ba7f3df', '0502', '502', 'DCU#7 4위(L2)-출입문 장애물검지', 'M4', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2343839b-7217-4ee3-bb2f-982786e687c5', '0521', '521', 'DCU#5 5위(R3)-모듈 상태 이상', 'T2', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 "01"또는 "00"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2343fc01-87fe-4f07-bc74-48b370fa1ecd', '0510', '510', 'DCU#4 4위(L2)-출입문 닫힘 리미트 스위치1 고장', 'T1', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 "DCS1 Failure(Leftt)” 신호가 "1"이 되면 검지.', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('234815c1-03a7-47a6-a4b2-07079807f123', '0234', '234', '제동불완해검지(NRBD, Car5)', 'T2', 'B', '제동불완해검지(NRBD)', 'B', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT8의 Bit2 “NRBD” 신호가 “1”이 되면 검지 +', '해당 차량 제동불완해 검지 현시 및 완해 취급하였음에도 불구하고 해당 차량 제동압력 (BCP)이 완해되지 않음.', '제동완해상태(정차제동포함)에서 해당 차량의 제동압력이 완전 배기되지 않음. +', '제동완해상태(정차제동포함)에서 해당 차량의 제동압력이 완전히 배기됨.', '정차하여 강제완해스위치를 취급하여 소거 여부 확인, 제동 완해상태 확인 후 주의 운전할 것, 2 ~ 3회 시도에도 완해불능 시 관제보고하고 지시에 따를 것', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('23492734-b1b6-41dd-bc08-b770a8416ad3', '0517', '517', 'DCU#1 4위(L2) - 출입문 장애물로 인한 열림 실패', 'Tc1', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Open failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘 상태로 대기', '도어열림 중 3회 장애물감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 열림 시, 장애물감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('23492ec2-44f1-4440-a808-30f468e8967c', '0204', '204', 'BECU#7 - 응하중 비정상', 'M4', 'C', 'BECU-응하중 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit3 “응하중 비정상” 신호가 “1”이 되면 검지 +', '해당 차량 응하중 비정상 검지 현시', '해당 차량의 응하중 출력이 정상범위를 벗어남. +', '해당 차량 응하중 출력이 정상범위로 복귀 시 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('235dadd5-d10b-4598-a74c-84f2d3f0fb54', '0520', '520', 'DCU#4 4위(L2) - 이중계 절체 동작', 'T1', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 “Module switchover” 신호가 “1”이 되면 검지 +', '이중계 절체 동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러) 이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A'모듈 및 ‘B'모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('235f639d-c35a-480a-9554-b6246f767848', '0503', '503', 'DCU#7 3위(R2) - 출입문 내부 비상핸들 취급(EED)', 'M4', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('236198b3-3a25-4e18-94d6-08584b667917', '0228', '228', 'BC 코크(차하#1) 차단(Car3)', 'M2', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('237b2529-3105-459f-b3d7-8a636fe3bdac', '0519', '519', 'DCU#3 1위(R1) - ZVR 신호 에러', 'M2', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 “ZVR signal error” 신호가 “1”이 되면 검지 +', '출입문이강제로 닫히게 되고, 열림은 불가능', ' +1) 차량 ZVR 신호가 없는 상태(차량 주행상태)에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함. +', '해당 출입문 ZVR 신호 수신', '1) 차량 이 주행중이라면, 차량 이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2390ac06-6105-4177-aee3-35487dcb1195', '0502', '502', 'DCU#8 6위(L3)-출입문 장애물검지', 'Tc2', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('23a20be2-631d-4245-ada6-151f53408046', '1006', '1006', 'CMSB#1-입력 DC 과전압', 'Tc1', 'C', 'CMSB-입력 DC 과전압', 'C', 'CMSB', 'CMSB의 RS485 데이터 중 CMSB-TCMS SD TEXT3의 Bit7 “입력 DC 과전압” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 '입력 DC 과전압' 표시됨. +2) 바이패스 모드로 전환되고, CM 기동 시 '바이패스 기동'으로 표시됨.', '1) CMSB 내 콘덴서(DC-LINK) 충전 전압이 DC750V 이상 일 경우 검지됨.', '1) 차량 전원 OFF +2) CMSB 내부의 표시기패널 RESET 버튼 누름.', '0) 정상운행 후, 검수고에 입고하여 아래와 같이 조치한다. +1) 상기고장은 고장 소거 후, 재현시험을 진행하여 지속적으로 발생될 경우 아래와 같이 조치한다. +2) 차량전원 AC380V를 확인한다. +3) CMSB 제어기에서 DC_LINK 전압을 오 검지하는지 확인한다.', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('23a65ffb-d66f-4ebe-8c18-91e0683fdcd8', '0213', '213', 'BECU#2-AC 압력센서고장', 'M1', 'C', 'BECU-AC 압력센서 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit4 “AC 압력센서 고장” 신호가 "1"이 되면 검지.', '해당 차량 공기제동장치고장, AC압력센서 고장 검지 현시 및 해당 차량 제동제어 불가.', '해당 차량의 AC압력센서 고장.', '해당 차량의 AC압력센서가 정상일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('23a73067-b48a-4630-aa4e-94e0612225e6', '1400', '1400', 'BMS#8 통신고장', 'Tc2', 'B', 'BMS 통신고장', 'B', 'BMS', 'BMS와 TCMS간 RS485 통신고장이 검지되면 발생.', '화면상 BMS의 배터리 전압 등의 데이터가 반응하지 않음.', 'TCMS 의 데이터를 수신 못함.', 'TCMS의 데이터를 받고, TCMS 에서 BMS 상태 정보가 표시됨.', '1) BMS 보드 교체 +2) TCMS 통신 포트 점검 +3) TCMS와 BMS 간의 통신계통 점검', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('23d7129a-4743-4d9b-9adc-7052253f6cd0', '0318', '318', 'ATC#1 - HCR/TCR 조합 오류', 'Tc1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('23d7e9d4-a971-480c-b62f-7efe2c6fc92c', '0714', '714', 'HVAC#2-냉난방장치1 압력스위치2(DPS) 고압', 'M1', 'D', 'HVAC-냉난방장치1 압력스위치2(DPS) 고압', 'D', 'HVAC', '냉난방장치1 냉매 압력스위치2 고압 발생.', 'UNIT1 CYCLE2 냉방 기능 불가', 'UNIT1 DSP2측 냉매 압력이 3초 이상 28±1(kgf/cm2) 이상 되는 경우', '냉매 압력이 정상 수치 15±0.7(kgf/cm2 이하로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CRCM2의 부하측 전류를 측정하여 응축기 팬의 동작여부를 확인한다. +2) 응축기 코일의 전면에 이물질로 인한 막힘이 있는지 확인한다. +3) 응축기 팬 상부 그릴에 외부 이물질로 인한 막힘이 있는지 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2425bfea-629a-43bf-ade4-353fed19911d', '0504', '504', 'DCU#8 5위(R3) - 출입문 외부 비상핸들 취급(EAD)', 'Tc2', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2434fa9c-bf05-4349-8c4b-620347a44c4c', '0009', '9', 'TU 통신고장(Car4)', 'T1', 'B', 'TU 통신고장(CAR4)', 'C', 'TCMS', 'M,T 차량의 단말장치(TU) 통신고장', '1) 해당 차호의 단말장치(TU)와의 통신불능시 화면에 현시. +2) TU 통신 고장시 해당호차의 VVVF, BECU, DCU, HVAC, FDU 등과의 통신도 불가. +(해당 차량의 출입문 열림/닫힘 정보도 현시 불가하므로 출입문 열림/닫힘 램프로 주의 운행) +3) 2호차(6호차) TU 통신 고장시 판토상승/하강 명령 전달 불가(단, 이미 상승된 판토는 상승 유지됨) +4) 4호차 TU 통신고장시, 연장급전 접촉기 출력이 불가', '1) CU에서 TU의 통신정보를 2초이상 수신받지 못할 경우 해당 고장 현시.', '1) TU가 정상적으로 통신을 재개할 경우 소거됨.', '1) TU 전원차단기 리셋(IFF->ON) 실시 +2) VPS보드의 전원 LED가 정상이라면, 멀티미터로 VPS 보드의 전원출력(5V)를 확인. +3) TU 상단의 커넥터 체결상태를 확인 +4) 상기 항목에 이상이 없을 경우 VARCM 보드를 교체한다.', null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('244b8f83-49b3-49a5-bda6-0dcc3daf51c5', '0013', '13', 'CU S/W 버전 불일치', 'Tc1', 'B', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2453070a-18af-46da-870f-e4b2bb9c4db6', '0209', '209', 'BECU#7 - 4축 속도신호의 비정상', 'M4', 'C', 'BECU-4축속도신호의 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit0 “4축속도신호의 비정상” 신호가 “1”이 +되면 검지 +', '해당 차량 4축속도신호의 비정상 검지 현시 및 해당 차량 활주제어불가', '해당 차량의 4축속도센서 고장 발생 +', '해당 차량의 4축속도센서가 정상적일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('24716260-fe82-4670-9a91-093bc6b4afac', '0516', '516', 'DCU#3 5위(R3) - 출입문 장애물로 인한 닫힘 실패', 'M2', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Close failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림 상태로 대기', '도어 닫힘 중 3회 장애물감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2482900f-d8c7-48d8-9c0e-2f4cb81ae067', '0502', '502', 'DCU#1 4위(L2)-출입문 장애물검지', 'Tc1', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('248af892-1e4f-464b-8fab-26de5b9e6cd4', '0500', '500', 'DCU#4 1위(R1) 통신고장', 'T1', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS간 RS485 통신고장이 검지되면 발생.', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐 상태 등의 변화가 없음.', '1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우', '해당차량의 DCU 및 CU/TU 의 전원이 정상상태이고, 통신라인 연결상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜저 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는데도 지속적으로 통순고장이 검지되면, DCU의 X2,X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('24a8fd00-2bdf-46b4-9948-cf3f3a084a3f', '0500', '500', 'DCU#2 2위(L1) 통신고장', 'M1', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS 간 RS485 통신고장이 검지되면 발생 +', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐상태 등의 변화가 없음.', ' +1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우 +', '해당 차량의 DCU 및 CU/TU의 전원이 정상상태이고, 통신 라인 연결 상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜져 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적 으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는 데도 지속적으로 통신고장이 검지되면, DCU의 X2, X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상 체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('24a97885-0130-41d8-86dc-6c1ea4107d4c', '0509', '509', 'DCU#4 2위(L1)-출입문 잠김 리미트 스위치 고장', 'T1', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 "DLS Failure” 신호가 "1"이 되면 검지.', '출입문 잠김 상태 확인 불가', '1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('24aa2a2f-0f02-47cb-b8bc-d5fbafe83dea', '0176', '176', 'VVVF#3-LB1 고착(LB1NO)', 'M2', 'C', 'VVVF-LB1 고착(LB1NO)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT34의 Bit1 “LB1NO” 신호가 "1"이 되면 검지.', null, 'LB1 개방조건에서 투입상태 유지 시 고장검지.', '동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) 주회로 차단기함 내에 LB1의 주접점을 확인하여 고착여부를 확인한다. +2) 주회로 차단기함 내에 LB1의 보조접점을 확인하여 고착여부를 확인한다. +3) 추진제어장치 계전기 유니트에 LB1R 계전기 상태를 확인하여 고착여부를 확인한다. +4) 추진제어장치 시험기를 이용하여 TCU(통합제어기) 시험을 실시하여 이상여부를 확인한다. +5) 상기의 점검부분에 이상이 있을경우 관련부품을 교체한다.', null, '3', '2025-10-12 01:21:37.578803+00', null, '로템40량(2018)-1단계', 'Rotem'), ('24cfbd61-8dde-4ebf-9a8b-57a8475cfe1f', '0512', '512', 'DCU#2 4위(L2)-파라미터 로딩 실패', 'M1', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 "Paraneter error” 신호가 "1"이 되면 검지.', 'Parameter error 현시 (출입문은 정상작동 가능)', 'DCU 자체내의 EEPROM으로부터 parameter 데이터 로딩 실패', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('24d68484-52c0-4bde-863b-4717f40d0221', '0704', '704', 'HVAC#3-냉난방장치1 압축기1 과부하', 'M2', 'C', 'HVAC-냉난방장치1 압축기1 과부하', 'C', 'HVAC', 'HVAC 냉방작동 중 냉난방장치1 압축기1 또는 응축기1 모터에 과부하 발생.', '냉방 기능 저하(전냉방시 반냉방으로 작동)', '1) 냉방작동 중 UNIT1의 압축기1 또는 응축기1 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRCM1과 연결된 THR1이 Trip 됨.', 'UNIT1의 압축기1 또는 응축기1 모터의 과부하 조건을 해소하여 정상 가능 상태로 만들고, THR1 및 마이콤 전원 리셋', '1) 냉난방배전반의 점검커버를 열고, THR1의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR4의 전류 세팅값이 11.5A에 맞춰져 있는지 확인하여, 아닐 경우, 십자 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동 시킨 후, THR1의 2차측 2,4,6 단자에서 각 단자간 상간 전압이 AC 380V으로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 압축기 및 응축기 단품 상태에서 점검을 한다. +7) THR1의 2차측 2,4,6 단자에서 각 단자간 권선저항이 모두 같은지 확인한다. (±10% 이하) (압축기1 및 응축기1 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT1의 압축기1 또는 응축기1 모터의 결선을 해제한 후 각 부품의 권선저항을 확인 후, 문제가 있는 부품을 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR1 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('24dd3ad7-280a-4d18-9e7f-58ca4b35be90', '0214', '214', 'BECU#6 - BC 압력센서 고장', 'M3', 'C', 'BECU-BC 압력센서 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit5 “BC 압력센서 고장” 신호가 “1”이 되면 검지 +', '해당 차량 BC 압력센서 고장검지 현시 및 해당 차량 제동력부족, 제동불완해 검지 불가', '해당 차량의 BC 압력센서 고장 +', '해당 차량의 BC 압력센서가 정상일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('24ee6ebd-aa75-4a08-9e9e-427a5716fce7', '0161', '161', 'VVVF#2 - 통합제어장치 이상검지(CPUWDTD)', 'M1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('24f0a4f4-7fcc-48a4-8179-22d6be898748', '0507', '507', 'DCU#8 3위(R2)-초기화 실패', 'Tc2', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 "Calibration failure” 신호가 "1"이 되면 검지.', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터고장, 장애물 감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우', '초기화 실패를 야기한 고장 코드를 확인하여 조치 후, 재 닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('250e64c5-0d64-4c8d-909f-62334ad870b7', '1005', '1005', 'CMSB#1-입력 DC 저전압', 'Tc1', 'C', 'CMSB-입력 DC 저전압', 'C', 'CMSB', 'CMSB의 RS485 데이터 중 CMSB-TCMS SD TEXT3의 Bit6 “입력 DC 저전압” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 '입력 DC 저전압' 표시됨. +2) 바이패스 모드로 전환되고, CM 기동 시 '바이패스 기동'으로 표시됨.', '1) CMSB 내 콘덴서(DC-LINK) 충전 전압이 DC402V 이하 일 경우 검지됨.', '1) 차량 전원 OFF +2) CMSB 내부의 표시기패널 RESET 버튼 누름.', '0) 정상운행 후, 검수고에 입고하여 아래와 같이 조치한다. +1) 상기고장은 고장 소거 후, 재현시험을 진행하여 지속적으로 발생될 경우 아래와 같이 조치한다. +2) 회로차단기(CMN) 상태를 확인한다. +3) 충전저항 상태를 확인한다. +4) MC 접촉기 동작여부를 확인한다.', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('25185e85-56b5-49e2-85b5-5d40c68fb3d6', '0173', '173', 'VVVF#6 - 전류센서 이상검지(CTERR)', 'M3', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('25263a6a-6a3b-4695-ada4-185891936786', '0183', '183', 'VVVF#7 - Over Load(OL)', 'M4', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('25363f34-bffd-4b02-935a-803cbfac6cfa', '0501', '501', 'DCU#2 6위(L3) - 출입문 차단', 'M1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('253a232d-52e9-4c01-9891-c89cc8facb8d', '0230', '230', 'ECU 전원공급 고장(Car4)', 'T1', 'B', 'ECU 전원공급 고장', 'B', 'BECU', '해당차량의 ECU 전원공급 고장 (CB OFF) 발생 시 검지', '해당차량의 ECU 전원공급 고장 검지 현시', '해당차량의 ECU 전원차단 (CB OFF)', '해당차량의 ECU 전원공급 (CB ON)', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속적으로 고장 발생시 관제보고하고 지시에 따를 것.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2545c54c-e0b1-4a9d-a7bc-83e613661fd8', '0403', '403', 'SIV#8-AC 출력저전압(ACUV)', 'Tc2', 'C', 'SIV-AC 출력저전압(ACUV)', 'C', 'SIV', '보조전원장치(SIV)의 RS485 데이터 중 SIV-TCMS SD TEXT4의 Bit1 “ACUV” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 'SIV AC 출력저전압 검지' 표시됨. +2) 보조전원장치(SIV)는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 보조전원장치 중고장이 발생됨. +5) 중고장이 발생되면 TCMS 일반화면에 보조전원장치 상태 붉을색으로 표기되며, 연장급전 됨.', '보조전원장치(SIV)에서 출력되는 AC U, V, W 상의 전압이 250V 이하일 경우 검지됨.', '1) 경고장이 발생할 경우 보조전원장치(SIV) 자동 재기동에 의해 재기동 됨. +2) 중고장이 발생했을 경우 조치 완료 후 보조전원장치(SIV) 리셋으로 고장 소거됨.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 보조전원장치(SIV) 고장기록을 수집하여 출력되는 3상의 AC 전압값 확인함. +3) 특정상의 전압치가 비정상적일 경우 특정상에 해당되는 GDU, 전압센서, AC 출력단 결선을 확인한다. +4) 전압센서와 보조전원장치(SIV) 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작상태를 시험기를 통해 확인한다. +6) 출력단 각 상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +7) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('254d9d7c-c3f0-425d-aed6-0a410f8aaf14', '0504', '504', 'DCU#4 5위(R3)-출입문 외부비상핸들 취급(EAD)', 'T1', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('255e8366-2412-4329-8757-5f6db6756996', '0502', '502', 'DCU#1 3위(R2)-출입문 장애물검지', 'Tc1', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('25766ff3-4144-4601-8a6d-8b93acfdd50c', '0510', '510', 'DCU#5 5위(R3)-출입문 닫힘 리미트 스위치1 고장', 'T2', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 "DCS1 Failure(Leftt)” 신호가 "1"이 되면 검지.', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('257a00c8-127c-49dd-84f3-e7f35aa457e9', '0521', '521', 'DCU#2 6위(L3)-모듈 상태 이상', 'M1', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 "01"또는 "00"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('25860a06-6960-4a29-8064-04da93a4e92f', '0210', '210', 'BECU#4 - 3축 속도신호의 비정상', 'T1', 'C', 'BECU-3축속도신호의 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit1 “3축속도신호의 비정상” 신호가 “1”이 되면 검지 +', '해당 차량 3축속도신호의 비정상 검지 현시 및 해당 차량 활주제어불가', '해당 차량의 3축속도센서 고장 발생 +', '해당 차량의 3축속도센서가 정상적일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('258b9380-103b-416b-8f3a-0164b159ca93', '0500', '500', 'DCU#6 4위(L2) 통신고장', 'M3', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS 간 RS485 통신고장이 검지되면 발생 +', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐상태 등의 변화가 없음.', ' +1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우 +', '해당 차량의 DCU 및 CU/TU의 전원이 정상상태이고, 통신 라인 연결 상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜져 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적 으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는 데도 지속적으로 통신고장이 검지되면, DCU의 X2, X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상 체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('258fd7ae-6c1f-467e-92ab-79cc56dff900', '0508', '508', 'DCU#7 5위(R3) - 출입문 모터/인코더 고장', 'M4', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 “Motor / Encoder failure” 신호가 “1”이 되면 +검지 +', '출입문 정상동작 불가', ' +1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우(인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터/인코더 회로 가 손상된 경우 +', '모터/인코더 및 DCU가 정상 상태이고, 전기적 연결 상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있는지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. ※ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. ? DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. ? DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) ? DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('25955515-9ab7-4ceb-8301-1ad0ec16a3b3', '0237', '237', '보안제동코크 차단(Car7)', 'M4', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('25985977-475b-4e46-87d7-e2b8af3754df', '0165', '165', 'VVVF#2-OVT 오동작검지(OVTD)', 'M1', 'C', 'VVVF-OVT 오점호검지(OVTD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT32의 Bit6 “OVTD” 신호가 "1"이 되면 검지.', null, '1) OVT 점호 지령 없는 상태에서 점호되었을 시 고장검지. +2) 1분 이내 3회 발생 시 중고장 발생.', '1) 경고장 +역행 고장검지 2초 후 자동 재기동 제동 제동 OFF시 고장 소거 +2) 중고장 +동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기 고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) OVCT 전류센서의 외관상태 및 저전압 커넥터 체결상태를 확인한다. +3) IGBT 외관에 크랙 또는 폭발흔적이 있는지 확인한다. +4) IGBT의 C-E간 개방상태임을 확인한다. +5) 게이트 드라이버 PCB 기판에 소손, 냉납, 열화 유무 확인. +6) OVCT 커넥터의 P15A1~F15A1의 전압이 +15V, N15A1~F15A1의 전압이 -15V임을 확인한다. +7) 상기의 점검부분에 이상이 있을 경우 관련부품을 교체한다.', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('25a84f73-2532-42e3-b899-795dd1c98a43', '0708', '708', 'HVAC#4 - 냉난방장치1 증발기1 과부하', 'T1', 'C', 'HVAC-냉난방장치1 증발기1 과부하', 'C', 'HVAC', 'HVAC 냉방 작동 중 냉난방장치1 증발기 모터에 과부하 발생 +', 'UNIT1냉방 작동 불가', ' +1) 냉방 작동 중 UNIT1의 증발기 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CREF1과 연결된 THR5가 Trip 됨. +', 'UNIT1의 증발기모터의 과부하조건을 해소하여 정상 가능 상태로 만들고, THR5 및 마이콤 전원 리셋', '1) 냉난방 배전반의 점검커버를 열고, THR5의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR5의 전류 세팅값이 3A에 맞춰져 있는지 확인하여, 아닐 경우, (+) 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동시킨 후, THR5의 2차측 2, 4, 6 단자에서 각 단자 간 상간 전압이 AC 380V로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 증발기 단품 상태 에서 점검을 한다. +7) THR5의 2차측 2, 4, 6 단자에서 각 단자 간 권선저항이 모두 같은지 확인한다. (±10% 이하) (증발기 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT2의 증발기 모터의 결선을 해제한 후 4극 및 6극 모터의 권선저항을 확인 후, 문제가 있을 경우, 증발기 모터를 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR5 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('25b386cc-3f0d-4863-8cb6-5d0806c9746b', '0520', '520', 'DCU#2 2위(L1)-이중계 절체 동작', 'M1', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 "Module switchover' 신호가 "1"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.392739+00', null, '로템40량(2018)-1단계', 'Rotem'), ('25bb2d81-7441-4080-a3df-922bfead8be6', '0513', '513', 'DCU#1 6위(L3)-모듈 상태체크 에러', 'Tc1', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 "Module check error” 신호가 "1"이 되면 검지.', 'Module check error 현시 (출입문은 정상작동 가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태체크 기능에 이상이 생긴 경우 고장 발생.', 'DCU의 'A'모듈과 'B'모듈 간, 상태체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('25ca0ea5-3af6-4566-af67-932d91ba34f3', '0502', '502', 'DCU#1 3위(R2) - 출입문 장애물검지', 'Tc1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('25d91700-82fa-481e-b734-3412f150787a', '0161', '161', 'VVVF#3-통합제어장치 이상검지(CPUWDTD)', 'M2', 'C', 'VVVF-마이컴이상(TCU)(CPUWDTD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT32의 Bit2 “CPUWDTD” 신호가 "1"이 되면 검지.', null, '통합제어기 내 CPU고장에 의한 Watch Dog Timer 카운터 정지시 고장검지.', '동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) 판토 하강상태에서 인버터 재 기동 후 해당 고장 재발여부를 확인한다. +2) 추진제어장치 시험기를 이용하여 TCU(통합제어장치)의 이상여부를 확인한다. +3) 상기 점검부에 이상이 있는 경우 TCU(통합제어장치)를 교체한다.', null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('25df06e0-4bcf-44ed-9bf5-1b0b24cd8995', '0210', '210', 'BECU#8 - 3축 속도신호의 비정상', 'Tc2', 'C', 'BECU-3축속도신호의 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit1 “3축속도신호의 비정상” 신호가 “1”이 되면 검지 +', '해당 차량 3축속도신호의 비정상 검지 현시 및 해당 차량 활주제어불가', '해당 차량의 3축속도센서 고장 발생 +', '해당 차량의 3축속도센서가 정상적일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('25f16dc6-65c4-4e1b-93ec-e3cf33367fe6', '0518', '518', 'DCU#3 4위(L2) - 출입문 Enable 신호 에러', 'M2', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 “Enable signal error” 신호가 “1”이 되면 검지 +', 'DCU 출입문Enable신호에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드 시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을 때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드 시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입 상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호 장치로부터의 출입문 열림 명령 신호) 취급 시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함. +', '해당 출입문 enable 신호수신', '1) AUTO/MCS 모드 시에는 YARD 모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인 한다. (YARD/FMC 모드 시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('25f3b615-7e9a-4118-a826-2dc147f7abc5', '0503', '503', 'DCU#2 4위(L2)-출입문 내부비상핸들 취급(EED)', 'M1', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('25f3fd80-abe5-4601-9959-7309541db648', '0512', '512', 'DCU#3 2위(L1)-파라미터 로딩 실패', 'M2', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 "Paraneter error” 신호가 "1"이 되면 검지.', 'Parameter error 현시 (출입문은 정상작동 가능)', 'DCU 자체내의 EEPROM으로부터 parameter 데이터 로딩 실패', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('25fead65-6f8e-45e8-956c-c7415b0ff9dc', '1515', '1515', 'CU1 모듈고장 - DIM2(Car8)', 'Tc2', 'C', 'CU1, 2 모듈고장 - DIM2', 'C', 'TCMS', 'CU의 DIM2 PCB가 이 정상적으로 인식되지 않아 점검이 필요할 때 +', '1) CU1의 DIM2 PCB가 모듈 고장이 발생하면, CU2로 자동 절체됨. (CU2로 자동 절체되면, 운행 에는 지장이 없음.) +2) CU2 자동 절체 시 화면의 우측 상단 경고장글자 하단에 “B.SYS” 라는 표시가 나타남. +3) 자동절체 시 열차 운행에는 관계없음. +4) CU2의 DIM2 모듈고장 시는 CU1 정상동작 시 운행에는 지장이 없음.', 'CU DIM2의 ID를 정상적으로 검출하지 못할 때 화면에 현시 +', 'CU DIM2의 ID를 정상적으로 검출하는 경우 소거됨.', '1) CU의 DIM2 PCB 교체 +2) 불량 해소가 되지 않을 경우, 순차적으로 MCPU, SCM, AUX PCB를 교체하여 정상여부 확인', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('26259242-a709-4d98-8cbc-65695c9f0bd5', '1752', '1752', 'EVR#1 다운로드 고장', 'Tc1', 'C', 'EVR#1 다운로드 고장', 'C', 'EVR', 'EVR에서 데이터 다운로드가 제대로 되지 않을 때 경고 +', 'EMPU 전면의 ERRLED가 붉은색으로 점등', 'CPM 파일을 EMPU의 전면 USB를 통해 다운로드 기능 수행 중, 데이터 전송이 되지 않는 경우 +', '없음.', '전면 USB 재거 후 Reset 버튼을 눌러 재기동, USB 포맷(FAT32 방식) 후 재진행', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2628591b-f26b-4811-9381-8923ee437455', '0508', '508', 'DCU#5 5위(R3)-출입문 모터/인코더 고장', 'T2', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 "Motor / Encoder failure” 신호가 "1"이 되면 검지.', '출입문 정상동작 불가', '1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우 (인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터 / 인코더 회로가 손상된 경우', '모터/인코더 및 DCU가 정상상태이고, 전기적 연결상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있느지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. +★ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. + +1. DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. +2. DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) +3. DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('262febe9-8832-4900-b534-a1ac567481e9', '0223', '223', 'BECU#4 - 공기스프링 누설(전두대차)', 'T1', 'C', 'BECU-공기스프링누설(전두대차)', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit6 “공기스프링누설(전두대차)” 신호가 “1”이 +되면 검지 +', '해당 차량 공기스프링 누설(전두대차) 검지 현시 및 해당 차량 정상적인제동제어 불가 (응하중제어)', '해당 차량 전두대차의 공기스프링(AS1, AS2) 압력이 정상범위를 벗어남. (100kPa 미만) +', '해당 차량 전두대차의 공기스프링(AS1, AS2) 압력이 정상범위일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('263fa59a-046e-4616-a543-1fde874141ae', '0506', '506', 'DCU#1 1위(R1) - 출입문 입력 저전압', 'Tc1', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 “1”이 되면 검지 +', '저전압상태(출입문 동작이 심하게 느려지거나 작동조차 안 될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하 +', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('264fa43a-64e1-48cc-89a4-7b150134d095', '0173', '173', 'VVVF#7-전류센서 이상검지(CTERR)', 'M4', 'C', 'VVVF-CT 이상검지(CTERR)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT33의 Bit6 “CTERR” 신호가 "1"이 되면 검지.', null, '초기 기동 중 CTU, CTW의 전류값 확인이 안될 시 고장검지.', '동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기 고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 내부에 설치된 출력전류 측정용 전류센서의 외관 및 커넥터 체결상태를 확인한다. +3) PWS보드의 ±15V테스트단자 전압을 측정하여 전압 확인. +4) 육안으로 IGBT의 상태를 확인하여 외관에 손상이 있는지 확인한다. +5) IGBT의 Collector와 Emitter 양단을 멀티테스터를 이용하여 단락여부를 확인한다. +6) 견인전동기 고전압 배선의 결선상태 및 손상유무를 확인한다. +7) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:37.578803+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2656e8de-f56d-4512-9440-a59210b501f5', '0725', '725', 'HVAC#6 - 냉방시험 불가능', 'M3', 'C', 'HVAC-냉방시험 불가능', 'C', 'HVAC', '운전실 TCMS에서 냉방시험 작동을 할 때, 냉방운전이 불가능한 경우 발생 +', '냉방시험 운전 불가능', '실내 또는 실외온도가 10도 미만일 경우(환절기 또는 겨울철에 냉방가동 시 시스템 보호를 위한 온도조건) +', '실내 또는 실외온도가10도 이상일 때, 냉방시험작동', '1) TCMS 화면에서 실내 또는 실외 온도가 10도 미만인지 확인한다. +2) 실내 및 실외 온도가 10도 이상인데도 냉방 가동이 되지 않을 시, TCMS-마이콤 간 통신불량이 있는지 확인하고 조치한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('26728297-969e-4903-975d-4daf35e80b5f', '0500', '500', 'DCU#5 6위(L3) 통신고장', 'T2', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS간 RS485 통신고장이 검지되면 발생.', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐 상태 등의 변화가 없음.', '1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우', '해당차량의 DCU 및 CU/TU 의 전원이 정상상태이고, 통신라인 연결상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜저 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는데도 지속적으로 통순고장이 검지되면, DCU의 X2,X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2676cab5-2914-4038-944c-860c223fb8c6', '0718', '718', 'HVAC#4-CO2 센서1 고장', 'T1', 'C', 'HVAC-CO2 센서1 고장', 'C', 'HVAC', '객실 CO2 센서1 고장 발생', 'CO2 센서1 고장현시', 'CO2 센서의 검지범위는 0~4000ppm (2~10Vdc) 인데, 1초 이상 출력전압이 2Vdc (0ppm) 미만으로 떨어지는 경우', 'CO2 센서 검지 값이 1초 이상 2Vdc (0ppm) 이상 지속되는 경우', '1) 전원을 인가한 상태에서 CO2센서 커버를 열고 테스터기를 통해 'OUT2' 단자와 'G' 단자간의 전압이 2Vdc 미만인지 확인한다. +2) 만약 전압이 2Vdc 이상인데도 고장이 지속될 경우, 마이콤을 교체한다. +3) 만약 전압이 2Vdc 미만으로 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('269aefaf-006b-4563-b5a6-c094af9349fd', '0516', '516', 'DCU#6 2위(L1) - 출입문 장애물로 인한 닫힘 실패', 'M3', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Close failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림 상태로 대기', '도어 닫힘 중 3회 장애물감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('26b0aeca-bdc4-4994-9a9b-9e43ed2a43c4', '0081', '81', '화재검지(Car4)', 'T1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('26b48f43-487d-4409-af4e-9ceac606f9dd', '1706', '1706', '노선안내표시기#4 고장(Car8)', 'Tc2', 'C', '노선안내표시기#4 고장', 'C', 'PIC', 'PIC 장치의 노선안내표시기#4이 고장이 났을 때 발생 +', '1) 노선안내표시기 화면 미현시 +2) 노선안내표시기 안내 화면 오현시', '통신고장 +', '통신 재개 시', '1) 이더넷 스위치 링크 확인 +2) 이더넷 케이블 점검 +3) 제어보드 및 전원보드 교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('26b6f0e6-114e-4ab9-94fc-381105573741', '0809', '809', '중앙제어기(COB) 고장(Car#1)', 'Tc1', 'C', '통합방송표시기-중앙제어기(COB) 고장', 'C', 'AVC', '통합방송표시기의 E-NET 데이터 중 통합방송표시기-TCMS SD TEXT7의 Bit7 “COB 고장” 신호가 +“1”이 되면 검지 +', '고장장치 통신불량으로 수동방송, 홍보방송, 역 안내방송 및 비상통화기능, 운전실 간 통화, 구원통화불능', '마스터통합방송제어기에 주기적(2초) TCP 응답이 없을 경우 통신불량으로 판단 +', '마스터통합방송제어기에 TCP 응답재개', '관련 CB(방송/표시기/CCTV 전원공급장치1, CBPAU# +1) 리셋하고 통신라인 및 상태 점검 관련도면 : RES14001DX0, REC70700DX0', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('26bea7b5-fc38-4513-8def-c556c8b37e81', '0510', '510', 'DCU#2 2위(L1)-출입문 닫힘 리미트 스위치1 고장', 'M1', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 "DCS1 Failure(Leftt)” 신호가 "1"이 되면 검지.', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('26c2ca0f-1a2a-4421-a30b-c48fa168b83c', '1211', '1211', 'FDU#3-체크섬 고장', 'M2', 'C', 'FDU-체크섬 고장', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT5의 Bit7 "Checksum Fault” 신호가 "1"이 되면 검지.', 'Checksum Fault 현시 및 FDU의 정상 동작 불가능', '수신기 펌웨어의 오류로 인한 체크섬 이상(MCU 내부 플래쉬 메모리에 저장된 체크섬과 프로그램의 체크섬 계산값이 다를경우)', 'FDU가 부팅될때 MCU 내부 플래쉬 메모리에 저장된 체크섬과 프로그램의 체크섬 계산값이 같을 경우', '1) FDU의 전원을 리셋하여 소거여부 확인 +2) 문제가 지속될 경우, 수신기 교체', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('26c50732-4c12-4bbd-8523-03c2026a52e9', '0916', '916', 'TRAIN RADIO#1 - 열차번호 변경 설정', 'Tc1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('26e5b807-3a84-4ea1-ae34-8b311a939016', '0520', '520', 'DCU#5 5위(R3) - 이중계 절체 동작', 'T2', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 “Module switchover” 신호가 “1”이 되면 검지 +', '이중계 절체 동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러) 이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A'모듈 및 ‘B'모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('26f1f283-7e09-4bb7-bd41-8a8ebf7ea25f', '0506', '506', 'DCU#7 4위(L2)-출입문 입력 저전압', 'M4', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 "1"이 되면 검지.', '저전안 상태 (출입문 동작이 심하게 느려지거나 작동조차 안될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('26fd6877-090c-4184-9c7a-f3963de3ee36', '1208', '1208', 'FDU#8 - 감지기4 고장', 'Tc2', 'C', 'FDU-감지기4 고장 (Car1~8)', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 “Detector1 State” 신호가 “10”이 되면 검지 +', '감지기고장상태현시(자동소거 안 됨)', ' +1) 감지기로부터 데이터 응답이 없는 경우 +2) 감지기로부터 수신된 데이터의 CRC가 맞지 않는 경우 +3) 감지기로부터 수신된 데이터의 ID가 송신 ID와 일치하지 않는 경우 +', 'FDU 전원 리셋 후 감지기로부터 정상적으로 데이터가 수신된 경우', '1) FDU 전원 리셋 후 고장 소거 여부 확인 +2) 정상동작중인 감지기와 위치 교환 후 FDU 전원 리셋 및 고장 상태 확인 +3) 동일한 감지기에서 고장 발생 시 감지기 교체 +4) 동일한 위치에서 고장 발생 시 감지기 라인 점검', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2700ae27-9b1c-4558-9fb2-2d39cb73aa04', '0521', '521', 'DCU#6 3위(R2)-모듈 상태 이상', 'M3', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 "01"또는 "00"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('27016f92-f0c0-49d4-b20e-2133b044928d', '0225', '225', 'BECU#1-강제완해검지(CPRD)', 'Tc1', 'C', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('270d0bf5-f23e-4349-b8eb-8c545f4184a3', '0512', '512', 'DCU#6 3위(R2) - 파라미터 로딩 실패', 'M3', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 “Paraneter error” 신호가 “1”이 되면 검지 +', 'Parametererror 현시(출입문은 정상작동 가능)', 'DCU 자체 내의 EEPROM으로부터 parameter데이터 로딩 실패 +', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('271df964-e9aa-4288-9c0e-f244ab106498', '0521', '521', 'DCU#4 4위(L2)-모듈 상태 이상', 'T1', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 "01"또는 "00"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2725e1b4-cae6-4421-8e6e-59a38bc4ec92', '0500', '500', 'DCU#3 3위(R2) 통신고장', 'M2', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS 간 RS485 통신고장이 검지되면 발생 +', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐상태 등의 변화가 없음.', ' +1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우 +', '해당 차량의 DCU 및 CU/TU의 전원이 정상상태이고, 통신 라인 연결 상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜져 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적 으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는 데도 지속적으로 통신고장이 검지되면, DCU의 X2, X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상 체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('27261e6d-03df-4335-bb73-a07249650c15', '1406', '1406', 'BMS#8-Cell 과전압(COV, 4,25V이상)', 'Tc2', 'D', 'BMS-Cell 과전압(COV)', 'D', 'BMS', '해당차량의 배터리 셀 전압이 4.23V이상이 되면 검지', '차량 배터리 셀 과전압 검지 후, 4.26V 이상이면 충전 접촉기(CK)가 차단된다.', '배터리 셀 과전압 (4.23V 이하).', '배터리 셀 전압 정상범위로 회복 (3~4.21V)', '1) 배터리 NFB 상태 확인 +2) 이상이 없으면 차량 전체를 리셋한다. +3) 차량 리셋 후에도 동일고장이면 사령실과 연락하여 조치를 취한다 (외부 방전기 연결 또는 차량 지원)', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('272de181-c38b-4f7c-993a-15fbf9a836d2', '0210', '210', 'BECU#8-3축속도신호의 비정상', 'Tc2', 'C', 'BECU-3축속도신호의 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit1 “3축속도신호의 비정상” 신호가 "1"이 되면 검지.', '해당 차량 3축속도신호의 비정상 검지 현시 및 해당 차량 활주제어 불가.', '해당 차량의 3축 속도센서 고장 발생.', '해당 차량의 3축 속도센서가 정상적일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('27397574-2e47-4d2e-912a-eea980d8c952', '0509', '509', 'DCU#1 4위(L2)-출입문 잠김 리미트 스위치 고장', 'Tc1', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 "DLS Failure” 신호가 "1"이 되면 검지.', '출입문 잠김 상태 확인 불가', '1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('274ca37c-a97b-456d-8fd4-4a1cd1cb747a', '0713', '713', 'HVAC#7-냉난방장치1 압력스위치2(DPS) 저압', 'M4', 'D', 'HVAC-냉난방장치1 압력스위치2(DPS) 저압', 'D', 'HVAC', '냉난방장치1 냉매 압력스위치2 저압 발생.', 'UNIT1 CYCLE2 냉방 기능 불가', 'UNIT1 DSP2측 냉매 압력이 3초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우', '냉매 압력이 정상 수치 2±0.5(kgf/cm2 이상으로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CREF2의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)을 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안되는 것을 확인한 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2752a47b-3364-4454-80e4-96f11b2141bf', '1413', '1413', 'BMS#1-방전고온(DOT, 50도이상)', 'Tc1', 'D', 'BMS-방전고온(DOT)', 'D', 'BMS', '해당차량의 배터리 온도가 57도이상이 되면 검지', '차량 배터리 방전고온 검지 후, 60도이상이면 충전 접촉기(CK)가 차단된다.', '배터리 방전고온 (57도 이상).', '배터리 방전고온 정상범위로 회복 (55도 이하)', '1) 배터리 NFB 상태 확인 +2) 이상이 없으면 차량 전체를 리셋한다. +3) 차량 리셋 후에도 동일고장이면 사령실과 연락하여 조치를 취한다 (배터리를 상온조건으로 만든다.)', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('276a4cc5-c45e-4116-8962-420431285081', '0503', '503', 'DCU#3 6위(L3)-출입문 내부비상핸들 취급(EED)', 'M2', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2787b463-8683-486c-914f-b8bc21092add', '0512', '512', 'DCU#5 5위(R3)-파라미터 로딩 실패', 'T2', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 "Paraneter error” 신호가 "1"이 되면 검지.', 'Parameter error 현시 (출입문은 정상작동 가능)', 'DCU 자체내의 EEPROM으로부터 parameter 데이터 로딩 실패', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2789173b-86e2-457d-84a0-c0885bca48d3', '0219', '219', 'BECU#3-제동지령 비정상', 'M2', 'C', 'BECU-제동지령 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit2 “제동지령 비정상” 신호가 "1"이 되면 검지.', '해당 차량 제동지령 비정상 검지 현시 및 해당차량 정상적인 제동제어 불가. (상용제동지령에 따른 제어)', '해당 차량의 제동지령 신호가 정상범위를 벗어남(5.0~95.0%).', '해당 차량의 제동지령 신호가 정상범위일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. +소거되지 않을 경우 해당 선택 운전실의 PWM 엔코더를 리셋(CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('278f9bd5-abc5-4f24-b416-282d21d756e3', '0227', '227', '제동관련 회로차단기 차단(Car2)', 'M1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2794c20a-0752-45bc-a132-972a1b030854', '0517', '517', 'DCU#8 6위(L3)-출입문 장애물로 인한 열림 실패', 'Tc2', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Open failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘상태로 대기', '도어 열림 중 3회 장애물 감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 열림 시, 장애물 감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2796bd53-072b-4aba-99e3-edb782647085', '0098', '98', '조도제어기 고장(Car1)', 'Tc1', 'D', '조도제어기 고장(TC1)', 'D', '기타', '차량으로부터 ILLUMINATION CONTROLLER FAULT 신호 입력 시 +', '조도제어기내에서 FAULT 발생 시 릴레이 접점을 CLOSE 하여 FAULT 신호를 차량으로 보냄.', '조도제어기에 전원이 연결된 상태에서 조도제어기내의 컨트롤 보드상의 마이콤이 동작하지 않을 때 FAULT 신호를 보냄 +', '컨트롤 보드상의 마이콤 정상동작 시', '조도제어기내의 컨트롤 보드 교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('27a4e77d-1a64-4694-9da5-29edb8c9fd02', '0519', '519', 'DCU#8 5위(R3) - ZVR 신호 에러', 'Tc2', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 “ZVR signal error” 신호가 “1”이 되면 검지 +', '출입문이강제로 닫히게 되고, 열림은 불가능', ' +1) 차량 ZVR 신호가 없는 상태(차량 주행상태)에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함. +', '해당 출입문 ZVR 신호 수신', '1) 차량 이 주행중이라면, 차량 이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('27a8e112-ac8c-418c-b16c-76f9c84fcedd', '0520', '520', 'DCU#4 6위(L3)-이중계 절체 동작', 'T1', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 "Module switchover' 신호가 "1"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.392739+00', null, '로템40량(2018)-1단계', 'Rotem'), ('27af38b6-5023-452f-a92e-acaecb5c5073', '0503', '503', 'DCU#2 2위(L1)-출입문 내부비상핸들 취급(EED)', 'M1', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('27b11945-7010-45fe-ba45-b8dce808d77d', '0868', '868', '실내객실표시기(PIB) 고장(Car#7)', 'M4', 'C', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('27bfdfc1-2ab4-43b0-a0c5-11d9b5dd51be', '0510', '510', 'DCU#2 1위(R1)-출입문 닫힘 리미트 스위치1 고장', 'M1', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 "DCS1 Failure(Leftt)” 신호가 "1"이 되면 검지.', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('27cc39a7-121a-4d0d-bded-85f52b796a85', '0745', '745', 'HVAC#1 - 전자접촉기 배기팬2(CRVF) 고장', 'Tc1', 'C', 'HVAC-전자접촉기 배기팬2(CRVF) 고장', 'C', 'HVAC', 'HVAC 환기 작동 중 CRVF2 전자접촉기 고장 발생 +', '환기 시 차량 배기팬2 운전 불가능', '환기 작동 중 2.5초 이상 동안 CRVF2 작동 feedback 신호가 수신되지 않는 경우 +', 'CRVF2 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CRVF2를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRVF2와 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('27cd048b-4c51-47cb-83de-4424166df72d', '0734', '734', 'HVAC#4 - 전자접촉기 압축기(CRCM)3 고장', 'T1', 'C', 'HVAC-전자접촉기 압축기(CRCM)3 고장', 'C', 'HVAC', 'HVAC 냉방 작동 중 CRCM3 전자접촉기 고장 발생 +', '냉방 기능 저하(전냉방 시 반냉방으로 작동)', '냉방 작동 중 2.5초 이상 동안 CRCM3 작동 feedback 신호가 수신되지 않는 경우 +', 'CRCM3 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CRCM3을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRCM3과 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('27f28954-54e6-48a5-b35f-408aa0374ae9', '0506', '506', 'DCU#8 1위(R1) - 출입문 입력 저전압', 'Tc2', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 “1”이 되면 검지 +', '저전압상태(출입문 동작이 심하게 느려지거나 작동조차 안 될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하 +', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('28042418-71e4-412d-a98c-b24246d1d779', '0746', '746', 'HVAC#5-전자접촉기 배기팬1(CRVF) 고장', 'T2', 'C', 'HVAC-전자접촉기 배기팬1(CRVF) 고장', 'C', 'HVAC', 'HVAC 환기 작동 중 CRVF1 전자접촉기 고장 발생.', '환기 시 차량 배기팬1 운전 불가능', '환기 작동 중 2.5초 이상동안 CRVF1 작동 feedback 신호가 수신되지 않는 경우', 'CRVF1 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CRVF1을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRVF1과 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('281c57c1-59b4-4a83-b16f-a9bed4aef3ca', '0512', '512', 'DCU#3 5위(R3) - 파라미터 로딩 실패', 'M2', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 “Paraneter error” 신호가 “1”이 되면 검지 +', 'Parametererror 현시(출입문은 정상작동 가능)', 'DCU 자체 내의 EEPROM으로부터 parameter데이터 로딩 실패 +', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('282f1c36-119a-497c-b0a5-072d796dc67a', '0520', '520', 'DCU#6 6위(L3) - 이중계 절체 동작', 'M3', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 “Module switchover” 신호가 “1”이 되면 검지 +', '이중계 절체 동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러) 이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A'모듈 및 ‘B'모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2835485d-b8cf-4d7d-826b-4d736de4b430', '0511', '511', 'DCU#7 2위(L1)-출입문 닫힘 리미트 스위치2 고장', 'M4', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 "DCS2 Failure(Right)” 신호가 "1"이 되면 검지.', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2841c640-fa74-4074-ac2b-456f5ff6b09e', '0852', '852', '출력증폭기#2(AMP) 고장(Car#5)', 'T2', 'C', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('287195d7-77e0-4336-ac09-d6eedffbe4c4', '1403', '1403', 'BMS#1 - 배터리 저전압(BUV, 77V 이하)', 'Tc1', 'W', 'BMS-배터리 저전압(BUV, 77V 이하)', 'B', 'BMS', '해당 차량의 배터리 전압이 77V 이하가 되면 검지 +', '차량 배터리 저전압 검지', '배터리 저전압(77V 이하) +', '배터리 전압 회복', '1) 충전 전압 확인 +2) 배터리 NFB 상태 확인 +3) 이상이 없으면 차량 전체를 리셋한다. +4) 차량 리셋 후에도 동일고장이면 사령실과 연락하여 조치를 취한다. (외부 충전기 연결 또는 차량 지원)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('28752c2a-3f8d-4b68-b439-723900b6d7da', '0507', '507', 'DCU#3 5위(R3) - 초기화 실패', 'M2', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 “Calibration failure” 신호가 “1”이 되면 검지 +', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터 고장, 장애물감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우 +', '초기화 실패를 야기한 고장코드를 확인하여 조치 후, 재닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인한다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2894e81b-b072-4a14-9810-94dc9062df94', '0303', '303', 'ATC#1 - FSB 명령', 'Tc1', 'W', 'ATC-FSB 명령', 'W', 'ATC', 'ATC의 RS485 데이터 중 ATC-TCMS SD TEXT12의 Bit1 “FSB Command” 신호가 “1”이 되면 검지 +', null, ' +1) 제한속도 초과의 과속 조건 +2) 운행 중 출입문 열림 상태 검지 +3) 다대 연장구간 PG1, PG2 미검지 시 +', '1) 열차속도가 제한속도 이하 시 +2) 출입문 닫힘 상태 검지 시 +3) 수동으로 운전모드 전환 시', '1) 열차속도가 제한속도 이하인지 확인한다. +2) 출입문 닫힘 상태인지 확인한다. +3) 수동으로 운전모드 전환 후, 운행한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('28a69dc4-c646-4218-8a15-7c387ed72c84', '0212', '212', 'BECU#5-1축속도신호의 비정상', 'T2', 'C', 'BECU-1축속도신호의 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit3 “1축속도신호의 비정상” 신호가 "1"이 되면 검지.', '해당 차량 1축속도신호의 비정상 검지 현시 및 해당 차량 활주제어 불가.', '해당 차량의 1축 속도센서 고장 발생.', '해당 차량의 1축 속도센서가 정상적일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('28baf388-9fc4-4a9f-b014-0a1e6fbc69b3', '1407', '1407', 'BMS#8 - Cell 저전압(CUV, 2.75V 이하)', 'Tc2', 'D', 'BMS-Cell 저전압(CUV)', 'D', 'BMS', '해당 차량의 배터리 셀 전압이 2.98V 이하가 되면 검지 +', '차량 배터리셀 저전압 검지 후, 2.84V 이하이면 방전접촉기(DCK)가 차단된다.', '배터리셀 저전압(2.98V 이하) +', '배터리셀 전압 정상범위로 회복(3 ~ 4.21V)', '1) 배터리 NFB 상태 확인 +2) 이상이 없으면 차량 전체를 리셋한다. +3) 차량 리셋 후에도 동일고장이면 사령실과 연락하여 조치를 취한다. (외부 충전기 연결 또는 차량 지원)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('28bcc202-b9e0-4be0-a83d-4e566949d854', '0520', '520', 'DCU#6 1위(R1) - 이중계 절체 동작', 'M3', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 “Module switchover” 신호가 “1”이 되면 검지 +', '이중계 절체 동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러) 이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A'모듈 및 ‘B'모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('28c33b1e-141d-462b-ac1e-32858a7fdead', '0753', '753', 'HVAC#2-배기댐퍼 열림고장', 'M1', 'C', 'HVAC-배기댐퍼 열림고장', 'C', 'HVAC', '환기 시, 차량 배기댐퍼가 열려 있는 상태에서 배기댐퍼 열림 리미트 스위치가 작동되지 않음', '배기댐퍼 열림 고장 현시', '배기댐퍼를 열림으로 제어했으나 열림 리미트 스위치 입력이 없을 경우', '배기댐퍼 열림 상태에서 리미트 스위치 입력이 정상적으로 입력', '1) 배기댐퍼가 열린 상태에서 열림 리미트 스위치가 정상적으로 작동되었는지 확인한다. +2) 열림 리미트 스위치가 정상작동 되었음에도 문제가 발생될 경우, 스위치를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('28ca8f54-15ab-4f75-9305-e3778ac62dae', '0210', '210', 'BECU#7 - 3축 속도신호의 비정상', 'M4', 'C', 'BECU-3축속도신호의 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit1 “3축속도신호의 비정상” 신호가 “1”이 되면 검지 +', '해당 차량 3축속도신호의 비정상 검지 현시 및 해당 차량 활주제어불가', '해당 차량의 3축속도센서 고장 발생 +', '해당 차량의 3축속도센서가 정상적일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('28d0b8c1-b9c7-430b-a505-7d90304d74db', '0705', '705', 'HVAC#4-냉난방장치2 증발기2 과부하', 'T1', 'C', 'HVAC-냉난방장치2 증발기2 과부하', 'C', 'HVAC', 'HVAC 냉방작동 중 냉난방장치2 증발기 모터에 과부하 발생.', 'UNIT2 냉방 기능 불가', '1) 냉방작동 중 UNIT2의 증발기 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CREF4와 연결된 THR8이 Trip 됨.', 'UNIT2의 증발기 모터의 과부하 조건을 해소하여 정상 가능 상태로 만들고, THR8 및 마이콤 전원 리셋', '1) 냉난방배전반의 점검커버를 열고, THR8의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR8의 전류 세팅값이 3A에 맞춰져 있는지 확인하여, 아닐 경우, 십자 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동 시킨 후, THR8의 2차측 2,4,6 단자에서 각 단자간 상간 전압이 AC 380V으로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 증발기 단품 상태에서 점검을 한다. +7) THR8의 2차측 2,4,6 단자에서 각 단자간 권선저항이 모두 같은지 확인한다. (±10% 이하) (증발기 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT2의 증발기 모터의 결선을 해제한 후 4극 및 6극 모터의 권선저항을 확인 후, 문제가 있을 겨우, 증발기 모터를 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR8 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('28d3f0cc-1aaa-4bed-8659-acdbc1c1ed67', '0207', '207', 'BECU#5-자기진단고장', 'T2', 'C', 'BECU-자기진단고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit6 “RAM 점검 고장” 신호가 "1"이 되면 검지.', '해당 차량 자기진단고장 검지 현시 및 해당 차량 활주제어 불가.', '해당 차량 BECU의 자가진단 시 고장 발생(활주방지밸브 고장).', '해당 차량 BECU의 자가진단 시 정상적일 경우 소거(활주방지밸브 정상).', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('28d454b3-b028-47be-84cc-59ece339dc3f', '0503', '503', 'DCU#6 2위(L1) - 출입문 내부 비상핸들 취급(EED)', 'M3', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('28dd09fc-4bad-4276-89da-7e0c1c7242d2', '0114', '114', 'VVVF-HSCB 트립검지(HBTF) (Car2)', 'M1', 'B', 'VVVF-HSCB 트립검지(HBTF)', 'B', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT32의 Bit1 “HBTF” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 'HSCB 자기트립검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동이 되지 않으며 중고장으로 처리됨. +3) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치 입력전류가 1500A 이상인 조건.', '1) 추진제어장치 리셋으로 고장 소거됨.', '1) 상기고장이 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 고장기록의 FC 전압 및 입력전류 확인. +3) 추진제어장치 내부에 접지흔적 확인 및 고압회로 점검. +4) 전류/전압 센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작상태를 시험기를 통해 확인한다. +6) IPM 전원공급기의 전원연결상태 또는 광케이블의 연결상태와 배선상태를 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.578803+00', null, '다대48량(2015)', 'Rotem'), ('28e4e171-9772-4da3-a0c6-d88b987ffa17', '0101', '101', 'VVVF#2 - 인버터 중고장(INV CUT)', 'M1', 'A', 'VVVF-인버터중고장(INV CUT)', 'A', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT1의 Bit4 “INV CUT” 신호가 “1”이 되면 검지 +', '1) TCMS 일반화면에 추진제어장치 상태 붉은색으로 표시됨. +2) 추진제어장치 중고장 상태인 동력차에 동력 손실됨. +3) TCMS 상태화면의 추진제어장치 화면에 HSCB, LB1, 2 개방된 것으로 표시됨.', ' +1) 추진제어장치의 경고장이 1분에 3회 이상누적 또는 지속적으로 검지되어 중고장 발생함. +2) 장치에 중대한 소손 가능성이 있는 고장에 대해서는 1번 발생으로 중고장 발생함. +', '동력차일반 배전반의 VVVFICNFB 재투입 또는 차량 배터리 전원 재투입', '1) 소거조건 내용과 같이 조치 후 중고장 소거됨을 확인함. +2) TCMS 고장데이터 또는 추진제어장치 고장 데이터를 통해 중고장이 발생한 고장 내역 수집함. +3) 수집된 고장내역에 따라 조치 실시함.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('28f1aab3-42ac-42d5-87e3-242b9a2603fc', '0509', '509', 'DCU#7 5위(R3) - 출입문 잠김 리미트 스위치 고장', 'M4', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 “DLS Failure” 신호가 “1”이 되면 검지 +', '출입문 잠김 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('28f1bd1f-9802-49db-a407-c563f72c7a3f', '0500', '500', 'DCU#3 3위(R2) 통신고장', 'M2', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS간 RS485 통신고장이 검지되면 발생.', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐 상태 등의 변화가 없음.', '1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우', '해당차량의 DCU 및 CU/TU 의 전원이 정상상태이고, 통신라인 연결상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜저 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는데도 지속적으로 통순고장이 검지되면, DCU의 X2,X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2901cdb5-090e-4d16-9f7a-ad2c0b72ff00', '0510', '510', 'DCU#6 1위(R1)-출입문 닫힘 리미트 스위치1 고장', 'M3', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 "DCS1 Failure(Leftt)” 신호가 "1"이 되면 검지.', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('29062133-8782-4e3d-8d3e-1dcead226186', '0510', '510', 'DCU#8 2위(L1)-출입문 닫힘 리미트 스위치1 고장', 'Tc2', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 "DCS1 Failure(Leftt)” 신호가 "1"이 되면 검지.', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('290b8fd9-c916-4985-9f4e-fb5bac6f24c5', '0706', '706', 'HVAC#7-냉난방장치1 증발기2 과부하', 'M4', 'C', 'HVAC-냉난방장치1 증발기2 과부하', 'C', 'HVAC', 'HVAC 냉방작동 중 냉난방장치1 증발기 모터에 과부하 발생.', 'UNIT1 냉방 작동 불가', '1) 냉방작동 중 UNIT1의 증발기 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CREF2와 연결된 THR6이 Trip 됨.', 'UNIT1의 증발기 모터의 과부하 조건을 해소하여 정상 가능 상태로 만들고, THR6 및 마이콤 전원 리셋', '1) 냉난방배전반의 점검커버를 열고, THR6의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR6의 전류 세팅값이 3A에 맞춰져 있는지 확인하여, 아닐 경우, 십자 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동 시킨 후, THR6의 2차측 2,4,6 단자에서 각 단자간 상간 전압이 AC 380V으로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 증발기 단품 상태에서 점검을 한다. +7) THR6의 2차측 2,4,6 단자에서 각 단자간 권선저항이 모두 같은지 확인한다. (±10% 이하) (증발기 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT1의 증발기 모터의 결선을 해제한 후 4극 및 6극 모터의 권선저항을 확인 후, 문제가 있을 겨우, 증발기 모터를 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR6 부품을 교체한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2928f129-81cf-485f-9b3e-faf9bd77da04', '1702', '1702', '노선안내표시기#4 고장(Car5)', 'T2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('29295a9d-22f4-47f0-94e5-274d6c817864', '0236', '236', '상용제동코크 차단(Car6)', 'M3', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('292dcf24-c684-4f6d-b738-eae9e13159a9', '0074', '74', 'PSD 차상 - 지상간 통신장애', 'Tc2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('29318b7c-b107-460b-808e-d3ddfd1378f1', '0501', '501', 'DCU#4 1위(R1) - 출입문 차단', 'T1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('29365191-771f-4679-93ef-c4e5a0f4c117', '0321', '321', 'ATC#1 - 출입문 닫힘 오류', 'Tc1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('294a02f1-9868-4157-ac63-f45ed8f6b11f', '0514', '514', 'DCU#2 5위(R3)-출입문 닫힘 시간 초과', 'M1', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 "Close time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 닫힘 동작시간이 7초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도 한 후, '장애물로 인한 닫힘실패' 고장과 함께 'Close time out' 고장이 함께 현시', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('294ae568-df4d-46e6-be50-6f350d2598de', '0511', '511', 'DCU#5 6위(L3)-출입문 닫힘 리미트 스위치2 고장', 'T2', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 "DCS2 Failure(Right)” 신호가 "1"이 되면 검지.', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('29560a5c-424c-4a8a-8911-ffb009287de1', '0508', '508', 'DCU#1 5위(R3)-출입문 모터/인코더 고장', 'Tc1', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 "Motor / Encoder failure” 신호가 "1"이 되면 검지.', '출입문 정상동작 불가', '1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우 (인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터 / 인코더 회로가 손상된 경우', '모터/인코더 및 DCU가 정상상태이고, 전기적 연결상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있느지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. +★ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. + +1. DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. +2. DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) +3. DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('295715fe-870a-4335-83c0-46685620a1b1', '0502', '502', 'DCU#2 3위(R2) - 출입문 장애물검지', 'M1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('295b6abe-43ca-46e8-8a2e-c604600d78e0', '0806', '806', '정면행선표시기(FDI) 고장(Car#1)', 'Tc1', 'C', '통합방송표시기-정면행선표시기(FDI) 고장', 'C', 'AVC', '통합방송표시기의 E-NET 데이터 중 통합방송표시기-TCMS SD TEXT7의 Bit4 “FDI 고장” 신호가 +“1”이 되면 검지 +', '고장장치 통신불량으로 역 현시 기능 불능', '마스터통합방송제어기에 주기적(2초) TCP 응답이 없을 경우 통신불량으로 판단 +', '마스터통합방송제어기에 TCP 응답재개', '관련 CB(승객안내표시기, CBPIB) 리셋하고 통신라인 및 상태점검 관련도면 : REC70710FG0', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('295e95b7-f3f9-4a17-869d-718ff3b330f6', '0898', '898', '비상인터폰 동작(Car#3 - 1)', 'M2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('296674ae-b59c-4067-9ac8-8f3551a32aa3', '0505', '505', 'DCU#4 3위(R2) - 출입문 입력 고전압', 'T1', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 “1”이 되면 검지 +', '고전압 상태(그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상 +', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2971e683-a965-4728-b288-4bd387f8a4c0', '0513', '513', 'DCU#6 4위(L2)-모듈 상태체크 에러', 'M3', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 "Module check error” 신호가 "1"이 되면 검지.', 'Module check error 현시 (출입문은 정상작동 가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태체크 기능에 이상이 생긴 경우 고장 발생.', 'DCU의 'A'모듈과 'B'모듈 간, 상태체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('298c81b0-3ced-4d81-9f1f-d9b183bc3159', '1202', '1202', 'FDU#3-감지기1 고장', 'M2', 'C', 'FDU-감지기1 고장', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 "Detector1 State” 신호가 "10"이 되면 검지.', '감지기 고장상태 현시(자동 소거 안됨)', '1) 감지기로부터 데이터 응답이 없는경우. +2) 감지기로부터 수신된 데이터의 CRC가 맞지 않는경우 +3) 감지기로부터 수신된 데이터의 ID가 송신 ID와 일치하지 않는경우', 'FDU 전원 리셋 후 감지기로부터 정상적으로 데이터가 수신된 경우', '1) FDU 전원 리셋 후 고장 소거 여부 확인 +2) 정상 동작중인 감지기와 위치 교환 후 FDU 전원 리셋 및 고장 상태 확인 +3) 동일한 감지기에서 고장 발생시 감지기 교체 +4) 동일한 위치에서 고장 발생시 감지기 라인 점검', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('299fa75d-99dd-451b-b5a0-b0b7d6de5c8b', '0240', '240', 'BECU#8 - 2축 스키드신호', 'Tc2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('29c8ac7f-7d65-4d9e-9a1b-65f5d5f13510', '0749', '749', 'HVAC#8 - 380V 전원고장', 'Tc2', 'C', 'HVAC-380V 전원고장', 'C', 'HVAC', 'HVAC 메인 전원 AC 380V 전원 고장 발생 +', 'HVAC 냉방 및 난방 기능 불가', '차량으로부터 공급되는 AC 380V가 입력되지 않는 경우 +', '차량으로부터 AC 380V 전압이 정상적으로 입력', '1) 차량으로부터 AC 380V 전압이 정상적으로 입력되는지 확인한다. +2) 차량 전원이 정상일 경우, 냉난방 배전반의 CBLVD 차단기가 꺼져 있는지 확인 후, 꺼져있을 경우 켠다. +3) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('29cb8215-441e-47fa-af2d-3a302a4b9dcb', '0516', '516', 'DCU#4 2위(L1) - 출입문 장애물로 인한 닫힘 실패', 'T1', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Close failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림 상태로 대기', '도어 닫힘 중 3회 장애물감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('29cf0682-ec7f-4b59-a586-c37d6fa6181c', '0511', '511', 'DCU#4 1위(R1) - 출입문 닫힘 리미트 스위치2 고장', 'T1', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 “DCS2 Failure(Right)” 신호가 “1”이 되면 검지 +', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('29d8f664-a5b5-4637-9e49-d20b774078b9', '0709', '709', 'HVAC#3 - 냉난방장치2 압력스위치2(DPS) 저압', 'M2', 'D', 'HVAC-냉난방장치2 압력스위치2(DPS) 저압', 'D', 'HVAC', '냉난방장치2 냉매 압력스위치2 저압 발생 +', 'UNIT2CYCLE2 냉방기능불가', 'UNIT2DSP2측 냉매압력이 3초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우 +', '냉매압력이 정상수치 2±0.5(kgf/cm2) 이상으로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CREF4의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)를 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설 여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안 되는 것을 확인한 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('29fa5aac-04e5-4dbc-8662-910c351deedb', '0512', '512', 'DCU#8 6위(L3)-파라미터 로딩 실패', 'Tc2', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 "Paraneter error” 신호가 "1"이 되면 검지.', 'Parameter error 현시 (출입문은 정상작동 가능)', 'DCU 자체내의 EEPROM으로부터 parameter 데이터 로딩 실패', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('29fc5463-bacc-42d5-bd70-592626fd4162', '0501', '501', 'DCU#4 3위(R2)-출입문 차단', 'T1', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('29fdf52b-924f-48bd-ac4d-06a0eb9f0c8d', '0509', '509', 'DCU#5 2위(L1) - 출입문 잠김 리미트 스위치 고장', 'T2', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 “DLS Failure” 신호가 “1”이 되면 검지 +', '출입문 잠김 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2a06ad20-d9b0-49fb-8834-678e2af55aca', '0120', '120', 'VVVF-가선저전압검지(VLLVD) (Car6)', 'M3', 'C', 'VVVF-가선저전압검지(VLLVD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT32의 Bit7 “VLLVD” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 '가선 저전압검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치 입력되는 가선전압이 850V 이상일 경우 검지됨.', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반배전반의 VVVFIC nfb 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 가선전압에 이상이 있는지 확인한다. +3) LB Box 내부 고전압부에 소손흔적이 있는지 확인한다. +4) FC에 연결된 버스바의 체결상태가 양호한지 확인한고, 버스바를 분리하여 FC의 Capacitance를 측정하여 이상이 없는지 확인한다. +5) 전압센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +6) SEN 보드의 동작상태를 시험기를 통해 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.656536+00', null, '다대48량(2015)', 'Rotem'), ('2a0c680b-4ee6-4ab6-9d6b-12a2ddfbef4f', '0222', '222', 'BECU#8-공기스프링누설(후미대차)', 'Tc2', 'C', 'BECU-공기스프링누설(후미대차)', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit5 “공기스프링누설(후미대차)” 신호가 "1"이 되면 검지.', '해당 차량 공기스프링누설(후미대차) 검지 현시 및 해당차량 정상적인 제동제어 불가.(응하중 제어)', '해당 차량 후미대차의 공기스프링(AS3, AS4) 압력이 정상범위를 벗어남.(100kPa 미만)', '해당 차량 후미대차의 공기스프링(AS3, AS4) 압력이 정상범위일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2a265a90-d90a-4602-9d52-831f6ca84167', '0236', '236', '상용제동코크 차단(Car1)', 'Tc1', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2a315a02-438c-4d00-8e3d-4ea8f6a4fcaf', '0234', '234', '제동불완해검지(NRBD, Car2)', 'M1', 'B', '제동불완해검지(NRBD)', 'B', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT8의 Bit2 “NRBD” 신호가 "1"이 되면 검지.', '해당 차량 제동불완해 검지 현시 및 완해 취급하였음에도 불구하고 해당 차량 제동압력(BCP)이 완해되지 않음.', '제동완해 상태(정차제동 포함)에서 해당 차량의 제동압력이 완전히 배기 되지 않음.', '제동완해 상태(정차제동 포함)에서 해당 차량의 제동압력이 완전히 배기 됨.', '정차하여 강제완해스위치를 취급하여 소거 여부 확인. 제동 완해상태 확인 후 주의 운전 할 것. +2~3회 시도에도 완해불능시 관제보고하고 지시에 따를 것.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2a34e473-f494-4dbe-a2b0-2db77828aed4', '0701', '701', 'HVAC#7 - 냉난방장치2 압축기2 과부하', 'M4', 'C', 'HVAC-냉난방장치2 압축기2 과부하', 'C', 'HVAC', 'HVAC 냉방 작동 중 냉난방장치2 압축기2 또는 응축기2 모터에 과부하 발생 +', '냉방 기능 저하(전냉방 시 반냉방으로 작동)', ' +1) 냉방 작동 중 UNIT2의 압축기2 또는 응축기2 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRCM4와 연결된 THR4가 Trip 됨. +', 'UNIT2의 압축기2 또는 응축기2 모터의 과부하조건을 해소하여 정상 가능 상태로 만들고, THR4 및 마이콤 전원 리셋', '1) 냉난방 배전반의 점검커버를 열고, THR4의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR4의 전류 세팅값이 11.5A에 맞춰져 있는지 확인하여, 아닐 경우, (+) 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동시킨 후, THR4의 2차측 2, 4, 6 단자에서 각 단자 간 상간 전압이 AC 380V로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 압축기 및 응축기 단품 상태에서 점검을 한다. +7) THR4의 2차측 2, 4, 6 단자에서 각 단자 간 권선저항이 모두 같은지 확인한다. (±10% 이하) (압축기2 및 응축기2 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT2의 압축기2 또는 응축기2 모터의 결선을 해제한 후 각 부품의 권선저항을 확인 후, 문제가 있는 부품을 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR4 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2a4bc4d2-b25f-4b34-830d-5c9c14facdc0', '0513', '513', 'DCU#2 6위(L3)-모듈 상태체크 에러', 'M1', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 "Module check error” 신호가 "1"이 되면 검지.', 'Module check error 현시 (출입문은 정상작동 가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태체크 기능에 이상이 생긴 경우 고장 발생.', 'DCU의 'A'모듈과 'B'모듈 간, 상태체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2a5816e2-907e-428b-9072-d44dad16fa2a', '0224', '224', 'BECU#1 - 파트너차 ECU 고장(PECUF)', 'Tc1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2a592c7c-787f-4739-a910-68fbe57d789e', '0726', '726', 'HVAC#1 - 배기팬2 과부하', 'Tc1', 'C', 'HVAC-배기팬2 과부하', 'C', 'HVAC', 'HVAC 환기작동 중 차량 배기팬2 모터에 과부하 발생 +', '환기 시 차량 배기팬2 운전 불가능', ' +1) 냉방 작동 중 챠량 배기팬2 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRVF2와 연결된 THR10이 Trip 됨. +', '차량 배기팬2 모터의 과부하조건을 해소하여 정상 가능 상태로 만들고, THR10 및 마이콤 전원 리셋', '1) 냉난방 배전반의 점검커버를 열고, THR10의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR10의 전류 세팅값이 2.5A에 맞춰져 있는지 확인하여, 아닐 경우, (+) 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동시킨 후, THR10의 2차측 2, 4 단자와 6 단자 사이의 전압이 DC 100V로 정상 측정 되는지 확인한다. +5) 만약 전압이 측정되지 않을 시, 전원이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, THR10 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2a6a5dd1-5b48-44fb-82b7-790877d9b4af', '0514', '514', 'DCU#7 2위(L1)-출입문 닫힘 시간 초과', 'M4', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 "Close time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 닫힘 동작시간이 7초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도 한 후, '장애물로 인한 닫힘실패' 고장과 함께 'Close time out' 고장이 함께 현시', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2a7294c8-deb2-4565-89be-567051686004', '0307', '307', 'ATC#8 - 반대편 출입문 코드 수신', 'Tc2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2a75bc53-9bf8-4607-9181-d1ae228273af', '1505', '1505', '기타장치용 AC 회로차단기 차단(Car5)', 'T2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2a76fde9-3ac8-4de6-873b-40d32f0ff873', '0724', '724', 'HVAC#8 - 냉난방장치1 압력스위치1(DPS) 냉매부족', 'Tc2', 'C', 'HVAC-냉난방장치1 압력스위치1(DPS) 냉매부족', 'C', 'HVAC', '냉난방장치1 냉매 압력스위치1 저압 발생 +', 'UNIT1CYCLE1 냉방 기능 불가', 'UNIT1DSP1측 냉매압력이 30초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우 +', '냉매압력이 정상수치2±0.5(kgf/cm2) 이상 유지하도록 하고, 마이콤전원을 리셋', '1) 배전반 점검 커버를 열고 마이콤 전원을 리셋한 후, 냉방 가동 시, CREF2의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)을 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설 여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안 되는 것을 확인한 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2a7a0a52-26f4-44ed-af2c-08dacb439281', '0500', '500', 'DCU#7 6위(L3) 통신고장', 'M4', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS간 RS485 통신고장이 검지되면 발생.', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐 상태 등의 변화가 없음.', '1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우', '해당차량의 DCU 및 CU/TU 의 전원이 정상상태이고, 통신라인 연결상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜저 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는데도 지속적으로 통순고장이 검지되면, DCU의 X2,X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2a7e5cf0-fe61-4402-ae7b-48a36ed3e75b', '0745', '745', 'HVAC#3 - 전자접촉기 배기팬2(CRVF) 고장', 'M2', 'C', 'HVAC-전자접촉기 배기팬2(CRVF) 고장', 'C', 'HVAC', 'HVAC 환기 작동 중 CRVF2 전자접촉기 고장 발생 +', '환기 시 차량 배기팬2 운전 불가능', '환기 작동 중 2.5초 이상 동안 CRVF2 작동 feedback 신호가 수신되지 않는 경우 +', 'CRVF2 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CRVF2를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRVF2와 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2a9929b0-f012-4c28-9eed-71493061d331', '0205', '205', 'BECU#8 - 회생제동요구 비정상', 'Tc2', 'C', 'BECU-회생제동요구 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit4 “회생제동요구 비정상” 신호가 “1”이 +되면 검지 +', '해당 차량 회생제동 요구 비정상 검지 현시', '해당 차량의 회생제동 요구 출력이 정상범위를 벗어남. +', '해당 차량 회생제동 요구 출력이 정상범위로 복귀 시 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2a9ddfb6-5d3a-4873-ab4a-a334c8ee5f6c', '0145', '145', 'VVVF#6 - 과온검지2(THDH)', 'M3', 'C', 'VVVF-Stack 과온검지2(THDH)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT30의 Bit2 “THDH” 신호가 “1”이 되면 검지 +', '1) TCMS 화면 하단 또는 고장화면에 ‘스택과온검지2' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동이 되지 않으며 중고장으로 처리됨. +3) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉은색으로 표기되며, HSCB, LB1, 2 개방되어 동력 손실 발생함.', '추진제어장치 냉각기의 온도가 105도 이상인 조건에서 검지 +', '추진제어장치 리셋으로 고장 소거됨.', '1) 상기고장이 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 냉각기의 손상이 없는지 확인한다. +3) 추진제어장치 내부에 IPM에 손상이 없는지 확인한다. +4) 인버터 유니트 내부에 온도센서 및 결선에 이상이 없는지 확인한다. +5) DIN 보드의 동작 상태를 시험기를 통해 확인한다. +6) IPM 전원공급기의 전원연결 상태 또는 광케이블의 연결 상태와 배선상태를 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지 간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2a9f9222-61db-437f-b935-2f86783366f0', '0504', '504', 'DCU#7 3위(R2)-출입문 외부비상핸들 취급(EAD)', 'M4', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2aa6fe69-8256-4e7a-b1c5-05757ff5b525', '1505', '1505', '기타장치용 AC 회로차단기 차단(Car6)', 'M3', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2aa80409-e12b-437c-a042-f30847565aad', '0517', '517', 'DCU#1 2위(L1)-출입문 장애물로 인한 열림 실패', 'Tc1', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Open failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘상태로 대기', '도어 열림 중 3회 장애물 감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 열림 시, 장애물 감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2ab92fb5-c5e0-411b-9bc1-c76ba274e88b', '1707', '1707', '노선안내표시기#3 고장(Car6)', 'M3', 'C', '노선안내표시기#5 고장', 'C', 'PIC', 'PIC 장치의 노선안내표시기#5이 고장이 났을 때 발생 +', '1) 노선안내표시기 화면 미현시 +2) 노선안내표시기 안내 화면 오현시', '통신고장 +', '통신 재개 시', '1) 이더넷 스위치 링크 확인 +2) 이더넷 케이블 점검 +3) 제어보드 및 전원보드 교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2abe4ab9-4ce4-4914-b3ed-2d6c9c0d471a', '0515', '515', 'DCU#5 1위(R1)-출입문 열림 시간 초과', 'T2', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 "Open time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 열림 동작시간이 6초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도 한 후, '장애물로 인한 열림실패' 고장과 함께 'Open time out' 고장이 함께 현시', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2ac12cb2-bd2c-4bbd-a4b0-28a6c6a118a8', '0519', '519', 'DCU#6 6위(L3) - ZVR 신호 에러', 'M3', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 “ZVR signal error” 신호가 “1”이 되면 검지 +', '출입문이강제로 닫히게 되고, 열림은 불가능', ' +1) 차량 ZVR 신호가 없는 상태(차량 주행상태)에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함. +', '해당 출입문 ZVR 신호 수신', '1) 차량 이 주행중이라면, 차량 이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2ace40fc-8dfc-4fe9-9dc7-b0398462fc36', '0521', '521', 'DCU#4 1위(R1)-모듈 상태 이상', 'T1', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 "01"또는 "00"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2acf64cc-b507-4f1c-b9e7-5a804ae78704', '0231', '231', 'BC 코크(차상) 차단(Car7)', 'M4', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2ad3e540-6260-40d1-b318-f922ee3dc5eb', '0306', '306', 'ATC#1 - PSD열림 검지로 인한 역행불가', 'Tc1', 'C', 'ATC-PSD열림 검지로 인한 역행불가', 'C', 'ATC', 'ATC의 RS485 데이터 중 ATC-TCMS SD TEXT11의 Bit1 “Propulstion Block by detecting PSD open” 신호가 “1”이 되면 검지 +', '실제 PSD가 닫혔음에도 MMI 화면에 PSD 열림표시가 유지되어 있다.', 'FA/AUTO 모드에서 ZV(영속도) 및 제한속도가 0Km/h 이상일 때 PSD 차상장치가 열림 으로 수신 시 +', 'PSD가실제로 닫힘으로 수신된다.', '1) MMI 화면에 PSD가 닫힘으로 표시되었는지 확인한다. +2) PSD 차상장치 고장으로 인해 PSD 닫힘 수신 불가 시, 자동운행 불가상태로 관제에 이를 통보 후 조치한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2afc86f3-de1f-4641-870c-d06da5d489a3', '0501', '501', 'DCU#4 1위(R1)-출입문 차단', 'T1', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2b04285e-4008-47eb-b3e5-6623d133ac08', '0507', '507', 'DCU#7 4위(L2) - 초기화 실패', 'M4', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 “Calibration failure” 신호가 “1”이 되면 검지 +', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터 고장, 장애물감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우 +', '초기화 실패를 야기한 고장코드를 확인하여 조치 후, 재닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인한다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2b0a44fc-b84d-4751-bd5b-e89ec5f25982', '0513', '513', 'DCU#7 2위(L1)-모듈 상태체크 에러', 'M4', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 "Module check error” 신호가 "1"이 되면 검지.', 'Module check error 현시 (출입문은 정상작동 가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태체크 기능에 이상이 생긴 경우 고장 발생.', 'DCU의 'A'모듈과 'B'모듈 간, 상태체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2b24161a-2abf-45ef-8d8a-28d4ff9d23f0', '0505', '505', 'DCU#7 6위(L3)-출입문 입력 고전압', 'M4', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 "1"이 되면 검지.', '고전압 상태. (그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2b2d1d92-7855-447a-a96d-28757ca51be2', '0813', '813', '출력증폭기#1(AMP) 고장(Car#1)', 'Tc1', 'C', '통합방송표시기-출력증폭기#1(AMP) 고장', 'C', 'AVC', '통합방송표시기의 E-NET 데이터 중 통합방송표시기-TCMS SD TEXT8의 Bit5 “AMP#1 고장” 신호가 +“1”이 되면 검지 +', '고장장치 통신불량으로 실내출력 반절 불능', '마스터통합방송제어기에 주기적(2초) TCP 응답이 없을 경우 통신불량으로 판단 +', '마스터통합방송제어기에 TCP 응답재개', '관련 CB(방송/표시기/CCTV 전원공급장치1, CBPAU# +1) 리셋하고 통신라인 및 상태점검 관련도면 : RES12001DX0, REC70700DX0', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2b310ca4-67fa-4386-9ac1-d3f46612ab63', '0231', '231', 'BC 코크(차상) 차단(Car1)', 'Tc1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2b3183cf-04b8-4caa-a9d7-8fc474e615de', '0513', '513', 'DCU#1 1위(R1)-모듈 상태체크 에러', 'Tc1', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 "Module check error” 신호가 "1"이 되면 검지.', 'Module check error 현시 (출입문은 정상작동 가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태체크 기능에 이상이 생긴 경우 고장 발생.', 'DCU의 'A'모듈과 'B'모듈 간, 상태체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2b34a9ec-ca15-48f2-827e-5db9bbd39026', '0500', '500', 'DCU#6 2위(L1) 통신고장', 'M3', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS 간 RS485 통신고장이 검지되면 발생 +', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐상태 등의 변화가 없음.', ' +1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우 +', '해당 차량의 DCU 및 CU/TU의 전원이 정상상태이고, 통신 라인 연결 상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜져 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적 으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는 데도 지속적으로 통신고장이 검지되면, DCU의 X2, X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상 체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2b4f9fe1-e83d-4ae8-be70-c30c0f0a75e3', '0518', '518', 'DCU#8 1위(R1) - 출입문 Enable 신호 에러', 'Tc2', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 “Enable signal error” 신호가 “1”이 되면 검지 +', 'DCU 출입문Enable신호에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드 시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을 때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드 시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입 상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호 장치로부터의 출입문 열림 명령 신호) 취급 시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함. +', '해당 출입문 enable 신호수신', '1) AUTO/MCS 모드 시에는 YARD 모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인 한다. (YARD/FMC 모드 시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2b5914b9-a45e-43df-91f8-e43ed7721342', '0721', '721', 'HVAC#6-냉난방장치2 압력스위치2(DPS) 냉매부족', 'M3', 'C', 'HVAC-냉난방장치2 압력스위치2(DPS) 냉매부족', 'C', 'HVAC', '냉난방장치2 냉매 압력스위치2 저압 발생.', 'UNIT2 CYCLE2 냉방 기능 불가', 'UNIT2 DSP2측 냉매 압력이 30초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우', '냉매 압력이 정상 수치 2±0.5(kgf/cm2 이상 유지하도록 하고, 마이콤 전원을 리셋', '1) 배전반 점검 커버를 열고 마이콤 전원을 리셋한 후, 냉방 가동 시, CREF4의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)을 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안되는 것을 확인한 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2b5f54c8-b654-4fe1-a325-8ede239a9e40', '0509', '509', 'DCU#3 4위(L2)-출입문 잠김 리미트 스위치 고장', 'M2', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 "DLS Failure” 신호가 "1"이 되면 검지.', '출입문 잠김 상태 확인 불가', '1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2b6407b2-8041-41fc-b88a-06ea963b78e6', '0209', '209', 'BECU#1-4축속도신호의 비정상', 'Tc1', 'C', 'BECU-4축속도신호의 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit0 “4축속도신호의 비정상” 신호가 "1"이 되면 검지.', '해당 차량 4축속도신호의 비정상 검지 현시 및 해당 차량 활주제어 불가.', '해당 차량의 4축 속도센서 고장 발생.', '해당 차량의 4축 속도센서가 정상적일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2b792a1a-6e0e-4ffc-84c5-9eb4d9db7c67', '0509', '509', 'DCU#6 4위(L2)-출입문 잠김 리미트 스위치 고장', 'M3', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 "DLS Failure” 신호가 "1"이 되면 검지.', '출입문 잠김 상태 확인 불가', '1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2b7e0c8b-f86c-41c7-af47-94234b197acb', '0101', '101', 'VVVF#6-인버터 중고장(INV CUT)', 'M3', 'A', 'VVVF-인버터중고장(INV CUT)', 'A', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT1의 Bit4 “INV CUT” 신호가 "1"이 되면 검지.', '1) TCMS 일반화면에 추진제어장치 상태 붉은색으로 표시됨. +2) 추진제어장치 중고장 상태인 동력차에 동력 손실됨. +3) TCMS 상태화면의 추진제어장치 화면에 HSCB, LB1,2 개방된것으로 표시됨.', '1) 추진제어장치의 경고장이 1분에 3회 이상누적또는 지속적으로 검지되어 중고장 발생함. +2) 장치에 중대한 소손 가능성이 있는 고장에 대해서는 1번 발생으로 중고장 발생함.', '동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) 소거조건 내용과 같이 조치 후 중고장 소거됨을 확인함. +2) TCMS 고장데이터 또는 추진제어장치 고장 데이터를 통해 중고장이 발생한 고장 내역 수집함. +3) 수집된 고장내역에 따라 조치 실시함.', null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2b8b5199-4fc4-4e94-9272-38f24152fe46', '0508', '508', 'DCU#6 1위(R1) - 출입문 모터/인코더 고장', 'M3', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 “Motor / Encoder failure” 신호가 “1”이 되면 +검지 +', '출입문 정상동작 불가', ' +1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우(인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터/인코더 회로 가 손상된 경우 +', '모터/인코더 및 DCU가 정상 상태이고, 전기적 연결 상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있는지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. ※ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. ? DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. ? DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) ? DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2b926c89-49c2-4d75-bc8c-90e84b0987a3', '0893', '893', '전면카메라(FCAM) 고장(Car#8)', 'Tc2', 'C', '영상저장장치-전면카메라(FCAM) 고장(Car8)', 'C', 'AVC', '영상저장장치(NVR)의 E-NET 데이터 중 영상저장장치-TCMS SD TEXT9의 Bit1, TEX9의 Bit3 “FCAM 고장” 신호가 “1”이 되면 검지 +', '고장 발생 FCAM 영상저장 불가능', '정면카메라(FCAM) 통신고장 +', '정면카메라(FCAM) 통신정상', '정면카메라(FCAM) 전원 및 통신라인 점검 관련도면 : RES41002FG0', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2b948117-df6a-4f1a-9d0a-0e8a86f22d9b', '0706', '706', 'HVAC#5-냉난방장치1 증발기2 과부하', 'T2', 'C', 'HVAC-냉난방장치1 증발기2 과부하', 'C', 'HVAC', 'HVAC 냉방작동 중 냉난방장치1 증발기 모터에 과부하 발생.', 'UNIT1 냉방 작동 불가', '1) 냉방작동 중 UNIT1의 증발기 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CREF2와 연결된 THR6이 Trip 됨.', 'UNIT1의 증발기 모터의 과부하 조건을 해소하여 정상 가능 상태로 만들고, THR6 및 마이콤 전원 리셋', '1) 냉난방배전반의 점검커버를 열고, THR6의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR6의 전류 세팅값이 3A에 맞춰져 있는지 확인하여, 아닐 경우, 십자 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동 시킨 후, THR6의 2차측 2,4,6 단자에서 각 단자간 상간 전압이 AC 380V으로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 증발기 단품 상태에서 점검을 한다. +7) THR6의 2차측 2,4,6 단자에서 각 단자간 권선저항이 모두 같은지 확인한다. (±10% 이하) (증발기 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT1의 증발기 모터의 결선을 해제한 후 4극 및 6극 모터의 권선저항을 확인 후, 문제가 있을 겨우, 증발기 모터를 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR6 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2b9bda70-ed50-41aa-a93e-632d51c1d0ec', '1505', '1505', '기타장치용 AC 회로차단기 차단(Car7)', 'M4', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2b9eba7a-51ec-44c0-b62e-a7909893402b', '0512', '512', 'DCU#7 3위(R2)-파라미터 로딩 실패', 'M4', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 "Paraneter error” 신호가 "1"이 되면 검지.', 'Parameter error 현시 (출입문은 정상작동 가능)', 'DCU 자체내의 EEPROM으로부터 parameter 데이터 로딩 실패', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2bb59ac2-c95e-4db5-834f-2dd8dd5e70b0', '0510', '510', 'DCU#5 1위(R1) - 출입문 닫힘 리미트 스위치1 고장', 'T2', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 “DCS1 Failure(Leftt)” 신호가 “1”이 되면 검지 +', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2bbad65e-f0b3-40d7-b99f-72c5a79139b3', '1212', '1212', 'FDU#8 -', 'Tc2', null, null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2bbc1855-023c-448b-8646-c06427b8ae6d', '0222', '222', 'BECU#8 - 공기스프링 누설(후미대차)', 'Tc2', 'C', 'BECU-공기스프링누설(후미대차)', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit5 “공기스프링누설(후미대차)” 신호가 “1”이 +되면 검지 +', '해당 차량 공기스프링 누설(후미대차) 검지 현시 및 해당 차량 정상적인제동제어 불가 (응하중제어)', '해당 차량 후미대차의 공기스프링(AS3, AS4) 압력이 정상범위를 벗어남. (100kPa 미만) +', '해당 차량 후미대차의 공기스프링(AS3, AS4) 압력이 정상범위일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2bc04172-f044-42e4-8658-d74b1ada671f', '0504', '504', 'DCU#4 5위(R3) - 출입문 외부 비상핸들 취급(EAD)', 'T1', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2bd936d5-ec3d-4256-85b8-5f1cfae89c38', '0514', '514', 'DCU#8 5위(R3) - 출입문 닫힘 시간 초과', 'Tc2', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 “Close time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 닫힘 동작 시간이 7초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도한 후, ‘장애물로 인한 닫힘 실패' 고장과 함께 ‘Close time out' 고장이 함께 현시 +', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2bdeb2d8-3227-4bb9-9b81-a5de6091177d', '0800', '800', '통합방송표시기#1 통신고장', 'Tc1', 'B', '통합방송표시기 통신고장', 'B', 'TCMS', '통합방송표시기와 TCMS간 RS485 통신고장이 검지되면 발생.', 'TCMS로 부터 수신되는 정보에 따른 동작 불능 (자동방송, 자동객실안내표시기 동작)', 'RS485 통신으로 SD 데이터 일정 시간 미수신', 'RS485 통신으로 SD 데이터 수신', 'TCMS와 통합방송표시기 간의 통신계통 점검 및 통합방송표시기 CB(오디오/비디오 제어기, CBAVCON) 리셋. +관련도면:', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2be05948-fe1a-444d-8cd2-8713de709a29', '0508', '508', 'DCU#6 5위(R3) - 출입문 모터/인코더 고장', 'M3', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 “Motor / Encoder failure” 신호가 “1”이 되면 +검지 +', '출입문 정상동작 불가', ' +1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우(인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터/인코더 회로 가 손상된 경우 +', '모터/인코더 및 DCU가 정상 상태이고, 전기적 연결 상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있는지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. ※ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. ? DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. ? DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) ? DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2bedd95e-7715-477a-8873-cacb97084eb3', '1102', '1102', 'PSD#1 - 지상 스크린도어 닫힘 고장', 'Tc1', 'D', 'PSD-지상 스크린도어 닫힘 고장', 'D', 'PSD', 'PSD의 RS485 데이터 중 PSD-TCMS SD TEXT5(TEXT6)의 Bit2 “지상 PSD 닫힘 확인 NG” 신호가 “1”이 +되면 검지([지상 PSD 설비 장애] - 전동차 출입문 닫힘, 차상장치가 스크린도어 닫힘 명령을 송신, 지상장치로부터 스크린도어 닫힘 확인 NG가 수신된 경우 ) +', '1) 전동차 출입문 닫힘 후 +2) 전동차 출입문은 닫혔으나, PSD가 닫히지 않을 경우 +3) 전동차 출입문과 PSD 모두 닫혔으나 장애로 현시될 경우', '지상 PSD설비에서 PSD 전체 닫힘명령 실행 중 Feedback 신호가 올바르지 않음. +', '1) 지상설비에 대한고장이므로 차상장치는 정상동작 한다. +2) 기관사는 PSD 닫힘 상태확인, 닫힘 실패 시 +3) 기관사 조작반으로 수동취급 실시할 것 +* 해당 역사를 벗어나면 소멸됨.', null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2beedca6-69f8-4cdc-bfdb-da8e45cd2170', '0511', '511', 'DCU#3 6위(L3)-출입문 닫힘 리미트 스위치2 고장', 'M2', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 "DCS2 Failure(Right)” 신호가 "1"이 되면 검지.', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2bf11167-8fa7-4e97-9b73-e397748a9275', '0239', '239', 'BECU#8 - 3축 스키드신호', 'Tc2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2c034743-8c5d-4452-b8f3-f540f0a62b86', '0749', '749', 'HVAC#7 - 380V 전원고장', 'M4', 'C', 'HVAC-380V 전원고장', 'C', 'HVAC', 'HVAC 메인 전원 AC 380V 전원 고장 발생 +', 'HVAC 냉방 및 난방 기능 불가', '차량으로부터 공급되는 AC 380V가 입력되지 않는 경우 +', '차량으로부터 AC 380V 전압이 정상적으로 입력', '1) 차량으로부터 AC 380V 전압이 정상적으로 입력되는지 확인한다. +2) 차량 전원이 정상일 경우, 냉난방 배전반의 CBLVD 차단기가 꺼져 있는지 확인 후, 꺼져있을 경우 켠다. +3) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2c076f2b-90c5-4a29-8e68-d79f3dea2530', '0304', '304', 'ATC#8-1계 고장', 'Tc2', 'C', 'ATC-1계 고장', 'C', 'ATC', 'ATC의 RS485 데이터 중 ATC-TCMS SD TEXT7의 Bit4~7 “ATC/ATO Status” 데이터가 ATC 1계 Bad 상태이면 검지.', 'MMI에 ATC/ATO1이 빨간색으로 표기되며 관련 고장메시지 현시', '1) ATC시스템 자체진단테스트 실행결과 비정상상태일 경우 +2) ATC-1계 CPU보드 고장 시 +3) ATC-1계 POWER보드 고장시', '상기 검지조건 해제 시', '1) 전원스위치 CB ATC#1,2 OFF->ON하여 복귀시도 후, 복귀되었는지 확인한다. +2) 1, 2계 동시 고장 시, 완전수동(FMC)전환 운행 한다.', null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2c0e47f7-941b-4471-be45-63e6973459ed', '0500', '500', 'DCU#3 6위(L3) 통신고장', 'M2', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS간 RS485 통신고장이 검지되면 발생.', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐 상태 등의 변화가 없음.', '1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우', '해당차량의 DCU 및 CU/TU 의 전원이 정상상태이고, 통신라인 연결상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜저 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는데도 지속적으로 통순고장이 검지되면, DCU의 X2,X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2c16943b-e089-4c53-b00a-82daf116f075', '0228', '228', 'BC 코크(차하#1) 차단(Car5)', 'T2', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2c17f056-68e0-41e7-be16-f7a93efe5338', '0714', '714', 'HVAC#4 - 냉난방장치1 압력스위치2(DPS) 고압', 'T1', 'D', 'HVAC-냉난방장치1 압력스위치2(DPS) 고압', 'D', 'HVAC', '냉난방장치1 냉매 압력스위치2 고압 발생 +', 'UNIT1CYCLE2 냉방기능불가', 'UNIT1DSP2측 냉매압력이 3초 이상 28±1(kgf/cm2) 이상 되는 경우 +', '냉매압력이 정상수치 15±0.7(kgf/cm2) 이하로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CRCM2의 부하측 전류를 측정하여 응축기 팬의 동작여부를 확인한다. +2) 응축기 코일의 전면에 이물질로 인한 막힘이 있는지 확인한다. +3) 응축기 팬 상부 그릴에 외부 이물질로 인한 막힘이 있는지 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2c1d3660-0172-4024-94b0-ace21d6139f0', '0516', '516', 'DCU#2 6위(L3)-출입문 장애물로 인한 닫힘 실패', 'M1', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Close failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림상태로 대기', '도어 닫힘 중 3회 장애물 감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2c243a6d-6b7c-4e71-91d0-ad775e71db68', '0211', '211', 'BECU#2 - 2축 속도신호의 비정상', 'M1', 'C', 'BECU-2축속도신호의 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit2 “2축속도신호의 비정상” 신호가 “1”이 +되면 검지 +', '해당 차량 2축속도신호의 비정상 검지 현시 및 해당 차량 활주제어불가', '해당 차량의 2축속도센서 고장 발생 +', '해당 차량의 2축속도센서가 정상적일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2c267a61-a777-4f46-be1d-5956a186f3d8', '0010', '10', 'TU 통신고장(Car5)', 'T2', 'B', 'TU 통신고장(CAR5)', 'C', 'TCMS', 'M,T 차량의 단말장치(TU) 통신고장', '1) 해당 차호의 단말장치(TU)와의 통신불능시 화면에 현시. +2) TU 통신 고장시 해당호차의 VVVF, BECU, DCU, HVAC, FDU 등과의 통신도 불가. +(해당 차량의 출입문 열림/닫힘 정보도 현시 불가하므로 출입문 열림/닫힘 램프로 주의 운행) +3) 2호차(6호차) TU 통신 고장시 판토상승/하강 명령 전달 불가(단, 이미 상승된 판토는 상승 유지됨) +4) 4호차 TU 통신고장시, 연장급전 접촉기 출력이 불가', '1) CU에서 TU의 통신정보를 2초이상 수신받지 못할 경우 해당 고장 현시.', '1) TU가 정상적으로 통신을 재개할 경우 소거됨.', '1) TU 전원차단기 리셋(IFF->ON) 실시 +2) VPS보드의 전원 LED가 정상이라면, 멀티미터로 VPS 보드의 전원출력(5V)를 확인. +3) TU 상단의 커넥터 체결상태를 확인 +4) 상기 항목에 이상이 없을 경우 VARCM 보드를 교체한다.', null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2c2c7b4d-6bba-4d90-ae19-b28b5a514ef1', '0107', '107', 'VVVF-전동기 과전류 검지(MOCD) (Car3)', 'M2', 'C', 'VVVF-전동기 과전류 검지(MOCD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT31의 Bit2 “MOCD” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 '전동기 과전류 검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치에서 견인전동기로 출력되는 U, V, W 상의 전류가 1,850A 이상일 경우 검지됨.', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반배전반의 VVVFIC nfb 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 견인전동기로 출력되는 3상의 전류치 확인함. +3) 특정상의 전류치가 비정상적일 경우 특정상에 해당되는 IPM, 전류센서, 모터결선을 확인한다. +4) 전류센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작상태를 시험기를 통해 확인한다. +6) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +7) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.656536+00', null, '다대48량(2015)', 'Rotem'), ('2c2f6464-c92b-435e-b707-12ff8a51df07', '0516', '516', 'DCU#1 6위(L3) - 출입문 장애물로 인한 닫힘 실패', 'Tc1', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Close failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림 상태로 대기', '도어 닫힘 중 3회 장애물감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2c38c1c4-7be9-4cd5-b7ee-1b88b177fc79', '0212', '212', 'BECU#6 - 1축 속도신호의 비정상', 'M3', 'C', 'BECU-1축속도신호의 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit3 “1축속도신호의 비정상” 신호가 “1”이 +되면 검지 +', '해당 차량 1축속도신호의 비정상 검지 현시 및 해당 차량 활주제어불가', '해당 차량의 1축속도센서 고장 발생 +', '해당 차량의 1축속도센서가 정상적일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2c38c2ca-0075-4c02-ae82-1205e6101b44', '0520', '520', 'DCU#8 2위(L1)-이중계 절체 동작', 'Tc2', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 "Module switchover' 신호가 "1"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2c3d5502-d181-40d9-a8cd-cccbbaf45e30', '0516', '516', 'DCU#1 4위(L2) - 출입문 장애물로 인한 닫힘 실패', 'Tc1', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Close failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림 상태로 대기', '도어 닫힘 중 3회 장애물감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2c3f267b-a596-42fe-ada4-71df660b1961', '0513', '513', 'DCU#1 3위(R2) - 모듈 상태체크 에러', 'Tc1', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 “Module check error” 신호가 “1”이 되면 검지 +', 'Modulecheckerror현시(출입문은 정상작동가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태 체크 기능에 이상이 생긴 경우 고장 발생 +', 'DCU의 ‘A' 모듈과 ‘B' 모듈 간, 상태 체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2c479963-8585-4c18-ba91-6061472ed558', '0706', '706', 'HVAC#8-냉난방장치1 증발기2 과부하', 'Tc2', 'C', 'HVAC-냉난방장치1 증발기2 과부하', 'C', 'HVAC', 'HVAC 냉방작동 중 냉난방장치1 증발기 모터에 과부하 발생.', 'UNIT1 냉방 작동 불가', '1) 냉방작동 중 UNIT1의 증발기 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CREF2와 연결된 THR6이 Trip 됨.', 'UNIT1의 증발기 모터의 과부하 조건을 해소하여 정상 가능 상태로 만들고, THR6 및 마이콤 전원 리셋', '1) 냉난방배전반의 점검커버를 열고, THR6의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR6의 전류 세팅값이 3A에 맞춰져 있는지 확인하여, 아닐 경우, 십자 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동 시킨 후, THR6의 2차측 2,4,6 단자에서 각 단자간 상간 전압이 AC 380V으로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 증발기 단품 상태에서 점검을 한다. +7) THR6의 2차측 2,4,6 단자에서 각 단자간 권선저항이 모두 같은지 확인한다. (±10% 이하) (증발기 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT1의 증발기 모터의 결선을 해제한 후 4극 및 6극 모터의 권선저항을 확인 후, 문제가 있을 겨우, 증발기 모터를 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR6 부품을 교체한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2c556752-0d82-4fa6-b35a-1dabacaa4d4f', '1500', '1500', '출입문 회로차단기 차단(Car3)', 'M2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2c57767d-60b8-4a0b-be95-3cb93ef28bcf', '0506', '506', 'DCU#3 6위(L3)-출입문 입력 저전압', 'M2', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 "1"이 되면 검지.', '저전안 상태 (출입문 동작이 심하게 느려지거나 작동조차 안될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2c67b98b-028c-41a0-bc95-17c14be0a372', '0822', '822', '출력증폭기#2(AMP) 고장(Car#2)', 'M1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2c693afd-7560-465a-a206-6e5a6cb11400', '1004', '1004', 'CMSB#8 - CM 출력과전류', 'Tc2', 'C', 'CMSB-CM 출력과전류', 'C', 'CMSB', 'CMSB의 RS485 데이터 중 CMSB-TCMS SD TEXT3의 Bit5 “출력 과전류” 신호가 “1”이 되면 검지 +', '1) TCMS 화면 하단 또는 고장화면에 ‘CM 출력 과전류' 표시됨. +2) 바이패스 모드로 전환되고, CM 기동 시 ‘바이패스 기동'으로 표시됨.', 'CM 기동 시 출력전류가 정격전류의 250%(12.5A) 이상 전류가 발생될 경우 검지됨. +', '1) 차량 전원 OFF +2) CMSB 내부의 표시기 패널 RESET 버튼 누름', '1) 상기고장은 고장 소거 후, 재현시험을 진행하여 지속적으로 발생될 경우 아래와 같이 조치한다. +2) 공기압축기(CM) 출력전류를 확인한다. (공기압축기 매뉴얼 참조)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2c6c97e5-c9cf-43ed-ac93-80644ac3e61a', '0235', '235', '제동력부족(ISBD, Car2)', 'M1', 'B', '제동력부족(ISBD)', 'B', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit3 “ISBD” 신호가 “1”이 되면 검지 +', '해당 차량 제동력부족검지 현시 및 해당 차량 제동압력(BCP)이 타 차량에 비해 현저히 낮음.', '제동 7단 취급 시 해당 차량의 제동압력이 생성되지 않음. +', '제동 7단 취급 시 정상적인제동압력이 생성된 경우 소거', 'MCS 모드로 전환 후, 마스콘을 N(중립) → 제동 7단까지 수 회 취급하여 소거 여부 확인, 제동 취급 확인 후, 주의 운전할 것, 지속발생 시 관제보고하고 지시에 따를 것', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2c6cccaa-7fe7-4b6b-95e0-67237ec4b5c6', '1519', '1519', 'TU 모듈고장 - DIM3(Car4)', 'T1', 'C', 'TU 모듈고장 - DIM3', 'C', 'TCMS', 'TU의 DIM3 PCB가 이 정상적으로 인식되지 않아 점검이 필요할 때 +', '1) TU의 DIM3 PCB가 모듈 고장이 발생하면, 해당 TU의 모든 디지털 데이터 입력 동작인식 불가 +2) 해당 TU가 M1 차량 인 경우 판토상태 갱신 불가 +3) 해당 TU가 T1차량 인 경우 연장급전상태 갱신 불가', 'TU DIM3의 ID를 정상적으로 검출하지 못할 때 화면에 현시 +', 'TU DIM3의 ID를 정상적으로 검출하는 경우 소거됨', '1) TU의 DIM3 PCB 교체 +2) 불량 해소가 되지 않을 경우, 순차적으로 SCM, AUX PCB를 교체하여 정상여부 확인', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2c7226f8-5f46-4664-b181-ca7b88dc8ae3', '0508', '508', 'DCU#1 4위(L2) - 출입문 모터/인코더 고장', 'Tc1', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 “Motor / Encoder failure” 신호가 “1”이 되면 +검지 +', '출입문 정상동작 불가', ' +1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우(인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터/인코더 회로 가 손상된 경우 +', '모터/인코더 및 DCU가 정상 상태이고, 전기적 연결 상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있는지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. ※ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. ? DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. ? DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) ? DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2c8a0ae8-2b9d-48cf-82ec-bae0ea7f754f', '1110', '1110', 'PSD#1-차상 RF고장(2계)', 'Tc1', 'C', null, null, 'PSD', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2c8f8078-0c0c-4aaf-9ca2-c9743689de29', '0210', '210', 'BECU#3 - 3축 속도신호의 비정상', 'M2', 'C', 'BECU-3축속도신호의 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit1 “3축속도신호의 비정상” 신호가 “1”이 되면 검지 +', '해당 차량 3축속도신호의 비정상 검지 현시 및 해당 차량 활주제어불가', '해당 차량의 3축속도센서 고장 발생 +', '해당 차량의 3축속도센서가 정상적일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2c9d20d4-ae34-4333-abc9-3bc2cd5c6eb8', '0515', '515', 'DCU#4 5위(R3)-출입문 열림 시간 초과', 'T1', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 "Open time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 열림 동작시간이 6초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도 한 후, '장애물로 인한 열림실패' 고장과 함께 'Open time out' 고장이 함께 현시', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2ca3eea2-f3ee-4362-b131-c132ea8e81c2', '0087', '87', '화재검지기 고장(Car2)', 'M1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2ca9a264-8804-4b19-8485-358a22a11c65', '0506', '506', 'DCU#7 5위(R3)-출입문 입력 저전압', 'M4', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 "1"이 되면 검지.', '저전안 상태 (출입문 동작이 심하게 느려지거나 작동조차 안될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2caa6b16-292a-4b9c-926d-1aba0a285d8f', '0139', '139', 'VVVF#2 - INV ARM 단락(CFD)', 'M1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2cb8b24e-49ca-4d6f-83ab-c1a5ee419232', '0206', '206', 'BECU#3 - RAM 점검 고장', 'M2', 'C', 'BECU-RAM 점검 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit5 “RAM 점검 고장” 신호가 “1”이 되면 검지 +', '해당 차량 RAM 점검 고장검지 현시 및 해당 차량 정상적인 제동제어 불가', '해당 차량 BECU의 자가진단 시 고장 발생 +', '해당 차량 BECU의 자가진단 시 정상적일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2ccf24c6-01a3-4b04-9a67-a3a149313b17', '0520', '520', 'DCU#8 5위(R3) - 이중계 절체 동작', 'Tc2', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 “Module switchover” 신호가 “1”이 되면 검지 +', '이중계 절체 동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러) 이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A'모듈 및 ‘B'모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2cd64b96-ed27-4c93-939c-7aa6e735f262', '0240', '240', 'BECU#6 - 2축 스키드신호', 'M3', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2cda4aa1-94ed-42a8-a651-6e6f1872d07b', '0500', '500', 'DCU#3 5위(R3) 통신고장', 'M2', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS간 RS485 통신고장이 검지되면 발생.', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐 상태 등의 변화가 없음.', '1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우', '해당차량의 DCU 및 CU/TU 의 전원이 정상상태이고, 통신라인 연결상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜저 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는데도 지속적으로 통순고장이 검지되면, DCU의 X2,X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2cdbee63-9017-47b3-a303-284813da7a45', '761', '761', 'CAB HVAC#8 - 외기센서 이상', 'Tc2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2cdecf0d-0d49-4589-93ce-66b0a75542f3', '0308', '308', 'ATC#1-', 'Tc1', '0', null, null, '0', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2ce9afd8-d983-485d-abed-c3a1688c758a', '0507', '507', 'DCU#2 1위(R1)-초기화 실패', 'M1', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 "Calibration failure” 신호가 "1"이 되면 검지.', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터고장, 장애물 감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우', '초기화 실패를 야기한 고장 코드를 확인하여 조치 후, 재 닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2cec9050-d062-4e3c-b177-42344c43b880', '0506', '506', 'DCU#5 5위(R3) - 출입문 입력 저전압', 'T2', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 “1”이 되면 검지 +', '저전압상태(출입문 동작이 심하게 느려지거나 작동조차 안 될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하 +', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2cf06232-7cf9-462a-ab02-ed154e7ed3e7', '0508', '508', 'DCU#6 5위(R3)-출입문 모터/인코더 고장', 'M3', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 "Motor / Encoder failure” 신호가 "1"이 되면 검지.', '출입문 정상동작 불가', '1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우 (인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터 / 인코더 회로가 손상된 경우', '모터/인코더 및 DCU가 정상상태이고, 전기적 연결상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있느지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. +★ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. + +1. DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. +2. DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) +3. DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2d01c4eb-3c83-436d-9018-db35b52f261f', '0826', '826', '통합제어기(AVC) SSD 1번 고장(Car#1)', 'Tc1', 'C', '통합방송표시기-통합제어기(AVC) SSD 1번고장', 'C', 'TCMS', '통합방송표시기의 RS485 데이터 중 통합방송표시기-TCMS SD TEXT6의 Bit2,3 “AVC SSD 없음” 신호가 "1"이 되면 검지.', 'SSD에 연결되어 있는 카메라 저장 불가능 SSD1번은 1호차 ~ 4호차까지 카메라 8개 저장 SSD2번은 5호차 ~ 8호차까지 카메라 8개 저장', '통합방송제어기에 SSD 인식 불가능', '통합방송제어기에 SSD 인식', 'SSD 점검 +관련도면 없음', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2d041496-a7b4-40ed-b773-666fbc8c9887', '0152', '152', 'VVVF#7-제동패턴이상검지(BPD)', 'M4', 'C', 'VVVF-제동패턴이상검지(BPD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT31의 Bit1 “BPD” 신호가 "1"이 되면 검지.', null, '제동요구치 PWM신호의 이상 발생 시 고장검지.', '제동요구치 신호 정상입력 시 고장해제.(24V, 500Hz)', '1) TCMS의 시리얼데이터 화면에서 마스콘을 조작하며 제동노치 별 BED값이 변하는 것을 확인한다. +2) TCU(통합제어기)에 RS232케이블을 이용하여 노트북(제공품)과 연결 후 모니터링 프로그램으로 추진장치에서 BP값 인식 여부를 확인한다. +3) 제동요구치(BED)신호 배선 확인. +4) 제동요구치 신호 파형 확인. (24V, 500Hz) +5) 추진제어장치 시험기를 이용하여 TCU(통합제어장치)의 이상여부를 확인한다. +6) 상기의 점검부분에 이상이 있을 경우 관련부품을 교체한다.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2d04e338-da05-4fac-bccf-c14e24116ff3', '0500', '500', 'DCU#4 5위(R3) 통신고장', 'T1', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS 간 RS485 통신고장이 검지되면 발생 +', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐상태 등의 변화가 없음.', ' +1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우 +', '해당 차량의 DCU 및 CU/TU의 전원이 정상상태이고, 통신 라인 연결 상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜져 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적 으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는 데도 지속적으로 통신고장이 검지되면, DCU의 X2, X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상 체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2d0c038c-ccc7-4d08-82af-20deaa7a65d9', '0513', '513', 'DCU#6 2위(L1)-모듈 상태체크 에러', 'M3', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 "Module check error” 신호가 "1"이 되면 검지.', 'Module check error 현시 (출입문은 정상작동 가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태체크 기능에 이상이 생긴 경우 고장 발생.', 'DCU의 'A'모듈과 'B'모듈 간, 상태체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2d2183f6-98c1-43ec-9190-ba9bd68fef84', '0506', '506', 'DCU#6 3위(R2) - 출입문 입력 저전압', 'M3', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 “1”이 되면 검지 +', '저전압상태(출입문 동작이 심하게 느려지거나 작동조차 안 될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하 +', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2d354078-b964-4b6e-bdfa-20f41d06bba1', '0706', '706', 'HVAC#8 - 냉난방장치1 증발기2 과부하', 'Tc2', 'C', 'HVAC-냉난방장치1 증발기2 과부하', 'C', 'HVAC', 'HVAC 냉방 작동 중 냉난방장치1 증발기 모터에 과부하 발생 +', 'UNIT1냉방 작동 불가', ' +1) 냉방 작동 중 UNIT1의 증발기 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CREF2와 연결된 THR6이 Trip 됨. +', 'UNIT1의 증발기모터의 과부하조건을 해소하여 정상 가능 상태로 만들고, THR6 및 마이콤 전원 리셋', '1) 냉난방 배전반의 점검커버를 열고, THR6의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR6의 전류 세팅값이 3A에 맞춰져 있는지 확인하여, 아닐 경우, (+) 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동시킨 후, THR6의 2차측 2, 4, 6 단자에서 각 단자 간 상간 전압이 AC 380V로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 증발기 단품 상태 에서 점검을 한다. +7) THR6의 2차측 2, 4, 6 단자에서 각 단자 간 권선저항이 모두 같은지 확인한다. (±10% 이하) (증발기 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT1의 증발기 모터의 결선을 해제한 후 4극 및 6극 모터의 권선저항을 확인 후, 문제가 있을 경우, 증발기 모터�� 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR6 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2d64d962-b5ef-4981-8535-f97ca7e69be3', '0229', '229', 'AS 코크#1 차단(Car1)', 'Tc1', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2d7d197e-dea0-409d-b2d6-b6640ce034d7', '0707', '707', 'HVAC#5 - 냉난방장치2 증발기1 과부하', 'T2', 'C', 'HVAC-냉난방장치2 증발기1 과부하', 'C', 'HVAC', 'HVAC 냉방 작동 중 냉난방장치2 증발기 모터에 과부하 발생 +', 'UNIT2냉방기능불가', ' +1) 냉방 작동 중 UNIT2의 증발기 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CREF3과 연결된 THR7이 Trip 됨. +', 'UNIT2의 증발기모터의 과부하조건을 해소하여 정상 가능 상태로 만들고, THR7 및 마이콤 전원 리셋', '1) 냉난방 배전반의 점검커버를 열고, THR7의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR7의 전류 세팅값이 3A에 맞춰져 있는지 확인하여, 아닐 경우, (+) 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동시킨 후, THR7의 2차측 2, 4, 6 단자에서 각 단자 간 상간 전압이 AC 380V로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 증발기 단품 상태 에서 점검을 한다. +7) THR7의 2차측 2, 4, 6 단자에서 각 단자 간 권선저항이 모두 같은지 확인한다. (±10% 이하) (증발기 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT2의 증발기 모터의 결선을 해제한 후 4극 및 6극 모터의 권선저항을 확인 후, 문제가 있을 경우, 증발기 모터를 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR7 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2d95beaf-f086-454a-bb3d-3e119f87429e', '0227', '227', '제동관련 회로차단기 차단(Car5)', 'T2', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2d98a670-9a6e-4cec-ac55-d5d76d948154', '1513', '1513', 'CU2 모듈고장 - SCM1(Car8)', 'Tc2', 'C', 'CU1, 2 모듈고장 - SCM1', 'C', 'TCMS', 'CU의 SCM1 PCB가 이 정상적으로 인식되지 않아 점검이 필요할 때 +', '1) CU1의 SCM1 PCB가 모듈 고장이 발생하면, CU2로 자동 절체됨. (CU2로 자동 절체되면 운행 에는 지장이 없음) +2) CU2 자동 절체 시 화면의 우측 상단 경고장글자 하단에 “B.SYS” 라는 표시가 나타남. +3) 자동절체 시 열차 운행에는 관계없음. +4) CU2의 SCM1 모듈고장 시는 CU1 정상동작시 운행에는 지장이 없음.', 'CU SCM1의 ID를 정상적으로 검출하지 못할 때 화면에 현시 +', 'CU SCM1의 ID를 정상적으로 검출하는 경우 소거됨.', '1) CU의 SCM1 PCB 교체(SCM1 PCB의 설정 스위치 확인) +2) 불량 해소가 되지 않을 경우, 순차적으로 MCPU, DIM, AUX PCB를 교체하여 정상여부 확인', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2dbc4928-0a48-42da-8d03-3aedef67fcaf', '0204', '204', 'BECU#2-응하중 비정상', 'M1', 'C', 'BECU-응하중 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit3 “응하중 비정상” 신호가 "1"이 되면 검지.', '해당 차량 응하중 비정상 검지 현시.', '해당 차량의 응하중 출력이 정상범위를 벗어남.', '해당 차량 응하중 출력이 정상범위로 복귀 시 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2dc1497b-3ab1-4163-894c-e99eb881f1dd', '0032', '32', '주간제어기 비상제동 취급', 'Tc1', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2dce66eb-4cbb-44f5-ba45-126876bcb6b2', '0184', '184', '역행관련 회로차단기 차단(Car1)', 'Tc1', 'W', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.578803+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2dd5bed9-8425-4f66-a8dd-68fd6e2f67dd', '0513', '513', 'DCU#3 1위(R1)-모듈 상태체크 에러', 'M2', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 "Module check error” 신호가 "1"이 되면 검지.', 'Module check error 현시 (출입문은 정상작동 가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태체크 기능에 이상이 생긴 경우 고장 발생.', 'DCU의 'A'모듈과 'B'모듈 간, 상태체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2ddb835b-1b9a-4869-9e11-baef900a30b0', '0506', '506', 'DCU#7 3위(R2) - 출입문 입력 저전압', 'M4', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 “1”이 되면 검지 +', '저전압상태(출입문 동작이 심하게 느려지거나 작동조차 안 될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하 +', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2debc5ee-43ff-47df-9490-bb9070b73c76', '0518', '518', 'DCU#6 6위(L3)-출입문 Enable 신호 에러', 'M3', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 "Enable signal error” 신호가 "1"이 되면 검지.', 'DCU 출입문 Enable 신호 에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) 취급시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함.', '해당출입문 enable 신호 수신', '1) AUTO/MCS 모드시에는 YARD모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인한다. (YARD/FMC 모드시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.392739+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2e1e6af3-c86b-4722-a5d7-876dabbbcd3c', '1523', '1523', 'TCMS 데이타버스2 좌측라인 통신 이상(Car6)', 'M3', 'C', 'TCMS 데이터버스2 좌측라인 통신 이상', 'C', 'TCMS', 'TCMS의 초기 기동 시 자기진단에 의한 2중계 메인통신선 중 2계 메인통신 이상 검지 시 +', '1) SL-NET 2중계이므로 데이터버스 1계로 정상통신, 운행에 지장 없음. +2) 초기기동 자기진단 시 2중계를 점검하여 2계측의 이상이 검지되었다는 점검 필요용 메시지', '초기 기동 시 SL-NET 1계와 2계를 각각 통신 후 비교하여 1계는 정상통신이 되나 2계는 정상통신이 안 되는 경우 +', '정상 수리 후 차량 전체 재기동하여 SL-NET 1계와 2계 모두 정상통신이 되는 경우', '1) 고장검출호차와 고장검출 좌측 호차와의 SL-NET 통신 2계 정상여부 확인(예 : 고장호차가 3호차인 경우, 1-2-3-4-5-6-7-8에서 3호차의 좌측, 즉 2-3호차 간 SL-NET 2계 통신 상태 점검 필요) +2) 고장검지호차의 SCM PCB 교체, 정상여부 확인 +3) 고장검지호차의 좌측호차 SCM PCB 교체, 정상여부 확인 +4) 고장검지호차와 고장검지 좌측호차의 SL-NET 2계 메인통신 배선의 연결 상태 확인 +5) 상기 2 ~ 4번 점검에도 정상적으로 복귀되지 않는 경우, CU/TU ASS'Y 교체(백보드 확인 필요)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2e222632-08c2-4635-a35a-5da8ff7c4954', '0735', '735', 'HVAC#8-전자접촉기 압축기(CRCM)2 고장', 'Tc2', 'C', 'HVAC-전자접촉기 압축기(CRCM)2 고장', 'C', 'HVAC', 'HVAC 냉방작동 중 CRCM2 전자접촉기 고장 발생.', '냉방 기능 저하(전냉방시 반냉방으로 작동)', '냉방작동 중 2.5초 이상동안 CRCM2 작동 feedback 신호가 수신되지 않는 경우', 'CRCM2 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CRCM2를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRCM2와 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2e2eaef9-cfbe-4cc2-bfb0-b635a83624cc', '0518', '518', 'DCU#6 5위(R3) - 출입문 Enable 신호 에러', 'M3', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 “Enable signal error” 신호가 “1”이 되면 검지 +', 'DCU 출입문Enable신호에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드 시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을 때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드 시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입 상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호 장치로부터의 출입문 열림 명령 신호) 취급 시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함. +', '해당 출입문 enable 신호수신', '1) AUTO/MCS 모드 시에는 YARD 모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인 한다. (YARD/FMC 모드 시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2e36e9b4-4cad-44ad-8471-1106b651a34a', '0912', '912', 'TRAIN RADIO#1-TRCP(차량조작반) 고장', 'Tc1', 'C', 'TRAIN RADIO-TRCP(차량조작반) 고장', 'C', 'RADIO', 'Train Radio의 RS485 데이터 중 Train Radio-TCMS SD TEXT15의 Bit0 “TRCP 고장” 신호가 "1"이 되면 검지.', '기관사 무전기 통화 불능', 'HW 고장', '제어기 리셋', null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2e3c8d63-64b0-40d5-8b70-ca6a07107837', '0131', '131', 'VVVF-IPM V상 이상검지(GDFV) (Car2)', 'M1', 'C', 'VVVF-IPM V상 이상검지(GDFV)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT34의 Bit5 “GDFV” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 'IPM V상 이상검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치 내부 IPM에 과전류, 과온이 검지될경우.', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반배전반의 VVVFIC nfb 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 견인전동기로 출력되는 3상의 전류치 확인함. +3) 특정상의 전류치가 비정상적일 경우 특정상에 해당되는 IPM, 전류센서, 모터결선을 확인한다. +4) 전류센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작상태를 시험기를 통해 확인한다. +6) IPM 전원공급기의 전원연결상태 또는 광케이블의 연결상태와 배선상태를 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분��� 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.656536+00', null, '다대48량(2015)', 'Rotem'), ('2e4782e3-d168-4b46-b24a-98e457aeae78', '0151', '151', 'VVVF#7-통신이상검지(MONIA_ERR)', 'M4', 'C', 'VVVF-통신이상검지(MONIA_ERR)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT31의 Bit0 “MONIA_ERR” 신호가 "1"이 되면 검지.', null, 'TCMS와 VVVF간 통신이상 발생 시 고장검지.', 'TCMS와 VVVF간 정상통신 가능 시 소거됨.', '1) 추진제어장치(VVVF) 리셋 실시 후 통신고장 소거됨을 확인. +2) 통신고장 소거가 되지 않을 경우 추진제어장치 PUZ 보드 신품으로 교체후 통신고장 소거여부 확인. +3) 위 조건에도 고장이 소거되지 않을 경우, TCMS-추진제어장치간 RS485 통신케이블 연결상태 점검.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2e65576b-8415-49b1-af6a-56fac8419235', '0425', '425', 'ESK 연장급전 투입', 'T1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2e6a9c4e-4c6a-4ba5-a394-f9244a4cd568', '0502', '502', 'DCU#5 2위(L1)-출입문 장애물검지', 'T2', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2e71a964-45dd-48b1-9c10-e5ebc3fda1a1', '1209', '1209', 'FDU#5 - 스위치 고장', 'T2', 'C', 'FDU-스위치 고장', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT5의 Bit4 “Switch Fault” 신호가 “1”이 되면 검지 +', 'Switch Fault 현시 및 FDU의 조작버튼 동작 안 됨(화재검지 및 기타 기능에는 상관없음)', ' +1) FDU가 부팅될 때 스위치가 눌려진 상태(3.3V 전압이 인가된 상태)인 경우 +2) FDU가 부팅될 때 스위치 고장으로 인하여 항상 눌러진 상태(3.3V 전압이 인가된 상태)에 있는 경우 +', 'FDU가 부팅될 때 스위치가 눌려진 상태(3.3V 전압이 인가된 상태)가 아닌 경우', '1) 고장이 발생한 수신기의 스위치 상태 확인 및 점검 +2) FDU의 전원을 리셋하여 소거여부 확인 +3) 문제가 지속될 경우, 수신기 교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2e851d56-c845-4488-96b0-869fcf157b32', '0508', '508', 'DCU#8 5위(R3)-출입문 모터/인코더 고장', 'Tc2', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 "Motor / Encoder failure” 신호가 "1"이 되면 검지.', '출입문 정상동작 불가', '1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우 (인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터 / 인코더 회로가 손상된 경우', '모터/인코더 및 DCU가 정상상태이고, 전기적 연결상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있느지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. +★ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. + +1. DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. +2. DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) +3. DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2e8a7591-1389-41ac-8e1d-75c964e6bc7e', '0749', '749', 'HVAC#8-380V 전원고장', 'Tc2', 'C', 'HVAC-380V 전원고장', 'C', 'HVAC', 'HVAC 메인 전원 AC 380V 전원 고장 발생', 'HVAC 냉방 및 난방 기능 불가', '차량으로부터 공급되는 AC 380V가 입력되지 않는 경우', '차량으로부터 AC 380V 전압이 정상적으로 입력', '1) 차량으로부터 AC 380V 전압이 정상적으로 입력되는지 확인한다. +2) 차량전원이 정상일 경우, 냉난방 배전반의 CBLVD 차단기가 꺼져 있는지 확인 후, 꺼져있을 경우, 켠다. +3) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2e904061-ebf9-4e5d-91c6-c205ee9f07d5', '0518', '518', 'DCU#5 6위(L3)-출입문 Enable 신호 에러', 'T2', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 "Enable signal error” 신호가 "1"이 되면 검지.', 'DCU 출입문 Enable 신호 에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) 취급시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함.', '해당출입문 enable 신호 수신', '1) AUTO/MCS 모드시에는 YARD모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인한다. (YARD/FMC 모드시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.392739+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2e9ca80c-db76-44e4-a696-4860bfea1e67', '0240', '240', 'BECU#4-2축스키드신호', 'T1', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2e9f9b4e-5f9b-4ab5-b674-b03decce5844', '0209', '209', 'BECU#6-4축속도신호의 비정상', 'M3', 'C', 'BECU-4축속도신호의 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit0 “4축속도신호의 비정상” 신호가 "1"이 되면 검지.', '해당 차량 4축속도신호의 비정상 검지 현시 및 해당 차량 활주제어 불가.', '해당 차량의 4축 속도센서 고장 발생.', '해당 차량의 4축 속도센서가 정상적일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2ea837ab-0730-4d4d-8bde-6c8d3f8b33ee', '0520', '520', 'DCU#2 3위(R2)-이중계 절체 동작', 'M1', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 "Module switchover' 신호가 "1"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.392739+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2eac91e9-bb66-4184-b971-7d1be8a5d928', '0516', '516', 'DCU#4 4위(L2) - 출입문 장애물로 인한 닫힘 실패', 'T1', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Close failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림 상태로 대기', '도어 닫힘 중 3회 장애물감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2eb61007-3783-4693-b79c-24193a5008d2', '0508', '508', 'DCU#3 4위(L2)-출입문 모터/인코더 고장', 'M2', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 "Motor / Encoder failure” 신호가 "1"이 되면 검지.', '출입문 정상동작 불가', '1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우 (인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터 / 인코더 회로가 손상된 경우', '모터/인코더 및 DCU가 정상상태이고, 전기적 연결상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있느지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. +★ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. + +1. DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. +2. DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) +3. DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2ebd3c1e-74df-46db-bbc7-ce6983a42d3f', '1509', '1509', '열차분리#1 검지(Car3)', 'M2', 'B', '열차분리#1 검지', 'B', 'TCMS', '차량의 열차분리#1 검지 +', '1) 1위측 열차검지신호(SOTS1) 검출 시 화면에 현시 +2) 실제 열차분리 시 검지되었는지 확인 필요 +(실제 열차분리 시 다른 차량 이 접근하지 못하도록 선조치 필요) +3) 실제 열차 분리 시 비상제동 안전루프에 의해 비상제동 체결됨. +4) 열차 분리에 따라 분리 위치부터 차량제어장치(TU)와 반대편 편성제어장치(CU)의 통신고장 동반 발생', 'TU의 1위측 열차분리신호(SOTS1) 신호 활성(LOW) 입력 시 고장 현시 +', 'TU의 1위측 열차분리신호(SOTS1) 신호 정상(HIGH) 입력 시 소거됨.', '1) 실제 열차분리 시 관제에 연락하고, 지시에 따름 +2) 회로 차단기 ELCB ON 상태 확인 +3) TU의 1위측 열차분리신호 DIM3 PCB의 입력채널(SOTS +1) 점검/교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2ec42c0d-de83-4ea3-91b3-a94d972894da', '0232', '232', 'BC 코크(차하#2) 차단(Car5)', 'T2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2ed86f21-8bc6-44de-8234-0e70f8ec1e7d', '0720', '720', 'HVAC#5-실내온도 센서1 고장', 'T2', 'C', 'HVAC-실내온도 센서1 고장', 'C', 'HVAC', '객실 실내온도 센서1 고장 발생', '실내온도 센서1 고장현시', '온도센서 검지범위는 -45~85도 (820~1330옴) 인데, 2초 이상 검지범위를 벗어나는 경우', '온도센서 검지 값이 2초 이상 허용온도 범위 내 일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820~1330옴 을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우, 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2ed979ee-631f-4129-9b0e-126c20291ff9', '1525', '1525', 'TCMS 데이타버스1 우측라인 통신 이상(Car3)', 'M2', 'C', 'TCMS 데이터버스1 우측라인 통신 이상', 'C', 'TCMS', 'TCMS의 초기 기동 시 자기진단에 의한 2중계 메인통신선 중 1계 메인통신 이상 검지 시 +', '1) SL-NET 2중계이므로 데이터버스 2계로 정상통신, 운행에 지장 없음. +2) 초기기동 자기진단 시 2중계를 점검하여 1계측의 이상이 검지되었다는 점검 필요용 메시지', '초기 기동 시 SL-NET 1계와 2계를 각각 통신 후 비교하여 2계는 정상통신이 되나 1계는 정상통신이 안 되는 경우 +', '정상 수리 후 차량 전체 재기동하여 SL-NET 1계와 2계 모두 정상통신이 되는 경우', '1) 고장검출호차와 고장검출 우측호차와의 SL-NET 통신 1계 정상여부 확인(예 : 고장호차가 3호차인 경우, 1-2-3-4-5-6-7-8에서 3호차의 우측 즉, 3-4호차 간 SL-NET 1계 통신 상태 점검 필요) +2) 고장검지호차의 SCM PCB 교체 정상여부 확인 +3) 고장검지호차의 우측호차 SCM PCB 교체 정상여부 확인 +4) 고장검지호차와 고장검지 우측호차의 SL-NET 1계 메인통신 배선의 연결 상태 확인 +5) 상기 2 ~ 4번 점검에도 정상적으로 복귀되지 않는 경우, CU/TU ASS'Y 교체(백보드 확인 필요)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2ee6305e-a3fe-4b2a-af47-8e9de6347158', '1201', '1201', 'FDU#1 - 감지기1 화재감지', 'Tc1', 'W', 'FDU-감지기1 화재감지 (Car1~8)', 'W', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 “Detector1 State” 신호가 “11”이 되면 검지 +', '화재상태현시(자동소거 안 됨.)', '하기 2가지 조건을 모두 만족하여야 화재신호가 출력 됨. (연동모드 동작) +1) 이웃한(앞 혹은 뒤에 위치한) 감지기 중 하나의 감지기라도 주의 혹은 화재상태에 있어야 함. +2) Detector1(해당 감지기)에서 측정된 연기농도가 15% 이상이거나 온도가 65℃ 이상인 경우 +', '1) FDU의 복귀버튼 조작 시 +2) FDU 전원 리셋 시', '1) 해당 감지기 위치의 화재 발생 여부 확인 +2) 화재 오감지일 경우 FDU의 복귀버튼 취급 +3) 오감지일 경우 감지기의 청소주기 확인(내부 먼지 제거)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2ee92e13-1fe7-45a0-b64c-53859189935f', '0203', '203', 'BECU#4 - 전자제어밸브의 고장', 'T1', 'C', 'BECU-전자제어밸브의 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit2 “전자제어밸브의 고장” 신호가 “1”이 +되면 검지 +', '해당 차량 전자제어밸브의 고장검지 현시 및 해당 차량 제동제어불가', '해당 차량의 상용전자제어밸브가 작동하지 않음. +', '해당 차량의 상용전자제어밸브가 정상작동 시 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2ef3f270-1e2e-45ff-8dc8-81c278e5cd24', '0503', '503', 'DCU#1 6위(L3) - 출입문 내부 비상핸들 취급(EED)', 'Tc1', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2ef64a32-c53e-428e-a424-b438412630bb', '0521', '521', 'DCU#7 4위(L2) - 모듈 상태 이상', 'M4', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 “01” 또는 “00”이 되면 +검지 +', '이중계절체동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러)이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2f0cbdd7-f7b0-4007-ae93-d8ec276150d9', '0329', '329', 'ATC#8-', 'Tc2', '0', null, null, '0', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2f1fadf4-6567-4019-89c9-5704c1550e3f', '0511', '511', 'DCU#3 6위(L3) - 출입문 닫힘 리미트 스위치2 고장', 'M2', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 “DCS2 Failure(Right)” 신호가 “1”이 되면 검지 +', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2f39f997-6bc3-42ef-90b4-e29d842fc214', '0752', '752', 'HVAC#7-배기댐퍼 닫힘고장', 'M4', 'C', 'HVAC-배기댐퍼 닫힘고장', 'C', 'HVAC', '차량 배기댐퍼가 닫혀있는 상태에서 배기댐퍼 닫힘 리미트 스위치가 작동되지 않음', '배기댐퍼 닫힘 고장 현시', '배기댐퍼를 닫힘으로 제어했으나 닫힘 리미트 스위치 입력이 없을 경우', '배기댐퍼 닫힘 상태에서 리미트 스위치 입력이 정상적으로 입력', '1) 배기댐퍼가 닫힌 상태에서 닫힘 리미트 스위치가 정상적으로 작동되었는지 확인한다. +2) 닫힘 리미트 스위치가 정상작동 되었음에도 문제가 발생될 경우, 스위치를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2f410119-7efd-4c60-8871-792c63987256', '0502', '502', 'DCU#4 6위(L3)-출입문 장애물검지', 'T1', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2f75fed8-67a8-458b-b173-23e2c97a22bc', '0501', '501', 'DCU#6 5위(R3) - 출입문 차단', 'M3', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2f779a08-bf17-4c71-8962-3ad709d82323', '0514', '514', 'DCU#4 1위(R1) - 출입문 닫힘 시간 초과', 'T1', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 “Close time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 닫힘 동작 시간이 7초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도한 후, ‘장애물로 인한 닫힘 실패' 고장과 함께 ‘Close time out' 고장이 함께 현시 +', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2f7b315f-b5f4-4963-8f4c-2d6eb782f43c', '0521', '521', 'DCU#1 3위(R2) - 모듈 상태 이상', 'Tc1', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 “01” 또는 “00”이 되면 +검지 +', '이중계절체동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러)이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2f7b8848-028a-42bd-87cb-acdf26baf344', '1111', '1111', 'PSD#8-바이패스 상태', 'Tc2', 'W', null, null, 'PSD', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2f95ab15-1bf2-4d5d-b8c0-5470ab64b687', '0229', '229', 'AS 코크#1 차단(Car8)', 'Tc2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2f98fb34-38c6-4d2a-902f-a89f841fca8e', '0747', '747', 'HVAC#7-전자접촉기 차량히터2(CRRHT) 고장', 'M4', 'C', 'HVAC-전자접촉기 차량히터2(CRRHT) 고장', 'C', 'HVAC', '객실 난방기 작동 중 CRRHT2 전자접촉기 고장 발생.', '객실 전난방 시 1/3난방만 작동', '객실 전난방 작동 중 2.5초 이상동안 CRRHT2 작동 feedback 신호가 수신되지 않는 경우', 'CRRHT2 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CRRHT2를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRRHT2와 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2f9a79a3-df0c-4d2c-b64c-771551e212f3', '0507', '507', 'DCU#3 2위(L1)-초기화 실패', 'M2', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 "Calibration failure” 신호가 "1"이 되면 검지.', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터고장, 장애물 감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우', '초기화 실패를 야기한 고장 코드를 확인하여 조치 후, 재 닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2fb42763-f114-453c-9a32-49daeaea1247', '1101', '1101', 'PSD#8 - 지상 PSD 장애(1계)', 'Tc2', 'D', 'PSD-지상 PSD 장애', 'D', 'PSD', 'PSD의 RS485 데이터 중 PSD-TCMS SD TEXT5(TEXT6)의 Bit1 “지상 PSD장애” 신호가 “1”이 되면 검지 ([지상 PSD 설비 장애] - 역사 내 종합 제어반으로부터 PSD 장애 신호 발생) +', '역사 내 PSD 개별도어 등이 고장검지 될 때 발생됨.', ' +1) 개별 도어 물체 검지 혹은 PSD 개별도어 고장 등일 때 발생됨. +2) 차상장치와 무관한 고장코드이며 차상장치 동작상에 문제가 없다. +', '1) PSD 장애는 역사 내 PSD 개별도어 등에 대한 고장이므로 기관사는 주의를 한다. +2) 기관사는 전면 PSD 개별도어 상태를 확인하고 PSD 닫힘을 확인하고 출발한다. +3) PSD 닫힘이 시행되지 않고, 전동차에서 PSD 열림 현시로 인하여 자동출발이 시행되지 않을 경우 사령실과 연락하여 조치를 취하고 확인 후 안전 출발한다. +* 해당 역사를 벗어나면 소멸됨.', null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2fba15cd-ed3c-4b3c-be8b-9ecdafe4e918', '0504', '504', 'DCU#2 3위(R2) - 출입문 외부 비상핸들 취급(EAD)', 'M1', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2fc7cc66-b5a9-4c25-bb95-3a37f99deae3', '0227', '227', '제동관련 회로차단기 차단(Car6)', 'M3', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2fcf45e6-97e7-4b02-b1f7-47a07bb2eb55', '0516', '516', 'DCU#3 5위(R3)-출입문 장애물로 인한 닫힘 실패', 'M2', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Close failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림상태로 대기', '도어 닫힘 중 3회 장애물 감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2fd2ea6c-9238-46ca-960c-967e8603adf8', '1700', '1700', 'PIC#8 통신고장', 'Tc2', 'C', 'PIC#1, 8 통신고장', 'C', 'PIC', 'TCMS와 PIC 간 E-NET 통신고장이 검지되면 발생 +', '1) 해당 PIC가 마스터인 경우, 반대편 PIC로 절체 +2) 1호차 및 8호차의 PIC가 모두 고장일 경우, 1호차 ~ 8호차 노선안내표시기 화면 오현시', '통신고장 +', '통신 재개 시', '1) 이더넷 스위치 링크 확인 +2) 이더넷 케이블 점검 +3) 제어보드 및 전원보드 교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('2fd3cbd2-7109-42c1-bef1-49a43efd9983', '0701', '701', 'HVAC#5-냉난방장치2 압축기2 과부하', 'T2', 'C', 'HVAC-냉난방장치2 압축기2 과부하', 'C', 'HVAC', 'HVAC 냉방작동 중 냉난방장치2 압축기2 또는 응축기2 모터에 과부하 발생.', '냉방 기능 저하(전냉방시 반냉방으로 작동)', '1) 냉방작동 중 UNIT2의 압축기2 또는 응축기2 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRCM4와 연결된 THR4가 Trip 됨.', 'UNIT2의 압축기2 또는 응축기2 모터의 과부하 조건을 해소하여 정상 가능 상태로 만들고, THR4 및 마이콤 전원 리셋', '1) 냉난방배전반의 점검커버를 열고, THR4의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR4의 전류 세팅값이 11.5A에 맞춰져 있는지 확인하여, 아닐 경우, 십자 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동 시킨 후, THR4의 2차측 2,4,6 단자에서 각 단자간 상간 전압이 AC 380V으로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 압축기 및 응축기 단품 상태에서 점검을 한다. +7) THR4의 2차측 2,4,6 단자에서 각 단자간 권선저항이 모두 같은지 확인한다. (±10% 이하) (압축기2 및 응축기2 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT2의 압축기2 또는 응축기2 모터의 결선을 해제한 후 각 부품의 권선저항을 확인 후, 문제가 있는 부품을 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR4 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2fde7b89-d380-4d75-bb5b-48879156c9fd', '0514', '514', 'DCU#8 6위(L3)-출입문 닫힘 시간 초과', 'Tc2', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 "Close time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 닫힘 동작시간이 7초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도 한 후, '장애물로 인한 닫힘실패' 고장과 함께 'Close time out' 고장이 함께 현시', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('2fe33906-eedf-4c1d-ad21-e3ca184dbc3c', '0109', '109', 'VVVF-IPM 이상검지(GDF) (Car7)', 'M4', 'C', 'VVVF-IPM 이상검지(GDF)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT31의 Bit4 “GDF” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 'IPM 이상검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치 내부 IPM에 과전류, 과온이 검지될경우.', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반배전반의 VVVFIC nfb 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 견인전동기로 출력되는 3상의 전류치 확인함. +3) 특정상의 전류치가 비정상적일 경우 특정상에 해당되는 IPM, 전류센서, 모터결선을 확인한다. +4) 전류센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작상태를 시험기를 통해 확인한다. +6) IPM 전원공급기의 전원연결상태 또는 광케이블의 연결상태와 배선상태를 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.656536+00', null, '다대48량(2015)', 'Rotem'), ('2ff3992f-f83c-4c39-ac12-82ea5c595392', '0753', '753', 'HVAC#1-배기댐퍼 열림고장', 'Tc1', 'C', 'HVAC-배기댐퍼 열림고장', 'C', 'HVAC', '환기 시, 차량 배기댐퍼가 열려 있는 상태에서 배기댐퍼 열림 리미트 스위치가 작동되지 않음', '배기댐퍼 열림 고장 현시', '배기댐퍼를 열림으로 제어했으나 열림 리미트 스위치 입력이 없을 경우', '배기댐퍼 열림 상태에서 리미트 스위치 입력이 정상적으로 입력', '1) 배기댐퍼가 열린 상태에서 열림 리미트 스위치가 정상적으로 작동되었는지 확인한다. +2) 열림 리미트 스위치가 정상작동 되었음에도 문제가 발생될 경우, 스위치를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3005061a-8e63-4839-bdf9-0c0f675552a0', '0515', '515', 'DCU#6 5위(R3)-출입문 열림 시간 초과', 'M3', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 "Open time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 열림 동작시간이 6초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도 한 후, '장애물로 인한 열림실패' 고장과 함께 'Open time out' 고장이 함께 현시', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3020921b-9dc8-44ab-8f54-750d310be69c', '1410', '1410', 'BMS#8-충전저온(CUT, -10도이하)', 'Tc2', 'D', 'BMS-충전저온(CUT)', 'D', 'BMS', '해당차량의 배터리 온도가 -25도이하가 되면 검지', '차량 배터리 충전저온 검지 후, -35도이하이면 충전 접촉기(CK)가 차단된다.', '배터리 충전저온 (-20도 이상).', '배터리 충전저온 정상범위로 회복 (-20도 이상)', '1) 배터리 NFB 상태 확인 +2) 이상이 없으면 차량 전체를 리셋한다. +3) 차량 리셋 후에도 동일고장이면 사령실과 연락하여 조치를 취한다 (배터리를 상온조건으로 만든다.)', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3023fe30-43c5-4220-bb31-f40a75314ed0', '0511', '511', 'DCU#4 1위(R1)-출입문 닫힘 리미트 스위치2 고장', 'T1', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 "DCS2 Failure(Right)” 신호가 "1"이 되면 검지.', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3025bc56-4ecf-4798-814f-0ae7f506208a', '0715', '715', 'HVAC#5-냉난방장치1 압력스위치1(DPS) 저압', 'T2', 'D', 'HVAC-냉난방장치1 압력스위치1(DPS) 저압', 'D', 'HVAC', '냉난방장치1 냉매 압력스위치1 저압 발생.', 'UNIT1 CYCLE1 냉방 기능 불가', 'UNIT1 DSP1측 냉매 압력이 3초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우', '냉매 압력이 정상 수치 2±0.5(kgf/cm2 이상으로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CREF2의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)을 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안되는 것을 확인한 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('302f7f08-4d9c-4d27-b41b-6dfe37503872', '0509', '509', 'DCU#3 1위(R1)-출입문 잠김 리미트 스위치 고장', 'M2', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 "DLS Failure” 신호가 "1"이 되면 검지.', '출입문 잠김 상태 확인 불가', '1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3033a190-8467-442d-b53c-a02421f41120', '0073', '73', '경고, 스크린도어 열림상태', 'Tc1', 'W', '경고, 스크린도어 열림상태', 'W', 'PSD', '차량의 출입문이 닫힌 상태에서 PSD 스크린도어가 열린상태가 3초이상 유지될 때 경고', '1) TCMS 화면 하단에 '경고, 스크린도어 열림상태'가 표시되고, 일반화면 우측 PSD 상태에 '열림경고' 붉은색 점멸표시됨. +2) PSD 수신 불가 지역에는 경고메시지 해제됨.', '1) FM/YARD이외의 모드 및 PSD와의 통신이 정상상태에서 차량 출입문은 닫힌 상태이나 PSD로부터 PSD 스크린 도어 열림상태가 3초이상 지속될 때 검지함.', '1) PSD로부터 스크린 도어 열림상태 해제 또는 차량으로부터 출입문 열림 신호가 수신되면 해제. +2) 운전모드가 FM/YARD 모드일 때 해제', '1) 대부분 PSD가 늦게 닫힐때 현시되므로 PSD로부터 닫힘신호가 수신되면 해제됨. +2) 지속 현시되면 차상/지상 PSD 장치간 통신을 확인한다.', ' +REC10100HN0', '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3044b3d8-54a4-4ad1-bc13-f980689e6c60', '0517', '517', 'DCU#1 3위(R2)-출입문 장애물로 인한 열림 실패', 'Tc1', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Open failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘상태로 대기', '도어 열림 중 3회 장애물 감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 열림 시, 장애물 감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('30525b30-145b-4a0a-bc9f-9ee4448cfd42', '0721', '721', 'HVAC#1 - 냉난방장치2 압력스위치2(DPS) 냉매부족', 'Tc1', 'C', 'HVAC-냉난방장치2 압력스위치2(DPS) 냉매부족', 'C', 'HVAC', '냉난방장치2 냉매 압력스위치2 저압 발생 +', 'UNIT2CYCLE2 냉방 기능 불가', 'UNIT2DSP2측 냉매압력이 30초 이상0.5±0.3(kgf/cm2) 이하로 떨어지는 경우 +', '냉매압력이 정상수치 2±0.5(kgf/cm2) 이상 유지하도록 하고, 마이콤전원을 리셋', '1) 배전반 점검 커버를 열고 마이콤 전원을 리셋한 후, 냉방 가동 시, CREF4의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)을 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설 여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안 되는 것을 확인한 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('3060f2c2-d69b-4acf-98e6-5995b911720e', '0048', '48', '보조공기압축기 스위치 취급(Car2)', 'M1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('3069892f-2d7c-4da8-a868-378762573f1f', '0209', '209', 'BECU#2 - 4축 속도신호의 비정상', 'M1', 'C', 'BECU-4축속도신호의 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit0 “4축속도신호의 비정상” 신호가 “1”이 +되면 검지 +', '해당 차량 4축속도신호의 비정상 검지 현시 및 해당 차량 활주제어불가', '해당 차량의 4축속도센서 고장 발생 +', '해당 차량의 4축속도센서가 정상적일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('3070c7e5-722e-4e80-908f-758592aa80b6', '0710', '710', 'HVAC#3 - 냉난방장치2 압력스위치2(DPS) 고압', 'M2', 'D', 'HVAC-냉난방장치2 압력스위치2(DPS) 고압', 'D', 'HVAC', '냉난방장치2 냉매 압력스위치2 고압 발생 +', 'UNIT2CYCLE2 냉방기능불가', 'UNIT2DSP2측 냉매압력이 3초 이상 28±1(kgf/cm2) 이상 되는 경우 +', '냉매압력이 정상수치 15±0.7(kgf/cm2) 이하로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CRCM4의 부하측 전류를 측정하여 응축기 팬의 동작여부를 확인한다. +2) 응축기 코일의 전면에 이물질로 인한 막힘이 있는지 확인한다. +3) 응축기 팬 상부 그릴에 외부 이물질로 인한 막힘이 있는지 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('309cf6a4-3157-4724-b181-9e6dcee052af', '0722', '722', 'HVAC#3 - 냉난방장치2 압력스위치1(DPS) 냉매부족', 'M2', 'C', 'HVAC-냉난방장치2 압력스위치1(DPS) 냉매부족', 'C', 'HVAC', '냉난방장치2 냉매 압력스위치1 저압 발생 +', 'UNIT2CYCLE1냉방 기능 불가', 'UNIT2DSP1측 냉매압력이 30초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우 +', '냉매압력이 정상수치 2±0.5(kgf/cm2) 이상유지하도록 하고, 마이콤전원을 리셋', '1) 배전반 점검 커버를 열고 마이콤 전원을 리셋한 후, 냉방 가동 시, CREF4의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)를 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설 여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안 되는 것을 확인한 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('30a14fab-60ab-46ec-b821-f8874de4ff09', '1504', '1504', '냉방장치용 AC 회로차단기 차단(Car1)', 'Tc1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('30ad38e9-921a-471e-b93e-67999c7e6e0b', '0117', '117', 'VVVF-전동기 속도센서 고장검지(PGD) (Car7)', 'M4', 'C', 'VVVF-전동기 속도센서 고장검지(PGD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT32의 Bit4 “PGD” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 '전동기 속도센서 이상검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치에서 각축속도를 계산하여 속도의 편차가 2km/h이상인 조건에서 검지.', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반배전반의 VVVFIC nfb 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 견인전동기 속도센서 상태를 확인하고, 속도센서가 연결된 경로 배선연결 상태를 확인한다. +3) PGI 보드의 동작상태를 시험기를 통해 확인한다. +4) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.71571+00', null, '다대48량(2015)', 'Rotem'), ('30c20a0a-195a-4f02-9cff-1a1bbc3b5069', '0728', '728', 'HVAC#8-냉난방장치2 토출 센서 고장', 'Tc2', 'C', 'HVAC-냉난방장치2 토출 센서 고장', 'C', 'HVAC', '냉난방장치2의 토출 센서 고장 발생', '냉난방장치2 토출센서 고장현시', '온도센서 검지범위는 -45~85도 (820~1330옴) 인데, 2초 이상 검지범위를 벗어나는 경우', '온도센서 검지 값이 2초 이상 허용온도 범위 내 일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820~1330옴 을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우, 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('30c2c6bb-c55a-454b-bdc4-02cc3c9f5fc9', '1202', '1202', 'FDU#1 - 감지기1 고장', 'Tc1', 'C', 'FDU-감지기1 고장 (Car1~8)', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 “Detector1 State” 신호가 “10”이 되면 검지 +', '감지기고장상태현시(자동소거 안 됨)', ' +1) 감지기로부터 데이터 응답이 없는 경우 +2) 감지기로부터 수신된 데이터의 CRC가 맞지 않는 경우 +3) 감지기로부터 수신된 데이터의 ID가 송신 ID와 일치하지 않는 경우 +', 'FDU 전원 리셋 후 감지기로부터 정상적으로 데이터가 수신된 경우', '1) FDU 전원 리셋 후 고장 소거 여부 확인 +2) 정상동작중인 감지기와 위치 교환 후 FDU 전원 리셋 및 고장 상태 확인 +3) 동일한 감지기에서 고장 발생 시 감지기 교체 +4) 동일한 위치에서 고장 발생 시 감지기 라인 점검', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('30ccb0fd-3d71-43f2-98e5-297ca4c6d962', '0515', '515', 'DCU#5 1위(R1) - 출입문 열림 시간 초과', 'T2', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 “Open time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 열림 동작시간이 6초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도한 후, ‘장애물로 인한 열림 실패' 고장과 함께 ‘Open time out' 고장이 함께 현시 +', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('30d3f3a6-1feb-4630-ab1e-ff1b4a420ad6', '0838', '838', '실내객실표시기(PIB) 고장(Car#4)', 'T1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('30d451a3-9bac-4bc8-8d1f-09911e5b1eee', '0513', '513', 'DCU#2 2위(L1)-모듈 상태체크 에러', 'M1', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 "Module check error” 신호가 "1"이 되면 검지.', 'Module check error 현시 (출입문은 정상작동 가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태체크 기능에 이상이 생긴 경우 고장 발생.', 'DCU의 'A'모듈과 'B'모듈 간, 상태체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('30f30d33-7dd5-4df4-ac3f-91041f0a2bfd', '0509', '509', 'DCU#4 4위(L2)-출입문 잠김 리미트 스위치 고장', 'T1', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 "DLS Failure” 신호가 "1"이 되면 검지.', '출입문 잠김 상태 확인 불가', '1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('30fa7223-acb1-4dad-922a-d274f5cff004', '0307', '307', 'ATC#1-반대편 출입문 코드 수신', 'Tc1', 'W', null, null, 'ATC', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('31145f30-afa6-481c-908f-51c54da74330', '0719', '719', 'HVAC#2-실내온도 센서2 고장', 'M1', 'C', 'HVAC-실내온도 센서2 고장', 'C', 'HVAC', '객실 실내온도 센서2 고장 발생', '실내온도 센서2 고장현시', '온도센서 검지범위는 -45~85도 (820~1330옴) 인데, 2초 이상 검지범위를 벗어나는 경우', '온도센서 검지 값이 2초 이상 허용온도 범위 내 일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820~1330옴 을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우, 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('31217607-f7c9-4f00-9290-94a1fa532602', '1704', '1704', '노선안내표시기#6 고장(Car5)', 'T2', 'C', '노선안내표시기#2 고장', 'C', 'PIC', 'PIC 장치의 노선안내표시기#2이 고장이 났을 때 발생 +', '1) 노선안내표시기 화면 미현시 +2) 노선안내표시기 안내 화면 오현시', '통신고장 +', '통신 재개 시', '1) 이더넷 스위치 링크 확인 +2) 이더넷 케이블 점검 +3) 제어보드 및 전원보드 교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('312c7ad9-7f4c-4ed9-96e1-da2a343d90cc', '0871', '871', '실내카메라#1(SCAM) 고장(Car#7)', 'M4', 'C', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('312e7080-0ea5-4cd8-8c80-4013666447a7', '0815', '815', '비상인터폰#1(PEI) 고장(Car#1)', 'Tc1', 'C', '통합방송표시기-비상인터폰#1(PEI) 고장', 'C', 'AVC', '통합방송표시기의 E-NET 데이터 중 통합방송표시기-TCMS SD TEXT8의 Bit6 “PEI#1 고장” 신호가 +“1”이 되면 검지 +', '고장장치 통신불량으로 비상통화 기능 불능', '마스터통합방송제어기에 주기적(2초) TCP 응답이 없을 경우 통신불량으로 판단 +', '마스터통합방송제어기에 TCP 응답재개', '관련 CB(방송/표시기/CCTV 전원공급장치1, CBPAU# +1) 리셋하고 통신라인 및 상태점검 관련도면 : RES16001DX0, REC70700DX0', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('3132835b-f15a-4eba-bb72-a36b1a33a149', '0516', '516', 'DCU#2 3위(R2)-출입문 장애물로 인한 닫힘 실패', 'M1', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Close failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림상태로 대기', '도어 닫힘 중 3회 장애물 감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('314d1cdc-1b7f-44b5-8e3a-0807e14d9497', '0743', '743', 'HVAC#2-전자접촉기 보조히터2(AHEK) 고장', 'M1', 'C', 'HVAC-전자접촉기 보조히터2(AHEK) 고장', 'C', 'HVAC', 'HVAC 보조난방기 작동 중 AHEK2 전자접촉기 고장 발생.', 'UNIT1 보조난방기 전난방 시 반난방만 작동', '보조난방기 작동 중 2.5초 이상동안 AHEK2 작동 feedback 신호가 수신되지 않는 경우', 'AHEK2 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) AHEK2를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, AHEK2와 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('316af094-9d37-4cf9-997f-b387924572b8', '0515', '515', 'DCU#4 4위(L2)-출입문 열림 시간 초과', 'T1', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 "Open time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 열림 동작시간이 6초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도 한 후, '장애물로 인한 열림실패' 고장과 함께 'Open time out' 고장이 함께 현시', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('316d44ec-8fd2-4b28-a884-71cbc83aa462', '0518', '518', 'DCU#8 6위(L3) - 출입문 Enable 신호 에러', 'Tc2', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 “Enable signal error” 신호가 “1”이 되면 검지 +', 'DCU 출입문Enable신호에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드 시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을 때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드 시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입 상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호 장치로부터의 출입문 열림 명령 신호) 취급 시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함. +', '해당 출입문 enable 신호수신', '1) AUTO/MCS 모드 시에는 YARD 모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인 한다. (YARD/FMC 모드 시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('317a2155-3993-4ee8-b960-6517b225a810', '0202', '202', 'BECU#3-덤프밸브고장(전두대차)', 'M2', 'C', 'BECU-덤프밸브고장(선두대차)', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit1 “덤프밸브고장(선두대차)” 신호가 "1"이 되면 검지.', '해당 차량 덤프밸브고장(선두대차) 검지 현시 및 해당 차량 활주제어 불가.', '해당 차량 선두대차의 덤프밸브가 작동하지 않음.', '해당 차량 선두대차의 덤프밸브가 정상 작동 시 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('317cae84-ab14-41a7-a3a0-686831801ba7', '0883', '883', '통합제어기(AVC) 고장(Car#8)', 'Tc2', 'C', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3195d59c-2931-4ef9-b114-4c23db71eb57', '0746', '746', 'HVAC#4 - 전자접촉기 배기팬1(CRVF) 고장', 'T1', 'C', 'HVAC-전자접촉기 배기팬1(CRVF) 고장', 'C', 'HVAC', 'HVAC 환기 작동 중 CRVF1 전자접촉기 고장 발생 +', '환기 시 차량 배기팬1 운전 불가능', '환기 작동 중 2.5초 이상 동안 CRVF1 작동 feedback 신호가 수신되지 않는 경우 +', 'CRVF1 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CRVF1을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRVF1과 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('31a29b1d-3e44-425f-8498-c568bbd46c23', '0519', '519', 'DCU#7 6위(L3) - ZVR 신호 에러', 'M4', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 “ZVR signal error” 신호가 “1”이 되면 검지 +', '출입문이강제로 닫히게 되고, 열림은 불가능', ' +1) 차량 ZVR 신호가 없는 상태(차량 주행상태)에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함. +', '해당 출입문 ZVR 신호 수신', '1) 차량 이 주행중이라면, 차량 이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('31aeb31e-1346-4da8-8e15-498a3f1a0f74', '0214', '214', 'BECU#7 - BC 압력센서 고장', 'M4', 'C', 'BECU-BC 압력센서 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit5 “BC 압력센서 고장” 신호가 “1”이 되면 검지 +', '해당 차량 BC 압력센서 고장검지 현시 및 해당 차량 제동력부족, 제동불완해 검지 불가', '해당 차량의 BC 압력센서 고장 +', '해당 차량의 BC 압력센서가 정상일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('31c14b39-42ee-4dd9-ae91-a8534941f19a', '0900', '900', '비상인터폰 동작(Car#4-1)', 'T1', 'W', null, null, 'RADIO', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('31c35218-8a7b-4a08-836f-0f902d5d5437', '0725', '725', 'HVAC#5 - 냉방시험 불가능', 'T2', 'C', 'HVAC-냉방시험 불가능', 'C', 'HVAC', '운전실 TCMS에서 냉방시험 작동을 할 때, 냉방운전이 불가능한 경우 발생 +', '냉방시험 운전 불가능', '실내 또는 실외온도가 10도 미만일 경우(환절기 또는 겨울철에 냉방가동 시 시스템 보호를 위한 온도조건) +', '실내 또는 실외온도가10도 이상일 때, 냉방시험작동', '1) TCMS 화면에서 실내 또는 실외 온도가 10도 미만인지 확인한다. +2) 실내 및 실외 온도가 10도 이상인데도 냉방 가동이 되지 않을 시, TCMS-마이콤 간 통신불량이 있는지 확인하고 조치한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('31c8ebd9-f4f4-4e95-b3ef-1d6d38d434c6', '0508', '508', 'DCU#8 4위(L2)-출입문 모터/인코더 고장', 'Tc2', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 "Motor / Encoder failure” 신호가 "1"이 되면 검지.', '출입문 정상동작 불가', '1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우 (인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터 / 인코더 회로가 손상된 경우', '모터/인코더 및 DCU가 정상상태이고, 전기적 연결상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있느지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. +★ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. + +1. DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. +2. DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) +3. DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('31cbeb38-cced-45ef-9d16-a09cd1e80ba0', '0505', '505', 'DCU#2 2위(L1) - 출입문 입력 고전압', 'M1', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 “1”이 되면 검지 +', '고전압 상태(그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상 +', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('31d16daf-9d16-4657-b0fe-29ed788c8d64', '0237', '237', '보안제동코크 차단(Car6)', 'M3', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('31e3a234-6923-49cb-afe8-2c56d03e1639', '0229', '229', 'AS 코크#1 차단(Car6)', 'M3', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('31e4b018-05f1-481f-a707-b156a7c52361', '0514', '514', 'DCU#1 6위(L3) - 출입문 닫힘 시간 초과', 'Tc1', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 “Close time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 닫힘 동작 시간이 7초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도한 후, ‘장애물로 인한 닫힘 실패' 고장과 함께 ‘Close time out' 고장이 함께 현시 +', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('31e71b09-5c9c-4a9b-9b70-f1dad748bf5d', '0312', '312', 'ATC#1 - 50cm 이상 과주정차', 'Tc1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('31e81fb4-39f5-4313-ac0f-23a3152360be', '0129', '129', 'VVVF-IPM W상 이상검지(GDFW) (Car7)', 'M4', 'C', 'VVVF-IPM W상 이상검지(GDFW)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT34의 Bit3 “GDFW” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 'IPM W상 이상검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치 내부 IPM에 과전류, 과온이 검지될경우.', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반배전반의 VVVFIC nfb 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 견인전동기로 출력되는 3상의 전류치 확인함. +3) 특정상의 전류치가 비정상적일 경우 특정상에 해당되는 IPM, 전류센서, 모터결선을 확인한다. +4) 전류센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작상태를 시험기를 통해 확인한다. +6) IPM 전원공급기의 전원연결상태 또는 광케이블의 연결상태와 배선상태를 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.71571+00', null, '다대48량(2015)', 'Rotem'), ('31fcfebb-df7c-4188-a8d2-04abb8845c2d', '0401', '401', 'SIV#1 중고장', 'Tc1', 'B', 'SIV-중고장', 'B', 'SIV', '보조전원장치(SIV)의 RS485데이터 중 SIV-TCMS SD TEXT3의 Bit6 "SIV CUT"신호가 "1"이 되면 검지.', '1) 보조전원장치(SIV) 일반화면에 보조전원장치 상태 붉은색으로 표시됨. +2) 반대편 TC CAR의 보조전원장치(SIV)가 정상동작이면 자동 연장급전 됨.. +3) 연장급전 시 편성의 에어컨 반냉, AC등구류 절감 등의 현상이 나타남.', '1) 보조전원장치(SIV)의 경고장이 3분에 3회 이상누적또는 지속적으로 검지되어 중고장 발생함. +2) 과온고장, 접지고장에 대해서는 1번 발생으로 중고장 발생함.', '보조전원장치(SIV) 리셋 실시 후 고장 소거됨. 단 고장소거 후 재기동시 동일고장이 발생할 경우 다시 중고장 발생함.', '1) 보조전원장치(SIV) 리셋 실시 후 중고장을 소거됨을 확인함. +2) 단 주회로 접지고장, THF 고장에 대해서는 리셋 불가함. +3) TCMS 고장데이터 또는 보조전원장치(SIV) 고장 데이터를 통해 중고장이 발생한 고장 내역 수집함. +4) 수집된 고장내역에 따라 조치 실시함.', null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('32060a66-6ebc-4402-a9a1-f2db31479273', '0102', '102', 'VVVF#2 - 회생제동차단(BRK BLOCK)', 'M1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('322531c3-6b3a-4ec5-8665-b84b8ac42261', '0703', '703', 'HVAC#6-냉난방장치1 압축기2 과부하', 'M3', 'C', 'HVAC-냉난방장치1 압축기2 과부하', 'C', 'HVAC', 'HVAC 냉방작동 중 냉난방장치1 압축기2 또는 응축기2 모터에 과부하 발생.', '냉방 기능 저하(전냉방시 반냉방으로 작동)', '1) 냉방작동 중 UNIT1의 압축기2 또는 응축기2 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRCM2와 연결된 THR2가 Trip 됨.', 'UNIT1의 압축기2 또는 응축기2 모터의 과부하 조건을 해소하여 정상 가능 상태로 만들고, THR2 및 마이콤 전원 리셋', '1) 냉난방배전반의 점검커버를 열고, THR2의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR2의 전류 세팅값이 11.5A에 맞춰져 있는지 확인하여, 아닐 경우, 십자 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동 시킨 후, THR2의 2차측 2,4,6 단자에서 각 단자간 상간 전압이 AC 380V으로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 압축기 및 응축기 단품 상태에서 점검을 한다. +7) THR2의 2차측 2,4,6 단자에서 각 단자간 권선저항이 모두 같은지 확인한다. (±10% 이하) (압축기2 및 응축기2 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT1의 압축기1 또는 응축기1 모터의 결선을 해제한 후 각 부품의 권선저항을 확인 후, 문제가 있는 부품을 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR2 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3226b663-3f19-4581-a9d4-abe9e9e44fdb', '0801', '801', '통합방송표시기#8 통신고장', 'Tc2', 'B', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3226baab-df96-4427-b9b8-f22919cab84a', '0511', '511', 'DCU#3 3위(R2) - 출입문 닫힘 리미트 스위치2 고장', 'M2', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 “DCS2 Failure(Right)” 신호가 “1”이 되면 검지 +', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('3236dfb9-9fa1-4467-b030-1d8e39c14f92', '0700', '700', 'HVAC#1 통신고장', 'Tc1', 'C', 'HVAC-통신고장', 'C', 'HVAC', 'HVAC와 TCMS간 RS485 통신고장이 검지되면 발생.', '화면상 HVAC의 실내온도, 운전모드 등의 데이터가 반응하지 않음.', '1) 마이콤 전원 CB OFF +2) 통신연결 불량 +3) 해당 마이콤이 검수요원에 의해 firmware 업데이트 중인 경우', '해당차량의 마이콤 및 CU/TU 의 전원이 정상상태이고, 통신라인 연결상태가 정상', '1) 냉난방배전반의 점검커버를 열고, 마이콤이 정상적으로 켜저 있는지 확인한다. +2) 만약 마이콤 전원이 꺼져 있다면, 마이콤 DC전원 CB 및 차량 배전반에 위치한 냉난방장치 CB가 정상적으로 켜져 있는지 확인한다. +3) 마이콤이 정상적으로 켜져 있는데도 지속적으로 통순고장이 검지되면, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3251b456-8e79-4efc-91ab-0663ed92a014', '0033', '33', 'ATC 비상제동', 'Tc1', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3259196f-5697-4117-8557-78f35b312a25', '1501', '1501', '차상신호장치(ATC) 회로차단기 차단(Car4)', 'T1', 'W', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('326cc9ed-6ae5-440d-8575-37c6455f3dbe', '0508', '508', 'DCU#6 2위(L1) - 출입문 모터/인코더 고장', 'M3', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 “Motor / Encoder failure” 신호가 “1”이 되면 +검지 +', '출입문 정상동작 불가', ' +1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우(인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터/인코더 회로 가 손상된 경우 +', '모터/인코더 및 DCU가 정상 상태이고, 전기적 연결 상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있는지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. ※ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. ? DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. ? DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) ? DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('327861ae-ce32-449a-9f99-6f42f15fcb7d', '0220', '220', 'BECU#7 - 공기제동 감쇄지령 비정상', 'M4', 'C', 'BECU-공기제동 감쇄지령 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit3 “공기제동 감쇄지령 비정상” 신호가 “1”이 되면 검지 +', '해당 차량 공기제동감쇄지령 비정상 검지 현시 및 해당 차량 정상적인전공교차제어 불가 (부수차량 공기제동 감쇄 불가)', '해당 차량의 공기제동감쇄지령 신호가 정상범위를 벗어남. (5.0 ~ 95.0%) +', '해당 차량의 공기제동감쇄지령 신호가 정상범위일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 소거되지 않을 경우 해당 차량 옆의 Pair 차량(구동차) BECU를 리셋(CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('3278fc2b-6fb0-4577-b39d-b51c2c7be36d', '0735', '735', 'HVAC#7 - 전자접촉기 압축기(CRCM)2 고장', 'M4', 'C', 'HVAC-전자접촉기 압축기(CRCM)2 고장', 'C', 'HVAC', 'HVAC 냉방 작동 중 CRCM2 전자접촉기 고장 발생 +', '냉방 기능 저하(전냉방 시 반냉방으로 작동)', '냉방 작동 중 2.5초 이상 동안 CRCM2 작동 feedback 신호가 수신되지 않는 경우 +', 'CRCM2 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CRCM2를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRCM2와 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('3287b44e-df88-4eeb-bc78-e5a96399ed08', '0741', '741', 'HVAC#3 - 전자접촉기 보조히터4(AHEK) 고장', 'M2', 'C', 'HVAC-전자접촉기 보조히터4(AHEK) 고장', 'C', 'HVAC', 'HVAC 보조난방기 작동 중 AHEK4 전자접촉기 고장 발생 +', 'UNIT2 보조난방기 전난방 시 반난방만 작동', '보조난방기 작동 중 2.5초 이상 동안 AHEK4 작동 feedback 신호가 수신되지 않는 경우 +', 'AHEK4 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) AHEK4를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, AHEK4와 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('32a28ced-9693-46eb-bc74-9409383b31b4', '0103', '103', 'VVVF#3-추진차단(P BLOCK)', 'M2', 'D', null, null, 'VVVF', null, null, null, null, null, null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('32a90a2f-d4c6-45fd-bf79-9f17dab3aaf6', '0149', '149', 'VVVF#2-FC 저전압검지(FCLVD)', 'M1', 'C', 'VVVF-FC 저전압검지(FCLVD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT30의 Bit6 “FCLVD” 신호가 "1"이 되면 검지.', null, '필터캐패시터 전압이 850V 이하 감압 시 고장발생', '1) 역행 고장검지 2초 후 자동 재기동 +2) 제동 제동 OFF시 고장 소거', '1) 상기고장이 간헐적으로 발생하는 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 FC전압에 이상이 있는지 확인한다. +3) 추진제어장치 내부 고전압부에 소손흔적이 있는지 확인한다. +4) FC에 연결된 버스바의 체결상태가 양호한지 확인한고, 버스바를 분리하여 FC의 Capacitance를 측정하여 이상이 없는지 확인한다. +5) 전압센서의 외관 및 단자 체결상태를 확인한다. +6) 추진제어장치 시험기를 이용하여 TCU(통합제어장치)의 이상여부를 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('32aa2b2a-f6b8-4f23-a718-7cd4eb8cb2f8', '0745', '745', 'HVAC#4 - 전자접촉기 배기팬2(CRVF) 고장', 'T1', 'C', 'HVAC-전자접촉기 배기팬2(CRVF) 고장', 'C', 'HVAC', 'HVAC 환기 작동 중 CRVF2 전자접촉기 고장 발생 +', '환기 시 차량 배기팬2 운전 불가능', '환기 작동 중 2.5초 이상 동안 CRVF2 작동 feedback 신호가 수신되지 않는 경우 +', 'CRVF2 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CRVF2를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRVF2와 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('32b2582b-ed59-48b7-85e8-3f31d116e680', '0737', '737', 'HVAC#1 - 전자접촉기 증발기4(CREF) 고장', 'Tc1', 'C', 'HVAC-전자접촉기 증발기4(CREF) 고장', 'C', 'HVAC', 'HVAC 냉방 작동 중 CREF4 전자접촉기 고장 발생 +', 'UNIT2 냉방 작동 불가', '냉방 작동 중 2.5초 이상 동안 CREF4 작동 feedback 신호가 수신되지 않는 경우 +', 'CREF4 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CREF4를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CREF4와 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('32b30268-c274-4257-a3d7-58cedfb4015e', '0511', '511', 'DCU#1 3위(R2)-출입문 닫힘 리미트 스위치2 고장', 'Tc1', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 "DCS2 Failure(Right)” 신호가 "1"이 되면 검지.', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('32c95828-12fb-434a-8c05-6495e9712ee3', '0752', '752', 'HVAC#6-배기댐퍼 닫힘고장', 'M3', 'C', 'HVAC-배기댐퍼 닫힘고장', 'C', 'HVAC', '차량 배기댐퍼가 닫혀있는 상태에서 배기댐퍼 닫힘 리미트 스위치가 작동되지 않음', '배기댐퍼 닫힘 고장 현시', '배기댐퍼를 닫힘으로 제어했으나 닫힘 리미트 스위치 입력이 없을 경우', '배기댐퍼 닫힘 상태에서 리미트 스위치 입력이 정상적으로 입력', '1) 배기댐퍼가 닫힌 상태에서 닫힘 리미트 스위치가 정상적으로 작동되었는지 확인한다. +2) 닫힘 리미트 스위치가 정상작동 되었음에도 문제가 발생될 경우, 스위치를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('32e19267-7b4e-4d16-a5dc-f77a6d9d25de', '0899', '899', '비상인터폰 동작(Car#3-2)', 'M2', 'W', null, null, 'RADIO', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('32e7fb8f-a814-4143-88f5-3381435d54ca', '0751', '751', 'HVAC#4-냉난방장치1 보조히터 과열', 'T1', 'C', 'HVAC-냉난방장치1 보조히터 과열', 'C', 'HVAC', 'HVAC1 보조난방기 작동 중 과열 발생.', 'UNIT1 보조난방기 난방 불가', '보조난방기 작동 중 1초 이상동안 온도가 70도 이상으로 과온센서 정상 신호가 수신되지 않는 경우', '1초 이상동안 60도 미만으로 온도가 떨어져 과온센서 정상 신호가 수신되는 경우', '1) 보조난방기가 꺼진 상태에서도 문제 발생 시, 과온 센서를 교체한다. +2) 센서 교체 후에도 문제가 발생되면, 배선에 문제가 없는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('32f75101-7444-454e-bef2-447a91db143c', '0724', '724', 'HVAC#4-냉난방장치1 압력스위치1(DPS) 냉매부족', 'T1', 'C', 'HVAC-냉난방장치1 압력스위치1(DPS) 냉매부족', 'C', 'HVAC', '냉난방장치1 냉매 압력스위치1 저압 발생.', 'UNIT1 CYCLE1 냉방 기능 불가', 'UNIT1 DSP1측 냉매 압력이 30초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우', '냉매 압력이 정상 수치 2±0.5(kgf/cm2 이상 유지하도록 하고, 마이콤 전원을 리셋', '1) 배전반 점검 커버를 열고 마이콤 전원을 리셋한 후, 냉방 가동 시, CREF2의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)을 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안되는 것을 확인한 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('33009e35-6d7d-4146-ba96-e047d5a7cc29', '0733', '733', 'HVAC#1-전자접촉기 압축기(CRCM)4 고장', 'Tc1', 'C', 'HVAC-전자접촉기 압축기(CRCM)4 고장', 'C', 'HVAC', 'HVAC 냉방작동 중 CRCM4 전자접촉기 고장 발생.', '냉방 기능 저하(전냉방시 반냉방으로 작동)', '냉방작동 중 2.5초 이상동안 CRCM4 작동 feedback 신호가 수신되지 않는 경우', 'CRCM4 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CRCM4를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRCM4와 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3307cb13-ac79-4923-a4b8-18abe704ccd6', '0511', '511', 'DCU#6 5위(R3)-출입문 닫힘 리미트 스위치2 고장', 'M3', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 "DCS2 Failure(Right)” 신호가 "1"이 되면 검지.', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('330b69d0-9386-4640-a8b7-7bbfb682e171', '0315', '315', 'ATC#8 - 타코미터 이상', 'Tc2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('3310335a-f3e7-4637-a0f4-5897518dbe30', '0108', '108', 'VVVF-가선과전류 검지(IOCD) (Car6)', 'M3', 'C', 'VVVF-가선과전류 검지(IOCD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT31의 Bit3 “IOCD” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 '가선과전류 검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치에 입력되는 전류가 1,500A 이상일 경우 검지됨.', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반배전반의 VVVFIC nfb 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 추진제어장치에 입력되는 전류치 확인함. +3) 입력되는 전류치가 비정상적일 경우 추진제어장치 입력회로(HSCB, LB1,2, CHRe)를 접검한다.. +4) LB Box내의 전류센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작상태를 시험기를 통해 확인한다. +6) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.656536+00', null, '다대48량(2015)', 'Rotem'), ('3315afe7-af9d-45ec-8140-efe1d67fdff4', '0219', '219', 'BECU#7 - 제동지령 비정상', 'M4', 'C', 'BECU-제동지령 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit2 “제동지령 비정상” 신호가 “1”이 되면 검지 +', '해당 차량 제동지령비정상 검지 현시 및 해당 차량 정상적인제동제어불가(상용제동지령에 따른 제어)', '해당 차량의 제동지령 신호가 정상범위를 벗어남. (5.0 ~ 95.0%) +', '해당 차량의 제동지령 신호가 정상범위일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 소거되지 않을 경우 해당 선택 운전실의 PWM 엔코더를 리셋(CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('33183719-8da1-4ff6-83ce-4b401dcca496', '0516', '516', 'DCU#7 5위(R3)-출입문 장애물로 인한 닫힘 실패', 'M4', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Close failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림상태로 대기', '도어 닫힘 중 3회 장애물 감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3343b6b6-8052-4fbe-b197-7b1f285f103c', '0734', '734', 'HVAC#8 - 전자접촉기 압축기(CRCM)3 고장', 'Tc2', 'C', 'HVAC-전자접촉기 압축기(CRCM)3 고장', 'C', 'HVAC', 'HVAC 냉방 작동 중 CRCM3 전자접촉기 고장 발생 +', '냉방 기능 저하(전냉방 시 반냉방으로 작동)', '냉방 작동 중 2.5초 이상 동안 CRCM3 작동 feedback 신호가 수신되지 않는 경우 +', 'CRCM3 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CRCM3을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRCM3과 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('3345613f-aea9-40cd-8549-592578b3326a', '0741', '741', 'HVAC#1 - 전자접촉기 보조히터4(AHEK) 고장', 'Tc1', 'C', 'HVAC-전자접촉기 보조히터4(AHEK) 고장', 'C', 'HVAC', 'HVAC 보조난방기 작동 중 AHEK4 전자접촉기 고장 발생 +', 'UNIT2 보조난방기 전난방 시 반난방만 작동', '보조난방기 작동 중 2.5초 이상 동안 AHEK4 작동 feedback 신호가 수신되지 않는 경우 +', 'AHEK4 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) AHEK4를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, AHEK4와 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('335e21bf-d7ca-4666-a3e7-7afed2c44286', '0517', '517', 'DCU#5 3위(R2) - 출입문 장애물로 인한 열림 실패', 'T2', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Open failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘 상태로 대기', '도어열림 중 3회 장애물감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 열림 시, 장애물감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('33678b5c-f93a-4beb-976d-f82d1190680f', '0516', '516', 'DCU#3 4위(L2)-출입문 장애물로 인한 닫힘 실패', 'M2', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Close failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림상태로 대기', '도어 닫힘 중 3회 장애물 감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('33786479-87af-4ca1-8631-013d7a5d6dfa', '0700', '700', 'HVAC#1 통신고장', 'Tc1', 'C', 'HVAC-통신고장', 'C', 'HVAC', 'HVAC와 TCMS 간 RS485 통신고장이 검지되면 발생 +', '화면상 HVAC의 실내온도, 운전모드 등의 데이터가 반응하지 않음.', ' +1) 마이콤 전원 CB OFF +2) 통신연결 불량 +3) 해당 마이콤이 검수요원에 의해 firmware 업데이트 중인 경우 +', '해당 차량의 마이콤 및 CU/TU의전원이정상상태이고, 통신라인 연결 상태가 정상', '1) 냉난방 배전반의 점검커버를 열고, 마이콤이 정상적으로 켜져 있는지 확인한다. +2) 만약 마이콤 전원이 꺼져 있다면, 마이콤 DC 전원 CB 및 차량 배전반에 위치한 냉난방장치 CB가 정상적으로 켜져 있는지 확인한다. +3) 마이콤이 정상적으로 켜져 있는 데도 지속적으로 통신고장이 검지되면, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀 밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('3383caf0-1664-4f23-9e89-a32dc05c743e', '0710', '710', 'HVAC#6-냉난방장치2 압력스위치2(DPS) 고압', 'M3', 'D', 'HVAC-냉난방장치2 압력스위치2(DPS) 고압', 'D', 'HVAC', '냉난방장치2 냉매 압력스위치2 고압 발생.', 'UNIT2 CYCLE2 냉방 기능 불가', 'UNIT2 DSP2측 냉매 압력이 3초 이상 28±1(kgf/cm2) 이상 되는 경우', '냉매 압력이 정상 수치 15±0.7(kgf/cm2 이하로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CRCM4의 부하측 전류를 측정하여 응축기 팬의 동작여부를 확인한다. +2) 응축기 코일의 전면에 이물질로 인한 막힘이 있는지 확인한다. +3) 응축기 팬 상부 그릴에 외부 이물질로 인한 막힘이 있는지 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('33960a63-6d5d-495f-b570-dc29bce1098f', '0510', '510', 'DCU#3 3위(R2)-출입문 닫힘 리미트 스위치1 고장', 'M2', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 "DCS1 Failure(Leftt)” 신호가 "1"이 되면 검지.', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('33a04439-6841-41af-809b-d596a3b1a21b', '0019', '19', '비상제동 스위치 취급(측면)', 'Tc1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('33afced9-88b7-41e8-89d9-133a246fc93a', '0518', '518', 'DCU#7 6위(L3)-출입문 Enable 신호 에러', 'M4', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 "Enable signal error” 신호가 "1"이 되면 검지.', 'DCU 출입문 Enable 신호 에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) 취급시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함.', '해당출입문 enable 신호 수신', '1) AUTO/MCS 모드시에는 YARD모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인한다. (YARD/FMC 모드시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('33b40c26-bf54-45bd-aa30-e63490cc45da', '0711', '711', 'HVAC#1 - 냉난방장치2 압력스위치1(DPS) 저압', 'Tc1', 'D', 'HVAC-냉난방장치2 압력스위치1(DPS) 저압', 'D', 'HVAC', '냉난방장치2 냉매 압력스위치1 저압 발생 +', 'UNIT2CYCLE1 냉방기능불가', 'UNIT2DSP1측 냉매압력이 3초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우 +', '냉매압력이 정상수치 2±0.5(kgf/cm2) 이상으로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CREF4의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)를 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설 여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안 되는 것을 확인한 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('33cb2744-293d-49b3-8051-55fbc5dfb789', '0426', '426', '연장급전 접촉기 고장', 'T1', 'B', '연장급전 접촉기 고장', 'B', 'SIV', '연장급전 접촉기와 TCMS간 명령 불이행 시 연장급전 접촉기 고장 검지.', '1) TCMS화면에 고장정보 현시되며, 보조전원장치(SIV) 중고장 발생 시 연장급전이 이루어 지지 않음. +2) 중고장이 발생된 보조전원장치(SIV)가 있는 유닛의 부하에는 전원공급 불가(에어컨, 히터, 등구류 등)', '연장급전 명령에도 연장급전 접촉기가 여자되지 않을때, 혹은 연장급전 명령이 없는데 연장급전 접촉기가 여자되었을때 검지함.', 'TCMS-연장급전 접촉기 간 명령 정상적으로 이행 시 소거됨.', '1) 연장급전박스(ESK)와 차량 TCMS간 배선의 연결 상태를 확인한다. +2) 연장급전 접촉기의 이상유무 및 결선상태를 확인한다. +3) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('33d801f7-e5c6-4eab-be6d-d450e99ee444', '0179', '179', 'VVVF#3 - LB2 투입불량(LB2NC)', 'M2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('33f6853f-cab3-4ce5-8f52-2850585ce393', '0034', '34', 'ATC 비상제동', 'Tc2', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('33fda42e-2300-4511-97d3-c36c087b6003', '0141', '141', 'VVVF#3-제어전원전압이상(PWM1)(CLVD_P1)', 'M2', 'C', 'VVVF-제어전원전압이상(PWM1)(CLVD_P1)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT29의 Bit6 “CLVD_P1” 신호가 "1"이 되면 검지.', null, 'PWM보드 내부의 제어전원 이상 검지 시 중고장 발생.', '동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) PWM보드 1군 전면의 CN1, CN2 커넥터 핀 상태 및 체결상태 확인. +2) PWM보드 1군 내부의 PCB의 소손, 냉납, 열화 유무 확인. +3) 추진제어장치 시험기를 이용하여 PWM보드의 정상동작을 확인한다. +4) 상기의 점검부분에 이상이 있을 경우 관련부품을 교체한다.', null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3405feaa-3f14-417c-ab94-af6d00a30c7c', '0221', '221', 'BECU#8-제동력부족(ISBD)', 'Tc2', 'B', 'BECU-제동력부족(ISBD)', 'B', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit5 “ISBD” 신호가 "1"이 되면 검지.', '해당 차량 제동력 부족 검지 현시 및 해당 차량 제동압력(BCP)이 타 차량에 비해 현저히 낮음.', '제동 7단 취급 시 해당 차량의 제동압력이 생성되지 않음.', '제동 7단 취급 시 정상적인 제동압력이 생성된 경우 소거.', 'MCS모드로 전환 후, 마스콘을 N(중립) -> 제동7단까지 수회취급 하여 소거 여부 확인. 제동 취급 확인 후, 주의 운전 할 것. +지속발생시 관제보고하고 지시에 따를 것.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('340b38f8-66ab-4a3a-97d0-530e68f2d302', '0110', '110', 'VVVF-아날로그 전원이상검지(APSF) (Car6)', 'M3', 'C', 'VVVF-아날로그 전원이상검지(APSF)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT31의 Bit5 “APSF” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 '아날로그 전원이상검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치 제어기에 PWR 보드에서 출력하는 아날로그 전원에 이상이 발생할 경우.', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반배전반의 VVVFIC nfb 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) PWR 보드의 LED 상태를 확인한다. LED가 소등되어 있거나 특정LED의 상태가 이상할 경우 PWR 보드를 교환한다. +3) PWR-SEN 보드로 연결되는 배선에 이상이 없는지 확인한다. +4) SEN 보드의 동작상태를 시험기를 통해 확인한다. +5) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.656536+00', null, '다대48량(2015)', 'Rotem'), ('340b5b49-88b5-4c81-bd35-5bdaffdae141', '0515', '515', 'DCU#2 3위(R2) - 출입문 열림 시간 초과', 'M1', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 “Open time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 열림 동작시간이 6초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도한 후, ‘장애물로 인한 열림 실패' 고장과 함께 ‘Open time out' 고장이 함께 현시 +', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('340c88f9-90f7-4975-a735-3b057b95604a', '0100', '100', 'VVVF#2 통신고장', 'M1', 'B', 'VVVF-통신고장', 'B', 'VVVF', 'VVVF와 TCMS간 RS485 통신고장이 검지되면 발생.', 'TCMS 화면에 고정정보 현시되며, 추진제어장치 상태화면에 나타나는 데이터에 변동이 없음.', 'TCMS-추진제어장치(VVVF) 간 통신정보가 3초이상 동일한 정보로 유지되면 통신고장을 검지함.', 'TCMS-추진제어장치(VVVF) 간 통신정보가 정상적으로 통신이 될경우 소거됨.', '1) 추진제어장치(VVVF) 리셋 실시 후 통신고장 소거됨을 확인. +2) 통신고장 소거가 되지 않을 경우 추진제어장치 PUZ 보드 신품으로 교체후 통신고장 소거여부 확인. +3) 위 조건에도 고장이 소거되지 않을 경우, TCMS-추진제어장치간 RS485 통신케이블 연결상태 점검.', null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('340d4e73-b4f6-4f9c-8b6b-9fd70c0aff29', '0213', '213', 'BECU#6-AC 압력센서고장', 'M3', 'C', 'BECU-AC 압력센서 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit4 “AC 압력센서 고장” 신호가 "1"이 되면 검지.', '해당 차량 공기제동장치고장, AC압력센서 고장 검지 현시 및 해당 차량 제동제어 불가.', '해당 차량의 AC압력센서 고장.', '해당 차량의 AC압력센서가 정상일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('341afad8-b559-4907-a107-64a2eae1ac05', '0155', '155', 'VVVF#3-역행/회생이상검지(PBR)', 'M2', 'C', 'VVVF-역행/회생이상검지(PBR)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT31의 Bit4 “PBR” 신호가 "1"이 되면 검지.', null, '역행, 제동신호 동시 입력', '동시 입력상황 해제', '1) 상기고장이 간헐적으로 발생하는 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 역행/제동신호에 이상이 있는지 확인한다. +3) 차량의 제어회로 중 전진/후진 신호가 추진제어장치로 연결되는 경로에 이상이 없는지 확인한다. +4) 추진제어장치 시험기를 이용하여 TCU(통합제어장치)의 이상여부를 확인한다. +5) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('342a624d-fb67-428a-b6eb-ce938d5e3791', '0514', '514', 'DCU#3 3위(R2)-출입문 닫힘 시간 초과', 'M2', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 "Close time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 닫힘 동작시간이 7초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도 한 후, '장애물로 인한 닫힘실패' 고장과 함께 'Close time out' 고장이 함께 현시', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('34324dc9-0146-4f6d-9ea3-bbbac50a4955', '0507', '507', 'DCU#6 1위(R1)-초기화 실패', 'M3', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 "Calibration failure” 신호가 "1"이 되면 검지.', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터고장, 장애물 감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우', '초기화 실패를 야기한 고장 코드를 확인하여 조치 후, 재 닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('34427b18-c4bc-4f81-9946-61980dc42bba', '1207', '1207', 'FDU#4 - 감지기4 화재감지', 'T1', 'W', 'FDU-감지기4 화재감지 (Car1~8)', 'W', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 “Detector1 State” 신호가 “11”이 되면 검지 +', '화재상태현시(자동소거 안 됨.)', '하기 2가지 조건을 모두 만족하여야 화재신호가 출력 됨. (연동모드 동작) +1) 이웃한(앞 혹은 뒤에 위치한) 감지기 중 하나의 감지기라도 주의 혹은 화재상태에 있어야 함. +2) Detector1(해당 감지기)에서 측정된 연기농도가 15% 이상이거나 온도가 65℃ 이상인 경우 +', '1) FDU의 복귀버튼 조작 시 +2) FDU 전원 리셋 시', '1) 해당 감지기 위치의 화재 발생 여부 확인 +2) 화재 오감지일 경우 FDU의 복귀버튼 취급 +3) 오감지일 경우 감지기의 청소주기 확인(내부 먼지 제거)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('344bbada-5b69-4795-ab81-8f23c6361a82', '0519', '519', 'DCU#5 1위(R1) - ZVR 신호 에러', 'T2', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 “ZVR signal error” 신호가 “1”이 되면 검지 +', '출입문이강제로 닫히게 되고, 열림은 불가능', ' +1) 차량 ZVR 신호가 없는 상태(차량 주행상태)에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함. +', '해당 출입문 ZVR 신호 수신', '1) 차량 이 주행중이라면, 차량 이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('344bd85d-0c23-463c-a590-955d3c87cfba', '0753', '753', 'HVAC#8 - 배기댐퍼 열림고장', 'Tc2', 'C', 'HVAC-배기댐퍼 열림고장', 'C', 'HVAC', '환기 시, 차량 배기댐퍼가 열려 있는 상태에서 배기댐퍼 열림 리미트 스위치가 작동되지 않음 +', '배기댐퍼 열림 고장 현시', '배기댐퍼를 열림으로 제어했으나 열림 리미트 스위치 입력이 없을 경우 +', '배기댐퍼 열림상태에서 리미트 스위치 입력이 정상적으로 입력', '1) 배기댐퍼가 열린 상태에서 열림 리미트 스위치가 정상적으로 작동되었는지 확인한다. +2) 열림 리미트 스위치가 정상작동 되었음에도 문제가 발생될 경우, 스위치를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('344bf798-4b94-4ca1-affb-da2c5275d5e1', '0507', '507', 'DCU#4 3위(R2) - 초기화 실패', 'T1', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 “Calibration failure” 신호가 “1”이 되면 검지 +', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터 고장, 장애물감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우 +', '초기화 실패를 야기한 고장코드를 확인하여 조치 후, 재닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인한다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('3460e0b9-0796-44a9-9f35-131eb5f5a5b9', '0520', '520', 'DCU#4 5위(R3) - 이중계 절체 동작', 'T1', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 “Module switchover” 신호가 “1”이 되면 검지 +', '이중계 절체 동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러) 이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A'모듈 및 ‘B'모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('346a4aec-e9f8-43fb-8f00-0792b37a7470', '0207', '207', 'BECU#7 - 자기진단 고장', 'M4', 'C', 'BECU-자기진단고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit6 “RAM 점검 고장” 신호가 “1”이 되면 검지 +', '해당 차량 자기진단 고장검지 현시 및 해당 차량 활주제어 불가', '해당 차량 BECU의 자가진단 시 고장 발생(활주방지밸브 고장) +', '해당 차량 BECU의 자가진단 시 정상적일 경우 소거(활주방지밸브 정상)', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('347ae559-6314-4eda-8980-d936d98b4313', '0505', '505', 'DCU#3 3위(R2) - 출입문 입력 고전압', 'M2', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 “1”이 되면 검지 +', '고전압 상태(그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상 +', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('3480f5e2-5ee1-4120-a9a4-7380f700ec81', '0508', '508', 'DCU#2 2위(L1) - 출입문 모터/인코더 고장', 'M1', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 “Motor / Encoder failure” 신호가 “1”이 되면 +검지 +', '출입문 정상동작 불가', ' +1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우(인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터/인코더 회로 가 손상된 경우 +', '모터/인코더 및 DCU가 정상 상태이고, 전기적 연결 상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있는지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. ※ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. ? DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. ? DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) ? DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('34827fba-c039-4872-894a-189be7200a08', '0227', '227', '제동관련 회로차단기 차단(Car8)', 'Tc2', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('34858783-d0d8-41ce-b3ef-5326333bda4e', '0836', '836', '0', 'M2', '0', null, null, '0', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3485d4a1-5759-48d1-8fa0-2acbca75c659', '0504', '504', 'DCU#1 2위(L1) - 출입문 외부 비상핸들 취급(EAD)', 'Tc1', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('348cb6df-f9cb-44cb-b692-c8b6ed6e9e60', '0501', '501', 'DCU#7 5위(R3) - 출입문 차단', 'M4', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('3495dca5-79a3-49bb-9a79-ef3e7285607e', '0513', '513', 'DCU#7 6위(L3) - 모듈 상태체크 에러', 'M4', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 “Module check error” 신호가 “1”이 되면 검지 +', 'Modulecheckerror현시(출입문은 정상작동가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태 체크 기능에 이상이 생긴 경우 고장 발생 +', 'DCU의 ‘A' 모듈과 ‘B' 모듈 간, 상태 체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('34ad8507-04b1-49d2-9002-9aa19a5096a4', '0711', '711', 'HVAC#4-냉난방장치2 압력스위치1(DPS) 저압', 'T1', 'D', 'HVAC-냉난방장치2 압력스위치1(DPS) 저압', 'D', 'HVAC', '냉난방장치2 냉매 압력스위치1 저압 발생.', 'UNIT2 CYCLE1 냉방 기능 불가', 'UNIT2 DSP1측 냉매 압력이 3초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우', '냉매 압력이 정상 수치 2±0.5(kgf/cm2 이상으로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CREF4의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)을 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안되는 것을 확인한 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('34bbb516-eb53-4bc4-9c98-b112f33ed745', '0233', '233', 'AS 코크#2 차단(Car2)', 'M1', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('34c01ccf-90fd-455d-97cd-3e61b0553303', '0303', '303', 'ATC#8 - FSB 명령', 'Tc2', 'W', 'ATC-FSB 명령', 'W', 'ATC', 'ATC의 RS485 데이터 중 ATC-TCMS SD TEXT12의 Bit1 “FSB Command” 신호가 “1”이 되면 검지 +', null, ' +1) 제한속도 초과의 과속 조건 +2) 운행 중 출입문 열림 상태 검지 +3) 다대 연장구간 PG1, PG2 미검지 시 +', '1) 열차속도가 제한속도 이하 시 +2) 출입문 닫힘 상태 검지 시 +3) 수동으로 운전모드 전환 시', '1) 열차속도가 제한속도 이하인지 확인한다. +2) 출입문 닫힘 상태인지 확인한다. +3) 수동으로 운전모드 전환 후, 운행한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('34c4ed59-a58d-4876-a28c-cfacdfc62815', '0718', '718', 'HVAC#8-CO2 센서1 고장', 'Tc2', 'C', 'HVAC-CO2 센서1 고장', 'C', 'HVAC', '객실 CO2 센서1 고장 발생', 'CO2 센서1 고장현시', 'CO2 센서의 검지범위는 0~4000ppm (2~10Vdc) 인데, 1초 이상 출력전압이 2Vdc (0ppm) 미만으로 떨어지는 경우', 'CO2 센서 검지 값이 1초 이상 2Vdc (0ppm) 이상 지속되는 경우', '1) 전원을 인가한 상태에서 CO2센서 커버를 열고 테스터기를 통해 'OUT2' 단자와 'G' 단자간의 전압이 2Vdc 미만인지 확인한다. +2) 만약 전압이 2Vdc 이상인데도 고장이 지속될 경우, 마이콤을 교체한다. +3) 만약 전압이 2Vdc 미만으로 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('34c8518b-e908-4951-9400-e42bc8ed8d10', '0512', '512', 'DCU#6 6위(L3) - 파라미터 로딩 실패', 'M3', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 “Paraneter error” 신호가 “1”이 되면 검지 +', 'Parametererror 현시(출입문은 정상작동 가능)', 'DCU 자체 내의 EEPROM으로부터 parameter데이터 로딩 실패 +', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('34cfa8e5-2768-4d78-be0e-acc3694bf13b', '0506', '506', 'DCU#8 2위(L1) - 출입문 입력 저전압', 'Tc2', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 “1”이 되면 검지 +', '저전압상태(출입문 동작이 심하게 느려지거나 작동조차 안 될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하 +', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('34d2cb69-e278-4da8-8039-8624bd224279', '0511', '511', 'DCU#2 4위(L2) - 출입문 닫힘 리미트 스위치2 고장', 'M1', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 “DCS2 Failure(Right)” 신호가 “1”이 되면 검지 +', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('34d65151-ccdf-4309-b576-de7f8d4d354a', '0702', '702', 'HVAC#3-냉난방장치2 압축기1 과부하', 'M2', 'C', 'HVAC-냉난방장치2 압축기1 과부하', 'C', 'HVAC', 'HVAC 냉방작동 중 냉난방장치2 압축기1 또는 응축기1 모터에 과부하 발생.', '냉방 기능 저하(전냉방시 반냉방으로 작동)', '1) 냉방작동 중 UNIT2의 압축기1 또는 응축기1 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRCM3과 연결된 THR3이 Trip 됨.', 'UNIT2의 압축기1 또는 응축기1 모터의 과부하 조건을 해소하여 정상 가능 상태로 만들고, THR3 및 마이콤 전원 리셋', '1) 냉난방배전반의 점검커버를 열고, THR3의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR4의 전류 세팅값이 11.5A에 맞춰져 있는지 확인하여, 아닐 경우, 십자 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동 시킨 후, THR3의 2차측 2,4,6 단자에서 각 단자간 상간 전압이 AC 380V으로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 압축기 및 응축기 단품 상태에서 점검을 한다. +7) THR3의 2차측 2,4,6 단자에서 각 단자간 권선저항이 모두 같은지 확인한다. (±10% 이하) (압축기1 및 응축기1 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT2의 압축기1 또는 응축기1 모터의 결선을 해제한 후 각 부품의 권선저항을 확인 후, 문제가 있는 부품을 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR3 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('34e5cb94-a08e-47d9-a7ba-e3ca2c537655', '0214', '214', 'BECU#1-BC 압력센서고장', 'Tc1', 'C', 'BECU-BC 압력센서 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit5 “BC 압력센서 고장” 신호가 "1"이 되면 검지.', '해당 차량 BC압력센서 고장 검지 현시 및 해당차량 제동력 부족, 제동불완해 검지 불가.', '해당 차량의 BC압력센서 고장.', '해당 차량의 BC압력센서가 정상일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('34e612c2-33c0-412a-98ba-68350b9bfcf2', '0506', '506', 'DCU#7 1위(R1)-출입문 입력 저전압', 'M4', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 "1"이 되면 검지.', '저전안 상태 (출입문 동작이 심하게 느려지거나 작동조차 안될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('34e83c0b-85c4-4741-bca3-9cd86ebc0420', '0169', '169', 'VVVF#6 - 상전류 동기 불평형 검지(RETRY)', 'M3', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('34fb9f12-7db6-44ee-8ae9-8c1d87a75fdf', '0504', '504', 'DCU#5 2위(L1)-출입문 외부비상핸들 취급(EAD)', 'T2', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3502d0cb-d624-42a6-b406-c0c71bc19cfb', '0507', '507', 'DCU#2 3위(R2)-초기화 실패', 'M1', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 "Calibration failure” 신호가 "1"이 되면 검지.', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터고장, 장애물 감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우', '초기화 실패를 야기한 고장 코드를 확인하여 조치 후, 재 닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('35091345-c379-4f28-b0d8-9410a2f7b4e6', '0717', '717', 'HVAC#7-CO2 센서2 고장', 'M4', 'C', 'HVAC-CO2 센서2 고장', 'C', 'HVAC', '객실 CO2 센서2 고장 발생', 'CO2 센서2 고장현시', 'CO2 센서의 검지범위는 0~4000ppm (2~10Vdc) 인데, 1초 이상 출력전압이 2Vdc (0ppm) 미만으로 떨어지는 경우', 'CO2 센서 검지 값이 1초 이상 2Vdc (0ppm) 이상 지속되는 경우', '1) 전원을 인가한 상태에서 CO2센서 커버를 열고 테스터기를 통해 'OUT2' 단자와 'G' 단자간의 전압이 2Vdc 미만인지 확인한다. +2) 만약 전압이 2Vdc 이상인데도 고장이 지속될 경우, 마이콤을 교체한다. +3) 만약 전압이 2Vdc 미만으로 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('350af694-0e00-4439-a6dc-5729bb49dea1', '0734', '734', 'HVAC#2-전자접촉기 압축기(CRCM)3 고장', 'M1', 'C', 'HVAC-전자접촉기 압축기(CRCM)3 고장', 'C', 'HVAC', 'HVAC 냉방작동 중 CRCM3 전자접촉기 고장 발생.', '냉방 기능 저하(전냉방시 반냉방으로 작동)', '냉방작동 중 2.5초 이상동안 CRCM3 작동 feedback 신호가 수신되지 않는 경우', 'CRCM3 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CRCM3을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRCM3과 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('35191bbb-6755-464a-99f4-42731c6b623a', '1204', '1204', 'FDU#5 - 감지기2 고장', 'T2', 'C', 'FDU-감지기2 고장 (Car1~8)', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 “Detector1 State” 신호가 “10”이 되면 검지 +', '감지기고장상태현시(자동소거 안 됨)', ' +1) 감지기로부터 데이터 응답이 없는 경우 +2) 감지기로부터 수신된 데이터의 CRC가 맞지 않는 경우 +3) 감지기로부터 수신된 데이터의 ID가 송신 ID와 일치하지 않는 경우 +', 'FDU 전원 리셋 후 감지기로부터 정상적으로 데이터가 수신된 경우', '1) FDU 전원 리셋 후 고장 소거 여부 확인 +2) 정상동작중인 감지기와 위치 교환 후 FDU 전원 리셋 및 고장 상태 확인 +3) 동일한 감지기에서 고장 발생 시 감지기 교체 +4) 동일한 위치에서 고장 발생 시 감지기 라인 점검', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('35350b87-604e-4f01-b14e-9b02c2566dd7', '0500', '500', 'DCU#5 1위(R1) 통신고장', 'T2', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS간 RS485 통신고장이 검지되면 발생.', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐 상태 등의 변화가 없음.', '1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우', '해당차량의 DCU 및 CU/TU 의 전원이 정상상태이고, 통신라인 연결상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜저 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는데도 지속적으로 통순고장이 검지되면, DCU의 X2,X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('353b528e-d524-476f-8655-a035dafa151b', '0220', '220', 'BECU#8 - 공기제동 감쇄지령 비정상', 'Tc2', 'C', 'BECU-공기제동 감쇄지령 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit3 “공기제동 감쇄지령 비정상” 신호가 “1”이 되면 검지 +', '해당 차량 공기제동감쇄지령 비정상 검지 현시 및 해당 차량 정상적인전공교차제어 불가 (부수차량 공기제동 감쇄 불가)', '해당 차량의 공기제동감쇄지령 신호가 정상범위를 벗어남. (5.0 ~ 95.0%) +', '해당 차량의 공기제동감쇄지령 신호가 정상범위일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 소거되지 않을 경우 해당 차량 옆의 Pair 차량(구동차) BECU를 리셋(CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('35536600-ba51-4901-adb9-26b1d3bc9582', '0412', '412', 'SIV#1-게이트 드라이버 고장, VY2상(GDFVY2)', 'Tc1', 'C', 'SIV-게이트 드라이버 고장, VY2상(GDFVY2)', 'C', 'SIV', '보조전원장치(SIV)의 RS485 데이터 중 SIV-TCMS SD TEXT5의 Bit2 “GDFVY2” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 'GDF VY 2상 이상검지' 표시됨. +2) 보조전원장치(SIV)는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 보조전원장치(SIV) 중고장이 발생됨. +5) 중고장이 발생되면 TCMS 일반화면에 보조전원장치(SIV) 상태 붉을색으로 표기되며, 연장급점 됨.', '보조전원장치(SIV) 내부 GDU에 과전류, 과온이 검지될경우.', '1) 경고장이 발생할 경우 보조전원장치(SIV) 자동 재기동에 의해 재기동 됨. +2) 중고장이 발생할 경우 보조전원장치(SIV) 리셋으로 고장 소거됨.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 보조전원장치(SIV) 고장기록을 수집하여 출력되는 3상의 AC 전류치를 확인함. +3) 특정상의 전류치가 비정상적일 경우 특정상에 해당되는 GDU, 전류센서, 출력단 결선을 확인한다. +4) 전류센서와 보조전원장치(SIV) 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작상태를 시험기를 통해 확인한다. +6) GDU 전원공급기의 전원연결상태 또는 광케이블의 연결상태와 배선상태를 확인한다. +7) 출력단 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3559df44-bc40-4315-8191-99082ac38aaa', '0738', '738', 'HVAC#6-전자접촉기 증발기3(CREF) 고장', 'M3', 'C', 'HVAC-전자접촉기 증발기3(CREF) 고장', 'C', 'HVAC', 'HVAC 냉방작동 중 CREF3 전자접촉기 고장 발생.', 'UNIT2 냉방 작동 불가', '냉방작동 중 2.5초 이상동안 CREF3 작동 feedback 신호가 수신되지 않는 경우', 'CREF3 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CREF3을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CREF3과 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('356e9764-5773-4e43-8da1-bbd9ad05fd93', '1600', '1600', '미세먼지감지센서 모듈#8 통신고장', 'Tc2', 'C', '미세먼지감지센서 모듈 통신고장', 'C', 'TCMS', '미세먼지감지센서 모듈과 TCMS간 RS485 통신고장이 검지되면 발생.', '화면상 미세먼지센서 값 등의 데이터가 반응하지 않음.', '1) 미세먼지감지센서 모듈 전원 OFF +2) 통신연결 불량 +3) 해당 모듈이 검수요원에 의해 firmware 업데이트 중인 경우', '미세먼지 감지센서 모듈의 전원이 정상상태이고, 통신라인 연결상태가 정상', '1) 1호차 혹은 8호차 통로쪽 상부 점검커버를 열고, 미세먼지 감지센서 모듈이 정상적으로 켜저 있는지 확인한다. +2) 만약 미세먼지 감지센서 모듈의 전원이 꺼져 있다면, 모듈 측면의 전원 스위치를 동작시켜 정상적으로 켜지는지 확인한다. +3) 미세먼지 감지센서 모듈이 정상적으로 켜져 있는데도 지속적으로 통신고장이 검지되면, CU가 정상적으로 켜져 있는지 확인한다. +4) 그래도 문제가 지속되면 해당 차량의 통신커넥터를 확인하여 문제가 있을 경우, 조치한다. +5) 위 조치 후에도 문제가 지속될 경우, 미세먼지 감지센서 모듈을 교체한다.', ' +REC40400HN0', '3', '2025-10-12 01:21:37.578803+00', null, '로템40량(2018)-1단계', 'Rotem'), ('35753674-9b9c-4efc-b900-0ea40ace9e19', '1504', '1504', '냉방장치용 AC 회로차단기 차단(Car5)', 'T2', 'W', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('357cc152-343e-4e41-a8c8-543a02768664', '0183', '183', 'VVVF#7-Over Load(OL)', 'M4', 'C', 'VVVF-Over Load(OL)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT35의 Bit2 “OL” 신호가 "1"이 되면 검지.', null, '차량의 구속상태에서 역행을 5초 이상 계속한 경우', '노치 OFF', '1) 상기고장이 간헐적으로 발생하는 경우 아래와 같이 조치한다. +2) 출발 시 보안제동의 투입 해제를 확인한다. +3) 고임목 등의 장애물이 차량을 구속하고 있는경우 제거한다. +4) 견인 전동기의 주 회로 오배선 여부 및 결선상태를 확인한다. +5) 추진제어장치 시험기를 이용하여 TCU(통합 제어장치)의 이상여부를 확인한다. +6) PWS보드 또는 통합제어기 교체. +7) 상기의 점검부분에 이상이 있을경우 관련부품을 교체한다.', null, '3', '2025-10-12 01:21:37.578803+00', null, '로템40량(2018)-1단계', 'Rotem'), ('359b5924-68ac-49a6-a847-def116833d7b', '0510', '510', 'DCU#1 5위(R3)-출입문 닫힘 리미트 스위치1 고장', 'Tc1', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 "DCS1 Failure(Leftt)” 신호가 "1"이 되면 검지.', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('35a4ece4-c9ba-4df7-948f-bf5810c2c32a', '0216', '216', 'BECU#1-전두대차 AS압력센서고장', 'Tc1', 'C', 'BECU-전두대차 AS압력센서 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit7 “전두대차 AS압력센서 고장” 신호가 "1"이 되면 검지.', '해당 차량 전두대차 AS압력센서 고장 검지 현시 및 해당차량 정상적인 응하중 제동제어 불가.', '해당 차량의 전두대차 AS 압력센서(AS1, AS2) 고장.', '해당 차량의 전두대차 AS 압력센서(AS1, AS2)가 정상일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('35b6a632-75e4-42de-9ec7-b68d6276649f', '0520', '520', 'DCU#4 3위(R2)-이중계 절체 동작', 'T1', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 "Module switchover' 신호가 "1"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.392739+00', null, '로템40량(2018)-1단계', 'Rotem'), ('35bfdc6e-7021-47b8-aa0f-77adcd01d2f0', '0201', '201', 'BECU#5 - 덤프밸브 고장(후미대차)', 'T2', 'C', 'BECU-덤프밸브고장(후미대차)', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit0 “덤프밸브고장(후미대차)” 신호가 “1”이 +되면 검지 +', '해당 차량 덤프밸브 고장(후미대차)검지 현시 및 해당 차량 활주제어 불가', '해당 차량 후미대차의 덤프밸브가 작동하지 않음. +', '해당 차량 후미대차의 덤프밸브가 정상작동 시 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('35d9c249-622e-4e32-88d7-f462b6fddab9', '0750', '750', 'HVAC#1-냉난방장치2 보조히터 과열', 'Tc1', 'C', 'HVAC-냉난방장치2 보조히터 과열', 'C', 'HVAC', 'HVAC2 보조난방기 작동 중 과열 발생.', 'UNIT2 보조난방기 난방 불가', '보조난방기 작동 중 1초 이상동안 온도가 70도 이상으로 과온센서 정상 신호가 수신되지 않는 경우', '1초 이상동안 60도 미만으로 온도가 떨어져 과온센서 정상 신호가 수신되는 경우', '1) 보조난방기가 꺼진 상태에서도 문제 발생 시, 과온 센서를 교체한다. +2) 센서 교체 후에도 문제가 발생되면, 배선에 문제가 없는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('360e2571-2da4-4221-9046-ef138522313a', '0216', '216', 'BECU#8-전두대차 AS압력센서고장', 'Tc2', 'C', 'BECU-전두대차 AS압력센서 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit7 “전두대차 AS압력센서 고장” 신호가 "1"이 되면 검지.', '해당 차량 전두대차 AS압력센서 고장 검지 현시 및 해당차량 정상적인 응하중 제동제어 불가.', '해당 차량의 전두대차 AS 압력센서(AS1, AS2) 고장.', '해당 차량의 전두대차 AS 압력센서(AS1, AS2)가 정상일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('361a357b-2014-4320-991f-22ec03fe4a0f', '0517', '517', 'DCU#3 4위(L2)-출입문 장애물로 인한 열림 실패', 'M2', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Open failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘상태로 대기', '도어 열림 중 3회 장애물 감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 열림 시, 장애물 감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3621a881-c64f-4684-815b-2f25a8b2b992', '0516', '516', 'DCU#7 6위(L3)-출입문 장애물로 인한 닫힘 실패', 'M4', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Close failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림상태로 대기', '도어 닫힘 중 3회 장애물 감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3633c824-2d01-44f9-8e5a-22dbcfa7445e', '0518', '518', 'DCU#5 1위(R1)-출입문 Enable 신호 에러', 'T2', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 "Enable signal error” 신호가 "1"이 되면 검지.', 'DCU 출입문 Enable 신호 에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) 취급시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함.', '해당출입문 enable 신호 수신', '1) AUTO/MCS 모드시에는 YARD모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인한다. (YARD/FMC 모드시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.392739+00', null, '로템40량(2018)-1단계', 'Rotem'), ('363acd14-d262-4dba-b658-7129d277c523', '0512', '512', 'DCU#7 1위(R1)-파라미터 로딩 실패', 'M4', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 "Paraneter error” 신호가 "1"이 되면 검지.', 'Parameter error 현시 (출입문은 정상작동 가능)', 'DCU 자체내의 EEPROM으로부터 parameter 데이터 로딩 실패', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('36569a99-b577-4da6-bb12-f12a565a07fb', '0521', '521', 'DCU#7 4위(L2)-모듈 상태 이상', 'M4', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 "01"또는 "00"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('366c6fa0-fed4-486e-a508-e95ff1bc5369', '0729', '729', 'HVAC#4 - 냉난방장치2 리턴 센서 고장', 'T1', 'C', 'HVAC-냉난방장치2 리턴 센서 고장', 'C', 'HVAC', '냉난방장치2의 리턴 센서 고장 발생 +', '냉난방장치2 리턴 센서 고장현시', '온도센서 검지범위는 -45 ~ 85도(820 ~ 1,330Ω)인데, 2초 이상 검지범위를 벗어나는 경우 +', '온도센서 검지값이 2초 이상 허용온도 범위 내일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820 ~ 1,330Ω을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('366cec92-15d6-4e4b-bc48-1173cd037df9', '0509', '509', 'DCU#8 2위(L1)-출입문 잠김 리미트 스위치 고장', 'Tc2', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 "DLS Failure” 신호가 "1"이 되면 검지.', '출입문 잠김 상태 확인 불가', '1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3675f6e1-1f65-4a83-91b1-93c8d106bbf3', '0503', '503', 'DCU#5 2위(L1)-출입문 내부비상핸들 취급(EED)', 'T2', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('368cfcc4-2733-46b2-99fb-395f16c35942', '0139', '139', 'VVVF#3-INV ARM 단락(CFD)', 'M2', 'C', 'VVVF-INV ARM 단락(CFD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT29의 Bit4 “CFD” 신호가 "1"이 되면 검지.', null, '게이트신호와 피드백신호 불일치 발생 시 고장검지.', '동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) 육안으로 IGBT의 상태를 확인하여 외관에 손상이 있는지 확인한다. +2) FC 양 옆의 PWM 제어기판의 고정상태 확인. +3) IGBT의 Collector와 Emitter 양단을 멀티미터를 이용하여 단락 여부 및 다이오드 상태를 확인한다. +4) PWM 보드의 후면 커넥터 핀 상태 확인. +5) 추진제어장치 시험기를 이용하여 PWM 보드의 이상여부를 확인한다. +6) 게이트 드라이버 외관 및 커넥터 핀 상태 확인. +7) 상기의 점검부분에 이상이 있을 경우 관련부품을 교체한다. +8) 동일 고장 재발 시 INV 스택을 교체한다.', null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('36923fe1-bcc6-4328-ac85-24ec07fe3b84', '0512', '512', 'DCU#7 1위(R1) - 파라미터 로딩 실패', 'M4', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 “Paraneter error” 신호가 “1”이 되면 검지 +', 'Parametererror 현시(출입문은 정상작동 가능)', 'DCU 자체 내의 EEPROM으로부터 parameter데이터 로딩 실패 +', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('36981ab8-42bf-4d93-bfd5-8798747ca6b7', '0521', '521', 'DCU#4 1위(R1) - 모듈 상태 이상', 'T1', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 “01” 또는 “00”이 되면 +검지 +', '이중계절체동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러)이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('36983c87-74a3-4657-b7bd-4b4d3631d8fc', '0520', '520', 'DCU#5 6위(L3)-이중계 절체 동작', 'T2', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 "Module switchover' 신호가 "1"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.392739+00', null, '로템40량(2018)-1단계', 'Rotem'), ('369b0093-d8dc-4b68-8412-22fd8e76bec0', '0514', '514', 'DCU#1 1위(R1)-출입문 닫힘 시간 초과', 'Tc1', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 "Close time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 닫힘 동작시간이 7초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도 한 후, '장애물로 인한 닫힘실패' 고장과 함께 'Close time out' 고장이 함께 현시', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('369d4408-30b6-4aeb-be74-84a3d50d5141', '0504', '504', 'DCU#5 6위(L3) - 출입문 외부 비상핸들 취급(EAD)', 'T2', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('36a02609-f950-4ec4-a460-37ef0dd41fa3', '0503', '503', 'DCU#5 6위(L3) - 출입문 내부 비상핸들 취급(EED)', 'T2', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('36a4da6f-8065-471d-8d64-db53cdb57ae8', '1208', '1208', 'FDU#5-감지기4 고장', 'T2', 'C', 'FDU-감지기4 고장', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 "Detector1 State” 신호가 "10"이 되면 검지.', '감지기 고장상태 현시(자동 소거 안됨)', '1) 감지기로부터 데이터 응답이 없는경우. +2) 감지기로부터 수신된 데이터의 CRC가 맞지 않는경우 +3) 감지기로부터 수신된 데이터의 ID가 송신 ID와 일치하지 않는경우', 'FDU 전원 리셋 후 감지기로부터 정상적으로 데이터가 수신된 경우', '1) FDU 전원 리셋 후 고장 소거 여부 확인 +2) 정상 동작중인 감지기와 위치 교환 후 FDU 전원 리셋 및 고장 상태 확인 +3) 동일한 감지기에서 고장 발생시 감지기 교체 +4) 동일한 위치에서 고장 발생시 감지기 라인 점검', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('36ac8103-1922-4170-8217-6ce381f46b8f', '0123', '123', 'VVVF-역행/회생 이상 검지(PBF) (Car3)', 'M2', 'C', 'VVVF-역행/회생 이상 검지(PBF)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT33의 Bit4 “PBF” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 '역행/회생 신호이상검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치 입력되는 역행/제동신호가 동시에 입력될 경우 검지됨.', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반배전반의 VVVFIC nfb 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 역행/제동신호에 이상이 있는지 확인한다.. +3) 차량의 제어회로 중 역행/제동 신호가 추진제어장치로 연결되는 경로에 이상이 없는지 확인한다. +4) DIN 보드의 동작상태를 시험기를 통해 확인한다. +5) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.656536+00', null, '다대48량(2015)', 'Rotem'), ('36c89dd8-aa6b-433f-a081-886ab1a63645', '0701', '701', 'HVAC#7-냉난방장치2 압축기2 과부하', 'M4', 'C', 'HVAC-냉난방장치2 압축기2 과부하', 'C', 'HVAC', 'HVAC 냉방작동 중 냉난방장치2 압축기2 또는 응축기2 모터에 과부하 발생.', '냉방 기능 저하(전냉방시 반냉방으로 작동)', '1) 냉방작동 중 UNIT2의 압축기2 또는 응축기2 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRCM4와 연결된 THR4가 Trip 됨.', 'UNIT2의 압축기2 또는 응축기2 모터의 과부하 조건을 해소하여 정상 가능 상태로 만들고, THR4 및 마이콤 전원 리셋', '1) 냉난방배전반의 점검커버를 열고, THR4의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR4의 전류 세팅값이 11.5A에 맞춰져 있는지 확인하여, 아닐 경우, 십자 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동 시킨 후, THR4의 2차측 2,4,6 단자에서 각 단자간 상간 전압이 AC 380V으로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 압축기 및 응축기 단품 상태에서 점검을 한다. +7) THR4의 2차측 2,4,6 단자에서 각 단자간 권선저항이 모두 같은지 확인한다. (±10% 이하) (압축기2 및 응축기2 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT2의 압축기2 또는 응축기2 모터의 결선을 해제한 후 각 부품의 권선저항을 확인 후, 문제가 있는 부품을 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR4 부품을 교체한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('36d52960-6311-46ad-8a75-3b840a4d9c99', '0725', '725', 'HVAC#6-냉방시험 불가능', 'M3', 'C', 'HVAC-냉방시험 불가능', 'C', 'HVAC', '운전실 TCMS에서 냉방시험 작동을 할 때, 냉방운전이 불가능한 경우 발생.', '냉방 시험 운전 불가능', '실내 또는 실외 온도가 10도 미만일 경우, (환절기 또는 겨울철에 냉방 가동시 시스템 보호를 위한 온도조건)', '실내 또는 실외 온도가 10도 이상일 때, 냉방시험 작동', '1) TCMS 화면에서 실내 또는 실외 온도가 10도 미만인지 확인한다. +2) 실내 및 실외 온도가 10도 이상인대도 냉방 가동이 되지 않을 시, TCMS-마이콤 간 통신불량이 있는지 확인하고 조치한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('36f1c13b-0963-496b-8578-f9eab32ad660', '0521', '521', 'DCU#1 2위(L1) - 모듈 상태 이상', 'Tc1', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 “01” 또는 “00”이 되면 +검지 +', '이중계절체동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러)이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('36f60c55-67b6-4aef-939e-ca8e2208763c', '0860', '860', '실내카메라#2(SCAM) 고장(Car#6)', 'M3', 'C', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('36f6ea5d-df3c-4136-be40-f8577a1f5892', '0506', '506', 'DCU#7 2위(L1)-출입문 입력 저전압', 'M4', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 "1"이 되면 검지.', '저전안 상태 (출입문 동작이 심하게 느려지거나 작동조차 안될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3717f910-e6d4-4fdb-9573-c8ce445a9ddf', '0516', '516', 'DCU#5 6위(L3) - 출입문 장애물로 인한 닫힘 실패', 'T2', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Close failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림 상태로 대기', '도어 닫힘 중 3회 장애물감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('371ae855-536e-4186-a07d-f85f75e192d3', '0911', '911', 'TRAIN RADIO#8 통신고장', 'Tc2', 'C', 'TRAIN RADIO 통신고장', 'C', 'TRS', 'Train Radio와 TCMS(CU)간 E-NET 통신고장이 검지되면 발생 +', '화면상 Train Radio 고장 현시', 'Train Radio 통신고장(전원 OFF) 또는 통신케이블 문제 +', 'TCMS와 Train Radio 간의 통신계통 점검 및 Train Radio NFB 점검', null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('37301fe9-9bcd-40a2-8609-cf1018b4ad0d', '0173', '173', 'VVVF#2-전류센서 이상검지(CTERR)', 'M1', 'C', 'VVVF-CT 이상검지(CTERR)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT33의 Bit6 “CTERR” 신호가 "1"이 되면 검지.', null, '초기 기동 중 CTU, CTW의 전류값 확인이 안될 시 고장검지.', '동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기 고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 내부에 설치된 출력전류 측정용 전류센서의 외관 및 커넥터 체결상태를 확인한다. +3) PWS보드의 ±15V테스트단자 전압을 측정하여 전압 확인. +4) 육안으로 IGBT의 상태를 확인하여 외관에 손상이 있는지 확인한다. +5) IGBT의 Collector와 Emitter 양단을 멀티테스터를 이용하여 단락여부를 확인한다. +6) 견인전동기 고전압 배선의 결선상태 및 손상유무를 확인한다. +7) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3741ef6f-4873-4952-b5f3-ebc40868b7cf', '0502', '502', 'DCU#4 4위(L2) - 출입문 장애물검지', 'T1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('37437d89-6e8e-4a12-9829-99ebb16bf21c', '0143', '143', 'VVVF#3-주회로 접지검지(LGD)', 'M2', 'B', 'VVVF-주 회로 접지검지(LGD)', 'B', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT30의 Bit0 “LGD” 신호가 "1"이 되면 검지.', null, '가선전압이 15ms이내에 300V이상 감압 시 고장검지.', '제동 OFF.', '1) 상기고장이 간헐적으로 발생하는 경우 아래와 같이 조치한다. +2) 주 회로 차단기함 내부의 고압회로에 소손이 없는지 확인하고 소손품은 교체한다. +3) 주 회로 차단기함 내부에 설치된 가선전압 측정용 전압센서의 외관에 손상이 있는지 확인한다. +4) 전압센서의 고압 / 저압 단자대의 체결상태 확인. +5) 인버터 함 내부의 고압회로에 소손 또는 단락이 있는지 확인한다. +6) IGBT의 소손여부를 확인한다. +7) 추진제어장치 시험기를 이용하여 TCU(통합제어장치) 및 PWM보드의 이상 여부를 확인한다. +8) 상기의 점검부분에 이상이 있을 경우 관련부품을 교체한다.', null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('376004a5-e9fe-4f88-8c59-5b63807d3914', '0232', '232', 'BC 코크(차하#2) 차단(Car3)', 'M2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('37627c05-fa3c-4d87-9b2a-fd47965e6325', '0207', '207', 'BECU#1-자기진단고장', 'Tc1', 'C', 'BECU-자기진단고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit6 “RAM 점검 고장” 신호가 "1"이 되면 검지.', '해당 차량 자기진단고장 검지 현시 및 해당 차량 활주제어 불가.', '해당 차량 BECU의 자가진단 시 고장 발생(활주방지밸브 고장).', '해당 차량 BECU의 자가진단 시 정상적일 경우 소거(활주방지밸브 정상).', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('376e7164-5b67-4d16-a955-d0374aec0977', '0518', '518', 'DCU#5 2위(L1)-출입문 Enable 신호 에러', 'T2', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 "Enable signal error” 신호가 "1"이 되면 검지.', 'DCU 출입문 Enable 신호 에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) 취급시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함.', '해당출입문 enable 신호 수신', '1) AUTO/MCS 모드시에는 YARD모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인한다. (YARD/FMC 모드시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.392739+00', null, '로템40량(2018)-1단계', 'Rotem'), ('377bee8e-8a0a-4c5d-be97-a1ea7d81ce12', '0507', '507', 'DCU#5 3위(R2) - 초기화 실패', 'T2', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 “Calibration failure” 신호가 “1”이 되면 검지 +', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터 고장, 장애물감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우 +', '초기화 실패를 야기한 고장코드를 확인하여 조치 후, 재닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인한다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('377c21ba-28cd-46c0-8510-fc8bbffc9118', '1504', '1504', '냉방장치용 AC 회로차단기 차단(Car3)', 'M2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('3782a8fc-2445-4c4c-a1e9-70d2f62a832b', '0507', '507', 'DCU#4 4위(L2)-초기화 실패', 'T1', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 "Calibration failure” 신호가 "1"이 되면 검지.', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터고장, 장애물 감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우', '초기화 실패를 야기한 고장 코드를 확인하여 조치 후, 재 닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('378c6967-6520-407f-9e42-8c4426143876', '0507', '507', 'DCU#6 6위(L3)-초기화 실패', 'M3', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 "Calibration failure” 신호가 "1"이 되면 검지.', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터고장, 장애물 감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우', '초기화 실패를 야기한 고장 코드를 확인하여 조치 후, 재 닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('379a765f-c562-4119-87fb-e263bcbf76a6', '0501', '501', 'DCU#8 3위(R2) - 출입문 차단', 'Tc2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('37a54f66-04df-4abf-9871-30ab22ee4e68', '0506', '506', 'DCU#3 4위(L2) - 출입문 입력 저전압', 'M2', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 “1”이 되면 검지 +', '저전압상태(출입문 동작이 심하게 느려지거나 작동조차 안 될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하 +', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('37b79a57-3ded-464c-a117-1a6737c5a1ac', '0511', '511', 'DCU#7 3위(R2) - 출입문 닫힘 리미트 스위치2 고장', 'M4', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 “DCS2 Failure(Right)” 신호가 “1”이 되면 검지 +', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('37c34b2f-2b5e-441a-9d2b-f838d03b0e18', '0202', '202', 'BECU#6-덤프밸브고장(전두대차)', 'M3', 'C', 'BECU-덤프밸브고장(선두대차)', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit1 “덤프밸브고장(선두대차)” 신호가 "1"이 되면 검지.', '해당 차량 덤프밸브고장(선두대차) 검지 현시 및 해당 차량 활주제어 불가.', '해당 차량 선두대차의 덤프밸브가 작동하지 않음.', '해당 차량 선두대차의 덤프밸브가 정상 작동 시 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('37d0d438-a398-4438-8cf0-cdfbd3cf8e47', '0413', '413', 'SIV#1-게이트 드라이버 고장, UX2상(GDFUX2)', 'Tc1', 'C', 'SIV-게이트 드라이버 고장, UX2상(GDFUX2)', 'C', 'SIV', '보조전원장치(SIV)의 RS485 데이터 중 SIV-TCMS SD TEXT5의 Bit3 “GDFUX2” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 'GDF UX 2상 이상검지' 표시됨. +2) 보조전원장치(SIV)는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 보조전원장치(SIV) 중고장이 발생됨. +5) 중고장이 발생되면 TCMS 일반화면에 보조전원장치(SIV) 상태 붉을색으로 표기되며, 연장급점 됨.', '보조전원장치(SIV) 내부 GDU에 과전류, 과온이 검지될경우.', '1) 경고장이 발생할 경우 보조전원장치(SIV) 자동 재기동에 의해 재기동 됨. +2) 중고장이 발생할 경우 보조전원장치(SIV) 리셋으로 고장 소거됨.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 보조전원장치(SIV) 고장기록을 수집하여 출력되는 3상의 AC 전류치를 확인함. +3) 특정상의 전류치가 비정상적일 경우 특정상에 해당되는 GDU, 전류센서, 출력단 결선을 확인한다. +4) 전류센서와 보조전원장치(SIV) 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작상태를 시험기를 통해 확인한다. +6) GDU 전원공급기의 전원연결상태 또는 광케이블의 연결상태와 배선상태를 확인한다. +7) 출력단 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('37d744ed-b286-4867-b382-94027b708a7c', '0700', '700', 'HVAC#8 통신고장', 'Tc2', 'C', 'HVAC-통신고장', 'C', 'HVAC', 'HVAC와 TCMS간 RS485 통신고장이 검지되면 발생.', '화면상 HVAC의 실내온도, 운전모드 등의 데이터가 반응하지 않음.', '1) 마이콤 전원 CB OFF +2) 통신연결 불량 +3) 해당 마이콤이 검수요원에 의해 firmware 업데이트 중인 경우', '해당차량의 마이콤 및 CU/TU 의 전원이 정상상태이고, 통신라인 연결상태가 정상', '1) 냉난방배전반의 점검커버를 열고, 마이콤이 정상적으로 켜저 있는지 확인한다. +2) 만약 마이콤 전원이 꺼져 있다면, 마이콤 DC전원 CB 및 차량 배전반에 위치한 냉난방장치 CB가 정상적으로 켜져 있는지 확인한다. +3) 마이콤이 정상적으로 켜져 있는데도 지속적으로 통순고장이 검지되면, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('37e48e91-1b51-44be-8d7d-fbe5001d21a9', '0203', '203', 'BECU#3-전자제어밸브의 고장', 'M2', 'C', 'BECU-전자제어밸브의 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit2 “전자제어밸브의 고장” 신호가 "1"이 되면 검지.', '해당 차량 전자제어밸브의 고장 검지 현시 및 해당 차량 제동제어 불가.', '해당 차량의 상용전자제어밸브가 작동하지 않음.', '해당 차량의 상용전자제어밸브가 정상 작동 시 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('37f7cbd7-d3fd-4644-bcfb-a12bc39808d7', '0716', '716', 'HVAC#6-냉난방장치1 압력스위치1(DPS) 고압', 'M3', 'D', 'HVAC-냉난방장치1 압력스위치1(DPS) 고압', 'D', 'HVAC', '냉난방장치1 냉매 압력스위치2 고압 발생.', 'UNIT1 CYCLE1 냉방 기능 불가', 'UNIT1 DSP1측 냉매 압력이 3초 이상 28±1(kgf/cm2) 이상 되는 경우', '냉매 압력이 정상 수치 15±0.7(kgf/cm2 이하로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CRCM1의 부하측 전류를 측정하여 응축기 팬의 동작여부를 확인한다. +2) 응축기 코일의 전면에 이물질로 인한 막힘이 있는지 확인한다. +3) 응축기 팬 상부 그릴에 외부 이물질로 인한 막힘이 있는지 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('37fb73bc-e04f-4626-87eb-574cb7b6774b', '0233', '233', 'AS 코크#2 차단(Car2)', 'M1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('37fc1a84-c402-4eab-9048-7ae300e069f0', '0717', '717', 'HVAC#4-CO2 센서2 고장', 'T1', 'C', 'HVAC-CO2 센서2 고장', 'C', 'HVAC', '객실 CO2 센서2 고장 발생', 'CO2 센서2 고장현시', 'CO2 센서의 검지범위는 0~4000ppm (2~10Vdc) 인데, 1초 이상 출력전압이 2Vdc (0ppm) 미만으로 떨어지는 경우', 'CO2 센서 검지 값이 1초 이상 2Vdc (0ppm) 이상 지속되는 경우', '1) 전원을 인가한 상태에서 CO2센서 커버를 열고 테스터기를 통해 'OUT2' 단자와 'G' 단자간의 전압이 2Vdc 미만인지 확인한다. +2) 만약 전압이 2Vdc 이상인데도 고장이 지속될 경우, 마이콤을 교체한다. +3) 만약 전압이 2Vdc 미만으로 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('38041635-519f-47a3-87a9-9f472baa672e', '0521', '521', 'DCU#5 1위(R1) - 모듈 상태 이상', 'T2', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 “01” 또는 “00”이 되면 +검지 +', '이중계절체동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러)이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('38068164-d1fb-40a5-a59e-9b2564017b4d', '0520', '520', 'DCU#6 2위(L1)-이중계 절체 동작', 'M3', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 "Module switchover' 신호가 "1"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.392739+00', null, '로템40량(2018)-1단계', 'Rotem'), ('381586eb-0757-413b-8b3b-0625223c7452', '0714', '714', 'HVAC#1 - 냉난방장치1 압력스위치2(DPS) 고압', 'Tc1', 'D', 'HVAC-냉난방장치1 압력스위치2(DPS) 고압', 'D', 'HVAC', '냉난방장치1 냉매 압력스위치2 고압 발생 +', 'UNIT1CYCLE2 냉방기능불가', 'UNIT1DSP2측 냉매압력이 3초 이상 28±1(kgf/cm2) 이상 되는 경우 +', '냉매압력이 정상수치 15±0.7(kgf/cm2) 이하로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CRCM2의 부하측 전류를 측정하여 응축기 팬의 동작여부를 확인한다. +2) 응축기 코일의 전면에 이물질로 인한 막힘이 있는지 확인한다. +3) 응축기 팬 상부 그릴에 외부 이물질로 인한 막힘이 있는지 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('381d3049-0e65-4165-8229-537c4c317663', '0734', '734', 'HVAC#6 - 전자접촉기 압축기(CRCM)3 고장', 'M3', 'C', 'HVAC-전자접촉기 압축기(CRCM)3 고장', 'C', 'HVAC', 'HVAC 냉방 작동 중 CRCM3 전자접촉기 고장 발생 +', '냉방 기능 저하(전냉방 시 반냉방으로 작동)', '냉방 작동 중 2.5초 이상 동안 CRCM3 작동 feedback 신호가 수신되지 않는 경우 +', 'CRCM3 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CRCM3을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRCM3과 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('3826175e-5455-46cd-97e4-8343825f0f67', '1206', '1206', 'FDU#5-감지기3 고장', 'T2', 'C', 'FDU-감지기3 고장', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 "Detector1 State” 신호가 "10"이 되면 검지.', '감지기 고장상태 현시(자동 소거 안됨)', '1) 감지기로부터 데이터 응답이 없는경우. +2) 감지기로부터 수신된 데이터의 CRC가 맞지 않는경우 +3) 감지기로부터 수신된 데이터의 ID가 송신 ID와 일치하지 않는경우', 'FDU 전원 리셋 후 감지기로부터 정상적으로 데이터가 수신된 경우', '1) FDU 전원 리셋 후 고장 소거 여부 확인 +2) 정상 동작중인 감지기와 위치 교환 후 FDU 전원 리셋 및 고장 상태 확인 +3) 동일한 감지기에서 고장 발생시 감지기 교체 +4) 동일한 위치에서 고장 발생시 감지기 라인 점검', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('383099f5-3b56-47be-ab7f-d463224690f2', '0079', '79', '화재검지(Car2)', 'M1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('3838fc59-f827-40e2-ac8f-24b88b042726', '0501', '501', 'DCU#7 4위(L2)-출입문 차단', 'M4', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('388263fb-ca70-42a3-9c46-b7743ce5af2a', '0170', '170', 'VVVF#2 - 보호동작 설정치 이상검지(SETERR)', 'M1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('38be9335-3de8-471e-8813-99e76ae24ef4', '0719', '719', 'HVAC#5-실내온도 센서2 고장', 'T2', 'C', 'HVAC-실내온도 센서2 고장', 'C', 'HVAC', '객실 실내온도 센서2 고장 발생', '실내온도 센서2 고장현시', '온도센서 검지범위는 -45~85도 (820~1330옴) 인데, 2초 이상 검지범위를 벗어나는 경우', '온도센서 검지 값이 2초 이상 허용온도 범위 내 일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820~1330옴 을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우, 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('38c80df3-3894-4300-9e1f-63aa40aaf107', '0506', '506', 'DCU#2 2위(L1) - 출입문 입력 저전압', 'M1', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 “1”이 되면 검지 +', '저전압상태(출입문 동작이 심하게 느려지거나 작동조차 안 될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하 +', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('38cf3c37-24fd-4844-9ba1-4d6741a48935', '0513', '513', 'DCU#3 4위(L2) - 모듈 상태체크 에러', 'M2', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 “Module check error” 신호가 “1”이 되면 검지 +', 'Modulecheckerror현시(출입문은 정상작동가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태 체크 기능에 이상이 생긴 경우 고장 발생 +', 'DCU의 ‘A' 모듈과 ‘B' 모듈 간, 상태 체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('38cf46ac-83fc-4a0a-91ab-4e7e72584bfb', '0509', '509', 'DCU#7 3위(R2) - 출입문 잠김 리미트 스위치 고장', 'M4', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 “DLS Failure” 신호가 “1”이 되면 검지 +', '출입문 잠김 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('38f7fd90-519d-4f9f-b513-06f630a7a525', '0703', '703', 'HVAC#3-냉난방장치1 압축기2 과부하', 'M2', 'C', 'HVAC-냉난방장치1 압축기2 과부하', 'C', 'HVAC', 'HVAC 냉방작동 중 냉난방장치1 압축기2 또는 응축기2 모터에 과부하 발생.', '냉방 기능 저하(전냉방시 반냉방으로 작동)', '1) 냉방작동 중 UNIT1의 압축기2 또는 응축기2 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRCM2와 연결된 THR2가 Trip 됨.', 'UNIT1의 압축기2 또는 응축기2 모터의 과부하 조건을 해소하여 정상 가능 상태로 만들고, THR2 및 마이콤 전원 리셋', '1) 냉난방배전반의 점검커버를 열고, THR2의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR2의 전류 세팅값이 11.5A에 맞춰져 있는지 확인하여, 아닐 경우, 십자 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동 시킨 후, THR2의 2차측 2,4,6 단자에서 각 단자간 상간 전압이 AC 380V으로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 압축기 및 응축기 단품 상태에서 점검을 한다. +7) THR2의 2차측 2,4,6 단자에서 각 단자간 권선저항이 모두 같은지 확인한다. (±10% 이하) (압축기2 및 응축기2 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT1의 압축기1 또는 응축기1 모터의 결선을 해제한 후 각 부품의 권선저항을 확인 후, 문제가 있는 부품을 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR2 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3911e259-a163-4930-8030-7bdc2a279a2f', '0518', '518', 'DCU#6 3위(R2) - 출입문 Enable 신호 에러', 'M3', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 “Enable signal error” 신호가 “1”이 되면 검지 +', 'DCU 출입문Enable신호에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드 시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을 때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드 시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입 상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호 장치로부터의 출입문 열림 명령 신호) 취급 시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함. +', '해당 출입문 enable 신호수신', '1) AUTO/MCS 모드 시에는 YARD 모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인 한다. (YARD/FMC 모드 시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('3939b38c-ffbd-44ee-83db-acf239e14875', '0719', '719', 'HVAC#4 - 실내온도 센서2 고장', 'T1', 'C', 'HVAC-실내온도 센서2 고장', 'C', 'HVAC', '객실 실내 온도센서2 고장 발생 +', '실내 온도센서2 고장현시', '온도센서 검지범위는 -45 ~ 85도(820 ~ 1,330Ω)인데, 2초 이상 검지범위를 벗어나는 경우 +', '온도센서 검지값이 2초 이상 허용온도 범위 내일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820~1,330Ω을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('393a902c-16e4-4a7a-b644-cec2728c599e', '0518', '518', 'DCU#1 4위(L2) - 출입문 Enable 신호 에러', 'Tc1', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 “Enable signal error” 신호가 “1”이 되면 검지 +', 'DCU 출입문Enable신호에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드 시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을 때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드 시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입 상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호 장치로부터의 출입문 열림 명령 신호) 취급 시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함. +', '해당 출입문 enable 신호수신', '1) AUTO/MCS 모드 시에는 YARD 모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인 한다. (YARD/FMC 모드 시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('39410669-e730-47fd-8f81-123f6742b3ac', '0509', '509', 'DCU#6 2위(L1)-출입문 잠김 리미트 스위치 고장', 'M3', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 "DLS Failure” 신호가 "1"이 되면 검지.', '출입문 잠김 상태 확인 불가', '1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('39559fdc-c03b-4643-9829-fbfb48d02020', '0521', '521', 'DCU#8 3위(R2) - 모듈 상태 이상', 'Tc2', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 “01” 또는 “00”이 되면 +검지 +', '이중계절체동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러)이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('3960944a-7d53-46a4-a490-1cd442c4a3f5', '0200', '200', 'BECU#7 통신고장', 'M4', 'B', 'BECU-통신고장', 'B', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT23의 ‘Life sign'이 변하지 않음. +', '해당 차량 통신고장현시 및 해당 차량의 제동압력(BCP) 등의 데이터가 반응하지 않음. (고장은 현시되나 제동제어는 정상적일 수 있음.)', 'BECU 전원 CBOFF 혹은 통신연결 불량 +', 'BECU와 TCMS 간 RS485 통신이 복귀되어 BECU-TCMSSDTEXT23의'Lifesign'이 변동 시 소거', 'BECU를 리셋(BECUCBOFF/ON) 후 복귀여부를 확인, 리셋 후 복귀되지 않을 경우 관제 보고하고 지시에 따를 것', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('39632b62-aae6-453c-a827-d31906032970', '0708', '708', 'HVAC#2-냉난방장치1 증발기1 과부하', 'M1', 'C', 'HVAC-냉난방장치1 증발기1 과부하', 'C', 'HVAC', 'HVAC 냉방작동 중 냉난방장치1 증발기 모터에 과부하 발생.', 'UNIT1 냉방 작동 불가', '1) 냉방작동 중 UNIT1의 증발기 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CREF1과 연결된 THR5가 Trip 됨.', 'UNIT1의 증발기 모터의 과부하 조건을 해소하여 정상 가능 상태로 만들고, THR5 및 마이콤 전원 리셋', '1) 냉난방배전반의 점검커버를 열고, THR5의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR5의 전류 세팅값이 3A에 맞춰져 있는지 확인하여, 아닐 경우, 십자 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동 시킨 후, THR5의 2차측 2,4,6 단자에서 각 단자간 상간 전압이 AC 380V으로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 증발기 단품 상태에서 점검을 한다. +7) THR5의 2차측 2,4,6 단자에서 각 단자간 권선저항이 모두 같은지 확인한다. (±10% 이하) (증발기 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT2의 증발기 모터의 결선을 해제한 후 4극 및 6극 모터의 권선저항을 확인 후, 문제가 있을 겨우, 증발기 모터를 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR5 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('39663d90-76c4-4135-b28f-bf8c6d017f3f', '0507', '507', 'DCU#4 5위(R3)-초기화 실패', 'T1', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 "Calibration failure” 신호가 "1"이 되면 검지.', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터고장, 장애물 감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우', '초기화 실패를 야기한 고장 코드를 확인하여 조치 후, 재 닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('398e151c-2eb1-4941-99f5-20d4192d9a6a', '0735', '735', 'HVAC#6-전자접촉기 압축기(CRCM)2 고장', 'M3', 'C', 'HVAC-전자접촉기 압축기(CRCM)2 고장', 'C', 'HVAC', 'HVAC 냉방작동 중 CRCM2 전자접촉기 고장 발생.', '냉방 기능 저하(전냉방시 반냉방으로 작동)', '냉방작동 중 2.5초 이상동안 CRCM2 작동 feedback 신호가 수신되지 않는 경우', 'CRCM2 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CRCM2를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRCM2와 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('399eb6c3-e3ce-4287-923d-ce6ac38144ce', '0502', '502', 'DCU#2 1위(R1) - 출입문 장애물검지', 'M1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('39ac0a19-5c56-4c04-a171-ad074213abc5', '0227', '227', '제동관련 회로차단기 차단(Car1)', 'Tc1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('39b4242f-d549-431e-8e83-5391c5420096', '0206', '206', 'BECU#2 - RAM 점검 고장', 'M1', 'C', 'BECU-RAM 점검 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit5 “RAM 점검 고장” 신호가 “1”이 되면 검지 +', '해당 차량 RAM 점검 고장검지 현시 및 해당 차량 정상적인 제동제어 불가', '해당 차량 BECU의 자가진단 시 고장 발생 +', '해당 차량 BECU의 자가진단 시 정상적일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('39d1500f-70cc-4d1b-b683-6ddc4f5996ff', '1523', '1523', 'TCMS 데이타버스2 좌측라인 통신 이상(Car7)', 'M4', 'C', 'TCMS 데이터버스2 좌측라인 통신 이상', 'C', 'TCMS', 'TCMS의 초기 기동 시 자기진단에 의한 2중계 메인통신선 중 2계 메인통신 이상 검지 시 +', '1) SL-NET 2중계이므로 데이터버스 1계로 정상통신, 운행에 지장 없음. +2) 초기기동 자기진단 시 2중계를 점검하여 2계측의 이상이 검지되었다는 점검 필요용 메시지', '초기 기동 시 SL-NET 1계와 2계를 각각 통신 후 비교하여 1계는 정상통신이 되나 2계는 정상통신이 안 되는 경우 +', '정상 수리 후 차량 전체 재기동하여 SL-NET 1계와 2계 모두 정상통신이 되는 경우', '1) 고장검출호차와 고장검출 좌측 호차와의 SL-NET 통신 2계 정상여부 확인(예 : 고장호차가 3호차인 경우, 1-2-3-4-5-6-7-8에서 3호차의 좌측, 즉 2-3호차 간 SL-NET 2계 통신 상태 점검 필요) +2) 고장검지호차의 SCM PCB 교체, 정상여부 확인 +3) 고장검지호차의 좌측호차 SCM PCB 교체, 정상여부 확인 +4) 고장검지호차와 고장검지 좌측호차의 SL-NET 2계 메인통신 배선의 연결 상태 확인 +5) 상기 2 ~ 4번 점검에도 정상적으로 복귀되지 않는 경우, CU/TU ASS'Y 교체(백보드 확인 필요)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('39dd03f5-e1ab-49b8-ab8c-4d1ddbf62752', '0500', '500', 'DCU#6 6위(L3) 통신고장', 'M3', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS 간 RS485 통신고장이 검지되면 발생 +', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐상태 등의 변화가 없음.', ' +1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우 +', '해당 차량의 DCU 및 CU/TU의 전원이 정상상태이고, 통신 라인 연결 상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜져 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적 으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는 데도 지속적으로 통신고장이 검지되면, DCU의 X2, X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상 체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('39dd7eba-d387-4b87-9d41-4ec7079cc5a9', '0726', '726', 'HVAC#5-배기팬2 과부하', 'T2', 'C', 'HVAC-배기팬2 과부하', 'C', 'HVAC', 'HVAC 환기작동 중 차량 배기팬2 모터에 과부하 발생.', '환기 시 차량 배기팬2 운전 불가능', '1) 냉방작동 중 챠량 배기팬2 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRVF2와 연결된 THR10이 Trip 됨.', '차량 배기팬2 모터의 과부하 조건을 해소하여 정상 가능 상태로 만들고, THR10 및 마이콤 전원 리셋', '1) 냉난방배전반의 점검커버를 열고, THR10의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR10의 전류 세팅값이 2.5A에 맞춰져 있는지 확인하여, 아닐 경우, 십자 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동 시킨 후, THR10의 2차측 2,4 단자와 6 단자 사이의 전압이 DC 100V으로 정상 측정되는지 확인한다. +5) 만약 전압이 측정되지 않을 시, 전원이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, THR10 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('39f8aa4f-f989-43fe-8a3c-63d53bd5103c', '0510', '510', 'DCU#8 4위(L2)-출입문 닫힘 리미트 스위치1 고장', 'Tc2', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 "DCS1 Failure(Leftt)” 신호가 "1"이 되면 검지.', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3a07031a-e430-4d72-aad2-82e3eaa494cd', '0093', '93', '화재검지기 고장(Car8)', 'Tc2', 'C', null, null, 'FDU', null, null, null, null, null, null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3a243ded-1589-4b8b-8112-753a70bfb861', '0513', '513', 'DCU#5 3위(R2)-모듈 상태체크 에러', 'T2', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 "Module check error” 신호가 "1"이 되면 검지.', 'Module check error 현시 (출입문은 정상작동 가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태체크 기능에 이상이 생긴 경우 고장 발생.', 'DCU의 'A'모듈과 'B'모듈 간, 상태체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3a3d8852-3864-4c41-9c55-f75aafaab80d', '0719', '719', 'HVAC#3-실내온도 센서2 고장', 'M2', 'C', 'HVAC-실내온도 센서2 고장', 'C', 'HVAC', '객실 실내온도 센서2 고장 발생', '실내온도 센서2 고장현시', '온도센서 검지범위는 -45~85도 (820~1330옴) 인데, 2초 이상 검지범위를 벗어나는 경우', '온도센서 검지 값이 2초 이상 허용온도 범위 내 일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820~1330옴 을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우, 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3a3f4bcf-97a6-4a28-9179-000d02e9360d', '0039', '39', 'DeadMan 스위치 - 경고', 'Tc2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('3a541f71-be6d-491c-9648-b95c74b0a4c6', '0146', '146', 'VVVF#2-과온검지1(THDL)', 'M1', 'C', 'VVVF-과온검지1(THDL)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT30의 Bit3 “THDL” 신호가 "1"이 되면 검지.', null, '인버터 내부 온도가 100 °C이상 도달 시 고장발생.', '90 °C 이하 도달 및 제동 OFF.', '1) 상기고장이 간헐적으로 발생하는 경우 아래와 같이 조치한다. +2) 상온에서 TCU(통합제어기)에 RS232케이블을 이용하여 노트북(제공품)과 연결 후 모니터링 프로그램으로 인버터의 온도값을 확인한다. +3) 인버터 유니트의 온도센서 배선 및 커넥터 체결상태를 확인한다. +4) 추진제어장치의 냉각부에 손상이 없는지 확인한다. +5) 추진제어장치 시험기를 이용하여 TCU(통합제어장치)의 이상여부를 확인한다. +6) 상기의 점검부분에 이상이 있을 경우 관련부품을 교체한다. +7) 동일 고장이 지속적으로 발생 시 INV 스택을 교체한다.', null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3a568bb7-a96b-4f43-825b-0f38e9afbe48', '0501', '501', 'DCU#8 1위(R1) - 출입문 차단', 'Tc2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('3a68bfdd-d908-4be2-8ad8-7f13a3182166', '0035', '35', '보안제동 동작', 'Tc1', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3a6d333e-c0a3-4907-81f5-a4593fccae65', '0161', '161', 'VVVF#6 - 통합제어장치 이상검지(CPUWDTD)', 'M3', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('3a7d5148-58d9-45ae-9dc5-4e44352ce999', '0142', '142', 'VVVF#2-배터리 전원저하(P100LVD)', 'M1', 'C', 'VVVF-배터리 전원저하(P100LVD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT29의 Bit7 “P100LVD” 신호가 "1"이 되면 검지.', null, '100V 제어전원이 67V 이하일 때 고장검지.', '제어전원 70V 이상일 때 고장 소거됨.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 차량의 측전지 저압을 측정하여 측전지 전압기준치(DC 70V~110V) 이내인지 확인하고 이상이 있을 시 충전계통 회로를 점검한다. +3) 추진제어장치 함 내부 제어전원 단자대에서 100P ~100G간 전압이 67V 이상임을 확인한다. +4) 동력차 일반배전반의 VVVFIC NFB의 스위치 상태 및 열화상태 등을 확인한다 +5) 상기 점검부분에 이상이 없을 경우 PWS보드를 교체한다. +6) PWS보드 교체 후에도 동일고장 재발 시 추진제어장치 시험기를 이용하여 TCU(통합제어기)의 정상동작을 확인한다.', null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3a9ba74e-6aae-48ff-8223-087a93f52a50', '1413', '1413', 'BMS#8-방전고온(DOT, 50도이상)', 'Tc2', 'D', 'BMS-방전고온(DOT)', 'D', 'BMS', '해당차량의 배터리 온도가 57도이상이 되면 검지', '차량 배터리 방전고온 검지 후, 60도이상이면 충전 접촉기(CK)가 차단된다.', '배터리 방전고온 (57도 이상).', '배터리 방전고온 정상범위로 회복 (55도 이하)', '1) 배터리 NFB 상태 확인 +2) 이상이 없으면 차량 전체를 리셋한다. +3) 차량 리셋 후에도 동일고장이면 사령실과 연락하여 조치를 취한다 (배터리를 상온조건으로 만든다.)', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3aa0584d-7fd1-4245-8262-b063d7b2fd09', '0848', '848', '실내객실표시기(PIB) 고장(Car#5)', 'T2', 'C', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3ab23971-d4ab-4089-8f78-2a1cf9cefb55', '0732', '732', 'HVAC#5-실외온도 센서1 고장', 'T2', 'C', 'HVAC-실외온도 센서 고장', 'C', 'HVAC', '실외온도 센서 고장 발생', '실외온도 센서 고장현시', '온도센서 검지범위는 -45~85도 (820~1330옴) 인데, 2초 이상 검지범위를 벗어나는 경우', '온도센서 검지 값이 2초 이상 허용온도 범위 내 일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820~1330옴 을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우, 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3abcb04c-36c7-482e-8804-914200a0bc16', '0513', '513', 'DCU#2 2위(L1) - 모듈 상태체크 에러', 'M1', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 “Module check error” 신호가 “1”이 되면 검지 +', 'Modulecheckerror현시(출입문은 정상작동가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태 체크 기능에 이상이 생긴 경우 고장 발생 +', 'DCU의 ‘A' 모듈과 ‘B' 모듈 간, 상태 체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('3adaa7ad-b266-4540-b43b-be6dedc94b94', '0048', '48', '보조공기압축기 스위치 취급(Car2)', 'M1', 'W', null, null, 'CMSB', null, null, null, null, null, null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3ae03fa8-aa88-4614-8d5e-953248e52360', '0516', '516', 'DCU#4 5위(R3)-출입문 장애물로 인한 닫힘 실패', 'T1', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Close failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림상태로 대기', '도어 닫힘 중 3회 장애물 감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3aec6ce6-850b-412d-9c93-2d66dae53f9e', '0507', '507', 'DCU#6 2위(L1)-초기화 실패', 'M3', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 "Calibration failure” 신호가 "1"이 되면 검지.', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터고장, 장애물 감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우', '초기화 실패를 야기한 고장 코드를 확인하여 조치 후, 재 닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3aeea457-a4bd-4711-8fb8-30c335e48775', '1502', '1502', '기타장치용 DC 회로차단기 차단(Car4)', 'T1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('3af649b2-df8c-44bc-9b8d-2a981a06f790', '0516', '516', 'DCU#8 3위(R2)-출입문 장애물로 인한 닫힘 실패', 'Tc2', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Close failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림상태로 대기', '도어 닫힘 중 3회 장애물 감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3af85ba9-4907-4d79-984e-eec093bca8f7', '0711', '711', 'HVAC#4 - 냉난방장치2 압력스위치1(DPS) 저압', 'T1', 'D', 'HVAC-냉난방장치2 압력스위치1(DPS) 저압', 'D', 'HVAC', '냉난방장치2 냉매 압력스위치1 저압 발생 +', 'UNIT2CYCLE1 냉방기능불가', 'UNIT2DSP1측 냉매압력이 3초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우 +', '냉매압력이 정상수치 2±0.5(kgf/cm2) 이상으로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CREF4의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)를 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설 여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안 되는 것을 확인한 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('3afb12b8-7cd1-46e2-97b1-1c4e2988ddd0', '0514', '514', 'DCU#1 1위(R1) - 출입문 닫힘 시간 초과', 'Tc1', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 “Close time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 닫힘 동작 시간이 7초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도한 후, ‘장애물로 인한 닫힘 실패' 고장과 함께 ‘Close time out' 고장이 함께 현시 +', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('3b002a26-670b-4d4e-9410-0c24b0996e53', '0218', '218', 'BECU#3-인통선로직 비정상', 'M2', 'C', 'BECU-인통선로직 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit1 “인통선로직 비정상” 신호가 "1"이 되면 검지.', '해당 차량 인통선로직 비정상 검지 현시 및 해당차량 정상적인 제동제어 불가.(상용제동지령에 따른 제어)', '해당 차량의 추진선택(P), 제동선택(B) 신호가 동시에 ON 됨.', '해당 차량의 추진선택(P), 제동선택(B) 신호가 정상작동(상보적으로 작동) 될 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 한 뒤, 마스콘을 제동 7단으로 5초간 취급하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3b0aefdc-3730-48e7-b95f-fd7cc2b54fa0', '0235', '235', '제동력부족(ISBD, Car4)', 'T1', 'B', '제동력부족(ISBD)', 'B', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit3 “ISBD” 신호가 “1”이 되면 검지 +', '해당 차량 제동력부족검지 현시 및 해당 차량 제동압력(BCP)이 타 차량에 비해 현저히 낮음.', '제동 7단 취급 시 해당 차량의 제동압력이 생성되지 않음. +', '제동 7단 취급 시 정상적인제동압력이 생성된 경우 소거', 'MCS 모드로 전환 후, 마스콘을 N(중립) → 제동 7단까지 수 회 취급하여 소거 여부 확인, 제동 취급 확인 후, 주의 운전할 것, 지속발생 시 관제보고하고 지시에 따를 것', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('3b1536af-1fea-41c9-8219-f37fd50ee10f', '0502', '502', 'DCU#5 5위(R3) - 출입문 장애물검지', 'T2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('3b1d6997-078e-42f6-9372-0ba66b7bd59a', '0833', '833', '출력증폭기#1(AMP) 고장(Car#3)', 'M2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('3b34fa4b-5e26-4b8e-9e75-c8bd4e2ad235', '0722', '722', 'HVAC#4-냉난방장치2 압력스위치1(DPS) 냉매부족', 'T1', 'C', 'HVAC-냉난방장치2 압력스위치1(DPS) 냉매부족', 'C', 'HVAC', '냉난방장치2 냉매 압력스위치1 저압 발생.', 'UNIT2 CYCLE1 냉방 기능 불가', 'UNIT2 DSP1측 냉매 압력이 30초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우', '냉매 압력이 정상 수치 2±0.5(kgf/cm2 이상 유지하도록 하고, 마이콤 전원을 리셋', '1) 배전반 점검 커버를 열고 마이콤 전원을 리셋한 후, 냉방 가동 시, CREF4의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)을 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안되는 것을 확인한 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3b360d72-14d5-476e-82c7-7c52a0c376da', '0521', '521', 'DCU#2 4위(L2)-모듈 상태 이상', 'M1', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 "01"또는 "00"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3b3f622f-7771-48f7-a6ae-c24f3964690f', '0513', '513', 'DCU#5 5위(R3)-모듈 상태체크 에러', 'T2', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 "Module check error” 신호가 "1"이 되면 검지.', 'Module check error 현시 (출입문은 정상작동 가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태체크 기능에 이상이 생긴 경우 고장 발생.', 'DCU의 'A'모듈과 'B'모듈 간, 상태체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3b41babf-c4a7-4bac-b2e1-acc1e653288f', '0736', '736', 'HVAC#4 - 전자접촉기 압축기(CRCM)1 고장', 'T1', 'C', 'HVAC-전자접촉기 압축기(CRCM)1 고장', 'C', 'HVAC', 'HVAC 냉방 작동 중 CRCM1 전자접촉기 고장 발생 +', '냉방 기능 저하(전냉방 시 반냉방으로 작동)', '냉방 작동 중 2.5초 이상 동안 CRCM1 작동 feedback 신호가 수신되지 않는 경우 +', 'CRCM1 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CRCM1을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRCM1과 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('3b459c43-5ff6-44f0-a438-09fbf6acad43', '0094', '94', 'PWM 엔코더#1 고장(Car1)', 'Tc1', 'B', 'PWM 엔코더#1 고장(TC1)', 'B', 'VVVF', '차량으로부터 PWM ENCODER#1(#2) FAULT 신호 미입력시', '1) 엔코더 1계 PWM 출력 고장시 1계 고장에 해당되는 신호 출력 +2) 엔코더 2계로 자동 절체 +3) 엔코더 2계 PWM 출력 고장시 1계, 2계 고장 모두 출력 +4) 엔코더 PWM 출력 신호 없음', '1) 엔코더 1계 PWM 출력 신호 이상 시 +2) 엔코더 2계 PWM 출력 신호 이상 시 +3) 엔코더 1계, 2계 PWM 출력 신호 이상 시 +4) 엔코더 수동절체버튼 3초 이상 조작 시', '1) 엔코더의 전원 차단 후 재투입하여 소거되는지 확인 +2) 수동절체버튼의 조작으로 인한 고장 출력 또한 전원 재투입으로 소거함', '1) 엔코더의 전원 차단 후 재투입하여 소거되지 않을 시 정상품으로 교체하여 정상동작 확인 +2) 교체된 고장품의 고장원인 분석', ' +REC20210HN0', '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3b50f22a-46d0-41a8-a6f4-361492328c88', '1007', '1007', 'CMSB#8 - CM 기동불가', 'Tc2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('3b6eaacd-ad8b-4a40-8a11-acb1e859b3f9', '0875', '875', '비상인터폰#1(PEI) 고장(Car#7)', 'M4', 'C', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3b6ef087-057e-40e1-bb28-e038af46f72b', '0519', '519', 'DCU#5 4위(L2)-ZVR 신호 에러', 'T2', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 "ZVR signal error” 신호가 "1"이 되면 검지.', '출입문이 강제로 닫히게 되고, 열림은 불가능', '1) 차량 ZVR 신호가 없는 상태 (차량 주행상태) 에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함.', '해당출입문 ZVR 신호 수신', '1) 차량이 주행중이라면, 차량이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.392739+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3b702d83-b1d1-4413-b884-8f9153dc1a7a', '0518', '518', 'DCU#5 4위(L2) - 출입문 Enable 신호 에러', 'T2', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 “Enable signal error” 신호가 “1”이 되면 검지 +', 'DCU 출입문Enable신호에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드 시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을 때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드 시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입 상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호 장치로부터의 출입문 열림 명령 신호) 취급 시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함. +', '해당 출입문 enable 신호수신', '1) AUTO/MCS 모드 시에는 YARD 모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인 한다. (YARD/FMC 모드 시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('3b84d5fa-048b-4b06-acc3-1850ab19d5b9', '0519', '519', 'DCU#4 1위(R1)-ZVR 신호 에러', 'T1', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 "ZVR signal error” 신호가 "1"이 되면 검지.', '출입문이 강제로 닫히게 되고, 열림은 불가능', '1) 차량 ZVR 신호가 없는 상태 (차량 주행상태) 에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함.', '해당출입문 ZVR 신호 수신', '1) 차량이 주행중이라면, 차량이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.392739+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3b88db4c-0da2-4ecd-a750-f8cf3e36a552', '0517', '517', 'DCU#2 6위(L3) - 출입문 장애물로 인한 열림 실패', 'M1', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Open failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘 상태로 대기', '도어열림 중 3회 장애물감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 열림 시, 장애물감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('3b8a972e-f817-4703-9dbd-9a178e3ef9f1', '1201', '1201', 'FDU#3-감지기1 화재감지', 'M2', 'W', 'FDU-감지기1 화재감지', 'W', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 "Detector1 State” 신호가 "11"이 되면 검지.', '화재상태 현시(자동 소거 안됨)', '하기 2가지 조건을 모두 만족하여야 화재신호가 출력 됨(연동모드 동작). +1) 이웃한(앞 혹은 뒤에 위치한) 감지기 중 하나의 감지기라도 주의 혹은 화재상태에 있어야 함. +2) Detector1(해당 감지기)에서 측정된 연기농도가 15% 이상이거나 온도가 65℃ 이상인 경우', '1) FDU의 복귀버튼 조작시 +2) FDU 전원 리셋시', '1) 해당 감지기 위치의 화재 발생 여부 확인 +2) 화재 오 감지일경우 FDU의 복귀버튼 취급 +3) 오감지일경우 감지기의 청소주기 확인(내부 먼지 제거)', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3b9209b0-f35b-4100-9039-532cea81c80b', '0213', '213', 'BECU#6 - AC 압력센서 고장', 'M3', 'C', 'BECU-AC 압력센서 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit4 “AC 압력센서 고장” 신호가 “1”이 되면 검지 +', '해당 차량 공기제동장치고장, AC 압력센서 고장검지 현시 및 해당 차량 제동제어불가', '해당 차량의 AC 압력센서 고장 +', '해당 차량의 AC 압력센서가 정상일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('3b9458c4-fdd8-4456-812e-15eb583b9c92', '0238', '238', 'BECU#2 - 4축 스키드신호', 'M1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('3b965e1c-5f36-4198-94dd-e52d7a55c930', '0712', '712', 'HVAC#7-냉난방장치2 압력스위치1(DPS) 고압', 'M4', 'D', 'HVAC-냉난방장치2 압력스위치1(DPS) 고압', 'D', 'HVAC', '냉난방장치2 냉매 압력스위치1 고압 발생.', 'UNIT2 CYCLE1 냉방 기능 불가', 'UNIT2 DSP1측 냉매 압력이 3초 이상 28±1(kgf/cm2) 이상 되는 경우', '냉매 압력이 정상 수치 15±0.7(kgf/cm2 이하로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CRCM3의 부하측 전류를 측정하여 응축기 팬의 동작여부를 확인한다. +2) 응축기 코일의 전면에 이물질로 인한 막힘이 있는지 확인한다. +3) 응축기 팬 상부 그릴에 외부 이물질로 인한 막힘이 있는지 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3b987078-ad95-46f7-a8db-1a7d359d0bc9', '0749', '749', 'HVAC#4 - 380V 전원고장', 'T1', 'C', 'HVAC-380V 전원고장', 'C', 'HVAC', 'HVAC 메인 전원 AC 380V 전원 고장 발생 +', 'HVAC 냉방 및 난방 기능 불가', '차량으로부터 공급되는 AC 380V가 입력되지 않는 경우 +', '차량으로부터 AC 380V 전압이 정상적으로 입력', '1) 차량으로부터 AC 380V 전압이 정상적으로 입력되는지 확인한다. +2) 차량 전원이 정상일 경우, 냉난방 배전반의 CBLVD 차단기가 꺼져 있는지 확인 후, 꺼져있을 경우 켠다. +3) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('3ba23274-cd28-41e8-b213-6c1d57c732cf', '0516', '516', 'DCU#3 1위(R1) - 출입문 장애물로 인한 닫힘 실패', 'M2', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Close failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림 상태로 대기', '도어 닫힘 중 3회 장애물감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('3bc15116-c3f1-4d15-b216-2927942d2260', '0221', '221', 'BECU#4 - 제동력부족(ISBD)', 'T1', 'B', 'BECU-제동력부족(ISBD)', 'B', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit5 “ISBD” 신호가 “1”이 되면 검지 +', '해당 차량 제동력 부족 검지 현시 및 해당 차량 제동압력(BCP)이 타차량에 비해 현저히 낮음.', '제동 7단 취급 시 해당 차량의 제동압력이 생성되지 않음. +', '제동 7단 취급 시 정상적인 제동압력이 생성된 경우 소거', 'MCS 모드로 전환 후, 마스콘을 N(중립) → 제동 7단까지 수 회 취급하여 소거 여부 확인, 제동 취급 확인 후, 주의 운전할 것, 지속발생 시 관제보고하고 지시에 따를 것', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('3bce1902-08e2-46d3-9267-24cab8e2f427', '0517', '517', 'DCU#5 5위(R3) - 출입문 장애물로 인한 열림 실패', 'T2', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Open failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘 상태로 대기', '도어열림 중 3회 장애물감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 열림 시, 장애물감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('3bd18ebc-b3d9-4e9b-bbe9-fcd90e4f2f8e', '0304', '304', 'ATC#1-1계 고장', 'Tc1', 'C', 'ATC-1계 고장', 'C', 'ATC', 'ATC의 RS485 데이터 중 ATC-TCMS SD TEXT7의 Bit4~7 “ATC/ATO Status” 데이터가 ATC 1계 Bad 상태이면 검지.', 'MMI에 ATC/ATO1이 빨간색으로 표기되며 관련 고장메시지 현시', '1) ATC시스템 자체진단테스트 실행결과 비정상상태일 경우 +2) ATC-1계 CPU보드 고장 시 +3) ATC-1계 POWER보드 고장시', '상기 검지조건 해제 시', '1) 전원스위치 CB ATC#1,2 OFF->ON하여 복귀시도 후, 복귀되었는지 확인한다. +2) 1, 2계 동시 고장 시, 완전수동(FMC)전환 운행 한다.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3bd3360f-857c-48fb-a0d1-d8429b02f012', '0235', '235', '제동력부족(ISBD, Car3)', 'M2', 'B', '제동력부족(ISBD)', 'B', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit3 “ISBD” 신호가 "1"이 되면 검지.', '해당 차량 제동력 부족 검지 현시 및 해당 차량 제동압력(BCP)이 타 차량에 비해 현저히 낮음.', '제동 7단 취급 시 해당 차량의 제동압력이 생성되지 않음.', '제동 7단 취급 시 정상적인 제동압력이 생성된 경우 소거.', 'MCS모드로 전환 후, 마스콘을 N(중립) -> 제동7단까지 수회취급 하여 소거 여부 확인. 제동 취급 확인 후, 주의 운전 할 것. +지속발생시 관제보고하고 지시에 따를 것.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3bdb2da8-8a41-4013-a788-e48b7b496e34', '0717', '717', 'HVAC#6-CO2 센서2 고장', 'M3', 'C', 'HVAC-CO2 센서2 고장', 'C', 'HVAC', '객실 CO2 센서2 고장 발생', 'CO2 센서2 고장현시', 'CO2 센서의 검지범위는 0~4000ppm (2~10Vdc) 인데, 1초 이상 출력전압이 2Vdc (0ppm) 미만으로 떨어지는 경우', 'CO2 센서 검지 값이 1초 이상 2Vdc (0ppm) 이상 지속되는 경우', '1) 전원을 인가한 상태에서 CO2센서 커버를 열고 테스터기를 통해 'OUT2' 단자와 'G' 단자간의 전압이 2Vdc 미만인지 확인한다. +2) 만약 전압이 2Vdc 이상인데도 고장이 지속될 경우, 마이콤을 교체한다. +3) 만약 전압이 2Vdc 미만으로 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3be3bf6c-f0fb-439e-8b24-48472631ab39', '0501', '501', 'DCU#6 3위(R2) - 출입문 차단', 'M3', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('3be85d07-0d9a-4ad1-886b-801cf5951c06', '0184', '184', '역행관련 회로차단기 차단(Car6)', 'M3', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('3bebdbe1-1f9a-4f9c-9053-d37ed823fb44', '0172', '172', 'VVVF#3-접지검지(GRD)', 'M2', 'C', 'VVVF-접지검지(GRD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT33의 Bit5 “GRD” 신호가 "1"이 되면 검지.', null, '주 회로의 전류가 누설되었을 경우 고장 검지.', '동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) 인버터 유니트 내 IGBT의 소손 여부를 확인한다. +2) 고압에 의한 주 회로 소손 흔적을 확인한다. +3) 주회로 차단기함 내부의 고압회로에 소손이 없는지 확인한다. +4) GCT 외관 및 커넥터 체결상태 상태 점검. +5) 추진제어장치 시험기를 이용하여 TCU(통합 제어장치)의 이상여부를 확인한다. +6) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:37.578803+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3bf4cc30-a5f9-4d59-b189-26926a8da81c', '1202', '1202', 'FDU#1-감지기1 고장', 'Tc1', 'C', 'FDU-감지기1 고장', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 "Detector1 State” 신호가 "10"이 되면 검지.', '감지기 고장상태 현시(자동 소거 안됨)', '1) 감지기로부터 데이터 응답이 없는경우. +2) 감지기로부터 수신된 데이터의 CRC가 맞지 않는경우 +3) 감지기로부터 수신된 데이터의 ID가 송신 ID와 일치하지 않는경우', 'FDU 전원 리셋 후 감지기로부터 정상적으로 데이터가 수신된 경우', '1) FDU 전원 리셋 후 고장 소거 여부 확인 +2) 정상 동작중인 감지기와 위치 교환 후 FDU 전원 리셋 및 고장 상태 확인 +3) 동일한 감지기에서 고장 발생시 감지기 교체 +4) 동일한 위치에서 고장 발생시 감지기 라인 점검', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3bfdfaac-0486-4a72-88a6-063a4ff66caf', '0241', '241', 'BECU#7-1축스키드신호', 'M4', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3c003da2-7541-4fde-9e0d-c94bfdf38756', '0715', '715', 'HVAC#5 - 냉난방장치1 압력스위치1(DPS) 저압', 'T2', 'D', 'HVAC-냉난방장치1 압력스위치1(DPS) 저압', 'D', 'HVAC', '냉난방장치1 냉매 압력스위치1 저압 발생 +', 'UNIT1CYCLE1 냉방기능불가', 'UNIT1DSP1측 냉매압력이 3초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우 +', '냉매압력이 정상수치 2±0.5(kgf/cm2) 이상으로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CREF2의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)를 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설 여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안 되는 것을 확인한 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('3c1d3a4a-0c1d-4bed-b759-0f9cffa9383d', '0327', '327', 'ATC#8-', 'Tc2', '0', null, null, '0', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3c1fe56b-d39b-40e7-9cde-f5be9f358766', '0183', '183', 'VVVF#3-Over Load(OL)', 'M2', 'C', 'VVVF-Over Load(OL)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT35의 Bit2 “OL” 신호가 "1"이 되면 검지.', null, '차량의 구속상태에서 역행을 5초 이상 계속한 경우', '노치 OFF', '1) 상기고장이 간헐적으로 발생하는 경우 아래와 같이 조치한다. +2) 출발 시 보안제동의 투입 해제를 확인한다. +3) 고임목 등의 장애물이 차량을 구속하고 있는경우 제거한다. +4) 견인 전동기의 주 회로 오배선 여부 및 결선상태를 확인한다. +5) 추진제어장치 시험기를 이용하여 TCU(통합 제어장치)의 이상여부를 확인한다. +6) PWS보드 또는 통합제어기 교체. +7) 상기의 점검부분에 이상이 있을경우 관련부품을 교체한다.', null, '3', '2025-10-12 01:21:37.578803+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3c24a77c-3dff-4759-a1a3-773b52e72d35', '0314', '314', 'ATC#8 - 차륜경 오류', 'Tc2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('3c27d40c-a806-4cfc-8831-fd709234c7cf', '0514', '514', 'DCU#2 1위(R1) - 출입문 닫힘 시간 초과', 'M1', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 “Close time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 닫힘 동작 시간이 7초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도한 후, ‘장애물로 인한 닫힘 실패' 고장과 함께 ‘Close time out' 고장이 함께 현시 +', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('3c2afffd-aa9e-40fc-8f3a-94d0b903dc03', '0714', '714', 'HVAC#3 - 냉난방장치1 압력스위치2(DPS) 고압', 'M2', 'D', 'HVAC-냉난방장치1 압력스위치2(DPS) 고압', 'D', 'HVAC', '냉난방장치1 냉매 압력스위치2 고압 발생 +', 'UNIT1CYCLE2 냉방기능불가', 'UNIT1DSP2측 냉매압력이 3초 이상 28±1(kgf/cm2) 이상 되는 경우 +', '냉매압력이 정상수치 15±0.7(kgf/cm2) 이하로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CRCM2의 부하측 전류를 측정하여 응축기 팬의 동작여부를 확인한다. +2) 응축기 코일의 전면에 이물질로 인한 막힘이 있는지 확인한다. +3) 응축기 팬 상부 그릴에 외부 이물질로 인한 막힘이 있는지 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('3c2e945a-f07c-436f-b13c-38f435e66c73', '0423', '423', 'SIV#1-', 'Tc1', '0', null, null, '0', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3c30e778-420d-41d8-847c-8f364d256e1b', '0515', '515', 'DCU#1 6위(L3)-출입문 열림 시간 초과', 'Tc1', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 "Open time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 열림 동작시간이 6초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도 한 후, '장애물로 인한 열림실패' 고장과 함께 'Open time out' 고장이 함께 현시', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3c46dc75-c5c0-49d3-8120-61ebe350501e', '1523', '1523', 'TCMS 데이타버스2 좌측라인 통신 이상(Car3)', 'M2', 'C', 'TCMS 데이터버스2 좌측라인 통신 이상', 'C', 'TCMS', 'TCMS의 초기 기동 시 자기진단에 의한 2중계 메인통신선 중 2계 메인통신 이상 검지 시 +', '1) SL-NET 2중계이므로 데이터버스 1계로 정상통신, 운행에 지장 없음. +2) 초기기동 자기진단 시 2중계를 점검하여 2계측의 이상이 검지되었다는 점검 필요용 메시지', '초기 기동 시 SL-NET 1계와 2계를 각각 통신 후 비교하여 1계는 정상통신이 되나 2계는 정상통신이 안 되는 경우 +', '정상 수리 후 차량 전체 재기동하여 SL-NET 1계와 2계 모두 정상통신이 되는 경우', '1) 고장검출호차와 고장검출 좌측 호차와의 SL-NET 통신 2계 정상여부 확인(예 : 고장호차가 3호차인 경우, 1-2-3-4-5-6-7-8에서 3호차의 좌측, 즉 2-3호차 간 SL-NET 2계 통신 상태 점검 필요) +2) 고장검지호차의 SCM PCB 교체, 정상여부 확인 +3) 고장검지호차의 좌측호차 SCM PCB 교체, 정상여부 확인 +4) 고장검지호차와 고장검지 좌측호차의 SL-NET 2계 메인통신 배선의 연결 상태 확인 +5) 상기 2 ~ 4번 점검에도 정상적으로 복귀되지 않는 경우, CU/TU ASS'Y 교체(백보드 확인 필요)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('3c7298d7-c3dc-4414-83af-fcb1798eeac2', '757', '757', 'CAB HVAC#1 - 압축기 과부하', 'Tc1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('3c73ed96-de42-4f41-bb47-17d58295f127', '0856', '856', '0', 'T2', '0', null, null, '0', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3c7cdaa6-7118-46fe-bd69-9f77a0fcb4e2', '0072', '72', '주차제동 바이패스 스위치 취급', 'Tc2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('3c7d3f24-4539-4632-87a9-27cf6d82db33', '0081', '81', '화재검지(Car4)', 'T1', 'W', null, null, 'FDU', null, null, null, null, null, null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3c838184-05e0-4b1e-b98c-d9af37f37ad3', '0501', '501', 'DCU#8 5위(R3)-출입문 차단', 'Tc2', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3c9dab30-d396-4a50-a2c4-e36f2db8fdac', '0518', '518', 'DCU#4 3위(R2)-출입문 Enable 신호 에러', 'T1', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 "Enable signal error” 신호가 "1"이 되면 검지.', 'DCU 출입문 Enable 신호 에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) 취급시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함.', '해당출입문 enable 신호 수신', '1) AUTO/MCS 모드시에는 YARD모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인한다. (YARD/FMC 모드시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.392739+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3cb41f21-b47c-4ffa-a039-e72153c7e261', '0707', '707', 'HVAC#6-냉난방장치2 증발기1 과부하', 'M3', 'C', 'HVAC-냉난방장치2 증발기1 과부하', 'C', 'HVAC', 'HVAC 냉방작동 중 냉난방장치2 증발기 모터에 과부하 발생.', 'UNIT2 냉방 기능 불가', '1) 냉방작동 중 UNIT2의 증발기 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CREF3과 연결된 THR7이 Trip 됨.', 'UNIT2의 증발기 모터의 과부하 조건을 해소하여 정상 가능 상태로 만들고, THR7 및 마이콤 전원 리셋', '1) 냉난방배전반의 점검커버를 열고, THR7의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR7의 전류 세팅값이 3A에 맞춰져 있는지 확인하여, 아닐 경우, 십자 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동 시킨 후, THR7의 2차측 2,4,6 단자에서 각 단자간 상간 전압이 AC 380V으로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 증발기 단품 상태에서 점검을 한다. +7) THR7의 2차측 2,4,6 단자에서 각 단자간 권선저항이 모두 같은지 확인한다. (±10% 이하) (증발기 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT2의 증발기 모터의 결선을 해제한 후 4극 및 6극 모터의 권선저항을 확인 후, 문제가 있을 겨우, 증발기 모터를 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR7 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3cc4c4d2-e884-4f0f-a59a-bd83a5cd181b', '0512', '512', 'DCU#4 6위(L3) - 파라미터 로딩 실패', 'T1', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 “Paraneter error” 신호가 “1”이 되면 검지 +', 'Parametererror 현시(출입문은 정상작동 가능)', 'DCU 자체 내의 EEPROM으로부터 parameter데이터 로딩 실패 +', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('3cd2b654-fda1-4015-8f0d-812223ac66d3', '0118', '118', 'VVVF-FC 과전압검지(FCOVD) (Car2)', 'M1', 'C', 'VVVF-FC 과전압검지(FCOVD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT32의 Bit5 “FCOVD” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 'FC 과전압검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치 내부 FC전압이 2100V 이상일 경우 검지됨.', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반배전반의 VVVFIC nfb 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 FC전압에 이상이 있는지 확인한다. +3) 추진제어장치 내부 고전압부에 소손흔적이 있는지 확인한다. +4) FC에 연결된 버스바의 체결상태가 양호한지 확인한고, 버스바를 분리하여 FC의 Capacitance를 측정하여 이상이 없는지 확인한다. +5) 전압센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +6) SEN 보드의 동작상태를 시험기를 통해 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.578803+00', null, '다대48량(2015)', 'Rotem'), ('3cd2dd44-faaa-4173-bdc0-bb36b4bb7f78', '0504', '504', 'DCU#6 1위(R1) - 출입문 외부 비상핸들 취급(EAD)', 'M3', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('3cd2e74e-da59-4919-8959-a1722f6b0693', '0231', '231', 'BC 코크(차상) 차단(Car1)', 'Tc1', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3cd48ee5-e0d8-4323-a623-01e73704fc98', '0238', '238', 'BECU#7-4축스키드신호', 'M4', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3cf675f1-bb34-4af2-80c8-386e632446ce', '1704', '1704', '노선안내표시기#2 고장(Car8)', 'Tc2', 'C', '노선안내표시기#2 고장', 'C', 'PIC', 'PIC 장치의 노선안내표시기#2이 고장이 났을 때 발생 +', '1) 노선안내표시기 화면 미현시 +2) 노선안내표시기 안내 화면 오현시', '통신고장 +', '통신 재개 시', '1) 이더넷 스위치 링크 확인 +2) 이더넷 케이블 점검 +3) 제어보드 및 전원보드 교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('3d124f78-6405-4f8d-9ab8-19ac30001e9f', '0236', '236', '상용제동코크 차단(Car5)', 'T2', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3d12c4d8-eb2e-4c72-9af8-cbd192ef00ce', '0520', '520', 'DCU#7 1위(R1)-이중계 절체 동작', 'M4', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 "Module switchover' 신호가 "1"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3d215734-6a1a-42e4-a0d0-db5236ca3d4e', '0216', '216', 'BECU#6-전두대차 AS압력센서고장', 'M3', 'C', 'BECU-전두대차 AS압력센서 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit7 “전두대차 AS압력센서 고장” 신호가 "1"이 되면 검지.', '해당 차량 전두대차 AS압력센서 고장 검지 현시 및 해당차량 정상적인 응하중 제동제어 불가.', '해당 차량의 전두대차 AS 압력센서(AS1, AS2) 고장.', '해당 차량의 전두대차 AS 압력센서(AS1, AS2)가 정상일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3d33d6df-5d89-4744-998b-67d27e4c1574', '0716', '716', 'HVAC#5-냉난방장치1 압력스위치1(DPS) 고압', 'T2', 'D', 'HVAC-냉난방장치1 압력스위치1(DPS) 고압', 'D', 'HVAC', '냉난방장치1 냉매 압력스위치2 고압 발생.', 'UNIT1 CYCLE1 냉방 기능 불가', 'UNIT1 DSP1측 냉매 압력이 3초 이상 28±1(kgf/cm2) 이상 되는 경우', '냉매 압력이 정상 수치 15±0.7(kgf/cm2 이하로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CRCM1의 부하측 전류를 측정하여 응축기 팬의 동작여부를 확인한다. +2) 응축기 코일의 전면에 이물질로 인한 막힘이 있는지 확인한다. +3) 응축기 팬 상부 그릴에 외부 이물질로 인한 막힘이 있는지 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3d37855b-bad2-43c0-9f85-654dbf361d5a', '0510', '510', 'DCU#1 5위(R3) - 출입문 닫힘 리미트 스위치1 고장', 'Tc1', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 “DCS1 Failure(Leftt)” 신호가 “1”이 되면 검지 +', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('3d3e1284-dabf-4688-a1be-2e02d372a58d', '0211', '211', 'BECU#7-2축속도신호의 비정상', 'M4', 'C', 'BECU-2축속도신호의 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit2 “2축속도신호의 비정상” 신호가 "1"이 되면 검지.', '해당 차량 2축속도신호의 비정상 검지 현시 및 해당 차량 활주제어 불가.', '해당 차량의 2축 속도센서 고장 발생.', '해당 차량의 2축 속도센서가 정상적일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3d405367-1323-46de-8f12-74c8fc71c85e', '1508', '1508', '판토코크#2 차단(Car6)', 'M3', 'W', '판토코크#2차단', 'W', 'CMSB', '차량으로부터 NO PANTOGRAPH CUT-OUT COCK#1(#2) 신호 미입력시', '판토 하강상태에서 해당 코크 조작시 상승 불가', '해당 코크 조작시', '해당 코크 정상 위치로 조작', null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3d4c5b19-c21c-4797-9f01-40d9f10eb198', '0515', '515', 'DCU#8 3위(R2) - 출입문 열림 시간 초과', 'Tc2', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 “Open time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 열림 동작시간이 6초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도한 후, ‘장애물로 인한 열림 실패' 고장과 함께 ‘Open time out' 고장이 함께 현시 +', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('3d4f5ee7-3511-4a6a-b09e-ebf8f11df4eb', '0177', '177', 'VVVF#6-LB1 투입불량(LB1NC)', 'M3', 'C', 'VVVF-LB1 투입불량(LB1NC)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT34의 Bit2 “LB1NC” 신호가 "1"이 되면 검지.', null, 'LB1 투입이 되지 않을 때 고장검지.', '동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) 판토하강상태에서 테스트모드로 전환하여 시퀀스를 투입하고 LB1의 주접점 동작을 확인한다. +2) 주회로 차단기함 내에 LB1의 보조접점의 동작상태를 확인한다. +3) 추진제어장치 계전기 유니트에 LB1R 계전기 상태를 확인하여 계전기의 동작 여부를 확인한다. +4) 추진제어장치 시험기를 이용하여 제어기 시험을 실시하여 이상여부를 확인한다.', null, '3', '2025-10-12 01:21:37.578803+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3d4facca-ec78-4783-bbf2-6d5b0f19c46a', '0747', '747', 'HVAC#2 - 전자접촉기 차량히터2(CRRHT) 고장', 'M1', 'C', 'HVAC-전자접촉기 차량 히터2(CRRHT) 고장', 'C', 'HVAC', '객실 난방기 작동 중 CRRHT2 전자접촉기 고장 발생 +', '객실 전난방 시 1/3난방만 작동', '객실 전난방 작동 중 2.5초 이상 동안 CRRHT2 작동 feedback 신호가 수신되지 않는 경우 +', 'CRRHT2 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CRRHT2를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRRHT2와 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('3d6bf3da-a24a-44c5-ae9e-40b6110bca6c', '0516', '516', 'DCU#7 6위(L3) - 출입문 장애물로 인한 닫힘 실패', 'M4', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Close failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림 상태로 대기', '도어 닫힘 중 3회 장애물감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('3d6f8550-e7ab-46b0-9c2c-d17db4573a41', '0729', '729', 'HVAC#3 - 냉난방장치2 리턴 센서 고장', 'M2', 'C', 'HVAC-냉난방장치2 리턴 센서 고장', 'C', 'HVAC', '냉난방장치2의 리턴 센서 고장 발생 +', '냉난방장치2 리턴 센서 고장현시', '온도센서 검지범위는 -45 ~ 85도(820 ~ 1,330Ω)인데, 2초 이상 검지범위를 벗어나는 경우 +', '온도센서 검지값이 2초 이상 허용온도 범위 내일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820 ~ 1,330Ω을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('3d939b84-5910-4c92-99d6-edce2ab08996', '1303', '1303', 'RTD#1-메모리 상태 고장', 'Tc1', 'D', 'RTD-메모리 상태 고장', 'D', 'RTD', 'RTD의 RS485 데이터 중 RTD-TCMS SD TEXT1의 Bit6 “메모리 상태 고장” 신호가 "1"이 되면 검지.', 'RTD 메모리 상태 고장 메시지 현시.', 'RTD장치 부팅시 내부 기억장치인 SD메모리인식 불량 발생의 경우.', 'RTD장치내 SD메모리 정상 인식.', 'RTD장치의 NFB로 시스템을 리부팅 시키고 고장이 다시 발생하는지 확인하고 고장이 다시 확인되면 메인보드 수리가 필요.', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3d93d63a-d33c-4baf-93ac-005aa1463717', '0502', '502', 'DCU#6 6위(L3) - 출입문 장애물검지', 'M3', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('3d9893da-0fd3-4e27-a4f0-99e5fbcd2cd6', '0803', '803', '영상저장장치(NVR) 고장(Car#1)', 'Tc1', 'C', '통합방송표시기-영상저장장치(NVR) 고장', 'C', 'TCMS', '통합방송표시기의 RS485 데이터 중 통합방송표시기-TCMS SD TEXT8의 Bit1 “NVR 고장” 신호가 "1"이 되면 검지.', '고장장치 기능 불량으로 카메라 영상 저장 불능', '마스터 통합방송제어기의 SSD에 디렉토리 생성 불가능/삭제 불가능/파일 생성 불가능/파일 삭제 불가능/SSD 인식 불가능', '마스터 통합방송제어기의 SSD에 디렉토리 생성 가능/삭제 가능/ 파일 생성 가능/파일 삭제 가능시 소거/SSD 인식', 'SSD 상태 점검 +관련도면 없음', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3d9cb693-2487-4327-8de3-54be33900b39', '0203', '203', 'BECU#2 - 전자제어밸브의 고장', 'M1', 'C', 'BECU-전자제어밸브의 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit2 “전자제어밸브의 고장” 신호가 “1”이 +되면 검지 +', '해당 차량 전자제어밸브의 고장검지 현시 및 해당 차량 제동제어불가', '해당 차량의 상용전자제어밸브가 작동하지 않음. +', '해당 차량의 상용전자제어밸브가 정상작동 시 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('3dba1b44-d75c-4c94-bd94-a51f713d95b2', '0507', '507', 'DCU#2 4위(L2) - 초기화 실패', 'M1', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 “Calibration failure” 신호가 “1”이 되면 검지 +', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터 고장, 장애물감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우 +', '초기화 실패를 야기한 고장코드를 확인하여 조치 후, 재닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인한다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('3dc340d4-2f9c-4535-9146-6bb35c627479', '0512', '512', 'DCU#8 5위(R3)-파라미터 로딩 실패', 'Tc2', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 "Paraneter error” 신호가 "1"이 되면 검지.', 'Parameter error 현시 (출입문은 정상작동 가능)', 'DCU 자체내의 EEPROM으로부터 parameter 데이터 로딩 실패', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3dc42387-9043-4d28-a445-0ee675c1a588', '0504', '504', 'DCU#1 3위(R2) - 출입문 외부 비상핸들 취급(EAD)', 'Tc1', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('3dce1835-975e-4822-b673-7df1646ace57', '0713', '713', 'HVAC#8-냉난방장치1 압력스위치2(DPS) 저압', 'Tc2', 'D', 'HVAC-냉난방장치1 압력스위치2(DPS) 저압', 'D', 'HVAC', '냉난방장치1 냉매 압력스위치2 저압 발생.', 'UNIT1 CYCLE2 냉방 기능 불가', 'UNIT1 DSP2측 냉매 압력이 3초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우', '냉매 압력이 정상 수치 2±0.5(kgf/cm2 이상으로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CREF2의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)을 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안되는 것을 확인한 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3dd26884-d43c-4c5d-8948-f9a1dce84350', '0107', '107', 'VVVF-전동기 과전류 검지(MOCD) (Car6)', 'M3', 'C', 'VVVF-전동기 과전류 검지(MOCD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT31의 Bit2 “MOCD” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 '전동기 과전류 검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치에서 견인전동기로 출력되는 U, V, W 상의 전류가 1,850A 이상일 경우 검지됨.', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반배전반의 VVVFIC nfb 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 견인전동기로 출력되는 3상의 전류치 확인함. +3) 특정상의 전류치가 비정상적일 경우 특정상에 해당되는 IPM, 전류센서, 모터결선을 확인한다. +4) 전류센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작상태를 시험기를 통해 확인한다. +6) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +7) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.656536+00', null, '다대48량(2015)', 'Rotem'), ('3e019b08-1c38-4143-a0a9-a9d2e92f6f9c', '0853', '853', '출력증폭기#1(AMP) 고장(Car#5)', 'T2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('3e1c78d8-b7ba-470e-a616-6807b6aa03d4', '0728', '728', 'HVAC#6 - 냉난방장치2 토출 센서 고장', 'M3', 'C', 'HVAC-냉난방장치2 토출 센서 고장', 'C', 'HVAC', '냉난방장치2의 토출 센서 고장 발생 +', '냉난방장치2 토출 센서 고장현시', '온도센서 검지범위는 -45 ~ 85도(820 ~ 1,330Ω)인데, 2초 이상 검지범위를 벗어나는 경우 +', '온도센서 검지값이 2초 이상 허용온도 범위 내일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820 ~ 1,330Ω을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('3e2176b4-2408-4b4a-92c2-b37d71b48d32', '0501', '501', 'DCU#3 4위(L2)-출입문 차단', 'M2', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3e28fe23-b52e-4f7a-999a-6839607bebb2', '0503', '503', 'DCU#5 3위(R2)-출입문 내부비상핸들 취급(EED)', 'T2', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3e2e1890-d09c-4c17-8e65-03435f3f3f5e', '1405', '1405', 'BMS#8-배터리 저전압(BUV, 75V이하)', 'Tc2', 'B', 'BMS-배터리 저전압(BUV, 75V이하)', 'B', 'BMS', '해당차량의 배터리 전압이 74.8V이하가 되면 검지', '차량 배터리 팩 저전압 검지 후, 73.5V 이하이면 방전 접촉기(DCK)가 차단된다.', '배터리 팩 저전압 (74.8V 이하).', '배터리 팩 전압 정상범위로 회복 (75~105V)', '1) 배터리 NFB 상태 확인 +2) 이상이 없으면 차량 전체를 리셋한다. +3) 차량 리셋 후에도 동일고장이면 사령실과 연락하여 조치를 취한다 (외부 충전기 연결 또는 차량 지원)', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3e32e30e-c001-41a0-b848-7fbb715f1558', '0507', '507', 'DCU#8 1위(R1)-초기화 실패', 'Tc2', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 "Calibration failure” 신호가 "1"이 되면 검지.', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터고장, 장애물 감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우', '초기화 실패를 야기한 고장 코드를 확인하여 조치 후, 재 닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3e488fc2-8815-42e2-9e1f-f34525565ed6', '0509', '509', 'DCU#2 4위(L2)-출입문 잠김 리미트 스위치 고장', 'M1', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 "DLS Failure” 신호가 "1"이 되면 검지.', '출입문 잠김 상태 확인 불가', '1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3e4a8782-f108-4950-8746-7c7d9727d12e', '0223', '223', 'BECU#6 - 공기스프링 누설(전두대차)', 'M3', 'C', 'BECU-공기스프링누설(전두대차)', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit6 “공기스프링누설(전두대차)” 신호가 “1”이 +되면 검지 +', '해당 차량 공기스프링 누설(전두대차) 검지 현시 및 해당 차량 정상적인제동제어 불가 (응하중제어)', '해당 차량 전두대차의 공기스프링(AS1, AS2) 압력이 정상범위를 벗어남. (100kPa 미만) +', '해당 차량 전두대차의 공기스프링(AS1, AS2) 압력이 정상범위일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('3e4c057e-70b3-437c-a2cf-457e23865588', '0506', '506', 'DCU#3 1위(R1) - 출입문 입력 저전압', 'M2', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 “1”이 되면 검지 +', '저전압상태(출입문 동작이 심하게 느려지거나 작동조차 안 될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하 +', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('3e6c875f-7131-49aa-b96b-5b2934ce5692', '0820', '820', '실내카메라#2(SCAM) 고장(Car#2)', 'M1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('3e7d65c8-0ad3-49a6-93c8-66a89ab29be6', '0519', '519', 'DCU#8 1위(R1)-ZVR 신호 에러', 'Tc2', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 "ZVR signal error” 신호가 "1"이 되면 검지.', '출입문이 강제로 닫히게 되고, 열림은 불가능', '1) 차량 ZVR 신호가 없는 상태 (차량 주행상태) 에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함.', '해당출입문 ZVR 신호 수신', '1) 차량이 주행중이라면, 차량이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3e829f64-1273-4c54-84bc-b4cca7444391', '0204', '204', 'BECU#4 - 응하중 비정상', 'T1', 'C', 'BECU-응하중 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit3 “응하중 비정상” 신호가 “1”이 되면 검지 +', '해당 차량 응하중 비정상 검지 현시', '해당 차량의 응하중 출력이 정상범위를 벗어남. +', '해당 차량 응하중 출력이 정상범위로 복귀 시 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('3e8d60a1-1e79-4c9c-96cb-64472aacdd49', '0208', '208', 'BECU#4 - 공기제동장치 고장', 'T1', 'C', 'BECU-공기제동장치고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit7 “공기제동장치고장” 신호가 “1”이 되면 검지 +', '해당 차량 공기제동장치 고장검지 현시 및 해당 차량 정상적인제동제어불가', '해당 차량 BECU의 자가진단 시 고장 발생 또는 AC 압력센서 고장 +', '해당 차량 BECU의 자가진단 시 정상적일 경우 또는 AC 압력센서가 정상일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('3e916133-c9f2-4587-8c27-4921752a18d3', '0727', '727', 'HVAC#5 - 배기팬1 과부하', 'T2', 'C', 'HVAC-배기팬1 과부하', 'C', 'HVAC', 'HVAC 환기작동 중 차량 배기팬1 모터에 과부하 발생 +', '환기 시 차량 배기팬2 운전 불가능', ' +1) 냉방 작동 중 챠량 배기팬1 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRVF1와 연결된 THR9가 Trip 됨. +', '차량 배기팬1 모터의 과부하조건을 해소하여 정상 가능 상태로 만들고, THR9 및 마이콤 전원 리셋', '1) 냉난방 배전반의 점검커버를 열고, THR9의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR9의 전류 세팅값이 2.5A에 맞춰져 있는지 확인하여, 아닐 경우, (+) 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동시킨 후, THR9의 2차측 2, 4 단자와 6 단자 사이의 전압이 DC 100V로 정상 측정 되는지 확인한다. +5) 만약 전압이 측정되지 않을 시, 전원이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, THR9 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('3e998709-7362-49f9-942a-5f227c90eacc', '0501', '501', 'DCU#5 5위(R3) - 출입문 차단', 'T2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('3ea23477-218e-4a03-aafc-9c37183e40e6', '0733', '733', 'HVAC#4 - 전자접촉기 압축기(CRCM)4 고장', 'T1', 'C', 'HVAC-전자접촉기 압축기(CRCM)4 고장', 'C', 'HVAC', 'HVAC 냉방 작동 중 CRCM4 전자접촉기 고장 발생 +', '냉방 기능 저하(전냉방 시 반냉방으로 작동)', '냉방 작동 중 2.5초 이상 동안 CRCM4 작동 feedback 신호가 수신되지 않는 경우 +', 'CRCM4 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CRCM4를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRCM4와 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('3eae9d33-60cc-4b40-b8e9-dfda59bc7df6', '0519', '519', 'DCU#4 5위(R3)-ZVR 신호 에러', 'T1', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 "ZVR signal error” 신호가 "1"이 되면 검지.', '출입문이 강제로 닫히게 되고, 열림은 불가능', '1) 차량 ZVR 신호가 없는 상태 (차량 주행상태) 에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함.', '해당출입문 ZVR 신호 수신', '1) 차량이 주행중이라면, 차량이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.392739+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3ed84723-2c52-4c26-996b-75be245e419d', '0519', '519', 'DCU#2 5위(R3) - ZVR 신호 에러', 'M1', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 “ZVR signal error” 신호가 “1”이 되면 검지 +', '출입문이강제로 닫히게 되고, 열림은 불가능', ' +1) 차량 ZVR 신호가 없는 상태(차량 주행상태)에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함. +', '해당 출입문 ZVR 신호 수신', '1) 차량 이 주행중이라면, 차량 이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('3ee8c94c-32e9-411a-883a-8fe13b1efcda', '1707', '1707', '노선안내표시기#5 고장(Car8)', 'Tc2', 'C', '노선안내표시기#5 고장', 'C', 'PIC', 'PIC 장치의 노선안내표시기#5이 고장이 났을 때 발생 +', '1) 노선안내표시기 화면 미현시 +2) 노선안내표시기 안내 화면 오현시', '통신고장 +', '통신 재개 시', '1) 이더넷 스위치 링크 확인 +2) 이더넷 케이블 점검 +3) 제어보드 및 전원보드 교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('3f12ea9a-5ea4-40a7-a9e5-03d0bdae0644', '1413', '1413', 'BMS#1 - 방전고온(DOT, 50도 이상)', 'Tc1', 'D', 'BMS-방전고온(DOT)', 'D', 'BMS', '해당 차량의 배터리 온도가 57도 이상이 되면 검지 +', '차량 배터리방전 고온검지 후, 60도 이상이면 충전접촉기(CK)가 차단된다.', '배터리방전 고온(57도 이상) +', '배터리방전 고온 정상범위로 회복(55도 이하)', '1) 배터리 NFB 상태 확인 +2) 이상이 없으면 차량 전체를 리셋한다. +3) 차량 리셋 후에도 동일고장이면 사령실과 연락하여 조치를 취한다. (배터리를 상온조건으로 만든다.)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('3f23268f-1e65-4ca6-ab93-aceb5d2ab382', '0700', '700', 'HVAC#6 통신고장', 'M3', 'C', 'HVAC-통신고장', 'C', 'HVAC', 'HVAC와 TCMS 간 RS485 통신고장이 검지되면 발생 +', '화면상 HVAC의 실내온도, 운전모드 등의 데이터가 반응하지 않음.', ' +1) 마이콤 전원 CB OFF +2) 통신연결 불량 +3) 해당 마이콤이 검수요원에 의해 firmware 업데이트 중인 경우 +', '해당 차량의 마이콤 및 CU/TU의전원이정상상태이고, 통신라인 연결 상태가 정상', '1) 냉난방 배전반의 점검커버를 열고, 마이콤이 정상적으로 켜져 있는지 확인한다. +2) 만약 마이콤 전원이 꺼져 있다면, 마이콤 DC 전원 CB 및 차량 배전반에 위치한 냉난방장치 CB가 정상적으로 켜져 있는지 확인한다. +3) 마이콤이 정상적으로 켜져 있는 데도 지속적으로 통신고장이 검지되면, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀 밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('3f24d0da-f0be-4add-8371-835ab2151594', '0504', '504', 'DCU#3 4위(L2) - 출입문 외부 비상핸들 취급(EAD)', 'M2', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('3f2548a9-917c-46a6-9260-9b4f04952b79', '0733', '733', 'HVAC#6-전자접촉기 압축기(CRCM)4 고장', 'M3', 'C', 'HVAC-전자접촉기 압축기(CRCM)4 고장', 'C', 'HVAC', 'HVAC 냉방작동 중 CRCM4 전자접촉기 고장 발생.', '냉방 기능 저하(전냉방시 반냉방으로 작동)', '냉방작동 중 2.5초 이상동안 CRCM4 작동 feedback 신호가 수신되지 않는 경우', 'CRCM4 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CRCM4를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRCM4와 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3f274bc8-7509-4f93-ba07-7e486d782ffb', '0154', '154', 'VVVF#6-후진속도검지(BSD)', 'M3', 'W', 'VVVF-후진속도검지(BSD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT31의 Bit3 “BSD” 신호가 "1"이 되면 검지.', null, '정차 후 출발 시 차량이 구배에 의하여 뒤로 이동할 경우 발생.', '노치 OFF', '1) 추진제어장치 고장기록을 수집하여 차량 속도가 마이너스로 기록되어있는 경우 차량의 정차제동 계통을 확인한다. +2) 추진제어장치 시험기를 이용하여 TCU(통합제어장치)의 이상여부를 확인한다.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3f30a561-493f-4b07-b990-df3bf2a3ef89', '0518', '518', 'DCU#6 4위(L2)-출입문 Enable 신호 에러', 'M3', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 "Enable signal error” 신호가 "1"이 되면 검지.', 'DCU 출입문 Enable 신호 에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) 취급시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함.', '해당출입문 enable 신호 수신', '1) AUTO/MCS 모드시에는 YARD모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인한다. (YARD/FMC 모드시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.392739+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3f31ef30-c51c-4dd6-be8a-67d7dea6707e', '0090', '90', '화재검지기 고장(Car5)', 'T2', 'C', null, null, 'FDU', null, null, null, null, null, null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3f402991-6c0c-4146-b90e-01b606213fcc', '0220', '220', 'BECU#2-공기제동 감쇄지령 비정상', 'M1', 'C', 'BECU-공기제동 감쇄지령 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit3 “공기제동 감쇄지령 비정상” 신호가 "1"이 되면 검지.', '해당 차량 공기제동 감쇄지령 비정상 검지 현시 및 해당차량 정상적인 전공 교차제어 불가.(부수차량 공기제동 감쇄 불가)', '해당 차량의 공기제동 감쇄지령 신호가 정상범위를 벗어남(5.0~95.0%).', '해당 차량의 공기제동 감쇄지령 신호가 정상범위일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. +소거되지 않을 경우 해당 차량 옆의 Pair 차량(구동차) BECU를 리셋(CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3f49e2cf-756d-4252-9a43-4fe42e70616c', '0703', '703', 'HVAC#2-냉난방장치1 압축기2 과부하', 'M1', 'C', 'HVAC-냉난방장치1 압축기2 과부하', 'C', 'HVAC', 'HVAC 냉방작동 중 냉난방장치1 압축기2 또는 응축기2 모터에 과부하 발생.', '냉방 기능 저하(전냉방시 반냉방으로 작동)', '1) 냉방작동 중 UNIT1의 압축기2 또는 응축기2 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRCM2와 연결된 THR2가 Trip 됨.', 'UNIT1의 압축기2 또는 응축기2 모터의 과부하 조건을 해소하여 정상 가능 상태로 만들고, THR2 및 마이콤 전원 리셋', '1) 냉난방배전반의 점검커버를 열고, THR2의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR2의 전류 세팅값이 11.5A에 맞춰져 있는지 확인하여, 아닐 경우, 십자 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동 시킨 후, THR2의 2차측 2,4,6 단자에서 각 단자간 상간 전압이 AC 380V으로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 압축기 및 응축기 단품 상태에서 점검을 한다. +7) THR2의 2차측 2,4,6 단자에서 각 단자간 권선저항이 모두 같은지 확인한다. (±10% 이하) (압축기2 및 응축기2 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT1의 압축기1 또는 응축기1 모터의 결선을 해제한 후 각 부품의 권선저항을 확인 후, 문제가 있는 부품을 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR2 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3f737bca-37fa-4904-bac3-a82dc064d983', '0200', '200', 'BECU#3 통신고장', 'M2', 'B', 'BECU-통신고장', 'B', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT23의 ‘Life sign'이 변하지 않음. +', '해당 차량 통신고장현시 및 해당 차량의 제동압력(BCP) 등의 데이터가 반응하지 않음. (고장은 현시되나 제동제어는 정상적일 수 있음.)', 'BECU 전원 CBOFF 혹은 통신연결 불량 +', 'BECU와 TCMS 간 RS485 통신이 복귀되어 BECU-TCMSSDTEXT23의'Lifesign'이 변동 시 소거', 'BECU를 리셋(BECUCBOFF/ON) 후 복귀여부를 확인, 리셋 후 복귀되지 않을 경우 관제 보고하고 지시에 따를 것', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('3f8ff70b-f83f-4ff0-b08a-c6a2c94afe46', '0517', '517', 'DCU#1 6위(L3) - 출입문 장애물로 인한 열림 실패', 'Tc1', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Open failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘 상태로 대기', '도어열림 중 3회 장애물감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 열림 시, 장애물감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('3f90b683-788b-4ba6-ac75-8fdca2ea476c', '1204', '1204', 'FDU#4 - 감지기2 고장', 'T1', 'C', 'FDU-감지기2 고장 (Car1~8)', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 “Detector1 State” 신호가 “10”이 되면 검지 +', '감지기고장상태현시(자동소거 안 됨)', ' +1) 감지기로부터 데이터 응답이 없는 경우 +2) 감지기로부터 수신된 데이터의 CRC가 맞지 않는 경우 +3) 감지기로부터 수신된 데이터의 ID가 송신 ID와 일치하지 않는 경우 +', 'FDU 전원 리셋 후 감지기로부터 정상적으로 데이터가 수신된 경우', '1) FDU 전원 리셋 후 고장 소거 여부 확인 +2) 정상동작중인 감지기와 위치 교환 후 FDU 전원 리셋 및 고장 상태 확인 +3) 동일한 감지기에서 고장 발생 시 감지기 교체 +4) 동일한 위치에서 고장 발생 시 감지기 라인 점검', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('3f9357ec-8fa1-4519-b1f9-18407cc905f8', '0240', '240', 'BECU#3-2축스키드신호', 'M2', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3f96ab8d-4963-42a3-a9f2-a8e630adc0ed', '0405', '405', 'SIV#8-AC 출력과전류(ACOC)', 'Tc2', 'C', 'SIV-AC 출력과전류(ACOC)', 'C', 'SIV', '보조전원장치(SIV)의 RS485 데이터 중 SIV-TCMS SD TEXT4의 Bit3 “ACOC” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 'SIV AC 출력과전류 검지' 표시됨. +2) 보조전원장치(SIV)는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 보조전원장치 중고장이 발생됨. +5) 중고장이 발생되면 TCMS 일반화면에 보조전원장치 상태 붉을색으로 표기되며, 연장급전 됨.', '보조전원장치(SIV)에서 출력되는 AC U, V, W 상의 전류가 700A 이상일 경우 검지됨.', '1) 경고장이 발생할 경우 보조전원장치(SIV) 자동 재기동에 의해 재기동 됨. +2) 중고장이 발생했을 경우 조치 완료 후 보조전원장치(SIV) 리셋으로 고장 소거됨.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 보조전원장치(SIV) 고장기록을 수집하여 출력되는 3상의 AC 전류치 확인함. +3) 특정상의 전류치가 비정상적일 경우 특정상에 해당되는 GDU, 전류센서, AC 출력단 결선을 확인한다. +4) 전류센서와 보조전원장치(SIV) 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작상태를 시험기를 통해 확인한다. +6) 출력단 각 상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +7) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3f9e8370-36af-48a3-874c-87e39573ee5c', '0504', '504', 'DCU#8 1위(R1)-출입문 외부비상핸들 취급(EAD)', 'Tc2', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3fac3ba6-d154-4073-a3a6-83b72a0283fc', '0503', '503', 'DCU#7 4위(L2)-출입문 내부비상핸들 취급(EED)', 'M4', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3fb73e9f-48d0-40b9-b1e6-d79c8ca062b4', '0515', '515', 'DCU#1 2위(L1) - 출입문 열림 시간 초과', 'Tc1', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 “Open time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 열림 동작시간이 6초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도한 후, ‘장애물로 인한 열림 실패' 고장과 함께 ‘Open time out' 고장이 함께 현시 +', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('3fc005d6-7aa3-4ff7-ab4e-380596ffa7a9', '0505', '505', 'DCU#7 1위(R1)-출입문 입력 고전압', 'M4', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 "1"이 되면 검지.', '고전압 상태. (그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3fcb454e-e594-4ea7-a35b-b926e5e3f7b4', '0735', '735', 'HVAC#4-전자접촉기 압축기(CRCM)2 고장', 'T1', 'C', 'HVAC-전자접촉기 압축기(CRCM)2 고장', 'C', 'HVAC', 'HVAC 냉방작동 중 CRCM2 전자접촉기 고장 발생.', '냉방 기능 저하(전냉방시 반냉방으로 작동)', '냉방작동 중 2.5초 이상동안 CRCM2 작동 feedback 신호가 수신되지 않는 경우', 'CRCM2 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CRCM2를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRCM2와 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3fd4d3ff-6542-4347-87a9-0a9f67785039', '0521', '521', 'DCU#5 5위(R3) - 모듈 상태 이상', 'T2', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 “01” 또는 “00”이 되면 +검지 +', '이중계절체동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러)이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('3fd7309f-0617-4234-998f-888691759cfd', '0724', '724', 'HVAC#2 - 냉난방장치1 압력스위치1(DPS) 냉매부족', 'M1', 'C', 'HVAC-냉난방장치1 압력스위치1(DPS) 냉매부족', 'C', 'HVAC', '냉난방장치1 냉매 압력스위치1 저압 발생 +', 'UNIT1CYCLE1 냉방 기능 불가', 'UNIT1DSP1측 냉매압력이 30초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우 +', '냉매압력이 정상수치2±0.5(kgf/cm2) 이상 유지하도록 하고, 마이콤전원을 리셋', '1) 배전반 점검 커버를 열고 마이콤 전원을 리셋한 후, 냉방 가동 시, CREF2의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)을 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설 여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안 되는 것을 확인한 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('3fdab42b-2729-4fb0-b8b7-ed073c846cd7', '1105', '1105', 'PSD#1 - 차상 RF 고장(1계)', 'Tc1', 'C', 'PSD-차상 RF고장', 'C', 'PSD', 'PSD의 RS485 데이터 중 PSD-TCMS SD TEXT5(TEXT6)의 Bit7 “차상 RF 고장” 신호가 “1”이 되면 검지 (차상장치 RF 고장) +', '1) PSD 지상장치 통신연결 또는 전원 ON 시 NG발생 +2) 역사 내 진입 전 NG 발생 → 역사 내 진입 후 NG 복귀 등의 현상이 일어날 경우', '차상장치 내무선 모듈의 불량이 주원인이며, 설정 및 채널 변경 오류 시 발생됨. +', '1) 운전실 후부 PSDCN을 OFF-ON 실시하고 복귀가 되지 않을 경우 PSD 조작반을 취급하여 운행 한다. +2) 차량 사업소 복귀 후 해당 차상장치 점검을 한다.', null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('3fe2f266-50c9-41c6-ad0a-18387c165710', '0501', '501', 'DCU#8 4위(L2)-출입문 차단', 'Tc2', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('3fe3bf26-f8e7-459e-84b4-a95bc807daf5', '0221', '221', 'BECU#6 - 제동력부족(ISBD)', 'M3', 'B', 'BECU-제동력부족(ISBD)', 'B', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit5 “ISBD” 신호가 “1”이 되면 검지 +', '해당 차량 제동력 부족 검지 현시 및 해당 차량 제동압력(BCP)이 타차량에 비해 현저히 낮음.', '제동 7단 취급 시 해당 차량의 제동압력이 생성되지 않음. +', '제동 7단 취급 시 정상적인 제동압력이 생성된 경우 소거', 'MCS 모드로 전환 후, 마스콘을 N(중립) → 제동 7단까지 수 회 취급하여 소거 여부 확인, 제동 취급 확인 후, 주의 운전할 것, 지속발생 시 관제보고하고 지시에 따를 것', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('3fe5e739-43e2-4773-9b54-903d93405335', '0501', '501', 'DCU#3 4위(L2) - 출입문 차단', 'M2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('3ffeac49-303a-4fdf-b5a5-35f44a805738', '0224', '224', 'BECU#7-파트너차 ECU 고장(PECUF)', 'M4', 'C', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('4038a646-0156-41d8-8d1d-df4e967092b6', '0225', '225', 'BECU#8 - 강제완해검지(CPRD)', 'Tc2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4039c762-cc8b-4a3b-a798-b439646ebb1e', '0506', '506', 'DCU#6 2위(L1)-출입문 입력 저전압', 'M3', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 "1"이 되면 검지.', '저전안 상태 (출입문 동작이 심하게 느려지거나 작동조차 안될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('403d5238-dbd2-4df7-ad6f-192c9b6aa8fe', '0509', '509', 'DCU#3 5위(R3)-출입문 잠김 리미트 스위치 고장', 'M2', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 "DLS Failure” 신호가 "1"이 되면 검지.', '출입문 잠김 상태 확인 불가', '1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('403e5f09-983a-4aba-be20-95abc1c6404e', '0729', '729', 'HVAC#5-냉난방장치2 리턴 센서 고장', 'T2', 'C', 'HVAC-냉난방장치2 리턴 센서 고장', 'C', 'HVAC', '냉난방장치2의 리턴 센서 고장 발생', '냉난방장치2 리턴센서 고장현시', '온도센서 검지범위는 -45~85도 (820~1330옴) 인데, 2초 이상 검지범위를 벗어나는 경우', '온도센서 검지 값이 2초 이상 허용온도 범위 내 일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820~1330옴 을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우, 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('40617e51-ace7-47e0-a92b-1f8907467c7d', '0224', '224', 'BECU#5 - 파트너차 ECU 고장(PECUF)', 'T2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('406459df-80a6-4ff0-a4bc-7894dc34be92', '0239', '239', 'BECU#1-3축스키드신호', 'Tc1', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('406700b2-dae7-4cbb-8d08-8f7bfbce43c5', '0153', '153', 'VVVF#3 - FC 용량저하(FCLCD)', 'M2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('406e367c-3ce5-4691-85e7-f1026d91a859', '0709', '709', 'HVAC#8-냉난방장치2 압력스위치2(DPS) 저압', 'Tc2', 'D', 'HVAC-냉난방장치2 압력스위치2(DPS) 저압', 'D', 'HVAC', '냉난방장치2 냉매 압력스위치2 저압 발생.', 'UNIT2 CYCLE2 냉방 기능 불가', 'UNIT2 DSP2측 냉매 압력이 3초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우', '냉매 압력이 정상 수치 2±0.5(kgf/cm2 이상으로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CREF4의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)을 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안되는 것을 확인한 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('4072f771-206a-40ee-b8fe-eb955c47d642', '0183', '183', 'VVVF#3 - Over Load(OL)', 'M2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4078a1dc-4938-4f35-a3b7-7c09bcb61f23', '0518', '518', 'DCU#3 1위(R1)-출입문 Enable 신호 에러', 'M2', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 "Enable signal error” 신호가 "1"이 되면 검지.', 'DCU 출입문 Enable 신호 에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) 취급시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함.', '해당출입문 enable 신호 수신', '1) AUTO/MCS 모드시에는 YARD모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인한다. (YARD/FMC 모드시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.392739+00', null, '로템40량(2018)-1단계', 'Rotem'), ('408058f7-d7a0-411c-8b4f-5a3abe05d016', '0209', '209', 'BECU#4-4축속도신호의 비정상', 'T1', 'C', 'BECU-4축속도신호의 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit0 “4축속도신호의 비정상” 신호가 "1"이 되면 검지.', '해당 차량 4축속도신호의 비정상 검지 현시 및 해당 차량 활주제어 불가.', '해당 차량의 4축 속도센서 고장 발생.', '해당 차량의 4축 속도센서가 정상적일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('408bada9-a212-4c36-a7ce-df8f570e6282', '0411', '411', 'SIV#1-게이트 드라이버 고장, WZ2상(GDFWZ2)', 'Tc1', 'C', 'SIV-게이트 드라이버 고장, WZ2상(GDFWZ2)', 'C', 'SIV', '보조전원장치(SIV)의 RS485 데이터 중 SIV-TCMS SD TEXT5의 Bit1 “GDFWZ2” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 'GDF WZ 2상 이상검지' 표시됨. +2) 보조전원장치(SIV)는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 보조전원장치(SIV) 중고장이 발생됨. +5) 중고장이 발생되면 TCMS 일반화면에 보조전원장치(SIV) 상태 붉을색으로 표기되며, 연장급점 됨.', '보조전원장치(SIV) 내부 GDU에 과전류, 과온이 검지될경우.', '1) 경고장이 발생할 경우 보조전원장치(SIV) 자동 재기동에 의해 재기동 됨. +2) 중고장이 발생할 경우 보조전원장치(SIV) 리셋으로 고장 소거됨.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 보조전원장치(SIV) 고장기록을 수집하여 출력되는 3상의 AC 전류치를 확인함. +3) 특정상의 전류치가 비정상적일 경우 특정상에 해당되는 GDU, 전류센서, 출력단 결선을 확인한다. +4) 전류센서와 보조전원장치(SIV) 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작상태를 시험기를 통해 확인한다. +6) GDU 전원공급기의 전원연결상태 또는 광케이블의 연결상태와 배선상태를 확인한다. +7) 출력단 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('40a3ed45-41a9-46b0-9039-7b8fd46510fb', '0504', '504', 'DCU#8 3위(R2) - 출입문 외부 비상핸들 취급(EAD)', 'Tc2', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('40b6a32b-eb14-4eb2-895d-0f9dc98f4314', '0422', '422', 'SIV#8 - 인버터2 과온검지(INV2THF)', 'Tc2', 'B', 'SIV-인버터2 과온검지(INV2THF)', 'B', 'SIV', '보조전원장치(SIV) 의 RS485 데이터 중 SIV-TCMS SD TEXT6의 Bit7 “INV2THF” 신호가 “1”이 되면 검지 +', '1) TCMS 화면하단 또는 고장화면에 ‘SIV 인버터2의 스택 과온'표시됨. +2) 보조전원장치는 상기 고장검지 후 자동 재기동이 되지 않으며 중고장으로 처리함. +3) 중고장이 발생되면 TCMS 일반화면에 보조전원장치 상태 붉은색으로 표기되며, 연장급전 됨.', '보조전원장치(SIV)인버터2의 냉각기 온도가 105도 이상인 조건에서 검지 +', '1) 보조전원장치(SIV)인버터1의 냉각기 온도가 105도 미만으로 떨어졌을 시 +2) 보조전원장치(SIV) 리셋으로 고장 소거됨.', '1) 상기고장이 발생이 된 경우 아래와 같이 조치한다. +2) 보조전원장치(SIV) 냉각기의 손상이 없는지 확인한다. +3) 보조전원장치(SIV) 내부에 인버터 유니트 구성품에 손상이 없는지 확인한다. +4) 인버터 유니트 내부에 온도센서 및 결선에 이상이 없는지 확인한다. +5) DIN 보드의 동작 상태를 시험기를 통해 확인한다. +6) 인버터 유니트 구성품들의 배선상태와 광케이블의 연결 상태를 확인한다. +7) 부하단의 절연상태 및 접지 간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('40c4bd34-0fcc-4d25-b32a-4ec79baa3ac9', '0505', '505', 'DCU#3 6위(L3)-출입문 입력 고전압', 'M2', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 "1"이 되면 검지.', '고전압 상태. (그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('40daf659-211c-4437-b0d4-2c5ac067a25e', '0504', '504', 'DCU#5 6위(L3)-출입문 외부비상핸들 취급(EAD)', 'T2', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('40dca889-1f1a-4277-bbf5-a303d0207d44', '1205', '1205', 'FDU#8-감지기3 화재감지', 'Tc2', 'W', 'FDU-감지기3 화재감지', 'W', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 "Detector1 State” 신호가 "11"이 되면 검지.', '화재상태 현시(자동 소거 안됨)', '하기 2가지 조건을 모두 만족하여야 화재신호가 출력 됨(연동모드 동작). +1) 이웃한(앞 혹은 뒤에 위치한) 감지기 중 하나의 감지기라도 주의 혹은 화재상태에 있어야 함. +2) Detector1(해당 감지기)에서 측정된 연기농도가 15% 이상이거나 온도가 65℃ 이상인 경우', '1) FDU의 복귀버튼 조작시 +2) FDU 전원 리셋시', '1) 해당 감지기 위치의 화재 발생 여부 확인 +2) 화재 오 감지일경우 FDU의 복귀버튼 취급 +3) 오감지일경우 감지기의 청소주기 확인(내부 먼지 제거)', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('40dd0226-ef6d-4d39-9704-fd00b793c51f', '0234', '234', '제동불완해검지(NRBD, Car4)', 'T1', 'B', '제동불완해검지(NRBD)', 'B', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT8의 Bit2 “NRBD” 신호가 "1"이 되면 검지.', '해당 차량 제동불완해 검지 현시 및 완해 취급하였음에도 불구하고 해당 차량 제동압력(BCP)이 완해되지 않음.', '제동완해 상태(정차제동 포함)에서 해당 차량의 제동압력이 완전히 배기 되지 않음.', '제동완해 상태(정차제동 포함)에서 해당 차량의 제동압력이 완전히 배기 됨.', '정차하여 강제완해스위치를 취급하여 소거 여부 확인. 제동 완해상태 확인 후 주의 운전 할 것. +2~3회 시도에도 완해불능시 관제보고하고 지시에 따를 것.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('40dd3c26-b4eb-4c89-8628-55def453720c', '0174', '174', 'VVVF#2 - 통합제어장치 - PWM 제어장치간 신호 이상 검지(ERRDIO)', 'M1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('40e9a72c-bc87-4ebf-8127-4922f39f9e40', '0521', '521', 'DCU#6 1위(R1)-모듈 상태 이상', 'M3', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 "01"또는 "00"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('40edb088-df4a-4320-94ee-d7375f869c54', '0309', '309', 'ATC#1-', 'Tc1', '0', null, null, '0', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('40faca56-ffec-4900-b7a2-0b43e3713b84', '1513', '1513', 'CU2 모듈고장 - SCM1(Car1)', 'Tc1', 'C', 'CU1, 2 모듈고장 - SCM1', 'C', 'TCMS', 'CU의 SCM1 PCB가 이 정상적으로 인식되지 않아 점검이 필요할 때 +', '1) CU1의 SCM1 PCB가 모듈 고장이 발생하면, CU2로 자동 절체됨. (CU2로 자동 절체되면 운행 에는 지장이 없음) +2) CU2 자동 절체 시 화면의 우측 상단 경고장글자 하단에 “B.SYS” 라는 표시가 나타남. +3) 자동절체 시 열차 운행에는 관계없음. +4) CU2의 SCM1 모듈고장 시는 CU1 정상동작시 운행에는 지장이 없음.', 'CU SCM1의 ID를 정상적으로 검출하지 못할 때 화면에 현시 +', 'CU SCM1의 ID를 정상적으로 검출하는 경우 소거됨.', '1) CU의 SCM1 PCB 교체(SCM1 PCB의 설정 스위치 확인) +2) 불량 해소가 되지 않을 경우, 순차적으로 MCPU, DIM, AUX PCB를 교체하여 정상여부 확인', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4106275a-e2cf-4cd3-b96a-9c1a1b5447a2', '0506', '506', 'DCU#5 4위(L2)-출입문 입력 저전압', 'T2', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 "1"이 되면 검지.', '저전안 상태 (출입문 동작이 심하게 느려지거나 작동조차 안될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('410c3b0a-f98d-4a58-b873-bb2b4c029f10', '0101', '101', 'VVVF#7 - 인버터 중고장(INV CUT)', 'M4', 'A', 'VVVF-인버터중고장(INV CUT)', 'A', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT1의 Bit4 “INV CUT” 신호가 “1”이 되면 검지 +', '1) TCMS 일반화면에 추진제어장치 상태 붉은색으로 표시됨. +2) 추진제어장치 중고장 상태인 동력차에 동력 손실됨. +3) TCMS 상태화면의 추진제어장치 화면에 HSCB, LB1, 2 개방된 것으로 표시됨.', ' +1) 추진제어장치의 경고장이 1분에 3회 이상누적 또는 지속적으로 검지되어 중고장 발생함. +2) 장치에 중대한 소손 가능성이 있는 고장에 대해서는 1번 발생으로 중고장 발생함. +', '동력차일반 배전반의 VVVFICNFB 재투입 또는 차량 배터리 전원 재투입', '1) 소거조건 내용과 같이 조치 후 중고장 소거됨을 확인함. +2) TCMS 고장데이터 또는 추진제어장치 고장 데이터를 통해 중고장이 발생한 고장 내역 수집함. +3) 수집된 고장내역에 따라 조치 실시함.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4120175d-2c19-4c5f-8694-ac1497693050', '0219', '219', 'BECU#5-제동지령 비정상', 'T2', 'C', 'BECU-제동지령 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit2 “제동지령 비정상” 신호가 "1"이 되면 검지.', '해당 차량 제동지령 비정상 검지 현시 및 해당차량 정상적인 제동제어 불가. (상용제동지령에 따른 제어)', '해당 차량의 제동지령 신호가 정상범위를 벗어남(5.0~95.0%).', '해당 차량의 제동지령 신호가 정상범위일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. +소거되지 않을 경우 해당 선택 운전실의 PWM 엔코더를 리셋(CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('414ce7e6-c092-4d38-8de8-ad66d195add4', '0510', '510', 'DCU#3 2위(L1)-출입문 닫힘 리미트 스위치1 고장', 'M2', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 "DCS1 Failure(Leftt)” 신호가 "1"이 되면 검지.', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('41500c93-565a-4517-9751-29828a22a68a', '0203', '203', 'BECU#6-전자제어밸브의 고장', 'M3', 'C', 'BECU-전자제어밸브의 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit2 “전자제어밸브의 고장” 신호가 "1"이 되면 검지.', '해당 차량 전자제어밸브의 고장 검지 현시 및 해당 차량 제동제어 불가.', '해당 차량의 상용전자제어밸브가 작동하지 않음.', '해당 차량의 상용전자제어밸브가 정상 작동 시 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('41592d67-c3ba-4184-aac1-953d287e81ac', '0184', '184', '역행관련 회로차단기 차단(Car2)', 'M1', 'W', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.578803+00', null, '로템40량(2018)-1단계', 'Rotem'), ('4164c918-763d-4702-b4c6-a03609b835a6', '1212', '1212', 'FDU#7-', 'M4', '0', null, null, 'FDU', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('416ade96-4725-4bf8-aeb6-d3c8b2a9ba81', '0122', '122', 'VVVF-후진속도검지(BSD) (Car2)', 'M1', 'C', 'VVVF-후진속도검지(BSD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT33의 Bit3 “BSD” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 '후진속도검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨.', '1) 추진제어장치에서 계산한 속도가 -5km/h 이하인 경우 검지됨.', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 견인전동기 속도센서 상태를 확인하고, 속도센서가 연결된 경로 배선연결 상태를 확인한다. +3) PGI 보드의 동작상태를 시험기를 통해 확인한다. +4) 속도신호에 이상이 없을 경우 운행기록을 수집하여 출발시 정차제동에 이상이 없는지 확인한다. +5) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.578803+00', null, '다대48량(2015)', 'Rotem'), ('41747570-cfcd-4dae-9715-4b6f868b1fe8', '0521', '521', 'DCU#4 6위(L3) - 모듈 상태 이상', 'T1', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 “01” 또는 “00”이 되면 +검지 +', '이중계절체동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러)이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('417ec78e-280f-4516-a66f-78ee65ed8ce5', '0127', '127', 'VVVF-BCH IGBT 이상검지(GDFB) (Car2)', 'M1', 'C', 'VVVF-BCH IGBT 이상검지(GDFB)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT34의 Bit1 “GDFB” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 'BCH IGBT 이상검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치 내부 IGBT에 과전류 검지될경우.', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반배전반의 VVVFIC nfb 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 제동저항기로 출력되는 전류치 확인함. +3) 전류치가 비정상적일 경우 IGBT, GDU, 전류센서, 제동저항기 결선을 확인한다. +4) 전류센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작상태를 시험기를 통해 확인한다. +6) GDU의 전원연결상태 또는 광케이블의 연결상태와 배선상태를 확인한다. +7) 제동저항기 내부의 이물질 유무를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.578803+00', null, '다대48량(2015)', 'Rotem'), ('41a06fe6-8084-4a81-9290-e0e2e0dc23ef', '0323', '323', 'ATC#8-', 'Tc2', '0', null, null, '0', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('41a1d184-3c32-4e46-9027-afdf9e0f19de', '0105', '105', 'VVVF#6 - 상전류 불평형 검지(PUD)', 'M3', 'C', 'VVVF-상전류 불평형 검지(PUD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT29의 Bit0 “PUD” 신호가 “1”이 되면 검지 +', '1) TCMS 화면 하단 또는 고장화면에 ‘상전류 불평형 검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생함. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉은색으로 표기되며, HSCB, LB1, 2 개방되어 동력 손실 발생함.', '추진제어장치에서 견인전동기로 출력되는 U, V, W 상 전류의 합이 300A 이상일 경우 검지됨. +', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반 배전반의 VVVFIC NFB 재투입 또는 차량 배터리 전원 재투입', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 견인전동기로 출력되는 3상의 전류치 확인함. +3) 특정상의 전류치가 비정상적일 경우 특정상에 해당되는 IPM, 전류센서, 모터결선을 확인한다. +4) 전류센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작 상태를 시험기를 통해 확인한다. +6) 견인전동기 각상의 절연상태 및 각상과 접지 간의 절연상태를 확인한다. +7) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('41b5935a-593e-400e-93f0-80bd131daaf7', '0415', '415', 'SIV#1 - 게이트 드라이버 고장, VY1상(GDFVY1)', 'Tc1', 'C', 'SIV-게이트 드라이버 고장, VY1상(GDFVY1)', 'C', 'SIV', '보조전원장치(SIV)의 RS485 데이터 중 SIV-TCMS SD TEXT5의 Bit5 “GDFVY1” 신호가 “1”이 되면 검지 +', '1) TCMS 화면하단 또는 고장화면에 ‘GDFVY1상 이상 검지' 표시됨. +2) 보조전원장치(SIV)는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 보조전원장치(SIV) 중고장이 발생 됨. +5) 중고장이 발생되면 TCMS 일반화면에 보조전원장치(SIV) 상태 붉은색으로 표기되며, 연장급점 됨.', '보조전원장치(SIV) 내부GDU에 과전류, 과온이 검지될 경우 +', '1) 경고장이 발생할 경우 보조전원장치(SIV) 자동 재기동에 의해 재기동 됨. +2) 중고장이 발생할 경우 보조전원장치(SIV) 리셋으로 고장 소거됨.', '1) 상기 고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 보조전원장치(SIV) 고장기록을 수집하여 출력되는 3상의 AC 전류치를 확인함. +3) 특정상의 전류치가 비정상적일 경우 특정상에 해당되는 GDU, 전류센서, 출력단 결선을 확인 한다. +4) 전류센서와 보조전원장치(SIV) 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작 상태를 시험기를 통해 확인한다. +6) GDU 전원공급기의 전원연결 상태 또는 광케이블의 연결 상태와 배선상태를 확인한다. +7) 출력단 각상의 절연상태 및 각상과 접지 간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('41bb004e-7e18-464d-aa7b-b9f0189907ff', '0159', '159', 'VVVF#6 - 제어전원전압 이상(PWM2) (CLVD_P2)', 'M3', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('41bde465-31c6-4293-b38e-e3c4d285d7b6', '0514', '514', 'DCU#3 5위(R3)-출입문 닫힘 시간 초과', 'M2', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 "Close time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 닫힘 동작시간이 7초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도 한 후, '장애물로 인한 닫힘실패' 고장과 함께 'Close time out' 고장이 함께 현시', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('41c35ee5-0278-4a32-ad7c-843a79dcfc62', '0200', '200', 'BECU#1 통신고장', 'Tc1', 'B', 'BECU-통신고장', 'B', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT23의 ‘Life sign'이 변하지 않음. +', '해당 차량 통신고장현시 및 해당 차량의 제동압력(BCP) 등의 데이터가 반응하지 않음. (고장은 현시되나 제동제어는 정상적일 수 있음.)', 'BECU 전원 CBOFF 혹은 통신연결 불량 +', 'BECU와 TCMS 간 RS485 통신이 복귀되어 BECU-TCMSSDTEXT23의'Lifesign'이 변동 시 소거', 'BECU를 리셋(BECUCBOFF/ON) 후 복귀여부를 확인, 리셋 후 복귀되지 않을 경우 관제 보고하고 지시에 따를 것', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('41d2df18-f977-4d46-9183-d0eb2fd542f9', '0521', '521', 'DCU#6 4위(L2) - 모듈 상태 이상', 'M3', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 “01” 또는 “00”이 되면 +검지 +', '이중계절체동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러)이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('41d746bd-8df5-450e-8861-500d9477b4f5', '0157', '157', 'VVVF#6-FC충전불량(FCD)', 'M3', 'C', 'VVVF-FC충전불량(FCD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT31의 Bit6 “FCD” 신호가 "1"이 되면 검지.', null, '1) HSCB, LB1 투입 후300ms이후에 FC에 충전된 전압이 낮을 경우 고장검지. +2) 1분 이내 3회 발생 시 중고장 발생.', '1) 경고장 +역행 고장검지 2초 후 자동 재기동 제동 제동 OFF시 고장 소거 +2) 중고장 +동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 FC전압에 이상이 있는지 확인한다. +3) 추진제어장치 내부 고전압부에 소손흔적이 있는지 확인한다. +4) 주 회로 차단기함 내부 충전저항값을 측정하여 기준치(10Ω±10%)이내임을 확인. +5) FC에 연결된 버스바의 체결상태가 양호한지 확인한고, 버스바를 분리하여 FC의 Capacitance를 측정하여 이상이 없는지 확인한다. +6) 전압센서와 추진제어장치 제어기 PUZ 보드에 연결되는 저전압 배선상태를 확인한다. +7) 추진제어장치 시험기를 이용하여 TCU(통합제어장치)의 이상여부를 확인한다. +8) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +9) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('41f1333e-42ce-4f81-95e6-e1528de91359', '0234', '234', '제동불완해검지(NRBD, Car6)', 'M3', 'B', '제동불완해검지(NRBD)', 'B', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT8의 Bit2 “NRBD” 신호가 “1”이 되면 검지 +', '해당 차량 제동불완해 검지 현시 및 완해 취급하였음에도 불구하고 해당 차량 제동압력 (BCP)이 완해되지 않음.', '제동완해상태(정차제동포함)에서 해당 차량의 제동압력이 완전 배기되지 않음. +', '제동완해상태(정차제동포함)에서 해당 차량의 제동압력이 완전히 배기됨.', '정차하여 강제완해스위치를 취급하여 소거 여부 확인, 제동 완해상태 확인 후 주의 운전할 것, 2 ~ 3회 시도에도 완해불능 시 관제보고하고 지시에 따를 것', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('41f2bdba-52b5-45f1-8e84-8f5be015c67d', '0170', '170', 'VVVF#6 - 보호동작 설정치 이상검지(SETERR)', 'M3', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4211bb65-c39e-4e27-b520-979fce1d9d36', '0206', '206', 'BECU#5 - RAM 점검 고장', 'T2', 'C', 'BECU-RAM 점검 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit5 “RAM 점검 고장” 신호가 “1”이 되면 검지 +', '해당 차량 RAM 점검 고장검지 현시 및 해당 차량 정상적인 제동제어 불가', '해당 차량 BECU의 자가진단 시 고장 발생 +', '해당 차량 BECU의 자가진단 시 정상적일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('42135397-5383-4ac6-a8e2-5527ce9c54b9', '762', '762', 'CAB HVAC#1 - 내기센서 이상', 'Tc1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4215c85f-714a-4f35-b22a-3a6b43091bf0', '0118', '118', 'VVVF-FC 과전압검지(FCOVD) (Car7)', 'M4', 'C', 'VVVF-FC 과전압검지(FCOVD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT32의 Bit5 “FCOVD” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 'FC 과전압검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치 내부 FC전압이 2100V 이상일 경우 검지됨.', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반배전반의 VVVFIC nfb 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 FC전압에 이상이 있는지 확인한다. +3) 추진제어장치 내부 고전압부에 소손흔적이 있는지 확인한다. +4) FC에 연결된 버스바의 체결상태가 양호한지 확인한고, 버스바를 분리하여 FC의 Capacitance를 측정하여 이상이 없는지 확인한다. +5) 전압센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +6) SEN 보드의 동작상태를 시험기를 통해 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.71571+00', null, '다대48량(2015)', 'Rotem'), ('421c52d4-2b7e-42c2-9e08-7ba054f001d8', '0705', '705', 'HVAC#2-냉난방장치2 증발기2 과부하', 'M1', 'C', 'HVAC-냉난방장치2 증발기2 과부하', 'C', 'HVAC', 'HVAC 냉방작동 중 냉난방장치2 증발기 모터에 과부하 발생.', 'UNIT2 냉방 기능 불가', '1) 냉방작동 중 UNIT2의 증발기 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CREF4와 연결된 THR8이 Trip 됨.', 'UNIT2의 증발기 모터의 과부하 조건을 해소하여 정상 가능 상태로 만들고, THR8 및 마이콤 전원 리셋', '1) 냉난방배전반의 점검커버를 열고, THR8의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR8의 전류 세팅값이 3A에 맞춰져 있는지 확인하여, 아닐 경우, 십자 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동 시킨 후, THR8의 2차측 2,4,6 단자에서 각 단자간 상간 전압이 AC 380V으로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 증발기 단품 상태에서 점검을 한다. +7) THR8의 2차측 2,4,6 단자에서 각 단자간 권선저항이 모두 같은지 확인한다. (±10% 이하) (증발기 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT2의 증발기 모터의 결선을 해제한 후 4극 및 6극 모터의 권선저항을 확인 후, 문제가 있을 겨우, 증발기 모터를 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR8 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('423ef6c2-287c-45e8-b549-1ff4c4de442a', '0406', '406', 'SIV#8 - 인버터1 입력과전류(INV1OC)', 'Tc2', 'C', 'SIV-인버터1 입력 과전류(INV1OC)', 'C', 'SIV', '보조전원장치(SIV)의 RS485 데이터 중 SIV-TCMS SD TEXT4의 Bit4 “INV1OC” 신호가 “1”이 되면 검지 +', '1) TCMS 화면하단 또는 고장화면에 ‘인버터1 입력 과전류' 표시됨. +2) 보조전원장치(SIV)는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 보조전원장치 중고장이 발생됨. +5) 중고장이 발생되면 TCMS 일반화면에 보조전원장치 상태 붉은색으로 표기되며, 연장급전 됨.', '보조전원장치(SIV) 내부인버터1에서의전류가450A 이상일 경우 검지됨. +', '1) 경고장이 발생할 경우 보조전원장치(SIV) 자동 재기동에 의해 재기동 됨. +2) 중고장이 발생했을 경우 조치 완료 후 보조전원장치(SIV) 리셋으로 고장 소거됨.', '1) 상기 고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 보조전원장치(SIV) 고장기록을 수집하여 FC전압, 전류에 이상이 있는지 확인한다. +3) 보조전원장치(SIV) 내부 고전압부에 소손흔적이 있는지 확인한다. +4) FC에 연결된 부스바의 체결상태가 양호한지 확인한고, 부스바를 분리하여 FC의 Capacitance를 측정하여 이상이 없는지 확인한다. +5) 전압센서와 보조전원장치(SIV) 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +6) SEN 보드의 동작 상태를 시험기를 통해 확인한다. +7) 출력단 각상의 절연상태 및 각상과 접지 간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('423f36d8-a0ea-4b72-be55-2f1e181a26cb', '0001', '1', 'CU1 통신고장', 'Tc1', 'B', 'CU1 통신고장(TC1)', 'B', 'TCMS', '편성제어장치(CU)의 좌측 CU1의 통신고장(또는 우측 CU2의 통신고장) + +', '1) CU1 통신고장 현시, 정상적으로 CU2로 정상적으로 절체 되면 CU1 통신고장만 현시되고 차량 운행에 지장 없음. +2) CU1과 CU2 모두 이상이 있을 경우, DU 일반화면상 모든 정보 표출 불가, DU의 통신고장 발생 할 수 있음. +3) CU2로 절체 될 경우, 화면상의 우측 상단 경고장 하단에 “B.SYS” 글자가 표시됨. (2중계 동작에 의한 화면)', 'CU1과 CU2의 통신정보를 3초 이상 수신 받지 못할 경우 해당 고장 현시, 일반적으로 MCPU 보드의 문제로 해당 MCPU 보드를 교체하거나, 또는 각 회로 차단기의 차단에 따른 고장 현시 +', 'CU1과 CU2 간 통신이 정상적으로 통신을 재개할 경우 소거됨.', '1) CU의 전원차단 CB를 확인 전원차단 CB가 정상 ON이 되어 있다면 MCPU 보드의 전원 LED가 정상적으로 ON이 되어 있는지 확인(MCPU 보드의 ERR LED가 지속적으로 ON 되어 있으면 MCPU 교체 4TX3/4RX3이 정상적으로 점멸하지 않으면 MCPU 교체) +2) CU의 리셋(전원차단 CB OFF → ON)후에도 소거가 되지 않을 경우, MCPU 보드를 교체 (MCPU 교체전 누적 주행거리, 적산전력량, 휠경 설정값을 기록해두고, 교체 후 입력한다.) +3) 위 조건에도 고장이 소거되지 않을 경우, SCM 보드, DIM, AUX 보드 등을 순차적으로 교체 후, 상태를 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4258d47d-4f99-4159-9c7d-c6f08da880b2', '1519', '1519', 'TU 모듈고장 - DIM3(Car2)', 'M1', 'C', 'TU 모듈고장 - DIM3', 'C', 'TCMS', 'TU의 DIM3 PCB가 이 정상적으로 인식되지 않아 점검이 필요할 때 +', '1) TU의 DIM3 PCB가 모듈 고장이 발생하면, 해당 TU의 모든 디지털 데이터 입력 동작인식 불가 +2) 해당 TU가 M1 차량 인 경우 판토상태 갱신 불가 +3) 해당 TU가 T1차량 인 경우 연장급전상태 갱신 불가', 'TU DIM3의 ID를 정상적으로 검출하지 못할 때 화면에 현시 +', 'TU DIM3의 ID를 정상적으로 검출하는 경우 소거됨', '1) TU의 DIM3 PCB 교체 +2) 불량 해소가 되지 않을 경우, 순차적으로 SCM, AUX PCB를 교체하여 정상여부 확인', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('42737a2b-e48e-4b6b-932b-544fc45bb447', '0017', '17', '모든 출입문 바이패스 스위치 취급', 'Tc1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('42793df0-5e09-406f-b27c-1559bad8bd43', '1523', '1523', 'TCMS 데이타버스2 좌측라인 통신 이상(Car5)', 'T2', 'C', 'TCMS 데이터버스2 좌측라인 통신 이상', 'C', 'TCMS', 'TCMS의 초기 기동 시 자기진단에 의한 2중계 메인통신선 중 2계 메인통신 이상 검지 시 +', '1) SL-NET 2중계이므로 데이터버스 1계로 정상통신, 운행에 지장 없음. +2) 초기기동 자기진단 시 2중계를 점검하여 2계측의 이상이 검지되었다는 점검 필요용 메시지', '초기 기동 시 SL-NET 1계와 2계를 각각 통신 후 비교하여 1계는 정상통신이 되나 2계는 정상통신이 안 되는 경우 +', '정상 수리 후 차량 전체 재기동하여 SL-NET 1계와 2계 모두 정상통신이 되는 경우', '1) 고장검출호차와 고장검출 좌측 호차와의 SL-NET 통신 2계 정상여부 확인(예 : 고장호차가 3호차인 경우, 1-2-3-4-5-6-7-8에서 3호차의 좌측, 즉 2-3호차 간 SL-NET 2계 통신 상태 점검 필요) +2) 고장검지호차의 SCM PCB 교체, 정상여부 확인 +3) 고장검지호차의 좌측호차 SCM PCB 교체, 정상여부 확인 +4) 고장검지호차와 고장검지 좌측호차의 SL-NET 2계 메인통신 배선의 연결 상태 확인 +5) 상기 2 ~ 4번 점검에도 정상적으로 복귀되지 않는 경우, CU/TU ASS'Y 교체(백보드 확인 필요)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('427cfcb0-ddb9-4247-86a0-cf0a1ac83fe1', '0324', '324', 'ATC#8-', 'Tc2', '0', null, null, '0', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('4286f5e3-f655-4ea6-a051-209fbdfa5910', '1601', '1601', '미세먼지감지센서 모듈#7 - 센서 고장', 'M4', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('42b5e39c-eead-440f-a8db-2afff9bc3c89', '1211', '1211', 'FDU#1-체크섬 고장', 'Tc1', 'C', 'FDU-체크섬 고장', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT5의 Bit7 "Checksum Fault” 신호가 "1"이 되면 검지.', 'Checksum Fault 현시 및 FDU의 정상 동작 불가능', '수신기 펌웨어의 오류로 인한 체크섬 이상(MCU 내부 플래쉬 메모리에 저장된 체크섬과 프로그램의 체크섬 계산값이 다를경우)', 'FDU가 부팅될때 MCU 내부 플래쉬 메모리에 저장된 체크섬과 프로그램의 체크섬 계산값이 같을 경우', '1) FDU의 전원을 리셋하여 소거여부 확인 +2) 문제가 지속될 경우, 수신기 교체', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('42d2318f-5187-4555-a60a-9afe1d675767', '0507', '507', 'DCU#6 2위(L1) - 초기화 실패', 'M3', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 “Calibration failure” 신호가 “1”이 되면 검지 +', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터 고장, 장애물감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우 +', '초기화 실패를 야기한 고장코드를 확인하여 조치 후, 재닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인한다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('42d71da5-4e89-4583-a058-7b6bf7aee7a3', '0236', '236', '상용제동코크 차단(Car3)', 'M2', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('42e603bf-06ef-4530-81ef-1d213d159231', '0179', '179', 'VVVF#6 - LB2 투입불량(LB2NC)', 'M3', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('42e82302-7943-4332-b0e2-0f559050ddf8', '0750', '750', 'HVAC#5-냉난방장치2 보조히터 과열', 'T2', 'C', 'HVAC-냉난방장치2 보조히터 과열', 'C', 'HVAC', 'HVAC2 보조난방기 작동 중 과열 발생.', 'UNIT2 보조난방기 난방 불가', '보조난방기 작동 중 1초 이상동안 온도가 70도 이상으로 과온센서 정상 신호가 수신되지 않는 경우', '1초 이상동안 60도 미만으로 온도가 떨어져 과온센서 정상 신호가 수신되는 경우', '1) 보조난방기가 꺼진 상태에서도 문제 발생 시, 과온 센서를 교체한다. +2) 센서 교체 후에도 문제가 발생되면, 배선에 문제가 없는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('42e89846-ed07-4779-9ac9-0a27dca5a60e', '0504', '504', 'DCU#5 5위(R3) - 출입문 외부 비상핸들 취급(EAD)', 'T2', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('42f180d3-7a48-4d64-8584-aed1b4eae2fc', '0502', '502', 'DCU#4 1위(R1) - 출입문 장애물검지', 'T1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('42f5bb93-eff0-403e-8ee9-743dbfb86900', '0211', '211', 'BECU#3 - 2축 속도신호의 비정상', 'M2', 'C', 'BECU-2축속도신호의 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit2 “2축속도신호의 비정상” 신호가 “1”이 +되면 검지 +', '해당 차량 2축속도신호의 비정상 검지 현시 및 해당 차량 활주제어불가', '해당 차량의 2축속도센서 고장 발생 +', '해당 차량의 2축속도센서가 정상적일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('42f7ed65-d7b5-440a-871f-33a40b0db5ba', '1504', '1504', '냉방장치용 AC 회로차단기 차단(Car8)', 'Tc2', 'W', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('42fda902-5ad6-424d-997d-0a50773c19e7', '0512', '512', 'DCU#7 6위(L3)-파라미터 로딩 실패', 'M4', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 "Paraneter error” 신호가 "1"이 되면 검지.', 'Parameter error 현시 (출입문은 정상작동 가능)', 'DCU 자체내의 EEPROM으로부터 parameter 데이터 로딩 실패', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('4300c9f7-42a2-4a3d-9e3e-8446412bdca0', '0752', '752', 'HVAC#5-배기댐퍼 닫힘고장', 'T2', 'C', 'HVAC-배기댐퍼 닫힘고장', 'C', 'HVAC', '차량 배기댐퍼가 닫혀있는 상태에서 배기댐퍼 닫힘 리미트 스위치가 작동되지 않음', '배기댐퍼 닫힘 고장 현시', '배기댐퍼를 닫힘으로 제어했으나 닫힘 리미트 스위치 입력이 없을 경우', '배기댐퍼 닫힘 상태에서 리미트 스위치 입력이 정상적으로 입력', '1) 배기댐퍼가 닫힌 상태에서 닫힘 리미트 스위치가 정상적으로 작동되었는지 확인한다. +2) 닫힘 리미트 스위치가 정상작동 되었음에도 문제가 발생될 경우, 스위치를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('4304a0d0-a844-44c6-a159-e9c7eaacfd2e', '0744', '744', 'HVAC#7 - 전자접촉기 보조히터1(AHEK) 고장', 'M4', 'C', 'HVAC-전자접촉기 보조히터1(AHEK) 고장', 'C', 'HVAC', 'HVAC 보조난방기 작동 중 AHEK1 전자접촉기 고장 발생 +', 'UNIT1보조난방기전난방시반난방만 작동', '보조난방기 작동 중 2.5초 이상 동안 AHEK1 작동 feedback 신호가 수신되지 않는 경우 +', 'AHEK1 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) AHEK1을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, AHEK1과 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('43219c19-5956-4ee1-b3de-f056da99158d', '0415', '415', 'SIV#8 - 게이트 드라이버 고장, VY1상(GDFVY1)', 'Tc2', 'C', 'SIV-게이트 드라이버 고장, VY1상(GDFVY1)', 'C', 'SIV', '보조전원장치(SIV)의 RS485 데이터 중 SIV-TCMS SD TEXT5의 Bit5 “GDFVY1” 신호가 “1”이 되면 검지 +', '1) TCMS 화면하단 또는 고장화면에 ‘GDFVY1상 이상 검지' 표시됨. +2) 보조전원장치(SIV)는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 보조전원장치(SIV) 중고장이 발생 됨. +5) 중고장이 발생되면 TCMS 일반화면에 보조전원장치(SIV) 상태 붉은색으로 표기되며, 연장급점 됨.', '보조전원장치(SIV) 내부GDU에 과전류, 과온이 검지될 경우 +', '1) 경고장이 발생할 경우 보조전원장치(SIV) 자동 재기동에 의해 재기동 됨. +2) 중고장이 발생할 경우 보조전원장치(SIV) 리셋으로 고장 소거됨.', '1) 상기 고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 보조전원장치(SIV) 고장기록을 수집하여 출력되는 3상의 AC 전류치를 확인함. +3) 특정상의 전류치가 비정상적일 경우 특정상에 해당되는 GDU, 전류센서, 출력단 결선을 확인 한다. +4) 전류센서와 보조전원장치(SIV) 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작 상태를 시험기를 통해 확인한다. +6) GDU 전원공급기의 전원연결 상태 또는 광케이블의 연결 상태와 배선상태를 확인한다. +7) 출력단 각상의 절연상태 및 각상과 접지 간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4343a7fd-bc00-4b49-a168-6931908aa4dc', '0502', '502', 'DCU#6 5위(R3)-출입문 장애물검지', 'M3', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('4344b139-e5e4-4f95-be63-8acf6abd5d84', '0511', '511', 'DCU#8 5위(R3)-출입문 닫힘 리미트 스위치2 고장', 'Tc2', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 "DCS2 Failure(Right)” 신호가 "1"이 되면 검지.', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('434a832a-b1a0-41ec-8254-0fc5f31caf10', '0511', '511', 'DCU#7 1위(R1)-출입문 닫힘 리미트 스위치2 고장', 'M4', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 "DCS2 Failure(Right)” 신호가 "1"이 되면 검지.', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('4359a1c3-b3b2-435a-97d3-08a33e094a82', '0514', '514', 'DCU#4 1위(R1)-출입문 닫힘 시간 초과', 'T1', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 "Close time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 닫힘 동작시간이 7초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도 한 후, '장애물로 인한 닫힘실패' 고장과 함께 'Close time out' 고장이 함께 현시', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('4363c950-ce8a-4345-97e4-df32887636ba', '0142', '142', 'VVVF#2 - 배터리 전원저하(P100LVD)', 'M1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('43645422-a7c6-4d21-8f3c-2bda05b18552', '1525', '1525', 'TCMS 데이타버스1 우측라인 통신 이상(Car4)', 'T1', 'C', 'TCMS 데이터버스1 우측라인 통신 이상', 'C', 'TCMS', 'TCMS의 초기 기동 시 자기진단에 의한 2중계 메인통신선 중 1계 메인통신 이상 검지 시 +', '1) SL-NET 2중계이므로 데이터버스 2계로 정상통신, 운행에 지장 없음. +2) 초기기동 자기진단 시 2중계를 점검하여 1계측의 이상이 검지되었다는 점검 필요용 메시지', '초기 기동 시 SL-NET 1계와 2계를 각각 통신 후 비교하여 2계는 정상통신이 되나 1계는 정상통신이 안 되는 경우 +', '정상 수리 후 차량 전체 재기동하여 SL-NET 1계와 2계 모두 정상통신이 되는 경우', '1) 고장검출호차와 고장검출 우측호차와의 SL-NET 통신 1계 정상여부 확인(예 : 고장호차가 3호차인 경우, 1-2-3-4-5-6-7-8에서 3호차의 우측 즉, 3-4호차 간 SL-NET 1계 통신 상태 점검 필요) +2) 고장검지호차의 SCM PCB 교체 정상여부 확인 +3) 고장검지호차의 우측호차 SCM PCB 교체 정상여부 확인 +4) 고장검지호차와 고장검지 우측호차의 SL-NET 1계 메인통신 배선의 연결 상태 확인 +5) 상기 2 ~ 4번 점검에도 정상적으로 복귀되지 않는 경우, CU/TU ASS'Y 교체(백보드 확인 필요)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('439ec66f-586d-4c1f-a58e-dce71bbade87', '0748', '748', 'HVAC#4 - 전자접촉기 차량히터1(CRRHT) 고장', 'T1', 'C', 'HVAC-전자접촉기 차량 히터1(CRRHT) 고장', 'C', 'HVAC', '객실 난방기 작동 중 CRRHT1 전자접촉기 고장 발생 +', '객실 전난방 시 2/3난방만 작동', '객실 전난방 작동 중 2.5초 이상 동안 CRRHT1 작동 feedback 신호가 수신되지 않는 경우 +', 'CRRHT1 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CRRHT1을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRRHT1과 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('43a33b81-762e-4230-bf2a-1f0d31faf66d', '0505', '505', 'DCU#2 2위(L1)-출입문 입력 고전압', 'M1', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 "1"이 되면 검지.', '고전압 상태. (그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('43a38868-30e5-4ccc-a372-b58b1ec9031f', '0507', '507', 'DCU#7 5위(R3)-초기화 실패', 'M4', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 "Calibration failure” 신호가 "1"이 되면 검지.', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터고장, 장애물 감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우', '초기화 실패를 야기한 고장 코드를 확인하여 조치 후, 재 닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('43a675fb-c13f-43f6-9df3-c6170db0ee66', '0191', '191', '보조공기압축기 장시간 기동(Car6)', 'M3', 'C', null, null, 'CMSB', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('43b0a3b9-1656-4d75-8432-22116583b0fa', '0748', '748', 'HVAC#8-전자접촉기 차량히터1(CRRHT) 고장', 'Tc2', 'C', 'HVAC-전자접촉기 차량히터1(CRRHT) 고장', 'C', 'HVAC', '객실 난방기 작동 중 CRRHT1 전자접촉기 고장 발생.', '객실 전난방 시 2/3난방만 작동', '객실 전난방 작동 중 2.5초 이상동안 CRRHT1 작동 feedback 신호가 수신되지 않는 경우', 'CRRHT1 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CRRHT1을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRRHT1과 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('43cf8287-cc64-4507-8ba5-2dcc47c3a67d', '0505', '505', 'DCU#4 4위(L2) - 출입문 입력 고전압', 'T1', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 “1”이 되면 검지 +', '고전압 상태(그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상 +', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('43d724f7-ba95-45d8-bb16-4247c3b0cb10', '0515', '515', 'DCU#1 1위(R1)-출입문 열림 시간 초과', 'Tc1', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 "Open time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 열림 동작시간이 6초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도 한 후, '장애물로 인한 열림실패' 고장과 함께 'Open time out' 고장이 함께 현시', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('43e38663-c8c0-4adb-95fa-b8ce287ff50f', '0241', '241', 'BECU#2 - 1축 스키드신호', 'M1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('43e53944-d23e-44b5-aa47-4464bdaa0405', '0508', '508', 'DCU#5 6위(L3)-출입문 모터/인코더 고장', 'T2', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 "Motor / Encoder failure” 신호가 "1"이 되면 검지.', '출입문 정상동작 불가', '1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우 (인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터 / 인코더 회로가 손상된 경우', '모터/인코더 및 DCU가 정상상태이고, 전기적 연결상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있느지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. +★ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. + +1. DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. +2. DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) +3. DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('43eae214-e776-4837-bc24-c93219864b4f', '0521', '521', 'DCU#7 5위(R3)-모듈 상태 이상', 'M4', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 "01"또는 "00"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('4405b648-5804-42bb-85a3-f79b5ad4ce12', '1211', '1211', 'FDU#1 - 체크섬 고장', 'Tc1', 'C', 'FDU-체크섬 고장', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT5의 Bit7 “Checksum Fault” 신호가 “1”이 되면 검지 +', 'ChecksumFault 현시 및 FDU의 정상동작 불가능', '수신기펌웨어의 오류로 인한 체크섬 이상(MCU 내부 플래쉬메모리에 저장된 체크섬과 프로그램의 체크섬 계산값이 다를 경우) +', 'FDU가 부팅될 때 MCU 내부 플래쉬메모리에 저장된 체크섬과 프로그램의 체크섬 계산값이 같을 경우', '1) FDU의 전원을 리셋하여 소거여부 확인 +2) 문제가 지속될 경우, 수신기 교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4407dd21-93e2-41bb-ab22-6b9f7db4399c', '0840', '840', '실내카메라#2(SCAM) 고장(Car#4)', 'T1', 'C', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('441e12bf-808d-444f-8ad2-527ba0e89a77', '0202', '202', 'BECU#1-덤프밸브고장(전두대차)', 'Tc1', 'C', 'BECU-덤프밸브고장(선두대차)', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit1 “덤프밸브고장(선두대차)” 신호가 "1"이 되면 검지.', '해당 차량 덤프밸브고장(선두대차) 검지 현시 및 해당 차량 활주제어 불가.', '해당 차량 선두대차의 덤프밸브가 작동하지 않음.', '해당 차량 선두대차의 덤프밸브가 정상 작동 시 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('44237ec0-a2e8-4d1d-90da-5c744dcfd5b6', '0514', '514', 'DCU#7 2위(L1) - 출입문 닫힘 시간 초과', 'M4', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 “Close time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 닫힘 동작 시간이 7초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도한 후, ‘장애물로 인한 닫힘 실패' 고장과 함께 ‘Close time out' 고장이 함께 현시 +', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('44274283-9857-4a83-8715-f14d98f88803', '1005', '1005', 'CMSB#8-입력 DC 저전압', 'Tc2', 'C', 'CMSB-입력 DC 저전압', 'C', 'CMSB', 'CMSB의 RS485 데이터 중 CMSB-TCMS SD TEXT3의 Bit6 “입력 DC 저전압” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 '입력 DC 저전압' 표시됨. +2) 바이패스 모드로 전환되고, CM 기동 시 '바이패스 기동'으로 표시됨.', '1) CMSB 내 콘덴서(DC-LINK) 충전 전압이 DC402V 이하 일 경우 검지됨.', '1) 차량 전원 OFF +2) CMSB 내부의 표시기패널 RESET 버튼 누름.', '0) 정상운행 후, 검수고에 입고하여 아래와 같이 조치한다. +1) 상기고장은 고장 소거 후, 재현시험을 진행하여 지속적으로 발생될 경우 아래와 같이 조치한다. +2) 회로차단기(CMN) 상태를 확인한다. +3) 충전저항 상태를 확인한다. +4) MC 접촉기 동작여부를 확인한다.', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('442d7942-41cf-46e0-bc5b-1df612d1e92e', '0503', '503', 'DCU#8 2위(L1)-출입문 내부비상핸들 취급(EED)', 'Tc2', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('4433fa59-08f3-497b-83ff-0cc7a7b8d3c7', '0714', '714', 'HVAC#4-냉난방장치1 압력스위치2(DPS) 고압', 'T1', 'D', 'HVAC-냉난방장치1 압력스위치2(DPS) 고압', 'D', 'HVAC', '냉난방장치1 냉매 압력스위치2 고압 발생.', 'UNIT1 CYCLE2 냉방 기능 불가', 'UNIT1 DSP2측 냉매 압력이 3초 이상 28±1(kgf/cm2) 이상 되는 경우', '냉매 압력이 정상 수치 15±0.7(kgf/cm2 이하로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CRCM2의 부하측 전류를 측정하여 응축기 팬의 동작여부를 확인한다. +2) 응축기 코일의 전면에 이물질로 인한 막힘이 있는지 확인한다. +3) 응축기 팬 상부 그릴에 외부 이물질로 인한 막힘이 있는지 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('44368267-530f-406b-a1c5-4f39e8f73deb', '0723', '723', 'HVAC#1 - 냉난방장치1 압력스위치2(DPS) 냉매부족', 'Tc1', 'C', 'HVAC-냉난방장치1 압력스위치2(DPS) 냉매부족', 'C', 'HVAC', '냉난방장치1 냉매 압력스위치2 저압 발생 +', 'UNIT1CYCLE2 냉방 기능 불가', 'UNIT1DSP2측 냉매압력이 30초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우 +', '냉매압력이 정상수치 2±0.5(kgf/cm2) 이상 유지하도록 하고, 마이콤전원을 리셋', '1) 배전반 점검 커버를 열고 마이콤 전원을 리셋한 후, 냉방 가동 시, CREF2의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)을 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설 여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안 되는 것을 확인한 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('443b812a-6c05-4e7e-beb7-39ed8a79ce37', '0731', '731', 'HVAC#3-냉난방장치1 리턴 센서 고장', 'M2', 'C', 'HVAC-냉난방장치1 리턴 센서 고장', 'C', 'HVAC', '냉난방장치1의 리턴 센서 고장 발생', '냉난방장치1 리턴센서 고장현시', '온도센서 검지범위는 -45~85도 (820~1330옴) 인데, 2초 이상 검지범위를 벗어나는 경우', '온도센서 검지 값이 2초 이상 허용온도 범위 내 일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820~1330옴 을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우, 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('44410623-56f1-4b4e-9789-d88ca20946b4', '0502', '502', 'DCU#2 5위(R3) - 출입문 장애물검지', 'M1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4455f1fd-5b05-413a-b434-687770153fbe', '0215', '215', 'BECU#1-후미대차 AS압력센서고장', 'Tc1', 'C', 'BECU-후미대차 AS압력센서 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit6 “후미대차 AS압력센서 고장” 신호가 "1"이 되면 검지.', '해당 차량 후미대차 AS압력센서 고장 검지 현시 및 해당차량 정상적인 응하중 제동제어 불가.', '해당 차량의 후미대차 AS 압력센서(AS3, AS4) 고장.', '해당 차량의 후미대차 AS 압력센서(AS3, AS4)가 정상일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('4459acdf-d736-45b6-a47f-bb6cf6ed15b0', '0514', '514', 'DCU#7 6위(L3) - 출입문 닫힘 시간 초과', 'M4', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 “Close time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 닫힘 동작 시간이 7초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도한 후, ‘장애물로 인한 닫힘 실패' 고장과 함께 ‘Close time out' 고장이 함께 현시 +', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('445e2758-3a69-4056-a34c-59f6920a6fa9', '0232', '232', 'BC 코크(차하#2) 차단(Car1)', 'Tc1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('445f4e86-5c43-48ac-8c2f-28437be98929', '1518', '1518', 'CU1 운용다이아 CRC 오류(Car8)', 'Tc2', 'C', 'CU2, 2 운용다이아 CRC 오류', 'C', 'TCMS', '초기 기동 시 CU의 MCPU 내부에 들어가 있는 운용다이아 데이터가 CRC 오류가 발생한 경우 +', '1) 내부의 데이터가 CRC 오류가 발생하여 운용다이아를 사용할 수 없을 때 발생 +2) 열차번호 입력 시 다음역, 행선역이 표출되지 않음. +3) 방송/표시기 데이터를 정상적으로 송출 할 수 없음. (운행중인 경우 수동방송필요) +4) 열번/역설정 화면의 역설정/운용설정이 정상적으로 표시되지 않음.', '초기 기동 시 내부에 가지고 있는 운용다이아 데이터가 손상된 경우 +', 'CU 리셋 후 초기 기동 시 운용다이아 데이터가 정상적인 것을 확인한 경우', '1) 운용다이아 데이터 재설치 후 재기동 +2) 불량 해소가 되지 않을 경우, MCPU PCB 교체 후 운용다이아 데이터 재설치', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4465eb36-a06a-4349-9860-be46a53716ec', '0511', '511', 'DCU#3 5위(R3)-출입문 닫힘 리미트 스위치2 고장', 'M2', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 "DCS2 Failure(Right)” 신호가 "1"이 되면 검지.', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('447709cb-efcc-4051-becc-91bf1496f105', '0521', '521', 'DCU#3 2위(L1) - 모듈 상태 이상', 'M2', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 “01” 또는 “00”이 되면 +검지 +', '이중계절체동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러)이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('44770c80-6125-48c6-b77a-004edf1ea94b', '0230', '230', 'ECU 전원공급 고장(Car2)', 'M1', 'B', 'ECU 전원공급 고장', 'B', 'BECU', '해당 차량의 ECU 전원공급 고장(CB OFF) 발생 시 검지 +', '해당 차량의 ECU 전원공급 고장검지 현시', '해당 차량의 ECU 전원차단(CBOFF) +', '해당 차량의 ECU 전원공급(CBON)', 'BECU를 리셋(BECUCBOFF/ON)하여 소거 여부 확인, 지속적으로 고장 발생 시 관제 보고하고 지시에 따를 것', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('447ad621-72a8-475c-8068-ddcedf5e9582', '0082', '82', '화재검지(Car5)', 'T2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('44848254-fcac-45ae-bd31-f64961913eec', '0140', '140', 'VVVF#7 - 제어전원전압 이상(TCU) (CLVD_S)', 'M4', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4490ef13-d40b-4b1d-afe1-c94cb4046a40', '0230', '230', 'ECU 전원공급 고장(Car7)', 'M4', 'B', 'ECU 전원공급 고장', 'B', 'BECU', '해당차량의 ECU 전원공급 고장 (CB OFF) 발생 시 검지', '해당차량의 ECU 전원공급 고장 검지 현시', '해당차량의 ECU 전원차단 (CB OFF)', '해당차량의 ECU 전원공급 (CB ON)', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속적으로 고장 발생시 관제보고하고 지시에 따를 것.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('44939f6a-f21c-4865-b87b-bc816a24ecfa', '0520', '520', 'DCU#2 2위(L1) - 이중계 절체 동작', 'M1', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 “Module switchover” 신호가 “1”이 되면 검지 +', '이중계 절체 동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러) 이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A'모듈 및 ‘B'모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4496902d-3388-4dd4-82e8-0436c4385115', '0517', '517', 'DCU#6 1위(R1)-출입문 장애물로 인한 열림 실패', 'M3', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Open failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘상태로 대기', '도어 열림 중 3회 장애물 감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 열림 시, 장애물 감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('449d6898-2e83-42e4-a50c-9ad8b2e7842b', '0869', '869', '실내카메라#3(SCAM) 고장(Car#7)', 'M4', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('44ad14a6-7e80-432c-a17f-74ecc7324aae', '0514', '514', 'DCU#8 1위(R1)-출입문 닫힘 시간 초과', 'Tc2', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 "Close time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 닫힘 동작시간이 7초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도 한 후, '장애물로 인한 닫힘실패' 고장과 함께 'Close time out' 고장이 함께 현시', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('44b94822-86d6-4fb3-8f21-53de4694a8b7', '0231', '231', 'BC 코크(차상) 차단(Car4)', 'T1', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('45042838-5540-4934-9302-58726ecabd61', '0514', '514', 'DCU#6 4위(L2)-출입문 닫힘 시간 초과', 'M3', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 "Close time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 닫힘 동작시간이 7초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도 한 후, '장애물로 인한 닫힘실패' 고장과 함께 'Close time out' 고장이 함께 현시', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('4517b405-b071-4174-b835-ed10718aef03', '0102', '102', 'VVVF#6 - 회생제동차단(BRK BLOCK)', 'M3', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('451a3b7a-5dbf-4a01-aaed-0368fce41212', '0733', '733', 'HVAC#2-전자접촉기 압축기(CRCM)4 고장', 'M1', 'C', 'HVAC-전자접촉기 압축기(CRCM)4 고장', 'C', 'HVAC', 'HVAC 냉방작동 중 CRCM4 전자접촉기 고장 발생.', '냉방 기능 저하(전냉방시 반냉방으로 작동)', '냉방작동 중 2.5초 이상동안 CRCM4 작동 feedback 신호가 수신되지 않는 경우', 'CRCM4 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CRCM4를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRCM4와 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('455112bd-d748-489d-87a5-35ee06752900', '0500', '500', 'DCU#1 5위(R3) 통신고장', 'Tc1', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS간 RS485 통신고장이 검지되면 발생.', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐 상태 등의 변화가 없음.', '1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우', '해당차량의 DCU 및 CU/TU 의 전원이 정상상태이고, 통신라인 연결상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜저 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는데도 지속적으로 통순고장이 검지되면, DCU의 X2,X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('4554aee4-51e2-4a91-88d5-ab7d4ce3c418', '0220', '220', 'BECU#6-공기제동 감쇄지령 비정상', 'M3', 'C', 'BECU-공기제동 감쇄지령 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit3 “공기제동 감쇄지령 비정상” 신호가 "1"이 되면 검지.', '해당 차량 공기제동 감쇄지령 비정상 검지 현시 및 해당차량 정상적인 전공 교차제어 불가.(부수차량 공기제동 감쇄 불가)', '해당 차량의 공기제동 감쇄지령 신호가 정상범위를 벗어남(5.0~95.0%).', '해당 차량의 공기제동 감쇄지령 신호가 정상범위일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. +소거되지 않을 경우 해당 차량 옆의 Pair 차량(구동차) BECU를 리셋(CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('456a968c-a03a-4dde-b587-c098063d467a', '0503', '503', 'DCU#2 2위(L1) - 출입문 내부 비상핸들 취급(EED)', 'M1', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('456f0796-35e9-43ca-a844-af7e5a7bc9a7', '0128', '128', 'VVVF-IPM Z상 이상검지(GDFZ) (Car7)', 'M4', 'C', 'VVVF-IPM Z상 이상검지(GDFZ)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT34의 Bit2 “GDFZ” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 'IPM Z상 이상검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치 내부 IPM에 과전류, 과온이 검지될경우.', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반배전반의 VVVFIC nfb 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 견인전동기로 출력되는 3상의 전류치 확인함. +3) 특정상의 전류치가 비정상적일 경우 특정상에 해당되는 IPM, 전류센서, 모터결선을 확인한다. +4) 전류센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작상태를 시험기를 통해 확인한다. +6) IPM 전원공급기의 전원연결상태 또는 광케이블의 연결상태와 배선상태를 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.71571+00', null, '다대48량(2015)', 'Rotem'), ('45755c3e-35a9-4419-8e80-52ea2180887d', '0409', '409', 'SIV#1 - DC(가선) 입력과전압(DCINOV)', 'Tc1', 'C', 'SIV-DC(가선) 입력 과전압(DCINOV)', 'C', 'SIV', '보조전원장치(SIV)의 RS485 데이터 중 SIV-TCMS SD TEXT4의 Bit7 “DCINOV” 신호가 “1”이 되면 검지 +', '1) TCMS 화면하단 또는 고장화면에 ‘가선과전압검지' 표시됨. +2) 보조전원장치(SIV)는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 보조전원장치(SIV) 중고장이 발생함. +5) 중고장이 발생되면 TCMS 일반화면에 보조전원장치(SIV) 상태 붉은색으로 표기되며, 연장급전 됨.', '보조전원장치(SIV)에 입력되는 전압이 2,400V 이상일 경우 검지됨. +', '1) 경고장이 발생할 경우 보조전원장치(SIV) 자동 재기동에 의해 재기동 됨. +2) 중고장이 발생했을 경우 조치 완료 후 보조전원장치(SIV) 리셋으로 고장 소거됨.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 보조전원장치(SIV) 고장기록을 수집하여 보조전원장치(SIV)에 입력되는 전압값을 확인함. +3) 입력되는 전압값이 비정상적일 경우 보조전원장치(SIV) 입력회로를 점검한다. +4) 보조전원장치(SIV) 내의 입력 전압센서 및 배선과 제어기 SEN 보드에 연결되는 저전압 배선 상태를 확인한다. +5) SEN 보드의 동작 상태를 시험기를 통해 확인한다. +6) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('457b8d39-5216-4237-987d-3ed797792f4c', '0228', '228', 'BC 코크(차하#1) 차단(Car6)', 'M3', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('458999a3-b318-4eed-80a6-f3e649ea3b39', '0176', '176', 'VVVF#7-LB1 고착(LB1NO)', 'M4', 'C', 'VVVF-LB1 고착(LB1NO)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT34의 Bit1 “LB1NO” 신호가 "1"이 되면 검지.', null, 'LB1 개방조건에서 투입상태 유지 시 고장검지.', '동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) 주회로 차단기함 내에 LB1의 주접점을 확인하여 고착여부를 확인한다. +2) 주회로 차단기함 내에 LB1의 보조접점을 확인하여 고착여부를 확인한다. +3) 추진제어장치 계전기 유니트에 LB1R 계전기 상태를 확인하여 고착여부를 확인한다. +4) 추진제어장치 시험기를 이용하여 TCU(통합제어기) 시험을 실시하여 이상여부를 확인한다. +5) 상기의 점검부분에 이상이 있을경우 관련부품을 교체한다.', null, '3', '2025-10-12 01:21:37.578803+00', null, '로템40량(2018)-1단계', 'Rotem'), ('458c7026-22e9-4573-a46c-54e481444cd6', '0513', '513', 'DCU#3 3위(R2) - 모듈 상태체크 에러', 'M2', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 “Module check error” 신호가 “1”이 되면 검지 +', 'Modulecheckerror현시(출입문은 정상작동가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태 체크 기능에 이상이 생긴 경우 고장 발생 +', 'DCU의 ‘A' 모듈과 ‘B' 모듈 간, 상태 체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('45c1cd59-81b0-4a81-a068-3a6227e8adf6', '0717', '717', 'HVAC#8 - CO2 센서2 고장', 'Tc2', 'C', 'HVAC-CO2 센서2 고장', 'C', 'HVAC', '객실 CO2 센서2 고장 발생 +', 'CO2 센서2 고장 현시', 'CO2 센서의 검지범위는 0 ~ 4,000ppm(2 ~ 10Vdc)인데, 1초 이상 출력전압이 2Vdc(0ppm) 미만으로 떨어지는 경우 +', 'CO2 센서 검지값이 1초 이상 2Vdc(0ppm) 이상 지속되는 경우', '1) 전원을 인가한 상태에서 CO2 센서 커버를 열고 테스터기를 통해 ‘OUT2' 단자와 ‘G' 단자 간의 전압이 2Vdc 미만인지 확인한다. +2) 만약 전압이 2Vdc 이상인데도 고장이 지속될 경우 마이콤을 교체한다. +3) 만약 전압이 2Vdc 미만으로 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('45ca2d6e-6667-4e26-9d19-8d3cc7b6a117', '0521', '521', 'DCU#3 6위(L3) - 모듈 상태 이상', 'M2', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 “01” 또는 “00”이 되면 +검지 +', '이중계절체동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러)이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('45cea2c4-4b61-4f00-be5c-a473fdeb2336', '0510', '510', 'DCU#1 2위(L1)-출입문 닫힘 리미트 스위치1 고장', 'Tc1', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 "DCS1 Failure(Leftt)” 신호가 "1"이 되면 검지.', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('45d05ad0-8a06-41be-b354-7f6f7a49fda2', '0202', '202', 'BECU#7-덤프밸브고장(전두대차)', 'M4', 'C', 'BECU-덤프밸브고장(선두대차)', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit1 “덤프밸브고장(선두대차)” 신호가 "1"이 되면 검지.', '해당 차량 덤프밸브고장(선두대차) 검지 현시 및 해당 차량 활주제어 불가.', '해당 차량 선두대차의 덤프밸브가 작동하지 않음.', '해당 차량 선두대차의 덤프밸브가 정상 작동 시 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('45e566b1-b9db-46c9-8931-6e4a7158833f', '0508', '508', 'DCU#8 2위(L1) - 출입문 모터/인코더 고장', 'Tc2', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 “Motor / Encoder failure” 신호가 “1”이 되면 +검지 +', '출입문 정상동작 불가', ' +1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우(인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터/인코더 회로 가 손상된 경우 +', '모터/인코더 및 DCU가 정상 상태이고, 전기적 연결 상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있는지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. ※ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. ? DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. ? DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) ? DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('45f09bb3-d542-4695-895e-790dc6347ddd', '0104', '104', 'VVVF#2-휠 슬라이드 검지(WSD)', 'M1', 'W', null, null, 'VVVF', null, null, null, null, null, null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('45f9a52e-d460-484e-818d-27c408681bd5', '0517', '517', 'DCU#7 5위(R3)-출입문 장애물로 인한 열림 실패', 'M4', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Open failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘상태로 대기', '도어 열림 중 3회 장애물 감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 열림 시, 장애물 감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('45fe4ba6-ff42-46fc-ba12-af7895088ab0', '0503', '503', 'DCU#7 5위(R3)-출입문 내부비상핸들 취급(EED)', 'M4', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('4609dfd3-e82b-4270-8ba4-827b9f9b5d7f', '0511', '511', 'DCU#5 4위(L2) - 출입문 닫힘 리미트 스위치2 고장', 'T2', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 “DCS2 Failure(Right)” 신호가 “1”이 되면 검지 +', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('460b1a7d-e024-4ba3-96c4-bf1dd8bd3806', '0501', '501', 'DCU#4 4위(L2) - 출입문 차단', 'T1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('460e5523-5b5e-4e0f-b595-f84ce9139b3f', '0521', '521', 'DCU#7 2위(L1) - 모듈 상태 이상', 'M4', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 “01” 또는 “00”이 되면 +검지 +', '이중계절체동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러)이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4610de6a-ccca-4f17-ab90-cf444f03ec3f', '0732', '732', 'HVAC#1-실외온도 센서1 고장', 'Tc1', 'C', 'HVAC-실외온도 센서 고장', 'C', 'HVAC', '실외온도 센서 고장 발생', '실외온도 센서 고장현시', '온도센서 검지범위는 -45~85도 (820~1330옴) 인데, 2초 이상 검지범위를 벗어나는 경우', '온도센서 검지 값이 2초 이상 허용온도 범위 내 일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820~1330옴 을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우, 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('46131dc7-8b72-44ff-bf5f-db25601cde36', '0506', '506', 'DCU#4 5위(R3)-출입문 입력 저전압', 'T1', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 "1"이 되면 검지.', '저전안 상태 (출입문 동작이 심하게 느려지거나 작동조차 안될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('4616b9ba-98fb-4cd8-bd93-88391a5f57d8', '0233', '233', 'AS 코크#2 차단(Car4)', 'T1', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('461e368d-cd12-4544-b4c3-c28a5cad0061', '0233', '233', 'AS 코크#2 차단(Car8)', 'Tc2', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('462d75c1-a945-455e-9224-2df0f741ca14', '0506', '506', 'DCU#8 6위(L3)-출입문 입력 저전압', 'Tc2', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 "1"이 되면 검지.', '저전안 상태 (출입문 동작이 심하게 느려지거나 작동조차 안될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('462da68c-e9b6-4003-ba7c-e9b652b4b1d6', '0021', '21', '단부출입문 고장(Car2)', 'M1', 'C', '단부출입문 고장 (Car2)', 'C', '기타', '차량 이 단부 통로 문으로부터 END DOOR FAULT 신호를 검지 +', '출입문 정상동작 불가', ' +1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우 (인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +4) DCU 내부의 모터 / 인코더 회로 가 손상된 경우 +', '모터/인코더 및 DCU가 정상상태이고, 전기적 연결 상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있는지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. ※ 고장 조치 완료 후, 반드시 DCU의 reset 버튼을 누르거나 전원을 OFF/ON 하여 시스템을 재가동해야 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('462df2be-4865-445d-a08b-8ab915a083c8', '0234', '234', '제동불완해검지(NRBD, Car3)', 'M2', 'B', '제동불완해검지(NRBD)', 'B', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT8의 Bit2 “NRBD” 신호가 “1”이 되면 검지 +', '해당 차량 제동불완해 검지 현시 및 완해 취급하였음에도 불구하고 해당 차량 제동압력 (BCP)이 완해되지 않음.', '제동완해상태(정차제동포함)에서 해당 차량의 제동압력이 완전 배기되지 않음. +', '제동완해상태(정차제동포함)에서 해당 차량의 제동압력이 완전히 배기됨.', '정차하여 강제완해스위치를 취급하여 소거 여부 확인, 제동 완해상태 확인 후 주의 운전할 것, 2 ~ 3회 시도에도 완해불능 시 관제보고하고 지시에 따를 것', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('46410c59-4050-470b-999f-a0de119389c3', '0730', '730', 'HVAC#1 - 냉난방장치1 토출 센서 고장', 'Tc1', 'C', 'HVAC-냉난방장치1 토출 센서 고장', 'C', 'HVAC', '냉난방장치1의 토출 센서 고장 발생 +', '냉난방장치1 토출 센서 고장현시', '온도센서 검지범위는 -45 ~ 85도(820 ~ 1,330Ω)인데, 2초 이상 검지범위를 벗어나는 경우 +', '온도센서 검지값이 2초 이상 허용온도 범위 내일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820 ~ 1,330Ω을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('46517b7f-8c7b-4632-a541-0b94e20b8f54', '0150', '150', 'VVVF#6-가선저전압검지(ESLVD)', 'M3', 'C', 'VVVF-가선저전압검지(ESLVD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT30의 Bit7 “ESLVD” 신호가 "1"이 되면 검지.', null, '가선 전압이 850V 이하 감압 시 고장검지.', '1) 역행 고장검지 2초 후 자동 재기동 +2) 제동 제동 OFF시 고장 소거', '1) 상기고장이 간헐적으로 발생하는 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 가선전압에 이상이 있는지 확인한다. +3) 추진제어장치 내부 고전압부에 소손흔적이 있는지 확인한다. +4) FC에 연결된 버스바의 체결상태가 양호한지 확인한고, 버스바를 분리하여 FC의 Capacitance를 측정하여 이상이 없는지 확인한다. +5) 전압센서의 외관 및 단자 체결상태를 확인한다. +6) 추진제어장치 시험기를 이용하여 TCU(통합제어장치)의 이상여부를 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('46699a8a-eb8e-41df-a710-234b38a99f05', '0184', '184', '역행관련 회로차단기 차단(Car3)', 'M2', 'W', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.578803+00', null, '로템40량(2018)-1단계', 'Rotem'), ('467681e0-036f-4e98-b41f-c04bde298ce9', '0505', '505', 'DCU#7 2위(L1)-출입문 입력 고전압', 'M4', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 "1"이 되면 검지.', '고전압 상태. (그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('46785920-02bd-4c0e-b63f-812826fdf656', '0512', '512', 'DCU#7 2위(L1) - 파라미터 로딩 실패', 'M4', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 “Paraneter error” 신호가 “1”이 되면 검지 +', 'Parametererror 현시(출입문은 정상작동 가능)', 'DCU 자체 내의 EEPROM으로부터 parameter데이터 로딩 실패 +', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4679b3bf-6aec-4380-b7d6-1176b047b44f', '0047', '47', '주공기압력 저하(Car1)', 'Tc1', 'W', null, null, 'CMSB', null, null, null, null, null, null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('468a82fe-8930-4e1e-8dcf-81eff9eabcfd', '0111', '111', 'VVVF-검출기 전원이상검지(SPSF) (Car7)', 'M4', 'C', 'VVVF-검출기 전원이상검지(SPSF)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT31의 Bit6 “SPSF” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 '검출기 전원이상검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치 제어기에 SPW 보드에서 출력하는 센서 전원에 이상이 발생할 경우.', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반배전반의 VVVFIC nfb 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) SPW 보드의 LED 상태를 확인한다. LED가 소등되어 있거나 특정LED의 상태가 이상할 경우 SPW 보드를 교환한다. +3) SPW-SEN 보드로 연결되는 배선에 이상이 없는지 확인한다. +4) SEN 보드의 동작상태를 시험기를 통해 확인한다. +5) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.71571+00', null, '다대48량(2015)', 'Rotem'), ('469995ca-8a4f-4c7b-96b0-ba9c8525da23', '0746', '746', 'HVAC#3-전자접촉기 배기팬1(CRVF) 고장', 'M2', 'C', 'HVAC-전자접촉기 배기팬1(CRVF) 고장', 'C', 'HVAC', 'HVAC 환기 작동 중 CRVF1 전자접촉기 고장 발생.', '환기 시 차량 배기팬1 운전 불가능', '환기 작동 중 2.5초 이상동안 CRVF1 작동 feedback 신호가 수신되지 않는 경우', 'CRVF1 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CRVF1을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRVF1과 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('469c50c4-d3a1-47ea-9fa7-ea4f0eff4112', '0509', '509', 'DCU#5 1위(R1)-출입문 잠김 리미트 스위치 고장', 'T2', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 "DLS Failure” 신호가 "1"이 되면 검지.', '출입문 잠김 상태 확인 불가', '1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('46a2db51-0cc3-44f7-83b6-ca4df08525c7', '0705', '705', 'HVAC#5 - 냉난방장치2 증발기2 과부하', 'T2', 'C', 'HVAC-냉난방장치2 증발기2 과부하', 'C', 'HVAC', 'HVAC 냉방 작동 중 냉난방장치2 증발기 모터에 과부하 발생 +', 'UNIT2냉방기능불가', ' +1) 냉방 작동 중 UNIT2의 증발기 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CREF4와 연결된 THR8이 Trip 됨. +', 'UNIT2의 증발기모터의 과부하조건을 해소하여 정상 가능 상태로 만들고, THR8 및 마이콤 전원 리셋', '1) 냉난방 배전반의 점검커버를 열고, THR8의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR8의 전류 세팅값이 3A에 맞춰져 있는지 확인하여, 아닐 경우, (+) 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동시킨 후, THR8의 2차측 2, 4, 6 단자에서 각 단자 간 상간 전압이 AC 380V로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 증발기 단품 상태에서 점검을 한다. +7) THR8의 2차측 2, 4, 6 단자에서 각 단자 간 권선저항이 모두 같은지 확인한다. (±10% 이하) (증발기 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT2의 증발기 모터의 결선을 해제한 후 4극 및 6극 모터의 권선저항을 확인 후, 문제가 있을 경우, 증발기 모터를 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR8 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('46b001a0-e486-434d-97bd-646b4aded2ca', '1111', '1111', 'PSD#8 - 바이패스 상태', 'Tc2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('46b57b51-b5a0-4282-93d1-6989efb6f1cc', '0501', '501', 'DCU#1 5위(R3) - 출입문 차단', 'Tc1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('46c1ad5c-878b-4460-83df-a88b7a2f9111', '0505', '505', 'DCU#3 3위(R2)-출입문 입력 고전압', 'M2', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 "1"이 되면 검지.', '고전압 상태. (그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('4717bad6-4682-4695-9568-0b7bad554eb6', '1601', '1601', '미세먼지감지센서 모듈#4 - 센서 고장', 'T1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('471f5dec-f391-48ca-819b-bbed9cbb6a84', '0508', '508', 'DCU#1 3위(R2) - 출입문 모터/인코더 고장', 'Tc1', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 “Motor / Encoder failure” 신호가 “1”이 되면 +검지 +', '출입문 정상동작 불가', ' +1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우(인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터/인코더 회로 가 손상된 경우 +', '모터/인코더 및 DCU가 정상 상태이고, 전기적 연결 상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있는지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. ※ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. ? DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. ? DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) ? DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4727d128-be06-42bf-b30c-44ee753d53e3', '1204', '1204', 'FDU#6 - 감지기2 고장', 'M3', 'C', 'FDU-감지기2 고장 (Car1~8)', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 “Detector1 State” 신호가 “10”이 되면 검지 +', '감지기고장상태현시(자동소거 안 됨)', ' +1) 감지기로부터 데이터 응답이 없는 경우 +2) 감지기로부터 수신된 데이터의 CRC가 맞지 않는 경우 +3) 감지기로부터 수신된 데이터의 ID가 송신 ID와 일치하지 않는 경우 +', 'FDU 전원 리셋 후 감지기로부터 정상적으로 데이터가 수신된 경우', '1) FDU 전원 리셋 후 고장 소거 여부 확인 +2) 정상동작중인 감지기와 위치 교환 후 FDU 전원 리셋 및 고장 상태 확인 +3) 동일한 감지기에서 고장 발생 시 감지기 교체 +4) 동일한 위치에서 고장 발생 시 감지기 라인 점검', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('472813c7-e9ca-4c4f-aaf3-f7b88f58c832', '0733', '733', 'HVAC#6 - 전자접촉기 압축기(CRCM)4 고장', 'M3', 'C', 'HVAC-전자접촉기 압축기(CRCM)4 고장', 'C', 'HVAC', 'HVAC 냉방 작동 중 CRCM4 전자접촉기 고장 발생 +', '냉방 기능 저하(전냉방 시 반냉방으로 작동)', '냉방 작동 중 2.5초 이상 동안 CRCM4 작동 feedback 신호가 수신되지 않는 경우 +', 'CRCM4 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CRCM4를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRCM4와 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('47297717-335a-4a2d-b9ae-5533f93263f5', '0158', '158', 'VVVF#6 - HSCB고착검지(HBNO)', 'M3', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4734f96e-b848-43a2-bcce-21061b760a92', '0735', '735', 'HVAC#5-전자접촉기 압축기(CRCM)2 고장', 'T2', 'C', 'HVAC-전자접촉기 압축기(CRCM)2 고장', 'C', 'HVAC', 'HVAC 냉방작동 중 CRCM2 전자접촉기 고장 발생.', '냉방 기능 저하(전냉방시 반냉방으로 작동)', '냉방작동 중 2.5초 이상동안 CRCM2 작동 feedback 신호가 수신되지 않는 경우', 'CRCM2 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CRCM2를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRCM2와 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('47507764-0bd0-4719-9c36-fafaa75f7c2e', '0518', '518', 'DCU#2 6위(L3) - 출입문 Enable 신호 에러', 'M1', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 “Enable signal error” 신호가 “1”이 되면 검지 +', 'DCU 출입문Enable신호에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드 시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을 때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드 시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입 상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호 장치로부터의 출입문 열림 명령 신호) 취급 시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함. +', '해당 출입문 enable 신호수신', '1) AUTO/MCS 모드 시에는 YARD 모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인 한다. (YARD/FMC 모드 시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4756dec4-969c-405a-a598-bc2c76abf610', '0040', '40', 'Zero Speed 바이패스', 'Tc1', 'W', null, null, 'ATC', null, null, null, null, null, null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('475af7d4-bfca-4861-abd0-cfca1be1c863', '0166', '166', 'VVVF#3 - 대활주/대공전(WSD)', 'M2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('475cbb4f-cea4-4c8b-8d07-28cd22e2761b', '0222', '222', 'BECU#1-공기스프링누설(후미대차)', 'Tc1', 'C', 'BECU-공기스프링누설(후미대차)', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit5 “공기스프링누설(후미대차)” 신호가 "1"이 되면 검지.', '해당 차량 공기스프링누설(후미대차) 검지 현시 및 해당차량 정상적인 제동제어 불가.(응하중 제어)', '해당 차량 후미대차의 공기스프링(AS3, AS4) 압력이 정상범위를 벗어남.(100kPa 미만)', '해당 차량 후미대차의 공기스프링(AS3, AS4) 압력이 정상범위일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('47609b98-035d-41ed-94e5-529d760e91a2', '0209', '209', 'BECU#4 - 4축 속도신호의 비정상', 'T1', 'C', 'BECU-4축속도신호의 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit0 “4축속도신호의 비정상” 신호가 “1”이 +되면 검지 +', '해당 차량 4축속도신호의 비정상 검지 현시 및 해당 차량 활주제어불가', '해당 차량의 4축속도센서 고장 발생 +', '해당 차량의 4축속도센서가 정상적일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('47622880-4a03-4f37-ac6d-af6974116e11', '0149', '149', 'VVVF#3 - FC 저전압검지(FCLVD)', 'M2', 'C', 'VVVF-FC 저전압검지(FCLVD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT30의 Bit6 “FCLVD” 신호가 “1”이 되면 검지 +', '1) TCMS 화면 하단 또는 고장화면에 ‘FC 저전압검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생함. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉은색으로 표기되며, HSCB, LB1, 2 개방되어 동력 손실 발생함.', '추진제어장치 내부 FC 전압이 850V 이상일 경우 검지됨. +', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반 배전반의 VVVFIC nfb 재투입 또는 차량 배터리 전원 재투입', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 FC전압에 이상이 있는지 확인한다. +3) 추진제어장치 내부 고전압부에 소손흔적이 있는지 확인한다. +4) FC에 연결된 부스바의 체결상태가 양호한지 확인한고, 부스바를 분리하여 FC의 Capacitance를 측정하여 이상이 없는지 확인한다. +5) 전압센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +6) SEN 보드의 동작 상태를 시험기를 통해 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지 간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('477a3dfe-9227-45d0-874f-9cc8e5ca1cf4', '0500', '500', 'DCU#1 6위(L3) 통신고장', 'Tc1', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS 간 RS485 통신고장이 검지되면 발생 +', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐상태 등의 변화가 없음.', ' +1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우 +', '해당 차량의 DCU 및 CU/TU의 전원이 정상상태이고, 통신 라인 연결 상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜져 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적 으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는 데도 지속적으로 통신고장이 검지되면, DCU의 X2, X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상 체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('477ec1f7-3cf3-4b3a-8d9b-df752775c0a6', '0415', '415', 'SIV#1-게이트 드라이버 고장, VY1상(GDFVY1)', 'Tc1', 'C', 'SIV-게이트 드라이버 고장, VY1상(GDFVY1)', 'C', 'SIV', '보조전원장치(SIV)의 RS485 데이터 중 SIV-TCMS SD TEXT5의 Bit5 “GDFVY1” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 'GDF VY 1상 이상검지' 표시됨. +2) 보조전원장치(SIV)는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 보조전원장치(SIV) 중고장이 발생됨. +5) 중고장이 발생되면 TCMS 일반화면에 보조전원장치(SIV) 상태 붉을색으로 표기되며, 연장급점 됨.', '보조전원장치(SIV) 내부 GDU에 과전류, 과온이 검지될경우.', '1) 경고장이 발생할 경우 보조전원장치(SIV) 자동 재기동에 의해 재기동 됨. +2) 중고장이 발생할 경우 보조전원장치(SIV) 리셋으로 고장 소거됨.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 보조전원장치(SIV) 고장기록을 수집하여 출력되는 3상의 AC 전류치를 확인함. +3) 특정상의 전류치가 비정상적일 경우 특정상에 해당되는 GDU, 전류센서, 출력단 결선을 확인한다. +4) 전류센서와 보조전원장치(SIV) 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작상태를 시험기를 통해 확인한다. +6) GDU 전원공급기의 전원연결상태 또는 광케이블의 연결상태와 배선상태를 확인한다. +7) 출력단 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('47918ad1-bd13-45f7-ab95-633e34c654fa', '0518', '518', 'DCU#8 1위(R1)-출입문 Enable 신호 에러', 'Tc2', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 "Enable signal error” 신호가 "1"이 되면 검지.', 'DCU 출입문 Enable 신호 에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) 취급시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함.', '해당출입문 enable 신호 수신', '1) AUTO/MCS 모드시에는 YARD모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인한다. (YARD/FMC 모드시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('47944671-1790-4acc-aca7-4668502dc4e0', '0510', '510', 'DCU#7 5위(R3)-출입문 닫힘 리미트 스위치1 고장', 'M4', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 "DCS1 Failure(Leftt)” 신호가 "1"이 되면 검지.', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('47a04a6c-40fa-483b-9a32-62edce5b306d', '1409', '1409', 'BMS#8 - 방전과전류(OCD, 방전220A 이상)', 'Tc2', 'D', 'BMS-방전과전류(OCD)', 'D', 'BMS', '해당 차량의 방전 전류가 180A 이상이 되면 검지 +', '차량 배터리방전과전류검지 후, 220A 이상이면 방전접촉기(DCK)가 차단된다.', '배터리 방전과전류(180A 이상) +', '배터리 방전전류 정상범위로 회복(0 ~ 150A)', '1) 배터리 NFB 상태 확인 +2) 이상이 없으면 차량 전체를 리셋한다. +3) 차량 리셋 후에도 동일고장이면 사령실과 연락하여 조치를 취한다. (외부 충전기 연결 또는 차량 지원)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('47a90834-f373-443e-9ded-a4a1afdfb87e', '0703', '703', 'HVAC#5-냉난방장치1 압축기2 과부하', 'T2', 'C', 'HVAC-냉난방장치1 압축기2 과부하', 'C', 'HVAC', 'HVAC 냉방작동 중 냉난방장치1 압축기2 또는 응축기2 모터에 과부하 발생.', '냉방 기능 저하(전냉방시 반냉방으로 작동)', '1) 냉방작동 중 UNIT1의 압축기2 또는 응축기2 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRCM2와 연결된 THR2가 Trip 됨.', 'UNIT1의 압축기2 또는 응축기2 모터의 과부하 조건을 해소하여 정상 가능 상태로 만들고, THR2 및 마이콤 전원 리셋', '1) 냉난방배전반의 점검커버를 열고, THR2의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR2의 전류 세팅값이 11.5A에 맞춰져 있는지 확인하여, 아닐 경우, 십자 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동 시킨 후, THR2의 2차측 2,4,6 단자에서 각 단자간 상간 전압이 AC 380V으로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 압축기 및 응축기 단품 상태에서 점검을 한다. +7) THR2의 2차측 2,4,6 단자에서 각 단자간 권선저항이 모두 같은지 확인한다. (±10% 이하) (압축기2 및 응축기2 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT1의 압축기1 또는 응축기1 모터의 결선을 해제한 후 각 부품의 권선저항을 확인 후, 문제가 있는 부품을 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR2 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('47b88a62-c74a-41b0-bda6-f5b578b90aeb', '0701', '701', 'HVAC#3 - 냉난방장치2 압축기2 과부하', 'M2', 'C', 'HVAC-냉난방장치2 압축기2 과부하', 'C', 'HVAC', 'HVAC 냉방 작동 중 냉난방장치2 압축기2 또는 응축기2 모터에 과부하 발생 +', '냉방 기능 저하(전냉방 시 반냉방으로 작동)', ' +1) 냉방 작동 중 UNIT2의 압축기2 또는 응축기2 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRCM4와 연결된 THR4가 Trip 됨. +', 'UNIT2의 압축기2 또는 응축기2 모터의 과부하조건을 해소하여 정상 가능 상태로 만들고, THR4 및 마이콤 전원 리셋', '1) 냉난방 배전반의 점검커버를 열고, THR4의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR4의 전류 세팅값이 11.5A에 맞춰져 있는지 확인하여, 아닐 경우, (+) 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동시킨 후, THR4의 2차측 2, 4, 6 단자에서 각 단자 간 상간 전압이 AC 380V로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 압축기 및 응축기 단품 상태에서 점검을 한다. +7) THR4의 2차측 2, 4, 6 단자에서 각 단자 간 권선저항이 모두 같은지 확인한다. (±10% 이하) (압축기2 및 응축기2 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT2의 압축기2 또는 응축기2 모터의 결선을 해제한 후 각 부품의 권선저항을 확인 후, 문제가 있는 부품을 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR4 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('47c638d2-94d8-4d1e-8dfd-0c041ba6591c', '0241', '241', 'BECU#1-1축스키드신호', 'Tc1', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('47e2883a-c05d-46b2-ab9b-6376e610071d', '0506', '506', 'DCU#4 3위(R2) - 출입문 입력 저전압', 'T1', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 “1”이 되면 검지 +', '저전압상태(출입문 동작이 심하게 느려지거나 작동조차 안 될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하 +', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('47e7b818-6fbd-4ad6-b042-9e1572e87471', '0713', '713', 'HVAC#2-냉난방장치1 압력스위치2(DPS) 저압', 'M1', 'D', 'HVAC-냉난방장치1 압력스위치2(DPS) 저압', 'D', 'HVAC', '냉난방장치1 냉매 압력스위치2 저압 발생.', 'UNIT1 CYCLE2 냉방 기능 불가', 'UNIT1 DSP2측 냉매 압력이 3초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우', '냉매 압력이 정상 수치 2±0.5(kgf/cm2 이상으로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CREF2의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)을 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안되는 것을 확인한 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('47e820f8-78e7-402b-b886-ae5660ed540f', '0127', '127', 'VVVF-BCH IGBT 이상검지(GDFB) (Car7)', 'M4', 'C', 'VVVF-BCH IGBT 이상검지(GDFB)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT34의 Bit1 “GDFB” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 'BCH IGBT 이상검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치 내부 IGBT에 과전류 검지될경우.', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반배전반의 VVVFIC nfb 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 제동저항기로 출력되는 전류치 확인함. +3) 전류치가 비정상적일 경우 IGBT, GDU, 전류센서, 제동저항기 결선을 확인한다. +4) 전류센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작상태를 시험기를 통해 확인한다. +6) GDU의 전원연결상태 또는 광케이블의 연결상태와 배선상태를 확인한다. +7) 제동저항기 내부의 이물질 유무를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.71571+00', null, '다대48량(2015)', 'Rotem'), ('47ed46c8-5992-4789-8f20-b03b62e33e3c', '0204', '204', 'BECU#4-응하중 비정상', 'T1', 'C', 'BECU-응하중 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit3 “응하중 비정상” 신호가 "1"이 되면 검지.', '해당 차량 응하중 비정상 검지 현시.', '해당 차량의 응하중 출력이 정상범위를 벗어남.', '해당 차량 응하중 출력이 정상범위로 복귀 시 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('47f01400-4385-46c4-b6f7-9ba7b6c09e8a', '0506', '506', 'DCU#2 1위(R1)-출입문 입력 저전압', 'M1', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 "1"이 되면 검지.', '저전안 상태 (출입문 동작이 심하게 느려지거나 작동조차 안될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('47f42aa1-a490-491b-880d-c4cd76cff349', '0221', '221', 'BECU#7-제동력부족(ISBD)', 'M4', 'B', 'BECU-제동력부족(ISBD)', 'B', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit5 “ISBD” 신호가 "1"이 되면 검지.', '해당 차량 제동력 부족 검지 현시 및 해당 차량 제동압력(BCP)이 타 차량에 비해 현저히 낮음.', '제동 7단 취급 시 해당 차량의 제동압력이 생성되지 않음.', '제동 7단 취급 시 정상적인 제동압력이 생성된 경우 소거.', 'MCS모드로 전환 후, 마스콘을 N(중립) -> 제동7단까지 수회취급 하여 소거 여부 확인. 제동 취급 확인 후, 주의 운전 할 것. +지속발생시 관제보고하고 지시에 따를 것.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('47f7038e-bffa-4054-8ade-bb2a3c01d950', '1100', '1100', 'PSD#8 통신고장', 'Tc2', 'C', 'PSD-통신고장', 'B', 'PSD', 'PSD와 TCMS(CU)간 RS485 통신고장이 검지되면 발생.', '1) 화면상 PSD 열림/닫힘 등이 현시되지 않고, PSD 고장현시됨. +2) 전동차 출입문 닫힘중 재열림 기능이 불가함. +3) 차상장치는 TCMS와 통신이 되지 않아도 출입문 열림/닫힘 기능은 구현된다.', 'PSD 전원 CB OFF 혹은 통신연결 불량', '1) 차상 PSD 리셋 후에도 동일고장이면 사령실과 연락하여 조치를 취한다. +2) 전동차 출입문 닫힘중 재열림 기능이 구현되지 않으므로 재열림 요구시 전동차 출입문 완전히 닫힘후 다시 열림을 시행함.', null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('48011084-ec23-400d-b4ad-cbd177679e24', '0505', '505', 'DCU#8 5위(R3) - 출입문 입력 고전압', 'Tc2', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 “1”이 되면 검지 +', '고전압 상태(그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상 +', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('481a7b59-f9a8-4deb-a6e8-6fe0a54e98bc', '0515', '515', 'DCU#4 6위(L3)-출입문 열림 시간 초과', 'T1', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 "Open time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 열림 동작시간이 6초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도 한 후, '장애물로 인한 열림실패' 고장과 함께 'Open time out' 고장이 함께 현시', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('482b5a61-d306-47d7-aad1-2092566883c1', '0506', '506', 'DCU#3 3위(R2)-출입문 입력 저전압', 'M2', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 "1"이 되면 검지.', '저전안 상태 (출입문 동작이 심하게 느려지거나 작동조차 안될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('482e8999-1b8b-4ddc-929e-0feb677e50fb', '0510', '510', 'DCU#6 3위(R2) - 출입문 닫힘 리미트 스위치1 고장', 'M3', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 “DCS1 Failure(Leftt)” 신호가 “1”이 되면 검지 +', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4834cd70-71b7-4949-8dc6-a2fd7ca0ba77', '0509', '509', 'DCU#5 5위(R3) - 출입문 잠김 리미트 스위치 고장', 'T2', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 “DLS Failure” 신호가 “1”이 되면 검지 +', '출입문 잠김 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('483c7269-2f2d-4ec5-ab1b-1ede2419e79e', '1401', '1401', 'BMS#8 - 배터리 단락', 'Tc2', 'C', 'BMS-배터리 단락', 'C', 'BMS', 'BMS의 RS485 데이터 중 BMS-TCMS SD TEXT2의 Bit0 “배터리 단락” 신호가 “1”이 되면 검지 +', '배터리 Pre-charging 시 배터리 전압보다 낮으면 MasconSW 검지 안 됨.', '배터리 내부 또는 외부회로 단락 +', '배터리 내부 또는 외부회로 단락 해제', '1) 배터리 팩 절연저항 확인한다. +2) 배터리 외부 단락 검사', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4872285b-0806-4526-9f45-25c739328b25', '0501', '501', 'DCU#5 6위(L3) - 출입문 차단', 'T2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('489655cb-0b2b-48a9-8e22-847bf0c52bb8', '1702', '1702', '노선안내표시기#1 고장(Car2)', 'M1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('48b766b3-3e05-4219-bdbb-a837550ca26e', '1505', '1505', '기타장치용 AC 회로차단기 차단(Car4)', 'T1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('48dc72cf-05f8-45b1-b6de-6ac461d87346', '0914', '914', 'TRAIN RADIO#1 - DID(표출연동장치) 고장', 'Tc1', 'C', 'TRAIN RADIO-DID(표출연동장치) 고장', 'C', 'TRS', 'Train Radio의 E-NET 데이터 중 Train Radio-TCMS SD TEXT15의 Bit2 “DID 고장” 신호가 “1”이 되면 +검지 +', 'CCTV 모니터 장치에 열차위치 정보표시 불가', 'HW 고장 +', '제어기 리셋', null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('48e2bb14-154a-4ce5-8569-a711a9fb00d3', '0515', '515', 'DCU#7 2위(L1) - 출입문 열림 시간 초과', 'M4', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 “Open time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 열림 동작시간이 6초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도한 후, ‘장애물로 인한 열림 실패' 고장과 함께 ‘Open time out' 고장이 함께 현시 +', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4909c4b6-7a06-4ad6-b375-65cfcfc68106', '1006', '1006', 'CMSB#1 - 입력 DC 과전압', 'Tc1', 'C', 'CMSB-입력 DC 과전압', 'C', 'CMSB', 'CMSB의 RS485 데이터 중 CMSB-TCMS SD TEXT3의 Bit7 “입력 DC 과전압” 신호가 “1”이 되면 검지 +', '1) TCMS 화면 하단 또는 고장화면에 ‘입력 DC 과전압' 표시됨. +2) 바이패스 모드로 전환되고, CM 기동 시 ‘바이패스 기동'으로 표시됨.', 'CMSB 내 콘덴서(DC-LINK) 충전 전압이 DC750V 이상 일 경우 검지됨. +', '1) 차량 전원 OFF +2) CMSB 내부의 표시기 패널 RESET 버튼 누름', '0) 정상운행 후, 검수고에 입고하여 아래와 같이 조치한다. +1) 상기고장은 고장 소거 후, 재현시험을 진행하여 지속적으로 발생될 경우 아래와 같이 조치한다. +2) 차량 전원 AC 380V를 확인한다. +3) CMSB 제어기에서 DC_LINK 전압을 오검지 하는지 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('490f7b35-152f-43e6-aeb4-7631671c02aa', '0827', '827', '통합제어기(AVC) SSD 2번 고장(Car#1)', 'Tc1', 'C', '통합방송표시기-통합제어기(AVC) SSD 2번고장', 'C', 'TCMS', '통합방송표시기의 RS485 데이터 중 통합방송표시기-TCMS SD TEXT6의 Bit2,3 “AVC SSD 없음” 신호가 "1"이 되면 검지.', 'SSD에 연결되어 있는 카메라 저장 불가능 SSD1번은 1호차 ~ 4호차까지 카메라 8개 저장 SSD2번은 5호차 ~ 8호차까지 카메라 8개 저장', '통합방송제어기에 SSD 인식 불가능', '통합방송제어기에 SSD 인식', 'SSD 점검 +관련도면 없음', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('492e6c59-1c96-4726-bbb5-9547cb265078', '0512', '512', 'DCU#2 3위(R2) - 파라미터 로딩 실패', 'M1', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 “Paraneter error” 신호가 “1”이 되면 검지 +', 'Parametererror 현시(출입문은 정상작동 가능)', 'DCU 자체 내의 EEPROM으로부터 parameter데이터 로딩 실패 +', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('493a211c-e946-47f2-a1e1-44452b7235c2', '0211', '211', 'BECU#3-2축속도신호의 비정상', 'M2', 'C', 'BECU-2축속도신호의 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit2 “2축속도신호의 비정상” 신호가 "1"이 되면 검지.', '해당 차량 2축속도신호의 비정상 검지 현시 및 해당 차량 활주제어 불가.', '해당 차량의 2축 속도센서 고장 발생.', '해당 차량의 2축 속도센서가 정상적일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('495737c3-50cf-42c4-84ab-0f284466c064', '0740', '740', 'HVAC#3-전자접촉기 증발기1(CREF) 고장', 'M2', 'C', 'HVAC-전자접촉기 증발기1(CREF) 고장', 'C', 'HVAC', 'HVAC 냉방작동 중 CREF1 전자접촉기 고장 발생.', 'UNIT1 냉방 작동 불가', '냉방작동 중 2.5초 이상동안 CREF1 작동 feedback 신호가 수신되지 않는 경우', 'CREF1 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CREF1을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CREF1과 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('495a099f-1057-4b08-a69b-f3f2a4cd22cf', '1500', '1500', '출입문 회로차단기 차단(Car7)', 'M4', 'W', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('4964dbb7-21d6-4328-a341-15c4ab29a544', '0889', '889', '출력증폭기#2(AMP) 고장(Car#8)', 'Tc2', 'C', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('497356c0-7d5c-4fac-808b-5b7a4b802c63', '0521', '521', 'DCU#3 3위(R2) - 모듈 상태 이상', 'M2', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 “01” 또는 “00”이 되면 +검지 +', '이중계절체동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러)이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('497bc769-ea6f-4334-a4a1-416d1e48fe94', '0119', '119', 'VVVF-FC 저전압검지(FCLVD) (Car7)', 'M4', 'C', 'VVVF-FC 저전압검지(FCLVD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT32의 Bit6 “FCLVD” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 'FC 저전압검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치 내부 FC전압이 850V 이상일 경우 검지됨.', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반배전반의 VVVFIC nfb 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 FC전압에 이상이 있는지 확인한다. +3) 추진제어장치 내부 고전압부에 소손흔적이 있는지 확인한다. +4) FC에 연결된 버스바의 체결상태가 양호한지 확인한고, 버스바를 분리하여 FC의 Capacitance를 측정하여 이상이 없는지 확인한다. +5) 전압센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +6) SEN 보드의 동작상태를 시험기를 통해 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.71571+00', null, '다대48량(2015)', 'Rotem'), ('4984e4e8-01dd-47c7-863b-98e8210a6c42', '0509', '509', 'DCU#1 1위(R1)-출입문 잠김 리미트 스위치 고장', 'Tc1', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 "DLS Failure” 신호가 "1"이 되면 검지.', '출입문 잠김 상태 확인 불가', '1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('49860553-5988-4b76-ad28-c97e59e02bbc', '0512', '512', 'DCU#8 5위(R3) - 파라미터 로딩 실패', 'Tc2', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 “Paraneter error” 신호가 “1”이 되면 검지 +', 'Parametererror 현시(출입문은 정상작동 가능)', 'DCU 자체 내의 EEPROM으로부터 parameter데이터 로딩 실패 +', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4990b348-d86c-4f58-9e53-14e1d08d694a', '0517', '517', 'DCU#6 5위(R3)-출입문 장애물로 인한 열림 실패', 'M3', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Open failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘상태로 대기', '도어 열림 중 3회 장애물 감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 열림 시, 장애물 감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('499ce0a8-a666-43f1-aa97-66ef39e19d43', '0519', '519', 'DCU#2 4위(L2)-ZVR 신호 에러', 'M1', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 "ZVR signal error” 신호가 "1"이 되면 검지.', '출입문이 강제로 닫히게 되고, 열림은 불가능', '1) 차량 ZVR 신호가 없는 상태 (차량 주행상태) 에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함.', '해당출입문 ZVR 신호 수신', '1) 차량이 주행중이라면, 차량이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.392739+00', null, '로템40량(2018)-1단계', 'Rotem'), ('499e3647-3cd0-4f4e-b4e2-526b413fba57', '0501', '501', 'DCU#1 6위(L3) - 출입문 차단', 'Tc1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('49a30e5e-ab2b-483e-b131-6a26ce9102e2', '0516', '516', 'DCU#6 2위(L1)-출입문 장애물로 인한 닫힘 실패', 'M3', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Close failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림상태로 대기', '도어 닫힘 중 3회 장애물 감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('49b6bad3-5db5-4fff-a957-54c05281d617', '0520', '520', 'DCU#8 3위(R2) - 이중계 절체 동작', 'Tc2', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 “Module switchover” 신호가 “1”이 되면 검지 +', '이중계 절체 동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러) 이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A'모듈 및 ‘B'모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('49e47902-133a-4679-b4a7-d3915cab30bd', '1505', '1505', '기타장치용 AC 회로차단기 차단(Car5)', 'T2', 'W', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('49fb5f0e-46e7-45fb-ada6-8c595e1498f6', '0732', '732', 'HVAC#4-실외온도 센서1 고장', 'T1', 'C', 'HVAC-실외온도 센서 고장', 'C', 'HVAC', '실외온도 센서 고장 발생', '실외온도 센서 고장현시', '온도센서 검지범위는 -45~85도 (820~1330옴) 인데, 2초 이상 검지범위를 벗어나는 경우', '온도센서 검지 값이 2초 이상 허용온도 범위 내 일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820~1330옴 을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우, 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('4a07e54f-5ce0-4411-aae8-6a3116977ecb', '1202', '1202', 'FDU#4 - 감지기1 고장', 'T1', 'C', 'FDU-감지기1 고장 (Car1~8)', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 “Detector1 State” 신호가 “10”이 되면 검지 +', '감지기고장상태현시(자동소거 안 됨)', ' +1) 감지기로부터 데이터 응답이 없는 경우 +2) 감지기로부터 수신된 데이터의 CRC가 맞지 않는 경우 +3) 감지기로부터 수신된 데이터의 ID가 송신 ID와 일치하지 않는 경우 +', 'FDU 전원 리셋 후 감지기로부터 정상적으로 데이터가 수신된 경우', '1) FDU 전원 리셋 후 고장 소거 여부 확인 +2) 정상동작중인 감지기와 위치 교환 후 FDU 전원 리셋 및 고장 상태 확인 +3) 동일한 감지기에서 고장 발생 시 감지기 교체 +4) 동일한 위치에서 고장 발생 시 감지기 라인 점검', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4a0bdd0b-6137-4d06-abe5-8843392402f2', '0230', '230', 'ECU 전원공급 고장(Car6)', 'M3', 'B', 'ECU 전원공급 고장', 'B', 'BECU', '해당 차량의 ECU 전원공급 고장(CB OFF) 발생 시 검지 +', '해당 차량의 ECU 전원공급 고장검지 현시', '해당 차량의 ECU 전원차단(CBOFF) +', '해당 차량의 ECU 전원공급(CBON)', 'BECU를 리셋(BECUCBOFF/ON)하여 소거 여부 확인, 지속적으로 고장 발생 시 관제 보고하고 지시에 따를 것', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4a0d78f1-09c9-44ac-a685-c1b427ba6c98', '0225', '225', 'BECU#2 - 강제완해검지(CPRD)', 'M1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4a1289ad-a11c-4a6b-b26f-c88f68fa32f8', '0513', '513', 'DCU#7 1위(R1) - 모듈 상태체크 에러', 'M4', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 “Module check error” 신호가 “1”이 되면 검지 +', 'Modulecheckerror현시(출입문은 정상작동가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태 체크 기능에 이상이 생긴 경우 고장 발생 +', 'DCU의 ‘A' 모듈과 ‘B' 모듈 간, 상태 체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4a1b0bcf-d590-4775-bc5a-3bacae87c4e0', '0506', '506', 'DCU#8 6위(L3) - 출입문 입력 저전압', 'Tc2', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 “1”이 되면 검지 +', '저전압상태(출입문 동작이 심하게 느려지거나 작동조차 안 될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하 +', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4a1b14c3-d7ed-4805-a62d-eda2b1590ba4', '0714', '714', 'HVAC#1-냉난방장치1 압력스위치2(DPS) 고압', 'Tc1', 'D', 'HVAC-냉난방장치1 압력스위치2(DPS) 고압', 'D', 'HVAC', '냉난방장치1 냉매 압력스위치2 고압 발생.', 'UNIT1 CYCLE2 냉방 기능 불가', 'UNIT1 DSP2측 냉매 압력이 3초 이상 28±1(kgf/cm2) 이상 되는 경우', '냉매 압력이 정상 수치 15±0.7(kgf/cm2 이하로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CRCM2의 부하측 전류를 측정하여 응축기 팬의 동작여부를 확인한다. +2) 응축기 코일의 전면에 이물질로 인한 막힘이 있는지 확인한다. +3) 응축기 팬 상부 그릴에 외부 이물질로 인한 막힘이 있는지 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('4a2d31a9-ef50-4ce1-859e-88e2372e8cbc', '0518', '518', 'DCU#7 4위(L2)-출입문 Enable 신호 에러', 'M4', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 "Enable signal error” 신호가 "1"이 되면 검지.', 'DCU 출입문 Enable 신호 에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) 취급시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함.', '해당출입문 enable 신호 수신', '1) AUTO/MCS 모드시에는 YARD모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인한다. (YARD/FMC 모드시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('4a2e8ea0-aa84-44a8-a3be-11e0ddb12cef', '0512', '512', 'DCU#1 3위(R2)-파라미터 로딩 실패', 'Tc1', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 "Paraneter error” 신호가 "1"이 되면 검지.', 'Parameter error 현시 (출입문은 정상작동 가능)', 'DCU 자체내의 EEPROM으로부터 parameter 데이터 로딩 실패', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('4a2ec1a8-4c6f-4ac3-9032-3e3ae52870ae', '0515', '515', 'DCU#5 4위(L2)-출입문 열림 시간 초과', 'T2', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 "Open time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 열림 동작시간이 6초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도 한 후, '장애물로 인한 열림실패' 고장과 함께 'Open time out' 고장이 함께 현시', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('4a32bd40-b460-456a-b0cf-a22fba91230f', '0515', '515', 'DCU#5 5위(R3) - 출입문 열림 시간 초과', 'T2', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 “Open time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 열림 동작시간이 6초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도한 후, ‘장애물로 인한 열림 실패' 고장과 함께 ‘Open time out' 고장이 함께 현시 +', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4a5d5df4-4789-47cd-8248-d053d572db70', '0202', '202', 'BECU#2-덤프밸브고장(전두대차)', 'M1', 'C', 'BECU-덤프밸브고장(선두대차)', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit1 “덤프밸브고장(선두대차)” 신호가 "1"이 되면 검지.', '해당 차량 덤프밸브고장(선두대차) 검지 현시 및 해당 차량 활주제어 불가.', '해당 차량 선두대차의 덤프밸브가 작동하지 않음.', '해당 차량 선두대차의 덤프밸브가 정상 작동 시 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('4a6267ec-bb65-4a63-8fe6-5c1d7e0dae4f', '0518', '518', 'DCU#7 1위(R1)-출입문 Enable 신호 에러', 'M4', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 "Enable signal error” 신호가 "1"이 되면 검지.', 'DCU 출입문 Enable 신호 에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) 취급시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함.', '해당출입문 enable 신호 수신', '1) AUTO/MCS 모드시에는 YARD모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인한다. (YARD/FMC 모드시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('4a63b59a-7808-4c6b-a95d-466f1d4ba4b1', '0705', '705', 'HVAC#6 - 냉난방장치2 증발기2 과부하', 'M3', 'C', 'HVAC-냉난방장치2 증발기2 과부하', 'C', 'HVAC', 'HVAC 냉방 작동 중 냉난방장치2 증발기 모터에 과부하 발생 +', 'UNIT2냉방기능불가', ' +1) 냉방 작동 중 UNIT2의 증발기 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CREF4와 연결된 THR8이 Trip 됨. +', 'UNIT2의 증발기모터의 과부하조건을 해소하여 정상 가능 상태로 만들고, THR8 및 마이콤 전원 리셋', '1) 냉난방 배전반의 점검커버를 열고, THR8의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR8의 전류 세팅값이 3A에 맞춰져 있는지 확인하여, 아닐 경우, (+) 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동시킨 후, THR8의 2차측 2, 4, 6 단자에서 각 단자 간 상간 전압이 AC 380V로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 증발기 단품 상태에서 점검을 한다. +7) THR8의 2차측 2, 4, 6 단자에서 각 단자 간 권선저항이 모두 같은지 확인한다. (±10% 이하) (증발기 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT2의 증발기 모터의 결선을 해제한 후 4극 및 6극 모터의 권선저항을 확인 후, 문제가 있을 경우, 증발기 모터를 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR8 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4a714727-9299-435f-9bde-26495e168d21', '0504', '504', 'DCU#8 4위(L2) - 출입문 외부 비상핸들 취급(EAD)', 'Tc2', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4a758411-1e82-46ad-a744-6938a1aa74c1', '0518', '518', 'DCU#6 1위(R1) - 출입문 Enable 신호 에러', 'M3', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 “Enable signal error” 신호가 “1”이 되면 검지 +', 'DCU 출입문Enable신호에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드 시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을 때(출입문 열림 버튼 취급 또는 신호장치로부터의 출���문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드 시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입 상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호 장치로부터의 출입문 열림 명령 신호) 취급 시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함. +', '해당 출입문 enable 신호수신', '1) AUTO/MCS 모드 시에는 YARD 모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인 한다. (YARD/FMC 모드 시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4a759788-981a-4718-8fca-0127a36d59d1', '0401', '401', 'SIV#8 중고장', 'Tc2', 'B', 'SIV-중고장', 'B', 'SIV', '보조전원장치(SIV)의 RS485데이터 중 SIV-TCMS SD TEXT3의 Bit6 "SIV CUT"신호가 "1"이 되면 검지.', '1) 보조전원장치(SIV) 일반화면에 보조전원장치 상태 붉은색으로 표시됨. +2) 반대편 TC CAR의 보조전원장치(SIV)가 정상동작이면 자동 연장급전 됨.. +3) 연장급전 시 편성의 에어컨 반냉, AC등구류 절감 등의 현상이 나타남.', '1) 보조전원장치(SIV)의 경고장이 3분에 3회 이상누적또는 지속적으로 검지되어 중고장 발생함. +2) 과온고장, 접지고장에 대해서는 1번 발생으로 중고장 발생함.', '보조전원장치(SIV) 리셋 실시 후 고장 소거됨. 단 고장소거 후 재기동시 동일고장이 발생할 경우 다시 중고장 발생함.', '1) 보조전원장치(SIV) 리셋 실시 후 중고장을 소거됨을 확인함. +2) 단 주회로 접지고장, THF 고장에 대해서는 리셋 불가함. +3) TCMS 고장데이터 또는 보조전원장치(SIV) 고장 데이터를 통해 중고장이 발생한 고장 내역 수집함. +4) 수집된 고장내역에 따라 조치 실시함.', null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('4a788f9e-56c3-480a-b610-988671a74742', '1412', '1412', 'BMS#1-방전저온(DUT, -20도이하)', 'Tc1', 'D', 'BMS-방전저온(DUT)', 'D', 'BMS', '해당차량의 배터리 온도가 -25도이하가 되면 검지', '차량 배터리 방전저온 검지 후, -35도이하이면 충전 접촉기(CK)가 차단된다.', '배터리 방전저온 (-20도 이상).', '배터리 방전저온 정상범위로 회복 (-20도 이상)', '1) 배터리 NFB 상태 확인 +2) 이상이 없으면 차량 전체를 리셋한다. +3) 차량 리셋 후에도 동일고장이면 사령실과 연락하여 조치를 취한다 (배터리를 상온조건으로 만든다.)', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('4a87a75a-c20d-4960-b911-6db42a7e36e5', '0148', '148', 'VVVF#7-FC 과전압검지(OVD1)', 'M4', 'C', 'VVVF-FC 과전압검지(OVD1)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT30의 Bit5 “OVD1” 신호가 "1"이 되면 검지.', null, '필터캐패시터의 전압이 2000V 이상 승압 시 고장발생.', '1) 경고장 +역행 고장검지 3초 후 자동 재기동 +제동 제동 OFF시 고장 소거 +2) 중고장 +동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 FC전압에 이상이 있는지 확인한다. +3) 추진제어장치 내부 고전압부에 소손흔적이 있는지 확인한다. +4) FC에 연결된 버스바의 체결상태가 양호한지 확인한고, 버스바를 분리하여 FC의 Capacitance를 측정하여 이상이 없는지 확인한다. +5) 전압센서의 외관 및 단자 체결상태를 확인한다. +6) 추진제어장치 시험기를 이용하여 TCU(통합제어장치)의 이상여부를 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('4a883729-de75-458d-a410-1889c8019f63', '0723', '723', 'HVAC#4-냉난방장치1 압력스위치2(DPS) 냉매부족', 'T1', 'C', 'HVAC-냉난방장치1 압력스위치2(DPS) 냉매부족', 'C', 'HVAC', '냉난방장치1 냉매 압력스위치2 저압 발생.', 'UNIT1 CYCLE2 냉방 기능 불가', 'UNIT1 DSP2측 냉매 압력이 30초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우', '냉매 압력이 정상 수치 2±0.5(kgf/cm2 이상 유지하도록 하고, 마이콤 전원을 리셋', '1) 배전반 점검 커버를 열고 마이콤 전원을 리셋한 후, 냉방 가동 시, CREF2의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)을 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안되는 것을 확인한 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('4a92a089-0afb-4c37-83c4-5e435a10601d', '0508', '508', 'DCU#5 4위(L2) - 출입문 모터/인코더 고장', 'T2', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 “Motor / Encoder failure” 신호가 “1”이 되면 +검지 +', '출입문 정상동작 불가', ' +1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우(인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터/인코더 회로 가 손상된 경우 +', '모터/인코더 및 DCU가 정상 상태이고, 전기적 연결 상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있는지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. ※ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. ? DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. ? DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) ? DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4ab68423-04fb-4f42-a998-10068efc3e5b', '0238', '238', 'BECU#5-4축스키드신호', 'T2', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('4ac04e9f-2adb-45cc-bea7-c9bde89d2f49', '0402', '402', 'SIV#1 - 배터리 충전기 출력과전류(BCOC)', 'Tc1', 'C', 'SIV-배터리 충전기 출력 과전류(BCOC)', 'C', 'SIV', '보조전원장치(SIV)의 RS485 데이터 중 SIV-TCMS SD TEXT4의 Bit0 “BCOC” 신호가 “1”이 되면 +검지 +', '1) TCMS 화면하단 또는 고장화면에 ‘배터리 충전기 출력 과전류 검지' 표시됨. +2) 보조전원장치(SIV)는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 보조전원장치 중고장이 발생됨. +5) 중고장이 발생되면 TCMS 일반화면에 보조전원장치 상태 붉은색으로 표기되며, 연장급전 됨.', '보조전원장치(SIV)의 배터리 충전부에서 출력되는 DC 전류가 300A 이상일 경우 검지됨. +', '1) 경고장이 발생할 경우 보조전원장치(SIV) 자동 재기동에 의해 재기동 됨. +2) 중고장이 발생했을 경우 조치 완료 후 보조전원장치(SIV) 리셋으로 고장 소거됨.', '1) 상기 고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 보조전원장치(SIV) 고장기록을 수집하여 배터리 충전부에서 출력되는 DC 전류치 확인함. +3) 전류치가 비정상적일 경우 전류센서, DC 출력단 결선을 확인한다. +4) 전류센서와 보조전원장치(SIV) 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작 상태를 시험기를 통해 확인한다. +6) 출력단의 절연상태 및 접지 간의 절연상태를 확인한다. +7) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4acfc0b8-19f3-4bc1-8dca-2a5ba5a5b584', '0420', '420', 'SIV#1 - 인버터2 입력과전류(INV2OC)', 'Tc1', 'C', 'SIV-인버터2 입력 과전류(INV2OC)', 'C', 'SIV', '보조전원장치(SIV)의 RS485 데이터 중 SIV-TCMS SD TEXT6의 Bit5 “INV2OC” 신호가 “1”이 되면 검지 +', '1) TCMS 화면하단 또는 고장화면에 ‘인버터2 입력 과전류' 표시됨. +2) 보조전원장치(SIV)는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 보조전원장치 중고장이 발생됨. +5) 중고장이 발생되면 TCMS 일반화면에 보조전원장치 상태 붉은색으로 표기되며, 연장급전 됨.', '보조전원장치(SIV) 내부인버터2에서의 전류가 450A 이상일 경우 검지됨. +', '1) 경고장이 발생할 경우 보조전원장치(SIV) 자동 재기동에 의해 재기동 됨. +2) 중고장이 발생했을 경우 조치 완료 후 보조전원장치(SIV) 리셋으로 고장 소거됨.', '1) 상기 고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 보조전원장치(SIV) 고장기록을 수집하여 FC전압, 전류에 이상이 있는지 확인한다. +3) 보조전원장치(SIV) 내부 고전압부에 소손흔적이 있는지 확인한다. +4) FC에 연결된 부스바의 체결상태가 양호한지 확인한고, 부스바를 분리하여 FC의 Capacitance를 측정하여 이상이 없는지 확인한다. +5) 전압센서와 보조전원장치(SIV) 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +6) SEN 보드의 동작 상태를 시험기를 통해 확인한다. +7) 출력단 각상의 절연상태 및 각상과 접지 간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4ad0846b-2fa2-4edc-bcc5-624dd7fa0073', '0514', '514', 'DCU#5 5위(R3) - 출입문 닫힘 시간 초과', 'T2', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 “Close time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 닫힘 동작 시간이 7초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도한 후, ‘장애물로 인한 닫힘 실패' 고장과 함께 ‘Close time out' 고장이 함께 현시 +', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4ad31490-6fbd-44c5-9793-28b38984774d', '0213', '213', 'BECU#4-AC 압력센서고장', 'T1', 'C', 'BECU-AC 압력센서 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit4 “AC 압력센서 고장” 신호가 "1"이 되면 검지.', '해당 차량 공기제동장치고장, AC압력센서 고장 검지 현시 및 해당 차량 제동제어 불가.', '해당 차량의 AC압력센서 고장.', '해당 차량의 AC압력센서가 정상일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('4ad78d84-e757-446d-81ca-3fda6d8fb582', '1202', '1202', 'FDU#5 - 감지기1 고장', 'T2', 'C', 'FDU-감지기1 고장 (Car1~8)', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 “Detector1 State” 신호가 “10”이 되면 검지 +', '감지기고장상태현시(자동소거 안 됨)', ' +1) 감지기로부터 데이터 응답이 없는 경우 +2) 감지기로부터 수신된 데이터의 CRC가 맞지 않는 경우 +3) 감지기로부터 수신된 데이터의 ID가 송신 ID와 일치하지 않는 경우 +', 'FDU 전원 리셋 후 감지기로부터 정상적으로 데이터가 수신된 경우', '1) FDU 전원 리셋 후 고장 소거 여부 확인 +2) 정상동작중인 감지기와 위치 교환 후 FDU 전원 리셋 및 고장 상태 확인 +3) 동일한 감지기에서 고장 발생 시 감지기 교체 +4) 동일한 위치에서 고장 발생 시 감지기 라인 점검', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4ad7b488-7822-4a9a-ba10-4ad2ffa60753', '0900', '900', '비상인터폰 동작(Car#4 - 1)', 'T1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4ade2477-f568-4d7c-82c6-ca0f64b9cafe', '761', '761', 'CAB HVAC#1 - 외기센서 이상', 'Tc1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4af29c60-9cff-408e-a3b5-1817df586756', '0751', '751', 'HVAC#1 - 냉난방장치1 보조히터 과열', 'Tc1', 'C', 'HVAC-냉난방장치1 보조히터 과열', 'C', 'HVAC', 'HVAC1 보조난방기 작동 중 과열 발생 +', 'UNIT1보조난방기난방불가', '보조난방기 작동 중 1초 이상 동안 온도가 70도 이상으로 과온 센서 정상신호가 수신 되지 않는 경우 +', '1초 이상 동안 60도 미만으로 온도가 떨어져 과온 센서 정상신호가 수신되는 경우', '1) 보조난방기가 꺼진 상태에서도 문제 발생 시, 과온 센서를 교체한다. +2) 센서 교체 후에도 문제가 발생되면, 배선에 문제가 없는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4afa578d-6086-454b-a5a1-16aaa5d9337a', '0719', '719', 'HVAC#6 - 실내온도 센서2 고장', 'M3', 'C', 'HVAC-실내온도 센서2 고장', 'C', 'HVAC', '객실 실내 온도센서2 고장 발생 +', '실내 온도센서2 고장현시', '온도센서 검지범위는 -45 ~ 85도(820 ~ 1,330Ω)인데, 2초 이상 검지범위를 벗어나는 경우 +', '온도센서 검지값이 2초 이상 허용온도 범위 내일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820~1,330Ω을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4afb9b1f-d0df-48ee-9670-1f90c8952129', '0518', '518', 'DCU#1 5위(R3)-출입문 Enable 신호 에러', 'Tc1', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 "Enable signal error” 신호가 "1"이 되면 검지.', 'DCU 출입문 Enable 신호 에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) 취급시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함.', '해당출입문 enable 신호 수신', '1) AUTO/MCS 모드시에는 YARD모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인한다. (YARD/FMC 모드시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.392739+00', null, '로템40량(2018)-1단계', 'Rotem'), ('4b005802-c7af-4f9c-9343-d471e5765141', '0511', '511', 'DCU#4 4위(L2)-출입문 닫힘 리미트 스위치2 고장', 'T1', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 "DCS2 Failure(Right)” 신호가 "1"이 되면 검지.', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('4b09a9c4-d70b-44ee-aac9-d2eefd756727', '0518', '518', 'DCU#8 3위(R2)-출입문 Enable 신호 에러', 'Tc2', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 "Enable signal error” 신호가 "1"이 되면 검지.', 'DCU 출입문 Enable 신호 에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) 취급시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함.', '해당출입문 enable 신호 수신', '1) AUTO/MCS 모드시에는 YARD모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인한다. (YARD/FMC 모드시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('4b0e023e-4a5d-432e-a40f-0db9dc4bee85', '0708', '708', 'HVAC#1-냉난방장치1 증발기1 과부하', 'Tc1', 'C', 'HVAC-냉난방장치1 증발기1 과부하', 'C', 'HVAC', 'HVAC 냉방작동 중 냉난방장치1 증발기 모터에 과부하 발생.', 'UNIT1 냉방 작동 불가', '1) 냉방작동 중 UNIT1의 증발기 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CREF1과 연결된 THR5가 Trip 됨.', 'UNIT1의 증발기 모터의 과부하 조건을 해소하여 정상 가능 상태로 만들고, THR5 및 마이콤 전원 리셋', '1) 냉난방배전반의 점검커버를 열고, THR5의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR5의 전류 세팅값이 3A에 맞춰져 있는지 확인하여, 아닐 경우, 십자 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동 시킨 후, THR5의 2차측 2,4,6 단자에서 각 단자간 상간 전압이 AC 380V으로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 증발기 단품 상태에서 점검을 한다. +7) THR5의 2차측 2,4,6 단자에서 각 단자간 권선저항이 모두 같은지 확인한다. (±10% 이하) (증발기 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT2의 증발기 모터의 결선을 해제한 후 4극 및 6극 모터의 권선저항을 확인 후, 문제가 있을 겨우, 증발기 모터를 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR5 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('4b22012a-85b8-4f4f-87dc-a34cbd4dd4d0', '0511', '511', 'DCU#5 4위(L2)-출입문 닫힘 리미트 스위치2 고장', 'T2', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 "DCS2 Failure(Right)” 신호가 "1"이 되면 검지.', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('4b2b6148-a2d1-43ad-b234-7161c658609f', '0219', '219', 'BECU#7-제동지령 비정상', 'M4', 'C', 'BECU-제동지령 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit2 “제동지령 비정상” 신호가 "1"이 되면 검지.', '해당 차량 제동지령 비정상 검지 현시 및 해당차량 정상적인 제동제어 불가. (상용제동지령에 따른 제어)', '해당 차량의 제동지령 신호가 정상범위를 벗어남(5.0~95.0%).', '해당 차량의 제동지령 신호가 정상범위일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. +소거되지 않을 경우 해당 선택 운전실의 PWM 엔코더를 리셋(CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('4b38f5c4-7c02-4fd5-bcbe-2d1edc4a9717', '0231', '231', 'BC 코크(차상) 차단(Car5)', 'T2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4b3e2e7c-4d9a-4b35-b59f-307a1f909b5f', '1520', '1520', 'TU 모듈고장 - AUX3(Car4)', 'T1', 'C', 'TU 모듈고장 - AUX3', 'C', 'TCMS', 'TU의 AUX3 PCB가 이 정상적으로 인식되지 않아 점검이 필요할 때 +', '1) TU의 AUX PCB가 모듈 고장이 발생하면, 해당 TU의 모든 디지털 출력 불가 +2) 해당 차량의 실내등 제어 및 라인플로우팬 제어 불가 +3) 해당 TU가 M1 차량 인 경우 판토제어 상승/하강 변경 불가(판토 및 공기압축기 제어) +4) 해당 TU가 T1 차량 인 경우 연장급전상태 제어 불가', 'TU AUX3의 ID를 정상적으로 검출하지 못할 때 화면에 현시 +', 'TU AUX3의 ID를 정상적으로 검출하는 경우 소거됨.', '1) TU의 AUX3 PCB 교체 +2) 불량 해소가 되지 않을 경우, 순차적으로 SCM, DIM PCB를 교체하여 정상여부 확인', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4b46441d-b3e2-4de3-95c4-b700671bfe65', '0521', '521', 'DCU#4 6위(L3)-모듈 상태 이상', 'T1', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 "01"또는 "00"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('4b4a0e58-e909-4366-8c11-7ad4b702e968', '0210', '210', 'BECU#1-3축속도신호의 비정상', 'Tc1', 'C', 'BECU-3축속도신호의 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit1 “3축속도신호의 비정상” 신호가 "1"이 되면 검지.', '해당 차량 3축속도신호의 비정상 검지 현시 및 해당 차량 활주제어 불가.', '해당 차량의 3축 속도센서 고장 발생.', '해당 차량의 3축 속도센서가 정상적일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('4b539a9b-68cc-4c8c-a366-ece1cbd53582', '0500', '500', 'DCU#5 3위(R2) 통신고장', 'T2', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS 간 RS485 통신고장이 검지되면 발생 +', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐상태 등의 변화가 없음.', ' +1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우 +', '해당 차량의 DCU 및 CU/TU의 전원이 정상상태이고, 통신 라인 연결 상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜져 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적 으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는 데도 지속적으로 통신고장이 검지되면, DCU의 X2, X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상 체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4b58b555-1023-4518-9d38-fcd89c0c8dbc', '0750', '750', 'HVAC#5 - 냉난방장치2 보조히터 과열', 'T2', 'C', 'HVAC-냉난방장치2 보조히터 과열', 'C', 'HVAC', 'HVAC2 보조난방기 작동 중 과열 발생 +', 'UNIT2 보조난방기난방불가', '보조난방기 작동 중 1초 이상 동안 온도가 70도 이상으로 과온 센서 정상신호가 수신 되지 않는 경우 +', '1초 이상 동안 60도 미만으로 온도가 떨어져 과온 센서 정상신호가 수신되는 경우', '1) 보조난방기가 꺼진 상태에서도 문제 발생 시, 과온 센서를 교체한다. +2) 센서 교체 후에도 문제가 발생되면, 배선에 문제가 없는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4b5a9c21-847e-480e-bab9-0c1bf950f454', '1500', '1500', '출입문 회로차단기 차단(Car4)', 'T1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4b5c19b6-da3d-4e13-9898-2f55c590fecc', '0510', '510', 'DCU#4 1위(R1)-출입문 닫힘 리미트 스위치1 고장', 'T1', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 "DCS1 Failure(Leftt)” 신호가 "1"이 되면 검지.', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('4b5e198d-235a-4382-8aff-c6f1aef0660c', '0501', '501', 'DCU#8 3위(R2)-출입문 차단', 'Tc2', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('4b601551-d763-4d2c-a30f-6f362f82cb03', '0504', '504', 'DCU#3 6위(L3)-출입문 외부비상핸들 취급(EAD)', 'M2', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('4b681e75-5b35-485f-b9bc-1780fc98f089', '0228', '228', 'BC 코크(차하#1) 차단(Car3)', 'M2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4b734409-222f-4fd9-b0b3-b3c7d1275bab', '0508', '508', 'DCU#4 3위(R2) - 출입문 모터/인코더 고장', 'T1', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 “Motor / Encoder failure” 신호가 “1”이 되면 +검지 +', '출입문 정상동작 불가', ' +1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우(인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터/인코더 회로 가 손상된 경우 +', '모터/인코더 및 DCU가 정상 상태이고, 전기적 연결 상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있는지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. ※ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. ? DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. ? DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) ? DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4b8998e9-7238-410b-bccc-f6a91fb006b4', '0152', '152', 'VVVF#3 - 제동패턴 이상검지(BPD)', 'M2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4b9223b1-766b-41c7-bcca-29cd3e4562d0', '0504', '504', 'DCU#1 6위(L3)-출입문 외부비상핸들 취급(EAD)', 'Tc1', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('4b95136b-3ba2-491e-9c7c-99b0223cd8de', '0851', '851', '실내카메라#1(SCAM) 고장(Car#5)', 'T2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4ba54722-8e95-4649-9fa2-a74157ad6b1d', '1504', '1504', '냉방장치용 AC 회로차단기 차단(Car5)', 'T2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4ba998a8-b7d4-462e-8ae6-790b4f29adcf', '0520', '520', 'DCU#4 2위(L1)-이중계 절체 동작', 'T1', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 "Module switchover' 신호가 "1"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.392739+00', null, '로템40량(2018)-1단계', 'Rotem'), ('4baa95e2-47f8-4b92-b3a4-0a08debe6563', '0515', '515', 'DCU#5 2위(L1)-출입문 열림 시간 초과', 'T2', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 "Open time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 열림 동작시간이 6초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도 한 후, '장애물로 인한 열림실패' 고장과 함께 'Open time out' 고장이 함께 현시', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('4badcceb-73d8-41c2-af95-ef8b76f3d162', '0517', '517', 'DCU#8 2위(L1)-출입문 장애물로 인한 열림 실패', 'Tc2', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Open failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘상태로 대기', '도어 열림 중 3회 장애물 감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 열림 시, 장애물 감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('4bb22fa3-d973-403e-8eb4-6dd9dfeed34a', '0514', '514', 'DCU#3 1위(R1) - 출입문 닫힘 시간 초과', 'M2', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 “Close time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 닫힘 동작 시간이 7초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도한 후, ‘장애물로 인한 닫힘 실패' 고장과 함께 ‘Close time out' 고장이 함께 현시 +', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4bb9a631-3cbd-41e3-8c6e-e13c908b13ed', '0717', '717', 'HVAC#4 - CO2 센서2 고장', 'T1', 'C', 'HVAC-CO2 센서2 고장', 'C', 'HVAC', '객실 CO2 센서2 고장 발생 +', 'CO2 센서2 고장 현시', 'CO2 센서의 검지범위는 0 ~ 4,000ppm(2 ~ 10Vdc)인데, 1초 이상 출력전압이 2Vdc(0ppm) 미만으로 떨어지는 경우 +', 'CO2 센서 검지값이 1초 이상 2Vdc(0ppm) 이상 지속되는 경우', '1) 전원을 인가한 상태에서 CO2 센서 커버를 열고 테스터기를 통해 ‘OUT2' 단자와 ‘G' 단자 간의 전압이 2Vdc 미만인지 확인한다. +2) 만약 전압이 2Vdc 이상인데도 고장이 지속될 경우 마이콤을 교체한다. +3) 만약 전압이 2Vdc 미만으로 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4bc272ad-d08f-4c23-a818-1afebea62c2f', '0235', '235', '제동력부족(ISBD, Car6)', 'M3', 'B', '제동력부족(ISBD)', 'B', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit3 “ISBD” 신호가 "1"이 되면 검지.', '해당 차량 제동력 부족 검지 현시 및 해당 차량 제동압력(BCP)이 타 차량에 비해 현저히 낮음.', '제동 7단 취급 시 해당 차량의 제동압력이 생성되지 않음.', '제동 7단 취급 시 정상적인 제동압력이 생성된 경우 소거.', 'MCS모드로 전환 후, 마스콘을 N(중립) -> 제동7단까지 수회취급 하여 소거 여부 확인. 제동 취급 확인 후, 주의 운전 할 것. +지속발생시 관제보고하고 지시에 따를 것.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('4bd662dd-9a22-4ad7-b785-c4ae038e9f4b', '1522', '1522', 'TCMS 데이타버스1 좌측라인 통신 이상(Car6)', 'M3', 'C', 'TCMS 데이터버스1 좌측라인 통신 이상', 'C', 'TCMS', 'TCMS의 초기 기동 시 자기진단에 의한 2중계 메인통신선 중 1계 메인통신 이상 검지 시 +', '1) SL-NET 2중계이므로 데이터버스 2계로 정상통신, 운행에 지장 없음. +2) 초기기동 자기진단 시 2중계를 점검하여 1계측의 이상이 검지되었다는 점검 필요용 메시지', '초기 기동 시 SL-NET 1계와 2계를 각각 통신 후 비교하여 2계는 정상통신이 되나 1계는 정상통신이 안 되는 경우 +', '정상 수리 후 차량 전체 재기동하여 SL-NET 1계와 2계 모두 정상통신이 되는 경우', '1) 고장검출호차와 고장검출 좌측호차와의 SL-NET 통신 1계 정상여부 확인(예 : 고장호차가 3호차인 경우 1-2-3-4-5-6-7-8에서 3호차의 좌측, 즉 2-3호차 간 SL-NET 1계 통신 상태 점검 필요) +2) 고장검지호차의 SCM PCB 교체 정상여부 확인 +3) 고장검지호차의 좌측호차 SCM PCB 교체 정상여부 확인 +4) 고장검지호차와 고장검지 좌측호차의 SL-NET 1계 메인통신 배선의 연결 상태 확인 +5) 상기 2 ~ 4번 점검에도 정상적으로 복귀되지 않는 경우, CU/TU ASS'Y 교체(백보드 확인 필요)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4be8ad65-56d5-4f9f-b707-4b78732d910a', '0066', '66', 'MAIN FUSE#2 DISCONNECTED(Car3)', 'M2', 'W', 'MAIN FUSE#2 DISCONNECTED(Car3)', 'W', 'TCMS', '차량으로부터 AUX FUSE DISCONNECTED 신호 입력시', 'VVVF고압 차단으로 추진 불능', '해당 퓨우즈 소손', '해당 퓨우즈 교체', null, ' +REC20210HN0', '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('4bf435f7-3b9c-42e3-98e3-14ca442476bb', '0717', '717', 'HVAC#2-CO2 센서2 고장', 'M1', 'C', 'HVAC-CO2 센서2 고장', 'C', 'HVAC', '객실 CO2 센서2 고장 발생', 'CO2 센서2 고장현시', 'CO2 센서의 검지범위는 0~4000ppm (2~10Vdc) 인데, 1초 이상 출력전압이 2Vdc (0ppm) 미만으로 떨어지는 경우', 'CO2 센서 검지 값이 1초 이상 2Vdc (0ppm) 이상 지속되는 경우', '1) 전원을 인가한 ���태에서 CO2센서 커버를 열고 테스터기를 통해 'OUT2' 단자와 'G' 단자간의 전압이 2Vdc 미만인지 확인한다. +2) 만약 전압이 2Vdc 이상인데도 고장이 지속될 경우, 마이콤을 교체한다. +3) 만약 전압이 2Vdc 미만으로 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('4bfdd0e6-3a47-4ff6-a339-9719d9f14ec5', '0505', '505', 'DCU#8 3위(R2) - 출입문 입력 고전압', 'Tc2', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 “1”이 되면 검지 +', '고전압 상태(그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상 +', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4c0dfbf0-6532-474f-88e8-f02c31dcde44', '1112', '1112', '0', 'Tc2', '0', null, null, '0', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('4c125e0e-7963-44d9-820d-60e80d0001c9', '0026', '26', '단부출입문 고장(Car7)', 'M4', 'C', '단부출입문 고장 (Car7)', 'C', '기타', '차량 이 단부 통로 문으로부터 END DOOR FAULT 신호를 검지 +', '출입문 정상동작 불가', ' +1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우 (인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +4) DCU 내부의 모터 / 인코더 회로 가 손상된 경우 +', '모터/인코더 및 DCU가 정상상태이고, 전기적 연결 상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있는지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. ※ 고장 조치 완료 후, 반드시 DCU의 reset 버튼을 누르거나 전원을 OFF/ON 하여 시스템을 재가동해야 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4c199afc-101f-4c32-b0b1-1386e001bf8e', '0731', '731', 'HVAC#6 - 냉난방장치1 리턴 센서 고장', 'M3', 'C', 'HVAC-냉난방장치1 리턴 센서 고장', 'C', 'HVAC', '냉난방장치1의 리턴 센서 고장 발생 +', '냉난방장치1 리턴 센서 고장현시', '온도센서 검지범위는 -45 ~ 85도(820 ~ 1,330Ω)인데, 2초 이상 검지범위를 벗어나는 경우 +', '온도센서 검지값이 2초 이상 허용온도 범위 내일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820 ~ 1,330Ω을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4c1d5d2d-53e2-420b-a636-90ab619a6fac', '0168', '168', 'VVVF#7-응하중 신호 이상검지(BRFD)', 'M4', 'C', 'VVVF-BCU 고장(BRFD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT33의 Bit1 “BRFD” 신호가 "1"이 되면 검지.', null, '응하중 PWM신호의 듀티값 90%이상 도달 시 고장검지', '1) 역행 듀티값 80%이하, 10%이상. +2) 제동 듀티값 80%이하, 10%이상 & 제동 OFF', '1) TCMS의 시리얼 데이터 확인창에서 각 차량의 응하중 값을 확인한다. 수치에 이상이 있는 차량이 확인될 경우 해당 차량의 BCU를 교체한다. +2) 추진제어장치의 외부커넥터 CN1을 분리하여 33번, 34번, 35번 핀의 삽입상태를 확인한다. +3) 차량에 제어전원만 인가 후 PUZ보드에 모니터링 프로그램이 설치된 노트북과 연결하여 응하중값을 확인한다. (공차 34 ~39%) +4) 추진제어장치 시험기를 이용하여 TCU(통합제어장치)의 이상여부를 확인한다.', null, '3', '2025-10-12 01:21:37.578803+00', null, '로템40량(2018)-1단계', 'Rotem'), ('4c26b161-e179-454f-b59f-91526da61aba', '0721', '721', 'HVAC#8 - 냉난방장치2 압력스위치2(DPS) 냉매부족', 'Tc2', 'C', 'HVAC-냉난방장치2 압력스위치2(DPS) 냉매부족', 'C', 'HVAC', '냉난방장치2 냉매 압력스위치2 저압 발생 +', 'UNIT2CYCLE2 냉방 기능 불가', 'UNIT2DSP2측 냉매압력이 30초 이상0.5±0.3(kgf/cm2) 이하로 떨어지는 경우 +', '냉매압력이 정상수치 2±0.5(kgf/cm2) 이상 유지하도록 하고, 마이콤전원을 리셋', '1) 배전반 점검 커버를 열고 마이콤 전원을 리셋한 후, 냉방 가동 시, CREF4의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)을 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설 여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안 되는 것을 확인한 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4c2b97d2-c08c-45a8-81df-167d6e9dd28f', '0137', '137', 'VVVF#2 - 전동기 과전류 검지(MMOCD)', 'M1', 'C', 'VVVF-전동기 과전류 검지(MMOCD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT31의 Bit2 “MMOCD” 신호가 “1”이 되면 검지 +', '1) TCMS 화면 하단 또는 고장화면에 ‘전동기 과전류 검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생함. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉은색으로 표기되며, HSCB, LB1, 2 개방되어 동력 손실 발생함.', '추진제어장치에서 견인전동기로 출력되는 U, V, W 상의 전류가 1, 850A 이상일 경우 검지됨. +', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반 배전반의 VVVFIC nfb 재투입 또는 차량 배터리 전원 재투입', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 견인전동기로 출력되는 3상의 전류치 확인함. +3) 특정상의 전류치가 비정상적일 경우 특정상에 해당되는 IPM, 전류센서, 모터결선을 확인한다. +4) 전류센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작 상태를 시험기를 통해 확인한다. +6) 견인전동기 각상의 절연상태 및 각상과 접지 간의 절연상태를 확인한다. +7) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4c31f875-3cc0-4dd2-86f7-3f52bab6f039', '0521', '521', 'DCU#1 5위(R3) - 모듈 상태 이상', 'Tc1', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 “01” 또는 “00”이 되면 +검지 +', '이중계절체동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러)이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4c3d1823-ae7f-47ac-a43f-993fcba8043f', '0508', '508', 'DCU#4 6위(L3)-출입문 모터/인코더 고장', 'T1', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 "Motor / Encoder failure” 신호가 "1"이 되면 검지.', '출입문 정상동작 불가', '1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우 (인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터 / 인코더 회로가 손상된 경우', '모터/인코더 및 DCU가 정상상태이고, 전기적 연결상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있느지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. +★ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. + +1. DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. +2. DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) +3. DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('4c40dc51-3f4d-4ddb-bc33-964fc7a97ad8', '0222', '222', 'BECU#4 - 공기스프링 누설(후미대차)', 'T1', 'C', 'BECU-공기스프링누설(후미대차)', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit5 “공기스프링누설(후미대차)” 신호가 “1”이 +되면 검지 +', '해당 차량 공기스프링 누설(후미대차) 검지 현시 및 해당 차량 정상적인제동제어 불가 (응하중제어)', '해당 차량 후미대차의 공기스프링(AS3, AS4) 압력이 정상범위를 벗어남. (100kPa 미만) +', '해당 차량 후미대차의 공기스프링(AS3, AS4) 압력이 정상범위일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4c6c7946-d22a-437c-8db7-c3e32d00da66', '0750', '750', 'HVAC#6-냉난방장치2 보조히터 과열', 'M3', 'C', 'HVAC-냉난방장치2 보조히터 과열', 'C', 'HVAC', 'HVAC2 보조난방기 작동 중 과열 발생.', 'UNIT2 보조난방기 난방 불가', '보조난방기 작동 중 1초 이상동안 온도가 70도 이상으로 과온센서 정상 신호가 수신되지 않는 경우', '1초 이상동안 60도 미만으로 온도가 떨어져 과온센서 정상 신호가 수신되는 경우', '1) 보조난방기가 꺼진 상태에서도 문제 발생 시, 과온 센서를 교체한다. +2) 센서 교체 후에도 문제가 발생되면, 배선에 문제가 없는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('4c6fda97-699b-488a-b672-0c1e3740b60d', '0108', '108', 'VVVF-가선과전류 검지(IOCD) (Car7)', 'M4', 'C', 'VVVF-가선과전류 검지(IOCD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT31의 Bit3 “IOCD” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 '가선과전류 검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치에 입력되는 전류가 1,500A 이상일 경우 검지됨.', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반배전반의 VVVFIC nfb 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 추진제어장치에 입력되는 전류치 확인함. +3) 입력되는 전류치가 비정상적일 경우 추진제어장치 입력회로(HSCB, LB1,2, CHRe)를 접검한다.. +4) LB Box내의 전류센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작상태를 시험기를 통해 확인한다. +6) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.656536+00', null, '다대48량(2015)', 'Rotem'), ('4c88a47b-c9af-421e-8273-714d6ad19441', '0746', '746', 'HVAC#4-전자접촉기 배기팬1(CRVF) 고장', 'T1', 'C', 'HVAC-전자접촉기 배기팬1(CRVF) 고장', 'C', 'HVAC', 'HVAC 환기 작동 중 CRVF1 전자접촉기 고장 발생.', '환기 시 차량 배기팬1 운전 불가능', '환기 작동 중 2.5초 이상동안 CRVF1 작동 feedback 신호가 수신되지 않는 경우', 'CRVF1 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CRVF1을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRVF1과 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('4c955a30-e8f4-4fac-9802-d3eb3faa1b73', '0516', '516', 'DCU#8 1위(R1)-출입문 장애물로 인한 닫힘 실패', 'Tc2', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Close failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림상태로 대기', '도어 닫힘 중 3회 장애물 감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('4c98264d-d9c9-4acd-a768-6ac6a28cf3a8', '0709', '709', 'HVAC#2-냉난방장치2 압력스위치2(DPS) 저압', 'M1', 'D', 'HVAC-냉난방장치2 압력스위치2(DPS) 저압', 'D', 'HVAC', '냉난방장치2 냉매 압력스위치2 저압 발생.', 'UNIT2 CYCLE2 냉방 기능 불가', 'UNIT2 DSP2측 냉매 압력이 3초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우', '냉매 압력이 정상 수치 2±0.5(kgf/cm2 이상으로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CREF4의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)을 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안되는 것을 확인한 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('4c9e8006-8798-461f-bc3e-0c573d5d7c12', '0241', '241', 'BECU#6-1축스키드신호', 'M3', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('4ca34af0-f5b5-4402-be18-7b00bf2a0655', '0504', '504', 'DCU#6 4위(L2) - 출입문 외부 비상핸들 취급(EAD)', 'M3', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4ca4a40c-f44c-4edc-8f84-87098c34c577', '0027', '27', '장애물 검지 후 출입문 닫힘 스위치 취급', 'Tc1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4caa3b13-0aba-41f3-a484-fee259102479', '0213', '213', 'BECU#7 - AC 압력센서 고장', 'M4', 'C', 'BECU-AC 압력센서 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit4 “AC 압력센서 고장” 신호가 “1”이 되면 검지 +', '해당 차량 공기제동장치고장, AC 압력센서 고장검지 현시 및 해당 차량 제동제어불가', '해당 차량의 AC 압력센서 고장 +', '해당 차량의 AC 압력센서가 정상일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4cad41be-a3e8-4526-9b42-0fa74bec5cce', '0205', '205', 'BECU#7 - 회생제동요구 비정상', 'M4', 'C', 'BECU-회생제동요구 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit4 “회생제동요구 비정상” 신호가 “1”이 +되면 검지 +', '해당 차량 회생제동 요구 비정상 검지 현시', '해당 차량의 회생제동 요구 출력이 정상범위를 벗어남. +', '해당 차량 회생제동 요구 출력이 정상범위로 복귀 시 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4cc8598f-5bdc-4bfd-bd96-91db269b23d1', '0207', '207', 'BECU#7-자기진단고장', 'M4', 'C', 'BECU-자기진단고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit6 “RAM 점검 고장” 신호가 "1"이 되면 검지.', '해당 차량 자기진단고장 검지 현시 및 해당 차량 활주제어 불가.', '해당 차량 BECU의 자가진단 시 고장 발생(활주방지밸브 고장).', '해당 차량 BECU의 자가진단 시 정상적일 경우 소거(활주방지밸브 정상).', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('4cde48a3-a34c-4c12-921f-f5433f328c09', '0734', '734', 'HVAC#6-전자접촉기 압축기(CRCM)3 고장', 'M3', 'C', 'HVAC-전자접촉기 압축기(CRCM)3 고장', 'C', 'HVAC', 'HVAC 냉방작동 중 CRCM3 전자접촉기 고장 발생.', '냉방 기능 저하(전냉방시 반냉방으로 작동)', '냉방작동 중 2.5초 이상동안 CRCM3 작동 feedback 신호가 수신되지 않는 경우', 'CRCM3 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CRCM3을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRCM3과 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('4d034504-86ff-4511-8389-809df7abd08d', '0518', '518', 'DCU#4 5위(R3) - 출입문 Enable 신호 에러', 'T1', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 “Enable signal error” 신호가 “1”이 되면 검지 +', 'DCU 출입문Enable신호에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드 시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을 때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드 시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입 상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호 장치로부터의 출입문 열림 명령 신호) 취급 시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함. +', '해당 출입문 enable 신호수신', '1) AUTO/MCS 모드 시에는 YARD 모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인 한다. (YARD/FMC 모드 시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4d143b80-746d-4e78-ac10-12bb176aa906', '0226', '226', 'BECU#3-제동불완해검지(NRBD)', 'M2', 'B', 'BECU-제동불완해검지(NRBD)', 'B', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT8의 Bit2 “NRBD” 신호가 "1"이 되면 검지.', '해당 차량 제동불완해 검지 현시 및 완해 취급하였음에도 불구하고 해당 차량 제동압력(BCP)이 완해되지 않음.', '제동완해 상태(정차제동 포함)에서 해당 차량의 제동압력이 완전히 배기 되지 않음.', '제동완해 상태(정차제동 포함)에서 해당 차량의 제동압력이 완전히 배기 됨.', '정차하여 강제완해스위치를 취급하여 소거 여부 확인. 제동 완해상태 확인 후 주의 운전 할 것. +2~3회 시도에도 완해불능시 관제보고하고 지시에 따를 것.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('4d24d829-64a8-4c8e-a2be-dead03505e15', '1201', '1201', 'FDU#5 - 감지기1 화재감지', 'T2', 'W', 'FDU-감지기1 화재감지 (Car1~8)', 'W', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 “Detector1 State” 신호가 “11”이 되면 검지 +', '화재상태현시(자동소거 안 됨.)', '하기 2가지 조건을 모두 만족하여야 화재신호가 출력 됨. (연동모드 동작) +1) 이웃한(앞 혹은 뒤에 위치한) 감지기 중 하나의 감지기라도 주의 혹은 화재상태에 있어야 함. +2) Detector1(해당 감지기)에서 측정된 연기농도가 15% 이상이거나 온도가 65℃ 이상인 경우 +', '1) FDU의 복귀버튼 조작 시 +2) FDU 전원 리셋 시', '1) 해당 감지기 위치의 화재 발생 여부 확인 +2) 화재 오감지일 경우 FDU의 복귀버튼 취급 +3) 오감지일 경우 감지기의 청소주기 확인(내부 먼지 제거)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4d2c9f18-adc4-4ca6-894e-6aabd83c648d', '0506', '506', 'DCU#6 3위(R2)-출입문 입력 저전압', 'M3', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 "1"이 되면 검지.', '저전안 상태 (출입문 동작이 심하게 느려지거나 작동조차 안될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('4d35b5dc-d92c-493c-b6f2-a608edcc701f', '0160', '160', 'VVVF#2-게이트전원전압이상(GPLVD)', 'M1', 'C', 'VVVF-게이트전원전압이상(GPLVD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT32의 Bit1 “GPLVD” 신호가 "1"이 되면 검지.', null, '통합제어장치 PWS보드의 AC24V 출력전압 이상 시 고장검지.', '동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) TCU(통합제어기) 입력에 제어전원 DC 100V가 인가되는지 확인한다. +2) PWS 보드의 전면부에서 AC 24V 출력단 LED가 점등되어있는 것을 확인한다. +3) 상기 점검부에 이상이 없을 경우 TCU(통합제어장치)를 교체한다. +4) TCU교체 후 동일증상 반복 시 인버터 스택을 교체한다.', null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('4d3a1fd7-a6d1-4ee5-84d3-4d6fbbc6959f', '0305', '305', 'ATC#8-2계 고장', 'Tc2', 'C', 'ATC-2계 고장', 'C', 'ATC', 'ATC의 RS485 데이터 중 ATC-TCMS SD TEXT7의 Bit4~7 “ATC/ATO Status” 데이터가 ATC 2계 Bad 상태이면 검지.', 'MMI에 ATC/ATO1이 빨간색으로 표기되며 관련 고장메시지 현시', '1. ATC시스템 자체진단테스트 실행 시 하기와 같은항목에서 비정상상태일 경우 +1) 서브랙 내 보드(DI1,2/DO/Tacho) 존재 유무 체크 +2) 각 장치(DI1,2/DO/Tacho/ATC/ATO/TWC/MMI)별 통신 상태 확인 +3) 보드 동작상태(Alive 상태) +4) Digital Input 상태 확인(중복입력/무입력) +5) Digital Input/Output Check-back 상태 확인 +6) Tachometer 고장검지 확인 +7) 열차길이/휠 사이즈 셋팅 확인 +2. ATC-1계 CPU보드 고장 시 +3. ATC-1계 POWER보드 고장시', '상기 검지조건 해제 시', '1) 전원스위치 CB ATC#1,2 OFF->ON하여 복귀시도 후, 복귀되었는지 확인한다. +2) 1, 2계 동시 고장 시, 완전수동(FMC)전환 운행 한다.', null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('4d406b4b-d238-4c9a-a80c-be0af7aa88a5', '0322', '322', 'ATC#8-', 'Tc2', '0', null, null, '0', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('4d427f50-9c2b-4e87-9eeb-204f792be66c', '0517', '517', 'DCU#2 1위(R1) - 출입문 장애물로 인한 열림 실패', 'M1', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Open failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘 상태로 대기', '도어열림 중 3회 장애물감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 열림 시, 장애물감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4d4d4c30-57e5-4951-9ec1-d5e5948f6bcb', '1704', '1704', '노선안내표시기#1 고장(Car7)', 'M4', 'C', '노선안내표시기#2 고장', 'C', 'PIC', 'PIC 장치의 노선안내표시기#2이 고장이 났을 때 발생 +', '1) 노선안내표시기 화면 미현시 +2) 노선안내표시기 안내 화면 오현시', '통신고장 +', '통신 재개 시', '1) 이더넷 스위치 링크 확인 +2) 이더넷 케이블 점검 +3) 제어보드 및 전원보드 교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4d56391f-fea9-4801-9763-43e3584461e4', '0073', '73', '경고, 스크린도어 열림상태', 'Tc1', 'W', '경고, 스크린도어 열림상태', 'W', '기타', '차량의 출입문이 닫힌 상태에서 PSD 스크린도어가 열린상태가 3초 이상 유지될 때 경고 +', '1) TCMS 화면 하단에 ‘경고, 스크린도어 열림상태'가 표시되고, 일반화면 우측 PSD 상태에 ‘열림 +경고' 붉은색 점멸 표시됨. +2) PSD 수신 불가 지역에는 경고메시지 해제됨.', 'FM/YARD 이외의 모드 및 PSD와의 통신이 정상상태에서 차량 출입문은 닫힌 상태 이나 PSD로부터 PSD 스크린 도어 열림상태가 3초 이상 지속될 때 검지함. +', '1) PSD로부터 스크린 도어 열림상태 해제 또는 차량으로부터 출입문 열림 신호가 수신되면 해제 +2) 운전모드가 FM/YARD 모드일 때 해제', '1) 대부분 PSD가 늦게 닫힐 때 현시되므로 PSD로부터 닫힘신호가 수신되면 해제됨. +2) 지속 현시되면 차상/지상 PSD 장치 간 통신을 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4d638651-dca3-426c-975b-edba05fd5e40', '0504', '504', 'DCU#2 6위(L3) - 출입문 외부 비상핸들 취급(EAD)', 'M1', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4d7ebf74-eb6b-4449-b6e4-7f5677bcde8d', '0211', '211', 'BECU#7 - 2축 속도신호의 비정상', 'M4', 'C', 'BECU-2축속도신호의 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit2 “2축속도신호의 비정상” 신호가 “1”이 +되면 검지 +', '해당 차량 2축속도신호의 비정상 검지 현시 및 해당 차량 활주제어불가', '해당 차량의 2축속도센서 고장 발생 +', '해당 차량의 2축속도센서가 정상적일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4d819189-4972-4c9d-9666-b225f4468341', '0512', '512', 'DCU#1 5위(R3)-파라미터 로딩 실패', 'Tc1', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 "Paraneter error” 신호가 "1"이 되면 검지.', 'Parameter error 현시 (출입문은 정상작동 가능)', 'DCU 자체내의 EEPROM으로부터 parameter 데이터 로딩 실패', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('4d8554c5-0960-41e5-925a-f6ba372d3a01', '0031', '31', '비상제동 스위치 취급', 'Tc2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4d8c4130-e01e-4d0d-83a0-414515ed8090', '1403', '1403', 'BMS#8-배터리 저전압(BUV, 77V이하)', 'Tc2', 'W', 'BMS-배터리 저전압(BUV, 77V이하)', 'B', 'BMS', '해당차량의 배터리 전압이 77V이하가 되면 검지', '차량 배터리 저전압 검지.', '배터리 저전압(77V 이하).', '배터리 전압 회복', '1) 충전 전압 확인. +2) 배터리 NFB 상태 확인 +3) 이상이 없으면 차량 전체를 리셋한다. +4) 차량 리셋 후에도 동일고장이면 사령실과 연락하여 조치를 취한다. (외부 충전기 연결 또는 차량 지원)', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('4d8c7855-7dcc-4ef2-b119-9fc25b256e8d', '0716', '716', 'HVAC#3-냉난방장치1 압력스위치1(DPS) 고압', 'M2', 'D', 'HVAC-냉난방장치1 압력스위치1(DPS) 고압', 'D', 'HVAC', '냉난방장치1 냉매 압력스위치2 고압 발생.', 'UNIT1 CYCLE1 냉방 기능 불가', 'UNIT1 DSP1측 냉매 압력이 3초 이상 28±1(kgf/cm2) 이상 되는 경우', '냉매 압력이 정상 수치 15±0.7(kgf/cm2 이하로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CRCM1의 부하측 전류를 측정하여 응축기 팬의 동작여부를 확인한다. +2) 응축기 코일의 전면에 이물질로 인한 막힘이 있는지 확인한다. +3) 응축기 팬 상부 그릴에 외부 이물질로 인한 막힘이 있는지 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('4d9679c7-89fd-4a8b-b374-6ca7fb181ea6', '1205', '1205', 'FDU#3 - 감지기3 화재감지', 'M2', 'W', 'FDU-감지기3 화재감지 (Car1~8)', 'W', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 “Detector1 State” 신호가 “11”이 되면 검지 +', '화재상태현시(자동소거 안 됨.)', '하기 2가지 조건을 모두 만족하여야 화재신호가 출력 됨. (연동모드 동작) +1) 이웃한(앞 혹은 뒤에 위치한) 감지기 중 하나의 감지기라도 주의 혹은 화재상태에 있어야 함. +2) Detector1(해당 감지기)에서 측정된 연기농도가 15% 이상이거나 온도가 65℃ 이상인 경우 +', '1) FDU의 복귀버튼 조작 시 +2) FDU 전원 리셋 시', '1) 해당 감지기 위치의 화재 발생 여부 확인 +2) 화재 오감지일 경우 FDU의 복귀버튼 취급 +3) 오감지일 경우 감지기의 청소주기 확인(내부 먼지 제거)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4d9d1f69-3b03-4bbc-a4f5-dff7f71adc7f', '0141', '141', 'VVVF#7-제어전원전압이상(PWM1)(CLVD_P1)', 'M4', 'C', 'VVVF-제어전원전압이상(PWM1)(CLVD_P1)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT29의 Bit6 “CLVD_P1” 신호가 "1"이 되면 검지.', null, 'PWM보드 내부의 제어전원 이상 검지 시 중고장 발생.', '동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) PWM보드 1군 전면의 CN1, CN2 커넥터 핀 상태 및 체결상태 확인. +2) PWM보드 1군 내부의 PCB의 소손, 냉납, 열화 유무 확인. +3) 추진제어장치 시험기를 이용하여 PWM보드의 정상동작을 확인한다. +4) 상기의 점검부분에 이상이 있을 경우 관련부품을 교체한다.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('4daff7df-7342-4c38-a0a5-60134f3e4454', '0216', '216', 'BECU#2-전두대차 AS압력센서고장', 'M1', 'C', 'BECU-전두대차 AS압력센서 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit7 “전두대차 AS압력센서 고장” 신호가 "1"이 되면 검지.', '해당 차량 전두대차 AS압력센서 고장 검지 현시 및 해당차량 정상적인 응하중 제동제어 불가.', '해당 차량의 전두대차 AS 압력센서(AS1, AS2) 고장.', '해당 차량의 전두대차 AS 압력센서(AS1, AS2)가 정상일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('4db1b595-752e-4946-82f1-248e55ec3bc1', '0163', '163', 'VVVF#3 - FC과전압검지2(OVD2)', 'M2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4dbb05bd-4e25-4c86-9640-431aafbd85cb', '0706', '706', 'HVAC#4 - 냉난방장치1 증발기2 과부하', 'T1', 'C', 'HVAC-냉난방장치1 증발기2 과부하', 'C', 'HVAC', 'HVAC 냉방 작동 중 냉난방장치1 증발기 모터에 과부하 발생 +', 'UNIT1냉방 작동 불가', ' +1) 냉방 작동 중 UNIT1의 증발기 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CREF2와 연결된 THR6이 Trip 됨. +', 'UNIT1의 증발기모터의 과부하조건을 해소하여 정상 가능 상태로 만들고, THR6 및 마이콤 전원 리셋', '1) 냉난방 배전반의 점검커버를 열고, THR6의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR6의 전류 세팅값이 3A에 맞춰져 있는지 확인하여, 아닐 경우, (+) 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동시킨 후, THR6의 2차측 2, 4, 6 단자에서 각 단자 간 상간 전압이 AC 380V로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 증발기 단품 상태 에서 점검을 한다. +7) THR6의 2차측 2, 4, 6 단자에서 각 단자 간 권선저항이 모두 같은지 확인한다. (±10% 이하) (증발기 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT1의 증발기 모터의 결선을 해제한 후 4극 및 6극 모터의 권선저항을 확인 후, 문제가 있을 경우, 증발기 모터를 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR6 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4dbf26a6-60ff-43ce-8cfc-79eaa8f81ed4', '0519', '519', 'DCU#6 3위(R2) - ZVR 신호 에러', 'M3', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 “ZVR signal error” 신호가 “1”이 되면 검지 +', '출입문이강제로 닫히게 되고, 열림은 불가능', ' +1) 차량 ZVR 신호가 없는 상태(차량 주행상태)에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함. +', '해당 출입문 ZVR 신호 수신', '1) 차량 이 주행중이라면, 차량 이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4dc3b2dc-76a6-4244-9240-bb79da82f97a', '0038', '38', '강제완해 스위치 취급', 'Tc2', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('4dd27b20-6170-461c-ab84-61d4dacd4bff', '0220', '220', 'BECU#8-공기제동 감쇄지령 비정상', 'Tc2', 'C', 'BECU-공기제동 감쇄지령 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit3 “공기제동 감쇄지령 비정상” 신호가 "1"이 되면 검지.', '해당 차량 공기제동 감쇄지령 비정상 검지 현시 및 해당차량 정상적인 전공 교차제어 불가.(부수차량 공기제동 감쇄 불가)', '해당 차량의 공기제동 감쇄지령 신호가 정상범위를 벗어남(5.0~95.0%).', '해당 차량의 공기제동 감쇄지령 신호가 정상범위일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. +소거되지 않을 경우 해당 차량 옆의 Pair 차량(구동차) BECU를 리셋(CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('4ddd9cc2-6f94-47ef-8958-8d0e84ac7eda', '0509', '509', 'DCU#2 3위(R2) - 출입문 잠김 리미트 스위치 고장', 'M1', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 “DLS Failure” 신호가 “1”이 되면 검지 +', '출입문 잠김 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4de1fc6c-49dc-4a05-af39-b7ea61ae49a1', '0149', '149', 'VVVF#6 - FC 저전압검지(FCLVD)', 'M3', 'C', 'VVVF-FC 저전압검지(FCLVD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT30의 Bit6 “FCLVD” 신호가 “1”이 되면 검지 +', '1) TCMS 화면 하단 또는 고장화면에 ‘FC 저전압검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생함. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉은색으로 표기되며, HSCB, LB1, 2 개방되어 동력 손실 발생함.', '추진제어장치 내부 FC 전압이 850V 이상일 경우 검지됨. +', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반 배전반의 VVVFIC nfb 재투입 또는 차량 배터리 전원 재투입', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 FC전압에 이상이 있는지 확인한다. +3) 추진제어장치 내부 고전압부에 소손흔적이 있는지 확인한다. +4) FC에 연결된 부스바의 체결상태가 양호한지 확인한고, 부스바를 분리하여 FC의 Capacitance를 측정하여 이상이 없는지 확인한다. +5) 전압센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +6) SEN 보드의 동작 상태를 시험기를 통해 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지 간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4dee19a9-5bb6-40cb-91d6-1695b58b6d8b', '1212', '1212', 'FDU#6-', 'M3', '0', null, null, 'FDU', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('4defe2ec-1cf6-451c-9e1a-d8a6e6cb7ad7', '0514', '514', 'DCU#5 2위(L1)-출입문 닫힘 시간 초과', 'T2', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 "Close time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 닫힘 동작시간이 7초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도 한 후, '장애물로 인한 닫힘실패' 고장과 함께 'Close time out' 고장이 함께 현시', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('4e185a40-31ef-4d01-9cd8-500a15c58a68', '0747', '747', 'HVAC#5 - 전자접촉기 차량히터2(CRRHT) 고장', 'T2', 'C', 'HVAC-전자접촉기 차량 히터2(CRRHT) 고장', 'C', 'HVAC', '객실 난방기 작동 중 CRRHT2 전자접촉기 고장 발생 +', '객실 전난방 시 1/3난방만 작동', '객실 전난방 작동 중 2.5초 이상 동안 CRRHT2 작동 feedback 신호가 수신되지 않는 경우 +', 'CRRHT2 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CRRHT2를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRRHT2와 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4e34b665-2d76-448f-b2f7-c3e128a78206', '0210', '210', 'BECU#6 - 3축 속도신호의 비정상', 'M3', 'C', 'BECU-3축속도신호의 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit1 “3축속도신호의 비정상” 신호가 “1”이 되면 검지 +', '해당 차량 3축속도신호의 비정상 검지 현시 및 해당 차량 활주제어불가', '해당 차량의 3축속도센서 고장 발생 +', '해당 차량의 3축속도센서가 정상적일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4e43809c-e819-46cf-acc2-3e4cf3d8dd23', '0168', '168', 'VVVF#3 - 응하중 신호 이상검지(BRFD)', 'M2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4e4c2ed4-9245-4168-bbca-3a9327d846a4', '0506', '506', 'DCU#8 3위(R2)-출입문 입력 저전압', 'Tc2', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 "1"이 되면 검지.', '저전안 상태 (출입문 동작이 심하게 느려지거나 작동조차 안될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('4e5c73e4-fbc4-488d-9b7f-9331eee987c3', '0018', '18', '모든 출입문 바이패스 스위치 취급', 'Tc2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4e63c16d-4212-4d64-babb-0f8b84cb802b', '0521', '521', 'DCU#8 4위(L2)-모듈 상태 이상', 'Tc2', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 "01"또는 "00"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('4e7bf65c-cc1e-4d1a-80a3-7b26beb5c515', '0515', '515', 'DCU#5 3위(R2)-출입문 열림 시간 초과', 'T2', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 "Open time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 열림 동작시간이 6초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도 한 후, '장애물로 인한 열림실패' 고장과 함께 'Open time out' 고장이 함께 현시', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('4eabd856-268d-4fb8-b48e-75f1b4caccad', '0503', '503', 'DCU#2 1위(R1)-출입문 내부비상핸들 취급(EED)', 'M1', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('4eac646e-b441-4df8-b863-00d6c5bd48e0', '0502', '502', 'DCU#5 1위(R1) - 출입문 장애물검지', 'T2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4ebb7c09-1696-4bda-b66a-5de779d3057a', '0501', '501', 'DCU#3 6위(L3)-출입문 차단', 'M2', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('4ec2f5df-dc33-4422-8e3d-cf0b73136049', '0409', '409', 'SIV#8 - DC(가선) 입력과전압(DCINOV)', 'Tc2', 'C', 'SIV-DC(가선) 입력 과전압(DCINOV)', 'C', 'SIV', '보조전원장치(SIV)의 RS485 데이터 중 SIV-TCMS SD TEXT4의 Bit7 “DCINOV” 신호가 “1”이 되면 검지 +', '1) TCMS 화면하단 또는 고장화면에 ‘가선과전압검지' 표시됨. +2) 보조전원장치(SIV)는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 보조전원장치(SIV) 중고장이 발생함. +5) 중고장이 발생되면 TCMS 일반화면에 보조전원장치(SIV) 상태 붉은색으로 표기되며, 연장급전 됨.', '보조전원장치(SIV)에 입력되는 전압이 2,400V 이상일 경우 검지됨. +', '1) 경고장이 발생할 경우 보조전원장치(SIV) 자동 재기동에 의해 재기동 됨. +2) 중고장이 발생했을 경우 조치 완료 후 보조전원장치(SIV) 리셋으로 고장 소거됨.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 보조전원장치(SIV) 고장기록을 수집하여 보조전원장치(SIV)에 입력되는 전압값을 확인함. +3) 입력되는 전압값이 비정상적일 경우 보조전원장치(SIV) 입력회로를 점검한다. +4) 보조전원장치(SIV) 내의 입력 전압센서 및 배선과 제어기 SEN 보드에 연결되는 저전압 배선 상태를 확인한다. +5) SEN 보드의 동작 상태를 시험기를 통해 확인한다. +6) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4ed3ea71-9bf3-4cca-ad57-d40c95ecfa08', '0501', '501', 'DCU#5 3위(R2)-출입문 차단', 'T2', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('4ed4c567-473a-4e21-87ae-a46bcc7dbf0d', '1522', '1522', 'TCMS 데이타버스1 좌측라인 통신 이상(Car4)', 'T1', 'C', 'TCMS 데이터버스1 좌측라인 통신 이상', 'C', 'TCMS', 'TCMS의 초기 기동 시 자기진단에 의한 2중계 메인통신선 중 1계 메인통신 이상 검지 시 +', '1) SL-NET 2중계이므로 데이터버스 2계로 정상통신, 운행에 지장 없음. +2) 초기기동 자기진단 시 2중계를 점검하여 1계측의 이상이 검지되었다는 점검 필요용 메시지', '초기 기동 시 SL-NET 1계와 2계를 각각 통신 후 비교하여 2계는 정상통신이 되나 1계는 정상통신이 안 되는 경우 +', '정상 수리 후 차량 전체 재기동하여 SL-NET 1계와 2계 모두 정상통신이 되는 경우', '1) 고장검출호차와 고장검출 좌측호차와의 SL-NET 통신 1계 정상여부 확인(예 : 고장호차가 3호차인 경우 1-2-3-4-5-6-7-8에서 3호차의 좌측, 즉 2-3호차 간 SL-NET 1계 통신 상태 점검 필요) +2) 고장검지호차의 SCM PCB 교체 정상여부 확인 +3) 고장검지호차의 좌측호차 SCM PCB 교체 정상여부 확인 +4) 고장검지호차와 고장검지 좌측호차의 SL-NET 1계 메인통신 배선의 연결 상태 확인 +5) 상기 2 ~ 4번 점검에도 정상적으로 복귀되지 않는 경우, CU/TU ASS'Y 교체(백보드 확인 필요)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4edbd122-f2e4-48bb-a68f-885f38ade0db', '0507', '507', 'DCU#7 2위(L1) - 초기화 실패', 'M4', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 “Calibration failure” 신호가 “1”이 되면 검지 +', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터 고장, 장애물감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우 +', '초기화 실패를 야기한 고장코드를 확인하여 조치 후, 재닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인한다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4eddf1ea-df06-4fb1-9997-e329e3d845ae', '0511', '511', 'DCU#6 5위(R3) - 출입문 닫힘 리미트 스위치2 고장', 'M3', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 “DCS2 Failure(Right)” 신호가 “1”이 되면 검지 +', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4eea109d-3b81-4f7b-abaa-3d5e7bf82c75', '0735', '735', 'HVAC#5 - 전자접촉기 압축기(CRCM)2 고장', 'T2', 'C', 'HVAC-전자접촉기 압축기(CRCM)2 고장', 'C', 'HVAC', 'HVAC 냉방 작동 중 CRCM2 전자접촉기 고장 발생 +', '냉방 기능 저하(전냉방 시 반냉방으로 작동)', '냉방 작동 중 2.5초 이상 동안 CRCM2 작동 feedback 신호가 수신되지 않는 경우 +', 'CRCM2 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CRCM2를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRCM2와 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4efda72b-d4b4-40b4-85f9-85c825fd8c63', '0715', '715', 'HVAC#8 - 냉난방장치1 압력스위치1(DPS) 저압', 'Tc2', 'D', 'HVAC-냉난방장치1 압력스위치1(DPS) 저압', 'D', 'HVAC', '냉난방장치1 냉매 압력스위치1 저압 발생 +', 'UNIT1CYCLE1 냉방기능불가', 'UNIT1DSP1측 냉매압력이 3초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우 +', '냉매압력이 정상수치 2±0.5(kgf/cm2) 이상으로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CREF2의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)를 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설 여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안 되는 것을 확인한 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4f1053e4-c243-4c23-82b7-66984aaaf84f', '0722', '722', 'HVAC#1-냉난방장치2 압력스위치1(DPS) 냉매부족', 'Tc1', 'C', 'HVAC-냉난방장치2 압력스위치1(DPS) 냉매부족', 'C', 'HVAC', '냉난방장치2 냉매 압력스위치1 저압 발생.', 'UNIT2 CYCLE1 냉방 기능 불가', 'UNIT2 DSP1측 냉매 압력이 30초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우', '냉매 압력이 정상 수치 2±0.5(kgf/cm2 이상 유지하도록 하고, 마이콤 전원을 리셋', '1) 배전반 점검 커버를 열고 마이콤 전원을 리셋한 후, 냉방 가동 시, CREF4의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)을 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안되는 것을 확인한 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('4f145d74-6df3-40af-95a4-a14f35d9e1c0', '0061', '61', 'MAIN FUSE#1 DISCONNECTED(Car4)', 'T1', 'W', 'MAIN FUSE#1 DISCONNECTED(Car4)', 'W', '기타', '차량으로부터 AUX FUSE DISCONNECTED 신호 입력 시 +', 'VVVF 고압 차단으로 추진 불능', '해당 퓨즈 소손 +', '해당 퓨즈 교체 +회로 도면 : REC20210DX0', null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4f19489f-acbe-4f2c-9158-ae7a44365f22', '0089', '89', '화재검지기 고장(Car4)', 'T1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4f23fdc8-dd3f-4e6e-8010-8d5277c7c19f', '0744', '744', 'HVAC#4-전자접촉기 보조히터1(AHEK) 고장', 'T1', 'C', 'HVAC-전자접촉기 보조히터1(AHEK) 고장', 'C', 'HVAC', 'HVAC 보조난방기 작동 중 AHEK1 전자접촉기 고장 발생.', 'UNIT1 보조난방기 전난방 시 반난방만 작동', '보조난방기 작동 중 2.5초 이상동안 AHEK1 작동 feedback 신호가 수신되지 않는 경우', 'AHEK1 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) AHEK1을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, AHEK1과 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('4f45825e-1d2e-4ec3-bb83-63cbe60e806f', '0501', '501', 'DCU#3 5위(R3)-출입문 차단', 'M2', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('4f676f12-3cc2-4139-8f7a-47e4ca7278d8', '0238', '238', 'BECU#3 - 4축 스키드신호', 'M2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4f731ca4-2cde-4fd3-bf91-bc3c6d1579ca', '0519', '519', 'DCU#1 1위(R1)-ZVR 신호 에러', 'Tc1', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 "ZVR signal error” 신호가 "1"이 되면 검지.', '출입문이 강제로 닫히게 되고, 열림은 불가능', '1) 차량 ZVR 신호가 없는 상태 (차량 주행상태) 에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함.', '해당출입문 ZVR 신호 수신', '1) 차량이 주행중이라면, 차량이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('4f8cdaf3-8fca-48fd-9052-6584adb3764a', '0506', '506', 'DCU#6 5위(R3)-출입문 입력 저전압', 'M3', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 "1"이 되면 검지.', '저전안 상태 (출입문 동작이 심하게 느려지거나 작동조차 안될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('4f99001b-2ede-4919-82d3-e547f02bb548', '0503', '503', 'DCU#2 6위(L3)-출입문 내부비상핸들 취급(EED)', 'M1', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('4f9c64c8-06d2-417a-a302-14f20fa2cd3e', '0150', '150', 'VVVF#3-가선저전압검지(ESLVD)', 'M2', 'C', 'VVVF-가선저전압검지(ESLVD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT30의 Bit7 “ESLVD” 신호가 "1"이 되면 검지.', null, '가선 전압이 850V 이하 감압 시 고장검지.', '1) 역행 고장검지 2초 후 자동 재기동 +2) 제동 제동 OFF시 고장 소거', '1) 상기고장이 간헐적으로 발생하는 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 가선전압에 이상이 있는지 확인한다. +3) 추진제어장치 내부 고전압부에 소손흔적이 있는지 확인한다. +4) FC에 연결된 버스바의 체결상태가 양호한지 확인한고, 버스바를 분리하여 FC의 Capacitance를 측정하여 이상이 없는지 확인한다. +5) 전압센서의 외관 및 단자 체결상태를 확인한다. +6) 추진제어장치 시험기를 이용하여 TCU(통합제어장치)의 이상여부를 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('4f9f3188-f667-4f0f-a3a9-d20fb0817930', '0216', '216', 'BECU#1 - 전두대차 AS 압력센서 고장', 'Tc1', 'C', 'BECU-전두대차 AS 압력센서 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit7 “전두대차 AS 압력센서 고장” 신호가 +“1”이 되면 검지 +', '해당 차량 전두대차 AS 압력센서 고장검지 현시 및 해당 차량 정상적인 응하중제동제어 불가', '해당 차량의 전두대차 AS 압력센서(AS1, AS2) 고장 +', '해당 차량의 전두대차 AS 압력센서(AS1, AS2)가 정상일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4fa4c6a8-bef3-4c2b-84c5-f9fdcd23812a', '0509', '509', 'DCU#1 6위(L3) - 출입문 잠김 리미트 스위치 고장', 'Tc1', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 “DLS Failure” 신호가 “1”이 되면 검지 +', '출입문 잠김 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4fbffe53-a35d-43f9-aa4a-1de4420a49cb', '1517', '1517', 'CU1 모듈고장 - AUX2(Car8)', 'Tc2', 'C', 'CU1, 2 모듈고장 - AUX2', 'C', 'TCMS', 'CU의 AUX2 PCB가 이 정상적으로 인식되지 않아 점검이 필요할 때 +', '1) CU1의 AUX2 PCB가 모듈 고장이 발생하면, CU2로 자동 절체됨. (CU2로 자동 절체되면 운행 에는 지장이 없음.) +2) CU2 자동 절체 시 화면의 우측 상단 경고장글자 하단에 “B.SYS” 라는 표시가 나타남. +3) 자동절체 시 열차 운행에는 관계없음. +4) CU2의 AUX2 모듈고장 시는 CU1 정상동작시 운행에는 지장이 없음.', 'CU AUX2의 ID를 정상적으로 검출하지 못할 때 화면에 현시 +', 'CU AUX2의 ID를 정상적으로 검출하는 경우 소거됨.', '1) CU의 AUX2 PCB 교체 +2) 불량 해소가 되지 않을 경우, 순차적으로 MCPU, SCM, DIM PCB를 교체하여 정상여부 확인', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4fc07f03-2ce8-4ea6-9137-fd6bf2e1ded2', '0319', '319', 'ATC#8 - 캠스위치 위치 오류', 'Tc2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4fc188df-e2b5-4ec3-821e-94bdf736d59d', '0204', '204', 'BECU#8-응하중 비정상', 'Tc2', 'C', 'BECU-응하중 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit3 “응하중 비정상” 신호가 "1"이 되면 검지.', '해당 차량 응하중 비정상 검지 현시.', '해당 차량의 응하중 출력이 정상범위를 벗어남.', '해당 차량 응하중 출력이 정상범위로 복귀 시 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('4fd90329-aa0e-42f8-bb10-105cf997485f', '0520', '520', 'DCU#2 4위(L2) - 이중계 절체 동작', 'M1', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 “Module switchover” 신호가 “1”이 되면 검지 +', '이중계 절체 동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러) 이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A'모듈 및 ‘B'모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4fde25f9-5bb6-4df1-9026-516e0a1154a0', '0501', '501', 'DCU#3 1위(R1)-출입문 차단', 'M2', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('4fe61f08-9223-4c1c-9ca6-98432c1a7df2', '0514', '514', 'DCU#1 3위(R2) - 출입문 닫힘 시간 초과', 'Tc1', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 “Close time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 닫힘 동작 시간이 7초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도한 후, ‘장애물로 인한 닫힘 실패' 고장과 함께 ‘Close time out' 고장이 함께 현시 +', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4ff39d14-e691-4a03-b798-ebe3ae4a2eb2', '0508', '508', 'DCU#6 3위(R2) - 출입문 모터/인코더 고장', 'M3', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 “Motor / Encoder failure” 신호가 “1”이 되면 +검지 +', '출입문 정상동작 불가', ' +1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우(인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터/인코더 회로 가 손상된 경우 +', '모터/인코더 및 DCU가 정상 상태이고, 전기적 연결 상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있는지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. ※ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. ? DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. ? DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) ? DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('4fff64c1-54dd-43e1-b1fd-d4519888ac61', '0506', '506', 'DCU#4 6위(L3)-출입문 입력 저전압', 'T1', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 "1"이 되면 검지.', '저전안 상태 (출입문 동작이 심하게 느려지거나 작동조차 안될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('500142ac-f287-4506-9e7e-c8211bd72623', '0515', '515', 'DCU#5 2위(L1) - 출입문 열림 시간 초과', 'T2', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 “Open time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 열림 동작시간이 6초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도한 후, ‘장애물로 인한 열림 실패' 고장과 함께 ‘Open time out' 고장이 함께 현시 +', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('500c20ac-babf-410f-9dac-b1879b4375db', '0518', '518', 'DCU#7 3위(R2) - 출입문 Enable 신호 에러', 'M4', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 “Enable signal error” 신호가 “1”이 되면 검지 +', 'DCU 출입문Enable신호에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드 시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을 때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드 시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입 상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호 장치로부터의 출입문 열림 명령 신호) 취급 시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함. +', '해당 출입문 enable 신호수신', '1) AUTO/MCS 모드 시에는 YARD 모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인 한다. (YARD/FMC 모드 시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('50115512-4b08-4ab6-82c8-4ff331984e28', '0038', '38', '강제완해 스위치 취급', 'Tc1', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('501d7a91-9152-43dc-8a29-77619f38b4b5', '0715', '715', 'HVAC#1-냉난방장치1 압력스위치1(DPS) 저압', 'Tc1', 'D', 'HVAC-냉난방장치1 압력스위치1(DPS) 저압', 'D', 'HVAC', '냉난방장치1 냉매 압력스위치1 저압 발생.', 'UNIT1 CYCLE1 냉방 기능 불가', 'UNIT1 DSP1측 냉매 압력이 3초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우', '냉매 압력이 정상 수치 2±0.5(kgf/cm2 이상으로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CREF2의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)을 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안되는 것을 확인한 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('501dbe6c-0f86-4d0e-820e-240ba5e5a065', '1520', '1520', 'TU 모듈고장 - AUX3(Car6)', 'M3', 'C', 'TU 모듈고장 - AUX3', 'C', 'TCMS', 'TU의 AUX3 PCB가 이 정상적으로 인식되지 않아 점검이 필요할 때 +', '1) TU의 AUX PCB가 모듈 고장이 발생하면, 해당 TU의 모든 디지털 출력 불가 +2) 해당 차량의 실내등 제어 및 라인플로우팬 제어 불가 +3) 해당 TU가 M1 차량 인 경우 판토제어 상승/하강 변경 불가(판토 및 공기압축기 제어) +4) 해당 TU가 T1 차량 인 경우 연장급전상태 제어 불가', 'TU AUX3의 ID를 정상적으로 검출하지 못할 때 화면에 현시 +', 'TU AUX3의 ID를 정상적으로 검출하는 경우 소거됨.', '1) TU의 AUX3 PCB 교체 +2) 불량 해소가 되지 않을 경우, 순차적으로 SCM, DIM PCB를 교체하여 정상여부 확인', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('504a524a-7059-44d9-8957-b811ef13e599', '0515', '515', 'DCU#1 2위(L1)-출입문 열림 시간 초과', 'Tc1', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 "Open time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 열림 동작시간이 6초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도 한 후, '장애물로 인한 열림실패' 고장과 함께 'Open time out' 고장이 함께 현시', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('5050f400-88ab-4b38-ac5b-0c0cd111dd1a', '1509', '1509', '열차분리#1 검지(Car2)', 'M1', 'B', '열차분리#1 검지', 'B', 'TCMS', '차량의 열차분리#1 검지 +', '1) 1위측 열차검지신호(SOTS1) 검출 시 화면에 현시 +2) 실제 열차분리 시 검지되었는지 확인 필요 +(실제 열차분리 시 다른 차량 이 접근하지 못하도록 선조치 필요) +3) 실��� 열차 분리 시 비상제동 안전루프에 의해 비상제동 체결됨. +4) 열차 분리에 따라 분리 위치부터 차량제어장치(TU)와 반대편 편성제어장치(CU)의 통신고장 동반 발생', 'TU의 1위측 열차분리신호(SOTS1) 신호 활성(LOW) 입력 시 고장 현시 +', 'TU의 1위측 열차분리신호(SOTS1) 신호 정상(HIGH) 입력 시 소거됨.', '1) 실제 열차분리 시 관제에 연락하고, 지시에 따름 +2) 회로 차단기 ELCB ON 상태 확인 +3) TU의 1위측 열차분리신호 DIM3 PCB의 입력채널(SOTS +1) 점검/교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('50523ae1-799f-494a-a500-5507916ff0b6', '0427', '427', 'IVS 서비스위치 아님(Car1)', 'Tc1', 'W', null, null, 'SIV', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('5066cf48-48a3-4c53-9fdc-ae3b72245f48', '0503', '503', 'DCU#1 3위(R2)-출입문 내부비상핸들 취급(EED)', 'Tc1', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('506d0282-6152-429e-b6ee-093df5beb0ae', '1212', '1212', 'FDU#1 -', 'Tc1', null, null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('50771933-e2e8-4d83-abcf-50fabc3e9555', '1500', '1500', '출입문 회로차단기 차단(Car8)', 'Tc2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5083ca13-57aa-4e7c-9e5c-b32b3480793b', '0103', '103', 'VVVF#7 - 추진차단(P BLOCK)', 'M4', 'D', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5091f9c8-1b22-4d4e-9ed9-d089e0be874f', '0512', '512', 'DCU#6 1위(R1)-파라미터 로딩 실패', 'M3', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 "Paraneter error” 신호가 "1"이 되면 검지.', 'Parameter error 현시 (출입문은 정상작동 가능)', 'DCU 자체내의 EEPROM으로부터 parameter 데이터 로딩 실패', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('50a36fbc-6e99-4278-a4e1-6b1ace31f2cf', '1211', '1211', 'FDU#4-체크섬 고장', 'T1', 'C', 'FDU-체크섬 고장', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT5의 Bit7 "Checksum Fault” 신호가 "1"이 되면 검지.', 'Checksum Fault 현시 및 FDU의 정상 동작 불가능', '수신기 펌웨어의 오류로 인한 체크섬 이상(MCU 내부 플래쉬 메모리에 저장된 체크섬과 프로그램의 체크섬 계산값이 다를경우)', 'FDU가 부팅될때 MCU 내부 플래쉬 메모리에 저장된 체크섬과 프로그램의 체크섬 계산값이 같을 경우', '1) FDU의 전원을 리셋하여 소거여부 확인 +2) 문제가 지속될 경우, 수신기 교체', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('50c0b750-2d66-4014-85b3-05364e089f8f', '0895', '895', '비상인터폰 동작(Car#1-2)', 'Tc1', 'W', null, null, 'RADIO', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('50d4b985-35ad-44a2-9a97-0ff7a8953841', '0142', '142', 'VVVF#7 - 배터리 전원저하(P100LVD)', 'M4', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('50e10ad3-4b99-42db-9633-51e1f7c186ed', '0501', '501', 'DCU#1 4위(L2)-출입문 차단', 'Tc1', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('5112c5af-3289-488d-94b0-c79959f9be23', '0106', '106', 'VVVF-쵸퍼과전류 검지(BOCD) (Car7)', 'M4', 'C', 'VVVF-쵸퍼과전류 검지(BOCD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT31의 Bit1 “BOCD” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 '쵸퍼과전류 검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치에서 제동저항기로 출력되는 전류가 1100A 이상일 경우 검지됨.', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반배전반의 VVVFIC nfb 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 제동저항기로 흐르는 전류치 확인함. +3) 전류치가 비정상적일 경우 제동쵸퍼유닛에 설치된 IGBT, 전류센서, 고전압회로 결선 상태를을 확인한다. +4) 전류센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작상태를 시험기를 통해 확인한다. +6) 제동저항기의 이물질 침투여부를 확인하며, 제동저항기 저항치가 적정한지 확인한다. +7) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.656536+00', null, '다대48량(2015)', 'Rotem'), ('511e6a06-d049-455a-bf76-08db766ffe1f', '0407', '407', 'SIV#1 - 인버터2 입력과전압(INV2OV)', 'Tc1', 'C', 'SIV-인버터2 입력 과전압(INV2OV)', 'C', 'SIV', '보조전원장치(SIV)의 RS485 데이터 중 SIV-TCMS SD TEXT6의 Bit5 “INV2OV” 신호가 “1”이 되면 검지 +', '1) TCMS 화면하단 또는 고장화면에 ‘인버터2 입력 과전압(INV2OV)' 표시됨. +2) 보조전원장치(SIV)는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 보조전원장치(SIV) 중고장이 발생함. +5) 중고장이 발생되면 TCMS 일반화면에 보조전원장치(SIV) 상태 붉은색으로 표기되며, 연장급전 됨.', '보조전원장치(SIV) 내부 인버터2의 FC 전압이 1,200V 이상일 경우 검지됨. +', '1) 경고장이 발생할 경우 보조전원장치(SIV) 자동 재기동에 의해 재기동 됨. +2) 중고장이 발생했을 경우 조치 완료 후 보조전원장치(SIV) 리셋으로 고장 소거됨.', '1) 상기 고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 보조전원장치(SIV) 고장기록을 수집하여 FC전압에 이상이 있는지 확인한다. +3) 보조전원장치(SIV) 내부 고전압부에 소손흔적이 있는지 확인한다. +4) FC에 연결된 부스바의 체결상태가 양호한지 확인한고, 부스바를 분리하여 FC의 Capacitance를 측정하여 이상이 없는지 확인한다. +5) 전압센서와 보조전원장치(SIV) 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +6) SEN 보드의 동작 상태를 시험기를 통해 확인한다. +7) 출력단 각상의 절연상태 및 각상과 접지 간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('51239e39-ac89-49dc-8f32-137c3ed3c5b5', '0519', '519', 'DCU#6 2위(L1)-ZVR 신호 에러', 'M3', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 "ZVR signal error” 신호가 "1"이 되면 검지.', '출입문이 강제로 닫히게 되고, 열림은 불가능', '1) 차량 ZVR 신호가 없는 상태 (차량 주행상태) 에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함.', '해당출입문 ZVR 신호 수신', '1) 차량이 주행중이라면, 차량이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.392739+00', null, '로템40량(2018)-1단계', 'Rotem'), ('5126fa7e-2d61-44af-a3e1-2a2cefd3dc96', '0844', '844', '비상인터폰#2(PEI) 고장(Car#4)', 'T1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5127d451-cc43-4121-b393-c6da8f702b43', '0513', '513', 'DCU#6 5위(R3) - 모듈 상태체크 에러', 'M3', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 “Module check error” 신호가 “1”이 되면 검지 +', 'Modulecheckerror현시(출입문은 정상작동가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태 체크 기능에 이상이 생긴 경우 고장 발생 +', 'DCU의 ‘A' 모듈과 ‘B' 모듈 간, 상태 체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('512f7d99-5d29-407c-b7cb-49747f99d0aa', '0503', '503', 'DCU#2 4위(L2) - 출입문 내부 비상핸들 취급(EED)', 'M1', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('51317ca0-ede1-4cef-9322-d93d9a6cd431', '1522', '1522', 'TCMS 데이타버스1 좌측라인 통신 이상(Car7)', 'M4', 'C', 'TCMS 데이터버스1 좌측라인 통신 이상', 'C', 'TCMS', 'TCMS의 초기 기동 시 자기진단에 의한 2중계 메인통신선 중 1계 메인통신 이상 검지 시 +', '1) SL-NET 2중계이므로 데이터버스 2계로 정상통신, 운행에 지장 없음. +2) 초기기동 자기진단 시 2중계를 점검하여 1계측의 이상이 검지되었다는 점검 필요용 메시지', '초기 기동 시 SL-NET 1계와 2계를 각각 통신 후 비교하여 2계는 정상통신이 되나 1계는 정상통신이 안 되는 경우 +', '정상 수리 후 차량 전체 재기동하여 SL-NET 1계와 2계 모두 정상통신이 되는 경우', '1) 고장검출호차와 고장검출 좌측호차와의 SL-NET 통신 1계 정상여부 확인(예 : 고장호차가 3호차인 경우 1-2-3-4-5-6-7-8에서 3호차의 좌측, 즉 2-3호차 간 SL-NET 1계 통신 상태 점검 필요) +2) 고장검지호차의 SCM PCB 교체 정상여부 확인 +3) 고장검지호차의 좌측호차 SCM PCB 교체 정상여부 확인 +4) 고장검지호차와 고장검지 좌측호차의 SL-NET 1계 메인통신 배선의 연결 상태 확인 +5) 상기 2 ~ 4번 점검에도 정상적으로 복귀되지 않는 경우, CU/TU ASS'Y 교체(백보드 확인 필요)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5137d3ec-7bb0-4459-b515-041d8b96ced2', '1212', '1212', 'FDU#7 -', 'M4', null, null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5146631a-b11f-435a-bc39-3287fdd731d6', '1405', '1405', 'BMS#8 - 배터리 저전압(BUV, 75V 이하)', 'Tc2', 'B', 'BMS-배터리 저전압(BUV, 75V 이하)', 'B', 'BMS', '해당 차량의 배터리 전압이 74.8V 이하가 되면 검지 +', '차량 배터리팩 저전압검지 후, 73.5V 이하이면 방전접촉기(DCK)가 차단된다.', '배터리팩 저전압(74.8V 이하) +', '배터리팩 전압 정상범위로 회복(75 ~ 105V)', '1) 배터리 NFB 상태 확인 +2) 이상이 없으면 차량 전체를 리셋한다. +3) 차량 리셋 후에도 동일고장이면 사령실과 연락하여 조치를 취한다. (외부 충전기 연결 또는 차량 지원)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('51494441-503c-4ef4-b7d1-1a934a3a6026', '0501', '501', 'DCU#4 4위(L2)-출입문 차단', 'T1', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('514b45cb-abe6-4811-a36e-62b9f417012e', '0730', '730', 'HVAC#5 - 냉난방장치1 토출 센서 고장', 'T2', 'C', 'HVAC-냉난방장치1 토출 센서 고장', 'C', 'HVAC', '냉난방장치1의 토출 센서 고장 발생 +', '냉난방장치1 토출 센서 고장현시', '온도센서 검지범위는 -45 ~ 85도(820 ~ 1,330Ω)인데, 2초 이상 검지범위를 벗어나는 경우 +', '온도센서 검지값이 2초 이상 허용온도 범위 내일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820 ~ 1,330Ω을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5153b917-ba6f-4c0e-b4a1-ecc3bbd12d79', '0703', '703', 'HVAC#1 - 냉난방장치1 압축기2 과부하', 'Tc1', 'C', 'HVAC-냉난방장치1 압축기2 과부하', 'C', 'HVAC', 'HVAC 냉방 작동 중 냉난방장치1 압축기2 또는 응축기2 모터에 과부하 발생 +', '냉방 기능 저하(전냉방 시 반냉방으로 작동)', ' +1) 냉방 작동 중 UNIT1의 압축기2 또는 응축기2 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRCM2와 연결된 THR2가 Trip 됨. +', 'UNIT1의 압축기2 또는 응축기2 모터의 과부하조건을 해소하여 정상 가능 상태로 만들고, THR2 및 마이콤 전원 리셋', '1) 냉난방 배전반의 점검커버를 열고, THR2의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR2의 전류 세팅값이 11.5A에 맞춰져 있는지 확인하여, 아닐 경우, (+) 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동시킨 후, THR2의 2차측 2, 4, 6 단자에서 각 단자 간 상간 전압이 AC 380V로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 압축기 및 응축기 단품 상태에서 점검을 한다. +7) THR2의 2차측 2, 4, 6 단자에서 각 단자 간 권선저항이 모두 같은지 확인한다. (±10% 이하) (압축기2 및 응축기2 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT1의 압축기1 또는 응축기1 모터의 결선을 해제한 후 각 부품의 권선저항을 확인 후, 문제가 있는 부품을 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR2 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('51638fb0-758e-44cb-975b-cd5ac7baaa88', '764', '764', 'CAB HVAC#8 - 주전원 이상', 'Tc2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('51671aa8-0f80-4a8d-840a-e7e2d836a0cd', '0504', '504', 'DCU#3 4위(L2)-출입문 외부비상핸들 취급(EAD)', 'M2', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('516ef52c-d420-4be2-a27c-ddf503d426fe', '0740', '740', 'HVAC#1 - 전자접촉기 증발기1(CREF) 고장', 'Tc1', 'C', 'HVAC-전자접촉기 증발기1(CREF) 고장', 'C', 'HVAC', 'HVAC 냉방 작동 중 CREF1 전자접촉기 고장 발생 +', 'UNIT1 냉방 작동 불가', '냉방 작동 중 2.5초 이상 동안 CREF1 작동 feedback 신호가 수신되지 않는 경우 +', 'CREF1 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CREF1을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CREF1과 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('518b563e-7215-4cc2-8b12-12a8662ea289', '0737', '737', 'HVAC#8 - 전자접촉기 증발기4(CREF) 고장', 'Tc2', 'C', 'HVAC-전자접촉기 증발기4(CREF) 고장', 'C', 'HVAC', 'HVAC 냉방 작동 중 CREF4 전자접촉기 고장 발생 +', 'UNIT2 냉방 작동 불가', '냉방 작동 중 2.5초 이상 동안 CREF4 작동 feedback 신호가 수신되지 않는 경우 +', 'CREF4 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CREF4를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CREF4와 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('518bab23-3d34-4727-8432-ea6c48ead1a4', '0512', '512', 'DCU#5 4위(L2)-파라미터 로딩 실패', 'T2', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 "Paraneter error” 신호가 "1"이 되면 검지.', 'Parameter error 현시 (출입문은 정상작동 가능)', 'DCU 자체내의 EEPROM으로부터 parameter 데이터 로딩 실패', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('51a58bd9-32d3-4447-b4a3-b21c636cc3b5', '0502', '502', 'DCU#3 1위(R1) - 출입문 장애물검지', 'M2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('51a7cc4c-a805-4498-9867-d8158ff7d1f9', '0006', '6', 'DU 통신고장', 'Tc2', 'B', 'DU 통신고장(TC1)', 'A', 'TCMS', '운전실 TCMS 화면의 통신고장 +', '1) 후부차 TCMS 화면의 CU-DU 간 통신불능 시 화면에 현시(선두차 TCMS 화면 정상 시 정상 운행 가능) +2) 해당 화면의 동작 정지', 'CU에서 DU의 통신정보를 수신 받지 못할 경우 해당 고장 현시 +', 'DU가 정상적으로 통신을 재개할 경우 소거됨.', '1) CU1, 2의 전원차단기 리셋(OFF → ON) 실시 +2) 또는 DU 전원차단기 리셋(OFF → ON) 실시 +3) DU 전원 LED(녹색)가 OFF 되어 있다면 DU 후부의 전원커넥터 체결 등을 확인 +4) 전원공급이 정상이고 화면도 정상적으로 부팅이 되는데 차량 정보 현시가 되지 않으면, DU 후부의 통신커넥터 체결 등을 확인(통신 커넥터 체결이 정상이라면, CU가 정상인지 확인) +5) 위 +3)번의 상황에서 모두 정상이라면, CU의 MCPU PCB 교체 +6) 위 조건이 모두 맞지 않으면 DU를 교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('51b1676a-5d6c-45fc-9557-a33e38cc757f', '0092', '92', '화재검지기 고장(Car7)', 'M4', 'C', null, null, 'FDU', null, null, null, null, null, null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('51bbc7e6-b11c-4d4e-b7d8-621be612d04c', '0176', '176', 'VVVF#2-LB1 고착(LB1NO)', 'M1', 'C', 'VVVF-LB1 고착(LB1NO)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT34의 Bit1 “LB1NO” 신호가 "1"이 되면 검지.', null, 'LB1 개방조건에서 투입상태 유지 시 고장검지.', '동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) 주회로 차단기함 내에 LB1의 주접점을 확인하여 고착여부를 확인한다. +2) 주회로 차단기함 내에 LB1의 보조접점을 확인하여 고착여부를 확인한다. +3) 추진제어장치 계전기 유니트에 LB1R 계전기 상태를 확인하여 고착여부를 확인한다. +4) 추진제어장치 시험기를 이용하여 TCU(통합제어기) 시험을 실시하여 이상여부를 확인한다. +5) 상기의 점검부분에 이상이 있을경우 관련부품을 교체한다.', null, '3', '2025-10-12 01:21:37.578803+00', null, '로템40량(2018)-1단계', 'Rotem'), ('51beab18-77a2-4186-a37e-f148d61e6f75', '1521', '1521', 'TU 모듈고장 - AUX4(Car6)', 'M3', 'C', 'TU 모듈고장 - AUX4', 'C', 'TCMS', 'TU의 AUX4 PCB가 이 정상적으로 인식되지 않아 점검이 필요할 때 +', 'TU의 AUX4 PCB는 예비 채널용 PCB로 운행에 지장이 없음.', 'TU AUX4의 ID를 정상적으로 검출하지 못할 때 화면에 현시 +', 'TU AUX4의 ID를 정상적으로 검출하는 경우 소거됨.', '1) TU의 AUX4 PCB 교체 +2) 불량 해소가 되지 않을 경우, 순차적으로 SCM, DIM PCB를 교체하여 정상여부 확인', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('51c9ee72-4fbe-441b-9527-d9187c3d5ddc', '0735', '735', 'HVAC#1 - 전자접촉기 압축기(CRCM)2 고장', 'Tc1', 'C', 'HVAC-전자접촉기 압축기(CRCM)2 고장', 'C', 'HVAC', 'HVAC 냉방 작동 중 CRCM2 전자접촉기 고장 발생 +', '냉방 기능 저하(전냉방 시 반냉방으로 작동)', '냉방 작동 중 2.5초 이상 동안 CRCM2 작동 feedback 신호가 수신되지 않는 경우 +', 'CRCM2 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CRCM2를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRCM2와 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('51ca37dc-b2a6-4c7e-9a8b-4e72cac9fec7', '0518', '518', 'DCU#1 3위(R2) - 출입문 Enable 신호 에러', 'Tc1', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 “Enable signal error” 신호가 “1”이 되면 검지 +', 'DCU 출입문Enable신호에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드 시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을 때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드 시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입 상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호 장치로부터의 출입문 열림 명령 신호) 취급 시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함. +', '해당 출입문 enable 신호수신', '1) AUTO/MCS 모드 시에는 YARD 모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인 한다. (YARD/FMC 모드 시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('51e08c41-0732-41b2-9b48-58fb5d9aeffe', '0320', '320', 'ATC#8-', 'Tc2', '0', null, null, '0', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('51e2edcc-6cc4-4f3d-ad93-cd1e88e296ea', '0739', '739', 'HVAC#4-전자접촉기 증발기2(CREF) 고장', 'T1', 'C', 'HVAC-전자접촉기 증발기2(CREF) 고장', 'C', 'HVAC', 'HVAC 냉방작동 중 CREF2 전자접촉기 고장 발생.', 'UNIT1 냉방 작동 불가', '냉방작동 중 2.5초 이상동안 CREF2 작동 feedback 신호가 수신되지 않는 경우', 'CREF2 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CREF2를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CREF2와 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('51e3f4f6-1023-4a6a-ae85-1c7db05756b3', '0521', '521', 'DCU#4 3위(R2) - 모듈 상태 이상', 'T1', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 “01” 또는 “00”이 되면 +검지 +', '이중계절체동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러)이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('520c71e3-182d-42fa-bbfd-4b680aa72b0c', '0506', '506', 'DCU#1 2위(L1) - 출입문 입력 저전압', 'Tc1', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 “1”이 되면 검지 +', '저전압상태(출입문 동작이 심하게 느려지거나 작동조차 안 될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하 +', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('521206dd-b736-46f7-b193-b32e76bfccb9', '0736', '736', 'HVAC#3-전자접촉기 압축기(CRCM)1 고장', 'M2', 'C', 'HVAC-전자접촉기 압축기(CRCM)1 고장', 'C', 'HVAC', 'HVAC 냉방작동 중 CRCM1 전자접촉기 고장 발생.', '냉방 기능 저하(전냉방시 반냉방으로 작동)', '냉방작동 중 2.5초 이상동안 CRCM1 작동 feedback 신호가 수신되지 않는 경우', 'CRCM1 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CRCM1을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRCM1과 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('5219a0ae-a74b-48d8-a343-124b19ef90a7', '0200', '200', 'BECU#4 통신고장', 'T1', 'B', 'BECU-통신고장', 'B', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT23의 'Life sign'이 변하지 않음.', '해당 차량 통신고장 현시 및 해당 차량의 제동압력(BCP) 등의 데이터가 반응하지 않음. (고장은 현시되나 제동제어는 정상적 일 수 있음)', 'BECU 전원 CB OFF 혹은 통신연결 불량.', 'BECU와 TCMS 간 RS485 통신이 복귀 되어 BECU-TCMS SD TEXT23의 'Life sign'이 변동시 소거.', 'BECU를 리셋(BECU CB OFF/ON) 후 복귀여부를 확인. +리셋 후 복귀되지 않을 경우 관제보고하고 지시에 따를 것.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('521eaf82-5d64-4802-8184-590a0f819da4', '0749', '749', 'HVAC#4-380V 전원고장', 'T1', 'C', 'HVAC-380V 전원고장', 'C', 'HVAC', 'HVAC 메인 전원 AC 380V 전원 고장 발생', 'HVAC 냉방 및 난방 기능 불가', '차량으로부터 공급되는 AC 380V가 입력되지 않는 경우', '차량으로부터 AC 380V 전압이 정상적으로 입력', '1) 차량으로부터 AC 380V 전압이 정상적으로 입력되는지 확인한다. +2) 차량전원이 정상일 경우, 냉난방 배전반의 CBLVD 차단기가 꺼져 있는지 확인 후, 꺼져있을 경우, 켠다. +3) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('52215a93-a41a-4da5-a297-2fab4f2084d6', '0087', '87', '화재검지기 고장(Car2)', 'M1', 'C', null, null, 'FDU', null, null, null, null, null, null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('5240e46d-872f-4490-8993-893adadb8a58', '0302', '302', 'ATC#8 - EB 명령', 'Tc2', 'W', 'ATC-EB 명령', 'W', 'ATC', 'ATC의 RS485 데이터 중 ATC-TCMS SD TEXT12의 Bit0 “EB Command” 신호가 “1”이 되면 검지 +', '1) MMI 화면에 열차EB체결관련메시지현시 +2) MMI 화면에 EB체결 경보음 출력 +3) 비상제동 체결', ' +1) 제한속도 초과 시, 과속조건(FSB)에서 3초 동안 일정감속도(2.4km/h/s) 이하일 경우 +2) 노코드(02코드) 검지 시 +3) 열차 Rollback(방향제어기와 이동방향 다를 경우 ) +4) No Motion Time Out(추진 시, 10초 이상 움직이지 않을 경우 ) +5) ATS STOP 신호 검지 시 +6) 열차 이동 시, 모드 전환 에러 +7) 열차 이동 시, 방향 제어기 스위치 전환 에러 +8) ATCATO 1, 2계 동시 고장 발생 시 +9) FA/AUTO 운전모드에서 PG3-2 검지 시점 열차속도 25km/h 이상 +10) MCS 운전모드에서 후진 2m 이상 이동 시 +11) FA/AUTO운전모드에서 PG1 미검지 상태에서 PG2 검지 시 +', '열차정지(영속도 검지) 및 마스콘 제동 취급 시', '열차정지 및 마스콘 제동 취급이 되었는지 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('52451394-20cc-4af1-9660-313a0292e0d3', '0870', '870', '실내카메라#2(SCAM) 고장(Car#7)', 'M4', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5263719a-f342-481e-92f0-c8aa79bf760c', '0511', '511', 'DCU#6 6위(L3)-출입문 닫힘 리미트 스위치2 고장', 'M3', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 "DCS2 Failure(Right)” 신호가 "1"이 되면 검지.', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('5268ac7a-bb39-4748-a8e1-e87c44e9554c', '1209', '1209', 'FDU#8-스위치 고장', 'Tc2', 'C', 'FDU-스위치 고장', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT5의 Bit4 “Switch Fault” 신호가 "1"이 되면 검지.', 'Switch Fault 현시 및 FDU의 조작 버튼 동작 안됨(화재 검지 및 기타 기능에는 상관없음)', '1) FDU가 부팅될때 스위치가 눌려진 상태(3.3V 전압이 인가된 상태)인 경우 +2) FDU가 부팅될때 스위치 고장으로 인하여 항상 눌러진 상태(3.3V 전압이 인가된 상태)에 있는 경우.', 'FDU가 부팅될때 스위치가 눌려진 상태(3.3V 전압이 인가된 상태)가 아닌 경우 +조치조건 : +1) 고장이 발생한 수신기의 스위치 상태 확인 및 점검 +2) FDU의 전원을 리셋하여 소거여부 확인 +3) 문제가 지속될 경우, 수신기 교체', null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('527ac65c-b428-478d-9330-f7d464dfb5ba', '0714', '714', 'HVAC#7-냉난방장치1 압력스위치2(DPS) 고압', 'M4', 'D', 'HVAC-냉난방장치1 압력스위치2(DPS) 고압', 'D', 'HVAC', '냉난방장치1 냉매 압력스위치2 고압 발생.', 'UNIT1 CYCLE2 냉방 기능 불가', 'UNIT1 DSP2측 냉매 압력이 3초 이상 28±1(kgf/cm2) 이상 되는 경우', '냉매 압력이 정상 수치 15±0.7(kgf/cm2 이하로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CRCM2의 부하측 전류를 측정하여 응축기 팬의 동작여부를 확인한다. +2) 응축기 코일의 전면에 이물질로 인한 막힘이 있는지 확인한다. +3) 응축기 팬 상부 그릴에 외부 이물질로 인한 막힘이 있는지 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('5283dacd-d0a4-415a-954e-7e14dfb5c592', '0141', '141', 'VVVF#6 - 제어전원전압 이상(PWM1) (CLVD_P1)', 'M3', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5292eb55-da9c-4ef9-b2b1-2c3e4d0f4bdf', '0711', '711', 'HVAC#6-냉난방장치2 압력스위치1(DPS) 저압', 'M3', 'D', 'HVAC-냉난방장치2 압력스위치1(DPS) 저압', 'D', 'HVAC', '냉난방장치2 냉매 압력스위치1 저압 발생.', 'UNIT2 CYCLE1 냉방 기능 불가', 'UNIT2 DSP1측 냉매 압력이 3초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우', '냉매 압력이 정상 수치 2±0.5(kgf/cm2 이상으로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CREF4의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)을 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안되는 것을 확인한 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('52a4838b-10e2-4d6b-be64-5eb20813d917', '0509', '509', 'DCU#6 2위(L1) - 출입문 잠김 리미트 스위치 고장', 'M3', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 “DLS Failure” 신호가 “1”이 되면 검지 +', '출입문 잠김 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('52adcddf-7b70-4c25-87af-5c467f904e49', '0516', '516', 'DCU#5 3위(R2)-출입문 장애물로 인한 닫힘 실패', 'T2', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Close failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림상태로 대기', '도어 닫힘 중 3회 장애물 감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('52bfcf36-3082-4c9f-ae29-8722c5ed182c', '0510', '510', 'DCU#1 4위(L2)-출입문 닫힘 리미트 스위치1 고장', 'Tc1', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 "DCS1 Failure(Leftt)” 신호가 "1"이 되면 검지.', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('52c2d346-8d16-44e9-b226-8a5faa16a5c4', '0521', '521', 'DCU#7 1위(R1)-모듈 상태 이상', 'M4', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 "01"또는 "00"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('52c33e77-1a96-4f58-8262-b6208107a270', '0508', '508', 'DCU#5 4위(L2)-출입문 모터/인코더 고장', 'T2', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 "Motor / Encoder failure” 신호가 "1"이 되면 검지.', '출입문 정상동작 불가', '1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우 (인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터 / 인코더 회로가 손상된 경우', '모터/인코더 및 DCU가 정상상태이고, 전기적 연결상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있느지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. +★ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. + +1. DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. +2. DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) +3. DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('52c3f3e9-8c98-4ad5-8633-592ef33346e7', '0520', '520', 'DCU#4 2위(L1) - 이중계 절체 동작', 'T1', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 “Module switchover” 신호가 “1”이 되면 검지 +', '이중계 절체 동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러) 이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A'모듈 및 ‘B'모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('52c4d39c-7322-48ea-bf17-4fb6fa408a3c', '0512', '512', 'DCU#3 6위(L3)-파라미터 로딩 실패', 'M2', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 "Paraneter error” 신호가 "1"이 되면 검지.', 'Parameter error 현시 (출입문은 정상작동 가능)', 'DCU 자체내의 EEPROM으로부터 parameter 데이터 로딩 실패', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('52c9f5e7-6992-438a-9c20-8f44941f02b9', '0107', '107', 'VVVF-전동기 과전류 검지(MOCD) (Car7)', 'M4', 'C', 'VVVF-전동기 과전류 검지(MOCD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT31의 Bit2 “MOCD” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 '전동기 과전류 검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치에서 견인전동기로 출력되는 U, V, W 상의 전류가 1,850A 이상일 경우 검지됨.', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반배전반의 VVVFIC nfb 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 견인전동기로 출력되는 3상의 전류치 확인함. +3) 특정상의 전류치가 비정상적일 경우 특정상에 해당되는 IPM, 전류센서, 모터결선을 확인한다. +4) 전류센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작상태를 시험기를 통해 확인한다. +6) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +7) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.656536+00', null, '다대48량(2015)', 'Rotem'), ('52e21561-f853-4e0a-99fd-474be9e73286', '0204', '204', 'BECU#7-응하중 비정상', 'M4', 'C', 'BECU-응하중 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit3 “응하중 비정상” 신호가 "1"이 되면 검지.', '해당 차량 응하중 비정상 검지 현시.', '해당 차량의 응하중 출력이 정상범위를 벗어남.', '해당 차량 응하중 출력이 정상범위로 복귀 시 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('52ef8bdc-8d98-4e8a-ab4b-6f9d04579e54', '0742', '742', 'HVAC#1-전자접촉기 보조히터3(AHEK) 고장', 'Tc1', 'C', 'HVAC-전자접촉기 보조히터3(AHEK) 고장', 'C', 'HVAC', 'HVAC 보조난방기 작동 중 AHEK3 전자접촉기 고장 발생.', 'UNIT2 보조난방기 전난방 시 반난방만 작동', '보조난방기 작동 중 2.5초 이상동안 AHEK3 작동 feedback 신호가 수신되지 않는 경우', 'AHEK3 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) AHEK3을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, AHEK3과 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('52fe0577-fe9f-40de-a8fe-60285e70b69f', '0159', '159', 'VVVF#2-제어전원전압이상(PWM2)(CLVD_P2)', 'M1', 'C', 'VVVF-제어전원전압이상(PWM2)(CLVD_P2)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT32의 Bit0 “CLVD_P2” 신호가 "1"이 되면 검지.', null, 'PWM보드 내부의 제어전원 이상 검지 시 중고장 발생.', '동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) PWM보드 2군 전면의 CN1, CN2 커넥터 핀 상태 및 체결상태 확인. +2) PWM보드 2군 내부의 PCB의 소손, 냉납, 열화 유무 확인. +3) 추진제어장치 시험기를 이용하여 PWM보드의 정상동작을 확인한다. +4) 상기의 점검부분에 이상이 있을 경우 관련부품을 교체한다.', null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('5315512e-0225-4f7b-a290-0bbbabd5a59c', '0213', '213', 'BECU#2 - AC 압력센서 고장', 'M1', 'C', 'BECU-AC 압력센서 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit4 “AC 압력센서 고장” 신호가 “1”이 되면 검지 +', '해당 차량 공기제동장치고장, AC 압력센서 고장검지 현시 및 해당 차량 제동제어불가', '해당 차량의 AC 압력센서 고장 +', '해당 차량의 AC 압력센서가 정상일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5315f7aa-feb5-412b-b35c-61d06c77ce33', '0503', '503', 'DCU#4 6위(L3) - 출입문 내부 비상핸들 취급(EED)', 'T1', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5317d650-b3f4-46ae-adae-f7dcfb9440c2', '0223', '223', 'BECU#3 - 공기스프링 누설(전두대차)', 'M2', 'C', 'BECU-공기스프링누설(전두대차)', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit6 “공기스프링누설(전두대차)” 신호가 “1”이 +되면 검지 +', '해당 차량 공기스프링 누설(전두대차) 검지 현시 및 해당 차량 정상적인제동제어 불가 (응하중제어)', '해당 차량 전두대차의 공기스프링(AS1, AS2) 압력이 정상범위를 벗어남. (100kPa 미만) +', '해당 차량 전두대차의 공기스프링(AS1, AS2) 압력이 정상범위일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('532e07ae-858b-4231-b22d-63daaca5e866', '0501', '501', 'DCU#6 5위(R3)-출입문 차단', 'M3', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('53403c2a-199e-4385-b9e1-948dd9a2b06d', '0726', '726', 'HVAC#2-배기팬2 과부하', 'M1', 'C', 'HVAC-배기팬2 과부하', 'C', 'HVAC', 'HVAC 환기작동 중 차량 배기팬2 모터에 과부하 발생.', '환기 시 차량 배기팬2 운전 불가능', '1) 냉방작동 중 챠량 배기팬2 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRVF2와 연결된 THR10이 Trip 됨.', '차량 배기팬2 모터의 과부하 조건을 해소하여 정상 가능 상태로 만들고, THR10 및 마이콤 전원 리셋', '1) 냉난방배전반의 점검커버를 열고, THR10의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR10의 전류 세팅값이 2.5A에 맞춰져 있는지 확인하여, 아닐 경우, 십자 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동 시킨 후, THR10의 2차측 2,4 단자와 6 단자 사이의 전압이 DC 100V으로 정상 측정되는지 확인한다. +5) 만약 전압이 측정되지 않을 시, 전원이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, THR10 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('53421bef-c23e-4e3f-945c-bca052199741', '0515', '515', 'DCU#3 2위(L1)-출입문 열림 시간 초과', 'M2', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 "Open time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 열림 동작시간이 6초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도 한 후, '장애물로 인한 열림실패' 고장과 함께 'Open time out' 고장이 함께 현시', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('53475fb9-ad37-44d7-aa9b-536cd5588585', '0077', '77', 'PWM 엔코더#1#2 전체 고장', 'Tc2', 'A', 'PWM엔코더 #1 #2전체고장', 'A', 'VVVF', '차량으로부터 PWM ENCODER#1(#2) FAULT 신호 미입력시', '1) 엔코더 1계 PWM 출력 고장시 1계 고장에 해당되는 신호 출력 +2) 엔코더 2계로 자동 절체 +3) 엔코더 2계 PWM 출력 고장시 1계, 2계 고장 모두 출력 +4) 엔코더 PWM 출력 신호 없음', '1) 엔코더 1계 PWM 출력 신호 이상 시 +2) 엔코더 2계 PWM 출력 신호 이상 시 +3) 엔코더 1계, 2계 PWM 출력 신호 이상 시 +4) 엔코더 수동절체버튼 3초 이상 조작 시', '1) 엔코더의 전원 차단 후 재투입하여 소거되는지 확인 +2) 수동절체버튼의 조작으로 인한 고장 출력 또한 전원 재투입으로 소거함', '1) 엔코더의 전원 차단 후 재투입하여 소거되지 않을 시 정상품으로 교체하여 정상동작 확인 +2) 교체된 고장품의 고장원인 분석', ' +REC20210HN0', '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('53522a85-1a6f-40bf-8a8a-10f254aea28f', '0512', '512', 'DCU#7 4위(L2) - 파라미터 로딩 실패', 'M4', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 “Paraneter error” 신호가 “1”이 되면 검지 +', 'Parametererror 현시(출입문은 정상작동 가능)', 'DCU 자체 내의 EEPROM으로부터 parameter데이터 로딩 실패 +', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5357ec34-a1af-48ea-baf9-3fb3368b8c9f', '0240', '240', 'BECU#7 - 2축 스키드신호', 'M4', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('535ae5fe-dcc6-441e-a980-656ff19f7386', '0156', '156', 'VVVF#7 - 전진/후진 이상검지(FRD)', 'M4', 'C', 'VVVF-전진/후진 이상 검지(FRD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT31의 Bit5 “FRD” 신호가 “1”이 되면 검지 +', '1) TCMS 화면 하단 또는 고장화면에 ‘전진/후진 신호 이상 검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생함. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉은색으로 표기되며, HSCB, LB1, 2 개방되어 동력 손실 발생함.', '추진제어장치 입력되는 역행/제동신호가 동시에 입력될 경우 검지됨. +', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반 배전반의 VVVFIC nfb 재투입 또는 차량 배터리 전원 재투입', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 전진/후진신호에 이상이 있는지 확인한다. +3) 차량의 제어 회로 중 전진/후진 신호가 추진제어장치로 연결되는 경로에 이상이 없는지 확인 한다. +4) DIN 보드의 동작 상태를 시험기를 통해 확인한다. +5) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('53610c9c-38ad-477e-84ac-49d563683a4b', '1113', '1113', '0', 'Tc2', '0', 'PSD-차상/지상간 통신장애', 'C', 'PSD', 'PSD 의 RS485 데이터 중 PSD-TCMS SD TEXT2의 Bit4 “차상/지상간 통신상태” 신호가 "0"이 되면 검지', 'PSD 지상장치 통신 연결 또는 전원 ON시 NG발생 +역사내 진입전 NG 발생 -> 역사내 진입후 NG 복귀 등의 현상이 일어날 경우', '차상장치내 무선모듈의 불량이 주원인이며, 설정 및 채널 변경오류시 발생됨. 또는 지상장치의 통신 연결 오류', '운전실 후부 PSD CN을 OFF - ON 실시하고 복귀가 되지 않을 경우 PSD 조작반을 취급하여 운행한다. 차량사업소 복귀후 해당 차상장치 및 지상장치 점검을 한다.', null, null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('5365172e-0ba5-4475-b37c-6e34e80f495a', '0753', '753', 'HVAC#7-배기댐퍼 열림고장', 'M4', 'C', 'HVAC-배기댐퍼 열림고장', 'C', 'HVAC', '환기 시, 차량 배기댐퍼가 열려 있는 상태에서 배기댐퍼 열림 리미트 스위치가 작동되지 않음', '배기댐퍼 열림 고장 현시', '배기댐퍼를 열림으로 제어했으나 열림 리미트 스위치 입력이 없을 경우', '배기댐퍼 열림 상태에서 리미트 스위치 입력이 정상적으로 입력', '1) 배기댐퍼가 열린 상태에서 열림 리미트 스위치가 정상적으로 작동되었는지 확인한다. +2) 열림 리미트 스위치가 정상작동 되었음에도 문제가 발생될 경우, 스위치를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('536f8191-5bc4-4c46-aa40-c1d825bac0f4', '1504', '1504', '냉방장치용 AC 회로차단기 차단(Car2)', 'M1', 'W', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('53a76720-72aa-4235-8871-cc98696037ee', '0504', '504', 'DCU#1 1위(R1) - 출입문 외부 비상핸들 취급(EAD)', 'Tc1', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('53a83c99-9013-4e13-8ee4-18f55f9872ad', '0508', '508', 'DCU#5 2위(L1)-출입문 모터/인코더 고장', 'T2', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 "Motor / Encoder failure” 신호가 "1"이 되면 검지.', '출입문 정상동작 불가', '1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우 (인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터 / 인코더 회로가 손상된 경우', '모터/인코더 및 DCU가 정상상태이고, 전기적 연결상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있느지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. +★ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. + +1. DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. +2. DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) +3. DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('53b5ac75-1559-472d-972c-63b93ae9863e', '0207', '207', 'BECU#3 - 자기진단 고장', 'M2', 'C', 'BECU-자기진단고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit6 “RAM 점검 고장” 신호가 “1”이 되면 검지 +', '해당 차량 자기진단 고장검지 현시 및 해당 차량 활주제어 불가', '해당 차량 BECU의 자가진단 시 고장 발생(활주방지밸브 고장) +', '해당 차량 BECU의 자가진단 시 정상적일 경우 소거(활주방지밸브 정상)', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('53e93c90-40a5-47f0-8c61-f2256f5071b7', '0709', '709', 'HVAC#2 - 냉난방장치2 압력스위치2(DPS) 저압', 'M1', 'D', 'HVAC-냉난방장치2 압력스위치2(DPS) 저압', 'D', 'HVAC', '냉난방장치2 냉매 압력스위치2 저압 발생 +', 'UNIT2CYCLE2 냉방기능불가', 'UNIT2DSP2측 냉매압력이 3초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우 +', '냉매압력이 정상수치 2±0.5(kgf/cm2) 이상으로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CREF4의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)를 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설 여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안 되는 것을 확인한 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('540b702c-0655-44d5-b478-f8ad3056d1d7', '0400', '400', 'SIV#8 통신고장', 'Tc2', 'B', 'SIV-통신고장', 'B', 'SIV', '보조전원장치(SIV)와 TCMS 간 RS485 통신고장이 검지되면 발생 +', 'TCMS 화면에 고장정보 현시되며, 보조전원장치 상태화면에 나타나는 출력전압 등의 데이터가 반응하지 않음.', ' +1) TCMS-보조전원장치(SIV)간통신정보가 3초 이상동일한정보로 유지되면 통신고장을 검지함. +2) 또는 SIV 전원 CB가 OFF되었을 시 통신고장 검지함. +', 'TCMS-추진제어장치(VVVF) 간통신정보가정상적으로 통신이 될 경우 소거됨.', '1) 보조전원장치(SIV)리셋 실시 후 통신고장 소거됨을 확인 +2) 통신고장 소거가 되지 않을 경우 보조전원장치 MON 보드 신품으로 교체 후 통신고장 소거 여부 확인 +3) 위 조건에도 고장이 소거되지 않을 경우, TCMS-보조전원장치 간 RS485 통신케이블 연결 상태 점검', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5410bf9f-614c-48aa-8da4-1f5d40c1c0d2', '1411', '1411', 'BMS#8-충전고온(COT, 45도이상)', 'Tc2', 'D', 'BMS-충전고온(COT)', 'D', 'BMS', '해당차량의 배터리 온도가 57도이상이 되면 검지', '차량 배터리 충전고온 검지 후, 60도이상이면 충전 접촉기(CK)가 차단된다.', '배터리 충전고온 (57도 이상).', '배터리 충전고온 정상범위로 회복 (55도 이하)', '1) 배터리 NFB 상태 확인 +2) 이상이 없으면 차량 전체를 리셋한다. +3) 차량 리셋 후에도 동일고장이면 사령실과 연락하여 조치를 취한다 (배터리를 상온조건으로 만든다.)', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('5414ff3e-fa47-4cee-8238-5a13ea2c63ac', '0714', '714', 'HVAC#7 - 냉난방장치1 압력스위치2(DPS) 고압', 'M4', 'D', 'HVAC-냉난방장치1 압력스위치2(DPS) 고압', 'D', 'HVAC', '냉난방장치1 냉매 압력스위치2 고압 발생 +', 'UNIT1CYCLE2 냉방기능불가', 'UNIT1DSP2측 냉매압력이 3초 이상 28±1(kgf/cm2) 이상 되는 경우 +', '냉매압력이 정상수치 15±0.7(kgf/cm2) 이하로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CRCM2의 부하측 전류를 측정하여 응축기 팬의 동작여부를 확인한다. +2) 응축기 코일의 전면에 이물질로 인한 막힘이 있는지 확인한다. +3) 응축기 팬 상부 그릴에 외부 이물질로 인한 막힘이 있는지 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('541ae198-e64e-4e08-ba9f-fd451000586d', '0140', '140', 'VVVF#6-제어전원전압이상(TCU)(CLVD_S)', 'M3', 'C', 'VVVF-제어전원전압이상(TCU)(CLVD_S)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT29의 Bit5 “CLVD_S” 신호가 "1"이 되면 검지.', null, '통합제어기 내부의 제어전원 이상 검지 시 중고장 발생.', '동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) TCU(통합제어장치)의 입력에 제어전원 DC70 ~100V가 인가되는지 확인한다. +2) TCU(통합제어장치) 중 PWS 보드의 ±15V, 5V, 24V의 테스트 단자의 전압을 멀티테스터로 측정하여 전압의 오차가 ±10% 이내인지 확인한다. +3) 상기의 점검부분에 이상이 있을 경우 PWS보드를 교체한다. +4) PWS 보드 교체 후 동일고장 재발 시 TCU(통합제어장치)를 교체한다.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('54253125-3378-422b-a4c3-5c64689c80cf', '0241', '241', 'BECU#3-1축스키드신호', 'M2', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('542e93f3-7af3-4321-86bc-1e8b9fe8e060', '0706', '706', 'HVAC#6-냉난방장치1 증발기2 과부하', 'M3', 'C', 'HVAC-냉난방장치1 증발기2 과부하', 'C', 'HVAC', 'HVAC 냉방작동 중 냉난방장치1 증발기 모터에 과부하 발생.', 'UNIT1 냉방 작동 불가', '1) 냉방작동 중 UNIT1의 증발기 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CREF2와 연결된 THR6이 Trip 됨.', 'UNIT1의 증발기 모터의 과부하 조건을 해소하여 정상 가능 상태로 만들고, THR6 및 마이콤 전원 리셋', '1) 냉난방배전반의 점검커버를 열고, THR6의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR6의 전류 세팅값이 3A에 맞춰져 있는지 확인하여, 아닐 경우, 십자 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동 시킨 후, THR6의 2차측 2,4,6 단자에서 각 단자간 상간 전압이 AC 380V으로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 증발기 단품 상태에서 점검을 한다. +7) THR6의 2차측 2,4,6 단자에서 각 단자간 권선저항이 모두 같은지 확인한다. (±10% 이하) (증발기 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT1의 증발기 모터의 결선을 해제한 후 4극 및 6극 모터의 권선저항을 확인 후, 문제가 있을 겨우, 증발기 모터를 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR6 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('5430757e-ff40-4678-a4f4-f2e875e2ba20', '1001', '1001', 'CMSB#8 - CM 출력과부하', 'Tc2', 'C', 'CMSB-CM 출력과부하', 'C', 'CMSB', 'CMSB의 RS485 데이터 중 CMSB-TCMS SD TEXT3의 Bit1 “출력 과부하” 신호가 “1”이 되면 검지 +', '1) TCMS 화면 하단 또는 고장화면에 ‘CM 출력과부하' 표시됨. +2) 바이패스 모드로 전환되고, CM 기동 시 ‘바이패스 기동'으로 표시됨.', 'CM 기동 시 출력전류가 정격전류의 150%(7.5A) ~ 200%(10A) 사이 전류가 1분간 지속적 으로 기동할 경우 검지됨. +', '1) 차량 전원 OFF +2) CMSB 내부의 표시기 패널 RESET 버튼 누름', '0) 정상운행 후, 검수고에 입고하여 아래와 같이 조치한다. +1) 상기고장은 고장 소거 후, 재현시험을 진행하여 지속적으로 발생될 경우 아래와 같이 조치한다. +2) 공기압축기(CM) 출력전류을 확인한다. (공기압축기 매뉴얼 참조)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('543a33e9-7b1b-456d-a64a-6a1a21dc9be3', '0704', '704', 'HVAC#7 - 냉난방장치1 압축기1 과부하', 'M4', 'C', 'HVAC-냉난방장치1 압축기1 과부하', 'C', 'HVAC', 'HVAC 냉방 작동 중 냉난방장치1 압축기1 또는 응축기1 모터에 과부하 발생 +', '냉방 기능 저하(전냉방 시 반냉방으로 작동)', ' +1) 냉방 작동 중 UNIT1의 압축기1 또는 응축기1 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRCM1과 연결된 THR1이 Trip 됨. +', 'UNIT1의 압축기1 또는 응축기1 모터의 과부하조건을 해소하여 정상 가능 상태로 만들고, THR1 및 마이콤 전원 리셋', '1) 냉난방 배전반의 점검커버를 열고, THR1의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR4의 전류 세팅값이 11.5A에 맞춰져 있는지 확인하여, 아닐 경우, (+) 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동시킨 후, THR1의 2차측 2, 4, 6 단자에서 각 단자 간 상간 전압이 AC 380V로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 압축기 및 응축기 단품 상태에서 점검을 한다. +7) THR1의 2차측 2, 4, 6 단자에서 각 단자 간 권선저항이 모두 같은지 확인한다. (±10% 이하) (압축기1 및 응축기1 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT1의 압축기1 또는 응축기1 모터의 결선을 해제한 후 각 부품의 권선저항을 확인 후, 문제가 있는 부품을 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR1 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('544fb642-f72b-4818-8bb5-26675e5c9c0f', '0508', '508', 'DCU#2 3위(R2)-출입문 모터/인코더 고장', 'M1', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 "Motor / Encoder failure” 신호가 "1"이 되면 검지.', '출입문 정상동작 불가', '1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우 (인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터 / 인코더 회로가 손상된 경우', '모터/인코더 및 DCU가 정상상태이고, 전기적 연결상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있느지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. +★ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. + +1. DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. +2. DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) +3. DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('5466bc9b-d8f1-4a14-9fe4-a43d5bc13931', '0166', '166', 'VVVF#6-대활주/대공전(WSD)', 'M3', 'W', 'VVVF-대활주/대공전(WSD)', 'W', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT32의 Bit7 “WSD” 신호가 "1"이 되면 검지.', null, '공전, 활주 발생 시 고장검지', '1) 역행 자동복귀 +2) 제동 제동 OFF시', '1) 주행 당시의 노선상태가 오염, 습기, 결빙 등 외부환경에 의한 경우 조치할 내용은 없다. +2) 과도한 발생 시 낮은 견인력/제동력으로 주행. +3) 차륜에 윤활성 물질 오염여부 확인 및 세척. +4) 차륜 표면에 찰상 등 흔적이 있는 경우 삭정하여 운행한다.', null, '3', '2025-10-12 01:21:37.578803+00', null, '로템40량(2018)-1단계', 'Rotem'), ('54699e06-ccd3-4220-b949-ffd9c24720f6', '0162', '162', 'VVVF#6-PWM제어장치 이상검지(WDTD_P)', 'M3', 'C', 'VVVF-마이컴이상(PWM)(WDTD_P)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT32의 Bit3 “WDTD_P" 신호가 "1"이 되면 검지.', null, 'PWM보드 내 CPU고장에 의한 Watch Dog Timer 카운터 정지시 고장검지.', '동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) 판토 하강상태에서 인버터 재 기동 후 해당 고장 재발여부를 확인한다. +2) 추진제어장치 시험기를 이용하여 PWM 보드의 이상여부를 확인한다. +3) 상기 점검부에 이상이 있는 경우 PWM 보드를 교체한다.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('54793538-cf90-41e9-9aec-a5cd87312f4a', '0174', '174', 'VVVF#3 - 통합제어장치 - PWM 제어장치간 신호 이상 검지(ERRDIO)', 'M2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('547d5e22-b039-4ca6-a00e-155179cdce3a', '0739', '739', 'HVAC#4 - 전자접촉기 증발기2(CREF) 고장', 'T1', 'C', 'HVAC-전자접촉기 증발기2(CREF) 고장', 'C', 'HVAC', 'HVAC 냉방 작동 중 CREF2 전자접촉기 고장 발생 +', 'UNIT1 냉방 작동 불가', '냉방 작동 중 2.5초 이상 동안 CREF2 작동 feedback 신호가 수신되지 않는 경우 +', 'CREF2 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CREF2를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CREF2와 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('54817f56-a8fe-462d-8a65-18e6d9408b32', '0157', '157', 'VVVF#2-FC충전불량(FCD)', 'M1', 'C', 'VVVF-FC충전불량(FCD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT31의 Bit6 “FCD” 신호가 "1"이 되면 검지.', null, '1) HSCB, LB1 투입 후300ms이후에 FC에 충전된 전압이 낮을 경우 고장검지. +2) 1분 이내 3회 발생 시 중고장 발생.', '1) 경고장 +역행 고장검지 2초 후 자동 재기동 제동 제동 OFF시 고장 소거 +2) 중고장 +동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 FC전압에 이상이 있는지 확인한다. +3) 추진제어장치 내부 고전압부에 소손흔적이 있는지 확인한다. +4) 주 회로 차단기함 내부 충전저항값을 측정하여 기준치(10Ω±10%)이내임을 확인. +5) FC에 연결된 버스바의 체결상태가 양호한지 확인한고, 버스바를 분리하여 FC의 Capacitance를 측정하여 이상이 없는지 확인한다. +6) 전압센서와 추진제어장치 제어기 PUZ 보드에 연결되는 저전압 배선상태를 확인한다. +7) 추진제어장치 시험기를 이용하여 TCU(통합제어장치)의 이상여부를 확인한다. +8) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +9) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('548854c0-57b8-4e8e-b61e-8140b5992ba1', '0504', '504', 'DCU#7 6위(L3)-출입문 외부비상핸들 취급(EAD)', 'M4', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('548e5005-2596-4784-b0ab-bc3bf1a98a93', '0073', '73', '경고, 스크린도어 열림상태', 'Tc2', 'W', '경고, 스크린도어 열림상태', 'W', 'PSD', '차량의 출입문이 닫힌 상태에서 PSD 스크린도어가 열린상태가 3초이상 유지될 때 경고', '1) TCMS 화면 하단에 '경고, 스크린도어 열림상태'가 표시되고, 일반화면 우측 PSD 상태에 '열림경고' 붉은색 점멸표시됨. +2) PSD 수신 불가 지역에는 경고메시지 해제됨.', '1) FM/YARD이외의 모드 및 PSD와의 통신이 정상상태에서 차량 출입문은 닫힌 상태이나 PSD로부터 PSD 스크린 도어 열림상태가 3초이상 지속될 때 검지함.', '1) PSD로부터 스크린 도어 열림��태 해제 또는 차량으로부터 출입문 열림 신호가 수신되면 해제. +2) 운전모드가 FM/YARD 모드일 때 해제', '1) 대부분 PSD가 늦게 닫힐때 현시되므로 PSD로부터 닫힘신호가 수신되면 해제됨. +2) 지속 현시되면 차상/지상 PSD 장치간 통신을 확인한다.', ' +REC10100HN0', '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('548ef622-80be-4a64-9d64-ac1a25bd9d19', '0521', '521', 'DCU#7 5위(R3) - 모듈 상태 이상', 'M4', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 “01” 또는 “00”이 되면 +검지 +', '이중계절체동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러)이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('549140ea-417d-481c-a6c4-f0623c3ee227', '0089', '89', '화재검지기 고장(Car4)', 'T1', 'C', null, null, 'FDU', null, null, null, null, null, null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('549310c0-2b2e-4c30-9698-d93736808b3a', '0748', '748', 'HVAC#3-전자접촉기 차량히터1(CRRHT) 고장', 'M2', 'C', 'HVAC-전자접촉기 차량히터1(CRRHT) 고장', 'C', 'HVAC', '객실 난방기 작동 중 CRRHT1 전자접촉기 고장 발생.', '객실 전난방 시 2/3난방만 작동', '객실 전난방 작동 중 2.5초 이상동안 CRRHT1 작동 feedback 신호가 수신되지 않는 경우', 'CRRHT1 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CRRHT1을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRRHT1과 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('54a62201-e808-4434-9875-8526ad24817c', '0101', '101', 'VVVF#3 - 인버터 중고장(INV CUT)', 'M2', 'A', 'VVVF-인버터중고장(INV CUT)', 'A', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT1의 Bit4 “INV CUT” 신호가 “1”이 되면 검지 +', '1) TCMS 일반화면에 추진제어장치 상태 붉은색으로 표시됨. +2) 추진제어장치 중고장 상태인 동력차에 동력 손실됨. +3) TCMS 상태화면의 추진제어장치 화면에 HSCB, LB1, 2 개방된 것으로 표시됨.', ' +1) 추진제어장치의 경고장이 1분에 3회 이상누적 또는 지속적으로 검지되어 중고장 발생함. +2) 장치에 중대한 소손 가능성이 있는 고장에 대해서는 1번 발생으로 중고장 발생함. +', '동력차일반 배전반의 VVVFICNFB 재투입 또는 차량 배터리 전원 재투입', '1) 소거조건 내용과 같이 조치 후 중고장 소거됨을 확인함. +2) TCMS 고장데이터 또는 추진제어장치 고장 데이터를 통해 중고장이 발생한 고장 내역 수집함. +3) 수집된 고장내역에 따라 조치 실시함.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('54a6931d-a0da-4e5d-aced-fd71af618f00', '0718', '718', 'HVAC#7 - CO2 센서1 고장', 'M4', 'C', 'HVAC-CO2 센서1 고장', 'C', 'HVAC', '객실 CO2 센서1 고장 발생 +', 'CO2 센서1 고장현시', 'CO2 센서의 검지범위는 0 ~ 4,000ppm(2 ~ 10Vdc)인데, 1초 이상 출력전압이 2Vdc(0ppm) 미만으로 떨어지는 경우 +', 'CO2 센서 검지값이 1초 이상 2Vdc(0ppm) 이상 지속되는 경우', '1) 전원을 인가한 상태에서 CO2 센서 커버를 열고 테스터기를 통해 ‘OUT2' 단자와 ‘G' 단자 간의 전압이 2Vdc 미만인지 확인한다. +2) 만약 전압이 2Vdc 이상인데도 고장이 지속될 경우 마이콤을 교체한다. +3) 만약 전압이 2Vdc 미만으로 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('54c494c8-10e5-4f35-8b5e-e7969e66eb6b', '0136', '136', 'VVVF#7 - OVT 전류센서 이상검지(OVCTD)', 'M4', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('54cad786-62ae-499b-be11-2ba1a32300b7', '0517', '517', 'DCU#4 5위(R3)-출입문 장애물로 인한 열림 실패', 'T1', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Open failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘상태로 대기', '도어 열림 중 3회 장애물 감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 열림 시, 장애물 감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('54d7c1e5-a7d1-4816-afd2-24d7869fc5a6', '0751', '751', 'HVAC#7 - 냉난방장치1 보조히터 과열', 'M4', 'C', 'HVAC-냉난방장치1 보조히터 과열', 'C', 'HVAC', 'HVAC1 보조난방기 작동 중 과열 발생 +', 'UNIT1보조난방기난방불가', '보조난방기 작동 중 1초 이상 동안 온도가 70도 이상으로 과온 센서 정상신호가 수신 되지 않는 경우 +', '1초 이상 동안 60도 미만으로 온도가 떨어져 과온 센서 정상신호가 수신되는 경우', '1) 보조난방기가 꺼진 상태에서도 문제 발생 시, 과온 센서를 교체한다. +2) 센서 교체 후에도 문제가 발생되면, 배선에 문제가 없는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('54e21e4d-67b1-490e-839d-64670e253855', '1524', '1524', '후진 제한속도 초과에 의한 FSB 출력', 'HCR', 'C', '후진 제한속도 초과에 의한 FSB 출력', 'C', 'TCMS', '완전수동(FMC) 모드에서 후진 시 제한속도(25km/h)를 초과하여 운행하여 TCMS가 FSB를 출력한 경우 +', '1) TCMS의 FSB 출력에 의한 차량 정지 +2) TCMS DU 화면에 “후진 제한속도 초과에 의한 FSB 출력” 메시지 표시', '운전모드 FMC에서 HCR이 투입된 운전실에서 후진으로 진행시 속도 25km/h 이상 검지 시 +', '1) 마스콘 B7 단 취급 시 해제됨. +2) 운전모드 FMC가 아닌 모드로 변경한 경우 +3) HCR을 OFF한 경우 +4) CU 전원을 리셋한 경우', '1) 마스콘을 B7에 위치시킨다. +2) 주의하여 제한속도가 초과하지 않도록 운행한다. +3) 이상동작이라 판단되는 경우, 제동으로부터 전달되는 속도, TCMS의 차륜경 값, CU의 AUX1 출력을 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('54ebd33b-0515-4a55-b805-faf872cd3ffc', '0135', '135', 'MDS 서비스위치 아님(Car2)', 'M1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('54f76879-f657-4d9b-bdee-e70319c0003d', '0730', '730', 'HVAC#2-냉난방장치1 토출 센서 고장', 'M1', 'C', 'HVAC-냉난방장치1 토출 센서 고장', 'C', 'HVAC', '냉난방장치1의 토출 센서 고장 발생', '냉난방장치1 토출센서 고장현시', '온도센서 검지범위는 -45~85도 (820~1330옴) 인데, 2초 이상 검지범위를 벗어나는 경우', '온도센서 검지 값이 2초 이상 허용온도 범위 내 일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820~1330옴 을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우, 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('54fabc24-69cc-44a7-9066-7a0f45fcec50', '0309', '309', 'ATC#1 - 50cm 이내 미달정차', 'Tc1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('54fb0b2a-5f10-4451-991e-00af4695d2d0', '0512', '512', 'DCU#3 3위(R2) - 파라미터 로딩 실패', 'M2', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 “Paraneter error” 신호가 “1”이 되면 검지 +', 'Parametererror 현시(출입문은 정상작동 가능)', 'DCU 자체 내의 EEPROM으로부터 parameter데이터 로딩 실패 +', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('550b00c2-91e8-48b2-95b1-121b39eed0c9', '0180', '180', 'VVVF#6 - MCOK 고착(MCOKNO)', 'M3', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('550bb9bc-9ea7-475b-b6d8-c7c326cf6e25', '1708', '1708', '노선안내표시기#4 고장(Car6)', 'M3', 'C', '노선안내표시기#6 고장', 'C', 'PIC', 'PIC 장치의 노선안내표시기#6이 고장이 났을 때 발생 +', '1) 노선안내표시기 화면 미현시 +2) 노선안내표시기 안내 화면 오현시', '통신고장 +', '통신 재개 시', '1) 이더넷 스위치 링크 확인 +2) 이더넷 케이블 점검 +3) 제어보드 및 전원보드 교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('55101b51-d1e3-46a0-a84c-a1bc94a4e7de', '0074', '74', 'PSD 차상-지상간 통신장애', 'Tc2', 'C', null, null, 'PSD', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('5519a935-8971-443c-ba36-e9e54168f296', '0168', '168', 'VVVF#2 - 응하중 신호 이상검지(BRFD)', 'M1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('551ba7c7-18cc-4237-bf10-52ed14e804ac', '0212', '212', 'BECU#4-1축속도신호의 비정상', 'T1', 'C', 'BECU-1축속도신호의 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit3 “1축속도신호의 비정상” 신호가 "1"이 되면 검지.', '해당 차량 1축속도신호의 비정상 검지 현시 및 해당 차량 활주제어 불가.', '해당 차량의 1축 속도센서 고장 발생.', '해당 차량의 1축 속도센서가 정상적일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('551f4b64-aad2-478b-b51b-84636a46a346', '0505', '505', 'DCU#5 1위(R1)-출입문 입력 고전압', 'T2', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 "1"이 되면 검지.', '고전압 상태. (그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('552d9030-5133-4b86-a3f2-7f06db236030', '0105', '105', 'VVVF#7-상전류 불평형 검지(PUD)', 'M4', 'C', 'VVVF-상전류 불평형 검지(PUD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT29의 Bit0 “PUD” 신호가 "1"이 되면 검지.', null, '1) 인버터 출력 U,V,W 상간 RMS전류 값의 차이가 100A 이상 3초간 발생하는 때 경고장 발생. +2) 1분 이내 3회 발생 시 중고장 발생.', '1) 경고장 +역행 고장검지 2초 후 자동 재기동 제동 제동 OFF시 고장 소거 +2) 중고장 +동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 견인전동기로 출력되는 3상의 전류치 확인함. +3) 특정상의 전류치가 비정상적일 경우 특정상에 해당되는 전류센서, 모터결선을 확인한다. +4) 전류센서와 추진제어장치 제어기 PWM 보드에 연결되는 저전압 배선상태를 확인한다. +5) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +6) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('552eb26c-a514-4add-9796-abf2fdfa6d82', '0510', '510', 'DCU#6 6위(L3)-출입문 닫힘 리미트 스위치1 고장', 'M3', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 "DCS1 Failure(Leftt)” 신호가 "1"이 되면 검지.', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('5530b1d8-6ca3-42f2-ac17-6e9f14eacb25', '0727', '727', 'HVAC#5-배기팬1 과부하', 'T2', 'C', 'HVAC-배기팬1 과부하', 'C', 'HVAC', 'HVAC 환기작동 중 차량 배기팬1 모터에 과부하 발생.', '환기 시 차량 배기팬2 운전 불가능', '1) 냉방작동 중 챠량 배기팬1 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRVF1와 연결된 THR9가 Trip 됨.', '차량 배기팬1 모터의 과부하 조건을 해소하여 정상 가능 상태로 만들고, THR9 및 마이콤 전원 리셋', '1) 냉난방배전반의 점검커버를 열고, THR9의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR9의 전류 세팅값이 2.5A에 맞춰져 있는지 확인하여, 아닐 경우, 십자 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동 시킨 후, THR9의 2차측 2,4 단자와 6 단자 사이의 전압이 DC 100V으로 정상 측정되는지 확인한다. +5) 만약 전압이 측정되지 않을 시, 전원이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, THR9 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('5540757c-9ea2-480b-a5c6-e8d2f68eb16a', '0502', '502', 'DCU#2 3위(R2)-출입문 장애물검지', 'M1', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('554ac513-bbc5-43e6-8f56-5135e1ca5cf8', '1401', '1401', 'BMS#1 - 배터리 단락', 'Tc1', 'C', 'BMS-배터리 단락', 'C', 'BMS', 'BMS의 RS485 데이터 중 BMS-TCMS SD TEXT2의 Bit0 “배터리 단락” 신호가 “1”이 되면 검지 +', '배터리 Pre-charging 시 배터리 전압보다 낮으면 MasconSW 검지 안 됨.', '배터리 내부 또는 외부회로 단락 +', '배터리 내부 또는 외부회로 단락 해제', '1) 배터리 팩 절연저항 확인한다. +2) 배터리 외부 단락 검사', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('554cbae9-4c16-4b83-bffc-9817745b7263', '0503', '503', 'DCU#4 4위(L2)-출입문 내부비상핸들 취급(EED)', 'T1', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('554e6887-1eb1-457d-9dbf-ca279b575587', '0309', '309', 'ATC#8 - 50cm 이내 미달정차', 'Tc2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5551046b-65a1-4971-ae94-b3b6eda06880', '0184', '184', '역행관련 회로차단기 차단(Car7)', 'M4', 'W', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.578803+00', null, '로템40량(2018)-1단계', 'Rotem'), ('5560185a-b4c8-4b6d-9b45-2054672bf7d1', '0171', '171', 'VVVF#6-통합제어장치-PWM제어장치간 통신이상 검지(ERR485)', 'M3', 'C', 'VVVF-장치간 전송이상(ERR485)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT33의 Bit4 “ERR485” 신호가 "1"이 되면 검지.', null, '1) 통합제어기와 PWM보드간 485 통신이 400ms이상 응답없을 시 고장발생. +2) 1분 이내 3회 발생 시 중고장 발생.', '1) 경고장 +역행 고장검지 2초 후 자동 재기동 제동 제동 OFF시 고장 소거 +2) 중고장 +동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) PWM 보드 전면의 LED점등을 확인한다. +2) PWM 제어기 내부 PCB상태를 육안점검한다. +3) PWM 제어기전면의 CN1, CN2 커넥터의 핀 상태를 확인한다. +4) TCU(통합제어장치)의 PUZ 보드의 후면의 커넥터 삽입상태를 확인한다. +5) TCU(통합제어장치)의 PUZ 보드 후면의 제어배선 중, TRX11P, TRX11F, TRX11G 배선의 연결상태 및 배선의 단선 여부를 확인한다. +6) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:37.578803+00', null, '로템40량(2018)-1단계', 'Rotem'), ('55656eec-24c5-4c24-9288-69ea3d3647ac', '0513', '513', 'DCU#6 4위(L2) - 모듈 상태체크 에러', 'M3', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 “Module check error” 신호가 “1”이 되면 검지 +', 'Modulecheckerror현시(출입문은 정상작동가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태 체크 기능에 이상이 생긴 경우 고장 발생 +', 'DCU의 ‘A' 모듈과 ‘B' 모듈 간, 상태 체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('55693a49-8258-4d19-8a19-048a35efd3a3', '1703', '1703', '노선안내표시기#4 고장(Car4)', 'T1', 'C', '노선안내표시기#1 고장', 'C', 'PIC', 'PIC 장치의 노선안내표시기#1이 고장이 났을 때 발생 +', '1) 노선안내표시기 화면 미현시 +2) 노선안내표시기 안내 화면 오현시', '통신고장 +', '통신 재개 시', '1) 이더넷 스위치 링크 확인 +2) 이더넷 케이블 점검 +3) 제어보드 및 전원보드 교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('557849ac-0a44-46bb-bcae-105f30fc8c70', '0517', '517', 'DCU#7 4위(L2)-출입문 장애물로 인한 열림 실패', 'M4', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Open failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘상태로 대기', '도어 열림 중 3회 장애물 감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 열림 시, 장애물 감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('559a33b6-8a88-418b-b91e-c6a6eb0627ef', '0706', '706', 'HVAC#3 - 냉난방장치1 증발기2 과부하', 'M2', 'C', 'HVAC-냉난방장치1 증발기2 과부하', 'C', 'HVAC', 'HVAC 냉방 작동 중 냉난방장치1 증발기 모터에 과부하 발생 +', 'UNIT1냉방 작동 불가', ' +1) 냉방 작동 중 UNIT1의 증발기 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CREF2와 연결된 THR6이 Trip 됨. +', 'UNIT1의 증발기모터의 과부하조건을 해소하여 정상 가능 상태로 만들고, THR6 및 마이콤 전원 리셋', '1) 냉난방 배전반의 점검커버를 열고, THR6의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR6의 전류 세팅값이 3A에 맞춰져 있는지 확인하여, 아닐 경우, (+) 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동시킨 후, THR6의 2차측 2, 4, 6 단자에서 각 단자 간 상간 전압이 AC 380V로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 증발기 단품 상태 에서 점검을 한다. +7) THR6의 2차측 2, 4, 6 단자에서 각 단자 간 권선저항이 모두 같은지 확인한다. (±10% 이하) (증발기 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT1의 증발기 모터의 결선을 해제한 후 4극 및 6극 모터의 권선저항을 확인 후, 문제가 있을 경우, 증발기 모터를 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR6 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('55a5cd1d-4f34-4405-9ce4-319c91d336b8', '0502', '502', 'DCU#7 3위(R2) - 출입문 장애물검지', 'M4', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('55d053c8-095a-431b-95e9-2dd2acb8d84d', '0184', '184', '역행관련 회로차단기 차단(Car7)', 'M4', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('55d220ad-9baf-415d-918f-5bd4563f5cf1', '0506', '506', 'DCU#8 4위(L2) - 출입문 입력 저전압', 'Tc2', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 “1”이 되면 검지 +', '저전압상태(출입문 동작이 심하게 느려지거나 작동조차 안 될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하 +', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('55dc7ec2-8093-42c0-8ce6-641f2ea929e3', '0510', '510', 'DCU#2 4위(L2) - 출입문 닫힘 리미트 스위치1 고장', 'M1', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 “DCS1 Failure(Leftt)” 신호가 “1”이 되면 검지 +', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('55df133d-2788-4dc1-8092-2007e77f2b14', '0504', '504', 'DCU#4 1위(R1) - 출입문 외부 비상핸들 취급(EAD)', 'T1', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('56003e98-0746-46ac-98c4-6b837efb2cce', '0733', '733', 'HVAC#4-전자접촉기 압축기(CRCM)4 고장', 'T1', 'C', 'HVAC-전자접촉기 압축기(CRCM)4 고장', 'C', 'HVAC', 'HVAC 냉방작동 중 CRCM4 전자접촉기 고장 발생.', '냉방 기능 저하(전냉방시 반냉방으로 작동)', '냉방작동 중 2.5초 이상동안 CRCM4 작동 feedback 신호가 수신되지 않는 경우', 'CRCM4 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CRCM4를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRCM4와 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('5618ecdf-1c75-4658-aaa9-9382149fd8a2', '0519', '519', 'DCU#6 1위(R1)-ZVR 신호 에러', 'M3', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 "ZVR signal error” 신호가 "1"이 되면 검지.', '출입문이 강제로 닫히게 되고, 열림은 불가능', '1) 차량 ZVR 신호가 없는 상태 (차량 주행상태) 에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함.', '해당출입문 ZVR 신호 수신', '1) 차량이 주행중이라면, 차량이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('56419da4-7633-44c1-ac02-5adeeee16959', '0008', '8', 'TU 통신고장(Car3)', 'M2', 'B', 'TU 통신고장(Car3)', 'C', 'TCMS', 'M, T 차량의 차량제어장치(TU) 통신고장 +', '1) 해당 차호의 차량제어장치(TU)와의 통신불능 시 화면에 현시 +2) TU 통신 고장 시 해당호차의 VVVF, BECU, DCU, HVAC, FDU 등과의 통신도 불가 +(해당 차량의 출입문 열림/닫힘 정보도 현시 불가하므로 출입문 열림/닫힘 램프로 주의 운행) +3) 2호차(6호차) TU 통신 고장 시 판토상승/하강 명령 전달 불가(단, 이미 상승된 판토는 상승 유지됨.) +4) 4호차 TU 통신고장 시, 연장급전접촉기 출력이 불가', 'CU에서 TU의 통신정보를 약 3초 이상 수신 받지 못할 경우 해당 고장 현시 +', 'TU가 정상적으로 통신을 재개할 경우 소거됨.', '1) TU 전원차단기 리셋(OFF → ON) 실시 +2) SCM 보드의 전원 LED가 정상이라면, 멀티미터로 AVR 보드의 전원출력(5V)을 확인 +3) TU 상단의 커넥터 체결상태를 확인 +4) 상기 항목에 이상이 없을 경우 SCM 보드를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5647c4f7-fa9f-41b5-8023-02dddafba7b1', '0235', '235', '제동력부족(ISBD, Car2)', 'M1', 'B', '제동력부족(ISBD)', 'B', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit3 “ISBD” 신호가 "1"이 되면 검지.', '해당 차량 제동력 부족 검지 현시 및 해당 차량 제동압력(BCP)이 타 차량에 비해 현저히 낮음.', '제동 7단 취급 시 해당 차량의 제동압력이 생성되지 않음.', '제동 7단 취급 시 정상적인 제동압력이 생성된 경우 소거.', 'MCS모드로 전환 후, 마스콘을 N(중립) -> 제동7단까지 수회취급 하여 소거 여부 확인. 제동 취급 확인 후, 주의 운전 할 것. +지속발생시 관제보고하고 지시에 따를 것.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('564c54db-6eac-41f0-877f-1ee243f11070', '0219', '219', 'BECU#5 - 제동지령 비정상', 'T2', 'C', 'BECU-제동지령 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit2 “제동지령 비정상” 신호가 “1”이 되면 검지 +', '해당 차량 제동지령비정상 검지 현시 및 해당 차량 정상적인제동제어불가(상용제동지령에 따른 제어)', '해당 차량의 제동지령 신호가 정상범위를 벗어남. (5.0 ~ 95.0%) +', '해당 차량의 제동지령 신호가 정상범위일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 소거되지 않을 경우 해당 선택 운전실의 PWM 엔코더를 리셋(CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('564cdeb5-2b9d-4299-954f-7c455a5787af', '0716', '716', 'HVAC#8 - 냉난방장치1 압력스위치1(DPS) 고압', 'Tc2', 'D', 'HVAC-냉난방장치1 압력스위치1(DPS) 고압', 'D', 'HVAC', '냉난방장치1 냉매 압력스위치2 고압 발생 +', 'UNIT1CYCLE1 냉방기능불가', 'UNIT1DSP1측 냉매압력이 3초 이상 28±1(kgf/cm2) 이상 되는 경우 +', '냉매압력이 정상수치 15±0.7(kgf/cm2) 이하로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CRCM1의 부하측 전류를 측정하여 응축기 팬의 동작여부를 확인한다. +2) 응축기 코일의 전면에 이물질로 인한 막힘이 있는지 확인한다. +3) 응축기 팬 상부 그릴에 외부 이물질로 인한 막힘이 있는지 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5655b703-08c4-49a3-be86-86e03f0a6f38', '0238', '238', 'BECU#8-4축스키드신호', 'Tc2', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('56579d85-202f-4474-b1fb-faece0513a2d', '0507', '507', 'DCU#6 6위(L3) - 초기화 실패', 'M3', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 “Calibration failure” 신호가 “1”이 되면 검지 +', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터 고장, 장애물감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우 +', '초기화 실패를 야기한 고장코드를 확인하여 조치 후, 재닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인한다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5660b24d-c80b-49ac-acd1-a908263001fd', '0518', '518', 'DCU#5 6위(L3) - 출입문 Enable 신호 에러', 'T2', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 “Enable signal error” 신호가 “1”이 되면 검지 +', 'DCU 출입문Enable신호에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드 시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을 때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드 시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입 상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호 장치로부터의 출입문 열림 명령 신호) 취급 시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함. +', '해당 출입문 enable 신호수신', '1) AUTO/MCS 모드 시에는 YARD 모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인 한다. (YARD/FMC 모드 시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('566861a8-96e4-4269-8fb3-c8ca649c17d7', '0239', '239', 'BECU#7 - 3축 스키드신호', 'M4', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('566f175b-13f9-4e55-87f3-86eeb73b43b4', '0517', '517', 'DCU#4 1위(R1)-출입문 장애물로 인한 열림 실패', 'T1', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Open failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘상태로 대기', '도어 열림 중 3회 장애물 감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 열림 시, 장애물 감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('56817337-95b5-4649-9b29-607be53c1de6', '0513', '513', 'DCU#5 1위(R1)-모듈 상태체크 에러', 'T2', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 "Module check error” 신호가 "1"이 되면 검지.', 'Module check error 현시 (출입문은 정상작동 가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태체크 기능에 이상이 생긴 경우 고장 발생.', 'DCU의 'A'모듈과 'B'모듈 간, 상태체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('5692e390-566a-4a34-83d5-4fe396f96ede', '0518', '518', 'DCU#7 1위(R1) - 출입문 Enable 신호 에러', 'M4', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 “Enable signal error” 신호가 “1”이 되면 검지 +', 'DCU 출입문Enable신호에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드 시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을 때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드 시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입 상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호 장치로부터의 출입문 열림 명령 신호) 취급 시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함. +', '해당 출입문 enable 신호수신', '1) AUTO/MCS 모드 시에는 YARD 모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인 한다. (YARD/FMC 모드 시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('56b163ef-0135-465a-9ced-b4ba2c26f983', '0229', '229', 'AS 코크#1 차단(Car3)', 'M2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('56b26339-5ae5-495d-be8e-7f0e7285121e', '0520', '520', 'DCU#3 4위(L2)-이중계 절체 동작', 'M2', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 "Module switchover' 신호가 "1"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.392739+00', null, '로템40량(2018)-1단계', 'Rotem'), ('56b6aa50-deb4-449a-b8aa-20fafbace1cb', '0519', '519', 'DCU#3 5위(R3)-ZVR 신호 에러', 'M2', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 "ZVR signal error” 신호가 "1"이 되면 검지.', '출입문이 강제로 닫히게 되고, 열림은 불가능', '1) 차량 ZVR 신호가 없는 상태 (차량 주행상태) 에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함.', '해당출입문 ZVR 신호 수신', '1) 차량이 주행중이라면, 차량이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.392739+00', null, '로템40량(2018)-1단계', 'Rotem'), ('56bc8267-6212-4890-9af0-80f9c8a35358', '1203', '1203', 'FDU#2 - 감지기2 화재감지', 'M1', 'W', 'FDU-감지기2 화재감지 (Car1~8)', 'W', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 “Detector1 State” 신호가 “11”이 되면 검지 +', '화재상태현시(자동소거 안 됨.)', '하기 2가지 조건을 모두 만족하여야 화재신호가 출력 됨. (연동모드 동작) +1) 이웃한(앞 혹은 뒤에 위치한) 감지기 중 하나의 감지기라도 주의 혹은 화재상태에 있어야 함. +2) Detector1(해당 감지기)에서 측정된 연기농도가 15% 이상이거나 온도가 65℃ 이상인 경우 +', '1) FDU의 복귀버튼 조작 시 +2) FDU 전원 리셋 시', '1) 해당 감지기 위치의 화재 발생 여부 확인 +2) 화재 오감지일 경우 FDU의 복귀버튼 취급 +3) 오감지일 경우 감지기의 청소주기 확인(내부 먼지 제거)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('56c0bf9e-4449-415f-be3f-233a2091f768', '0233', '233', 'AS 코크#2 차단(Car5)', 'T2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('56e440e6-276e-483b-b86b-d2e965d5a35f', '1503', '1503', '난방장치용 AC 회로차단기 차단(Car8)', 'Tc2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('56ed92bc-ba10-4f44-82b3-a70fc91dea5c', '1503', '1503', '난방장치용 AC 회로차단기 차단(Car3)', 'M2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('56f4bb90-46ba-4919-8128-400bfbec08b1', '0234', '234', '제동불완해검지(NRBD, Car6)', 'M3', 'B', '제동불완해검지(NRBD)', 'B', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT8의 Bit2 “NRBD” 신호가 "1"이 되면 검지.', '해당 차량 제동불완해 검지 현시 및 완해 취급하였음에도 불구하고 해당 차량 제동압력(BCP)이 완해되지 않음.', '제동완해 상태(정차제동 포함)에서 해당 차량의 제동압력이 완전히 배기 되지 않음.', '제동완해 상태(정차제동 포함)에서 해당 차량의 제동압력이 완전히 배기 됨.', '정차하여 강제완해스위치를 취급하여 소거 여부 확인. 제동 완해상태 확인 후 주의 운전 할 것. +2~3회 시도에도 완해불능시 관제보고하고 지시에 따를 것.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('570412a0-543c-4d26-a122-527bfb9ab447', '0171', '171', 'VVVF#3 - 통합제어장치 - PWM 제어장치간 통신 이상 검지(ERR485)', 'M2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('57078577-3767-460c-88d7-f5cabfbfe104', '0811', '811', '실내카메라#1(SCAM) 고장(Car#1)', 'Tc1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('57119f69-4722-4669-b3e3-56ae9734e42f', '0520', '520', 'DCU#3 5위(R3)-이중계 절체 동작', 'M2', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 "Module switchover' 신호가 "1"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.392739+00', null, '로템40량(2018)-1단계', 'Rotem'), ('57165f9b-d16d-42a1-979b-4219da2dbf2d', '0712', '712', 'HVAC#7 - 냉난방장치2 압력스위치1(DPS) 고압', 'M4', 'D', 'HVAC-냉난방장치2 압력스위치1(DPS) 고압', 'D', 'HVAC', '냉난방장치2 냉매 압력스위치1 고압 발생 +', 'UNIT2CYCLE1 냉방기능불가', 'UNIT2DSP1측 냉매압력이 3초 이상 28±1(kgf/cm2) 이상 되는 경우 +', '냉매압력이 정상수치 15±0.7(kgf/cm2) 이하로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CRCM3의 부하측 전류를 측정하여 응축기 팬의 동작여부를 확인한다. +2) 응축기 코일의 전면에 이물질로 인한 막힘이 있는지 확인한다. +3) 응축기 팬 상부 그릴에 외부 이물질로 인한 막힘이 있는지 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('57182351-2b8a-41dd-9234-008f5dcab3f1', '0510', '510', 'DCU#6 1위(R1) - 출입문 닫힘 리미트 스위치1 고장', 'M3', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 “DCS1 Failure(Leftt)” 신호가 “1”이 되면 검지 +', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('573d23bf-404f-4d7c-86e3-5ae58aa0336e', '0501', '501', 'DCU#2 6위(L3)-출입문 차단', 'M1', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('5760bb4a-4e10-4fba-9cf9-9bdc4e1587c0', '0500', '500', 'DCU#4 2위(L1) 통신고장', 'T1', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS 간 RS485 통신고장이 검지되면 발생 +', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐상태 등의 변화가 없음.', ' +1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우 +', '해당 차량의 DCU 및 CU/TU의 전원이 정상상태이고, 통신 라인 연결 상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜져 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적 으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는 데도 지속적으로 통신고장이 검지되면, DCU의 X2, X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상 체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5760cba6-d7b7-4763-96ab-597a0fd77fb1', '0237', '237', '보안제동코크 차단(Car8)', 'Tc2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5762c830-8de1-4fbc-97a4-684805cf7566', '0159', '159', 'VVVF#3 - 제어전원전압 이상(PWM2) (CLVD_P2)', 'M2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5764efe7-1007-4ac0-8d43-5fa30d5d472c', '0514', '514', 'DCU#4 5위(R3)-출입문 닫힘 시간 초과', 'T1', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 "Close time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 닫힘 동작시간이 7초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도 한 후, '장애물로 인한 닫힘실패' 고장과 함께 'Close time out' 고장이 함께 현시', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('577bfabf-73d2-4ebc-ad82-cfb23a0e341e', '0511', '511', 'DCU#2 6위(L3) - 출입문 닫힘 리미트 스위치2 고장', 'M1', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 “DCS2 Failure(Right)” 신호가 “1”이 되면 검지 +', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5783c5d8-b966-4854-9e01-6de52f290f5b', '0507', '507', 'DCU#3 1위(R1) - 초기화 실패', 'M2', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 “Calibration failure” 신호가 “1”이 되면 검지 +', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터 고장, 장애물감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우 +', '초기화 실패를 야기한 고장코드를 확인하여 조치 후, 재닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인한다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('578fd478-5b3a-4548-8331-96f733361d1c', '0705', '705', 'HVAC#3-냉난방장치2 증발기2 과부하', 'M2', 'C', 'HVAC-냉난방장치2 증발기2 과부하', 'C', 'HVAC', 'HVAC 냉방작동 중 냉난방장치2 증발기 모터에 과부하 발생.', 'UNIT2 냉방 기능 불가', '1) 냉방작동 중 UNIT2의 증발기 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CREF4와 연결된 THR8이 Trip 됨.', 'UNIT2의 증발기 모터의 과부하 조건을 해소하여 정상 가능 상태로 만들고, THR8 및 마이콤 전원 리셋', '1) 냉난방배전반의 점검커버를 열고, THR8의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR8의 전류 세팅값이 3A에 맞춰져 있는지 확인하여, 아닐 경우, 십자 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동 시킨 후, THR8의 2차측 2,4,6 단자에서 각 단자간 상간 전압이 AC 380V으로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 증발기 단품 상태에서 점검을 한다. +7) THR8의 2차측 2,4,6 단자에서 각 단자간 권선저항이 모두 같은지 확인한다. (±10% 이하) (증발기 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT2의 증발기 모터의 결선을 해제한 후 4극 및 6극 모터의 권선저항을 확인 후, 문제가 있을 겨우, 증발기 모터를 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR8 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('57b05a71-ed31-4808-9767-c697940f2d69', '0236', '236', '상용제동코크 차단(Car7)', 'M4', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('57b7569b-e35b-461a-941f-474f71d98d71', '0802', '802', '실내객실표시기(PIB) 고장(Car#1)', 'Tc1', 'C', '통합방송표시기-실내객실표시기(PIB) 고장', 'C', 'TCMS', '통합방송표시기의 RS485 데이터 중 통합방송표시기-TCMS SD TEXT8의 Bit0 “PIB 고장” 신호가 "1"이 되면 검지.', '고장장치 통신 불량으로 현시 불능', '마스터 통합방송제어기에 주기적(2초) TCP 응답이 없을 경우 통신 불량으로 판단', '마스터 통합방송제어기에 TCP 응답 재개', '관련 CB(승객안내표시기, CBPIB) 리셋하고 통신라인 및 상태 점검. +관련도면 REC70710FG0', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('57bb811c-487f-4376-9121-3245f168640d', '0723', '723', 'HVAC#4 - 냉난방장치1 압력스위치2(DPS) 냉매부족', 'T1', 'C', 'HVAC-냉난방장치1 압력스위치2(DPS) 냉매부족', 'C', 'HVAC', '냉난방장치1 냉매 압력스위치2 저압 발생 +', 'UNIT1CYCLE2 냉방 기능 불가', 'UNIT1DSP2측 냉매압력이 30초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우 +', '냉매압력이 정상수치 2±0.5(kgf/cm2) 이상 유지하도록 하고, 마이콤전원을 리셋', '1) 배전반 점검 커버를 열고 마이콤 전원을 리셋한 후, 냉방 가동 시, CREF2의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)을 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설 여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안 되는 것을 확인한 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('57bf709e-543d-4de1-8b03-549626d0d897', '0718', '718', 'HVAC#5 - CO2 센서1 고장', 'T2', 'C', 'HVAC-CO2 센서1 고장', 'C', 'HVAC', '객실 CO2 센서1 고장 발생 +', 'CO2 센서1 고장현시', 'CO2 센서의 검지범위는 0 ~ 4,000ppm(2 ~ 10Vdc)인데, 1초 이상 출력전압이 2Vdc(0ppm) 미만으로 떨어지는 경우 +', 'CO2 센서 검지값이 1초 이상 2Vdc(0ppm) 이상 지속되는 경우', '1) 전원을 인가한 상태에서 CO2 센서 커버를 열고 테스터기를 통해 ‘OUT2' 단자와 ‘G' 단자 간의 전압이 2Vdc 미만인지 확인한다. +2) 만약 전압이 2Vdc 이상인데도 고장이 지속될 경우 마이콤을 교체한다. +3) 만약 전압이 2Vdc 미만으로 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('57d34ec7-97e8-4b7d-9d65-054661eed407', '0211', '211', 'BECU#1 - 2축 속도신호의 비정상', 'Tc1', 'C', 'BECU-2축속도신호의 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit2 “2축속도신호의 비정상” 신호가 “1”이 +되면 검지 +', '해당 차량 2축속도신호의 비정상 검지 현시 및 해당 차량 활주제어불가', '해당 차량의 2축속도센서 고장 발생 +', '해당 차량의 2축속도센서가 정상적일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('57e0ab01-3555-4a0c-b32b-4698fd4eeb63', '0501', '501', 'DCU#2 1위(R1) - 출입문 차단', 'M1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('57f023ca-6130-431f-9cbe-9925647e60f2', '0821', '821', '실내카메라#1(SCAM) 고장(Car#2)', 'M1', 'C', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('57f5f722-fe86-415a-b7f6-243e7948168d', '1200', '1200', 'FDU#4 통신고장', 'T1', 'B', 'FDU 통신고장', 'B', 'FDU', 'FDU와 TCMS 간 RS485 통신고장이 검지되면 발생 +', '화면상 FDU의 화재검지신호 등의 데이터가 반응하지 않음.', 'FDU 통신고장 또는 통신케이블문제 +', 'TCMSSDR 신호에 의해 FDU로부터 SD 신호가 정상 수신된 경우', '1) FDU 및 TCMS의 전원을 리셋하여 소거여부 확인 +2) 통신 고장이 발생하지 않은 다른 차량의 수신기와 교체하여 소거 여부 확인(고장이 수신기를 따라가는지 확인) +3) TCMS와 FDU간의 통신계통 점검 및 FDU NFB 점검 +4) 문제가 지속될 경우, 수신기 교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('57f7416d-1bf3-4ce0-8962-0ad3a09f1b93', '0501', '501', 'DCU#7 3위(R2) - 출입문 차단', 'M4', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('58059289-e8a2-4327-a55d-84636330cfbb', '0741', '741', 'HVAC#5 - 전자접촉기 보조히터4(AHEK) 고장', 'T2', 'C', 'HVAC-전자접촉기 보조히터4(AHEK) 고장', 'C', 'HVAC', 'HVAC 보조난방기 작동 중 AHEK4 전자접촉기 고장 발생 +', 'UNIT2 보조난방기 전난방 시 반난방만 작동', '보조난방기 작동 중 2.5초 이상 동안 AHEK4 작동 feedback 신호가 수신되지 않는 경우 +', 'AHEK4 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) AHEK4를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, AHEK4와 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('58098261-258d-4b68-b19c-fec1dfe62367', '0506', '506', 'DCU#5 5위(R3)-출입문 입력 저전압', 'T2', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 "1"이 되면 검지.', '저전안 상태 (출입문 동작이 심하게 느려지거나 작동조차 안될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('58176b1f-ed0f-4264-a852-884803dc8984', '0502', '502', 'DCU#8 5위(R3) - 출입문 장애물검지', 'Tc2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('58181516-d7b3-4307-8d7f-79d211ff800a', '0236', '236', '상용제동코크 차단(Car2)', 'M1', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('582d8e70-986d-4c5f-86d6-2c404e504d8c', '0502', '502', 'DCU#8 1위(R1)-출입문 장애물검지', 'Tc2', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('583cd306-3fe8-46fe-b635-07076ceb2efc', '0514', '514', 'DCU#2 1위(R1)-출입문 닫힘 시간 초과', 'M1', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 "Close time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 닫힘 동작시간이 7초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도 한 후, '장애물로 인한 닫힘실패' 고장과 함께 'Close time out' 고장이 함께 현시', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('5848ca85-f0c4-427b-8ecb-8662c3dcdbf2', '0173', '173', 'VVVF#3-전류센서 이상검지(CTERR)', 'M2', 'C', 'VVVF-CT 이상검지(CTERR)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT33의 Bit6 “CTERR” 신호가 "1"이 되면 검지.', null, '초기 기동 중 CTU, CTW의 전류값 확인이 안될 시 고장검지.', '동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기 고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 내부에 설치된 출력전류 측정용 전류센서의 외관 및 커넥터 체결상태를 확인한다. +3) PWS보드의 ±15V테스트단자 전압을 측정하여 전압 확인. +4) 육안으로 IGBT의 상태를 확인하여 외관에 손상이 있는지 확인한다. +5) IGBT의 Collector와 Emitter 양단을 멀티테스터를 이용하여 단락여부를 확인한다. +6) 견인전동기 고전압 배선의 결선상태 및 손상유무를 확인한다. +7) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:37.578803+00', null, '로템40량(2018)-1단계', 'Rotem'), ('58635dc8-ed59-4da0-8390-9e0c98b635f8', '0500', '500', 'DCU#7 2위(L1) 통신고장', 'M4', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS간 RS485 통신고장이 검지되면 발생.', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐 상태 등의 변화가 없음.', '1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우', '해당차량의 DCU 및 CU/TU 의 전원이 정상상태이고, 통신라인 연결상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜저 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는데도 지속적으로 통순고장이 검지되면, DCU의 X2,X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('5867bf35-c99b-4c4b-9d71-74818cffc87f', '0502', '502', 'DCU#3 6위(L3) - 출입문 장애물검지', 'M2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5870f211-6f40-4390-84f0-d6af910d5427', '1205', '1205', 'FDU#5 - 감지기3 화재감지', 'T2', 'W', 'FDU-감지기3 화재감지 (Car1~8)', 'W', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 “Detector1 State” 신호가 “11”이 되면 검지 +', '화재상태현시(자동소거 안 됨.)', '하기 2가지 조건을 모두 만족하여야 화재신호가 출력 됨. (연동모드 동작) +1) 이웃한(앞 혹은 뒤에 위치한) 감지기 중 하나의 감지기라도 주의 혹은 화재상태에 있어야 함. +2) Detector1(해당 감지기)에서 측정된 연기농도가 15% 이상이거나 온도가 65℃ 이상인 경우 +', '1) FDU의 복귀버튼 조작 시 +2) FDU 전원 리셋 시', '1) 해당 감지기 위치의 화재 발생 여부 확인 +2) 화재 오감지일 경우 FDU의 복귀버튼 취급 +3) 오감지일 경우 감지기의 청소주기 확인(내부 먼지 제거)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5876e1ce-f0c2-4429-900a-2422ccaf5a95', '0742', '742', 'HVAC#7 - 전자접촉기 보조히터3(AHEK) 고장', 'M4', 'C', 'HVAC-전자접촉기 보조히터3(AHEK) 고장', 'C', 'HVAC', 'HVAC 보조난방기 작동 중 AHEK3 전자접촉기 고장 발생 +', 'UNIT2 보조난방기 전난방 시 반난방만 작동', '보조난방기 작동 중 2.5초 이상 동안 AHEK3 작동 feedback 신호가 수신되지 않는 경우 +', 'AHEK3 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) AHEK3을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, AHEK3과 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('587f8991-063b-4580-ae41-bf06cb097920', '0888', '888', '실내카메라#1(SCAM) 고장(Car#8)', 'Tc2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5883612b-b808-419b-b2c8-cba173df5f41', '0809', '809', '중앙제어기(COB) 고장(Car#1)', 'Tc1', 'C', '통합방송표시기-중앙제어기(COB) 고장', 'C', 'TCMS', '통합방송표시기의 RS485 데이터 중 통합방송표시기-TCMS SD TEXT8의 Bit7 “COB 고장” 신호가 "1"이 되면 검지.', '고장장치 통신 불량으로 수동방송, 홍보방송, 역안내방송 및 비상통화기능, 운전실간 통화, 구원통화 불능', '마스터 통합방송제어기에 주기적(2초) TCP 응답이 없을 경우 통신 불량으로 판단', '마스터 통합방송제어기에 TCP 응답 재개', '관련 CB(방송/표시기/CCTV 전원공급장치1, CBPAU# +1) 리셋하고 통신라인 및 상태 점검. +관련도면 RES14001HN0, REC70700HN0', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('5885a674-3761-429b-89c7-a770a2d025b8', '0184', '184', '역행관련 회로차단기 차단(Car3)', 'M2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('58aa3450-51ab-48c2-8200-0be5678f4084', '0221', '221', 'BECU#4-제동력부족(ISBD)', 'T1', 'B', 'BECU-제동력부족(ISBD)', 'B', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit5 “ISBD” 신호가 "1"이 되면 검지.', '해당 차량 제동력 부족 검지 현시 및 해당 차량 제동압력(BCP)이 타 차량에 비해 현저히 낮음.', '제동 7단 취급 시 해당 차량의 제동압력이 생성되지 않음.', '제동 7단 취급 시 정상적인 제동압력이 생성된 경우 소거.', 'MCS모드로 전환 후, 마스콘을 N(중립) -> 제동7단까지 수회취급 하여 소거 여부 확인. 제동 취급 확인 후, 주의 운전 할 것. +지속발생시 관제보고하고 지시에 따를 것.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('58aff83b-d090-4959-8d55-c27a876d12f6', '0508', '508', 'DCU#7 2위(L1)-출입문 모터/인코더 고장', 'M4', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 "Motor / Encoder failure” 신호가 "1"이 되면 검지.', '출입문 정상동작 불가', '1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우 (인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터 / 인코더 회로가 손상된 경우', '모터/인코더 및 DCU가 정상상태이고, 전기적 연결상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있느지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. +★ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. + +1. DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. +2. DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) +3. DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('58e92aa9-bc81-4de9-b45e-6213fff31e71', '0509', '509', 'DCU#6 1위(R1) - 출입문 잠김 리미트 스위치 고장', 'M3', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 “DLS Failure” 신호가 “1”이 되면 검지 +', '출입문 잠김 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('58f7fb97-5d9d-4f2e-ad42-3225ea83f3f7', '0314', '314', 'ATC#8-', 'Tc2', '0', null, null, '0', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('58f855f3-e6e9-445e-ae29-d88b69174f68', '0143', '143', 'VVVF#2 - 주회로 접지검지(LGD)', 'M1', 'B', 'VVVF-주회로 접지검지(LGD)', 'B', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT30의 Bit0 “LGD” 신호가 “1”이 되면 검지 +', '1) TCMS 화면 하단 또는 고장화면에 ‘주회로 접지검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동이 되지 않으며 중고장으로 처리됨. +3) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉은색으로 표기되며, HSCB, LB1, 2 개방되어 동력 손실 발생함.', '추진제어장치 입력전압이 300V 이하로 하강되며, 입력전류가 1,700A 이상인 조건 +', '추진제어장치 리셋으로 고장 소거됨.', '1) 상기고장이 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 고장기록의 FC 전압 및 입력전류 확인 +3) 추진제어장치 내부에 접지흔적 확인 및 고압 회로 점검 +4) 전류/전압 센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작 상태를 시험기를 통해 확인한다. +6) IPM 전원공급기의 전원연결 상태 또는 광케이블의 연결 상태와 배선상태를 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지 간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('590990ec-65d8-474c-887e-d8f5c0f9abee', '0507', '507', 'DCU#8 6위(L3)-초기화 실패', 'Tc2', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 "Calibration failure” 신호가 "1"이 되면 검지.', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터고장, 장애물 감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우', '초기화 실패를 야기한 고장 코드를 확인하여 조치 후, 재 닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('590ffde5-84d8-4282-b1d7-d3617a1e3947', '1502', '1502', '기타장치용 DC 회로차단기 차단(Car3)', 'M2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5911a1c1-7667-4d8e-959a-f41fadea7bef', '0224', '224', 'BECU#8 - 파트너차 ECU 고장(PECUF)', 'Tc2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5919e917-882b-4193-b1b9-a644604f29a2', '0508', '508', 'DCU#3 5위(R3)-출입문 모터/인코더 고장', 'M2', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 "Motor / Encoder failure” 신호가 "1"이 되면 검지.', '출입문 정상동작 불가', '1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우 (인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터 / 인코더 회로가 손상된 경우', '모터/인코더 및 DCU가 정상상태이고, 전기적 연결상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있느지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. +★ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. + +1. DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. +2. DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) +3. DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('591ab8ed-8944-4782-b2b7-ca08c349ab3f', '0208', '208', 'BECU#6-공기제동장치고장', 'M3', 'C', 'BECU-공기제동장치고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit7 “공기제동장치고장” 신호가 "1"이 되면 검지.', '해당 차량 공기제동장치고장 검지 현시 및 해당 차량 정상적인 제동제어 불가.', '해당 차량 BECU의 자가진단 시 고장 발생 또는 AC압력센서 고장.', '해당 차량 BECU의 자가진단 시 정상적일 경우 또는 AC압력센서가 정상일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('592253be-7ca6-42b6-92f9-3acd438539ca', '0227', '227', '제동관련 회로차단기 차단(Car4)', 'T1', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('593ceab4-ffe3-4e8d-a5d5-643d682d7522', '0516', '516', 'DCU#7 3위(R2) - 출입문 장애물로 인한 닫힘 실패', 'M4', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Close failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림 상태로 대기', '도어 닫힘 중 3회 장애물감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('593de37e-32a9-465f-80c1-ed39370c3b38', '0746', '746', 'HVAC#7-전자접촉기 배기팬1(CRVF) 고장', 'M4', 'C', 'HVAC-전자접촉기 배기팬1(CRVF) 고장', 'C', 'HVAC', 'HVAC 환기 작동 중 CRVF1 전자접촉기 고장 발생.', '환기 시 차량 배기팬1 운전 불가능', '환기 작동 중 2.5초 이상동안 CRVF1 작동 feedback 신호가 수신되지 않는 경우', 'CRVF1 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CRVF1을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRVF1과 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('5941b4e9-1670-4866-a519-07678877d1c3', '0513', '513', 'DCU#8 3위(R2) - 모듈 상태체크 에러', 'Tc2', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 “Module check error” 신호가 “1”이 되면 검지 +', 'Modulecheckerror현시(출입문은 정상작동가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태 체크 기능에 이상이 생긴 경우 고장 발생 +', 'DCU의 ‘A' 모듈과 ‘B' 모듈 간, 상태 체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5941ffc9-6069-40c3-b0cf-c94658393da4', '0503', '503', 'DCU#3 2위(L1) - 출입문 내부 비상핸들 취급(EED)', 'M2', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('594e323f-8d9c-4856-ba38-4f882dbae32a', '0505', '505', 'DCU#4 1위(R1)-출입문 입력 고전압', 'T1', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 "1"이 되면 검지.', '고전압 상태. (그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('594f7878-045f-4d38-be90-906c03e0c1bb', '0814', '814', '비상인터폰#2(PEI) 고장(Car#1)', 'Tc1', 'C', '통합방송표시기-비상인터폰#2(PEI) 고장', 'C', 'TCMS', '통합방송표시기의 RS485 데이터 중 통합방송표시기-TCMS SD TEXT9의 Bit6 “PEI#2 고장” 신호가 "1"이 되면 검지.', '고장장치 통신 불량으로 비상통화 기능 불능', '마스터 통합방송제어기에 주기적(2초) TCP 응답이 없을 경우 통신 불량으로 판단', '마스터 통합방송제어기에 TCP 응답 재개', '관련 CB(방송/표시기/CCTV 전원공급장치2, CBPAU# +2) 리셋하고 통신라인 및 상태 점검. +관련도면 RES16001HN0, REC70700HN0', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('594f953b-d980-44f3-8f36-48685e54440b', '0178', '178', 'VVVF#2-LB2 고착(LB2NO)', 'M1', 'C', 'VVVF-LB2 고착(LB2NO)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT34의 Bit3 “LB2NO” 신호가 "1"이 되면 검지.', null, 'LB2 개방조건에서 투입상태 유지 시 고장검지.', '동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) 주회로 차단기함 내에 LB2의 주접점을 확인하여 고착여부를 확인한다. +2) 주회로 차단기함 내에 LB2의 보조접점을 확인하여 고착여부를 확인한다. +3) 추진제어장치 계전기 유니트에 LB2R 계전기 상태를 확인하여 고착여부를 확인한다. +4) 추진제어장치 시험기를 이용하여 TCU(통합제어기) 시험을 실시하여 이상여부를 확인한다. +5) 상기의 점검부분에 이상이 있을경우 관련부품을 교체한다.', null, '3', '2025-10-12 01:21:37.578803+00', null, '로템40량(2018)-1단계', 'Rotem'), ('5952e410-10ec-43f6-baa5-81739e32066d', '0512', '512', 'DCU#4 2위(L1) - 파라미터 로딩 실패', 'T1', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 “Paraneter error” 신호가 “1”이 되면 검지 +', 'Parametererror 현시(출입문은 정상작동 가능)', 'DCU 자체 내의 EEPROM으로부터 parameter데이터 로딩 실패 +', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('595bb15d-5e7c-4262-9477-3519da8543ad', '0725', '725', 'HVAC#4 - 냉방시험 불가능', 'T1', 'C', 'HVAC-냉방시험 불가능', 'C', 'HVAC', '운전실 TCMS에서 냉방시험 작동을 할 때, 냉방운전이 불가능한 경우 발생 +', '냉방시험 운전 불가능', '실내 또는 실외온도가 10도 미만일 경우(환절기 또는 겨울철에 냉방가동 시 시스템 보호를 위한 온도조건) +', '실내 또는 실외온도가10도 이상일 때, 냉방시험작동', '1) TCMS 화면에서 실내 또는 실외 온도가 10도 미만인지 확인한다. +2) 실내 및 실외 온도가 10도 이상인데도 냉방 가동이 되지 않을 시, TCMS-마이콤 간 통신불량이 있는지 확인하고 조치한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('595be848-3c79-4ae2-885e-4f2d15128e5b', '1206', '1206', 'FDU#6 - 감지기3 고장', 'M3', 'C', 'FDU-감지기3 고장 (Car1~8)', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 “Detector1 State” 신호가 “10”이 되면 검지 +', '감지기고장상태현시(자동소거 안 됨)', ' +1) 감지기로부터 데이터 응답이 없는 경우 +2) 감지기로부터 수신된 데이터의 CRC가 맞지 않는 경우 +3) 감지기로부터 수신된 데이터의 ID가 송신 ID와 일치하지 않는 경우 +', 'FDU 전원 리셋 후 감지기로부터 정상적으로 데이터가 수신된 경우', '1) FDU 전원 리셋 후 고장 소거 여부 확인 +2) 정상동작중인 감지기와 위치 교환 후 FDU 전원 리셋 및 고장 상태 확인 +3) 동일한 감지기에서 고장 발생 시 감지기 교체 +4) 동일한 위치에서 고장 발생 시 감지기 라인 점검', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('596cb946-0c9e-4126-9fe6-7718ee858e95', '0183', '183', 'VVVF#6-Over Load(OL)', 'M3', 'C', 'VVVF-Over Load(OL)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT35의 Bit2 “OL” 신호가 "1"이 되면 검지.', null, '차량의 구속상태에서 역행을 5초 이상 계속한 경우', '노치 OFF', '1) 상기고장이 간헐적으로 발생하는 경우 아래와 같이 조치한다. +2) 출발 시 보안제동의 투입 해제를 확인한다. +3) 고임목 등의 장애물이 차량을 구속하고 있는경우 제거한다. +4) 견인 전동기의 주 회로 오배선 여부 및 결선상태를 확인한다. +5) 추진제어장치 시험기를 이용하여 TCU(통합 제어장치)의 이상여부를 확인한다. +6) PWS보드 또는 통합제어기 교체. +7) 상기의 점검부분에 이상이 있을경우 관련부품을 교체한다.', null, '3', '2025-10-12 01:21:37.578803+00', null, '로템40량(2018)-1단계', 'Rotem'), ('599039d0-3e00-4c27-bb11-4eea32b1ad82', '0824', '824', '비상인터폰#2(PEI) 고장(Car#2)', 'M1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('59942626-68e3-4246-8cb1-db7210f73dbe', '0216', '216', 'BECU#8 - 전두대차 AS 압력센서 고장', 'Tc2', 'C', 'BECU-전두대차 AS 압력센서 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit7 “전두대차 AS 압력센서 고장” 신호가 +“1”이 되면 검지 +', '해당 차량 전두대차 AS 압력센서 고장검지 현시 및 해당 차량 정상적인 응하중제동제어 불가', '해당 차량의 전두대차 AS 압력센서(AS1, AS2) 고장 +', '해당 차량의 전두대차 AS 압력센서(AS1, AS2)가 정상일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('59972f8f-d900-4dfe-8251-fe928ff63839', '0145', '145', 'VVVF#2 - 과온검지2(THDH)', 'M1', 'C', 'VVVF-Stack 과온검지2(THDH)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT30의 Bit2 “THDH” 신호가 “1”이 되면 검지 +', '1) TCMS 화면 하단 또는 고장화면에 ‘스택과온검지2' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동이 되지 않으며 중고장으로 처리됨. +3) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉은색으로 표기되며, HSCB, LB1, 2 개방되어 동력 손실 발생함.', '추진제어장치 냉각기의 온도가 105도 이상인 조건에서 검지 +', '추진제어장치 리셋으로 고장 소거됨.', '1) 상기고장이 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 냉각기의 손상이 없는지 확인한다. +3) 추진제어장치 내부에 IPM에 손상이 없는지 확인한다. +4) 인버터 유니트 내부에 온도센서 및 결선에 이상이 없는지 확인한다. +5) DIN 보드의 동작 상태를 시험기를 통해 확인한다. +6) IPM 전원공급기의 전원연결 상태 또는 광케이블의 연결 상태와 배선상태를 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지 간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('599882c0-73f7-4c9b-83f3-f3529acbe050', '1203', '1203', 'FDU#4-감지기2 화재감지', 'T1', 'W', 'FDU-감지기2 화재감지', 'W', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 "Detector1 State” 신호가 "11"이 되면 검지.', '화재상태 현시(자동 소거 안됨)', '하기 2가지 조건을 모두 만족하여야 화재신호가 출력 됨(연동모드 동작). +1) 이웃한(앞 혹은 뒤에 위치한) 감지기 중 하나의 감지기라도 주의 혹은 화재상태에 있어야 함. +2) Detector1(해당 감지기)에서 측정된 연기농도가 15% 이상이거나 온도가 65℃ 이상인 경우', '1) FDU의 복귀버튼 조작시 +2) FDU 전원 리셋시', '1) 해당 감지기 위치의 화재 발생 여부 확인 +2) 화재 오 감지일경우 FDU의 복귀버튼 취급 +3) 오감지일경우 감지기의 청소주기 확인(내부 먼지 제거)', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('5999ad33-6251-41ea-82e3-806348b44107', '0228', '228', 'BC 코크(차하#1) 차단(Car6)', 'M3', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('599d262e-be9b-4c1c-88d8-e2b201a9ac03', '0009', '9', 'TU 통신고장(Car4)', 'T1', 'B', 'TU 통신고장(Car4)', 'C', 'TCMS', 'M, T 차량의 차량제어장치(TU) 통신고장 +', '1) 해당 차호의 차량제어장치(TU)와의 통신불능 시 화면에 현시 +2) TU 통신 고장 시 해당호차의 VVVF, BECU, DCU, HVAC, FDU 등과의 통신도 불가 +(해당 차량의 출입문 열림/닫힘 정보도 현시 불가하므로 출입문 열림/닫힘 램프로 주의 운행) +3) 2호차(6호차) TU 통신 고장 시 판토상승/하강 명령 전달 불가(단, 이미 상승된 판토는 상승 유지됨.) +4) 4호차 TU 통신고장 시, 연장급전접촉기 출력이 불가', 'CU에서 TU의 통신정보를 약 3초 이상 수신 받지 못할 경우 해당 고장 현시 +', 'TU가 정상적으로 통신을 재개할 경우 소거됨.', '1) TU 전원차단기 리셋(OFF → ON) 실시 +2) SCM 보드의 전원 LED가 정상이라면, 멀티미터로 AVR 보드의 전원출력(5V)을 확인 +3) TU 상단의 커넥터 체결상태를 확인 +4) 상기 항목에 이상이 없을 경우 SCM 보드를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('59c61ed2-7c55-4eea-9a87-1b9de31b9aa8', '1208', '1208', 'FDU#1-감지기4 고장', 'Tc1', 'C', 'FDU-감지기4 고장', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 "Detector1 State” 신호가 "10"이 되면 검지.', '감지기 고장상태 현시(자동 소거 안됨)', '1) 감지기로부터 데이터 응답이 없는경우. +2) 감지기로부터 수신된 데이터의 CRC가 맞지 않는경우 +3) 감지기로부터 수신된 데이터의 ID가 송신 ID와 일치하지 않는경우', 'FDU 전원 리셋 후 감지기로부터 정상적으로 데이터가 수신된 경우', '1) FDU 전원 리셋 후 고장 소거 여부 확인 +2) 정상 동작중인 감지기와 위치 교환 후 FDU 전원 리셋 및 고장 상태 확인 +3) 동일한 감지기에서 고장 발생시 감지기 교체 +4) 동일한 위치에서 고장 발생시 감지기 라인 점검', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('59d07064-cf56-4d95-9ca6-6c1ec801faf5', '1207', '1207', 'FDU#1-감지기4 화재감지', 'Tc1', 'W', 'FDU-감지기4 화재감지', 'W', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 "Detector1 State” 신호가 "11"이 되면 검지.', '화재상태 현시(자동 소거 안됨)', '하기 2가지 조건을 모두 만족하여야 화재신호가 출력 됨(연동모드 동작). +1) 이웃한(앞 혹은 뒤에 위치한) 감지기 중 하나의 감지기라도 주의 혹은 화재상태에 있어야 함. +2) Detector1(해당 감지기)에서 측정된 연기농도가 15% 이상이거나 온도가 65℃ 이상인 경우', '1) FDU의 복귀버튼 조작시 +2) FDU 전원 리셋시', '1) 해당 감지기 위치의 화재 발생 여부 확인 +2) 화재 오 감지일경우 FDU의 복귀버튼 취급 +3) 오감지일경우 감지기의 청소주기 확인(내부 먼지 제거)', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('59f64f50-89ae-4a05-8bf3-190af1446343', '0731', '731', 'HVAC#2-냉난방장치1 리턴 센서 고장', 'M1', 'C', 'HVAC-냉난방장치1 리턴 센서 고장', 'C', 'HVAC', '냉난방장치1의 리턴 센서 고장 발생', '냉난방장치1 리턴센서 고장현시', '온도센서 검지범위는 -45~85도 (820~1330옴) 인데, 2초 이상 검지범위를 벗어나는 경우', '온도센서 검지 값이 2초 이상 허용온도 범위 내 일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820~1330옴 을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우, 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('59f917da-c8a5-449a-8429-5803a88cb36b', '0214', '214', 'BECU#6-BC 압력센서고장', 'M3', 'C', 'BECU-BC 압력센서 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit5 “BC 압력센서 고장” 신호가 "1"이 되면 검지.', '해당 차량 BC압력센서 고장 검지 현시 및 해당차량 제동력 부족, 제동불완해 검지 불가.', '해당 차량의 BC압력센서 고장.', '해당 차량의 BC압력센서가 정상일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('59fabdbf-44ac-49a2-aa15-9dbb0d85d88e', '0501', '501', 'DCU#8 4위(L2) - 출입문 차단', 'Tc2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5a028c2a-6f91-4c60-8893-4bbfdb983153', '0200', '200', 'BECU#2 통신고장', 'M1', 'B', 'BECU-통신고장', 'B', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT23의 'Life sign'이 변하지 않음.', '해당 차량 통신고장 현시 및 해당 차량의 제동압력(BCP) 등의 데이터가 반응하지 않음. (고장은 현시되나 제동제어는 정상적 일 수 있음)', 'BECU 전원 CB OFF 혹은 통신연결 불량.', 'BECU와 TCMS 간 RS485 통신이 복귀 되어 BECU-TCMS SD TEXT23의 'Life sign'이 변동시 소거.', 'BECU를 리셋(BECU CB OFF/ON) 후 복귀여부를 확인. +리셋 후 복귀되지 않을 경우 관제보고하고 지시에 따를 것.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('5a0a3900-ed3a-419b-9855-6efc36941aa7', '1704', '1704', '노선안내표시기#5 고장(Car4)', 'T1', 'C', '노선안내표시기#2 고장', 'C', 'PIC', 'PIC 장치의 노선안내표시기#2이 고장이 났을 때 발생 +', '1) 노선안내표시기 화면 미현시 +2) 노선안내표시기 안내 화면 오현시', '통신고장 +', '통신 재개 시', '1) 이더넷 스위치 링크 확인 +2) 이더넷 케이블 점검 +3) 제어보드 및 전원보드 교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5a1bd297-9d0a-48c3-acd9-cc4871c78578', '0515', '515', 'DCU#4 4위(L2) - 출입문 열림 시간 초과', 'T1', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 “Open time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 열림 동작시간이 6초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도한 후, ‘장애물로 인한 열림 실패' 고장과 함께 ‘Open time out' 고장이 함께 현시 +', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5a278b6b-f7dc-4688-8048-47de52835287', '1707', '1707', '노선안내표시기#1 고장(Car4)', 'T1', 'C', '노선안내표시기#5 고장', 'C', 'PIC', 'PIC 장치의 노선안내표시기#5이 고장이 났을 때 발생 +', '1) 노선안내표시기 화면 미현시 +2) 노선안내표시기 안내 화면 오현시', '통신고장 +', '통신 재개 시', '1) 이더넷 스위치 링크 확인 +2) 이더넷 케이블 점검 +3) 제어보드 및 전원보드 교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5a2d07df-337d-46d6-97bf-fa54b816ebd9', '0503', '503', 'DCU#4 3위(R2) - 출입문 내부 비상핸들 취급(EED)', 'T1', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5a455095-569f-48c1-8a5c-261efe79f276', '0848', '848', '실내객실표시기(PIB) 고장(Car#5)', 'T2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5a4719e3-e5f4-4ea1-80a8-50d9df1c7372', '1706', '1706', '노선안내표시기#4 고장(Car1)', 'Tc1', 'C', '노선안내표시기#4 고장', 'C', 'PIC', 'PIC 장치의 노선안내표시기#4이 고장이 났을 때 발생 +', '1) 노선안내표시기 화면 미현시 +2) 노선안내표시기 안내 화면 오현시', '통신고장 +', '통신 재개 시', '1) 이더넷 스위치 링크 확인 +2) 이더넷 케이블 점검 +3) 제어보드 및 전원보드 교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5a556d60-a75d-4970-b86a-e5a9b47d5dcf', '1503', '1503', '난방장치용 AC 회로차단기 차단(Car1)', 'Tc1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5a5d65ac-59e7-4cd1-921a-12ce626eb676', '0233', '233', 'AS 코크#2 차단(Car4)', 'T1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5a6db028-cc7e-4f18-99cf-acd31424c145', '0718', '718', 'HVAC#1 - CO2 센서1 고장', 'Tc1', 'C', 'HVAC-CO2 센서1 고장', 'C', 'HVAC', '객실 CO2 센서1 고장 발생 +', 'CO2 센서1 고장현시', 'CO2 센서의 검지범위는 0 ~ 4,000ppm(2 ~ 10Vdc)인데, 1초 이상 출력전압이 2Vdc(0ppm) 미만으로 떨어지는 경우 +', 'CO2 센서 검지값이 1초 이상 2Vdc(0ppm) 이상 지속되는 경우', '1) 전원을 인가한 상태에서 CO2 센서 커버를 열고 테스터기를 통해 ‘OUT2' 단자와 ‘G' 단자 간의 전압이 2Vdc 미만인지 확인한다. +2) 만약 전압이 2Vdc 이상인데도 고장이 지속될 경우 마이콤을 교체한다. +3) 만약 전압이 2Vdc 미만으로 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5a7a3314-69a7-4ef3-a74d-a94a309879d9', '0517', '517', 'DCU#3 2위(L1)-출입문 장애물로 인한 열림 실패', 'M2', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Open failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘상태로 대기', '도어 열림 중 3회 장애물 감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 열림 시, 장애물 감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('5aa0d861-1116-4db3-a903-c0fa4c6629f8', '0107', '107', 'VVVF-전동기 과전류 검지(MOCD) (Car2)', 'M1', 'C', 'VVVF-전동기 과전류 검지(MOCD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT31의 Bit2 “MOCD” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 '전동기 과전류 검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치에서 견인전동기로 출력되는 U, V, W 상의 전류가 1,850A 이상일 경우 검지됨.', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반배전반의 VVVFIC nfb 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 견인전동기로 출력되는 3상의 전류치 확인함. +3) 특정상의 전류치가 비정상적일 경우 특정상에 해당되는 IPM, 전류센서, 모터결선을 확인한다. +4) 전류센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작상태를 시험기를 통해 확인한다. +6) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +7) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.578803+00', null, '다대48량(2015)', 'Rotem'), ('5aa0eb9d-c97e-47c4-b955-32729a8fc395', '0514', '514', 'DCU#4 3위(R2) - 출입문 닫힘 시간 초과', 'T1', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 “Close time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 닫힘 동작 시간이 7초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도한 후, ‘장애물로 인한 닫힘 실패' 고장과 함께 ‘Close time out' 고장이 함께 현시 +', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5aaf54a6-b942-45d1-8f99-31f8b835780e', '759', '759', 'CAB HVAC#8 - 압축기 압력 이상', 'Tc2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5ab22502-6725-4352-8a9d-f14747e86dfe', '0054', '54', 'AUX FUSE DISCONNECTED(Car3)', 'M2', 'W', 'AUX FUSE DISCONNECTED(Car3)', 'W', '기타', '차량으로부터 AUX FUSE DISCONNECTED 신호 입력 시 +', 'SIV 고압 차단으로 AC전원 전체 “OFF”', '해당 퓨즈 소손 +', '해당 퓨즈 교체', null, '회로 도면 : REC20210DX0', '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5ad1a1e7-ebd1-438a-9159-83f64a09792d', '0153', '153', 'VVVF#7-FC 용량저하(FCLCD)', 'M4', 'C', 'VVVF-FC 용량저하(FCLCD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT31의 Bit2 “FCLVD” 신호가 "1"이 되면 검지.', null, '필터캐패시터 용량이 8900uF이하일 때 검지.', '제어전원 OFF', '1) FC용량 측정 후 8900uF 미만일 경우 신품으로 교체. +2) 주 회로 차단기함 내부 충전저항값을 측정하여 기준치(10Ω±10%)이내임을 확인.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('5ad9a39a-04a6-48a8-8b2f-bcfb00963c01', '0702', '702', 'HVAC#2 - 냉난방장치2 압축기1 과부하', 'M1', 'C', 'HVAC-냉난방장치2 압축기1 과부하', 'C', 'HVAC', 'HVAC 냉방 작동 중 냉난방장치2 압축기1 또는 응축기1 모터에 과부하 발생 +', '냉방 기능 저하(전냉방 시 반냉방으로 작동)', ' +1) 냉방 작동 중 UNIT2의 압축기1 또는 응축기1 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRCM3과 연결된 THR3이 Trip 됨. +', 'UNIT2의 압축기1 또는 응축기1 모터의 과부하조건을 해소하여 정상 가능 상태로 만들고, THR3 및 마이콤 전원 리셋', '1) 냉난방 배전반의 점검커버를 열고, THR3의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR4의 전류 세팅값이 11.5A에 맞춰져 있는지 확인하여, 아닐 경우, (+) 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동시킨 후, THR3의 2차측 2, 4, 6 단자에서 각 단자 간 상간 전압이 AC 380V로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 압축기 및 응축기 단품 상태에서 점검을 한다. +7) THR3의 2차측 2, 4, 6 단자에서 각 단자 간 권선저항이 모두 같은지 확인한다. (±10% 이하) (압축기1 및 응축기1 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT2의 압축기1 또는 응축기1 모터의 결선을 해제한 후 각 부품의 권선저항을 확인 후, 문제가 있는 부품을 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR3 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5af6532d-5a74-4a18-89c2-c209c140704d', '1601', '1601', '미세먼지감지센서 모듈#5 - 센서 고장', 'T2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5afb2d45-5c4e-4547-9149-73cc98450ca4', '0500', '500', 'DCU#1 3위(R2) 통신고장', 'Tc1', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS 간 RS485 통신고장이 검지되면 발생 +', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐상태 등의 변화가 없음.', ' +1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우 +', '해당 차량의 DCU 및 CU/TU의 전원이 정상상태이고, 통신 라인 연결 상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜져 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적 으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는 데도 지속적으로 통신고장이 검지되면, DCU의 X2, X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상 체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5afb3da0-b93a-4d1f-ab8c-a15360bcbadd', '0513', '513', 'DCU#3 3위(R2)-모듈 상태체크 에러', 'M2', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 "Module check error” 신호가 "1"이 되면 검지.', 'Module check error 현시 (출입문은 정상작동 가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태체크 기능에 이상이 생긴 경우 고장 발생.', 'DCU의 'A'모듈과 'B'모듈 간, 상태체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('5afce407-609c-4b41-879c-dfcddcbf871e', '0513', '513', 'DCU#8 4위(L2) - 모듈 상태체크 에러', 'Tc2', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 “Module check error” 신호가 “1”이 되면 검지 +', 'Modulecheckerror현시(출입문은 정상작동가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태 체크 기능에 이상이 생긴 경우 고장 발생 +', 'DCU의 ‘A' 모듈과 ‘B' 모듈 간, 상태 체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5affe4a7-e5f8-4dcf-9f74-7415da579e35', '0502', '502', 'DCU#1 2위(L1) - 출입문 장애물검지', 'Tc1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5b1b4f21-0b35-4456-a92a-7f6a78c6a78c', '0507', '507', 'DCU#7 3위(R2)-초기화 실패', 'M4', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 "Calibration failure” 신호가 "1"이 되면 검지.', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터고장, 장애물 감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우', '초기화 실패를 야기한 고장 코드를 확인하여 조치 후, 재 닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('5b283187-ece1-4832-8540-624344f58355', '0726', '726', 'HVAC#5 - 배기팬2 과부하', 'T2', 'C', 'HVAC-배기팬2 과부하', 'C', 'HVAC', 'HVAC 환기작동 중 차량 배기팬2 모터에 과부하 발생 +', '환기 시 차량 배기팬2 운전 불가능', ' +1) 냉방 작동 중 챠량 배기팬2 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRVF2와 연결된 THR10이 Trip 됨. +', '차량 배기팬2 모터의 과부하조건을 해소하여 정상 가능 상태로 만들고, THR10 및 마이콤 전원 리셋', '1) 냉난방 배전반의 점검커버를 열고, THR10의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR10의 전류 세팅값이 2.5A에 맞춰져 있는지 확인하여, 아닐 경우, (+) 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동시킨 후, THR10의 2차측 2, 4 단자와 6 단자 사이의 전압이 DC 100V로 정상 측정 되는지 확인한다. +5) 만약 전압이 측정되지 않을 시, 전원이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, THR10 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5b30803b-20ae-4f58-83d2-d86a63fd0521', '0515', '515', 'DCU#7 3위(R2) - 출입문 열림 시간 초과', 'M4', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 “Open time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 열림 동작시간이 6초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도한 후, ‘장애물로 인한 열림 실패' 고장과 함께 ‘Open time out' 고장이 함께 현시 +', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5b3debbb-67f0-4b45-b1e2-fdd239f0757e', '0504', '504', 'DCU#3 5위(R3)-출입문 외부비상핸들 취급(EAD)', 'M2', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('5b4cb813-32f5-48bc-b4bd-001799ba4939', '0428', '428', 'SIV#1 - 인버터1 입력 저전압(INV1LV)', 'Tc1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5b6485d6-4869-44f7-ba0a-3924a29713e2', '0517', '517', 'DCU#4 3위(R2)-출입문 장애물로 인한 열림 실패', 'T1', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Open failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘상태로 대기', '도어 열림 중 3회 장애물 감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 열림 시, 장애물 감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('5b813185-ea74-4335-a526-7d0225b2defd', '0508', '508', 'DCU#2 6위(L3)-출입문 모터/인코더 고장', 'M1', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 "Motor / Encoder failure” 신호가 "1"이 되면 검지.', '출입문 정상동작 불가', '1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우 (인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터 / 인코더 회로가 손상된 경우', '모터/인코더 및 DCU가 정상상태이고, 전기적 연결상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있느지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. +★ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. + +1. DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. +2. DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) +3. DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('5b837c1b-1987-41c5-8690-1f702c908dd5', '0846', '846', '운전실카메라(CCAM) 고장(Car#1)', 'Tc1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5b8674bf-f784-45b2-8192-8d0481327f5a', '0121', '121', 'VVVF-통신이상검지(COMF) (Car7)', 'M4', 'C', 'VVVF-통신이상검지(COMF)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT33의 Bit0 “COMF” 신호가 "1"이 되면 검지.', 'TCMS 화면에 고정정보 현시되며, 추진제어장치 상태화면에 나타나는 데이터에 변동이 없음.', 'TCMS-추진제어장치(VVVF) 간 통신정보가 3초이상 동일한 정보로 유지되면 통신고장을 검지함.', 'TCMS-추진제어장치(VVVF) 간 통신정보가 정상적으로 통신이 될경우 소거됨.', '1) 추진제어장치(VVVF) 리셋 실시 후 통신고장 소거됨을 확인. +2) 통신고장 소거가 되지 않을 경우 추진제어장치 MON 보드 신품으로 교체후 통신고장 소거여부 확인. +3) 위 조건에도 고장이 소거되지 않을 경우, TCMS-추진제어장치간 RS485 통신케이블 연결상태 점검.', null, '2', '2025-10-12 01:21:37.71571+00', null, '다대48량(2015)', 'Rotem'), ('5b8cbe0e-a58b-41c0-a300-1463d849251c', '0108', '108', 'VVVF-가선과전류 검지(IOCD) (Car3)', 'M2', 'C', 'VVVF-가선과전류 검지(IOCD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT31의 Bit3 “IOCD” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 '가선과전류 검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치에 입력되는 전류가 1,500A 이상일 경우 검지됨.', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반배전반의 VVVFIC nfb 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 추진제어장치에 입력되는 전류치 확인함. +3) 입력되는 전류치가 비정상적일 경우 추진제어장치 입력회로(HSCB, LB1,2, CHRe)를 접검한다.. +4) LB Box내의 전류센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작상태를 시험기를 통해 확인한다. +6) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.656536+00', null, '다대48량(2015)', 'Rotem'), ('5b9097b0-8ca1-4387-88d5-e9680c475aa8', '0236', '236', '상용제동코크 차단(Car1)', 'Tc1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5ba5d6a0-8878-4cc4-a6ed-f03387e2624d', '0510', '510', 'DCU#5 3위(R2)-출입문 닫힘 리미트 스위치1 고장', 'T2', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 "DCS1 Failure(Leftt)” 신호가 "1"이 되면 검지.', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('5bb518f6-741d-44e2-9de9-2db7f6a50d25', '0068', '68', 'MAIN FUSE#2 DISCONNECTED(Car5)', 'T2', 'W', 'MAIN FUSE#2 DISCONNECTED(Car5)', 'W', '기타', '차량으로부터 AUX FUSE DISCONNECTED 신호 입력 시 +', 'VVVF 고압 차단으로 추진 불능', '해당 퓨즈 소손 +', '해당 퓨즈 교체 +회로 도면 : REC20210DX0', null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5bb745b1-a6d9-4ff9-92ac-a65c64961eca', '0131', '131', 'VVVF-IPM V상 이상검지(GDFV) (Car3)', 'M2', 'C', 'VVVF-IPM V상 이상검지(GDFV)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT34의 Bit5 “GDFV” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 'IPM V상 이상검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치 내부 IPM에 과전류, 과온이 검지될경우.', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반배전반의 VVVFIC nfb 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 견인전동기로 출력되는 3상의 전류치 확인함. +3) 특정상의 전류치가 비정상적일 경우 특정상에 해당되는 IPM, 전류센서, 모터결선을 확인한다. +4) 전류센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작상태를 시험기를 통해 확인한다. +6) IPM 전원공급기의 전원연결상태 또는 광케이블의 연결상태와 배선상태를 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.656536+00', null, '다대48량(2015)', 'Rotem'), ('5bdf46ac-df3e-4412-9b4d-bc713af117ea', '0506', '506', 'DCU#5 6위(L3)-출입문 입력 저전압', 'T2', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 "1"이 되면 검지.', '저전안 상태 (출입문 동작이 심하게 느려지거나 작동조차 안될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('5beba552-06fd-45d7-a04d-59564d5f6f1f', '0211', '211', 'BECU#6-2축속도신호의 비정상', 'M3', 'C', 'BECU-2축속도신호의 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit2 “2축속도신호의 비정상” 신호가 "1"이 되면 검지.', '해당 차량 2축속도신호의 비정상 검지 현시 및 해당 차량 활주제어 불가.', '해당 차량의 2축 속도센서 고장 발생.', '해당 차량의 2축 속도센서가 정상적일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('5bebd820-4728-488b-a267-4deef63f38e4', '0731', '731', 'HVAC#3 - 냉난방장치1 리턴 센서 고장', 'M2', 'C', 'HVAC-냉난방장치1 리턴 센서 고장', 'C', 'HVAC', '냉난방장치1의 리턴 센서 고장 발생 +', '냉난방장치1 리턴 센서 고장현시', '온도센서 검지범위는 -45 ~ 85도(820 ~ 1,330Ω)인데, 2초 이상 검지범위를 벗어나는 경우 +', '온도센서 검지값이 2초 이상 허용온도 범위 내일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820 ~ 1,330Ω을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5bf32730-3f27-476f-9974-9ce851eed327', '0715', '715', 'HVAC#3 - 냉난방장치1 압력스위치1(DPS) 저압', 'M2', 'D', 'HVAC-냉난방장치1 압력스위치1(DPS) 저압', 'D', 'HVAC', '냉난방장치1 냉매 압력스위치1 저압 발생 +', 'UNIT1CYCLE1 냉방기능불가', 'UNIT1DSP1측 냉매압력이 3초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우 +', '냉매압력이 정상수치 2±0.5(kgf/cm2) 이상으로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CREF2의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)를 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설 여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안 되는 것을 확인한 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5c0a7d72-0eaa-418b-a693-d25d8d2875ea', '0732', '732', 'HVAC#8 - 실외온도 센서1 고장', 'Tc2', 'C', 'HVAC-실외온도 센서 고장', 'C', 'HVAC', '실외온도 센서 고장 발생 +', '실외온도 센서 고장 현시', '온도센서 검지범위는 -45 ~ 85도(820 ~ 1,330Ω)인데, 2초 이상 검지범위를 벗어나는 경우 +', '온도센서 검지값이 2초 이상 허용온도 범위 내일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820 ~ 1,330Ω을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5c112dfc-2ba6-4948-a254-f39dce5ebf81', '0504', '504', 'DCU#6 2위(L1) - 출입문 외부 비상핸들 취급(EAD)', 'M3', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5c2063cf-98f1-48b4-a968-9d964e92417e', '0503', '503', 'DCU#2 3위(R2)-출입문 내부비상핸들 취급(EED)', 'M1', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('5c20a42c-2de2-451d-9394-b1bb3a979fe5', '0912', '912', 'TRAIN RADIO#8 - TRCP(차량조작반) 고장', 'Tc2', 'C', 'TRAIN RADIO-TRCP(차량 조작반) 고장', 'C', 'TRS', 'Train Radio의 E-NET 데이터 중 Train Radio-TCMS SD TEXT15의 Bit0 “TRCP 고장” 신호가 “1”이 되면 +검지 +', '기관사무전기 통화 불능', 'HW고장 +', '제어기 리셋', null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5c2a6e30-5239-42d1-a45d-f779ffb19ebe', '0836', '836', '실내카메라#3(SCAM) 고장(Car#1)', 'Tc1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5c5221e7-5d47-4e85-9d3d-c96fc1c43d08', '0507', '507', 'DCU#2 2위(L1)-초기화 실패', 'M1', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 "Calibration failure” 신호가 "1"이 되면 검지.', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터고장, 장애물 감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우', '초기화 실패를 야기한 고장 코드를 확인하여 조치 후, 재 닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('5c7b5b41-b3eb-45e2-ab6f-161da87a2cea', '1204', '1204', 'FDU#5-감지기2 고장', 'T2', 'C', 'FDU-감지기2 고장', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 "Detector1 State” 신호가 "10"이 되면 검지.', '감지기 고장상태 현시(자동 소거 안됨)', '1) 감지기로부터 데이터 응답이 없는경우. +2) 감지기로부터 수신된 데이터의 CRC가 맞지 않는경우 +3) 감지기로부터 수신된 데이터의 ID가 송신 ID와 일치하지 않는경우', 'FDU 전원 리셋 후 감지기로부터 정상적으로 데이터가 수신된 경우', '1) FDU 전원 리셋 후 고장 소거 여부 확인 +2) 정상 동작중인 감지기와 위치 교환 후 FDU 전원 리셋 및 고장 상태 확인 +3) 동일한 감지기에서 고장 발생시 감지기 교체 +4) 동일한 위치에서 고장 발생시 감지기 라인 점검', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('5c7bc86b-3dd7-4ec3-bbca-f90821dff418', '0136', '136', 'VVVF#2-OVT 전류센서 이상검지(OVCTD)', 'M1', 'C', 'VVVF-OVT 고장 과전류 검지(OVCTD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT29의 Bit1 “OVCTD” 신호가 "1"이 되면 검지.', null, 'OVT의 동작 조건에서 동작하지 않았을 때 중고장 발생.', '동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) OVCT 외관파손 및 커넥터 분리 유무 확인. +2) OVRe 저항값 측정.(기준값 6.4Ω) +3) OVT UNIT과 OVRe의 주 회로 결선상태 확인 +4) OVT UNIT의 IGBT 크랙 발생 유무 확인. +5) OVT UNIT의 PCB기판 상태 확인. +6) OVCT 커넥터의 P15A1~F15A1의 전압이 +15V임을 확인한다. +7) OVCT 커넥터의 N15A1~F15A1의 전압이 -15V임을 확인한다. +8) 상기의 점검부분에 이상이 있을 경우 관련부품을 교체한다.', null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('5c804873-aad1-40b9-bfd0-2cc1b5fb8c28', '0158', '158', 'VVVF#3 - HSCB고착검지(HBNO)', 'M2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5c838b23-5f1a-4423-ae66-70bae34a35eb', '0751', '751', 'HVAC#6-냉난방장치1 보조히터 과열', 'M3', 'C', 'HVAC-냉난방장치1 보조히터 과열', 'C', 'HVAC', 'HVAC1 보조난방기 작동 중 과열 발생.', 'UNIT1 보조난방기 난방 불가', '보조난방기 작동 중 1초 이상동안 온도가 70도 이상으로 과온센서 정상 신호가 수신되지 않는 경우', '1초 이상동안 60도 미만으로 온도가 떨어져 과온센서 정상 신호가 수신되는 경우', '1) 보조난방기가 꺼진 상태에서도 문제 발생 시, 과온 센서를 교체한다. +2) 센서 교체 후에도 문제가 발생되면, 배선에 문제가 없는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('5c8cfb29-2ba9-4bb1-8775-5e8427d9caa6', '0512', '512', 'DCU#5 4위(L2) - 파라미터 로딩 실패', 'T2', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 “Paraneter error” 신호가 “1”이 되면 검지 +', 'Parametererror 현시(출입문은 정상작동 가능)', 'DCU 자체 내의 EEPROM으로부터 parameter데이터 로딩 실패 +', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5cb18f42-d354-4d45-99c0-d9e8526e43b8', '0221', '221', 'BECU#1-제동력부족(ISBD)', 'Tc1', 'B', 'BECU-제동력부족(ISBD)', 'B', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit5 “ISBD” 신호가 "1"이 되면 검지.', '해당 차량 제동력 부족 검지 현시 및 해당 차량 제동압력(BCP)이 타 차량에 비해 현저히 낮음.', '제동 7단 취급 시 해당 차량의 제동압력이 생성되지 않음.', '제동 7단 취급 시 정상적인 제동압력이 생성된 경우 소거.', 'MCS모드로 전환 후, 마스콘을 N(중립) -> 제동7단까지 수회취급 하여 소거 여부 확인. 제동 취급 확인 후, 주의 운전 할 것. +지속발생시 관제보고하고 지시에 따를 것.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('5cd21723-c4b2-4f1e-a7ff-e8ad26614a2d', '0518', '518', 'DCU#6 2위(L1)-출입문 Enable 신호 에러', 'M3', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 "Enable signal error” 신호가 "1"이 되면 검지.', 'DCU 출입문 Enable 신호 에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) 취급시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함.', '해당출입문 enable 신호 수신', '1) AUTO/MCS 모드시에는 YARD모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인한다. (YARD/FMC 모드시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.392739+00', null, '로템40량(2018)-1단계', 'Rotem'), ('5cf26d42-43af-4bbf-bd24-bf2d01aaa35a', '0709', '709', 'HVAC#4 - 냉난방장치2 압력스위치2(DPS) 저압', 'T1', 'D', 'HVAC-냉난방장치2 압력스위치2(DPS) 저압', 'D', 'HVAC', '냉난방장치2 냉매 압력스위치2 저압 발생 +', 'UNIT2CYCLE2 냉방기능불가', 'UNIT2DSP2측 냉매압력이 3초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우 +', '냉매압력이 정상수치 2±0.5(kgf/cm2) 이상으로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CREF4의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)를 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설 여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안 되는 것을 확인한 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5cf4204f-224b-4bdd-ae83-b50661c46566', '0722', '722', 'HVAC#7-냉난방장치2 압력스위치1(DPS) 냉매부족', 'M4', 'C', 'HVAC-냉난방장치2 압력스위치1(DPS) 냉매부족', 'C', 'HVAC', '냉난방장치2 냉매 압력스위치1 저압 발생.', 'UNIT2 CYCLE1 냉방 기능 불가', 'UNIT2 DSP1측 냉매 압력이 30초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우', '냉매 압력이 정상 수치 2±0.5(kgf/cm2 이상 유지하도록 하고, 마이콤 전원을 리셋', '1) 배전반 점검 커버를 열고 마이콤 전원을 리셋한 후, 냉방 가동 시, CREF4의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)을 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안되는 것을 확인한 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('5cf768f0-a22b-44b7-8457-3b12f280f323', '0040', '40', 'Zero Speed 바이패스', 'Tc2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5d05738f-8ef4-447b-8c1d-a3017a9bcb53', '0704', '704', 'HVAC#3 - 냉난방장치1 압축기1 과부하', 'M2', 'C', 'HVAC-냉난방장치1 압축기1 과부하', 'C', 'HVAC', 'HVAC 냉방 작동 중 냉난방장치1 압축기1 또는 응축기1 모터에 과부하 발생 +', '냉방 기능 저하(전냉방 시 반냉방으로 작동)', ' +1) 냉방 작동 중 UNIT1의 압축기1 또는 응축기1 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRCM1과 연결된 THR1이 Trip 됨. +', 'UNIT1의 압축기1 또는 응축기1 모터의 과부하조건을 해소하여 정상 가능 상태로 만들고, THR1 및 마이콤 전원 리셋', '1) 냉난방 배전반의 점검커버를 열고, THR1의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR4의 전류 세팅값이 11.5A에 맞춰져 있는지 확인하여, 아닐 경우, (+) 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동시킨 후, THR1의 2차측 2, 4, 6 단자에서 각 단자 간 상간 전압이 AC 380V로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 압축기 및 응축기 단품 상태에서 점검을 한다. +7) THR1의 2차측 2, 4, 6 단자에서 각 단자 간 권선저항이 모두 같은지 확인한다. (±10% 이하) (압축기1 및 응축기1 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT1의 압축기1 또는 응축기1 모터의 결선을 해제한 후 각 부품의 권선저항을 확인 후, 문제가 있는 부품을 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR1 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5d1ceefc-f117-44c3-aea4-aa64fb25fb9c', '0211', '211', 'BECU#8 - 2축 속도신호의 비정상', 'Tc2', 'C', 'BECU-2축속도신호의 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit2 “2축속도신호의 비정상” 신호가 “1”이 +되면 검지 +', '해당 차량 2축속도신호의 비정상 검지 현시 및 해당 차량 활주제어불가', '해당 차량의 2축속도센서 고장 발생 +', '해당 차량의 2축속도센서가 정상적일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5d1f997d-6918-44bb-800d-f389ca519b0e', '0718', '718', 'HVAC#3 - CO2 센서1 고장', 'M2', 'C', 'HVAC-CO2 센서1 고장', 'C', 'HVAC', '객실 CO2 센서1 고장 발생 +', 'CO2 센서1 고장현시', 'CO2 센서의 검지범위는 0 ~ 4,000ppm(2 ~ 10Vdc)인데, 1초 이상 출력전압이 2Vdc(0ppm) 미만으로 떨어지는 경우 +', 'CO2 센서 검지값이 1초 이상 2Vdc(0ppm) 이상 지속되는 경우', '1) 전원을 인가한 상태에서 CO2 센서 커버를 열고 테스터기를 통해 ‘OUT2' 단자와 ‘G' 단자 간의 전압이 2Vdc 미만인지 확인한다. +2) 만약 전압이 2Vdc 이상인데도 고장이 지속될 경우 마이콤을 교체한다. +3) 만약 전압이 2Vdc 미만으로 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5d288b93-4ff5-4283-8b5b-6571c0fbdff0', '1102', '1102', 'PSD#1-지상 스크린도어 닫힘 고장', 'Tc1', 'D', 'PSD-지상 스크린도어 닫힘 고장', 'C', 'PSD', 'PSD 의 RS485 데이터 중 PSD-TCMS SD TEXT5(TEXT6)의 Bit2 “지상 PSD 닫힘 확인 NG” 신호가 "1"이 되면 검지. ([지상 PSD 설비 장애] - 전동차 출입문 닫힘, 차상장치가 스크린도어 닫힘 명령을 송신 +지상장치로부터 스크린도어 닫힘확인 NG가 수신된 경우)', '전동차 출입문 닫힘 후 전동차 출입문은 닫혔으나, PSD가 닫히지 않을 경우 전동차 출입문과 PSD모두 닫혔으나 장애로 현시될 경우', '지상 PSD 설비에서 PSD 전체 닫힘 명령 실행중 Feedback 신호가 올바르지 않음.', '지상설비에대한 고장이므로 차상장치는 정상 동작한다. 기관사는 PSD 닫힘 상태확인, 닫힘 실패시 +기관사 조작반으로 수동취급 실시 할 것. +*해당 역사를 벗어나면 소멸됨.', null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('5d2a0ba6-7b64-4839-9491-6e135f60c454', '0510', '510', 'DCU#7 4위(L2)-출입문 닫힘 리미트 스위치1 고장', 'M4', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 "DCS1 Failure(Leftt)” 신호가 "1"이 되면 검지.', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('5d344826-09da-409d-abf9-6a8ad554f3d3', '0732', '732', 'HVAC#7-실외온도 센서1 고장', 'M4', 'C', 'HVAC-실외온도 센서 고장', 'C', 'HVAC', '실외온도 센서 고장 발생', '실외온도 센서 고장현시', '온도센서 검지범위는 -45~85도 (820~1330옴) 인데, 2초 이상 검지범위를 벗어나는 경우', '온도센서 검지 값이 2초 이상 허용온도 범위 내 일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820~1330옴 을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우, 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('5d3d04a3-eae0-45ae-960c-3e8d1c4e02ad', '1202', '1202', 'FDU#7 - 감지기1 고장', 'M4', 'C', 'FDU-감지기1 고장 (Car1~8)', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 “Detector1 State” 신호가 “10”이 되면 검지 +', '감지기고장상태현시(자동소거 안 됨)', ' +1) 감지기로부터 데이터 응답이 없는 경우 +2) 감지기로부터 수신된 데이터의 CRC가 맞지 않는 경우 +3) 감지기로부터 수신된 데이터의 ID가 송신 ID와 일치하지 않는 경우 +', 'FDU 전원 리셋 후 감지기로부터 정상적으로 데이터가 수신된 경우', '1) FDU 전원 리셋 후 고장 소거 여부 확인 +2) 정상동작중인 감지기와 위치 교환 후 FDU 전원 리셋 및 고장 상태 확인 +3) 동일한 감지기에서 고장 발생 시 감지기 교체 +4) 동일한 위치에서 고장 발생 시 감지기 라인 점검', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5d5b4f65-f167-4e8a-a992-ed9d5f70b7a3', '0521', '521', 'DCU#2 2위(L1)-모듈 상태 이상', 'M1', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 "01"또는 "00"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('5d70419a-8213-4333-af2a-5eaf4675c351', '1510', '1510', '열차분리#2 검지(Car7)', 'M4', 'B', '열차분리#2 검지', 'B', 'TCMS', '차량의 열차분리#2 검지 +', '1) 2위측 열차검지신호(SOTS2) 검출 시 화면에 현시 +2) 실제 열차분리 시 검지되었는지 확인 필요(실제 열차분리 시 다른 차량 이 접근하지 못하도록 선조치 필요) +3) 실제 열차 분리 시 비상제동 안전루프에 의해 비상제동체결 됨. +4) 열차 분리에 따라 분리 위치부터 차량제어장치(TU)와 반대편의 편성제어장치(CU)의 통신고장 동반 발생', 'CU/TU의 2위측 열차분리신호(SOTS2) 신호 활성(LOW) 입력 시 고장 현시 +', 'CU/TU의 2위측 열차분리신호(SOTS2) 신호 정상(HIGH) 입력 시 소거됨.', '1) 실제 열차분리 시 관제에 연락하고, 지시에 따름 +2) 회로 차단기 ELCB ON 상태 확인 +3) CU인 경우 2위측 열차분리신호 DIM1 PCB의 입력채널(SOTS +2) 점검/교체 +4) TU인 경우 2위측 열차분리신호 DIM3 PCB의 입력채널(SOTS +2) 점검/교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5d76ad62-8182-4008-88ed-d10eda98bd65', '0200', '200', 'BECU#3 통신고장', 'M2', 'B', 'BECU-통신고장', 'B', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT23의 'Life sign'이 변하지 않음.', '해당 차량 통신고장 현시 및 해당 차량의 제동압력(BCP) 등의 데이터가 반응하지 않음. (고장은 현시되나 제동제어는 정상적 일 수 있음)', 'BECU 전원 CB OFF 혹은 통신연결 불량.', 'BECU와 TCMS 간 RS485 통신이 복귀 되어 BECU-TCMS SD TEXT23의 'Life sign'이 변동시 소거.', 'BECU를 리셋(BECU CB OFF/ON) 후 복귀여부를 확인. +리셋 후 복귀되지 않을 경우 관제보고하고 지시에 따를 것.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('5d843bd8-26ed-4676-88f2-dd238c735d16', '0508', '508', 'DCU#2 4위(L2)-출입문 모터/인코더 고장', 'M1', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 "Motor / Encoder failure” 신호가 "1"이 되면 검지.', '출입문 정상동작 불가', '1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우 (인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터 / 인코더 회로가 손상된 경우', '모터/인코더 및 DCU가 정상상태이고, 전기적 연결상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있느지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. +★ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. + +1. DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. +2. DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) +3. DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('5d892d3c-abc2-4ab6-9a59-0a3ab5f8856f', '0304', '304', 'ATC#1 - 1계 고장', 'Tc1', 'C', 'ATC-1계 고장', 'C', 'ATC', 'ATC의 RS485 데이터 중 ATC-TCMS SD TEXT7의 Bit4 ~ 7 “ATC/ATO Status” 데이터가 ATC 1계 Bad 상태이면 검지 +', 'MMI에 ATC/ATO1이 빨간색으로 표기되며 관련 고장메시지 현시', ' +1) ATC 시스템 자체 진단테스트 실행결과 비정상상태일 경우 +2) ATC-1계 CPU 보드 고장 시 +3) ATC-1계 POWER 보드 고장 시 +', '상기 검지 조건 해제 시', '1) 전원스위치 CB ATC#1, 2 OFF → ON하여 복귀시도 후, 복귀되었는지 확인한다. +2) 1, 2계 동시 고장 시, 완전수동(FMC) 전환 운행한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5d8e2b87-1167-43bc-9157-1b78fae6f4e3', '1502', '1502', '기타장치용 DC 회로차단기 차단(Car5)', 'T2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5d9ff853-a762-4353-82c1-c354d7d359d3', '0162', '162', 'VVVF#3 - PWM제어장치 이상검지(WDTD_P)', 'M2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5da45dd0-4182-40a3-bdd8-46c260e368fc', '0213', '213', 'BECU#3 - AC 압력센서 고장', 'M2', 'C', 'BECU-AC 압력센서 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit4 “AC 압력센서 고장” 신호가 “1”이 되면 검지 +', '해당 차량 공기제동장치고장, AC 압력센서 고장검지 현시 및 해당 차량 제동제어불가', '해당 차량의 AC 압력센서 고장 +', '해당 차량의 AC 압력센서가 정상일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5dc0c512-5624-424e-ba94-793bcc0b7fbe', '0235', '235', '제동력부족(ISBD, Car7)', 'M4', 'B', '제동력부족(ISBD)', 'B', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit3 “ISBD” 신호가 "1"이 되면 검지.', '해당 차량 제동력 부족 검지 현시 및 해당 차량 제동압력(BCP)이 타 차량에 비해 현저히 낮음.', '제동 7단 취급 시 해당 차량의 제동압력이 생성되지 않음.', '제동 7단 취급 시 정상적인 제동압력이 생성된 경우 소거.', 'MCS모드로 전환 후, 마스콘을 N(중립) -> 제동7단까지 수회취급 하여 소거 여부 확인. 제동 취급 확인 후, 주의 운전 할 것. +지속발생시 관제보고하고 지시에 따를 것.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('5dc52d02-eee4-4ec4-a1b4-6a93047e513a', '0509', '509', 'DCU#2 2위(L1) - 출입문 잠김 리미트 스위치 고장', 'M1', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 “DLS Failure” 신호가 “1”이 되면 검지 +', '출입문 잠김 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5dc754b8-39d1-4f2b-9c21-b67e99a4a18e', '0521', '521', 'DCU#8 3위(R2)-모듈 상태 이상', 'Tc2', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 "01"또는 "00"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('5dc780e0-a002-4553-946f-418d1a0dfc06', '0241', '241', 'BECU#7 - 1축 스키드신호', 'M4', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5dd04570-752f-4725-8f09-f0cdf0aecb17', '0521', '521', 'DCU#4 2위(L1) - 모듈 상태 이상', 'T1', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 “01” 또는 “00”이 되면 +검지 +', '이중계절체동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러)이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5dee8ec4-1501-4408-a225-41ccb70beb87', '0721', '721', 'HVAC#3 - 냉난방장치2 압력스위치2(DPS) 냉매부족', 'M2', 'C', 'HVAC-냉난방장치2 압력스위치2(DPS) 냉매부족', 'C', 'HVAC', '냉난방장치2 냉매 압력스위치2 저압 발생 +', 'UNIT2CYCLE2 냉방 기능 불가', 'UNIT2DSP2측 냉매압력이 30초 이상0.5±0.3(kgf/cm2) 이하로 떨어지는 경우 +', '냉매압력이 정상수치 2±0.5(kgf/cm2) 이상 유지하도록 하고, 마이콤전원을 리셋', '1) 배전반 점검 커버를 열고 마이콤 전원을 리셋한 후, 냉방 가동 시, CREF4의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)을 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설 여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안 되는 것을 확인한 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5df0e77e-e74e-4c3d-920c-959da1ab231a', '0502', '502', 'DCU#5 6위(L3) - 출입문 장애물검지', 'T2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5df18b26-b8f9-47cf-b3db-0fa9af146e07', '0410', '410', 'SIV#1-인버터1 과온검지(INV1THF) ', 'Tc1', 'B', 'SIV-인버터1 과온검지(INV1THF)', 'B', 'SIV', '보조전원장치(SIV) 의 RS485 데이터 중 SIV-TCMS SD TEXT5의 Bit0 “INV1THF” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 'SIV 인버터 1의 스택 과온' 표시됨. +2) 보조전원장치는 상기 고장검지 후 자동 재기동이 되지 않으며 중고장으로 처리함. +3) 중고장이 발생되면 TCMS 일반화면에 보조전원장치 상태 붉을색으로 표기되며, 연장급전 됨.', '보조전원장치(SIV) 인버터 1의 냉각기 온도가 105도 이상인 조건에서 검지.', '1) 보조전원장치(SIV) 인버터 1의 냉각기 온도가 105도 미만으로 떨어졌을 시 +2) 보조전원장치(SIV) 리셋으로 고장 소거 됨.', '1) 상기고장이 발생이 된 경우 아래와 같이 조치한다. +2) 보조전원장치(SIV) 냉각기의 손상이 없는지 확인한다. +3) 보조전원장치(SIV) 내부에 인버터 유닛 구성품에 손상이 없는지 확인한다. +4) 인버터 유닛 내부에 온도센서 및 결선에 이상이 없느지 확인한다. +5) DIN 보드의 동작상태를 시험기를 통해 확인한다. +6) 인버터 유닛 구성품들의 배선상태와 광케이블의 연결상태를 확인한다. +7) 부하단의 절연상태 및 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('5df4af34-32b2-487e-80cb-89cf0124b9eb', '0240', '240', 'BECU#2-2축스키드신호', 'M1', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('5df925df-4777-4b3e-9b2a-8ed6bf86a3c4', '0236', '236', '상용제동코크 차단(Car4)', 'T1', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('5df9d784-2f28-41a9-b389-a9454652eaa4', '0518', '518', 'DCU#1 5위(R3) - 출입문 Enable 신호 에러', 'Tc1', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 “Enable signal error” 신호가 “1”이 되면 검지 +', 'DCU 출입문Enable신호에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드 시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을 때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드 시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입 상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호 장치로부터의 출입문 열림 명령 신호) 취급 시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함. +', '해당 출입문 enable 신호수신', '1) AUTO/MCS 모드 시에는 YARD 모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인 한다. (YARD/FMC 모드 시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5e0145ce-d68b-4d7f-a089-b6c7b828ee12', '0502', '502', 'DCU#3 5위(R3)-출입문 장애물검지', 'M2', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('5e18f15e-b996-49a6-a751-c0439166cdcb', '0846', '846', '0', 'T1', '0', null, null, '0', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('5e3211d8-e9cc-4045-af03-e1d6aa7b1905', '0518', '518', 'DCU#1 6위(L3) - 출입문 Enable 신호 에러', 'Tc1', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 “Enable signal error” 신호가 “1”이 되면 검지 +', 'DCU 출입문Enable신호에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드 시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을 때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드 시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입 상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호 장치로부터의 출입문 열림 명령 신호) 취급 시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함. +', '해당 출입문 enable 신호수신', '1) AUTO/MCS 모드 시에는 YARD 모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인 한다. (YARD/FMC 모드 시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5e3cc12a-c3f1-4161-94f5-b404339b15c0', '0162', '162', 'VVVF#2 - PWM제어장치 이상검지(WDTD_P)', 'M1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5e416593-6c7c-4831-821f-b536fa0d7c8c', '0141', '141', 'VVVF#3 - 제어전원전압 이상(PWM1) (CLVD_P1)', 'M2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5e4489d4-4826-4366-9140-5b2cd914875b', '0521', '521', 'DCU#1 6위(L3)-모듈 상태 이상', 'Tc1', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 "01"또는 "00"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('5e494867-e75e-4331-a47e-a00dd82d7bbb', '1515', '1515', 'CU2 모듈고장 - DIM2(Car1)', 'Tc1', 'C', 'CU1, 2 모듈고장 - DIM2', 'C', 'TCMS', 'CU의 DIM2 PCB가 이 정상적으로 인식되지 않아 점검이 필요할 때 +', '1) CU1의 DIM2 PCB가 모듈 고장이 발생하면, CU2로 자동 절체됨. (CU2로 자동 절체되면, 운행 에는 지장이 없음.) +2) CU2 자동 절체 시 화면의 우측 상단 경고장글자 하단에 “B.SYS” 라는 표시가 나타남. +3) 자동절체 시 열차 운행에는 관계없음. +4) CU2의 DIM2 모듈고장 시는 CU1 정상동작 시 운행에는 지장이 없음.', 'CU DIM2의 ID를 정상적으로 검출하지 못할 때 화면에 현시 +', 'CU DIM2의 ID를 정상적으로 검출하는 경우 소거됨.', '1) CU의 DIM2 PCB 교체 +2) 불량 해소가 되지 않을 경우, 순차적으로 MCPU, SCM, AUX PCB를 교체하여 정상여부 확인', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5e494dc2-454b-47a7-a7fa-57f76ce26944', '0752', '752', 'HVAC#7 - 배기댐퍼 닫힘고장', 'M4', 'C', 'HVAC-배기댐퍼 닫힘고장', 'C', 'HVAC', '차량 배기댐퍼가 닫혀있는 상태에서 배기댐퍼 닫힘 리미트 스위치가 작동되지 않음 +', '배기댐퍼 닫힘 고장 현시', '배기댐퍼를 닫힘으로 제어했으나 닫힘 리미트 스위치 입력이 없을 경우 +', '배기댐퍼 닫힘 상태에서 리미트 스위치 입력이 정상적으로 입력', '1) 배기댐퍼가 닫힌 상태에서 닫힘 리미트 스위치가 정상적으로 작동되었는지 확인한다. +2) 닫힘 리미트 스위치가 정상작동 되었음에도 문제가 발생될 경우, 스위치를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5e4bd2e9-9afe-4402-a9f4-739cb7e7630d', '0509', '509', 'DCU#5 3위(R2) - 출입문 잠김 리미트 스위치 고장', 'T2', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 “DLS Failure” 신호가 “1”이 되면 검지 +', '출입문 잠김 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5e4dc6ef-dbd9-4bd1-b5b5-45ad3eebeb80', '0510', '510', 'DCU#7 3위(R2) - 출입문 닫힘 리미트 스위치1 고장', 'M4', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 “DCS1 Failure(Leftt)” 신호가 “1”이 되면 검지 +', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5e5fab9b-22cb-4422-a47c-fa735cedabb5', '0507', '507', 'DCU#4 2위(L1)-초기화 실패', 'T1', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 "Calibration failure” 신호가 "1"이 되면 검지.', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터고장, 장애물 감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우', '초기화 실패를 야기한 고장 코드를 확인하여 조치 후, 재 닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('5e60783a-b379-4703-9f0b-a0fafd0c1839', '0151', '151', 'VVVF#6 - 통신 이상검지(MONIA_ERR)', 'M3', 'C', 'VVVF-통신 이상 검지(MONIA_ERR)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT31의 Bit0 “MONIA_ERR” 신호가 “1”이 되면 검지 +', 'TCMS 화면에 고정정보 현시되며, 추진제어장치상태화면에 나타나는 데이터에 변동이 없음.', 'TCMS-추진제어장치(VVVF)간통신정보가 3초 이상동일한정보로 유지되면 통신고장을 검지함. +', 'TCMS-추진제어장치(VVVF)간통신정보가정상적으로 통신이 될 경우 소거됨.', '1) 추진제어장치(VVVF) 리셋 실시 후 통신고장 소거됨을 확인 +2) 통신고장 소거가 되지 않을 경우 추진제어장치 MON 보드 신품으로 교체 후 통신고장 소거여부 확인 +3) 위 조건에도 고장이 소거되지 않을 경우, TCMS-추진제어장치 간 RS485 통신케이블 연결 상태 점검', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5e68fe8b-365c-43cb-87d5-3c5b78f6fc95', '1705', '1705', '노선안내표시기#3 고장(Car8)', 'Tc2', 'C', '노선안내표시기#3 고장', 'C', 'PIC', 'PIC 장치의 노선안내표시기#3이 고장이 났을 때 발생 +', '1) 노선안내표시기 화면 미현시 +2) 노선안내표시기 안내 화면 오현시', '통신고장 +', '통신 재개 시', '1) 이더넷 스위치 링크 확인 +2) 이더넷 케이블 점검 +3) 제어보드 및 전원보드 교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5e6d6e05-bcb5-4d02-999b-00f61471b4a3', '0178', '178', 'VVVF#6-LB2 고착(LB2NO)', 'M3', 'C', 'VVVF-LB2 고착(LB2NO)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT34의 Bit3 “LB2NO” 신호가 "1"이 되면 검지.', null, 'LB2 개방조건에서 투입상태 유지 시 고장검지.', '동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) 주회로 차단기함 내에 LB2의 주접점을 확인하여 고착여부를 확인한다. +2) 주회로 차단기함 내에 LB2의 보조접점을 확인하여 고착여부를 확인한다. +3) 추진제어장치 계전기 유니트에 LB2R 계전기 상태를 확인하여 고착여부를 확인한다. +4) 추진제어장치 시험기를 이용하여 TCU(통합제어기) 시험을 실시하여 이상여부를 확인한다. +5) 상기의 점검부분에 이상이 있을경우 관련부품을 교체한다.', null, '3', '2025-10-12 01:21:37.578803+00', null, '로템40량(2018)-1단계', 'Rotem'), ('5e6f0093-9227-434b-b1a0-c720228ad19d', '0168', '168', 'VVVF#6-응하중 신호 이상검지(BRFD)', 'M3', 'C', 'VVVF-BCU 고장(BRFD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT33의 Bit1 “BRFD” 신호가 "1"이 되면 검지.', null, '응하중 PWM신호의 듀티값 90%이상 도달 시 고장검지', '1) 역행 듀티값 80%이하, 10%이상. +2) 제동 듀티값 80%이하, 10%이상 & 제동 OFF', '1) TCMS의 시리얼 데이터 확인창에서 각 차량의 응하중 값을 확인한다. 수치에 이상이 있는 차량이 확인될 경우 해당 차량의 BCU를 교체한다. +2) 추진제어장치의 외부커넥터 CN1을 분리하여 33번, 34번, 35번 핀의 삽입상태를 확인한다. +3) 차량에 제어전원만 인가 후 PUZ보드에 모니터링 프로그램이 설치된 노트북과 연결하여 응하중값을 확인한다. (공차 34 ~39%) +4) 추진제어장치 시험기를 이용하여 TCU(통합제어장치)의 이상여부를 확인한다.', null, '3', '2025-10-12 01:21:37.578803+00', null, '로템40량(2018)-1단계', 'Rotem'), ('5e8f8620-e9ce-48cc-92ea-2cfa9794f73a', '1005', '1005', 'CMSB#1 - 입력 DC 저전압', 'Tc1', 'C', 'CMSB-입력 DC 저전압', 'C', 'CMSB', 'CMSB의 RS485 데이터 중 CMSB-TCMS SD TEXT3의 Bit6 “입력 DC 저전압” 신호가 “1”이 되면 검지 +', '1) TCMS 화면 하단 또는 고장화면에 ‘입력 DC 저전압' 표시됨. +2) 바이패스 모드로 전환되고, CM 기동 시 ‘바이패스 기동'으로 표시됨.', 'CMSB 내 콘덴서(DC-LINK) 충전 전압이 DC 402V 이하일 경우 검지됨. +', '1) 차량 전원 OFF +2) CMSB 내부의 표시기 패널 RESET 버튼 누름', '0) 정상운행 후, 검수고에 입고하여 아래와 같이 조치한다. +1) 상기고장은 고장 소거 후, 재현시험을 진행하여 지속적으로 발생될 경우 아래와 같이 조치한다. +2) 회로 차단기(CMN) 상태를 확인한다. +3) 충전저항 상태를 확인한다. +4) MC 접촉기 동작여부를 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5ea1a5c7-f22c-4e60-b2e3-851c030da7d8', '0150', '150', 'VVVF#2-가선저전압검지(ESLVD)', 'M1', 'C', 'VVVF-가선저전압검지(ESLVD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT30의 Bit7 “ESLVD” 신호가 "1"이 되면 검지.', null, '가선 전압이 850V 이하 감압 시 고장검지.', '1) 역행 고장검지 2초 후 자동 재기동 +2) 제동 제동 OFF시 고장 소거', '1) 상기고장이 간헐적으로 발생하는 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 가선전압에 이상이 있는지 확인한다. +3) 추진제어장치 내부 고전압부에 소손흔적이 있는지 확인한다. +4) FC에 연결된 버스바의 체결상태가 양호한지 확인한고, 버스바를 분리하여 FC의 Capacitance를 측정하여 이상이 없는지 확인한다. +5) 전압센서의 외관 및 단자 체결상태를 확인한다. +6) 추진제어장치 시험기를 이용하여 TCU(통합제어장치)의 이상여부를 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('5ead836d-0b8b-491e-9618-6fa6106ce5e9', '0510', '510', 'DCU#6 3위(R2)-출입문 닫힘 리미트 스위치1 고장', 'M3', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 "DCS1 Failure(Leftt)” 신호가 "1"이 되면 검지.', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('5eb16705-1afe-44c9-a25c-e9b667faa3e8', '0210', '210', 'BECU#5 - 3축 속도신호의 비정상', 'T2', 'C', 'BECU-3축속도신호의 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit1 “3축속도신호의 비정상” 신호가 “1”이 되면 검지 +', '해당 차량 3축속도신호의 비정상 검지 현시 및 해당 차량 활주제어불가', '해당 차량의 3축속도센서 고장 발생 +', '해당 차량의 3축속도센서가 정상적일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5ec5e59c-ab52-40af-90b9-61a942349e8e', '0209', '209', 'BECU#8-4축속도신호의 비정상', 'Tc2', 'C', 'BECU-4축속도신호의 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit0 “4축속도신호의 비정상” 신호가 "1"이 되면 검지.', '해당 차량 4축속도신호의 비정상 검지 현시 및 해당 차량 활주제어 불가.', '해당 차량의 4축 속도센서 고장 발생.', '해당 차량의 4축 속도센서가 정상적일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('5ef84a73-f298-4ffa-8ed7-1e20c5948cb7', '0221', '221', 'BECU#2-제동력부족(ISBD)', 'M1', 'B', 'BECU-제동력부족(ISBD)', 'B', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit5 “ISBD” 신호가 "1"이 되면 검지.', '해당 차량 제동력 부족 검지 현시 및 해당 차량 제동압력(BCP)이 타 차량에 비해 현저히 낮음.', '제동 7단 취급 시 해당 차량의 제동압력이 생성되지 않음.', '제동 7단 취급 시 정상적인 제동압력이 생성된 경우 소거.', 'MCS모드로 전환 후, 마스콘을 N(중립) -> 제동7단까지 수회취급 하여 소거 여부 확인. 제동 취급 확인 후, 주의 운전 할 것. +지속발생시 관제보고하고 지시에 따를 것.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('5f0c5774-8978-40c8-84a7-756ca44fbd98', '0515', '515', 'DCU#4 3위(R2)-출입문 열림 시간 초과', 'T1', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 "Open time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 열림 동작시간이 6초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도 한 후, '장애물로 인한 열림실패' 고장과 함께 'Open time out' 고장이 함께 현시', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('5f139cd4-53d4-4447-b3a1-7c075268c296', '0223', '223', 'BECU#1 - 공기스프링 누설(전두대차)', 'Tc1', 'C', 'BECU-공기스프링누설(전두대차)', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit6 “공기스프링누설(전두대차)” 신호가 “1”이 +되면 검지 +', '해당 차량 공기스프링 누설(전두대차) 검지 현시 및 해당 차량 정상적인제동제어 불가 (응하중제어)', '해당 차량 전두대차의 공기스프링(AS1, AS2) 압력이 정상범위를 벗어남. (100kPa 미만) +', '해당 차량 전두대차의 공기스프링(AS1, AS2) 압력이 정상범위일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5f27a777-1c18-4200-ae62-74b0be554fde', '1208', '1208', 'FDU#6-감지기4 고장', 'M3', 'C', 'FDU-감지기4 고장', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 "Detector1 State” 신호가 "10"이 되면 검지.', '감지기 고장상태 현시(자동 소거 안됨)', '1) 감지기로부터 데이터 응답이 없는경우. +2) 감지기로부터 수신된 데이터의 CRC가 맞지 않는경우 +3) 감지기로부터 수신된 데이터의 ID가 송신 ID와 일치하지 않는경우', 'FDU 전원 리셋 후 감지기로부터 정상적으로 데이터가 수신된 경우', '1) FDU 전원 리셋 후 고장 소거 여부 확인 +2) 정상 동작중인 감지기와 위치 교환 후 FDU 전원 리셋 및 고장 상태 확인 +3) 동일한 감지기에서 고장 발생시 감지기 교체 +4) 동일한 위치에서 고장 발생시 감지기 라인 점검', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('5f2bafd4-4558-45c3-af6d-1a685c32b5df', '0743', '743', 'HVAC#1-전자접촉기 보조히터2(AHEK) 고장', 'Tc1', 'C', 'HVAC-전자접촉기 보조히터2(AHEK) 고장', 'C', 'HVAC', 'HVAC 보조난방기 작동 중 AHEK2 전자접촉기 고장 발생.', 'UNIT1 보조난방기 전난방 시 반난방만 작동', '보조난방기 작동 중 2.5초 이상동안 AHEK2 작동 feedback 신호가 수신되지 않는 경우', 'AHEK2 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) AHEK2를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, AHEK2와 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('5f419eb7-0c5c-4959-9491-5d7fc459ec13', '0837', '837', '0', 'M2', '0', null, null, '0', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('5f5896f3-8595-4630-8bef-50f784c68554', '0203', '203', 'BECU#5 - 전자제어밸브의 고장', 'T2', 'C', 'BECU-전자제어밸브의 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit2 “전자제어밸브의 고장” 신호가 “1”이 +되면 검지 +', '해당 차량 전자제어밸브의 고장검지 현시 및 해당 차량 제동제어불가', '해당 차량의 상용전자제어밸브가 작동하지 않음. +', '해당 차량의 상용전자제어밸브가 정상작동 시 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5f670dde-9977-46a4-ac7d-d388f83ef583', '0301', '301', 'ATC#1 - 과속경고', 'Tc1', 'W', 'ATC-과속경고', 'W', 'ATC', 'ATC의 RS485 데이터 중 ATC-TCMS SD TEXT11의 Bit0 “Over Speed Warning” 신호가 “1”이 되면 +검지 +', '1) MMI화면에 열차과속검지에 대한경고메시지현시 +2) MMI에서 과속경보음 출력 +3) 상용만 제동 체결', 'MMI 제한속도 대비 실제속도가 +1Km/h 이상인 경우 +', '열차속도를 제한속도 이하로 감속', '제한속도 대비 열차속도가 감속되었는지 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5f688429-d03c-4f8b-ba15-a38370e756cf', '0509', '509', 'DCU#4 1위(R1)-출입문 잠김 리미트 스위치 고장', 'T1', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 "DLS Failure” 신호가 "1"이 되면 검지.', '출입문 잠김 상태 확인 불가', '1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('5f7c3b96-36ff-4807-90f3-f5f2795ace0d', '0516', '516', 'DCU#6 4위(L2) - 출입문 장애물로 인한 닫힘 실패', 'M3', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Close failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림 상태로 대기', '도어 닫힘 중 3회 장애물감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5f9af0c4-d699-4972-8443-3af5b4cbada8', '0508', '508', 'DCU#1 6위(L3) - 출입문 모터/인코더 고장', 'Tc1', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 “Motor / Encoder failure” 신호가 “1”이 되면 +검지 +', '출입문 정상동작 불가', ' +1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우(인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터/인코더 회로 가 손상된 경우 +', '모터/인코더 및 DCU가 정상 상태이고, 전기적 연결 상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있는지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. ※ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. ? DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. ? DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) ? DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5fe2038a-a807-46c9-907e-842f7c3f3209', '0424', '424', 'SIV#8-', 'Tc2', '0', null, null, '0', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('5fe4aa15-5bae-48b3-8214-26680fc48c7e', '0138', '138', 'VVVF#7-입력과전류 검지(ISOC)', 'M4', 'C', 'VVVF-입력과전류 검지(ISOC)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT29의 Bit3 “ISOC” 신호가 "1"이 되면 검지.', null, '1) 입력전류 1800A 이상 검지 시 경고장 발생 +2) 1분 이내 3회 발생 시 중고장 발생.', '1) 경고장', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 추진제어장치에 입력되는 전류치 확인함. +3) 입력되는 전류치가 비정상적일 경우 추진제어장치 입력회로(HSCB, LB1,2, CHRe)를 점검한다.. +4) 추진제어장치 내의 전류센서와 추진제어장치 제어기 PUZ 보드에 연결되는 저전압 배선상태를 확인한다. +5) 추진제어장치 시험기를 이용하여 TCU(통합 제어장치)의 이상여부를 확인한다. +6) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('5fee5a44-a3a5-44e2-b766-5e7eabfc5ee1', '0513', '513', 'DCU#2 1위(R1) - 모듈 상태체크 에러', 'M1', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 “Module check error” 신호가 “1”이 되면 검지 +', 'Modulecheckerror현시(출입문은 정상작동가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태 체크 기능에 이상이 생긴 경우 고장 발생 +', 'DCU의 ‘A' 모듈과 ‘B' 모듈 간, 상태 체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5ff0d0ee-16ef-4c32-95ed-f6605bec74f5', '0518', '518', 'DCU#2 2위(L1) - 출입문 Enable 신호 에러', 'M1', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 “Enable signal error” 신호가 “1”이 되면 검지 +', 'DCU 출입문Enable신호에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드 시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을 때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드 시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입 상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호 장치로부터의 출입문 열림 명령 신호) 취급 시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함. +', '해당 출입문 enable 신호수신', '1) AUTO/MCS 모드 시에는 YARD 모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인 한다. (YARD/FMC 모드 시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('5ff4e55e-a853-4090-a607-ce4a53771b71', '0508', '508', 'DCU#3 2위(L1)-출입문 모터/인코더 고장', 'M2', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 "Motor / Encoder failure” 신호가 "1"이 되면 검지.', '출입문 정상동작 불가', '1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우 (인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터 / 인코더 회로가 손상된 경우', '모터/인코더 및 DCU가 정상상태이고, 전기적 연결상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있느지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. +★ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. + +1. DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. +2. DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) +3. DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('5ffbf641-40d4-4205-80c2-b684e70838e8', '0520', '520', 'DCU#7 5위(R3)-이중계 절체 동작', 'M4', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 "Module switchover' 신호가 "1"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('600023f0-3269-4bf8-afe3-bdeece421a7e', '1521', '1521', 'TU 모듈고장 - AUX4(Car3)', 'M2', 'C', 'TU 모듈고장 - AUX4', 'C', 'TCMS', 'TU의 AUX4 PCB가 이 정상적으로 인식되지 않아 점검이 필요할 때 +', 'TU의 AUX4 PCB는 예비 채널용 PCB로 운행에 지장이 없음.', 'TU AUX4의 ID를 정상적으로 검출하지 못할 때 화면에 현시 +', 'TU AUX4의 ID를 정상적으로 검출하는 경우 소거됨.', '1) TU의 AUX4 PCB 교체 +2) 불량 해소가 되지 않을 경우, 순차적으로 SCM, DIM PCB를 교체하여 정상여부 확인', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('6012698c-98ae-4a84-b627-0fb496a2445f', '0519', '519', 'DCU#6 6위(L3)-ZVR 신호 에러', 'M3', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 "ZVR signal error” 신호가 "1"이 되면 검지.', '출입문이 강제로 닫히게 되고, 열림은 불가능', '1) 차량 ZVR 신호가 없는 상태 (차량 주행상태) 에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함.', '해당출입문 ZVR 신호 수신', '1) 차량이 주행중이라면, 차량이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.392739+00', null, '로템40량(2018)-1단계', 'Rotem'), ('60237874-43a7-4741-9757-fd2a05030ad8', '0208', '208', 'BECU#2 - 공기제동장치 고장', 'M1', 'C', 'BECU-공기제동장치고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit7 “공기제동장치고장” 신호가 “1”이 되면 검지 +', '해당 차량 공기제동장치 고장검지 현시 및 해당 차량 정상적인제동제어불가', '해당 차량 BECU의 자가진단 시 고장 발생 또는 AC 압력센서 고장 +', '해당 차량 BECU의 자가진단 시 정상적일 경우 또는 AC 압력센서가 정상일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('602adad8-02ec-4775-9811-7fa48fc5f6f1', '0160', '160', 'VVVF#2 - 게이트전원전압 이상(GPLVD)', 'M1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('602c80ee-34d5-4dff-bcf9-95c67027c1b9', '1505', '1505', '기타장치용 AC 회로차단기 차단(Car1)', 'Tc1', 'W', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('6034c3e0-8638-4947-a674-71d994066e90', '756', '756', 'CAB HVAC#8 - 응축기 과부하', 'Tc2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('604039ee-403c-4d00-9fdd-cb5915d91193', '0816', '816', '통합제어기(AVC) 음원없음(Car#1)', 'Tc1', 'C', '통합방송표시기-통합제어기(AVC) 음원없음', 'C', 'TCMS', '통합방송표시기의 RS485 데이터 중 통합방송표시기-TCMS SD TEXT6의 Bit0 “음원없음” 신호가 "1"이 되면 검지.', '자동방송 음원이 없는 경우 해당 자동방송 송출 불능, 홍보방송 음원이 없는 경우 홍보방송 송출 불능', '스케쥴러를 통해 업데이트된 mp3 파일이 마스터 통합방송제어기의 저장장치에 없는 경우 발생 다음 방송까지 고장 비트 유지', '마스터 통합방송제어기에 해당 mp3 파일이 있고 정상적으로 방송실시된 경우.', '스케쥴러의 mp3 파일 확인, 차량에 스케쥴러 업데이트 +관련도면 없음', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('6044ee00-a6cf-4658-a4ba-fc0bf184446a', '0144', '144', 'VVVF#2-HSCB 트립검지(HBT)', 'M1', 'B', 'VVVF-HSCB 트립검지(HBT)', 'B', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT30의 Bit1 “HBT” 신호가 "1"이 되면 검지.', null, '1) HSCB의 자체 과전류 보호에 의하여 트립이 발생했을 때 고장검지. +2) 1분 이내 3회 발생 시 중고장.', '1) 경고장 +역행 고장검지 2초 후 자동 재기동 제동 제동 OFF시 고장 소거 +2) 중고장 +동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 고장기록의 FC 전압 및 입력전류 확인. +3) 추진제어장치 내부에 접지흔적 확인 및 고압회로 점검. +4) 전류/전압 센서의 외관 상태와 저전압 배선상태를 확인한다. +5) 추진제어장치 시험기를 이용하여 TCU(통합제어장치)의 이상여부를 확인한다. +6) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +7) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('604f8473-e057-480e-8832-684f26f44075', '0741', '741', 'HVAC#7 - 전자접촉기 보조히터4(AHEK) 고장', 'M4', 'C', 'HVAC-전자접촉기 보조히터4(AHEK) 고장', 'C', 'HVAC', 'HVAC 보조난방기 작동 중 AHEK4 전자접촉기 고장 발생 +', 'UNIT2 보조난방기 전난방 시 반난방만 작동', '보조난방기 작동 중 2.5초 이상 동안 AHEK4 작동 feedback 신호가 수신되지 않는 경우 +', 'AHEK4 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) AHEK4를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, AHEK4와 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('605e910d-40e8-45ec-a721-cfcb7b9724b6', '1002', '1002', 'CMSB#1 - 방열판 과온', 'Tc1', 'C', 'CMSB-방열판 과온', 'C', 'CMSB', 'CMSB의 RS485 데이터 중 CMSB-TCMS SD TEXT3의 Bit3 “방열판 과온” 신호가 “1”이 되면 검지 +', '1) TCMS 화면 하단 또는 고장화면에 ‘CM 출력과부하' 표시됨. +2) 바이패스 모드로 전환되고, CM 기동 시 ‘바이패스 기동'으로 표시됨.', 'CMSB 내부 방열판 온도가 85±5℃일 경우 검지됨. +', '1) 차량 전원 OFF +2) CMSB 내부의 표시기 패널 RESET 버튼 누름', '0) 정상운행 후, 검수고에 입고하여 아래와 같이 조치한다. +1) 상기고장은 고장 소거 후, 재현시험을 진행하여 지속적으로 발생될 경우 아래와 같이 조치한다. +2) 방열판 온도 측정 +3) 방열판에 부착되어 있는 온도스위치를 점검한다. +4) 온도스위치와 CMSB 제어기 간 연결된 케이블 접촉상태를 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('6064faa8-79e3-4f2f-85c4-c9695ef05de1', '0509', '509', 'DCU#4 5위(R3) - 출입문 잠김 리미트 스위치 고장', 'T1', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 “DLS Failure” 신호가 “1”이 되면 검지 +', '출입문 잠김 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('606d9b47-31e2-4e72-94fb-be919b79478f', '0517', '517', 'DCU#4 2위(L1) - 출입문 장애물로 인한 열림 실패', 'T1', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Open failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘 상태로 대기', '도어열림 중 3회 장애물감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 열림 시, 장애물감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('607aff7d-590f-4cc0-b368-f3b1dc977df2', '0507', '507', 'DCU#7 4위(L2)-초기화 실패', 'M4', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 "Calibration failure” 신호가 "1"이 되면 검지.', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터고장, 장애물 감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우', '초기화 실패를 야기한 고장 코드를 확인하여 조치 후, 재 닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('6081a9cb-9ced-498e-8967-5325d34a5109', '0516', '516', 'DCU#8 6위(L3)-출입문 장애물로 인한 닫힘 실패', 'Tc2', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Close failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림상태로 대기', '도어 닫힘 중 3회 장애물 감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('6098aacd-3fdb-4640-a640-5540077ddb01', '0815', '815', '비상인터폰#1(PEI) 고장(Car#1)', 'Tc1', 'C', '통합방송표시기-비상인터폰#1(PEI) 고장', 'C', 'TCMS', '통합방송표시기의 RS485 데이터 중 통합방송표시기-TCMS SD TEXT9의 Bit6 “PEI#1 고장” 신호가 "1"이 되면 검지.', '고장장치 통신 불량으로 비상통화 기능 불능', '마스터 통합방송제어기에 주기적(2초) TCP 응답이 없을 경우 통신 불량으로 판단', '마스터 통합방송제어기에 TCP 응답 재개', '관련 CB(방송/표시기/CCTV 전원공급장치1, CBPAU# +1) 리셋하고 통신라인 및 상태 점검. +관련도면 RES16001HN0, REC70700HN0', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('60a8e9af-21e6-49bd-bff4-eb7aa93e66b5', '0208', '208', 'BECU#1 - 공기제동장치 고장', 'Tc1', 'C', 'BECU-공기제동장치고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit7 “공기제동장치고장” 신호가 “1”이 되면 검지 +', '해당 차량 공기제동장치 고장검지 현시 및 해당 차량 정상적인제동제어불가', '해당 차량 BECU의 자가진단 시 고장 발생 또는 AC 압력센서 고장 +', '해당 차량 BECU의 자가진단 시 정상적일 경우 또는 AC 압력센서가 정상일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('60b1cfad-8eac-4321-b53c-3b986a9905fa', '0226', '226', 'BECU#5 - 제동불완해검지(NRBD)', 'T2', 'B', 'BECU-제동불완해검지(NRBD)', 'B', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT8의 Bit2 “NRBD” 신호가 “1”이 되면 검지 +', '해당 차량 제동불완해 검지 현시 및 완해 취급하였음에도 불구하고 해당 차량 제동압력 (BCP)이 완해되지 않음.', '제동완해상태(정차제동포함)에서 해당 차량의 제동압력이 완전히 배기되지 않음. +', '제동완해상태(정차제동포함)에서 해당 차량의 제동압력이 완전히 배기됨.', '정차하여 강제완해 스위치를 취급하여 소거 여부 확인, 제동 완해상태 확인 후 주의 운전할 것, 2 ~ 3회 시도에도 완해불능 시 관제보고하고 지시에 따를 것', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('60e50d1a-5373-4035-8e5f-23eb78958fd6', '0885', '885', '중앙제어기(COB) 고장(Car#8)', 'Tc2', 'C', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('60e898b7-4e52-4a6a-ad63-ea46eb716dfb', '0501', '501', 'DCU#6 4위(L2)-출입문 차단', 'M3', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('60eaa198-2802-45b0-bdf6-f0ee770b4283', '0062', '62', 'MAIN FUSE#1 DISCONNECTED(Car5)', 'T2', 'W', 'MAIN FUSE#1 DISCONNECTED(Car5)', 'W', 'TCMS', '차량으로부터 AUX FUSE DISCONNECTED 신호 입력시', 'VVVF고압 차단으로 추진 불능', '해당 퓨우즈 소손', '해당 퓨우즈 교체', null, ' +REC20210HN0', '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('60f8dfea-a7c6-4868-812c-e40361bbd243', '0747', '747', 'HVAC#3 - 전자접촉기 차량히터2(CRRHT) 고장', 'M2', 'C', 'HVAC-전자접촉기 차량 히터2(CRRHT) 고장', 'C', 'HVAC', '객실 난방기 작동 중 CRRHT2 전자접촉기 고장 발생 +', '객실 전난방 시 1/3난방만 작동', '객실 전난방 작동 중 2.5초 이상 동안 CRRHT2 작동 feedback 신호가 수신되지 않는 경우 +', 'CRRHT2 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CRRHT2를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRRHT2와 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('6117ebc8-4cea-4ddd-a21c-edd6d317f317', '0515', '515', 'DCU#6 6위(L3) - 출입문 열림 시간 초과', 'M3', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 “Open time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 열림 동작시간이 6초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도한 후, ‘장애물로 인한 열림 실패' 고장과 함께 ‘Open time out' 고장이 함께 현시 +', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('6127ba47-a8ba-4286-9109-9357a1854a20', '0097', '97', 'PWM 엔코더#2 고장(Car8)', 'Tc2', 'B', 'PWM 엔코더#2 고장(TC2)', 'B', 'VVVF', '차량으로부터 PWM ENCODER#1(#2) FAULT 신호 미입력시', '1) 엔코더 1계 PWM 출력 고장시 1계 고장에 해당되는 신호 출력 +2) 엔코더 2계로 자동 절체 +3) 엔코더 2계 PWM 출력 고장시 1계, 2계 고장 모두 출력 +4) 엔코더 PWM 출력 신호 없음', '1) 엔코더 1계 PWM 출력 신호 이상 시 +2) 엔코더 2계 PWM 출력 신호 이상 시 +3) 엔코더 1계, 2계 PWM 출력 신호 이상 시 +4) 엔코더 수동절체버튼 3초 이상 조작 시', '1) 엔코더의 전원 차단 후 재투입하여 소거되는지 확인 +2) 수동절체버튼의 조작으로 인한 고장 출력 또한 전원 재투입으로 소거함', '1) 엔코더의 전원 차단 후 재투입하여 소거되지 않을 시 정상품으로 교체하여 정상동작 확인 +2) 교체된 고장품의 고장원인 분석', ' +REC20210HN0', '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('613407eb-78cc-4533-9bcf-c5429a8b2433', '0147', '147', 'VVVF#6-ZVR 이상검지(ZVRD)', 'M3', 'D', 'VVVF-ZVR 이상검지(ZVRD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT30의 Bit4 “ZVRD” 신호가 "1"이 되면 검지.', null, 'ZVR 신호의 지령과 출력 불일치 시 고장검지.', '검지조건 해제 시.', '1) 상기고장이 간헐적으로 발생하는 경우 아래와 같이 조치한다. +2) 통합제어기 전면의 CNC1커넥터 고정상태 확인. +3) RELAY 유니트 내부의 ZVR 계전기 접점상태 확인. +4) RELAY 유니트 전면의 커넥터 핀 및 배선상태 확인. +5) TC1, TC2 일반배전반의 계전기 동작상태 점검. +6) 상기의 점검부분에 이상이 있을 경우 관련부품을 교체한다.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('6135962c-2be0-4fc5-8360-3f3ef00bc4c5', '0702', '702', 'HVAC#2-냉난방장치2 압축기1 과부하', 'M1', 'C', 'HVAC-냉난방장치2 압축기1 과부하', 'C', 'HVAC', 'HVAC 냉방작동 중 냉난방장치2 압축기1 또는 응축기1 모터에 과부하 발생.', '냉방 기능 저하(전냉방시 반냉방으로 작동)', '1) 냉방작동 중 UNIT2의 압축기1 또는 응축기1 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRCM3과 연결된 THR3이 Trip 됨.', 'UNIT2의 압축기1 또는 응축기1 모터의 과부하 조건을 해소하여 정상 가능 상태로 만들고, THR3 및 마이콤 전원 리셋', '1) 냉난방배전반의 점검커버를 열고, THR3의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR4의 전류 세팅값이 11.5A에 맞춰져 있는지 확인하여, 아닐 경우, 십자 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동 시킨 후, THR3의 2차측 2,4,6 단자에서 각 단자간 상간 전압이 AC 380V으로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 압축기 및 응축기 단품 상태에서 점검을 한다. +7) THR3의 2차측 2,4,6 단자에서 각 단자간 권선저항이 모두 같은지 확인한다. (±10% 이하) (압축기1 및 응축기1 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT2의 압축기1 또는 응축기1 모터의 결선을 해제한 후 각 부품의 권선저항을 확인 후, 문제가 있는 부품을 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR3 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('6140d452-0eb5-45d6-a4a8-3dfcea136445', '0845', '845', '비상인터폰#1(PEI) 고장(Car#4)', 'T1', 'C', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('614a0d82-a63a-4449-ab30-15abd1d75264', '0306', '306', 'ATC#8-PSD열림 검지로 인한 역행불가', 'Tc2', 'C', 'ATC-PSD열림 검지로 인한 역행불가', 'C', 'ATC', 'ATC의 RS485 데이터 중 ATC-TCMS SD TEXT11의 Bit1 “Propulstion Block by detecting PSD open” 신호가 "1"이 되면 검지.', '실제 PSD가 닫혔음에도 MMI화면에 PSD 열림표시가 유지 되어있다.', 'FA/AUTO모드에서 ZV(영속도) 및 제한속도가 0Km/h이상 일때 PSD 차상장치가 열림으로 수신 시', 'PSD가 실제로 닫힘으로 수신된다.', '1) MMI화면에 PSD가 닫힘으로 표시되었는지 확인한다. +2) PSD차상장치 고장으로 인해 PSD닫힘 수신 불가 시, 자동운행 불가상태로 관제에 이를 통보 후 조치한다.', null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('61514445-98b3-4eb8-9ce1-62835e994c39', '0509', '509', 'DCU#1 3위(R2) - 출입문 잠김 리미트 스위치 고장', 'Tc1', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 “DLS Failure” 신호가 “1”이 되면 검지 +', '출입문 잠김 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('615a16f4-4a87-4060-a13f-9809a2aadf49', '0226', '226', 'BECU#8-제동불완해검지(NRBD)', 'Tc2', 'B', 'BECU-제동불완해검지(NRBD)', 'B', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT8의 Bit2 “NRBD” 신호가 "1"이 되면 검지.', '해당 차량 제동불완해 검지 현시 및 완해 취급하였음에도 불구하고 해당 차량 제동압력(BCP)이 완해되지 않음.', '제동완해 상태(정차제동 포함)에서 해당 차량의 제동압력이 완전히 배기 되지 않음.', '제동완해 상태(정차제동 포함)에서 해당 차량의 제동압력이 완전히 배기 됨.', '정차하여 강제완해스위치를 취급하여 소거 여부 확인. 제동 완해상태 확인 후 주의 운전 할 것. +2~3회 시도에도 완해불능시 관제보고하고 지시에 따를 것.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('615a5992-7b8f-4580-ba15-88eb8d556ecc', '0519', '519', 'DCU#4 5위(R3) - ZVR 신호 에러', 'T1', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 “ZVR signal error” 신호가 “1”이 되면 검지 +', '출입문이강제로 닫히게 되고, 열림은 불가능', ' +1) 차량 ZVR 신호가 없는 상태(차량 주행상태)에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함. +', '해당 출입문 ZVR 신호 수신', '1) 차량 이 주행중이라면, 차량 이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('61643a1a-6ed1-4d50-b16f-29d8ba3378fd', '0504', '504', 'DCU#2 2위(L1) - 출입문 외부 비상핸들 취급(EAD)', 'M1', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('6171d13c-7ccb-4eca-adfd-284401a7e689', '0500', '500', 'DCU#3 2위(L1) 통신고장', 'M2', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS간 RS485 통신고장이 검지되면 발생.', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐 상태 등의 변화가 없음.', '1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우', '해당차량의 DCU 및 CU/TU 의 전원이 정상상태이고, 통신라인 연결상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜저 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는데도 지속적으로 통순고장이 검지되면, DCU의 X2,X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('617e1587-ea77-43d5-86af-426bc5f9c65f', '0859', '859', '0', 'M3', '0', null, null, '0', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('61afe23d-7acc-4ed3-95af-b6d9a8b13af9', '0510', '510', 'DCU#3 6위(L3) - 출입문 닫힘 리미트 스위치1 고장', 'M2', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 “DCS1 Failure(Leftt)” 신호가 “1”이 되면 검지 +', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('61b0b4f4-5c61-4d3b-b1d1-9788384a8a06', '0519', '519', 'DCU#5 5위(R3) - ZVR 신호 에러', 'T2', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 “ZVR signal error” 신호가 “1”이 되면 검지 +', '출입문이강제로 닫히게 되고, 열림은 불가능', ' +1) 차량 ZVR 신호가 없는 상태(차량 주행상태)에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함. +', '해당 출입문 ZVR 신호 수신', '1) 차량 이 주행중이라면, 차량 이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('61b9329a-b735-47d1-a8c2-d3d253018fdf', '0218', '218', 'BECU#7-인통선로직 비정상', 'M4', 'C', 'BECU-인통선로직 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit1 “인통선로직 비정상” 신호가 "1"이 되면 검지.', '해당 차량 인통선로직 비정상 검지 현시 및 해당차량 정상적인 제동제어 불가.(상용제동지령에 따른 제어)', '해당 차량의 추진선택(P), 제동선택(B) 신호가 동시에 ON 됨.', '해당 차량의 추진선택(P), 제동선택(B) 신호가 정상작동(상보적으로 작동) 될 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 한 뒤, 마스콘을 제동 7단으로 5초간 취급하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('61bca620-b3a3-4120-ba82-b60e5010ebc9', '0202', '202', 'BECU#2 - 덤프밸브 고장(전두대차)', 'M1', 'C', 'BECU-덤프밸브고장(선두대차)', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit1 “덤프밸브고장(선두대차)” 신호가 “1”이 되면 검지 +', '해당 차량 덤프밸브고장(선두대차)검지 현시 및 해당 차량 활주제어불가', '해당 차량 선두대차의 덤프밸브가 작동하지 않음. +', '해당 차량 선두대차의 덤프밸브가 정상작동 시 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('61d55c6e-cb00-4e57-bb71-119a96afa70b', '0714', '714', 'HVAC#6-냉난방장치1 압력스위치2(DPS) 고압', 'M3', 'D', 'HVAC-냉난방장치1 압력스위치2(DPS) 고압', 'D', 'HVAC', '냉난방장치1 냉매 압력스위치2 고압 발생.', 'UNIT1 CYCLE2 냉방 기능 불가', 'UNIT1 DSP2측 냉매 압력이 3초 이상 28±1(kgf/cm2) 이상 되는 경우', '냉매 압력이 정상 수치 15±0.7(kgf/cm2 이하로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CRCM2의 부하측 전류를 측정하여 응축기 팬의 동작여부를 확인한다. +2) 응축기 코일의 전면에 이물질로 인한 막힘이 있는지 확인한다. +3) 응축기 팬 상부 그릴에 외부 이물질로 인한 막힘이 있는지 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('61d9a0c6-36dd-4b3f-a8c6-29004e0f4428', '0505', '505', 'DCU#3 2위(L1)-출입문 입력 고전압', 'M2', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 "1"이 되면 검지.', '고전압 상태. (그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('61f6a013-629d-45d3-bdec-2688f44168d9', '0518', '518', 'DCU#4 6위(L3) - 출입문 Enable 신호 에러', 'T1', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 “Enable signal error” 신호가 “1”이 되면 검지 +', 'DCU 출입문Enable신호에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드 시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을 때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드 시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입 상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호 장치로부터의 출입문 열림 명령 신호) 취급 시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함. +', '해당 출입문 enable 신호수신', '1) AUTO/MCS 모드 시에는 YARD 모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인 한다. (YARD/FMC 모드 시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('61fc9d05-a250-43dd-b1d9-7ff6418b34e3', '0200', '200', 'BECU#6 통신고장', 'M3', 'B', 'BECU-통신고장', 'B', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT23의 'Life sign'이 변하지 않음.', '해당 차량 통신고장 현시 및 해당 차량의 제동압력(BCP) 등의 데이터가 반응하지 않음. (고장은 현시되나 제동제어는 정상적 일 수 있음)', 'BECU 전원 CB OFF 혹은 통신연결 불량.', 'BECU와 TCMS 간 RS485 통신이 복귀 되어 BECU-TCMS SD TEXT23의 'Life sign'이 변동시 소거.', 'BECU를 리셋(BECU CB OFF/ON) 후 복귀여부를 확인. +리셋 후 복귀되지 않을 경우 관제보고하고 지시에 따를 것.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('62037ae2-4fcc-41a7-9a5a-e8604e427aeb', '0147', '147', 'VVVF#2-ZVR 이상검지(ZVRD)', 'M1', 'D', 'VVVF-ZVR 이상검지(ZVRD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT30의 Bit4 “ZVRD” 신호가 "1"이 되면 검지.', null, 'ZVR 신호의 지령과 출력 불일치 시 고장검지.', '검지조건 해제 시.', '1) 상기고장이 간헐적으로 발생하는 경우 아래와 같이 조치한다. +2) 통합제어기 전면의 CNC1커넥터 고정상태 확인. +3) RELAY 유니트 내부의 ZVR 계전기 접점상태 확인. +4) RELAY 유니트 전면의 커넥터 핀 및 배선상태 확인. +5) TC1, TC2 일반배전반의 계전기 동작상태 점검. +6) 상기의 점검부분에 이상이 있을 경우 관련부품을 교체한다.', null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('620bd29b-5ac5-40a1-8508-5dfaa52d46d2', '1502', '1502', '기타장치용 DC 회로차단기 차단(Car1)', 'Tc1', 'W', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('621e0063-553c-45a5-8b7a-72c88d280c56', '0712', '712', 'HVAC#2 - 냉난방장치2 압력스위치1(DPS) 고압', 'M1', 'D', 'HVAC-냉난방장치2 압력스위치1(DPS) 고압', 'D', 'HVAC', '냉난방장치2 냉매 압력스위치1 고압 발생 +', 'UNIT2CYCLE1 냉방기능불가', 'UNIT2DSP1측 냉매압력이 3초 이상 28±1(kgf/cm2) 이상 되는 경우 +', '냉매압력이 정상수치 15±0.7(kgf/cm2) 이하로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CRCM3의 부하측 전류를 측정하여 응축기 팬의 동작여부를 확인한다. +2) 응축기 코일의 전면에 이물질로 인한 막힘이 있는지 확인한다. +3) 응축기 팬 상부 그릴에 외부 이물질로 인한 막힘이 있는지 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('623e173e-1282-42e3-b2f2-8757104ff498', '1411', '1411', 'BMS#1 - 충전고온(COT, 45도 이상)', 'Tc1', 'D', 'BMS-충전고온(COT)', 'D', 'BMS', '해당 차량의 배터리 온도가 57도 이상이 되면 검지 +', '차량 배터리충전고온검지 후, 60도 이상이면 충전접촉기(CK)가 차단된다.', '배터리충전고온(57도 이상) +', '배터리충전고온정상범위로 회복(55도 이하)', '1) 배터리 NFB 상태 확인 +2) 이상이 없으면 차량 전체를 리셋한다. +3) 차량 리셋 후에도 동일고장이면 사령실과 연락하여 조치를 취한다. (배터리를 상온조건으로 만든다.)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('6245265a-8677-42a3-aac9-6ef7634f960f', '0237', '237', '보안제동코크 차단(Car4)', 'T1', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('62476a2a-1326-4210-8e9a-f8ac31a70531', '0521', '521', 'DCU#4 4위(L2) - 모듈 상태 이상', 'T1', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 “01” 또는 “00”이 되면 +검지 +', '이중계절체동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러)이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('624b42f8-afeb-4d4a-980a-9c62099cc7aa', '0521', '521', 'DCU#6 2위(L1)-모듈 상태 이상', 'M3', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 "01"또는 "00"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('6251f65e-7b36-4486-b8a4-8ca76f5df920', '0701', '701', 'HVAC#3-냉난방장치2 압축기2 과부하', 'M2', 'C', 'HVAC-냉난방장치2 압축기2 과부하', 'C', 'HVAC', 'HVAC 냉방작동 중 냉난방장치2 압축기2 또는 응축기2 모터에 과부하 발생.', '냉방 기능 저하(전냉방시 반냉방으로 작동)', '1) 냉방작동 중 UNIT2의 압축기2 또는 응축기2 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRCM4와 연결된 THR4가 Trip 됨.', 'UNIT2의 압축기2 또는 응축기2 모터의 과부하 조건을 해소하여 정상 가능 상태로 만들고, THR4 및 마이콤 전원 리셋', '1) 냉난방배전반의 점검커버를 열고, THR4의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR4의 전류 세팅값이 11.5A에 맞춰져 있는지 확인하여, 아닐 경우, 십자 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동 시킨 후, THR4의 2차측 2,4,6 단자에서 각 단자간 상간 전압이 AC 380V으로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 압축기 및 응축기 단품 상태에서 점검을 한다. +7) THR4의 2차측 2,4,6 단자에서 각 단자간 권선저항이 모두 같은지 확인한다. (±10% 이하) (압축기2 및 응축기2 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT2의 압축기2 또는 응축기2 모터의 결선을 해제한 후 각 부품의 권선저항을 확인 후, 문제가 있는 부품을 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR4 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('625aa5bc-110d-494d-9b69-ba921e1a3de9', '0092', '92', '화재검지기 고장(Car7)', 'M4', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('627d8771-b9f8-4c40-a5df-ac580382556f', '0520', '520', 'DCU#5 3위(R2) - 이중계 절체 동작', 'T2', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 “Module switchover” 신호가 “1”이 되면 검지 +', '이중계 절체 동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러) 이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A'모듈 및 ‘B'모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('627e98ea-e4e9-42ca-adb5-47d07b30e0b1', '0818', '818', '실내객실표시기(PIB) 고장(Car#2)', 'M1', 'C', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('62829b22-da9a-456b-8029-7a9eed871c00', '1706', '1706', '노선안내표시기#6 고장(Car3)', 'M2', 'C', '노선안내표시기#4 고장', 'C', 'PIC', 'PIC 장치의 노선안내표시기#4이 고장이 났을 때 발생 +', '1) 노선안내표시기 화면 미현시 +2) 노선안내표시기 안내 화면 오현시', '통신고장 +', '통신 재개 시', '1) 이더넷 스위치 링크 확인 +2) 이더넷 케이블 점검 +3) 제어보드 및 전원보드 교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('6290314f-b31c-4b55-ab37-e9e431e1db5e', '1200', '1200', 'FDU#6 통신고장', 'M3', 'B', 'FDU 통신고장', 'B', 'FDU', 'FDU와 TCMS간 RS485 통신고장이 검지되면 발생.', '화면상 FDU의 화재검지신호 등의 데이터가 반응하지 않음.', 'FDU 통신고장 또는 통신 케이블 문제', 'TCMS SDR 신호의 의해 FDU로부터 SD신호가 정상 수신된 경우 +조치조건 : +1) FDU 및 TCMS의 전원을 리셋하여 소거여부 확인 +2) 통신 고장이 발생하지 않은 다른차량의 수신기와 교체하여 소거 여부 확인(고장이 수신기를 따라가는지 확인) +3) TCMS와 FDU간의 통신계통 점검 및 FDU NFB 점검 +4) 문제가 지속될 경우, 수신기 교체', null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('629edeef-0ea7-4dbd-a629-caea9f7d0d2e', '0231', '231', 'BC 코크(차상) 차단(Car7)', 'M4', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('62a38ab9-7d7a-4fe6-9711-3361ac46f9f3', '0500', '500', 'DCU#6 1위(R1) 통신고장', 'M3', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS간 RS485 통신고장이 검지되면 발생.', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐 상태 등의 변화가 없음.', '1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우', '해당차량의 DCU 및 CU/TU 의 전원이 정상상태이고, 통신라인 연결상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜저 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는데도 지속적으로 통순고장이 검지되면, DCU의 X2,X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('62a4e84f-b6c0-470e-bb6e-a12aa4678c47', '0517', '517', 'DCU#5 5위(R3)-출입문 장애물로 인한 열림 실패', 'T2', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Open failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘상태로 대기', '도어 열림 중 3회 장애물 감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 열림 시, 장애물 감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('62d7d035-f693-4512-845e-e7896fa2490f', '0501', '501', 'DCU#2 4위(L2) - 출입문 차단', 'M1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('62e9997e-8274-46e3-8696-62de2be217a1', '1521', '1521', 'TU 모듈고장 - AUX4(Car7)', 'M4', 'C', 'TU 모듈고장 - AUX4', 'C', 'TCMS', 'TU의 AUX4 PCB가 이 정상적으로 인식되지 않아 점검이 필요할 때 +', 'TU의 AUX4 PCB는 예비 채널용 PCB로 운행에 지장이 없음.', 'TU AUX4의 ID를 정상적으로 검출하지 못할 때 화면에 현시 +', 'TU AUX4의 ID를 정상적으로 검출하는 경우 소거됨.', '1) TU의 AUX4 PCB 교체 +2) 불량 해소가 되지 않을 경우, 순차적으로 SCM, DIM PCB를 교체하여 정상여부 확인', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('63094918-bdd4-46c0-b015-651199e5345c', '0222', '222', 'BECU#2 - 공기스프링 누설(후미대차)', 'M1', 'C', 'BECU-공기스프링누설(후미대차)', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit5 “공기스프링누설(후미대차)” 신호가 “1”이 +되면 검지 +', '해당 차량 공기스프링 누설(후미대차) 검지 현시 및 해당 차량 정상적인제동제어 불가 (응하중제어)', '해당 차량 후미대차의 공기스프링(AS3, AS4) 압력이 정상범위를 벗어남. (100kPa 미만) +', '해당 차량 후미대차의 공기스프링(AS3, AS4) 압력이 정상범위일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('63127093-6c02-42ac-a067-64647ec92845', '0106', '106', 'VVVF-쵸퍼과전류 검지(BOCD) (Car2)', 'M1', 'C', 'VVVF-쵸퍼과전류 검지(BOCD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT31의 Bit1 “BOCD” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 '쵸퍼과전류 검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치에서 제동저항기로 출력되는 전류가 1100A 이상일 경우 검지됨.', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반배전반의 VVVFIC nfb 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 제동저항기로 흐르는 전류치 확인함. +3) 전류치가 비정상적일 경우 제동쵸퍼유닛에 설치된 IGBT, 전류센서, 고전압회로 결선 상태를을 확인한다. +4) 전류센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작상태를 시험기를 통해 확인한다. +6) 제동저항기의 이물질 침투여부를 확인하며, 제동저항기 저항치가 적정한지 확인한다. +7) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.578803+00', null, '다대48량(2015)', 'Rotem'), ('63143384-130d-4334-8046-d2a60ceb842d', '0317', '317', 'ATC#8 - 마스콘이 중립위치에 있지 않음', 'Tc2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('631b4b75-e901-4a70-b508-53ca23fe4fea', '1406', '1406', 'BMS#1-Cell 과전압(COV, 4,25V이상)', 'Tc1', 'D', 'BMS-Cell 과전압(COV)', 'D', 'BMS', '해당차량의 배터리 셀 전압이 4.23V이상이 되면 검지', '차량 배터리 셀 과전압 검지 후, 4.26V 이상이면 충전 접촉기(CK)가 차단된다.', '배터리 셀 과전압 (4.23V 이하).', '배터리 셀 전압 정상범위로 회복 (3~4.21V)', '1) 배터리 NFB 상태 확인 +2) 이상이 없으면 차량 전체를 리셋한다. +3) 차량 리셋 후에도 동일고장이면 사령실과 연락하여 조치를 취한다 (외부 방전기 연결 또는 차량 지원)', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('63218719-764d-40d1-93ba-53df96417cc4', '0740', '740', 'HVAC#5 - 전자접촉기 증발기1(CREF) 고장', 'T2', 'C', 'HVAC-전자접촉기 증발기1(CREF) 고장', 'C', 'HVAC', 'HVAC 냉방 작동 중 CREF1 전자접촉기 고장 발생 +', 'UNIT1 냉방 작동 불가', '냉방 작동 중 2.5초 이상 동안 CREF1 작동 feedback 신호가 수신되지 않는 경우 +', 'CREF1 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CREF1을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CREF1과 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('63367a50-dc6c-47e9-b987-1c59e83b96a6', '0519', '519', 'DCU#3 1위(R1)-ZVR 신호 에러', 'M2', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 "ZVR signal error” 신호가 "1"이 되면 검지.', '출입문이 강제로 닫히게 되고, 열림은 불가능', '1) 차량 ZVR 신호가 없는 상태 (차량 주행상태) 에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함.', '해당출입문 ZVR 신호 수신', '1) 차량이 주행중이라면, 차량이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.392739+00', null, '로템40량(2018)-1단계', 'Rotem'), ('6350520f-3963-47d1-b08c-b8be93943415', '0508', '508', 'DCU#1 2위(L1)-출입문 모터/인코더 고장', 'Tc1', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 "Motor / Encoder failure” 신호가 "1"이 되면 검지.', '출입문 정상동작 불가', '1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우 (인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터 / 인코더 회로가 손상된 경우', '모터/인코더 및 DCU가 정상상태이고, 전기적 연결상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있느지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. +★ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. + +1. DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. +2. DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) +3. DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('63671a1b-3c7c-48d6-92b4-5848843e022c', '755', '755', 'CAB HVAC#1 - 통신고장', 'Tc1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('63686cfa-35d0-403c-b616-7cd15a142b5f', '0503', '503', 'DCU#8 6위(L3) - 출입문 내부 비상핸들 취급(EED)', 'Tc2', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('6369b4b0-476f-4bf3-a070-f73283d2f9a8', '0206', '206', 'BECU#6 - RAM 점검 고장', 'M3', 'C', 'BECU-RAM 점검 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit5 “RAM 점검 고장” 신호가 “1”이 되면 검지 +', '해당 차량 RAM 점검 고장검지 현시 및 해당 차량 정상적인 제동제어 불가', '해당 차량 BECU의 자가진단 시 고장 발생 +', '해당 차량 BECU의 자가진단 시 정상적일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('637c2618-465b-47e1-b8b3-0046efa21e5b', '0894', '894', '비상인터폰 동작(Car#1-1)', 'Tc1', 'W', null, null, 'RADIO', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('637dc938-cb01-44ed-878b-75fc476702e6', '0409', '409', 'SIV#8-DC(가선) 입력 과전압(DCINOV)', 'Tc2', 'C', 'SIV-DC(가선) 입력 과전압(DCINOV)', 'C', 'SIV', '보조전원장치(SIV)의 RS485 데이터 중 SIV-TCMS SD TEXT4의 Bit7 “DCINOV” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 '가선과전압 검지' 표시됨. +2) 보조전원장치(SIV)는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 보조전원장치(SIV) 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 보조전원장치(SIV) 상태 붉을색으로 표기되며, 연장급전 됨.', '보조전원장치(SIV)에 입력되는 전압이 2,400V 이상일 경우 검지됨.', '1) 경고장이 발생할 경우 보조전원장치(SIV) 자동 재기동에 의해 재기동 됨. +2) 중고장이 발생했을 경우 조치 완료 후 보조전원장치(SIV) 리셋으로 고장 소거됨.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 보조전원장치(SIV) 고장기록을 수집하여 보조전원장치(SIV)에 입력되는 전압값을 확인함. +3) 입력되는 전압값가 비정상적일 경우 보조전원장치(SIV) 입력회로를 접검한다.. +4) 보조전원장치(SIV)내의 입력전압센서 및 배선과 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작상태를 시험기를 통해 확인한다. +6) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('638f2cd8-d0b1-4de5-ae1e-b95a691df645', '0519', '519', 'DCU#2 2위(L1)-ZVR 신호 에러', 'M1', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 "ZVR signal error” 신호가 "1"이 되면 검지.', '출입문이 강제로 닫히게 되고, 열림은 불가능', '1) 차량 ZVR 신호가 없는 상태 (차량 주행상태) 에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함.', '해당출입문 ZVR 신호 수신', '1) 차량이 주행중이라면, 차량이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.392739+00', null, '로템40량(2018)-1단계', 'Rotem'), ('63980874-10ab-4d80-b1df-4fd4b7a94bfb', '0517', '517', 'DCU#2 1위(R1)-출입문 장애물로 인한 열림 실패', 'M1', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Open failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘상태로 대기', '도어 열림 중 3회 장애물 감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 열림 시, 장애물 감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('63a5a07d-3bcf-4134-b96a-ae41fa75a32b', '0220', '220', 'BECU#3 - 공기제동 감쇄지령 비정상', 'M2', 'C', 'BECU-공기제동 감쇄지령 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit3 “공기제동 감쇄지령 비정상” 신호가 “1”이 되면 검지 +', '해당 차량 공기제동감쇄지령 비정상 검지 현시 및 해당 차량 정상적인전공교차제어 불가 (부수차량 공기제동 감쇄 불가)', '해당 차량의 공기제동감쇄지령 신호가 정상범위를 벗어남. (5.0 ~ 95.0%) +', '해당 차량의 공기제동감쇄지령 신호가 정상범위일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 소거되지 않을 경우 해당 차량 옆의 Pair 차량(구동차) BECU를 리셋(CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('63b83afe-2462-418a-a3b5-a24c8efa8a78', '0509', '509', 'DCU#1 6위(L3)-출입문 잠김 리미트 스위치 고장', 'Tc1', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 "DLS Failure” 신호가 "1"이 되면 검지.', '출입문 잠김 상태 확인 불가', '1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('63ce2e92-6082-4c23-aedc-06e7c72ace21', '0519', '519', 'DCU#1 6위(L3) - ZVR 신호 에러', 'Tc1', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 “ZVR signal error” 신호가 “1”이 되면 검지 +', '출입문이강제로 닫히게 되고, 열림은 불가능', ' +1) 차량 ZVR 신호가 없는 상태(차량 주행상태)에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함. +', '해당 출입문 ZVR 신호 수신', '1) 차량 이 주행중이라면, 차량 이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('63d84be5-df6e-4ec2-9340-10986a2b3052', '0504', '504', 'DCU#3 3위(R2)-출입문 외부비상핸들 취급(EAD)', 'M2', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('63d976cb-de14-40ec-b16a-938819d4c7d1', '0521', '521', 'DCU#5 1위(R1)-모듈 상태 이상', 'T2', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 "01"또는 "00"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('63ff8073-8493-4314-a332-18ea202a6cc6', '0511', '511', 'DCU#7 4위(L2)-출입문 닫힘 리미트 스위치2 고장', 'M4', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 "DCS2 Failure(Right)” 신호가 "1"이 되면 검지.', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('640a9fef-270e-4780-a09e-bf1148ae88c6', '0726', '726', 'HVAC#4-배기팬2 과부하', 'T1', 'C', 'HVAC-배기팬2 과부하', 'C', 'HVAC', 'HVAC 환기작동 중 차량 배기팬2 모터에 과부하 발생.', '환기 시 차량 배기팬2 운전 불가능', '1) 냉방작동 중 챠량 배기팬2 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRVF2와 연결된 THR10이 Trip 됨.', '차량 배기팬2 모터의 과부하 조건을 해소하여 정상 가능 상태로 만들고, THR10 및 마이콤 전원 리셋', '1) 냉난방배전반의 점검커버를 열고, THR10의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR10의 전류 세팅값이 2.5A에 맞춰져 있는지 확인하여, 아닐 경우, 십자 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동 시킨 후, THR10의 2차측 2,4 단자와 6 단자 사이의 전압이 DC 100V으로 정상 측정되는지 확인한다. +5) 만약 전압이 측정되지 않을 시, 전원이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, THR10 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('64142920-59a5-4eb9-b502-a79321a4066c', '0724', '724', 'HVAC#3 - 냉난방장치1 압력스위치1(DPS) 냉매부족', 'M2', 'C', 'HVAC-냉난방장치1 압력스위치1(DPS) 냉매부족', 'C', 'HVAC', '냉난방장치1 냉매 압력스위치1 저압 발생 +', 'UNIT1CYCLE1 냉방 기능 불가', 'UNIT1DSP1측 냉매압력이 30초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우 +', '냉매압력이 정상수치2±0.5(kgf/cm2) 이상 유지하도록 하고, 마이콤전원을 리셋', '1) 배전반 점검 커버를 열고 마이콤 전원을 리셋한 후, 냉방 가동 시, CREF2의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)을 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설 여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안 되는 것을 확인한 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('64336bb3-388c-44d0-a9e6-7c1d8cdf33d0', '0501', '501', 'DCU#1 1위(R1) - 출입문 차단', 'Tc1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('64534839-5afa-463d-99af-39d5ae438b42', '0310', '310', 'ATC#8-', 'Tc2', '0', null, null, '0', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('64579164-a713-4cb9-a267-b55881f06790', '0520', '520', 'DCU#7 2위(L1)-이중계 절체 동작', 'M4', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 "Module switchover' 신호가 "1"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('645e4f0f-141a-4604-885a-e080a32025d7', '0517', '517', 'DCU#2 6위(L3)-출입문 장애물로 인한 열림 실패', 'M1', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Open failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘상태로 대기', '도어 열림 중 3회 장애물 감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 열림 시, 장애물 감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('645f73c3-8bad-4f2a-a9c0-925030b15dd8', '0511', '511', 'DCU#1 4위(L2)-출입문 닫힘 리미트 스위치2 고장', 'Tc1', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 "DCS2 Failure(Right)” 신호가 "1"이 되면 검지.', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('6471ff92-5398-4b52-ba4b-288280f78c0a', '0709', '709', 'HVAC#3-냉난방장치2 압력스위치2(DPS) 저압', 'M2', 'D', 'HVAC-냉난방장치2 압력스위치2(DPS) 저압', 'D', 'HVAC', '냉난방장치2 냉매 압력스위치2 저압 발생.', 'UNIT2 CYCLE2 냉방 기능 불가', 'UNIT2 DSP2측 냉매 압력이 3초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우', '냉매 압력이 정상 수치 2±0.5(kgf/cm2 이상으로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CREF4의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)을 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안되는 것을 확인한 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('647b7995-e850-4b61-ba44-8c489485e5bc', '0748', '748', 'HVAC#6 - 전자접촉기 차량히터1(CRRHT) 고장', 'M3', 'C', 'HVAC-전자접촉기 차량 히터1(CRRHT) 고장', 'C', 'HVAC', '객실 난방기 작동 중 CRRHT1 전자접촉기 고장 발생 +', '객실 전난방 시 2/3난방만 작동', '객실 전난방 작동 중 2.5초 이상 동안 CRRHT1 작동 feedback 신호가 수신되지 않는 경우 +', 'CRRHT1 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CRRHT1을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRRHT1과 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('649e7b23-dc2a-4195-be2e-cce56dc27957', '0225', '225', 'BECU#6-강제완해검지(CPRD)', 'M3', 'C', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('64a2c6d9-a297-4f24-a12a-89d0253a2a1d', '0519', '519', 'DCU#5 3위(R2) - ZVR 신호 에러', 'T2', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 “ZVR signal error” 신호가 “1”이 되면 검지 +', '출입문이강제로 닫히게 되고, 열림은 불가능', ' +1) 차량 ZVR 신호가 없는 상태(차량 주행상태)에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함. +', '해당 출입문 ZVR 신호 수신', '1) 차량 이 주행중이라면, 차량 이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('64bd8a3a-982a-4b4c-887d-a097fd8a6887', '0515', '515', 'DCU#1 6위(L3) - 출입문 열림 시간 초과', 'Tc1', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 “Open time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 열림 동작시간이 6초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도한 후, ‘장애물로 인한 열림 실패' 고장과 함께 ‘Open time out' 고장이 함께 현시 +', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('64c5d276-e51c-4a1e-991d-4cec54ba52ab', '0172', '172', 'VVVF#7 - 접지검지(GRD)', 'M4', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('64d7b167-50b1-4a2f-970c-0aa8f015c266', '0862', '862', '출력증폭기#2(AMP) 고장(Car#6)', 'M3', 'C', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('64da2fde-247e-4252-b492-4a099fa346be', '0512', '512', 'DCU#5 1위(R1)-파라미터 로딩 실패', 'T2', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 "Paraneter error” 신호가 "1"이 되면 검지.', 'Parameter error 현시 (출입문은 정상작동 가능)', 'DCU 자체내의 EEPROM으로부터 parameter 데이터 로딩 실패', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('64eaed29-a4b9-42ca-bb1f-bcf1c8ad580e', '0722', '722', 'HVAC#3-냉난방장치2 압력스위치1(DPS) 냉매부족', 'M2', 'C', 'HVAC-냉난방장치2 압력스위치1(DPS) 냉매부족', 'C', 'HVAC', '냉난방장치2 냉매 압력스위치1 저압 발생.', 'UNIT2 CYCLE1 냉방 기능 불가', 'UNIT2 DSP1측 냉매 압력이 30초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우', '냉매 압력이 정상 수치 2±0.5(kgf/cm2 이상 유지하도록 하고, 마이콤 전원을 리셋', '1) 배전반 점검 커버를 열고 마이콤 전원을 리셋한 후, 냉방 가동 시, CREF4의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)을 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안되는 것을 확인한 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('64ecc70d-b63d-410e-9415-02f557e76243', '0182', '182', 'VVVF#6-TCU 초기화(INZ-RST)', 'M3', 'C', 'VVVF-TCU 초기화(INZ-RST)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT34의 Bit7 “INZ-RST” 신호가 "1"이 되면 검지.', null, '통합제어장치 재 기동 시 해당 고장 검지', '초기화 완료', '1) 상기고장이 간헐적으로 발생하는 경우 아래와 같이 조치한다. +2) TCU(통합제어장치)의 입력에 제어전원 DC70 ~100V가 인가되는지 확인한다. +3) TCU(통합제어장치) 후면 커넥터 및 배선의 상태를 확인한다. +4) 추진제어장치 시험기를 이용하여 TCU(통합 제어장치)의 이상여부를 확인한다. +5) PWS보드 또는 통합제어기 교체. +6) 상기의 점검부분에 이상이 있을경우 관련부품을 교체한다.', null, '3', '2025-10-12 01:21:37.578803+00', null, '로템40량(2018)-1단계', 'Rotem'), ('6510621e-34e3-4489-9f78-a5563dfe184f', '0718', '718', 'HVAC#1-CO2 센서1 고장', 'Tc1', 'C', 'HVAC-CO2 센서1 고장', 'C', 'HVAC', '객실 CO2 센서1 고장 발생', 'CO2 센서1 고장현시', 'CO2 센서의 검지범위는 0~4000ppm (2~10Vdc) 인데, 1초 이상 출력전압이 2Vdc (0ppm) 미만으로 떨어지는 경우', 'CO2 센서 검지 값이 1초 이상 2Vdc (0ppm) 이상 지속되는 경우', '1) 전원을 인가한 상태에서 CO2센서 커버를 열고 테스터기를 통해 'OUT2' 단자와 'G' 단자간의 전압이 2Vdc 미만인지 확인한다. +2) 만약 전압이 2Vdc 이상인데도 고장이 지속될 경우, 마이콤을 교체한다. +3) 만약 전압이 2Vdc 미만으로 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('65194b26-7797-4e52-b789-54cc160db01e', '0217', '217', 'BECU#3 - 회생제동달성 비정상', 'M2', 'C', 'BECU-회생제동달성 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit0 “회생제동달성 비정상” 신호가 “1”이 되면 검지 +', '해당 차량 회생제동달성비정상 검지 현시 및 해당 차량 정상적인 전공교차제어 불가', '해당 차량의 회생제동 달성 신호가 정상범위를 벗어남. (5.0 ~ 95.0%) +', '해당 차량의 회생제동달성신호가정상범위일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 소거되지 않을 경우 해당 차량 추진제어장치 리셋(CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르 시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('651ea797-c63d-4c64-8d1b-faf1747e2b46', '0516', '516', 'DCU#3 6위(L3)-출입문 장애물로 인한 닫힘 실패', 'M2', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Close failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림상태로 대기', '도어 닫힘 중 3회 장애물 감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('651eb697-42e6-4ff9-9a70-dfb5bac68d02', '0514', '514', 'DCU#6 1위(R1)-출입문 닫힘 시간 초과', 'M3', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 "Close time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 닫힘 동작시간이 7초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도 한 후, '장애물로 인한 닫힘실패' 고장과 함께 'Close time out' 고장이 함께 현시', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('6528bf78-7662-4a52-a83f-879b2fb25575', '0133', '133', 'VVVF-IPM U상 이상검지(GDFU) (Car2)', 'M1', 'C', 'VVVF-IPM U상 이상검지(GDFU)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT34의 Bit7 “GDFU” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 'IPM U상 이상검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치 내부 IPM에 과전류, 과온이 검지될경우.', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반배전반의 VVVFIC nfb 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 견인전동기로 출력되는 3상의 전류치 확인함. +3) 특정상의 전류치가 비정상적일 경우 특정상에 해당되는 IPM, 전류센서, 모터결선을 확인한다. +4) 전류센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작상태를 시험기를 통해 확인한다. +6) IPM 전원공급기의 전원연결상태 또는 광케이블의 연결상태와 배선상태를 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.656536+00', null, '다대48량(2015)', 'Rotem'), ('65290245-6e31-4402-aa7e-d308516f151e', '0317', '317', 'ATC#1 - 마스콘이 중립위치에 있지 않음', 'Tc1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('652d575b-eefd-4ffc-a92f-2627ecb723c0', '0156', '156', 'VVVF#6 - 전진/후진 이상검지(FRD)', 'M3', 'C', 'VVVF-전진/후진 이상 검지(FRD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT31의 Bit5 “FRD” 신호가 “1”이 되면 검지 +', '1) TCMS 화면 하단 또는 고장화면에 ‘전진/후진 신호 이상 검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생함. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉은색으로 표기되며, HSCB, LB1, 2 개방되어 동력 손실 발생함.', '추진제어장치 입력되는 역행/제동신호가 동시에 입력될 경우 검지됨. +', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반 배전반의 VVVFIC nfb 재투입 또는 차량 배터리 전원 재투입', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 전진/후진신호에 이상이 있는지 확인한다. +3) 차량의 제어 회로 중 전진/후진 신호가 추진제어장치로 연결되는 경로에 이상이 없는지 확인 한다. +4) DIN 보드의 동작 상태를 시험기를 통해 확인한다. +5) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('65348d5f-fa0e-4863-b717-837b30553a6f', '0743', '743', 'HVAC#5-전자접촉기 보조히터2(AHEK) 고장', 'T2', 'C', 'HVAC-전자접촉기 보조히터2(AHEK) 고장', 'C', 'HVAC', 'HVAC 보조난방기 작동 중 AHEK2 전자접촉기 고장 발생.', 'UNIT1 보조난방기 전난방 시 반난방만 작동', '보조난방기 작동 중 2.5초 이상동안 AHEK2 작동 feedback 신호가 수신되지 않는 경우', 'AHEK2 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) AHEK2를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, AHEK2와 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('653788eb-e72e-468b-99c5-a81cf2267a5b', '0512', '512', 'DCU#8 1위(R1) - 파라미터 로딩 실패', 'Tc2', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 “Paraneter error” 신호가 “1”이 되면 검지 +', 'Parametererror 현시(출입문은 정상작동 가능)', 'DCU 자체 내의 EEPROM으로부터 parameter데이터 로딩 실패 +', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('6540912c-1bd5-4640-bc2a-af65e2df6984', '0512', '512', 'DCU#8 6위(L3) - 파라미터 로딩 실패', 'Tc2', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 “Paraneter error” 신호가 “1”이 되면 검지 +', 'Parametererror 현시(출입문은 정상작동 가능)', 'DCU 자체 내의 EEPROM으로부터 parameter데이터 로딩 실패 +', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('654239c1-a44d-481a-b058-29b70c13deb0', '0049', '49', '보조공기압축기 스위치 취급(Car6)', 'M3', 'W', null, null, 'CMSB', null, null, null, null, null, null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('65456512-9111-48b5-9d7b-583b53bc6295', '0207', '207', 'BECU#8-자기진단고장', 'Tc2', 'C', 'BECU-자기진단고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit6 “RAM 점검 고장” 신호가 "1"이 되면 검지.', '해당 차량 자기진단고장 검지 현시 및 해당 차량 활주제어 불가.', '해당 차량 BECU의 자가진단 시 고장 발생(활주방지밸브 고장).', '해당 차량 BECU의 자가진단 시 정상적일 경우 소거(활주방지밸브 정상).', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('65552680-b7de-494f-b63c-c1aeebae88d1', '0180', '180', 'VVVF#2 - MCOK 고착(MCOKNO)', 'M1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('655688f0-59d4-4d90-9f41-d0011353e48d', '0205', '205', 'BECU#2-회생제동요구 비정상', 'M1', 'C', 'BECU-회생제동요구 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit4 “회생제동요구 비정상” 신호가 "1"이 되면 검지.', '해당 차량 회생제동요구 비정상 검지 현시.', '해당 차량의 회생제동요구 출력이 정상범위를 벗어남.', '해당 차량 회생제동요구 출력이 정상범위로 복귀 시 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('655e2dcb-1f84-4b7f-8058-42cfeafee2a3', '1504', '1504', '냉방장치용 AC 회로차단기 차단(Car6)', 'M3', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('65604829-ee34-4ca1-8256-1fa42621124b', '0129', '129', 'VVVF-IPM W상 이상검지(GDFW) (Car6)', 'M3', 'C', 'VVVF-IPM W상 이상검지(GDFW)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT34의 Bit3 “GDFW” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 'IPM W상 이상검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치 내부 IPM에 과전류, 과온이 검지될경우.', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반배전반의 VVVFIC nfb 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 견인전동기로 출력되는 3상의 전류치 확인함. +3) 특정상의 전류치가 비정상적일 경우 특정상에 해당되는 IPM, 전류센서, 모터결선을 확인한다. +4) 전류센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작상태를 시험기를 통해 확인한다. +6) IPM 전원공급기의 전원연결상태 또는 광케이블의 연결상태와 배선상태를 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.656536+00', null, '다대48량(2015)', 'Rotem'), ('6585661d-249d-49cc-97ff-b3f00e0d1895', '0171', '171', 'VVVF#7-통합제어장치-PWM제어장치간 통신이상 검지(ERR485)', 'M4', 'C', 'VVVF-장치간 전송이상(ERR485)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT33의 Bit4 “ERR485” 신호가 "1"이 되면 검지.', null, '1) 통합제어기와 PWM보드간 485 통신이 400ms이상 응답없을 시 고장발생. +2) 1분 이내 3회 발생 시 중고장 발생.', '1) 경고장 +역행 고장검지 2초 후 자동 재기동 제동 제동 OFF시 고장 소거 +2) 중고장 +동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) PWM 보드 전면의 LED점등을 확인한다. +2) PWM 제어기 내부 PCB상태를 육안점검한다. +3) PWM 제어기전면의 CN1, CN2 커넥터의 핀 상태를 확인한다. +4) TCU(통합제어장치)의 PUZ 보드의 후면의 커넥터 삽입상태를 확인한다. +5) TCU(통합제어장치)의 PUZ 보드 후면의 제어배선 중, TRX11P, TRX11F, TRX11G 배선의 연결상태 및 배선의 단선 여부를 확인한다. +6) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:37.578803+00', null, '로템40량(2018)-1단계', 'Rotem'), ('658ac730-d4d0-4f02-94d2-5be944e84840', '0218', '218', 'BECU#1 - 인통선로직 비정상', 'Tc1', 'C', 'BECU-인통선로 직 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit1 “인통선로 직 비정상” 신호가 “1”이 되면 +검지 +', '해당 차량 인통선로 직비정상 검지 현시 및 해당 차량 정상적인제동제어불가 (상용제동 지령에 따른 제어)', '해당 차량의 추진선택(P), 제동선택(B) 신호가 동시에 ON됨. +', '해당 차량의 추진선택(P), 제동선택(B) 신호가 정상작동(상보적으로 작동)될 경우 소거', 'BECU를 리셋(BECU CB OFF/ON) 한 뒤, 마스콘을 제동 7단으로 5초간 취급하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('6593399b-45ca-41fc-b85d-450b31d44cb5', '0502', '502', 'DCU#3 6위(L3)-출입문 장애물검지', 'M2', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('6597be3d-4398-4c6f-ba60-cd2c1f5a1807', '0500', '500', 'DCU#1 2위(L1) 통신고장', 'Tc1', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS간 RS485 통신고장이 검지되면 발생.', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐 상태 등의 변화가 없음.', '1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우', '해당차량의 DCU 및 CU/TU 의 전원이 정상상태이고, 통신라인 연결상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜저 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는데도 지속적으로 통순고장이 검지되면, DCU의 X2,X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('65a59b7f-5015-424a-867d-42e0dfeefea6', '0701', '701', 'HVAC#8 - 냉난방장치2 압축기2 과부하', 'Tc2', 'C', 'HVAC-냉난방장치2 압축기2 과부하', 'C', 'HVAC', 'HVAC 냉방 작동 중 냉난방장치2 압축기2 또는 응축기2 모터에 과부하 발생 +', '냉방 기능 저하(전냉방 시 반냉방으로 작동)', ' +1) 냉방 작동 중 UNIT2의 압축기2 또는 응축기2 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRCM4와 연결된 THR4가 Trip 됨. +', 'UNIT2의 압축기2 또는 응축기2 모터의 과부하조건을 해소하여 정상 가능 상태로 만들고, THR4 및 마이콤 전원 리셋', '1) 냉난방 배전반의 점검커버를 열고, THR4의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR4의 전류 세팅값이 11.5A에 맞춰져 있는지 확인하여, 아닐 경우, (+) 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동시킨 후, THR4의 2차측 2, 4, 6 단자에서 각 단자 간 상간 전압이 AC 380V로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 압축기 및 응축기 단품 상태에서 점검을 한다. +7) THR4의 2차측 2, 4, 6 단자에서 각 단자 간 권선저항이 모두 같은지 확인한다. (±10% 이하) (압축기2 및 응축기2 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT2의 압축기2 또는 응축기2 모터의 결선을 해제한 후 각 부품의 권선저항을 확인 후, 문제가 있는 부품을 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR4 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('65a8eb52-077b-4a2c-bb3b-ed3edf22c954', '1706', '1706', '노선안내표시기#5 고장(Car2)', 'M1', 'C', '노선안내표시기#4 고장', 'C', 'PIC', 'PIC 장치의 노선안내표시기#4이 고장이 났을 때 발생 +', '1) 노선안내표시기 화면 미현시 +2) 노선안내표시기 안내 화면 오현시', '통신고장 +', '통신 재개 시', '1) 이더넷 스위치 링크 확인 +2) 이더넷 케이블 점검 +3) 제어보드 및 전원보드 교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('65ba5443-338d-4782-b6ce-511efaf39643', '0510', '510', 'DCU#1 6위(L3)-출입문 닫힘 리미트 스위치1 고장', 'Tc1', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 "DCS1 Failure(Leftt)” 신호가 "1"이 되면 검지.', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('65c753af-0778-4e47-8cf1-d294c1f58874', '0213', '213', 'BECU#8-AC 압력센서고장', 'Tc2', 'C', 'BECU-AC 압력센서 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit4 “AC 압력센서 고장” 신호가 "1"이 되면 검지.', '해당 차량 공기제동장치고장, AC압력센서 고장 검지 현시 및 해당 차량 제동제어 불가.', '해당 차량의 AC압력센서 고장.', '해당 차량의 AC압력센서가 정상일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('65c8db43-702c-420d-bb4f-0a7fcb80f42a', '0406', '406', 'SIV#1-인버터1 입력 과전류(INV1OC)', 'Tc1', 'C', 'SIV-인버터1 입력 과전류(INV1OC)', 'C', 'SIV', '보조전원장치(SIV)의 RS485 데이터 중 SIV-TCMS SD TEXT4의 Bit4 “INV1OC” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 '인버터1 입력 과전류' 표시됨. +2) 보조전원장치(SIV)는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 보조전원장치 중고장이 발생됨. +5) 중고장이 발생되면 TCMS 일반화면에 보조전원장치 상태 붉을색으로 표기되며, 연장급전 됨.', '보조전원장치(SIV) 내부 인버터 1에서의 전류가 450A 이상일 경우 검지됨.', '1) 경고장이 발생할 경우 보조전원장치(SIV) 자동 재기동에 의해 재기동 됨. +2) 중고장이 발생했을 경우 조치 완료 후 보조전원장치(SIV) 리셋으로 고장 소거됨.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 보조전원장치(SIV) 고장기록을 수집하여 FC전압, 전류에 이상이 있는지 확인한다. +3) 보조전원장치(SIV) 내부 고전압부에 소손흔적이 있는지 확인한다. +4) FC에 연결된 버스바의 체결상태가 양호한지 확인한고, 버스바를 분리하여 FC의 Capacitance를 측정하여 이상이 없는지 확인한다. +5) 전압센서와 보조전원장치(SIV) 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +6) SEN 보드의 동작상태를 시험기를 통해 확인한다. +7) 출력단 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('65d1748f-a949-4b76-881b-a8fcb10b10d8', '0503', '503', 'DCU#2 5위(R3) - 출입문 내부 비상핸들 취급(EED)', 'M1', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('65deff52-6b7a-4f35-ba93-f791f6ec320f', '1202', '1202', 'FDU#4-감지기1 고장', 'T1', 'C', 'FDU-감지기1 고장', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 "Detector1 State” 신호가 "10"이 되면 검지.', '감지기 고장상태 현시(자동 소거 안됨)', '1) 감지기로부터 데이터 응답이 없는경우. +2) 감지기로부터 수신된 데이터의 CRC가 맞지 않는경우 +3) 감지기로부터 수신된 데이터의 ID가 송신 ID와 일치하지 않는경우', 'FDU 전원 리셋 후 감지기로부터 정상적으로 데이터가 수신된 경우', '1) FDU 전원 리셋 후 고장 소거 여부 확인 +2) 정상 동작중인 감지기와 위치 교환 후 FDU 전원 리셋 및 고장 상태 확인 +3) 동일한 감지기에서 고장 발생시 감지기 교체 +4) 동일한 위치에서 고장 발생시 감지기 라인 점검', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('65e426c0-2a72-4adb-b4d4-867a7070baac', '0172', '172', 'VVVF#3 - 접지검지(GRD)', 'M2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('660065e7-6976-43a4-bcae-8676126a3cab', '0504', '504', 'DCU#4 4위(L2)-출입문 외부비상핸들 취급(EAD)', 'T1', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('660c1156-0d04-4159-a572-5109468fce2c', '0728', '728', 'HVAC#3-냉난방장치2 토출 센서 고장', 'M2', 'C', 'HVAC-냉난방장치2 토출 센서 고장', 'C', 'HVAC', '냉난방장치2의 토출 센서 고장 발생', '냉난방장치2 토출센서 고장현시', '온도센서 검지범위는 -45~85도 (820~1330옴) 인데, 2초 이상 검지범위를 벗어나는 경우', '온도센서 검지 값이 2초 이상 허용온도 범위 내 일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820~1330옴 을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우, 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('6615c35b-0fb4-4ecc-93f3-a84b7f083b35', '1412', '1412', 'BMS#8 - 방전저온(DUT, - 20도 이하)', 'Tc2', 'D', 'BMS-방전저온(DUT)', 'D', 'BMS', '해당 차량의 배터리 온도가 -25도 이하가 되면 검지 +', '차량 배터리방전저온검지 후, -35도 이하이면 충전접촉기(CK)가 차단된다.', '배터리방전저온(-20도 이상) +', '배터리방전저온정상범위로 회복(-20도 이상)', '1) 배터리 NFB 상태 확인 +2) 이상이 없으면 차량 전체를 리셋한다. +3) 차량 리셋 후에도 동일고장이면 사령실과 연락하여 조치를 취한다. (배터리를 상온조건으로 만든다.)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('6628df22-3442-4201-afa6-47c38228621d', '0503', '503', 'DCU#3 3위(R2) - 출입문 내부 비상핸들 취급(EED)', 'M2', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('6634afa8-d893-49ac-aa10-b2bd28fd3c09', '0138', '138', 'VVVF#7 - 입력과전류 검지(ISOC)', 'M4', 'C', 'VVVF-가선과전류 검지(ISOC)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT29의 Bit3 “ISOC” 신호가 “1”이 되면 검지 +', '1) TCMS 화면 하단 또는 고장화면에 ‘가선과전류 검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생함. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉은색으로 표기되며, HSCB, LB1, 2 개방되어 동력 손실 발생함.', '추진제어장치에 입력되는 전류가 1, 500A 이상일 경우 검지됨. +', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반 배전반의 VVVFIC nfb 재투입 또는 차량 배터리 전원 재투입', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 추진제어장치에 입력되는 전류치 확인함. +3) 입력되는 전류치가 비정상적일 경우 추진제어장치 입력회로 (HSCB, LB1, 2, CHRe)를 점검한다. +4) LB Box 내의 전류센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인 한다. +5) SEN 보드의 동작 상태를 시험기를 통해 확인한다. +6) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('6642fabc-8597-4bd5-937c-1595491cf802', '0727', '727', 'HVAC#2 - 배기팬1 과부하', 'M1', 'C', 'HVAC-배기팬1 과부하', 'C', 'HVAC', 'HVAC 환기작동 중 차량 배기팬1 모터에 과부하 발생 +', '환기 시 차량 배기팬2 운전 불가능', ' +1) 냉방 작동 중 챠량 배기팬1 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRVF1와 연결된 THR9가 Trip 됨. +', '차량 배기팬1 모터의 과부하조건을 해소하여 정상 가능 상태로 만들고, THR9 및 마이콤 전원 리셋', '1) 냉난방 배전반의 점검커버를 열고, THR9의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR9의 전류 세팅값이 2.5A에 맞춰져 있는지 확인하여, 아닐 경우, (+) 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동시킨 후, THR9의 2차측 2, 4 단자와 6 단자 사이의 전압이 DC 100V로 정상 측정 되는지 확인한다. +5) 만약 전압이 측정되지 않을 시, 전원이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, THR9 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('6644828e-211f-4ad0-8971-3b2b41acd059', '0732', '732', 'HVAC#5 - 실외온도 센서1 고장', 'T2', 'C', 'HVAC-실외온도 센서 고장', 'C', 'HVAC', '실외온도 센서 고장 발생 +', '실외온도 센서 고장 현시', '온도센서 검지범위는 -45 ~ 85도(820 ~ 1,330Ω)인데, 2초 이상 검지범위를 벗어나는 경우 +', '온도센서 검지값이 2초 이상 허용온도 범위 내일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820 ~ 1,330Ω을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('664b71c8-909a-4263-8bc0-75afc240b646', '0501', '501', 'DCU#2 5위(R3)-출입문 차단', 'M1', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('664ed50c-b1bb-42cf-a5aa-bbb49782bc66', '0503', '503', 'DCU#6 5위(R3) - 출입문 내부 비상핸들 취급(EED)', 'M3', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('66539cf7-a0ae-4670-8da6-7843f954376f', '1004', '1004', 'CMSB#1 - CM 출력과전류', 'Tc1', 'C', 'CMSB-CM 출력과전류', 'C', 'CMSB', 'CMSB의 RS485 데이터 중 CMSB-TCMS SD TEXT3의 Bit5 “출력 과전류” 신호가 “1”이 되면 검지 +', '1) TCMS 화면 하단 또는 고장화면에 ‘CM 출력 과전류' 표시됨. +2) 바이패스 모드로 전환되고, CM 기동 시 ‘바이패스 기동'으로 표시됨.', 'CM 기동 시 출력전류가 정격전류의 250%(12.5A) 이상 전류가 발생될 경우 검지됨. +', '1) 차량 전원 OFF +2) CMSB 내부의 표시기 패널 RESET 버튼 누름', '1) 상기고장은 고장 소거 후, 재현시험을 진행하여 지속적으로 발생될 경우 아래와 같이 조치한다. +2) 공기압축기(CM) 출력전류를 확인한다. (공기압축기 매뉴얼 참조)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('665bcf81-ab32-45d5-8a8d-24b27ae79e93', '1106', '1106', 'PSD#1 - 지상 PSD 장애(2계)', 'Tc1', 'D', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('666b5633-46c5-4d91-b75f-29005f8cee30', '0520', '520', 'DCU#4 1위(R1) - 이중계 절체 동작', 'T1', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 “Module switchover” 신호가 “1”이 되면 검지 +', '이중계 절체 동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러) 이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A'모듈 및 ‘B'모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('667af8ef-2e67-4684-bc8c-19736455674d', '0723', '723', 'HVAC#6-냉난방장치1 압력스위치2(DPS) 냉매부족', 'M3', 'C', 'HVAC-냉난방장치1 압력스위치2(DPS) 냉매부족', 'C', 'HVAC', '냉난방장치1 냉매 압력스위치2 저압 발생.', 'UNIT1 CYCLE2 냉방 기능 불가', 'UNIT1 DSP2측 냉매 압력이 30초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우', '냉매 압력이 정상 수치 2±0.5(kgf/cm2 이상 유지하도록 하고, 마이콤 전원을 리셋', '1) 배전반 점검 커버를 열고 마이콤 전원을 리셋한 후, 냉방 가동 시, CREF2의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)을 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안되는 것을 확인한 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('667ed7bf-9353-478a-b93e-0c7df31781cc', '0503', '503', 'DCU#2 5위(R3)-출입문 내부비상핸들 취급(EED)', 'M1', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('66893387-63c1-4813-96c3-e35e88e833f0', '1200', '1200', 'FDU#7 통신고장', 'M4', 'B', 'FDU 통신고장', 'B', 'FDU', 'FDU와 TCMS간 RS485 통신고장이 검지되면 발생.', '화면상 FDU의 화재검지신호 등의 데이터가 반응하지 않음.', 'FDU 통신고장 또는 통신 케이블 문제', 'TCMS SDR 신호의 의해 FDU로부터 SD신호가 정상 수신된 경우 +조치조건 : +1) FDU 및 TCMS의 전원을 리셋하여 소거여부 확인 +2) 통신 고장이 발생하지 않은 다른차량의 수신기와 교체하여 소거 여부 확인(고장이 수신기를 따라가는지 확인) +3) TCMS와 FDU간의 통신계통 점검 및 FDU NFB 점검 +4) 문제가 지속될 경우, 수신기 교체', null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('669b296e-8509-439a-9af8-5ed10afadefe', '0508', '508', 'DCU#6 3위(R2)-출입문 모터/인코더 고장', 'M3', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 "Motor / Encoder failure” 신호가 "1"이 되면 검지.', '출입문 정상동작 불가', '1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우 (인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터 / 인코더 회로가 손상된 경우', '모터/인코더 및 DCU가 정상상태이고, 전기적 연결상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있느지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. +★ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. + +1. DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. +2. DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) +3. DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('66be4cb4-fb3c-4da9-b39d-6b250db72c07', '0207', '207', 'BECU#6 - 자기진단 고장', 'M3', 'C', 'BECU-자기진단고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit6 “RAM 점검 고장” 신호가 “1”이 되면 검지 +', '해당 차량 자기진단 고장검지 현시 및 해당 차량 활주제어 불가', '해당 차량 BECU의 자가진단 시 고장 발생(활주방지밸브 고장) +', '해당 차량 BECU의 자가진단 시 정상적일 경우 소거(활주방지밸브 정상)', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('66bfadb6-2834-49ad-b10d-de8ae5c60444', '0507', '507', 'DCU#1 3위(R2) - 초기화 실패', 'Tc1', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 “Calibration failure” 신호가 “1”이 되면 검지 +', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터 고장, 장애물감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우 +', '초기화 실패를 야기한 고장코드를 확인하여 조치 후, 재닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인한다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('66d0349a-20c8-41f2-9df0-080b5ee01f5d', '0511', '511', 'DCU#5 1위(R1) - 출입문 닫힘 리미트 스위치2 고장', 'T2', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 “DCS2 Failure(Right)” 신호가 “1”이 되면 검지 +', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('66f4a62c-4597-4788-8974-6edc6ac26cf9', '0722', '722', 'HVAC#6-냉난방장치2 압력스위치1(DPS) 냉매부족', 'M3', 'C', 'HVAC-냉난방장치2 압력스위치1(DPS) 냉매부족', 'C', 'HVAC', '냉난방장치2 냉매 압력스위치1 저압 발생.', 'UNIT2 CYCLE1 냉방 기능 불가', 'UNIT2 DSP1측 냉매 압력이 30초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우', '냉매 압력이 정상 수치 2±0.5(kgf/cm2 이상 유지하도록 하고, 마이콤 전원을 리셋', '1) 배전반 점검 커버를 열고 마이콤 전원을 리셋한 후, 냉방 가동 시, CREF4의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)을 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안되는 것을 확인한 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('670d0be3-c7a3-41b0-8782-0f4eaec16448', '0710', '710', 'HVAC#8-냉난방장치2 압력스위치2(DPS) 고압', 'Tc2', 'D', 'HVAC-냉난방장치2 압력스위치2(DPS) 고압', 'D', 'HVAC', '냉난방장치2 냉매 압력스위치2 고압 발생.', 'UNIT2 CYCLE2 냉방 기능 불가', 'UNIT2 DSP2측 냉매 압력이 3초 이상 28±1(kgf/cm2) 이상 되는 경우', '냉매 압력이 정상 수치 15±0.7(kgf/cm2 이하로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CRCM4의 부하측 전류를 측정하여 응축기 팬의 동작여부를 확인한다. +2) 응축기 코일의 전면에 이물질로 인한 막힘이 있는지 확인한다. +3) 응축기 팬 상부 그릴에 외부 이물질로 인한 막힘이 있는지 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('671c58cd-0086-4e26-87de-f2daed102b06', '0156', '156', 'VVVF#6-전진/후진이상검지(FRD)', 'M3', 'C', 'VVVF-전진/후진이상검지(FRD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT31의 Bit5 “FRD” 신호가 "1"이 되면 검지.', null, '전진 후진지령 동시에 입력 시 고장검지.', '동시 입력상황 해제', '1) 상기고장이 간헐적으로 발생하는 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 전진/후진신호에 이상이 있는지 확인한다. +3) 차량의 제어회로 중 전진/후진 신호가 추진제어장치로 연결되는 경로에 이상이 없는지 확인한다. +4) 추진제어장치 시험기를 이용하여 TCU(통합제어장치)의 이상여부를 확인한다. +5) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('671d5a5d-d426-456a-8169-ad403b272e50', '1505', '1505', '기타장치용 AC 회로차단기 차단(Car3)', 'M2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('675541a0-6aee-4cc6-81a1-d0dde1ae6713', '0055', '55', 'AUX FUSE DISCONNECTED(Car4)', 'T1', 'W', 'AUX FUSE DISCONNECTED(Car4)', 'W', '기타', '차량으로부터 AUX FUSE DISCONNECTED 신호 입력 시 +', 'SIV 고압 차단으로 AC전원 전체 “OFF”', '해당 퓨즈 소손 +', '해당 퓨즈 교체', null, '회로 도면 : REC20210DX0', '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('67695daa-0131-4113-9f57-b879a0496367', '0512', '512', 'DCU#4 3위(R2)-파라미터 로딩 실패', 'T1', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 "Paraneter error” 신호가 "1"이 되면 검지.', 'Parameter error 현시 (출입문은 정상작동 가능)', 'DCU 자체내의 EEPROM으로부터 parameter 데이터 로딩 실패', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('6782da61-aa99-41a7-9449-9f82a1a96064', '0738', '738', 'HVAC#5 - 전자접촉기 증발기3(CREF) 고장', 'T2', 'C', 'HVAC-전자접촉기 증발기3(CREF) 고장', 'C', 'HVAC', 'HVAC 냉방 작동 중 CREF3 전자접촉기 고장 발생 +', 'UNIT2 냉방 작동 불가', '냉방 작동 중 2.5초 이상 동안 CREF3 작동 feedback 신호가 수신되지 않는 경우 +', 'CREF3 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CREF3을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CREF3과 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('679effc9-34df-47f3-b777-b869aa46a750', '0705', '705', 'HVAC#5-냉난방장치2 증발기2 과부하', 'T2', 'C', 'HVAC-냉난방장치2 증발기2 과부하', 'C', 'HVAC', 'HVAC 냉방작동 중 냉난방장치2 증발기 모터에 과부하 발생.', 'UNIT2 냉방 기능 불가', '1) 냉방작동 중 UNIT2의 증발기 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CREF4와 연결된 THR8이 Trip 됨.', 'UNIT2의 증발기 모터의 과부하 조건을 해소하여 정상 가능 상태로 만들고, THR8 및 마이콤 전원 리셋', '1) 냉난방배전반의 점검커버를 열고, THR8의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR8의 전류 세팅값이 3A에 맞춰져 있는지 확인하여, 아닐 경우, 십자 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동 시킨 후, THR8의 2차측 2,4,6 단자에서 각 단자간 상간 전압이 AC 380V으로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 증발기 단품 상태에서 점검을 한다. +7) THR8의 2차측 2,4,6 단자에서 각 단자간 권선저항이 모두 같은지 확인한다. (±10% 이하) (증발기 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT2의 증발기 모터의 결선을 해제한 후 4극 및 6극 모터의 권선저항을 확인 후, 문제가 있을 겨우, 증발기 모터를 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR8 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('67d31a7e-a061-4dea-ba7b-27f9e298f79e', '0143', '143', 'VVVF#3 - 주회로 접지검지(LGD)', 'M2', 'B', 'VVVF-주회로 접지검지(LGD)', 'B', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT30의 Bit0 “LGD” 신호가 “1”이 되면 검지 +', '1) TCMS 화면 하단 또는 고장화면에 ‘주회로 접지검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동이 되지 않으며 중고장으로 처리됨. +3) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉은색으로 표기되며, HSCB, LB1, 2 개방되어 동력 손실 발생함.', '추진제어장치 입력전압이 300V 이하로 하강되며, 입력전류가 1,700A 이상인 조건 +', '추진제어장치 리셋으로 고장 소거됨.', '1) 상기고장이 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 고장기록의 FC 전압 및 입력전류 확인 +3) 추진제어장치 내부에 접지흔적 확인 및 고압 회로 점검 +4) 전류/전압 센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작 상태를 시험기를 통해 확인한다. +6) IPM 전원공급기의 전원연결 상태 또는 광케이블의 연결 상태와 배선상태를 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지 간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('67ef006d-de5f-40df-a7fb-cace0f18e6e4', '0227', '227', '제동관련 회로차단기 차단(Car7)', 'M4', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('67f4370e-c733-43bd-b429-0273ed544ccb', '0160', '160', 'VVVF#3 - 게이트전원전압 이상(GPLVD)', 'M2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('681990cb-85fc-4859-8947-7234f2e8dca9', '1504', '1504', '냉방장치용 AC 회로차단기 차단(Car7)', 'M4', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('681acfde-f5f6-42a6-89ee-9af2ba449157', '0172', '172', 'VVVF#7-접지검지(GRD)', 'M4', 'C', 'VVVF-접지검지(GRD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT33의 Bit5 “GRD” 신호가 "1"이 되면 검지.', null, '주 회로의 전류가 누설되었을 경우 고장 검지.', '동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) 인버터 유니트 내 IGBT의 소손 여부를 확인한다. +2) 고압에 의한 주 회로 소손 흔적을 확인한다. +3) 주회로 차단기함 내부의 고압회로에 소손이 없는지 확인한다. +4) GCT 외관 및 커넥터 체결상태 상태 점검. +5) 추진제어장치 시험기를 이용하여 TCU(통합 제어장치)의 이상여부를 확인한다. +6) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:37.578803+00', null, '로템40량(2018)-1단계', 'Rotem'), ('682147b2-eb2c-4276-b1b9-f0989a3171ad', '0151', '151', 'VVVF#3 - 통신 이상검지(MONIA_ERR)', 'M2', 'C', 'VVVF-통신 이상 검지(MONIA_ERR)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT31의 Bit0 “MONIA_ERR” 신호가 “1”이 되면 검지 +', 'TCMS 화면에 고정정보 현시되며, 추진제어장치상태화면에 나타나는 데이터에 변동이 없음.', 'TCMS-추진제어장치(VVVF)간통신정보가 3초 이상동일한정보로 유지되면 통신고장을 검지함. +', 'TCMS-추진제어장치(VVVF)간통신정보가정상적으로 통신이 될 경우 소거됨.', '1) 추진제어장치(VVVF) 리셋 실시 후 통신고장 소거됨을 확인 +2) 통신고장 소거가 되지 않을 경우 추진제어장치 MON 보드 신품으로 교체 후 통신고장 소거여부 확인 +3) 위 조건에도 고장이 소거되지 않을 경우, TCMS-추진제어장치 간 RS485 통신케이블 연결 상태 점검', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('6827dcfb-e1a0-4ba3-b9f8-8ebbf168b715', '1207', '1207', 'FDU#7-감지기4 화재감지', 'M4', 'W', 'FDU-감지기4 화재감지', 'W', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 "Detector1 State” 신호가 "11"이 되면 검지.', '화재상태 현시(자동 소거 안됨)', '하기 2가지 조건을 모두 만족하여야 화재신호가 출력 됨(연동모드 동작). +1) 이웃한(앞 혹은 뒤에 위치한) 감지기 중 하나의 감지기라도 주의 혹은 화재상태에 있어야 함. +2) Detector1(해당 감지기)에서 측정된 연기농도가 15% 이상이거나 온도가 65℃ 이상인 경우', '1) FDU의 복귀버튼 조작시 +2) FDU 전원 리셋시', '1) 해당 감지기 위치의 화재 발생 여부 확인 +2) 화재 오 감지일경우 FDU의 복귀버튼 취급 +3) 오감지일경우 감지기의 청소주기 확인(내부 먼지 제거)', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('684895fd-5dfa-406f-9597-6390d5f70c63', '0516', '516', 'DCU#6 1위(R1) - 출입문 장애물로 인한 닫힘 실패', 'M3', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Close failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림 상태로 대기', '도어 닫힘 중 3회 장애물감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('6858d687-4d07-46e2-9b4f-0ce751d3d27c', '0227', '227', '제동관련 회로차단기 차단(Car3)', 'M2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('68694b3c-eae5-4b16-bd85-90778a3e3ba7', '0722', '722', 'HVAC#5-냉난방장치2 압력스위치1(DPS) 냉매부족', 'T2', 'C', 'HVAC-냉난방장치2 압력스위치1(DPS) 냉매부족', 'C', 'HVAC', '냉난방장치2 냉매 압력스위치1 저압 발생.', 'UNIT2 CYCLE1 냉방 기능 불가', 'UNIT2 DSP1측 냉매 압력이 30초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우', '냉매 압력이 정상 수치 2±0.5(kgf/cm2 이상 유지하도록 하고, 마이콤 전원을 리셋', '1) 배전반 점검 커버를 열고 마이콤 전원을 리셋한 후, 냉방 가동 시, CREF4의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)을 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안되는 것을 확인한 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('686dc35d-6870-43a4-80e8-b843285b0d75', '0102', '102', 'VVVF#7 - 회생제동차단(BRK BLOCK)', 'M4', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('6874c348-bbaf-4a26-86b3-7c8d6c708dc5', '0221', '221', 'BECU#5 - 제동력부족(ISBD)', 'T2', 'B', 'BECU-제동력부족(ISBD)', 'B', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit5 “ISBD” 신호가 “1”이 되면 검지 +', '해당 차량 제동력 부족 검지 현시 및 해당 차량 제동압력(BCP)이 타차량에 비해 현저히 낮음.', '제동 7단 취급 시 해당 차량의 제동압력이 생성되지 않음. +', '제동 7단 취급 시 정상적인 제동압력이 생성된 경우 소거', 'MCS 모드로 전환 후, 마스콘을 N(중립) → 제동 7단까지 수 회 취급하여 소거 여부 확인, 제동 취급 확인 후, 주의 운전할 것, 지속발생 시 관제보고하고 지시에 따를 것', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('688188e7-31bd-4c49-a878-984daebed24b', '0866', '866', '통합제어기(AVC) 음원없음(Car#8)', 'Tc2', 'C', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('68847007-675e-4fa5-9dae-ef033b13d0b6', '0738', '738', 'HVAC#8-전자접촉기 증발기3(CREF) 고장', 'Tc2', 'C', 'HVAC-전자접촉기 증발기3(CREF) 고장', 'C', 'HVAC', 'HVAC 냉방작동 중 CREF3 전자접촉기 고장 발생.', 'UNIT2 냉방 작동 불가', '냉방작동 중 2.5초 이상동안 CREF3 작동 feedback 신호가 수신되지 않는 경우', 'CREF3 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CREF3을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CREF3과 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('688a6fed-004b-44fa-a532-988cab9d0960', '1505', '1505', '기타장치용 AC 회로차단기 차단(Car8)', 'Tc2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('688d4019-1161-492a-9aca-ffa2dfffb0de', '0514', '514', 'DCU#5 3위(R2) - 출입문 닫힘 시간 초과', 'T2', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 “Close time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 닫힘 동작 시간이 7초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도한 후, ‘장애물로 인한 닫힘 실패' 고장과 함께 ‘Close time out' 고장이 함께 현시 +', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('6891bd8c-a5c3-4a37-957c-33d496df8533', '0161', '161', 'VVVF#7-통합제어장치 이상검지(CPUWDTD)', 'M4', 'C', 'VVVF-마이컴이상(TCU)(CPUWDTD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT32의 Bit2 “CPUWDTD” 신호가 "1"이 되면 검지.', null, '통합제어기 내 CPU고장에 의한 Watch Dog Timer 카운터 정지시 고장검지.', '동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) 판토 하강상태에서 인버터 재 기동 후 해당 고장 재발여부를 확인한다. +2) 추진제어장치 시험기를 이용하여 TCU(통합제어장치)의 이상여부를 확인한다. +3) 상기 점검부에 이상이 있는 경우 TCU(통합제어장치)를 교체한다.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('6891c839-3aca-4bb8-81ec-1a7947ce02dd', '0520', '520', 'DCU#8 5위(R3)-이중계 절체 동작', 'Tc2', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 "Module switchover' 신호가 "1"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('68933217-6d9f-4004-80fc-163cebb65379', '0504', '504', 'DCU#3 1위(R1) - 출입문 외부 비상핸들 취급(EAD)', 'M2', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('689f3ad5-fc14-472d-85f5-5ccca0978f3b', '0123', '123', 'VVVF-역행/회생 이상 검지(PBF) (Car2)', 'M1', 'C', 'VVVF-역행/회생 이상 검지(PBF)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT33의 Bit4 “PBF” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 '역행/회생 신호이상검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치 입력되는 역행/제동신호가 동시에 입력될 경우 검지됨.', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반배전반의 VVVFIC nfb 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 역행/제동신호에 이상이 있는지 확인한다.. +3) 차량의 제어회로 중 역행/제동 신호가 추진제어장치로 연결되는 경로에 이상이 없는지 확인한다. +4) DIN 보드의 동작상태를 시험기를 통해 확인한다. +5) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.578803+00', null, '다대48량(2015)', 'Rotem'), ('689f5936-800d-4d42-9545-e3bf525470b4', '0751', '751', 'HVAC#2 - 냉난방장치1 보조히터 과열', 'M1', 'C', 'HVAC-냉난방장치1 보조히터 과열', 'C', 'HVAC', 'HVAC1 보조난방기 작동 중 과열 발생 +', 'UNIT1보조난방기난방불가', '보조난방기 작동 중 1초 이상 동안 온도가 70도 이상으로 과온 센서 정상신호가 수신 되지 않는 경우 +', '1초 이상 동안 60도 미만으로 온도가 떨어져 과온 센서 정상신호가 수신되는 경우', '1) 보조난방기가 꺼진 상태에서도 문제 발생 시, 과온 센서를 교체한다. +2) 센서 교체 후에도 문제가 발생되면, 배선에 문제가 없는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('68a568ac-c1ba-4013-8f82-fc0ad55ba07f', '0100', '100', 'VVVF#7 통신고장', 'M4', 'B', 'VVVF-통신고장', 'B', 'VVVF', 'VVVF와 TCMS 간 RS485 통신고장이 검지되면 발생 +', 'TCMS 화면에 고정정보 현시되며, 추진제어장치상태화면에 나타나는 데이터에 변동이 없음.', 'TCMS-추진제어장치(VVVF)간 통신정보가 3초 이상 동일한 정보로 유지되면 통신고장을 검지함. +', 'TCMS-추진제어장치(VVVF) 간 통신정보가정상적으로 통신이 될 경우 소거됨.', '1) 추진제어장치(VVVF) 리셋 실시 후 통신고장 소거됨을 확인 +2) 통신고장 소거가 되지 않을 경우 추진제어장치 PUZ 보드 신품으로 교체 후 통신고장 소거여부 확인 +3) 위 조건에도 고장이 소거되지 않을 경우, TCMS-추진제어장치 간 RS485 통신케이블 연결 상태 점검', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('68c0ca0b-0f32-4475-b499-793972003d52', '0160', '160', 'VVVF#7 - 게이트전원전압 이상(GPLVD)', 'M4', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('68cca590-7850-453f-a12a-ba643dcbbe2b', '0710', '710', 'HVAC#1-냉난방장치2 압력스위치2(DPS) 고압', 'Tc1', 'D', 'HVAC-냉난방장치2 압력스위치2(DPS) 고압', 'D', 'HVAC', '냉난방장치2 냉매 압력스위치2 고압 발생.', 'UNIT2 CYCLE2 냉방 기능 불가', 'UNIT2 DSP2측 냉매 압력이 3초 이상 28±1(kgf/cm2) 이상 되는 경우', '냉매 압력이 정상 수치 15±0.7(kgf/cm2 이하로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CRCM4의 부하측 전류를 측정하여 응축기 팬의 동작여부를 확인한다. +2) 응축기 코일의 전면에 이물질로 인한 막힘이 있는지 확인한다. +3) 응축기 팬 상부 그릴에 외부 이물질로 인한 막힘이 있는지 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('68db419b-cef8-4627-b2c7-5360de69e7e6', '0859', '859', '실내카메라#3(SCAM) 고장(Car#6)', 'M3', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('68dfdd04-eb76-467e-a79d-d3842ac5fb27', '0842', '842', '출력증폭기#2(AMP) 고장(Car#4)', 'T1', 'C', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('68ef1b40-b651-45d9-a2f2-4d97a465c0d0', '0501', '501', 'DCU#3 2위(L1) - 출입문 차단', 'M2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('68fc2292-cd45-4ce8-9e98-f13db7b8cc3d', '1500', '1500', '출입문 회로차단기 차단(Car7)', 'M4', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('691364ad-daa9-461e-8f74-f9d6d23141df', '0039', '39', 'DeadMan 스위치-경고', 'Tc2', 'W', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('69325960-91b2-4284-a0ad-044d66e55998', '1703', '1703', '노선안내표시기#1 고장(Car1)', 'Tc1', 'C', '노선안내표시기#1 고장', 'C', 'PIC', 'PIC 장치의 노선안내표시기#1이 고장이 났을 때 발생 +', '1) 노선안내표시기 화면 미현시 +2) 노선안내표시기 안내 화면 오현시', '통신고장 +', '통신 재개 시', '1) 이더넷 스위치 링크 확인 +2) 이더넷 케이블 점검 +3) 제어보드 및 전원보드 교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('6933b390-f42d-4f1a-ab9a-afadc0ce81b9', '0502', '502', 'DCU#4 2위(L1) - 출입문 장애물검지', 'T1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('69374100-9236-4e2a-8319-80108e551fca', '0212', '212', 'BECU#8-1축속도신호의 비정상', 'Tc2', 'C', 'BECU-1축속도신호의 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit3 “1축속도신호의 비정상” 신호가 "1"이 되면 검지.', '해당 차량 1축속도신호의 비정상 검지 현시 및 해당 차량 활주제어 불가.', '해당 차량의 1축 속도센서 고장 발생.', '해당 차량의 1축 속도센서가 정상적일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('6939cdf1-509c-4c11-9bd5-fce39c4461d9', '0216', '216', 'BECU#3-전두대차 AS압력센서고장', 'M2', 'C', 'BECU-전두대차 AS압력센서 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit7 “전두대차 AS압력센서 고장” 신호가 "1"이 되면 검지.', '해당 차량 전두대차 AS압력센서 고장 검지 현시 및 해당차량 정상적인 응하중 제동제어 불가.', '해당 차량의 전두대차 AS 압력센서(AS1, AS2) 고장.', '해당 차량의 전두대차 AS 압력센서(AS1, AS2)가 정상일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('693ca976-8ee0-449d-9ba3-9d76c2544cec', '0506', '506', 'DCU#6 4위(L2)-출입문 입력 저전압', 'M3', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 "1"이 되면 검지.', '저전안 상태 (출입문 동작이 심하게 느려지거나 작동조차 안될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('69410d6c-33d8-45a0-8b8f-b5f6c9287cb4', '0207', '207', 'BECU#5 - 자기진단 고장', 'T2', 'C', 'BECU-자기진단고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit6 “RAM 점검 고장” 신호가 “1”이 되면 검지 +', '해당 차량 자기진단 고장검지 현시 및 해당 차량 활주제어 불가', '해당 차량 BECU의 자가진단 시 고장 발생(활주방지밸브 고장) +', '해당 차량 BECU의 자가진단 시 정상적일 경우 소거(활주방지밸브 정상)', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('6943a1bb-d5e2-4e88-a168-2192f8216e76', '0502', '502', 'DCU#3 5위(R3) - 출입문 장애물검지', 'M2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('6943aac5-2819-4863-92c6-443299921ef6', '0730', '730', 'HVAC#3 - 냉난방장치1 토출 센서 고장', 'M2', 'C', 'HVAC-냉난방장치1 토출 센서 고장', 'C', 'HVAC', '냉난방장치1의 토출 센서 고장 발생 +', '냉난방장치1 토출 센서 고장현시', '온도센서 검지범위는 -45 ~ 85도(820 ~ 1,330Ω)인데, 2초 이상 검지범위를 벗어나는 경우 +', '온도센서 검지값이 2초 이상 허용온도 범위 내일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820 ~ 1,330Ω을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('694a109d-fa08-4742-9ab9-7b3ebb1df03d', '0734', '734', 'HVAC#1 - 전자접촉기 압축기(CRCM)3 고장', 'Tc1', 'C', 'HVAC-전자접촉기 압축기(CRCM)3 고장', 'C', 'HVAC', 'HVAC 냉방 작동 중 CRCM3 전자접촉기 고장 발생 +', '냉방 기능 저하(전냉방 시 반냉방으로 작동)', '냉방 작동 중 2.5초 이상 동안 CRCM3 작동 feedback 신호가 수신되지 않는 경우 +', 'CRCM3 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CRCM3을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRCM3과 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('69543ddc-0ea3-4bca-b951-4177c1210310', '0145', '145', 'VVVF#2-과온검지2(THDH)', 'M1', 'C', 'VVVF-과온검지2(THDH)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT30의 Bit2 “THDH” 신호가 "1"이 되면 검지.', null, '인버터 내부 온도가 105 °C이상 도달 시 고장발생.', '95 °C 이하 도달 및 노치 OFF +(소거 이전까지 운전 불가)', '1) 상기고장이 간헐적으로 발생하는경우 아래와 같이 조치한다. +2) 상온에서 TCU(통합제어기)에 RS232케이블을 이용하여 노트북(제공품)과 연결 후 모니터링 프로그램으로 인버터의 온도값을 확인한다. +3) 인버터 유니트의 온도센서 배선 및 커넥터 체결상태를 확인한다. +4) 추진제어장치의 냉각부에 손상이 없는지 확인한다. +5) 추진제어장치 시험기를 이용하여 TCU(통합제어장치)의 이상여부를 확인한다. +6) 상기의 점검부분에 이상이 있을 경우 관련부품을 교체한다. +7) 동일 고장이 지속적으로 발생 시 INV 스택을 교체한다.', null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('6962e51a-341b-4de0-99f8-7ff2596eef51', '0516', '516', 'DCU#7 1위(R1)-출입문 장애물로 인한 닫힘 실패', 'M4', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Close failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림상태로 대기', '도어 닫힘 중 3회 장애물 감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('696874eb-8eb5-4b2b-8e1d-86c97d4a181e', '0230', '230', 'ECU 전원공급 고장(Car8)', 'Tc2', 'B', 'ECU 전원공급 고장', 'B', 'BECU', '해당차량의 ECU 전원공급 고장 (CB OFF) 발생 시 검지', '해당차량의 ECU 전원공급 고장 검지 현시', '해당차량의 ECU 전원차단 (CB OFF)', '해당차량의 ECU 전원공급 (CB ON)', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속적으로 고장 발생시 관제보고하고 지시에 따를 것.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('696dc12e-e182-4ddf-98e0-a66fb13e65da', '1104', '1104', 'PSD#1 - 차상 메모리고장(1계)', 'Tc1', 'C', 'PSD-차상 메모리고장', 'C', 'PSD', 'PSD의 RS485 데이터 중 PSD-TCMS SD TEXT5(TEXT6)의 Bit6 “차상 메모리고장” 신호가 “1”이 되면 검지(차상제어장치 로그 기록용 메모리 고장) +', '차상장치 이벤트 발생 시(각종 신호) +1) 출입문 열림, 마스콘 KEY ON 등등 +2) PSD 열림 닫힘이 연동되는 역사, 연동되지 않는 역사가 있음. +3) PSD 고장코드가 지상설비로 전달되면 차상 ERROR 코드 Interlock 회로에 의하여 차단될 수 있으며 이 회로 가 적용된 역사는 PSD가 가동되지 않는다. +4) 그 외 역사는 전동차 출입문에 따라 가동됨.', '로그기록용 메모리 고장 +', '1) 메모리 고장이라도 무선통신 기능은 정상 동작하므로 기관사는 전동차출입문 개/폐 시 PSD 상태를 주의하여 확인하고, 차상장치 메모리 고장 코드로 인하여 PSD 열림 및 닫힘이 동작하지 않는 역사는 조작반으로 수동취급 실시한다. +2) 기관사는 주의 운행을 한다. +3) 차량 사업소 복귀 시 해당장치는 점검을 하도록 한다.', null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('696dd051-cb07-48f0-87fb-81a559122b52', '0502', '502', 'DCU#6 4위(L2)-출입문 장애물검지', 'M3', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('6977dca6-9b47-4704-9d26-ee3f7ba77b90', '0897', '897', '비상인터폰 동작(Car#2-2)', 'M1', 'W', null, null, 'RADIO', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('698e2fad-1bf7-46fd-b54a-cf1111f650a8', '1526', '1526', 'TCMS 데이타버스2 우측라인 통신 이상(Car4)', 'T1', 'C', 'TCMS 데이터버스2 우측라인 통신 이상', 'C', 'TCMS', 'TCMS의 초기 기동 시 자기진단에 의한 2중계 메인통신선 중 2계 메인통신 이상 검지 시 +', '1) SL-NET 2중계이므로 데이터버스 1계로 정상통신, 운행에 지장 없음. +2) 초기기동 자기진단 시 2중계를 점검하여 2계측의 이상이 검지되었다는 점검 필요용 메시지', '초기 기동 시 SL-NET 1계와 2계를 각각 통신 후 비교하여 1계는 정상통신이 되나 2계는 정상통신이 안 되는 경우 +', '정상 수리 후 차량 전체 재기동하여 SL-NET 1계와 2계 모두 정상통신이 되는 경우', '1) 고장검출호차와 고장검출 우측호차와의 SL-NET 통신 2계 정상여부 확인(예 : 고장호차가 3호차인 경우, 1-2-3-4-5-6-7-8에서 3호차의 우측 즉, 3-4호차간 SL-NET 2계 통신 상태 점검 필요) +2) 고장검지호차의 SCM PCB 교체 정상여부 확인 +3) 고장검지호차의 우측호차 SCM PCB 교체 정상여부 확인 +4) 고장검지호차와 고장검지 우측호차의 SL-NET 2계 메인통신 배선의 연결 상태 확인 +5) 2 ~ 4번에도 정상적으로 복귀되지 않는 경우, CU/TU ASS'Y 교체(백보드 확인 필요)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('699d1e6c-44ac-4ba2-a796-1f638f54f97b', '0500', '500', 'DCU#6 5위(R3) 통신고장', 'M3', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS 간 RS485 통신고장이 검지되면 발생 +', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐상태 등의 변화가 없음.', ' +1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우 +', '해당 차량의 DCU 및 CU/TU의 전원이 정상상태이고, 통신 라인 연결 상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜져 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적 으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는 데도 지속적으로 통신고장이 검지되면, DCU의 X2, X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상 체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('69a244c6-6fe5-40bb-b5ae-f9c5dfd25d90', '1507', '1507', '판토코크#1 차단(Car2)', 'M1', 'W', '판토코크#1차단', 'W', 'CMSB', '차량으로부터 NO PANTOGRAPH CUT-OUT COCK#1(#2) 신호 미입력시', '판토 하강상태에서 해당 코크 조작시 상승 불가', '해당 코크 조작시', '해당 코크 정상 위치로 조작', null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('69a7e209-dcfc-476b-a3f8-46dd71a50ef3', '0515', '515', 'DCU#6 2위(L1) - 출입문 열림 시간 초과', 'M3', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 “Open time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 열림 동작시간이 6초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도한 후, ‘장애물로 인한 열림 실패' 고장과 함께 ‘Open time out' 고장이 함께 현시 +', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('69af3348-2576-41a0-b87b-d9c7f09df6ae', '0420', '420', 'SIV#8 - 인버터2 입력과전류(INV2OC)', 'Tc2', 'C', 'SIV-인버터2 입력 과전류(INV2OC)', 'C', 'SIV', '보조전원장치(SIV)의 RS485 데이터 중 SIV-TCMS SD TEXT6의 Bit5 “INV2OC” 신호가 “1”이 되면 검지 +', '1) TCMS 화면하단 또는 고장화면에 ‘인버터2 입력 과전류' 표시됨. +2) 보조전원장치(SIV)는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 보조전원장치 중고장이 발생됨. +5) 중고장이 발생되면 TCMS 일반화면에 보조전원장치 상태 붉은색으로 표기되며, 연장급전 됨.', '보조전원장치(SIV) 내부인버터2에서의 전류가 450A 이상일 경우 검지됨. +', '1) 경고장이 발생할 경우 보조전원장치(SIV) 자동 재기동에 의해 재기동 됨. +2) 중고장이 발생했을 경우 조치 완료 후 보조전원장치(SIV) 리셋으로 고장 소거됨.', '1) 상기 고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 보조전원장치(SIV) 고장기록을 수집하여 FC전압, 전류에 이상이 있는지 확인한다. +3) 보조전원장치(SIV) 내부 고전압부에 소손흔적이 있는지 확인한다. +4) FC에 연결된 부스바의 체결상태가 양호한지 확인한고, 부스바를 분리하여 FC의 Capacitance를 측정하여 이상이 없는지 확인한다. +5) 전압센서와 보조전원장치(SIV) 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +6) SEN 보드의 동작 상태를 시험기를 통해 확인한다. +7) 출력단 각상의 절연상태 및 각상과 접지 간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('69b0fc03-62d5-48a8-84f2-005eac238d49', '0701', '701', 'HVAC#6-냉난방장치2 압축기2 과부하', 'M3', 'C', 'HVAC-냉난방장치2 압축기2 과부하', 'C', 'HVAC', 'HVAC 냉방작동 중 냉난방장치2 압축기2 또는 응축기2 모터에 과부하 발생.', '냉방 기능 저하(전냉방시 반냉방으로 작동)', '1) 냉방작동 중 UNIT2의 압축기2 또는 응축기2 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRCM4와 연결된 THR4가 Trip 됨.', 'UNIT2의 압축기2 또는 응축기2 모터의 과부하 조건을 해소하여 정상 가능 상태로 만들고, THR4 및 마이콤 전원 리셋', '1) 냉난방배전반의 점검커버를 열고, THR4의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR4의 전류 세팅값이 11.5A에 맞춰져 있는지 확인하여, 아닐 경우, 십자 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동 시킨 후, THR4의 2차측 2,4,6 단자에서 각 단자간 상간 전압이 AC 380V으로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 압축기 및 응축기 단품 상태에서 점검을 한다. +7) THR4의 2차측 2,4,6 단자에서 각 단자간 권선저항이 모두 같은지 확인한다. (±10% 이하) (압축기2 및 응축기2 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT2의 압축기2 또는 응축기2 모터의 결선을 해제한 후 각 부품의 권선저항을 확인 후, 문제가 있는 부품을 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR4 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('69b941f6-e523-40e5-92a8-d1a040d1b4b6', '0520', '520', 'DCU#8 3위(R2)-이중계 절체 동작', 'Tc2', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 "Module switchover' 신호가 "1"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('69bc8a87-4128-4756-8f6c-c66a81d90a1f', '1105', '1105', 'PSD#1-차상 RF고장(1계)', 'Tc1', 'C', 'PSD-차상 RF고장', 'C', 'PSD', 'PSD 의 RS485 데이터 중 PSD-TCMS SD TEXT5(TEXT6)의 Bit7 “차상 RF 고장” 신호가 "1"이 되면 검지. (차상장치 RF 고장)', 'PSD 지상장치 통신 연결 또는 전원 ON시 NG발생 +역사내 진입전 NG 발생 -> 역사내 진입후 NG 복귀 등의 현상이 일어날 경우', '차상장치내 무선모듈의 불량이 주원인이며, 설정 및 채널 변경오류시 발생됨.', '운전실 후부 PSD CN을 OFF - ON 실시하고 복귀가 되지 않을 경우 PSD 조작반을 취급하여 운행한다. 차량사업소 복귀후 해당 차상장치 점검을 한다.', null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('69c00aa7-df5f-479b-a06f-fb6c10ebbf63', '0521', '521', 'DCU#4 2위(L1)-모듈 상태 이상', 'T1', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 "01"또는 "00"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('69c2a2d3-e146-4856-9500-d97140eef2ed', '0506', '506', 'DCU#4 4위(L2) - 출입문 입력 저전압', 'T1', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 “1”이 되면 검지 +', '저전압상태(출입문 동작이 심하게 느려지거나 작동조차 안 될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하 +', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('69c30b6c-8456-4d79-9eec-952d0f6e7af6', '0500', '500', 'DCU#2 6위(L3) 통신고장', 'M1', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS간 RS485 통신고장이 검지되면 발생.', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐 상태 등의 변화가 없음.', '1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우', '해당차량의 DCU 및 CU/TU 의 전원이 정상상태이고, 통신라인 연결상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜저 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는데도 지속적으로 통순고장이 검지되면, DCU의 X2,X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('69c62d37-30fb-49ca-8c79-7b113729a48e', '0174', '174', 'VVVF#2-통합제어장치-PWM제어장치간 신호이상 검지(ERRDIO)', 'M1', 'C', 'VVVF-DI 이상(TCUPWM)(ERRDIO)', 'C', 'VVVF', 'VVVF의 RS485 데이�� 중 VVVF-TCMS SD TEXT33의 Bit7 “ERRDIO” 신호가 "1"이 되면 검지.', null, 'PWM보드와 TCU(통합제어기)간 디지털신호의 이상 발생 시 검지.', '동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) 각 PWM 보드 전면의 LED점등을 확인하고 이상 발생 시 재 체결한다. +2) PWM 제어기 내부 PCB상태를 육안으로 점검한다. +3) 각 PWM보드의 CN1, CN2 커넥터를 분리하여 핀 상태 및 배선상태를 확인한다. +4) TCU(통합제어장치)의 PUZ 보드의 후면의 커넥터 삽입상태를 확인하고 이상 발생 시 재 체결한다. +5) TCU(통합제어장치)의 PUZ 보드 후면의 제어배선 중, TRX11P, TRX11F, TRX11G 배선의 연결상태 및 배선의 단선 여부를 확인한다. +6) 상기 점검 시 이상이 없을 경우 PUZ 보드를 교체한다.', null, '3', '2025-10-12 01:21:37.578803+00', null, '로템40량(2018)-1단계', 'Rotem'), ('69c71490-ff22-4296-8bff-704c23d7206f', '0201', '201', 'BECU#6-덤프밸브고장(후미대차)', 'M3', 'C', 'BECU-덤프밸브고장(후미대차)', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit0 “덤프밸브고장(후미대차)” 신호가 "1"이 되면 검지.', '해당 차량 덤프밸브고장(후미대차) 검지 현시 및 해당 차량 활주제어 불가.', '해당 차량 후미대차의 덤프밸브가 작동하지 않음.', '해당 차량 후미대차의 덤프밸브가 정상 작동 시 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('69dcb57e-da2b-43d9-a626-80c735f83d77', '0517', '517', 'DCU#8 1위(R1)-출입문 장애물로 인한 열림 실패', 'Tc2', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Open failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘상태로 대기', '도어 열림 중 3회 장애물 감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 열림 시, 장애물 감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('69eec1dd-1c66-46f3-977b-d79aa2e9c04b', '0512', '512', 'DCU#3 4위(L2)-파라미터 로딩 실패', 'M2', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 "Paraneter error” 신호가 "1"이 되면 검지.', 'Parameter error 현시 (출입문은 정상작동 가능)', 'DCU 자체내의 EEPROM으로부터 parameter 데이터 로딩 실패', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('69f2ea12-d745-4b4d-90c8-4b2ea52f9443', '0502', '502', 'DCU#7 5위(R3) - 출입문 장애물검지', 'M4', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('69f72bd2-3d97-4da9-9e7d-b255e80d799b', '0502', '502', 'DCU#5 5위(R3)-출입문 장애물검지', 'T2', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('69fadcc0-97a8-44ef-944d-e1902aa4cfb9', '0707', '707', 'HVAC#5-냉난방장치2 증발기1 과부하', 'T2', 'C', 'HVAC-냉난방장치2 증발기1 과부하', 'C', 'HVAC', 'HVAC 냉방작동 중 냉난방장치2 증발기 모터에 과부하 발생.', 'UNIT2 냉방 기능 불가', '1) 냉방작동 중 UNIT2의 증발기 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CREF3과 연결된 THR7이 Trip 됨.', 'UNIT2의 증발기 모터의 과부하 조건을 해소하여 정상 가능 상태로 만들고, THR7 및 마이콤 전원 리셋', '1) 냉난방배전반의 점검커버를 열고, THR7의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR7의 전류 세팅값이 3A에 맞춰져 있는지 확인하여, 아닐 경우, 십자 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동 시킨 후, THR7의 2차측 2,4,6 단자에서 각 단자간 상간 전압이 AC 380V으로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 증발기 단품 상태에서 점검을 한다. +7) THR7의 2차측 2,4,6 단자에서 각 단자간 권선저항이 모두 같은지 확인한다. (±10% 이하) (증발기 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT2의 증발기 모터의 결선을 해제한 후 4극 및 6극 모터의 권선저항을 확인 후, 문제가 있을 겨우, 증발기 모터를 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR7 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('6a082884-98de-45bc-ae27-e576b65c35b7', '0716', '716', 'HVAC#2-냉난방장치1 압력스위치1(DPS) 고압', 'M1', 'D', 'HVAC-냉난방장치1 압력스위치1(DPS) 고압', 'D', 'HVAC', '냉난방장치1 냉매 압력스위치2 고압 발생.', 'UNIT1 CYCLE1 냉방 기능 불가', 'UNIT1 DSP1측 냉매 압력이 3초 이상 28±1(kgf/cm2) 이상 되는 경우', '냉매 압력이 정상 수치 15±0.7(kgf/cm2 이하로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CRCM1의 부하측 전류를 측정하여 응축기 팬의 동작여부를 확인한다. +2) 응축기 코일의 전면에 이물질로 인한 막힘이 있는지 확인한다. +3) 응축기 팬 상부 그릴에 외부 이물질로 인한 막힘이 있는지 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('6a0a058a-4397-4d72-becf-b8d99d29d3aa', '0220', '220', 'BECU#7-공기제동 감쇄지령 비정상', 'M4', 'C', 'BECU-공기제동 감쇄지령 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit3 “공기제동 감쇄지령 비정상” 신호가 "1"이 되면 검지.', '해당 차량 공기제동 감쇄지령 비정상 검지 현시 및 해당차량 정상적인 전공 교차제어 불가.(부수차량 공기제동 감쇄 불가)', '해당 차량의 공기제동 감쇄지령 신호가 정상범위를 벗어남(5.0~95.0%).', '해당 차량의 공기제동 감쇄지령 신호가 정상범위일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. +소거되지 않을 경우 해당 차량 옆의 Pair 차량(구동차) BECU를 리셋(CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('6a0b7f8e-8903-4d15-8dce-9a413142eae4', '0747', '747', 'HVAC#7 - 전자접촉기 차량히터2(CRRHT) 고장', 'M4', 'C', 'HVAC-전자접촉기 차량 히터2(CRRHT) 고장', 'C', 'HVAC', '객실 난방기 작동 중 CRRHT2 전자접촉기 고장 발생 +', '객실 전난방 시 1/3난방만 작동', '객실 전난방 작동 중 2.5초 이상 동안 CRRHT2 작동 feedback 신호가 수신되지 않는 경우 +', 'CRRHT2 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CRRHT2를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRRHT2와 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('6a141796-1914-4137-80d4-98194bc0578a', '0507', '507', 'DCU#8 2위(L1) - 초기화 실패', 'Tc2', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 “Calibration failure” 신호가 “1”이 되면 검지 +', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터 고장, 장애물감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우 +', '초기화 실패를 야기한 고장코드를 확인하여 조치 후, 재닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인한다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('6a3315a2-d4e8-4960-8931-b05525ade180', '0145', '145', 'VVVF#3 - 과온검지2(THDH)', 'M2', 'C', 'VVVF-Stack 과온검지2(THDH)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT30의 Bit2 “THDH” 신호가 “1”이 되면 검지 +', '1) TCMS 화면 하단 또는 고장화면에 ‘스택과온검지2' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동이 되지 않으며 중고장으로 처리됨. +3) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉은색으로 표기되며, HSCB, LB1, 2 개방되어 동력 손실 발생함.', '추진제어장치 냉각기의 온도가 105도 이상인 조건에서 검지 +', '추진제어장치 리셋으로 고장 소거됨.', '1) 상기고장이 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 냉각기의 손상이 없는지 확인한다. +3) 추진제어장치 내부에 IPM에 손상이 없는지 확인한다. +4) 인버터 유니트 내부에 온도센서 및 결선에 이상이 없는지 확인한다. +5) DIN 보드의 동작 상태를 시험기를 통해 확인한다. +6) IPM 전원공급기의 전원연결 상태 또는 광케이블의 연결 상태와 배선상태를 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지 간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('6a37b458-e77a-4891-80be-14dedef2ef54', '0505', '505', 'DCU#4 6위(L3)-출입문 입력 고전압', 'T1', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 "1"이 되면 검지.', '고전압 상태. (그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('6a3a747f-281a-4c8d-8c25-06155a5b2789', '0103', '103', 'VVVF#7-추진차단(P BLOCK)', 'M4', 'D', null, null, 'VVVF', null, null, null, null, null, null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('6a4479fc-0d81-4ba2-958c-656a5f3cf96e', '0501', '501', 'DCU#2 4위(L2)-출입문 차단', 'M1', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('6a4c138a-b966-46b8-b548-cf046e834044', '0507', '507', 'DCU#8 3위(R2) - 초기화 실패', 'Tc2', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 “Calibration failure” 신호가 “1”이 되면 검지 +', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터 고장, 장애물감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우 +', '초기화 실패를 야기한 고장코드를 확인하여 조치 후, 재닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인한다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('6a52b5ab-4372-4d5e-85a5-f62db6cc14f2', '0163', '163', 'VVVF#7 - FC과전압검지2(OVD2)', 'M4', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('6a57234d-13ff-4f7c-b4d2-c56657fbd6c8', '0235', '235', '제동력부족(ISBD, Car1)', 'Tc1', 'B', '제동력부족(ISBD)', 'B', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit3 “ISBD” 신호가 “1”이 되면 검지 +', '해당 차량 제동력부족검지 현시 및 해당 차량 제동압력(BCP)이 타 차량에 비해 현저히 낮음.', '제동 7단 취급 시 해당 차량의 제동압력이 생성되지 않음. +', '제동 7단 취급 시 정상적인제동압력이 생성된 경우 소거', 'MCS 모드로 전환 후, 마스콘을 N(중립) → 제동 7단까지 수 회 취급하여 소거 여부 확인, 제동 취급 확인 후, 주의 운전할 것, 지속발생 시 관제보고하고 지시에 따를 것', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('6a5a0e0d-44ab-4c98-91fa-0179d9d91381', '0521', '521', 'DCU#3 2위(L1)-모듈 상태 이상', 'M2', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 "01"또는 "00"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('6a7fa01f-2451-4ab9-a777-54149cc69dae', '0215', '215', 'BECU#6 - 후미대차 AS 압력센서 고장', 'M3', 'C', 'BECU-후미대차 AS 압력센서 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit6 “후미대차 AS 압력센서 고장” 신호가 +“1”이 되면 검지 +', '해당 차량 후미대차 AS 압력센서 고장검지 현시 및 해당 차량 정상적인 응하중제동제어 불가', '해당 차량의 후미대차 AS 압력센서(AS3, AS4) 고장 +', '해당 차량의 후미대차 AS 압력센서(AS3, AS4)가 정상일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('6a874a36-99a0-47f8-8201-7538a921b0c5', '0805', '805', '측면제어기(SOB) 돌출형 고장(Car#1)', 'Tc1', 'C', '통합방송표시기-측면제어기(SOB) 돌출형 고장', 'C', 'AVC', '통합방송표시기의 E-NET 데이터 중 통합방송표시기-TCMS SD TEXT7의 Bit3 “SOB OUT 고장” 신호가 “1”이 되면 검지 +', '고장장치 통신불량으로 방송기능불능', '마스터통합방송제어기에 주기적(2초) TCP 응답이 없을 경우 통신불량으로 판단 +', '마스터통합방송제어기에 TCP 응답재개', '관련 CB(방송/표시기/CCTV 전원공급장치2, CBPAU# +2) 리셋하고 통신라인 및 상태점검 관련도면 :', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('6a907290-5e8f-4dde-a0d3-37b338165744', '1503', '1503', '난방장치용 AC 회로차단기 차단(Car2)', 'M1', 'W', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('6aa1ebf8-1440-4d52-a4e5-f1521404a355', '0422', '422', 'SIV#1 - 인버터2 과온검지(INV2THF)', 'Tc1', 'B', 'SIV-인버터2 과온검지(INV2THF)', 'B', 'SIV', '보조전원장치(SIV) 의 RS485 데이터 중 SIV-TCMS SD TEXT6의 Bit7 “INV2THF” 신호가 “1”이 되면 검지 +', '1) TCMS 화면하단 또는 고장화면에 ‘SIV 인버터2의 스택 과온'표시됨. +2) 보조전원장치는 상기 고장검지 후 자동 재기동이 되지 않으며 중고장으로 처리함. +3) 중고장이 발생되면 TCMS 일반화면에 보조전원장치 상태 붉은색으로 표기되며, 연장급전 됨.', '보조전원장치(SIV)인버터2의 냉각기 온도가 105도 이상인 조건에서 검지 +', '1) 보조전원장치(SIV)인버터1의 냉각기 온도가 105도 미만으로 떨어졌을 시 +2) 보조전원장치(SIV) 리셋으로 고장 소거됨.', '1) 상기고장이 발생이 된 경우 아래와 같이 조치한다. +2) 보조전원장치(SIV) 냉각기의 손상이 없는지 확인한다. +3) 보조전원장치(SIV) 내부에 인버터 유니트 구성품에 손상이 없는지 확인한다. +4) 인버터 유니트 내부에 온도센서 및 결선에 이상이 없는지 확인한다. +5) DIN 보드의 동작 상태를 시험기를 통해 확인한다. +6) 인버터 유니트 구성품들의 배선상태와 광케이블의 연결 상태를 확인한다. +7) 부하단의 절연상태 및 접지 간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('6aad917c-356f-4e47-a952-cbb9eb1a340e', '0741', '741', 'HVAC#3-전자접촉기 보조히터4(AHEK) 고장', 'M2', 'C', 'HVAC-전자접촉기 보조히터4(AHEK) 고장', 'C', 'HVAC', 'HVAC 보조난방기 작동 중 AHEK4 전자접촉기 고장 발생.', 'UNIT2 보조난방기 전난방 시 반난방만 작동', '보조난방기 작동 중 2.5초 이상동안 AHEK4 작동 feedback 신호가 수신되지 않는 경우', 'AHEK4 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) AHEK4를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, AHEK4와 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('6aafa6bd-e8c3-4f73-8c1b-e881b61b9732', '0047', '47', '주공기압력 저하(Car1)', 'Tc1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('6ab51e72-73ae-4249-84ca-f963361d4176', '0739', '739', 'HVAC#8 - 전자접촉기 증발기2(CREF) 고장', 'Tc2', 'C', 'HVAC-전자접촉기 증발기2(CREF) 고장', 'C', 'HVAC', 'HVAC 냉방 작동 중 CREF2 전자접촉기 고장 발생 +', 'UNIT1 냉방 작동 불가', '냉방 작동 중 2.5초 이상 동안 CREF2 작동 feedback 신호가 수신되지 않는 경우 +', 'CREF2 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CREF2를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CREF2와 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('6ad9e338-7840-48c7-b860-80fc4430c580', '1201', '1201', 'FDU#2 - 감지기1 화재감지', 'M1', 'W', 'FDU-감지기1 화재감지 (Car1~8)', 'W', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 “Detector1 State” 신호가 “11”이 되면 검지 +', '화재상태현시(자동소거 안 됨.)', '하기 2가지 조건을 모두 만족하여야 화재신호가 출력 됨. (연동모드 동작) +1) 이웃한(앞 혹은 뒤에 위치한) 감지기 중 하나의 감지기라도 주의 혹은 화재상태에 있어야 함. +2) Detector1(해당 감지기)에서 측정된 연기농도가 15% 이상이거나 온도가 65℃ 이상인 경우 +', '1) FDU의 복귀버튼 조작 시 +2) FDU 전원 리셋 시', '1) 해당 감지기 위치의 화재 발생 여부 확인 +2) 화재 오감지일 경우 FDU의 복귀버튼 취급 +3) 오감지일 경우 감지기의 청소주기 확인(내부 먼지 제거)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('6ae754cf-9483-45e6-9d60-97a78f500291', '0205', '205', 'BECU#7-회생제동요구 비정상', 'M4', 'C', 'BECU-회생제동요구 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit4 “회생제동요구 비정상” 신호가 "1"이 되면 검지.', '해당 차량 회생제동요구 비정상 검지 현시.', '해당 차량의 회생제동요구 출력이 정상범위를 벗어남.', '해당 차량 회생제동요구 출력이 정상범위로 복귀 시 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('6ae97f5a-1419-4f6b-b108-0b36d3201927', '0509', '509', 'DCU#3 2위(L1) - 출입문 잠김 리미트 스위치 고장', 'M2', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 “DLS Failure” 신호가 “1”이 되면 검지 +', '출입문 잠김 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('6b07a6a5-540b-40f2-b5fe-1e421e7f68b7', '0713', '713', 'HVAC#7 - 냉난방장치1 압력스위치2(DPS) 저압', 'M4', 'D', 'HVAC-냉난방장치1 압력스위치2(DPS) 저압', 'D', 'HVAC', '냉난방장치1 냉매 압력스위치2 저압 발생 +', 'UNIT1CYCLE2 냉방기능불가', 'UNIT1DSP2측 냉매압력이 3초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우 +', '냉매압력이 정상수치 2±0.5(kgf/cm2) 이상으로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CREF2의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)를 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설 여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안 되는 것을 확인한 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('6b172e8c-9775-463d-898b-a35a2a8eca56', '0510', '510', 'DCU#3 3위(R2) - 출입문 닫힘 리미트 스위치1 고장', 'M2', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 “DCS1 Failure(Leftt)” 신호가 “1”이 되면 검지 +', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('6b23b06e-12ab-4aef-bd58-efda9cb70c9e', '0847', '847', '운전실카메라(CCAM) 고장(Car#8)', 'Tc2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('6b2abf91-5aa6-4124-97f8-2b795221fd04', '0214', '214', 'BECU#5-BC 압력센서고장', 'T2', 'C', 'BECU-BC 압력센서 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit5 “BC 압력센서 고장” 신호가 "1"이 되면 검지.', '해당 차량 BC압력센서 고장 검지 현시 및 해당차량 제동력 부족, 제동불완해 검지 불가.', '해당 차량의 BC압력센서 고장.', '해당 차량의 BC압력센서가 정상일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('6b31ec94-dc8f-4a3a-8e11-dc877a3c3011', '1207', '1207', 'FDU#2-감지기4 화재감지', 'M1', 'W', 'FDU-감지기4 화재감지', 'W', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 "Detector1 State” 신호가 "11"이 되면 검지.', '화재상태 현시(자동 소거 안됨)', '하기 2가지 조건을 모두 만족하여야 화재신호가 출력 됨(연동모드 동작). +1) 이웃한(앞 혹은 뒤에 위치한) 감지기 중 하나의 감지기라도 주의 혹은 화재상태에 있어야 함. +2) Detector1(해당 감지기)에서 측정된 연기농도가 15% 이상이거나 온도가 65℃ 이상인 경우', '1) FDU의 복귀버튼 조작시 +2) FDU 전원 리셋시', '1) 해당 감지기 위치의 화재 발생 여부 확인 +2) 화재 오 감지일경우 FDU의 복귀버튼 취급 +3) 오감지일경우 감지기의 청소주기 확인(내부 먼지 제거)', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('6b344a4d-e206-40aa-b783-6b408e90c357', '1209', '1209', 'FDU#1-스위치 고장', 'Tc1', 'C', 'FDU-스위치 고장', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT5의 Bit4 “Switch Fault” 신호가 "1"이 되면 검지.', 'Switch Fault 현시 및 FDU의 조작 버튼 동작 안됨(화재 검지 및 기타 기능에는 상관없음)', '1) FDU가 부팅될때 스위치가 눌려진 상태(3.3V 전압이 인가된 상태)인 경우 +2) FDU가 부팅될때 스위치 고장으로 인하여 항상 눌러진 상태(3.3V 전압이 인가된 상태)에 있는 경우.', 'FDU가 부팅될때 스위치가 눌려진 상태(3.3V 전압이 인가된 상태)가 아닌 경우 +조치조건 : +1) 고장이 발생한 수신기의 스위치 상태 확인 및 점검 +2) FDU의 전원을 리셋하여 소거여부 확인 +3) 문제가 지속될 경우, 수신기 교체', null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('6b37d6aa-0e34-4e0b-bfd7-3d2c3ac62873', '0507', '507', 'DCU#7 6위(L3) - 초기화 실패', 'M4', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 “Calibration failure” 신호가 “1”이 되면 검지 +', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터 고장, 장애물감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우 +', '초기화 실패를 야기한 고장코드를 확인하여 조치 후, 재닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인한다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('6b4141ce-5cfc-49d1-bd97-ff9b3cdb9f25', '0219', '219', 'BECU#2-제동지령 비정상', 'M1', 'C', 'BECU-제동지령 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit2 “제동지령 비정상” 신호가 "1"이 되면 검지.', '해당 차량 제동지령 비정상 검지 현시 및 해당차량 정상적인 제동제어 불가. (상용제동지령에 따른 제어)', '해당 차량의 제동지령 신호가 정상범위를 벗어남(5.0~95.0%).', '해당 차량의 제동지령 신호가 정상범위일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. +소거되지 않을 경우 해당 선택 운전실의 PWM 엔코더를 리셋(CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('6b4c66c7-5f90-48a7-9e3d-7e87f1cc51ae', '0240', '240', 'BECU#7-2축스키드신호', 'M4', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('6b5cdfe9-cda0-4c3d-8847-0cb3c6b1b00d', '1205', '1205', 'FDU#6-감지기3 화재감지', 'M3', 'W', 'FDU-감지기3 화재감지', 'W', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 "Detector1 State” 신호가 "11"이 되면 검지.', '화재상태 현시(자동 소거 안됨)', '하기 2가지 조건을 모두 만족하여야 화재신호가 출력 됨(연동모드 동작). +1) 이웃한(앞 혹은 뒤에 위치한) 감지기 중 하나의 감지기라도 주의 혹은 화재상태에 있어야 함. +2) Detector1(해당 감지기)에서 측정된 연기농도가 15% 이상이거나 온도가 65℃ 이상인 경우', '1) FDU의 복귀버튼 조작시 +2) FDU 전원 리셋시', '1) 해당 감지기 위치의 화재 발생 여부 확인 +2) 화재 오 감지일경우 FDU의 복귀버튼 취급 +3) 오감지일경우 감지기의 청소주기 확인(내부 먼지 제거)', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('6b6a26b1-fdcd-47a7-9bdd-eb12e1c4caf1', '0003', '3', 'CU1 통신고장', 'Tc2', 'B', 'CU1 통신고장(TC2)', 'B', 'TCMS', '중앙장치(CU)의 좌측 CU1의 통신고장(또는 우측 CU2의 통신고장) +', 'CU1 통신고장 현시, 정상적으로 CU2로 정상적으로 절체되면 CU1 통신고장만 현시되고 차량 운행에 지장없음. +CU2 통신고장의 경우,(CU1이 정상이면) CU2와 연결된 SIV, DCU, HVAC, FDU, BMS, PSD, CMSB 등의 통신고장과 함께 현시됨. (해당 장치로부터의 고장정보등을 현시하지 못함으로 주의 운행 필요) +CU1과 CU2 모두 이상이 있을 경우, DU 일반화면상 모든 정보 표출 불가(출입문 회색 현시, 주요장치 '--'로 현시, 시간정보 정지됨.) +CU1에 통신고장이 현시되었다가 사라지는 것이 반복되거나 화면에 현시되는 정보들이 불안정하게 흔들릴경우가 있음 +(이 경우, CU1이 불안정한 상태로 CU2로 마스터가 절체되었다가 CU1이 다시 마스터로 복귀하는 과정이 반복되면서 발생하는 현상으로 운행중에 발생했다면 CU1의 전원을 차단하고 운행) +', 'CU2가 CU1의 통신정보를 2초이상 수신받지 못할 경우 해당고장 현시, 일반적으로 VCPU보드의 문제로 해당 VCPU 보드를 교체하거나, 또는 메인 통신 보드인 VARCT 보드의 문제, 또는 단순히 CU의 전원이 차단된 경우임. +', 'CU1이 정상적으로 통신을 재개할 경우 소거됨. +', '1) CU의 전원차단 CB를 확인. 전원차단 CB가 정상 ON이 되어 있다면 VPS보드의 전원 LED가 정상적으로 ON이 되어 있는지 확인. (VPS 보드에 멀티미터를 이용하여 5V가 출력되는지 확인(검수)하여 5V가 출력되지 않는다면 VPS보드 교체) +2) CU의 리셋(전원차단 CB OFF->ON)후에도 소거가 되지 않을 경우, VCPU보드를 교체 +(VCPU 교체전 누적 주행거리, 적산전력량, 휠경 설정값을 기록해두고, 교체 후 입력한다.) +3) 위 조건에도 고장이 소거되지 않을 경우, VARCT 보드, VDI, VDO, VAIO 보드 등을 순차적으로 교체 후, 상태를 확인한다.', null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('6b83f517-a47a-4aa7-8cd4-f9afa10627aa', '0515', '515', 'DCU#1 3위(R2) - 출입문 열림 시간 초과', 'Tc1', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 “Open time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 열림 동작시간이 6초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도한 후, ‘장애물로 인한 열림 실패' 고장과 함께 ‘Open time out' 고장이 함께 현시 +', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('6b8cd4f3-7e96-4fe6-9b96-401389af9411', '0707', '707', 'HVAC#7-냉난방장치2 증발기1 과부하', 'M4', 'C', 'HVAC-냉난방장치2 증발기1 과부하', 'C', 'HVAC', 'HVAC 냉방작동 중 냉난방장치2 증발기 모터에 과부하 발생.', 'UNIT2 냉방 기능 불가', '1) 냉방작동 중 UNIT2의 증발기 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CREF3과 연결된 THR7이 Trip 됨.', 'UNIT2의 증발기 모터의 과부하 조건을 해소하여 정상 가능 상태로 만들고, THR7 및 마이콤 전원 리셋', '1) 냉난방배전반의 점검커버를 열고, THR7의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR7의 전류 세팅값이 3A에 맞춰져 있는지 확인하여, 아닐 경우, 십자 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동 시킨 후, THR7의 2차측 2,4,6 단자에서 각 단자간 상간 전압이 AC 380V으로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 증발기 단품 상태에서 점검을 한다. +7) THR7의 2차측 2,4,6 단자에서 각 단자간 권선저항이 모두 같은지 확인한다. (±10% 이하) (증발기 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT2의 증발기 모터의 결선을 해제한 후 4극 및 6극 모터의 권선저항을 확인 후, 문제가 있을 겨우, 증발기 모터를 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR7 부품을 교체한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('6b9625f8-91f2-4298-a574-21280c07a258', '0506', '506', 'DCU#4 5위(R3) - 출입문 입력 저전압', 'T1', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 “1”이 되면 검지 +', '저전압상태(출입문 동작이 심하게 느려지거나 작동조차 안 될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하 +', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('6bb4f656-5b93-404a-94c3-5789c512861d', '0113', '113', 'VVVF-주회로 접지검지(LGD) (Car6)', 'M3', 'B', 'VVVF-주회로 접지검지(LGD)', 'B', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT32의 Bit0 “LGD” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 '주회로 접지검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동이 되지 않으며 중고장으로 처리됨. +3) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치 입력전압이 300V 이하로 하강되며, 입력전류가 1700A 이상인 조건.', '1) 추진제어장치 리셋으로 고장 소거됨.', '1) 상기고장이 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 고장기록의 FC 전압 및 입력전류 확인. +3) 추진제어장치 내부에 접지흔적 확인 및 고압회로 점검. +4) 전류/전압 센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작상태를 시험기를 통해 확인한다. +6) IPM 전원공급기의 전원연결상태 또는 광케이블의 연결상태와 배선상태를 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.656536+00', null, '다대48량(2015)', 'Rotem'), ('6bb6effd-66ff-42c7-b176-d67f66c63eb4', '0733', '733', 'HVAC#8-전자접촉기 압축기(CRCM)4 고장', 'Tc2', 'C', 'HVAC-전자접촉기 압축기(CRCM)4 고장', 'C', 'HVAC', 'HVAC 냉방작동 중 CRCM4 전자접촉기 고장 발생.', '냉방 기능 저하(전냉방시 반냉방으로 작동)', '냉방작동 중 2.5초 이상동안 CRCM4 작동 feedback 신호가 수신되지 않는 경우', 'CRCM4 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CRCM4를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRCM4와 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('6bbf3623-1007-4a7a-801d-79be2b26bee8', '0715', '715', 'HVAC#3-냉난방장치1 압력스위치1(DPS) 저압', 'M2', 'D', 'HVAC-냉난방장치1 압력스위치1(DPS) 저압', 'D', 'HVAC', '냉난방장치1 냉매 압력스위치1 저압 발생.', 'UNIT1 CYCLE1 냉방 기능 불가', 'UNIT1 DSP1측 냉매 압력이 3초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우', '냉매 압력이 정상 수치 2±0.5(kgf/cm2 이상으로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CREF2의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)을 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안되는 것을 확인한 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('6bcd88c3-e6bc-49a6-8183-d7e02fc59a77', '0504', '504', 'DCU#7 5위(R3) - 출입문 외부 비상핸들 취급(EAD)', 'M4', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('6bd7236f-351c-4013-9a68-21364362e38d', '0735', '735', 'HVAC#6 - 전자접촉기 압축기(CRCM)2 고장', 'M3', 'C', 'HVAC-전자접촉기 압축기(CRCM)2 고장', 'C', 'HVAC', 'HVAC 냉방 작동 중 CRCM2 전자접촉기 고장 발생 +', '냉방 기능 저하(전냉방 시 반냉방으로 작동)', '냉방 작동 중 2.5초 이상 동안 CRCM2 작동 feedback 신호가 수신되지 않는 경우 +', 'CRCM2 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CRCM2를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRCM2와 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('6bddf9e9-bd7c-4710-896f-237cca78eb4d', '0872', '872', '출력증폭기#2(AMP) 고장(Car#7)', 'M4', 'C', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('6bf0774c-eb5c-484e-a037-6d3dc09aeba5', '0748', '748', 'HVAC#5-전자접촉기 차량히터1(CRRHT) 고장', 'T2', 'C', 'HVAC-전자접촉기 차량히터1(CRRHT) 고장', 'C', 'HVAC', '객실 난방기 작동 중 CRRHT1 전자접촉기 고장 발생.', '객실 전난방 시 2/3난방만 작동', '객실 전난방 작동 중 2.5초 이상동안 CRRHT1 작동 feedback 신호가 수신되지 않는 경우', 'CRRHT1 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CRRHT1을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRRHT1과 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('6bf26102-cdfa-4f6b-96f2-86bca6bb0714', '1404', '1404', 'BMS#1 - 배터리 과전압(BOV, 105V 이상)', 'Tc1', 'W', 'BMS-배터리 과전압(BOV)', 'W', 'BMS', '해당 차량의 배터리 전압이 105.7V 이상이 되면 검지 +', '차량 배터리팩과전압검지 후, 106.5V 이상이면 충전접촉기(CK)가차단된다.', '배터리팩과전압(105.7V 이하) +', '배터리팩전압정상범위로 회복(75 ~ 105V)', '1) 배터리 NFB 상태 확인 +2) 이상이 없으면 차량 전체를 리셋한다. +3) 차량 리셋 후에도 동일고장이면 사령실과 연락하여 조치를 취한다. (외부 방전기 연결 또는 차량 지원)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('6bf2ba3e-45e1-4de7-a393-b856f11abd16', '0702', '702', 'HVAC#7 - 냉난방장치2 압축기1 과부하', 'M4', 'C', 'HVAC-냉난방장치2 압축기1 과부하', 'C', 'HVAC', 'HVAC 냉방 작동 중 냉난방장치2 압축기1 또는 응축기1 모터에 과부하 발생 +', '냉방 기능 저하(전냉방 시 반냉방으로 작동)', ' +1) 냉방 작동 중 UNIT2의 압축기1 또는 응축기1 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRCM3과 연결된 THR3이 Trip 됨. +', 'UNIT2의 압축기1 또는 응축기1 모터의 과부하조건을 해소하여 정상 가능 상태로 만들고, THR3 및 마이콤 전원 리셋', '1) 냉난방 배전반의 점검커버를 열고, THR3의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR4의 전류 세팅값이 11.5A에 맞춰져 있는지 확인하여, 아닐 경우, (+) 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동시킨 후, THR3의 2차측 2, 4, 6 단자에서 각 단자 간 상간 전압이 AC 380V로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 압축기 및 응축기 단품 상태에서 점검을 한다. +7) THR3의 2차측 2, 4, 6 단자에서 각 단자 간 권선저항이 모두 같은지 확인한다. (±10% 이하) (압축기1 및 응축기1 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT2의 압축기1 또는 응축기1 모터의 결선을 해제한 후 각 부품의 권선저항을 확인 후, 문제가 있는 부품을 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR3 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('6c1252ba-6101-4bd5-a6b3-d69e9b4f5c3f', '0002', '2', 'CU2 통신고장', 'Tc1', 'B', 'CU2 통신고장(TC1)', 'B', 'TCMS', '편성제어장치(CU)의 좌측 CU1의 통신고장(또는 우측 CU2의 통신고장) + +', '1) CU1 통신고장 현시, 정상적으로 CU2로 정상적으로 절체 되면 CU1 통신고장만 현시되고 차량 운행에 지장 없음. +2) CU1과 CU2 모두 이상이 있을 경우, DU 일반화면상 모든 정보 표출 불가, DU의 통신고장 발생 할 수 있음. +3) CU2로 절체 될 경우, 화면상의 우측 상단 경고장 하단에 “B.SYS” 글자가 표시됨. (2중계 동작에 의한 화면)', 'CU1과 CU2의 통신정보를 3초 이상 수신 받지 못할 경우 해당 고장 현시, 일반적으로 MCPU 보드의 문제로 해당 MCPU 보드를 교체하거나, 또는 각 회로 차단기의 차단에 따른 고장 현시 +', 'CU1과 CU2 간 통신이 정상적으로 통신을 재개할 경우 소거됨.', '1) CU의 전원차단 CB를 확인 전원차단 CB가 정상 ON이 되어 있다면 MCPU 보드의 전원 LED가 정상적으로 ON이 되어 있는지 확인(MCPU 보드의 ERR LED가 지속적으로 ON 되어 있으면 MCPU 교체 4TX3/4RX3이 정상적으로 점멸하지 않으면 MCPU 교체) +2) CU의 리셋(전원차단 CB OFF → ON)후에도 소거가 되지 않을 경우, MCPU 보드를 교체 (MCPU 교체전 누적 주행거리, 적산전력량, 휠경 설정값을 기록해두고, 교체 후 입력한다.) +3) 위 조건에도 고장이 소거되지 않을 경우, SCM 보드, DIM, AUX 보드 등을 순차적으로 교체 후, 상태를 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('6c247c56-5449-4437-afed-047702745407', '0511', '511', 'DCU#5 5위(R3) - 출입문 닫힘 리미트 스위치2 고장', 'T2', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 “DCS2 Failure(Right)” 신호가 “1”이 되면 검지 +', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('6c3849f1-b07c-4e28-b75a-d7200ae1e39e', '0715', '715', 'HVAC#6 - 냉난방장치1 압력스위치1(DPS) 저압', 'M3', 'D', 'HVAC-냉난방장치1 압력스위치1(DPS) 저압', 'D', 'HVAC', '냉난방장치1 냉매 압력스위치1 저압 발생 +', 'UNIT1CYCLE1 냉방기능불가', 'UNIT1DSP1측 냉매압력이 3초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우 +', '냉매압력이 정상수치 2±0.5(kgf/cm2) 이상으로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CREF2의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)를 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설 여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안 되는 것을 확인한 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('6c4c7dc7-a07e-4055-a5f9-3f71d009203c', '1501', '1501', '차상신호장치(ATC) 회로차단기 차단(Car8)', 'Tc2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('6c53e065-ab8e-47b4-b872-e5c15928a078', '0086', '86', '화재검지기 고장(Car1)', 'Tc1', 'C', null, null, 'FDU', null, null, null, null, null, null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('6c6d9a9a-7f1c-4c62-86cd-b919ad5f96a3', '0164', '164', 'VVVF#7-역행/회생 전류이상검지(PBCD)', 'M4', 'C', 'VVVF-부정회생(PBCD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT32의 Bit5 “PBCD” 신호가 "1"이 되면 검지.', null, '역행지령 중 회생동작 또는, 회생중 역행동작 시 고장검지.', '1) 역행 고장검지 2초 후 자동 재기동 +2) 제동 제동 OFF시 고장 소거', '1) 상기 고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) CTS 전류센서의 외관상태 및 저전압 커넥터 체결상태를 확인한다. +3) CTS 전류센서의 방향을 확인한다. +4) CTS 전류센서로부터 TCU(통합제어장치)까지의 저전압 배선을 확인한다. +5) CTS 커넥터의 P15B1~F15C1의 전압이 +15V, N15B1~F15C1의 전압이 -15V임을 확인한다. +6) 상기의 점검부분에 이상이 있을 경우 관련부품을 교체한다.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('6c822cbe-1206-4fbb-938b-75e487425af0', '0520', '520', 'DCU#1 6위(L3)-이중계 절체 동작', 'Tc1', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 "Module switchover' 신호가 "1"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('6c866aae-3eae-4a23-b268-1e93b394ce32', '0511', '511', 'DCU#2 4위(L2)-출입문 닫힘 리미트 스위치2 고장', 'M1', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 "DCS2 Failure(Right)” 신호가 "1"이 되면 검지.', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('6c8ef2b8-8376-43ca-8df9-f9cacab2574a', '0713', '713', 'HVAC#5-냉난방장치1 압력스위치2(DPS) 저압', 'T2', 'D', 'HVAC-냉난방장치1 압력스위치2(DPS) 저압', 'D', 'HVAC', '냉난방장치1 냉매 압력스위치2 저압 발생.', 'UNIT1 CYCLE2 냉방 기능 불가', 'UNIT1 DSP2측 냉매 압력이 3초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우', '냉매 압력이 정상 수치 2±0.5(kgf/cm2 이상으로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CREF2의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)을 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안되는 것을 확인한 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('6ca82349-9ec9-4414-8813-191ffa290372', '0502', '502', 'DCU#7 4위(L2) - 출입문 장애물검지', 'M4', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('6ca8c673-c9a0-4026-b520-ce2fddfe4725', '1211', '1211', 'FDU#8 - 체크섬 고장', 'Tc2', 'C', 'FDU-체크섬 고장', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT5의 Bit7 “Checksum Fault” 신호가 “1”이 되면 검지 +', 'ChecksumFault 현시 및 FDU의 정상동작 불가능', '수신기펌웨어의 오류로 인한 체크섬 이상(MCU 내부 플래쉬메모리에 저장된 체크섬과 프로그램의 체크섬 계산값이 다를 경우) +', 'FDU가 부팅될 때 MCU 내부 플래쉬메모리에 저장된 체크섬과 프로그램의 체크섬 계산값이 같을 경우', '1) FDU의 전원을 리셋하여 소거여부 확인 +2) 문제가 지속될 경우, 수신기 교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('6cc13b23-6a77-4f61-abbd-52ef64b882f2', '0730', '730', 'HVAC#4-냉난방장치1 토출 센서 고장', 'T1', 'C', 'HVAC-냉난방장치1 토출 센서 고장', 'C', 'HVAC', '냉난방장치1의 토출 센서 고장 발생', '냉난방장치1 토출센서 고장현시', '온도센서 검지범위는 -45~85도 (820~1330옴) 인데, 2초 이상 검지범위를 벗어나는 경우', '온도센서 검지 값이 2초 이상 허용온도 범위 내 일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820~1330옴 을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우, 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('6ccdacb4-1251-4ee8-9a9a-b55850e1e5c4', '0408', '408', 'SIV#8-인버터1 입력 과전압(INV1OV)', 'Tc2', 'C', 'SIV-인버터1 입력 과전압(INV1OV)', 'C', 'SIV', '보조전원장치(SIV)의 RS485 데이터 중 SIV-TCMS SD TEXT4의 Bit6 “INV1OV” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 '인버터2 입력 과전압(INV1OV)' 표시됨. +2) 보조전원장치(SIV)는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 보조전원장치(SIV) 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 보조전원장치(SIV) 상태 붉을색으로 표기되며, 연장급전 됨.', '보조전원장치(SIV) 내부 인버터 2의 FC전압이 1,200V 이상일 경우 검지됨.', '1) 경고장이 발생할 경우 보조전원장치(SIV) 자동 재기동에 의해 재기동 됨. +2) 중고장이 발생했을 경우 조치 완료 후 보조전원장치(SIV) 리셋으로 고장 소거됨.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 보조전원장치(SIV) 고장기록을 수집하여 FC전압에 이상이 있는지 확인한다. +3) 보조전원장치(SIV) 내부 고전압부에 소손흔적이 있는지 확인한다. +4) FC에 연결된 버스바의 체결상태가 양호한지 확인한고, 버스바를 분리하여 FC의 Capacitance를 측정하여 이상이 없는지 확인한다. +5) 전압센서와 보조전원장치(SIV) 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +6) SEN 보드의 동작상태를 시험기를 통해 확인한다. +7) 출력단 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('6cdb1323-be0e-44bf-979f-af0cd222cf95', '0147', '147', 'VVVF#7-ZVR 이상검지(ZVRD)', 'M4', 'D', 'VVVF-ZVR 이상검지(ZVRD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT30의 Bit4 “ZVRD” 신호가 "1"이 되면 검지.', null, 'ZVR 신호의 지령과 출력 불일치 시 고장검지.', '검지조건 해제 시.', '1) 상기고장이 간헐적으로 발생하는 경우 아래와 같이 조치한다. +2) 통합제어기 전면의 CNC1커넥터 고정상태 확인. +3) RELAY 유니트 내부의 ZVR 계전기 접점상태 확인. +4) RELAY 유니트 전면의 커넥터 핀 및 배선상태 확인. +5) TC1, TC2 일반배전반의 계전기 동작상태 점검. +6) 상기의 점검부분에 이상이 있을 경우 관련부품을 교체한다.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('6cdd62d4-173a-4547-a27b-857bd7ef6032', '0501', '501', 'DCU#7 4위(L2) - 출입문 차단', 'M4', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('6ce41945-415f-43eb-b0ff-527b919c05a5', '0723', '723', 'HVAC#3-냉난방장치1 압력스위치2(DPS) 냉매부족', 'M2', 'C', 'HVAC-냉난방장치1 압력스위치2(DPS) 냉매부족', 'C', 'HVAC', '냉난방장치1 냉매 압력스위치2 저압 발생.', 'UNIT1 CYCLE2 냉방 기능 불가', 'UNIT1 DSP2측 냉매 압력이 30초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우', '냉매 압력이 정상 수치 2±0.5(kgf/cm2 이상 유지하도록 하고, 마이콤 전원을 리셋', '1) 배전반 점검 커버를 열고 마이콤 전원을 리셋한 후, 냉방 가동 시, CREF2의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)을 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안되는 것을 확인한 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('6ce676e4-ad56-4d16-9c4d-622bdf023618', '0727', '727', 'HVAC#1-배기팬1 과부하', 'Tc1', 'C', 'HVAC-배기팬1 과부하', 'C', 'HVAC', 'HVAC 환기작동 중 차량 배기팬1 모터에 과부하 발생.', '환기 시 차량 배기팬2 운전 불가능', '1) 냉방작동 중 챠량 배기팬1 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRVF1와 연결된 THR9가 Trip 됨.', '차량 배기팬1 모터의 과부하 조건을 해소하여 정상 가능 상태로 만들고, THR9 및 마이콤 전원 리셋', '1) 냉난방배전반의 점검커버를 열고, THR9의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR9의 전류 세팅값이 2.5A에 맞춰져 있는지 확인하여, 아닐 경우, 십자 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동 시킨 후, THR9의 2차측 2,4 단자와 6 단자 사이의 전압이 DC 100V으로 정상 측정되는지 확인한다. +5) 만약 전압이 측정되지 않을 시, 전원이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, THR9 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('6cf82cd1-e8e7-47ff-9d20-088a58a9259c', '0521', '521', 'DCU#8 4위(L2) - 모듈 상태 이상', 'Tc2', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 “01” 또는 “00”이 되면 +검지 +', '이중계절체동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러)이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('6d04e41d-1365-4af4-8f77-a4238d970214', '0503', '503', 'DCU#6 3위(R2)-출입문 내부비상핸들 취급(EED)', 'M3', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('6d060591-1ec0-414b-9cc3-71a790af4d6d', '0238', '238', 'BECU#2-4축스키드신호', 'M1', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('6d0ca43a-0771-4809-8637-568d0d13e63c', '0504', '504', 'DCU#3 2위(L1)-출입문 외부비상핸들 취급(EAD)', 'M2', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('6d190c81-1055-4b5a-adcb-feb6e791f1b3', '0241', '241', 'BECU#5 - 1축 스키드신호', 'T2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('6d1976be-f6f5-4117-abc9-7840b021fb9f', '0240', '240', 'BECU#8-2축스키드신호', 'Tc2', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('6d34e596-0cee-4f76-9ddb-e180f9013faa', '1212', '1212', 'FDU#3 -', 'M2', null, null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('6d365972-ed95-43fc-8a3a-fd59eba599a7', '0207', '207', 'BECU#2 - 자기진단 고장', 'M1', 'C', 'BECU-자기진단고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit6 “RAM 점검 고장” 신호가 “1”이 되면 검지 +', '해당 차량 자기진단 고장검지 현시 및 해당 차량 활주제어 불가', '해당 차량 BECU의 자가진단 시 고장 발생(활주방지밸브 고장) +', '해당 차량 BECU의 자가진단 시 정상적일 경우 소거(활주방지밸브 정상)', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('6d39edac-2242-4b21-a4d4-120f38ec2a1e', '1212', '1212', 'FDU#4 -', 'T1', null, null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('6d50dacc-f6bb-49c7-8df4-2c58d8d249fc', '0164', '164', 'VVVF#7 - 역행/회생 전류 이상검지(PBCD)', 'M4', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('6d552794-f7b9-440f-a032-b4e79d49af7a', '1705', '1705', '노선안내표시기#6 고장(Car4)', 'T1', 'C', '노선안내표시기#3 고장', 'C', 'PIC', 'PIC 장치의 노선안내표시기#3이 고장이 났을 때 발생 +', '1) 노선안내표시기 화면 미현시 +2) 노선안내표시기 안내 화면 오현시', '통신고장 +', '통신 재개 시', '1) 이더넷 스위치 링크 확인 +2) 이더넷 케이블 점검 +3) 제어보드 및 전원보드 교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('6d5e058c-134b-40df-9a6d-bf2782d35ebc', '0738', '738', 'HVAC#5-전자접촉기 증발기3(CREF) 고장', 'T2', 'C', 'HVAC-전자접촉기 증발기3(CREF) 고장', 'C', 'HVAC', 'HVAC 냉방작동 중 CREF3 전자접촉기 고장 발생.', 'UNIT2 냉방 작동 불가', '냉방작동 중 2.5초 이상동안 CREF3 작동 feedback 신호가 수신되지 않는 경우', 'CREF3 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CREF3을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CREF3과 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('6d6a3e8c-ca4a-4ee2-9cfe-774a1a20172a', '0506', '506', 'DCU#2 5위(R3)-출입문 입력 저전압', 'M1', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 "1"이 되면 검지.', '저전안 상태 (출입문 동작이 심하게 느려지거나 작동조차 안될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('6d828d09-6a85-4969-905e-5cccee712b90', '0504', '504', 'DCU#2 3위(R2)-출입문 외부비상핸들 취급(EAD)', 'M1', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('6d84b9c9-af05-488c-bec1-ef0807672fff', '1211', '1211', 'FDU#4 - 체크섬 고장', 'T1', 'C', 'FDU-체크섬 고장', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT5의 Bit7 “Checksum Fault” 신호가 “1”이 되면 검지 +', 'ChecksumFault 현시 및 FDU의 정상동작 불가능', '수신기펌웨어의 오류로 인한 체크섬 이상(MCU 내부 플래쉬메모리에 저장된 체크섬과 프로그램의 체크섬 계산값이 다를 경우) +', 'FDU가 부팅될 때 MCU 내부 플래쉬메모리에 저장된 체크섬과 프로그램의 체크섬 계산값이 같을 경우', '1) FDU의 전원을 리셋하여 소거여부 확인 +2) 문제가 지속될 경우, 수신기 교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('6d8b3f97-8a41-4623-869e-c14cfe1e12f1', '0898', '898', '비상인터폰 동작(Car#3-1)', 'M2', 'W', null, null, 'RADIO', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('6d97fc1b-5827-4fa6-b317-e26d554d5f94', '0166', '166', 'VVVF#7 - 대활주/대공전(WSD)', 'M4', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('6da3bb2e-35a1-434b-8906-b8981fe24d7a', '1508', '1508', '판토코크#2 차단(Car2)', 'M1', 'W', '판토코크#2차단', 'W', 'CMSB', '차량으로부터 NO PANTOGRAPH CUT-OUT COCK#1(#2) 신호 미입력시', '판토 하강상태에서 해당 코크 조작시 상승 불가', '해당 코크 조작시', '해당 코크 정상 위치로 조작', null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('6da5dab0-b129-4ae9-8bf8-0f1656027fbe', '0157', '157', 'VVVF#3-FC충전불량(FCD)', 'M2', 'C', 'VVVF-FC충전불량(FCD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT31의 Bit6 “FCD” 신호가 "1"이 되면 검지.', null, '1) HSCB, LB1 투입 후300ms이후에 FC에 충전된 전압이 낮을 경우 고장검지. +2) 1분 이내 3회 발생 시 중고장 발생.', '1) 경고장 +역행 고장검지 2초 후 자동 재기동 제동 제동 OFF시 고장 소거 +2) 중고장 +동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 FC전압에 이상이 있는지 확인한다. +3) 추진제어장치 내부 고전압부에 소손흔적이 있는지 확인한다. +4) 주 회로 차단기함 내부 충전저항값을 측정하여 기준치(10Ω±10%)이내임을 확인. +5) FC에 연결된 버스바의 체결상태가 양호한지 확인한고, 버스바를 분리하여 FC의 Capacitance를 측정하여 이상이 없는지 확인한다. +6) 전압센서와 추진제어장치 제어기 PUZ 보드에 연결되는 저전압 배선상태를 확인한다. +7) 추진제어장치 시험기를 이용하여 TCU(통합제어장치)의 이상여부를 확인한다. +8) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +9) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('6dabfc2e-c874-4eff-a939-46fbd571254e', '0502', '502', 'DCU#8 2위(L1) - 출입문 장애물검지', 'Tc2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('6dc366ac-c729-4039-92a8-18c24c7daf54', '0738', '738', 'HVAC#7-전자접촉기 증발기3(CREF) 고장', 'M4', 'C', 'HVAC-전자접촉기 증발기3(CREF) 고장', 'C', 'HVAC', 'HVAC 냉방작동 중 CREF3 전자접촉기 고장 발생.', 'UNIT2 냉방 작동 불가', '냉방작동 중 2.5초 이상동안 CREF3 작동 feedback 신호가 수신되지 않는 경우', 'CREF3 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CREF3을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CREF3과 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('6dc5cb60-4e59-4d4e-9a54-c758a4fb67d1', '0200', '200', 'BECU#5 통신고장', 'T2', 'B', 'BECU-통신고장', 'B', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT23의 'Life sign'이 변하지 않음.', '해당 차량 통신고장 현시 및 해당 차량의 제동압력(BCP) 등의 데이터가 반응하지 않음. (고장은 현시되나 제동제어는 정상적 일 수 있음)', 'BECU 전원 CB OFF 혹은 통신연결 불량.', 'BECU와 TCMS 간 RS485 통신이 복귀 되어 BECU-TCMS SD TEXT23의 'Life sign'이 변동시 소거.', 'BECU를 리셋(BECU CB OFF/ON) 후 복귀여부를 확인. +리셋 후 복귀되지 않을 경우 관제보고하고 지시에 따를 것.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('6dc7b0db-6c71-4ed6-a13a-5d45b6a94943', '0721', '721', 'HVAC#2-냉난방장치2 압력스위치2(DPS) 냉매부족', 'M1', 'C', 'HVAC-냉난방장치2 압력스위치2(DPS) 냉매부족', 'C', 'HVAC', '냉난방장치2 냉매 압력스위치2 저압 발생.', 'UNIT2 CYCLE2 냉방 기능 불가', 'UNIT2 DSP2측 냉매 압력이 30초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우', '냉매 압력이 정상 수치 2±0.5(kgf/cm2 이상 유지하도록 하고, 마이콤 전원을 리셋', '1) 배전반 점검 커버를 열고 마이콤 전원을 리셋한 후, 냉방 가동 시, CREF4의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)을 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안되는 것을 확인한 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('6dc82230-3d67-42d7-95db-2aeb82c02435', '0510', '510', 'DCU#3 2위(L1) - 출입문 닫힘 리미트 스위치1 고장', 'M2', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 “DCS1 Failure(Leftt)” 신호가 “1”이 되면 검지 +', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('6deae911-a501-4e7e-bc6f-fe8f200415a4', '0741', '741', 'HVAC#4 - 전자접촉기 보조히터4(AHEK) 고장', 'T1', 'C', 'HVAC-전자접촉기 보조히터4(AHEK) 고장', 'C', 'HVAC', 'HVAC 보조난방기 작동 중 AHEK4 전자접촉기 고장 발생 +', 'UNIT2 보조난방기 전난방 시 반난방만 작동', '보조난방기 작동 중 2.5초 이상 동안 AHEK4 작동 feedback 신호가 수신되지 않는 경우 +', 'AHEK4 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) AHEK4를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, AHEK4와 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('6df65fa5-622b-4018-9fd0-5dbdaaee461e', '0416', '416', 'SIV#1-게이트 드라이버 고장, UX1상(GDFUX1)', 'Tc1', 'C', 'SIV-게이트 드라이버 고장, UX1상(GDFUX1)', 'C', 'SIV', '보조전원장치(SIV)의 RS485 데이터 중 SIV-TCMS SD TEXT5의 Bit6 “GDFUX1” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 'GDF UX 1상 이상검지' 표시됨. +2) 보조전원장치(SIV)는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 보조전원장치(SIV) 중고장이 발생됨. +5) 중고장이 발생되면 TCMS 일반화면에 보조전원장치(SIV) 상태 붉을색으로 표기되며, 연장급점 됨.', '보조전원장치(SIV) 내부 GDU에 과전류, 과온이 검지될경우.', '1) 경고장이 발생할 경우 보조전원장치(SIV) 자동 재기동에 의해 재기동 됨. +2) 중고장이 발생할 경우 보조전원장치(SIV) 리셋으로 고장 소거됨.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 보조전원장치(SIV) 고장기록을 수집하여 출력되는 3상의 AC 전류치를 확인함. +3) 특정상의 전류치가 비정상적일 경우 특정상에 해당되는 GDU, 전류센서, 출력단 결선을 확인한다. +4) 전류센서와 보조전원장치(SIV) 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작상태를 시험기를 통해 확인한다. +6) GDU 전원공급기의 전원연결상태 또는 광케이블의 연결상태와 배선상태를 확인한다. +7) 출력단 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('6e15972d-619c-4d3f-8099-522d97b14a89', '0506', '506', 'DCU#1 5위(R3) - 출입문 입력 저전압', 'Tc1', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 “1”이 되면 검지 +', '저전압상태(출입문 동작이 심하게 느려지거나 작동조차 안 될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하 +', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('6e1a562c-7123-48a8-8b2f-39f75f1d5585', '0517', '517', 'DCU#5 6위(L3)-출입문 장애물로 인한 열림 실패', 'T2', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Open failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘상태로 대기', '도어 열림 중 3회 장애물 감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 열림 시, 장애물 감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('6e1b1c60-8fb0-4963-a50c-b691ee6e2c00', '0504', '504', 'DCU#1 5위(R3) - 출입문 외부 비상핸들 취급(EAD)', 'Tc1', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('6e2555cd-a1f3-411f-a3a9-56e8f20ad9a3', '0071', '71', '주차제동 동작', 'Tc2', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('6e2bce6e-428c-4f28-a19f-edd5d7780877', '0510', '510', 'DCU#2 5위(R3)-출입문 닫힘 리미트 스위치1 고장', 'M1', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 "DCS1 Failure(Leftt)” 신호가 "1"이 되면 검지.', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('6e2d9cf6-6784-4441-a735-86da62b04977', '0726', '726', 'HVAC#7 - 배기팬2 과부하', 'M4', 'C', 'HVAC-배기팬2 과부하', 'C', 'HVAC', 'HVAC 환기작동 중 차량 배기팬2 모터에 과부하 발생 +', '환기 시 차량 배기팬2 운전 불가능', ' +1) 냉방 작동 중 챠량 배기팬2 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRVF2와 연결된 THR10이 Trip 됨. +', '차량 배기팬2 모터의 과부하조건을 해소하여 정상 가능 상태로 만들고, THR10 및 마이콤 전원 리셋', '1) 냉난방 배전반의 점검커버를 열고, THR10의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR10의 전류 세팅값이 2.5A에 맞춰져 있는지 확인하여, 아닐 경우, (+) 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동시킨 후, THR10의 2차측 2, 4 단자와 6 단자 사이의 전압이 DC 100V로 정상 측정 되는지 확인한다. +5) 만약 전압이 측정되지 않을 시, 전원이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, THR10 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('6e43e46c-0a2c-4f2b-876c-d15ac2b3c75f', '0180', '180', 'VVVF#7-MCOK 고착(MCOKNO)', 'M4', 'C', 'VVVF-MCOK 고착(MCOKNO)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT34의 Bit5 “MCOKNO” 신호가 "1"이 되면 검지.', null, 'MCOK 개방조건에서 투입상태 유지 시 고장검지.', '동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) 주회로 차단기함 내에 MCOK의 주접점을 확인하여 고착여부를 확인한다. +2) 주회로 차단기함 내에 MCOK의 보조접점을 확인하여 고착여부를 확인한다. +3) 추진제어장치 계전기 유니트에 MCHK1( +2) 계전기 상태를 확인하여 고착여부를 확인한다. +4) 추진제어장치 시험기를 이용하여 TCU(통합제어기) 시험을 실시하여 이상여부를 확인한다. +5) 상기의 점검부분에 이상이 있을경우 관련부품을 교체한다.', null, '3', '2025-10-12 01:21:37.578803+00', null, '로템40량(2018)-1단계', 'Rotem'), ('6e646b93-59e5-491c-a8d4-d8dd06166392', '0505', '505', 'DCU#8 1위(R1)-출입문 입력 고전압', 'Tc2', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 "1"이 되면 검지.', '고전압 상태. (그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('6e7a1a72-9270-47ba-bf7f-d9c4573b763b', '0513', '513', 'DCU#3 2위(L1) - 모듈 상태체크 에러', 'M2', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 “Module check error” 신호가 “1”이 되면 검지 +', 'Modulecheckerror현시(출입문은 정상작동가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태 체크 기능에 이상이 생긴 경우 고장 발생 +', 'DCU의 ‘A' 모듈과 ‘B' 모듈 간, 상태 체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('6e7e4441-3689-4df1-a0f8-3c0fc2658ba9', '0801', '801', '통합방송표시기#8 통신고장', 'Tc2', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('6ea0badb-38a9-4b64-a756-0298bf74fae3', '0519', '519', 'DCU#7 4위(L2) - ZVR 신호 에러', 'M4', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 “ZVR signal error” 신호가 “1”이 되면 검지 +', '출입문이강제로 닫히게 되고, 열림은 불가능', ' +1) 차량 ZVR 신호가 없는 상태(차량 주행상태)에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함. +', '해당 출입문 ZVR 신호 수신', '1) 차량 이 주행중이라면, 차량 이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('6eb8080a-cdb8-4b6a-bcd0-3e93d66fe468', '0519', '519', 'DCU#1 4위(L2) - ZVR 신호 에러', 'Tc1', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 “ZVR signal error” 신호가 “1”이 되면 검지 +', '출입문이강제로 닫히게 되고, 열림은 불가능', ' +1) 차량 ZVR 신호가 없는 상태(차량 주행상태)에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함. +', '해당 출입문 ZVR 신호 수신', '1) 차량 이 주행중이라면, 차량 이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('6ec1dee8-9526-43ab-8878-2cf0a59bba40', '0514', '514', 'DCU#5 1위(R1)-출입문 닫힘 시간 초과', 'T2', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 "Close time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 닫힘 동작시간이 7초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도 한 후, '장애물로 인한 닫힘실패' 고장과 함께 'Close time out' 고장이 함께 현시', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('6ecbaf97-399d-4250-97c5-bf0b3a04b9d4', '0513', '513', 'DCU#1 5위(R3)-모듈 상태체크 에러', 'Tc1', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 "Module check error” 신호가 "1"이 되면 검지.', 'Module check error 현시 (출입문은 정상작동 가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태체크 기능에 이상이 생긴 경우 고장 발생.', 'DCU의 'A'모듈과 'B'모듈 간, 상태체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('6ef44084-b159-4a27-91cb-4705fd338821', '1205', '1205', 'FDU#4 - 감지기3 화재감지', 'T1', 'W', 'FDU-감지기3 화재감지 (Car1~8)', 'W', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 “Detector1 State” 신호가 “11”이 되면 검지 +', '화재상태현시(자동소거 안 됨.)', '하기 2가지 조건을 모두 만족하여야 화재신호가 출력 됨. (연동모드 동작) +1) 이웃한(앞 혹은 뒤에 위치한) 감지기 중 하나의 감지기라도 주의 혹은 화재상태에 있어야 함. +2) Detector1(해당 감지기)에서 측정된 연기농도가 15% 이상이거나 온도가 65℃ 이상인 경우 +', '1) FDU의 복귀버튼 조작 시 +2) FDU 전원 리셋 시', '1) 해당 감지기 위치의 화재 발생 여부 확인 +2) 화재 오감지일 경우 FDU의 복귀버튼 취급 +3) 오감지일 경우 감지기의 청소주기 확인(내부 먼지 제거)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('6ef8291a-819d-48b6-acef-3407bfe42f53', '0519', '519', 'DCU#7 5위(R3)-ZVR 신호 에러', 'M4', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 "ZVR signal error” 신호가 "1"이 되면 검지.', '출입문이 강제로 닫히게 되고, 열림은 불가능', '1) 차량 ZVR 신호가 없는 상태 (차량 주행상태) 에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함.', '해당출입문 ZVR 신호 수신', '1) 차량이 주행중이라면, 차량이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('6ef9eb92-0531-43fc-9927-f289d795343f', '0181', '181', 'VVVF#6 - MCOK 투입불량(MCOKNC)', 'M3', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('6f063932-8a5e-4e6e-b87e-bc53f529fc4f', '0154', '154', 'VVVF#7 - 후진속도검지(BSD)', 'M4', 'W', 'VVVF-후진속도검지(BSD)', 'W', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT31의 Bit3 “BSD” 신호가 “1”이 되면 검지 +', '1) TCMS 화면 하단 또는 고장화면에 ‘후진속도검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨.', '추진제어장치에서 계산한 속도가 -5km/h 이하인 경우 검지됨. +', '경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 견인전동기 속도센서 상태를 확인하고, 속도센서가 연결된 경로 배선연결 상태를 확인한다. +3) PGI 보드의 동작 상태를 시험기를 통해 확인한다. +4) 속도신호에 이상이 없을 경우 운행기록을 수집하여 출발 시 정차제동에 이상이 없는지 확인 한다. +5) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('6f218d9a-c00c-4bda-9175-d4aa46f3327d', '0733', '733', 'HVAC#7 - 전자접촉기 압축기(CRCM)4 고장', 'M4', 'C', 'HVAC-전자접촉기 압축기(CRCM)4 고장', 'C', 'HVAC', 'HVAC 냉방 작동 중 CRCM4 전자접촉기 고장 발생 +', '냉방 기능 저하(전냉방 시 반냉방으로 작동)', '냉방 작동 중 2.5초 이상 동안 CRCM4 작동 feedback 신호가 수신되지 않는 경우 +', 'CRCM4 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CRCM4를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRCM4와 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('6f223051-96f7-4310-86ca-71050cc17483', '0102', '102', 'VVVF#3 - 회생제동차단(BRK BLOCK)', 'M2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('6f230f21-301b-44cd-8b5a-f97c36c3f599', '0503', '503', 'DCU#4 5위(R3)-출입문 내부비상핸들 취급(EED)', 'T1', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('6f2b209a-f1d0-4fe2-9499-3c892b8adc44', '0701', '701', 'HVAC#4 - 냉난방장치2 압축기2 과부하', 'T1', 'C', 'HVAC-냉난방장치2 압축기2 과부하', 'C', 'HVAC', 'HVAC 냉방 작동 중 냉난방장치2 압축기2 또는 응축기2 모터에 과부하 발생 +', '냉방 기능 저하(전냉방 시 반냉방으로 작동)', ' +1) 냉방 작동 중 UNIT2의 압축기2 또는 응축기2 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRCM4와 연결된 THR4가 Trip 됨. +', 'UNIT2의 압축기2 또는 응축기2 모터의 과부하조건을 해소하여 정상 가능 상태로 만들고, THR4 및 마이콤 전원 리셋', '1) 냉난방 배전반의 점검커버를 열고, THR4의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR4의 전류 세팅값이 11.5A에 맞춰져 있는지 확인하여, 아닐 경우, (+) 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동시킨 후, THR4의 2차측 2, 4, 6 단자에서 각 단자 간 상간 전압이 AC 380V로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 압축기 및 응축기 단품 상태에서 점검을 한다. +7) THR4의 2차측 2, 4, 6 단자에서 각 단자 간 권선저항이 모두 같은지 확인한다. (±10% 이하) (압축기2 및 응축기2 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT2의 압축기2 또는 응축기2 모터의 결선을 해제한 후 각 부품의 권선저항을 확인 후, 문제가 있는 부품을 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR4 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('6f3af3b3-2cb0-48db-9fee-d6945a47e7fc', '0020', '20', '비상제동 스위치 취급(측면)', 'Tc2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('6f4912a4-afc9-4336-8dcf-d4a904f13b95', '0513', '513', 'DCU#1 4위(L2) - 모듈 상태체크 에러', 'Tc1', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 “Module check error” 신호가 “1”이 되면 검지 +', 'Modulecheckerror현시(출입문은 정상작동가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태 체크 기능에 이상이 생긴 경우 고장 발생 +', 'DCU의 ‘A' 모듈과 ‘B' 모듈 간, 상태 체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('6f53e1e0-1959-4671-905c-836ae64f2da3', '0141', '141', 'VVVF#2-제어전원전압이상(PWM1)(CLVD_P1)', 'M1', 'C', 'VVVF-제어전원전압이상(PWM1)(CLVD_P1)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT29의 Bit6 “CLVD_P1” 신호가 "1"이 되면 검지.', null, 'PWM보드 내부의 제어전원 이상 검지 시 중고장 발생.', '동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) PWM보드 1군 전면의 CN1, CN2 커넥터 핀 상태 및 체결상태 확인. +2) PWM보드 1군 내부의 PCB의 소손, 냉납, 열화 유무 확인. +3) 추진제어장치 시험기를 이용하여 PWM보드의 정상동작을 확인한다. +4) 상기의 점검부분에 이상이 있을 경우 관련부품을 교체한다.', null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('6f720135-7fa3-4337-b487-01b1f50e4f6d', '0121', '121', 'VVVF-통신이상검지(COMF) (Car6)', 'M3', 'C', 'VVVF-통신이상검지(COMF)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT33의 Bit0 “COMF” 신호가 "1"이 되면 검지.', 'TCMS 화면에 고정정보 현시되며, 추진제어장치 상태화면에 나타나는 데이터에 변동이 없음.', 'TCMS-추진제어장치(VVVF) 간 통신정보가 3초이상 동일한 정보로 유지되면 통신고장을 검지함.', 'TCMS-추진제어장치(VVVF) 간 통신정보가 정상적으로 통신이 될경우 소거됨.', '1) 추진제어장치(VVVF) 리셋 실시 후 통신고장 소거됨을 확인. +2) 통신고장 소거가 되지 않을 경우 추진제어장치 MON 보드 신품으로 교체후 통신고장 소거여부 확인. +3) 위 조건에도 고장이 소거되지 않을 경우, TCMS-추진제어장치간 RS485 통신케이블 연결상태 점검.', null, '2', '2025-10-12 01:21:37.656536+00', null, '다대48량(2015)', 'Rotem'), ('6f87e098-eeed-426a-84c2-24455b9639a1', '0702', '702', 'HVAC#8-냉난방장치2 압축기1 과부하', 'Tc2', 'C', 'HVAC-냉난방장치2 압축기1 과부하', 'C', 'HVAC', 'HVAC 냉방작동 중 냉난방장치2 압축기1 또는 응축기1 모터에 과부하 발생.', '냉방 기능 저하(전냉방시 반냉방으로 작동)', '1) 냉방작동 중 UNIT2의 압축기1 또는 응축기1 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRCM3과 연결된 THR3이 Trip 됨.', 'UNIT2의 압축기1 또는 응축기1 모터의 과부하 조건을 해소하여 정상 가능 상태로 만들고, THR3 및 마이콤 전원 리셋', '1) 냉난방배전반의 점검커버를 열고, THR3의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR4의 전류 세팅값이 11.5A에 맞춰져 있는지 확인하여, 아닐 경우, 십자 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동 시킨 후, THR3의 2차측 2,4,6 단자에서 각 단자간 상간 전압이 AC 380V으로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 압축기 및 응축기 단품 상태에서 점검을 한다. +7) THR3의 2차측 2,4,6 단자에서 각 단자간 권선저항이 모두 같은지 확인한다. (±10% 이하) (압축기1 및 응축기1 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT2의 압축기1 또는 응축기1 모터의 결선을 해제한 후 각 부품의 권선저항을 확인 후, 문제가 있는 부품을 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR3 부품을 교체한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('6f9367c8-9a8d-472f-b944-8c29183255d9', '0511', '511', 'DCU#1 5위(R3)-출입문 닫힘 리미트 스위치2 고장', 'Tc1', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 "DCS2 Failure(Right)” 신호가 "1"이 되면 검지.', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('6fa15294-d661-4530-ba8d-443cb93f6914', '0099', '99', '조도제어기 고장(Car8)', 'Tc2', 'D', '조도제어기 고장(TC2)', 'D', '기타', '차량으로부터 ILLUMINATION CONTROLLER FAULT 신호 입력 시 +', '조도제어기내에서 FAULT 발생 시 릴레이 접점을 CLOSE 하여 FAULT 신호를 차량으로 보냄.', '조도제어기에 전원이 연결된 상태에서 조도제어기내의 컨트롤 보드상의 마이콤이 동작하지 않을 때 FAULT 신호를 보냄 +', '컨트롤 보드상의 마이콤 정상동작 시', '조도제어기내의 컨트롤 보드 교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('6fad35f3-1059-4d35-89f3-07e889d1efaa', '0742', '742', 'HVAC#6-전자접촉기 보조히터3(AHEK) 고장', 'M3', 'C', 'HVAC-전자접촉기 보조히터3(AHEK) 고장', 'C', 'HVAC', 'HVAC 보조난방기 작동 중 AHEK3 전자접촉기 고장 발생.', 'UNIT2 보조난방기 전난방 시 반난방만 작동', '보조난방기 작동 중 2.5초 이상동안 AHEK3 작동 feedback 신호가 수신되지 않는 경우', 'AHEK3 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) AHEK3을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, AHEK3과 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('6faedae2-9025-47e1-bf69-e27e8e4f1be1', '0506', '506', 'DCU#3 4위(L2)-출입문 입력 저전압', 'M2', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 "1"이 되면 검지.', '저전안 상태 (출입문 동작이 심하게 느려지거나 작동조차 안될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('70079d1c-cc72-40f3-9dff-3e98f6992c6d', '0508', '508', 'DCU#7 5위(R3)-출입문 모터/인코더 고장', 'M4', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 "Motor / Encoder failure” 신호가 "1"이 되면 검지.', '출입문 정상동작 불가', '1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우 (인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터 / 인코더 회로가 손상된 경우', '모터/인코더 및 DCU가 정상상태이고, 전기적 연결상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있느지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. +★ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. + +1. DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. +2. DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) +3. DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('700f6d55-94b0-453c-bfb9-c83c78a4290a', '0518', '518', 'DCU#2 6위(L3)-출입문 Enable 신호 에러', 'M1', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 "Enable signal error” 신호가 "1"이 되면 검지.', 'DCU 출입문 Enable 신호 에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) 취급시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함.', '해당출입문 enable 신호 수신', '1) AUTO/MCS 모드시에는 YARD모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인한다. (YARD/FMC 모드시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.392739+00', null, '로템40량(2018)-1단계', 'Rotem'), ('7017a5c2-e2a7-453e-97cf-03292b8a2ce9', '0732', '732', 'HVAC#8-실외온도 센서1 고장', 'Tc2', 'C', 'HVAC-실외온도 센서 고장', 'C', 'HVAC', '실외온도 센서 고장 발생', '실외온도 센서 고장현시', '온도센서 검지범위는 -45~85도 (820~1330옴) 인데, 2초 이상 검지범위를 벗어나는 경우', '온도센서 검지 값이 2초 이상 허용온도 범위 내 일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820~1330옴 을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우, 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('7022e529-92d6-4b7f-a397-5bdbc0315cb4', '0507', '507', 'DCU#5 5위(R3) - 초기화 실패', 'T2', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 “Calibration failure” 신호가 “1”이 되면 검지 +', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터 고장, 장애물감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우 +', '초기화 실패를 야기한 고장코드를 확인하여 조치 후, 재닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인한다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('70512c5d-74d2-498d-ae3e-1c98d017f1fa', '0324', '324', 'ATC#1 - ATO PG1 미스 오류', 'Tc1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('705b8f91-dcde-43dc-aeaa-4b46d685b14e', '1201', '1201', 'FDU#2-감지기1 화재감지', 'M1', 'W', 'FDU-감지기1 화재감지', 'W', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 "Detector1 State” 신호가 "11"이 되면 검지.', '화재상태 현시(자동 소거 안됨)', '하기 2가지 조건을 모두 만족하여야 화재신호가 출력 됨(연동모드 동작). +1) 이웃한(앞 혹은 뒤에 위치한) 감지기 중 하나의 감지기라도 주의 혹은 화재상태에 있어야 함. +2) Detector1(해당 감지기)에서 측정된 연기농도가 15% 이상이거나 온도가 65℃ 이상인 경우', '1) FDU의 복귀버튼 조작시 +2) FDU 전원 리셋시', '1) 해당 감지기 위치의 화재 발생 여부 확인 +2) 화재 오 감지일경우 FDU의 복귀버튼 취급 +3) 오감지일경우 감지기의 청소주기 확인(내부 먼지 제거)', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('7064c1c8-462b-44bd-abe0-6442adff4795', '0516', '516', 'DCU#5 5위(R3)-출입문 장애물로 인한 닫힘 실패', 'T2', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Close failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림상태로 대기', '도어 닫힘 중 3회 장애물 감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('706530ad-6e2a-4229-a12a-e374abffb4f5', '0202', '202', 'BECU#4 - 덤프밸브 고장(전두대차)', 'T1', 'C', 'BECU-덤프밸브고장(선두대차)', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit1 “덤프밸브고장(선두대차)” 신호가 “1”이 되면 검지 +', '해당 차량 덤프밸브고장(선두대차)검지 현시 및 해당 차량 활주제어불가', '해당 차량 선두대차의 덤프밸브가 작동하지 않음. +', '해당 차량 선두대차의 덤프밸브가 정상작동 시 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('706c468c-a02e-435a-892d-8af4858803ee', '0508', '508', 'DCU#3 6위(L3) - 출입문 모터/인코더 고장', 'M2', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 “Motor / Encoder failure” 신호가 “1”이 되면 +검지 +', '출입문 정상동작 불가', ' +1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우(인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터/인코더 회로 가 손상된 경우 +', '모터/인코더 및 DCU가 정상 상태이고, 전기적 연결 상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있는지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. ※ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. ? DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. ? DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) ? DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('706da2b2-fbb9-42b0-bf0e-62b1a8e50eb5', '0100', '100', 'VVVF#2 통신고장', 'M1', 'B', 'VVVF-통신고장', 'B', 'VVVF', 'VVVF와 TCMS 간 RS485 통신고장이 검지되면 발생 +', 'TCMS 화면에 고정정보 현시되며, 추진제어장치상태화면에 나타나는 데이터에 변동이 없음.', 'TCMS-추진제어장치(VVVF)간 통신정보가 3초 이상 동일한 정보로 유지되면 통신고장을 검지함. +', 'TCMS-추진제어장치(VVVF) 간 통신정보가정상적으로 통신이 될 경우 소거됨.', '1) 추진제어장치(VVVF) 리셋 실시 후 통신고장 소거됨을 확인 +2) 통신고장 소거가 되지 않을 경우 추진제어장치 PUZ 보드 신품으로 교체 후 통신고장 소거여부 확인 +3) 위 조건에도 고장이 소거되지 않을 경우, TCMS-추진제어장치 간 RS485 통신케이블 연결 상태 점검', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7075ce46-1e4a-4a9b-930f-9e42c29052ed', '0170', '170', 'VVVF#3 - 보호동작 설정치 이상검지(SETERR)', 'M2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('707b15c9-fb70-48fd-870c-f74c1e8be34a', '0500', '500', 'DCU#5 5위(R3) 통신고장', 'T2', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS간 RS485 통신고장이 검지되면 발생.', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐 상태 등의 변화가 없음.', '1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우', '해당차량의 DCU 및 CU/TU 의 전원이 정상상태이고, 통신라인 연결상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜저 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는데도 지속적으로 통순고장이 검지되면, DCU의 X2,X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('70941640-6611-4a4f-9c47-f464d6b928f0', '1207', '1207', 'FDU#5 - 감지기4 화재감지', 'T2', 'W', 'FDU-감지기4 화재감지 (Car1~8)', 'W', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 “Detector1 State” 신호가 “11”이 되면 검지 +', '화재상태현시(자동소거 안 됨.)', '하기 2가지 조건을 모두 만족하여야 화재신호가 출력 됨. (연동모드 동작) +1) 이웃한(앞 혹은 뒤에 위치한) 감지기 중 하나의 감지기라도 주의 혹은 화재상태에 있어야 함. +2) Detector1(해당 감지기)에서 측정된 연기농도가 15% 이상이거나 온도가 65℃ 이상인 경우 +', '1) FDU의 복귀버튼 조작 시 +2) FDU 전원 리셋 시', '1) 해당 감지기 위치의 화재 발생 여부 확인 +2) 화재 오감지일 경우 FDU의 복귀버튼 취급 +3) 오감지일 경우 감지기의 청소주기 확인(내부 먼지 제거)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('70b5ec16-89ee-4b4d-afe9-15b3540bd57d', '0749', '749', 'HVAC#1-380V 전원고장', 'Tc1', 'C', 'HVAC-380V 전원고장', 'C', 'HVAC', 'HVAC 메인 전원 AC 380V 전원 고장 발생', 'HVAC 냉방 및 난방 기능 불가', '차량으로부터 공급되는 AC 380V가 입력되지 않는 경우', '차량으로부터 AC 380V 전압이 정상적으로 입력', '1) 차량으로부터 AC 380V 전압이 정상적으로 입력되는지 확인한다. +2) 차량전원이 정상일 경우, 냉난방 배전반의 CBLVD 차단기가 꺼져 있는지 확인 후, 꺼져있을 경우, 켠다. +3) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('70b97ad9-1a90-45fa-9bb0-0678d400449c', '0240', '240', 'BECU#5 - 2축 스키드신호', 'T2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('70be981b-35cb-49fd-b3d4-791f65f547a4', '0208', '208', 'BECU#5-공기제동장치고장', 'T2', 'C', 'BECU-공기제동장치고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit7 “공기제동장치고장” 신호가 "1"이 되면 검지.', '해당 차량 공기제동장치고장 검지 현시 및 해당 차량 정상적인 제동제어 불가.', '해당 차량 BECU의 자가진단 시 고장 발생 또는 AC압력센서 고장.', '해당 차량 BECU의 자가진단 시 정상적일 경우 또는 AC압력센서가 정상일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('70cd9229-5d8b-449b-a1ec-c7caa11d57b0', '0225', '225', 'BECU#6 - 강제완해검지(CPRD)', 'M3', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('70d32922-ddea-468d-87ee-d3e09acd3cab', '1212', '1212', 'FDU#6 -', 'M3', null, null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('70da5203-607c-4220-9ccc-ffe663c3aced', '0711', '711', 'HVAC#3 - 냉난방장치2 압력스위치1(DPS) 저압', 'M2', 'D', 'HVAC-냉난방장치2 압력스위치1(DPS) 저압', 'D', 'HVAC', '냉난방장치2 냉매 압력스위치1 저압 발생 +', 'UNIT2CYCLE1 냉방기능불가', 'UNIT2DSP1측 냉매압력이 3초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우 +', '냉매압력이 정상수치 2±0.5(kgf/cm2) 이상으로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CREF4의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)를 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설 여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안 되는 것을 확인한 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('70ed63d2-c9cb-417d-a7d2-ce7c2015e515', '0520', '520', 'DCU#6 5위(R3) - 이중계 절체 동작', 'M3', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 “Module switchover” 신호가 “1”이 되면 검지 +', '이중계 절체 동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러) 이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A'모듈 및 ‘B'모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('711193f2-db27-4afe-ac75-ed8f7a064019', '0411', '411', 'SIV#1 - 게이트 드라이버 고장, WZ2상(GDFWZ2)', 'Tc1', 'C', 'SIV-게이트 드라이버 고장, WZ2상(GDFWZ2)', 'C', 'SIV', '보조전원장치(SIV)의 RS485 데이터 중 SIV-TCMS SD TEXT5의 Bit1 “GDFWZ2” 신호가 “1”이 되면 검지 +', '1) TCMS 화면하단 또는 고장화면에 ‘GDFWZ2상 이상 검지' 표시됨. +2) 보조전원장치(SIV)는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 보조전원장치(SIV) 중고장이 발생됨. +5) 중고장이 발생되면 TCMS 일반화면에 보조전원장치(SIV) 상태 붉은색으로 표기되며, 연장급점 됨.', '보조전원장치(SIV) 내부GDU에 과전류, 과온이 검지될 경우 +', '1) 경고장이 발생할 경우 보조전원장치(SIV) 자동 재기동에 의해 재기동 됨. +2) 중고장이 발생할 경우 보조전원장치(SIV) 리셋으로 고장 소거됨.', '1) 상기 고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 보조전원장치(SIV) 고장기록을 수집하여 출력되는 3상의 AC 전류치를 확인함. +3) 특정상의 전류치가 비정상적일 경우 특정상에 해당되는 GDU, 전류센서, 출력단 결선을 확인 한다. +4) 전류센서와 보조전원장치(SIV) 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작 상태를 시험기를 통해 확인한다. +6) GDU 전원공급기의 전원연결 상태 또는 광케이블의 연결 상태와 배선상태를 확인한다. +7) 출력단 각상의 절연상태 및 각상과 접지 간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7112281e-4b2f-4201-ae11-5383b8c91875', '0228', '228', 'BC 코크(차하#1) 차단(Car7)', 'M4', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('71138521-c1d8-49cc-a576-46f8ac7c5cea', '0042', '42', '비상판토 하강', 'Tc1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('71184d96-3dc0-4909-be50-c71bac38dcbe', '0234', '234', '제동불완해검지(NRBD, Car7)', 'M4', 'B', '제동불완해검지(NRBD)', 'B', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT8의 Bit2 “NRBD” 신호가 "1"이 되면 검지.', '해당 차량 제동불완해 검지 현시 및 완해 취급하였음에도 불구하고 해당 차량 제동압력(BCP)이 완해되지 않음.', '제동완해 상태(정차제동 포함)에서 해당 차량의 제동압력이 완전히 배기 되지 않음.', '제동완해 상태(정차제동 포함)에서 해당 차량의 제동압력이 완전히 배기 됨.', '정차하여 강제완해스위치를 취급하여 소거 여부 확인. 제동 완해상태 확인 후 주의 운전 할 것. +2~3회 시도에도 완해불능시 관제보고하고 지시에 따를 것.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('7136003a-4f0f-4ac0-9572-9203331f61d5', '0222', '222', 'BECU#5-공기스프링누설(후미대차)', 'T2', 'C', 'BECU-공기스프링누설(후미대차)', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit5 “공기스프링누설(후미대차)” 신호가 "1"이 되면 검지.', '해당 차량 공기스프링누설(후미대차) 검지 현시 및 해당차량 정상적인 제동제어 불가.(응하중 제어)', '해당 차량 후미대차의 공기스프링(AS3, AS4) 압력이 정상범위를 벗어남.(100kPa 미만)', '해당 차량 후미대차의 공기스프링(AS3, AS4) 압력이 정상범위일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('713a6723-8bf1-4f77-a568-fc0f9c9a8215', '0508', '508', 'DCU#6 4위(L2) - 출입문 모터/인코더 고장', 'M3', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 “Motor / Encoder failure” 신호가 “1”이 되면 +검지 +', '출입문 정상동작 불가', ' +1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우(인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터/인코더 회로 가 손상된 경우 +', '모터/인코더 및 DCU가 정상 상태이고, 전기적 연결 상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있는지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. ※ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. ? DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. ? DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) ? DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('71482a7a-fd51-4bc8-a17e-19f7f9beb0e9', '0211', '211', 'BECU#8-2축속도신호의 비정상', 'Tc2', 'C', 'BECU-2축속도신호의 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit2 “2축속도신호의 비정상” 신호가 "1"이 되면 검지.', '해당 차량 2축속도신호의 비정상 검지 현시 및 해당 차량 활주제어 불가.', '해당 차량의 2축 속도센서 고장 발생.', '해당 차량의 2축 속도센서가 정상적일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('714a7671-3dc8-4a61-bfc7-42a7c0fad39a', '0038', '38', '강제완해 스위치 취급', 'Tc1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('715127d2-19b8-4144-88f3-8cc8ce44ae44', '0407', '407', 'SIV#1-인버터2 입력 과전압(INV2OV)', 'Tc1', 'C', 'SIV-인버터2 입력 과전압(INV2OV)', 'C', 'SIV', '보조전원장치(SIV)의 RS485 데이터 중 SIV-TCMS SD TEXT6의 Bit5 “INV2OV” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 '인버터2 입력 과전압(INV2OV)' 표시됨. +2) 보조전원장치(SIV)는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 보조전원장치(SIV) 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 보조전원장치(SIV) 상태 붉을색으로 표기되며, 연장급전 됨.', '보조전원장치(SIV) 내부 인버터 2의 FC전압이 1,200V 이상일 경우 검지됨.', '1) 경고장이 발생할 경우 보조전원장치(SIV) 자동 재기동에 의해 재기동 됨. +2) 중고장이 발생했을 경우 조치 완료 후 보조전원장치(SIV) 리셋으로 고장 소거됨.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 보조전원장치(SIV) 고장기록을 수집하여 FC전압에 이상이 있는지 확인한다. +3) 보조전원장치(SIV) 내부 고전압부에 소손흔적이 있는지 확인한다. +4) FC에 연결된 버스바의 체결상태가 양호한지 확인한고, 버스바를 분리하여 FC의 Capacitance를 측정하여 이상이 없는지 확인한다. +5) 전압센서와 보조전원장치(SIV) 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +6) SEN 보드의 동작상태를 시험기를 통해 확인한다. +7) 출력단 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('7160cfea-a204-45bb-bedb-b247bd76b6c5', '0508', '508', 'DCU#2 3위(R2) - 출입문 모터/인코더 고장', 'M1', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 “Motor / Encoder failure” 신호가 “1”이 되면 +검지 +', '출입문 정상동작 불가', ' +1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우(인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터/인코더 회로 가 손상된 경우 +', '모터/인코더 및 DCU가 정상 상태이고, 전기적 연결 상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있는지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. ※ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. ? DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. ? DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) ? DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7169ad02-78e3-4059-ad91-87b39414c74b', '0745', '745', 'HVAC#2-전자접촉기 배기팬2(CRVF) 고장', 'M1', 'C', 'HVAC-전자접촉기 배기팬2(CRVF) 고장', 'C', 'HVAC', 'HVAC 환기 작동 중 CRVF2 전자접촉기 고장 발생.', '환기 시 차량 배기팬2 운전 불가능', '환기 작동 중 2.5초 이상동안 CRVF2 작동 feedback 신호가 수신되지 않는 경우', 'CRVF2 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CRVF2를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRVF2와 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('7173cf19-22e5-4fe8-99ed-aa960f8fd494', '0510', '510', 'DCU#8 1위(R1) - 출입문 닫힘 리미트 스위치1 고장', 'Tc2', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 “DCS1 Failure(Leftt)” 신호가 “1”이 되면 검지 +', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7178e689-a367-42ad-bffa-21a7db4bce64', '0726', '726', 'HVAC#8 - 배기팬2 과부하', 'Tc2', 'C', 'HVAC-배기팬2 과부하', 'C', 'HVAC', 'HVAC 환기작동 중 차량 배기팬2 모터에 과부하 발생 +', '환기 시 차량 배기팬2 운전 불가능', ' +1) 냉방 작동 중 챠량 배기팬2 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRVF2와 연결된 THR10이 Trip 됨. +', '차량 배기팬2 모터의 과부하조건을 해소하여 정상 가능 상태로 만들고, THR10 및 마이콤 전원 리셋', '1) 냉난방 배전반의 점검커버를 열고, THR10의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR10의 전류 세팅값이 2.5A에 맞춰져 있는지 확인하여, 아닐 경우, (+) 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동시킨 후, THR10의 2차측 2, 4 단자와 6 단자 사이의 전압이 DC 100V로 정상 측정 되는지 확인한다. +5) 만약 전압이 측정되지 않을 시, 전원이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, THR10 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('718ff394-0e2d-41eb-80c3-82ff56a8954e', '0753', '753', 'HVAC#3 - 배기댐퍼 열림고장', 'M2', 'C', 'HVAC-배기댐퍼 열림고장', 'C', 'HVAC', '환기 시, 차량 배기댐퍼가 열려 있는 상태에서 배기댐퍼 열림 리미트 스위치가 작동되지 않음 +', '배기댐퍼 열림 고장 현시', '배기댐퍼를 열림으로 제어했으나 열림 리미트 스위치 입력이 없을 경우 +', '배기댐퍼 열림상태에서 리미트 스위치 입력이 정상적으로 입력', '1) 배기댐퍼가 열린 상태에서 열림 리미트 스위치가 정상적으로 작동되었는지 확인한다. +2) 열림 리미트 스위치가 정상작동 되었음에도 문제가 발생될 경우, 스위치를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('719448db-e997-4390-979d-91e48bd62e09', '0163', '163', 'VVVF#3-FC과전압검지2(OVD2)', 'M2', 'C', 'VVVF-FC과전압검지2(OVD2)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT32의 Bit4 “OVD2” 신호가 "1"이 되면 검지.', null, 'FC전압 1850V이상 도달 시 고장검지', '제동 OFF', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 FC전압에 이상이 있는지 확인한다. +3) 추진제어장치 내부 고전압부에 소손흔적이 있는지 확인한다. +4) FC에 연결된 버스바의 체결상태가 양호한지 확인한고, 버스바를 분리하여 FC의 Capacitance를 측정하여 이상이 없는지 확인한다. +5) 전압센서의 외관 및 단자 체결상태를 확인한다. +6) 추진제어장치 시험기를 이용하여 TCU(통합제어장치)의 이상여부를 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('71a032d0-5714-4bab-ba96-86b744e575cc', '0737', '737', 'HVAC#7 - 전자접촉기 증발기4(CREF) 고장', 'M4', 'C', 'HVAC-전자접촉기 증발기4(CREF) 고장', 'C', 'HVAC', 'HVAC 냉방 작동 중 CREF4 전자접촉기 고장 발생 +', 'UNIT2 냉방 작동 불가', '냉방 작동 중 2.5초 이상 동안 CREF4 작동 feedback 신호가 수신되지 않는 경우 +', 'CREF4 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CREF4를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CREF4와 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('71a40565-0193-4a61-9a93-401b71d1d8cf', '0500', '500', 'DCU#2 6위(L3) 통신고장', 'M1', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS 간 RS485 통신고장이 검지되면 발생 +', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐상태 등의 변화가 없음.', ' +1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우 +', '해당 차량의 DCU 및 CU/TU의 전원이 정상상태이고, 통신 라인 연결 상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜져 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적 으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는 데도 지속적으로 통신고장이 검지되면, DCU의 X2, X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상 체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('71a61969-075f-47b3-8882-d7efd861ea9f', '0514', '514', 'DCU#7 3위(R2) - 출입문 닫힘 시간 초과', 'M4', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 “Close time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 닫힘 동작 시간이 7초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도한 후, ‘장애물로 인한 닫힘 실패' 고장과 함께 ‘Close time out' 고장이 함께 현시 +', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('71ac5b27-c3b1-42c0-9b90-6d1fba941fa0', '0508', '508', 'DCU#1 6위(L3)-출입문 모터/인코더 고장', 'Tc1', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 "Motor / Encoder failure” 신호가 "1"이 되면 검지.', '출입문 정상동작 불가', '1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우 (인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터 / 인코더 회로가 손상된 경우', '모터/인코더 및 DCU가 정상상태이고, 전기적 연결상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있느지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. +★ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. + +1. DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. +2. DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) +3. DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('71ace372-f4f5-4cc1-8108-a313b5e75cac', '0752', '752', 'HVAC#4 - 배기댐퍼 닫힘고장', 'T1', 'C', 'HVAC-배기댐퍼 닫힘고장', 'C', 'HVAC', '차량 배기댐퍼가 닫혀있는 상태에서 배기댐퍼 닫힘 리미트 스위치가 작동되지 않음 +', '배기댐퍼 닫힘 고장 현시', '배기댐퍼를 닫힘으로 제어했으나 닫힘 리미트 스위치 입력이 없을 경우 +', '배기댐퍼 닫힘 상태에서 리미트 스위치 입력이 정상적으로 입력', '1) 배기댐퍼가 닫힌 상태에서 닫힘 리미트 스위치가 정상적으로 작동되었는지 확인한다. +2) 닫힘 리미트 스위치가 정상작동 되었음에도 문제가 발생될 경우, 스위치를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('71bc2a56-f4ee-4efd-9e77-a72b86631ed3', '0515', '515', 'DCU#4 5위(R3) - 출입문 열림 시간 초과', 'T1', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 “Open time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 열림 동작시간이 6초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도한 후, ‘장애물로 인한 열림 실패' 고장과 함께 ‘Open time out' 고장이 함께 현시 +', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('71cd3bdd-fe3f-41b1-9759-9e1686e52e9e', '0169', '169', 'VVVF#6-상전류 동기 불평형 검지(RETRY)', 'M3', 'C', 'VVVF-탈조검지(RETRY)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT33의 Bit2 “RETRY” 신호가 "1"이 되면 검지.', null, '동기전동기의 회전자와 고정자의 위상차가 허용치 이상 발생시 고장검지.', '자동재기동', '1) 상기 고장이 간헐적으로 발생하는 경우 아래와 같이 조치한다. +2) 견인전동기의 취급 절차서에 따라 절연저항 및 내전압 시험을 실시한다. +3) CTU, CTW 전류센서의 외관 및 저전압 커넥터 연결상태를 확인한다. +4) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:37.578803+00', null, '로템40량(2018)-1단계', 'Rotem'), ('71cd74bf-48d8-4027-a1aa-17f4cea4e955', '1522', '1522', 'TCMS 데이타버스1 좌측라인 통신 이상(Car5)', 'T2', 'C', 'TCMS 데이터버스1 좌측라인 통신 이상', 'C', 'TCMS', 'TCMS의 초기 기동 시 자기진단에 의한 2중계 메인통신선 중 1계 메인통신 이상 검지 시 +', '1) SL-NET 2중계이므로 데이터버스 2계로 정상통신, 운행에 지장 없음. +2) 초기기동 자기진단 시 2중계를 점검하여 1계측의 이상이 검지되었다는 점검 필요용 메시지', '초기 기동 시 SL-NET 1계와 2계를 각각 통신 후 비교하여 2계는 정상통신이 되나 1계는 정상통신이 안 되는 경우 +', '정상 수리 후 차량 전체 재기동하여 SL-NET 1계와 2계 모두 정상통신이 되는 경우', '1) 고장검출호차와 고장검출 좌측호차와의 SL-NET 통신 1계 정상여부 확인(예 : 고장호차가 3호차인 경우 1-2-3-4-5-6-7-8에서 3호차의 좌측, 즉 2-3호차 간 SL-NET 1계 통신 상태 점검 필요) +2) 고장검지호차의 SCM PCB 교체 정상여부 확인 +3) 고장검지호차의 좌측호차 SCM PCB 교체 정상여부 확인 +4) 고장검지호차와 고장검지 좌측호차의 SL-NET 1계 메인통신 배선의 연결 상태 확인 +5) 상기 2 ~ 4번 점검에도 정상적으로 복귀되지 않는 경우, CU/TU ASS'Y 교체(백보드 확인 필요)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('71d796ba-6a72-4a2f-b8a3-3bc3e1cf1035', '0230', '230', 'ECU 전원공급 고장(Car8)', 'Tc2', 'B', 'ECU 전원공급 고장', 'B', 'BECU', '해당 차량의 ECU 전원공급 고장(CB OFF) 발생 시 검지 +', '해당 차량의 ECU 전원공급 고장검지 현시', '해당 차량의 ECU 전원차단(CBOFF) +', '해당 차량의 ECU 전원공급(CBON)', 'BECU를 리셋(BECUCBOFF/ON)하여 소거 여부 확인, 지속적으로 고장 발생 시 관제 보고하고 지시에 따를 것', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('71db859e-ec32-4564-9810-640cfaa2a63b', '758', '758', 'CAB HVAC#1 - 증발기 과부하', 'Tc1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('71df311c-deaf-4152-864e-f3b9ed8e2fc8', '0518', '518', 'DCU#4 2위(L1) - 출입문 Enable 신호 에러', 'T1', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 “Enable signal error” 신호가 “1”이 되면 검지 +', 'DCU 출입문Enable신호에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드 시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을 때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드 시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입 상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호 장치로부터의 출입문 열림 명령 신호) 취급 시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함. +', '해당 출입문 enable 신호수신', '1) AUTO/MCS 모드 시에는 YARD 모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인 한다. (YARD/FMC 모드 시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('71ec3659-b367-4aeb-bf77-e4f5f4a82129', '0507', '507', 'DCU#7 1위(R1) - 초기화 실패', 'M4', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 “Calibration failure” 신호가 “1”이 되면 검지 +', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터 고장, 장애물감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우 +', '초기화 실패를 야기한 고장코드를 확인하여 조치 후, 재닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인한다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('71eccf77-49b0-4f86-a217-4e01be2eda93', '0215', '215', 'BECU#7-후미대차 AS압력센서고장', 'M4', 'C', 'BECU-후미대차 AS압력센서 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit6 “후미대차 AS압력센서 고장” 신호가 "1"이 되면 검지.', '해당 차량 후미대차 AS압력센서 고장 검지 현시 및 해당차량 정상적인 응하중 제동제어 불가.', '해당 차량의 후미대차 AS 압력센서(AS3, AS4) 고장.', '해당 차량의 후미대차 AS 압력센서(AS3, AS4)가 정상일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('71ee1a3f-e441-4e99-b351-c16ae88de035', '0166', '166', 'VVVF#2-대활주/대공전(WSD)', 'M1', 'W', 'VVVF-대활주/대공전(WSD)', 'W', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT32의 Bit7 “WSD” 신호가 "1"이 되면 검지.', null, '공전, 활주 발생 시 고장검지', '1) 역행 자동복귀 +2) 제동 제동 OFF시', '1) 주행 당시의 노선상태가 오염, 습기, 결빙 등 외부환경에 의한 경우 조치할 내용은 없다. +2) 과도한 발생 시 낮은 견인력/제동력으로 주행. +3) 차륜에 윤활성 물질 오염여부 확인 및 세척. +4) 차륜 표면에 찰상 등 흔적이 있는 경우 삭정하여 운행한다.', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('71f95e4c-431e-4fc5-9171-2b634abb2b67', '0017', '17', '모든 출입문 바이패스 스위치 취급', 'Tc1', 'W', null, null, 'ATC', null, null, null, null, null, null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('72027341-43af-4b0e-a529-925c40134636', '0513', '513', 'DCU#4 2위(L1) - 모듈 상태체크 에러', 'T1', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 “Module check error” 신호가 “1”이 되면 검지 +', 'Modulecheckerror현시(출입문은 정상작동가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태 체크 기능에 이상이 생긴 경우 고장 발생 +', 'DCU의 ‘A' 모듈과 ‘B' 모듈 간, 상태 체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('72074185-d570-49c0-9d23-7f0ca0c6029f', '0889', '889', '출력증폭기#2(AMP) 고장(Car#8)', 'Tc2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('720e5f46-e820-4f4a-9775-f3f94b2b8134', '0510', '510', 'DCU#5 4위(L2) - 출입문 닫힘 리미트 스위치1 고장', 'T2', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 “DCS1 Failure(Leftt)” 신호가 “1”이 되면 검지 +', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7211b061-7a55-4b9a-a62e-a0baee914cf1', '0501', '501', 'DCU#3 6위(L3) - 출입문 차단', 'M2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7226f75e-6375-4117-b2c3-128a9b2a5a73', '0148', '148', 'VVVF#7 - FC 과전압검지(OVD1)', 'M4', 'C', 'VVVF-FC 과전압검지(OVD1)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT30의 Bit5 “OVD1” 신호가 “1”이 되면 검지 +', '1) TCMS 화면 하단 또는 고장화면에 ‘FC 과전압검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생함. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉은색으로 표기되며, HSCB, LB1, 2 개방되어 동력 손실 발생함.', '추진제어장치 내부 FC 전압이 2,100V 이상일 경우 검지됨. +', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반 배전반의 VVVFIC nfb 재투입 또는 차량 배터리 전원 재투입', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 FC전압에 이상이 있는지 확인한다. +3) 추진제어장치 내부 고전압부에 소손흔적이 있는지 확인한다. +4) FC에 연결된 부스바의 체결상태가 양호한지 확인한고, 부스바를 분리하여 FC의 Capacitance를 측정하여 이상이 없는지 확인한다. +5) 전압센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +6) SEN 보드의 동작 상태를 시험기를 통해 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지 간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7229c187-eba9-4e2c-8ffe-aca7ab8b403b', '0731', '731', 'HVAC#5 - 냉난방장치1 리턴 센서 고장', 'T2', 'C', 'HVAC-냉난방장치1 리턴 센서 고장', 'C', 'HVAC', '냉난방장치1의 리턴 센서 고장 발생 +', '냉난방장치1 리턴 센서 고장현시', '온도센서 검지범위는 -45 ~ 85도(820 ~ 1,330Ω)인데, 2초 이상 검지범위를 벗어나는 경우 +', '온도센서 검지값이 2초 이상 허용온도 범위 내일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820 ~ 1,330Ω을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('723855de-3258-4ef7-b1c0-2ac5b978e67f', '1000', '1000', 'CMSB#1 통신고장', 'Tc1', 'C', 'CMSB 통신고장(Car1,Car8)', 'C', 'CMSB', 'CMSB와 TCMS 간 RS485 통신고장이 검지되면 발생 +', 'CMSB 통신고장 메시지 현시', 'CMSB 통신고장 또는 통신 케이블 문제 +', null, '0) 정상운행 후, 검수고에 입고하여 아래와 같이 조치한다. +1) 상기고장은 고장 소거 후, 재현시험을 진행하여 지속적으로 발생될 경우 아래와 같이 조치 한다. +2) TCMS와 CMSB간의 통신계통 점검(TCMS, 통신케이블, CMSB 제어기 보드)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7238e486-e5c2-447b-891a-a36dac0db151', '1208', '1208', 'FDU#7 - 감지기4 고장', 'M4', 'C', 'FDU-감지기4 고장 (Car1~8)', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 “Detector1 State” 신호가 “10”이 되면 검지 +', '감지기고장상태현시(자동소거 안 됨)', ' +1) 감지기로부터 데이터 응답이 없는 경우 +2) 감지기로부터 수신된 데이터의 CRC가 맞지 않는 경우 +3) 감지기로부터 수신된 데이터의 ID가 송신 ID와 일치하지 않는 경우 +', 'FDU 전원 리셋 후 감지기로부터 정상적으로 데이터가 수신된 경우', '1) FDU 전원 리셋 후 고장 소거 여부 확인 +2) 정상동작중인 감지기와 위치 교환 후 FDU 전원 리셋 및 고장 상태 확인 +3) 동일한 감지기에서 고장 발생 시 감지기 교체 +4) 동일한 위치에서 고장 발생 시 감지기 라인 점검', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7240abba-31c1-4a15-864f-07f57fc3a00d', '0718', '718', 'HVAC#2 - CO2 센서1 고장', 'M1', 'C', 'HVAC-CO2 센서1 고장', 'C', 'HVAC', '객실 CO2 센서1 고장 발생 +', 'CO2 센서1 고장현시', 'CO2 센서의 검지범위는 0 ~ 4,000ppm(2 ~ 10Vdc)인데, 1초 이상 출력전압이 2Vdc(0ppm) 미만으로 떨어지는 경우 +', 'CO2 센서 검지값이 1초 이상 2Vdc(0ppm) 이상 지속되는 경우', '1) 전원을 인가한 상태에서 CO2 센서 커버를 열고 테스터기를 통해 ‘OUT2' 단자와 ‘G' 단자 간의 전압이 2Vdc 미만인지 확인한다. +2) 만약 전압이 2Vdc 이상인데도 고장이 지속될 경우 마이콤을 교체한다. +3) 만약 전압이 2Vdc 미만으로 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('72456e2f-f686-4b8d-bb28-e115db052e4e', '0701', '701', 'HVAC#8-냉난방장치2 압축기2 과부하', 'Tc2', 'C', 'HVAC-냉난방장치2 압축기2 과부하', 'C', 'HVAC', 'HVAC 냉방작동 중 냉난방장치2 압축기2 또는 응축기2 모터에 과부하 발생.', '냉방 기능 저하(전냉방시 반냉방으로 작동)', '1) 냉방작동 중 UNIT2의 압축기2 또는 응축기2 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRCM4와 연결된 THR4가 Trip 됨.', 'UNIT2의 압축기2 또는 응축기2 모터의 과부하 조건을 해소하여 정상 가능 상태로 만들고, THR4 및 마이콤 전원 리셋', '1) 냉난방배전반의 점검커버를 열고, THR4의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR4의 전류 세팅값이 11.5A에 맞춰져 있는지 확인하여, 아닐 경우, 십자 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동 시킨 후, THR4의 2차측 2,4,6 단자에서 각 단자간 상간 전압이 AC 380V으로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 압축기 및 응축기 단품 상태에서 점검을 한다. +7) THR4의 2차측 2,4,6 단자에서 각 단자간 권선저항이 모두 같은지 확인한다. (±10% 이하) (압축기2 및 응축기2 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT2의 압축기2 또는 응축기2 모터의 결선을 해제한 후 각 부품의 권선저항을 확인 후, 문제가 있는 부품을 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR4 부품을 교체한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('724e533e-7ceb-4cfe-a003-b1f0ac4167e6', '0517', '517', 'DCU#2 2위(L1)-출입문 장애물로 인한 열림 실패', 'M1', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Open failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘상태로 대기', '도어 열림 중 3회 장애물 감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 열림 시, 장애물 감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('7254ff9d-268f-45b9-94a8-92f34a2d91bb', '0511', '511', 'DCU#5 5위(R3)-출입문 닫힘 리미트 스위치2 고장', 'T2', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 "DCS2 Failure(Right)” 신호가 "1"이 되면 검지.', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('7259aa4f-a3f7-4122-af31-28587dc9398d', '0201', '201', 'BECU#5-덤프밸브고장(후미대차)', 'T2', 'C', 'BECU-덤프밸브고장(후미대차)', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit0 “덤프밸브고장(후미대차)” 신호가 "1"이 되면 검지.', '해당 차량 덤프밸브고장(후미대차) 검지 현시 및 해당 차량 활주제어 불가.', '해당 차량 후미대차의 덤프밸브가 작동하지 않음.', '해당 차량 후미대차의 덤프밸브가 정상 작동 시 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('726094f6-8847-4066-b4c5-c17df81cf217', '0521', '521', 'DCU#7 1위(R1) - 모듈 상태 이상', 'M4', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 “01” 또는 “00”이 되면 +검지 +', '이중계절체동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러)이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7260fff9-db7b-48f2-b40c-b9aec3a46aa4', '0502', '502', 'DCU#1 4위(L2) - 출입문 장애물검지', 'Tc1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7262d750-f32d-4005-ac95-0c416dd04c2a', '0516', '516', 'DCU#4 2위(L1)-출입문 장애물로 인한 닫힘 실패', 'T1', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Close failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림상태로 대기', '도어 닫힘 중 3회 장애물 감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('7265d0fe-4143-42ce-b545-b727305a150f', '0304', '304', 'ATC#8 - 1계 고장', 'Tc2', 'C', 'ATC-1계 고장', 'C', 'ATC', 'ATC의 RS485 데이터 중 ATC-TCMS SD TEXT7의 Bit4 ~ 7 “ATC/ATO Status” 데이터가 ATC 1계 Bad 상태이면 검지 +', 'MMI에 ATC/ATO1이 빨간색으로 표기되며 관련 고장메시지 현시', ' +1) ATC 시스템 자체 진단테스트 실행결과 비정상상태일 경우 +2) ATC-1계 CPU 보드 고장 시 +3) ATC-1계 POWER 보드 고장 시 +', '상기 검지 조건 해제 시', '1) 전원스위치 CB ATC#1, 2 OFF → ON하여 복귀시도 후, 복귀되었는지 확인한다. +2) 1, 2계 동시 고장 시, 완전수동(FMC) 전환 운행한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('72667020-f8bb-4492-84e3-0ac27aab037a', '0516', '516', 'DCU#2 5위(R3) - 출입문 장애물로 인한 닫힘 실패', 'M1', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Close failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림 상태로 대기', '도어 닫힘 중 3회 장애물감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7266a1aa-1775-4b7a-888c-9d83e4dbd27f', '0182', '182', 'VVVF#7-TCU 초기화(INZ-RST)', 'M4', 'C', 'VVVF-TCU 초기화(INZ-RST)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT34의 Bit7 “INZ-RST” 신호가 "1"이 되면 검지.', null, '통합제어장치 재 기동 시 해당 고장 검지', '초기화 완료', '1) 상기고장이 간헐적으로 발생하는 경우 아래와 같이 조치한다. +2) TCU(통합제어장치)의 입력에 제어전원 DC70 ~100V가 인가되는지 확인한다. +3) TCU(통합제어장치) 후면 커넥터 및 배선의 상태를 확인한다. +4) 추진제어장치 시험기를 이용하여 TCU(통합 제어장치)의 이상여부를 확인한다. +5) PWS보드 또는 통합제어기 교체. +6) 상기의 점검부분에 이상이 있을경우 관련부품을 교체한다.', null, '3', '2025-10-12 01:21:37.578803+00', null, '로템40량(2018)-1단계', 'Rotem'), ('726966f3-aeaa-484f-9093-79f6422055e7', '0895', '895', '비상인터폰 동작(Car#1 - 2)', 'Tc1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('726e8cba-8b6f-4186-9dcb-3dcc4ac24d19', '0003', '3', 'CU1 통신고장', 'Tc2', 'B', 'CU1 통신고장(TC2)', 'B', 'TCMS', '편성제어장치(CU)의 좌측 CU1의 통신고장(또는 우측 CU2의 통신고장) + +', '1) CU1 통신고장 현시, 정상적으로 CU2로 정상적으로 절체 되면 CU1 통신고장만 현시되고 차량 운행에 지장 없음. +2) CU1과 CU2 모두 이상이 있을 경우, DU 일반화면상 모든 정보 표출 불가, DU의 통신고장 발생 할 수 있음. +3) CU2로 절체 될 경우, 화면상의 우측 상단 경고장 하단에 “B.SYS” 글자가 표시됨. (2중계 동작에 의한 화면)', 'CU1과 CU2의 통신정보를 3초 이상 수신 받지 못할 경우 해당 고장 현시, 일반적으로 MCPU 보드의 문제로 해당 MCPU 보드를 교체하거나, 또는 각 회로 차단기의 차단에 따른 고장 현시 +', 'CU1과 CU2 간 통신이 정상적으로 통신을 재개할 경우 소거됨.', '1) CU의 전원차단 CB를 확인 전원차단 CB가 정상 ON이 되어 있다면 MCPU 보드의 전원 LED가 정상적으로 ON이 되어 있는지 확인(MCPU 보드의 ERR LED가 지속적으로 ON 되어 있으면 MCPU 교체 4TX3/4RX3이 정상적으로 점멸하지 않으면 MCPU 교체) +2) CU의 리셋(전원차단 CB OFF → ON)후에도 소거가 되지 않을 경우, MCPU 보드를 교체 (MCPU 교체전 누적 주행거리, 적산전력량, 휠경 설정값을 기록해두고, 교체 후 입력한다.) +3) 위 조건에도 고장이 소거되지 않을 경우, SCM 보드, DIM, AUX 보드 등을 순차적으로 교체 후, 상태를 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('727a62f0-6213-4d4f-b1b4-69d836f7a212', '0703', '703', 'HVAC#8-냉난방장치1 압축기2 과부하', 'Tc2', 'C', 'HVAC-냉난방장치1 압축기2 과부하', 'C', 'HVAC', 'HVAC 냉방작동 중 냉난방장치1 압축기2 또는 응축기2 모터에 과부하 발생.', '냉방 기능 저하(전냉방시 반냉방으로 작동)', '1) 냉방작동 중 UNIT1의 압축기2 또는 응축기2 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRCM2와 연결된 THR2가 Trip 됨.', 'UNIT1의 압축기2 또는 응축기2 모터의 과부하 조건을 해소하여 정상 가능 상태로 만들고, THR2 및 마이콤 전원 리셋', '1) 냉난방배전반의 점검커버를 열고, THR2의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR2의 전류 세팅값이 11.5A에 맞춰져 있는지 확인하여, 아닐 경우, 십자 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동 시킨 후, THR2의 2차측 2,4,6 단자에서 각 단자간 상간 전압이 AC 380V으로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 압축기 및 응축기 단품 상태에서 점검을 한다. +7) THR2의 2차측 2,4,6 단자에서 각 단자간 권선저항이 모두 같은지 확인한다. (±10% 이하) (압축기2 및 응축기2 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT1의 압축기1 또는 응축기1 모터의 결선을 해제한 후 각 부품의 권선저항을 확인 후, 문제가 있는 부품을 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR2 부품을 교체한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('727c85a9-a5fb-49ae-aaf1-404b51216b50', '0166', '166', 'VVVF#2 - 대활주/대공전(WSD)', 'M1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('72817573-7310-4da2-a8e1-52f488f11f4d', '0915', '915', 'TRAIN RADIO#1 - CVD(차량영상장치) 고장', 'Tc1', 'D', 'TRAIN RADIO-CVD(차량 영상장치) 고장', 'C', 'TRS', 'Train Radio의 E-NET 데이터 중 Train Radio-TCMS SD TEXT15의 Bit3 “CVD' 고장” 신호가 “1”이 되면 +검지 +', 'CCTV 영상저장불가', 'HW 고장, 메모리 고장 +', '제어기 리셋', null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('728aa526-cddb-4536-a59e-68c6afb58cae', '0237', '237', '보안제동코크 차단(Car3)', 'M2', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('728c2ef6-3bb0-4a2e-b49a-d425d353a5b9', '0512', '512', 'DCU#6 1위(R1) - 파라미터 로딩 실패', 'M3', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 “Paraneter error” 신호가 “1”이 되면 검지 +', 'Parametererror 현시(출입문은 정상작동 가능)', 'DCU 자체 내의 EEPROM으로부터 parameter데이터 로딩 실패 +', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('728d9a62-1889-4f41-90af-7ee7936a067d', '0736', '736', 'HVAC#4-전자접촉기 압축기(CRCM)1 고장', 'T1', 'C', 'HVAC-전자접촉기 압축기(CRCM)1 고장', 'C', 'HVAC', 'HVAC 냉방작동 중 CRCM1 전자접촉기 고장 발생.', '냉방 기능 저하(전냉방시 반냉방으로 작동)', '냉방작동 중 2.5초 이상동안 CRCM1 작동 feedback 신호가 수신되지 않는 경우', 'CRCM1 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CRCM1을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRCM1과 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('72995c43-6798-4f0b-89e1-9fcfb9c46f0c', '0504', '504', 'DCU#8 2위(L1) - 출입문 외부 비상핸들 취급(EAD)', 'Tc2', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('72a5b0fa-2830-49c9-8ea8-5b01ce53fae6', '0401', '401', 'SIV#8 중고장', 'Tc2', 'B', 'SIV-중고장', 'B', 'SIV', '보조전원장치(SIV)의 RS485데이터 중 SIV-TCMS SD TEXT3의 Bit6 “MJFR”신호가 “1”이 되면 검지 +', '1) 보조전원장치(SIV)일반화면에 보조전원장치 상태 붉은색으로 표시됨. +2) 반대편 TC CAR의 보조전원장치(SIV)가 정상동작이면 자동연장급전 됨. +3) 연장급전 시 편성의 에어컨 반냉, AC등구류 절감 등의 현상이 나타남.', ' +1) 보조전원장치(SIV)의경고장이 3분에 3회 이상누적 또는 지속적으로 검지되어 중고장 발생함. +2) 과온고장, 접지고장에 대해서는 1번 발생으로 중고장 발생함. +', '보조전원장치(SIV) 리셋 실시 후 고장 소거됨. 단, 고장 소거 후 재기동 시 동일 고장이 발생할 경우 다시 중고장 발생함.', '1) 보조전원장치(SIV)리셋 실시 후 중고장이 소거됨을 확인함. +2) 단 주회로 접지고장, THF 고장에 대해서는 리셋 불가함. +3) TCMS 고장데이터 또는 보조전원장치(SIV) 고장 데이터를 통해 중고장이 발생한 고장 내역 수집함. +4) 수집된 고장내역에 따라 조치 실시함.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('72b03c32-28e6-4ee8-933c-b8af5f432633', '0502', '502', 'DCU#1 2위(L1)-출입문 장애물검지', 'Tc1', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('72b61a0e-5f10-4424-8697-ce6562561f52', '0707', '707', 'HVAC#2-냉난방장치2 증발기1 과부하', 'M1', 'C', 'HVAC-냉난방장치2 증발기1 과부하', 'C', 'HVAC', 'HVAC 냉방작동 중 냉난방장치2 증발기 모터에 과부하 발생.', 'UNIT2 냉방 기능 불가', '1) 냉방작동 중 UNIT2의 증발기 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CREF3과 연결된 THR7이 Trip 됨.', 'UNIT2의 증발기 모터의 과부하 조건을 해소하여 정상 가능 상태로 만들고, THR7 및 마이콤 전원 리셋', '1) 냉난방배전반의 점검커버를 열고, THR7의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR7의 전류 세팅값이 3A에 맞춰져 있는지 확인하여, 아닐 경우, 십자 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동 시킨 후, THR7의 2차측 2,4,6 단자에서 각 단자간 상간 전압이 AC 380V으로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 증발기 단품 상태에서 점검을 한다. +7) THR7의 2차측 2,4,6 단자에서 각 단자간 권선저항이 모두 같은지 확인한다. (±10% 이하) (증발기 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT2의 증발기 모터의 결선을 해제한 후 4극 및 6극 모터의 권선저항을 확인 후, 문제가 있을 겨우, 증발기 모터를 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR7 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('72df4d47-734e-4c5c-8190-964f84392bcc', '0514', '514', 'DCU#4 5위(R3) - 출입문 닫힘 시간 초과', 'T1', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 “Close time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 닫힘 동작 시간이 7초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도한 후, ‘장애물로 인한 닫힘 실패' 고장과 함께 ‘Close time out' 고장이 함께 현시 +', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('72f1d3d3-2a6d-40c6-9bcd-9432ea378a37', '1207', '1207', 'FDU#3-감지기4 화재감지', 'M2', 'W', 'FDU-감지기4 화재감지', 'W', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 "Detector1 State” 신호가 "11"이 되면 검지.', '화재상태 현시(자동 소거 안됨)', '하기 2가지 조건을 모두 만족하여야 화재신호가 출력 됨(연동모드 동작). +1) 이웃한(앞 혹은 뒤에 위치한) 감지기 중 하나의 감지기라도 주의 혹은 화재상태에 있어야 함. +2) Detector1(해당 감지기)에서 측정된 연기농도가 15% 이상이거나 온도가 65℃ 이상인 경우', '1) FDU의 복귀버튼 조작시 +2) FDU 전원 리셋시', '1) 해당 감지기 위치의 화재 발생 여부 확인 +2) 화재 오 감지일경우 FDU의 복귀버튼 취급 +3) 오감지일경우 감지기의 청소주기 확인(내부 먼지 제거)', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('730caa20-03ea-4d34-b23e-a9caa27a4e38', '1210', '1210', 'FDU#4-메모리 고장', 'T1', 'C', 'FDU-메모리 고장', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT5의 Bit6 “Memory Fault” 신호가 "1"이 되면 검지.', '1) Memory Fault 현시 +2) FDU의 이벤트 기록 및 읽기 동작 안됨. +3) FDU 환경설정 정보 로딩 실패(차량번호, 주차시간, 절전시간등의 설정값을 기본값으로 로딩)', '메모리 연결 포트의 이상 혹은 배드섹터 발생(메모리 접근 및 읽기, 쓰기가 실패한 경우)', '메모리의 접근 및 읽기, 쓰기 성공', '1) FDU의 전원을 리셋하여 소거여부 확인 +2) 문제가 지속될 경우, 수신기 교체', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('730f731c-a437-4fb9-bea4-2896a60986da', '0726', '726', 'HVAC#7-배기팬2 과부하', 'M4', 'C', 'HVAC-배기팬2 과부하', 'C', 'HVAC', 'HVAC 환기작동 중 차량 배기팬2 모터에 과부하 발생.', '환기 시 차량 배기팬2 운전 불가능', '1) 냉방작동 중 챠량 배기팬2 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRVF2와 연결된 THR10이 Trip 됨.', '차량 배기팬2 모터의 과부하 조건을 해소하여 정상 가능 상태로 만들고, THR10 및 마이콤 전원 리셋', '1) 냉난방배전반의 점검커버를 열고, THR10의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR10의 전류 세팅값이 2.5A에 맞춰져 있는지 확인하여, 아닐 경우, 십자 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동 시킨 후, THR10의 2차측 2,4 단자와 6 단자 사이의 전압이 DC 100V으로 정상 측정되는지 확인한다. +5) 만약 전압이 측정되지 않을 시, 전원이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, THR10 부품을 교체한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('7315ed06-d71b-4ab8-8a6e-1918efbe007f', '0184', '184', '역행관련 회로차단기 차단(Car5)', 'T2', 'W', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.578803+00', null, '로템40량(2018)-1단계', 'Rotem'), ('731fb910-70f0-4826-9f8f-445d589daf95', '0019', '19', '비상제동 스위치 취급(측면)', 'Tc1', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('7327efaa-c642-43a6-9cac-2fd7f9f83f4f', '0864', '864', '비상인터폰#2(PEI) 고장(Car#6)', 'M3', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('732bf4b7-d752-405e-b7f6-f6593d3259fc', '0708', '708', 'HVAC#7-냉난방장치1 증발기1 과부하', 'M4', 'C', 'HVAC-냉난방장치1 증발기1 과부하', 'C', 'HVAC', 'HVAC 냉방작동 중 냉난방장치1 증발기 모터에 과부하 발생.', 'UNIT1 냉방 작동 불가', '1) 냉방작동 중 UNIT1의 증발기 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CREF1과 연결된 THR5가 Trip 됨.', 'UNIT1의 증발기 모터의 과부하 조건을 해소하여 정상 가능 상태로 만들고, THR5 및 마이콤 전원 리셋', '1) 냉난방배전반의 점검커버를 열고, THR5의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR5의 전류 세팅값이 3A에 맞춰져 있는지 확인하여, 아닐 경우, 십자 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동 시킨 후, THR5의 2차측 2,4,6 단자에서 각 단자간 상간 전압이 AC 380V으로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 증발기 단품 상태에서 점검을 한다. +7) THR5의 2차측 2,4,6 단자에서 각 단자간 권선저항이 모두 같은지 확인한다. (±10% 이하) (증발기 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT2의 증발기 모터의 결선을 해제한 후 4극 및 6극 모터의 권선저항을 확인 후, 문제가 있을 겨우, 증발기 모터를 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR5 부품을 교체한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('7339d9d8-3384-4b80-a60e-5a9003a74b21', '0182', '182', 'VVVF#7 - TCU 초기화(INZ - RST)', 'M4', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('733bfe7d-e494-4f1e-b124-e96482d72ae9', '1210', '1210', 'FDU#5-메모리 고장', 'T2', 'C', 'FDU-메모리 고장', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT5의 Bit6 “Memory Fault” 신호가 "1"이 되면 검지.', '1) Memory Fault 현시 +2) FDU의 이벤트 기록 및 읽기 동작 안됨. +3) FDU 환경설정 정보 로딩 실패(차량번호, 주차시간, 절전시간등의 설정값을 기본값으로 로딩)', '메모리 연결 포트의 이상 혹은 배드섹터 발생(메모리 접근 및 읽기, 쓰기가 실패한 경우)', '메모리의 접근 및 읽기, 쓰기 성공', '1) FDU의 전원을 리셋하여 소거여부 확인 +2) 문제가 지속될 경우, 수신기 교체', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('733e6e44-a77d-486f-909e-f8ed5f4a49ac', '0701', '701', 'HVAC#6 - 냉난방장치2 압축기2 과부하', 'M3', 'C', 'HVAC-냉난방장치2 압축기2 과부하', 'C', 'HVAC', 'HVAC 냉방 작동 중 냉난방장치2 압축기2 또는 응축기2 모터에 과부하 발생 +', '냉방 기능 저하(전냉방 시 반냉방으로 작동)', ' +1) 냉방 작동 중 UNIT2의 압축기2 또는 응축기2 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRCM4와 연결된 THR4가 Trip 됨. +', 'UNIT2의 압축기2 또는 응축기2 모터의 과부하조건을 해소하여 정상 가능 상태로 만들고, THR4 및 마이콤 전원 리셋', '1) 냉난방 배전반의 점검커버를 열고, THR4의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR4의 전류 세팅값이 11.5A에 맞춰져 있는지 확인하여, 아닐 경우, (+) 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동시킨 후, THR4의 2차측 2, 4, 6 단자에서 각 단자 간 상간 전압이 AC 380V로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 압축기 및 응축기 단품 상태에서 점검을 한다. +7) THR4의 2차측 2, 4, 6 단자에서 각 단자 간 권선저항이 모두 같은지 확인한다. (±10% 이하) (압축기2 및 응축기2 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT2의 압축기2 또는 응축기2 모터의 결선을 해제한 후 각 부품의 권선저항을 확인 후, 문제가 있는 부품을 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR4 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('73404ddb-ad29-4fa5-a112-9801d882237a', '0203', '203', 'BECU#1-전자제어밸브의 고장', 'Tc1', 'C', 'BECU-전자제어밸브의 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit2 “전자제어밸브의 고장” 신호가 "1"이 되면 검지.', '해당 차량 전자제어밸브의 고장 검지 현시 및 해당 차량 제동제어 불가.', '해당 차량의 상용전자제어밸브가 작동하지 않음.', '해당 차량의 상용전자제어밸브가 정상 작동 시 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('73412bc2-5e19-4cd1-b781-19a349aa9834', '0158', '158', 'VVVF#2 - HSCB고착검지(HBNO)', 'M1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('734561f4-8afe-4a7d-8c24-aa1d6d4f8a40', '0141', '141', 'VVVF#2 - 제어전원전압 이상(PWM1) (CLVD_P1)', 'M1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7347eb52-9de1-42aa-87b2-340c8c0594f3', '0218', '218', 'BECU#5 - 인통선로직 비정상', 'T2', 'C', 'BECU-인통선로 직 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit1 “인통선로 직 비정상” 신호가 “1”이 되면 +검지 +', '해당 차량 인통선로 직비정상 검지 현시 및 해당 차량 정상적인제동제어불가 (상용제동 지령에 따른 제어)', '해당 차량의 추진선택(P), 제동선택(B) 신호가 동시에 ON됨. +', '해당 차량의 추진선택(P), 제동선택(B) 신호가 정상작동(상보적으로 작동)될 경우 소거', 'BECU를 리셋(BECU CB OFF/ON) 한 뒤, 마스콘을 제동 7단으로 5초간 취급하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('734e38cf-c418-4f14-997b-ba350909fd4e', '0175', '175', 'VVVF#6-HSCB 투입불량(HBNC)', 'M3', 'C', 'VVVF-HSCB 투입불량(HBNC)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT34의 Bit0 “HBNC” 신호가 "1"이 되면 검지.', null, 'HSCB 투입이 되지 않을 때 고장검지.', '동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) 판토하강상태에서 테스트모드로 전환하여 시퀀스를 투입하고 HSCB의 주접점 동작을 확인한다. +2) 주회로 차단기함 내에 HSCB의 보조접점의 동작상태를 확인한다. +3) 추진제어장치 계전기 유니트에 HBR 계전기 상태를 확인하여 계전기의 동작 여부를 확인한다. +4) 추진제어장치 시험기를 이용하여 제어기 시험을 실시하여 이상여부를 확인한다.', null, '3', '2025-10-12 01:21:37.578803+00', null, '로템40량(2018)-1단계', 'Rotem'), ('7352d6eb-88c1-402c-9c8b-d7b68a74b059', '0510', '510', 'DCU#4 3위(R2)-출입문 닫힘 리미트 스위치1 고장', 'T1', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 "DCS1 Failure(Leftt)” 신호가 "1"이 되면 검지.', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('7355311f-8963-4489-9f67-c5861c92ea10', '0509', '509', 'DCU#3 2위(L1)-출입문 잠김 리미트 스위치 고장', 'M2', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 "DLS Failure” 신호가 "1"이 되면 검지.', '출입문 잠김 상태 확인 불가', '1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('73631ab9-e725-440d-b14e-603e98d9937e', '0168', '168', 'VVVF#2-응하중 신호 이상검지(BRFD)', 'M1', 'C', 'VVVF-BCU 고장(BRFD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT33의 Bit1 “BRFD” 신호가 "1"이 되면 검지.', null, '응하중 PWM신호의 듀티값 90%이상 도달 시 고장검지', '1) 역행 듀티값 80%이하, 10%이상. +2) 제동 듀티값 80%이하, 10%이상 & 제동 OFF', '1) TCMS의 시리얼 데이터 확인창에서 각 차량의 응하중 값을 확인한다. 수치에 이상이 있는 차량이 확인될 경우 해당 차량의 BCU를 교체한다. +2) 추진제어장치의 외부커넥터 CN1을 분리하여 33번, 34번, 35번 핀의 삽입상태를 확인한다. +3) 차량에 제어전원만 인가 후 PUZ보드에 모니터링 프로그램이 설치된 노트북과 연결하여 응하중값을 확인한다. (공차 34 ~39%) +4) 추진제어장치 시험기를 이용하여 TCU(통합제어장치)의 이상여부를 확인한다.', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('73795aff-acfa-4236-a034-bb206cd00c67', '0229', '229', 'AS 코크#1 차단(Car7)', 'M4', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('737ac5f0-e077-49c9-be21-f0f5b7097cc3', '0073', '73', '경고, 스크린도어 열림상태', 'Tc2', 'W', '경고, 스크린도어 열림상태', 'W', '기타', '차량의 출입문이 닫힌 상태에서 PSD 스크린도어가 열린상태가 3초 이상 유지될 때 경고 +', '1) TCMS 화면 하단에 ‘경고, 스크린도어 열림상태'가 표시되고, 일반화면 우측 PSD 상태에 ‘열림 +경고' 붉은색 점멸 표시됨. +2) PSD 수신 불가 지역에는 경고메시지 해제됨.', 'FM/YARD 이외의 모드 및 PSD와의 통신이 정상상태에서 차량 출입문은 닫힌 상태 이나 PSD로부터 PSD 스크린 도어 열림상태가 3초 이상 지속될 때 검지함. +', '1) PSD로부터 스크린 도어 열림상태 해제 또는 차량으로부터 출입문 열림 신호가 수신되면 해제 +2) 운전모드가 FM/YARD 모드일 때 해제', '1) 대부분 PSD가 늦게 닫힐 때 현시되므로 PSD로부터 닫힘신호가 수신되면 해제됨. +2) 지속 현시되면 차상/지상 PSD 장치 간 통신을 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7388c64e-a6e0-4069-8be7-ce7fdeb2504a', '0517', '517', 'DCU#6 1위(R1) - 출입문 장애물로 인한 열림 실패', 'M3', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Open failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘 상태로 대기', '도어열림 중 3회 장애물감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 열림 시, 장애물감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('738bbc7e-4d45-4e55-98cd-c284795d019e', '0163', '163', 'VVVF#6 - FC과전압검지2(OVD2)', 'M3', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('73958b5f-ff4d-49ac-af8c-413a085c5b44', '0170', '170', 'VVVF#6-보호동작 설정치 이상검지(SETERR)', 'M3', 'C', 'VVVF-보호설정치 이상(SETERR)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT33의 Bit3 “SETERR” 신호가 "1"이 되면 검지.', null, '제어기 내부 보호동작 기준 설정값에 이상이 있을 때 고장검지', '동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) PUZ 보드 전면의 SELECT 스위치와 DATA스위치가 모두 0임을 확인한다. +2) TCU(통합제어장치) 및 PWM 보드를 분리하고 추진제어장치 시험기를 이용하여 제어기 시험을 실시하여 이상여부를 확인한다. +3) 추진장치 시험기 결과를 확인하여 이상이 있을 경우 교체한다.', null, '3', '2025-10-12 01:21:37.578803+00', null, '로템40량(2018)-1단계', 'Rotem'), ('73975a00-62d0-4cb8-8eef-837994f93751', '0124', '124', 'VVVF-전진/후진 이상 검지(FRF) (Car7)', 'M4', 'C', 'VVVF-전진/후진 이상 검지(FRF)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT33의 Bit5 “FRF” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 '전진/후진 신호이상검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치 입력되는 역행/제동신호가 동시에 입력될 경우 검지됨.', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반배전반의 VVVFIC nfb 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 전진/후진신호에 이상이 있는지 확인한다.. +3) 차량의 제어회로 중 전진/후진 신호가 추진제어장치로 연결되는 경로에 이상이 없는지 확인한다. +4) DIN 보드의 동작상태를 시험기를 통해 확인한다. +5) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.71571+00', null, '다대48량(2015)', 'Rotem'), ('739e1d72-0100-47d8-a251-50b235a55bc4', '0711', '711', 'HVAC#6 - 냉난방장치2 압력스위치1(DPS) 저압', 'M3', 'D', 'HVAC-냉난방장치2 압력스위치1(DPS) 저압', 'D', 'HVAC', '냉난방장치2 냉매 압력스위치1 저압 발생 +', 'UNIT2CYCLE1 냉방기능불가', 'UNIT2DSP1측 냉매압력이 3초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우 +', '냉매압력이 정상수치 2±0.5(kgf/cm2) 이상으로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CREF4의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)를 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설 여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안 되는 것을 확인한 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('73b5a9be-751f-44a3-8c34-5464b620d15c', '1110', '1110', 'PSD#8 - 차상 RF 고장(2계)', 'Tc2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('73bc53ba-faeb-408b-8090-9173c46664ca', '0702', '702', 'HVAC#4-냉난방장치2 압축기1 과부하', 'T1', 'C', 'HVAC-냉난방장치2 압축기1 과부하', 'C', 'HVAC', 'HVAC 냉방작동 중 냉난방장치2 압축기1 또는 응축기1 모터에 과부하 발생.', '냉방 기능 저하(전냉방시 반냉방으로 작동)', '1) 냉방작동 중 UNIT2의 압축기1 또는 응축기1 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRCM3과 연결된 THR3이 Trip 됨.', 'UNIT2의 압축기1 또는 응축기1 모터의 과부하 조건을 해소하여 정상 가능 상태로 만들고, THR3 및 마이콤 전원 리셋', '1) 냉난방배전반의 점검커버를 열고, THR3의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR4의 전류 세팅값이 11.5A에 맞춰져 있는지 확인하여, 아닐 경우, 십자 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동 시킨 후, THR3의 2차측 2,4,6 단자에서 각 단자간 상간 전압이 AC 380V으로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 압축기 및 응축기 단품 상태에서 점검을 한다. +7) THR3의 2차측 2,4,6 단자에서 각 단자간 권선저항이 모두 같은지 확인한다. (±10% 이하) (압축기1 및 응축기1 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT2의 압축기1 또는 응축기1 모터의 결선을 해제한 후 각 부품의 권선저항을 확인 후, 문제가 있는 부품을 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR3 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('73c22a07-8377-463a-9991-3f29bc2218de', '0106', '106', 'VVVF-쵸퍼과전류 검지(BOCD) (Car6)', 'M3', 'C', 'VVVF-쵸퍼과전류 검지(BOCD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT31의 Bit1 “BOCD” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 '쵸퍼과전류 검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치에서 제동저항기로 출력되는 전류가 1100A 이상일 경우 검지됨.', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반배전반의 VVVFIC nfb 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 제동저항기로 흐르는 전류치 확인함. +3) 전류치가 비정상적일 경우 제동쵸퍼유닛에 설치된 IGBT, 전류센서, 고전압회로 결선 상태를을 확인한다. +4) 전류센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작상태를 시험기를 통해 확인한다. +6) 제동저항기의 이물질 침투여부를 확인하며, 제동저항기 저항치가 적정한지 확인한다. +7) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.656536+00', null, '다대48량(2015)', 'Rotem'), ('73dba622-0586-4e68-bdc0-450916f07427', '0503', '503', 'DCU#8 3위(R2)-출입문 내부비상핸들 취급(EED)', 'Tc2', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('73e076e0-8cf1-4cc0-8f9a-478c9da9678b', '1201', '1201', 'FDU#6 - 감지기1 화재감지', 'M3', 'W', 'FDU-감지기1 화재감지 (Car1~8)', 'W', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 “Detector1 State” 신호가 “11”이 되면 검지 +', '화재상태현시(자동소거 안 됨.)', '하기 2가지 조건을 모두 만족하여야 화재신호가 출력 됨. (연동모드 동작) +1) 이웃한(앞 혹은 뒤에 위치한) 감지기 중 하나의 감지기라도 주의 혹은 화재상태에 있어야 함. +2) Detector1(해당 감지기)에서 측정된 연기농도가 15% 이상이거나 온도가 65℃ 이상인 경우 +', '1) FDU의 복귀버튼 조작 시 +2) FDU 전원 리셋 시', '1) 해당 감지기 위치의 화재 발생 여부 확인 +2) 화재 오감지일 경우 FDU의 복귀버튼 취급 +3) 오감지일 경우 감지기의 청소주기 확인(내부 먼지 제거)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('73f7d16d-c660-4c34-9a74-1a7d94315d7a', '1206', '1206', 'FDU#5 - 감지기3 고장', 'T2', 'C', 'FDU-감지기3 고장 (Car1~8)', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 “Detector1 State” 신호가 “10”이 되면 검지 +', '감지기고장상태현시(자동소거 안 됨)', ' +1) 감지기로부터 데이터 응답이 없는 경우 +2) 감지기로부터 수신된 데이터의 CRC가 맞지 않는 경우 +3) 감지기로부터 수신된 데이터의 ID가 송신 ID와 일치하지 않는 경우 +', 'FDU 전원 리셋 후 감지기로부터 정상적으로 데이터가 수신된 경우', '1) FDU 전원 리셋 후 고장 소거 여부 확인 +2) 정상동작중인 감지기와 위치 교환 후 FDU 전원 리셋 및 고장 상태 확인 +3) 동일한 감지기에서 고장 발생 시 감지기 교체 +4) 동일한 위치에서 고장 발생 시 감지기 라인 점검', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('74035699-ab58-4e25-b1b1-ed81703e98b3', '0135', '135', 'MDS 서비스위치 아님(Car7)', 'M4', 'W', null, null, 'VVVF', null, null, null, null, null, null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('7418f40b-64b1-43ac-b1bc-59b89ee342e1', '0515', '515', 'DCU#8 2위(L1)-출입문 열림 시간 초과', 'Tc2', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 "Open time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 열림 동작시간이 6초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도 한 후, '장애물로 인한 열림실패' 고장과 함께 'Open time out' 고장이 함께 현시', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('742534e3-cd24-4068-98b3-1c4d300ca863', '0520', '520', 'DCU#3 5위(R3) - 이중계 절체 동작', 'M2', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 “Module switchover” 신호가 “1”이 되면 검지 +', '이중계 절체 동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러) 이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A'모듈 및 ‘B'모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7427059a-d44a-4f84-9de8-671fe6baaff8', '0510', '510', 'DCU#5 5위(R3) - 출입문 닫힘 리미트 스위치1 고장', 'T2', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 “DCS1 Failure(Leftt)” 신호가 “1”이 되면 검지 +', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('742c9493-8bdf-46bc-8841-472a8fddfe53', '0308', '308', 'ATC#8-', 'Tc2', '0', null, null, '0', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('74313e0d-2c99-432f-bce7-aecaed5efcf4', '0040', '40', 'Zero Speed 바이패스', 'Tc1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7433ffe7-f69b-49bd-aced-78d3bc697547', '1503', '1503', '난방장치용 AC 회로차단기 차단(Car2)', 'M1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('74432d7d-d00f-4f80-b31f-b9689b2f4579', '765', '765', 'CAB HVAC#8 - 냉방시험 이상', 'Tc2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7447823a-2f31-45e1-9a63-aa27581bd8e2', '0707', '707', 'HVAC#2 - 냉난방장치2 증발기1 과부하', 'M1', 'C', 'HVAC-냉난방장치2 증발기1 과부하', 'C', 'HVAC', 'HVAC 냉방 작동 중 냉난방장치2 증발기 모터에 과부하 발생 +', 'UNIT2냉방기능불가', ' +1) 냉방 작동 중 UNIT2의 증발기 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CREF3과 연결된 THR7이 Trip 됨. +', 'UNIT2의 증발기모터의 과부하조건을 해소하여 정상 가능 상태로 만들고, THR7 및 마이콤 전원 리셋', '1) 냉난방 배전반의 점검커버를 열고, THR7의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR7의 전류 세팅값이 3A에 맞춰져 있는지 확인하여, 아닐 경우, (+) 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동시킨 후, THR7의 2차측 2, 4, 6 단자에서 각 단자 간 상간 전압이 AC 380V로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 증발기 단품 상태 에서 점검을 한다. +7) THR7의 2차측 2, 4, 6 단자에서 각 단자 간 권선저항이 모두 같은지 확인한다. (±10% 이하) (증발기 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT2의 증발기 모터의 결선을 해제한 후 4극 및 6극 모터의 권선저항을 확인 후, 문제가 있을 경우, 증발기 모터를 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR7 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('74497388-0dda-4847-8098-5096cb40239c', '0513', '513', 'DCU#3 5위(R3)-모듈 상태체크 에러', 'M2', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 "Module check error” 신호가 "1"이 되면 검지.', 'Module check error 현시 (출입문은 정상작동 가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태체크 기능에 이상이 생긴 경우 고장 발생.', 'DCU의 'A'모듈과 'B'모듈 간, 상태체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('744ccb8d-5387-4c24-b5f4-295bf57f172c', '0169', '169', 'VVVF#2-상전류 동기 불평형 검지(RETRY)', 'M1', 'C', 'VVVF-탈조검지(RETRY)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT33의 Bit2 “RETRY” 신호가 "1"이 되면 검지.', null, '동기전동기의 회전자와 고정자의 위상차가 허용치 이상 발생시 고장검지.', '자동재기동', '1) 상기 고장이 간헐적으로 발생하는 경우 아래와 같이 조치한다. +2) 견인전동기의 취급 절차서에 따라 절연저항 및 내전압 시험을 실시한다. +3) CTU, CTW 전류센서의 외관 및 저전압 커넥터 연결상태를 확인한다. +4) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('7454d299-aa00-4c04-ac86-dc92ab9b4f58', '0513', '513', 'DCU#6 3위(R2) - 모듈 상태체크 에러', 'M3', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 “Module check error” 신호가 “1”이 되면 검지 +', 'Modulecheckerror현시(출입문은 정상작동가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태 체크 기능에 이상이 생긴 경우 고장 발생 +', 'DCU의 ‘A' 모듈과 ‘B' 모듈 간, 상태 체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('74554e63-944f-42ab-9e02-621ac08afd35', '0511', '511', 'DCU#3 3위(R2)-출입문 닫힘 리미트 스위치2 고장', 'M2', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 "DCS2 Failure(Right)” 신호가 "1"이 되면 검지.', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('74619fdc-e590-4603-8c8f-5d21cb430bb7', '1503', '1503', '난방장치용 AC 회로차단기 차단(Car7)', 'M4', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7465f60c-fb27-449a-b3d2-902a30e2efd2', '0208', '208', 'BECU#7 - 공기제동장치 고장', 'M4', 'C', 'BECU-공기제동장치고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit7 “공기제동장치고장” 신호가 “1”이 되면 검지 +', '해당 차량 공기제동장치 고장검지 현시 및 해당 차량 정상적인제동제어불가', '해당 차량 BECU의 자가진단 시 고장 발생 또는 AC 압력센서 고장 +', '해당 차량 BECU의 자가진단 시 정상적일 경우 또는 AC 압력센서가 정상일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('74a1b1aa-8e10-4d65-a57c-183a23c31376', '0704', '704', 'HVAC#2-냉난방장치1 압축기1 과부하', 'M1', 'C', 'HVAC-냉난방장치1 압축기1 과부하', 'C', 'HVAC', 'HVAC 냉방작동 중 냉난방장치1 압축기1 또는 응축기1 모터에 과부하 발생.', '냉방 기능 저하(전냉방시 반냉방으로 작동)', '1) 냉방작동 중 UNIT1의 압축기1 또는 응축기1 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRCM1과 연결된 THR1이 Trip 됨.', 'UNIT1의 압축기1 또는 응축기1 모터의 과부하 조건을 해소하여 정상 가능 상태로 만들고, THR1 및 마이콤 전원 리셋', '1) 냉난방배전반의 점검커버를 열고, THR1의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR4의 전류 세팅값이 11.5A에 맞춰져 있는지 확인하여, 아닐 경우, 십자 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동 시킨 후, THR1의 2차측 2,4,6 단자에서 각 단자간 상간 전압이 AC 380V으로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 압축기 및 응축기 단품 상태에서 점검을 한다. +7) THR1의 2차측 2,4,6 단자에서 각 단자간 권선저항이 모두 같은지 확인한다. (±10% 이하) (압축기1 및 응축기1 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT1의 압축기1 또는 응축기1 모터의 결선을 해제한 후 각 부품의 권선저항을 확인 후, 문제가 있는 부품을 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR1 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('74c65c97-4868-4673-94e2-0eaf861879b4', '0521', '521', 'DCU#3 1위(R1) - 모듈 상태 이상', 'M2', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 “01” 또는 “00”이 되면 +검지 +', '이중계절체동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러)이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('74d592e4-8c58-40e9-9cc0-b0fe3f824248', '0236', '236', '상용제동코크 차단(Car8)', 'Tc2', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('74d7f1fa-aaae-4a26-96c0-86f607fa6fd0', '0140', '140', 'VVVF#3-제어전원전압이상(TCU)(CLVD_S)', 'M2', 'C', 'VVVF-제어전원전압이상(TCU)(CLVD_S)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT29의 Bit5 “CLVD_S” 신호가 "1"이 되면 검지.', null, '통합제어기 내부의 제어전원 이상 검지 시 중고장 발생.', '동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) TCU(통합제어장치)의 입력에 제어전원 DC70 ~100V가 인가되는지 확인한다. +2) TCU(통합제어장치) 중 PWS 보드의 ±15V, 5V, 24V의 테스트 단자의 전압을 멀티테스터로 측정하여 전압의 오차가 ±10% 이내인지 확인한다. +3) 상기의 점검부분에 이상이 있을 경우 PWS보드를 교체한다. +4) PWS 보드 교체 후 동일고장 재발 시 TCU(통합제어장치)를 교체한다.', null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('74e1737b-4bc4-4c07-8b4c-5c9155d276b5', '1518', '1518', 'CU1 운용다이아 CRC 오류(Car1)', 'Tc1', 'C', 'CU2, 2 운용다이아 CRC 오류', 'C', 'TCMS', '초기 기동 시 CU의 MCPU 내부에 들어가 있는 운용다이아 데이터가 CRC 오류가 발생한 경우 +', '1) 내부의 데이터가 CRC 오류가 발생하여 운용다이아를 사용할 수 없을 때 발생 +2) 열차번호 입력 시 다음역, 행선역이 표출되지 않음. +3) 방송/표시기 데이터를 정상적으로 송출 할 수 없음. (운행중인 경우 수동방송필요) +4) 열번/역설정 화면의 역설정/운용설정이 정상적으로 표시되지 않음.', '초기 기동 시 내부에 가지고 있는 운용다이아 데이터가 손상된 경우 +', 'CU 리셋 후 초기 기동 시 운용다이아 데이터가 정상적인 것을 확인한 경우', '1) 운용다이아 데이터 재설치 후 재기동 +2) 불량 해소가 되지 않을 경우, MCPU PCB 교체 후 운용다이아 데이터 재설치', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('750dc38c-912d-448c-9f54-6656e0f01a0b', '0503', '503', 'DCU#7 6위(L3)-출입문 내부비상핸들 취급(EED)', 'M4', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('7558c52a-04f4-4554-92aa-fda9f6513bd8', '0234', '234', '제동불완해검지(NRBD, Car3)', 'M2', 'B', '제동불완해검지(NRBD)', 'B', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT8의 Bit2 “NRBD” 신호가 "1"이 되면 검지.', '해당 차량 제동불완해 검지 현시 및 완해 취급하였음에도 불구하고 해당 차량 제동압력(BCP)이 완해되지 않음.', '제동완해 상태(정차제동 포함)에서 해당 차량의 제동압력이 완전히 배기 되지 않음.', '제동완해 상태(정차제동 포함)에서 해당 차량의 제동압력이 완전히 배기 됨.', '정차하여 강제완해스위치를 취급하여 소거 여부 확인. 제동 완해상태 확인 후 주의 운전 할 것. +2~3회 시도에도 완해불능시 관제보고하고 지시에 따를 것.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('756e1a64-8106-4207-90af-a5a3f6de9c58', '0502', '502', 'DCU#8 2위(L1)-출입문 장애물검지', 'Tc2', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('75732b88-6a67-4fe4-aeca-6e1a2c900719', '0167', '167', 'VVVF#3-마스콘 노치신호 이상검지(PWMERR)', 'M2', 'C', 'VVVF-PWM 노치고장(PWMERR)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT33의 Bit0 “PWMERR” 신호가 "1"이 되면 검지.', null, '엔코더 PWM신호의 듀티값 95% 이상 도달 시 고장검지', '1) 역행 듀티값 90%이하. +2) 제동 듀티값 90%이하 & 제동 OFF', '1) 상기 고장이 간헐적으로 발생하는 경우 아래와 같이 조치한다. +2) 엔코더의 출력을 오실로스코프로 측정하여 정상여부를 확인한다.(48V, 400Hz) +3) TC1, TC2차량의 배전반에서 엔코더 출력부 배선상태 및 단자결합상태를 확인한다. +4) 추진장치의 MC유니트의 커넥터 및 핀 압착상태를 확인한다. +5) TCMS의 추진장치 시리얼 데이터 메뉴에서 B1~B7의 노치값을 확인한다. +6) 값이 변하지 않거나 노치별 일정한 값이 유지되지 않는 경우 INF보드를 교체한다.', null, '3', '2025-10-12 01:21:37.578803+00', null, '로템40량(2018)-1단계', 'Rotem'), ('75762cc4-40e0-4073-8dd0-cb84226f7176', '0512', '512', 'DCU#3 6위(L3) - 파라미터 로딩 실패', 'M2', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 “Paraneter error” 신호가 “1”이 되면 검지 +', 'Parametererror 현시(출입문은 정상작동 가능)', 'DCU 자체 내의 EEPROM으로부터 parameter데이터 로딩 실패 +', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('757f5747-cd36-4a8a-ac36-bc7e35417341', '1525', '1525', 'TCMS 데이타버스1 우측라인 통신 이상(Car2)', 'M1', 'C', 'TCMS 데이터버스1 우측라인 통신 이상', 'C', 'TCMS', 'TCMS의 초기 기동 시 자기진단에 의한 2중계 메인통신선 중 1계 메인통신 이상 검지 시 +', '1) SL-NET 2중계이므로 데이터버스 2계로 정상통신, 운행에 지장 없음. +2) 초기기동 자기진단 시 2중계를 점검하여 1계측의 이상이 검지되었다는 점검 필요용 메시지', '초기 기동 시 SL-NET 1계와 2계를 각각 통신 후 비교하여 2계는 정상통신이 되나 1계는 정상통신이 안 되는 경우 +', '정상 수리 후 차량 전체 재기동하여 SL-NET 1계와 2계 모두 정상통신이 되는 경우', '1) 고장검출호차와 고장검출 우측호차와의 SL-NET 통신 1계 정상여부 확인(예 : 고장호차가 3호차인 경우, 1-2-3-4-5-6-7-8에서 3호차의 우측 즉, 3-4호차 간 SL-NET 1계 통신 상태 점검 필요) +2) 고장검지호차의 SCM PCB 교체 정상여부 확인 +3) 고장검지호차의 우측호차 SCM PCB 교체 정상여부 확인 +4) 고장검지호차와 고장검지 우측호차의 SL-NET 1계 메인통신 배선의 연결 상태 확인 +5) 상기 2 ~ 4번 점검에도 정상적으로 복귀되지 않는 경우, CU/TU ASS'Y 교체(백보드 확인 필요)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('75808454-746f-4351-9549-69c93c09f588', '0084', '84', '화재검지(Car7)', 'M4', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7584eacf-818c-46ba-a077-d8727b0b2859', '0515', '515', 'DCU#2 3위(R2)-출입문 열림 시간 초과', 'M1', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 "Open time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 열림 동작시간이 6초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도 한 후, '장애물로 인한 열림실패' 고장과 함께 'Open time out' 고장이 함께 현시', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('75985bae-1eef-4bce-9335-5e5ae0ab36ab', '1001', '1001', 'CMSB#8-CM 출력과부하', 'Tc2', 'C', 'CMSB-CM 출력과부하', 'C', 'CMSB', 'CMSB의 RS485 데이터 중 CMSB-TCMS SD TEXT3의 Bit1 “출력 과부하” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 'CM출력과부하' 표시됨. +2) 바이패스 모드로 전환되고, CM 기동 시 '바이패스 기동'으로 표시됨.', '1) CM 기동 시 출력전류가 정격전류의 150%(7.5A) ~ 200%(10A) 사이 전류가 1분간 지속적으로 기동할 경우 검지됨.', '1) 차량 전원 OFF +2) CMSB 내부의 표시기패널 RESET 버튼 누름.', '0) 정상운행 후, 검수고에 입고하여 아래와 같이 조치한다. +1) 상기고장은 고장 소거 후, 재현시험을 진행하여 지속적으로 발생될 경우 아래와 같이 조치한다. +2) 공기압축기(CM) 출력전류을 확인한다.(공기압축기 매뉴얼 참조)', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('759f09d7-4669-4a21-91f1-4db0a195a2f0', '0505', '505', 'DCU#2 5위(R3)-출입문 입력 고전압', 'M1', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 "1"이 되면 검지.', '고전압 상태. (그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('75af9996-fe47-48de-be5c-8c8fe5905683', '0421', '421', 'SIV#8-제어전원 저전압(CPCF)', 'Tc2', 'C', 'SIV-제어전원 저전압(CPCF)', 'C', 'SIV', '보조전원장치(SIV)의 RS485 데이터 중 SIV-TCMS SD TEXT6의 Bit6 “CPCF” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 '제어전원 저전압 이상검지' 표시됨. +2) 보조전원장치(SIV)는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 보조전원장치(SIV) 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 보조전원장치(SIV) 상태 붉을색으로 표기되며, 연장급전 됨.', '보조전원장치(SIV) 제어기에 입력되는 제어전원이 65V 이하일 경우 검지.', '1) 경고장이 발생할 경우 보조전원장치(SIV) 자동 재기동에 의해 재기동 됨. +2) 중고장이 발생할 경우 보조전원장치(SIV) 리셋으로 고장 소거됨.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 보조전원장치(SIV)로 입력되는 제어전원 배선을 점검한다. +3) 제어전원부 내부 부품에 소손이 없는지 확인한다. +4) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('75b2ff02-2330-4e64-9f73-65008d32eb2b', '0179', '179', 'VVVF#3-LB2 투입불량(LB2NC)', 'M2', 'C', 'VVVF-LB2 투입불량(LB2NC)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT34의 Bit4 “LB2NC” 신호가 "1"이 되면 검지.', null, 'LB2 투입이 되지 않을 때 고장검지.', '동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) 판토하강상태에서 테스트모드로 전환하여 시퀀스를 투입하고 LB2의 주접점 동작을 확인한다. +2) 주회로 차단기함 내에 LB2의 보조접점의 동작상태를 확인한다. +3) 추진제어장치 계전기 유니트에 LB2R 계전기 상태를 확인하여 계전기의 동작 여부를 확인한다. +4) 추진제어장치 시험기를 이용하여 제어기 시험을 실시하여 이상여부를 확인한다.', null, '3', '2025-10-12 01:21:37.578803+00', null, '로템40량(2018)-1단계', 'Rotem'), ('75c080fa-4454-4166-a126-bfc8f94b47e0', '0241', '241', 'BECU#1 - 1축 스키드신호', 'Tc1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('75c6747c-95ca-4f26-86ab-27b1f5799408', '0512', '512', 'DCU#1 5위(R3) - 파라미터 로딩 실패', 'Tc1', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 “Paraneter error” 신호가 “1”이 되면 검지 +', 'Parametererror 현시(출입문은 정상작동 가능)', 'DCU 자체 내의 EEPROM으로부터 parameter데이터 로딩 실패 +', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('75ceb58e-6215-4364-ac79-21efb69d5bf9', '0218', '218', 'BECU#6-인통선로직 비정상', 'M3', 'C', 'BECU-인통선로직 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit1 “인통선로직 비정상” 신호가 "1"이 되면 검지.', '해당 차량 인통선로직 비정상 검지 현시 및 해당차량 정상적인 제동제어 불가.(상용제동지령에 따른 제어)', '해당 차량의 추진선택(P), 제동선택(B) 신호가 동시에 ON 됨.', '해당 차량의 추진선택(P), 제동선택(B) 신호가 정상작동(상보적으로 작동) 될 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 한 뒤, 마스콘을 제동 7단으로 5초간 취급하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('75cf5bae-6518-454f-962a-8a192e14f212', '0503', '503', 'DCU#7 1위(R1) - 출입문 내부 비상핸들 취급(EED)', 'M4', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('75d155fe-b8a1-489e-8014-413dba599bca', '0216', '216', 'BECU#7 - 전두대차 AS 압력센서 고장', 'M4', 'C', 'BECU-전두대차 AS 압력센서 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit7 “전두대차 AS 압력센서 고장” 신호가 +“1”이 되면 검지 +', '해당 차량 전두대차 AS 압력센서 고장검지 현시 및 해당 차량 정상적인 응하중제동제어 불가', '해당 차량의 전두대차 AS 압력센서(AS1, AS2) 고장 +', '해당 차량의 전두대차 AS 압력센서(AS1, AS2)가 정상일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('75d4fd35-810f-45d4-862c-580492f6be20', '0402', '402', 'SIV#8 - 배터리 충전기 출력과전류(BCOC)', 'Tc2', 'C', 'SIV-배터리 충전기 출력 과전류(BCOC)', 'C', 'SIV', '보조전원장치(SIV)의 RS485 데이터 중 SIV-TCMS SD TEXT4의 Bit0 “BCOC” 신호가 “1”이 되면 +검지 +', '1) TCMS 화면하단 또는 고장화면에 ‘배터리 충전기 출력 과전류 검지' 표시됨. +2) 보조전원장치(SIV)는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 보조전원장치 중고장이 발생됨. +5) 중고장이 발생되면 TCMS 일반화면에 보조전원장치 상태 붉은색으로 표기되며, 연장급전 됨.', '보조전원장치(SIV)의 배터리 충전부에서 출력되는 DC 전류가 300A 이상일 경우 검지됨. +', '1) 경고장이 발생할 경우 보조전원장치(SIV) 자동 재기동에 의해 재기동 됨. +2) 중고장이 발생했을 경우 조치 완료 후 보조전원장치(SIV) 리셋으로 고장 소거됨.', '1) 상기 고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 보조전원장치(SIV) 고장기록을 수집하여 배터리 충전부에서 출력되는 DC 전류치 확인함. +3) 전류치가 비정상적일 경우 전류센서, DC 출력단 결선을 확인한다. +4) 전류센서와 보조전원장치(SIV) 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작 상태를 시험기를 통해 확인한다. +6) 출력단의 절연상태 및 접지 간의 절연상태를 확인한다. +7) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7604815c-ec49-4801-95f6-cb0301ddbdcf', '0166', '166', 'VVVF#3-대활주/대공전(WSD)', 'M2', 'W', 'VVVF-대활주/대공전(WSD)', 'W', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT32의 Bit7 “WSD” 신호가 "1"이 되면 검지.', null, '공전, 활주 발생 시 고장검지', '1) 역행 자동복귀 +2) 제동 제동 OFF시', '1) 주행 당시의 노선상태가 오염, 습기, 결빙 등 외부환경에 의한 경우 조치할 내용은 없다. +2) 과도한 발생 시 낮은 견인력/제동력으로 주행. +3) 차륜에 윤활성 물질 오염여부 확인 및 세척. +4) 차륜 표면에 찰상 등 흔적이 있는 경우 삭정하여 운행한다.', null, '3', '2025-10-12 01:21:37.578803+00', null, '로템40량(2018)-1단계', 'Rotem'), ('760bbdf6-f3d8-4e68-b2d5-d843f2bd023e', '0732', '732', 'HVAC#7 - 실외온도 센서1 고장', 'M4', 'C', 'HVAC-실외온도 센서 고장', 'C', 'HVAC', '실외온도 센서 고장 발생 +', '실외온도 센서 고장 현시', '온도센서 검지범위는 -45 ~ 85도(820 ~ 1,330Ω)인데, 2초 이상 검지범위를 벗어나는 경우 +', '온도센서 검지값이 2초 이상 허용온도 범위 내일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820 ~ 1,330Ω을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7619d85b-0c12-44f2-8525-b47dbf9048ca', '0229', '229', 'AS 코크#1 차단(Car4)', 'T1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7619f0db-1d2c-47e0-bada-a1c28dfcd597', '1509', '1509', '열차분리#1 검지(Car6)', 'M3', 'B', '열차분리#1 검지', 'B', 'TCMS', '차량의 열차분리#1 검지 +', '1) 1위측 열차검지신호(SOTS1) 검출 시 화면에 현시 +2) 실제 열차분리 시 검지되었는지 확인 필요 +(실제 열차분리 시 다른 차량 이 접근하지 못하도록 선조치 필요) +3) 실제 열차 분리 시 비상제동 안전루프에 의해 비상제동 체결됨. +4) 열차 분리에 따라 분리 위치부터 차량제어장치(TU)와 반대편 편성제어장치(CU)의 통신고장 동반 발생', 'TU의 1위측 열차분리신호(SOTS1) 신호 활성(LOW) 입력 시 고장 현시 +', 'TU의 1위측 열차분리신호(SOTS1) 신호 정상(HIGH) 입력 시 소거됨.', '1) 실제 열차분리 시 관제에 연락하고, 지시에 따름 +2) 회로 차단기 ELCB ON 상태 확인 +3) TU의 1위측 열차분리신호 DIM3 PCB의 입력채널(SOTS +1) 점검/교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('761cf9e3-4f44-4838-994d-278b6d5ff12e', '0515', '515', 'DCU#7 5위(R3)-출입문 열림 시간 초과', 'M4', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 "Open time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 열림 동작시간이 6초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도 한 후, '장애물로 인한 열림실패' 고장과 함께 'Open time out' 고장이 함께 현시', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('7630f9c3-6759-4798-b233-8cb6dab06c6b', '0512', '512', 'DCU#4 4위(L2)-파라미터 로딩 실패', 'T1', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 "Paraneter error” 신호가 "1"이 되면 검지.', 'Parameter error 현시 (출입문은 정상작동 가능)', 'DCU 자체내의 EEPROM으로부터 parameter 데이터 로딩 실패', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('764147b5-c460-4014-914f-1ca6ed41dedd', '0751', '751', 'HVAC#5 - 냉난방장치1 보조히터 과열', 'T2', 'C', 'HVAC-냉난방장치1 보조히터 과열', 'C', 'HVAC', 'HVAC1 보조난방기 작동 중 과열 발생 +', 'UNIT1보조난방기난방불가', '보조난방기 작동 중 1초 이상 동안 온도가 70도 이상으로 과온 센서 정상신호가 수신 되지 않는 경우 +', '1초 이상 동안 60도 미만으로 온도가 떨어져 과온 센서 정상신호가 수신되는 경우', '1) 보조난방기가 꺼진 상태에서도 문제 발생 시, 과온 센서를 교체한다. +2) 센서 교체 후에도 문제가 발생되면, 배선에 문제가 없는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7641928f-1296-42c8-808c-27c8a8aca6a1', '0500', '500', 'DCU#8 2위(L1) 통신고장', 'Tc2', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS간 RS485 통신고장이 검지되면 발생.', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐 상태 등의 변화가 없음.', '1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우', '해당차량의 DCU 및 CU/TU 의 전원이 정상상태이고, 통신라인 연결상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜저 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는데도 지속적으로 통순고장이 검지되면, DCU의 X2,X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('764ce612-4115-4f53-9452-fc46a5c40012', '0514', '514', 'DCU#8 4위(L2)-출입문 닫힘 시간 초과', 'Tc2', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 "Close time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 닫힘 동작시간이 7초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도 한 후, '장애물로 인한 닫힘실패' 고장과 함께 'Close time out' 고장이 함께 현시', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('76663ca0-23a0-46aa-a9fc-e3877050942a', '1707', '1707', '노선안내표시기#2 고장(Car5)', 'T2', 'C', '노선안내표시기#5 고장', 'C', 'PIC', 'PIC 장치의 노선안내표시기#5이 고장이 났을 때 발생 +', '1) 노선안내표시기 화면 미현시 +2) 노선안내표시기 안내 화면 오현시', '통신고장 +', '통신 재개 시', '1) 이더넷 스위치 링크 확인 +2) 이더넷 케이블 점검 +3) 제어보드 및 전원보드 교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7667597f-7099-495b-bd3e-8384220809c1', '0747', '747', 'HVAC#6-전자접촉기 차량히터2(CRRHT) 고장', 'M3', 'C', 'HVAC-전자접촉기 차량히터2(CRRHT) 고장', 'C', 'HVAC', '객실 난방기 작동 중 CRRHT2 전자접촉기 고장 발생.', '객실 전난방 시 1/3난방만 작동', '객실 전난방 작동 중 2.5초 이상동안 CRRHT2 작동 feedback 신호가 수신되지 않는 경우', 'CRRHT2 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CRRHT2를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRRHT2와 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('76a07ebf-e98d-4c0c-a6ca-0823930214a1', '0843', '843', '출력증폭기#1(AMP) 고장(Car#4)', 'T1', 'C', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('76a6b12e-47ff-4b9b-8c6c-d740f561e656', '0510', '510', 'DCU#4 2위(L1) - 출입문 닫힘 리미트 스위치1 고장', 'T1', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 “DCS1 Failure(Leftt)” 신호가 “1”이 되면 검지 +', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('76c0a007-03b7-40dd-923e-9f48fc1e5708', '0518', '518', 'DCU#8 2위(L1)-출입문 Enable 신호 에러', 'Tc2', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 "Enable signal error” 신호가 "1"이 되면 검지.', 'DCU 출입문 Enable 신호 에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) 취급시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함.', '해당출입문 enable 신호 수신', '1) AUTO/MCS 모드시에는 YARD모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인한다. (YARD/FMC 모드시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('76c6d6f1-c64b-47f2-9558-ff72f7f54a7a', '0513', '513', 'DCU#6 6위(L3)-모듈 상태체크 에러', 'M3', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 "Module check error” 신호가 "1"이 되면 검지.', 'Module check error 현시 (출입문은 정상작동 가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태체크 기능에 이상이 생긴 경우 고장 발생.', 'DCU의 'A'모듈과 'B'모듈 간, 상태체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('76ca6091-40b7-47a1-9808-cf4361542d14', '0733', '733', 'HVAC#5-전자접촉기 압축기(CRCM)4 고장', 'T2', 'C', 'HVAC-전자접촉기 압축기(CRCM)4 고장', 'C', 'HVAC', 'HVAC 냉방작동 중 CRCM4 전자접촉기 고장 발생.', '냉방 기능 저하(전냉방시 반냉방으로 작동)', '냉방작동 중 2.5초 이상동안 CRCM4 작동 feedback 신호가 수신되지 않는 경우', 'CRCM4 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CRCM4를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRCM4와 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('76cd58ad-3ff8-4da7-82f6-7fd300d499a0', '0165', '165', 'VVVF#7-OVT 오동작검지(OVTD)', 'M4', 'C', 'VVVF-OVT 오점호검지(OVTD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT32의 Bit6 “OVTD” 신호가 "1"이 되면 검지.', null, '1) OVT 점호 지령 없는 상태에서 점호되었을 시 고장검지. +2) 1분 이내 3회 발생 시 중고장 발생.', '1) 경고장 +역행 고장검지 2초 후 자동 재기동 제동 제동 OFF시 고장 소거 +2) 중고장 +동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기 고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) OVCT 전류센서의 외관상태 및 저전압 커넥터 체결상태를 확인한다. +3) IGBT 외관에 크랙 또는 폭발흔적이 있는지 확인한다. +4) IGBT의 C-E간 개방상태임을 확인한다. +5) 게이트 드라이버 PCB 기판에 소손, 냉납, 열화 유무 확인. +6) OVCT 커넥터의 P15A1~F15A1의 전압이 +15V, N15A1~F15A1의 전압이 -15V임을 확인한다. +7) 상기의 점검부분에 이상이 있을 경우 관련부품을 교체한다.', null, '3', '2025-10-12 01:21:37.578803+00', null, '로템40량(2018)-1단계', 'Rotem'), ('76d01f24-c92f-4bd2-b1a2-35e48a56020c', '0168', '168', 'VVVF#7 - 응하중 신호 이상검지(BRFD)', 'M4', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('76e0f207-a6c3-4779-a86a-83363f21ba5f', '1302', '1302', 'RTD#8-무선랜 상태 고장', 'Tc2', 'D', 'RTD-무선랜 상태 고장', 'D', 'RTD', 'RTD의 RS485 데이터 중 RTD-TCMS SD TEXT1의 Bit5 “무선랜 상태 고장” 신호가 "1"이 되면 검지.', 'RTD 무선랜 상태 고장 메시지 현시.', 'RTD장치 내부 무선브릿지 보드로부터 ping 체크에 대한 응답 없을 경우.', 'RTD장치 내무 무선브릿지 보드가 Ping체크에 정상 응답할 경우.', 'RTD장치 내부 메인보드 와 브릿지보드 Ethernet line 연결상태를 확인한다.', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('77131237-bd15-4f6b-8292-85371b8d26bb', '0238', '238', 'BECU#7 - 4축 스키드신호', 'M4', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('77193f00-ef14-4ab0-9b1d-ffdd0e672a48', '0154', '154', 'VVVF#7-후진속도검지(BSD)', 'M4', 'W', 'VVVF-후진속도검지(BSD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT31의 Bit3 “BSD” 신호가 "1"이 되면 검지.', null, '정차 후 출발 시 차량이 구배에 의하여 뒤로 이동할 경우 발생.', '노치 OFF', '1) 추진제어장치 고장기록을 수집하여 차량 속도가 마이너스로 기록되어있는 경우 차량의 정차제동 계통을 확인한다. +2) 추진제어장치 시험기를 이용하여 TCU(통합제어장치)의 이상여부를 확인한다.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('771f55a1-9bc3-47c8-9c03-03d8130d26c2', '0507', '507', 'DCU#1 6위(L3) - 초기화 실패', 'Tc1', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 “Calibration failure” 신호가 “1”이 되면 검지 +', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터 고장, 장애물감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우 +', '초기화 실패를 야기한 고장코드를 확인하여 조치 후, 재닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인한다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7722e379-40b7-47db-b6db-f7142f3b167f', '1512', '1512', 'CU1 내장 SD - CARD 점검 필요(Car8)', 'Tc2', 'D', 'CU1 내장 SD-CARD 점검 필요', 'D', 'TCMS', 'CU1의 내장 SD-CARD가 점검이 필요한 상태 +', '1) CU1의 SD-CARD가 정상 검지되지 못할 때 고장기록 화면에 현시 +2) 운행기록을 정상적으로 기록하지 못함. (양측 운전실에서 기록 하므로, 반대편의 운전기록을 활용할 수 있으며, 클라우드 송출기록은 정상동작함) +3) 열차 운행에는 관계없음. +4) 해당운전실의 운행기록을 정상적으로 다운로드 할 수 없음.', 'CU1의 SD-CARD가 정상 검지되지 못할 때 고장기록 화면에 현시 +', '재기동 후 SD-CARD가 정상적으로 동작할 때 소거됨.', '1) CU의 MCPU PCB 내부의 SD-CARD를 포맷한다. +2) 불량 해소가 되지 않을 경우, 정상적인 TCMS 펌웨어가 들어가 있는 SD-CARD로 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7729ea4f-53eb-4928-86f9-9ad8890fe9a8', '0165', '165', 'VVVF#6-OVT 오동작검지(OVTD)', 'M3', 'C', 'VVVF-OVT 오점호검지(OVTD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT32의 Bit6 “OVTD” 신호가 "1"이 되면 검지.', null, '1) OVT 점호 지령 없는 상태에서 점호되었을 시 고장검지. +2) 1분 이내 3회 발생 시 중고장 발생.', '1) 경고장 +역행 고장검지 2초 후 자동 재기동 제동 제동 OFF시 고장 소거 +2) 중고장 +동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기 고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) OVCT 전류센서의 외관상태 및 저전압 커넥터 체결상태를 확인한다. +3) IGBT 외관에 크랙 또는 폭발흔적이 있는지 확인한다. +4) IGBT의 C-E간 개방상태임을 확인한다. +5) 게이트 드라이버 PCB 기판에 소손, 냉납, 열화 유무 확인. +6) OVCT 커넥터의 P15A1~F15A1의 전압이 +15V, N15A1~F15A1의 전압이 -15V임을 확인한다. +7) 상기의 점검부분에 이상이 있을 경우 관련부품을 교체한다.', null, '3', '2025-10-12 01:21:37.578803+00', null, '로템40량(2018)-1단계', 'Rotem'), ('77341ecc-5fa2-4fa2-aa9d-d6aba31dbdb7', '0504', '504', 'DCU#5 1위(R1)-출입문 외부비상핸들 취급(EAD)', 'T2', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('77389a17-e0ec-4991-86e7-dc514e5d79a6', '0504', '504', 'DCU#8 6위(L3)-출입문 외부비상핸들 취급(EAD)', 'Tc2', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('773c1077-e58a-4099-b162-516705b032dc', '0221', '221', 'BECU#2 - 제동력부족(ISBD)', 'M1', 'B', 'BECU-제동력부족(ISBD)', 'B', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit5 “ISBD” 신호가 “1”이 되면 검지 +', '해당 차량 제동력 부족 검지 현시 및 해당 차량 제동압력(BCP)이 타차량에 비해 현저히 낮음.', '제동 7단 취급 시 해당 차량의 제동압력이 생성되지 않음. +', '제동 7단 취급 시 정상적인 제동압력이 생성된 경우 소거', 'MCS 모드로 전환 후, 마스콘을 N(중립) → 제동 7단까지 수 회 취급하여 소거 여부 확인, 제동 취급 확인 후, 주의 운전할 것, 지속발생 시 관제보고하고 지시에 따를 것', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7743dde5-9689-4f1d-92f4-c4476fa1db93', '0042', '42', '비상판토 하강', 'Tc2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('774446ca-aa37-40f8-b461-006bdb17d046', '1212', '1212', 'FDU#1-', 'Tc1', '0', null, null, 'FDU', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('77821aa2-4e50-4edc-a0ee-5ae5fe747671', '0172', '172', 'VVVF#6 - 접지검지(GRD)', 'M3', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('77871634-4399-4066-adff-9c2ceaf12f8a', '0504', '504', 'DCU#7 3위(R2) - 출입문 외부 비상핸들 취급(EAD)', 'M4', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7789d21c-9e79-408c-b74b-f25a15387fc9', '0516', '516', 'DCU#4 4위(L2)-출입문 장애물로 인한 닫힘 실패', 'T1', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Close failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림상태로 대기', '도어 닫힘 중 3회 장애물 감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('778eb0df-85b4-41e5-bfd9-6bc0658f941a', '0517', '517', 'DCU#3 6위(L3)-출입문 장애물로 인한 열림 실패', 'M2', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Open failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘상태로 대기', '도어 열림 중 3회 장애물 감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 열림 시, 장애물 감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('779a8e43-e34d-4fe7-a184-3d8066735704', '0750', '750', 'HVAC#8 - 냉난방장치2 보조히터 과열', 'Tc2', 'C', 'HVAC-냉난방장치2 보조히터 과열', 'C', 'HVAC', 'HVAC2 보조난방기 작동 중 과열 발생 +', 'UNIT2 보조난방기난방불가', '보조난방기 작동 중 1초 이상 동안 온도가 70도 이상으로 과온 센서 정상신호가 수신 되지 않는 경우 +', '1초 이상 동안 60도 미만으로 온도가 떨어져 과온 센서 정상신호가 수신되는 경우', '1) 보조난방기가 꺼진 상태에서도 문제 발생 시, 과온 센서를 교체한다. +2) 센서 교체 후에도 문제가 발생되면, 배선에 문제가 없는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('77ace247-e6ba-4677-be47-9954dc2a7a38', '0514', '514', 'DCU#4 6위(L3) - 출입문 닫힘 시간 초과', 'T1', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 “Close time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 닫힘 동작 시간이 7초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도한 후, ‘장애물로 인한 닫힘 실패' 고장과 함께 ‘Close time out' 고장이 함께 현시 +', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('77bc5079-46ca-45c2-ab98-660a3c44ec14', '1205', '1205', 'FDU#1 - 감지기3 화재감지', 'Tc1', 'W', 'FDU-감지기3 화재감지 (Car1~8)', 'W', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 “Detector1 State” 신호가 “11”이 되면 검지 +', '화재상태현시(자동소거 안 됨.)', '하기 2가지 조건을 모두 만족하여야 화재신호가 출력 됨. (연동모드 동작) +1) 이웃한(앞 혹은 뒤에 위치한) 감지기 중 하나의 감지기라도 주의 혹은 화재상태에 있어야 함. +2) Detector1(해당 감지기)에서 측정된 연기농도가 15% 이상이거나 온도가 65℃ 이상인 경우 +', '1) FDU의 복귀버튼 조작 시 +2) FDU 전원 리셋 시', '1) 해당 감지기 위치의 화재 발생 여부 확인 +2) 화재 오감지일 경우 FDU의 복귀버튼 취급 +3) 오감지일 경우 감지기의 청소주기 확인(내부 먼지 제거)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('77c36758-7b7e-432c-af63-098ed811f067', '0514', '514', 'DCU#1 5위(R3)-출입문 닫힘 시간 초과', 'Tc1', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 "Close time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 닫힘 동작시간이 7초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도 한 후, '장애물로 인한 닫힘실패' 고장과 함께 'Close time out' 고장이 함께 현시', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('77c7b5d8-2c6a-43c9-8db3-82e74f81cb0f', '0520', '520', 'DCU#1 3위(R2) - 이중계 절체 동작', 'Tc1', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 “Module switchover” 신호가 “1”이 되면 검지 +', '이중계 절체 동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러) 이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A'모듈 및 ‘B'모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('77cfc304-b6b7-4b18-9ec5-f37c0d7357f1', '0507', '507', 'DCU#7 5위(R3) - 초기화 실패', 'M4', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 “Calibration failure” 신호가 “1”이 되면 검지 +', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터 고장, 장애물감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우 +', '초기화 실패를 야기한 고장코드를 확인하여 조치 후, 재닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인한다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('77d4c066-6bc8-4c96-80b7-45ebd1f3ecaf', '0517', '517', 'DCU#7 1위(R1) - 출입문 장애물로 인한 열림 실패', 'M4', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Open failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘 상태로 대기', '도어열림 중 3회 장애물감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 열림 시, 장애물감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('77db212e-d539-4661-b0c5-e8fec741df86', '0707', '707', 'HVAC#8 - 냉난방장치2 증발기1 과부하', 'Tc2', 'C', 'HVAC-냉난방장치2 증발기1 과부하', 'C', 'HVAC', 'HVAC 냉방 작동 중 냉난방장치2 증발기 모터에 과부하 발생 +', 'UNIT2냉방기능불가', ' +1) 냉방 작동 중 UNIT2의 증발기 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CREF3과 연결된 THR7이 Trip 됨. +', 'UNIT2의 증발기모터의 과부하조건을 해소하여 정상 가능 상태로 만들고, THR7 및 마이콤 전원 리셋', '1) 냉난방 배전반의 점검커버를 열고, THR7의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR7의 전류 세팅값이 3A에 맞춰져 있는지 확인하여, 아닐 경우, (+) 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동시킨 후, THR7의 2차측 2, 4, 6 단자에서 각 단자 간 상간 전압이 AC 380V로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 증발기 단품 상태 에서 점검을 한다. +7) THR7의 2차측 2, 4, 6 단자에서 각 단자 간 권선저항이 모두 같은지 확인한다. (±10% 이하) (증발기 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT2의 증발기 모터의 결선을 해제한 후 4극 및 6극 모터의 권선저항을 확인 후, 문제가 있을 경우, 증발기 모터를 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR7 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('77f1a6cc-23d7-40f6-a2ce-a9bb069b3325', '1502', '1502', '기타장치용 DC 회로차단기 차단(Car8)', 'Tc2', 'W', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('783dc72f-99b1-4f55-90f1-12a7d37d0643', '0515', '515', 'DCU#7 4위(L2) - 출입문 열림 시간 초과', 'M4', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 “Open time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 열림 동작시간이 6초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도한 후, ‘장애물로 인한 열림 실패' 고장과 함께 ‘Open time out' 고장이 함께 현시 +', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('78404ff1-65bf-4484-8ccc-d35627fde3cf', '0313', '313', 'ATC#8-', 'Tc2', '0', null, null, '0', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('784882e9-7bb6-4e16-8cc6-9551a02de364', '0501', '501', 'DCU#1 2위(L1) - 출입문 차단', 'Tc1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('784da7f4-01bf-4b40-93d9-d736bcf1a042', '0135', '135', 'MDS 서비스위치 아님(Car3)', 'M2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('785864e6-d9fb-4927-b55e-3723bb044655', '0501', '501', 'DCU#6 1위(R1)-출입문 차단', 'M3', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('785e14db-b08b-41c0-bb49-bf681d67bc24', '0224', '224', 'BECU#1-파트너차 ECU 고장(PECUF)', 'Tc1', 'C', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('786448ba-10ee-44ee-89cb-5c018dc900bd', '0238', '238', 'BECU#4-4축스키드신호', 'T1', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('786532dc-8b83-4a0b-8809-300e0e40ccfe', '0139', '139', 'VVVF#6 - INV ARM 단락(CFD)', 'M3', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('786803f2-09da-4268-8344-ab9ed733f68b', '0507', '507', 'DCU#8 2위(L1)-초기화 실패', 'Tc2', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 "Calibration failure” 신호가 "1"이 되면 검지.', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터고장, 장애물 감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우', '초기화 실패를 야기한 고장 코드를 확인하여 조치 후, 재 닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('786cc35f-00c5-440f-bf95-d0b0b60397e4', '0088', '88', '화재검지기 고장(Car3)', 'M2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7873d286-4618-455a-a95c-ee18620d9db4', '0200', '200', 'BECU#1 통신고장', 'Tc1', 'B', 'BECU-통신고장', 'B', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT23의 'Life sign'이 변하지 않음.', '해당 차량 통신고장 현시 및 해당 차량의 제동압력(BCP) 등의 데이터가 반응하지 않음. (고장은 현시되나 제동제어는 정상적 일 수 있음)', 'BECU 전원 CB OFF 혹은 통신연결 불량.', 'BECU와 TCMS 간 RS485 통신이 복귀 되어 BECU-TCMS SD TEXT23의 'Life sign'이 변동시 소거.', 'BECU를 리셋(BECU CB OFF/ON) 후 복귀여부를 확인. +리셋 후 복귀되지 않을 경우 관제보고하고 지시에 따를 것.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('787f1ccd-c810-4704-afd0-358a9685000e', '0213', '213', 'BECU#1 - AC 압력센서 고장', 'Tc1', 'C', 'BECU-AC 압력센서 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit4 “AC 압력센서 고장” 신호가 “1”이 되면 검지 +', '해당 차량 공기제동장치고장, AC 압력센서 고장검지 현시 및 해당 차량 제동제어불가', '해당 차량의 AC 압력센서 고장 +', '해당 차량의 AC 압력센서가 정상일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7881455d-b5ee-4a47-8b4a-d91b1a5aa87f', '0513', '513', 'DCU#5 5위(R3) - 모듈 상태체크 에러', 'T2', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 “Module check error” 신호가 “1”이 되면 검지 +', 'Modulecheckerror현시(출입문은 정상작동가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태 체크 기능에 이상이 생긴 경우 고장 발생 +', 'DCU의 ‘A' 모듈과 ‘B' 모듈 간, 상태 체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7889f528-0d45-4cbe-997e-1a18474cb0d4', '1702', '1702', '노선안내표시기#3 고장(Car4)', 'T1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('788f5880-327d-4c55-9272-3f44c5751119', '0146', '146', 'VVVF#6-과온검지1(THDL)', 'M3', 'C', 'VVVF-과온검지1(THDL)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT30의 Bit3 “THDL” 신호가 "1"이 되면 검지.', null, '인버터 내부 온도가 100 °C이상 도달 시 고장발생.', '90 °C 이하 도달 및 제동 OFF.', '1) 상기고장이 간헐적으로 발생하는 경우 아래와 같이 조치한다. +2) 상온에서 TCU(통합제어기)에 RS232케이블을 이용하여 노트북(제공품)과 연결 후 모니터링 프로그램으로 인버터의 온도값을 확인한다. +3) 인버터 유니트의 온도센서 배선 및 커넥터 체결상태를 확인한다. +4) 추진제어장치의 냉각부에 손상이 없는지 확인한다. +5) 추진제어장치 시험기를 이용하여 TCU(통합제어장치)의 이상여부를 확인한다. +6) 상기의 점검부분에 이상이 있을 경우 관련부품을 교체한다. +7) 동일 고장이 지속적으로 발생 시 INV 스택을 교체한다.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('78955601-0902-485c-b192-2937e8599195', '0226', '226', 'BECU#4-제동불완해검지(NRBD)', 'T1', 'B', 'BECU-제동불완해검지(NRBD)', 'B', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT8의 Bit2 “NRBD” 신호가 "1"이 되면 검지.', '해당 차량 제동불완해 검지 현시 및 완해 취급하였음에도 불구하고 해당 차량 제동압력(BCP)이 완해되지 않음.', '제동완해 상태(정차제동 포함)에서 해당 차량의 제동압력이 완전히 배기 되지 않음.', '제동완해 상태(정차제동 포함)에서 해당 차량의 제동압력이 완전히 배기 됨.', '정차하여 강제완해스위치를 취급하여 소거 여부 확인. 제동 완해상태 확인 후 주의 운전 할 것. +2~3회 시도에도 완해불능시 관제보고하고 지시에 따를 것.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('789dd30c-0cd2-467a-a43f-957a8021a406', '0751', '751', 'HVAC#5-냉난방장치1 보조히터 과열', 'T2', 'C', 'HVAC-냉난방장치1 보조히터 과열', 'C', 'HVAC', 'HVAC1 보조난방기 작동 중 과열 발생.', 'UNIT1 보조난방기 난방 불가', '보조난방기 작동 중 1초 이상동안 온도가 70도 이상으로 과온센서 정상 신호가 수신되지 않는 경우', '1초 이상동안 60도 미만으로 온도가 떨어져 과온센서 정상 신호가 수신되는 경우', '1) 보조난방기가 꺼진 상태에서도 문제 발생 시, 과온 센서를 교체한다. +2) 센서 교체 후에도 문제가 발생되면, 배선에 문제가 없는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('78b23716-89e6-4ce5-bd61-8ecba5e5c628', '0512', '512', 'DCU#1 6위(L3)-파라미터 로딩 실패', 'Tc1', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 "Paraneter error” 신호가 "1"이 되면 검지.', 'Parameter error 현시 (출입문은 정상작동 가능)', 'DCU 자체내의 EEPROM으로부터 parameter 데이터 로딩 실패', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('78be76fe-cb02-467e-bd48-ac5b1f8a3f31', '0414', '414', 'SIV#8-게이트 드라이버 고장, WZ1상(GDFWZ1)', 'Tc2', 'C', 'SIV-게이트 드라이버 고장, WZ1상(GDFWZ1)', 'C', 'SIV', '보조전원장치(SIV)의 RS485 데이터 중 SIV-TCMS SD TEXT5의 Bit4 “GDFUX1” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 'GDF UX 1상 이상검지' 표시됨. +2) 보조전원장치(SIV)는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 보조전원장치(SIV) 중고장이 발생됨. +5) 중고장이 발생되면 TCMS 일반화면에 보조전원장치(SIV) 상태 붉을색으로 표기되며, 연장급점 됨.', '보조전원장치(SIV) 내부 GDU에 과전류, 과온이 검지될경우.', '1) 경고장이 발생할 경우 보조전원장치(SIV) 자동 재기동에 의해 재기동 됨. +2) 중고장이 발생할 경우 보조전원장치(SIV) 리셋으로 고장 소거됨.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 보조전원장치(SIV) 고장기록을 수집하여 출력되는 3상의 AC 전류치를 확인함. +3) 특정상의 전류치가 비정상적일 경우 특정상에 해당되는 GDU, 전류센서, 출력단 결선을 확인한다. +4) 전류센서와 보조전원장치(SIV) 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작상태를 시험기를 통해 확인한다. +6) GDU 전원공급기의 전원연결상태 또는 광케이블의 연결상태와 배선상태를 확인한다. +7) 출력단 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('78e1ff92-dd57-4c0a-b255-f3b27eedc2a4', '0235', '235', '제동력부족(ISBD, Car4)', 'T1', 'B', '제동력부족(ISBD)', 'B', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit3 “ISBD” 신호가 "1"이 되면 검지.', '해당 차량 제동력 부족 검지 현시 및 해당 차량 제동압력(BCP)이 타 차량에 비해 현저히 낮음.', '제동 7단 취급 시 해당 차량의 제동압력이 생성되지 않음.', '제동 7단 취급 시 정상적인 제동압력이 생성된 경우 소거.', 'MCS모드로 전환 후, 마스콘을 N(중립) -> 제동7단까지 수회취급 하여 소거 여부 확인. 제동 취급 확인 후, 주의 운전 할 것. +지속발생시 관제보고하고 지시에 따를 것.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('78ebf481-03c2-405f-a6b7-be7a80eec398', '0521', '521', 'DCU#6 2위(L1) - 모듈 상태 이상', 'M3', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 “01” 또는 “00”이 되면 +검지 +', '이중계절체동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러)이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('78ecfca4-cb62-4720-b127-b9ddf0cd3832', '1526', '1526', 'TCMS 데이타버스2 우측라인 통신 이상(Car2)', 'M1', 'C', 'TCMS 데이터버스2 우측라인 통신 이상', 'C', 'TCMS', 'TCMS의 초기 기동 시 자기진단에 의한 2중계 메인통신선 중 2계 메인통신 이상 검지 시 +', '1) SL-NET 2중계이므로 데이터버스 1계로 정상통신, 운행에 지장 없음. +2) 초기기동 자기진단 시 2중계를 점검하여 2계측의 이상이 검지되었다는 점검 필요용 메시지', '초기 기동 시 SL-NET 1계와 2계를 각각 통신 후 비교하여 1계는 정상통신이 되나 2계는 정상통신이 안 되는 경우 +', '정상 수리 후 차량 전체 재기동하여 SL-NET 1계와 2계 모두 정상통신이 되는 경우', '1) 고장검출호차와 고장검출 우측호차와의 SL-NET 통신 2계 정상여부 확인(예 : 고장호차가 3호차인 경우, 1-2-3-4-5-6-7-8에서 3호차의 우측 즉, 3-4호차간 SL-NET 2계 통신 상태 점검 필요) +2) 고장검지호차의 SCM PCB 교체 정상여부 확인 +3) 고장검지호차의 우측호차 SCM PCB 교체 정상여부 확인 +4) 고장검지호차와 고장검지 우측호차의 SL-NET 2계 메인통신 배선의 연결 상태 확인 +5) 2 ~ 4번에도 정상적으로 복귀되지 않는 경우, CU/TU ASS'Y 교체(백보드 확인 필요)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('790244fd-875e-4ddf-a61a-4606afdf8641', '0211', '211', 'BECU#6 - 2축 속도신호의 비정상', 'M3', 'C', 'BECU-2축속도신호의 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit2 “2축속도신호의 비정상” 신호가 “1”이 +되면 검지 +', '해당 차량 2축속도신호의 비정상 검지 현시 및 해당 차량 활주제어불가', '해당 차량의 2축속도센서 고장 발생 +', '해당 차량의 2축속도센서가 정상적일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('79183163-e776-429c-88f0-c0db563079fe', '0742', '742', 'HVAC#5 - 전자접촉기 보조히터3(AHEK) 고장', 'T2', 'C', 'HVAC-전자접촉기 보조히터3(AHEK) 고장', 'C', 'HVAC', 'HVAC 보조난방기 작동 중 AHEK3 전자접촉기 고장 발생 +', 'UNIT2 보조난방기 전난방 시 반난방만 작동', '보조난방기 작동 중 2.5초 이상 동안 AHEK3 작동 feedback 신호가 수신되지 않는 경우 +', 'AHEK3 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) AHEK3을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, AHEK3과 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7920b53e-81a3-4cc2-adea-fd1d740ed5ce', '0749', '749', 'HVAC#5-380V 전원고장', 'T2', 'C', 'HVAC-380V 전원고장', 'C', 'HVAC', 'HVAC 메인 전원 AC 380V 전원 고장 발생', 'HVAC 냉방 및 난방 기능 불가', '차량으로부터 공급되는 AC 380V가 입력되지 않는 경우', '차량으로부터 AC 380V 전압이 정상적으로 입력', '1) 차량으로부터 AC 380V 전압이 정상적으로 입력되는지 확인한다. +2) 차량전원이 정상일 경우, 냉난방 배전반의 CBLVD 차단기가 꺼져 있는지 확인 후, 꺼져있을 경우, 켠다. +3) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('7945bce8-4af4-4f08-b2d7-15608070ba65', '0212', '212', 'BECU#7-1축속도신호의 비정상', 'M4', 'C', 'BECU-1축속도신호의 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit3 “1축속도신호의 비정상” 신호가 "1"이 되면 검지.', '해당 차량 1축속도신호의 비정상 검지 현시 및 해당 차량 활주제어 불가.', '해당 차량의 1축 속도센서 고장 발생.', '해당 차량의 1축 속도센서가 정상적일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('7951d755-6cf7-4e16-8399-e78264235105', '0513', '513', 'DCU#8 2위(L1) - 모듈 상태체크 에러', 'Tc2', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 “Module check error” 신호가 “1”이 되면 검지 +', 'Modulecheckerror현시(출입문은 정상작동가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태 체크 기능에 이상이 생긴 경우 고장 발생 +', 'DCU의 ‘A' 모듈과 ‘B' 모듈 간, 상태 체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('795d8a66-2718-46c9-9445-48798207ac85', '0503', '503', 'DCU#6 6위(L3) - 출입문 내부 비상핸들 취급(EED)', 'M3', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('796a392c-20b2-4eec-8a11-d10627439178', '0181', '181', 'VVVF#3-MCOK 투입불량(MCOKNC)', 'M2', 'C', 'VVVF-MCOK 투입불량(MCOKNC)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT34의 Bit6 “MCOKNC” 신호가 "1"이 되면 검지.', null, 'MCOK 투입조건에서 개방상태 유지 시 고장검지.', '동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) 판토하강상태에서 테스트모드로 전환하여 시퀀스를 투입하고 MCOK의 주접점 동작을 확인한다. +2) 주회로 차단기함 내에 MCOK의 보조접점의 동작상태를 확인한다. +3) 추진제어장치 계전기 유니트에 MCHK1( +2) 보조접촉기 상태를 확인하여 동작 여부를 확인한다. +4) 추진제어장치 시험기를 이용하여 제어기 시험을 실시하여 이상여부를 확인한다.', null, '3', '2025-10-12 01:21:37.578803+00', null, '로템40량(2018)-1단계', 'Rotem'), ('79786b49-8e3b-4633-adff-367a0694f85f', '0033', '33', 'ATC 비상제동', 'Tc1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7979b9e9-e98e-4244-9549-3a3018afd453', '0142', '142', 'VVVF#6-배터리 전원저하(P100LVD)', 'M3', 'C', 'VVVF-배터리 전원저하(P100LVD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT29의 Bit7 “P100LVD” 신호가 "1"이 되면 검지.', null, '100V 제어전원이 67V 이하일 때 고장검지.', '제어전원 70V 이상일 때 고장 소거됨.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 차량의 측전지 저압을 측정하여 측전지 전압기준치(DC 70V~110V) 이내인지 확인하고 이상이 있을 시 충전계통 회로를 점검한다. +3) 추진제어장치 함 내부 제어전원 단자대에서 100P ~100G간 전압이 67V 이상임을 확인한다. +4) 동력차 일반배전반의 VVVFIC NFB의 스위치 상태 및 열화상태 등을 확인한다 +5) 상기 점검부분에 이상이 없을 경우 PWS보드를 교체한다. +6) PWS보드 교체 후에도 동일고장 재발 시 추진제어장치 시험기를 이용하여 TCU(통합제어기)의 정상동작을 확인한다.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('798dabc6-df95-4f21-a66e-d915b1928715', '0127', '127', 'VVVF-BCH IGBT 이상검지(GDFB) (Car6)', 'M3', 'C', 'VVVF-BCH IGBT 이상검지(GDFB)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT34의 Bit1 “GDFB” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 'BCH IGBT 이상검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치 내부 IGBT에 과전류 검지될경우.', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반배전반의 VVVFIC nfb 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 제동저항기로 출력되는 전류치 확인함. +3) 전류치가 비정상적일 경우 IGBT, GDU, 전류센서, 제동저항기 결선을 확인한다. +4) 전류센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작상태를 시험기를 통해 확인한다. +6) GDU의 전원연결상태 또는 광케이블의 연결상태와 배선상태를 확인한다. +7) 제동저항기 내부의 이물질 유무를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.656536+00', null, '다대48량(2015)', 'Rotem'), ('7997567a-2796-420c-8e45-e080475d998b', '0508', '508', 'DCU#2 6위(L3) - 출입문 모터/인코더 고장', 'M1', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 “Motor / Encoder failure” 신호가 “1”이 되면 +검지 +', '출입문 정상동작 불가', ' +1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우(인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터/인코더 회로 가 손상된 경우 +', '모터/인코더 및 DCU가 정상 상태이고, 전기적 연결 상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있는지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. ※ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. ? DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. ? DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) ? DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('79b38884-d3e6-4103-935e-d67e41620bb3', '0502', '502', 'DCU#5 6위(L3)-출입문 장애물검지', 'T2', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('79ba4e84-9087-4f3a-9e80-7e7fd58b0d78', '0743', '743', 'HVAC#5 - 전자접촉기 보조히터2(AHEK) 고장', 'T2', 'C', 'HVAC-전자접촉기 보조히터2(AHEK) 고장', 'C', 'HVAC', 'HVAC 보조난방기 작동 중 AHEK2 전자접촉기 고장 발생 +', 'UNIT1 보조난방기 전난방 시 반난방만 작동', '보조난방기 작동 중 2.5초 이상 동안 AHEK2 작동 feedback 신호가 수신되지 않는 경우 +', 'AHEK2 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) AHEK2를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, AHEK2와 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('79bac975-0857-45ef-b6c5-22db0e3b1b45', '0506', '506', 'DCU#1 4위(L2)-출입문 입력 저전압', 'Tc1', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 "1"이 되면 검지.', '저전안 상태 (출입문 동작이 심하게 느려지거나 작동조차 안될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('79bbcf09-788d-4002-9265-6887a980e433', '0514', '514', 'DCU#2 2위(L1)-출입문 닫힘 시간 초과', 'M1', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 "Close time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 닫힘 동작시간이 7초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도 한 후, '장애물로 인한 닫힘실패' 고장과 함께 'Close time out' 고장이 함께 현시', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('79c06d82-12e4-4f7f-9957-52833021af15', '0521', '521', 'DCU#6 5위(R3) - 모듈 상태 이상', 'M3', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 “01” 또는 “00”이 되면 +검지 +', '이중계절체동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러)이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('79c44ac7-28fd-47db-a38b-30615f461cde', '0519', '519', 'DCU#4 2위(L1) - ZVR 신호 에러', 'T1', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 “ZVR signal error” 신호가 “1”이 되면 검지 +', '출입문이강제로 닫히게 되고, 열림은 불가능', ' +1) 차량 ZVR 신호가 없는 상태(차량 주행상태)에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함. +', '해당 출입문 ZVR 신호 수신', '1) 차량 이 주행중이라면, 차량 이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('79c7ab3b-eaed-4663-b71d-0d080befdb80', '1410', '1410', 'BMS#8 - 충전저온(CUT, - 10도 이하)', 'Tc2', 'D', 'BMS-충전저온(CUT)', 'D', 'BMS', '해당 차량의 배터리 온도가 -25도 이하가 되면 검지 +', '차량 배터리충전저온검지 후, -35도 이하이면 충전접촉기(CK)가 차단된다.', '배터리충전저온(-20도 이상) +', '배터리충전저온정상범위로 회복(-20도 이상)', '1) 배터리 NFB 상태 확인 +2) 이상이 없으면 차량 전체를 리셋한다. +3) 차량 리셋 후에도 동일고장이면 사령실과 연락하여 조치를 취한다. (배터리를 상온조건으로 만든다.)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('79c8d571-943f-4277-b81b-6398b26b4181', '0514', '514', 'DCU#7 1위(R1) - 출입문 닫힘 시간 초과', 'M4', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 “Close time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 닫힘 동작 시간이 7초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도한 후, ‘장애물로 인한 닫힘 실패' 고장과 함께 ‘Close time out' 고장이 함께 현시 +', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('79ddae92-b3eb-4a3f-8511-ee8132b4f488', '0896', '896', '비상인터폰 동작(Car#2-1)', 'M1', 'W', null, null, 'RADIO', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('79e03e57-6125-42af-b7db-4347cc381187', '0521', '521', 'DCU#1 4위(L2)-모듈 상태 이상', 'Tc1', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 "01"또는 "00"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('79e5caa0-1e46-4d16-8a75-4b267082147b', '0212', '212', 'BECU#3 - 1축 속도신호의 비정상', 'M2', 'C', 'BECU-1축속도신호의 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit3 “1축속도신호의 비정상” 신호가 “1”이 +되면 검지 +', '해당 차량 1축속도신호의 비정상 검지 현시 및 해당 차량 활주제어불가', '해당 차량의 1축속도센서 고장 발생 +', '해당 차량의 1축속도센서가 정상적일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7a08d9e4-1d03-43af-9529-b21852cf0c3b', '0506', '506', 'DCU#7 2위(L1) - 출입문 입력 저전압', 'M4', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 “1”이 되면 검지 +', '저전압상태(출입문 동작이 심하게 느려지거나 작동조차 안 될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하 +', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7a170a61-100e-4e67-87f9-71c33a1b1125', '0519', '519', 'DCU#5 2위(L1) - ZVR 신호 에러', 'T2', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 “ZVR signal error” 신호가 “1”이 되면 검지 +', '출입문이강제로 닫히게 되고, 열림은 불가능', ' +1) 차량 ZVR 신호가 없는 상태(차량 주행상태)에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함. +', '해당 출입문 ZVR 신호 수신', '1) 차량 이 주행중이라면, 차량 이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7a191b6d-5707-46f4-85da-c7389286817d', '0703', '703', 'HVAC#3 - 냉난방장치1 압축기2 과부하', 'M2', 'C', 'HVAC-냉난방장치1 압축기2 과부하', 'C', 'HVAC', 'HVAC 냉방 작동 중 냉난방장치1 압축기2 또는 응축기2 모터에 과부하 발생 +', '냉방 기능 저하(전냉방 시 반냉방으로 작동)', ' +1) 냉방 작동 중 UNIT1의 압축기2 또는 응축기2 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRCM2와 연결된 THR2가 Trip 됨. +', 'UNIT1의 압축기2 또는 응축기2 모터의 과부하조건을 해소하여 정상 가능 상태로 만들고, THR2 및 마이콤 전원 리셋', '1) 냉난방 배전반의 점검커버를 열고, THR2의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR2의 전류 세팅값이 11.5A에 맞춰져 있는지 확인하여, 아닐 경우, (+) 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동시킨 후, THR2의 2차측 2, 4, 6 단자에서 각 단자 간 상간 전압이 AC 380V로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 압축기 및 응축기 단품 상태에서 점검을 한다. +7) THR2의 2차측 2, 4, 6 단자에서 각 단자 간 권선저항이 모두 같은지 확인한다. (±10% 이하) (압축기2 및 응축기2 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT1의 압축기1 또는 응축기1 모터의 결선을 해제한 후 각 부품의 권선저항을 확인 후, 문제가 있는 부품을 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR2 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7a2d2a70-2855-40f5-8ab3-97e47ab20060', '0723', '723', 'HVAC#1-냉난방장치1 압력스위치2(DPS) 냉매부족', 'Tc1', 'C', 'HVAC-냉난방장치1 압력스위치2(DPS) 냉매부족', 'C', 'HVAC', '냉난방장치1 냉매 압력스위치2 저압 발생.', 'UNIT1 CYCLE2 냉방 기능 불가', 'UNIT1 DSP2측 냉매 압력이 30초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우', '냉매 압력이 정상 수치 2±0.5(kgf/cm2 이상 유지하도록 하고, 마이콤 전원을 리셋', '1) 배전반 점검 커버를 열고 마이콤 전원을 리셋한 후, 냉방 가동 시, CREF2의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)을 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안되는 것을 확인한 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('7a316c92-9b2d-4488-a152-73e3bd764174', '0724', '724', 'HVAC#3-냉난방장치1 압력스위치1(DPS) 냉매부족', 'M2', 'C', 'HVAC-냉난방장치1 압력스위치1(DPS) 냉매부족', 'C', 'HVAC', '냉난방장치1 냉매 압력스위치1 저압 발생.', 'UNIT1 CYCLE1 냉방 기능 불가', 'UNIT1 DSP1측 냉매 압력이 30초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우', '냉매 압력이 정상 수치 2±0.5(kgf/cm2 이상 유지하도록 하고, 마이콤 전원을 리셋', '1) 배전반 점검 커버를 열고 마이콤 전원을 리셋한 후, 냉방 가동 시, CREF2의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)을 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안되는 것을 확인한 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('7a3e48e7-c597-4f0e-ba04-3ec425eae2ac', '0720', '720', 'HVAC#8 - 실내온도 센서1 고장', 'Tc2', 'C', 'HVAC-실내온도 센서1 고장', 'C', 'HVAC', '객실 실내온도 센서1 고장 발생 +', '실내온도센서1 고장 현시', '온도센서 검지범위는 -45 ~ 85도(820 ~ 1,330Ω)인데, 2초 이상 검지범위를 벗어나는 경우 +', '온도센서 검지값이 2초 이상 허용온도 범위 내일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820 ~ 1,330Ω을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7a3ee4e4-bd65-4798-a88d-c8859f624fa3', '0519', '519', 'DCU#1 3위(R2) - ZVR 신호 에러', 'Tc1', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 “ZVR signal error” 신호가 “1”이 되면 검지 +', '출입문이강제로 닫히게 되고, 열림은 불가능', ' +1) 차량 ZVR 신호가 없는 상태(차량 주행상태)에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함. +', '해당 출입문 ZVR 신호 수신', '1) 차량 이 주행중이라면, 차량 이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7a420ef7-4e6d-40fd-b70a-800b25b0db59', '0506', '506', 'DCU#1 2위(L1)-출입문 입력 저전압', 'Tc1', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 "1"이 되면 검지.', '저전안 상태 (출입문 동작이 심하게 느려지거나 작동조차 안될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('7a4669e1-423f-4dc4-a4d8-58ed6eada7f7', '0506', '506', 'DCU#5 6위(L3) - 출입문 입력 저전압', 'T2', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 “1”이 되면 검지 +', '저전압상태(출입문 동작이 심하게 느려지거나 작동조차 안 될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하 +', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7a4df847-30b4-4d47-9dda-64affc70c705', '0419', '419', 'SIV#1 - 시퀀스 고장(SQCFLT)', 'Tc1', 'C', 'SIV-시퀀스 고장(SQCFLT)', 'C', 'SIV', '보조전원장치(SIV)의 RS485데이터 중 SIV-TCMS SD TEXT6의 Bit4 “SQCFLT”신호가 “1”이 되면 +검지 +', '1) 보조전원장치(SIV) 일반화면에 보조전원장치 상태 붉은색으로 표시됨. +2) 보조전원장치(SIV)는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 보조전원장치(SIV) 중고장이 발생함. +5) 중고장이 발생되면 TCMS 일반화면에 보조전원장치(SIV) 상태 붉은색으로 표기되며, 연장급전 됨.', ' +1) 보조전원장치(SIV)에 고압 인가 후 60초 이내 출력전압 공급 불가 시 +2) 기동 중 컨텍터(CHK, LK, SIVK), FC, 릴레이, 전압센서 등 보조전원장치 내부 부품 불량발생 시 +3) DIO, SEN 보드 불량 또는 결선라인 이상 발생 시 +', '1) 경고장이 발생할 경우 보조전원장치(SIV) 자동 재기동에 의해 재기동 됨. +2) 중고장이 발생했을 경우 조치 완료 후 보조전원장치(SIV) 리셋으로 고장 소거됨.', '1) 상기 고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 보조전원장치(SIV) 고장기록을 수집하여 동작과정 중 이상이 있는지 확인한다. +3) 보조전원장치(SIV) 내부 구성품의 상태 및 광케이블 상태, 결선상태, 릴레이 상태를 확인한다. +4) 전압(입력단, FC단)센서 상태확인 및 보조전원장치(SIV) 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) 컨텍터의 주접점, 보조접점의 상태확인 및 보조전원장치(SIV) 제어기 DIO 보드에 연결되는 저전압 배선상태를 확인한다. +6) 충전저항 및 방전저항의 상태를 확인한다. +7) DIO, SEN 보드의 동작 상태를 시험기를 통해 확인한다. +8) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7a4f2eff-7852-4164-8e50-26f0a3d4820d', '0728', '728', 'HVAC#2 - 냉난방장치2 토출 센서 고장', 'M1', 'C', 'HVAC-냉난방장치2 토출 센서 고장', 'C', 'HVAC', '냉난방장치2의 토출 센서 고장 발생 +', '냉난방장치2 토출 센서 고장현시', '온도센서 검지범위는 -45 ~ 85도(820 ~ 1,330Ω)인데, 2초 이상 검지범위를 벗어나는 경우 +', '온도센서 검지값이 2초 이상 허용온도 범위 내일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820 ~ 1,330Ω을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7a5a2dc2-7b7f-4130-ab6c-3f831468c4e8', '0887', '887', '실내카메라#2(SCAM) 고장(Car#8)', 'Tc2', 'C', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('7a604e14-3d07-4535-88aa-7259d5dedd1b', '0748', '748', 'HVAC#7-전자접촉기 차량히터1(CRRHT) 고장', 'M4', 'C', 'HVAC-전자접촉기 차량히터1(CRRHT) 고장', 'C', 'HVAC', '객실 난방기 작동 중 CRRHT1 전자접촉기 고장 발생.', '객실 전난방 시 2/3난방만 작동', '객실 전난방 작동 중 2.5초 이상동안 CRRHT1 작동 feedback 신호가 수신되지 않는 경우', 'CRRHT1 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CRRHT1을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRRHT1과 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('7a760a60-9680-49d8-9e1d-9d754d734e95', '0724', '724', 'HVAC#7-냉난방장치1 압력스위치1(DPS) 냉매부족', 'M4', 'C', 'HVAC-냉난방장치1 압력스위치1(DPS) 냉매부족', 'C', 'HVAC', '냉난방장치1 냉매 압력스위치1 저압 발생.', 'UNIT1 CYCLE1 냉방 기능 불가', 'UNIT1 DSP1측 냉매 압력이 30초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우', '냉매 압력이 정상 수치 2±0.5(kgf/cm2 이상 유지하도록 하고, 마이콤 전원을 리셋', '1) 배전반 점검 커버를 열고 마이콤 전원을 리셋한 후, 냉방 가동 시, CREF2의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)을 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안되는 것을 확인한 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('7a8035c7-22d4-45e7-9541-82ca03d46bb2', '0218', '218', 'BECU#1-인통선로직 비정상', 'Tc1', 'C', 'BECU-인통선로직 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit1 “인통선로직 비정상” 신호가 "1"이 되면 검지.', '해당 차량 인통선로직 비정상 검지 현시 및 해당차량 정상적인 제동제어 불가.(상용제동지령에 따른 제어)', '해당 차량의 추진선택(P), 제동선택(B) 신호가 동시에 ON 됨.', '해당 차량의 추진선택(P), 제동선택(B) 신호가 정상작동(상보적으로 작동) 될 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 한 뒤, 마스콘을 제동 7단으로 5초간 취급하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('7a8e2df6-70c9-4501-8cec-612ef923ccec', '0521', '521', 'DCU#8 1위(R1) - 모듈 상태 이상', 'Tc2', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 “01” 또는 “00”이 되면 +검지 +', '이중계절체동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러)이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7aaca2c1-97c6-4fa6-bc84-dc6929184165', '0702', '702', 'HVAC#4 - 냉난방장치2 압축기1 과부하', 'T1', 'C', 'HVAC-냉난방장치2 압축기1 과부하', 'C', 'HVAC', 'HVAC 냉방 작동 중 냉난방장치2 압축기1 또는 응축기1 모터에 과부하 발생 +', '냉방 기능 저하(전냉방 시 반냉방으로 작동)', ' +1) 냉방 작동 중 UNIT2의 압축기1 또는 응축기1 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRCM3과 연결된 THR3이 Trip 됨. +', 'UNIT2의 압축기1 또는 응축기1 모터의 과부하조건을 해소하여 정상 가능 상태로 만들고, THR3 및 마이콤 전원 리셋', '1) 냉난방 배전반의 점검커버를 열고, THR3의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR4의 전류 세팅값이 11.5A에 맞춰져 있는지 확인하여, 아닐 경우, (+) 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동시킨 후, THR3의 2차측 2, 4, 6 단자에서 각 단자 간 상간 전압이 AC 380V로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 압축기 및 응축기 단품 상태에서 점검을 한다. +7) THR3의 2차측 2, 4, 6 단자에서 각 단자 간 권선저항이 모두 같은지 확인한다. (±10% 이하) (압축기1 및 응축기1 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT2의 압축기1 또는 응축기1 모터의 결선을 해제한 후 각 부품의 권선저항을 확인 후, 문제가 있는 부품을 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR3 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7ac54178-71b1-49bc-a9c0-28be8e998308', '0163', '163', 'VVVF#7-FC과전압검지2(OVD2)', 'M4', 'C', 'VVVF-FC과전압검지2(OVD2)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT32의 Bit4 “OVD2” 신호가 "1"이 되면 검지.', null, 'FC전압 1850V이상 도달 시 고장검지', '제동 OFF', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 FC전압에 이상이 있는지 확인한다. +3) 추진제어장치 내부 고전압부에 소손흔적이 있는지 확인한다. +4) FC에 연결된 버스바의 체결상태가 양호한지 확인한고, 버스바를 분리하여 FC의 Capacitance를 측정하여 이상이 없는지 확인한다. +5) 전압센서의 외관 및 단자 체결상태를 확인한다. +6) 추진제어장치 시험기를 이용하여 TCU(통합제어장치)의 이상여부를 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('7ad01f98-a8c2-48bc-bf93-176141b8e194', '0185', '185', 'VVVF#3 - 인통선 대비 ZVR 불일치 검지', 'M2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7ae0a4c1-a204-4b98-a1c2-5205ccd34f77', '0508', '508', 'DCU#1 5위(R3) - 출입문 모터/인코더 고장', 'Tc1', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 “Motor / Encoder failure” 신호가 “1”이 되면 +검지 +', '출입문 정상동작 불가', ' +1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우(인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터/인코더 회로 가 손상된 경우 +', '모터/인코더 및 DCU가 정상 상태이고, 전기적 연결 상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있는지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. ※ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. ? DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. ? DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) ? DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7ae54d03-f8f7-4ab8-b71c-7714c67c5059', '0506', '506', 'DCU#6 6위(L3)-출입문 입력 저전압', 'M3', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 "1"이 되면 검지.', '저전안 상태 (출입문 동작이 심하게 느려지거나 작동조차 안될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('7ae8b2b9-2415-4be3-a025-f622061a5db2', '0166', '166', 'VVVF#7-대활주/대공전(WSD)', 'M4', 'W', 'VVVF-대활주/대공전(WSD)', 'W', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT32의 Bit7 “WSD” 신호가 "1"이 되면 검지.', null, '공전, 활주 발생 시 고장검지', '1) 역행 자동복귀 +2) 제동 제동 OFF시', '1) 주행 당시의 노선상태가 오염, 습기, 결빙 등 외부환경에 의한 경우 조치할 내용은 없다. +2) 과도한 발생 시 낮은 견인력/제동력으로 주행. +3) 차륜에 윤활성 물질 오염여부 확인 및 세척. +4) 차륜 표면에 찰상 등 흔적이 있는 경우 삭정하여 운행한다.', null, '3', '2025-10-12 01:21:37.578803+00', null, '로템40량(2018)-1단계', 'Rotem'), ('7ae9109b-e238-4a7b-98c3-75855f064b60', '0509', '509', 'DCU#2 6위(L3)-출입문 잠김 리미트 스위치 고장', 'M1', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 "DLS Failure” 신호가 "1"이 되면 검지.', '출입문 잠김 상태 확인 불가', '1) 출입문이 열림 상태에서 DLS가 작동되�� 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('7b130f5e-c4e2-4e47-b327-a01f2f49c670', '0718', '718', 'HVAC#5-CO2 센서1 고장', 'T2', 'C', 'HVAC-CO2 센서1 고장', 'C', 'HVAC', '객실 CO2 센서1 고장 발생', 'CO2 센서1 고장현시', 'CO2 센서의 검지범위는 0~4000ppm (2~10Vdc) 인데, 1초 이상 출력전압이 2Vdc (0ppm) 미만으로 떨어지는 경우', 'CO2 센서 검지 값이 1초 이상 2Vdc (0ppm) 이상 지속되는 경우', '1) 전원을 인가한 상태에서 CO2센서 커버를 열고 테스터기를 통해 'OUT2' 단자와 'G' 단자간의 전압이 2Vdc 미만인지 확인한다. +2) 만약 전압이 2Vdc 이상인데도 고장이 지속될 경우, 마이콤을 교체한다. +3) 만약 전압이 2Vdc 미만으로 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('7b133588-9ca8-486a-83ec-0b3c477ac664', '0736', '736', 'HVAC#1 - 전자접촉기 압축기(CRCM)1 고장', 'Tc1', 'C', 'HVAC-전자접촉기 압축기(CRCM)1 고장', 'C', 'HVAC', 'HVAC 냉방 작동 중 CRCM1 전자접촉기 고장 발생 +', '냉방 기능 저하(전냉방 시 반냉방으로 작동)', '냉방 작동 중 2.5초 이상 동안 CRCM1 작동 feedback 신호가 수신되지 않는 경우 +', 'CRCM1 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CRCM1을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRCM1과 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7b1938b4-8925-4155-b66f-1baabe480dc8', '1209', '1209', 'FDU#5-스위치 고장', 'T2', 'C', 'FDU-스위치 고장', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT5의 Bit4 “Switch Fault” 신호가 "1"이 되면 검지.', 'Switch Fault 현시 및 FDU의 조작 버튼 동작 안됨(화재 검지 및 기타 기능에는 상관없음)', '1) FDU가 부팅될때 스위치가 눌려진 상태(3.3V 전압이 인가된 상태)인 경우 +2) FDU가 부팅될때 스위치 고장으로 인하여 항상 눌러진 상태(3.3V 전압이 인가된 상태)에 있는 경우.', 'FDU가 부팅될때 스위치가 눌려진 상태(3.3V 전압이 인가된 상태)가 아닌 경우 +조치조건 : +1) 고장이 발생한 수신기의 스위치 상태 확인 및 점검 +2) FDU의 전원을 리셋하여 소거여부 확인 +3) 문제가 지속될 경우, 수신기 교체', null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('7b27e592-d8f5-471b-800d-c0fee4155138', '0516', '516', 'DCU#7 4위(L2)-출입문 장애물로 인한 닫힘 실패', 'M4', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Close failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림상태로 대기', '도어 닫힘 중 3회 장애물 감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('7b2c32c0-199c-41cb-b588-ac6dbd258845', '0520', '520', 'DCU#1 5위(R3) - 이중계 절체 동작', 'Tc1', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 “Module switchover” 신호가 “1”이 되면 검지 +', '이중계 절체 동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러) 이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A'모듈 및 ‘B'모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7b3c529b-66f6-4d1d-99e3-876a55879e25', '0516', '516', 'DCU#1 1위(R1)-출입문 장애물로 인한 닫힘 실패', 'Tc1', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Close failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림상태로 대기', '도어 닫힘 중 3회 장애물 감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('7b435200-674a-4b17-bb50-07e036b1f02c', '0506', '506', 'DCU#7 6위(L3) - 출입문 입력 저전압', 'M4', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 “1”이 되면 검지 +', '저전압상태(출입문 동작이 심하게 느려지거나 작동조차 안 될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하 +', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7b45831b-3d94-4297-a3a5-626e660e7fb4', '0513', '513', 'DCU#1 3위(R2)-모듈 상태체크 에러', 'Tc1', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 "Module check error” 신호가 "1"이 되면 검지.', 'Module check error 현시 (출입문은 정상작동 가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태체크 기능에 이상이 생긴 경우 고장 발생.', 'DCU의 'A'모듈과 'B'모듈 간, 상태체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('7b49173a-1d8c-47e0-9542-aa5f88ba6098', '0500', '500', 'DCU#4 3위(R2) 통신고장', 'T1', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS 간 RS485 통신고장이 검지되면 발생 +', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐상태 등의 변화가 없음.', ' +1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우 +', '해당 차량의 DCU 및 CU/TU의 전원이 정상상태이고, 통신 라인 연결 상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜져 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적 으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는 데도 지속적으로 통신고장이 검지되면, DCU의 X2, X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상 체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7b617405-5831-4bfa-8bfd-13ab689866b2', '0210', '210', 'BECU#2-3축속도신호의 비정상', 'M1', 'C', 'BECU-3축속도신호의 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit1 “3축속도신호의 비정상” 신호가 "1"이 되면 검지.', '해당 차량 3축속도신호의 비정상 검지 현시 및 해당 차량 활주제어 불가.', '해당 차량의 3축 속도센서 고장 발생.', '해당 차량의 3축 속도센서가 정상적일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('7b708bee-cfa1-46a3-927c-80c8928ec8d2', '0752', '752', 'HVAC#3-배기댐퍼 닫힘고장', 'M2', 'C', 'HVAC-배기댐퍼 닫힘고장', 'C', 'HVAC', '차량 배기댐퍼가 닫혀있는 상태에서 배기댐퍼 닫힘 리미트 스위치가 작동되지 않음', '배기댐퍼 닫힘 고장 현시', '배기댐퍼를 닫힘으로 제어했으나 닫힘 리미트 스위치 입력이 없을 경우', '배기댐퍼 닫힘 상태에서 리미트 스위치 입력이 정상적으로 입력', '1) 배기댐퍼가 닫힌 상태에서 닫힘 리미트 스위치가 정상적으로 작동되었는지 확인한다. +2) 닫힘 리미트 스위치가 정상작동 되었음에도 문제가 발생될 경우, 스위치를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('7b9cb3cc-8131-4d24-8033-f371bcc35580', '0513', '513', 'DCU#3 4위(L2)-모듈 상태체크 에러', 'M2', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 "Module check error” 신호가 "1"이 되면 검지.', 'Module check error 현시 (출입문은 정상작동 가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태체크 기능에 이상이 생긴 경우 고장 발생.', 'DCU의 'A'모듈과 'B'모듈 간, 상태체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('7badc758-de51-4237-a9ed-0602e8d1aacb', '0142', '142', 'VVVF#7-배터리 전원저하(P100LVD)', 'M4', 'C', 'VVVF-배터리 전원저하(P100LVD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT29의 Bit7 “P100LVD” 신호가 "1"이 되면 검지.', null, '100V 제어전원이 67V 이하일 때 고장검지.', '제어전원 70V 이상일 때 고장 소거됨.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 차량의 측전지 저압을 측정하여 측전지 전압기준치(DC 70V~110V) 이내인지 확인하고 이상이 있을 시 충전계통 회로를 점검한다. +3) 추진제어장치 함 내부 제어전원 단자대에서 100P ~100G간 전압이 67V 이상임을 확인한다. +4) 동력차 일반배전반의 VVVFIC NFB의 스위치 상태 및 열화상태 등을 확인한다 +5) 상기 점검부분에 이상이 없을 경우 PWS보드를 교체한다. +6) PWS보드 교체 후에도 동일고장 재발 시 추진제어장치 시험기를 이용하여 TCU(통합제어기)의 정상동작을 확인한다.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('7bba41d1-e55d-48ca-b45b-06837ba88c66', '0516', '516', 'DCU#8 2위(L1)-출입문 장애물로 인한 닫힘 실패', 'Tc2', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Close failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림상태로 대기', '도어 닫힘 중 3회 장애물 감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('7bc75d39-6d72-4310-8e83-a14cec3d0bda', '0509', '509', 'DCU#7 3위(R2)-출입문 잠김 리미트 스위치 고장', 'M4', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 "DLS Failure” 신호가 "1"이 되면 검지.', '출입문 잠김 상태 확인 불가', '1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('7bc8ab34-c570-48a6-97ec-c5f417603572', '0511', '511', 'DCU#5 1위(R1)-출입문 닫힘 리미트 스위치2 고장', 'T2', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 "DCS2 Failure(Right)” 신호가 "1"이 되면 검지.', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('7bd494ef-045d-4791-b631-8c573c08c90f', '0702', '702', 'HVAC#5 - 냉난방장치2 압축기1 과부하', 'T2', 'C', 'HVAC-냉난방장치2 압축기1 과부하', 'C', 'HVAC', 'HVAC 냉방 작동 중 냉난방장치2 압축기1 또는 응축기1 모터에 과부하 발생 +', '냉방 기능 저하(전냉방 시 반냉방으로 작동)', ' +1) 냉방 작동 중 UNIT2의 압축기1 또는 응축기1 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRCM3과 연결된 THR3이 Trip 됨. +', 'UNIT2의 압축기1 또는 응축기1 모터의 과부하조건을 해소하여 정상 가능 상태로 만들고, THR3 및 마이콤 전원 리셋', '1) 냉난방 배전반의 점검커버를 열고, THR3의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR4의 전류 세팅값이 11.5A에 맞춰져 있는지 확인하여, 아닐 경우, (+) 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동시킨 후, THR3의 2차측 2, 4, 6 단자에서 각 단자 간 상간 전압이 AC 380V로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 압축기 및 응축기 단품 상태에서 점검을 한다. +7) THR3의 2차측 2, 4, 6 단자에서 각 단자 간 권선저항이 모두 같은지 확인한다. (±10% 이하) (압축기1 및 응축기1 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT2의 압축기1 또는 응축기1 모터의 결선을 해제한 후 각 부품의 권선저항을 확인 후, 문제가 있는 부품을 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR3 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7bd84fba-b7e1-4df1-bde6-ebf407c542b2', '0123', '123', 'VVVF-역행/회생 이상 검지(PBF) (Car7)', 'M4', 'C', 'VVVF-역행/회생 이상 검지(PBF)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT33의 Bit4 “PBF” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 '역행/회생 신호이상검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치 입력되는 역행/제동신호가 동시에 입력될 경우 검지됨.', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반배전반의 VVVFIC nfb 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 역행/제동신호에 이상이 있는지 확인한다.. +3) 차량의 제어회로 중 역행/제동 신호가 추진제어장치로 연결되는 경로에 이상이 없는지 확인한다. +4) DIN 보드의 동작상태를 시험기를 통해 확인한다. +5) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.71571+00', null, '다대48량(2015)', 'Rotem'), ('7be026c9-b7e3-49b6-a961-c23d98d2a07f', '0503', '503', 'DCU#4 1위(R1)-출입문 내부비상핸들 취급(EED)', 'T1', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('7bed0567-f468-4110-b28a-c3c16f546f5b', '0510', '510', 'DCU#6 6위(L3) - 출입문 닫힘 리미트 스위치1 고장', 'M3', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 “DCS1 Failure(Leftt)” 신호가 “1”이 되면 검지 +', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7bf5654b-f119-4001-a7db-106ba7cf6f93', '0702', '702', 'HVAC#6 - 냉난방장치2 압축기1 과부하', 'M3', 'C', 'HVAC-냉난방장치2 압축기1 과부하', 'C', 'HVAC', 'HVAC 냉방 작동 중 냉난방장치2 압축기1 또는 응축기1 모터에 과부하 발생 +', '냉방 기능 저하(전냉방 시 반냉방으로 작동)', ' +1) 냉방 작동 중 UNIT2의 압축기1 또는 응축기1 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRCM3과 연결된 THR3이 Trip 됨. +', 'UNIT2의 압축기1 또는 응축기1 모터의 과부하조건을 해소하여 정상 가능 상태로 만들고, THR3 및 마이콤 전원 리셋', '1) 냉난방 배전반의 점검커버를 열고, THR3의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR4의 전류 세팅값이 11.5A에 맞춰져 있는지 확인하여, 아닐 경우, (+) 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동시킨 후, THR3의 2차측 2, 4, 6 단자에서 각 단자 간 상간 전압이 AC 380V로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 압축기 및 응축기 단품 상태에서 점검을 한다. +7) THR3의 2차측 2, 4, 6 단자에서 각 단자 간 권선저항이 모두 같은지 확인한다. (±10% 이하) (압축기1 및 응축기1 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT2의 압축기1 또는 응축기1 모터의 결선을 해제한 후 각 부품의 권선저항을 확인 후, 문제가 있는 부품을 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR3 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7c0cb974-1d0b-4a76-a031-c7f7d53365ac', '0511', '511', 'DCU#1 5위(R3) - 출입문 닫힘 리미트 스위치2 고장', 'Tc1', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 “DCS2 Failure(Right)” 신호가 “1”이 되면 검지 +', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7c1dfa69-8d90-4c62-9bf4-9bc8ff04f4b5', '0512', '512', 'DCU#7 6위(L3) - 파라미터 로딩 실패', 'M4', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 “Paraneter error” 신호가 “1”이 되면 검지 +', 'Parametererror 현시(출입문은 정상작동 가능)', 'DCU 자체 내의 EEPROM으로부터 parameter데이터 로딩 실패 +', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7c23e4ae-30e3-4a05-9d8b-5ef3995dc4a1', '0518', '518', 'DCU#7 5위(R3) - 출입문 Enable 신호 에러', 'M4', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 “Enable signal error” 신호가 “1”이 되면 검지 +', 'DCU 출입문Enable신호에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드 시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을 때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드 시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입 상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호 장치로부터의 출입문 열림 명령 신호) 취급 시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함. +', '해당 출입문 enable 신호수신', '1) AUTO/MCS 모드 시에는 YARD 모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인 한다. (YARD/FMC 모드 시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7c2a20bc-e9b4-4137-b485-7d32329cc6b7', '0743', '743', 'HVAC#6-전자접촉기 보조히터2(AHEK) 고장', 'M3', 'C', 'HVAC-전자접촉기 보조히터2(AHEK) 고장', 'C', 'HVAC', 'HVAC 보조난방기 작동 중 AHEK2 전자접촉기 고장 발생.', 'UNIT1 보조난방기 전난방 시 반난방만 작동', '보조난방기 작동 중 2.5초 이상동안 AHEK2 작동 feedback 신호가 수신되지 않는 경우', 'AHEK2 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) AHEK2를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, AHEK2와 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('7c4fa474-291f-4415-923e-6212b3b2f5a7', '1502', '1502', '기타장치용 DC 회로차단기 차단(Car7)', 'M4', 'W', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('7c5cd6ce-1406-434d-aa23-5ab9ca429f8e', '0104', '104', 'VVVF#7 - 휠 슬라이드 검지(WSD)', 'M4', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7c62d547-51e6-4bce-95bb-48dd33068e74', '0058', '58', 'AUX FUSE DISCONNECTED(Car7)', 'M4', 'W', 'AUX FUSE DISCONNECTED(Car7)', 'W', 'TCMS', '차량으로부터 AUX FUSE DISCONNECTED 신호 입력시', 'SIV 고압 차단으로 AC전원 전체 "OFF"', '해당 퓨우즈 소손', '해당 퓨우즈 교체', null, ' +REC30330HN0', '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('7c6ebac4-55b4-489d-a8fc-73f809944d8e', '0511', '511', 'DCU#3 4위(L2) - 출입문 닫힘 리미트 스위치2 고장', 'M2', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 “DCS2 Failure(Right)” 신호가 “1”이 되면 검지 +', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7c7a8ebf-56b0-41a2-9e5c-930d0f42cf29', '0502', '502', 'DCU#4 5위(R3) - 출입문 장애물검지', 'T1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7c87187e-556a-4ac9-9712-cc85ff2b11f8', '0501', '501', 'DCU#4 5위(R3) - 출입문 차단', 'T1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7c9308ea-160e-45fa-82ef-c924bb9430b0', '1209', '1209', 'FDU#8 - 스위치 고장', 'Tc2', 'C', 'FDU-스위치 고장', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT5의 Bit4 “Switch Fault” 신호가 “1”이 되면 검지 +', 'Switch Fault 현시 및 FDU의 조작버튼 동작 안 됨(화재검지 및 기타 기능에는 상관없음)', ' +1) FDU가 부팅될 때 스위치가 눌려진 상태(3.3V 전압이 인가된 상태)인 경우 +2) FDU가 부팅될 때 스위치 고장으로 인하여 항상 눌러진 상태(3.3V 전압이 인가된 상태)에 있는 경우 +', 'FDU가 부팅될 때 스위치가 눌려진 상태(3.3V 전압이 인가된 상태)가 아닌 경우', '1) 고장이 발생한 수신기의 스위치 상태 확인 및 점검 +2) FDU의 전원을 리셋하여 소거여부 확인 +3) 문제가 지속될 경우, 수신기 교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7cb6c2ba-b869-41f3-bb67-85f83659f6c7', '0520', '520', 'DCU#6 4위(L2)-이중계 절체 동작', 'M3', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 "Module switchover' 신호가 "1"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.392739+00', null, '로템40량(2018)-1단계', 'Rotem'), ('7cba77db-e0d7-47bc-b707-f0e836a70c18', '1523', '1523', 'TCMS 데이타버스2 좌측라인 통신 이상(Car2)', 'M1', 'C', 'TCMS 데이터버스2 좌측라인 통신 이상', 'C', 'TCMS', 'TCMS의 초기 기동 시 자기진단에 의한 2중계 메인통신선 중 2계 메인통신 이상 검지 시 +', '1) SL-NET 2중계이므로 데이터버스 1계로 정상통신, 운행에 지장 없음. +2) 초기기동 자기진단 시 2중계를 점검하여 2계측의 이상이 검지되었다는 점검 필요용 메시지', '초기 기동 시 SL-NET 1계와 2계를 각각 통신 후 비교하여 1계는 정상통신이 되나 2계는 정상통신이 안 되는 경우 +', '정상 수리 후 차량 전체 재기동하여 SL-NET 1계와 2계 모두 정상통신이 되는 경우', '1) 고장검출호차와 고장검출 좌측 호차와의 SL-NET 통신 2계 정상여부 확인(예 : 고장호차가 3호차인 경우, 1-2-3-4-5-6-7-8에서 3호차의 좌측, 즉 2-3호차 간 SL-NET 2계 통신 상태 점검 필요) +2) 고장검지호차의 SCM PCB 교체, 정상여부 확인 +3) 고장검지호차의 좌측호차 SCM PCB 교체, 정상여부 확인 +4) 고장검지호차와 고장검지 좌측호차의 SL-NET 2계 메인통신 배선의 연결 상태 확인 +5) 상기 2 ~ 4번 점검에도 정상적으로 복귀되지 않는 경우, CU/TU ASS'Y 교체(백보드 확인 필요)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7cc6a363-0c4f-482b-824d-dd4e4148e708', '0515', '515', 'DCU#3 3위(R2) - 출입문 열림 시간 초과', 'M2', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 “Open time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 열림 동작시간이 6초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도한 후, ‘장애물로 인한 열림 실패' 고장과 함께 ‘Open time out' 고장이 함께 현시 +', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7cc9a49b-5363-45e9-80f3-241865f4d13b', '0510', '510', 'DCU#1 2위(L1) - 출입문 닫힘 리미트 스위치1 고장', 'Tc1', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 “DCS1 Failure(Leftt)” 신호가 “1”이 되면 검지 +', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7cced34a-601a-497c-b79e-b25ff7d3f175', '0510', '510', 'DCU#2 1위(R1) - 출입문 닫힘 리미트 스위치1 고장', 'M1', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 “DCS1 Failure(Leftt)” 신호가 “1”이 되면 검지 +', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7cd47930-20c8-4217-9ea8-ac4d5ec0deb2', '1601', '1601', '미세먼지감지센서 모듈#6 - 센서 고장', 'M3', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7cd61742-08eb-4985-9eaf-8b44de3d26fe', '765', '765', 'CAB HVAC#1 - 냉방시험 이상', 'Tc1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7cf4f513-2a0b-4a70-a200-bbe1a07d2725', '0717', '717', 'HVAC#5 - CO2 센서2 고장', 'T2', 'C', 'HVAC-CO2 센서2 고장', 'C', 'HVAC', '객실 CO2 센서2 고장 발생 +', 'CO2 센서2 고장 현시', 'CO2 센서의 검지범위는 0 ~ 4,000ppm(2 ~ 10Vdc)인데, 1초 이상 출력전압이 2Vdc(0ppm) 미만으로 떨어지는 경우 +', 'CO2 센서 검지값이 1초 이상 2Vdc(0ppm) 이상 지속되는 경우', '1) 전원을 인가한 상태에서 CO2 센서 커버를 열고 테스터기를 통해 ‘OUT2' 단자와 ‘G' 단자 간의 전압이 2Vdc 미만인지 확인한다. +2) 만약 전압이 2Vdc 이상인데도 고장이 지속될 경우 마이콤을 교체한다. +3) 만약 전압이 2Vdc 미만으로 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7d075fed-9aa3-4195-88fa-3ef5f48712ac', '0517', '517', 'DCU#5 4위(L2)-출입문 장애물로 인한 열림 실패', 'T2', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Open failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘상태로 대기', '도어 열림 중 3회 장애물 감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 열림 시, 장애물 감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('7d3b40c2-8150-4830-9302-e0b3842e5b9f', '1208', '1208', 'FDU#3-감지기4 고장', 'M2', 'C', 'FDU-감지기4 고장', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 "Detector1 State” 신호가 "10"이 되면 검지.', '감지기 고장상태 현시(자동 소거 안됨)', '1) 감지기로부터 데이터 응답이 없는경우. +2) 감지기로부터 수신된 데이터의 CRC가 맞지 않는경우 +3) 감지기로부터 수신된 데이터의 ID가 송신 ID와 일치하지 않는경우', 'FDU 전원 리셋 후 감지기로부터 정상적으로 데이터가 수신된 경우', '1) FDU 전원 리셋 후 고장 소거 여부 확인 +2) 정상 동작중인 감지기와 위치 교환 후 FDU 전원 리셋 및 고장 상태 확인 +3) 동일한 감지기에서 고장 발생시 감지기 교체 +4) 동일한 위치에서 고장 발생시 감지기 라인 점검', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('7d537271-bd57-4485-aff0-c16c6633bbdc', '0708', '708', 'HVAC#4-냉난방장치1 증발기1 과부하', 'T1', 'C', 'HVAC-냉난방장치1 증발기1 과부하', 'C', 'HVAC', 'HVAC 냉방작동 중 냉난방장치1 증발기 모터에 과부하 발생.', 'UNIT1 냉방 작동 불가', '1) 냉방작동 중 UNIT1의 증발기 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CREF1과 연결된 THR5가 Trip 됨.', 'UNIT1의 증발기 모터의 과부하 조건을 해소하여 정상 가능 상태로 만들고, THR5 및 마이콤 전원 리셋', '1) 냉난방배전반의 점검커버를 열고, THR5의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR5의 전류 세팅값이 3A에 맞춰져 있는지 확인하여, 아닐 경우, 십자 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동 시킨 후, THR5의 2차측 2,4,6 단자에서 각 단자간 상간 전압이 AC 380V으로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 증발기 단품 상태에서 점검을 한다. +7) THR5의 2차측 2,4,6 단자에서 각 단자간 권선저항이 모두 같은지 확인한다. (±10% 이하) (증발기 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT2의 증발기 모터의 결선을 해제한 후 4극 및 6극 모터의 권선저항을 확인 후, 문제가 있을 겨우, 증발기 모터를 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR5 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('7d54e6c1-bb6c-4f27-bd1d-fe7ac4a1ac29', '0506', '506', 'DCU#5 1위(R1) - 출입문 입력 저전압', 'T2', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 “1”이 되면 검지 +', '저전압상태(출입문 동작이 심하게 느려지거나 작동조차 안 될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하 +', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7d5667bb-df62-4a3b-ad1f-eb93691b9ff4', '0518', '518', 'DCU#7 5위(R3)-출입문 Enable 신호 에러', 'M4', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 "Enable signal error” 신호가 "1"이 되면 검지.', 'DCU 출입문 Enable 신호 에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) 취급시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함.', '해당출입문 enable 신호 수신', '1) AUTO/MCS 모드시에는 YARD모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인한다. (YARD/FMC 모드시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('7d6a8ca4-0fe7-4935-ad96-9fbe8bfa7e50', '0519', '519', 'DCU#7 3위(R2) - ZVR 신호 에러', 'M4', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 “ZVR signal error” 신호가 “1”이 되면 검지 +', '출입문이강제로 닫히게 되고, 열림은 불가능', ' +1) 차량 ZVR 신호가 없는 상태(차량 주행상태)에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함. +', '해당 출입문 ZVR 신호 수신', '1) 차량 이 주행중이라면, 차량 이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7d6ba88a-c387-47bf-8057-9bc0e1b8aba5', '0519', '519', 'DCU#2 5위(R3)-ZVR 신호 에러', 'M1', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 "ZVR signal error” 신호가 "1"이 되면 검지.', '출입문이 강제로 닫히게 되고, 열림은 불가능', '1) 차량 ZVR 신호가 없는 상태 (차량 주행상태) 에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함.', '해당출입문 ZVR 신호 수신', '1) 차량이 주행중이라면, 차량이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.392739+00', null, '로템40량(2018)-1단계', 'Rotem'), ('7d6f78b6-531d-41ad-b4ec-72001156b545', '1201', '1201', 'FDU#6-감지기1 화재감지', 'M3', 'W', 'FDU-감지기1 화재감지', 'W', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 "Detector1 State” 신호가 "11"이 되면 검지.', '화재상태 현시(자동 소거 안됨)', '하기 2가지 조건을 모두 만족하여야 화재신호가 출력 됨(연동모드 동작). +1) 이웃한(앞 혹은 뒤에 위치한) 감지기 중 하나의 감지기라도 주의 혹은 화재상태에 있어야 함. +2) Detector1(해당 감지기)에서 측정된 연기농도가 15% 이상이거나 온도가 65℃ 이상인 경우', '1) FDU의 복귀버튼 조작시 +2) FDU 전원 리셋시', '1) 해당 감지기 위치의 화재 발생 여부 확인 +2) 화재 오 감지일경우 FDU의 복귀버튼 취급 +3) 오감지일경우 감지기의 청소주기 확인(내부 먼지 제거)', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('7dadae54-4d64-4f69-87a1-114bb42e5a24', '0117', '117', 'VVVF-전동기 속도센서 고장검지(PGD) (Car3)', 'M2', 'C', 'VVVF-전동기 속도센서 고장검지(PGD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT32의 Bit4 “PGD” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 '전동기 속도센서 이상검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치에서 각축속도를 계산하여 속도의 편차가 2km/h이상인 조건에서 검지.', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반배전반의 VVVFIC nfb 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 견인전동기 속도센서 상태를 확인하고, 속도센서가 연결된 경로 배선연결 상태를 확인한다. +3) PGI 보드의 동작상태를 시험기를 통해 확인한다. +4) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.656536+00', null, '다대48량(2015)', 'Rotem'), ('7dba6b1d-00ab-43e7-9247-51e7a54faf48', '0167', '167', 'VVVF#7 - 마스콘 노치신호 이상검지(PWMERR)', 'M4', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7dbba6f2-b216-4aa0-96a0-34209c666c89', '0745', '745', 'HVAC#6-전자접촉기 배기팬2(CRVF) 고장', 'M3', 'C', 'HVAC-전자접촉기 배기팬2(CRVF) 고장', 'C', 'HVAC', 'HVAC 환기 작동 중 CRVF2 전자접촉기 고장 발생.', '환기 시 차량 배기팬2 운전 불가능', '환기 작동 중 2.5초 이상동안 CRVF2 작동 feedback 신호가 수신되지 않는 경우', 'CRVF2 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CRVF2를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRVF2와 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('7dc348df-862a-4ee7-ac01-f8b8b610ca1e', '1300', '1300', 'RTD#8 통신고장', 'Tc2', 'D', 'RTD 통신고장', 'C', 'RTD', 'RTD와 TCMS간 RS485 통신고장이 검지되면 발생.', 'DU상에 RTD 통신고장 메시지 현시.', 'TCMS와 RTD간 RS485통신의 송신/수신이 되지 않은 경우 발생.', 'TCMS와 RTD간 송신/수신 통신 정상.', 'TCMS와 RTD간의 RS485 통신계통 점검 및 RTD NFB ON 상태인지 점검.', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('7dd2ae52-3cb6-4daf-90a9-e452ad2e73f7', '0206', '206', 'BECU#1 - RAM 점검 고장', 'Tc1', 'C', 'BECU-RAM 점검 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit5 “RAM 점검 고장” 신호가 “1”이 되면 검지 +', '해당 차량 RAM 점검 고장검지 현시 및 해당 차량 정상적인 제동제어 불가', '해당 차량 BECU의 자가진단 시 고장 발생 +', '해당 차량 BECU의 자가진단 시 정상적일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7dde6551-b506-4b9e-9e14-665bff6abfb0', '1510', '1510', '열차분리#2 검지(Car4)', 'T1', 'B', '열차분리#2 검지', 'B', 'TCMS', '차량의 열차분리#2 검지 +', '1) 2위측 열차검지신호(SOTS2) 검출 시 화면에 현시 +2) 실제 열차분리 시 검지되었는지 확인 필요(실제 열차분리 시 다른 차량 이 접근하지 못하도록 선조치 필요) +3) 실제 열차 분리 시 비상제동 안전루프에 의해 비상제동체결 됨. +4) 열차 분리에 따라 분리 위치부터 차량제어장치(TU)와 반대편의 편성제어장치(CU)의 통신고장 동반 발생', 'CU/TU의 2위측 열차분리신호(SOTS2) 신호 활성(LOW) 입력 시 고장 현시 +', 'CU/TU의 2위측 열차분리신호(SOTS2) 신호 정상(HIGH) 입력 시 소거됨.', '1) 실제 열차분리 시 관제에 연락하고, 지시에 따름 +2) 회로 차단기 ELCB ON 상태 확인 +3) CU인 경우 2위측 열차분리신호 DIM1 PCB의 입력채널(SOTS +2) 점검/교체 +4) TU인 경우 2위측 열차분리신호 DIM3 PCB의 입력채널(SOTS +2) 점검/교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7deb7acd-a105-4524-9839-8c4e6020ef6f', '0112', '112', 'VVVF-배터리 전원이상검지(BPSF) (Car6)', 'M3', 'C', 'VVVF-배터리 전원이상검지(BPSF)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT31의 Bit7 “BPSF” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 '배터리 전원이상검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치 제어기에 입력되는 제어전원이 63V 이하일 경우 검지.', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반배전반의 VVVFIC nfb 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치로 입력되는 제어전원 배선을 점검한다. +3) 전원필터유닛(PFU) 내부 부품에 소손이 없는지 확인한다. +4) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.656536+00', null, '다대48량(2015)', 'Rotem'), ('7df0ea29-b4c1-44e1-81f0-8896b9dc6eb9', '0227', '227', '제동관련 회로차단기 차단(Car3)', 'M2', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('7df4ccd2-353a-4d63-ac61-be5102f763c2', '1500', '1500', '출입문 회로차단기 차단(Car4)', 'T1', 'W', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('7dfe69d3-a517-4936-8da7-ca5ec0f838a5', '0516', '516', 'DCU#1 5위(R3)-출입문 장애물로 인한 닫힘 실패', 'Tc1', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Close failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림상태로 대기', '도어 닫힘 중 3회 장애물 감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('7e049a7f-0473-46f9-bab5-2d789750435c', '0518', '518', 'DCU#2 4위(L2)-출입문 Enable 신호 에러', 'M1', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 "Enable signal error” 신호가 "1"이 되면 검지.', 'DCU 출입문 Enable 신호 에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) 취급시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함.', '해당출입문 enable 신호 수신', '1) AUTO/MCS 모드시에는 YARD모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인한다. (YARD/FMC 모드시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.392739+00', null, '로템40량(2018)-1단계', 'Rotem'), ('7e0a463c-047d-435f-9e29-c4be8832956b', '1101', '1101', 'PSD#8-지상 PSD 장애(1계) ', 'Tc2', 'D', 'PSD-지상 PSD 장애', 'C', 'PSD', 'PSD 의 RS485 데이터 중 PSD-TCMS SD TEXT5(TEXT6)의 Bit1 “지상 PSD장애” 신호가 "1"이 되면 검지. ([지상 PSD 설비 장애] - 역사내 종합 제어반으로부터 PSD 장애 신호 발생)', '역사내 PSD 개별도어등이 고장 검지될때 발생됨.', '개별도어 물체검지 혹은 PSD 개별도어 고장등 일때 발생됨. 차상장치와 무관한 고장코드이며 차상장치 동작상에 문제가 없다.', 'PSD 장애는 역사내 PSD 개별도어 등에 대한 고장이므로 기관사는 주의를 한다. 기관사는 전면 PSD 개별도어 상태를 확인하고 PSD 닫힘을 확인하고 출발 한다. +PSD 닫힘이 시행되지 않고, 전동차에서 PSD 열림 현시로 인하여 자동출발이 시행되지 않을 경우 사령실과 연락하여 조치를 취하고 확인후 안전 출발 한다. +*해당 역사를 벗어나면 소멸됨.', null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('7e2e6069-bedf-4ecc-aa87-cac9c335f346', '0241', '241', 'BECU#8 - 1축 스키드신호', 'Tc2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7e304206-e343-4f53-afc2-1efe43825bd9', '0521', '521', 'DCU#5 2위(L1)-모듈 상태 이상', 'T2', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 "01"또는 "00"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('7e32f65a-7f00-4ec2-a11c-7869e80e9b05', '0225', '225', 'BECU#1 - 강제완해검지(CPRD)', 'Tc1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7e35d5cd-e4d2-4ec8-b61f-3c77c5911846', '1209', '1209', 'FDU#2 - 스위치 고장', 'M1', 'C', 'FDU-스위치 고장', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT5의 Bit4 “Switch Fault” 신호가 “1”이 되면 검지 +', 'Switch Fault 현시 및 FDU의 조작버튼 동작 안 됨(화재검지 및 기타 기능에는 상관없음)', ' +1) FDU가 부팅될 때 스위치가 눌려진 상태(3.3V 전압이 인가된 상태)인 경우 +2) FDU가 부팅될 때 스위치 고장으로 인하여 항상 눌러진 상태(3.3V 전압이 인가된 상태)에 있는 경우 +', 'FDU가 부팅될 때 스위치가 눌려진 상태(3.3V 전압이 인가된 상태)가 아닌 경우', '1) 고장이 발생한 수신기의 스위치 ��태 확인 및 점검 +2) FDU의 전원을 리셋하여 소거여부 확인 +3) 문제가 지속될 경우, 수신기 교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7e419212-1ea9-4eca-85b9-1b124c4fad2e', '0517', '517', 'DCU#6 2위(L1) - 출입문 장애물로 인한 열림 실패', 'M3', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Open failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘 상태로 대기', '도어열림 중 3회 장애물감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 열림 시, 장애물감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7e5abf31-190c-4194-94b5-fa44f245d05f', '0400', '400', 'SIV#1 통신고장', 'Tc1', 'B', 'SIV-통신고장', 'B', 'SIV', '보조전원장치(SIV)와 TCMS 간 RS485 통신고장이 검지되면 발생 +', 'TCMS 화면에 고장정보 현시되며, 보조전원장치 상태화면에 나타나는 출력전압 등의 데이터가 반응하지 않음.', ' +1) TCMS-보조전원장치(SIV)간통신정보가 3초 이상동일한정보로 유지되면 통신고장을 검지함. +2) 또는 SIV 전원 CB가 OFF되었을 시 통신고장 검지함. +', 'TCMS-추진제어장치(VVVF) 간통신정보가정상적으로 통신이 될 경우 소거됨.', '1) 보조전원장치(SIV)리셋 실시 후 통신고장 소거됨을 확인 +2) 통신고장 소거가 되지 않을 경우 보조전원장치 MON 보드 신품으로 교체 후 통신고장 소거 여부 확인 +3) 위 조건에도 고장이 소거되지 않을 경우, TCMS-보조전원장치 간 RS485 통신케이블 연결 상태 점검', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7e73a32e-0d8c-4bfe-9db0-19295aa30aa8', '0752', '752', 'HVAC#1 - 배기댐퍼 닫힘고장', 'Tc1', 'C', 'HVAC-배기댐퍼 닫힘고장', 'C', 'HVAC', '차량 배기댐퍼가 닫혀있는 상태에서 배기댐퍼 닫힘 리미트 스위치가 작동되지 않음 +', '배기댐퍼 닫힘 고장 현시', '배기댐퍼를 닫힘으로 제어했으나 닫힘 리미트 스위치 입력이 없을 경우 +', '배기댐퍼 닫힘 상태에서 리미트 스위치 입력이 정상적으로 입력', '1) 배기댐퍼가 닫힌 상태에서 닫힘 리미트 스위치가 정상적으로 작동되었는지 확인한다. +2) 닫힘 리미트 스위치가 정상작동 되었음에도 문제가 발생될 경우, 스위치를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7e7d3af2-1041-422e-81fd-4424905d2e9d', '0501', '501', 'DCU#1 3위(R2) - 출입문 차단', 'Tc1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7e83cde2-2000-4a21-9bf9-8800f26375ce', '0501', '501', 'DCU#2 5위(R3) - 출입문 차단', 'M1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7ea00b30-33b1-4328-9110-71c853c5b008', '0518', '518', 'DCU#1 1위(R1)-출입문 Enable 신호 에러', 'Tc1', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 "Enable signal error” 신호가 "1"이 되면 검지.', 'DCU 출입문 Enable 신호 에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) 취급시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함.', '해당출입문 enable 신호 수신', '1) AUTO/MCS 모드시에는 YARD모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인한다. (YARD/FMC 모드시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('7ea99f2d-9bf8-4349-a003-61e0513b5011', '1200', '1200', 'FDU#1 통신고장', 'Tc1', 'B', 'FDU 통신고장', 'B', 'FDU', 'FDU와 TCMS간 RS485 통신고장이 검지되면 발생.', '화면상 FDU의 화재검지신호 등의 데이터가 반응하지 않음.', 'FDU 통신고장 또는 통신 케이블 문제', 'TCMS SDR 신호의 의해 FDU로부터 SD신호가 정상 수신된 경우 +조치조건 : +1) FDU 및 TCMS의 전원을 리셋하여 소거여부 확인 +2) 통신 고장이 발생하지 않은 다른차량의 수신기와 교체하여 소거 여부 확인(고장이 수신기를 따라가는지 확인) +3) TCMS와 FDU간의 통신계통 점검 및 FDU NFB 점검 +4) 문제가 지속될 경우, 수신기 교체', null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('7eb25e68-66c3-4cfa-89af-69c9dd3ceb31', '0500', '500', 'DCU#2 2위(L1) 통신고장', 'M1', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS간 RS485 통신고장이 검지되면 발생.', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐 상태 등의 변화가 없음.', '1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우', '해당차량의 DCU 및 CU/TU 의 전원이 정상상태이고, 통신라인 연결상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜저 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는데도 지속적으로 통순고장이 검지되면, DCU의 X2,X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('7ebeb350-3db2-474c-9e26-d1d9d65907de', '0324', '324', 'ATC#8 - ATO PG1 미스 오류', 'Tc2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7ec912c2-9922-4b94-845c-9e311a70255f', '0513', '513', 'DCU#5 2위(L1) - 모듈 상태체크 에러', 'T2', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 “Module check error” 신호가 “1”이 되면 검지 +', 'Modulecheckerror현시(출입문은 정상작동가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태 체크 기능에 이상이 생긴 경우 고장 발생 +', 'DCU의 ‘A' 모듈과 ‘B' 모듈 간, 상태 체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7ecc7d80-539d-4dad-ad04-25f4f25c6ba4', '1112', '1112', '0', 'Tc1', '0', null, null, '0', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('7ee12890-70a9-492d-856b-8d8ebd2e0500', '1210', '1210', 'FDU#6-메모리 고장', 'M3', 'C', 'FDU-메모리 고장', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT5의 Bit6 “Memory Fault” 신호가 "1"이 되면 검지.', '1) Memory Fault 현시 +2) FDU의 이벤트 기록 및 읽기 동작 안됨. +3) FDU 환경설정 정보 로딩 실패(차량번호, 주차시간, 절전시간등의 설정값을 기본값으로 로딩)', '메모리 연결 포트의 이상 혹은 배드섹터 발생(메모리 접근 및 읽기, 쓰기가 실패한 경우)', '메모리의 접근 및 읽기, 쓰기 성공', '1) FDU의 전원을 리셋하여 소거여부 확인 +2) 문제가 지속될 경우, 수신기 교체', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('7ee3e17c-5229-4e7e-be8f-b7b2dee6e892', '0515', '515', 'DCU#3 3위(R2)-출입문 열림 시간 초과', 'M2', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 "Open time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 열림 동작시간이 6초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도 한 후, '장애물로 인한 열림실패' 고장과 함께 'Open time out' 고장이 함께 현시', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('7ee4cc14-9780-4764-bb21-bfa44c54af84', '0512', '512', 'DCU#5 2위(L1) - 파라미터 로딩 실패', 'T2', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 “Paraneter error” 신호가 “1”이 되면 검지 +', 'Parametererror 현시(출입문은 정상작동 가능)', 'DCU 자체 내의 EEPROM으로부터 parameter데이터 로딩 실패 +', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7eeeac2c-d02b-48b1-bd3f-2b0d8fab4b50', '0509', '509', 'DCU#5 4위(L2)-출입문 잠김 리미트 스위치 고장', 'T2', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 "DLS Failure” 신호가 "1"이 되면 검지.', '출입문 잠김 상태 확인 불가', '1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('7eeefa53-c451-4cae-9c5c-9e224ca437c1', '0213', '213', 'BECU#4 - AC 압력센서 고장', 'T1', 'C', 'BECU-AC 압력센서 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit4 “AC 압력센서 고장” 신호가 “1”이 되면 검지 +', '해당 차량 공기제동장치고장, AC 압력센서 고장검지 현시 및 해당 차량 제동제어불가', '해당 차량의 AC 압력센서 고장 +', '해당 차량의 AC 압력센서가 정상일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7eef6d33-85d6-4f56-b711-481682303d26', '0500', '500', 'DCU#5 2위(L1) 통신고장', 'T2', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS간 RS485 통신고장이 검지되면 발생.', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐 상태 등의 변화가 없음.', '1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우', '해당차량의 DCU 및 CU/TU 의 전원이 정상상태이고, 통신라인 연결상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜저 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는데도 지속적으로 통순고장이 검지되면, DCU의 X2,X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('7ef54857-60cc-4e73-985b-e5409bd2514a', '0862', '862', '출력증폭기#2(AMP) 고장(Car#6)', 'M3', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7efbaab0-d573-4450-9e87-1b7f14137a18', '0094', '94', 'PWM 엔코더#1 고장(Car1)', 'Tc1', 'B', 'PWM 엔코더#1 고장 (TC1)', 'B', '기타', '차량으로부터 PWM ENCODER#1(#2) FAULT 신호 미입력 시 +', '1) 엔코더 1계 PWM 출력 고장 시 1계 고장에 해당되는 신호 출력 +2) 엔코더 2계로 자동 절체 +3) 엔코더 2계 PWM 출력 고장 시 1계, 2계 고장 모두 출력 +4) 엔코더 PWM 출력 신호 없음', '1) 엔코더 1계 PWM 출력 신호 이상 시 +2) 엔코더 2계 PWM 출력 신호 이상 시 +3) 엔코더 1계, 2계 PWM 출력 신호 이상 시 +4) 엔코더 수동절체버튼 3초 이상 조작 시 +', '1) 엔코더의 전원 차단 후 재투입하여 소거되는지 확인 +2) 수동절체버튼의 조작으로 인한 고장 출력 또한 전원 재투입으로 소거함', '1) 엔코더의 전원 차단 후 재투입하여 소거되지 않을 시 정상품으로 교체하여 정상동작 확인 +2) 교체된 고장품의 고장원인 분석 회로 도면 : REC10100DX0', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7f0a4ad0-15a6-46fc-a599-2a9928db13ce', '0133', '133', 'VVVF-IPM U상 이상검지(GDFU) (Car3)', 'M2', 'C', 'VVVF-IPM U상 이상검지(GDFU)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT34의 Bit7 “GDFU” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 'IPM U상 이상검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치 내부 IPM에 과전류, 과온이 검지될경우.', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반배전반의 VVVFIC nfb 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 견인전동기로 출력되는 3상의 전류치 확인함. +3) 특정상의 전류치가 비정상적일 경우 특정상에 해당되는 IPM, 전류센서, 모터결선을 확인한다. +4) 전류센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작상태를 시험기를 통해 확인한다. +6) IPM 전원공급기의 전원연결상태 또는 광케이블의 연결상태와 배선상태를 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.656536+00', null, '다대48량(2015)', 'Rotem'), ('7f13053e-7ba5-4d26-8b1e-e35048329dc9', '0506', '506', 'DCU#4 1위(R1) - 출입문 입력 저전압', 'T1', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 “1”이 되면 검지 +', '저전압상태(출입문 동작이 심하게 느려지거나 작동조차 안 될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하 +', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7f23d843-f871-4e83-8d64-c754b2ed76e5', '0514', '514', 'DCU#6 1위(R1) - 출입문 닫힘 시간 초과', 'M3', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 “Close time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 닫힘 동작 시간이 7초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도한 후, ‘장애물로 인한 닫힘 실패' 고장과 함께 ‘Close time out' 고장이 함께 현시 +', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7f3c0307-761b-4576-9362-885bba3a38c2', '0711', '711', 'HVAC#1-냉난방장치2 압력스위치1(DPS) 저압', 'Tc1', 'D', 'HVAC-냉난방장치2 압력스위치1(DPS) 저압', 'D', 'HVAC', '냉난방장치2 냉매 압력스위치1 저압 발생.', 'UNIT2 CYCLE1 냉방 기능 불가', 'UNIT2 DSP1측 냉매 압력이 3초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우', '냉매 압력이 정상 수치 2±0.5(kgf/cm2 이상으로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CREF4의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)을 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안되는 것을 확인한 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('7f5214ec-4fb2-4623-bc25-92eabcde1e88', '0513', '513', 'DCU#8 6위(L3)-모듈 상태체크 에러', 'Tc2', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 "Module check error” 신호가 "1"이 되면 검지.', 'Module check error 현시 (출입문은 정상작동 가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태체크 기능에 이상이 생긴 경우 고장 발생.', 'DCU의 'A'모듈과 'B'모듈 간, 상태체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('7f7d7861-2033-40c7-84bd-b8d748f63812', '0505', '505', 'DCU#6 1위(R1)-출입문 입력 고전압', 'M3', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 "1"이 되면 검지.', '고전압 상태. (그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('7f9961a7-068e-469d-bc94-3673359e159d', '0816', '816', '통합제어기(AVC) 음원 없음(Car#1)', 'Tc1', 'C', '통합방송표시기-통합제어기(AVC) 음원없음', 'C', 'AVC', '통합방송표시기의 E-NET 데이터 중 통합방송표시기-TCMS SD TEXT5의 Bit0 “음원없음” 신호가 +“1”이 되면 검지 +', '자동방송 음원이 없는 경우 해당 자동방송 송출 불능, 홍보방송 음원이 없는 경우 홍보 방송 송출 불능', '스케쥴러를 통해 업데이트된 mp3 파일이 마스터 통합방송제어기의 저장장치에 없는 경우 발생 다음 방송까지 고장 비트 유지 +', '마스터통합방송제어기에 해당 mp3 파일이 있고 정상적으로 방송 실시된 경우', '스케줄러의 mp3 파일 확인, 차량에 스케줄러 업데이트 관련도면 : 없음', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7fa19f55-6cfc-4ac4-8f54-e35cebaff1b1', '0515', '515', 'DCU#3 6위(L3)-출입문 열림 시간 초과', 'M2', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 "Open time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 열림 동작시간이 6초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도 한 후, '장애물로 인한 열림실패' 고장과 함께 'Open time out' 고장이 함께 현시', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('7faf9739-3acb-4192-9f17-b92889412c0f', '0200', '200', 'BECU#8 통신고장', 'Tc2', 'B', 'BECU-통신고장', 'B', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT23의 'Life sign'이 변하지 않음.', '해당 차량 통신고장 현시 및 해당 차량의 제동압력(BCP) 등의 데이터가 반응하지 않음. (고장은 현시되나 제동제어는 정상적 일 수 있음)', 'BECU 전원 CB OFF 혹은 통신연결 불량.', 'BECU와 TCMS 간 RS485 통신이 복귀 되어 BECU-TCMS SD TEXT23의 'Life sign'이 변동시 소거.', 'BECU를 리셋(BECU CB OFF/ON) 후 복귀여부를 확인. +리셋 후 복귀되지 않을 경우 관제보고하고 지시에 따를 것.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('7fb714f4-17d1-4ca5-a629-1a47b907093b', '0513', '513', 'DCU#7 6위(L3)-모듈 상태체크 에러', 'M4', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 "Module check error” 신호가 "1"이 되면 검지.', 'Module check error 현시 (출입문은 정상작동 가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태체크 기능에 이상이 생긴 경우 고장 발생.', 'DCU의 'A'모듈과 'B'모듈 간, 상태체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('7fc6b8c6-ba58-4ea4-be63-070477f3851e', '0514', '514', 'DCU#3 5위(R3) - 출입문 닫힘 시간 초과', 'M2', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 “Close time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 닫힘 동작 시간이 7초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도한 후, ‘장애물로 인한 닫힘 실패' 고장과 함께 ‘Close time out' 고장이 함께 현시 +', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7fca4acf-755a-4eaf-90b9-297a21439b5b', '0514', '514', 'DCU#4 4위(L2)-출입문 닫힘 시간 초과', 'T1', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 "Close time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 닫힘 동작시간이 7초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도 한 후, '장애물로 인한 닫힘실패' 고장과 함께 'Close time out' 고장이 함께 현시', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('7fcd810a-ce6e-4531-8852-3b8401721ac5', '0508', '508', 'DCU#4 4위(L2) - 출입문 모터/인코더 고장', 'T1', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 “Motor / Encoder failure” 신호가 “1”이 되면 +검지 +', '출입문 정상동작 불가', ' +1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우(인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터/인코더 회로 가 손상된 경우 +', '모터/인코더 및 DCU가 정상 상태이고, 전기적 연결 상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있는지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. ※ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. ? DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. ? DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) ? DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7fd1098d-e9a1-4be2-a6e6-56a9c85a5803', '0505', '505', 'DCU#5 5위(R3)-출입문 입력 고전압', 'T2', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 "1"이 되면 검지.', '고전압 상태. (그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('7fe0e3b9-d414-444a-9fe1-2e6e034a0619', '0508', '508', 'DCU#1 1위(R1) - 출입문 모터/인코더 고장', 'Tc1', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 “Motor / Encoder failure” 신호가 “1”이 되면 +검지 +', '출입문 정상동작 불가', ' +1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우(인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터/인코더 회로 가 손상된 경우 +', '모터/인코더 및 DCU가 정상 상태이고, 전기적 연결 상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있는지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. ※ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. ? DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. ? DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) ? DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7ff73d94-c78c-4d70-9bb0-a47e34e2bc98', '0507', '507', 'DCU#6 3위(R2) - 초기화 실패', 'M3', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 “Calibration failure” 신호가 “1”이 되면 검지 +', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터 고장, 장애물감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우 +', '초기화 실패를 야기한 고장코드를 확인하여 조치 후, 재닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인한다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7ff88fe2-0a04-4e58-a04f-9cfe94fff599', '0504', '504', 'DCU#2 4위(L2) - 출입문 외부 비상핸들 취급(EAD)', 'M1', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('7ffa2ad9-5198-41ac-9410-ada3d36737d0', '0738', '738', 'HVAC#2 - 전자접촉기 증발기3(CREF) 고장', 'M1', 'C', 'HVAC-전자접촉기 증발기3(CREF) 고장', 'C', 'HVAC', 'HVAC 냉방 작동 중 CREF3 전자접촉기 고장 발생 +', 'UNIT2 냉방 작동 불가', '냉방 작동 중 2.5초 이상 동안 CREF3 작동 feedback 신호가 수신되지 않는 경우 +', 'CREF3 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CREF3을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CREF3과 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('8002d51e-6dcd-4501-954d-4f16a59cada8', '1520', '1520', 'TU 모듈고장 - AUX3(Car3)', 'M2', 'C', 'TU 모듈고장 - AUX3', 'C', 'TCMS', 'TU의 AUX3 PCB가 이 정상적으로 인식되지 않아 점검이 필요할 때 +', '1) TU의 AUX PCB가 모듈 고장이 발생하면, 해당 TU의 모든 디지털 출력 불가 +2) 해당 차량의 실내등 제어 및 라인플로우팬 제어 불가 +3) 해당 TU가 M1 차량 인 경우 판토제어 상승/하강 변경 불가(판토 및 공기압축기 제어) +4) 해당 TU가 T1 차량 인 경우 연장급전상태 제어 불가', 'TU AUX3의 ID를 정상적으로 검출하지 못할 때 화면에 현시 +', 'TU AUX3의 ID를 정상적으로 검출하는 경우 소거됨.', '1) TU의 AUX3 PCB 교체 +2) 불량 해소가 되지 않을 경우, 순차적으로 SCM, DIM PCB를 교체하여 정상여부 확인', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('801426c2-c859-4a0e-90ee-a329a06589ef', '0503', '503', 'DCU#3 3위(R2)-출입문 내부비상핸들 취급(EED)', 'M2', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('80154d5f-81c4-4b51-93da-87f5982a3b52', '0507', '507', 'DCU#1 4위(L2)-초기화 실패', 'Tc1', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 "Calibration failure” 신호가 "1"이 되면 검지.', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터고장, 장애물 감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우', '초기화 실패를 야기한 고장 코드를 확인하여 조치 후, 재 닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('8021971a-4c28-4af2-80d6-76520d765ac8', '0500', '500', 'DCU#3 1위(R1) 통신고장', 'M2', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS간 RS485 통신고장이 검지되면 발생.', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐 상태 등의 변화가 없음.', '1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우', '해당차량의 DCU 및 CU/TU 의 전원이 정상상태이고, 통신라인 연결상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜저 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는데도 지속적으로 통순고장이 검지되면, DCU의 X2,X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('802301bf-526e-49c3-a68c-b8d2b6d94c21', '0171', '171', 'VVVF#7 - 통합제어장치 - PWM 제어장치간 통신 이상 검지(ERR485)', 'M4', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('803821d1-a1fb-481c-bf35-3f9fc18b5c26', '0508', '508', 'DCU#6 6위(L3) - 출입문 모터/인코더 고장', 'M3', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 “Motor / Encoder failure” 신호가 “1”이 되면 +검지 +', '출입문 정상동작 불가', ' +1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우(인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터/인코더 회로 가 손상된 경우 +', '모터/인코더 및 DCU가 정상 상태이고, 전기적 연결 상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있는지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. ※ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. ? DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. ? DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) ? DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('803c9ed5-de81-4834-a88b-8674b19fb68a', '0507', '507', 'DCU#4 6위(L3) - 초기화 실패', 'T1', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 “Calibration failure” 신호가 “1”이 되면 검지 +', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터 고장, 장애물감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우 +', '초기화 실패를 야기한 고장코드를 확인하여 조치 후, 재닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인한다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('803ca05d-886e-4733-acbd-cf4713648c78', '0180', '180', 'VVVF#7 - MCOK 고착(MCOKNO)', 'M4', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('80406313-acce-4355-9f52-ea67367b4ff3', '0041', '41', '보안제동 동작', 'Tc2', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('80723e40-0f03-4f10-8b5f-41ffd01ed82c', '0745', '745', 'HVAC#3-전자접촉기 배기팬2(CRVF) 고장', 'M2', 'C', 'HVAC-전자접촉기 배기팬2(CRVF) 고장', 'C', 'HVAC', 'HVAC 환기 작동 중 CRVF2 전자접촉기 고장 발생.', '환기 시 차량 배기팬2 운전 불가능', '환기 작동 중 2.5초 이상동안 CRVF2 작동 feedback 신호가 수신되지 않는 경우', 'CRVF2 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CRVF2를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRVF2와 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('80916a28-544d-4cd3-8f1f-c656c75d7c2e', '0514', '514', 'DCU#8 5위(R3)-출입문 닫힘 시간 초과', 'Tc2', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 "Close time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 닫힘 동작시간이 7초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도 한 후, '장애물로 인한 닫힘실패' 고장과 함께 'Close time out' 고장이 함께 현시', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('80a319fe-6a28-40fc-8f83-d4bc162289f9', '1407', '1407', 'BMS#1-Cell 저전압(CUV, 2.75V이하)', 'Tc1', 'D', 'BMS-Cell 저전압(CUV)', 'D', 'BMS', '해당차량의 배터리 셀 전압이 2.98V이하가 되면 검지', '차량 배터리 셀 저전압 검지 후, 2.84V 이하이면 방전 접촉기(DCK)가 차단된다.', '배터리 셀 저전압 (2.98V 이하).', '배터리 셀 전압 정상범위로 회복 (3~4.21V)', '1) 배터리 NFB 상태 확인 +2) 이상이 없으면 차량 전체를 리셋한다. +3) 차량 리셋 후에도 동일고장이면 사령실과 연락하여 조치를 취한다 (외부 충전기 연결 또는 차량 지원)', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('80ac82e2-b671-451a-adde-219c5326a280', '1400', '1400', 'BMS#1 통신고장', 'Tc1', 'B', 'BMS 통신고장', 'B', 'BMS', 'BMS와 TCMS간 RS485 통신고장이 검지되면 발생.', '화면상 BMS의 배터리 전압 등의 데이터가 반응하지 않음.', 'TCMS 의 데이터를 수신 못함.', 'TCMS의 데이터를 받고, TCMS 에서 BMS 상태 정보가 표시됨.', '1) BMS 보드 교체 +2) TCMS 통신 포트 점검 +3) TCMS와 BMS 간의 통신계통 점검', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('80b4baa8-acc0-4c44-b0a0-c97cb3b2e142', '0511', '511', 'DCU#7 5위(R3)-출입문 닫힘 리미트 스위치2 고장', 'M4', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 "DCS2 Failure(Right)” 신호가 "1"이 되면 검지.', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('80b68b5c-c316-4ce1-85cf-6e4497387ad5', '0167', '167', 'VVVF#2 - 마스콘 노치신호 이상검지(PWMERR)', 'M1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('80c321c5-b0f2-42ac-803f-ae7c4860b496', '1101', '1101', 'PSD#1-지상 PSD 장애(1계) ', 'Tc1', 'D', 'PSD-지상 PSD 장애', 'C', 'PSD', 'PSD 의 RS485 데이터 중 PSD-TCMS SD TEXT5(TEXT6)의 Bit1 “지상 PSD장애” 신호가 "1"이 되면 검지. ([지상 PSD 설비 장애] - 역사내 종합 제어반으로부터 PSD 장애 신호 발생)', '역사내 PSD 개별도어등이 고장 검지될때 발생됨.', '개별도어 물체검지 혹은 PSD 개별도어 고장등 일때 발생됨. 차상장치와 무관한 고장코드이며 차상장치 동작상에 문제가 없다.', 'PSD 장애는 역사내 PSD 개별도어 등에 대한 고장이므로 기관사는 주의를 한다. 기관사는 전면 PSD 개별도어 상태를 확인하고 PSD 닫힘을 확인하고 출발 한다. +PSD 닫힘이 시행되지 않고, 전동차에서 PSD 열림 현시로 인하여 자동출발이 시행되지 않을 경우 사령실과 연락하여 조치를 취하고 확인후 안전 출발 한다. +*해당 역사를 벗어나면 소멸됨.', null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('80d7b786-5800-4bf8-b9bf-188610e1fc6b', '1000', '1000', 'CMSB#8 통신고장', 'Tc2', 'C', 'CMSB 통신고장', 'C', 'CMSB', 'CMSB와 TCMS간 RS485 통신고장이 검지되면 발생.', '1) CMSB 통신고장 메시지 현시.', '1) CMSB 통신고장 또는 통신 케이블 문제', null, '0) 정상운행 후, 검수고에 입고하여 아래와 같이 조치한다. +1) 상기고장은 고장 소거 후, 재현시험을 진행하여 지속적으로 발생될 경우 아래와 같이 조치한다. +2) TCMS와 CMSB간의 통신계통 점검.(TCMS, 통신케이블, CMSB 제어기보드)', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('80ee7a81-1766-4de9-858e-17214e63ebea', '0513', '513', 'DCU#3 6위(L3)-모듈 상태체크 에러', 'M2', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 "Module check error” 신호가 "1"이 되면 검지.', 'Module check error 현시 (출입문은 정상작동 가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태체크 기능에 이상이 생긴 경우 고장 발생.', 'DCU의 'A'모듈과 'B'모듈 간, 상태체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('8112d424-dd98-47a5-85cf-f4388cd9f003', '0713', '713', 'HVAC#2 - 냉난방장치1 압력스위치2(DPS) 저압', 'M1', 'D', 'HVAC-냉난방장치1 압력스위치2(DPS) 저압', 'D', 'HVAC', '냉난방장치1 냉매 압력스위치2 저압 발생 +', 'UNIT1CYCLE2 냉방기능불가', 'UNIT1DSP2측 냉매압력이 3초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우 +', '냉매압력이 정상수치 2±0.5(kgf/cm2) 이상으로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CREF2의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)를 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설 여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안 되는 것을 확인한 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('8117a4a3-c63a-4924-a2d4-19cb609b795b', '0516', '516', 'DCU#5 2위(L1)-출입문 장애물로 인한 닫힘 실패', 'T2', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Close failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림상태로 대기', '도어 닫힘 중 3회 장애물 감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('81264fc1-68a4-4989-a455-f7ea02a110df', '0508', '508', 'DCU#4 5위(R3) - 출입문 모터/인코더 고장', 'T1', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 “Motor / Encoder failure” 신호가 “1”이 되면 +검지 +', '출입문 정상동작 불가', ' +1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우(인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터/인코더 회로 가 손상된 경우 +', '모터/인코더 및 DCU가 정상 상태이고, 전기적 연결 상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있는지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. ※ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. ? DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. ? DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) ? DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('812834a3-1186-4a27-9c86-79de0bf36ebb', '1104', '1104', 'PSD#8 - 차상 메모리고장(1계)', 'Tc2', 'C', 'PSD-차상 메모리고장', 'C', 'PSD', 'PSD의 RS485 데이터 중 PSD-TCMS SD TEXT5(TEXT6)의 Bit6 “차상 메모리고장” 신호가 “1”이 되면 검지(차상제어장치 로그 기록용 메모리 고장) +', '차상장치 이벤트 발생 시(각종 신호) +1) 출입문 열림, 마스콘 KEY ON 등등 +2) PSD 열림 닫힘이 연동되는 역사, 연동되지 않는 역사가 있음. +3) PSD 고장코드가 지상설비로 전달되면 차상 ERROR 코드 Interlock 회로에 의하여 차단될 수 있으며 이 회로 가 적용된 역사는 PSD가 가동되지 않는다. +4) 그 외 역사는 전동차 출입문에 따라 가동됨.', '로그기록용 메모리 고장 +', '1) 메모리 고장이라도 무선통신 기능은 정상 동작하므로 기관사는 전동차출입문 개/폐 시 PSD 상태를 주의하여 확인하고, 차상장치 메모리 고장 코드로 인하여 PSD 열림 및 닫힘이 동작하지 않는 역사는 조작반으로 수동취급 실시한다. +2) 기관사는 주의 운행을 한다. +3) 차량 사업소 복귀 시 해당장치는 점검을 하도록 한다.', null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('8129da28-6a80-4f5c-ae73-58be0de82b58', '0858', '858', '실내객실표시기(PIB) 고장(Car#6)', 'M3', 'C', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('81403edb-7a31-432b-9b74-1b54bf718988', '0235', '235', '제동력부족(ISBD, Car7)', 'M4', 'B', '제동력부족(ISBD)', 'B', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit3 “ISBD” 신호가 “1”이 되면 검지 +', '해당 차량 제동력부족검지 현시 및 해당 차량 제동압력(BCP)이 타 차량에 비해 현저히 낮음.', '제동 7단 취급 시 해당 차량의 제동압력이 생성되지 않음. +', '제동 7단 취급 시 정상적인제동압력이 생성된 경우 소거', 'MCS 모드로 전환 후, 마스콘을 N(중립) → 제동 7단까지 수 회 취급하여 소거 여부 확인, 제동 취급 확인 후, 주의 운전할 것, 지속발생 시 관제보고하고 지시에 따를 것', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('81418512-8fa8-4585-a77e-e8464c39b816', '0180', '180', 'VVVF#3 - MCOK 고착(MCOKNO)', 'M2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('814c04b3-42fa-43f2-bca5-741cfa74fa94', '0330', '330', 'ATC#1-', 'Tc1', '0', null, null, '0', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('81517fff-1cec-4702-a8e8-9116f7e270b0', '0217', '217', 'BECU#6 - 회생제동달성 비정상', 'M3', 'C', 'BECU-회생제동달성 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit0 “회생제동달성 비정상” 신호가 “1”이 되면 검지 +', '해당 차량 회생제동달성비정상 검지 현시 및 해당 차량 정상적인 전공교차제어 불가', '해당 차량의 회생제동 달성 신호가 정상범위를 벗어남. (5.0 ~ 95.0%) +', '해당 차량의 회생제동달성신호가정상범위일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 소거되지 않을 경우 해당 차량 추진제어장치 리셋(CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르 시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('81602d48-6986-4536-9bf2-7ee592ea925b', '0215', '215', 'BECU#3 - 후미대차 AS 압력센서 고장', 'M2', 'C', 'BECU-후미대차 AS 압력센서 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit6 “후미대차 AS 압력센서 고장” 신호가 +“1”이 되면 검지 +', '해당 차량 후미대차 AS 압력센서 고장검지 현시 및 해당 차량 정상적인 응하중제동제어 불가', '해당 차량의 후미대차 AS 압력센서(AS3, AS4) 고장 +', '해당 차량의 후미대차 AS 압력센서(AS3, AS4)가 정상일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('816605fe-7155-4ea2-8844-c85aa320d595', '0743', '743', 'HVAC#4 - 전자접촉기 보조히터2(AHEK) 고장', 'T1', 'C', 'HVAC-전자접촉기 보조히터2(AHEK) 고장', 'C', 'HVAC', 'HVAC 보조난방기 작동 중 AHEK2 전자접촉기 고장 발생 +', 'UNIT1 보조난방기 전난방 시 반난방만 작동', '보조난방기 작동 중 2.5초 이상 동안 AHEK2 작동 feedback 신호가 수신되지 않는 경우 +', 'AHEK2 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) AHEK2를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, AHEK2와 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('8172c4d8-c923-4aec-84dc-0de79f92cb6b', '0709', '709', 'HVAC#6-냉난방장치2 압력스위치2(DPS) 저압', 'M3', 'D', 'HVAC-냉난방장치2 압력스위치2(DPS) 저압', 'D', 'HVAC', '냉난방장치2 냉매 압력스위치2 저압 발생.', 'UNIT2 CYCLE2 냉방 기능 불가', 'UNIT2 DSP2측 냉매 압력이 3초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우', '냉매 압력이 정상 수치 2±0.5(kgf/cm2 이상으로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CREF4의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)을 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에�� 문제가 지속될 경우, 냉매 누설여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안되는 것을 확인한 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('81b359b2-da7b-4232-9901-559bfa52cf58', '0511', '511', 'DCU#2 3위(R2)-출입문 닫힘 리미트 스위치2 고장', 'M1', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 "DCS2 Failure(Right)” 신호가 "1"이 되면 검지.', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('81b8cccf-1f98-4f11-b323-0d4a56f6a390', '0032', '32', '주간제어기 비상제동 취급', 'Tc2', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('81bfdd12-e6ce-4733-8390-d59401aba346', '0744', '744', 'HVAC#5 - 전자접촉기 보조히터1(AHEK) 고장', 'T2', 'C', 'HVAC-전자접촉기 보조히터1(AHEK) 고장', 'C', 'HVAC', 'HVAC 보조난방기 작동 중 AHEK1 전자접촉기 고장 발생 +', 'UNIT1보조난방기전난방시반난방만 작동', '보조난방기 작동 중 2.5초 이상 동안 AHEK1 작동 feedback 신호가 수신되지 않는 경우 +', 'AHEK1 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) AHEK1을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, AHEK1과 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('81ce046a-926d-4094-9c55-b7c24746440b', '0807', '807', '통합제어기(AVC) 고장(Car#1)', 'Tc1', 'C', '통합방송표시기-통합제어기(AVC) 고장', 'C', 'AVC', '통합방송표시기의 E-NET 데이터 중 통합방송표시기-TCMS SD TEXT7의 Bit5 “AVC 고장” 신호가 +“1”이 되면 검지 +', '1) 슬레이브통합방송제어기가마스터통합방송제어기에 주기적(2초) TCP 응답이 없을 경우 통신 불량으로 판단 +2) 마스터 통합방송제어기에 고장이 발생한 경우 절체가 이루어지고 절체가 이루어지는 동안 고장검지 되지 않으며 절체가 완료 된 후 슬레이브 통합제어기가 마스터 통합방송제어기에 주기적(2초) TCP 응답이 없을 경우 통신 불량으로 판단', '마스터통합방송제어기에 주기적(2초) TCP 응답이 없을 경우 통신불량으로 판단 +', '마스터통합방송제어기에 TCP 응답재개', '고장 발생한 통합제거의 CB(오디오/비디오제어기, CBAVCON) 리셋하고 통신 라인 및 상태점검 관련도면 :', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('81d13dc0-aa8e-4bc2-96e2-f6f3c7310794', '0704', '704', 'HVAC#7-냉난방장치1 압축기1 과부하', 'M4', 'C', 'HVAC-냉난방장치1 압축기1 과부하', 'C', 'HVAC', 'HVAC 냉방작동 중 냉난방장치1 압축기1 또는 응축기1 모터에 과부하 발생.', '냉방 기능 저하(전냉방시 반냉방으로 작동)', '1) 냉방작동 중 UNIT1의 압축기1 또는 응축기1 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRCM1과 연결된 THR1이 Trip 됨.', 'UNIT1의 압축기1 또는 응축기1 모터의 과부하 조건을 해소하여 정상 가능 상태로 만들고, THR1 및 마이콤 전원 리셋', '1) 냉난방배전반의 점검커버를 열고, THR1의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR4의 전류 세팅값이 11.5A에 맞춰져 있는지 확인하여, 아닐 경우, 십자 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동 시킨 후, THR1의 2차측 2,4,6 단자에서 각 단자간 상간 전압이 AC 380V으로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 압축기 및 응축기 단품 상태에서 점검을 한다. +7) THR1의 2차측 2,4,6 단자에서 각 단자간 권선저항이 모두 같은지 확인한다. (±10% 이하) (압축기1 및 응축기1 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT1의 압축기1 또는 응축기1 모터의 결선을 해제한 후 각 부품의 권선저항을 확인 후, 문제가 있는 부품을 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR1 부품을 교체한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('81d893a8-2456-4c4d-a028-2d8dc20bda97', '1111', '1111', 'PSD#1 - 바이패스 상태', 'Tc1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('81e7352e-ac2d-4fb6-9755-491b8873b041', '0158', '158', 'VVVF#2-HSCB고착검지(HBNO)', 'M1', 'C', 'VVVF-HSCB고착검지(HBNO)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT31의 Bit7 “HBNO” 신호가 "1"이 되면 검지.', null, 'HSCB 개방조건에서 투입상태 유지 시 고장검지.', '동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) 주회로 차단기함 내에 HSCB의 주접점의 고착상태를 확인한다. +2) 주회로 차단기함 내에 HSCB의 보조접 고착여부를 확인한다. +3) 주회로 차단기함 내에 HBK 보조접촉기의 코일 및 접점 용손 여부를 확인한다. +4) 추진제어장치 계전기 유니트에 HBR 계전기 상태를 확인하여 고착 여부를 확인한다. +5) HSCB의 절약저항의 단락여부를 육안 및 멀티테스터로 확인한다. +6) 추진제어장치 시험기를 이용하여 제어기 시험을 실시하여 이상여부를 확인한다.', null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('81e9885c-b03e-4bf7-abe1-1b38bc664a07', '1205', '1205', 'FDU#2-감지기3 화재감지', 'M1', 'W', 'FDU-감지기3 화재감지', 'W', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 "Detector1 State” 신호가 "11"이 되면 검지.', '화재상태 현시(자동 소거 안됨)', '하기 2가지 조건을 모두 만족하여야 화재신호가 출력 됨(연동모드 동작). +1) 이웃한(앞 혹은 뒤에 위치한) 감지기 중 하나의 감지기라도 주의 혹은 화재상태에 있어야 함. +2) Detector1(해당 감지기)에서 측정된 연기농도가 15% 이상이거나 온도가 65℃ 이상인 경우', '1) FDU의 복귀버튼 조작시 +2) FDU 전원 리셋시', '1) 해당 감지기 위치의 화재 발생 여부 확인 +2) 화재 오 감지일경우 FDU의 복귀버튼 취급 +3) 오감지일경우 감지기의 청소주기 확인(내부 먼지 제거)', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('81fbbb4f-1bdf-41ca-861e-1e3389b79a77', '0516', '516', 'DCU#5 4위(L2) - 출입문 장애물로 인한 닫힘 실패', 'T2', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Close failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림 상태로 대기', '도어 닫힘 중 3회 장애물감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('8211aa8f-376b-4556-b870-d56207f4828e', '0511', '511', 'DCU#5 2위(L1)-출입문 닫힘 리미트 스위치2 고장', 'T2', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 "DCS2 Failure(Right)” 신호가 "1"이 되면 검지.', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('821be1c7-335f-4400-821f-9517bf07fbfd', '0234', '234', '제동불완해검지(NRBD, Car8)', 'Tc2', 'B', '제동불완해검지(NRBD)', 'B', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT8의 Bit2 “NRBD” 신호가 “1”이 되면 검지 +', '해당 차량 제동불완해 검지 현시 및 완해 취급하였음에도 불구하고 해당 차량 제동압력 (BCP)이 완해되지 않음.', '제동완해상태(정차제동포함)에서 해당 차량의 제동압력이 완전 배기되지 않음. +', '제동완해상태(정차제동포함)에서 해당 차량의 제동압력이 완전히 배기됨.', '정차하여 강제완해스위치를 취급하여 소거 여부 확인, 제동 완해상태 확인 후 주의 운전할 것, 2 ~ 3회 시도에도 완해불능 시 관제보고하고 지시에 따를 것', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('8245204a-693e-4d59-85bb-dc4ca94cfb8b', '0745', '745', 'HVAC#1-전자접촉기 배기팬2(CRVF) 고장', 'Tc1', 'C', 'HVAC-전자접촉기 배기팬2(CRVF) 고장', 'C', 'HVAC', 'HVAC 환기 작동 중 CRVF2 전자접촉기 고장 발생.', '환기 시 차량 배기팬2 운전 불가능', '환기 작동 중 2.5초 이상동안 CRVF2 작동 feedback 신호가 수신되지 않는 경우', 'CRVF2 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CRVF2를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRVF2와 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('824c5572-261b-4be9-94a8-5d2b0a188f21', '0720', '720', 'HVAC#6 - 실내온도 센서1 고장', 'M3', 'C', 'HVAC-실내온도 센서1 고장', 'C', 'HVAC', '객실 실내온도 센서1 고장 발생 +', '실내온도센서1 고장 현시', '온도센서 검지범위는 -45 ~ 85도(820 ~ 1,330Ω)인데, 2초 이상 검지범위를 벗어나는 경우 +', '온도센서 검지값이 2초 이상 허용온도 범위 내일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820 ~ 1,330Ω을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('827d3cee-175d-4480-abca-cb146cb2d9ab', '1208', '1208', 'FDU#2 - 감지기4 고장', 'M1', 'C', 'FDU-감지기4 고장 (Car1~8)', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 “Detector1 State” 신호가 “10”이 되면 검지 +', '감지기고장상태현시(자동소거 안 됨)', ' +1) 감지기로부터 데이터 응답이 없는 경우 +2) 감지기로부터 수신된 데이터의 CRC가 맞지 않는 경우 +3) 감지기로부터 수신된 데이터의 ID가 송신 ID와 일치하지 않는 경우 +', 'FDU 전원 리셋 후 감지기로부터 정상적으로 데이터가 수신된 경우', '1) FDU 전원 리셋 후 고장 소거 여부 확인 +2) 정상동작중인 감지기와 위치 교환 후 FDU 전원 리셋 및 고장 상태 확인 +3) 동일한 감지기에서 고장 발생 시 감지기 교체 +4) 동일한 위치에서 고장 발생 시 감지기 라인 점검', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('828e0a1d-8d7c-4e30-8ec3-6a03ceb529c1', '0160', '160', 'VVVF#6-게이트전원전압이상(GPLVD)', 'M3', 'C', 'VVVF-게이트전원전압이상(GPLVD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT32의 Bit1 “GPLVD” 신호가 "1"이 되면 검지.', null, '통합제어장치 PWS보드의 AC24V 출력전압 이상 시 고장검지.', '동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) TCU(통합제어기) 입력에 제어전원 DC 100V가 인가되는지 확인한다. +2) PWS 보드의 전면부에서 AC 24V 출력단 LED가 점등되어있는 것을 확인한다. +3) 상기 점검부에 이상이 없을 경우 TCU(통합제어장치)를 교체한다. +4) TCU교체 후 동일증상 반복 시 인버터 스택을 교체한다.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('82a3fd80-f647-4042-8ffd-0ef380cc7c99', '0706', '706', 'HVAC#4-냉난방장치1 증발기2 과부하', 'T1', 'C', 'HVAC-냉난방장치1 증발기2 과부하', 'C', 'HVAC', 'HVAC 냉방작동 중 냉난방장치1 증발기 모터에 과부하 발생.', 'UNIT1 냉방 작동 불가', '1) 냉방작동 중 UNIT1의 증발기 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CREF2와 연결된 THR6이 Trip 됨.', 'UNIT1의 증발기 모터의 과부하 조건을 해소하여 정상 가능 상태로 만들고, THR6 및 마이콤 전원 리셋', '1) 냉난방배전반의 점검커버를 열고, THR6의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR6의 전류 세팅값이 3A에 맞춰져 있는지 확인하여, 아닐 경우, 십자 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동 시킨 후, THR6의 2차측 2,4,6 단자에서 각 단자간 상간 전압이 AC 380V으로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 증발기 단품 상태에서 점검을 한다. +7) THR6의 2차측 2,4,6 단자에서 각 단자간 권선저항이 모두 같은지 확인한다. (±10% 이하) (증발기 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT1의 증발기 모터의 결선을 해제한 후 4극 및 6극 모터의 권선저항을 확인 후, 문제가 있을 겨우, 증발기 모터를 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR6 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('82d2c766-2ca5-477f-ae43-9fb895980bf4', '1108', '1108', '0', 'Tc1', '0', null, null, '0', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('82da372a-fff4-449c-a0fe-f579173ce8f4', '0729', '729', 'HVAC#7 - 냉난방장치2 리턴 센서 고장', 'M4', 'C', 'HVAC-냉난방장치2 리턴 센서 고장', 'C', 'HVAC', '냉난방장치2의 리턴 센서 고장 발생 +', '냉난방장치2 리턴 센서 고장현시', '온도센서 검지범위는 -45 ~ 85도(820 ~ 1,330Ω)인데, 2초 이상 검지범위를 벗어나는 경우 +', '온도센서 검지값이 2초 이상 허용온도 범위 내일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820 ~ 1,330Ω을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('82dc05c5-6ce8-4b4a-bf10-af852ac58c6a', '0016', '16', '열차번호 불일치', 'Tc2', 'W', '열차번호 불일치', 'W', '기타', '기관사가 설정한 열차번호와 신호장치로부터 전송받은 열차번호가 일치하지 않을 경우 검지 +', 'TCMS 화면 하단에 ‘열차번호 불일치' 현시(차량 운행에는 지장 없음.)', '기관사가 설정한 열차번호와 신호장치로부터 수신된 열차번호가 불일치 시 현시됨. (단, 지상으로부터 열차번호가 수시될 수 있는 구간에 한함) +', '열차번호가 동일하게 입력되면 고장 소거됨.', '1) 입력한 열차번호가 맞는지 확인 +2) 입력한 열차번호가 맞다면 신호장치로부터의 열차번호가 정상인지 확인', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('82e50255-2eb0-4621-b51a-203113cad749', '0515', '515', 'DCU#5 4위(L2) - 출입문 열림 시간 초과', 'T2', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 “Open time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 열림 동작시간이 6초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도한 후, ‘장애물로 인한 열림 실패' 고장과 함께 ‘Open time out' 고장이 함께 현시 +', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('830b2186-c3c1-4f07-b6f0-dd8d006c5995', '0501', '501', 'DCU#1 4위(L2) - 출입문 차단', 'Tc1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('8316ed47-b22e-4aef-b1df-2cf457e7a64f', '0521', '521', 'DCU#7 6위(L3) - 모듈 상태 이상', 'M4', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 “01” 또는 “00”이 되면 +검지 +', '이중계절체동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러)이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('831feaa5-1b08-4c79-952a-ef213392f7d3', '0508', '508', 'DCU#8 3위(R2)-출입문 모터/인코더 고장', 'Tc2', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 "Motor / Encoder failure” 신호가 "1"이 되면 검지.', '출입문 정상동작 불가', '1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우 (인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터 / 인코더 회로가 손상된 경우', '모터/인코더 및 DCU가 정상상태이고, 전기적 연결상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있느지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. +★ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. + +1. DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. +2. DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) +3. DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('83491b0f-765f-448b-9875-5d279d256993', '0506', '506', 'DCU#7 3위(R2)-출입문 입력 저전압', 'M4', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 "1"이 되면 검지.', '저전안 상태 (출입문 동작이 심하게 느려지거나 작동조차 안될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('835152c6-24e2-4f8b-94cd-0715d124a13a', '0502', '502', 'DCU#3 3위(R2) - 출입문 장애물검지', 'M2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('835958b1-fb2b-4afc-8bb1-e8a82f262183', '0519', '519', 'DCU#6 3위(R2)-ZVR 신호 에러', 'M3', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 "ZVR signal error” 신호가 "1"이 되면 검지.', '출입문이 강제로 닫히게 되고, 열림은 불가능', '1) 차량 ZVR 신호가 없는 상태 (차량 주행상태) 에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함.', '해당출입문 ZVR 신호 수신', '1) 차량이 주행중이라면, 차량이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('835a8f4c-1d4c-4cda-9a07-56a97b9e9108', '1212', '1212', 'FDU#5 -', 'T2', null, null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('83601d44-b283-4827-a05b-d3e950dbbdc1', '0321', '321', 'ATC#8-', 'Tc2', '0', null, null, '0', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('8368600f-5aa2-4998-9ad2-519c6d1a54ae', '0703', '703', 'HVAC#7-냉난방장치1 압축기2 과부하', 'M4', 'C', 'HVAC-냉난방장치1 압축기2 과부하', 'C', 'HVAC', 'HVAC 냉방작동 중 냉난방장치1 압축기2 또는 응축기2 모터에 과부하 발생.', '냉방 기능 저하(전냉방시 반냉방으로 작동)', '1) 냉방작동 중 UNIT1의 압축기2 또는 응축기2 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRCM2와 연결된 THR2가 Trip 됨.', 'UNIT1의 압축기2 또는 응축기2 모터의 과부하 조건을 해소하여 정상 가능 상태로 만들고, THR2 및 마이콤 전원 리셋', '1) 냉난방배전반의 점검커버를 열고, THR2의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR2의 전류 세팅값이 11.5A에 맞춰져 있는지 확인하여, 아닐 경우, 십자 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동 시킨 후, THR2의 2차측 2,4,6 단자에서 각 단자간 상간 전압이 AC 380V으로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 압축기 및 응축기 단품 상태에서 점검을 한다. +7) THR2의 2차측 2,4,6 단자에서 각 단자간 권선저항이 모두 같은지 확인한다. (±10% 이하) (압축기2 및 응축기2 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT1의 압축기1 또는 응축기1 모터의 결선을 해제한 후 각 부품의 권선저항을 확인 후, 문제가 있는 부품을 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR2 부품을 교체한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('836b6266-fad4-4baf-8ea4-a85bff93a0b2', '0733', '733', 'HVAC#5 - 전자접촉기 압축기(CRCM)4 고장', 'T2', 'C', 'HVAC-전자접촉기 압축기(CRCM)4 고장', 'C', 'HVAC', 'HVAC 냉방 작동 중 CRCM4 전자접촉기 고장 발생 +', '냉방 기능 저하(전냉방 시 반냉방으로 작동)', '냉방 작동 중 2.5초 이상 동안 CRCM4 작동 feedback 신호가 수신되지 않는 경우 +', 'CRCM4 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CRCM4를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRCM4와 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('83745a88-a659-4325-8737-e1341bed2180', '0510', '510', 'DCU#2 2위(L1) - 출입문 닫힘 리미트 스위치1 고장', 'M1', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 “DCS1 Failure(Leftt)” 신호가 “1”이 되면 검지 +', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('837f3f78-1289-4d3a-8f8f-66153da2ef46', '0737', '737', 'HVAC#2 - 전자접촉기 증발기4(CREF) 고장', 'M1', 'C', 'HVAC-전자접촉기 증발기4(CREF) 고장', 'C', 'HVAC', 'HVAC 냉방 작동 중 CREF4 전자접촉기 고장 발생 +', 'UNIT2 냉방 작동 불가', '냉방 작동 중 2.5초 이상 동안 CREF4 작동 feedback 신호가 수신되지 않는 경우 +', 'CREF4 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CREF4를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CREF4와 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('8384b435-5447-4586-9150-24aaf775eb75', '0501', '501', 'DCU#4 6위(L3)-출입문 차단', 'T1', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('8386ce1d-4e6f-44b5-a58f-d2d2b7a479f8', '0726', '726', 'HVAC#6-배기팬2 과부하', 'M3', 'C', 'HVAC-배기팬2 과부하', 'C', 'HVAC', 'HVAC 환기작동 중 차량 배기팬2 모터에 과부하 발생.', '환기 시 차량 배기팬2 운전 불가능', '1) 냉방작동 중 챠량 배기팬2 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRVF2와 연결된 THR10이 Trip 됨.', '차량 배기팬2 모터의 과부하 조건을 해소하여 정상 가능 상태로 만들고, THR10 및 마이콤 전원 리셋', '1) 냉난방배전반의 점검커버를 열고, THR10의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR10의 전류 세팅값이 2.5A에 맞춰져 있는지 확인하여, 아닐 경우, 십자 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동 시킨 후, THR10의 2차측 2,4 단자와 6 단자 사이의 전압이 DC 100V으로 정상 측정되는지 확인한다. +5) 만약 전압이 측정되지 않을 시, 전원이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, THR10 부품을 교체한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('83a2a183-d3a4-4924-8926-34fbfb728a5c', '0503', '503', 'DCU#3 5위(R3) - 출입문 내부 비상핸들 취급(EED)', 'M2', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('83b9dc1a-2c6d-4df7-a57e-220efedd6970', '1601', '1601', '미세먼지감지센서 모듈#2 - 센서 고장', 'M1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('83c9fc03-b8d4-4b11-b628-d026a80ba5c4', '0751', '751', 'HVAC#2-냉난방장치1 보조히터 과열', 'M1', 'C', 'HVAC-냉난방장치1 보조히터 과열', 'C', 'HVAC', 'HVAC1 보조난방기 작동 중 과열 발생.', 'UNIT1 보조난방기 난방 불가', '보조난방기 작동 중 1초 이상동안 온도가 70도 이상으로 과온센서 정상 신호가 수신되지 않는 경우', '1초 이상동안 60도 미만으로 온도가 떨어져 과온센서 정상 신호가 수신되는 경우', '1) 보조난방기가 꺼진 상태에서도 문제 발생 시, 과온 센서를 교체한다. +2) 센서 교체 후에도 문제가 발생되면, 배선에 문제가 없는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('83e2dd97-5add-4244-8049-39bf3d84cede', '0512', '512', 'DCU#4 1위(R1)-파라미터 로딩 실패', 'T1', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 "Paraneter error” 신호가 "1"이 되면 검지.', 'Parameter error 현시 (출입문은 정상작동 가능)', 'DCU 자체내의 EEPROM으로부터 parameter 데이터 로딩 실패', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('83e7ccf7-b56e-4bb9-aa34-67a11ef2faeb', '0506', '506', 'DCU#7 4위(L2) - 출입문 입력 저전압', 'M4', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 “1”이 되면 검지 +', '저전압상태(출입문 동작이 심하게 느려지거나 작동조차 안 될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하 +', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('83e8b3a1-2b17-4ad0-8cd0-984830c15ef0', '0505', '505', 'DCU#6 3위(R2) - 출입문 입력 고전압', 'M3', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 “1”이 되면 검지 +', '고전압 상태(그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상 +', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('83e8e21a-9c6e-4988-9a1f-e5a90559f422', '0521', '521', 'DCU#2 4위(L2) - 모듈 상태 이상', 'M1', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 “01” 또는 “00”이 되면 +검지 +', '이중계절체동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러)이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('83f63ff4-5ba1-44d8-bf11-84bf8c34b5e9', '0233', '233', 'AS 코크#2 차단(Car1)', 'Tc1', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('83f8b4e5-fa94-4a3c-b08e-b4fd0eec2fa0', '0519', '519', 'DCU#3 3위(R2) - ZVR 신호 에러', 'M2', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 “ZVR signal error” 신호가 “1”이 되면 검지 +', '출입문이강제로 닫히게 되고, 열림은 불가능', ' +1) 차량 ZVR 신호가 없는 상태(차량 주행상태)에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함. +', '해당 출입문 ZVR 신호 수신', '1) 차량 이 주행중이라면, 차량 이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('8400f432-63a7-4380-a2c0-eead06eb181d', '0216', '216', 'BECU#7-전두대차 AS압력센서고장', 'M4', 'C', 'BECU-전두대차 AS압력센서 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit7 “전두대차 AS압력센서 고장” 신호가 "1"이 되면 검지.', '해당 차량 전두대차 AS압력센서 고장 검지 현시 및 해당차량 정상적인 응하중 제동제어 불가.', '해당 차량의 전두대차 AS 압력센서(AS1, AS2) 고장.', '해당 차량의 전두대차 AS 압력센서(AS1, AS2)가 정상일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('8404bc7d-e170-4fc3-a4ed-a4ab7070d509', '0220', '220', 'BECU#4-공기제동 감쇄지령 비정상', 'T1', 'C', 'BECU-공기제동 감쇄지령 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit3 “공기제동 감쇄지령 비정상” 신호가 "1"이 되면 검지.', '해당 차량 공기제동 감쇄지령 비정상 검지 현시 및 해당차량 정상적인 전공 교차제어 불가.(부수차량 공기제동 감쇄 불가)', '해당 차량의 공기제동 감쇄지령 신호가 정상범위를 벗어남(5.0~95.0%).', '해당 차량의 공기제동 감쇄지령 신호가 정상범위일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. +소거되지 않을 경우 해당 차량 옆의 Pair 차량(구동차) BECU를 리셋(CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('8413042f-d8a0-4f95-a264-d0163c7fec13', '0502', '502', 'DCU#2 1위(R1)-출입문 장애물검지', 'M1', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('8415f9fe-5987-4462-803e-4ae35cb56983', '0521', '521', 'DCU#7 3위(R2) - 모듈 상태 이상', 'M4', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 “01” 또는 “00”이 되면 +검지 +', '이중계절체동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러)이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('84263640-b4a7-4e19-95aa-6d3a1d195a14', '0519', '519', 'DCU#1 5위(R3) - ZVR 신호 에러', 'Tc1', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 “ZVR signal error” 신호가 “1”이 되면 검지 +', '출입문이강제로 닫히게 되고, 열림은 불가능', ' +1) 차량 ZVR 신호가 없는 상태(차량 주행상태)에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함. +', '해당 출입문 ZVR 신호 수신', '1) 차량 이 주행중이라면, 차량 이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('8426a68c-0858-4cc8-925c-48777485df4f', '0510', '510', 'DCU#4 1위(R1) - 출입문 닫힘 리미트 스위치1 고장', 'T1', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 “DCS1 Failure(Leftt)” 신호가 “1”이 되면 검지 +', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('843f7118-ffab-4174-b73d-69dad2e739c2', '0164', '164', 'VVVF#2 - 역행/회생 전류 이상검지(PBCD)', 'M1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('8442472c-3d38-40c1-93cb-66f9ce1b91ef', '0709', '709', 'HVAC#5 - 냉난방장치2 압력스위치2(DPS) 저압', 'T2', 'D', 'HVAC-냉난방장치2 압력스위치2(DPS) 저압', 'D', 'HVAC', '냉난방장치2 냉매 압력스위치2 저압 발생 +', 'UNIT2CYCLE2 냉방기능불가', 'UNIT2DSP2측 냉매압력이 3초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우 +', '냉매압력이 정상수치 2±0.5(kgf/cm2) 이상으로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CREF4의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)를 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설 여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안 되는 것을 확인한 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('84524b41-5dbb-4ec5-bb2c-c8dc1519b41a', '0513', '513', 'DCU#8 3위(R2)-모듈 상태체크 에러', 'Tc2', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 "Module check error” 신호가 "1"이 되면 검지.', 'Module check error 현시 (출입문은 정상작동 가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태체크 기능에 이상이 생긴 경우 고장 발생.', 'DCU의 'A'모듈과 'B'모듈 간, 상태체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('84777605-a713-48c8-9dd9-29b16b2cade1', '0500', '500', 'DCU#8 6위(L3) 통신고장', 'Tc2', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS 간 RS485 통신고장이 검지되면 발생 +', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐상태 등의 변화가 없음.', ' +1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우 +', '해당 차량의 DCU 및 CU/TU의 전원이 정상상태이고, 통신 라인 연결 상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜져 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적 으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는 데도 지속적으로 통신고장이 검지되면, DCU의 X2, X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상 체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('84778905-deb0-4a4c-bb98-80f055a427da', '0239', '239', 'BECU#2-3축스키드신호', 'M1', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('847925b6-23bc-4f97-a6d9-7a50b0118736', '0742', '742', 'HVAC#3-전자접촉기 보조히터3(AHEK) 고장', 'M2', 'C', 'HVAC-전자접촉기 보조히터3(AHEK) 고장', 'C', 'HVAC', 'HVAC 보조난방기 작동 중 AHEK3 전자접촉기 고장 발생.', 'UNIT2 보조난방기 전난방 시 반난방만 작동', '보조난방기 작동 중 2.5초 이상동안 AHEK3 작동 feedback 신호가 수신되지 않는 경우', 'AHEK3 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) AHEK3을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, AHEK3과 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('847cdd32-9354-4d00-a127-7b7bb0005366', '1212', '1212', 'FDU#3-', 'M2', '0', null, null, 'FDU', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('8487727a-7f5e-4a78-bdb0-563177808a35', '0506', '506', 'DCU#5 3위(R2) - 출입문 입력 저전압', 'T2', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 “1”이 되면 검지 +', '저전압상태(출입문 동작이 심하게 느려지거나 작동조차 안 될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하 +', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('8499b7ce-dad3-4719-9757-a23ee17d354d', '0520', '520', 'DCU#4 1위(R1)-이중계 절체 동작', 'T1', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 "Module switchover' 신호가 "1"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.392739+00', null, '로템40량(2018)-1단계', 'Rotem'), ('84a1b99f-684c-4ae5-aa05-e80d40ed778c', '0512', '512', 'DCU#2 5위(R3)-파라미터 로딩 실패', 'M1', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 "Paraneter error” 신호가 "1"이 되면 검지.', 'Parameter error 현시 (출입문은 정상작동 가능)', 'DCU 자체내의 EEPROM으로부터 parameter 데이터 로딩 실패', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('84b00eac-e1e2-4eba-9e2c-91aff36bebe5', '1402', '1402', 'BMS#8-퓨즈 오픈', 'Tc2', 'C', 'BMS-퓨즈 단락', 'C', 'BMS', 'BMS의 RS485 데이터 중 BMS-TCMS SD TEXT2의 Bit1 “퓨즈 오픈” 신호가 "1"이 되면 검지.', '퓨즈 고장으로 충방전 불가.', '배터리 내,외부 회로 단락으로 인한 과전류 발생.', '배터리 내,외부 회로 단락 제거.', '1) 배터리 팩 절연저항 확인한다. +2) 배터리 외부 회로의 단락 검침한다. +3) 단락회로 검침 후 정상이면 퓨즈 교체한다.', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('84b077c5-dc8e-4682-bb3a-aef4e2d3fb44', '0822', '822', '출력증폭기#2(AMP) 고장(Car#2)', 'M1', 'C', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('84b979bb-abd5-45ef-aacf-9b847f891e83', '0503', '503', 'DCU#6 3위(R2) - 출입문 내부 비상핸들 취급(EED)', 'M3', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('84bfb6ee-1232-4712-b704-ba2499cbca70', '0505', '505', 'DCU#1 5위(R3)-출입문 입력 고전압', 'Tc1', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 "1"이 되면 검지.', '고전압 상태. (그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('84c0f622-43ab-48df-9931-d278561c5a52', '0508', '508', 'DCU#7 4위(L2)-출입문 모터/인코더 고장', 'M4', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 "Motor / Encoder failure” 신호가 "1"이 되면 검지.', '출입문 정상동작 불가', '1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우 (인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터 / 인코더 회로가 손상된 경우', '모터/인코더 및 DCU가 정상상태이고, 전기적 연결상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있느지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. +★ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. + +1. DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. +2. DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) +3. DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('84c2bc26-c02d-40d7-9dee-35b9d8e597be', '0510', '510', 'DCU#1 1위(R1) - 출입문 닫힘 리미트 스위치1 고장', 'Tc1', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 “DCS1 Failure(Leftt)” 신호가 “1”이 되면 검지 +', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('84c5554d-942e-4597-b986-e8511629f870', '0507', '507', 'DCU#8 1위(R1) - 초기화 실패', 'Tc2', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 “Calibration failure” 신호가 “1”이 되면 검지 +', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터 고장, 장애물감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우 +', '초기화 실패를 야기한 고장코드를 확인하여 조치 후, 재닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인한다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('84d92c6f-73bd-413e-b85a-19d788a5c6d5', '0860', '860', '실내카메라#2(SCAM) 고장(Car#6)', 'M3', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('84f0c6d7-b37c-4f68-93ba-62c7f9245601', '0133', '133', 'VVVF-IPM U상 이상검지(GDFU) (Car6)', 'M3', 'C', 'VVVF-IPM U상 이상검지(GDFU)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT34의 Bit7 “GDFU” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 'IPM U상 이상검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치 내부 IPM에 과전류, 과온이 검지될경우.', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반배전반의 VVVFIC nfb 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 견인전동기로 출력되는 3상의 전류치 확인함. +3) 특정상의 전류치가 비정상적일 경우 특정상에 해당되는 IPM, 전류센서, 모터결선을 확인한다. +4) 전류센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작상태를 시험기를 통해 확인한다. +6) IPM 전원공급기의 전원연결상태 또는 광케이블의 연결상태와 배선상태를 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.656536+00', null, '다대48량(2015)', 'Rotem'), ('84f39665-4636-4723-a947-39c45d935fcc', '0738', '738', 'HVAC#3 - 전자접촉기 증발기3(CREF) 고장', 'M2', 'C', 'HVAC-전자접촉기 증발기3(CREF) 고장', 'C', 'HVAC', 'HVAC 냉방 작동 중 CREF3 전자접촉기 고장 발생 +', 'UNIT2 냉방 작동 불가', '냉방 작동 중 2.5초 이상 동안 CREF3 작동 feedback 신호가 수신되지 않는 경우 +', 'CREF3 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CREF3을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CREF3과 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('84f9696f-ba6b-4b5a-9e29-c69880aa9abf', '0521', '521', 'DCU#2 3위(R2) - 모듈 상태 이상', 'M1', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 “01” 또는 “00”이 되면 +검지 +', '이중계절체동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러)이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('85197e5d-0450-4daa-9196-b2506f16dd7c', '0501', '501', 'DCU#7 3위(R2)-출입문 차단', 'M4', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('851e4b6c-0df1-4898-9734-cabc69db9987', '0715', '715', 'HVAC#6-냉난방장치1 압력스위치1(DPS) 저압', 'M3', 'D', 'HVAC-냉난방장치1 압력스위치1(DPS) 저압', 'D', 'HVAC', '냉난방장치1 냉매 압력스위치1 저압 발생.', 'UNIT1 CYCLE1 냉방 기능 불가', 'UNIT1 DSP1측 냉매 압력이 3초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우', '냉매 압력이 정상 수치 2±0.5(kgf/cm2 이상으로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CREF2의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)을 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안되는 것을 확인한 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('8537ae9a-d926-4830-ae11-d7a7be9f6ae4', '1004', '1004', 'CMSB#1-CM 출력과전류', 'Tc1', 'C', 'CMSB-CM 출력과전류', 'C', 'CMSB', 'CMSB의 RS485 데이터 중 CMSB-TCMS SD TEXT3의 Bit5 “출력 과전류” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 'CM출력 과전류' 표시됨. +2) 바이패스 모드로 전환되고, CM 기동 시 '바이패스 기동'으로 표시됨.', '1) CM 기동 시 출력전류가 정격전류의 250%(12.5A)이상 전류가 발생될 경우 검지됨.', '1) 차량 전원 OFF +2) CMSB 내부의 표시기패널 RESET 버튼 누름.', '1) 상기고장은 고장 소거 후, 재현시험을 진행하여 지속적으로 발생될 경우 아래와 같이 조치한다. +2) 공기압축기(CM) 출력전류을 확인한다.(공기압축기 매뉴얼 참조)', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('8537ce7a-592b-4992-9956-184bdf49cf31', '0507', '507', 'DCU#8 5위(R3) - 초기화 실패', 'Tc2', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 “Calibration failure” 신호가 “1”이 되면 검지 +', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터 고장, 장애물감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우 +', '초기화 실패를 야기한 고장코드를 확인하여 조치 후, 재닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인한다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('856989e7-73bd-45f0-8f94-bb6c8fdd20b5', '0421', '421', 'SIV#1 - 제어전원 저전압(CPCF)', 'Tc1', 'C', 'SIV-제어전원 저전압(CPCF)', 'C', 'SIV', '보조전원장치(SIV)의 RS485 데이터 중 SIV-TCMS SD TEXT6의 Bit6 “CPCF” 신호가 “1”이 되면 검지 +', '1) TCMS 화면하단 또는 고장화면에 ‘제어전원 저전압 이상 검지' 표시됨. +2) 보조전원장치(SIV)는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 보조전원장치(SIV) 중고장이 발생함. +5) 중고장이 발생되면 TCMS 일반화면에 보조전원장치(SIV) 상태 붉은색으로 표기되며, 연장급전 됨.', '보조전원장치(SIV)제어기에 입력되는 제어전원이65V 이하일 경우 검지 +', '1) 경고장이 발생할 경우 보조전원장치(SIV) 자동 재기동에 의해 재기동 됨. +2) 중고장이 발생할 경우 보조전원장치(SIV) 리셋으로 고장 소거됨.', '1) 상기 고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 보조전원장치(SIV)로 입력되는 제어전원 배선을 점검한다. +3) 제어전원부 내부 부품에 소손이 없는지 확인한다. +4) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('85708724-c2bd-4eb6-886d-e1e705619726', '0507', '507', 'DCU#4 3위(R2)-초기화 실패', 'T1', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 "Calibration failure” 신호가 "1"이 되면 검지.', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터고장, 장애물 감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우', '초기화 실패를 야기한 고장 코드를 확인하여 조치 후, 재 닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('8575f33f-59be-4d01-9c25-301871d8cca8', '1206', '1206', 'FDU#2-감지기3 고장', 'M1', 'C', 'FDU-감지기3 고장', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 "Detector1 State” 신호가 "10"이 되면 검지.', '감지기 고장상태 현시(자동 소거 안됨)', '1) 감지기로부터 데이터 응답이 없는경우. +2) 감지기로부터 수신된 데이터의 CRC가 맞지 않는경우 +3) 감지기로부터 수신된 데이터의 ID가 송신 ID와 일치하지 않는경우', 'FDU 전원 리셋 후 감지기로부터 정상적으로 데이터가 수신된 경우', '1) FDU 전원 리셋 후 고장 소거 여부 확인 +2) 정상 동작중인 감지기와 위치 교환 후 FDU 전원 리셋 및 고장 상태 확인 +3) 동일한 감지기에서 고장 발생시 감지기 교체 +4) 동일한 위치에서 고장 발생시 감지기 라인 점검', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('857c0e7b-6613-41ea-af80-2d5ccfe5c203', '0504', '504', 'DCU#5 3위(R2)-출입문 외부비상핸들 취급(EAD)', 'T2', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('8586d253-6510-45ea-89df-26771568e922', '0220', '220', 'BECU#1 - 공기제동 감쇄지령 비정상', 'Tc1', 'C', 'BECU-공기제동 감쇄지령 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit3 “공기제동 감쇄지령 비정상” 신호가 “1”이 되면 검지 +', '해당 차량 공기제동감쇄지령 비정상 검지 현시 및 해당 차량 정상적인전공교차제어 불가 (부수차량 공기제동 감쇄 불가)', '해당 차량의 공기제동감쇄지령 신호가 정상범위를 벗어남. (5.0 ~ 95.0%) +', '해당 차량의 공기제동감쇄지령 신호가 정상범위일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 소거되지 않을 경우 해당 차량 옆의 Pair 차량(구동차) BECU를 리셋(CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('85926473-4aee-49e3-aa89-305a921d96ae', '0885', '885', '중앙제어기(COB) 고장(Car#8)', 'Tc2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('85972d90-a9cb-492c-a20c-62be5e7ba0a9', '0140', '140', 'VVVF#7-제어전원전압이상(TCU)(CLVD_S)', 'M4', 'C', 'VVVF-제어전원전압이상(TCU)(CLVD_S)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT29의 Bit5 “CLVD_S” 신호가 "1"이 되면 검지.', null, '통합제어기 내부의 제어전원 이상 검지 시 중고장 발생.', '동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) TCU(통합제어장치)의 입력에 제어전원 DC70 ~100V가 인가되는지 확인한다. +2) TCU(통합제어장치) 중 PWS 보드의 ±15V, 5V, 24V의 테스트 단자의 전압을 멀티테스터로 측정하여 전압의 오차가 ±10% 이내인지 확인한다. +3) 상기의 점검부분에 이상이 있을 경우 PWS보드를 교체한다. +4) PWS 보드 교체 후 동일고장 재발 시 TCU(통합제어장치)를 교체한다.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('859c6248-46a2-4eb3-a3b0-774c44802955', '0520', '520', 'DCU#2 1위(R1) - 이중계 절체 동작', 'M1', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 “Module switchover” 신호가 “1”이 되면 검지 +', '이중계 절체 동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러) 이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A'모듈 및 ‘B'모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('859d5fe8-3942-491c-937d-f382bca530c4', '0710', '710', 'HVAC#2 - 냉난방장치2 압력스위치2(DPS) 고압', 'M1', 'D', 'HVAC-냉난방장치2 압력스위치2(DPS) 고압', 'D', 'HVAC', '냉난방장치2 냉매 압력스위치2 고압 발생 +', 'UNIT2CYCLE2 냉방기능불가', 'UNIT2DSP2측 냉매압력이 3초 이상 28±1(kgf/cm2) 이상 되는 경우 +', '냉매압력이 정상수치 15±0.7(kgf/cm2) 이하로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CRCM4의 부하측 전류를 측정하여 응축기 팬의 동작여부를 확인한다. +2) 응축기 코일의 전면에 이물질로 인한 막힘이 있는지 확인한다. +3) 응축기 팬 상부 그릴에 외부 이물질로 인한 막힘이 있는지 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('85b0f483-29cc-4eb6-8dc6-73cb9a21ecf0', '0185', '185', 'VVVF#2 - 인통선 대비 ZVR 불일치 검지', 'M1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('85b47a19-7e52-4330-804b-c342b243041b', '0512', '512', 'DCU#2 6위(L3)-파라미터 로딩 실패', 'M1', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 "Paraneter error” 신호가 "1"이 되면 검지.', 'Parameter error 현시 (출입문은 정상작동 가능)', 'DCU 자체내의 EEPROM으로부터 parameter 데이터 로딩 실패', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('85c49214-b703-410e-b1c4-3d5f66b19d3b', '0416', '416', 'SIV#1 - 게이트 드라이버 고장, UX1상(GDFUX1)', 'Tc1', 'C', 'SIV-게이트 드라이버 고장, UX1상(GDFUX1)', 'C', 'SIV', '보조전원장치(SIV)의 RS485 데이터 중 SIV-TCMS SD TEXT5의 Bit6 “GDFUX1” 신호가 “1”이 되면 검지 +', '1) TCMS 화면하단 또는 고장화면에 ‘GDFUX1상 이상 검지' 표시됨. +2) 보조전원장치(SIV)는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 보조전원장치(SIV) 중고장이 발생됨. +5) 중고장이 발생되면 TCMS 일반화면에 보조전원장치(SIV) 상태 붉은색으로 표기되며, 연장급점 됨.', '보조전원장치(SIV) 내부GDU에 과전류, 과온이 검지될 경우 +', '1) 경고장이 발생할 경우 보조전원장치(SIV) 자동 재기동에 의해 재기동 됨. +2) 중고장이 발생할 경우 보조전원장치(SIV) 리셋으로 고장 소거됨.', '1) 상기 고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 보조전원장치(SIV) 고장기록을 수집하여 출력되는 3상의 AC 전류치를 확인함. +3) 특정상의 전류치가 비정상적일 경우 특정상에 해당되는 GDU, 전류센서, 출력단 결선을 확인 한다. +4) 전류센서와 보조전원장치(SIV) 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작 상태를 시험기를 통해 확인한다. +6) GDU 전원공급기의 전원연결 상태 또는 광케이블의 연결 상태와 배선상태를 확인한다. +7) 출력단 각상의 절연상태 및 각상과 접지 간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('85cdd340-63b4-4b40-8306-b724455ba0a6', '0507', '507', 'DCU#4 4위(L2) - 초기화 실패', 'T1', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 “Calibration failure” 신호가 “1”이 되면 검지 +', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터 고장, 장애물감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우 +', '초기화 실패를 야기한 고장코드를 확인하여 조치 후, 재닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인한다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('85d55519-6987-4ab1-95bb-a3311f8aa084', '0818', '818', '실내객실표시기(PIB) 고장(Car#2)', 'M1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('85dc09c9-9077-4275-b063-f738d382252c', '0717', '717', 'HVAC#8-CO2 센서2 고장', 'Tc2', 'C', 'HVAC-CO2 센서2 고장', 'C', 'HVAC', '객실 CO2 센서2 고장 발생', 'CO2 센서2 고장현시', 'CO2 센서의 검지범위는 0~4000ppm (2~10Vdc) 인데, 1초 이상 출력전압이 2Vdc (0ppm) 미만으로 떨어지는 경우', 'CO2 센서 검지 값이 1초 이상 2Vdc (0ppm) 이상 지속되는 경우', '1) 전원을 인가한 상태에서 CO2센서 커버를 열고 테스터기를 통해 'OUT2' 단자와 'G' 단자간의 전압이 2Vdc 미만인지 확인한다. +2) 만약 전압이 2Vdc 이상인데도 고장이 지속될 경우, 마이콤을 교체한다. +3) 만약 전압이 2Vdc 미만으로 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('85e71fbc-04e2-4726-9107-9774caaf0a4e', '0726', '726', 'HVAC#4 - 배기팬2 과부하', 'T1', 'C', 'HVAC-배기팬2 과부하', 'C', 'HVAC', 'HVAC 환기작동 중 차량 배기팬2 모터에 과부하 발생 +', '환기 시 차량 배기팬2 운전 불가능', ' +1) 냉방 작동 중 챠량 배기팬2 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRVF2와 연결된 THR10이 Trip 됨. +', '차량 배기팬2 모터의 과부하조건을 해소하여 정상 가능 상태로 만들고, THR10 및 마이콤 전원 리셋', '1) 냉난방 배전반의 점검커버를 열고, THR10의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR10의 전류 세팅값이 2.5A에 맞춰져 있는지 확인하여, 아닐 경우, (+) 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동시킨 후, THR10의 2차측 2, 4 단자와 6 단자 사이의 전압이 DC 100V로 정상 측정 되는지 확인한다. +5) 만약 전압이 측정되지 않을 시, 전원이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, THR10 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('85eff54c-0a24-47ad-bc96-45770c72411f', '1206', '1206', 'FDU#8-감지기3 고장', 'Tc2', 'C', 'FDU-감지기3 고장', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 "Detector1 State” 신호가 "10"이 되면 검지.', '감지기 고장상태 현시(자동 소거 안됨)', '1) 감지기로부터 데이터 응답이 없는경우. +2) 감지기로부터 수신된 데이터의 CRC가 맞지 않는경우 +3) 감지기로부터 수신된 데이터의 ID가 송신 ID와 일치하지 않는경우', 'FDU 전원 리셋 후 감지기로부터 정상적으로 데이터가 수신된 경우', '1) FDU 전원 리셋 후 고장 소거 여부 확인 +2) 정상 동작중인 감지기와 위치 교환 후 FDU 전원 리셋 및 고장 상태 확인 +3) 동일한 감지기에서 고장 발생시 감지기 교체 +4) 동일한 위치에서 고장 발생시 감지기 라인 점검', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('85fabd66-f89f-4f33-9977-ea37356296f1', '0519', '519', 'DCU#5 4위(L2) - ZVR 신호 에러', 'T2', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 “ZVR signal error” 신호가 “1”이 되면 검지 +', '출입문이강제로 닫히게 되고, 열림은 불가능', ' +1) 차량 ZVR 신호가 없는 상태(차량 주행상태)에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함. +', '해당 출입문 ZVR 신호 수신', '1) 차량 이 주행중이라면, 차량 이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('860ebde2-f340-4812-b65c-385c0574abd5', '0716', '716', 'HVAC#2 - 냉난방장치1 압력스위치1(DPS) 고압', 'M1', 'D', 'HVAC-냉난방장치1 압력스위치1(DPS) 고압', 'D', 'HVAC', '냉난방장치1 냉매 압력스위치2 고압 발생 +', 'UNIT1CYCLE1 냉방기능불가', 'UNIT1DSP1측 냉매압력이 3초 이상 28±1(kgf/cm2) 이상 되는 경우 +', '냉매압력이 정상수치 15±0.7(kgf/cm2) 이하로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CRCM1의 부하측 전류를 측정하여 응축기 팬의 동작여부를 확인한다. +2) 응축기 코일의 전면에 이물질로 인한 막힘이 있는지 확인한다. +3) 응축기 팬 상부 그릴에 외부 이물질로 인한 막힘이 있는지 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('86145da9-a3bd-4bc5-b464-f77cbc742967', '0075', '75', '주공기압축기 장시간 기동(Car1)', 'Tc1', 'B', '주공기압축기 장시간 기동(Car1)', 'B', 'CMSB', '차량으로부터 INVERTER RUN for CMSB 또는 BYPASS RUN for CMSB 신호 입력이 12분 이상 지속시', '주공기압축기 장시간 기동', '주공기압축기 12분이상 기동시', '해당 공기관의 누기여부 확인 및 장치 점검', null, null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('8627dd2c-d183-4746-bc61-b4868ec0dfca', '0234', '234', '제동불완해검지(NRBD, Car1)', 'Tc1', 'B', '제동불완해검지(NRBD)', 'B', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT8의 Bit2 “NRBD” 신호가 “1”이 되면 검지 +', '해당 차량 제동불완해 검지 현시 및 완해 취급하였음에도 불구하고 해당 차량 제동압력 (BCP)이 완해되지 않음.', '제동완해상태(정차제동포함)에서 해당 차량의 제동압력이 완전 배기되지 않음. +', '제동완해상태(정차제동포함)에서 해당 차량의 제동압력이 완전히 배기됨.', '정차하여 강제완해스위치를 취급하여 소거 여부 확인, 제동 완해상태 확인 후 주의 운전할 것, 2 ~ 3회 시도에도 완해불능 시 관제보고하고 지시에 따를 것', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('862b6c30-dd27-47cf-aac5-558f2079b724', '0115', '115', 'VVVF-Stack 과온검지2(OTD2) (Car3)', 'M2', 'C', 'VVVF-Stack 과온검지2(OTD2)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT32의 Bit2 “OTD2” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 '스택과온검지2' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동이 되지 않으며 중고장으로 처리됨. +3) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치 냉각기의 온도가 105도 이상인 조건에서 검지.', '1) 추진제어장치 리셋으로 고장 소거됨.', '1) 상기고장이 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 냉각기의 손상이 없는지 확인한다. +3) 추진제어장치 내부에 IPM에 손상이 없는지 확인한다. +4) 인버터 유닛 내부에 온도센서 및 결선에 이상이 없느지 확인한다. +5) DIN 보드의 동작상태를 시험기를 통해 확인한다. +6) IPM 전원공급기의 전원연결상태 또는 광케이블의 연결상태와 배선상태를 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.656536+00', null, '다대48량(2015)', 'Rotem'), ('862bc140-8270-4c04-8622-b3adff204b6d', '0219', '219', 'BECU#8-제동지령 비정상', 'Tc2', 'C', 'BECU-제동지령 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit2 “제동지령 비정상” 신호가 "1"이 되면 검지.', '해당 차량 제동지령 비정상 검지 현시 및 해당차량 정상적인 제동제어 불가. (상용제동지령에 따른 제어)', '해당 차량의 제동지령 신호가 정상범위를 벗어남(5.0~95.0%).', '해당 차량의 제동지령 신호가 정상범위일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. +소거되지 않을 경우 해당 선택 운전실의 PWM 엔코더를 리셋(CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('863527a4-b598-4f4e-937f-f6b17e980be8', '0502', '502', 'DCU#3 3위(R2)-출입문 장애물검지', 'M2', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('864017b2-d4c6-468f-9f94-2aaae7d2a707', '0514', '514', 'DCU#5 1위(R1) - 출입문 닫힘 시간 초과', 'T2', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 “Close time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 닫힘 동작 시간이 7초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도한 후, ‘장애물로 인한 닫힘 실패' 고장과 함께 ‘Close time out' 고장이 함께 현시 +', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('86462a66-7d00-44a6-99c3-b570d277a1bf', '0748', '748', 'HVAC#7 - 전자접촉기 차량히터1(CRRHT) 고장', 'M4', 'C', 'HVAC-전자접촉기 차량 히터1(CRRHT) 고장', 'C', 'HVAC', '객실 난방기 작동 중 CRRHT1 전자접촉기 고장 발생 +', '객실 전난방 시 2/3난방만 작동', '객실 전난방 작동 중 2.5초 이상 동안 CRRHT1 작동 feedback 신호가 수신되지 않는 경우 +', 'CRRHT1 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CRRHT1을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRRHT1과 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('867b56c0-718f-45de-a237-887eb3c221ac', '0146', '146', 'VVVF#2 - 과온검지1(THDL)', 'M1', 'C', 'VVVF-Stack 과온검지1(THDL)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT30의 Bit3 “THDL” 신호가 “1”이 되면 검지 +', '1) TCMS 화면 하단 또는 고장화면에 ‘스택 과온검지1' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동이 되지 않으며 중고장으로 처리됨. +3) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉은색으로 표기되며, HSCB, LB1, 2 개방되어 동력 손실 발생함.', '추진제어장치 냉각기의 온도가 105도 이상인 조건에서 검지 +', '추진제어장치 리셋으로 고장 소거됨.', '1) 상기고장이 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 냉각기의 손상이 없는지 확인한다. +3) 추진제어장치 내부에 IPM에 손상이 없는지 확인한다. +4) 인버터 유니트 내부에 온도센서 및 결선에 이상이 없는지 확인한다. +5) DIN 보드의 동작 상태를 시험기를 통해 확인한다. +6) IPM 전원공급기의 전원연결 상태 또는 광케이블의 연결 상태와 배선상태를 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지 간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('86878239-1464-44cb-a70e-05f37cda0743', '0519', '519', 'DCU#2 1위(R1)-ZVR 신호 에러', 'M1', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 "ZVR signal error” 신호가 "1"이 되면 검지.', '출입문이 강제로 닫히게 되고, 열림은 불가능', '1) 차량 ZVR 신호가 없는 상태 (차량 주행상태) 에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함.', '해당출입문 ZVR 신호 수신', '1) 차량이 주행중이라면, 차량이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.392739+00', null, '로템40량(2018)-1단계', 'Rotem'), ('868817a4-a3b1-41d4-95f3-595aa8eab88f', '0214', '214', 'BECU#7-BC 압력센서고장', 'M4', 'C', 'BECU-BC 압력센서 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit5 “BC 압력센서 고장” 신호가 "1"이 되면 검지.', '해당 차량 BC압력센서 고장 검지 현시 및 해당차량 제동력 부족, 제동불완해 검지 불가.', '해당 차량의 BC압력센서 고장.', '해당 차량의 BC압력센서가 정상일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('86937fad-8e4e-47d6-b43d-def7eda7859a', '0153', '153', 'VVVF#6-FC 용량저하(FCLCD)', 'M3', 'C', 'VVVF-FC 용량저하(FCLCD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT31의 Bit2 “FCLVD” 신호가 "1"이 되면 검지.', null, '필터캐패시터 용량이 8900uF이하일 때 검지.', '제어전원 OFF', '1) FC용량 측정 후 8900uF 미만일 경우 신품으로 교체. +2) 주 회로 차단기함 내부 충전저항값을 측정하여 기준치(10Ω±10%)이내임을 확인.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('86a5fcb9-518a-4dfb-aa33-b7a681d275ac', '0091', '91', '화재검지기 고장(Car6)', 'M3', 'C', null, null, 'FDU', null, null, null, null, null, null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('86af655f-2cd6-45b2-9c2e-9d901198c4da', '0510', '510', 'DCU#3 1위(R1) - 출입문 닫힘 리미트 스위치1 고장', 'M2', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 “DCS1 Failure(Leftt)” 신호가 “1”이 되면 검지 +', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('86affb9e-6a28-4cc3-8af9-9fcf67a23379', '0177', '177', 'VVVF#3 - LB1 투입불량(LB1NC)', 'M2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('86b0e4b9-d2fd-4389-96cf-54b3240ca034', '0237', '237', '보안제동코크 차단(Car5)', 'T2', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('86c7e261-38c3-4905-b8b1-c6b512ea43f9', '0711', '711', 'HVAC#5-냉난방장치2 압력스위치1(DPS) 저압', 'T2', 'D', 'HVAC-냉난방장치2 압력스위치1(DPS) 저압', 'D', 'HVAC', '냉난방장치2 냉매 압력스위치1 저압 발생.', 'UNIT2 CYCLE1 냉방 기능 불가', 'UNIT2 DSP1측 냉매 압력이 3초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우', '냉매 압력이 정상 수치 2±0.5(kgf/cm2 이상으로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CREF4의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)을 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안되는 것을 확인한 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('86c90e30-e56f-49ea-a0e3-9c2e0666d1d2', '1205', '1205', 'FDU#8 - 감지기3 화재감지', 'Tc2', 'W', 'FDU-감지기3 화재감지 (Car1~8)', 'W', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 “Detector1 State” 신호가 “11”이 되면 검지 +', '화재상태현시(자동소거 안 됨.)', '하기 2가지 조건을 모두 만족하여야 화재신호가 출력 됨. (연동모드 동작) +1) 이웃한(앞 혹은 뒤에 위치한) 감지기 중 하나의 감지기라도 주의 혹은 화재상태에 있어야 함. +2) Detector1(해당 감지기)에서 측정된 연기농도가 15% 이상이거나 온도가 65℃ 이상인 경우 +', '1) FDU의 복귀버튼 조작 시 +2) FDU 전원 리셋 시', '1) 해당 감지기 위치의 화재 발생 여부 확인 +2) 화재 오감지일 경우 FDU의 복귀버튼 취급 +3) 오감지일 경우 감지기의 청소주기 확인(내부 먼지 제거)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('86d1eb0b-d93e-4b35-ad0a-7f255747bd2a', '0515', '515', 'DCU#7 5위(R3) - 출입문 열림 시간 초과', 'M4', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 “Open time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 열림 동작시간이 6초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도한 후, ‘장애물로 인한 열림 실패' 고장과 함께 ‘Open time out' 고장이 함께 현시 +', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('86dccae6-a060-4622-8e0e-b120eaf9c6d7', '0512', '512', 'DCU#6 2위(L1) - 파라미터 로딩 실패', 'M3', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 “Paraneter error” 신호가 “1”이 되면 검지 +', 'Parametererror 현시(출입문은 정상작동 가능)', 'DCU 자체 내의 EEPROM으로부터 parameter데이터 로딩 실패 +', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('86e3f191-71d2-48c4-832b-7dfd73fd61e4', '1510', '1510', '열차분리#2 검지(Car5)', 'T2', 'B', '열차분리#2 검지', 'B', 'TCMS', '차량의 열차분리#2 검지 +', '1) 2위측 열차검지신호(SOTS2) 검출 시 화면에 현시 +2) 실제 열차분리 시 검지되었는지 확인 필요(실제 열차분리 시 다른 차량 이 접근하지 못하도록 선조치 필요) +3) 실제 열차 분리 시 비상제동 안전루프에 의해 비상제동체결 됨. +4) 열차 분리에 따라 분리 위치부터 차량제어장치(TU)와 반대편의 편성제어장치(CU)의 통신고장 동반 발생', 'CU/TU의 2위측 열차분리신호(SOTS2) 신호 활성(LOW) 입력 시 고장 현시 +', 'CU/TU의 2위측 열차분리신호(SOTS2) 신호 정상(HIGH) 입력 시 소거됨.', '1) 실제 열차분리 시 관제에 연락하고, 지시에 따름 +2) 회로 차단기 ELCB ON 상태 확인 +3) CU인 경우 2위측 열차분리신호 DIM1 PCB의 입력채널(SOTS +2) 점검/교체 +4) TU인 경우 2위측 열차분리신호 DIM3 PCB의 입력채널(SOTS +2) 점검/교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('86e92566-9ca4-42c8-a02a-a4a8b7c64c67', '0307', '307', 'ATC#8-반대편 출입문 코드 수신', 'Tc2', 'W', null, null, 'ATC', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('870047ad-6f42-4647-8619-51da94fa0a72', '0159', '159', 'VVVF#3-제어전원전압이상(PWM2)(CLVD_P2)', 'M2', 'C', 'VVVF-제어전원전압이상(PWM2)(CLVD_P2)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT32의 Bit0 “CLVD_P2” 신호가 "1"이 되면 검지.', null, 'PWM보드 내부의 제어전원 이상 검지 시 중고장 발생.', '동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) PWM보드 2군 전면의 CN1, CN2 커넥터 핀 상태 및 체결상태 확인. +2) PWM보드 2군 내부의 PCB의 소손, 냉납, 열화 유무 확인. +3) 추진제어장치 시험기를 이용하여 PWM보드의 정상동작을 확인한다. +4) 상기의 점검부분에 이상이 있을 경우 관련부품을 교체한다.', null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('8710ff6e-51fe-477d-95c5-506098dc4bfa', '1705', '1705', '노선안내표시기#2 고장(Car7)', 'M4', 'C', '노선안내표시기#3 고장', 'C', 'PIC', 'PIC 장치의 노선안내표시기#3이 고장이 났을 때 발생 +', '1) 노선안내표시기 화면 미현시 +2) 노선안내표시기 안내 화면 오현시', '통신고장 +', '통신 재개 시', '1) 이더넷 스위치 링크 확인 +2) 이더넷 케이블 점검 +3) 제어보드 및 전원보드 교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('871ea61b-8847-4d4c-b95b-d51d2a0611ef', '0504', '504', 'DCU#2 4위(L2)-출입문 외부비상핸들 취급(EAD)', 'M1', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('872e7d81-fb51-4c54-9ad4-1afc4011bc05', '0514', '514', 'DCU#6 5위(R3)-출입문 닫힘 시간 초과', 'M3', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 "Close time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 닫힘 동작시간이 7초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도 한 후, '장애물로 인한 닫힘실패' 고장과 함께 'Close time out' 고장이 함께 현시', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('873197d9-8e67-426d-aea6-53ad9bbe694b', '0722', '722', 'HVAC#2-냉난방장치2 압력스위치1(DPS) 냉매부족', 'M1', 'C', 'HVAC-냉난방장치2 압력스위치1(DPS) 냉매부족', 'C', 'HVAC', '냉난방장치2 냉매 압력스위치1 저압 발생.', 'UNIT2 CYCLE1 냉방 기능 불가', 'UNIT2 DSP1측 냉매 압력이 30초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우', '냉매 압력이 정상 수치 2±0.5(kgf/cm2 이상 유지하도록 하고, 마이콤 전원을 리셋', '1) 배전반 점검 커버를 열고 마이콤 전원을 리셋한 후, 냉방 가동 시, CREF4의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)을 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안되는 것을 확인한 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('87657ba3-c9f6-4631-848b-ec4cde715604', '0505', '505', 'DCU#8 2위(L1) - 출입문 입력 고전압', 'Tc2', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 “1”이 되면 검지 +', '고전압 상태(그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상 +', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('8772a329-962c-4e4b-8ea3-0cc29bbdb027', '1204', '1204', 'FDU#8 - 감지기2 고장', 'Tc2', 'C', 'FDU-감지기2 고장 (Car1~8)', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 “Detector1 State” 신호가 “10”이 되면 검지 +', '감지기고장상태현시(자동소거 안 됨)', ' +1) 감지기로부터 데이터 응답이 없는 경우 +2) 감지기로부터 수신된 데이터의 CRC가 맞지 않는 경우 +3) 감지기로부터 수신된 데이터의 ID가 송신 ID와 일치하지 않는 경우 +', 'FDU 전원 리셋 후 감지기로부터 정상적으로 데이터가 수신된 경우', '1) FDU 전원 리셋 후 고장 소거 여부 확인 +2) 정상동작중인 감지기와 위치 교환 후 FDU 전원 리셋 및 고장 상태 확인 +3) 동일한 감지기에서 고장 발생 시 감지기 교체 +4) 동일한 위치에서 고장 발생 시 감지기 라인 점검', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('8772f5c6-f005-4275-aa49-deb37f39a4bc', '0083', '83', '화재검지(Car6)', 'M3', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('877dadf5-a670-44e1-bc1b-35f7c5a6035a', '0710', '710', 'HVAC#5 - 냉난방장치2 압력스위치2(DPS) 고압', 'T2', 'D', 'HVAC-냉난방장치2 압력스위치2(DPS) 고압', 'D', 'HVAC', '냉난방장치2 냉매 압력스위치2 고압 발생 +', 'UNIT2CYCLE2 냉방기능불가', 'UNIT2DSP2측 냉매압력이 3초 이상 28±1(kgf/cm2) 이상 되는 경우 +', '냉매압력이 정상수치 15±0.7(kgf/cm2) 이하로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CRCM4의 부하측 전류를 측정하여 응축기 팬의 동작여부를 확인한다. +2) 응축기 코일의 전면에 이물질로 인한 막힘이 있는지 확인한다. +3) 응축기 팬 상부 그릴에 외부 이물질로 인한 막힘이 있는지 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('87932a6d-db51-46b9-b1a5-71bd5302fc6d', '0504', '504', 'DCU#3 5위(R3) - 출입문 외부 비상핸들 취급(EAD)', 'M2', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('879d4514-b79f-4df8-9b89-5ab287be8d0f', '0217', '217', 'BECU#7 - 회생제동달성 비정상', 'M4', 'C', 'BECU-회생제동달성 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit0 “회생제동달성 비정상” 신호가 “1”이 되면 검지 +', '해당 차량 회생제동달성비정상 검지 현시 및 해당 차량 정상적인 전공교차제어 불가', '해당 차량의 회생제동 달성 신호가 정상범위를 벗어남. (5.0 ~ 95.0%) +', '해당 차량의 회생제동달성신호가정상범위일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 소거되지 않을 경우 해당 차량 추진제어장치 리셋(CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르 시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('87bd9638-2de9-4ed8-b383-196410050a09', '0505', '505', 'DCU#6 6위(L3) - 출입문 입력 고전압', 'M3', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 “1”이 되면 검지 +', '고전압 상태(그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상 +', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('87bdfdf5-d9bd-425c-ab9e-102528f96e09', '0505', '505', 'DCU#2 3위(R2)-출입문 입력 고전압', 'M1', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 "1"이 되면 검지.', '고전압 상태. (그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('87db34fd-b5a9-4561-b664-4d432bd7a05d', '0149', '149', 'VVVF#7 - FC 저전압검지(FCLVD)', 'M4', 'C', 'VVVF-FC 저전압검지(FCLVD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT30의 Bit6 “FCLVD” 신호가 “1”이 되면 검지 +', '1) TCMS 화면 하단 또는 고장화면에 ‘FC 저전압검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생함. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉은색으로 표기되며, HSCB, LB1, 2 개방되어 동력 손실 발생함.', '추진제어장치 내부 FC 전압이 850V 이상일 경우 검지됨. +', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반 배전반의 VVVFIC nfb 재투입 또는 차량 배터리 전원 재투입', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 FC전압에 이상이 있는지 확인한다. +3) 추진제어장치 내부 고전압부에 소손흔적이 있는지 확인한다. +4) FC에 연결된 부스바의 체결상태가 양호한지 확인한고, 부스바를 분리하여 FC의 Capacitance를 측정하여 이상이 없는지 확인한다. +5) 전압센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +6) SEN 보드의 동작 상태를 시험기를 통해 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지 간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('87e52156-d332-4fd6-b4ab-7f159a9daf66', '0500', '500', 'DCU#3 4위(L2) 통신고장', 'M2', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS 간 RS485 통신고장이 검지되면 발생 +', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐상태 등의 변화가 없음.', ' +1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우 +', '해당 차량의 DCU 및 CU/TU의 전원이 정상상태이고, 통신 라인 연결 상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜져 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적 으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는 데도 지속적으로 통신고장이 검지되면, DCU의 X2, X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상 체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('87e85a82-f590-4b1b-918c-a7b75b48bd38', '0519', '519', 'DCU#5 1위(R1)-ZVR 신호 에러', 'T2', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 "ZVR signal error” 신호가 "1"이 되면 검지.', '출입문이 강제로 닫히게 되고, 열림은 불가능', '1) 차량 ZVR 신호가 없는 상태 (차량 주행상태) 에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함.', '해당출입문 ZVR 신호 수신', '1) 차량이 주행중이라면, 차량이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.392739+00', null, '로템40량(2018)-1단계', 'Rotem'), ('8800d147-c4cb-4694-a4a1-fb2350dbb591', '0054', '54', 'AUX FUSE DISCONNECTED(Car3)', 'M2', 'W', 'AUX FUSE DISCONNECTED(Car3)', 'W', 'TCMS', '차량으로부터 AUX FUSE DISCONNECTED 신호 입력시', 'SIV 고압 차단으로 AC전원 전체 "OFF"', '해당 퓨우즈 소손', '해당 퓨우즈 교체', null, ' +REC30330HN0', '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('880bf2b7-0b6f-4b61-a52d-55d0180392ba', '0503', '503', 'DCU#6 4위(L2) - 출입문 내부 비상핸들 취급(EED)', 'M3', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('881524c6-2aae-4995-8033-fb08cce6d9df', '0721', '721', 'HVAC#4 - 냉난방장치2 압력스위치2(DPS) 냉매부족', 'T1', 'C', 'HVAC-냉난방장치2 압력스위치2(DPS) 냉매부족', 'C', 'HVAC', '냉난방장치2 냉매 압력스위치2 저압 발생 +', 'UNIT2CYCLE2 냉방 기능 불가', 'UNIT2DSP2측 냉매압력이 30초 이상0.5±0.3(kgf/cm2) 이하로 떨어지는 경우 +', '냉매압력이 정상수치 2±0.5(kgf/cm2) 이상 유지하도록 하고, 마이콤전원을 리셋', '1) 배전반 점검 커버를 열고 마이콤 전원을 리셋한 후, 냉방 가동 시, CREF4의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)을 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설 여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안 되는 것을 확인한 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('8815523a-4175-4e86-a622-b3227abe6ba4', '0144', '144', 'VVVF#7-HSCB 트립검지(HBT)', 'M4', 'B', 'VVVF-HSCB 트립검지(HBT)', 'B', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT30의 Bit1 “HBT” 신호가 "1"이 되면 검지.', null, '1) HSCB의 자체 과전류 보호에 의하여 트립이 발생했을 때 고장검지. +2) 1분 이내 3회 발생 시 중고장.', '1) 경고장 +역행 고장검지 2초 후 자동 재기동 제동 제동 OFF시 고장 소거 +2) 중고장 +동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 고장기록의 FC 전압 및 입력전류 확인. +3) 추진제어장치 내부에 접지흔적 확인 및 고압회로 점검. +4) 전류/전압 센서의 외관 상태와 저전압 배선상태를 확인한다. +5) 추진제어장치 시험기를 이용하여 TCU(통합제어장치)의 이상여부를 확인한다. +6) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +7) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('8827459e-1f95-411b-a6c1-01a1412f622b', '0708', '708', 'HVAC#2 - 냉난방장치1 증발기1 과부하', 'M1', 'C', 'HVAC-냉난방장치1 증발기1 과부하', 'C', 'HVAC', 'HVAC 냉방 작동 중 냉난방장치1 증발기 모터에 과부하 발생 +', 'UNIT1냉방 작동 불가', ' +1) 냉방 작동 중 UNIT1의 증발기 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CREF1과 연결된 THR5가 Trip 됨. +', 'UNIT1의 증발기모터의 과부하조건을 해소하여 정상 가능 상태로 만들고, THR5 및 마이콤 전원 리셋', '1) 냉난방 배전반의 점검커버를 열고, THR5의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR5의 전류 세팅값이 3A에 맞춰져 있는지 확인하여, 아닐 경우, (+) 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동시킨 후, THR5의 2차측 2, 4, 6 단자에서 각 단자 간 상간 전압이 AC 380V로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 증발기 단품 상태 에서 점검을 한다. +7) THR5의 2차측 2, 4, 6 단자에서 각 단자 간 권선저항이 모두 같은지 확인한다. (±10% 이하) (증발기 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT2의 증발기 모터의 결선을 해제한 후 4극 및 6극 모터의 권선저항을 확인 후, 문제가 있을 경우, 증발기 모터를 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR5 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('884970a6-d747-4b28-a5c0-1efbabca0e54', '0515', '515', 'DCU#7 3위(R2)-출입문 열림 시간 초과', 'M4', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 "Open time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 열림 동작시간이 6초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도 한 후, '장애물로 인한 열림실패' 고장과 함께 'Open time out' 고장이 함께 현시', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('8857c21e-6c75-4c40-a94f-b084d35ed84b', '1513', '1513', 'CU1 모듈고장 - SCM1(Car1)', 'Tc1', 'C', 'CU1, 2 모듈고장 - SCM1', 'C', 'TCMS', 'CU의 SCM1 PCB가 이 정상적으로 인식되지 않아 점검이 필요할 때 +', '1) CU1의 SCM1 PCB가 모듈 고장이 발생하면, CU2로 자동 절체됨. (CU2로 자동 절체되면 운행 에는 지장이 없음) +2) CU2 자동 절체 시 화면의 우측 상단 경고장글자 하단에 “B.SYS” 라는 표시가 나타남. +3) 자동절체 시 열차 운행에는 관계없음. +4) CU2의 SCM1 모듈고장 시는 CU1 정상동작시 운행에는 지장이 없음.', 'CU SCM1의 ID를 정상적으로 검출하지 못할 때 화면에 현시 +', 'CU SCM1의 ID를 정상적으로 검출하는 경우 소거됨.', '1) CU의 SCM1 PCB 교체(SCM1 PCB의 설정 스위치 확인) +2) 불량 해소가 되지 않을 경우, 순차적으로 MCPU, DIM, AUX PCB를 교체하여 정상여부 확인', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('88787243-acbc-4f7d-a5fb-8a88fc700e8f', '0042', '42', '비상판토 하강', 'Tc1', 'W', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('887ff8a4-73a2-484f-9f9c-9ed90f28bca8', '0519', '519', 'DCU#8 5위(R3)-ZVR 신호 에러', 'Tc2', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 "ZVR signal error” 신호가 "1"이 되면 검지.', '출입문이 강제로 닫히게 되고, 열림은 불가능', '1) 차량 ZVR 신호가 없는 상태 (차량 주행상태) 에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함.', '해당출입문 ZVR 신호 수신', '1) 차량이 주행중이라면, 차량이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('88c47ed9-f1f2-4c39-9e8c-ed9ef0053fad', '0740', '740', 'HVAC#6-전자접촉기 증발기1(CREF) 고장', 'M3', 'C', 'HVAC-전자접촉기 증발기1(CREF) 고장', 'C', 'HVAC', 'HVAC 냉방작동 중 CREF1 전자접촉기 고장 발생.', 'UNIT1 냉방 작동 불가', '냉방작동 중 2.5초 이상동안 CREF1 작동 feedback 신호가 수신되지 않는 경우', 'CREF1 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CREF1을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CREF1과 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('88d4fc66-9e93-4ae2-9359-df551ab2175e', '0512', '512', 'DCU#7 5위(R3) - 파라미터 로딩 실패', 'M4', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 “Paraneter error” 신호가 “1”이 되면 검지 +', 'Parametererror 현시(출입문은 정상작동 가능)', 'DCU 자체 내의 EEPROM으로부터 parameter데이터 로딩 실패 +', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('88dc1103-ce76-4966-8eef-3bf7b2da77fb', '0886', '886', '전면카메라(FCAM) 고장(Car#1)', 'Tc1', 'C', '통합방송표시기-전면카메라(FCAM) 고장(CAR1)', 'C', 'TCMS', '통합방송표시기의 RS485 데이터 중 통합방송표시기-TCMS SD TEXT9의 Bit1, TEX23의 Bit1 “FCAM 고장” 신호가 "1"이 되면 검지.', '고장 발생FCAM 영상 저장 불가능', '정면카메라(FCAM) 통신 고장', '정면카메라(FCAM) 통신 정상', '정면카메라(FCAM) 전원 및 통신 라인 점검 +관련도면 RES41002FG0', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('88e1014d-a81f-4bca-a48e-e1f019c5f316', '0725', '725', 'HVAC#2-냉방시험 불가능', 'M1', 'C', 'HVAC-냉방시험 불가능', 'C', 'HVAC', '운전실 TCMS에서 냉방시험 작동을 할 때, 냉방운전이 불가능한 경우 발생.', '냉방 시험 운전 불가능', '실내 또는 실외 온도가 10도 미만일 경우, (환절기 또는 겨울철에 냉방 가동시 시스템 보호를 위한 온도조건)', '실내 또는 실외 온도가 10도 이상일 때, 냉방시험 작동', '1) TCMS 화면에서 실내 또는 실외 온도가 10도 미만인지 확인한다. +2) 실내 및 실외 온도가 10도 이상인대도 냉방 가동이 되지 않을 시, TCMS-마이콤 간 통신불량이 있는지 확인하고 조치한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('88eb332a-af09-427d-8a9a-01e4faeeb06c', '0511', '511', 'DCU#8 2위(L1)-출입문 닫힘 리미트 스위치2 고장', 'Tc2', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 "DCS2 Failure(Right)” 신호가 "1"이 되면 검지.', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('88ef1074-c91b-4ae3-becb-fdcb669552b6', '0507', '507', 'DCU#1 5위(R3) - 초기화 실패', 'Tc1', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 “Calibration failure” 신호가 “1”이 되면 검지 +', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터 고장, 장애물감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우 +', '초기화 실패를 야기한 고장코드를 확인하여 조치 후, 재닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인한다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('89020c80-84d3-4f21-8551-81556d29634c', '1700', '1700', 'PIC#1 통신고장', 'Tc1', 'C', 'PIC#1, 8 통신고장', 'C', 'PIC', 'TCMS와 PIC 간 E-NET 통신고장이 검지되면 발생 +', '1) 해당 PIC가 마스터인 경우, 반대편 PIC로 절체 +2) 1호차 및 8호차의 PIC가 모두 고장일 경우, 1호차 ~ 8호차 노선안내표시기 화면 오현시', '통신고장 +', '통신 재개 시', '1) 이더넷 스위치 링크 확인 +2) 이더넷 케이블 점검 +3) 제어보드 및 전원보드 교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('890854dd-3f56-4b25-9423-9c98f2028373', '0130', '130', 'VVVF-IPM Y상 이상검지(GDFY) (Car7)', 'M4', 'C', 'VVVF-IPM Y상 이상검지(GDFY)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT34의 Bit4 “GDFY” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 'IPM Y상 이상검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치 내부 IPM에 과전류, 과온이 검지될경우.', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반배전반의 VVVFIC nfb 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 견인전동기로 출력되는 3상의 전류치 확인함. +3) 특정상의 전류치가 비정상적일 경우 특정상에 해당되는 IPM, 전류센서, 모터결선을 확인한다. +4) 전류센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작상태를 시험기를 통해 확인한다. +6) IPM 전원공급기의 전원연결상태 또는 광케이블의 연결상태와 배선상태를 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.71571+00', null, '다대48량(2015)', 'Rotem'), ('890fefa7-9277-4263-bb4e-8f7800d0056a', '0100', '100', 'VVVF#3 통신고장', 'M2', 'B', 'VVVF-통신고장', 'B', 'VVVF', 'VVVF와 TCMS간 RS485 통신고장이 검지되면 발생.', 'TCMS 화면에 고정정보 현시되며, 추진제어장치 상태화면에 나타나는 데이터에 변동이 없음.', 'TCMS-추진제어장치(VVVF) 간 통신정보가 3초이상 동일한 정보로 유지되면 통신고장을 검지함.', 'TCMS-추진제어장치(VVVF) 간 통신정보가 정상적으로 통신이 될경우 소거됨.', '1) 추진제어장치(VVVF) 리셋 실시 후 통신고장 소거됨을 확인. +2) 통신고장 소거가 되지 않을 경우 추진제어장치 PUZ 보드 신품으로 교체후 통신고장 소거여부 확인. +3) 위 조건에도 고장이 소거되지 않을 경우, TCMS-추진제어장치간 RS485 통신케이블 연결상태 점검.', null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('891d237b-7933-4a09-9be8-8c5b656e57c2', '0521', '521', 'DCU#1 2위(L1)-모듈 상태 이상', 'Tc1', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 "01"또는 "00"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('89264e3f-3859-45a6-8ff1-7dc8db9097d0', '0505', '505', 'DCU#6 2위(L1)-출입문 입력 고전압', 'M3', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 "1"이 되면 검지.', '고전압 상태. (그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('892754e5-66a3-4c14-88a0-98ec3f453dad', '0506', '506', 'DCU#6 2위(L1) - 출입문 입력 저전압', 'M3', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 “1”이 되면 검지 +', '저전압상태(출입문 동작이 심하게 느려지거나 작동조차 안 될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하 +', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('892d8698-719d-47e1-8335-bd497c523b05', '0232', '232', 'BC 코크(차하#2) 차단(Car2)', 'M1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('8938bd54-a14a-4a3d-8211-111fed73eca6', '0501', '501', 'DCU#6 2위(L1)-출입문 차단', 'M3', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('894fdafc-8b5c-4aaa-bac8-f0e9930faebe', '0740', '740', 'HVAC#2-전자접촉기 증발기1(CREF) 고장', 'M1', 'C', 'HVAC-전자접촉기 증발기1(CREF) 고장', 'C', 'HVAC', 'HVAC 냉방작동 중 CREF1 전자접촉기 고장 발생.', 'UNIT1 냉방 작동 불가', '냉방작동 중 2.5초 이상동안 CREF1 작동 feedback 신호가 수신되지 않는 경우', 'CREF1 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CREF1을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CREF1과 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('895858f3-fbdf-4ee2-9be7-7d2481e924f0', '0517', '517', 'DCU#4 6위(L3) - 출입문 장애물로 인한 열림 실패', 'T1', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Open failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘 상태로 대기', '도어열림 중 3회 장애물감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 열림 시, 장애물감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('895a4eec-0db4-4c88-b390-34e4daf9c10a', '0238', '238', 'BECU#5 - 4축 스키드신호', 'T2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('895c2d61-13fe-4b90-8ff1-27ef25d151b3', '0750', '750', 'HVAC#2 - 냉난방장치2 보조히터 과열', 'M1', 'C', 'HVAC-냉난방장치2 보조히터 과열', 'C', 'HVAC', 'HVAC2 보조난방기 작동 중 과열 발생 +', 'UNIT2 보조난방기난방불가', '보조난방기 작동 중 1초 이상 동안 온도가 70도 이상으로 과온 센서 정상신호가 수신 되지 않는 경우 +', '1초 이상 동안 60도 미만으로 온도가 떨어져 과온 센서 정상신호가 수신되는 경우', '1) 보조난방기가 꺼진 상태에서도 문제 발생 시, 과온 센서를 교체한다. +2) 센서 교체 후에도 문제가 발생되면, 배선에 문제가 없는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('896d1757-7d35-4023-a195-5378b423c425', '0700', '700', 'HVAC#7 통신고장', 'M4', 'C', 'HVAC-통신고장', 'C', 'HVAC', 'HVAC와 TCMS 간 RS485 통신고장이 검지되면 발생 +', '화면상 HVAC의 실내온도, 운전모드 등의 데이터가 반응하지 않음.', ' +1) 마이콤 전원 CB OFF +2) 통신연결 불량 +3) 해당 마이콤이 검수요원에 의해 firmware 업데이트 중인 경우 +', '해당 차량의 마이콤 및 CU/TU의전원이정상상태이고, 통신라인 연결 상태가 정상', '1) 냉난방 배전반의 점검커버를 열고, 마이콤이 정상적으로 켜져 있는지 확인한다. +2) 만약 마이콤 전원이 꺼져 있다면, 마이콤 DC 전원 CB 및 차량 배전반에 위치한 냉난방장치 CB가 정상적으로 켜져 있는지 확인한다. +3) 마이콤이 정상적으로 켜져 있는 데도 지속적으로 통신고장이 검지되면, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀 밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('8984aa21-ac2c-4362-8fc2-974883699adc', '0517', '517', 'DCU#1 1위(R1) - 출입문 장애물로 인한 열림 실패', 'Tc1', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Open failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘 상태로 대기', '도어열림 중 3회 장애물감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 열림 시, 장애물감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('89b442e5-c15a-4db4-8add-3bb2859b1b4b', '1409', '1409', 'BMS#1 - 방전과전류(OCD, 방전220A 이상)', 'Tc1', 'D', 'BMS-방전과전류(OCD)', 'D', 'BMS', '해당 차량의 방전 전류가 180A 이상이 되면 검지 +', '차량 배터리방전과전류검지 후, 220A 이상이면 방전접촉기(DCK)가 차단된다.', '배터리 방전과전류(180A 이상) +', '배터리 방전전류 정상범위로 회복(0 ~ 150A)', '1) 배터리 NFB 상태 확인 +2) 이상이 없으면 차량 전체를 리셋한다. +3) 차량 리셋 후에도 동일고장이면 사령실과 연락하여 조치를 취한다. (외부 충전기 연결 또는 차량 지원)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('89cc5cb9-ddee-4f52-800a-82b6766c41cf', '0714', '714', 'HVAC#5-냉난방장치1 압력스위치2(DPS) 고압', 'T2', 'D', 'HVAC-냉난방장치1 압력스위치2(DPS) 고압', 'D', 'HVAC', '냉난방장치1 냉매 압력스위치2 고압 발생.', 'UNIT1 CYCLE2 냉방 기능 불가', 'UNIT1 DSP2측 냉매 압력이 3초 이상 28±1(kgf/cm2) 이상 되는 경우', '냉매 압력이 정상 수치 15±0.7(kgf/cm2 이하로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CRCM2의 부하측 전류를 측정하여 응축기 팬의 동작여부를 확인한다. +2) 응축기 코일의 전면에 이물질로 인한 막힘이 있는지 확인한다. +3) 응축기 팬 상부 그릴에 외부 이물질로 인한 막힘이 있는지 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('89d16828-d36e-468f-ab28-cb05d46332d5', '0169', '169', 'VVVF#3 - 상전류 동기 불평형 검지(RETRY)', 'M2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('89deff3a-2f3c-46e0-81ce-708b3d68cca4', '0008', '8', 'TU 통신고장(Car3)', 'M2', 'B', 'TU 통신고장(CAR3)', 'C', 'TCMS', 'M,T 차량의 단말장치(TU) 통신고장 +', ' +1) 해당 차호의 단말장치(TU)와의 통신불능시 화면에 현시. +2) TU 통신 고장시 해당호차의 VVVF, BECU, DCU, HVAC, FDU 등과의 통신도 불가. +(해당 차량의 출입문 열림/닫힘 정보도 현시 불가하므로 출입문 열림/닫힘 램프로 주의 운행) +3) 2호차(6호차) TU 통신 고장시 판토상승/하강 명령 전달 불가(단, 이미 상승된 판토는 상승 유지됨) +4) 4호차 TU 통신고장시, 연장급전 접촉기 출력이 불가 +', ' +1) CU에서 TU의 통신정보를 2초이상 수신받지 못할 경우 해당 고장 현시. +', ' +1) TU가 정상적으로 통신을 재개할 경우 소거됨. +', '1) TU 전원차단기 리셋(IFF->ON) 실시 +2) VPS보드의 전원 LED가 정상이라면, 멀티미터로 VPS 보드의 전원출력(5V)를 확인. +3) TU 상단의 커넥터 체결상태를 확인 +4) 상기 항목에 이상이 없을 경우 VARCM 보드를 교체한다.', null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('89e09a83-bf66-4cd5-9151-56fce5cc542b', '0518', '518', 'DCU#4 2위(L1)-출입문 Enable 신호 에러', 'T1', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 "Enable signal error” 신호가 "1"이 되면 검지.', 'DCU 출입문 Enable 신호 에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) 취급시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함.', '해당출입문 enable 신호 수신', '1) AUTO/MCS 모드시에는 YARD모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인한다. (YARD/FMC 모드시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.392739+00', null, '로템40량(2018)-1단계', 'Rotem'), ('89e42424-8a76-4235-88fb-3d31caa6c608', '0753', '753', 'HVAC#8-배기댐퍼 열림고장', 'Tc2', 'C', 'HVAC-배기댐퍼 열림고장', 'C', 'HVAC', '환기 시, 차량 배기댐퍼가 열려 있는 상태에서 배기댐퍼 열림 리미트 스위치가 작동되지 않음', '배기댐퍼 열림 고장 현시', '배기댐퍼를 열림으로 제어했으나 열림 리미트 스위치 입력이 없을 경우', '배기댐퍼 열림 상태에서 리미트 스위치 입력이 정상적으로 입력', '1) 배기댐퍼가 열린 상태에서 열림 리미트 스위치가 정상적으로 작동되었는지 확인한다. +2) 열림 리미트 스위치가 정상작동 되었음에도 문제가 발생될 경우, 스위치를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('89e6dbe6-815e-46c6-87ff-2ba3474f325c', '0513', '513', 'DCU#3 6위(L3) - 모듈 상태체크 에러', 'M2', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 “Module check error” 신호가 “1”이 되면 검지 +', 'Modulecheckerror현시(출입문은 정상작동가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태 체크 기능에 이상이 생긴 경우 고장 발생 +', 'DCU의 ‘A' 모듈과 ‘B' 모듈 간, 상태 체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('89e7aabf-a010-4e2e-b402-08ab6aac10fd', '0239', '239', 'BECU#4 - 3축 스키드신호', 'T1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('89f3f2e2-19b9-4879-aebf-0f51146ee23f', '0730', '730', 'HVAC#8 - 냉난방장치1 토출 센서 고장', 'Tc2', 'C', 'HVAC-냉난방장치1 토출 센서 고장', 'C', 'HVAC', '냉난방장치1의 토출 센서 고장 발생 +', '냉난방장치1 토출 센서 고장현시', '온도센서 검지범위는 -45 ~ 85도(820 ~ 1,330Ω)인데, 2초 이상 검지범위를 벗어나는 경우 +', '온도센서 검지값이 2초 이상 허용온도 범위 내일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820 ~ 1,330Ω을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('89f5bc0c-9f14-4dfc-bb3d-7726e5bb42cc', '0736', '736', 'HVAC#7-전자접촉기 압축기(CRCM)1 고장', 'M4', 'C', 'HVAC-전자접촉기 압축기(CRCM)1 고장', 'C', 'HVAC', 'HVAC 냉방작동 중 CRCM1 전자접촉기 고장 발생.', '냉방 기능 저하(전냉방시 반냉방으로 작동)', '냉방작동 중 2.5초 이상동안 CRCM1 작동 feedback 신호가 수신되지 않는 경우', 'CRCM1 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CRCM1을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRCM1과 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('8a05e00b-5f15-4931-93a9-3747ccb9cff6', '0739', '739', 'HVAC#6-전자접촉기 증발기2(CREF) 고장', 'M3', 'C', 'HVAC-전자접촉기 증발기2(CREF) 고장', 'C', 'HVAC', 'HVAC 냉방작동 중 CREF2 전자접촉기 고장 발생.', 'UNIT1 냉방 작동 불가', '냉방작동 중 2.5초 이상동안 CREF2 작동 feedback 신호가 수신되지 않는 경우', 'CREF2 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CREF2를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CREF2와 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('8a232aa3-e4c9-41ec-8c12-0197294f9c73', '0505', '505', 'DCU#7 5위(R3) - 출입문 입력 고전압', 'M4', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 “1”이 되면 검지 +', '고전압 상태(그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상 +', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('8a233dff-fbd5-4e67-b5f7-60eeb04bae9a', '0502', '502', 'DCU#4 4위(L2)-출입문 장애물검지', 'T1', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('8a31bb4c-5779-4a6d-abe5-3d4215452594', '0058', '58', 'AUX FUSE DISCONNECTED(Car7)', 'M4', 'W', 'AUX FUSE DISCONNECTED(Car7)', 'W', '기타', '차량으로부터 AUX FUSE DISCONNECTED 신호 입력 시 +', 'SIV 고압 차단으로 AC전원 전체 “OFF”', '해당 퓨즈 소손 +', '해당 퓨즈 교체', null, '회로 도면 : REC20210DX0', '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('8a337dde-cfb8-4967-b049-1006626711b5', '1200', '1200', 'FDU#6 통신고장', 'M3', 'B', 'FDU 통신고장', 'B', 'FDU', 'FDU와 TCMS 간 RS485 통신고장이 검지되면 발생 +', '화면상 FDU의 화재검지신호 등의 데이터가 반응하지 않음.', 'FDU 통신고장 또는 통신케이블문제 +', 'TCMSSDR 신호에 의해 FDU로부터 SD 신호가 정상 수신된 경우', '1) FDU 및 TCMS의 전원을 리셋하여 소거여부 확인 +2) 통신 고장이 발생하지 않은 다른 차량의 수신기와 교체하여 소거 여부 확인(고장이 수신기를 따라가는지 확인) +3) TCMS와 FDU간의 통신계통 점검 및 FDU NFB 점검 +4) 문제가 지속될 경우, 수신기 교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('8a4801ab-994f-46fc-b2f4-81f843038dc5', '0504', '504', 'DCU#4 6위(L3)-출입문 외부비상핸들 취급(EAD)', 'T1', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('8a48344c-1806-4768-b6e1-5bf387a08b2e', '0520', '520', 'DCU#2 6위(L3)-이중계 절체 동작', 'M1', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 "Module switchover' 신호가 "1"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.392739+00', null, '로템40량(2018)-1단계', 'Rotem'), ('8a4c235e-84a6-4122-8964-23a2128c92b4', '0519', '519', 'DCU#4 4위(L2) - ZVR 신호 에러', 'T1', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 “ZVR signal error” 신호가 “1”이 되면 검지 +', '출입문이강제로 닫히게 되고, 열림은 불가능', ' +1) 차량 ZVR 신호가 없는 상태(차량 주행상태)에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함. +', '해당 출입문 ZVR 신호 수신', '1) 차량 이 주행중이라면, 차량 이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('8a67a941-93cf-475c-b772-9129d7e4e03b', '0514', '514', 'DCU#4 2위(L1) - 출입문 닫힘 시간 초과', 'T1', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 “Close time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 닫힘 동작 시간이 7초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도한 후, ‘장애물로 인한 닫힘 실패' 고장과 함께 ‘Close time out' 고장이 함께 현시 +', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('8a962db1-8c49-4334-bc89-cb379455d406', '0172', '172', 'VVVF#6-접지검지(GRD)', 'M3', 'C', 'VVVF-접지검지(GRD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT33의 Bit5 “GRD” 신호가 "1"이 되면 검지.', null, '주 회로의 전류가 누설되었을 경우 고장 검지.', '동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) 인버터 유니트 내 IGBT의 소손 여부를 확인한다. +2) 고압에 의한 주 회로 소손 흔적을 확인한다. +3) 주회로 차단기함 내부의 고압회로에 소손이 없는지 확인한다. +4) GCT 외관 및 커넥터 체결상태 상태 점검. +5) 추진제어장치 시험기를 이용하여 TCU(통합 제어장치)의 이상여부를 확인한다. +6) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:37.578803+00', null, '로템40량(2018)-1단계', 'Rotem'), ('8a982347-cf71-4b03-b97a-2aa16357bc63', '0740', '740', 'HVAC#7-전자접촉기 증발기1(CREF) 고장', 'M4', 'C', 'HVAC-전자접촉기 증발기1(CREF) 고장', 'C', 'HVAC', 'HVAC 냉방작동 중 CREF1 전자접촉기 고장 발생.', 'UNIT1 냉방 작동 불가', '냉방작동 중 2.5초 이상동안 CREF1 작동 feedback 신호가 수신되지 않는 경우', 'CREF1 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CREF1을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CREF1과 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('8a997f90-aab2-4b4d-9f0e-b4b8292ed3f0', '0012', '12', 'TU 통신고장(Car7)', 'M4', 'B', 'TU 통신고장(Car7)', 'C', 'TCMS', 'M, T 차량의 차량제어장치(TU) 통신고장 +', '1) 해당 차호의 차량제어장치(TU)와의 통신불능 시 화면에 현시 +2) TU 통신 고장 시 해당호차의 VVVF, BECU, DCU, HVAC, FDU 등과의 통신도 불가 +(해당 차량의 출입문 열림/닫힘 정보도 현시 불가하므로 출입문 열림/닫힘 램프로 주의 운행) +3) 2호차(6호차) TU 통신 고장 시 판토상승/하강 명령 전달 불가(단, 이미 상승된 판토는 상승 유지됨.) +4) 4호차 TU 통신고장 시, 연장급전접촉기 출력이 불가', 'CU에서 TU의 통신정보를 약 3초 이상 수신 받지 못할 경우 해당 고장 현시 +', 'TU가 정상적으로 통신을 재개할 경우 소거됨.', '1) TU 전원차단기 리셋(OFF → ON) 실시 +2) SCM 보드의 전원 LED가 정상이라면, 멀티미터로 AVR 보드의 전원출력(5V)을 확인 +3) TU 상단의 커넥터 체결상태를 확인 +4) 상기 항목에 이상이 없을 경우 SCM 보드를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('8a9de528-0882-49f1-ba2e-651a2d6181b4', '0510', '510', 'DCU#6 4위(L2) - 출입문 닫힘 리미트 스위치1 고장', 'M3', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 “DCS1 Failure(Leftt)” 신호가 “1”이 되면 검지 +', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('8aa162a8-5f64-44c7-b758-50b269f3b2dc', '0914', '914', 'TRAIN RADIO#8-DID(표출연동장치) 고장', 'Tc2', 'C', 'TRAIN RADIO-DID(표출연동장치) 고장', 'C', 'RADIO', 'Train Radio의 RS485 데이터 중 Train Radio-TCMS SD TEXT15의 Bit2 “DID 고장” 신호가 "1"이 되면 검지.', 'CCTV 모니터 장치에 열차위치정보 표시 불가', 'HW 고장', '제어기 리셋', null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('8aaa814f-be2a-47ef-94f8-0ff15f1f9e6e', '1503', '1503', '난방장치용 AC 회로차단기 차단(Car7)', 'M4', 'W', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('8abd8e2a-d53e-4d6b-9fc5-6abd3557c357', '0217', '217', 'BECU#5-회생제동달성 비정상', 'T2', 'C', 'BECU-회생제동달성 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit0 “회생제동달성 비정상” 신호가 "1"이 되면 검지.', '해당 차량 회생제동달성 비정상 검지 현시 및 해당차량 정상적인 전공 교차제어 불가.', '해당 차량의 회생제동달성 신호가 정상범위를 벗어남(5.0~95.0%).', '해당 차량의 회생제동달성 신호가 정상범위일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. +소거되지 않을 경우 해당 차량 추진제어장치 리셋(CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('8adf69de-c395-4a79-bdc8-e77de7c454fb', '0905', '905', '비상인터폰 동작(Car#6-2)', 'M3', 'W', null, null, 'RADIO', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('8ae0d6a0-bbc1-4929-9557-7491cca67764', '0505', '505', 'DCU#5 3위(R2) - 출입문 입력 고전압', 'T2', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 “1”이 되면 검지 +', '고전압 상태(그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상 +', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('8aefccd9-3395-4c59-87ae-98155bda1bad', '1210', '1210', 'FDU#5 - 메모리 고장', 'T2', 'C', 'FDU-메모리 고장', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT5의 Bit6 “Memory Fault” 신호가 “1”이 되면 검지 +', '1) Memory Fault 현시 +2) FDU의 이벤트 기록 및 읽기 동작 안 됨. +3) FDU 환경설정 정보 로딩 실패(차량 번호, 주차시간, 절전시간 등의 설정값을 기본값으로 로딩)', '메모리 연결 포트의 이상 혹은 배드섹터 발생(메모리 접근 및 읽기, 쓰기가 실패한 경우) +', '메모리의 접근 및 읽기, 쓰기 성공', '1) FDU의 전원을 리셋하여 소거여부 확인 +2) 문제가 지속될 경우, 수신기 교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('8af0cd17-685d-4cc6-b545-f559509d044a', '0716', '716', 'HVAC#7 - 냉난방장치1 압력스위치1(DPS) 고압', 'M4', 'D', 'HVAC-냉난방장치1 압력스위치1(DPS) 고압', 'D', 'HVAC', '냉난방장치1 냉매 압력스위치2 고압 발생 +', 'UNIT1CYCLE1 냉방기능불가', 'UNIT1DSP1측 냉매압력이 3초 이상 28±1(kgf/cm2) 이상 되는 경우 +', '냉매압력이 정상수치 15±0.7(kgf/cm2) 이하로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CRCM1의 부하측 전류를 측정하여 응축기 팬의 동작여부를 확인한다. +2) 응축기 코일의 전면에 이물질로 인한 막힘이 있는지 확인한다. +3) 응축기 팬 상부 그릴에 외부 이물질로 인한 막힘이 있는지 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('8b01e854-f224-4067-87be-ac94f7000b90', '0237', '237', '보안제동코크 차단(Car7)', 'M4', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('8b07a84f-2dc6-4963-90ab-d943aa80f83e', '0518', '518', 'DCU#5 5위(R3)-출입문 Enable 신호 에러', 'T2', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 "Enable signal error” 신호가 "1"이 되면 검지.', 'DCU 출입문 Enable 신호 에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) 취급시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함.', '해당출입문 enable 신호 수신', '1) AUTO/MCS 모드시에는 YARD모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인한다. (YARD/FMC 모드시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.392739+00', null, '로템40량(2018)-1단계', 'Rotem'), ('8b15c816-5831-459e-8c85-fc940ca3db29', '0517', '517', 'DCU#5 2위(L1) - 출입문 장애물로 인한 열림 실패', 'T2', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Open failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘 상태로 대기', '도어열림 중 3회 장애물감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 열림 시, 장애물감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('8b309c76-ba74-47c7-b6c6-d4656eb2161a', '0717', '717', 'HVAC#3 - CO2 센서2 고장', 'M2', 'C', 'HVAC-CO2 센서2 고장', 'C', 'HVAC', '객실 CO2 센서2 고장 발생 +', 'CO2 센서2 고장 현시', 'CO2 센서의 검지범위는 0 ~ 4,000ppm(2 ~ 10Vdc)인데, 1초 이상 출력전압이 2Vdc(0ppm) 미만으로 떨어지는 경우 +', 'CO2 센서 검지값이 1초 이상 2Vdc(0ppm) 이상 지속되는 경우', '1) 전원을 인가한 상태에서 CO2 센서 커버를 열고 테스터기를 통해 ‘OUT2' 단자와 ‘G' 단자 간의 전압이 2Vdc 미만인지 확인한다. +2) 만약 전압이 2Vdc 이상인데도 고장이 지속될 경우 마이콤을 교체한다. +3) 만약 전압이 2Vdc 미만으로 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('8b314a6f-b254-4807-93b2-1474f4456a02', '0813', '813', '출력증폭기#1(AMP) 고장(Car#1)', 'Tc1', 'C', '통합방송표시기-출력증폭기#1(AMP) 고장', 'C', 'TCMS', '통합방송표시기의 RS485 데이터 중 통합방송표시기-TCMS SD TEXT9의 Bit5 “AMP#1 고장” 신호가 "1"이 되면 검지.', '고장장치 통신 불량으로 실내 출력 반절 불능', '마스터 통합방송제어기에 주기적(2초) TCP 응답이 없을 경우 통신 불량으로 판단', '마스터 통합방송제어기에 TCP 응답 재개', '관련 CB(방송/표시기/CCTV 전원공급장치1, CBPAU# +1) 리셋하고 통신라인 및 상태 점검. +관련도면 RES12001HN0, REC70700HN0', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('8b33a68c-0c40-4959-adc1-667912164cbd', '0027', '27', '장애물 검지 후 출입문 닫힘 스위치 취급', 'Tc2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('8b5997ee-0315-43e8-b638-9c6e1ab762ae', '0747', '747', 'HVAC#5-전자접촉기 차량히터2(CRRHT) 고장', 'T2', 'C', 'HVAC-전자접촉기 차량히터2(CRRHT) 고장', 'C', 'HVAC', '객실 난방기 작동 중 CRRHT2 전자접촉기 고장 발생.', '객실 전난방 시 1/3난방만 작동', '객실 전난방 작동 중 2.5초 이상동안 CRRHT2 작동 feedback 신호가 수신되지 않는 경우', 'CRRHT2 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CRRHT2를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRRHT2와 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('8b5d4758-3749-4f9a-9c40-befebade17b7', '0700', '700', 'HVAC#5 통신고장', 'T2', 'C', 'HVAC-통신고장', 'C', 'HVAC', 'HVAC와 TCMS 간 RS485 통신고장이 검지되면 발생 +', '화면상 HVAC의 실내온도, 운전모드 등의 데이터가 반응하지 않음.', ' +1) 마이콤 전원 CB OFF +2) 통신연결 불량 +3) 해당 마이콤이 검수요원에 의해 firmware 업데이트 중인 경우 +', '해당 차량의 마이콤 및 CU/TU의전원이정상상태이고, 통신라인 연결 상태가 정상', '1) 냉난방 배전반의 점검커버를 열고, 마이콤이 정상적으로 켜져 있는지 확인한다. +2) 만약 마이콤 전원이 꺼져 있다면, 마이콤 DC 전원 CB 및 차량 배전반에 위치한 냉난방장치 CB가 정상적으로 켜져 있는지 확인한다. +3) 마이콤이 정상적으로 켜져 있는 데도 지속적으로 통신고장이 검지되면, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀 밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('8b5ed116-d5d2-42ff-9ad2-97b9b4955a09', '0515', '515', 'DCU#2 2위(L1)-출입문 열림 시간 초과', 'M1', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 "Open time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 열림 동작시간이 6초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도 한 후, '장애물로 인한 열림실패' 고장과 함께 'Open time out' 고장이 함께 현시', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('8b5fcd00-aff2-482b-a89a-3e56119ca184', '0513', '513', 'DCU#4 5위(R3) - 모듈 상태체크 에러', 'T1', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 “Module check error” 신호가 “1”이 되면 검지 +', 'Modulecheckerror현시(출입문은 정상작동가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태 체크 기능에 이상이 생긴 경우 고장 발생 +', 'DCU의 ‘A' 모듈과 ‘B' 모듈 간, 상태 체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('8b68a876-3c1d-4bb8-a463-9ce82fbbd8df', '0207', '207', 'BECU#4-자기진단고장', 'T1', 'C', 'BECU-자기진단고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit6 “RAM 점검 고장” 신호가 "1"이 되면 검지.', '해당 차량 자기진단고장 검지 현시 및 해당 차량 활주제어 불가.', '해당 차량 BECU의 자가진단 시 고장 발생(활주방지밸브 고장).', '해당 차량 BECU의 자가진단 시 정상적일 경우 소거(활주방지밸브 정상).', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('8b691216-ea1e-4c1e-86c2-9cf48f56d367', '0520', '520', 'DCU#3 3위(R2)-이중계 절체 동작', 'M2', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 "Module switchover' 신호가 "1"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.392739+00', null, '로템40량(2018)-1단계', 'Rotem'), ('8b73f37a-c0a3-46ba-9add-8f6729fa3a5a', '1509', '1509', '열차분리#1 검지(Car5)', 'T2', 'B', '열차분리#1 검지', 'B', 'TCMS', '차량의 열차분리#1 검지 +', '1) 1위측 열차검지신호(SOTS1) 검출 시 화면에 현시 +2) 실제 열차분리 시 검지되었는지 확인 필요 +(실제 열차분리 시 다른 차량 이 접근하지 못하도록 선조치 필요) +3) 실제 열차 분리 시 비상제동 안전루프에 의해 비상제동 체결됨. +4) 열차 분리에 따라 분리 위치부터 차량제어장치(TU)와 반대편 편성제어장치(CU)의 통신고장 동반 발생', 'TU의 1위측 열차분리신호(SOTS1) 신호 활성(LOW) 입력 시 고장 현시 +', 'TU의 1위측 열차분리신호(SOTS1) 신호 정상(HIGH) 입력 시 소거됨.', '1) 실제 열차분리 시 관제에 연락하고, 지시에 따름 +2) 회로 차단기 ELCB ON 상태 확인 +3) TU의 1위측 열차분리신호 DIM3 PCB의 입력채널(SOTS +1) 점검/교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('8b77d537-c29c-42cb-be67-5c799d5d8b7a', '1515', '1515', 'CU2 모듈고장 - DIM2(Car8)', 'Tc2', 'C', 'CU1, 2 모듈고장 - DIM2', 'C', 'TCMS', 'CU의 DIM2 PCB가 이 정상적으로 인식되지 않아 점검이 필요할 때 +', '1) CU1의 DIM2 PCB가 모듈 고장이 발생하면, CU2로 자동 절체됨. (CU2로 자동 절체되면, 운행 에는 지장이 없음.) +2) CU2 자동 절체 시 화면의 우측 상단 경고장글자 하단에 “B.SYS” 라는 표시가 나타남. +3) 자동절체 시 열차 운행에는 관계없음. +4) CU2의 DIM2 모듈고장 시는 CU1 정상동작 시 운행에는 지장이 없음.', 'CU DIM2의 ID를 정상적으로 검출하지 못할 때 화면에 현시 +', 'CU DIM2의 ID를 정상적으로 검출하는 경우 소거됨.', '1) CU의 DIM2 PCB 교체 +2) 불량 해소가 되지 않을 경우, 순차적으로 MCPU, SCM, AUX PCB를 교체하여 정상여부 확인', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('8b7c5e14-6d9c-4933-8e31-d1bd666b9f8b', '1209', '1209', 'FDU#4 - 스위치 고장', 'T1', 'C', 'FDU-스위치 고장', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT5의 Bit4 “Switch Fault” 신호가 “1”이 되면 검지 +', 'Switch Fault 현시 및 FDU의 조작버튼 동작 안 됨(화재검지 및 기타 기능에는 상관없음)', ' +1) FDU가 부팅될 때 스위치가 눌려진 상태(3.3V 전압이 인가된 상태)인 경우 +2) FDU가 부팅될 때 스위치 고장으로 인하여 항상 눌러진 상태(3.3V 전압이 인가된 상태)에 있는 경우 +', 'FDU가 부팅될 때 스위치가 눌려진 상태(3.3V 전압이 인가된 상태)가 아닌 경우', '1) 고장이 발생한 수신기의 스위치 상태 확인 및 점검 +2) FDU의 전원을 리셋하여 소거여부 확인 +3) 문제가 지속될 경우, 수신기 교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('8b813a62-1749-434a-ab61-8cc62790abce', '0515', '515', 'DCU#2 6위(L3) - 출입문 열림 시간 초과', 'M1', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 “Open time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 열림 동작시간이 6초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도한 후, ‘장애물로 인한 열림 실패' 고장과 함께 ‘Open time out' 고장이 함께 현시 +', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('8b86a360-5bb6-418b-bf80-8d5ed807d86f', '0510', '510', 'DCU#8 3위(R2) - 출입문 닫힘 리미트 스위치1 고장', 'Tc2', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 “DCS1 Failure(Leftt)” 신호가 “1”이 되면 검지 +', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('8b9ba620-9f17-4429-872f-9261afb9a177', '0503', '503', 'DCU#8 4위(L2) - 출입문 내부 비상핸들 취급(EED)', 'Tc2', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('8bd60f1d-13df-403d-81b3-df9f5a9bdbea', '0178', '178', 'VVVF#2 - LB2 고착(LB2NO)', 'M1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('8bdbc086-a448-4d02-98db-b036df0f1169', '0750', '750', 'HVAC#4-냉난방장치2 보조히터 과열', 'T1', 'C', 'HVAC-냉난방장치2 보조히터 과열', 'C', 'HVAC', 'HVAC2 보조난방기 작동 중 과열 발생.', 'UNIT2 보조난방기 난방 불가', '보조난방기 작동 중 1초 이상동안 온도가 70도 이상으로 과온센서 정상 신호가 수신되지 않는 경우', '1초 이상동안 60도 미만으로 온도가 떨어져 과온센서 정상 신호가 수신되는 경우', '1) 보조난방기가 꺼진 상태에서도 문제 발생 시, 과온 센서를 교체한다. +2) 센서 교체 후에도 문제가 발생되면, 배선에 문제가 없는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('8be47425-fc5b-4b1d-ba83-e07e8a4ce116', '0509', '509', 'DCU#5 5위(R3)-출입문 잠김 리미트 스위치 고장', 'T2', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 "DLS Failure” 신호가 "1"이 되면 검지.', '출입문 잠김 상태 확인 불가', '1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('8bec6d59-3cbf-4c38-8d6f-a087c221a54e', '0520', '520', 'DCU#1 1위(R1)-이중계 절체 동작', 'Tc1', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 "Module switchover' 신호가 "1"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.392739+00', null, '로템40량(2018)-1단계', 'Rotem'), ('8bf51971-bb0c-491f-a7ba-5613f90f1fdd', '1204', '1204', 'FDU#1-감지기2 고장', 'Tc1', 'C', 'FDU-감지기2 고장', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 "Detector1 State” 신호가 "10"이 되면 검지.', '감지기 고장상태 현시(자동 소거 안됨)', '1) 감지기로부터 데이터 응답이 없는경우. +2) 감지기로부터 수신된 데이터의 CRC가 맞지 않는경우 +3) 감지기로부터 수신된 데이터의 ID가 송신 ID와 일치하지 않는경우', 'FDU 전원 리셋 후 감지기로부터 정상적으로 데이터가 수신된 경우', '1) FDU 전원 리셋 후 고장 소거 여부 확인 +2) 정상 동작중인 감지기와 위치 교환 후 FDU 전원 리셋 및 고장 상태 확인 +3) 동일한 감지기에서 고장 발생시 감지기 교체 +4) 동일한 위치에서 고장 발생시 감지기 라인 점검', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('8bf6ad2e-97f3-44ff-b49e-f6804f989ac2', '0511', '511', 'DCU#8 4위(L2) - 출입문 닫힘 리미트 스위치2 고장', 'Tc2', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 “DCS2 Failure(Right)” 신호가 “1”이 되면 검지 +', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('8bf7550e-eabd-4b00-89b4-f93a277ff3c5', '0521', '521', 'DCU#1 5위(R3)-모듈 상태 이상', 'Tc1', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 "01"또는 "00"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('8bf966e5-8c08-48ab-912b-f5f38e7b3a74', '0706', '706', 'HVAC#1 - 냉난방장치1 증발기2 과부하', 'Tc1', 'C', 'HVAC-냉난방장치1 증발기2 과부하', 'C', 'HVAC', 'HVAC 냉방 작동 중 냉난방장치1 증발기 모터에 과부하 발생 +', 'UNIT1냉방 작동 불가', ' +1) 냉방 작동 중 UNIT1의 증발기 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CREF2와 연결된 THR6이 Trip 됨. +', 'UNIT1의 증발기모터의 과부하조건을 해소하여 정상 가능 상태로 만들고, THR6 및 마이콤 전원 리셋', '1) 냉난방 배전반의 점검커버를 열고, THR6의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR6의 전류 세팅값이 3A에 맞춰져 있는지 확인하여, 아닐 경우, (+) 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동시킨 후, THR6의 2차측 2, 4, 6 단자에서 각 단자 간 상간 전압이 AC 380V로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 증발기 단품 상태 에서 점검을 한다. +7) THR6의 2차측 2, 4, 6 단자에서 각 단자 간 권선저항이 모두 같은지 확인한다. (±10% 이하) (증발기 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT1의 증발기 모터의 결선을 해제한 후 4극 및 6극 모터의 권선저항을 확인 후, 문제가 있을 경우, 증발기 모터를 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR6 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('8bfe656e-c32c-4130-99d6-b67c1fbe3d19', '0504', '504', 'DCU#8 1위(R1) - 출입문 외부 비상핸들 취급(EAD)', 'Tc2', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('8c01816f-bfb9-4f6e-a21a-cd28d59bb1ac', '0508', '508', 'DCU#4 3위(R2)-출입문 모터/인코더 고장', 'T1', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 "Motor / Encoder failure” 신호가 "1"이 되면 검지.', '출입문 정상동작 불가', '1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우 (인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터 / 인코더 회로가 손상된 경우', '모터/인코더 및 DCU가 정상상태이고, 전기적 연결상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있느지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. +★ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. + +1. DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. +2. DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) +3. DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('8c0215fb-1e95-4a5a-b1c3-32f2d6a87896', '0501', '501', 'DCU#5 1위(R1) - 출입문 차단', 'T2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('8c25b7e0-961e-4e31-a15e-b80ef5268b50', '0068', '68', 'MAIN FUSE#2 DISCONNECTED(Car5)', 'T2', 'W', 'MAIN FUSE#2 DISCONNECTED(Car5)', 'W', 'TCMS', '차량으로부터 AUX FUSE DISCONNECTED 신호 입력시', 'VVVF고압 차단으로 추진 불능', '해당 퓨우즈 소손', '해당 퓨우즈 교체', null, ' +REC20210HN0', '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('8c2f6da9-cebf-436f-b606-6b9c3ce02f77', '0502', '502', 'DCU#6 6위(L3)-출입문 장애물검지', 'M3', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('8c35ba16-1f62-4773-af07-d8bcbf01bb39', '0184', '184', '역행관련 회로차단기 차단(Car8)', 'Tc2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('8c3ff844-9b58-4456-9ebc-3a063f9d3be3', '0517', '517', 'DCU#3 3위(R2) - 출입문 장애물로 인한 열림 실패', 'M2', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Open failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘 상태로 대기', '도어열림 중 3회 장애물감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 열림 시, 장애물감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('8c464580-ce12-47ab-84eb-4ebbb17c41b1', '0515', '515', 'DCU#8 5위(R3) - 출입문 열림 시간 초과', 'Tc2', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 “Open time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 열림 동작시간이 6초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도한 후, ‘장애물로 인한 열림 실패' 고장과 함께 ‘Open time out' 고장이 함께 현시 +', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('8c514bc9-a506-435b-9bc7-dfa0e78a3fcd', '0518', '518', 'DCU#5 3위(R2) - 출입문 Enable 신호 에러', 'T2', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 “Enable signal error” 신호가 “1”이 되면 검지 +', 'DCU 출입문Enable신호에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드 시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을 때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드 시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입 상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호 장치로부터의 출입문 열림 명령 신호) 취급 시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함. +', '해당 출입문 enable 신호수신', '1) AUTO/MCS 모드 시에는 YARD 모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인 한다. (YARD/FMC 모드 시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('8c5481d5-4c1f-4d80-8872-8522a2d7de7c', '0513', '513', 'DCU#6 3위(R2)-모듈 상태체크 에러', 'M3', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 "Module check error” 신호가 "1"이 되면 검지.', 'Module check error 현시 (출입문은 정상작동 가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태체크 기능에 이상이 생긴 경우 고장 발생.', 'DCU의 'A'모듈과 'B'모듈 간, 상태체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('8c56699b-0d24-477a-bce0-bcd94db14889', '0509', '509', 'DCU#7 1위(R1) - 출입문 잠김 리미트 스위치 고장', 'M4', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 “DLS Failure” 신호가 “1”이 되면 검지 +', '출입문 잠김 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('8c630e97-a903-48a9-aa88-4a64db4e010d', '0509', '509', 'DCU#2 6위(L3) - 출입문 잠김 리미트 스위치 고장', 'M1', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 “DLS Failure” 신호가 “1”이 되면 검지 +', '출입문 잠김 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('8c77cefd-806b-408f-a7a9-60f390906c93', '0308', '308', 'ATC#8 - 40코드 기동시험 실패 EB체결', 'Tc2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('8c879bd2-54a1-4cca-9a7a-5465bed17485', '0156', '156', 'VVVF#3 - 전진/후진 이상검지(FRD)', 'M2', 'C', 'VVVF-전진/후진 이상 검지(FRD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT31의 Bit5 “FRD” 신호가 “1”이 되면 검지 +', '1) TCMS 화면 하단 또는 고장화면에 ‘전진/후진 신호 이상 검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생함. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉은색으로 표기되며, HSCB, LB1, 2 개방되어 동력 손실 발생함.', '추진제어장치 입력되는 역행/제동신호가 동시에 입력될 경우 검지됨. +', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반 배전반의 VVVFIC nfb 재투입 또는 차량 배터리 전원 재투입', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 전진/후진신호에 이상이 있는지 확인한다. +3) 차량의 제어 회로 중 전진/후진 신호가 추진제어장치로 연결되는 경로에 이상이 없는지 확인 한다. +4) DIN 보드의 동작 상태를 시험기를 통해 확인한다. +5) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('8c9794ce-9fbe-4223-ba1f-87a22927c21a', '0916', '916', 'TRAIN RADIO#1-열차번호 변경 설정', 'Tc1', 'W', null, null, 'RADIO', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('8cac10d6-0a69-43cd-b359-7635e2b25fe9', '0505', '505', 'DCU#8 6위(L3)-출입문 입력 고전압', 'Tc2', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 "1"이 되면 검지.', '고전압 상태. (그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('8cac4318-af87-4acf-a9e3-db3ec7880b49', '1201', '1201', 'FDU#1-감지기1 화재감지', 'Tc1', 'W', 'FDU-감지기1 화재감지', 'W', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 "Detector1 State” 신호가 "11"이 되면 검지.', '화재상태 현시(자동 소거 안됨)', '하기 2가지 조건을 모두 만족하여야 화재신호가 출력 됨(연동모드 동작). +1) 이웃한(앞 혹은 뒤에 위치한) 감지기 중 하나의 감지기라도 주의 혹은 화재상태에 있어야 함. +2) Detector1(해당 감지기)에서 측정된 연기농도가 15% 이상이거나 온도가 65℃ 이상인 경우', '1) FDU의 복귀버튼 조작시 +2) FDU 전원 리셋시', '1) 해당 감지기 위치의 화재 발생 여부 확인 +2) 화재 오 감지일경우 FDU의 복귀버튼 취급 +3) 오감지일경우 감지기의 청소주기 확인(내부 먼지 제거)', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('8cb0b9a5-ccc7-4e7a-adb1-846297f3b2cf', '0222', '222', 'BECU#6 - 공기스프링 누설(후미대차)', 'M3', 'C', 'BECU-공기스프링누설(후미대차)', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit5 “공기스프링누설(후미대차)” 신호가 “1”이 +되면 검지 +', '해당 차량 공기스프링 누설(후미대차) 검지 현시 및 해당 차량 정상적인제동제어 불가 (응하중제어)', '해당 차량 후미대차의 공기스프링(AS3, AS4) 압력이 정상범위를 벗어남. (100kPa 미만) +', '해당 차량 후미대차의 공기스프링(AS3, AS4) 압력이 정상범위일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('8cd6a870-f1c5-41fb-be97-d11492660426', '0500', '500', 'DCU#8 6위(L3) 통신고장', 'Tc2', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS간 RS485 통신고장이 검지되면 발생.', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐 상태 등의 변화가 없음.', '1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우', '해당차량의 DCU 및 CU/TU 의 전원이 정상상태이고, 통신라인 연결상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜저 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는데도 지속적으로 통순고장이 검지되면, DCU의 X2,X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('8cdf7c15-d52c-4ab3-97c6-d95426224685', '0217', '217', 'BECU#8 - 회생제동달성 비정상', 'Tc2', 'C', 'BECU-회생제동달성 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit0 “회생제동달성 비정상” 신호가 “1”이 되면 검지 +', '해당 차량 회생제동달성비정상 검지 현시 및 해당 차량 정상적인 전공교차제어 불가', '해당 차량의 회생제동 달성 신호가 정상범위를 벗어남. (5.0 ~ 95.0%) +', '해당 차량의 회생제동달성신호가정상범위일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 소거되지 않을 경우 해당 차량 추진제어장치 리셋(CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르 시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('8ce17f8a-7d35-411c-9b96-2a02f4da62a5', '0743', '743', 'HVAC#1 - 전자접촉기 보조히터2(AHEK) 고장', 'Tc1', 'C', 'HVAC-전자접촉기 보조히터2(AHEK) 고장', 'C', 'HVAC', 'HVAC 보조난방기 작동 중 AHEK2 전자접촉기 고장 발생 +', 'UNIT1 보조난방기 전난방 시 반난방만 작동', '보조난방기 작동 중 2.5초 이상 동안 AHEK2 작동 feedback 신호가 수신되지 않는 경우 +', 'AHEK2 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) AHEK2를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, AHEK2와 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('8cedec6c-5d80-4ae4-9f1f-a3301a07038b', '0753', '753', 'HVAC#5 - 배기댐퍼 열림고장', 'T2', 'C', 'HVAC-배기댐퍼 열림고장', 'C', 'HVAC', '환기 시, 차량 배기댐퍼가 열려 있는 상태에서 배기댐퍼 열림 리미트 스위치가 작동되지 않음 +', '배기댐퍼 열림 고장 현시', '배기댐퍼를 열림으로 제어했으나 열림 리미트 스위치 입력이 없을 경우 +', '배기댐퍼 열림상태에서 리미트 스위치 입력이 정상적으로 입력', '1) 배기댐퍼가 열린 상태에서 열림 리미트 스위치가 정상적으로 작동되었는지 확인한다. +2) 열림 리미트 스위치가 정상작동 되었음에도 문제가 발생될 경우, 스위치를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('8d01c0e6-f5af-4a81-9cc6-2d22aeae69bf', '0315', '315', 'ATC#1 - 타코미터 이상', 'Tc1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('8d044ece-0059-44f9-af6a-62924f1b2f8a', '0178', '178', 'VVVF#3 - LB2 고착(LB2NO)', 'M2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('8d057984-f5fc-4824-8710-6b2125435392', '0405', '405', 'SIV#1-AC 출력과전류(ACOC)', 'Tc1', 'C', 'SIV-AC 출력과전류(ACOC)', 'C', 'SIV', '보조전원장치(SIV)의 RS485 데이터 중 SIV-TCMS SD TEXT4의 Bit3 “ACOC” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 'SIV AC 출력과전류 검지' 표시됨. +2) 보조전원장치(SIV)는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 보조전원장치 중고장이 발생됨. +5) 중고장이 발생되면 TCMS 일반화면에 보조전원장치 상태 붉을색으로 표기되며, 연장급전 됨.', '보조전원장치(SIV)에서 출력되는 AC U, V, W 상의 전류가 700A 이상일 경우 검지됨.', '1) 경고장이 발생할 경우 보조전원장치(SIV) 자동 재기동에 의해 재기동 됨. +2) 중고장이 발생했을 경우 조치 완료 후 보조전원장치(SIV) 리셋으로 고장 소거됨.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 보조전원장치(SIV) 고장기록을 수집하여 출력되는 3상의 AC 전류치 확인함. +3) 특정상의 전류치가 비정상적일 경우 특정상에 해당되는 GDU, 전류센서, AC 출력단 결선을 확인한다. +4) 전류센서와 보조전원장치(SIV) 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작상태를 시험기를 통해 확인한다. +6) 출력단 각 상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +7) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('8d07e41f-fcab-4b15-a6a4-a527c6f88df1', '0737', '737', 'HVAC#3-전자접촉기 증발기4(CREF) 고장', 'M2', 'C', 'HVAC-전자접촉기 증발기4(CREF) 고장', 'C', 'HVAC', 'HVAC 냉방작동 중 CREF4 전자접촉기 고장 발생.', 'UNIT2 냉방 작동 불가', '냉방작동 중 2.5초 이상동안 CREF4 작동 feedback 신호가 수신되지 않는 경우', 'CREF4 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CREF4를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CREF4와 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('8d1cb64b-decd-4a83-86f2-fff655023350', '0521', '521', 'DCU#6 1위(R1) - 모듈 상태 이상', 'M3', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 “01” 또는 “00”이 되면 +검지 +', '이중계절체동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러)이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('8d29a2c7-fefd-443e-b98f-16258acb293a', '0705', '705', 'HVAC#8 - 냉난방장치2 증발기2 과부하', 'Tc2', 'C', 'HVAC-냉난방장치2 증발기2 과부하', 'C', 'HVAC', 'HVAC 냉방 작동 중 냉난방장치2 증발기 모터에 과부하 발생 +', 'UNIT2냉방기능불가', ' +1) 냉방 작동 중 UNIT2의 증발기 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CREF4와 연결된 THR8이 Trip 됨. +', 'UNIT2의 증발기모터의 과부하조건을 해소하여 정상 가능 상태로 만들고, THR8 및 마이콤 전원 리셋', '1) 냉난방 배전반의 점검커버를 열고, THR8의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR8의 전류 세팅값이 3A에 맞춰져 있는지 확인하여, 아닐 경우, (+) 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동시킨 후, THR8의 2차측 2, 4, 6 단자에서 각 단자 간 상간 전압이 AC 380V로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 증발기 단품 상태에서 점검을 한다. +7) THR8의 2차측 2, 4, 6 단자에서 각 단자 간 권선저항이 모두 같은지 확인한다. (±10% 이하) (증발기 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT2의 증발기 모터의 결선을 해제한 후 4극 및 6극 모터의 권선저항을 확인 후, 문제가 있을 경우, 증발기 모터를 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR8 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('8d2d01fe-85dd-4835-aaa0-c9becb2c736e', '0515', '515', 'DCU#8 4위(L2)-출입문 열림 시간 초과', 'Tc2', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 "Open time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 열림 동작시간이 6초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도 한 후, '장애물로 인한 열림실패' 고장과 함께 'Open time out' 고장이 함께 현시', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('8d37da8c-33d8-448f-a7d1-18b0015acd68', '0516', '516', 'DCU#8 4위(L2)-출입문 장애물로 인한 닫힘 실패', 'Tc2', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Close failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림상태로 대기', '도어 닫힘 중 3회 장애물 감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('8d3c2e50-d94d-4f84-a3e7-a0efa531b326', '1210', '1210', 'FDU#7-메모리 고장', 'M4', 'C', 'FDU-메모리 고장', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT5의 Bit6 “Memory Fault” 신호가 "1"이 되면 검지.', '1) Memory Fault 현시 +2) FDU의 이벤트 기록 및 읽기 동작 안됨. +3) FDU 환경설정 정보 로딩 실패(차량번호, 주차시간, 절전시간등의 설정값을 기본값으로 로딩)', '메모리 연결 포트의 이상 혹은 배드섹터 발생(메모리 접근 및 읽기, 쓰기가 실패한 경우)', '메모리의 접근 및 읽기, 쓰기 성공', '1) FDU의 전원을 리셋하여 소거여부 확인 +2) 문제가 지속될 경우, 수신기 교체', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('8d42690e-01a3-45de-939f-5daf583e0779', '1414', '1414', 'BMS#8-', 'Tc2', '0', null, null, '0', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('8d430337-69a0-40a2-983f-37c31f60a752', '0720', '720', 'HVAC#5 - 실내온도 센서1 고장', 'T2', 'C', 'HVAC-실내온도 센서1 고장', 'C', 'HVAC', '객실 실내온도 센서1 고장 발생 +', '실내온도센서1 고장 현시', '온도센서 검지범위는 -45 ~ 85도(820 ~ 1,330Ω)인데, 2초 이상 검지범위를 벗어나는 경우 +', '온도센서 검지값이 2초 이상 허용온도 범위 내일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820 ~ 1,330Ω을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('8d5e385b-578a-447b-b74e-fb7ccbb7bf5d', '0503', '503', 'DCU#1 5위(R3) - 출입문 내부 비상핸들 취급(EED)', 'Tc1', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('8d65d3f3-462a-4cf9-ab5b-cfcea462bcd7', '0735', '735', 'HVAC#8 - 전자접촉기 압축기(CRCM)2 고장', 'Tc2', 'C', 'HVAC-전자접촉기 압축기(CRCM)2 고장', 'C', 'HVAC', 'HVAC 냉방 작동 중 CRCM2 전자접촉기 고장 발생 +', '냉방 기능 저하(전냉방 시 반냉방으로 작동)', '냉방 작동 중 2.5초 이상 동안 CRCM2 작동 feedback 신호가 수신되지 않는 경우 +', 'CRCM2 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CRCM2를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRCM2와 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('8d8e09db-f5ce-4a7d-987c-e697aae0b983', '0177', '177', 'VVVF#7 - LB1 투입불량(LB1NC)', 'M4', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('8d912374-ca8c-4e0f-acf4-59fdee7d67ed', '0408', '408', 'SIV#1 - 인버터1 입력과전압(INV1OV)', 'Tc1', 'C', 'SIV-인버터1 입력 과전압(INV1OV)', 'C', 'SIV', '보조전원장치(SIV)의 RS485 데이터 중 SIV-TCMS SD TEXT4의 Bit6 “INV1OV” 신호가 “1”이 되면 검지 +', '1) TCMS 화면하단 또는 고장화면에 ‘인버터2 입력 과전압(INV1OV)' 표시됨. +2) 보조전원장치(SIV)는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 보조전원장치(SIV) 중고장이 발생함. +5) 중고장이 발생되면 TCMS 일반화면에 보조전원장치(SIV) 상태 붉은색으로 표기되며, 연장급전 됨.', '보조전원장치(SIV) 내부 인버터2의 FC 전압이 1,200V 이상일 경우 검지됨. +', '1) 경고장이 발생할 경우 보조전원장치(SIV) 자동 재기동에 의해 재기동 됨. +2) 중고장이 발생했을 경우 조치 완료 후 보조전원장치(SIV) 리셋으로 고장 소거됨.', '1) 상기 고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 보조전원장치(SIV) 고장기록을 수집하여 FC전압에 이상이 있는지 확인한다. +3) 보조전원장치(SIV) 내부 고전압부에 소손흔적이 있는지 확인한다. +4) FC에 연결된 부스바의 체결상태가 양호한지 확인한고, 부스바를 분리하여 FC의 Capacitance를 측정하여 이상이 없는지 확인한다. +5) 전압센서와 보조전원장치(SIV) 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +6) SEN 보드의 동작 상태를 시험기를 통해 확인한다. +7) 출력단 각상의 절연상태 및 각상과 접지 간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('8d984fb3-26f4-46b9-980f-9626b3ad1dff', '1702', '1702', 'PIC#8 반대편 PIC와의 통신고장', 'Tc2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('8dae168b-be04-4271-8a31-6de8ac058e3d', '0712', '712', 'HVAC#4-냉난방장치2 압력스위치1(DPS) 고압', 'T1', 'D', 'HVAC-냉난방장치2 압력스위치1(DPS) 고압', 'D', 'HVAC', '냉난방장치2 냉매 압력스위치1 고압 발생.', 'UNIT2 CYCLE1 냉방 기능 불가', 'UNIT2 DSP1측 냉매 압력이 3초 이상 28±1(kgf/cm2) 이상 되는 경우', '냉매 압력이 정상 수치 15±0.7(kgf/cm2 이하로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CRCM3의 부하측 전류를 측정하여 응축기 팬의 동작여부를 확인한다. +2) 응축기 코일의 전면에 이물질로 인한 막힘이 있는지 확인한다. +3) 응축기 팬 상부 그릴에 외부 이물질로 인한 막힘이 있는지 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('8daf8a86-c6f7-4388-9122-bf160b4fe8e8', '0235', '235', '제동력부족(ISBD, Car5)', 'T2', 'B', '제동력부족(ISBD)', 'B', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit3 “ISBD” 신호가 “1”이 되면 검지 +', '해당 차량 제동력부족검지 현시 및 해당 차량 제동압력(BCP)이 타 차량에 비해 현저히 낮음.', '제동 7단 취급 시 해당 차량의 제동압력이 생성되지 않음. +', '제동 7단 취급 시 정상적인제동압력이 생성된 경우 소거', 'MCS 모드로 전환 후, 마스콘을 N(중립) → 제동 7단까지 수 회 취급하여 소거 여부 확인, 제동 취급 확인 후, 주의 운전할 것, 지속발생 시 관제보고하고 지시에 따를 것', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('8dbcfe7c-3a51-48f5-8b85-95a390967540', '0510', '510', 'DCU#5 1위(R1)-출입문 닫힘 리미트 스위치1 고장', 'T2', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 "DCS1 Failure(Leftt)” 신호가 "1"이 되면 검지.', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('8dbf777f-7cb6-4e9e-8fed-120c3d76d9e2', '0511', '511', 'DCU#2 2위(L1)-출입문 닫힘 리미트 스위치2 고장', 'M1', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 "DCS2 Failure(Right)” 신호가 "1"이 되면 검지.', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('8df05f01-165b-4076-88dd-2d67871aed55', '0519', '519', 'DCU#7 5위(R3) - ZVR 신호 에러', 'M4', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 “ZVR signal error” 신호가 “1”이 되면 검지 +', '출입문이강제로 닫히게 되고, 열림은 불가능', ' +1) 차량 ZVR 신호가 없는 상태(차량 주행상태)에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함. +', '해당 출입문 ZVR 신호 수신', '1) 차량 이 주행중이라면, 차량 이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('8e156148-2a35-497e-b44c-bfcc7fdf532a', '0174', '174', 'VVVF#6 - 통합제어장치 - PWM 제어장치간 신호 이상 검지(ERRDIO)', 'M3', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('8e176977-cc74-4afa-83c8-e73743c216af', '0515', '515', 'DCU#8 6위(L3)-출입문 열림 시간 초과', 'Tc2', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 "Open time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 열림 동작시간이 6초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도 한 후, '장애물로 인한 열림실패' 고장과 함께 'Open time out' 고장이 함께 현시', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('8e28b700-05e3-4f0d-8b0a-107cf2644a1a', '0753', '753', 'HVAC#7 - 배기댐퍼 열림고장', 'M4', 'C', 'HVAC-배기댐퍼 열림고장', 'C', 'HVAC', '환기 시, 차량 배기댐퍼가 열려 있는 상태에서 배기댐퍼 열림 리미트 스위치가 작동되지 않음 +', '배기댐퍼 열림 고장 현시', '배기댐퍼를 열림으로 제어했으나 열림 리미트 스위치 입력이 없을 경우 +', '배기댐퍼 열림상태에서 리미트 스위치 입력이 정상적으로 입력', '1) 배기댐퍼가 열린 상태에서 열림 리미트 스위치가 정상적으로 작동되었는지 확인한다. +2) 열림 리미트 스위치가 정상작동 되었음에도 문제가 발생될 경우, 스위치를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('8e2f992d-402b-42fa-b5a7-98fbb9a4e9a8', '0129', '129', 'VVVF-IPM W상 이상검지(GDFW) (Car2)', 'M1', 'C', 'VVVF-IPM W상 이상검지(GDFW)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT34의 Bit3 “GDFW” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 'IPM W상 이상검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치 내부 IPM에 과전류, 과온이 검지될경우.', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반배전반의 VVVFIC nfb 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 견인전동기로 출력되는 3상의 전류치 확인함. +3) 특정상의 전류치가 비정상적일 경우 특정상에 해당되는 IPM, 전류센서, 모터결선을 확인한다. +4) 전류센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작상태를 시험기를 통해 확인한다. +6) IPM 전원공급기의 전원연결상태 또는 광케이블의 연결상태와 배선상태를 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.578803+00', null, '다대48량(2015)', 'Rotem'), ('8e33967b-ffc7-4084-8028-d7d87e28f057', '0214', '214', 'BECU#2-BC 압력센서고장', 'M1', 'C', 'BECU-BC 압력센서 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit5 “BC 압력센서 고장” 신호가 "1"이 되면 검지.', '해당 차량 BC압력센서 고장 검지 현시 및 해당차량 제동력 부족, 제동불완해 검지 불가.', '해당 차량의 BC압력센서 고장.', '해당 차량의 BC압력센서가 정상일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('8e3d9efa-7972-4a2a-b7c5-4f48001840c1', '0873', '873', '출력증폭기#1(AMP) 고장(Car#7)', 'M4', 'C', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('8e41fd4b-85f0-445a-a92b-8c8b5cf83e43', '0512', '512', 'DCU#4 2위(L1)-파라미터 로딩 실패', 'T1', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 "Paraneter error” 신호가 "1"이 되면 검지.', 'Parameter error 현시 (출입문은 정상작동 가능)', 'DCU 자체내의 EEPROM으로부터 parameter 데이터 로딩 실패', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('8e460463-b8cc-49db-ad37-20eeee51cd79', '0176', '176', 'VVVF#7 - LB1 고착(LB1NO)', 'M4', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('8e525946-0ee7-43a6-a217-cf4f2f9a3fde', '0145', '145', 'VVVF#7-과온검지2(THDH)', 'M4', 'C', 'VVVF-과온검지2(THDH)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT30의 Bit2 “THDH” 신호가 "1"이 되면 검지.', null, '인버터 내부 온도가 105 °C이상 도달 시 고장발생.', '95 °C 이하 도달 및 노치 OFF +(소거 이전까지 운전 불가)', '1) 상기고장이 간헐적으로 발생하는경우 아래와 같이 조치한다. +2) 상온에서 TCU(통합제어기)에 RS232케이블을 이용하여 노트북(제공품)과 연결 후 모니터링 프로그램으로 인버터의 온도값을 확인한다. +3) 인버터 유니트의 온도센서 배선 및 커넥터 체결상태를 확인한다. +4) 추진제어장치의 냉각부에 손상이 없는지 확인한다. +5) 추진제어장치 시험기를 이용하여 TCU(통합제어장치)의 이상여부를 확인한다. +6) 상기의 점검부분에 이상이 있을 경우 관련부품을 교체한다. +7) 동일 고장이 지속적으로 발생 시 INV 스택을 교체한다.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('8e5b0c5d-9a21-459b-88e9-7d2801846828', '0513', '513', 'DCU#8 6위(L3) - 모듈 상태체크 에러', 'Tc2', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 “Module check error” 신호가 “1”이 되면 검지 +', 'Modulecheckerror현시(출입문은 정상작동가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태 체크 기능에 이상이 생긴 경우 고장 발생 +', 'DCU의 ‘A' 모듈과 ‘B' 모듈 간, 상태 체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('8e5f2198-e5ba-4186-99be-f74d18c2dccd', '0516', '516', 'DCU#8 6위(L3) - 출입문 장애물로 인한 닫힘 실패', 'Tc2', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Close failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림 상태로 대기', '도어 닫힘 중 3회 장애물감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('8e5f223a-fb4c-427b-bfb3-b5c3c927c2ef', '0747', '747', 'HVAC#8-전자접촉기 차량히터2(CRRHT) 고장', 'Tc2', 'C', 'HVAC-전자접촉기 차량히터2(CRRHT) 고장', 'C', 'HVAC', '객실 난방기 작동 중 CRRHT2 전자접촉기 고장 발생.', '객실 전난방 시 1/3난방만 작동', '객실 전난방 작동 중 2.5초 이상동안 CRRHT2 작동 feedback 신호가 수신되지 않는 경우', 'CRRHT2 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CRRHT2를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRRHT2와 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('8e6369bd-5b3c-4c06-80f0-ac98cb5b7e91', '0516', '516', 'DCU#2 6위(L3) - 출입문 장애물로 인한 닫힘 실패', 'M1', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Close failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림 상태로 대기', '도어 닫힘 중 3회 장애물감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('8e6a1f46-a5d9-4f20-8b7d-14054120e9cc', '0208', '208', 'BECU#1-공기제동장치고장', 'Tc1', 'C', 'BECU-공기제동장치고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit7 “공기제동장치고장” 신호가 "1"이 되면 검지.', '해당 차량 공기제동장치고장 검지 현시 및 해당 차량 정상적인 제동제어 불가.', '해당 차량 BECU의 자가진단 시 고장 발생 또는 AC압력센서 고장.', '해당 차량 BECU의 자가진단 시 정상적일 경우 또는 AC압력센서가 정상일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('8e6bd93d-4f3b-49ee-a414-cf45265e188b', '0506', '506', 'DCU#4 4위(L2)-출입문 입력 저전압', 'T1', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 "1"이 되면 검지.', '저전안 상태 (출입문 동작이 심하게 느려지거나 작동조차 안될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('8e75d210-4227-48d5-b35f-09d77c56617b', '0745', '745', 'HVAC#4-전자접촉기 배기팬2(CRVF) 고장', 'T1', 'C', 'HVAC-전자접촉기 배기팬2(CRVF) 고장', 'C', 'HVAC', 'HVAC 환기 작동 중 CRVF2 전자접촉기 고장 발생.', '환기 시 차량 배기팬2 운전 불가능', '환기 작동 중 2.5초 이상동안 CRVF2 작동 feedback 신호가 수신되지 않는 경우', 'CRVF2 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CRVF2를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRVF2와 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('8ea10e76-e326-4645-8e17-04ebce102b24', '0067', '67', 'MAIN FUSE#2 DISCONNECTED(Car4)', 'T1', 'W', 'MAIN FUSE#2 DISCONNECTED(Car4)', 'W', 'TCMS', '차량으로부터 AUX FUSE DISCONNECTED 신호 입력시', 'VVVF고압 차단으로 추진 불능', '해당 퓨우즈 소손', '해당 퓨우즈 교체', null, ' +REC20210HN0', '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('8eb6ae02-8afd-44f8-81dc-d9298ca25203', '0215', '215', 'BECU#3-후미대차 AS압력센서고장', 'M2', 'C', 'BECU-후미대차 AS압력센서 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit6 “후미대차 AS압력센서 고장” 신호가 "1"이 되면 검지.', '해당 차량 후미대차 AS압력센서 고장 검지 현시 및 해당차량 정상적인 응하중 제동제어 불가.', '해당 차량의 후미대차 AS 압력센서(AS3, AS4) 고장.', '해당 차량의 후미대차 AS 압력센서(AS3, AS4)가 정상일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('8ec51558-ccec-43d1-b07b-45c8d1900ed3', '0703', '703', 'HVAC#8 - 냉난방장치1 압축기2 과부하', 'Tc2', 'C', 'HVAC-냉난방장치1 압축기2 과부하', 'C', 'HVAC', 'HVAC 냉방 작동 중 냉난방장치1 압축기2 또는 응축기2 모터에 과부하 발생 +', '냉방 기능 저하(전냉방 시 반냉방으로 작동)', ' +1) 냉방 작동 중 UNIT1의 압축기2 또는 응축기2 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRCM2와 연결된 THR2가 Trip 됨. +', 'UNIT1의 압축기2 또는 응축기2 모터의 과부하조건을 해소하여 정상 가능 상태로 만들고, THR2 및 마이콤 전원 리셋', '1) 냉난방 배전반의 점검커버를 열고, THR2의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR2의 전류 세팅값이 11.5A에 맞춰져 있는지 확인하여, 아닐 경우, (+) 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동시킨 후, THR2의 2차측 2, 4, 6 단자에서 각 단자 간 상간 전압이 AC 380V로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 압축기 및 응축기 단품 상태에서 점검을 한다. +7) THR2의 2차측 2, 4, 6 단자에서 각 단자 간 권선저항이 모두 같은지 확인한다. (±10% 이하) (압축기2 및 응축기2 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT1의 압축기1 또는 응축기1 모터의 결선을 해제한 후 각 부품의 권선저항을 확인 후, 문제가 있는 부품을 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR2 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('8ecba783-0294-4946-9d33-1362070ec3b7', '0214', '214', 'BECU#3 - BC 압력센서 고장', 'M2', 'C', 'BECU-BC 압력센서 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit5 “BC 압력센서 고장” 신호가 “1”이 되면 검지 +', '해당 차량 BC 압력센서 고장검지 현시 및 해당 차량 제동력부족, 제동불완해 검지 불가', '해당 차량의 BC 압력센서 고장 +', '해당 차량의 BC 압력센서가 정상일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('8ed94a4e-fedb-4220-8b3e-9d64cdf55a94', '0305', '305', 'ATC#1-2계 고장', 'Tc1', 'C', 'ATC-2계 고장', 'C', 'ATC', 'ATC의 RS485 데이터 중 ATC-TCMS SD TEXT7의 Bit4~7 “ATC/ATO Status” 데이터가 ATC 2계 Bad 상태이면 검지.', 'MMI에 ATC/ATO1이 빨간색으로 표기되며 관련 고장메시지 현시', '1. ATC시스템 자체진단테스트 실행 시 하기와 같은항목에서 비정상상태일 경우 +1) 서브랙 내 보드(DI1,2/DO/Tacho) 존재 유무 체크 +2) 각 장치(DI1,2/DO/Tacho/ATC/ATO/TWC/MMI)별 통신 상태 확인 +3) 보드 동작상태(Alive 상태) +4) Digital Input 상태 확인(중복입력/무입력) +5) Digital Input/Output Check-back 상태 확인 +6) Tachometer 고장검지 확인 +7) 열차길이/휠 사이즈 셋팅 확인 +2. ATC-1계 CPU보드 고장 시 +3. ATC-1계 POWER보드 고장시', '상기 검지조건 해제 시', '1) 전원스위치 CB ATC#1,2 OFF->ON하여 복귀시도 후, 복귀되었는지 확인한다. +2) 1, 2계 동시 고장 시, 완전수동(FMC)전환 운행 한다.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('8ef321e3-b3c6-4af3-add7-d4230ae5aef5', '0510', '510', 'DCU#4 5위(R3)-출입문 닫힘 리미트 스위치1 고장', 'T1', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 "DCS1 Failure(Leftt)” 신호가 "1"이 되면 검지.', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('8ef39fc6-58d7-49ee-a17c-27dc9afca228', '0711', '711', 'HVAC#7-냉난방장치2 압력스위치1(DPS) 저압', 'M4', 'D', 'HVAC-냉난방장치2 압력스위치1(DPS) 저압', 'D', 'HVAC', '냉난방장치2 냉매 압력스위치1 저압 발생.', 'UNIT2 CYCLE1 냉방 기능 불가', 'UNIT2 DSP1측 냉매 압력이 3초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우', '냉매 압력이 정상 수치 2±0.5(kgf/cm2 이상으로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CREF4의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)을 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안되는 것을 확인한 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('8ef3c081-3e5f-44c9-8a4c-e46a15f99d71', '0506', '506', 'DCU#3 2위(L1) - 출입문 입력 저전압', 'M2', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 “1”이 되면 검지 +', '저전압상태(출입문 동작이 심하게 느려지거나 작동조차 안 될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하 +', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('8f02ba19-1fb4-4477-9039-61b4ea35eaf9', '0504', '504', 'DCU#6 6위(L3) - 출입문 외부 비상핸들 취급(EAD)', 'M3', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('8f05b656-a057-4d43-a5fb-5523fe0ade20', '0718', '718', 'HVAC#6-CO2 센서1 고장', 'M3', 'C', 'HVAC-CO2 센서1 고장', 'C', 'HVAC', '객실 CO2 센서1 고장 발생', 'CO2 센서1 고장현시', 'CO2 센서의 검지범위는 0~4000ppm (2~10Vdc) 인데, 1초 이상 출력전압이 2Vdc (0ppm) 미만으로 떨어지는 경우', 'CO2 센서 검지 값이 1초 이상 2Vdc (0ppm) 이상 지속되는 경우', '1) 전원을 인가한 상태에서 CO2센서 커버를 열고 테스터기를 통해 'OUT2' 단자와 'G' 단자간의 전압이 2Vdc 미만인지 확인한다. +2) 만약 전압이 2Vdc 이상인데도 고장이 지속될 경우, 마이콤을 교체한다. +3) 만약 전압이 2Vdc 미만으로 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('8f09d795-4dda-441f-a9f7-bb361baadc07', '0509', '509', 'DCU#7 4위(L2) - 출입문 잠김 리미트 스위치 고장', 'M4', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 “DLS Failure” 신호가 “1”이 되면 검지 +', '출입문 잠김 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('8f1f19b8-0a52-41c9-a19b-3746e5ae94b4', '0512', '512', 'DCU#8 4위(L2)-파라미터 로딩 실패', 'Tc2', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 "Paraneter error” 신호가 "1"이 되면 검지.', 'Parameter error 현시 (출입문은 정상작동 가능)', 'DCU 자체내의 EEPROM으로부터 parameter 데이터 로딩 실패', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('8f23e530-c327-49b4-b235-1d420d55bc08', '0503', '503', 'DCU#5 3위(R2) - 출입문 내부 비상핸들 취급(EED)', 'T2', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('8f3488e1-13bd-4fb4-859b-747b88a016e6', '0745', '745', 'HVAC#7 - 전자접촉기 배기팬2(CRVF) 고장', 'M4', 'C', 'HVAC-전자접촉기 배기팬2(CRVF) 고장', 'C', 'HVAC', 'HVAC 환기 작동 중 CRVF2 전자접촉기 고장 발생 +', '환기 시 차량 배기팬2 운전 불가능', '환기 작동 중 2.5초 이상 동안 CRVF2 작동 feedback 신호가 수신되지 않는 경우 +', 'CRVF2 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CRVF2를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRVF2와 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('8f4e3344-258f-4f0f-af88-295fb5793a23', '0217', '217', 'BECU#4 - 회생제동달성 비정상', 'T1', 'C', 'BECU-회생제동달성 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit0 “회생제동달성 비정상” 신호가 “1”이 되면 검지 +', '해당 차량 회생제동달성비정상 검지 현시 및 해당 차량 정상적인 전공교차제어 불가', '해당 차량의 회생제동 달성 신호가 정상범위를 벗어남. (5.0 ~ 95.0%) +', '해당 차량의 회생제동달성신호가정상범위일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 소거되지 않을 경우 해당 차량 추진제어장치 리셋(CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르 시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('8f54dcf4-9dd4-4e6b-93f1-67a0f7c758a3', '0228', '228', 'BC 코크(차하#1) 차단(Car5)', 'T2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('8f55c9f4-84b5-495f-9f71-8588e1913b56', '0841', '841', '실내카메라#1(SCAM) 고장(Car#4)', 'T1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('8f56dd3a-b341-439d-b643-a5cd609fc3d5', '0502', '502', 'DCU#2 4위(L2) - 출입문 장애물검지', 'M1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('8f7824df-b662-45f7-8159-f60c2bc66980', '0124', '124', 'VVVF-전진/후진 이상 검지(FRF) (Car6)', 'M3', 'C', 'VVVF-전진/후진 이상 검지(FRF)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT33의 Bit5 “FRF” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 '전진/후진 신호이상검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치 입력되는 역행/제동신호가 동시에 입력될 경우 검지됨.', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반배전반의 VVVFIC nfb 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 전진/후진신호에 이상이 있는지 확인한다.. +3) 차량의 제어회로 중 전진/후진 신호가 추진제어장치로 연결되는 경로에 이상이 없는지 확인한다. +4) DIN 보드의 동작상태를 시험기를 통해 확인한다. +5) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.656536+00', null, '다대48량(2015)', 'Rotem'), ('8f78ea9b-55fa-4ab3-a2ba-f366c2fb0189', '0217', '217', 'BECU#3-회생제동달성 비정상', 'M2', 'C', 'BECU-회생제동달성 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit0 “회생제동달성 비정상” 신호가 "1"이 되면 검지.', '해당 차량 회생제동달성 비정상 검지 현시 및 해당차량 정상적인 전공 교차제어 불가.', '해당 차량의 회생제동달성 신호가 정상범위를 벗어남(5.0~95.0%).', '해당 차량의 회생제동달성 신호가 정상범위일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. +소거되지 않을 경우 해당 차량 추진제어장치 리셋(CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('8f8ae2f1-6c78-4b47-a785-8e6c819aaf48', '0152', '152', 'VVVF#3-제동패턴이상검지(BPD)', 'M2', 'C', 'VVVF-제동패턴이상검지(BPD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT31의 Bit1 “BPD” 신호가 "1"이 되면 검지.', null, '제동요구치 PWM신호의 이상 발생 시 고장검지.', '제동요구치 신호 정상입력 시 고장해제.(24V, 500Hz)', '1) TCMS의 시리얼데이터 화면에서 마스콘을 조작하며 제동노치 별 BED값이 변하는 것을 확인한다. +2) TCU(통합제어기)에 RS232케이블을 이용하여 노트북(제공품)과 연결 후 모니터링 프로그램으로 추진장치에서 BP값 인식 여부를 확인한다. +3) 제동요구치(BED)신호 배선 확인. +4) 제동요구치 신호 파형 확인. (24V, 500Hz) +5) 추진제어장치 시험기를 이용하여 TCU(통합제어장치)의 이상여부를 확인한다. +6) 상기의 점검부분에 이상이 있을 경우 관련부품을 교체한다.', null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('8f94f67d-ad93-4e14-be39-06fdf1b0816d', '0101', '101', 'VVVF#2-인버터 중고장(INV CUT)', 'M1', 'A', 'VVVF-인버터중고장(INV CUT)', 'A', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT1의 Bit4 “INV CUT” 신호가 "1"이 되면 검지.', '1) TCMS 일반화면에 추진제어장치 상태 붉은색으로 표시됨. +2) 추진제어장치 중고장 상태인 동력차에 동력 손실됨. +3) TCMS 상태화면의 추진제어장치 화면에 HSCB, LB1,2 개방된것으로 표시됨.', '1) 추진제어장치의 경고장이 1분에 3회 이상누적또는 지속적으로 검지되어 중고장 발생함. +2) 장치에 중대한 소손 가능성이 있는 고장에 대해서는 1번 발생으로 중고장 발생함.', '동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) 소거조건 내용과 같이 조치 후 중고장 소거됨을 확인함. +2) TCMS 고장데이터 또는 추진제어장치 고장 데이터를 통해 중고장이 발생한 고장 내역 수집함. +3) 수집된 고장내역에 따라 조치 실시함.', null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('8f95fbf5-5a5b-4e73-9bb1-d61ec532082f', '0105', '105', 'VVVF#2-상전류 불평형 검지(PUD)', 'M1', 'C', 'VVVF-상전류 불평형 검지(PUD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT29의 Bit0 “PUD” 신호가 "1"이 되면 검지.', null, '1) 인버터 출력 U,V,W 상간 RMS전류 값의 차이가 100A 이상 3초간 발생하는 때 경고장 발생. +2) 1분 이내 3회 발생 시 중고장 발생.', '1) 경고장 +역행 고장검지 2초 후 자동 재기동 제동 제동 OFF시 고장 소거 +2) 중고장 +동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 견인전동기로 출력되는 3상의 전류치 확인함. +3) 특정상의 전류치가 비정상적일 경우 특정상에 해당되는 전류센서, 모터결선을 확인한다. +4) 전류센서와 추진제어장치 제어기 PWM 보드에 연결되는 저전압 배선상태를 확인한다. +5) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +6) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('8fa77379-a17d-4179-85dc-9e7955bf3a32', '0710', '710', 'HVAC#3-냉난방장치2 압력스위치2(DPS) 고압', 'M2', 'D', 'HVAC-냉난방장치2 압력스위치2(DPS) 고압', 'D', 'HVAC', '냉난방장치2 냉매 압력스위치2 고압 발생.', 'UNIT2 CYCLE2 냉방 기능 불가', 'UNIT2 DSP2측 냉매 압력이 3초 이상 28±1(kgf/cm2) 이상 되는 경우', '냉매 압력이 정상 수치 15±0.7(kgf/cm2 이하로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CRCM4의 부하측 전류를 측정하여 응축기 팬의 동작여부를 확인한다. +2) 응축기 코일의 전면에 이물질로 인한 막힘이 있는지 확인한다. +3) 응축기 팬 상부 그릴에 외부 이물질로 인한 막힘이 있는지 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('8fa8027e-fe06-45f6-a836-7e982944ec0b', '0074', '74', 'PSD 차상-지상간 통신장애', 'Tc1', 'C', null, null, 'PSD', null, null, null, null, null, null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('8fad1cc3-09b9-4fcd-9649-eabbccb5f52a', '0511', '511', 'DCU#6 2위(L1) - 출입문 닫힘 리미트 스위치2 고장', 'M3', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 “DCS2 Failure(Right)” 신호가 “1”이 되면 검지 +', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('8fd79889-107f-4680-9bda-3355cb57c762', '0096', '96', 'PWM 엔코더#1 고장(Car8)', 'Tc2', 'B', 'PWM 엔코더#1 고장(TC2)', 'B', 'VVVF', '차량으로부터 PWM ENCODER#1(#2) FAULT 신호 미입력시', '1) 엔코더 1계 PWM 출력 고장시 1계 고장에 해당되는 신호 출력 +2) 엔코더 2계로 자동 절체 +3) 엔코더 2계 PWM 출력 고장시 1계, 2계 고장 모두 출력 +4) 엔코더 PWM 출력 신호 없음', '1) 엔코더 1계 PWM 출력 신호 이상 시 +2) 엔코더 2계 PWM 출력 신호 이상 시 +3) 엔코더 1계, 2계 PWM 출력 신호 이상 시 +4) 엔코더 수동절체버튼 3초 이상 조작 시', '1) 엔코더의 전원 차단 후 재투입하여 소거되는지 확인 +2) 수동절체버튼의 조작으로 인한 고장 출력 또한 전원 재투입으로 소거함', '1) 엔코더의 전원 차단 후 재투입하여 소거되지 않을 시 정상품으로 교체하여 정상동작 확인 +2) 교체된 고장품의 고장원인 분석', ' +REC20210HN0', '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('8fdb2433-3807-4c58-9d41-e5400b0093bc', '0505', '505', 'DCU#4 3위(R2)-출입문 입력 고전압', 'T1', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 "1"이 되면 검지.', '고전압 상태. (그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('901e1861-83fd-4484-8945-d118da74bd33', '0716', '716', 'HVAC#7-냉난방장치1 압력스위치1(DPS) 고압', 'M4', 'D', 'HVAC-냉난방장치1 압력스위치1(DPS) 고압', 'D', 'HVAC', '냉난방장치1 냉매 압력스위치2 고압 발생.', 'UNIT1 CYCLE1 냉방 기능 불가', 'UNIT1 DSP1측 냉매 압력이 3초 이상 28±1(kgf/cm2) 이상 되는 경우', '냉매 압력이 정상 수치 15±0.7(kgf/cm2 이하로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CRCM1의 부하측 전류를 측정하여 응축기 팬의 동작여부를 확인한다. +2) 응축기 코일의 전면에 이물질로 인한 막힘이 있는지 확인한다. +3) 응축기 팬 상부 그릴에 외부 이물질로 인한 막힘이 있는지 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('9022e27d-0ba3-45fd-82bf-4ce12d4f447a', '0511', '511', 'DCU#8 3위(R2) - 출입문 닫힘 리미트 스위치2 고장', 'Tc2', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 “DCS2 Failure(Right)” 신호가 “1”이 되면 검지 +', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9027db0a-e8fe-4924-8fe0-2346506f40c7', '1000', '1000', 'CMSB#8 통신고장', 'Tc2', 'C', 'CMSB 통신고장(Car1,Car8)', 'C', 'CMSB', 'CMSB와 TCMS 간 RS485 통신고장이 검지되면 발생 +', 'CMSB 통신고장 메시지 현시', 'CMSB 통신고장 또는 통신 케이블 문제 +', null, '0) 정상운행 후, 검수고에 입고하여 아래와 같이 조치한다. +1) 상기고장은 고장 소거 후, 재현시험을 진행하여 지속적으로 발생될 경우 아래와 같이 조치 한다. +2) TCMS와 CMSB간의 통신계통 점검(TCMS, 통신케이블, CMSB 제어기 보드)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9037ff34-134c-4987-8412-d375a558aee2', '0518', '518', 'DCU#4 3위(R2) - 출입문 Enable 신호 에러', 'T1', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 “Enable signal error” 신호가 “1”이 되면 검지 +', 'DCU 출입문Enable신호에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드 시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을 때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드 시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입 상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호 장치로부터의 출입문 열림 명령 신호) 취급 시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함. +', '해당 출입문 enable 신호수신', '1) AUTO/MCS 모드 시에는 YARD 모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인 한다. (YARD/FMC 모드 시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('904c060b-2606-4481-bf75-9fc52edf8ff4', '0509', '509', 'DCU#4 1위(R1) - 출입문 잠김 리미트 스위치 고장', 'T1', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 “DLS Failure” 신호가 “1”이 되면 검지 +', '출입문 잠김 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('904f322b-0696-4f92-9bc1-7c434dc52e91', '0519', '519', 'DCU#2 4위(L2) - ZVR 신호 에러', 'M1', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 “ZVR signal error” 신호가 “1”이 되면 검지 +', '출입문이강제로 닫히게 되고, 열림은 불가능', ' +1) 차량 ZVR 신호가 없는 상태(차량 주행상태)에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함. +', '해당 출입문 ZVR 신호 수신', '1) 차량 이 주행중이라면, 차량 이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9055b090-78d2-453e-a549-dd40c730e144', '0711', '711', 'HVAC#5 - 냉난방장치2 압력스위치1(DPS) 저압', 'T2', 'D', 'HVAC-냉난방장치2 압력스위치1(DPS) 저압', 'D', 'HVAC', '냉난방장치2 냉매 압력스위치1 저압 발생 +', 'UNIT2CYCLE1 냉방기능불가', 'UNIT2DSP1측 냉매압력이 3초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우 +', '냉매압력이 정상수치 2±0.5(kgf/cm2) 이상으로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CREF4의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)를 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설 여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안 되는 것을 확인한 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('90561dbc-18dc-4237-80cb-aeede4a0dde5', '0886', '886', '전면카메라(FCAM) 고장(Car#1)', 'Tc1', 'C', '영상저장장치-전면카메라(FCAM) 고장(Car1)', 'C', 'AVC', '영상저장장치(NVR)의 E-NET 데이터 중 영상저장장치-TCMS SD TEXT9의 Bit1, TEX9의 Bit3 “FCAM 고장” 신호가 “1”이 되면 검지 +', '고장 발생 FCAM 영상저장 불가능', '정면카메라(FCAM) 통신고장 +', '정면카메라(FCAM) 통신정상', '정면카메라(FCAM) 전원 및 통신라인 점검 관련도면 : RES41002FG0', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('905f99f5-da1c-4378-9231-f04d3e27a5f6', '0175', '175', 'VVVF#3 - HSCB 투입불량(HBNC)', 'M2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('908f0bd4-633b-42a1-a02c-deaea75411b3', '0502', '502', 'DCU#8 6위(L3) - 출입문 장애물검지', 'Tc2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9091e6a0-deb2-490d-9325-b492413cece0', '0220', '220', 'BECU#2 - 공기제동 감쇄지령 비정상', 'M1', 'C', 'BECU-공기제동 감쇄지령 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit3 “공기제동 감쇄지령 비정상” 신호가 “1”이 되면 검지 +', '해당 차량 공기제동감쇄지령 비정상 검지 현시 및 해당 차량 정상적인전공교차제어 불가 (부수차량 공기제동 감쇄 불가)', '해당 차량의 공기제동감쇄지령 신호가 정상범위를 벗어남. (5.0 ~ 95.0%) +', '해당 차량의 공기제동감쇄지령 신호가 정상범위일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 소거되지 않을 경우 해당 차량 옆의 Pair 차량(구동차) BECU를 리셋(CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9092c95d-7bcd-4b0d-a33d-df1326f4bf98', '0202', '202', 'BECU#1 - 덤프밸브 고장(전두대차)', 'Tc1', 'C', 'BECU-덤프밸브고장(선두대차)', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit1 “덤프밸브고장(선두대차)” 신호가 “1”이 되면 검지 +', '해당 차량 덤프밸브고장(선두대차)검지 현시 및 해당 차량 활주제어불가', '해당 차량 선두대차의 덤프밸브가 작동하지 않음. +', '해당 차량 선두대차의 덤프밸브가 정상작동 시 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9099574f-d1ba-4029-ab72-12964d544408', '0205', '205', 'BECU#2 - 회생제동요구 비정상', 'M1', 'C', 'BECU-회생제동요구 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit4 “회생제동요구 비정상” 신호가 “1”이 +되면 검지 +', '해당 차량 회생제동 요구 비정상 검지 현시', '해당 차량의 회생제동 요구 출력이 정상범위를 벗어남. +', '해당 차량 회생제동 요구 출력이 정상범위로 복귀 시 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('90a714ad-07db-40c1-a22e-4cb18b3cf1f7', '0239', '239', 'BECU#4-3축스키드신호', 'T1', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('90b75caa-0e5c-456b-8dcb-4833eefd481a', '0513', '513', 'DCU#4 4위(L2)-모듈 상태체크 에러', 'T1', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 "Module check error” 신호가 "1"이 되면 검지.', 'Module check error 현시 (출입문은 정상작동 가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태체크 기능에 이상이 생긴 경우 고장 발생.', 'DCU의 'A'모듈과 'B'모듈 간, 상태체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('90ba351a-58c6-4156-8cc9-3b1174db74b1', '0518', '518', 'DCU#3 6위(L3) - 출입문 Enable 신호 에러', 'M2', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 “Enable signal error” 신호가 “1”이 되면 검지 +', 'DCU 출입문Enable신호에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드 시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을 때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드 시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입 상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호 장치로부터의 출입문 열림 명령 신호) 취급 시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함. +', '해당 출입문 enable 신호수신', '1) AUTO/MCS 모드 시에는 YARD 모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인 한다. (YARD/FMC 모드 시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('90c6b81f-63ac-4232-b40a-f5f9cae763c6', '0168', '168', 'VVVF#3-응하중 신호 이상검지(BRFD)', 'M2', 'C', 'VVVF-BCU 고장(BRFD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT33의 Bit1 “BRFD” 신호가 "1"이 되면 검지.', null, '응하중 PWM신호의 듀티값 90%이상 도달 시 고장검지', '1) 역행 듀티값 80%이하, 10%이상. +2) 제동 듀티값 80%이하, 10%이상 & 제동 OFF', '1) TCMS의 시리얼 데이터 확인창에서 각 차량의 응하중 값을 확인한다. 수치에 이상이 있는 차량이 확인될 경우 해당 차량의 BCU를 교체한다. +2) 추진제어장치의 외부커넥터 CN1을 분리하여 33번, 34번, 35번 핀의 삽입상태를 확인한다. +3) 차량에 제어전원만 인가 후 PUZ보드에 모니터링 프로그램이 설치된 노트북과 연결하여 응하중값을 확인한다. (공차 34 ~39%) +4) 추진제어장치 시험기를 이용하여 TCU(통합제어장치)의 이상여부를 확인한다.', null, '3', '2025-10-12 01:21:37.578803+00', null, '로템40량(2018)-1단계', 'Rotem'), ('90d62294-6bf1-489b-bc9a-93156833e762', '0516', '516', 'DCU#2 4위(L2) - 출입문 장애물로 인한 닫힘 실패', 'M1', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Close failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림 상태로 대기', '도어 닫힘 중 3회 장애물감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('90d92e9c-1eee-4d66-804c-c847c2917fd9', '0505', '505', 'DCU#1 6위(L3)-출입문 입력 고전압', 'Tc1', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 "1"이 되면 검지.', '고전압 상태. (그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('90e2ba39-a1f9-4772-b072-b1ae12741558', '0183', '183', 'VVVF#2 - Over Load(OL)', 'M1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('90e3e892-5e11-49bb-b035-4972216339e7', '1107', '1107', '0', 'Tc1', '0', null, null, '0', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('90ee3032-7cec-443b-b114-04723d94a8e0', '0510', '510', 'DCU#1 4위(L2) - 출입문 닫힘 리미트 스위치1 고장', 'Tc1', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 “DCS1 Failure(Leftt)” 신호가 “1”이 되면 검지 +', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('90ef8040-edd4-45b8-b530-89ee52f35533', '1206', '1206', 'FDU#4-감지기3 고장', 'T1', 'C', 'FDU-감지기3 고장', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 "Detector1 State” 신호가 "10"이 되면 검지.', '감지기 고장상태 현시(자동 소거 안됨)', '1) 감지기로부터 데이터 응답이 없는경우. +2) 감지기로부터 수신된 데이터의 CRC가 맞지 않는경우 +3) 감지기로부터 수신된 데이터의 ID가 송신 ID와 일치하지 않는경우', 'FDU 전원 리셋 후 감지기로부터 정상적으로 데이터가 수신된 경우', '1) FDU 전원 리셋 후 고장 소거 여부 확인 +2) 정상 동작중인 감지기와 위치 교환 후 FDU 전원 리셋 및 고장 상태 확인 +3) 동일한 감지기에서 고장 발생시 감지기 교체 +4) 동일한 위치에서 고장 발생시 감지기 라인 점검', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('9113a6d0-b3bb-40f8-b5b4-1c41b4a6d44d', '0322', '322', 'ATC#8 - 출입문 열림 오류', 'Tc2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('91197b1c-b295-4979-baf7-6055cae6266e', '1511', '1511', 'TCMS 기동 확인(TC1,TC2)', 'Tc1/2', 'T', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('911d653b-a3e1-4611-a918-fa8129deb0e8', '0169', '169', 'VVVF#7-상전류 동기 불평형 검지(RETRY)', 'M4', 'C', 'VVVF-탈조검지(RETRY)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT33의 Bit2 “RETRY” 신호가 "1"이 되면 검지.', null, '동기전동기의 회전자와 고정자의 위상차가 허용치 이상 발생시 고장검지.', '자동재기동', '1) 상기 고장이 간헐적으로 발생하는 경우 아래와 같이 조치한다. +2) 견인전동기의 취급 절차서에 따라 절연저항 및 내전압 시험을 실시한다. +3) CTU, CTW 전류센서의 외관 및 저전압 커넥터 연결상태를 확인한다. +4) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:37.578803+00', null, '로템40량(2018)-1단계', 'Rotem'), ('91242ca3-80ef-42c5-bd64-5cce9801409e', '0713', '713', 'HVAC#4-냉난방장치1 압력스위치2(DPS) 저압', 'T1', 'D', 'HVAC-냉난방장치1 압력스위치2(DPS) 저압', 'D', 'HVAC', '냉난방장치1 냉매 압력스위치2 저압 발생.', 'UNIT1 CYCLE2 냉방 기능 불가', 'UNIT1 DSP2측 냉매 압력이 3초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우', '냉매 압력이 정상 수치 2±0.5(kgf/cm2 이상으로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CREF2의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이��� 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)을 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안되는 것을 확인한 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('9126a404-9e95-41ab-be40-a6644d5b9d90', '1208', '1208', 'FDU#4-감지기4 고장', 'T1', 'C', 'FDU-감지기4 고장', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 "Detector1 State” 신호가 "10"이 되면 검지.', '감지기 고장상태 현시(자동 소거 안됨)', '1) 감지기로부터 데이터 응답이 없는경우. +2) 감지기로부터 수신된 데이터의 CRC가 맞지 않는경우 +3) 감지기로부터 수신된 데이터의 ID가 송신 ID와 일치하지 않는경우', 'FDU 전원 리셋 후 감지기로부터 정상적으로 데이터가 수신된 경우', '1) FDU 전원 리셋 후 고장 소거 여부 확인 +2) 정상 동작중인 감지기와 위치 교환 후 FDU 전원 리셋 및 고장 상태 확인 +3) 동일한 감지기에서 고장 발생시 감지기 교체 +4) 동일한 위치에서 고장 발생시 감지기 라인 점검', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('913719a9-42c8-4897-8186-aa26f942b672', '0727', '727', 'HVAC#4-배기팬1 과부하', 'T1', 'C', 'HVAC-배기팬1 과부하', 'C', 'HVAC', 'HVAC 환기작동 중 차량 배기팬1 모터에 과부하 발생.', '환기 시 차량 배기팬2 운전 불가능', '1) 냉방작동 중 챠량 배기팬1 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRVF1와 연결된 THR9가 Trip 됨.', '차량 배기팬1 모터의 과부하 조건을 해소하여 정상 가능 상태로 만들고, THR9 및 마이콤 전원 리셋', '1) 냉난방배전반의 점검커버를 열고, THR9의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR9의 전류 세팅값이 2.5A에 맞춰져 있는지 확인하여, 아닐 경우, 십자 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동 시킨 후, THR9의 2차측 2,4 단자와 6 단자 사이의 전압이 DC 100V으로 정상 측정되는지 확인한다. +5) 만약 전압이 측정되지 않을 시, 전원이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, THR9 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('913923e4-9ce6-4281-9f43-bd1459c8bd58', '0746', '746', 'HVAC#8-전자접촉기 배기팬1(CRVF) 고장', 'Tc2', 'C', 'HVAC-전자접촉기 배기팬1(CRVF) 고장', 'C', 'HVAC', 'HVAC 환기 작동 중 CRVF1 전자접촉기 고장 발생.', '환기 시 차량 배기팬1 운전 불가능', '환기 작동 중 2.5초 이상동안 CRVF1 작동 feedback 신호가 수신되지 않는 경우', 'CRVF1 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CRVF1을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRVF1과 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('913db394-6403-4796-8d38-90331ad9bd4e', '0505', '505', 'DCU#7 1위(R1) - 출입문 입력 고전압', 'M4', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 “1”이 되면 검지 +', '고전압 상태(그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상 +', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('915e8369-8f7a-4dc7-95c9-374c1b3bdbf4', '0171', '171', 'VVVF#2-통합제어장치-PWM제어장치간 통신이상 검지(ERR485)', 'M1', 'C', 'VVVF-장치간 전송이상(ERR485)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT33의 Bit4 “ERR485” 신호가 "1"이 되면 검지.', null, '1) 통합제어기와 PWM보드간 485 통신이 400ms이상 응답없을 시 고장발생. +2) 1분 이내 3회 발생 시 중고장 발생.', '1) 경고장 +역행 고장검지 2초 후 자동 재기동 제동 제동 OFF시 고장 소거 +2) 중고장 +동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) PWM 보드 전면의 LED점등을 확인한다. +2) PWM 제어기 내부 PCB상태를 육안점검한다. +3) PWM 제어기전면의 CN1, CN2 커넥터의 핀 상태를 확인한다. +4) TCU(통합제어장치)의 PUZ 보드의 후면의 커넥터 삽입상태를 확인한다. +5) TCU(통합제어장치)의 PUZ 보드 후면의 제어배선 중, TRX11P, TRX11F, TRX11G 배선의 연결상태 및 배선의 단선 여부를 확인한다. +6) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('9165242c-4cfe-4705-9666-cf74eea1565c', '0913', '913', 'TRAIN RADIO#8-TCI(열차통신장치) 고장', 'Tc2', 'C', 'TRAIN RADIO-TCI(열차통신장치) 고장', 'C', 'RADIO', 'Train Radio의 RS485 데이터 중 Train Radio-TCMS SD TEXT15의 Bit1 “TCI 고장” 신호가 "1"이 되면 검지.', '객실 방송, 비상 인터폰 기능 불능', 'HW 고장', '제어기 리셋', null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('9166af4f-e73d-4418-aa97-e11a11d5bd27', '0182', '182', 'VVVF#2 - TCU 초기화(INZ - RST)', 'M1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9167c16a-2833-480b-b9c4-5ab67b6de209', '0750', '750', 'HVAC#3 - 냉난방장치2 보조히터 과열', 'M2', 'C', 'HVAC-냉난방장치2 보조히터 과열', 'C', 'HVAC', 'HVAC2 보조난방기 작동 중 과열 발생 +', 'UNIT2 보조난방기난방불가', '보조난방기 작동 중 1초 이상 동안 온도가 70도 이상으로 과온 센서 정상신호가 수신 되지 않는 경우 +', '1초 이상 동안 60도 미만으로 온도가 떨어져 과온 센서 정상신호가 수신되는 경우', '1) 보조난방기가 꺼진 상태에서도 문제 발생 시, 과온 센서를 교체한다. +2) 센서 교체 후에도 문제가 발생되면, 배선에 문제가 없는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('91749252-0910-4c19-8d4f-b8e56bd2debe', '0504', '504', 'DCU#7 1위(R1)-출입문 외부비상핸들 취급(EAD)', 'M4', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('9175f406-1bd0-4550-b44e-9d4409d7a7a5', '0502', '502', 'DCU#5 4위(L2) - 출입문 장애물검지', 'T2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('91868d34-c64d-447e-a551-52bac7f9e766', '0204', '204', 'BECU#8 - 응하중 비정상', 'Tc2', 'C', 'BECU-응하중 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit3 “응하중 비정상” 신호가 “1”이 되면 검지 +', '해당 차량 응하중 비정상 검지 현시', '해당 차량의 응하중 출력이 정상범위를 벗어남. +', '해당 차량 응하중 출력이 정상범위로 복귀 시 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9192755d-0915-449f-b542-54a225a89cc2', '0806', '806', '정면행선표시기(FDI) 고장(Car#1)', 'Tc1', 'C', '통합방송표시기-정면행선표시기(FDI) 고장', 'C', 'TCMS', '통합방송표시기의 RS485 데이터 중 통합방송표시기-TCMS SD TEXT8의 Bit4 “FDI 고장” 신호가 "1"이 되면 검지.', '고장장치 통신 불량으로 역 현시 기능 불능', '마스터 통합방송제어기에 주기적(2초) TCP 응답이 없을 경우 통신 불량으로 판단', '마스터 통합방송제어기에 TCP 응답 재개', '관련 CB(승객안내표시기, CBPIB) 리셋하고 통신라인 및 상태 점검. +관련도면 REC70710FG0', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('91d5d207-32e7-4d12-98f4-542a0ccadc93', '0200', '200', 'BECU#2 통신고장', 'M1', 'B', 'BECU-통신고장', 'B', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT23의 ‘Life sign'이 변하지 않음. +', '해당 차량 통신고장현시 및 해당 차량의 제동압력(BCP) 등의 데이터가 반응하지 않음. (고장은 현시되나 제동제어는 정상적일 수 있음.)', 'BECU 전원 CBOFF 혹은 통신연결 불량 +', 'BECU와 TCMS 간 RS485 통신이 복귀되어 BECU-TCMSSDTEXT23의'Lifesign'이 변동 시 소거', 'BECU를 리셋(BECUCBOFF/ON) 후 복귀여부를 확인, 리셋 후 복귀되지 않을 경우 관제 보고하고 지시에 따를 것', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('91f71960-6b1d-4ce3-b1b4-99d068fa93a4', '0519', '519', 'DCU#1 2위(L1) - ZVR 신호 에러', 'Tc1', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 “ZVR signal error” 신호가 “1”이 되면 검지 +', '출입문이강제로 닫히게 되고, 열림은 불가능', ' +1) 차량 ZVR 신호가 없는 상태(차량 주행상태)에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함. +', '해당 출입문 ZVR 신호 수신', '1) 차량 이 주행중이라면, 차량 이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9222c4d0-9e3b-46c9-941d-3d7e191a8cc8', '0507', '507', 'DCU#1 4위(L2) - 초기화 실패', 'Tc1', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 “Calibration failure” 신호가 “1”이 되면 검지 +', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터 고장, 장애물감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우 +', '초기화 실패를 야기한 고장코드를 확인하여 조치 후, 재닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인한다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('92415270-4a55-40cc-845d-2bdfee6cd4e9', '0743', '743', 'HVAC#6 - 전자접촉기 보조히터2(AHEK) 고장', 'M3', 'C', 'HVAC-전자접촉기 보조히터2(AHEK) 고장', 'C', 'HVAC', 'HVAC 보조난방기 작동 중 AHEK2 전자접촉기 고장 발생 +', 'UNIT1 보조난방기 전난방 시 반난방만 작동', '보조난방기 작동 중 2.5초 이상 동안 AHEK2 작동 feedback 신호가 수신되지 않는 경우 +', 'AHEK2 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) AHEK2를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, AHEK2와 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('92443d0c-c83a-4b43-8194-68eb57d7ab01', '1203', '1203', 'FDU#8-감지기2 화재감지', 'Tc2', 'W', 'FDU-감지기2 화재감지', 'W', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 "Detector1 State” 신호가 "11"이 되면 검지.', '화재상태 현시(자동 소거 안됨)', '하기 2가지 조건을 모두 만족하여야 화재신호가 출력 됨(연동모드 동작). +1) 이웃한(앞 혹은 뒤에 위치한) 감지기 중 하나의 감지기라도 주의 혹은 화재상태에 있어야 함. +2) Detector1(해당 감지기)에서 측정된 연기농도가 15% 이상이거나 온도가 65℃ 이상인 경우', '1) FDU의 복귀버튼 조작시 +2) FDU 전원 리셋시', '1) 해당 감지기 위치의 화재 발생 여부 확인 +2) 화재 오 감지일경우 FDU의 복귀버튼 취급 +3) 오감지일경우 감지기의 청소주기 확인(내부 먼지 제거)', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('924576a7-f03c-41d3-9507-e78726b1c788', '0515', '515', 'DCU#7 6위(L3)-출입문 열림 시간 초과', 'M4', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 "Open time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 열림 동작시간이 6초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도 한 후, '장애물로 인한 열림실패' 고장과 함께 'Open time out' 고장이 함께 현시', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('9263c556-6c75-4427-ac49-1a9ac6d88790', '0122', '122', 'VVVF-후진속도검지(BSD) (Car6)', 'M3', 'C', 'VVVF-후진속도검지(BSD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT33의 Bit3 “BSD” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 '후진속도검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨.', '1) 추진제어장치에서 계산한 속도가 -5km/h 이하인 경우 검지됨.', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 견인전동기 속도센서 상태를 확인하고, 속도센서가 연결된 경로 배선연결 상태를 확인한다. +3) PGI 보드의 동작상태를 시험기를 통해 확인한다. +4) 속도신호에 이상이 없을 경우 운행기록을 수집하여 출발시 정차제동에 이상이 없는지 확인한다. +5) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.656536+00', null, '다대48량(2015)', 'Rotem'), ('926e198f-6c63-4ef0-8608-43cb716f4e56', '0715', '715', 'HVAC#2-냉난방장치1 압력스위치1(DPS) 저압', 'M1', 'D', 'HVAC-냉난방장치1 압력스위치1(DPS) 저압', 'D', 'HVAC', '냉난방장치1 냉매 압력스위치1 저압 발생.', 'UNIT1 CYCLE1 냉방 기능 불가', 'UNIT1 DSP1측 냉매 압력이 3초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우', '냉매 압력이 정상 수치 2±0.5(kgf/cm2 이상으로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CREF2의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)을 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안되는 것을 확인한 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('926f44d8-6319-4da6-bd75-e545c4c852af', '0749', '749', 'HVAC#2-380V 전원고장', 'M1', 'C', 'HVAC-380V 전원고장', 'C', 'HVAC', 'HVAC 메인 전원 AC 380V 전원 고장 발생', 'HVAC 냉방 및 난방 기능 불가', '차량으로부터 공급되는 AC 380V가 입력되지 않는 경우', '차량으로부터 AC 380V 전압이 정상적으로 입력', '1) 차량으로부터 AC 380V 전압이 정상적으로 입력되는지 확인한다. +2) 차량전원이 정상일 경우, 냉난방 배전반의 CBLVD 차단기가 꺼져 있는지 확인 후, 꺼져있을 경우, 켠다. +3) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('9281dd71-e90c-4ab9-8c61-d752f661ce25', '0233', '233', 'AS 코크#2 차단(Car7)', 'M4', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('92836f20-1f5c-4966-849f-29f5e4529510', '0508', '508', 'DCU#1 4위(L2)-출입문 모터/인코더 고장', 'Tc1', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 "Motor / Encoder failure” 신호가 "1"이 되면 검지.', '출입문 정상동작 불가', '1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우 (인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터 / 인코더 회로가 손상된 경우', '모터/인코더 및 DCU가 정상상태이고, 전기적 연결상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있느지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. +★ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. + +1. DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. +2. DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) +3. DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('92927fe4-70fa-4486-8eb5-9e16d82220cb', '0716', '716', 'HVAC#4 - 냉난방장치1 압력스위치1(DPS) 고압', 'T1', 'D', 'HVAC-냉난방장치1 압력스위치1(DPS) 고압', 'D', 'HVAC', '냉난방장치1 냉매 압력스위치2 고압 발생 +', 'UNIT1CYCLE1 냉방기능불가', 'UNIT1DSP1측 냉매압력이 3초 이상 28±1(kgf/cm2) 이상 되는 경우 +', '냉매압력이 정상수치 15±0.7(kgf/cm2) 이하로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CRCM1의 부하측 전류를 측정하여 응축기 팬의 동작여부를 확인한다. +2) 응축기 코일의 전면에 이물질로 인한 막힘이 있는지 확인한다. +3) 응축기 팬 상부 그릴에 외부 이물질로 인한 막힘이 있는지 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('92969fb8-86c6-4a5c-a825-9a40c5299d01', '0515', '515', 'DCU#6 5위(R3) - 출입문 열림 시간 초과', 'M3', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 “Open time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 열림 동작시간이 6초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도한 후, ‘장애물로 인한 열림 실패' 고장과 함께 ‘Open time out' 고장이 함께 현시 +', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('92a3e182-2a63-4868-8e7e-061b680db910', '1502', '1502', '기타장치용 DC 회로차단기 차단(Car3)', 'M2', 'W', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('92b41167-aedd-4eb2-a84f-d9c540fac00c', '0515', '515', 'DCU#1 4위(L2)-출입문 열림 시간 초과', 'Tc1', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 "Open time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 열림 동작시간이 6초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도 한 후, '장애물로 인한 열림실패' 고장과 함께 'Open time out' 고장이 함께 현시', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('92b4a0d3-dd29-4360-bf05-ff7463258bd5', '0519', '519', 'DCU#3 6위(L3) - ZVR 신호 에러', 'M2', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 “ZVR signal error” 신호가 “1”이 되면 검지 +', '출입문이강제로 닫히게 되고, 열림은 불가능', ' +1) 차량 ZVR 신호가 없는 상태(차량 주행상태)에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함. +', '해당 출입문 ZVR 신호 수신', '1) 차량 이 주행중이라면, 차량 이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('92bcfbe2-e529-402f-b949-d97b902b9bb3', '0165', '165', 'VVVF#3 - OVT 오동작검지(OVTD)', 'M2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('92c368f1-c654-4092-9c36-a4a737693eb1', '0175', '175', 'VVVF#2-HSCB 투입불량(HBNC)', 'M1', 'C', 'VVVF-HSCB 투입불량(HBNC)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT34의 Bit0 “HBNC” 신호가 "1"이 되면 검지.', null, 'HSCB 투입이 되지 않을 때 고장검지.', '동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) 판토하강상태에서 테스트모드로 전환하여 시퀀스를 투입하고 HSCB의 주접점 동작을 확인한다. +2) 주회로 차단기함 내에 HSCB의 보조접점의 동작상태를 확인한다. +3) 추진제어장치 계전기 유니트에 HBR 계전기 상태를 확인하여 계전기의 동작 여부를 확인한다. +4) 추진제어장치 시험기를 이용하여 제어기 시험을 실시하여 이상여부를 확인한다.', null, '3', '2025-10-12 01:21:37.578803+00', null, '로템40량(2018)-1단계', 'Rotem'), ('92e3f901-a8eb-47a5-8193-4bcd36b849e8', '1207', '1207', 'FDU#8 - 감지기4 화재감지', 'Tc2', 'W', 'FDU-감지기4 화재감지 (Car1~8)', 'W', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 “Detector1 State” 신호가 “11”이 되면 검지 +', '화재상태현시(자동소거 안 됨.)', '하기 2가지 조건을 모두 만족하여야 화재신호가 출력 됨. (연동모드 동작) +1) 이웃한(앞 혹은 뒤에 위치한) 감지기 중 하나의 감지기라도 주의 혹은 화재상태에 있어야 함. +2) Detector1(해당 감지기)에서 측정된 연기농도가 15% 이상이거나 온도가 65℃ 이상인 경우 +', '1) FDU의 복귀버튼 조작 시 +2) FDU 전원 리셋 시', '1) 해당 감지기 위치의 화재 발생 여부 확인 +2) 화재 오감지일 경우 FDU의 복귀버튼 취급 +3) 오감지일 경우 감지기의 청소주기 확인(내부 먼지 제거)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('92e6166a-cea6-4df0-a769-63ca9d43ae96', '0823', '823', '출력증폭기#1(AMP) 고장(Car#2)', 'M1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('92ef803c-2f75-46da-99fe-61941e9c311e', '0184', '184', '역행관련 회로차단기 차단(Car6)', 'M3', 'W', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.578803+00', null, '로템40량(2018)-1단계', 'Rotem'), ('92f42245-af3c-4f4a-bdb5-873096d3e680', '1407', '1407', 'BMS#8-Cell 저전압(CUV, 2.75V이하)', 'Tc2', 'D', 'BMS-Cell 저전압(CUV)', 'D', 'BMS', '해당차량의 배터리 셀 전압이 2.98V이하가 되면 검지', '차량 배터리 셀 저전압 검지 후, 2.84V 이하이면 방전 접촉기(DCK)가 차단된다.', '배터리 셀 저전압 (2.98V 이하).', '배터리 셀 전압 정상범위로 회복 (3~4.21V)', '1) 배터리 NFB 상태 확인 +2) 이상이 없으면 차량 전체를 리셋한다. +3) 차량 리셋 후에도 동일고장이면 사령실과 연락하여 조치를 취한다 (외부 충전기 연결 또는 차량 지원)', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('93271638-50cc-4ff6-ba3f-45a7db54d93b', '1708', '1708', '노선안내표시기#6 고장(Car1)', 'Tc1', 'C', '노선안내표시기#6 고장', 'C', 'PIC', 'PIC 장치의 노선안내표시기#6이 고장이 났을 때 발생 +', '1) 노선안내표시기 화면 미현시 +2) 노선안내표시기 안내 화면 오현시', '통신고장 +', '통신 재개 시', '1) 이더넷 스위치 링크 확인 +2) 이더넷 케이블 점검 +3) 제어보드 및 전원보드 교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('932da584-3c00-4399-8de0-556bb6b0a7cb', '0147', '147', 'VVVF#7 - ZVR 이상검지(ZVRD)', 'M4', 'D', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9330de4a-2518-4ef6-bd1e-b603584f1169', '0508', '508', 'DCU#2 1위(R1)-출입문 모터/인코더 고장', 'M1', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 "Motor / Encoder failure” 신호가 "1"이 되면 검지.', '출입문 정상동작 불가', '1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우 (인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터 / 인코더 회로가 손상된 경우', '모터/인코더 및 DCU가 정상상태이고, 전기적 연결상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있느지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. +★ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. + +1. DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. +2. DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) +3. DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('9353db7a-e2a2-4869-9aef-ebfd6af8aa60', '0314', '314', 'ATC#1 - 차륜경 오류', 'Tc1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('93600da6-d309-4d0a-89cf-5ca0bb8ec0b7', '0748', '748', 'HVAC#1 - 전자접촉기 차량히터1(CRRHT) 고장', 'Tc1', 'C', 'HVAC-전자접촉기 차량 히터1(CRRHT) 고장', 'C', 'HVAC', '객실 난방기 작동 중 CRRHT1 전자접촉기 고장 발생 +', '객실 전난방 시 2/3난방만 작동', '객실 전난방 작동 중 2.5초 이상 동안 CRRHT1 작동 feedback 신호가 수신되지 않는 경우 +', 'CRRHT1 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CRRHT1을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRRHT1과 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9364bb29-b987-46ee-8c32-741b8f587534', '1600', '1600', '미세먼지감지센서 모듈#1 통신고장', 'Tc1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9365ceb1-afd3-4f49-8103-aab54077f6d4', '0202', '202', 'BECU#4-덤프밸브고장(전두대차)', 'T1', 'C', 'BECU-덤프밸브고장(선두대차)', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit1 “덤프밸브고장(선두대차)” 신호가 "1"이 되면 검지.', '해당 차량 덤프밸브고장(선두대차) 검지 현시 및 해당 차량 활주제어 불가.', '해당 차량 선두대차의 덤프밸브가 작동하지 않음.', '해당 차량 선두대차의 덤프밸브가 정상 작동 시 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('936a4b78-0c42-4341-bcee-18b7390ae311', '0519', '519', 'DCU#5 6위(L3) - ZVR 신호 에러', 'T2', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 “ZVR signal error” 신호가 “1”이 되면 검지 +', '출입문이강제로 닫히게 되고, 열림은 불가능', ' +1) 차량 ZVR 신호가 없는 상태(차량 주행상태)에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함. +', '해당 출입문 ZVR 신호 수신', '1) 차량 이 주행중이라면, 차량 이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('939d7571-575f-4c55-8b82-73779ee3488b', '0704', '704', 'HVAC#2 - 냉난방장치1 압축기1 과부하', 'M1', 'C', 'HVAC-냉난방장치1 압축기1 과부하', 'C', 'HVAC', 'HVAC 냉방 작동 중 냉난방장치1 압축기1 또는 응축기1 모터에 과부하 발생 +', '냉방 기능 저하(전냉방 시 반냉방으로 작동)', ' +1) 냉방 작동 중 UNIT1의 압축기1 또는 응축기1 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRCM1과 연결된 THR1이 Trip 됨. +', 'UNIT1의 압축기1 또는 응축기1 모터의 과부하조건을 해소하여 정상 가능 상태로 만들고, THR1 및 마이콤 전원 리셋', '1) 냉난방 배전반의 점검커버를 열고, THR1의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR4의 전류 세팅값이 11.5A에 맞춰져 있는지 확인하여, 아닐 경우, (+) 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동시킨 후, THR1의 2차측 2, 4, 6 단자에서 각 단자 간 상간 전압이 AC 380V로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 압축기 및 응축기 단품 상태에서 점검을 한다. +7) THR1의 2차측 2, 4, 6 단자에서 각 단자 간 권선저항이 모두 같은지 확인한다. (±10% 이하) (압축기1 및 응축기1 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT1의 압축기1 또는 응축기1 모터의 결선을 해제한 후 각 부품의 권선저항을 확인 후, 문제가 있는 부품을 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR1 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('93a0ece5-0473-4ea6-8908-d72e0a37d93d', '0301', '301', 'ATC#8-과속경고', 'Tc2', 'W', 'ATC-과속경고', 'W', 'ATC', 'ATC의 RS485 데이터 중 ATC-TCMS SD TEXT11의 Bit0 “Over Speed Warning” 신호가 "1"이 되면 검지.', '1) MMI화면에 열차과속검지에 대한 경고 메시지 현시 +2) MMI에서 과속경보음 출력 +3) 상용만제동 체결', 'MMI 제한속도 대비 실제속도가 + 1 Km/h이상인 경우', '열차속도를 제한속도 이하로 감속', '제한속도 대비 열차속도가 감속되었는지 확인한다.', null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('93a4d601-ec9e-4532-b68f-59a2af043667', '0516', '516', 'DCU#2 2위(L1) - 출입문 장애물로 인한 닫힘 실패', 'M1', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Close failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림 상태로 대기', '도어 닫힘 중 3회 장애물감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('93b35248-64fc-4050-83ca-b666408b9e57', '0504', '504', 'DCU#4 3위(R2)-출입문 외부비상핸들 취급(EAD)', 'T1', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('93baeb71-e466-4175-ae97-93ab9ed13a83', '0228', '228', 'BC 코크(차하#1) 차단(Car2)', 'M1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('93bc5b92-c323-433a-9f7e-7dd063e597af', '0515', '515', 'DCU#3 1위(R1)-출입문 열림 시간 초과', 'M2', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 "Open time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 열림 동작시간이 6초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도 한 후, '장애물로 인한 열림실패' 고장과 함께 'Open time out' 고장이 함께 현시', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('93cf86da-47a5-4403-80bb-08de287bc7db', '0516', '516', 'DCU#5 6위(L3)-출입문 장애물로 인한 닫힘 실패', 'T2', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Close failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림상태로 대기', '도어 닫힘 중 3회 장애물 감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('93d9f771-0f11-4b2f-ba15-1371bd73184c', '1208', '1208', 'FDU#5 - 감지기4 고장', 'T2', 'C', 'FDU-감지기4 고장 (Car1~8)', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 “Detector1 State” 신호가 “10”이 되면 검지 +', '감지기고장상태현시(자동소거 안 됨)', ' +1) 감지기로부터 데이터 응답이 없는 경우 +2) 감지기로부터 수신된 데이터의 CRC가 맞지 않는 경우 +3) 감지기로부터 수신된 데이터의 ID가 송신 ID와 일치하지 않는 경우 +', 'FDU 전원 리셋 후 감지기로부터 정상적으로 데이터가 수신된 경우', '1) FDU 전원 리셋 후 고장 소거 여부 확인 +2) 정상동작중인 감지기와 위치 교환 후 FDU 전원 리셋 및 고장 상태 확인 +3) 동일한 감지기에서 고장 발생 시 감지기 교체 +4) 동일한 위치에서 고장 발생 시 감지기 라인 점검', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('93e6c626-5b0c-44bc-b86f-b814ae7b2347', '0712', '712', 'HVAC#3 - 냉난방장치2 압력스위치1(DPS) 고압', 'M2', 'D', 'HVAC-냉난방장치2 압력스위치1(DPS) 고압', 'D', 'HVAC', '냉난방장치2 냉매 압력스위치1 고압 발생 +', 'UNIT2CYCLE1 냉방기능불가', 'UNIT2DSP1측 냉매압력이 3초 이상 28±1(kgf/cm2) 이상 되는 경우 +', '냉매압력이 정상수치 15±0.7(kgf/cm2) 이하로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CRCM3의 부하측 전류를 측정하여 응축기 팬의 동작여부를 확인한다. +2) 응축기 코일의 전면에 이물질로 인한 막힘이 있는지 확인한다. +3) 응축기 팬 상부 그릴에 외부 이물질로 인한 막힘이 있는지 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9420ae43-2524-4d50-8af6-c157c1e4a7ed', '0520', '520', 'DCU#5 5위(R3)-이중계 절체 동작', 'T2', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 "Module switchover' 신호가 "1"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.392739+00', null, '로템40량(2018)-1단계', 'Rotem'), ('94211919-6135-4b6d-903d-1e00bf7d3d26', '0752', '752', 'HVAC#5 - 배기댐퍼 닫힘고장', 'T2', 'C', 'HVAC-배기댐퍼 닫힘고장', 'C', 'HVAC', '차량 배기댐퍼가 닫혀있는 상태에서 배기댐퍼 닫힘 리미트 스위치가 작동되지 않음 +', '배기댐퍼 닫힘 고장 현시', '배기댐퍼를 닫힘으로 제어했으나 닫힘 리미트 스위치 입력이 없을 경우 +', '배기댐퍼 닫힘 상태에서 리미트 스위치 입력이 정상적으로 입력', '1) 배기댐퍼가 닫힌 상태에서 닫힘 리미트 스위치가 정상적으로 작동되었는지 확인한다. +2) 닫힘 리미트 스위치가 정상작동 되었음에도 문제가 발생될 경우, 스위치를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('94212d2e-2af2-4faa-887b-12fa706d3dd4', '0509', '509', 'DCU#8 6위(L3) - 출입문 잠김 리미트 스위치 고장', 'Tc2', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 “DLS Failure” 신호가 “1”이 되면 검지 +', '출입문 잠김 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('942486ee-79c4-4d52-bbc2-768e70c06592', '0151', '151', 'VVVF#2 - 통신 이상검지(MONIA_ERR)', 'M1', 'C', 'VVVF-통신 이상 검지(MONIA_ERR)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT31의 Bit0 “MONIA_ERR” 신호가 “1”이 되면 검지 +', 'TCMS 화면에 고정정보 현시되며, 추진제어장치상태화면에 나타나는 데이터에 변동이 없음.', 'TCMS-추진제어장치(VVVF)간통신정보가 3초 이상동일한정보로 유지되면 통신고장을 검지함. +', 'TCMS-추진제어장치(VVVF)간통신정보가정상적으로 통신이 될 경우 소거됨.', '1) 추진제어장치(VVVF) 리셋 실시 후 통신고장 소거됨을 확인 +2) 통신고장 소거가 되지 않을 경우 추진제어장치 MON 보드 신품으로 교체 후 통신고장 소거여부 확인 +3) 위 조건에도 고장이 소거되지 않을 경우, TCMS-추진제어장치 간 RS485 통신케이블 연결 상태 점검', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9425162f-244b-4203-90f7-2547538b6c28', '0503', '503', 'DCU#4 3위(R2)-출입문 내부비상핸들 취급(EED)', 'T1', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('94393ab8-6411-4511-b08e-573dea968e3d', '0215', '215', 'BECU#1 - 후미대차 AS 압력센서 고장', 'Tc1', 'C', 'BECU-후미대차 AS 압력센서 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit6 “후미대차 AS 압력센서 고장” 신호가 +“1”이 되면 검지 +', '해당 차량 후미대차 AS 압력센서 고장검지 현시 및 해당 차량 정상적인 응하중제동제어 불가', '해당 차량의 후미대차 AS 압력센서(AS3, AS4) 고장 +', '해당 차량의 후미대차 AS 압력센서(AS3, AS4)가 정상일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('943d5be5-7bcc-49ef-8596-1b2b481cb29f', '0731', '731', 'HVAC#1-냉난방장치1 리턴 센서 고장', 'Tc1', 'C', 'HVAC-냉난방장치1 리턴 센서 고장', 'C', 'HVAC', '냉난방장치1의 리턴 센서 고장 발생', '냉난방장치1 리턴센서 고장현시', '온도센서 검지범위는 -45~85도 (820~1330옴) 인데, 2초 이상 검지범위를 벗어나는 경우', '온도센서 검지 값이 2초 이상 허용온도 범위 내 일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820~1330옴 을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우, 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('943dfaa1-61a8-4f6c-893e-bc927c0f6d4a', '0509', '509', 'DCU#1 1위(R1) - 출입문 잠김 리미트 스위치 고장', 'Tc1', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 “DLS Failure” 신호가 “1”이 되면 검지 +', '출입문 잠김 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('944074e7-6a2a-4615-9670-7499448f0a99', '0506', '506', 'DCU#1 3위(R2)-출입문 입력 저전압', 'Tc1', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 "1"이 되면 검지.', '저전안 상태 (출입문 동작이 심하게 느려지거나 작동조차 안될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('94467015-68b0-4ac2-9714-f58122e1adb0', '0867', '867', '통합제어기(AVC) 문구 없음(Car#8)', 'Tc2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('94479573-0796-48cc-9822-3d3a166eaa73', '0205', '205', 'BECU#6 - 회생제동요구 비정상', 'M3', 'C', 'BECU-회생제동요구 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit4 “회생제동요구 비정상” 신호가 “1”이 +되면 검지 +', '해당 차량 회생제동 요구 비정상 검지 현시', '해당 차량의 회생제동 요구 출력이 정상범위를 벗어남. +', '해당 차량 회생제동 요구 출력이 정상범위로 복귀 시 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('94591b03-bab5-49a1-8ab0-339e9ef69110', '0734', '734', 'HVAC#4-전자접촉기 압축기(CRCM)3 고장', 'T1', 'C', 'HVAC-전자접촉기 압축기(CRCM)3 고장', 'C', 'HVAC', 'HVAC 냉방작동 중 CRCM3 전자접촉기 고장 발생.', '냉방 기능 저하(전냉방시 반냉방으로 작동)', '냉방작동 중 2.5초 이상동안 CRCM3 작동 feedback 신호가 수신되지 않는 경우', 'CRCM3 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CRCM3을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRCM3과 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('945a6b40-8a6a-4391-9fa9-5f761df8a74c', '0726', '726', 'HVAC#2 - 배기팬2 과부하', 'M1', 'C', 'HVAC-배기팬2 과부하', 'C', 'HVAC', 'HVAC 환기작동 중 차량 배기팬2 모터에 과부하 발생 +', '환기 시 차량 배기팬2 운전 불가능', ' +1) 냉방 작동 중 챠량 배기팬2 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRVF2와 연결된 THR10이 Trip 됨. +', '차량 배기팬2 모터의 과부하조건을 해소하여 정상 가능 상태로 만들고, THR10 및 마이콤 전원 리셋', '1) 냉난방 배전반의 점검커버를 열고, THR10의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR10의 전류 세팅값이 2.5A에 맞춰져 있는지 확인하여, 아닐 경우, (+) 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동시킨 후, THR10의 2차측 2, 4 단자와 6 단자 사이의 전압이 DC 100V로 정상 측정 되는지 확인한다. +5) 만약 전압이 측정되지 않을 시, 전원이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, THR10 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('94649bec-e162-48c7-af7c-220e216cb614', '0510', '510', 'DCU#4 2위(L1)-출입문 닫힘 리미트 스위치1 고장', 'T1', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 "DCS1 Failure(Leftt)” 신호가 "1"이 되면 검지.', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('946c1804-49af-4430-94ca-d38d7ea3a698', '0712', '712', 'HVAC#6 - 냉난방장치2 압력스위치1(DPS) 고압', 'M3', 'D', 'HVAC-냉난방장치2 압력스위치1(DPS) 고압', 'D', 'HVAC', '냉난방장치2 냉매 압력스위치1 고압 발생 +', 'UNIT2CYCLE1 냉방기능불가', 'UNIT2DSP1측 냉매압력이 3초 이상 28±1(kgf/cm2) 이상 되는 경우 +', '냉매압력이 정상수치 15±0.7(kgf/cm2) 이하로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CRCM3의 부하측 전류를 측정하여 응축기 팬의 동작여부를 확인한다. +2) 응축기 코일의 전면에 이물질로 인한 막힘이 있는지 확인한다. +3) 응축기 팬 상부 그릴에 외부 이물질로 인한 막힘이 있는지 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('946cb0ed-87f4-4628-bfb0-e48d62062181', '1206', '1206', 'FDU#3-감지기3 고장', 'M2', 'C', 'FDU-감지기3 고장', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 "Detector1 State” 신호가 "10"이 되면 검지.', '감지기 고장상태 현시(자동 소거 안됨)', '1) 감지기로부터 데이터 응답이 없는경우. +2) 감지기로부터 수신된 데이터의 CRC가 맞지 않는경우 +3) 감지기로부터 수신된 데이터의 ID가 송신 ID와 일치하지 않는경우', 'FDU 전원 리셋 후 감지기로부터 정상적으로 데이터가 수신된 경우', '1) FDU 전원 리셋 후 고장 소거 여부 확인 +2) 정상 동작중인 감지기와 위치 교환 후 FDU 전원 리셋 및 고장 상태 확인 +3) 동일한 감지기에서 고장 발생시 감지기 교체 +4) 동일한 위치에서 고장 발생시 감지기 라인 점검', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('947574b9-28f5-41a8-b290-3355fb96592f', '0505', '505', 'DCU#3 4위(L2) - 출입문 입력 고전압', 'M2', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 “1”이 되면 검지 +', '고전압 상태(그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상 +', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('948dde55-bdfb-48e2-849e-42ddc96f1a77', '0216', '216', 'BECU#6 - 전두대차 AS 압력센서 고장', 'M3', 'C', 'BECU-전두대차 AS 압력센서 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit7 “전두대차 AS 압력센서 고장” 신호가 +“1”이 되면 검지 +', '해당 차량 전두대차 AS 압력센서 고장검지 현시 및 해당 차량 정상적인 응하중제동제어 불가', '해당 차량의 전두대차 AS 압력센서(AS1, AS2) 고장 +', '해당 차량의 전두대차 AS 압력센서(AS1, AS2)가 정상일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('949a891d-d708-4fe8-9df3-c0298146cab1', '0232', '232', 'BC 코크(차하#2) 차단(Car3)', 'M2', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('94aea2f7-119e-4205-a388-c163609ca05e', '0520', '520', 'DCU#7 3위(R2) - 이중계 절체 동작', 'M4', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 “Module switchover” 신호가 “1”이 되면 검지 +', '이중계 절체 동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러) 이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A'모듈 및 ‘B'모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('94da90a1-4b8e-4098-87db-ac231f6e92cf', '1702', '1702', '노선안내표시기#2 고장(Car3)', 'M2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('94dec845-f0c7-457a-bb53-a138547b288f', '0130', '130', 'VVVF-IPM Y상 이상검지(GDFY) (Car2)', 'M1', 'C', 'VVVF-IPM Y상 이상검지(GDFY)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT34의 Bit4 “GDFY” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 'IPM Y상 이상검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치 내부 IPM에 과전류, 과온이 검지될경우.', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반배전반의 VVVFIC nfb 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 견인전동기로 출력되는 3상의 전류치 확인함. +3) 특정상의 전류치가 비정상적일 경우 특정상에 해당되는 IPM, 전류센서, 모터결선을 확인한다. +4) 전류센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작상태를 시험기를 통해 확인한다. +6) IPM 전원공급기의 전원연결상태 또는 광케이블의 연결상태와 배선상태를 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.578803+00', null, '다대48량(2015)', 'Rotem'), ('94e51766-e848-45a5-aacc-b452a6cd5648', '1205', '1205', 'FDU#5-감지기3 화재감지', 'T2', 'W', 'FDU-감지기3 화재감지', 'W', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 "Detector1 State” 신호가 "11"이 되면 검지.', '화재상태 현시(자동 소거 안됨)', '하기 2가지 조건을 모두 만족하여야 화재신호가 출력 됨(연동모드 동작). +1) 이웃한(앞 혹은 뒤에 위치한) 감지기 중 하나의 감지기라도 주의 혹은 화재상태에 있어야 함. +2) Detector1(해당 감지기)에서 측정된 연기농도가 15% 이상이거나 온도가 65℃ 이상인 경우', '1) FDU의 복귀버튼 조작시 +2) FDU 전원 리셋시', '1) 해당 감지기 위치의 화재 발생 여부 확인 +2) 화재 오 감지일경우 FDU의 복귀버튼 취급 +3) 오감지일경우 감지기의 청소주기 확인(내부 먼지 제거)', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('94e81d2a-0363-4b10-abec-ad7347ec7168', '0752', '752', 'HVAC#2-배기댐퍼 닫힘고장', 'M1', 'C', 'HVAC-배기댐퍼 닫힘고장', 'C', 'HVAC', '차량 배기댐퍼가 닫혀있는 상태에서 배기댐퍼 닫힘 리미트 스위치가 작동되지 않음', '배기댐퍼 닫힘 고장 현시', '배기댐퍼를 닫힘으로 제어했으나 닫힘 리미트 스위치 입력이 없을 경우', '배기댐퍼 닫힘 상태에서 리미트 스위치 입력이 정상적으로 입력', '1) 배기댐퍼가 닫힌 상태에서 닫힘 리미트 스위치가 정상적으로 작동되었는지 확인한다. +2) 닫힘 리미트 스위치가 정상작동 되었음에도 문제가 발생될 경우, 스위치를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('94ebd192-c5c4-48a5-866f-0a79d5fa5170', '0509', '509', 'DCU#8 3위(R2) - 출입문 잠김 리미트 스위치 고장', 'Tc2', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 “DLS Failure” 신호가 “1”이 되면 검지 +', '출입문 잠김 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('94ee97af-0fb4-47cd-96da-6f649ac4704c', '0228', '228', 'BC 코크(차하#1) 차단(Car4)', 'T1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('94f0df34-8917-47cb-996c-88bd69b8c24c', '0241', '241', 'BECU#8-1축스키드신호', 'Tc2', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('94f561cf-bf2d-452a-970c-98dd0b690770', '0154', '154', 'VVVF#2-후진속도검지(BSD)', 'M1', 'W', 'VVVF-후진속도검지(BSD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT31의 Bit3 “BSD” 신호가 "1"이 되면 검지.', null, '정차 후 출발 시 차량이 구배에 의하여 뒤로 이동할 경우 발생.', '노치 OFF', '1) 추진제어장치 고장기록을 수집하여 차량 속도가 마이너스로 기록되어있는 경우 차량의 정차제동 계통을 확인한다. +2) 추진제어장치 시험기를 이용하여 TCU(통합제어장치)의 이상여부를 확인한다.', null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('94f61c2e-1614-406c-8538-dcbe91bc197e', '1304', '1304', 'RTD#8-RTD 시스템 고장', 'Tc2', 'D', 'RTD-시스템 고장', 'D', 'RTD', 'RTD의 RS485 데이터 중 RTD-TCMS SD TEXT1의 Bit7 “RTD 시스템 고장” 신호가 "1"이 되면 검지.', '무선랜 상태 고장 또는 메모리 상태고장 중 하나가 발생할 경우 Set됨', 'RTD부팅시 SD메모리 인식불량 또는 브릿지보드상태 불량', '해당 고장의 기능의 정상동작.', '해당 고장을 확인하여 조치를 취한다.', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('950546cc-d909-4032-a59b-d8b717f1b799', '0746', '746', 'HVAC#8 - 전자접촉기 배기팬1(CRVF) 고장', 'Tc2', 'C', 'HVAC-전자접촉기 배기팬1(CRVF) 고장', 'C', 'HVAC', 'HVAC 환기 작동 중 CRVF1 전자접촉기 고장 발생 +', '환기 시 차량 배기팬1 운전 불가능', '환기 작동 중 2.5초 이상 동안 CRVF1 작동 feedback 신호가 수신되지 않는 경우 +', 'CRVF1 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CRVF1을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRVF1과 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('950720e9-746b-4aac-bc47-a898f16fe47e', '0218', '218', 'BECU#7 - 인통선로직 비정상', 'M4', 'C', 'BECU-인통선로 직 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit1 “인통선로 직 비정상” 신호가 “1”이 되면 +검지 +', '해당 차량 인통선로 직비정상 검지 현시 및 해당 차량 정상적인제동제어불가 (상용제동 지령에 따른 제어)', '해당 차량의 추진선택(P), 제동선택(B) 신호가 동시에 ON됨. +', '해당 차량의 추진선택(P), 제동선택(B) 신호가 정상작동(상보적으로 작동)될 경우 소거', 'BECU를 리셋(BECU CB OFF/ON) 한 뒤, 마스콘을 제동 7단으로 5초간 취급하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('950796a4-268f-4fbd-8ee5-0215a3b46719', '0703', '703', 'HVAC#6 - 냉난방장치1 압축기2 과부하', 'M3', 'C', 'HVAC-냉난방장치1 압축기2 과부하', 'C', 'HVAC', 'HVAC 냉방 작동 중 냉난방장치1 압축기2 또는 응축기2 모터에 과부하 발생 +', '냉방 기능 저하(전냉방 시 반냉방으로 작동)', ' +1) 냉방 작동 중 UNIT1의 압축기2 또는 응축기2 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRCM2와 연결된 THR2가 Trip 됨. +', 'UNIT1의 압축기2 또는 응축기2 모터의 과부하조건을 해소하여 정상 가능 상태로 만들고, THR2 및 마이콤 전원 리셋', '1) 냉난방 배전반의 점검커버를 열고, THR2의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR2의 전류 세팅값이 11.5A에 맞춰져 있는지 확인하여, 아닐 경우, (+) 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동시킨 후, THR2의 2차측 2, 4, 6 단자에서 각 단자 간 상간 전압이 AC 380V로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 압축기 및 응축기 단품 상태에서 점검을 한다. +7) THR2의 2차측 2, 4, 6 단자에서 각 단자 간 권선저항이 모두 같은지 확인한다. (±10% 이하) (압축기2 및 응축기2 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT1의 압축기1 또는 응축기1 모터의 결선을 해제한 후 각 부품의 권선저항을 확인 후, 문제가 있는 부품을 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR2 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('952caf3e-f585-489e-9b09-fac170e64ece', '0218', '218', 'BECU#6 - 인통선로직 비정상', 'M3', 'C', 'BECU-인통선로 직 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit1 “인통선로 직 비정상” 신호가 “1”이 되면 +검지 +', '해당 차량 인통선로 직비정상 검지 현시 및 해당 차량 정상적인제동제어불가 (상용제동 지령에 따른 제어)', '해당 차량의 추진선택(P), 제동선택(B) 신호가 동시에 ON됨. +', '해당 차량의 추진선택(P), 제동선택(B) 신호가 정상작동(상보적으로 작동)될 경우 소거', 'BECU를 리셋(BECU CB OFF/ON) 한 뒤, 마스콘을 제동 7단으로 5초간 취급하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9543f179-626e-4071-996d-921dad8bb2e0', '0500', '500', 'DCU#5 6위(L3) 통신고장', 'T2', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS 간 RS485 통신고장이 검지되면 발생 +', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐상태 등의 변화가 없음.', ' +1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우 +', '해당 차량의 DCU 및 CU/TU의 전원이 정상상태이고, 통신 라인 연결 상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜져 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적 으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는 데도 지속적으로 통신고장이 검지되면, DCU의 X2, X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상 체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9562b1e3-263f-4768-85fd-8807cee3f269', '1503', '1503', '난방장치용 AC 회로차단기 차단(Car5)', 'T2', 'W', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('956de391-15d5-4da2-8501-47697de44bca', '0519', '519', 'DCU#7 1위(R1)-ZVR 신호 에러', 'M4', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 "ZVR signal error” 신호가 "1"이 되면 검지.', '출입문이 강제로 닫히게 되고, 열림은 불가능', '1) 차량 ZVR 신호가 없는 상태 (차량 주행상태) 에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함.', '해당출입문 ZVR 신호 수신', '1) 차량이 주행중이라면, 차량이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('95840aef-8f52-4f81-9e04-6416db8caf00', '0506', '506', 'DCU#2 5위(R3) - 출입문 입력 저전압', 'M1', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 “1”이 되면 검지 +', '저전압상태(출입문 동작이 심하게 느려지거나 작동조차 안 될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하 +', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('95841ba5-303f-428a-9093-42d82eb4cdc0', '0751', '751', 'HVAC#8-냉난방장치1 보조히터 과열', 'Tc2', 'C', 'HVAC-냉난방장치1 보조히터 과열', 'C', 'HVAC', 'HVAC1 보조난방기 작동 중 과열 발생.', 'UNIT1 보조난방기 난방 불가', '보조난방기 작동 중 1초 이상동안 온도가 70도 이상으로 과온센서 정상 신호가 수신되지 않는 경우', '1초 이상동안 60도 미만으로 온도가 떨어져 과온센서 정상 신호가 수신되는 경우', '1) 보조난방기가 꺼진 상태에서도 문제 발생 시, 과온 센서를 교체한다. +2) 센서 교체 후에도 문제가 발생되면, 배선에 문제가 없는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('958837a9-98f6-4c85-a11d-3339ae16f345', '0506', '506', 'DCU#2 3위(R2) - 출입문 입력 저전압', 'M1', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 “1”이 되면 검지 +', '저전압상태(출입문 동작이 심하게 느려지거나 작동조차 안 될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하 +', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('959d6dfc-0428-4a2d-a20c-d07db5bdf1f3', '0308', '308', 'ATC#1 - 40코드 기동시험 실패 EB체결', 'Tc1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('95a79b38-0c44-45eb-964c-f9c78ca32e03', '0030', '30', '비상제동 스위치 취급', 'Tc1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('95ad8c7f-4530-4a40-af20-9ea25b95fa87', '0731', '731', 'HVAC#5-냉난방장치1 리턴 센서 고장', 'T2', 'C', 'HVAC-냉난방장치1 리턴 센서 고장', 'C', 'HVAC', '냉난방장치1의 리턴 센서 고장 발생', '냉난방장치1 리턴센서 고장현시', '온도센서 검지범위는 -45~85도 (820~1330옴) 인데, 2초 이상 검지범위를 벗어나는 경우', '온도센서 검지 값이 2초 이상 허용온도 범위 내 일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820~1330옴 을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우, 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('95c492d8-43fc-49f6-a18e-e189c5495760', '0146', '146', 'VVVF#3-과온검지1(THDL)', 'M2', 'C', 'VVVF-과온검지1(THDL)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT30의 Bit3 “THDL” 신호가 "1"이 되면 검지.', null, '인버터 내부 온도가 100 °C이상 도달 시 고장발생.', '90 °C 이하 도달 및 제동 OFF.', '1) 상기고장이 간헐적으로 발생하는 경우 아래와 같이 조치한다. +2) 상온에서 TCU(통합제어기)에 RS232케이블을 이용하여 노트북(제공품)과 연결 후 모니터링 프로그램으로 인버터의 온도값을 확인한다. +3) 인버터 유니트의 온도센서 배선 및 커넥터 체결상태를 확인한다. +4) 추진제어장치의 냉각부에 손상이 없는지 확인한다. +5) 추진제어장치 시험기를 이용하여 TCU(통합제어장치)의 이상여부를 확인한다. +6) 상기의 점검부분에 이상이 있을 경우 관련부품을 교체한다. +7) 동일 고장이 지속적으로 발생 시 INV 스택을 교체한다.', null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('95f5977f-6850-4ded-86ef-956ccb2ca6fc', '0515', '515', 'DCU#2 5위(R3)-출입문 열림 시간 초과', 'M1', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 "Open time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 열림 동작시간이 6초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도 한 후, '장애물로 인한 열림실패' 고장과 함께 'Open time out' 고장이 함께 현시', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('95f617d6-325f-4693-9c44-200ed1b408c8', '0879', '879', '영상저장장치(NVR) 통신고장(Car#8)', 'Tc2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('96016fde-5b77-45fd-b4f1-4ca1db250561', '0739', '739', 'HVAC#2-전자접촉기 증발기2(CREF) 고장', 'M1', 'C', 'HVAC-전자접촉기 증발기2(CREF) 고장', 'C', 'HVAC', 'HVAC 냉방작동 중 CREF2 전자접촉기 고장 발생.', 'UNIT1 냉방 작동 불가', '냉방작동 중 2.5초 이상동안 CREF2 작동 feedback 신호가 수신되지 않는 경우', 'CREF2 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CREF2를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CREF2와 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('960a1484-9ab4-49b7-8c64-2a50150dd1fa', '0510', '510', 'DCU#4 6위(L3) - 출입문 닫힘 리미트 스위치1 고장', 'T1', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 “DCS1 Failure(Leftt)” 신호가 “1”이 되면 검지 +', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('960a6206-5759-43fe-8580-8d5228de1252', '0514', '514', 'DCU#7 4위(L2) - 출입문 닫힘 시간 초과', 'M4', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 “Close time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 닫힘 동작 시간이 7초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도한 후, ‘장애물로 인한 닫힘 실패' 고장과 함께 ‘Close time out' 고장이 함께 현시 +', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('960b6878-29c4-4afe-868f-5bf8db149c89', '0320', '320', 'ATC#1 - ATO 정위치 정차 오류', 'Tc1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9611b546-5a12-488d-9414-d2d65bf55220', '0161', '161', 'VVVF#3 - 통합제어장치 이상검지(CPUWDTD)', 'M2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9618ba73-3579-4127-907e-bfbf2863ef44', '0504', '504', 'DCU#7 5위(R3)-출입문 외부비상핸들 취급(EAD)', 'M4', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('96265dcc-04c6-4991-8bd0-f684b1492077', '0894', '894', '비상인터폰 동작(Car#1 - 1)', 'Tc1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9631acfc-399f-4976-8794-16706acc4a0b', '0201', '201', 'BECU#3-덤프밸브고장(후미대차)', 'M2', 'C', 'BECU-덤프밸브고장(후미대차)', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit0 “덤프밸브고장(후미대차)” 신호가 "1"이 되면 검지.', '해당 차량 덤프밸브고장(후미대차) 검지 현시 및 해당 차량 활주제어 불가.', '해당 차량 후미대차의 덤프밸브가 작동하지 않음.', '해당 차량 후미대차의 덤프밸브가 정상 작동 시 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('96338184-1808-440d-9100-08ee29f70019', '0702', '702', 'HVAC#8 - 냉난방장치2 압축기1 과부하', 'Tc2', 'C', 'HVAC-냉난방장치2 압축기1 과부하', 'C', 'HVAC', 'HVAC 냉방 작동 중 냉난방장치2 압축기1 또는 응축기1 모터에 과부하 발생 +', '냉방 기능 저하(전냉방 시 반냉방으로 작동)', ' +1) 냉방 작동 중 UNIT2의 압축기1 또는 응축기1 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRCM3과 연결된 THR3이 Trip 됨. +', 'UNIT2의 압축기1 또는 응축기1 모터의 과부하조건을 해소하여 정상 가능 상태로 만들고, THR3 및 마이콤 전원 리셋', '1) 냉난방 배전반의 점검커버를 열고, THR3의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR4의 전류 세팅값이 11.5A에 맞춰져 있는지 확인하여, 아닐 경우, (+) 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동시킨 후, THR3의 2차측 2, 4, 6 단자에서 각 단자 간 상간 전압이 AC 380V로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 압축기 및 응축기 단품 상태에서 점검을 한다. +7) THR3의 2차측 2, 4, 6 단자에서 각 단자 간 권선저항이 모두 같은지 확인한다. (±10% 이하) (압축기1 및 응축기1 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT2의 압축기1 또는 응축기1 모터의 결선을 해제한 후 각 부품의 권선저항을 확인 후, 문제가 있는 부품을 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR3 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('96355821-f469-4e7b-a73b-67083b1303c1', '0150', '150', 'VVVF#3 - 가선저전압검지(ESLVD)', 'M2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('963c3187-1f34-49b3-9286-9aa63fe9f847', '0742', '742', 'HVAC#2-전자접촉기 보조히터3(AHEK) 고장', 'M1', 'C', 'HVAC-전자접촉기 보조히터3(AHEK) 고장', 'C', 'HVAC', 'HVAC 보조난방기 작동 중 AHEK3 전자접촉기 고장 발생.', 'UNIT2 보조난방기 전난방 시 반난방만 작동', '보조난방기 작동 중 2.5초 이상동안 AHEK3 작동 feedback 신호가 수신되지 않는 경우', 'AHEK3 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) AHEK3을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, AHEK3과 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('9643672f-c7bb-4f40-ac42-75b92a86581d', '0516', '516', 'DCU#2 4위(L2)-출입문 장애물로 인한 닫힘 실패', 'M1', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Close failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림상태로 대기', '도어 닫힘 중 3회 장애물 감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('964e36e4-eda0-470f-8e55-88b8e171c7c3', '0511', '511', 'DCU#3 2위(L1) - 출입문 닫힘 리미트 스위치2 고장', 'M2', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 “DCS2 Failure(Right)” 신호가 “1”이 되면 검지 +', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('966ef453-40ea-4aee-8f9f-a00920ed333e', '0515', '515', 'DCU#7 2위(L1)-출입문 열림 시간 초과', 'M4', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 "Open time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 열림 동작시간이 6초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도 한 후, '장애물로 인한 열림실패' 고장과 함께 'Open time out' 고장이 함께 현시', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('96753f1a-ebee-4b93-829c-cc0987ec5229', '0747', '747', 'HVAC#2-전자접촉기 차량히터2(CRRHT) 고장', 'M1', 'C', 'HVAC-전자접촉기 차량히터2(CRRHT) 고장', 'C', 'HVAC', '객실 난방기 작동 중 CRRHT2 전자접촉기 고장 발생.', '객실 전난방 시 1/3난방만 작동', '객실 전난방 작동 중 2.5초 이상동안 CRRHT2 작동 feedback 신호가 수신되지 않는 경우', 'CRRHT2 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CRRHT2를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRRHT2와 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('9680e640-98b9-4a34-8b84-7ff2d64ae9b3', '0140', '140', 'VVVF#2-제어전원전압이상(TCU)(CLVD_S)', 'M1', 'C', 'VVVF-제어전원전압이상(TCU)(CLVD_S)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT29의 Bit5 “CLVD_S” 신호가 "1"이 되면 검지.', null, '통합제어기 내부의 제어전원 이상 검지 시 중고장 발생.', '동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) TCU(통합제어장치)의 입력에 제어전원 DC70 ~100V가 인가되는지 확인한다. +2) TCU(통합제어장치) 중 PWS 보드의 ±15V, 5V, 24V의 테스트 단자의 전압을 멀티테스터로 측정하여 전압의 오차가 ±10% 이내인지 확인한다. +3) 상기의 점검부분에 이상이 있을 경우 PWS보드를 교체한다. +4) PWS 보드 교체 후 동일고장 재발 시 TCU(통합제어장치)를 교체한다.', null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('9686d1f1-7718-4e4c-9a57-7a26fa605c3a', '0502', '502', 'DCU#8 4위(L2) - 출입문 장애물검지', 'Tc2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('968aea44-4884-4e6f-8c64-885c6e5a7b40', '0745', '745', 'HVAC#2 - 전자접촉기 배기팬2(CRVF) 고장', 'M1', 'C', 'HVAC-전자접촉기 배기팬2(CRVF) 고장', 'C', 'HVAC', 'HVAC 환기 작동 중 CRVF2 전자접촉기 고장 발생 +', '환기 시 차량 배기팬2 운전 불가능', '환기 작동 중 2.5초 이상 동안 CRVF2 작동 feedback 신호가 수신되지 않는 경우 +', 'CRVF2 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CRVF2를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRVF2와 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('969aa0c9-a03d-45b9-ae48-42f324c3a63a', '1205', '1205', 'FDU#4-감지기3 화재감지', 'T1', 'W', 'FDU-감지기3 화재감지', 'W', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 "Detector1 State” 신호가 "11"이 되면 검지.', '화재상태 현시(자동 소거 안됨)', '하기 2가지 조건을 모두 만족하여야 화재신호가 출력 됨(연동모드 동작). +1) 이웃한(앞 혹은 뒤에 위치한) 감지기 중 하나의 감지기라도 주의 혹은 화재상태에 있어야 함. +2) Detector1(해당 감지기)에서 측정된 연기농도가 15% 이상이거나 온도가 65℃ 이상인 경우', '1) FDU의 복귀버튼 조작시 +2) FDU 전원 리셋시', '1) 해당 감지기 위치의 화재 발생 여부 확인 +2) 화재 오 감지일경우 FDU의 복귀버튼 취급 +3) 오감지일경우 감지기의 청소주기 확인(내부 먼지 제거)', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('96ad49bc-f618-4995-a6f3-826abe08d913', '0914', '914', 'TRAIN RADIO#1-DID(표출연동장치) 고장', 'Tc1', 'C', 'TRAIN RADIO-DID(표출연동장치) 고장', 'C', 'RADIO', 'Train Radio의 RS485 데이터 중 Train Radio-TCMS SD TEXT15의 Bit2 “DID 고장” 신호가 "1"이 되면 검지.', 'CCTV 모니터 장치에 열차위치정보 표시 불가', 'HW 고장', '제어기 리셋', null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('96c9cd46-2186-4de2-b0b0-18e29e3e3ea4', '0857', '857', '0', 'T2', '0', null, null, '0', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('96cf4405-f4b1-4693-bd78-4c32228cc273', '1009', '1009', 'CMSB#8-', 'Tc2', '0', null, null, '0', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('96cf496f-33af-48e4-9040-788e6d247817', '1400', '1400', 'BMS#1 통신고장', 'Tc1', 'B', 'BMS 통신고장', 'B', 'BMS', 'BMS와 TCMS 간 RS485 통신고장이 검지되면 발생 +', '화면상BMS의 배터리전압 등의 데이터가반응하지 않음.', 'TCMS의 데이터를 수신 못함. +', 'TCMS의 데이터를 받고, TCMS에서 BMS 상태정보가 표시됨.', '1) BMS 보드 교체 +2) TCMS 통신 포트 점검 +3) TCMS와 BMS 간의 통신계통 점검', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('96d0eb0d-b29f-43c8-a502-5133e9c3964c', '0713', '713', 'HVAC#1 - 냉난방장치1 압력스위치2(DPS) 저압', 'Tc1', 'D', 'HVAC-냉난방장치1 압력스위치2(DPS) 저압', 'D', 'HVAC', '냉난방장치1 냉매 압력스위치2 저압 발생 +', 'UNIT1CYCLE2 냉방기능불가', 'UNIT1DSP2측 냉매압력이 3초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우 +', '냉매압력이 정상수치 2±0.5(kgf/cm2) 이상으로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CREF2의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)를 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설 여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안 되는 것을 확인한 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('96e01969-0836-4e2b-ba7d-5427b53c8db9', '0711', '711', 'HVAC#8-냉난방장치2 압력스위치1(DPS) 저압', 'Tc2', 'D', 'HVAC-냉난방장치2 압력스위치1(DPS) 저압', 'D', 'HVAC', '냉난방장치2 냉매 압력스위치1 저압 발생.', 'UNIT2 CYCLE1 냉방 기능 불가', 'UNIT2 DSP1측 냉매 압력이 3초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우', '냉매 압력이 정상 수치 2±0.5(kgf/cm2 이상으로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CREF4의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)을 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안되는 것을 확인한 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('96e2a13a-b1ac-4c6d-b220-646a04860571', '0157', '157', 'VVVF#3 - FC충전불량(FCD)', 'M2', 'C', 'VVVF-FC 충전불량검지(FCD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT33의 Bit6 “FCD” 신호가 “1”이 되면 검지 +', '1) TCMS 화면 하단 또는 고장화면에 ‘FC 충전 불량 검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생함. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉은색으로 표기되며, HSCB, LB1, 2 개방되어 동력 손실 발생함.', '추진제어장치 기동 시 FC전압이 1,000V 이하일 경우 검지됨. +', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반 배전반의 VVVFIC nfb 재투입 또는 차량 배터리 전원 재투입', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 FC전압에 이상이 있는지 확인한다. +3) 추진제어장치 내부 고전압부에 소손흔적이 있는지 확인한다. +4) LB Box 내부의 충전저항기의 소손이 없는지 확인한다. +5) FC에 연결된 부스바의 체결상태가 양호한지 확인한고, 부스바를 분리하여 FC의 Capacitance를 측정하여 이상이 없는지 확인한다. +6) 전압센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +7) SEN 보드의 동작 상태를 시험기를 통해 확인한다. +8) 견인전동기 각상의 절연상태 및 각상과 접지 간의 절연상태를 확인한다. +9) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('96e9e865-87f6-40bb-b7f8-2c4a70026f8b', '0706', '706', 'HVAC#3-냉난방장치1 증발기2 과부하', 'M2', 'C', 'HVAC-냉난방장치1 증발기2 과부하', 'C', 'HVAC', 'HVAC 냉방작동 중 냉난방장치1 증발기 모터에 과부하 발생.', 'UNIT1 냉방 작동 불가', '1) 냉방작동 중 UNIT1의 증발기 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CREF2와 연결된 THR6이 Trip 됨.', 'UNIT1의 증발기 모터의 과부하 조건을 해소하여 정상 가능 상태로 만들고, THR6 및 마이콤 전원 리셋', '1) 냉난방배전반의 점검커버를 열고, THR6의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR6의 전류 세팅값이 3A에 맞춰져 있는지 확인하여, 아닐 경우, 십자 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동 시킨 후, THR6의 2차측 2,4,6 단자에서 각 단자간 상간 전압이 AC 380V으로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 증발기 단품 상태에서 점검을 한다. +7) THR6의 2차측 2,4,6 단자에서 각 단자간 권선저항이 모두 같은지 확인한다. (±10% 이하) (증발기 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT1의 증발기 모터의 결선을 해제한 후 4극 및 6극 모터의 권선저항을 확인 후, 문제가 있을 겨우, 증발기 모터를 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR6 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('96ea3736-354f-42c6-81b2-4573504b6bdc', '0510', '510', 'DCU#3 4위(L2) - 출입문 닫힘 리미트 스위치1 고장', 'M2', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 “DCS1 Failure(Leftt)” 신호가 “1”이 되면 검지 +', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9702e63d-08c1-4b40-9b4b-45f7532559b6', '0508', '508', 'DCU#5 1위(R1)-출입문 모터/인코더 고장', 'T2', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 "Motor / Encoder failure” 신호가 "1"이 되면 검지.', '출입문 정상동작 불가', '1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우 (인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터 / 인코더 회로가 손상된 경우', '모터/인코더 및 DCU가 정상상태이고, 전기적 연결상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있느지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. +★ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. + +1. DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. +2. DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) +3. DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('970b916d-7cf9-4de6-96d9-ed45d0c80d1c', '0508', '508', 'DCU#7 3위(R2) - 출입문 모터/인코더 고장', 'M4', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 “Motor / Encoder failure” 신호가 “1”이 되면 +검지 +', '출입문 정상동작 불가', ' +1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우(인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터/인코더 회로 가 손상된 경우 +', '모터/인코더 및 DCU가 정상 상태이고, 전기적 연결 상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있는지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. ※ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. ? DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. ? DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) ? DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('970f4a35-c382-43b4-a71b-c0e0ea73e5b4', '0519', '519', 'DCU#1 2위(L1)-ZVR 신호 에러', 'Tc1', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 "ZVR signal error” 신호가 "1"이 되면 검지.', '출입문이 강제로 닫히게 되고, 열림은 불가능', '1) 차량 ZVR 신호가 없는 상태 (차량 주행상태) 에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함.', '해당출입문 ZVR 신호 수신', '1) 차량이 주행중이라면, 차량이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('971623e0-fbd5-4a70-9244-b77e1eacb192', '0512', '512', 'DCU#4 6위(L3)-파라미터 로딩 실패', 'T1', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 "Paraneter error” 신호가 "1"이 되면 검지.', 'Parameter error 현시 (출입문은 정상작동 가능)', 'DCU 자체내의 EEPROM으로부터 parameter 데이터 로딩 실패', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('974a14fa-8808-4ca8-af96-897dcc94d361', '1206', '1206', 'FDU#2 - 감지기3 고장', 'M1', 'C', 'FDU-감지기3 고장 (Car1~8)', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 “Detector1 State” 신호가 “10”이 되면 검지 +', '감지기고장상태현시(자동소거 안 됨)', ' +1) 감지기로부터 데이터 응답이 없는 경우 +2) 감지기로부터 수신된 데이터의 CRC가 맞지 않는 경우 +3) 감지기로부터 수신된 데이터의 ID가 송신 ID와 일치하지 않는 경우 +', 'FDU 전원 리셋 후 감지기로부터 정상적으로 데이터가 수신된 경우', '1) FDU 전원 리셋 후 고장 소거 여부 확인 +2) 정상동작중인 감지기와 위치 교환 후 FDU 전원 리셋 및 고장 상태 확인 +3) 동일한 감지기에서 고장 발생 시 감지기 교체 +4) 동일한 위치에서 고장 발생 시 감지기 라인 점검', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('974e4ead-3a4c-4f73-90a0-afff8f8b29a0', '0234', '234', '제동불완해검지(NRBD, Car4)', 'T1', 'B', '제동불완해검지(NRBD)', 'B', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT8의 Bit2 “NRBD” 신호가 “1”이 되면 검지 +', '해당 차량 제동불완해 검지 현시 및 완해 취급하였음에도 불구하고 해당 차량 제동압력 (BCP)이 완해되지 않음.', '제동완해상태(정차제동포함)에서 해당 차량의 제동압력이 완전 배기되지 않음. +', '제동완해상태(정차제동포함)에서 해당 차량의 제동압력이 완전히 배기됨.', '정차하여 강제완해스위치를 취급하여 소거 여부 확인, 제동 완해상태 확인 후 주의 운전할 것, 2 ~ 3회 시도에도 완해불능 시 관제보고하고 지시에 따를 것', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('97579638-9a84-4488-9780-457f5408d8a2', '0510', '510', 'DCU#2 6위(L3) - 출입문 닫힘 리미트 스위치1 고장', 'M1', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 “DCS1 Failure(Leftt)” 신호가 “1”이 되면 검지 +', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('97598349-4a78-4750-b372-10495a7bec0d', '0203', '203', 'BECU#8 - 전자제어밸브의 고장', 'Tc2', 'C', 'BECU-전자제어밸브의 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit2 “전자제어밸브의 고장” 신호가 “1”이 +되면 검지 +', '해당 차량 전자제어밸브의 고장검지 현시 및 해당 차량 제동제어불가', '해당 차량의 상용전자제어밸브가 작동하지 않음. +', '해당 차량의 상용전자제어밸브가 정상작동 시 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('975debf5-e025-447f-9ca6-e13037ab32ee', '0112', '112', 'VVVF-배터리 전원이상검지(BPSF) (Car2)', 'M1', 'C', 'VVVF-배터리 전원이상검지(BPSF)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT31의 Bit7 “BPSF” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 '배터리 전원이상검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치 제어기에 입력되는 제어전원이 63V 이하일 경우 검지.', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반배전반의 VVVFIC nfb 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치로 입력되는 제어전원 배선을 점검한다. +3) 전원필터유닛(PFU) 내부 부품에 소손이 없는지 확인한다. +4) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.578803+00', null, '다대48량(2015)', 'Rotem'), ('97600f02-cf69-45fc-a436-3333ef98a4a2', '0865', '865', '비상인터폰#1(PEI) 고장(Car#6)', 'M3', 'C', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('9793cf79-0a5f-480d-bdce-d109cb4c4c23', '0519', '519', 'DCU#2 6위(L3) - ZVR 신호 에러', 'M1', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 “ZVR signal error” 신호가 “1”이 되면 검지 +', '출입문이강제로 닫히게 되고, 열림은 불가능', ' +1) 차량 ZVR 신호가 없는 상태(차량 주행상태)에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함. +', '해당 출입문 ZVR 신호 수신', '1) 차량 이 주행중이라면, 차량 이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('979e5fe1-2583-4287-a30a-5c6bf27b32ec', '0744', '744', 'HVAC#3-전자접촉기 보조히터1(AHEK) 고장', 'M2', 'C', 'HVAC-전자접촉기 보조히터1(AHEK) 고장', 'C', 'HVAC', 'HVAC 보조난방기 작동 중 AHEK1 전자접촉기 고장 발생.', 'UNIT1 보조난방기 전난방 시 반난방만 작동', '보조난방기 작동 중 2.5초 이상동안 AHEK1 작동 feedback 신호가 수신되지 않는 경우', 'AHEK1 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) AHEK1을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, AHEK1과 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('97ac76c6-9731-4654-9eae-ef01bbf3358b', '0517', '517', 'DCU#7 4위(L2) - 출입문 장애물로 인한 열림 실패', 'M4', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Open failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘 상태로 대기', '도어열림 중 3회 장애물감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 열림 시, 장애물감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('97aeba76-1fbd-40dd-a1ce-54744028b189', '0727', '727', 'HVAC#3 - 배기팬1 과부하', 'M2', 'C', 'HVAC-배기팬1 과부하', 'C', 'HVAC', 'HVAC 환기작동 중 차량 배기팬1 모터에 과부하 발생 +', '환기 시 차량 배기팬2 운전 불가능', ' +1) 냉방 작동 중 챠량 배기팬1 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRVF1와 연결된 THR9가 Trip 됨. +', '차량 배기팬1 모터의 과부하조건을 해소하여 정상 가능 상태로 만들고, THR9 및 마이콤 전원 리셋', '1) 냉난방 배전반의 점검커버를 열고, THR9의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR9의 전류 세팅값이 2.5A에 맞춰져 있는지 확인하여, 아닐 경우, (+) 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동시킨 후, THR9의 2차측 2, 4 단자와 6 단자 사이의 전압이 DC 100V로 정상 측정 되는지 확인한다. +5) 만약 전압이 측정되지 않을 시, 전원이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, THR9 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('97b7006a-4e90-41e5-9582-6a31ab82525f', '0916', '916', 'TRAIN RADIO#8 - 열차번호 변경 설정', 'Tc2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('97b8811f-f9cb-49c5-aaf1-617827569819', '1205', '1205', 'FDU#7 - 감지기3 화재감지', 'M4', 'W', 'FDU-감지기3 화재감지 (Car1~8)', 'W', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 “Detector1 State” 신호가 “11”이 되면 검지 +', '화재상태현시(자동소거 안 됨.)', '하기 2가지 조건을 모두 만족하여야 화재신호가 출력 됨. (연동모드 동작) +1) 이웃한(앞 혹은 뒤에 위치한) 감지기 중 하나의 감지기라도 주의 혹은 화재상태에 있어야 함. +2) Detector1(해당 감지기)에서 측정된 연기농도가 15% 이상이거나 온도가 65℃ 이상인 경우 +', '1) FDU의 복귀버튼 조작 시 +2) FDU 전원 리셋 시', '1) 해당 감지기 위치의 화재 발생 여부 확인 +2) 화재 오감지일 경우 FDU의 복귀버튼 취급 +3) 오감지일 경우 감지기의 청소주기 확인(내부 먼지 제거)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('97c4167e-4bbe-4a19-bbcc-bbe1fa6bd8c4', '0876', '876', '통합제어기(AVC) SSD 1번 고장(Car#8)', 'Tc2', 'C', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('97d4d8fa-26b9-4079-9a74-fcef960cde98', '0736', '736', 'HVAC#6 - 전자접촉기 압축기(CRCM)1 고장', 'M3', 'C', 'HVAC-전자접촉기 압축기(CRCM)1 고장', 'C', 'HVAC', 'HVAC 냉방 작동 중 CRCM1 전자접촉기 고장 발생 +', '냉방 기능 저하(전냉방 시 반냉방으로 작동)', '냉방 작동 중 2.5초 이상 동안 CRCM1 작동 feedback 신호가 수신되지 않는 경우 +', 'CRCM1 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CRCM1을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRCM1과 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('97dcfb00-c0dc-40ef-801b-0658712937dd', '0514', '514', 'DCU#6 6위(L3)-출입문 닫힘 시간 초과', 'M3', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 "Close time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 닫힘 동작시간이 7초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도 한 후, '장애물로 인한 닫힘실패' 고장과 함께 'Close time out' 고장이 함께 현시', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('97f58d8f-61d6-4008-8f30-e7ede38dbf72', '0132', '132', 'VVVF-IPM X상 이상검지(GDFX) (Car6)', 'M3', 'C', 'VVVF-IPM X상 이상검지(GDFX)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT34의 Bit6 “GDFX” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 'IPM X상 이상검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치 내부 IPM에 과전류, 과온이 검지될경우.', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반배전반의 VVVFIC nfb 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 견인전동기로 출력되는 3상의 전류치 확인함. +3) 특정상의 전류치가 비정상적일 경우 특정상에 해당되는 IPM, 전류센서, 모터결선을 확인한다. +4) 전류센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작상태를 시험기를 통해 확인한다. +6) IPM 전원공급기의 전원연결상태 또는 광케이블의 연결상태와 배선상태를 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.656536+00', null, '다대48량(2015)', 'Rotem'), ('982ce70b-f43e-4105-98ca-1e25d0934157', '0716', '716', 'HVAC#1-냉난방장치1 압력스위치1(DPS) 고압', 'Tc1', 'D', 'HVAC-냉난방장치1 압력스위치1(DPS) 고압', 'D', 'HVAC', '냉난방장치1 냉매 압력스위치2 고압 발생.', 'UNIT1 CYCLE1 냉방 기능 불가', 'UNIT1 DSP1측 냉매 압력이 3초 이상 28±1(kgf/cm2) 이상 되는 경우', '냉매 압력이 정상 수치 15±0.7(kgf/cm2 이하로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CRCM1의 부하측 전류를 측정하여 응축기 팬의 동작여부를 확인한다. +2) 응축기 코일의 전면에 이물질로 인한 막힘이 있는지 확인한다. +3) 응축기 팬 상부 그릴에 외부 이물질로 인한 막힘이 있는지 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('983595fe-09a6-4bc8-87a3-c65732f8a701', '0229', '229', 'AS 코크#1 차단(Car5)', 'T2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('98382acd-1df6-424f-98a4-6ff49f60b301', '0216', '216', 'BECU#4 - 전두대차 AS 압력센서 고장', 'T1', 'C', 'BECU-전두대차 AS 압력센서 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit7 “전두대차 AS 압력센서 고장” 신호가 +“1”이 되면 검지 +', '해당 차량 전두대차 AS 압력센서 고장검지 현시 및 해당 차량 정상적인 응하중제동제어 불가', '해당 차량의 전두대차 AS 압력센서(AS1, AS2) 고장 +', '해당 차량의 전두대차 AS 압력센서(AS1, AS2)가 정상일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('983f2a95-5949-4ece-ba7b-83b4f05fcb2f', '0001', '1', 'CU1 통신고장', 'Tc1', 'B', 'CU1 통신고장(TC1)', 'B', 'TCMS', '중앙장치(CU)의 좌측 CU1의 통신고장(또는 우측 CU2의 통신고장) +', 'CU1 통신고장 현시, 정상적으로 CU2로 정상적으로 절체되면 CU1 통신고장만 현시되고 차량 운행에 지장없음. +CU2 통신고장의 경우,(CU1이 정상이면) CU2와 연결된 SIV, DCU, HVAC, FDU, BMS, PSD, CMSB 등의 통신고장과 함께 현시됨. (해당 장치로부터의 고장정보등을 현시하지 못함으로 주의 운행 필요) +CU1과 CU2 모두 이상이 있을 경우, DU 일반화면상 모든 정보 표출 불가(출입문 회색 현시, 주요장치 '--'로 현시, 시간정보 정지됨.) +CU1에 통신고장이 현시되었다가 사라지는 것이 반복되거나 화면에 현시되는 정보들이 불안정하게 흔들릴경우가 있음 +(이 경우, CU1이 불안정한 상태로 CU2로 마스터가 절체되었다가 CU1이 다시 마스터로 복귀하는 과정이 반복되면서 발생하는 현상으로 운행중에 발생했다면 CU1의 전원을 차단하고 운행) +', 'CU2가 CU1의 통신정보를 2초이상 수신받지 못할 경우 해당고장 현시, 일반적으로 VCPU보드의 문제로 해당 VCPU 보드를 교체하거나, 또는 메인 통신 보드인 VARCT 보드의 문제, 또는 단순히 CU의 전원이 차단된 경우임. +', 'CU1이 정상적으로 통신을 재개할 경우 소거됨. +', '1) CU의 전원차단 CB를 확인. 전원차단 CB가 정상 ON이 되어 있다면 VPS보드의 전원 LED가 정상적으로 ON이 되어 있는지 확인. (VPS 보드에 멀티미터를 이용하여 5V가 출력되는지 확인(검수)하여 5V가 출력되지 않는다면 VPS보드 교체) +2) CU의 리셋(전원차단 CB OFF->ON)후에도 소거가 되지 않을 경우, VCPU보드를 교체 +(VCPU 교체전 누적 주행거리, 적산전력량, 휠경 설정값을 기록해두고, 교체 후 입력한다.) +3) 위 조건에도 고장이 소거되지 않을 경우, VARCT 보드, VDI, VDO, VAIO 보드 등을 순차적으로 교체 후, 상태를 확인한다.', null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('98693b98-b2de-441b-afa5-7ee000794a3d', '0403', '403', 'SIV#1 - AC 출력저전압(ACUV)', 'Tc1', 'C', 'SIV-AC 출력저전압(ACUV)', 'C', 'SIV', '보조전원장치(SIV)의 RS485 데이터 중 SIV-TCMS SD TEXT4의 Bit1 “ACUV” 신호가 “1”이 되면 검지 +', '1) TCMS 화면하단 또는 고장화면에 ‘SIVAC 출력 저전압 검지' 표시됨. +2) 보조전원장치(SIV)는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 보조전원장치 중고장이 발생됨. +5) 중고장이 발생되면 TCMS 일반화면에 보조전원장치 상태 붉은색으로 표기되며, 연장급전 됨.', '보조전원장치(SIV)에서 출력되는 ACU, V, W 상의 전압이 250V 이하일 경우 검지됨. +', '1) 경고장이 발생할 경우 보조전원장치(SIV) 자동 재기동에 의해 재기동 됨. +2) 중고장이 발생했을 경우 조치 완료 후 보조전원장치(SIV) 리셋으로 고장 소거됨.', '1) 상기 고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 보조전원장치(SIV) 고장기록을 수집하여 출력되는 3상의 AC 전압값 확인함. +3) 특정상의 전압치가 비정상적일 경우 특정상에 해당되는 GDU, 전압센서, AC 출력단 결선을 확인한다. +4) 전압센서와 보조전원장치(SIV) 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작 상태를 시험기를 통해 확인한다. +6) 출력단 각 상의 절연상태 및 각상과 접지 간의 절연상태를 확인한다. +7) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9870fa62-d89d-4167-9eb8-b26968cc2cfb', '0152', '152', 'VVVF#6 - 제동패턴 이상검지(BPD)', 'M3', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('987e53e1-a8b4-4f9b-9c3c-119d8b0f0ab0', '0710', '710', 'HVAC#7 - 냉난방장치2 압력스위치2(DPS) 고압', 'M4', 'D', 'HVAC-냉난방장치2 압력스위치2(DPS) 고압', 'D', 'HVAC', '냉난방장치2 냉매 압력스위치2 고압 발생 +', 'UNIT2CYCLE2 냉방기능불가', 'UNIT2DSP2측 냉매압력이 3초 이상 28±1(kgf/cm2) 이상 되는 경우 +', '냉매압력이 정상수치 15±0.7(kgf/cm2) 이하로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CRCM4의 부하측 전류를 측정하여 응축기 팬의 동작여부를 확인한다. +2) 응축기 코일의 전면에 이물질로 인한 막힘이 있는지 확인한다. +3) 응축기 팬 상부 그릴에 외부 이물질로 인한 막힘이 있는지 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('987e8862-6ffb-4d54-a6d7-4d452f12daa9', '0729', '729', 'HVAC#6 - 냉난방장치2 리턴 센서 고장', 'M3', 'C', 'HVAC-냉난방장치2 리턴 센서 고장', 'C', 'HVAC', '냉난방장치2의 리턴 센서 고장 발생 +', '냉난방장치2 리턴 센서 고장현시', '온도센서 검지범위는 -45 ~ 85도(820 ~ 1,330Ω)인데, 2초 이상 검지범위를 벗어나는 경우 +', '온도센서 검지값이 2초 이상 허용온도 범위 내일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820 ~ 1,330Ω을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9888c690-d8e9-4c0d-8d16-1412d6596cf7', '1501', '1501', '차상신호장치(ATC) 회로차단기 차단(Car7)', 'M4', 'W', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('9889a63c-b8cb-4fda-8193-bbad834517bb', '0734', '734', 'HVAC#3 - 전자접촉기 압축기(CRCM)3 고장', 'M2', 'C', 'HVAC-전자접촉기 압축기(CRCM)3 고장', 'C', 'HVAC', 'HVAC 냉방 작동 중 CRCM3 전자접촉기 고장 발생 +', '냉방 기능 저하(전냉방 시 반냉방으로 작동)', '냉방 작동 중 2.5초 이상 동안 CRCM3 작동 feedback 신호가 수신되지 않는 경우 +', 'CRCM3 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CRCM3을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRCM3과 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('98943bb4-56cb-4aa6-8dfd-01a77e756110', '0230', '230', 'ECU 전원공급 고장(Car3)', 'M2', 'B', 'ECU 전원공급 고장', 'B', 'BECU', '해당차량의 ECU 전원공급 고장 (CB OFF) 발생 시 검지', '해당차량의 ECU 전원공급 고장 검지 현시', '해당차량의 ECU 전원차단 (CB OFF)', '해당차량의 ECU 전원공급 (CB ON)', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속적으로 고장 발생시 관제보고하고 지시에 따를 것.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('989fb23e-7d53-4028-9054-32e27ca12eb3', '0521', '521', 'DCU#6 3위(R2) - 모듈 상태 이상', 'M3', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 “01” 또는 “00”이 되면 +검지 +', '이중계절체동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러)이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('98a54225-37f1-4740-80d1-715dd5bcd50e', '0840', '840', '실내카메라#2(SCAM) 고장(Car#4)', 'T1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('98aa8d1c-d5f2-42a6-86be-05bbf0638f8e', '764', '764', 'CAB HVAC#1 - 주전원 이상', 'Tc1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('98b31281-b4fc-40a3-ac4d-d06da15002e9', '0156', '156', 'VVVF#2 - 전진/후진 이상검지(FRD)', 'M1', 'C', 'VVVF-전진/후진 이상 검지(FRD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT31의 Bit5 “FRD” 신호가 “1”이 되면 검지 +', '1) TCMS 화면 하단 또는 고장화면에 ‘전진/후진 신호 이상 검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생함. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉은색으로 표기되며, HSCB, LB1, 2 개방되어 동력 손실 발생함.', '추진제어장치 입력되는 역행/제동신호가 동시에 입력될 경우 검지됨. +', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반 배전반의 VVVFIC nfb 재투입 또는 차량 배터리 전원 재투입', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 전진/후진신호에 이상이 있는지 확인한다. +3) 차량의 제어 회로 중 전진/후진 신호가 추진제어장치로 연결되는 경로에 이상이 없는지 확인 한다. +4) DIN 보드의 동작 상태를 시험기를 통해 확인한다. +5) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('98bd89d5-ce0b-445c-ae16-7acac6103bff', '0508', '508', 'DCU#1 1위(R1)-출입문 모터/인코더 고장', 'Tc1', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 "Motor / Encoder failure” 신호가 "1"이 되면 검지.', '출입문 정상동작 불가', '1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우 (인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터 / 인코더 회로가 손상된 경우', '모터/인코더 및 DCU가 정상상태이고, 전기적 연결상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있느지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. +★ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. + +1. DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. +2. DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) +3. DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('98d20c83-b20d-40b6-b56e-a1f7d20b4c7f', '0509', '509', 'DCU#8 4위(L2) - 출입문 잠김 리미트 스위치 고장', 'Tc2', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 “DLS Failure” 신호가 “1”이 되면 검지 +', '출입문 잠김 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('98d49064-d8fc-41ba-884d-48c7bf9d663e', '1201', '1201', 'FDU#8 - 감지기1 화재감지', 'Tc2', 'W', 'FDU-감지기1 화재감지 (Car1~8)', 'W', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 “Detector1 State” 신호가 “11”이 되면 검지 +', '화재상태현시(자동소거 안 됨.)', '하기 2가지 조건을 모두 만족하여야 화재신호가 출력 됨. (연동모드 동작) +1) 이웃한(앞 혹은 뒤에 위치한) 감지기 중 하나의 감지기라도 주의 혹은 화재상태에 있어야 함. +2) Detector1(해당 감지기)에서 측정된 연기농도가 15% 이상이거나 온도가 65℃ 이상인 경우 +', '1) FDU의 복귀버튼 조작 시 +2) FDU 전원 리셋 시', '1) 해당 감지기 위치의 화재 발생 여부 확인 +2) 화재 오감지일 경우 FDU의 복귀버튼 취급 +3) 오감지일 경우 감지기의 청소주기 확인(내부 먼지 제거)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('98dab91e-409a-4016-b81b-f49fe9c13917', '1109', '1109', 'PSD#8 - 차상 메모리고장(2계)', 'Tc2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('98e7bfed-aa3a-46a5-8f9c-5f3ff0a31bcc', '0509', '509', 'DCU#7 5위(R3)-출입문 잠김 리미트 스위치 고장', 'M4', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 "DLS Failure” 신호가 "1"이 되면 검지.', '출입문 잠김 상태 확인 불가', '1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('990e8d8c-7c63-4118-8bb4-f3c4fb776043', '0750', '750', 'HVAC#1 - 냉난방장치2 보조히터 과열', 'Tc1', 'C', 'HVAC-냉난방장치2 보조히터 과열', 'C', 'HVAC', 'HVAC2 보조난방기 작동 중 과열 발생 +', 'UNIT2 보조난방기난방불가', '보조난방기 작동 중 1초 이상 동안 온도가 70도 이상으로 과온 센서 정상신호가 수신 되지 않는 경우 +', '1초 이상 동안 60도 미만으로 온도가 떨어져 과온 센서 정상신호가 수신되는 경우', '1) 보조난방기가 꺼진 상태에서도 문제 발생 시, 과온 센서를 교체한다. +2) 센서 교체 후에도 문제가 발생되면, 배선에 문제가 없는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9925cd5a-34ca-47a5-9022-54a07f95de72', '0234', '234', '제동불완해검지(NRBD, Car8)', 'Tc2', 'B', '제동불완해검지(NRBD)', 'B', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT8의 Bit2 “NRBD” 신호가 "1"이 되면 검지.', '해당 차량 제동불완해 검지 현시 및 완해 취급하였음에도 불구하고 해당 차량 제동압력(BCP)이 완해되지 않음.', '제동완해 상태(정차제동 포함)에서 해당 차량의 제동압력이 완전히 배기 되지 않음.', '제동완해 상태(정차제동 포함)에서 해당 차량의 제동압력이 완전히 배기 됨.', '정차하여 강제완해스위치를 취급하여 소거 여부 확인. 제동 완해상태 확인 후 주의 운전 할 것. +2~3회 시도에도 완해불능시 관제보고하고 지시에 따를 것.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('992623bc-11f0-4f9c-a7e8-7f95c391371a', '0238', '238', 'BECU#4 - 4축 스키드신호', 'T1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('992f89f5-d185-464a-a879-9c8b35432fb8', '0734', '734', 'HVAC#1-전자접촉기 압축기(CRCM)3 고장', 'Tc1', 'C', 'HVAC-전자접촉기 압축기(CRCM)3 고장', 'C', 'HVAC', 'HVAC 냉방작동 중 CRCM3 전자접촉기 고장 발생.', '냉방 기능 저하(전냉방시 반냉방으로 작동)', '냉방작동 중 2.5초 이상동안 CRCM3 작동 feedback 신호가 수신되지 않는 경우', 'CRCM3 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CRCM3을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRCM3과 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('993e8231-6e15-461e-a09e-96dcc64e9184', '0012', '12', 'TU 통신고장(Car7)', 'M4', 'B', 'TU 통신고장(CAR7)', 'C', 'TCMS', 'M,T 차량의 단말장치(TU) 통신고장', '1) 해당 차호의 단말장치(TU)와의 통신불능시 화면에 현시. +2) TU 통신 고장시 해당호차의 VVVF, BECU, DCU, HVAC, FDU 등과의 통신도 불가. +(해당 차량의 출입문 열림/닫힘 정보도 현시 불가하므로 출입문 열림/닫힘 램프로 주의 운행) +3) 2호차(6호차) TU 통신 고장시 판토상승/하강 명령 전달 불가(단, 이미 상승된 판토는 상승 유지됨) +4) 4호차 TU 통신고장시, 연장급전 접촉기 출력이 불가', '1) CU에서 TU의 통신정보를 2초이상 수신받지 못할 경우 해당 고장 현시.', '1) TU가 정상적으로 통신을 재개할 경우 소거됨.', '1) TU 전원차단기 리셋(IFF->ON) 실시 +2) VPS보드의 전원 LED가 정상이라면, 멀티미터로 VPS 보드의 전원출력(5V)를 확인. +3) TU 상단의 커넥터 체결상태를 확인 +4) 상기 항목에 이상이 없을 경우 VARCM 보드를 교체한다.', null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('993ee9a1-c5cc-4006-9b96-acaa40b54297', '0751', '751', 'HVAC#3-냉난방장치1 보조히터 과열', 'M2', 'C', 'HVAC-냉난방장치1 보조히터 과열', 'C', 'HVAC', 'HVAC1 보조난방기 작동 중 과열 발생.', 'UNIT1 보조난방기 난방 불가', '보조난방기 작동 중 1초 이상동안 온도가 70도 이상으로 과온센서 정상 신호가 수신되지 않는 경우', '1초 이상동안 60도 미만으로 온도가 떨어져 과온센서 정상 신호가 수신되는 경우', '1) 보조난방기가 꺼진 상태에서도 문제 발생 시, 과온 센서를 교체한다. +2) 센서 교체 후에도 문제가 발생되면, 배선에 문제가 없는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('99405486-bd9f-43bd-bbbc-b307dde42179', '0819', '819', '0', 'M1', '0', null, null, '0', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('995bf93f-452d-4de3-a551-3a10aa609716', '1402', '1402', 'BMS#1-퓨즈 오픈', 'Tc1', 'C', 'BMS-퓨즈 단락', 'C', 'BMS', 'BMS의 RS485 데이터 중 BMS-TCMS SD TEXT2의 Bit1 “퓨즈 오픈” 신호가 "1"이 되면 검지.', '퓨즈 고장으로 충방전 불가.', '배터리 내,외부 회로 단락으로 인한 과전류 발생.', '배터리 내,외부 회로 단락 제거.', '1) 배터리 팩 절연저항 확인한다. +2) 배터리 외부 회로의 단락 검침한다. +3) 단락회로 검침 후 정상이면 퓨즈 교체한다.', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('996afb3a-ead9-49ed-909b-ddcca9c33826', '0503', '503', 'DCU#1 3위(R2) - 출입문 내부 비상핸들 취급(EED)', 'Tc1', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9972631b-e2bd-456f-92b5-093f6d6f36e3', '0201', '201', 'BECU#2-덤프밸브고장(후미대차)', 'M1', 'C', 'BECU-덤프밸브고장(후미대차)', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit0 “덤프밸브고장(후미대차)” 신호가 "1"이 되면 검지.', '해당 차량 덤프밸브고장(후미대차) 검지 현시 및 해당 차량 활주제어 불가.', '해당 차량 후미대차의 덤프밸브가 작동하지 않음.', '해당 차량 후미대차의 덤프밸브가 정상 작동 시 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('9977d2f7-5409-4cd2-9d2c-9bf27e96efb1', '0231', '231', 'BC 코크(차상) 차단(Car3)', 'M2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('99787b41-e9d9-458d-a819-e5460212f502', '1303', '1303', 'RTD#8-메모리 상태 고장', 'Tc2', 'D', 'RTD-메모리 상태 고장', 'D', 'RTD', 'RTD의 RS485 데이터 중 RTD-TCMS SD TEXT1의 Bit6 “메모리 상태 고장” 신호가 "1"이 되면 검지.', 'RTD 메모리 상태 고장 메시지 현시.', 'RTD장치 부팅시 내부 기억장치인 SD메모리인식 불량 발생의 경우.', 'RTD장치내 SD메모리 정상 인식.', 'RTD장치의 NFB로 시스템을 리부팅 시키고 고장이 다시 발생하는지 확인하고 고장이 다시 확인되면 메인보드 수리가 필요.', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('997d8da2-36c9-49bb-b8e0-57a9f3417745', '0729', '729', 'HVAC#4-냉난방장치2 리턴 센서 고장', 'T1', 'C', 'HVAC-냉난방장치2 리턴 센서 고장', 'C', 'HVAC', '냉난방장치2의 리턴 센서 고장 발생', '냉난방장치2 리턴센서 고장현시', '온도센서 검지범위는 -45~85도 (820~1330옴) 인데, 2초 이상 검지범위를 벗어나는 경우', '온도센서 검지 값이 2초 이상 허용온도 범위 내 일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820~1330옴 을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우, 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('9987fd2d-73d4-4cc2-b857-085e9ee7eb1e', '0518', '518', 'DCU#3 3위(R2) - 출입문 Enable 신호 에러', 'M2', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 “Enable signal error” 신호가 “1”이 되면 검지 +', 'DCU 출입문Enable신호에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드 시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을 때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드 시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입 상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호 장치로부터의 출입문 열림 명령 신호) 취급 시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함. +', '해당 출입문 enable 신호수신', '1) AUTO/MCS 모드 시에는 YARD 모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인 한다. (YARD/FMC 모드 시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9991c4cf-1553-413d-94db-5f109d0c6d07', '0503', '503', 'DCU#7 1위(R1)-출입문 내부비상핸들 취급(EED)', 'M4', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('99929a19-fc2c-4748-bf11-296aeb5f4233', '0507', '507', 'DCU#3 2위(L1) - 초기화 실패', 'M2', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 “Calibration failure” 신호가 “1”이 되면 검지 +', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터 고장, 장애물감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우 +', '초기화 실패를 야기한 고장코드를 확인하여 조치 후, 재닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인한다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('99b24e45-363f-40ba-a125-3d7ab5059e43', '0715', '715', 'HVAC#7-냉난방장치1 압력스위치1(DPS) 저압', 'M4', 'D', 'HVAC-냉난방장치1 압력스위치1(DPS) 저압', 'D', 'HVAC', '냉난방장치1 냉매 압력스위치1 저압 발생.', 'UNIT1 CYCLE1 냉방 기능 불가', 'UNIT1 DSP1측 냉매 압력이 3초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우', '냉매 압력이 정상 수치 2±0.5(kgf/cm2 이상으로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CREF2의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)을 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안되는 것을 확인한 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('99cd7d3f-995f-4f5c-ab33-636bcf93f657', '0030', '30', '비상제동 스위치 취급', 'Tc1', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('99cf0fe9-2a3b-4507-8ac1-d3c3212119ba', '0174', '174', 'VVVF#7-통합제어장치-PWM제어장치간 신호이상 검지(ERRDIO)', 'M4', 'C', 'VVVF-DI 이상(TCUPWM)(ERRDIO)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT33의 Bit7 “ERRDIO” 신호가 "1"이 되면 검지.', null, 'PWM보드와 TCU(통합제어기)간 디지털신호의 이상 발생 시 검지.', '동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) 각 PWM 보드 전면의 LED점등을 확인하고 이상 발생 시 재 체결한다. +2) PWM 제어기 내부 PCB상태를 육안으로 점검한다. +3) 각 PWM보드의 CN1, CN2 커넥터를 분리하여 핀 상태 및 배선상태를 확인한다. +4) TCU(통합제어장치)의 PUZ 보드의 후면의 커넥터 삽입상태를 확인하고 이상 발생 시 재 체결한다. +5) TCU(통합제어장치)의 PUZ 보드 후면의 제어배선 중, TRX11P, TRX11F, TRX11G 배선의 연결상태 및 배선의 단선 여부를 확인한다. +6) 상기 점검 시 이상이 없을 경우 PUZ 보드를 교체한다.', null, '3', '2025-10-12 01:21:37.578803+00', null, '로템40량(2018)-1단계', 'Rotem'), ('99f0f55c-2f18-434d-8843-b4e5a3049fe3', '0182', '182', 'VVVF#6 - TCU 초기화(INZ - RST)', 'M3', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('99fdf383-ec4f-4894-9b7c-b68188d10544', '0226', '226', 'BECU#7 - 제동불완해검지(NRBD)', 'M4', 'B', 'BECU-제동불완해검지(NRBD)', 'B', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT8의 Bit2 “NRBD” 신호가 “1”이 되면 검지 +', '해당 차량 제동불완해 검지 현시 및 완해 취급하였음에도 불구하고 해당 차량 제동압력 (BCP)이 완해되지 않음.', '제동완해상태(정차제동포함)에서 해당 차량의 제동압력이 완전히 배기되지 않음. +', '제동완해상태(정차제동포함)에서 해당 차량의 제동압력이 완전히 배기됨.', '정차하여 강제완해 스위치를 취급하여 소거 여부 확인, 제동 완해상태 확인 후 주의 운전할 것, 2 ~ 3회 시도에도 완해불능 시 관제보고하고 지시에 따를 것', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9a07873f-813e-4fac-a8b9-bcc4f24e335a', '0511', '511', 'DCU#4 4위(L2) - 출입문 닫힘 리미트 스위치2 고장', 'T1', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 “DCS2 Failure(Right)” 신호가 “1”이 되면 검지 +', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9a19e4e5-98b7-456b-9271-0ee36d57177c', '0710', '710', 'HVAC#5-냉난방장치2 압력스위치2(DPS) 고압', 'T2', 'D', 'HVAC-냉난방장치2 압력스위치2(DPS) 고압', 'D', 'HVAC', '냉난방장치2 냉매 압력스위치2 고압 발생.', 'UNIT2 CYCLE2 냉방 기능 불가', 'UNIT2 DSP2측 냉매 압력이 3초 이상 28±1(kgf/cm2) 이상 되는 경우', '냉매 압력이 정상 수치 15±0.7(kgf/cm2 이하로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CRCM4의 부하측 전류를 측정하여 응축기 팬의 동작여부를 확인한다. +2) 응축기 코일의 전면에 이물질로 인한 막힘이 있는지 확인한다. +3) 응축기 팬 상부 그릴에 외부 이물질로 인한 막힘이 있는지 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('9a2598e9-3c6b-4a80-ab15-bce827cf3878', '0508', '508', 'DCU#8 1위(R1) - 출입문 모터/인코더 고장', 'Tc2', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 “Motor / Encoder failure” 신호가 “1”이 되면 +검지 +', '출입문 정상동작 불가', ' +1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우(인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터/인코더 회로 가 손상된 경우 +', '모터/인코더 및 DCU가 정상 상태이고, 전기적 연결 상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있는지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. ※ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. ? DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. ? DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) ? DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9a262210-56f1-4864-acad-2f1e1a9e8ab7', '1505', '1505', '기타장치용 AC 회로차단기 차단(Car7)', 'M4', 'W', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('9a3d48e5-26cd-4aab-a6ed-c6a6deb906aa', '0202', '202', 'BECU#7 - 덤프밸브 고장(전두대차)', 'M4', 'C', 'BECU-덤프밸브고장(선두대차)', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit1 “덤프밸브고장(선두대차)” 신호가 “1”이 되면 검지 +', '해당 차량 덤프밸브고장(선두대차)검지 현시 및 해당 차량 활주제어불가', '해당 차량 선두대차의 덤프밸브가 작동하지 않음. +', '해당 차량 선두대차의 덤프밸브가 정상작동 시 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9a3db009-f456-40c2-922f-7cf2e9578055', '0513', '513', 'DCU#2 3위(R2) - 모듈 상태체크 에러', 'M1', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 “Module check error” 신호가 “1”이 되면 검지 +', 'Modulecheckerror현시(출입문은 정상작동가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태 체크 기능에 이상이 생긴 경우 고장 발생 +', 'DCU의 ‘A' 모듈과 ‘B' 모듈 간, 상태 체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9a62eef4-37b9-47d3-b3b3-f2d0cc988982', '0507', '507', 'DCU#8 4위(L2) - 초기화 실패', 'Tc2', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 “Calibration failure” 신호가 “1”이 되면 검지 +', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터 고장, 장애물감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우 +', '초기화 실패를 야기한 고장코드를 확인하여 조치 후, 재닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인한다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9a6467ad-6d99-4f16-ba7c-b207ceb973b8', '0708', '708', 'HVAC#3 - 냉난방장치1 증발기1 과부하', 'M2', 'C', 'HVAC-냉난방장치1 증발기1 과부하', 'C', 'HVAC', 'HVAC 냉방 작동 중 냉난방장치1 증발기 모터에 과부하 발생 +', 'UNIT1냉방 작동 불가', ' +1) 냉방 작동 중 UNIT1의 증발기 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CREF1과 연결된 THR5가 Trip 됨. +', 'UNIT1의 증발기모터의 과부하조건을 해소하여 정상 가능 상태로 만들고, THR5 및 마이콤 전원 리셋', '1) 냉난방 배전반의 점검커버를 열고, THR5의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR5의 전류 세팅값이 3A에 맞춰져 있는지 확인하여, 아닐 경우, (+) 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동시킨 후, THR5의 2차측 2, 4, 6 단자에서 각 단자 간 상간 전압이 AC 380V로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 증발기 단품 상태 에서 점검을 한다. +7) THR5의 2차측 2, 4, 6 단자에서 각 단자 간 권선저항이 모두 같은지 확인한다. (±10% 이하) (증발기 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT2의 증발기 모터의 결선을 해제한 후 4극 및 6극 모터의 권선저항을 확인 후, 문제가 있을 경우, 증발기 모터를 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR5 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9a74a890-e888-4742-9f11-f51e0fefcb03', '0505', '505', 'DCU#5 2위(L1) - 출입문 입력 고전압', 'T2', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 “1”이 되면 검지 +', '고전압 상태(그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상 +', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9a7fa80a-9da4-4e88-af9b-562f7cfd3262', '754', '754', '운전실 마이컴 고장(Car8)', 'Tc2', 'C', '운전실 마이컴 고장', 'C', 'TCMS', '열차의 운전실의 마이컴 고장(CHVACF) 신호를 디지털 입력으로 검지한 경우 +', '1) 운전실의 마이컴 고장 현시 +2) 운전실 마이컴 고장의 경우 운전실 냉난방이 정상적으로 동작하지 않음. +3) DU이 “운전자 HVAC” 버튼을 눌러 고장상태 확인', 'CU의 디지털 입력으로 운전실의 마이컴고장 신호가 검지된 경우 +', 'CU의 디지털 입력으로 운전실의 마이컴고장 신호가 검지되지 않을 경우', '운전실의 냉난 마이컴의 고장상태를 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9a9e46d6-d039-4850-a54d-a366fc1e0cfa', '0911', '911', 'TRAIN RADIO#1 통신고장', 'Tc1', 'C', 'TRAIN RADIO 통신고장', 'C', 'RADIO', 'Train Radio와 TCMS(CU)간 RS485 통신고장이 검지되면 발생.', '화면상 Train Radio 고장 현시', 'Train Radio 통신고장(전원OFF) 또는 통신 케이블 문제', 'TCMS와 Train Radio 간의 통신계통 점검 및 Train Radio NFB 점검.', null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('9a9eeee8-32ad-4dc5-9655-a9c8819a21e7', '1210', '1210', 'FDU#1-메모리 고장', 'Tc1', 'C', 'FDU-메모리 고장', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT5의 Bit6 “Memory Fault” 신호가 "1"이 되면 검지.', '1) Memory Fault 현시 +2) FDU의 이벤트 기록 및 읽기 동작 안됨. +3) FDU 환경설정 정보 로딩 실패(차량번호, 주차시간, 절전시간등의 설정값을 기본값으로 로딩)', '메모리 연결 포트의 이상 혹은 배드섹터 발생(메모리 접근 및 읽기, 쓰기가 실패한 경우)', '메모리의 접근 및 읽기, 쓰기 성공', '1) FDU의 전원을 리셋하여 소거여부 확인 +2) 문제가 지속될 경우, 수신기 교체', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('9aa45ab2-bff7-4b8f-96a6-c8777041212a', '0206', '206', 'BECU#2-RAM 점검 고장', 'M1', 'C', 'BECU-RAM 점검 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit5 “RAM 점검 고장” 신호가 "1"이 되면 검지.', '해당 차량 RAM 점검 고장 검지 현시 및 해당 차량 정상적인 제동제어 불가.', '해당 차량 BECU의 자가진단 시 고장 발생.', '해당 차량 BECU의 자가진단 시 정상적일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('9aa819b0-308d-4794-a69f-fd882fa786d3', '0057', '57', 'AUX FUSE DISCONNECTED(Car6)', 'M3', 'W', 'AUX FUSE DISCONNECTED(Car6)', 'W', '기타', '차량으로부터 AUX FUSE DISCONNECTED 신호 입력 시 +', 'SIV 고압 차단으로 AC전원 전체 “OFF”', '해당 퓨즈 소손 +', '해당 퓨즈 교체', null, '회로 도면 : REC20210DX0', '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9aabee0b-a562-474b-92f5-ce57b223bf4c', '0513', '513', 'DCU#5 4위(L2)-모듈 상태체크 에러', 'T2', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 "Module check error” 신호가 "1"이 되면 검지.', 'Module check error 현시 (출입문은 정상작동 가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태체크 기능에 이상이 생긴 경우 고장 발생.', 'DCU의 'A'모듈과 'B'모듈 간, 상태체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('9aae4b38-a6ca-4c44-a42f-bf4a1ef744be', '0217', '217', 'BECU#1 - 회생제동달성 비정상', 'Tc1', 'C', 'BECU-회생제동달성 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit0 “회생제동달성 비정상” 신호가 “1”이 되면 검지 +', '해당 차량 회생제동달성비정상 검지 현시 및 해당 차량 정상적인 전공교차제어 불가', '해당 차량의 회생제동 달성 신호가 정상범위를 벗어남. (5.0 ~ 95.0%) +', '해당 차량의 회생제동달성신호가정상범위일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 소거되지 않을 경우 해당 차량 추진제어장치 리셋(CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르 시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9ab12ee3-1ef3-4ca9-8fc2-afb0c7863984', '0857', '857', '영상저장장치(NVR) SSD 고장(Car#8)', 'Tc2', 'C', '영상저장장치- 영상저장장치(NVR) SSD 고장(Car8)', 'C', 'AVC', '영상저장장치(NVR)의 E-NET 데이터 중 영상저장장치-TCMS SD TEXT8의 Bit0 “SSD Fault” 신호가 +“1”이 되면 검지 +', 'SSD에 연결되어있는 카메라저장불가능 SSD는 1호차 ~ 8호차까지 카메라 저장', '영상저장장치에 SSD 인식불가능 +', '영상저장장치에 SSD 인식', 'SSD 점검 관련도면 : 없음', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9ada14ac-130b-4d0c-9efa-d81185a97547', '0746', '746', 'HVAC#2-전자접촉기 배기팬1(CRVF) 고장', 'M1', 'C', 'HVAC-전자접촉기 배기팬1(CRVF) 고장', 'C', 'HVAC', 'HVAC 환기 작동 중 CRVF1 전자접촉기 고장 발생.', '환기 시 차량 배기팬1 운전 불가능', '환기 작동 중 2.5초 이상동안 CRVF1 작동 feedback 신호가 수신되지 않는 경우', 'CRVF1 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CRVF1을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRVF1과 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('9ae38fe2-0219-4320-96ab-cbc8e1400812', '0737', '737', 'HVAC#3 - 전자접촉기 증발기4(CREF) 고장', 'M2', 'C', 'HVAC-전자접촉기 증발기4(CREF) 고장', 'C', 'HVAC', 'HVAC 냉방 작동 중 CREF4 전자접촉기 고장 발생 +', 'UNIT2 냉방 작동 불가', '냉방 작동 중 2.5초 이상 동안 CREF4 작동 feedback 신호가 수신되지 않는 경우 +', 'CREF4 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CREF4를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CREF4와 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9af50b92-a8ac-437d-89eb-dfd6afcfbcfa', '0239', '239', 'BECU#5 - 3축 스키드신호', 'T2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9af53a19-8d2b-41d5-bb96-ee55db0e9cff', '0112', '112', 'VVVF-배터리 전원이상검지(BPSF) (Car7)', 'M4', 'C', 'VVVF-배터리 전원이상검지(BPSF)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT31의 Bit7 “BPSF” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 '배터리 전원이상검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치 제어기에 입력되는 제어전원이 63V 이하일 경우 검지.', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반배전반의 VVVFIC nfb 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치로 입력되는 제어전원 배선을 점검한다. +3) 전원필터유닛(PFU) 내부 부품에 소손이 없는지 확인한다. +4) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.71571+00', null, '다대48량(2015)', 'Rotem'), ('9b032eb4-02fe-4036-afb2-e6cc5d34136b', '0400', '400', 'SIV#8 통신고장', 'Tc2', 'B', 'SIV-통신고장', 'B', 'SIV', '보조전원장치(SIV)와 TCMS간 RS485 통신고장이 검지되면 발생.', 'TCMS 화면에 고장정보 현시되며, 보조전원장치 상태화면에 나타나는 출력전압 등의 데이터가 반응하지 않음.', '1) TCMS-보조전원장치(SIV) 간 통신정보가 3초이상 동일한 정보로 유지되면 통신고장을 검지함. +2) 또는 SIV 전원 CB가 OFF되었을 시 통신고장 검지함.', 'TCMS-추진제어장치(VVVF) 간 통신정보가 정상적으로 통신이 될경우 소거됨.', '1) 보조전원장치(SIV) 리셋 실시 후 통신고장 소거됨을 확인. +2) 통신고장 소거가 되지 않을 경우 보조전원장치 MON 보드 신품으로 교체후 통신고장 소거여부 확인. +3) 위 조건에도 고장이 소거되지 않을 경우, TCMS-보조전원장치간 RS485 통신케이블 연결상태 점검.', null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('9b06132f-e113-4cc4-9b92-0a52d75c2973', '0713', '713', 'HVAC#3 - 냉난방장치1 압력스위치2(DPS) 저압', 'M2', 'D', 'HVAC-냉난방장치1 압력스위치2(DPS) 저압', 'D', 'HVAC', '냉난방장치1 냉매 압력스위치2 저압 발생 +', 'UNIT1CYCLE2 냉방기능불가', 'UNIT1DSP2측 냉매압력이 3초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우 +', '냉매압력이 정상수치 2±0.5(kgf/cm2) 이상으로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CREF2의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)를 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설 여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안 되는 것을 확인한 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9b0a2d5a-cef1-4390-883c-cc062840df53', '0181', '181', 'VVVF#2 - MCOK 투입불량(MCOKNC)', 'M1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9b429171-417f-4229-9079-1c34a423660e', '0502', '502', 'DCU#1 5위(R3) - 출입문 장애물검지', 'Tc1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9b464f84-06af-4703-8efb-0b74cdaf8c82', '0507', '507', 'DCU#8 4위(L2)-초기화 실패', 'Tc2', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 "Calibration failure” 신호가 "1"이 되면 검지.', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터고장, 장애물 감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우', '초기화 실패를 야기한 고장 코드를 확인하여 조치 후, 재 닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('9b4982fa-e8fb-469a-9f80-bf4853f70106', '0505', '505', 'DCU#4 2위(L1) - 출입문 입력 고전압', 'T1', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 “1”이 되면 검지 +', '고전압 상태(그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상 +', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9b508f82-d914-4fc7-8de2-affafaee4b23', '0502', '502', 'DCU#4 1위(R1)-출입문 장애물검지', 'T1', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('9b513d97-b2ac-42cf-8916-7d09fd84969e', '0515', '515', 'DCU#8 1위(R1) - 출입문 열림 시간 초과', 'Tc2', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 “Open time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 열림 동작시간이 6초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도한 후, ‘장애물로 인한 열림 실패' 고장과 함께 ‘Open time out' 고장이 함께 현시 +', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9b5ead76-0a3d-4b7f-9706-aba5ba06040c', '0052', '52', '주공기압력 저하(Car8)', 'Tc2', 'W', null, null, 'CMSB', null, null, null, null, null, null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('9b5f3bab-9c81-4dc9-8240-087a98d00058', '0501', '501', 'DCU#6 2위(L1) - 출입문 차단', 'M3', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9b66a232-d845-409f-ad12-6e2cb81a9b54', '0717', '717', 'HVAC#7 - CO2 센서2 고장', 'M4', 'C', 'HVAC-CO2 센서2 고장', 'C', 'HVAC', '객실 CO2 센서2 고장 발생 +', 'CO2 센서2 고장 현시', 'CO2 센서의 검지범위는 0 ~ 4,000ppm(2 ~ 10Vdc)인데, 1초 이상 출력전압이 2Vdc(0ppm) 미만으로 떨어지는 경우 +', 'CO2 센서 검지값이 1초 이상 2Vdc(0ppm) 이상 지속되는 경우', '1) 전원을 인가한 상태에서 CO2 센서 커버를 열고 테스터기를 통해 ‘OUT2' 단자와 ‘G' 단자 간의 전압이 2Vdc 미만인지 확인한다. +2) 만약 전압이 2Vdc 이상인데도 고장이 지속될 경우 마이콤을 교체한다. +3) 만약 전압이 2Vdc 미만으로 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9b6905d0-0b3e-4f24-b55c-2a9ed7067440', '1100', '1100', 'PSD#1 통신고장', 'Tc1', 'C', 'PSD-통신고장', 'B', 'PSD', 'PSD와 TCMS(CU)간 RS485 통신고장이 검지되면 발생.', '1) 화면상 PSD 열림/닫힘 등이 현시되지 않고, PSD 고장현시됨. +2) 전동차 출입문 닫힘중 재열림 기능이 불가함. +3) 차상장치는 TCMS와 통신이 되지 않아도 출입문 열림/닫힘 기능은 구현된다.', 'PSD 전원 CB OFF 혹은 통신연결 불량', '1) 차상 PSD 리셋 후에도 동일고장이면 사령실과 연락하여 조치를 취한다. +2) 전동차 출입문 닫힘중 재열림 기능이 구현되지 않으므로 재열림 요구시 전동차 출입문 완전히 닫힘후 다시 열림을 시행함.', null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('9b7b5d28-18e6-44e2-b8ea-23b54fed2e76', '1503', '1503', '난방장치용 AC 회로차단기 차단(Car6)', 'M3', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9b8c3478-4d35-42a1-a64b-ad3f355d1dc5', '0155', '155', 'VVVF#2 - 역행/회생 이상검지(PBR)', 'M1', 'C', 'VVVF-역행/회생 이상 검지(PBR)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT31의 Bit4 “PBR” 신호가 “1”이 되면 검지 +', '1) TCMS 화면 하단 또는 고장화면에 ‘역행/회생 신호 이상 검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생함. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉은색으로 표기되며, HSCB, LB1, 2 개방되어 동력 손실 발생함.', '추진제어장치 입력되는 역행/제동신호가 동시에 입력될 경우 검지됨. +', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반 배전반의 VVVFIC nfb 재투입 또는 차량 배터리 전원 재투입', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 역행/제동신호에 이상이 있는지 확인한다. +3) 차량의 제어 회로 중 역행/제동 신호가 추진제어장치로 연결되는 경로에 이상이 없는지 확인 한다. +4) DIN 보드의 동작 상태를 시험기를 통해 확인한다. +5) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9b8c8528-3544-4ba9-b519-7d815403261e', '0519', '519', 'DCU#6 2위(L1) - ZVR 신호 에러', 'M3', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 “ZVR signal error” 신호가 “1”이 되면 검지 +', '출입문이강제로 닫히게 되고, 열림은 불가능', ' +1) 차량 ZVR 신호가 없는 상태(차량 주행상태)에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함. +', '해당 출입문 ZVR 신호 수신', '1) 차량 이 주행중이라면, 차량 이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9b929522-2b33-4018-b44e-ecf7ec7c3288', '0239', '239', 'BECU#6 - 3축 스키드신호', 'M3', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9b9e357d-2e33-4713-8720-941f890bf506', '0321', '321', 'ATC#8 - 출입문 닫힘 오류', 'Tc2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9b9f3232-051b-4eb2-befe-f0d3fafaad81', '0514', '514', 'DCU#8 1위(R1) - 출입문 닫힘 시간 초과', 'Tc2', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 “Close time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 닫힘 동작 시간이 7초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도한 후, ‘장애물로 인한 닫힘 실패' 고장과 함께 ‘Close time out' 고장이 함께 현시 +', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9ba5173a-4b85-4504-a6c0-85609fef3684', '0746', '746', 'HVAC#1 - 전자접촉기 배기팬1(CRVF) 고장', 'Tc1', 'C', 'HVAC-전자접촉기 배기팬1(CRVF) 고장', 'C', 'HVAC', 'HVAC 환기 작동 중 CRVF1 전자접촉기 고장 발생 +', '환기 시 차량 배기팬1 운전 불가능', '환기 작동 중 2.5초 이상 동안 CRVF1 작동 feedback 신호가 수신되지 않는 경우 +', 'CRVF1 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CRVF1을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRVF1과 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9bb09513-df72-4b0b-9542-9d2731deaa9f', '1207', '1207', 'FDU#3 - 감지기4 화재감지', 'M2', 'W', 'FDU-감지기4 화재감지 (Car1~8)', 'W', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 “Detector1 State” 신호가 “11”이 되면 검지 +', '화재상태현시(자동소거 안 됨.)', '하기 2가지 조건을 모두 만족하여야 화재신호가 출력 됨. (연동모드 동작) +1) 이웃한(앞 혹은 뒤에 위치한) 감지기 중 하나의 감지기라도 주의 혹은 화재상태에 있어야 함. +2) Detector1(해당 감지기)에서 측정된 연기농도가 15% 이상이거나 온도가 65℃ 이상인 경우 +', '1) FDU의 복귀버튼 조작 시 +2) FDU 전원 리셋 시', '1) 해당 감지기 위치의 화재 발생 여부 확인 +2) 화재 오감지일 경우 FDU의 복귀버튼 취급 +3) 오감지일 경우 감지기의 청소주기 확인(내부 먼지 제거)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9bb236d5-d4ce-45fc-81df-41591f259ac0', '0216', '216', 'BECU#3 - 전두대차 AS 압력센서 고장', 'M2', 'C', 'BECU-전두대차 AS 압력센서 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit7 “전두대차 AS 압력센서 고장” 신호가 +“1”이 되면 검지 +', '해당 차량 전두대차 AS 압력센서 고장검지 현시 및 해당 차량 정상적인 응하중제동제어 불가', '해당 차량의 전두대차 AS 압력센서(AS1, AS2) 고장 +', '해당 차량의 전두대차 AS 압력센서(AS1, AS2)가 정상일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9bbd785e-4eca-4c80-8e3a-13f16f233d68', '0515', '515', 'DCU#6 4위(L2)-출입문 열림 시간 초과', 'M3', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 "Open time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 열림 동작시간이 6초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도 한 후, '장애물로 인한 열림실패' 고장과 함께 'Open time out' 고장이 함께 현시', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('9bbfe7af-6785-4790-9f87-a841426ee71b', '0502', '502', 'DCU#6 2위(L1)-출입문 장애물검지', 'M3', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('9bc93674-b89d-41fb-b9b4-53dc0e197835', '0216', '216', 'BECU#5 - 전두대차 AS 압력센서 고장', 'T2', 'C', 'BECU-전두대차 AS 압력센서 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit7 “전두대차 AS 압력센서 고장” 신호가 +“1”이 되면 검지 +', '해당 차량 전두대차 AS 압력센서 고장검지 현시 및 해당 차량 정상적인 응하중제동제어 불가', '해당 차량의 전두대차 AS 압력센서(AS1, AS2) 고장 +', '해당 차량의 전두대차 AS 압력센서(AS1, AS2)가 정상일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9bd41a24-bbdb-4f85-aff3-a51215ef95ef', '1200', '1200', 'FDU#8 통신고장', 'Tc2', 'B', 'FDU 통신고장', 'B', 'FDU', 'FDU와 TCMS간 RS485 통신고장이 검지되면 발생.', '화면상 FDU의 화재검지신호 등의 데이터가 반응하지 않음.', 'FDU 통신고장 또는 통신 케이블 문제', 'TCMS SDR 신호의 의해 FDU로부터 SD신호가 정상 수신된 경우 +조치조건 : +1) FDU 및 TCMS의 전원을 리셋하여 소거여부 확인 +2) 통신 고장이 발생하지 않은 다른차량의 수신기와 교체하여 소거 여부 확인(고장이 수신기를 따라가는지 확인) +3) TCMS와 FDU간의 통신계통 점검 및 FDU NFB 점검 +4) 문제가 지속될 경우, 수신기 교체', null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('9bde751a-896a-4fe7-95d5-a4aea7cc9b6d', '0503', '503', 'DCU#6 1위(R1)-출입문 내부비상핸들 취급(EED)', 'M3', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('9bf78043-f438-42df-ab98-9064547c98d0', '0740', '740', 'HVAC#3 - 전자접촉기 증발기1(CREF) 고장', 'M2', 'C', 'HVAC-전자접촉기 증발기1(CREF) 고장', 'C', 'HVAC', 'HVAC 냉방 작동 중 CREF1 전자접촉기 고장 발생 +', 'UNIT1 냉방 작동 불가', '냉방 작동 중 2.5초 이상 동안 CREF1 작동 feedback 신호가 수신되지 않는 경우 +', 'CREF1 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CREF1을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CREF1과 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9c067fbc-2af2-45ab-a2de-bfb9572070e1', '0501', '501', 'DCU#5 5위(R3)-출입문 차단', 'T2', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('9c21965f-7642-4f3a-b013-b355aaff3473', '0053', '53', 'AUX FUSE DISCONNECTED(Car2)', 'M1', 'W', 'AUX FUSE DISCONNECTED(Car2)', 'W', '기타', '차량으로부터 AUX FUSE DISCONNECTED 신호 입력 시 +', 'SIV 고압 차단으로 AC전원 전체 “OFF”', '해당 퓨즈 소손 +', '해당 퓨즈 교체', null, '회로 도면 : REC20210DX0', '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9c2d5880-dee7-43d6-8a18-cfce1dcc636e', '0708', '708', 'HVAC#5-냉난방장치1 증발기1 과부하', 'T2', 'C', 'HVAC-냉난방장치1 증발기1 과부하', 'C', 'HVAC', 'HVAC 냉방작동 중 냉난방장치1 증발기 모터에 과부하 발생.', 'UNIT1 냉방 작동 불가', '1) 냉방작동 중 UNIT1의 증발기 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CREF1과 연결된 THR5가 Trip 됨.', 'UNIT1의 증발기 모터의 과부하 조건을 해소하여 정상 가능 상태로 만들고, THR5 및 마이콤 전원 리셋', '1) 냉난방배전반의 점검커버를 열고, THR5의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR5의 전류 세팅값이 3A에 맞춰져 있는지 확인하여, 아닐 경우, 십자 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동 시킨 후, THR5의 2차측 2,4,6 단자에서 각 단자간 상간 전압이 AC 380V으로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 증발기 단품 상태에서 점검을 한다. +7) THR5의 2차측 2,4,6 단자에서 각 단자간 권선저항이 모두 같은지 확인한다. (±10% 이하) (증발기 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT2의 증발기 모터의 결선을 해제한 후 4극 및 6극 모터의 권선저항을 확인 후, 문제가 있을 겨우, 증발기 모터를 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR5 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('9c2dcf0b-1d71-4726-8c77-da331f99deb3', '0219', '219', 'BECU#1-제동지령 비정상', 'Tc1', 'C', 'BECU-제동지령 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit2 “제동지령 비정상” 신호가 "1"이 되면 검지.', '해당 차량 제동지령 비정상 검지 현시 및 해당차량 정상적인 제동제어 불가. (상용제동지령에 따른 제어)', '해당 차량의 제동지령 신호가 정상범위를 벗어남(5.0~95.0%).', '해당 차량의 제동지령 신호가 정상범위일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. +소거되지 않을 경우 해당 선택 운전실의 PWM 엔코더를 리셋(CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('9c31cd62-76ac-41d7-8402-62061eb11d31', '0716', '716', 'HVAC#8-냉난방장치1 압력스위치1(DPS) 고압', 'Tc2', 'D', 'HVAC-냉난방장치1 압력스위치1(DPS) 고압', 'D', 'HVAC', '냉난방장치1 냉매 압력스위치2 고압 발생.', 'UNIT1 CYCLE1 냉방 기능 불가', 'UNIT1 DSP1측 냉매 압력이 3초 이상 28±1(kgf/cm2) 이상 되는 경우', '냉매 압력이 정상 수치 15±0.7(kgf/cm2 이하로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CRCM1의 부하측 전류를 측정하여 응축기 팬의 동작여부를 확인한다. +2) 응축기 코일의 전면에 이물질로 인한 막힘이 있는지 확인한다. +3) 응축기 팬 상부 그릴에 외부 이물질로 인한 막힘이 있는지 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('9c4b09dd-3479-4d26-8cc5-b8e66a7c2a7e', '0505', '505', 'DCU#4 2위(L1)-출입문 입력 고전압', 'T1', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 "1"이 되면 검지.', '고전압 상태. (그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('9c648b9a-e591-4184-837b-9869c9e395f2', '0500', '500', 'DCU#8 2위(L1) 통신고장', 'Tc2', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS 간 RS485 통신고장이 검지되면 발생 +', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐상태 등의 변화가 없음.', ' +1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우 +', '해당 차량의 DCU 및 CU/TU의 전원이 정상상태이고, 통신 라인 연결 상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜져 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적 으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는 데도 지속적으로 통신고장이 검지되면, DCU의 X2, X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상 체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9c671972-aae1-4d2f-a71d-11d9c9923ca2', '0507', '507', 'DCU#1 2위(L1) - 초기화 실패', 'Tc1', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 “Calibration failure” 신호가 “1”이 되면 검지 +', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터 고장, 장애물감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우 +', '초기화 실패를 야기한 고장코드를 확인하여 조치 후, 재닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인한다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9c6c0b51-f1fd-40c3-9cb3-cbad83af0f65', '0209', '209', 'BECU#3-4축속도신호의 비정상', 'M2', 'C', 'BECU-4축속도신호의 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit0 “4축속도신호의 비정상” 신호가 "1"이 되면 검지.', '해당 차량 4축속도신호의 비정상 검지 현시 및 해당 차량 활주제어 불가.', '해당 차량의 4축 속도센서 고장 발생.', '해당 차량의 4축 속도센서가 정상적일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('9c921858-37b0-414a-b113-bf7fa67055c2', '0178', '178', 'VVVF#3-LB2 고착(LB2NO)', 'M2', 'C', 'VVVF-LB2 고착(LB2NO)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT34의 Bit3 “LB2NO” 신호가 "1"이 되면 검지.', null, 'LB2 개방조건에서 투입상태 유지 시 고장검지.', '동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) 주회로 차단기함 내에 LB2의 주접점을 확인하여 고착여부를 확인한다. +2) 주회로 차단기함 내에 LB2의 보조접점을 확인하여 고착여부를 확인한다. +3) 추진제어장치 계전기 유니트에 LB2R 계전기 상태를 확인하여 고착여부를 확인한다. +4) 추진제어장치 시험기를 이용하여 TCU(통합제어기) 시험을 실시하여 이상여부를 확인한다. +5) 상기의 점검부분에 이상이 있을경우 관련부품을 교체한다.', null, '3', '2025-10-12 01:21:37.578803+00', null, '로템40량(2018)-1단계', 'Rotem'), ('9ca0eedd-376b-443b-8cb8-bc0e327e07e7', '0738', '738', 'HVAC#6 - 전자접촉기 증발기3(CREF) 고장', 'M3', 'C', 'HVAC-전자접촉기 증발기3(CREF) 고장', 'C', 'HVAC', 'HVAC 냉방 작동 중 CREF3 전자접촉기 고장 발생 +', 'UNIT2 냉방 작동 불가', '냉방 작동 중 2.5초 이상 동안 CREF3 작동 feedback 신호가 수신되지 않는 경우 +', 'CREF3 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CREF3을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CREF3과 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9cad9bbd-0dba-485b-ad94-87f19778a067', '0217', '217', 'BECU#5 - 회생제동달성 비정상', 'T2', 'C', 'BECU-회생제동달성 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit0 “회생제동달성 비정상” 신호가 “1”이 되면 검지 +', '해당 차량 회생제동달성비정상 검지 현시 및 해당 차량 정상적인 전공교차제어 불가', '해당 차량의 회생제동 달성 신호가 정상범위를 벗어남. (5.0 ~ 95.0%) +', '해당 차량의 회생제동달성신호가정상범위일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 소거되지 않을 경우 해당 차량 추진제어장치 리셋(CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르 시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9cc83848-3b2b-4491-9348-a9578733297f', '0500', '500', 'DCU#2 4위(L2) 통신고장', 'M1', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS 간 RS485 통신고장이 검지되면 발생 +', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐상태 등의 변화가 없음.', ' +1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우 +', '해당 차량의 DCU 및 CU/TU의 전원이 정상상태이고, 통신 라인 연결 상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜져 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적 으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는 데도 지속적으로 통신고장이 검지되면, DCU의 X2, X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상 체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9ccdd232-86d4-4a7b-a320-ac7ecbe2ccd9', '0518', '518', 'DCU#2 3위(R2)-출입문 Enable 신호 에러', 'M1', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 "Enable signal error” 신호가 "1"이 되면 검지.', 'DCU 출입문 Enable 신호 에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) 취급시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함.', '해당출입문 enable 신호 수신', '1) AUTO/MCS 모드시에는 YARD모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인한다. (YARD/FMC 모드시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.392739+00', null, '로템40량(2018)-1단계', 'Rotem'), ('9cd6c00c-2387-49b8-8d67-bae1006e4e85', '0201', '201', 'BECU#8 - 덤프밸브 고장(후미대차)', 'Tc2', 'C', 'BECU-덤프밸브고장(후미대차)', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit0 “덤프밸브고장(후미대차)” 신호가 “1”이 +되면 검지 +', '해당 차량 덤프밸브 고장(후미대차)검지 현시 및 해당 차량 활주제어 불가', '해당 차량 후미대차의 덤프밸브가 작동하지 않음. +', '해당 차량 후미대차의 덤프밸브가 정상작동 시 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9cf8e897-b989-4f8f-8fa3-85eb6560fcd8', '1520', '1520', 'TU 모듈고장 - AUX3(Car2)', 'M1', 'C', 'TU 모듈고장 - AUX3', 'C', 'TCMS', 'TU의 AUX3 PCB가 이 정상적으로 인식되지 않아 점검이 필요할 때 +', '1) TU의 AUX PCB가 모듈 고장이 발생하면, 해당 TU의 모든 디지털 출력 불가 +2) 해당 차량의 실내등 제어 및 라인플로우팬 제어 불가 +3) 해당 TU가 M1 차량 인 경우 판토제어 상승/하강 변경 불가(판토 및 공기압축기 제어) +4) 해당 TU가 T1 차량 인 경우 연장급전상태 제어 불가', 'TU AUX3의 ID를 정상적으로 검출하지 못할 때 화면에 현시 +', 'TU AUX3의 ID를 정상적으로 검출하는 경우 소거됨.', '1) TU의 AUX3 PCB 교체 +2) 불량 해소가 되지 않을 경우, 순차적으로 SCM, DIM PCB를 교체하여 정상여부 확인', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9cfc44a0-41c3-44d4-aeda-932e5112f908', '0060', '60', 'MAIN FUSE#1 DISCONNECTED(Car3)', 'M2', 'W', 'MAIN FUSE#1 DISCONNECTED(Car3)', 'W', '기타', '차량으로부터 AUX FUSE DISCONNECTED 신호 입력 시 +', 'VVVF 고압 차단으로 추진 불능', '해당 퓨즈 소손 +', '해당 퓨즈 교체 +회로 도면 : REC20210DX0', null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9cfd5e3c-ec9c-41a6-ba75-86c2dd82c86c', '0152', '152', 'VVVF#2-제동패턴이상검지(BPD)', 'M1', 'C', 'VVVF-제동패턴이상검지(BPD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT31의 Bit1 “BPD” 신호가 "1"이 되면 검지.', null, '제동요구치 PWM신호의 이상 발생 시 고장검지.', '제동요구치 신호 정상입력 시 고장해제.(24V, 500Hz)', '1) TCMS의 시리얼데이터 화면에서 마스콘을 조작하며 제동노치 별 BED값이 변하는 것을 확인한다. +2) TCU(통합제어기)에 RS232케이블을 이용하여 노트북(제공품)과 연결 후 모니터링 프로그램으로 추진장치에서 BP값 인식 여부를 확인한다. +3) 제동요구치(BED)신호 배선 확인. +4) 제동요구치 신호 파형 확인. (24V, 500Hz) +5) 추진제어장치 시험기를 이용하여 TCU(통합제어장치)의 이상여부를 확인한다. +6) 상기의 점검부분에 이상이 있을 경우 관련부품을 교체한다.', null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('9d089ccb-60a4-460b-976c-ad0df03e98c6', '0504', '504', 'DCU#8 3위(R2)-출입문 외부비상핸들 취급(EAD)', 'Tc2', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('9d122aee-b10c-48af-85d0-50c03b646e94', '0420', '420', 'SIV#8-인버터2 입력 과전류(INV2OC)', 'Tc2', 'C', 'SIV-인버터2 입력 과전류(INV2OC)', 'C', 'SIV', '보조전원장치(SIV)의 RS485 데이터 중 SIV-TCMS SD TEXT6의 Bit5 “INV2OC” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 '인버터2 입력 과전류' 표시됨. +2) 보조전원장치(SIV)는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 보조전원장치 중고장이 발생됨. +5) 중고장이 발생되면 TCMS 일반화면에 보조전원장치 상태 붉을색으로 표기되며, 연장급전 됨.', '보조전원장치(SIV) 내부 인버터 2에서의 전류가 450A 이상일 경우 검지됨.', '1) 경고장이 발생할 경우 보조전원장치(SIV) 자동 재기동에 의해 재기동 됨. +2) 중고장이 발생했을 경우 조치 완료 후 보조전원장치(SIV) 리셋으로 고장 소거됨.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 보조전원장치(SIV) 고장기록을 수집하여 FC전압, 전류에 이상이 있는지 확인한다. +3) 보조전원장치(SIV) 내부 고전압부에 소손흔적이 있는지 확인한다. +4) FC에 연결된 버스바의 체결상태가 양호한지 확인한고, 버스바를 분리하여 FC의 Capacitance를 측정하여 이상이 없는지 확인한다. +5) 전압센서와 보조전원장치(SIV) 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +6) SEN 보드의 동작상태를 시험기를 통해 확인한다. +7) 출력단 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('9d198805-73a7-44cf-bb36-e388a643879a', '0176', '176', 'VVVF#3 - LB1 고착(LB1NO)', 'M2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9d2293c9-5e1e-4de3-857c-d7615b3b84fc', '0902', '902', '비상인터폰 동작(Car#5-1)', 'T2', 'W', null, null, 'RADIO', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('9d2507f3-bbca-42b5-87f3-9c6e900465c5', '1705', '1705', '노선안내표시기#4 고장(Car2)', 'M1', 'C', '노선안내표시기#3 고장', 'C', 'PIC', 'PIC 장치의 노선안내표시기#3이 고장이 났을 때 발생 +', '1) 노선안내표시기 화면 미현시 +2) 노선안내표시기 안내 화면 오현시', '통신고장 +', '통신 재개 시', '1) 이더넷 스위치 링크 확인 +2) 이더넷 케이블 점검 +3) 제어보드 및 전원보드 교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9d716567-590c-446f-a3e3-8f79ba518edc', '0513', '513', 'DCU#7 5위(R3)-모듈 상태체크 에러', 'M4', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 "Module check error” 신호가 "1"이 되면 검지.', 'Module check error 현시 (출입문은 정상작동 가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태체크 기능에 이상이 생긴 경우 고장 발생.', 'DCU의 'A'모듈과 'B'모듈 간, 상태체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('9d739770-93dc-4784-9cdf-1a62faf5a475', '0727', '727', 'HVAC#6 - 배기팬1 과부하', 'M3', 'C', 'HVAC-배기팬1 과부하', 'C', 'HVAC', 'HVAC 환기작동 중 차량 배기팬1 모터에 과부하 발생 +', '환기 시 차량 배기팬2 운전 불가능', ' +1) 냉방 작동 중 챠량 배기팬1 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRVF1와 연결된 THR9가 Trip 됨. +', '차량 배기팬1 모터의 과부하조건을 해소하여 정상 가능 상태로 만들고, THR9 및 마이콤 전원 리셋', '1) 냉난방 배전반의 점검커버를 열고, THR9의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR9의 전류 세팅값이 2.5A에 맞춰져 있는지 확인하여, 아닐 경우, (+) 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동시킨 후, THR9의 2차측 2, 4 단자와 6 단자 사이의 전압이 DC 100V로 정상 측정 되는지 확인한다. +5) 만약 전압이 측정되지 않을 시, 전원이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, THR9 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9d7949c9-a673-478f-a012-49c3d5079f80', '0509', '509', 'DCU#7 4위(L2)-출입문 잠김 리미트 스위치 고장', 'M4', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 "DLS Failure” 신호가 "1"이 되면 검지.', '출입문 잠김 상태 확인 불가', '1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('9d7c0704-ce3e-4f21-b884-ff079641f914', '0177', '177', 'VVVF#3-LB1 투입불량(LB1NC)', 'M2', 'C', 'VVVF-LB1 투입불량(LB1NC)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT34의 Bit2 “LB1NC” 신호가 "1"이 되면 검지.', null, 'LB1 투입이 되지 않을 때 고장검지.', '동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) 판토하강상태에서 테스트모드로 전환하여 시퀀스를 투입하고 LB1의 주접점 동작을 확인한다. +2) 주회로 차단기함 내에 LB1의 보조접점의 동작상태를 확인한다. +3) 추진제어장치 계전기 유니트에 LB1R 계전기 상태를 확인하여 계전기의 동작 여부를 확인한다. +4) 추진제어장치 시험기를 이용하여 제어기 시험을 실시하여 이상여부를 확인한다.', null, '3', '2025-10-12 01:21:37.578803+00', null, '로템40량(2018)-1단계', 'Rotem'), ('9d85161f-c0ef-451e-bc9d-5229c88cf7ea', '0206', '206', 'BECU#7-RAM 점검 고장', 'M4', 'C', 'BECU-RAM 점검 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit5 “RAM 점검 고장” 신호가 "1"이 되면 검지.', '해당 차량 RAM 점검 고장 검지 현시 및 해당 차량 정상적인 제동제어 불가.', '해당 차량 BECU의 자가진단 시 고장 발생.', '해당 차량 BECU의 자가진단 시 정상적일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('9d99c1b5-a801-4fc6-bc48-e08f40e427f8', '0174', '174', 'VVVF#3-통합제어장치-PWM제어장치간 신호이상 검지(ERRDIO)', 'M2', 'C', 'VVVF-DI 이상(TCUPWM)(ERRDIO)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT33의 Bit7 “ERRDIO” 신호가 "1"이 되면 검지.', null, 'PWM보드와 TCU(통합제어기)간 디지털신호의 이상 발생 시 검지.', '동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) 각 PWM 보드 전면의 LED점등을 확인하고 이상 발생 시 재 체결한다. +2) PWM 제어기 내부 PCB상태를 육안으로 점검한다. +3) 각 PWM보드의 CN1, CN2 커넥터를 분리하여 핀 상태 및 배선상태를 확인한다. +4) TCU(통합제어장치)의 PUZ 보드의 후면의 커넥터 삽입상태를 확인하고 이상 발생 시 재 체결한다. +5) TCU(통합제어장치)의 PUZ 보드 후면의 제어배선 중, TRX11P, TRX11F, TRX11G 배선의 연결상태 및 배선의 단선 여부를 확인한다. +6) 상기 점검 시 이상이 없을 경우 PUZ 보드를 교체한다.', null, '3', '2025-10-12 01:21:37.578803+00', null, '로템40량(2018)-1단계', 'Rotem'), ('9d99feda-bcdc-4a8f-b44a-ab2e28789b88', '0512', '512', 'DCU#6 2위(L1)-파라미터 로딩 실패', 'M3', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 "Paraneter error” 신호가 "1"이 되면 검지.', 'Parameter error 현시 (출입문은 정상작동 가능)', 'DCU 자체내의 EEPROM으로부터 parameter 데이터 로딩 실패', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('9d9d9507-a34c-4b89-9482-3a62b805d4f0', '0503', '503', 'DCU#5 1위(R1) - 출입문 내부 비상핸들 취급(EED)', 'T2', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9da40a58-b0d9-4045-9557-ae53a31131d1', '0731', '731', 'HVAC#2 - 냉난방장치1 리턴 센서 고장', 'M1', 'C', 'HVAC-냉난방장치1 리턴 센서 고장', 'C', 'HVAC', '냉난방장치1의 리턴 센서 고장 발생 +', '냉난방장치1 리턴 센서 고장현시', '온도센서 검지범위는 -45 ~ 85도(820 ~ 1,330Ω)인데, 2초 이상 검지범위를 벗어나는 경우 +', '온도센서 검지값이 2초 이상 허용온도 범위 내일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820 ~ 1,330Ω을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9dac477e-2cb4-43eb-a682-4a5473acf303', '0503', '503', 'DCU#8 1위(R1) - 출입문 내부 비상핸들 취급(EED)', 'Tc2', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9dcefc60-8056-482c-a347-67f384042546', '0837', '837', '실내카메라#3(SCAM) 고장(Car#8)', 'Tc2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9dd68247-6fb6-45da-b7aa-b34b1ece7a2d', '0503', '503', 'DCU#5 4위(L2)-출입문 내부비상핸들 취급(EED)', 'T2', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('9ddf54c8-2c79-4458-aa8a-a0cf422ecd62', '0503', '503', 'DCU#3 1위(R1)-출입문 내부비상핸들 취급(EED)', 'M2', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('9de02021-1efd-474d-84db-60162870626f', '0300', '300', 'ATC#8 통신고장', 'Tc2', 'B', 'ATC 통신고장', 'B', 'ATC', 'ATC와 TCMS간 RS485 통신고장이 검지되면 발생.', 'MMI화면에 ATC 상태가 통신고장으로 현시된다.', '1) ATC 전원 CB OFF +2) ATC시스템 자체진단테스트결과 비정상상태일 경우 +3) ATC-1계/2계 CPU보드 고장 시 +4) ATC-1계/2계 POWER보드 고장시 +5) 통신연결 불량', '해당차량의 ATC 및 CU 의 전원이 정상상태이고, 통신라인 연결상태가 정상', '1) MMI화면 우측 상단에 ATC/ATO1, ATC/ATO2 정상상태(초록색글자현시)인지 확인한다. +2) 비정상상태(빨간글자현시)시 전원스위치 CB ATC#1,2 OFF->ON하여 복귀시도 후, 복귀되었는지 확인한다. +3) ATC가 정상적으로 켜져 있는데도 지속적으로 통신고장이 검지되면, ATC의 CN3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상체결되어 있을 경우, CU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다.', null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('9df85daf-9196-4f55-a8b0-ff79ce8742d4', '0751', '751', 'HVAC#8 - 냉난방장치1 보조히터 과열', 'Tc2', 'C', 'HVAC-냉난방장치1 보조히터 과열', 'C', 'HVAC', 'HVAC1 보조난방기 작동 중 과열 발생 +', 'UNIT1보조난방기난방불가', '보조난방기 작동 중 1초 이상 동안 온도가 70도 이상으로 과온 센서 정상신호가 수신 되지 않는 경우 +', '1초 이상 동안 60도 미만으로 온도가 떨어져 과온 센서 정상신호가 수신되는 경우', '1) 보조난방기가 꺼진 상태에서도 문제 발생 시, 과온 센서를 교체한다. +2) 센서 교체 후에도 문제가 발생되면, 배선에 문제가 없는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9dfb6e2c-ef29-4b1d-8886-7d67408b0cf6', '0503', '503', 'DCU#4 1위(R1) - 출입문 내부 비상핸들 취급(EED)', 'T1', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9e00f07e-3d42-4aa3-878c-7fe4e83619d8', '0519', '519', 'DCU#3 2위(L1)-ZVR 신호 에러', 'M2', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 "ZVR signal error” 신호가 "1"이 되면 검지.', '출입문이 강제로 닫히게 되고, 열림은 불가능', '1) 차량 ZVR 신호가 없는 상태 (차량 주행상태) 에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함.', '해당출입문 ZVR 신호 수신', '1) 차량이 주행중이라면, 차량이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.392739+00', null, '로템40량(2018)-1단계', 'Rotem'), ('9e059fad-48af-4d0a-849f-864d952e0509', '0502', '502', 'DCU#8 3위(R2) - 출입문 장애물검지', 'Tc2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9e09a51a-3c9c-403f-8df9-c336a4c93af8', '0416', '416', 'SIV#8-게이트 드라이버 고장, UX1상(GDFUX1)', 'Tc2', 'C', 'SIV-게이트 드라이버 고장, UX1상(GDFUX1)', 'C', 'SIV', '보조전원장치(SIV)의 RS485 데이터 중 SIV-TCMS SD TEXT5의 Bit6 “GDFUX1” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 'GDF UX 1상 이상검지' 표시됨. +2) 보조전원장치(SIV)는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 보조전원장치(SIV) 중고장이 발생됨. +5) 중고장이 발생되면 TCMS 일반화면에 보조전원장치(SIV) 상태 붉을색으로 표기되며, 연장급점 됨.', '보조전원장치(SIV) 내부 GDU에 과전류, 과온이 검지될경우.', '1) 경고장이 발생할 경우 보조전원장치(SIV) 자동 재기동에 의해 재기동 됨. +2) 중고장이 발생할 경우 보조전원장치(SIV) 리셋으로 고장 소거됨.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 보조전원장치(SIV) 고장기록을 수집하여 출력되는 3상의 AC 전류치를 확인함. +3) 특정상의 전류치가 비정상적일 경우 특정상에 해당되는 GDU, 전류센서, 출력단 결선을 확인한다. +4) 전류센서와 보조전원장치(SIV) 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작상태를 시험기를 통해 확인한다. +6) GDU 전원공급기의 전원연결상태 또는 광케이블의 연결상태와 배선상태를 확인한다. +7) 출력단 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('9e149344-a2b6-45c1-acf2-ec270124e9ce', '0519', '519', 'DCU#1 4위(L2)-ZVR 신호 에러', 'Tc1', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 "ZVR signal error” 신호가 "1"이 되면 검지.', '출입문이 강제로 닫히게 되고, 열림은 불가능', '1) 차량 ZVR 신호가 없는 상태 (차량 주행상태) 에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함.', '해당출입문 ZVR 신호 수신', '1) 차량이 주행중이라면, 차량이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('9e164eb7-b123-4765-a733-a3e76c7117eb', '0841', '841', '실내카메라#1(SCAM) 고장(Car#4)', 'T1', 'C', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('9e1d7695-9fb6-49f2-bfc9-81c40a31feb7', '0735', '735', 'HVAC#3 - 전자접촉기 압축기(CRCM)2 고장', 'M2', 'C', 'HVAC-전자접촉기 압축기(CRCM)2 고장', 'C', 'HVAC', 'HVAC 냉방 작동 중 CRCM2 전자접촉기 고장 발생 +', '냉방 기능 저하(전냉방 시 반냉방으로 작동)', '냉방 작동 중 2.5초 이상 동안 CRCM2 작동 feedback 신호가 수신되지 않는 경우 +', 'CRCM2 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CRCM2를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRCM2와 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9e21a458-b873-417c-87fc-c8ba4a6da3e4', '0747', '747', 'HVAC#1-전자접촉기 차량히터2(CRRHT) 고장', 'Tc1', 'C', 'HVAC-전자접촉기 차량히터2(CRRHT) 고장', 'C', 'HVAC', '객실 난방기 작동 중 CRRHT2 전자접촉기 고장 발생.', '객실 전난방 시 1/3난방만 작동', '객실 전난방 작동 중 2.5초 이상동안 CRRHT2 작동 feedback 신호가 수신되지 않는 경우', 'CRRHT2 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CRRHT2를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRRHT2와 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('9e253a8e-a1a7-4f90-a7a7-59024170405f', '0713', '713', 'HVAC#3-냉난방장치1 압력스위치2(DPS) 저압', 'M2', 'D', 'HVAC-냉난방장치1 압력스위치2(DPS) 저압', 'D', 'HVAC', '냉난방장치1 냉매 압력스위치2 저압 발생.', 'UNIT1 CYCLE2 냉방 기능 불가', 'UNIT1 DSP2측 냉매 압력이 3초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우', '냉매 압력이 정상 수치 2±0.5(kgf/cm2 이상으로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CREF2의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)을 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안되는 것을 확인한 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('9e321f58-e32d-4722-b89e-5812c88a00e3', '0029', '29', '비상제동 차단 스위치 취급', 'Tc2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9e3e2c33-d36e-4f35-b58e-a4f3768b9120', '1514', '1514', 'CU1 모듈고장 - DIM1(Car8)', 'Tc2', 'C', 'CU1, 2 모듈고장 - DIM1', 'C', 'TCMS', 'CU의 DIM1 PCB가 이 정상적으로 인식되지 않아 점검이 필요할 때 +', '1) CU1의 DIM1 PCB가 모듈 고장이 발생하면, CU2로 자동 절체됨. (CU2로 자동 절체되면, 운행 에는 지장이 없음.) +2) CU2 자동 절체 시 화면의 우측 상단 경고장글자 하단에 “B.SYS” 라는 표시가 나타남. +3) 자동 절체 시 열차 운행에는 관계없음. +4) CU2의 DIM1 모듈고장 시는 CU1 정상동작시 운행에는 지장이 없음.', 'CU DIM1의 ID를 정상적으로 검출하지 못할 때 화면에 현시 +', 'CU DIM1의 ID를 정상적으로 검출하는 경우 소거됨', '1) CU의 DIM1 PCB 교체 +2) 불량 해소가 되지 않을 경우, 순차적으로 MCPU, SCM, AUX PCB를 교체하여 정상여부 확인', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9e45e4ed-4ae2-4629-8515-df58c531b5ba', '0109', '109', 'VVVF-IPM 이상검지(GDF) (Car6)', 'M3', 'C', 'VVVF-IPM 이상검지(GDF)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT31의 Bit4 “GDF” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 'IPM 이상검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치 내부 IPM에 과전류, 과온이 검지될경우.', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반배전반의 VVVFIC nfb 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 견인전동기로 출력되는 3상의 전류치 확인함. +3) 특정상의 전류치가 비정상적일 경우 특정상에 해당되는 IPM, 전류센서, 모터결선을 확인한다. +4) 전류센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작상태를 시험기를 통해 확인한다. +6) IPM 전원공급기의 전원연결상태 또는 광케이블의 연결상태와 배선상태를 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.656536+00', null, '다대48량(2015)', 'Rotem'), ('9e493b7c-0dca-477c-a7a4-5d17dc71fa6c', '0508', '508', 'DCU#6 1위(R1)-출입문 모터/인코더 고장', 'M3', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 "Motor / Encoder failure” 신호가 "1"이 되면 검지.', '출입문 정상동작 불가', '1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우 (인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터 / 인코더 회로가 손상된 경우', '모터/인코더 및 DCU가 정상상태이고, 전기적 연결상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있느지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. +★ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. + +1. DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. +2. DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) +3. DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('9e53f3c7-9af5-49d2-bf4b-2885e28f2ab8', '0315', '315', 'ATC#8-', 'Tc2', '0', null, null, '0', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('9e677073-3d69-4de8-b4a0-03e882a20306', '0911', '911', 'TRAIN RADIO#8 통신고장', 'Tc2', 'C', 'TRAIN RADIO 통신고장', 'C', 'RADIO', 'Train Radio와 TCMS(CU)간 RS485 통신고장이 검지되면 발생.', '화면상 Train Radio 고장 현시', 'Train Radio 통신고장(전원OFF) 또는 통신 케이블 문제', 'TCMS와 Train Radio 간의 통신계통 점검 및 Train Radio NFB 점검.', null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('9e73d02a-6bce-4ec5-9ce0-adb5da8bfe81', '0907', '907', '비상인터폰 동작(Car#7-2)', 'M4', 'W', null, null, 'RADIO', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('9e7d61c1-e76d-45ad-9a93-a623e71c9cb5', '0211', '211', 'BECU#4-2축속도신호의 비정상', 'T1', 'C', 'BECU-2축속도신호의 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit2 “2축속도신호의 비정상” 신호가 "1"이 되면 검지.', '해당 차량 2축속도신호의 비정상 검지 현시 및 해당 차량 활주제어 불가.', '해당 차량의 2축 속도센서 고장 발생.', '해당 차량의 2축 속도센서가 정상적일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('9e95e9bf-8d65-4056-bcf2-1a5dc47c8b91', '0233', '233', 'AS 코크#2 차단(Car3)', 'M2', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('9ea17aae-dc12-4910-b5cd-1ef5065e6f3a', '0510', '510', 'DCU#7 5위(R3) - 출입문 닫힘 리미트 스위치1 고장', 'M4', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 “DCS1 Failure(Leftt)” 신호가 “1”이 되면 검지 +', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9ebcae2b-da97-4dba-94f1-f426d0ef1564', '0513', '513', 'DCU#2 6위(L3) - 모듈 상태체크 에러', 'M1', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 “Module check error” 신호가 “1”이 되면 검지 +', 'Modulecheckerror현시(출입문은 정상작동가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태 체크 기능에 이상이 생긴 경우 고장 발생 +', 'DCU의 ‘A' 모듈과 ‘B' 모듈 간, 상태 체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9ec4ed34-a5e8-4ce1-9503-721dd2e00485', '1402', '1402', 'BMS#1 - 퓨즈 오픈', 'Tc1', 'C', 'BMS-퓨즈 오픈', 'C', 'BMS', 'BMS의 RS485 데이터 중 BMS-TCMS SD TEXT2의 Bit1 “퓨즈 오픈” 신호가 “1”이 되면 검지 +', '퓨즈 고장으로 충방전 불가', '배터리 내, 외부회로 단락으로 인한 과전류 발생 +', '배터리 내, 외부회로 단락 제거', '1) 배터리 팩 절연저항 확인한다. +2) 배터리 외부 회로의 단락 검침한다. +3) 단락회로 검침 후 정상이면 퓨즈 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9ef2ca69-0d85-4812-a006-53c8fc56bcb5', '0509', '509', 'DCU#3 4위(L2) - 출입문 잠김 리미트 스위치 고장', 'M2', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 “DLS Failure” 신호가 “1”이 되면 검지 +', '출입문 잠김 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9f0e5ed1-e65c-4f45-9def-85e18f011662', '0518', '518', 'DCU#3 4위(L2)-출입문 Enable 신호 에러', 'M2', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 "Enable signal error” 신호가 "1"이 되면 검지.', 'DCU 출입문 Enable 신호 에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) 취급시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함.', '해당출입문 enable 신호 수신', '1) AUTO/MCS 모드시에는 YARD모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인한다. (YARD/FMC 모드시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.392739+00', null, '로템40량(2018)-1단계', 'Rotem'), ('9f10d390-5cf6-4380-a9e3-a5c9df2bc58f', '0520', '520', 'DCU#7 5위(R3) - 이중계 절체 동작', 'M4', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 “Module switchover” 신호가 “1”이 되면 검지 +', '이중계 절체 동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러) 이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A'모듈 및 ‘B'모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9f127209-803a-4ef3-a297-4f8347d43eb0', '0503', '503', 'DCU#5 5위(R3) - 출입문 내부 비상핸들 취급(EED)', 'T2', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9f2b8922-a536-4358-8faf-e8e15f78c886', '0056', '56', 'AUX FUSE DISCONNECTED(Car5)', 'T2', 'W', 'AUX FUSE DISCONNECTED(Car5)', 'W', 'TCMS', '차량으로부터 AUX FUSE DISCONNECTED 신호 입력시', 'SIV 고압 차단으로 AC전원 전체 "OFF"', '해당 퓨우즈 소손', '해당 퓨우즈 교체', null, ' +REC30330HN0', '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('9f2f9dc1-8750-4fdd-8714-50ce82e62517', '1202', '1202', 'FDU#6-감지기1 고장', 'M3', 'C', 'FDU-감지기1 고장', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 "Detector1 State” 신호가 "10"이 되면 검지.', '감지기 고장상태 현시(자동 소거 안됨)', '1) 감지기로부터 데이터 응답이 없는경우. +2) 감지기로부터 수신된 데이터의 CRC가 맞지 않는경우 +3) 감지기로부터 수신된 데이터의 ID가 송신 ID와 일치하지 않는경우', 'FDU 전원 리셋 후 감지기로부터 정상적으로 데이터가 수신된 경우', '1) FDU 전원 리셋 후 고장 소거 여부 확인 +2) 정상 동작중인 감지기와 위치 교환 후 FDU 전원 리셋 및 고장 상태 확인 +3) 동일한 감지기에서 고장 발생시 감지기 교체 +4) 동일한 위치에서 고장 발생시 감지기 라인 점검', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('9f51e7a0-f60e-4b3c-9125-032eb19ee179', '0740', '740', 'HVAC#8 - 전자접촉기 증발기1(CREF) 고장', 'Tc2', 'C', 'HVAC-전자접촉기 증발기1(CREF) 고장', 'C', 'HVAC', 'HVAC 냉방 작동 중 CREF1 전자접촉기 고장 발생 +', 'UNIT1 냉방 작동 불가', '냉방 작동 중 2.5초 이상 동안 CREF1 작동 feedback 신호가 수신되지 않는 경우 +', 'CREF1 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CREF1을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CREF1과 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9f54ca2f-1354-456c-8a13-9286df4728fd', '0513', '513', 'DCU#7 4위(L2) - 모듈 상태체크 에러', 'M4', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 “Module check error” 신호가 “1”이 되면 검지 +', 'Modulecheckerror현시(출입문은 정상작동가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태 체크 기능에 이상이 생긴 경우 고장 발생 +', 'DCU의 ‘A' 모듈과 ‘B' 모듈 간, 상태 체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9f61ff52-0414-479b-8097-e42b651f23ad', '0520', '520', 'DCU#1 2위(L1) - 이중계 절체 동작', 'Tc1', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 “Module switchover” 신호가 “1”이 되면 검지 +', '이중계 절체 동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러) 이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A'모듈 및 ‘B'모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9f66b948-e54b-4c6c-9387-78b740f2b973', '1110', '1110', 'PSD#1 - 차상 RF 고장(2계)', 'Tc1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9f66f71d-2da7-4de7-bb5e-9c705b13a966', '0506', '506', 'DCU#8 5위(R3) - 출입문 입력 저전압', 'Tc2', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 “1”이 되면 검지 +', '저전압상태(출입문 동작이 심하게 느려지거나 작동조차 안 될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하 +', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9f6e17cd-02b2-4dbc-b77d-c5fd819af132', '0519', '519', 'DCU#6 4위(L2)-ZVR 신호 에러', 'M3', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 "ZVR signal error” 신호가 "1"이 되면 검지.', '출입문이 강제로 닫히게 되고, 열림은 불가능', '1) 차량 ZVR 신호가 없는 상태 (차량 주행상태) 에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함.', '해당출입문 ZVR 신호 수신', '1) 차량이 주행중이라면, 차량이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.392739+00', null, '로템40량(2018)-1단계', 'Rotem'), ('9f77d749-5627-4d62-85e8-613b94d3b4bb', '0510', '510', 'DCU#6 2위(L1)-출입문 닫힘 리미트 스위치1 고장', 'M3', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 "DCS1 Failure(Leftt)” 신호가 "1"이 되면 검지.', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('9f982bd4-ab47-4d8f-b44e-50664a88c1b5', '0178', '178', 'VVVF#7-LB2 고착(LB2NO)', 'M4', 'C', 'VVVF-LB2 고착(LB2NO)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT34의 Bit3 “LB2NO” 신호가 "1"이 되면 검지.', null, 'LB2 개방조건에서 투입상태 유지 시 고장검지.', '동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) 주회로 차단기함 내에 LB2의 주접점을 확인하여 고착여부를 확인한다. +2) 주회로 차단기함 내에 LB2의 보조접점을 확인하여 고착여부를 확인한다. +3) 추진제어장치 계전기 유니트에 LB2R 계전기 상태를 확인하여 고착여부를 확인한다. +4) 추진제어장치 시험기를 이용하여 TCU(통합제어기) 시험을 실시하여 이상여부를 확인한다. +5) 상기의 점검부분에 이상이 있을경우 관련부품을 교체한다.', null, '3', '2025-10-12 01:21:37.578803+00', null, '로템40량(2018)-1단계', 'Rotem'), ('9f9f9ca7-d109-42da-b1ef-95ea75275803', '0500', '500', 'DCU#8 4위(L2) 통신고장', 'Tc2', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS간 RS485 통신고장이 검지되면 발생.', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐 상태 등의 변화가 없음.', '1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우', '해당차량의 DCU 및 CU/TU 의 전원이 정상상태이고, 통신라인 연결상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜저 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는데도 지속적으로 통순고장이 검지되면, DCU의 X2,X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('9faf7019-2a32-4b79-b6cb-0d374c5cff3a', '0707', '707', 'HVAC#1 - 냉난방장치2 증발기1 과부하', 'Tc1', 'C', 'HVAC-냉난방장치2 증발기1 과부하', 'C', 'HVAC', 'HVAC 냉방 작동 중 냉난방장치2 증발기 모터에 과부하 발생 +', 'UNIT2냉방기능불가', ' +1) 냉방 작동 중 UNIT2의 증발기 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CREF3과 연결된 THR7이 Trip 됨. +', 'UNIT2의 증발기모터의 과부하조건을 해소하여 정상 가능 상태로 만들고, THR7 및 마이콤 전원 리셋', '1) 냉난방 배전반의 점검커버를 열고, THR7의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR7의 전류 세팅값이 3A에 맞춰져 있는지 확인하여, 아닐 경우, (+) 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동시킨 후, THR7의 2차측 2, 4, 6 단자에서 각 단자 간 상간 전압이 AC 380V로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 증발기 단품 상태 에서 점검을 한다. +7) THR7의 2차측 2, 4, 6 단자에서 각 단자 간 권선저항이 모두 같은지 확인한다. (±10% 이하) (증발기 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT2의 증발기 모터의 결선을 해제한 후 4극 및 6극 모터의 권선저항을 확인 후, 문제가 있을 경우, 증발기 모터를 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR7 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9fb7c183-3cb1-4278-81dc-3da7fdb32352', '0515', '515', 'DCU#8 2위(L1) - 출입문 열림 시간 초과', 'Tc2', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 “Open time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 열림 동작시간이 6초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도한 후, ‘장애물로 인한 열림 실패' 고장과 함께 ‘Open time out' 고장이 함께 현시 +', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9fc64051-7261-4388-b580-7c066d5368d7', '0707', '707', 'HVAC#3-냉난방장치2 증발기1 과부하', 'M2', 'C', 'HVAC-냉난방장치2 증발기1 과부하', 'C', 'HVAC', 'HVAC 냉방작동 중 냉난방장치2 증발기 모터에 과부하 발생.', 'UNIT2 냉방 기능 불가', '1) 냉방작동 중 UNIT2의 증발기 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CREF3과 연결된 THR7이 Trip 됨.', 'UNIT2의 증발기 모터의 과부하 조건을 해소하여 정상 가능 상태로 만들고, THR7 및 마이콤 전원 리셋', '1) 냉난방배전반의 점검커버를 열고, THR7의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR7의 전류 세팅값이 3A에 맞춰져 있는지 확인하여, 아닐 경우, 십자 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동 시킨 후, THR7의 2차측 2,4,6 단자에서 각 단자간 상간 전압이 AC 380V으로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 증발기 단품 상태에서 점검을 한다. +7) THR7의 2차측 2,4,6 단자에서 각 단자간 권선저항이 모두 같은지 확인한다. (±10% 이하) (증발기 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT2의 증발기 모터의 결선을 해제한 후 4극 및 6극 모터의 권선저항을 확인 후, 문제가 있을 겨우, 증발기 모터를 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR7 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('9fcf7bba-96ca-4a1d-b843-63626def63fb', '0519', '519', 'DCU#7 1위(R1) - ZVR 신호 에러', 'M4', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 “ZVR signal error” 신호가 “1”이 되면 검지 +', '출입문이강제로 닫히게 되고, 열림은 불가능', ' +1) 차량 ZVR 신호가 없는 상태(차량 주행상태)에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함. +', '해당 출입문 ZVR 신호 수신', '1) 차량 이 주행중이라면, 차량 이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9fcffb25-fc96-456a-95e5-ea7d42c86a52', '0747', '747', 'HVAC#8 - 전자접촉기 차량히터2(CRRHT) 고장', 'Tc2', 'C', 'HVAC-전자접촉기 차량 히터2(CRRHT) 고장', 'C', 'HVAC', '객실 난방기 작동 중 CRRHT2 전자접촉기 고장 발생 +', '객실 전난방 시 1/3난방만 작동', '객실 전난방 작동 중 2.5초 이상 동안 CRRHT2 작동 feedback 신호가 수신되지 않는 경우 +', 'CRRHT2 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CRRHT2를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRRHT2와 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('9fe49f85-1252-49e9-9a3f-f728f2dd4bd6', '0143', '143', 'VVVF#2-주회로 접지검지(LGD)', 'M1', 'B', 'VVVF-주 회로 접지검지(LGD)', 'B', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT30의 Bit0 “LGD” 신호가 "1"이 되면 검지.', null, '가선전압이 15ms이내에 300V이상 감압 시 고장검지.', '제동 OFF.', '1) 상기고장이 간헐적으로 발생하는 경우 아래와 같이 조치한다. +2) 주 회로 차단기함 내부의 고압회로에 소손이 없는지 확인하고 소손품은 교체한다. +3) 주 회로 차단기함 내부에 설치된 가선전압 측정용 전압센서의 외관에 손상이 있는지 확인한다. +4) 전압센서의 고압 / 저압 단자대의 체결상태 확인. +5) 인버터 함 내부의 고압회로에 소손 또는 단락이 있는지 확인한다. +6) IGBT의 소손여부를 확인한다. +7) 추진제어장치 시험기를 이용하여 TCU(통합제어장치) 및 PWM보드의 이상 여부를 확인한다. +8) 상기의 점검부분에 이상이 있을 경우 관련부품을 교체한다.', null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('9ff76eb6-8d00-4028-a83f-e291467edde3', '0748', '748', 'HVAC#1-전자접촉기 차량히터1(CRRHT) 고장', 'Tc1', 'C', 'HVAC-전자접촉기 차량히터1(CRRHT) 고장', 'C', 'HVAC', '객실 난방기 작동 중 CRRHT1 전자접촉기 고장 발생.', '객실 전난방 시 2/3난방만 작동', '객실 전난방 작동 중 2.5초 이상동안 CRRHT1 작동 feedback 신호가 수신되지 않는 경우', 'CRRHT1 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CRRHT1을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRRHT1과 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('9ff7db28-9ee2-48be-b22e-9b0835436840', '0708', '708', 'HVAC#3-냉난방장치1 증발기1 과부하', 'M2', 'C', 'HVAC-냉난방장치1 증발기1 과부하', 'C', 'HVAC', 'HVAC 냉방작동 중 냉난방장치1 증발기 모터에 과부하 발생.', 'UNIT1 냉방 작동 불가', '1) 냉방작동 중 UNIT1의 증발기 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CREF1과 연결된 THR5가 Trip 됨.', 'UNIT1의 증발기 모터의 과부하 조건을 해소하여 정상 가능 상태로 만들고, THR5 및 마이콤 전원 리셋', '1) 냉난방배전반의 점검커버를 열고, THR5의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR5의 전류 세팅값이 3A에 맞춰져 있는지 확인하여, 아닐 경우, 십자 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동 시킨 후, THR5의 2차측 2,4,6 단자에서 각 단자간 상간 전압이 AC 380V으로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 증발기 단품 상태에서 점검을 한다. +7) THR5의 2차측 2,4,6 단자에서 각 단자간 권선저항이 모두 같은지 확인한다. (±10% 이하) (증발기 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT2의 증발기 모터의 결선을 해제한 후 4극 및 6극 모터의 권선저항을 확인 후, 문제가 있을 겨우, 증발기 모터를 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR5 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('9ff80a67-06e0-4216-b7f2-0eab3f679d80', '0744', '744', 'HVAC#1-전자접촉기 보조히터1(AHEK) 고장', 'Tc1', 'C', 'HVAC-전자접촉기 보조히터1(AHEK) 고장', 'C', 'HVAC', 'HVAC 보조난방기 작동 중 AHEK1 전자접촉기 고장 발생.', 'UNIT1 보조난방기 전난방 시 반난방만 작동', '보조난방기 작동 중 2.5초 이상동안 AHEK1 작동 feedback 신호가 수신되지 않는 경우', 'AHEK1 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) AHEK1을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, AHEK1과 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a03a543f-82d7-465f-85e6-1f3600ed2d19', '0138', '138', 'VVVF#3-입력과전류 검지(ISOC)', 'M2', 'C', 'VVVF-입력과전류 검지(ISOC)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT29의 Bit3 “ISOC” 신호가 "1"이 되면 검지.', null, '1) 입력전류 1800A 이상 검지 시 경고장 발생 +2) 1분 이내 3회 발생 시 중고장 발생.', '1) 경고장', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 추진제어장치에 입력되는 전류치 확인함. +3) 입력되는 전류치가 비정상적일 경우 추진제어장치 입력회로(HSCB, LB1,2, CHRe)를 점검한다.. +4) 추진제어장치 내의 전류센서와 추진제어장치 제어기 PUZ 보드에 연결되는 저전압 배선상태를 확인한다. +5) 추진제어장치 시험기를 이용하여 TCU(통합 제어장치)의 이상여부를 확인한다. +6) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a056e850-8139-4a1a-acb3-0c86fbc356bf', '1500', '1500', '출입문 회로차단기 차단(Car2)', 'M1', 'W', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a06102a2-44d4-49a6-8997-4bfe2f164381', '0520', '520', 'DCU#8 4위(L2)-이중계 절체 동작', 'Tc2', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 "Module switchover' 신호가 "1"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a07741ec-7810-4536-9d5e-16c486a25942', '0504', '504', 'DCU#4 1위(R1)-출입문 외부비상핸들 취급(EAD)', 'T1', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a08e4d56-7cbd-4704-88b2-0b2f016e0645', '0714', '714', 'HVAC#6 - 냉난방장치1 압력스위치2(DPS) 고압', 'M3', 'D', 'HVAC-냉난방장치1 압력스위치2(DPS) 고압', 'D', 'HVAC', '냉난방장치1 냉매 압력스위치2 고압 발생 +', 'UNIT1CYCLE2 냉방기능불가', 'UNIT1DSP2측 냉매압력이 3초 이상 28±1(kgf/cm2) 이상 되는 경우 +', '냉매압력이 정상수치 15±0.7(kgf/cm2) 이하로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CRCM2의 부하측 전류를 측정하여 응축기 팬의 동작여부를 확인한다. +2) 응축기 코일의 전면에 이물질로 인한 막힘이 있는지 확인한다. +3) 응축기 팬 상부 그릴에 외부 이물질로 인한 막힘이 있는지 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a09470fd-382f-411a-a2ac-083711503097', '0512', '512', 'DCU#7 3위(R2) - 파라미터 로딩 실패', 'M4', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 “Paraneter error” 신호가 “1”이 되면 검지 +', 'Parametererror 현시(출입문은 정상작동 가능)', 'DCU 자체 내의 EEPROM으로부터 parameter데이터 로딩 실패 +', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a0985a67-19d3-4834-a485-9a6c35602403', '0517', '517', 'DCU#3 4위(L2) - 출입문 장애물로 인한 열림 실패', 'M2', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Open failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘 상태로 대기', '도어열림 중 3회 장애물감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 열림 시, 장애물감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a09fcb95-f94a-4154-8320-7655eda942a2', '0705', '705', 'HVAC#7 - 냉난방장치2 증발기2 과부하', 'M4', 'C', 'HVAC-냉난방장치2 증발기2 과부하', 'C', 'HVAC', 'HVAC 냉방 작동 중 냉난방장치2 증발기 모터에 과부하 발생 +', 'UNIT2냉방기능불가', ' +1) 냉방 작동 중 UNIT2의 증발기 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CREF4와 연결된 THR8이 Trip 됨. +', 'UNIT2의 증발기모터의 과부하조건을 해소하여 정상 가능 상태로 만들고, THR8 및 마이콤 전원 리셋', '1) 냉난방 배전반의 점검커버를 열고, THR8의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR8의 전류 세팅값이 3A에 맞춰져 있는지 확인하여, 아닐 경우, (+) 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동시킨 후, THR8의 2차측 2, 4, 6 단자에서 각 단자 간 상간 전압이 AC 380V로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 증발기 단품 상태에서 점검을 한다. +7) THR8의 2차측 2, 4, 6 단자에서 각 단자 간 권선저항이 모두 같은지 확인한다. (±10% 이하) (증발기 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT2의 증발기 모터의 결선을 해제한 후 4극 및 6극 모터의 권선저항을 확인 후, 문제가 있을 경우, 증발기 모터를 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR8 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a0a50443-c892-46a7-9c85-6e3e45d08c12', '0518', '518', 'DCU#2 4위(L2) - 출입문 Enable 신호 에러', 'M1', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 “Enable signal error” 신호가 “1”이 되면 검지 +', 'DCU 출입문Enable신호에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드 시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을 때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드 시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입 상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호 장치로부터의 출입문 열림 명령 신호) 취급 시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함. +', '해당 출입문 enable 신호수신', '1) AUTO/MCS 모드 시에는 YARD 모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인 한다. (YARD/FMC 모드 시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a0a7c3a9-436a-4bec-ba8c-ce5ffd7de582', '0500', '500', 'DCU#4 6위(L3) 통신고장', 'T1', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS 간 RS485 통신고장이 검지되면 발생 +', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐상태 등의 변화가 없음.', ' +1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우 +', '해당 차량의 DCU 및 CU/TU의 전원이 정상상태이고, 통신 라인 연결 상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜져 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적 으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는 데도 지속적으로 통신고장이 검지되면, DCU의 X2, X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상 체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a0ae40c5-d9fd-4b7d-81d3-c82f28489cd4', '0056', '56', 'AUX FUSE DISCONNECTED(Car5)', 'T2', 'W', 'AUX FUSE DISCONNECTED(Car5)', 'W', '기타', '차량으로부터 AUX FUSE DISCONNECTED 신호 입력 시 +', 'SIV 고압 차단으로 AC전원 전체 “OFF”', '해당 퓨즈 소손 +', '해당 퓨즈 교체', null, '회로 도면 : REC20210DX0', '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a0b58fb4-3b5e-4656-b92d-e3824ac69292', '0512', '512', 'DCU#1 4위(L2) - 파라미터 로딩 실패', 'Tc1', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 “Paraneter error” 신호가 “1”이 되면 검지 +', 'Parametererror 현시(출입문은 정상작동 가능)', 'DCU 자체 내의 EEPROM으로부터 parameter데이터 로딩 실패 +', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a0b7ba7c-b545-4198-8848-a5b824a27927', '0728', '728', 'HVAC#7 - 냉난방장치2 토출 센서 고장', 'M4', 'C', 'HVAC-냉난방장치2 토출 센서 고장', 'C', 'HVAC', '냉난방장치2의 토출 센서 고장 발생 +', '냉난방장치2 토출 센서 고장현시', '온도센서 검지범위는 -45 ~ 85도(820 ~ 1,330Ω)인데, 2초 이상 검지범위를 벗어나는 경우 +', '온도센서 검지값이 2초 이상 허용온도 범위 내일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820 ~ 1,330Ω을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a0bdd69e-4c60-4d72-9892-94c0c49deaef', '0318', '318', 'ATC#8-', 'Tc2', '0', null, null, '0', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a0beabf7-78a1-4071-812a-90c4dc57c811', '0125', '125', 'VVVF-FC 충전불량검지(FCD) (Car2)', 'M1', 'C', 'VVVF-FC 충전불량검지(FCD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT33의 Bit6 “FCD” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 'FC 충전불량검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치 기동시 FC전압이 1000V 이하일 경우 검지됨.', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반배전반의 VVVFIC nfb 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 FC전압에 이상이 있는지 확인한다. +3) 추진제어장치 내부 고전압부에 소손흔적이 있는지 확인한다. +4) LB Box 내부의 충전저항기의 소손이 없는지 확인한다. +5) FC에 연결된 버스바의 체결상태가 양호한지 확인한고, 버스바를 분리하여 FC의 Capacitance를 측정하여 이상이 없는지 확인한다. +6) 전압센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +7) SEN 보드의 동작상태를 시험기를 통해 확인한다. +8) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +9) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.578803+00', null, '다대48량(2015)', 'Rotem'), ('a0befb97-c3b3-4984-8c3e-24c00c0cece4', '0162', '162', 'VVVF#2-PWM제어장치 이상검지(WDTD_P)', 'M1', 'C', 'VVVF-마이컴이상(PWM)(WDTD_P)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT32의 Bit3 “WDTD_P" 신호가 "1"이 되면 검지.', null, 'PWM보드 내 CPU고장에 의한 Watch Dog Timer 카운터 정지시 고장검지.', '동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) 판토 하강상태에서 인버터 재 기동 후 해당 고장 재발여부를 확인한다. +2) 추진제어장치 시험기를 이용하여 PWM 보드의 이상여부를 확인한다. +3) 상기 점검부에 이상이 있는 경우 PWM 보드를 교체한다.', null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a0c9e921-3d27-4454-9c00-2bd6bad18985', '0050', '50', '주공기압축기 바이패스 기동(Car1)', 'Tc1', 'W', '주공기압축기바이패스기동(TC1)', 'W', 'CMSB', '차량으로부터 BYPASS RUN FOR CMSB 신호 입력시', '주공기 압축기 정상 기동 됨(초기 기동시 돌입전류값 상승)', 'CMSB INVERTER 고장', 'CMSB INVERTER 점검 및 교체', null, ' +REC40400HN0', '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a0cde1a4-c437-4701-9d96-5bbfcd553e48', '0022', '22', '단부출입문 고장(Car3)', 'M2', 'C', '단부출입문 고장 (Car3)', 'C', '기타', '차량 이 단부 통로 문으로부터 END DOOR FAULT 신호를 검지 +', '출입문 정상동작 불가', ' +1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우 (인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +4) DCU 내부의 모터 / 인코더 회로 가 손상된 경우 +', '모터/인코더 및 DCU가 정상상태이고, 전기적 연결 상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있는지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. ※ 고장 조치 완료 후, 반드시 DCU의 reset 버튼을 누르거나 전원을 OFF/ON 하여 시스템을 재가동해야 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a0f08113-5601-4e18-bc23-bdd34983d986', '0745', '745', 'HVAC#7-전자접촉기 배기팬2(CRVF) 고장', 'M4', 'C', 'HVAC-전자접촉기 배기팬2(CRVF) 고장', 'C', 'HVAC', 'HVAC 환기 작동 중 CRVF2 전자접촉기 고장 발생.', '환기 시 차량 배기팬2 운전 불가능', '환기 작동 중 2.5초 이상동안 CRVF2 작동 feedback 신호가 수신되지 않는 경우', 'CRVF2 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CRVF2를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRVF2와 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a0f2dbc5-bb4c-421e-bbd8-e2a440f68302', '0500', '500', 'DCU#8 3위(R2) 통신고장', 'Tc2', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS 간 RS485 통신고장이 검지되면 발생 +', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐상태 등의 변화가 없음.', ' +1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우 +', '해당 차량의 DCU 및 CU/TU의 전원이 정상상태이고, 통신 라인 연결 상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜져 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적 으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는 데도 지속적으로 통신고장이 검지되면, DCU의 X2, X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상 체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a0f95acd-f6bc-4d6a-86f6-9416630dc8d2', '0752', '752', 'HVAC#6 - 배기댐퍼 닫힘고장', 'M3', 'C', 'HVAC-배기댐퍼 닫힘고장', 'C', 'HVAC', '차량 배기댐퍼가 닫혀있는 상태에서 배기댐퍼 닫힘 리미트 스위치가 작동되지 않음 +', '배기댐퍼 닫힘 고장 현시', '배기댐퍼를 닫힘으로 제어했으나 닫힘 리미트 스위치 입력이 없을 경우 +', '배기댐퍼 닫힘 상태에서 리미트 스위치 입력이 정상적으로 입력', '1) 배기댐퍼가 닫힌 상태에서 닫힘 리미트 스위치가 정상적으로 작동되었는지 확인한다. +2) 닫힘 리미트 스위치가 정상작동 되었음에도 문제가 발생될 경우, 스위치를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a0fe6aa1-0d2a-425a-9ecf-516e67474ee3', '0142', '142', 'VVVF#3-배터리 전원저하(P100LVD)', 'M2', 'C', 'VVVF-배터리 전원저하(P100LVD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT29의 Bit7 “P100LVD” 신호가 "1"이 되면 검지.', null, '100V 제어전원이 67V 이하일 때 고장검지.', '제어전원 70V 이상일 때 고장 소거됨.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 차량의 측전지 저압을 측정하여 측전지 전압기준치(DC 70V~110V) 이내인지 확인하고 이상이 있을 시 충전계통 회로를 점검한다. +3) 추진제어장치 함 내부 제어전원 단자대에서 100P ~100G간 전압이 67V 이상임을 확인한다. +4) 동력차 일반배전반의 VVVFIC NFB의 스위치 상태 및 열화상태 등을 확인한다 +5) 상기 점검부분에 이상이 없을 경우 PWS보드를 교체한다. +6) PWS보드 교체 후에도 동일고장 재발 시 추진제어장치 시험기를 이용하여 TCU(통합제어기)의 정상동작을 확인한다.', null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a10409f3-6a75-4147-902c-5d7311088631', '0725', '725', 'HVAC#4-냉방시험 불가능', 'T1', 'C', 'HVAC-냉방시험 불가능', 'C', 'HVAC', '운전실 TCMS에서 냉방시험 작동을 할 때, 냉방운전이 불가능한 경우 발생.', '냉방 시험 운전 불가능', '실내 또는 실외 온도가 10도 미만일 경우, (환절기 또는 겨울철에 냉방 가동시 시스템 보호를 위한 온도조건)', '실내 또는 실외 온도가 10도 이상일 때, 냉방시험 작동', '1) TCMS 화면에서 실내 또는 실외 온도가 10도 미만인지 확인한다. +2) 실내 및 실외 온도가 10도 이상인대도 냉방 가동이 되지 않을 시, TCMS-마이콤 간 통신불량이 있는지 확인하고 조치한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a10db04b-a026-4a04-b7d1-3d4860c50bc3', '0135', '135', 'MDS 서비스위치 아님(Car6)', 'M3', 'W', null, null, 'VVVF', null, null, null, null, null, null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a112a851-8877-4a17-b643-3c4824a4b78e', '0515', '515', 'DCU#4 2위(L1)-출입문 열림 시간 초과', 'T1', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 "Open time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 열림 동작시간이 6초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도 한 후, '장애물로 인한 열림실패' 고장과 함께 'Open time out' 고장이 함께 현시', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a131604b-16cc-479d-854d-585c7693a69e', '0505', '505', 'DCU#6 5위(R3) - 출입문 입력 고전압', 'M3', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 “1”이 되면 검지 +', '고전압 상태(그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상 +', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a14b556c-93f0-4e4a-81f7-167891edf5d3', '0509', '509', 'DCU#6 3위(R2) - 출입문 잠김 리미트 스위치 고장', 'M3', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 “DLS Failure” 신호가 “1”이 되면 검지 +', '출입문 잠김 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a14e056a-f86f-4c35-ad77-1c7fb0f20c56', '0715', '715', 'HVAC#7 - 냉난방장치1 압력스위치1(DPS) 저압', 'M4', 'D', 'HVAC-냉난방장치1 압력스위치1(DPS) 저압', 'D', 'HVAC', '냉난방장치1 냉매 압력스위치1 저압 발생 +', 'UNIT1CYCLE1 냉방기능불가', 'UNIT1DSP1측 냉매압력이 3초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우 +', '냉매압력이 정상수치 2±0.5(kgf/cm2) 이상으로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CREF2의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)를 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설 여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안 되는 것을 확인한 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a157c0be-b7c2-4e7a-a90a-d410d0f67451', '0175', '175', 'VVVF#7-HSCB 투입불량(HBNC)', 'M4', 'C', 'VVVF-HSCB 투입불량(HBNC)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT34의 Bit0 “HBNC” 신호가 "1"이 되면 검지.', null, 'HSCB 투입이 되지 않을 때 고장검지.', '동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) 판토하강상태에서 테스트모드로 전환하여 시퀀스를 투입하고 HSCB의 주접점 동작을 확인한다. +2) 주회로 차단기함 내에 HSCB의 보조접점의 동작상태를 확인한다. +3) 추진제어장치 계전기 유니트에 HBR 계전기 상태를 확인하여 계전기의 동작 여부를 확인한다. +4) 추진제어장치 시험기를 이용하여 제어기 시험을 실시하여 이상여부를 확인한다.', null, '3', '2025-10-12 01:21:37.578803+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a1644208-85f3-4264-88c2-9e08631e5309', '0513', '513', 'DCU#7 5위(R3) - 모듈 상태체크 에러', 'M4', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 “Module check error” 신호가 “1”이 되면 검지 +', 'Modulecheckerror현시(출입문은 정상작동가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태 체크 기능에 이상이 생긴 경우 고장 발생 +', 'DCU의 ‘A' 모듈과 ‘B' 모듈 간, 상태 체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a1731a2d-11b3-4959-9223-46f87fd7aaf1', '0517', '517', 'DCU#8 4위(L2) - 출입문 장애물로 인한 열림 실패', 'Tc2', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Open failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘 상태로 대기', '도어열림 중 3회 장애물감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 열림 시, 장애물감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a17a5f7c-8f6b-49fb-996f-9289dd9d2659', '0518', '518', 'DCU#3 2위(L1)-출입문 Enable 신호 에러', 'M2', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 "Enable signal error” 신호가 "1"이 되면 검지.', 'DCU 출입문 Enable 신호 에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) 취급시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함.', '해당출입문 enable 신호 수신', '1) AUTO/MCS 모드시에는 YARD모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인한다. (YARD/FMC 모드시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.392739+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a18220f3-7aaf-4e02-ab99-de454a87b6fb', '0803', '803', '영상저장장치(NVR) 통신고장(Car#1)', 'Tc1', 'C', '영상저장장치(NVR) 통신고장', 'C', 'AVC', '영상저장장치(NVR)와 TCMS 간 Ehternet(E-NET) 통신고장이 검지되면 발생 +', 'TCMS로부터 수신되는 정보에 따른 동작불능(화재/인터폰 동작 시 CCTV 자동절환동작)', 'E-NET 통신으로 SD 데이터 일정시간 미수신 +', 'E-NET 통신으로 SD 데이터 수신', 'TCMS와 영상저장장치(NVR) 간의 통신계통 점검 및 영상저장장치 리셋 관련도면 :', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a18cd84a-886c-4b39-8025-12adc17d649f', '1211', '1211', 'FDU#2-체크섬 고장', 'M1', 'C', 'FDU-체크섬 고장', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT5의 Bit7 "Checksum Fault” 신호가 "1"이 되면 검지.', 'Checksum Fault 현시 및 FDU의 정상 동작 불가능', '수신기 펌웨어의 오류로 인한 체크섬 이상(MCU 내부 플래쉬 메모리에 저장된 체크섬과 프로그램의 체크섬 계산값이 다를경우)', 'FDU가 부팅될때 MCU 내부 플래쉬 메모리에 저장된 체크섬과 프로그램의 체크섬 계산값이 같을 경우', '1) FDU의 전원을 리셋하여 소거여부 확인 +2) 문제가 지속될 경우, 수신기 교체', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a1971ea8-c8d2-43e9-ae56-c2fede1bb1d0', '0508', '508', 'DCU#3 3위(R2) - 출입문 모터/인코더 고장', 'M2', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 “Motor / Encoder failure” 신호가 “1”이 되면 +검지 +', '출입문 정상동작 불가', ' +1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우(인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터/인코더 회로 가 손상된 경우 +', '모터/인코더 및 DCU가 정상 상태이고, 전기적 연결 상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있는지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. ※ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. ? DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. ? DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) ? DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a19d03ad-51df-403f-a3de-61f5001146d3', '0508', '508', 'DCU#7 6위(L3) - 출입문 모터/인코더 고장', 'M4', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 “Motor / Encoder failure” 신호가 “1”이 되면 +검지 +', '출입문 정상동작 불가', ' +1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우(인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터/인코더 회로 가 손상된 경우 +', '모터/인코더 및 DCU가 정상 상태이고, 전기적 연결 상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있는지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. ※ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. ? DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. ? DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) ? DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a1ab670a-64a8-4fee-a24b-79eb7407babb', '0516', '516', 'DCU#8 2위(L1) - 출입문 장애물로 인한 닫힘 실패', 'Tc2', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Close failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림 상태로 대기', '도어 닫힘 중 3회 장애물감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a1ad7970-b7af-4cc9-b6d3-ca696d762a42', '0213', '213', 'BECU#5-AC 압력센서고장', 'T2', 'C', 'BECU-AC 압력센서 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit4 “AC 압력센서 고장” 신호가 "1"이 되면 검지.', '해당 차량 공기제동장치고장, AC압력센서 고장 검지 현시 및 해당 차량 제동제어 불가.', '해당 차량의 AC압력센서 고장.', '해당 차량의 AC압력센서가 정상일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a1c7411b-14bb-47ea-a929-8f2e2e8d5510', '0504', '504', 'DCU#5 3위(R2) - 출입문 외부 비상핸들 취급(EAD)', 'T2', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a1d46746-f57e-4b61-a8d3-6953462f9201', '0505', '505', 'DCU#1 1위(R1)-출입문 입력 고전압', 'Tc1', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 "1"이 되면 검지.', '고전압 상태. (그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a1dcabe9-d0de-4138-b61c-090e01b5c2bd', '0516', '516', 'DCU#7 4위(L2) - 출입문 장애물로 인한 닫힘 실패', 'M4', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Close failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림 상태로 대기', '도어 닫힘 중 3회 장애물감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a1e4fdb7-3b49-418f-bd12-1d1ef28eef66', '1410', '1410', 'BMS#1 - 충전저온(CUT, - 10도 이하)', 'Tc1', 'D', 'BMS-충전저온(CUT)', 'D', 'BMS', '해당 차량의 배터리 온도가 -25도 이하가 되면 검지 +', '차량 배터리충전저온검지 후, -35도 이하이면 충전접촉기(CK)가 차단된다.', '배터리충전저온(-20도 이상) +', '배터리충전저온정상범위로 회복(-20도 이상)', '1) 배터리 NFB 상태 확인 +2) 이상이 없으면 차량 전체를 리셋한다. +3) 차량 리셋 후에도 동일고장이면 사령실과 연락하여 조치를 취한다. (배터리를 상온조건으로 만든다.)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a2070a07-7525-48ca-95a4-31be84c7288a', '0509', '509', 'DCU#8 2위(L1) - 출입문 잠김 리미트 스위치 고장', 'Tc2', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 “DLS Failure” 신호가 “1”이 되면 검지 +', '출입문 잠김 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a209b404-7433-4904-9713-26538b1b3473', '1502', '1502', '기타장치용 DC 회로차단기 차단(Car7)', 'M4', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a209edd3-c6f6-4261-b066-3aa022176ed3', '0811', '811', '실내카메라#1(SCAM) 고장(Car#1)', 'Tc1', 'C', '통합방송표시기-실내카메라#1(SCAM) 고장', 'C', 'TCMS', '통합방송표시기의 RS485 데이터 중 통합방송표시기-TCMS SD TEXT9의 Bit3 “SCAM#1 고장” 신호가 "1"이 되면 검지.', '고장장치 통신 불량으로 CCTV 모니터 현시기능 불능 및 DVR 저장기능 불능', '마스터 통합방송제어기에 주기적(2초) TCP 응답이 없을 경우 통신 불량으로 판단', '마스터 통합방송제어기에 TCP 응답 재개', '관련 CB(방송/표시기/CCTV 전원공급장치1, CBPAU# +1) 리셋하고 통신라인 및 상태 점검. +관련도면 RES41001HN0, REC70720HN0', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a2367081-3445-412e-99a6-630ff69cdb05', '0507', '507', 'DCU#5 4위(L2)-초기화 실패', 'T2', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 "Calibration failure” 신호가 "1"이 되면 검지.', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터고장, 장애물 감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우', '초기화 실패를 야기한 고장 코드를 확인하여 조치 후, 재 닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a23ae7e9-2364-479e-a114-ff1e24e95843', '0501', '501', 'DCU#2 1위(R1)-출입문 차단', 'M1', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a2505f51-11c3-4d7a-b83f-78d5447b3348', '0071', '71', '주차제동 동작', 'Tc2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a25bf5b8-cb05-47a0-aed3-c00feff20087', '0516', '516', 'DCU#1 2위(L1) - 출입문 장애물로 인한 닫힘 실패', 'Tc1', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Close failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림 상태로 대기', '도어 닫힘 중 3회 장애물감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a265494e-25f9-4ce4-8f6b-8a306283d581', '0833', '833', '출력증폭기#1(AMP) 고장(Car#3)', 'M2', 'C', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a26764a0-244b-4aa5-adc8-62b816ab1aa3', '0210', '210', 'BECU#1 - 3축 속도신호의 비정상', 'Tc1', 'C', 'BECU-3축속도신호의 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit1 “3축속도신호의 비정상” 신호가 “1”이 되면 검지 +', '해당 차량 3축속도신호의 비정상 검지 현시 및 해당 차량 활주제어불가', '해당 차량의 3축속도센서 고장 발생 +', '해당 차량의 3축속도센서가 정상적일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a2678f26-e73b-418c-9a9f-62c47346b52d', '0429', '429', 'SIV#8 - 인버터2 입력 저전압(INV2LV)', 'Tc2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a272ce1e-2bdc-41ed-a636-0c98710535ea', '0753', '753', 'HVAC#6 - 배기댐퍼 열림고장', 'M3', 'C', 'HVAC-배기댐퍼 열림고장', 'C', 'HVAC', '환기 시, 차량 배기댐퍼가 열려 있는 상태에서 배기댐퍼 열림 리미트 스위치가 작동되지 않음 +', '배기댐퍼 열림 고장 현시', '배기댐퍼를 열림으로 제어했으나 열림 리미트 스위치 입력이 없을 경우 +', '배기댐퍼 열림상태에서 리미트 스위치 입력이 정상적으로 입력', '1) 배기댐퍼가 열린 상태에서 열림 리미트 스위치가 정상적으로 작동되었는지 확인한다. +2) 열림 리미트 스위치가 정상작동 되었음에도 문제가 발생될 경우, 스위치를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a27fc896-2467-45a8-b643-06da26399769', '0509', '509', 'DCU#2 5위(R3) - 출입문 잠김 리미트 스위치 고장', 'M1', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 “DLS Failure” 신호가 “1”이 되면 검지 +', '출입문 잠김 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a295e20f-c056-42ac-bcf7-8b907d866cf6', '0518', '518', 'DCU#4 1위(R1)-출입문 Enable 신호 에러', 'T1', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 "Enable signal error” 신호가 "1"이 되면 검지.', 'DCU 출입문 Enable 신호 에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) 취급시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함.', '해당출입문 enable 신호 수신', '1) AUTO/MCS 모드시에는 YARD모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인한다. (YARD/FMC 모드시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.392739+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a2a8d26c-a129-4c54-9348-ee78c3c8eb9b', '0510', '510', 'DCU#2 3위(R2)-출입문 닫힘 리미트 스위치1 고장', 'M1', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 "DCS1 Failure(Leftt)” 신호가 "1"이 되면 검지.', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a2b903a4-923f-42c6-b141-ff382b8ad6b9', '0104', '104', 'VVVF#7-휠 슬라이드 검지(WSD)', 'M4', 'W', null, null, 'VVVF', null, null, null, null, null, null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a2ba496f-0aaa-4422-ae2d-dce8a59a9bef', '0800', '800', '통합방송표시기#1 통신고장', 'Tc1', 'B', '통합방송표시기 통신고장', 'B', 'AVC', '통합방송표시기와 TCMS 간 Ehternet(E-NET) 통신고장이 검지되면 발생 +', 'TCMS로부터 수신되는 정보에 따른 동작불능(자동방송, 자동객실안내표시기동작)', 'E-NET 통신으로 SD 데이터 일정시간 미수신 +', 'E-NET 통신으로 SD 데이터 수신', 'TCMS와 통합방송표시기 간의 통신계통 점검 및 통합방송표시기 CB(오디오/비디오 제어기, CBAVCON) 리셋 관련도면 :', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a2c44e22-4714-487a-b548-ab053f527361', '0218', '218', 'BECU#3 - 인통선로직 비정상', 'M2', 'C', 'BECU-인통선로 직 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit1 “인통선로 직 비정상” 신호가 “1”이 되면 +검지 +', '해당 차량 인통선로 직비정상 검지 현시 및 해당 차량 정상적인제동제어불가 (상용제동 지령에 따른 제어)', '해당 차량의 추진선택(P), 제동선택(B) 신호가 동시에 ON됨. +', '해당 차량의 추진선택(P), 제동선택(B) 신호가 정상작동(상보적으로 작동)될 경우 소거', 'BECU를 리셋(BECU CB OFF/ON) 한 뒤, 마스콘을 제동 7단으로 5초간 취급하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a2d63c73-fa24-4998-a70f-fc5d60e355be', '0059', '59', 'MAIN FUSE#1 DISCONNECTED(Car2)', 'M1', 'W', 'MAIN FUSE#1 DISCONNECTED(Car2)', 'W', '기타', '차량으로부터 AUX FUSE DISCONNECTED 신호 입력 시 +', 'VVVF 고압 차단으로 추진 불능', '해당 퓨즈 소손 +', '해당 퓨즈 교체 +회로 도면 : REC20210DX0', null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a2ec9ed8-4680-41aa-8ef9-8ee73f6c25fe', '0023', '23', '단부출입문 고장(Car4)', 'T1', 'C', '단부출입문고장(CAR4)', 'C', 'DCU', '차량이 단부 통로문으로부터 END DOOR FAULT 신호를 검지.', '출입문 정상동작 불가', '1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우 (인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +4) DCU 내부의 모터 / 인코더 회로가 손상된 경우', '모터/인코더 및 DCU가 정상상태이고, 전기적 연결상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있느지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. +★ 고장 조치 완료 후, 반드시 DCU의 reset 버튼을 누르거나 전원을 OFF/ON 하여 시스템을 재가동 해야 한다.', null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a2f481ca-3c67-4a77-9058-a4cbd5b58f25', '0521', '521', 'DCU#1 1위(R1)-모듈 상태 이상', 'Tc1', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 "01"또는 "00"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a2f9b018-a080-44d9-9816-24b727190184', '0500', '500', 'DCU#4 6위(L3) 통신고장', 'T1', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS간 RS485 통신고장이 검지되면 발생.', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐 상태 등의 변화가 없음.', '1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우', '해당차량의 DCU 및 CU/TU 의 전원이 정상상태이고, 통신라인 연결상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜저 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는데도 지속적으로 통순고장이 검지되면, DCU의 X2,X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a2fdedd3-8623-4ba9-a139-043ccd7d4a12', '0241', '241', 'BECU#4 - 1축 스키드신호', 'T1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a2ff3b92-12d1-4bc3-a5d4-f35fad37d75b', '0503', '503', 'DCU#8 5위(R3)-출입문 내부비상핸들 취급(EED)', 'Tc2', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a3012bfe-6287-452e-80b8-67ff1350ea4e', '0179', '179', 'VVVF#2 - LB2 투입불량(LB2NC)', 'M1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a3121d8a-c570-453d-a9df-4ac878b54f5d', '0313', '313', 'ATC#1 - 정밀정차 제어중', 'Tc1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a31680a8-9d7b-4253-b403-f37672104e53', '0810', '810', '실내카메라#2(SCAM) 고장(Car#1)', 'Tc1', 'C', '영상저장장치-실내카메라#2(SCAM) 고장', 'C', 'AVC', '영상기록장치(NVR)의 E-NET 데이터 중 통합방송표시기-TCMS SD TEXT10의 Bit1 “SCAM#2 고장” 신호가 “1”이 되면 검지 +', '고장장치 통신불량으로 CCTV 모니터 현시기능 불능 및 DVR 저장기능 불능', '마스터통합방송제어기에 주기적(2초) TCP 응답이 없을 경우 통신불량으로 판단 +', '마스터통합방송제어기에 TCP 응답재개', '관련 CB(방송/표시기/CCTV 전원공급장치2, CBPAU# +2) 리셋하고 통신라인 및 상태 점검 관련도면 : RES41001DX0, REC70720DX0', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a3193fe6-0354-4988-a436-a957271925f0', '0124', '124', 'VVVF-전진/후진 이상 검지(FRF) (Car2)', 'M1', 'C', 'VVVF-전진/후진 이상 검지(FRF)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT33의 Bit5 “FRF” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 '전진/후진 신호이상검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치 입력되는 역행/제동신호가 동시에 입력될 경우 검지됨.', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반배전반의 VVVFIC nfb 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 전진/후진신호에 이상이 있는지 확인한다.. +3) 차량의 제어회로 중 전진/후진 신호가 추진제어장치로 연결되는 경로에 이상이 없는지 확인한다. +4) DIN 보드의 동작상태를 시험기를 통해 확인한다. +5) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.578803+00', null, '다대48량(2015)', 'Rotem'), ('a31e081d-8ed8-44b1-b818-4e8db5dd0e74', '0515', '515', 'DCU#6 3위(R2)-출입문 열림 시간 초과', 'M3', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 "Open time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 열림 동작시간이 6초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도 한 후, '장애물로 인한 열림실패' 고장과 함께 'Open time out' 고장이 함께 현시', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a324c0bb-bf2b-4feb-9a66-819289a91118', '0227', '227', '제동관련 회로차단기 차단(Car2)', 'M1', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a33154c5-740a-493b-9484-c6fd58692901', '0231', '231', 'BC 코크(차상) 차단(Car5)', 'T2', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a34aed3c-02ab-40ea-8533-24be4d79311e', '0513', '513', 'DCU#4 6위(L3)-모듈 상태체크 에러', 'T1', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 "Module check error” 신호가 "1"이 되면 검지.', 'Module check error 현시 (출입문은 정상작동 가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태체크 기능에 이상이 생긴 경우 고장 발생.', 'DCU의 'A'모듈과 'B'모듈 간, 상태체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a358048b-140c-42d2-b92f-8c4ea3c9e0f9', '0741', '741', 'HVAC#2 - 전자접촉기 보조히터4(AHEK) 고장', 'M1', 'C', 'HVAC-전자접촉기 보조히터4(AHEK) 고장', 'C', 'HVAC', 'HVAC 보조난방기 작동 중 AHEK4 전자접촉기 고장 발생 +', 'UNIT2 보조난방기 전난방 시 반난방만 작동', '보조난방기 작동 중 2.5초 이상 동안 AHEK4 작동 feedback 신호가 수신되지 않는 경우 +', 'AHEK4 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) AHEK4를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, AHEK4와 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a35c56f0-7b2e-4820-aa77-8c2c15ca205b', '0735', '735', 'HVAC#1-전자접촉기 압축기(CRCM)2 고장', 'Tc1', 'C', 'HVAC-전자접촉기 압축기(CRCM)2 고장', 'C', 'HVAC', 'HVAC 냉방작동 중 CRCM2 전자접촉기 고장 발생.', '냉방 기능 저하(전냉방시 반냉방으로 작동)', '냉방작동 중 2.5초 이상동안 CRCM2 작동 feedback 신호가 수신되지 않는 경우', 'CRCM2 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CRCM2를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRCM2와 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a38723a4-2294-41b0-b52e-9584b5ea8e25', '0110', '110', 'VVVF-아날로그 전원이상검지(APSF) (Car2)', 'M1', 'C', 'VVVF-아날로그 전원이상검지(APSF)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT31의 Bit5 “APSF” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 '아날로그 전원이상검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치 제어기에 PWR 보드에서 출력하는 아날로그 전원에 이상이 발생할 경우.', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반배전반의 VVVFIC nfb 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) PWR 보드의 LED 상태를 확인한다. LED가 소등되어 있거나 특정LED의 상태가 이상할 경우 PWR 보드를 교환한다. +3) PWR-SEN 보드로 연결되는 배선에 이상이 없는지 확인한다. +4) SEN 보드의 동작상태를 시험기를 통해 확인한다. +5) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.578803+00', null, '다대48량(2015)', 'Rotem'), ('a390eb36-8db0-44fa-ac08-615d411f7a19', '0821', '821', '실내카메라#1(SCAM) 고장(Car#2)', 'M1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a3a18e32-2a93-4202-a47b-de1cd831bea4', '0500', '500', 'DCU#7 6위(L3) 통신고장', 'M4', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS 간 RS485 통신고장이 검지되면 발생 +', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐상태 등의 변화가 없음.', ' +1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우 +', '해당 차량의 DCU 및 CU/TU의 전원이 정상상태이고, 통신 라인 연결 상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜져 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적 으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는 데도 지속적으로 통신고장이 검지되면, DCU의 X2, X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상 체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a3a68b03-e9f6-4e66-82ac-f8c76cb2d2b2', '0506', '506', 'DCU#1 3위(R2) - 출입문 입력 저전압', 'Tc1', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 “1”이 되면 검지 +', '저전압상태(출입문 동작이 심하게 느려지거나 작동조차 안 될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하 +', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a3b20564-5677-47f9-a605-517c188708fb', '0512', '512', 'DCU#1 1위(R1) - 파라미터 로딩 실패', 'Tc1', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 “Paraneter error” 신호가 “1”이 되면 검지 +', 'Parametererror 현시(출입문은 정상작동 가능)', 'DCU 자체 내의 EEPROM으로부터 parameter데이터 로딩 실패 +', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a3bc932a-a003-445c-b5cf-64cdf0fbff8b', '0153', '153', 'VVVF#2 - FC 용량저하(FCLCD)', 'M1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a3bfb529-fb6b-45ee-adc1-bb93f5257aeb', '0518', '518', 'DCU#3 6위(L3)-출입문 Enable 신호 에러', 'M2', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 "Enable signal error” 신호가 "1"이 되면 검지.', 'DCU 출입문 Enable 신호 에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) 취급시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함.', '해당출입문 enable 신호 수신', '1) AUTO/MCS 모드시에는 YARD모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인한다. (YARD/FMC 모드시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.392739+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a3c667ae-a0c8-4e33-aae2-347380c4837a', '0509', '509', 'DCU#3 6위(L3)-출입문 잠김 리미트 스위치 고장', 'M2', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 "DLS Failure” 신호가 "1"이 되면 검지.', '출입문 잠김 상태 확인 불가', '1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a3d254ce-ecdc-4397-aa4e-c76298e9fdd9', '0516', '516', 'DCU#4 3위(R2)-출입문 장애물로 인한 닫힘 실패', 'T1', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Close failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림상태로 대기', '도어 닫힘 중 3회 장애물 감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a3d5e041-cca6-4c0a-9963-812720026a8e', '0214', '214', 'BECU#4 - BC 압력센서 고장', 'T1', 'C', 'BECU-BC 압력센서 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit5 “BC 압력센서 고장” 신호가 “1”이 되면 검지 +', '해당 차량 BC 압력센서 고장검지 현시 및 해당 차량 제동력부족, 제동불완해 검지 불가', '해당 차량의 BC 압력센서 고장 +', '해당 차량의 BC 압력센서가 정상일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a3f4d223-64ab-4b8b-a6c3-158548733f88', '0511', '511', 'DCU#3 5위(R3) - 출입문 닫힘 리미트 스위치2 고장', 'M2', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 “DCS2 Failure(Right)” 신호가 “1”이 되면 검지 +', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a426b63c-7f25-4854-a0c9-1ca3e63afd74', '0740', '740', 'HVAC#1-전자접촉기 증발기1(CREF) 고장', 'Tc1', 'C', 'HVAC-전자접촉기 증발기1(CREF) 고장', 'C', 'HVAC', 'HVAC 냉방작동 중 CREF1 전자접촉기 고장 발생.', 'UNIT1 냉방 작동 불가', '냉방작동 중 2.5초 이상동안 CREF1 작동 feedback 신호가 수신되지 않는 경우', 'CREF1 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CREF1을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CREF1과 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a4344eb8-eb03-45d0-a251-1c26105fd037', '0502', '502', 'DCU#6 3위(R2)-출입문 장애물검지', 'M3', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a440f912-5ffc-4efa-ae95-228aa8bd475d', '0720', '720', 'HVAC#2 - 실내온도 센서1 고장', 'M1', 'C', 'HVAC-실내온도 센서1 고장', 'C', 'HVAC', '객실 실내온도 센서1 고장 발생 +', '실내온도센서1 고장 현시', '온도센서 검지범위는 -45 ~ 85도(820 ~ 1,330Ω)인데, 2초 이상 검지범위를 벗어나는 경우 +', '온도센서 검지값이 2초 이상 허용온도 범위 내일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820 ~ 1,330Ω을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a445ce4c-99c6-4ae8-87c9-0d07b5c9665d', '0226', '226', 'BECU#2 - 제동불완해검지(NRBD)', 'M1', 'B', 'BECU-제동불완해검지(NRBD)', 'B', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT8의 Bit2 “NRBD” 신호가 “1”이 되면 검지 +', '해당 차량 제동불완해 검지 현시 및 완해 취급하였음에도 불구하고 해당 차량 제동압력 (BCP)이 완해되지 않음.', '제동완해상태(정차제동포함)에서 해당 차량의 제동압력이 완전히 배기되지 않음. +', '제동완해상태(정차제동포함)에서 해당 차량의 제동압력이 완전히 배기됨.', '정차하여 강제완해 스위치를 취급하여 소거 여부 확인, 제동 완해상태 확인 후 주의 운전할 것, 2 ~ 3회 시도에도 완해불능 시 관제보고하고 지시에 따를 것', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a44e78c4-2104-4ab0-a325-aba0e2dd7a41', '0502', '502', 'DCU#8 3위(R2)-출입문 장애물검지', 'Tc2', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a4553809-75ab-4466-9c8c-afda00e84840', '0520', '520', 'DCU#3 1위(R1) - 이중계 절체 동작', 'M2', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 “Module switchover” 신호가 “1”이 되면 검지 +', '이중계 절체 동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러) 이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A'모듈 및 ‘B'모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a45a63e0-e942-4013-adc6-0dd0e8e394c3', '0744', '744', 'HVAC#8 - 전자접촉기 보조히터1(AHEK) 고장', 'Tc2', 'C', 'HVAC-전자접촉기 보조히터1(AHEK) 고장', 'C', 'HVAC', 'HVAC 보조난방기 작동 중 AHEK1 전자접촉기 고장 발생 +', 'UNIT1보조난방기전난방시반난방만 작동', '보조난방기 작동 중 2.5초 이상 동안 AHEK1 작동 feedback 신호가 수신되지 않는 경우 +', 'AHEK1 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) AHEK1을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, AHEK1과 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a47c6a24-1d39-4dd4-8767-6bd3e995b4d6', '0521', '521', 'DCU#2 5위(R3) - 모듈 상태 이상', 'M1', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 “01” 또는 “00”이 되면 +검지 +', '이중계절체동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러)이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a47ffe26-11cd-482f-932b-40f84d6154d2', '0105', '105', 'VVVF#3 - 상전류 불평형 검지(PUD)', 'M2', 'C', 'VVVF-상전류 불평형 검지(PUD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT29의 Bit0 “PUD” 신호가 “1”이 되면 검지 +', '1) TCMS 화면 하단 또는 고장화면에 ‘상전류 불평형 검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생함. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉은색으로 표기되며, HSCB, LB1, 2 개방되어 동력 손실 발생함.', '추진제어장치에서 견인전동기로 출력되는 U, V, W 상 전류의 합이 300A 이상일 경우 검지됨. +', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반 배전반의 VVVFIC NFB 재투입 또는 차량 배터리 전원 재투입', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 견인전동기로 출력되는 3상의 전류치 확인함. +3) 특정상의 전류치가 비정상적일 경우 특정상에 해당되는 IPM, 전류센서, 모터결선을 확인한다. +4) 전류센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작 상태를 시험기를 통해 확인한다. +6) 견인전동기 각상의 절연상태 및 각상과 접지 간의 절연상태를 확인한다. +7) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a488051d-f841-4635-8f76-ea862b940ddf', '0501', '501', 'DCU#4 2위(L1)-출입문 차단', 'T1', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a48de3d2-4add-46ad-b04b-9d04c6c60eb5', '0743', '743', 'HVAC#8-전자접촉기 보조히터2(AHEK) 고장', 'Tc2', 'C', 'HVAC-전자접촉기 보조히터2(AHEK) 고장', 'C', 'HVAC', 'HVAC 보조난방기 작동 중 AHEK2 전자접촉기 고장 발생.', 'UNIT1 보조난방기 전난방 시 반난방만 작동', '보조난방기 작동 중 2.5초 이상동안 AHEK2 작동 feedback 신호가 수신되지 않는 경우', 'AHEK2 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) AHEK2를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, AHEK2와 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a4a00321-60d1-428b-9223-d38bd6b345fe', '0737', '737', 'HVAC#5 - 전자접촉기 증발기4(CREF) 고장', 'T2', 'C', 'HVAC-전자접촉기 증발기4(CREF) 고장', 'C', 'HVAC', 'HVAC 냉방 작동 중 CREF4 전자접촉기 고장 발생 +', 'UNIT2 냉방 작동 불가', '냉방 작동 중 2.5초 이상 동안 CREF4 작동 feedback 신호가 수신되지 않는 경우 +', 'CREF4 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CREF4를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CREF4와 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a4b6a46b-2905-4151-b29e-105184127e33', '0831', '831', '실내카메라#1(SCAM) 고장(Car#3)', 'M2', 'C', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a4bf8982-66af-424a-aac0-cd97382e2cf6', '0703', '703', 'HVAC#2 - 냉난방장치1 압축기2 과부하', 'M1', 'C', 'HVAC-냉난방장치1 압축기2 과부하', 'C', 'HVAC', 'HVAC 냉방 작동 중 냉난방장치1 압축기2 또는 응축기2 모터에 과부하 발생 +', '냉방 기능 저하(전냉방 시 반냉방으로 작동)', ' +1) 냉방 작동 중 UNIT1의 압축기2 또는 응축기2 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRCM2와 연결된 THR2가 Trip 됨. +', 'UNIT1의 압축기2 또는 응축기2 모터의 과부하조건을 해소하여 정상 가능 상태로 만들고, THR2 및 마이콤 전원 리셋', '1) 냉난방 배전반의 점검커버를 열고, THR2의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR2의 전류 세팅값이 11.5A에 맞춰져 있는지 확인하여, 아닐 경우, (+) 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동시킨 후, THR2의 2차측 2, 4, 6 단자에서 각 단자 간 상간 전압이 AC 380V로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 압축기 및 응축기 단품 상태에서 점검을 한다. +7) THR2의 2차측 2, 4, 6 단자에서 각 단자 간 권선저항이 모두 같은지 확인한다. (±10% 이하) (압축기2 및 응축기2 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT1의 압축기1 또는 응축기1 모터의 결선을 해제한 후 각 부품의 권선저항을 확인 후, 문제가 있는 부품을 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR2 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a4c35766-fe6f-4120-bd19-c3d937075305', '0511', '511', 'DCU#2 2위(L1) - 출입문 닫힘 리미트 스위치2 고장', 'M1', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 “DCS2 Failure(Right)” 신호가 “1”이 되면 검지 +', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a4d6a767-eb64-449d-be64-861407b48ab9', '0515', '515', 'DCU#2 6위(L3)-출입문 열림 시간 초과', 'M1', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 "Open time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 열림 동작시간이 6초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도 한 후, '장애물로 인한 열림실패' 고장과 함께 'Open time out' 고장이 함께 현시', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a4da5bf9-b3a6-4974-bbe2-2a52be33951b', '0741', '741', 'HVAC#1-전자접촉기 보조히터4(AHEK) 고장', 'Tc1', 'C', 'HVAC-전자접촉기 보조히터4(AHEK) 고장', 'C', 'HVAC', 'HVAC 보조난방기 작동 중 AHEK4 전자접촉기 고장 발생.', 'UNIT2 보조난방기 전난방 시 반난방만 작동', '보조난방기 작동 중 2.5초 이상동안 AHEK4 작동 feedback 신호가 수신되지 않는 경우', 'AHEK4 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) AHEK4를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, AHEK4와 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a4e675ed-3983-4889-8bd7-4efb700b3b55', '0507', '507', 'DCU#2 6위(L3)-초기화 실패', 'M1', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 "Calibration failure” 신호가 "1"이 되면 검지.', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터고장, 장애물 감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우', '초기화 실패를 야기한 고장 코드를 확인하여 조치 후, 재 닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a4f72f70-b3af-4914-ae3e-819e12f75d8b', '0512', '512', 'DCU#1 2위(L1) - 파라미터 로딩 실패', 'Tc1', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 “Paraneter error” 신호가 “1”이 되면 검지 +', 'Parametererror 현시(출입문은 정상작동 가능)', 'DCU 자체 내의 EEPROM으로부터 parameter데이터 로딩 실패 +', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a4fcbd2e-1d72-401f-b522-bd415070fe5c', '0232', '232', 'BC 코크(차하#2) 차단(Car5)', 'T2', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a4ff7c62-383d-4269-be2e-135ba64472b5', '0408', '408', 'SIV#8 - 인버터1 입력과전압(INV1OV)', 'Tc2', 'C', 'SIV-인버터1 입력 과전압(INV1OV)', 'C', 'SIV', '보조전원장치(SIV)의 RS485 데이터 중 SIV-TCMS SD TEXT4의 Bit6 “INV1OV” 신호가 “1”이 되면 검지 +', '1) TCMS 화면하단 또는 고장화면에 ‘인버터2 입력 과전압(INV1OV)' 표시됨. +2) 보조전원장치(SIV)는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 보조전원장치(SIV) 중고장이 발생함. +5) 중고장이 발생되면 TCMS 일반화면에 보조전원장치(SIV) 상태 붉은색으로 표기되며, 연장급전 됨.', '보조전원장치(SIV) 내부 인버터2의 FC 전압이 1,200V 이상일 경우 검지됨. +', '1) 경고장이 발생할 경우 보조전원장치(SIV) 자동 재기동에 의해 재기동 됨. +2) 중고장이 발생했을 경우 조치 완료 후 보조전원장치(SIV) 리셋으로 고장 소거됨.', '1) 상기 고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 보조전원장치(SIV) 고장기록을 수집하여 FC전압에 이상이 있는지 확인한다. +3) 보조전원장치(SIV) 내부 고전압부에 소손흔적이 있는지 확인한다. +4) FC에 연결된 부스바의 체결상태가 양호한지 확인한고, 부스바를 분리하여 FC의 Capacitance를 측정하여 이상이 없는지 확인한다. +5) 전압센서와 보조전원장치(SIV) 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +6) SEN 보드의 동작 상태를 시험기를 통해 확인한다. +7) 출력단 각상의 절연상태 및 각상과 접지 간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a50ad436-85ca-4ef9-87f2-d93b11484f55', '0739', '739', 'HVAC#1-전자접촉기 증발기2(CREF) 고장', 'Tc1', 'C', 'HVAC-전자접촉기 증발기2(CREF) 고장', 'C', 'HVAC', 'HVAC 냉방작동 중 CREF2 전자접촉기 고장 발생.', 'UNIT1 냉방 작동 불가', '냉방작동 중 2.5초 이상동안 CREF2 작동 feedback 신호가 수신되지 않는 경우', 'CREF2 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CREF2를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CREF2와 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a51a6a75-bcaa-4601-b1cc-8f3dfc7d81b4', '0510', '510', 'DCU#3 5위(R3)-출입문 닫힘 리미트 스위치1 고장', 'M2', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 "DCS1 Failure(Leftt)” 신호가 "1"이 되면 검지.', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a51c3cf2-b3d1-4aac-bc94-dc3ccf557052', '0503', '503', 'DCU#3 4위(L2)-출입문 내부비상핸들 취급(EED)', 'M2', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a52429ac-4b14-4106-9052-8a73a109b759', '1201', '1201', 'FDU#7 - 감지기1 화재감지', 'M4', 'W', 'FDU-감지기1 화재감지 (Car1~8)', 'W', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 “Detector1 State” 신호가 “11”이 되면 검지 +', '화재상태현시(자동소거 안 됨.)', '하기 2가지 조건을 모두 만족하여야 화재신호가 출력 됨. (연동모드 동작) +1) 이웃한(앞 혹은 뒤에 위치한) 감지기 중 하나의 감지기라도 주의 혹은 화재상태에 있어야 함. +2) Detector1(해당 감지기)에서 측정된 연기농도가 15% 이상이거나 온도가 65℃ 이상인 경우 +', '1) FDU의 복귀버튼 조작 시 +2) FDU 전원 리셋 시', '1) 해당 감지기 위치의 화재 발생 여부 확인 +2) 화재 오감지일 경우 FDU의 복귀버튼 취급 +3) 오감지일 경우 감지기의 청소주기 확인(내부 먼지 제거)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a530cfd8-82de-4d53-b35a-617fb19a3279', '0508', '508', 'DCU#7 1위(R1) - 출입문 모터/인코더 고장', 'M4', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 “Motor / Encoder failure” 신호가 “1”이 되면 +검지 +', '출입문 정상동작 불가', ' +1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우(인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터/인코더 회로 가 손상된 경우 +', '모터/인코더 및 DCU가 정상 상태이고, 전기적 연결 상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있는지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. ※ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. ? DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. ? DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) ? DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a534434f-845d-4026-b468-167d23a00a56', '0520', '520', 'DCU#8 1위(R1) - 이중계 절체 동작', 'Tc2', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 “Module switchover” 신호가 “1”이 되면 검지 +', '이중계 절체 동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러) 이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A'모듈 및 ‘B'모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a53aff3a-0dc0-41dd-b2d2-d3c0d9f37604', '0206', '206', 'BECU#8-RAM 점검 고장', 'Tc2', 'C', 'BECU-RAM 점검 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit5 “RAM 점검 고장” 신호가 "1"이 되면 검지.', '해당 차량 RAM 점검 고장 검지 현시 및 해당 차량 정상적인 제동제어 불가.', '해당 차량 BECU의 자가진단 시 고장 발생.', '해당 차량 BECU의 자가진단 시 정상적일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a565ddaa-109a-4276-b02e-ad5ccdc21824', '1507', '1507', '판토코크#1 차단(Car6)', 'M3', 'W', '판토코크#1차단', 'W', 'CMSB', '차량으로부터 NO PANTOGRAPH CUT-OUT COCK#1(#2) 신호 미입력시', '판토 하강상태에서 해당 코크 조작시 상승 불가', '해당 코크 조작시', '해당 코크 정상 위치로 조작', null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a568c19e-d822-40aa-97dc-9e5d0f4c1591', '0721', '721', 'HVAC#4-냉난방장치2 압력스위치2(DPS) 냉매부족', 'T1', 'C', 'HVAC-냉난방장치2 압력스위치2(DPS) 냉매부족', 'C', 'HVAC', '냉난방장치2 냉매 압력스위치2 저압 발생.', 'UNIT2 CYCLE2 냉방 기능 불가', 'UNIT2 DSP2측 냉매 압력이 30초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우', '냉매 압력이 정상 수치 2±0.5(kgf/cm2 이상 유지하도록 하고, 마이콤 전원을 리셋', '1) 배전반 점검 커버를 열고 마이콤 전원을 리셋한 후, 냉방 가동 시, CREF4의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)을 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안되는 것을 확인한 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a56b856b-52c9-4954-b421-0713f2002f84', '0512', '512', 'DCU#5 3위(R2) - 파라미터 로딩 실패', 'T2', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 “Paraneter error” 신호가 “1”이 되면 검지 +', 'Parametererror 현시(출입문은 정상작동 가능)', 'DCU 자체 내의 EEPROM으로부터 parameter데이터 로딩 실패 +', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a56c5855-c54d-4a7d-883a-d885a2a3c9bc', '0158', '158', 'VVVF#7-HSCB고착검지(HBNO)', 'M4', 'C', 'VVVF-HSCB고착검지(HBNO)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT31의 Bit7 “HBNO” 신호가 "1"이 되면 검지.', null, 'HSCB 개방조건에서 투입상태 유지 시 고장검지.', '동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) 주회로 차단기함 내에 HSCB의 주접점의 고착상태를 확인한다. +2) 주회로 차단기함 내에 HSCB의 보조접 고착여부를 확인한다. +3) 주회로 차단기함 내에 HBK 보조접촉기의 코일 및 접점 용손 여부를 확인한다. +4) 추진제어장치 계전기 유니트에 HBR 계전기 상태를 확인하여 고착 여부를 확인한다. +5) HSCB의 절약저항의 단락여부를 육안 및 멀티테스터로 확인한다. +6) 추진제어장치 시험기를 이용하여 제어기 시험을 실시하여 이상여부를 확인한다.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a570bf54-2316-496e-9ec2-d058b71a21ef', '0722', '722', 'HVAC#8 - 냉난방장치2 압력스위치1(DPS) 냉매부족', 'Tc2', 'C', 'HVAC-냉난방장치2 압력스위치1(DPS) 냉매부족', 'C', 'HVAC', '냉난방장치2 냉매 압력스위치1 저압 발생 +', 'UNIT2CYCLE1냉방 기능 불가', 'UNIT2DSP1측 냉매압력이 30초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우 +', '냉매압력이 정상수치 2±0.5(kgf/cm2) 이상유지하도록 하고, 마이콤전원을 리셋', '1) 배전반 점검 커버를 열고 마이콤 전원을 리셋한 후, 냉방 가동 시, CREF4의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)를 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설 여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안 되는 것을 확인한 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a5753616-8b4d-40ff-811f-4bc1fcbec2fa', '0510', '510', 'DCU#2 5위(R3) - 출입문 닫힘 리미트 스위치1 고장', 'M1', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 “DCS1 Failure(Leftt)” 신호가 “1”이 되면 검지 +', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a58caebf-b6c5-42e0-9262-fdbb81b72664', '0028', '28', '비상제동 차단 스위치 취급', 'Tc1', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a58f908f-3096-48ed-ab80-f983eacf9a26', '1210', '1210', 'FDU#2-메모리 고장', 'M1', 'C', 'FDU-메모리 고장', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT5의 Bit6 “Memory Fault” 신호가 "1"이 되면 검지.', '1) Memory Fault 현시 +2) FDU의 이벤트 기록 및 읽기 동작 안됨. +3) FDU 환경설정 정보 로딩 실패(차량번호, 주차시간, 절전시간등의 설정값을 기본값으로 로딩)', '메모리 연결 포트의 이상 혹은 배드섹터 발생(메모리 접근 및 읽기, 쓰기가 실패한 경우)', '메모리의 접근 및 읽기, 쓰기 성공', '1) FDU의 전원을 리셋하여 소거여부 확인 +2) 문제가 지속될 경우, 수신기 교체', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a59a858d-a5c6-474d-aa2b-a26d062ae129', '0145', '145', 'VVVF#6-과온검지2(THDH)', 'M3', 'C', 'VVVF-과온검지2(THDH)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT30의 Bit2 “THDH” 신호가 "1"이 되면 검지.', null, '인버터 내부 온도가 105 °C이상 도달 시 고장발생.', '95 °C 이하 도달 및 노치 OFF +(소거 이전까지 운전 불가)', '1) 상기고장이 간헐적으로 발생하는경우 아래와 같이 조치한다. +2) 상온에서 TCU(통합제어기)에 RS232케이블을 이용하여 노트북(제공품)과 연결 후 모니터링 프로그램으로 인버터의 온도값을 확인한다. +3) 인버터 유니트의 온도센서 배선 및 커넥터 체결상태를 확인한다. +4) 추진제어장치의 냉각부에 손상이 없는지 확인한다. +5) 추진제어장치 시험기를 이용하여 TCU(통합제어장치)의 이상여부를 확인한다. +6) 상기의 점검부분에 이상이 있을 경우 관련부품을 교체한다. +7) 동일 고장이 지속적으로 발생 시 INV 스택을 교체한다.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a5a15235-1369-48a6-a1f5-4d64f6aac48c', '0506', '506', 'DCU#7 1위(R1) - 출입문 입력 저전압', 'M4', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 “1”이 되면 검지 +', '저전압상태(출입문 동작이 심하게 느려지거나 작동조차 안 될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하 +', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a5abc4f2-327a-4080-b013-a27a69e6edf6', '1206', '1206', 'FDU#1-감지기3 고장', 'Tc1', 'C', 'FDU-감지기3 고장', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 "Detector1 State” 신호가 "10"이 되면 검지.', '감지기 고장상태 현시(자동 소거 안됨)', '1) 감지기로부터 데이터 응답이 없는경우. +2) 감지기로부터 수신된 데이터의 CRC가 맞지 않는경우 +3) 감지기로부터 수신된 데이터의 ID가 송신 ID와 일치하지 않는경우', 'FDU 전원 리셋 후 감지기로부터 정상적으로 데이터가 수신된 경우', '1) FDU 전원 리셋 후 고장 소거 여부 확인 +2) 정상 동작중인 감지기와 위치 교환 후 FDU 전원 리셋 및 고장 상태 확인 +3) 동일한 감지기에서 고장 발생시 감지기 교체 +4) 동일한 위치에서 고장 발생시 감지기 라인 점검', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a5bd6998-cdd6-4e15-be48-cf9befb86ea1', '1103', '1103', 'PSD#8 - 지상 스크린도어 열림 고장', 'Tc2', 'D', 'PSD-지상 스크린도어 열림 고장', 'D', 'PSD', 'PSD의 RS485 데이터 중 PSD-TCMS SD TEXT5(TEXT6)의 Bit3 “지상 PSD 열림 확인 NG” 신호가 “1”이 되면 검지([지상 PSD 설비 장애] - 전동차 출입문 열림, 차상장치가 스크린도어 열림 명령을 송신, 지상장치로부터 스크린도어 열림확인 NG가 수신된 경우 ) +', '1) 전동차 출입문 열림 후 +2) 전동차 출입문은 열림이나, PSD가 열림이 아닐 경우 +3) 전동차 출입문과 PSD 모두 열림이나 장애로 현시될 경우', '지상 PSD 설비에서 PSD 전체 열림명령 실행 중 Feedback 신호가 올바르지 않음. +', '1) 지상 설비에 대한 고장이므로 차상장치는 정상동작 한다. +2) 기관사는 PSD 열림 상태확인, 열림 실패 시 +3) 기관사 조작반으로 수동취급 실시할 것 +* 해당 역사를 벗어나면 소멸됨.', null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a5cecf22-084f-41ec-af58-3c445c0b95b2', '0721', '721', 'HVAC#8-냉난방장치2 압력스위치2(DPS) 냉매부족', 'Tc2', 'C', 'HVAC-냉난방장치2 압력스위치2(DPS) 냉매부족', 'C', 'HVAC', '냉난방장치2 냉매 압력스위치2 저압 발생.', 'UNIT2 CYCLE2 냉방 기능 불가', 'UNIT2 DSP2측 냉매 압력이 30초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우', '냉매 압력이 정상 수치 2±0.5(kgf/cm2 이상 유지하도록 하고, 마이콤 전원을 리셋', '1) 배전반 점검 커버를 열고 마이콤 전원을 리셋한 후, 냉방 가동 시, CREF4의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)을 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안되는 것을 확인한 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a5d09f5e-b07b-4071-9129-2a69901adb02', '0222', '222', 'BECU#4-공기스프링누설(후미대차)', 'T1', 'C', 'BECU-공기스프링누설(후미대차)', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit5 “공기스프링누설(후미대차)” 신호가 "1"이 되면 검지.', '해당 차량 공기스프링누설(후미대차) 검지 현시 및 해당차량 정상적인 제동제어 불가.(응하중 제어)', '해당 차량 후미대차의 공기스프링(AS3, AS4) 압력이 정상범위를 벗어남.(100kPa 미만)', '해당 차량 후미대차의 공기스프링(AS3, AS4) 압력이 정상범위일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a5d0ef80-b9f6-407f-846a-1cfeb092c061', '0241', '241', 'BECU#5-1축스키드신호', 'T2', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a5daadb0-c86a-4a8e-9a71-3f142ab13123', '1404', '1404', 'BMS#8-배터리 과전압(BOV, 105V이상)', 'Tc2', 'W', 'BMS-배터리 과전압(BOV)', 'W', 'BMS', '해당차량의 배터리 전압이 105.7V 이상이 되면 검지', '차량 배터리 팩 과전압 검지 후, 106.5V 이상이면 충전 접촉기(CK)가 차단된다.', '배터리 팩 과전압 (105.7V 이하).', '배터리 팩 전압 정상범위로 회복 (75~105V)', '1) 배터리 NFB 상태 확인 +2) 이상이 없으면 차량 전체를 리셋한다. +3) 차량 리셋 후에도 동일고장이면 사령실과 연락하여 조치를 취한다 (외부 방전기 연결 또는 차량 지원)', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a5def5ea-518c-44bf-8b1c-0e80ea64ceaa', '0506', '506', 'DCU#8 5위(R3)-출입문 입력 저전압', 'Tc2', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 "1"이 되면 검지.', '저전안 상태 (출입문 동작이 심하게 느려지거나 작동조차 안될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a5dfdf45-353d-4233-a4bf-e93bb9dd3a27', '0509', '509', 'DCU#1 4위(L2) - 출입문 잠김 리미트 스위치 고장', 'Tc1', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 “DLS Failure” 신호가 “1”이 되면 검지 +', '출입문 잠김 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a5f189ed-60cb-49e6-a471-8ca3bfc49d2f', '0023', '23', '단부출입문 고장(Car4)', 'T1', 'C', '단부출입문 고장 (Car4)', 'C', '기타', '차량 이 단부 통로 문으로부터 END DOOR FAULT 신호를 검지 +', '출입문 정상동작 불가', ' +1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우 (인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +4) DCU 내부의 모터 / 인코더 회로 가 손상된 경우 +', '모터/인코더 및 DCU가 정상상태이고, 전기적 연결 상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있는지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. ※ 고장 조치 완료 후, 반드시 DCU의 reset 버튼을 누르거나 전원을 OFF/ON 하여 시스템을 재가동해야 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a5f43211-c759-45a7-a040-a693f9a4df62', '0417', '417', 'SIV#1-배터리 충전기 출력 과전압(BCOV)', 'Tc1', 'C', 'SIV-배터리 충전기 출력 과전압(BCOV)', 'C', 'SIV', '보조전원장치(SIV)의 RS485 데이터 중 SIV-TCMS SD TEXT5의 Bit7 “BCOV” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 '배터리 충전기 출력과전압 검지' 표시됨. +2) 보조전원장치(SIV)는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 보조전원장치 중고장이 발생됨. +5) 중고장이 발생되면 TCMS 일반화면에 보조전원장치 상태 붉을색으로 표기되며, 연장급전 됨.', '보조전원장치(SIV)의 배터리 충전부에서 출력되는 DC전압이 150V 이상일 경우 검지됨.', '1) 경고장이 발생할 경우 보조전원장치(SIV) 자동 재기동에 의해 재기동 됨. +2) 중고장이 발생했을 경우 조치 완료 후 보조전원장치(SIV) 리셋으로 고장 소거됨.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 보조전원장치(SIV) 고장기록을 수집하여 배터리 충전부에서 출력되는 DC 전압값을 확인함. +3) 전압값이 비정상적일 경우 전압센서, DC 출력단 결선을 확인한다. +4) 전압센서와 보조전원장치(SIV) 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작상태를 시험기를 통해 확인한다. +6) 출력단의 절연상태 및 접지간의 절연상태를 확인한다. +7) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a60e617b-d3cc-4c7a-9e1d-06fd324c0bbf', '0117', '117', 'VVVF-전동기 속도센서 고장검지(PGD) (Car6)', 'M3', 'C', 'VVVF-전동기 속도센서 고장검지(PGD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT32의 Bit4 “PGD” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 '전동기 속도센서 이상검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치에서 각축속도를 계산하여 속도의 편차가 2km/h이상인 조건에서 검지.', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반배전반의 VVVFIC nfb 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 견인전동기 속도센서 상태를 확인하고, 속도센서가 연결된 경로 배선연결 상태를 확인한다. +3) PGI 보드의 동작상태를 시험기를 통해 확인한다. +4) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.656536+00', null, '다대48량(2015)', 'Rotem'), ('a6170d65-9296-4d76-b6db-5cec14e5e5fa', '0507', '507', 'DCU#2 5위(R3)-초기화 실패', 'M1', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 "Calibration failure” 신호가 "1"이 되면 검지.', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터고장, 장애물 감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우', '초기화 실패를 야기한 고장 코드를 확인하여 조치 후, 재 닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a61c03ca-157e-43b5-a88c-16091bb82f52', '0505', '505', 'DCU#1 3위(R2) - 출입문 입력 고전압', 'Tc1', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 “1”이 되면 검지 +', '고전압 상태(그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상 +', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a62b9b95-88eb-4dec-9636-c8cd1eddd3e6', '0208', '208', 'BECU#7-공기제동장치고장', 'M4', 'C', 'BECU-공기제동장치고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit7 “공기제동장치고장” 신호가 "1"이 되면 검지.', '해당 차량 공기제동장치고장 검지 현시 및 해당 차량 정상적인 제동제어 불가.', '해당 차량 BECU의 자가진단 시 고장 발생 또는 AC압력센서 고장.', '해당 차량 BECU의 자가진단 시 정상적일 경우 또는 AC압력센서가 정상일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a637489c-d606-41a2-8cde-a8973802b6e5', '1510', '1510', '열차분리#2 검지(Car2)', 'M1', 'B', '열차분리#2 검지', 'B', 'TCMS', '차량의 열차분리#2 검지 +', '1) 2위측 열차검지신호(SOTS2) 검출 시 화면에 현시 +2) 실제 열차분리 시 검지되었는지 확인 필요(실제 열차분리 시 다른 차량 이 접근하지 못하도록 선조치 필요) +3) 실제 열차 분리 시 비상제동 안전루프에 의해 비상제동체결 됨. +4) 열차 분리에 따라 분리 위치부터 차량제어장치(TU)와 반대편의 편성제어장치(CU)의 통신고장 동반 발생', 'CU/TU의 2위측 열차분리신호(SOTS2) 신호 활성(LOW) 입력 시 고장 현시 +', 'CU/TU의 2위측 열차분리신호(SOTS2) 신호 정상(HIGH) 입력 시 소거됨.', '1) 실제 열차분리 시 관제에 연락하고, 지시에 따름 +2) 회로 차단기 ELCB ON 상태 확인 +3) CU인 경우 2위측 열차분리신호 DIM1 PCB의 입력채널(SOTS +2) 점검/교체 +4) TU인 경우 2위측 열차분리신호 DIM3 PCB의 입력채널(SOTS +2) 점검/교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a64024d7-773c-45d1-8f76-f509486facf0', '0734', '734', 'HVAC#5-전자접촉기 압축기(CRCM)3 고장', 'T2', 'C', 'HVAC-전자접촉기 압축기(CRCM)3 고장', 'C', 'HVAC', 'HVAC 냉방작동 중 CRCM3 전자접촉기 고장 발생.', '냉방 기능 저하(전냉방시 반냉방으로 작동)', '냉방작동 중 2.5초 이상동안 CRCM3 작동 feedback 신호가 수신되지 않는 경우', 'CRCM3 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CRCM3을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRCM3과 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a6451466-4370-4224-96d3-0e0b8f2e7dd3', '0240', '240', 'BECU#3 - 2축 스키드신호', 'M2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a6658159-48d9-47f5-a219-5cb0fd755607', '0719', '719', 'HVAC#2 - 실내온도 센서2 고장', 'M1', 'C', 'HVAC-실내온도 센서2 고장', 'C', 'HVAC', '객실 실내 온도센서2 고장 발생 +', '실내 온도센서2 고장현시', '온도센서 검지범위는 -45 ~ 85도(820 ~ 1,330Ω)인데, 2초 이상 검지범위를 벗어나는 경우 +', '온도센서 검지값이 2초 이상 허용온도 범위 내일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820~1,330Ω을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a67c28af-ff20-4d5c-a5e2-003dcf4f8f0f', '1525', '1525', 'TCMS 데이타버스1 우측라인 통신 이상(Car1)', 'Tc1', 'C', 'TCMS 데이터버스1 우측라인 통신 이상', 'C', 'TCMS', 'TCMS의 초기 기동 시 자기진단에 의한 2중계 메인통신선 중 1계 메인통신 이상 검지 시 +', '1) SL-NET 2중계이므로 데이터버스 2계로 정상통신, 운행에 지장 없음. +2) 초기기동 자기진단 시 2중계를 점검하여 1계측의 이상이 검지되었다는 점검 필요용 메시지', '초기 기동 시 SL-NET 1계와 2계를 각각 통신 후 비교하여 2계는 정상통신이 되나 1계는 정상통신이 안 되는 경우 +', '정상 수리 후 차량 전체 재기동하여 SL-NET 1계와 2계 모두 정상통신이 되는 경우', '1) 고장검출호차와 고장검출 우측호차와의 SL-NET 통신 1계 정상여부 확인(예 : 고장호차가 3호차인 경우, 1-2-3-4-5-6-7-8에서 3호차의 우측 즉, 3-4호차 간 SL-NET 1계 통신 상태 점검 필요) +2) 고장검지호차의 SCM PCB 교체 정상여부 확인 +3) 고장검지호차의 우측호차 SCM PCB 교체 정상여부 확인 +4) 고장검지호차와 고장검지 우측호차의 SL-NET 1계 메인통신 배선의 연결 상태 확인 +5) 상기 2 ~ 4번 점검에도 정상적으로 복귀되지 않는 경우, CU/TU ASS'Y 교체(백보드 확인 필요)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a68fdb37-1a6f-4bca-bc43-f1e1c710c65c', '0861', '861', '실내카메라#1(SCAM) 고장(Car#6)', 'M3', 'C', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a6913c83-e1b9-4e50-9f67-a6d7e4302e8c', '0109', '109', 'VVVF-IPM 이상검지(GDF) (Car2)', 'M1', 'C', 'VVVF-IPM 이상검지(GDF)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT31의 Bit4 “GDF” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 'IPM 이상검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치 내부 IPM에 과전류, 과온이 검지될경우.', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반배전반의 VVVFIC nfb 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 견인전동기로 출력되는 3상의 전류치 확인함. +3) 특정상의 전류치가 비정상적일 경우 특정상에 해당되는 IPM, 전류센서, 모터결선을 확인한다. +4) 전류센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작상태를 시험기를 통해 확인한다. +6) IPM 전원공급기의 전원연결상태 또는 광케이블의 연결상태와 배선상태를 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.578803+00', null, '다대48량(2015)', 'Rotem'), ('a6923934-3e07-4853-9ab6-ef1ad74bca48', '0700', '700', 'HVAC#3 통신고장', 'M2', 'C', 'HVAC-통신고장', 'C', 'HVAC', 'HVAC와 TCMS간 RS485 통신고장이 검지되면 발생.', '화면상 HVAC의 실내온도, 운전모드 등의 데이터가 반응하지 않음.', '1) 마이콤 전원 CB OFF +2) 통신연결 불량 +3) 해당 마이콤이 검수요원에 의해 firmware 업데이트 중인 경우', '해당차량의 마이콤 및 CU/TU 의 전원이 정상상태이고, 통신라인 연결상태가 정상', '1) 냉난방배전반의 점검커버를 열고, 마이콤이 정상적으로 켜저 있는지 확인한다. +2) 만약 마이콤 전원이 꺼져 있다면, 마이콤 DC전원 CB 및 차량 배전반에 위치한 냉난방장치 CB가 정상적으로 켜져 있는지 확인한다. +3) 마이콤이 정상적으로 켜져 있는데도 지속적으로 통순고장이 검지되면, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a6954837-0402-45df-a07b-1a9d3992a110', '1200', '1200', 'FDU#8 통신고장', 'Tc2', 'B', 'FDU 통신고장', 'B', 'FDU', 'FDU와 TCMS 간 RS485 통신고장이 검지되면 발생 +', '화면상 FDU의 화재검지신호 등의 데이터가 반응하지 않음.', 'FDU 통신고장 또는 통신케이블문제 +', 'TCMSSDR 신호에 의해 FDU로부터 SD 신호가 정상 수신된 경우', '1) FDU 및 TCMS의 전원을 리셋하여 소거여부 확인 +2) 통신 고장이 발생하지 않은 다른 차량의 수신기와 교체하여 소거 여부 확인(고장이 수신기를 따라가는지 확인) +3) TCMS와 FDU간의 통신계통 점검 및 FDU NFB 점검 +4) 문제가 지속될 경우, 수신기 교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a695a9b3-1037-4661-910b-da68db3f6e33', '1003', '1003', 'CMSB#8 - 출력단락', 'Tc2', 'C', 'CMSB-출력단락', 'C', 'CMSB', 'CMSB의 RS485 데이터 중 CMSB-TCMS SD TEXT3의 Bit4 “출력 단락” 신호가 “1”이 되면 검지 +', '1) TCMS 화면 하단 또는 고장화면에 ‘CM 출력 단락' 표시됨. +2) 바이패스 모드로 전환되고, CM 기동 시 ‘바이패스 기동'으로 표시됨.', ' +1) CM 모터의 단락이 발생되었을 경우 검지됨. +2) CMSB 내 IBGT 보드의 결함이 발생될 경우 검지됨. +3) CM 출력부하가 급변할 경우 검지됨. +', '1) 차량 전원 OFF +2) CMSB 내부의 표시기 패널 RESET 버튼 누름', '0) 정상운행 후, 검수고에 입고하여 아래와 같이 조치한다. +1) 상기고장은 고장 소거 후, 재현시험을 진행하여 지속적으로 발생될 경우 아래와 같이 조치한다. +2) CM 모터의 절연상태를 점검한다. +3) CMSB 내 IGBT 보드를 점검한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a6ad4006-e13d-4cf1-a4c4-f56ecbe2d23e', '0714', '714', 'HVAC#2 - 냉난방장치1 압력스위치2(DPS) 고압', 'M1', 'D', 'HVAC-냉난방장치1 압력스위치2(DPS) 고압', 'D', 'HVAC', '냉난방장치1 냉매 압력스위치2 고압 발생 +', 'UNIT1CYCLE2 냉방기능불가', 'UNIT1DSP2측 냉매압력이 3초 이상 28±1(kgf/cm2) 이상 되는 경우 +', '냉매압력이 정상수치 15±0.7(kgf/cm2) 이하로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CRCM2의 부하측 전류를 측정하여 응축기 팬의 동작여부를 확인한다. +2) 응축기 코일의 전면에 이물질로 인한 막힘이 있는지 확인한다. +3) 응축기 팬 상부 그릴에 외부 이물질로 인한 막힘이 있는지 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a6bdcfde-e1c5-46be-b753-81e4522524fe', '0136', '136', 'VVVF#7-OVT 전류센서 이상검지(OVCTD)', 'M4', 'C', 'VVVF-OVT 고장 과전류 검지(OVCTD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT29의 Bit1 “OVCTD” 신호가 "1"이 되면 검지.', null, 'OVT의 동작 조건에서 동작하지 않았을 때 중고장 발생.', '동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) OVCT 외관파손 및 커넥터 분리 유무 확인. +2) OVRe 저항값 측정.(기준값 6.4Ω) +3) OVT UNIT과 OVRe의 주 회로 결선상태 확인 +4) OVT UNIT의 IGBT 크랙 발생 유무 확인. +5) OVT UNIT의 PCB기판 상태 확인. +6) OVCT 커넥터의 P15A1~F15A1의 전압이 +15V임을 확인한다. +7) OVCT 커넥터의 N15A1~F15A1의 전압이 -15V임을 확인한다. +8) 상기의 점검부분에 이상이 있을 경우 관련부품을 교체한다.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a6c6efe9-0eb5-46ff-a27e-6acbf69847e9', '0230', '230', 'ECU 전원공급 고장(Car5)', 'T2', 'B', 'ECU 전원공급 고장', 'B', 'BECU', '해당 차량의 ECU 전원공급 고장(CB OFF) 발생 시 검지 +', '해당 차량의 ECU 전원공급 고장검지 현시', '해당 차량의 ECU 전원차단(CBOFF) +', '해당 차량의 ECU 전원공급(CBON)', 'BECU를 리셋(BECUCBOFF/ON)하여 소거 여부 확인, 지속적으로 고장 발생 시 관제 보고하고 지시에 따를 것', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a6c7744e-0486-43fe-9cc4-249001981be2', '0718', '718', 'HVAC#8 - CO2 센서1 고장', 'Tc2', 'C', 'HVAC-CO2 센서1 고장', 'C', 'HVAC', '객실 CO2 센서1 고장 발생 +', 'CO2 센서1 고장현시', 'CO2 센서의 검지범위는 0 ~ 4,000ppm(2 ~ 10Vdc)인데, 1초 이상 출력전압이 2Vdc(0ppm) 미만으로 떨어지는 경우 +', 'CO2 센서 검지값이 1초 이상 2Vdc(0ppm) 이상 지속되는 경우', '1) 전원을 인가한 상태에서 CO2 센서 커버를 열고 테스터기를 통해 ‘OUT2' 단자와 ‘G' 단자 간의 전압이 2Vdc 미만인지 확인한다. +2) 만약 전압이 2Vdc 이상인데도 고장이 지속될 경우 마이콤을 교체한다. +3) 만약 전압이 2Vdc 미만으로 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a6c89c81-23f6-48be-a233-be38dd1858b3', '0855', '855', '비상인터폰#1(PEI) 고장(Car#5)', 'T2', 'C', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a6ca6201-87a8-4d72-90fa-531d2aef5129', '1203', '1203', 'FDU#2-감지기2 화재감지', 'M1', 'W', 'FDU-감지기2 화재감지', 'W', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 "Detector1 State” 신호가 "11"이 되면 검지.', '화재상태 현시(자동 소거 안됨)', '하기 2가지 조건을 모두 만족하여야 화재신호가 출력 됨(연동모드 동작). +1) 이웃한(앞 혹은 뒤에 위치한) 감지기 중 하나의 감지기라도 주의 혹은 화재상태에 있어야 함. +2) Detector1(해당 감지기)에서 측정된 연기농도가 15% 이상이거나 온도가 65℃ 이상인 경우', '1) FDU의 복귀버튼 조작시 +2) FDU 전원 리셋시', '1) 해당 감지기 위치의 화재 발생 여부 확인 +2) 화재 오 감지일경우 FDU의 복귀버튼 취급 +3) 오감지일경우 감지기의 청소주기 확인(내부 먼지 제거)', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a6cf802e-b6b8-4a88-be23-91bab369dd71', '0723', '723', 'HVAC#5-냉난방장치1 압력스위치2(DPS) 냉매부족', 'T2', 'C', 'HVAC-냉난방장치1 압력스위치2(DPS) 냉매부족', 'C', 'HVAC', '냉난방장치1 냉매 압력스위치2 저압 발생.', 'UNIT1 CYCLE2 냉방 기능 불가', 'UNIT1 DSP2측 냉매 압력이 30초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우', '냉매 압력이 정상 수치 2±0.5(kgf/cm2 이상 유지하도록 하고, 마이콤 전원을 리셋', '1) 배전반 점검 커버를 열고 마이콤 전원을 리셋한 후, 냉방 가동 시, CREF2의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)을 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안되는 것을 확인한 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a6dbfeb8-928b-440f-9e27-a65c6a4dae30', '0410', '410', 'SIV#8-인버터1 과온검지(INV1THF) ', 'Tc2', 'B', 'SIV-인버터1 과온검지(INV1THF)', 'B', 'SIV', '보조전원장치(SIV) 의 RS485 데이터 중 SIV-TCMS SD TEXT5의 Bit0 “INV1THF” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 'SIV 인버터 1의 스택 과온' 표시됨. +2) 보조전원장치는 상기 고장검지 후 자동 재기동이 되지 않으며 중고장으로 처리함. +3) 중고장이 발생되면 TCMS 일반화면에 보조전원장치 상태 붉을색으로 표기되며, 연장급전 됨.', '보조전원장치(SIV) 인버터 1의 냉각기 온도가 105도 이상인 조건에서 검지.', '1) 보조전원장치(SIV) 인버터 1의 냉각기 온도가 105도 미만으로 떨어졌을 시 +2) 보조전원장치(SIV) 리셋으로 고장 소거 됨.', '1) 상기고장이 발생이 된 경우 아래와 같이 조치한다. +2) 보조전원장치(SIV) 냉각기의 손상이 없는지 확인한다. +3) 보조전원장치(SIV) 내부에 인버터 유닛 구성품에 손상이 없는지 확인한다. +4) 인버터 유닛 내부에 온도센서 및 결선에 이상이 없느지 확인한다. +5) DIN 보드의 동작상태를 시험기를 통해 확인한다. +6) 인버터 유닛 구성품들의 배선상태와 광케이블의 연결상태를 확인한다. +7) 부하단의 절연상태 및 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a6e34c51-aa30-4c08-8dea-ca1964d3351f', '0501', '501', 'DCU#7 1위(R1)-출입문 차단', 'M4', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a6e786aa-2051-41fb-903f-c3e8e067ccca', '0210', '210', 'BECU#7-3축속도신호의 비정상', 'M4', 'C', 'BECU-3축속도신호의 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit1 “3축속도신호의 비정상” 신호가 "1"이 되면 검지.', '해당 차량 3축속도신호의 비정상 검지 현시 및 해당 차량 활주제어 불가.', '해당 차량의 3축 속도센서 고장 발생.', '해당 차량의 3축 속도센서가 정상적일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a6f00981-2a89-485d-8871-5927ffa1e252', '0729', '729', 'HVAC#3-냉난방장치2 리턴 센서 고장', 'M2', 'C', 'HVAC-냉난방장치2 리턴 센서 고장', 'C', 'HVAC', '냉난방장치2의 리턴 센서 고장 발생', '냉난방장치2 리턴센서 고장현시', '온도센서 검지범위는 -45~85도 (820~1330옴) 인데, 2초 이상 검지범위를 벗어나는 경우', '온도센서 검지 값이 2초 이상 허용온도 범위 내 일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820~1330옴 을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우, 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a6f1935d-9e87-407a-93ce-ed92a87939a6', '0510', '510', 'DCU#5 6위(L3) - 출입문 닫힘 리미트 스위치1 고장', 'T2', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 “DCS1 Failure(Leftt)” 신호가 “1”이 되면 검지 +', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a7060b88-7088-41c8-a74a-889f874e2ad4', '0182', '182', 'VVVF#3 - TCU 초기화(INZ - RST)', 'M2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a71dd170-f576-47b3-b735-35b8c6efba9c', '0511', '511', 'DCU#2 5위(R3)-출입문 닫힘 리미트 스위치2 고장', 'M1', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 "DCS2 Failure(Right)” 신호가 "1"이 되면 검지.', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a71e091e-96c4-4dfa-a8f7-69fe1a600350', '0144', '144', 'VVVF#7 - HSCB 트립검지(HBT)', 'M4', 'B', 'VVVF-HSCB 트립검지(HBT)', 'B', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT30의 Bit1 “HBT” 신호가 “1”이 되면 검지 +', '1) TCMS 화면 하단 또는 고장화면에 ‘HSCB 자기트립검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동이 되지 않으며 중고장으로 처리됨. +3) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉은색으로 표기되며, HSCB, LB1, 2 개방되어 동력 손실 발생함.', '추진제어장치 입력전류가 1,500A 이상인 조건 +', '추진제어장치 리셋으로 고장 소거됨.', '1) 상기고장이 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 고장기록의 FC 전압 및 입력전류 확인 +3) 추진제어장치 내부에 접지흔적 확인 및 고압 회로 점검 +4) 전류/전압 센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작 상태를 시험기를 통해 확인한다. +6) IPM 전원공급기의 전원연결 상태 또는 광케이블의 연결 상태와 배선상태를 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지 간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a71e6e4e-a0cf-4a21-9268-001d49d3732e', '0702', '702', 'HVAC#1 - 냉난방장치2 압축기1 과부하', 'Tc1', 'C', 'HVAC-냉난방장치2 압축기1 과부하', 'C', 'HVAC', 'HVAC 냉방 작동 중 냉난방장치2 압축기1 또는 응축기1 모터에 과부하 발생 +', '냉방 기능 저하(전냉방 시 반냉방으로 작동)', ' +1) 냉방 작동 중 UNIT2의 압축기1 또는 응축기1 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRCM3과 연결된 THR3이 Trip 됨. +', 'UNIT2의 압축기1 또는 응축기1 모터의 과부하조건을 해소하여 정상 가능 상태로 만들고, THR3 및 마이콤 전원 리셋', '1) 냉난방 배전반의 점검커버를 열고, THR3의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR4의 전류 세팅값이 11.5A에 맞춰져 있는지 확인하여, 아닐 경우, (+) 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동시킨 후, THR3의 2차측 2, 4, 6 단자에서 각 단자 간 상간 전압이 AC 380V로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 압축기 및 응축기 단품 상태에서 점검을 한다. +7) THR3의 2차측 2, 4, 6 단자에서 각 단자 간 권선저항이 모두 같은지 확인한다. (±10% 이하) (압축기1 및 응축기1 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT2의 압축기1 또는 응축기1 모터의 결선을 해제한 후 각 부품의 권선저항을 확인 후, 문제가 있는 부품을 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR3 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a7429e69-8355-467d-a510-b01b12d73e59', '0501', '501', 'DCU#7 6위(L3) - 출입문 차단', 'M4', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a748a25b-19df-4d05-9c4c-0ef2ac45db1a', '1405', '1405', 'BMS#1 - 배터리 저전압(BUV, 75V 이하)', 'Tc1', 'B', 'BMS-배터리 저전압(BUV, 75V 이하)', 'B', 'BMS', '해당 차량의 배터리 전압이 74.8V 이하가 되면 검지 +', '차량 배터리팩 저전압검지 후, 73.5V 이하이면 방전접촉기(DCK)가 차단된다.', '배터리팩 저전압(74.8V 이하) +', '배터리팩 전압 정상범위로 회복(75 ~ 105V)', '1) 배터리 NFB 상태 확인 +2) 이상이 없으면 차량 전체를 리셋한다. +3) 차량 리셋 후에도 동일고장이면 사령실과 연락하여 조치를 취한다. (외부 충전기 연결 또는 차량 지원)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a752d5c1-60ee-404d-82d2-d5c2c8e8d44b', '0511', '511', 'DCU#7 5위(R3) - 출입문 닫힘 리미트 스위치2 고장', 'M4', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 “DCS2 Failure(Right)” 신호가 “1”이 되면 검지 +', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a76578e4-f29b-48db-919f-82549ef5491c', '0509', '509', 'DCU#8 5위(R3)-출입문 잠김 리미트 스위치 고장', 'Tc2', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 "DLS Failure” 신호가 "1"이 되면 검지.', '출입문 잠김 상태 확인 불가', '1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a771f6be-dcba-4f6b-9b58-14659aed3761', '1007', '1007', 'CMSB#8-CM 기동불가', 'Tc2', 'C', null, null, 'CMSB', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a77e6e84-2056-49b4-90c6-64f435c8d263', '0500', '500', 'DCU#4 3위(R2) 통신고장', 'T1', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS간 RS485 통신고장이 검지되면 발생.', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐 상태 등의 변화가 없음.', '1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우', '해당차량의 DCU 및 CU/TU 의 전원이 정상상태이고, 통신라인 연결상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜저 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는데도 지속적으로 통순고장이 검지되면, DCU의 X2,X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a7816204-930a-4fd2-880d-9a71cc197664', '0887', '887', '실내카메라#2(SCAM) 고장(Car#8)', 'Tc2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a788436d-c449-4201-99e2-0d6137281b86', '0748', '748', 'HVAC#5 - 전자접촉기 차량히터1(CRRHT) 고장', 'T2', 'C', 'HVAC-전자접촉기 차량 히터1(CRRHT) 고장', 'C', 'HVAC', '객실 난방기 작동 중 CRRHT1 전자접촉기 고장 발생 +', '객실 전난방 시 2/3난방만 작동', '객실 전난방 작동 중 2.5초 이상 동안 CRRHT1 작동 feedback 신호가 수신되지 않는 경우 +', 'CRRHT1 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CRRHT1을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRRHT1과 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a78ad668-409e-4e02-8b23-977bb60fa57d', '0514', '514', 'DCU#6 3위(R2)-출입문 닫힘 시간 초과', 'M3', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 "Close time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 닫힘 동작시간이 7초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도 한 후, '장애물로 인한 닫힘실패' 고장과 함께 'Close time out' 고장이 함께 현시', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a78e472a-e82b-46d3-b33a-ad453376a121', '0863', '863', '출력증폭기#1(AMP) 고장(Car#6)', 'M3', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a7aad4f7-57b1-478b-886e-54a4b2189d28', '0121', '121', 'VVVF-통신이상검지(COMF) (Car3)', 'M2', 'C', 'VVVF-통신이상검지(COMF)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT33의 Bit0 “COMF” 신호가 "1"이 되면 검지.', 'TCMS 화면에 고정정보 현시되며, 추진제어장치 상태화면에 나타나는 데이터에 변동이 없음.', 'TCMS-추진제어장치(VVVF) 간 통신정보가 3초이상 동일한 정보로 유지되면 통신고장을 검지함.', 'TCMS-추진제어장치(VVVF) 간 통신정보가 정상적으로 통신이 될경우 소거됨.', '1) 추진제어장치(VVVF) 리셋 실시 후 통신고장 소거됨을 확인. +2) 통신고장 소거가 되지 않을 경우 추진제어장치 MON 보드 신품으로 교체후 통신고장 소거여부 확인. +3) 위 조건에도 고장이 소거되지 않을 경우, TCMS-추진제어장치간 RS485 통신케이블 연결상태 점검.', null, '2', '2025-10-12 01:21:37.656536+00', null, '다대48량(2015)', 'Rotem'), ('a7ad7c5e-ab71-4b3e-9777-5dda7311b4cd', '1501', '1501', '차상신호장치(ATC) 회로차단기 차단(Car8)', 'Tc2', 'W', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a7b19a67-2e8c-4e71-8b5a-97719cfc994c', '0711', '711', 'HVAC#8 - 냉난방장치2 압력스위치1(DPS) 저압', 'Tc2', 'D', 'HVAC-냉난방장치2 압력스위치1(DPS) 저압', 'D', 'HVAC', '냉난방장치2 냉매 압력스위치1 저압 발생 +', 'UNIT2CYCLE1 냉방기능불가', 'UNIT2DSP1측 냉매압력이 3초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우 +', '냉매압력이 정상수치 2±0.5(kgf/cm2) 이상으로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CREF4의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)를 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설 여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안 되는 것을 확인한 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a7b46b42-8daa-4d01-aa74-aee57bb6402d', '0502', '502', 'DCU#7 2위(L1)-출입문 장애물검지', 'M4', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a7b50f43-d633-41c6-b8b5-c6e6f4c9de41', '0517', '517', 'DCU#6 4위(L2) - 출입문 장애물로 인한 열림 실패', 'M3', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Open failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘 상태로 대기', '도어열림 중 3회 장애물감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 열림 시, 장애물감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a7c348ed-1d4a-4247-847c-5dd3cc0b8a0b', '0191', '191', '보조공기압축기 장시간 기동(Car6)', 'M1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a7dd64a8-a89b-46f5-b3dc-98ee9cf2f585', '0212', '212', 'BECU#4 - 1축 속도신호의 비정상', 'T1', 'C', 'BECU-1축속도신호의 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit3 “1축속도신호의 비정상” 신호가 “1”이 +되면 검지 +', '해당 차량 1축속도신호의 비정상 검지 현시 및 해당 차량 활주제어불가', '해당 차량의 1축속도센서 고장 발생 +', '해당 차량의 1축속도센서가 정상적일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a7f6cbb5-6432-4abe-a6b3-f384a07da4c4', '0514', '514', 'DCU#1 6위(L3)-출입문 닫힘 시간 초과', 'Tc1', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 "Close time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 닫힘 동작시간이 7초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도 한 후, '장애물로 인한 닫힘실패' 고장과 함께 'Close time out' 고장이 함께 현시', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a821d124-a5bf-4e10-96d8-9322ea52ce23', '0505', '505', 'DCU#2 3위(R2) - 출입문 입력 고전압', 'M1', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 “1”이 되면 검지 +', '고전압 상태(그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상 +', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a8343497-a53f-4e6c-b430-a0d530b3edbc', '0511', '511', 'DCU#4 5위(R3)-출입문 닫힘 리미트 스위치2 고장', 'T1', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 "DCS2 Failure(Right)” 신호가 "1"이 되면 검지.', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a83604fe-5304-41a7-ae66-5fcdc6752800', '0710', '710', 'HVAC#1 - 냉난방장치2 압력스위치2(DPS) 고압', 'Tc1', 'D', 'HVAC-냉난방장치2 압력스위치2(DPS) 고압', 'D', 'HVAC', '냉난방장치2 냉매 압력스위치2 고압 발생 +', 'UNIT2CYCLE2 냉방기능불가', 'UNIT2DSP2측 냉매압력이 3초 이상 28±1(kgf/cm2) 이상 되는 경우 +', '냉매압력이 정상수치 15±0.7(kgf/cm2) 이하로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CRCM4의 부하측 전류를 측정하여 응축기 팬의 동작여부를 확인한다. +2) 응축기 코일의 전면에 이물질로 인한 막힘이 있는지 확인한다. +3) 응축기 팬 상부 그릴에 외부 이물질로 인한 막힘이 있는지 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a83a798f-13be-4370-bfc3-55a785daccf9', '0239', '239', 'BECU#3 - 3축 스키드신호', 'M2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a84871ad-b1ee-48cf-bc40-a4fc333c2470', '0744', '744', 'HVAC#8-전자접촉기 보조히터1(AHEK) 고장', 'Tc2', 'C', 'HVAC-전자접촉기 보조히터1(AHEK) 고장', 'C', 'HVAC', 'HVAC 보조난방기 작동 중 AHEK1 전자접촉기 고장 발생.', 'UNIT1 보조난방기 전난방 시 반난방만 작동', '보조난방기 작동 중 2.5초 이상동안 AHEK1 작동 feedback 신호가 수신되지 않는 경우', 'AHEK1 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) AHEK1을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, AHEK1과 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a86937ce-a9e7-42b9-985b-b59276c9e40d', '0224', '224', 'BECU#8-파트너차 ECU 고장(PECUF)', 'Tc2', 'C', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a86ec0d6-d347-4aeb-b21a-f9508c5ff079', '0732', '732', 'HVAC#3-실외온도 센서1 고장', 'M2', 'C', 'HVAC-실외온도 센서 고장', 'C', 'HVAC', '실외온도 센서 고장 발생', '실외온도 센서 고장현시', '온도센서 검지범위는 -45~85도 (820~1330옴) 인데, 2초 이상 검지범위를 벗어나는 경우', '온도센서 검지 값이 2초 이상 허용온도 범위 내 일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820~1330옴 을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우, 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a893c712-8d37-427e-abf6-7123460f4b05', '0517', '517', 'DCU#2 4위(L2)-출입문 장애물로 인한 열림 실패', 'M1', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Open failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘상태로 대기', '도어 열림 중 3회 장애물 감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 열림 시, 장애물 감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a8a372ab-69df-4fed-9d52-2b3d753f6b49', '0235', '235', '제동력부족(ISBD, Car6)', 'M3', 'B', '제동력부족(ISBD)', 'B', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit3 “ISBD” 신호가 “1”이 되면 검지 +', '해당 차량 제동력부족검지 현시 및 해당 차량 제동압력(BCP)이 타 차량에 비해 현저히 낮음.', '제동 7단 취급 시 해당 차량의 제동압력이 생성되지 않음. +', '제동 7단 취급 시 정상적인제동압력이 생성된 경우 소거', 'MCS 모드로 전환 후, 마스콘을 N(중립) → 제동 7단까지 수 회 취급하여 소거 여부 확인, 제동 취급 확인 후, 주의 운전할 것, 지속발생 시 관제보고하고 지시에 따를 것', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a8a9a773-a50e-4733-bc96-90a409803f21', '0062', '62', 'MAIN FUSE#1 DISCONNECTED(Car5)', 'T2', 'W', 'MAIN FUSE#1 DISCONNECTED(Car5)', 'W', '기타', '차량으로부터 AUX FUSE DISCONNECTED 신호 입력 시 +', 'VVVF 고압 차단으로 추진 불능', '해당 퓨즈 소손 +', '해당 퓨즈 교체 +회로 도면 : REC20210DX0', null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a8bf9fc2-781f-4f61-bb70-6d4e701a3e5f', '0742', '742', 'HVAC#5-전자접촉기 보조히터3(AHEK) 고장', 'T2', 'C', 'HVAC-전자접촉기 보조히터3(AHEK) 고장', 'C', 'HVAC', 'HVAC 보조난방기 작동 중 AHEK3 전자접촉기 고장 발생.', 'UNIT2 보조난방기 전난방 시 반난방만 작동', '보조난방기 작동 중 2.5초 이상동안 AHEK3 작동 feedback 신호가 수신되지 않는 경우', 'AHEK3 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) AHEK3을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, AHEK3과 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a8cc40b4-952d-48c0-9f2f-ccd95578e6e3', '0515', '515', 'DCU#1 3위(R2)-출입문 열림 시간 초과', 'Tc1', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 "Open time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 열림 동작시간이 6초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도 한 후, '장애물로 인한 열림실패' 고장과 함께 'Open time out' 고장이 함께 현시', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a8cda1f7-f4c3-4c9b-9194-96a37f1ec1a2', '0511', '511', 'DCU#1 6위(L3)-출입문 닫힘 리미트 스위치2 고장', 'Tc1', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 "DCS2 Failure(Right)” 신호가 "1"이 되면 검지.', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a8db405d-3afc-4f47-93fd-389978e840da', '0515', '515', 'DCU#6 2위(L1)-출입문 열림 시간 초과', 'M3', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 "Open time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 열림 동작시간이 6초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도 한 후, '장애물로 인한 열림실패' 고장과 함께 'Open time out' 고장이 함께 현시', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a8dc9aff-2b3f-45d2-942b-38ff60244023', '0510', '510', 'DCU#3 4위(L2)-출입문 닫힘 리미트 스위치1 고장', 'M2', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 "DCS1 Failure(Leftt)” 신호가 "1"이 되면 검지.', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a8dd4ae8-cd3d-465b-a013-6b1ebac0c43a', '0182', '182', 'VVVF#2-TCU 초기화(INZ-RST)', 'M1', 'C', 'VVVF-TCU 초기화(INZ-RST)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT34의 Bit7 “INZ-RST” 신호가 "1"이 되면 검지.', null, '통합제어장치 재 기동 시 해당 고장 검지', '초기화 완료', '1) 상기고장이 간헐적으로 발생하는 경우 아래와 같이 조치한다. +2) TCU(통합제어장치)의 입력에 제어전원 DC70 ~100V가 인가되는지 확인한다. +3) TCU(통합제어장치) 후면 커넥터 및 배선의 상태를 확인한다. +4) 추진제어장치 시험기를 이용하여 TCU(통합 제어장치)의 이상여부를 확인한다. +5) PWS보드 또는 통합제어기 교체. +6) 상기의 점검부분에 이상이 있을경우 관련부품을 교체한다.', null, '3', '2025-10-12 01:21:37.578803+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a8e3f8cb-1006-48d2-a811-ce52a0806c54', '0742', '742', 'HVAC#8 - 전자접촉기 보조히터3(AHEK) 고장', 'Tc2', 'C', 'HVAC-전자접촉기 보조히터3(AHEK) 고장', 'C', 'HVAC', 'HVAC 보조난방기 작동 중 AHEK3 전자접촉기 고장 발생 +', 'UNIT2 보조난방기 전난방 시 반난방만 작동', '보조난방기 작동 중 2.5초 이상 동안 AHEK3 작동 feedback 신호가 수신되지 않는 경우 +', 'AHEK3 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) AHEK3을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, AHEK3과 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a8e42dfe-e495-4bfb-b0bd-6bc19d217ab2', '0516', '516', 'DCU#3 3위(R2)-출입문 장애물로 인한 닫힘 실패', 'M2', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Close failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림상태로 대기', '도어 닫힘 중 3회 장애물 감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a8ec739f-e25a-4982-b1fc-a60ae5f28974', '0113', '113', 'VVVF-주회로 접지검지(LGD) (Car7)', 'M4', 'B', 'VVVF-주회로 접지검지(LGD)', 'B', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT32의 Bit0 “LGD” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 '주회로 접지검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동이 되지 않으며 중고장으로 처리됨. +3) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치 입력전압이 300V 이하로 하강되며, 입력전류가 1700A 이상인 조건.', '1) 추진제어장치 리셋으로 고장 소거됨.', '1) 상기고장이 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 고장기록의 FC 전압 및 입력전류 확인. +3) 추진제어장치 내부에 접지흔적 확인 및 고압회로 점검. +4) 전류/전압 센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작상태를 시험기를 통해 확인한다. +6) IPM 전원공급기의 전원연결상태 또는 광케이블의 연결상태와 배선상태를 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.71571+00', null, '다대48량(2015)', 'Rotem'), ('a8fa76fe-9c64-4017-805a-3641d36a3573', '0139', '139', 'VVVF#6-INV ARM 단락(CFD)', 'M3', 'C', 'VVVF-INV ARM 단락(CFD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT29의 Bit4 “CFD” 신호가 "1"이 되면 검지.', null, '게이트신호와 피드백신호 불일치 발생 시 고장검지.', '동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) 육안으로 IGBT의 상태를 확인하여 외관에 손상이 있는지 확인한다. +2) FC 양 옆의 PWM 제어기판의 고정상태 확인. +3) IGBT의 Collector와 Emitter 양단을 멀티미터를 이용하여 단락 여부 및 다이오드 상태를 확인한다. +4) PWM 보드의 후면 커넥터 핀 상태 확인. +5) 추진제어장치 시험기를 이용하여 PWM 보드의 이상여부를 확인한다. +6) 게이트 드라이버 외관 및 커넥터 핀 상태 확인. +7) 상기의 점검부분에 이상이 있을 경우 관련부품을 교체한다. +8) 동일 고장 재발 시 INV 스택을 교체한다.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a8ff7848-1fd8-4b74-b0cc-90ecd1d1ed26', '0219', '219', 'BECU#2 - 제동지령 비정상', 'M1', 'C', 'BECU-제동지령 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit2 “제동지령 비정상” 신호가 “1”이 되면 검지 +', '해당 차량 제동지령비정상 검지 현시 및 해당 차량 정상적인제동제어불가(상용제동지령에 따른 제어)', '해당 차량의 제동지령 신호가 정상범위를 벗어남. (5.0 ~ 95.0%) +', '해당 차량의 제동지령 신호가 정상범위일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 소거되지 않을 경우 해당 선택 운전실의 PWM 엔코더를 리셋(CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a90b7688-0ad4-496b-ba5c-6b84dcb0211e', '0508', '508', 'DCU#5 6위(L3) - 출입문 모터/인코더 고장', 'T2', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 “Motor / Encoder failure” 신호가 “1”이 되면 +검지 +', '출입문 정상동작 불가', ' +1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우(인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터/인코더 회로 가 손상된 경우 +', '모터/인코더 및 DCU가 정상 상태이고, 전기적 연결 상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있는지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. ※ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. ? DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. ? DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) ? DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a914276e-05f8-4311-928f-ac49e735a11c', '0521', '521', 'DCU#1 4위(L2) - 모듈 상태 이상', 'Tc1', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 “01” 또는 “00”이 되면 +검지 +', '이중계절체동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러)이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a9183313-10fb-4bce-ac86-ba54d7936cda', '0750', '750', 'HVAC#7-냉난방장치2 보조히터 과열', 'M4', 'C', 'HVAC-냉난방장치2 보조히터 과열', 'C', 'HVAC', 'HVAC2 보조난방기 작동 중 과열 발생.', 'UNIT2 보조난방기 난방 불가', '보조난방기 작동 중 1초 이상동안 온도가 70도 이상으로 과온센서 정상 신호가 수신되지 않는 경우', '1초 이상동안 60도 미만으로 온도가 떨어져 과온센서 정상 신호가 수신되는 경우', '1) 보조난방기가 꺼진 상태에서도 문제 발생 시, 과온 센서를 교체한다. +2) 센서 교체 후에도 문제가 발생되면, 배선에 문제가 없는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a92c2ce2-fe68-476a-9cd8-cb6cbf4044ea', '0500', '500', 'DCU#8 1위(R1) 통신고장', 'Tc2', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS 간 RS485 통신고장이 검지되면 발생 +', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐상태 등의 변화가 없음.', ' +1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우 +', '해당 차량의 DCU 및 CU/TU의 전원이 정상상태이고, 통신 라인 연결 상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜져 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적 으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는 데도 지속적으로 통신고장이 검지되면, DCU의 X2, X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상 체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a92e1a0e-46a8-49db-9eb9-120708579ec2', '0726', '726', 'HVAC#3 - 배기팬2 과부하', 'M2', 'C', 'HVAC-배기팬2 과부하', 'C', 'HVAC', 'HVAC 환기작동 중 차량 배기팬2 모터에 과부하 발생 +', '환기 시 차량 배기팬2 운전 불가능', ' +1) 냉방 작동 중 챠량 배기팬2 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRVF2와 연결된 THR10이 Trip 됨. +', '차량 배기팬2 모터의 과부하조건을 해소하여 정상 가능 상태로 만들고, THR10 및 마이콤 전원 리셋', '1) 냉난방 배전반의 점검커버를 열고, THR10의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR10의 전류 세팅값이 2.5A에 맞춰져 있는지 확인하여, 아닐 경우, (+) 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동시킨 후, THR10의 2차측 2, 4 단자와 6 단자 사이의 전압이 DC 100V로 정상 측정 되는지 확인한다. +5) 만약 전압이 측정되지 않을 시, 전원이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, THR10 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a946527e-95c6-46d6-9004-e5097868e90c', '0228', '228', 'BC 코크(차하#1) 차단(Car7)', 'M4', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a94dea24-a857-4f7f-8411-ed60989ac973', '0514', '514', 'DCU#8 4위(L2) - 출입문 닫힘 시간 초과', 'Tc2', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 “Close time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 닫힘 동작 시간이 7초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도한 후, ‘장애물로 인한 닫힘 실패' 고장과 함께 ‘Close time out' 고장이 함께 현시 +', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a9517ad8-10c9-4787-bd49-232049272af3', '0515', '515', 'DCU#6 1위(R1)-출입문 열림 시간 초과', 'M3', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 "Open time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 열림 동작시간이 6초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도 한 후, '장애물로 인한 열림실패' 고장과 함께 'Open time out' 고장이 함께 현시', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a9636c5a-fead-4796-b5b7-6f9f21a309da', '1103', '1103', 'PSD#8-지상 스크린도어 열림 고장', 'Tc2', 'D', 'PSD-지상 스크린도어 열림 고장', 'C', 'PSD', 'PSD 의 RS485 데이터 중 PSD-TCMS SD TEXT5(TEXT6)의 Bit3 “지상 PSD 열림 확인 NG” 신호가 "1"이 되면 검지. ([지상 PSD 설비 장애] - 전동차 출입문 열림, 차상장치가 스크린도어 열림 명령을 송신 +지상장치로부터 스크린도어 열림확인 NG가 수신된 경우)', '전동차 출입문 닫힘 후 전동차 출입문은 닫혔으나, PSD가 닫히지 않을 경우 전동차 출입문과 PSD모두 닫혔으나 장애로 현시될 경우', '지상 PSD 설비에서 PSD 전체 열림 명령 실행중 Feedback 신호가 올바르지 않음.', '지상설비에대한 고장이므로 차상장치는 정상 동작한다. 기관사는 PSD 열림 상태확인, 열림 실패시 +기관사 조작반으로 수동취급 실시 할 것. +*해당 역사를 벗어나면 소멸됨.', null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a96b7b83-564b-4186-8782-5334dce1eb08', '0512', '512', 'DCU#3 5위(R3)-파라미터 로딩 실패', 'M2', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 "Paraneter error” 신호가 "1"이 되면 검지.', 'Parameter error 현시 (출입문은 정상작동 가능)', 'DCU 자체내의 EEPROM으로부터 parameter 데이터 로딩 실패', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a96bcae8-ec07-4cb7-987a-3a780daf74ef', '0509', '509', 'DCU#6 6위(L3)-출입문 잠김 리미트 스위치 고장', 'M3', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 "DLS Failure” 신호가 "1"이 되면 검지.', '출입문 잠김 상태 확인 불가', '1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a9754d97-9155-478c-9440-6972868301ca', '0177', '177', 'VVVF#2 - LB1 투입불량(LB1NC)', 'M1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a9853652-f0ab-4b5e-86e5-fe6a3c290cab', '1405', '1405', 'BMS#1-배터리 저전압(BUV, 75V이하)', 'Tc1', 'B', 'BMS-배터리 저전압(BUV, 75V이하)', 'B', 'BMS', '해당차량의 배터리 전압이 74.8V이하가 되면 검지', '차량 배터리 팩 저전압 검지 후, 73.5V 이하이면 방전 접촉기(DCK)가 차단된다.', '배터리 팩 저전압 (74.8V 이하).', '배터리 팩 전압 정상범위로 회복 (75~105V)', '1) 배터리 NFB 상태 확인 +2) 이상이 없으면 차량 전체를 리셋한다. +3) 차량 리셋 후에도 동일고장이면 사령실과 연락하여 조치를 취한다 (외부 충전기 연결 또는 차량 지원)', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a9860ee0-e584-4c4d-8a21-62e3de069801', '0159', '159', 'VVVF#2 - 제어전원전압 이상(PWM2) (CLVD_P2)', 'M1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a9a13188-6665-45de-9d39-3bb5c7743b7b', '0512', '512', 'DCU#2 6위(L3) - 파라미터 로딩 실패', 'M1', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 “Paraneter error” 신호가 “1”이 되면 검지 +', 'Parametererror 현시(출입문은 정상작동 가능)', 'DCU 자체 내의 EEPROM으로부터 parameter데이터 로딩 실패 +', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a9a3a413-c49d-4839-bbb7-4a8320334200', '0511', '511', 'DCU#2 6위(L3)-출입문 닫힘 리미트 스위치2 고장', 'M1', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 "DCS2 Failure(Right)” 신호가 "1"이 되면 검지.', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a9aa6fe1-9ebd-41f9-af55-02cc3486e857', '0205', '205', 'BECU#1-회생제동요구 비정상', 'Tc1', 'C', 'BECU-회생제동요구 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit4 “회생제동요구 비정상” 신호가 "1"이 되면 검지.', '해당 차량 회생제동요구 비정상 검지 현시.', '해당 차량의 회생제동요구 출력이 정상범위를 벗어남.', '해당 차량 회생제동요구 출력이 정상범위로 복귀 시 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a9b223bc-5159-439f-9513-1572f56c5b21', '0221', '221', 'BECU#3-제동력부족(ISBD)', 'M2', 'B', 'BECU-제동력부족(ISBD)', 'B', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit5 “ISBD” 신호가 "1"이 되면 검지.', '해당 차량 제동력 부족 검지 현시 및 해당 차량 제동압력(BCP)이 타 차량에 비해 현저히 낮음.', '제동 7단 취급 시 해당 차량의 제동압력이 생성되지 않음.', '제동 7단 취급 시 정상적인 제동압력이 생성된 경우 소거.', 'MCS모드로 전환 후, 마스콘을 N(중립) -> 제동7단까지 수회취급 하여 소거 여부 확인. 제동 취급 확인 후, 주의 운전 할 것. +지속발생시 관제보고하고 지시에 따를 것.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a9b24d84-37d6-4899-9351-f8487a2503e2', '0731', '731', 'HVAC#8 - 냉난방장치1 리턴 센서 고장', 'Tc2', 'C', 'HVAC-냉난방장치1 리턴 센서 고장', 'C', 'HVAC', '냉난방장치1의 리턴 센서 고장 발생 +', '냉난방장치1 리턴 센서 고장현시', '온도센서 검지범위는 -45 ~ 85도(820 ~ 1,330Ω)인데, 2초 이상 검지범위를 벗어나는 경우 +', '온도센서 검지값이 2초 이상 허용온도 범위 내일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820 ~ 1,330Ω을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a9be0bad-6641-4f02-bd35-1569034f8063', '0207', '207', 'BECU#2-자기진단고장', 'M1', 'C', 'BECU-자기진단고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit6 “RAM 점검 고장” 신호가 "1"이 되면 검지.', '해당 차량 자기진단고장 검지 현시 및 해당 차량 활주제어 불가.', '해당 차량 BECU의 자가진단 시 고장 발생(활주방지밸브 고장).', '해당 차량 BECU의 자가진단 시 정상적일 경우 소거(활주방지밸브 정상).', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a9be950a-7db6-4372-8b14-aba4bd4e3d56', '1104', '1104', 'PSD#1-차상 메모리고장(1계)', 'Tc1', 'C', 'PSD-차상 메모리고장', 'D', 'PSD', 'PSD 의 RS485 데이터 중 PSD-TCMS SD TEXT5(TEXT6)의 Bit6 “차상 메모리고장” 신호가 "1"이 되면 검지. (차상제어장치 로그 기록용 메모리 고장)', '차상장치 이벤트 발생시. (각종 신호) 출입문 열림, 마스콘KEY ON등등 +PSD 열림 닫힘이 연동되는 역사 , 연동되지 않는 역사가 있음. +PSD 고장코드가 지상설비로 전달되면 차상 ERROR코드 Interlock회로에 의하여 차단될수 있으며 이 회로가 적용된 역사는 PSD가 가동되지 않는다. 그외 역사는 전동차 출입문에따라 가동됨.', '로그 기록용 메모리 고장', '메모리 고장이라도 무선통신기능은 정상동작 하므로 기관사는 전동차 출입문 개/폐시 PSD 상태를 주의하여 확인하고, 차상장치 메모리 고장 코드로으로 인하여 PSD 열림 및 닫힘이 동작하지 않는 역사는 조작반으로 수동취급 실시 한다. 기관사는 주의 운행을 한다. +차량사업소 복귀시 해당장치는 점검을 하도록 한다.', null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a9c64f9d-338f-41a4-81ba-3e1e850f67de', '0749', '749', 'HVAC#5 - 380V 전원고장', 'T2', 'C', 'HVAC-380V 전원고장', 'C', 'HVAC', 'HVAC 메인 전원 AC 380V 전원 고장 발생 +', 'HVAC 냉방 및 난방 기능 불가', '차량으로부터 공급되는 AC 380V가 입력되지 않는 경우 +', '차량으로부터 AC 380V 전압이 정상적으로 입력', '1) 차량으로부터 AC 380V 전압이 정상적으로 입력되는지 확인한다. +2) 차량 전원이 정상일 경우, 냉난방 배전반의 CBLVD 차단기가 꺼져 있는지 확인 후, 꺼져있을 경우 켠다. +3) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a9c9560e-e68a-437c-ab82-24c9ba0b84f0', '0502', '502', 'DCU#6 4위(L2) - 출입문 장애물검지', 'M3', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a9de2aa5-d70a-4511-bebf-887f3ce83bea', '0501', '501', 'DCU#4 6위(L3) - 출입문 차단', 'T1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('a9e21d1e-a337-4d0c-bd9a-535bbf5ad77d', '0077', '77', 'PWM 엔코더#1#2 전체 고장', 'Tc1', 'A', 'PWM엔코더 #1 #2전체고장', 'A', 'VVVF', '차량으로부터 PWM ENCODER#1(#2) FAULT 신호 미입력시', '1) 엔코더 1계 PWM 출력 고장시 1계 고장에 해당되는 신호 출력 +2) 엔코더 2계로 자동 절체 +3) 엔코더 2계 PWM 출력 고장시 1계, 2계 고장 모두 출력 +4) 엔코더 PWM 출력 신호 없음', '1) 엔코더 1계 PWM 출력 신호 이상 시 +2) 엔코더 2계 PWM 출력 신호 이상 시 +3) 엔코더 1계, 2계 PWM 출력 신호 이상 시 +4) 엔코더 수동절체버튼 3초 이상 조작 시', '1) 엔코더의 전원 차단 후 재투입하여 소거되는지 확인 +2) 수동절체버튼의 조작으로 인한 고장 출력 또한 전원 재투입으로 소거함', '1) 엔코더의 전원 차단 후 재투입하여 소거되지 않을 시 정상품으로 교체하여 정상동작 확인 +2) 교체된 고장품의 고장원인 분석', ' +REC20210HN0', '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('a9f6a42f-7ef3-4c11-8de9-d91e013a4ea8', '0512', '512', 'DCU#8 3위(R2)-파라미터 로딩 실패', 'Tc2', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 "Paraneter error” 신호가 "1"이 되면 검지.', 'Parameter error 현시 (출입문은 정상작동 가능)', 'DCU 자체내의 EEPROM으로부터 parameter 데이터 로딩 실패', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('aa05adba-f031-44ee-94dc-e55537c19af7', '0733', '733', 'HVAC#3 - 전자접촉기 압축기(CRCM)4 고장', 'M2', 'C', 'HVAC-전자접촉기 압축기(CRCM)4 고장', 'C', 'HVAC', 'HVAC 냉방 작동 중 CRCM4 전자접촉기 고장 발생 +', '냉방 기능 저하(전냉방 시 반냉방으로 작동)', '냉방 작동 중 2.5초 이상 동안 CRCM4 작동 feedback 신호가 수신되지 않는 경우 +', 'CRCM4 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CRCM4를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRCM4와 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('aa1b051f-476f-442f-8080-9c0e4efdd0a6', '0513', '513', 'DCU#6 1위(R1)-모듈 상태체크 에러', 'M3', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 "Module check error” 신호가 "1"이 되면 검지.', 'Module check error 현시 (출입문은 정상작동 가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태체크 기능에 이상이 생긴 경우 고장 발생.', 'DCU의 'A'모듈과 'B'모듈 간, 상태체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('aa3c7f01-6a5f-4e90-aca6-097051b3f8f9', '0742', '742', 'HVAC#3 - 전자접촉기 보조히터3(AHEK) 고장', 'M2', 'C', 'HVAC-전자접촉기 보조히터3(AHEK) 고장', 'C', 'HVAC', 'HVAC 보조난방기 작동 중 AHEK3 전자접촉기 고장 발생 +', 'UNIT2 보조난방기 전난방 시 반난방만 작동', '보조난방기 작동 중 2.5초 이상 동안 AHEK3 작동 feedback 신호가 수신되지 않는 경우 +', 'AHEK3 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) AHEK3을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, AHEK3과 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('aa5c6bef-4898-4cee-9a78-9ceefd01417f', '0515', '515', 'DCU#7 6위(L3) - 출입문 열림 시간 초과', 'M4', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 “Open time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 열림 동작시간이 6초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도한 후, ‘장애물로 인한 열림 실패' 고장과 함께 ‘Open time out' 고장이 함께 현시 +', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('aa6c4691-5d18-45a9-acd9-74ecca7cd1ef', '0516', '516', 'DCU#3 1위(R1)-출입문 장애물로 인한 닫힘 실패', 'M2', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Close failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림상태로 대기', '도어 닫힘 중 3회 장애물 감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('aa6f7c24-dcfc-4e4c-a8d1-67fdba7b63e5', '0126', '126', 'VVVF-접촉기 이상검지(CNTF) (Car2)', 'M1', 'C', 'VVVF-접촉기 이상검지(CNTF)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT33의 Bit7 “CNTF” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 '접촉기 이상검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) LB Box내부의 HSCB, LB1,2의 동작에 이상이 발생한 경우 검지됨..', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반배전반의 VVVFIC nfb 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 이상동작인 접촉기(HSCB, LB1, +2)를 확인한다. +3) LB Box와 추진제어장치간 배선의 연결 상태를 확인한다. +4) 추진제어장치 내부의 릴레이 유닛에 정상동작여부를 확인한다. +4) DIN 보드의 동작상태를 시험기를 통해 확인한다. +5) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.578803+00', null, '다대48량(2015)', 'Rotem'), ('aab198ae-5ec5-461a-acfd-29065bb4ec87', '0721', '721', 'HVAC#5-냉난방장치2 압력스위치2(DPS) 냉매부족', 'T2', 'C', 'HVAC-냉난방장치2 압력스위치2(DPS) 냉매부족', 'C', 'HVAC', '냉난방장치2 냉매 압력스위치2 저압 발생.', 'UNIT2 CYCLE2 냉방 기능 불가', 'UNIT2 DSP2측 냉매 압력이 30초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우', '냉매 압력이 정상 수치 2±0.5(kgf/cm2 이상 유지하도록 하고, 마이콤 전원을 리셋', '1) 배전반 점검 커버를 열고 마이콤 전원을 리셋한 후, 냉방 가동 시, CREF4의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)을 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안되는 것을 확인한 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('aab5f74b-65ec-4622-86ab-5d2e3fb72f29', '0202', '202', 'BECU#5-덤프밸브고장(전두대차)', 'T2', 'C', 'BECU-덤프밸브고장(선두대차)', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit1 “덤프밸브고장(선두대차)” 신호가 "1"이 되면 검지.', '해당 차량 덤프밸브고장(선두대차) 검지 현시 및 해당 차량 활주제어 불가.', '해당 차량 선두대차의 덤프밸브가 작동하지 않음.', '해당 차량 선두대차의 덤프밸브가 정상 작동 시 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('aac845d9-de57-49e6-b3c5-9c84c233ef33', '0502', '502', 'DCU#2 2위(L1) - 출입문 장애물검지', 'M1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('aacac66e-f58e-46b0-ba71-63f941871147', '0707', '707', 'HVAC#3 - 냉난방장치2 증발기1 과부하', 'M2', 'C', 'HVAC-냉난방장치2 증발기1 과부하', 'C', 'HVAC', 'HVAC 냉방 작동 중 냉난방장치2 증발기 모터에 과부하 발생 +', 'UNIT2냉방기능불가', ' +1) 냉방 작동 중 UNIT2의 증발기 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CREF3과 연결된 THR7이 Trip 됨. +', 'UNIT2의 증발기모터의 과부하조건을 해소하여 정상 가능 상태로 만들고, THR7 및 마이콤 전원 리셋', '1) 냉난방 배전반의 점검커버를 열고, THR7의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR7의 전류 세팅값이 3A에 맞춰져 있는지 확인하여, 아닐 경우, (+) 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동시킨 후, THR7의 2차측 2, 4, 6 단자에서 각 단자 간 상간 전압이 AC 380V로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 증발기 단품 상태 에서 점검을 한다. +7) THR7의 2차측 2, 4, 6 단자에서 각 단자 간 권선저항이 모두 같은지 확인한다. (±10% 이하) (증발기 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT2의 증발기 모터의 결선을 해제한 후 4극 및 6극 모터의 권선저항을 확인 후, 문제가 있을 경우, 증발기 모터를 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR7 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('aad25526-31c0-4b98-a522-4fdd5e251ea7', '0500', '500', 'DCU#5 4위(L2) 통신고장', 'T2', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS 간 RS485 통신고장이 검지되면 발생 +', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐상태 등의 변화가 없음.', ' +1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우 +', '해당 차량의 DCU 및 CU/TU의 전원이 정상상태이고, 통신 라인 연결 상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜져 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적 으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는 데도 지속적으로 통신고장이 검지되면, DCU의 X2, X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상 체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('aad48866-6230-4ab6-9057-5f92047f9d27', '0503', '503', 'DCU#7 4위(L2) - 출입문 내부 비상핸들 취급(EED)', 'M4', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('aaff55f0-4260-4035-b8c2-ae2d22a33ad6', '0521', '521', 'DCU#6 6위(L3)-모듈 상태 이상', 'M3', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 "01"또는 "00"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ab076470-e4ee-4432-9a25-896a29716f14', '0521', '521', 'DCU#5 2위(L1) - 모듈 상태 이상', 'T2', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 “01” 또는 “00”이 되면 +검지 +', '이중계절체동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러)이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ab0cd14d-9ab2-402e-875e-061880e6c238', '0123', '123', 'VVVF-역행/회생 이상 검지(PBF) (Car6)', 'M3', 'C', 'VVVF-역행/회생 이상 검지(PBF)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT33의 Bit4 “PBF” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 '역행/회생 신호이상검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치 입력되는 역행/제동신호가 동시에 입력될 경우 검지됨.', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반배전반의 VVVFIC nfb 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 역행/제동신호에 이상이 있는지 확인한다.. +3) 차량의 제어회로 중 역행/제동 신호가 추진제어장치로 연결되는 경로에 이상이 없는지 확인한다. +4) DIN 보드의 동작상태를 시험기를 통해 확인한다. +5) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.656536+00', null, '다대48량(2015)', 'Rotem'), ('ab2c6e64-246d-4adc-8279-461d20517c6b', '0223', '223', 'BECU#7-공기스프링누설(전두대차)', 'M4', 'C', 'BECU-공기스프링누설(전두대차)', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit6 “공기스프링누설(전두대차)” 신호가 "1"이 되면 검지.', '해당 차량 공기스프링누설(전두대차) 검지 현시 및 해당차량 정상적인 제동제어 불가.(응하중 제어)', '해당 차량 전두대차의 공기스프링(AS1, AS2) 압력이 정상범위를 벗어남.(100kPa 미만)', '해당 차량 전두대차의 공기스프링(AS1, AS2) 압력이 정상범위일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ab48e557-091c-44fc-9c40-a70aac040682', '0516', '516', 'DCU#3 4위(L2) - 출입문 장애물로 인한 닫힘 실패', 'M2', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Close failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림 상태로 대기', '도어 닫힘 중 3회 장애물감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ab5d6207-95d6-4e02-af3f-4875c25a0f2b', '0208', '208', 'BECU#6 - 공기제동장치 고장', 'M3', 'C', 'BECU-공기제동장치고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit7 “공기제동장치고장” 신호가 “1”이 되면 검지 +', '해당 차량 공기제동장치 고장검지 현시 및 해당 차량 정상적인제동제어불가', '해당 차량 BECU의 자가진단 시 고장 발생 또는 AC 압력센서 고장 +', '해당 차량 BECU의 자가진단 시 정상적일 경우 또는 AC 압력센서가 정상일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ab5f3f9e-13d3-4246-be66-c5e951e24d3f', '0178', '178', 'VVVF#7 - LB2 고착(LB2NO)', 'M4', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ab769b79-9931-4024-acd9-0c4668867614', '0046', '46', '비상판토 트립(Car7)', 'M4', 'W', '비상판토 트립 (Car7)', 'W', '기타', '차량으로부터 NO EMERGENCY PANTO TRIP 신호 미입력 시 +', '판도 하강 및 VVVF, SIV 고압 차단', '가선 차단 +', '판토 하강 및 가선 투입', null, '회로 도면 : REC40400DX0', '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ab866b3a-b6ff-4c2d-bec2-b511b3e9bb38', '0700', '700', 'HVAC#4 통신고장', 'T1', 'C', 'HVAC-통신고장', 'C', 'HVAC', 'HVAC와 TCMS 간 RS485 통신고장이 검지되면 발생 +', '화면상 HVAC의 실내온도, 운전모드 등의 데이터가 반응하지 않음.', ' +1) 마이콤 전원 CB OFF +2) 통신연결 불량 +3) 해당 마이콤이 검수요원에 의해 firmware 업데이트 중인 경우 +', '해당 차량의 마이콤 및 CU/TU의전원이정상상태이고, 통신라인 연결 상태가 정상', '1) 냉난방 배전반의 점검커버를 열고, 마이콤이 정상적으로 켜져 있는지 확인한다. +2) 만약 마이콤 전원이 꺼져 있다면, 마이콤 DC 전원 CB 및 차량 배전반에 위치한 냉난방장치 CB가 정상적으로 켜져 있는지 확인한다. +3) 마이콤이 정상적으로 켜져 있는 데도 지속적으로 통신고장이 검지되면, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀 밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ab8a9704-7fad-4d8e-9b3e-8c0602ff007f', '0513', '513', 'DCU#1 2위(L1)-모듈 상태체크 에러', 'Tc1', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 "Module check error” 신호가 "1"이 되면 검지.', 'Module check error 현시 (출입문은 정상작동 가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태체크 기능에 이상이 생긴 경우 고장 발생.', 'DCU의 'A'모듈과 'B'모듈 간, 상태체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('aba99d7b-e8ef-4ed6-ada9-cea07d632c5e', '0504', '504', 'DCU#5 2위(L1) - 출입문 외부 비상핸들 취급(EAD)', 'T2', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('abab07a4-bcef-409b-9ce0-0a6210d66ba4', '0888', '888', '실내카메라#1(SCAM) 고장(Car#8)', 'Tc2', 'C', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('abaca004-1c81-418c-835b-cb9902974fc0', '0517', '517', 'DCU#8 5위(R3)-출입문 장애물로 인한 열림 실패', 'Tc2', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Open failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘상태로 대기', '도어 열림 중 3회 장애물 감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 열림 시, 장애물 감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('abaf7e22-ebca-4baa-b32d-4d722f467e78', '0707', '707', 'HVAC#4 - 냉난방장치2 증발기1 과부하', 'T1', 'C', 'HVAC-냉난방장치2 증발기1 과부하', 'C', 'HVAC', 'HVAC 냉방 작동 중 냉난방장치2 증발기 모터에 과부하 발생 +', 'UNIT2냉방기능불가', ' +1) 냉방 작동 중 UNIT2의 증발기 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CREF3과 연결된 THR7이 Trip 됨. +', 'UNIT2의 증발기모터의 과부하조건을 해소하여 정상 가능 상태로 만들고, THR7 및 마이콤 전원 리셋', '1) 냉난방 배전반의 점검커버를 열고, THR7의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR7의 전류 세팅값이 3A에 맞춰져 있는지 확인하여, 아닐 경우, (+) 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동시킨 후, THR7의 2차측 2, 4, 6 단자에서 각 단자 간 상간 전압이 AC 380V로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 증발기 단품 상태 에서 점검을 한다. +7) THR7의 2차측 2, 4, 6 단자에서 각 단자 간 권선저항이 모두 같은지 확인한다. (±10% 이하) (증발기 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT2의 증발기 모터의 결선을 해제한 후 4극 및 6극 모터의 권선저항을 확인 후, 문제가 있을 경우, 증발기 모터를 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR7 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('abd4e51d-686e-44ad-8377-7f74a30b84a6', '0503', '503', 'DCU#2 3위(R2) - 출입문 내부 비상핸들 취급(EED)', 'M1', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('abf10653-524c-44ce-9742-7fdcbfe9a4ff', '0508', '508', 'DCU#3 3위(R2)-출입문 모터/인코더 고장', 'M2', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 "Motor / Encoder failure” 신호가 "1"이 되면 검지.', '출입문 정상동작 불가', '1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우 (인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터 / 인코더 회로가 손상된 경우', '모터/인코더 및 DCU가 정상상태이고, 전기적 연결상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있느지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. +★ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. + +1. DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. +2. DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) +3. DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('abf73f25-88e5-49e7-8372-0054fe71da10', '0231', '231', 'BC 코크(차상) 차단(Car8)', 'Tc2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('abf88aa0-195c-4b43-b7bf-af1e52567d21', '0724', '724', 'HVAC#5-냉난방장치1 압력스위치1(DPS) 냉매부족', 'T2', 'C', 'HVAC-냉난방장치1 압력스위치1(DPS) 냉매부족', 'C', 'HVAC', '냉난방장치1 냉매 압력스위치1 저압 발생.', 'UNIT1 CYCLE1 냉방 기능 불가', 'UNIT1 DSP1측 냉매 압력이 30초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우', '냉매 압력이 정상 수치 2±0.5(kgf/cm2 이상 유지하도록 하고, 마이콤 전원을 리셋', '1) 배전반 점검 커버를 열고 마이콤 전원을 리셋한 후, 냉방 가동 시, CREF2의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)을 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안되는 것을 확인한 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ac06ad30-b8d7-4cdb-ada2-22c3266086ad', '0500', '500', 'DCU#2 1위(R1) 통신고장', 'M1', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS 간 RS485 통신고장이 검지되면 발생 +', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐상태 등의 변화가 없음.', ' +1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우 +', '해당 차량의 DCU 및 CU/TU의 전원이 정상상태이고, 통신 라인 연결 상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜져 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적 으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는 데도 지속적으로 통신고장이 검지되면, DCU의 X2, X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상 체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ac17cb71-4fb7-4e07-895b-deec85f43e72', '0511', '511', 'DCU#5 2위(L1) - 출입문 닫힘 리미트 스위치2 고장', 'T2', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 “DCS2 Failure(Right)” 신호가 “1”이 되면 검지 +', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ac186d37-5b3d-436d-95bb-f44b25b45466', '0881', '881', '측면제어기(SOB) 돌출형 고장(Car#8)', 'Tc2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ac2acaab-27b1-4598-a3e1-8a2917cd8280', '1411', '1411', 'BMS#8 - 충전고온(COT, 45도 이상)', 'Tc2', 'D', 'BMS-충전고온(COT)', 'D', 'BMS', '해당 차량의 배터리 온도가 57도 이상이 되면 검지 +', '차량 배터리충전고온검지 후, 60도 이상이면 충전접촉기(CK)가 차단된다.', '배터리충전고온(57도 이상) +', '배터리충전고온정상범위로 회복(55도 이하)', '1) 배터리 NFB 상태 확인 +2) 이상이 없으면 차량 전체를 리셋한다. +3) 차량 리셋 후에도 동일고장이면 사령실과 연락하여 조치를 취한다. (배터리를 상온조건으로 만든다.)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ac2c9c44-06eb-4c25-ad6b-ff67318bfc32', '0173', '173', 'VVVF#7 - 전류센서 이상검지(CTERR)', 'M4', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ac31dacb-17d4-4d73-ae04-662123278a03', '0914', '914', 'TRAIN RADIO#8 - DID(표출연동장치) 고장', 'Tc2', 'C', 'TRAIN RADIO-DID(표출연동장치) 고장', 'C', 'TRS', 'Train Radio의 E-NET 데이터 중 Train Radio-TCMS SD TEXT15의 Bit2 “DID 고장” 신호가 “1”이 되면 +검지 +', 'CCTV 모니터 장치에 열차위치 정보표시 불가', 'HW 고장 +', '제어기 리셋', null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ac346425-5b98-49f4-b683-22a708467047', '0144', '144', 'VVVF#3-HSCB 트립검지(HBT)', 'M2', 'B', 'VVVF-HSCB 트립검지(HBT)', 'B', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT30의 Bit1 “HBT” 신호가 "1"이 되면 검지.', null, '1) HSCB의 자체 과전류 보호에 의하여 트립이 발생했을 때 고장검지. +2) 1분 이내 3회 발생 시 중고장.', '1) 경고장 +역행 고장검지 2초 후 자동 재기동 제동 제동 OFF시 고장 소거 +2) 중고장 +동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 고장기록의 FC 전압 및 입력전류 확인. +3) 추진제어장치 내부에 접지흔적 확인 및 고압회로 점검. +4) 전류/전압 센서의 외관 상태와 저전압 배선상태를 확인한다. +5) 추진제어장치 시험기를 이용하여 TCU(통합제어장치)의 이상여부를 확인한다. +6) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +7) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ac34eb8a-cc06-464f-98d7-8d324135b610', '0513', '513', 'DCU#8 5위(R3) - 모듈 상태체크 에러', 'Tc2', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 “Module check error” 신호가 “1”이 되면 검지 +', 'Modulecheckerror현시(출입문은 정상작동가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태 체크 기능에 이상이 생긴 경우 고장 발생 +', 'DCU의 ‘A' 모듈과 ‘B' 모듈 간, 상태 체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ac3e945c-1136-4cee-9df2-e50883d2015c', '0184', '184', '역행관련 회로차단기 차단(Car2)', 'M1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ac3f365c-41d9-4d21-b040-d86d77e20425', '0148', '148', 'VVVF#2-FC 과전압검지(OVD1)', 'M1', 'C', 'VVVF-FC 과전압검지(OVD1)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT30의 Bit5 “OVD1” 신호가 "1"이 되면 검지.', null, '필터캐패시터의 전압이 2000V 이상 승압 시 고장발생.', '1) 경고장 +역행 고장검지 3초 후 자동 재기동 +제동 제동 OFF시 고장 소거 +2) 중고장 +동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 FC전압에 이상이 있는지 확인한다. +3) 추진제어장치 내부 고전압부에 소손흔적이 있는지 확인한다. +4) FC에 연결된 버스바의 체결상태가 양호한지 확인한고, 버스바를 분리하여 FC의 Capacitance를 측정하여 이상이 없는지 확인한다. +5) 전압센서의 외관 및 단자 체결상태를 확인한다. +6) 추진제어장치 시험기를 이용하여 TCU(통합제어장치)의 이상여부를 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ac46f657-e724-4c53-b010-fe0f3894ca38', '0157', '157', 'VVVF#6 - FC충전불량(FCD)', 'M3', 'C', 'VVVF-FC 충전불량검지(FCD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT33의 Bit6 “FCD” 신호가 “1”이 되면 검지 +', '1) TCMS 화면 하단 또는 고장화면에 ‘FC 충전 불량 검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생함. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉은색으로 표기되며, HSCB, LB1, 2 개방되어 동력 손실 발생함.', '추진제어장치 기동 시 FC전압이 1,000V 이하일 경우 검지됨. +', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반 배전반의 VVVFIC nfb 재투입 또는 차량 배터리 전원 재투입', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 FC전압에 이상이 있는지 확인한다. +3) 추진제어장치 내부 고전압부에 소손흔적이 있는지 확인한다. +4) LB Box 내부의 충전저항기의 소손이 없는지 확인한다. +5) FC에 연결된 부스바의 체결상태가 양호한지 확인한고, 부스바를 분리하여 FC의 Capacitance를 측정하여 이상이 없는지 확인한다. +6) 전압센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +7) SEN 보드의 동작 상태를 시험기를 통해 확인한다. +8) 견인전동기 각상의 절연상태 및 각상과 접지 간의 절연상태를 확인한다. +9) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ac591a08-ded5-4866-8d98-25079aaff561', '0753', '753', 'HVAC#1 - 배기댐퍼 열림고장', 'Tc1', 'C', 'HVAC-배기댐퍼 열림고장', 'C', 'HVAC', '환기 시, 차량 배기댐퍼가 열려 있는 상태에서 배기댐퍼 열림 리미트 스위치가 작동되지 않음 +', '배기댐퍼 열림 고장 현시', '배기댐퍼를 열림으로 제어했으나 열림 리미트 스위치 입력이 없을 경우 +', '배기댐퍼 열림상태에서 리미트 스위치 입력이 정상적으로 입력', '1) 배기댐퍼가 열린 상태에서 열림 리미트 스위치가 정상적으로 작동되었는지 확인한다. +2) 열림 리미트 스위치가 정상작동 되었음에도 문제가 발생될 경우, 스위치를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ac6dd67d-89a8-4532-a34c-b3401033fb11', '0427', '427', 'IVS 서비스위치 아님(Car1)', 'Tc1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ac779e18-3c18-4443-9d20-e532593feb79', '0512', '512', 'DCU#3 4위(L2) - 파라미터 로딩 실패', 'M2', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 “Paraneter error” 신호가 “1”이 되면 검지 +', 'Parametererror 현시(출입문은 정상작동 가능)', 'DCU 자체 내의 EEPROM으로부터 parameter데이터 로딩 실패 +', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ac944d12-049a-443b-9f6a-b3061899acc3', '1105', '1105', 'PSD#8-차상 RF고장(1계)', 'Tc2', 'C', 'PSD-차상 RF고장', 'C', 'PSD', 'PSD 의 RS485 데이터 중 PSD-TCMS SD TEXT5(TEXT6)의 Bit7 “차상 RF 고장” 신호가 "1"이 되면 검지. (차상장치 RF 고장)', 'PSD 지상장치 통신 연결 또는 전원 ON시 NG발생 +역사내 진입전 NG 발생 -> 역사내 진입후 NG 복귀 등의 현상이 일어날 경우', '차상장치내 무선모듈의 불량이 주원인이며, 설정 및 채널 변경오류시 발생됨.', '운전실 후부 PSD CN을 OFF - ON 실시하고 복귀가 되지 않을 경우 PSD 조작반을 취급하여 운행한다. 차량사업소 복귀후 해당 차상장치 점검을 한다.', null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ac9dfd48-0dd2-42cd-9fa0-2a09b8b35adc', '0503', '503', 'DCU#6 6위(L3)-출입문 내부비상핸들 취급(EED)', 'M3', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('aca6ba98-0ead-4f2d-8add-fb1b1e64ae8e', '0206', '206', 'BECU#4 - RAM 점검 고장', 'T1', 'C', 'BECU-RAM 점검 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit5 “RAM 점검 고장” 신호가 “1”이 되면 검지 +', '해당 차량 RAM 점검 고장검지 현시 및 해당 차량 정상적인 제동제어 불가', '해당 차량 BECU의 자가진단 시 고장 발생 +', '해당 차량 BECU의 자가진단 시 정상적일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('acac5988-0dd5-42e1-818c-f85b3ec7a168', '1501', '1501', '차상신호장치(ATC) 회로차단기 차단(Car1)', 'Tc1', 'W', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('acb97f00-39bb-4b4e-9be7-6a96b5aeb9eb', '0520', '520', 'DCU#1 2위(L1)-이중계 절체 동작', 'Tc1', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 "Module switchover' 신호가 "1"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('acc741f4-0b6c-43d4-b6c1-aaf6895d89bd', '0514', '514', 'DCU#3 3위(R2) - 출입문 닫힘 시간 초과', 'M2', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 “Close time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 닫힘 동작 시간이 7초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도한 후, ‘장애물로 인한 닫힘 실패' 고장과 함께 ‘Close time out' 고장이 함께 현시 +', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('acd5e904-7050-461c-bf83-0758b00d0986', '0513', '513', 'DCU#8 5위(R3)-모듈 상태체크 에러', 'Tc2', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 "Module check error” 신호가 "1"이 되면 검지.', 'Module check error 현시 (출입문은 정상작동 가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태체크 기능에 이상이 생긴 경우 고장 발생.', 'DCU의 'A'모듈과 'B'모듈 간, 상태체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('acd64ee8-274f-4a73-a239-a64b858ee5bb', '0520', '520', 'DCU#1 3위(R2)-이중계 절체 동작', 'Tc1', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 "Module switchover' 신호가 "1"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.392739+00', null, '로템40량(2018)-1단계', 'Rotem'), ('acd9d4ca-fda5-4421-b3fc-f6f5c324fc2e', '0832', '832', '출력증폭기#2(AMP) 고장(Car#3)', 'M2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('acddde3c-fe3f-4f86-963f-5e13b9a32963', '0229', '229', 'AS 코크#1 차단(Car6)', 'M3', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('aceec181-3fde-47c9-a38e-b03190e7f339', '1203', '1203', 'FDU#3-감지기2 화재감지', 'M2', 'W', 'FDU-감지기2 화재감지', 'W', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 "Detector1 State” 신호가 "11"이 되면 검지.', '화재상태 현시(자동 소거 안됨)', '하기 2가지 조건을 모두 만족하여야 화재신호가 출력 됨(연동모드 동작). +1) 이웃한(앞 혹은 뒤에 위치한) 감지기 중 하나의 감지기라도 주의 혹은 화재상태에 있어야 함. +2) Detector1(해당 감지기)에서 측정된 연기농도가 15% 이상이거나 온도가 65℃ 이상인 경우', '1) FDU의 복귀버튼 조작시 +2) FDU 전원 리셋시', '1) 해당 감지기 위치의 화재 발생 여부 확인 +2) 화재 오 감지일경우 FDU의 복귀버튼 취급 +3) 오감지일경우 감지기의 청소주기 확인(내부 먼지 제거)', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('acf4752d-a2f2-4ffc-bda4-b4a1da0e71c4', '0514', '514', 'DCU#7 5위(R3)-출입문 닫힘 시간 초과', 'M4', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 "Close time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 닫힘 동작시간이 7초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도 한 후, '장애물로 인한 닫힘실패' 고장과 함께 'Close time out' 고장이 함께 현시', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('acffefb3-be19-4366-986b-72469e61d73d', '0508', '508', 'DCU#6 2위(L1)-출입문 모터/인코더 고장', 'M3', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 "Motor / Encoder failure” 신호가 "1"이 되면 검지.', '출입문 정상동작 불가', '1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우 (인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터 / 인코더 회로가 손상된 경우', '모터/인코더 및 DCU가 정상상태이고, 전기적 연결상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있느지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. +★ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. + +1. DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. +2. DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) +3. DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ad0135c2-d50b-4902-a966-dcf18254d389', '0519', '519', 'DCU#4 6위(L3) - ZVR 신호 에러', 'T1', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 “ZVR signal error” 신호가 “1”이 되면 검지 +', '출입문이강제로 닫히게 되고, 열림은 불가능', ' +1) 차량 ZVR 신호가 없는 상태(차량 주행상태)에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함. +', '해당 출입문 ZVR 신호 수신', '1) 차량 이 주행중이라면, 차량 이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ad08e594-5d54-4fef-9692-0ced7c075d98', '0515', '515', 'DCU#2 5위(R3) - 출입문 열림 시간 초과', 'M1', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 “Open time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 열림 동작시간이 6초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도한 후, ‘장애물로 인한 열림 실패' 고장과 함께 ‘Open time out' 고장이 함께 현시 +', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ad150ea8-2468-4479-897f-6f42b3e1bf52', '0519', '519', 'DCU#3 6위(L3)-ZVR 신호 에러', 'M2', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 "ZVR signal error” 신호가 "1"이 되면 검지.', '출입문이 강제로 닫히게 되고, 열림은 불가능', '1) 차량 ZVR 신호가 없는 상태 (차량 주행상태) 에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함.', '해당출입문 ZVR 신호 수신', '1) 차량이 주행중이라면, 차량이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.392739+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ad15f6e9-cb0a-45b6-92db-dd22c8f8b6a3', '0502', '502', 'DCU#3 2위(L1)-출입문 장애물검지', 'M2', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ad16bed9-35ea-43df-bc78-d2f772d00de1', '0741', '741', 'HVAC#8 - 전자접촉기 보조히터4(AHEK) 고장', 'Tc2', 'C', 'HVAC-전자접촉기 보조히터4(AHEK) 고장', 'C', 'HVAC', 'HVAC 보조난방기 작동 중 AHEK4 전자접촉기 고장 발생 +', 'UNIT2 보조난방기 전난방 시 반난방만 작동', '보조난방기 작동 중 2.5초 이상 동안 AHEK4 작동 feedback 신호가 수신되지 않는 경우 +', 'AHEK4 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) AHEK4를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, AHEK4와 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ad170597-ba3b-48ce-a3fc-7759c54ad0b3', '0306', '306', 'ATC#1-PSD열림 검지로 인한 역행불가', 'Tc1', 'C', 'ATC-PSD열림 검지로 인한 역행불가', 'C', 'ATC', 'ATC의 RS485 데이터 중 ATC-TCMS SD TEXT11의 Bit1 “Propulstion Block by detecting PSD open” 신호가 "1"이 되면 검지.', '실제 PSD가 닫혔음에도 MMI화면에 PSD 열림표시가 유지 되어있다.', 'FA/AUTO모드에서 ZV(영속도) 및 제한속도가 0Km/h이상 일때 PSD 차상장치가 열림으로 수신 시', 'PSD가 실제로 닫힘으로 수신된다.', '1) MMI화면에 PSD가 닫힘으로 표시되었는지 확인한다. +2) PSD차상장치 고장으로 인해 PSD닫힘 수신 불가 시, 자동운행 불가상태로 관제에 이를 통보 후 조치한다.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ad288b80-53d0-4fa4-9a91-a93fef9f3219', '0518', '518', 'DCU#2 5위(R3) - 출입문 Enable 신호 에러', 'M1', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 “Enable signal error” 신호가 “1”이 되면 검지 +', 'DCU 출입문Enable신호에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드 시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을 때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드 시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입 상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호 장치로부터의 출입문 열림 명령 신호) 취급 시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함. +', '해당 출입문 enable 신호수신', '1) AUTO/MCS 모드 시에는 YARD 모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인 한다. (YARD/FMC 모드 시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ad304fca-335a-4753-b833-8b43c0606f80', '0734', '734', 'HVAC#7 - 전자접촉기 압축기(CRCM)3 고장', 'M4', 'C', 'HVAC-전자접촉기 압축기(CRCM)3 고장', 'C', 'HVAC', 'HVAC 냉방 작동 중 CRCM3 전자접촉기 고장 발생 +', '냉방 기능 저하(전냉방 시 반냉방으로 작동)', '냉방 작동 중 2.5초 이상 동안 CRCM3 작동 feedback 신호가 수신되지 않는 경우 +', 'CRCM3 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CRCM3을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRCM3과 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ad3a5c3e-b0b4-4e00-96a9-383e9266745c', '0500', '500', 'DCU#3 1위(R1) 통신고장', 'M2', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS 간 RS485 통신고장이 검지되면 발생 +', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐상태 등의 변화가 없음.', ' +1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우 +', '해당 차량의 DCU 및 CU/TU의 전원이 정상상태이고, 통신 라인 연결 상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜져 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적 으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는 데도 지속적으로 통신고장이 검지되면, DCU의 X2, X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상 체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ad40973c-de01-4cac-8521-2192597d1c6f', '0231', '231', 'BC 코크(차상) 차단(Car4)', 'T1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ad5f82b9-bb38-44f2-9e73-320b605b2251', '0738', '738', 'HVAC#1-전자접촉기 증발기3(CREF) 고장', 'Tc1', 'C', 'HVAC-전자접촉기 증발기3(CREF) 고장', 'C', 'HVAC', 'HVAC 냉방작동 중 CREF3 전자접촉기 고장 발생.', 'UNIT2 냉방 작동 불가', '냉방작동 중 2.5초 이상동안 CREF3 작동 feedback 신호가 수신되지 않는 경우', 'CREF3 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CREF3을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CREF3과 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ad63e9db-ef11-4fcb-9e17-6a3b1d069322', '0503', '503', 'DCU#1 1위(R1) - 출입문 내부 비상핸들 취급(EED)', 'Tc1', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ad6add1d-1c44-465c-9c06-787bd44ea9e2', '0515', '515', 'DCU#1 5위(R3) - 출입문 열림 시간 초과', 'Tc1', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 “Open time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 열림 동작시간이 6초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도한 후, ‘장애물로 인한 열림 실패' 고장과 함께 ‘Open time out' 고장이 함께 현시 +', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ad72b3e0-f12c-4e56-b2e8-f147e2ae63bc', '0505', '505', 'DCU#5 6위(L3)-출입문 입력 고전압', 'T2', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 "1"이 되면 검지.', '고전압 상태. (그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ad84cc11-339f-4062-96f0-52cc220c8983', '0200', '200', 'BECU#5 통신고장', 'T2', 'B', 'BECU-통신고장', 'B', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT23의 ‘Life sign'이 변하지 않음. +', '해당 차량 통신고장현시 및 해당 차량의 제동압력(BCP) 등의 데이터가 반응하지 않음. (고장은 현시되나 제동제어는 정상적일 수 있음.)', 'BECU 전원 CBOFF 혹은 통신연결 불량 +', 'BECU와 TCMS 간 RS485 통신이 복귀되어 BECU-TCMSSDTEXT23의'Lifesign'이 변동 시 소거', 'BECU를 리셋(BECUCBOFF/ON) 후 복귀여부를 확인, 리셋 후 복귀되지 않을 경우 관제 보고하고 지시에 따를 것', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ad8d1706-4839-4877-8eba-a73912a35f30', '0701', '701', 'HVAC#2-냉난방장치2 압축기2 과부하', 'M1', 'C', 'HVAC-냉난방장치2 압축기2 과부하', 'C', 'HVAC', 'HVAC 냉방작동 중 냉난방장치2 압축기2 또는 응축기2 모터에 과부하 발생.', '냉방 기능 저하(전냉방시 반냉방으로 작동)', '1) 냉방작동 중 UNIT2의 압축기2 또는 응축기2 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRCM4와 연결된 THR4가 Trip 됨.', 'UNIT2의 압축기2 또는 응축기2 모터의 과부하 조건을 해소하여 정상 가능 상태로 만들고, THR4 및 마이콤 전원 리셋', '1) 냉난방배전반의 점검커버를 열고, THR4의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR4의 전류 세팅값이 11.5A에 맞춰져 있는지 확인하여, 아닐 경우, 십자 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동 시킨 후, THR4의 2차측 2,4,6 단자에서 각 단자간 상간 전압이 AC 380V으로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 압축기 및 응축기 단품 상태에서 점검을 한다. +7) THR4의 2차측 2,4,6 단자에서 각 단자간 권선저항이 모두 같은지 확인한다. (±10% 이하) (압축기2 및 응축기2 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT2의 압축기2 또는 응축기2 모터의 결선을 해제한 후 각 부품의 권선저항을 확인 후, 문제가 있는 부품을 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR4 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('adab62fa-685c-464c-96a7-edcfb4d3f214', '0519', '519', 'DCU#2 3위(R2)-ZVR 신호 에러', 'M1', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 "ZVR signal error” 신호가 "1"이 되면 검지.', '출입문이 강제로 닫히게 되고, 열림은 불가능', '1) 차량 ZVR 신호가 없는 상태 (차량 주행상태) 에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함.', '해당출입문 ZVR 신호 수신', '1) 차량이 주행중이라면, 차량이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.392739+00', null, '로템40량(2018)-1단계', 'Rotem'), ('adad4fc6-415b-4155-b1e4-25ee57db6c53', '0505', '505', 'DCU#3 4위(L2)-출입문 입력 고전압', 'M2', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 "1"이 되면 검지.', '고전압 상태. (그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('adb3edf6-d42d-4524-ab49-84d2d591af7e', '0163', '163', 'VVVF#2-FC과전압검지2(OVD2)', 'M1', 'C', 'VVVF-FC과전압검지2(OVD2)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT32의 Bit4 “OVD2” 신호가 "1"이 되면 검지.', null, 'FC전압 1850V이상 도달 시 고장검지', '제동 OFF', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 FC전압에 이상이 있는지 확인한다. +3) 추진제어장치 내부 고전압부에 소손흔적이 있는지 확인한다. +4) FC에 연결된 버스바의 체결상태가 양호한지 확인한고, 버스바를 분리하여 FC의 Capacitance를 측정하여 이상이 없는지 확인한다. +5) 전압센서의 외관 및 단자 체결상태를 확인한다. +6) 추진제어장치 시험기를 이용하여 TCU(통합제어장치)의 이상여부를 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('adc302ef-44df-4b72-8de7-be4cc3611d88', '0727', '727', 'HVAC#3-배기팬1 과부하', 'M2', 'C', 'HVAC-배기팬1 과부하', 'C', 'HVAC', 'HVAC 환기작동 중 차량 배기팬1 모터에 과부하 발생.', '환기 시 차량 배기팬2 운전 불가능', '1) 냉방작동 중 챠량 배기팬1 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRVF1와 연결된 THR9가 Trip 됨.', '차량 배기팬1 모터의 과부하 조건을 해소하여 정상 가능 상태로 만들고, THR9 및 마이콤 전원 리셋', '1) 냉난방배전반의 점검커버를 열고, THR9의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR9의 전류 세팅값이 2.5A에 맞춰져 있는지 확인하여, 아닐 경우, 십자 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동 시킨 후, THR9의 2차측 2,4 단자와 6 단자 사이의 전압이 DC 100V으로 정상 측정되는지 확인한다. +5) 만약 전압이 측정되지 않을 시, 전원이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, THR9 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('adc87199-4744-4abf-97b2-8c2fef6951a7', '0158', '158', 'VVVF#3-HSCB고착검지(HBNO)', 'M2', 'C', 'VVVF-HSCB고착검지(HBNO)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT31의 Bit7 “HBNO” 신호가 "1"이 되면 검지.', null, 'HSCB 개방조건에서 투입상태 유지 시 고장검지.', '동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) 주회로 차단기함 내에 HSCB의 주접점의 고착상태를 확인한다. +2) 주회로 차단기함 내에 HSCB의 보조접 고착여부를 확인한다. +3) 주회로 차단기함 내에 HBK 보조접촉기의 코일 및 접점 용손 여부를 확인한다. +4) 추진제어장치 계전기 유니트에 HBR 계전기 상태를 확인하여 고착 여부를 확인한다. +5) HSCB의 절약저항의 단락여부를 육안 및 멀티테스터로 확인한다. +6) 추진제어장치 시험기를 이용하여 제어기 시험을 실시하여 이상여부를 확인한다.', null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('adce5f00-c9be-40f4-9be9-827f99811f01', '0223', '223', 'BECU#4-공기스프링누설(전두대차)', 'T1', 'C', 'BECU-공기스프링누설(전두대차)', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit6 “공기스프링누설(전두대차)” 신호가 "1"이 되면 검지.', '해당 차량 공기스프링누설(전두대차) 검지 현시 및 해당차량 정상적인 제동제어 불가.(응하중 제어)', '해당 차량 전두대차의 공기스프링(AS1, AS2) 압력이 정상범위를 벗어남.(100kPa 미만)', '해당 차량 전두대차의 공기스프링(AS1, AS2) 압력이 정상범위일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('add3cdff-a685-4a0a-9fe8-c94134931aad', '0511', '511', 'DCU#1 1위(R1)-출입문 닫힘 리미트 스위치2 고장', 'Tc1', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 "DCS2 Failure(Right)” 신호가 "1"이 되면 검지.', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ade3021b-f1d0-4e06-a3f5-6a399f97b56d', '0519', '519', 'DCU#4 2위(L1)-ZVR 신호 에러', 'T1', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 "ZVR signal error” 신호가 "1"이 되면 검지.', '출입문이 강제로 닫히게 되고, 열림은 불가능', '1) 차량 ZVR 신호가 없는 상태 (차량 주행상태) 에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함.', '해당출입문 ZVR 신호 수신', '1) 차량이 주행중이라면, 차량이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.392739+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ade487ef-7a2c-465a-a65a-54d9b3a491e4', '0881', '881', '측면제어기(SOB) 돌출형 고장(Car#8)', 'Tc2', 'C', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ae03eabc-5a72-4a86-870e-16f400590a00', '0511', '511', 'DCU#1 1위(R1) - 출입문 닫힘 리미트 스위치2 고장', 'Tc1', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 “DCS2 Failure(Right)” 신호가 “1”이 되면 검지 +', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ae10f0bd-3077-40ae-bb36-7bcc5b48baf0', '0507', '507', 'DCU#2 5위(R3) - 초기화 실패', 'M1', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 “Calibration failure” 신호가 “1”이 되면 검지 +', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터 고장, 장애물감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우 +', '초기화 실패를 야기한 고장코드를 확인하여 조치 후, 재닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인한다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ae15e142-154e-4957-b0e9-723d8198d807', '0521', '521', 'DCU#8 2위(L1)-모듈 상태 이상', 'Tc2', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 "01"또는 "00"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ae1a7a46-af80-4a12-a497-12b4052c8516', '0148', '148', 'VVVF#6 - FC 과전압검지(OVD1)', 'M3', 'C', 'VVVF-FC 과전압검지(OVD1)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT30의 Bit5 “OVD1” 신호가 “1”이 되면 검지 +', '1) TCMS 화면 하단 또는 고장화면에 ‘FC 과전압검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생함. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉은색으로 표기되며, HSCB, LB1, 2 개방되어 동력 손실 발생함.', '추진제어장치 내부 FC 전압이 2,100V 이상일 경우 검지됨. +', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반 배전반의 VVVFIC nfb 재투입 또는 차량 배터리 전원 재투입', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 FC전압에 이상이 있는지 확인한다. +3) 추진제어장치 내부 고전압부에 소손���적이 있는지 확인한다. +4) FC에 연결된 부스바의 체결상태가 양호한지 확인한고, 부스바를 분리하여 FC의 Capacitance를 측정하여 이상이 없는지 확인한다. +5) 전압센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +6) SEN 보드의 동작 상태를 시험기를 통해 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지 간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ae31afb1-b294-4e8f-ab53-2f86dc982d42', '0504', '504', 'DCU#6 3위(R2) - 출입문 외부 비상핸들 취급(EAD)', 'M3', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ae39da31-6f15-4a76-8e37-d95dfedf6506', '0240', '240', 'BECU#5-2축스키드신호', 'T2', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ae4de54c-1a12-44de-bf97-02ea38f1269e', '0026', '26', '단부출입문 고장(Car7)', 'M4', 'C', '단부출입문고장(CAR7)', 'C', 'DCU', '차량이 단부 통로문으로부터 END DOOR FAULT 신호를 검지.', '출입문 정상동작 불가', '1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우 (인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +4) DCU 내부의 모터 / 인코더 회로가 손상된 경우', '모터/인코더 및 DCU가 정상상태이고, 전기적 연결상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있느지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. +★ 고장 조치 완료 후, 반드시 DCU의 reset 버튼을 누르거나 전원을 OFF/ON 하여 시스템을 재가동 해야 한다.', null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ae604c38-761f-48f8-b187-c7ecf5048db4', '0513', '513', 'DCU#7 4위(L2)-모듈 상태체크 에러', 'M4', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 "Module check error” 신호가 "1"이 되면 검지.', 'Module check error 현시 (출입문은 정상작동 가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태체크 기능에 이상이 생긴 경우 고장 발생.', 'DCU의 'A'모듈과 'B'모듈 간, 상태체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ae72c678-c101-45e5-98ae-0fc81ad95e33', '0504', '504', 'DCU#5 5위(R3)-출입문 외부비상핸들 취급(EAD)', 'T2', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ae7a1367-25ce-47cd-bd19-5c8bb27de94c', '0723', '723', 'HVAC#7-냉난방장치1 압력스위치2(DPS) 냉매부족', 'M4', 'C', 'HVAC-냉난방장치1 압력스위치2(DPS) 냉매부족', 'C', 'HVAC', '냉난방장치1 냉매 압력스위치2 저압 발생.', 'UNIT1 CYCLE2 냉방 기능 불가', 'UNIT1 DSP2측 냉매 압력이 30초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우', '냉매 압력이 정상 수치 2±0.5(kgf/cm2 이상 유지하도록 하고, 마이콤 전원을 리셋', '1) 배전반 점검 커버를 열고 마이콤 전원을 리셋한 후, 냉방 가동 시, CREF2의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)을 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안되는 것을 확인한 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ae85bcc5-0865-4b19-9314-2247553fed18', '0509', '509', 'DCU#8 5위(R3) - 출입문 잠김 리미트 스위치 고장', 'Tc2', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 “DLS Failure” 신호가 “1”이 되면 검지 +', '출입문 잠김 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ae8a56dc-1d1b-4a41-9660-4a01190b922f', '0838', '838', '실내객실표시기(PIB) 고장(Car#4)', 'T1', 'C', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ae934823-4aaf-48e6-8b6f-27d89094c3f0', '0503', '503', 'DCU#5 2위(L1) - 출입문 내부 비상핸들 취급(EED)', 'T2', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ae98314d-61cc-4690-a376-3bb139c8863c', '0745', '745', 'HVAC#6 - 전자접촉기 배기팬2(CRVF) 고장', 'M3', 'C', 'HVAC-전자접촉기 배기팬2(CRVF) 고장', 'C', 'HVAC', 'HVAC 환기 작동 중 CRVF2 전자접촉기 고장 발생 +', '환기 시 차량 배기팬2 운전 불가능', '환기 작동 중 2.5초 이상 동안 CRVF2 작동 feedback 신호가 수신되지 않는 경우 +', 'CRVF2 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CRVF2를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRVF2와 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('aeadffc3-f1ab-4e4e-8c2f-7ef409b5cebc', '0139', '139', 'VVVF#3 - INV ARM 단락(CFD)', 'M2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('aec4d5b1-dcb5-4e4c-a2f0-bd079f1a5eaf', '0100', '100', 'VVVF#7 통신고장', 'M4', 'B', 'VVVF-통신고장', 'B', 'VVVF', 'VVVF와 TCMS간 RS485 통신고장이 검지되면 발생.', 'TCMS 화면에 고정정보 현시되며, 추진제어장치 상태화면에 나타나는 데이터에 변동이 없음.', 'TCMS-추진제어장치(VVVF) 간 통신정보가 3초이상 동일한 정보로 유지되면 통신고장을 검지함.', 'TCMS-추진제어장치(VVVF) 간 통신정보가 정상적으로 통신이 될경우 소거됨.', '1) 추진제어장치(VVVF) 리셋 실시 후 통신고장 소거됨을 확인. +2) 통신고장 소거가 되지 않을 경우 추진제어장치 PUZ 보드 신품으로 교체후 통신고장 소거여부 확인. +3) 위 조건에도 고장이 소거되지 않을 경우, TCMS-추진제어장치간 RS485 통신케이블 연결상태 점검.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('aecde620-b51d-40b4-8e42-dbe20705da65', '1519', '1519', 'TU 모듈고장 - DIM3(Car6)', 'M3', 'C', 'TU 모듈고장 - DIM3', 'C', 'TCMS', 'TU의 DIM3 PCB가 이 정상적으로 인식되지 않아 점검이 필요할 때 +', '1) TU의 DIM3 PCB가 모듈 고장이 발생하면, 해당 TU의 모든 디지털 데이터 입력 동작인식 불가 +2) 해당 TU가 M1 차량 인 경우 판토상태 갱신 불가 +3) 해당 TU가 T1차량 인 경우 연장급전상태 갱신 불가', 'TU DIM3의 ID를 정상적으로 검출하지 못할 때 화면에 현시 +', 'TU DIM3의 ID를 정상적으로 검출하는 경우 소거됨', '1) TU의 DIM3 PCB 교체 +2) 불량 해소가 되지 않을 경우, 순차적으로 SCM, AUX PCB를 교체하여 정상여부 확인', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('aece887b-f48e-4786-8c6b-2b20effd9a1f', '0227', '227', '제동관련 회로차단기 차단(Car8)', 'Tc2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('aeef7972-4d69-430c-bf01-46e34172cb07', '0731', '731', 'HVAC#4 - 냉난방장치1 리턴 센서 고장', 'T1', 'C', 'HVAC-냉난방장치1 리턴 센서 고장', 'C', 'HVAC', '냉난방장치1의 리턴 센서 고장 발생 +', '냉난방장치1 리턴 센서 고장현시', '온도센서 검지범위는 -45 ~ 85도(820 ~ 1,330Ω)인데, 2초 이상 검지범위를 벗어나는 경우 +', '온도센서 검지값이 2초 이상 허용온도 범위 내일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820 ~ 1,330Ω을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('aef43f3b-714c-4237-bbf4-d83783c14341', '0514', '514', 'DCU#4 6위(L3)-출입문 닫힘 시간 초과', 'T1', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 "Close time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 닫힘 동작시간이 7초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도 한 후, '장애물로 인한 닫힘실패' 고장과 함께 'Close time out' 고장이 함께 현시', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('af0fe015-934d-407a-b084-c8702b932bfc', '0004', '4', 'CU2 통신고장', 'Tc2', 'B', 'CU2 통신고장(TC2)', 'B', 'TCMS', '중앙장치(CU)의 좌측 CU1의 통신고장(또는 우측 CU2의 통신고장) +', 'CU1 통신고장 현시, 정상적으로 CU2로 정상적으로 절체되면 CU1 통신고장만 현시되고 차량 운행에 지장없음. +CU2 통신고장의 경우,(CU1이 정상이면) CU2와 연결된 SIV, DCU, HVAC, FDU, BMS, PSD, CMSB 등의 통신고장과 함께 현시됨. (해당 장치로부터의 고장정보등을 현시하지 못함으로 주의 운행 필요) +CU1과 CU2 모두 이상이 있을 경우, DU 일반화면상 모든 정보 표출 불가(출입문 회색 현시, 주요장치 '--'로 현시, 시간정보 정지됨.) +CU1에 통신고장이 현시되었다가 사라지는 것이 반복되거나 화면에 현시되는 정보들이 불안정하게 흔들릴경우가 있음 +(이 경우, CU1이 불안정한 상태로 CU2로 마스터가 절체되었다가 CU1이 다시 마스터로 복귀하는 과정이 반복되면서 발생하는 현상으로 운행중에 발생했다면 CU1의 전원을 차단하고 운행) +', 'CU2가 CU1의 통신정보를 2초이상 수신받지 못할 경우 해당고장 현시, 일반적으로 VCPU보드의 문제로 해당 VCPU 보드를 교체하거나, 또는 메인 통신 보드인 VARCT 보드의 문제, 또는 단순히 CU의 전원이 차단된 경우임. +', 'CU1이 정상적으로 통신을 재개할 경우 소거됨. +', '1) CU의 전원차단 CB를 확인. 전원차단 CB가 정상 ON이 되어 있다면 VPS보드의 전원 LED가 정상적으로 ON이 되어 있는지 확인. (VPS 보드에 멀티미터를 이용하여 5V가 출력되는지 확인(검수)하여 5V가 출력되지 않는다면 VPS보드 교체) +2) CU의 리셋(전원차단 CB OFF->ON)후에도 소거가 되지 않을 경우, VCPU보드를 교체 +(VCPU 교체전 누적 주행거리, 적산전력량, 휠경 설정값을 기록해두고, 교체 후 입력한다.) +3) 위 조건에도 고장이 소거되지 않을 경우, VARCT 보드, VDI, VDO, VAIO 보드 등을 순차적으로 교체 후, 상태를 확인한다.', null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('af184955-bbcb-4a30-8a43-20e2e8044b3d', '0730', '730', 'HVAC#6 - 냉난방장치1 토출 센서 고장', 'M3', 'C', 'HVAC-냉난방장치1 토출 센서 고장', 'C', 'HVAC', '냉난방장치1의 토출 센서 고장 발생 +', '냉난방장치1 토출 센서 고장현시', '온도센서 검지범위는 -45 ~ 85도(820 ~ 1,330Ω)인데, 2초 이상 검지범위를 벗어나는 경우 +', '온도센서 검지값이 2초 이상 허용온도 범위 내일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820 ~ 1,330Ω을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('af26ca28-1650-4dd9-95df-f6eda4010d85', '0732', '732', 'HVAC#2 - 실외온도 센서1 고장', 'M1', 'C', 'HVAC-실외온도 센서 고장', 'C', 'HVAC', '실외온도 센서 고장 발생 +', '실외온도 센서 고장 현시', '온도센서 검지범위는 -45 ~ 85도(820 ~ 1,330Ω)인데, 2초 이상 검지범위를 벗어나는 경우 +', '온도센서 검지값이 2초 이상 허용온도 범위 내일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820 ~ 1,330Ω을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('af283f79-3bc2-4ddf-a4e1-b3df2e5afab4', '0710', '710', 'HVAC#4 - 냉난방장치2 압력스위치2(DPS) 고압', 'T1', 'D', 'HVAC-냉난방장치2 압력스위치2(DPS) 고압', 'D', 'HVAC', '냉난방장치2 냉매 압력스위치2 고압 발생 +', 'UNIT2CYCLE2 냉방기능불가', 'UNIT2DSP2측 냉매압력이 3초 이상 28±1(kgf/cm2) 이상 되는 경우 +', '냉매압력이 정상수치 15±0.7(kgf/cm2) 이하로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CRCM4의 부하측 전류를 측정하여 응축기 팬의 동작여부를 확인한다. +2) 응축기 코일의 전면에 이물질로 인한 막힘이 있는지 확인한다. +3) 응축기 팬 상부 그릴에 외부 이물질로 인한 막힘이 있는지 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('af39b47e-3bbe-43d9-8379-2d65bd49d2ce', '0225', '225', 'BECU#8-강제완해검지(CPRD)', 'Tc2', 'C', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('af3a4eef-9322-405b-9b9e-8b2c3897630e', '0414', '414', 'SIV#1 - 게이트 드라이버 고장, WZ1상(GDFWZ1)', 'Tc1', 'C', 'SIV-게이트 드라이버 고장, WZ1상(GDFWZ1)', 'C', 'SIV', '보조전원장치(SIV)의 RS485 데이터 중 SIV-TCMS SD TEXT5의 Bit4 “GDFUX1” 신호가 “1”이 되면 검지 +', '1) TCMS 화면하단 또는 고장화면에 ‘GDFUX1상 이상 검지'표시됨. +2) 보조전원장치(SIV)는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 보조전원장치(SIV) 중고장이 발생됨. +5) 중고장이 발생되면 TCMS 일반화면에 보조전원장치(SIV) 상태 붉은색으로 표기되며, 연장급점 됨.', '보조전원장치(SIV) 내부 GDU에 과전류, 과온이 검지될 경우 +', '1) 경고장이 발생할 경우 보조전원장치(SIV) 자동 재기동에 의해 재기동 됨. +2) 중고장이 발생할 경우 보조전원장치(SIV) 리셋으로 고장 소거됨.', '1) 상기 고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 보조전원장치(SIV) 고장기록을 수집하여 출력되는 3상의 AC 전류치를 확인함. +3) 특정상의 전류치가 비정상적일 경우 특정상에 해당되는 GDU, 전류센서, 출력단 결선을 확인 한다. +4) 전류센서와 보조전원장치(SIV) 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작 상태를 시험기를 통해 확인한다. +6) GDU 전원공급기의 전원연결 상태 또는 광케이블의 연결 상태와 배선상태를 확인한다. +7) 출력단 각상의 절연상태 및 각상과 접지 간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('af3d8291-6bb5-4ead-84c6-b570032601fb', '0212', '212', 'BECU#2-1축속도신호의 비정상', 'M1', 'C', 'BECU-1축속도신호의 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit3 “1축속도신호의 비정상” 신호가 "1"이 되면 검지.', '해당 차량 1축속도신호의 비정상 검지 현시 및 해당 차량 활주제어 불가.', '해당 차량의 1축 속도센서 고장 발생.', '해당 차량의 1축 속도센서가 정상적일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('af429742-94ee-49f3-a916-c0a39c505ba1', '0706', '706', 'HVAC#1-냉난방장치1 증발기2 과부하', 'Tc1', 'C', 'HVAC-냉난방장치1 증발기2 과부하', 'C', 'HVAC', 'HVAC 냉방작동 중 냉난방장치1 증발기 모터에 과부하 발생.', 'UNIT1 냉방 작동 불가', '1) 냉방작동 중 UNIT1의 증발기 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CREF2와 연결된 THR6이 Trip 됨.', 'UNIT1의 증발기 모터의 과부하 조건을 해소하여 정상 가능 상태로 만들고, THR6 및 마이콤 전원 리셋', '1) 냉난방배전반의 점검커버를 열고, THR6의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR6의 전류 세팅값이 3A에 맞춰져 있는지 확인하여, 아닐 경우, 십자 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동 시킨 후, THR6의 2차측 2,4,6 단자에서 각 단자간 상간 전압이 AC 380V으로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 증발기 단품 상태에서 점검을 한다. +7) THR6의 2차측 2,4,6 단자에서 각 단자간 권선저항이 모두 같은지 확인한다. (±10% 이하) (증발기 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT1의 증발기 모터의 결선을 해제한 후 4극 및 6극 모터의 권선저항을 확인 후, 문제가 있을 겨우, 증발기 모터를 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR6 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('af454099-38ee-4266-b1f2-2ca57dd31bc3', '0503', '503', 'DCU#6 2위(L1)-출입문 내부비상핸들 취급(EED)', 'M3', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('af46c844-9f2d-4d34-b015-87b2d383efe9', '0907', '907', '비상인터폰 동작(Car#7 - 2)', 'M2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('af56378f-c731-4278-89c9-788f6021ac19', '0302', '302', 'ATC#1 - EB 명령', 'Tc1', 'W', 'ATC-EB 명령', 'W', 'ATC', 'ATC의 RS485 데이터 중 ATC-TCMS SD TEXT12의 Bit0 “EB Command” 신호가 “1”이 되면 검지 +', '1) MMI 화면에 열차EB체결관련메시지현시 +2) MMI 화면에 EB체결 경보음 출력 +3) 비상제동 체결', ' +1) 제한속도 초과 시, 과속조건(FSB)에서 3초 동안 일정감속도(2.4km/h/s) 이하일 경우 +2) 노코드(02코드) 검지 시 +3) 열차 Rollback(방향제어기와 이동방향 다를 경우 ) +4) No Motion Time Out(추진 시, 10초 이상 움직이지 않을 경우 ) +5) ATS STOP 신호 검지 시 +6) 열차 이동 시, 모드 전환 에러 +7) 열차 이동 시, 방향 제어기 스위치 전환 에러 +8) ATCATO 1, 2계 동시 고장 발생 시 +9) FA/AUTO 운전모드에서 PG3-2 검지 시점 열차속도 25km/h 이상 +10) MCS 운전모드에서 후진 2m 이상 이동 시 +11) FA/AUTO운전모드에서 PG1 미검지 상태에서 PG2 검지 시 +', '열차정지(영속도 검지) 및 마스콘 제동 취급 시', '열차정지 및 마스콘 제동 취급이 되었는지 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('af56a50a-78bf-4b00-b03c-e5fde956999b', '0505', '505', 'DCU#7 5위(R3)-출입문 입력 고전압', 'M4', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 "1"이 되면 검지.', '고전압 상태. (그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('af68cc57-d77e-4919-9806-87e2bc1f1448', '0513', '513', 'DCU#4 5위(R3)-모듈 상태체크 에러', 'T1', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 "Module check error” 신호가 "1"이 되면 검지.', 'Module check error 현시 (출입문은 정상작동 가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태체크 기능에 이상이 생긴 경우 고장 발생.', 'DCU의 'A'모듈과 'B'모듈 간, 상태체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('af71afff-8ecc-42f9-8993-b7f74db63a02', '0513', '513', 'DCU#8 1위(R1) - 모듈 상태체크 에러', 'Tc2', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 “Module check error” 신호가 “1”이 되면 검지 +', 'Modulecheckerror현시(출입문은 정상작동가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태 체크 기능에 이상이 생긴 경우 고장 발생 +', 'DCU의 ‘A' 모듈과 ‘B' 모듈 간, 상태 체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('af7c6f38-5c2c-452a-9894-8859c25165b3', '1500', '1500', '출입문 회로차단기 차단(Car6)', 'M3', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('af86153e-a7c5-4d7a-8c3f-796509b8636a', '0214', '214', 'BECU#8 - BC 압력센서 고장', 'Tc2', 'C', 'BECU-BC 압력센서 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit5 “BC 압력센서 고장” 신호가 “1”이 되면 검지 +', '해당 차량 BC 압력센서 고장검지 현시 및 해당 차량 제동력부족, 제동불완해 검지 불가', '해당 차량의 BC 압력센서 고장 +', '해당 차량의 BC 압력센서가 정상일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('af8a055a-c65e-4e3d-a5ef-f34634c6e8fa', '0512', '512', 'DCU#2 4위(L2) - 파라미터 로딩 실패', 'M1', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 “Paraneter error” 신호가 “1”이 되면 검지 +', 'Parametererror 현시(출입문은 정상작동 가능)', 'DCU 자체 내의 EEPROM으로부터 parameter데이터 로딩 실패 +', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('af984179-bb2d-4724-888b-8ec1e64a28e6', '0237', '237', '보안제동코크 차단(Car3)', 'M2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('af9b3662-670f-40a2-89ca-565c708a8331', '0501', '501', 'DCU#8 6위(L3)-출입문 차단', 'Tc2', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('afba4a66-291f-421b-a590-15584b1eca15', '0511', '511', 'DCU#1 2위(L1) - 출입문 닫힘 리미트 스위치2 고장', 'Tc1', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 “DCS2 Failure(Right)” 신호가 “1”이 되면 검지 +', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('afbd183f-f2c5-4baf-9359-a64959bea634', '0167', '167', 'VVVF#2-마스콘 노치신호 이상검지(PWMERR)', 'M1', 'C', 'VVVF-PWM 노치고장(PWMERR)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT33의 Bit0 “PWMERR” 신호가 "1"이 되면 검지.', null, '엔코더 PWM신호의 듀티값 95% 이상 도달 시 고장검지', '1) 역행 듀티값 90%이하. +2) 제동 듀티값 90%이하 & 제동 OFF', '1) 상기 고장이 간헐적으로 발생하는 경우 아래와 같이 조치한다. +2) 엔코더의 출력을 오실로스코프로 측정하여 정상여부를 확인한다.(48V, 400Hz) +3) TC1, TC2차량의 배전반에서 엔코더 출력부 배선상태 및 단자결합상태를 확인한다. +4) 추진장치의 MC유니트의 커넥터 및 핀 압착상태를 확인한다. +5) TCMS의 추진장치 시리얼 데이터 메뉴에서 B1~B7의 노치값을 확인한다. +6) 값이 변하지 않거나 노치별 일정한 값이 유지되지 않는 경우 INF보드를 교체한다.', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('afc1ceac-35d4-4958-a1ef-7f1cf0812abf', '0313', '313', 'ATC#8 - 정밀정차 제어중', 'Tc2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('afd4063f-6dc3-4e8d-809a-01cae73631bb', '0511', '511', 'DCU#6 1위(R1)-출입문 닫힘 리미트 스위치2 고장', 'M3', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 "DCS2 Failure(Right)” 신호가 "1"이 되면 검지.', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('afdb5174-8d8a-4cdf-bb08-1dea5e244aad', '0517', '517', 'DCU#6 4위(L2)-출입문 장애물로 인한 열림 실패', 'M3', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Open failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘상태로 대기', '도어 열림 중 3회 장애물 감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 열림 시, 장애물 감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('afe49c03-ce50-45db-87c6-a9819b14f696', '0518', '518', 'DCU#1 3위(R2)-출입문 Enable 신호 에러', 'Tc1', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 "Enable signal error” 신호가 "1"이 되면 검지.', 'DCU 출입문 Enable 신호 에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) 취급시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함.', '해당출입문 enable 신호 수신', '1) AUTO/MCS 모드시에는 YARD모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인한다. (YARD/FMC 모드시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.392739+00', null, '로템40량(2018)-1단계', 'Rotem'), ('afe67300-c62e-4d5c-862f-018a9d6101da', '0236', '236', '상용제동코크 차단(Car5)', 'T2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('afeb8215-2b15-41dd-b4b1-fafec7a8ed69', '0507', '507', 'DCU#5 6위(L3)-초기화 실패', 'T2', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 "Calibration failure” 신호가 "1"이 되면 검지.', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터고장, 장애물 감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우', '초기화 실패를 야기한 고장 코드를 확인하여 조치 후, 재 닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('afebbfed-f2d4-431d-9163-79b495ccefc9', '0104', '104', 'VVVF#6-휠 슬라이드 검지(WSD)', 'M3', 'W', null, null, 'VVVF', null, null, null, null, null, null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('afef39d6-0ece-4c59-a640-63739fe005ec', '0508', '508', 'DCU#3 6위(L3)-출입문 모터/인코더 고장', 'M2', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 "Motor / Encoder failure” 신호가 "1"이 되면 검지.', '출입문 정상동작 불가', '1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우 (인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터 / 인코더 회로가 손상된 경우', '모터/인코더 및 DCU가 정상상태이고, 전기적 연결상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있느지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. +★ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. + +1. DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. +2. DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) +3. DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('aff48d91-f158-450e-9079-ef07f7886d55', '1211', '1211', 'FDU#8-체크섬 고장', 'Tc2', 'C', 'FDU-체크섬 고장', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT5의 Bit7 "Checksum Fault” 신호가 "1"이 되면 검지.', 'Checksum Fault 현시 및 FDU의 정상 동작 불가능', '수신기 펌웨어의 오류로 인한 체크섬 이상(MCU 내부 플래쉬 메모리에 저장된 체크섬과 프로그램의 체크섬 계산값이 다를경우)', 'FDU가 부팅될때 MCU 내부 플래쉬 메모리에 저장된 체크섬과 프로그램의 체크섬 계산값이 같을 경우', '1) FDU의 전원을 리셋하여 소거여부 확인 +2) 문제가 지속될 경우, 수신기 교체', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('aff4dcca-17dd-45bd-b214-12713f418f41', '0504', '504', 'DCU#5 4위(L2)-출입문 외부비상핸들 취급(EAD)', 'T2', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b0060f50-6716-4f56-9e35-094322ab2936', '0066', '66', 'MAIN FUSE#2 DISCONNECTED(Car3)', 'M2', 'W', 'MAIN FUSE#2 DISCONNECTED(Car3)', 'W', '기타', '차량으로부터 AUX FUSE DISCONNECTED 신호 입력 시 +', 'VVVF 고압 차단으로 추진 불능', '해당 퓨즈 소손 +', '해당 퓨즈 교체 +회로 도면 : REC20210DX0', null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b00931f6-863b-410c-97bf-053312242621', '0113', '113', 'VVVF-주회로 접지검지(LGD) (Car2)', 'M1', 'B', 'VVVF-주회로 접지검지(LGD)', 'B', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT32의 Bit0 “LGD” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 '주회로 접지검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동이 되지 않으며 중고장으로 처리됨. +3) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치 입력전압이 300V 이하로 하강되며, 입력전류가 1700A 이상인 조건.', '1) 추진제어장치 리셋으로 고장 소거됨.', '1) 상기고장이 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 고장기록의 FC 전압 및 입력전류 확인. +3) 추진제어장치 내부에 접지흔적 확인 및 고압회로 점검. +4) 전류/전압 센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작상태를 시험기를 통해 확인한다. +6) IPM 전원공급기의 전원연결상태 또는 광케이블의 연결상태와 배선상태를 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.578803+00', null, '다대48량(2015)', 'Rotem'), ('b00b3cff-8ca4-4ab6-8157-4848ad3f2bd5', '0704', '704', 'HVAC#8 - 냉난방장치1 압축기1 과부하', 'Tc2', 'C', 'HVAC-냉난방장치1 압축기1 과부하', 'C', 'HVAC', 'HVAC 냉방 작동 중 냉난방장치1 압축기1 또는 응축기1 모터에 과부하 발생 +', '냉방 기능 저하(전냉방 시 반냉방으로 작동)', ' +1) 냉방 작동 중 UNIT1의 압축기1 또는 응축기1 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRCM1과 연결된 THR1이 Trip 됨. +', 'UNIT1의 압축기1 또는 응축기1 모터의 과부하조건을 해소하여 정상 가능 상태로 만들고, THR1 및 마이콤 전원 리셋', '1) 냉난방 배전반의 점검커버를 열고, THR1의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR4의 전류 세팅값이 11.5A에 맞춰져 있는지 확인하여, 아닐 경우, (+) 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동시킨 후, THR1의 2차측 2, 4, 6 단자에서 각 단자 간 상간 전압이 AC 380V로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 압축기 및 응축기 단품 상태에서 점검을 한다. +7) THR1의 2차측 2, 4, 6 단자에서 각 단자 간 권선저항이 모두 같은지 확인한다. (±10% 이하) (압축기1 및 응축기1 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT1의 압축기1 또는 응축기1 모터의 결선을 해제한 후 각 부품의 권선저항을 확인 후, 문제가 있는 부품을 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR1 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b00c75ac-e59b-4eff-9fc4-c6e1eb8b6a1c', '0045', '45', '비상판토 트립(Car6)', 'M3', 'W', '비상판토 트립(CAR6)', 'W', 'TCMS', '차량으로부터 NO EMERGENCY PANTO TRIP 신호 미입력시', '판도 하강 및 VVVF, SIV 고압 차단', '가선 차단', '판토 하강 및 가선 투입', null, null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b00f15f5-79bc-42bb-9933-25d6d86b9425', '0890', '890', '출력증폭기#1(AMP) 고장(Car#8)', 'Tc2', 'C', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b014e62b-4249-42a9-ba41-aea17310dd10', '763', '763', 'CAB HVAC#1 - 댐퍼 이상', 'Tc1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b05926c5-48c9-4d84-8c25-f0fac3e477a0', '0217', '217', 'BECU#6-회생제동달성 비정상', 'M3', 'C', 'BECU-회생제동달성 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit0 “회생제동달성 비정상” 신호가 "1"이 되면 검지.', '해당 차량 회생제동달성 비정상 검지 현시 및 해당차량 정상적인 전공 교차제어 불가.', '해당 차량의 회생제동달성 신호가 정상범위를 벗어남(5.0~95.0%).', '해당 차량의 회생제동달성 신호가 정상범위일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. +소거되지 않을 경우 해당 차량 추진제어장치 리셋(CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b065d5a5-dfd4-41ea-8362-f5d297947eb3', '0226', '226', 'BECU#2-제동불완해검지(NRBD)', 'M1', 'B', 'BECU-제동불완해검지(NRBD)', 'B', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT8의 Bit2 “NRBD” 신호가 "1"이 되면 검지.', '해당 차량 제동불완해 검지 현시 및 완해 취급하였음에도 불구하고 해당 차량 제동압력(BCP)이 완해되지 않음.', '제동완해 상태(정차제동 포함)에서 해당 차량의 제동압력이 완전히 배기 되지 않음.', '제동완해 상태(정차제동 포함)에서 해당 차량의 제동압력이 완전히 배기 됨.', '정차하여 강제완해스위치를 취급하여 소거 여부 확인. 제동 완해상태 확인 후 주의 운전 할 것. +2~3회 시도에도 완해불능시 관제보고하고 지시에 따를 것.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b0686f26-5f98-4897-b539-fc35b265cef4', '0065', '65', 'MAIN FUSE#2 DISCONNECTED(Car2)', 'M1', 'W', 'MAIN FUSE#2 DISCONNECTED(Car2)', 'W', '기타', '차량으로부터 AUX FUSE DISCONNECTED 신호 입력 시 +', 'VVVF 고압 차단으로 추진 불능', '해당 퓨즈 소손 +', '해당 퓨즈 교체 +회로 도면 : REC20210DX0', null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b06965d4-4040-4757-9d1c-b825f3f9851a', '0901', '901', '비상인터폰 동작(Car#4-2)', 'T1', 'W', null, null, 'RADIO', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b06d3c52-f4e7-4b7a-89eb-759a1863d15b', '0015', '15', '자동지점보정 기능정지(수동버튼 취급)', 'HCR', 'W', null, null, 'ATC', null, null, null, null, null, null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b071a994-c520-4839-a8df-677a50c1dc58', '0807', '807', '통합제어기(AVC) 고장(Car#1)', 'Tc1', 'C', '통합방송표시기-통합제어기(AVC) 고장', 'C', 'TCMS', '통합방송표시기의 RS485 데이터 중 통합방송표시기-TCMS SD TEXT8의 Bit5 “AVC 고장” 신호가 "1"이 되면 검지.', '슬레이브 통합방송제어기가 마스터 통합방송제어기에 주기적(2초) TCP 응답이 없을 경우 통신 불량으로 판단 +마스터 통합방송제어기에 고장이 발생한 경우 절체가 이루어지고 절체가 이루어지는 동안 고장 검지 되지 않으며 +절체가 완료 된 후 슬레이브 통합제어기가 마스터 통합방송제어기에 주기적(2초) TCP 응답이 없을 경우 통신 불량으로 판단', '마스터 통합방송제어기에 주기적(2초) TCP 응답이 없을 경우 통신 불량으로 판단', '마스터 통합방송제어기에 TCP 응답 재개', '고장 발생한 통합제거의 CB(오디오/비디오 제어기, CBAVCON) 리셋하고 통신라인 및 상태 점검 +관련도면:', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b0758bfb-a853-4862-8a99-b4bf627e55b2', '0705', '705', 'HVAC#8-냉난방장치2 증발기2 과부하', 'Tc2', 'C', 'HVAC-냉난방장치2 증발기2 과부하', 'C', 'HVAC', 'HVAC 냉방작동 중 냉난방장치2 증발기 모터에 과부하 발생.', 'UNIT2 냉방 기능 불가', '1) 냉방작동 중 UNIT2의 증발기 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CREF4와 연결된 THR8이 Trip 됨.', 'UNIT2의 증발기 모터의 과부하 조건을 해소하여 정상 가능 상태로 만들고, THR8 및 마이콤 전원 리셋', '1) 냉난방배전반의 점검커버를 열고, THR8의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR8의 전류 세팅값이 3A에 맞춰져 있는지 확인하여, 아닐 경우, 십자 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동 시킨 후, THR8의 2차측 2,4,6 단자에서 각 단자간 상간 전압이 AC 380V으로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 증발기 단품 상태에서 점검을 한다. +7) THR8의 2차측 2,4,6 단자에서 각 단자간 권선저항이 모두 같은지 확인한다. (±10% 이하) (증발기 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT2의 증발기 모터의 결선을 해제한 후 4극 및 6극 모터의 권선저항을 확인 후, 문제가 있을 겨우, 증발기 모터를 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR8 부품을 교체한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b07a9e52-9ab5-4180-9516-c5601431835c', '0144', '144', 'VVVF#6-HSCB 트립검지(HBT)', 'M3', 'B', 'VVVF-HSCB 트립검지(HBT)', 'B', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT30의 Bit1 “HBT” 신호가 "1"이 되면 검지.', null, '1) HSCB의 자체 과전류 보호에 의하여 트립이 발생했을 때 고장검지. +2) 1분 이내 3회 발생 시 중고장.', '1) 경고장 +역행 고장검지 2초 후 자동 재기동 제동 제동 OFF시 고장 소거 +2) 중고장 +동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 고장기록의 FC 전압 및 입력전류 확인. +3) 추진제어장치 내부에 접지흔적 확인 및 고압회로 점검. +4) 전류/전압 센서의 외관 상태와 저전압 배선상태를 확인한다. +5) 추진제어장치 시험기를 이용하여 TCU(통합제어장치)의 이상여부를 확인한다. +6) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +7) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b0862636-49ec-4365-b8fb-e485082d1f4b', '0155', '155', 'VVVF#2-역행/회생이상검지(PBR)', 'M1', 'C', 'VVVF-역행/회생이상검지(PBR)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT31의 Bit4 “PBR” 신호가 "1"이 되면 검지.', null, '역행, 제동신호 동시 입력', '동시 입력상황 해제', '1) 상기고장이 간헐적으로 발생하는 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 역행/제동신호에 이상이 있는지 확인한다. +3) 차량의 제어회로 중 전진/후진 신호가 추진제어장치로 연결되는 경로에 이상이 없는지 확인한다. +4) 추진제어장치 시험기를 이용하여 TCU(통합제어장치)의 이상여부를 확인한다. +5) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b0a6c90a-880d-48da-bbb3-4d15a6410500', '0514', '514', 'DCU#5 4위(L2) - 출입문 닫힘 시간 초과', 'T2', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 “Close time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 닫힘 동작 시간이 7초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도한 후, ‘장애물로 인한 닫힘 실패' 고장과 함께 ‘Close time out' 고장이 함께 현시 +', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b0b0f1de-3f5d-4da8-af63-fc360c75ee4e', '0874', '874', '비상인터폰#2(PEI) 고장(Car#7)', 'M4', 'C', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b0b65903-3111-4c97-b91b-b23dfb97b7b4', '0834', '834', '비상인터폰#2(PEI) 고장(Car#3)', 'M2', 'C', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b0c7a3cb-3335-40c2-b109-2293022a46c1', '0723', '723', 'HVAC#5 - 냉난방장치1 압력스위치2(DPS) 냉매부족', 'T2', 'C', 'HVAC-냉난방장치1 압력스위치2(DPS) 냉매부족', 'C', 'HVAC', '냉난방장치1 냉매 압력스위치2 저압 발생 +', 'UNIT1CYCLE2 냉방 기능 불가', 'UNIT1DSP2측 냉매압력이 30초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우 +', '냉매압력이 정상수치 2±0.5(kgf/cm2) 이상 유지하도록 하고, 마이콤전원을 리셋', '1) 배전반 점검 커버를 열고 마이콤 전원을 리셋한 후, 냉방 가동 시, CREF2의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)을 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설 여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안 되는 것을 확인한 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b0fcc5bc-3475-4209-8785-26f87d933497', '0746', '746', 'HVAC#7 - 전자접촉기 배기팬1(CRVF) 고장', 'M4', 'C', 'HVAC-전자접촉기 배기팬1(CRVF) 고장', 'C', 'HVAC', 'HVAC 환기 작동 중 CRVF1 전자접촉기 고장 발생 +', '환기 시 차량 배기팬1 운전 불가능', '환기 작동 중 2.5초 이상 동안 CRVF1 작동 feedback 신호가 수신되지 않는 경우 +', 'CRVF1 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CRVF1을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRVF1과 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b10d2ecd-8404-486d-9140-b1a63acbd63f', '1703', '1703', '노선안내표시기#5 고장(Car5)', 'T2', 'C', '노선안내표시기#1 고장', 'C', 'PIC', 'PIC 장치의 노선안내표시기#1이 고장이 났을 때 발생 +', '1) 노선안내표시기 화면 미현시 +2) 노선안내표시기 안내 화면 오현시', '통신고장 +', '통신 재개 시', '1) 이더넷 스위치 링크 확인 +2) 이더넷 케이블 점검 +3) 제어보드 및 전원보드 교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b1214e5e-517b-48b8-ae87-d9286a8f9da3', '0319', '319', 'ATC#1 - 캠스위치 위치 오류', 'Tc1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b1247272-9851-4d11-b48f-f34220ba57ec', '0005', '5', 'DU 통신고장', 'Tc1', 'B', 'DU 통신고장(TC1)', 'A', 'TCMS', '운전실 TCMS 화면의 통신고장', ' +1) 후부차 TCMS 화면의 통신불능시 화면에 현시.(선두차 TCMS 화면 정상시 정상 운행 가능) +2) 화면상 정보 표출 불가(시간정보 정지 등), 또는 전원 LED OFF 상태로 아무 화면도 보이지 않음. +', ' +1) CU에서 DU의 통신정보를 3초이상 수신받지 못할 경우 해당 고장 현시. +', 'DU가 정상적으로 통신을 재개할 경우 소거됨. +', '1) DU전원차단기 리셋(OFF->ON) 실시. +2) 전원 LED가 OFF 되어 있다면 DU 후부의 전원커넥터 체결 등을 확인 +3) 전원공급이 정상이고 화면도 정상적으로 부팅이 되는데 차량 정보 현시가 되지 않으면, DU 후부의 통신커넥터 체결 등을 확인. (통신 커넥터 체결이 정상이라면, CU가 정상인지 확인) +4) 위 +3)번의 상황에서 모두 정상이라면, DU 상단의 CF카드를 교체 +5) 위 조건이 모두 맞지 않으면 DU를 교체', null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b127e33a-5152-4e51-8a03-1b86e4ffdeca', '0505', '505', 'DCU#6 4위(L2)-출입문 입력 고전압', 'M3', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 "1"이 되면 검지.', '고전압 상태. (그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b12ab8f8-cc23-4eea-8ce0-3be6e8fe4db0', '0179', '179', 'VVVF#2-LB2 투입불량(LB2NC)', 'M1', 'C', 'VVVF-LB2 투입불량(LB2NC)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT34의 Bit4 “LB2NC” 신호가 "1"이 되면 검지.', null, 'LB2 투입이 되지 않을 때 고장검지.', '동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) 판토하강상태에서 테스트모드로 전환하여 시퀀스를 투입하고 LB2의 주접점 동작을 확인한다. +2) 주회로 차단기함 내에 LB2의 보조접점의 동작상태를 확인한다. +3) 추진제어장치 계전기 유니트에 LB2R 계전기 상태를 확인하여 계전기의 동작 여부를 확인한다. +4) 추진제어장치 시험기를 이용하여 제어기 시험을 실시하여 이상여부를 확인한다.', null, '3', '2025-10-12 01:21:37.578803+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b12bc9ad-bc70-4bae-a831-415c9eee7754', '0162', '162', 'VVVF#6 - PWM제어장치 이상검지(WDTD_P)', 'M3', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b131ce21-0656-45b6-9f83-3041af84bb73', '0518', '518', 'DCU#2 1위(R1) - 출입문 Enable 신호 에러', 'M1', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 “Enable signal error” 신호가 “1”이 되면 검지 +', 'DCU 출입문Enable신호에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드 시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을 때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드 시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입 상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호 장치로부터의 출입문 열림 명령 신호) 취급 시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함. +', '해당 출입문 enable 신호수신', '1) AUTO/MCS 모드 시에는 YARD 모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인 한다. (YARD/FMC 모드 시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b1394276-88aa-4060-8448-088c9739830b', '0503', '503', 'DCU#6 5위(R3)-출입문 내부비상핸들 취급(EED)', 'M3', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b1439ea2-14f4-4d2e-bb5c-fa18d8c45bad', '0518', '518', 'DCU#7 6위(L3) - 출입문 Enable 신호 에러', 'M4', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 “Enable signal error” 신호가 “1”이 되면 검지 +', 'DCU 출입문Enable신호에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드 시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을 때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드 시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입 상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호 장치로부터의 출입문 열림 명령 신호) 취급 시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함. +', '해당 출입문 enable 신호수신', '1) AUTO/MCS 모드 시에는 YARD 모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인 한다. (YARD/FMC 모드 시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b147fc68-097c-453b-b6d2-9100fc7d055e', '0511', '511', 'DCU#5 3위(R2) - 출입문 닫힘 리미트 스위치2 고장', 'T2', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 “DCS2 Failure(Right)” 신호가 “1”이 되면 검지 +', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b14c2fe2-3f14-4cf5-a34a-5d6547f5c55d', '0507', '507', 'DCU#3 4위(L2) - 초기화 실패', 'M2', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 “Calibration failure” 신호가 “1”이 되면 검지 +', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터 고장, 장애물감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우 +', '초기화 실패를 야기한 고장코드를 확인하여 조치 후, 재닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인한다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b14ce5f0-186b-4ca3-9af8-bc384a5e7772', '0175', '175', 'VVVF#3-HSCB 투입불량(HBNC)', 'M2', 'C', 'VVVF-HSCB 투입불량(HBNC)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT34의 Bit0 “HBNC” 신호가 "1"이 되면 검지.', null, 'HSCB 투입이 되지 않을 때 고장검지.', '동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) 판토하강상태에서 테스트모드로 전환하여 시퀀스를 투입하고 HSCB의 주접점 동작을 확인한다. +2) 주회로 차단기함 내에 HSCB의 보조접점의 동작상태를 확인한다. +3) 추진제어장치 계전기 유니트에 HBR 계전기 상태를 확인하여 계전기의 동작 여부를 확인한다. +4) 추진제어장치 시험기를 이용하여 제어기 시험을 실시하여 이상여부를 확인한다.', null, '3', '2025-10-12 01:21:37.578803+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b15d12e2-9026-459a-98bf-1a96d6569cf7', '0516', '516', 'DCU#3 2위(L1)-출입문 장애물로 인한 닫힘 실패', 'M2', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Close failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림상태로 대기', '도어 닫힘 중 3회 장애물 감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b15e637b-4da4-45d4-922c-98d12936ef44', '0729', '729', 'HVAC#8 - 냉난방장치2 리턴 센서 고장', 'Tc2', 'C', 'HVAC-냉난방장치2 리턴 센서 고장', 'C', 'HVAC', '냉난방장치2의 리턴 센서 고장 발생 +', '냉난방장치2 리턴 센서 고장현시', '온도센서 검지범위는 -45 ~ 85도(820 ~ 1,330Ω)인데, 2초 이상 검지범위를 벗어나는 경우 +', '온도센서 검지값이 2초 이상 허용온도 범위 내일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820 ~ 1,330Ω을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b1620bcd-1ac6-48e2-ab7d-18799ffa3e52', '0005', '5', 'DU 통신고장', 'Tc1', 'B', 'DU 통신고장(TC1)', 'A', 'TCMS', '운전실 TCMS 화면의 통신고장 +', '1) 후부차 TCMS 화면의 CU-DU 간 통신불능 시 화면에 현시(선두차 TCMS 화면 정상 시 정상 운행 가능) +2) 해당 화면의 동작 정지', 'CU에서 DU의 통신정보를 수신 받지 못할 경우 해당 고장 현시 +', 'DU가 정상적으로 통신을 재개할 경우 소거됨.', '1) CU1, 2의 전원차단기 리셋(OFF → ON) 실시 +2) 또는 DU 전원차단기 리셋(OFF → ON) 실시 +3) DU 전원 LED(녹색)가 OFF 되어 있다면 DU 후부의 전원커넥터 체결 등을 확인 +4) 전원공급이 정상이고 화면도 정상적으로 부팅이 되는데 차량 정보 현시가 되지 않으면, DU 후부의 통신커넥터 체결 등을 확인(통신 커넥터 체결이 정상이라면, CU가 정상인지 확인) +5) 위 +3)번의 상황에서 모두 정상이라면, CU의 MCPU PCB 교체 +6) 위 조건이 모두 맞지 않으면 DU를 교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b165440e-6c12-4cce-a99f-20a022ec5ff3', '0111', '111', 'VVVF-검출기 전원이상검지(SPSF) (Car3)', 'M2', 'C', 'VVVF-검출기 전원이상검지(SPSF)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT31의 Bit6 “SPSF” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 '검출기 전원이상검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치 제어기에 SPW 보드에서 출력하는 센서 전원에 이상이 발생할 경우.', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반배전반의 VVVFIC nfb 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) SPW 보드의 LED 상태를 확인한다. LED가 소등되어 있거나 특정LED의 상태가 이상할 경우 SPW 보드를 교환한다. +3) SPW-SEN 보드로 연결되는 배선에 이상이 없는지 확인한다. +4) SEN 보드의 동작상태를 시험기를 통해 확인한다. +5) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.656536+00', null, '다대48량(2015)', 'Rotem'), ('b17923d6-be45-4784-8d2a-e5f0f7e2f5e8', '0521', '521', 'DCU#8 2위(L1) - 모듈 상태 이상', 'Tc2', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 “01” 또는 “00”이 되면 +검지 +', '이중계절체동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러)이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b183bbb5-5405-47b7-aa27-6b5890d3efea', '0506', '506', 'DCU#4 2위(L1) - 출입문 입력 저전압', 'T1', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 “1”이 되면 검지 +', '저전압상태(출입문 동작이 심하게 느려지거나 작동조차 안 될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하 +', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b188fe05-6888-4378-b028-77220238ff52', '0504', '504', 'DCU#3 2위(L1) - 출입문 외부 비상핸들 취급(EAD)', 'M2', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b18ec8ce-c859-4092-b4fb-188b69bef07b', '0110', '110', 'VVVF-아날로그 전원이상검지(APSF) (Car3)', 'M2', 'C', 'VVVF-아날로그 전원이상검지(APSF)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT31의 Bit5 “APSF” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 '아날로그 전원이상검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치 제어기에 PWR 보드에서 출력하는 아날로그 전원에 이상이 발생할 경우.', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반배전반의 VVVFIC nfb 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) PWR 보드의 LED 상태를 확인한다. LED가 소등되어 있거나 특정LED의 상태가 이상할 경우 PWR 보드를 교환한다. +3) PWR-SEN 보드로 연결되는 배선에 이상이 없는지 확인한다. +4) SEN 보드의 동작상태를 시험기를 통해 확인한다. +5) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.656536+00', null, '다대48량(2015)', 'Rotem'), ('b1957b89-ef44-48e6-b9f9-8abb511e88f7', '1210', '1210', 'FDU#3 - 메모리 고장', 'M2', 'C', 'FDU-메모리 고장', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT5의 Bit6 “Memory Fault” 신호가 “1”이 되면 검지 +', '1) Memory Fault 현시 +2) FDU의 이벤트 기록 및 읽기 동작 안 됨. +3) FDU 환경설정 정보 로딩 실패(차량 번호, 주차시간, 절전시간 등의 설정값을 기본값으로 로딩)', '메모리 연결 포트의 이상 혹은 배드섹터 발생(메모리 접근 및 읽기, 쓰기가 실패한 경우) +', '메모리의 접근 및 읽기, 쓰기 성공', '1) FDU의 전원을 리셋하여 소거여부 확인 +2) 문제가 지속될 경우, 수신기 교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b19f58e9-a006-4dba-9c08-fcade3c8f71c', '0725', '725', 'HVAC#8 - 냉방시험 불가능', 'Tc2', 'C', 'HVAC-냉방시험 불가능', 'C', 'HVAC', '운전실 TCMS에서 냉방시험 작동을 할 때, 냉방운전이 불가능한 경우 발생 +', '냉방시험 운전 불가능', '실내 또는 실외온도가 10도 미만일 경우(환절기 또는 겨울철에 냉방가동 시 시스템 보호를 위한 온도조건) +', '실내 또는 실외온도가10도 이상일 때, 냉방시험작동', '1) TCMS 화면에서 실내 또는 실외 온도가 10도 미만인지 확인한다. +2) 실내 및 실외 온도가 10도 이상인데도 냉방 가동이 되지 않을 시, TCMS-마이콤 간 통신불량이 있는지 확인하고 조치한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b1a08d8f-97bf-4846-a35b-387d1c7c91f3', '0404', '404', 'SIV#8 - AC 출력과전압(ACOV)', 'Tc2', 'C', 'SIV-AC 출력과전압(ACOV)', 'C', 'SIV', '보조전원장치(SIV)의 RS485 데이터 중 SIV-TCMS SD TEXT4의 Bit2 “ACOV” 신호가 “1”이 되면 +검지 +', '1) TCMS 화면하단 또는 고장화면에 ‘SIV AC 출력 과전압 검지' 표시됨. +2) 보조전원장치(SIV)는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 보조전원장치 중고장이 발생됨. +5) 중고장이 발생되면 TCMS 일반화면에 보조전원장치 상태 붉은색으로 표기되며, 연장급전 됨.', '보조전원장치(SIV)에서 출력되는 ACU, V, W 상의 전압이 500V 이상일 경우 검지됨. +', '1) 경고장이 발생할 경우 보조전원장치(SIV) 자동 재기동에 의해 재기동 됨. +2) 중고장이 발생했을 경우 조치 완료 후 보조전원장치(SIV) 리셋으로 고장 소거됨.', '1) 상기 고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 보조전원장치(SIV) 고장기록을 수집하여 출력되는 3상의 AC 전압값 확인함. +3) 특정상의 전압치가 비정상적일 경우 특정상에 해당되는 GDU, 전압센서, AC 출력단 결선을 확인한다. +4) 전압센서와 보조전원장치(SIV) 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작 상태를 시험기를 통해 확인한다. +6) 출력단 각 상의 절연상태 및 각상과 접지 간의 절연상태를 확인한다. +7) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b1b08717-7500-4283-906b-0afc6fc5c779', '0509', '509', 'DCU#3 1위(R1) - 출입문 잠김 리미트 스위치 고장', 'M2', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 “DLS Failure” 신호가 “1”이 되면 검지 +', '출입문 잠김 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b1b73343-6a18-43c2-9923-f2047ad9adb5', '0511', '511', 'DCU#2 5위(R3) - 출입문 닫힘 리미트 스위치2 고장', 'M1', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 “DCS2 Failure(Right)” 신호가 “1”이 되면 검지 +', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b1c25d7b-4aad-4e41-819a-0ac749735c94', '0504', '504', 'DCU#2 5위(R3)-출입문 외부비상핸들 취급(EAD)', 'M1', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b1c2d2c9-2d87-429d-a86b-a6c26a247b00', '0203', '203', 'BECU#8-전자제어밸브의 고장', 'Tc2', 'C', 'BECU-전자제어밸브의 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit2 “전자제어밸브의 고장” 신호가 "1"이 되면 검지.', '해당 차량 전자제어밸브의 고장 검지 현시 및 해당 차량 제동제어 불가.', '해당 차량의 상용전자제어밸브가 작동하지 않음.', '해당 차량의 상용전자제어밸브가 정상 작동 시 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b1dec45c-d95d-4972-a489-a43b0cdbe291', '0218', '218', 'BECU#8 - 인통선로직 비정상', 'Tc2', 'C', 'BECU-인통선로 직 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit1 “인통선로 직 비정상” 신호가 “1”이 되면 +검지 +', '해당 차량 인통선로 직비정상 검지 현시 및 해당 차량 정상적인제동제어불가 (상용제동 지령에 따른 제어)', '해당 차량의 추진선택(P), 제동선택(B) 신호가 동시에 ON됨. +', '해당 차량의 추진선택(P), 제동선택(B) 신호가 정상작동(상보적으로 작동)될 경우 소거', 'BECU를 리셋(BECU CB OFF/ON) 한 뒤, 마스콘을 제동 7단으로 5초간 취급하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b1fb8034-672e-4b5d-a894-0431bde8ca67', '1206', '1206', 'FDU#6-감지기3 고장', 'M3', 'C', 'FDU-감지기3 고장', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 "Detector1 State” 신호가 "10"이 되면 검지.', '감지기 고장상태 현시(자동 소거 안됨)', '1) 감지기로부터 데이터 응답이 없는경우. +2) 감지기로부터 수신된 데이터의 CRC가 맞지 않는경우 +3) 감지기로부터 수신된 데이터의 ID가 송신 ID와 일치하지 않는경우', 'FDU 전원 리셋 후 감지기로부터 정상적으로 데이터가 수신된 경우', '1) FDU 전원 리셋 후 고장 소거 여부 확인 +2) 정상 동작중인 감지기와 위치 교환 후 FDU 전원 리셋 및 고장 상태 확인 +3) 동일한 감지기에서 고장 발생시 감지기 교체 +4) 동일한 위치에서 고장 발생시 감지기 라인 점검', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b21006dd-ca0a-4cde-89e2-2422c1e19dfc', '0130', '130', 'VVVF-IPM Y상 이상검지(GDFY) (Car3)', 'M2', 'C', 'VVVF-IPM Y상 이상검지(GDFY)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT34의 Bit4 “GDFY” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 'IPM Y상 이상검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치 내부 IPM에 과전류, 과온이 검지될경우.', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반배전반의 VVVFIC nfb 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 견인전동기로 출력되는 3상의 전류치 확인함. +3) 특정상의 전류치가 비정상적일 경우 특정상에 해당되는 IPM, 전류센서, 모터결선을 확인한다. +4) 전류센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작상태를 시험기를 통해 확인한다. +6) IPM 전원공급기의 전원연결상태 또는 광케이블의 연결상태와 배선상태를 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.656536+00', null, '다대48량(2015)', 'Rotem'), ('b2209d80-b5a0-4ac0-a1cc-1f479e2b9a5a', '0504', '504', 'DCU#6 1위(R1)-출입문 외부비상핸들 취급(EAD)', 'M3', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b2447cbe-ab0c-442e-97e1-89b6a5231f0b', '0508', '508', 'DCU#5 3위(R2) - 출입문 모터/인코더 고장', 'T2', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 “Motor / Encoder failure” 신호가 “1”이 되면 +검지 +', '출입문 정상동작 불가', ' +1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우(인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터/인코더 회로 가 손상된 경우 +', '모터/인코더 및 DCU가 정상 상태이고, 전기적 연결 상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있는지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. ※ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. ? DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. ? DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) ? DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b2466a2b-f8b2-4d77-9298-64cfc74b2d82', '0507', '507', 'DCU#3 3위(R2) - 초기화 실패', 'M2', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 “Calibration failure” 신호가 “1”이 되면 검지 +', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터 고장, 장애물감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우 +', '초기화 실패를 야기한 고장코드를 확인하여 조치 후, 재닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인한다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b248246f-8d83-4a0d-819b-275c06013b0e', '0847', '847', '0', 'T1', '0', null, null, '0', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b256f542-5a3f-4adc-8112-9e97bc1fe2ad', '0328', '328', 'ATC#8-', 'Tc2', '0', null, null, '0', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b26a8367-9241-4ea5-ab85-340db494745e', '1113', '1113', '0', 'Tc1', '0', 'PSD-차상/지상간 통신장애', 'C', 'PSD', 'PSD 의 RS485 데이터 중 PSD-TCMS SD TEXT2의 Bit4 “차상/지상간 통신상태” 신호가 "0"이 되면 검지', 'PSD 지상장치 통신 연결 또는 전원 ON시 NG발생 +역사내 진입전 NG 발생 -> 역사내 진입후 NG 복귀 등의 현상이 일어날 경우', '차상장치내 무선모듈의 불량이 주원인이며, 설정 및 채널 변경오류시 발생됨. 또는 지상장치의 통신 연결 오류', '운전실 후부 PSD CN을 OFF - ON 실시하고 복귀가 되지 않을 경우 PSD 조작반을 취급하여 운행한다. 차량사업소 복귀후 해당 차상장치 및 지상장치 점검을 한다.', null, null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b26f8fb2-9865-45bb-883d-104fe8f9ed74', '0521', '521', 'DCU#8 6위(L3)-모듈 상태 이상', 'Tc2', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 "01"또는 "00"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b277c339-b30d-4c4e-ab0f-1167476fae9b', '0320', '320', 'ATC#8 - ATO 정위치 정차 오류', 'Tc2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b2880f03-62db-4132-a893-00b895e29df8', '0740', '740', 'HVAC#7 - 전자접촉기 증발기1(CREF) 고장', 'M4', 'C', 'HVAC-전자접촉기 증발기1(CREF) 고장', 'C', 'HVAC', 'HVAC 냉방 작동 중 CREF1 전자접촉기 고장 발생 +', 'UNIT1 냉방 작동 불가', '냉방 작동 중 2.5초 이상 동안 CREF1 작동 feedback 신호가 수신되지 않는 경우 +', 'CREF1 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CREF1을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CREF1과 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b28ee7f5-cd0f-4795-9b79-961169a81aa7', '0719', '719', 'HVAC#1-실내온도 센서2 고장', 'Tc1', 'C', 'HVAC-실내온도 센서2 고장', 'C', 'HVAC', '객실 실내온도 센서2 고장 발생', '실내온도 센서2 고장현시', '온도센서 검지범위는 -45~85도 (820~1330옴) 인데, 2초 이상 검지범위를 벗어나는 경우', '온도센서 검지 값이 2초 이상 허용온도 범위 내 일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820~1330옴 을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우, 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b2a33bc2-de15-4869-bc79-96c9a63b9850', '1209', '1209', 'FDU#3-스위치 고장', 'M2', 'C', 'FDU-스위치 고장', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT5의 Bit4 “Switch Fault” 신호가 "1"이 되면 검지.', 'Switch Fault 현시 및 FDU의 조작 버튼 동작 안됨(화재 검지 및 기타 기능에는 상관없음)', '1) FDU가 부팅될때 스위치가 눌려진 상태(3.3V 전압이 인가된 상태)인 경우 +2) FDU가 부팅될때 스위치 고장으로 인하여 항상 눌러진 상태(3.3V 전압이 인가된 상태)에 있는 경우.', 'FDU가 부팅될때 스위치가 눌려진 상태(3.3V 전압이 인가된 상태)가 아닌 경우 +조치조건 : +1) 고장이 발생한 수신기의 스위치 상태 확인 및 점검 +2) FDU의 전원을 리셋하여 소거여부 확인 +3) 문제가 지속될 경우, 수신기 교체', null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b2b02518-a4d2-42f9-ba17-ae75dab31a63', '0745', '745', 'HVAC#5-전자접촉기 배기팬2(CRVF) 고장', 'T2', 'C', 'HVAC-전자접촉기 배기팬2(CRVF) 고장', 'C', 'HVAC', 'HVAC 환기 작동 중 CRVF2 전자접촉기 고장 발생.', '환기 시 차량 배기팬2 운전 불가능', '환기 작동 중 2.5초 이상동안 CRVF2 작동 feedback 신호가 수신되지 않는 경우', 'CRVF2 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CRVF2를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRVF2와 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b2c1c811-0700-4345-bb29-bc2368e4931a', '0517', '517', 'DCU#5 6위(L3) - 출입문 장애물로 인한 열림 실패', 'T2', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Open failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘 상태로 대기', '도어열림 중 3회 장애물감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 열림 시, 장애물감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b2da6686-63af-4d92-af3e-0593b088d725', '0513', '513', 'DCU#6 1위(R1) - 모듈 상태체크 에러', 'M3', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 “Module check error” 신호가 “1”이 되면 검지 +', 'Modulecheckerror현시(출입문은 정상작동가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태 체크 기능에 이상이 생긴 경우 고장 발생 +', 'DCU의 ‘A' 모듈과 ‘B' 모듈 간, 상태 체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b2f95038-0dc4-4192-ab46-c829948eea16', '0504', '504', 'DCU#5 4위(L2) - 출입문 외부 비상핸들 취급(EAD)', 'T2', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b2fae8a6-6264-4811-a680-36a4ba02b034', '0141', '141', 'VVVF#6-제어전원전압이상(PWM1)(CLVD_P1)', 'M3', 'C', 'VVVF-제어전원전압이상(PWM1)(CLVD_P1)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT29의 Bit6 “CLVD_P1” 신호가 "1"이 되면 검지.', null, 'PWM보드 내부의 제어전원 이상 검지 시 중고장 발생.', '동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) PWM보드 1군 전면의 CN1, CN2 커넥터 핀 상태 및 체결상태 확인. +2) PWM보드 1군 내부의 PCB의 소손, 냉납, 열화 유무 확인. +3) 추진제어장치 시험기를 이용하여 PWM보드의 정상동작을 확인한다. +4) 상기의 점검부분에 이상이 있을 경우 관련부품을 교체한다.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b2fe465f-e505-4eb2-ae3f-910b1ce9e9d8', '0507', '507', 'DCU#5 6위(L3) - 초기화 실패', 'T2', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 “Calibration failure” 신호가 “1”이 되면 검지 +', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터 고장, 장애물감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우 +', '초기화 실패를 야기한 고장코드를 확인하여 조치 후, 재닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인한다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b300e476-6895-425c-a071-aeabff97df01', '0515', '515', 'DCU#2 2위(L1) - 출입문 열림 시간 초과', 'M1', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 “Open time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 열림 동작시간이 6초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도한 후, ‘장애물로 인한 열림 실패' 고장과 함께 ‘Open time out' 고장이 함께 현시 +', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b302556b-0756-4fbd-b23e-6f49124814fa', '1203', '1203', 'FDU#7 - 감지기2 화재감지', 'M4', 'W', 'FDU-감지기2 화재감지 (Car1~8)', 'W', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 “Detector1 State” 신호가 “11”이 되면 검지 +', '화재상태현시(자동소거 안 됨.)', '하기 2가지 조건을 모두 만족하여야 화재신호가 출력 됨. (연동모드 동작) +1) 이웃한(앞 혹은 뒤에 위치한) 감지기 중 하나의 감지기라도 주의 혹은 화재상태에 있어야 함. +2) Detector1(해당 감지기)에서 측정된 연기농도가 15% 이상이거나 온도가 65℃ 이상인 경우 +', '1) FDU의 복귀버튼 조작 시 +2) FDU 전원 리셋 시', '1) 해당 감지기 위치의 화재 발생 여부 확인 +2) 화재 오감지일 경우 FDU의 복귀버튼 취급 +3) 오감지일 경우 감지기의 청소주기 확인(내부 먼지 제거)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b3029f1d-fa7e-43c0-8cff-fa6ae41d7709', '0414', '414', 'SIV#8 - 게이트 드라이버 고장, WZ1상(GDFWZ1)', 'Tc2', 'C', 'SIV-게이트 드라이버 고장, WZ1상(GDFWZ1)', 'C', 'SIV', '보조전원장치(SIV)의 RS485 데이터 중 SIV-TCMS SD TEXT5의 Bit4 “GDFUX1” 신호가 “1”이 되면 검지 +', '1) TCMS 화면하단 또는 고장화면에 ‘GDFUX1상 이상 검지'표시됨. +2) 보조전원장치(SIV)는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 보조전원장치(SIV) 중고장이 발생됨. +5) 중고장이 발생되면 TCMS 일반화면에 보조전원장치(SIV) 상태 붉은색으로 표기되며, 연장급점 됨.', '보조전원장치(SIV) 내부 GDU에 과전류, 과온이 검지될 경우 +', '1) 경고장이 발생할 경우 보조전원장치(SIV) 자동 재기동에 의해 재기동 됨. +2) 중고장이 발생할 경우 보조전원장치(SIV) 리셋으로 고장 소거됨.', '1) 상기 고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 보조전원장치(SIV) 고장기록을 수집하여 출력되는 3상의 AC 전류치를 확인함. +3) 특정상의 전류치가 비정상적일 경우 특정상에 해당되는 GDU, 전류센서, 출력단 결선을 확인 한다. +4) 전류센서와 보조전원장치(SIV) 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작 상태를 시험기를 통해 확인한다. +6) GDU 전원공급기의 전원연결 상태 또는 광케이블의 연결 상태와 배선상태를 확인한다. +7) 출력단 각상의 절연상태 및 각상과 접지 간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b352b342-87be-437e-8580-4c03ee598e2a', '0729', '729', 'HVAC#6-냉난방장치2 리턴 센서 고장', 'M3', 'C', 'HVAC-냉난방장치2 리턴 센서 고장', 'C', 'HVAC', '냉난방장치2의 리턴 센서 고장 발생', '냉난방장치2 리턴센서 고장현시', '온도센서 검지범위는 -45~85도 (820~1330옴) 인데, 2초 이상 검지범위를 벗어나는 경우', '온도센서 검지 값이 2초 이상 허용온도 범위 내 일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820~1330옴 을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우, 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b363601d-32c1-4132-91e7-dc597064bbaf', '0512', '512', 'DCU#5 6위(L3) - 파라미터 로딩 실패', 'T2', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 “Paraneter error” 신호가 “1”이 되면 검지 +', 'Parametererror 현시(출입문은 정상작동 가능)', 'DCU 자체 내의 EEPROM으로부터 parameter데이터 로딩 실패 +', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b368691c-0d0f-4659-85a1-598b963447bb', '0500', '500', 'DCU#7 3위(R2) 통신고장', 'M4', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS간 RS485 통신고장이 검지되면 발생.', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐 상태 등의 변화가 없음.', '1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우', '해당차량의 DCU 및 CU/TU 의 전원이 정상상태이고, 통신라인 연결상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜저 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는데도 지속적으로 통순고장이 검지되면, DCU의 X2,X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b37d2f73-06e6-4909-ba63-53168f9dfd69', '0802', '802', '실내객실표시기(PIB) 고장(Car#1)', 'Tc1', 'C', '통합방송표시기-실내객실표시기(PIB) 고장', 'C', 'AVC', '통합방송표시기의 E-NET 데이터 중 통합방송표시기-TCMS SD TEXT7의 Bit0 “PIB 고장” 신호가 “1” +이 되면 검지 +', '고장장치 통신불량으로 현시불능', '마스터통합방송제어기에 주기적(2초) TCP 응답이 없을 경우 통신불량으로 판단 +', '마스터통합방송제어기에 TCP 응답재개', '관련 CB(승객안내표시기, CBPIB) 리셋하고 통신라인 및 상태점검 관련도면 : REC70710FG0', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b383cc7a-088f-4a82-9714-2619491be033', '0709', '709', 'HVAC#6 - 냉난방장치2 압력스위치2(DPS) 저압', 'M3', 'D', 'HVAC-냉난방장치2 압력스위치2(DPS) 저압', 'D', 'HVAC', '냉난방장치2 냉매 압력스위치2 저압 발생 +', 'UNIT2CYCLE2 냉방기능불가', 'UNIT2DSP2측 냉매압력이 3초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우 +', '냉매압력이 정상수치 2±0.5(kgf/cm2) 이상으로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CREF4의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)를 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설 여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안 되는 것을 확인한 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b38a89db-f9b0-44ea-9209-8c7e985d81a9', '0711', '711', 'HVAC#2 - 냉난방장치2 압력스위치1(DPS) 저압', 'M1', 'D', 'HVAC-냉난방장치2 압력스위치1(DPS) 저압', 'D', 'HVAC', '냉난방장치2 냉매 압력스위치1 저압 발생 +', 'UNIT2CYCLE1 냉방기능불가', 'UNIT2DSP1측 냉매압력이 3초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우 +', '냉매압력이 정상수치 2±0.5(kgf/cm2) 이상으로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CREF4의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)를 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설 여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안 되는 것을 확인한 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b3a18c80-4b01-443e-8b20-6b88e4c4dc5b', '0116', '116', 'VVVF-Stack 과온검지1(OTD1) (Car3)', 'M2', 'C', 'VVVF-Stack 과온검지1(OTD1)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT32의 Bit3 “OTD1” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 '스택과온검지1' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동이 되지 않으며 중고장으로 처리됨. +3) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치 냉각기의 온도가 105도 이상인 조건에서 검지.', '1) 추진제어장치 리셋으로 고장 소거됨.', '1) 상기고장이 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 냉각기의 손상이 없는지 확인한다. +3) 추진제어장치 내부에 IPM에 손상이 없는지 확인한다. +4) 인버터 유닛 내부에 온도센서 및 결선에 이상이 없느지 확인한다. +5) DIN 보드의 동작상태를 시험기를 통해 확인한다. +6) IPM 전원공급기의 전원연결상태 또는 광케이블의 연결상태와 배선상태를 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.656536+00', null, '다대48량(2015)', 'Rotem'), ('b3a63a17-7619-4db3-b7bd-30c95f7b0eba', '0500', '500', 'DCU#4 5위(R3) 통신고장', 'T1', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS간 RS485 통신고장이 검지되면 발생.', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐 상태 등의 변화가 없음.', '1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우', '해당차량의 DCU 및 CU/TU 의 전원이 정상상태이고, 통신라인 연결상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜저 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는데도 지속적으로 통순고장이 검지되면, DCU의 X2,X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b3b0c2d4-6b46-4ec8-9881-9fa430c291d7', '0511', '511', 'DCU#7 2위(L1) - 출입문 닫힘 리미트 스위치2 고장', 'M4', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 “DCS2 Failure(Right)” 신호가 “1”이 되면 검지 +', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b3c126b5-8ca5-4e29-8388-5080e5e9ae0c', '0403', '403', 'SIV#1-AC 출력저전압(ACUV)', 'Tc1', 'C', 'SIV-AC 출력저전압(ACUV)', 'C', 'SIV', '보조전원장치(SIV)의 RS485 데이터 중 SIV-TCMS SD TEXT4의 Bit1 “ACUV” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 'SIV AC 출력저전압 검지' 표시됨. +2) 보조전원장치(SIV)는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 보조전원장치 중고장이 발생됨. +5) 중고장이 발생되면 TCMS 일반화면에 보조전원장치 상태 붉을색으로 표기되며, 연장급전 됨.', '보조전원장치(SIV)에서 출력되는 AC U, V, W 상의 전압이 250V 이하일 경우 검지됨.', '1) 경고장이 발생할 경우 보조전원장치(SIV) 자동 재기동에 의해 재기동 됨. +2) 중고장이 발생했을 경우 조치 완료 후 보조전원장치(SIV) 리셋으로 고장 소거됨.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 보조전원장치(SIV) 고장기록을 수집하여 출력되는 3상의 AC 전압값 확인함. +3) 특정상의 전압치가 비정상적일 경우 특정상에 해당되는 GDU, 전압센서, AC 출력단 결선을 확인한다. +4) 전압센서와 보조전원장치(SIV) 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작상태를 시험기를 통해 확인한다. +6) 출력단 각 상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +7) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b3d080ec-c29d-4807-8b07-db6188111cf6', '0173', '173', 'VVVF#2 - 전류센서 이상검지(CTERR)', 'M1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b3d3fe61-7141-4787-a42b-bea0a01ec162', '0132', '132', 'VVVF-IPM X상 이상검지(GDFX) (Car2)', 'M1', 'C', 'VVVF-IPM X상 이상검지(GDFX)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT34의 Bit6 “GDFX” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 'IPM X상 이상검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치 내부 IPM에 과전류, 과온이 검지될경우.', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반배전반의 VVVFIC nfb 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 견인전동기로 출력되는 3상의 전류치 확인함. +3) 특정상의 전류치가 비정상적일 경우 특정상에 해당되는 IPM, 전류센서, 모터결선을 확인한다. +4) 전류센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작상태를 시험기를 통해 확인한다. +6) IPM 전원공급기의 전원연결상태 또는 광케이블의 연결상태와 배선상태를 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.656536+00', null, '다대48량(2015)', 'Rotem'), ('b3d4a0e5-3e4b-4c2d-8cd5-990b16335511', '0804', '804', '측면제어기(SOB) 매립형 고장(Car#1)', 'Tc1', 'C', '통합방송표시기-측면제어기(SOB) 매립형 고장', 'C', 'TCMS', '통합방송표시기의 RS485 데이터 중 통합방송표시기-TCMS SD TEXT8의 Bit2 “SOB IN 고장” 신호가 "1"이 되면 검지.', '고장장치 통신 불량으로 방송기능 불능', '마스터 통합방송제어기에 주기적(2초) TCP 응답이 없을 경우 통신 불량으로 판단', '마스터 통합방송제어기에 TCP 응답 재개', '관련 CB(방송/표시기/CCTV 전원공급장치1, CBPAU# +1) 리셋하고 통신라인 및 상태 점검. +관련도면 :', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b3dfdc4a-7be0-4c08-85d0-26da91fe604a', '0513', '513', 'DCU#1 1위(R1) - 모듈 상태체크 에러', 'Tc1', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 “Module check error” 신호가 “1”이 되면 검지 +', 'Modulecheckerror현시(출입문은 정상작동가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태 체크 기능에 이상이 생긴 경우 고장 발생 +', 'DCU의 ‘A' 모듈과 ‘B' 모듈 간, 상태 체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b401cc31-8520-4f48-8132-ae833cb71543', '0416', '416', 'SIV#8 - 게이트 드라이버 고장, UX1상(GDFUX1)', 'Tc2', 'C', 'SIV-게이트 드라이버 고장, UX1상(GDFUX1)', 'C', 'SIV', '보조전원장치(SIV)의 RS485 데이터 중 SIV-TCMS SD TEXT5의 Bit6 “GDFUX1” 신호가 “1”이 되면 검지 +', '1) TCMS 화면하단 또는 고장화면에 ‘GDFUX1상 이상 검지' 표시됨. +2) 보조전원장치(SIV)는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 보조전원장치(SIV) 중고장이 발생됨. +5) 중고장이 발생되면 TCMS 일반화면에 보조전원장치(SIV) 상태 붉은색으로 표기되며, 연장급점 됨.', '보조전원장치(SIV) 내부GDU에 과전류, 과온이 검지될 경우 +', '1) 경고장이 발생할 경우 보조전원장치(SIV) 자동 재기동에 의해 재기동 됨. +2) 중고장이 발생할 경우 보조전원장치(SIV) 리셋으로 고장 소거됨.', '1) 상기 고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 보조전원장치(SIV) 고장기록을 수집하여 출력되는 3상의 AC 전류치를 확인함. +3) 특정상의 전류치가 비정상적일 경우 특정상에 해당되는 GDU, 전류센서, 출력단 결선을 확인 한다. +4) 전류센서와 보조전원장치(SIV) 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작 상태를 시험기를 통해 확인한다. +6) GDU 전원공급기의 전원연결 상태 또는 광케이블의 연결 상태와 배선상태를 확인한다. +7) 출력단 각상의 절연상태 및 각상과 접지 간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b40b6b27-962e-4a3e-a8ec-1ad1301e692f', '0201', '201', 'BECU#1 - 덤프밸브 고장(후미대차)', 'Tc1', 'C', 'BECU-덤프밸브고장(후미대차)', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit0 “덤프밸브고장(후미대차)” 신호가 “1”이 +되면 검지 +', '해당 차량 덤프밸브 고장(후미대차)검지 현시 및 해당 차량 활주제어 불가', '해당 차량 후미대차의 덤프밸브가 작동하지 않음. +', '해당 차량 후미대차의 덤프밸브가 정상작동 시 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b429958d-6a88-4fc9-bf67-a8279c435709', '0043', '43', '비상판토 트립(Car2)', 'M1', 'W', '비상판토 트립(CAR2)', 'W', 'TCMS', '차량으로부터 NO EMERGENCY PANTO TRIP 신호 미입력시', '판도 하강 및 VVVF, SIV 고압 차단', '가선 차단', '판토 하강 및 가선 투입', null, null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b42fc5c7-0c00-4749-b4a7-2c41c17f5803', '0240', '240', 'BECU#2 - 2축 스키드신호', 'M1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b4402572-1a99-4aa8-9f97-efd8e056d72a', '0506', '506', 'DCU#2 4위(L2)-출입문 입력 저전압', 'M1', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 "1"이 되면 검지.', '저전안 상태 (출입문 동작이 심하게 느려지거나 작동조차 안될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b44a378a-819a-450a-b75d-90bc204fc2fb', '0229', '229', 'AS 코크#1 차단(Car2)', 'M1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b4500e08-cc15-435e-b7c0-fb7973b564ae', '0326', '326', 'ATC#8 - ATO PG32 미스 오류', 'Tc2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b450af96-f4e9-4fd0-9ecb-ceaadd91fd8a', '0176', '176', 'VVVF#6 - LB1 고착(LB1NO)', 'M3', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b46ed368-c787-400f-bc8a-9c42ad0a4bed', '0222', '222', 'BECU#3-공기스프링누설(후미대차)', 'M2', 'C', 'BECU-공기스프링누설(후미대차)', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit5 “공기스프링누설(후미대차)” 신호가 "1"이 되면 검지.', '해당 차량 공기스프링누설(후미대차) 검지 현시 및 해당차량 정상적인 제동제어 불가.(응하중 제어)', '해당 차량 후미대차의 공기스프링(AS3, AS4) 압력이 정상범위를 벗어남.(100kPa 미만)', '해당 차량 후미대차의 공기스프링(AS3, AS4) 압력이 정상범위일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b471e416-719b-470e-9bf4-4ecfe822c808', '0077', '77', 'PWM 엔코더#1#2 전체 고장', 'Tc2', 'A', 'PWM엔코더 전체고장(TC1/TC2)', 'A', '기타', '차량으로부터 PWM ENCODER#1(#2) FAULT 신호 미입력 시 +', '1) 엔코더 1계 PWM 출력 고장 시 1계 고장에 해당되는 신호 출력 +2) 엔코더 2계로 자동 절체 +3) 엔코더 2계 PWM 출력 고장 시 1계, 2계 고장 모두 출력 +4) 엔코더 PWM 출력 신호 없음', '1) 엔코더 1계 PWM 출력 신호 이상 시 +2) 엔코더 2계 PWM 출력 신호 이상 시 +3) 엔코더 1계, 2계 PWM 출력 신호 이상 시 +4) 엔코더 수동절체버튼 3초 이상 조작 시 +', '1) 엔코더의 전원 차단 후 재투입하여 소거되는지 확인 +2) 수동절체버튼의 조작으로 인한 고장 출력 또한 전원 재투입으로 소거함', '1) 엔코더의 전원 차단 후 재투입하여 소거되지 않을 시 정상품으로 교체하여 정상동작 확인 +2) 교체된 고장품의 고장원인 분석 회로 도면 : REC10100DX0', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b48322f7-b01d-45b5-8878-3f1b8a56bbdd', '0427', '427', 'IVS 서비스위치 아님(Car8)', 'Tc2', 'W', null, null, 'SIV', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b4a0ee47-0b7e-4193-a439-ea83705ad2b0', '0514', '514', 'DCU#2 4위(L2) - 출입문 닫힘 시간 초과', 'M1', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 “Close time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 닫힘 동작 시간이 7초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도한 후, ‘장애물로 인한 닫힘 실패' 고장과 함께 ‘Close time out' 고장이 함께 현시 +', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b4a81d79-b7e2-4fa1-becc-a94f7c271a53', '1526', '1526', 'TCMS 데이타버스2 우측라인 통신 이상(Car3)', 'M2', 'C', 'TCMS 데이터버스2 우측라인 통신 이상', 'C', 'TCMS', 'TCMS의 초기 기동 시 자기진단에 의한 2중계 메인통신선 중 2계 메인통신 이상 검지 시 +', '1) SL-NET 2중계이므로 데이터버스 1계로 정상통신, 운행에 지장 없음. +2) 초기기동 자기진단 시 2중���를 점검하여 2계측의 이상이 검지되었다는 점검 필요용 메시지', '초기 기동 시 SL-NET 1계와 2계를 각각 통신 후 비교하여 1계는 정상통신이 되나 2계는 정상통신이 안 되는 경우 +', '정상 수리 후 차량 전체 재기동하여 SL-NET 1계와 2계 모두 정상통신이 되는 경우', '1) 고장검출호차와 고장검출 우측호차와의 SL-NET 통신 2계 정상여부 확인(예 : 고장호차가 3호차인 경우, 1-2-3-4-5-6-7-8에서 3호차의 우측 즉, 3-4호차간 SL-NET 2계 통신 상태 점검 필요) +2) 고장검지호차의 SCM PCB 교체 정상여부 확인 +3) 고장검지호차의 우측호차 SCM PCB 교체 정상여부 확인 +4) 고장검지호차와 고장검지 우측호차의 SL-NET 2계 메인통신 배선의 연결 상태 확인 +5) 2 ~ 4번에도 정상적으로 복귀되지 않는 경우, CU/TU ASS'Y 교체(백보드 확인 필요)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b4a9439d-4e89-4d92-9290-136cff7bf104', '0723', '723', 'HVAC#2 - 냉난방장치1 압력스위치2(DPS) 냉매부족', 'M1', 'C', 'HVAC-냉난방장치1 압력스위치2(DPS) 냉매부족', 'C', 'HVAC', '냉난방장치1 냉매 압력스위치2 저압 발생 +', 'UNIT1CYCLE2 냉방 기능 불가', 'UNIT1DSP2측 냉매압력이 30초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우 +', '냉매압력이 정상수치 2±0.5(kgf/cm2) 이상 유지하도록 하고, 마이콤전원을 리셋', '1) 배전반 점검 커버를 열고 마이콤 전원을 리셋한 후, 냉방 가동 시, CREF2의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)을 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설 여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안 되는 것을 확인한 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b4b2920d-a16d-4903-abc5-1034fe635f04', '1106', '1106', 'PSD#8-지상 PSD 장애(2계) ', 'Tc2', 'D', null, null, 'PSD', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b4d23302-9d4e-45bb-9476-b49ae9db2b78', '0138', '138', 'VVVF#6 - 입력과전류 검지(ISOC)', 'M3', 'C', 'VVVF-가선과전류 검지(ISOC)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT29의 Bit3 “ISOC” 신호가 “1”이 되면 검지 +', '1) TCMS 화면 하단 또는 고장화면에 ‘가선과전류 검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생함. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉은색으로 표기되며, HSCB, LB1, 2 개방되어 동력 손실 발생함.', '추진제어장치에 입력되는 전류가 1, 500A 이상일 경우 검지됨. +', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반 배전반의 VVVFIC nfb 재투입 또는 차량 배터리 전원 재투입', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 추진제어장치에 입력되는 전류치 확인함. +3) 입력되는 전류치가 비정상적일 경우 추진제어장치 입력회로 (HSCB, LB1, 2, CHRe)를 점검한다. +4) LB Box 내의 전류센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인 한다. +5) SEN 보드의 동작 상태를 시험기를 통해 확인한다. +6) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b4d998bf-4c86-4446-8705-2d3473fc3313', '0518', '518', 'DCU#4 4위(L2)-출입문 Enable 신호 에러', 'T1', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 "Enable signal error” 신호가 "1"이 되면 검지.', 'DCU 출입문 Enable 신호 에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) 취급시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함.', '해당출입문 enable 신호 수신', '1) AUTO/MCS 모드시에는 YARD모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인한다. (YARD/FMC 모드시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.392739+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b4e32d5c-4251-47ba-8ae1-62f337b7d29c', '0135', '135', 'MDS 서비스위치 아님(Car6)', 'M3', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b513145f-788b-4307-b481-396b4987fa0a', '1211', '1211', 'FDU#2 - 체크섬 고장', 'M1', 'C', 'FDU-체크섬 고장', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT5의 Bit7 “Checksum Fault” 신호가 “1”이 되면 검지 +', 'ChecksumFault 현시 및 FDU의 정상동작 불가능', '수신기펌웨어의 오류로 인한 체크섬 이상(MCU 내부 플래쉬메모리에 저장된 체크섬과 프로그램의 체크섬 계산값이 다를 경우) +', 'FDU가 부팅될 때 MCU 내부 플래쉬메모리에 저장된 체크섬과 프로그램의 체크섬 계산값이 같을 경우', '1) FDU의 전원을 리셋하여 소거여부 확인 +2) 문제가 지속될 경우, 수신기 교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b5175f37-c987-4aa2-a4e7-d71019b3b478', '0500', '500', 'DCU#7 5위(R3) 통신고장', 'M4', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS 간 RS485 통신고장이 검지되면 발생 +', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐상태 등의 변화가 없음.', ' +1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우 +', '해당 차량의 DCU 및 CU/TU의 전원이 정상상태이고, 통신 라인 연결 상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜져 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적 으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는 데도 지속적으로 통신고장이 검지되면, DCU의 X2, X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상 체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b52cd48a-c8de-4d3f-bd5a-f450e1b65c5f', '0858', '858', '실내객실표시기(PIB) 고장(Car#6)', 'M3', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b5327dcf-375b-4643-9d39-b0a45bd209e0', '0736', '736', 'HVAC#3 - 전자접촉기 압축기(CRCM)1 고장', 'M2', 'C', 'HVAC-전자접촉기 압축기(CRCM)1 고장', 'C', 'HVAC', 'HVAC 냉방 작동 중 CRCM1 전자접촉기 고장 발생 +', '냉방 기능 저하(전냉방 시 반냉방으로 작동)', '냉방 작동 중 2.5초 이상 동안 CRCM1 작동 feedback 신호가 수신되지 않는 경우 +', 'CRCM1 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CRCM1을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRCM1과 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b533e122-b058-4518-8af4-84340ae4223f', '0516', '516', 'DCU#1 3위(R2)-출입문 장애물로 인한 닫힘 실패', 'Tc1', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Close failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림상태로 대기', '도어 닫힘 중 3회 장애물 감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b536fa80-3796-40cf-8aa4-aaf70e50e2cc', '0501', '501', 'DCU#7 6위(L3)-출입문 차단', 'M4', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b53aae73-7a77-4702-a3c9-ee597b966613', '0122', '122', 'VVVF-후진속도검지(BSD) (Car7)', 'M4', 'C', 'VVVF-후진속도검지(BSD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT33의 Bit3 “BSD” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 '후진속도검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨.', '1) 추진제어장치에서 계산한 속도가 -5km/h 이하인 경우 검지됨.', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 견인전동기 속도센서 상태를 확인하고, 속도센서가 연결된 경로 배선연결 상태를 확인한다. +3) PGI 보드의 동작상태를 시험기를 통해 확인한다. +4) 속도신호에 이상이 없을 경우 운행기록을 수집하여 출발시 정차제동에 이상이 없는지 확인한다. +5) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.71571+00', null, '다대48량(2015)', 'Rotem'), ('b5419036-5992-44af-b50c-9d616a22824e', '0142', '142', 'VVVF#6 - 배터리 전원저하(P100LVD)', 'M3', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b54cbb42-455a-4bd9-8f80-418b0f5eab30', '1400', '1400', 'BMS#8 통신고장', 'Tc2', 'B', 'BMS 통신고장', 'B', 'BMS', 'BMS와 TCMS 간 RS485 통신고장이 검지되면 발생 +', '화면상BMS의 배터리전압 등의 데이터가반응하지 않음.', 'TCMS의 데이터를 수신 못함. +', 'TCMS의 데이터를 받고, TCMS에서 BMS 상태정보가 표시됨.', '1) BMS 보드 교체 +2) TCMS 통신 포트 점검 +3) TCMS와 BMS 간의 통신계통 점검', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b54eac2e-425e-4b78-8cf3-6646d788367b', '0149', '149', 'VVVF#2 - FC 저전압검지(FCLVD)', 'M1', 'C', 'VVVF-FC 저전압검지(FCLVD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT30의 Bit6 “FCLVD” 신호가 “1”이 되면 검지 +', '1) TCMS 화면 하단 또는 고장화면에 ‘FC 저전압검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생함. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉은색으로 표기되며, HSCB, LB1, 2 개방되어 동력 손실 발생함.', '추진제어장치 내부 FC 전압이 850V 이상일 경우 검지됨. +', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반 배전반의 VVVFIC nfb 재투입 또는 차량 배터리 전원 재투입', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 FC전압에 이상이 있는지 확인한다. +3) 추진제어장치 내부 고전압부에 소손흔적이 있는지 확인한다. +4) FC에 연결된 부스바의 체결상태가 양호한지 확인한고, 부스바를 분리하여 FC의 Capacitance를 측정하여 이상이 없는지 확인한다. +5) 전압센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +6) SEN 보드의 동작 상태를 시험기를 통해 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지 간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b55009aa-2210-488d-a0c0-c71b48422d33', '0421', '421', 'SIV#1-제어전원 저전압(CPCF)', 'Tc1', 'C', 'SIV-제어전원 저전압(CPCF)', 'C', 'SIV', '보조전원장치(SIV)의 RS485 데이터 중 SIV-TCMS SD TEXT6의 Bit6 “CPCF” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 '제어전원 저전압 이상검지' 표시됨. +2) 보조전원장치(SIV)는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 보조전원장치(SIV) 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 보조전원장치(SIV) 상태 붉을색으로 표기되며, 연장급전 됨.', '보조전원장치(SIV) 제어기에 입력되는 제어전원이 65V 이하일 경우 검지.', '1) 경고장이 발생할 경우 보조전원장치(SIV) 자동 재기동에 의해 재기동 됨. +2) 중고장이 발생할 경우 보조전원장치(SIV) 리셋으로 고장 소거됨.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 보조전원장치(SIV)로 입력되는 제어전원 배선을 점검한다. +3) 제어전원부 내부 부품에 소손이 없는지 확인한다. +4) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b563fdc9-9c6b-457b-a18f-c06175be3152', '0130', '130', 'VVVF-IPM Y상 이상검지(GDFY) (Car6)', 'M3', 'C', 'VVVF-IPM Y상 이상검지(GDFY)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT34의 Bit4 “GDFY” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 'IPM Y상 이상검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치 내부 IPM에 과전류, 과온이 검지될경우.', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반배전반의 VVVFIC nfb 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 견인전동기로 출력되는 3상의 전류치 확인함. +3) 특정상의 전류치가 비정상적일 경우 특정상에 해당되는 IPM, 전류센서, 모터결선을 확인한다. +4) 전류센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작상태를 시험기를 통해 확인한다. +6) IPM 전원공급기의 전원연결상태 또는 광케이블의 연결상태와 배선상태를 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.656536+00', null, '다대48량(2015)', 'Rotem'), ('b56690e0-55f6-425d-9526-0fa1569936ad', '0212', '212', 'BECU#2 - 1축 속도신호의 비정상', 'M1', 'C', 'BECU-1축속도신호의 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit3 “1축속도신호의 비정상” 신호가 “1”이 +되면 검지 +', '해당 차량 1축속도신호의 비정상 검지 현시 및 해당 차량 활주제어불가', '해당 차량의 1축속도센서 고장 발생 +', '해당 차량의 1축속도센서가 정상적일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b57b9d30-c1e3-49ef-8180-81e0dd450ff5', '0154', '154', 'VVVF#2 - 후진속도검지(BSD)', 'M1', 'W', 'VVVF-후진속도검지(BSD)', 'W', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT31의 Bit3 “BSD” 신호가 “1”이 되면 검지 +', '1) TCMS 화면 하단 또는 고장화면에 ‘후진속도검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨.', '추진제어장치에서 계산한 속도가 -5km/h 이하인 경우 검지됨. +', '경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 견인전동기 속도센서 상태를 확인하고, 속도센서가 연결된 경로 배선연결 상태를 확인한다. +3) PGI 보드의 동작 상태를 시험기를 통해 확인한다. +4) 속도신호에 이상이 없을 경우 운행기록을 수집하여 출발 시 정차제동에 이상이 없는지 확인 한다. +5) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b57f2c20-5bf1-413e-a636-923dbaddd9f0', '0744', '744', 'HVAC#6 - 전자접촉기 보조히터1(AHEK) 고장', 'M3', 'C', 'HVAC-전자접촉기 보조히터1(AHEK) 고장', 'C', 'HVAC', 'HVAC 보조난방기 작동 중 AHEK1 전자접촉기 고장 발생 +', 'UNIT1보조난방기전난방시반난방만 작동', '보조난방기 작동 중 2.5초 이상 동안 AHEK1 작동 feedback 신호가 수신되지 않는 경우 +', 'AHEK1 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) AHEK1을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, AHEK1과 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b5811ecf-8d67-41d3-9bbd-b14d2f290322', '0508', '508', 'DCU#8 1위(R1)-출입문 모터/인코더 고장', 'Tc2', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 "Motor / Encoder failure” 신호가 "1"이 되면 검지.', '출입문 정상동작 불가', '1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우 (인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터 / 인코더 회로가 손상된 경우', '모터/인코더 및 DCU가 정상상태이고, 전기적 연결상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있느지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. +★ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. + +1. DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. +2. DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) +3. DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b5839de0-8268-4c00-a011-57fbbbb79491', '0201', '201', 'BECU#8-덤프밸브고장(후미대차)', 'Tc2', 'C', 'BECU-덤프밸브고장(후미대차)', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit0 “덤프밸브고장(후미대차)” 신호가 "1"이 되면 검지.', '해당 차량 덤프밸브고장(후미대차) 검지 현시 및 해당 차량 활주제어 불가.', '해당 차량 후미대차의 덤프밸브가 작동하지 않음.', '해당 차량 후미대차의 덤프밸브가 정상 작동 시 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b597af9b-0b76-4c6e-af1d-65547177e65e', '0083', '83', '화재검지(Car6)', 'M3', 'W', null, null, 'FDU', null, null, null, null, null, null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b59d3faa-0776-4160-936b-a3558326c348', '0507', '507', 'DCU#2 6위(L3) - 초기화 실패', 'M1', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 “Calibration failure” 신호가 “1”이 되면 검지 +', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터 고장, 장애물감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우 +', '초기화 실패를 야기한 고장코드를 확인하여 조치 후, 재닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인한다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b5b644c3-a0f5-481a-8faf-be3afa9edb0c', '0505', '505', 'DCU#1 1위(R1) - 출입문 입력 고전압', 'Tc1', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 “1”이 되면 검지 +', '고전압 상태(그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상 +', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b5bdceeb-580c-427c-8bf9-fb606e155091', '0740', '740', 'HVAC#6 - 전자접촉기 증발기1(CREF) 고장', 'M3', 'C', 'HVAC-전자접촉기 증발기1(CREF) 고장', 'C', 'HVAC', 'HVAC 냉방 작동 중 CREF1 전자접촉기 고장 발생 +', 'UNIT1 냉방 작동 불가', '냉방 작동 중 2.5초 이상 동안 CREF1 작동 feedback 신호가 수신되지 않는 경우 +', 'CREF1 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CREF1을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CREF1과 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b5c7ab5d-4711-4b63-80ce-1e26d14bc4f5', '0104', '104', 'VVVF#6 - 휠 슬라이드 검지(WSD)', 'M3', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b5c86f5d-83d8-4725-81ac-aa5f44766e02', '0520', '520', 'DCU#2 1위(R1)-이중계 절체 동작', 'M1', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 "Module switchover' 신호가 "1"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.392739+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b5c8d09a-a4d6-4f95-9780-41a128e951f8', '0820', '820', '실내카메라#2(SCAM) 고장(Car#2)', 'M1', 'C', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b5d08769-6935-45ad-b604-df0580e5d594', '0501', '501', 'DCU#6 6위(L3) - 출입문 차단', 'M3', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b5dc13e3-515c-4584-a101-a84244e53adb', '0219', '219', 'BECU#4-제동지령 비정상', 'T1', 'C', 'BECU-제동지령 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit2 “제동지령 비정상” 신호가 "1"이 되면 검지.', '해당 차량 제동지령 비정상 검지 현시 및 해당차량 정상적인 제동제어 불가. (상용제동지령에 따른 제어)', '해당 차량의 제동지령 신호가 정상범위를 벗어남(5.0~95.0%).', '해당 차량의 제동지령 신호가 정상범위일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. +소거되지 않을 경우 해당 선택 운전실의 PWM 엔코더를 리셋(CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b5dd5aab-68a9-47b4-a9cd-59d8dd722854', '0515', '515', 'DCU#6 3위(R2) - 출입문 열림 시간 초과', 'M3', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 “Open time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 열림 동작시간이 6초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도한 후, ‘장애물로 인한 열림 실패' 고장과 함께 ‘Open time out' 고장이 함께 현시 +', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b5e8076c-0e78-435f-8bac-5736ee5cce70', '0224', '224', 'BECU#2 - 파트너차 ECU 고장(PECUF)', 'M1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b602d9d6-cbc6-4bc1-bff1-0cdb108f0452', '0184', '184', '역행관련 회로차단기 차단(Car8)', 'Tc2', 'W', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.578803+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b603928f-1a84-4d3e-b277-f2c8ba2bbbd7', '0718', '718', 'HVAC#3-CO2 센서1 고장', 'M2', 'C', 'HVAC-CO2 센서1 고장', 'C', 'HVAC', '객실 CO2 센서1 고장 발생', 'CO2 센서1 고장현시', 'CO2 센서의 검지범위는 0~4000ppm (2~10Vdc) 인데, 1초 이상 출력전압이 2Vdc (0ppm) 미만으로 떨어지는 경우', 'CO2 센서 검지 값이 1초 이상 2Vdc (0ppm) 이상 지속되는 경우', '1) 전원을 인가한 상태에서 CO2센서 커버를 열고 테스터기를 통해 'OUT2' 단자와 'G' 단자간의 전압이 2Vdc 미만인지 확인한다. +2) 만약 전압이 2Vdc 이상인데도 고장이 지속될 경우, 마이콤을 교체한다. +3) 만약 전압이 2Vdc 미만으로 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b6067899-14d7-4d83-8dc1-e3c6c686b170', '0502', '502', 'DCU#3 4위(L2)-출입문 장애물검지', 'M2', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b60a6008-e1f6-4264-8e1c-259cd208283c', '0515', '515', 'DCU#8 5위(R3)-출입문 열림 시간 초과', 'Tc2', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 "Open time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 열림 동작시간이 6초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도 한 후, '장애물로 인한 열림실패' 고장과 함께 'Open time out' 고장이 함께 현시', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b60e18f3-f98b-44b9-b412-ff53371dc82e', '0512', '512', 'DCU#4 5위(R3) - 파라미터 로딩 실패', 'T1', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 “Paraneter error” 신호가 “1”이 되면 검지 +', 'Parametererror 현시(출입문은 정상작동 가능)', 'DCU 자체 내의 EEPROM으로부터 parameter데이터 로딩 실패 +', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b612d39a-7544-4bb3-b54d-9605fdac48bc', '0512', '512', 'DCU#1 3위(R2) - 파라미터 로딩 실패', 'Tc1', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 “Paraneter error” 신호가 “1”이 되면 검지 +', 'Parametererror 현시(출입문은 정상작동 가능)', 'DCU 자체 내의 EEPROM으로부터 parameter데이터 로딩 실패 +', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b6212f99-68f7-4cb9-af42-c845d32a62a4', '0506', '506', 'DCU#5 4위(L2) - 출입문 입력 저전압', 'T2', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 “1”이 되면 검지 +', '저전압상태(출입문 동작이 심하게 느려지거나 작동조차 안 될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하 +', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b63808b4-6499-4a03-99da-b4d89cdea5d2', '0229', '229', 'AS 코크#1 차단(Car1)', 'Tc1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b63ba3b3-baef-4017-97b0-f624a657921e', '0506', '506', 'DCU#7 5위(R3) - 출입문 입력 저전압', 'M4', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 “1”이 되면 검지 +', '저전압상태(출입문 동작이 심하게 느려지거나 작동조차 안 될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하 +', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b6783a1c-3ba6-494f-b88a-f13838598696', '0128', '128', 'VVVF-IPM Z상 이상검지(GDFZ) (Car2)', 'M1', 'C', 'VVVF-IPM Z상 이상검지(GDFZ)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT34의 Bit2 “GDFZ” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 'IPM Z상 이상검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치 내부 IPM에 과전류, 과온이 검지될경우.', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반배전반의 VVVFIC nfb 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 견인전동기로 출력되는 3상의 전류치 확인함. +3) 특정상의 전류치가 비정상적일 경우 특정상에 해당되는 IPM, 전류센서, 모터결선을 확인한다. +4) 전류센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작상태를 시험기를 통해 확인한다. +6) IPM 전원공급기의 전원연결상태 또는 광케이블의 연결상태와 배선상태를 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.578803+00', null, '다대48량(2015)', 'Rotem'), ('b68da464-9462-4e35-8773-275088066378', '0512', '512', 'DCU#6 6위(L3)-파라미터 로딩 실패', 'M3', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 "Paraneter error” 신호가 "1"이 되면 검지.', 'Parameter error 현시 (출입문은 정상작동 가능)', 'DCU 자체내의 EEPROM으로부터 parameter 데이터 로딩 실패', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b69b1cbf-4ba5-483a-a5f1-17740bf565c7', '0704', '704', 'HVAC#4-냉난방장치1 압축기1 과부하', 'T1', 'C', 'HVAC-냉난방장치1 압축기1 과부하', 'C', 'HVAC', 'HVAC 냉방작동 중 냉난방장치1 압축기1 또는 응축기1 모터에 과부하 발생.', '냉방 기능 저하(전냉방시 반냉방으로 작동)', '1) 냉방작동 중 UNIT1의 압축기1 또는 응축기1 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRCM1과 연결된 THR1이 Trip 됨.', 'UNIT1의 압축기1 또는 응축기1 모터의 과부하 조건을 해소하여 정상 가능 상태로 만들고, THR1 및 마이콤 전원 리셋', '1) 냉난방배전반의 점검커버를 열고, THR1의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR4의 전류 세팅값이 11.5A에 맞춰져 있는지 확인하여, 아닐 경우, 십자 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동 시킨 후, THR1의 2차측 2,4,6 단자에서 각 단자간 상간 전압이 AC 380V으로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 압축기 및 응축기 단품 상태에서 점검을 한다. +7) THR1의 2차측 2,4,6 단자에서 각 단자간 권선저항이 모두 같은지 확인한다. (±10% 이하) (압축기1 및 응축기1 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT1의 압축기1 또는 응축기1 모터의 결선을 해제한 후 각 부품의 권선저항을 확인 후, 문제가 있는 부품을 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR1 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b69f2503-2e8a-4a6e-b80f-b3fd8d75b5a5', '1105', '1105', 'PSD#8 - 차상 RF 고장(1계)', 'Tc2', 'C', 'PSD-차상 RF고장', 'C', 'PSD', 'PSD의 RS485 데이터 중 PSD-TCMS SD TEXT5(TEXT6)의 Bit7 “차상 RF 고장” 신호가 “1”이 되면 검지 (차상장치 RF 고장) +', '1) PSD 지상장치 통신연결 또는 전원 ON 시 NG발생 +2) 역사 내 진입 전 NG 발생 → 역사 내 진입 후 NG 복귀 등의 현상이 일어날 경우', '차상장치 내무선 모듈의 불량이 주원인이며, 설정 및 채널 변경 오류 시 발생됨. +', '1) 운전실 후부 PSDCN을 OFF-ON 실시하고 복귀가 되지 않을 경우 PSD 조작반을 취급하여 운행 한다. +2) 차량 사업소 복귀 후 해당 차상장치 점검을 한다.', null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b69f3cca-81e9-4129-b5af-e51dc64df7aa', '0098', '98', '조도제어기 고장(Car1)', 'Tc1', 'D', '조도제어기 고장(TC1)', 'D', 'TCMS', '차량으로부터 ILLUMINATION CONTROLLER FAULT 신호 입력시', '조도제어기내에서 FAULT 발생시 릴레이 접점을 CLOSE 하여 FAULT 신호를 차량으로 보냄.', '조도제어기에 전원이 연결된 상태에서 조도제어기내의 컨트롤 보드상의 마이콤이 동작하지 않을 때 FAULT 신호를 보냄', '컨트롤 보드상의 마이콤 정상 동작 시', '조도제어기내의 컨트롤 보드 교체', ' +REC30330HN0', '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b6a69909-fca7-4711-8611-57a41c38a1ad', '0500', '500', 'DCU#1 2위(L1) 통신고장', 'Tc1', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS 간 RS485 통신고장이 검지되면 발생 +', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐상태 등의 변화가 없음.', ' +1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우 +', '해당 차량의 DCU 및 CU/TU의 전원이 정상상태이고, 통신 라인 연결 상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜져 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적 으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는 데도 지속적으로 통신고장이 검지되면, DCU의 X2, X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상 체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b6b3a50a-47f9-4e5c-97c2-08df7b06f412', '0106', '106', 'VVVF-쵸퍼과전류 검지(BOCD) (Car3)', 'M2', 'C', 'VVVF-쵸퍼과전류 검지(BOCD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT31의 Bit1 “BOCD” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 '쵸퍼과전류 검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치에서 제동저항기로 출력되는 전류가 1100A 이상일 경우 검지됨.', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반배전반의 VVVFIC nfb 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 제동저항기로 흐르는 전류치 확인함. +3) 전류치가 비정상적일 경우 제동쵸퍼유닛에 설치된 IGBT, 전류센서, 고전압회로 결선 상태를을 확인한다. +4) 전류센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작상태를 시험기를 통해 확인한다. +6) 제동저항기의 이물질 침투여부를 확인하며, 제동저항기 저항치가 적정한지 확인한다. +7) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.656536+00', null, '다대48량(2015)', 'Rotem'), ('b6c0e4a5-f7e2-4fe2-b999-9fa7369359c1', '0511', '511', 'DCU#5 3위(R2)-출입문 닫힘 리미트 스위치2 고장', 'T2', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 "DCS2 Failure(Right)” 신호가 "1"이 되면 검지.', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b6cb40a3-e66f-4f45-ae1a-496cfb3a8362', '0229', '229', 'AS 코크#1 차단(Car3)', 'M2', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b6cec395-e847-4a41-821e-ef954af8ce64', '0177', '177', 'VVVF#2-LB1 투입불량(LB1NC)', 'M1', 'C', 'VVVF-LB1 투입불량(LB1NC)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT34의 Bit2 “LB1NC” 신호가 "1"이 되면 검지.', null, 'LB1 투입이 되지 않을 때 고장검지.', '동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) 판토하강상태에서 테스트모드로 전환하여 시퀀스를 투입하고 LB1의 주접점 동작을 확인한다. +2) 주회로 차단기함 내에 LB1의 보조접점의 동작상태를 확인한다. +3) 추진제어장치 계전기 유니트에 LB1R 계전기 상태를 확인하여 계전기의 동작 여부를 확인한다. +4) 추진제어장치 시험기를 이용하여 제어기 시험을 실시하여 이상여부를 확인한다.', null, '3', '2025-10-12 01:21:37.578803+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b6ced5df-d810-4f12-9799-6c1d41e51646', '0513', '513', 'DCU#8 2위(L1)-모듈 상태체크 에러', 'Tc2', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 "Module check error” 신호가 "1"이 되면 검지.', 'Module check error 현시 (출입문은 정상작동 가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태체크 기능에 이상이 생긴 경우 고장 발생.', 'DCU의 'A'모듈과 'B'모듈 간, 상태체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b6d1c32c-e5ee-48e8-b349-7ffec90de92a', '1209', '1209', 'FDU#7-스위치 고장', 'M4', 'C', 'FDU-스위치 고장', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT5의 Bit4 “Switch Fault” 신호가 "1"이 되면 검지.', 'Switch Fault 현시 및 FDU의 조작 버튼 동작 안됨(화재 검지 및 기타 기능에는 상관없음)', '1) FDU가 부팅될때 스위치가 눌려진 상태(3.3V 전압이 인가된 상태)인 경우 +2) FDU가 부팅될때 스위치 고장으로 인하여 항상 눌러진 상태(3.3V 전압이 인가된 상태)에 있는 경우.', 'FDU가 부팅될때 스위치가 눌려진 상태(3.3V 전압이 인가된 상태)가 아닌 경우 +조치조건 : +1) 고장이 발생한 수신기의 스위치 상태 확인 및 점검 +2) FDU의 전원을 리셋하여 소거여부 확인 +3) 문제가 지속될 경우, 수신기 교체', null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b705aa06-ec80-4e06-ad4c-a00fb09103ed', '0511', '511', 'DCU#1 4위(L2) - 출입문 닫힘 리미트 스위치2 고장', 'Tc1', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 “DCS2 Failure(Right)” 신호가 “1”이 되면 검지 +', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b7317197-a922-4f43-8674-cb5e7e0e0dde', '0506', '506', 'DCU#2 4위(L2) - 출입문 입력 저전압', 'M1', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 “1”이 되면 검지 +', '저전압상태(출입문 동작이 심하게 느려지거나 작동조차 안 될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하 +', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b7434035-a34f-4379-950c-e9ba238eb20d', '0207', '207', 'BECU#4 - 자기진단 고장', 'T1', 'C', 'BECU-자기진단고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit6 “RAM 점검 고장” 신호가 “1”이 되면 검지 +', '해당 차량 자기진단 고장검지 현시 및 해당 차량 활주제어 불가', '해당 차량 BECU의 자가진단 시 고장 발생(활주방지밸브 고장) +', '해당 차량 BECU의 자가진단 시 정상적일 경우 소거(활주방지밸브 정상)', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b74400e2-7bf1-4118-bc22-b39920a6b7e2', '0132', '132', 'VVVF-IPM X상 이상검지(GDFX) (Car3)', 'M2', 'C', 'VVVF-IPM X상 이상검지(GDFX)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT34의 Bit6 “GDFX” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 'IPM X상 이상검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치 내부 IPM에 과전류, 과온이 검지될경우.', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반배전반의 VVVFIC nfb 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 견인전동기로 출력되는 3상의 전류치 확인함. +3) 특정상의 전류치가 비정상적일 경우 특정상에 해당되는 IPM, 전류센서, 모터결선을 확인한다. +4) 전류센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작상태를 시험기를 통해 확인한다. +6) IPM 전원공급기의 전원연결상태 또는 광케이블의 연결상태와 배선상태를 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.656536+00', null, '다대48량(2015)', 'Rotem'), ('b74d7c68-cc33-4881-97d9-69bef8acc5c9', '0514', '514', 'DCU#5 6위(L3) - 출입문 닫힘 시간 초과', 'T2', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 “Close time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 닫힘 동작 시간이 7초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도한 후, ‘장애물로 인한 닫힘 실패' 고장과 함께 ‘Close time out' 고장이 함께 현시 +', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b7581369-8af9-4d21-9070-b08663ff0ada', '0051', '51', '주공기압축기 바이패스 기동(Car8)', 'Tc2', 'W', '주공기압축기바이패스기동(TC2)', 'W', 'CMSB', '차량으로부터 BYPASS RUN FOR CMSB 신호 입력시', '주공기 압축기 정상 기동 됨(초기 기동시 돌입전류값 상승)', 'CMSB INVERTER 고장', 'CMSB INVERTER 점검 및 교체', null, ' +REC40400HN0', '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b75ce648-7dc5-4b38-99f3-2c5902456b72', '0516', '516', 'DCU#6 1위(R1)-출입문 장애물로 인한 닫힘 실패', 'M3', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Close failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림상태로 대기', '도어 닫힘 중 3회 장애물 감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b77517a7-dd95-4b47-95af-99717e369d0e', '0510', '510', 'DCU#5 4위(L2)-출입문 닫힘 리미트 스위치1 고장', 'T2', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 "DCS1 Failure(Leftt)” 신호가 "1"이 되면 검지.', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b77b94e9-bec2-4b6d-a528-fd3303c41643', '0850', '850', '실내카메라#2(SCAM) 고장(Car#5)', 'T2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b78d8940-becb-4ca2-b956-289c64a8fe29', '0521', '521', 'DCU#5 4위(L2)-모듈 상태 이상', 'T2', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 "01"또는 "00"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b794495d-56ba-4a1e-8e80-18f5045d65e8', '0505', '505', 'DCU#8 2위(L1)-출입문 입력 고전압', 'Tc2', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 "1"이 되면 검지.', '고전압 상태. (그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b796ec80-0f81-412b-b8bb-e461327405c8', '0502', '502', 'DCU#8 5위(R3)-출입문 장애물검지', 'Tc2', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b79bbb51-0511-40ea-b9c5-18db699a08c2', '0519', '519', 'DCU#4 3위(R2)-ZVR 신호 에러', 'T1', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 "ZVR signal error” 신호가 "1"이 되면 검지.', '출입문이 강제로 닫히게 되고, 열림은 불가능', '1) 차량 ZVR 신호가 없는 상태 (차량 주행상태) 에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함.', '해당출입문 ZVR 신호 수신', '1) 차량이 주행중이라면, 차량이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.392739+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b7a48991-c6e7-41b3-a95a-f3965056850b', '0512', '512', 'DCU#8 2위(L1) - 파라미터 로딩 실패', 'Tc2', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 “Paraneter error” 신호가 “1”이 되면 검지 +', 'Parametererror 현시(출입문은 정상작동 가능)', 'DCU 자체 내의 EEPROM으로부터 parameter데이터 로딩 실패 +', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b7a48b88-884b-4c55-8696-a7677fd54cbc', '0237', '237', '보안제동코크 차단(Car1)', 'Tc1', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b7afa94c-08c2-4f9c-99b7-1363f153a761', '0875', '875', '비상인터폰#1(PEI) 고장(Car#7)', 'M4', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b7b40e0d-7e51-4cce-a65d-fff81476348b', '0512', '512', 'DCU#8 2위(L1)-파라미터 로딩 실패', 'Tc2', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 "Paraneter error” 신호가 "1"이 되면 검지.', 'Parameter error 현시 (출입문은 정상작동 가능)', 'DCU 자체내의 EEPROM으로부터 parameter 데이터 로딩 실패', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b7cc8283-6831-46a7-a733-def316b26b5c', '0126', '126', 'VVVF-접촉기 이상검지(CNTF) (Car7)', 'M4', 'C', 'VVVF-접촉기 이상검지(CNTF)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT33의 Bit7 “CNTF” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 '접촉기 이상검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) LB Box내부의 HSCB, LB1,2의 동작에 이상이 발생한 경우 검지됨..', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반배전반의 VVVFIC nfb 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 이상동작인 접촉기(HSCB, LB1, +2)를 확인한다. +3) LB Box와 추진제어장치간 배선의 연결 상태를 확인한다. +4) 추진제어장치 내부의 릴레이 유닛에 정상동작여부를 확인한다. +4) DIN 보드의 동작상태를 시험기를 통해 확인한다. +5) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.71571+00', null, '다대48량(2015)', 'Rotem'), ('b7cd18bb-6475-4d76-a91f-00a6945098c0', '0171', '171', 'VVVF#6 - 통합제어장치 - PWM 제어장치간 통신 이상 검지(ERR485)', 'M3', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b7dca1fd-68ab-473b-89ed-87f30545c864', '0504', '504', 'DCU#5 1위(R1) - 출입문 외부 비상핸들 취급(EAD)', 'T2', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b7eaf3e4-bda5-4a51-8c67-860cfca8b98c', '0748', '748', 'HVAC#3 - 전자접촉기 차량히터1(CRRHT) 고장', 'M2', 'C', 'HVAC-전자접촉기 차량 히터1(CRRHT) 고장', 'C', 'HVAC', '객실 난방기 작동 중 CRRHT1 전자접촉기 고장 발생 +', '객실 전난방 시 2/3난방만 작동', '객실 전난방 작동 중 2.5초 이상 동안 CRRHT1 작동 feedback 신호가 수신되지 않는 경우 +', 'CRRHT1 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CRRHT1을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRRHT1과 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b7ecddd0-ec9d-4104-a71e-1ddb661a95c2', '0505', '505', 'DCU#4 5위(R3) - 출입문 입력 고전압', 'T1', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 “1”이 되면 검지 +', '고전압 상태(그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상 +', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b7fc9423-4de2-436a-9e6f-ccccd9a2e66b', '0856', '856', '영상저장장치(NVR) SSD 고장(Car#1)', 'Tc1', 'C', '영상저장장치- 영상저장장치(NVR) SSD 고장(Car1)', 'C', 'AVC', '영상저장장치(NVR)의 E-NET 데이터 중 영상저장장치-TCMS SD TEXT8의 Bit0 “SSD Fault” 신호가 +“1”이 되면 검지 +', 'SSD에 연결되어있는 카메라저장불가능 SSD는 1호차 ~ 8호차까지 카메라 저장', '영상저장장치에 SSD 인식불가능 +', '영상저장장치에 SSD 인식', 'SSD 점검 관련도면 : 없음', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b8116db1-723f-4804-95e6-fa16a538b2ad', '0716', '716', 'HVAC#5 - 냉난방장치1 압력스위치1(DPS) 고압', 'T2', 'D', 'HVAC-냉난방장치1 압력스위치1(DPS) 고압', 'D', 'HVAC', '냉난방장치1 냉매 압력스위치2 고압 발생 +', 'UNIT1CYCLE1 냉방기능불가', 'UNIT1DSP1측 냉매압력이 3초 이상 28±1(kgf/cm2) 이상 되는 경우 +', '냉매압력이 정상수치 15±0.7(kgf/cm2) 이하로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CRCM1의 부하측 전류를 측정하여 응축기 팬의 동작여부를 확인한다. +2) 응축기 코일의 전면에 이물질로 인한 막힘이 있는지 확인한다. +3) 응축기 팬 상부 그릴에 외부 이물질로 인한 막힘이 있는지 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b827bb59-0801-4685-a174-02c0063f5274', '0220', '220', 'BECU#3-공기제동 감쇄지령 비정상', 'M2', 'C', 'BECU-공기제동 감쇄지령 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit3 “공기제동 감쇄지령 비정상” 신호가 "1"이 되면 검지.', '해당 차량 공기제동 감쇄지령 비정�� 검지 현시 및 해당차량 정상적인 전공 교차제어 불가.(부수차량 공기제동 감쇄 불가)', '해당 차량의 공기제동 감쇄지령 신호가 정상범위를 벗어남(5.0~95.0%).', '해당 차량의 공기제동 감쇄지령 신호가 정상범위일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. +소거되지 않을 경우 해당 차량 옆의 Pair 차량(구동차) BECU를 리셋(CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b8393d6f-47d8-4390-a854-b21a804b1d71', '0518', '518', 'DCU#4 5위(R3)-출입문 Enable 신호 에러', 'T1', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 "Enable signal error” 신호가 "1"이 되면 검지.', 'DCU 출입문 Enable 신호 에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) 취급시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함.', '해당출입문 enable 신호 수신', '1) AUTO/MCS 모드시에는 YARD모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인한다. (YARD/FMC 모드시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.392739+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b84bacab-f50d-4673-b9c9-e2abb179db8e', '0501', '501', 'DCU#7 2위(L1) - 출입문 차단', 'M4', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b85b91f2-62a1-4437-9ab1-d3af48b4347f', '0190', '190', '보조공기압축기 장시간 기동(Car2)', 'M1', 'C', null, null, 'CMSB', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b865972a-4d7e-45c0-8da0-74dfd4bd2207', '0049', '49', '보조공기압축기 스위치 취급(Car6)', 'M3', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b869fc7b-8f77-47e1-a8ad-8353b1da5041', '0503', '503', 'DCU#3 4위(L2) - 출입문 내부 비상핸들 취급(EED)', 'M2', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b8754b5d-6e20-4eb9-b3eb-72184eeff1ac', '0708', '708', 'HVAC#8 - 냉난방장치1 증발기1 과부하', 'Tc2', 'C', 'HVAC-냉난방장치1 증발기1 과부하', 'C', 'HVAC', 'HVAC 냉방 작동 중 냉난방장치1 증발기 모터에 과부하 발생 +', 'UNIT1냉방 작동 불가', ' +1) 냉방 작동 중 UNIT1의 증발기 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CREF1과 연결된 THR5가 Trip 됨. +', 'UNIT1의 증발기모터의 과부하조건을 해소하여 정상 가능 상태로 만들고, THR5 및 마이콤 전원 리셋', '1) 냉난방 배전반의 점검커버를 열고, THR5의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR5의 전류 세팅값이 3A에 맞춰져 있는지 확인하여, 아닐 경우, (+) 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동시킨 후, THR5의 2차측 2, 4, 6 단자에서 각 단자 간 상간 전압이 AC 380V로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 증발기 단품 상태 에서 점검을 한다. +7) THR5의 2차측 2, 4, 6 단자에서 각 단자 간 권선저항이 모두 같은지 확인한다. (±10% 이하) (증발기 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT2의 증발기 모터의 결선을 해제한 후 4극 및 6극 모터의 권선저항을 확인 후, 문제가 있을 경우, 증발기 모터를 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR5 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b8761566-8b09-4f3e-9ee7-a15dd32d630f', '0407', '407', 'SIV#8 - 인버터2 입력과전압(INV2OV)', 'Tc2', 'C', 'SIV-인버터2 입력 과전압(INV2OV)', 'C', 'SIV', '보조전원장치(SIV)의 RS485 데이터 중 SIV-TCMS SD TEXT6의 Bit5 “INV2OV” 신호가 “1”이 되면 검지 +', '1) TCMS 화면하단 또는 고장화면에 ‘인버터2 입력 과전압(INV2OV)' 표시됨. +2) 보조전원장치(SIV)는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 보조전원장치(SIV) 중고장이 발생함. +5) 중고장이 발생되면 TCMS 일반화면에 보조전원장치(SIV) 상태 붉은색으로 표기되며, 연장급전 됨.', '보조전원장치(SIV) 내부 인버터2의 FC 전압이 1,200V 이상일 경우 검지됨. +', '1) 경고장이 발생할 경우 보조전원장치(SIV) 자동 재기동에 의해 재기동 됨. +2) 중고장이 발생했을 경우 조치 완료 후 보조전원장치(SIV) 리셋으로 고장 소거됨.', '1) 상기 고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 보조전원장치(SIV) 고장기록을 수집하여 FC전압에 이상이 있는지 확인한다. +3) 보조전원장치(SIV) 내부 고전압부에 소손흔적이 있는지 확인한다. +4) FC에 연결된 부스바의 체결상태가 양호한지 확인한고, 부스바를 분리하여 FC의 Capacitance를 측정하여 이상이 없는지 확인한다. +5) 전압센서와 보조전원장치(SIV) 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +6) SEN 보드의 동작 상태를 시험기를 통해 확인한다. +7) 출력단 각상의 절연상태 및 각상과 접지 간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b8762b39-d0a0-4d99-9ced-f4a6035e0428', '0312', '312', 'ATC#8-', 'Tc2', '0', null, null, '0', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b877b529-5dc3-4e7a-a189-a48171cccbda', '0505', '505', 'DCU#6 5위(R3)-출입문 입력 고전압', 'M3', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 "1"이 되면 검지.', '고전압 상태. (그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b87aff41-5009-45f2-9bd6-4591c3a1f432', '0161', '161', 'VVVF#7 - 통합제어장치 이상검지(CPUWDTD)', 'M4', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b87c6d5c-dce7-4360-b3dc-f96557276d9a', '0222', '222', 'BECU#7-공기스프링누설(후미대차)', 'M4', 'C', 'BECU-공기스프링누설(후미대차)', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit5 “공기스프링누설(후미대차)” 신호가 "1"이 되면 검지.', '해당 차량 공기스프링누설(후미대차) 검지 현시 및 해당차량 정상적인 제동제어 불가.(응하중 제어)', '해당 차량 후미대차의 공기스프링(AS3, AS4) 압력이 정상범위를 벗어남.(100kPa 미만)', '해당 차량 후미대차의 공기스프링(AS3, AS4) 압력이 정상범위일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b8839a4e-9379-4f2f-9614-50ce60113d57', '0500', '500', 'DCU#3 2위(L1) 통신고장', 'M2', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS 간 RS485 통신고장이 검지되면 발생 +', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐상태 등의 변화가 없음.', ' +1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우 +', '해당 차량의 DCU 및 CU/TU의 전원이 정상상태이고, 통신 라인 연결 상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜져 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적 으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는 데도 지속적으로 통신고장이 검지되면, DCU의 X2, X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상 체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b88ad44f-b104-45f9-8786-c01bd5da8477', '0039', '39', 'DeadMan 스위치 - 경고', 'Tc1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b88bed69-f00a-4ad4-b333-af3135b31756', '0705', '705', 'HVAC#3 - 냉난방장치2 증발기2 과부하', 'M2', 'C', 'HVAC-냉난방장치2 증발기2 과부하', 'C', 'HVAC', 'HVAC 냉방 작동 중 냉난방장치2 증발기 모터에 과부하 발생 +', 'UNIT2냉방기능불가', ' +1) 냉방 작동 중 UNIT2의 증발기 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CREF4와 연결된 THR8이 Trip 됨. +', 'UNIT2의 증발기모터의 과부하조건을 해소하여 정상 가능 상태로 만들고, THR8 및 마이콤 전원 리셋', '1) 냉난방 배전반의 점검커버를 열고, THR8의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR8의 전류 세팅값이 3A에 맞춰져 있는지 확인하여, 아닐 경우, (+) 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동시킨 후, THR8의 2차측 2, 4, 6 단자에서 각 단자 간 상간 전압이 AC 380V로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 증발기 단품 상태에서 점검을 한다. +7) THR8의 2차측 2, 4, 6 단자에서 각 단자 간 권선저항이 모두 같은지 확인한다. (±10% 이하) (증발기 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT2의 증발기 모터의 결선을 해제한 후 4극 및 6극 모터의 권선저항을 확인 후, 문제가 있을 경우, 증발기 모터를 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR8 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b89b96c7-6d92-4af5-9b7c-2b44c76d97b8', '0236', '236', '상용제동코크 차단(Car3)', 'M2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b8a3bf7d-0a9c-4ecd-816f-9a4c49a0839a', '0164', '164', 'VVVF#6 - 역행/회생 전류 이상검지(PBCD)', 'M3', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b8b7ade5-8737-4fe4-a5d9-62d54e542d4a', '0223', '223', 'BECU#7 - 공기스프링 누설(전두대차)', 'M4', 'C', 'BECU-공기스프링누설(전두대차)', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit6 “공기스프링누설(전두대차)” 신호가 “1”이 +되면 검지 +', '해당 차량 공기스프링 누설(전두대차) 검지 현시 및 해당 차량 정상적인제동제어 불가 (응하중제어)', '해당 차량 전두대차의 공기스프링(AS1, AS2) 압력이 정상범위를 벗어남. (100kPa 미만) +', '해당 차량 전두대차의 공기스프링(AS1, AS2) 압력이 정상범위일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b8c55486-a46e-47b6-bca6-5da87ef7c7e2', '0230', '230', 'ECU 전원공급 고장(Car1)', 'Tc1', 'B', 'ECU 전원공급 고장', 'B', 'BECU', '해당차량의 ECU 전원공급 고장 (CB OFF) 발생 시 검지', '해당차량의 ECU 전원공급 고장 검지 현시', '해당차량의 ECU 전원차단 (CB OFF)', '해당차량의 ECU 전원공급 (CB ON)', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속적으로 고장 발생시 관제보고하고 지시에 따를 것.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b8c61e0c-0e46-4333-92bb-30f3a2b0aadb', '0720', '720', 'HVAC#3-실내온도 센서1 고장', 'M2', 'C', 'HVAC-실내온도 센서1 고장', 'C', 'HVAC', '객실 실내온도 센서1 고장 발생', '실내온도 센서1 고장현시', '온도센서 검지범위는 -45~85도 (820~1330옴) 인데, 2초 이상 검지범위를 벗어나는 경우', '온도센서 검지 값이 2초 이상 허용온도 범위 내 일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820~1330옴 을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우, 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b8c7b5b9-5e9a-4625-91d2-f301c47ff4dc', '0514', '514', 'DCU#1 5위(R3) - 출입문 닫힘 시간 초과', 'Tc1', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 “Close time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 닫힘 동작 시간이 7초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도한 후, ‘장애물로 인한 닫힘 실패' 고장과 함께 ‘Close time out' 고장이 함께 현시 +', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b8cfd95c-90ec-4bd8-98e8-1b1777823c2a', '1211', '1211', 'FDU#6 - 체크섬 고장', 'M3', 'C', 'FDU-체크섬 고장', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT5의 Bit7 “Checksum Fault” 신호가 “1”이 되면 검지 +', 'ChecksumFault 현시 및 FDU의 정상동작 불가능', '수신기펌웨어의 오류로 인한 체크섬 이상(MCU 내부 플래쉬메모리에 저장된 체크섬과 프로그램의 체크섬 계산값이 다를 경우) +', 'FDU가 부팅될 때 MCU 내부 플래쉬메모리에 저장된 체크섬과 프로그램의 체크섬 계산값이 같을 경우', '1) FDU의 전원을 리셋하여 소거여부 확인 +2) 문제가 지속될 경우, 수신기 교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b8d49393-dae4-45f4-b9a2-e81243ae6bdd', '0730', '730', 'HVAC#2 - 냉난방장치1 토출 센서 고장', 'M1', 'C', 'HVAC-냉난방장치1 토출 센서 고장', 'C', 'HVAC', '냉난방장치1의 토출 센서 고장 발생 +', '냉난방장치1 토출 센서 고장현시', '온도센서 검지범위는 -45 ~ 85도(820 ~ 1,330Ω)인데, 2초 이상 검지범위를 벗어나는 경우 +', '온도센서 검지값이 2초 이상 허용온도 범위 내일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820 ~ 1,330Ω을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b8e36752-f089-4619-b50d-4b8becb1867f', '0520', '520', 'DCU#4 6위(L3) - 이중계 절체 동작', 'T1', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 “Module switchover” 신호가 “1”이 되면 검지 +', '이중계 절체 동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러) 이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A'모듈 및 ‘B'모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b8ef70d2-c8b9-46d4-a8e6-e52d5b07764a', '0516', '516', 'DCU#1 4위(L2)-출입문 장애물로 인한 닫힘 실패', 'Tc1', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Close failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림상태로 대기', '도어 닫힘 중 3회 장애물 감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b8f33723-e78e-4b0e-ac4c-b5f6fd3d3852', '0229', '229', 'AS 코크#1 차단(Car8)', 'Tc2', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b8f583f4-7cd4-4e9d-9615-eeebb691665b', '0720', '720', 'HVAC#4-실내온도 센서1 고장', 'T1', 'C', 'HVAC-실내온도 센서1 고장', 'C', 'HVAC', '객실 실내온도 센서1 고장 발생', '실내온도 센서1 고장현시', '온도센서 검지범위는 -45~85도 (820~1330옴) 인데, 2초 이상 검지범위를 벗어나는 경우', '온도센서 검지 값이 2초 이상 허용온도 범위 내 일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820~1330옴 을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우, 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b9009d7d-0159-4c78-a5d2-3c31126a562e', '0311', '311', 'ATC#8 - 50cm 이내 과주정차', 'Tc2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b908a74c-0f39-45af-8f4a-a100f32d5136', '1502', '1502', '기타장치용 DC 회로차단기 차단(Car5)', 'T2', 'W', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b91a020c-5960-4c81-9179-c5ac6504d0dc', '0218', '218', 'BECU#4-인통선로직 비정상', 'T1', 'C', 'BECU-인통선로직 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit1 “인통선로직 비정상” 신호가 "1"이 되면 검지.', '해당 차량 인통선로직 비정상 검지 현시 및 해당차량 정상적인 제동제어 불가.(상용제동지령에 따른 제어)', '해당 차량의 추진선택(P), 제동선택(B) 신호가 동시에 ON 됨.', '해당 차량의 추진선택(P), 제동선택(B) 신호가 정상작동(상보적으로 작동) 될 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 한 뒤, 마스콘을 제동 7단으로 5초간 취급하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b91a378b-9613-4a37-a2f8-8f471da97884', '0513', '513', 'DCU#2 5위(R3)-모듈 상태체크 에러', 'M1', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 "Module check error” 신호가 "1"이 되면 검지.', 'Module check error 현시 (출입문은 정상작동 가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태체크 기능에 이상이 생긴 경우 고장 발생.', 'DCU의 'A'모듈과 'B'모듈 간, 상태체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b923d980-c8c9-4791-9f1c-785d2962af1c', '0516', '516', 'DCU#8 5위(R3) - 출입문 장애물로 인한 닫힘 실패', 'Tc2', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Close failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림 상태로 대기', '도어 닫힘 중 3회 장애물감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b926f9ef-d172-4cf2-9952-7d76e7b46040', '0505', '505', 'DCU#1 4위(L2)-출입문 입력 고전압', 'Tc1', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 "1"이 되면 검지.', '고전압 상태. (그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b92f7179-5332-4563-85c8-196c917ddf2c', '1206', '1206', 'FDU#4 - 감지기3 고장', 'T1', 'C', 'FDU-감지기3 고장 (Car1~8)', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 “Detector1 State” 신호가 “10”이 되면 검지 +', '감지기고장상태현시(자동소거 안 됨)', ' +1) 감지기로부터 데이터 응답이 없는 경우 +2) 감지기로부터 수신된 데이터의 CRC가 맞지 않는 경우 +3) 감지기로부터 수신된 데이터의 ID가 송신 ID와 일치하지 않는 경우 +', 'FDU 전원 리셋 후 감지기로부터 정상적으로 데이터가 수신된 경우', '1) FDU 전원 리셋 후 고장 소거 여부 확인 +2) 정상동작중인 감지기와 위치 교환 후 FDU 전원 리셋 및 고장 상태 확인 +3) 동일한 감지기에서 고장 발생 시 감지기 교체 +4) 동일한 위치에서 고장 발생 시 감지기 라인 점검', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b9398f27-8a55-495e-bdc0-0b55ad7d6f8d', '0753', '753', 'HVAC#2 - 배기댐퍼 열림고장', 'M1', 'C', 'HVAC-배기댐퍼 열림고장', 'C', 'HVAC', '환기 시, 차량 배기댐퍼가 열려 있는 상태에서 배기댐퍼 열림 리미트 스위치가 작동되지 않음 +', '배기댐퍼 열림 고장 현시', '배기댐퍼를 열림으로 제어했으나 열림 리미트 스위치 입력이 없을 경우 +', '배기댐퍼 열림상태에서 리미트 스위치 입력이 정상적으로 입력', '1) 배기댐퍼가 열린 상태에서 열림 리미트 스위치가 정상적으로 작동되었는지 확인한다. +2) 열림 리미트 스위치가 정상작동 되었음에도 문제가 발생될 경우, 스위치를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b949db04-7a09-4080-a399-d528d0be1d53', '0117', '117', 'VVVF-전동기 속도센서 고장검지(PGD) (Car2)', 'M1', 'C', 'VVVF-전동기 속도센서 고장검지(PGD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT32의 Bit4 “PGD” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 '전동기 속도센서 이상검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치에서 각축속도를 계산하여 속도의 편차가 2km/h이상인 조건에서 검지.', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반배전반의 VVVFIC nfb 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 견인전동기 속도센서 상태를 확인하고, 속도센서가 연결된 경로 배선연결 상태를 확인한다. +3) PGI 보드의 동작상태를 시험기를 통해 확인한다. +4) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.578803+00', null, '다대48량(2015)', 'Rotem'), ('b96013b4-4273-4171-995e-893469582bc1', '0103', '103', 'VVVF#6-추진차단(P BLOCK)', 'M3', 'D', null, null, 'VVVF', null, null, null, null, null, null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b96a69f7-06fb-4538-8f44-ab13464dc745', '1402', '1402', 'BMS#8 - 퓨즈 오픈', 'Tc2', 'C', 'BMS-퓨즈 오픈', 'C', 'BMS', 'BMS의 RS485 데이터 중 BMS-TCMS SD TEXT2의 Bit1 “퓨즈 오픈” 신호가 “1”이 되면 검지 +', '퓨즈 고장으로 충방전 불가', '배터리 내, 외부회로 단락으로 인한 과전류 발생 +', '배터리 내, 외부회로 단락 제거', '1) 배터리 팩 절연저항 확인한다. +2) 배터리 외부 회로의 단락 검침한다. +3) 단락회로 검침 후 정상이면 퓨즈 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b96bc452-071a-482b-892f-7980f7644473', '0105', '105', 'VVVF#6-상전류 불평형 검지(PUD)', 'M3', 'C', 'VVVF-상전류 불평형 검지(PUD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT29의 Bit0 “PUD” 신호가 "1"이 되면 검지.', null, '1) 인버터 출력 U,V,W 상간 RMS전류 값의 차이가 100A 이상 3초간 발생하는 때 경고장 발생. +2) 1분 이내 3회 발생 시 중고장 발생.', '1) 경고장 +역행 고장검지 2초 후 자동 재기동 제동 제동 OFF시 고장 소거 +2) 중고장 +동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 견인전동기로 출력되는 3상의 전류치 확인함. +3) 특정상의 전류치가 비정상적일 경우 특정상에 해당되는 전류센서, 모터결선을 확인한다. +4) 전류센서와 추진제어장치 제어기 PWM 보드에 연결되는 저전압 배선상태를 확인한다. +5) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +6) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b96cad92-23fa-48e9-991b-af62c3e66ad8', '0055', '55', 'AUX FUSE DISCONNECTED(Car4)', 'T1', 'W', 'AUX FUSE DISCONNECTED(Car4)', 'W', 'TCMS', '차량으로부터 AUX FUSE DISCONNECTED 신호 입력시', 'SIV 고압 차단으로 AC전원 전체 "OFF"', '해당 퓨우즈 소손', '해당 퓨우즈 교체', null, ' +REC30330HN0', '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b97d8e36-4235-4fa9-ac4c-634433d001ea', '0149', '149', 'VVVF#7-FC 저전압검지(FCLVD)', 'M4', 'C', 'VVVF-FC 저전압검지(FCLVD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT30의 Bit6 “FCLVD” 신호가 "1"이 되면 검지.', null, '필터캐패시터 전압이 850V 이하 감압 시 고장발생', '1) 역행 고장검지 2초 후 자동 재기동 +2) 제동 제동 OFF시 고장 소거', '1) 상기고장이 간헐적으로 발생하는 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 FC전압에 이상이 있는지 확인한다. +3) 추진제어장치 내부 고전압부에 소손흔적이 있는지 확인한다. +4) FC에 연결된 버스바의 체결상태가 양호한지 확인한고, 버스바를 분리하여 FC의 Capacitance를 측정하여 이상이 없는지 확인한다. +5) 전압센서의 외관 및 단자 체결상태를 확인한다. +6) 추진제어장치 시험기를 이용하여 TCU(통합제어장치)의 이상여부를 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b982cd6d-77cd-4480-8628-ddc0e6581387', '1204', '1204', 'FDU#8-감지기2 고장', 'Tc2', 'C', 'FDU-감지기2 고장', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 "Detector1 State” 신호가 "10"이 되면 검지.', '감지기 고장상태 현시(자동 소거 안됨)', '1) 감지기로부터 데이터 응답이 없는경우. +2) 감지기로부터 수신된 데이터의 CRC가 맞지 않는경우 +3) 감지기로부터 수신된 데이터의 ID가 송신 ID와 일치하지 않는경우', 'FDU 전원 리셋 후 감지기로부터 정상적으로 데이터가 수신된 경우', '1) FDU 전원 리셋 후 고장 소거 여부 확인 +2) 정상 동작중인 감지기와 위치 교환 후 FDU 전원 리셋 및 고장 상태 확인 +3) 동일한 감지기에서 고장 발생시 감지기 교체 +4) 동일한 위치에서 고장 발생시 감지기 라인 점검', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b9856712-0407-42f8-936e-c65481bf14e2', '1703', '1703', '노선안내표시기#6 고장(Car6)', 'M3', 'C', '노선안내표시기#1 고장', 'C', 'PIC', 'PIC 장치의 노선안내표시기#1이 고장이 났을 때 발생 +', '1) 노선안내표시기 화면 미현시 +2) 노선안내표시기 안내 화면 오현시', '통신고장 +', '통신 재개 시', '1) 이더넷 스위치 링크 확인 +2) 이더넷 케이블 점검 +3) 제어보드 및 전원보드 교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b985916e-0d34-41d5-bc98-c7b7213601d3', '0732', '732', 'HVAC#3 - 실외온도 센서1 고장', 'M2', 'C', 'HVAC-실외온도 센서 고장', 'C', 'HVAC', '실외온도 센서 고장 발생 +', '실외온도 센서 고장 현시', '온도센서 검지범위는 -45 ~ 85도(820 ~ 1,330Ω)인데, 2초 이상 검지범위를 벗어나는 경우 +', '온도센서 검지값이 2초 이상 허용온도 범위 내일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820 ~ 1,330Ω을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b989a273-43a0-4675-8c4a-62a152285884', '0501', '501', 'DCU#3 1위(R1) - 출입문 차단', 'M2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b99272dd-ffd3-42e4-a340-6598c18c5a08', '0510', '510', 'DCU#5 6위(L3)-출입문 닫힘 리미트 스위치1 고장', 'T2', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 "DCS1 Failure(Leftt)” 신호가 "1"이 되면 검지.', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b99388af-6d0c-4df9-af67-db24e35562fc', '0514', '514', 'DCU#6 6위(L3) - 출입문 닫힘 시간 초과', 'M3', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 “Close time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 닫힘 동작 시간이 7초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도한 후, ‘장애물로 인한 닫힘 실패' 고장과 함께 ‘Close time out' 고장이 함께 현시 +', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b9a37e66-f546-4a5a-88d3-290361e3e515', '0518', '518', 'DCU#1 2위(L1) - 출입문 Enable 신호 에러', 'Tc1', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 “Enable signal error” 신호가 “1”이 되면 검지 +', 'DCU 출입문Enable신호에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드 시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을 때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드 시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입 상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호 장치로부터의 출입문 열림 명령 신호) 취급 시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함. +', '해당 출입문 enable 신호수신', '1) AUTO/MCS 모드 시에는 YARD 모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인 한다. (YARD/FMC 모드 시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b9bbba52-a963-453c-8bba-05c9070cba82', '0502', '502', 'DCU#1 5위(R3)-출입문 장애물검지', 'Tc1', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b9d1f283-f967-4594-a2bc-9bda4f63ab8d', '0506', '506', 'DCU#1 5위(R3)-출입문 입력 저전압', 'Tc1', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 "1"이 되면 검지.', '저전안 상태 (출입문 동작이 심하게 느려지거나 작동조차 안될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('b9dd06df-c952-461e-ac86-740fd7aba8f0', '0719', '719', 'HVAC#7 - 실내온도 센서2 고장', 'M4', 'C', 'HVAC-실내온도 센서2 고장', 'C', 'HVAC', '객실 실내 온도센서2 고장 발생 +', '실내 온도센서2 고장현시', '온도센서 검지범위는 -45 ~ 85도(820 ~ 1,330Ω)인데, 2초 이상 검지범위를 벗어나는 경우 +', '온도센서 검지값이 2초 이상 허용온도 범위 내일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820~1,330Ω을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b9e50dc9-d6da-4468-8c92-a21726eb333e', '0520', '520', 'DCU#2 3위(R2) - 이중계 절체 동작', 'M1', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 “Module switchover” 신호가 “1”이 되면 검지 +', '이중계 절체 동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러) 이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A'모듈 및 ‘B'모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b9e5bf5a-c087-481f-9c61-68880286ec77', '0511', '511', 'DCU#7 6위(L3) - 출입문 닫힘 리미트 스위치2 고장', 'M4', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 “DCS2 Failure(Right)” 신호가 “1”이 되면 검지 +', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('b9f5b13b-fc14-4ace-a86d-62855391fb0f', '0100', '100', 'VVVF#6 통신고장', 'M3', 'B', 'VVVF-통신고장', 'B', 'VVVF', 'VVVF와 TCMS간 RS485 통신고장이 검지되면 발생.', 'TCMS 화면에 고정정보 현시되며, 추진제어장치 상태화면에 나타나는 데이터에 변동이 없음.', 'TCMS-추진제어장치(VVVF) 간 통신정보가 3초이상 동일한 정보로 유지되면 통신고장을 검지함.', 'TCMS-추진제어장치(VVVF) 간 통신정보가 정상적으로 통신이 될경우 소거됨.', '1) 추진제어장치(VVVF) 리셋 실시 후 통신고장 소거됨을 확인. +2) 통신고장 소거가 되지 않을 경우 추진제어장치 PUZ 보드 신품으로 교체후 통신고장 소거여부 확인. +3) 위 조건에도 고장이 소거되지 않을 경우, TCMS-추진제어장치간 RS485 통신케이블 연결상태 점검.', null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ba0f5ab2-881c-4a62-8f6f-4aaf555a5ca6', '0507', '507', 'DCU#6 4위(L2) - 초기화 실패', 'M3', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 “Calibration failure” 신호가 “1”이 되면 검지 +', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터 고장, 장애물감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우 +', '초기화 실패를 야기한 고장코드를 확인하여 조치 후, 재닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인한다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ba18d8a0-514f-43e0-8434-4fc609631861', '0160', '160', 'VVVF#7-게이트전원전압이상(GPLVD)', 'M4', 'C', 'VVVF-게이트전원전압이상(GPLVD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT32의 Bit1 “GPLVD” 신호가 "1"이 되면 검지.', null, '통합제어장치 PWS보드의 AC24V 출력전압 이상 시 고장검지.', '동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) TCU(통합제어기) 입력에 제어전원 DC 100V가 인가되는지 확인한다. +2) PWS 보드의 전면부에서 AC 24V 출력단 LED가 점등되어있는 것을 확인한다. +3) 상기 점검부에 이상이 없을 경우 TCU(통합제어장치)를 교체한다. +4) TCU교체 후 동일증상 반복 시 인버터 스택을 교체한다.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ba2ccf7c-4e32-4c42-8038-0b51f72f336f', '0211', '211', 'BECU#5-2축속도신호의 비정상', 'T2', 'C', 'BECU-2축속도신호의 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit2 “2축속도신호의 비정상” 신호가 "1"이 되면 검지.', '해당 차량 2축속도신호의 비정상 검지 현시 및 해당 차량 활주제어 불가.', '해당 차량의 2축 속도센서 고장 발생.', '해당 차량의 2축 속도센서가 정상적일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ba5e08ac-5680-4656-8e5e-19825a0a3f07', '0221', '221', 'BECU#5-제동력부족(ISBD)', 'T2', 'B', 'BECU-제동력부족(ISBD)', 'B', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit5 “ISBD” 신호가 "1"이 되면 검지.', '해당 차량 제동력 부족 검지 현시 및 해당 차량 제동압력(BCP)이 타 차량에 비해 현저히 낮음.', '제동 7단 취급 시 해당 차량의 제동압력이 생성되지 않음.', '제동 7단 취급 시 정상적인 제동압력이 생성된 경우 소거.', 'MCS모드로 전환 후, 마스콘을 N(중립) -> 제동7단까지 수회취급 하여 소거 여부 확인. 제동 취급 확인 후, 주의 운전 할 것. +지속발생시 관제보고하고 지시에 따를 것.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ba6fd5fc-044b-462d-8ff0-050bdc311ac9', '0702', '702', 'HVAC#1-냉난방장치2 압축기1 과부하', 'Tc1', 'C', 'HVAC-냉난방장치2 압축기1 과부하', 'C', 'HVAC', 'HVAC 냉방작동 중 냉난방장치2 압축기1 또는 응축기1 모터에 과부하 발생.', '냉방 기능 저하(전냉방시 반냉방으로 작동)', '1) 냉방작동 중 UNIT2의 압축기1 또는 응축기1 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRCM3과 연결된 THR3이 Trip 됨.', 'UNIT2의 압축기1 또는 응축기1 모터의 과부하 조건을 해소하여 정상 가능 상태로 만들고, THR3 및 마이콤 전원 리셋', '1) 냉난방배전반의 점검커버를 열고, THR3의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR4의 전류 세팅값이 11.5A에 맞춰져 있는지 확인하여, 아닐 경우, 십자 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동 시킨 후, THR3의 2차측 2,4,6 단자에서 각 단자간 상간 전압이 AC 380V으로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 압축기 및 응축기 단품 상태에서 점검을 한다. +7) THR3의 2차측 2,4,6 단자에서 각 단자간 권선저항이 모두 같은지 확인한다. (±10% 이하) (압축기1 및 응축기1 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT2의 압축기1 또는 응축기1 모터의 결선을 해제한 후 각 부품의 권선저항을 확인 후, 문제가 있는 부품을 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR3 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ba7093c6-10a5-4512-b76c-d5f76c574da5', '0202', '202', 'BECU#6 - 덤프밸브 고장(전두대차)', 'M3', 'C', 'BECU-덤프밸브고장(선두대차)', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit1 “덤프밸브고장(선두대차)” 신호가 “1”이 되면 검지 +', '해당 차량 덤프밸브고장(선두대차)검지 현시 및 해당 차량 활주제어불가', '해당 차량 선두대차의 덤프밸브가 작동하지 않음. +', '해당 차량 선두대차의 덤프밸브가 정상작동 시 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ba74a7a0-056e-4a58-a616-d34713b1bf32', '0502', '502', 'DCU#2 2위(L1)-출입문 장애물검지', 'M1', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ba7ffdfd-d059-4cd2-a80a-503866fbe569', '0743', '743', 'HVAC#2 - 전자접촉기 보조히터2(AHEK) 고장', 'M1', 'C', 'HVAC-전자접촉기 보조히터2(AHEK) 고장', 'C', 'HVAC', 'HVAC 보조난방기 작동 중 AHEK2 전자접촉기 고장 발생 +', 'UNIT1 보조난방기 전난방 시 반난방만 작동', '보조난방기 작동 중 2.5초 이상 동안 AHEK2 작동 feedback 신호가 수신되지 않는 경우 +', 'AHEK2 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) AHEK2를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, AHEK2와 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ba86cab3-d5bd-4681-af26-cc2feb0e3bf7', '0213', '213', 'BECU#1-AC 압력센서고장', 'Tc1', 'C', 'BECU-AC 압력센서 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit4 “AC 압력센서 고장” 신호가 "1"이 되면 검지.', '해당 차량 공기제동장치고장, AC압력센서 고장 검지 현시 및 해당 차량 제동제어 불가.', '해당 차량의 AC압력센서 고장.', '해당 차량의 AC압력센서가 정상일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ba8f3848-8b56-4042-beb0-626fdb2fcf5f', '0104', '104', 'VVVF#2 - 휠 슬라이드 검지(WSD)', 'M1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ba9b0cd8-a0e6-4626-bfb3-7ce8c978c4d5', '0223', '223', 'BECU#5 - 공기스프링 누설(전두대차)', 'T2', 'C', 'BECU-공기스프링누설(전두대차)', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit6 “공기스프링누설(전두대차)” 신호가 “1”이 +되면 검지 +', '해당 차량 공기스프링 누설(전두대차) 검지 현시 및 해당 차량 정상적인제동제어 불가 (응하중제어)', '해당 차량 전두대차의 공기스프링(AS1, AS2) 압력이 정상범위를 벗어남. (100kPa 미만) +', '해당 차량 전두대차의 공기스프링(AS1, AS2) 압력이 정상범위일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('baa34ffe-157a-4162-9dcb-559e9db3580a', '0088', '88', '화재검지기 고장(Car3)', 'M2', 'C', null, null, 'FDU', null, null, null, null, null, null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('baa510db-d5f0-4584-9274-832ac31701ac', '0519', '519', 'DCU#3 4위(L2) - ZVR 신호 에러', 'M2', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 “ZVR signal error” 신호가 “1”이 되면 검지 +', '출입문이강제로 닫히게 되고, 열림은 불가능', ' +1) 차량 ZVR 신호가 없는 상태(차량 주행상태)에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함. +', '해당 출입문 ZVR 신호 수신', '1) 차량 이 주행중이라면, 차량 이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('bab73767-e177-4217-802c-03d5b710684b', '1412', '1412', 'BMS#1 - 방전저온(DUT, - 20도 이하)', 'Tc1', 'D', 'BMS-방전저온(DUT)', 'D', 'BMS', '해당 차량의 배터리 온도가 -25도 이하가 되면 검지 +', '차량 배터리방전저온검지 후, -35도 이하이면 충전접촉기(CK)가 차단된다.', '배터리방전저온(-20도 이상) +', '배터리방전저온정상범위로 회복(-20도 이상)', '1) 배터리 NFB 상태 확인 +2) 이상이 없으면 차량 전체를 리셋한다. +3) 차량 리셋 후에도 동일고장이면 사령실과 연락하여 조치를 취한다. (배터리를 상온조건으로 만든다.)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('bab87182-8df8-4362-870d-d33b6dd6094b', '0819', '819', '실내카메라#3(SCAM) 고장(Car#2)', 'M1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('bac80e39-235a-4642-9189-7245a3e9d513', '0510', '510', 'DCU#8 6위(L3) - 출입문 닫힘 리미트 스위치1 고장', 'Tc2', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 “DCS1 Failure(Leftt)” 신호가 “1”이 되면 검지 +', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('bada9304-32ac-423c-b69e-5efc5c1383b1', '762', '762', 'CAB HVAC#8 - 내기센서 이상', 'Tc2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('baeb59b3-44e8-49fd-a5f2-2929ec27875c', '0705', '705', 'HVAC#6-냉난방장치2 증발기2 과부하', 'M3', 'C', 'HVAC-냉난방장치2 증발기2 과부하', 'C', 'HVAC', 'HVAC 냉방작동 중 냉난방장치2 증발기 모터에 과부하 발생.', 'UNIT2 냉방 기능 불가', '1) 냉방작동 중 UNIT2의 증발기 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CREF4와 연결된 THR8이 Trip 됨.', 'UNIT2의 증발기 모터의 과부하 조건을 해소하여 정상 가능 상태로 만들고, THR8 및 마이콤 전원 리셋', '1) 냉난방배전반의 점검커버를 열고, THR8의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR8의 전류 세팅값이 3A에 맞춰져 있는지 확인하여, 아닐 경우, 십자 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동 시킨 후, THR8의 2차측 2,4,6 단자에서 각 단자간 상간 전압이 AC 380V으로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 증발기 단품 상태에서 점검을 한다. +7) THR8의 2차측 2,4,6 단자에서 각 단자간 권선저항이 모두 같은지 확인한다. (±10% 이하) (증발기 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT2의 증발기 모터의 결선을 해제한 후 4극 및 6극 모터의 권선저항을 확인 후, 문제가 있을 겨우, 증발기 모터를 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR8 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('baf06475-8c80-4ec8-bed7-649d8ba0c47d', '0500', '500', 'DCU#8 5위(R3) 통신고장', 'Tc2', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS 간 RS485 통신고장이 검지되면 발생 +', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐상태 등의 변화가 없음.', ' +1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우 +', '해당 차량의 DCU 및 CU/TU의 전원이 정상상태이고, 통신 라인 연결 상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜져 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적 으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는 데도 지속적으로 통신고장이 검지되면, DCU의 X2, X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상 체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('baf46af2-a816-4c86-b447-aa447acf5961', '0704', '704', 'HVAC#1 - 냉난방장치1 압축기1 과부하', 'Tc1', 'C', 'HVAC-냉난방장치1 압축기1 과부하', 'C', 'HVAC', 'HVAC 냉방 작동 중 냉난방장치1 압축기1 또는 응축기1 모터에 과부하 발생 +', '냉방 기능 저하(전냉방 시 반냉방으로 작동)', ' +1) 냉방 작동 중 UNIT1의 압축기1 또는 응축기1 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRCM1과 연결된 THR1이 Trip 됨. +', 'UNIT1의 압축기1 또는 응축기1 모터의 과부하조건을 해소하여 정상 가능 상태로 만들고, THR1 및 마이콤 전원 리셋', '1) 냉난방 배전반의 점검커버를 열고, THR1의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR4의 전류 세팅값이 11.5A에 맞춰져 있는지 확인하여, 아닐 경우, (+) 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동시킨 후, THR1의 2차측 2, 4, 6 단자에서 각 단자 간 상간 전압이 AC 380V로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 압축기 및 응축기 단품 상태에서 점검을 한다. +7) THR1의 2차측 2, 4, 6 단자에서 각 단자 간 권선저항이 모두 같은지 확인한다. (±10% 이하) (압축기1 및 응축기1 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT1의 압축기1 또는 응축기1 모터의 결선을 해제한 후 각 부품의 권선저항을 확인 후, 문제가 있는 부품을 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR1 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('bb022eb5-227c-406e-bcc0-ae41e6f849ab', '0719', '719', 'HVAC#1 - 실내온도 센서2 고장', 'Tc1', 'C', 'HVAC-실내온도 센서2 고장', 'C', 'HVAC', '객실 실내 온도센서2 고장 발생 +', '실내 온도센서2 고장현시', '온도센서 검지범위는 -45 ~ 85도(820 ~ 1,330Ω)인데, 2초 이상 검지범위를 벗어나는 경우 +', '온도센서 검지값이 2초 이상 허용온도 범위 내일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820~1,330Ω을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('bb034353-e917-4097-bd73-773c6e3ba8f0', '0515', '515', 'DCU#8 6위(L3) - 출입문 열림 시간 초과', 'Tc2', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 “Open time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 열림 동작시간이 6초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도한 후, ‘장애물로 인한 열림 실패' 고장과 함께 ‘Open time out' 고장이 함께 현시 +', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('bb124737-4d84-4028-a264-a5a1ca671c2e', '1500', '1500', '출입문 회로차단기 차단(Car3)', 'M2', 'W', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('bb125a58-5129-4672-887e-3b4cd769f8a0', '0516', '516', 'DCU#1 2위(L1)-출입문 장애물로 인한 닫힘 실패', 'Tc1', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Close failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림상태로 대기', '도어 닫힘 중 3회 장애물 감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('bb171106-9818-43a2-9992-35d8d49f6a50', '0751', '751', 'HVAC#1-냉난방장치1 보조히터 과열', 'Tc1', 'C', 'HVAC-냉난방장치1 보조히터 과열', 'C', 'HVAC', 'HVAC1 보조난방기 작동 중 과열 발생.', 'UNIT1 보조난방기 난방 불가', '보조난방기 작동 중 1초 이상동안 온도가 70도 이상으로 과온센서 정상 신호가 수신되지 않는 경우', '1초 이상동안 60도 미만으로 온도가 떨어져 과온센서 정상 신호가 수신되는 경우', '1) 보조난방기가 꺼진 상태에서도 문제 발생 시, 과온 센서를 교체한다. +2) 센서 교체 후에도 문제가 발생되면, 배선에 문제가 없는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('bb1c7d95-4b35-49e5-acb5-db2191b0c7a8', '0507', '507', 'DCU#3 5위(R3)-초기화 실패', 'M2', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 "Calibration failure” 신호가 "1"이 되면 검지.', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터고장, 장애물 감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우', '초기화 실패를 야기한 고장 코드를 확인하여 조치 후, 재 닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('bb2b012d-922c-44cd-971a-4fec9bc3e35f', '0849', '849', '0', 'T2', '0', null, null, '0', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('bb459312-cac0-42ea-ab7d-912c7a7f3728', '0510', '510', 'DCU#7 6위(L3) - 출입문 닫힘 리미트 스위치1 고장', 'M4', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 “DCS1 Failure(Leftt)” 신호가 “1”이 되면 검지 +', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('bb5a3a68-a0db-4e33-b880-53653604e0d6', '0740', '740', 'HVAC#4-전자접촉기 증발기1(CREF) 고장', 'T1', 'C', 'HVAC-전자접촉기 증발기1(CREF) 고장', 'C', 'HVAC', 'HVAC 냉방작동 중 CREF1 전자접촉기 고장 발생.', 'UNIT1 냉방 작동 불가', '냉방작동 중 2.5초 이상동안 CREF1 작동 feedback 신호가 수신되지 않는 경우', 'CREF1 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CREF1을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CREF1과 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('bb5ace44-850b-4f53-af16-e3d4005c3b35', '1106', '1106', 'PSD#8 - 지상 PSD 장애(2계)', 'Tc2', 'D', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('bb718d4b-4c86-44b7-a4aa-9cf1cad8d095', '0520', '520', 'DCU#6 5위(R3)-이중계 절체 동작', 'M3', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 "Module switchover' 신호가 "1"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('bb7b6b66-a3ff-402c-b42b-c4253b70d777', '0412', '412', 'SIV#8 - 게이트 드라이버 고장, VY2상(GDFVY2)', 'Tc2', 'C', 'SIV-게이트 드라이버 고장, VY2상(GDFVY2)', 'C', 'SIV', '보조전원장치(SIV)의 RS485 데이터 중 SIV-TCMS SD TEXT5의 Bit2 “GDFVY2” 신호가 “1”이 되면 +검지 +', '1) TCMS 화면하단 또는 고장화면에 ‘GDFVY2상 이상 검지' 표시됨. +2) 보조전원장치(SIV)는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 보조전원장치(SIV) 중고장이 발생됨. +5) 중고장이 발생되면 TCMS 일반화면에 보조전원장치(SIV) 상태 붉은색으로 표기되며, 연장급점 됨.', '보조전원장치(SIV) 내부 GDU에 과전류, 과온이 검지될 경우 +', '1) 경고장이 발생할 경우 보조전원장치(SIV) 자동 재기동에 의해 재기동 됨. +2) 중고장이 발생할 경우 보조전원장치(SIV) 리셋으로 고장 소거됨.', '1) 상기 고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 보조전원장치(SIV) 고장기록을 수집하여 출력되는 3상의 AC 전류치를 확인함. +3) 특정상의 전류치가 비정상적일 경우 특정상에 해당되는 GDU, 전류센서, 출력단 결선을 확인 한다. +4) 전류센서와 보조전원장치(SIV) 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작 상태를 시험기를 통해 확인한다. +6) GDU 전원공급기의 전원연결 상태 또는 광케이블의 연결 상태와 배선상태를 확인한다. +7) 출력단 각상의 절연상태 및 각상과 접지 간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('bb842db9-8499-4feb-83fb-32930d7fc745', '0512', '512', 'DCU#6 3위(R2)-파라미터 로딩 실패', 'M3', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 "Paraneter error” 신호가 "1"이 되면 검지.', 'Parameter error 현시 (출입문은 정상작동 가능)', 'DCU 자체내의 EEPROM으로부터 parameter 데이터 로딩 실패', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('bb870c97-3b2c-4488-b0ac-ca3f9e16a7e4', '0514', '514', 'DCU#7 1위(R1)-출입문 닫힘 시간 초과', 'M4', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 "Close time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 닫힘 동작시간이 7초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도 한 후, '장애물로 인한 닫힘실패' 고장과 함께 'Close time out' 고장이 함께 현시', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('bb8c67f4-be6b-4d88-850b-f0af6c97fc73', '0731', '731', 'HVAC#1 - 냉난방장치1 리턴 센서 고장', 'Tc1', 'C', 'HVAC-냉난방장치1 리턴 센서 고장', 'C', 'HVAC', '냉난방장치1의 리턴 센서 고장 발생 +', '냉난방장치1 리턴 센서 고장현시', '온도센서 검지범위는 -45 ~ 85도(820 ~ 1,330Ω)인데, 2초 이상 검지범위를 벗어나는 경우 +', '온도센서 검지값이 2초 이상 허용온도 범위 내일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820 ~ 1,330Ω을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('bb92b1b4-2ba2-4cc5-b524-1da6e3dd33f4', '1517', '1517', 'CU1 모듈고장 - AUX2(Car1)', 'Tc1', 'C', 'CU1, 2 모듈고장 - AUX2', 'C', 'TCMS', 'CU의 AUX2 PCB가 이 정상적으로 인식되지 않아 점검이 필요할 때 +', '1) CU1의 AUX2 PCB가 모듈 고장이 발생하면, CU2로 자동 절체됨. (CU2로 자동 절체되면 운행 에는 지장이 없음.) +2) CU2 자동 절체 시 화면의 우측 상단 경고장글자 하단에 “B.SYS” 라는 표시가 나타남. +3) 자동절체 시 열차 운행에는 관계없음. +4) CU2의 AUX2 모듈고장 시는 CU1 정상동작시 운행에는 지장이 없음.', 'CU AUX2의 ID를 정상적으로 검출하지 못할 때 화면에 현시 +', 'CU AUX2의 ID를 정상적으로 검출하는 경우 소거됨.', '1) CU의 AUX2 PCB 교체 +2) 불량 해소가 되지 않을 경우, 순차적으로 MCPU, SCM, DIM PCB를 교체하여 정상여부 확인', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('bb9403a1-0c1a-46ac-8439-be3549275872', '0229', '229', 'AS 코크#1 차단(Car5)', 'T2', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('bb970619-c0c8-4417-b57a-13b9e3a8f459', '0122', '122', 'VVVF-후진속도검지(BSD) (Car3)', 'M2', 'C', 'VVVF-후진속도검지(BSD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT33의 Bit3 “BSD” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 '후진속도검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨.', '1) 추진제어장치에서 계산한 속도가 -5km/h 이하인 경우 검지됨.', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 견인전동기 속도센서 상태를 확인하고, 속도센서가 연결된 경로 배선연결 상태를 확인한다. +3) PGI 보드의 동작상태를 시험기를 통해 확인한다. +4) 속도신호에 이상이 없을 경우 운행기록을 수집하여 출발시 정차제동에 이상이 없는지 확인한다. +5) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.656536+00', null, '다대48량(2015)', 'Rotem'), ('bb985b38-c678-407a-996e-8c2a70e12225', '0506', '506', 'DCU#5 3위(R2)-출입문 입력 저전압', 'T2', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 "1"이 되면 검지.', '저전안 상태 (출입문 동작이 심하게 느려지거나 작동조차 안될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('bba9f383-d294-4101-a018-5f8c48881662', '1707', '1707', '노선안내표시기#4 고장(Car7)', 'M4', 'C', '노선안내표시기#5 고장', 'C', 'PIC', 'PIC 장치의 노선안내표시기#5이 고장이 났을 때 발생 +', '1) 노선안내표시기 화면 미현시 +2) 노선안내표시기 안내 화면 오현시', '통신고장 +', '통신 재개 시', '1) 이더넷 스위치 링크 확인 +2) 이더넷 케이블 점검 +3) 제어보드 및 전원보드 교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('bbacb875-d328-44c8-8791-69789bf67a87', '1519', '1519', 'TU 모듈고장 - DIM3(Car5)', 'T2', 'C', 'TU 모듈고장 - DIM3', 'C', 'TCMS', 'TU의 DIM3 PCB가 이 정상적으로 인식되지 않아 점검이 필요할 때 +', '1) TU의 DIM3 PCB가 모듈 고장이 발생하면, 해당 TU의 모든 디지털 데이터 입력 동작인식 불가 +2) 해당 TU가 M1 차량 인 경우 판토상태 갱신 불가 +3) 해당 TU가 T1차량 인 경우 연장급전상태 갱신 불가', 'TU DIM3의 ID를 정상적으로 검출하지 못할 때 화면에 현시 +', 'TU DIM3의 ID를 정상적으로 검출하는 경우 소거됨', '1) TU의 DIM3 PCB 교체 +2) 불량 해소가 되지 않을 경우, 순차적으로 SCM, AUX PCB를 교체하여 정상여부 확인', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('bbb04fa9-97d7-4a0f-b30c-867be321775a', '0507', '507', 'DCU#4 5위(R3) - 초기화 실패', 'T1', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 “Calibration failure” 신호가 “1”이 되면 검지 +', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터 고장, 장애물감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우 +', '초기화 실패를 야기한 고장코드를 확인하여 조치 후, 재닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인한다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('bbb5bc41-97d6-4d8c-b322-a56eefd5cda1', '0708', '708', 'HVAC#6 - 냉난방장치1 증발기1 과부하', 'M3', 'C', 'HVAC-냉난방장치1 증발기1 과부하', 'C', 'HVAC', 'HVAC 냉방 작동 중 냉난방장치1 증발기 모터에 과부하 발생 +', 'UNIT1냉방 작동 불가', ' +1) 냉방 작동 중 UNIT1의 증발기 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CREF1과 연결된 THR5가 Trip 됨. +', 'UNIT1의 증발기모터의 과부하조건을 해소하여 정상 가능 상태로 만들고, THR5 및 마이콤 전원 리셋', '1) 냉난방 배전반의 점검커버를 열고, THR5의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR5의 전류 세팅값이 3A에 맞춰져 있는지 확인하여, 아닐 경우, (+) 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동시킨 후, THR5의 2차측 2, 4, 6 단자에서 각 단자 간 상간 전압이 AC 380V로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 증발기 단품 상태 에서 점검을 한다. +7) THR5의 2차측 2, 4, 6 단자에서 각 단자 간 권선저항이 모두 같은지 확인한다. (±10% 이하) (증발기 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT2의 증발기 모터의 결선을 해제한 후 4극 및 6극 모터의 권선저항을 확인 후, 문제가 있을 경우, 증발기 모터를 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR5 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('bbcb958c-c902-46b6-ab56-5f0caa81b1b4', '0516', '516', 'DCU#5 4위(L2)-출입문 장애물로 인한 닫힘 실패', 'T2', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Close failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림상태로 대기', '도어 닫힘 중 3회 장애물 감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('bbdc5aab-2357-4c1d-a58e-4a59d4b11950', '0905', '905', '비상인터폰 동작(Car#6 - 2)', 'M1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('bbdf0a89-82cf-4067-a451-a3581d48063f', '0208', '208', 'BECU#8-공기제동장치고장', 'Tc2', 'C', 'BECU-공기제동장치고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit7 “공기제동장치고장” 신호가 "1"이 되면 검지.', '해당 차량 공기제동장치고장 검지 현시 및 해당 차량 정상적인 제동제어 불가.', '해당 차량 BECU의 자가진단 시 고장 발생 또는 AC압력센서 고장.', '해당 차량 BECU의 자가진단 시 정상적일 경우 또는 AC압력센서가 정상일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('bbea0b10-4432-4088-8715-76bc7222d3e5', '0700', '700', 'HVAC#6 통신고장', 'M3', 'C', 'HVAC-통신고장', 'C', 'HVAC', 'HVAC와 TCMS간 RS485 통신고장이 검지되면 발생.', '화면상 HVAC의 실내온도, 운전모드 등의 데이터가 반응하지 않음.', '1) 마이콤 전원 CB OFF +2) 통신연결 불량 +3) 해당 마이콤이 검수요원에 의해 firmware 업데이트 중인 경우', '해당차량의 마이콤 및 CU/TU 의 전원이 정상상태이고, 통신라인 연결상태가 정상', '1) 냉난방배전반의 점검커버를 열고, 마이콤이 정상적으로 켜저 있는지 확인한다. +2) 만약 마이콤 전원이 꺼져 있다면, 마이콤 DC전원 CB 및 차량 배전반에 위치한 냉난방장치 CB가 정상적으로 켜져 있는지 확인한다. +3) 마이콤이 정상적으로 켜져 있는데도 지속적으로 통순고장이 검지되면, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('bbf8c82a-90ba-44b9-b801-248423d2345a', '0717', '717', 'HVAC#6 - CO2 센서2 고장', 'M3', 'C', 'HVAC-CO2 센서2 고장', 'C', 'HVAC', '객실 CO2 센서2 고장 발생 +', 'CO2 센서2 고장 현시', 'CO2 센서의 검지범위는 0 ~ 4,000ppm(2 ~ 10Vdc)인데, 1초 이상 출력전압이 2Vdc(0ppm) 미만으로 떨어지는 경우 +', 'CO2 센서 검지값이 1초 이상 2Vdc(0ppm) 이상 지속되는 경우', '1) 전원을 인가한 상태에서 CO2 센서 커버를 열고 테스터기를 통해 ‘OUT2' 단자와 ‘G' 단자 간의 전압이 2Vdc 미만인지 확인한다. +2) 만약 전압이 2Vdc 이상인데도 고장이 지속될 경우 마이콤을 교체한다. +3) 만약 전압이 2Vdc 미만으로 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('bc05bc4d-b47e-45a4-b7c4-ed69788e5e15', '1204', '1204', 'FDU#2 - 감지기2 고장', 'M1', 'C', 'FDU-감지기2 고장 (Car1~8)', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 “Detector1 State” 신호가 “10”이 되면 검지 +', '감지기고장상태현시(자동소거 안 됨)', ' +1) 감지기로부터 데이터 응답이 없는 경우 +2) 감지기로부터 수신된 데이터의 CRC가 맞지 않는 경우 +3) 감지기로부터 수신된 데이터의 ID가 송신 ID와 일치하지 않는 경우 +', 'FDU 전원 리셋 후 감지기로부터 정상적으로 데이터가 수신된 경우', '1) FDU 전원 리셋 후 고장 소거 여부 확인 +2) 정상동작중인 감지기와 위치 교환 후 FDU 전원 리셋 및 고장 상태 확인 +3) 동일한 감지기에서 고장 발생 시 감지기 교체 +4) 동일한 위치에서 고장 발생 시 감지기 라인 점검', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('bc16f4b5-5fc8-4e7f-b50c-53a59b8be894', '1003', '1003', 'CMSB#1-출력단락', 'Tc1', 'C', 'CMSB-출력단락', 'C', 'CMSB', 'CMSB의 RS485 데이터 중 CMSB-TCMS SD TEXT3의 Bit4 “출력 단락” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 'CM출력 단락' 표시됨. +2) 바이패스 모드로 전환되고, CM 기동 시 '바이패스 기동'으로 표시됨.', '1) CM 모터의 단락이 발생되었을 경우 검지됨. +2) CMSB 내 IBGT 보드의 결함이 발생될 경우 검지됨. +3) CM 출력부하가 급변할 경우 검지됨.', '1) 차량 전원 OFF +2) CMSB 내부의 표시기패널 RESET 버튼 누름.', '0) 정상운행 후, 검수고에 입고하여 아래와 같이 조치한다. +1) 상기고장은 고장 소거 후, 재현시험을 진행하여 지속적으로 발생될 경우 아래와 같이 조치한다. +2) CM 모터의 절연상태를 점검한다. +3) CMSB 내 IGBT 보드를 점검한다.', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('bc1ee3b0-84b5-4d90-90a0-4d8c6d462975', '0500', '500', 'DCU#4 1위(R1) 통신고장', 'T1', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS 간 RS485 통신고장이 검지되면 발생 +', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐상태 등의 변화가 없음.', ' +1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우 +', '해당 차량의 DCU 및 CU/TU의 전원이 정상상태이고, 통신 라인 연결 상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜져 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적 으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는 데도 지속적으로 통신고장이 검지되면, DCU의 X2, X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상 체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('bc2e5019-148c-4a43-a829-45d4744dbfd8', '0516', '516', 'DCU#3 2위(L1) - 출입문 장애물로 인한 닫힘 실패', 'M2', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Close failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림 상태로 대기', '도어 닫힘 중 3회 장애물감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('bc31b2bf-07d5-4245-8726-2770a0ab272d', '0514', '514', 'DCU#3 4위(L2) - 출입문 닫힘 시간 초과', 'M2', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 “Close time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 닫힘 동작 시간이 7초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도한 후, ‘장애물로 인한 닫힘 실패' 고장과 함께 ‘Close time out' 고장이 함께 현시 +', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('bc3f96d5-bee5-4cd7-817d-494b0308303f', '0912', '912', 'TRAIN RADIO#1 - TRCP(차량조작반) 고장', 'Tc1', 'C', 'TRAIN RADIO-TRCP(차량 조작반) 고장', 'C', 'TRS', 'Train Radio의 E-NET 데이터 중 Train Radio-TCMS SD TEXT15의 Bit0 “TRCP 고장” 신호가 “1”이 되면 +검지 +', '기관사무전기 통화 불능', 'HW고장 +', '제어기 리셋', null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('bc4a07e6-0c55-4409-8db5-a311f4b67cae', '0517', '517', 'DCU#6 2위(L1)-출입문 장애물로 인한 열림 실패', 'M3', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Open failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘상태로 대기', '도어 열림 중 3회 장애물 감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 열림 시, 장애물 감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('bc4db04c-065d-426d-aa81-73e3e5037407', '0516', '516', 'DCU#7 5위(R3) - 출입문 장애물로 인한 닫힘 실패', 'M4', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Close failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림 상태로 대기', '도어 닫힘 중 3회 장애물감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('bc61cecb-be57-47fe-b07c-5c7dd62c38b6', '0513', '513', 'DCU#8 4위(L2)-모듈 상태체크 에러', 'Tc2', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 "Module check error” 신호가 "1"이 되면 검지.', 'Module check error 현시 (출입문은 정상작동 가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태체크 기능에 이상이 생긴 경우 고장 발생.', 'DCU의 'A'모듈과 'B'모듈 간, 상태체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('bc6a2d99-983e-4af2-8572-af679fa87b2a', '1526', '1526', 'TCMS 데이타버스2 우측라인 통신 이상(Car1)', 'Tc1', 'C', 'TCMS 데이터버스2 우측라인 통신 이상', 'C', 'TCMS', 'TCMS의 초기 기동 시 자기진단에 의한 2중계 메인통신선 중 2계 메인통신 이상 검지 시 +', '1) SL-NET 2중계이므로 데이터버스 1계로 정상통신, 운행에 지장 없음. +2) 초기기동 자기진단 시 2중계를 점검하여 2계측의 이상이 검지되었다는 점검 필요용 메시지', '초기 기동 시 SL-NET 1계와 2계를 각각 통신 후 비교하여 1계는 정상통신이 되나 2계는 정상통신이 안 되는 경우 +', '정상 수리 후 차량 전체 재기동하여 SL-NET 1계와 2계 모두 정상통신이 되는 경우', '1) 고장검출호차와 고장검출 우측호차와의 SL-NET 통신 2계 정상여부 확인(예 : 고장호차가 3호차인 경우, 1-2-3-4-5-6-7-8에서 3호차의 우측 즉, 3-4호차간 SL-NET 2계 통신 상태 점검 필요) +2) 고장검지호차의 SCM PCB 교체 정상여부 확인 +3) 고장검지호차의 우측호차 SCM PCB 교체 정상여부 확인 +4) 고장검지호차와 고장검지 우측호차의 SL-NET 2계 메인통신 배선의 연결 상태 확인 +5) 2 ~ 4번에도 정상적으로 복귀되지 않는 경우, CU/TU ASS'Y 교체(백보드 확인 필요)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('bc6af01b-8d86-4c37-9e53-3c3cef928d90', '0515', '515', 'DCU#4 3위(R2) - 출입문 열림 시간 초과', 'T1', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 “Open time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 열림 동작시간이 6초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도한 후, ‘장애물로 인한 열림 실패' 고장과 함께 ‘Open time out' 고장이 함께 현시 +', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('bc6c8cd3-d4c6-4c19-aa1d-9da0b617a825', '0717', '717', 'HVAC#5-CO2 센서2 고장', 'T2', 'C', 'HVAC-CO2 센서2 고장', 'C', 'HVAC', '객실 CO2 센서2 고장 발생', 'CO2 센서2 고장현시', 'CO2 센서의 검지범위는 0~4000ppm (2~10Vdc) 인데, 1초 이상 출력전압이 2Vdc (0ppm) 미만으로 떨어지는 경우', 'CO2 센서 검지 값이 1초 이상 2Vdc (0ppm) 이상 지속되는 경우', '1) 전원을 인가한 상태에서 CO2센서 커버를 열고 테스터기를 통해 'OUT2' 단자와 'G' 단자간의 전압이 2Vdc 미만인지 확인한다. +2) 만약 전압이 2Vdc 이상인데도 고장이 지속될 경우, 마이콤을 교체한다. +3) 만약 전압이 2Vdc 미만으로 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('bc88200b-8422-4448-9d1a-73ea4ff2b45b', '0208', '208', 'BECU#3 - 공기제동장치 고장', 'M2', 'C', 'BECU-공기제동장치고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit7 “공기제동장치고장” 신호가 “1”이 되면 검지 +', '해당 차량 공기제동장치 고장검지 현시 및 해당 차량 정상적인제동제어불가', '해당 차량 BECU의 자가진단 시 고장 발생 또는 AC 압력센서 고장 +', '해당 차량 BECU의 자가진단 시 정상적일 경우 또는 AC 압력센서가 정상일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('bc9fd0b5-4f32-4098-91d0-098ef5a16357', '0507', '507', 'DCU#3 6위(L3) - 초기화 실패', 'M2', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 “Calibration failure” 신호가 “1”이 되면 검지 +', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터 고장, 장애물감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우 +', '초기화 실패를 야기한 고장코드를 확인하여 조치 후, 재닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인한다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('bcbceb11-232e-4e3d-b38f-8381a65a9dab', '0514', '514', 'DCU#7 3위(R2)-출입문 닫힘 시간 초과', 'M4', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 "Close time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 닫힘 동작시간이 7초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도 한 후, '장애물로 인한 닫힘실패' 고장과 함께 'Close time out' 고장이 함께 현시', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('bcf45670-c175-48ee-b38a-7ebebe25602e', '1707', '1707', '노선안내표시기#6 고장(Car2)', 'M1', 'C', '노선안내표시기#5 고장', 'C', 'PIC', 'PIC 장치의 노선안내표시기#5이 고장이 났을 때 발생 +', '1) 노선안내표시기 화면 미현시 +2) 노선안내표시기 안내 화면 오현시', '통신고장 +', '통신 재개 시', '1) 이더넷 스위치 링크 확인 +2) 이더넷 케이블 점검 +3) 제어보드 및 전원보드 교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('bd50f4ce-7ad2-435b-86bb-7f0ccd02b985', '0709', '709', 'HVAC#1-냉난방장치2 압력스위치2(DPS) 저압', 'Tc1', 'D', 'HVAC-냉난방장치2 압력스위치2(DPS) 저압', 'D', 'HVAC', '냉난방장치2 냉매 압력스위치2 저압 발생.', 'UNIT2 CYCLE2 냉방 기능 불가', 'UNIT2 DSP2측 냉매 압력이 3초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우', '냉매 압력이 정상 수치 2±0.5(kgf/cm2 이상으로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CREF4의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)을 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안되는 것을 확인한 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('bd765fc2-c883-4f2e-937c-f75d6c150e1f', '0223', '223', 'BECU#2-공기스프링누설(전두대차)', 'M1', 'C', 'BECU-공기스프링누설(전두대차)', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit6 “공기스프링누설(전두대차)” 신호가 "1"이 되면 검지.', '해당 차량 공기스프링누설(전두대차) 검지 현시 및 해당차량 정상적인 제동제어 불가.(응하중 제어)', '해당 차량 전두대차의 공기스프링(AS1, AS2) 압력이 정상범위를 벗어남.(100kPa 미만)', '해당 차량 전두대차의 공기스프링(AS1, AS2) 압력이 정상범위일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('bd76de20-8a38-4a87-a3a4-6e63fac21823', '0513', '513', 'DCU#5 4위(L2) - 모듈 상태체크 에러', 'T2', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 “Module check error” 신호가 “1”이 되면 검지 +', 'Modulecheckerror현시(출입문은 정상작동가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태 체크 기능에 이상이 생긴 경우 고장 발생 +', 'DCU의 ‘A' 모듈과 ‘B' 모듈 간, 상태 체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('bd8174e8-3ade-4ca2-ae37-c5ceba0e8663', '0720', '720', 'HVAC#8-실내온도 센서1 고장', 'Tc2', 'C', 'HVAC-실내온도 센서1 고장', 'C', 'HVAC', '객실 실내온도 센서1 고장 발생', '실내온도 센서1 고장현시', '온도센서 검지범위는 -45~85도 (820~1330옴) 인데, 2초 이상 검지범위를 벗어나는 경우', '온도센서 검지 값이 2초 이상 허용온도 범위 내 일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820~1330옴 을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우, 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('bd93c938-515f-4123-a4e6-8987b275ce4d', '0738', '738', 'HVAC#8 - 전자접촉기 증발기3(CREF) 고장', 'Tc2', 'C', 'HVAC-전자접촉기 증발기3(CREF) 고장', 'C', 'HVAC', 'HVAC 냉방 작동 중 CREF3 전자접촉기 고장 발생 +', 'UNIT2 냉방 작동 불가', '냉방 작동 중 2.5초 이상 동안 CREF3 작동 feedback 신호가 수신되지 않는 경우 +', 'CREF3 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CREF3을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CREF3과 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('bd9817cb-7623-4006-83e9-1c90dc91f8f4', '1502', '1502', '기타장치용 DC 회로차단기 차단(Car2)', 'M1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('bdaa343b-3683-4320-88d6-9a0472ffe49b', '0502', '502', 'DCU#4 3위(R2)-출입문 장애물검지', 'T1', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('bdb64597-49a7-4457-bcfb-4266d7418009', '0505', '505', 'DCU#7 2위(L1) - 출입문 입력 고전압', 'M4', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 “1”이 되면 검지 +', '고전압 상태(그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상 +', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('bdbb9241-e41e-4a9f-9d20-0c2e4369ae27', '0500', '500', 'DCU#1 1위(R1) 통신고장', 'Tc1', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS 간 RS485 통신고장이 검지되면 발생 +', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐상태 등의 변화가 없음.', ' +1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우 +', '해당 차량의 DCU 및 CU/TU의 전원이 정상상태이고, 통신 라인 연결 상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜져 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적 으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는 데도 지속적으로 통신고장이 검지되면, DCU의 X2, X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상 체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('bdbe8147-e17c-4a93-af1c-28f0a48270dd', '0713', '713', 'HVAC#1-냉난방장치1 압력스위치2(DPS) 저압', 'Tc1', 'D', 'HVAC-냉난방장치1 압력스위치2(DPS) 저압', 'D', 'HVAC', '냉난방장치1 냉매 압력스위치2 저압 발생.', 'UNIT1 CYCLE2 냉방 기능 불가', 'UNIT1 DSP2측 냉매 압력이 3초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우', '냉매 압력이 정상 수치 2±0.5(kgf/cm2 이상으로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CREF2의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)을 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안되는 것을 확인한 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('bdc6d7d1-64c9-4ed5-b315-5159df6a4be2', '0717', '717', 'HVAC#3-CO2 센서2 고장', 'M2', 'C', 'HVAC-CO2 센서2 고장', 'C', 'HVAC', '객실 CO2 센서2 고장 발생', 'CO2 센서2 고장현시', 'CO2 센서의 검지범위는 0~4000ppm (2~10Vdc) 인데, 1초 이상 출력전압이 2Vdc (0ppm) 미만으로 떨어지는 경우', 'CO2 센서 검지 값이 1초 이상 2Vdc (0ppm) 이상 지속되는 경우', '1) 전원을 인가한 상태에서 CO2센서 커버를 열고 테스터기를 통해 'OUT2' 단자와 'G' 단자간의 전압이 2Vdc 미만인지 확인한다. +2) 만약 전압이 2Vdc 이상인데도 고장이 지속될 경우, 마이콤을 교체한다. +3) 만약 전압이 2Vdc 미만으로 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('bdcb4205-6d69-498c-8fab-51b5ff8cf17f', '1601', '1601', '미세먼지감지센서 모듈#1 - 센서 고장', 'Tc1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('bddb4c7b-b9fc-4ab5-b423-f2f419b88a2e', '0749', '749', 'HVAC#3-380V 전원고장', 'M2', 'C', 'HVAC-380V 전원고장', 'C', 'HVAC', 'HVAC 메인 전원 AC 380V 전원 고장 발생', 'HVAC 냉방 및 난방 기능 불가', '차량으로부터 공급되는 AC 380V가 입력되지 않는 경우', '차량으로부터 AC 380V 전압이 정상적으로 입력', '1) 차량으로부터 AC 380V 전압이 정상적으로 입력되는지 확인한다. +2) 차량전원이 정상일 경우, 냉난방 배전반의 CBLVD 차단기가 꺼져 있는지 확인 후, 꺼져있을 경우, 켠다. +3) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('bddc959d-7cc6-420f-be80-a1cb589d935e', '0517', '517', 'DCU#7 2위(L1) - 출입문 장애물로 인한 열림 실패', 'M4', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Open failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘 상태로 대기', '도어열림 중 3회 장애물감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 열림 시, 장애물감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('bde74e4b-75e6-4e73-8636-44b2a34dba91', '0748', '748', 'HVAC#2 - 전자접촉기 차량히터1(CRRHT) 고장', 'M1', 'C', 'HVAC-전자접촉기 차량 히터1(CRRHT) 고장', 'C', 'HVAC', '객실 난방기 작동 중 CRRHT1 전자접촉기 고장 발생 +', '객실 전난방 시 2/3난방만 작동', '객실 전난방 작동 중 2.5초 이상 동안 CRRHT1 작동 feedback 신호가 수신되지 않는 경우 +', 'CRRHT1 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CRRHT1을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRRHT1과 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('bdf14b5d-9389-4d10-8880-c08f4b709b14', '0174', '174', 'VVVF#6-통합제어장치-PWM제어장치간 신호이상 검지(ERRDIO)', 'M3', 'C', 'VVVF-DI 이상(TCUPWM)(ERRDIO)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT33의 Bit7 “ERRDIO” 신호가 "1"이 되면 검지.', null, 'PWM보드와 TCU(통합제어기)간 디지털신호의 이상 발생 시 검지.', '동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) 각 PWM 보드 전면의 LED점등을 확인하고 이상 발생 시 재 체결한다. +2) PWM 제어기 내부 PCB상태를 육안으로 점검한다. +3) 각 PWM보드의 CN1, CN2 커넥터를 분리하여 핀 상태 및 배선상태를 확인한다. +4) TCU(통합제어장치)의 PUZ 보드의 후면의 커넥터 삽입상태를 확인하고 이상 발생 시 재 체결한다. +5) TCU(통합제어장치)의 PUZ 보드 후면의 제어배선 중, TRX11P, TRX11F, TRX11G 배선의 연결상태 및 배선의 단선 여부를 확인한다. +6) 상기 점검 시 이상이 없을 경우 PUZ 보드를 교체한다.', null, '3', '2025-10-12 01:21:37.578803+00', null, '로템40량(2018)-1단계', 'Rotem'), ('bdf9b9ee-4513-484f-912e-f86a66a1506c', '0504', '504', 'DCU#4 6위(L3) - 출입문 외부 비상핸들 취급(EAD)', 'T1', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('be10d977-2a68-4b27-b099-f358b18141d4', '1008', '1008', 'CMSB#8-', 'Tc2', '0', null, null, '0', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('be229a5b-5011-454c-89bf-0300d6ceb403', '0111', '111', 'VVVF-검출기 전원이상검지(SPSF) (Car2)', 'M1', 'C', 'VVVF-검출기 전원이상검지(SPSF)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT31의 Bit6 “SPSF” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 '검출기 전원이상검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치 제어기에 SPW 보드에서 출력하는 센서 전원에 이상이 발생할 경우.', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반배전반의 VVVFIC nfb 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) SPW 보드의 LED 상태를 확인한다. LED가 소등되어 있거나 특정LED의 상태가 이상할 경우 SPW 보드를 교환한다. +3) SPW-SEN 보드로 연결되는 배선에 이상이 없는지 확인한다. +4) SEN 보드의 동작상태를 시험기를 통해 확인한다. +5) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.578803+00', null, '다대48량(2015)', 'Rotem'), ('be435745-a167-455c-b12a-32959dafae86', '0519', '519', 'DCU#6 4위(L2) - ZVR 신호 에러', 'M3', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 “ZVR signal error” 신호가 “1”이 되면 검지 +', '출입문이강제로 닫히게 되고, 열림은 불가능', ' +1) 차량 ZVR 신호가 없는 상태(차량 주행상태)에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함. +', '해당 출입문 ZVR 신호 수신', '1) 차량 이 주행중이라면, 차량 이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('be45d21b-84ee-4e46-a6f1-a5796989a298', '0700', '700', 'HVAC#7 통신고장', 'M4', 'C', 'HVAC-통신고장', 'C', 'HVAC', 'HVAC와 TCMS간 RS485 통신고장이 검지되면 발생.', '화면상 HVAC의 실내온도, 운전모드 등의 데이터가 반응하지 않음.', '1) 마이콤 전원 CB OFF +2) 통신연결 불량 +3) 해당 마이콤이 검수요원에 의해 firmware 업데이트 중인 경우', '해당차량의 마이콤 및 CU/TU 의 전원이 정상상태이고, 통신라인 연결상태가 정상', '1) 냉난방배전반의 점검커버를 열고, 마이콤이 정상적으로 켜저 있는지 확인한다. +2) 만약 마이콤 전원이 꺼져 있다면, 마이콤 DC전원 CB 및 차량 배전반에 위치한 냉난방장치 CB가 정상적으로 켜져 있는지 확인한다. +3) 마이콤이 정상적으로 켜져 있는데도 지속적으로 통순고장이 검지되면, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('be558938-182b-4075-92ca-f33de2bc7d01', '0505', '505', 'DCU#1 5위(R3) - 출입문 입력 고전압', 'Tc1', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 “1”이 되면 검지 +', '고전압 상태(그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상 +', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('be57d7a6-59ce-4332-842c-23b2209cae3a', '0214', '214', 'BECU#1 - BC 압력센서 고장', 'Tc1', 'C', 'BECU-BC 압력센서 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit5 “BC 압력센서 고장” 신호가 “1”이 되면 검지 +', '해당 차량 BC 압력센서 고장검지 현시 및 해당 차량 제동력부족, 제동불완해 검지 불가', '해당 차량의 BC 압력센서 고장 +', '해당 차량의 BC 압력센서가 정상일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('be697122-2d8d-421d-8a34-3a786c83ba25', '0217', '217', 'BECU#8-회생제동달성 비정상', 'Tc2', 'C', 'BECU-회생제동달성 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit0 “회생제동달성 비정상” 신호가 "1"이 되면 검지.', '해당 차량 회생제동달성 비정상 검지 현시 및 해당차량 정상적인 전공 교차제어 불가.', '해당 차량의 회생제동달성 신호가 정상범위를 벗어남(5.0~95.0%).', '해당 차량의 회생제동달성 신호가 정상범위일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. +소거되지 않을 경우 해당 차량 추진제어장치 리셋(CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('be735751-e35f-4e32-a6c5-8881031d2d51', '0743', '743', 'HVAC#3 - 전자접촉기 보조히터2(AHEK) 고장', 'M2', 'C', 'HVAC-전자접촉기 보조히터2(AHEK) 고장', 'C', 'HVAC', 'HVAC 보조난방기 작동 중 AHEK2 전자접촉기 고장 발생 +', 'UNIT1 보조난방기 전난방 시 반난방만 작동', '보조난방기 작동 중 2.5초 이상 동안 AHEK2 작동 feedback 신호가 수신되지 않는 경우 +', 'AHEK2 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) AHEK2를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, AHEK2와 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('be775bb1-70f1-487c-860c-fdaae4b3ae4d', '0204', '204', 'BECU#6-응하중 비정상', 'M3', 'C', 'BECU-응하중 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit3 “응하중 비정상” 신호가 "1"이 되면 검지.', '해당 차량 응하중 비정상 검지 현시.', '해당 차량의 응하중 출력이 정상범위를 벗어남.', '해당 차량 응하중 출력이 정상범위로 복귀 시 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('be7d74c2-0e3d-47fb-83cc-6ef3ab114867', '0739', '739', 'HVAC#1 - 전자접촉기 증발기2(CREF) 고장', 'Tc1', 'C', 'HVAC-전자접촉기 증발기2(CREF) 고장', 'C', 'HVAC', 'HVAC 냉방 작동 중 CREF2 전자접촉기 고장 발생 +', 'UNIT1 냉방 작동 불가', '냉방 작동 중 2.5초 이상 동안 CREF2 작동 feedback 신호가 수신되지 않는 경우 +', 'CREF2 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CREF2를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CREF2와 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('be821526-9425-4d3f-9f1a-4a8dd3564413', '0883', '883', '통합제어기(AVC) 고장(Car#8)', 'Tc2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('be8675a8-7bc5-48f6-a65b-626c3da48552', '0400', '400', 'SIV#1 통신고장', 'Tc1', 'B', 'SIV-통신고장', 'B', 'SIV', '보조전원장치(SIV)와 TCMS간 RS485 통신고장이 검지되면 발생.', 'TCMS 화면에 고장정보 현시되며, 보조전원장치 상태화면에 나타나는 출력전압 등의 데이터가 반응하지 않음.', '1) TCMS-보조전원장치(SIV) 간 통신정보가 3초이상 동일한 정보로 유지되면 통신고장을 검지함. +2) 또는 SIV 전원 CB가 OFF되었을 시 통신고장 검지함.', 'TCMS-추진제어장치(VVVF) 간 통신정보가 정상적으로 통신이 될경우 소거됨.', '1) 보조전원장치(SIV) 리셋 실시 후 통신고장 소거됨을 확인. +2) 통신고장 소거가 되지 않을 경우 보조전원장치 MON 보드 신품으로 교체후 통신고장 소거여부 확인. +3) 위 조건에도 고장이 소거되지 않을 경우, TCMS-보조전원장치간 RS485 통신케이블 연결상태 점검.', null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('bea04893-5b53-472e-9468-a18566cb61ec', '0153', '153', 'VVVF#2-FC 용량저하(FCLCD)', 'M1', 'C', 'VVVF-FC 용량저하(FCLCD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT31의 Bit2 “FCLVD” 신호가 "1"이 되면 검지.', null, '필터캐패시터 용량이 8900uF이하일 때 검지.', '제어전원 OFF', '1) FC용량 측정 후 8900uF 미만일 경우 신품으로 교체. +2) 주 회로 차단기함 내부 충전저항값을 측정하여 기준치(10Ω±10%)이내임을 확인.', null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('beb737d6-b9f9-4374-a400-794db982a9ce', '0514', '514', 'DCU#5 2위(L1) - 출입문 닫힘 시간 초과', 'T2', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 “Close time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 닫힘 동작 시간이 7초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도한 후, ‘장애물로 인한 닫힘 실패' 고장과 함께 ‘Close time out' 고장이 함께 현시 +', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('beca9b9c-34e8-4bd2-a427-11f565b168e8', '0728', '728', 'HVAC#4-냉난방장치2 토출 센서 고장', 'T1', 'C', 'HVAC-냉난방장치2 토출 센서 고장', 'C', 'HVAC', '냉난방장치2의 토출 센서 고장 발생', '냉난방장치2 토출센서 고장현시', '온도센서 검지범위는 -45~85도 (820~1330옴) 인데, 2초 이상 검지범위를 벗어나는 경우', '온도센서 검지 값이 2초 이상 허용온도 범위 내 일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820~1330옴 을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우, 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('bed0103a-8f41-4a1a-85e4-b73f9ed5a6ee', '0409', '409', 'SIV#1-DC(가선) 입력 과전압(DCINOV)', 'Tc1', 'C', 'SIV-DC(가선) 입력 과전압(DCINOV)', 'C', 'SIV', '보조전원장치(SIV)의 RS485 데이터 중 SIV-TCMS SD TEXT4의 Bit7 “DCINOV” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 '가선과전압 검지' 표시됨. +2) 보조전원장치(SIV)는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 보조전원장치(SIV) 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 보조전원장치(SIV) 상태 붉을색으로 표기되며, 연장급전 됨.', '보조전원장치(SIV)에 입력되는 전압이 2,400V 이상일 경우 검지됨.', '1) 경고장이 발생할 경우 보조전원장치(SIV) 자동 재기동에 의해 재기동 됨. +2) 중고장이 발생했을 경우 조치 완료 후 보조전원장치(SIV) 리셋으로 고장 소거됨.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 보조전원장치(SIV) 고장기록을 수집하여 보조전원장치(SIV)에 입력되는 전압값을 확인함. +3) 입력되는 전압값가 비정상적일 경우 보조전원장치(SIV) 입력회로를 접검한다.. +4) 보조전원장치(SIV)내의 입력전압센서 및 배선과 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작상태를 시험기를 통해 확인한다. +6) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('befd6848-4417-45f3-987a-e9cbf9685cbf', '0742', '742', 'HVAC#1 - 전자접촉기 보조히터3(AHEK) 고장', 'Tc1', 'C', 'HVAC-전자접촉기 보조히터3(AHEK) 고장', 'C', 'HVAC', 'HVAC 보조난방기 작동 중 AHEK3 전자접촉기 고장 발생 +', 'UNIT2 보조난방기 전난방 시 반난방만 작동', '보조난방기 작동 중 2.5초 이상 동안 AHEK3 작동 feedback 신호가 수신되지 않는 경우 +', 'AHEK3 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) AHEK3을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, AHEK3과 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('befe0f64-803f-4a15-8011-7eb2cc15b24f', '0515', '515', 'DCU#4 1위(R1) - 출입문 열림 시간 초과', 'T1', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 “Open time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 열림 동작시간이 6초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도한 후, ‘장애물로 인한 열림 실패' 고장과 함께 ‘Open time out' 고장이 함께 현시 +', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('bf0f813a-57f5-4a2b-97fd-8791f9d0415c', '0218', '218', 'BECU#5-인통선로직 비정상', 'T2', 'C', 'BECU-인통선로직 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit1 “인통선로직 비정상” 신호가 "1"이 되면 검지.', '해당 차량 인통선로직 비정상 검지 현시 및 해당차량 정상적인 제동제어 불가.(상용제동지령에 따른 제어)', '해당 차량의 추진선택(P), 제동선택(B) 신호가 동시에 ON 됨.', '해당 차량의 추진선택(P), 제동선택(B) 신호가 정상작동(상보적으로 작동) 될 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 한 뒤, 마스콘을 제동 7단으로 5초간 취급하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('bf12624b-9e07-4cb7-9b73-2636ecd211d3', '0503', '503', 'DCU#4 2위(L1) - 출입문 내부 비상핸들 취급(EED)', 'T1', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('bf382a22-2b73-4bff-ac69-7b1dec489893', '0502', '502', 'DCU#1 6위(L3) - 출입문 장애물검지', 'Tc1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('bf415a8d-c482-4b6e-a6f1-fa69483fc390', '0518', '518', 'DCU#8 4위(L2) - 출입문 Enable 신호 에러', 'Tc2', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 “Enable signal error” 신호가 “1”이 되면 검지 +', 'DCU 출입문Enable신호에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드 시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을 때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드 시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입 상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호 장치로부터의 출입문 열림 명령 신호) 취급 시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함. +', '해당 출입문 enable 신호수신', '1) AUTO/MCS 모드 시에는 YARD 모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인 한다. (YARD/FMC 모드 시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('bf46c6f9-e55c-4a18-9a70-462729da9a9c', '760', '760', 'CAB HVAC#8 - 코일센서 이상', 'Tc2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('bf6fb495-e97b-4bfe-9d8f-3cd020857ab2', '0164', '164', 'VVVF#3 - 역행/회생 전류 이상검지(PBCD)', 'M2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('bf73742f-767b-4f2d-bba3-848f851a41c2', '0516', '516', 'DCU#2 2위(L1)-출입문 장애물로 인한 닫힘 실패', 'M1', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Close failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림상태로 대기', '도어 닫힘 중 3회 장애물 감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('bf7a597c-918c-4578-b9b2-4516d9e708eb', '0506', '506', 'DCU#6 1위(R1)-출입문 입력 저전압', 'M3', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 "1"이 되면 검지.', '저전안 상태 (출입문 동작이 심하게 느려지거나 작동조차 안될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('bf9802c4-fc1d-44bf-ae27-9d152d149d39', '0517', '517', 'DCU#2 4위(L2) - 출입문 장애물로 인한 열림 실패', 'M1', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Open failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘 상태로 대기', '도어열림 중 3회 장애물감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 열림 시, 장애물감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('bfbcfe56-64eb-46b3-b721-8b4281e9aeb1', '0508', '508', 'DCU#8 3위(R2) - 출입문 모터/인코더 고장', 'Tc2', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 “Motor / Encoder failure” 신호가 “1”이 되면 +검지 +', '출입문 정상동작 불가', ' +1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우(인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터/인코더 회로 가 손상된 경우 +', '모터/인코더 및 DCU가 정상 상태이고, 전기적 연결 상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있는지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. ※ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. ? DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. ? DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) ? DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('bfbf14af-b214-4c52-8757-6b28815f72ab', '0719', '719', 'HVAC#7-실내온도 센서2 고장', 'M4', 'C', 'HVAC-실내온도 센서2 고장', 'C', 'HVAC', '객실 실내온도 센서2 고장 발생', '실내온도 센서2 고장현시', '온도센서 검지범위는 -45~85도 (820~1330옴) 인데, 2초 이상 검지범위를 벗어나는 경우', '온도센서 검지 값이 2초 이상 허용온도 범위 내 일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820~1330옴 을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우, 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('bfc53377-9d00-46af-919e-068e3a09cea9', '0138', '138', 'VVVF#2 - 입력과전류 검지(ISOC)', 'M1', 'C', 'VVVF-가선과전류 검지(ISOC)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT29의 Bit3 “ISOC” 신호가 “1”이 되면 검지 +', '1) TCMS 화면 하단 또는 고장화면에 ‘가선과전류 검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생함. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉은색으로 표기되며, HSCB, LB1, 2 개방되어 동력 손실 발생함.', '추진제어장치에 입력되는 전류가 1, 500A 이상일 경우 검지됨. +', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반 배전반의 VVVFIC nfb 재투입 또는 차량 배터리 전원 재투입', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 추진제어장치에 입력되는 전류치 확인함. +3) 입력되는 전류치가 비정상적일 경우 추진제어장치 입력회로 (HSCB, LB1, 2, CHRe)를 점검한다. +4) LB Box 내의 전류센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인 한다. +5) SEN 보드의 동작 상태를 시험기를 통해 확인한다. +6) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('bfd1733f-dde6-4255-b541-8fef9a3761d3', '0303', '303', 'ATC#1-FSB 명령', 'Tc1', 'W', 'ATC-FSB 명령', 'W', 'ATC', 'ATC의 RS485 데이터 중 ATC-TCMS SD TEXT12의 Bit1 “FSB Command” 신호가 "1"이 되면 검지.', null, '1) 제한속도 초과의 과속조건 +2) 운행 중, 출입문 열림 상태 검지 +3) 다대 연장구간 PG1 , PG2 미검지 시', '1) 열차속도가 제한속도 이하 시 +2) 출입문 닫힘 상태 검지 시 +3) 수동으로 운전모드 전환 시', '1) 열차속도가 제한속도 이하인지 확인한다. +2) 출입문 닫힘상태인지 확인한다. +3) 수동으로 운전모드 전환 후, 운행한다.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('bfd3b942-f290-4143-8c52-b1a332b78ec5', '0503', '503', 'DCU#3 6위(L3) - 출입문 내부 비상핸들 취급(EED)', 'M2', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('bfe02c62-5d17-4f86-8cd6-a6e13cc0d8d2', '0300', '300', 'ATC#1 통신고장', 'Tc1', 'B', 'ATC 통신고장', 'B', 'ATC', 'ATC와 TCMS간 RS485 통신고장이 검지되면 발생.', 'MMI화면에 ATC 상태가 통신고장으로 현시된다.', '1) ATC 전원 CB OFF +2) ATC시스템 자체진단테스트결과 비정상상태일 경우 +3) ATC-1계/2계 CPU보드 고장 시 +4) ATC-1계/2계 POWER보드 고장시 +5) 통신연결 불량', '해당차량의 ATC 및 CU 의 전원이 정상상태이고, 통신라인 연결상태가 정상', '1) MMI화면 우측 상단에 ATC/ATO1, ATC/ATO2 정상상태(초록색글자현시)인지 확인한다. +2) 비정상상태(빨간글자현시)시 전원스위치 CB ATC#1,2 OFF->ON하여 복귀시도 후, 복귀되었는지 확인한다. +3) ATC가 정상적으로 켜져 있는데도 지속적으로 통신고장이 검지되면, ATC의 CN3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상체결되어 있을 경우, CU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('c0058155-fbfc-457f-a1dc-442667666de5', '0517', '517', 'DCU#2 5위(R3) - 출입문 장애물로 인한 열림 실패', 'M1', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Open failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘 상태로 대기', '도어열림 중 3회 장애물감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 열림 시, 장애물감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c0115212-996f-4ebc-9b53-fa4b9eb6da1f', '0519', '519', 'DCU#4 3위(R2) - ZVR 신호 에러', 'T1', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 “ZVR signal error” 신호가 “1”이 되면 검지 +', '출입문이강제로 닫히게 되고, 열림은 불가능', ' +1) 차량 ZVR 신호가 없는 상태(차량 주행상태)에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함. +', '해당 출입문 ZVR 신호 수신', '1) 차량 이 주행중이라면, 차량 이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c0709a45-ce96-4196-986a-5cdb8da58680', '0704', '704', 'HVAC#5-냉난방장치1 압축기1 과부하', 'T2', 'C', 'HVAC-냉난방장치1 압축기1 과부하', 'C', 'HVAC', 'HVAC 냉방작동 중 냉난방장치1 압축기1 또는 응축기1 모터에 과부하 발생.', '냉방 기능 저하(전냉방시 반냉방으로 작동)', '1) 냉방작동 중 UNIT1의 압축기1 또는 응축기1 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRCM1과 연결된 THR1이 Trip 됨.', 'UNIT1의 압축기1 또는 응축기1 모터의 과부하 조건을 해소하여 정상 가능 상태로 만들고, THR1 및 마이콤 전원 리셋', '1) 냉난방배전반의 점검커버를 열고, THR1의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR4의 전류 세팅값이 11.5A에 맞춰져 있는지 확인하여, 아닐 경우, 십자 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동 시킨 후, THR1의 2차측 2,4,6 단자에서 각 단자간 상간 전압이 AC 380V으로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 압축기 및 응축기 단품 상태에서 점검을 한다. +7) THR1의 2차측 2,4,6 단자에서 각 단자간 권선저항이 모두 같은지 확인한다. (±10% 이하) (압축기1 및 응축기1 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT1의 압축기1 또는 응축기1 모터의 결선을 해제한 후 각 부품의 권선저항을 확인 후, 문제가 있는 부품을 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR1 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('c07df1a9-1984-4212-b414-7c63b40692b6', '0232', '232', 'BC 코크(차하#2) 차단(Car1)', 'Tc1', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('c08a5eae-e496-450d-9b4e-457bc0cc3d3a', '0516', '516', 'DCU#1 3위(R2) - 출입문 장애물로 인한 닫힘 실패', 'Tc1', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Close failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림 상태로 대기', '도어 닫힘 중 3회 장애물감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c08dac82-6a3a-459c-8709-df2e21b100e0', '0511', '511', 'DCU#6 3위(R2)-출입문 닫힘 리미트 스위치2 고장', 'M3', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 "DCS2 Failure(Right)” 신호가 "1"이 되면 검지.', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('c0948dd9-f1a5-49eb-b0f1-ab3158bc9d48', '0718', '718', 'HVAC#7-CO2 센서1 고장', 'M4', 'C', 'HVAC-CO2 센서1 고장', 'C', 'HVAC', '객실 CO2 센서1 고장 발생', 'CO2 센서1 고장현시', 'CO2 센서의 검지범위는 0~4000ppm (2~10Vdc) 인데, 1초 이상 출력전압이 2Vdc (0ppm) 미만으로 떨어지는 경우', 'CO2 센서 검지 값이 1초 이상 2Vdc (0ppm) 이상 지속되는 경우', '1) 전원을 인가한 상태에서 CO2센서 커버를 열고 테스터기를 통해 'OUT2' 단자와 'G' 단자간의 전압이 2Vdc 미만인지 확인한다. +2) 만약 전압이 2Vdc 이상인데도 고장이 지속될 경우, 마이콤을 교체한다. +3) 만약 전압이 2Vdc 미만으로 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('c09f84ca-4163-4cee-bb0c-6689474c9717', '0519', '519', 'DCU#3 2위(L1) - ZVR 신호 에러', 'M2', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 “ZVR signal error” 신호가 “1”이 되면 검지 +', '출입문이강제로 닫히게 되고, 열림은 불가능', ' +1) 차량 ZVR 신호가 없는 상태(차량 주행상태)에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함. +', '해당 출입문 ZVR 신호 수신', '1) 차량 이 주행중이라면, 차량 이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c0a0d71e-22b8-49b0-9d8e-e4ca56c2e71d', '1202', '1202', 'FDU#8-감지기1 고장', 'Tc2', 'C', 'FDU-감지기1 고장', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 "Detector1 State” 신호가 "10"이 되면 검지.', '감지기 고장상태 현시(자동 소거 안됨)', '1) 감지기로부터 데이터 응답이 없는경우. +2) 감지기로부터 수신된 데이터의 CRC가 맞지 않는경우 +3) 감지기로부터 수신된 데이터의 ID가 송신 ID와 일치하지 않는경우', 'FDU 전원 리셋 후 감지기로부터 정상적으로 데이터가 수신된 경우', '1) FDU 전원 리셋 후 고장 소거 여부 확인 +2) 정상 동작중인 감지기와 위치 교환 후 FDU 전원 리셋 및 고장 상태 확인 +3) 동일한 감지기에서 고장 발생시 감지기 교체 +4) 동일한 위치에서 고장 발생시 감지기 라인 점검', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('c0d14edf-fb2a-4bca-9fdc-365e239410cc', '1205', '1205', 'FDU#6 - 감지기3 화재감지', 'M3', 'W', 'FDU-감지기3 화재감지 (Car1~8)', 'W', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 “Detector1 State” 신호가 “11”이 되면 검지 +', '화재상태현시(자동소거 안 됨.)', '하기 2가지 조건을 모두 만족하여야 화재신호가 출력 됨. (연동모드 동작) +1) 이웃한(앞 혹은 뒤에 위치한) 감지기 중 하나의 감지기라도 주의 혹은 화재상태에 있어야 함. +2) Detector1(해당 감지기)에서 측정된 연기농도가 15% 이상이거나 온도가 65℃ 이상인 경우 +', '1) FDU의 복귀버튼 조작 시 +2) FDU 전원 리셋 시', '1) 해당 감지기 위치의 화재 발생 여부 확인 +2) 화재 오감지일 경우 FDU의 복귀버튼 취급 +3) 오감지일 경우 감지기의 청소주기 확인(내부 먼지 제거)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c0d1dbe4-985a-44af-9453-ec4e05318800', '0724', '724', 'HVAC#7 - 냉난방장치1 압력스위치1(DPS) 냉매부족', 'M4', 'C', 'HVAC-냉난방장치1 압력스위치1(DPS) 냉매부족', 'C', 'HVAC', '냉난방장치1 냉매 압력스위치1 저압 발생 +', 'UNIT1CYCLE1 냉방 기능 불가', 'UNIT1DSP1측 냉매압력이 30초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우 +', '냉매압력이 정상수치2±0.5(kgf/cm2) 이상 유지하도록 하고, 마이콤전원을 리셋', '1) 배전반 점검 커버를 열고 마이콤 전원을 리셋한 후, 냉방 가동 시, CREF2의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)을 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설 여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안 되는 것을 확인한 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c0d8ba94-16c2-43a3-a67b-5924f3847883', '0235', '235', '제동력부족(ISBD, Car8)', 'Tc2', 'B', '제동력부족(ISBD)', 'B', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit3 “ISBD” 신호가 "1"이 되면 검지.', '해당 차량 제동력 부족 검지 현시 및 해당 차량 제동압력(BCP)이 타 차량에 비해 현저히 낮음.', '제동 7단 취급 시 해당 차량의 제동압력이 생성되지 않음.', '제동 7단 취급 시 정상적인 제동압력이 생성된 경우 소거.', 'MCS모드로 전환 후, 마스콘을 N(중립) -> 제동7단까지 수회취급 하여 소거 여부 확인. 제동 취급 확인 후, 주의 운전 할 것. +지속발생시 관제보고하고 지시에 따를 것.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('c0efeba2-9c05-483a-84fd-3ac8ac49ee59', '1211', '1211', 'FDU#5 - 체크섬 고장', 'T2', 'C', 'FDU-체크섬 고장', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT5의 Bit7 “Checksum Fault” 신호가 “1”이 되면 검지 +', 'ChecksumFault 현시 및 FDU의 정상동작 불가능', '수신기펌웨어의 오류로 인한 체크섬 이상(MCU 내부 플래쉬메모리에 저장된 체크섬과 프로그램의 체크섬 계산값이 다를 경우) +', 'FDU가 부팅될 때 MCU 내부 플래쉬메모리에 저장된 체크섬과 프로그램의 체크섬 계산값이 같을 경우', '1) FDU의 전원을 리셋하여 소거여부 확인 +2) 문제가 지속될 경우, 수신기 교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c0f39bbe-5279-490f-9c82-454dffe5ff99', '0509', '509', 'DCU#5 3위(R2)-출입문 잠김 리미트 스위치 고장', 'T2', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 "DLS Failure” 신호가 "1"이 되면 검지.', '출입문 잠김 상태 확인 불가', '1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('c10453fd-a4e7-4976-a4ca-4b2a54b12855', '1004', '1004', 'CMSB#8-CM 출력과전류', 'Tc2', 'C', 'CMSB-CM 출력과전류', 'C', 'CMSB', 'CMSB의 RS485 데이터 중 CMSB-TCMS SD TEXT3의 Bit5 “출력 과전류” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 'CM출력 과전류' 표시됨. +2) 바이패스 모드로 전환되고, CM 기동 시 '바이패스 기동'으로 표시됨.', '1) CM 기동 시 출력전류가 정격전류의 250%(12.5A)이상 전류가 발생될 경우 검지됨.', '1) 차량 전원 OFF +2) CMSB 내부의 표시기패널 RESET 버튼 누름.', '1) 상기고장은 고장 소거 후, 재현시험을 진행하여 지속적으로 발생될 경우 아래와 같이 조치한다. +2) 공기압축기(CM) 출력전류을 확인한다.(공기압축기 매뉴얼 참조)', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('c116c4ec-7bbe-42eb-a0f5-ead6a3f9f21e', '0514', '514', 'DCU#4 3위(R2)-출입문 닫힘 시간 초과', 'T1', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 "Close time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 닫힘 동작시간이 7초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도 한 후, '장애물로 인한 닫힘실패' 고장과 함께 'Close time out' 고장이 함께 현시', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('c11ed60b-5c29-42e9-a796-b0f8bf61e687', '0228', '228', 'BC 코크(차하#1) 차단(Car2)', 'M1', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('c128e371-60ea-49f4-8ac8-1837978c7d62', '1211', '1211', 'FDU#7 - 체크섬 고장', 'M4', 'C', 'FDU-체크섬 고장', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT5의 Bit7 “Checksum Fault” 신호가 “1”이 되면 검지 +', 'ChecksumFault 현시 및 FDU의 정상동작 불가능', '수신기펌웨어의 오류로 인한 체크섬 이상(MCU 내부 플래쉬메모리에 저장된 체크섬과 프로그램의 체크섬 계산값이 다를 경우) +', 'FDU가 부팅될 때 MCU 내부 플래쉬메모리에 저장된 체크섬과 프로그램의 체크섬 계산값이 같을 경우', '1) FDU의 전원을 리셋하여 소거여부 확인 +2) 문제가 지속될 경우, 수신기 교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c13108cc-b952-45d3-8774-2be163e1749b', '0510', '510', 'DCU#6 4위(L2)-출입문 닫힘 리미트 스위치1 고장', 'M3', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 "DCS1 Failure(Leftt)” 신호가 "1"이 되면 검지.', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('c137add8-8d1b-452f-b052-0be9de80a5db', '0215', '215', 'BECU#8 - 후미대차 AS 압력센서 고장', 'Tc2', 'C', 'BECU-후미대차 AS 압력센서 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit6 “후미대차 AS 압력센서 고장” 신호가 +“1”이 되면 검지 +', '해당 차량 후미대차 AS 압력센서 고장검지 현시 및 해당 차량 정상적인 응하중제동제어 불가', '해당 차량의 후미대차 AS 압력센서(AS3, AS4) 고장 +', '해당 차량의 후미대차 AS 압력센서(AS3, AS4)가 정상일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c13eacb6-38cc-4b78-9197-341311d14b6f', '1523', '1523', 'TCMS 데이타버스2 좌측라인 통신 이상(Car8)', 'Tc2', 'C', 'TCMS 데이터버스2 좌측라인 통신 이상', 'C', 'TCMS', 'TCMS의 초기 기동 시 자기진단에 의한 2중계 메인통신선 중 2계 메인통신 이상 검지 시 +', '1) SL-NET 2중계이므로 데이터버스 1계로 정상통신, 운행에 지장 없음. +2) 초기기동 자기진단 시 2중계를 점검하여 2계측의 이상이 검지되었다는 점검 필요용 메시지', '초기 기동 시 SL-NET 1계와 2계를 각각 통신 후 비교하여 1계는 정상통신이 되나 2계는 정상통신이 안 되는 경우 +', '정상 수리 후 차량 전체 재기동하여 SL-NET 1계와 2계 모두 정상통신이 되는 경우', '1) 고장검출호차와 고장검출 좌측 호차와의 SL-NET 통신 2계 정상여부 확인(예 : 고장호차가 3호차인 경우, 1-2-3-4-5-6-7-8에서 3호차의 좌측, 즉 2-3호차 간 SL-NET 2계 통신 상태 점검 필요) +2) 고장검지호차의 SCM PCB 교체, 정상여부 확인 +3) 고장검지호차의 좌측호차 SCM PCB 교체, 정상여부 확인 +4) 고장검지호차와 고장검지 좌측호차의 SL-NET 2계 메인통신 배선의 연결 상태 확인 +5) 상기 2 ~ 4번 점검에도 정상적으로 복귀되지 않는 경우, CU/TU ASS'Y 교체(백보드 확인 필요)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c14899c7-e81c-4b4f-8b42-dd0d938dcdf8', '0505', '505', 'DCU#8 4위(L2) - 출입문 입력 고전압', 'Tc2', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 “1”이 되면 검지 +', '고전압 상태(그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상 +', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c1764ab0-9286-4df0-9f46-8af9251ceb71', '0015', '15', '자동지점보정 기능정지(수동버튼 취급)', 'HCR', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c17df831-22c8-40e2-b097-be69180dc700', '0514', '514', 'DCU#8 3위(R2) - 출입문 닫힘 시간 초과', 'Tc2', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 “Close time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 닫힘 동작 시간이 7초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도한 후, ‘장애물로 인한 닫힘 실패' 고장과 함께 ‘Close time out' 고장이 함께 현시 +', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c1812502-1ca0-4243-bbae-5614cc7669fe', '0719', '719', 'HVAC#5 - 실내온도 센서2 고장', 'T2', 'C', 'HVAC-실내온도 센서2 고장', 'C', 'HVAC', '객실 실내 온도센서2 고장 발생 +', '실내 온도센서2 고장현시', '온도센서 검지범위는 -45 ~ 85도(820 ~ 1,330Ω)인데, 2초 이상 검지범위를 벗어나는 경우 +', '온도센서 검지값이 2초 이상 허용온도 범위 내일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820~1,330Ω을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c19103e6-4b87-4b7c-8369-583b12dfc50b', '0521', '521', 'DCU#2 5위(R3)-모듈 상태 이상', 'M1', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 "01"또는 "00"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('c1923ba1-8f36-4b7a-8ad6-a1a700b3a8ac', '0739', '739', 'HVAC#7 - 전자접촉기 증발기2(CREF) 고장', 'M4', 'C', 'HVAC-전자접촉기 증발기2(CREF) 고장', 'C', 'HVAC', 'HVAC 냉방 작동 중 CREF2 전자접촉기 고장 발생 +', 'UNIT1 냉방 작동 불가', '냉방 작동 중 2.5초 이상 동안 CREF2 작동 feedback 신호가 수신되지 않는 경우 +', 'CREF2 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CREF2를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CREF2와 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c1a53fed-b337-4d69-aec2-4b4c92cd67a3', '0154', '154', 'VVVF#3-후진속도검지(BSD)', 'M2', 'W', 'VVVF-후진속도검지(BSD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT31의 Bit3 “BSD” 신호가 "1"이 되면 검지.', null, '정차 후 출발 시 차량이 구배에 의하여 뒤로 이동할 경우 발생.', '노치 OFF', '1) 추진제어장치 고장기록을 수집하여 차량 속도가 마이너스로 기록되어있는 경우 차량의 정차제동 계통을 확인한다. +2) 추진제어장치 시험기를 이용하여 TCU(통합제어장치)의 이상여부를 확인한다.', null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('c1aef0dc-8491-4050-89e3-aa2597c84d97', '0730', '730', 'HVAC#3-냉난방장치1 토출 센서 고장', 'M2', 'C', 'HVAC-냉난방장치1 토출 센서 고장', 'C', 'HVAC', '냉난방장치1의 토출 센서 고장 발생', '냉난방장치1 토출센서 고장현시', '온도센서 검지범위는 -45~85도 (820~1330옴) 인데, 2초 이상 검지범위를 벗어나는 경우', '온도센서 검지 값이 2초 이상 허용온도 범위 내 일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820~1330옴 을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우, 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('c1ba3659-e3b8-4b8d-ba3e-f7b2953833bd', '0102', '102', 'VVVF#2-회생제동차단(BRK BLOCK)', 'M1', 'W', null, null, 'VVVF', null, null, null, null, null, null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('c1bdba8e-7f4d-48ea-bbe5-3cce24a31b61', '0710', '710', 'HVAC#2-냉난방장치2 압력스위치2(DPS) 고압', 'M1', 'D', 'HVAC-냉난방장치2 압력스위치2(DPS) 고압', 'D', 'HVAC', '냉난방장치2 냉매 압력스위치2 고압 발생.', 'UNIT2 CYCLE2 냉방 기능 불가', 'UNIT2 DSP2측 냉매 압력이 3초 이상 28±1(kgf/cm2) 이상 되는 경우', '냉매 압력이 정상 수치 15±0.7(kgf/cm2 이하로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CRCM4의 부하측 전류를 측정하여 응축기 팬의 동작여부를 확인한다. +2) 응축기 코일의 전면에 이물질로 인한 막힘이 있는지 확인한다. +3) 응축기 팬 상부 그릴에 외부 이물질로 인한 막힘이 있는지 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('c1c31c28-2a58-439d-bd9e-edf8a3272cd9', '0517', '517', 'DCU#3 1위(R1)-출입문 장애물로 인한 열림 실패', 'M2', 'C', 'DCU-��입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Open failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘상태로 대기', '도어 열림 중 3회 장애물 감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 열림 시, 장애물 감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('c1cf8959-a922-4f7b-84a8-b03b5a233df8', '0316', '316', 'ATC#1 - 발리스 안테나 오류', 'Tc1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c1d5df44-d0f3-4de3-9e20-cdfbd5198d23', '0507', '507', 'DCU#1 1위(R1)-초기화 실패', 'Tc1', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 "Calibration failure” 신호가 "1"이 되면 검지.', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터고장, 장애물 감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우', '초기화 실패를 야기한 고장 코드를 확인하여 조치 후, 재 닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('c1e6a960-a79d-437d-8a10-04a34b7528aa', '0225', '225', 'BECU#4 - 강제완해검지(CPRD)', 'T1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c1e92d16-769c-4f0a-a439-403e0cdc0cd3', '0513', '513', 'DCU#4 1위(R1)-모듈 상태체크 에러', 'T1', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 "Module check error” 신호가 "1"이 되면 검지.', 'Module check error 현시 (출입문은 정상작동 가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태체크 기능에 이상이 생긴 경우 고장 발생.', 'DCU의 'A'모듈과 'B'모듈 간, 상태체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('c201c397-b9a4-4994-b301-402972a103d6', '0205', '205', 'BECU#5-회생제동요구 비정상', 'T2', 'C', 'BECU-회생제동요구 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit4 “회생제동요구 비정상” 신호가 "1"이 되면 검지.', '해당 차량 회생제동요구 비정상 검지 현시.', '해당 차량의 회생제동요구 출력이 정상범위를 벗어남.', '해당 차량 회생제동요구 출력이 정상범위로 복귀 시 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('c2048318-4d60-4279-b187-1278b6985aba', '0521', '521', 'DCU#7 6위(L3)-모듈 상태 이상', 'M4', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 "01"또는 "00"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('c2073eb3-4ba5-4be7-99e7-3ee108db233c', '0024', '24', '단부출입문 고장(Car5)', 'T2', 'C', '단부출입문고장(CAR5)', 'C', 'DCU', '차량이 단부 통로문으로부터 END DOOR FAULT 신호를 검지.', '출입문 정상동작 불가', '1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우 (인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +4) DCU 내부의 모터 / 인코더 회로가 손상된 경우', '모터/인코더 및 DCU가 정상상태이고, 전기적 연결상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있느지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. +★ 고장 조치 완료 후, 반드시 DCU의 reset 버튼을 누르거나 전원을 OFF/ON 하여 시스템을 재가동 해야 한다.', null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('c21992c5-279f-424a-a150-dc64c688fca0', '0504', '504', 'DCU#4 4위(L2) - 출입문 외부 비상핸들 취급(EAD)', 'T1', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c228da8f-b518-4c22-a629-de34d51a499e', '0502', '502', 'DCU#3 4위(L2) - 출입문 장애물검지', 'M2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c2350ed8-3763-461e-8353-675d3521a34a', '1109', '1109', 'PSD#1 - 차상 메모리고장(2계)', 'Tc1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c2365e10-e02a-4dbb-b8b6-aeb76acc0f23', '0515', '515', 'DCU#5 5위(R3)-출입문 열림 시간 초과', 'T2', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 "Open time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 열림 동작시간이 6초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도 한 후, '장애물로 인한 열림실패' 고장과 함께 'Open time out' 고장이 함께 현시', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('c2744533-21c4-4036-8d20-81bdd47fc43a', '0713', '713', 'HVAC#4 - 냉난방장치1 압력스위치2(DPS) 저압', 'T1', 'D', 'HVAC-냉난방장치1 압력스위치2(DPS) 저압', 'D', 'HVAC', '냉난방장치1 냉매 압력스위치2 저압 발생 +', 'UNIT1CYCLE2 냉방기능불가', 'UNIT1DSP2측 냉매압력이 3초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우 +', '냉매압력이 정상수치 2±0.5(kgf/cm2) 이상으로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CREF2의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)를 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설 여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안 되는 것을 확인한 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c277d37c-832c-492b-8f7d-c0ea28145809', '0501', '501', 'DCU#1 2위(L1)-출입문 차단', 'Tc1', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('c2802c25-cd92-4718-b059-fd7d975aa5fb', '0311', '311', 'ATC#8-', 'Tc2', '0', null, null, '0', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('c29a88b9-09e6-41a7-afbf-1a3aea143aea', '0735', '735', 'HVAC#4 - 전자접촉기 압축기(CRCM)2 고장', 'T1', 'C', 'HVAC-전자접촉기 압축기(CRCM)2 고장', 'C', 'HVAC', 'HVAC 냉방 작동 중 CRCM2 전자접촉기 고장 발생 +', '냉방 기능 저하(전냉방 시 반냉방으로 작동)', '냉방 작동 중 2.5초 이상 동안 CRCM2 작동 feedback 신호가 수신되지 않는 경우 +', 'CRCM2 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CRCM2를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRCM2와 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c2a897e7-8171-427c-b5d9-f024f5c254d9', '0500', '500', 'DCU#2 4위(L2) 통신고장', 'M1', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS간 RS485 통신고장이 검지되면 발생.', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐 상태 등의 변화가 없음.', '1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우', '해당차량의 DCU 및 CU/TU 의 전원이 정상상태이고, 통신라인 연결상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜저 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는데도 지속적으로 통순고장이 검지되면, DCU의 X2,X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('c2b769a6-237b-4f3e-915b-2a88a45ddc12', '0404', '404', 'SIV#1-AC 출력과전압(ACOV)', 'Tc1', 'C', 'SIV-AC 출력과전압(ACOV)', 'C', 'SIV', '보조전원장치(SIV)의 RS485 데이터 중 SIV-TCMS SD TEXT4의 Bit2 “ACOV” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 'SIV AC 출력과전압 검지' 표시됨. +2) 보조전원장치(SIV)는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 보조전원장치 중고장이 발생됨. +5) 중고장이 발생되면 TCMS 일반화면에 보조전원장치 상태 붉을색으로 표기되며, 연장급전 됨.', '보조전원장치(SIV)에서 출력되는 AC U, V, W 상의 전압이 500V 이상일 경우 검지됨.', '1) 경고장이 발생할 경우 보조전원장치(SIV) 자동 재기동에 의해 재기동 됨. +2) 중고장이 발생했을 경우 조치 완료 후 보조전원장치(SIV) 리셋으로 고장 소거됨.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 보조전원장치(SIV) 고장기록을 수집하여 출력되는 3상의 AC 전압값 확인함. +3) 특정상의 전압치가 비정상적일 경우 특정상에 해당되는 GDU, 전압센서, AC 출력단 결선을 확인한다. +4) 전압센서와 보조전원장치(SIV) 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작상태를 시험기를 통해 확인한다. +6) 출력단 각 상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +7) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('c2cbb86b-d8ff-40c9-a455-bbbadae65639', '0034', '34', 'ATC 비상제동', 'Tc2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c2cce3c4-d526-4ac6-8bcd-40172043dc26', '0510', '510', 'DCU#8 5위(R3)-출입문 닫힘 리미트 스위치1 고장', 'Tc2', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 "DCS1 Failure(Leftt)” 신호가 "1"이 되면 검지.', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('c2d4a932-3e9e-47fb-8d0e-536be5ef5587', '0507', '507', 'DCU#4 2위(L1) - 초기화 실패', 'T1', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 “Calibration failure” 신호가 “1”이 되면 검지 +', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터 고장, 장애물감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우 +', '초기화 실패를 야기한 고장코드를 확인하여 조치 후, 재닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인한다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c2d6a893-5842-451b-a0e1-049b4de77c6f', '0502', '502', 'DCU#6 2위(L1) - 출입문 장애물검지', 'M3', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c2e0da7c-ad98-4bc2-955a-482bd14fdd1c', '0517', '517', 'DCU#4 5위(R3) - 출입문 장애물로 인한 열림 실패', 'T1', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Open failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘 상태로 대기', '도어열림 중 3회 장애물감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 열림 시, 장애물감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c2e4e424-47f9-40b6-ab60-307d5f31e058', '0521', '521', 'DCU#2 2위(L1) - 모듈 상태 이상', 'M1', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 “01” 또는 “00”이 되면 +검지 +', '이중계절체동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러)이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c2f9d0cd-f626-4b77-aa2f-bf5197417817', '0511', '511', 'DCU#8 6위(L3) - 출입문 닫힘 리미트 스위치2 고장', 'Tc2', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 “DCS2 Failure(Right)” 신호가 “1”이 되면 검지 +', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c310ae24-d9df-47e5-9f4d-5022773ad8de', '0510', '510', 'DCU#8 3위(R2)-출입문 닫힘 리미트 스위치1 고장', 'Tc2', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 "DCS1 Failure(Leftt)” 신호가 "1"이 되면 검지.', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('c316950d-c255-417e-ad79-3ab5f4db43f1', '0714', '714', 'HVAC#8-냉난방장치1 압력스위치2(DPS) 고압', 'Tc2', 'D', 'HVAC-냉난방장치1 압력스위치2(DPS) 고압', 'D', 'HVAC', '냉난방장치1 냉매 압력스위치2 고압 발생.', 'UNIT1 CYCLE2 냉방 기능 불가', 'UNIT1 DSP2측 냉매 압력이 3초 이상 28±1(kgf/cm2) 이상 되는 경우', '냉매 압력이 정상 수치 15±0.7(kgf/cm2 이하로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CRCM2의 부하측 전류를 측정하여 응축기 팬의 동작여부를 확인한다. +2) 응축기 코일의 전면에 이물질로 인한 막힘이 있는지 확인한다. +3) 응축기 팬 상부 그릴에 외부 이물질로 인한 막힘이 있는지 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('c31f2b62-363a-4364-a76a-dc874b8c135d', '1504', '1504', '냉방장치용 AC 회로차단기 차단(Car4)', 'T1', 'W', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('c32581a7-791f-4d6d-b917-d7460377e4be', '0501', '501', 'DCU#8 6위(L3) - 출입문 차단', 'Tc2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c336a5bd-fd3d-4b9e-b6d2-7e0d8614b49e', '0164', '164', 'VVVF#2-역행/회생 전류이상검지(PBCD)', 'M1', 'C', 'VVVF-부정회생(PBCD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT32의 Bit5 “PBCD” 신호가 "1"이 되면 검지.', null, '역행지령 중 회생동작 또는, 회생중 역행동작 시 고장검지.', '1) 역행 고장검지 2초 후 자동 재기동 +2) 제동 제동 OFF시 고장 소거', '1) 상기 고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) CTS 전류센서의 외관상태 및 저전압 커넥터 체결상태를 확인한다. +3) CTS 전류센서의 방향을 확인한다. +4) CTS 전류센서로부터 TCU(통합제어장치)까지의 저전압 배선을 확인한다. +5) CTS 커넥터의 P15B1~F15C1의 전압이 +15V, N15B1~F15C1의 전압이 -15V임을 확인한다. +6) 상기의 점검부분에 이상이 있을 경우 관련부품을 교체한다.', null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('c3397b46-0ecb-4a51-af03-a208a5e5fca4', '0235', '235', '제동력부족(ISBD, Car8)', 'Tc2', 'B', '제동력부족(ISBD)', 'B', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit3 “ISBD” 신호가 “1”이 되면 검지 +', '해당 차량 제동력부족검지 현시 및 해당 차량 제동압력(BCP)이 타 차량에 비해 현저히 낮음.', '제동 7단 취급 시 해당 차량의 제동압력이 생성되지 않음. +', '제동 7단 취급 시 정상적인제동압력이 생성된 경우 소거', 'MCS 모드로 전환 후, 마스콘을 N(중립) → 제동 7단까지 수 회 취급하여 소거 여부 확인, 제동 취급 확인 후, 주의 운전할 것, 지속발생 시 관제보고하고 지시에 따를 것', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c35cf2cb-7c53-431e-aafa-194c3de44815', '0727', '727', 'HVAC#7-배기팬1 과부하', 'M4', 'C', 'HVAC-배기팬1 과부하', 'C', 'HVAC', 'HVAC 환기작동 중 차량 배기팬1 모터에 과부하 발생.', '환기 시 차량 배기팬2 운전 불가능', '1) 냉방작동 중 챠량 배기팬1 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRVF1와 연결된 THR9가 Trip 됨.', '차량 배기팬1 모터의 과부하 조건을 해소하여 정상 가능 상태로 만들고, THR9 및 마이콤 전원 리셋', '1) 냉난방배전반의 점검커버를 열고, THR9의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR9의 전류 세팅값이 2.5A에 맞춰져 있는지 확인하여, 아닐 경우, 십자 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동 시킨 후, THR9의 2차측 2,4 단자와 6 단자 사이의 전압이 DC 100V으로 정상 측정되는지 확인한다. +5) 만약 전압이 측정되지 않을 시, 전원이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, THR9 부품을 교체한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('c36120de-02a2-4c68-b63c-3cf7298eb5a4', '0016', '16', '열차번호 불일치', 'Tc1', 'W', '열차번호 불일치', 'W', 'ATC', '기관사가 설정한 열차번호와 신호장치로부터 전송받은 열차번호가 일치하지 않을 경우 검지.', '1) TCMS 화면 하단에 '열차번호 불일치' 현시(차량 운행에는 지장 없음.)', '1) 기관사가 설정한 열차번호와 신호장치로부터 수신된 열차번호가 불일치시 현시됨.(단, 지상으로부터 열차번호가 수시될 수 있는 구간에 한함)', '1) 열차번호가 동일하게 입력되면 고장 소거됨.', '1) 입력한 열차번호가 맞는지 확인. +2) 입력한 열차번호가 맞다면 신호장치로부터의 열차번호가 정상인지 확인', null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('c37229bb-8df7-473a-8908-f8cb89652a11', '0506', '506', 'DCU#4 1위(R1)-출입문 입력 저전압', 'T1', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 "1"이 되면 검지.', '저전안 상태 (출입문 동작이 심하게 느려지거나 작동조차 안될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('c38413d6-926e-48e3-aca4-486c231bd858', '1751', '1751', 'EVR#1 CPM 고장', 'Tc1', 'C', 'EVR#1 CPM 고장', 'C', 'EVR', 'EVR의 CPM이 작동하지 않을 때 경고 +', 'EMPU 전면의 ERR LED가 붉은색으로 점등', '초기 기동 시 CPM 상태 확인 중 오류발생 또는 연결 상태 불량 +', 'CPM 정상 작동', 'EMPU 전면 Reset 버튼을 눌러 재기동, 재기동 후 동일 증상 발생 시 케이블 연결 상태 확인 후 Reset 지속 발생 시 CPM 교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c38fe438-0f61-4afe-8df6-a5c122d77436', '0724', '724', 'HVAC#2-냉난방장치1 압력스위치1(DPS) 냉매부족', 'M1', 'C', 'HVAC-냉난방장치1 압력스위치1(DPS) 냉매부족', 'C', 'HVAC', '냉난방장치1 냉매 압력스위치1 저압 발생.', 'UNIT1 CYCLE1 냉방 기능 불가', 'UNIT1 DSP1측 냉매 압력이 30초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우', '냉매 압력이 정상 수치 2±0.5(kgf/cm2 이상 유지하도록 하고, 마이콤 전원을 리셋', '1) 배전반 점검 커버를 열고 마이콤 전원을 리셋한 후, 냉방 가동 시, CREF2의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)을 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안되는 것을 확인한 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('c391072d-3e10-46fc-885c-596f02978098', '0703', '703', 'HVAC#1-냉난방장치1 압축기2 과부하', 'Tc1', 'C', 'HVAC-냉난방장치1 압축기2 과부하', 'C', 'HVAC', 'HVAC 냉방작동 중 냉난방장치1 압축기2 또는 응축기2 모터에 과부하 발생.', '냉방 기능 저하(전냉방시 반냉방으로 작동)', '1) 냉방작동 중 UNIT1의 압축기2 또는 응축기2 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRCM2와 연결된 THR2가 Trip 됨.', 'UNIT1의 압축기2 또는 응축기2 모터의 과부하 조건을 해소하여 정상 가능 상태로 만들고, THR2 및 마이콤 전원 리셋', '1) 냉난방배전반의 점검커버를 열고, THR2의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR2의 전류 세팅값이 11.5A에 맞춰져 있는지 확인하여, 아닐 경우, 십자 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동 시킨 후, THR2의 2차측 2,4,6 단자에서 각 단자간 상간 전압이 AC 380V으로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 압축기 및 응축기 단품 상태에서 점검을 한다. +7) THR2의 2차측 2,4,6 단자에서 각 단자간 권선저항이 모두 같은지 확인한다. (±10% 이하) (압축기2 및 응축기2 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT1의 압축기1 또는 응축기1 모터의 결선을 해제한 후 각 부품의 권선저항을 확인 후, 문제가 있는 부품을 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR2 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('c3a27982-9de0-4fd5-bf90-95e7d05c9e9a', '0518', '518', 'DCU#6 5위(R3)-출입문 Enable 신호 에러', 'M3', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 "Enable signal error” 신호가 "1"이 되면 검지.', 'DCU 출입문 Enable 신호 에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) 취급시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함.', '해당출입문 enable 신호 수신', '1) AUTO/MCS 모드시에는 YARD모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인한다. (YARD/FMC 모드시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('c3a66fb9-dfb4-4aff-a4d2-341b5437ba44', '0915', '915', 'TRAIN RADIO#8 - CVD(차량영상장치) 고장', 'Tc2', 'D', 'TRAIN RADIO-CVD(차량 영상장치) 고장', 'C', 'TRS', 'Train Radio의 E-NET 데이터 중 Train Radio-TCMS SD TEXT15의 Bit3 “CVD' 고장” 신호가 “1”이 되면 +검지 +', 'CCTV 영상저장불가', 'HW 고장, 메모리 고장 +', '제어기 리셋', null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c3ad0297-08e9-45ed-a59d-90691a124dc8', '0877', '877', '통합제어기(AVC) SSD 2번 고장(Car#8)', 'Tc2', 'C', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('c3c1f81f-af09-4ab3-ac17-1bc25b60f8d3', '0161', '161', 'VVVF#2-통합제어장치 이상검지(CPUWDTD)', 'M1', 'C', 'VVVF-마이컴이상(TCU)(CPUWDTD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT32의 Bit2 “CPUWDTD” 신호가 "1"이 되면 검지.', null, '통합제어기 내 CPU고장에 의한 Watch Dog Timer 카운터 정지시 고장검지.', '동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) 판토 하강상태에서 인버터 재 기동 후 해당 고장 재발여부를 확인한다. +2) 추진제어장치 시험기를 이용하여 TCU(통합제어장치)의 이상여부를 확인한다. +3) 상기 점검부에 이상이 있는 경우 TCU(통합제어장치)를 교체한다.', null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('c3d98447-b58c-4183-b608-f1761cb9d90c', '0500', '500', 'DCU#1 4위(L2) 통신고장', 'Tc1', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS 간 RS485 통신고장이 검지되면 발생 +', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐상태 등의 변화가 없음.', ' +1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우 +', '해당 차량의 DCU 및 CU/TU의 전원이 정상상태이고, 통신 라인 연결 상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜져 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적 으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는 데도 지속적으로 통신고장이 검지되면, DCU의 X2, X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상 체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c3ea851c-56b2-4334-89a8-aac4a57b4b4c', '0516', '516', 'DCU#4 1위(R1)-출입문 장애물로 인한 닫힘 실패', 'T1', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Close failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림상태로 대기', '도어 닫힘 중 3회 장애물 감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('c3f622fe-92f7-4eeb-a2b5-31c223f92298', '0706', '706', 'HVAC#5 - 냉난방장치1 증발기2 과부하', 'T2', 'C', 'HVAC-냉난방장치1 증발기2 과부하', 'C', 'HVAC', 'HVAC 냉방 작동 중 냉난방장치1 증발기 모터에 과부하 발생 +', 'UNIT1냉방 작동 불가', ' +1) 냉방 작동 중 UNIT1의 증발기 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CREF2와 연결된 THR6이 Trip 됨. +', 'UNIT1의 증발기모터의 과부하조건을 해소하여 정상 가능 상태로 만들고, THR6 및 마이콤 전원 리셋', '1) 냉난방 배전반의 점검커버를 열고, THR6의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR6의 전류 세팅값이 3A에 맞춰져 있는지 확인하여, 아닐 경우, (+) 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동시킨 후, THR6의 2차측 2, 4, 6 단자에서 각 단자 간 상간 전압이 AC 380V로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 증발기 단품 상태 에서 점검을 한다. +7) THR6의 2차측 2, 4, 6 단자에서 각 단자 간 권선저항이 모두 같은지 확인한다. (±10% 이하) (증발기 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT1의 증발기 모터의 결선을 해제한 후 4극 및 6극 모터의 권선저항을 확인 후, 문제가 있을 경우, 증발기 모터를 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR6 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c4022e17-25dc-4e7d-bc53-8b509582e58d', '0227', '227', '제동관련 회로차단기 차단(Car7)', 'M4', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('c40b2cd6-8766-4c24-9273-8213bb4a5866', '0078', '78', '화재검지(Car1)', 'Tc1', 'W', null, null, 'FDU', null, null, null, null, null, null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('c40f1751-a8ec-42c3-9141-c659333163e5', '0175', '175', 'VVVF#6 - HSCB 투입불량(HBNC)', 'M3', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c41cd0ea-415c-4216-9bdd-7fd514421603', '0514', '514', 'DCU#1 4위(L2) - 출입문 닫힘 시간 초과', 'Tc1', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 “Close time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 닫힘 동작 시간이 7초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도한 후, ‘장애물로 인한 닫힘 실패' 고장과 함께 ‘Close time out' 고장이 함께 현시 +', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c41fb9d5-badd-40ee-b525-53e33ff488e7', '1200', '1200', 'FDU#2 통신고장', 'M1', 'B', 'FDU 통신고장', 'B', 'FDU', 'FDU와 TCMS간 RS485 통신고장이 검지되면 발생.', '화면상 FDU의 화재검지신호 등의 데이터가 반응하지 않음.', 'FDU 통신고장 또는 통신 케이블 문제', 'TCMS SDR 신호의 의해 FDU로부터 SD신호가 정상 수신된 경우 +조치조건 : +1) FDU 및 TCMS의 전원을 리셋하여 소거여부 확인 +2) 통신 고장이 발생하지 않은 다른차량의 수신기와 교체하여 소거 여부 확인(고장이 수신기를 따라가는지 확인) +3) TCMS와 FDU간의 통신계통 점검 및 FDU NFB 점검 +4) 문제가 지속될 경우, 수신기 교체', null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('c430de63-ad22-4cc6-b0f2-3fd254db7cfb', '0503', '503', 'DCU#1 2위(L1) - 출입문 내부 비상핸들 취급(EED)', 'Tc1', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c43d1729-a9ce-4cbf-8e3a-e1e58c258cf5', '1503', '1503', '난방장치용 AC 회로차단기 차단(Car3)', 'M2', 'W', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('c448e453-dced-477c-86e5-ce651aed3a96', '0517', '517', 'DCU#6 3위(R2) - 출입문 장애물로 인한 열림 실패', 'M3', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Open failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘 상태로 대기', '도어열림 중 3회 장애물감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 열림 시, 장애물감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c4518c97-d376-46b7-ae4a-3d3825ba498f', '0207', '207', 'BECU#3-자기진단고장', 'M2', 'C', 'BECU-자기진단고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit6 “RAM 점검 고장” 신호가 "1"이 되면 검지.', '해당 차량 자기진단고장 검지 현시 및 해당 차량 활주제어 불가.', '해당 차량 BECU의 자가진단 시 고장 발생(활주방지밸브 고장).', '해당 차량 BECU의 자가진단 시 정상적일 경우 소거(활주방지밸브 정상).', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('c45c0e83-7665-4ad8-9f7e-68848c7a9c8e', '0517', '517', 'DCU#7 6위(L3)-출입문 장애물로 인한 열림 실패', 'M4', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Open failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘상태로 대기', '도어 열림 중 3회 장애물 감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 열림 시, 장애물 감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('c45dc817-d352-49b1-88b8-63d62146c7de', '0521', '521', 'DCU#5 4위(L2) - 모듈 상태 이상', 'T2', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 “01” 또는 “00”이 되면 +검지 +', '이중계절체동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러)이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c47be04e-e43e-4156-a3b0-089b96bc3916', '0225', '225', 'BECU#5 - 강제완해검지(CPRD)', 'T2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c47e50e2-4533-4e78-9a9d-f7003adc3a19', '0751', '751', 'HVAC#4 - 냉난방장치1 보조히터 과열', 'T1', 'C', 'HVAC-냉난방장치1 보조히터 과열', 'C', 'HVAC', 'HVAC1 보조난방기 작동 중 과열 발생 +', 'UNIT1보조난방기난방불가', '보조난방기 작동 중 1초 이상 동안 온도가 70도 이상으로 과온 센서 정상신호가 수신 되지 않는 경우 +', '1초 이상 동안 60도 미만으로 온도가 떨어져 과온 센서 정상신호가 수신되는 경우', '1) 보조난방기가 꺼진 상태에서도 문제 발생 시, 과온 센서를 교체한다. +2) 센서 교체 후에도 문제가 발생되면, 배선에 문제가 없는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c4a08747-14fd-4dc7-a274-cda81b0aa80a', '0162', '162', 'VVVF#7-PWM제어장치 이상검지(WDTD_P)', 'M4', 'C', 'VVVF-마이컴이상(PWM)(WDTD_P)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT32의 Bit3 “WDTD_P" 신호가 "1"이 되면 검지.', null, 'PWM보드 내 CPU고장에 의한 Watch Dog Timer 카운터 정지시 고장검지.', '동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) 판토 하강상태에서 인버터 재 기동 후 해당 고장 재발여부를 확인한다. +2) 추진제어장치 시험기를 이용하여 PWM 보드의 이상여부를 확인한다. +3) 상기 점검부에 이상이 있는 경우 PWM 보드를 교체한다.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('c4a27c2f-7374-4943-b1f0-fc24d060f736', '1205', '1205', 'FDU#2 - 감지기3 화재감지', 'M1', 'W', 'FDU-감지기3 화재감지 (Car1~8)', 'W', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 “Detector1 State” 신호가 “11”이 되면 검지 +', '화재상태현시(자동소거 안 됨.)', '하기 2가지 조건을 모두 만족하여야 화재신호가 출력 됨. (연동모드 동작) +1) 이웃한(앞 혹은 뒤에 위치한) 감지기 중 하나의 감지기라도 주의 혹은 화재상태에 있어야 함. +2) Detector1(해당 감지기)에서 측정된 연기농도가 15% 이상이거나 온도가 65℃ 이상인 경우 +', '1) FDU의 복귀버튼 조작 시 +2) FDU 전원 리셋 시', '1) 해당 감지기 위치의 화재 발생 여부 확인 +2) 화재 오감지일 경우 FDU의 복귀버튼 취급 +3) 오감지일 경우 감지기의 청소주기 확인(내부 먼지 제거)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c4c0b0c5-276c-4981-aa53-cbfd5ee0f7ec', '0316', '316', 'ATC#8 - 발리스 안테나 오류', 'Tc2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c4d0a2d3-0a14-41da-b376-78ff1fb893ef', '0520', '520', 'DCU#7 6위(L3)-이중계 절체 동작', 'M4', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 "Module switchover' 신호가 "1"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('c4dbbee7-cecc-46ea-aec0-bbd950447c11', '0233', '233', 'AS 코크#2 차단(Car5)', 'T2', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('c4e4f4f5-9bfe-4e0a-a13d-ca58c2f06adb', '0503', '503', 'DCU#4 6위(L3)-출입문 내부비상핸들 취급(EED)', 'T1', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('c50235c7-d028-42e4-838c-98ece88b292c', '0043', '43', '비상판토 트립(Car2)', 'M1', 'W', '비상판토 트립 (Car2)', 'W', '기타', '차량으로부터 NO EMERGENCY PANTO TRIP 신호 미입력 시 +', '판도 하강 및 VVVF, SIV 고압 차단', '가선 차단 +', '판토 하강 및 가선 투입', null, '회로 도면 : REC40400DX0', '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c507c2ba-71e9-4ee0-9cef-bfe6fbd33d73', '0505', '505', 'DCU#1 4위(L2) - 출입문 입력 고전압', 'Tc1', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 “1”이 되면 검지 +', '고전압 상태(그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상 +', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c50ec5ce-b2d7-4d29-b966-9acd4dd043e7', '1514', '1514', 'CU2 모듈고장 - DIM1(Car8)', 'Tc2', 'C', 'CU1, 2 모듈고장 - DIM1', 'C', 'TCMS', 'CU의 DIM1 PCB가 이 정상적으로 인식되지 않아 점검이 필요할 때 +', '1) CU1의 DIM1 PCB가 모듈 고장이 발생하면, CU2로 자동 절체됨. (CU2로 자동 절체되면, 운행 에는 지장이 없음.) +2) CU2 자동 절체 시 화면의 우측 상단 경고장글자 하단에 “B.SYS” 라는 표시가 나타남. +3) 자동 절체 시 열차 운행에는 관계없음. +4) CU2의 DIM1 모듈고장 시는 CU1 정상동작시 운행에는 지장이 없음.', 'CU DIM1의 ID를 정상적으로 검출하지 못할 때 화면에 현시 +', 'CU DIM1의 ID를 정상적으로 검출하는 경우 소거됨', '1) CU의 DIM1 PCB 교체 +2) 불량 해소가 되지 않을 경우, 순차적으로 MCPU, SCM, AUX PCB를 교체하여 정상여부 확인', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c535d3e9-d1cd-48a9-acef-463c6a81bc08', '0518', '518', 'DCU#6 4위(L2) - 출입문 Enable 신호 에러', 'M3', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 “Enable signal error” 신호가 “1”이 되면 검지 +', 'DCU 출입문Enable신호에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드 시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을 때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드 시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입 상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호 장치로부터의 출입문 열림 명령 신호) 취급 시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함. +', '해당 출입문 enable 신호수신', '1) AUTO/MCS 모드 시에는 YARD 모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인 한다. (YARD/FMC 모드 시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c5394cb8-ae92-4f89-a95a-03b9c8881f68', '1209', '1209', 'FDU#3 - 스위치 고장', 'M2', 'C', 'FDU-스위치 고장', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT5의 Bit4 “Switch Fault” 신호가 “1”이 되면 검지 +', 'Switch Fault 현시 및 FDU의 조작버튼 동작 안 됨(화재검지 및 기타 기능에는 상관없음)', ' +1) FDU가 부팅될 때 스위치가 눌려진 상태(3.3V 전압이 인가된 상태)인 경우 +2) FDU가 부팅될 때 스위치 고장으로 인하여 항상 눌러진 상태(3.3V 전압이 인가된 상태)에 있는 경우 +', 'FDU가 부팅될 때 스위치가 눌려진 상태(3.3V 전압이 인가된 상태)가 아닌 경우', '1) 고장이 발생한 수신기의 스위치 상태 확인 및 점검 +2) FDU의 전원을 리셋하여 소거여부 확인 +3) 문제가 지속될 경우, 수신기 교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c53f7fc0-62f2-41ca-a648-21baccce583a', '0204', '204', 'BECU#3 - 응하중 비정상', 'M2', 'C', 'BECU-응하중 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit3 “응하중 비정상” 신호가 “1”이 되면 검지 +', '해당 차량 응하중 비정상 검지 현시', '해당 차량의 응하중 출력이 정상범위를 벗어남. +', '해당 차량 응하중 출력이 정상범위로 복귀 시 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c5669f8d-00fa-422e-91b1-4908e90a898c', '0201', '201', 'BECU#4-덤프밸브고장(후미대차)', 'T1', 'C', 'BECU-덤프밸브고장(후미대차)', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit0 “덤프밸브고장(후미대차)” 신호가 "1"이 되면 검지.', '해당 차량 덤프밸브고장(후미대차) 검지 현시 및 해당 차량 활주제어 불가.', '해당 차량 후미대차의 덤프밸브가 작동하지 않음.', '해당 차량 후미대차의 덤프밸브가 정상 작동 시 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('c56ce0ea-5f8e-4c58-843b-da421b318c34', '0500', '500', 'DCU#8 4위(L2) 통신고장', 'Tc2', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS 간 RS485 통신고장이 검지되면 발생 +', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐상태 등의 변화가 없음.', ' +1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우 +', '해당 차량의 DCU 및 CU/TU의 전원이 정상상태이고, 통신 라인 연결 상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜져 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적 으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는 데도 지속적으로 통신고장이 검지되면, DCU의 X2, X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상 체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c56e6d63-bb2f-4c45-9736-edd7e404e07b', '0716', '716', 'HVAC#1 - 냉난방장치1 압력스위치1(DPS) 고압', 'Tc1', 'D', 'HVAC-냉난방장치1 압력스위치1(DPS) 고압', 'D', 'HVAC', '냉난방장치1 냉매 압력스위치2 고압 발생 +', 'UNIT1CYCLE1 냉방기능불가', 'UNIT1DSP1측 냉매압력이 3초 이상 28±1(kgf/cm2) 이상 되는 경우 +', '냉매압력이 정상수치 15±0.7(kgf/cm2) 이하로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CRCM1의 부하측 전류를 측정하여 응축기 팬의 동작여부를 확인한다. +2) 응축기 코일의 전면에 이물질로 인한 막힘이 있는지 확인한다. +3) 응축기 팬 상부 그릴에 외부 이물질로 인한 막힘이 있는지 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c56eda0a-18a4-4991-891e-0b056416534d', '0240', '240', 'BECU#6-2축스키드신호', 'M3', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('c56ee97b-da1e-4e68-9c22-66b4ab20ab64', '0509', '509', 'DCU#7 6위(L3) - 출입문 잠김 리미트 스위치 고장', 'M4', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 “DLS Failure” 신호가 “1”이 되면 검지 +', '출입문 잠김 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c574c3d6-75dc-4906-a8ce-bf1b32d6d837', '0716', '716', 'HVAC#3 - 냉난방장치1 압력스위치1(DPS) 고압', 'M2', 'D', 'HVAC-냉난방장치1 압력스위치1(DPS) 고압', 'D', 'HVAC', '냉난방장치1 냉매 압력스위치2 고압 발생 +', 'UNIT1CYCLE1 냉방기능불가', 'UNIT1DSP1측 냉매압력이 3초 이상 28±1(kgf/cm2) 이상 되는 경우 +', '냉매압력이 정상수치 15±0.7(kgf/cm2) 이하로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CRCM1의 부하측 전류를 측정하여 응축기 팬의 동작여부를 확인한다. +2) 응축기 코일의 전면에 이물질로 인한 막힘이 있는지 확인한다. +3) 응축기 팬 상부 그릴에 외부 이물질로 인한 막힘이 있는지 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c578a7a5-7114-402d-a09b-0b835c0c1e41', '0502', '502', 'DCU#6 1위(R1)-출입문 장애물검지', 'M3', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('c57f7765-fee7-4b61-9a96-560517f81bbc', '0085', '85', '화재검지(Car8)', 'Tc2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c583c23f-fb44-44b7-b76e-d6974aa72998', '0500', '500', 'DCU#5 2위(L1) 통신고장', 'T2', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS 간 RS485 통신고장이 검지되면 발생 +', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐상태 등의 변화가 없음.', ' +1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우 +', '해당 차량의 DCU 및 CU/TU의 전원이 정상상태이고, 통신 라인 연결 상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜져 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적 으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는 데도 지속적으로 통신고장이 검지되면, DCU의 X2, X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상 체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c5971603-359e-45ee-926f-9e6c551b2699', '0828', '828', '실내객실표시기(PIB) 고장(Car#3)', 'M2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c5a5a1ce-267b-47f2-b048-076303faa543', '0509', '509', 'DCU#4 4위(L2) - 출입문 잠김 리미트 스위치 고장', 'T1', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 “DLS Failure” 신호가 “1”이 되면 검지 +', '출입문 잠김 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c5ad57c2-9002-4e15-82d9-4160107c2c20', '0236', '236', '상용제동코크 차단(Car7)', 'M4', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c5c137fc-41c5-405b-b275-aa9cfb89564f', '0504', '504', 'DCU#6 5위(R3) - 출입문 외부 비상핸들 취급(EAD)', 'M3', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c5c7d7d7-059f-4e30-8070-1922966823cb', '0513', '513', 'DCU#5 2위(L1)-모듈 상태체크 에러', 'T2', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 "Module check error” 신호가 "1"이 되면 검지.', 'Module check error 현시 (출입문은 정상작동 가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태체크 기능에 이상이 생긴 경우 고장 발생.', 'DCU의 'A'모듈과 'B'모듈 간, 상태체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('c5db18cb-5c6e-453e-b811-2733b9800dd6', '0505', '505', 'DCU#3 2위(L1) - 출입문 입력 고전압', 'M2', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 “1”이 되면 검지 +', '고전압 상태(그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상 +', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c5f299bb-bc8b-4f2d-8e2f-7cbb65f9ac42', '0514', '514', 'DCU#2 3위(R2)-출입문 닫힘 시간 초과', 'M1', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 "Close time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 닫힘 동작시간이 7초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도 한 후, '장애물로 인한 닫힘실패' 고장과 함께 'Close time out' 고장이 함께 현시', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('c5f77acf-0073-48cd-a627-6742e40b6c11', '0224', '224', 'BECU#6 - 파트너차 ECU 고장(PECUF)', 'M3', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c610dd4f-3bdb-4387-b454-93e4b86fbfaf', '0744', '744', 'HVAC#3 - 전자접촉기 보조히터1(AHEK) 고장', 'M2', 'C', 'HVAC-전자접촉기 보조히터1(AHEK) 고장', 'C', 'HVAC', 'HVAC 보조난방기 작동 중 AHEK1 전자접촉기 고장 발생 +', 'UNIT1보조난방기전난방시반난방만 작동', '보조난방기 작동 중 2.5초 이상 동안 AHEK1 작동 feedback 신호가 수신되지 않는 경우 +', 'AHEK1 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) AHEK1을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, AHEK1과 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c6122c06-a80c-4b57-a4ad-a1637f28bf1d', '0131', '131', 'VVVF-IPM V상 이상검지(GDFV) (Car6)', 'M3', 'C', 'VVVF-IPM V상 이상검지(GDFV)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT34의 Bit5 “GDFV” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 'IPM V상 이상검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치 내부 IPM에 과전류, 과온이 검지될경우.', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반배전반의 VVVFIC nfb 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 견인전동기로 출력되는 3상의 전류치 확인함. +3) 특정상의 전류치가 비정상적일 경우 특정상에 해당되는 IPM, 전류센서, 모터결선을 확인한다. +4) 전류센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작상태를 시험기를 통해 확인한다. +6) IPM 전원공급기의 전원연결상태 또는 광케이블의 연결상태와 배선상태를 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.656536+00', null, '다대48량(2015)', 'Rotem'), ('c631986e-5d0e-4a85-93fa-41e0579fc8f4', '0517', '517', 'DCU#8 2위(L1) - 출입문 장애물로 인한 열림 실패', 'Tc2', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Open failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘 상태로 대기', '도어열림 중 3회 장애물감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 열림 시, 장애물감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c6330072-ab1f-4b56-9277-992e9c2e606f', '0509', '509', 'DCU#7 6위(L3)-출입문 잠김 리미트 스위치 고장', 'M4', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 "DLS Failure” 신호가 "1"이 되면 검지.', '출입문 잠김 상태 확인 불가', '1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('c6388c2f-cf63-4022-ae02-ac0935fb239f', '0511', '511', 'DCU#6 3위(R2) - 출입문 닫힘 리미트 스위치2 고장', 'M3', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 “DCS2 Failure(Right)” 신호가 “1”이 되면 검지 +', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c678623d-9d9f-40e8-83a6-d7aa6842d3f6', '0512', '512', 'DCU#4 5위(R3)-파라미터 로딩 실패', 'T1', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 "Paraneter error” 신호가 "1"이 되면 검지.', 'Parameter error 현시 (출입문은 정상작동 가능)', 'DCU 자체내의 EEPROM으로부터 parameter 데이터 로딩 실패', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('c678cb9c-b030-451f-99e2-3f35f39d1861', '1505', '1505', '기타장치용 AC 회로차단기 차단(Car2)', 'M1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c68186d6-4e15-463e-abdd-26bb29be9b81', '1526', '1526', 'TCMS 데이타버스2 우측라인 통신 이상(Car7)', 'M4', 'C', 'TCMS 데이터버스2 우측라인 통신 이상', 'C', 'TCMS', 'TCMS의 초기 기동 시 자기진단에 의한 2중계 메인통신선 중 2계 메인통신 이상 검지 시 +', '1) SL-NET 2중계이므로 데이터버스 1계로 정상통신, 운행에 지장 없음. +2) 초기기동 자기진단 시 2중계를 점검하여 2계측의 이상이 검지되었다는 점검 필요용 메시지', '초기 기동 시 SL-NET 1계와 2계를 각각 통신 후 비교하여 1계는 정상통신이 되나 2계는 정상통신이 안 되는 경우 +', '정상 수리 후 차량 전체 재기동하여 SL-NET 1계와 2계 모두 정상통신이 되는 경우', '1) 고장검출호차와 고장검출 우측호차와의 SL-NET 통신 2계 정상여부 확인(예 : 고장호차가 3호차인 경우, 1-2-3-4-5-6-7-8에서 3호차의 우측 즉, 3-4호차간 SL-NET 2계 통신 상태 점검 필요) +2) 고장검지호차의 SCM PCB 교체 정상여부 확인 +3) 고장검지호차의 우측호차 SCM PCB 교체 정상여부 확인 +4) 고장검지호차와 고장검지 우측호차의 SL-NET 2계 메인통신 배선의 연결 상태 확인 +5) 2 ~ 4번에도 정상적으로 복귀되지 않는 경우, CU/TU ASS'Y 교체(백보드 확인 필요)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c684fe88-51db-445d-b138-a5e870e98110', '1523', '1523', 'TCMS 데이타버스2 좌측라인 통신 이상(Car4)', 'T1', 'C', 'TCMS 데이터버스2 좌측라인 통신 이상', 'C', 'TCMS', 'TCMS의 초기 기동 시 자기진단에 의한 2중계 메인통신선 중 2계 메인통신 이상 검지 시 +', '1) SL-NET 2중계이므로 데이터버스 1계로 정상통신, 운행에 지장 없음. +2) 초기기동 자기진단 시 2중계를 점검하여 2계측의 이상이 검지되었다는 점검 필요용 메시지', '초기 기동 시 SL-NET 1계와 2계를 각각 통신 후 비교하여 1계는 정상통신이 되나 2계는 정상통신이 안 되는 경우 +', '정상 수리 후 차량 전체 재기동하여 SL-NET 1계와 2계 모두 정상통신이 되는 경우', '1) 고장검출호차와 고장검출 좌측 호차와의 SL-NET 통신 2계 정상여부 확인(예 : 고장호차가 3호차인 경우, 1-2-3-4-5-6-7-8에서 3호차의 좌측, 즉 2-3호차 간 SL-NET 2계 통신 상태 점검 필요) +2) 고장검지호차의 SCM PCB 교체, 정상여부 확인 +3) 고장검지호차의 좌측호차 SCM PCB 교체, 정상여부 확인 +4) 고장검지호차와 고장검지 좌측호차의 SL-NET 2계 메인통신 배선의 연결 상태 확인 +5) 상기 2 ~ 4번 점검에도 정상적으로 복귀되지 않는 경우, CU/TU ASS'Y 교체(백보드 확인 필요)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c694a58b-e006-4175-9f60-98d0107baf64', '0504', '504', 'DCU#6 3위(R2)-출입문 외부비상핸들 취급(EAD)', 'M3', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('c69b31c2-8709-42ec-9e9a-67c90f30f62b', '0520', '520', 'DCU#5 4위(L2) - 이중계 절체 동작', 'T2', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 “Module switchover” 신호가 “1”이 되면 검지 +', '이중계 절체 동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러) 이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A'모듈 및 ‘B'모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c69c3dd8-23fa-4532-acc3-d085decdf974', '0235', '235', '제동력부족(ISBD, Car5)', 'T2', 'B', '제동력부족(ISBD)', 'B', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit3 “ISBD” 신호가 "1"이 되면 검지.', '해당 차량 제동력 부족 검지 현시 및 해당 차량 제동압력(BCP)이 타 차량에 비해 현저히 낮음.', '제동 7단 취급 시 해당 차량의 제동압력이 생성되지 않음.', '제동 7단 취급 시 정상적인 제동압력이 생성된 경우 소거.', 'MCS모드로 전환 후, 마스콘을 N(중립) -> 제동7단까지 수회취급 하여 소거 여부 확인. 제동 취급 확인 후, 주의 운전 할 것. +지속발생시 관제보고하고 지시에 따를 것.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('c6a474e6-1987-4836-9ef2-abec5baa7542', '0504', '504', 'DCU#2 5위(R3) - 출입문 외부 비상핸들 취급(EAD)', 'M1', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c6a89575-87f4-4984-847f-8aa79aa26f7d', '0723', '723', 'HVAC#6 - 냉난방장치1 압력스위치2(DPS) 냉매부족', 'M3', 'C', 'HVAC-냉난방장치1 압력스위치2(DPS) 냉매부족', 'C', 'HVAC', '냉난방장치1 냉매 압력스위치2 저압 발생 +', 'UNIT1CYCLE2 냉방 기능 불가', 'UNIT1DSP2측 냉매압력이 30초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우 +', '냉매압력이 정상수치 2±0.5(kgf/cm2) 이상 유지하도록 하고, 마이콤전원을 리셋', '1) 배전반 점검 커버를 열고 마이콤 전원을 리셋한 후, 냉방 가동 시, CREF2의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)을 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설 여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안 되는 것을 확인한 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c6ac0efb-faf8-4f83-9e56-60433bd50362', '0110', '110', 'VVVF-아날로그 전원이상검지(APSF) (Car7)', 'M4', 'C', 'VVVF-아날로그 전원이상검지(APSF)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT31의 Bit5 “APSF” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 '아날로그 전원이상검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치 제어기에 PWR 보드에서 출력하는 아날로그 전원에 이상이 발생할 경우.', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반배전반의 VVVFIC nfb 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) PWR 보드의 LED 상태를 확인한다. LED가 소등되어 있거나 특정LED의 상태가 이상할 경우 PWR 보드를 교환한다. +3) PWR-SEN 보드로 연결되는 배선에 이상이 없는지 확인한다. +4) SEN 보드의 동작상태를 시험기를 통해 확인한다. +5) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.656536+00', null, '다대48량(2015)', 'Rotem'), ('c6d5f079-e559-4b0c-b8ca-5f5606b69c57', '0509', '509', 'DCU#5 6위(L3) - 출입문 잠김 리미트 스위치 고장', 'T2', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 “DLS Failure” 신호가 “1”이 되면 검지 +', '출입문 잠김 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c6db38ea-b4f1-4c58-81ba-6954e2de2fd0', '1201', '1201', 'FDU#7-감지기1 화재감지', 'M4', 'W', 'FDU-감지기1 화재감지', 'W', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 "Detector1 State” 신호가 "11"이 되면 검지.', '화재상태 현시(자동 소거 안됨)', '하기 2가지 조건을 모두 만족하여야 화재신호가 출력 됨(연동모드 동작). +1) 이웃한(앞 혹은 뒤에 위치한) 감지기 중 하나의 감지기라도 주의 혹은 화재상태에 있어야 함. +2) Detector1(해당 감지기)에서 측정된 연기농도가 15% 이상이거나 온도가 65℃ 이상인 경우', '1) FDU의 복귀버튼 조작시 +2) FDU 전원 리셋시', '1) 해당 감지기 위치의 화재 발생 여부 확인 +2) 화재 오 감지일경우 FDU의 복귀버튼 취급 +3) 오감지일경우 감지기의 청소주기 확인(내부 먼지 제거)', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('c6e199da-3593-4b03-bb0c-7c60307eba66', '0704', '704', 'HVAC#4 - 냉난방장치1 압축기1 과부하', 'T1', 'C', 'HVAC-냉난방장치1 압축기1 과부하', 'C', 'HVAC', 'HVAC 냉방 작동 중 냉난방장치1 압축기1 또는 응축기1 모터에 과부하 발생 +', '냉방 기능 저하(전냉방 시 반냉방으로 작동)', ' +1) 냉방 작동 중 UNIT1의 압축기1 또는 응축기1 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRCM1과 연결된 THR1이 Trip 됨. +', 'UNIT1의 압축기1 또는 응축기1 모터의 과부하조건을 해소하여 정상 가능 상태로 만들고, THR1 및 마이콤 전원 리셋', '1) 냉난방 배전반의 점검커버를 열고, THR1의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR4의 전류 세팅값이 11.5A에 맞춰져 있는지 확인하여, 아닐 경우, (+) 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동시킨 후, THR1의 2차측 2, 4, 6 단자에서 각 단자 간 상간 전압이 AC 380V로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 압축기 및 응축기 단품 상태에서 점검을 한다. +7) THR1의 2차측 2, 4, 6 단자에서 각 단자 간 권선저항이 모두 같은지 확인한다. (±10% 이하) (압축기1 및 응축기1 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT1의 압축기1 또는 응축기1 모터의 결선을 해제한 후 각 부품의 권선저항을 확인 후, 문제가 있는 부품을 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR1 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c6ec2d80-3a4e-423d-b61b-04cd3676ecb0', '0063', '63', 'MAIN FUSE#1 DISCONNECTED(Car6)', 'M3', 'W', 'MAIN FUSE#1 DISCONNECTED(Car6)', 'W', '기타', '차량으로부터 AUX FUSE DISCONNECTED 신호 입력 시 +', 'VVVF 고압 차단으로 추진 불능', '해당 퓨즈 소손 +', '해당 퓨즈 교체 +회로 도면 : REC20210DX0', null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c716e613-98f0-45c7-8271-7df041dcf66c', '0708', '708', 'HVAC#8-냉난방장치1 증발기1 과부하', 'Tc2', 'C', 'HVAC-냉난방장치1 증발기1 과부하', 'C', 'HVAC', 'HVAC 냉방작동 중 냉난방장치1 증발기 모터에 과부하 발생.', 'UNIT1 냉방 작동 불가', '1) 냉방작동 중 UNIT1의 증발기 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CREF1과 연결된 THR5가 Trip 됨.', 'UNIT1의 증발기 모터의 과부하 조건을 해소하여 정상 가능 상태로 만들고, THR5 및 마이콤 전원 리셋', '1) 냉난방배전반의 점검커버를 열고, THR5의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR5의 전류 세팅값이 3A에 맞춰져 있는지 확인하여, 아닐 경우, 십자 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동 시킨 후, THR5의 2차측 2,4,6 단자에서 각 단자간 상간 전압이 AC 380V으로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 증발기 단품 상태에서 점검을 한다. +7) THR5의 2차측 2,4,6 단자에서 각 단자간 권선저항이 모두 같은지 확인한다. (±10% 이하) (증발기 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT2의 증발기 모터의 결선을 해제한 후 4극 및 6극 모터의 권선저항을 확인 후, 문제가 있을 겨우, 증발기 모터를 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR5 부품을 교체한다.', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('c732f0c0-23da-4773-9522-7cb52296b886', '0519', '519', 'DCU#6 5위(R3) - ZVR 신호 에러', 'M3', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 “ZVR signal error” 신호가 “1”이 되면 검지 +', '출입문이강제로 닫히게 되고, 열림은 불가능', ' +1) 차량 ZVR 신호가 없는 상태(차량 주행상태)에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함. +', '해당 출입문 ZVR 신호 수신', '1) 차량 이 주행중이라면, 차량 이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c735a42d-a444-4616-a2c3-531ab5fe9bda', '1401', '1401', 'BMS#8-배터리 단락', 'Tc2', 'C', 'BMS-배터리 단락', 'C', 'BMS', 'BMS의 RS485 데이터 중 BMS-TCMS SD TEXT2의 Bit0 “배터리 단락” 신호가 "1"이 되면 검지.', '배터리 Pre-charging 시 배터리 전압보다 낮으면 Mascon SW 검지 안됨.', '배터리 내부 또는 외부 회로 단락.', '배터리 내부 또는 외부 회로 단락 해제', '1) 배터리 팩 절연저항 확인한다. +2) 배터리 외부 단락 검사.', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('c73cec6a-eba4-4786-bf84-d22fca8c51b1', '0108', '108', 'VVVF-가선과전류 검지(IOCD) (Car2)', 'M1', 'C', 'VVVF-가선과전류 검지(IOCD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT31의 Bit3 “IOCD” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 '가선과전류 검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치에 입력되는 전류가 1,500A 이상일 경우 검지됨.', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반배전반의 VVVFIC nfb 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 추진제어장치에 입력되는 전류치 확인함. +3) 입력되는 전류치가 비정상적일 경우 추진제어장치 입력회로(HSCB, LB1,2, CHRe)를 접검한다.. +4) LB Box내의 전류센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작상태를 시험기를 통해 확인한다. +6) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.578803+00', null, '다대48량(2015)', 'Rotem'), ('c758d5db-edab-4217-983f-800bc07b9665', '0223', '223', 'BECU#3-공기스프링누설(전두대차)', 'M2', 'C', 'BECU-공기스프링누설(전두대차)', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit6 “공기스프링누설(전두대차)” 신호가 "1"이 되면 검지.', '해당 차량 공기스프링누설(전두대차) 검지 현시 및 해당차량 정상적인 제동제어 불가.(응하중 제어)', '해당 차량 전두대차의 공기스프링(AS1, AS2) 압력이 정상범위를 벗어남.(100kPa 미만)', '해당 차량 전두대차의 공기스프링(AS1, AS2) 압력이 정상범위일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('c759589a-fc08-4de5-88d8-c7bd3dfed695', '0506', '506', 'DCU#3 3위(R2) - 출입문 입력 저전압', 'M2', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 “1”이 되면 검지 +', '저전압상태(출입문 동작이 심하게 느려지거나 작동조차 안 될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하 +', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c765185f-269d-4de9-8020-ab42f2172a1e', '1521', '1521', 'TU 모듈고장 - AUX4(Car4)', 'T1', 'C', 'TU 모듈고장 - AUX4', 'C', 'TCMS', 'TU의 AUX4 PCB가 이 정상적으로 인식되지 않아 점검이 필요할 때 +', 'TU의 AUX4 PCB는 예비 채널용 PCB로 운행에 지장이 없음.', 'TU AUX4의 ID를 정상적으로 검출하지 못할 때 화면에 현시 +', 'TU AUX4의 ID를 정상적으로 검출하는 경우 소거됨.', '1) TU의 AUX4 PCB 교체 +2) 불량 해소가 되지 않을 경우, 순차적으로 SCM, DIM PCB를 교체하여 정상여부 확인', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c7884e15-b1df-4c30-b3ac-11c9f2fa50ca', '0521', '521', 'DCU#8 1위(R1)-모듈 상태 이상', 'Tc2', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 "01"또는 "00"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('c78af96c-1fb8-47a4-992a-f43d7044203a', '0503', '503', 'DCU#7 5위(R3) - 출입문 내부 비상핸들 취급(EED)', 'M4', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c7a3fe4a-a7c1-49e7-9560-902d3775b688', '0501', '501', 'DCU#3 5위(R3) - 출입문 차단', 'M2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c7aebadc-b355-4779-b1f8-4c01584c190b', '0323', '323', 'ATC#1 - 역코드 오류', 'Tc1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c7bf1467-1e72-4890-972b-297b52942129', '0502', '502', 'DCU#2 6위(L3) - 출입문 장애물검지', 'M1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c7ca54bc-ca02-4e17-a1ae-82fe1514c594', '0016', '16', '열차번호 불일치', 'Tc1', 'W', '열차번호 불일치', 'W', '기타', '기관사가 설정한 열차번호와 신호장치로부터 전송받은 열차번호가 일치하지 않을 경우 검지 +', 'TCMS 화면 하단에 ‘열차번호 불일치' 현시(차량 운행에는 지장 없음.)', '기관사가 설정한 열차번호와 신호장치로부터 수신된 열차번호가 불일치 시 현시됨. (단, 지상으로부터 열차번호가 수시될 수 있는 구간에 한함) +', '열차번호가 동일하게 입력되면 고장 소거됨.', '1) 입력한 열차번호가 맞는지 확인 +2) 입력한 열차번호가 맞다면 신호장치로부터의 열차번호가 정상인지 확인', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c7cca368-3725-41c4-a386-b0b62a0d91a3', '0127', '127', 'VVVF-BCH IGBT 이상검지(GDFB) (Car3)', 'M2', 'C', 'VVVF-BCH IGBT 이상검지(GDFB)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT34의 Bit1 “GDFB” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 'BCH IGBT 이상검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치 내부 IGBT에 과전류 검지될경우.', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반배전반의 VVVFIC nfb 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 제동저항기로 출력되는 전류치 확인함. +3) 전류치가 비정상적일 경우 IGBT, GDU, 전류센서, 제동저항기 결선을 확인한다. +4) 전류센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작상태를 시험기를 통해 확인한다. +6) GDU의 전원연결상태 또는 광케이블의 연결상태와 배선상태를 확인한다. +7) 제동저항기 내부의 이물질 유무를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.656536+00', null, '다대48량(2015)', 'Rotem'), ('c7de7a42-9670-466e-b995-3b0afdc3afa7', '0137', '137', 'VVVF#7 - 전동기 과전류 검지(MMOCD)', 'M4', 'C', 'VVVF-전동기 과전류 검지(MMOCD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT31의 Bit2 “MMOCD” 신호가 “1”이 되면 검지 +', '1) TCMS 화면 하단 또는 고장화면에 ‘전동기 과전류 검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생함. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉은색으로 표기되며, HSCB, LB1, 2 개방되어 동력 손실 발생함.', '추진제어장치에서 견인전동기로 출력되는 U, V, W 상의 전류가 1, 850A 이상일 경우 검지됨. +', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반 배전반의 VVVFIC nfb 재투입 또는 차량 배터리 전원 재투입', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 견인전동기로 출력되는 3상의 전류치 확인함. +3) 특정상의 전류치가 비정상적일 경우 특정상에 해당되는 IPM, 전류센서, 모터결선을 확인한다. +4) 전류센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작 상태를 시험기를 통해 확인한다. +6) 견인전동기 각상의 절연상태 및 각상과 접지 간의 절연상태를 확인한다. +7) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c80a2cd6-7b77-40d6-8d29-fad2f2c3d596', '0238', '238', 'BECU#3-4축스키드신호', 'M2', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('c80aae35-4cb9-4643-b85f-a0aff7d7350d', '0510', '510', 'DCU#6 2위(L1) - 출입문 닫힘 리미트 스위치1 고장', 'M3', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 “DCS1 Failure(Leftt)” 신호가 “1”이 되면 검지 +', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c838df82-18a2-48a2-ae18-1ad4499102b1', '0514', '514', 'DCU#7 6위(L3)-출입문 닫힘 시간 초과', 'M4', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 "Close time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 닫힘 동작시간이 7초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도 한 후, '장애물로 인한 닫힘실패' 고장과 함께 'Close time out' 고장이 함께 현시', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('c83949ff-bb09-4802-8395-57b46da56e77', '0503', '503', 'DCU#5 4위(L2) - 출입문 내부 비상핸들 취급(EED)', 'T2', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c84f7b2e-8fc1-494e-91a1-db1f41ccc0b0', '0521', '521', 'DCU#1 1위(R1) - 모듈 상태 이상', 'Tc1', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 “01” 또는 “00”이 되면 +검지 +', '이중계절체동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러)이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c8622c28-b054-44b8-8f00-0447dc4b4661', '0223', '223', 'BECU#6-공기스프링누설(전두대차)', 'M3', 'C', 'BECU-공기스프링누설(전두대차)', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit6 “공기스프링누설(전두대차)” 신호가 "1"이 되면 검지.', '해당 차량 공기스프링누설(전두대차) 검지 현시 및 해당차량 정상적인 제동제어 불가.(응하중 제어)', '해당 차량 전두대차의 공기스프링(AS1, AS2) 압력이 정상범위를 벗어남.(100kPa 미만)', '해당 차량 전두대차의 공기스프링(AS1, AS2) 압력이 정상범위일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('c862bfcd-8392-4b85-9e1e-00649123f005', '0509', '509', 'DCU#5 6위(L3)-출입문 잠김 리미트 스위치 고장', 'T2', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 "DLS Failure” 신호가 "1"이 되면 검지.', '출입문 잠김 상태 확인 불가', '1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('c867ca6d-032f-4ae0-934c-cbe1561f3aac', '0239', '239', 'BECU#8-3축스키드신호', 'Tc2', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('c867f284-c657-471b-877e-bdb3a99cdcbe', '0513', '513', 'DCU#1 2위(L1) - 모듈 상태체크 에러', 'Tc1', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 “Module check error” 신호가 “1”이 되면 검지 +', 'Modulecheckerror현시(출입문은 정상작동가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태 체크 기능에 이상이 생긴 경우 고장 발생 +', 'DCU의 ‘A' 모듈과 ‘B' 모듈 간, 상태 체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c87ac41b-b933-4fce-818a-c49fa555ff87', '0520', '520', 'DCU#7 2위(L1) - 이중계 절체 동작', 'M4', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 “Module switchover” 신호가 “1”이 되면 검지 +', '이중계 절체 동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러) 이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A'모듈 및 ‘B'모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c88aa96a-572a-47ed-955a-aee25f1b1674', '0514', '514', 'DCU#5 5위(R3)-출입문 닫힘 시간 초과', 'T2', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 "Close time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 닫힘 동작시간이 7초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도 한 후, '장애물로 인한 닫힘실패' 고장과 함께 'Close time out' 고장이 함께 현시', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('c895db58-65f8-4f69-a23d-532d788c6d22', '0329', '329', 'ATC#1-', 'Tc1', '0', null, null, '0', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('c897e961-5b50-4319-a8a5-ecafbeb94683', '0203', '203', 'BECU#6 - 전자제어밸브의 고장', 'M3', 'C', 'BECU-전자제어밸브의 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit2 “전자제어밸브의 고장” 신호가 “1”이 +되면 검지 +', '해당 차량 전자제어밸브의 고장검지 현시 및 해당 차량 제동제어불가', '해당 차량의 상용전자제어밸브가 작동하지 않음. +', '해당 차량의 상용전자제어밸브가 정상작동 시 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c8a6f29a-dfff-488e-aa95-7971b532915b', '1002', '1002', 'CMSB#8 - 방열판 과온', 'Tc2', 'C', 'CMSB-방열판 과온', 'C', 'CMSB', 'CMSB의 RS485 데이터 중 CMSB-TCMS SD TEXT3의 Bit3 “방열판 과온” 신호가 “1”이 되면 검지 +', '1) TCMS 화면 하단 또는 고장화면에 ‘CM 출력과부하' 표시됨. +2) 바이패스 모드로 전환되고, CM 기동 시 ‘바이패스 기동'으로 표시됨.', 'CMSB 내부 방열판 온도가 85±5℃일 경우 검지됨. +', '1) 차량 전원 OFF +2) CMSB 내부의 표시기 패널 RESET 버튼 누름', '0) 정상운행 후, 검수고에 입고하여 아래와 같이 조치한다. +1) 상기고장은 고장 소거 후, 재현시험을 진행하여 지속적으로 발생될 경우 아래와 같이 조치한다. +2) 방열판 온도 측정 +3) 방열판에 부착되어 있는 온도스위치를 점검한다. +4) 온도스위치와 CMSB 제어기 간 연결된 케이블 접촉상태를 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c8aa7112-01e7-4fad-83e2-2ad6d85300b3', '0738', '738', 'HVAC#4-전자접촉기 증발기3(CREF) 고장', 'T1', 'C', 'HVAC-전자접촉기 증발기3(CREF) 고장', 'C', 'HVAC', 'HVAC 냉방작동 중 CREF3 전자접촉기 고장 발생.', 'UNIT2 냉방 작동 불가', '냉방작동 중 2.5초 이상동안 CREF3 작동 feedback 신호가 수신되지 않는 경우', 'CREF3 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CREF3을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CREF3과 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('c8b949ff-3630-4fcf-89b9-604adc5bbace', '0501', '501', 'DCU#5 3위(R2) - 출입문 차단', 'T2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c8c50bb1-d9f1-405b-a789-7740b9f3a389', '0507', '507', 'DCU#1 5위(R3)-초기화 실패', 'Tc1', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 "Calibration failure” 신호가 "1"이 되면 검지.', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터고장, 장애물 감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우', '초기화 실패를 야기한 고장 코드를 확인하여 조치 후, 재 닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('c8ce2945-5f13-475d-b8bd-31055812eed9', '0707', '707', 'HVAC#6 - 냉난방장치2 증발기1 과부하', 'M3', 'C', 'HVAC-냉난방장치2 증발기1 과부하', 'C', 'HVAC', 'HVAC 냉방 작동 중 냉난방장치2 증발기 모터에 과부하 발생 +', 'UNIT2냉방기능불가', ' +1) 냉방 작동 중 UNIT2의 증발기 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CREF3과 연결된 THR7이 Trip 됨. +', 'UNIT2의 증발기모터의 과부하조건을 해소하여 정상 가능 상태로 만들고, THR7 및 마이콤 전원 리셋', '1) 냉난방 배전반의 점검커버를 열고, THR7의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR7의 전류 세팅값이 3A에 맞춰져 있는지 확인하여, 아닐 경우, (+) 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동시킨 후, THR7의 2차측 2, 4, 6 단자에서 각 단자 간 상간 전압이 AC 380V로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 증발기 단품 상태 에서 점검을 한다. +7) THR7의 2차측 2, 4, 6 단자에서 각 단자 간 권선저항이 모두 같은지 확인한다. (±10% 이하) (증발기 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT2의 증발기 모터의 결선을 해제한 후 4극 및 6극 모터의 권선저항을 확인 후, 문제가 있을 경우, 증발기 모터를 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR7 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c8d0662f-fcf4-4c6b-8790-d0d8c85a4177', '0739', '739', 'HVAC#6 - 전자접촉기 증발기2(CREF) 고장', 'M3', 'C', 'HVAC-전자접촉기 증발기2(CREF) 고장', 'C', 'HVAC', 'HVAC 냉방 작동 중 CREF2 전자접촉기 고장 발생 +', 'UNIT1 냉방 작동 불가', '냉방 작동 중 2.5초 이상 동안 CREF2 작동 feedback 신호가 수신되지 않는 경우 +', 'CREF2 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CREF2를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CREF2와 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c8d17689-dc53-41dd-9bb4-697cf3a55cdf', '1503', '1503', '난방장치용 AC 회로차단기 차단(Car4)', 'T1', 'W', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('c8d47b80-99db-4de9-bf94-5396b6a1380d', '0726', '726', 'HVAC#3-배기팬2 과부하', 'M2', 'C', 'HVAC-배기팬2 과부하', 'C', 'HVAC', 'HVAC 환기작동 중 차량 배기팬2 모터에 과부하 발생.', '환기 시 차량 배기팬2 운전 불가능', '1) 냉방작동 중 챠량 배기팬2 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRVF2와 연결된 THR10이 Trip 됨.', '차량 배기팬2 모터의 과부하 조건을 해소하여 정상 가능 상태로 만들고, THR10 및 마이콤 전원 리셋', '1) 냉난방배전반의 점검커버를 열고, THR10의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR10의 전류 세팅값이 2.5A에 맞춰져 있는지 확인하여, 아닐 경우, 십자 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동 시킨 후, THR10의 2차측 2,4 단자와 6 단자 사이의 전압이 DC 100V으로 정상 측정되는지 확인한다. +5) 만약 전압이 측정되지 않을 시, 전원이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, THR10 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('c8d64480-75d7-4ba5-9052-772d4f74d80c', '0203', '203', 'BECU#4-전자제어밸브의 고장', 'T1', 'C', 'BECU-전자제어밸브의 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit2 “전자제어밸브의 고장” 신호가 "1"이 되면 검지.', '해당 차량 전자제어밸브의 고장 검지 현시 및 해당 차량 제동제어 불가.', '해당 차량의 상용전자제어밸브가 작동하지 않음.', '해당 차량의 상용전자제어밸브가 정상 작동 시 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('c8d6f6ea-5dc3-4840-9080-9e4d701396b6', '1754', '1754', 'EVR#1 전원 저전압', 'Tc1', 'C', 'EVR#1 전원 저전압', 'C', 'EVR', 'EVR의 전원 전압이 저전압으로 검지 되었을 때의 경고 +', 'EMPU 동작정지', '12V 입력전원이 기준전압(11.2V) 이하로 측정될 경우 +', 'PST 보드 출력전원 12V 출력', '차량의 전원입력 여부 확인 및 PST 보드 전면 12V LED 점등 여부 확인, 테스트 포인트의 12V, GDN에 멀티미터기를 이용하여 12V 출력 여부 확인', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c8d8ebf0-0a60-4264-ab63-7e2832ac90ad', '0509', '509', 'DCU#7 2위(L1) - 출입문 잠김 리미트 스위치 고장', 'M4', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 “DLS Failure” 신호가 “1”이 되면 검지 +', '출입문 잠김 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c8f7e358-4ee2-4d75-be6e-cd495726dde6', '1521', '1521', 'TU 모듈고장 - AUX4(Car5)', 'T2', 'C', 'TU 모듈고장 - AUX4', 'C', 'TCMS', 'TU의 AUX4 PCB가 이 정상적으로 인식되지 않아 점검이 필요할 때 +', 'TU의 AUX4 PCB는 예비 채널용 PCB로 운행에 지장이 없음.', 'TU AUX4의 ID를 정상적으로 검출하지 못할 때 화면에 현시 +', 'TU AUX4의 ID를 정상적으로 검출하는 경우 소거됨.', '1) TU의 AUX4 PCB 교체 +2) 불량 해소가 되지 않을 경우, 순차적으로 SCM, DIM PCB를 교체하여 정상여부 확인', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c90057b9-c931-458d-a4f6-aaed008deca4', '1203', '1203', 'FDU#5 - 감지기2 화재감지', 'T2', 'W', 'FDU-감지기2 화재감지 (Car1~8)', 'W', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 “Detector1 State” 신호가 “11”이 되면 검지 +', '화재상태현시(자동소거 안 됨.)', '하기 2가지 조건을 모두 만족하여야 화재신호가 출력 됨. (연동모드 동작) +1) 이웃한(앞 혹은 뒤에 위치한) 감지기 중 하나의 감지기라도 주의 혹은 화재상태에 있어야 함. +2) Detector1(해당 감지기)에서 측정된 연기농도가 15% 이상이거나 온도가 65℃ 이상인 경우 +', '1) FDU의 복귀버튼 조작 시 +2) FDU 전원 리셋 시', '1) 해당 감지기 위치의 화재 발생 여부 확인 +2) 화재 오감지일 경우 FDU의 복귀버튼 취급 +3) 오감지일 경우 감지기의 청소주기 확인(내부 먼지 제거)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c905eb02-b399-40b3-b5e3-5f2ac95f7ae3', '0500', '500', 'DCU#3 5위(R3) 통신고장', 'M2', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS 간 RS485 통신고장이 검지되면 발생 +', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐상태 등의 변화가 없음.', ' +1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우 +', '해당 차량의 DCU 및 CU/TU의 전원이 정상상태이고, 통신 라인 연결 상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜져 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적 으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는 데도 지속적으로 통신고장이 검지되면, DCU의 X2, X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상 체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c90c8300-ba4a-4cdc-9727-5bfb2dc8d983', '1300', '1300', 'RTD#1 통신고장', 'Tc1', 'D', 'RTD 통신고장', 'C', 'RTD', 'RTD와 TCMS간 RS485 통신고장이 검지되면 발생.', 'DU상에 RTD 통신고장 메시지 현시.', 'TCMS와 RTD간 RS485통신의 송신/수신이 되지 않은 경우 발생.', 'TCMS와 RTD간 송신/수신 통신 정상.', 'TCMS와 RTD간의 RS485 통신계통 점검 및 RTD NFB ON 상태인지 점검.', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('c91652eb-98bf-439a-9ed1-7cb86931d3ce', '0520', '520', 'DCU#5 1위(R1) - 이중계 절체 동작', 'T2', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 “Module switchover” 신호가 “1”이 되면 검지 +', '이중계 절체 동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러) 이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A'모듈 및 ‘B'모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c92889b3-e171-44b2-a413-2c280a5110b4', '0505', '505', 'DCU#8 4위(L2)-출입문 입력 고전압', 'Tc2', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 "1"이 되면 검지.', '고전압 상태. (그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('c93843f8-4ab4-4878-a5e1-29dfa79d78cd', '0517', '517', 'DCU#5 3위(R2)-출입문 장애물로 인한 열림 실패', 'T2', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Open failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘상태로 대기', '도어 열림 중 3회 장애물 감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 열림 시, 장애물 감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('c942ec96-dea7-47e0-a7d3-b09a0ae92b49', '0074', '74', 'PSD 차상 - 지상간 통신장애', 'Tc1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c94489b1-b6c9-43be-8394-d6dc8f8c07f6', '0513', '513', 'DCU#2 3위(R2)-모듈 상태체크 에러', 'M1', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 "Module check error” 신호가 "1"이 되면 검지.', 'Module check error 현시 (출입문은 정상작동 가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태체크 기능에 이상이 생긴 경우 고장 발생.', 'DCU의 'A'모듈과 'B'모듈 간, 상태체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('c94b5117-aa6a-4668-ab11-95d036f37621', '0896', '896', '비상인터폰 동작(Car#2 - 1)', 'M1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c950539d-7881-4693-85ba-e476372640e1', '0731', '731', 'HVAC#8-냉난방장치1 리턴 센서 고장', 'Tc2', 'C', 'HVAC-냉난방장치1 리턴 센서 고장', 'C', 'HVAC', '냉난방장치1의 리턴 센서 고장 발생', '냉난방장치1 리턴센서 고장현시', '온도센서 검지범위는 -45~85도 (820~1330옴) 인데, 2초 이상 검지범위를 벗어나는 경우', '온도센서 검지 값이 2초 이상 허용온도 범위 내 일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820~1330옴 을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우, 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('c955f1ee-abf2-4d1a-b81e-36b21e5a7a9b', '0226', '226', 'BECU#1-제동불완해검지(NRBD)', 'Tc1', 'B', 'BECU-제동불완해검지(NRBD)', 'B', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT8의 Bit2 “NRBD” 신호가 "1"이 되면 검지.', '해당 차량 제동불완해 검지 현시 및 완해 취급하였음에도 불구하고 해당 차량 제동압력(BCP)이 완해되지 않음.', '제동완해 상태(정차제동 포함)에서 해당 차량의 제동압력이 완전히 배기 되지 않음.', '제동완해 상태(정차제동 포함)에서 해당 차량의 제동압력이 완전히 배기 됨.', '정차하여 강제완해스위치를 취급하여 소거 여부 확인. 제동 완해상태 확인 후 주의 운전 할 것. +2~3회 시도에도 완해불능시 관제보고하고 지시에 따를 것.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('c95ea6e2-aba1-429d-8470-1574b2555179', '0201', '201', 'BECU#4 - 덤프밸브 고장(후미대차)', 'T1', 'C', 'BECU-덤프밸브고장(후미대차)', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit0 “덤프밸브고장(후미대차)” 신호가 “1”이 +되면 검지 +', '해당 차량 덤프밸브 고장(후미대차)검지 현시 및 해당 차량 활주제어 불가', '해당 차량 후미대차의 덤프밸브가 작동하지 않음. +', '해당 차량 후미대차의 덤프밸브가 정상작동 시 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c96319ce-d2be-49d2-a7ab-4f75ab7c256d', '0509', '509', 'DCU#3 5위(R3) - 출입문 잠김 리미트 스위치 고장', 'M2', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 “DLS Failure” 신호가 “1”이 되면 검지 +', '출입문 잠김 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c972bf96-2aa1-484f-87cb-79bae9556326', '0870', '870', '실내카메라#2(SCAM) 고장(Car#7)', 'M4', 'C', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('c97a95fc-a9fa-42a2-aafe-2a7be80112c5', '0501', '501', 'DCU#8 2위(L1)-출입문 차단', 'Tc2', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('c9a6e751-531b-4bc2-8059-9eb61a030def', '0325', '325', 'ATC#1 - ATO PG2 미스 오류', 'Tc1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c9ac30c7-1213-4c3e-993c-f45cf26c9692', '0517', '517', 'DCU#8 4위(L2)-출입문 장애물로 인한 열림 실패', 'Tc2', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Open failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘상태로 대기', '도어 열림 중 3회 장애물 감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 열림 시, 장애물 감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('c9b0bdfd-f387-424f-80ef-9c1e5aa1bb65', '0232', '232', 'BC 코크(차하#2) 차단(Car4)', 'T1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c9bd4291-3659-45d7-8ca0-94714d2fcd35', '0741', '741', 'HVAC#6 - 전자접촉기 보조히터4(AHEK) 고장', 'M3', 'C', 'HVAC-전자접촉기 보조히터4(AHEK) 고장', 'C', 'HVAC', 'HVAC 보조난방기 작동 중 AHEK4 전자접촉기 고장 발생 +', 'UNIT2 보조난방기 전난방 시 반난방만 작동', '보조난방기 작동 중 2.5초 이상 동안 AHEK4 작동 feedback 신호가 수신되지 않는 경우 +', 'AHEK4 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) AHEK4를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, AHEK4와 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('c9d93bd7-cfc8-44b7-818c-43cc8fb9381e', '0229', '229', 'AS 코크#1 차단(Car4)', 'T1', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ca06528f-69b0-4860-8b41-d6b4a153f4b8', '0140', '140', 'VVVF#6 - 제어전원전압 이상(TCU) (CLVD_S)', 'M3', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ca176cdc-18e2-4fa9-989a-bb09ea281b1d', '0709', '709', 'HVAC#7-냉난방장치2 압력스위치2(DPS) 저압', 'M4', 'D', 'HVAC-냉난방장치2 압력스위치2(DPS) 저압', 'D', 'HVAC', '냉난방장치2 냉매 압력스위치2 저압 발생.', 'UNIT2 CYCLE2 냉방 기능 불가', 'UNIT2 DSP2측 냉매 압력이 3초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우', '냉매 압력이 정상 수치 2±0.5(kgf/cm2 이상으로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CREF4의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)을 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안되는 것을 확인한 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ca28c845-f23f-4412-a749-437ed4ef26c5', '0210', '210', 'BECU#3-3축속도신호의 비정상', 'M2', 'C', 'BECU-3축속도신호의 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit1 “3축속도신호의 비정상” 신호가 "1"이 되면 검지.', '해당 차량 3축속도신호의 비정상 검지 현시 및 해당 차량 활주제어 불가.', '해당 차량의 3축 속도센서 고장 발생.', '해당 차량의 3축 속도센서가 정상적일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ca2ef9ed-524b-4570-a0af-9afecfba0e80', '0510', '510', 'DCU#7 4위(L2) - 출입문 닫힘 리미트 스위치1 고장', 'M4', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 “DCS1 Failure(Leftt)” 신호가 “1”이 되면 검지 +', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ca317eb3-9bca-4c1e-a43d-6ea6182a5a5c', '0148', '148', 'VVVF#2 - FC 과전압검지(OVD1)', 'M1', 'C', 'VVVF-FC 과전압검지(OVD1)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT30의 Bit5 “OVD1” 신호가 “1”이 되면 검지 +', '1) TCMS 화면 하단 또는 고장화면에 ‘FC 과전압검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생함. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉은색으로 표기되며, HSCB, LB1, 2 개방되어 동력 손실 발생함.', '추진제어장치 내부 FC 전압이 2,100V 이상일 경우 검지됨. +', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반 배전반의 VVVFIC nfb 재투입 또는 차량 배터리 전원 재투입', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 FC전압에 이상이 있는지 확인한다. +3) 추진제어장치 내부 고전압부에 소손흔적이 있는지 확인한다. +4) FC에 연결된 부스바의 체결상태가 양호한지 확인한고, 부스바를 분리하여 FC의 Capacitance를 측정하여 이상이 없는지 확인한다. +5) 전압센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +6) SEN 보드의 동작 상태를 시험기를 통해 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지 간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ca358b0f-666f-4576-ba54-8f68f6bd5577', '0520', '520', 'DCU#3 1위(R1)-이중계 절체 동작', 'M2', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 "Module switchover' 신호가 "1"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.392739+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ca53bc5b-ed61-4ee6-89cd-8dd3ae3d5b01', '0136', '136', 'VVVF#2 - OVT 전류센서 이상검지(OVCTD)', 'M1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ca550469-dd59-41ed-bb41-8fdc04390deb', '0904', '904', '비상인터폰 동작(Car#6-1)', 'M3', 'W', null, null, 'RADIO', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ca5ccf7c-6c14-47cf-9a1a-f25e873651d2', '0102', '102', 'VVVF#7-회생제동차단(BRK BLOCK)', 'M4', 'W', null, null, 'VVVF', null, null, null, null, null, null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ca7a560b-544d-4468-9124-29346a0a5135', '0509', '509', 'DCU#2 1위(R1)-출입문 잠김 리미트 스위치 고장', 'M1', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 "DLS Failure” 신호가 "1"이 되면 검지.', '출입문 잠김 상태 확인 불가', '1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ca7ab689-459f-4f1e-8f9a-80bbf367dd87', '0057', '57', 'AUX FUSE DISCONNECTED(Car6)', 'M3', 'W', 'AUX FUSE DISCONNECTED(Car6)', 'W', 'TCMS', '차량으로부터 AUX FUSE DISCONNECTED 신호 입력시', 'SIV 고압 차단으로 AC전원 전체 "OFF"', '해당 퓨우즈 소손', '해당 퓨우즈 교체', null, ' +REC30330HN0', '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ca8d612e-ed1a-4d33-b229-1e32984428e2', '0810', '810', '실내카메라#2(SCAM) 고장(Car#1)', 'Tc1', 'C', '통합방송표시기-실내카메라#2(SCAM) 고장', 'C', 'TCMS', '통합방송표시기의 RS485 데이터 중 통합방송표시기-TCMS SD TEXT9의 Bit2 “SCAM#2 고장” 신호가 "1"이 되면 검지.', '고장장치 통신 불량으로 CCTV 모니터 현시기능 불능 및 DVR 저장기능 불능', '마스터 통합방송제어기에 주기적(2초) TCP 응답이 없을 경우 통신 불량으로 판단', '마스터 통합방송제어기에 TCP 응답 재개', '관련 CB(방송/표시기/CCTV 전원공급장치2, CBPAU# +2) 리셋하고 통신라인 및 상태 점검. +관련도면 RES41001HN0, REC70720HN0', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ca96d4a2-f6b4-492b-917f-9384507a901c', '1708', '1708', '노선안내표시기#2 고장(Car4)', 'T1', 'C', '노선안내표시기#6 고장', 'C', 'PIC', 'PIC 장치의 노선안내표시기#6이 고장이 났을 때 발생 +', '1) 노선안내표시기 화면 미현시 +2) 노선안내표시기 안내 화면 오현시', '통신고장 +', '통신 재개 시', '1) 이더넷 스위치 링크 확인 +2) 이더넷 케이블 점검 +3) 제어보드 및 전원보드 교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('caa69872-4da2-44e8-a000-8a285df42ebf', '0710', '710', 'HVAC#4-냉난방장치2 압력스위치2(DPS) 고압', 'T1', 'D', 'HVAC-냉난방장치2 압력스위치2(DPS) 고압', 'D', 'HVAC', '냉난방장치2 냉매 압력스위치2 고압 발생.', 'UNIT2 CYCLE2 냉방 기능 불가', 'UNIT2 DSP2측 냉매 압력이 3초 이상 28±1(kgf/cm2) 이상 되는 경우', '냉매 압력이 정상 수치 15±0.7(kgf/cm2 이하로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CRCM4의 부하측 전류를 측정하여 응축기 팬의 동작여부를 확인한다. +2) 응축기 코일의 전면에 이물질로 인한 막힘이 있는지 확인한다. +3) 응축기 팬 상부 그릴에 외부 이물질로 인한 막힘이 있는지 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('cacead3d-4c3c-4ac4-b14a-f44367309338', '0516', '516', 'DCU#2 3위(R2) - 출입문 장애물로 인한 닫힘 실패', 'M1', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Close failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림 상태로 대기', '도어 닫힘 중 3회 장애물감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('cadafed2-5d71-482d-9506-2fa39f2b21e1', '0518', '518', 'DCU#1 1위(R1) - 출입문 Enable 신호 에러', 'Tc1', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 “Enable signal error” 신호가 “1”이 되면 검지 +', 'DCU 출입문Enable신호에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드 시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을 때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드 시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입 상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호 장치로부터의 출입문 열림 명령 신호) 취급 시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함. +', '해당 출입문 enable 신호수신', '1) AUTO/MCS 모드 시에는 YARD 모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인 한다. (YARD/FMC 모드 시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('cadcbf18-f7c2-411e-992c-dd9a55d08115', '0239', '239', 'BECU#5-3축스키드신호', 'T2', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('cae5cbd5-fde1-4115-9d9f-118636725921', '0709', '709', 'HVAC#4-냉난방장치2 압력스위치2(DPS) 저압', 'T1', 'D', 'HVAC-냉난방장치2 압력스위치2(DPS) 저압', 'D', 'HVAC', '냉난방장치2 냉매 압력스위치2 저압 발생.', 'UNIT2 CYCLE2 냉방 기능 불가', 'UNIT2 DSP2측 냉매 압력이 3초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우', '냉매 압력이 정상 수치 2±0.5(kgf/cm2 이상으로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CREF4의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)을 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안되는 것을 확인한 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('cae98949-cc91-4576-b8fb-2303d1c1505d', '0126', '126', 'VVVF-접촉기 이상검지(CNTF) (Car6)', 'M3', 'C', 'VVVF-접촉기 이상검지(CNTF)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT33의 Bit7 “CNTF” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 '접촉기 이상검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) LB Box내부의 HSCB, LB1,2의 동작에 이상이 발생한 경우 검지됨..', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반배전반의 VVVFIC nfb 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 이상동작인 접촉기(HSCB, LB1, +2)를 확인한다. +3) LB Box와 추진제어장치간 배선의 연결 상태를 확인한다. +4) 추진제어장치 내부의 릴레이 유닛에 정상동작여부를 확인한다. +4) DIN 보드의 동작상태를 시험기를 통해 확인한다. +5) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.656536+00', null, '다대48량(2015)', 'Rotem'), ('caeac81e-2e6e-4c44-881f-983d9d749ae2', '0507', '507', 'DCU#2 2위(L1) - 초기화 실패', 'M1', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 “Calibration failure” 신호가 “1”이 되면 검지 +', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터 고장, 장애물감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우 +', '초기화 실패를 야기한 고장코드를 확인하여 조치 후, 재닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인한다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('caeee2ab-37e4-4e47-a51f-aec251bd318f', '0500', '500', 'DCU#6 3위(R2) 통신고장', 'M3', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS간 RS485 통신고장이 검지되면 발생.', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐 상태 등의 변화가 없음.', '1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우', '해당차량의 DCU 및 CU/TU 의 전원이 정상상태이고, 통신라인 연결상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜저 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는데도 지속적으로 통순고장이 검지되면, DCU의 X2,X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('caf29047-dc1a-47bf-8122-9b44b3ae2356', '1503', '1503', '난방장치용 AC 회로차단기 차단(Car8)', 'Tc2', 'W', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('caf2c58e-7b1d-4ca1-9de2-6b9114356093', '0518', '518', 'DCU#7 3위(R2)-출입문 Enable 신호 에러', 'M4', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 "Enable signal error” 신호가 "1"이 되면 검지.', 'DCU 출입문 Enable 신호 에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) 취급시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함.', '해당출입문 enable 신호 수신', '1) AUTO/MCS 모드시에는 YARD모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인한다. (YARD/FMC 모드시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('caff0433-239e-492f-a473-f1ae1f9b9acf', '0018', '18', '모든 출입문 바이패스 스위치 취급', 'Tc2', 'W', null, null, 'ATC', null, null, null, null, null, null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('cb006163-0a48-46fd-bc7d-f75eb1bd8d27', '0224', '224', 'BECU#7 - 파트너차 ECU 고장(PECUF)', 'M4', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('cb0066cf-36c8-4a96-b3f2-d907111df09e', '0850', '850', '실내카메라#2(SCAM) 고장(Car#5)', 'T2', 'C', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('cb0de7c3-1c60-49c9-9e0b-bf932947978f', '0505', '505', 'DCU#3 5위(R3) - 출입문 입력 고전압', 'M2', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 “1”이 되면 검지 +', '고전압 상태(그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상 +', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('cb362df3-e633-42b3-a756-cbf615fa370b', '0814', '814', '비상인터폰#2(PEI) 고장(Car#1)', 'Tc1', 'C', '통합방송표시기-비상인터폰#2(PEI) 고장', 'C', 'AVC', '통합방송표시기의 E-NET 데이터 중 통합방송표시기-TCMS SD TEXT8의 Bit6 “PEI#2 고장” 신호가 +“1”이 되면 검지 +', '고장장치 통신불량으로 비상통화 기능 불능', '마스터통합방송제어기에 주기적(2초) TCP 응답이 없을 경우 통신불량으로 판단 +', '마스터통합방송제어기에 TCP 응답재개', '관련 CB(방송/표시기/CCTV 전원공급장치2, CBPAU# +2) 리셋하고 통신라인 및 상태점검 관련도면 : RES16001DX0, REC70700DX0', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('cb47aed7-95a5-488e-83c7-f0d54a4618ab', '0509', '509', 'DCU#7 2위(L1)-출입문 잠김 리미트 스위치 고장', 'M4', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 "DLS Failure” 신호가 "1"이 되면 검지.', '출입문 잠김 상태 확인 불가', '1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('cb4e21e8-a56f-476e-9a00-3468f1343105', '0500', '500', 'DCU#1 5위(R3) 통신고장', 'Tc1', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS 간 RS485 통신고장이 검지되면 발생 +', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐상태 등의 변화가 없음.', ' +1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우 +', '해당 차량의 DCU 및 CU/TU의 전원이 정상상태이고, 통신 라인 연결 상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜져 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적 으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는 데도 지속적으로 통신고장이 검지되면, DCU의 X2, X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상 체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('cb633188-1018-4cf4-9ef8-01c0559d820a', '0504', '504', 'DCU#3 1위(R1)-출입문 외부비상핸들 취급(EAD)', 'M2', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('cb746138-4ab9-4179-9a5f-305c62d6d57b', '0227', '227', '제동관련 회로차단기 차단(Car4)', 'T1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('cb84774d-77af-4e00-a802-47d8e0ecadbe', '0214', '214', 'BECU#5 - BC 압력센서 고장', 'T2', 'C', 'BECU-BC 압력센서 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit5 “BC 압력센서 고장” 신호가 “1”이 되면 검지 +', '해당 차량 BC 압력센서 고장검지 현시 및 해당 차량 제동력부족, 제동불완해 검지 불가', '해당 차량의 BC 압력센서 고장 +', '해당 차량의 BC 압력센서가 정상일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('cb8a7b21-866d-4498-b5eb-f5f2e3fca936', '0505', '505', 'DCU#8 1위(R1) - 출입문 입력 고전압', 'Tc2', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 “1”이 되면 검지 +', '고전압 상태(그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상 +', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('cba031d7-d676-42af-8f82-b85a57e40ae7', '0505', '505', 'DCU#5 4위(L2) - 출입문 입력 고전압', 'T2', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 “1”이 되면 검지 +', '고전압 상태(그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상 +', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('cba6d293-18d7-48b1-8926-fcda486ed1cb', '0505', '505', 'DCU#2 1위(R1) - 출입문 입력 고전압', 'M1', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 “1”이 되면 검지 +', '고전압 상태(그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상 +', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('cbb01d3c-ed12-4dbd-bd45-1a6a31e2e841', '0513', '513', 'DCU#4 1위(R1) - 모듈 상태체크 에러', 'T1', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 “Module check error” 신호가 “1”이 되면 검지 +', 'Modulecheckerror현시(출입문은 정상작동가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태 체크 기능에 이상이 생긴 경우 고장 발생 +', 'DCU의 ‘A' 모듈과 ‘B' 모듈 간, 상태 체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('cbb7ba24-9f47-4551-b246-fd44f1696c96', '0219', '219', 'BECU#4 - 제동지령 비정상', 'T1', 'C', 'BECU-제동지령 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit2 “제동지령 비정상” 신호가 “1”이 되면 검지 +', '해당 차량 제동지령비정상 검지 현시 및 해당 차량 정상적인제동제어불가(상용제동지령에 따른 제어)', '해당 차량의 제동지령 신호가 정상범위를 벗어남. (5.0 ~ 95.0%) +', '해당 차량의 제동지령 신호가 정상범위일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 소거되지 않을 경우 해당 선택 운전실의 PWM 엔코더를 리셋(CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('cbb8ead0-6a57-455f-92f0-6676b3069588', '0741', '741', 'HVAC#2-전자접촉기 보조히터4(AHEK) 고장', 'M1', 'C', 'HVAC-전자접촉기 보조히터4(AHEK) 고장', 'C', 'HVAC', 'HVAC 보조난방기 작동 중 AHEK4 전자접촉기 고장 발생.', 'UNIT2 보조난방기 전난방 시 반난방만 작동', '보조난방기 작동 중 2.5초 이상동안 AHEK4 작동 feedback 신호가 수신되지 않는 경우', 'AHEK4 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) AHEK4를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, AHEK4와 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('cbbf5aac-ecae-4b6b-a207-967dddfd4dfc', '0502', '502', 'DCU#7 1위(R1)-출입문 장애물검지', 'M4', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('cbc11a53-8138-4036-851f-3ba2d5515861', '0746', '746', 'HVAC#6 - 전자접촉기 배기팬1(CRVF) 고장', 'M3', 'C', 'HVAC-전자접촉기 배기팬1(CRVF) 고장', 'C', 'HVAC', 'HVAC 환기 작동 중 CRVF1 전자접촉기 고장 발생 +', '환기 시 차량 배기팬1 운전 불가능', '환기 작동 중 2.5초 이상 동안 CRVF1 작동 feedback 신호가 수신되지 않는 경우 +', 'CRVF1 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CRVF1을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRVF1과 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('cbc78756-d837-4f8f-9613-3bee11f19353', '0505', '505', 'DCU#7 4위(L2) - 출입문 입력 고전압', 'M4', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 “1”이 되면 검지 +', '고전압 상태(그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상 +', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('cbd828bc-6fc6-429a-aa34-8b74af6e8520', '0737', '737', 'HVAC#4 - 전자접촉기 증발기4(CREF) 고장', 'T1', 'C', 'HVAC-전자접촉기 증발기4(CREF) 고장', 'C', 'HVAC', 'HVAC 냉방 작동 중 CREF4 전자접촉기 고장 발생 +', 'UNIT2 냉방 작동 불가', '냉방 작동 중 2.5초 이상 동안 CREF4 작동 feedback 신호가 수신되지 않는 경우 +', 'CREF4 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CREF4를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CREF4와 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('cbe5d8f4-9a0a-40db-8644-97eccfa3f60f', '0516', '516', 'DCU#8 1위(R1) - 출입문 장애물로 인한 닫힘 실패', 'Tc2', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Close failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림 상태로 대기', '도어 닫힘 중 3회 장애물감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('cc14d426-0332-4f3d-aa63-266f4179af72', '1515', '1515', 'CU1 모듈고장 - DIM2(Car1)', 'Tc1', 'C', 'CU1, 2 모듈고장 - DIM2', 'C', 'TCMS', 'CU의 DIM2 PCB가 이 정상적으로 인식되지 않아 점검이 필요할 때 +', '1) CU1의 DIM2 PCB가 모듈 고장이 발생하면, CU2로 자동 절체됨. (CU2로 자동 절체되면, 운행 에는 지장이 없음.) +2) CU2 자동 절체 시 화면의 우측 상단 경고장글자 하단에 “B.SYS” 라는 표시가 나타남. +3) 자동절체 시 열차 운행에는 관계없음. +4) CU2의 DIM2 모듈고장 시는 CU1 정상동작 시 운행에는 지장이 없음.', 'CU DIM2의 ID를 정상적으로 검출하지 못할 때 화면에 현시 +', 'CU DIM2의 ID를 정상적으로 검출하는 경우 소거됨.', '1) CU의 DIM2 PCB 교체 +2) 불량 해소가 되지 않을 경우, 순차적으로 MCPU, SCM, AUX PCB를 교체하여 정상여부 확인', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('cc17d63d-26b3-483f-aac3-25c6928b6c11', '0515', '515', 'DCU#5 6위(L3) - 출입문 열림 시간 초과', 'T2', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 “Open time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 열림 동작시간이 6초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도한 후, ‘장애물로 인한 열림 실패' 고장과 함께 ‘Open time out' 고장이 함께 현시 +', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('cc1a431f-0baa-43c8-8a4e-7d9995b4e2d1', '0517', '517', 'DCU#4 3위(R2) - 출입문 장애물로 인한 열림 실패', 'T1', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Open failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘 상태로 대기', '도어열림 중 3회 장애물감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 열림 시, 장애물감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('cc310a0d-253b-4401-81d8-a382b4138740', '0159', '159', 'VVVF#7-제어전원전압이상(PWM2)(CLVD_P2)', 'M4', 'C', 'VVVF-제어전원전압이상(PWM2)(CLVD_P2)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT32의 Bit0 “CLVD_P2” 신호가 "1"이 되면 검지.', null, 'PWM보드 내부의 제어전원 이상 검지 시 중고장 발생.', '동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) PWM보드 2군 전면의 CN1, CN2 커넥터 핀 상태 및 체결상태 확인. +2) PWM보드 2군 내부의 PCB의 소손, 냉납, 열화 유무 확인. +3) 추진제어장치 시험기를 이용하여 PWM보드의 정상동작을 확인한다. +4) 상기의 점검부분에 이상이 있을 경우 관련부품을 교체한다.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('cc346f26-f05a-4450-91b7-d1232f88f4d7', '1204', '1204', 'FDU#6-감지기2 고장', 'M3', 'C', 'FDU-감지기2 고장', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 "Detector1 State” 신호가 "10"이 되면 검지.', '감지기 고장상태 현시(자동 소거 안됨)', '1) 감지기로부터 데이터 응답이 없는경우. +2) 감지기로부터 수신된 데이터의 CRC가 맞지 않는경우 +3) 감지기로부터 수신된 데이터의 ID가 송신 ID와 일치하지 않는경우', 'FDU 전원 리셋 후 감지기로부터 정상적으로 데이터가 수신된 경우', '1) FDU 전원 리셋 후 고장 소거 여부 확인 +2) 정상 동작중인 감지기와 위치 교환 후 FDU 전원 리셋 및 고장 상태 확인 +3) 동일한 감지기에서 고장 발생시 감지기 교체 +4) 동일한 위치에서 고장 발생시 감지기 라인 점검', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('cc3b6d6f-ec49-41c2-83ed-568e0543d92e', '0514', '514', 'DCU#3 2위(L1)-출입문 닫힘 시간 초과', 'M2', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 "Close time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 닫힘 동작시간이 7초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도 한 후, '장애물로 인한 닫힘실패' 고장과 함께 'Close time out' 고장이 함께 현시', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('cc4fa23e-7e9c-44ea-bc2f-450189f443b1', '0150', '150', 'VVVF#6 - 가선저전압검지(ESLVD)', 'M3', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('cc8180c1-70ce-4042-8d96-296514ec17a4', '0744', '744', 'HVAC#7-전자접촉기 보조히터1(AHEK) 고장', 'M4', 'C', 'HVAC-전자접촉기 보조히터1(AHEK) 고장', 'C', 'HVAC', 'HVAC 보조난방기 작동 중 AHEK1 전자접촉기 고장 발생.', 'UNIT1 보조난방기 전난방 시 반난방만 작동', '보조난방기 작동 중 2.5초 이상동안 AHEK1 작동 feedback 신호가 수신되지 않는 경우', 'AHEK1 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) AHEK1을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, AHEK1과 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('cc82024e-5f0b-4b47-a930-e0f3375baf39', '0512', '512', 'DCU#3 3위(R2)-파라미터 로딩 실패', 'M2', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 "Paraneter error” 신호가 "1"이 되면 검지.', 'Parameter error 현시 (출입문은 정상작동 가능)', 'DCU 자체내의 EEPROM으로부터 parameter 데이터 로딩 실패', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('cc84f158-cc16-45d9-a10e-32e25c5ca16a', '0505', '505', 'DCU#6 6위(L3)-출입문 입력 고전압', 'M3', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 "1"이 되면 검지.', '고전압 상태. (그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('cc9d5424-129f-4655-919c-2e2e59399f63', '0165', '165', 'VVVF#7 - OVT 오동작검지(OVTD)', 'M4', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ccaff80d-8271-4f0f-b956-064c081cc183', '0507', '507', 'DCU#2 3위(R2) - 초기화 실패', 'M1', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 “Calibration failure” 신호가 “1”이 되면 검지 +', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터 고장, 장애물감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우 +', '초기화 실패를 야기한 고장코드를 확인하여 조치 후, 재닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인한다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ccc13ab7-191f-45ec-9f46-4e794678c938', '1211', '1211', 'FDU#5-체크섬 고장', 'T2', 'C', 'FDU-체크섬 고장', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT5의 Bit7 "Checksum Fault” 신호가 "1"이 되면 검지.', 'Checksum Fault 현시 및 FDU의 정상 동작 불가능', '수신기 펌웨어의 오류로 인한 체크섬 이상(MCU 내부 플래쉬 메모리에 저장된 체크섬과 프로그램의 체크섬 계산값이 다를경우)', 'FDU가 부팅될때 MCU 내부 플래쉬 메모리에 저장된 체크섬과 프로그램의 체크섬 계산값이 같을 경우', '1) FDU의 전원을 리셋하여 소거여부 확인 +2) 문제가 지속될 경우, 수신기 교체', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ccc46be2-656d-443c-8aca-8aa1095592dd', '0204', '204', 'BECU#5 - 응하중 비정상', 'T2', 'C', 'BECU-응하중 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit3 “응하중 비정상” 신호가 “1”이 되면 검지 +', '해당 차량 응하중 비정상 검지 현시', '해당 차량의 응하중 출력이 정상범위를 벗어남. +', '해당 차량 응하중 출력이 정상범위로 복귀 시 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ccddd0aa-6658-4bfd-8cf5-0fed97d19e8f', '0231', '231', 'BC 코크(차상) 차단(Car6)', 'M3', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ccecfd63-06ad-4a52-853e-e84d9a6aa39a', '0205', '205', 'BECU#8-회생제동요구 비정상', 'Tc2', 'C', 'BECU-회생제동요구 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit4 “회생제동요구 비정상” 신호가 "1"이 되면 검지.', '해당 차량 회생제동요구 비정상 검지 현시.', '해당 차량의 회생제동요구 출력이 정상범위를 벗어남.', '해당 차량 회생제동요구 출력이 정상범위로 복귀 시 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ccfe382a-6844-4469-8dd1-3cfd1be531b9', '0501', '501', 'DCU#5 1위(R1)-출입문 차단', 'T2', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('cd01ca42-b874-4c88-8b97-da80e7808b10', '0205', '205', 'BECU#3 - 회생제동요구 비정상', 'M2', 'C', 'BECU-회생제동요구 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit4 “회생제동요구 비정상” 신호가 “1”이 +되면 검지 +', '해당 차량 회생제동 요구 비정상 검지 현시', '해당 차량의 회생제동 요구 출력이 정상범위를 벗어남. +', '해당 차량 회생제동 요구 출력이 정상범위로 복귀 시 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('cd097bea-9742-46e6-8f77-298ce6d874bd', '0704', '704', 'HVAC#5 - 냉난방장치1 압축기1 과부하', 'T2', 'C', 'HVAC-냉난방장치1 압축기1 과부하', 'C', 'HVAC', 'HVAC 냉방 작동 중 냉난방장치1 압축기1 또는 응축기1 모터에 과부하 발생 +', '냉방 기능 저하(전냉방 시 반냉방으로 작동)', ' +1) 냉방 작동 중 UNIT1의 압축기1 또는 응축기1 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRCM1과 연결된 THR1이 Trip 됨. +', 'UNIT1의 압축기1 또는 응축기1 모터의 과부하조건을 해소하여 정상 가능 상태로 만들고, THR1 및 마이콤 전원 리셋', '1) 냉난방 배전반의 점검커버를 열고, THR1의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR4의 전류 세팅값이 11.5A에 맞춰져 있는지 확인하여, 아닐 경우, (+) 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동시킨 후, THR1의 2차측 2, 4, 6 단자에서 각 단자 간 상간 전압이 AC 380V로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 압축기 및 응축기 단품 상태에서 점검을 한다. +7) THR1의 2차측 2, 4, 6 단자에서 각 단자 간 권선저항이 모두 같은지 확인한다. (±10% 이하) (압축기1 및 응축기1 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT1의 압축기1 또는 응축기1 모터의 결선을 해제한 후 각 부품의 권선저항을 확인 후, 문제가 있는 부품을 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR1 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('cd24e523-a991-43fc-8d7b-b5591e2be568', '0503', '503', 'DCU#3 5위(R3)-출입문 내부비상핸들 취급(EED)', 'M2', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('cd2e5c25-d5c9-4399-8d09-d2cce53fcb8f', '0181', '181', 'VVVF#7-MCOK 투입불량(MCOKNC)', 'M4', 'C', 'VVVF-MCOK 투입불량(MCOKNC)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT34의 Bit6 “MCOKNC” 신호가 "1"이 되면 검지.', null, 'MCOK 투입조건에서 개방상태 유지 시 고장검지.', '동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) 판토하강상태에서 테스트모드로 전환하여 시퀀스를 투입하고 MCOK의 주접점 동작을 확인한다. +2) 주회로 차단기함 내에 MCOK의 보조접점의 동작상태를 확인한다. +3) 추진제어장치 계전기 유니트에 MCHK1( +2) 보조접촉기 상태를 확인하여 동작 여부를 확인한다. +4) 추진제어장치 시험기를 이용하여 제어기 시험을 실시하여 이상여부를 확인한다.', null, '3', '2025-10-12 01:21:37.578803+00', null, '로템40량(2018)-1단계', 'Rotem'), ('cd326132-3a18-45be-bfc9-80ddff4d80e8', '0104', '104', 'VVVF#3-휠 슬라이드 검지(WSD)', 'M2', 'W', null, null, 'VVVF', null, null, null, null, null, null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('cd35b31f-ec56-4830-ab14-456b379f48e8', '0419', '419', 'SIV#8 - 시퀀스 고장(SQCFLT)', 'Tc2', 'C', 'SIV-시퀀스 고장(SQCFLT)', 'C', 'SIV', '보조전원장치(SIV)의 RS485데이터 중 SIV-TCMS SD TEXT6의 Bit4 “SQCFLT”신호가 “1”이 되면 +검지 +', '1) 보조전원장치(SIV) 일반화면에 보조전원장치 상태 붉은색으로 표시됨. +2) 보조전원장치(SIV)는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 보조전원장치(SIV) 중고장이 발생함. +5) 중고장이 발생되면 TCMS 일반화면에 보조전원장치(SIV) 상태 붉은색으로 표기되며, 연장급전 됨.', ' +1) 보조전원장치(SIV)에 고압 인가 후 60초 이내 출력전압 공급 불가 시 +2) 기동 중 컨텍터(CHK, LK, SIVK), FC, 릴레이, 전압센서 등 보조전원장치 내부 부품 불량발생 시 +3) DIO, SEN 보드 불량 또는 결선라인 이상 발생 시 +', '1) 경고장이 발생할 경우 보조전원장치(SIV) 자동 재기동에 의해 재기동 됨. +2) 중고장이 발생했을 경우 조치 완료 후 보조전원장치(SIV) 리셋으로 고장 소거됨.', '1) 상기 고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 보조전원장치(SIV) 고장기록을 수집하여 동작과정 중 이상이 있는지 확인한다. +3) 보조전원장치(SIV) 내부 구성품의 상태 및 광케이블 상태, 결선상태, 릴레이 상태를 확인한다. +4) 전압(입력단, FC단)센서 상태확인 및 보조전원장치(SIV) 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) 컨텍터의 주접점, 보조접점의 상태확인 및 보조전원장치(SIV) 제어기 DIO 보드에 연결되는 저전압 배선상태를 확인한다. +6) 충전저항 및 방전저항의 상태를 확인한다. +7) DIO, SEN 보드의 동작 상태를 시험기를 통해 확인한다. +8) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('cd40a2e4-c8df-4ac9-8f37-333f243daf96', '0728', '728', 'HVAC#7-냉난방장치2 토출 센서 고장', 'M4', 'C', 'HVAC-냉난방장치2 토출 센서 고장', 'C', 'HVAC', '냉난방장치2의 토출 센서 고장 발생', '냉난방장치2 토출센서 고장현시', '온도센서 검지범위는 -45~85도 (820~1330옴) 인데, 2초 이상 검지범위를 벗어나는 경우', '온도센서 검지 값이 2초 이상 허용온도 범위 내 일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820~1330옴 을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우, 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('cd40b74f-c59f-49b4-9e8b-4d9488d5b1be', '0520', '520', 'DCU#8 6위(L3) - 이중계 절체 동작', 'Tc2', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 “Module switchover” 신호가 “1”이 되면 검지 +', '이중계 절체 동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러) 이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A'모듈 및 ‘B'모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('cd49e55e-502a-4bd9-965b-1d0dabd843cc', '0506', '506', 'DCU#1 6위(L3)-출입문 입력 저전압', 'Tc1', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 "1"이 되면 검지.', '저전안 상태 (출입문 동작이 심하게 느려지거나 작동조차 안될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('cd4e20b3-5d1f-4d14-a983-e6b8560cdfce', '0722', '722', 'HVAC#2 - 냉난방장치2 압력스위치1(DPS) 냉매부족', 'M1', 'C', 'HVAC-냉난방장치2 압력스위치1(DPS) 냉매부족', 'C', 'HVAC', '냉난방장치2 냉매 압력스위치1 저압 발생 +', 'UNIT2CYCLE1냉방 기능 불가', 'UNIT2DSP1측 냉매압력이 30초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우 +', '냉매압력이 정상수치 2±0.5(kgf/cm2) 이상유지하도록 하고, 마이콤전원을 리셋', '1) 배전반 점검 커버를 열고 마이콤 전원을 리셋한 후, 냉방 가동 시, CREF4의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)를 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확���한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설 여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안 되는 것을 확인한 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('cd528ed2-4758-47cf-95f3-cabc42701fbc', '0519', '519', 'DCU#6 5위(R3)-ZVR 신호 에러', 'M3', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 "ZVR signal error” 신호가 "1"이 되면 검지.', '출입문이 강제로 닫히게 되고, 열림은 불가능', '1) 차량 ZVR 신호가 없는 상태 (차량 주행상태) 에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함.', '해당출입문 ZVR 신호 수신', '1) 차량이 주행중이라면, 차량이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('cd5f8378-8de7-4d90-8b9d-4adc6aae9670', '0425', '425', 'SIV#8-', 'Tc2', '0', null, null, '0', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('cd62305e-c697-4552-aad2-693c7be3e55f', '0076', '76', '주공기압축기 장시간 기동(Car8)', 'Tc2', 'B', '주공기압축기 장시간 기동(Car8)', 'B', '기타', '차량으로부터 INVERTER RUN for CMSB 또는 BYPASS RUN for CMSB 신호 입력이 12분 이상 지속 시 +', '주공기압축기 장시간 기동 +고장검지조건 : 주공기압축기 12분 이상 기동 시 +고장소거조건 : 해당 공기관의 누기여부 확인 및 장치 점검 +회로 도면 : REC30330DX0', null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('cd6d0f68-a058-4aea-898e-9dbe053d91d1', '0504', '504', 'DCU#6 2위(L1)-출입문 외부비상핸들 취급(EAD)', 'M3', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('cd740c28-101b-43b9-8430-8c3543255e65', '0226', '226', 'BECU#7-제동불완해검지(NRBD)', 'M4', 'B', 'BECU-제동불완해검지(NRBD)', 'B', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT8의 Bit2 “NRBD” 신호가 "1"이 되면 검지.', '해당 차량 제동불완해 검지 현시 및 완해 취급하였음에도 불구하고 해당 차량 제동압력(BCP)이 완해되지 않음.', '제동완해 상태(정차제동 포함)에서 해당 차량의 제동압력이 완전히 배기 되지 않음.', '제동완해 상태(정차제동 포함)에서 해당 차량의 제동압력이 완전히 배기 됨.', '정차하여 강제완해스위치를 취급하여 소거 여부 확인. 제동 완해상태 확인 후 주의 운전 할 것. +2~3회 시도에도 완해불능시 관제보고하고 지시에 따를 것.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('cd806934-8929-4b92-b866-e7ef9b9f2153', '1208', '1208', 'FDU#3 - 감지기4 고장', 'M2', 'C', 'FDU-감지기4 고장 (Car1~8)', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 “Detector1 State” 신호가 “10”이 되면 검지 +', '감지기고장상태현시(자동소거 안 됨)', ' +1) 감지기로부터 데이터 응답이 없는 경우 +2) 감지기로부터 수신된 데이터의 CRC가 맞지 않는 경우 +3) 감지기로부터 수신된 데이터의 ID가 송신 ID와 일치하지 않는 경우 +', 'FDU 전원 리셋 후 감지기로부터 정상적으로 데이터가 수신된 경우', '1) FDU 전원 리셋 후 고장 소거 여부 확인 +2) 정상동작중인 감지기와 위치 교환 후 FDU 전원 리셋 및 고장 상태 확인 +3) 동일한 감지기에서 고장 발생 시 감지기 교체 +4) 동일한 위치에서 고장 발생 시 감지기 라인 점검', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('cd86196d-ffa4-4f24-beab-7840f46e6fc3', '0740', '740', 'HVAC#8-전자접촉기 증발기1(CREF) 고장', 'Tc2', 'C', 'HVAC-전자접촉기 증발기1(CREF) 고장', 'C', 'HVAC', 'HVAC 냉방작동 중 CREF1 전자접촉기 고장 발생.', 'UNIT1 냉방 작동 불가', '냉방작동 중 2.5초 이상동안 CREF1 작동 feedback 신호가 수신되지 않는 경우', 'CREF1 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CREF1을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CREF1과 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('cd8a25ab-0793-4026-912b-80258fb22377', '0521', '521', 'DCU#3 5위(R3)-모듈 상태 이상', 'M2', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 "01"또는 "00"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('cd8d0f0c-f3e9-478b-b933-21a504c0cb32', '1204', '1204', 'FDU#7 - 감지기2 고장', 'M4', 'C', 'FDU-감지기2 고장 (Car1~8)', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 “Detector1 State” 신호가 “10”이 되면 검지 +', '감지기고장상태현시(자동소거 안 됨)', ' +1) 감지기로부터 데이터 응답이 없는 경우 +2) 감지기로부터 수신된 데이터의 CRC가 맞지 않는 경우 +3) 감지기로부터 수신된 데이터의 ID가 송신 ID와 일치하지 않는 경우 +', 'FDU 전원 리셋 후 감지기로부터 정상적으로 데이터가 수신된 경우', '1) FDU 전원 리셋 후 고장 소거 여부 확인 +2) 정상동작중인 감지기와 위치 교환 후 FDU 전원 리셋 및 고장 상태 확인 +3) 동일한 감지기에서 고장 발생 시 감지기 교체 +4) 동일한 위치에서 고장 발생 시 감지기 라인 점검', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('cda5051b-185e-459b-95c7-ed1ed4c6d689', '0230', '230', 'ECU 전원공급 고장(Car4)', 'T1', 'B', 'ECU 전원공급 고장', 'B', 'BECU', '해당 차량의 ECU 전원공급 고장(CB OFF) 발생 시 검지 +', '해당 차량의 ECU 전원공급 고장검지 현시', '해당 차량의 ECU 전원차단(CBOFF) +', '해당 차량의 ECU 전원공급(CBON)', 'BECU를 리셋(BECUCBOFF/ON)하여 소거 여부 확인, 지속적으로 고장 발생 시 관제 보고하고 지시에 따를 것', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('cdbbdb90-c8dc-4e7a-ab91-8a7284e128b9', '0515', '515', 'DCU#5 3위(R2) - 출입문 열림 시간 초과', 'T2', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 “Open time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 열림 동작시간이 6초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도한 후, ‘장애물로 인한 열림 실패' 고장과 함께 ‘Open time out' 고장이 함께 현시 +', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('cdbec59a-0107-44b0-a63a-80f1d5e11bb6', '0519', '519', 'DCU#5 5위(R3)-ZVR 신호 에러', 'T2', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 "ZVR signal error” 신호가 "1"이 되면 검지.', '출입문이 강제로 닫히게 되고, 열림은 불가능', '1) 차량 ZVR 신호가 없는 상태 (차량 주행상태) 에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함.', '해당출입문 ZVR 신호 수신', '1) 차량이 주행중이라면, 차량이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.392739+00', null, '로템40량(2018)-1단계', 'Rotem'), ('cdc846f4-784b-4f66-a951-7cd1c8339ac0', '0504', '504', 'DCU#7 2위(L1)-출입문 외부비상핸들 취급(EAD)', 'M4', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('cdca187f-f0df-4fc9-8d89-cfd68687cf06', '0516', '516', 'DCU#1 1위(R1) - 출입문 장애물로 인한 닫힘 실패', 'Tc1', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Close failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림 상태로 대기', '도어 닫힘 중 3회 장애물감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('cdcea37b-e9fe-4099-baf1-987aef0aae5e', '0036', '36', '주차제동 동작', 'Tc1', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('cdd0191d-91d5-45e8-beeb-0123f65c41c6', '0418', '418', 'SIV#8 - FC 1, 2 언밸런스 고장(FC12UB)', 'Tc2', 'C', 'SIV-FC1, 2 언밸런스 고장(FC12UB)', 'C', 'SIV', '보조전원장치(SIV)의 RS485 데이터 중 SIV-TCMS SD TEXT6의 Bit3 “FC12UB” 신호가 “1”이 되면 검지 +', '1) TCMS 화면하단 또는 고장화면에 ‘SIVFC1, 2 언밸런스 고장' 표시됨. +2) 보조전원장치(SIV)는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 보조전원장치(SIV) 중고장이 발생함. +5) 중고장이 발생되면 TCMS 일반화면에 보조전원장치(SIV) 상태 붉은색으로 표기되며, 연장급전 됨.', '보조전원장치(SIV) 내부 FC1, 2의 전압 차이가 500V 이상일 경우 검지됨. +', '1) 경고장이 발생할 경우 보조전원장치(SIV) 자동 재기동에 의해 재기동 됨. +2) 중고장이 발생했을 경우 조치 완료 후 보조전원장치(SIV) 리셋으로 고장 소거됨.', '1) 상기 고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 보조전원장치(SIV) 고장기록을 수집하여 FC전압에 이상이 있는지 확인한다. +3) 보조전원장치(SIV) 내부 고전압부에 소손흔적이 있는지 확인한다. +4) FC에 연결된 부스바의 체결상태가 양호한지 확인한고, 부스바를 분리하여 FC의 Capacitance를 측정하여 이상이 없는지 확인한다. +5) 인버터 내부 구성품의 상태 및 광케이블 상태, 결선상태를 확인한다. +6) 전압센서와 보조전원장치(SIV) 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +7) SEN 보드의 동작 상태를 시험기를 통해 확인한다. +8) 출력단 각상의 절연상태 및 각상과 접지 간의 절연상태를 확인한다. +9) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('cde00d01-0280-4235-9783-d6daf3d34d23', '0752', '752', 'HVAC#8 - 배기댐퍼 닫힘고장', 'Tc2', 'C', 'HVAC-배기댐퍼 닫힘고장', 'C', 'HVAC', '차량 배기댐퍼가 닫혀있는 상태에서 배기댐퍼 닫힘 리미트 스위치가 작동되지 않음 +', '배기댐퍼 닫힘 고장 현시', '배기댐퍼를 닫힘으로 제어했으나 닫힘 리미트 스위치 입력이 없을 경우 +', '배기댐퍼 닫힘 상태에서 리미트 스위치 입력이 정상적으로 입력', '1) 배기댐퍼가 닫힌 상태에서 닫힘 리미트 스위치가 정상적으로 작동되었는지 확인한다. +2) 닫힘 리미트 스위치가 정상작동 되었음에도 문제가 발생될 경우, 스위치를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('cdedf272-9931-4490-b675-b049233c9d98', '0145', '145', 'VVVF#3-과온검지2(THDH)', 'M2', 'C', 'VVVF-과온검지2(THDH)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT30의 Bit2 “THDH” 신호가 "1"이 되면 검지.', null, '인버터 내부 온도가 105 °C이상 도달 시 고장발생.', '95 °C 이하 도달 및 노치 OFF +(소거 이전까지 운전 불가)', '1) 상기고장이 간헐적으로 발생하는경우 아래와 같이 조치한다. +2) 상온에서 TCU(통합제어기)에 RS232케이블을 이용하여 노트북(제공품)과 연결 후 모니터링 프로그램으로 인버터의 온도값을 확인한다. +3) 인버터 유니트의 온도센서 배선 및 커넥터 체결상태를 확인한다. +4) 추진제어장치의 냉각부에 손상이 없는지 확인한다. +5) 추진제어장치 시험기를 이용하여 TCU(통합제어장치)의 이상여부를 확인한다. +6) 상기의 점검부분에 이상이 있을 경우 관련부품을 교체한다. +7) 동일 고장이 지속적으로 발생 시 INV 스택을 교체한다.', null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('cdf6933a-a4d4-4667-b91f-538cafc79a01', '0517', '517', 'DCU#1 4위(L2)-출입문 장애물로 인한 열림 실패', 'Tc1', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Open failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘상태로 대기', '도어 열림 중 3회 장애물 감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 열림 시, 장애물 감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ce1683f7-b46a-422f-aa96-11c85b7b3709', '0509', '509', 'DCU#4 6위(L3)-출입문 잠김 리미트 스위치 고장', 'T1', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 "DLS Failure” 신호가 "1"이 되면 검지.', '출입문 잠김 상태 확인 불가', '1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ce26f2a2-1404-4512-9b98-973d2f98bee5', '0730', '730', 'HVAC#7-냉난방장치1 토출 센서 고장', 'M4', 'C', 'HVAC-냉난방장치1 토출 센서 고장', 'C', 'HVAC', '냉난방장치1의 토출 센서 고장 발생', '냉난방장치1 토출센서 고장현시', '온도센서 검지범위는 -45~85도 (820~1330옴) 인데, 2초 이상 검지범위를 벗어나는 경우', '온도센서 검지 값이 2초 이상 허용온도 범위 내 일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820~1330옴 을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우, 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ce282397-878b-4cbf-950e-949f7a5888dc', '0516', '516', 'DCU#6 5위(R3) - 출입문 장애물로 인한 닫힘 실패', 'M3', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Close failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림 상태로 대기', '도어 닫힘 중 3회 장애물감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ce30793a-95c4-4442-ba65-9c67e005f327', '0739', '739', 'HVAC#3 - 전자접촉기 증발기2(CREF) 고장', 'M2', 'C', 'HVAC-전자접촉기 증발기2(CREF) 고장', 'C', 'HVAC', 'HVAC 냉방 작동 중 CREF2 전자접촉기 고장 발생 +', 'UNIT1 냉방 작동 불가', '냉방 작동 중 2.5초 이상 동안 CREF2 작동 feedback 신호가 수신되지 않는 경우 +', 'CREF2 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CREF2를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CREF2와 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ce36516e-625a-447a-bf8a-432824e6b9bf', '0226', '226', 'BECU#6 - 제동불완해검지(NRBD)', 'M3', 'B', 'BECU-제동불완해검지(NRBD)', 'B', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT8의 Bit2 “NRBD” 신호가 “1”이 되면 검지 +', '해당 차량 제동불완해 검지 현시 및 완해 취급하였음에도 불구하고 해당 차량 제동압력 (BCP)이 완해되지 않음.', '제동완해상태(정차제동포함)에서 해당 차량의 제동압력이 완전히 배기되지 않음. +', '제동완해상태(정차제동포함)에서 해당 차량의 제동압력이 완전히 배기됨.', '정차하여 강제완해 스위치를 취급하여 소거 여부 확인, 제동 완해상태 확인 후 주의 운전할 것, 2 ~ 3회 시도에도 완해불능 시 관제보고하고 지시에 따를 것', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ce39020d-1dde-488e-8585-b2e4669912d7', '0238', '238', 'BECU#1 - 4축 스키드신호', 'Tc1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ce64025f-504b-4e01-b3ad-8dbab7918b00', '0721', '721', 'HVAC#7 - 냉난방장치2 압력스위치2(DPS) 냉매부족', 'M4', 'C', 'HVAC-냉난방장치2 압력스위치2(DPS) 냉매부족', 'C', 'HVAC', '냉난방장치2 냉매 압력스위치2 저압 발생 +', 'UNIT2CYCLE2 냉방 기능 불가', 'UNIT2DSP2측 냉매압력이 30초 이상0.5±0.3(kgf/cm2) 이하로 떨어지는 경우 +', '냉매압력이 정상수치 2±0.5(kgf/cm2) 이상 유지하도록 하고, 마이콤전원을 리셋', '1) 배전반 점검 커버를 열고 마이콤 전원을 리셋한 후, 냉방 가동 시, CREF4의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)을 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설 여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안 되는 것을 확인한 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ce71741b-65f8-44d0-8a4e-06af7e277865', '0828', '828', '실내객실표시기(PIB) 고장(Car#3)', 'M2', 'C', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ce784ad4-c0ca-4d97-baf3-b36dd0103fe9', '0515', '515', 'DCU#3 1위(R1) - 출입문 열림 시간 초과', 'M2', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 “Open time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 열림 동작시간이 6초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도한 후, ‘장애물로 인한 열림 실패' 고장과 함께 ‘Open time out' 고장이 함께 현시 +', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ce7bb4cf-6b5c-4557-ad04-76a6db84d8fa', '0102', '102', 'VVVF#6-회생제동차단(BRK BLOCK)', 'M3', 'W', null, null, 'VVVF', null, null, null, null, null, null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ce7bd4f8-3e89-4b98-9d7e-73d023725286', '0508', '508', 'DCU#7 4위(L2) - 출입문 모터/인코더 고장', 'M4', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 “Motor / Encoder failure” 신호가 “1”이 되면 +검지 +', '출입문 정상동작 불가', ' +1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우(인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터/인코더 회로 가 손상된 경우 +', '모터/인코더 및 DCU가 정상 상태이고, 전기적 연결 상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있는지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. ※ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. ? DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. ? DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) ? DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ce81b0a6-226f-46b1-afa3-6aad3cd3e6d2', '0724', '724', 'HVAC#1 - 냉난방장치1 압력스위치1(DPS) 냉매부족', 'Tc1', 'C', 'HVAC-냉난방장치1 압력스위치1(DPS) 냉매부족', 'C', 'HVAC', '냉난방장치1 냉매 압력스위치1 저압 발생 +', 'UNIT1CYCLE1 냉방 기능 불가', 'UNIT1DSP1측 냉매압력이 30초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우 +', '냉매압력이 정상수치2±0.5(kgf/cm2) 이상 유지하도록 하고, 마이콤전원을 리셋', '1) 배전반 점검 커버를 열고 마이콤 전원을 리셋한 후, 냉방 가동 시, CREF2의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)을 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설 여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안 되는 것을 확인한 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ce9b022f-5162-48db-b0fb-c4199ca9ab34', '0518', '518', 'DCU#7 2위(L1) - 출입문 Enable 신호 에러', 'M4', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 “Enable signal error” 신호가 “1”이 되면 검지 +', 'DCU 출입문Enable신호에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드 시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을 때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드 시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입 상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호 장치로부터의 출입문 열림 명령 신호) 취급 시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함. +', '해당 출입문 enable 신호수신', '1) AUTO/MCS 모드 시에는 YARD 모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인 한다. (YARD/FMC 모드 시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ce9fba2b-4d03-4385-9635-627d191ab7c9', '0208', '208', 'BECU#5 - 공기제동장치 고장', 'T2', 'C', 'BECU-공기제동장치고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit7 “공기제동장치고장” 신호가 “1”이 되면 검지 +', '해당 차량 공기제동장치 고장검지 현시 및 해당 차량 정상적인제동제어불가', '해당 차량 BECU의 자가진단 시 고장 발생 또는 AC 압력센서 고장 +', '해당 차량 BECU의 자가진단 시 정상적일 경우 또는 AC 압력센서가 정상일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('cea6dd59-d629-441f-a3dc-c84d0a4c6933', '0225', '225', 'BECU#7-강제완해검지(CPRD)', 'M4', 'C', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('cea81119-342e-42b9-95a3-e15e3103f82f', '0504', '504', 'DCU#7 4위(L2) - 출입문 외부 비상핸들 취급(EAD)', 'M4', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('cec96959-dc6c-4521-b5a7-2d432ec0ec3f', '0203', '203', 'BECU#7 - 전자제어밸브의 고장', 'M4', 'C', 'BECU-전자제어밸브의 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit2 “전자제어밸브의 고장” 신호가 “1”이 +되면 검지 +', '해당 차량 전자제어밸브의 고장검지 현시 및 해당 차량 제동제어불가', '해당 차량의 상용전자제어밸브가 작동하지 않음. +', '해당 차량의 상용전자제어밸브가 정상작동 시 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ced514cc-5ec1-4277-951a-a100cb251241', '0520', '520', 'DCU#2 5위(R3)-이중계 절체 동작', 'M1', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 "Module switchover' 신호가 "1"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.392739+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ced70074-351e-4f0d-b166-f782e79495aa', '1208', '1208', 'FDU#1 - 감지기4 고장', 'Tc1', 'C', 'FDU-감지기4 고장 (Car1~8)', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 “Detector1 State” 신호가 “10”이 되면 검지 +', '감지기고장상태현시(자동소거 안 됨)', ' +1) 감지기로부터 데이터 응답이 없는 경우 +2) 감지기로부터 수신된 데이터의 CRC가 맞지 않는 경우 +3) 감지기로부터 수신된 데이터의 ID가 송신 ID와 일치하지 않는 경우 +', 'FDU 전원 리셋 후 감지기로부터 정상적으로 데이터가 수신된 경우', '1) FDU 전원 리셋 후 고장 소거 여부 확인 +2) 정상동작중인 감지기와 위치 교환 후 FDU 전원 리셋 및 고장 상태 확인 +3) 동일한 감지기에서 고장 발생 시 감지기 교체 +4) 동일한 위치에서 고장 발생 시 감지기 라인 점검', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('cee6047d-beec-4ba6-b21b-c6bdbb0b2ee6', '0832', '832', '출력증폭기#2(AMP) 고장(Car#3)', 'M2', 'C', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('cf16480d-8b5c-4891-8343-ac6810c0f1f2', '0220', '220', 'BECU#4 - 공기제동 감쇄지령 비정상', 'T1', 'C', 'BECU-공기제동 감쇄지령 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit3 “공기제동 감쇄지령 비정상” 신호가 “1”이 되면 검지 +', '해당 차량 공기제동감쇄지령 비정상 검지 현시 및 해당 차량 정상적인전공교차제어 불가 (부수차량 공기제동 감쇄 불가)', '해당 차량의 공기제동감쇄지령 신호가 정상범위를 벗어남. (5.0 ~ 95.0%) +', '해당 차량의 공기제동감쇄지령 신호가 정상범위일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 소거되지 않을 경우 해당 차량 옆의 Pair 차량(구동차) BECU를 리셋(CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('cf16da5a-bd09-4a13-aa4d-813f0eb8f2c3', '0505', '505', 'DCU#2 1위(R1)-출입문 입력 고전압', 'M1', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 "1"이 되면 검지.', '고전압 상태. (그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('cf1d7177-2696-47ca-b8a8-f6eff85cb114', '0022', '22', '단부출입문 고장(Car3)', 'M2', 'C', '단부출입문고장(CAR3)', 'C', 'DCU', '차량이 단부 통로문으로부터 END DOOR FAULT 신호를 검지.', '출입문 정상동작 불가', '1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우 (인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +4) DCU 내부의 모터 / 인코더 회로가 손상된 경우', '모터/인코더 및 DCU가 정상상태이고, 전기적 연결상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있느지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. +★ 고장 조치 완료 후, 반드시 DCU의 reset 버튼을 누르거나 전원을 OFF/ON 하여 시스템을 재가동 해야 한다.', null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('cf20463e-d96d-459d-a78f-6f162efe2072', '0216', '216', 'BECU#4-전두대차 AS압력센서고장', 'T1', 'C', 'BECU-전두대차 AS압력센서 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit7 “전두대차 AS압력센서 고장” 신호가 "1"이 되면 검지.', '해당 차량 전두대차 AS압력센서 고장 검지 현시 및 해당차량 정상적인 응하중 제동제어 불가.', '해당 차량의 전두대차 AS 압력센서(AS1, AS2) 고장.', '해당 차량의 전두대차 AS 압력센서(AS1, AS2)가 정상일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('cf35d931-e3b0-4b78-a7dc-910f5b3d4451', '0101', '101', 'VVVF#6 - 인버터 중고장(INV CUT)', 'M3', 'A', 'VVVF-인버터중고장(INV CUT)', 'A', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT1의 Bit4 “INV CUT” 신호가 “1”이 되면 검지 +', '1) TCMS 일반화면에 추진제어장치 상태 붉은색으로 표시됨. +2) 추진제어장치 중고장 상태인 동력차에 동력 손실됨. +3) TCMS 상태화면의 추진제어장치 화면에 HSCB, LB1, 2 개방된 것으로 표시됨.', ' +1) 추진제어장치의 경고장이 1분에 3회 이상누적 또는 지속적으로 검지되어 중고장 발생함. +2) 장치에 중대한 소손 가능성이 있는 고장에 대해서는 1번 발생으로 중고장 발생함. +', '동력차일반 배전반의 VVVFICNFB 재투입 또는 차량 배터리 전원 재투입', '1) 소거조건 내용과 같이 조치 후 중고장 소거됨을 확인함. +2) TCMS 고장데이터 또는 추진제어장치 고장 데이터를 통해 중고장이 발생한 고장 내역 수집함. +3) 수집된 고장내역에 따라 조치 실시함.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('cf57a4cd-cee1-41d5-a5d0-05c403b5829a', '0701', '701', 'HVAC#5 - 냉난방장치2 압축기2 과부하', 'T2', 'C', 'HVAC-냉난방장치2 압축기2 과부하', 'C', 'HVAC', 'HVAC 냉방 작동 중 냉난방장치2 압축기2 또는 응축기2 모터에 과부하 발생 +', '냉방 기능 저하(전냉방 시 반냉방으로 작동)', ' +1) 냉방 작동 중 UNIT2의 압축기2 또는 응축기2 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRCM4와 연결된 THR4가 Trip 됨. +', 'UNIT2의 압축기2 또는 응축기2 모터의 과부하조건을 해소하여 정상 가능 상태로 만들고, THR4 및 마이콤 전원 리셋', '1) 냉난방 배전반의 점검커버를 열고, THR4의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR4의 전류 세팅값이 11.5A에 맞춰져 있는지 확인하여, 아닐 경우, (+) 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동시킨 후, THR4의 2차측 2, 4, 6 단자에서 각 단자 간 상간 전압이 AC 380V로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 압축기 및 응축기 단품 상태에서 점검을 한다. +7) THR4의 2차측 2, 4, 6 단자에서 각 단자 간 권선저항이 모두 같은지 확인한다. (±10% 이하) (압축기2 및 응축기2 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT2의 압축기2 또는 응축기2 모터의 결선을 해제한 후 각 부품의 권선저항을 확인 후, 문제가 있는 부품을 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR4 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('cf76643e-9f6a-4f40-bb25-0af6176046a4', '0744', '744', 'HVAC#2-전자접촉기 보조히터1(AHEK) 고장', 'M1', 'C', 'HVAC-전자접촉기 보조히터1(AHEK) 고장', 'C', 'HVAC', 'HVAC 보조난방기 작동 중 AHEK1 전자접촉기 고장 발생.', 'UNIT1 보조난방기 전난방 시 반난방만 작동', '보조난방기 작동 중 2.5초 이상동안 AHEK1 작동 feedback 신호가 수신되지 않는 경우', 'AHEK1 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) AHEK1을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, AHEK1과 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('cf7c74d4-e8c0-4041-892f-4ac2aa0b5329', '0506', '506', 'DCU#3 5위(R3) - 출입문 입력 저전압', 'M2', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 “1”이 되면 검지 +', '저전압상태(출입문 동작이 심하게 느려지거나 작동조차 안 될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하 +', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('cf7c7696-5300-49a8-a3df-7a07ad3b1aa6', '0521', '521', 'DCU#1 3위(R2)-모듈 상태 이상', 'Tc1', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 "01"또는 "00"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('cf8f2c20-ca35-41be-8d76-d3c1307fb64e', '0724', '724', 'HVAC#6-냉난방장치1 압력스위치1(DPS) 냉매부족', 'M3', 'C', 'HVAC-냉난방장치1 압력스위치1(DPS) 냉매부족', 'C', 'HVAC', '냉난방장치1 냉매 압력스위치1 저압 발생.', 'UNIT1 CYCLE1 냉방 기능 불가', 'UNIT1 DSP1측 냉매 압력이 30초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우', '냉매 압력이 정상 수치 2±0.5(kgf/cm2 이상 유지하도록 하고, 마이콤 전원을 리셋', '1) 배전반 점검 커버를 열고 마이콤 전원을 리셋한 후, 냉방 가동 시, CREF2의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)을 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안되는 것을 확인한 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('cf96eb54-e96c-41c8-ab68-ffd2dd4919d8', '0131', '131', 'VVVF-IPM V상 이상검지(GDFV) (Car7)', 'M4', 'C', 'VVVF-IPM V상 이상검지(GDFV)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT34의 Bit5 “GDFV” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 'IPM V상 이상검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치 내부 IPM에 과전류, 과온이 검지될경우.', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반배전반의 VVVFIC nfb 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 견인전동기로 출력되는 3상의 전류치 확인함. +3) 특정상의 전류치가 비정상적일 경우 특정상에 해당되는 IPM, 전류센서, 모터결선을 확인한다. +4) 전류센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작상태를 시험기를 통해 확인한다. +6) IPM 전원공급기의 전원연결상태 또는 광케이블의 연결상태와 배선상태를 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.71571+00', null, '다대48량(2015)', 'Rotem'), ('cfa36388-c9eb-4700-b0bb-c469b9bf6d50', '0311', '311', 'ATC#1 - 50cm 이내 과주정차', 'Tc1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('cfbf8385-a6f3-4e2b-93fa-1280caae7f68', '1210', '1210', 'FDU#7 - 메모리 고장', 'M4', 'C', 'FDU-메모리 고장', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT5의 Bit6 “Memory Fault” 신호가 “1”이 되면 검지 +', '1) Memory Fault 현시 +2) FDU의 이벤트 기록 및 읽기 동작 안 됨. +3) FDU 환경설정 정보 로딩 실패(차량 번호, 주차시간, 절전시간 등의 설정값을 기본값으로 로딩)', '메모리 연결 포트의 이상 혹은 배드섹터 발생(메모리 접근 및 읽기, 쓰기가 실패한 경우) +', '메모리의 접근 및 읽기, 쓰기 성공', '1) FDU의 전원을 리셋하여 소거여부 확인 +2) 문제가 지속될 경우, 수신기 교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('cfcc7cff-e20d-4dc8-9e45-5db3f942da8a', '0508', '508', 'DCU#6 4위(L2)-출입문 모터/인코더 고장', 'M3', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 "Motor / Encoder failure” 신호가 "1"이 되면 검지.', '출입문 정상동작 불가', '1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우 (인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터 / 인코더 회로가 손상된 경우', '모터/인코더 및 DCU가 정상상태이고, 전기적 연결상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있느지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. +★ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. + +1. DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. +2. DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) +3. DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('cfdc4d07-27c9-487c-a0fb-04a4aedf0b3f', '0330', '330', 'ATC#8-', 'Tc2', '0', null, null, '0', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('cfe45485-cbb2-418f-86d2-efcfbb7d1196', '0734', '734', 'HVAC#2 - 전자접촉기 압축기(CRCM)3 고장', 'M1', 'C', 'HVAC-전자접촉기 압축기(CRCM)3 고장', 'C', 'HVAC', 'HVAC 냉방 작동 중 CRCM3 전자접촉기 고장 발생 +', '냉방 기능 저하(전냉방 시 반냉방으로 작동)', '냉방 작동 중 2.5초 이상 동안 CRCM3 작동 feedback 신호가 수신되지 않는 경우 +', 'CRCM3 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CRCM3을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRCM3과 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('cfe687ba-cc99-42af-8135-47bc39e7f9ff', '0521', '521', 'DCU#8 5위(R3) - 모듈 상태 이상', 'Tc2', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 “01” 또는 “00”이 되면 +검지 +', '이중계절체동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러)이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('cfeee468-9742-4977-8699-f29aefabe084', '0502', '502', 'DCU#2 6위(L3)-출입문 장애물검지', 'M1', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('cffa6c4e-e436-4411-9dc3-1b628da569f6', '0519', '519', 'DCU#1 3위(R2)-ZVR 신호 에러', 'Tc1', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 "ZVR signal error” 신호가 "1"이 되면 검지.', '출입문이 강제로 닫히게 되고, 열림은 불가능', '1) 차량 ZVR 신호가 없는 상태 (차량 주행상태) 에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함.', '해당출입문 ZVR 신호 수신', '1) 차량이 주행중이라면, 차량이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.392739+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d00c156f-8d81-4688-b718-2971a9afac05', '0517', '517', 'DCU#8 1위(R1) - 출입문 장애물로 인한 열림 실패', 'Tc2', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Open failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘 상태로 대기', '도어열림 중 3회 장애물감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 열림 시, 장애물감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d0160a10-e9c1-4fea-957b-f1e0123ad651', '0520', '520', 'DCU#7 6위(L3) - 이중계 절체 동작', 'M4', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 “Module switchover” 신호가 “1”이 되면 검지 +', '이중계 절체 동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러) 이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A'모듈 및 ‘B'모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d026af80-25fc-40ab-978a-6d5a9d882960', '0120', '120', 'VVVF-가선저전압검지(VLLVD) (Car2)', 'M1', 'C', 'VVVF-가선저전압검지(VLLVD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT32의 Bit7 “VLLVD” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 '가선 저전압검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치 입력되는 가선전압이 850V 이상일 경우 검지됨.', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반배전반의 VVVFIC nfb 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 가선전압에 이상이 있는지 확인한다. +3) LB Box 내부 고전압부에 소손흔적이 있는지 확인한다. +4) FC에 연결된 버스바의 체결상태가 양호한지 확인한고, 버스바를 분리하여 FC의 Capacitance를 측정하여 이상이 없는지 확인한다. +5) 전압센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +6) SEN 보드의 동작상태를 시험기를 통해 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.578803+00', null, '다대48량(2015)', 'Rotem'), ('d0279437-ed57-43b3-86b2-8066878e63d0', '0102', '102', 'VVVF#3-회생제동차단(BRK BLOCK)', 'M2', 'W', null, null, 'VVVF', null, null, null, null, null, null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d03702c2-a77a-4588-b7c2-3cf6ed7fc618', '0420', '420', 'SIV#1-인버터2 입력 과전류(INV2OC)', 'Tc1', 'C', 'SIV-인버터2 입력 과전류(INV2OC)', 'C', 'SIV', '보조전원장치(SIV)의 RS485 데이터 중 SIV-TCMS SD TEXT6의 Bit5 “INV2OC” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 '인버터2 입력 과전류' 표시됨. +2) 보조전원장치(SIV)는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 보조전원장치 중고장이 발생됨. +5) 중고장이 발생되면 TCMS 일반화면에 보조전원장치 상태 붉을색으로 표기되며, 연장급전 됨.', '보조전원장치(SIV) 내부 인버터 2에서의 전류가 450A 이상일 경우 검지됨.', '1) 경고장이 발생할 경우 보조전원장치(SIV) 자동 재기동에 의해 재기동 됨. +2) 중고장이 발생했을 경우 조치 완료 후 보조전원장치(SIV) 리셋으로 고장 소거됨.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 보조전원장치(SIV) 고장기록을 수집하여 FC전압, 전류에 이상이 있는지 확인한다. +3) 보조전원장치(SIV) 내부 고전압부에 소손흔적이 있는지 확인한다. +4) FC에 연결된 버스바의 체결상태가 양호한지 확인한고, 버스바를 분리하여 FC의 Capacitance를 측정하여 이상이 없는지 확인한다. +5) 전압센서와 보조전원장치(SIV) 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +6) SEN 보드의 동작상태를 시험기를 통해 확인한다. +7) 출력단 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d04cbe24-45e1-4a5f-b4b8-c87a38aa78b6', '0135', '135', 'MDS 서비스위치 아님(Car2)', 'M1', 'W', null, null, 'VVVF', null, null, null, null, null, null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d0501a78-6d70-4a33-89d2-ed7868a0aec1', '1750', '1750', 'EVR#1 통신고장', 'Tc1', 'C', 'EVR#1 통신고장', 'C', 'EVR', 'TCMS와 EVR이 E-NET 통신이 되지 않을 때 경고 +', 'TCMS의 DU화면에 통신고장표시, LINK 및 RTXLED의 소등, EMPU 전면의 ERR LED가 붉은색으로 점등', 'TCMS와의 통신연결이 끊어진 경우(케이블 미연결, EMPU 오동작, 전원 이상) +', 'TCMS와의 통신연결', '통신케이블 연결 상태 확인 후 EMPU 전면 Reset 버튼을 눌러 재기동', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d053a38a-717b-4622-80cf-8174208cc757', '0419', '419', 'SIV#8-시퀀스 고장(SQCFLT)', 'Tc2', 'C', 'SIV-시퀀스 고장(SQCFLT)', 'C', 'SIV', '보조전원장치(SIV)의 RS485데이터 중 SIV-TCMS SD TEXT6의 Bit4 "SQCFLT"신호가 "1"이 되면 검지.', '1) 보조전원장치(SIV) 일반화면에 보조전원장치 상태 붉은색으로 표시됨. +2) 보조전원장치(SIV)는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 보조전원장치(SIV) 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 보조전원장치(SIV) 상태 붉을색으로 표기되며, 연장급전 됨.', '1) 보조전원장치(SIV)에 고압인가 후 60초 이내 출력전압 공급 불가 시. +2) 기동 중 컨텍터(CHK, LK, SIVK), FC, 릴레이, 전압센서등 보조전원장치 내부 부품 불량발생 시 +3) DIO, SEN 보드 불량 또는 결선라인 이상 발생 시', '1) 경고장이 발생할 경우 보조전원장치(SIV) 자동 재기동에 의해 재기동 됨. +2) 중고장이 발생했을 경우 조치 완료 후 보조전원장치(SIV) 리셋으로 고장 소거됨.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 보조전원장치(SIV) 고장기록을 수집하여 동작과정 중 이상이 있는지 확인한다. +3) 보조전원장치(SIV) 내부 구성품의 상태 및 광케이블 상태, 결선상태, 릴레이 상태를 확인한다. +4) 전압(입력단, FC단)센서 상태확인 및 보조전원장치(SIV) 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) 컨텍터의 주접점, 보조접점의 상태확인 및 보조전원장치(SIV) 제어기 DIO 보드에 연결되는 저전압 배선상태를 확인한다. +6) 충전저항 및 방전저항의 상태를 확인한다. +7) DIO, SEN 보드의 동작상태를 시험기를 통해 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d05cf0db-1414-4816-993a-9770312c57e5', '0128', '128', 'VVVF-IPM Z상 이상검지(GDFZ) (Car3)', 'M2', 'C', 'VVVF-IPM Z상 이상검지(GDFZ)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT34의 Bit2 “GDFZ” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 'IPM Z상 이상검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치 내부 IPM에 과전류, 과온이 검지될경우.', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반배전반의 VVVFIC nfb 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 견인전동기로 출력되는 3상의 전류치 확인함. +3) 특정상의 전류치가 비정상적일 경우 특정상에 해당되는 IPM, 전류센서, 모터결선을 확인한다. +4) 전류센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작상태를 시험기를 통해 확인한다. +6) IPM 전원공급기의 전원연결상태 또는 광케이블의 연결상태와 배선상태를 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.656536+00', null, '다대48량(2015)', 'Rotem'), ('d0601a83-44c1-446b-aca8-b992b7ce0d86', '1009', '1009', 'CMSB#1-', 'Tc1', '0', null, null, '0', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d068f103-1bb1-433d-8112-36bd7a20ec16', '0843', '843', '출력증폭기#1(AMP) 고장(Car#4)', 'T1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d069a303-514c-492e-acd1-c3564d392fc1', '1007', '1007', 'CMSB#1-CM 기동불가', 'Tc1', 'C', null, null, 'CMSB', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d06ac843-4aa9-41ee-8e9c-8cad1d74527f', '0237', '237', '보안제동코크 차단(Car1)', 'Tc1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d07421e0-2c93-45b3-9313-ceb8fed4c441', '1409', '1409', 'BMS#1-방전과전류(OCD, 방전220A이상)', 'Tc1', 'D', 'BMS-방전과전류(OCD)', 'D', 'BMS', '해당차량의 방전 전류가 180A이상이 되면 검지', '차량 배터리 방전과전류 검지 후, 220A 이상이면 방전 접촉기(DCK)가 차단된다.', '배터리 방전과전류 (180A 이상).', '배터리 방전 전류 정상범위로 회복 (0~150A)', '1) 배터리 NFB 상태 확인 +2) 이상이 없으면 차량 전체를 리셋한다. +3) 차량 리셋 후에도 동일고장이면 사령실과 연락하여 조치를 취한다 (외부 충전기 연결 또는 차량 지원)', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d07c2f62-7235-462f-a205-b1015682b7f2', '0503', '503', 'DCU#7 3위(R2)-출입문 내부비상핸들 취급(EED)', 'M4', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d07ef427-68e5-4a74-baff-bf60aa5cdb38', '0512', '512', 'DCU#6 4위(L2) - 파라미터 로딩 실패', 'M3', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 “Paraneter error” 신호가 “1”이 되면 검지 +', 'Parametererror 현시(출입문은 정상작동 가능)', 'DCU 자체 내의 EEPROM으로부터 parameter데이터 로딩 실패 +', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d08e6ca2-f461-4fc0-8f8d-355754262553', '0715', '715', 'HVAC#8-냉난방장치1 압력스위치1(DPS) 저압', 'Tc2', 'D', 'HVAC-냉난방장치1 압력스위치1(DPS) 저압', 'D', 'HVAC', '냉난방장치1 냉매 압력스위치1 저압 발생.', 'UNIT1 CYCLE1 냉방 기능 불가', 'UNIT1 DSP1측 냉매 압력이 3초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우', '냉매 압력이 정상 수치 2±0.5(kgf/cm2 이상으로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CREF2의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)을 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안되는 것을 확인한 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d0926b84-0f4a-4aeb-b7e9-c5ac3af6ee8b', '0170', '170', 'VVVF#7-보호동작 설정치 이상검지(SETERR)', 'M4', 'C', 'VVVF-보호설정치 이상(SETERR)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT33의 Bit3 “SETERR” 신호가 "1"이 되면 검지.', null, '제어기 내부 보호동작 기준 설정값에 이상이 있을 때 고장검지', '동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) PUZ 보드 전면의 SELECT 스위치와 DATA스위치가 모두 0임을 확인한다. +2) TCU(통합제어장치) 및 PWM 보드를 분리하고 추진제어장치 시험기를 이용하여 제어기 시험을 실시하여 이상여부를 확인한다. +3) 추진장치 시험기 결과를 확인하여 이상이 있을 경우 교체한다.', null, '3', '2025-10-12 01:21:37.578803+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d0972519-4467-4556-8a4f-7eb96a46ccf5', '0508', '508', 'DCU#4 1위(R1)-출입문 모터/인코더 고장', 'T1', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 "Motor / Encoder failure” 신호가 "1"이 되면 검지.', '출입문 정상동작 불가', '1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우 (인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터 / 인코더 회로가 손상된 경우', '모터/인코더 및 DCU가 정상상태이고, 전기적 연결상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있느지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. +★ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. + +1. DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. +2. DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) +3. DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d09a8257-3661-4f1c-8442-5f4039e70542', '0502', '502', 'DCU#8 4위(L2)-출입문 장애물검지', 'Tc2', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d09d017b-75a4-4f85-a31b-e765b0e29d23', '0209', '209', 'BECU#7-4축속도신호의 비정상', 'M4', 'C', 'BECU-4축속도신호의 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit0 “4축속도신호의 비정상” 신호가 "1"이 되면 검지.', '해당 차량 4축속도신호의 비정상 검지 현시 및 해당 차량 활주제어 불가.', '해당 차량의 4축 속도센서 고장 발생.', '해당 차량의 4축 속도센서가 정상적일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d0a27322-ec16-4017-93e3-4bff92c5be62', '1002', '1002', 'CMSB#1-방열판 과온', 'Tc1', 'C', 'CMSB-방열판 과온', 'C', 'CMSB', 'CMSB의 RS485 데이터 중 CMSB-TCMS SD TEXT3의 Bit3 “방열판 과온” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 'CM출력과부하' 표시됨. +2) 바이패스 모드로 전환되고, CM 기동 시 '바이패스 기동'으로 표시됨.', '1) CMSB 내부 방열판 온도가 85 ±5℃일 경우 검지됨.', '1) 차량 전원 OFF +2) CMSB 내부의 표시기패널 RESET 버튼 누름.', '0) 정상운행 후, 검수고에 입고하여 아래와 같이 조치한다. +1) 상기고장은 고장 소거 후, 재현시험을 진행하여 지속적으로 발생될 경우 아래와 같이 조치한다. +2) 방열판 온도 측정 +3) 방열판에 부착되어 있는 온도스위치을 점검한다. +4) 온도스위치와 CMSB 제어기 간 연결된 케이블 접촉상태를 확인한다.', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d0a80cfa-c767-4fab-ab6b-8e7bdbc376c9', '0201', '201', 'BECU#7-덤프밸브고장(후미대차)', 'M4', 'C', 'BECU-덤프밸브고장(후미대차)', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit0 “덤프밸브고장(후미대차)” 신호가 "1"이 되면 검지.', '해당 차량 덤프밸브고장(후미대차) 검지 현시 및 해당 차량 활주제어 불가.', '해당 차량 후미대차의 덤프밸브가 작동하지 않음.', '해당 차량 후미대차의 덤프밸브가 정상 작동 시 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d0b04383-2825-40f7-883b-1310ae6ffbae', '1207', '1207', 'FDU#5-감지기4 화재감지', 'T2', 'W', 'FDU-감지기4 화재감지', 'W', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 "Detector1 State” 신호가 "11"이 되면 검지.', '화재상태 현시(자동 소거 안됨)', '하기 2가지 조건을 모두 만족하여야 화재신호가 출력 됨(연동모드 동작). +1) 이웃한(앞 혹은 뒤에 위치한) 감지기 중 하나의 감지기라도 주의 혹은 화재상태에 있어야 함. +2) Detector1(해당 감지기)에서 측정된 연기농도가 15% 이상이거나 온도가 65℃ 이상인 경우', '1) FDU의 복귀버튼 조작시 +2) FDU 전원 리셋시', '1) 해당 감지기 위치의 화재 발생 여부 확인 +2) 화재 오 감지일경우 FDU의 복귀버튼 취급 +3) 오감지일경우 감지기의 청소주기 확인(내부 먼지 제거)', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d0fe86a5-95ca-4b91-9cca-1e4ed04bfbdd', '0500', '500', 'DCU#4 4위(L2) 통신고장', 'T1', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS 간 RS485 통신고장이 검지되면 발생 +', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐상태 등의 변화가 없음.', ' +1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우 +', '해당 차량의 DCU 및 CU/TU의 전원이 정상상태이고, 통신 라인 연결 상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜져 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적 으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는 데도 지속적으로 통신고장이 검지되면, DCU의 X2, X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상 체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d0ffae30-43f5-44e6-a99c-177d39d2b9dd', '0520', '520', 'DCU#1 4위(L2) - 이중계 절체 동작', 'Tc1', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 “Module switchover” 신호가 “1”이 되면 검지 +', '이중계 절체 동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러) 이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A'모듈 및 ‘B'모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d12c0e45-e9d5-4aaa-a797-9bf657e100f6', '0854', '854', '비상인터폰#2(PEI) 고장(Car#5)', 'T2', 'C', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d14ae036-b3df-48ef-8892-42ba0c4015a2', '0516', '516', 'DCU#7 1위(R1) - 출입문 장애물로 인한 닫힘 실패', 'M4', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Close failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림 상태로 대기', '도어 닫힘 중 3회 장애물감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d14b77e7-477f-4660-98db-af4e1ea36ce8', '0175', '175', 'VVVF#2 - HSCB 투입불량(HBNC)', 'M1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d14dd095-e4f4-4716-b565-faa43488eee2', '0069', '69', 'MAIN FUSE#2 DISCONNECTED(Car6)', 'M3', 'W', 'MAIN FUSE#2 DISCONNECTED(Car6)', 'W', '기타', '차량으로부터 AUX FUSE DISCONNECTED 신호 입력 시 +', 'VVVF 고압 차단으로 추진 불능', '해당 퓨즈 소손 +', '해당 퓨즈 교체 +회로 도면 : REC20210DX0', null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d1513cb2-d391-4a20-a8a8-64b16f1a1d06', '0505', '505', 'DCU#5 4위(L2)-출입문 입력 고전압', 'T2', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 "1"이 되면 검지.', '고전압 상태. (그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d1559890-f3fc-4abc-8d5a-faa8494c6b64', '0738', '738', 'HVAC#3-전자접촉기 증발기3(CREF) 고장', 'M2', 'C', 'HVAC-전자접촉기 증발기3(CREF) 고장', 'C', 'HVAC', 'HVAC 냉방작동 중 CREF3 전자접촉기 고장 발생.', 'UNIT2 냉방 작동 불가', '냉방작동 중 2.5초 이상동안 CREF3 작동 feedback 신호가 수신되지 않는 경우', 'CREF3 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CREF3을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CREF3과 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d158787d-60c4-4823-b2dd-bd39fe40504f', '0512', '512', 'DCU#5 1위(R1) - 파라미터 로딩 실패', 'T2', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 “Paraneter error” 신호가 “1”이 되면 검지 +', 'Parametererror 현시(출입문은 정상작동 가능)', 'DCU 자체 내의 EEPROM으로부터 parameter데이터 로딩 실패 +', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d180da84-cb19-4b90-915d-578302f3eb13', '0143', '143', 'VVVF#7-주회로 접지검지(LGD)', 'M4', 'B', 'VVVF-주 회로 접지검지(LGD)', 'B', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT30의 Bit0 “LGD” 신호가 "1"이 되면 검지.', null, '가선전압이 15ms이내에 300V이상 감압 시 고장검지.', '제동 OFF.', '1) 상기고장이 간헐적으로 발생하는 경우 아래와 같이 조치한다. +2) 주 회로 차단기함 내부의 고압회로에 소손이 없는지 확인하고 소손품은 교체한다. +3) 주 회로 차단기함 내부에 설치된 가선전압 측정용 전압센서의 외관에 손상이 있는지 확인한다. +4) 전압센서의 고압 / 저압 단자대의 체결상태 확인. +5) 인버터 함 내부의 고압회로에 소손 또는 단락이 있는지 확인한다. +6) IGBT의 소손여부를 확인한다. +7) 추진제어장치 시험기를 이용하여 TCU(통합제어장치) 및 PWM보드의 이상 여부를 확인한다. +8) 상기의 점검부분에 이상이 있을 경우 관련부품을 교체한다.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d1825612-c475-4e8c-879c-79343a6f7495', '0222', '222', 'BECU#2-공기스프링누설(후미대차)', 'M1', 'C', 'BECU-공기스프링누설(후미대차)', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit5 “공기스프링누설(후미대차)” 신호가 "1"이 되면 검지.', '해당 차량 공기스프링누설(후미대차) 검지 현시 및 해당차량 정상적인 제동제어 불가.(응하중 제어)', '해당 차량 후미대차의 공기스프링(AS3, AS4) 압력이 정상범위를 벗어남.(100kPa 미만)', '해당 차량 후미대차의 공기스프링(AS3, AS4) 압력이 정상범위일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d18770df-147e-46c8-a556-b01f746e0ffe', '0733', '733', 'HVAC#2 - 전자접촉기 압축기(CRCM)4 고장', 'M1', 'C', 'HVAC-전자접촉기 압축기(CRCM)4 고장', 'C', 'HVAC', 'HVAC 냉방 작동 중 CRCM4 전자접촉기 고장 발생 +', '냉방 기능 저하(전냉방 시 반냉방으로 작동)', '냉방 작동 중 2.5초 이상 동안 CRCM4 작동 feedback 신호가 수신되지 않는 경우 +', 'CRCM4 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CRCM4를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRCM4와 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d1888e62-8189-4a7b-ab73-2ec0824ae034', '0508', '508', 'DCU#1 2위(L1) - 출입문 모터/인코더 고장', 'Tc1', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 “Motor / Encoder failure” 신호가 “1”이 되면 +검지 +', '출입문 정상동작 불가', ' +1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우(인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터/인코더 회로 가 손상된 경우 +', '모터/인코더 및 DCU가 정상 상태이고, 전기적 연결 상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있는지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. ※ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. ? DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. ? DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) ? DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d18b2e63-5299-43e8-af76-55d3d6f2dc73', '0172', '172', 'VVVF#2-접지검지(GRD)', 'M1', 'C', 'VVVF-접지검지(GRD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT33의 Bit5 “GRD” 신호가 "1"이 되면 검지.', null, '주 회로의 전류가 누설되었을 경우 고장 검지.', '동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) 인버터 유니트 내 IGBT의 소손 여부를 확인한다. +2) 고압에 의한 주 회로 소손 흔적을 확인한다. +3) 주회로 차단기함 내부의 고압회로에 소손이 없는지 확인한다. +4) GCT 외관 및 커넥터 체결상태 상태 점검. +5) 추진제어장치 시험기를 이용하여 TCU(통합 제어장치)의 이상여부를 확인한다. +6) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d19e8927-0d1f-4d71-a3c9-bd0f28f8bfc6', '1704', '1704', '노선안내표시기#4 고장(Car3)', 'M2', 'C', '노선안내표시기#2 고장', 'C', 'PIC', 'PIC 장치의 노선안내표시기#2이 고장이 났을 때 발생 +', '1) 노선안내표시기 화면 미현시 +2) 노선안내표시기 안내 화면 오현시', '통신고장 +', '통신 재개 시', '1) 이더넷 스위치 링크 확인 +2) 이더넷 케이블 점검 +3) 제어보드 및 전원보드 교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d19f3269-1814-4fd6-99fe-659fc4f50808', '0511', '511', 'DCU#1 2위(L1)-출입문 닫힘 리미트 스위치2 고장', 'Tc1', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 "DCS2 Failure(Right)” 신호가 "1"이 되면 검지.', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d1aaaa7f-f4ab-4d87-b632-f9de6efce828', '0406', '406', 'SIV#8-인버터1 입력 과전류(INV1OC)', 'Tc2', 'C', 'SIV-인버터1 입력 과전류(INV1OC)', 'C', 'SIV', '보조전원장치(SIV)의 RS485 데이터 중 SIV-TCMS SD TEXT4의 Bit4 “INV1OC” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 '인버터1 입력 과전류' 표시됨. +2) 보조전원장치(SIV)는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 보조전원장치 중고장이 발생됨. +5) 중고장이 발생되면 TCMS 일반화면에 보조전원장치 상태 붉을색으로 표기되며, 연장급전 됨.', '보조전원장치(SIV) 내부 인버터 1에서의 전류가 450A 이상일 경우 검지됨.', '1) 경고장이 발생할 경우 보조전원장치(SIV) 자동 재기동에 의해 재기동 됨. +2) 중고장이 발생했을 경우 조치 완료 후 보조전원장치(SIV) 리셋으로 고장 소거됨.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 보조전원장치(SIV) 고장기록을 수집하여 FC전압, 전류에 이상이 있는지 확인한다. +3) 보조전원장치(SIV) 내부 고전압부에 소손흔적이 있는지 확인한다. +4) FC에 연결된 버스바의 체결상태가 양호한지 확인한고, 버스바를 분리하여 FC의 Capacitance를 측정하여 이상이 없는지 확인한다. +5) 전압센서와 보조전원장치(SIV) 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +6) SEN 보드의 동작상태를 시험기를 통해 확인한다. +7) 출력단 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d1b6c15d-8025-4908-a33c-e362fecc0981', '0724', '724', 'HVAC#1-냉난방장치1 압력스위치1(DPS) 냉매부족', 'Tc1', 'C', 'HVAC-냉난방장치1 압력스위치1(DPS) 냉매부족', 'C', 'HVAC', '냉난방장치1 냉매 압력스위치1 저압 발생.', 'UNIT1 CYCLE1 냉방 기능 불가', 'UNIT1 DSP1측 냉매 압력이 30초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우', '냉매 압력이 정상 수치 2±0.5(kgf/cm2 이상 유지하도록 하고, 마이콤 전원을 리셋', '1) 배전반 점검 커버를 열고 마이콤 전원을 리셋한 후, 냉방 가동 시, CREF2의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)을 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안되는 것을 확인한 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d1b7ffda-5fe0-44b4-8915-9138169ad541', '0510', '510', 'DCU#4 6위(L3)-출입문 닫힘 리미트 스위치1 고장', 'T1', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 "DCS1 Failure(Leftt)” 신호가 "1"이 되면 검지.', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d1ea218f-59a2-46d4-8b3a-0fcaa68a22f8', '0500', '500', 'DCU#2 3위(R2) 통신고장', 'M1', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS간 RS485 통신고장이 검지되면 발생.', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐 상태 등의 변화가 없음.', '1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우', '해당차량의 DCU 및 CU/TU 의 전원이 정상상태이고, 통신라인 연결상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜저 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는데도 지속적으로 통순고장이 검지되면, DCU의 X2,X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d1f37140-4d2e-400c-b885-963f60f18d3d', '0507', '507', 'DCU#8 5위(R3)-초기화 실패', 'Tc2', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 "Calibration failure” 신호가 "1"이 되면 검지.', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터고장, 장애물 감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우', '초기화 실패를 야기한 고장 코드를 확인하여 조치 후, 재 닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d204126e-aa51-458e-9f94-11d88fc49f6a', '0234', '234', '제동불완해검지(NRBD, Car5)', 'T2', 'B', '제동불완해검지(NRBD)', 'B', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT8의 Bit2 “NRBD” 신호가 "1"이 되면 검지.', '해당 차량 제동불완해 검지 현시 및 완해 취급하였음에도 불구하고 해당 차량 제동압력(BCP)이 완해되지 않음.', '제동완해 상태(정차제동 포함)에서 해당 차량의 제동압력이 완전히 배기 되지 않음.', '제동완해 상태(정차제동 포함)에서 해당 차량의 제동압력이 완전히 배기 됨.', '정차하여 강제완해스위치를 취급하여 소거 여부 확인. 제동 완해상태 확인 후 주의 운전 할 것. +2~3회 시도에도 완해불능시 관제보고하고 지시에 따를 것.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d21396e9-dd12-48eb-9b19-bd8060180eea', '0501', '501', 'DCU#5 2위(L1) - 출입문 차단', 'T2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d236c0fc-d9c6-4107-9153-2328b7f59819', '0746', '746', 'HVAC#2 - 전자접촉기 배기팬1(CRVF) 고장', 'M1', 'C', 'HVAC-전자접촉기 배기팬1(CRVF) 고장', 'C', 'HVAC', 'HVAC 환기 작동 중 CRVF1 전자접촉기 고장 발생 +', '환기 시 차량 배기팬1 운전 불가능', '환기 작동 중 2.5초 이상 동안 CRVF1 작동 feedback 신호가 수신되지 않는 경우 +', 'CRVF1 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CRVF1을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRVF1과 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d23d47b9-afb8-40e3-b45f-2d2a5db078ff', '1516', '1516', 'CU2 모듈고장 - AUX1(Car8)', 'Tc2', 'C', 'CU1, 2 모듈고장 - AUX1', 'C', 'TCMS', 'CU의 AUX1 PCB가 이 정상적으로 인식되지 않아 점검이 필요할 때 +', '1) CU1의 AUX1 PCB가 모듈 고장이 발생하면, CU2로 자동 절체됨. (CU2로 자동 절체되면 운행에는 지장이 없음) +2) CU2 자동절체 시 화면의 우측 상단 경고장글자 하단에 “B.SYS” 라는 표시가 나타남. +3) 자동절체 시 열차 운행에는 관계없음. +4) CU2의 AUX1 모듈고장 시는 CU1 정상동작시 운행에는 지장이 없음.', 'CU AUX1의 ID를 정상적으로 검출하지 못할 때 화면에 현시 +', 'CU AUX1의 ID를 정상적으로 검출하는 경우 소거됨.', '1) CU의 AUX1 PCB 교체 +2) 불량 해소가 되지 않을 경우, 순차적으로 MCPU, SCM, DIM PCB를 교체하여 정상여부 확인', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d268281e-5e15-4474-8176-abe746068586', '1500', '1500', '출입문 회로차단기 차단(Car2)', 'M1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d277883f-0bc3-4c0f-b56a-3ce242a33cab', '0507', '507', 'DCU#2 1위(R1) - 초기화 실패', 'M1', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 “Calibration failure” 신호가 “1”이 되면 검지 +', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터 고장, 장애물감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우 +', '초기화 실패를 야기한 고장코드를 확인하여 조치 후, 재닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인한다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d27ae1b6-7452-4378-a5b2-46c61f30be19', '0500', '500', 'DCU#2 3위(R2) 통신고장', 'M1', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS 간 RS485 통신고장이 검지되면 발생 +', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐상태 등의 변화가 없음.', ' +1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우 +', '해당 차량의 DCU 및 CU/TU의 전원이 정상상태이고, 통신 라인 연결 상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜져 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적 으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는 데도 지속적으로 통신고장이 검지되면, DCU의 X2, X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상 체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d27bff4e-2225-4d58-baef-2c1ebfc37764', '0181', '181', 'VVVF#2-MCOK 투입불량(MCOKNC)', 'M1', 'C', 'VVVF-MCOK 투입불량(MCOKNC)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT34의 Bit6 “MCOKNC” 신호가 "1"이 되면 검지.', null, 'MCOK 투입조건에서 개방상태 유지 시 고장검지.', '동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) 판토하강상태에서 테스트모드로 전환하여 시퀀스를 투입하고 MCOK의 주접점 동작을 확인한다. +2) 주회로 차단기함 내에 MCOK의 보조접점의 동작상태를 확인한다. +3) 추진제어장치 계전기 유니트에 MCHK1( +2) 보조접촉기 상태를 확인하여 동작 여부를 확인한다. +4) 추진제어장치 시험기를 이용하여 제어기 시험을 실시하여 이상여부를 확인한다.', null, '3', '2025-10-12 01:21:37.578803+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d27fbc27-34b3-4ee8-a11b-5102ee1f0405', '0241', '241', 'BECU#6 - 1축 스키드신호', 'M3', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d2a0b3de-aa02-48ca-8939-6d943a70895b', '0506', '506', 'DCU#6 6위(L3) - 출입문 입력 저전압', 'M3', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 “1”이 되면 검지 +', '저전압상태(출입문 동작이 심하게 느려지거나 작동조차 안 될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하 +', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d2a0cab1-d7d3-436c-949a-aac114d252ae', '0511', '511', 'DCU#5 6위(L3) - 출입문 닫힘 리미트 스위치2 고장', 'T2', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 “DCS2 Failure(Right)” 신호가 “1”이 되면 검지 +', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d2a95a99-44db-4ce4-b2f5-81b0f9e189f6', '0503', '503', 'DCU#4 2위(L1)-출입문 내부비상핸들 취급(EED)', 'T1', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d2ad37db-a5f7-4b23-9d4c-68748dbe6256', '0202', '202', 'BECU#3 - 덤프밸브 고장(전두대차)', 'M2', 'C', 'BECU-덤프밸브고장(선두대차)', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit1 “덤프밸브고장(선두대차)” 신호가 “1”이 되면 검지 +', '해당 차량 덤프밸브고장(선두대차)검지 현시 및 해당 차량 활주제어불가', '해당 차량 선두대차의 덤프밸브가 작동하지 않음. +', '해당 차량 선두대차의 덤프밸브가 정상작동 시 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d2b1238e-0c78-4c59-b648-0235d15f7971', '0740', '740', 'HVAC#5-전자접촉기 증발기1(CREF) 고장', 'T2', 'C', 'HVAC-전자접촉기 증발기1(CREF) 고장', 'C', 'HVAC', 'HVAC 냉방작동 중 CREF1 전자접촉기 고장 발생.', 'UNIT1 냉방 작동 불가', '냉방작동 중 2.5초 이상동안 CREF1 작동 feedback 신호가 수신되지 않는 경우', 'CREF1 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CREF1을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CREF1과 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d2b49797-ff0d-44a9-9b5c-c3680d9e3f4a', '0715', '715', 'HVAC#4-냉난방장치1 압력스위치1(DPS) 저압', 'T1', 'D', 'HVAC-냉난방장치1 압력스위치1(DPS) 저압', 'D', 'HVAC', '냉난방장치1 냉매 압력스위치1 저압 발생.', 'UNIT1 CYCLE1 냉방 기능 불가', 'UNIT1 DSP1측 냉매 압력이 3초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우', '냉매 압력이 정상 수치 2±0.5(kgf/cm2 이상으로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CREF2의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)을 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안되는 것을 확인한 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d2bf2c2d-19b3-4ffd-943b-be96f177e95d', '0505', '505', 'DCU#4 6위(L3) - 출입문 입력 고전압', 'T1', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 “1”이 되면 검지 +', '고전압 상태(그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상 +', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d2d957ce-0f73-409f-8745-3cf1a62f028e', '1208', '1208', 'FDU#4 - 감지기4 고장', 'T1', 'C', 'FDU-감지기4 고장 (Car1~8)', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 “Detector1 State” 신호가 “10”이 되면 검지 +', '감지기고장상태현시(자동소거 안 됨)', ' +1) 감지기로부터 데이터 응답이 없는 경우 +2) 감지기로부터 수신된 데이터의 CRC가 맞지 않는 경우 +3) 감지기로부터 수신된 데이터의 ID가 송신 ID와 일치하지 않는 경우 +', 'FDU 전원 리셋 후 감지기로부터 정상적으로 데이터가 수신된 경우', '1) FDU 전원 리셋 후 고장 소거 여부 확인 +2) 정상동작중인 감지기와 위치 교환 후 FDU 전원 리셋 및 고장 상태 확인 +3) 동일한 감지기에서 고장 발생 시 감지기 교체 +4) 동일한 위치에서 고장 발생 시 감지기 라인 점검', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d2ddb9f0-6d3f-4bbd-a921-a271a63da675', '0501', '501', 'DCU#7 5위(R3)-출입문 차단', 'M4', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d2e19b9e-46f6-4b5e-a33b-cb2388efc2d2', '0513', '513', 'DCU#3 1위(R1) - 모듈 상태체크 에러', 'M2', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 “Module check error” 신호가 “1”이 되면 검지 +', 'Modulecheckerror현시(출입문은 정상작동가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태 체크 기능에 이상이 생긴 경우 고장 발생 +', 'DCU의 ‘A' 모듈과 ‘B' 모듈 간, 상태 체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d2f19e00-30de-4fbc-b1a0-3a6e50117010', '0500', '500', 'DCU#8 5위(R3) 통신고장', 'Tc2', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS간 RS485 통신고장이 검지되면 발생.', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐 상태 등의 변화가 없음.', '1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우', '해당차량의 DCU 및 CU/TU 의 전원이 정상상태이고, 통신라인 연결상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜저 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는데도 지속적으로 통순고장이 검지되면, DCU의 X2,X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d30c1bab-9735-49ba-9343-edaa5ca8cb64', '0753', '753', 'HVAC#6-배기댐퍼 열림고장', 'M3', 'C', 'HVAC-배기댐퍼 열림고장', 'C', 'HVAC', '환기 시, 차량 배기댐퍼가 열려 있는 상태에서 배기댐퍼 열림 리미트 스위치가 작동되지 않음', '배기댐퍼 열림 고장 현시', '배기댐퍼를 열림으로 제어했으나 열림 리미트 스위치 입력이 없을 경우', '배기댐퍼 열림 상태에서 리미트 스위치 입력이 정상적으로 입력', '1) 배기댐퍼가 열린 상태에서 열림 리미트 스위치가 정상적으로 작동되었는지 확인한다. +2) 열림 리미트 스위치가 정상작동 되었음에도 문제가 발생될 경우, 스위치를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d321c3eb-4ac6-4eb1-a424-2369ea950e18', '0504', '504', 'DCU#4 2위(L1)-출입문 외부비상핸들 취급(EAD)', 'T1', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d324cffa-0484-495f-a709-ffe8f8485100', '0744', '744', 'HVAC#6-전자접촉기 보조히터1(AHEK) 고장', 'M3', 'C', 'HVAC-전자접촉기 보조히터1(AHEK) 고장', 'C', 'HVAC', 'HVAC 보조난방기 작동 중 AHEK1 전자접촉기 고장 발생.', 'UNIT1 보조난방기 전난방 시 반난방만 작동', '보조난방기 작동 중 2.5초 이상동안 AHEK1 작동 feedback 신호가 수신되지 않는 경우', 'AHEK1 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) AHEK1을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, AHEK1과 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d33e3f1d-0e87-462a-aec0-7d9145f7f255', '0749', '749', 'HVAC#6-380V 전원고장', 'M3', 'C', 'HVAC-380V 전원고장', 'C', 'HVAC', 'HVAC 메인 전원 AC 380V 전원 고장 발생', 'HVAC 냉방 및 난방 기능 불가', '차량으로부터 공급되는 AC 380V가 입력되지 않는 경우', '차량으로부터 AC 380V 전압이 정상적으로 입력', '1) 차량으로부터 AC 380V 전압이 정상적으로 입력되는지 확인한다. +2) 차량전원이 정상일 경우, 냉난방 배전반의 CBLVD 차단기가 꺼져 있는지 확인 후, 꺼져있을 경우, 켠다. +3) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d3781ebf-ce3a-4ab0-b727-99cd19a6f6bb', '0221', '221', 'BECU#6-제동력부족(ISBD)', 'M3', 'B', 'BECU-제동력부족(ISBD)', 'B', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit5 “ISBD” 신호가 "1"이 되면 검지.', '해당 차량 제동력 부족 검지 현시 및 해당 차량 제동압력(BCP)이 타 차량에 비해 현저히 낮음.', '제동 7단 취급 시 해당 차량의 제동압력이 생성되지 않음.', '제동 7단 취급 시 정상적인 제동압력이 생성된 경우 소거.', 'MCS모드로 전환 후, 마스콘을 N(중립) -> 제동7단까지 수회취급 하여 소거 여부 확인. 제동 취급 확인 후, 주의 운전 할 것. +지속발생시 관제보고하고 지시에 따를 것.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d37cabeb-bddc-4ff4-88a7-8c5bd807f2c8', '0401', '401', 'SIV#1 중고장', 'Tc1', 'B', 'SIV-중고장', 'B', 'SIV', '보조전원장치(SIV)의 RS485데이터 중 SIV-TCMS SD TEXT3의 Bit6 “MJFR”신호가 “1”이 되면 검지 +', '1) 보조전원장치(SIV)일반화면에 보조전원장치 상태 붉은색으로 표시됨. +2) 반대편 TC CAR의 보조전원장치(SIV)가 정상동작이면 자동연장급전 됨. +3) 연장급전 시 편성의 에어컨 반냉, AC등구류 절감 등의 현상이 나타남.', ' +1) 보조전원장치(SIV)의경고장이 3분에 3회 이상누적 또는 지속적으로 검지되어 중고장 발생함. +2) 과온고장, 접지고장에 대해서는 1번 발생으로 중고장 발생함. +', '보조전원장치(SIV) 리셋 실시 후 고장 소거됨. 단, 고장 소거 후 재기동 시 동일 고장이 발생할 경우 다시 중고장 발생함.', '1) 보조전원장치(SIV)리셋 실시 후 중고장이 소거됨을 확인함. +2) 단 주회로 접지고장, THF 고장에 대해서는 리셋 불가함. +3) TCMS 고장데이터 또는 보조전원장치(SIV) 고장 데이터를 통해 중고장이 발생한 고장 내역 수집함. +4) 수집된 고장내역에 따라 조치 실시함.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d39287fc-2db6-4501-a80b-a0e302773d3a', '0892', '892', '비상인터폰#1(PEI) 고장(Car#8)', 'Tc2', 'C', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d39f7f5d-e4f3-4aed-855b-ab85934d9a0c', '1708', '1708', '노선안내표시기#1 고장(Car3)', 'M2', 'C', '노선안내표시기#6 고장', 'C', 'PIC', 'PIC 장치의 노선안내표시기#6이 고장이 났을 때 발생 +', '1) 노선안내표시기 화면 미현시 +2) 노선안내표시기 안내 화면 오현시', '통신고장 +', '통신 재개 시', '1) 이더넷 스위치 링크 확인 +2) 이더넷 케이블 점검 +3) 제어보드 및 전원보드 교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d3a25b87-0c40-46b1-b483-00985e5d2262', '0137', '137', 'VVVF#6-전동기 과전류 검지(MMOCD)', 'M3', 'C', 'VVVF-전동기 과전류 검지(MMOCD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT29의 Bit2 “MMOCD” 신호가 "1"이 되면 검지.', null, '1) 견인전동기의 입력전류가 800A이상일 때 경고장 발생. +2) 1분 이내 3회 발생 시 중고장 발생.', '1) 경고장 +역행 고장검지 2초 후 자동 재기동 제동 제동 OFF시 고장 소거 +2) 중고장 +동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 견인전동기로 출력되는 3상의 전류치 확인함. +3) 특정상의 전류치가 비정상적일 경우 특정상에 해당되는 IGBT, 전류센서, 모터결선을 확인한다. +4) 전류센서와 추진제어장치의 PWM 보드에 연결되는 저전압 배선상태를 확인한다. +5) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +6) 추진제어장치 시험기를 이용하여 PWM 보드의 이상여부를 확인한다. +7) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d3a2f9e1-f88d-412f-ba8d-b5681378f3e4', '1510', '1510', '열차분리#2 검지(Car3)', 'M2', 'B', '열차분리#2 검지', 'B', 'TCMS', '차량의 열차분리#2 검지 +', '1) 2위측 열차검지신호(SOTS2) 검출 시 화면에 현시 +2) 실제 열차분리 시 검지되었는지 확인 필요(실제 열차분리 시 다른 차량 이 접근하지 못하도록 선조치 필요) +3) 실제 열차 분리 시 비상제동 안전루프에 의해 비상제동체결 됨. +4) 열차 분리에 따라 분리 위치부터 차량제어장치(TU)와 반대편의 편성제어장치(CU)의 통신고장 동반 발생', 'CU/TU의 2위측 열차분리신호(SOTS2) 신호 활성(LOW) 입력 시 고장 현시 +', 'CU/TU의 2위측 열차분리신호(SOTS2) 신호 정상(HIGH) 입력 시 소거됨.', '1) 실제 열차분리 시 관제에 연락하고, 지시에 따름 +2) 회로 차단기 ELCB ON 상태 확인 +3) CU인 경우 2위측 열차분리신호 DIM1 PCB의 입력채널(SOTS +2) 점검/교체 +4) TU인 경우 2위측 열차분리신호 DIM3 PCB의 입력채널(SOTS +2) 점검/교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d3aa0676-f880-4c50-bf53-e101a1afe488', '0737', '737', 'HVAC#7-전자접촉기 증발기4(CREF) 고장', 'M4', 'C', 'HVAC-전자접촉기 증발기4(CREF) 고장', 'C', 'HVAC', 'HVAC 냉방작동 중 CREF4 전자접촉기 고장 발생.', 'UNIT2 냉방 작동 불가', '냉방작동 중 2.5초 이상동안 CREF4 작동 feedback 신호가 수신되지 않는 경우', 'CREF4 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CREF4를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CREF4와 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d3aae034-2d63-4c55-904b-5cf5901fd464', '0521', '521', 'DCU#3 3위(R2)-모듈 상태 이상', 'M2', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 "01"또는 "00"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d3af462b-7eae-4c5a-aa44-46a78d0677c9', '0511', '511', 'DCU#8 4위(L2)-출입문 닫힘 리미트 스위치2 고장', 'Tc2', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 "DCS2 Failure(Right)” 신호가 "1"이 되면 검지.', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d3c37506-aec3-4daf-80c1-a8d28981ac64', '0749', '749', 'HVAC#1 - 380V 전원고장', 'Tc1', 'C', 'HVAC-380V 전원고장', 'C', 'HVAC', 'HVAC 메인 전원 AC 380V 전원 고장 발생 +', 'HVAC 냉방 및 난방 기능 불가', '차량으로부터 공급되는 AC 380V가 입력되지 않는 경우 +', '차량으로부터 AC 380V 전압이 정상적으로 입력', '1) 차량으로부터 AC 380V 전압이 정상적으로 입력되는지 확인한다. +2) 차량 전원이 정상일 경우, 냉난방 배전반의 CBLVD 차단기가 꺼져 있는지 확인 후, 꺼져있을 경우 켠다. +3) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d3ec4a7a-d560-45b2-9e1a-80769e297bc2', '0511', '511', 'DCU#2 1위(R1)-출입문 닫힘 리미트 스위치2 고장', 'M1', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 "DCS2 Failure(Right)” 신호가 "1"이 되면 검지.', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d3f98372-310f-46e7-8bf0-b200cc856127', '0517', '517', 'DCU#3 5위(R3) - 출입문 장애물로 인한 열림 실패', 'M2', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Open failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘 상태로 대기', '도어열림 중 3회 장애물감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 열림 시, 장애물감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d405a776-77eb-4aeb-b1f0-62e77f144667', '0412', '412', 'SIV#1 - 게이트 드라이버 고장, VY2상(GDFVY2)', 'Tc1', 'C', 'SIV-게이트 드라이버 고장, VY2상(GDFVY2)', 'C', 'SIV', '보조전원장치(SIV)의 RS485 데이터 중 SIV-TCMS SD TEXT5의 Bit2 “GDFVY2” 신호가 “1”이 되면 +검지 +', '1) TCMS 화면하단 또는 고장화면에 ‘GDFVY2상 이상 검지' 표시됨. +2) 보조전원장치(SIV)는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 보조전원장치(SIV) 중고장이 발생됨. +5) 중고장이 발생되면 TCMS 일반화면에 보조전원장치(SIV) 상태 붉은색으로 표기되며, 연장급점 됨.', '보조전원장치(SIV) 내부 GDU에 과전류, 과온이 검지될 경우 +', '1) 경고장이 발생할 경우 보조전원장치(SIV) 자동 재기동에 의해 재기동 됨. +2) 중고장이 발생할 경우 보조전원장치(SIV) 리셋으로 고장 소거됨.', '1) 상기 고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 보조전원장치(SIV) 고장기록을 수집하여 출력되는 3상의 AC 전류치를 확인함. +3) 특정상의 전류치가 비정상적일 경우 특정상에 해당되는 GDU, 전류센서, 출력단 결선을 확인 한다. +4) 전류센서와 보조전원장치(SIV) 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작 상태를 시험기를 통해 확인한다. +6) GDU 전원공급기의 전원연결 상태 또는 광케이블의 연결 상태와 배선상태를 확인한다. +7) 출력단 각상의 절연상태 및 각상과 접지 간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d408d581-6ca5-4108-a660-b090ceb89a38', '0901', '901', '비상인터폰 동작(Car#4 - 2)', 'T1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d41b286e-7ace-4694-aacd-32e68f83785b', '0500', '500', 'DCU#2 1위(R1) 통신고장', 'M1', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS간 RS485 통신고장이 검지되면 발생.', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐 상태 등의 변화가 없음.', '1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우', '해당차량의 DCU 및 CU/TU 의 전원이 정상상태이고, 통신라인 연결상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜저 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는데도 지속적으로 통순고장이 검지되면, DCU의 X2,X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d42d83d9-1fc8-48dc-ada2-e59efafcf01c', '0126', '126', 'VVVF-접촉기 이상검지(CNTF) (Car3)', 'M2', 'C', 'VVVF-접촉기 이상검지(CNTF)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT33의 Bit7 “CNTF” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 '접촉기 이상검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) LB Box내부의 HSCB, LB1,2의 동작에 이상이 발생한 경우 검지됨..', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반배전반의 VVVFIC nfb 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 이상동작인 접촉기(HSCB, LB1, +2)를 확인한다. +3) LB Box와 추진제어장치간 배선의 연결 상태를 확인한다. +4) 추진제어장치 내부의 릴레이 유닛에 정상동작여부를 확인한다. +4) DIN 보드의 동작상태를 시험기를 통해 확인한다. +5) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.656536+00', null, '다대48량(2015)', 'Rotem'), ('d43fca87-0af1-4ac4-b2c9-248a92c4c206', '0506', '506', 'DCU#6 1위(R1) - 출입문 입력 저전압', 'M3', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 “1”이 되면 검지 +', '저전압상태(출입문 동작이 심하게 느려지거나 작동조차 안 될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하 +', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d45b2c90-4ac3-4323-85ae-4b99fbf49fd6', '0175', '175', 'VVVF#7 - HSCB 투입불량(HBNC)', 'M4', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d45be96a-dcce-418f-a7da-38a28b06a6d8', '0217', '217', 'BECU#2-회생제동달성 비정상', 'M1', 'C', 'BECU-회생제동달성 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit0 “회생제동달성 비정상” 신호가 "1"이 되면 검지.', '해당 차량 회생제동달성 비정상 검지 현시 및 해당차량 정상적인 전공 교차제어 불가.', '해당 차량의 회생제동달성 신호가 정상범위를 벗어남(5.0~95.0%).', '해당 차량의 회생제동달성 신호가 정상범위일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. +소거되지 않을 경우 해당 차량 추진제어장치 리셋(CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d464ba75-87aa-4540-9376-8a7b6ea408c4', '0514', '514', 'DCU#4 4위(L2) - 출입문 닫힘 시간 초과', 'T1', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 “Close time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 닫힘 동작 시간이 7초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도한 후, ‘장애물로 인한 닫힘 실패' 고장과 함께 ‘Close time out' 고장이 함께 현시 +', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d46fd45b-5365-4612-8d72-52da83238a5d', '0516', '516', 'DCU#3 6위(L3) - 출입문 장애물로 인한 닫힘 실패', 'M2', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Close failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림 상태로 대기', '도어 닫힘 중 3회 장애물감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d47ff5cc-6d94-443a-8981-f14d23056b32', '0234', '234', '제동불완해검지(NRBD, Car7)', 'M4', 'B', '제동불완해검지(NRBD)', 'B', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT8의 Bit2 “NRBD” 신호가 “1”이 되면 검지 +', '해당 차량 제동불완해 검지 현시 및 완해 취급하였음에도 불구하고 해당 차량 제동압력 (BCP)이 완해되지 않음.', '제동완해상태(정차제동포함)에서 해당 차량의 제동압력이 완전 배기되지 않음. +', '제동완해상태(정차제동포함)에서 해당 차량의 제동압력이 완전히 배기됨.', '정차하여 강제완해스위치를 취급하여 소거 여부 확인, 제동 완해상태 확인 후 주의 운전할 것, 2 ~ 3회 시도에도 완해불능 시 관제보고하고 지시에 따를 것', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d49c79c5-1974-43ec-8b2a-9e8445bb08c8', '0037', '37', '주차제동 바이패스 스위치 취급', 'Tc1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d4a58e8c-cb0f-4c8d-a8af-6c06fb3ec243', '0746', '746', 'HVAC#1-전자접촉기 배기팬1(CRVF) 고장', 'Tc1', 'C', 'HVAC-전자접촉기 배기팬1(CRVF) 고장', 'C', 'HVAC', 'HVAC 환기 작동 중 CRVF1 전자접촉기 고장 발생.', '환기 시 차량 배기팬1 운전 불가능', '환기 작동 중 2.5초 이상동안 CRVF1 작동 feedback 신호가 수신되지 않는 경우', 'CRVF1 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CRVF1을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRVF1과 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d4b2d81f-c1d1-43e4-984f-b54e699700c1', '0863', '863', '출력증폭기#1(AMP) 고장(Car#6)', 'M3', 'C', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d4b541a7-2887-47ba-88ca-382c835cb8da', '0507', '507', 'DCU#4 1위(R1) - 초기화 실패', 'T1', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 “Calibration failure” 신호가 “1”이 되면 검지 +', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터 고장, 장애물감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우 +', '초기화 실패를 야기한 고장코드를 확인하여 조치 후, 재닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인한다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d4c18e0b-a833-4aad-982d-b6c01538260e', '0226', '226', 'BECU#1 - 제동불완해검지(NRBD)', 'Tc1', 'B', 'BECU-제동불완해검지(NRBD)', 'B', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT8의 Bit2 “NRBD” 신호가 “1”이 되면 검지 +', '해당 차량 제동불완해 검지 현시 및 완해 취급하였음에도 불구하고 해당 차량 제동압력 (BCP)이 완해되지 않음.', '제동완해상태(정차제동포함)에서 해당 차량의 제동압력이 완전히 배기되지 않음. +', '제동완해상태(정차제동포함)에서 해당 차량의 제동압력이 완전히 배기됨.', '정차하여 강제완해 스위치를 취급하여 소거 여부 확인, 제동 완해상태 확인 후 주의 운전할 것, 2 ~ 3회 시도에도 완해불능 시 관제보고하고 지시에 따를 것', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d4d2bab3-af86-4d80-b986-61d56e21b0f3', '0509', '509', 'DCU#3 6위(L3) - 출입문 잠김 리미트 스위치 고장', 'M2', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 “DLS Failure” 신호가 “1”이 되면 검지 +', '출입문 잠김 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d4de35e1-825c-497c-ae3b-5de4886e5e2c', '0177', '177', 'VVVF#7-LB1 투입불량(LB1NC)', 'M4', 'C', 'VVVF-LB1 투입불량(LB1NC)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT34의 Bit2 “LB1NC” 신호가 "1"이 되면 검지.', null, 'LB1 투입이 되지 않을 때 고장검지.', '동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) 판토하강상태에서 테스트모드로 전환하여 시퀀스를 투입하고 LB1의 주접점 동작을 확인한다. +2) 주회로 차단기함 내에 LB1의 보조접점의 동작상태를 확인한다. +3) 추진제어장치 계전기 유니트에 LB1R 계전기 상태를 확인하여 계전기의 동작 여부를 확인한다. +4) 추진제어장치 시험기를 이용하여 제어기 시험을 실시하여 이상여부를 확인한다.', null, '3', '2025-10-12 01:21:37.578803+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d4efec97-ac4b-41bb-a5c7-9ebcf1012b91', '0213', '213', 'BECU#3-AC 압력센서고장', 'M2', 'C', 'BECU-AC 압력센서 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit4 “AC 압력센서 고장” 신호가 "1"이 되면 검지.', '해당 차량 공기제동장치고장, AC압력센서 고장 검지 현시 및 해당 차량 제동제어 불가.', '해당 차량의 AC압력센서 고장.', '해당 차량의 AC압력센서가 정상일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d50ae7c8-93c3-48f5-ba2d-91d5dc7f2518', '0519', '519', 'DCU#3 4위(L2)-ZVR 신호 에러', 'M2', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 "ZVR signal error” 신호가 "1"이 되면 검지.', '출입문이 강제로 닫히게 되고, 열림은 불가능', '1) 차량 ZVR 신호가 없는 상태 (차량 주행상태) 에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함.', '해당출입문 ZVR 신호 수신', '1) 차량이 주행중이라면, 차량이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.392739+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d50b2ed0-1d86-4bc8-9a0a-e3e4f64ee3ea', '0521', '521', 'DCU#2 1위(R1) - 모듈 상태 이상', 'M1', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 “01” 또는 “00”이 되면 +검지 +', '이중계절체동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러)이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d51ce46b-d3a5-4754-9da5-376c06747bb3', '0167', '167', 'VVVF#6-마스콘 노치신호 이상검지(PWMERR)', 'M3', 'C', 'VVVF-PWM 노치고장(PWMERR)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT33의 Bit0 “PWMERR” 신호가 "1"이 되면 검지.', null, '엔코더 PWM신호의 듀티값 95% 이상 도달 시 고장검지', '1) 역행 듀티값 90%이하. +2) 제동 듀티값 90%이하 & 제동 OFF', '1) 상기 고장이 간헐적으로 발생하는 경우 아래와 같이 조치한다. +2) 엔코더의 출력을 오실로스코프로 측정하여 정상여부를 확인한다.(48V, 400Hz) +3) TC1, TC2차량의 배전반에서 엔코더 출력부 배선상태 및 단자결합상태를 확인한다. +4) 추진장치의 MC유니트의 커넥터 및 핀 압착상태를 확인한다. +5) TCMS의 추진장치 시리얼 데이터 메뉴에서 B1~B7의 노치값을 확인한다. +6) 값이 변하지 않거나 노치별 일정한 값이 유지되지 않는 경우 INF보드를 교체한다.', null, '3', '2025-10-12 01:21:37.578803+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d5420cb4-1d12-4e1a-8881-8da8031ca200', '0510', '510', 'DCU#6 5위(R3) - 출입문 닫힘 리미트 스위치1 고장', 'M3', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 “DCS1 Failure(Leftt)” 신호가 “1”이 되면 검지 +', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d54633db-f94e-4898-89b4-e5175f298680', '0096', '96', 'PWM 엔코더#1 고장(Car8)', 'Tc2', 'B', 'PWM 엔코더#1 고장 (TC8)', 'B', '기타', '차량으로부터 PWM ENCODER#1(#2) FAULT 신호 미입력 시 +', '1) 엔코더 1계 PWM 출력 고장 시 1계 고장에 해당되는 신호 출력 +2) 엔코더 2계로 자동 절체 +3) 엔코더 2계 PWM 출력 고장 시 1계, 2계 고장 모두 출력 +4) 엔코더 PWM 출력 신호 없음', '1) 엔코더 1계 PWM 출력 신호 이상 시 +2) 엔코더 2계 PWM 출력 신호 이상 시 +3) 엔코더 1계, 2계 PWM 출력 신호 이상 시 +4) 엔코더 수동절체버튼 3초 이상 조작 시 +', '1) 엔코더의 전원 차단 후 재투입하여 소거되는지 확인 +2) 수동절체버튼의 조작으로 인한 고장 출력 또한 전원 재투입으로 소거함', '1) 엔코더의 전원 차단 후 재투입하여 소거되지 않을 시 정상품으로 교체하여 정상동작 확인 +2) 교체된 고장품의 고장원인 분석 회로 도면 : REC10100DX0', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d55033b1-db2f-446c-b7b8-e18f2179601c', '0215', '215', 'BECU#7 - 후미대차 AS 압력센서 고장', 'M4', 'C', 'BECU-후미대차 AS 압력센서 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit6 “후미대차 AS 압력센서 고장” 신호가 +“1”이 되면 검지 +', '해당 차량 후미대차 AS 압력센서 고장검지 현시 및 해당 차량 정상적인 응하중제동제어 불가', '해당 차량의 후미대차 AS 압력센서(AS3, AS4) 고장 +', '해당 차량의 후미대차 AS 압력센서(AS3, AS4)가 정상일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d55148f5-6c10-40fe-99b9-4fae210fdeba', '0413', '413', 'SIV#1 - 게이트 드라이버 고장, UX2상(GDFUX2)', 'Tc1', 'C', 'SIV-게이트 드라이버 고장, UX2상(GDFUX2)', 'C', 'SIV', '보조전원장치(SIV)의 RS485 데이터 중 SIV-TCMS SD TEXT5의 Bit3 “GDFUX2” 신호가 “1”이 되면 +검지 +', '1) TCMS 화면하단 또는 고장화면에 ‘GDFUX2상 이상 검지' 표시됨. +2) 보조전원장치(SIV)는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 보조전원장치(SIV) 중고장이 발생됨. +5) 중고장이 발생되면 TCMS 일반화면에 보조전원장치(SIV) 상태 붉은색으로 표기되며, 연장급점 됨.', '보조전원장치(SIV) 내부 GDU에 과전류, 과온이 검지될 경우 +', '1) 경고장이 발생할 경우 보조전원장치(SIV) 자동 재기동에 의해 재기동 됨. +2) 중고장이 발생할 경우 보조전원장치(SIV) 리셋으로 고장 소거됨.', '1) 상기 고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 보조전원장치(SIV) 고장기록을 수집하여 출력되는 3상의 AC 전류치를 확인함. +3) 특정상의 전류치가 비정상적일 경우 특정상에 해당되는 GDU, 전류센서, 출력단 결선을 확인 한다. +4) 전류센서와 보조전원장치(SIV) 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작 상태를 시험기를 통해 확인한다. +6) GDU 전원공급기의 전원연결 상태 또는 광케이블의 연결 상태와 배선상태를 확인한다. +7) 출력단 각상의 절연상태 및 각상과 접지 간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d55b25e9-6223-4641-af26-60df4763f763', '0736', '736', 'HVAC#1-전자접촉기 압축기(CRCM)1 고장', 'Tc1', 'C', 'HVAC-전자접촉기 압축기(CRCM)1 고장', 'C', 'HVAC', 'HVAC 냉방작동 중 CRCM1 전자접촉기 고장 발생.', '냉방 기능 저하(전냉방시 반냉방으로 작동)', '냉방작동 중 2.5초 이상동안 CRCM1 작동 feedback 신호가 수신되지 않는 경우', 'CRCM1 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CRCM1을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRCM1과 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d56c1971-49f5-4cbb-ac00-aae196b877f0', '0206', '206', 'BECU#4-RAM 점검 고장', 'T1', 'C', 'BECU-RAM 점검 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit5 “RAM 점검 고장” 신호가 "1"이 되면 검지.', '해당 차량 RAM 점검 고장 검지 현시 및 해당 차량 정상적인 제동제어 불가.', '해당 차량 BECU의 자가진단 시 고장 발생.', '해당 차량 BECU의 자가진단 시 정상적일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d56ed287-e678-42f1-b1f9-6263ae0c48b1', '0121', '121', 'VVVF-통신이상검지(COMF) (Car2)', 'M1', 'C', 'VVVF-통신이상검지(COMF)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT33의 Bit0 “COMF” 신호가 "1"이 되면 검지.', 'TCMS 화면에 고정정보 현시되며, 추진제어장치 상태화면에 나타나는 데이터에 변동이 없음.', 'TCMS-추진제어장치(VVVF) 간 통신정보가 3초이상 동일한 정보로 유지되면 통신고장을 검지함.', 'TCMS-추진제어장치(VVVF) 간 통신정보가 정상적으로 통신이 될경우 소거됨.', '1) 추진제어장치(VVVF) 리셋 실시 후 통신고장 소거됨을 확인. +2) 통신고장 소거가 되지 않을 경우 추진제어장치 MON 보드 신품으로 교체후 통신고장 소거여부 확인. +3) 위 조건에도 고장이 소거되지 않을 경우, TCMS-추진제어장치간 RS485 통신케이블 연결상태 점검.', null, '2', '2025-10-12 01:21:37.578803+00', null, '다대48량(2015)', 'Rotem'), ('d585bc28-e2e8-4806-95d8-8257863a8547', '0715', '715', 'HVAC#2 - 냉난방장치1 압력스위치1(DPS) 저압', 'M1', 'D', 'HVAC-냉난방장치1 압력스위치1(DPS) 저압', 'D', 'HVAC', '냉난방장치1 냉매 압력스위치1 저압 발생 +', 'UNIT1CYCLE1 냉방기능불가', 'UNIT1DSP1측 냉매압력이 3초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우 +', '냉매압력이 정상수치 2±0.5(kgf/cm2) 이상으로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CREF2의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)를 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설 여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안 되는 것을 확인한 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d597a397-c9a1-4324-8ed6-e9a74602820a', '0219', '219', 'BECU#6-제동지령 비정상', 'M3', 'C', 'BECU-제동지령 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit2 “제동지령 비정상” 신호가 "1"이 되면 검지.', '해당 차량 제동지령 비정상 검지 현시 및 해당차량 정상적인 제동제어 불가. (상용제동지령에 따른 제어)', '해당 차량의 제동지령 신호가 정상범위를 벗어남(5.0~95.0%).', '해당 차량의 제동지령 신호가 정상범위일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. +소거되지 않을 경우 해당 선택 운전실의 PWM 엔코더를 리셋(CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d5a150ca-5a10-4f75-b65d-8f71b2a36e79', '0209', '209', 'BECU#8 - 4축 속도신호의 비정상', 'Tc2', 'C', 'BECU-4축속도신호의 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit0 “4축속도신호의 비정상” 신호가 “1”이 +되면 검지 +', '해당 차량 4축속도신호의 비정상 검지 현시 및 해당 차량 활주제어불가', '해당 차량의 4축속도센서 고장 발생 +', '해당 차량의 4축속도센서가 정상적일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d5b7a545-fc45-4162-9069-c0d077764907', '0227', '227', '제동관련 회로차단기 차단(Car5)', 'T2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d5be5fe8-c53e-48c4-a1fb-ff534971baf3', '0504', '504', 'DCU#7 4위(L2)-출입문 외부비상핸들 취급(EAD)', 'M4', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d5ce6e53-ac37-4964-b8fb-9d5abff6431d', '758', '758', 'CAB HVAC#8 - 증발기 과부하', 'Tc2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d5de12bd-fbae-4867-890d-30790d2dbdf4', '0512', '512', 'DCU#5 5위(R3) - 파라미터 로딩 실패', 'T2', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 “Paraneter error” 신호가 “1”이 되면 검지 +', 'Parametererror 현시(출입문은 정상작동 가능)', 'DCU 자체 내의 EEPROM으로부터 parameter데이터 로딩 실패 +', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d5ea4294-d3a1-4ba4-99e8-a3e93ba0b238', '0512', '512', 'DCU#2 1위(R1) - 파라미터 로딩 실패', 'M1', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 “Paraneter error” 신호가 “1”이 되면 검지 +', 'Parametererror 현시(출입문은 정상작동 가능)', 'DCU 자체 내의 EEPROM으로부터 parameter데이터 로딩 실패 +', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d5f50f51-5e3a-4bd8-b471-acb9afc9ebe4', '0418', '418', 'SIV#1 - FC 1, 2 언밸런스 고장(FC12UB)', 'Tc1', 'C', 'SIV-FC1, 2 언밸런스 고장(FC12UB)', 'C', 'SIV', '보조전원장치(SIV)의 RS485 데이터 중 SIV-TCMS SD TEXT6의 Bit3 “FC12UB” 신호가 “1”이 되면 검지 +', '1) TCMS 화면하단 또는 고장화면에 ‘SIVFC1, 2 언밸런스 고장' 표시됨. +2) 보조전원장치(SIV)는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 보조전원장치(SIV) 중고장이 발생함. +5) 중고장이 발생되면 TCMS 일반화면에 보조전원장치(SIV) 상태 붉은색으로 표기되며, 연장급전 됨.', '보조전원장치(SIV) 내부 FC1, 2의 전압 차이가 500V 이상일 경우 검지됨. +', '1) 경고장이 발생할 경우 보조전원장치(SIV) 자동 재기동에 의해 재기동 됨. +2) 중고장이 발생했을 경우 조치 완료 후 보조전원장치(SIV) 리셋으로 고장 소거됨.', '1) 상기 고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 보조전원장치(SIV) 고장기록을 수집하여 FC전압에 이상이 있는지 확인한다. +3) 보조전원장치(SIV) 내부 고전압부에 소손흔적이 있는지 확인한다. +4) FC에 연결된 부스바의 체결상태가 양호한지 확인한고, 부스바를 분리하여 FC의 Capacitance를 측정하여 이상이 없는지 확인한다. +5) 인버터 내부 구성품의 상태 및 광케이블 상태, 결선상태를 확인한다. +6) 전압센서와 보조전원장치(SIV) 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +7) SEN 보드의 동작 상태를 시험기를 통해 확인한다. +8) 출력단 각상의 절연상태 및 각상과 접지 간의 절연상태를 확인한다. +9) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d5f67122-ce37-492b-b575-05a782fbe030', '0151', '151', 'VVVF#2-통신이상검지(MONIA_ERR)', 'M1', 'C', 'VVVF-통신이상검지(MONIA_ERR)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT31의 Bit0 “MONIA_ERR” 신호가 "1"이 되면 검지.', null, 'TCMS와 VVVF간 통신이상 발생 시 고장검지.', 'TCMS와 VVVF간 정상통신 가능 시 소거됨.', '1) 추진제어장치(VVVF) 리셋 실시 후 통신고장 소거됨을 확인. +2) 통신고장 소거가 되지 않을 경우 추진제어장치 PUZ 보드 신품으로 교체후 통신고장 소거여부 확인. +3) 위 조건에도 고장이 소거되지 않을 경우, TCMS-추진제어장치간 RS485 통신케이블 연결상태 점검.', null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d603b328-683c-4718-a42b-0aa2f83df9ea', '0739', '739', 'HVAC#7-전자접촉기 증발기2(CREF) 고장', 'M4', 'C', 'HVAC-전자접촉기 증발기2(CREF) 고장', 'C', 'HVAC', 'HVAC 냉방작동 중 CREF2 전자접촉기 고장 발생.', 'UNIT1 냉방 작동 불가', '냉방작동 중 2.5초 이상동안 CREF2 작동 feedback 신호가 수신되지 않는 경우', 'CREF2 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CREF2를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CREF2와 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d60e6f50-8f04-4b38-88ec-ebb9e5f924d3', '0503', '503', 'DCU#8 2위(L1) - 출입문 내부 비상핸들 취급(EED)', 'Tc2', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d61990e0-902a-4375-801a-0eb4bae97fba', '0704', '704', 'HVAC#8-냉난방장치1 압축기1 과부하', 'Tc2', 'C', 'HVAC-냉난방장치1 압축기1 과부하', 'C', 'HVAC', 'HVAC 냉방작동 중 냉난방장치1 압축기1 또는 응축기1 모터에 과부하 발생.', '냉방 기능 저하(전냉방시 반냉방으로 작동)', '1) 냉방작동 중 UNIT1의 압축기1 또는 응축기1 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRCM1과 연결된 THR1이 Trip 됨.', 'UNIT1의 압축기1 또는 응축기1 모터의 과부하 조건을 해소하여 정상 가능 상태로 만들고, THR1 및 마이콤 전원 리셋', '1) 냉난방배전반의 점검커버를 열고, THR1의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR4의 전류 세팅값이 11.5A에 맞춰져 있는지 확인하여, 아닐 경우, 십자 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동 시킨 후, THR1의 2차측 2,4,6 단자에서 각 단자간 상간 전압이 AC 380V으로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 압축기 및 응축기 단품 상태에서 점검을 한다. +7) THR1의 2차측 2,4,6 단자에서 각 단자간 권선저항이 모두 같은지 확인한다. (±10% 이하) (압축기1 및 응축기1 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT1의 압축기1 또는 응축기1 모터의 결선을 해제한 후 각 부품의 권선저항을 확인 후, 문제가 있는 부품을 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR1 부품을 교체한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d61d471d-eb35-4cf8-a905-dc75c0ad44d1', '0235', '235', '제동력부족(ISBD, Car3)', 'M2', 'B', '제동력부족(ISBD)', 'B', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit3 “ISBD” 신호가 “1”이 되면 검지 +', '해당 차량 제동력부족검지 현시 및 해당 차량 제동압력(BCP)이 타 차량에 비해 현저히 낮음.', '제동 7단 취급 시 해당 차량의 제동압력이 생성되지 않음. +', '제동 7단 취급 시 정상적인제동압력이 생성된 경우 소거', 'MCS 모드로 전환 후, 마스콘을 N(중립) → 제동 7단까지 수 회 취급하여 소거 여부 확인, 제동 취급 확인 후, 주의 운전할 것, 지속발생 시 관제보고하고 지시에 따를 것', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d61ef616-0620-4748-aa0e-be4db8f174af', '0728', '728', 'HVAC#4 - 냉난방장치2 토출 센서 고장', 'T1', 'C', 'HVAC-냉난방장치2 토출 센서 고장', 'C', 'HVAC', '냉난방장치2의 토출 센서 고장 발생 +', '냉난방장치2 토출 센서 고장현시', '온도센서 검지범위는 -45 ~ 85도(820 ~ 1,330Ω)인데, 2초 이상 검지범위를 벗어나는 경우 +', '온도센서 검지값이 2초 이상 허용온도 범위 내일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820 ~ 1,330Ω을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d632fbc1-20a8-499f-8feb-bd3db76e9e3a', '0514', '514', 'DCU#5 4위(L2)-출입문 닫힘 시간 초과', 'T2', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 "Close time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 닫힘 동작시간이 7초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도 한 후, '장애물로 인한 닫힘실패' 고장과 함께 'Close time out' 고장이 함께 현시', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d6594b2e-096f-42f3-8baf-1147a74dc4e1', '0204', '204', 'BECU#3-응하중 비정상', 'M2', 'C', 'BECU-응하중 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit3 “응하중 비정상” 신호가 "1"이 되면 검지.', '해당 차량 응하중 비정상 검지 현시.', '해당 차량의 응하중 출력이 정상범위를 벗어남.', '해당 차량 응하중 출력이 정상범위로 복귀 시 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d66442a0-3abf-4fee-9c00-50d7e5efe78a', '0518', '518', 'DCU#6 1위(R1)-출입문 Enable 신호 에러', 'M3', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 "Enable signal error” 신호가 "1"이 되면 검지.', 'DCU 출입문 Enable 신호 에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) 취급시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함.', '해당출입문 enable 신호 수신', '1) AUTO/MCS 모드시에는 YARD모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인한다. (YARD/FMC 모드시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d666b739-2371-482f-ac6f-f6029f011bdb', '0218', '218', 'BECU#4 - 인통선로직 비정상', 'T1', 'C', 'BECU-인통선로 직 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit1 “인통선로 직 비정상” 신호가 “1”이 되면 +검지 +', '해당 차량 인통선로 직비정상 검지 현시 및 해당 차량 정상적인제동제어불가 (상용제동 지령에 따른 제어)', '해당 차량의 추진선택(P), 제동선택(B) 신호가 동시에 ON됨. +', '해당 차량의 추진선택(P), 제동선택(B) 신호가 정상작동(상보적으로 작동)될 경우 소거', 'BECU를 리셋(BECU CB OFF/ON) 한 뒤, 마스콘을 제동 7단으로 5초간 취급하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d67f6207-5fe8-4c52-8524-89bb401db39d', '0712', '712', 'HVAC#1 - 냉난방장치2 압력스위치1(DPS) 고압', 'Tc1', 'D', 'HVAC-냉난방장치2 압력스위치1(DPS) 고압', 'D', 'HVAC', '냉난방장치2 냉매 압력스위치1 고압 발생 +', 'UNIT2CYCLE1 냉방기능불가', 'UNIT2DSP1측 냉매압력이 3초 이상 28±1(kgf/cm2) 이상 되는 경우 +', '냉매압력이 정상수치 15±0.7(kgf/cm2) 이하로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CRCM3의 부하측 전류를 측정하여 응축기 팬의 동작여부를 확인한다. +2) 응축기 코일의 전면에 이물질로 인한 막힘이 있는지 확인한다. +3) 응축기 팬 상부 그릴에 외부 이물질로 인한 막힘이 있는지 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d680544a-e800-409c-acec-48b17c8ac67d', '0514', '514', 'DCU#2 6위(L3)-출입문 닫힘 시간 초과', 'M1', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 "Close time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 닫힘 동작시간이 7초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도 한 후, '장애물로 인한 닫힘실패' 고장과 함께 'Close time out' 고장이 함께 현시', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d682b8c5-f434-42eb-98a4-0e2288c8ae3d', '0705', '705', 'HVAC#2 - 냉난방장치2 증발기2 과부하', 'M1', 'C', 'HVAC-냉난방장치2 증발기2 과부하', 'C', 'HVAC', 'HVAC 냉방 작동 중 냉난방장치2 증발기 모터에 과부하 발생 +', 'UNIT2냉방기능불가', ' +1) 냉방 작동 중 UNIT2의 증발기 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CREF4와 연결된 THR8이 Trip 됨. +', 'UNIT2의 증발기모터의 과부하조건을 해소하여 정상 가능 상태로 만들고, THR8 및 마이콤 전원 리셋', '1) 냉난방 배전반의 점검커버를 열고, THR8의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR8의 전류 세팅값이 3A에 맞춰져 있는지 확인하여, 아닐 경우, (+) 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동시킨 후, THR8의 2차측 2, 4, 6 단자에서 각 단자 간 상간 전압이 AC 380V로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 증발기 단품 상태에서 점검을 한다. +7) THR8의 2차측 2, 4, 6 단자에서 각 단자 간 권선저항이 모두 같은지 확인한다. (±10% 이하) (증발기 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT2의 증발기 모터의 결선을 해제한 후 4극 및 6극 모터의 권선저항을 확인 후, 문제가 있을 경우, 증발기 모터를 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR8 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d68a1172-e27e-454d-9877-9728dd74f637', '1504', '1504', '냉방장치용 AC 회로차단기 차단(Car7)', 'M4', 'W', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d68a6955-7f1e-4e50-8802-9d75b52bd85a', '0515', '515', 'DCU#6 6위(L3)-출입문 열림 시간 초과', 'M3', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 "Open time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 열림 동작시간이 6초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도 한 후, '장애물로 인한 열림실패' 고장과 함께 'Open time out' 고장이 함께 현시', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d6cfc666-bafc-4ec6-a272-a3d3d010280c', '1102', '1102', 'PSD#8 - 지상 스크린도어 닫힘 고장', 'Tc2', 'D', 'PSD-지상 스크린도어 닫힘 고장', 'D', 'PSD', 'PSD의 RS485 데이터 중 PSD-TCMS SD TEXT5(TEXT6)의 Bit2 “지상 PSD 닫힘 확인 NG” 신호가 “1”이 +되면 검지([지상 PSD 설비 장애] - 전동차 출입문 닫힘, 차상장치가 스크린도어 닫힘 명령을 송신, 지상장치로부터 스크린도어 닫힘 확인 NG가 수신된 경우 ) +', '1) 전동차 출입문 닫힘 후 +2) 전동차 출입문은 닫혔으나, PSD가 닫히지 않을 경우 +3) 전동차 출입문과 PSD 모두 닫혔으나 장애로 현시될 경우', '지상 PSD설비에서 PSD 전체 닫힘명령 실행 중 Feedback 신호가 올바르지 않음. +', '1) 지상설비에 대한고장이므로 차상장치는 정상동작 한다. +2) 기관사는 PSD 닫힘 상태확인, 닫힘 실패 시 +3) 기관사 조작반으로 수동취급 실시할 것 +* 해당 역사를 벗어나면 소멸됨.', null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d6df3067-2a0f-4821-9ce5-e7bdd81932f8', '0501', '501', 'DCU#8 5위(R3) - 출입문 차단', 'Tc2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d6e2e5ea-d73e-476a-b00b-c81f89f793bc', '0521', '521', 'DCU#5 3위(R2)-모듈 상태 이상', 'T2', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 "01"또는 "00"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d6fcdb3b-e5ba-48e1-a567-f52564eea8d2', '0731', '731', 'HVAC#7 - 냉난방장치1 리턴 센서 고장', 'M4', 'C', 'HVAC-냉난방장치1 리턴 센서 고장', 'C', 'HVAC', '냉난방장치1의 리턴 센서 고장 발생 +', '냉난방장치1 리턴 센서 고장현시', '온도센서 검지범위는 -45 ~ 85도(820 ~ 1,330Ω)인데, 2초 이상 검지범위를 벗어나는 경우 +', '온도센서 검지값이 2초 이상 허용온도 범위 내일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820 ~ 1,330Ω을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d6ff8fec-002f-49c8-a8f3-5325b5dec7a3', '0519', '519', 'DCU#7 6위(L3)-ZVR 신호 에러', 'M4', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 "ZVR signal error” 신호가 "1"이 되면 검지.', '출입문이 강제로 닫히게 되고, 열림은 불가능', '1) 차량 ZVR 신호가 없는 상태 (차량 주행상태) 에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함.', '해당출입문 ZVR 신호 수신', '1) 차량이 주행중이라면, 차량이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d7037fdc-bc6f-4698-8c1e-307ebea41666', '0520', '520', 'DCU#2 5위(R3) - 이중계 절체 동작', 'M1', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 “Module switchover” 신호가 “1”이 되면 검지 +', '이중계 절체 동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러) 이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A'모듈 및 ‘B'모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d713fe7c-e55b-4d82-a465-8700f8298ac2', '0908', '908', '비상인터폰 동작(Car#8 - 1)', 'Tc2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d714a98a-5a2d-4aae-9d17-f47446b5e70f', '0725', '725', 'HVAC#1 - 냉방시험 불가능', 'Tc1', 'C', 'HVAC-냉방시험 불가능', 'C', 'HVAC', '운전실 TCMS에서 냉방시험 작동을 할 때, 냉방운전이 불가능한 경우 발생 +', '냉방시험 운전 불가능', '실내 또는 실외온도가 10도 미만일 경우(환절기 또는 겨울철에 냉방가동 시 시스템 보호를 위한 온도조건) +', '실내 또는 실외온도가10도 이상일 때, 냉방시험작동', '1) TCMS 화면에서 실내 또는 실외 온도가 10도 미만인지 확인한다. +2) 실내 및 실외 온도가 10도 이상인데도 냉방 가동이 되지 않을 시, TCMS-마이콤 간 통신불량이 있는지 확인하고 조치한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d71bf161-1631-4488-8902-744bf85962ce', '0709', '709', 'HVAC#7 - 냉난방장치2 압력스위치2(DPS) 저압', 'M4', 'D', 'HVAC-냉난방장치2 압력스위치2(DPS) 저압', 'D', 'HVAC', '냉난방장치2 냉매 압력스위치2 저압 발생 +', 'UNIT2CYCLE2 냉방기능불가', 'UNIT2DSP2측 냉매압력이 3초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우 +', '냉매압력이 정상수치 2±0.5(kgf/cm2) 이상으로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CREF4의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)를 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설 여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안 되는 것을 확인한 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d7351d3a-232d-49a9-b582-bc5a031c959b', '0137', '137', 'VVVF#3-전동기 과전류 검지(MMOCD)', 'M2', 'C', 'VVVF-전동기 과전류 검지(MMOCD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT29의 Bit2 “MMOCD” 신호가 "1"이 되면 검지.', null, '1) 견인전동기의 입력전류가 800A이상일 때 경고장 발생. +2) 1분 이내 3회 발생 시 중고장 발생.', '1) 경고장 +역행 고장검지 2초 후 자동 재기동 제동 제동 OFF시 고장 소거 +2) 중고장 +동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 견인전동기로 출력되는 3상의 전류치 확인함. +3) 특정상의 전류치가 비정상적일 경우 특정상에 해당되는 IGBT, 전류센서, 모터결선을 확인한다. +4) 전류센서와 추진제어장치의 PWM 보드에 연결되는 저전압 배선상태를 확인한다. +5) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +6) 추진제어장치 시험기를 이용하여 PWM 보드의 이상여부를 확인한다. +7) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d757d5f7-b991-4073-9dbb-2533e9d1b54a', '0146', '146', 'VVVF#3 - 과온검지1(THDL)', 'M2', 'C', 'VVVF-Stack 과온검지1(THDL)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT30의 Bit3 “THDL” 신호가 “1”이 되면 검지 +', '1) TCMS 화면 하단 또는 고장화면에 ‘스택 과온검지1' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동이 되지 않으며 중고장으로 처리됨. +3) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉은색으로 표기되며, HSCB, LB1, 2 개방되어 동력 손실 발생함.', '추진제어장치 냉각기의 온도가 105도 이상인 조건에서 검지 +', '추진제어장치 리셋으로 고장 소거됨.', '1) 상기고장이 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 냉각기의 손상이 없는지 확인한다. +3) 추진제어장치 내부에 IPM에 손상이 없는지 확인한다. +4) 인버터 유니트 내부에 온도센서 및 결선에 이상이 없는지 확인한다. +5) DIN 보드의 동작 상태를 시험기를 통해 확인한다. +6) IPM 전원공급기의 전원연결 상태 또는 광케이블의 연결 상태와 배선상태를 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지 간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d75caea3-e21f-459d-a15c-fe8633dd7a7c', '0212', '212', 'BECU#8 - 1축 속도신호의 비정상', 'Tc2', 'C', 'BECU-1축속도신호의 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit3 “1축속도신호의 비정상” 신호가 “1”이 +되면 검지 +', '해당 차량 1축속도신호의 비정상 검지 현시 및 해당 차량 활주제어불가', '해당 차량의 1축속도센서 고장 발생 +', '해당 차량의 1축속도센서가 정상적일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d760c946-0bf4-4999-a4d6-e309e95b9acc', '0050', '50', '주공기압축기 바이패스 기동(Car1)', 'Tc1', 'W', '주공기압축기 바이패스 기동(Car1)', 'W', '기타', '차량으로부터 BYPASS RUN FOR CMSB 신호 입력 시 +', '주공기압축기 정상기동 됨(초기 기동 시 돌입전류값 상승) +고장검지조건 : CMSB INVERTER 고장 +고장소거조건 : CMSB INVERTER 점검 및 교체 +회로 도면 : REC30330DX0', null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d766a949-d146-45a2-98df-2150cddf73b3', '0906', '906', '비상인터폰 동작(Car#7 - 1)', 'M2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d7691ce3-1844-45f6-80dd-0ff83fe4d8c3', '0511', '511', 'DCU#8 5위(R3) - 출입문 닫힘 리미트 스위치2 고장', 'Tc2', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 “DCS2 Failure(Right)” 신호가 “1”이 되면 검지 +', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d76a22d4-0a2e-43a4-bdbb-9ba792869e45', '0512', '512', 'DCU#2 3위(R2)-파라미터 로딩 실패', 'M1', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 "Paraneter error” 신호가 "1"이 되면 검지.', 'Parameter error 현시 (출입문은 정상작동 가능)', 'DCU 자체내의 EEPROM으로부터 parameter 데이터 로딩 실패', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d76d247e-02bc-4758-88e6-4c0116ba352e', '0227', '227', '제동관련 회로차단기 차단(Car1)', 'Tc1', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d77a4f16-1288-4d4a-8c4d-d68062b3b29a', '1500', '1500', '출입문 회로차단기 차단(Car6)', 'M3', 'W', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d77cebe4-7135-4ddc-9c08-13a562faa51f', '0515', '515', 'DCU#6 4위(L2) - 출입문 열림 시간 초과', 'M3', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 “Open time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 열림 동작시간이 6초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도한 후, ‘장애물로 인한 열림 실패' 고장과 함께 ‘Open time out' 고장이 함께 현시 +', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d781a0c6-f68b-47af-abcd-99ced38cabd6', '0044', '44', '비상판토 트립(Car3)', 'M2', 'W', '비상판토 트립(CAR3)', 'W', 'TCMS', '차량으로부터 NO EMERGENCY PANTO TRIP 신호 미입력시', '판도 하강 및 VVVF, SIV 고압 차단', '가선 차단', '판토 하강 및 가선 투입', null, null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d785ee28-116f-4b50-b7b6-c999de3dde8e', '0042', '42', '비상판토 하강', 'Tc2', 'W', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d7983305-5cdd-420d-b472-eebdb2f2194f', '0504', '504', 'DCU#1 4위(L2)-출입문 외부비상핸들 취급(EAD)', 'Tc1', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d7b346ad-933b-4b95-ae7a-0eef9d40a581', '1102', '1102', 'PSD#8-지상 스크린도어 닫힘 고장', 'Tc2', 'D', 'PSD-지상 스크린도어 닫힘 고장', 'C', 'PSD', 'PSD 의 RS485 데이터 중 PSD-TCMS SD TEXT5(TEXT6)의 Bit2 “지상 PSD 닫힘 확인 NG” 신호가 "1"이 되면 검지. ([지상 PSD 설비 장애] - 전동차 출입문 닫힘, 차상장치가 스크린도어 닫힘 명령을 송신 +지상장치로부터 스크린도어 닫힘확인 NG가 수신된 경우)', '전동차 출입문 닫힘 후 전동차 출입문은 닫혔으나, PSD가 닫히지 않을 경우 전동차 출입문과 PSD모두 닫혔으나 장애로 현시될 경우', '지상 PSD 설비에서 PSD 전체 닫힘 명령 실행중 Feedback 신호가 올바르지 않음.', '지상설비에대한 고장이므로 차상장치는 정상 동작한다. 기관사는 PSD 닫힘 상태확인, 닫힘 실패시 +기관사 조작반으로 수동취급 실시 할 것. +*해당 역사를 벗어나면 소멸됨.', null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d7bc036a-b3fd-41d1-bfc9-4262926542af', '757', '757', 'CAB HVAC#8 - 압축기 과부하', 'Tc2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d7cce46c-8c72-427d-9d51-7e00de100017', '1501', '1501', '차상신호장치(ATC) 회로차단기 차단(Car3)', 'M2', 'W', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d7e0b13a-8c95-4ca1-a90a-8e9e11e4c3a0', '0215', '215', 'BECU#5 - 후미대차 AS 압력센서 고장', 'T2', 'C', 'BECU-후미대차 AS 압력센서 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit6 “후미대차 AS 압력센서 고장” 신호가 +“1”이 되면 검지 +', '해당 차량 후미대차 AS 압력센서 고장검지 현시 및 해당 차량 정상적인 응하중제동제어 불가', '해당 차량의 후미대차 AS 압력센서(AS3, AS4) 고장 +', '해당 차량의 후미대차 AS 압력센서(AS3, AS4)가 정상일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d7e9f007-7ec8-46c1-a805-f3fd6bf87da1', '1408', '1408', 'BMS#1 - 충전과전류(OCC, 충전150A 이상)', 'Tc1', 'D', 'BMS-충전과전류(OCC)', 'D', 'BMS', '해당 차량의 충전 전류가 105A 이상이 되면 검지 +', '차량 배터리충전과전류검지 후, 110A 이상이면 충전접촉기(CK)가 차단된다.', '배터리충전과전류(105A 이상) +', '배터리충전전류정상범위로 회복(0 ~ 100A)', '1) 배터리 NFB 상태 확인 +2) 이상이 없으면 차량 전체를 리셋한다. +3) 차량 리셋 후에도 동일고장이면 사령실과 연락하여 조치를 취한다. (외부 방전기 연결 또는 차량 지원)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d7f4af3f-47a1-4c48-9790-dba4bff54791', '0520', '520', 'DCU#1 1위(R1) - 이중계 절체 동작', 'Tc1', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 “Module switchover” 신호가 “1”이 되면 검지 +', '이중계 절체 동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러) 이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A'모듈 및 ‘B'모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d802fdc2-0ab0-4a62-9a68-48980692dfdf', '0516', '516', 'DCU#6 4위(L2)-출입문 장애물로 인한 닫힘 실패', 'M3', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Close failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림상태로 대기', '도어 닫힘 중 3회 장애물 감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d8263311-0e25-4e75-a43a-cfb0e791beaf', '0704', '704', 'HVAC#6-냉난방장치1 압축기1 과부하', 'M3', 'C', 'HVAC-냉난방장치1 압축기1 과부하', 'C', 'HVAC', 'HVAC 냉방작동 중 냉난방장치1 압축기1 또는 응축기1 모터에 과부하 발생.', '냉방 기능 저하(전냉방시 반냉방으로 작동)', '1) 냉방작동 중 UNIT1의 압축기1 또는 응축기1 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRCM1과 연결된 THR1이 Trip 됨.', 'UNIT1의 압축기1 또는 응축기1 모터의 과부하 조건을 해소하여 정상 가능 상태로 만들고, THR1 및 마이콤 전원 리셋', '1) 냉난방배전반의 점검커버를 열고, THR1의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR4의 전류 세팅값이 11.5A에 맞춰져 있는지 확인하여, 아닐 경우, 십자 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동 시킨 후, THR1의 2차측 2,4,6 단자에서 각 단자간 상간 전압이 AC 380V으로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 압축기 및 응축기 단품 상태에서 점검을 한다. +7) THR1의 2차측 2,4,6 단자에서 각 단자간 권선저항이 모두 같은지 확인한다. (±10% 이하) (압축기1 및 응축기1 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT1의 압축기1 또는 응축기1 모터의 결선을 해제한 후 각 부품의 권선저항을 확인 후, 문제가 있는 부품을 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR1 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d82a9c00-008f-48ed-9c37-a182edd600ec', '0741', '741', 'HVAC#5-전자접촉기 보조히터4(AHEK) 고장', 'T2', 'C', 'HVAC-전자접촉기 보조히터4(AHEK) 고장', 'C', 'HVAC', 'HVAC 보조난방기 작동 중 AHEK4 전자접촉기 고장 발생.', 'UNIT2 보조난방기 전난방 시 반난방만 작동', '보조난방기 작동 중 2.5초 이상동안 AHEK4 작동 feedback 신호가 수신되지 않는 경우', 'AHEK4 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) AHEK4를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, AHEK4와 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d82e3b9e-a565-4811-8f46-3ef4c27c979e', '0065', '65', 'MAIN FUSE#2 DISCONNECTED(Car2)', 'M1', 'W', 'MAIN FUSE#2 DISCONNECTED(Car2)', 'W', 'TCMS', '차량으로부터 AUX FUSE DISCONNECTED 신호 입력시', 'VVVF고압 차단으로 추진 불능', '해당 퓨우즈 소손', '해당 퓨우즈 교체', null, ' +REC20210HN0', '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d82f6aae-1f61-4c4a-841f-c42c1fff45c9', '0206', '206', 'BECU#5-RAM 점검 고장', 'T2', 'C', 'BECU-RAM 점검 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit5 “RAM 점검 고장” 신호가 "1"이 되면 검지.', '해당 차량 RAM 점검 고장 검지 현시 및 해당 차량 정상적인 제동제어 불가.', '해당 차량 BECU의 자가진단 시 고장 발생.', '해당 차량 BECU의 자가진단 시 정상적일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d846e907-85ca-4ce2-9d31-9f3b8c45544f', '0519', '519', 'DCU#8 1위(R1) - ZVR 신호 에러', 'Tc2', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 “ZVR signal error” 신호가 “1”이 되면 검지 +', '출입문이강제로 닫히게 되고, 열림은 불가능', ' +1) 차량 ZVR 신호가 없는 상태(차량 주행상태)에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함. +', '해당 출입문 ZVR 신호 수신', '1) 차량 이 주행중이라면, 차량 이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d85a55fc-b464-437f-9c22-651b4420c497', '0503', '503', 'DCU#5 1위(R1)-출입문 내부비상핸들 취급(EED)', 'T2', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d85b914f-6ee8-4643-8817-430238b1e836', '0181', '181', 'VVVF#3 - MCOK 투입불량(MCOKNC)', 'M2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d8682a09-ed4a-433c-ab34-ef90c80bdace', '0746', '746', 'HVAC#5 - 전자접촉기 배기팬1(CRVF) 고장', 'T2', 'C', 'HVAC-전자접촉기 배기팬1(CRVF) 고장', 'C', 'HVAC', 'HVAC 환기 작동 중 CRVF1 전자접촉기 고장 발생 +', '환기 시 차량 배기팬1 운전 불가능', '환기 작동 중 2.5초 이상 동안 CRVF1 작동 feedback 신호가 수신되지 않는 경우 +', 'CRVF1 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CRVF1을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRVF1과 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d875f58e-9d02-4f86-857c-3b8288dbb04d', '0830', '830', '실내카메라#2(SCAM) 고장(Car#3)', 'M2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d881b544-5159-475b-ad0a-5c111c9ee25d', '0514', '514', 'DCU#8 3위(R2)-출입문 닫힘 시간 초과', 'Tc2', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 "Close time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 닫힘 동작시간이 7초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도 한 후, '장애물로 인한 닫힘실패' 고장과 함께 'Close time out' 고장이 함께 현시', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d88b88e5-dbbb-4d7a-a7cb-1937a017e859', '0236', '236', '상용제동코크 차단(Car6)', 'M3', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d88b948d-e3ca-4aec-92f2-6c516713a43b', '0511', '511', 'DCU#7 1위(R1) - 출입문 닫힘 리미트 스위치2 고장', 'M4', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 “DCS2 Failure(Right)” 신호가 “1”이 되면 검지 +', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d8937dea-8966-4cf4-a285-bd059b3aa167', '0500', '500', 'DCU#1 4위(L2) 통신고장', 'Tc1', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS간 RS485 통신고장이 검지되면 발생.', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐 상태 등의 변화가 없음.', '1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우', '해당차량의 DCU 및 CU/TU 의 전원이 정상상태이고, 통신라인 연결상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜저 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는데도 지속적으로 통순고장이 검지되면, DCU의 X2,X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d8a325a4-e31b-4075-96c1-7853a2176a32', '0511', '511', 'DCU#2 3위(R2) - 출입문 닫힘 리미트 스위치2 고장', 'M1', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 “DCS2 Failure(Right)” 신호가 “1”이 되면 검지 +', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d8a82241-fd42-4133-9b0a-eb6c916f16dd', '0520', '520', 'DCU#3 2위(L1) - 이중계 절체 동작', 'M2', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 “Module switchover” 신호가 “1”이 되면 검지 +', '이중계 절체 동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러) 이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A'모듈 및 ‘B'모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d8af5627-40a2-4b0a-a1a1-8b528c6709d3', '0124', '124', 'VVVF-전진/후진 이상 검지(FRF) (Car3)', 'M2', 'C', 'VVVF-전진/후진 이상 검지(FRF)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT33의 Bit5 “FRF” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 '전진/후진 신호이상검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치 입력되는 역행/제동신호가 동시에 입력될 경우 검지됨.', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반배전반의 VVVFIC nfb 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 전진/후진신호에 이상이 있는지 확인한다.. +3) 차량의 제어회로 중 전진/후진 신호가 추진제어장치로 연결되는 경로에 이상이 없는지 확인한다. +4) DIN 보드의 동작상태를 시험기를 통해 확인한다. +5) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.656536+00', null, '다대48량(2015)', 'Rotem'), ('d8c032df-0e30-4857-a3d7-ef0a77513947', '0508', '508', 'DCU#2 5위(R3)-출입문 모터/인코더 고장', 'M1', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 "Motor / Encoder failure” 신호가 "1"이 되면 검지.', '출입문 정상동작 불가', '1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우 (인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터 / 인코더 회로가 손상된 경우', '모터/인코더 및 DCU가 정상상태이고, 전기적 연결상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있느지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. +★ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. + +1. DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. +2. DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) +3. DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d8ca4180-48b3-40e3-80b1-3569a1d20e33', '0211', '211', 'BECU#5 - 2축 속도신호의 비정상', 'T2', 'C', 'BECU-2축속도신호의 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit2 “2축속도신호의 비정상” 신호가 “1”이 +되면 검지 +', '해당 차량 2축속도신호의 비정상 검지 현시 및 해당 차량 활주제어불가', '해당 차량의 2축속도센서 고장 발생 +', '해당 차량의 2축속도센서가 정상적일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d8ce4636-a3c8-4734-a7a2-6b058d0648be', '0507', '507', 'DCU#3 6위(L3)-초기화 실패', 'M2', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 "Calibration failure” 신호가 "1"이 되면 검지.', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터고장, 장애물 감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우', '초기화 실패를 야기한 고장 코드를 확인하여 조치 후, 재 닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d8ceb740-46e6-4c9b-a506-f81c65055016', '1200', '1200', 'FDU#1 통신고장', 'Tc1', 'B', 'FDU 통신고장', 'B', 'FDU', 'FDU와 TCMS 간 RS485 통신고장이 검지되면 발생 +', '화면상 FDU의 화재검지신호 등의 데이터가 반응하지 않음.', 'FDU 통신고장 또는 통신케이블문제 +', 'TCMSSDR 신호에 의해 FDU로부터 SD 신호가 정상 수신된 경우', '1) FDU 및 TCMS의 전원을 리셋하여 소거여부 확인 +2) 통신 고장이 발생하지 않은 다른 차량의 수신기와 교체하여 소거 여부 확인(고장이 수신기를 따라가는지 확인) +3) TCMS와 FDU간의 통신계통 점검 및 FDU NFB 점검 +4) 문제가 지속될 경우, 수신기 교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d8d9f523-b081-4816-b8b1-ef9078738a1a', '0514', '514', 'DCU#3 2위(L1) - 출입문 닫힘 시간 초과', 'M2', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 “Close time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 닫힘 동작 시간이 7초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도한 후, ‘장애물로 인한 닫힘 실패' 고장과 함께 ‘Close time out' 고장이 함께 현시 +', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d8da13e6-b493-4fd3-8d3b-249f25483f79', '0511', '511', 'DCU#8 1위(R1)-출입문 닫힘 리미트 스위치2 고장', 'Tc2', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 "DCS2 Failure(Right)” 신호가 "1"이 되면 검지.', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d8de23f1-30a5-4426-971b-161c273d2a6f', '0729', '729', 'HVAC#5 - 냉난방장치2 리턴 센서 고장', 'T2', 'C', 'HVAC-냉난방장치2 리턴 센서 고장', 'C', 'HVAC', '냉난방장치2의 리턴 센서 고장 발생 +', '냉난방장치2 리턴 센서 고장현시', '온도센서 검지범위는 -45 ~ 85도(820 ~ 1,330Ω)인데, 2초 이상 검지범위를 벗어나는 경우 +', '온도센서 검지값이 2초 이상 허용온도 범위 내일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820 ~ 1,330Ω을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d8eb5ab8-ef57-4120-b684-3681a60d60c4', '0120', '120', 'VVVF-가선저전압검지(VLLVD) (Car3)', 'M2', 'C', 'VVVF-가선저전압검지(VLLVD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT32의 Bit7 “VLLVD” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 '가선 저전압검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치 입력되는 가선전압이 850V 이상일 경우 검지됨.', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반배전반의 VVVFIC nfb 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 가선전압에 이상이 있는지 확인한다. +3) LB Box 내부 고전압부에 소손흔적이 있는지 확인한다. +4) FC에 연결된 버스바의 체결상태가 양호한지 확인한고, 버스바를 분리하여 FC의 Capacitance를 측정하여 이상이 없는지 확인한다. +5) 전압센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +6) SEN 보드의 동작상태를 시험기를 통해 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.656536+00', null, '다대48량(2015)', 'Rotem'), ('d8f42ee8-57ed-49c0-bb5d-4108fdbbfe66', '0738', '738', 'HVAC#4 - 전자접촉기 증발기3(CREF) 고장', 'T1', 'C', 'HVAC-전자접촉기 증발기3(CREF) 고장', 'C', 'HVAC', 'HVAC 냉방 작동 중 CREF3 전자접촉기 고장 발생 +', 'UNIT2 냉방 작동 불가', '냉방 작동 중 2.5초 이상 동안 CREF3 작동 feedback 신호가 수신되지 않는 경우 +', 'CREF3 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CREF3을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CREF3과 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d8f7083d-c345-41b9-8754-ff8417f2a7b6', '0712', '712', 'HVAC#5 - 냉난방장치2 압력스위치1(DPS) 고압', 'T2', 'D', 'HVAC-냉난방장치2 압력스위치1(DPS) 고압', 'D', 'HVAC', '냉난방장치2 냉매 압력스위치1 고압 발생 +', 'UNIT2CYCLE1 냉방기능불가', 'UNIT2DSP1측 냉매압력이 3초 이상 28±1(kgf/cm2) 이상 되는 경우 +', '냉매압력이 정상수치 15±0.7(kgf/cm2) 이하로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CRCM3의 부하측 전류를 측정하여 응축기 팬의 동작여부를 확인한다. +2) 응축기 코일의 전면에 이물질로 인한 막힘이 있는지 확인한다. +3) 응축기 팬 상부 그릴에 외부 이물질로 인한 막힘이 있는지 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d904d743-5134-4270-9783-52aed08000f4', '0520', '520', 'DCU#4 3위(R2) - 이중계 절체 동작', 'T1', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 “Module switchover” 신호가 “1”이 되면 검지 +', '이중계 절체 동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러) 이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A'모듈 및 ‘B'모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d9176a4f-ee30-4cd8-9c3a-c4121eaffb46', '0426', '426', '연장급전 접촉기 고장', 'T1', 'B', '연장급전접촉기 고장', 'B', 'SIV', '연장급전접촉기와 TCMS 간 명령 불이행 시 연장급전접촉기 고장 검지 +', '1) TCMS 화면에 고장정보 현시되며, 보조전원장치(SIV) 중고장 발생 시 연장급전이 이루어지지 않음. +2) 중고장이 발생된 보조전원장치(SIV)가 있는 유니트의 부하에는 전원공급 불가(에어컨, 히터, 등구류 등)', '연장급전 명령에도 연장급전접촉기가 여자되지 않을 때, 혹은 연장급전 명령이 없는데 연장급전접촉기가 여자되었을 때 검지함. +', 'TCMS-연장급전접촉기 간 명령 정상적으로 이행 시 소거됨.', '1) 연장급전박스(ESK)와 차량 TCMS 간 배선의 연결 상태를 확인한다. +2) 연장급전접촉기의 이상 유무 및 결선상태를 확인한다. +3) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d922fa2d-fa6e-4676-9922-7c2f4be9fa9a', '0240', '240', 'BECU#1-2축스키드신호', 'Tc1', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d92585d9-1367-4835-8f4f-02890d0ee173', '0704', '704', 'HVAC#1-냉난방장치1 압축기1 과부하', 'Tc1', 'C', 'HVAC-냉난방장치1 압축기1 과부하', 'C', 'HVAC', 'HVAC 냉방작동 중 냉난방장치1 압축기1 또는 응축기1 모터에 과부하 발생.', '냉방 기능 저하(전냉방시 반냉방으로 작동)', '1) 냉방작동 중 UNIT1의 압축기1 또는 응축기1 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRCM1과 연결된 THR1이 Trip 됨.', 'UNIT1의 압축기1 또는 응축기1 모터의 과부하 조건을 해소하여 정상 가능 상태로 만들고, THR1 및 마이콤 전원 리셋', '1) 냉난방배전반의 점검커버를 열고, THR1의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR4의 전류 세팅값이 11.5A에 맞춰져 있는지 확인하여, 아닐 경우, 십자 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동 시킨 후, THR1의 2차측 2,4,6 단자에서 각 단자간 상간 전압이 AC 380V으로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 압축기 및 응축기 단품 상태에서 점검을 한다. +7) THR1의 2차측 2,4,6 단자에서 각 단자간 권선저항이 모두 같은지 확인한다. (±10% 이하) (압축기1 및 응축기1 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT1의 압축기1 또는 응축기1 모터의 결선을 해제한 후 각 부품의 권선저항을 확인 후, 문제가 있는 부품을 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR1 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d92a3ebf-0359-490d-9c5f-a48329475552', '1007', '1007', 'CMSB#1 - CM 기동불가', 'Tc1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d92e3a81-7b18-47e1-ae87-2ab39f696ea0', '0236', '236', '상용제동코크 차단(Car2)', 'M1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d971e900-5b29-41b1-8ffe-350bd4869256', '0817', '817', '통합제어기(AVC) 문구없음(Car#1)', 'Tc1', 'C', '통합방송표시기-통합제어기(AVC) 문구없음', 'C', 'TCMS', '통합방송표시기의 RS485 데이터 중 통합방송표시기-TCMS SD TEXT6의 Bit1 “문구없음” 신호가 "1"이 되면 검지.', '해당 역사에 자동으로 표시하여야 할 역 안내 문구 현시 하지 않음', '역사별 역안내 문구가 없는 경우 발생. 다음 역안내 문구 현시까지 고장 비트 유지', '역사별 역안내 문구가 있는 경우 소거', '스케쥴러의 역안내 문구 확인 및 차량에 스케쥴러 업데이트 +관련도면 없음', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d9895dea-f636-443c-9ba9-d342cf649cba', '1705', '1705', '노선안내표시기#3 고장(Car1)', 'Tc1', 'C', '노선안내표시기#3 고장', 'C', 'PIC', 'PIC 장치의 노선안내표시기#3이 고장이 났을 때 발생 +', '1) 노선안내표시기 화면 미현시 +2) 노선안내표시기 안내 화면 오현시', '통신고장 +', '통신 재개 시', '1) 이더넷 스위치 링크 확인 +2) 이더넷 케이블 점검 +3) 제어보드 및 전원보드 교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d9939170-be08-4e1f-a70b-f620648a13ec', '0513', '513', 'DCU#6 5위(R3)-모듈 상태체크 에러', 'M3', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 "Module check error” 신호가 "1"이 되면 검지.', 'Module check error 현시 (출입문은 정상작동 가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태체크 기능에 이상이 생긴 경우 고장 발생.', 'DCU의 'A'모듈과 'B'모듈 간, 상태체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d997d34e-a6c1-43cc-83ab-29c31cd4161e', '0512', '512', 'DCU#2 1위(R1)-파라미터 로딩 실패', 'M1', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 "Paraneter error” 신호가 "1"이 되면 검지.', 'Parameter error 현시 (출입문은 정상작동 가능)', 'DCU 자체내의 EEPROM으로부터 parameter 데이터 로딩 실패', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d999edb5-3547-417e-a6bd-41f19d425d07', '0706', '706', 'HVAC#7 - 냉난방장치1 증발기2 과부하', 'M4', 'C', 'HVAC-냉난방장치1 증발기2 과부하', 'C', 'HVAC', 'HVAC 냉방 작동 중 냉난방장치1 증발기 모터에 과부하 발생 +', 'UNIT1냉방 작동 불가', ' +1) 냉방 작동 중 UNIT1의 증발기 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CREF2와 연결된 THR6이 Trip 됨. +', 'UNIT1의 증발기모터의 과부하조건을 해소하여 정상 가능 상태로 만들고, THR6 및 마이콤 전원 리셋', '1) 냉난방 배전반의 점검커버를 열고, THR6의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR6의 전류 세팅값이 3A에 맞춰져 있는지 확인하여, 아닐 경우, (+) 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동시킨 후, THR6의 2차측 2, 4, 6 단자에서 각 단자 간 상간 전압이 AC 380V로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 증발기 단품 상태 에서 점검을 한다. +7) THR6의 2차측 2, 4, 6 단자에서 각 단자 간 권선저항이 모두 같은지 확인한다. (±10% 이하) (증발기 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT1의 증발기 모터의 결선을 해제한 후 4극 및 6극 모터의 권선저항을 확인 후, 문제가 있을 경우, 증발기 모터를 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR6 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d99bd268-f7c5-4582-abad-47f37ac0906f', '0507', '507', 'DCU#1 1위(R1) - 초기화 실패', 'Tc1', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 “Calibration failure” 신호가 “1”이 되면 검지 +', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터 고장, 장애물감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우 +', '초기화 실패를 야기한 고장코드를 확인하여 조치 후, 재닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인한다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d99fed59-1cd8-46e2-a0a7-96b890f1ec68', '0517', '517', 'DCU#1 5위(R3) - 출입문 장애물로 인한 열림 실패', 'Tc1', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Open failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘 상태로 대기', '도어열림 중 3회 장애물감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 열림 시, 장애물감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d9ac35ce-4546-4aa9-9489-553bb15b9b0d', '0521', '521', 'DCU#3 1위(R1)-모듈 상태 이상', 'M2', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 "01"또는 "00"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d9ad4037-e0ae-4f8b-bdf3-2f126c6801ea', '0511', '511', 'DCU#6 4위(L2) - 출입문 닫힘 리미트 스위치2 고장', 'M3', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 “DCS2 Failure(Right)” 신호가 “1”이 되면 검지 +', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d9c7c724-6ad6-4b82-94af-b269550fe694', '0218', '218', 'BECU#8-인통선로직 비정상', 'Tc2', 'C', 'BECU-인통선로직 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit1 “인통선로직 비정상” 신호가 "1"이 되면 검지.', '해당 차량 인통선로직 비정상 검지 현시 및 해당차량 정상적인 제동제어 불가.(상용제동지령에 따른 제어)', '해당 차량의 추진선택(P), 제동선택(B) 신호가 동시에 ON 됨.', '해당 차량의 추진선택(P), 제동선택(B) 신호가 정상작동(상보적으로 작동) 될 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 한 뒤, 마스콘을 제동 7단으로 5초간 취급하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d9cbe5c4-1366-4c33-83dc-0a8b0d0dd9b9', '0180', '180', 'VVVF#3-MCOK 고착(MCOKNO)', 'M2', 'C', 'VVVF-MCOK 고착(MCOKNO)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT34의 Bit5 “MCOKNO” 신호가 "1"이 되면 검지.', null, 'MCOK 개방조건에서 투입상태 유지 시 고장검지.', '동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) 주회로 차단기함 내에 MCOK의 주접점을 확인하여 고착여부를 확인한다. +2) 주회로 차단기함 내에 MCOK의 보조접점을 확인하여 고착여부를 확인한다. +3) 추진제어장치 계전기 유니트에 MCHK1( +2) 계전기 상태를 확인하여 고착여부를 확인한다. +4) 추진제어장치 시험기를 이용하여 TCU(통합제어기) 시험을 실시하여 이상여부를 확인한다. +5) 상기의 점검부분에 이상이 있을경우 관련부품을 교체한다.', null, '3', '2025-10-12 01:21:37.578803+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d9e6188b-f2a9-4fab-9ec5-144b07034121', '0722', '722', 'HVAC#1 - 냉난방장치2 압력스위치1(DPS) 냉매부족', 'Tc1', 'C', 'HVAC-냉난방장치2 압력스위치1(DPS) 냉매부족', 'C', 'HVAC', '냉난방장치2 냉매 압력스위치1 저압 발생 +', 'UNIT2CYCLE1냉방 기능 불가', 'UNIT2DSP1측 냉매압력이 30초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우 +', '냉매압력이 정상수치 2±0.5(kgf/cm2) 이상유지하도록 하고, 마이콤전원을 리셋', '1) 배전반 점검 커버를 열고 마이콤 전원을 리셋한 후, 냉방 가동 시, CREF4의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)를 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설 여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안 되는 것을 확인한 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d9eb0670-923a-42e7-91c6-649f194824d4', '0741', '741', 'HVAC#8-전자접촉기 보조히터4(AHEK) 고장', 'Tc2', 'C', 'HVAC-전자접촉기 보조히터4(AHEK) 고장', 'C', 'HVAC', 'HVAC 보조난방기 작동 중 AHEK4 전자접촉기 고장 발생.', 'UNIT2 보조난방기 전난방 시 반난방만 작동', '보조난방기 작동 중 2.5초 이상동안 AHEK4 작동 feedback 신호가 수신되지 않는 경우', 'AHEK4 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) AHEK4를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, AHEK4와 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('d9f7116b-ddc5-43f3-ae64-0b789788e6d9', '0508', '508', 'DCU#3 5위(R3) - 출입문 모터/인코더 고장', 'M2', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 “Motor / Encoder failure” 신호가 “1”이 되면 +검지 +', '출입문 정상동작 불가', ' +1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우(인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터/인코더 회로 가 손상된 경우 +', '모터/인코더 및 DCU가 정상 상태이고, 전기적 연결 상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있는지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. ※ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. ? DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. ? DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) ? DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('d9f84c72-578f-45fc-a118-6418d3119569', '0507', '507', 'DCU#5 2위(L1) - 초기화 실패', 'T2', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 “Calibration failure” 신호가 “1”이 되면 검지 +', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터 고장, 장애물감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우 +', '초기화 실패를 야기한 고장코드를 확인하여 조치 후, 재닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인한다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('da0e472a-e300-40d7-9e29-01103ad96f9b', '0513', '513', 'DCU#5 6위(L3)-모듈 상태체크 에러', 'T2', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 "Module check error” 신호가 "1"이 되면 검지.', 'Module check error 현시 (출입문은 정상작동 가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태체크 기능에 이상이 생긴 경우 고장 발생.', 'DCU의 'A'모듈과 'B'모듈 간, 상태체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('da143cf3-898f-4762-b37a-d4080d5aae7f', '0518', '518', 'DCU#2 3위(R2) - 출입문 Enable 신호 에러', 'M1', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 “Enable signal error” 신호가 “1”이 되면 검지 +', 'DCU 출입문Enable신호에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드 시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을 때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드 시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입 상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호 장치로부터의 출입문 열림 명령 신호) 취급 시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함. +', '해당 출입문 enable 신호수신', '1) AUTO/MCS 모드 시에는 YARD 모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인 한다. (YARD/FMC 모드 시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('da264827-ab42-4c1e-bde5-ec6193e354d4', '0190', '190', '보조공기압축기 장시간 기동(Car2)', 'M1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('da3b2701-9c35-496f-a86c-decf8adc599b', '1526', '1526', 'TCMS 데이타버스2 우측라인 통신 이상(Car6)', 'M3', 'C', 'TCMS 데이터버스2 우측라인 통신 이상', 'C', 'TCMS', 'TCMS의 초기 기동 시 자기진단에 의한 2중계 메인통신선 중 2계 메인통신 이상 검지 시 +', '1) SL-NET 2중계이므로 데이터버스 1계로 정상통신, 운행에 지장 없음. +2) 초기기동 자기진단 시 2중계를 점검하여 2계측의 이상이 검지되었다는 점검 필요용 메시지', '초기 기동 시 SL-NET 1계와 2계를 각각 통신 후 비교하여 1계는 정상통신이 되나 2계는 정상통신이 안 되는 경우 +', '정상 수리 후 차량 전체 재기동하여 SL-NET 1계와 2계 모두 정상통신이 되는 경우', '1) 고장검출호차와 고장검출 우측호차와의 SL-NET 통신 2계 정상여부 확인(예 : 고장호차가 3호차인 경우, 1-2-3-4-5-6-7-8에서 3호차의 우측 즉, 3-4호차간 SL-NET 2계 통신 상태 점검 필요) +2) 고장검지호차의 SCM PCB 교체 정상여부 확인 +3) 고장검지호차의 우측호차 SCM PCB 교체 정상여부 확인 +4) 고장검지호차와 고장검지 우측호차의 SL-NET 2계 메인통신 배선의 연결 상태 확인 +5) 2 ~ 4번에도 정상적으로 복귀되지 않는 경우, CU/TU ASS'Y 교체(백보드 확인 필요)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('da5808e3-82d1-41fd-bbc7-75db56ccf1b0', '0210', '210', 'BECU#4-3축속도신호의 비정상', 'T1', 'C', 'BECU-3축속도신호의 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit1 “3축속도신호의 비정상” 신호가 "1"이 되면 검지.', '해당 차량 3축속도신호의 비정상 검지 현시 및 해당 차량 활주제어 불가.', '해당 차량의 3축 속도센서 고장 발생.', '해당 차량의 3축 속도센서가 정상적일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('da63609c-072e-4867-8c75-81bd462490eb', '0510', '510', 'DCU#7 1위(R1)-출입문 닫힘 리미트 스위치1 고장', 'M4', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 "DCS1 Failure(Leftt)” 신호가 "1"이 되면 검지.', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('da6ee70c-7328-4c18-a646-215f2c7c5429', '0511', '511', 'DCU#8 3위(R2)-출입문 닫힘 리미트 스위치2 고장', 'Tc2', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 "DCS2 Failure(Right)” 신호가 "1"이 되면 검지.', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('da6fa54c-904a-400a-904e-623602251cee', '0510', '510', 'DCU#7 1위(R1) - 출입문 닫힘 리미트 스위치1 고장', 'M4', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 “DCS1 Failure(Leftt)” 신호가 “1”이 되면 검지 +', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('da799149-cd35-4ea6-ae88-118c4b4745dd', '0500', '500', 'DCU#7 5위(R3) 통신고장', 'M4', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS간 RS485 통신고장이 검지되면 발생.', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐 상태 등의 변화가 없음.', '1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우', '해당차량의 DCU 및 CU/TU 의 전원이 정상상태이고, 통신라인 연결상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜저 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는데도 지속적으로 통순고장이 검지되면, DCU의 X2,X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('da86b184-5351-4e74-b6c2-3185b9d8ab4b', '1702', '1702', '노선안내표시기#5 고장(Car6)', 'M3', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('da891e05-6980-4b42-86e8-7d03a5ffed11', '0233', '233', 'AS 코크#2 차단(Car7)', 'M4', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('da8b4aa9-fef9-4af7-80e9-a7d474bdb7c3', '0502', '502', 'DCU#4 3위(R2) - 출입문 장애물검지', 'T1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('da94e011-6959-479a-9395-760027e5d81b', '0063', '63', 'MAIN FUSE#1 DISCONNECTED(Car6)', 'M3', 'W', 'MAIN FUSE#1 DISCONNECTED(Car6)', 'W', 'TCMS', '차량으로부터 AUX FUSE DISCONNECTED 신호 입력시', 'VVVF고압 차단으로 추진 불능', '해당 퓨우즈 소손', '해당 퓨우즈 교체', null, ' +REC20210HN0', '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('da9d0c52-7b51-4f71-beb1-3ec875ae67e2', '0403', '403', 'SIV#8 - AC 출력저전압(ACUV)', 'Tc2', 'C', 'SIV-AC 출력저전압(ACUV)', 'C', 'SIV', '보조전원장치(SIV)의 RS485 데이터 중 SIV-TCMS SD TEXT4의 Bit1 “ACUV” 신호가 “1”이 되면 검지 +', '1) TCMS 화면하단 또는 고장화면에 ‘SIVAC 출력 저전압 검지' 표시됨. +2) 보조전원장치(SIV)는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 보조전원장치 중고장이 발생됨. +5) 중고장이 발생되면 TCMS 일반화면에 보조전원장치 상태 붉은색으로 표기되며, 연장급전 됨.', '보조전원장치(SIV)에서 출력되는 ACU, V, W 상의 전압이 250V 이하일 경우 검지됨. +', '1) 경고장이 발생할 경우 보조전원장치(SIV) 자동 재기동에 의해 재기동 됨. +2) 중고장이 발생했을 경우 조치 완료 후 보조전원장치(SIV) 리셋으로 고장 소거됨.', '1) 상기 고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 보조전원장치(SIV) 고장기록을 수집하여 출력되는 3상의 AC 전압값 확인함. +3) 특정상의 전압치가 비정상적일 경우 특정상에 해당되는 GDU, 전압센서, AC 출력단 결선을 확인한다. +4) 전압센서와 보조전원장치(SIV) 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작 상태를 시험기를 통해 확인한다. +6) 출력단 각 상의 절연상태 및 각상과 접지 간의 절연상태를 확인한다. +7) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('dab34d59-46c2-4090-94e7-c219930ab940', '0742', '742', 'HVAC#4 - 전자접촉기 보조히터3(AHEK) 고장', 'T1', 'C', 'HVAC-전자접촉기 보조히터3(AHEK) 고장', 'C', 'HVAC', 'HVAC 보조난방기 작동 중 AHEK3 전자접촉기 고장 발생 +', 'UNIT2 보조난방기 전난방 시 반난방만 작동', '보조난방기 작동 중 2.5초 이상 동안 AHEK3 작동 feedback 신호가 수신되지 않는 경우 +', 'AHEK3 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) AHEK3을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, AHEK3과 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('dabe0378-cd7b-4e0a-933f-85f6bbc091f1', '1501', '1501', '차상신호장치(ATC) 회로차단기 차단(Car1)', 'Tc1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('dabe6406-536e-4070-b482-cbff624f088a', '1509', '1509', '열차분리#1 검지(Car7)', 'M4', 'B', '열차분리#1 검지', 'B', 'TCMS', '차량의 열차분리#1 검지 +', '1) 1위측 열차검지신호(SOTS1) 검출 시 화면에 현시 +2) 실제 열차분리 시 검지되었는지 확인 필요 +(실제 열차분리 시 다른 차량 이 접근하지 못하도록 선조치 필요) +3) 실제 열차 분리 시 비상제동 안전루프에 의해 비상제동 체결됨. +4) 열차 분리에 따라 분리 위치부터 차량제어장치(TU)와 반대편 편성제어장치(CU)의 통신고장 동반 발생', 'TU의 1위측 열차분리신호(SOTS1) 신호 활성(LOW) 입력 시 고장 현시 +', 'TU의 1위측 열차분리신호(SOTS1) 신호 정상(HIGH) 입력 시 소거됨.', '1) 실제 열차분리 시 관제에 연락하고, 지시에 따름 +2) 회로 차단기 ELCB ON 상태 확인 +3) TU의 1위측 열차분리신호 DIM3 PCB의 입력채널(SOTS +1) 점검/교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('dac64a97-9242-443c-9d32-fe505056f072', '0224', '224', 'BECU#3-파트너차 ECU 고장(PECUF)', 'M2', 'C', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('dae3074f-a675-4d3c-83a3-7ef5b8f68a38', '0720', '720', 'HVAC#7-실내온도 센서1 고장', 'M4', 'C', 'HVAC-실내온도 센서1 고장', 'C', 'HVAC', '객실 실내온도 센서1 고장 발생', '실내온도 센서1 고장현시', '온도센서 검지범위는 -45~85도 (820~1330옴) 인데, 2초 이상 검지범위를 벗어나는 경우', '온도센서 검지 값이 2초 이상 허용온도 범위 내 일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820~1330옴 을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우, 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('dae53e53-cfd1-4904-a16f-ab0080817732', '0099', '99', '조도제어기 고장(Car8)', 'Tc2', 'D', '조도제어기 고장(TC2)', 'D', 'TCMS', '차량으로부터 ILLUMINATION CONTROLLER FAULT 신호 입력시', '조도제어기내에서 FAULT 발생시 릴레이 접점을 CLOSE 하여 FAULT 신호를 차량으로 보냄.', '조도제어기에 전원이 연결된 상태에서 조도제어기내의 컨트롤 보드상의 마이콤이 동작하지 않을 때 FAULT 신호를 보냄', '컨트롤 보드상의 마이콤 정상 동작 시', '조도제어기내의 컨트롤 보드 교체', ' +REC30330HN0', '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('daf8ac5f-7916-4390-966e-8260bff90986', '0725', '725', 'HVAC#5-냉방시험 불가능', 'T2', 'C', 'HVAC-냉방시험 불가능', 'C', 'HVAC', '운전실 TCMS에서 냉방시험 작동을 할 때, 냉방운전이 불가능한 경우 발생.', '냉방 시험 운전 불가능', '실내 또는 실외 온도가 10도 미만일 경우, (환절기 또는 겨울철에 냉방 가동시 시스템 보호를 위한 온도조건)', '실내 또는 실외 온도가 10도 이상일 때, 냉방시험 작동', '1) TCMS 화면에서 실내 또는 실외 온도가 10도 미만인지 확인한다. +2) 실내 및 실외 온도가 10도 이상인대도 냉방 가동이 되지 않을 시, TCMS-마이콤 간 통신불량이 있는지 확인하고 조치한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('daf937eb-636c-49dc-8c5b-105c2483e7b3', '0519', '519', 'DCU#1 6위(L3)-ZVR 신호 에러', 'Tc1', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 "ZVR signal error” 신호가 "1"이 되면 검지.', '출입문이 강제로 닫히게 되고, 열림은 불가능', '1) 차량 ZVR 신호가 없는 상태 (차량 주행상태) 에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함.', '해당출입문 ZVR 신호 수신', '1) 차량이 주행중이라면, 차량이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('db0d022f-7c00-460a-8442-4135a1c26e3c', '0512', '512', 'DCU#8 3위(R2) - 파라미터 로딩 실패', 'Tc2', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 “Paraneter error” 신호가 “1”이 되면 검지 +', 'Parametererror 현시(출입문은 정상작동 가능)', 'DCU 자체 내의 EEPROM으로부터 parameter데이터 로딩 실패 +', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('db0fd72e-df9e-4fe3-a849-f22715e39769', '0519', '519', 'DCU#4 6위(L3)-ZVR 신호 에러', 'T1', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 "ZVR signal error” 신호가 "1"이 되면 검지.', '출입문이 강제로 닫히게 되고, 열림은 불가능', '1) 차량 ZVR 신호가 없는 상태 (차량 주행상태) 에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함.', '해당출입문 ZVR 신호 수신', '1) 차량이 주행중이라면, 차량이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.392739+00', null, '로템40량(2018)-1단계', 'Rotem'), ('db16d566-51d5-4cdf-abda-b2be4610da8f', '0725', '725', 'HVAC#7 - 냉방시험 불가능', 'M4', 'C', 'HVAC-냉방시험 불가능', 'C', 'HVAC', '운전실 TCMS에서 냉방시험 작동을 할 때, 냉방운전이 불가능한 경우 발생 +', '냉방시험 운전 불가능', '실내 또는 실외온도가 10도 미만일 경우(환절기 또는 겨울철에 냉방가동 시 시스템 보호를 위한 온도조건) +', '실내 또는 실외온도가10도 이상일 때, 냉방시험작동', '1) TCMS 화면에서 실내 또는 실외 온도가 10도 미만인지 확인한다. +2) 실내 및 실외 온도가 10도 이상인데도 냉방 가동이 되지 않을 시, TCMS-마이콤 간 통신불량이 있는지 확인하고 조치한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('db1b0147-a281-4264-b080-1e0cb445acbb', '0878', '878', '실내객실표시기(PIB) 고장(Car#8)', 'Tc2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('db1cce42-c62c-4ba4-906d-fba540d80f3b', '0507', '507', 'DCU#3 1위(R1)-초기화 실패', 'M2', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 "Calibration failure” 신호가 "1"이 되면 검지.', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터고장, 장애물 감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우', '초기화 실패를 야기한 고장 코드를 확인하여 조치 후, 재 닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('db324fe9-80b2-45e6-83fc-313591a9a660', '0209', '209', 'BECU#5 - 4축 속도신호의 비정상', 'T2', 'C', 'BECU-4축속도신호의 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit0 “4축속도신호의 비정상” 신호가 “1”이 +되면 검지 +', '해당 차량 4축속도신호의 비정상 검지 현시 및 해당 차량 활주제어불가', '해당 차량의 4축속도센서 고장 발생 +', '해당 차량의 4축속도센서가 정상적일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('db38190c-3a83-498e-b7d6-7d4abc79606b', '1209', '1209', 'FDU#1 - 스위치 고장', 'Tc1', 'C', 'FDU-스위치 고장', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT5의 Bit4 “Switch Fault” 신호가 “1”이 되면 검지 +', 'Switch Fault 현시 및 FDU의 조작버튼 동작 안 됨(화재검지 및 기타 기능에는 상관없음)', ' +1) FDU가 부팅될 때 스위치가 눌려진 상태(3.3V 전압이 인가된 상태)인 경우 +2) FDU가 부팅될 때 스위치 고장으로 인하여 항상 눌러진 상태(3.3V 전압이 인가된 상태)에 있는 경우 +', 'FDU가 부팅될 때 스위치가 눌려진 상태(3.3V 전압이 인가된 상태)가 아닌 경우', '1) 고장이 발생한 수신기의 스위치 상태 확인 및 점검 +2) FDU의 전원을 리셋하여 소거여부 확인 +3) 문제가 지속될 경우, 수신기 교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('db393a02-5894-4d99-bb89-942a0dadaf67', '0151', '151', 'VVVF#6-통신이상검지(MONIA_ERR)', 'M3', 'C', 'VVVF-통신이상검지(MONIA_ERR)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT31의 Bit0 “MONIA_ERR” 신호가 "1"이 되면 검지.', null, 'TCMS와 VVVF간 통신이상 발생 시 고장검지.', 'TCMS와 VVVF간 정상통신 가능 시 소거됨.', '1) 추진제어장치(VVVF) 리셋 실시 후 통신고장 소거됨을 확인. +2) 통신고장 소거가 되지 않을 경우 추진제어장치 PUZ 보드 신품으로 교체후 통신고장 소거여부 확인. +3) 위 조건에도 고장이 소거되지 않을 경우, TCMS-추진제어장치간 RS485 통신케이블 연결상태 점검.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('db4565f7-2b53-4f19-84e7-2ba7b9d922f2', '1504', '1504', '냉방장치용 AC 회로차단기 차단(Car1)', 'Tc1', 'W', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('db4cc730-7887-43b8-8029-5f26db51418a', '0079', '79', '화재검지(Car2)', 'M1', 'W', null, null, 'FDU', null, null, null, null, null, null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('db58338d-f8ca-4e91-ad5e-abaa87aae2b0', '0164', '164', 'VVVF#3-역행/회생 전류이상검지(PBCD)', 'M2', 'C', 'VVVF-부정회생(PBCD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT32의 Bit5 “PBCD” 신호가 "1"이 되면 검지.', null, '역행지령 중 회생동작 또는, 회생중 역행동작 시 고장검지.', '1) 역행 고장검지 2초 후 자동 재기동 +2) 제동 제동 OFF시 고장 소거', '1) 상기 고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) CTS 전류센서의 외관상태 및 저전압 커넥터 체결상태를 확인한다. +3) CTS 전류센서의 방향을 확인한다. +4) CTS 전류센서로부터 TCU(통합제어장치)까지의 저전압 배선을 확인한다. +5) CTS 커넥터의 P15B1~F15C1의 전압이 +15V, N15B1~F15C1의 전압이 -15V임을 확인한다. +6) 상기의 점검부분에 이상이 있을 경우 관련부품을 교체한다.', null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('db63f24f-69c6-4804-bfb8-c885815ffd27', '0509', '509', 'DCU#4 3위(R2) - 출입문 잠김 리미트 스위치 고장', 'T1', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 “DLS Failure” 신호가 “1”이 되면 검지 +', '출입문 잠김 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('db671d64-470f-4a68-8915-b513ab32fed6', '0129', '129', 'VVVF-IPM W상 이상검지(GDFW) (Car3)', 'M2', 'C', 'VVVF-IPM W상 이상검지(GDFW)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT34의 Bit3 “GDFW” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 'IPM W상 이상검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치 내부 IPM에 과전류, 과온이 검지될경우.', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반배전반의 VVVFIC nfb 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 견인전동기로 출력되는 3상의 전류치 확인함. +3) 특정상의 전류치가 비정상적일 경우 특정상에 해당되는 IPM, 전류센서, 모터결선을 확인한다. +4) 전류센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작상태를 시험기를 통해 확인한다. +6) IPM 전원공급기의 전원연결상태 또는 광케이블의 연결상태와 배선상태를 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.656536+00', null, '다대48량(2015)', 'Rotem'), ('db6b2f79-66c0-478f-9426-691ceca4ab58', '1206', '1206', 'FDU#7-감지기3 고장', 'M4', 'C', 'FDU-감지기3 고장', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 "Detector1 State” 신호가 "10"이 되면 검지.', '감지기 고장상태 현시(자동 소거 안됨)', '1) 감지기로부터 데이터 응답이 없는경우. +2) 감지기로부터 수신된 데이터의 CRC가 맞지 않는경우 +3) 감지기로부터 수신된 데이터의 ID가 송신 ID와 일치하지 않는경우', 'FDU 전원 리셋 후 감지기로부터 정상적으로 데이터가 수신된 경우', '1) FDU 전원 리셋 후 고장 소거 여부 확인 +2) 정상 동작중인 감지기와 위치 교환 후 FDU 전원 리셋 및 고장 상태 확인 +3) 동일한 감지기에서 고장 발생시 감지기 교체 +4) 동일한 위치에서 고장 발생시 감지기 라인 점검', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('db761844-febf-4457-965d-1a854bd8439a', '0749', '749', 'HVAC#3 - 380V 전원고장', 'M2', 'C', 'HVAC-380V 전원고장', 'C', 'HVAC', 'HVAC 메인 전원 AC 380V 전원 고장 발생 +', 'HVAC 냉방 및 난방 기능 불가', '차량으로부터 공급되는 AC 380V가 입력되지 않는 경우 +', '차량으로부터 AC 380V 전압이 정상적으로 입력', '1) 차량으로부터 AC 380V 전압이 정상적으로 입력되는지 확인한다. +2) 차량 전원이 정상일 경우, 냉난방 배전반의 CBLVD 차단기가 꺼져 있는지 확인 후, 꺼져있을 경우 켠다. +3) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('db8a15ae-ba07-40dd-b637-47211e22efd6', '0508', '508', 'DCU#4 5위(R3)-출입문 모터/인코더 고장', 'T1', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 "Motor / Encoder failure” 신호가 "1"이 되면 검지.', '출입문 정상동작 불가', '1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우 (인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터 / 인코더 회로가 손상된 경우', '모터/인코더 및 DCU가 정상상태이고, 전기적 연결상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있느지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. +★ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. + +1. DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. +2. DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) +3. DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('db8eae00-90aa-400f-b00d-890f43b7efc5', '0508', '508', 'DCU#3 2위(L1) - 출입문 모터/인코더 고장', 'M2', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 “Motor / Encoder failure” 신호가 “1”이 되면 +검지 +', '출입문 정상동작 불가', ' +1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우(인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터/인코더 회로 가 손상된 경우 +', '모터/인코더 및 DCU가 정상 상태이고, 전기적 연결 상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있는지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. ※ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. ? DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. ? DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) ? DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('db951fa8-5cbe-4f87-8dd7-e6702224c26b', '0505', '505', 'DCU#3 6위(L3) - 출입문 입력 고전압', 'M2', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 “1”이 되면 검지 +', '고전압 상태(그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상 +', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('db9c1589-3be6-4dfb-a652-f07cfccf3ca0', '0200', '200', 'BECU#4 통신고장', 'T1', 'B', 'BECU-통신고장', 'B', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT23의 ‘Life sign'이 변하지 않음. +', '해당 차량 통신고장현시 및 해당 차량의 제동압력(BCP) 등의 데이터가 반응하지 않음. (고장은 현시되나 제동제어는 정상적일 수 있음.)', 'BECU 전원 CBOFF 혹은 통신연결 불량 +', 'BECU와 TCMS 간 RS485 통신이 복귀되어 BECU-TCMSSDTEXT23의'Lifesign'이 변동 시 소거', 'BECU를 리셋(BECUCBOFF/ON) 후 복귀여부를 확인, 리셋 후 복귀되지 않을 경우 관제 보고하고 지시에 따를 것', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('dbc126bd-4076-40ac-bfbb-ece16306f36d', '0159', '159', 'VVVF#7 - 제어전원전압 이상(PWM2) (CLVD_P2)', 'M4', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('dbd12488-1531-4d86-ad65-245d8cc6466b', '0880', '880', '측면제어기(SOB) 매립형 고장(Car#8)', 'Tc2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('dbec98f1-d1d1-4f01-a348-2e4894ee8688', '0201', '201', 'BECU#7 - 덤프밸브 고장(후미대차)', 'M4', 'C', 'BECU-덤프밸브고장(후미대차)', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit0 “덤프밸브고장(후미대차)” 신호가 “1”이 +되면 검지 +', '해당 차량 덤프밸브 고장(후미대차)검지 현시 및 해당 차량 활주제어 불가', '해당 차량 후미대차의 덤프밸브가 작동하지 않음. +', '해당 차량 후미대차의 덤프밸브가 정상작동 시 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('dbf6a171-375c-47e7-8f7c-c0ae5b2620fa', '0517', '517', 'DCU#3 6위(L3) - 출입문 장애물로 인한 열림 실패', 'M2', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Open failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘 상태로 대기', '도어열림 중 3회 장애물감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 열림 시, 장애물감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('dc0a3951-96e1-47a4-a4a5-48dc32adb888', '0750', '750', 'HVAC#2-냉난방장치2 보조히터 과열', 'M1', 'C', 'HVAC-냉난방장치2 보조히터 과열', 'C', 'HVAC', 'HVAC2 보조난방기 작동 중 과열 발생.', 'UNIT2 보조난방기 난방 불가', '보조난방기 작동 중 1초 이상동안 온도가 70도 이상으로 과온센서 정상 신호가 수신되지 않는 경우', '1초 이상동안 60도 미만으로 온도가 떨어져 과온센서 정상 신호가 수신되는 경우', '1) 보조난방기가 꺼진 상태에서도 문제 발생 시, 과온 센서를 교체한다. +2) 센서 교체 후에도 문제가 발생되면, 배선에 문제가 없는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('dc13f011-d483-42fc-8195-12cff3e90aa7', '0740', '740', 'HVAC#2 - 전자접촉기 증발기1(CREF) 고장', 'M1', 'C', 'HVAC-전자접촉기 증발기1(CREF) 고장', 'C', 'HVAC', 'HVAC 냉방 작동 중 CREF1 전자접촉기 고장 발생 +', 'UNIT1 냉방 작동 불가', '냉방 작동 중 2.5초 이상 동안 CREF1 작동 feedback 신호가 수신되지 않는 경우 +', 'CREF1 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CREF1을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CREF1과 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('dc21f01b-dec7-4d27-969d-5a9278aa9d4d', '0722', '722', 'HVAC#4 - 냉난방장치2 압력스위치1(DPS) 냉매부족', 'T1', 'C', 'HVAC-냉난방장치2 압력스위치1(DPS) 냉매부족', 'C', 'HVAC', '냉난방장치2 냉매 압력스위치1 저압 발생 +', 'UNIT2CYCLE1냉방 기능 불가', 'UNIT2DSP1측 냉매압력이 30초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우 +', '냉매압력이 정상수치 2±0.5(kgf/cm2) 이상유지하도록 하고, 마이콤전원을 리셋', '1) 배전반 점검 커버를 열고 마이콤 전원을 리셋한 후, 냉방 가동 시, CREF4의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)를 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설 여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안 되는 것을 확인한 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('dc2419a2-c944-4b72-a0b7-9cb2d8fde806', '1106', '1106', 'PSD#1-지상 PSD 장애(2계) ', 'Tc1', 'D', null, null, 'PSD', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('dc270da7-2291-4ed0-bf96-8aaa736a68b9', '0153', '153', 'VVVF#7 - FC 용량저하(FCLCD)', 'M4', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('dc304f91-0a23-48c4-acf9-05da11a6d526', '0500', '500', 'DCU#4 2위(L1) 통신고장', 'T1', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS간 RS485 통신고장이 검지되면 발생.', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐 상태 등의 변화가 없음.', '1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우', '해당차량의 DCU 및 CU/TU 의 전원이 정상상태이고, 통신라인 연결상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜저 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는데도 지속적으로 통순고장이 검지되면, DCU의 X2,X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('dc3140fb-31d6-46fe-bb5c-73cfc31aa6d7', '0741', '741', 'HVAC#7-전자접촉기 보조히터4(AHEK) 고장', 'M4', 'C', 'HVAC-전자접촉기 보조히터4(AHEK) 고장', 'C', 'HVAC', 'HVAC 보조난방기 작동 중 AHEK4 전자접촉기 고장 발생.', 'UNIT2 보조난방기 전난방 시 반난방만 작동', '보조난방기 작동 중 2.5초 이상동안 AHEK4 작동 feedback 신호가 수신되지 않는 경우', 'AHEK4 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) AHEK4를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, AHEK4와 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('dc339866-da57-43d7-a119-e3a5ded4e78a', '0402', '402', 'SIV#8-배터리 충전기 출력 과전류(BCOC)', 'Tc2', 'C', 'SIV-배터리 충전기 출력 과전류(BCOC)', 'C', 'SIV', '보조전원장치(SIV)의 RS485 데이터 중 SIV-TCMS SD TEXT4의 Bit0 “BCOC” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 '배터리 충전기 출력과전류 검지' 표시됨. +2) 보조전원장치(SIV)는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 보조전원장치 중고장이 발생됨. +5) 중고장이 발생되면 TCMS 일반화면에 보조전원장치 상태 붉을색으로 표기되며, 연장급전 됨.', '보조전원장치(SIV)의 배터리 충전부에서 출력되는 DC전류가 300A 이상일 경우 검지됨.', '1) 경고장이 발생할 경우 보조전원장치(SIV) 자동 재기동에 의해 재기동 됨. +2) 중고장이 발생했을 경우 조치 완료 후 보조전원장치(SIV) 리셋으로 고장 소거됨.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 보조전원장치(SIV) 고장기록을 수집하여 배터리 충전부에서 출력되는 DC 전류치 확인함. +3) 전류치가 비정상적일 경우 전류센서, DC 출력단 결선을 확인한다. +4) 전류센서와 보조전원장치(SIV) 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작상태를 시험기를 통해 확인한다. +6) 출력단의 절연상태 및 접지간의 절연상태를 확인한다. +7) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('dc3b1652-3e53-4f90-90c0-a3f59a1bb661', '0737', '737', 'HVAC#1-전자접촉기 증발기4(CREF) 고장', 'Tc1', 'C', 'HVAC-전자접촉기 증발기4(CREF) 고장', 'C', 'HVAC', 'HVAC 냉방작동 중 CREF4 전자접촉기 고장 발생.', 'UNIT2 냉방 작동 불가', '냉방작동 중 2.5초 이상동안 CREF4 작동 feedback 신호가 수신되지 않는 경우', 'CREF4 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CREF4를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CREF4와 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('dc561f7e-85d4-499e-9136-c3cdc8095dc9', '0514', '514', 'DCU#6 4위(L2) - 출입문 닫힘 시간 초과', 'M3', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 “Close time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 닫힘 동작 시간이 7초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도한 후, ‘장애물로 인한 닫힘 실패' 고장과 함께 ‘Close time out' 고장이 함께 현시 +', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('dc69cbbb-b0c3-44bb-a0ef-5b6a86b8bdd6', '0506', '506', 'DCU#8 1위(R1)-출입문 입력 저전압', 'Tc2', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 "1"이 되면 검지.', '저전안 상태 (출입문 동작이 심하게 느려지거나 작동조차 안될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('dc785a93-600b-4c56-9de1-08440311fbc3', '0514', '514', 'DCU#7 4위(L2)-출입문 닫힘 시간 초과', 'M4', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 "Close time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 닫힘 동작시간이 7초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도 한 후, '장애물로 인한 닫힘실패' 고장과 함께 'Close time out' 고장이 함께 현시', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('dc787d9c-87cc-469e-adf7-d64f5d2e03ff', '0520', '520', 'DCU#8 4위(L2) - 이중계 절체 동작', 'Tc2', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 “Module switchover” 신호가 “1”이 되면 검지 +', '이중계 절체 동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러) 이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A'모듈 및 ‘B'모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('dc974ef6-6f6e-4226-aafb-5b674e91ea7d', '0891', '891', '비상인터폰#2(PEI) 고장(Car#8)', 'Tc2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('dc9e08d6-489e-4660-a08c-8b640e70a88f', '0146', '146', 'VVVF#7 - 과온검지1(THDL)', 'M4', 'C', 'VVVF-Stack 과온검지1(THDL)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT30의 Bit3 “THDL” 신호가 “1”이 되면 검지 +', '1) TCMS 화면 하단 또는 고장화면에 ‘스택 과온검지1' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동이 되지 않으며 중고장으로 처리됨. +3) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉은색으로 표기되며, HSCB, LB1, 2 개방되어 동력 손실 발생함.', '추진제어장치 냉각기의 온도가 105도 이상인 조건에서 검지 +', '추진제어장치 리셋으로 고장 소거됨.', '1) 상기고장이 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 냉각기의 손상이 없는지 확인한다. +3) 추진제어장치 내부에 IPM에 손상이 없는지 확인한다. +4) 인버터 유니트 내부에 온도센서 및 결선에 이상이 없는지 확인한다. +5) DIN 보드의 동작 상태를 시험기를 통해 확인한다. +6) IPM 전원공급기의 전원연결 상태 또는 광케이블의 연결 상태와 배선상태를 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지 간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('dc9f6315-f7be-43a9-8a55-f7a87c2fd89f', '0206', '206', 'BECU#8 - RAM 점검 고장', 'Tc2', 'C', 'BECU-RAM 점검 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit5 “RAM 점검 고장” 신호가 “1”이 되면 검지 +', '해당 차량 RAM 점검 고장검지 현시 및 해당 차량 정상적인 제동제어 불가', '해당 차량 BECU의 자가진단 시 고장 발생 +', '해당 차량 BECU의 자가진단 시 정상적일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('dcb85860-8ee3-4eda-98e0-51590c8d3d34', '0501', '501', 'DCU#5 2위(L1)-출입문 차단', 'T2', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('dcc30ce1-4c15-476c-a4b9-f1ff7b525a37', '0511', '511', 'DCU#1 3위(R2) - 출입문 닫힘 리미트 스위치2 고장', 'Tc1', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 “DCS2 Failure(Right)” 신호가 “1”이 되면 검지 +', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('dcc4c1d2-78a2-4d6a-a08d-a20e1ccd52ef', '0153', '153', 'VVVF#3-FC 용량저하(FCLCD)', 'M2', 'C', 'VVVF-FC 용량저하(FCLCD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT31의 Bit2 “FCLVD” 신호가 "1"이 되면 검지.', null, '필터캐패시터 용량이 8900uF이하일 때 검지.', '제어전원 OFF', '1) FC용량 측정 후 8900uF 미만일 경우 신품으로 교체. +2) 주 회로 차단기함 내부 충전저항값을 측정하여 기준치(10Ω±10%)이내임을 확인.', null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('dcd1fe4c-aef4-410d-b4fe-a6cd877c670f', '0752', '752', 'HVAC#4-배기댐퍼 닫힘고장', 'T1', 'C', 'HVAC-배기댐퍼 닫힘고장', 'C', 'HVAC', '차량 배기댐퍼가 닫혀있는 상태에서 배기댐퍼 닫힘 리미트 스위치가 작동되지 않음', '배기댐퍼 닫힘 고장 현시', '배기댐퍼를 닫힘으로 제어했으나 닫힘 리미트 스위치 입력이 없을 경우', '배기댐퍼 닫힘 상태에서 리미트 스위치 입력이 정상적으로 입력', '1) 배기댐퍼가 닫힌 상태에서 닫힘 리미트 스위치가 정상적으로 작동되었는지 확인한다. +2) 닫힘 리미트 스위치가 정상작동 되었음에도 문제가 발생될 경우, 스위치를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('dcd42908-bf71-4ff4-8e93-9c00b40f583d', '0513', '513', 'DCU#2 5위(R3) - 모듈 상태체크 에러', 'M1', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 “Module check error” 신호가 “1”이 되면 검지 +', 'Modulecheckerror현시(출입문은 정상작동가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태 체크 기능에 이상이 생긴 경우 고장 발생 +', 'DCU의 ‘A' 모듈과 ‘B' 모듈 간, 상태 체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('dcd6136c-2be7-4412-8da3-c2fdc0246c04', '0729', '729', 'HVAC#1-냉난방장치2 리턴 센서 고장', 'Tc1', 'C', 'HVAC-냉난방장치2 리턴 센서 고장', 'C', 'HVAC', '냉난방장치2의 리턴 센서 고장 발생', '냉난방장치2 리턴센서 고장현시', '온도센서 검지범위는 -45~85도 (820~1330옴) 인데, 2초 이상 검지범위를 벗어나는 경우', '온도센서 검지 값이 2초 이상 허용온도 범위 내 일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820~1330옴 을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우, 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('dd0ccb3b-0f23-44ef-86e4-17d581802648', '0238', '238', 'BECU#8 - 4축 스키드신호', 'Tc2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('dd1ff1f8-fde1-4b08-b053-6f734fbcada5', '1516', '1516', 'CU1 모듈고장 - AUX1(Car8)', 'Tc2', 'C', 'CU1, 2 모듈고장 - AUX1', 'C', 'TCMS', 'CU의 AUX1 PCB가 이 정상적으로 인식되지 않아 점검이 필요할 때 +', '1) CU1의 AUX1 PCB가 모듈 고장이 발생하면, CU2로 자동 절체됨. (CU2로 자동 절체되면 운행에는 지장이 없음) +2) CU2 자동절체 시 화면의 우측 상단 경고장글자 하단에 “B.SYS” 라는 표시가 나타남. +3) 자동절체 시 열차 운행에는 관계없음. +4) CU2의 AUX1 모듈고장 시는 CU1 정상동작시 운행에는 지장이 없음.', 'CU AUX1의 ID를 정상적으로 검출하지 못할 때 화면에 현시 +', 'CU AUX1의 ID를 정상적으로 검출하는 경우 소거됨.', '1) CU의 AUX1 PCB 교체 +2) 불량 해소가 되지 않을 경우, 순차적으로 MCPU, SCM, DIM PCB를 교체하여 정상여부 확인', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('dd2f51ca-dbaf-4095-bb4d-8059a45b11a8', '0500', '500', 'DCU#6 2위(L1) 통신고장', 'M3', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS간 RS485 통신고장이 검지되면 발생.', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐 상태 등의 변화가 없음.', '1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우', '해당차량의 DCU 및 CU/TU 의 전원이 정상상태이고, 통신라인 연결상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜저 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는데도 지속적으로 통순고장이 검지되면, DCU의 X2,X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('dd405faf-d143-425f-abc5-fac8119226b2', '0720', '720', 'HVAC#3 - 실내온도 센서1 고장', 'M2', 'C', 'HVAC-실내온도 센서1 고장', 'C', 'HVAC', '객실 실내온도 센서1 고장 발생 +', '실내온도센서1 고장 현시', '온도센서 검지범위는 -45 ~ 85도(820 ~ 1,330Ω)인데, 2초 이상 검지범위를 벗어나는 경우 +', '온도센서 검지값이 2초 이상 허용온도 범위 내일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820 ~ 1,330Ω을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('dd4c2b3c-3f27-414c-8cd2-69ea47fcd388', '0080', '80', '화재검지(Car3)', 'M2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('dd540058-cfe7-4700-9fbf-e20209eda8c5', '1704', '1704', '노선안내표시기#3 고장(Car2)', 'M1', 'C', '노선안내표시기#2 고장', 'C', 'PIC', 'PIC 장치의 노선안내표시기#2이 고장이 났을 때 발생 +', '1) 노선안내표시기 화면 미현시 +2) 노선안내표시기 안내 화면 오현시', '통신고장 +', '통신 재개 시', '1) 이더넷 스위치 링크 확인 +2) 이더넷 케이블 점검 +3) 제어보드 및 전원보드 교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('dd5464fe-184a-40b4-8202-5efb0b190d63', '0511', '511', 'DCU#7 3위(R2)-출입문 닫힘 리미트 스위치2 고장', 'M4', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 "DCS2 Failure(Right)” 신호가 "1"이 되면 검지.', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('dd552558-24f2-41cf-afe9-5df2733e7abf', '0301', '301', 'ATC#8 - 과속경고', 'Tc2', 'W', 'ATC-과속경고', 'W', 'ATC', 'ATC의 RS485 데이터 중 ATC-TCMS SD TEXT11의 Bit0 “Over Speed Warning” 신호가 “1”이 되면 +검지 +', '1) MMI화면에 열차과속검지에 대한경고메시지현시 +2) MMI에서 과속경보음 출력 +3) 상용만 제동 체결', 'MMI 제한속도 대비 실제속도가 +1Km/h 이상인 경우 +', '열차속도를 제한속도 이하로 감속', '제한속도 대비 열차속도가 감속되었는지 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('dd62983f-ea06-4011-a928-a9c0a085d40f', '0517', '517', 'DCU#1 3위(R2) - 출입문 장애물로 인한 열림 실패', 'Tc1', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Open failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘 상태로 대기', '도어열림 중 3회 장애물감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 열림 시, 장애물감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('dd6d6ed0-d715-4144-bf25-0fa7f5264ec8', '0517', '517', 'DCU#6 6위(L3)-출입문 장애물로 인한 열림 실패', 'M3', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Open failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘상태로 대기', '도어 열림 중 3회 장애물 감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 열림 시, 장애물 감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('dd702541-0498-4572-aaa3-648d03eaf667', '1210', '1210', 'FDU#2 - 메모리 고장', 'M1', 'C', 'FDU-메모리 고장', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT5의 Bit6 “Memory Fault” 신호가 “1”이 되면 검지 +', '1) Memory Fault 현시 +2) FDU의 이벤트 기록 및 읽기 동작 안 됨. +3) FDU 환경설정 정보 로딩 실패(차량 번호, 주차시간, 절전시간 등의 설정값을 기본값으로 로딩)', '메모리 연결 포트의 이상 혹은 배드섹터 발생(메모리 접근 및 읽기, 쓰기가 실패한 경우) +', '메모리의 접근 및 읽기, 쓰기 성공', '1) FDU의 전원을 리셋하여 소거여부 확인 +2) 문제가 지속될 경우, 수신기 교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('dd70c746-f7fb-4908-a0b0-ae8fcec010c9', '0520', '520', 'DCU#8 1위(R1)-이중계 절체 동작', 'Tc2', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 "Module switchover' 신호가 "1"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('dd77d6f2-01c2-4ff7-b9af-eb9506bb3c60', '0503', '503', 'DCU#8 5위(R3) - 출입문 내부 비상핸들 취급(EED)', 'Tc2', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('dd786d20-9c8c-416c-b749-4bb83686bc1a', '0217', '217', 'BECU#7-회생제동달성 비정상', 'M4', 'C', 'BECU-회생제동달성 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit0 “회생제동달성 비정상” 신호가 "1"이 되면 검지.', '해당 차량 회생제동달성 비정상 검지 현시 및 해당차량 정상적인 전공 교차제어 불가.', '해당 차량의 회생제동달성 신호가 정상범위를 벗어남(5.0~95.0%).', '해당 차량의 회생제동달성 신호가 정상범위일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. +소거되지 않을 경우 해당 차량 추진제어장치 리셋(CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('dd7f45c9-2d37-461f-a95d-ce9e537e2945', '1522', '1522', 'TCMS 데이타버스1 좌측라인 통신 이상(Car8)', 'Tc2', 'C', 'TCMS 데이터버스1 좌측라인 통신 이상', 'C', 'TCMS', 'TCMS의 초기 기동 시 자기진단에 의한 2중계 메인통신선 중 1계 메인통신 이상 검지 시 +', '1) SL-NET 2중계이므로 데이터버스 2계로 정상통신, 운행에 지장 없음. +2) 초기기동 자기진단 시 2중계를 점검하여 1계측의 이상이 검지되었다는 점검 필요용 메시지', '초기 기동 시 SL-NET 1계와 2계를 각각 통신 후 비교하여 2계는 정상통신이 되나 1계는 정상통신이 안 되는 경우 +', '정상 수리 후 차량 전체 재기동하여 SL-NET 1계와 2계 모두 정상통신이 되는 경우', '1) 고장검출호차와 고장검출 좌측호차와의 SL-NET 통신 1계 정상여부 확인(예 : 고장호차가 3호차인 경우 1-2-3-4-5-6-7-8에서 3호차의 좌측, 즉 2-3호차 간 SL-NET 1계 통신 상태 점검 필요) +2) 고장검지호차의 SCM PCB 교체 정상여부 확인 +3) 고장검지호차의 좌측호차 SCM PCB 교체 정상여부 확인 +4) 고장검지호차와 고장검지 좌측호차의 SL-NET 1계 메인통신 배선의 연결 상태 확인 +5) 상기 2 ~ 4번 점검에도 정상적으로 복귀되지 않는 경우, CU/TU ASS'Y 교체(백보드 확인 필요)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('dd8047cc-0ee4-43d7-ac2c-d1826cd13922', '0002', '2', 'CU2 통신고장', 'Tc1', 'B', 'CU2 통신고장(TC1)', 'B', 'TCMS', '중앙장치(CU)의 좌측 CU1의 통신고장(또는 우측 CU2의 통신고장) +', 'CU1 통신고장 현시, 정상적으로 CU2로 정상적으로 절체되면 CU1 통신고장만 현시되고 차량 운행에 지장없음. +CU2 통신고장의 경우,(CU1이 정상이면) CU2와 연결된 SIV, DCU, HVAC, FDU, BMS, PSD, CMSB 등의 통신고장과 함께 현시됨. (해당 장치로부터의 고장정보등을 현시하지 못함으로 주의 운행 필요) +CU1과 CU2 모두 이상이 있을 경우, DU 일반화면상 모든 정보 표출 불가(출입문 회색 현시, 주요장치 '--'로 현시, 시간정보 정지됨.) +CU1에 통신고장이 현시되었다가 사라지는 것이 반복되거나 화면에 현시되는 정보들이 불안정하게 흔들릴경우가 있음 +(이 경우, CU1이 불안정한 상태로 CU2로 마스터가 절체되었다가 CU1이 다시 마스터로 복귀하는 과정이 반복되면서 발생하는 현상으로 운행중에 발생했다면 CU1의 전원을 차단하고 운행) +', 'CU2가 CU1의 통신정보를 2초이상 수신받지 못할 경우 해당고장 현시, 일반적으로 VCPU보드의 문제로 해당 VCPU 보드를 교체하거나, 또는 메인 통신 보드인 VARCT 보드의 문제, 또는 단순히 CU의 전원이 차단된 경우임. +', 'CU1이 정상적으로 통신을 재개할 경우 소거됨. +', '1) CU의 전원차단 CB를 확인. 전원차단 CB가 정상 ON이 되어 있다면 VPS보드의 전원 LED가 정상적으로 ON이 되어 있는지 확인. (VPS 보드에 멀티미터를 이용하여 5V가 출력되는지 확인(검수)하여 5V가 출력되지 않는다면 VPS보드 교체) +2) CU의 리셋(전원차단 CB OFF->ON)후에도 소거가 되지 않을 경우, VCPU보드를 교체 +(VCPU 교체전 누적 주행거리, 적산전력량, 휠경 설정값을 기록해두고, 교체 후 입력한다.) +3) 위 조건에도 고장이 소거되지 않을 경우, VARCT 보드, VDI, VDO, VAIO 보드 등을 순차적으로 교체 후, 상태를 확인한다.', null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('dd804c7f-0a02-46d4-b4b5-fc80b7d1eed4', '0508', '508', 'DCU#3 1위(R1)-출입문 모터/인코더 고장', 'M2', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 "Motor / Encoder failure” 신호가 "1"이 되면 검지.', '출입문 정상동작 불가', '1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우 (인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터 / 인코더 회로가 손상된 경우', '모터/인코더 및 DCU가 정상상태이고, 전기적 연결상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있느지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. +★ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. + +1. DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. +2. DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) +3. DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('dd8da6f5-66f1-4708-8aa0-f6782e093fb1', '0505', '505', 'DCU#7 6위(L3) - 출입문 입력 고전압', 'M4', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 “1”이 되면 검지 +', '고전압 상태(그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상 +', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ddb1e88b-e0b5-44c6-910f-65e57c43c5bc', '1001', '1001', 'CMSB#1 - CM 출력과부하', 'Tc1', 'C', 'CMSB-CM 출력과부하', 'C', 'CMSB', 'CMSB의 RS485 데이터 중 CMSB-TCMS SD TEXT3의 Bit1 “출력 과부하” 신호가 “1”이 되면 검지 +', '1) TCMS 화면 하단 또는 고장화면에 ‘CM 출력과부하' 표시됨. +2) 바이패스 모드로 전환되고, CM 기동 시 ‘바이패스 기동'으로 표시됨.', 'CM 기동 시 출력전류가 정격전류의 150%(7.5A) ~ 200%(10A) 사이 전류가 1분간 지속적 으로 기동할 경우 검지됨. +', '1) 차량 전원 OFF +2) CMSB 내부의 표시기 패널 RESET 버튼 누름', '0) 정상운행 후, 검수고에 입고하여 아래와 같이 조치한다. +1) 상기고장은 고장 소거 후, 재현시험을 진행하여 지속적으로 발생될 경우 아래와 같이 조치한다. +2) 공기압축기(CM) 출력전류을 확인한다. (공기압축기 매뉴얼 참조)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ddb9213e-90c4-4e91-a916-786e5c6f0d50', '0717', '717', 'HVAC#1 - CO2 센서2 고장', 'Tc1', 'C', 'HVAC-CO2 센서2 고장', 'C', 'HVAC', '객실 CO2 센서2 고장 발생 +', 'CO2 센서2 고장 현시', 'CO2 센서의 검지범위는 0 ~ 4,000ppm(2 ~ 10Vdc)인데, 1초 이상 출력전압이 2Vdc(0ppm) 미만으로 떨어지는 경우 +', 'CO2 센서 검지값이 1초 이상 2Vdc(0ppm) 이상 지속되는 경우', '1) 전원을 인가한 상태에서 CO2 센서 커버를 열고 테스터기를 통해 ‘OUT2' 단자와 ‘G' 단자 간의 전압이 2Vdc 미만인지 확인한다. +2) 만약 전압이 2Vdc 이상인데도 고장이 지속될 경우 마이콤을 교체한다. +3) 만약 전압이 2Vdc 미만으로 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ddbc48cf-7ce0-4017-94c8-04ce6dbe809e', '0501', '501', 'DCU#8 2위(L1) - 출입문 차단', 'Tc2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ddc4d73f-6704-42e0-a79e-cf414cc02dd7', '0516', '516', 'DCU#4 1위(R1) - 출입문 장애물로 인한 닫힘 실패', 'T1', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Close failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림 상태로 대기', '도어 닫힘 중 3회 장애물감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ddd717d2-8e28-4aac-afbd-c2f05fee56e1', '0215', '215', 'BECU#6-후미대차 AS압력센서고장', 'M3', 'C', 'BECU-후미대차 AS압력센서 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit6 “후미대차 AS압력센서 고장” 신호가 "1"이 되면 검지.', '해당 차량 후미대차 AS압력센서 고장 검지 현시 및 해당차량 정상적인 응하중 제동제어 불가.', '해당 차량의 후미대차 AS 압력센서(AS3, AS4) 고장.', '해당 차량의 후미대차 AS 압력센서(AS3, AS4)가 정상일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ddd931e1-87e4-4fa0-a48f-70ef19fdbc38', '0136', '136', 'VVVF#6-OVT 전류센서 이상검지(OVCTD)', 'M3', 'C', 'VVVF-OVT 고장 과전류 검지(OVCTD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT29의 Bit1 “OVCTD” 신호가 "1"이 되면 검지.', null, 'OVT의 동작 조건에서 동작하지 않았을 때 중고장 발생.', '동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) OVCT 외관파손 및 커넥터 분리 유무 확인. +2) OVRe 저항값 측정.(기준값 6.4Ω) +3) OVT UNIT과 OVRe의 주 회로 결선상태 확인 +4) OVT UNIT의 IGBT 크랙 발생 유무 확인. +5) OVT UNIT의 PCB기판 상태 확인. +6) OVCT 커넥터의 P15A1~F15A1의 전압이 +15V임을 확인한다. +7) OVCT 커넥터의 N15A1~F15A1의 전압이 -15V임을 ���인한다. +8) 상기의 점검부분에 이상이 있을 경우 관련부품을 교체한다.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ddda96b6-c6cc-49a9-9faa-8416614edfc3', '0115', '115', 'VVVF-Stack 과온검지2(OTD2) (Car2)', 'M1', 'C', 'VVVF-Stack 과온검지2(OTD2)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT32의 Bit2 “OTD2” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 '스택과온검지2' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동이 되지 않으며 중고장으로 처리됨. +3) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치 냉각기의 온도가 105도 이상인 조건에서 검지.', '1) 추진제어장치 리셋으로 고장 소거됨.', '1) 상기고장이 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 냉각기의 손상이 없는지 확인한다. +3) 추진제어장치 내부에 IPM에 손상이 없는지 확인한다. +4) 인버터 유닛 내부에 온도센서 및 결선에 이상이 없느지 확인한다. +5) DIN 보드의 동작상태를 시험기를 통해 확인한다. +6) IPM 전원공급기의 전원연결상태 또는 광케이블의 연결상태와 배선상태를 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.578803+00', null, '다대48량(2015)', 'Rotem'), ('dde98695-8aca-41d5-bfd7-09d1816915df', '0500', '500', 'DCU#2 5위(R3) 통신고장', 'M1', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS 간 RS485 통신고장이 검지되면 발생 +', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐상태 등의 변화가 없음.', ' +1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우 +', '해당 차량의 DCU 및 CU/TU의 전원이 정상상태이고, 통신 라인 연결 상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜져 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적 으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는 데도 지속적으로 통신고장이 검지되면, DCU의 X2, X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상 체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ddf2c6de-e9bb-441e-be6f-b92f006bcec8', '0512', '512', 'DCU#7 2위(L1)-파라미터 로딩 실패', 'M4', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 "Paraneter error” 신호가 "1"이 되면 검지.', 'Parameter error 현시 (출입문은 정상작동 가능)', 'DCU 자체내의 EEPROM으로부터 parameter 데이터 로딩 실패', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ddf64ecb-d672-4976-9ae5-3718273e83b1', '0747', '747', 'HVAC#4 - 전자접촉기 차량히터2(CRRHT) 고장', 'T1', 'C', 'HVAC-전자접촉기 차량 히터2(CRRHT) 고장', 'C', 'HVAC', '객실 난방기 작동 중 CRRHT2 전자접촉기 고장 발생 +', '객실 전난방 시 1/3난방만 작동', '객실 전난방 작동 중 2.5초 이상 동안 CRRHT2 작동 feedback 신호가 수신되지 않는 경우 +', 'CRRHT2 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CRRHT2를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRRHT2와 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ddf68d85-8753-4e38-ae59-d9a3aa3f5c24', '0232', '232', 'BC 코크(차하#2) 차단(Car8)', 'Tc2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ddfa8857-8732-49d0-85e2-676a8f4e0a82', '0114', '114', 'VVVF-HSCB 트립검지(HBTF) (Car7)', 'M4', 'B', 'VVVF-HSCB 트립검지(HBTF)', 'B', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT32의 Bit1 “HBTF” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 'HSCB 자기트립검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동이 되지 않으며 중고장으로 처리됨. +3) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치 입력전류가 1500A 이상인 조건.', '1) 추진제어장치 리셋으로 고장 소거됨.', '1) 상기고장이 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 고장기록의 FC 전압 및 입력전류 확인. +3) 추진제어장치 내부에 접지흔적 확인 및 고압회로 점검. +4) 전류/전압 센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작상태를 시험기를 통해 확인한다. +6) IPM 전원공급기의 전원연결상태 또는 광케이블의 연결상태와 배선상태를 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.71571+00', null, '다대48량(2015)', 'Rotem'), ('de016d68-a7ea-4f36-84f4-f613057e1837', '0516', '516', 'DCU#5 3위(R2) - 출입문 장애물로 인한 닫힘 실패', 'T2', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Close failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림 상태로 대기', '도어 닫힘 중 3회 장애물감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('de03d7c8-f5ae-44b1-b323-8a79af8cb3d2', '0506', '506', 'DCU#4 2위(L1)-출입문 입력 저전압', 'T1', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 "1"이 되면 검지.', '저전안 상태 (출입문 동작이 심하게 느려지거나 작동조차 안될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('de079495-6af7-49ba-9430-e43aede21c6b', '1210', '1210', 'FDU#8-메모리 고장', 'Tc2', 'C', 'FDU-메모리 고장', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT5의 Bit6 “Memory Fault” 신호가 "1"이 되면 검지.', '1) Memory Fault 현시 +2) FDU의 이벤트 기록 및 읽기 동작 안됨. +3) FDU 환경설정 정보 로딩 실패(차량번호, 주차시간, 절전시간등의 설정값을 기본값으로 로딩)', '메모리 연결 포트의 이상 혹은 배드섹터 발생(메모리 접근 및 읽기, 쓰기가 실패한 경우)', '메모리의 접근 및 읽기, 쓰기 성공', '1) FDU의 전원을 리셋하여 소거여부 확인 +2) 문제가 지속될 경우, 수신기 교체', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('de09a017-49b4-4fbe-b12a-124ae43ce42f', '0519', '519', 'DCU#2 6위(L3)-ZVR 신호 에러', 'M1', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 "ZVR signal error” 신호가 "1"이 되면 검지.', '출입문이 강제로 닫히게 되고, 열림은 불가능', '1) 차량 ZVR 신호가 없는 상태 (차량 주행상태) 에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함.', '해당출입문 ZVR 신호 수신', '1) 차량이 주행중이라면, 차량이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.392739+00', null, '로템40량(2018)-1단계', 'Rotem'), ('de100ee7-6e5b-474b-8336-aeb0d694a456', '0915', '915', 'TRAIN RADIO#8-CVD (차량영상장치) 고장', 'Tc2', 'D', 'TRAIN RADIO-CVD (차량영상장치) 고장', 'C', 'RADIO', 'Train Radio의 RS485 데이터 중 Train Radio-TCMS SD TEXT15의 Bit3 “CVD' 고장” 신호가 "1"이 되면 검지.', 'CCTV 영상 저장 불가', 'HW 고장, 메모리 고장', '제어기 리셋', null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('de2e566b-3009-4ba4-9cc1-9f3c9bfa0055', '0501', '501', 'DCU#5 6위(L3)-출입문 차단', 'T2', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('de3c97f3-628f-4eff-8a74-c4c9077cb171', '0202', '202', 'BECU#5 - 덤프밸브 고장(전두대차)', 'T2', 'C', 'BECU-덤프밸브고장(선두대차)', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit1 “덤프밸브고장(선두대차)” 신호가 “1”이 되면 검지 +', '해당 차량 덤프밸브고장(선두대차)검지 현시 및 해당 차량 활주제어불가', '해당 차량 선두대차의 덤프밸브가 작동하지 않음. +', '해당 차량 선두대차의 덤프밸브가 정상작동 시 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('de403ab1-9e1e-4254-ab8c-c59e2110321a', '0508', '508', 'DCU#8 4위(L2) - 출입문 모터/인코더 고장', 'Tc2', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 “Motor / Encoder failure” 신호가 “1”이 되면 +검지 +', '출입문 정상동작 불가', ' +1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우(인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터/인코더 회로 가 손상된 경우 +', '모터/인코더 및 DCU가 정상 상태이고, 전기적 연결 상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있는지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. ※ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. ? DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. ? DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) ? DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('de611e1e-ea66-401c-9316-b16b58d64973', '1510', '1510', '열차분리#2 검지(Car1)', 'Tc1', 'B', '열차분리#2 검지', 'B', 'TCMS', '차량의 열차분리#2 검지 +', '1) 2위측 열차검지신호(SOTS2) 검출 시 화면에 현시 +2) 실제 열차분리 시 검지되었는지 확인 필요(실제 열차분리 시 다른 차량 이 접근하지 못하도록 선조치 필요) +3) 실제 열차 분리 시 비상제동 안전루프에 의해 비상제동체결 됨. +4) 열차 분리에 따라 분리 위치부터 차량제어장치(TU)와 반대편의 편성제어장치(CU)의 통신고장 동반 발생', 'CU/TU의 2위측 열차분리신호(SOTS2) 신호 활성(LOW) 입력 시 고장 현시 +', 'CU/TU의 2위측 열차분리신호(SOTS2) 신호 정상(HIGH) 입력 시 소거됨.', '1) 실제 열차분리 시 관제에 연락하고, 지시에 따름 +2) 회로 차단기 ELCB ON 상태 확인 +3) CU인 경우 2위측 열차분리신호 DIM1 PCB의 입력채널(SOTS +2) 점검/교체 +4) TU인 경우 2위측 열차분리신호 DIM3 PCB의 입력채널(SOTS +2) 점검/교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('de7b8dc2-dc3c-4327-8fa8-9cb812ed4d2c', '1208', '1208', 'FDU#6 - 감지기4 고장', 'M3', 'C', 'FDU-감지기4 고장 (Car1~8)', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 “Detector1 State” 신호가 “10”이 되면 검지 +', '감지기고장상태현시(자동소거 안 됨)', ' +1) 감지기로부터 데이터 응답이 없는 경우 +2) 감지기로부터 수신된 데이터의 CRC가 맞지 않는 경우 +3) 감지기로부터 수신된 데이터의 ID가 송신 ID와 일치하지 않는 경우 +', 'FDU 전원 리셋 후 감지기로부터 정상적으로 데이터가 수신된 경우', '1) FDU 전원 리셋 후 고장 소거 여부 확인 +2) 정상동작중인 감지기와 위치 교환 후 FDU 전원 리셋 및 고장 상태 확인 +3) 동일한 감지기에서 고장 발생 시 감지기 교체 +4) 동일한 위치에서 고장 발생 시 감지기 라인 점검', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('decb6261-5c1d-4d14-929f-50e14418bffe', '0520', '520', 'DCU#3 6위(L3) - 이중계 절체 동작', 'M2', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 “Module switchover” 신호가 “1”이 되면 검지 +', '이중계 절체 동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러) 이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A'모듈 및 ‘B'모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ded49e68-1290-48a4-a85c-1b4c8798c1f9', '0502', '502', 'DCU#5 3위(R2) - 출입문 장애물검지', 'T2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ded683f2-4026-445d-bb86-c727c5205eb4', '0204', '204', 'BECU#6 - 응하중 비정상', 'M3', 'C', 'BECU-응하중 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit3 “응하중 비정상” 신호가 “1”이 되면 검지 +', '해당 차량 응하중 비정상 검지 현시', '해당 차량의 응하중 출력이 정상범위를 벗어남. +', '해당 차량 응하중 출력이 정상범위로 복귀 시 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ded75d09-588d-41cc-9a08-8bd29826cb0c', '0205', '205', 'BECU#4-회생제동요구 비정상', 'T1', 'C', 'BECU-회생제동요구 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit4 “회생제동요구 비정상” 신호가 "1"이 되면 검지.', '해당 차량 회생제동요구 비정상 검지 현시.', '해당 차량의 회생제동요구 출력이 정상범위를 벗어남.', '해당 차량 회생제동요구 출력이 정상범위로 복귀 시 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('deeb5d71-d77b-480a-93e2-d14c3997b65d', '0701', '701', 'HVAC#2 - 냉난방장치2 압축기2 과부하', 'M1', 'C', 'HVAC-냉난방장치2 압축기2 과부하', 'C', 'HVAC', 'HVAC 냉방 작동 중 냉난방장치2 압축기2 또는 응축기2 모터에 과부하 발생 +', '냉방 기능 저하(전냉방 시 반냉방으로 작동)', ' +1) 냉방 작동 중 UNIT2의 압축기2 또는 응축기2 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRCM4와 연결된 THR4가 Trip 됨. +', 'UNIT2의 압축기2 또는 응축기2 모터의 과부하조건을 해소하여 정상 가능 상태로 만들고, THR4 및 마이콤 전원 리셋', '1) 냉난방 배전반의 점검커버를 열고, THR4의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR4의 전류 세팅값이 11.5A에 맞춰져 있는지 확인하여, 아닐 경우, (+) 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동시킨 후, THR4의 2차측 2, 4, 6 단자에서 각 단자 간 상간 전압이 AC 380V로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 압축기 및 응축기 단품 상태에서 점검을 한다. +7) THR4의 2차측 2, 4, 6 단자에서 각 단자 간 권선저항이 모두 같은지 확인한다. (±10% 이하) (압축기2 및 응축기2 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT2의 압축기2 또는 응축기2 모터의 결선을 해제한 후 각 부품의 권선저항을 확인 후, 문제가 있는 부품을 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR4 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('def19b97-0fc4-4c97-be4a-4a506d733aca', '0513', '513', 'DCU#2 4위(L2) - 모듈 상태체크 에러', 'M1', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 “Module check error” 신호가 “1”이 되면 검지 +', 'Modulecheckerror현시(출입문은 정상작동가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태 체크 기능에 이상이 생긴 경우 고장 발생 +', 'DCU의 ‘A' 모듈과 ‘B' 모듈 간, 상태 체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('df24ec75-a833-40ec-83e0-e458a6051169', '1304', '1304', 'RTD#1-RTD 시스템 고장', 'Tc1', 'D', 'RTD-시스템 고장', 'D', 'RTD', 'RTD의 RS485 데이터 중 RTD-TCMS SD TEXT1의 Bit7 “RTD 시스템 고장” 신호가 "1"이 되면 검지.', '무선랜 상태 고장 또는 메모리 상태고장 중 하나가 발생할 경우 Set됨', 'RTD부팅시 SD메모리 인식불량 또는 브릿지보드상태 불량', '해당 고장의 기능의 정상동작.', '해당 고장을 확인하여 조치를 취한다.', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('df317145-e1a4-42ba-9e96-53d0a83ae39e', '0091', '91', '화재검지기 고장(Car6)', 'M3', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('df331942-c3a5-44d7-9983-9d0f2769fc79', '0511', '511', 'DCU#4 3위(R2) - 출입문 닫힘 리미트 스위치2 고장', 'T1', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 “DCS2 Failure(Right)” 신호가 “1”이 되면 검지 +', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('df355e9b-890e-4c37-a190-2b059231cf79', '0101', '101', 'VVVF#7-인버터 중고장(INV CUT)', 'M4', 'A', 'VVVF-인버터중고장(INV CUT)', 'A', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT1의 Bit4 “INV CUT” 신호가 "1"이 되면 검지.', '1) TCMS 일반화면에 추진제어장치 상태 붉은색으로 표시됨. +2) 추진제어장치 중고장 상태인 동력차에 동력 손실됨. +3) TCMS 상태화면의 추진제어장치 화면에 HSCB, LB1,2 개방된것으로 표시됨.', '1) 추진제어장치의 경고장이 1분에 3회 이상누적또는 지속적으로 검지되어 중고장 발생함. +2) 장치에 중대한 소손 가능성이 있는 고장에 대해서는 1번 발생으로 중고장 발생함.', '동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) 소거조건 내용과 같이 조치 후 중고장 소거됨을 확인함. +2) TCMS 고장데이터 또는 추진제어장치 고장 데이터를 통해 중고장이 발생한 고장 내역 수집함. +3) 수집된 고장내역에 따라 조치 실시함.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('df518321-6c0d-4053-9569-b0a2f06dc9e1', '0730', '730', 'HVAC#8-냉난방장치1 토출 센서 고장', 'Tc2', 'C', 'HVAC-냉난방장치1 토출 센서 고장', 'C', 'HVAC', '냉난방장치1의 토출 센서 고장 발생', '냉난방장치1 토출센서 고장현시', '온도센서 검지범위는 -45~85도 (820~1330옴) 인데, 2초 이상 검지범위를 벗어나는 경우', '온도센서 검지 값이 2초 이상 허용온도 범위 내 일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820~1330옴 을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우, 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('df578c2d-e8e6-4f41-83bb-6e410f88f136', '0516', '516', 'DCU#4 6위(L3) - 출입문 장애물로 인한 닫힘 실패', 'T1', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Close failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림 상태로 대기', '도어 닫힘 중 3회 장애물감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('df57d72e-20d3-44a7-828d-89dc160ec3c1', '0513', '513', 'DCU#4 2위(L1)-모듈 상태체크 에러', 'T1', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 "Module check error” 신호가 "1"이 되면 검지.', 'Module check error 현시 (출입문은 정상작동 가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태체크 기능에 이상이 생긴 경우 고장 발생.', 'DCU의 'A'모듈과 'B'모듈 간, 상태체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('df71fe34-97e3-4601-a38a-6d623ee961df', '1211', '1211', 'FDU#3 - 체크섬 고장', 'M2', 'C', 'FDU-체크섬 고장', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT5의 Bit7 “Checksum Fault” 신호가 “1”이 되면 검지 +', 'ChecksumFault 현시 및 FDU의 정상동작 불가능', '수신기펌웨어의 오류로 인한 체크섬 이상(MCU 내부 플래쉬메모리에 저장된 체크섬과 프로그램의 체크섬 계산값이 다를 경우) +', 'FDU가 부팅될 때 MCU 내부 플래쉬메모리에 저장된 체크섬과 프로그램의 체크섬 계산값이 같을 경우', '1) FDU의 전원을 리셋하여 소거여부 확인 +2) 문제가 지속될 경우, 수신기 교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('df7c9134-7554-4035-a414-fc3c93830a8f', '0225', '225', 'BECU#3-강제완해검지(CPRD)', 'M2', 'C', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('df93d282-903e-4c18-ac0d-9ab0a8a08b85', '0072', '72', '주차제동 바이패스 스위치 취급', 'Tc2', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('dfb284a8-4a10-48ae-8c2e-7488508b1733', '0904', '904', '비상인터폰 동작(Car#6 - 1)', 'M1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('dfbea1d5-74ab-4250-8631-ec4d58148903', '0158', '158', 'VVVF#7 - HSCB고착검지(HBNO)', 'M4', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('dfd2ed8e-df91-44b6-8789-e146126f681f', '0506', '506', 'DCU#3 1위(R1)-출입문 입력 저전압', 'M2', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 "1"이 되면 검지.', '저전안 상태 (출입문 동작이 심하게 느려지거나 작동조차 안될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('dfeab936-d3c8-4597-8de7-07fb7aee7083', '0520', '520', 'DCU#3 3위(R2) - 이중계 절체 동작', 'M2', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 “Module switchover” 신호가 “1”이 되면 검지 +', '이중계 절체 동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러) 이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A'모듈 및 ‘B'모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('dff6913c-6703-436c-8210-48ca129f02dd', '0505', '505', 'DCU#1 6위(L3) - 출입문 입력 고전압', 'Tc1', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 “1”이 되면 검지 +', '고전압 상태(그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상 +', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('dffed483-3c75-4d02-aaba-bcecdc14fe01', '1208', '1208', 'FDU#2-감지기4 고장', 'M1', 'C', 'FDU-감지기4 고장', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 "Detector1 State” 신호가 "10"이 되면 검지.', '감지기 고장상태 현시(자동 소거 안됨)', '1) 감지기로부터 데이터 응답이 없는경우. +2) 감지기로부터 수신된 데이터의 CRC가 맞지 않는경우 +3) 감지기로부터 수신된 데이터의 ID가 송신 ID와 일치하지 않는경우', 'FDU 전원 리셋 후 감지기로부터 정상적으로 데이터가 수신된 경우', '1) FDU 전원 리셋 후 고장 소거 여부 확인 +2) 정상 동작중인 감지기와 위치 교환 후 FDU 전원 리셋 및 고장 상태 확인 +3) 동일한 감지기에서 고장 발생시 감지기 교체 +4) 동일한 위치에서 고장 발생시 감지기 라인 점검', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e00a7918-38f4-41b6-872e-254f595d4696', '0219', '219', 'BECU#3 - 제동지령 비정상', 'M2', 'C', 'BECU-제동지령 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit2 “제동지령 비정상” 신호가 “1”이 되면 검지 +', '해당 차량 제동지령비정상 검지 현시 및 해당 차량 정상적인제동제어불가(상용제동지령에 따른 제어)', '해당 차량의 제동지령 신호가 정상범위를 벗어남. (5.0 ~ 95.0%) +', '해당 차량의 제동지령 신호가 정상범위일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 소거되지 않을 경우 해당 선택 운전실의 PWM 엔코더를 리셋(CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e0102be3-771d-499c-8809-8a77363eb2d0', '0501', '501', 'DCU#3 3위(R2)-출입문 차단', 'M2', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e0269b51-8c36-4f3b-bf47-962ea8086fdb', '0039', '39', 'DeadMan 스위치-경고', 'Tc1', 'W', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e02c18c1-ba45-4a72-959d-eff6f5516f20', '0500', '500', 'DCU#1 3위(R2) 통신고장', 'Tc1', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS간 RS485 통신고장이 검지되면 발생.', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐 상태 등의 변화가 없음.', '1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우', '해당차량의 DCU 및 CU/TU 의 전원이 정상상태이고, 통신라인 연결상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜저 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는데도 지속적으로 통순고장이 검지되면, DCU의 X2,X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e0362a98-2e71-49d0-847a-e5d45eeed612', '0157', '157', 'VVVF#2 - FC충전불량(FCD)', 'M1', 'C', 'VVVF-FC 충전불량검지(FCD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT33의 Bit6 “FCD” 신호가 “1”이 되면 검지 +', '1) TCMS 화면 하단 또는 고장화면에 ‘FC 충전 불량 검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생함. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉은색으로 표기되며, HSCB, LB1, 2 개방되어 동력 손실 발생함.', '추진제어장치 기동 시 FC전압이 1,000V 이하일 경우 검지됨. +', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반 배전반의 VVVFIC nfb 재투입 또는 차량 배터리 전원 재투입', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 FC전압에 이상이 있는지 확인한다. +3) 추진제어장치 내부 고전압부에 소손흔적이 있는지 확인한다. +4) LB Box 내부의 충전저항기의 소손이 없는지 확인한다. +5) FC에 연결된 부스바의 체결상태가 양호한지 확인한고, 부스바를 분리하여 FC의 Capacitance를 측정하여 이상이 없는지 확인한다. +6) 전압센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +7) SEN 보드의 동작 상태를 시험기를 통해 확인한다. +8) 견인전동기 각상의 절연상태 및 각상과 접지 간의 절연상태를 확인한다. +9) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e0482833-c897-4560-a942-1dc9aee1c852', '0510', '510', 'DCU#2 3위(R2) - 출입문 닫힘 리미트 스위치1 고장', 'M1', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 “DCS1 Failure(Leftt)” 신호가 “1”이 되면 검지 +', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e059ed14-f16a-40e1-8d94-dc8bcbe77815', '0507', '507', 'DCU#8 6위(L3) - 초기화 실패', 'Tc2', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 “Calibration failure” 신호가 “1”이 되면 검지 +', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터 고장, 장애물감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우 +', '초기화 실패를 야기한 고장코드를 확인하여 조치 후, 재닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인한다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e05eef8b-6068-49de-be1d-de55e7290ce1', '0507', '507', 'DCU#1 2위(L1)-초기화 실패', 'Tc1', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 "Calibration failure” 신호가 "1"이 되면 검지.', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터고장, 장애물 감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우', '초기화 실패를 야기한 고장 코드를 확인하여 조치 후, 재 닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e06e93b5-245a-4acc-b1e6-9b9299a2029a', '0138', '138', 'VVVF#6-입력과전류 검지(ISOC)', 'M3', 'C', 'VVVF-입력과전류 검지(ISOC)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT29의 Bit3 “ISOC” 신호가 "1"이 되면 검지.', null, '1) 입력전류 1800A 이상 검지 시 경고장 발생 +2) 1분 이내 3회 발생 시 중고장 발생.', '1) 경고장', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 추진제어장치에 입력되는 전류치 확인함. +3) 입력되는 전류치가 비정상적일 경우 추진제어장치 입력회로(HSCB, LB1,2, CHRe)를 점검한다.. +4) 추진제어장치 내의 전류센서와 추진제어장치 제어기 PUZ 보드에 연결되는 저전압 배선상태를 확인한다. +5) 추진제어장치 시험기를 이용하여 TCU(통합 제어장치)의 이상여부를 확인한다. +6) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e06ea4b9-53a4-495f-98cd-1dcc57d2226d', '0899', '899', '비상인터폰 동작(Car#3 - 2)', 'M2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e07b0927-ce16-4864-a957-8998c1351c49', '0750', '750', 'HVAC#8-냉난방장치2 보조히터 과열', 'Tc2', 'C', 'HVAC-냉난방장치2 보조히터 과열', 'C', 'HVAC', 'HVAC2 보조난방기 작동 중 과열 발생.', 'UNIT2 보조난방기 난방 불가', '보조난방기 작동 중 1초 이상동안 온도가 70도 이상으로 과온센서 정상 신호가 수신되지 않는 경우', '1초 이상동안 60도 미만으로 온도가 떨어져 과온센서 정상 신호가 수신되는 경우', '1) 보조난방기가 꺼진 상태에서도 문제 발생 시, 과온 센서를 교체한다. +2) 센서 교체 후에도 문제가 발생되면, 배선에 문제가 없는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e08136c7-2046-420a-b3e0-5dbb0c456ae4', '1203', '1203', 'FDU#1 - 감지기2 화재감지', 'Tc1', 'W', 'FDU-감지기2 화재감지 (Car1~8)', 'W', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 “Detector1 State” 신호가 “11”이 되면 검지 +', '화재상태현시(자동소거 안 됨.)', '하기 2가지 조건을 모두 만족하여야 화재신호가 출력 됨. (연동모드 동작) +1) 이웃한(앞 혹은 뒤에 위치한) 감지기 중 하나의 감지기라도 주의 혹은 화재상태에 있어야 함. +2) Detector1(해당 감지기)에서 측정된 연기농도가 15% 이상이거나 온도가 65℃ 이상인 경우 +', '1) FDU의 복귀버튼 조작 시 +2) FDU 전원 리셋 시', '1) 해당 감지기 위치의 화재 발생 여부 확인 +2) 화재 오감지일 경우 FDU의 복귀버튼 취급 +3) 오감지일 경우 감지기의 청소주기 확인(내부 먼지 제거)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e0a17a0e-2e05-479e-8936-790f9cf96f70', '0508', '508', 'DCU#8 6위(L3) - 출입문 모터/인코더 고장', 'Tc2', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 “Motor / Encoder failure” 신호가 “1”이 되면 +검지 +', '출입문 정상동작 불가', ' +1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우(인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터/인코더 회로 가 손상된 경우 +', '모터/인코더 및 DCU가 정상 상태이고, 전기적 연결 상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있는지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. ※ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. ? DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. ? DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) ? DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e0b55504-e934-470f-9dd2-d610198ec813', '1201', '1201', 'FDU#3 - 감지기1 화재감지', 'M2', 'W', 'FDU-감지기1 화재감지 (Car1~8)', 'W', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 “Detector1 State” 신호가 “11”이 되면 검지 +', '화재상태현시(자동소거 안 됨.)', '하기 2가지 조건을 모두 만족하여야 화재신호가 출력 됨. (연동모드 동작) +1) 이웃한(앞 혹은 뒤에 위치한) 감지기 중 하나의 감지기라도 주의 혹은 화재상태에 있어야 함. +2) Detector1(해당 감지기)에서 측정된 연기농도가 15% 이상이거나 온도가 65℃ 이상인 경우 +', '1) FDU의 복귀버튼 조작 시 +2) FDU 전원 리셋 시', '1) 해당 감지기 위치의 화재 발생 여부 확인 +2) 화재 오감지일 경우 FDU의 복귀버튼 취급 +3) 오감지일 경우 감지기의 청소주기 확인(내부 먼지 제거)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e0b98c26-422b-4c48-bacf-911c60e55653', '0325', '325', 'ATC#8-', 'Tc2', '0', null, null, '0', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e0bf006e-3af6-4669-88a4-5f960618fe8d', '0708', '708', 'HVAC#6-냉난방장치1 증발기1 과부하', 'M3', 'C', 'HVAC-냉난방장치1 증발기1 과부하', 'C', 'HVAC', 'HVAC 냉방작동 중 냉난방장치1 증발기 모터에 과부하 발생.', 'UNIT1 냉방 작동 불가', '1) 냉방작동 중 UNIT1의 증발기 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CREF1과 연결된 THR5가 Trip 됨.', 'UNIT1의 증발기 모터의 과부하 조건을 해소하여 정상 가능 상태로 만들고, THR5 및 마이콤 전원 리셋', '1) 냉난방배전반의 점검커버를 열고, THR5의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR5의 전류 세팅값이 3A에 맞춰져 있는지 확인하여, 아닐 경우, 십자 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동 시킨 후, THR5의 2차측 2,4,6 단자에서 각 단자간 상간 전압이 AC 380V으로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 증발기 단품 상태에서 점검을 한다. +7) THR5의 2차측 2,4,6 단자에서 각 단자간 권선저항이 모두 같은지 확인한다. (±10% 이하) (증발기 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT2의 증발기 모터의 결선을 해제한 후 4극 및 6극 모터의 권선저항을 확인 후, 문제가 있을 겨우, 증발기 모터를 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR5 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e0c5beb5-1137-42e7-9071-c2733925fdd5', '0137', '137', 'VVVF#7-전동기 과전류 검지(MMOCD)', 'M4', 'C', 'VVVF-전동기 과전류 검지(MMOCD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT29의 Bit2 “MMOCD” 신호가 "1"이 되면 검지.', null, '1) 견인전동기의 입력전류가 800A이상일 때 경고장 발생. +2) 1분 이내 3회 발생 시 중고장 발생.', '1) 경고장 +역행 고장검지 2초 후 자동 재기동 제동 제동 OFF시 고장 소거 +2) 중고장 +동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 견인전동기로 출력되는 3상의 전류치 확인함. +3) 특정상의 전류치가 비정상적일 경우 특정상에 해당되는 IGBT, 전류센서, 모터결선을 확인한다. +4) 전류센서와 추진제어장치의 PWM 보드에 연결되는 저전압 배선상태를 확인한다. +5) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +6) 추진제어장치 시험기를 이용하여 PWM 보드의 이상여부를 확인한다. +7) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e0c8d72e-c6bc-4585-9443-b30290bbf79b', '0149', '149', 'VVVF#6-FC 저전압검지(FCLVD)', 'M3', 'C', 'VVVF-FC 저전압검지(FCLVD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT30의 Bit6 “FCLVD” 신호가 "1"이 되면 검지.', null, '필터캐패시터 전압이 850V 이하 감압 시 고장발생', '1) 역행 고장검지 2초 후 자동 재기동 +2) 제동 제동 OFF시 고장 소거', '1) 상기고장이 간헐적으로 발생하는 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 FC전압에 이상이 있는지 확인한다. +3) 추진제어장치 내부 고전압부에 소손흔적이 있는지 확인한다. +4) FC에 연결된 버스바의 체결상태가 양호한지 확인한고, 버스바를 분리하여 FC의 Capacitance를 측정하여 이상이 없는지 확인한다. +5) 전압센서의 외관 및 단자 체결상태를 확인한다. +6) 추진제어장치 시험기를 이용하여 TCU(통합제어장치)의 이상여부를 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e0cc22d5-9cea-42a0-8feb-bc236095b20c', '0913', '913', 'TRAIN RADIO#1-TCI(열차통신장치) 고장', 'Tc1', 'C', 'TRAIN RADIO-TCI(열차통신장치) 고장', 'C', 'RADIO', 'Train Radio의 RS485 데이터 중 Train Radio-TCMS SD TEXT15의 Bit1 “TCI 고장” 신호가 "1"이 되면 검지.', '객실 방송, 비상 인터폰 기능 불능', 'HW 고장', '제어기 리셋', null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e0d54050-d6bf-42a7-a5a5-a0590cf60e2b', '1502', '1502', '기타장치용 DC 회로차단기 차단(Car6)', 'M3', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e0e9deee-112c-47f9-a31e-45bbe2b1b26a', '0854', '854', '비상인터폰#2(PEI) 고장(Car#5)', 'T2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e0fa0b0a-7ffd-4da4-ace0-173eff9a0662', '0501', '501', 'DCU#6 4위(L2) - 출입문 차단', 'M3', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e1275016-a7c8-4a87-b0fd-952bce1d77df', '1111', '1111', 'PSD#1-바이패스 상태', 'Tc1', 'W', null, null, 'PSD', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e12ca66d-fed0-4459-8fba-8b1d040faab9', '0504', '504', 'DCU#1 4위(L2) - 출입문 외부 비상핸들 취급(EAD)', 'Tc1', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e12f9a1d-e65b-411d-8592-23f8cdddb3cf', '0517', '517', 'DCU#6 6위(L3) - 출입문 장애물로 인한 열림 실패', 'M3', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Open failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘 상태로 대기', '도어열림 중 3회 장애물감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 열림 시, 장애물감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e132e75c-547d-4f21-a60d-30af8ef91c52', '1503', '1503', '난방장치용 AC 회로차단기 차단(Car1)', 'Tc1', 'W', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e15b230b-84a2-4a06-8a0c-faf4fcb5c927', '0502', '502', 'DCU#1 6위(L3)-출입문 장애물검지', 'Tc1', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e16598e3-f54e-4268-8c42-2af1085c47b9', '1703', '1703', '노선안내표시기#1 고장(Car8)', 'Tc2', 'C', '노선안내표시기#1 고장', 'C', 'PIC', 'PIC 장치의 노선안내표시기#1이 고장이 났을 때 발생 +', '1) 노선안내표시기 화면 미현시 +2) 노선안내표시기 안내 화면 오현시', '통신고장 +', '통신 재개 시', '1) 이더넷 스위치 링크 확인 +2) 이더넷 케이블 점검 +3) 제어보드 및 전원보드 교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e1672780-9c12-40b3-86fb-dd24e4fa2293', '0501', '501', 'DCU#1 5위(R3)-출입문 차단', 'Tc1', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e176a5c6-96ba-4a49-837d-9fa77d6ee7fc', '0209', '209', 'BECU#6 - 4축 속도신호의 비정상', 'M3', 'C', 'BECU-4축속도신호의 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit0 “4축속도신호의 비정상” 신호가 “1”이 +되면 검지 +', '해당 차량 4축속도신호의 비정상 검지 현시 및 해당 차량 활주제어불가', '해당 차량의 4축속도센서 고장 발생 +', '해당 차량의 4축속도센서가 정상적일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e186d628-0de3-4b41-bf01-fbc6a645b551', '0165', '165', 'VVVF#2 - OVT 오동작검지(OVTD)', 'M1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e1afa5ee-5ab5-4598-974c-b81d925522dc', '0169', '169', 'VVVF#3-상전류 동기 불평형 검지(RETRY)', 'M2', 'C', 'VVVF-탈조검지(RETRY)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT33의 Bit2 “RETRY” 신호가 "1"이 되면 검지.', null, '동기전동기의 회전자와 고정자의 위상차가 허용치 이상 발생시 고장검지.', '자동재기동', '1) 상기 고장이 간헐적으로 발생하는 경우 아래와 같이 조치한다. +2) 견인전동기의 취급 절차서에 따라 절연저항 및 내전압 시험을 실시한다. +3) CTU, CTW 전류센서의 외관 및 저전압 커넥터 연결상태를 확인한다. +4) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:37.578803+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e1fa5f13-9e3a-460c-b3f3-3905313825c2', '0412', '412', 'SIV#8-게이트 드라이버 고장, VY2상(GDFVY2)', 'Tc2', 'C', 'SIV-게이트 드라이버 고장, VY2상(GDFVY2)', 'C', 'SIV', '보조전원장치(SIV)의 RS485 데이터 중 SIV-TCMS SD TEXT5의 Bit2 “GDFVY2” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 'GDF VY 2상 이상검지' 표시됨. +2) 보조전원장치(SIV)는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 보조전원장치(SIV) 중고장이 발생됨. +5) 중고장이 발생되면 TCMS 일반화면에 보조전원장치(SIV) 상태 붉을색으로 표기되며, 연장급점 됨.', '보조전원장치(SIV) 내부 GDU에 과전류, 과온이 검지될경우.', '1) 경고장이 발생할 경우 보조전원장치(SIV) 자동 재기동에 의해 재기동 됨. +2) 중고장이 발생할 경우 보조전원장치(SIV) 리셋으로 고장 소거됨.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 보조전원장치(SIV) 고장기록을 수집하여 출력되는 3상의 AC 전류치를 확인함. +3) 특정상의 전류치가 비정상적일 경우 특정상에 해당되는 GDU, 전류센서, 출력단 결선을 확인한다. +4) 전류센서와 보조전원장치(SIV) 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작상태를 시험기를 통해 확인한다. +6) GDU 전원공급기의 전원연결상태 또는 광케이블의 연결상태와 배선상태를 확인한다. +7) 출력단 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e2027cbd-0353-4325-b8b1-ed5322723562', '0517', '517', 'DCU#3 1위(R1) - 출입문 장애물로 인한 열림 실패', 'M2', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Open failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘 상태로 대기', '도어열림 중 3회 장애물감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 열림 시, 장애물감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e207684d-3457-436a-a1bf-cd565957337f', '0025', '25', '단부출입문 고장(Car6)', 'M3', 'C', '단부출입문고장(CAR6)', 'C', 'DCU', '차량이 단부 통로문으로부터 END DOOR FAULT 신호를 검지.', '출입문 정상동작 불가', '1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우 (인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +4) DCU 내부의 모터 / 인코더 회로가 손상된 경우', '모터/인코더 및 DCU가 정상상태이고, 전기적 연결상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있느지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. +★ 고장 조치 완료 후, 반드시 DCU의 reset 버튼을 누르거나 전원을 OFF/ON 하여 시스템을 재가동 해야 한다.', null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e20ea920-531d-41b7-9dbb-4caafd2ccb92', '0004', '4', 'CU2 통신고장', 'Tc2', 'B', 'CU2 통신고장(TC2)', 'B', 'TCMS', '편성제어장치(CU)의 좌측 CU1의 통신고장(또는 우측 CU2의 통신고장) + +', '1) CU1 통신고장 현시, 정상적으로 CU2로 정상적으로 절체 되면 CU1 통신고장만 현시되고 차량 운행에 지장 없음. +2) CU1과 CU2 모두 이상이 있을 경우, DU 일반화면상 모든 정보 표출 불가, DU의 통신고장 발생 할 수 있음. +3) CU2로 절체 될 경우, 화면상의 우측 상단 경고장 하단에 “B.SYS” 글자가 표시됨. (2중계 동작에 의한 화면)', 'CU1과 CU2의 통신정보를 3초 이상 수신 받지 못할 경우 해당 고장 현시, 일반적으로 MCPU 보드의 문제로 해당 MCPU 보드를 교체하거나, 또는 각 회로 차단기의 차단에 따른 고장 현시 +', 'CU1과 CU2 간 통신이 정상적으로 통신을 재개할 경우 소거됨.', '1) CU의 전원차단 CB를 확인 전원차단 CB가 정상 ON이 되어 있다면 MCPU 보드의 전원 LED가 정상적으로 ON이 되어 있는지 확인(MCPU 보드의 ERR LED가 지속적으로 ON 되어 있으면 MCPU 교체 4TX3/4RX3이 정상적으로 점멸하지 않으면 MCPU 교체) +2) CU의 리셋(전원차단 CB OFF → ON)후에도 소거가 되지 않을 경우, MCPU 보드를 교체 (MCPU 교체전 누적 주행거리, 적산전력량, 휠경 설정값을 기록해두고, 교체 후 입력한다.) +3) 위 조건에도 고장이 소거되지 않을 경우, SCM 보드, DIM, AUX 보드 등을 순차적으로 교체 후, 상태를 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e21ae14c-8b54-446a-93fe-f8f030f55093', '0516', '516', 'DCU#2 1위(R1)-출입문 장애물로 인한 닫힘 실패', 'M1', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Close failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림상태로 대기', '도어 닫힘 중 3회 장애물 감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e223f52e-e23b-493c-a9c7-958de100a016', '0705', '705', 'HVAC#7-냉난방장치2 증발기2 과부하', 'M4', 'C', 'HVAC-냉난방장치2 증발기2 과부하', 'C', 'HVAC', 'HVAC 냉방작동 중 냉난방장치2 증발기 모터에 과부하 발생.', 'UNIT2 냉방 기능 불가', '1) 냉방작동 중 UNIT2의 증발기 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CREF4와 연결된 THR8이 Trip 됨.', 'UNIT2의 증발기 모터의 과부하 조건을 해소하여 정상 가능 상태로 만들고, THR8 및 마이콤 전원 리셋', '1) 냉난방배전반의 점검커버를 열고, THR8의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR8의 전류 세팅값이 3A에 맞춰져 있는지 확인하여, 아닐 경우, 십자 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동 시킨 후, THR8의 2차측 2,4,6 단자에서 각 단자간 상간 전압이 AC 380V으로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 증발기 단품 상태에서 점검을 한다. +7) THR8의 2차측 2,4,6 단자에서 각 단자간 권선저항이 모두 같은지 확인한다. (±10% 이하) (증발기 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT2의 증발기 모터의 결선을 해제한 후 4극 및 6극 모터의 권선저항을 확인 후, 문제가 있을 겨우, 증발기 모터를 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR8 부품을 교체한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e229d1ca-2a37-40a5-942b-c19fadf73ebf', '0503', '503', 'DCU#2 6위(L3) - 출입문 내부 비상핸들 취급(EED)', 'M1', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e22cd707-d9cd-4a0a-bd18-cd460fc4913f', '0711', '711', 'HVAC#7 - 냉난방장치2 압력스위치1(DPS) 저압', 'M4', 'D', 'HVAC-냉난방장치2 압력스위치1(DPS) 저압', 'D', 'HVAC', '냉난방장치2 냉매 압력스위치1 저압 발생 +', 'UNIT2CYCLE1 냉방기능불가', 'UNIT2DSP1측 냉매압력이 3초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우 +', '냉매압력이 정상수치 2±0.5(kgf/cm2) 이상으로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CREF4의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)를 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설 여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안 되는 것을 확인한 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e22d3216-c015-4dd5-9e36-710c825459c7', '0509', '509', 'DCU#8 4위(L2)-출입문 잠김 리미트 스위치 고장', 'Tc2', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 "DLS Failure” 신호가 "1"이 되면 검지.', '출입문 잠김 상태 확인 불가', '1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e237e063-b4a6-4742-9829-9e9b39608ee3', '0510', '510', 'DCU#1 6위(L3) - 출입문 닫힘 리미트 스위치1 고장', 'Tc1', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 “DCS1 Failure(Leftt)” 신호가 “1”이 되면 검지 +', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e2433cf8-4b97-4d83-a7a0-524e0993b857', '0729', '729', 'HVAC#7-냉난방장치2 리턴 센서 고장', 'M4', 'C', 'HVAC-냉난방장치2 리턴 센서 고장', 'C', 'HVAC', '냉난방장치2의 리턴 센서 고장 발생', '냉난방장치2 리턴센서 고장현시', '온도센서 검지범위는 -45~85도 (820~1330옴) 인데, 2초 이상 검지범위를 벗어나는 경우', '온도센서 검지 값이 2초 이상 허용온도 범위 내 일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820~1330옴 을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우, 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e25345ce-3da0-4342-9343-1df0a31915c1', '0510', '510', 'DCU#2 4위(L2)-출입문 닫힘 리미트 스위치1 고장', 'M1', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 "DCS1 Failure(Leftt)” 신호가 "1"이 되면 검지.', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e2703c02-c8f4-452a-af08-6a24ef7c9ae2', '1212', '1212', 'FDU#2 -', 'M1', null, null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e279343b-a9c8-4a59-8d2e-a0bc8d5d354f', '1510', '1510', '열차분리#2 검지(Car8)', 'Tc2', 'B', '열차분리#2 검지', 'B', 'TCMS', '차량의 열차분리#2 검지 +', '1) 2위측 열차검지신호(SOTS2) 검출 시 화면에 현시 +2) 실제 열차분리 시 검지되었는지 확인 필요(실제 열차분리 시 다른 차량 이 접근하지 못하도록 선조치 필요) +3) 실제 열차 분리 시 비상제동 안전루프에 의해 비상제동체결 됨. +4) 열차 분리에 따라 분리 위치부터 차량제어장치(TU)와 반대편의 편성제어장치(CU)의 통신고장 동반 발생', 'CU/TU의 2위측 열차분리신호(SOTS2) 신호 활성(LOW) 입력 시 고장 현시 +', 'CU/TU의 2위측 열차분리신호(SOTS2) 신호 정상(HIGH) 입력 시 소거됨.', '1) 실제 열차분리 시 관제에 연락하고, 지시에 따름 +2) 회로 차단기 ELCB ON 상태 확인 +3) CU인 경우 2위측 열차분리신호 DIM1 PCB의 입력채널(SOTS +2) 점검/교체 +4) TU인 경우 2위측 열차분리신호 DIM3 PCB의 입력채널(SOTS +2) 점검/교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e27bccc2-e09b-48dc-a430-f4e9475306d1', '0752', '752', 'HVAC#8-배기댐퍼 닫힘고장', 'Tc2', 'C', 'HVAC-배기댐퍼 닫힘고장', 'C', 'HVAC', '차량 배기댐퍼가 닫혀있는 상태에서 배기댐퍼 닫힘 리미트 스위치가 작동되지 않음', '배기댐퍼 닫힘 고장 현시', '배기댐퍼를 닫힘으로 제어했으나 닫힘 리미트 스위치 입력이 없을 경우', '배기댐퍼 닫힘 상태에서 리미트 스위치 입력이 정상적으로 입력', '1) 배기댐퍼가 닫힌 상태에서 닫힘 리미트 스위치가 정상적으로 작동되었는지 확인한다. +2) 닫힘 리미트 스위치가 정상작동 되었음에도 문제가 발생될 경우, 스위치를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e292d396-ef5b-4673-bf7b-c9c7f72d0a12', '0725', '725', 'HVAC#8-냉방시험 불가능', 'Tc2', 'C', 'HVAC-냉방시험 불가능', 'C', 'HVAC', '운전실 TCMS에서 냉방시험 작동을 할 때, 냉방운전이 불가능한 경우 발생.', '냉방 시험 운전 불가능', '실내 또는 실외 온도가 10도 미만일 경우, (환절기 또는 겨울철에 냉방 가동시 시스템 보호를 위한 온도조건)', '실내 또는 실외 온도가 10도 이상일 때, 냉방시험 작동', '1) TCMS 화면에서 실내 또는 실외 온도가 10도 미만인지 확인한다. +2) 실내 및 실외 온도가 10도 이상인대도 냉방 가동이 되지 않을 시, TCMS-마이콤 간 통신불량이 있는지 확인하고 조치한다.', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e2970a0d-4bae-40d5-8c14-6d72aed0276f', '0135', '135', 'MDS 서비스위치 아님(Car3)', 'M2', 'W', null, null, 'VVVF', null, null, null, null, null, null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e297437c-fc47-4a98-ae6e-0b01bd6cfd15', '0514', '514', 'DCU#5 3위(R2)-출입문 닫힘 시간 초과', 'T2', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 "Close time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 닫힘 동작시간이 7초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도 한 후, '장애물로 인한 닫힘실패' 고장과 함께 'Close time out' 고장이 함께 현시', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e298f354-e1de-482b-b051-ed44fe0a7616', '0521', '521', 'DCU#5 3위(R2) - 모듈 상태 이상', 'T2', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 “01” 또는 “00”이 되면 +검지 +', '이중계절체동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러)이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e29bee09-57ef-427a-bcb1-a407d8d715cd', '0518', '518', 'DCU#5 3위(R2)-출입문 Enable 신호 에러', 'T2', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 "Enable signal error” 신호가 "1"이 되면 검지.', 'DCU 출입문 Enable 신호 에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) 취급시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함.', '해당출입문 enable 신호 수신', '1) AUTO/MCS 모드시에는 YARD모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인한다. (YARD/FMC 모드시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.392739+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e29f5959-03b7-45df-b4c4-579b80792784', '0512', '512', 'DCU#4 1위(R1) - 파라미터 로딩 실패', 'T1', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 “Paraneter error” 신호가 “1”이 되면 검지 +', 'Parametererror 현시(출입문은 정상작동 가능)', 'DCU 자체 내의 EEPROM으로부터 parameter데이터 로딩 실패 +', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e2a6db2c-08f3-4991-b37a-e5e1ce86b38e', '0103', '103', 'VVVF#2-추진차단(P BLOCK)', 'M1', 'D', null, null, 'VVVF', null, null, null, null, null, null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e2d36034-0775-4fc5-8dfc-59c68a44a2c6', '0728', '728', 'HVAC#5 - 냉난방장치2 토출 센서 고장', 'T2', 'C', 'HVAC-냉난방장치2 토출 센서 고장', 'C', 'HVAC', '냉난방장치2의 토출 센서 고장 발생 +', '냉난방장치2 토출 센서 고장현시', '온도센서 검지범위는 -45 ~ 85도(820 ~ 1,330Ω)인데, 2초 이상 검지범위를 벗어나는 경우 +', '온도센서 검지값이 2초 이상 허용온도 범위 내일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820 ~ 1,330Ω을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e2df105d-1348-417d-be4f-1aa2f1c8df06', '1001', '1001', 'CMSB#1-CM 출력과부하', 'Tc1', 'C', 'CMSB-CM 출력과부하', 'C', 'CMSB', 'CMSB의 RS485 데이터 중 CMSB-TCMS SD TEXT3의 Bit1 “출력 과부하” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 'CM출력과부하' 표시됨. +2) 바이패스 모드로 전환되고, CM 기동 시 '바이패스 기동'으로 표시됨.', '1) CM 기동 시 출력전류가 정격전류의 150%(7.5A) ~ 200%(10A) 사이 전류가 1분간 지속적으로 기동할 경우 검지됨.', '1) 차량 전원 OFF +2) CMSB 내부의 표시기패널 RESET 버튼 누름.', '0) 정상운행 후, 검수고에 입고하여 아래와 같이 조치한다. +1) 상기고장은 고장 소거 후, 재현시험을 진행하여 지속적으로 발생될 경우 아래와 같이 조치한다. +2) 공기압축기(CM) 출력전류을 확인한다.(공기압축기 매뉴얼 참조)', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e2df5b5c-8078-42c1-9f58-ebafb5d369a3', '0707', '707', 'HVAC#4-냉난방장치2 증발기1 과부하', 'T1', 'C', 'HVAC-냉난방장치2 증발기1 과부하', 'C', 'HVAC', 'HVAC 냉방작동 중 냉난방장치2 증발기 모터에 과부하 발생.', 'UNIT2 냉방 기능 불가', '1) 냉방작동 중 UNIT2의 증발기 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CREF3과 연결된 THR7이 Trip 됨.', 'UNIT2의 증발기 모터의 과부하 조건을 해소하여 정상 가능 상태로 만들고, THR7 및 마이콤 전원 리셋', '1) 냉난방배전반의 점검커버를 열고, THR7의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR7의 전류 세팅값이 3A에 맞춰져 있는지 확인하여, 아닐 경우, 십자 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동 시킨 후, THR7의 2차측 2,4,6 단자에서 각 단자간 상간 전압이 AC 380V으로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 증발기 단품 상태에서 점검을 한다. +7) THR7의 2차측 2,4,6 단자에서 각 단자간 권선저항이 모두 같은지 확인한다. (±10% 이하) (증발기 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT2의 증발기 모터의 결선을 해제한 후 4극 및 6극 모터의 권선저항을 확인 후, 문제가 있을 겨우, 증발기 모터를 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR7 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e2e325b9-a901-475f-a65e-91384b928a8f', '0711', '711', 'HVAC#2-냉난방장치2 압력스위치1(DPS) 저압', 'M1', 'D', 'HVAC-냉난방장치2 압력스위치1(DPS) 저압', 'D', 'HVAC', '냉난방장치2 냉매 압력스위치1 저압 발생.', 'UNIT2 CYCLE1 냉방 기능 불가', 'UNIT2 DSP1측 냉매 압력이 3초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우', '냉매 압력이 정상 수치 2±0.5(kgf/cm2 이상으로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CREF4의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)을 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안되는 것을 확인한 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e2f3226c-2972-4e43-9cb2-f659027038c9', '1212', '1212', 'FDU#2-', 'M1', '0', null, null, 'FDU', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e3000aa0-63f7-4c86-b700-ded86ffe53f0', '0173', '173', 'VVVF#3 - 전류센서 이상검지(CTERR)', 'M2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e3077d05-93bc-4b13-aa22-d20f4312a8ec', '0730', '730', 'HVAC#6-냉난방장치1 토출 센서 고장', 'M3', 'C', 'HVAC-냉난방장치1 토출 센서 고장', 'C', 'HVAC', '냉난방장치1의 토출 센서 고장 발생', '냉난방장치1 토출센서 고장현시', '온도센서 검지범위는 -45~85도 (820~1330옴) 인데, 2초 이상 검지범위를 벗어나는 경우', '온도센서 검지 값이 2초 이상 허용온도 범위 내 일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820~1330옴 을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우, 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e30e77db-964d-489d-afea-1e40e703c9d1', '0501', '501', 'DCU#3 2위(L1)-출입문 차단', 'M2', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e32ad714-88a8-4c8d-af11-504c87173f8d', '0060', '60', 'MAIN FUSE#1 DISCONNECTED(Car3)', 'M2', 'W', 'MAIN FUSE#1 DISCONNECTED(Car3)', 'W', 'TCMS', '차량으로부터 AUX FUSE DISCONNECTED 신호 입력시', 'VVVF고압 차단으로 추진 불능', '해당 퓨우즈 소손', '해당 퓨우즈 교체', null, ' +REC20210HN0', '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e339b366-e302-429c-9580-6c2e97edbbda', '0712', '712', 'HVAC#2-냉난방장치2 압력스위치1(DPS) 고압', 'M1', 'D', 'HVAC-냉난방장치2 압력스위치1(DPS) 고압', 'D', 'HVAC', '냉난방장치2 냉매 압력스위치1 고압 발생.', 'UNIT2 CYCLE1 냉방 기능 불가', 'UNIT2 DSP1측 냉매 압력이 3초 이상 28±1(kgf/cm2) 이상 되는 경우', '냉매 압력이 정상 수치 15±0.7(kgf/cm2 이하로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CRCM3의 부하측 전류를 측정하여 응축기 팬의 동작여부를 확인한다. +2) 응축기 코일의 전면에 이물질로 인한 막힘이 있는지 확인한다. +3) 응축기 팬 상부 그릴에 외부 이물질로 인한 막힘이 있는지 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e345aeb1-0ecf-4e45-9ec8-1b2c65741c7b', '0516', '516', 'DCU#6 5위(R3)-출입문 장애물로 인한 닫힘 실패', 'M3', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Close failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림상태로 대기', '도어 닫힘 중 3회 장애물 감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e35a0280-c426-4f45-ab80-5380240a80f0', '0052', '52', '주공기압력 저하(Car8)', 'Tc2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e364dff4-fdd4-4b4b-89bc-ec00cd04245c', '0872', '872', '출력증폭기#2(AMP) 고장(Car#7)', 'M4', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e36a5a7b-10c4-45e3-bcbc-d52b225e0fc7', '0902', '902', '비상인터폰 동작(Car#5 - 1)', 'T2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e378e46c-b79d-4706-a745-11ff767f0f8b', '0742', '742', 'HVAC#4-전자접촉기 보조히터3(AHEK) 고장', 'T1', 'C', 'HVAC-전자접촉기 보조히터3(AHEK) 고장', 'C', 'HVAC', 'HVAC 보조난방기 작동 중 AHEK3 전자접촉기 고장 발생.', 'UNIT2 보조난방기 전난방 시 반난방만 작동', '보조난방기 작동 중 2.5초 이상동안 AHEK3 작동 feedback 신호가 수신되지 않는 경우', 'AHEK3 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) AHEK3을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, AHEK3과 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e3819164-be5a-4bd1-9e56-39ccc8698f88', '0738', '738', 'HVAC#7 - 전자접촉기 증발기3(CREF) 고장', 'M4', 'C', 'HVAC-전자접촉기 증발기3(CREF) 고장', 'C', 'HVAC', 'HVAC 냉방 작동 중 CREF3 전자접촉기 고장 발생 +', 'UNIT2 냉방 작동 불가', '냉방 작동 중 2.5초 이상 동안 CREF3 작동 feedback 신호가 수신되지 않는 경우 +', 'CREF3 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CREF3을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CREF3과 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e38fd555-9eed-4aaa-94b4-771953122c97', '0210', '210', 'BECU#6-3축속도신호의 비정상', 'M3', 'C', 'BECU-3축속도신호의 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit1 “3축속도신호의 비정상” 신호가 "1"이 되면 검지.', '해당 차량 3축속도신호의 비정상 검지 현시 및 해당 차량 활주제어 불가.', '해당 차량의 3축 속도센서 고장 발생.', '해당 차량의 3축 속도센서가 정상적일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e3a2524d-340c-4dfb-9668-bdad3c901639', '0503', '503', 'DCU#1 6위(L3)-출입문 내부비상핸들 취급(EED)', 'Tc1', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e3ab852d-a62d-41d7-8df3-ad6aee82daf3', '0508', '508', 'DCU#1 3위(R2)-출입문 모터/인코더 고장', 'Tc1', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 "Motor / Encoder failure” 신호가 "1"이 되면 검지.', '출입문 정상동작 불가', '1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우 (인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터 / 인코더 회로가 손상된 경우', '모터/인코더 및 DCU가 정상상태이고, 전기적 연결상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있느지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. +★ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. + +1. DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. +2. DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) +3. DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e3ad41e0-b043-4574-ba77-dac582f462f9', '0511', '511', 'DCU#8 6위(L3)-출입문 닫힘 리미트 스위치2 고장', 'Tc2', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 "DCS2 Failure(Right)” 신호가 "1"이 되면 검지.', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e3b12899-e33e-483b-9d5f-1dcc04975cc3', '0508', '508', 'DCU#3 4위(L2) - 출입문 모터/인코더 고장', 'M2', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 “Motor / Encoder failure” 신호가 “1”이 되면 +검지 +', '출입문 정상동작 불가', ' +1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우(인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터/인코더 회로 가 손상된 경우 +', '모터/인코더 및 DCU가 정상 상태이고, 전기적 연결 상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있는지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. ※ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. ? DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. ? DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) ? DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e3b3b9d0-be8f-4eea-9644-bc7bae02a133', '0305', '305', 'ATC#8 - 2계 고장', 'Tc2', 'C', 'ATC-2계 고장', 'C', 'ATC', 'ATC의 RS485 데이터 중 ATC-TCMS SD TEXT7의 Bit4 ~ 7 “ATC/ATO Status” 데이터가 ATC 2계 Bad +상태이면 검지 +', 'MMI에 ATC/ATO1이 빨간색으로 표기되며 관련 고장메시지 현시', ' +1) ATC 시스템 자체 진단테스트 실행 시 하기와 같은 항목에서 비정상상태일 경우 가) 서브랙 내 보드(DI1, 2/DO/Tacho) 존재 유무 체크 +나) 각 장치(DI1, 2/DO/Tacho/ATC/ATO/TWC/MMI)별 통신 상태 확인 다) 보드 동작 상태(Alive 상태) +라) Digital Input 상태 확인(중복입력/무입력) 마) Digital Input/Output Check-back 상태 확인 바) Tachometer 고장검지 확인 +사) 열차길이/휠 사이즈 세팅 확인 +2) ATC-1계 CPU 보드 고장 시 +3) ATC-1계 POWER 보드 고장 시 +', '상기 검지조건 해제 시', '1) 전원스위치CBATC#1, 2OFF → ON하여 복귀 시도 후, 복귀되었는지 확인한다. +2) 1, 2계 동시 고장 시, 완전수동(FMC)전환 운행한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e3cf6fc4-ee74-4754-b82b-a129520fb618', '0723', '723', 'HVAC#3 - 냉난방장치1 압력스위치2(DPS) 냉매부족', 'M2', 'C', 'HVAC-냉난방장치1 압력스위치2(DPS) 냉매부족', 'C', 'HVAC', '냉난방장치1 냉매 압력스위치2 저압 발생 +', 'UNIT1CYCLE2 냉방 기능 불가', 'UNIT1DSP2측 냉매압력이 30초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우 +', '냉매압력이 정상수치 2±0.5(kgf/cm2) 이상 유지하도록 하고, 마이콤전원을 리셋', '1) 배전반 점검 커버를 열고 마이콤 전원을 리셋한 후, 냉방 가동 시, CREF2의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)을 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설 여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안 되는 것을 확인한 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e3eb89ca-b1aa-44c4-8d04-94500c2fb777', '0509', '509', 'DCU#1 2위(L1) - 출입문 잠김 리미트 스위치 고장', 'Tc1', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 “DLS Failure” 신호가 “1”이 되면 검지 +', '출입문 잠김 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e3f6cab4-e85e-45ab-8153-3f3ddc6aa9e2', '0878', '878', '실내객실표시기(PIB) 고장(Car#8)', 'Tc2', 'C', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e3ffb111-5c96-4b79-964d-7540250b9b19', '0516', '516', 'DCU#7 3위(R2)-출입문 장애물로 인한 닫힘 실패', 'M4', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Close failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림상태로 대기', '도어 닫힘 중 3회 장애물 감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e3ffcff9-bd47-41f3-aedc-dca683c8505b', '0215', '215', 'BECU#2 - 후미대차 AS 압력센서 고장', 'M1', 'C', 'BECU-후미대차 AS 압력센서 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit6 “후미대차 AS 압력센서 고장” 신호가 +“1”이 되면 검지 +', '해당 차량 후미대차 AS 압력센서 고장검지 현시 및 해당 차량 정상적인 응하중제동제어 불가', '해당 차량의 후미대차 AS 압력센서(AS3, AS4) 고장 +', '해당 차량의 후미대차 AS 압력센서(AS3, AS4)가 정상일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e4033541-8860-40f1-af5a-8925591663c3', '0516', '516', 'DCU#3 3위(R2) - 출입문 장애물로 인한 닫힘 실패', 'M2', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Close failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림 상태로 대기', '도어 닫힘 중 3회 장애물감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e41d5e42-f227-4eab-b977-a99ee921a494', '0748', '748', 'HVAC#4-전자접촉기 차량히터1(CRRHT) 고장', 'T1', 'C', 'HVAC-전자접촉기 차량히터1(CRRHT) 고장', 'C', 'HVAC', '객실 난방기 작동 중 CRRHT1 전자접촉기 고장 발생.', '객실 전난방 시 2/3난방만 작동', '객실 전난방 작동 중 2.5초 이상동안 CRRHT1 작동 feedback 신호가 수신되지 않는 경우', 'CRRHT1 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CRRHT1을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRRHT1과 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e422526b-c31d-4d3f-8b58-37c4c962dfe0', '0418', '418', 'SIV#8-FC 1, 2 언밸런스 고장(FC12UB)', 'Tc2', 'C', 'SIV-FC1,2 언밸런스 고장(FC12UB)', 'C', 'SIV', '보조전원장치(SIV)의 RS485 데이터 중 SIV-TCMS SD TEXT6의 Bit3 “FC12UB” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 'SIV FC1,2 언밸런스 고장' 표시됨. +2) 보조전원장치(SIV)는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 보조전원장치(SIV) 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 보조전원장치(SIV) 상태 붉을색으로 표기되며, 연장급전 됨.', '보조전원장치(SIV) 내부 FC 1, 2의 전압차이가 500V 이상일 경우 검지됨.', '1) 경고장이 발생할 경우 보조전원장치(SIV) 자동 재기동에 의해 재기동 됨. +2) 중고장이 발생했을 경우 조치 완료 후 보조전원장치(SIV) 리셋으로 고장 소거됨.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 보조전원장치(SIV) 고장기록을 수집하여 FC전압에 이상이 있는지 확인한다. +3) 보조전원장치(SIV) 내부 고전압부에 소손흔적이 있는지 확인한다. +4) FC에 연결된 버스바의 체결상태가 양호한지 확인한고, 버스바를 분리하여 FC의 Capacitance를 측정하여 이상이 없는지 확인한다. +5) 인버터 내부 구성품의 상태 및 광케이블 상태, 결선상태를 확인한다. +6) 전압센서와 보조전원장치(SIV) 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +7) SEN 보드의 동작상태를 시험기를 통해 확인한다. +8) 출력단 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +9) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e4470047-fbaf-4214-9f99-0e682acc7443', '0502', '502', 'DCU#6 5위(R3) - 출입문 장애물검지', 'M3', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e45d8f86-f316-4617-a3d8-32d576acf713', '0318', '318', 'ATC#8 - HCR/TCR 조합 오류', 'Tc2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e46bbfaf-ffab-403d-8440-9944c3764dd6', '0521', '521', 'DCU#1 6위(L3) - 모듈 상태 이상', 'Tc1', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 “01” 또는 “00”이 되면 +검지 +', '이중계절체동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러)이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e4901a67-fdb1-424f-b1ea-815861fa4c1c', '0502', '502', 'DCU#4 5위(R3)-출입문 장애물검지', 'T1', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e495a270-84c7-4c0f-8ef5-daacaf797232', '0713', '713', 'HVAC#8 - 냉난방장치1 압력스위치2(DPS) 저압', 'Tc2', 'D', 'HVAC-냉난방장치1 압력스위치2(DPS) 저압', 'D', 'HVAC', '냉난방장치1 냉매 압력스위치2 저압 발생 +', 'UNIT1CYCLE2 냉방기능불가', 'UNIT1DSP2측 냉매압력이 3초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우 +', '냉매압력이 정상수치 2±0.5(kgf/cm2) 이상으로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CREF2의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)를 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설 여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안 되는 것을 확인한 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e497cbf4-4057-4747-ab31-a4b2ad3e1251', '0520', '520', 'DCU#7 4위(L2)-이중계 절체 동작', 'M4', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 "Module switchover' 신호가 "1"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e4985461-f6e6-4b7e-8b25-c8cd4b7806aa', '0220', '220', 'BECU#6 - 공기제동 감쇄지령 비정상', 'M3', 'C', 'BECU-공기제동 감쇄지령 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit3 “공기제동 감쇄지령 비정상” 신호가 “1”이 되면 검지 +', '해당 차량 공기제동감쇄지령 비정상 검지 현시 및 해당 차량 정상적인전공교차제어 불가 (부수차량 공기제동 감쇄 불가)', '해당 차량의 공기제동감쇄지령 신호가 정상범위를 벗어남. (5.0 ~ 95.0%) +', '해당 차량의 공기제동감쇄지령 신호가 정상범위일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 소거되지 않을 경우 해당 차량 옆의 Pair 차량(구동차) BECU를 리셋(CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e49cfcfd-e476-4aac-8b6e-7b3e85531bd5', '0712', '712', 'HVAC#1-냉난방장치2 압력스위치1(DPS) 고압', 'Tc1', 'D', 'HVAC-냉난방장치2 압력스위치1(DPS) 고압', 'D', 'HVAC', '냉난방장치2 냉매 압력스위치1 고압 발생.', 'UNIT2 CYCLE1 냉방 기능 불가', 'UNIT2 DSP1측 냉매 압력이 3초 이상 28±1(kgf/cm2) 이상 되는 경우', '냉매 압력이 정상 수치 15±0.7(kgf/cm2 이하로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CRCM3의 부하측 전류를 측정하여 응축기 팬의 동작여부를 확인한다. +2) 응축기 코일의 전면에 이물질로 인한 막힘이 있는지 확인한다. +3) 응축기 팬 상부 그릴에 외부 이물질로 인한 막힘이 있는지 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e49f75f9-4680-497b-90a4-fa1dd061acfc', '0518', '518', 'DCU#1 4위(L2)-출입문 Enable 신호 에러', 'Tc1', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 "Enable signal error” 신호가 "1"이 되면 검지.', 'DCU 출입문 Enable 신호 에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) 취급시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함.', '해당출입문 enable 신호 수신', '1) AUTO/MCS 모드시에는 YARD모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인한다. (YARD/FMC 모드시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e4c72f52-fe8e-45ed-b6cd-f102bebf7334', '0515', '515', 'DCU#3 2위(L1) - 출입문 열림 시간 초과', 'M2', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 “Open time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 열림 동작시간이 6초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도한 후, ‘장애물로 인한 열림 실패' 고장과 함께 ‘Open time out' 고장이 함께 현시 +', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e4e3383d-ee02-440b-8620-0eb375d3b4d1', '0521', '521', 'DCU#4 3위(R2)-모듈 상태 이상', 'T1', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 "01"또는 "00"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e4f4ba50-1042-4b31-b6f4-0bd84e839d0a', '0714', '714', 'HVAC#3-냉난방장치1 압력스위치2(DPS) 고압', 'M2', 'D', 'HVAC-냉난방장치1 압력스위치2(DPS) 고압', 'D', 'HVAC', '냉난방장치1 냉매 압력스위치2 고압 발생.', 'UNIT1 CYCLE2 냉방 기능 불가', 'UNIT1 DSP2측 냉매 압력이 3초 이상 28±1(kgf/cm2) 이상 되는 경우', '냉매 압력이 정상 수치 15±0.7(kgf/cm2 이하로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CRCM2의 부하측 전류를 측정하여 응축기 팬의 동작여부를 확인한다. +2) 응축기 코일의 전면에 이물질로 인한 막힘이 있는지 확인한다. +3) 응축기 팬 상부 그릴에 외부 이물질로 인한 막힘이 있는지 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e509a327-ccbf-4467-b83c-f39c132b491d', '0519', '519', 'DCU#8 2위(L1)-ZVR 신호 에러', 'Tc2', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 "ZVR signal error” 신호가 "1"이 되면 검지.', '출입문이 강제로 닫히게 되고, 열림은 불가능', '1) 차량 ZVR 신호가 없는 상태 (차량 주행상태) 에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함.', '해당출입문 ZVR 신호 수신', '1) 차량이 주행중이라면, 차량이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e50b96a3-9df0-4b93-ba40-ff7fcce19881', '0508', '508', 'DCU#4 6위(L3) - 출입문 모터/인코더 고장', 'T1', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 “Motor / Encoder failure” 신호가 “1”이 되면 +검지 +', '출입문 정상동작 불가', ' +1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우(인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터/인코더 회로 가 손상된 경우 +', '모터/인코더 및 DCU가 정상 상태이고, 전기적 연결 상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있는지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. ※ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. ? DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. ? DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) ? DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e50d03ae-43f5-4d98-b971-381182289ed4', '0733', '733', 'HVAC#8 - 전자접촉기 압축기(CRCM)4 고장', 'Tc2', 'C', 'HVAC-전자접촉기 압축기(CRCM)4 고장', 'C', 'HVAC', 'HVAC 냉방 작동 중 CRCM4 전자접촉기 고장 발생 +', '냉방 기능 저하(전냉방 시 반냉방으로 작동)', '냉방 작동 중 2.5초 이상 동안 CRCM4 작동 feedback 신호가 수신되지 않는 경우 +', 'CRCM4 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CRCM4를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRCM4와 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e542ebdd-a11e-49fa-a7bd-da7d1829608a', '0160', '160', 'VVVF#6 - 게이트전원전압 이상(GPLVD)', 'M3', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e55f8705-dfe7-421f-8c66-b85923442886', '0509', '509', 'DCU#3 3위(R2)-출입문 잠김 리미트 스위치 고장', 'M2', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 "DLS Failure” 신호가 "1"이 되면 검지.', '출입문 잠김 상태 확인 불가', '1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e565ae74-9da1-42f3-9a6c-68d3432eed68', '0514', '514', 'DCU#7 5위(R3) - 출입문 닫힘 시간 초과', 'M4', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 “Close time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 닫힘 동작 시간이 7초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도한 후, ‘장애물로 인한 닫힘 실패' 고장과 함께 ‘Close time out' 고장이 함께 현시 +', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e56dd332-5e9d-4a9a-a6c2-36b30f75450b', '0417', '417', 'SIV#8-배터리 충전기 출력 과전압(BCOV)', 'Tc2', 'C', 'SIV-배터리 충전기 출력 과전압(BCOV)', 'C', 'SIV', '보조전원장치(SIV)의 RS485 데이터 중 SIV-TCMS SD TEXT5의 Bit7 “BCOV” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 '배터리 충전기 출력과전압 검지' 표시됨. +2) 보조전원장치(SIV)는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 보조전원장치 중고장이 발생됨. +5) 중고장이 발생되면 TCMS 일반화면에 보조전원장치 상태 붉을색으로 표기되며, 연장급전 됨.', '보조전원장치(SIV)의 배터리 충전부에서 출력되는 DC전압이 150V 이상일 경우 검지됨.', '1) 경고장이 발생할 경우 보조전원장치(SIV) 자동 재기동에 의해 재기동 됨. +2) 중고장이 발생했을 경우 조치 완료 후 보조전원장치(SIV) 리셋으로 고장 소거됨.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 보조전원장치(SIV) 고장기록을 수집하여 배터리 충전부에서 출력되는 DC 전압값을 확인함. +3) 전압값이 비정상적일 경우 전압센서, DC 출력단 결선을 확인한다. +4) 전압센서와 보조전원장치(SIV) 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작상태를 시험기를 통해 확인한다. +6) 출력단의 절연상태 및 접지간의 절연상태를 확인한다. +7) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e570ba7d-f045-42a5-808e-a8b43e5590d8', '0208', '208', 'BECU#2-공기제동장치고장', 'M1', 'C', 'BECU-공기제동장치고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit7 “공기제동장치고장” 신호가 "1"이 되면 검지.', '해당 차량 공기제동장치고장 검지 현시 및 해당 차량 정상적인 제동제어 불가.', '해당 차량 BECU의 자가진단 시 고장 발생 또는 AC압력센서 고장.', '해당 차량 BECU의 자가진단 시 정상적일 경우 또는 AC압력센서가 정상일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e572634b-b4ad-4518-b550-1eb015882a9a', '759', '759', 'CAB HVAC#1 - 압축기 압력 이상', 'Tc1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e57a1da2-d23a-4565-9679-6dc177ad60d9', '0426', '426', 'SIV#8-', 'Tc2', '0', '연장급전 접촉기 고장', 'B', '0', '연장급전 접촉기와 TCMS간 명령 불이행 시 연장급전 접촉기 고장 검지.', '1) TCMS화면에 고장정보 현시되며, 보조전원장치(SIV) 중고장 발생 시 연장급전이 이루어 지지 않음. +2) 중고장이 발생된 보조전원장치(SIV)가 있는 유닛의 부하에는 전원공급 불가(에어컨, 히터, 등구류 등)', '연장급전 명령에도 연장급전 접촉기가 여자되지 않을때, 혹은 연장급전 명령이 없는데 연장급전 접촉기가 여자되었을때 검지함.', 'TCMS-연장급전 접촉기 간 명령 정상적으로 이행 시 소거됨.', '1) 연장급전박스(ESK)와 차량 TCMS간 배선의 연결 상태를 확인한다. +2) 연장급전 접촉기의 이상유무 및 결선상태를 확인한다. +3) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e5859c18-2a4e-434b-8113-29ddd9a893da', '0011', '11', 'TU 통신고장(Car6)', 'M3', 'B', 'TU 통신고장(Car6)', 'C', 'TCMS', 'M, T 차량의 차량제어장치(TU) 통신고장 +', '1) 해당 차호의 차량제어장치(TU)와의 통신불능 시 화면에 현시 +2) TU 통신 고장 시 해당호차의 VVVF, BECU, DCU, HVAC, FDU 등과의 통신도 불가 +(해당 차량의 출입문 열림/닫힘 정보도 현시 불가하므로 출입문 열림/닫힘 램프로 주의 운행) +3) 2호차(6호차) TU 통신 고장 시 판토상승/하강 명령 전달 불가(단, 이미 상승된 판토는 상승 유지됨.) +4) 4호차 TU 통신고장 시, 연장급전접촉기 출력이 불가', 'CU에서 TU의 통신정보를 약 3초 이상 수신 받지 못할 경우 해당 고장 현시 +', 'TU가 정상적으로 통신을 재개할 경우 소거됨.', '1) TU 전원차단기 리셋(OFF → ON) 실시 +2) SCM 보드의 전원 LED가 정상이라면, 멀티미터로 AVR 보드의 전원출력(5V)을 확인 +3) TU 상단의 커넥터 체결상태를 확인 +4) 상기 항목에 이상이 없을 경우 SCM 보드를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e598a659-b1b8-4a75-b3f0-8690a4cc891d', '0415', '415', 'SIV#8-게이트 드라이버 고장, VY1상(GDFVY1)', 'Tc2', 'C', 'SIV-게이트 드라이버 고장, VY1상(GDFVY1)', 'C', 'SIV', '보조전원장치(SIV)의 RS485 데이터 중 SIV-TCMS SD TEXT5의 Bit5 “GDFVY1” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 'GDF VY 1상 이상검지' 표시됨. +2) 보조전원장치(SIV)는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 보조전원장치(SIV) 중고장이 발생됨. +5) 중고장이 발생되면 TCMS 일반화면에 보조전원장치(SIV) 상태 붉을색으로 표기되며, 연장급점 됨.', '보조전원장치(SIV) 내부 GDU에 과전류, 과온이 검지될경우.', '1) 경고장이 발생할 경우 보조전원장치(SIV) 자동 재기동에 의해 재기동 됨. +2) 중고장이 발생할 경우 보조전원장치(SIV) 리셋으로 고장 소거됨.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 보조전원장치(SIV) 고장기록을 수집하여 출력되는 3상의 AC 전류치를 확인함. +3) 특정상의 전류치가 비정상적일 경우 특정상에 해당되는 GDU, 전류센서, 출력단 결선을 확인한다. +4) 전류센서와 보조전원장치(SIV) 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작상태를 시험기를 통해 확인한다. +6) GDU 전원공급기의 전원연결상태 또는 광케이블의 연결상태와 배선상태를 확인한다. +7) 출력단 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e5a34467-7d09-4b17-8831-4a02a6586c2d', '0053', '53', 'AUX FUSE DISCONNECTED(Car2)', 'M1', 'W', 'AUX FUSE DISCONNECTED(Car2)', 'W', 'TCMS', '차량으로부터 AUX FUSE DISCONNECTED 신호 입력시', 'SIV 고압 차단으로 AC전원 전체 "OFF"', '해당 퓨우즈 소손', '해당 퓨우즈 교체', null, ' +REC30330HN0', '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e5a4ff28-2042-485b-b6a0-d0db5399a36e', '0510', '510', 'DCU#7 2위(L1)-출입문 닫힘 리미트 스위치1 고장', 'M4', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 "DCS1 Failure(Leftt)” 신호가 "1"이 되면 검지.', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e5a9e0df-72a2-44f1-b929-da92e5047c50', '0519', '519', 'DCU#7 3위(R2)-ZVR 신호 에러', 'M4', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 "ZVR signal error” 신호가 "1"이 되면 검지.', '출입문이 강제로 닫히게 되고, 열림은 불가능', '1) 차량 ZVR 신호가 없는 상태 (차량 주행상태) 에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함.', '해당출입문 ZVR 신호 수신', '1) 차량이 주행중이라면, 차량이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e5b53fc9-d944-487f-a7b9-3e0ff6e134cd', '1203', '1203', 'FDU#8 - 감지기2 화재감지', 'Tc2', 'W', 'FDU-감지기2 화재감지 (Car1~8)', 'W', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 “Detector1 State” 신호가 “11”이 되면 검지 +', '화재상태현시(자동소거 안 됨.)', '하기 2가지 조건을 모두 만족하여야 화재신호가 출력 됨. (연동모드 동작) +1) 이웃한(앞 혹은 뒤에 위치한) 감지기 중 하나의 감지기라도 주의 혹은 화재상태에 있어야 함. +2) Detector1(해당 감지기)에서 측정된 연기농도가 15% 이상이거나 온도가 65℃ 이상인 경우 +', '1) FDU의 복귀버튼 조작 시 +2) FDU 전원 리셋 시', '1) 해당 감지기 위치의 화재 발생 여부 확인 +2) 화재 오감지일 경우 FDU의 복귀버튼 취급 +3) 오감지일 경우 감지기의 청소주기 확인(내부 먼지 제거)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e5c8241c-10f6-443c-ad12-19f954f76d86', '0507', '507', 'DCU#5 5위(R3)-초기화 실패', 'T2', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 "Calibration failure” 신호가 "1"이 되면 검지.', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터고장, 장애물 감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우', '초기화 실패를 야기한 고장 코드를 확인하여 조치 후, 재 닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e5cc1251-ed4f-4217-aade-aa39d3ef2c2b', '0233', '233', 'AS 코크#2 차단(Car6)', 'M3', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e5db83bc-7436-4411-a823-2178518b880b', '0239', '239', 'BECU#1 - 3축 스키드신호', 'Tc1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e5fefeba-811b-4fe2-9514-e6a66c8cb85e', '0715', '715', 'HVAC#1 - 냉난방장치1 압력스위치1(DPS) 저압', 'Tc1', 'D', 'HVAC-냉난방장치1 압력스위치1(DPS) 저압', 'D', 'HVAC', '냉난방장치1 냉매 압력스위치1 저압 발생 +', 'UNIT1CYCLE1 냉방기능불가', 'UNIT1DSP1측 냉매압력이 3초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우 +', '냉매압력이 정상수치 2±0.5(kgf/cm2) 이상으로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CREF2의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)를 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설 여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안 되는 것을 확인한 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e60c596b-314d-4248-8888-e6cd3e4105cb', '0230', '230', 'ECU 전원공급 고장(Car2)', 'M1', 'B', 'ECU 전원공급 고장', 'B', 'BECU', '해당차량의 ECU 전원공급 고장 (CB OFF) 발생 시 검지', '해당차량의 ECU 전원공급 고장 검지 현시', '해당차량의 ECU 전원차단 (CB OFF)', '해당차량의 ECU 전원공급 (CB ON)', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속적으로 고장 발생시 관제보고하고 지시에 따를 것.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e61d21bc-b052-438b-8d8f-4990ec53dbd2', '0712', '712', 'HVAC#8 - 냉난방장치2 압력스위치1(DPS) 고압', 'Tc2', 'D', 'HVAC-냉난방장치2 압력스위치1(DPS) 고압', 'D', 'HVAC', '냉난방장치2 냉매 압력스위치1 고압 발생 +', 'UNIT2CYCLE1 냉방기능불가', 'UNIT2DSP1측 냉매압력이 3초 이상 28±1(kgf/cm2) 이상 되는 경우 +', '냉매압력이 정상수치 15±0.7(kgf/cm2) 이하로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CRCM3의 부하측 전류를 측정하여 응축기 팬의 동작여부를 확인한다. +2) 응축기 코일의 전면에 이물질로 인한 막힘이 있는지 확인한다. +3) 응축기 팬 상부 그릴에 외부 이물질로 인한 막힘이 있는지 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e62ba86a-3f94-4cbb-b1db-aabb97bd19d5', '0726', '726', 'HVAC#8-배기팬2 과부하', 'Tc2', 'C', 'HVAC-배기팬2 과부하', 'C', 'HVAC', 'HVAC 환기작동 중 차량 배기팬2 모터에 과부하 발생.', '환기 시 차량 배기팬2 운전 불가능', '1) 냉방작동 중 챠량 배기팬2 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRVF2와 연결된 THR10이 Trip 됨.', '차량 배기팬2 모터의 과부하 조건을 해소하여 정상 가능 상태로 만들고, THR10 및 마이콤 전원 리셋', '1) 냉난방배전반의 점검커버를 열고, THR10의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR10의 전류 세팅값이 2.5A에 맞춰져 있는지 확인하여, 아닐 경우, 십자 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동 시킨 후, THR10의 2차측 2,4 단자와 6 단자 사이의 전압이 DC 100V으로 정상 측정되는지 확인한다. +5) 만약 전압이 측정되지 않을 시, 전원이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, THR10 부품을 교체한다.', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e635348a-347a-46a7-8847-45df913ea620', '0317', '317', 'ATC#8-', 'Tc2', '0', null, null, '0', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e63ca2df-0cde-41d8-9512-e19561078625', '0169', '169', 'VVVF#7 - 상전류 동기 불평형 검지(RETRY)', 'M4', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e648f2d4-8aec-41f1-a4bc-212a55a0570e', '0728', '728', 'HVAC#1-냉난방장치2 토출 센서 고장', 'Tc1', 'C', 'HVAC-냉난방장치2 토출 센서 고장', 'C', 'HVAC', '냉난방장치2의 토출 센서 고장 발생', '냉난방장치2 토출센서 고장현시', '온도센서 검지범위는 -45~85도 (820~1330옴) 인데, 2초 이상 검지범위를 벗어나는 경우', '온도센서 검지 값이 2초 이상 허용온도 범위 내 일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820~1330옴 을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우, 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e64bd03d-d206-4317-acdf-9cd89d7d39dd', '0519', '519', 'DCU#8 3위(R2)-ZVR 신호 에러', 'Tc2', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 "ZVR signal error” 신호가 "1"이 되면 검지.', '출입문이 강제로 닫히게 되고, 열림은 불가능', '1) 차량 ZVR 신호가 없는 상태 (차량 주행상태) 에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함.', '해당출입문 ZVR 신호 수신', '1) 차량이 주행중이라면, 차량이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e6592b2a-5b42-4474-be42-1918e3473d98', '0723', '723', 'HVAC#8 - 냉난방장치1 압력스위치2(DPS) 냉매부족', 'Tc2', 'C', 'HVAC-냉난방장치1 압력스위치2(DPS) 냉매부족', 'C', 'HVAC', '냉난방장치1 냉매 압력스위치2 저압 발생 +', 'UNIT1CYCLE2 냉방 기능 불가', 'UNIT1DSP2측 냉매압력이 30초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우 +', '냉매압력이 정상수치 2±0.5(kgf/cm2) 이상 유지하도록 하고, 마이콤전원을 리셋', '1) 배전반 점검 커버를 열고 마이콤 전원을 리셋한 후, 냉방 가동 시, CREF2의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)을 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설 여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안 되는 것을 확인한 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e6667c48-652a-429a-8fd2-4fa9bf2e7bcd', '0514', '514', 'DCU#2 3위(R2) - 출입문 닫힘 시간 초과', 'M1', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 “Close time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 닫힘 동작 시간이 7초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도한 후, ‘장애물로 인한 닫힘 실패' 고장과 함께 ‘Close time out' 고장이 함께 현시 +', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e671b153-3b19-4d7d-a71d-d4c1274e7842', '0212', '212', 'BECU#6-1축속도신호의 비정상', 'M3', 'C', 'BECU-1축속도신호의 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit3 “1축속도신호의 비정상” 신호가 "1"이 되면 검지.', '해당 차량 1축속도신호의 비정상 검지 현시 및 해당 차량 활주제어 불가.', '해당 차량의 1축 속도센서 고장 발생.', '해당 차량의 1축 속도센서가 정상적일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e671cd7b-8cf8-43f3-b15e-52456e52bd4c', '0515', '515', 'DCU#7 4위(L2)-출입문 열림 시간 초과', 'M4', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 "Open time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 열림 동작시간이 6초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도 한 후, '장애물로 인한 열림실패' 고장과 함께 'Open time out' 고장이 함께 현시', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e67a1ec5-c73b-4033-8b97-7fd4af96339f', '0518', '518', 'DCU#3 1위(R1) - 출입문 Enable 신호 에러', 'M2', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 “Enable signal error” 신호가 “1”이 되면 검지 +', 'DCU 출입문Enable신호에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드 시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을 때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드 시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입 상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호 장치로부터의 출입문 열림 명령 신호) 취급 시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함. +', '해당 출입문 enable 신호수신', '1) AUTO/MCS 모드 시에는 YARD 모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인 한다. (YARD/FMC 모드 시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e685fbe1-bb48-41dc-b386-6cce3a4fa434', '0505', '505', 'DCU#6 1위(R1) - 출입문 입력 고전압', 'M3', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 “1”이 되면 검지 +', '고전압 상태(그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상 +', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e68acd7a-af40-48ff-85c0-9e4aeb61ae6f', '0710', '710', 'HVAC#7-냉난방장치2 압력스위치2(DPS) 고압', 'M4', 'D', 'HVAC-냉난방장치2 압력스위치2(DPS) 고압', 'D', 'HVAC', '냉난방장치2 냉매 압력스위치2 고압 발생.', 'UNIT2 CYCLE2 냉방 기능 불가', 'UNIT2 DSP2측 냉매 압력이 3초 이상 28±1(kgf/cm2) 이상 되는 경우', '냉매 압력이 정상 수치 15±0.7(kgf/cm2 이하로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CRCM4의 부하측 전류를 측정하여 응축기 팬의 동작여부를 확인한다. +2) 응축기 코일의 전면에 이물질로 인한 막힘이 있는지 확인한다. +3) 응축기 팬 상부 그릴에 외부 이물질로 인한 막힘이 있는지 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e6934332-77c8-4688-b29e-0be08f19bef4', '0744', '744', 'HVAC#4 - 전자접촉기 보조히터1(AHEK) 고장', 'T1', 'C', 'HVAC-전자접촉기 보조히터1(AHEK) 고장', 'C', 'HVAC', 'HVAC 보조난방기 작동 중 AHEK1 전자접촉기 고장 발생 +', 'UNIT1보조난방기전난방시반난방만 작동', '보조난방기 작동 중 2.5초 이상 동안 AHEK1 작동 feedback 신호가 수신되지 않는 경우 +', 'AHEK1 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) AHEK1을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, AHEK1과 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e6ab31f8-741e-4530-9c12-cc7dffb399e5', '0234', '234', '제동불완해검지(NRBD, Car1)', 'Tc1', 'B', '제동불완해검지(NRBD)', 'B', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT8의 Bit2 “NRBD” 신호가 "1"이 되면 검지.', '해당 차량 제동불완해 검지 현시 및 완해 취급하였음에도 불구하고 해당 차량 제동압력(BCP)이 완해되지 않음.', '제동완해 상태(정차제동 포함)에서 해당 차량의 제동압력이 완전히 배기 되지 않음.', '제동완해 상태(정차제동 포함)에서 해당 차량의 제동압력이 완전히 배기 됨.', '정차하여 강제완해스위치를 취급하여 소거 여부 확인. 제동 완해상태 확인 후 주의 운전 할 것. +2~3회 시도에도 완해불능시 관제보고하고 지시에 따를 것.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e6afff3f-ae83-438a-9891-3deb1c6622b4', '0235', '235', '제동력부족(ISBD, Car1)', 'Tc1', 'B', '제동력부족(ISBD)', 'B', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit3 “ISBD” 신호가 "1"이 되면 검지.', '해당 차량 제동력 부족 검지 현시 및 해당 차량 제동압력(BCP)이 타 차량에 비해 현저히 낮음.', '제동 7단 취급 시 해당 차량의 제동압력이 생성되지 않음.', '제동 7단 취급 시 정상적인 제동압력이 생성된 경우 소거.', 'MCS모드로 전환 후, 마스콘을 N(중립) -> 제동7단까지 수회취급 하여 소거 여부 확인. 제동 취급 확인 후, 주의 운전 할 것. +지속발생시 관제보고하고 지시에 따를 것.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e6b8f59c-83f6-4bfc-9142-f489d630217f', '0513', '513', 'DCU#5 3위(R2) - 모듈 상태체크 에러', 'T2', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 “Module check error” 신호가 “1”이 되면 검지 +', 'Modulecheckerror현시(출입문은 정상작동가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태 체크 기능에 이상이 생긴 경우 고장 발생 +', 'DCU의 ‘A' 모듈과 ‘B' 모듈 간, 상태 체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e6c7afd0-3bcf-4671-b445-7163f944f637', '0510', '510', 'DCU#7 3위(R2)-출입문 닫힘 리미트 스위치1 고장', 'M4', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 "DCS1 Failure(Leftt)” 신호가 "1"이 되면 검지.', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e6ca9aea-6207-4f43-a542-b2a07b80c213', '1100', '1100', 'PSD#1 통신고장', 'Tc1', 'C', 'PSD-통신고장', 'C', 'PSD', 'PSD와 TCMS(CU)간 RS485 통신고장이 검지되면 발생 +', '1) 화면상 PSD 열림/닫힘 등이 현시되지 않고, PSD 고장 현시됨. +2) 전동차 출입문 닫힘중 재열림 기능이 불가함. +3) 차상장치는 TCMS와 통신이 되지 않아도 출입문 열림/닫힘 기능은 구현된다.', 'PSD 전원 CBOFF 혹은 통신연결 불량 +', '1) 차상PSD 리셋 후에도 동일고장이면 사령실과 연락하여 조치를 취한다. +2) 전동차 출입문 닫힘 중 재열림 기능이 구현되지 않으므로 재열림 요구 시 전동차 출입문 완전히 닫힘 후 다시 열림을 시행함.', null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e6cd2deb-9e37-4fa9-9004-f7a27e8291d5', '0507', '507', 'DCU#5 1위(R1) - 초기화 실패', 'T2', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 “Calibration failure” 신호가 “1”이 되면 검지 +', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터 고장, 장애물감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우 +', '초기화 실패를 야기한 고장코드를 확인하여 조치 후, 재닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인한다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e6cdcc16-9f2a-4ae0-8f5d-9c06f706ee56', '1212', '1212', 'FDU#4-', 'T1', '0', null, null, 'FDU', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e6e25602-70b2-4a54-a31f-80dba79e5b03', '0517', '517', 'DCU#4 6위(L3)-출입문 장애물로 인한 열림 실패', 'T1', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Open failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘상태로 대기', '도어 열림 중 3회 장애물 감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 열림 시, 장애물 감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e6f7ed69-ad7f-465b-8364-6a04ba987548', '0504', '504', 'DCU#3 6위(L3) - 출입문 외부 비상핸들 취급(EAD)', 'M2', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e705c2d7-e858-4cd7-9685-ed0a947d3671', '0732', '732', 'HVAC#6 - 실외온도 센서1 고장', 'M3', 'C', 'HVAC-실외온도 센서 고장', 'C', 'HVAC', '실외온도 센서 고장 발생 +', '실외온도 센서 고장 현시', '온도센서 검지범위는 -45 ~ 85도(820 ~ 1,330Ω)인데, 2초 이상 검지범위를 벗어나는 경우 +', '온도센서 검지값이 2초 이상 허용온도 범위 내일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820 ~ 1,330Ω을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e717e766-d233-40ff-8fcc-1eed9a5de5d3', '0516', '516', 'DCU#8 3위(R2) - 출입문 장애물로 인한 닫힘 실패', 'Tc2', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Close failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림 상태로 대기', '도어 닫힘 중 3회 장애물감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e728e4be-03e2-4dbb-9f29-61c7d2a4fb3d', '0882', '882', '정면행선표시기(FDI) 고장(Car#8)', 'Tc2', 'C', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e728f430-4412-4605-a730-0c026d6eeb9f', '1206', '1206', 'FDU#8 - 감지기3 고장', 'Tc2', 'C', 'FDU-감지기3 고장 (Car1~8)', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 “Detector1 State” 신호가 “10”이 되면 검지 +', '감지기고장상태현시(자동소거 안 됨)', ' +1) 감지기로부터 데이터 응답이 없는 경우 +2) 감지기로부터 수신된 데이터의 CRC가 맞지 않는 경우 +3) 감지기로부터 수신된 데이터의 ID가 송신 ID와 일치하지 않는 경우 +', 'FDU 전원 리셋 후 감지기로부터 정상적으로 데이터가 수신된 경우', '1) FDU 전원 리셋 후 고장 소거 여부 확인 +2) 정상동작중인 감지기와 위치 교환 후 FDU 전원 리셋 및 고장 상태 확인 +3) 동일한 감지기에서 고장 발생 시 감지기 교체 +4) 동일한 위치에서 고장 발생 시 감지기 라인 점검', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e72d6a36-d893-4a80-86bd-a2bfb6bdf435', '0219', '219', 'BECU#1 - 제동지령 비정상', 'Tc1', 'C', 'BECU-제동지령 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit2 “제동지령 비정상” 신호가 “1”이 되면 검지 +', '해당 차량 제동지령비정상 검지 현시 및 해당 차량 정상적인제동제어불가(상용제동지령에 따른 제어)', '해당 차량의 제동지령 신호가 정상범위를 벗어남. (5.0 ~ 95.0%) +', '해당 차량의 제동지령 신호가 정상범위일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 소거되지 않을 경우 해당 선택 운전실의 PWM 엔코더를 리셋(CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e73f1de9-ed9b-458e-8329-503da9a249b8', '0506', '506', 'DCU#2 6위(L3)-출입문 입력 저전압', 'M1', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 "1"이 되면 검지.', '저전안 상태 (출입문 동작이 심하게 느려지거나 작동조차 안될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e73ff6d5-4ec7-418b-a05a-dcaa20d5bdae', '0880', '880', '측면제어기(SOB) 매립형 고장(Car#8)', 'Tc2', 'C', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e74e9488-1895-4671-827f-9395e12f68fe', '0812', '812', '출력증폭기#2(AMP) 고장(Car#1)', 'Tc1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e774cc00-957d-448e-86c1-d2b0ca9d35ce', '0753', '753', 'HVAC#4 - 배기댐퍼 열림고장', 'T1', 'C', 'HVAC-배기댐퍼 열림고장', 'C', 'HVAC', '환기 시, 차량 배기댐퍼가 열려 있는 상태에서 배기댐퍼 열림 리미트 스위치가 작동되지 않음 +', '배기댐퍼 열림 고장 현시', '배기댐퍼를 열림으로 제어했으나 열림 리미트 스위치 입력이 없을 경우 +', '배기댐퍼 열림상태에서 리미트 스위치 입력이 정상적으로 입력', '1) 배기댐퍼가 열린 상태에서 열림 리미트 스위치가 정상적으로 작동되었는지 확인한다. +2) 열림 리미트 스위치가 정상작동 되었음에도 문제가 발생될 경우, 스위치를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e77cf13c-47e0-4091-8420-227d85973a31', '0518', '518', 'DCU#4 1위(R1) - 출입문 Enable 신호 에러', 'T1', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 “Enable signal error” 신호가 “1”이 되면 검지 +', 'DCU 출입문Enable신호에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드 시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을 때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드 시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입 상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호 장치로부터의 출입문 열림 명령 신호) 취급 시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함. +', '해당 출입문 enable 신호수신', '1) AUTO/MCS 모드 시에는 YARD 모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인 한다. (YARD/FMC 모드 시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e79f86e4-fcbc-4e1a-a5d6-c64ba0951dc8', '0424', '424', 'SIV#1-', 'Tc1', '0', null, null, '0', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e7a08d64-3729-45f5-85b6-a534b8201c1c', '0519', '519', 'DCU#5 2위(L1)-ZVR 신호 에러', 'T2', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 "ZVR signal error” 신호가 "1"이 되면 검지.', '출입문이 강제로 닫히게 되고, 열림은 불가능', '1) 차량 ZVR 신호가 없는 상태 (차량 주행상태) 에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함.', '해당출입문 ZVR 신호 수신', '1) 차량이 주행중이라면, 차량이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.392739+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e7a2a044-3f8a-40bd-9c7d-ad8cee756429', '0100', '100', 'VVVF#6 통신고장', 'M3', 'B', 'VVVF-통신고장', 'B', 'VVVF', 'VVVF와 TCMS 간 RS485 통신고장이 검지되면 발생 +', 'TCMS 화면에 고정정보 현시되며, 추진제어장치상태화면에 나타나는 데이터에 변동이 없음.', 'TCMS-추진제어장치(VVVF)간 통신정보가 3초 이상 동일한 정보로 유지되면 통신고장을 검지함. +', 'TCMS-추진제어장치(VVVF) 간 통신정보가정상적으로 통신이 될 경우 소거됨.', '1) 추진제어장치(VVVF) 리셋 실시 후 통신고장 소거됨을 확인 +2) 통신고장 소거가 되지 않을 경우 추진제어장치 PUZ 보드 신품으로 교체 후 통신고장 소거여부 확인 +3) 위 조건에도 고장이 소거되지 않을 경우, TCMS-추진제어장치 간 RS485 통신케이블 연결 상태 점검', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e7b07b28-ac98-46f3-8d1f-85b92737ffa6', '0700', '700', 'HVAC#4 통신고장', 'T1', 'C', 'HVAC-통신고장', 'C', 'HVAC', 'HVAC와 TCMS간 RS485 통신고장이 검지되면 발생.', '화면상 HVAC의 실내온도, 운전모드 등의 데이터가 반응하지 않음.', '1) 마이콤 전원 CB OFF +2) 통신연결 불량 +3) 해당 마이콤이 검수요원에 의해 firmware 업데이트 중인 경우', '해당차량의 마이콤 및 CU/TU 의 전원이 정상상태이고, 통신라인 연결상태가 정상', '1) 냉난방배전반의 점검커버를 열고, 마이콤이 정상적으로 켜저 있는지 확인한다. +2) 만약 마이콤 전원이 꺼져 있다면, 마이콤 DC전원 CB 및 차량 배전반에 위치한 냉난방장치 CB가 정상적으로 켜져 있는지 확인한다. +3) 마이콤이 정상적으로 켜져 있는데도 지속적으로 통순고장이 검지되면, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e7c9ca1f-78f3-47de-8010-318fb2b78885', '0215', '215', 'BECU#5-후미대차 AS압력센서고장', 'T2', 'C', 'BECU-후미대차 AS압력센서 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit6 “후미대차 AS압력센서 고장” 신호가 "1"이 되면 검지.', '해당 차량 후미대차 AS압력센서 고장 검지 현시 및 해당차량 정상적인 응하중 제동제어 불가.', '해당 차량의 후미대차 AS 압력센서(AS3, AS4) 고장.', '해당 차량의 후미대차 AS 압력센서(AS3, AS4)가 정상일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e7e6a046-eda2-4185-bea9-703e9d6e9f9f', '0916', '916', 'TRAIN RADIO#8-열차번호 변경 설정', 'Tc2', 'W', null, null, 'RADIO', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e7f5cc03-d35a-4598-b9d7-2f26420b7d13', '0501', '501', 'DCU#5 4위(L2)-출입문 차단', 'T2', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e809626d-d9d2-405c-be1d-db19c823995f', '0516', '516', 'DCU#6 3위(R2)-출입문 장애물로 인한 닫힘 실패', 'M3', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Close failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림상태로 대기', '도어 닫힘 중 3회 장애물 감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e8122dae-31eb-44d1-a73e-386c58e8e176', '0514', '514', 'DCU#2 6위(L3) - 출입문 닫힘 시간 초과', 'M1', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 “Close time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 닫힘 동작 시간이 7초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도한 후, ‘장애물로 인한 닫힘 실패' 고장과 함께 ‘Close time out' 고장이 함께 현시 +', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e81bdb2f-47d9-4f42-883a-07dc961a6194', '0515', '515', 'DCU#3 5위(R3) - 출입문 열림 시간 초과', 'M2', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 “Open time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 열림 동작시간이 6초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도한 후, ‘장애물로 인한 열림 실패' 고장과 함께 ‘Open time out' 고장이 함께 현시 +', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e8412772-64b5-4ec4-b5c3-dd184a6cc75e', '0701', '701', 'HVAC#4-냉난방장치2 압축기2 과부하', 'T1', 'C', 'HVAC-냉난방장치2 압축기2 과부하', 'C', 'HVAC', 'HVAC 냉방작동 중 냉난방장치2 압축기2 또는 응축기2 모터에 과부하 발생.', '냉방 기능 저하(전냉방시 반냉방으로 작동)', '1) 냉방작동 중 UNIT2의 압축기2 또는 응축기2 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRCM4와 연결된 THR4가 Trip 됨.', 'UNIT2의 압축기2 또는 응축기2 모터의 과부하 조건을 해소하여 정상 가능 상태로 만들고, THR4 및 마이콤 전원 리셋', '1) 냉난방배전반의 점검커버를 열고, THR4의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR4의 전류 세팅값이 11.5A에 맞춰져 있는지 확인하여, 아닐 경우, 십자 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동 시킨 후, THR4의 2차측 2,4,6 단자에서 각 단자간 상간 전압이 AC 380V으로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 압축기 및 응축기 단품 상태에서 점검을 한다. +7) THR4의 2차측 2,4,6 단자에서 각 단자간 권선저항이 모두 같은지 확인한다. (±10% 이하) (압축기2 및 응축기2 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT2의 압축기2 또는 응축기2 모터의 결선을 해제한 후 각 부품의 권선저항을 확인 후, 문제가 있는 부품을 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR4 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e8493702-650f-48eb-be1d-9ded99d55b9f', '0731', '731', 'HVAC#7-냉난방장치1 리턴 센서 고장', 'M4', 'C', 'HVAC-냉난방장치1 리턴 센서 고장', 'C', 'HVAC', '냉난방장치1의 리턴 센서 고장 발생', '냉난방장치1 리턴센서 고장현시', '온도센서 검지범위는 -45~85도 (820~1330옴) 인데, 2초 이상 검지범위를 벗어나는 경우', '온도센서 검지 값이 2초 이상 허용온도 범위 내 일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820~1330옴 을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우, 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e859075f-7b7b-41fd-ad1b-34b98ab268bf', '0512', '512', 'DCU#5 6위(L3)-파라미터 로딩 실패', 'T2', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 "Paraneter error” 신호가 "1"이 되면 검지.', 'Parameter error 현시 (출입문은 정상작동 가능)', 'DCU 자체내의 EEPROM으로부터 parameter 데이터 로딩 실패', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e85b70d8-f7f0-4d12-ab34-8d11cc79f04c', '0105', '105', 'VVVF#3-상전류 불평형 검지(PUD)', 'M2', 'C', 'VVVF-상전류 불평형 검지(PUD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT29의 Bit0 “PUD” 신호가 "1"이 되면 검지.', null, '1) 인버터 출력 U,V,W 상간 RMS전류 값의 차이가 100A 이상 3초간 발생하는 때 경고장 발생. +2) 1분 이내 3회 발생 시 중고장 발생.', '1) 경고장 +역행 고장검지 2초 후 자동 재기동 제동 제동 OFF시 고장 소거 +2) 중고장 +동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 견인전동기로 출력되는 3상의 전류치 확인함. +3) 특정상의 전류치가 비정상적일 경우 특정상에 해당되는 전류센서, 모터결선을 확인한다. +4) 전류센서와 추진제어장치 제어기 PWM 보드에 연결되는 저전압 배선상태를 확인한다. +5) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +6) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e875f6a2-258b-48f6-ba69-de080624de05', '0519', '519', 'DCU#4 1위(R1) - ZVR 신호 에러', 'T1', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 “ZVR signal error” 신호가 “1”이 되면 검지 +', '출입문이강제로 닫히게 되고, 열림은 불가능', ' +1) 차량 ZVR 신호가 없는 상태(차량 주행상태)에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함. +', '해당 출입문 ZVR 신호 수신', '1) 차량 이 주행중이라면, 차량 이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e8861945-4b20-49a7-9867-66f6f523cf04', '1527', '1527', 'CU2 백업동작 활성', 'Tc1/2', 'D', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e8a026f1-6ebf-4144-8cc3-815773f49840', '0425', '425', 'ESK 연장급전 투입', 'T1', 'W', null, null, 'SIV', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e8a53cf1-f5cb-479c-86d1-4ff5a36a70b0', '0517', '517', 'DCU#7 3위(R2)-출입문 장애물로 인한 열림 실패', 'M4', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Open failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘상태로 대기', '도어 열림 중 3회 장애물 감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 열림 시, 장애물 감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e8a96ef4-4e55-44ed-828f-8a6e243476f1', '0215', '215', 'BECU#8-후미대차 AS압력센서고장', 'Tc2', 'C', 'BECU-후미대차 AS압력센서 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit6 “후미대차 AS압력센서 고장” 신호가 "1"이 되면 검지.', '해당 차량 후미대차 AS압력센서 고장 검지 현시 및 해당차량 정상적인 응하중 제동제어 불가.', '해당 차량의 후미대차 AS 압력센서(AS3, AS4) 고장.', '해당 차량의 후미대차 AS 압력센서(AS3, AS4)가 정상일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e8aae862-cb8b-440d-ae37-c5b8389af3c8', '0218', '218', 'BECU#2-인통선로직 비정상', 'M1', 'C', 'BECU-인통선로직 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit1 “인통선로직 비정상” 신호가 "1"이 되면 검지.', '해당 차량 인통선로직 비정상 검지 현시 및 해당차량 정상적인 제동제어 불가.(상용제동지령에 따른 제어)', '해당 차량의 추진선택(P), 제동선택(B) 신호가 동시에 ON 됨.', '해당 차량의 추진선택(P), 제동선택(B) 신호가 정상작동(상보적으로 작동) 될 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 한 뒤, 마스콘을 제동 7단으로 5초간 취급하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e8c4ed12-6d6d-417b-b6c0-89b7fcf64e5a', '0125', '125', 'VVVF-FC 충전불량검지(FCD) (Car6)', 'M3', 'C', 'VVVF-FC 충전불량검지(FCD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT33의 Bit6 “FCD” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 'FC 충전불량검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치 기동시 FC전압이 1000V 이하일 경우 검지됨.', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반배전반의 VVVFIC nfb 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 FC전압에 이상이 있는지 확인한다. +3) 추진제어장치 내부 고전압부에 소손흔적이 있는지 확인한다. +4) LB Box 내부의 충전저항기의 소손이 없는지 확인한다. +5) FC에 연결된 버스바의 체결상태가 양호한지 확인한고, 버스바를 분리하여 FC의 Capacitance를 측정하여 이상이 없는지 확인한다. +6) 전압센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +7) SEN 보드의 동작상태를 시험기를 통해 확인한다. +8) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +9) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.656536+00', null, '다대48량(2015)', 'Rotem'), ('e8cc981a-9895-42da-a102-f37cbcf8ef88', '0839', '839', '0', 'T1', '0', null, null, '0', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e8ded10b-f818-46b7-b661-938bfeedd390', '0206', '206', 'BECU#6-RAM 점검 고장', 'M3', 'C', 'BECU-RAM 점검 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit5 “RAM 점검 고장” 신호가 "1"이 되면 검지.', '해당 차량 RAM 점검 고장 검지 현시 및 해당 차량 정상적인 제동제어 불가.', '해당 차량 BECU의 자가진단 시 고장 발생.', '해당 차량 BECU의 자가진단 시 정상적일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e8f5f1e1-8e67-422d-aed0-bd24b24edc03', '0230', '230', 'ECU 전원공급 고장(Car5)', 'T2', 'B', 'ECU 전원공급 고장', 'B', 'BECU', '해당차량의 ECU 전원공급 고장 (CB OFF) 발생 시 검지', '해당차량의 ECU 전원공급 고장 검지 현시', '해당차량의 ECU 전원차단 (CB OFF)', '해당차량의 ECU 전원공급 (CB ON)', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속적으로 고장 발생시 관제보고하고 지시에 따를 것.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e91901c1-b97b-48a5-8606-644358c9c73c', '0518', '518', 'DCU#8 2위(L1) - 출입문 Enable 신호 에러', 'Tc2', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 “Enable signal error” 신호가 “1”이 되면 검지 +', 'DCU 출입문Enable신호에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드 시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을 때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드 시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입 상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호 장치로부터의 출입문 열림 명령 신호) 취급 시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함. +', '해당 출입문 enable 신호수신', '1) AUTO/MCS 모드 시에는 YARD 모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인 한다. (YARD/FMC 모드 시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e91c4fde-21b7-42d0-9353-d0c3e10e50b6', '0300', '300', 'ATC#8 통신고장', 'Tc2', 'B', 'ATC 통신고장', 'B', 'ATC', 'ATC와 TCMS 간 RS485 통신고장이 검지되면 발생 +', 'MMI 화면에 ATC상태가 통신고장으로 현시된다.', ' +1) ATC 전원 CB OFF +2) ATC시스템 자체진단테스트결과 비정상상태일 경우 +3) ATC-1계/2계 CPU보드 고장 시 +4) ATC-1계/2계 POWER보드 고장 시 +5) 통신연결 불량 +', '해당 차량의 ATC 및 CU의 전원이 정상상태이고, 통신 라인 연결 상태가 정상', '1) MMI화면 우측 상단에 ATC/ATO1, ATC/ATO2 정상상태(초록색글자현시)인지 확인한다. +2) 비정상상태(빨간 글자 현시) 시 전원스위치 CB ATC#1, 2 OFF → ON하여 복귀시도 후, 복귀 되었는지 확인한다. +3) ATC가 정상적으로 켜져 있는데도 지속적으로 통신고장이 검지되면, ATC의 CN3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상 체결되어 있을 경우, CU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e91e4e1a-1af0-4011-9b25-a0096c535b07', '0502', '502', 'DCU#6 1위(R1) - 출입문 장애물검지', 'M3', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e92a24bc-90bb-4f20-bb47-b743ff8c677e', '0721', '721', 'HVAC#3-냉난방장치2 압력스위치2(DPS) 냉매부족', 'M2', 'C', 'HVAC-냉난방장치2 압력스위치2(DPS) 냉매부족', 'C', 'HVAC', '냉난방장치2 냉매 압력스위치2 저압 발생.', 'UNIT2 CYCLE2 냉방 기능 불가', 'UNIT2 DSP2측 냉매 압력이 30초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우', '냉매 압력이 정상 수치 2±0.5(kgf/cm2 이상 유지하도록 하고, 마이콤 전원을 리셋', '1) 배전반 점검 커버를 열고 마이콤 전원을 리셋한 후, 냉방 가동 시, CREF4의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)을 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안되는 것을 확인한 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e9363e83-93d4-4071-ba9c-0905fef6ac8f', '0113', '113', 'VVVF-주회로 접지검지(LGD) (Car3)', 'M2', 'B', 'VVVF-주회로 접지검지(LGD)', 'B', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT32의 Bit0 “LGD” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 '주회로 접지검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동이 되지 않으며 중고장으로 처리됨. +3) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치 입력전압이 300V 이하로 하강되며, 입력전류가 1700A 이상인 조건.', '1) 추진제어장치 리셋으로 고장 소거됨.', '1) 상기고장이 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 고장기록의 FC 전압 및 입력전류 확인. +3) 추진제어장치 내부에 접지흔적 확인 및 고압회로 점검. +4) 전류/전압 센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작상태를 시험기를 통해 확인한다. +6) IPM 전원공급기의 전원연결상태 또는 광케이블의 연결상태와 배선상태를 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.656536+00', null, '다대48량(2015)', 'Rotem'), ('e93694d1-f101-4e76-9ad4-2ab86f5fa9af', '0505', '505', 'DCU#4 1위(R1) - 출입문 입력 고전압', 'T1', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 “1”이 되면 검지 +', '고전압 상태(그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상 +', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e937615f-2965-4b99-94d2-2c93f9bcf898', '0518', '518', 'DCU#2 2위(L1)-출입문 Enable 신호 에러', 'M1', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 "Enable signal error” 신호가 "1"이 되면 검지.', 'DCU 출입문 Enable 신호 에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) 취급시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함.', '해당출입문 enable 신호 수신', '1) AUTO/MCS 모드시에는 YARD모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인한다. (YARD/FMC 모드시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.392739+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e94a0c94-c88f-454e-80fc-efc0dc826736', '0501', '501', 'DCU#3 3위(R2) - 출입문 차단', 'M2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e94fc47a-c17e-4fec-b06c-52396b811db9', '0744', '744', 'HVAC#1 - 전자접촉기 보조히터1(AHEK) 고장', 'Tc1', 'C', 'HVAC-전자접촉기 보조히터1(AHEK) 고장', 'C', 'HVAC', 'HVAC 보조난방기 작동 중 AHEK1 전자접촉기 고장 발생 +', 'UNIT1보조난방기전난방시반난방만 작동', '보조난방기 작동 중 2.5초 이상 동안 AHEK1 작동 feedback 신호가 수신되지 않는 경우 +', 'AHEK1 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) AHEK1을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, AHEK1과 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e9563ea0-aa56-499e-b19b-56bcd20ae100', '0501', '501', 'DCU#6 6위(L3)-출입문 차단', 'M3', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e9623703-f5a5-4d10-b36b-e11c5fb15906', '0516', '516', 'DCU#6 3위(R2) - 출입문 장애물로 인한 닫힘 실패', 'M3', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Close failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림 상태로 대기', '도어 닫힘 중 3회 장애물감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e9724844-65f9-4bcf-ae15-1aa7b5995995', '0511', '511', 'DCU#7 6위(L3)-출입문 닫힘 리미트 스위치2 고장', 'M4', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 "DCS2 Failure(Right)” 신호가 "1"이 되면 검지.', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e97b7a4a-2e23-4e1a-b13c-4a19aaf44d60', '0500', '500', 'DCU#2 5위(R3) 통신고장', 'M1', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS간 RS485 통신고장이 검지되면 발생.', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐 상태 등의 변화가 없음.', '1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우', '해당차량의 DCU 및 CU/TU 의 전원이 정상상태이고, 통신라인 연결상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜저 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는데도 지속적으로 통순고장이 검지되면, DCU의 X2,X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e983094d-59b4-48d5-b342-c882f6f89884', '0139', '139', 'VVVF#2-INV ARM 단락(CFD)', 'M1', 'C', 'VVVF-INV ARM 단락(CFD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT29의 Bit4 “CFD” 신호가 "1"이 되면 검지.', null, '게이트신호와 피드백신호 불일치 발생 시 고장검지.', '동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) 육안으로 IGBT의 상태를 확인하여 외관에 손상이 있는지 확인한다. +2) FC 양 옆의 PWM 제어기판의 고정상태 확인. +3) IGBT의 Collector와 Emitter 양단을 멀티미터를 이용하여 단락 여부 및 다이오드 상태를 확인한다. +4) PWM 보드의 후면 커넥터 핀 상태 확인. +5) 추진제어장치 시험기를 이용하여 PWM 보드의 이상여부를 확인한다. +6) 게이트 드라이버 외관 및 커넥터 핀 상태 확인. +7) 상기의 점검부분에 이상이 있을 경우 관련부품을 교체한다. +8) 동일 고장 재발 시 INV 스택을 교체한다.', null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e98740b5-7ace-4b51-9087-03b5d8ac75b1', '0749', '749', 'HVAC#6 - 380V 전원고장', 'M3', 'C', 'HVAC-380V 전원고장', 'C', 'HVAC', 'HVAC 메인 전원 AC 380V 전원 고장 발생 +', 'HVAC 냉방 및 난방 기능 불가', '차량으로부터 공급되는 AC 380V가 입력되지 않는 경우 +', '차량으로부터 AC 380V 전압이 정상적으로 입력', '1) 차량으로부터 AC 380V 전압이 정상적으로 입력되는지 확인한다. +2) 차량 전원이 정상일 경우, 냉난방 배전반의 CBLVD 차단기가 꺼져 있는지 확인 후, 꺼져있을 경우 켠다. +3) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e99a7643-0e96-4253-ba1b-397bbca33177', '0512', '512', 'DCU#2 2위(L1)-파라미터 로딩 실패', 'M1', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 "Paraneter error” 신호가 "1"이 되면 검지.', 'Parameter error 현시 (출입문은 정상작동 가능)', 'DCU 자체내의 EEPROM으로부터 parameter 데이터 로딩 실패', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e9a18995-37bb-418a-8073-4d717ab78578', '0506', '506', 'DCU#2 6위(L3) - 출입문 입력 저전압', 'M1', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 “1”이 되면 검지 +', '저전압상태(출입문 동작이 심하게 느려지거나 작동조차 안 될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하 +', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e9a28533-b664-4075-9f48-d83fd8fd92ae', '0502', '502', 'DCU#6 3위(R2) - 출입문 장애물검지', 'M3', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e9a31368-63a9-4e88-9a6b-bea0dbeb8e55', '0510', '510', 'DCU#6 5위(R3)-출입문 닫힘 리미트 스위치1 고장', 'M3', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 "DCS1 Failure(Leftt)” 신호가 "1"이 되면 검지.', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('e9af0861-299f-4f82-8e26-677c01880635', '0725', '725', 'HVAC#2 - 냉방시험 불가능', 'M1', 'C', 'HVAC-냉방시험 불가능', 'C', 'HVAC', '운전실 TCMS에서 냉방시험 작동을 할 때, 냉방운전이 불가능한 경우 발생 +', '냉방시험 운전 불가능', '실내 또는 실외온도가 10도 미만일 경우(환절기 또는 겨울철에 냉방가동 시 시스템 보호를 위한 온도조건) +', '실내 또는 실외온도가10도 이상일 때, 냉방시험작동', '1) TCMS 화면에서 실내 또는 실외 온도가 10도 미만인지 확인한다. +2) 실내 및 실외 온도가 10도 이상인데도 냉방 가동이 되지 않을 시, TCMS-마이콤 간 통신불량이 있는지 확인하고 조치한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e9b55000-1542-4ad6-9c4e-db5d7cae2f8b', '0144', '144', 'VVVF#2 - HSCB 트립검지(HBT)', 'M1', 'B', 'VVVF-HSCB 트립검지(HBT)', 'B', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT30의 Bit1 “HBT” 신호가 “1”이 되면 검지 +', '1) TCMS 화면 하단 또는 고장화면에 ‘HSCB 자기트립검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동이 되지 않으며 중고장으로 처리됨. +3) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉은색으로 표기되며, HSCB, LB1, 2 개방되어 동력 손실 발생함.', '추진제어장치 입력전류가 1,500A 이상인 조건 +', '추진제어장치 리셋으로 고장 소거됨.', '1) 상기고장이 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 고장기록의 FC 전압 및 입력전류 확인 +3) 추진제어장치 내부에 접지흔적 확인 및 고압 회로 점검 +4) 전류/전압 센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작 상태를 시험기를 통해 확인한다. +6) IPM 전원공급기의 전원연결 상태 또는 광케이블의 연결 상태와 배선상태를 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지 간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e9b78a01-5ba1-4f3c-974a-9daa66af52a8', '0845', '845', '비상인터폰#1(PEI) 고장(Car#4)', 'T1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e9f45ee2-b0d6-43d8-af0d-fa7bc43e948b', '0514', '514', 'DCU#1 2위(L1) - 출입문 닫힘 시간 초과', 'Tc1', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 “Close time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 닫힘 동작 시간이 7초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도한 후, ‘장애물로 인한 닫힘 실패' 고장과 함께 ‘Close time out' 고장이 함께 현시 +', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('e9ffd218-deff-468c-8598-3068b0c360ec', '0519', '519', 'DCU#6 1위(R1) - ZVR 신호 에러', 'M3', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 “ZVR signal error” 신호가 “1”이 되면 검지 +', '출입문이강제로 닫히게 되고, 열림은 불가능', ' +1) 차량 ZVR 신호가 없는 상태(차량 주행상태)에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함. +', '해당 출입문 ZVR 신호 수신', '1) 차량 이 주행중이라면, 차량 이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ea0bf27e-d46a-491b-ba5c-595188011bc8', '1211', '1211', 'FDU#7-체크섬 고장', 'M4', 'C', 'FDU-체크섬 고장', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT5의 Bit7 "Checksum Fault” 신호가 "1"이 되면 검지.', 'Checksum Fault 현시 및 FDU의 정상 동작 불가능', '수신기 펌웨어의 오류로 인한 체크섬 이상(MCU 내부 플래쉬 메모리에 저장된 체크섬과 프로그램의 체크섬 계산값이 다를경우)', 'FDU가 부팅될때 MCU 내부 플래쉬 메모리에 저장된 체크섬과 프로그램의 체크섬 계산값이 같을 경우', '1) FDU의 전원을 리셋하여 소거여부 확인 +2) 문제가 지속될 경우, 수신기 교체', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ea0f6070-46ca-4eb7-96c3-8c568246089f', '0514', '514', 'DCU#3 6위(L3) - 출입문 닫힘 시간 초과', 'M2', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 “Close time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 닫힘 동작 시간이 7초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도한 후, ‘장애물로 인한 닫힘 실패' 고장과 함께 ‘Close time out' 고장이 함께 현시 +', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ea174b2c-950c-469f-88b7-794bf6f8205f', '0210', '210', 'BECU#2 - 3축 속도신호의 비정상', 'M1', 'C', 'BECU-3축속도신호의 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit1 “3축속도신호의 비정상” 신호가 “1”이 되면 검지 +', '해당 차량 3축속도신호의 비정상 검지 현시 및 해당 차량 활주제어불가', '해당 차량의 3축속도센서 고장 발생 +', '해당 차량의 3축속도센서가 정상적일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ea181c24-a9eb-40c5-951c-d93d1208586a', '0514', '514', 'DCU#2 5위(R3) - 출입문 닫힘 시간 초과', 'M1', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 “Close time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 닫힘 동작 시간이 7초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도한 후, ‘장애물로 인한 닫힘 실패' 고장과 함께 ‘Close time out' 고장이 함께 현시 +', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ea235d62-f283-4cf7-9234-8ec9235fa893', '0514', '514', 'DCU#8 2위(L1) - 출입문 닫힘 시간 초과', 'Tc2', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 “Close time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 닫힘 동작 시간이 7초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도한 후, ‘장애물로 인한 닫힘 실패' 고장과 함께 ‘Close time out' 고장이 함께 현시 +', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ea2f2b20-9789-48c3-b98d-f9a847f389a6', '0503', '503', 'DCU#8 6위(L3)-출입문 내부비상핸들 취급(EED)', 'Tc2', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ea4aed01-ba25-4eca-8ef7-88e3c55acd44', '0322', '322', 'ATC#1 - 출입문 열림 오류', 'Tc1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ea4c8f92-2a4f-40d8-93aa-14339c4caf6b', '0407', '407', 'SIV#8-인버터2 입력 과전압(INV2OV)', 'Tc2', 'C', 'SIV-인버터2 입력 과전압(INV2OV)', 'C', 'SIV', '보조전원장치(SIV)의 RS485 데이터 중 SIV-TCMS SD TEXT6의 Bit5 “INV2OV” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 '인버터2 입력 과전압(INV2OV)' 표시됨. +2) 보조전원장치(SIV)는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 보조전원장치(SIV) 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 보조전원장치(SIV) 상태 붉을색으로 표기되며, 연장급전 됨.', '보조전원장치(SIV) 내부 인버터 2의 FC전압이 1,200V 이상일 경우 검지됨.', '1) 경고장이 발생할 경우 보조전원장치(SIV) 자동 재기동에 의해 재기동 됨. +2) 중고장이 발생했을 경우 조치 완료 후 보조전원장치(SIV) 리셋으로 고장 소거됨.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 보조전원장치(SIV) 고장기록을 수집하여 FC전압에 이상이 있는지 확인한다. +3) 보조전원장치(SIV) 내부 고전압부에 소손흔적이 있는지 확인한다. +4) FC에 연결된 버스바의 체결상태가 양호한지 확인한고, 버스바를 분리하여 FC의 Capacitance를 측정하여 이상이 없는지 확인한다. +5) 전압센서와 보조전원장치(SIV) 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +6) SEN 보드의 동작상태를 시험기를 통해 확인한다. +7) 출력단 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ea4d5de9-78c7-4338-86dd-f45e9b60e4ec', '1110', '1110', 'PSD#8-차상 RF고장(2계)', 'Tc2', 'C', null, null, 'PSD', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ea5c29e4-1391-4275-ae1a-61d6d37e4b46', '0070', '70', 'MAIN FUSE#2 DISCONNECTED(Car7)', 'M4', 'W', 'MAIN FUSE#2 DISCONNECTED(Car7)', 'W', '기타', '차량으로부터 AUX FUSE DISCONNECTED 신호 입력 시 +', 'VVVF 고압 차단으로 추진 불능', '해당 퓨즈 소손 +', '해당 퓨즈 교체 +회로 도면 : REC20210DX0', null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ea5fa35e-4df1-4b4c-b3f2-6b090142b0dd', '0511', '511', 'DCU#7 4위(L2) - 출입문 닫힘 리미트 스위치2 고장', 'M4', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 “DCS2 Failure(Right)” 신호가 “1”이 되면 검지 +', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ea6ccff5-0238-4bc9-87c0-7407d4701e94', '0509', '509', 'DCU#2 5위(R3)-출입문 잠김 리미트 스위치 고장', 'M1', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 "DLS Failure” 신호가 "1"이 되면 검지.', '출입문 잠김 상태 확인 불가', '1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ea75073c-8422-4888-9408-bbd8a810ee07', '0515', '515', 'DCU#2 1위(R1) - 출입문 열림 시간 초과', 'M1', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 “Open time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 열림 동작시간이 6초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도한 후, ‘장애물로 인한 열림 실패' 고장과 함께 ‘Open time out' 고장이 함께 현시 +', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ea831313-3beb-41fb-bfeb-17c7e8072642', '0214', '214', 'BECU#2 - BC 압력센서 고장', 'M1', 'C', 'BECU-BC 압력센서 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit5 “BC 압력센서 고장” 신호가 “1”이 되면 검지 +', '해당 차량 BC 압력센서 고장검지 현시 및 해당 차량 제동력부족, 제동불완해 검지 불가', '해당 차량의 BC 압력센서 고장 +', '해당 차량의 BC 압력센서가 정상일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ea8fe3d8-a068-4e34-ae44-710ada4ba250', '0211', '211', 'BECU#1-2축속도신호의 비정상', 'Tc1', 'C', 'BECU-2축속도신호의 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit2 “2축속도신호의 비정상” 신호가 "1"이 되면 검지.', '해당 차량 2축속도신호의 비정상 검지 현시 및 해당 차량 활주제어 불가.', '해당 차량의 2축 속도센서 고장 발생.', '해당 차량의 2축 속도센서가 정상적일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ea902d8a-3080-4eef-98e8-1c3ad8cbc4c1', '0119', '119', 'VVVF-FC 저전압검지(FCLVD) (Car2)', 'M1', 'C', 'VVVF-FC 저전압검지(FCLVD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT32의 Bit6 “FCLVD” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 'FC 저전압검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치 내부 FC전압이 850V 이상일 경우 검지됨.', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반배전반의 VVVFIC nfb 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 FC전압에 이상이 있는지 확인한다. +3) 추진제어장치 내부 고전압부에 소손흔적이 있는지 확인한다. +4) FC에 연결된 버스바의 체결상태가 양호한지 확인한고, 버스바를 분리하여 FC의 Capacitance를 측정하여 이상이 없는지 확인한다. +5) 전압센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +6) SEN 보드의 동작상태를 시험기를 통해 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.578803+00', null, '다대48량(2015)', 'Rotem'), ('ea957785-c5a4-4c2b-a0f6-ada8686f0054', '0226', '226', 'BECU#6-제동불완해검지(NRBD)', 'M3', 'B', 'BECU-제동불완해검지(NRBD)', 'B', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT8의 Bit2 “NRBD” 신호가 "1"이 되면 검지.', '해당 차량 제동불완해 검지 현시 및 완해 취급하였음에도 불구하고 해당 차량 제동압력(BCP)이 완해되지 않음.', '제동완해 상태(정차제동 포함)에서 해당 차량의 제동압력이 완전히 배기 되지 않음.', '제동완해 상태(정차제동 포함)에서 해당 차량의 제동압력이 완전히 배기 됨.', '정차하여 강제완해스위치를 취급하여 소거 여부 확인. 제동 완해상태 확인 후 주의 운전 할 것. +2~3회 시도에도 완해불능시 관제보고하고 지시에 따를 것.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ea9a9fe7-1b87-4d59-884f-9cf039aaa6f1', '0518', '518', 'DCU#5 2위(L1) - 출입문 Enable 신호 에러', 'T2', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 “Enable signal error” 신호가 “1”이 되면 검지 +', 'DCU 출입문Enable신호에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드 시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을 때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드 시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입 상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호 장치로부터의 출입문 열림 명령 신호) 취급 시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함. +', '해당 출입문 enable 신호수신', '1) AUTO/MCS 모드 시에는 YARD 모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인 한다. (YARD/FMC 모드 시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('eaa790b1-3cb8-456f-9944-65c34b56c713', '0501', '501', 'DCU#1 1위(R1)-출입문 차단', 'Tc1', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('eaad5b67-f7aa-4ecc-a0e1-eb58be6eb340', '0712', '712', 'HVAC#6-냉난방장치2 압력스위치1(DPS) 고압', 'M3', 'D', 'HVAC-냉난방장치2 압력스위치1(DPS) 고압', 'D', 'HVAC', '냉난방장치2 냉매 압력스위치1 고압 발생.', 'UNIT2 CYCLE1 냉방 기능 불가', 'UNIT2 DSP1측 냉매 압력이 3초 이상 28±1(kgf/cm2) 이상 되는 경우', '냉매 압력이 정상 수치 15±0.7(kgf/cm2 이하로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CRCM3의 부하측 전류를 측정하여 응축기 팬의 동작여부를 확인한다. +2) 응축기 코일의 전면에 이물질로 인한 막힘이 있는지 확인한다. +3) 응축기 팬 상부 그릴에 외부 이물질로 인한 막힘이 있는지 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('eab11d40-6f9d-4395-9204-5886e8205444', '0513', '513', 'DCU#1 5위(R3) - 모듈 상태체크 에러', 'Tc1', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 “Module check error” 신호가 “1”이 되면 검지 +', 'Modulecheckerror현시(출입문은 정상작동가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태 체크 기능에 이상이 생긴 경우 고장 발생 +', 'DCU의 ‘A' 모듈과 ‘B' 모듈 간, 상태 체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('eac08a77-a834-4190-a106-74a1ab8507d6', '0521', '521', 'DCU#6 6위(L3) - 모듈 상태 이상', 'M3', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 “01” 또는 “00”이 되면 +검지 +', '이중계절체동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러)이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ead1aaec-2a03-49c2-adc6-087e7ef20ad4', '0720', '720', 'HVAC#2-실내온도 센서1 고장', 'M1', 'C', 'HVAC-실내온도 센서1 고장', 'C', 'HVAC', '객실 실내온도 센서1 고장 발생', '실내온도 센서1 고장현시', '온도센서 검지범위는 -45~85도 (820~1330옴) 인데, 2초 이상 검지범위를 벗어나는 경우', '온도센서 검지 값이 2초 이상 허용온도 범위 내 일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820~1330옴 을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우, 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ead1bec2-bc08-4d30-abef-cc0c3a81b85b', '0520', '520', 'DCU#5 2위(L1) - 이중계 절체 동작', 'T2', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 “Module switchover” 신호가 “1”이 되면 검지 +', '이중계 절체 동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러) 이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A'모듈 및 ‘B'모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('eae964a8-3051-4854-b294-f4d558086322', '0500', '500', 'DCU#3 4위(L2) 통신고장', 'M2', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS간 RS485 통신고장이 검지되면 발생.', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐 상태 등의 변화가 없음.', '1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우', '해당차량의 DCU 및 CU/TU 의 전원이 정상상태이고, 통신라인 연결상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜저 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는데도 지속적으로 통순고장이 검지되면, DCU의 X2,X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('eb14ae37-6990-441b-a89c-e43795ae26e6', '0733', '733', 'HVAC#3-전자접촉기 압축기(CRCM)4 고장', 'M2', 'C', 'HVAC-전자접촉기 압축기(CRCM)4 고장', 'C', 'HVAC', 'HVAC 냉방작동 중 CRCM4 전자접촉기 고장 발생.', '냉방 기능 저하(전냉방시 반냉방으로 작동)', '냉방작동 중 2.5초 이상동안 CRCM4 작동 feedback 신호가 수신되지 않는 경우', 'CRCM4 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CRCM4를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRCM4와 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('eb198003-1d8f-43fc-916f-18eef508bca3', '0709', '709', 'HVAC#8 - 냉난방장치2 압력스위치2(DPS) 저압', 'Tc2', 'D', 'HVAC-냉난방장치2 압력스위치2(DPS) 저압', 'D', 'HVAC', '냉난방장치2 냉매 압력스위치2 저압 발생 +', 'UNIT2CYCLE2 냉방기능불가', 'UNIT2DSP2측 냉매압력이 3초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우 +', '냉매압력이 정상수치 2±0.5(kgf/cm2) 이상으로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CREF4의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)를 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설 여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안 되는 것을 확인한 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('eb1a91fe-b5e0-42b9-9580-9d8eba8c4f81', '0509', '509', 'DCU#5 2위(L1)-출입문 잠김 리미트 스위치 고장', 'T2', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 "DLS Failure” 신호가 "1"이 되면 검지.', '출입문 잠김 상태 확인 불가', '1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('eb2a19af-76fc-44a2-be9c-18d7e9e6665b', '0749', '749', 'HVAC#2 - 380V 전원고장', 'M1', 'C', 'HVAC-380V 전원고장', 'C', 'HVAC', 'HVAC 메인 전원 AC 380V 전원 고장 발생 +', 'HVAC 냉방 및 난방 기능 불가', '차량으로부터 공급되는 AC 380V가 입력되지 않는 경우 +', '차량으로부터 AC 380V 전압이 정상적으로 입력', '1) 차량으로부터 AC 380V 전압이 정상적으로 입력되는지 확인한다. +2) 차량 전원이 정상일 경우, 냉난방 배전반의 CBLVD 차단기가 꺼져 있는지 확인 후, 꺼져있을 경우 켠다. +3) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('eb3e2178-0844-475a-adcf-31d4bcd89cbe', '1108', '1108', '0', 'Tc2', '0', null, null, '0', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('eb47f690-051f-417c-8551-7ecbd38a0834', '1103', '1103', 'PSD#1-지상 스크린도어 열림 고장', 'Tc1', 'D', 'PSD-지상 스크린도어 열림 고장', 'C', 'PSD', 'PSD 의 RS485 데이터 중 PSD-TCMS SD TEXT5(TEXT6)의 Bit3 “지상 PSD 열림 확인 NG” 신호가 "1"이 되면 검지. ([지상 PSD 설비 장애] - 전동차 출입문 열림, 차상장치가 스크린도어 열림 명령을 송신 +지상장치로부터 스크린도어 열림확인 NG가 수신된 경우)', '전동차 출입문 닫힘 후 전동차 출입문은 닫혔으나, PSD가 닫히지 않을 경우 전동차 출입문과 PSD모두 닫혔으나 장애로 현시될 경우', '지상 PSD 설비에서 PSD 전체 열림 명령 실행중 Feedback 신호가 올바르지 않음.', '지상설비에대한 고장이므로 차상장치는 정상 동작한다. 기관사는 PSD 열림 상태확인, 열림 실패시 +기관사 조작반으로 수동취급 실시 할 것. +*해당 역사를 벗어나면 소멸됨.', null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('eb72c1cd-93af-4731-b0b5-7fcdcf900e95', '0721', '721', 'HVAC#7-냉난방장치2 압력스위치2(DPS) 냉매부족', 'M4', 'C', 'HVAC-냉난방장치2 압력스위치2(DPS) 냉매부족', 'C', 'HVAC', '냉난방장치2 냉매 압력스위치2 저압 발생.', 'UNIT2 CYCLE2 냉방 기능 불가', 'UNIT2 DSP2측 냉매 압력이 30초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우', '냉매 압력이 정상 수치 2±0.5(kgf/cm2 이상 유지하도록 하고, 마이콤 전원을 리셋', '1) 배전반 점검 커버를 열고 마이콤 전원을 리셋한 후, 냉방 가동 시, CREF4의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)을 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안되는 것을 확인한 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('eb7754a1-7f7e-4465-a346-7db33aa4c2ca', '1601', '1601', '미세먼지감지센서 모듈#8 - 센서 고장', 'Tc2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('eb7edd5a-cf83-4989-b1bc-6896269db6b7', '0300', '300', 'ATC#1 통신고장', 'Tc1', 'B', 'ATC 통신고장', 'B', 'ATC', 'ATC와 TCMS 간 RS485 통신고장이 검지되면 발생 +', 'MMI 화면에 ATC상태가 통신고장으로 현시된다.', ' +1) ATC 전원 CB OFF +2) ATC시스템 자체진단테스트결과 비정상상태일 경우 +3) ATC-1계/2계 CPU보드 고장 시 +4) ATC-1계/2계 POWER보드 고장 시 +5) 통신연결 불량 +', '해당 차량의 ATC 및 CU의 전원이 정상상태이고, 통신 라인 연결 상태가 정상', '1) MMI화면 우측 상단에 ATC/ATO1, ATC/ATO2 정상상태(초록색글자현시)인지 확인한다. +2) 비정상상태(빨간 글자 현시) 시 전원스위치 CB ATC#1, 2 OFF → ON하여 복귀시도 후, 복귀 되었는지 확인한다. +3) ATC가 정상적으로 켜져 있는데도 지속적으로 통신고장이 검지되면, ATC의 CN3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상 체결되어 있을 경우, CU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('eb8150a5-a3dc-4c62-bccd-00707c4c728a', '0518', '518', 'DCU#3 5위(R3)-출입문 Enable 신호 에러', 'M2', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 "Enable signal error” 신호가 "1"이 되면 검지.', 'DCU 출입문 Enable 신호 에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) 취급시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함.', '해당출입문 enable 신호 수신', '1) AUTO/MCS 모드시에는 YARD모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인한다. (YARD/FMC 모드시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.392739+00', null, '로템40량(2018)-1단계', 'Rotem'), ('eb8224d7-60ba-4224-a8b8-edf085df4260', '1502', '1502', '기타장치용 DC 회로차단기 차단(Car6)', 'M3', 'W', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('eb96e5a7-af75-4a19-b5cf-a369554055f7', '0176', '176', 'VVVF#6-LB1 고착(LB1NO)', 'M3', 'C', 'VVVF-LB1 고착(LB1NO)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT34의 Bit1 “LB1NO” 신호가 "1"이 되면 검지.', null, 'LB1 개방조건에서 투입상태 유지 시 고장검지.', '동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) 주회로 차단기함 내에 LB1의 주접점을 확인하여 고착여부를 확인한다. +2) 주회로 차단기함 내에 LB1의 보조접점을 확인하여 고착여부를 확인한다. +3) 추진제어장치 계전기 유니트에 LB1R 계전기 상태를 확인하여 고착여부를 확인한다. +4) 추진제어장치 시험기를 이용하여 TCU(통합제어기) 시험을 실시하여 이상여부를 확인한다. +5) 상기의 점검부분에 이상이 있을경우 관련부품을 교체한다.', null, '3', '2025-10-12 01:21:37.578803+00', null, '로템40량(2018)-1단계', 'Rotem'), ('eba50e07-e865-4355-a514-5bfbfdf6436c', '0515', '515', 'DCU#2 4위(L2)-출입문 열림 시간 초과', 'M1', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 "Open time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 열림 동작시간이 6초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도 한 후, '장애물로 인한 열림실패' 고장과 함께 'Open time out' 고장이 함께 현시', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('eba67197-d2d0-4b76-a100-16b76114aa38', '0069', '69', 'MAIN FUSE#2 DISCONNECTED(Car6)', 'M3', 'W', 'MAIN FUSE#2 DISCONNECTED(Car6)', 'W', 'TCMS', '차량으로부터 AUX FUSE DISCONNECTED 신호 입력시', 'VVVF고압 차단으로 추진 불능', '해당 퓨우즈 소손', '해당 퓨우즈 교체', null, ' +REC20210HN0', '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ebb16612-5117-4f92-a49a-4298a4c0493c', '0180', '180', 'VVVF#6-MCOK 고착(MCOKNO)', 'M3', 'C', 'VVVF-MCOK 고착(MCOKNO)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT34의 Bit5 “MCOKNO” 신호가 "1"이 되면 검지.', null, 'MCOK 개방조건에서 투입상태 유지 시 고장검지.', '동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) 주회로 차단기함 내에 MCOK의 주접점을 확인하여 고착여부를 확인한다. +2) 주회로 차단기함 내에 MCOK의 보조접점을 확인하여 고착여부를 확인한다. +3) 추진제어장치 계전기 유니트에 MCHK1( +2) 계전기 상태를 확인하여 고착여부를 확인한다. +4) 추진제어장치 시험기를 이용하여 TCU(통합제어기) 시험을 실시하여 이상여부를 확인한다. +5) 상기의 점검부분에 이상이 있을경우 관련부품을 교체한다.', null, '3', '2025-10-12 01:21:37.578803+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ebbb170a-a64e-4a42-a6ab-bddb33c90089', '0753', '753', 'HVAC#5-배기댐퍼 열림고장', 'T2', 'C', 'HVAC-배기댐퍼 열림고장', 'C', 'HVAC', '환기 시, 차량 배기댐퍼가 열려 있는 상태에서 배기댐퍼 열림 리미트 스위치가 작동되지 않음', '배기댐퍼 열림 고장 현시', '배기댐퍼를 열림으로 제어했으나 열림 리미트 스위치 입력이 없을 경우', '배기댐퍼 열림 상태에서 리미트 스위치 입력이 정상적으로 입력', '1) 배기댐퍼가 열린 상태에서 열림 리미트 스위치가 정상적으로 작동되었는지 확인한다. +2) 열림 리미트 스위치가 정상작동 되었음에도 문제가 발생될 경우, 스위치를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ebc2f8b0-ecd4-4dc4-a428-0a0e5ad7e3a9', '0513', '513', 'DCU#1 6위(L3) - 모듈 상태체크 에러', 'Tc1', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 “Module check error” 신호가 “1”이 되면 검지 +', 'Modulecheckerror현시(출입문은 정상작동가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태 체크 기능에 이상이 생긴 경우 고장 발생 +', 'DCU의 ‘A' 모듈과 ‘B' 모듈 간, 상태 체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ebc721cd-d5cb-4084-8426-36893564ae19', '0511', '511', 'DCU#4 3위(R2)-출입문 닫힘 리미트 스위치2 고장', 'T1', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 "DCS2 Failure(Right)” 신호가 "1"이 되면 검지.', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ebc7731e-4a3d-40ee-9cbf-ced848735b8d', '0521', '521', 'DCU#8 6위(L3) - 모듈 상태 이상', 'Tc2', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 “01” 또는 “00”이 되면 +검지 +', '이중계절체동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러)이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ebcb071e-f279-478d-b692-de3d12940739', '0500', '500', 'DCU#7 3위(R2) 통신고장', 'M4', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS 간 RS485 통신고장이 검지되면 발생 +', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐상태 등의 변화가 없음.', ' +1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우 +', '해당 차량의 DCU 및 CU/TU의 전원이 정상상태이고, 통신 라인 연결 상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜져 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적 으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는 데도 지속적으로 통신고장이 검지되면, DCU의 X2, X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상 체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ebd4e471-4c33-4fd1-a53f-b979389dd7ef', '0509', '509', 'DCU#5 4위(L2) - 출입문 잠김 리미트 스위치 고장', 'T2', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 “DLS Failure” 신호가 “1”이 되면 검지 +', '출입문 잠김 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ebd73b44-b67b-4225-9bbd-0e69c3272fd7', '1601', '1601', '미세먼지감지센서 모듈#1-센서고장', 'Tc1', 'C', '미세먼지감지센서 모듈-센서고장', 'C', 'TCMS', '미세먼지감지센서 모듈이 센서 값 입력 불량 시 발생.', '공기청정기 동작 불가', '1) 미세먼지센서 신호 입력값이 정상 범위를 벗어남', '미세먼지센서 모듈에서 미세먼지센서 신호 입력값이 정상 범위(4~20mA) 이내', '1) 1호차 혹은 8호차 통로쪽 상부 점검커버를 열고, 미세먼지 감지센서 모듈 FND 창에 농도가 정상적으로 현시되는지 확인한다. +2) 미세먼지 감지센서 모듈 FND 창에 농도가 정상적으로 현시되지 않고 F.01이 현시된다면, 모듈에 연결된 배선이 정상적인지 확인한다. +3) 모듈에 연결된 배선에 이상이 없다면, 미세먼지 센서의 배선이 정상적인지 확인한다. +4) 배선이 정상이라면, 미세먼지 센서를 교체한다. +5) 센서 교체 후에도 문제가 지속될 경우, 미세먼지 감지센서 모듈을 교체한다.', null, '3', '2025-10-12 01:21:37.578803+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ec0a0683-1f45-4444-b985-81ed3bf52f8e', '0720', '720', 'HVAC#7 - 실내온도 센서1 고장', 'M4', 'C', 'HVAC-실내온도 센서1 고장', 'C', 'HVAC', '객실 실내온도 센서1 고장 발생 +', '실내온도센서1 고장 현시', '온도센서 검지범위는 -45 ~ 85도(820 ~ 1,330Ω)인데, 2초 이상 검지범위를 벗어나는 경우 +', '온도센서 검지값이 2초 이상 허용온도 범위 내일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820 ~ 1,330Ω을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ec0a0ccf-7078-49bd-b7ac-2b3b838b6f5c', '0517', '517', 'DCU#4 4위(L2) - 출입문 장애물로 인한 열림 실패', 'T1', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Open failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘 상태로 대기', '도어열림 중 3회 장애물감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 열림 시, 장애물감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ec0af7fd-ee99-4a59-86fc-b14d78dbb351', '0505', '505', 'DCU#6 2위(L1) - 출입문 입력 고전압', 'M3', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 “1”이 되면 검지 +', '고전압 상태(그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상 +', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ec141fa3-ecab-484a-bf41-35c977634f85', '1201', '1201', 'FDU#5-감지기1 화재감지', 'T2', 'W', 'FDU-감지기1 화재감지', 'W', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 "Detector1 State” 신호가 "11"이 되면 검지.', '화재상태 현시(자동 소거 안됨)', '하기 2가지 조건을 모두 만족하여야 화재신호가 출력 됨(연동모드 동작). +1) 이웃한(앞 혹은 뒤에 위치한) 감지기 중 하나의 감지기라도 주의 혹은 화재상태에 있어야 함. +2) Detector1(해당 감지기)에서 측정된 연기농도가 15% 이상이거나 온도가 65℃ 이상인 경우', '1) FDU의 복귀버튼 조작시 +2) FDU 전원 리셋시', '1) 해당 감지기 위치의 화재 발생 여부 확인 +2) 화재 오 감지일경우 FDU의 복귀버튼 취급 +3) 오감지일경우 감지기의 청소주기 확인(내부 먼지 제거)', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ec25ec55-e374-4436-8fe1-8279d8da2450', '0890', '890', '출력증폭기#1(AMP) 고장(Car#8)', 'Tc2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ec2b3fee-562a-4ddd-af53-f60d2ac682b3', '0507', '507', 'DCU#3 3위(R2)-초기화 실패', 'M2', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 "Calibration failure” 신호가 "1"이 되면 검지.', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터고장, 장애물 감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우', '초기화 실패를 야기한 고장 코드를 확인하여 조치 후, 재 닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ec403903-ee72-4e44-b45b-4e02892355c6', '0104', '104', 'VVVF#3 - 휠 슬라이드 검지(WSD)', 'M2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ec4d87ba-44cc-4beb-ba06-336e8eb41cf9', '0702', '702', 'HVAC#7-냉난방장치2 압축기1 과부하', 'M4', 'C', 'HVAC-냉난방장치2 압축기1 과부하', 'C', 'HVAC', 'HVAC 냉방작동 중 냉난방장치2 압축기1 또는 응축기1 모터에 과부하 발생.', '냉방 기능 저하(전냉방시 반냉방으로 작동)', '1) 냉방작동 중 UNIT2의 압축기1 또는 응축기1 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRCM3과 연결된 THR3이 Trip 됨.', 'UNIT2의 압축기1 또는 응축기1 모터의 과부하 조건을 해소하여 정상 가능 상태로 만들고, THR3 및 마이콤 전원 리셋', '1) 냉난방배전반의 점검커버를 열고, THR3의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR4의 전류 세팅값이 11.5A에 맞춰져 있는지 확인하여, 아닐 경우, 십자 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동 시킨 후, THR3의 2차측 2,4,6 단자에서 각 단자간 상간 전압이 AC 380V으로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 압축기 및 응축기 단품 상태에서 점검을 한다. +7) THR3의 2차측 2,4,6 단자에서 각 단자간 권선저항이 모두 같은지 확인한다. (±10% 이하) (압축기1 및 응축기1 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT2의 압축기1 또는 응축기1 모터의 결선을 해제한 후 각 부품의 권선저항을 확인 후, 문제가 있는 부품을 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR3 부품을 교체한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ec4f8982-994e-409d-bc89-c9c262a97312', '0705', '705', 'HVAC#1 - 냉난방장치2 증발기2 과부하', 'Tc1', 'C', 'HVAC-냉난방장치2 증발기2 과부하', 'C', 'HVAC', 'HVAC 냉방 작동 중 냉난방장치2 증발기 모터에 과부하 발생 +', 'UNIT2냉방기능불가', ' +1) 냉방 작동 중 UNIT2의 증발기 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CREF4와 연결된 THR8이 Trip 됨. +', 'UNIT2의 증발기모터의 과부하조건을 해소하여 정상 가능 상태로 만들고, THR8 및 마이콤 전원 리셋', '1) 냉난방 배전반의 점검커버를 열고, THR8의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR8의 전류 세팅값이 3A에 맞춰져 있는지 확인하여, 아닐 경우, (+) 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동시킨 후, THR8의 2차측 2, 4, 6 단자에서 각 단자 간 상간 전압이 AC 380V로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 증발기 단품 상태에서 점검을 한다. +7) THR8의 2차측 2, 4, 6 단자에서 각 단자 간 권선저항이 모두 같은지 확인한다. (±10% 이하) (증발기 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT2의 증발기 모터의 결선을 해제한 후 4극 및 6극 모터의 권선저항을 확인 후, 문제가 있을 경우, 증발기 모터를 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR8 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ec5e291f-7547-4153-aa3d-39c5dbd9fc5e', '0513', '513', 'DCU#7 2위(L1) - 모듈 상태체크 에러', 'M4', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 “Module check error” 신호가 “1”이 되면 검지 +', 'Modulecheckerror현시(출입문은 정상작동가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태 체크 기능에 이상이 생긴 경우 고장 발생 +', 'DCU의 ‘A' 모듈과 ‘B' 모듈 간, 상태 체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ec8a3c12-9610-415e-8d90-810564a20c9c', '0515', '515', 'DCU#2 1위(R1)-출입문 열림 시간 초과', 'M1', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 "Open time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 열림 동작시간이 6초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도 한 후, '장애물로 인한 열림실패' 고장과 함께 'Open time out' 고장이 함께 현시', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ecb4383b-fc3a-4daf-9737-7f44a309825d', '0707', '707', 'HVAC#7 - 냉난방장치2 증발기1 과부하', 'M4', 'C', 'HVAC-냉난방장치2 증발기1 과부하', 'C', 'HVAC', 'HVAC 냉방 작동 중 냉난방장치2 증발기 모터에 과부하 발생 +', 'UNIT2냉방기능불가', ' +1) 냉방 작동 중 UNIT2의 증발기 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CREF3과 연결된 THR7이 Trip 됨. +', 'UNIT2의 증발기모터의 과부하조건을 해소하여 정상 가능 상태로 만들고, THR7 및 마이콤 전원 리셋', '1) 냉난방 배전반의 점검커버를 열고, THR7의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR7의 전류 세팅값이 3A에 맞춰져 있는지 확인하여, 아닐 경우, (+) 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동시킨 후, THR7의 2차측 2, 4, 6 단자에서 각 단자 간 상간 전압이 AC 380V로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 증발기 단품 상태 에서 점검을 한다. +7) THR7의 2차측 2, 4, 6 단자에서 각 단자 간 권선저항이 모두 같은지 확인한다. (±10% 이하) (증발기 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT2의 증발기 모터의 결선을 해제한 후 4극 및 6극 모터의 권선저항을 확인 후, 문제가 있을 경우, 증발기 모터를 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR7 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ecc0b767-1b5c-47cb-995a-91aa4c3e7c8a', '0748', '748', 'HVAC#8 - 전자접촉기 차량히터1(CRRHT) 고장', 'Tc2', 'C', 'HVAC-전자접촉기 차량 히터1(CRRHT) 고장', 'C', 'HVAC', '객실 난방기 작동 중 CRRHT1 전자접촉기 고장 발생 +', '객실 전난방 시 2/3난방만 작동', '객실 전난방 작동 중 2.5초 이상 동안 CRRHT1 작동 feedback 신호가 수신되지 않는 경우 +', 'CRRHT1 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CRRHT1을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRRHT1과 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ecc85fbd-d3a1-4af8-a46f-7525b7da7bad', '1526', '1526', 'TCMS 데이타버스2 우측라인 통신 이상(Car5)', 'T2', 'C', 'TCMS 데이터버스2 우측라인 통신 이상', 'C', 'TCMS', 'TCMS의 초기 기동 시 자기진단에 의한 2중계 메인통신선 중 2계 메인통신 이상 검지 시 +', '1) SL-NET 2중계이므로 데이터버스 1계로 정상통신, 운행에 지장 없음. +2) 초기기동 자기진단 시 2중계를 점검하여 2계측의 이상이 검지되었다는 점검 필요용 메시지', '초기 기동 시 SL-NET 1계와 2계를 각각 통신 후 비교하여 1계는 정상통신이 되나 2계는 정상통신이 안 되는 경우 +', '정상 수리 후 차량 전체 재기동하여 SL-NET 1계와 2계 모두 정상통신이 되는 경우', '1) 고장검출호차와 고장검출 우측호차와의 SL-NET 통신 2계 정상여부 확인(예 : 고장호차가 3호차인 경우, 1-2-3-4-5-6-7-8에서 3호차의 우측 즉, 3-4호차간 SL-NET 2계 통신 상태 점검 필요) +2) 고장검지호차의 SCM PCB 교체 정상여부 확인 +3) 고장검지호차의 우측호차 SCM PCB 교체 정상여부 확인 +4) 고장검지호차와 고장검지 우측호차의 SL-NET 2계 메인통신 배선의 연결 상태 확인 +5) 2 ~ 4번에도 정상적으로 복귀되지 않는 경우, CU/TU ASS'Y 교체(백보드 확인 필요)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ecccc72f-319e-4560-94ac-62dbec135b3d', '0413', '413', 'SIV#8-게이트 드라이버 고장, UX2상(GDFUX2)', 'Tc2', 'C', 'SIV-게이트 드라이버 고장, UX2상(GDFUX2)', 'C', 'SIV', '보조전원장치(SIV)의 RS485 데이터 중 SIV-TCMS SD TEXT5의 Bit3 “GDFUX2” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 'GDF UX 2상 이상검지' 표시됨. +2) 보조전원장치(SIV)는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 보조전원장치(SIV) 중고장이 발생됨. +5) 중고장이 발생되면 TCMS 일반화면에 보조전원장치(SIV) 상태 붉을색으로 표기되며, 연장급점 됨.', '보조전원장치(SIV) 내부 GDU에 과전류, 과온이 검지될경우.', '1) 경고장이 발생할 경우 보조전원장치(SIV) 자동 재기동에 의해 재기동 됨. +2) 중고장이 발생할 경우 보조전원장치(SIV) 리셋으로 고장 소거됨.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 보조전원장치(SIV) 고장기록을 수집하여 출력되는 3상의 AC 전류치를 확인함. +3) 특정상의 전류치가 비정상적일 경우 특정상에 해당되는 GDU, 전류센서, 출력단 결선을 확인한다. +4) 전류센서와 보조전원장치(SIV) 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작상태를 시험기를 통해 확인한다. +6) GDU 전원공급기의 전원연결상태 또는 광케이블의 연결상태와 배선상태를 확인한다. +7) 출력단 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ece36d85-4354-4b3b-92ce-5979f36a055c', '0518', '518', 'DCU#3 5위(R3) - 출입문 Enable 신호 에러', 'M2', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 “Enable signal error” 신호가 “1”이 되면 검지 +', 'DCU 출입문Enable신호에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드 시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을 때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드 시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입 상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호 장치로부터의 출입문 열림 명령 신호) 취급 시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함. +', '해당 출입문 enable 신호수신', '1) AUTO/MCS 모드 시에는 YARD 모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인 한다. (YARD/FMC 모드 시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ece7c617-c1f1-4e07-8626-85c531020af6', '0853', '853', '출력증폭기#1(AMP) 고장(Car#5)', 'T2', 'C', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ece9390d-c7f0-4705-a110-2cba43ca9180', '0882', '882', '정면행선표시기(FDI) 고장(Car#8)', 'Tc2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ed0e1dc4-135a-48da-b568-a14452d83230', '0509', '509', 'DCU#6 6위(L3) - 출입문 잠김 리미트 스위치 고장', 'M3', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 “DLS Failure” 신호가 “1”이 되면 검지 +', '출입문 잠김 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ed1feec9-99a5-4ac2-9fb4-950af7ab46c3', '0521', '521', 'DCU#3 6위(L3)-모듈 상태 이상', 'M2', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 "01"또는 "00"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ed2358f4-293c-41b2-af2e-79bef9ba2c5b', '0182', '182', 'VVVF#3-TCU 초기화(INZ-RST)', 'M2', 'C', 'VVVF-TCU 초기화(INZ-RST)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT34의 Bit7 “INZ-RST” 신호가 "1"이 되면 검지.', null, '통합제어장치 재 기동 시 해당 고장 검지', '초기화 완료', '1) 상기고장이 간헐적으로 발생하는 경우 아래와 같이 조치한다. +2) TCU(통합제어장치)의 입력에 제어전원 DC70 ~100V가 인가되는지 확인한다. +3) TCU(통합제어장치) 후면 커넥터 및 배선의 상태를 확인한다. +4) 추진제어장치 시험기를 이용하여 TCU(통합 제어장치)의 이상여부를 확인한다. +5) PWS보드 또는 통합제어기 교체. +6) 상기의 점검부분에 이상이 있을경우 관련부품을 교체한다.', null, '3', '2025-10-12 01:21:37.578803+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ed27d23c-199f-41b8-b6d3-b005a349709c', '0514', '514', 'DCU#2 2위(L1) - 출입문 닫힘 시간 초과', 'M1', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 “Close time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 닫힘 동작 시간이 7초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도한 후, ‘장애물로 인한 닫힘 실패' 고장과 함께 ‘Close time out' 고장이 함께 현시 +', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ed33da59-ae9d-4d35-8f4a-4236aeb87c0d', '1208', '1208', 'FDU#8-감지기4 고장', 'Tc2', 'C', 'FDU-감지기4 고장', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 "Detector1 State” 신호가 "10"이 되면 검지.', '감지기 고장상태 현시(자동 소거 안됨)', '1) 감지기로부터 데이터 응답이 없는경우. +2) 감지기로부터 수신된 데이터의 CRC가 맞지 않는경우 +3) 감지기로부터 수신된 데이터의 ID가 송신 ID와 일치하지 않는경우', 'FDU 전원 리셋 후 감지기로부터 정상적으로 데이터가 수신된 경우', '1) FDU 전원 리셋 후 고장 소거 여부 확인 +2) 정상 동작중인 감지기와 위치 교환 후 FDU 전원 리셋 및 고장 상태 확인 +3) 동일한 감지기에서 고장 발생시 감지기 교체 +4) 동일한 위치에서 고장 발생시 감지기 라인 점검', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ed349702-5492-4acb-918e-b2a5118f0b2e', '0835', '835', '비상인터폰#1(PEI) 고장(Car#3)', 'M2', 'C', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ed46e07f-6208-49bd-a450-43b9bc1b24bc', '0737', '737', 'HVAC#6-전자접촉기 증발기4(CREF) 고장', 'M3', 'C', 'HVAC-전자접촉기 증발기4(CREF) 고장', 'C', 'HVAC', 'HVAC 냉방작동 중 CREF4 전자접촉기 고장 발생.', 'UNIT2 냉방 작동 불가', '냉방작동 중 2.5초 이상동안 CREF4 작동 feedback 신호가 수신되지 않는 경우', 'CREF4 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CREF4를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CREF4와 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ed476e20-fe61-4c43-bd2b-651c7945835d', '0512', '512', 'DCU#4 3위(R2) - 파라미터 로딩 실패', 'T1', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 “Paraneter error” 신호가 “1”이 되면 검지 +', 'Parametererror 현시(출입문은 정상작동 가능)', 'DCU 자체 내의 EEPROM으로부터 parameter데이터 로딩 실패 +', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ed4c945a-a08b-497f-9272-57523b284021', '1200', '1200', 'FDU#3 통신고장', 'M2', 'B', 'FDU 통신고장', 'B', 'FDU', 'FDU와 TCMS간 RS485 통신고장이 검지되면 발생.', '화면상 FDU의 화재검지신호 등의 데이터가 반응하지 않음.', 'FDU 통신고장 또는 통신 케이블 문제', 'TCMS SDR 신호의 의해 FDU로부터 SD신호가 정상 수신된 경우 +조치조건 : +1) FDU 및 TCMS의 전원을 리셋하여 소거여부 확인 +2) 통신 고장이 발생하지 않은 다른차량의 수신기와 교체하여 소거 여부 확인(고장이 수신기를 따라가는지 확인) +3) TCMS와 FDU간의 통신계통 점검 및 FDU NFB 점검 +4) 문제가 지속될 경우, 수신기 교체', null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ed4d604f-085d-4fe6-97d9-dd5d8ee0b99a', '0045', '45', '비상판토 트립(Car6)', 'M3', 'W', '비상판토 트립 (Car6)', 'W', '기타', '차량으로부터 NO EMERGENCY PANTO TRIP 신호 미입력 시 +', '판도 하강 및 VVVF, SIV 고압 차단', '가선 차단 +', '판토 하강 및 가선 투입', null, '회로 도면 : REC40400DX0', '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ed57e678-8ed9-437c-957b-5b8e850a07d0', '0715', '715', 'HVAC#4 - 냉난방장치1 압력스위치1(DPS) 저압', 'T1', 'D', 'HVAC-냉난방장치1 압력스위치1(DPS) 저압', 'D', 'HVAC', '냉난방장치1 냉매 압력스위치1 저압 발생 +', 'UNIT1CYCLE1 냉방기능불가', 'UNIT1DSP1측 냉매압력이 3초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우 +', '냉매압력이 정상수치 2±0.5(kgf/cm2) 이상으로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CREF2의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)를 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설 여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안 되는 것을 확인한 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ed74f5f1-b6cb-4edb-b37d-b646fab2182d', '0509', '509', 'DCU#8 1위(R1) - 출입문 잠김 리미트 스위치 고장', 'Tc2', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 “DLS Failure” 신호가 “1”이 되면 검지 +', '출입문 잠김 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ed7894d8-4719-4519-a43a-37814928039a', '0742', '742', 'HVAC#7-전자접촉기 보조히터3(AHEK) 고장', 'M4', 'C', 'HVAC-전자접촉기 보조히터3(AHEK) 고장', 'C', 'HVAC', 'HVAC 보조난방기 작동 중 AHEK3 전자접촉기 고장 발생.', 'UNIT2 보조난방기 전난방 시 반난방만 작동', '보조난방기 작동 중 2.5초 이상동안 AHEK3 작동 feedback 신호가 수신되지 않는 경우', 'AHEK3 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) AHEK3을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, AHEK3과 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('edab23bc-5eac-40f6-9e25-526bb6480f7d', '0517', '517', 'DCU#2 2위(L1) - 출입문 장애물로 인한 열림 실패', 'M1', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Open failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘 상태로 대기', '도어열림 중 3회 장애물감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 열림 시, 장애물감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('edab3ef6-9f4a-431f-b292-5acf3723e0e1', '0508', '508', 'DCU#8 2위(L1)-출입문 모터/인코더 고장', 'Tc2', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 "Motor / Encoder failure” 신호가 "1"이 되면 검지.', '출입문 정상동작 불가', '1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우 (인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터 / 인코더 회로가 손상된 경우', '모터/인코더 및 DCU가 정상상태이고, 전기적 연결상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있느지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. +★ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. + +1. DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. +2. DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) +3. DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('edb34c7d-eeb5-4398-a89a-46704b8f2b35', '1706', '1706', '노선안내표시기#3 고장(Car7)', 'M4', 'C', '노선안내표시기#4 고장', 'C', 'PIC', 'PIC 장치의 노선안내표시기#4이 고장이 났을 때 발생 +', '1) 노선안내표시기 화면 미현시 +2) 노선안내표시기 안내 화면 오현시', '통신고장 +', '통신 재개 시', '1) 이더넷 스위치 링크 확인 +2) 이더넷 케이블 점검 +3) 제어보드 및 전원보드 교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('edb72d7f-fafe-4e01-852d-4d88f4f6da70', '0747', '747', 'HVAC#6 - 전자접촉기 차량히터2(CRRHT) 고장', 'M3', 'C', 'HVAC-전자접촉기 차량 히터2(CRRHT) 고장', 'C', 'HVAC', '객실 난방기 작동 중 CRRHT2 전자접촉기 고장 발생 +', '객실 전난방 시 1/3난방만 작동', '객실 전난방 작동 중 2.5초 이상 동안 CRRHT2 작동 feedback 신호가 수신되지 않는 경우 +', 'CRRHT2 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CRRHT2를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRRHT2와 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('edbf4aa2-2f60-4361-9739-9c6790b183e4', '0501', '501', 'DCU#2 3위(R2) - 출입문 차단', 'M1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('edc26fa1-3ad5-4055-82e4-75b7eec19282', '1500', '1500', '출입문 회로차단기 차단(Car1)', 'Tc1', 'W', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('edd5c6a3-f2d4-4d86-b08c-bbe36d0fe758', '0103', '103', 'VVVF#6 - 추진차단(P BLOCK)', 'M3', 'D', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('edf6b4bd-504c-4870-b2b7-cf32ddbdaf00', '0080', '80', '화재검지(Car3)', 'M2', 'W', null, null, 'FDU', null, null, null, null, null, null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ee003243-6459-411c-a832-12daac1613f4', '0510', '510', 'DCU#4 5위(R3) - 출입문 닫힘 리미트 스위치1 고장', 'T1', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 “DCS1 Failure(Leftt)” 신호가 “1”이 되면 검지 +', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ee04a12f-f219-4f13-a475-18edf44a4e0f', '0510', '510', 'DCU#5 3위(R2) - 출입문 닫힘 리미트 스위치1 고장', 'T2', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 “DCS1 Failure(Leftt)” 신호가 “1”이 되면 검지 +', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ee3af5ab-4d58-4cab-9c03-83b0b3eebd5a', '0429', '429', 'SIV#1 - 인버터2 입력 저전압(INV2LV)', 'Tc1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ee3b120b-6c4d-4200-99a8-dd2363f62bbd', '0500', '500', 'DCU#7 4위(L2) 통신고장', 'M4', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS간 RS485 통신고장이 검지되면 발생.', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐 상태 등의 변화가 없음.', '1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우', '해당차량의 DCU 및 CU/TU 의 전원이 정상상태이고, 통신라인 연결상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜저 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는데도 지속적으로 통순고장이 검지되면, DCU의 X2,X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ee495b3c-28cc-4ae0-86be-bffe6b194562', '0116', '116', 'VVVF-Stack 과온검지1(OTD1) (Car6)', 'M3', 'C', 'VVVF-Stack 과온검지1(OTD1)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT32의 Bit3 “OTD1” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 '스택과온검지1' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동이 되지 않으며 중고장으로 처리됨. +3) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치 냉각기의 온도가 105도 이상인 조건에서 검지.', '1) 추진제어장치 리셋으로 고장 소거됨.', '1) 상기고장이 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 냉각기의 손상이 없는지 확인한다. +3) 추진제어장치 내부에 IPM에 손상이 없는지 확인한다. +4) 인버터 유닛 내부에 온도센서 및 결선에 이상이 없느지 확인한다. +5) DIN 보드의 동작상태를 시험기를 통해 확인한다. +6) IPM 전원공급기의 전원연결상태 또는 광케이블의 연결상태와 배선상태를 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.656536+00', null, '다대48량(2015)', 'Rotem'), ('ee4e5659-76a6-4817-adec-def8c944dbd2', '0517', '517', 'DCU#4 4위(L2)-출입문 장애물로 인한 열림 실패', 'T1', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Open failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘상태로 대기', '도어 열림 중 3회 장애물 감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 열림 시, 장애물 감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ee594af3-2faf-4d57-9799-990f78b2a98c', '0138', '138', 'VVVF#3 - 입력과전류 검지(ISOC)', 'M2', 'C', 'VVVF-가선과전류 검지(ISOC)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT29의 Bit3 “ISOC” 신호가 “1”이 되면 검지 +', '1) TCMS 화면 하단 또는 고장화면에 ‘가선과전류 검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생함. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉은색으로 표기되며, HSCB, LB1, 2 개방되어 동력 손실 발생함.', '추진제어장치에 입력되는 전류가 1, 500A 이상일 경우 검지됨. +', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반 배전반의 VVVFIC nfb 재투입 또는 차량 배터리 전원 재투입', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 추진제어장치에 입력되는 전류치 확인함. +3) 입력되는 전류치가 비정상적일 경우 추진제어장치 입력회로 (HSCB, LB1, 2, CHRe)를 점검한다. +4) LB Box 내의 전류센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인 한다. +5) SEN 보드의 동작 상태를 시험기를 통해 확인한다. +6) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ee5af1a4-0f9d-4549-b362-7c09059c0578', '0302', '302', 'ATC#8-EB 명령', 'Tc2', 'W', 'ATC-EB 명령', 'W', 'ATC', 'ATC의 RS485 데이터 중 ATC-TCMS SD TEXT12의 Bit0 “EB Command” 신호가 "1"이 되면 검지.', '1) MMI화면에 열차 EB체결 관련 메시지 현시 +2) MMI화면에 EB체결 경보음 출력 +3) 비상제동 체결', '1) 제한속도 초과 시, 과속조건(FSB)에서 3초 동안 일정 감속도(2.4km/h/s) 이하일 경우 +2) 노코드(02코드) 검지 시 +3) 열차 Rollback(방향제어기와 이동방향 다를경우) +4) No Motion Time Out(추진시, 10초이상 움직이지 않을 경우) +5) ATS STOP 신호 검지 시 +6) 열차 이동 시, 모드 전환 에러 +7) 열차 이동 시, 방향 제어기 스위치 전환 에러 +8) ATCATO 1,2계 동시 고장 발생 시 +9) FA/AUTO운전모드에서 PG3-2 검지시점 열차속도 25km/h 이상 +10) MCS운전모드에서 후진 2m이상 이동 시 +11) FA/AUTO운전모드에서 PG1 미검지 상태에서 PG2 검지 시', '열차 정지(영속도 검지) 및 마스콘 제동 취급 시', '열차 정지 및 마스콘제동 취급이 되었는지 확인한다.', null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ee605849-e592-4b8e-955b-d0428b8e20ff', '0510', '510', 'DCU#3 6위(L3)-출입문 닫힘 리미트 스위치1 고장', 'M2', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 "DCS1 Failure(Leftt)” 신호가 "1"이 되면 검지.', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ee61e1f8-6e43-4f20-8eba-2dca16efe797', '0046', '46', '비상판토 트립(Car7)', 'M4', 'W', '비상판토 트립(CAR7)', 'W', 'TCMS', '차량으로부터 NO EMERGENCY PANTO TRIP 신호 미입력시', '판도 하강 및 VVVF, SIV 고압 차단', '가선 차단', '판토 하강 및 가선 투입', null, null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ee66631d-7628-4b58-93e0-4cbcbe09f62e', '1209', '1209', 'FDU#6 - 스위치 고장', 'M3', 'C', 'FDU-스위치 고장', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT5의 Bit4 “Switch Fault” 신호가 “1”이 되면 검지 +', 'Switch Fault 현시 및 FDU의 조작버튼 동작 안 됨(화재검지 및 기타 기능에는 상관없음)', ' +1) FDU가 부팅될 때 스위치가 눌려진 상태(3.3V 전압이 인가된 상태)인 경우 +2) FDU가 부팅될 때 스위치 고장으로 인하여 항상 눌러진 상태(3.3V 전압이 인가된 상태)에 있는 경우 +', 'FDU가 부팅될 때 스위치가 눌려진 상태(3.3V 전압이 인가된 상태)가 아닌 경우', '1) 고장이 발생한 수신기의 스위치 상태 확인 및 점검 +2) FDU의 전원을 리셋하여 소거여부 확인 +3) 문제가 지속될 경우, 수신기 교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ee7461a6-dd05-4825-9986-d07c24e164c8', '0158', '158', 'VVVF#6-HSCB고착검지(HBNO)', 'M3', 'C', 'VVVF-HSCB고착검지(HBNO)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT31의 Bit7 “HBNO” 신호가 "1"이 되면 검지.', null, 'HSCB 개방조건에서 투입상태 유지 시 고장검지.', '동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) 주회로 차단기함 내에 HSCB의 주접점의 고착상태를 확인한다. +2) 주회로 차단기함 내에 HSCB의 보조접 고착여부를 확인한다. +3) 주회로 차단기함 내에 HBK 보조접촉기의 코일 및 접점 용손 여부를 확인한다. +4) 추진제어장치 계전기 유니트에 HBR 계전기 상태를 확인하여 고착 여부를 확인한다. +5) HSCB의 절약저항의 단락여부를 육안 및 멀티테스터로 확인한다. +6) 추진제어장치 시험기를 이용하여 제어기 시험을 실시하여 이상여부를 확인한다.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ee8e0d17-0990-454b-b98e-719d669b1fc1', '0503', '503', 'DCU#7 6위(L3) - 출입문 내부 비상핸들 취급(EED)', 'M4', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ee933cc8-aaac-4d6a-84e8-f4646c118200', '1705', '1705', '노선안내표시기#1 고장(Car6)', 'M3', 'C', '노선안내표시기#3 고장', 'C', 'PIC', 'PIC 장치의 노선안내표시기#3이 고장이 났을 때 발생 +', '1) 노선안내표시기 화면 미현시 +2) 노선안내표시기 안내 화면 오현시', '통신고장 +', '통신 재개 시', '1) 이더넷 스위치 링크 확인 +2) 이더넷 케이블 점검 +3) 제어보드 및 전원보드 교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ee99cbe6-5c20-4e85-b382-e252cdac1fc9', '0162', '162', 'VVVF#3-PWM제어장치 이상검지(WDTD_P)', 'M2', 'C', 'VVVF-마이컴이상(PWM)(WDTD_P)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT32의 Bit3 “WDTD_P" 신호가 "1"이 되면 검지.', null, 'PWM보드 내 CPU고장에 의한 Watch Dog Timer 카운터 정지시 고장검지.', '동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) 판토 하강상태에서 인버터 재 기동 후 해당 고장 재발여부를 확인한다. +2) 추진제어장치 시험기를 이용하여 PWM 보드의 이상여부를 확인한다. +3) 상기 점검부에 이상이 있는 경우 PWM 보드를 교체한다.', null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ee9b5cdc-1439-4f38-946f-4261f0e3e1ed', '0516', '516', 'DCU#2 5위(R3)-출입문 장애물로 인한 닫힘 실패', 'M1', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Close failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림상태로 대기', '도어 닫힘 중 3회 장애물 감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('eeb201d5-f54b-4b6e-88b3-25eef17f3dd8', '0208', '208', 'BECU#8 - 공기제동장치 고장', 'Tc2', 'C', 'BECU-공기제동장치고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit7 “공기제동장치고장” 신호가 “1”이 되면 검지 +', '해당 차량 공기제동장치 고장검지 현시 및 해당 차량 정상적인제동제어불가', '해당 차량 BECU의 자가진단 시 고장 발생 또는 AC 압력센서 고장 +', '해당 차량 BECU의 자가진단 시 정상적일 경우 또는 AC 압력센서가 정상일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('eec430e1-9860-4817-90d6-f36b7303db43', '0520', '520', 'DCU#5 6위(L3) - 이중계 절체 동작', 'T2', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 “Module switchover” 신호가 “1”이 되면 검지 +', '이중계 절체 동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러) 이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A'모듈 및 ‘B'모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('eed5fcaf-b1df-4f0f-83c2-c0055ce57204', '0736', '736', 'HVAC#2 - 전자접촉기 압축기(CRCM)1 고장', 'M1', 'C', 'HVAC-전자접촉기 압축기(CRCM)1 고장', 'C', 'HVAC', 'HVAC 냉방 작동 중 CRCM1 전자접촉기 고장 발생 +', '냉방 기능 저하(전냉방 시 반냉방으로 작동)', '냉방 작동 중 2.5초 이상 동안 CRCM1 작동 feedback 신호가 수신되지 않는 경우 +', 'CRCM1 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CRCM1을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRCM1과 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('eee889de-7b07-4eb4-8a01-c5370e14383b', '0740', '740', 'HVAC#4 - 전자접촉기 증발기1(CREF) 고장', 'T1', 'C', 'HVAC-전자접촉기 증발기1(CREF) 고장', 'C', 'HVAC', 'HVAC 냉방 작동 중 CREF1 전자접촉기 고장 발생 +', 'UNIT1 냉방 작동 불가', '냉방 작동 중 2.5초 이상 동안 CREF1 작동 feedback 신호가 수신되지 않는 경우 +', 'CREF1 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CREF1을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CREF1과 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('eefc6d95-c970-41a4-a57f-3715a5f00802', '0724', '724', 'HVAC#4 - 냉난방장치1 압력스위치1(DPS) 냉매부족', 'T1', 'C', 'HVAC-냉난방장치1 압력스위치1(DPS) 냉매부족', 'C', 'HVAC', '냉난방장치1 냉매 압력스위치1 저압 발생 +', 'UNIT1CYCLE1 냉방 기능 불가', 'UNIT1DSP1측 냉매압력이 30초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우 +', '냉매압력이 정상수치2±0.5(kgf/cm2) 이상 유지하도록 하고, 마이콤전원을 리셋', '1) 배전반 점검 커버를 열고 마이콤 전원을 리셋한 후, 냉방 가동 시, CREF2의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)을 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설 여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안 되는 것을 확인한 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ef147b72-5fae-4800-91f1-7213a1409791', '0507', '507', 'DCU#1 6위(L3)-초기화 실패', 'Tc1', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 "Calibration failure” 신호가 "1"이 되면 검지.', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터고장, 장애물 감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우', '초기화 실패를 야기한 고장 코드를 확인하여 조치 후, 재 닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ef15b87b-8fd2-449f-a318-b2746eb68c37', '0505', '505', 'DCU#1 3위(R2)-출입문 입력 고전압', 'Tc1', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 "1"이 되면 검지.', '고전압 상태. (그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ef1e1cd5-6c06-4336-95c1-17d5aaa23967', '755', '755', 'CAB HVAC#8 - 통신고장', 'Tc2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ef1e2b8f-d480-48c7-960c-f563a39ae611', '0510', '510', 'DCU#1 1위(R1)-출입문 닫힘 리미트 스위치1 고장', 'Tc1', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 "DCS1 Failure(Leftt)” 신호가 "1"이 되면 검지.', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ef2c8ca2-72f5-4914-bf11-de9f455913ae', '0746', '746', 'HVAC#6-전자접촉기 배기팬1(CRVF) 고장', 'M3', 'C', 'HVAC-전자접촉기 배기팬1(CRVF) 고장', 'C', 'HVAC', 'HVAC 환기 작동 중 CRVF1 전자접촉기 고장 발생.', '환기 시 차량 배기팬1 운전 불가능', '환기 작동 중 2.5초 이상동안 CRVF1 작동 feedback 신호가 수신되지 않는 경우', 'CRVF1 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CRVF1을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRVF1과 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ef5cb1bf-e7a9-4b2d-9236-0d61fe01c3dd', '1514', '1514', 'CU1 모듈고장 - DIM1(Car1)', 'Tc1', 'C', 'CU1, 2 모듈고장 - DIM1', 'C', 'TCMS', 'CU의 DIM1 PCB가 이 정상적으로 인식되지 않아 점검이 필요할 때 +', '1) CU1의 DIM1 PCB가 모듈 고장이 발생하면, CU2로 자동 절체됨. (CU2로 자동 절체되면, 운행 에는 지장이 없음.) +2) CU2 자동 절체 시 화면의 우측 상단 경고장글자 하단에 “B.SYS” 라는 표시가 나타남. +3) 자동 절체 시 열차 운행에는 관계없음. +4) CU2의 DIM1 모듈고장 시는 CU1 정상동작시 운행에는 지장이 없음.', 'CU DIM1의 ID를 정상적으로 검출하지 못할 때 화면에 현시 +', 'CU DIM1의 ID를 정상적으로 검출하는 경우 소거됨', '1) CU의 DIM1 PCB 교체 +2) 불량 해소가 되지 않을 경우, 순차적으로 MCPU, SCM, AUX PCB를 교체하여 정상여부 확인', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ef6007f0-a676-4dbc-8391-740749654abe', '0501', '501', 'DCU#6 3위(R2)-출입문 차단', 'M3', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ef601b25-aae3-43cd-9e89-9bfd38135839', '1708', '1708', '노선안내표시기#5 고장(Car7)', 'M4', 'C', '노선안내표시기#6 고장', 'C', 'PIC', 'PIC 장치의 노선안내표시기#6이 고장이 났을 때 발생 +', '1) 노선안내표시기 화면 미현시 +2) 노선안내표시기 안내 화면 오현시', '통신고장 +', '통신 재개 시', '1) 이더넷 스위치 링크 확인 +2) 이더넷 케이블 점검 +3) 제어보드 및 전원보드 교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ef6145bc-46c7-4658-a262-fba80bb3bf45', '0744', '744', 'HVAC#2 - 전자접촉기 보조히터1(AHEK) 고장', 'M1', 'C', 'HVAC-전자접촉기 보조히터1(AHEK) 고장', 'C', 'HVAC', 'HVAC 보조난방기 작동 중 AHEK1 전자접촉기 고장 발생 +', 'UNIT1보조난방기전난방시반난방만 작동', '보조난방기 작동 중 2.5초 이상 동안 AHEK1 작동 feedback 신호가 수신되지 않는 경우 +', 'AHEK1 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) AHEK1을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, AHEK1과 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ef62034c-ebd9-4c6b-a428-d28c11d0cd84', '1200', '1200', 'FDU#3 통신고장', 'M2', 'B', 'FDU 통신고장', 'B', 'FDU', 'FDU와 TCMS 간 RS485 통신고장이 검지되면 발생 +', '화면상 FDU의 화재검지신호 등의 데이터가 반응하지 않음.', 'FDU 통신고장 또는 통신케이블문제 +', 'TCMSSDR 신호에 의해 FDU로부터 SD 신호가 정상 수신된 경우', '1) FDU 및 TCMS의 전원을 리셋하여 소거여부 확인 +2) 통신 고장이 발생하지 않은 다른 차량의 수신기와 교체하여 소거 여부 확인(고장이 수신기를 따라가는지 확인) +3) TCMS와 FDU간의 통신계통 점검 및 FDU NFB 점검 +4) 문제가 지속될 경우, 수신기 교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ef64af0d-dd66-44f3-acf1-5ecc891fe9c0', '0513', '513', 'DCU#8 1위(R1)-모듈 상태체크 에러', 'Tc2', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 "Module check error” 신호가 "1"이 되면 검지.', 'Module check error 현시 (출입문은 정상작동 가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태체크 기능에 이상이 생긴 경우 고장 발생.', 'DCU의 'A'모듈과 'B'모듈 간, 상태체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ef78be02-2a66-44c3-be31-ed9d2fedd14f', '0240', '240', 'BECU#4 - 2축 스키드신호', 'T1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ef833d6c-c523-43f2-9b83-746eca240bbb', '0021', '21', '단부출입문 고장(Car2)', 'M1', 'C', '단부출입문고장(CAR2)', 'C', 'DCU', '차량이 단부 통로문으로부터 END DOOR FAULT 신호를 검지.', '출입문 정상동작 불가', '1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우 (인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +4) DCU 내부의 모터 / 인코더 회로가 손상된 경우', '모터/인코더 및 DCU가 정상상태이고, 전기적 연결상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있느지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. +★ 고장 조치 완료 후, 반드시 DCU의 reset 버튼을 누르거나 전원을 OFF/ON 하여 시스템을 재가동 해야 한다.', null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ef8eef68-d374-4c47-8cfc-520ed8f363a1', '0164', '164', 'VVVF#6-역행/회생 전류이상검지(PBCD)', 'M3', 'C', 'VVVF-부정회생(PBCD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT32의 Bit5 “PBCD” 신호가 "1"이 되면 검지.', null, '역행지령 중 회생동작 또는, 회생중 역행동작 시 고장검지.', '1) 역행 고장검지 2초 후 자동 재기동 +2) 제동 제동 OFF시 고장 소거', '1) 상기 고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) CTS 전류센서의 외관상태 및 저전압 커넥터 체결상태를 확인한다. +3) CTS 전류센서의 방향을 확인한다. +4) CTS 전류센서로부터 TCU(통합제어장치)까지의 저전압 배선을 확인한다. +5) CTS 커넥터의 P15B1~F15C1의 전압이 +15V, N15B1~F15C1의 전압이 -15V임을 확인한다. +6) 상기의 점검부분에 이상이 있을 경우 관련부품을 교체한다.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ef8f8b07-cfeb-4649-8dfc-5d6ce0322380', '0502', '502', 'DCU#7 5위(R3)-출입문 장애물검지', 'M4', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ef944717-60d5-43d1-8438-0addd7c485a0', '0506', '506', 'DCU#3 2위(L1)-출입문 입력 저전압', 'M2', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 "1"이 되면 검지.', '저전안 상태 (출입문 동작이 심하게 느려지거나 작동조차 안될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ef954dc6-1aae-42e0-85e0-f14e61ab9367', '1204', '1204', 'FDU#7-감지기2 고장', 'M4', 'C', 'FDU-감지기2 고장', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 "Detector1 State” 신호가 "10"이 되면 검지.', '감지기 고장상태 현시(자동 소거 안됨)', '1) 감지기로부터 데이터 응답이 없는경우. +2) 감지기로부터 수신된 데이터의 CRC가 맞지 않는경우 +3) 감지기로부터 수신된 데이터의 ID가 송신 ID와 일치하지 않는경우', 'FDU 전원 리셋 후 감지기로부터 정상적으로 데이터가 수신된 경우', '1) FDU 전원 리셋 후 고장 소거 여부 확인 +2) 정상 동작중인 감지기와 위치 교환 후 FDU 전원 리셋 및 고장 상태 확인 +3) 동일한 감지기에서 고장 발생시 감지기 교체 +4) 동일한 위치에서 고장 발생시 감지기 라인 점검', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ef95966b-5d0c-4891-8170-6ec389a38d4a', '0732', '732', 'HVAC#6-실외온도 센서1 고장', 'M3', 'C', 'HVAC-실외온도 센서 고장', 'C', 'HVAC', '실외온도 센서 고장 발생', '실외온도 센서 고장현시', '온도센서 검지범위는 -45~85도 (820~1330옴) 인데, 2초 이상 검지범위를 벗어나는 경우', '온도센서 검지 값이 2초 이상 허용온도 범위 내 일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820~1330옴 을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우, 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('efa8760a-d13f-40bd-877f-e04670e8cd2b', '0118', '118', 'VVVF-FC 과전압검지(FCOVD) (Car6)', 'M3', 'C', 'VVVF-FC 과전압검지(FCOVD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT32의 Bit5 “FCOVD” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 'FC 과전압검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치 내부 FC전압이 2100V 이상일 경우 검지됨.', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반배전반의 VVVFIC nfb 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 FC전압에 이상이 있는지 확인한다. +3) 추진제어장치 내부 고전압부에 소손흔적이 있는지 확인한다. +4) FC에 연결된 버스바의 체결상태가 양호한지 확인한고, 버스바를 분리하여 FC의 Capacitance를 측정하여 이상이 없는지 확인한다. +5) 전압센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +6) SEN 보드의 동작상태를 시험기를 통해 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.656536+00', null, '다대48량(2015)', 'Rotem'), ('efadfc7c-796a-4467-89bb-eb0d32d24cd1', '0510', '510', 'DCU#1 3위(R2)-출입문 닫힘 리미트 스위치1 고장', 'Tc1', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 "DCS1 Failure(Leftt)” 신호가 "1"이 되면 검지.', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('efbe6d8f-8215-49eb-930b-ff4599d35bf6', '0515', '515', 'DCU#3 4위(L2)-출입문 열림 시간 초과', 'M2', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 "Open time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 열림 동작시간이 6초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도 한 후, '장애물로 인한 열림실패' 고장과 함께 'Open time out' 고장이 함께 현시', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('efca67d6-9be2-4aea-9368-397ae42a0233', '0208', '208', 'BECU#4-공기제동장치고장', 'T1', 'C', 'BECU-공기제동장치고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit7 “공기제동장치고장” 신호가 "1"이 되면 검지.', '해당 차량 공기제동장치고장 검지 현시 및 해당 차량 정상적인 제동제어 불가.', '해당 차량 BECU의 자가진단 시 고장 발생 또는 AC압력센서 고장.', '해당 차량 BECU의 자가진단 시 정상적일 경우 또는 AC압력센서가 정상일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('efd534a5-9952-4add-8e28-40689f604942', '0725', '725', 'HVAC#7-냉방시험 불가능', 'M4', 'C', 'HVAC-냉방시험 불가능', 'C', 'HVAC', '운전실 TCMS에서 냉방시험 작동을 할 때, 냉방운전이 불가능한 경우 발생.', '냉방 시험 운전 불가능', '실내 또는 실외 온도가 10도 미만일 경우, (환절기 또는 겨울철에 냉방 가동시 시스템 보호를 위한 온도조건)', '실내 또는 실외 온도가 10도 이상일 때, 냉방시험 작동', '1) TCMS 화면에서 실내 또는 실외 온도가 10도 미만인지 확인한다. +2) 실내 및 실외 온도가 10도 이상인대도 냉방 가동이 되지 않을 시, TCMS-마이콤 간 통신불량이 있는지 확인하고 조치한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('efdd1583-a685-4faa-83d6-d5615afd5cee', '0151', '151', 'VVVF#7 - 통신 이상검지(MONIA_ERR)', 'M4', 'C', 'VVVF-통신 이상 검지(MONIA_ERR)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT31의 Bit0 “MONIA_ERR” 신호가 “1”이 되면 검지 +', 'TCMS 화면에 고정정보 현시되며, 추진제어장치상태화면에 나타나는 데이터에 변동이 없음.', 'TCMS-추진제어장치(VVVF)간통신정보가 3초 이상동일한정보로 유지되면 통신고장을 검지함. +', 'TCMS-추진제어장치(VVVF)간통신정보가정상적으로 통신이 될 경우 소거됨.', '1) 추진제어장치(VVVF) 리셋 실시 후 통신고장 소거됨을 확인 +2) 통신고장 소거가 되지 않을 경우 추진제어장치 MON 보드 신품으로 교체 후 통신고장 소거여부 확인 +3) 위 조건에도 고장이 소거되지 않을 경우, TCMS-추진제어장치 간 RS485 통신케이블 연결 상태 점검', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('efecf041-1670-4c1c-827f-1f3962e85ba6', '0518', '518', 'DCU#6 2위(L1) - 출입문 Enable 신호 에러', 'M3', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 “Enable signal error” 신호가 “1”이 되면 검지 +', 'DCU 출입문Enable신호에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드 시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을 때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드 시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입 상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호 장치로부터의 출입문 열림 명령 신호) 취급 시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함. +', '해당 출입문 enable 신호수신', '1) AUTO/MCS 모드 시에는 YARD 모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인 한다. (YARD/FMC 모드 시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('efedfce5-26f8-40b7-9125-e780532f2097', '1505', '1505', '기타장치용 AC 회로차단기 차단(Car4)', 'T1', 'W', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('eff38682-1e50-4ba6-9803-4d613a5c029e', '0505', '505', 'DCU#5 6위(L3) - 출입문 입력 고전압', 'T2', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 “1”이 되면 검지 +', '고전압 상태(그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상 +', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f001f25a-cca0-4332-a785-c98d31979318', '0225', '225', 'BECU#3 - 강제완해검지(CPRD)', 'M2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f004eec2-1029-47ce-bbd3-946120265a60', '0506', '506', 'DCU#1 4위(L2) - 출입문 입력 저전압', 'Tc1', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 “1”이 되면 검지 +', '저전압상태(출입문 동작이 심하게 느려지거나 작동조차 안 될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하 +', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f00a5907-5956-4a46-822f-79e7fc6dcdcc', '0155', '155', 'VVVF#7 - 역행/회생 이상검지(PBR)', 'M4', 'C', 'VVVF-역행/회생 이상 검지(PBR)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT31의 Bit4 “PBR” 신호가 “1”이 되면 검지 +', '1) TCMS 화면 하단 또는 고장화면에 ‘역행/회생 신호 이상 검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생함. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉은색으로 표기되며, HSCB, LB1, 2 개방되어 동력 손실 발생함.', '추진제어장치 입력되는 역행/제동신호가 동시에 입력될 경우 검지됨. +', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반 배전반의 VVVFIC nfb 재투입 또는 차량 배터리 전원 재투입', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 역행/제동신호에 이상이 있는지 확인한다. +3) 차량의 제어 회로 중 역행/제동 신호가 추진제어장치로 연결되는 경로에 이상이 없는지 확인 한다. +4) DIN 보드의 동작 상태를 시험기를 통해 확인한다. +5) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f0104646-ded6-4472-a1c7-0fba61e5f018', '1514', '1514', 'CU2 모듈고장 - DIM1(Car1)', 'Tc1', 'C', 'CU1, 2 모듈고장 - DIM1', 'C', 'TCMS', 'CU의 DIM1 PCB가 이 정상적으로 인식되지 않아 점검이 필요할 때 +', '1) CU1의 DIM1 PCB가 모듈 고장이 발생하면, CU2로 자동 절체됨. (CU2로 자동 절체되면, 운행 에는 지장이 없음.) +2) CU2 자동 절체 시 화면의 우측 상단 경고장글자 하단에 “B.SYS” 라는 표시가 나타남. +3) 자동 절체 시 열차 운행에는 관계없음. +4) CU2의 DIM1 모듈고장 시는 CU1 정상동작시 운행에는 지장이 없음.', 'CU DIM1의 ID를 정상적으로 검출하지 못할 때 화면에 현시 +', 'CU DIM1의 ID를 정상적으로 검출하는 경우 소거됨', '1) CU의 DIM1 PCB 교체 +2) 불량 해소가 되지 않을 경우, 순차적으로 MCPU, SCM, AUX PCB를 교체하여 정상여부 확인', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f01da29b-09f4-4ddc-a5d9-7c9897f85c31', '1100', '1100', 'PSD#8 통신고장', 'Tc2', 'C', 'PSD-통신고장', 'C', 'PSD', 'PSD와 TCMS(CU)간 RS485 통신고장이 검지되면 발생 +', '1) 화면상 PSD 열림/닫힘 등이 현시되지 않고, PSD 고장 현시됨. +2) 전동차 출입문 닫힘중 재열림 기능이 불가함. +3) 차상장치는 TCMS와 통신이 되지 않아도 출입문 열림/닫힘 기능은 구현된다.', 'PSD 전원 CBOFF 혹은 통신연결 불량 +', '1) 차상PSD 리셋 후에도 동일고장이면 사령실과 연락하여 조치를 취한다. +2) 전동차 출입문 닫힘 중 재열림 기능이 구현되지 않으므로 재열림 요구 시 전동차 출입문 완전히 닫힘 후 다시 열림을 시행함.', null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f01fe7cf-2d97-45df-8cb6-928ca1f8ba0c', '0203', '203', 'BECU#7-전자제어밸브의 고장', 'M4', 'C', 'BECU-전자제어밸브의 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit2 “전자제어밸브의 고장” 신호가 "1"이 되면 검지.', '해당 차량 전자제어밸브의 고장 검지 현시 및 해당 차량 제동제어 불가.', '해당 차량의 상용전자제어밸브가 작동하지 않음.', '해당 차량의 상용전자제어밸브가 정상 작동 시 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f023202e-dfdb-4b5e-9c36-105e5b6894e4', '0210', '210', 'BECU#5-3축속도신호의 비정상', 'T2', 'C', 'BECU-3축속도신호의 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit1 “3축속도신호의 비정상” 신호가 "1"이 되면 검지.', '해당 차량 3축속도신호의 비정상 검지 현시 및 해당 차량 활주제어 불가.', '해당 차량의 3축 속도센서 고장 발생.', '해당 차량의 3축 속도센서가 정상적일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f0348aba-a79b-4c0a-9426-ed6ed7c1a4e3', '0051', '51', '주공기압축기 바이패스 기동(Car8)', 'Tc2', 'W', '주공기압축기 바이패스 기동(Car8)', 'W', '기타', '차량으로부터 BYPASS RUN FOR CMSB 신호 입력 시 +', '주공기압축기 정상기동 됨(초기 기동 시 돌입전류값 상승) +고장검지조건 : CMSB INVERTER 고장 +고장소거조건 : CMSB INVERTER 점검 및 교체 +회로 도면 : REC30330DX0', null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f0564ab5-90a0-46af-b92a-b9587ea88b5a', '0725', '725', 'HVAC#1-냉방시험 불가능', 'Tc1', 'C', 'HVAC-냉방시험 불가능', 'C', 'HVAC', '운전실 TCMS에서 냉방시험 작동을 할 때, 냉방운전이 불가능한 경우 발생.', '냉방 시험 운전 불가능', '실내 또는 실외 온도가 10도 미만일 경우, (환절기 또는 겨울철에 냉방 가동시 시스템 보호를 위한 온도조건)', '실내 또는 실외 온도가 10도 이상일 때, 냉방시험 작동', '1) TCMS 화면에서 실내 또는 실외 온도가 10도 미만인지 확인한다. +2) 실내 및 실외 온도가 10도 이상인대도 냉방 가동이 되지 않을 시, TCMS-마이콤 간 통신불량이 있는지 확인하고 조치한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f070b96d-57c2-4be2-ab4c-56bd598735ac', '0507', '507', 'DCU#7 1위(R1)-초기화 실패', 'M4', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 "Calibration failure” 신호가 "1"이 되면 검지.', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터고장, 장애물 감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우', '초기화 실패를 야기한 고장 코드를 확인하여 조치 후, 재 닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f073bc5b-1646-4637-bad6-d2109320b6dc', '0520', '520', 'DCU#4 4위(L2)-이중계 절체 동작', 'T1', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 "Module switchover' 신호가 "1"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.392739+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f07feb0b-4c9c-46b9-abb3-ce5f2c552931', '0171', '171', 'VVVF#3-통합제어장치-PWM제어장치간 통신이상 검지(ERR485)', 'M2', 'C', 'VVVF-장치간 전송이상(ERR485)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT33의 Bit4 “ERR485” 신호가 "1"이 되면 검지.', null, '1) 통합제어기와 PWM보드간 485 통신이 400ms이상 응답없을 시 고장발생. +2) 1분 이내 3회 발생 시 중고장 발생.', '1) 경고장 +역행 고장검지 2초 후 자동 재기동 제동 제동 OFF시 고장 소거 +2) 중고장 +동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) PWM 보드 전면의 LED점등을 확인한다. +2) PWM 제어기 내부 PCB상태를 육안점검한다. +3) PWM 제어기전면의 CN1, CN2 커넥터의 핀 상태를 확인한다. +4) TCU(통합제어장치)의 PUZ 보드의 후면의 커넥터 삽입상태를 확인한다. +5) TCU(통합제어장치)의 PUZ 보드 후면의 제어배선 중, TRX11P, TRX11F, TRX11G 배선의 연결상태 및 배선의 단선 여부를 확인한다. +6) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:37.578803+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f08f3b25-f9da-45c7-b8bc-ff151e5fa21e', '1408', '1408', 'BMS#8 - 충전과전류(OCC, 충전150A 이상)', 'Tc2', 'D', 'BMS-충전과전류(OCC)', 'D', 'BMS', '해당 차량의 충전 전류가 105A 이상이 되면 검지 +', '차량 배터리충전과전류검지 후, 110A 이상이면 충전접촉기(CK)가 차단된다.', '배터리충전과전류(105A 이상) +', '배터리충전전류정상범위로 회복(0 ~ 100A)', '1) 배터리 NFB 상태 확인 +2) 이상이 없으면 차량 전체를 리셋한다. +3) 차량 리셋 후에도 동일고장이면 사령실과 연락하여 조치를 취한다. (외부 방전기 연결 또는 차량 지원)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f093c49e-d6b9-4157-8eb6-d84ac2cc8150', '0233', '233', 'AS 코크#2 차단(Car3)', 'M2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f0947efb-1a1c-4c12-8f68-c0ce92728e13', '0703', '703', 'HVAC#4 - 냉난방장치1 압축기2 과부하', 'T1', 'C', 'HVAC-냉난방장치1 압축기2 과부하', 'C', 'HVAC', 'HVAC 냉방 작동 중 냉난방장치1 압축기2 또는 응축기2 모터에 과부하 발생 +', '냉방 기능 저하(전냉방 시 반냉방으로 작동)', ' +1) 냉방 작동 중 UNIT1의 압축기2 또는 응축기2 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRCM2와 연결된 THR2가 Trip 됨. +', 'UNIT1의 압축기2 또는 응축기2 모터의 과부하조건을 해소하여 정상 가능 상태로 만들고, THR2 및 마이콤 전원 리셋', '1) 냉난방 배전반의 점검커버를 열고, THR2의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR2의 전류 세팅값이 11.5A에 맞춰져 있는지 확인하여, 아닐 경우, (+) 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동시킨 후, THR2의 2차측 2, 4, 6 단자에서 각 단자 간 상간 전압이 AC 380V로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 압축기 및 응축기 단품 상태에서 점검을 한다. +7) THR2의 2차측 2, 4, 6 단자에서 각 단자 간 권선저항이 모두 같은지 확인한다. (±10% 이하) (압축기2 및 응축기2 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT1의 압축기1 또는 응축기1 모터의 결선을 해제한 후 각 부품의 권선저항을 확인 후, 문제가 있는 부품을 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR2 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f0c7443d-7bcc-4719-9579-142ebc85c414', '0517', '517', 'DCU#8 5위(R3) - 출입문 장애물로 인한 열림 실패', 'Tc2', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Open failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘 상태로 대기', '도어열림 중 3회 장애물감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 열림 시, 장애물감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f0c976ef-500d-494a-afff-42cd174c917a', '0506', '506', 'DCU#2 2위(L1)-출입문 입력 저전압', 'M1', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 "1"이 되면 검지.', '저전안 상태 (출입문 동작이 심하게 느려지거나 작동조차 안될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f0cf123d-6d9d-45f3-a195-4ce813059a14', '0223', '223', 'BECU#1-공기스프링누설(전두대차)', 'Tc1', 'C', 'BECU-공기스프링누설(전두대차)', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit6 “공기스프링누설(전두대차)” 신호가 "1"이 되면 검지.', '해당 차량 공기스프링누설(전두대차) 검지 현시 및 해당차량 정상적인 제동제어 불가.(응하중 제어)', '해당 차량 전두대차의 공기스프링(AS1, AS2) 압력이 정상범위를 벗어남.(100kPa 미만)', '해당 차량 전두대차의 공기스프링(AS1, AS2) 압력이 정상범위일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f0e85349-ad3a-480e-998d-52ed317a4f25', '0510', '510', 'DCU#8 6위(L3)-출입문 닫힘 리미트 스위치1 고장', 'Tc2', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 "DCS1 Failure(Leftt)” 신호가 "1"이 되면 검지.', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f0fbe523-46f8-4abd-a440-61d1f3220ac3', '0844', '844', '비상인터폰#2(PEI) 고장(Car#4)', 'T1', 'C', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f1174cf7-b4bf-4428-977b-798304827e3c', '0229', '229', 'AS 코크#1 차단(Car7)', 'M4', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f117c02d-863e-4533-bd9a-b1183b5b60ed', '0515', '515', 'DCU#5 6위(L3)-출입문 열림 시간 초과', 'T2', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 "Open time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 열림 동작시간이 6초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도 한 후, '장애물로 인한 열림실패' 고장과 함께 'Open time out' 고장이 함께 현시', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f119f9d5-3489-43a6-ab33-6e1334559ba6', '0507', '507', 'DCU#6 5위(R3)-초기화 실패', 'M3', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 "Calibration failure” 신호가 "1"이 되면 검지.', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터고장, 장애물 감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우', '초기화 실패를 야기한 고장 코드를 확인하여 조치 후, 재 닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f11ad4dd-59ce-4053-ac45-572906ec2a3a', '0224', '224', 'BECU#3 - 파트너차 ECU 고장(PECUF)', 'M2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f122296e-0ec9-4da7-bfd5-953512b7101c', '0157', '157', 'VVVF#7-FC충전불량(FCD)', 'M4', 'C', 'VVVF-FC충전불량(FCD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT31의 Bit6 “FCD” 신호가 "1"이 되면 검지.', null, '1) HSCB, LB1 투입 후300ms이후에 FC에 충전된 전압이 낮을 경우 고장검지. +2) 1분 이내 3회 발생 시 중고장 발생.', '1) 경고장 +역행 고장검지 2초 후 자동 재기동 제동 제동 OFF시 고장 소거 +2) 중고장 +동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 FC전압에 이상이 있는지 확인한다. +3) 추진제어장치 내부 고전압부에 소손흔적이 있는지 확인한다. +4) 주 회로 차단기함 내부 충전저항값을 측정하여 기준치(10Ω±10%)이내임을 확인. +5) FC에 연결된 버스바의 체결상태가 양호한지 확인한고, 버스바를 분리하여 FC의 Capacitance를 측정하여 이상이 없는지 확인한다. +6) 전압센서와 추진제어장치 제어기 PUZ 보드에 연결되는 저전압 배선상태를 확인한다. +7) 추진제어장치 시험기를 이용하여 TCU(통합제어장치)의 이상여부를 확인한다. +8) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +9) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f12d2a8c-c3d6-438c-ab80-2ac2a66f7a21', '0700', '700', 'HVAC#2 통신고장', 'M1', 'C', 'HVAC-통신고장', 'C', 'HVAC', 'HVAC와 TCMS 간 RS485 통신고장이 검지되면 발생 +', '화면상 HVAC의 실내온도, 운전모드 등의 데이터가 반응하지 않음.', ' +1) 마이콤 전원 CB OFF +2) 통신연결 불량 +3) 해당 마이콤이 검수요원에 의해 firmware 업데이트 중인 경우 +', '해당 차량의 마이콤 및 CU/TU의전원이정상상태이고, 통신라인 연결 상태가 정상', '1) 냉난방 배전반의 점검커버를 열고, 마이콤이 정상적으로 켜져 있는지 확인한다. +2) 만약 마이콤 전원이 꺼져 있다면, 마이콤 DC 전원 CB 및 차량 배전반에 위치한 냉난방장치 CB가 정상적으로 켜져 있는지 확인한다. +3) 마이콤이 정상적으로 켜져 있는 데도 지속적으로 통신고장이 검지되면, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀 밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f12e894c-dd98-4866-9afa-f1f5b4abd47f', '0506', '506', 'DCU#1 1위(R1)-출입문 입력 저전압', 'Tc1', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 "1"이 되면 검지.', '저전안 상태 (출입문 동작이 심하게 느려지거나 작동조차 안될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f131f7eb-7287-42e7-8700-f11e711dffe8', '1525', '1525', 'TCMS 데이타버스1 우측라인 통신 이상(Car7)', 'M4', 'C', 'TCMS 데이터버스1 우측라인 통신 이상', 'C', 'TCMS', 'TCMS의 초기 기동 시 자기진단에 의한 2중계 메인통신선 중 1계 메인통신 이상 검지 시 +', '1) SL-NET 2중계이므로 데이터버스 2계로 정상통신, 운행에 지장 없음. +2) 초기기동 자기진단 시 2중계를 점검하여 1계측의 이상이 검지되었다는 점검 필요용 메시지', '초기 기동 시 SL-NET 1계와 2계를 각각 통신 후 비교하여 2계는 정상통신이 되나 1계는 정상통신이 안 되는 경우 +', '정상 수리 후 차량 전체 재기동하여 SL-NET 1계와 2계 모두 정상통신이 되는 경우', '1) 고장검출호차와 고장검출 우측호차와의 SL-NET 통신 1계 정상여부 확인(예 : 고장호차가 3호차인 경우, 1-2-3-4-5-6-7-8에서 3호차의 우측 즉, 3-4호차 간 SL-NET 1계 통신 상태 점검 필요) +2) 고장검지호차의 SCM PCB 교체 정상여부 확인 +3) 고장검지호차의 우측호차 SCM PCB 교체 정상여부 확인 +4) 고장검지호차와 고장검지 우측호차의 SL-NET 1계 메인통신 배선의 연결 상태 확인 +5) 상기 2 ~ 4번 점검에도 정상적으로 복귀되지 않는 경우, CU/TU ASS'Y 교체(백보드 확인 필요)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f139c3dc-e609-49b0-8d46-3184e27ad6cc', '0232', '232', 'BC 코크(차하#2) 차단(Car7)', 'M4', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f1491836-af58-454d-afbb-188645828596', '0167', '167', 'VVVF#6 - 마스콘 노치신호 이상검지(PWMERR)', 'M3', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f155b368-2759-4010-85db-5b9e01fa2d86', '0500', '500', 'DCU#6 3위(R2) 통신고장', 'M3', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS 간 RS485 통신고장이 검지되면 발생 +', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐상태 등의 변화가 없음.', ' +1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우 +', '해당 차량의 DCU 및 CU/TU의 전원이 정상상태이고, 통신 라인 연결 상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜져 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적 으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는 데도 지속적으로 통신고장이 검지되면, DCU의 X2, X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상 체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f158ed8d-4ba5-40d0-9f32-2f0078f92a47', '0505', '505', 'DCU#4 5위(R3)-출입문 입력 고전압', 'T1', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 "1"이 되면 검지.', '고전압 상태. (그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f186df1d-fc41-4149-8616-2584af0aa273', '0501', '501', 'DCU#7 1위(R1) - 출입문 차단', 'M4', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f1897cfd-a312-4676-85af-43732b28deab', '0200', '200', 'BECU#6 통신고장', 'M3', 'B', 'BECU-통신고장', 'B', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT23의 ‘Life sign'이 변하지 않음. +', '해당 차량 통신고장현시 및 해당 차량의 제동압력(BCP) 등의 데이터가 반응하지 않음. (고장은 현시되나 제동제어는 정상적일 수 있음.)', 'BECU 전원 CBOFF 혹은 통신연결 불량 +', 'BECU와 TCMS 간 RS485 통신이 복귀되어 BECU-TCMSSDTEXT23의'Lifesign'이 변동 시 소거', 'BECU를 리셋(BECUCBOFF/ON) 후 복귀여부를 확인, 리셋 후 복귀되지 않을 경우 관제 보고하고 지시에 따를 것', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f1899eb7-ba65-4c98-98d9-a143d65c5417', '0729', '729', 'HVAC#2-냉난방장치2 리턴 센서 고장', 'M1', 'C', 'HVAC-냉난방장치2 리턴 센서 고장', 'C', 'HVAC', '냉난방장치2의 리턴 센서 고장 발생', '냉난방장치2 리턴센서 고장현시', '온도센서 검지범위는 -45~85도 (820~1330옴) 인데, 2초 이상 검지범위를 벗어나는 경우', '온도센서 검지 값이 2초 이상 허용온도 범위 내 일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820~1330옴 을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우, 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f1c2b6cf-568e-45e4-996c-a0ab4123ae67', '0132', '132', 'VVVF-IPM X상 이상검지(GDFX) (Car7)', 'M4', 'C', 'VVVF-IPM X상 이상검지(GDFX)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT34의 Bit6 “GDFX” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 'IPM X상 이상검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치 내부 IPM에 과전류, 과온이 검지될경우.', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반배전반의 VVVFIC nfb 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 견인전동기로 출력되는 3상의 전류치 확인함. +3) 특정상의 전류치가 비정상적일 경우 특정상에 해당되는 IPM, 전류센서, 모터결선을 확인한다. +4) 전류센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작상태를 시험기를 통해 확인한다. +6) IPM 전원공급기의 전원연결상태 또는 광케이블의 연결상태와 배선상태를 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.71571+00', null, '다대48량(2015)', 'Rotem'), ('f1cfa051-b150-44b4-bd89-ee58d1f63d79', '0515', '515', 'DCU#4 1위(R1)-출입문 열림 시간 초과', 'T1', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 "Open time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 열림 동작시간이 6초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도 한 후, '장애물로 인한 열림실패' 고장과 함께 'Open time out' 고장이 함께 현시', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f1d905e8-c033-4009-9687-9442c8a99fcd', '0842', '842', '출력증폭기#2(AMP) 고장(Car#4)', 'T1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f1ebc042-dc67-42de-a4b1-0a269b700540', '0224', '224', 'BECU#6-파트너차 ECU 고장(PECUF)', 'M3', 'C', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f1f38bd4-212b-4e19-8308-7339c88b45f7', '0513', '513', 'DCU#4 3위(R2)-모듈 상태체크 에러', 'T1', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 "Module check error” 신호가 "1"이 되면 검지.', 'Module check error 현시 (출입문은 정상작동 가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태체크 기능에 이상이 생긴 경우 고장 발생.', 'DCU의 'A'모듈과 'B'모듈 간, 상태체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f1ff84fc-c351-4e5d-a68a-aee48964911f', '0513', '513', 'DCU#7 3위(R2)-모듈 상태체크 에러', 'M4', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 "Module check error” 신호가 "1"이 되면 검지.', 'Module check error 현시 (출입문은 정상작동 가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태체크 기능에 이상이 생긴 경우 고장 발생.', 'DCU의 'A'모듈과 'B'모듈 간, 상태체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f2048162-89e4-4496-ab07-c53dee31b805', '1708', '1708', '노선안내표시기#3 고장(Car5)', 'T2', 'C', '노선안내표시기#6 고장', 'C', 'PIC', 'PIC 장치의 노선안내표시기#6이 고장이 났을 때 발생 +', '1) 노선안내표시기 화면 미현시 +2) 노선안내표시기 안내 화면 오현시', '통신고장 +', '통신 재개 시', '1) 이더넷 스위치 링크 확인 +2) 이더넷 케이블 점검 +3) 제어보드 및 전원보드 교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f209c69a-2f5e-4779-af24-68445c5a8bc0', '0505', '505', 'DCU#5 5위(R3) - 출입문 입력 고전압', 'T2', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 “1”이 되면 검지 +', '고전압 상태(그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상 +', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f2110b52-0ee8-419f-a13b-8e8e3143bd94', '1103', '1103', 'PSD#1 - 지상 스크린도어 열림 고장', 'Tc1', 'D', 'PSD-지상 스크린도어 열림 고장', 'D', 'PSD', 'PSD의 RS485 데이터 중 PSD-TCMS SD TEXT5(TEXT6)의 Bit3 “지상 PSD 열림 확인 NG” 신호가 “1”이 되면 검지([지상 PSD 설비 장애] - 전동차 출입문 열림, 차상장치가 스크린도어 열림 명령을 송신, 지상장치로부터 스크린도어 열림확인 NG가 수신된 경우 ) +', '1) 전동차 출입문 열림 후 +2) 전동차 출입문은 열림이나, PSD가 열림이 아닐 경우 +3) 전동차 출입문과 PSD 모두 열림이나 장애로 현시될 경우', '지상 PSD 설비에서 PSD 전체 열림명령 실행 중 Feedback 신호가 올바르지 않음. +', '1) 지상 설비에 대한 고장이므로 차상장치는 정상동작 한다. +2) 기관사는 PSD 열림 상태확인, 열림 실패 시 +3) 기관사 조작반으로 수동취급 실시할 것 +* 해당 역사를 벗어나면 소멸됨.', null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f21b1eb6-e726-408c-8f05-7527b6c249f6', '0505', '505', 'DCU#5 1위(R1) - 출입문 입력 고전압', 'T2', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 “1”이 되면 검지 +', '고전압 상태(그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상 +', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f23dd016-68a2-45ba-b28e-f558048e739e', '0225', '225', 'BECU#2-강제완해검지(CPRD)', 'M1', 'C', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f24a70a4-b96a-458b-babf-31d7048aaec9', '0503', '503', 'DCU#3 2위(L1)-출입문 내부비상핸들 취급(EED)', 'M2', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f2617aef-f7e5-4323-99e4-93b57cd8d87f', '0230', '230', 'ECU 전원공급 고장(Car6)', 'M3', 'B', 'ECU 전원공급 고장', 'B', 'BECU', '해당차량의 ECU 전원공급 고장 (CB OFF) 발생 시 검지', '해당차량의 ECU 전원공급 고장 검지 현시', '해당차량의 ECU 전원차단 (CB OFF)', '해당차량의 ECU 전원공급 (CB ON)', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속적으로 고장 발생시 관제보고하고 지시에 따를 것.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f27878ba-1498-4160-9aec-4043a601cbcc', '0512', '512', 'DCU#1 4위(L2)-파라미터 로딩 실패', 'Tc1', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 "Paraneter error” 신호가 "1"이 되면 검지.', 'Parameter error 현시 (출입문은 정상작동 가능)', 'DCU 자체내의 EEPROM으로부터 parameter 데이터 로딩 실패', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f27a0b8b-0427-4bb3-af39-3a2744c57b08', '0520', '520', 'DCU#6 2위(L1) - 이중계 절체 동작', 'M3', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 “Module switchover” 신호가 “1”이 되면 검지 +', '이중계 절체 동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러) 이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A'모듈 및 ‘B'모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f2845f5c-7a02-4679-b6da-036c34a034a4', '1501', '1501', '차상신호장치(ATC) 회로차단기 차단(Car5)', 'T2', 'W', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f2c5c473-18ee-4d18-9612-bb090d467286', '0064', '64', 'MAIN FUSE#1 DISCONNECTED(Car7)', 'M4', 'W', 'MAIN FUSE#1 DISCONNECTED(Car7)', 'W', 'TCMS', '차량으로부터 AUX FUSE DISCONNECTED 신호 입력시', 'VVVF고압 차단으로 추진 불능', '해당 퓨우즈 소손', '해당 퓨우즈 교체', null, ' +REC20210HN0', '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f2c9fce9-bb06-4109-8f0f-778166fc8ff8', '0204', '204', 'BECU#2 - 응하중 비정상', 'M1', 'C', 'BECU-응하중 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit3 “응하중 비정상” 신호가 “1”이 되면 검지 +', '해당 차량 응하중 비정상 검지 현시', '해당 차량의 응하중 출력이 정상범위를 벗어남. +', '해당 차량 응하중 출력이 정상범위로 복귀 시 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f2da2bec-dab0-4fdc-8fdc-58f08418eab6', '1413', '1413', 'BMS#8 - 방전고온(DOT, 50도 이상)', 'Tc2', 'D', 'BMS-방전고온(DOT)', 'D', 'BMS', '해당 차량의 배터리 온도가 57도 이상이 되면 검지 +', '차량 배터리방전 고온검지 후, 60도 이상이면 충전접촉기(CK)가 차단된다.', '배터리방전 고온(57도 이상) +', '배터리방전 고온 정상범위로 회복(55도 이하)', '1) 배터리 NFB 상태 확인 +2) 이상이 없으면 차량 전체를 리셋한다. +3) 차량 리셋 후에도 동일고장이면 사령실과 연락하여 조치를 취한다. (배터리를 상온조건으로 만든다.)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f2dbc04b-f6d8-4c3b-b7ef-b3a25b4787c6', '0521', '521', 'DCU#3 4위(L2)-모듈 상태 이상', 'M2', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 "01"또는 "00"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f2ddaad7-92ff-49a6-9e49-d89ba7ca0d74', '0167', '167', 'VVVF#7-마스콘 노치신호 이상검지(PWMERR)', 'M4', 'C', 'VVVF-PWM 노치고장(PWMERR)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT33의 Bit0 “PWMERR” 신호가 "1"이 되면 검지.', null, '엔코더 PWM신호의 듀티값 95% 이상 도달 시 고장검지', '1) 역행 듀티값 90%이하. +2) 제동 듀티값 90%이하 & 제동 OFF', '1) 상기 고장이 간헐적으로 발생하는 경우 아래와 같이 조치한다. +2) 엔코더의 출력을 오실로스코프로 측정하여 정상여부를 확인한다.(48V, 400Hz) +3) TC1, TC2차량의 배전반에서 엔코더 출력부 배선상태 및 단자결합상태를 확인한다. +4) 추진장치의 MC유니트의 커넥터 및 핀 압착상태를 확인한다. +5) TCMS의 추진장치 시리얼 데이터 메뉴에서 B1~B7의 노치값을 확인한다. +6) 값이 변하지 않거나 노치별 일정한 값이 유지되지 않는 경우 INF보드를 교체한다.', null, '3', '2025-10-12 01:21:37.578803+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f2e2b21f-364e-447c-a555-77a14691191a', '0511', '511', 'DCU#3 1위(R1) - 출입문 닫힘 리미트 스위치2 고장', 'M2', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 “DCS2 Failure(Right)” 신호가 “1”이 되면 검지 +', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f2ed2dc7-3722-44ef-92b1-29e99b0ebf9d', '0504', '504', 'DCU#1 2위(L1)-출입문 외부비상핸들 취급(EAD)', 'Tc1', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f2f75e3c-f714-4826-8f07-3b686b33b39c', '0500', '500', 'DCU#5 4위(L2) 통신고장', 'T2', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS간 RS485 통신고장이 검지되면 발생.', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐 상태 등의 변화가 없음.', '1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우', '해당차량의 DCU 및 CU/TU 의 전원이 정상상태이고, 통신라인 연결상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜저 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는데도 지속적으로 통순고장이 검지되면, DCU의 X2,X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f2fe33d6-55a6-4d44-a525-4e8ed6b55550', '0301', '301', 'ATC#1-과속경고', 'Tc1', 'W', 'ATC-과속경고', 'W', 'ATC', 'ATC의 RS485 데이터 중 ATC-TCMS SD TEXT11의 Bit0 “Over Speed Warning” 신호가 "1"이 되면 검지.', '1) MMI화면에 열차과속검지에 대한 경고 메시지 현시 +2) MMI에서 과속경보음 출력 +3) 상용만제동 체결', 'MMI 제한속도 대비 실제속도가 + 1 Km/h이상인 경우', '열차속도를 제한속도 이하로 감속', '제한속도 대비 열차속도가 감속되었는지 확인한다.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f31035d6-d54f-4c28-89bd-0b88f892b61e', '0518', '518', 'DCU#7 2위(L1)-출입문 Enable 신호 에러', 'M4', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 "Enable signal error” 신호가 "1"이 되면 검지.', 'DCU 출입문 Enable 신호 에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) 취급시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함.', '해당출입문 enable 신호 수신', '1) AUTO/MCS 모드시에는 YARD모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인한다. (YARD/FMC 모드시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f314042d-63ae-4822-a77a-d1cb64cd6524', '0206', '206', 'BECU#3-RAM 점검 고장', 'M2', 'C', 'BECU-RAM 점검 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit5 “RAM 점검 고장” 신호가 "1"이 되면 검지.', '해당 차량 RAM 점검 고장 검지 현시 및 해당 차량 정상적인 제동제어 불가.', '해당 차량 BECU의 자가진단 시 고장 발생.', '해당 차량 BECU의 자가진단 시 정상적일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f3290ec8-8006-453a-9858-11ef127b5330', '0505', '505', 'DCU#5 3위(R2)-출입문 입력 고전압', 'T2', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 "1"이 되면 검지.', '고전압 상태. (그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f32aba0b-4275-4959-bca3-b754cbc202ca', '0184', '184', '역행관련 회로차단기 차단(Car4)', 'T1', 'W', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.578803+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f32f9da6-0094-4d13-9d71-d47520ae94b3', '0517', '517', 'DCU#6 3위(R2)-출입문 장애물로 인한 열림 실패', 'M3', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Open failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘상태로 대기', '도어 열림 중 3회 장애물 감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 열림 시, 장애물 감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f334f309-9868-4102-9504-aafa737e1275', '0714', '714', 'HVAC#5 - 냉난방장치1 압력스위치2(DPS) 고압', 'T2', 'D', 'HVAC-냉난방장치1 압력스위치2(DPS) 고압', 'D', 'HVAC', '냉난방장치1 냉매 압력스위치2 고압 발생 +', 'UNIT1CYCLE2 냉방기능불가', 'UNIT1DSP2측 냉매압력이 3초 이상 28±1(kgf/cm2) 이상 되는 경우 +', '냉매압력이 정상수치 15±0.7(kgf/cm2) 이하로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CRCM2의 부하측 전류를 측정하여 응축기 팬의 동작여부를 확인한다. +2) 응축기 코일의 전면에 이물질로 인한 막힘이 있는지 확인한다. +3) 응축기 팬 상부 그릴에 외부 이물질로 인한 막힘이 있는지 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f35001cd-ea9f-4f8e-aed9-2ef2747d651f', '0166', '166', 'VVVF#6 - 대활주/대공전(WSD)', 'M3', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f3578368-30e7-4781-8e22-2838c6a02f67', '0010', '10', 'TU 통신고장(Car5)', 'T2', 'B', 'TU 통신고장(Car5)', 'C', 'TCMS', 'M, T 차량의 차량제어장치(TU) 통신고장 +', '1) 해당 차호의 차량제어장치(TU)와의 통신불능 시 화면에 현시 +2) TU 통신 고장 시 해당호차의 VVVF, BECU, DCU, HVAC, FDU 등과의 통신도 불가 +(해당 차량의 출입문 열림/닫힘 정보도 현시 불가하므로 출입문 열림/닫힘 램프로 주의 운행) +3) 2호차(6호차) TU 통신 고장 시 판토상승/하강 명령 전달 불가(단, 이미 상승된 판토는 상승 유지됨.) +4) 4호차 TU 통신고장 시, 연장급전접촉기 출력이 불가', 'CU에서 TU의 통신정보를 약 3초 이상 수신 받지 못할 경우 해당 고장 현시 +', 'TU가 정상적으로 통신을 재개할 경우 소거됨.', '1) TU 전원차단기 리셋(OFF → ON) 실시 +2) SCM 보드의 전원 LED가 정상이라면, 멀티미터로 AVR 보드의 전원출력(5V)을 확인 +3) TU 상단의 커넥터 체결상태를 확인 +4) 상기 항목에 이상이 없을 경우 SCM 보드를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f36545d9-5f10-447e-b47e-7dc4ed961783', '0507', '507', 'DCU#4 1위(R1)-초기화 실패', 'T1', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 "Calibration failure” 신호가 "1"이 되면 검지.', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터고장, 장애물 감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우', '초기화 실패를 야기한 고장 코드를 확인하여 조치 후, 재 닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f36f9463-f89a-4768-9e26-6e57d8401b3b', '0173', '173', 'VVVF#6-전류센서 이상검지(CTERR)', 'M3', 'C', 'VVVF-CT 이상검지(CTERR)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT33의 Bit6 “CTERR” 신호가 "1"이 되면 검지.', null, '초기 기동 중 CTU, CTW의 전류값 확인이 안될 시 고장검지.', '동력차 일반배전반의 VVVFIC NFB 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기 고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 내부에 설치된 출력전류 측정용 전류센서의 외관 및 커넥터 체결상태를 확인한다. +3) PWS보드의 ±15V테스트단자 전압을 측정하여 전압 확인. +4) 육안으로 IGBT의 상태를 확인하여 외관에 손상이 있는지 확인한다. +5) IGBT의 Collector와 Emitter 양단을 멀티테스터를 이용하여 단락여부를 확인한다. +6) 견인전동기 고전압 배선의 결선상태 및 손상유무를 확인한다. +7) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:37.578803+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f37ccca0-baa2-4dfe-a6ef-0a99ec36e9d6', '0507', '507', 'DCU#3 4위(L2)-초기화 실패', 'M2', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 "Calibration failure” 신호가 "1"이 되면 검지.', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터고장, 장애물 감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우', '초기화 실패를 야기한 고장 코드를 확인하여 조치 후, 재 닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f3821a25-bfa6-41a2-95f7-96e28d05ee1b', '0204', '204', 'BECU#1-응하중 비정상', 'Tc1', 'C', 'BECU-응하중 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit3 “응하중 비정상” 신호가 "1"이 되면 검지.', '해당 차량 응하중 비정상 검지 현시.', '해당 차량의 응하중 출력이 정상범위를 벗어남.', '해당 차량 응하중 출력이 정상범위로 복귀 시 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f38dba3b-6812-4123-8f8a-13f3d624e240', '0518', '518', 'DCU#6 3위(R2)-출입문 Enable 신호 에러', 'M3', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 "Enable signal error” 신호가 "1"이 되면 검지.', 'DCU 출입문 Enable 신호 에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) 취급시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함.', '해당출입문 enable 신호 수신', '1) AUTO/MCS 모드시에는 YARD모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인한다. (YARD/FMC 모드시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f390c57e-9606-4739-8b4c-cc17b5b70fc7', '0507', '507', 'DCU#6 3위(R2)-초기화 실패', 'M3', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 "Calibration failure” 신호가 "1"이 되면 검지.', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터고장, 장애물 감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우', '초기화 실패를 야기한 고장 코드를 확인하여 조치 후, 재 닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f3992223-851e-4eee-a4fa-8d4faec8fc9d', '0516', '516', 'DCU#4 5위(R3) - 출입문 장애물로 인한 닫힘 실패', 'T1', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Close failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림 상태로 대기', '도어 닫힘 중 3회 장애물감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f3a182d0-8e82-405e-956e-6908700d9f7d', '0514', '514', 'DCU#3 6위(L3)-출입문 닫힘 시간 초과', 'M2', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 "Close time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 닫힘 동작시간이 7초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도 한 후, '장애물로 인한 닫힘실패' 고장과 함께 'Close time out' 고장이 함께 현시', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f3a2e331-9a2c-4a33-b1f9-131162a27f97', '0521', '521', 'DCU#4 5위(R3)-모듈 상태 이상', 'T1', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 "01"또는 "00"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f3e381d7-83b4-4b65-a539-d71c03de4010', '0307', '307', 'ATC#1 - 반대편 출입문 코드 수신', 'Tc1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f3e3e067-e313-4d25-8037-6919ebad14da', '0520', '520', 'DCU#7 3위(R2)-이중계 절체 동작', 'M4', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 "Module switchover' 신호가 "1"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f3e89661-ad9a-4c47-88fd-34e5f61733c6', '0517', '517', 'DCU#1 2위(L1) - 출입문 장애물로 인한 열림 실패', 'Tc1', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Open failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘 상태로 대기', '도어열림 중 3회 장애물감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 열림 시, 장애물감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f40d06e4-03f9-4f8f-bb0e-27afe8b3632c', '0503', '503', 'DCU#7 2위(L1) - 출입문 내부 비상핸들 취급(EED)', 'M4', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f41c90d8-8d65-4857-bb02-6c64504fe52d', '0515', '515', 'DCU#1 5위(R3)-출입문 열림 시간 초과', 'Tc1', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 "Open time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 열림 동작시간이 6초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도 한 후, '장애물로 인한 열림실패' 고장과 함께 'Open time out' 고장이 함께 현시', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f44400e9-37dc-49af-9f63-9f37de827026', '0515', '515', 'DCU#3 6위(L3) - 출입문 열림 시간 초과', 'M2', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 “Open time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 열림 동작시간이 6초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도한 후, ‘장애물로 인한 열림 실패' 고장과 함께 ‘Open time out' 고장이 함께 현시 +', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f464f400-96fb-474e-937c-71c46059aeda', '0519', '519', 'DCU#4 4위(L2)-ZVR 신호 에러', 'T1', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 "ZVR signal error” 신호가 "1"이 되면 검지.', '출입문이 강제로 닫히게 되고, 열림은 불가능', '1) 차량 ZVR 신호가 없는 상태 (차량 주행상태) 에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함.', '해당출입문 ZVR 신호 수신', '1) 차량이 주행중이라면, 차량이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.392739+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f490644c-1d9f-40aa-85bc-ddecd653ad5a', '0516', '516', 'DCU#5 5위(R3) - 출입문 장애물로 인한 닫힘 실패', 'T2', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Close failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림 상태로 대기', '도어 닫힘 중 3회 장애물감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f497eba8-1b11-44e9-a017-467d7aa8d98f', '0044', '44', '비상판토 트립(Car3)', 'M2', 'W', '비상판토 트립 (Car3)', 'W', '기타', '차량으로부터 NO EMERGENCY PANTO TRIP 신호 미입력 시 +', '판도 하강 및 VVVF, SIV 고압 차단', '가선 차단 +', '판토 하강 및 가선 투입', null, '회로 도면 : REC40400DX0', '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f49b9dfc-1f89-46c6-b748-e0aec6f111f9', '0518', '518', 'DCU#2 5위(R3)-출입문 Enable 신호 에러', 'M1', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 "Enable signal error” 신호가 "1"이 되면 검지.', 'DCU 출입문 Enable 신호 에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) 취급시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함.', '해당출입문 enable 신호 수신', '1) AUTO/MCS 모드시에는 YARD모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인한다. (YARD/FMC 모드시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.392739+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f49c43b4-223d-438b-966b-1804abe7cfe4', '0514', '514', 'DCU#8 2위(L1)-출입문 닫힘 시간 초과', 'Tc2', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 "Close time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 닫힘 동작시간이 7초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도 한 후, '장애물로 인한 닫힘실패' 고장과 함께 'Close time out' 고장이 함께 현시', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f4b94d0c-ebfc-4716-af57-b38200d37cb9', '0422', '422', 'SIV#1-인버터2 과온검지(INV2THF) ', 'Tc1', 'B', 'SIV-인버터2 과온검지(INV2THF)', 'B', 'SIV', '보조전원장치(SIV) 의 RS485 데이터 중 SIV-TCMS SD TEXT6의 Bit7 “INV2THF” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 'SIV 인버터 2의 스택 과온' 표시됨. +2) 보조전원장치는 상기 고장검지 후 자동 재기동이 되지 않으며 중고장으로 처리함. +3) 중고장이 발생되면 TCMS 일반화면에 보조전원장치 상태 붉을색으로 표기되며, 연장급전 됨.', '보조전원장치(SIV) 인버터 2의 냉각기 온도가 105도 이상인 조건에서 검지.', '1) 보조전원장치(SIV) 인버터 1의 냉각기 온도가 105도 미만으로 떨어졌을 시 +2) 보조전원장치(SIV) 리셋으로 고장 소거 됨.', '1) 상기고장이 발생이 된 경우 아래와 같이 조치한다. +2) 보조전원장치(SIV) 냉각기의 손상이 없는지 확인한다. +3) 보조전원장치(SIV) 내부에 인버터 유닛 구성품에 손상이 없는지 확인한다. +4) 인버터 유닛 내부에 온도센서 및 결선에 이상이 없느지 확인한다. +5) DIN 보드의 동작상태를 시험기를 통해 확인한다. +6) 인버터 유닛 구성품들의 배선상태와 광케이블의 연결상태를 확인한다. +7) 부하단의 절연상태 및 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f4ba7643-2450-4fcf-911e-e5bd300d3f40', '0218', '218', 'BECU#2 - 인통선로직 비정상', 'M1', 'C', 'BECU-인통선로 직 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit1 “인통선로 직 비정상” 신호가 “1”이 되면 +검지 +', '해당 차량 인통선로 직비정상 검지 현시 및 해당 차량 정상적인제동제어불가 (상용제동 지령에 따른 제어)', '해당 차량의 추진선택(P), 제동선택(B) 신호가 동시에 ON됨. +', '해당 차량의 추진선택(P), 제동선택(B) 신호가 정상작동(상보적으로 작동)될 경우 소거', 'BECU를 리셋(BECU CB OFF/ON) 한 뒤, 마스콘을 제동 7단으로 5초간 취급하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f4d824d8-822f-4cef-93fb-24589646a07b', '0727', '727', 'HVAC#1 - 배기팬1 과부하', 'Tc1', 'C', 'HVAC-배기팬1 과부하', 'C', 'HVAC', 'HVAC 환기작동 중 차량 배기팬1 모터에 과부하 발생 +', '환기 시 차량 배기팬2 운전 불가능', ' +1) 냉방 작동 중 챠량 배기팬1 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRVF1와 연결된 THR9가 Trip 됨. +', '차량 배기팬1 모터의 과부하조건을 해소하여 정상 가능 상태로 만들고, THR9 및 마이콤 전원 리셋', '1) 냉난방 배전반의 점검커버를 열고, THR9의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR9의 전류 세팅값이 2.5A에 맞춰져 있는지 확인하여, 아닐 경우, (+) 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동시킨 후, THR9의 2차측 2, 4 단자와 6 단자 사이의 전압이 DC 100V로 정상 측정 되는지 확인한다. +5) 만약 전압이 측정되지 않을 시, 전원이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, THR9 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f4e8c661-0dc2-4000-a0df-5e14c586b626', '0238', '238', 'BECU#1-4축스키드신호', 'Tc1', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f4f41db9-ea93-47ed-8b1e-68175e1d74de', '0518', '518', 'DCU#2 1위(R1)-출입문 Enable 신호 에러', 'M1', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 "Enable signal error” 신호가 "1"이 되면 검지.', 'DCU 출입문 Enable 신호 에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) 취급시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함.', '해당출입문 enable 신호 수신', '1) AUTO/MCS 모드시에는 YARD모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인한다. (YARD/FMC 모드시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.392739+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f52b71ff-0172-4c33-9f75-73284bd2b1e9', '0504', '504', 'DCU#7 2위(L1) - 출입문 외부 비상핸들 취급(EAD)', 'M4', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f52e1d70-0e23-4413-90fd-4350b276a638', '0221', '221', 'BECU#3 - 제동력부족(ISBD)', 'M2', 'B', 'BECU-제동력부족(ISBD)', 'B', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit5 “ISBD” 신호가 “1”이 되면 검지 +', '해당 차량 제동력 부족 검지 현시 및 해당 차량 제동압력(BCP)이 타차량에 비해 현저히 낮음.', '제동 7단 취급 시 해당 차량의 제동압력이 생성되지 않음. +', '제동 7단 취급 시 정상적인 제동압력이 생성된 경우 소거', 'MCS 모드로 전환 후, 마스콘을 N(중립) → 제동 7단까지 수 회 취급하여 소거 여부 확인, 제동 취급 확인 후, 주의 운전할 것, 지속발생 시 관제보고하고 지시에 따를 것', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f531a08a-746c-4276-9c12-18994a28fabf', '0866', '866', '통합제어기(AVC) 음원 없음(Car#8)', 'Tc2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f5575cb4-6e0a-4653-b4ca-b8fbb181b45a', '0506', '506', 'DCU#7 6위(L3)-출입문 입력 저전압', 'M4', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 "1"이 되면 검지.', '저전안 상태 (출입문 동작이 심하게 느려지거나 작동조차 안될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f5592beb-5157-4f88-b7e9-7350903d10ef', '0519', '519', 'DCU#7 4위(L2)-ZVR 신호 에러', 'M4', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 "ZVR signal error” 신호가 "1"이 되면 검지.', '출입문이 강제로 닫히게 되고, 열림은 불가능', '1) 차량 ZVR 신호가 없는 상태 (차량 주행상태) 에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함.', '해당출입문 ZVR 신호 수신', '1) 차량이 주행중이라면, 차량이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f560d8f2-ab7d-4b7a-adbf-326a3654ae54', '0517', '517', 'DCU#5 4위(L2) - 출입문 장애물로 인한 열림 실패', 'T2', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Open failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘 상태로 대기', '도어열림 중 3회 장애물감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 열림 시, 장애물감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f5728179-b00d-44dc-9232-5dfc73e8b00c', '0223', '223', 'BECU#8 - 공기스프링 누설(전두대차)', 'Tc2', 'C', 'BECU-공기스프링누설(전두대차)', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit6 “공기스프링누설(전두대차)” 신호가 “1”이 +되면 검지 +', '해당 차량 공기스프링 누설(전두대차) 검지 현시 및 해당 차량 정상적인제동제어 불가 (응하중제어)', '해당 차량 전두대차의 공기스프링(AS1, AS2) 압력이 정상범위를 벗어남. (100kPa 미만) +', '해당 차량 전두대차의 공기스프링(AS1, AS2) 압력이 정상범위일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f5732210-e5dd-4bcc-81c1-0981f16a00ca', '1706', '1706', '노선안내표시기#2 고장(Car6)', 'M3', 'C', '노선안내표시기#4 고장', 'C', 'PIC', 'PIC 장치의 노선안내표시기#4이 고장이 났을 때 발생 +', '1) 노선안내표시기 화면 미현시 +2) 노선안내표시기 안내 화면 오현시', '통신고장 +', '통신 재개 시', '1) 이더넷 스위치 링크 확인 +2) 이더넷 케이블 점검 +3) 제어보드 및 전원보드 교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f574029d-13ed-40b8-9410-d657b83f536a', '0220', '220', 'BECU#5 - 공기제동 감쇄지령 비정상', 'T2', 'C', 'BECU-공기제동 감쇄지령 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit3 “공기제동 감쇄지령 비정상” 신호가 “1”이 되면 검지 +', '해당 차량 공기제동감쇄지령 비정상 검지 현시 및 해당 차량 정상적인전공교차제어 불가 (부수차량 공기제동 감쇄 불가)', '해당 차량의 공기제동감쇄지령 신호가 정상범위를 벗어남. (5.0 ~ 95.0%) +', '해당 차량의 공기제동감쇄지령 신호가 정상범위일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 소거되지 않을 경우 해당 차량 옆의 Pair 차량(구동차) BECU를 리셋(CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f5814706-6898-4cf1-bf18-7cb997752bd0', '0303', '303', 'ATC#8-FSB 명령', 'Tc2', 'W', 'ATC-FSB 명령', 'W', 'ATC', 'ATC의 RS485 데이터 중 ATC-TCMS SD TEXT12의 Bit1 “FSB Command” 신호가 "1"이 되면 검지.', null, '1) 제한속도 초과의 과속조건 +2) 운행 중, 출입문 열림 상태 검지 +3) 다대 연장구간 PG1 , PG2 미검지 시', '1) 열차속도가 제한속도 이하 시 +2) 출입문 닫힘 상태 검지 시 +3) 수동으로 운전모드 전환 시', '1) 열차속도가 제한속도 이하인지 확인한다. +2) 출입문 닫힘상태인지 확인한다. +3) 수동으로 운전모드 전환 후, 운행한다.', null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f58fb4a2-88c0-4e0a-98b1-e0551b0c9cdd', '0514', '514', 'DCU#8 6위(L3) - 출입문 닫힘 시간 초과', 'Tc2', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 “Close time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 닫힘 동작 시간이 7초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도한 후, ‘장애물로 인한 닫힘 실패' 고장과 함께 ‘Close time out' 고장이 함께 현시 +', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f5a6920a-bb85-4dd6-8110-776704fd4f94', '0520', '520', 'DCU#6 6위(L3)-이중계 절체 동작', 'M3', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 "Module switchover' 신호가 "1"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에���를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f5aa1141-cadd-4064-bb5a-c52313fc0b3b', '1210', '1210', 'FDU#6 - 메모리 고장', 'M3', 'C', 'FDU-메모리 고장', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT5의 Bit6 “Memory Fault” 신호가 “1”이 되면 검지 +', '1) Memory Fault 현시 +2) FDU의 이벤트 기록 및 읽기 동작 안 됨. +3) FDU 환경설정 정보 로딩 실패(차량 번호, 주차시간, 절전시간 등의 설정값을 기본값으로 로딩)', '메모리 연결 포트의 이상 혹은 배드섹터 발생(메모리 접근 및 읽기, 쓰기가 실패한 경우) +', '메모리의 접근 및 읽기, 쓰기 성공', '1) FDU의 전원을 리셋하여 소거여부 확인 +2) 문제가 지속될 경우, 수신기 교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f5af906e-d80f-42f0-b90e-d549d89650bb', '0519', '519', 'DCU#2 2위(L1) - ZVR 신호 에러', 'M1', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 “ZVR signal error” 신호가 “1”이 되면 검지 +', '출입문이강제로 닫히게 되고, 열림은 불가능', ' +1) 차량 ZVR 신호가 없는 상태(차량 주행상태)에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함. +', '해당 출입문 ZVR 신호 수신', '1) 차량 이 주행중이라면, 차량 이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f5cacb54-497c-4a98-9676-fc3401fc8120', '0520', '520', 'DCU#8 2위(L1) - 이중계 절체 동작', 'Tc2', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 “Module switchover” 신호가 “1”이 되면 검지 +', '이중계 절체 동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러) 이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A'모듈 및 ‘B'모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f5cc2f6c-2b43-4335-a356-a3d77b8f2910', '1203', '1203', 'FDU#6-감지기2 화재감지', 'M3', 'W', 'FDU-감지기2 화재감지', 'W', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 "Detector1 State” 신호가 "11"이 되면 검지.', '화재상태 현시(자동 소거 안됨)', '하기 2가지 조건을 모두 만족하여야 화재신호가 출력 됨(연동모드 동작). +1) 이웃한(앞 혹은 뒤에 위치한) 감지기 중 하나의 감지기라도 주의 혹은 화재상태에 있어야 함. +2) Detector1(해당 감지기)에서 측정된 연기농도가 15% 이상이거나 온도가 65℃ 이상인 경우', '1) FDU의 복귀버튼 조작시 +2) FDU 전원 리셋시', '1) 해당 감지기 위치의 화재 발생 여부 확인 +2) 화재 오 감지일경우 FDU의 복귀버튼 취급 +3) 오감지일경우 감지기의 청소주기 확인(내부 먼지 제거)', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f5dc5045-fdac-4b44-8b5e-82b8a572b429', '0517', '517', 'DCU#8 6위(L3) - 출입문 장애물로 인한 열림 실패', 'Tc2', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Open failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘 상태로 대기', '도어열림 중 3회 장애물감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 열림 시, 장애물감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f5e05853-9a64-4213-95b3-ff0db85be831', '0185', '185', 'VVVF#6 - 인통선 대비 ZVR 불일치 검지', 'M3', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f5f6dd50-d518-4842-917e-e702f593d33f', '0205', '205', 'BECU#1 - 회생제동요구 비정상', 'Tc1', 'C', 'BECU-회생제동요구 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit4 “회생제동요구 비정상” 신호가 “1”이 +되면 검지 +', '해당 차량 회생제동 요구 비정상 검지 현시', '해당 차량의 회생제동 요구 출력이 정상범위를 벗어남. +', '해당 차량 회생제동 요구 출력이 정상범위로 복귀 시 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f60d12b5-7146-421e-bde9-ba10474a89af', '0521', '521', 'DCU#5 6위(L3) - 모듈 상태 이상', 'T2', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 “01” 또는 “00”이 되면 +검지 +', '이중계절체동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러)이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f60dd325-086c-4756-9e12-acdcbbb156c0', '0722', '722', 'HVAC#5 - 냉난방장치2 압력스위치1(DPS) 냉매부족', 'T2', 'C', 'HVAC-냉난방장치2 압력스위치1(DPS) 냉매부족', 'C', 'HVAC', '냉난방장치2 냉매 압력스위치1 저압 발생 +', 'UNIT2CYCLE1냉방 기능 불가', 'UNIT2DSP1측 냉매압력이 30초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우 +', '냉매압력이 정상수치 2±0.5(kgf/cm2) 이상유지하도록 하고, 마이콤전원을 리셋', '1) 배전반 점검 커버를 열고 마이콤 전원을 리셋한 후, 냉방 가동 시, CREF4의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)를 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설 여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안 되는 것을 확인한 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f61b8d73-aad5-4faa-ba1e-bf3b1cc521f4', '0501', '501', 'DCU#6 1위(R1) - 출입문 차단', 'M3', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f61e0bcf-44c1-401f-81ea-ae474be2d04f', '0500', '500', 'DCU#6 1위(R1) 통신고장', 'M3', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS 간 RS485 통신고장이 검지되면 발생 +', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐상태 등의 변화가 없음.', ' +1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우 +', '해당 차량의 DCU 및 CU/TU의 전원이 정상상태이고, 통신 라인 연결 상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜져 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적 으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는 데도 지속적으로 통신고장이 검지되면, DCU의 X2, X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상 체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f622148a-5582-419d-ac82-c079a3034ea1', '0521', '521', 'DCU#4 5위(R3) - 모듈 상태 이상', 'T1', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 “01” 또는 “00”이 되면 +검지 +', '이중계절체동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러)이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f62e8743-ab58-4f12-9fea-1e4e2cab040e', '0508', '508', 'DCU#8 5위(R3) - 출입문 모터/인코더 고장', 'Tc2', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 “Motor / Encoder failure” 신호가 “1”이 되면 +검지 +', '출입문 정상동작 불가', ' +1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우(인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터/인코더 회로 가 손상된 경우 +', '모터/인코더 및 DCU가 정상 상태이고, 전기적 연결 상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있는지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. ※ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. ? DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. ? DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) ? DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f62f3701-9d35-4b3c-b646-049d8d9311ad', '0222', '222', 'BECU#6-공기스프링누설(후미대차)', 'M3', 'C', 'BECU-공기스프링누설(후미대차)', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit5 “공기스프링누설(후미대차)” 신호가 "1"이 되면 검지.', '해당 차량 공기스프링누설(후미대차) 검지 현시 및 해당차량 정상적인 제동제어 불가.(응하중 제어)', '해당 차량 후미대차의 공기스프링(AS3, AS4) 압력이 정상범위를 벗어남.(100kPa 미만)', '해당 차량 후미대차의 공기스프링(AS3, AS4) 압력이 정상범위일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f63459ef-2bde-4712-aa8f-8575056a2ee3', '0516', '516', 'DCU#4 3위(R2) - 출입문 장애물로 인한 닫힘 실패', 'T1', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Close failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림 상태로 대기', '도어 닫힘 중 3회 장애물감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f63c7298-7f85-45a0-8205-1f7380416380', '0232', '232', 'BC 코크(차하#2) 차단(Car7)', 'M4', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f648dd35-e88f-4e96-9b3e-3e9b6fe68b42', '1203', '1203', 'FDU#3 - 감지기2 화재감지', 'M2', 'W', 'FDU-감지기2 화재감지 (Car1~8)', 'W', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 “Detector1 State” 신호가 “11”이 되면 검지 +', '화재상태현시(자동소거 안 됨.)', '하기 2가지 조건을 모두 만족하여야 화재신호가 출력 됨. (연동모드 동작) +1) 이웃한(앞 혹은 뒤에 위치한) 감지기 중 하나의 감지기라도 주의 혹은 화재상태에 있어야 함. +2) Detector1(해당 감지기)에서 측정된 연기농도가 15% 이상이거나 온도가 65℃ 이상인 경우 +', '1) FDU의 복귀버튼 조작 시 +2) FDU 전원 리셋 시', '1) 해당 감지기 위치의 화재 발생 여부 확인 +2) 화재 오감지일 경우 FDU의 복귀버튼 취급 +3) 오감지일 경우 감지기의 청소주기 확인(내부 먼지 제거)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f64a0694-d0c9-429c-85cc-0d938fa4de5a', '0520', '520', 'DCU#8 6위(L3)-이중계 절체 동작', 'Tc2', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 "Module switchover' 신호가 "1"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f65b29d4-622e-49b0-b0af-b2cd36f682a3', '0732', '732', 'HVAC#4 - 실외온도 센서1 고장', 'T1', 'C', 'HVAC-실외온도 센서 고장', 'C', 'HVAC', '실외온도 센서 고장 발생 +', '실외온도 센서 고장 현시', '온도센서 검지범위는 -45 ~ 85도(820 ~ 1,330Ω)인데, 2초 이상 검지범위를 벗어나는 경우 +', '온도센서 검지값이 2초 이상 허용온도 범위 내일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820 ~ 1,330Ω을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f660ba74-c8df-4c4b-aadf-5333bd692a7a', '0514', '514', 'DCU#1 4위(L2)-출입문 닫힘 시간 초과', 'Tc1', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 "Close time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 닫힘 동작시간이 7초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도 한 후, '장애물로 인한 닫힘실패' 고장과 함께 'Close time out' 고장이 함께 현시', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f68f0a41-2b28-4fb9-8953-ca5da3b93bf0', '0239', '239', 'BECU#7-3축스키드신호', 'M4', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f6976346-7c36-4d0a-8683-6ce722080eeb', '0512', '512', 'DCU#3 1위(R1)-파라미터 로딩 실패', 'M2', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 "Paraneter error” 신호가 "1"이 되면 검지.', 'Parameter error 현시 (출입문은 정상작동 가능)', 'DCU 자체내의 EEPROM으로부터 parameter 데이터 로딩 실패', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f6a9d2d3-6ffa-4044-8cc0-1dd5a91daf9b', '0152', '152', 'VVVF#6-제동패턴이상검지(BPD)', 'M3', 'C', 'VVVF-제동패턴이상검지(BPD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT31의 Bit1 “BPD” 신호가 "1"이 되면 검지.', null, '제동요구치 PWM신호의 이상 발생 시 고장검지.', '제동요구치 신호 정상입력 시 고장해제.(24V, 500Hz)', '1) TCMS의 시리얼데이터 화면에서 마스콘을 조작하며 제동노치 별 BED값이 변하는 것을 확인한다. +2) TCU(통합제어기)에 RS232케이블을 이용하여 노트북(제공품)과 연결 후 모니터링 프로그램으로 추진장치에서 BP값 인식 여부를 확인한다. +3) 제동요구치(BED)신호 배선 확인. +4) 제동요구치 신호 파형 확인. (24V, 500Hz) +5) 추진제어장치 시험기를 이용하여 TCU(통합제어장치)의 이상여부를 확인한다. +6) 상기의 점검부분에 이상이 있을 경우 관련부품을 교체한다.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f6acc42f-36bd-4cdf-9317-3a4cead25eaf', '0511', '511', 'DCU#4 2위(L1)-출입문 닫힘 리미트 스위치2 고장', 'T1', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 "DCS2 Failure(Right)” 신호가 "1"이 되면 검지.', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f6ae9c10-a3c9-4999-af96-40e01fce0202', '0059', '59', 'MAIN FUSE#1 DISCONNECTED(Car2)', 'M1', 'W', 'MAIN FUSE#1 DISCONNECTED(Car2)', 'W', 'TCMS', '차량으로부터 AUX FUSE DISCONNECTED 신호 입력시', 'VVVF고압 차단으로 추진 불능', '해당 퓨우즈 소손', '해당 퓨우즈 교체', null, ' +REC20210HN0', '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f6b63b6a-9812-404d-8fe1-4afdc629af9d', '1201', '1201', 'FDU#4-감지기1 화재감지', 'T1', 'W', 'FDU-감지기1 화재감지', 'W', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 "Detector1 State” 신호가 "11"이 되면 검지.', '화재상태 현시(자동 소거 안됨)', '하기 2가지 조건을 모두 만족하여야 화재신호가 출력 됨(연동모드 동작). +1) 이웃한(앞 혹은 뒤에 위치한) 감지기 중 하나의 감지기라도 주의 혹은 화재상태에 있어야 함. +2) Detector1(해당 감지기)에서 측정된 연기농도가 15% 이상이거나 온도가 65℃ 이상인 경우', '1) FDU의 복귀버튼 조작시 +2) FDU 전원 리셋시', '1) 해당 감지기 위치의 화재 발생 여부 확인 +2) 화재 오 감지일경우 FDU의 복귀버튼 취급 +3) 오감지일경우 감지기의 청소주기 확인(내부 먼지 제거)', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f6b6c975-4500-4b56-8133-933679b18925', '0700', '700', 'HVAC#2 통신고장', 'M1', 'C', 'HVAC-통신고장', 'C', 'HVAC', 'HVAC와 TCMS간 RS485 통신고장이 검지되면 발생.', '화면상 HVAC의 실내온도, 운전모드 등의 데이터가 반응하지 않음.', '1) 마이콤 전원 CB OFF +2) 통신연결 불량 +3) 해당 마이콤이 검수요원에 의해 firmware 업데이트 중인 경우', '해당차량의 마이콤 및 CU/TU 의 전원이 정상상태이고, 통신라인 연결상태가 정상', '1) 냉난방배전반의 점검커버를 열고, 마이콤이 정상적으로 켜저 있는지 확인한다. +2) 만약 마이콤 전원이 꺼져 있다면, 마이콤 DC전원 CB 및 차량 배전반에 위치한 냉난방장치 CB가 정상적으로 켜져 있는지 확인한다. +3) 마이콤이 정상적으로 켜져 있는데도 지속적으로 통순고장이 검지되면, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f6d6964b-2fe2-4264-ad6f-8ec697782453', '1504', '1504', '냉방장치용 AC 회로차단기 차단(Car2)', 'M1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f6f867f2-94e9-4cc3-a459-32b6ccc0f4e8', '0501', '501', 'DCU#7 2위(L1)-출입문 차단', 'M4', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f6fccdc4-deda-47f1-ad2b-14b38dd4dea8', '0165', '165', 'VVVF#6 - OVT 오동작검지(OVTD)', 'M3', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f7052ad9-ae49-4b12-9fb8-9527f743f7db', '0515', '515', 'DCU#8 4위(L2) - 출입문 열림 시간 초과', 'Tc2', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 “Open time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 열림 동작시간이 6초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도한 후, ‘장애물로 인한 열림 실패' 고장과 함께 ‘Open time out' 고장이 함께 현시 +', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f72caef5-aa0d-42f6-a0ea-f7746d40823f', '0750', '750', 'HVAC#4 - 냉난방장치2 보조히터 과열', 'T1', 'C', 'HVAC-냉난방장치2 보조히터 과열', 'C', 'HVAC', 'HVAC2 보조난방기 작동 중 과열 발생 +', 'UNIT2 보조난방기난방불가', '보조난방기 작동 중 1초 이상 동안 온도가 70도 이상으로 과온 센서 정상신호가 수신 되지 않는 경우 +', '1초 이상 동안 60도 미만으로 온도가 떨어져 과온 센서 정상신호가 수신되는 경우', '1) 보조난방기가 꺼진 상태에서도 문제 발생 시, 과온 센서를 교체한다. +2) 센서 교체 후에도 문제가 발생되면, 배선에 문제가 없는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f741f33a-0f2f-404b-8131-5ba1636af8f0', '0508', '508', 'DCU#7 6위(L3)-출입문 모터/인코더 고장', 'M4', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 "Motor / Encoder failure” 신호가 "1"이 되면 검지.', '출입문 정상동작 불가', '1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우 (인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터 / 인코더 회로가 손상된 경우', '모터/인코더 및 DCU가 정상상태이고, 전기적 연결상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있느지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. +★ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. + +1. DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. +2. DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) +3. DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f7512766-e847-4bad-bf18-4ba325422314', '0517', '517', 'DCU#7 5위(R3) - 출입문 장애물로 인한 열림 실패', 'M4', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Open failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘 상태로 대기', '도어열림 중 3회 장애물감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 열림 시, 장애물감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f751bc56-7f11-4b08-b792-276cae054c5c', '1702', '1702', 'PIC#1 반대편 PIC와의 통신고장', 'Tc1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f7559d6c-9eda-46a5-9eca-96dcec0195b4', '1406', '1406', 'BMS#1 - Cell 과전압(COV, 4,25V 이상)', 'Tc1', 'D', 'BMS-Cell 과전압(COV)', 'D', 'BMS', '해당 차량의 배터리 셀 전압이 4.23V 이상이 되면 검지 +', '차량 배터리셀 과전압 검지 후, 4.26V 이상이면 충전접촉기(CK)가 차단된다.', '배터리셀 과전압(4.23V 이하) +', '배터리셀 전압 정상범위로 회복(3 ~ 4.21V)', '1) 배터리 NFB 상태 확인 +2) 이상이 없으면 차량 전체를 리셋한다. +3) 차량 리셋 후에도 동일고장이면 사령실과 연락하여 조치를 취한다. (외부 방전기 연결 또는 차량 지원)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f756dbf8-2f94-4c01-92bf-e30ec6efd4ca', '0752', '752', 'HVAC#3 - 배기댐퍼 닫힘고장', 'M2', 'C', 'HVAC-배기댐퍼 닫힘고장', 'C', 'HVAC', '차량 배기댐퍼가 닫혀있는 상태에서 배기댐퍼 닫힘 리미트 스위치가 작동되지 않음 +', '배기댐퍼 닫힘 고장 현시', '배기댐퍼를 닫힘으로 제어했으나 닫힘 리미트 스위치 입력이 없을 경우 +', '배기댐퍼 닫힘 상태에서 리미트 스위치 입력이 정상적으로 입력', '1) 배기댐퍼가 닫힌 상태에서 닫힘 리미트 스위치가 정상적으로 작동되었는지 확인한다. +2) 닫힘 리미트 스위치가 정상작동 되었음에도 문제가 발생될 경우, 스위치를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f76392ad-0817-4289-89fa-647a8fcb3aff', '0913', '913', 'TRAIN RADIO#1 - TCI(열차통신장치) 고장', 'Tc1', 'C', 'TRAIN RADIO-TCI(열차통신장치) 고장', 'C', 'TRS', 'Train Radio의 E-NET 데이터 중 Train Radio-TCMS SD TEXT15의 Bit1 “TCI 고장” 신호가 “1”이 되면 +검지 +', '객실방송, 비상인터폰 기능 불능', 'HW 고장 +', '제어기 리셋', null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f76529bd-6b5f-4f84-9e93-730c7f277567', '0236', '236', '상용제동코크 차단(Car8)', 'Tc2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f7680ff8-e951-4f25-a0ba-bf393900c517', '0501', '501', 'DCU#4 3위(R2) - 출입문 차단', 'T1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f7732de4-a411-444d-bbbd-f832cd9397fe', '0728', '728', 'HVAC#3 - 냉난방장치2 토출 센서 고장', 'M2', 'C', 'HVAC-냉난방장치2 토출 센서 고장', 'C', 'HVAC', '냉난방장치2의 토출 센서 고장 발생 +', '냉난방장치2 토출 센서 고장현시', '온도센서 검지범위는 -45 ~ 85도(820 ~ 1,330Ω)인데, 2초 이상 검지범위를 벗어나는 경우 +', '온도센서 검지값이 2초 이상 허용온도 범위 내일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820 ~ 1,330Ω을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f79de5bb-3e47-4786-bc24-b89ba9206c43', '0200', '200', 'BECU#7 통신고장', 'M4', 'B', 'BECU-통신고장', 'B', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT23의 'Life sign'이 변하지 않음.', '해당 차량 통신고장 현시 및 해당 차량의 제동압력(BCP) 등의 데이터가 반응하지 않음. (고장은 현시되나 제동제어는 정상적 일 수 있음)', 'BECU 전원 CB OFF 혹은 통신연결 불량.', 'BECU와 TCMS 간 RS485 통신이 복귀 되어 BECU-TCMS SD TEXT23의 'Life sign'이 변동시 소거.', 'BECU를 리셋(BECU CB OFF/ON) 후 복귀여부를 확인. +리셋 후 복귀되지 않을 경우 관제보고하고 지시에 따를 것.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f79e2ac9-a8ff-4667-8b48-08c0aeec9f08', '1505', '1505', '기타장치용 AC 회로차단기 차단(Car3)', 'M2', 'W', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f7a271fe-4f84-44e6-9640-712113478448', '0509', '509', 'DCU#1 2위(L1)-출입문 잠김 리미트 스위치 고장', 'Tc1', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 "DLS Failure” 신호가 "1"이 되면 검지.', '출입문 잠김 상태 확인 불가', '1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f7cb41a0-d31e-4c82-a1d4-29274b8d501b', '0728', '728', 'HVAC#8 - 냉난방장치2 토출 센서 고장', 'Tc2', 'C', 'HVAC-냉난방장치2 토출 센서 고장', 'C', 'HVAC', '냉난방장치2의 토출 센서 고장 발생 +', '냉난방장치2 토출 센서 고장현시', '온도센서 검지범위는 -45 ~ 85도(820 ~ 1,330Ω)인데, 2초 이상 검지범위를 벗어나는 경우 +', '온도센서 검지값이 2초 이상 허용온도 범위 내일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820 ~ 1,330Ω을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f7d22bbe-d7f0-4c72-9a4f-cb83a04ba102', '0516', '516', 'DCU#7 2위(L1)-출입문 장애물로 인한 닫힘 실패', 'M4', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Close failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림상태로 대기', '도어 닫힘 중 3회 장애물 감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f7d59646-d774-4da1-8a95-325a26de0d15', '0519', '519', 'DCU#2 1위(R1) - ZVR 신호 에러', 'M1', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 “ZVR signal error” 신호가 “1”이 되면 검지 +', '출입문이강제로 닫히게 되고, 열림은 불가능', ' +1) 차량 ZVR 신호가 없는 상태(차량 주행상태)에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함. +', '해당 출입문 ZVR 신호 수신', '1) 차량 이 주행중이라면, 차량 이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f7ea8533-6a05-4aa1-8e16-d64a9932f306', '0501', '501', 'DCU#8 1위(R1)-출입문 차단', 'Tc2', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f7f7b914-4d15-4b5b-b66b-80a5c9d3f3eb', '0519', '519', 'DCU#8 2위(L1) - ZVR 신호 에러', 'Tc2', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 “ZVR signal error” 신호가 “1”이 되면 검지 +', '출입문이강제로 닫히게 되고, 열림은 불가능', ' +1) 차량 ZVR 신호가 없는 상태(차량 주행상태)에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함. +', '해당 출입문 ZVR 신호 수신', '1) 차량 이 주행중이라면, 차량 이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f7fc0b5d-4ad5-4ce6-a024-fffdaad38f91', '0222', '222', 'BECU#7 - 공기스프링 누설(후미대차)', 'M4', 'C', 'BECU-공기스프링누설(후미대차)', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit5 “공기스프링누설(후미대차)” 신호가 “1”이 +되면 검지 +', '해당 차량 공기스프링 누설(후미대차) 검지 현시 및 해당 차량 정상적인제동제어 불가 (응하중제어)', '해당 차량 후미대차의 공기스프링(AS3, AS4) 압력이 정상범위를 벗어남. (100kPa 미만) +', '해당 차량 후미대차의 공기스프링(AS3, AS4) 압력이 정상범위일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f7fd53f2-0fe0-4993-b661-aa633fbb1018', '0222', '222', 'BECU#3 - 공기스프링 누설(후미대차)', 'M2', 'C', 'BECU-공기스프링누설(후미대차)', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit5 “공기스프링누설(후미대차)” 신호가 “1”이 +되면 검지 +', '해당 차량 공기스프링 누설(후미대차) 검지 현시 및 해당 차량 정상적인제동제어 불가 (응하중제어)', '해당 차량 후미대차의 공기스프링(AS3, AS4) 압력이 정상범위를 벗어남. (100kPa 미만) +', '해당 차량 후미대차의 공기스프링(AS3, AS4) 압력이 정상범위일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f802c9be-1ca4-4a74-abf9-9a50eed7f0c4', '0908', '908', '비상인터폰 동작(Car#8-1)', 'Tc2', 'W', null, null, 'RADIO', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f8093d87-1b88-4497-a061-57461e0c8ffd', '0120', '120', 'VVVF-가선저전압검지(VLLVD) (Car7)', 'M4', 'C', 'VVVF-가선저전압검지(VLLVD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT32의 Bit7 “VLLVD” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 '가선 저전압검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치 입력되는 가선전압이 850V 이상일 경우 검지됨.', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반배전반의 VVVFIC nfb 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 가선전압에 이상이 있는지 확인한다. +3) LB Box 내부 고전압부에 소손흔적이 있는지 확인한다. +4) FC에 연결된 버스바의 체결상태가 양호한지 확인한고, 버스바를 분리하여 FC의 Capacitance를 측정하여 이상이 없는지 확인한다. +5) 전압센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +6) SEN 보드의 동작상태를 시험기를 통해 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.71571+00', null, '다대48량(2015)', 'Rotem'), ('f80a578a-a5bc-41c0-9b2c-ef8dea434d14', '0513', '513', 'DCU#7 3위(R2) - 모듈 상태체크 에러', 'M4', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 “Module check error” 신호가 “1”이 되면 검지 +', 'Modulecheckerror현시(출입문은 정상작동가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태 체크 기능에 이상이 생긴 경우 고장 발생 +', 'DCU의 ‘A' 모듈과 ‘B' 모듈 간, 상태 체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f80d8e7a-26ca-4466-bbcd-bb71afa5f5d2', '0855', '855', '비상인터폰#1(PEI) 고장(Car#5)', 'T2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f810014d-5ec3-442a-bacd-dea1274b78d0', '0505', '505', 'DCU#7 3위(R2)-출입문 입력 고전압', 'M4', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 "1"이 되면 검지.', '고전압 상태. (그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f812fd06-4239-48b4-b88a-bad53b6e54eb', '0516', '516', 'DCU#2 1위(R1) - 출입문 장애물로 인한 닫힘 실패', 'M1', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 “Close failure due to obstacle” 신호가 “1”이 되면 검지 +', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림 상태로 대기', '도어 닫힘 중 3회 장애물감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량) +', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f82edcf3-1da0-4a0e-a924-96fef16d21f9', '0506', '506', 'DCU#8 2위(L1)-출입문 입력 저전압', 'Tc2', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 "1"이 되면 검지.', '저전안 상태 (출입문 동작이 심하게 느려지거나 작동조차 안될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f8415103-d233-41e5-a732-1d23c7ed62c3', '1512', '1512', 'CU1 내장 SD - CARD 점검 필요(Car1)', 'Tc1', 'D', 'CU1 내장 SD-CARD 점검 필요', 'D', 'TCMS', 'CU1의 내장 SD-CARD가 점검이 필요한 상태 +', '1) CU1의 SD-CARD가 정상 검지되지 못할 때 고장기록 화면에 현시 +2) 운행기록을 정상적으로 기록하지 못함. (양측 운전실에서 기록 하므로, 반대편의 운전기록을 활용할 수 있으며, 클라우드 송출기록은 정상동작함) +3) 열차 운행에는 관계없음. +4) 해당운전실의 운행기록을 정상적으로 다운로드 할 수 없음.', 'CU1의 SD-CARD가 정상 검지되지 못할 때 고장기록 화면에 현시 +', '재기동 후 SD-CARD가 정상적으로 동작할 때 소거됨.', '1) CU의 MCPU PCB 내부의 SD-CARD를 포맷한다. +2) 불량 해소가 되지 않을 경우, 정상적인 TCMS 펌웨어가 들어가 있는 SD-CARD로 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f8604449-8cf7-49d6-9cbd-32bf85d7961b', '0509', '509', 'DCU#6 4위(L2) - 출입문 잠김 리미트 스위치 고장', 'M3', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 “DLS Failure” 신호가 “1”이 되면 검지 +', '출입문 잠김 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f8640f05-9217-44ca-9bbb-12d2ba43790f', '0147', '147', 'VVVF#6 - ZVR 이상검지(ZVRD)', 'M3', 'D', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f866e37e-bfeb-4dfa-b688-531a65bbbf7a', '0730', '730', 'HVAC#1-냉난방장치1 토출 센서 고장', 'Tc1', 'C', 'HVAC-냉난방장치1 토출 센서 고장', 'C', 'HVAC', '냉난방장치1의 토출 센서 고장 발생', '냉난방장치1 토출센서 고장현시', '온도센서 검지범위는 -45~85도 (820~1330옴) 인데, 2초 이상 검지범위를 벗어나는 경우', '온도센서 검지 값이 2초 이상 허용온도 범위 내 일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820~1330옴 을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우, 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f86dc097-f7c2-4bee-ba78-6964be813f92', '0505', '505', 'DCU#8 6위(L3) - 출입문 입력 고전압', 'Tc2', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 “1”이 되면 검지 +', '고전압 상태(그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상 +', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f899f4bc-28b8-4d07-a34c-51af54e43d60', '0512', '512', 'DCU#8 1위(R1)-파라미터 로딩 실패', 'Tc2', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 "Paraneter error” 신호가 "1"이 되면 검지.', 'Parameter error 현시 (출입문은 정상작동 가능)', 'DCU 자체내의 EEPROM으로부터 parameter 데이터 로딩 실패', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f8a16a1c-a81f-4cf5-b6f6-8a2510d399d4', '0829', '829', '0', 'M2', '0', null, null, '0', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f8b6f4b2-f179-4d5c-ada8-3e753a4414fd', '0075', '75', '주공기압축기 장시간 기동(Car1)', 'Tc1', 'B', '주공기압축기 장시간 기동(Car1)', 'B', '기타', '차량으로부터 INVERTER RUN for CMSB 또는 BYPASS RUN for CMSB 신호 입력이 12분 이상 지속 시 +', '주공기압축기 장시간 기동 +고장검지조건 : 주공기압축기 12분 이상 기동 시 +고장소거조건 : 해당 공기관의 누기여부 확인 및 장치 점검 +회로 도면 : REC30330DX0', null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f8ce9d3d-aeba-4e3d-9936-deeb0ab88d23', '0879', '879', '영상저장장치(NVR) 고장(Car#8)', 'Tc2', 'C', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f8d9751d-a416-464f-bf2a-b1ca0bd18fed', '0865', '865', '비상인터폰#1(PEI) 고장(Car#6)', 'M3', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f9059ecb-731c-4ea3-89bf-9c1d834fc690', '0707', '707', 'HVAC#8-냉난방장치2 증발기1 과부하', 'Tc2', 'C', 'HVAC-냉난방장치2 증발기1 과부하', 'C', 'HVAC', 'HVAC 냉방작동 중 냉난방장치2 증발기 모터에 과부하 발생.', 'UNIT2 냉방 기능 불가', '1) 냉방작동 중 UNIT2의 증발기 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CREF3과 연결된 THR7이 Trip 됨.', 'UNIT2의 증발기 모터의 과부하 조건을 해소하여 정상 가능 상태로 만들고, THR7 및 마이콤 전원 리셋', '1) 냉난방배전반의 점검커버를 열고, THR7의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR7의 전류 세팅값이 3A에 맞춰져 있는지 확인하여, 아닐 경우, 십자 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동 시킨 후, THR7의 2차측 2,4,6 단자에서 각 단자간 상간 전압이 AC 380V으로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 증발기 단품 상태에서 점검을 한다. +7) THR7의 2차측 2,4,6 단자에서 각 단자간 권선저항이 모두 같은지 확인한다. (±10% 이하) (증발기 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT2의 증발기 모터의 결선을 해제한 후 4극 및 6극 모터의 권선저항을 확인 후, 문제가 있을 겨우, 증발기 모터를 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR7 부품을 교체한다.', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f9153ad7-9efb-49d6-9e55-a1f4ad406201', '0519', '519', 'DCU#3 3위(R2)-ZVR 신호 에러', 'M2', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 "ZVR signal error” 신호가 "1"이 되면 검지.', '출입문이 강제로 닫히게 되고, 열림은 불가능', '1) 차량 ZVR 신호가 없는 상태 (차량 주행상태) 에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함.', '해당출입문 ZVR 신호 수신', '1) 차량이 주행중이라면, 차량이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.392739+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f92509da-b9a4-486a-aafc-da782690163e', '0515', '515', 'DCU#1 4위(L2) - 출입문 열림 시간 초과', 'Tc1', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 “Open time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 열림 동작시간이 6초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도한 후, ‘장애물로 인한 열림 실패' 고장과 함께 ‘Open time out' 고장이 함께 현시 +', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f930d212-f6be-4c73-a5fd-3f119bc313fd', '0510', '510', 'DCU#8 4위(L2) - 출입문 닫힘 리미트 스위치1 고장', 'Tc2', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 “DCS1 Failure(Leftt)” 신호가 “1”이 되면 검지 +', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f9328710-e65c-4439-b31b-207eeafb831b', '0512', '512', 'DCU#2 2위(L1) - 파라미터 로딩 실패', 'M1', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 “Paraneter error” 신호가 “1”이 되면 검지 +', 'Parametererror 현시(출입문은 정상작동 가능)', 'DCU 자체 내의 EEPROM으로부터 parameter데이터 로딩 실패 +', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f9384063-6200-482f-9d5d-380e104a06ec', '0516', '516', 'DCU#5 1위(R1)-출입문 장애물로 인한 닫힘 실패', 'T2', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Close failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림상태로 대기', '도어 닫힘 중 3회 장애물 감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f938fdff-a3c3-410d-b7d0-c11b3d82fb9d', '1209', '1209', 'FDU#7 - 스위치 고장', 'M4', 'C', 'FDU-스위치 고장', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT5의 Bit4 “Switch Fault” 신호가 “1”이 되면 검지 +', 'Switch Fault 현시 및 FDU의 조작버튼 동작 안 됨(화재검지 및 기타 기능에는 상관없음)', ' +1) FDU가 부팅될 때 스위치가 눌려진 상태(3.3V 전압이 인가된 상태)인 경우 +2) FDU가 부팅될 때 스위치 고장으로 인하여 항상 눌러진 상태(3.3V 전압이 인가된 상태)에 있는 경우 +', 'FDU가 부팅될 때 스위치가 눌려진 상태(3.3V 전압이 인가된 상태)가 아닌 경우', '1) 고장이 발생한 수신기의 스위치 상태 확인 및 점검 +2) FDU의 전원을 리셋하여 소거여부 확인 +3) 문제가 지속될 경우, 수신기 교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f959e955-385c-42aa-ba97-817fa6f5a53c', '0520', '520', 'DCU#3 4위(L2) - 이중계 절체 동작', 'M2', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 “Module switchover” 신호가 “1”이 되면 검지 +', '이중계 절체 동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러) 이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A'모듈 및 ‘B'모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f963f379-79a1-4e25-8bf6-fa909ae1b965', '1205', '1205', 'FDU#3-감지기3 화재감지', 'M2', 'W', 'FDU-감지기3 화재감지', 'W', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 "Detector1 State” 신호가 "11"이 되면 검지.', '화재상태 현시(자동 소거 안됨)', '하기 2가지 조건을 모두 만족하여야 화재신호가 출력 됨(연동모드 동작). +1) 이웃한(앞 혹은 뒤에 위치한) 감지기 중 하나의 감지기라도 주의 혹은 화재상태에 있어야 함. +2) Detector1(해당 감지기)에서 측정된 연기농도가 15% 이상이거나 온도가 65℃ 이상인 경우', '1) FDU의 복귀버튼 조작시 +2) FDU 전원 리셋시', '1) 해당 감지기 위치의 화재 발생 여부 확인 +2) 화재 오 감지일경우 FDU의 복귀버튼 취급 +3) 오감지일경우 감지기의 청소주기 확인(내부 먼지 제거)', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f977a646-b09e-4c07-9c37-909347586806', '0514', '514', 'DCU#4 2위(L1)-출입문 닫힘 시간 초과', 'T1', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 "Close time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 닫힘 동작시간이 7초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도 한 후, '장애물로 인한 닫힘실패' 고장과 함께 'Close time out' 고장이 함께 현시', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f97fb83e-eb40-4449-8f32-46c56d30e7df', '0207', '207', 'BECU#1 - 자기진단 고장', 'Tc1', 'C', 'BECU-자기진단고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit6 “RAM 점검 고장” 신호가 “1”이 되면 검지 +', '해당 차량 자기진단 고장검지 현시 및 해당 차량 활주제어 불가', '해당 차량 BECU의 자가진단 시 고장 발생(활주방지밸브 고장) +', '해당 차량 BECU의 자가진단 시 정상적일 경우 소거(활주방지밸브 정상)', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f98b1872-2a66-41b7-b656-7c42ec6cdd70', '0518', '518', 'DCU#7 4위(L2) - 출입문 Enable 신호 에러', 'M4', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 “Enable signal error” 신호가 “1”이 되면 검지 +', 'DCU 출입문Enable신호에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드 시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을 때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드 시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입 상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호 장치로부터의 출입문 열림 명령 신호) 취급 시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함. +', '해당 출입문 enable 신호수신', '1) AUTO/MCS 모드 시에는 YARD 모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인 한다. (YARD/FMC 모드 시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f98b194a-b013-4bc4-a8b8-9d96da478a56', '0742', '742', 'HVAC#8-전자접촉기 보조히터3(AHEK) 고장', 'Tc2', 'C', 'HVAC-전자접촉기 보조히터3(AHEK) 고장', 'C', 'HVAC', 'HVAC 보조난방기 작동 중 AHEK3 전자접촉기 고장 발생.', 'UNIT2 보조난방기 전난방 시 반난방만 작동', '보조난방기 작동 중 2.5초 이상동안 AHEK3 작동 feedback 신호가 수신되지 않는 경우', 'AHEK3 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) AHEK3을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, AHEK3과 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f996dd38-6277-4523-bd5e-90134e6ef099', '0729', '729', 'HVAC#1 - 냉난방장치2 리턴 센서 고장', 'Tc1', 'C', 'HVAC-냉난방장치2 리턴 센서 고장', 'C', 'HVAC', '냉난방장치2의 리턴 센서 고장 발생 +', '냉난방장치2 리턴 센서 고장현시', '온도센서 검지범위는 -45 ~ 85도(820 ~ 1,330Ω)인데, 2초 이상 검지범위를 벗어나는 경우 +', '온도센서 검지값이 2초 이상 허용온도 범위 내일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820 ~ 1,330Ω을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f9ab8043-3737-4726-b084-261258616181', '1502', '1502', '기타장치용 DC 회로차단기 차단(Car8)', 'Tc2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f9ae5c21-3c5b-4d4e-9edc-62c9985beaee', '0511', '511', 'DCU#8 1위(R1) - 출입문 닫힘 리미트 스위치2 고장', 'Tc2', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 “DCS2 Failure(Right)” 신호가 “1”이 되면 검지 +', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f9b3f849-32e0-467b-a98b-b4c8f29f569d', '0507', '507', 'DCU#6 1위(R1) - 초기화 실패', 'M3', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 “Calibration failure” 신호가 “1”이 되면 검지 +', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터 고장, 장애물감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우 +', '초기화 실패를 야기한 고장코드를 확인하여 조치 후, 재닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인한다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f9b6e7fb-4c69-487a-8d9d-29f37750f29a', '0516', '516', 'DCU#1 6위(L3)-출입문 장애물로 인한 닫힘 실패', 'Tc1', 'C', 'DCU-출입문 장애물로 인한 닫힘 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Close failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재열림 및 재닫힘을 시도한 후, 출입문 완전 열림상태로 대기', '도어 닫힘 중 3회 장애물 감지로 인해 닫힘 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 닫힘 시, 장애물 감지 없이 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f9bd7988-2d7b-420d-b893-83aad70e9f04', '0143', '143', 'VVVF#7 - 주회로 접지검지(LGD)', 'M4', 'B', 'VVVF-주회로 접지검지(LGD)', 'B', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT30의 Bit0 “LGD” 신호가 “1”이 되면 검지 +', '1) TCMS 화면 하단 또는 고장화면에 ‘주회로 접지검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동이 되지 않으며 중고장으로 처리됨. +3) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉은색으로 표기되며, HSCB, LB1, 2 개방되어 동력 손실 발생함.', '추진제어장치 입력전압이 300V 이하로 하강되며, 입력전류가 1,700A 이상인 조건 +', '추진제어장치 리셋으로 고장 소거됨.', '1) 상기고장이 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 고장기록의 FC 전압 및 입력전류 확인 +3) 추진제어장치 내부에 접지흔적 확인 및 고압 회로 점검 +4) 전류/전압 센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작 상태를 시험기를 통해 확인한다. +6) IPM 전원공급기의 전원연결 상태 또는 광케이블의 연결 상태와 배선상태를 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지 간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f9c3a472-208a-49cb-b5f0-be78802c5b79', '0521', '521', 'DCU#3 5위(R3) - 모듈 상태 이상', 'M2', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 “01” 또는 “00”이 되면 +검지 +', '이중계절체동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러)이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f9d072ba-cf28-42e5-a513-2aafd1dd29fc', '0517', '517', 'DCU#7 2위(L1)-출입문 장애물로 인한 열림 실패', 'M4', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Open failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘상태로 대기', '도어 열림 중 3회 장애물 감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 열림 시, 장애물 감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f9d42bc4-8334-492a-abbc-841b3f266ec8', '0743', '743', 'HVAC#3-전자접촉기 보조히터2(AHEK) 고장', 'M2', 'C', 'HVAC-전자접촉기 보조히터2(AHEK) 고장', 'C', 'HVAC', 'HVAC 보조난방기 작동 중 AHEK2 전자접촉기 고장 발생.', 'UNIT1 보조난방기 전난방 시 반난방만 작동', '보조난방기 작동 중 2.5초 이상동안 AHEK2 작동 feedback 신호가 수신되지 않는 경우', 'AHEK2 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) AHEK2를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, AHEK2와 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f9d6ecf2-4ee9-480a-a89e-38e5a27fc19d', '0717', '717', 'HVAC#1-CO2 센서2 고장', 'Tc1', 'C', 'HVAC-CO2 센서2 고장', 'C', 'HVAC', '객실 CO2 센서2 고장 발생', 'CO2 센서2 고장현시', 'CO2 센서의 검지범위는 0~4000ppm (2~10Vdc) 인데, 1초 이상 출력전압이 2Vdc (0ppm) 미만으로 떨어지는 경우', 'CO2 센서 검지 값이 1초 이상 2Vdc (0ppm) 이상 지속되는 경우', '1) 전원을 인가한 상태에서 CO2센서 커버를 열고 테스터기를 통해 'OUT2' 단자와 'G' 단자간의 전압이 2Vdc 미만인지 확인한다. +2) 만약 전압이 2Vdc 이상인데도 고장이 지속될 경우, 마이콤을 교체한다. +3) 만약 전압이 2Vdc 미만으로 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f9e1dd9e-cc1f-42ab-90d8-a1cc45ce5677', '0306', '306', 'ATC#8 - PSD 열림 검지로 인한 역행불가', 'Tc2', 'C', 'ATC-PSD열림 검지로 인한 역행불가', 'C', 'ATC', 'ATC의 RS485 데이터 중 ATC-TCMS SD TEXT11의 Bit1 “Propulstion Block by detecting PSD open” 신호가 “1”이 되면 검지 +', '실제 PSD가 닫혔음에도 MMI 화면에 PSD 열림표시가 유지되어 있다.', 'FA/AUTO 모드에서 ZV(영속도) 및 제한속도가 0Km/h 이상일 때 PSD 차상장치가 열림 으로 수신 시 +', 'PSD가실제로 닫힘으로 수신된다.', '1) MMI 화면에 PSD가 닫힘으로 표시되었는지 확인한다. +2) PSD 차상장치 고장으로 인해 PSD 닫힘 수신 불가 시, 자동운행 불가상태로 관제에 이를 통보 후 조치한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('f9e64dbe-0bcf-41f1-98cc-b9938245224d', '0231', '231', 'BC 코크(차상) 차단(Car3)', 'M2', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('f9f37e40-1645-4c39-83bc-96d95cbbae8d', '0502', '502', 'DCU#7 3위(R2)-출입문 장애물검지', 'M4', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('fa099a9c-b2c7-4fc9-9dc7-26b08ee6f1d1', '0520', '520', 'DCU#5 3위(R2)-이중계 절체 동작', 'T2', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 "Module switchover' 신호가 "1"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.392739+00', null, '로템40량(2018)-1단계', 'Rotem'), ('fa0d8515-65be-4e1c-9d17-bda1d2c34e51', '0178', '178', 'VVVF#6 - LB2 고착(LB2NO)', 'M3', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('fa1a6658-4846-4566-88d4-ee8de1db893c', '1207', '1207', 'FDU#6-감지기4 화재감지', 'M3', 'W', 'FDU-감지기4 화재감지', 'W', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 "Detector1 State” 신호가 "11"이 되면 검지.', '화재상태 현시(자동 소거 안됨)', '하기 2가지 조건을 모두 만족하여야 화재신호가 출력 됨(연동모드 동작). +1) 이웃한(앞 혹은 뒤에 위치한) 감지기 중 하나의 감지기라도 주의 혹은 화재상태에 있어야 함. +2) Detector1(해당 감지기)에서 측정된 연기농도가 15% 이상이거나 온도가 65℃ 이상인 경우', '1) FDU의 복귀버튼 조작시 +2) FDU 전원 리셋시', '1) 해당 감지기 위치의 화재 발생 여부 확인 +2) 화재 오 감지일경우 FDU의 복귀버튼 취급 +3) 오감지일경우 감지기의 청소주기 확인(내부 먼지 제거)', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('fa442d5b-349f-4268-966f-83cf004a06bb', '0233', '233', 'AS 코크#2 차단(Car6)', 'M3', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('fa4c929c-f793-4ad3-9fcf-bc1e55b3137e', '0219', '219', 'BECU#8 - 제동지령 비정상', 'Tc2', 'C', 'BECU-제동지령 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit2 “제동지령 비정상” 신호가 “1”이 되면 검지 +', '해당 차량 제동지령비정상 검지 현시 및 해당 차량 정상적인제동제어불가(상용제동지령에 따른 제어)', '해당 차량의 제동지령 신호가 정상범위를 벗어남. (5.0 ~ 95.0%) +', '해당 차량의 제동지령 신호가 정상범위일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 소거되지 않을 경우 해당 선택 운전실의 PWM 엔코더를 리셋(CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('fa52bc90-6215-450b-b574-b27eb5291ce2', '0147', '147', 'VVVF#2 - ZVR 이상검지(ZVRD)', 'M1', 'D', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('fa578679-5b6d-4f7c-b517-afcbbd0fa70b', '0231', '231', 'BC 코크(차상) 차단(Car8)', 'Tc2', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('fa5d0e27-0627-4337-8542-acd3fd1ec902', '0515', '515', 'DCU#3 4위(L2) - 출입문 열림 시간 초과', 'M2', 'C', 'DCU-출입문 열림시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit3 “Open time out” 신호가 “1”이 되면 검지 +', 'Closetimeout 현시(출입문은 정상작동가능)', '출입문 열림 동작시간이 6초 이상 지연됨. +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 6초간 지속적으로 열림 동작을 시도한 후, ‘장애물로 인한 열림 실패' 고장과 함께 ‘Open time out' 고장이 함께 현시 +', '출입문이 6초 이내에 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 ‘장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('fa5d5225-e502-4419-a54a-95fda5b5a576', '0513', '513', 'DCU#6 2위(L1) - 모듈 상태체크 에러', 'M3', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 “Module check error” 신호가 “1”이 되면 검지 +', 'Modulecheckerror현시(출입문은 정상작동가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태 체크 기능에 이상이 생긴 경우 고장 발생 +', 'DCU의 ‘A' 모듈과 ‘B' 모듈 간, 상태 체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A' 모듈 및 ‘B' 모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('fa82ae27-8502-4f81-a560-3c753124f8da', '0119', '119', 'VVVF-FC 저전압검지(FCLVD) (Car3)', 'M2', 'C', 'VVVF-FC 저전압검지(FCLVD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT32의 Bit6 “FCLVD” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 'FC 저전압검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치 내부 FC전압이 850V 이상일 경우 검지됨.', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반배전반의 VVVFIC nfb 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 FC전압에 이상이 있는지 확인한다. +3) 추진제어장치 내부 고전압부에 소손흔적이 있는지 확인한다. +4) FC에 연결된 버스바의 체결상태가 양호한지 확인한고, 버스바를 분리하여 FC의 Capacitance를 측정하여 이상이 없는지 확인한다. +5) 전압센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +6) SEN 보드의 동작상태를 시험기를 통해 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.656536+00', null, '다대48량(2015)', 'Rotem'), ('fa8592b6-1648-4170-8d04-56c173da017d', '1404', '1404', 'BMS#8 - 배터리 과전압(BOV, 105V 이상)', 'Tc2', 'W', 'BMS-배터리 과전압(BOV)', 'W', 'BMS', '해당 차량의 배터리 전압이 105.7V 이상이 되면 검지 +', '차량 배터리팩과전압검지 후, 106.5V 이상이면 충전접촉기(CK)가차단된다.', '배터리팩과전압(105.7V 이하) +', '배터리팩전압정상범위로 회복(75 ~ 105V)', '1) 배터리 NFB 상태 확인 +2) 이상이 없으면 차량 전체를 리셋한다. +3) 차량 리셋 후에도 동일고장이면 사령실과 연락하여 조치를 취한다. (외부 방전기 연결 또는 차량 지원)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('faa88d99-1038-45d2-843e-c32b59c627f3', '0424', '424', '자동연장급전 차단 취급', 'HCR', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('faa9ced1-6203-468e-8d84-018f87d1a6f7', '0417', '417', 'SIV#8 - 배터리 충전기 출력과전압(BCOV)', 'Tc2', 'C', 'SIV-배터리 충전기 출력 과전압(BCOV)', 'C', 'SIV', '보조전원장치(SIV)의 RS485 데이터 중 SIV-TCMS SD TEXT5의 Bit7 “BCOV” 신호가 “1”이 되면 +검지 +', '1) TCMS 화면하단 또는 고장화면에 ‘배터리 충전기 출력 과전압 검지' 표시됨. +2) 보조전원장치(SIV)는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 보조전원장치 중고장이 발생됨. +5) 중고장이 발생되면 TCMS 일반화면에 보조전원장치 상태 붉은색으로 표기되며, 연장급전 됨.', '보조전원장치(SIV)의 배터리 충전부에서 출력되는 DC 전압이 150V 이상일 경우 검지됨. +', '1) 경고장이 발생할 경우 보조전원장치(SIV) 자동 재기동에 의해 재기동 됨. +2) 중고장이 발생했을 경우 조치 완료 후 보조전원장치(SIV) 리셋으로 고장 소거됨.', '1) 상기 고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 보조전원장치(SIV) 고장기록을 수집하여 배터리 충전부에서 출력되는 DC 전압값을 확인함. +3) 전압값이 비정상적일 경우 전압센서, DC 출력단 결선을 확인한다. +4) 전압센서와 보조전원장치(SIV) 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작 상태를 시험기를 통해 확인한다. +6) 출력단의 절연상태 및 접지 간의 절연상태를 확인한다. +7) 상기의 점검부분에 이상이 있을 경우 관련된 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('fab32766-faad-48b8-9dc4-418f998535e5', '0915', '915', 'TRAIN RADIO#1-CVD (차량영상장치) 고장', 'Tc1', 'D', 'TRAIN RADIO-CVD (차량영상장치) 고장', 'C', 'RADIO', 'Train Radio의 RS485 데이터 중 Train Radio-TCMS SD TEXT15의 Bit3 “CVD' 고장” 신호가 "1"이 되면 검지.', 'CCTV 영상 저장 불가', 'HW 고장, 메모리 고장', '제어기 리셋', null, null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('fabed0d3-5075-40ac-bf09-e3b4f9696115', '0231', '231', 'BC 코크(차상) 차단(Car2)', 'M1', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('fae5b7d4-c3b0-4785-bf4f-0796f8608fd3', '0712', '712', 'HVAC#8-냉난방장치2 압력스위치1(DPS) 고압', 'Tc2', 'D', 'HVAC-냉난방장치2 압력스위치1(DPS) 고압', 'D', 'HVAC', '냉난방장치2 냉매 압력스위치1 고압 발생.', 'UNIT2 CYCLE1 냉방 기능 불가', 'UNIT2 DSP1측 냉매 압력이 3초 이상 28±1(kgf/cm2) 이상 되는 경우', '냉매 압력이 정상 수치 15±0.7(kgf/cm2 이하로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CRCM3의 부하측 전류를 측정하여 응축기 팬의 동작여부를 확인한다. +2) 응축기 코일의 전면에 이물질로 인한 막힘이 있는지 확인한다. +3) 응축기 팬 상부 그릴에 외부 이물질로 인한 막힘이 있는지 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 압력 스위치를 교체한다.', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('faecc621-f271-477d-b9dc-c825634bf3bd', '0203', '203', 'BECU#2-전자제어밸브의 고장', 'M1', 'C', 'BECU-전자제어밸브의 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit2 “전자제어밸브의 고장” 신호가 "1"이 되면 검지.', '해당 차량 전자제어밸브의 고장 검지 현시 및 해당 차량 제동제어 불가.', '해당 차량의 상용전자제어밸브가 작동하지 않음.', '해당 차량의 상용전자제어밸브가 정상 작동 시 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('faf5d847-03cb-4cf2-b582-fcaaba7fa9a1', '1520', '1520', 'TU 모듈고장 - AUX3(Car7)', 'M4', 'C', 'TU 모듈고장 - AUX3', 'C', 'TCMS', 'TU의 AUX3 PCB가 이 정상적으로 인식되지 않아 점검이 필요할 때 +', '1) TU의 AUX PCB가 모듈 고장이 발생하면, 해당 TU의 모든 디지털 출력 불가 +2) 해당 차량의 실내등 제어 및 라인플로우팬 제어 불가 +3) 해당 TU가 M1 차량 인 경우 판토제어 상승/하강 변경 불가(판토 및 공기압축기 제어) +4) 해당 TU가 T1 차량 인 경우 연장급전상태 제어 불가', 'TU AUX3의 ID를 정상적으로 검출하지 못할 때 화면에 현시 +', 'TU AUX3의 ID를 정상적으로 검출하는 경우 소거됨.', '1) TU의 AUX3 PCB 교체 +2) 불량 해소가 되지 않을 경우, 순차적으로 SCM, DIM PCB를 교체하여 정상여부 확인', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('fb02ddc1-d098-46f4-859d-f04621810dae', '0504', '504', 'DCU#8 2위(L1)-출입문 외부비상핸들 취급(EAD)', 'Tc2', 'B', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('fb08768e-8407-4386-95eb-112d2ac981cc', '0115', '115', 'VVVF-Stack 과온검지2(OTD2) (Car7)', 'M4', 'C', 'VVVF-Stack 과온검지2(OTD2)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT32의 Bit2 “OTD2” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 '스택과온검지2' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동이 되지 않으며 중고장으로 처리됨. +3) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치 냉각기의 온도가 105도 이상인 조건에서 검지.', '1) 추진제어장치 리셋으로 고장 소거됨.', '1) 상기고장이 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 냉각기의 손상이 없는지 확인한다. +3) 추진제어장치 내부에 IPM에 손상이 없는지 확인한다. +4) 인버터 유닛 내부에 온도센서 및 결선에 이상이 없느지 확인한다. +5) DIN 보드의 동작상태를 시험기를 통해 확인한다. +6) IPM 전원공급기의 전원연결상태 또는 광케이블의 연결상태와 배선상태를 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.71571+00', null, '다대48량(2015)', 'Rotem'), ('fb1113b1-353d-4baa-87fe-3528c22ac4d2', '1204', '1204', 'FDU#1 - 감지기2 고장', 'Tc1', 'C', 'FDU-감지기2 고장 (Car1~8)', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 “Detector1 State” 신호가 “10”이 되면 검지 +', '감지기고장상태현시(자동소거 안 됨)', ' +1) 감지기로부터 데이터 응답이 없는 경우 +2) 감지기로부터 수신된 데이터의 CRC가 맞지 않는 경우 +3) 감지기로부터 수신된 데이터의 ID가 송신 ID와 일치하지 않는 경우 +', 'FDU 전원 리셋 후 감지기로부터 정상적으로 데이터가 수신된 경우', '1) FDU 전원 리셋 후 고장 소거 여부 확인 +2) 정상동작중인 감지기와 위치 교환 후 FDU 전원 리셋 및 고장 상태 확인 +3) 동일한 감지기에서 고장 발생 시 감지기 교체 +4) 동일한 위치에서 고장 발생 시 감지기 라인 점검', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('fb156bdb-dcee-44f8-94b5-19921a01f24f', '0237', '237', '보안제동코크 차단(Car4)', 'T1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('fb1656a1-2540-44ad-999f-48a16a0443c0', '0217', '217', 'BECU#1-회생제동달성 비정상', 'Tc1', 'C', 'BECU-회생제동달성 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT3의 Bit0 “회생제동달성 비정상” 신호가 "1"이 되면 검지.', '해당 차량 회생제동달성 비정상 검지 현시 및 해당차량 정상적인 전공 교차제어 불가.', '해당 차량의 회생제동달성 신호가 정상범위를 벗어남(5.0~95.0%).', '해당 차량의 회생제동달성 신호가 정상범위일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. +소거되지 않을 경우 해당 차량 추진제어장치 리셋(CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('fb1b8826-80a3-471b-ab5a-0311c77bad17', '0737', '737', 'HVAC#8-전자접촉기 증발기4(CREF) 고장', 'Tc2', 'C', 'HVAC-전자접촉기 증발기4(CREF) 고장', 'C', 'HVAC', 'HVAC 냉방작동 중 CREF4 전자접촉기 고장 발생.', 'UNIT2 냉방 작동 불가', '냉방작동 중 2.5초 이상동안 CREF4 작동 feedback 신호가 수신되지 않는 경우', 'CREF4 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CREF4를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CREF4와 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('fb1ce577-02ef-46d3-b021-fe1cc2d59420', '0718', '718', 'HVAC#4 - CO2 센서1 고장', 'T1', 'C', 'HVAC-CO2 센서1 고장', 'C', 'HVAC', '객실 CO2 센서1 고장 발생 +', 'CO2 센서1 고장현시', 'CO2 센서의 검지범위는 0 ~ 4,000ppm(2 ~ 10Vdc)인데, 1초 이상 출력전압이 2Vdc(0ppm) 미만으로 떨어지는 경우 +', 'CO2 센서 검지값이 1초 이상 2Vdc(0ppm) 이상 지속되는 경우', '1) 전원을 인가한 상태에서 CO2 센서 커버를 열고 테스터기를 통해 ‘OUT2' 단자와 ‘G' 단자 간의 전압이 2Vdc 미만인지 확인한다. +2) 만약 전압이 2Vdc 이상인데도 고장이 지속될 경우 마이콤을 교체한다. +3) 만약 전압이 2Vdc 미만으로 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('fb208765-7c9b-4e2b-8dba-051c995ddfaa', '0135', '135', 'MDS 서비스위치 아님(Car7)', 'M4', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('fb212969-6478-45de-b896-68a6525e4e5a', '0504', '504', 'DCU#1 6위(L3) - 출입문 외부 비상핸들 취급(EAD)', 'Tc1', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('fb2c9337-c104-4512-91c9-fbd0eecbd7b0', '1202', '1202', 'FDU#7-감지기1 고장', 'M4', 'C', 'FDU-감지기1 고장', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 "Detector1 State” 신호가 "10"이 되면 검지.', '감지기 고장상태 현시(자동 소거 안됨)', '1) 감지기로부터 데이터 응답이 없는경우. +2) 감지기로부터 수신된 데이터의 CRC가 맞지 않는경우 +3) 감지기로부터 수신된 데이터의 ID가 송신 ID와 일치하지 않는경우', 'FDU 전원 리셋 후 감지기로부터 정상적으로 데이터가 수신된 경우', '1) FDU 전원 리셋 후 고장 소거 여부 확인 +2) 정상 동작중인 감지기와 위치 교환 후 FDU 전원 리셋 및 고장 상태 확인 +3) 동일한 감지기에서 고장 발생시 감지기 교체 +4) 동일한 위치에서 고장 발생시 감지기 라인 점검', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('fb3c8c90-a771-4e1a-929e-c042e02ba3f6', '0729', '729', 'HVAC#8-냉난방장치2 리턴 센서 고장', 'Tc2', 'C', 'HVAC-냉난방장치2 리턴 센서 고장', 'C', 'HVAC', '냉난방장치2의 리턴 센서 고장 발생', '냉난방장치2 리턴센서 고장현시', '온도센서 검지범위는 -45~85도 (820~1330옴) 인데, 2초 이상 검지범위를 벗어나는 경우', '온도센서 검지 값이 2초 이상 허용온도 범위 내 일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820~1330옴 을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우, 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('fb4372b9-fb0d-4c37-ae74-f26976a711fa', '0750', '750', 'HVAC#6 - 냉난방장치2 보조히터 과열', 'M3', 'C', 'HVAC-냉난방장치2 보조히터 과열', 'C', 'HVAC', 'HVAC2 보조난방기 작동 중 과열 발생 +', 'UNIT2 보조난방기난방불가', '보조난방기 작동 중 1초 이상 동안 온도가 70도 이상으로 과온 센서 정상신호가 수신 되지 않는 경우 +', '1초 이상 동안 60도 미만으로 온도가 떨어져 과온 센서 정상신호가 수신되는 경우', '1) 보조난방기가 꺼진 상태에서도 문제 발생 시, 과온 센서를 교체한다. +2) 센서 교체 후에도 문제가 발생되면, 배선에 문제가 없는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('fb43ffed-4f9a-4b75-a53f-8f37f51f5c94', '1521', '1521', 'TU 모듈고장 - AUX4(Car2)', 'M1', 'C', 'TU 모듈고장 - AUX4', 'C', 'TCMS', 'TU의 AUX4 PCB가 이 정상적으로 인식되지 않아 점검이 필요할 때 +', 'TU의 AUX4 PCB는 예비 채널용 PCB로 운행에 지장이 없음.', 'TU AUX4의 ID를 정상적으로 검출하지 못할 때 화면에 현시 +', 'TU AUX4의 ID를 정상적으로 검출하는 경우 소거됨.', '1) TU의 AUX4 PCB 교체 +2) 불량 해소가 되지 않을 경우, 순차적으로 SCM, DIM PCB를 교체하여 정상여부 확인', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('fb441420-d0e1-43fb-aa04-4a42c096fa8a', '0156', '156', 'VVVF#3-전진/후진이상검지(FRD)', 'M2', 'C', 'VVVF-전진/후진이상검지(FRD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT31의 Bit5 “FRD” 신호가 "1"이 되면 검지.', null, '전진 후진지령 동시에 입력 시 고장검지.', '동시 입력상황 해제', '1) 상기고장이 간헐적으로 발생하는 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 전진/후진신호에 이상이 있는지 확인한다. +3) 차량의 제어회로 중 전진/후진 신호가 추진제어장치로 연결되는 경로에 이상이 없는지 확인한다. +4) 추진제어장치 시험기를 이용하여 TCU(통합제어장치)의 이상여부를 확인한다. +5) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('fb445dda-ee0e-403f-8598-d80ea2228f56', '0149', '149', 'VVVF#3-FC 저전압검지(FCLVD)', 'M2', 'C', 'VVVF-FC 저전압검지(FCLVD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT30의 Bit6 “FCLVD” 신호가 "1"이 되면 검지.', null, '필터캐패시터 전압이 850V 이하 감압 시 고장발생', '1) 역행 고장검지 2초 후 자동 재기동 +2) 제동 제동 OFF시 고장 소거', '1) 상기고장이 간헐적으로 발생하는 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 FC전압에 이상이 있는지 확인한다. +3) 추진제어장치 내부 고전압부에 소손흔적이 있는지 확인한다. +4) FC에 연결된 버스바의 체결상태가 양호한지 확인한고, 버스바를 분리하여 FC의 Capacitance를 측정하여 이상이 없는지 확인한다. +5) 전압센서의 외관 및 단자 체결상태를 확인한다. +6) 추진제어장치 시험기를 이용하여 TCU(통합제어장치)의 이상여부를 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('fb4ff489-3523-47e1-8136-7a33167266b0', '1203', '1203', 'FDU#5-감지기2 화재감지', 'T2', 'W', 'FDU-감지기2 화재감지', 'W', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 "Detector1 State” 신호가 "11"이 되면 검지.', '화재상태 현시(자동 소거 안됨)', '하기 2가지 조건을 모두 만족하여야 화재신호가 출력 됨(연동모드 동작). +1) 이웃한(앞 혹은 뒤에 위치한) 감지기 중 하나의 감지기라도 주의 혹은 화재상태에 있어야 함. +2) Detector1(해당 감지기)에서 측정된 연기농도가 15% 이상이거나 온도가 65℃ 이상인 경우', '1) FDU의 복귀버튼 조작시 +2) FDU 전원 리셋시', '1) 해당 감지기 위치의 화재 발생 여부 확인 +2) 화재 오 감지일경우 FDU의 복귀버튼 취급 +3) 오감지일경우 감지기의 청소주기 확인(내부 먼지 제거)', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('fb6d4e2d-9db8-43cf-bdc3-71ee4e5d8d45', '0521', '521', 'DCU#6 4위(L2)-모듈 상태 이상', 'M3', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 "01"또는 "00"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('fb7f8488-bdac-41b3-a87d-33b3552b419c', '0147', '147', 'VVVF#3 - ZVR 이상검지(ZVRD)', 'M2', 'D', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('fb87ca4d-6fb5-46f8-994e-05a4270aa6b1', '0512', '512', 'DCU#6 5위(R3)-파라미터 로딩 실패', 'M3', 'C', 'DCU-파라미터 로딩 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit6 "Paraneter error” 신호가 "1"이 되면 검지.', 'Parameter error 현시 (출입문은 정상작동 가능)', 'DCU 자체내의 EEPROM으로부터 parameter 데이터 로딩 실패', 'DCU의 EEPROM에서 parameter 로딩 완료', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 parameter 파일을 업로딩 한다. (parameter 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것) +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.645286+00', null, '로템40량(2018)-1단계', 'Rotem'), ('fb97f088-a27a-4b3d-99bc-cd57ff0104d6', '0310', '310', 'ATC#1 - 50cm 이상 미달정차', 'Tc1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('fb98e2d9-940c-491d-b050-6eaf9195b268', '0504', '504', 'DCU#4 2위(L1) - 출입문 외부 비상핸들 취급(EAD)', 'T1', 'B', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('fb98e579-4852-455c-b9f8-b6696862dd72', '0513', '513', 'DCU#3 2위(L1)-모듈 상태체크 에러', 'M2', 'C', 'DCU-모듈 상태체크 에러', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit1 "Module check error” 신호가 "1"이 되면 검지.', 'Module check error 현시 (출입문은 정상작동 가능)', '2중계 DCU의 ‘A’ 모듈과 ‘B’ 모듈 간, 상태체크 기능에 이상이 생긴 경우 고장 발생.', 'DCU의 'A'모듈과 'B'모듈 간, 상태체크 정상', '1) DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +2) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('fb9f9d70-cc23-40ce-8640-afa8cce2abb6', '1519', '1519', 'TU 모듈고장 - DIM3(Car7)', 'M4', 'C', 'TU 모듈고장 - DIM3', 'C', 'TCMS', 'TU의 DIM3 PCB가 이 정상적으로 인식되지 않아 점검이 필요할 때 +', '1) TU의 DIM3 PCB가 모듈 고장이 발생하면, 해당 TU의 모든 디지털 데이터 입력 동작인식 불가 +2) 해당 TU가 M1 차량 인 경우 판토상태 갱신 불가 +3) 해당 TU가 T1차량 인 경우 연장급전상태 갱신 불가', 'TU DIM3의 ID를 정상적으로 검출하지 못할 때 화면에 현시 +', 'TU DIM3의 ID를 정상적으로 검출하는 경우 소거됨', '1) TU의 DIM3 PCB 교체 +2) 불량 해소가 되지 않을 경우, 순차적으로 SCM, AUX PCB를 교체하여 정상여부 확인', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('fba446b0-cf83-461d-b3fd-c269bed307f4', '0722', '722', 'HVAC#6 - 냉난방장치2 압력스위치1(DPS) 냉매부족', 'M3', 'C', 'HVAC-냉난방장치2 압력스위치1(DPS) 냉매부족', 'C', 'HVAC', '냉난방장치2 냉매 압력스위치1 저압 발생 +', 'UNIT2CYCLE1냉방 기능 불가', 'UNIT2DSP1측 냉매압력이 30초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우 +', '냉매압력이 정상수치 2±0.5(kgf/cm2) 이상유지하도록 하고, 마이콤전원을 리셋', '1) 배전반 점검 커버를 열고 마이콤 전원을 리셋한 후, 냉방 가동 시, CREF4의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)를 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설 여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안 되는 것을 확인한 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('fba7edc1-068c-43b3-b1df-392208cf994d', '1704', '1704', '노선안내표시기#2 고장(Car1)', 'Tc1', 'C', '노선안내표시기#2 고장', 'C', 'PIC', 'PIC 장치의 노선안내표시기#2이 고장이 났을 때 발생 +', '1) 노선안내표시기 화면 미현시 +2) 노선안내표시기 안내 화면 오현시', '통신고장 +', '통신 재개 시', '1) 이더넷 스위치 링크 확인 +2) 이더넷 케이블 점검 +3) 제어보드 및 전원보드 교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('fbb6c851-aee2-4810-ad46-89a289956130', '0500', '500', 'DCU#5 5위(R3) 통신고장', 'T2', 'C', 'DCU 통신고장', 'C', 'DCU', 'DCU와 TCMS 간 RS485 통신고장이 검지되면 발생 +', '정상적으로 출입문을 취급했음에도 불구하고, 화면상 출입문의 개폐상태 등의 변화가 없음.', ' +1) DCU 전원 CB OFF +2) 통신연결 불량 +3) 해당 DCU가 검수요원에 의해 firmware 업데이트 중인 경우 +', '해당 차량의 DCU 및 CU/TU의 전원이 정상상태이고, 통신 라인 연결 상태가 정상', '1) 해당 출입문의 점검커버를 열고, DCU가 정상적으로 켜져 있는지 확인한다. +2) 만약 DCU 전원이 꺼져 있다면, 해당 출입문 CB 및 차량 배전반에 위치한 출입문 CB가 정상적 으로 켜져 있는지 확인한다. +3) DCU가 정상적으로 켜져 있는 데도 지속적으로 통신고장이 검지되면, DCU의 X2, X3 통신 커넥터가 정상적으로 체결되어 있는지 확인한다. +4) 커넥터 또한 정상 체결되어 있을 경우, CU/TU가 정상적으로 켜져 있는지 확인한다. +5) 그래도 문제가 지속되면 해당 차량의 통신커넥터에서 핀밀림 현상이 있는지 확인하여 문제가 있을 경우, 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('fbba5a19-f387-4b1b-a8d7-f0965a965a05', '0152', '152', 'VVVF#7 - 제동패턴 이상검지(BPD)', 'M4', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('fbbb1e3a-b6f8-4dd6-8117-67f00098ff6b', '0326', '326', 'ATC#8-', 'Tc2', '0', null, null, '0', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('fbbb75f3-0dfe-4297-872f-331965a57a1e', '0505', '505', 'DCU#5 2위(L1)-출입문 입력 고전압', 'T2', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 "1"이 되면 검지.', '고전압 상태. (그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('fbc43205-f20d-4b44-8ffa-47874fd17893', '756', '756', 'CAB HVAC#1 - 응축기 과부하', 'Tc1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('fbc6f0ba-22ef-4438-b0d8-b1de22a6c7d6', '0202', '202', 'BECU#8 - 덤프밸브 고장(전두대차)', 'Tc2', 'C', 'BECU-덤프밸브고장(선두대차)', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit1 “덤프밸브고장(선두대차)” 신호가 “1”이 되면 검지 +', '해당 차량 덤프밸브고장(선두대차)검지 현시 및 해당 차량 활주제어불가', '해당 차량 선두대차의 덤프밸브가 작동하지 않음. +', '해당 차량 선두대차의 덤프밸브가 정상작동 시 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('fbd1afed-776a-4d65-b2c7-b3323749016b', '0506', '506', 'DCU#8 4위(L2)-출입문 입력 저전압', 'Tc2', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 "1"이 되면 검지.', '저전안 상태 (출입문 동작이 심하게 느려지거나 작동조차 안될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('fbeef5f5-9676-4c34-a7e5-ba9630773626', '0215', '215', 'BECU#4-후미대차 AS압력센서고장', 'T1', 'C', 'BECU-후미대차 AS압력센서 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit6 “후미대차 AS압력센서 고장” 신호가 "1"이 되면 검지.', '해당 차량 후미대차 AS압력센서 고장 검지 현시 및 해당차량 정상적인 응하중 제동제어 불가.', '해당 차량의 후미대차 AS 압력센서(AS3, AS4) 고장.', '해당 차량의 후미대차 AS 압력센서(AS3, AS4)가 정상일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('fbeefea6-9d5e-48fe-a947-cacf4231b954', '0507', '507', 'DCU#5 2위(L1)-초기화 실패', 'T2', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 "Calibration failure” 신호가 "1"이 되면 검지.', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터고장, 장애물 감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우', '초기화 실패를 야기한 고장 코드를 확인하여 조치 후, 재 닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('fbefb032-035f-4665-8b01-8397c2ba8cee', '1203', '1203', 'FDU#1-감지기2 화재감지', 'Tc1', 'W', 'FDU-감지기2 화재감지', 'W', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 "Detector1 State” 신호가 "11"이 되면 검지.', '화재상태 현시(자동 소거 안됨)', '하기 2가지 조건을 모두 만족하여야 화재신호가 출력 됨(연동모드 동작). +1) 이웃한(앞 혹은 뒤에 위치한) 감지기 중 하나의 감지기라도 주의 혹은 화재상태에 있어야 함. +2) Detector1(해당 감지기)에서 측정된 연기농도가 15% 이상이거나 온도가 65℃ 이상인 경우', '1) FDU의 복귀버튼 조작시 +2) FDU 전원 리셋시', '1) 해당 감지기 위치의 화재 발생 여부 확인 +2) 화재 오 감지일경우 FDU의 복귀버튼 취급 +3) 오감지일경우 감지기의 청소주기 확인(내부 먼지 제거)', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('fbf72708-9010-48e5-9867-3a3764047f86', '0171', '171', 'VVVF#2 - 통합제어장치 - PWM 제어장치간 통신 이상 검지(ERR485)', 'M1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('fbf84d41-14a0-4a29-a076-90a294602b89', '0209', '209', 'BECU#2-4축속도신호의 비정상', 'M1', 'C', 'BECU-4축속도신호의 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit0 “4축속도신호의 비정상” 신호가 "1"이 되면 검지.', '해당 차량 4축속도신호의 비정상 검지 현시 및 해당 차량 활주제어 불가.', '해당 차량의 4축 속도센서 고장 발생.', '해당 차량의 4축 속도센서가 정상적일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('fc0bb610-765b-4778-889b-ae7e9e26e586', '0852', '852', '출력증폭기#2(AMP) 고장(Car#5)', 'T2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('fc10f23b-75f2-4a0a-806c-c31d2a813072', '0518', '518', 'DCU#5 5위(R3) - 출입문 Enable 신호 에러', 'T2', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 “Enable signal error” 신호가 “1”이 되면 검지 +', 'DCU 출입문Enable신호에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드 시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을 때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드 시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입 상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호 장치로부터의 출입문 열림 명령 신호) 취급 시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함. +', '해당 출입문 enable 신호수신', '1) AUTO/MCS 모드 시에는 YARD 모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인 한다. (YARD/FMC 모드 시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('fc1380fe-e29b-4e7f-aa45-95e5efe44124', '0720', '720', 'HVAC#1-실내온도 센서1 고장', 'Tc1', 'C', 'HVAC-실내온도 센서1 고장', 'C', 'HVAC', '객실 실내온도 센서1 고장 발생', '실내온도 센서1 고장현시', '온도센서 검지범위는 -45~85도 (820~1330옴) 인데, 2초 이상 검지범위를 벗어나는 경우', '온도센서 검지 값이 2초 이상 허용온도 범위 내 일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820~1330옴 을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우, 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('fc1cb39c-d286-4621-b504-03191abcde4e', '0508', '508', 'DCU#8 6위(L3)-출입문 모터/인코더 고장', 'Tc2', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 "Motor / Encoder failure” 신호가 "1"이 되면 검지.', '출입문 정상동작 불가', '1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우 (인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터 / 인코더 회로가 손상된 경우', '모터/인코더 및 DCU가 정상상태이고, 전기적 연결상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있느지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. +★ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. + +1. DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. +2. DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) +3. DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('fc256b8c-3dcd-48c8-b6b6-9cd58495cade', '0728', '728', 'HVAC#6-냉난방장치2 토출 센서 고장', 'M3', 'C', 'HVAC-냉난방장치2 토출 센서 고장', 'C', 'HVAC', '냉난방장치2의 토출 센서 고장 발생', '냉난방장치2 토출센서 고장현시', '온도센서 검지범위는 -45~85도 (820~1330옴) 인데, 2초 이상 검지범위를 벗어나는 경우', '온도센서 검지 값이 2초 이상 허용온도 범위 내 일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820~1330옴 을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우, 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '3', '2025-10-12 01:21:37.081245+00', null, '로템40량(2018)-1단계', 'Rotem'), ('fc2df953-a0f4-4458-af03-03d8b4f00720', '1505', '1505', '기타장치용 AC 회로차단기 차단(Car6)', 'M3', 'W', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('fc350c91-81a4-4974-aa04-7b5758d7a556', '1000', '1000', 'CMSB#1 통신고장', 'Tc1', 'C', 'CMSB 통신고장', 'C', 'CMSB', 'CMSB와 TCMS간 RS485 통신고장이 검지되면 발생.', '1) CMSB 통신고장 메시지 현시.', '1) CMSB 통신고장 또는 통신 케이블 문제', null, '0) 정상운행 후, 검수고에 입고하여 아래와 같이 조치한다. +1) 상기고장은 고장 소거 후, 재현시험을 진행하여 지속적으로 발생될 경우 아래와 같이 조치한다. +2) TCMS와 CMSB간의 통신계통 점검.(TCMS, 통신케이블, CMSB 제어기보드)', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('fc4f0ef5-4960-4217-a286-8f5d6d2c853f', '0233', '233', 'AS 코크#2 차단(Car1)', 'Tc1', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('fc5177d8-02ea-4730-bff5-14123b6f43ad', '0511', '511', 'DCU#4 5위(R3) - 출입문 닫힘 리미트 스위치2 고장', 'T1', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 “DCS2 Failure(Right)” 신호가 “1”이 되면 검지 +', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('fc67d9e2-6e06-45d5-93ac-f0de84ddadf2', '0719', '719', 'HVAC#8 - 실내온도 센서2 고장', 'Tc2', 'C', 'HVAC-실내온도 센서2 고장', 'C', 'HVAC', '객실 실내 온도센서2 고장 발생 +', '실내 온도센서2 고장현시', '온도센서 검지범위는 -45 ~ 85도(820 ~ 1,330Ω)인데, 2초 이상 검지범위를 벗어나는 경우 +', '온도센서 검지값이 2초 이상 허용온도 범위 내일 경우', '1) 마이콤 전원을 끈 상태에서 해당 센서의 결선을 해제하고 테스터기를 통해 센서의 저항이 820~1,330Ω을 벗어나는지 확인한다. +2) 만약 센서 저항이 정상인데도 고장이 지속될 경우 마이콤을 교체한다. +3) 만약 센서 저항에 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('fc6cfffd-b1b6-451a-b06e-eef53e3ec705', '1206', '1206', 'FDU#1 - 감지기3 고장', 'Tc1', 'C', 'FDU-감지기3 고장 (Car1~8)', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 “Detector1 State” 신호가 “10”이 되면 검지 +', '감지기고장상태현시(자동소거 안 됨)', ' +1) 감지기로부터 데이터 응답이 없는 경우 +2) 감지기로부터 수신된 데이터의 CRC가 맞지 않는 경우 +3) 감지기로부터 수신된 데이터의 ID가 송신 ID와 일치하지 않는 경우 +', 'FDU 전원 리셋 후 감지기로부터 정상적으로 데이터가 수신된 경우', '1) FDU 전원 리셋 후 고장 소거 여부 확인 +2) 정상동작중인 감지기와 위치 교환 후 FDU 전원 리셋 및 고장 상태 확인 +3) 동일한 감지기에서 고장 발생 시 감지기 교체 +4) 동일한 위치에서 고장 발생 시 감지기 라인 점검', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('fc7de935-ed1a-4b69-80d8-400602f211e2', '0739', '739', 'HVAC#8-전자접촉기 증발기2(CREF) 고장', 'Tc2', 'C', 'HVAC-전자접촉기 증발기2(CREF) 고장', 'C', 'HVAC', 'HVAC 냉방작동 중 CREF2 전자접촉기 고장 발생.', 'UNIT1 냉방 작동 불가', '냉방작동 중 2.5초 이상동안 CREF2 작동 feedback 신호가 수신되지 않는 경우', 'CREF2 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CREF2를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CREF2와 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('fc825637-a012-4b74-92be-63a178824437', '0125', '125', 'VVVF-FC 충전불량검지(FCD) (Car7)', 'M4', 'C', 'VVVF-FC 충전불량검지(FCD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT33의 Bit6 “FCD” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 'FC 충전불량검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치 기동시 FC전압이 1000V 이하일 경우 검지됨.', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반배전반의 VVVFIC nfb 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 FC전압에 이상이 있는지 확인한다. +3) 추진제어장치 내부 고전압부에 소손흔적이 있는지 확인한다. +4) LB Box 내부의 충전저항기의 소손이 없는지 확인한다. +5) FC에 연결된 버스바의 체결상태가 양호한지 확인한고, 버스바를 분리하여 FC의 Capacitance를 측정하여 이상이 없는지 확인한다. +6) 전압센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +7) SEN 보드의 동작상태를 시험기를 통해 확인한다. +8) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +9) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.71571+00', null, '다대48량(2015)', 'Rotem'), ('fc94c443-cd8f-44ca-a05b-ebb4c2f5b5b5', '0086', '86', '화재검지기 고장(Car1)', 'Tc1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('fca5c53a-4707-4881-a07f-ad95baeaf737', '1502', '1502', '기타장치용 DC 회로차단기 차단(Car4)', 'T1', 'W', null, null, 'TCMS', null, null, null, null, null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('fca821c2-a08e-4822-ab98-b343257f62f4', '1006', '1006', 'CMSB#8-입력 DC 과전압', 'Tc2', 'C', 'CMSB-입력 DC 과전압', 'C', 'CMSB', 'CMSB의 RS485 데이터 중 CMSB-TCMS SD TEXT3의 Bit7 “입력 DC 과전압” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 '입력 DC 과전압' 표시됨. +2) 바이패스 모드로 전환되고, CM 기동 시 '바이패스 기동'으로 표시됨.', '1) CMSB 내 콘덴서(DC-LINK) 충전 전압이 DC750V 이상 일 경우 검지됨.', '1) 차량 전원 OFF +2) CMSB 내부의 표시기패널 RESET 버튼 누름.', '0) 정상운행 후, 검수고에 입고하여 아래와 같이 조치한다. +1) 상기고장은 고장 소거 후, 재현시험을 진행하여 지속적으로 발생될 경우 아래와 같이 조치한다. +2) 차량전원 AC380V를 확인한다. +3) CMSB 제어기에서 DC_LINK 전압을 오 검지하는지 확인한다.', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('fcaa840a-842c-4fe1-ada5-e4e8b79810df', '0724', '724', 'HVAC#6 - 냉난방장치1 압력스위치1(DPS) 냉매부족', 'M3', 'C', 'HVAC-냉난방장치1 압력스위치1(DPS) 냉매부족', 'C', 'HVAC', '냉난방장치1 냉매 압력스위치1 저압 발생 +', 'UNIT1CYCLE1 냉방 기능 불가', 'UNIT1DSP1측 냉매압력이 30초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우 +', '냉매압력이 정상수치2±0.5(kgf/cm2) 이상 유지하도록 하고, 마이콤전원을 리셋', '1) 배전반 점검 커버를 열고 마이콤 전원을 리셋한 후, 냉방 가동 시, CREF2의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)을 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설 여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안 되는 것을 확인한 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('fcaf4642-e363-4c0a-ad38-2f973663a1bf', '0506', '506', 'DCU#1 6위(L3) - 출입문 입력 저전압', 'Tc1', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 “1”이 되면 검지 +', '저전압상태(출입문 동작이 심하게 느려지거나 작동조차 안 될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하 +', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('fcbee794-2d8f-4ca4-a93a-d0c1ba8a4a87', '0508', '508', 'DCU#2 1위(R1) - 출입문 모터/인코더 고장', 'M1', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 “Motor / Encoder failure” 신호가 “1”이 되면 +검지 +', '출입문 정상동작 불가', ' +1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우(인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터/인코더 회로 가 손상된 경우 +', '모터/인코더 및 DCU가 정상 상태이고, 전기적 연결 상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있는지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. ※ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. ? DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. ? DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) ? DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('fcc64154-021e-42d4-9f82-a0641fc17dfc', '1202', '1202', 'FDU#3 - 감지기1 고장', 'M2', 'C', 'FDU-감지기1 고장 (Car1~8)', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 “Detector1 State” 신호가 “10”이 되면 검지 +', '감지기고장상태현시(자동소거 안 됨)', ' +1) 감지기로부터 데이터 응답이 없는 경우 +2) 감지기로부터 수신된 데이터의 CRC가 맞지 않는 경우 +3) 감지기로부터 수신된 데이터의 ID가 송신 ID와 일치하지 않는 경우 +', 'FDU 전원 리셋 후 감지기로부터 정상적으로 데이터가 수신된 경우', '1) FDU 전원 리셋 후 고장 소거 여부 확인 +2) 정상동작중인 감지기와 위치 교환 후 FDU 전원 리셋 및 고장 상태 확인 +3) 동일한 감지기에서 고장 발생 시 감지기 교체 +4) 동일한 위치에서 고장 발생 시 감지기 라인 점검', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('fcc68130-5167-441a-a9e3-be10fb3336db', '0509', '509', 'DCU#2 2위(L1)-출입문 잠김 리미트 스위치 고장', 'M1', 'C', 'DCU-출입문 잠김 리미트 스위치 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit1 "DLS Failure” 신호가 "1"이 되면 검지.', '출입문 잠김 상태 확인 불가', '1) 출입문이 열림 상태에서 DLS가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DLS가 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DLS가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DLS 스위치가 정상적으로 작동되는지 확인한다. (DLS 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('fcee3733-4408-4e34-ba44-92cf21b1ee00', '0501', '501', 'DCU#1 3위(R2)-출입문 차단', 'Tc1', 'W', null, null, 'DCU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('fcfe1d3a-cf7e-48f4-bbe2-cbd4ba924966', '0734', '734', 'HVAC#3-전자접촉기 압축기(CRCM)3 고장', 'M2', 'C', 'HVAC-전자접촉기 압축기(CRCM)3 고장', 'C', 'HVAC', 'HVAC 냉방작동 중 CRCM3 전자접촉기 고장 발생.', '냉방 기능 저하(전냉방시 반냉방으로 작동)', '냉방작동 중 2.5초 이상동안 CRCM3 작동 feedback 신호가 수신되지 않는 경우', 'CRCM3 교체 또는 결선확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방배전반의 점검커버를 연다. +2) CRCM3을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRCM3과 연결된 결선상태를 확인하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우, 마이콤을 교체한다.', null, '3', '2025-10-12 01:21:36.923606+00', null, '로템40량(2018)-1단계', 'Rotem'), ('fd05429b-8874-40ba-aae4-8f332d3a37d9', '0067', '67', 'MAIN FUSE#2 DISCONNECTED(Car4)', 'T1', 'W', 'MAIN FUSE#2 DISCONNECTED(Car4)', 'W', '기타', '차량으로부터 AUX FUSE DISCONNECTED 신호 입력 시 +', 'VVVF 고압 차단으로 추진 불능', '해당 퓨즈 소손 +', '해당 퓨즈 교체 +회로 도면 : REC20210DX0', null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('fd16adc3-14b0-4348-a00d-84f8c4d7984b', '0510', '510', 'DCU#7 2위(L1) - 출입문 닫힘 리미트 스위치1 고장', 'M4', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 “DCS1 Failure(Leftt)” 신호가 “1”이 되면 검지 +', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('fd31dfdd-f162-4669-b4a6-0ec1be8f7833', '0745', '745', 'HVAC#8 - 전자접촉기 배기팬2(CRVF) 고장', 'Tc2', 'C', 'HVAC-전자접촉기 배기팬2(CRVF) 고장', 'C', 'HVAC', 'HVAC 환기 작동 중 CRVF2 전자접촉기 고장 발생 +', '환기 시 차량 배기팬2 운전 불가능', '환기 작동 중 2.5초 이상 동안 CRVF2 작동 feedback 신호가 수신되지 않는 경우 +', 'CRVF2 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CRVF2를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRVF2와 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('fd36e2ef-ac51-40a1-96a9-9934619d66f7', '0511', '511', 'DCU#1 6위(L3) - 출입문 닫힘 리미트 스위치2 고장', 'Tc1', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 “DCS2 Failure(Right)” 신호가 “1”이 되면 검지 +', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('fd3b3402-8d48-4fb2-8541-dccbede438ed', '0212', '212', 'BECU#7 - 1축 속도신호의 비정상', 'M4', 'C', 'BECU-1축속도신호의 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit3 “1축속도신호의 비정상” 신호가 “1”이 +되면 검지 +', '해당 차량 1축속도신호의 비정상 검지 현시 및 해당 차량 활주제어불가', '해당 차량의 1축속도센서 고장 발생 +', '해당 차량의 1축속도센서가 정상적일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('fd43da6d-1e47-45a4-a165-f04ba30d3614', '0718', '718', 'HVAC#6 - CO2 센서1 고장', 'M3', 'C', 'HVAC-CO2 센서1 고장', 'C', 'HVAC', '객실 CO2 센서1 고장 발생 +', 'CO2 센서1 고장현시', 'CO2 센서의 검지범위는 0 ~ 4,000ppm(2 ~ 10Vdc)인데, 1초 이상 출력전압이 2Vdc(0ppm) 미만으로 떨어지는 경우 +', 'CO2 센서 검지값이 1초 이상 2Vdc(0ppm) 이상 지속되는 경우', '1) 전원을 인가한 상태에서 CO2 센서 커버를 열고 테스터기를 통해 ‘OUT2' 단자와 ‘G' 단자 간의 전압이 2Vdc 미만인지 확인한다. +2) 만약 전압이 2Vdc 이상인데도 고장이 지속될 경우 마이콤을 교체한다. +3) 만약 전압이 2Vdc 미만으로 문제가 있을 경우, 센서를 교체한다. +4) 위 조치 후에도 문제가 지속될 경우, 승인도면을 통해 결선을 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('fd4483d1-c32a-48f7-b3a0-23da3af3f0c6', '0232', '232', 'BC 코크(차하#2) 차단(Car4)', 'T1', 'W', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('fd44d55f-849c-42a6-83f3-5b8fd5591501', '0505', '505', 'DCU#2 4위(L2) - 출입문 입력 고전압', 'M1', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 “1”이 되면 검지 +', '고전압 상태(그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상 +', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('fd53a711-1727-425c-b1df-e53095f8d507', '0710', '710', 'HVAC#8 - 냉난방장치2 압력스위치2(DPS) 고압', 'Tc2', 'D', 'HVAC-냉난방장치2 압력스위치2(DPS) 고압', 'D', 'HVAC', '냉난방장치2 냉매 압력스위치2 고압 발생 +', 'UNIT2CYCLE2 냉방기능불가', 'UNIT2DSP2측 냉매압력이 3초 이상 28±1(kgf/cm2) 이상 되는 경우 +', '냉매압력이 정상수치 15±0.7(kgf/cm2) 이하로 1초간 지속되는 경우', '1) 배전반 점검 커버를 열고 CRCM4의 부하측 전류를 측정하여 응축기 팬의 동작여부를 확인한다. +2) 응축기 코일의 전면에 이물질로 인한 막힘이 있는지 확인한다. +3) 응축기 팬 상부 그릴에 외부 이물질로 인한 막힘이 있는지 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('fd5fca78-ec4f-48a7-81f5-6994134198f9', '1504', '1504', '냉방장치용 AC 회로차단기 차단(Car8)', 'Tc2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('fd6876bc-2334-44b6-bc54-113e180bddad', '0519', '519', 'DCU#8 6위(L3) - ZVR 신호 에러', 'Tc2', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 “ZVR signal error” 신호가 “1”이 되면 검지 +', '출입문이강제로 닫히게 되고, 열림은 불가능', ' +1) 차량 ZVR 신호가 없는 상태(차량 주행상태)에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함. +', '해당 출입문 ZVR 신호 수신', '1) 차량 이 주행중이라면, 차량 이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('fd70c178-4a85-485c-8554-1e04ca3aa9db', '0225', '225', 'BECU#7 - 강제완해검지(CPRD)', 'M4', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('fd948c26-8061-48c2-8d43-e4bd53141b3c', '0209', '209', 'BECU#1 - 4축 속도신호의 비정상', 'Tc1', 'C', 'BECU-4축속도신호의 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit0 “4축속도신호의 비정상” 신호가 “1”이 +되면 검지 +', '해당 차량 4축속도신호의 비정상 검지 현시 및 해당 차량 활주제어불가', '해당 차량의 4축속도센서 고장 발생 +', '해당 차량의 4축속도센서가 정상적일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('fd9c4977-956c-4f4a-976a-295b326d02f6', '0702', '702', 'HVAC#5-냉난방장치2 압축기1 과부하', 'T2', 'C', 'HVAC-냉난방장치2 압축기1 과부하', 'C', 'HVAC', 'HVAC 냉방작동 중 냉난방장치2 압축기1 또는 응축기1 모터에 과부하 발생.', '냉방 기능 저하(전냉방시 반냉방으로 작동)', '1) 냉방작동 중 UNIT2의 압축기1 또는 응축기1 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRCM3과 연결된 THR3이 Trip 됨.', 'UNIT2의 압축기1 또는 응축기1 모터의 과부하 조건을 해소하여 정상 가능 상태로 만들고, THR3 및 마이콤 전원 리셋', '1) 냉난방배전반의 점검커버를 열고, THR3의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR4의 전류 세팅값이 11.5A에 맞춰져 있는지 확인하여, 아닐 경우, 십자 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동 시킨 후, THR3의 2차측 2,4,6 단자에서 각 단자간 상간 전압이 AC 380V으로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 압축기 및 응축기 단품 상태에서 점검을 한다. +7) THR3의 2차측 2,4,6 단자에서 각 단자간 권선저항이 모두 같은지 확인한다. (±10% 이하) (압축기1 및 응축기1 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT2의 압축기1 또는 응축기1 모터의 결선을 해제한 후 각 부품의 권선저항을 확인 후, 문제가 있는 부품을 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR3 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.999595+00', null, '로템40량(2018)-1단계', 'Rotem'), ('fda1412f-f94a-44a0-9c24-142b0f8976d6', '0423', '423', 'SIV#8-', 'Tc2', '0', null, null, '0', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('fda64515-05ec-4979-96ea-efdee222d175', '0738', '738', 'HVAC#1 - 전자접촉기 증발기3(CREF) 고장', 'Tc1', 'C', 'HVAC-전자접촉기 증발기3(CREF) 고장', 'C', 'HVAC', 'HVAC 냉방 작동 중 CREF3 전자접촉기 고장 발생 +', 'UNIT2 냉방 작동 불가', '냉방 작동 중 2.5초 이상 동안 CREF3 작동 feedback 신호가 수신되지 않는 경우 +', 'CREF3 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CREF3을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CREF3과 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('fdb1a12b-4118-4cb6-a4b0-2f69254d575b', '0201', '201', 'BECU#3 - 덤프밸브 고장(후미대차)', 'M2', 'C', 'BECU-덤프밸브고장(후미대차)', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit0 “덤프밸브고장(후미대차)” 신호가 “1”이 +되면 검지 +', '해당 차량 덤프밸브 고장(후미대차)검지 현시 및 해당 차량 활주제어 불가', '해당 차량 후미대차의 덤프밸브가 작동하지 않음. +', '해당 차량 후미대차의 덤프밸브가 정상작동 시 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('fdbf482d-4ec0-4361-9c82-48b2bd53e596', '0518', '518', 'DCU#8 4위(L2)-출입문 Enable 신호 에러', 'Tc2', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 "Enable signal error” 신호가 "1"이 되면 검지.', 'DCU 출입문 Enable 신호 에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) 취급시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함.', '해당출입문 enable 신호 수신', '1) AUTO/MCS 모드시에는 YARD모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인한다. (YARD/FMC 모드시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('fdcc0490-a43e-419f-b065-3b819c0ca579', '0077', '77', 'PWM 엔코더#1#2 전체 고장', 'Tc1', 'A', 'PWM엔코더 전체고장(TC1/TC2)', 'A', '기타', '차량으로부터 PWM ENCODER#1(#2) FAULT 신호 미입력 시 +', '1) 엔코더 1계 PWM 출력 고장 시 1계 고장에 해당되는 신호 출력 +2) 엔코더 2계로 자동 절체 +3) 엔코더 2계 PWM 출력 고장 시 1계, 2계 고장 모두 출력 +4) 엔코더 PWM 출력 신호 없음', '1) 엔코더 1계 PWM 출력 신호 이상 시 +2) 엔코더 2계 PWM 출력 신호 이상 시 +3) 엔코더 1계, 2계 PWM 출력 신호 이상 시 +4) 엔코더 수동절체버튼 3초 이상 조작 시 +', '1) 엔코더의 전원 차단 후 재투입하여 소거되는지 확인 +2) 수동절체버튼의 조작으로 인한 고장 출력 또한 전원 재투입으로 소거함', '1) 엔코더의 전원 차단 후 재투입하여 소거되지 않을 시 정상품으로 교체하여 정상동작 확인 +2) 교체된 고장품의 고장원인 분석 회로 도면 : REC10100DX0', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('fde38c82-cc53-43e9-b461-527abc05b5e0', '0215', '215', 'BECU#4 - 후미대차 AS 압력센서 고장', 'T1', 'C', 'BECU-후미대차 AS 압력센서 고장', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit6 “후미대차 AS 압력센서 고장” 신호가 +“1”이 되면 검지 +', '해당 차량 후미대차 AS 압력센서 고장검지 현시 및 해당 차량 정상적인 응하중제동제어 불가', '해당 차량의 후미대차 AS 압력센서(AS3, AS4) 고장 +', '해당 차량의 후미대차 AS 압력센서(AS3, AS4)가 정상일 경우 소거', 'BECU를 리셋(BECU CB OFF/ON)하여 소거 여부 확인, 지속발생 시 관제보고하고 지시에 따르시오.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('fde84cc7-6f50-4c82-a360-2aac2e913c60', '0128', '128', 'VVVF-IPM Z상 이상검지(GDFZ) (Car6)', 'M3', 'C', 'VVVF-IPM Z상 이상검지(GDFZ)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT34의 Bit2 “GDFZ” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 'IPM Z상 이상검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치 내부 IPM에 과전류, 과온이 검지될경우.', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반배전반의 VVVFIC nfb 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 견인전동기로 출력되는 3상의 전류치 확인함. +3) 특정상의 전류치가 비정상적일 경우 특정상에 해당되는 IPM, 전류센서, 모터결선을 확인한다. +4) 전류센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +5) SEN 보드의 동작상태를 시험기를 통해 확인한다. +6) IPM 전원공급기의 전원연결상태 또는 광케이블의 연결상태와 배선상태를 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.656536+00', null, '다대48량(2015)', 'Rotem'), ('fdf5c449-78a9-42a2-8513-840ac726bbd1', '0519', '519', 'DCU#5 6위(L3)-ZVR 신호 에러', 'T2', 'W', 'DCU-출입문 ZVR 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit7 "ZVR signal error” 신호가 "1"이 되면 검지.', '출입문이 강제로 닫히게 되고, 열림은 불가능', '1) 차량 ZVR 신호가 없는 상태 (차량 주행상태) 에서 열림 명령이 인가되는 에러 +2) ZVR 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ZVR 에러 검지함.', '해당출입문 ZVR 신호 수신', '1) 차량이 주행중이라면, 차량이 정차된 뒤 고장이 소거되는지 확인한다. +2) 차량 정차 후에도 고장소거가 안될 시, 차량 배전반의 ZVR 계전기가 정상적으로 작동되어 있는지 확인한다. +3) 해당 출입문으로 ZVR 신호가 인가되고 있는지 확인한다. +4) 전선 빠짐 등 결선상에 문제가 없는지 확인한다. +5) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '3', '2025-10-12 01:21:37.392739+00', null, '로템40량(2018)-1단계', 'Rotem'), ('fe0a68d8-63f1-4c0d-8948-39431ecfeaa7', '0125', '125', 'VVVF-FC 충전불량검지(FCD) (Car3)', 'M2', 'C', 'VVVF-FC 충전불량검지(FCD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT33의 Bit6 “FCD” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 'FC 충전불량검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치 기동시 FC전압이 1000V 이하일 경우 검지됨.', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반배전반의 VVVFIC nfb 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 FC전압에 이상이 있는지 확인한다. +3) 추진제어장치 내부 고전압부에 소손흔적이 있는지 확인한다. +4) LB Box 내부의 충전저항기의 소손이 없는지 확인한다. +5) FC에 연결된 버스바의 체결상태가 양호한지 확인한고, 버스바를 분리하여 FC의 Capacitance를 측정하여 이상이 없는지 확인한다. +6) 전압센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +7) SEN 보드의 동작상태를 시험기를 통해 확인한다. +8) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +9) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.656536+00', null, '다대48량(2015)', 'Rotem'), ('fe0f96ca-3805-4fe2-b6df-94aae81e1e83', '0181', '181', 'VVVF#7 - MCOK 투입불량(MCOKNC)', 'M4', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('fe114c70-f6c0-459b-a0ee-1bd645e269ea', '0514', '514', 'DCU#2 4위(L2)-출입문 닫힘 시간 초과', 'M1', 'C', 'DCU-출입문 닫힘시간 초과', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit2 "Close time out” 신호가 "1"이 되면 검지.', 'Close time out 현시 (출입문은 정상작동 가능)', '출입문 닫힘 동작시간이 7초 이상 지연됨 +1) 출입문 바닥면, 포켓 또는 개구부 사이에 출입문 작동을 방해하는 이물질이 있는 경우 +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동되어 있는 상태에서 장애물 감지를 하는 경우 출입문은 7초간 지속적으로 닫힘 동작을 시도 한 후, '장애물로 인한 닫힘실패' 고장과 함께 'Close time out' 고장이 함께 현시', '출입문이 7초 이내에 닫힘 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 차량 운전실의 '장애물 바이패스' 스위치가 작동된 상태인지 확인하고, OFF 한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('fe1782b8-0749-4206-9ddf-8418c3862464', '760', '760', 'CAB HVAC#1 - 코일센서 이상', 'Tc1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('fe181cbd-1df8-4854-abd0-133060002ac4', '0727', '727', 'HVAC#4 - 배기팬1 과부하', 'T1', 'C', 'HVAC-배기팬1 과부하', 'C', 'HVAC', 'HVAC 환기작동 중 차량 배기팬1 모터에 과부하 발생 +', '환기 시 차량 배기팬2 운전 불가능', ' +1) 냉방 작동 중 챠량 배기팬1 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRVF1와 연결된 THR9가 Trip 됨. +', '차량 배기팬1 모터의 과부하조건을 해소하여 정상 가능 상태로 만들고, THR9 및 마이콤 전원 리셋', '1) 냉난방 배전반의 점검커버를 열고, THR9의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR9의 전류 세팅값이 2.5A에 맞춰져 있는지 확인하여, 아닐 경우, (+) 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동시킨 후, THR9의 2차측 2, 4 단자와 6 단자 사이의 전압이 DC 100V로 정상 측정 되는지 확인한다. +5) 만약 전압이 측정되지 않을 시, 전원이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 위 조치 후에도 문제가 지속될 경우, THR9 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('fe27d661-9718-42c5-a823-6c1a44ddda1f', '0507', '507', 'DCU#5 1위(R1)-초기화 실패', 'T2', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 "Calibration failure” 신호가 "1"이 되면 검지.', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터고장, 장애물 감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우', '초기화 실패를 야기한 고장 코드를 확인하여 조치 후, 재 닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '3', '2025-10-12 01:21:36.55262+00', null, '로템40량(2018)-1단계', 'Rotem'), ('fe3d92b4-f7c6-4725-83fb-e80793f2b410', '0510', '510', 'DCU#7 6위(L3)-출입문 닫힘 리미트 스위치1 고장', 'M4', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 "DCS1 Failure(Leftt)” 신호가 "1"이 되면 검지.', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', '1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO접점:1-2, NC접점:3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.750864+00', null, '로템40량(2018)-1단계', 'Rotem'), ('fe3e7252-edd2-4acc-902b-063209bde6d1', '0118', '118', 'VVVF-FC 과전압검지(FCOVD) (Car3)', 'M2', 'C', 'VVVF-FC 과전압검지(FCOVD)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT32의 Bit5 “FCOVD” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 'FC 과전압검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치 내부 FC전압이 2100V 이상일 경우 검지됨.', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반배전반의 VVVFIC nfb 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 FC전압에 이상이 있는지 확인한다. +3) 추진제어장치 내부 고전압부에 소손흔적이 있는지 확인한다. +4) FC에 연결된 버스바의 체결상태가 양호한지 확인한고, 버스바를 분리하여 FC의 Capacitance를 측정하여 이상이 없는지 확인한다. +5) 전압센서와 추진제어장치 제어기 SEN 보드에 연결되는 저전압 배선상태를 확인한다. +6) SEN 보드의 동작상태를 시험기를 통해 확인한다. +7) 견인전동기 각상의 절연상태 및 각상과 접지간의 절연상태를 확인한다. +8) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.656536+00', null, '다대48량(2015)', 'Rotem'), ('fe4d5d2e-d631-4792-aeb4-1a37953da26f', '0747', '747', 'HVAC#1 - 전자접촉기 차량히터2(CRRHT) 고장', 'Tc1', 'C', 'HVAC-전자접촉기 차량 히터2(CRRHT) 고장', 'C', 'HVAC', '객실 난방기 작동 중 CRRHT2 전자접촉기 고장 발생 +', '객실 전난방 시 1/3난방만 작동', '객실 전난방 작동 중 2.5초 이상 동안 CRRHT2 작동 feedback 신호가 수신되지 않는 경우 +', 'CRRHT2 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) CRRHT2를 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, CRRHT2와 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('fe55fd6b-790f-4827-8402-a0b21c775993', '0517', '517', 'DCU#1 1위(R1)-출입문 장애물로 인한 열림 실패', 'Tc1', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Open failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘상태로 대기', '도어 열림 중 3회 장애물 감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 열림 시, 장애물 감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.261435+00', null, '로템40량(2018)-1단계', 'Rotem'), ('fe565596-e4ac-4edb-8877-867cd5edb4e8', '0705', '705', 'HVAC#1-냉난방장치2 증발기2 과부하', 'Tc1', 'C', 'HVAC-냉난방장치2 증발기2 과부하', 'C', 'HVAC', 'HVAC 냉방작동 중 냉난방장치2 증발기 모터에 과부하 발생.', 'UNIT2 냉방 기능 불가', '1) 냉방작동 중 UNIT2의 증발기 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CREF4와 연결된 THR8이 Trip 됨.', 'UNIT2의 증발기 모터의 과부하 조건을 해소하여 정상 가능 상태로 만들고, THR8 및 마이콤 전원 리셋', '1) 냉난방배전반의 점검커버를 열고, THR8의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR8의 전류 세팅값이 3A에 맞춰져 있는지 확인하여, 아닐 경우, 십자 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동 시킨 후, THR8의 2차측 2,4,6 단자에서 각 단자간 상간 전압이 AC 380V으로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 증발기 단품 상태에서 점검을 한다. +7) THR8의 2차측 2,4,6 단자에서 각 단자간 권선저항이 모두 같은지 확인한다. (±10% 이하) (증발기 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT2의 증발기 모터의 결선을 해제한 후 4극 및 6극 모터의 권선저항을 확인 후, 문제가 있을 겨우, 증발기 모터를 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR8 부품을 교체한다.', null, '3', '2025-10-12 01:21:36.841259+00', null, '로템40량(2018)-1단계', 'Rotem'), ('fe6fea6d-ffd6-4d39-932b-d4ca93d53dac', '0032', '32', '주간제어기 비상제동 취급', 'Tc2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('fe79307b-e248-4c34-ab18-1aa44f2c29be', '0506', '506', 'DCU#4 3위(R2)-출입문 입력 저전압', 'T1', 'W', 'DCU-입력저전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit5 “Low Voltage” 신호가 "1"이 되면 검지.', '저전안 상태 (출입문 동작이 심하게 느려지거나 작동조차 안될 수 있음.)', '차량으로부터 인가되는 공급전원이 70Vdc 이하', '차량으로부터 인가되는 공급전원이 70Vdc 초과', '1) 차량으로부터 인가되는 공급전원이 실제로 70Vdc 이하로 입력되는지 확인한다. +2) 차량전원이 정상전압일 경우, DCU 의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.466113+00', null, '로템40량(2018)-1단계', 'Rotem'), ('fe8032c6-f913-4cf8-93a4-9d690828035e', '0505', '505', 'DCU#1 2위(L1) - 출입문 입력 고전압', 'Tc1', 'W', 'DCU-입력고전압', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT3의 Bit4 “High Voltage” 신호가 “1”이 되면 검지 +', '고전압 상태(그리 높지 않은 고전압 상태에서는 출입문 작동에 문제가 없으나, 140Vdc 이상의 큰 전압이 인가될 경우, DCU의 PCB 기판이 손상될 수 있음.)', '차량으로부터 인가되는 공급전원이 125Vdc 이상 +', '차량으로부터 인가되는 공급전원이 125Vdc 미만', '1) 차량으로부터 인가되는 공급전원이 실제로 125Vdc 이상으로 입력되는지 확인한다. +2) 차량 전원이 정상전압일 경우, DCU의 전원을 reset 하여 고장이 소거되는지 확인한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('fe8ab4b6-7489-4427-a5b4-ce03dd6e0b0f', '0138', '138', 'VVVF#2-입력과전류 검지(ISOC)', 'M1', 'C', 'VVVF-입력과전류 검지(ISOC)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT29의 Bit3 “ISOC” 신호가 "1"이 되면 검지.', null, '1) 입력전류 1800A 이상 검지 시 경고장 발생 +2) 1분 이내 3회 발생 시 중고장 발생.', '1) 경고장', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치 고장기록을 수집하여 추진제어장치에 입력되는 전류치 확인함. +3) 입력되는 전류치가 비정상적일 경우 추진제어장치 입력회로(HSCB, LB1,2, CHRe)를 점검한다.. +4) 추진제어장치 내의 전류센서와 추진제어장치 제어기 PUZ 보드에 연결되는 저전압 배선상태를 확인한다. +5) 추진제어장치 시험기를 이용하여 TCU(통합 제어장치)의 이상여부를 확인한다. +6) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('fe8f33a4-dba2-4a0e-af13-791933b27694', '0006', '6', 'DU 통신고장', 'Tc2', 'B', 'DU 통신고장(TC2)', 'A', 'TCMS', '운전실 TCMS 화면의 통신고장 +', ' +1) 후부차 TCMS 화면의 통신불능시 화면에 현시.(선두차 TCMS 화면 정상시 정상 운행 가능) +2) 화면상 정보 표출 불가(시간정보 정지 등), 또는 전원 LED OFF 상태로 아무 화면도 보이지 않음. +', ' +1) CU에서 DU의 통신정보를 3초이상 수신받지 못할 경우 해당 고장 현시. +', 'DU가 정상적으로 통신을 재개할 경우 소거됨. +', '1) DU전원차단기 리셋(OFF->ON) 실시. +2) 전원 LED가 OFF 되어 있다면 DU 후부의 전원커넥터 체결 등을 확인 +3) 전원공급이 정상이고 화면도 정상적으로 부팅이 되는데 차량 정보 현시가 되지 않으면, DU 후부의 통신커넥터 체결 등을 확인. (통신 커넥터 체결이 정상이라면, CU가 정상인지 확인) +4) 위 +3)번의 상황에서 모두 정상이라면, DU 상단의 CF카드를 교체 +5) 위 조건이 모두 맞지 않으면 DU를 교체', null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('fe98f76d-87f0-4550-83e5-60baa8ca209a', '0511', '511', 'DCU#6 6위(L3) - 출입문 닫힘 리미트 스위치2 고장', 'M3', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 “DCS2 Failure(Right)” 신호가 “1”이 되면 검지 +', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('fe9a9de0-6f93-47ef-9e4d-82b3a868310a', '0212', '212', 'BECU#1-1축속도신호의 비정상', 'Tc1', 'C', 'BECU-1축속도신호의 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT2의 Bit3 “1축속도신호의 비정상” 신호가 "1"이 되면 검지.', '해당 차량 1축속도신호의 비정상 검지 현시 및 해당 차량 활주제어 불가.', '해당 차량의 1축 속도센서 고장 발생.', '해당 차량의 1축 속도센서가 정상적일 경우 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('fe9d97bc-c7b0-47da-96a3-a835d0b051ee', '0507', '507', 'DCU#5 4위(L2) - 초기화 실패', 'T2', 'C', 'DCU-초기화 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit5 “Calibration failure” 신호가 “1”이 되면 검지 +', '초기화가 실패하여 정상적인 출임문 열림/닫힘이 불가능', 'DCU 초기화 동작 중, 모터 고장, 장애물감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우 +', '초기화 실패를 야기한 고장코드를 확인하여 조치 후, 재닫힘 명령을 주거나 DCU 전원 reset', '1) 초기화 실패 고장이 현시되면서 동시에 초기화 실패를 야기한 고장 코드를 확인한다. +2) 해당 고장 코드의 조치방법을 참고하여 고장이 사라지도록 조치한다. +3) DCU의 전원을 reset하여 초기화 동작이 정상적으로 완료되는지 확인한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('fea0c3dd-6443-4e2a-a8a6-3edb43ffe2f5', '1210', '1210', 'FDU#8 - 메모리 고장', 'Tc2', 'C', 'FDU-메모리 고장', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT5의 Bit6 “Memory Fault” 신호가 “1”이 되면 검지 +', '1) Memory Fault 현시 +2) FDU의 이벤트 기록 및 읽기 동작 안 됨. +3) FDU 환경설정 정보 로딩 실패(차량 번호, 주차시간, 절전시간 등의 설정값을 기본값으로 로딩)', '메모리 연결 포트의 이상 혹은 배드섹터 발생(메모리 접근 및 읽기, 쓰기가 실패한 경우) +', '메모리의 접근 및 읽기, 쓰기 성공', '1) FDU의 전원을 리셋하여 소거여부 확인 +2) 문제가 지속될 경우, 수신기 교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('fea3de6a-d43d-483a-b0af-5bc86c84e876', '1205', '1205', 'FDU#1-감지기3 화재감지', 'Tc1', 'W', 'FDU-감지기3 화재감지', 'W', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT3의 "Detector1 State” 신호가 "11"이 되면 검지.', '화재상태 현시(자동 소거 안됨)', '하기 2가지 조건을 모두 만족하여야 화재신호가 출력 됨(연동모드 동작). +1) 이웃한(앞 혹은 뒤에 위치한) 감지기 중 하나의 감지기라도 주의 혹은 화재상태에 있어야 함. +2) Detector1(해당 감지기)에서 측정된 연기농도가 15% 이상이거나 온도가 65℃ 이상인 경우', '1) FDU의 복귀버튼 조작시 +2) FDU 전원 리셋시', '1) 해당 감지기 위치의 화재 발생 여부 확인 +2) 화재 오 감지일경우 FDU의 복귀버튼 취급 +3) 오감지일경우 감지기의 청소주기 확인(내부 먼지 제거)', null, '3', '2025-10-12 01:21:37.164878+00', null, '로템40량(2018)-1단계', 'Rotem'), ('feac9653-674d-4417-92ae-ccb28c54089e', '0831', '831', '실내카메라#1(SCAM) 고장(Car#3)', 'M2', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('fec0c7c8-8306-4668-ab55-d31bddaede32', '0085', '85', '화재검지(Car8)', 'Tc2', 'W', null, null, 'FDU', null, null, null, null, null, null, '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('fec5dd2f-7aa0-4bc6-a91a-cded65454d7a', '1209', '1209', 'FDU#4-스위치 고장', 'T1', 'C', 'FDU-스위치 고장', 'C', 'FDU', 'FDU의 RS485 데이터 중 FDU-TCMS SD TEXT5의 Bit4 “Switch Fault” 신호가 "1"이 되면 검지.', 'Switch Fault 현시 및 FDU의 조작 버튼 동작 안됨(화재 검지 및 기타 기능에는 상관없음)', '1) FDU가 부팅될때 스위치가 눌려진 상태(3.3V 전압이 인가된 상태)인 경우 +2) FDU가 부팅될때 스위치 고장으로 인하여 항상 눌러진 상태(3.3V 전압이 인가된 상태)에 있는 경우.', 'FDU가 부팅될때 스위치가 눌려진 상태(3.3V 전압이 인가된 상태)가 아닌 경우 +조치조건 : +1) 고장이 발생한 수신기의 스위치 상태 확인 및 점검 +2) FDU의 전원을 리셋하여 소거여부 확인 +3) 문제가 지속될 경우, 수신기 교체', null, null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('fec663be-dc4c-41a1-a5a0-a1aca68bb20e', '0172', '172', 'VVVF#2 - 접지검지(GRD)', 'M1', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('fecec933-7e47-477f-a78a-2b6e2c2cb5df', '0704', '704', 'HVAC#6 - 냉난방장치1 압축기1 과부하', 'M3', 'C', 'HVAC-냉난방장치1 압축기1 과부하', 'C', 'HVAC', 'HVAC 냉방 작동 중 냉난방장치1 압축기1 또는 응축기1 모터에 과부하 발생 +', '냉방 기능 저하(전냉방 시 반냉방으로 작동)', ' +1) 냉방 작동 중 UNIT1의 압축기1 또는 응축기1 모터에 과부하 발생 +2) 과부하 발생 시, 냉난방 배전반 CRCM1과 연결된 THR1이 Trip 됨. +', 'UNIT1의 압축기1 또는 응축기1 모터의 과부하조건을 해소하여 정상 가능 상태로 만들고, THR1 및 마이콤 전원 리셋', '1) 냉난방 배전반의 점검커버를 열고, THR1의 reset 버튼을 눌러 과부하 계전기를 리셋시킨다. +2) THR4의 전류 세팅값이 11.5A에 맞춰져 있는지 확인하여, 아닐 경우, (+) 드라이버를 이용하여 세팅값을 맞춘다. +3) 마이콤 전원을 리셋시키기 위해 CBHVAC OFF한 후, 다시 ON 시킨다. +4) 냉방을 가동시킨 후, THR1의 2차측 2, 4, 6 단자에서 각 단자 간 상간 전압이 AC 380V로 정상 측정되는지 확인한다. +5) 만약, 각 상간 전압 중 하나라도 전압이 측정되지 않을 시, 3상 전원 중 한개 상이 빠져 있는 상태로, 전원을 내리고, 결선상태를 확인하여 조치한다. +6) 조치 후에도 동일한 문제가 재발될 경우, 차량의 가선 및 DC 전원을 끄고, 압축기 및 응축기 단품 상태에서 점검을 한다. +7) THR1의 2차측 2, 4, 6 단자에서 각 단자 간 권선저항이 모두 같은지 확인한다. (±10% 이하) (압축기1 및 응축기1 모터의 권선저항 확인) +8) 만약 각 권선저항에 문제가 있을 경우, UNIT1의 압축기1 또는 응축기1 모터의 결선을 해제한 후 각 부품의 권선저항을 확인 후, 문제가 있는 부품을 교체한다. +9) 위 조치 후에도 문제가 지속될 경우, THR1 부품을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('fed06ae8-d452-4e16-a746-108439503efa', '0316', '316', 'ATC#8-', 'Tc2', '0', null, null, '0', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.154536+00', null, '로템40량(2018)-1단계', 'Rotem'), ('fefc812e-27c8-41fa-83ec-395ea4c7b195', '1200', '1200', 'FDU#7 통신고장', 'M4', 'B', 'FDU 통신고장', 'B', 'FDU', 'FDU와 TCMS 간 RS485 통신고장이 검지되면 발생 +', '화면상 FDU의 화재검지신호 등의 데이터가 반응하지 않음.', 'FDU 통신고장 또는 통신케이블문제 +', 'TCMSSDR 신호에 의해 FDU로부터 SD 신호가 정상 수신된 경우', '1) FDU 및 TCMS의 전원을 리셋하여 소거여부 확인 +2) 통신 고장이 발생하지 않은 다른 차량의 수신기와 교체하여 소거 여부 확인(고장이 수신기를 따라가는지 확인) +3) TCMS와 FDU간의 통신계통 점검 및 FDU NFB 점검 +4) 문제가 지속될 경우, 수신기 교체', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ff005e49-0212-4b5f-91f1-d0ef30c720ee', '0724', '724', 'HVAC#5 - 냉난방장치1 압력스위치1(DPS) 냉매부족', 'T2', 'C', 'HVAC-냉난방장치1 압력스위치1(DPS) 냉매부족', 'C', 'HVAC', '냉난방장치1 냉매 압력스위치1 저압 발생 +', 'UNIT1CYCLE1 냉방 기능 불가', 'UNIT1DSP1측 냉매압력이 30초 이상 0.5±0.3(kgf/cm2) 이하로 떨어지는 경우 +', '냉매압력이 정상수치2±0.5(kgf/cm2) 이상 유지하도록 하고, 마이콤전원을 리셋', '1) 배전반 점검 커버를 열고 마이콤 전원을 리셋한 후, 냉방 가동 시, CREF2의 부하측 전류를 측정하여 증발기 팬의 동작여부를 확인한다. +2) 차량의 리턴 그릴을 확인하여 이물질이나 먼지가 많은 경우 청소를 한다. +3) 냉방기 상부 커버(증발구간)을 개방한 뒤 증발기 코일 전면에 이물질 또는 동결에 의한 막힘 여부를 확인한다. +4) 위 조치 후에도 문제가 지속될 경우, 냉매 누설 여부를 확인하고, 냉매가 빠져 있는 경우, 냉매를 충진한다. +5) 냉매 충진 후 누설이 안 되는 것을 확인한 후에도 문제가 지속될 경우, 압력스위치를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ff3779e2-2116-409d-8ae5-3ef56406fe30', '0508', '508', 'DCU#2 5위(R3) - 출입문 모터/인코더 고장', 'M1', 'B', 'DCU-출입문 모터/인코더 고장', 'B', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit4 “Motor / Encoder failure” 신호가 “1”이 되면 +검지 +', '출입문 정상동작 불가', ' +1) 출입문 열림 또는 닫힘 동작 시, 인코더 펄스가 감지되지 않는 경우(인코더 커넥터 빠짐 등) +2) 출입문 열림 또는 닫힘 동작 시, DCU가 모터에 전원을 인가하는데 feedback 전류가 없는 경우 (모터 커넥터 빠짐 등) +3) 실제 모터 또는 인코더가 고장인 경우 +2) DCU 내부의 모터/인코더 회로 가 손상된 경우 +', '모터/인코더 및 DCU가 정상 상태이고, 전기적 연결 상태가 정상', '1) 모터 및 인코더 커넥터가 분리되어 있거나 전선 혹은 핀이 빠져 있는지 확인하여 조치한다. +2) 결선상에 문제가 없을 경우, 모터 어셈블리를 교체한다. +3) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다. ※ 본 고장은 중고장으로, 고장 조치 완료가 되어도, DCU의 reset 버튼을 누르거나 전원을 ON/OFF 해서는 고장 소거가 되지 않으므로 아래 중고장 reset 방법에 따라 고장 소거를 완료한다. ? DCU의 ‘TRAIN’ / ‘LOCAL’ 스위치를 ‘LOCAL’로 이동시킨다. ? DCU의 ‘OPEN’ 버튼을 3초간 누른다. (중고장 reset 완료) ? DCU의 reset 버튼을 누르거나, 전원을 ON/OFF 하여 DCU를 reset 한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ff40d783-4997-465c-96ca-e99e280922c3', '1600', '1600', '미세먼지감지센서 모듈#1 통신고장', 'Tc1', 'C', '미세먼지감지센서 모듈 통신고장', 'C', 'TCMS', '미세먼지감지센서 모듈과 TCMS간 RS485 통신고장이 검지되면 발생.', '화면상 미세먼지센서 값 등의 데이터가 반응하지 않음.', '1) 미세먼지감지센서 모듈 전원 OFF +2) 통신연결 불량 +3) 해당 모듈이 검수요원에 의해 firmware 업데이트 중인 경우', '미세먼지 감지센서 모듈의 전원이 정상상태이고, 통신라인 연결상태가 정상', '1) 1호차 혹은 8호차 통로쪽 상부 점검커버를 열고, 미세먼지 감지센서 모듈이 정상적으로 켜저 있는지 확인한다. +2) 만약 미세먼지 감지센서 모듈의 전원이 꺼져 있다면, 모듈 측면의 전원 스위치를 동작시켜 정상적으로 켜지는지 확인한다. +3) 미세먼지 감지센서 모듈이 정상적으로 켜져 있는데도 지속적으로 통신고장이 검지되면, CU가 정상적으로 켜져 있는지 확인한다. +4) 그래도 문제가 지속되면 해당 차량의 통신커넥터를 확인하여 문제가 있을 경우, 조치한다. +5) 위 조치 후에도 문제가 지속될 경우, 미세먼지 감지센서 모듈을 교체한다.', ' +REC40400HN0', '3', '2025-10-12 01:21:37.578803+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ff45c55d-36b3-42cc-b6dc-1862e19e799f', '0520', '520', 'DCU#6 3위(R2) - 이중계 절체 동작', 'M3', 'C', 'DCU-이중계 절체 동작', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 Bit3 “Module switchover” 신호가 “1”이 되면 검지 +', '이중계 절체 동작', ' +1) 해당 출입문의 ‘A' 모듈에서 중고장(모터/인코더 에러) 이 발생된 경우 +2) DCU의 ‘A' 모듈 또는 ‘B' 모듈의 전원이 꺼진 경우 +', '중고장 에러 소거 후 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상 해결이 안 될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, ‘A'모듈 및 ‘B'모듈 모두 업로딩 할 것)', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ff62434f-a4a6-48ab-8b17-ded97eb7ffe3', '1601', '1601', '미세먼지감지센서 모듈#8-센서고장', 'Tc2', 'C', '미세먼지감지센서 모듈-센서고장', 'C', 'TCMS', '미세먼지감지센서 모듈이 센서 값 입력 불량 시 발생.', '공기청정기 동작 불가', '1) 미세먼지센서 신호 입력값이 정상 범위를 벗어남', '미세먼지센서 모듈에서 미세먼지센서 신호 입력값이 정상 범위(4~20mA) 이내', '1) 1호차 혹은 8호차 통로쪽 상부 점검커버를 열고, 미세먼지 감지센서 모듈 FND 창에 농도가 정상적으로 현시되는지 확인한다. +2) 미세먼지 감지센서 모듈 FND 창에 농도가 정상적으로 현시되지 않고 F.01이 현시된다면, 모듈에 연결된 배선이 정상적인지 확인한다. +3) 모듈에 연결된 배선에 이상이 없다면, 미세먼지 센서의 배선이 정상적인지 확인한다. +4) 배선이 정상이라면, 미세먼지 센서를 교체한다. +5) 센서 교체 후에도 문제가 지속될 경우, 미세먼지 감지센서 모듈을 교체한다.', null, '3', '2025-10-12 01:21:37.578803+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ff7d1ff3-27c8-4769-a58c-b54045198eb6', '0061', '61', 'MAIN FUSE#1 DISCONNECTED(Car4)', 'T1', 'W', 'MAIN FUSE#1 DISCONNECTED(Car4)', 'W', 'TCMS', '차량으로부터 AUX FUSE DISCONNECTED 신호 입력시', 'VVVF고압 차단으로 추진 불능', '해당 퓨우즈 소손', '해당 퓨우즈 교체', null, ' +REC20210HN0', '3', '2025-10-12 01:21:35.775843+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ff853222-4717-48fb-bfa4-2cc1ac744a69', '0521', '521', 'DCU#5 6위(L3)-모듈 상태 이상', 'T2', 'C', 'DCU-모듈 상태 이상', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT2의 A/B module status 신호가 "01"또는 "00"이 되면 검지.', '이중계절체동작', '1) 해당 출입문의 'A'모듈에서 중고장 (모터/인코더 에러) 이 발생된 경우 +2) DCU의 'A'모듈 또는 'B'모듈의 전원이 꺼진 경우', '중고장 에러 소거 후 하고 DCU 전원을 리셋', '1) 중고장 발생으로 해당 에러가 발생된 경우, 중고장 에러를 소거 후 DCU 전원을 리셋한다. +2) DCU 전원이 꺼져서 해당 에러가 발생된 경우, DCU의 전원을 reset하여 고장이 소거되는지 확인한다. +3) 전원 reset 후에도 증상해결이 안될 경우, 최종 firmware 파일을 업로딩 한다. (firmware 업로딩 시, 'A'모듈 및 'B'모듈 모두 업로딩 할 것)', null, '3', '2025-10-12 01:21:37.489797+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ff8e7ed5-8ad9-4ff5-beed-2339fa1dd130', '1411', '1411', 'BMS#1-충전고온(COT, 45도이상)', 'Tc1', 'D', 'BMS-충전고온(COT)', 'D', 'BMS', '해당차량의 배터리 온도가 57도이상이 되면 검지', '차량 배터리 충전고온 검지 후, 60도이상이면 충전 접촉기(CK)가 차단된다.', '배터리 충전고온 (57도 이상).', '배터리 충전고온 정상범위로 회복 (55도 이하)', '1) 배터리 NFB 상태 확인 +2) 이상이 없으면 차량 전체를 리셋한다. +3) 차량 리셋 후에도 동일고장이면 사령실과 연락하여 조치를 취한다 (배터리를 상온조건으로 만든다.)', null, '3', '2025-10-12 01:21:37.278559+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ff928243-b1f5-4630-8e77-d806100b33b3', '0224', '224', 'BECU#4-파트너차 ECU 고장(PECUF)', 'T1', 'C', null, null, 'BECU', null, null, null, null, null, null, '3', '2025-10-12 01:21:36.026779+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ff943b5b-b314-4230-9567-2a80c48c0537', '0205', '205', 'BECU#3-회생제동요구 비정상', 'M2', 'C', 'BECU-회생제동요구 비정상', 'C', 'BECU', 'BECU의 RS485 데이터 중 BECU-TCMS SD TEXT1의 Bit4 “회생제동요구 비정상” 신호가 "1"이 되면 검지.', '해당 차량 회생제동요구 비정상 검지 현시.', '해당 차량의 회생제동요구 출력이 정상범위를 벗어남.', '해당 차량 회생제동요구 출력이 정상범위로 복귀 시 소거.', 'BECU를 리셋(BECU CB OFF/ON) 하여 소거 여부 확인. 지속발생시 관제보고하고 지시에 따르시오.', null, '3', '2025-10-12 01:21:35.902678+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ff9d071a-de37-4e6a-962e-74750d6e4445', '0742', '742', 'HVAC#6 - 전자접촉기 보조히터3(AHEK) 고장', 'M3', 'C', 'HVAC-전자접촉기 보조히터3(AHEK) 고장', 'C', 'HVAC', 'HVAC 보조난방기 작동 중 AHEK3 전자접촉기 고장 발생 +', 'UNIT2 보조난방기 전난방 시 반난방만 작동', '보조난방기 작동 중 2.5초 이상 동안 AHEK3 작동 feedback 신호가 수신되지 않는 경우 +', 'AHEK3 교체 또는 결선 확인 후, 마이콤 전원 리셋', '1) 차량의 가선 및 DC 전원을 끄고, 냉난방 배전반의 점검커버를 연다. +2) AHEK3을 교체한 후, 전원을 투입하여 동일 문제가 발생되는지 확인한다. +3) 신규 제품으로 교체한 뒤에도 동일 문제가 발생될 경우, AHEK3과 연결된 결선상태를 확인 하여 조치한다. +4) 위 조치 후에도 문제가 지속될 경우 마이콤을 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ffb82ca0-71d9-4b90-a221-be6354503277', '0510', '510', 'DCU#8 2위(L1) - 출입문 닫힘 리미트 스위치1 고장', 'Tc2', 'C', 'DCU-출입문 닫힘 리미트 스위치1 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit3 “DCS1 Failure(Leftt)” 신호가 “1”이 되면 검지 +', '출입문 왼쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS1이 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS1이 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS1이 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS1 스위치가 정상적으로 작동되는지 확인한다. (DCS1 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ffc243a0-af71-44d2-8845-5afc7bc92e00', '0518', '518', 'DCU#8 3위(R2) - 출입문 Enable 신호 에러', 'Tc2', 'W', 'DCU-출입문 Enable 신호 에러', 'W', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit6 “Enable signal error” 신호가 “1”이 되면 검지 +', 'DCU 출입문Enable신호에러 고장 현시(출입문 열림은 불가능하고 닫힘은 가능)', '차량 enable 신호가 없는 상태에서 열림 명령이 인가되는 에러 +1) AUTO/MCS 모드 시에는 신호장치로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 명령이 있을 때(출입문 열림 버튼 취급 또는 신호장치로부터의 출입문 열림 명령 신호) DCU에서 검지함. +2) YARD/FMC 모드 시에는 차량으로부터의 RDOE/LDOE(Right/Left Door Enable) 신호가 미인가된 상태에서 출입문 열림 버튼이 취급되었을 때 DCU에서 검지함. +3) HCR 미투입 상태(선두차 미지정상태)에서 출입문 열림 명령(출입문 열림버튼 취급 또는 신호 장치로부터의 출입문 열림 명령 신호) 취급 시 DCU에서 검지함. +4) 상기 ENABLE 신호가 없는 상태에서 검수원에 의해 출입문 엔진에 위치한 개별 출입문 열림 버튼을 누르는 경우 DCU에서 ENABLE 에러 검지함. +', '해당 출입문 enable 신호수신', '1) AUTO/MCS 모드 시에는 YARD 모드 또는 FMC 모드로 변경 후, 해당 고장이 소거되는지 확인 한다. (YARD/FMC 모드 시에는 RDOE/LDOE 신호가 지속 유지되므로 해당고장은 소거됨) +2) HCR 투입(선두차 지정)후 해당 고장이 소거되는지 확인한다. +3) 위 조건에도 고장이 소거되지 않을 경우, 해당 DCU를 리셋한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ffc505b2-f180-466c-999c-3d46cf9e66f2', '0502', '502', 'DCU#5 2위(L1) - 출입문 장애물검지', 'T2', 'W', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ffcc6a5d-1e95-4548-a7cd-a29504c504b5', '0179', '179', 'VVVF#7 - LB2 투입불량(LB2NC)', 'M4', 'C', null, null, null, null, null, null, null, null, null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'), ('ffe61342-3c63-48a5-9f8c-bd6dcbcfe4c9', '0517', '517', 'DCU#2 5위(R3)-출입문 장애물로 인한 열림 실패', 'M1', 'C', 'DCU-출입문 장애물로 인한 열림 실패', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT5의 Bit4 "Open failure due to obstacle” 신호가 "1"이 되면 검지.', '3회 재닫힘 및 재열림을 시도한 후, 출입문 완전 닫힘상태로 대기', '도어 열림 중 3회 장애물 감지로 인해 열림 완료 실패(물리적 장애물, 기구 부품 불량, DCU 불량)', '출입문 열림 시, 장애물 감지 없이 열림 완료', '1) 출입문 구동부, 바닥면, 포켓 또는 개구부 사이에 이물질이 끼어 있는지 확인하여 조치한다. +2) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '3', '2025-10-12 01:21:36.372865+00', null, '로템40량(2018)-1단계', 'Rotem'), ('ffe6c7ca-0902-45af-9bd1-2af23dd24b47', '0112', '112', 'VVVF-배터리 전원이상검지(BPSF) (Car3)', 'M2', 'C', 'VVVF-배터리 전원이상검지(BPSF)', 'C', 'VVVF', 'VVVF의 RS485 데이터 중 VVVF-TCMS SD TEXT31의 Bit7 “BPSF” 신호가 "1"이 되면 검지.', '1) TCMS 화면 하단 또는 고장화면에 '배터리 전원이상검지' 표시됨. +2) 추진제어장치는 상기 고장검지 후 자동 재기동 실시함. +3) 자동 재기동 후 동일고장이 반복되어 발생하지 않을 경우 정상운행 계속됨. +4) 상기 고장이 3분에 3회 이상 또는 지속적으로 유지될 경우 추진제어장치 중고장이 발생된. +5) 중고장이 발생되면 TCMS 일반화면에 추진제어장치 상태 붉을색으로 표기되며, HSCB, LB1,2 개방되어 동력 손실 발생함.', '1) 추진제어장치 제어기에 입력되는 제어전원이 63V 이하일 경우 검지.', '1) 경고장이 발생할 경우 추진제어장치 자동 재기동에 의해 재기동 됨. +2) 중고장 : 동력차 일반배전반의 VVVFIC nfb 재 투입 또는 차량 배터리전원 재 투입.', '1) 상기고장이 간헐적으로 발생되거나 중고장 발생이 된 경우 아래와 같이 조치한다. +2) 추진제어장치로 입력되는 제어전원 배선을 점검한다. +3) 전원필터유닛(PFU) 내부 부품에 소손이 없는지 확인한다. +4) 상기의 점검부분에 이상이 있을경우 관련된 부품을 교체한다.', null, '2', '2025-10-12 01:21:37.656536+00', null, '다대48량(2015)', 'Rotem'), ('fff6a4e1-4389-49a2-b73f-b3c91fd8440b', '0511', '511', 'DCU#4 2위(L1) - 출입문 닫힘 리미트 스위치2 고장', 'T1', 'C', 'DCU-출입문 닫힘 리미트 스위치2 고장', 'C', 'DCU', 'DCU의 RS485 데이터 중 DCU-TCMS SD TEXT4의 Bit2 “DCS2 Failure(Right)” 신호가 “1”이 되면 검지 +', '출입문 오른쪽 판넬 닫힘 상태 확인 불가', ' +1) 출입문이 열림 상태에서 DCS2가 작동되어 있는 경우 +2) 출입문이 닫힘 상태에서 DCS2가 작동되지 않은 경우 +', '전기적 결선상태가 양호하고, 출입문 열림 닫힘 시, DCS2가 정상적으로 작동', '1) 출입문 열림 닫힘 중 DCS2 스위치가 정상적으로 작동되는지 확인한다. (DCS2 스위치는 닫힘 완료 시점에 작동) +2) 스위치를 작동시키는 브라켓이 정상적으로 설치되어 있는지 확인하여 조치한다. +3) 스위치 결선이 빠져 있거나 링터미널 체결 볼트 상태를 확인한다. +4) 결선상에 문제가 없을 경우, 스위치의 접점이 정상인지 확인한다. (NO 접점 : 1-2, NC 접점 : 3- +4) +5) 접점상에 문제가 있을 경우, 스위치를 교체한다. +6) 위 조치 후에도 문제가 지속될 경우, DCU를 교체한다.', null, '5', '2025-10-09 03:18:18.039236+00', '2025-10-10 00:07:12.620295+00', '우진200량-3단계', 'Woojin'); \ No newline at end of file diff --git a/ori_data/MMI_Code_rows.sql b/ori_data/MMI_Code_rows.sql new file mode 100644 index 0000000..c67e57d --- /dev/null +++ b/ori_data/MMI_Code_rows.sql @@ -0,0 +1 @@ +INSERT INTO "public"."MMI_Code" ("id", "code_name", "code_description", "data_type", "created_at", "updated_at", "car_id", "alias_name", "manufacturer") VALUES ('032f9bc1-4e16-441b-9e58-d424c6688fb3', 'MASCON_EB', '마스콘 비상', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('0490f63f-055e-4f55-ae8c-b471c571ee99', 'DCW(Door Close Warning)', '출입문 닫힘 경고', '약어', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('06d22b0c-b138-44b3-a53c-9a31ce6ef692', 'SYSTEM_ACTIVE', '장치 상태', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('07a9dda2-ef1b-4d33-9584-1202b6e9a0f4', 'CS(Coast)', '타행', '약어', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('08be6348-7a07-4a73-b25f-42c66d936923', 'MPDT_START', '매뉴얼PDT START', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('0aa06b0c-15c7-4f84-95b7-b0dc0187d3a6', 'MASCON_BR', '마스콘 제동', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('0b69b9d0-b851-474e-b83f-31a3df440d95', 'OVER_SPD_WARNING', '과속 경고', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('100e9fd6-ea93-40c1-8a57-69a5700fc3e4', 'PSD_CLOSE', 'PSD 닫힘', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('1409a55d-2a0d-41e2-8678-124f1ec7a80a', '사전제동(Pre-Braking)', '운행 간 속도코드 변환 지점에 맞춰 사전에 제동하여 충격 방지', '약어', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('152d79ea-8df9-4e92-ba69-a8f460ce9a0b', 'INCHING(Inching)', '정밀 제어 동작', '약어', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('154a453e-ca5a-44a4-a6af-3b7b71008414', 'REVERSINGROD_RVS', '역전기 후진', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('16a54b64-53db-4d99-9bb2-89f0e9bcef7b', 'F3', 'ATC 캐리어 F3', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('16aeb815-74f6-472e-96a9-50aedba4ed92', 'F4', 'ATC 캐리어 F4', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('1a24e1ac-ac84-4652-b047-596e9b579785', 'FA', '운전모드 FA', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('22402135-5163-48a0-8c93-da6bb262c823', 'EB(Emergency Brake)', '비상제동', '약어', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('29b53d6e-4abd-4a6e-8f44-e141772f46ce', 'MASCON_NEU', '마스콘 중립', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('2ab974a3-1f01-4456-bf31-85970b260e3f', 'REVERSINGROD_ FWD', '역전기 전진', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('2bdda851-de23-4947-a520-36a563829194', 'REVERSINGROD_ NEU', '역전기 중립', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('2e0c4ca3-7adc-419b-bdf6-af789d790edc', 'FSB(Full Service Brake)', '상용만제동', '약어', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('2fbf0f17-39c4-4dfd-ab31-0980569cab87', 'NOMAL', '평상모드', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('2fcfe560-cb57-411f-b056-e6e18fcd5eeb', 'EDR(Enable Door Right)', '오른쪽 출입문 열림 가능', '약어', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('3037306a-a4ab-40be-bc58-c813df872fd4', 'BR(Brake Relay)', '제동 릴레이', '약어', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('320d33c0-ce00-46f9-95b3-ca4a9ddd5e69', 'HCR(Head Control Relay)', '선두차 지정 입력신호', '약어', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('32492a5d-2683-4b91-8591-b701f8a56155', 'DSTN', 'TWC 종착역', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('32b54631-9bfc-4d07-9c82-251b8f1d1191', 'MANUAL PDT(Manual PDT)', '수동 PDT 시험', '약어', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('32ef7ad2-a8bb-45f5-bd85-108c85c69906', 'SEQ', '시퀀스 넘버', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('3453afd3-973f-46e5-9a60-1523bba9b58a', 'AUTO', '운전모드 AUTO', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('3a700e7e-81af-49fa-8b37-679c9800307a', 'DO_EDR', 'EDR 출력', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('4017ddd4-10f4-4ae8-9118-50a1a2516e69', 'FAIL_TCMS', 'TCMS 통신실패', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('40c46634-4a14-4f9a-b9ce-bf55979b222f', 'INCHING', '정위치 정밀제어', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('42dd4ede-8d70-493e-8879-eb2ecc211808', 'ATC_ERR_MSG', 'ATC 에러 메시지', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('44264353-a349-4261-88a8-f10d51a141de', 'DO_ZVR', 'ZVR 출력', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('4627ee92-363a-4455-a43d-60da8cd616a2', 'TCR(Tale Control Relay)', '후미차 지정 입력신호', '약어', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('479eb9c8-1f0c-4fb8-aaa6-f91a5df3a476', 'DR(Drive Relay)', '추진 릴레이', '약어', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('4860a494-c5e0-49a9-a5bd-450916d0b082', 'TWCT_ENABLE', 'TWC 송신 허용', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('4b6ecb30-dfb1-4cae-a7fd-9f50149ba6e0', 'ADOR(Automatic Open Right Door)', '오른쪽 출입문 자동 열림 제어 명령(MCS, AUTO, FA)', '약어', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('4ba207d6-35d7-42b1-bf42-ef4908ae263d', 'ACK_WHD1', 'TACHO1 설정 차륜경', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('5214ba87-0776-42df-bb96-a38b546923aa', 'FORMNO', '편성 번호', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('540f6674-6d0b-45a2-b494-236f251128d6', 'OV_STOP2', '70이상 초과', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('55d39c6c-20d7-4b9f-81cd-4ef02799d525', 'MASCON_DR', '마스콘 추진', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('590edb8b-0894-4374-b725-9de591247da6', 'F1', 'ATC 캐리어 F1', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('5a12af63-76b7-41ed-ba04-cae540b64d5f', 'TRAINSPEED_B', 'TACHO2 속도', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('5bc1b922-bc63-4218-a88b-b0aadf02b3f0', 'LIMITSPEED', 'ATC 제한속도', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('60ff8f63-cc8c-4299-8fc2-c44718d28bc2', 'PRE_BRAKE', '사전제동', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('62d97e35-13e1-44e8-a9bc-6d9a9229b871', 'ATO_ERR_MSG', 'ATO 에러 메시지', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('63e2778e-3eab-4ca0-856d-1fea819cc80e', 'DO_EBM', 'EB(-) 출력', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('671dd775-2283-4086-8e3d-747562dba932', 'ATC_SWVER', 'ATC SW 버전', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('679ed6a4-af3e-45fe-af3c-5781545385e8', 'OvrSPD Warning(Over Speed Warining)', 'ATC 과속 경고', '약어', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('6e1b4b32-c073-456e-b7cb-92ff5b2e7389', 'TRAC_BR', '추진 명령', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('6ef453da-12a8-4b69-a900-1dcb25b23c53', 'ADOR', '오른쪽 출입문 열림명령', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('72288e55-6664-4a10-9465-579a1d11a509', 'DIA2 ACK(Ack for Wheel DIA2 Value)', '차륜경 설정 2값의 인정', '약어', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('72a2abe6-639a-4dfe-ab5d-de1ce061ed34', 'DOOR_CLOSE', '출입문 닫힘', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('737a7e19-f3fd-4f78-931f-459dcbfd1a50', 'DO_EDL', 'EDL 출력', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('7832b8ee-6a19-4677-80e5-a6afe789daf7', 'ATC_CODE_F', 'ATC 코드 주파수', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('797a5fd5-5ce9-4a3d-bfee-c924beffaf76', 'MARKER', 'PG 마커', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('7d7f99fc-93ab-4ff5-9098-58999553984a', 'PSD_OPEN', 'PSD 열림', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('81956cff-0dce-4fbb-8a7e-167895159adc', 'MCS', '운전모드 MCS', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('84616d49-df23-48b2-8b0c-35af4af2407a', 'WRONG Door(TWC Door Direction Wrong)', '지상 출입문 방향 정보와 차상 출입문 방향 정보가 다를 때 알림', '약어', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('8617b442-42c0-4c83-a313-819de7dc4d1c', 'OSC(OSC Relay)', 'OSC 안테나 선택 릴레이(1계/2계)', '약어', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('89868bf8-e5dc-44eb-a2f8-e03b06d89dda', 'ADC(Automatic Close Door)', '출입문 자동 닫힘 제어 명령', '약어', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('8ab0c22b-23c1-46ec-8cac-fcf2b4e75033', 'NEXTDOOR', '다음역 출입문 방향', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('8b1fcdeb-5961-44a7-b175-b7a40194b183', 'INTERFACE_ERR_MSG', '인터페이스 에러 메시지', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('8e07e310-006d-4be1-8d11-e9e4a76fa454', 'DOOR_OPEN', '출입문 열림', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('8e21a464-c09a-4c7e-9c9b-03efb758eb21', 'TASC DB(Train Automatic Stop Control Data Base)', 'DB TASC 제어모드', '약어', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('8f7faa85-6fb7-4655-896c-b2aa61d1ab72', 'ATC_CODE_CARRIER_F', 'ATC 코드 캐리어 주파수', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('905c4a48-663e-4665-8c35-ceb1a8bfc2e4', 'ATC_STATUS', 'ATC 상태', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('92f327c1-5ea5-43cf-a4f2-d673657270b7', 'ATO_START_BTN', '출발 버튼 취급', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('932800ec-58b1-40ec-b2df-a7071b0d8aad', 'ADOL', '왼쪽 출입문 열림명령', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('984da9da-c433-4c87-91bc-d6a37762547f', 'YARD', '운전모드 YARD', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('98bfe822-bc10-4f76-9515-84c84ce41fbf', 'DO_FSB', 'FSB 출력', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('98dae990-51fb-4102-bf0f-71ed76226cfd', 'MPDT_NG', '매뉴얼PDT NG', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('9952205f-c1a0-4c02-8739-cedd5ede7678', 'FAIL_TACHO2', 'TACHO2 통신실패', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('99e47f74-0ca5-48fa-a5e0-1d14db5c0246', 'SEL(Start Enable Lamp)', 'AUTO 출발버튼 램프', '약어', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('99f94a3e-e98d-4692-87fa-cd60937995bc', 'TC1', '1호차', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('9a26b0cc-caaa-4c91-a78f-495eb1302d55', 'DO_EBP', 'EB(+) 출력', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('9a466c1e-c6e1-4989-9454-2f0615b2be8f', 'LIMIT_DRIVE', '가속제한', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('9b3fbce6-15db-4d71-b153-4fe997bc9487', 'ATC_CARRIER_F', 'ATC 캐리어 주파수', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('9bf088f7-12fc-4edc-a427-f392eec16101', 'OSC_F', 'OSC 주파수', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('a06b3398-0687-4ba9-b4b1-b9f9f9cbf83e', 'EDL(Enable Door Left)', '왼쪽 출입문 열림 가능', '약어', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('a07434e2-7cd7-43b3-9b0e-473c5384d711', 'TWCT x Enable(TWC TX Enable)', 'TWCT 차상>지상 송신 허용', '약어', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('a2e364a3-fbe8-4fa5-8a20-2c68e8b8a460', 'WRONGDOOR', 'TWC 출입문 방향불일치', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('a5fcc036-03fa-4c30-81fb-45aaa895996e', 'TRAC_DR', '제동 명령', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('a8197de2-a6b6-4ce3-95d5-87618a91f18b', 'F2', 'ATC 캐리어 F2', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('a9ceae54-d565-4079-8eda-32e6bdb026cf', 'ATC_CODE', 'ATC 코드', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('a9cfd637-0ac7-4578-aad1-0f2e33af9ae6', 'TACHO DIR#A(Tacho Direction A)', 'DI#A에 입력되는 전방 TACHO 방향(ON:FWD / OFF:RVS)', '약어', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('aa7d340b-33bd-4eff-9368-6aa4c25ddcea', 'DIA1 ACK(Ack for Wheel DIA1 Value)', '차륜경 설정 1값의 인정', '약어', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('ae3ce281-230c-4ffe-9736-0b39444b2d8a', 'DOORMOD', '출입문 모드', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('b22f2790-07c9-46b0-b2e2-2e99a24f0383', 'IPDT_NG', '이니셜PDT NG', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('b266bfba-825e-4bc6-9a5d-b1e8aef1b35e', 'TACHO_DIR_A', 'TACHO1 방향', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('b45ba848-4059-49c8-a63f-b673a5bb037d', 'TASC(Train Automatic Stop Control)', 'TASC 제어모드', '약어', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('b80d031e-1b66-46d5-8c84-0e0897a90a4f', 'ATO_LIMITSPEED', 'ATO 제한속도', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('baee1738-9f7a-4019-b292-0ef83c89e7cf', 'START_ENABLE', '출발 허용 조건', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('bb7e45e2-506a-4bde-9192-acfa084cce9f', 'IPDT_OK', '이니셜PDT OK', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('bcd0258f-72d0-4e58-92f6-bf7dcab89d4e', 'TASC', '타스크', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('bdab2b8d-af46-444d-a05e-55bfa6a71e00', 'TRAINSPEED_A', 'TACHO1 속도', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('c0902d11-197a-4b44-8ac8-91a3db20805a', 'KUR', 'KEY UP RELAY', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('c1579926-dd5e-435f-bf99-6fc5bb2bf939', '가속제한(Acceleration Limitation)', '추진 중 정해진 속도코드보다 목표속도를 제한하여 제동 충격 방지', '약어', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('c39d617d-2c27-44b1-bbae-318a88044fab', 'FAIL_ATOC', 'ATOC 통신실패', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('c57c949a-8a8e-4d79-bec4-c2d72d546a64', 'TASC_DB', '가상 타스크', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('cc71f00e-98f3-4a46-8499-1dea21a011ed', 'ACK_WHD2', 'TACHO2 설정 차륜경', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('cf020fcd-fbe5-4044-83b0-e49a9af6f283', 'PSTN', 'TWC 현재역', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('cf070b92-fa89-4aec-8011-ae05e0920887', 'OSC_F0_OK', 'OSC 상시주파수 OK', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('d252d93d-6537-4618-aedf-40b718b46c6a', 'CSC(Constant Control Speed)', '정속 운행', '약어', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('d3278644-ca33-4bc4-82e2-5e57be69c1ca', 'FMC', '운전모드 FMC', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('d544c5bd-d4b5-44e9-9094-512f5689d90a', 'FAIL_ATCR', 'ATCR 통신 실패', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('d6e20d52-bcf7-424f-ab75-acf30656c6e5', 'DTG', '남은거리', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('d70b0698-5911-445c-9aef-653b52cc809a', 'HCR', '선두차 지정', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('d837f8e8-cd37-4b7d-b3f0-8d5a3bfacc71', 'ADOL(Automatic Open Left Door)', '왼쪽 출입문 자동 열림 제어 명령(MCS, AUTO, FA)', '약어', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('dbc6653c-9e1d-4655-99bd-08780a4d5b32', 'TCMSDOOR', 'TCMS 출입문 정보', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('de599af0-ac8a-4b96-b3bc-169301e9b932', 'ATO EB REQ(ATO Emergency Brake Request)', 'ATO 비상제동 요청', '약어', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('de59e87c-cd48-48e6-a77a-d2e27d5b6c06', 'TC2', '8호차', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('df0e9f2a-50b9-4d0c-b51b-af768bb14d33', 'TRAC_CS', '타행 명령', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('df91dd2c-e142-4c18-a2b2-4a41c78322f0', 'INITIAL PDT(Initial PDT)', '장치 기동 시 자동 PDT 시험', '약어', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('dfd545c7-e14e-490c-9b36-f68097ffce22', 'TRAIN BERTH(Train Berth)', '정위치 정차', '약어', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('e2c45bec-59b2-44d5-845d-b1c5518bcd1e', 'DOOR_CLOSE_WARNING', '출입문 닫힘 경고', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('e4e64a09-4446-4481-8512-19cabfd18043', 'TRAINSPEED', '열차 속도', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('e5f52d5b-5997-4796-ab96-4a2961bd3f06', 'KUR(Key Up Relay)', '키 업 릴레이(불용)', '약어', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('e621c337-419e-4024-9d90-258198130917', 'FAIL_TACHO1', 'TACHO1 통신실패', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('e6d5f259-5268-4be0-8320-b17d781d917e', 'ATO_ERR_DETECT', 'ATO 에러 검지', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('e8141835-909d-42da-945b-c9a8b1594707', 'SYSTEM ACTIVE(System Active)', '1,2계 시스템 중 주 계(MAIN)를 표현', '약어', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('e902dd6c-73e6-495b-b087-4e75e7cabdf5', 'TRAINNO', '열 번', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('e9eb12dd-be48-4817-a244-50b3efa37d51', 'TACHO DIR#B(Tacho Direction B)', 'DI#B에 입력되는 후방 TACHO 방향(ON:FWD / OFF:RVS)', '약어', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('ecb941b7-459f-4e5d-a865-ac20da44382e', 'TACHO_DIR_B', 'TACHO2 방향', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('ee99910c-5d5c-49dd-8dcb-781f336d7321', 'ATO_EB_REQ', 'ATO 비상제동 요구', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('ef67d8a4-fd57-449b-bdf5-f75dcb754c9c', 'NSTN', 'TWC 다음역', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('f46c4cff-69b0-4a9e-b694-5a092268d062', 'RECOVERY', '회복모드', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('f4b2fd2c-af25-4fbb-b534-b2ec64164fd6', 'DIAGNOSTIC_ERR_MSG', '다이그노스틱 에러 메시지', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('f5d6f415-d04b-460a-8f34-2d248644ba51', 'MPDT_OK', '매뉴얼PDT OK', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('f799e30b-72ef-4cc8-97df-a2a1ecdc6157', 'WHEELCHECK', '차륜경 검증', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('f84e828b-1943-4b0e-a369-ace0bd236fe0', 'TIME', '시간', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('f8b1aaa3-929c-4ae4-bff3-4fc696e48fa8', 'TCR', '꼬리차 지정', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('fa07df53-ecbe-416a-895a-ae823620f363', 'PWM_VALUE', 'PWM 값', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('fa35b81a-9475-4153-b953-da3bc36dcef8', 'TRAINBERTH', '정위치 정차', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'), ('faad65c9-52b7-4c70-aa3c-f9ace41f2b9f', 'SH_STOP2', '70이상 미달', '데이터', '2025-10-12 15:03:22.31555+00', '2025-10-12 15:03:22.31555+00', '5', '우진200량-3단계', 'Woojin'); \ No newline at end of file diff --git a/ori_data/Signals_rows.sql b/ori_data/Signals_rows.sql new file mode 100644 index 0000000..f3f6a00 --- /dev/null +++ b/ori_data/Signals_rows.sql @@ -0,0 +1 @@ +INSERT INTO "public"."Signals" ("id", "sig_num", "signal_abbreviation", "signal_description", "status_value", "manufacturer", "classification", "created_at", "updated_at", "original_data", "alias_name") VALUES ('00340012-c776-4f3e-9c85-28be9c60a95d', '334', 'MISS_DOD ', 'ATC 출입문열림조건과 비교해서 일치하지 않음(Mismatch Door Opening Direction)', 'No Mismatch : 0, Mismatch : 1', 'Woojin', 'ATC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'MISS_DOD = ATC 출입문열림조건과 비교해서 일치하지 않음(Mismatch Door Opening Direction). No Mismatch : 0, Mismatch : 1', '우진200량-3단계'), ('00797e8b-9075-4997-be25-8e6064b2e411', '986', 'CCAM8R ', '8호차 운전실 카메라 이벤트 녹화상태(CAB CAMERA 8 RECORD)', '0 : 이외의 조건, 1 : 이벤트 녹화 중', 'Woojin', 'NVR', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'CCAM8R = 8호차 운전실 카메라 이벤트 녹화상태(CAB CAMERA 8 RECORD). 0 : 이외의 조건, 1 : 이벤트 녹화 중', '우진200량-3단계'), ('00c75d6f-9b63-451e-a01c-f1c56ee74646', '424', 'AMP1-7F ', 'M2 (CAR 7) AMP 1 고장 정보(AMPLIFIER 1-7 FAULT)', '0 : 정상, 1 : 고장', 'Woojin', 'AVC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'AMP1-7F = M2 (CAR 7) AMP 1 고장 정보(AMPLIFIER 1-7 FAULT). 0 : 정상, 1 : 고장', '우진200량-3단계'), ('00cc8400-7741-4aa0-a60f-b50117e5eca9', '1205', 'HUMID3 ', '3호차 객실 습도(room Humidity Car3)', '0 ~ 100 (%)', 'Woojin', 'AIRP', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'HUMID3 = 3호차 객실 습도(room Humidity Car3). 0 ~ 100 (%)', '우진200량-3단계'), ('00d6c948-87cb-4c01-9b65-89f296d5a883', '174', 'P1PSR ', '판토1 상승상태 (PANPS1)(PANTOGRAPH 1 UP)', '그 외의 경우 : 0, 판토상승시 : 1', 'Woojin', 'M1', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'P1PSR = 판토1 상승상태 (PANPS1)(PANTOGRAPH 1 UP). 그 외의 경우 : 0, 판토상승시 : 1', '우진200량-3단계'), ('00d76c73-72c6-43c1-91c4-1600607832e8', '704', 'THDH ', '과온 검지2(Thermal Fault High-level Detect)', '0 : 정상, 1 : 고장검지', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'THDH = 과온 검지2(Thermal Fault High-level Detect). 0 : 정상, 1 : 고장검지', '우진200량-3단계'), ('00fd3793-6c47-4453-90ae-d61961469692', '207', 'ISBD ', '제동부족 감지 인통선 신호(INSUFFICIENT BRAKE DETECTED(ISBD))', '그 외의 경우 : 0, ISBD 검지시 : 1', 'Woojin', 'M2', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'ISBD = 제동부족 감지 인통선 신호(INSUFFICIENT BRAKE DETECTED(ISBD)). 그 외의 경우 : 0, ISBD 검지시 : 1', '우진200량-3단계'), ('01797ced-bb80-4bca-a4ba-daa5f5b2b21e', '149', 'DC ', '도어 닫힘(DOOR CLOSE)', '그 외의 경우 : 0, 출입문 닫힘시 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'DC = 도어 닫힘(DOOR CLOSE). 그 외의 경우 : 0, 출입문 닫힘시 : 1', '우진200량-3단계'), ('01990a97-90dd-428e-aa57-a30dc05a416c', '306', 'ADC ', '출입문 열림/닫힘상태 정보(All Door Closed)', 'Door Opened : 0, All Door Closed : 1', 'Woojin', 'ATC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'ADC = 출입문 열림/닫힘상태 정보(All Door Closed). Door Opened : 0, All Door Closed : 1', '우진200량-3단계'), ('01ba0d8c-7e94-4c1d-88a1-dc98c440e685', '281', 'ILCR2 ', 'AC 실내등 컨텍터 2 ON 상태확인(CONTACTOR 2 INTERIOR LIGHTS CLOSED)', '그 외의 경우 : 0, 접촉기 ON시 : 1', 'Woojin', 'T2', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'ILCR2 = AC 실내등 컨텍터 2 ON 상태확인(CONTACTOR 2 INTERIOR LIGHTS CLOSED). 그 외의 경우 : 0, 접촉기 ON시 : 1', '우진200량-3단계'), ('01daeac3-d8c9-4a56-89c6-badd48baa2ee', '580', 'ABLCF ', '공기제동감쇄지령 값의 비정상(Air Brake)', '0 : 정상, 1 : 고장검지', 'Woojin', 'BECU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'ABLCF = 공기제동감쇄지령 값의 비정상(Air Brake). 0 : 정상, 1 : 고장검지', '우진200량-3단계'), ('01ddec8c-8c32-4167-907e-27102cbb9c5d', '1040', 'SCAM1-7R ', '7호차 3번 CCTV 카메라 녹화중(SALOON CAMERA 3-7 RECORD)', '0 : 이외의 조건, 1 : 이벤트 녹화 중', 'Woojin', 'NVR', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'SCAM1-7R = 7호차 3번 CCTV 카메라 녹화중(SALOON CAMERA 3-7 RECORD). 0 : 이외의 조건, 1 : 이벤트 녹화 중', '우진200량-3단계'), ('02938dbd-d3fa-4a57-81ba-15ef78ae1872', '1030', 'SCAM2-6R ', '6호차 2번 CCTV 카메라 녹화중(SALOON CAMERA 2-6 RECORD)', '0 : 이외의 조건, 1 : 이벤트 녹화 중', 'Woojin', 'NVR', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'SCAM2-6R = 6호차 2번 CCTV 카메라 녹화중(SALOON CAMERA 2-6 RECORD). 0 : 이외의 조건, 1 : 이벤트 녹화 중', '우진200량-3단계'), ('02dd099f-1347-4926-9270-f2fb223b66f3', '1173', 'AP2-3S ', '3호차 공기정화기2 동작상태(Air Purifier2 Car3 State)', '0 : OFF, 1 : 약, 2 : 중, 3 : 강', 'Woojin', 'AIRP', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'AP2-3S = 3호차 공기정화기2 동작상태(Air Purifier2 Car3 State). 0 : OFF, 1 : 약, 2 : 중, 3 : 강', '우진200량-3단계'), ('03a90cbd-c76b-413f-9262-c9f36d711138', '329', 'TWCTXEN ', 'TWC 데이터 송신 가능(TWC Tx Enable)', 'TWC 데이터 송신 안함 : 0, TWC 데이터 송신 함 : 1', 'Woojin', 'ATC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'TWCTXEN = TWC 데이터 송신 가능(TWC Tx Enable). TWC 데이터 송신 안함 : 0, TWC 데이터 송신 함 : 1', '우진200량-3단계'), ('03dc85bf-d0d0-4e70-806f-88dc6daceb72', '293', 'RDOP_SDR ', '우측 출입문 열림상태(Right Door Open Status)', 'Right Door Opened : 1, Not Open : 0', 'Woojin', 'ATC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'RDOP_SDR = 우측 출입문 열림상태(Right Door Open Status). Right Door Opened : 1, Not Open : 0', '우진200량-3단계'), ('046a9187-fe51-4ad6-9a76-21df2acc5f0e', '648', 'LB2CC ', 'LB2 Close 지령(LB 2 Close Command)', '0 : 각 접촉기의 투입지령 Off 중 1 : 각 접촉기의 투입지령 출력 중', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'LB2CC = LB2 Close 지령(LB 2 Close Command). 0 : 각 접촉기의 투입지령 Off 중 1 : 각 접촉기의 투입지령 출력 중', '우진200량-3단계'), ('048f4735-a9c4-4232-ab1b-d71e0483c4e0', '984', 'SSDF ', 'NVR 영상 저장 장치 드라이브 오류(SSD FAULT)', '0 : 이외의 조건, 1 : 고장 시', 'Woojin', 'NVR', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'SSDF = NVR 영상 저장 장치 드라이브 오류(SSD FAULT). 0 : 이외의 조건, 1 : 고장 시', '우진200량-3단계'), ('049b36ee-635b-4614-9780-ed31177100db', '1146', 'DDS1-3F ', '3호차 미세먼지센서1 고장상태(Dust Detector Sensor AP1 Car3 Fault)', '1 : 고장, 0 : 정상', 'Woojin', 'AIRP', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'DDS1-3F = 3호차 미세먼지센서1 고장상태(Dust Detector Sensor AP1 Car3 Fault). 1 : 고장, 0 : 정상', '우진200량-3단계'), ('04af4915-2a0f-4c36-9720-9372a139b5f9', '516', 'U2DSP1RL ', 'UNIT2 압력스위치1 냉매부족 신호(UNIT2 Differential Pressure Switch1 Refrigerant Low)', '1 : 냉매부족, 0 : 정상', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'U2DSP1RL = UNIT2 압력스위치1 냉매부족 신호(UNIT2 Differential Pressure Switch1 Refrigerant Low). 1 : 냉매부족, 0 : 정상', '우진200량-3단계'), ('04b617b1-5389-49d5-ba08-274a60c0c3a5', '363', 'PG1F ', 'PG1 지상자 미 검지(ATO PG1 Missed Error)', 'PG1 정상 검지: 0, PG1 미 검지 : 1', 'Woojin', 'ATC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'PG1F = PG1 지상자 미 검지(ATO PG1 Missed Error). PG1 정상 검지: 0, PG1 미 검지 : 1', '우진200량-3단계'), ('04bc9afb-95d4-4c56-8817-63e81d8e7947', '649', 'HSCBCC ', 'HSCB Close 지령(HSCB Close Command)', '0 : 각 접촉기의 투입지령 Off 중 1 : 각 접촉기의 투입지령 출력 중', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'HSCBCC = HSCB Close 지령(HSCB Close Command). 0 : 각 접촉기의 투입지령 Off 중 1 : 각 접촉기의 투입지령 출력 중', '우진200량-3단계'), ('04c3a240-4cb9-4ffe-b370-7daa8e91c2b4', '57', 'MASEB ', '마스콘 EB위치 아님(NO EMERGENCY BRAKE MASTER CONTROLLER)', 'MASCON EB 체결시 : 0, 그 외의 경우 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'MASEB = 마스콘 EB위치 아님(NO EMERGENCY BRAKE MASTER CONTROLLER). MASCON EB 체결시 : 0, 그 외의 경우 : 1', '우진200량-3단계'), ('04cd54b7-ea4a-46bf-a344-7122052ff198', '666', 'MCOK12CC ', 'MCOK1,2 Close 지령(MCOK1,2 Close Command)', '0 : 각 접촉기의 Close 지령 Off 중 1 : 각 접촉기의 Close 지령 출력 중', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'MCOK12CC = MCOK1,2 Close 지령(MCOK1,2 Close Command). 0 : 각 접촉기의 Close 지령 Off 중 1 : 각 접촉기의 Close 지령 출력 중', '우진200량-3단계'), ('053edeb1-a9f2-402b-b2e3-75530aaa3269', '1171', 'AP4-3S ', '3호차 공기정화기4 동작상태(Air Purifier4 Car3 State)', '0 : OFF, 1 : 약, 2 : 중, 3 : 강', 'Woojin', 'AIRP', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'AP4-3S = 3호차 공기정화기4 동작상태(Air Purifier4 Car3 State). 0 : OFF, 1 : 약, 2 : 중, 3 : 강', '우진200량-3단계'), ('05534adb-40fb-4cd3-b7d1-347afc6925b4', '544', 'AHEK3F ', '전자접촉기 보조히터 3 고장(Auxiliary Heater Electric Contactor3 Fault)', '1 : 고장 , 0 : 정상', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'AHEK3F = 전자접촉기 보조히터 3 고장(Auxiliary Heater Electric Contactor3 Fault). 1 : 고장 , 0 : 정상 ', '우진200량-3단계'), ('05766012-6576-44be-b67a-45d85e517b43', '557', 'ROMVER ', 'HVAC 프로그램의 버전 정보(Software Version)', '0 ~ 255', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'ROMVER = HVAC 프로그램의 버전 정보(Software Version). 0 ~ 255', '우진200량-3단계'), ('05c07c1b-361f-4517-b9a4-e27478c0293d', '905', '열차번호 ', '열차번호(TRAIN NUMBER)', '0~9999', 'Woojin', 'PIC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', '열차번호 = 열차번호(TRAIN NUMBER). 0~9999', '우진200량-3단계'), ('063115c9-4a37-4f0f-8048-a01ff4bf12a6', '1076', 'PEI2-5E ', '5호차 2위 비상인터폰 종료상태(PASSENGER EMERGENCY INTERCOM 2-5 END)', '1 : 연결됨, 0 : 연결안됨', 'Woojin', 'TRS', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'PEI2-5E = 5호차 2위 비상인터폰 종료상태(PASSENGER EMERGENCY INTERCOM 2-5 END). 1 : 연결됨, 0 : 연결안됨', '우진200량-3단계'), ('06844191-6a2b-4b94-b9c9-0bd01d196ce5', '1006', 'SCAM2-6F ', '6호차 2번 CCTV 카메라 고장상태(SALOON CAMERA 2-6 FAULT)', '0 : 정상 상태 (상시 녹화 중), 1 : 카메라 고장 시', 'Woojin', 'NVR', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'SCAM2-6F = 6호차 2번 CCTV 카메라 고장상태(SALOON CAMERA 2-6 FAULT). 0 : 정상 상태 (상시 녹화 중), 1 : 카메라 고장 시', '우진200량-3단계'), ('06a07988-ab6e-4bb9-b75e-64d10dbe729c', '612', 'FO ', '전기제동소멸(Fade Out)', '0 : FO 미검지, 1 : FO 검지', 'Woojin', 'BECU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'FO = 전기제동소멸(Fade Out). 0 : FO 미검지, 1 : FO 검지', '우진200량-3단계'), ('06d4ac9e-f0ee-4a00-b749-5d99200da716', '399', 'AMP1-2F ', 'M1 (CAR 2) AMP 1 고장 정보(AMPLIFIER 1-2 FAULT)', '0 : 정상, 1 : 고장', 'Woojin', 'AVC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'AMP1-2F = M1 (CAR 2) AMP 1 고장 정보(AMPLIFIER 1-2 FAULT). 0 : 정상, 1 : 고장', '우진200량-3단계'), ('06de0237-cb3f-4c01-a62e-5cefa59baa3b', '1185', 'AP2-6S ', '6호차 공기정화기2 동작상태(Air Purifier2 Car6 State)', '0 : OFF, 1 : 약, 2 : 중, 3 : 강', 'Woojin', 'AIRP', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'AP2-6S = 6호차 공기정화기2 동작상태(Air Purifier2 Car6 State). 0 : OFF, 1 : 약, 2 : 중, 3 : 강', '우진200량-3단계'), ('073a86e2-3b24-4b23-9087-72e797f5f18b', '381', 'UPDATE ', '업데이트중(UPDATE)', '0 : 이외의 조건, 1 : 업데이트 중', 'Woojin', 'AVC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'UPDATE = 업데이트중(UPDATE). 0 : 이외의 조건, 1 : 업데이트 중', '우진200량-3단계'), ('0759be1a-d3f6-4e50-8087-5541fa52ab50', '678', 'LW ', '응하중 입력 값(Load Weight)', '0∼100%', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'LW = 응하중 입력 값(Load Weight). 0∼100%', '우진200량-3단계'), ('077887be-3a59-450a-833c-1fb582535ad6', '1184', 'AP3-6S ', '6호차 공기정화기3 동작상태(Air Purifier3 Car6 State)', '0 : OFF, 1 : 약, 2 : 중, 3 : 강', 'Woojin', 'AIRP', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'AP3-6S = 6호차 공기정화기3 동작상태(Air Purifier3 Car6 State). 0 : OFF, 1 : 약, 2 : 중, 3 : 강', '우진200량-3단계'), ('07a35dd6-9028-4b62-adea-9fddd0d68223', '739', 'ONLY200R ', '200칸 식별코드(Only 200R)', '0 : 정상, 1 : 고장검지', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'ONLY200R = 200칸 식별코드(Only 200R). 0 : 정상, 1 : 고장검지', '우진200량-3단계'), ('07a6ca59-2bf4-4d8a-a0fe-1a669c323bac', '360', 'BALISEAF ', 'ATO 차상안테나 발진 고장(ATO Antenna Error)', '발진 정상 : 0, 발진 고장 : 1', 'Woojin', 'ATC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'BALISEAF = ATO 차상안테나 발진 고장(ATO Antenna Error). 발진 정상 : 0, 발진 고장 : 1', '우진200량-3단계'), ('07be1e3f-07ef-41d5-b96e-bb69cf29dde8', '1166', 'AP1-1S ', '1호차 공기정화기1 동작상태(Air Purifier1 Car1 State)', '0 : OFF, 1 : 약, 2 : 중, 3 : 강', 'Woojin', 'AIRP', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'AP1-1S = 1호차 공기정화기1 동작상태(Air Purifier1 Car1 State). 0 : OFF, 1 : 약, 2 : 중, 3 : 강', '우진200량-3단계'), ('07d2610e-f4b2-4bbb-a15d-f819bfc4c23f', '719', 'WDTD_P ', '마이컴 이상(PWM)(Watch Dog Timer Detect - PWM)', '0 : 정상, 1 : 고장검지', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'WDTD_P = 마이컴 이상(PWM)(Watch Dog Timer Detect - PWM). 0 : 정상, 1 : 고장검지', '우진200량-3단계'), ('07d61508-867c-44bb-b2b3-493f4f2c2170', '574', 'SP2F ', '2축 속도신호의 비정상(Speed2 Fault)', '0 : 정상, 1 : 고장검지', 'Woojin', 'BECU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'SP2F = 2축 속도신호의 비정상(Speed2 Fault). 0 : 정상, 1 : 고장검지', '우진200량-3단계'), ('08b331cf-e75a-412f-a440-2819ce56e1d1', '433', 'PEI2-8F ', 'TC2 (CAR 8) PEI 2 고장 정보(PASSENGER EMERGENCY INTERCOM 2-8 FAULT)', '0 : 정상, 1 : 고장', 'Woojin', 'AVC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'PEI2-8F = TC2 (CAR 8) PEI 2 고장 정보(PASSENGER EMERGENCY INTERCOM 2-8 FAULT). 0 : 정상, 1 : 고장', '우진200량-3단계'), ('08b63932-e30a-46b2-b98f-395de429d3ca', '1174', 'AP1-3S ', '3호차 공기정화기1 동작상태(Air Purifier1 Car3 State)', '0 : OFF, 1 : 약, 2 : 중, 3 : 강', 'Woojin', 'AIRP', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'AP1-3S = 3호차 공기정화기1 동작상태(Air Purifier1 Car3 State). 0 : OFF, 1 : 약, 2 : 중, 3 : 강', '우진200량-3단계'), ('08e2911a-8881-4eff-b01c-f0ea073434de', '346', 'TACHOF ', 'TACHO1 또는 TACHO2 고장(ATC Tacho Error)', 'TACHO 정상 : 0, TACHO 고장 : 1', 'Woojin', 'ATC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'TACHOF = TACHO1 또는 TACHO2 고장(ATC Tacho Error). TACHO 정상 : 0, TACHO 고장 : 1', '우진200량-3단계'), ('09037e76-2811-474b-9680-63f728aaa9f5', '219', 'LFF2K ', 'LINE FLOW FANS CONTACTOR 2 ON(LINE FLOW FANS CONTACTOR 2 CLOSED)', '그 외의 경우 : 0, 접촉기 ON시 : 1', 'Woojin', 'M2', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'LFF2K = LINE FLOW FANS CONTACTOR 2 ON(LINE FLOW FANS CONTACTOR 2 CLOSED). 그 외의 경우 : 0, 접촉기 ON시 : 1', '우진200량-3단계'), ('09fde4ce-2099-45bf-9cba-1e32d0680a7c', '670', 'ZVRON ', 'ZVR Close 상태(ZVR ON)', '0 : ZVR 릴레이 Off 상태 1 : ZVR 릴레이 On 상태', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'ZVRON = ZVR Close 상태(ZVR ON). 0 : ZVR 릴레이 Off 상태 1 : ZVR 릴레이 On 상태', '우진200량-3단계'), ('0a6a9f7a-3a55-4084-b1d7-1adabd3bc7a0', '1199', 'FDUST5 ', '5호차 미세먼지 농도(Fine Dust Car5)', '0 ~ 255 (㎍/㎥)', 'Woojin', 'AIRP', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'FDUST5 = 5호차 미세먼지 농도(Fine Dust Car5). 0 ~ 255 (㎍/㎥)', '우진200량-3단계'), ('0ae62175-7f31-4f69-89d9-fc8d82ed61a6', '1158', 'DDS1-8F ', '8호차 미세먼지센서1 고장상태(Dust Detector Sensor AP1 Car8 Fault)', '1 : 고장, 0 : 정상', 'Woojin', 'AIRP', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'DDS1-8F = 8호차 미세먼지센서1 고장상태(Dust Detector Sensor AP1 Car8 Fault). 1 : 고장, 0 : 정상', '우진200량-3단계'), ('0aee05ef-e898-478b-8db6-766683b41582', '201', 'ASCOCK1 ', 'AS 압력 코크 스위치1 미동작(NO AIR SPRING CUT-OUT COCK #1)', 'AS cock cutout 시 : 0, 그 외의 경우 : 1', 'Woojin', 'M2', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'ASCOCK1 = AS 압력 코크 스위치1 미동작(NO AIR SPRING CUT-OUT COCK #1). AS cock cutout 시 : 0, 그 외의 경우 : 1', '우진200량-3단계'), ('0aef542a-7291-4b61-a1a7-8e86e7243f4b', '203', 'BRCOCK1 ', '제동 차단 코크2 스위치 미동작(BOGIE #1)(NO BRAKE CUT-OUT COCK BOGIE #1)', 'BC cock cutout 시 : 0, 그 외의 경우 : 1', 'Woojin', 'M2', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'BRCOCK1 = 제동 차단 코크2 스위치 미동작(BOGIE #1)(NO BRAKE CUT-OUT COCK BOGIE #1). BC cock cutout 시 : 0, 그 외의 경우 : 1', '우진200량-3단계'), ('0b73661a-dd20-4a38-8857-df14a525e043', '551', 'VADAMPOP ', '배기 댐퍼 열림 시(Damper Open)', '1 : 열림, 0 : 닫힘', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'VADAMPOP = 배기 댐퍼 열림 시(Damper Open). 1 : 열림, 0 : 닫힘', '우진200량-3단계'), ('0ba3f3e0-c528-4871-8257-814e362f38f4', '146', 'DOLAMP ', '도어 열림 점등(DOOR OPEN(RED))', '그 외의 경우 : 0, 출입문 열림시 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'DOLAMP = 도어 열림 점등(DOOR OPEN(RED)). 그 외의 경우 : 0, 출입문 열림시 : 1', '우진200량-3단계'), ('0c03a5c2-93d5-4121-b46b-fbb17c2f3764', '1001', 'SCAM1-4F ', '4호차 3번 CCTV 카메라 고장상태(SALOON CAMERA 3-4 FAULT)', '0 : 정상 상태 (상시 녹화 중), 1 : 카메라 고장 시', 'Woojin', 'NVR', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'SCAM1-4F = 4호차 3번 CCTV 카메라 고장상태(SALOON CAMERA 3-4 FAULT). 0 : 정상 상태 (상시 녹화 중), 1 : 카메라 고장 시', '우진200량-3단계'), ('0c99ad22-8a33-4649-b7e0-ada1eab53129', '246', 'AC380_AN ', 'AC 380V NFB 트립(객실에어컨, 라인플로워)(CIRCUIT BREAKERS 380V 60Hz CLOSED (AIR.CON))', '트립시 : 0, 정상시 : 1', 'Woojin', 'T1', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'AC380_AN = AC 380V NFB 트립(객실에어컨, 라인플로워)(CIRCUIT BREAKERS 380V 60Hz CLOSED (AIR.CON)). 트립시 : 0, 정상시 : 1', '우진200량-3단계'), ('0cf72f78-2f70-40d3-aed2-d6fc0194122a', '241', 'BCN ', '제동 회로의 회로차단기 상태(BRAKE CIRCUIT BREAKER CLOSED)', '트립시 : 0, 정상시 : 1', 'Woojin', 'T1', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'BCN = 제동 회로의 회로차단기 상태(BRAKE CIRCUIT BREAKER CLOSED). 트립시 : 0, 정상시 : 1', '우진200량-3단계'), ('0d3225d8-a7ec-4287-ad8c-3b67754b992e', '434', 'AMP1-8F ', 'TC2 (CAR 8) AMP 1 고장 정보(AMPLIFIER 1-8 FAULT)', '0 : 정상, 1 : 고장', 'Woojin', 'AVC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'AMP1-8F = TC2 (CAR 8) AMP 1 고장 정보(AMPLIFIER 1-8 FAULT). 0 : 정상, 1 : 고장', '우진200량-3단계'), ('0d44517b-efbf-48f3-bd58-2f06fdbafc62', '486', 'VENT ', '차량의 배기팬 운전모드(Vent Mode)', '1 : 배기팬 작동모드, 0 : 배기팬 작동모드 아님', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'VENT = 차량의 배기팬 운전모드(Vent Mode). 1 : 배기팬 작동모드, 0 : 배기팬 작동모드 아님', '우진200량-3단계'), ('0d6a5b30-b98b-44bc-8bd7-5f30363cd5e8', '937', 'RMD3-3F ', '노선안내표시기3-3 통신 상태(ROUTE MAP DISPLAY 3-3 FAULT)', '0 : 통신정상, 1 : 통신고장', 'Woojin', 'PIC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'RMD3-3F = 노선안내표시기3-3 통신 상태(ROUTE MAP DISPLAY 3-3 FAULT). 0 : 통신정상, 1 : 통신고장', '우진200량-3단계'), ('0d8f5737-f919-4567-9ee7-47cb8adb9b4a', '42', 'ZVR ', '영속도(ZERO SPEED)', '그 외의 경우 : 0, 영속도 상태 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'ZVR = 영속도(ZERO SPEED). 그 외의 경우 : 0, 영속도 상태 : 1', '우진200량-3단계'), ('0dd7aae4-f4ad-41b5-969f-1fd2537b069e', '199', 'SBRCOCK ', '상용제동 차단 코크 스위치 미동작(NO SERVICE BRAKE CUT-OUT COCK)', 'SB cock cutout 시 : 0, 그 외의 경우 : 1', 'Woojin', 'M2', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'SBRCOCK = 상용제동 차단 코크 스위치 미동작(NO SERVICE BRAKE CUT-OUT COCK). SB cock cutout 시 : 0, 그 외의 경우 : 1', '우진200량-3단계'), ('0e012cda-7075-475b-a0a3-d552356cedc4', '151', '가선전류 게이지 출력 ', null, null, 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', '가선전류 게이지 출력 = LINE CURRENT METER', '우진200량-3단계'), ('0e5f2bb8-49d6-4a8a-83c8-06cb1bac98e5', '1156', 'DDS3-8F ', '8호차 미세먼지센서3 고장상태(Dust Detector Sensor AP3 Car8 Fault)', '1 : 고장, 0 : 정상', 'Woojin', 'AIRP', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'DDS3-8F = 8호차 미세먼지센서3 고장상태(Dust Detector Sensor AP3 Car8 Fault). 1 : 고장, 0 : 정상', '우진200량-3단계'), ('0e941a1a-3b39-45d2-baf8-fa282bc7cbfd', '788', 'OUTC ', 'AC 출력 전류 정보(AC Output Current)', '0~1000A', 'Woojin', 'SIV', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'OUTC = AC 출력 전류 정보(AC Output Current). 0~1000A', '우진200량-3단계'), ('0ec9ed6a-898c-4425-8429-b380980705a9', '55', 'ScBR ', '보안제동 체결 릴레이(SECURITY BRAKE ON)', '보안제동 스위치 OFF : 0, 보안제동 스위치 ON : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'ScBR = 보안제동 체결 릴레이(SECURITY BRAKE ON). 보안제동 스위치 OFF : 0, 보안제동 스위치 ON : 1', '우진200량-3단계'), ('0ef67654-d2a3-4cfa-9d75-02b09b2106ac', '1212', 'WATCHDOG ', null, null, 'Woojin', 'AIRP', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'WATCHDOG = 워치독(Watchdog Counter). 0 ~ 255', '우진200량-3단계'), ('0f0160f2-9ff6-4a52-a981-8db9871a0396', '650', 'HSCBON ', 'HSCB Close 상태(HSCB ON)', '0 : 각 접촉기 Off 상태 1 : 각 접촉기 On 상태', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'HSCBON = HSCB Close 상태(HSCB ON). 0 : 각 접촉기 Off 상태 1 : 각 접촉기 On 상태', '우진200량-3단계'), ('0f4d9412-e94a-4c8d-a760-729400764b3c', '1061', 'PEI2-4C ', '4호차 2위 비상인터폰 연결상태(PASSENGER EMERGENCY INTERCOM 2-4 CALL)', '1 : 연결됨, 0 : 연결안됨', 'Woojin', 'TRS', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'PEI2-4C = 4호차 2위 비상인터폰 연결상태(PASSENGER EMERGENCY INTERCOM 2-4 CALL). 1 : 연결됨, 0 : 연결안됨', '우진200량-3단계'), ('0f9a1222-ae7b-41be-88c2-5dc5b3e422db', '781', 'FC12UB ', 'FC1전압/ FC2전압 언발런스 검지(FC1/2 Unbalance)', '0 : 이외의 조건, 1 : FC1전압, FC2전압 언발런스 검지 시', 'Woojin', 'SIV', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'FC12UB = FC1전압/ FC2전압 언발런스 검지(FC1/2 Unbalance). 0 : 이외의 조건, 1 : FC1전압, FC2전압 언발런스 검지 시', '우진200량-3단계'), ('0fc8a5cf-1806-4766-a104-7d449f2f8c3e', '879', '데이터 정의 ', null, null, 'Woojin', 'BMS', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', '데이터 정의 = DATA TYPE', '우진200량-3단계'), ('0fd2e7bf-25fb-45a6-8771-f48aff453fff', '355', 'DCF ', '출입문 자동 닫힘 명령(최대 3회까지) 시 출입문이 안 닫힌 경우(Door Close Error)', '출입문 자동 정상 : 0, 출입문 자동 에러 : 1', 'Woojin', 'ATC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'DCF = 출입문 자동 닫힘 명령(최대 3회까지) 시 출입문이 안 닫힌 경우(Door Close Error). 출입문 자동 정상 : 0, 출입문 자동 에러 : 1', '우진200량-3단계'), ('0fecd7d2-a1c3-48ee-a87b-76fb077bce0a', '595', 'P ', '모터링선택 검지(Powering)', '0 : 비추진상태, 1 : 추진상태', 'Woojin', 'BECU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'P = 모터링선택 검지(Powering). 0 : 비추진상태, 1 : 추진상태', '우진200량-3단계'), ('10301afc-dd1a-438d-bc93-58c151c2e133', '343', 'WHEELS2 ', 'TACHO2의 차륜경 크기정보(Wheel Size2)', '860(mm) : 0, 855: 1, 850 : 2, 845: 3, 840 : 4, 835 : 5, 830 : 6, 825 : 7, 820 : 8, 815 : 9, 810 : 10, 805 : 11, 800 : 12, 795 : 13, 790 : 14, 785 : 15, 780 : 16, Other : None', 'Woojin', 'ATC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'WHEELS2 = TACHO2의 차륜경 크기정보(Wheel Size2). 860(mm) : 0, 855: 1, 850 : 2, 845: 3, 840 : 4, 835 : 5, 830 : 6, 825 : 7, 820 : 8, 815 : 9, 810 : 10, 805 : 11, 800 : 12, 795 : 13, 790 : 14, 785 : 15, 780 : 16, Other : None', '우진200량-3단계'), ('1048d301-488a-4344-b5b9-4402ddc2d892', '1027', 'SCAM2-3R ', '3호차 2번 CCTV 카메라 녹화중(SALOON CAMERA 2-3 RECORD)', '0 : 이외의 조건, 1 : 이벤트 녹화 중', 'Woojin', 'NVR', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'SCAM2-3R = 3호차 2번 CCTV 카메라 녹화중(SALOON CAMERA 2-3 RECORD). 0 : 이외의 조건, 1 : 이벤트 녹화 중', '우진200량-3단계'), ('105eac84-fae0-485c-acda-e5f79e2bdd6a', '280', 'LFF1K ', 'LINE FLOW FANS CONTACTOR 1 ON(LINE FLOW FANS CONTACTOR 1 CLOSED)', '그 외의 경우 : 0, 접촉기 ON시 : 1', 'Woojin', 'T2', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'LFF1K = LINE FLOW FANS CONTACTOR 1 ON(LINE FLOW FANS CONTACTOR 1 CLOSED). 그 외의 경우 : 0, 접촉기 ON시 : 1', '우진200량-3단계'), ('10628163-10b2-45c7-8e50-887966d32c69', '835', 'OBCF ', '도어 닫힘 중 3회 장애물 감지로 인해 닫힘 완료 실패(Close failure due to obstacle)', '0 : 정상 1 : 고장', 'Woojin', 'DCU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'OBCF = 도어 닫힘 중 3회 장애물 감지로 인해 닫힘 완료 실패(Close failure due to obstacle). 0 : 정상 1 : 고장', '우진200량-3단계'), ('109bf16b-b8a2-4446-a516-3f268fdc49f8', '1088', 'TRCP1F ', 'TC1 TRCP장치 고장 상태 정보(TRCP car1 Fault)', '1 : 고장, 0 : 정상, Default : 0', 'Woojin', 'TRS', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'TRCP1F = TC1 TRCP장치 고장 상태 정보(TRCP car1 Fault). 1 : 고장, 0 : 정상, Default : 0', '우진200량-3단계'), ('10bbda3c-33de-4201-803a-d03c373a3385', '1113', 'ST-2 ', '운전실 선택(캠) 스위치에 의해 기준온도가 실내기준온도-2도로 설정(Standard Temperature -2℃)', '1 : 동작중, 0 : 중지상태, Default : 0', 'Woojin', 'CHVAC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'ST-2 = 운전실 선택(캠) 스위치에 의해 기준온도가 실내기준온도-2도로 설정(Standard Temperature -2℃). 1 : 동작중, 0 : 중지상태, Default : 0', '우진200량-3단계'), ('111e6941-f913-45e0-a7dd-df7552072dea', '746', '데이터 정의 ', '데이터 타입(DATA TYPE)', null, 'Woojin', 'SIV', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', '데이터 정의 = 데이터 타입(DATA TYPE). ', '우진200량-3단계'), ('11379ccc-5d3e-4e29-a41c-30b841fa7df9', '727', 'SETERR ', '보호 설정 치 이상(Setting Error)', '0 : 정상, 1 : 고장검지', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'SETERR = 보호 설정 치 이상(Setting Error). 0 : 정상, 1 : 고장검지', '우진200량-3단계'), ('1194ee62-c787-4dc4-abba-1451294ca259', '121', 'DCLPBD ', '좌측 출입문 닫힘(데스크)(DOORS CLOSE LEFT(DESK))', '그 외의 경우 : 0, 스위치 ON시 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'DCLPBD = 좌측 출입문 닫힘(데스크)(DOORS CLOSE LEFT(DESK)). 그 외의 경우 : 0, 스위치 ON시 : 1', '우진200량-3단계'), ('11c460ef-ea18-4f16-bf2b-1968afd29376', '571', 'BCSF ', 'BC 압력센서 고장(Brake Cylinder Sensor Fault)', '0 : 정상, 1 : 고장검지', 'Woojin', 'BECU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'BCSF = BC 압력센서 고장(Brake Cylinder Sensor Fault). 0 : 정상, 1 : 고장검지', '우진200량-3단계'), ('11c4982c-34e3-4315-a8b7-77731a1f9ca2', '853', 'RF1_RFF ', '1계 RF 고장(RF1 RF Fault)', '1 : 고장, 0 : 정상, Default : 0', 'Woojin', 'PSD', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'RF1_RFF = 1계 RF 고장(RF1 RF Fault). 1 : 고장, 0 : 정상, Default : 0', '우진200량-3단계'), ('11d4c88a-6339-4a2e-8b19-4ef113a4c198', '324', 'DBLP ', 'ATCATO의 Departure Button Lamp 출력 상태(DBL Command)', 'No DBL : 0, DBL : 1', 'Woojin', 'ATC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'DBLP = ATCATO의 Departure Button Lamp 출력 상태(DBL Command). No DBL : 0, DBL : 1', '우진200량-3단계'), ('120d7ae2-f4ad-43db-be8c-3f620f3c8443', '164', 'ACMK ', '보조공기 압축기 컨텍터 상태(AUXILIARY COMPRESSOR MOTOR CONTACTOR CLOSED)', '그 외의 경우 : 0, 접촉기 ON시 : 1', 'Woojin', 'M1', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'ACMK = 보조공기 압축기 컨텍터 상태(AUXILIARY COMPRESSOR MOTOR CONTACTOR CLOSED). 그 외의 경우 : 0, 접촉기 ON시 : 1', '우진200량-3단계'), ('12a5dd1a-2cc5-4bca-95e6-20ed736884d1', '965', 'RMD5-8F ', '노선안내표시기5-8 통신 상태(ROUTE MAP DISPLAY 5-8 FAULT)', '0 : 통신정상, 1 : 통신고장', 'Woojin', 'PIC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'RMD5-8F = 노선안내표시기5-8 통신 상태(ROUTE MAP DISPLAY 5-8 FAULT). 0 : 통신정상, 1 : 통신고장', '우진200량-3단계'), ('12fc283d-1119-4e42-9610-1a0a2bf35dcc', '873', 'CMBPYM ', 'CM Bypass 모드(CM Bypass Mode)', '1 : 바이패스상태, 0 : 정상상태', 'Woojin', 'CMSB', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'CMBPYM = CM Bypass 모드(CM Bypass Mode). 1 : 바이패스상태, 0 : 정상상태', '우진200량-3단계'), ('1359ff3b-65cc-448b-a39b-f894ee014610', '1189', 'AP2-7S ', '7호차 공기정화기2 동작상태(Air Purifier2 Car7 State)', '0 : OFF, 1 : 약, 2 : 중, 3 : 강', 'Woojin', 'AIRP', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'AP2-7S = 7호차 공기정화기2 동작상태(Air Purifier2 Car7 State). 0 : OFF, 1 : 약, 2 : 중, 3 : 강', '우진200량-3단계'), ('136a3f51-e176-45b2-90da-29e0225191d0', '369', 'DDN-R_SDR ', '다음에 열릴 출입문 = 오른쪽(Door Direction Next - Right)', '0 : 이 외의 조건, 1 : 다음에 열릴 출입문 = 오른쪽', 'Woojin', 'AVC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'DDN-R_SDR = 다음에 열릴 출입문 = 오른쪽(Door Direction Next - Right). 0 : 이 외의 조건, 1 : 다음에 열릴 출입문 = 오른쪽', '우진200량-3단계'), ('13812972-2eb1-4525-9975-d546b475795f', '517', 'U2DSP2RL ', 'UNIT2 압력스위치2 냉매부족 신호(UNIT2 Differential Pressure Switch2 Refrigerant Low)', '1 : 냉매부족, 0 : 정상', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'U2DSP2RL = UNIT2 압력스위치2 냉매부족 신호(UNIT2 Differential Pressure Switch2 Refrigerant Low). 1 : 냉매부족, 0 : 정상', '우진200량-3단계'), ('13a42476-bbf5-4deb-96c4-37cead3761ee', '985', 'FCAM8R ', '8호차 전면 카메라 이벤트 녹화상태(FRONT CAMERA 8 RECORD)', '0 : 이외의 조건, 1 : 이벤트 녹화 중', 'Woojin', 'NVR', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'FCAM8R = 8호차 전면 카메라 이벤트 녹화상태(FRONT CAMERA 8 RECORD). 0 : 이외의 조건, 1 : 이벤트 녹화 중', '우진200량-3단계'), ('14a456d4-0d6a-4692-90ef-cb1baed5622f', '664', 'MHR2CC ', 'MHR2 Close 상태(MHR2 Close Command)', '0 : 각 릴레이 Close 지령 Off 중 1 : 각 릴레이 Close 지령 출력 중', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'MHR2CC = MHR2 Close 상태(MHR2 Close Command). 0 : 각 릴레이 Close 지령 Off 중 1 : 각 릴레이 Close 지령 출력 중', '우진200량-3단계'), ('14be5fbd-7d49-45c7-a533-6ead673dacef', '240', 'NRBD ', '제동불완해 감지 인통선 신호(NON-RELEASE BRAKE DETECTED(NRBD))', '그 외의 경우 : 0, NRBD 검지시 : 1', 'Woojin', 'T1', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'NRBD = 제동불완해 감지 인통선 신호(NON-RELEASE BRAKE DETECTED(NRBD)). 그 외의 경우 : 0, NRBD 검지시 : 1', '우진200량-3단계'), ('14cb1cd5-01f2-433f-bca5-fba628bd70aa', '242', 'DOORN ', '출입문 회로 의 회로 차단기 상태(DOOR CIRCUIT BREAKER CLOSED)', '트립시 : 0, 정상시 : 1', 'Woojin', 'T1', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'DOORN = 출입문 회로 의 회로 차단기 상태(DOOR CIRCUIT BREAKER CLOSED). 트립시 : 0, 정상시 : 1', '우진200량-3단계'), ('14d98c42-540c-4368-bc9d-da600b23f3e9', '167', 'ISBD ', '제동부족 감지 인통선 신호(INSUFFICIENT BRAKE DETECTED(ISBD))', '그 외의 경우 : 0, ISBD 검지시 : 1', 'Woojin', 'M1', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'ISBD = 제동부족 감지 인통선 신호(INSUFFICIENT BRAKE DETECTED(ISBD)). 그 외의 경우 : 0, ISBD 검지시 : 1', '우진200량-3단계'), ('14e1b1a7-a709-46ff-a147-7a54b58db68e', '403', 'PEI2-3F ', 'M2 (CAR 3) PEI 2 고장 정보(PASSENGER EMERGENCY INTERCOM 2-3 FAULT)', '0 : 정상, 1 : 고장', 'Woojin', 'AVC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'PEI2-3F = M2 (CAR 3) PEI 2 고장 정보(PASSENGER EMERGENCY INTERCOM 2-3 FAULT). 0 : 정상, 1 : 고장', '우진200량-3단계'), ('14e516b3-e9ab-401d-840d-b50b6d07e135', '545', 'AHEK4F ', '전자접촉기 보조히터 4 고장(Auxiliary Heater Electric Contactor4 Fault)', '1 : 고장 , 0 : 정상', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'AHEK4F = 전자접촉기 보조히터 4 고장(Auxiliary Heater Electric Contactor4 Fault). 1 : 고장 , 0 : 정상', '우진200량-3단계'), ('15049b4f-f4ae-4e5e-b57e-e7ef88e9396d', '513', 'U2DSP2LP ', 'UNIT2 압력스위치2 LP 신호(UNIT2 Differential Pressure Switch2 Low Pressure)', '1 : UNIT2 DPS2 LP 고장, 0 : 정상', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'U2DSP2LP = UNIT2 압력스위치2 LP 신호(UNIT2 Differential Pressure Switch2 Low Pressure). 1 : UNIT2 DPS2 LP 고장, 0 : 정상', '우진200량-3단계'), ('162cbd48-893b-4960-82dc-5c81e23d936e', '624', 'WATCHDOG ', '워치독(Watchdog Counter)', null, 'Woojin', 'BECU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'WATCHDOG = 워치독(Watchdog Counter). ', '우진200량-3단계'), ('1635f236-515f-4dc7-883e-fad14b102652', '1011', 'SCAM3-8F ', '8호차 1번 CCTV 카메라 고장상태(SALOON CAMERA 1-8 FAULT)', '0 : 정상 상태 (상시 녹화 중), 1 : 카메라 고장 시', 'Woojin', 'NVR', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'SCAM3-8F = 8호차 1번 CCTV 카메라 고장상태(SALOON CAMERA 1-8 FAULT). 0 : 정상 상태 (상시 녹화 중), 1 : 카메라 고장 시', '우진200량-3단계'), ('164e7de3-1e37-4847-9e3f-83d33525e06b', '829', 'DCS2F ', '도어 닫힘 상태에서 DCS2 스위치 작동 되지 않음(DCS2 failure (RIGHT))', '0 : 정상 1 : 고장', 'Woojin', 'DCU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'DCS2F = 도어 닫힘 상태에서 DCS2 스위치 작동 되지 않음(DCS2 failure (RIGHT)). 0 : 정상 1 : 고장', '우진200량-3단계'), ('16650c3a-7678-448a-8ce3-b3d3ca1e7d8d', '155', 'SCBCOCK ', '보안제동 차단 코크 스위치 미동작(NO SECURITY BRAKE CUT-OUT COCK #1)', 'SBR cock cutout 시 : 0, 그 외의 경우 : 1', 'Woojin', 'M1', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'SCBCOCK = 보안제동 차단 코크 스위치 미동작(NO SECURITY BRAKE CUT-OUT COCK #1). SBR cock cutout 시 : 0, 그 외의 경우 : 1', '우진200량-3단계'), ('16a97ce6-2dd3-4b66-b3bb-f05dca143e1e', '519', 'INSENS2F ', '실내 SENSOR 2 고장 신호(Indoor Sensor2 Fault)', '1 : 실내센서 이상 발생, 0 : 정상', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'INSENS2F = 실내 SENSOR 2 고장 신호(Indoor Sensor2 Fault). 1 : 실내센서 이상 발생, 0 : 정상', '우진200량-3단계'), ('1772798e-7171-4ff6-916d-55a15474f81b', '849', 'RF2TX ', '2계 스크린도어 명령 송신상태(RF2 Transmitter State)', '0 : 닫힘, 1 : 제어명령 송신됨, 2 : 지상장치로부터 응답 대기 중, 3 : 종료됨, 0 : Default', 'Woojin', 'PSD', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'RF2TX = 2계 스크린도어 명령 송신상태(RF2 Transmitter State). 0 : 닫힘, 1 : 제어명령 송신됨, 2 : 지상장치로부터 응답 대기 중, 3 : 종료됨, 0 : Default', '우진200량-3단계'), ('17962a8a-10f0-4de6-adc5-4bcc0946e3eb', '951', 'RMD1-5F ', '노선안내표시기1-5 통신 상태(ROUTE MAP DISPLAY 1-5 FAULT)', '0 : 통신정상, 1 : 통신고장', 'Woojin', 'PIC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'RMD1-5F = 노선안내표시기1-5 통신 상태(ROUTE MAP DISPLAY 1-5 FAULT). 0 : 통신정상, 1 : 통신고장', '우진200량-3단계'), ('17e4ade5-14cd-4b67-ac28-7394e5c8d231', '252', 'ILCR1 ', 'AC 실내등 컨텍터 1 ON 상태확인(CONTACTOR 1 INTERIOR LIGHTS CLOSED)', '그 외의 경우 : 0, 접촉기 ON시 : 1', 'Woojin', 'T1', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'ILCR1 = AC 실내등 컨텍터 1 ON 상태확인(CONTACTOR 1 INTERIOR LIGHTS CLOSED). 그 외의 경우 : 0, 접촉기 ON시 : 1', '우진200량-3단계'), ('17fb689c-81e0-487f-a6dd-7e7b67dd906a', '1020', 'SCAM3-1R ', '1호차 1번 CCTV 카메라 녹화중(SALOON CAMERA 1-1 RECORD)', '0 : 이외의 조건, 1 : 이벤트 녹화 중', 'Woojin', 'NVR', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'SCAM3-1R = 1호차 1번 CCTV 카메라 녹화중(SALOON CAMERA 1-1 RECORD). 0 : 이외의 조건, 1 : 이벤트 녹화 중', '우진200량-3단계'), ('181d95b5-99b6-4811-993c-123b84c4fbcd', '145', 'CABFB ', '운전실 화재검지(CAB FD)', '그 외의 경우 : 0, 화재 검지시 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'CABFB = 운전실 화재검지(CAB FD). 그 외의 경우 : 0, 화재 검지시 : 1', '우진200량-3단계'), ('1845d12c-0375-46f4-a944-b4821889d61c', '823', 'DRISO ', '도어 차단 스위치 작동 상태(Door Isolation)', '0 : 도어 정상 1 : 도어 차단', 'Woojin', 'DCU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'DRISO = 도어 차단 스위치 작동 상태(Door Isolation). 0 : 도어 정상 1 : 도어 차단', '우진200량-3단계'), ('18600209-c3d6-4479-9222-d3cf3a93e81d', '53', 'PBR ', '주차제동 완해 릴레이(PARKING BRAKE RELEASE)', '주차제동 완해 릴레이 OFF : 0, 주차제동 완해 릴레이 ON : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'PBR = 주차제동 완해 릴레이(PARKING BRAKE RELEASE). 주차제동 완해 릴레이 OFF : 0, 주차제동 완해 릴레이 ON : 1', '우진200량-3단계'), ('188863ea-08b4-4884-9c6c-6a9c27c78e3c', '1102', 'CAMSW ', '운전실 캠스위치 운전상태(Cam Switch state)', '1 : 동작중, 0 : 중지상태, Default : 0', 'Woojin', 'CHVAC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'CAMSW = 운전실 캠스위치 운전상태(Cam Switch state). 1 : 동작중, 0 : 중지상태, Default : 0', '우진200량-3단계'), ('18c2a5f8-e41b-4df9-876d-cd12d284b3e5', '485', 'U2FAN ', 'UNIT2 환기 운전모드(Unit2 Fan Mode)', '1 : UNIT2 환기모드,0 : UNIT2 환기감모드 아님', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'U2FAN = UNIT2 환기 운전모드(Unit2 Fan Mode). 1 : UNIT2 환기모드,0 : UNIT2 환기감모드 아님', '우진200량-3단계'), ('18c7a383-d64a-45d4-90cb-83b425d15cd9', '844', 'RF1A ', '1계 상태(RF1 Access)', '1 : 운전모드, 0 : Idle, Default : 0', 'Woojin', 'PSD', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'RF1A = 1계 상태(RF1 Access). 1 : 운전모드, 0 : Idle, Default : 0', '우진200량-3단계'), ('1940af0f-4dd1-4dd9-890f-ab2d593ac40d', '1101', 'ROTSW ', '운전실 마이컴 전면 로터리스위치 운전상태(Rotary Switch state)', '1 : 동작중, 0 : 중지상태, Default : 0', 'Woojin', 'CHVAC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'ROTSW = 운전실 마이컴 전면 로터리스위치 운전상태(Rotary Switch state). 1 : 동작중, 0 : 중지상태, Default : 0', '우진200량-3단계'), ('19809f26-f1da-4ce5-91d6-5e556f5c3207', '232', 'ASCOCK2 ', 'AS 압력 코크 스위치2 미동작(NO AIR SPRING CUT-OUT COCK #2)', 'AS cock cutout 시 : 0, 그 외의 경우 : 1', 'Woojin', 'T1', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'ASCOCK2 = AS 압력 코크 스위치2 미동작(NO AIR SPRING CUT-OUT COCK #2). AS cock cutout 시 : 0, 그 외의 경우 : 1', '우진200량-3단계'), ('198bd3d4-2428-4267-923c-d0e61e0cdae5', '475', 'OFF ', '정지모드(OFF Mode)', '1 : 정지모드, 0 : 정지모드 아님', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'OFF = 정지모드(OFF Mode). 1 : 정지모드, 0 : 정지모드 아님', '우진200량-3단계'), ('19a166cd-7185-48ba-9f3e-728e6fe0297a', '930', 'RMD4-2F ', '노선안내표시기4-2 통신 상태(ROUTE MAP DISPLAY 4-2 FAULT)', '0 : 통신정상, 1 : 통신고장', 'Woojin', 'PIC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'RMD4-2F = 노선안내표시기4-2 통신 상태(ROUTE MAP DISPLAY 4-2 FAULT). 0 : 통신정상, 1 : 통신고장', '우진200량-3단계'), ('19cd4c94-2440-44c3-b02e-6d3c1bcb085a', '194', 'PANDNR ', '판토 하강 계전기(PANTOGRAPH DOWN RELAY)', '그 외의 경우 : 0, 판토하강시 : 1', 'Woojin', 'M1', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'PANDNR = 판토 하강 계전기(PANTOGRAPH DOWN RELAY). 그 외의 경우 : 0, 판토하강시 : 1', '우진200량-3단계'), ('1b3ab68a-ca19-482c-adcb-bf63e8a5cd1b', '502', 'U1CM1OL ', 'UNIT1 압축기1 과부하 신호(UNIT1 Compressor1 Over Load)', '1 : 과부하, 0 : 정상', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'U1CM1OL = UNIT1 압축기1 과부하 신호(UNIT1 Compressor1 Over Load). 1 : 과부하, 0 : 정상', '우진200량-3단계'), ('1b4d60a1-6b79-4245-84ed-a5fe36a87fb5', '498', 'U1EF1OL ', 'UNIT1 증발기1 과부하 신호(UNIT1 Evaporator Fan1 Over Load)', '1 : 과부하, 0 : 정상', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'U1EF1OL = UNIT1 증발기1 과부하 신호(UNIT1 Evaporator Fan1 Over Load). 1 : 과부하, 0 : 정상', '우진200량-3단계'), ('1b4edfda-1cf1-49f8-baeb-d5da9cd30ff1', '106', 'CILCF ', '조도제어기 고장신호(CENTRAL ILLUMINATION CONTROLLER FAULT)', '그 외의 경우 : 0, 고장시 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'CILCF = 조도제어기 고장신호(CENTRAL ILLUMINATION CONTROLLER FAULT). 그 외의 경우 : 0, 고장시 : 1', '우진200량-3단계'), ('1bb65960-cca5-4bc5-9e0e-4072308e634e', '857', 'GPSD1F ', '1계 지상 PSD 장애(Ground PSD1 Fault)', '1 : 장애, 0 : 정상, Default : 0', 'Woojin', 'PSD', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'GPSD1F = 1계 지��� PSD 장애(Ground PSD1 Fault). 1 : 장애, 0 : 정상, Default : 0', '우진200량-3단계'), ('1bc7df20-7308-47a9-8933-eff017c2cf90', '809', 'FD ', '감지기 상태 정보(Text3)와 연계하여 사용중인 감지기 중 하나라도 화재가 발생한 경우를 나타낸다.(Fire Detect)', '0 : 정상, 1 : 화재 발생', 'Woojin', 'FDU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'FD = 감지기 상태 정보(Text3)와 연계하여 사용중인 감지기 중 하나라도 화재가 발생한 경우를 나타낸다.(Fire Detect). 0 : 정상, 1 : 화재 발생', '우진200량-3단계'), ('1c1148e8-24b5-4461-8a71-5d52df1c6bfd', '842', 'WATCHDOG ', '워치독(Watchdog Counter)', '0~255', 'Woojin', 'PSD', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'WATCHDOG = 워치독(Watchdog Counter). 0~255', '우진200량-3단계'), ('1c458b35-5c65-4f77-a2b6-46d23b33433f', '526', 'U2DSENSF ', 'UNIT2 토출 SENSOR 고장 신호(UNIT2 Dischare Sensor Fault)', '1 : UNIT2 토출 센서 이상 발생, 0 : 정상', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'U2DSENSF = UNIT2 토출 SENSOR 고장 신호(UNIT2 Dischare Sensor Fault). 1 : UNIT2 토출 센서 이상 발생, 0 : 정상', '우진200량-3단계'), ('1c5511eb-d940-4ce8-8a3a-928205499aa2', '471', 'OPCMDC_SDR ', '냉난방장치 운전모드(COMMAND Operation Command)', '0 : OFF 1 : 1/3난방 2 : 2/3난방 3 : 전난방 6 : 반냉 7 : 전냉 8 : 자동', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'OPCMDC_SDR = 냉난방장치 운전모드(COMMAND Operation Command). 0 : OFF 1 : 1/3난방 2 : 2/3난방 3 : 전난방 6 : 반냉 7 : 전냉 8 : 자동', '우진200량-3단계'), ('1c76fcd1-26e7-410f-b13c-fc435c4ecdb9', '677', 'SPEED4 ', '4축 속도 값(Moter Shaft 4 Speed)', '0∼255km/h', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'SPEED4 = 4축 속도 값(Moter Shaft 4 Speed). 0∼255km/h', '우진200량-3단계'), ('1c9019da-82f2-45a7-9c7c-74eefe408f21', '415', 'AMP2-5F ', 'T2 (CAR 5) AMP 2 고장 정보(AMPLIFIER 2-5 FAULT)', '0 : 정상, 1 : 고장', 'Woojin', 'AVC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'AMP2-5F = T2 (CAR 5) AMP 2 고장 정보(AMPLIFIER 2-5 FAULT). 0 : 정상, 1 : 고장', '우진200량-3단계'), ('1ce8f0fa-0319-49d0-a7b1-b83801da2a65', '321', 'RDO ', 'ATCATO의 Right Door Open 출력 상태(RDO Command)', 'No RDO : 0, RDO : 1', 'Woojin', 'ATC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'RDO = ATCATO의 Right Door Open 출력 상태(RDO Command). No RDO : 0, RDO : 1', '우진200량-3단계'), ('1d4fdea9-8d7f-4e70-bceb-56e111359b95', '530', 'CREF1F ', '전자접촉기 증발기 1 고장(Car Room Evaporator Fan 1 Fault)', '1 : 고장, 0 : 정상', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'CREF1F = 전자접촉기 증발기 1 고장(Car Room Evaporator Fan 1 Fault). 1 : 고장, 0 : 정상 ', '우진200량-3단계'), ('1da6748c-5e15-4043-ad0f-64f18c2dac34', '506', 'U1DSP1HP ', 'UNIT1 압력스위치1 HP 신호(UNIT1 Differential Pressure Switch1 High Pressure)', '1 : UNIT1 DPS1 HP 고장, 0 : 정상', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'U1DSP1HP = UNIT1 압력스위치1 HP 신호(UNIT1 Differential Pressure Switch1 High Pressure). 1 : UNIT1 DPS1 HP 고장, 0 : 정상', '우진200량-3단계'), ('1db595cb-8324-41a0-a6ee-8970f19d265b', '837', 'CLTMF ', '도어 닫힘 동작시간이 7초 이상 지연됨(Close timeout)', '0 : 정상 1 : 고장', 'Woojin', 'DCU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'CLTMF = 도어 닫힘 동작시간이 7초 이상 지연됨(Close timeout). 0 : 정상 1 : 고장', '우진200량-3단계'), ('1ddb0da6-bcd1-4d2a-a964-bc79593c7e14', '425', 'AMP2-7F ', 'M2 (CAR 7) AMP 2 고장 정보(AMPLIFIER 2-7 FAULT)', '0 : 정상, 1 : 고장', 'Woojin', 'AVC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'AMP2-7F = M2 (CAR 7) AMP 2 고장 정보(AMPLIFIER 2-7 FAULT). 0 : 정상, 1 : 고장', '우진200량-3단계'), ('1dff1569-fc5d-4261-b23c-5032b312cae8', '418', 'PEI2-6F ', 'M1 (CAR 6) PEI 2 고장 정보(PASSENGER EMERGENCY INTERCOM 2-6 FAULT)', '0 : 정상, 1 : 고장', 'Woojin', 'AVC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'PEI2-6F = M1 (CAR 6) PEI 2 고장 정보(PASSENGER EMERGENCY INTERCOM 2-6 FAULT). 0 : 정상, 1 : 고장', '우진200량-3단계'), ('1e1e7880-0732-476f-840a-b12d1d0ec230', '834', 'OBOF ', '도어 열림 중 3회 장애물 감지로 인해 열림 완료 실패(Open foilure due to obstacle)', '0 : 정상 1 : 고장', 'Woojin', 'DCU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'OBOF = 도어 열림 중 3회 장애물 감지로 인해 열림 완료 실패(Open foilure due to obstacle). 0 : 정상 1 : 고장', '우진200량-3단계'), ('1e27a005-aaeb-4cb0-8802-0b154ede6d79', '753', 'TEST ', 'SIV TEST MODE 정보(TEST MODE)', '0 : 이외의 조건, 1 : SIV TEST MODE 스위치 선택 시', 'Woojin', 'SIV', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'TEST = SIV TEST MODE 정보(TEST MODE). 0 : 이외의 조건, 1 : SIV TEST MODE 스위치 선택 시', '우진200량-3단계'), ('1e346590-19e2-4bff-9fec-2589fdb17ad9', '256', 'SOTS1 ', '열차분리검지 1(SEPARATION OF TRAIN SET1)', '그 외의 경우 : 1, 고장시 : 0', 'Woojin', 'T1', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'SOTS1 = 열차분리검지 1(SEPARATION OF TRAIN SET1). 그 외의 경우 : 1, 고장시 : 0', '우진200량-3단계'), ('1e34fc5b-aeaa-44cf-99ff-b5228d49715d', '98', 'SU2CUN ', 'DC 100V TCMS CU2의 제어전원 NFB 입력신호(SUPPLY UNIT 2 CU)', '트립시 : 0, 정상시 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'SU2CUN = DC 100V TCMS CU2의 제어전원 NFB 입력신호(SUPPLY UNIT 2 CU). 트립시 : 0, 정상시 : 1', '우진200량-3단계'), ('1e59e4c0-e4d5-47df-8243-9fd3b579f26d', '515', 'U1DSP2RL ', 'UNIT1 압력스위치2 냉매부족 신호(UNIT1 Differential Pressure Switch2 Refrigerant Low)', '1 : 냉매부족, 0 : 정상', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'U1DSP2RL = UNIT1 압력스위치2 냉매부족 신호(UNIT1 Differential Pressure Switch2 Refrigerant Low). 1 : 냉매부족, 0 : 정상', '우진200량-3단계'), ('1e882f9f-6702-4199-b38a-ce7304905987', '826', 'CALIBF ', 'DCU 초기화 동작 중, 모터고장, 장애물 감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우 고장 발생(Calibration failure)', '0 : 정상1 : 고장', 'Woojin', 'DCU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'CALIBF = DCU 초기화 동작 중, 모터고장, 장애물 감지, 리미트 스위치 고장 등으로 인해 초기화를 완료하지 못하는 경우 고장 발생(Calibration failure). 0 : 정상1 : 고장', '우진200량-3단계'), ('1e9c8179-7f50-4809-94e8-92bafbd90bcc', '594', 'RO ', '구원운전모드(Rescue Operation)', '0 : RO 아님, 1 : RO 상태', 'Woojin', 'BECU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'RO = 구원운전모드(Rescue Operation). 0 : RO 아님, 1 : RO 상태', '우진200량-3단계'), ('1ee2a967-b230-48ed-8e77-0c78d2b8cee8', '590', 'ATO ', '자동운전모드 상태(Automatic Train Operation)', '0 : 비자동운전 상태, 1 : 자동운전 상태', 'Woojin', 'BECU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'ATO = 자동운전모드 상태(Automatic Train Operation). 0 : 비자동운전 상태, 1 : 자동운전 상태', '우진200량-3단계'), ('1f39ef6b-9d8c-487c-8054-11b8828ce09f', '1201', 'FDUST7 ', '7호차 미세먼지 농도(Fine Dust Car7)', '0 ~ 255 (㎍/㎥)', 'Woojin', 'AIRP', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'FDUST7 = 7호차 미세먼지 농도(Fine Dust Car7). 0 ~ 255 (㎍/㎥)', '우진200량-3단계'), ('1f90233f-bddb-4e68-b305-d3c5069de1af', '375', 'HCR1_SDR ', '선두차 정보 1호차(HCR Head Car Relay (1car))', '0 : HCR OFF, 1 : HCR ON', 'Woojin', 'AVC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'HCR1_SDR = 선두차 정보 1호차(HCR Head Car Relay (1car)). 0 : HCR OFF, 1 : HCR ON', '우진200량-3단계'), ('1fe4aeea-414b-40ce-8001-cc85bd2894e7', '117', 'LFF1K ', '라인플로우 팬 접촉기 1 투입(LINE FLOW FANS CONTACTOR 1 CLOSED)', '그 외의 경우 : 0, 접촉기 ON시 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'LFF1K = 라인플로우 팬 접촉기 1 투입(LINE FLOW FANS CONTACTOR 1 CLOSED). 그 외의 경우 : 0, 접촉기 ON시 : 1', '우진200량-3단계'), ('20335894-ddbe-4d71-9b5b-e173861ed2f7', '814', 'DCU2A ', 'DCU 2중계 절체 동작(Module switchover)', '0 : Default, 1 : DCU 2중계 절체', 'Woojin', 'DCU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'DCU2A = DCU 2중계 절체 동작(Module switchover). 0 : Default, 1 : DCU 2중계 절체', '우진200량-3단계'), ('2040286e-3788-442f-bd8f-2420ea6d4588', '749', 'FT_NG ', 'SIV의 기본시험2 주파수(f)의 결과를 송신(Frequency Test NG)', '0 : 이외의 조건, 1 : NG 시', 'Woojin', 'SIV', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'FT_NG = SIV의 기본시험2 주파수(f)의 결과를 송신(Frequency Test NG). 0 : 이외의 조건, 1 : NG 시', '우진200량-3단계'), ('2042a37b-7a94-430d-8d01-33e6e2dd651a', '711', 'BSD ', '후진속도 검지(Backward Speed Detect)', '0 : 정상, 1 : 고장검지', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'BSD = 후진속도 검지(Backward Speed Detect). 0 : 정상, 1 : 고장검지', '우진200량-3단계'), ('20ffebd2-a1a5-4ff4-9bfe-1fa53023bbd1', '500', 'U1EF2OL ', 'UNIT1 증발기2 과부하 신호(UNIT1 Evaporator Fan2 Over Load)', '1 : 과부하, 0 : 정상', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'U1EF2OL = UNIT1 증발기2 과부하 신호(UNIT1 Evaporator Fan2 Over Load). 1 : 과부하, 0 : 정상', '우진200량-3단계'), ('210dd9d2-e0ca-4ef1-9dfe-da17641be7b5', '639', 'BCV ', '회생제동 유효신호(Brake Circuit Vaild)', '0 : 회생 유효시 이외 1 : 회생 유효', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'BCV = 회생제동 유효신호(Brake Circuit Vaild). 0 : 회생 유효시 이외 1 : 회생 유효', '우진200량-3단계'), ('211c0b98-daf4-48f3-99bc-63b642196fdc', '1098', 'CPMF ', 'CPM 모듈 내장 메모리 초기화 오류(CPM Fault)', '0 : 고장 아님, 1 : 고장', 'Woojin', 'EVR', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'CPMF = CPM 모듈 내장 메모리 초기화 오류(CPM Fault). 0 : 고장 아님, 1 : 고장', '우진200량-3단계'), ('2122b68e-3178-48c1-8ec4-bf87f87a08fd', '917', 'DIST ', '현재역에서 다음역까지 열차가 이동한 거리(DISTANCE)', '0~65,535(m)', 'Woojin', 'PIC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'DIST = 현재역에서 다음역까지 열차가 이동한 거리(DISTANCE). 0~65,535(m)', '우진200량-3단계'), ('21dfaf80-63b8-4e38-b5f8-ff72320eb860', '73', 'CMBYPRUN ', 'CMSB 바이패스(BY-PASS RUN FOR CMSB)', '그 외의 경우 : 0, CMSB 바이패스 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'CMBYPRUN = CMSB 바이패스(BY-PASS RUN FOR CMSB). 그 외의 경우 : 0, CMSB 바이패스 : 1', '우진200량-3단계'), ('21eed9c1-7854-48f8-bc32-8d3de4ebd9f1', '185', 'ILCR2 ', 'AC 실내등 컨텍터 2 ON 상태확인(CONTACTOR 2 INTERIOR LIGHTS CLOSED)', '그 외의 경우 : 0, 접촉기 ON시 : 1', 'Woojin', 'M1', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'ILCR2 = AC 실내등 컨텍터 2 ON 상태확인(CONTACTOR 2 INTERIOR LIGHTS CLOSED). 그 외의 경우 : 0, 접촉기 ON시 : 1', '우진200량-3단계'), ('2218a0ef-30e3-499a-b4df-7c497496470a', '600', 'CPR ', '강제제동 완해(COMPULSORY RELEASE)', '0 : CPR 미검지, 1 : CPR 검지', 'Woojin', 'BECU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'CPR = 강제제동 완해(COMPULSORY RELEASE). 0 : CPR 미검지, 1 : CPR 검지', '우진200량-3단계'), ('22848549-098d-4374-8587-59d62b94fb9d', '397', 'PEI1-2F ', 'M1 (CAR 2) PEI 1 고장 정보(PASSENGER EMERGENCY INTERCOM 1-2 FAULT)', '0 : 정상, 1 : 고장', 'Woojin', 'AVC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'PEI1-2F = M1 (CAR 2) PEI 1 고장 정보(PASSENGER EMERGENCY INTERCOM 1-2 FAULT). 0 : 정상, 1 : 고장', '우진200량-3단계'), ('2286e6aa-f4c3-409a-86d0-c29c248f8259', '131', 'DCRPBD ', '우측 출입문 닫힘(데스크)(DOORS CLOSE RIGHT(DESK))', '그 외의 경우 : 0, 스위치 ON시 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'DCRPBD = 우측 출입문 닫힘(데스크)(DOORS CLOSE RIGHT(DESK)). 그 외의 경우 : 0, 스위치 ON시 : 1', '우진200량-3단계'), ('2294e65a-482b-4296-84a1-7db91110bcd4', '736', 'LB1NC ', 'LB1 투입불량(LB1 NO Close)', '0 : 정상, 1 : 고장검지', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'LB1NC = LB1 투입불량(LB1 NO Close). 0 : 정상, 1 : 고장검지', '우진200량-3단계'), ('22b5562f-21d1-48be-b1f3-d9dc1e548ec6', '449', 'PEI2-3 ', '비상인터폰 호출 위치 CAR 3 2위(PASSENGER EMERGENCY INTERCOM 2-3 CALL)', '0 : 미호출, 1 : 호출', 'Woojin', 'AVC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'PEI2-3 = 비상인터폰 호출 위치 CAR 3 2위(PASSENGER EMERGENCY INTERCOM 2-3 CALL). 0 : 미호출, 1 : 호출', '우진200량-3단계'), ('22cdff6d-2749-4626-8d04-5aaa344b6dfc', '653', 'EOMODE ', '비상구원 모드상태(Emergency Operation Mode)', '0 : Normal 상태(비선택) 1 : 비상구원모드(선택)', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'EOMODE = 비상구원 모드상태(Emergency Operation Mode). 0 : Normal 상태(비선택) 1 : 비상구원모드(선택)', '우진200량-3단계'), ('231c0731-12fe-4950-be93-8e63741786ad', '862', 'GPSD2F ', '2계 지상 PSD 장애(Ground PSD2 Fault)', '1 : 장애, 0 : 정상, Default : 0', 'Woojin', 'PSD', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'GPSD2F = 2계 지상 PSD 장애(Ground PSD2 Fault). 1 : 장애, 0 : 정상, Default : 0', '우진200량-3단계'), ('23702a90-38a0-47fa-ba03-fa10d8e2e10d', '228', 'LFF2CR ', 'LINE FLOW FANS CONTACTOR 2 ON 명령(LINE FLOW FANS CONTACTOR 2)', '그 외의 경우 : 0, 접촉기 ON시 : 1', 'Woojin', 'M2', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'LFF2CR = LINE FLOW FANS CONTACTOR 2 ON 명령(LINE FLOW FANS CONTACTOR 2). 그 외의 경우 : 0, 접촉기 ON시 : 1', '우진200량-3단계'), ('2438d728-a919-463c-995e-304b2c1787f9', '376', 'SLAVE ', '차량 Slave 정보(SLAVE)', '0 : Slave 미설정, 1 : Slave 설정', 'Woojin', 'AVC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'SLAVE = 차량 Slave 정보(SLAVE). 0 : Slave 미설정, 1 : Slave 설정', '우진200량-3단계'), ('24aefbdd-d8e8-4db8-a585-62bbb42f523b', '1163', 'AP4-1S ', '1호차 공기정화기4 동작상태(Air Purifier4 Car1 State)', '0 : OFF, 1 : 약, 2 : 중, 3 : 강', 'Woojin', 'AIRP', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'AP4-1S = 1호차 공기정화기4 동작상태(Air Purifier4 Car1 State). 0 : OFF, 1 : 약, 2 : 중, 3 : 강', '우진200량-3단계'), ('24be2bcd-9fe4-4215-9433-689568b8186f', '1150', 'DDS1-6F ', '6호차 미세먼지센서1 고장상태(Dust Detector Sensor AP1 Car6 Fault)', '1 : 고장, 0 : 정상', 'Woojin', 'AIRP', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'DDS1-6F = 6호차 미세먼지센서1 고장상태(Dust Detector Sensor AP1 Car6 Fault). 1 : 고장, 0 : 정상', '우진200량-3단계'), ('24cae253-2227-4edc-8f1a-3e9bb1632e8c', '316', 'B ', 'ATCATO의 Braking 출력 상태(Braking Command)', 'No Braking : 0, Braking : 1', 'Woojin', 'ATC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'B = ATCATO의 Braking 출력 상태(Braking Command). No Braking : 0, Braking : 1', '우진200량-3단계'), ('252a6598-5cc9-4744-9198-72f4ece64d3e', '67', 'BRCOCK ', '제동 차단 코크1 스위치 미동작(ROOM) (NO BRAKE CUT-OUT COCK# ROOM)', 'BC cock cutout 시 : 0, 그 외의 경우 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'BRCOCK = 제동 차단 코크1 스위치 미동작(ROOM) (NO BRAKE CUT-OUT COCK# ROOM). BC cock cutout 시 : 0, 그 외의 경우 : 1', '우진200량-3단계'), ('2570491e-7a85-475a-b10d-983ddc557a60', '179', 'AC380_EN ', 'AC 380V NFB 트립(OTHERS,ETC)(CIRCUIT BREAKERS 380V 60Hz CLOSED (OTHERS))', '트립시 : 0, 정상시 : 1', 'Woojin', 'M1', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'AC380_EN = AC 380V NFB 트립(OTHERS,ETC)(CIRCUIT BREAKERS 380V 60Hz CLOSED (OTHERS)). 트립시 : 0, 정상시 : 1', '우진200량-3단계'), ('261728c1-f646-498c-b60d-d6eb59366345', '128', 'EDOPB ', '출입문 모두 열림(END DOOR ALL OPEN)', '그 외의 경우 : 0, 스위치 ON시 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'EDOPB = 출입문 모두 열림(END DOOR ALL OPEN). 그 외의 경우 : 0, 스위치 ON시 : 1', '우진200량-3단계'), ('2642a6d7-4874-43e4-93e5-82e90097fdc0', '437', 'PEI1-7 ', '비상인터폰 호출 위치 CAR 7 1위(PASSENGER EMERGENCY INTERCOM 1-7 CALL)', '0 : 미호출, 1 : 호출', 'Woojin', 'AVC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'PEI1-7 = 비상인터폰 호출 위치 CAR 7 1위(PASSENGER EMERGENCY INTERCOM 1-7 CALL). 0 : 미호출, 1 : 호출', '우진200량-3단계'), ('26894cbc-f3ba-4369-8287-c042cb54471d', '1178', 'AP1-4S ', '4호차 공기정화기1 동작상태(Air Purifier1 Car4 State)', '0 : OFF, 1 : 약, 2 : 중, 3 : 강', 'Woojin', 'AIRP', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'AP1-4S = 4호차 공기정화기1 동작상태(Air Purifier1 Car4 State). 0 : OFF, 1 : 약, 2 : 중, 3 : 강', '우진200량-3단계'), ('26940aeb-301a-4c55-bbd9-deee49583e8f', '1013', 'SCAM1-8F ', '8호차 3번 CCTV 카메라 고장상태(SALOON CAMERA 3-8 FAULT)', '0 : 정상 상태 (상시 녹화 중), 1 : 카메라 고장 시', 'Woojin', 'NVR', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'SCAM1-8F = 8호차 3번 CCTV 카메라 고장상태(SALOON CAMERA 3-8 FAULT). 0 : 정상 상태 (상시 녹화 중), 1 : 카메라 고장 시', '우진200량-3단계'), ('26a55649-9a83-4a72-bd17-47790d21267e', '1084', 'ONBRD ', '객실방송중 일 때 방송중 정보 전송(On Broadcast)', '1 : 방송중, 0 : 방송중이 아님', 'Woojin', 'TRS', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'ONBRD = 객실방송중 일 때 방송중 정보 전송(On Broadcast). 1 : 방송중, 0 : 방송중이 아님', '우진200량-3단계'), ('271f5200-66ac-4034-8221-ceab0d9f2b5c', '1056', 'PEI1-1C ', '1호차 1위 비상인터폰 연결상태(PASSENGER EMERGENCY INTERCOM 1-1 CALL)', '1 : 연결됨, 0 : 연결안됨', 'Woojin', 'TRS', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'PEI1-1C = 1호차 1위 비상인터폰 연결상태(PASSENGER EMERGENCY INTERCOM 1-1 CALL). 1 : 연결됨, 0 : 연결안됨', '우진200량-3단계'), ('277efd1b-c06f-488d-851b-17bb42cfd3ef', '312', 'MARKER ', 'ATO로부터 수신받은 ATO 마커 검지 상태정보(ATO Marker Detect)', 'None(미수신) : 0, PG1 : 1, PG2 : 2, PG3-1 : 3, PG3-2 : 4, PG3-3 : 5, ATS Stop : 6, Other : None', 'Woojin', 'ATC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'MARKER = ATO로부터 수신받은 ATO 마커 검지 상태정보(ATO Marker Detect). None(미수신) : 0, PG1 : 1, PG2 : 2, PG3-1 : 3, PG3-2 : 4, PG3-3 : 5, ATS Stop : 6, Other : None', '우진200량-3단계'), ('27a7bf3a-f791-4ac3-9dbb-fb6a4b1a2982', '714', 'MON_ERR ', '통신이상 검지(Mornitoring Error)', '0 : 정상, 1 : 고장검지', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'MON_ERR = 통신이상 검지(Mornitoring Error). 0 : 정상, 1 : 고장검지', '우진200량-3단계'), ('27b82434-bfb9-4786-99f9-a6f4ea999907', '340', 'NXT_CODE ', '다음역 번호(Next Station)', '1 ~ 255', 'Woojin', 'ATC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'NXT_CODE = 다음역 번호(Next Station). 1 ~ 255 ', '우진200량-3단계'), ('2805dacb-b886-480a-bd3c-c433d99bec81', '1054', 'PEI1-3C ', '3호차 1위 비상인터폰 연결상태(PASSENGER EMERGENCY INTERCOM 1-3 CALL)', '1 : 연결됨, 0 : 연결안됨', 'Woojin', 'TRS', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'PEI1-3C = 3호차 1위 비상인터폰 연결상태(PASSENGER EMERGENCY INTERCOM 1-3 CALL). 1 : 연결됨, 0 : 연결안됨', '우진200량-3단계'), ('280e6c3a-f7bb-4e40-8fdd-fc7e842dd317', '266', 'BRCOCK1 ', '제동 차단 코크2 스위치 미동작(BOGIE #1)(NO BRAKE CUT-OUT COCK BOGIE #1)', 'BC cock cutout 시 : 0, 그 외의 경우 : 1', 'Woojin', 'T2', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'BRCOCK1 = 제동 차단 코크2 스위치 미동작(BOGIE #1)(NO BRAKE CUT-OUT COCK BOGIE #1). BC cock cutout 시 : 0, 그 외의 경우 : 1', '우진200량-3단계'), ('287d0f66-cc01-4fdd-bcac-2508789c1d32', '124', 'DCLPBS ', '좌측 출입문 닫힘(사이드패널)(DOORS CLOSE LEFT(SIDE PANEL))', '그 외의 경우 : 0, 스위치 ON시 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'DCLPBS = 좌측 출입문 닫힘(사이드패널)(DOORS CLOSE LEFT(SIDE PANEL)). 그 외의 경우 : 0, 스위치 ON시 : 1', '우진200량-3단계'), ('289b3c09-d14c-4393-aec1-594de018852b', '638', 'FADEOUT ', '회생제동 소멸신호(Fadeout)', '0 : 회생 종속제어 중 이외 1 : 회생 종속제어 중', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'FADEOUT = 회생제동 소멸신호(Fadeout). 0 : 회생 종속제어 중 이외 1 : 회생 종속제어 중', '우진200량-3단계'), ('28a9adf1-caad-4336-8c10-5867bc252d00', '805', 'CHKSUMF ', '수신기 체크섬 고장 상태를 나타낸다.(Checksum Fault)', '0 : 정상, 1 : 체크섬 고장 발생', 'Woojin', 'FDU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'CHKSUMF = 수신기 체크섬 고장 상태를 나타낸다.(Checksum Fault). 0 : 정상, 1 : 체크섬 고장 발생', '우진200량-3단계'), ('29082726-d791-43ee-8d30-8a7dc59d0f96', '579', 'ISBD ', '제동력 부족(Insufficient Brake Detected)', '0 : 정상, 1 : 고장검지', 'Woojin', 'BECU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'ISBD = 제동력 부족(Insufficient Brake Detected). 0 : 정상, 1 : 고장검지', '우진200량-3단계'), ('290c1162-8e20-4d88-8597-c206593b5293', '751', 'VT_NG ', 'SIV의 기본시험1 전압(V)의 결과를 송신(Voltage Test NG)', '0 : 이외의 조건, 1 : NG 시', 'Woojin', 'SIV', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'VT_NG = SIV의 기본시험1 전압(V)의 결과를 송신(Voltage Test NG). 0 : 이외의 조건, 1 : NG 시', '우진200량-3단계'), ('29ba1d8a-52e6-400a-b77f-3833ba66d346', '932', 'RMD2-2F ', '노선안내표시기2-2 통신 상태(ROUTE MAP DISPLAY 2-2 FAULT)', '0 : 통신정상, 1 : 통신고장', 'Woojin', 'PIC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'RMD2-2F = 노선안내표시기2-2 통신 상태(ROUTE MAP DISPLAY 2-2 FAULT). 0 : 통신정상, 1 : 통신고장', '우진200량-3단계'), ('29de5a39-a006-40e2-82ed-37bf5cec98b7', '1083', 'TRNSET ', 'TRCP에서 직접 열번을 설정하였을때 1초간만 ’1’ 송출(Train Number Set)', '1 : 열번설정, 0 : 미설정', 'Woojin', 'TRS', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'TRNSET = TRCP에서 직접 열번을 설정하였을때 1초간만 ’1’ 송출(Train Number Set). 1 : 열번설정, 0 : 미설정', '우진200량-3단계'), ('29e43e83-f942-4a16-9d58-2d2cad2ed97f', '703', 'THDL ', '과온 검지1(Thermal Fault Low-level Detect)', '0 : 정상, 1 : 고장검지', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'THDL = 과온 검지1(Thermal Fault Low-level Detect). 0 : 정상, 1 : 고장검지', '우진200량-3단계'), ('2a6644ad-00a3-401b-8c67-0f937f96965f', '251', 'ILCR2 ', 'AC 실내등 컨텍터 2 ON 상태확인(CONTACTOR 2 INTERIOR LIGHTS CLOSED)', '그 외의 경우 : 0, 접촉기 ON시 : 1', 'Woojin', 'T1', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'ILCR2 = AC 실내등 컨텍터 2 ON 상태확인(CONTACTOR 2 INTERIOR LIGHTS CLOSED). 그 외의 경우 : 0, 접촉기 ON시 : 1', '우진200량-3단계'), ('2a737678-5c5e-4067-972a-ebc57cc99859', '40', 'REV ', '전후진기 후진(REVERSE)', '그 외의 경우 : 0, 역전기 후진시 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'REV = 전후진기 후진(REVERSE). 그 외의 경우 : 0, 역전기 후진시 : 1', '우진200량-3단계'), ('2ae0afdc-6f47-4702-a3e7-34b359e88bc0', '550', 'DAMPCLF ', '배기댐퍼 닫힘고장(Damper Closed Fault)', '1 : 배기 댐퍼 닫힘 고장 , 0 : 정상', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'DAMPCLF = 배기댐퍼 닫힘고장(Damper Closed Fault). 1 : 배기 댐퍼 닫힘 고장 , 0 : 정상', '우진200량-3단계'), ('2ae54626-91d3-4933-bc0f-9a3d92c317a7', '32', 'BECU-SPEED ', '가장 가까이 있는 제동장치의 속도, 설정 차륜경으로 환산한 값(BECU-SPEED)', null, 'Woojin', 'BECU-SPEED', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'BECU-SPEED = 가장 가까이 있는 제동장치의 속도, 설정 차륜경으로 환산한 값(BECU-SPEED)', '우진200량-3단계'), ('2b4b9bba-47c3-4bb8-9225-b5a407b53273', '93', 'HLLCR ', '후미등 동작 상태(off)(TAIL LIGHT STATUS)', '그 외의 경우 : 0, 후미등 ON시 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'HLLCR = 후미등 동작 상태(off)(TAIL LIGHT STATUS). 그 외의 경우 : 0, 후미등 ON시 : 1', '우진200량-3단계'), ('2b4cf4d0-7ccb-4aa3-986a-261102cb468d', '356', 'ATOPSF ', '자동 정위치 정차 실패(ATO Precision Stop Error)', '자동 정위치 정차 정상 : 0, 자동 정위치 정차 실패 : 1', 'Woojin', 'ATC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'ATOPSF = 자동 정위치 정차 실패(ATO Precision Stop Error). 자동 정위치 정차 정상 : 0, 자동 정위치 정차 실패 : 1', '우진200량-3단계'), ('2b7156d4-8483-44f7-a078-d48d5a770a09', '966', 'RMD4-8F ', '노선안내표시기4-8 통신 상태(ROUTE MAP DISPLAY 4-8 FAULT)', '0 : 통신정상, 1 : 통신고장', 'Woojin', 'PIC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'RMD4-8F = 노선안내표시기4-8 통신 상태(ROUTE MAP DISPLAY 4-8 FAULT). 0 : 통신정상, 1 : 통신고장', '우진200량-3단계'), ('2b8b6689-42c0-4eaa-a97f-2cd70d86ae4c', '573', 'SP1F ', '1축 속도신호의 비정상(Speed1 Fault)', '0 : 정상, 1 : 고장검지', 'Woojin', 'BECU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'SP1F = 1축 속도신호의 비정상(Speed1 Fault). 0 : 정상, 1 : 고장검지', '우진200량-3단계'), ('2ba1d2f8-fb80-4e35-99a6-e1b7511c5ccd', '154', 'AFD ', '보조 퓨즈 용단(AF DISCONNECTED)', '그 외의 경우 : 0, 퓨즈 용단시 : 1', 'Woojin', 'M1', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'AFD = 보조 퓨즈 용단(AF DISCONNECTED). 그 외의 경우 : 0, 퓨즈 용단시 : 1', '우진200량-3단계'), ('2c10f497-5cb0-4429-b528-7e117ec903a1', '8', 'TC1HCR ', 'TC1 차량 선두차(TC1 HeadCarRelay)', null, 'Woojin', 'TIB', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'TC1HCR = TC1 차량 선두차(TC1 HeadCarRelay)', '우진200량-3단계'), ('2ca51cec-1768-4621-942a-93e7b16c21e8', '828', 'DCS1F ', '도어 닫힘 상태에서 DCS1 스위치 작동 되지 않음(DCS1 failure (LEFT))', '0 : 정상 1 : 고장', 'Woojin', 'DCU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'DCS1F = 도어 닫힘 상태에서 DCS1 스위치 작동 되지 않음(DCS1 failure (LEFT)). 0 : 정상 1 : 고장', '우진200량-3단계'), ('2d48cb08-0702-4c07-9d8a-c730bd73f0dc', '696', 'MMOCD ', '전동기 과전류 검지(Motor Over Current Detect)', '0 : 정상, 1 : 고장검지', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'MMOCD = 전동기 과전류 검지(Motor Over Current Detect). 0 : 정상, 1 : 고장검지', '우진200량-3단계'), ('2d5daa66-2d8a-4cd0-95c2-42e4cb7c6849', '182', 'EDF ', '단부도어 고장(END DOOR FAULT)', '그 외의 경우 : 0, 고장시 : 1', 'Woojin', 'M1', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'EDF = 단부도어 고장(END DOOR FAULT). 그 외의 경우 : 0, 고장시 : 1', '우진200량-3단계'), ('2d67ac25-aacf-437f-bf27-75ee69af44c2', '577', 'AS1PF ', '전두대차 공기스프링 누설 검지(Air Spring1 Pressure Fault)', '0 : 정상, 1 : 고장검지', 'Woojin', 'BECU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'AS1PF = 전두대차 공기스프링 누설 검지(Air Spring1 Pressure Fault). 0 : 정상, 1 : 고장검지', '우진200량-3단계'), ('2da74cab-9f64-4de7-8615-5002ffdfc4c0', '15', '모의주행 ', '양쪽 운전실의 모의 주행 여부 모니터링', null, 'Woojin', 'TIB', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', '모의주행 = 양쪽 운전실의 모의 주행 여부 모니터링', '우진200량-3단계'), ('2df4f610-22ad-4b5c-98ae-646bd4204991', '671', 'MCHK1ON ', 'MCHK1 Close 상태(MCHK1 ON)', '0 : 각 접촉기 Off 상태 1 : 각 접촉기 On 상태', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'MCHK1ON = MCHK1 Close 상태(MCHK1 ON). 0 : 각 접촉기 Off 상태 1 : 각 접촉기 On 상태', '우진200량-3단계'), ('2e0d966a-b5cf-4b10-aef7-d886af54ad7e', '1031', 'SCAM1-6R ', '6호차 3번 CCTV 카메라 녹화중(SALOON CAMERA 3-6 RECORD)', '0 : 이외의 조건, 1 : 이벤트 녹화 중', 'Woojin', 'NVR', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'SCAM1-6R = 6호차 3번 CCTV 카메라 녹화중(SALOON CAMERA 3-6 RECORD). 0 : 이외의 조건, 1 : 이벤트 녹화 중', '우진200량-3단계'), ('2e1eaa66-986f-4f17-9588-4206eab87b7e', '620', 'SPEED2 ', '2축 속도(Speed2)', '0~127.5km/h', 'Woojin', 'BECU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'SPEED2 = 2축 속도(Speed2). 0~127.5km/h', '우진200량-3단계'), ('2e3a1184-9cee-4ec5-a964-2daa02432388', '487', '380LV ', '입력전압 380V 저전압 검지모드(380 Low Voltage)', '1 : 380V 저전압모드, 0 : 380V 저전압모드 아님', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', '380LV = 입력전압 380V 저전압 검지모드(380 Low Voltage). 1 : 380V 저전압모드, 0 : 380V 저전압모드 아님', '우진200량-3단계'), ('2e47c4b0-f846-4cc5-a800-d0e90feadac5', '644', 'EB ', '비상제동 상태(Emergency Braking)', '0 : 비상제동 체결상태1 : Normal 상태', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'EB = 비상제동 상태(Emergency Braking). 0 : 비상제동 체결상태1 : Normal 상태', '우진200량-3단계'), ('2e7f8325-20c3-4141-8571-58ecf7463239', '659', 'MCOK2ON ', 'MCOK2 Close 상태(MCOK2 ON)', '0 : 각 접촉기 Off 상태 1 : 각 접촉기 On 상태', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'MCOK2ON = MCOK2 Close 상태(MCOK2 ON). 0 : 각 접촉기 Off 상태 1 : 각 접촉기 On 상태', '우진200량-3단계'), ('2e805ae4-c96d-426f-bcec-1d08eecce5d4', '547', 'U2AHOH ', 'UNIT2 보조히터 과열 발생 신호(UNIT2 Auxiliary Heater Over Heat)', '1 : UNIT2 보조히터 과열 발생, 0 : 정상', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'U2AHOH = UNIT2 보조히터 과열 발생 신호(UNIT2 Auxiliary Heater Over Heat). 1 : UNIT2 보조히터 과열 발생, 0 : 정상', '우진200량-3단계'), ('2eaa624d-8c17-47d0-a2b3-0ef6dfbd0411', '1200', 'FDUST6 ', '6호차 미세먼지 농도(Fine Dust Car6)', '0 ~ 255 (㎍/㎥)', 'Woojin', 'AIRP', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'FDUST6 = 6호차 미세먼지 농도(Fine Dust Car6). 0 ~ 255 (㎍/㎥)', '우진200량-3단계'), ('2eb51d63-9227-4ed0-8fdd-ab6a366f521f', '963', 'RMD1-7F ', '노선안내표시기1-7 통신 상태(ROUTE MAP DISPLAY 1-7 FAULT)', '0 : 통신정상, 1 : 통신고장', 'Woojin', 'PIC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'RMD1-7F = 노선안내표시기1-7 통신 상태(ROUTE MAP DISPLAY 1-7 FAULT). 0 : 통신정상, 1 : 통신고장', '우진200량-3단계'), ('2eca613e-b8eb-41a1-982a-bae5a2ad3959', '96', 'AC380_AN ', 'AC 380V NFB 트립(객실에어컨, 라인플로워) (CIRCUIT BREAKERS 380V 60Hz CLOSED (AIR.CON))', '트립시 : 0, 정상시 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'AC380_AN = AC 380V NFB 트립(객실에어컨, 라인플로워) (CIRCUIT BREAKERS 380V 60Hz CLOSED (AIR.CON)). 트립시 : 0, 정상시 : 1', '우진200량-3단계'), ('2ece8ddd-4c0d-461d-bd13-4d1322faef83', '863', 'ROMVER ', '소프트웨어 버전(Software Version)', '(0~255)', 'Woojin', 'PSD', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'ROMVER = 소프트웨어 버전(Software Version). (0~255)', '우진200량-3단계'), ('2f46fa3e-add6-4c54-9e98-d69f825eb64d', '824', 'DNC ', 'DCS1, DCS2, DLS 중 1개 이상이 비활성화 상태(Door not Closed Status)', '0 : 도어 닫힘 상태 1 : 도어 열림 상태', 'Woojin', 'DCU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'DNC = DCS1, DCS2, DLS 중 1개 이상이 비활성화 상태(Door not Closed Status). 0 : 도어 닫힘 상태 1 : 도어 열림 상태', '우진200량-3단계'), ('2f484c0a-cb4e-477e-9c7b-d2244a25c8af', '945', 'RMD1-4F ', '노선안내표시기1-4 통신 상태(ROUTE MAP DISPLAY 1-4 FAULT)', '0 : 통신정상, 1 : 통신고장', 'Woojin', 'PIC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'RMD1-4F = 노선안내표시기1-4 통신 상태(ROUTE MAP DISPLAY 1-4 FAULT). 0 : 통신정상, 1 : 통신고장', '우진200량-3단계'), ('2fb6d504-4aba-465f-8e01-8df216fcbcf5', '665', 'ONLY48R ', '차량 식별번호(Only 48R)', '0 : 48량 신조차량 이외 1 : 48량 신조차량', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'ONLY48R = 차량 식별번호(Only 48R). 0 : 48량 신조차량 이외 1 : 48량 신조차량', '우진200량-3단계'), ('30327bea-a407-4576-8b4d-1d230cb92df3', '743', 'WHEELDIA ', '평균 차륜경 값(Wheel Diameter)', '평균 차륜경은 80mm은 780mm, 160mm은 860mm을 의미한다.', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'WHEELDIA = 평균 차륜경 값(Wheel Diameter). 평균 차륜경은 80mm은 780mm, 160mm은 860mm을 의미한다.', '우진200량-3단계'), ('3060638d-bc73-4bda-a840-0cd81ec2980d', '278', 'EDF ', '단부도어 고장(END DOOR FAULT)', '그 외의 경우 : 0, 고장시 : 1', 'Woojin', 'T2', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'EDF = 단부도어 고장(END DOOR FAULT). 그 외의 경우 : 0, 고장시 : 1', '우진200량-3단계'), ('307c15b8-7e41-459e-8063-685063816c99', '120', 'DROLPBD ', '좌측 출입문 재열림(데스크)(DOORS REOPEN LEFT(DESK))', '그 외의 경우 : 0, 스위치 ON시 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'DROLPBD = 좌측 출입문 재열림(데스크)(DOORS REOPEN LEFT(DESK)). 그 외의 경우 : 0, 스위치 ON시 : 1', '우진200량-3단계'), ('3104a1fd-32f6-4ccd-bf71-760926751f85', '910', 'DRDIR ', '다음역 출입문 방향(DOOR DIRECTION)', '0 : 오른쪽, 1 : 왼쪽', 'Woojin', 'PIC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'DRDIR = 다음역 출입문 방향(DOOR DIRECTION). 0 : 오른쪽, 1 : 왼쪽', '우진200량-3단계'), ('310c9464-9b5a-4015-85f1-708b39a44106', '745', 'LIFECNT ', 'Life Sign(Life sign)', '0∼255을 전송시마다 increment 한다.', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'LIFECNT = Life Sign(Life sign). 0∼255을 전송시마다 increment 한다.', '우진200량-3단계'), ('3140d5d7-fcf8-472c-9457-cfabfde07fd6', '17', 'PASTART ', '방송 시작 버튼을 누르면 ON(1), 다시 누르면 OFF(0)', '방송 시작 버튼을 누르면 ON(1), 다시 누르면 OFF(0)', 'Woojin', 'TIB', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'PASTART = 방송 시작 버튼을 누르면 ON(1), 다시 누르면 OFF(0)', '우진200량-3단계'), ('3142c2b7-d1c1-4543-9436-dd5189603c36', '234', 'BRCOCK2 ', '제동 차단 코크3 스위치 미동작(BOGIE #2)(NO BRAKE CUT-OUT COCK BOGIE #2)', 'BC cock cutout 시 : 0, 그 외의 경우 : 1', 'Woojin', 'T1', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'BRCOCK2 = 제동 차단 코크3 스위치 미동작(BOGIE #2)(NO BRAKE CUT-OUT COCK BOGIE #2). BC cock cutout 시 : 0, 그 외의 경우 : 1', '우진200량-3단계'), ('31f688ca-f559-49ef-8e1c-a4163309496e', '1148', 'DDS3-6F ', '6호차 미세먼지센서3 고장상태(Dust Detector Sensor AP3 Car6 Fault)', '1 : 고장, 0 : 정상', 'Woojin', 'AIRP', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'DDS3-6F = 6호차 미세먼지센서3 고장상태(Dust Detector Sensor AP3 Car6 Fault). 1 : 고장, 0 : 정상', '우진200량-3단계'), ('3222e0fd-a69f-499c-9a5d-8523ee687a0e', '759', 'CHK ', 'CHK 접촉기 투입 정보(CHK ON)', '0 : 이외의 조건, 1 : CHK 투입 시', 'Woojin', 'SIV', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'CHK = CHK 접촉기 투입 정보(CHK ON). 0 : 이외의 조건, 1 : CHK 투입 시', '우진200량-3단계'), ('32333589-19db-467f-884b-77a71be3325c', '692', 'CLVD_P1 ', '제어전원 전압저하(PWM1)(Control Low Voltage Detect_PWM1)', '0 : 정상, 1 : 고장검지', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'CLVD_P1 = 제어전원 전압저하(PWM1)(Control Low Voltage Detect_PWM1). 0 : 정상, 1 : 고장검지', '우진200량-3단계'), ('32c0e989-bc33-497f-b5ab-d9ee9a4d4b5f', '907', 'CURCODE ', '현재역 번호(CURRENT CODE)', '0~255', 'Woojin', 'PIC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'CURCODE = 현재역 번호(CURRENT CODE). 0~255', '우진200량-3단계'), ('32dc5055-9f43-4fb5-ac33-8a00e67238f0', '800', 'FDS1OP ', '차량별 사용되는 감지기 수량에 따라 해당 감지기의 사용유무를 나타낸다. 부산1호선의 경우 네 개의 감지기로 고정.(Fire Detector State1 Operation)', '0 : 사용하지 않음, 1 : 사용함', 'Woojin', 'FDU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'FDS1OP = 차량별 사용되는 감지기 수량에 따라 해당 감지기의 사용유무를 나타낸다. 부산1호선의 경우 네 개의 감지기로 고정.(Fire Detector State1 Operation). 0 : 사용하지 않음, 1 : 사용함', '우진200량-3단계'), ('330ea4ce-11ba-4fc4-bbb9-9b2aa9fd1d35', '109', 'ILCR2 ', 'AC 실내등 컨텍터 2 ON 상태확인(CONTACTOR 2 INTERIOR LIGHTS CLOSED)', '그 외의 경우 : 0, 접촉기 ON시 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'ILCR2 = AC 실내등 컨텍터 2 ON 상태확인(CONTACTOR 2 INTERIOR LIGHTS CLOSED). 그 외의 경우 : 0, 접촉기 ON시 : 1', '우진200량-3단계'), ('33192758-48b4-4bdc-bd2b-e4b0eefc1f2d', '303', 'SPEED ', '실제 열차속도 (운전모드 : FA / AUTO / MCS / YARD 모드 시에만 전송 (FMC 모드 시 열차속도 ‘0’))(Train Speed)', '0~255km/h', 'Woojin', 'ATC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'SPEED = 실제 열차속도 (운전모드 : FA / AUTO / MCS / YARD 모드 시에만 전송 (FMC 모드 시 열차속도 ‘0’))(Train Speed). 0~255km/h', '우진200량-3단계'), ('3329f5f0-c8e8-4e28-a059-169d8b4aabed', '141', 'LFF2KCC ', '라인플로우 팬 접촉기 2 개방(LINE FLOW FANS CONTACTOR 2)', '그 외의 경우 : 0, 접촉기 ON시 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'LFF2KCC = 라인플로우 팬 접촉기 2 개방(LINE FLOW FANS CONTACTOR 2). 그 외의 경우 : 0, 접촉기 ON시 : 1', '우진200량-3단계'), ('332d66a1-01da-4e36-8ab7-ab40b3c6c237', '457', 'PA_ST ', '출발방송 동작 정보(PUBLIC ADDRESS-START)', '0 : 출발방송 미 동작, 1 : 출발방송 동작', 'Woojin', 'AVC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'PA_ST = 출발방송 동작 정보(PUBLIC ADDRESS-START). 0 : 출발방송 미 동작, 1 : 출발방송 동작', '우진200량-3단계'), ('33503804-e661-4fb8-927f-718d09711f67', '642', 'FORWARD ', '전진방향(FORWARD)', '0 : Forward 신호 수신 시 이외의 경우(TC1 방향 이외의 경우)1 : Forward 신호 수신 시(TC1 방향)', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'FORWARD = 전진방향(FORWARD). 0 : Forward 신호 수신 시 이외의 경우(TC1 방향 이외의 경우)1 : Forward 신호 수신 시(TC1 방향)', '우진200량-3단계'), ('33976799-3c73-4add-b31b-9859d6996d5f', '1112', 'ST-1 ', '운전실 선택(캠) 스위치에 의해 기준온도가 실내기준온도-1도로 설정(Standard Temperature -1℃)', '1 : 동작중, 0 : 중지상태, Default : 0', 'Woojin', 'CHVAC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'ST-1 = 운전실 선택(캠) 스위치에 의해 기준온도가 실내기준온도-1도로 설정(Standard Temperature -1℃). 1 : 동작중, 0 : 중지상태, Default : 0', '우진200량-3단계'), ('33cedbe5-f1e9-4b86-b7ad-f45f3ea7a451', '632', 'GATEAPP ', 'GATE 기동(Gate Apply)', '0 : Gate Off 1 : Gate Start', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'GATEAPP = GATE 기동(Gate Apply). 0 : Gate Off 1 : Gate Start', '우진200량-3단계'), ('340e3a65-f841-4732-b73c-90ac03af7f79', '683', 'BREAKECMD ', 'BECU로부터의 제동 지령 값(BECU Brake Command)', '0∼100%', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'BREAKECMD = BECU로부터의 제동 지령 값(BECU Brake Command). 0∼100%', '우진200량-3단계'), ('3445f896-000a-48bd-b808-6ffce6056200', '802', 'D3STATE ', '각 감지기의 상태(정상, 화재, 고장)를 나타낸다.(Detector3 State)', '0 : 정상, 3 : 화재, 2 : 고장, Default : 0', 'Woojin', 'FDU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'D3STATE = 각 감지기의 상태(정상, 화재, 고장)를 나타낸다.(Detector3 State). 0 : 정상, 3 : 화재, 2 : 고장, Default : 0', '우진200량-3단계'), ('345deb84-7023-4cc5-8d64-9fa7a8b32ee8', '187', 'FA1 ', '화재감지기 고장(FIRE DETECTION UNIT FAULT)', '그 외의 경우 : 1, 고장시 : 0', 'Woojin', 'M1', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'FA1 = 화재감지기 고장(FIRE DETECTION UNIT FAULT). 그 외의 경우 : 1, 고장시 : 0', '우진200량-3단계'), ('3469e03e-1cec-4381-8962-c1fd74cc44c9', '686', 'P_WATT ', 'Powering 적산전력(Powering Watt)', '역 간 역행의 적산전력량을 TCMS로 송신한다. 역 정차(SDR TEXT 12 Speed from BECU가 “0” 시)시 값을 0bit로 리셋한다.', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'P_WATT = Powering 적산전력(Powering Watt). 역 간 역행의 적산전력량을 TCMS로 송신한다. 역 정차(SDR TEXT 12 Speed from BECU가 “0” 시)시 값을 0bit로 리셋한다.', '우진200량-3단계'), ('34755364-398f-4241-b3af-47ebab05dd59', '559', 'WATCHDOG ', null, null, 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'WATCHDOG = Life Sign 0~255', '우진200량-3단계'), ('34c83985-755a-470a-893c-44299c736d4a', '922', 'RMD6-1F ', '노선안내표시기6-1 통신 상태(ROUTE MAP DISPLAY 6-1 FAULT)', '0 : 통신정상, 1 : 통신고장', 'Woojin', 'PIC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'RMD6-1F = 노선안내표시기6-1 통신 상태(ROUTE MAP DISPLAY 6-1 FAULT). 0 : 통신정상, 1 : 통신고장', '우진200량-3단계'), ('34c84a72-a6ad-452e-bb0b-7fa554658d5f', '1036', 'SCAM2-8R ', '8호차 2번 CCTV 카메라 녹화중(SALOON CAMERA 2-8 RECORD)', '0 : 이외의 조건, 1 : 이벤트 녹화 중', 'Woojin', 'NVR', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'SCAM2-8R = 8호차 2번 CCTV 카메라 녹화중(SALOON CAMERA 2-8 RECORD). 0 : 이외의 조건, 1 : 이벤트 녹화 중', '우진200량-3단계'), ('35354dd8-d5cf-4b88-b5c0-03471a695be7', '27', 'PBR ', '역행/제동 토크 지령값', null, 'Woojin', 'TIB', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'PBR = 역행/제동 토크 지령값', '우진200량-3단계'), ('354b7dd8-47a1-45a9-ba35-4f0952b7ee2c', '480', 'U1FULLC ', 'UNIT1 전냉방 운전모드(Unit1 Full Cooling Mode)', '1 : UNIT1 전냉방모드, 0 : UNIT1 전냉방모드 아님', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'U1FULLC = UNIT1 전냉방 운전모드(Unit1 Full Cooling Mode). 1 : UNIT1 전냉방모드, 0 : UNIT1 전냉방모드 아님', '우진200량-3단계'), ('355ba9be-e2b3-4d02-987a-354273fe45ec', '1092', 'TRCP8F ', 'TC2 TRCP장치 고장 상태 정보(TRCP car8 Fault)', '1 : 고장, 0 : 정상, Default : 0', 'Woojin', 'TRS', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'TRCP8F = TC2 TRCP장치 고장 상태 정보(TRCP car8 Fault). 1 : 고장, 0 : 정상, Default : 0', '우진200량-3단계'), ('356aa660-b675-4765-9299-afd3a99ba8bd', '792', 'DCINC ', 'DC 입력 전류 정보(DC Input Current)', '0~500A', 'Woojin', 'SIV', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'DCINC = DC 입력 전류 정보(DC Input Current). 0~500A', '우진200량-3단계'), ('35a4c3f8-cf52-4a96-97d0-4f3c8943022a', '423', 'PEI2-7F ', 'M2 (CAR 7) PEI 2 고장 정보(PASSENGER EMERGENCY INTERCOM 2-7 FAULT)', '0 : 정상, 1 : 고장', 'Woojin', 'AVC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'PEI2-7F = M2 (CAR 7) PEI 2 고장 정보(PASSENGER EMERGENCY INTERCOM 2-7 FAULT). 0 : 정상, 1 : 고장', '우진200량-3단계'), ('35b69d05-8b16-46a9-9ccf-eb202e694074', '540', 'CRVF1F ', '전자접촉기 배기팬 1 고장(Car Room Ventilation Fan 1 Fault)', '1 : 고장 , 0 : 정상', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'CRVF1F = 전자접촉기 배기팬 1 고장(Car Room Ventilation Fan 1 Fault). 1 : 고장 , 0 : 정상', '우진200량-3단계'), ('35fdb1d2-5d4f-4601-89fe-73f69ef5526d', '708', 'FCD ', 'FC 충전불량(FC Chargeing Failure Detect)', '0 : 정상, 1 : 고장검지', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'FCD = FC 충전불량(FC Chargeing Failure Detect). 0 : 정상, 1 : 고장검지', '우진200량-3단계'), ('363bf1c3-a608-4d62-a4fa-b3686d8521a1', '1115', 'TEST ', '냉방장치의 시험 실행 상태모드(0~2)(Test state)', '1 : 시험중모드, 2 : 시험완료모드, 0 : 초기상태모드, Default : 0', 'Woojin', 'CHVAC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'TEST = 냉방장치의 시험 실행 상태모드(0~2)(Test state). 1 : 시험중모드, 2 : 시험완료모드, 0 : 초기상태모드, Default : 0', '우진200량-3단계'), ('363ef7b7-b7a8-414b-a79f-c2aecd60946a', '603', 'CPRD ', '강제완해 검지(COMPULSORY RELEASE Detected)', '0 : NO CPRD, 1 : CPRD', 'Woojin', 'BECU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'CPRD = 강제완해 검지(COMPULSORY RELEASE Detected). 0 : NO CPRD, 1 : CPRD', '우진200량-3단계'), ('3669fc79-8240-41f5-be3d-2e861089427c', '112', 'ATC_DRCL ', 'ATC 출입문 닫힘 지령(DOOR CLOSED ATC)', '그 외의 경우 : 0, 스위치 ON시 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'ATC_DRCL = ATC 출입문 닫힘 지령(DOOR CLOSED ATC). 그 외의 경우 : 0, 스위치 ON시 : 1', '우진200량-3단계'), ('36746a43-af7b-4a3b-9eb8-56d6e5afaa3f', '970', 'ROMVER ', '롬버전(ROM VERSION)', null, 'Woojin', 'PIC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'ROMVER = 롬버전(ROM VERSION). ', '우진200량-3단계'), ('3759f93c-d655-4f1f-8676-93c9195f9b9b', '338', 'DCW ', '출입문 닫힘 경고 신호(신규노선에서 전송가능)(Door Close Warning (DCW))', 'No DCW : 0, DCW : 1', 'Woojin', 'ATC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'DCW = 출입문 닫힘 경고 신호(신규노선에서 전송가능)(Door Close Warning (DCW)). No DCW : 0, DCW : 1', '우진200량-3단계'), ('37959877-8cc2-44cc-ab08-090ee521580b', '477', 'LRR ', '부하반감 운전모드(Load Reduction Relay)', '1 : 부하반감모드, 0 : 부하반감모드 아님', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'LRR = 부하반감 운전모드(Load Reduction Relay). 1 : 부하반감모드, 0 : 부하반감모드 아님', '우진200량-3단계'), ('37a9a580-c485-436b-94f4-1f2582ef22c9', '868', 'OOC ', '출력 과전류(Output Over Current)', '1 : 고장, 0 : 정상', 'Woojin', 'CMSB', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'OOC = 출력 과전류(Output Over Current). 1 : 고장, 0 : 정상', '우진200량-3단계'), ('37c3989c-8360-4b10-b907-85b1cd182055', '1041', 'ROMVER ', '롬버전(ROM VERSION)', '0~255', 'Woojin', 'NVR', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'ROMVER = 롬버전(ROM VERSION). 0~255', '우진200량-3단계'), ('37d835b9-3505-434d-981e-481098300ce0', '95', 'AC380_EN ', 'AC 380V NFB 트립(OTHERS,ETC) (CIRCUIT BREAKERS 380V 60Hz CLOSED (OTHERS))', '트립시 : 0, 정상시 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'AC380_EN = AC 380V NFB 트립(OTHERS,ETC) (CIRCUIT BREAKERS 380V 60Hz CLOSED (OTHERS)). 트립시 : 0, 정상시 : 1', '우진200량-3단계'), ('381feb30-f9e6-463f-9bd3-26415c54f690', '497', 'T_FAN ', '환기시험 황목 번호(Test Fan Mode)', '1 : 환기시험 결과 NG 모드, 0 : 환기시험 결과 NG모드아님', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'T_FAN = 환기시험 황목 번호(Test Fan Mode). 1 : 환기시험 결과 NG 모드, 0 : 환기시험 결과 NG모드아님', '우진200량-3단계'), ('3869c019-90b7-4737-900f-6295dd4cf551', '29', '가선전압 ', '차량의 가선전압(SIV 값)', null, 'Woojin', 'TIB', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', '가선전압 = 차량의 가선전압(SIV 값)', '우진200량-3단계'), ('38956725-5ada-44a0-8592-cb01142e9d78', '908', 'NXTCODE ', '다음역 번호(NEXT CODE)', '0~255', 'Woojin', 'PIC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'NXTCODE = 다음역 번호(NEXT CODE). 0~255', '우진200량-3단계'), ('3908ebec-6f15-44b4-9f3e-ee4deb06841a', '1008', 'SCAM3-5F ', '5호차 1번 CCTV 카메라 고장상태(SALOON CAMERA 1-5 FAULT)', '0 : 정상 상태 (상시 녹화 중), 1 : 카메라 고장 시', 'Woojin', 'NVR', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'SCAM3-5F = 5호차 1번 CCTV 카메라 고장상태(SALOON CAMERA 1-5 FAULT). 0 : 정상 상태 (상시 녹화 중), 1 : 카메라 고장 시', '우진200량-3단계'), ('391fbc6a-43f8-40e4-91ef-100df12feb09', '390', 'SOBIN1F ', 'TC1 (CAR 1) SOB IN(매립형) 고장 정보(SIDE OPERATION BOX-IN 1 FAULT)', '0 : 정상, 1 : 고장', 'Woojin', 'AVC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'SOBIN1F = TC1 (CAR 1) SOB IN(매립형) 고장 정보(SIDE OPERATION BOX-IN 1 FAULT). 0 : 정상, 1 : 고장', '우진200량-3단계'), ('39366ef9-a125-48f2-b2e1-ee2a1ba77300', '336', 'ST_VAL ', '역정보 신호 유효(Station Valid)', 'No Station Valid: 0, Station Valid : 1', 'Woojin', 'ATC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'ST_VAL = 역정보 신호 유효(Station Valid). No Station Valid: 0, Station Valid : 1', '우진200량-3단계'), ('394b4b44-5b3d-47f0-abb2-aff0aeaf39d1', '617', 'BCPT_END ', 'BC압력 시험완료(Brake Cylinder Pressure Test END)', '0 : 이외의 경우, 1 : BCP시험완료', 'Woojin', 'BECU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'BCPT_END = BC압력 시험완료(Brake Cylinder Pressure Test END). 0 : 이외의 경우, 1 : BCP시험완료', '우진200량-3단계'), ('396b6df6-24fa-4254-b2b2-86e1b8aac72b', '920', 'SLAVE ', 'Slave 동작 상태(SLAVE)', '0 : 이외의 조건, 1 : Slave', 'Woojin', 'PIC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'SLAVE = Slave 동작 상태(SLAVE). 0 : 이외의 조건, 1 : Slave', '우진200량-3단계'), ('3974ced7-6178-40d0-b087-008086683592', '596', 'B ', '제동선택 검지(Braking)', '0 : 비제동상태, 1 : 제동상태', 'Woojin', 'BECU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'B = 제동선택 검지(Braking). 0 : 비제동상태, 1 : 제동상태', '우진200량-3단계'), ('39b6dd8b-c3ea-4eb3-86f3-afd23041f015', '264', 'ASCOCK1 ', 'AS 압력 코크 스위치1 미동작(NO AIR SPRING CUT-OUT COCK #1)', 'AS cock cutout 시 : 0, 그 외의 경우 : 1', 'Woojin', 'T2', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'ASCOCK1 = AS 압력 코크 스위치1 미동작(NO AIR SPRING CUT-OUT COCK #1). AS cock cutout 시 : 0, 그 외의 경우 : 1', '우진200량-3단계'), ('3a15b00a-82ec-413a-8e4c-aa4721099054', '7', '차량번호 ', '차량번호(Car Number)', null, 'Woojin', 'TIB', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', '차량번호 = 차량번호(Car Number)', '우진200량-3단계'), ('3a5a0fce-54a5-43ee-8e29-0d6a54291f03', '630', 'PKWH ', '역행 전력량(Powering Kilowatt)', 'TCU에서 연산한 전력량을 1kWh마다 1초간 “1”을 출력한다.', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'PKWH = 역행 전력량(Powering Kilowatt). TCU에서 연산한 전력량을 1kWh마다 1초간 “1”을 출력한다.', '우진200량-3단계'), ('3a733188-ecbc-4f5a-9ea2-4c871edeb949', '1079', 'PEI2-2E ', '2호차 2위 비상인터폰 종료상태(PASSENGER EMERGENCY INTERCOM 2-2 END)', '1 : 연결됨, 0 : 연결안됨', 'Woojin', 'TRS', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'PEI2-2E = 2호차 2위 비상인터폰 종료상태(PASSENGER EMERGENCY INTERCOM 2-2 END). 1 : 연결됨, 0 : 연결안됨', '우진200량-3단계'), ('3aafa832-ccc5-4d3e-8211-fef3b6c0c18f', '249', 'LFF2K ', 'LINE FLOW FANS CONTACTOR 2 ON(LINE FLOW FANS CONTACTOR 2 CLOSED)', '그 외의 경우 : 0, 접촉기 ON시 : 1', 'Woojin', 'T1', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'LFF2K = LINE FLOW FANS CONTACTOR 2 ON(LINE FLOW FANS CONTACTOR 2 CLOSED). 그 외의 경우 : 0, 접촉기 ON시 : 1', '우진200량-3단계'), ('3abbd7bf-73d7-489b-bcb0-3ac5fd67db40', '825', 'PARAMF ', 'EEPROM으로부터 parameter 데이터 로딩 실패(Parameter error)', '0 : 정상 1 : 고장', 'Woojin', 'DCU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'PARAMF = EEPROM으로부터 parameter 데이터 로딩 실패(Parameter error). 0 : 정상 1 : 고장', '우진200량-3단계'), ('3aecf318-d66a-4ce9-81f7-c09343a6a612', '535', 'CRCM2F ', '전자접촉기 압축기 2 고장(Car Room Compressor Motor 2 Fault)', '1 : 고장, 0 : 정상', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'CRCM2F = 전자접촉기 압축기 2 고장(Car Room Compressor Motor 2 Fault). 1 : 고장, 0 : 정상', '우진200량-3단계'), ('3b38600f-67ff-40a5-950f-1f62ae93b28f', '342', 'ATO_DTG ', 'HCR ‘ON’ 부터 ‘OFF’까지의 누적 이동거리 단위 (FA / AUTO / MCS / YARD 모드 시에만 전송)', '(ATO Distance To Go 1 ~ 6553.5m)', 'Woojin', 'ATC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'ATO_DTG = HCR ‘ON’ 부터 ‘OFF’까지의 누적 이동거리 단위 (FA / AUTO / MCS / YARD 모드 시에만 전송). (ATO Distance To Go 1 ~ 6553.5m)', '우진200량-3단계'), ('3b3f67ba-69fe-4629-872a-c1dfba8d71c2', '796', 'WATCHDOG ', '워치독(Watchdog Counter)', null, 'Woojin', 'SIV', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'WATCHDOG = 워치독(Watchdog Counter). ', '우진200량-3단계'), ('3b4a6a0f-9b99-43d0-bfee-b6783a7df83f', '1069', 'PEI1-4E ', '4호차 1위 비상인터폰 종료상태(PASSENGER EMERGENCY INTERCOM 1-4 END)', '1 : 연결됨, 0 : 연결안됨', 'Woojin', 'TRS', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'PEI1-4E = 4호차 1위 비상인터폰 종료상태(PASSENGER EMERGENCY INTERCOM 1-4 END). 1 : 연결됨, 0 : 연결안됨', '우진200량-3단계'), ('3b6c85df-04a2-43ea-83bb-461f446228cb', '909', 'DSTCODE ', '종착역 번호(DESTINATION CODE)', '0~255', 'Woojin', 'PIC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'DSTCODE = 종착역 번호(DESTINATION CODE). 0~255', '우진200량-3단계'), ('3be26c36-ce90-4024-8c3e-2ef9fc4ce202', '1127', 'DAMPF ', '댐퍼 이상 상태(Damper Fault)', '1 : 댐퍼이상, 0 : 정상, Default : 0', 'Woojin', 'CHVAC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'DAMPF = 댐퍼 이상 상태(Damper Fault). 1 : 댐퍼이상, 0 : 정상, Default : 0', '우진200량-3단계'), ('3c223d46-f772-491d-836e-9c8ff0f8edb4', '1179', 'AP4-5S ', '5호차 공기정화기4 동작상태(Air Purifier4 Car5 State)', '0 : OFF, 1 : 약, 2 : 중, 3 : 강', 'Woojin', 'AIRP', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'AP4-5S = 5호차 공기정화기4 동작상태(Air Purifier4 Car5 State). 0 : OFF, 1 : 약, 2 : 중, 3 : 강', '우진200량-3단계'), ('3c5b3aaf-65ca-4e8b-8cbe-e36d2e5ca750', '107', 'INDCLSW ', 'DC 실내등 스위치 동작(INTERIOR DC LIGHTS ON)', '그 외의 경우 : 0, 스위치 ON시 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'INDCLSW = DC 실내등 스위치 동작(INTERIOR DC LIGHTS ON). 그 외의 경우 : 0, 스위치 ON시 : 1', '우진200량-3단계'), ('3c68b7a9-aec9-4d1a-96fc-6125dd07a6ee', '347', 'ATCWSF ', '차륜경 설정 값 오류 (Wheel1 또는 Wheel2)(ATC Wheel Size Error)', '차륜경 설정 정상 : 0, 차륜경 설정 에러 : 1', 'Woojin', 'ATC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'ATCWSF = 차륜경 설정 값 오류 (Wheel1 또는 Wheel2)(ATC Wheel Size Error). 차륜경 설정 정상 : 0, 차륜경 설정 에러 : 1', '우진200량-3단계'), ('3c82c5ce-87b4-41d7-9133-9765306b6bc7', '627', 'INVACT ', '인버터 가동상태(INVERTER Ativation)', '0 : Gate Off 1 : Gate Start', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'INVACT = 인버터 가동상태(INVERTER Ativation). 0 : Gate Off 1 : Gate Start', '우진200량-3단계'), ('3d19bf6d-0411-4222-8111-1703d37cf7de', '451', 'PEI2-1 ', '비상인터폰 호출 위치 CAR 1 2위(PASSENGER EMERGENCY INTERCOM 2-1 CALL)', '0 : 미호출, 1 : 호출', 'Woojin', 'AVC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'PEI2-1 = 비상인터폰 호출 위치 CAR 1 2위(PASSENGER EMERGENCY INTERCOM 2-1 CALL). 0 : 미호출, 1 : 호출', '우진200량-3단계'), ('3d4438a9-f629-4cdc-bac9-adda7640b705', '103', 'TRPSN ', 'DC 100V TRPS NFB트립(12P RESCUE JUMPER POWER CIRCUIT BREAKER CLOSED)', '트립시 : 0, 정상시 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'TRPSN = DC 100V TRPS NFB트립(12P RESCUE JUMPER POWER CIRCUIT BREAKER CLOSED). 트립시 : 0, 정상시 : 1', '우진200량-3단계'), ('3d4a4f4f-97b0-4c41-b627-b214edb26373', '921', 'MASTER ', 'Master 동작 상태(MASTER)', '0 : 이외의 조건, 1 : Master', 'Woojin', 'PIC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'MASTER = Master 동작 상태(MASTER). 0 : 이외의 조건, 1 : Master', '우진200량-3단계'), ('3d70147a-9633-46a5-b544-9ceedd07fe23', '584', 'SKID1 ', '차축1 차륜 스키드검지(SKID1)', '0 : 이외의 경우, 1 : 차륜 스키드 검지', 'Woojin', 'BECU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'SKID1 = 차축1 차륜 스키드검지(SKID1). 0 : 이외의 경우, 1 : 차륜 스키드 검지', '우진200량-3단계'), ('3d71285e-4b91-45f0-91e0-1a047b8436eb', '1144', 'DDS3-3F ', '3호차 미세먼지센서3 고장상태(Dust Detector Sensor AP3 Car3 Fault)', '1 : 고장, 0 : 정상', 'Woojin', 'AIRP', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'DDS3-3F = 3호차 미세먼지센서3 고장상태(Dust Detector Sensor AP3 Car3 Fault). 1 : 고장, 0 : 정상', '우진200량-3단계'), ('3d992947-9975-463d-929f-ace51b2a24a3', '578', 'AS2PF ', '후미대차 공기스프링 누설 검지(Air Spring2 Pressure Fault)', '0 : 정상, 1 : 고장검지', 'Woojin', 'BECU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'AS2PF = 후미대차 공기스프링 누설 검지(Air Spring2 Pressure Fault). 0 : 정상, 1 : 고장검지', '우진200량-3단계'), ('3db54c70-c027-4c5f-8f40-5d0d5626c580', '832', 'ZVRF ', '차량 ZVR 신호가 없는 상태에서 열림 명령이 인가되는 에러(ZVR signal error)', '0 : 정상 1 : 고장', 'Woojin', 'DCU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'ZVRF = 차량 ZVR 신호가 없는 상태에서 열림 명령이 인가되는 에러(ZVR signal error). 0 : 정상 1 : 고장', '우진200량-3단계'), ('3df4460a-5627-425b-8106-987fcd5ba103', '532', 'CREF3F ', '전자접촉기 증발기 3 고장(Car Room Evaporator Fan 3 Fault)', '1 : 고장, 0 : 정상', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'CREF3F = 전자접촉기 증발기 3 고장(Car Room Evaporator Fan 3 Fault). 1 : 고장, 0 : 정상', '우진200량-3단계'), ('3e008439-3ec6-497d-b2f9-a3874d17307d', '770', 'GDFUX1 ', '인버터1 Gate Driver U상 고장 검지(Gate Driver Fault U1)', '0 : 이외의 조건, 1 : 인버터2 Gate Driver U상 고장 검지 시', 'Woojin', 'SIV', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'GDFUX1 = 인버터1 Gate Driver U상 고장 검지(Gate Driver Fault U1). 0 : 이외의 조건, 1 : 인버터2 Gate Driver U상 고장 검지 시', '우진200량-3단계'), ('3e09be08-0bf5-4277-b635-5a56b85b22e0', '230', 'SCBCOCK ', '보안제동 차단 코크 스위치 미동작(NO SECURITY BRAKE CUT-OUT COCK #1)', 'SBR cock cutout 시 : 0, 그 외의 경우 : 1', 'Woojin', 'T1', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'SCBCOCK = 보안제동 차단 코크 스위치 미동작(NO SECURITY BRAKE CUT-OUT COCK #1). SBR cock cutout 시 : 0, 그 외의 경우 : 1', '우진200량-3단계'), ('3e210335-1ffb-4eeb-b97e-9afddaf59026', '756', 'RESET ', 'SIV 리셋 정보(SIV RESET)', '0 : 이외의 조건, 1 : SIV RESET 스위치 취급 시', 'Woojin', 'SIV', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'RESET = SIV 리셋 정보(SIV RESET). 0 : 이외의 조건, 1 : SIV RESET 스위치 취급 시', '우진200량-3단계'), ('3e48bb2c-73aa-49f0-b427-24b4b72d745c', '1116', 'ST+6 ', '운전실 선택(캠) 스위치에 의해 기준온도가 실내기준온도+6도로 설정(Standard Temperature +6℃)', '1 : 동작중, 0 : 중지상태, Default : 0', 'Woojin', 'CHVAC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'ST+6 = 운전실 선택(캠) 스위치에 의해 기준온도가 실내기준온도+6도로 설정(Standard Temperature +6℃). 1 : 동작중, 0 : 중지상태, Default : 0', '우진200량-3단계'), ('3e571643-0cba-40f6-860c-bce49b7b6057', '83', 'MAS_BKR ', '마스콘 제동신호(MASCON BRAKING)', '그 외의 경우 : 0, 마스콘 제동신호 ON시 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'MAS_BKR = 마스콘 제동신호(MASCON BRAKING). 그 외의 경우 : 0, 마스콘 제동신호 ON시 : 1', '우진200량-3단계'), ('3e674d7b-f0aa-47ae-bf92-67b5a6939ab6', '407', 'PEI1-4F ', 'T1 (CAR 4) PEI 1 고장 정보(PASSENGER EMERGENCY INTERCOM 1-4 FAULT)', '0 : 정상, 1 : 고장', 'Woojin', 'AVC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'PEI1-4F = T1 (CAR 4) PEI 1 고장 정보(PASSENGER EMERGENCY INTERCOM 1-4 FAULT). 0 : 정상, 1 : 고장', '우진200량-3단계'), ('3e8a3ec0-c231-44f4-b082-d1717c1f4883', '878', 'ACCTM ', '누적 가동시간[시간](Accumulate Time)', '0~65536', 'Woojin', 'CMSB', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'ACCTM = 누적 가동시간[시간](Accumulate Time). 0~65536', '우진200량-3단계'), ('3e8cd25f-9154-48a8-b183-8ef7cb50ce61', '570', 'AS2PSF ', '후미대차 AS 압력센서 고장(Air Spring2 Pressure Sensor Fault)', '0 : 정상, 1 : 고장검지', 'Woojin', 'BECU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'AS2PSF = 후미대차 AS 압력센서 고장(Air Spring2 Pressure Sensor Fault). 0 : 정상, 1 : 고장검지', '우진200량-3단계'), ('3f03adee-0511-4d8b-8870-aad610a58ef3', '258', 'EXTSR ', '연전급전 릴레이(ESK CLOSED COMMAND)', '릴레이 OFF시 : 0, 릴레이 ON시 : 1', 'Woojin', 'T1', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'EXTSR = 연전급전 릴레이(ESK CLOSED COMMAND). 릴레이 OFF시 : 0, 릴레이 ON시 : 1', '우진200량-3단계'), ('3f1f582b-c312-444e-9599-b2ff8be6137c', '1134', 'DDS1-2F ', '2호차 미세먼지센서1 고장상태(Dust Detector Sensor AP1 Car2 Fault)', '1 : 고장, 0 : 정상', 'Woojin', 'AIRP', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'DDS1-2F = 2호차 미세먼지센서1 고장상태(Dust Detector Sensor AP1 Car2 Fault). 1 : 고장, 0 : 정상', '우진200량-3단계'), ('3f452ace-325e-467c-8262-90a68b30b88f', '705', 'HBT ', 'HSCB Trip 검지(HSCB Trip)', '0 : 정상, 1 : 고장검지', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'HBT = HSCB Trip 검지(HSCB Trip). 0 : 정상, 1 : 고장검지', '우진200량-3단계'), ('3f7c199c-3861-43fb-9fd8-fcde334dbdfc', '309', 'DRVMODE ', 'ATCATO 운전모드정보(Driving Mode)', 'Invalid : 0, FMC : 1, YARD : 2, MCS : 3, AUTO: 4, FA : 5, Other : None', 'Woojin', 'ATC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'DRVMODE = ATCATO 운전모드정보(Driving Mode). Invalid : 0, FMC : 1, YARD : 2, MCS : 3, AUTO: 4, FA : 5, Other : None', '우진200량-3단계'), ('3f8d5dc6-bd46-4b08-bfb3-cf46e09c89e3', '431', 'PIB8F ', 'TC2 (CAR 8) PIB 고장 정보(PASSENGER INFORMATION BOARD 8 FAULT)', '0 : 정상, 1 : 고장', 'Woojin', 'AVC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'PIB8F = TC2 (CAR 8) PIB 고장 정보(PASSENGER INFORMATION BOARD 8 FAULT). 0 : 정상, 1 : 고장', '우진200량-3단계'), ('3faa1f5b-c604-4be6-9efa-f4f9431aaad7', '821', 'DOBS ', '도어 완전 열림 상태(Obstacle detection status)', '0 : 도어가 완전히 열리지 않은 상태 1 : 도어 완전 열림 상태', 'Woojin', 'DCU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'DOBS = 도어 완전 열림 상태(Obstacle detection status). 0 : 도어가 완전히 열리지 않은 상태 1 : 도어 완전 열림 상태', '우진200량-3단계'), ('3fc8ea28-921d-45aa-a3c8-91c42587e2dd', '892', 'BATV ', '배터리 전압(Battery Voltage)', '0~255V', 'Woojin', 'BMS', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'BATV = 배터리 전압(Battery Voltage). 0~255V', '우진200량-3단계'), ('3fde8352-17d9-46ce-8c2c-b92b8bfe94eb', '684', 'PBR ', '역행/회생 토크 지령 값(Powering / Braking Torque Reference)', '역행 : 1∼100kN, 회생 : -1∼-100kN', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'PBR = 역행/회생 토크 지령 값(Powering / Braking Torque Reference). 역행 : 1∼100kN, 회생 : -1∼-100kN', '우진200량-3단계'), ('3ff42013-93d5-4354-a0c3-3d938a3ded83', '235', 'BRCOCK1 ', '제동 차단 코크2 스위치 미동작(BOGIE #1)(NO BRAKE CUT-OUT COCK BOGIE #1)', 'BC cock cutout 시 : 0, 그 외의 경우 : 1', 'Woojin', 'T1', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'BRCOCK1 = 제동 차단 코크2 스위치 미동작(BOGIE #1)(NO BRAKE CUT-OUT COCK BOGIE #1). BC cock cutout 시 : 0, 그 외의 경우 : 1', '우진200량-3단계'), ('401a3bee-93db-4642-94da-b20be09fb7c5', '91', 'ATO_PS ', 'ATC/ATO 역행신호(ATC/ATO POWERING)', '그 외의 경우 : 0, ATC로부터의 추진명령 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'ATO_PS = ATC/ATO 역행신호(ATC/ATO POWERING). 그 외의 경우 : 0, ATC로부터의 추진명령 : 1', '우진200량-3단계'), ('401ea483-b081-4cfb-b388-a8c47344ea66', '41', 'FOR ', '전후진기 전진(FORWARD)', '그 외의 경우 : 0, 역전기 전진시 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'FOR = 전후진기 전진(FORWARD). 그 외의 경우 : 0, 역전기 전진시 : 1', '우진200량-3단계'), ('40c87c7a-6221-4c57-b49b-c9559e80745a', '1086', 'DID1F ', 'TC1 DID장치 고장 상태 정보(DID car1 Fault)', '1 : 고장, 0 : 정상, Default : 0', 'Woojin', 'TRS', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'DID1F = TC1 DID장치 고장 상태 정보(DID car1 Fault). 1 : 고장, 0 : 정상, Default : 0', '우진200량-3단계'), ('40cc52ff-a079-4a38-963d-69b55b2a1471', '137', 'EBCOLPC ', '비상제동 차단 데스크 램프 ON 명령(EMERGENCY BRAKE CUT-OUT(RED))', '그 외의 경우 : 0, 비상제동 차단시 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'EBCOLPC = 비상제동 차단 데스크 램프 ON 명령(EMERGENCY BRAKE CUT-OUT(RED)). 그 외의 경우 : 0, 비상제동 차단시 : 1', '우진200량-3단계'), ('40db0759-e05f-4b7a-9672-287cccb72cf9', '181', 'AC380_HN ', 'AC 380V NFB 트립(객실히터)(CIRCUIT BREAKERS 380V 60Hz CLOSED (HEATER))', '트립시 : 0, 정상시 : 1', 'Woojin', 'M1', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'AC380_HN = AC 380V NFB 트립(객실히터)(CIRCUIT BREAKERS 380V 60Hz CLOSED (HEATER)). 트립시 : 0, 정상시 : 1', '우진200량-3단계'), ('41624862-64a7-42b2-b151-68ecc025e0c4', '484', 'U1FAN ', 'UNIT1 환기 운전모드(Unit1 Fan Mode)', '1 : UNIT1 환기모드, 0 : UNIT1 환기모드 아님', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'U1FAN = UNIT1 환기 운전모드(Unit1 Fan Mode). 1 : UNIT1 환기모드, 0 : UNIT1 환기모드 아님', '우진200량-3단계'), ('4162f0f8-cbb4-4af1-bd1f-f98719a2bfc2', '940', 'RMD6-4F ', '노선안내표시기6-4 통신 상태(ROUTE MAP DISPLAY 6-4 FAULT)', '0 : 통신정상, 1 : 통신고장', 'Woojin', 'PIC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'RMD6-4F = 노선안내표시기6-4 통신 상태(ROUTE MAP DISPLAY 6-4 FAULT). 0 : 통신정상, 1 : 통신고장', '우진200량-3단계'), ('417157f9-8454-430b-92ef-ee1e62c30de3', '10', 'DCTR ', '모든 출입문 닫힘(ALL DOORS CLOSED IN TRAIN Relay)', null, 'Woojin', 'TIB', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'DCTR = 모든 출입문 닫힘(ALL DOORS CLOSED IN TRAIN Relay)', '우진200량-3단계'), ('41737ed8-f815-4380-8330-2d7495411600', '170', 'EMTR ', '비상판토 트립 동작 상태(NO EMERGENCY PANTOGRAPH TRIP)', '트립시 : 0, 정상시 : 1', 'Woojin', 'M1', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'EMTR = 비상판토 트립 동작 상태(NO EMERGENCY PANTOGRAPH TRIP). 트립시 : 0, 정상시 : 1', '우진200량-3단계'), ('41e2f627-7d6c-442a-a2b6-7e5d451d45e2', '1114', 'FAN ', '선택(캠)스위치에서 입력된 환기 운전상태(Fan state)', '1 : 동작중, 0 : 중지상태, Default : 0', 'Woojin', 'CHVAC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'FAN = 선택(캠)스위치에서 입력된 환기 운전상태(Fan state). 1 : 동작중, 0 : 중지상태, Default : 0', '우진200량-3단계'), ('42807182-402f-4d16-9426-a417d19437ee', '282', 'ILCR1 ', 'AC 실내등 컨텍터 1 ON 상태확인(CONTACTOR 1 INTERIOR LIGHTS CLOSED)', '그 외의 경우 : 0, 접촉기 ON시 : 1', 'Woojin', 'T2', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'ILCR1 = AC 실내등 컨텍터 1 ON 상태확인(CONTACTOR 1 INTERIOR LIGHTS CLOSED). 그 외의 경우 : 0, 접촉기 ON시 : 1', '우진200량-3단계'), ('42f763b3-f9e4-420a-95c2-22c6580ddf32', '874', 'CMRUNF ', 'CM 기동불가(CM Run Fault)', '1 : 기동불가상태, 0 : 정상상태', 'Woojin', 'CMSB', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'CMRUNF = CM 기동불가(CM Run Fault). 1 : 기동불가상태, 0 : 정상상태', '우진200량-3단계'), ('431357db-2ecc-495d-9af9-3da7070da0d3', '328', 'PWMN ', '자동/완전자동 운전시 ATO에서 출력하는 PWM Notch(PWM Notch)', '0~255', 'Woojin', 'ATC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'PWMN = 자동/완전자동 운전시 ATO에서 출력하는 PWM Notch(PWM Notch). 0~255', '우진200량-3단계'), ('433576e1-21f1-4245-9608-dbed4b8e00a3', '493', 'SC_STATE ', '자체 검사 실행 상태모드(Self Check Execution status)', '1 : 시험중모드, 2 : 시험완료모드, 0 : 초기상태모드,', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'SC_STATE = 자체 검사 실행 상태모드(Self Check Execution status). 1 : 시험중모드, 2 : 시험완료모드, 0 : 초기상태모드, ', '우진200량-3단계'), ('436a942f-55f4-4661-866a-5f2c00039ebb', '1035', 'SCAM3-8R ', '8호차 1번 CCTV 카메라 녹화중(SALOON CAMERA 1-8 RECORD)', '0 : 이외의 조건, 1 : 이벤트 녹화 중', 'Woojin', 'NVR', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'SCAM3-8R = 8호차 1번 CCTV 카메라 녹화중(SALOON CAMERA 1-8 RECORD). 0 : 이외의 조건, 1 : 이벤트 녹화 중', '우진200량-3단계'), ('43bba445-66a6-4f1f-8d41-77893b385347', '1138', 'DDS1-1F ', '1호차 미세먼지센서1 고장상태(Dust Detector Sensor AP1 Car1 Fault)', '1 : 고장, 0 : 정상', 'Woojin', 'AIRP', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'DDS1-1F = 1호차 미세먼지센서1 고장상태(Dust Detector Sensor AP1 Car1 Fault). 1 : 고장, 0 : 정상', '우진200량-3단계'), ('43d64304-ac52-4895-b309-313dc933b667', '353', 'STCODEF ', '역 코드 오류(Station Code Error)', '역 코드 정상 : 0, 역 코드 에러 : 1', 'Woojin', 'ATC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'STCODEF = 역 코드 오류(Station Code Error). 역 코드 정상 : 0, 역 코드 에러 : 1', '우진200량-3단계'), ('43e0edbb-5f03-4c49-9668-5b9ca01ec4c2', '1089', 'CVD8F ', 'TC2 CVD장치 고장 상태 정보(CVD car8 Fault)', '1 : 고장, 0 : 정상, Default : 0', 'Woojin', 'TRS', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'CVD8F = TC2 CVD장치 고장 상태 정보(CVD car8 Fault). 1 : 고장, 0 : 정상, Default : 0', '우진200량-3단계'), ('442df6c3-48e2-4e7c-ab35-b937c958bc87', '992', 'CCAM1F ', '1호차 운전실 카메라 고장상태(CAB CAMERA 1 FAULT)', '0 : 이외의 조건, 1 : 운전실 카메라 고장 시', 'Woojin', 'NVR', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'CCAM1F = 1호차 운전실 카메라 고장상태(CAB CAMERA 1 FAULT). 0 : 이외의 조건, 1 : 운전실 카메라 고장 시', '우진200량-3단계'), ('4475dc31-ebce-48f0-bcff-92a3a8baa9ef', '1120', 'CSFA ', '증발기 코일센서 상태(Coil Sensor Fault Alarm)', '1 : 센서이상, 0 : 정상, Default : 0', 'Woojin', 'CHVAC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'CSFA = 증발기 코일센서 상태(Coil Sensor Fault Alarm). 1 : 센서이상, 0 : 정상, Default : 0', '우진200량-3단계'), ('44a624a2-0ee7-435a-870f-b83a5e0bff13', '928', 'RMD6-2F ', '노선안내표시기6-2 통신 상태(ROUTE MAP DISPLAY 6-2 FAULT)', '0 : 통신정상, 1 : 통신고장', 'Woojin', 'PIC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'RMD6-2F = 노선안내표시기6-2 통신 상태(ROUTE MAP DISPLAY 6-2 FAULT). 0 : 통신정상, 1 : 통신고장', '우진200량-3단계'), ('44d4fb39-feb5-435b-8432-e8fbbe0d021b', '275', 'AC380_EN ', 'AC 380V NFB 트립(OTHERS,ETC)(CIRCUIT BREAKERS 380V 60Hz CLOSED (OTHERS))', '트립시 : 0, 정상시 : 1', 'Woojin', 'T2', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'AC380_EN = AC 380V NFB 트립(OTHERS,ETC)(CIRCUIT BREAKERS 380V 60Hz CLOSED (OTHERS)). 트립시 : 0, 정상시 : 1', '우진200량-3단계'), ('44e0719b-4bc4-4008-a978-44f94d8fbe48', '165', 'ACMG ', '보조공기 압축기 저압력 신호(LOW AUXILIARY AIR PRESSURE)', '그 외의 경우 : 0, 저압 검지시 : 1', 'Woojin', 'M1', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'ACMG = 보조공기 압축기 저압력 신호(LOW AUXILIARY AIR PRESSURE). 그 외의 경우 : 0, 저압 검지시 : 1', '우진200량-3단계'), ('44f2b32e-38d4-4764-b3bf-2fc7e8b0f183', '801', 'D4STATE ', '각 감지기의 상태(정상, 화재, 고장)를 나타낸다.(Detector4 State)', '0 : 정상, 3 : 화재, 2 : 고장, Default : 0', 'Woojin', 'FDU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'D4STATE = 각 감지기의 상태(정상, 화재, 고장)를 나타낸다.(Detector4 State). 0 : 정상, 3 : 화재, 2 : 고장, Default : 0', '우진200량-3단계'), ('451d1cba-6782-40be-ad8d-5e664f217990', '19', '노치 ', '노치(Notch)', null, 'Woojin', 'TIB', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', '노치 = 노치(Notch)', '우진200량-3단계'), ('459f984b-29f5-4d69-bb82-6078c5f3d401', '92', 'ATO_BS ', 'ATC/ATO 제동신호(ATC/ATO BRAKING)', '그 외의 경우 : 0, ATC로부터의 제동명령 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'ATO_BS = ATC/ATO 제동신호(ATC/ATO BRAKING). 그 외의 경우 : 0, ATC로부터의 제동명령 : 1', '우진200량-3단계'), ('45e158e9-2bcb-46bb-9235-69cdd4babeaf', '385', 'AMPIVOL ', 'PAMP 실내 볼륨정보(AMPLIFIER INSIDE VOLUMN)', '0~10', 'Woojin', 'AVC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'AMPIVOL = PAMP 실내 볼륨정보(AMPLIFIER INSIDE VOLUMN). 0~10', '우진200량-3단계'), ('460402c9-ddc0-4696-8a58-0de45f37d451', '614', 'TDNO ', 'TRACE DATA 개수(Trace Data No.)', '0~3', 'Woojin', 'BECU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'TDNO = TRACE DATA 개수(Trace Data No.). 0~3', '우진200량-3단계'), ('468a58fd-ea67-43d2-ad54-ef7aeb3ef055', '100', 'TCN ', 'DC 100V 추진회로 NFB 트립(TRACTION CIRCUIT BREAKER CLOSED)', '트립시 : 0, 정상시 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'TCN = DC 100V 추진회로 NFB 트립(TRACTION CIRCUIT BREAKER CLOSED). 트립시 : 0, 정상시 : 1', '우진200량-3단계'), ('468db5f4-770b-4f0e-9e4c-312e8cf183ab', '688', 'VLINE ', '가선전압 값(Line Valtage)', null, 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'VLINE = 가선전압 값(Line Valtage).', '우진200량-3단계'), ('46fad1e7-f036-43fd-9f74-78435703c20e', '798', 'FDS3OP ', '차량별 사용되는 감지기 수량에 따라 해당 감지기의 사용유무를 나타낸다. 부산1호선의 경우 네 개의 감지기로 고정.(Fire Detector State3 Operation)', '0 : 사용하지 않음, 1 : 사용함', 'Woojin', 'FDU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'FDS3OP = 차량별 사용되는 감지기 수량에 따라 해당 감지기의 사용유무를 나타낸다. 부산1호선의 경우 네 개의 감지기로 고정.(Fire Detector State3 Operation). 0 : 사용하지 않음, 1 : 사용함', '우진200량-3단계'), ('470eaef6-e632-4147-9db1-8b4abe485444', '542', 'AHEK1F ', '전자접촉기 보조히터 1 고장(Auxiliary Heater Electric Contactor1 Fault)', '1 : 고장 , 0 : 정상', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'AHEK1F = 전자접촉기 보조히터 1 고장(Auxiliary Heater Electric Contactor1 Fault). 1 : 고장 , 0 : 정상 ', '우진200량-3단계'), ('4745a89f-1402-4121-88ca-6ae522b9f94d', '88', 'CHVACF ', '운전실 마이컴 고장(CAB HVAC FAULT)', '그 외의 경우 : 1, FAULT 시 : 0', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'CHVACF = 운전실 마이컴 고장(CAB HVAC FAULT). 그 외의 경우 : 1, FAULT 시 : 0', '우진200량-3단계'), ('4750a09a-3d21-4c7a-bd14-6b87c351edcb', '998', 'SCAM1-1F ', '1호차 3번 CCTV 카메라 고장상태(SALOON CAMERA 3-1 FAULT)', '0 : 정상 상태 (상시 녹화 중), 1 : 카메라 고장 시', 'Woojin', 'NVR', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'SCAM1-1F = 1호차 3번 CCTV 카메라 고장상태(SALOON CAMERA 3-1 FAULT). 0 : 정상 상태 (상시 녹화 중), 1 : 카메라 고장 시', '우진200량-3단계'), ('478b807b-f52d-4b4c-9ca0-14b8befdec36', '12', 'MAS_PWR ', '마스콘 역행신호(MASCON POWERING)', null, 'Woojin', 'TIB', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'MAS_PWR = 마스콘 역행신호(MASCON POWERING)', '우진200량-3단계'), ('47bbc517-382f-4435-a928-bf7b24e441bb', '953', 'RMD5-6F ', '노선안내표시기5-6 통신 상태(ROUTE MAP DISPLAY 5-6 FAULT)', '0 : 통신정상, 1 : 통신고장', 'Woojin', 'PIC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'RMD5-6F = 노선안내표시기5-6 통신 상태(ROUTE MAP DISPLAY 5-6 FAULT). 0 : 통신정상, 1 : 통신고장', '우진200량-3단계'), ('47ef6155-8687-4527-b88c-5ecc68e816e7', '882', 'ON_DCH ', '배터리 방전 운영모드 표시(On Discharge)', '0 : 방전하지 않을 때, 1 : 방전 중일 때', 'Woojin', 'BMS', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'ON_DCH = 배터리 방전 운영모드 표시(On Discharge). 0 : 방전하지 않을 때, 1 : 방전 중일 때', '우진200량-3단계'), ('4804008e-d08c-4212-8d69-15360d7ec89b', '773', 'GDFUX2 ', '인버터2 Gate Driver U상 고장 검지(Gate Driver Fault U2)', '0 : 이외의 조건, 1 : 인버터2 Gate Driver U상 고장 검지 시', 'Woojin', 'SIV', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'GDFUX2 = 인버터2 Gate Driver U상 고장 검지(Gate Driver Fault U2). 0 : 이외의 조건, 1 : 인버터2 Gate Driver U상 고장 검지 시', '우진200량-3단계'), ('48139ab5-b729-4c7b-944f-614055d918eb', '582', 'LOGIF ', '인통선 제동로직의 비정상(Logic Fault)', '0 : 정상, 1 : 고장검지', 'Woojin', 'BECU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'LOGIF = 인통선 제동로직의 비정상(Logic Fault). 0 : 정상, 1 : 고장검지', '우진200량-3단계'), ('48150af8-27e9-407c-8754-7c093393c06d', '859', 'RF2_MEMF ', '2계 메모리 고장(RF2 Memory Fault)', '1 : 고장, 0 : 정상, Default : 0', 'Woojin', 'PSD', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'RF2_MEMF = 2계 메모리 고장(RF2 Memory Fault). 1 : 고장, 0 : 정상, Default : 0', '우진200량-3단계'), ('4853af67-5b40-4b67-b12a-5dd849688377', '806', 'MEMF ', '수신기 메모리 고장 상태를 나타낸다.(Memory Fault)', '0 : 정상, 1 : 메모리 고장 발생', 'Woojin', 'FDU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'MEMF = 수신기 메모리 고장 상태를 나타낸다.(Memory Fault). 0 : 정상, 1 : 메모리 고장 발생', '우진200량-3단계'), ('492abc00-1e39-473e-9cd0-5975dcde1139', '694', 'CFD ', '인버터 암단락(Communication Failure Detect)', '0 : 정상, 1 : 고장검지', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'CFD = 인버터 암단락(Communication Failure Detect). 0 : 정상, 1 : 고장검지', '우진200량-3단계'), ('49348fb7-8ee1-413f-8982-93c10e8009cd', '400', 'AMP2-2F ', 'M1 (CAR 2) AMP 2 고장 정보(AMPLIFIER 2-2 FAULT)', '0 : 정상, 1 : 고장', 'Woojin', 'AVC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'AMP2-2F = M1 (CAR 2) AMP 2 고장 정보(AMPLIFIER 2-2 FAULT). 0 : 정상, 1 : 고장', '우진200량-3단계'), ('495700dd-3e45-4729-8faa-08d569276352', '576', 'SP4F ', '4축 속도신호의 비정상(Speed4 Fault)', '0 : 정상, 1 : 고장검지', 'Woojin', 'BECU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'SP4F = 4축 속도신호의 비정상(Speed4 Fault). 0 : 정상, 1 : 고장검지', '우진200량-3단계'), ('496b2930-667d-4727-b0a7-940242cd3ac3', '721', 'GPLVD ', '게이트 전원전압 이상(Gate Power Low Voltage Detect)', '0 : 정상, 1 : 고장검지', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'GPLVD = 게이트 전원전압 이상(Gate Power Low Voltage Detect). 0 : 정상, 1 : 고장검지', '우진200량-3단계'), ('49bf6774-a923-40b7-8f06-5b8403a248b4', '473', '2P3H ', '2/3난방(700W) 운전모드(2/3 Heating Mode)', '1 : 2/3난방모드, 0 : 2/3난방모드 아님', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', '2P3H = 2/3난방(700W) 운전모드(2/3 Heating Mode). 1 : 2/3난방모드, 0 : 2/3난방모드 아님', '우진200량-3단계'), ('49d3fcd5-1471-46bc-8fe6-6edc382931dc', '931', 'RMD3-2F ', '노선안내표시기3-2 통신 상태(ROUTE MAP DISPLAY 3-2 FAULT)', '0 : 통신정상, 1 : 통신고장', 'Woojin', 'PIC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'RMD3-2F = 노선안내표시기3-2 통신 상태(ROUTE MAP DISPLAY 3-2 FAULT). 0 : 통신정상, 1 : 통신고장', '우진200량-3단계'), ('49e2cfd0-db21-4f21-84d9-645425a32485', '679', 'MR ', 'Modulation Ratio(Modulation Ratio)', '0∼100%', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'MR = Modulation Ratio(Modulation Ratio). 0∼100%', '우진200량-3단계'), ('4a3b490f-80de-411a-98f7-8d087d4b2817', '359', 'MASNCF ', '마스콘 중립위치 상태(Master Controller Not In Coasting)', 'MASCON In Coasting : 0, MASCON Not In Coasting : 1', 'Woojin', 'ATC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'MASNCF = 마스콘 중립위치 상태(Master Controller Not In Coasting). MASCON In Coasting : 0, MASCON Not In Coasting : 1', '우진200량-3단계'), ('4a46f694-64de-4e8e-aaa7-f460347de7f7', '1095', 'CPLVF ', '측정된 전원이 규정전압 이하(Power Low Voltage Fault)', '0 : 정상, 1 : 오류', 'Woojin', 'EVR', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'CPLVF = 측정된 전원이 규정전압 이하(Power Low Voltage Fault). 0 : 정상, 1 : 오류', '우진200량-3단계'), ('4aaec7af-ce0a-492a-8469-778d2424e964', '320', 'LDO ', 'ATCATO의 Left Door Open 출력 상태(LDO Command)', 'No LDO : 0, LDO : 1', 'Woojin', 'ATC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'LDO = ATCATO의 Left Door Open 출력 상태(LDO Command). No LDO : 0, LDO : 1', '우진200량-3단계'), ('4ab2d3ac-6f75-4f3d-ba3d-e038a6680ad2', '597', 'WSD ', '추진제어장치 활주검지(Wheel Slide Detected)', '0 : WSD 미검지, 1 : WSD 검지', 'Woojin', 'BECU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'WSD = 추진제어장치 활주검지(Wheel Slide Detected). 0 : WSD 미검지, 1 : WSD 검지', '우진200량-3단계'), ('4ae2e0c8-40dd-416f-8fc6-35ab4fd426e6', '208', 'NRBD ', '제동불완해 감지 인통선 신호(NON-RELEASE BRAKE DETECTED(NRBD))', '그 외의 경우 : 0, NRBD 검지시 : 1', 'Woojin', 'M2', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'NRBD = 제동불완해 감지 인통선 신호(NON-RELEASE BRAKE DETECTED(NRBD)). 그 외의 경우 : 0, NRBD 검지시 : 1', '우진200량-3단계'), ('4b2c7165-4bfd-4cc1-9daf-eccc7634a161', '1118', 'ISFA ', '실내센서 이상 상태(Indoor Static Fault Alarm)', '1 : 센서이상, 0 : 정상, Default : 0', 'Woojin', 'CHVAC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'ISFA = 실내센서 이상 상태(Indoor Static Fault Alarm). 1 : 센서이상, 0 : 정상, Default : 0', '우진200량-3단계'), ('4b36ed21-1510-45e6-9ffc-7bca86fccadb', '964', 'RMD6-8F ', '노선안내표시기6-8 통신 상태(ROUTE MAP DISPLAY 6-8 FAULT)', '0 : 통신정상, 1 : 통신고장', 'Woojin', 'PIC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'RMD6-8F = 노선안내표시기6-8 통신 상태(ROUTE MAP DISPLAY 6-8 FAULT). 0 : 통신정상, 1 : 통신고장', '우진200량-3단계'), ('4b845a61-df6a-4332-8c1b-25090c532bcc', '609', 'ABRC ', '공기제동감쇄지령 값(Air Braking Release Command)', '0~102%', 'Woojin', 'BECU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'ABRC = 공기제동감쇄지령 값(Air Braking Release Command). 0~102%', '우진200량-3단계'), ('4b9fa743-592b-4bec-9909-a849523cb729', '793', 'BCV ', 'BC 출력 전압 정보(BC Output Voltage)', '0~250V', 'Woojin', 'SIV', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'BCV = BC 출력 전압 정보(BC Output Voltage). 0~250V', '우진200량-3단계'), ('4bdf6b93-5d4b-427c-b49f-c06c00c35337', '528', 'VENT2OL ', '배기팬 2 과부하 신호(Vent2 Over Load)', '1 : 과부하, 0 : 정상', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'VENT2OL = 배기팬 2 과부하 신호(Vent2 Over Load). 1 : 과부하, 0 : 정상', '우진200량-3단계'), ('4bededbf-ee25-47ff-985b-9744f9f29bd6', '438', 'PEI1-6 ', '비상인터폰 호출 위치 CAR 6 1위(PASSENGER EMERGENCY INTERCOM 1-6 CALL)', '0 : 미호출, 1 : 호출', 'Woojin', 'AVC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'PEI1-6 = 비상인터폰 호출 위치 CAR 6 1위(PASSENGER EMERGENCY INTERCOM 1-6 CALL). 0 : 미호출, 1 : 호출', '우진200량-3단계'), ('4bf695a5-eeed-4223-a683-ca9fe812424a', '24', 'ATC코드 ', 'ATC코드', null, 'Woojin', 'TIB', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'ATC코드 = ATC코드', '우진200량-3단계'), ('4c3a659d-e683-4b39-bb75-108dd220374d', '969', 'RMD1-8F ', '노선안내표시기1-8 통신 상태(ROUTE MAP DISPLAY 1-8 FAULT)', '0 : 통신정상, 1 : 통신고장', 'Woojin', 'PIC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'RMD1-8F = 노선안내표시기1-8 통신 상태(ROUTE MAP DISPLAY 1-8 FAULT). 0 : 통신정상, 1 : 통신고장', '우진200량-3단계'), ('4c575cf6-28de-4bf3-adbe-249258ead7e3', '1028', 'SCAM1-3R ', '3호차 3번 CCTV 카메라 녹화중(SALOON CAMERA 3-3 RECORD)', '0 : 이외의 조건, 1 : 이벤트 녹화 중', 'Woojin', 'NVR', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'SCAM1-3R = 3호차 3번 CCTV 카메라 녹화중(SALOON CAMERA 3-3 RECORD). 0 : 이외의 조건, 1 : 이벤트 녹화 중', '우진200량-3단계'), ('4c7e4c8b-ce33-4312-bea0-57f882929c71', '452', 'ROMVER ', '롬버전(ROM VERSION)', '0~255', 'Woojin', 'AVC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'ROMVER = 롬버전(ROM VERSION). 0~255', '우진200량-3단계'), ('4cab9ebe-b311-49a3-b9a2-ad3636ddc152', '529', 'NT_COOL ', '냉방 시험 불가능 신호(No Test Cooling)', '1 : 냉방 시험 불가능, 0 : 정상', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'NT_COOL = 냉방 시험 불가능 신호(No Test Cooling). 1 : 냉방 시험 불가능, 0 : 정상', '우진200량-3단계'), ('4cc926b1-947a-4b80-b0b7-cc0b89b43c82', '973', 'TC1HCR ', 'TC1 HCR 투입여부(TC1 HeadCarRelay)', '0 : 이외의 조건, 1 : TC1 HCR 투입 시', 'Woojin', 'NVR', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'TC1HCR = TC1 HCR 투입여부(TC1 HeadCarRelay). 0 : 이외의 조건, 1 : TC1 HCR 투입 시', '우진200량-3단계'), ('4cf896e4-bec4-4d0b-8246-587741020044', '261', 'SCBCOCK ', '보안제동 차단 코크 스위치 미동작(NO SECURITY BRAKE CUT-OUT COCK #1)', 'SBR cock cutout 시 : 0, 그 외의 경우 : 1', 'Woojin', 'T2', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'SCBCOCK = 보안제동 차단 코크 스위치 미동작(NO SECURITY BRAKE CUT-OUT COCK #1). SBR cock cutout 시 : 0, 그 외의 경우 : 1', '우진200량-3단계'), ('4d5a2661-8d4b-43cb-b5c1-a460ddd25526', '780', 'SQCFLT ', '시퀀스 고장 검지 (Squence Fault)', '0 : 이외의 조건, 1 : 시퀀스 고장 검지 시', 'Woojin', 'SIV', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'SQCFLT = 시퀀스 고장 검지 (Squence Fault). 0 : 이외의 조건, 1 : 시퀀스 고장 검지 시', '우진200량-3단계'), ('4d816051-6f73-4100-9993-8e235920b659', '325', 'ZV ', 'ATCATO의 ZV 출력 상태(ZV Command)', 'No ZV : 0, ZV : 1', 'Woojin', 'ATC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'ZV = ATCATO의 ZV 출력 상태(ZV Command). No ZV : 0, ZV : 1', '우진200량-3단계'), ('4df0bae1-8206-455f-b5c1-f8e06a2ded78', '1081', 'MASTER ', '양측 운전실의 TRS 중 Master 로 설정된 경우(Master)', '1 : Master, 0 : Master 아님, Default : 0', 'Woojin', 'TRS', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'MASTER = 양측 운전실의 TRS 중 Master 로 설정된 경우(Master). 1 : Master, 0 : Master 아님, Default : 0', '우진200량-3단계'), ('4e3ef846-4d8f-4005-8866-8a631103653d', '504', 'U2CM1OL ', 'UNIT2 압축기1 과부하 신호(UNIT1 Compressor2 Over Load)', '1 : 과부하, 0 : 정상', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'U2CM1OL = UNIT2 압축기1 과부하 신호(UNIT1 Compressor2 Over Load). 1 : 과부하, 0 : 정상', '우진200량-3단계'), ('4e75d457-f879-4c36-b4f1-0a338f8987b4', '417', 'PEI1-6F ', 'M1 (CAR 6) PEI 1 고장 정보(PASSENGER EMERGENCY INTERCOM 1-6 FAULT)', '0 : 정상, 1 : 고장', 'Woojin', 'AVC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'PEI1-6F = M1 (CAR 6) PEI 1 고장 정보(PASSENGER EMERGENCY INTERCOM 1-6 FAULT). 0 : 정상, 1 : 고장', '우진200량-3단계'), ('4efd211b-e45f-4bc1-b676-dc33681ad4f7', '766', 'ACOV ', 'AC 출력 과전압 검지(AC Output Over Voltage)', '0 : 이외의 조건, 1 : FC2 입력 과전압 검지 시', 'Woojin', 'SIV', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'ACOV = AC 출력 과전압 검지(AC Output Over Voltage). 0 : 이외의 조건, 1 : FC2 입력 과전압 검지 시', '우진200량-3단계'), ('4f2386ef-a6b3-4a35-908e-f1a7e130b1a3', '744', 'ROMVER ', '소프트웨어 버전(TCU software version)', 'TCU 소프트웨어 버전', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'ROMVER = 소프트웨어 버전(TCU software version). TCU 소프트웨어 버전', '우진200량-3단계'), ('4f397e76-9cbf-4497-b3c8-e60010b70d5a', '646', 'BRAKE ', '제동상태(Braking)', '0 : 마스콘으로부터 제동 DI신호를 입력받지 못한 경우1 : 마스콘으로부터 제동 DI신호를 입력받은 경우', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'BRAKE = 제동상태(Braking). 0 : 마스콘으로부터 제동 DI신호를 입력받지 못한 경우1 : 마스콘으로부터 제동 DI신호를 입력받은 경우', '우진200량-3단계'), ('4f4989ce-e460-4fb9-8547-e659452cb825', '18', 'TC재기동 ', 'TCMS 장치가 재기동되었다는 인식 신호. TCMS가 재기동되면 약 10초 정도 ON(1) 신호가 올라온다', 'TCMS 재기동시 10초동안 ON', 'Woojin', 'TIB', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'TC재기동 = TCMS 장치가 재기동되었다는 인식 신호. TCMS가 재기동되면 약 10초 정도 ON(1) 신호가 올라온다', '우진200량-3단계'), ('4fb9328d-c843-4203-bad3-fda8bfa5569e', '348', 'INCHING ', '정밀 정차 제어 명령 (인칭제어)(Precision Stop corrected)', 'No Inching 제어 : 0, Inching 제어 : 1', 'Woojin', 'ATC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'INCHING = 정밀 정차 제어 명령 (인칭제어)(Precision Stop corrected). No Inching 제어 : 0, Inching 제어 : 1', '우진200량-3단계'), ('4fbbade8-0e2b-4d06-b4b9-8243be1f1d42', '236', 'BRCOCK ', '제동 차단 코크1 스위치 미동작(ROOM)(NO BRAKE CUT-OUT COCK# ROOM)', '그 외의 경우 : 0, BC cock cutout 시 : 1', 'Woojin', 'T1', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'BRCOCK = 제동 차단 코크1 스위치 미동작(ROOM)(NO BRAKE CUT-OUT COCK# ROOM). 그 외의 경우 : 0, BC cock cutout 시 : 1', '우진200량-3단계'), ('4fd71bc2-6d7b-47aa-99bd-0a1d99535a6d', '37', 'ENCD2F ', '엔코더#2 고장(ENCODER FAULT#2)', '정상 : 1, 고장 : 0', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'ENCD2F = 엔코더#2 고장(ENCODER FAULT#2). 정상 : 1, 고장 : 0', '우진200량-3단계'), ('4ffcd38f-7d8f-420a-96f7-bcf0e565bf6a', '299', '데이터 정의 ', null, null, 'Woojin', 'ATC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', '데이터 정의 = DATA TYPE', '우진200량-3단계'), ('502a0c85-0801-4eef-8772-8137a8c5d7ba', '621', 'SPEED3 ', '3축 속도(Speed3)', '0~127.5km/h', 'Woojin', 'BECU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'SPEED3 = 3축 속도(Speed3). 0~127.5km/h', '우진200량-3단계'), ('505b54f4-d57b-4714-bcd8-1f3b4f4d2d6e', '1147', 'DDS4-6F ', '6호차 미세먼지센서4 고장상태(Dust Detector Sensor AP4 Car6 Fault)', '1 : 고장, 0 : 정상', 'Woojin', 'AIRP', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'DDS4-6F = 6호차 미세먼지센서4 고장상태(Dust Detector Sensor AP4 Car6 Fault). 1 : 고장, 0 : 정상', '우진200량-3단계'), ('507a8278-8ee3-4605-b093-d67e67b8d1de', '939', 'RMD1-3F ', '노선안내표시기1-3 통신 상태(ROUTE MAP DISPLAY 1-3 FAULT)', '0 : 통신정상, 1 : 통신고장', 'Woojin', 'PIC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'RMD1-3F = 노선안내표시기1-3 통신 상태(ROUTE MAP DISPLAY 1-3 FAULT). 0 : 통신정상, 1 : 통신고장', '우진200량-3단계'), ('50dacac6-8fbb-4366-b534-93ff295f7211', '1176', 'AP3-4S ', '4호차 공기정화기3 동작상태(Air Purifier3 Car4 State)', '0 : OFF, 1 : 약, 2 : 중, 3 : 강', 'Woojin', 'AIRP', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'AP3-4S = 4호차 공기정화기3 동작상태(Air Purifier3 Car4 State). 0 : OFF, 1 : 약, 2 : 중, 3 : 강', '우진200량-3단계'), ('512d390a-8480-4a61-8659-891f87d4a1d2', '371', 'ADC_SDR ', '전체 출입문 닫힘/열림 정보(All Door Closed)', '0 : 전체 출입문 닫힘, 1 : 출입문 열린 상태', 'Woojin', 'AVC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'ADC_SDR = 전체 출입문 닫힘/열림 정보(All Door Closed). 0 : 전체 출입문 닫힘, 1 : 출입문 열린 상태', '우진200량-3단계'), ('512fd3bd-33c6-44a7-a6a3-5ada4e33ebd9', '944', 'RMD2-4F ', '노선안내표시기2-4 통신 상태(ROUTE MAP DISPLAY 2-4 FAULT)', '0 : 통신정상, 1 : 통신고장', 'Woojin', 'PIC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'RMD2-4F = 노선안내표시기2-4 통신 상태(ROUTE MAP DISPLAY 2-4 FAULT). 0 : 통신정상, 1 : 통신고장', '우진200량-3단계'), ('515cdc30-31df-4bc1-9348-790acbdd9896', '634', 'WHEELSET ', '차륜경 변경 유효신호(Wheel Setting)', 'TCU는 차륜경 변경 유효신호가 “1”일 때 받은 평균 차륜경 정보가 정상범위(80∼160mm)의 경우, 1초간 차륜경 변경 유효신호를 “1”로 한다.', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'WHEELSET = 차륜경 변경 유효신호(Wheel Setting). TCU는 차륜경 변경 유효신호가 “1”일 때 받은 평균 차륜경 정보가 정상범위(80∼160mm)의 경우, 1초간 차륜경 변경 유효신호를 “1”로 한다.', '우진200량-3단계'), ('51cc64c5-620e-4033-9667-605c2ca5f2ce', '1191', 'AP4-8S ', '8호차 공기정화기4 동작상태(Air Purifier4 Car8 State)', '0 : OFF, 1 : 약, 2 : 중, 3 : 강', 'Woojin', 'AIRP', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'AP4-8S = 8호차 공기정화기4 동작상태(Air Purifier4 Car8 State). 0 : OFF, 1 : 약, 2 : 중, 3 : 강', '우진200량-3단계'), ('521fa204-fc64-4afe-8f28-50a55f29fd5f', '729', 'BRFD ', 'BCU 고장(BCU Relay Failure Detect)', '0 : 정상, 1 : 고장검지', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'BRFD = BCU 고장(BCU Relay Failure Detect). 0 : 정상, 1 : 고장검지', '우진200량-3단계'), ('522b8178-641c-41c5-b576-e4f7c079f5cd', '143', 'ILCR3C ', 'DC 실내등 컨텍터 ON 명령(INTERIOR DC LIGHTS CONTACTOR)', '그 외의 경우 : 0, 접촉기 ON시 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'ILCR3C = DC 실내등 컨텍터 ON 명령(INTERIOR DC LIGHTS CONTACTOR). 그 외의 경우 : 0, 접촉기 ON시 : 1', '우진200량-3단계'), ('52602883-897e-4e7a-844e-90870be3ceb1', '200', 'ASCOCK2 ', 'AS 압력 코크 스위치2 미동작(NO AIR SPRING CUT-OUT COCK #2)', 'AS cock cutout 시 : 0, 그 외의 경우 : 1', 'Woojin', 'M2', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'ASCOCK2 = AS 압력 코크 스위치2 미동작(NO AIR SPRING CUT-OUT COCK #2). AS cock cutout 시 : 0, 그 외의 경우 : 1', '우진200량-3단계'), ('5265826d-d80f-4a11-95cf-5aadf0e18cf1', '738', 'HBNC ', 'HSCB 투입불량(HSCB No Contact)', '0 : 정상, 1 : 고장검지', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'HBNC = HSCB 투입불량(HSCB No Contact). 0 : 정상, 1 : 고장검지', '우진200량-3단계'), ('53216852-3b81-412f-87f8-d94e3ad7c368', '446', 'PEI2-6 ', '비상인터폰 호출 위치 CAR 6 2위(PASSENGER EMERGENCY INTERCOM 2-6 CALL)', '0 : 미호출, 1 : 호출', 'Woojin', 'AVC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'PEI2-6 = 비상인터폰 호출 위치 CAR 6 2위(PASSENGER EMERGENCY INTERCOM 2-6 CALL). 0 : 미호출, 1 : 호출', '우진200량-3단계'), ('5339db53-d8a3-490c-aee9-68aac6e8faac', '1068', 'PEI1-5E ', '5호차 1위 비상인터폰 종료상태(PASSENGER EMERGENCY INTERCOM 1-5 END)', '1 : 연결됨, 0 : 연결안됨', 'Woojin', 'TRS', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'PEI1-5E = 5호차 1위 비상인터폰 종료상태(PASSENGER EMERGENCY INTERCOM 1-5 END). 1 : 연결됨, 0 : 연결안됨', '우진200량-3단계'), ('53619bf6-4f1e-420b-97c9-0c75f1049a9c', '962', 'RMD2-7F ', '노선안내표시기2-7 통신 상태(ROUTE MAP DISPLAY 2-7 FAULT)', '0 : 통신정상, 1 : 통신고장', 'Woojin', 'PIC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'RMD2-7F = 노선안내표시기2-7 통신 상태(ROUTE MAP DISPLAY 2-7 FAULT). 0 : 통신정상, 1 : 통신고장', '우진200량-3단계'), ('539ac6ad-c486-498e-8697-6ea40eed00e2', '481', 'U2FULLC ', 'UNIT2 전냉방 운전모드(Unit2 Full Cooling Mode)', '1 : UNIT2 전냉방모드, 0 : UNIT2 전냉방모드 아님', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'U2FULLC = UNIT2 전냉방 운전모드(Unit2 Full Cooling Mode). 1 : UNIT2 전냉방모드, 0 : UNIT2 전냉방모드 아님', '우진200량-3단계'), ('54220569-1838-4518-a080-3fe46506e204', '76', 'UCPB ', '연결기 분리 스위치(UNCOUPLING AVAILABILITY)', '그 외의 경우 : 0, 스위치 조작시 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'UCPB = 연결기 분리 스위치(UNCOUPLING AVAILABILITY). 그 외의 경우 : 0, 스위치 조작시 : 1', '우진200량-3단계'), ('5442b903-aeeb-4fb0-ab5a-278d30b175ae', '885', 'TEST_NG ', '시험결과 NG(Test-Item Result NG)', '0 : 실험결과 OK모드 아님, 1 : 실험결과 NG 모드', 'Woojin', 'BMS', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'TEST_NG = 시험결과 NG(Test-Item Result NG). 0 : 실험결과 OK모드 아님, 1 : 실험결과 NG 모드', '우진200량-3단계'), ('545ecf05-3584-4f9a-8758-419ac82fa63d', '501', 'U2EF2OL ', 'UNIT2 증발기2 과부하 신호(UNIT2 Evaporator Fan2 Over Load)', '1 : 과부하, 0 : 정상', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'U2EF2OL = UNIT2 증발기2 과부하 신호(UNIT2 Evaporator Fan2 Over Load). 1 : 과부하, 0 : 정상', '우진200량-3단계'), ('54922ed5-5634-41b4-9c84-2ea0e9985abd', '1033', 'SCAM2-5R ', '5호차 2번 CCTV 카메라 녹화중(SALOON CAMERA 2-5 RECORD)', '0 : 이외의 조건, 1 : 이벤트 녹화 중', 'Woojin', 'NVR', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'SCAM2-5R = 5호차 2번 CCTV 카메라 녹화중(SALOON CAMERA 2-5 RECORD). 0 : 이외의 조건, 1 : 이벤트 녹화 중', '우진200량-3단계'), ('54af0803-fc48-401f-a654-cfb2a043fcad', '308', 'WHEELS1 ', 'TACHO1의 차륜경 크기정보(Wheel-1 Size)', '860(mm) : 0, 855: 1, 850 : 2, 845 : 3, 840 : 4, 835 : 5, 830 : 6, 825 : 7, 820 : 8, 815 : 9, 810 : 10, 805 : 11, 800 : 12, 795 : 13, 790 : 14, 785 : 15, 780 : 16, Other : None', 'Woojin', 'ATC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'WHEELS1 = TACHO1의 차륜경 크기정보(Wheel-1 Size). 860(mm) : 0, 855: 1, 850 : 2, 845 : 3, 840 : 4, 835 : 5, 830 : 6, 825 : 7, 820 : 8, 815 : 9, 810 : 10, 805 : 11, 800 : 12, 795 : 13, 790 : 14, 785 : 15, 780 : 16, Other : None', '우진200량-3단계'), ('54c34083-a272-4e2e-9047-1bddbab68d45', '213', 'DOORN ', '출입문 회로 의 회로 차단기 상태(DOOR CIRCUIT BREAKER CLOSED)', '트립시 : 0, 정상시 : 1', 'Woojin', 'M2', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'DOORN = 출입문 회로 의 회로 차단기 상태(DOOR CIRCUIT BREAKER CLOSED). 트립시 : 0, 정상시 : 1', '우진200량-3단계'), ('554f142f-6336-4e6b-81ce-490e0d49262b', '1137', 'DDS2-1F ', '1호차 미세먼지센서2 고장상태(Dust Detector Sensor AP2 Car1 Fault)', '1 : 고장, 0 : 정상', 'Woojin', 'AIRP', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'DDS2-1F = 1호차 미세먼지센서2 고장상태(Dust Detector Sensor AP2 Car1 Fault). 1 : 고장, 0 : 정상', '우진200량-3단계'), ('55b11e1d-d721-4874-9a24-1bc321f5c7c6', '453', 'CR_TALK ', '관재승객통화 동작 정보(CONTROL ROOM TALK)', '0 : 관재승객방송 미 동작, 1 : 관재승객방송 동작', 'Woojin', 'AVC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'CR_TALK = 관재승객통화 동작 정보(CONTROL ROOM TALK). 0 : 관재승객방송 미 동작, 1 : 관재승객방송 동작', '우진200량-3단계'), ('56504bd0-f5ea-4aaa-bd15-bf91535c9ae9', '215', 'AC380_EN ', 'AC 380V NFB 트립(OTHERS,ETC)(CIRCUIT BREAKERS 380V 60Hz CLOSED (OTHERS))', '트립시 : 0, 정상시 : 1', 'Woojin', 'M2', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'AC380_EN = AC 380V NFB 트립(OTHERS,ETC)(CIRCUIT BREAKERS 380V 60Hz CLOSED (OTHERS)). 트립시 : 0, 정상시 : 1', '우진200량-3단계'), ('565fe632-0651-487d-a643-43e9291e226f', '267', 'BRCOCK ', '제동 차단 코크1 스위치 미동작(ROOM)(NO BRAKE CUT-OUT COCK# ROOM)', '그 외의 경우 : 0, BC cock cutout 시 : 1', 'Woojin', 'T2', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'BRCOCK = 제동 차단 코크1 스위치 미동작(ROOM)(NO BRAKE CUT-OUT COCK# ROOM). 그 외의 경우 : 0, BC cock cutout 시 : 1', '우진200량-3단계'), ('56a97811-5f7c-49d8-a903-e32a45a364db', '505', 'U2CM2OL ', 'UNIT2 압축기2 과부하 신호(UNIT2 Compressor2 Over Load)', '1 : 과부하, 0 : 정상', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'U2CM2OL = UNIT2 압축기2 과부하 신호(UNIT2 Compressor2 Over Load). 1 : 과부하, 0 : 정상', '우진200량-3단계'), ('5714840d-a05f-4159-a098-c2d491c0f409', '133', 'DRORPBS ', '우측 출입문 재열림(사이드패널)(DOORS REOPEN RIGHT(SIDE PANEL))', '그 외의 경우 : 0, 스위치 ON시 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'DRORPBS = 우측 출입문 재열림(사이드패널)(DOORS REOPEN RIGHT(SIDE PANEL)). 그 외의 경우 : 0, 스위치 ON시 : 1', '우진200량-3단계'), ('5726ded2-c808-44ee-9a73-e21a41f7f4fd', '566', 'ECVF ', '전자제어 밸브의 고장(Electric Control Valve Fault)', '0 : 정상, 1 : 고장검지', 'Woojin', 'BECU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'ECVF = 전자제어 밸브의 고장(Electric Control Valve Fault). 0 : 정상, 1 : 고장검지', '우진200량-3단계'), ('57f30ec5-268e-4937-9c8d-710ced2b7729', '661', 'MCOK4ON ', 'MCOK4 Close 상태(MCOK4 ON)', '0 : 각 접촉기 Off 상태 1 : 각 접촉기 On 상태', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'MCOK4ON = MCOK4 Close 상태(MCOK4 ON). 0 : 각 접촉기 Off 상태 1 : 각 접촉기 On 상태', '우진200량-3단계'), ('57fb6e79-880c-40fb-9e94-f6578a118177', '785', 'WHM ', '소비 전력량 변화 정보(Watt Hour Meter)', '소비전력량 1kWh 변화 시 마다 : ‘0’ → ‘1’ → ‘0’', 'Woojin', 'SIV', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'WHM = 소비 전력량 변화 정보(Watt Hour Meter). 소비전력량 1kWh 변화 시 마다 : ‘0’ → ‘1’ → ‘0’', '우진200량-3단계'), ('58ab6bd3-8e39-4fc8-8524-e020cda96394', '572', 'ACSF ', 'AC 압력센서 고장(Air Cylinder Sensor Fault)', '0 : 정상, 1 : 고장검지', 'Woojin', 'BECU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'ACSF = AC 압력센서 고장(Air Cylinder Sensor Fault). 0 : 정상, 1 : 고장검지', '우진200량-3단계'), ('58d0be8d-d4ec-48ff-b574-62b3994b1b68', '16', '수동지점보정 ', '사람이 수동으로 지점보정을 할 경우 ON(1)', null, 'Woojin', 'TIB', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', '수동지점보정 = 사람이 수동으로 지점보정을 할 경우 ON(1)', '우진200량-3단계'), ('58de9488-402c-4792-9498-81082444e58e', '482', 'U1HALFC ', 'UNIT1 반냉방 운전모드(Unit1 Half Cooling Mode)', '1 : UNIT1 반냉방모드, 0 : UNIT1 반냉방모드 아님', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'U1HALFC = UNIT1 반냉방 운전모드(Unit1 Half Cooling Mode). 1 : UNIT1 반냉방모드, 0 : UNIT1 반냉방모드 아님', '우진200량-3단계'), ('5951cb04-512b-497c-a994-2f59c8a68766', '1057', 'PEI2-8C ', '8호차 2위 비상인터폰 연결상태(PASSENGER EMERGENCY INTERCOM 2-8 CALL)', '1 : 연결됨, 0 : 연결안됨', 'Woojin', 'TRS', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'PEI2-8C = 8호차 2위 비상인터폰 연결상태(PASSENGER EMERGENCY INTERCOM 2-8 CALL). 1 : 연결됨, 0 : 연결안됨', '우진200량-3단계'), ('5978cfc1-4960-4217-a127-10b3147fec71', '38', 'ENCD1F ', '엔코더#1 고장(ENCODER FAULT#1)', '정상 : 1, 고장 : 0', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'ENCD1F = 엔코더#1 고장(ENCODER FAULT#1). 정상 : 1, 고장 : 0', '우진200량-3단계'), ('59bcb298-02d7-4ae2-a6a0-b7c798005af8', '915', 'HCR8 ', '선두차 정보 8호차 HCR(HCR CAR8)', '0 : 이외의 조건, 1 : 8호차(TC)에 대한 HCR 정보', 'Woojin', 'PIC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'HCR8 = 선두차 정보 8호차 HCR(HCR CAR8). 0 : 이외의 조건, 1 : 8호차(TC)에 대한 HCR 정보', '우진200량-3단계'), ('59ce2d6f-71e2-4f6f-8384-3467779d1fa5', '166', 'ECUF ', 'BOU ECU 전원 고장 신호(ECU POWER SUPPLY FAULT)', '그 외의 경우 : 1, ECU Power fault 검지 : 0', 'Woojin', 'M1', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'ECUF = BOU ECU 전원 고장 신호(ECU POWER SUPPLY FAULT). 그 외의 경우 : 1, ECU Power fault 검지 : 0', '우진200량-3단계'), ('59edaa1c-bb3e-45ac-9cfb-be09fe69e9fe', '362', 'PG2F ', 'PG2 지상자 미 검지(ATO PG2 Missed Error)', 'PG2 정상 검지: 0, PG2 미 검지 : 1', 'Woojin', 'ATC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'PG2F = PG2 지상자 미 검지(ATO PG2 Missed Error). PG2 정상 검지: 0, PG2 미 검지 : 1', '우진200량-3단계'), ('5a00182d-b32d-4fdd-9338-a62dbccc151a', '537', 'CRCM4F ', '전자접촉기 압축기 4 고장(Car Room Compressor Motor 4 Fault)', '1 : 고장, 0 : 정상', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'CRCM4F = 전자접촉기 압축기 4 고장(Car Room Compressor Motor 4 Fault). 1 : 고장, 0 : 정상', '우진200량-3단계'), ('5a24a2f9-f25b-410e-8ca8-77b366b5b323', '193', 'ACMC ', '보조 압축기 모터 접촉기(AUXILIARY COMPRESSOR MOTOR CONTACTOR ON)', '그 외의 경우 : 0, 접촉기 ON시 : 1', 'Woojin', 'M1', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'ACMC = 보조 압축기 모터 접촉기(AUXILIARY COMPRESSOR MOTOR CONTACTOR ON). 그 외의 경우 : 0, 접촉기 ON시 : 1', '우진200량-3단계'), ('5a3c1293-e585-47fb-8dbf-687e8a9a6410', '327', 'EB ', 'ATCATO의 EB 출력 상태(EB Command)', 'EB : 0, No EB : 1', 'Woojin', 'ATC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'EB = ATCATO의 EB 출력 상태(EB Command). EB : 0, No EB : 1', '우진200량-3단계'), ('5ab7d6c6-3bdd-4a02-a1e5-76765d479929', '1096', 'DNLDF ', '다운로드 시 USB 메모리에 오류 발생(Downloading Fault)', '0 : 정상, 1 : 오류', 'Woojin', 'EVR', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'DNLDF = 다운로드 시 USB 메모리에 오류 발생(Downloading Fault). 0 : 정상, 1 : 오류', '우진200량-3단계'), ('5ac54fcf-828a-49aa-b41c-2806643efe3c', '720', 'CPUWDTD ', '마이컴 이상(TCU)(Watch Dog Timer Detect - CPU)', '0 : 정상, 1 : 고장검지', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'CPUWDTD = 마이컴 이상(TCU)(Watch Dog Timer Detect - CPU). 0 : 정상, 1 : 고장검지', '우진200량-3단계'), ('5b5a18b8-9999-4e6e-a6d5-d08989a06d5c', '1025', 'SCAM1-4R ', '4호차 3번 CCTV 카메라 녹화중(SALOON CAMERA 3-4 RECORD)', '0 : 이외의 조건, 1 : 이벤트 녹화 중', 'Woojin', 'NVR', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'SCAM1-4R = 4호차 3번 CCTV 카메라 녹화중(SALOON CAMERA 3-4 RECORD). 0 : 이외의 조건, 1 : 이벤트 녹화 중', '우진200량-3단계'), ('5bc0922c-9ffe-4b02-9445-bb82568f2faf', '1196', 'FDUST2 ', '2호차 미세먼지 농도(Fine Dust Car2)', '0 ~ 255 (㎍/㎥)', 'Woojin', 'AIRP', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'FDUST2 = 2호차 미세먼지 농도(Fine Dust Car2). 0 ~ 255 (㎍/㎥)', '우진200량-3단계'), ('5bded4f2-4ee0-4368-8b2f-233fd7e5fed8', '1159', 'DDS4-7F ', '7호차 미세먼지센서4 고장상태(Dust Detector Sensor AP4 Car7 Fault)', '1 : 고장, 0 : 정상', 'Woojin', 'AIRP', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'DDS4-7F = 7호차 미세먼지센서4 고장상태(Dust Detector Sensor AP4 Car7 Fault). 1 : 고장, 0 : 정상', '우진200량-3단계'), ('5c11661c-9736-4603-bfa0-7adec68b5d8e', '623', 'ROMVER ', '롬버전(Rom Version)', null, 'Woojin', 'BECU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'ROMVER = 롬버전(Rom Version).', '우진200량-3단계'), ('5c341bcc-4a23-4516-87ba-b46d42f6c804', '687', 'B_WATT ', 'Braking 적산전력(Braking Watt)', '역 간 역행의 적산전력량을 TCMS로 송신한다. 역 정차(SDR TEXT 12 Speed from BECU가 “0” 시)시 값을 0bit로 리셋한다.', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'B_WATT = Braking 적산전력(Braking Watt). 역 간 역행의 적산전력량을 TCMS로 송신한다. 역 정차(SDR TEXT 12 Speed from BECU가 “0” 시)시 값을 0bit로 리셋한다.', '우진200량-3단계'), ('5c58a096-8d68-4a14-92e8-c70fce1c99b3', '366', 'NXTCODE_SDR ', '다음역 번호(Next Code)', '1~255', 'Woojin', 'AVC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'NXTCODE_SDR = 다음역 번호(Next Code). 1~255', '우진200량-3단계'), ('5ca40166-fcb4-432d-881d-a16e762dead5', '1198', 'FDUST4 ', '4호차 미세먼지 농도(Fine Dust Car4)', '0 ~ 255 (㎍/㎥)', 'Woojin', 'AIRP', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'FDUST4 = 4호차 미세먼지 농도(Fine Dust Car4). 0 ~ 255 (㎍/㎥)', '우진200량-3단계'), ('5d4687e0-020b-4aeb-ab94-69f9a5ffdc39', '518', 'INSENS1F ', '실내 SENSOR 1 고장 신호(Indoor Sensor1 Fault)', '1 : 실내센서 이상 발생, 0 : 정상', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'INSENS1F = 실내 SENSOR 1 고장 신호(Indoor Sensor1 Fault). 1 : 실내센서 이상 발생, 0 : 정상', '우진200량-3단계'), ('5d625217-6df5-4d19-9905-0e8db6a065f3', '432', 'PEI1-8F ', 'TC2 (CAR 8) PEI 1 고장 정보(PASSENGER EMERGENCY INTERCOM 1-8 FAULT)', '0 : 정상, 1 : 고장', 'Woojin', 'AVC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'PEI1-8F = TC2 (CAR 8) PEI 1 고장 정보(PASSENGER EMERGENCY INTERCOM 1-8 FAULT). 0 : 정상, 1 : 고장', '우진200량-3단계'), ('5d8fa784-378d-475d-b575-c9e3fde1deee', '86', 'PANDPB1 ', '판토 하강 데스크 스위치 동작-1(PANTOGRAPH DOWN(RED))', '그 외의 경우 : 0, 스위치 ON시 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'PANDPB1 = 판토 하강 데스크 스위치 동작-1(PANTOGRAPH DOWN(RED)). 그 외의 경우 : 0, 스위치 ON시 : 1', '우진200량-3단계'), ('5dd39037-9907-43e7-a238-a1a71e67bf8d', '1121', 'DSPF ', '압축기 압력이상 상태(Discharge Static Pressure Failure)', '1 : 압력이상, 0 : 정상, Default : 0', 'Woojin', 'CHVAC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'DSPF = 압축기 압력이상 상태(Discharge Static Pressure Failure). 1 : 압력이상, 0 : 정상, Default : 0', '우진200량-3단계'), ('5e4253f8-4fe8-4319-8c14-d8b20de09c7b', '135', 'ILPAND ', '판토 하강 현시 램프(PANTOGRAPH DOWN LAMP(RED))', '그 외의 경우 : 0, 판토 하강시 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'ILPAND = 판토 하강 현시 램프(PANTOGRAPH DOWN LAMP(RED)). 그 외의 경우 : 0, 판토 하강시 : 1', '우진200량-3단계'), ('5e526125-b475-43dc-8776-7934d1f6372e', '628', 'INVRST ', '인버터 재기동(INVERTER Restart)', '0 : 정상 1 : 경고장에 의한 자동 재시작이 진행중', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'INVRST = 인버터 재기동(INVERTER Restart). 0 : 정상 1 : 경고장에 의한 자동 재시작이 진행중', '우진200량-3단계'), ('5ea0e75b-f04d-4895-a2fb-b02a7f78efbf', '1085', 'CVD1F ', 'TC1 CVD장치 고장 상태 정보(CVD car1 Fault)', '1 : 고장, 0 : 정상, Default : 0', 'Woojin', 'TRS', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'CVD1F = TC1 CVD장치 고장 상태 정보(CVD car1 Fault). 1 : 고장, 0 : 정상, Default : 0', '우진200량-3단계'), ('5ea594d5-693c-4291-b43f-3a18601d019f', '867', 'CPLV ', '입력 DC 저전압(Control Power Low Voltage)', '1 : 고장, 0 : 정상', 'Woojin', 'CMSB', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'CPLV = 입력 DC 저전압(Control Power Low Voltage). 1 : 고장, 0 : 정상', '우진200량-3단계'), ('5eaabd4e-a6b5-48f1-a6a6-967308f51c90', '243', 'DC100N ', 'DC100V 회로차단기 상태(DC 100V CIRCUIT BREAKER CLOSED)', '트립시 : 0, 정상시 : 1', 'Woojin', 'T1', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'DC100N = DC100V 회로차단기 상태(DC 100V CIRCUIT BREAKER CLOSED). 트립시 : 0, 정상시 : 1', '우진200량-3단계'), ('5eb37116-0edf-47c4-84d7-862710a335a8', '709', 'FRD ', '전/후진 이상검지(Forward Reverse Failure Detect)', '0 : 정상, 1 : 고장검지', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'FRD = 전/후진 이상검지(Forward Reverse Failure Detect). 0 : 정상, 1 : 고장검지', '우진200량-3단계'), ('5ebaff19-b1d5-4c48-b1d5-b8d9e89f4854', '467', 'ZVR_SDR ', '열차 정지속도 검출신호(Zero Velocity Relay)', '0 : 정지, 1 : 동작', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'ZVR_SDR = 열차 정지속도 검출신호(Zero Velocity Relay). 0 : 정지, 1 : 동작', '우진200량-3단계'), ('5ee57e5b-a9c1-4392-aff9-fa02eb43638f', '541', 'CRVF2F ', '전자접촉기 배기팬 2 고장(Car Room Ventilation Fan 2 Fault)', '1 : 고장 , 0 : 정상', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'CRVF2F = 전자접촉기 배기팬 2 고장(Car Room Ventilation Fan 2 Fault). 1 : 고장 , 0 : 정상', '우진200량-3단계'), ('5f1cacf6-3530-4da8-9a57-7339dba813da', '556', 'INTEMP ', '실내온도1,2의 평균 값(Indoor Temperature)', '-128 ~127, 유효범위 -30°C ~+65°C', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'INTEMP = 실내온도1,2의 평균 값(Indoor Temperature). -128 ~127, 유효범위 -30°C ~+65°C', '우진200량-3단계'), ('5f331e91-b121-486a-bab7-98ab998bff89', '803', 'D2STATE ', '각 감지기의 상태(정상, 화재, 고장)를 나타낸다.(Detector2 State)', '0 : 정상, 3 : 화재, 2 : 고장, Default : 0', 'Woojin', 'FDU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'D2STATE = 각 감지기의 상태(정상, 화재, 고장)를 나타낸다.(Detector2 State). 0 : 정상, 3 : 화재, 2 : 고장, Default : 0', '우진200량-3단계'), ('5fa8cf9d-5549-470b-8ed6-98cf38d88034', '741', 'TDMKEND ', 'TD수집완료(Trace Data Making End)', '0 : 정상, 1 : 고장검지', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'TDMKEND = TD수집완료(Trace Data Making End). 0 : 정상, 1 : 고장검지', '우진200량-3단계'), ('5fbaf50a-bd2b-4cfe-94fa-21dfad58cd20', '717', 'PBCD ', '부정회생(Powering Braking Current Failure)', '0 : 정상, 1 : 고장검지', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'PBCD = 부정회생(Powering Braking Current Failure). 0 : 정상, 1 : 고장검지', '우진200량-3단계'), ('5fe1caaa-d802-4bd6-9b4c-d3c08fa3b5d7', '982', 'REC_F ', '화재 이벤트 녹화 중(RECORD FIRE)', '0 : 이외의 조건, 1 : 이벤트 녹화 중', 'Woojin', 'NVR', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'REC_F = 화재 이벤트 녹화 중(RECORD FIRE). 0 : 이외의 조건, 1 : 이벤트 녹화 중', '우진200량-3단계'), ('5fe83cb0-794d-4c23-8dd3-f0576b7d9c37', '587', 'SKID4 ', '차축4 차륜 스키드검지(SKID4)', '0 : 이외의 경우, 1 : 차륜 스키드 검지', 'Woojin', 'BECU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'SKID4 = 차축4 차륜 스키드검지(SKID4). 0 : 이외의 경우, 1 : 차륜 스키드 검지', '우진200량-3단계'), ('5ff7420f-1373-4d22-9ce1-a68962947105', '691', 'P100LVD ', '제어전원 전압저하(100V Power Low Voltage Detect)', '0 : 정상, 1 : 고장검지', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'P100LVD = 제어전원 전압저하(100V Power Low Voltage Detect). 0 : 정상, 1 : 고장검지', '우진200량-3단계'), ('5ff9272d-ac34-44c1-84c7-de8145829433', '997', 'SCAM2-1F ', '1호차 2번 CCTV 카메라 고장상태(SALOON CAMERA 2-1 FAULT)', '0 : 정상 상태 (상시 녹화 중), 1 : 카메라 고장 시', 'Woojin', 'NVR', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'SCAM2-1F = 1호차 2번 CCTV 카메라 고장상태(SALOON CAMERA 2-1 FAULT). 0 : 정상 상태 (상시 녹화 중), 1 : 카메라 고장 시', '우진200량-3단계'), ('6021650a-fbf8-4bc3-ab49-b515e90625ea', '370', 'DDN-L_SDR ', '다음에 열릴 출입문 = 왼쪽(Door Direction Next - Left)', '0 : 이 외의 조건, 1 : 다음에 열릴 출입문 = 왼쪽', 'Woojin', 'AVC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'DDN-L_SDR = 다음에 열릴 출입문 = 왼쪽(Door Direction Next - Left). 0 : 이 외의 조건, 1 : 다음에 열릴 출입문 = 왼쪽', '우진200량-3단계'), ('60338385-82ce-410a-8fe2-cf4efd844dcd', '413', 'PEI2-5F ', 'T2 (CAR 5) PEI 2 고장 정보(PASSENGER EMERGENCY INTERCOM 2-5 FAULT)', '0 : 정상, 1 : 고장', 'Woojin', 'AVC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'PEI2-5F = T2 (CAR 5) PEI 2 고장 정보(PASSENGER EMERGENCY INTERCOM 2-5 FAULT). 0 : 정상, 1 : 고장', '우진200량-3단계'), ('605cfde7-660a-420e-81a7-cb4d778ed0cd', '527', 'VENT1OL ', '배기팬 1 과부하 신호(Vent1 Over Load)', '1 : 과부하, 0 : 정상', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'VENT1OL = 배기팬 1 과부하 신호(Vent1 Over Load). 1 : 과부하, 0 : 정상 ', '우진200량-3단계'), ('607412ec-c78e-4ab8-897a-b07169e5c99e', '935', 'RMD5-3F ', '노선안내표시기5-3 통신 상태(ROUTE MAP DISPLAY 5-3 FAULT)', '0 : 통신정상, 1 : 통신고장', 'Woojin', 'PIC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'RMD5-3F = 노선안내표시기5-3 통신 상태(ROUTE MAP DISPLAY 5-3 FAULT). 0 : 통신정상, 1 : 통신고장', '우진200량-3단계'), ('60bdc335-40a9-4b84-bd79-9b15bda38eaa', '61', 'SCBCOCK ', '보안제동 차단 코크 스위치 미동작(NO SECURITY BRAKE CUT-OUT COCK #1)', 'SBR cock cutout 시 : 0, 그 외의 경우 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'SCBCOCK = 보안제동 차단 코크 스위치 미동작(NO SECURITY BRAKE CUT-OUT COCK #1). SBR cock cutout 시 : 0, 그 외의 경우 : 1', '우진200량-3단계'), ('60ccb1c4-b17c-4065-a2c1-7bbe953c4508', '660', 'MCOK3ON ', 'MCOK3 Close 상태(MCOK3 ON)', '0 : 각 접촉기 Off 상태 1 : 각 접촉기 On 상태', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'MCOK3ON = MCOK3 Close 상태(MCOK3 ON). 0 : 각 접촉기 Off 상태 1 : 각 접촉기 On 상태', '우진200량-3단계'), ('60f25634-31dd-4cb6-9c72-dbb93dcfe542', '250', 'LFF1K ', 'LINE FLOW FANS CONTACTOR 1 ON(LINE FLOW FANS CONTACTOR 1 CLOSED)', '그 외의 경우 : 0, 접촉기 ON시 : 1', 'Woojin', 'T1', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'LFF1K = LINE FLOW FANS CONTACTOR 1 ON(LINE FLOW FANS CONTACTOR 1 CLOSED). 그 외의 경우 : 0, 접촉기 ON시 : 1', '우진200량-3단계'), ('60fd004a-0b40-4fb8-b5e2-5d724cb031d3', '94', 'HLHCR ', '전조등 동작 상태(on)(HEAD LIGHT STATUS)', '그 외의 경우 : 0, 전조등 ON시 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'HLHCR = 전조등 동작 상태(on)(HEAD LIGHT STATUS). 그 외의 경우 : 0, 전조등 ON시 : 1', '우진200량-3단계'), ('610739d1-b22f-4f0a-a4e9-a7b2496a1355', '349', 'OV_STOP2 ', '정위치 지점 통과 (+50cm 이상) 정차 시(Major Short Stop Error)', '과주 정차 아님 : 0, 과주 정차 : 1', 'Woojin', 'ATC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'OV_STOP2 = 정위치 지점 통과 (+50cm 이상) 정차 시(Major Short Stop Error). 과주 정차 아님 : 0, 과주 정차 : 1', '우진200량-3단계'), ('61716b68-e604-4cce-905b-38ab3ab897c1', '123', 'DROLPBS ', '좌측 출입문 재열림(사이드패널)(DOORS REOPEN LEFT(SIDE PANEL))', '그 외의 경우 : 0, 스위치 ON시 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'DROLPBS = 좌측 출입문 재열림(사이드패널)(DOORS REOPEN LEFT(SIDE PANEL)). 그 외의 경우 : 0, 스위치 ON시 : 1', '우진200량-3단계'), ('617e8554-a499-4d59-aab9-1bbcbdd33486', '615', 'BCPT_OK ', 'BC압력 시험결과(Brake Cylinder Pressure)', 'Test OK 0 : NO GOOD or NO TEST, 1 : 결과 OK', 'Woojin', 'BECU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'BCPT_OK = BC압력 시험결과(Brake Cylinder Pressure). Test OK 0 : NO GOOD or NO TEST, 1 : 결과 OK', '우진200량-3단계'), ('61c79979-e710-4027-bdfe-d4caa0934564', '560', 'DTYPE ', '데이터 타입(DATA TYPE)', null, 'Woojin', 'BECU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'DTYPE = 데이터 타입(DATA TYPE).', '우진200량-3단계'), ('61ff927b-ce22-4425-afeb-8f73040604ff', '864', '데이터 정의 ', null, null, 'Woojin', 'CMSB', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', '데이터 정의 = DATA TYPE', '우진200량-3단계'), ('621e6a39-90f0-43f7-a18d-f52fa2f3b268', '1091', 'TCI8F ', 'TC2 TCI장치 고장 상태 정보(TCI car8 Fault)', '1 : 고장, 0 : 정상, Default : 0', 'Woojin', 'TRS', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'TCI8F = TC2 TCI장치 고장 상태 정보(TCI car8 Fault). 1 : 고장, 0 : 정상, Default : 0', '우진200량-3단계'), ('623ea11b-b93d-4594-a496-d40b2efc529d', '779', 'INV2OC ', '인버터2 과전류 검지(INV2 Over Current)', '0 : 이외의 조건, 1 : 인버터2 과전류 검지 시', 'Woojin', 'SIV', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'INV2OC = 인버터2 과전류 검지(INV2 Over Current). 0 : 이외의 조건, 1 : 인버터2 과전류 검지 시', '우진200량-3단계'), ('6260b60d-98aa-48c9-a214-a61c8df5ea91', '880', 'DCHK ', '방전 Contactor 상태 표시(Discharge Contactor)', '0 : OFF, 1 : ON', 'Woojin', 'BMS', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'DCHK = 방전 Contactor 상태 표시(Discharge Contactor). 0 : OFF, 1 : ON', '우진200량-3단계'), ('6273b7c5-32cf-4fd2-89a0-4958615205eb', '277', 'AC380_HN ', 'AC 380V NFB 트립(객실히터)(CIRCUIT BREAKERS 380V 60Hz CLOSED (HEATER))', '트립시 : 0, 정상시 : 1', 'Woojin', 'T2', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'AC380_HN = AC 380V NFB 트립(객실히터)(CIRCUIT BREAKERS 380V 60Hz CLOSED (HEATER)). 트립시 : 0, 정상시 : 1', '우진200량-3단계'), ('629d714f-a008-42f7-87b0-4ed3b2895cbf', '39', 'DSS ', '데드맨 스위치(DEAD MAN)', '스위치 ON : 0, 스위치 OFF : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'DSS = 데드맨 스위치(DEAD MAN). 스위치 ON : 0, 스위치 OFF : 1', '우진200량-3단계'), ('630eb923-0bf9-4c08-9e0e-2c5fa274d930', '1149', 'DDS2-6F ', '6호차 미세먼지센서2 고장상태(Dust Detector Sensor AP2 Car6 Fault)', '1 : 고장, 0 : 정상', 'Woojin', 'AIRP', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'DDS2-6F = 6호차 미세먼지센서2 고장상태(Dust Detector Sensor AP2 Car6 Fault). 1 : 고장, 0 : 정상', '우진200량-3단계'), ('63391993-7fe8-4375-a828-0fb9c871ac09', '313', 'PDT_RLT ', 'PDT시험 결과정보(PDT Test Result)', 'No Test : 0, Pass : 1, Fail : 2, Testing : 3', 'Woojin', 'ATC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'PDT_RLT = PDT시험 결과정보(PDT Test Result). No Test : 0, Pass : 1, Fail : 2, Testing : 3', '우진200량-3단계'), ('638898de-ea0f-4625-9c7a-f2a7c4116439', '815', 'TST_NG ', '테스트 결과(Test result)', '0 : OK 1 :NG', 'Woojin', 'DCU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'TST_NG = 테스트 결과(Test result). 0 : OK 1 :NG', '우진200량-3단계'), ('638d907a-76cc-431c-9603-db1b4255691d', '491', 'SC_OK ', '시험 실행 상태모드(Self Check result OK)', '1 : 검사결과 OK모드, 0 : 검사결과 OK모드 아님', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'SC_OK = 시험 실행 상태모드(Self Check result OK). 1 : 검사결과 OK모드, 0 : 검사결과 OK모드 아님', '우진200량-3단계'), ('63a93648-fd3e-4464-81a3-704560288793', '132', 'DORPBS ', '우측 출입문 열림(사이드패널)(DOORS OPEN RIGHT(SIDE PANEL))', '그 외의 경우 : 0, 스위치 ON시 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'DORPBS = 우측 출입문 열림(사이드패널)(DOORS OPEN RIGHT(SIDE PANEL)). 그 외의 경우 : 0, 스위치 ON시 : 1', '우진200량-3단계'), ('64812cb3-98c0-4cac-b994-ccc86411c4ef', '1078', 'PEI2-3E ', '3호차 2위 비상인터폰 종료상태(PASSENGER EMERGENCY INTERCOM 2-3 END)', '1 : 연결됨, 0 : 연결안됨', 'Woojin', 'TRS', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'PEI2-3E = 3호차 2위 비상인터폰 종료상태(PASSENGER EMERGENCY INTERCOM 2-3 END). 1 : 연결됨, 0 : 연결안됨', '우진200량-3단계'), ('649e5095-3c30-4c3a-b5d3-1fc28d3688c4', '663', 'MHR1CC ', 'MHR1 Close 상태(MHR1 Close Command)', '0 : 각 릴레이 Close 지령 Off 중 1 : 각 릴레이 Close 지령 출력 중', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'MHR1CC = MHR1 Close 상태(MHR1 Close Command). 0 : 각 릴레이 Close 지령 Off 중 1 : 각 릴레이 Close 지령 출력 중', '우진200량-3단계'), ('64bd5eeb-97fd-4c0e-8434-ef1305b20af3', '1034', 'SCAM1-5R ', '5호차 3번 CCTV 카메라 녹화중(SALOON CAMERA 3-5 RECORD)', '0 : 이외의 조건, 1 : 이벤트 녹화 중', 'Woojin', 'NVR', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'SCAM1-5R = 5호차 3번 CCTV 카메라 녹화중(SALOON CAMERA 3-5 RECORD). 0 : 이외의 조건, 1 : 이벤트 녹화 중', '우진200량-3단계'), ('64d3fd1b-db7b-487b-b7e8-78bfd9707ad6', '405', 'AMP2-3F ', 'M2 (CAR 3) AMP 2 고장 정보(AMPLIFIER 2-3 FAULT)', '0 : 정상, 1 : 고장', 'Woojin', 'AVC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'AMP2-3F = M2 (CAR 3) AMP 2 고장 정보(AMPLIFIER 2-3 FAULT). 0 : 정상, 1 : 고장', '우진200량-3단계'), ('6512583c-1ba4-4d5b-b16b-89205c79ea09', '757', 'DSK ', 'DSK 접촉기 투입 정보(DSK ON)', '0 : 이외의 조건, 1 : DSK 투입 시', 'Woojin', 'SIV', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'DSK = DSK 접촉기 투입 정보(DSK ON). 0 : 이외의 조건, 1 : DSK 투입 시', '우진200량-3단계'), ('6549e2dd-b98d-4317-907c-ca96e47dd59e', '558', 'DSTEMP ', '토출온도센서1,2의 평균 값(Discharge Sensor Temperature)', '토출 온도 센서 평균 값(-128 ~ 127, 유효범위 -30°C~+65°C)', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'DSTEMP = 토출온도센서1,2의 평균 값(Discharge Sensor Temperature). 토출 온도 센서 평균 값(-128 ~ 127, 유효범위 -30°C~+65°C)', '우진200량-3단계'), ('6572d0e5-5951-41ef-a0ca-213754d1a368', '283', 'FA1 ', '화재감지기 고장(FIRE DETECTION UNIT FAULT)', '그 외의 경우 : 1, 고장시 : 0', 'Woojin', 'T2', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'FA1 = 화재감지기 고장(FIRE DETECTION UNIT FAULT). 그 외의 경우 : 1, 고장시 : 0', '우진200량-3단계'), ('658d99c2-5437-4f4f-a9c2-6bb6cae7b346', '581', 'BCMDF ', '제동지령 값의 비정상(Brake Command Fault)', '0 : 정상, 1 : 고장검지', 'Woojin', 'BECU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'BCMDF = 제동지령 값의 비정상(Brake Command Fault). 0 : 정상, 1 : 고장검지', '우진200량-3단계'), ('663c61bd-e8de-4716-ad84-57f5a5078a61', '707', 'HBNO ', 'HSCB 고착검지(HSCB NO Open)', '0 : 정상, 1 : 고장검지', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'HBNO = HSCB 고착검지(HSCB NO Open). 0 : 정상, 1 : 고장검지', '우진200량-3단계'), ('6665fbc1-507f-4c11-b727-b516ad955778', '718', 'OVD2 ', 'FC 과전압 검지2(Over Voltage Detect)', '0 : 정상, 1 : 고장검지', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'OVD2 = FC 과전압 검지2(Over Voltage Detect). 0 : 정상, 1 : 고장검지', '우진200량-3단계'), ('66e554ed-4207-4916-9e2f-6cacfb099d1e', '633', 'TESTMODE ', '인버터 시험모드(Test Mode Start)', '0 : CCOS가 NORMAL 위치 1 : CCOS가 TEST 위치', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'TESTMODE = 인버터 시험모드(Test Mode Start). 0 : CCOS가 NORMAL 위치 1 : CCOS가 TEST 위치', '우진200량-3단계'), ('66fb8a22-0940-4925-87d4-00eef0428e16', '341', 'DST_CODE ', '종착역 번호(Destination Station)', '1 ~ 255', 'Woojin', 'ATC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'DST_CODE = 종착역 번호(Destination Station). 1 ~ 255 ', '우진200량-3단계'), ('676729e3-87fe-402b-9544-249144784535', '783', 'INV2LV ', '인버터 2 저전압 검지 시(INV2 Input Low Voltage)', '0 : 이외의 조건, 1 : FC2 입력 저전압 검지 시', 'Woojin', 'SIV', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'INV2LV = 인버터 2 저전압 검지 시(INV2 Input Low Voltage). 0 : 이외의 조건, 1 : FC2 입력 저전압 검지 시', '우진200량-3단계'), ('677265f3-4313-4e75-a1bd-d155f7ede8e3', '808', 'SWF ', '수신기가 스위치가 눌러진 상태로 부팅이 되었을 경우 발생하는 고장을 나타낸다.(Switch Fault)', '1 : 고장, 0 : 정상', 'Woojin', 'FDU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'SWF = 수신기가 스위치가 눌러진 상태로 부팅이 되었을 경우 발생하는 고장을 나타낸다.(Switch Fault). 1 : 고장, 0 : 정상', '우진200량-3단계'), ('67ab2632-3013-48e9-85b2-1b07a4883644', '1153', 'DDS2-5F ', '5호차 미세먼지센서2 고장상태(Dust Detector Sensor AP2 Car5 Fault)', '1 : 고장, 0 : 정상', 'Woojin', 'AIRP', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'DDS2-5F = 5호차 미세먼지센서2 고장상태(Dust Detector Sensor AP2 Car5 Fault). 1 : 고장, 0 : 정상', '우진200량-3단계'), ('67c343a3-605b-4c2a-8f63-912c5b64d73b', '1110', 'ST+1 ', '운전실 선택(캠) 스위치에 의해 기준온도가 실내기준온도+1도로 설정(Standard Temperature +1℃)', '1 : 동작중, 0 : 중지상태, Default : 0', 'Woojin', 'CHVAC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'ST+1 = 운전실 선택(캠) 스위치에 의해 기준온도가 실내기준온도+1도로 설정(Standard Temperature +1℃). 1 : 동작중, 0 : 중지상태, Default : 0', '우진200량-3단계'), ('67cc4a39-7744-4236-a7c6-5b6af054ed02', '172', 'COPANTO1 ', '판토1 코크 차단 상태(NO PANTOGRAPH CUT-OUT COCK1)', '그 외의 경우 : 0, 코크차단시 : 1', 'Woojin', 'M1', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'COPANTO1 = 판토1 코크 차단 상태(NO PANTOGRAPH CUT-OUT COCK1). 그 외의 경우 : 0, 코크차단시 : 1', '우진200량-3단계'), ('67e601ad-1f76-4612-88f0-61df16cfa41b', '983', 'REC_E ', '비상 인터폰 이벤트 녹화 중(RECORD EMERGENCY CALL)', '0 : 이외의 조건, 1 : 이벤트 녹화 중', 'Woojin', 'NVR', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'REC_E = 비상 인터폰 이벤트 녹화 중(RECORD EMERGENCY CALL). 0 : 이외의 조건, 1 : 이벤트 녹화 중', '우진200량-3단계'), ('6888c8ef-f0de-44da-bcab-60d8ee650a62', '239', 'ISBD ', '제동부족 감지 인통선 신호(INSUFFICIENT BRAKE DETECTED(ISBD))', '그 외의 경우 : 0, ISBD 검지시 : 1', 'Woojin', 'T1', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'ISBD = 제동부족 감지 인통선 신호(INSUFFICIENT BRAKE DETECTED(ISBD)). 그 외의 경우 : 0, ISBD 검지시 : 1', '우진200량-3단계'), ('68f6d9c0-4e7b-40d0-8184-c6fe2572461e', '673', 'MCAKON ', 'MCAK Close 상태(MCAK ON)', '0 : 각 접촉기 Off 상태 1 : 각 접촉기 On 상태', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'MCAKON = MCAK Close 상태(MCAK ON). 0 : 각 접촉기 Off 상태 1 : 각 접촉기 On 상태', '우진200량-3단계'), ('69047f29-008a-4cb8-ae84-cc9d6967c629', '876', 'ROMVER ', 'CMSB 장치 프로그램의 버전정보를 나타낸다.(ROM Version)', '0~255', 'Woojin', 'CMSB', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'ROMVER = CMSB 장치 프로그램의 버전정보를 나타낸다.(ROM Version). 0~255', '우진200량-3단계'), ('690a9754-13e2-44e1-b549-5bef0d2204fe', '585', 'SKID2 ', '차축2 차륜 스키드검지(SKID2)', '0 : 이외의 경우, 1 : 차륜 스키드 검지', 'Woojin', 'BECU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'SKID2 = 차축2 차륜 스키드검지(SKID2). 0 : 이외의 경우, 1 : 차륜 스키드 검지', '우진200량-3단계'), ('691c592b-a432-4d26-97db-92386d7e4b51', '1162', 'DDS1-7F ', '7호차 미세먼지센서1 고장상태(Dust Detector Sensor AP1 Car7 Fault)', '1 : 고장, 0 : 정상', 'Woojin', 'AIRP', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'DDS1-7F = 7호차 미세먼지센서1 고장상태(Dust Detector Sensor AP1 Car7 Fault). 1 : 고장, 0 : 정상', '우진200량-3단계'), ('693f915e-dbee-4358-be25-9a994849ce0f', '1135', 'DDS4-1F ', '1호차 미세먼지센서4 고장상태(Dust Detector Sensor AP4 Car1 Fault)', '1 : 고장, 0 : 정상', 'Woojin', 'AIRP', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'DDS4-1F = 1호차 미세먼지센서4 고장상태(Dust Detector Sensor AP4 Car1 Fault). 1 : 고장, 0 : 정상', '우진200량-3단계'), ('69587814-cee0-4761-9325-1d189b8752ca', '896', 'ALARM ', '보호동작(Alarm)', null, 'Woojin', 'BMS', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'ALARM = 보호동작(Alarm). ', '우진200량-3단계'), ('69c5d7e8-405a-4c1a-b7c2-5dda749f4bc4', '125', 'ZVS ', '영속도 바이패스(ZERO SPEED BYPASS)', '그 외의 경우 : 0, 스위치 ON시 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'ZVS = 영속도 바이패스(ZERO SPEED BYPASS). 그 외의 경우 : 0, 스위치 ON시 : 1', '우진200량-3단계'), ('69dca6d8-4c9a-442d-b8d2-4a64d9331189', '525', 'U2RSENSF ', 'UNIT2 리턴 SENSOR 고장 신호(UNIT2 Return Sensor Fault)', '1 : UNIT2 리턴 센서 이상 발생, 0 : 정상', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'U2RSENSF = UNIT2 리턴 SENSOR 고장 신호(UNIT2 Return Sensor Fault). 1 : UNIT2 리턴 센서 이상 발생, 0 : 정상 ', '우진200량-3단계'), ('6a14baa4-b84a-4e9c-a77d-21a004385c60', '943', 'RMD3-4F ', '노선안내표시기3-4 통신 상태(ROUTE MAP DISPLAY 3-4 FAULT)', '0 : 통신정상, 1 : 통신고장', 'Woojin', 'PIC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'RMD3-4F = 노선안내표시기3-4 통신 상태(ROUTE MAP DISPLAY 3-4 FAULT). 0 : 통신정상, 1 : 통신고장', '우진200량-3단계'), ('6a213224-1a24-4031-9523-d84d8f9a92b9', '693', 'CLVD_S ', '제어전원 전압저하(TCU)(Control Low Voltage Detect)', '0 : 정상, 1 : 고장검지', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'CLVD_S = 제어전원 전압저하(TCU)(Control Low Voltage Detect). 0 : 정상, 1 : 고장검지', '우진200량-3단계'), ('6a23e86f-8064-4dd9-99b9-8b6051b6f046', '675', 'SPEED2 ', '2축 속도 값(Moter Shaft 2 Speed)', '0∼255km/h', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'SPEED2 = 2축 속도 값(Moter Shaft 2 Speed). 0∼255km/h', '우진200량-3단계'), ('6a2adb2b-e807-43f8-8406-01023fbc6530', '543', 'AHEK2F ', '전자접촉기 보조히터 2 고장(Auxiliary Heater Electric Contactor2 Fault)', '1 : 고장 , 0 : 정상', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'AHEK2F = 전자접촉기 보조히터 2 고장(Auxiliary Heater Electric Contactor2 Fault). 1 : 고장 , 0 : 정상', '우진200량-3단계'), ('6aaf0561-86e1-4220-b744-d68ab570fc11', '227', 'ILCR3 ', 'DC 실내등 컨텍터 ON 명령(INTERIOR DC LIGHTS CONTACTOR)', '접촉기 ON시 : 0, 접촉기 OFF시 : 1', 'Woojin', 'M2', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'ILCR3 = DC 실내등 컨텍터 ON 명령(INTERIOR DC LIGHTS CONTACTOR). 접촉기 ON시 : 0, 접촉기 OFF시 : 1', '우진200량-3단계'), ('6ac11fdc-27bd-4132-ac51-3dd64b523d9b', '1064', 'PEI2-1C ', '1호차 2위 비상인터폰 연결상태(PASSENGER EMERGENCY INTERCOM 2-1 CALL)', '1 : 연결됨, 0 : 연결안됨', 'Woojin', 'TRS', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'PEI2-1C = 1호차 2위 비상인터폰 연결상태(PASSENGER EMERGENCY INTERCOM 2-1 CALL). 1 : 연결됨, 0 : 연결안됨', '우진200량-3단계'), ('6b0b1162-77c1-4159-afb5-2fb5f360c000', '752', 'T_STATE ', '기본시험 실행상태(Test State)', '0 : 초기상태, 1 : 시험진행 중, 2 : 시험종료', 'Woojin', 'SIV', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'T_STATE = 기본시험 실행상태(Test State). 0 : 초기상태, 1 : 시험진행 중, 2 : 시험종료', '우진200량-3단계'), ('6b2de900-248c-4f57-b9f0-2a9d8374bfee', '436', 'PEI1-8 ', '비상인터폰 호출 위치 CAR 8 1위(PASSENGER EMERGENCY INTERCOM 1-8 CALL)', '0 : 미호출, 1 : 호출', 'Woojin', 'AVC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'PEI1-8 = 비상인터폰 호출 위치 CAR 8 1위(PASSENGER EMERGENCY INTERCOM 1-8 CALL). 0 : 미호출, 1 : 호출', '우진200량-3단계'), ('6b5964ee-8901-4200-834c-f6e6e4091b53', '616', 'DMPT_OK ', '덤프밸브 시험결과(Dump Valve Test OK)', '0 : NO GOOD or NO TEST, 1 : 결과 OK', 'Woojin', 'BECU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'DMPT_OK = 덤프밸브 시험결과(Dump Valve Test OK). 0 : NO GOOD or NO TEST, 1 : 결과 OK', '우진200량-3단계'), ('6bd76b71-82b8-46d1-b059-bd5f270d31f6', '36', 'L_DOLPBD ', '왼쪽 출입문 닫힘버튼 (Door Open Left Push Button Data)', '1초 안에 50ms 단위로 체크, 한번이라도 검지되면 ON으로 1이 올라옴.', 'Woojin', '출입문 50ms', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'L_DOLPBD = 1초 안에 50ms 단위로 체크, 한번이라도 검지되면 ON으로 1이 올라옴.', '우진200량-3단계'), ('6bffd7d8-7206-4f99-9ce9-5bb853422778', '725', 'GRD ', '접지검지(Grounding Detect)', '0 : 정상, 1 : 고장검지', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'GRD = 접지검지(Grounding Detect). 0 : 정상, 1 : 고장검지', '우진200량-3단계'), ('6c002380-2a92-49c5-acab-d5b0cb38c261', '833', 'ENABLEF ', '차량enable 신호가 없는 상태에서 열림 명령이 인가되는 에러(Enable signal error)', '0 : 정상 1 : 고장', 'Woojin', 'DCU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'ENABLEF = 차량enable 신호가 없는 상태에서 열림 명령이 인가되는 에러(Enable signal error). 0 : 정상 1 : 고장', '우진200량-3단계'), ('6c041f55-c9a6-49fc-9703-406e92bfa46c', '23', 'ATC제한속도 ', 'ATC제한속도', null, 'Woojin', 'TIB', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'ATC제한속도 = ATC제한속도', '우진200량-3단계'), ('6c48d4e5-55ab-4793-b3f5-abf70c017c68', '401', 'PIB3F ', 'M2 (CAR 3) PIB 고장 정보(PASSENGER INFORMATION BOARD 3 FAULT)', '0 : 정상, 1 : 고장', 'Woojin', 'AVC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'PIB3F = M2 (CAR 3) PIB 고장 정보(PASSENGER INFORMATION BOARD 3 FAULT). 0 : 정상, 1 : 고장', '우진200량-3단계'), ('6c56c7ba-15c7-4237-857f-f83ed997c04b', '608', 'BEA ', '회생 제동력 달성 값(Brake Effective Apply)', '0~102%', 'Woojin', 'BECU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'BEA = 회생 제동력 달성 값(Brake Effective Apply). 0~102%', '우진200량-3단계'), ('6c80782b-cefd-4f99-87e6-59a5cf5629a5', '180', 'AC380_AN ', 'AC 380V NFB 트립(객실에어컨, 라인플로워)(CIRCUIT BREAKERS 380V 60Hz CLOSED (AIR.CON))', '트립시 : 0, 정상시 : 1', 'Woojin', 'M1', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'AC380_AN = AC 380V NFB 트립(객실에어컨, 라인플로워)(CIRCUIT BREAKERS 380V 60Hz CLOSED (AIR.CON)). 트립시 : 0, 정상시 : 1', '우진200량-3단계'), ('6c80ee65-47c9-4b77-9dae-7040aec3e6cc', '622', 'SPEED4 ', '4축 속도(Speed4)', '0~127.5km/h', 'Woojin', 'BECU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'SPEED4 = 4축 속도(Speed4). 0~127.5km/h', '우진200량-3단계'), ('6c9bd07e-2d51-4add-843d-3ee727167efc', '322', 'LDE ', 'ATCATO의 Left Door Enable 출력 상태(LDE Command)', 'No LDE : 0, LDE : 1', 'Woojin', 'ATC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'LDE = ATCATO의 Left Door Enable 출력 상태(LDE Command). No LDE : 0, LDE : 1', '우진200량-3단계'), ('6cbe17e7-e74b-45ed-92b2-d247ee34fda6', '954', 'RMD4-6F ', '노선안내표시기4-6 통신 상태(ROUTE MAP DISPLAY 4-6 FAULT)', '0 : 통신정상, 1 : 통신고장', 'Woojin', 'PIC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'RMD4-6F = 노선안내표시기4-6 통신 상태(ROUTE MAP DISPLAY 4-6 FAULT). 0 : 통신정상, 1 : 통신고장', '우진200량-3단계'), ('6d21259d-c7f6-4f39-8908-ae84c28baae6', '950', 'RMD2-5F ', '노선안내표시기2-5 통신 상태(ROUTE MAP DISPLAY 2-5 FAULT)', '0 : 통신정상, 1 : 통신고장', 'Woojin', 'PIC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'RMD2-5F = 노선안내표시기2-5 통신 상태(ROUTE MAP DISPLAY 2-5 FAULT). 0 : 통신정상, 1 : 통신고장', '우진200량-3단계'), ('6d70fea0-961d-44f6-af0e-447e23ed7e03', '1052', 'PEI1-5C ', '5호차 1위 비상인터폰 연결상태(PASSENGER EMERGENCY INTERCOM 1-5 CALL)', '1 : 연결됨, 0 : 연결안됨', 'Woojin', 'TRS', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'PEI1-5C = 5호차 1위 비상인터폰 연결상태(PASSENGER EMERGENCY INTERCOM 1-5 CALL). 1 : 연결됨, 0 : 연결안됨', '우진200량-3단계'), ('6d762d4b-e091-46f0-b1c4-9228e7f4b7bf', '160', 'BRCOCK1 ', '제동 차단 코크2 스위치 미동작(BOGIE #1)(NO BRAKE CUT-OUT COCK BOGIE #1)', 'BC cock cutout 시 : 0, 그 외의 경우 : 1', 'Woojin', 'M1', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'BRCOCK1 = 제동 차단 코크2 스위치 미동작(BOGIE #1)(NO BRAKE CUT-OUT COCK BOGIE #1). BC cock cutout 시 : 0, 그 외의 경우 : 1', '우진200량-3단계'), ('6db7309c-d4bb-46f1-8910-f2ebded45b40', '427', 'AVC8F ', 'TC2 (CAR 8) AVC 고장 정보(AUDIO VIDEO CONTROLLER 8 FAULT)', '0 : 정상, 1 : 고장', 'Woojin', 'AVC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'AVC8F = TC2 (CAR 8) AVC 고장 정보(AUDIO VIDEO CONTROLLER 8 FAULT). 0 : 정상, 1 : 고장', '우진200량-3단계'), ('6dff03a7-f2a7-4331-bba7-d7b1e1e8b2ec', '391', 'PIB1F ', 'TC1 (CAR 1) PIB 고장 정보(PASSENGER INFORMATION BOARD 1 FAULT)', '0 : 정상, 1 : 고장', 'Woojin', 'AVC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'PIB1F = TC1 (CAR 1) PIB 고장 정보(PASSENGER INFORMATION BOARD 1 FAULT). 0 : 정상, 1 : 고장', '우진200량-3단계'), ('6e609921-3ff8-45fe-b489-54b21f3bf4b2', '1208', 'HUMID6 ', '6호차 객실 습도(room Humidity Car6)', '0 ~ 100 (%)', 'Woojin', 'AIRP', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'HUMID6 = 6호차 객실 습도(room Humidity Car6). 0 ~ 100 (%)', '우진200량-3단계'), ('6e67bf02-db1c-4bb5-9446-bddd5346551a', '913', 'DOW ', '출입문 열림 신호(DOOR OPEN WARNING)', '0 : 이외의 조건, 1 : 출입문 열림', 'Woojin', 'PIC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'DOW = 출입문 열림 신호(DOOR OPEN WARNING). 0 : 이외의 조건, 1 : 출입문 열림', '우진200량-3단계'), ('6eb23e1c-8005-4c53-b136-8b68ab73d583', '521', 'CO2SENS2F ', 'CO2 SENSOR 2 고장 신호(CO2 Sensor2 Fault)', '1 : CO2 이상 발생, 0 : 정상', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'CO2SENS2F = CO2 SENSOR 2 고장 신호(CO2 Sensor2 Fault). 1 : CO2 이상 발생, 0 : 정상', '우진200량-3단계'), ('6f22239c-4aad-4f35-8f68-a6d1d5696578', '85', 'EPANDS ', '비상 판토 하강 데스크 스위치(EMERGENCY PANTO DOWN(RED))', '그 외의 경우 : 0, 스위치 ON시 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'EPANDS = 비상 판토 하강 데스크 스위치(EMERGENCY PANTO DOWN(RED)). 그 외의 경우 : 0, 스위치 ON시 : 1', '우진200량-3단계'), ('6f449fbc-940f-41bc-bd00-e4f33461dc5a', '192', 'ACMR ', '보조 압축기 모터 OFF 계전기(AUXILIARY COMPRESSOR MOTOR CONTACTOR RESET (OFF))', '그 외의 경우 : 0, 계전기OFF시 : 1', 'Woojin', 'M1', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'ACMR = 보조 압축기 모터 OFF 계전기(AUXILIARY COMPRESSOR MOTOR CONTACTOR RESET (OFF)). 그 외의 경우 : 0, 계전기OFF시 : 1', '우진200량-3단계'), ('6f83db5e-d64a-4055-8caf-a3848fb94a43', '668', 'MCARCC ', 'MACR Close 지령(MCAR Close Command)', '0 : 각 접촉기의 Close 지령 Off 중 1 : 각 접촉기의 Close 지령 출력 중', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'MCARCC = MACR Close 지령(MCAR Close Command). 0 : 각 접촉기의 Close 지령 Off 중 1 : 각 접촉기의 Close 지령 출력 중', '우진200량-3단계'), ('6fa91d73-673a-4d7e-9e0b-c663b05f3d97', '184', 'LFF1K ', 'LINE FLOW FANS CONTACTOR 1 ON(LINE FLOW FANS CONTACTOR 1 CLOSED)', '그 외의 경우 : 0, 접촉기 ON시 : 1', 'Woojin', 'M1', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'LFF1K = LINE FLOW FANS CONTACTOR 1 ON(LINE FLOW FANS CONTACTOR 1 CLOSED). 그 외의 경우 : 0, 접촉기 ON시 : 1', '우진200량-3단계'), ('7031230a-9f46-4d70-a013-fb17a0d93447', '790', 'FC1V ', 'FC1 전압 정보(Filter Capacitor1 Voltage)', '0~1500V', 'Woojin', 'SIV', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'FC1V = FC1 전압 정보(Filter Capacitor1 Voltage). 0~1500V', '우진200량-3단계'), ('71240579-4440-4d58-8722-9ae78a9a01ef', '1194', 'AP1-8S ', '8호차 공기정화기1 동작상태(Air Purifier1 Car8 State)', '0 : OFF, 1 : 약, 2 : 중, 3 : 강', 'Woojin', 'AIRP', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'AP1-8S = 8호차 공기정화기1 동작상태(Air Purifier1 Car8 State). 0 : OFF, 1 : 약, 2 : 중, 3 : 강', '우진200량-3단계'), ('718d4f2b-39c9-4dcd-a978-fbb056a10f2d', '957', 'RMD1-6F ', '노선안내표시기1-6 통신 상태(ROUTE MAP DISPLAY 1-6 FAULT)', '0 : 통신정상, 1 : 통신고장', 'Woojin', 'PIC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'RMD1-6F = 노선안내표시기1-6 통신 상태(ROUTE MAP DISPLAY 1-6 FAULT). 0 : 통신정상, 1 : 통신고장', '우진200량-3단계'), ('719b2592-63ec-4963-9bab-4d4cff4c8dcf', '816', 'T_STATE ', '현재 테스트 진행상태(Test status)', '0 : Default 1 : 테스트 중 3 : 테스트 완료', 'Woojin', 'DCU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'T_STATE = 현재 테스트 진행상태(Test status). 0 : Default 1 : 테스트 중 3 : 테스트 완료', '우진200량-3단계'), ('71bb8997-e836-478f-9f4e-e022a282e8b5', '655', 'EDP2 ', 'TC2 방향 비상구원 Powering(EOMODE Powering TC2)', '0 : Normal 상태 1 : 비상구원운전 TC2방향 견인모드', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'EDP2 = TC2 방향 비상구원 Powering(EOMODE Powering TC2). 0 : Normal 상태 1 : 비상구원운전 TC2방향 견인모드', '우진200량-3단계'), ('721332b3-ff2c-48fc-8c8c-39a8f871eaef', '724', 'CTERR ', 'CT 이상 검지(CT Error)', '0 : 정상, 1 : 고장검지', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'CTERR = CT 이상 검지(CT Error). 0 : 정상, 1 : 고장검지', '우진200량-3단계'), ('723552c1-b8be-4af9-a112-e813bb851d0d', '925', 'RMD3-1F ', '노선안내표시기3-1 통신 상태(ROUTE MAP DISPLAY 3-1 FAULT)', '0 : 통신정상, 1 : 통신고장', 'Woojin', 'PIC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'RMD3-1F = 노선안내표시기3-1 통신 상태(ROUTE MAP DISPLAY 3-1 FAULT). 0 : 통신정상, 1 : 통신고장', '우진200량-3단계'), ('7243cc8f-15de-444e-98c2-d235530f17a8', '726', 'ERR485 ', '장치 간 전송이상(RS485 Error)', '0 : 정상, 1 : 고장검지', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'ERR485 = 장치 간 전송이상(RS485 Error). 0 : 정상, 1 : 고장검지', '우진200량-3단계'), ('7277d284-737a-494d-a5b5-c00cfa026202', '49', 'NEUTRAL ', '전후진기 중립(NOT NEUTRAL)', '역전기 중립상태 : 0, 역전기 중립상태 아님 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'NEUTRAL = 전후진기 중립(NOT NEUTRAL). 역전기 중립상태 : 0, 역전기 중립상태 아님 : 1', '우진200량-3단계'), ('72dc9c6e-0c20-4701-aeeb-65202236357a', '79', 'RO_NBL ', '신차 고장 -> 신차 구원(RESCUE OPERATION NBL BY NBL)', '그 외의 경우 : 0, 스위치 조작시 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'RO_NBL = 신차 고장 -> 신차 구원(RESCUE OPERATION NBL BY NBL). 그 외의 경우 : 0, 스위치 조작시 : 1', '우진200량-3단계'), ('72e437dc-c97e-4a9b-8e52-fa05497f9db0', '393', 'PEI2-1F ', 'TC1 (CAR 1) PEI 2 고장 정보(PASSENGER EMERGENCY INTERCOM 2-1 FAULT)', '0 : 정상, 1 : 고장', 'Woojin', 'AVC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'PEI2-1F = TC1 (CAR 1) PEI 2 고장 정보(PASSENGER EMERGENCY INTERCOM 2-1 FAULT). 0 : 정상, 1 : 고장', '우진200량-3단계'), ('72ec5452-0cd3-4bda-af1e-dc207110cb42', '396', 'PIB2F ', 'M1 (CAR 2) PIB 고장 정보(PASSENGER INFORMATION BOARD 2 FAULT)', '0 : 정상, 1 : 고장', 'Woojin', 'AVC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'PIB2F = M1 (CAR 2) PIB 고장 정보(PASSENGER INFORMATION BOARD 2 FAULT). 0 : 정상, 1 : 고장', '우진200량-3단계'), ('72f86ebe-e9bc-4d23-857e-c671c7cfa453', '938', 'RMD2-3F ', '노선안내표시기2-3 통신 상태(ROUTE MAP DISPLAY 2-3 FAULT)', '0 : 통신정상, 1 : 통신고장', 'Woojin', 'PIC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'RMD2-3F = 노선안내표시기2-3 통신 상태(ROUTE MAP DISPLAY 2-3 FAULT). 0 : 통신정상, 1 : 통신고장', '우진200량-3단계'), ('72fe351e-9613-4820-b204-87a66aaade02', '62', 'SBRCOCK ', '상용제동 차단 코크 스위치 미동작(NO SERVICE BRAKE CUT-OUT COCK)', 'SB cock cutout 시 : 0, 그 외의 경우 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'SBRCOCK = 상용제동 차단 코크 스위치 미동작(NO SERVICE BRAKE CUT-OUT COCK). SB cock cutout 시 : 0, 그 외의 경우 : 1', '우진200량-3단계'), ('737632db-80ab-4d60-847b-cbd23ccfdc93', '223', 'FA1 ', '화재감지기 고장(FIRE DETECTION UNIT FAULT)', '그 외의 경우 : 1, 고장시 : 0', 'Woojin', 'M2', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'FA1 = 화재감지기 고장(FIRE DETECTION UNIT FAULT). 그 외의 경우 : 1, 고장시 : 0', '우진200량-3단계'), ('739690bb-08c2-4a58-b2b6-d6d4e79bc915', '1180', 'AP3-5S ', '5호차 공기정화기3 동작상태(Air Purifier3 Car5 State)', '0 : OFF, 1 : 약, 2 : 중, 3 : 강', 'Woojin', 'AIRP', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'AP3-5S = 5호차 공기정화기3 동작상태(Air Purifier3 Car5 State). 0 : OFF, 1 : 약, 2 : 중, 3 : 강', '우진200량-3단계'), ('74a93bd7-d50d-42e3-b37f-9a0a32c89fca', '1087', 'TCI1F ', 'TC1 TCI장치 고장 상태 정보(TCI car1 Fault)', '1 : 고장, 0 : 정상, Default : 0', 'Woojin', 'TRS', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'TCI1F = TC1 TCI장치 고장 상태 정보(TCI car1 Fault). 1 : 고장, 0 : 정상, Default : 0', '우진200량-3단계'), ('74b550b1-43a6-4ca3-ae5e-ec377ac4b83d', '1175', 'AP4-4S ', '4호차 공기정화기4 동작상태(Air Purifier4 Car4 State)', '0 : OFF, 1 : 약, 2 : 중, 3 : 강', 'Woojin', 'AIRP', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'AP4-4S = 4호차 공기정화기4 동작상태(Air Purifier4 Car4 State). 0 : OFF, 1 : 약, 2 : 중, 3 : 강', '우진200량-3단계'), ('74b9cb3b-19b7-4c11-bc00-61636dab9b54', '740', 'OL ', '과부하검지(Over Load Detect)', '0 : 정상, 1 : 고장검지', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'OL = 과부하검지(Over Load Detect). 0 : 정상, 1 : 고장검지', '우진200량-3단계'), ('7551f213-d613-4913-9f99-ec1a1d2d4055', '1141', 'DDS2-4F ', '4호차 미세먼지센서2 고장상태(Dust Detector Sensor AP2 Car4 Fault)', '1 : 고장, 0 : 정상', 'Woojin', 'AIRP', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'DDS2-4F = 4호차 미세먼지센서2 고장상태(Dust Detector Sensor AP2 Car4 Fault). 1 : 고장, 0 : 정상', '우진200량-3단계'), ('7558eee6-cbf2-4f43-a513-d9ebc06b8aa2', '276', 'AC380_AN ', 'AC 380V NFB 트립(객실에어컨, 라인플로워)(CIRCUIT BREAKERS 380V 60Hz CLOSED (AIR.CON))', '트립시 : 0, 정상시 : 1', 'Woojin', 'T2', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'AC380_AN = AC 380V NFB 트립(객실에어컨, 라인플로워)(CIRCUIT BREAKERS 380V 60Hz CLOSED (AIR.CON)). 트립시 : 0, 정상시 : 1', '우진200량-3단계'), ('75eb52be-fe76-43c8-a21e-5239b41b3193', '652', 'LB2ON ', 'LB2 Close 상태(LB 2 ON)', '0 : 각 접촉기 Off 상태 1 : 각 접촉기 On 상태', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'LB2ON = LB2 Close 상태(LB 2 ON). 0 : 각 접촉기 Off 상태 1 : 각 접촉기 On 상태', '우진200량-3단계'), ('760110b7-1a7b-4b6b-a5a7-f290fda5d974', '426', 'COB8F ', 'TC2 (CAR 8) COB 고장 정보(CENTER OPERATION BOX 8 FAULT)', '0 : 정상, 1 : 고장', 'Woojin', 'AVC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'COB8F = TC2 (CAR 8) COB 고장 정보(CENTER OPERATION BOX 8 FAULT). 0 : 정상, 1 : 고장', '우진200량-3단계'), ('76128592-36db-4705-8b14-36ce4386a5f7', '1051', 'PEI1-6C ', '6호차 1위 비상인터폰 연결상태(PASSENGER EMERGENCY INTERCOM 1-6 CALL)', '1 : 연결됨, 0 : 연결안됨', 'Woojin', 'TRS', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'PEI1-6C = 6호차 1위 비상인터폰 연결상태(PASSENGER EMERGENCY INTERCOM 1-6 CALL). 1 : 연결됨, 0 : 연결안됨', '우진200량-3단계'), ('7650a946-e6d3-4d58-b817-09f462cbfe5a', '669', 'ZVRCC ', 'ZVR Close 지령(ZVR Close Command)', '0 : ZVR 릴레이 Close 지령 Off 중 1 : ZVR 릴레이 Close 지령 출력 중', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'ZVRCC = ZVR Close 지령(ZVR Close Command). 0 : ZVR 릴레이 Close 지령 Off 중 1 : ZVR 릴레이 Close 지령 출력 중', '우진200량-3단계'), ('76b59aef-08f8-4835-9ce8-5c6cd38aeba9', '489', 'TST_NG ', '자체 검사 NG모드(Test-Item result NG)', '1 : 시험결과 NG모드, 0 : 시험결과 NG모드 아님', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'TST_NG = 자체 검사 NG모드(Test-Item result NG). 1 : 시험결과 NG모드, 0 : 시험결과 NG모드 아님', '우진200량-3단계'), ('76f30320-29e2-4906-b9c3-c4e6b7351fb9', '244', 'ESK ', 'ESK 연장급전 컨텍터(CONTACTOR EXTENSION SUPPLY)', '그 외의 경우 : 0, ESK접촉기 ON시 : 1', 'Woojin', 'T1', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'ESK = ESK 연장급전 컨텍터(CONTACTOR EXTENSION SUPPLY). 그 외의 경우 : 0, ESK접촉기 ON시 : 1 ', '우진200량-3단계'), ('7725cb40-1fbe-4856-853b-d21f96d7342a', '1055', 'PEI1-2C ', '2호차 1위 비상인터폰 연결상태(PASSENGER EMERGENCY INTERCOM 1-2 CALL)', '1 : 연결됨, 0 : 연결안됨', 'Woojin', 'TRS', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'PEI1-2C = 2호차 1위 비상인터폰 연결상태(PASSENGER EMERGENCY INTERCOM 1-2 CALL). 1 : 연결됨, 0 : 연결안됨', '우진200량-3단계'), ('77273d07-389e-405f-80ae-449cc5158a69', '858', 'RF2_RFF ', '2계 RF 고장(RF2 RF Fault)', '1 : 고장, 0 : 정상, Default : 0', 'Woojin', 'PSD', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'RF2_RFF = 2계 RF 고장(RF2 RF Fault). 1 : 고장, 0 : 정상, Default : 0', '우진200량-3단계'), ('776522de-718f-45af-b8f6-37fd6db0de8c', '190', 'SOTS1 ', '열차분리검지 1(SEPARATION OF TRAIN SET1)', '그 외의 경우 : 1, 고장시 : 0', 'Woojin', 'M1', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'SOTS1 = 열차분리검지 1(SEPARATION OF TRAIN SET1). 그 외의 경우 : 1, 고장시 : 0', '우진200량-3단계'), ('77b715ce-9665-439f-b38d-bcec9ce6a0c3', '331', 'CARRIER ', '궤도회로에서 수신한 반송 주파수 코드(ATC Carrier Frequency)', 'No Code: 0, F1 Code : 1, F2 Code : 2, F3 Code : 3, F4 Code : 4', 'Woojin', 'ATC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'CARRIER = 궤도회로에서 수신한 반송 주파수 코드(ATC Carrier Frequency). No Code: 0, F1 Code : 1, F2 Code : 2, F3 Code : 3, F4 Code : 4', '우진200량-3단계'), ('77e88e1d-1fc0-4fc1-8914-966a6b389ccd', '177', 'DOORN ', '출입문 회로 의 회로 차단기 상태(DOOR CIRCUIT BREAKER CLOSED)', '트립시 : 0, 정상시 : 1', 'Woojin', 'M1', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'DOORN = 출입문 회로 의 회로 차단기 상태(DOOR CIRCUIT BREAKER CLOSED). 트립시 : 0, 정상시 : 1', '우진200량-3단계'), ('77eb52dc-82b9-4637-8bbe-326b2a17d0e2', '259', 'LFF2CR ', 'LINE FLOW FANS CONTACTOR 2 ON 명령(LINE FLOW FANS CONTACTOR 2)', '그 외의 경우 : 0, 접촉기 ON시 : 1', 'Woojin', 'T1', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'LFF2CR = LINE FLOW FANS CONTACTOR 2 ON 명령(LINE FLOW FANS CONTACTOR 2). 그 외의 경우 : 0, 접촉기 ON시 : 1', '우진200량-3단계'), ('780132c5-dc0c-49fa-812a-b72c126409fa', '700', 'FCLVD ', 'FC 저전압 검지(FC Low Voltage Detect)', '0 : 정상, 1 : 고장검지', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'FCLVD = FC 저전압 검지(FC Low Voltage Detect). 0 : 정상, 1 : 고장검지', '우진200량-3단계'), ('78114679-9333-43b2-b068-e6e5f4a252ff', '1187', 'AP4-7S ', '7호차 공기정화기4 동작상태(Air Purifier4 Car7 State)', '0 : OFF, 1 : 약, 2 : 중, 3 : 강', 'Woojin', 'AIRP', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'AP4-7S = 7호차 공기정화기4 동작상태(Air Purifier4 Car7 State). 0 : OFF, 1 : 약, 2 : 중, 3 : 강', '우진200량-3단계'), ('7819ea1d-878b-46c4-9bce-a0d1bff9dbb2', '46', 'AUTO ', '운전모드 자동모드(AUTO, FA MODE)', '그 외의 경우 : 0, 자동모드 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'AUTO = 운전모드 자동모드(AUTO, FA MODE). 그 외의 경우 : 0, 자동모드 : 1', '우진200량-3단계'), ('79648998-d035-4b61-8f6c-d318932cf14f', '841', 'DTYPE ', '데이터 타입(DATA TYPE)', null, 'Woojin', 'PSD', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'DTYPE = 데이터 타입(DATA TYPE).', '우진200량-3단계'), ('79b94e34-ca32-4aa7-b8f0-a0623925d279', '1204', 'HUMID2 ', '2호차 객실 습도(room Humidity Car2)', '0 ~ 100 (%)', 'Woojin', 'AIRP', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'HUMID2 = 2호차 객실 습도(room Humidity Car2). 0 ~ 100 (%)', '우진200량-3단계'), ('79f1c1ff-d1f4-4b61-9197-f0264710640e', '119', 'DOLPBD ', '좌측 출입문 열림(데스크)(DOORS OPEN LEFT(DESK))', '그 외의 경우 : 0, 스위치 ON시 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'DOLPBD = 좌측 출입문 열림(데스크)(DOORS OPEN LEFT(DESK)). 그 외의 경우 : 0, 스위치 ON시 : 1', '우진200량-3단계'), ('7a3dd5f5-862a-41b0-9ac3-75adeff5623a', '134', 'ILCR1C ', 'AC 실내등 컨텍터 1 ON 명령 (INTERIOR LIGHTS CONTACTOR 1)', '그 외의 경우 : 0, 접촉기 ON시 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'ILCR1C = AC 실내등 컨텍터 1 ON 명령 (INTERIOR LIGHTS CONTACTOR 1). 그 외의 경우 : 0, 접촉기 ON시 : 1', '우진200량-3단계'), ('7ada7758-b44b-4021-80f4-9e11fe073c94', '1062', 'PEI2-3C ', '3호차 2위 비상인터폰 연결상태(PASSENGER EMERGENCY INTERCOM 2-3 CALL)', '1 : 연결됨, 0 : 연결안됨', 'Woojin', 'TRS', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'PEI2-3C = 3호차 2위 비상인터폰 연결상태(PASSENGER EMERGENCY INTERCOM 2-3 CALL). 1 : 연결됨, 0 : 연결안됨', '우진200량-3단계'), ('7b0a3a16-12eb-4d6b-9ec8-d1b2a0130c64', '593', 'EB ', '비상제동 체결 상태(Emergency Brake)', '0 : EB 미체결, 1 : EB 체결', 'Woojin', 'BECU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'EB = 비상제동 체결 상태(Emergency Brake). 0 : EB 미체결, 1 : EB 체결', '우진200량-3단계'), ('7b2e760a-c109-41c7-aa6e-ef4ef4255cda', '716', 'OVTD ', 'OVT 오점호 검지(OVT Failure Detect)', '0 : 정상, 1 : 고장검지', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'OVTD = OVT 오점호 검지(OVT Failure Detect). 0 : 정상, 1 : 고장검지', '우진200량-3단계'), ('7b48b406-1382-4869-86e7-b3fc7eafeeea', '202', 'BRCOCK2 ', '제동 차단 코크3 스위치 미동작(BOGIE #2)(NO BRAKE CUT-OUT COCK BOGIE #2)', 'BC cock cutout 시 : 0, 그 외의 경우 : 1', 'Woojin', 'M2', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'BRCOCK2 = 제동 차단 코크3 스위치 미동작(BOGIE #2)(NO BRAKE CUT-OUT COCK BOGIE #2). BC cock cutout 시 : 0, 그 외의 경우 : 1', '우진200량-3단계'), ('7b59ce8e-605f-4571-8ff1-8b9423762788', '810', 'ROMVER ', '소프트웨어 버전(Rom Version)', null, 'Woojin', 'FDU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'ROMVER = 소프트웨어 버전(Rom Version). ', '우진200량-3단계'), ('7b6dd093-fedd-4ce7-821c-6a035848b5c5', '82', 'PBBPCB ', '주차제동 바이패스 차단기(PARKING BRAKE BYPASS)', '그 외의 경우 : 0, 주차제동 바이패스 작동시 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'PBBPCB = 주차제동 바이패스 차단기(PARKING BRAKE BYPASS). 그 외의 경우 : 0, 주차제동 바이패스 작동시 : 1', '우진200량-3단계'), ('7b8c7447-5f43-4ed6-841d-1e8d7c73c497', '30', '주행거리 ', '주행거리', null, 'Woojin', 'TIB', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', '주행거리 = 주행거리', '우진200량-3단계'), ('7bc94b6b-5f19-41a3-a9e1-4c3f6630359e', '374', 'HCR8_SDR ', '선두차 정보 8호차(HCR Head Car Relay (8car))', '0 : HCR OFF, 1 : HCR ON', 'Woojin', 'AVC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'HCR8_SDR = 선두차 정보 8호차(HCR Head Car Relay (8car)). 0 : HCR OFF, 1 : HCR ON', '우진200량-3단계'), ('7c00af98-ce12-42e1-b84e-d5fdb264fbd5', '474', 'FULLH ', '전난방(1050W) 운전모드(Full Heating Mode)', '1 : 전난방모드, 0 : 전난방모드 아님', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'FULLH = 전난방(1050W) 운전모드(Full Heating Mode). 1 : 전난방모드, 0 : 전난방모드 아님', '우진200량-3단계'), ('7c4f61e8-fc70-4ce2-aa73-377f4109a395', '1197', 'FDUST3 ', '3호차 미세먼지 농도(Fine Dust Car3)', '0 ~ 255 (㎍/㎥)', 'Woojin', 'AIRP', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'FDUST3 = 3호차 미세먼지 농도(Fine Dust Car3). 0 ~ 255 (㎍/㎥)', '우진200량-3단계'), ('7c83640b-4159-4ef3-972a-809b8c6f1f08', '269', 'ECUF ', 'BOU ECU 전원 고장 신호(ECU POWER SUPPLY FAULT)', '그 외의 경우 : 1, ECU Power fault 검지 : 0', 'Woojin', 'T2', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'ECUF = BOU ECU 전원 고장 신호(ECU POWER SUPPLY FAULT). 그 외의 경우 : 1, ECU Power fault 검지 : 0', '우진200량-3단계'), ('7ccd2a99-e9fd-4340-a23e-1a67348050c4', '658', 'MCOK1ON ', 'MCOK1 Close 상태(MCOK1 ON)', '0 : 각 접촉기 Off 상태 1 : 각 접촉기 On 상태', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'MCOK1ON = MCOK1 Close 상태(MCOK1 ON). 0 : 각 접촉기 Off 상태 1 : 각 접촉기 On 상태', '우진200량-3단계'), ('7d34ef4d-6cef-4f8d-96a7-7b40f832041d', '1161', 'DDS2-7F ', '7호차 미세먼지센서2 고장상태(Dust Detector Sensor AP2 Car7 Fault)', '1 : 고장, 0 : 정상', 'Woojin', 'AIRP', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'DDS2-7F = 7호차 미세먼지센서2 고장상태(Dust Detector Sensor AP2 Car7 Fault). 1 : 고장, 0 : 정상', '우진200량-3단계'), ('7d6fc6d3-9ca0-4bdf-ad6f-5bf46ccd787e', '1019', 'SCAM1-2R ', '2호차 3번 CCTV 카메라 녹화중(SALOON CAMERA 3-2 RECORD)', '0 : 이외의 조건, 1 : 이벤트 녹화 중', 'Woojin', 'NVR', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'SCAM1-2R = 2호차 3번 CCTV 카메라 녹화중(SALOON CAMERA 3-2 RECORD). 0 : 이외의 조건, 1 : 이벤트 녹화 중', '우진200량-3단계'), ('7d8d3870-054e-4f85-87a3-0015a7860217', '169', 'MDSa1 ', 'MDS 박스 내의 MDSa1 접점 동작상태(SERVICE POSITION(MDS BOX) - MDSa1)', '그 외의 경우 : 0, ON시 : 1', 'Woojin', 'M1', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'MDSa1 = MDS 박스 내의 MDSa1 접점 동작상태(SERVICE POSITION(MDS BOX) - MDSa1). 그 외의 경우 : 0, ON시 : 1', '우진200량-3단계'), ('7dfa93c5-2556-408e-94eb-3eb893a67ca3', '926', 'RMD2-1F ', '노선안내표시기2-1 통신 상태(ROUTE MAP DISPLAY 2-1 FAULT)', '0 : 통신정상, 1 : 통신고장', 'Woojin', 'PIC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'RMD2-1F = 노선안내표시기2-1 통신 상태(ROUTE MAP DISPLAY 2-1 FAULT). 0 : 통신정상, 1 : 통신고장', '우진200량-3단계'), ('7e11912e-dc4f-425d-9edb-4147fb15196f', '459', 'PA_MAN ', '수동방송 동작 정보(PUBLIC ADDRESS-MANUAL)', '0 : 수동방송 미 동작, 1 : 수동방송 동작', 'Woojin', 'AVC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'PA_MAN = 수동방송 동작 정보(PUBLIC ADDRESS-MANUAL). 0 : 수동방송 미 동작, 1 : 수동방송 동작', '우진200량-3단계'), ('7e11dd88-9e6e-464a-b796-fc0be482a0d9', '923', 'RMD5-1F ', '노선안내표시기5-1 통신 상태(ROUTE MAP DISPLAY 5-1 FAULT)', '0 : 통신정상, 1 : 통신고장', 'Woojin', 'PIC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'RMD5-1F = 노선안내표시기5-1 통신 상태(ROUTE MAP DISPLAY 5-1 FAULT). 0 : 통신정상, 1 : 통신고장', '우진200량-3단계'), ('7e1f54c9-7ab4-45e2-bca0-e12f87e4e495', '1026', 'SCAM3-3R ', '3호차 1번 CCTV 카메라 녹화중(SALOON CAMERA 1-3 RECORD)', '0 : 이외의 조건, 1 : 이벤트 녹화 중', 'Woojin', 'NVR', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'SCAM3-3R = 3호차 1번 CCTV 카메라 녹화중(SALOON CAMERA 1-3 RECORD). 0 : 이외의 조건, 1 : 이벤트 녹화 중', '우진200량-3단계'), ('7e21977e-920d-4259-95f2-a6b856d130c2', '254', 'FD1 ', '화재감지(FIRE DETECTION)', '그 외의 경우 : 0, 화재검지시 : 1', 'Woojin', 'T1', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'FD1 = 화재감지(FIRE DETECTION). 그 외의 경우 : 0, 화재검지시 : 1', '우진200량-3단계'), ('7e37a001-cae5-4d2a-8859-ff046b739527', '583', 'BCVF ', '회생제동달성 값의 비정상(Brake Cylinder Value Fault)', '0 : 정상, 1 : 고장검지', 'Woojin', 'BECU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'BCVF = 회생제동달성 값의 비정상(Brake Cylinder Value Fault). 0 : 정상, 1 : 고장검지', '우진200량-3단계'), ('7efc8af2-1188-45d1-9d3a-60d219a963e2', '971', 'HCRVLD ', 'HCR 선두 설정(HCR VALID)', '0 : 이외의 조건, 1 : HCR 선두', 'Woojin', 'NVR', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'HCRVLD = HCR 선두 설정(HCR VALID). 0 : 이외의 조건, 1 : HCR 선두', '우진200량-3단계'), ('7f3017d0-e92d-48ec-8555-ec979c66a7db', '918', 'UPDATE ', 'PIC 펌웨어 업데이트 중(UPDATE)', '0 : 통신정상, 1 : 업데이트 중', 'Woojin', 'PIC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'UPDATE = PIC 펌웨어 업데이트 중(UPDATE). 0 : 통신정상, 1 : 업데이트 중', '우진200량-3단계'), ('7f386bc4-5934-4280-a375-134e0afd8a08', '188', 'FD1 ', '화재감지(FIRE DETECTION)', '그 외의 경우 : 0, 화재검지시 : 1', 'Woojin', 'M1', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'FD1 = 화재감지(FIRE DETECTION). 그 외의 경우 : 0, 화재검지시 : 1', '우진200량-3단계'), ('7f751d8d-774e-4c0b-9bd0-4d7150f67492', '602', 'NRBD ', '제동불완해 검지(NON-RELEASE BRAKE DETECTED(NRBD))', '0 : NO NRBD, 1 : NRBD', 'Woojin', 'BECU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'NRBD = 제동불완해 검지(NON-RELEASE BRAKE DETECTED(NRBD)). 0 : NO NRBD, 1 : NRBD', '우진200량-3단계'), ('7fce32dd-3268-48b7-bda8-5da93fc4fc00', '97', 'AC380_HN ', 'AC 380V NFB 트립(객실히터) (CIRCUIT BREAKERS 380V 60Hz CLOSED (HEATER))', '트립시 : 0, 정상시 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'AC380_HN = AC 380V NFB 트립(객실히터) (CIRCUIT BREAKERS 380V 60Hz CLOSED (HEATER)). 트립시 : 0, 정상시 : 1', '우진200량-3단계'), ('80334ff6-59fe-49a0-acdd-31e3491b74e1', '1067', 'PEI1-6E ', '6호차 1위 비상인터폰 종료상태(PASSENGER EMERGENCY INTERCOM 1-6 END)', '1 : 연결됨, 0 : 연결안됨', 'Woojin', 'TRS', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'PEI1-6E = 6호차 1위 비상인터폰 종료상태(PASSENGER EMERGENCY INTERCOM 1-6 END). 1 : 연결됨, 0 : 연결안됨', '우진200량-3단계'), ('803b590c-c500-431b-9162-c33071edd634', '778', 'CPSF ', '제어전원 고장 검지(Control Power Fault)', '0 : 이외의 조건, 1 : 제어전원 고장 검지 시', 'Woojin', 'SIV', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'CPSF = 제어전원 고장 검지(Control Power Fault). 0 : 이외의 조건, 1 : 제어전원 고장 검지 시', '우진200량-3단계'), ('8047191f-eb24-410b-8cf6-bd2bea18436b', '382', 'NO_TEXT ', '음원 없음 정보(NO TEXT)', '0 : 음원 있음, 1 : 음원 없음', 'Woojin', 'AVC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'NO_TEXT = 음원 없음 정보(NO TEXT). 0 : 음원 있음, 1 : 음원 없음', '우진200량-3단계'), ('8062ebb8-f995-463e-bc57-cc6cf22b6b93', '1024', 'SCAM2-4R ', '4호차 2번 CCTV 카메라 녹화중(SALOON CAMERA 2-4 RECORD)', '0 : 이외의 조건, 1 : 이벤트 녹화 중', 'Woojin', 'NVR', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'SCAM2-4R = 4호차 2번 CCTV 카메라 녹화중(SALOON CAMERA 2-4 RECORD). 0 : 이외의 조건, 1 : 이벤트 녹화 중', '우진200량-3단계'), ('80882409-1f6b-4c17-96fd-62acf1542136', '291', 'DCPB_SDR ', '출입문 닫힘모드(Door Manual Close PB)', 'Door Close AutoMode Push Button Detect : 1, default : 0', 'Woojin', 'ATC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'DCPB_SDR = 출입문 닫힘모드(Door Manual Close PB). Door Close AutoMode Push Button Detect : 1, default : 0', '우진200량-3단계'), ('80b59c63-fa2a-417d-a765-cf15d5ebf371', '462', 'OUTTEMP_SDR ', '실외 온도 센서값(Outdoor Temperature)', '실외 온도 센서 값 ( -128~127, 유효범위 -30℃ ~ +50℃ )', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'OUTTEMP_SDR = 실외 온도 센서값(Outdoor Temperature). 실외 온도 센서 값 ( -128~127, 유효범위 -30℃ ~ +50℃ )', '우진200량-3단계'), ('80c460f1-89b7-4072-a8b1-92ad76a964de', '111', 'ADSBS ', '모든 출입문 바이패스(ALL DOORS BYPASS)', '그 외의 경우 : 0, 스위치 ON시 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'ADSBS = 모든 출입문 바이패스(ALL DOORS BYPASS). 그 외의 경우 : 0, 스위치 ON시 : 1', '우진200량-3단계'), ('80f937d8-7f52-4e0f-bec8-66876ea690b4', '604', 'TDC ', 'ECU 추적데이터(고장기록) 삭제완료(Trace data Delete Complete)', '1 : 추적데이터 삭제요구', 'Woojin', 'BECU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'TDC = ECU 추적데이터(고장기록) 삭제완료(Trace data Delete Complete). 1 : 추적데이터 삭제요구', '우진200량-3단계'), ('8113f036-9786-486e-9a52-1e147a0851f9', '198', 'SCBCOCK ', '보안제동 차단 코크 스위치 미동작(NO SECURITY BRAKE CUT-OUT COCK #1)', 'SBR cock cutout 시 : 0, 그 외의 경우 : 1', 'Woojin', 'M2', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'SCBCOCK = 보안제동 차단 코크 스위치 미동작(NO SECURITY BRAKE CUT-OUT COCK #1). SBR cock cutout 시 : 0, 그 외의 경우 : 1', '우진200량-3단계'), ('8131dbd2-4bba-42e1-9a5d-19c0281f115c', '1167', 'AP4-2S ', '2호차 공기정화기4 동작상태(Air Purifier4 Car2 State)', '0 : OFF, 1 : 약, 2 : 중, 3 : 강', 'Woojin', 'AIRP', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'AP4-2S = 2호차 공기정화기4 동작상태(Air Purifier4 Car2 State). 0 : OFF, 1 : 약, 2 : 중, 3 : 강', '우진200량-3단계'), ('814f6d67-773f-4a81-810d-10e6d7a08e60', '297', 'NXT_CODE_SDR ', '다음역 번호(Next Station)', '0 ~ 255', 'Woojin', 'ATC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'NXT_CODE_SDR = 다음역 번호(Next Station). 0 ~ 255', '우진200량-3단계'), ('81a69e0f-fea5-4d8e-859a-2e82d3d47484', '813', 'BM_STAT ', '2중계 DCU의 'B'모듈 상태정보(‘B’ module status)', '0 : inactive (전원 off 또는 중고장 상태), 1 : passive (두 모듈 모두 중고장 상태로 통신만 가능), 2 : wait (정상 대기 상태), 3 : active (정상 제어 상태)', 'Woojin', 'DCU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'BM_STAT = 2중계 DCU의 'B'모듈 상태정보(‘B’ module status). 0 : inactive (전원 off 또는 중고장 상태), 1 : passive (두 모듈 모두 중고장 상태로 통신만 가능), 2 : wait (정상 대기 상태), 3 : active (정상 제어 상태)', '우진200량-3단계'), ('81c52cb0-77fd-456a-b142-c61c9f638a25', '71', 'NRBD ', '제동불완해 감지 인통선 신호(NON-RELEASE BRAKE DETECTED(NRBD))', '그 외의 경우 : 0, NRBD 검지 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'NRBD = 제동불완해 감지 인통선 신호(NON-RELEASE BRAKE DETECTED(NRBD)). 그 외의 경우 : 0, NRBD 검지 : 1', '우진200량-3단계'), ('820abbb5-96df-40f9-ac2c-2d8ffee92497', '636', 'BBLOCK ', '회생 차단(Braking Block)', '0 : Normal 상태 1 : 회생제동 차단 중, 보호검지 또는 Cut-out에 의해 회생동작을 하지 않을 때', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'BBLOCK = 회생 차단(Braking Block). 0 : Normal 상태 1 : 회생제동 차단 중, 보호검지 또는 Cut-out에 의해 회생동작을 하지 않을 때', '우진200량-3단계'), ('8251c569-6971-4a2c-a566-ab4d317d0579', '1169', 'AP2-2S ', '2호차 공기정화기2 동작상태(Air Purifier2 Car2 State)', '0 : OFF, 1 : 약, 2 : 중, 3 : 강', 'Woojin', 'AIRP', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'AP2-2S = 2호차 공기정화기2 동작상태(Air Purifier2 Car2 State). 0 : OFF, 1 : 약, 2 : 중, 3 : 강', '우진200량-3단계'), ('82b52a8e-c6c9-4c51-9db5-45a4e34ab66d', '335', 'NEXT_DR ', '다음역사 출입문 열림 방향 정보(Next Stn. Door Direction)', '닫힘 : 0, 왼쪽출입문 열림 : 1, 오른쪽 출입문 열림 :2', 'Woojin', 'ATC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'NEXT_DR = 다음역사 출입문 열림 방향 정보(Next Stn. Door Direction). 닫힘 : 0, 왼쪽출입문 열림 : 1, 오른쪽 출입문 열림 :2', '우진200량-3단계'), ('83c3eaa7-dfcb-451a-a506-4ccff09348b4', '522', 'OUTSENS1F ', '실외 SENSOR 고장 신호(Outdoor Sensor1 Fault)', '1 : 실외센서 이상 발생, 0 : 정상', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'OUTSENS1F = 실외 SENSOR 고장 신호(Outdoor Sensor1 Fault). 1 : 실외센서 이상 발생, 0 : 정상', '우진200량-3단계'), ('84215f1c-8659-4a22-9315-6890cb990d32', '59', 'MJFR ', 'SIV 중고장 릴레이(SIV FOR RELAY CLOSED(SIV MAJOR FAULT))', '그 외의 경우 : 0, 중고장시 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'MJFR = SIV 중고장 릴레이(SIV FOR RELAY CLOSED(SIV MAJOR FAULT)). 그 외의 경우 : 0, 중고장시 : 1', '우진200량-3단계'), ('842f55fe-b810-43ef-a08a-aeba4c27f919', '791', 'FC2V ', 'FC2 전압 정보(Filter Capacitor2 Voltage)', '0~1500V', 'Woojin', 'SIV', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'FC2V = FC2 전압 정보(Filter Capacitor2 Voltage). 0~1500V', '우진200량-3단계'), ('844f5d48-9cea-4b26-bbb0-6ba61c30c219', '419', 'AMP1-6F ', 'M1 (CAR 6) AMP 1 고장 정보(AMPLIFIER 1-6 FAULT)', '0 : 정상, 1 : 고장', 'Woojin', 'AVC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'AMP1-6F = M1 (CAR 6) AMP 1 고장 정보(AMPLIFIER 1-6 FAULT). 0 : 정상, 1 : 고장', '우진200량-3단계'), ('847cae57-e658-42a5-bad5-bdeb8b8efc79', '81', 'PANUPB2 ', '판토 상승 데스크 스위치 동작 상태-2(PANTOGRAPH UP(GREEN))', '그 외의 경우 : 0, 스위치 ON시 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'PANUPB2 = 판토 상승 데스크 스위치 동작 상태-2(PANTOGRAPH UP(GREEN)). 그 외의 경우 : 0, 스위치 ON시 : 1', '우진200량-3단계'), ('8494e5d1-74c9-4415-9031-e396b6b462f1', '742', 'TDBD ', 'TD고장검지(Trace Data Breakdown Detect)', '0 : 정상, 1 : 고장검지', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'TDBD = TD고장검지(Trace Data Breakdown Detect). 0 : 정상, 1 : 고장검지', '우진200량-3단계'), ('84edcd7e-71d2-401c-9cdb-5a68920a52fb', '101', 'BCN ', 'DC 100V 제동회로 NFB 트립(BRAKE CIRCUIT BREAKER CLOSED)', '트립시 : 0, 정상시 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'BCN = DC 100V 제동회로 NFB 트립(BRAKE CIRCUIT BREAKER CLOSED). 트립시 : 0, 정상시 : 1', '우진200량-3단계'), ('84fbb52a-f93d-4498-8ef9-15475dfc0746', '723', 'ERRDIO ', 'DI 이상(TCU_PWM)(Digitor Input Output Error)', '0 : 정상, 1 : 고장검지', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'ERRDIO = DI 이상(TCU_PWM)(Digitor Input Output Error). 0 : 정상, 1 : 고장검지', '우진200량-3단계'), ('8502f8b3-2291-42b0-955a-9a2c87436f1f', '588', 'PWM ', '제동 지령(Pulse Width Modulation)', '0~102%', 'Woojin', 'BECU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'PWM = 제동 지령(Pulse Width Modulation). 0~102%', '우진200량-3단계'), ('850be32e-5d02-43f1-bb66-97aa0da5b244', '807', 'DTF ', '감지기 상태 정보 (TEXT3)와 연계하여 사용 중인 감지기 중 하나라도 고장이 발생한 경우를 나타낸다.(Detector Fault)', '0 : 정상, 1 : 감지기 고장 발생', 'Woojin', 'FDU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'DTF = 감지기 상태 정보 (TEXT3)와 연계하여 사용 중인 감지기 중 하나라도 고장이 발생한 경우를 나타낸다.(Detector Fault). 0 : 정상, 1 : 감지기 고장 발생', '우진200량-3단계'), ('853cc714-5f19-422b-9474-6c1ae032d90c', '295', 'PDT_REQ_SDR ', 'PDT시험 명령 비트(1 : PDT시험 요청, 2 : PDT시험 취소)(PDT Request)', 'PDT Request : 1, PDT Cancel : 2, Other : None', 'Woojin', 'ATC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'PDT_REQ_SDR = PDT시험 명령 비트(1 : PDT시험 요청, 2 : PDT시험 취소)(PDT Request). PDT Request : 1, PDT Cancel : 2, Other : None', '우진200량-3단계'), ('855e7942-0ba3-4906-954b-1a634566b8a2', '613', 'BCV ', '전기제동유효(Brake Circuit Vaild)', '0 : BCV 미검지, 1 : BCV 검지', 'Woojin', 'BECU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'BCV = 전기제동유효(Brake Circuit Vaild). 0 : BCV 미검지, 1 : BCV 검지', '우진200량-3단계'), ('856b591a-8b61-4061-8b97-bf3c76389c73', '898', 'WATCHDOG ', '워치독(Watchdog Counter)', '0~255', 'Woojin', 'BMS', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'WATCHDOG = 워치독(Watchdog Counter). 0~255', '우진200량-3단계'), ('8599cd5d-4129-45ad-9acb-cad3e2bbafa6', '68', 'CPRS ', '강제완해 스위치 동작(COMPULSORY RELEASE)', '그 외의 경우 : 0, 스위치 ON시 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'CPRS = 강제완해 스위치 동작(COMPULSORY RELEASE). 그 외의 경우 : 0, 스위치 ON시 : 1', '우진200량-3단계'), ('85bf8e00-73ce-42e0-bbc6-22fc277e10d6', '127', 'LIU2AFB ', 'TC LIU2 활성화 피드백(TC LIU2 Active Feed Back)', '그 외의 경우 : 0, 2중계 활성화 신호 ON시 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'LIU2AFB = TC LIU2 활성화 피드백(TC LIU2 Active Feed Back). 그 외의 경우 : 0, 2중계 활성화 신호 ON시 : 1', '우진200량-3단계'), ('85c7aefb-3271-4f41-a6d3-02497cc13b6f', '1029', 'SCAM3-6R ', '6호차 1번 CCTV 카메라 녹화중(SALOON CAMERA 1-6 RECORD)', '0 : 이외의 조건, 1 : 이벤트 녹화 중', 'Woojin', 'NVR', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'SCAM3-6R = 6호차 1번 CCTV 카메라 녹화중(SALOON CAMERA 1-6 RECORD). 0 : 이외의 조건, 1 : 이벤트 녹화 중', '우진200량-3단계'), ('8636e8ed-2f32-4486-b081-c6ebc798a55c', '1017', 'SCAM3-2R ', '2호차 1번 CCTV 카메라 녹화중(SALOON CAMERA 1-2 RECORD)', '0 : 이외의 조건, 1 : 이벤트 녹화 중', 'Woojin', 'NVR', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'SCAM3-2R = 2호차 1번 CCTV 카메라 녹화중(SALOON CAMERA 1-2 RECORD). 0 : 이외의 조건, 1 : 이벤트 녹화 중', '우진200량-3단계'), ('868f72fe-b946-457c-847b-310cfcac1aa3', '464', 'FHEAT_SDR ', '운전자가 강제로 급속난방을 하려고 할 경우(Forced Heating)', '0 : 정지, 1 : 동작', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'FHEAT_SDR = 운전자가 강제로 급속난방을 하려고 할 경우(Forced Heating). 0 : 정지, 1 : 동작', '우진200량-3단계'), ('869c5398-7b9d-4642-a45a-1975d77e27d0', '1023', 'SCAM3-4R ', '4호차 1번 CCTV 카메라 녹화중(SALOON CAMERA 1-4 RECORD)', '0 : 이외의 조건, 1 : 이벤트 녹화 중', 'Woojin', 'NVR', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'SCAM3-4R = 4호차 1번 CCTV 카메라 녹화중(SALOON CAMERA 1-4 RECORD). 0 : 이외의 조건, 1 : 이벤트 녹화 중', '우진200량-3단계'), ('86f83c96-4b94-4baf-a83a-43cbb9501122', '358', 'HCRTCRF ', 'HCR / TCR 입력 조건 오류(Invalid combination of HCR & TCR)', '입력 조건 정상 : 0, 입력 조건 에러 : 1', 'Woojin', 'ATC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'HCRTCRF = HCR / TCR 입력 조건 오류(Invalid combination of HCR & TCR). 입력 조건 정상 : 0, 입력 조건 에러 : 1', '우진200량-3단계'), ('86f87bd2-68ca-4fdf-bf87-d800981aeb18', '866', 'CPOV ', '입력 DC 과전압(Control Power Over Voltage)', '1 : 고장, 0 : 정상', 'Woojin', 'CMSB', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'CPOV = 입력 DC 과전압(Control Power Over Voltage). 1 : 고장, 0 : 정상', '우진200량-3단계'), ('8725f660-2733-4817-a36f-b0b5f7c73920', '681', 'Iq_REF ', '토크 전류 지령치(절대값)(Q Axis Current Reference)', '0∼2,000A (2,000A/100h)', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'Iq_REF = 토크 전류 지령치(절대값)(Q Axis Current Reference). 0∼2,000A (2,000A/100h)', '우진200량-3단계'), ('87268f67-5e37-4eee-ac1f-689edd91bbe6', '285', 'SOTS2 ', '열차분리검지 2(SEPARATION OF TRAIN SET2)', '그 외의 경우 : 1, 고장시 : 0', 'Woojin', 'T2', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'SOTS2 = 열차분리검지 2(SEPARATION OF TRAIN SET2). 그 외의 경우 : 1, 고장시 : 0', '우진200량-3단계'), ('873c1b88-bdd9-4fcc-b282-78a224c27d93', '685', 'APB ', '역행/회생 실제 토크 값(Actual Powering / Braking Torque Reference)', '역행 : 1∼100kN(01∼64H), 회생 : -1∼-100kN', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'APB = 역행/회생 실제 토크 값(Actual Powering / Braking Torque Reference). 역행 : 1∼100kN(01∼64H), 회생 : -1∼-100kN', '우진200량-3단계'), ('8749a208-b4d9-4bd8-a8b2-933f697a8dcd', '78', 'EOMODE ', 'PWM 비상운전(EO MODE)', '그 외의 경우 : 0, 스위치 조작시 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'EOMODE = PWM 비상운전(EO MODE). 그 외의 경우 : 0, 스위치 조작시 : 1', '우진200량-3단계'), ('874dc9fb-a8c0-4a60-864d-2517e92a33b8', '1155', 'DDS4-8F ', '8호차 미세먼지센서4 고장상태(Dust Detector Sensor AP4 Car8 Fault)', '1 : 고장, 0 : 정상', 'Woojin', 'AIRP', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'DDS4-8F = 8호차 미세먼지센서4 고장상태(Dust Detector Sensor AP4 Car8 Fault). 1 : 고장, 0 : 정상', '우진200량-3단계'), ('885ce75d-9056-4652-a7c9-886daa07796f', '503', 'U1CM2OL ', 'UNIT1 압축기2 과부하 신호(UNIT2 Compressor1 Over Load)', '1 : 과부하, 0 : 정상', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'U1CM2OL = UNIT1 압축기2 과부하 신호(UNIT2 Compressor1 Over Load). 1 : 과부하, 0 : 정상', '우진200량-3단계'), ('885eaf5d-f727-4120-8fca-979475752037', '812', 'AM_STAT ', '2중계 DCU의 'A'모듈 상태정보(‘A’ module status)', '0 : inactive (전원 off 또는 중고장 상태) , 1 : passive (두 모듈 모두 중고장 상태로 통신만 가능), 2 : wait (정상 대기 상태), 3 : active (정상 제어 상태)', 'Woojin', 'DCU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'AM_STAT = 2중계 DCU의 'A'모듈 상태정보(‘A’ module status). 0 : inactive (전원 off 또는 중고장 상태) , 1 : passive (두 모듈 모두 중고장 상태로 통신만 가능), 2 : wait (정상 대기 상태), 3 : active (정상 제어 상태)', '우진200량-3단계'), ('88851ee0-a07b-406c-8e39-2800064b0ae0', '476', 'AUTO ', '자동 운전모드(AUTO Mode)', '1 : 자동모드, 0 : 자동모드 아님', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'AUTO = 자동 운전모드(AUTO Mode). 1 : 자동모드, 0 : 자동모드 아님', '우진200량-3단계'), ('88bbb1be-0ea9-4e63-9941-fb333ab01513', '354', 'DOF ', '출입문 자동 열림 명령(최대 3회까지) 시 출입문이 안 열린 경우(Door Open Error)', '출입문 자동 정상 : 0, 출입문 자동 에러 : 1', 'Woojin', 'ATC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'DOF = 출입문 자동 열림 명령(최대 3회까지) 시 출입문이 안 열린 경우(Door Open Error). 출입문 자동 정상 : 0, 출입문 자동 에러 : 1', '우진200량-3단계'), ('88d93629-e1d1-432b-953e-6efe47ca2548', '737', 'LB1NO ', 'LB1 고착(LB1 No Open)', '0 : 정상, 1 : 고장검지', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'LB1NO = LB1 고착(LB1 No Open). 0 : 정상, 1 : 고장검지', '우진200량-3단계'), ('8936e555-a4dc-4900-b7b9-8b0891cee649', '273', 'DOORN ', '출입문 회로 의 회로 차단기 상태(DOOR CIRCUIT BREAKER CLOSED)', '트립시 : 0, 정상시 : 1', 'Woojin', 'T2', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'DOORN = 출입문 회로 의 회로 차단기 상태(DOOR CIRCUIT BREAKER CLOSED). 트립시 : 0, 정상시 : 1', '우진200량-3단계'), ('898bc3de-c8f5-41a3-b8a9-02b421866e06', '656', 'EDB ', '비상구원 모드 Braking(EOMODE Braking)', '0 : Normal 상태 1 : 비상구원 제동모드 시', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'EDB = 비상구원 모드 Braking(EOMODE Braking). 0 : Normal 상태 1 : 비상구원 제동모드 시', '우진200량-3단계'), ('899d22b3-f702-4bf9-bf8f-104aa20a4482', '265', 'BRCOCK2 ', '제동 차단 코크3 스위치 미동작(BOGIE #2)(NO BRAKE CUT-OUT COCK BOGIE #2)', 'BC cock cutout 시 : 0, 그 외의 경우 : 1', 'Woojin', 'T2', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'BRCOCK2 = 제동 차단 코크3 스위치 미동작(BOGIE #2)(NO BRAKE CUT-OUT COCK BOGIE #2). BC cock cutout 시 : 0, 그 외의 경우 : 1', '우진200량-3단계'), ('89cdcc85-9a8a-437e-b718-587b58ade900', '637', 'SLR ', 'SLIP/SLIDE 검지(Slip/Slide Detect)', '0 : Normal 상태 1 : 공전/활주 검지', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'SLR = SLIP/SLIDE 검지(Slip/Slide Detect). 0 : Normal 상태 1 : 공전/활주 검지', '우진200량-3단계'), ('89d2edc2-3d24-4c65-a03a-90ead45094e1', '854', 'RF1_MEMF ', '1계 메모리 고장(RF1 Memory Fault)', '1 : 고장, 0 : 정상, Default : 0', 'Woojin', 'PSD', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'RF1_MEMF = 1계 메모리 고장(RF1 Memory Fault). 1 : 고장, 0 : 정상, Default : 0', '우진200량-3단계'), ('89d63eac-d7c0-46a2-9820-0c995c7a6b62', '672', 'MCHK2ON ', 'MCHK2 Close 상태(MCHK2 Close)', '0 : 각 접촉기 Off 상태 1 : 각 접촉기 On 상태', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'MCHK2ON = MCHK2 Close 상태(MCHK2 Close). 0 : 각 접촉기 Off 상태 1 : 각 접촉기 On 상태', '우진200량-3단계'), ('89e6b959-15e0-4593-a6bd-a58914944191', '554', 'CO2PPM ', 'CO2 센서 1,2의 평균 값(CO2 PPM C02 센서 평균 값)', '0ppm~4000ppm, 유효값 0~40', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'CO2PPM = CO2 센서 1,2의 평균 값(CO2 PPM C02 센서 평균 값). 0ppm~4000ppm, 유효값 0~40', '우진200량-3단계'), ('89f457a8-e744-4476-8831-be3195b30481', '1182', 'AP1-5S ', '5호차 공기정화기1 동작상태(Air Purifier1 Car5 State)', '0 : OFF, 1 : 약, 2 : 중, 3 : 강', 'Woojin', 'AIRP', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'AP1-5S = 5호차 공기정화기1 동작상태(Air Purifier1 Car5 State). 0 : OFF, 1 : 약, 2 : 중, 3 : 강', '우진200량-3단계'), ('8a174ab7-0c35-466d-9d58-b48d4841ba7e', '84', 'MAS_PWR ', '마스콘 역행신호(MASCON POWERING)', '그 외의 경우 : 0, 마스콘 역행신호 ON시 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'MAS_PWR = 마스콘 역행신호(MASCON POWERING). 그 외의 경우 : 0, 마스콘 역행신호 ON시 : 1', '우진200량-3단계'), ('8a29939e-494b-44c9-a390-3303629fe823', '34', 'L_DCLPBD ', '왼쪽 출입문 닫힘버튼 (Door Close Left Push Button Data)', '1초 안에 50ms 단위로 체크, 한번이라도 검지되면 ON으로 1이 올라옴.', 'Woojin', '출입문 50ms', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'L_DCLPBD = 1초 안에 50ms 단위로 체크, 한번이라도 검지되면 ON으로 1이 올라옴.', '우진200량-3단계'), ('8a34557b-2b55-4cd4-a3d3-740b66e9c780', '1004', 'SCAM1-3F ', '3호차 3번 CCTV 카메라 고장상태(SALOON CAMERA 3-3 FAULT)', '0 : 정상 상태 (상시 녹화 중), 1 : 카메라 고장 시', 'Woojin', 'NVR', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'SCAM1-3F = 3호차 3번 CCTV 카메라 고장상태(SALOON CAMERA 3-3 FAULT). 0 : 정상 상태 (상시 녹화 중), 1 : 카메라 고장 시', '우진200량-3단계'), ('8a3d9520-8c4a-44a9-a92a-5666ff1fbe05', '72', 'CMGON ', 'CMG 동작(CMG ON)', '그 외의 경우 : 0, CMG 동작시 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'CMGON = CMG 동작(CMG ON). 그 외의 경우 : 0, CMG 동작시 : 1', '우진200량-3단계'), ('8a4428a0-ed72-4313-b43a-3f1ba683acaa', '470', 'INTEMP_SDR ', '실내 온도 센서값(indoor Temperature 실내 온도 센서 값)', '( +127 ~ 0 ~ -128, 유효범위 : +30 ~ +10 )', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'INTEMP_SDR = 실내 온도 센서값(indoor Temperature 실내 온도 센서 값). ( +127 ~ 0 ~ -128, 유효범위 : +30 ~ +10 )', '우진200량-3단계'), ('8a4face1-f9f5-4861-a0d5-d05c7f7f2f1e', '586', 'SKID3 ', '차축3 차륜 스키드검지(SKID3)', '0 : 이외의 경우, 1 : 차륜 스키드 검지', 'Woojin', 'BECU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'SKID3 = 차축3 차륜 스키드검지(SKID3). 0 : 이외의 경우, 1 : 차륜 스키드 검지', '우진200량-3단계'), ('8ac93032-4c50-4e9b-85f3-a1abb10034d5', '1016', 'SCAM1-7F ', '7호차 3번 CCTV 카메라 고장상태(SALOON CAMERA 3-7 FAULT)', '0 : 정상 상태 (상시 녹화 중), 1 : 카메라 고장 시', 'Woojin', 'NVR', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'SCAM1-7F = 7호차 3번 CCTV 카메라 고장상태(SALOON CAMERA 3-7 FAULT). 0 : 정상 상태 (상시 녹화 중), 1 : 카메라 고장 시', '우진200량-3단계'), ('8b437e72-0033-4a77-8bb5-2e48c6c6ee07', '1075', 'PEI2-6E ', '6호차 2위 비상인터폰 종료상태(PASSENGER EMERGENCY INTERCOM 2-6 END)', '1 : 연결됨, 0 : 연결안됨', 'Woojin', 'TRS', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'PEI2-6E = 6호차 2위 비상인터폰 종료상태(PASSENGER EMERGENCY INTERCOM 2-6 END). 1 : 연결됨, 0 : 연결안됨', '우진200량-3단계'), ('8b73330a-ec24-4859-89f0-6c77d59ca6fd', '108', 'INLSW ', 'AC 실내등 스위치 동작 (INTERIOR AC LIGHTS ON)', '그 외의 경우 : 0, 스위치 ON시 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'INLSW = AC 실내등 스위치 동작 (INTERIOR AC LIGHTS ON). 그 외의 경우 : 0, 스위치 ON시 : 1', '우진200량-3단계'), ('8bc84f63-9382-4113-a64d-58e9090e95c6', '404', 'AMP1-3F ', 'M2 (CAR 3) AMP 1 고장 정보(AMPLIFIER 1-3 FAULT)', '0 : 정상, 1 : 고장', 'Woojin', 'AVC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'AMP1-3F = M2 (CAR 3) AMP 1 고장 정보(AMPLIFIER 1-3 FAULT). 0 : 정상, 1 : 고장', '우진200량-3단계'), ('8bca9fab-e8a8-4002-a95a-656c4d92dd61', '860', 'GPSD2ONG ', '2계 지상 스크린도어 열림 NG(Ground PSD2 Open NG)', '1 : NG, 0 : 정상, Default : 0', 'Woojin', 'PSD', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'GPSD2ONG = 2계 지상 스크린도어 열림 NG(Ground PSD2 Open NG). 1 : NG, 0 : 정상, Default : 0', '우진200량-3단계'), ('8bcd1ec4-fde9-4754-92c6-350e86ab817e', '60', 'ATCEB ', 'ATC에 의한 비상제동 해제(ATC NO EMERGENCY BRAKE)', 'ATC EB상태시 : 0, ATC EB상태아님 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'ATCEB = ATC에 의한 비상제동 해제(ATC NO EMERGENCY BRAKE). ATC EB상태시 : 0, ATC EB상태아님 : 1', '우진200량-3단계'), ('8bd4c087-6497-46e6-8659-63cec12ce962', '956', 'RMD2-6F ', '노선안내표시기2-6 통신 상태(ROUTE MAP DISPLAY 2-6 FAULT)', '0 : 통신정상, 1 : 통신고장', 'Woojin', 'PIC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'RMD2-6F = 노선안내표시기2-6 통신 상태(ROUTE MAP DISPLAY 2-6 FAULT). 0 : 통신정상, 1 : 통신고장', '우진200량-3단계'), ('8c0dfc12-7ade-4777-8e25-a605851994bf', '1202', 'FDUST8 ', '8호차 미세먼지 농도(Fine Dust Car8)', '0 ~ 255 (㎍/㎥)', 'Woojin', 'AIRP', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'FDUST8 = 8호차 미세먼지 농도(Fine Dust Car8). 0 ~ 255 (㎍/㎥)', '우진200량-3단계'), ('8c1c2526-1c2b-46d8-b399-dd317e74be63', '618', 'DMPT_END ', '덤프밸브 시험완료(Dump Valve Test END)', '0 : 이외의 경우, 1 : DV 시험완료', 'Woojin', 'BECU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'DMPT_END = 덤프밸브 시험완료(Dump Valve Test END). 0 : 이외의 경우, 1 : DV 시험완료', '우진200량-3단계'), ('8c53937c-52dd-4c08-8551-8d952b302148', '157', 'ASCOCK2 ', 'AS 압력 코크 스위치2 미동작(NO AIR SPRING CUT-OUT COCK #2)', 'AS cock cutout 시 : 0, 그 외의 경우 : 1', 'Woojin', 'M1', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'ASCOCK2 = AS 압력 코크 스위치2 미동작(NO AIR SPRING CUT-OUT COCK #2). AS cock cutout 시 : 0, 그 외의 경우 : 1', '우진200량-3단계'), ('8c651bdf-965b-4cfc-8a5b-152d690be12e', '886', 'TEST ', '시험 여부 상태(Test Execution status)', '0 : 초기상태모드, 1 : 실행 중 모드, 2 : 시험완료모드', 'Woojin', 'BMS', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'TEST = 시험 여부 상태(Test Execution status). 0 : 초기상태모드, 1 : 실행 중 모드, 2 : 시험완료모드', '우진200량-3단계'), ('8cf42d71-2353-4b8e-bbe8-3db24268d317', '562', 'STF ', '자가진단 고장(Self Test Fault)', '0 : 정상, 1 : 고장검지', 'Woojin', 'BECU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'STF = 자가진단 고장(Self Test Fault). 0 : 정상, 1 : 고장검지', '우진200량-3단계'), ('8cf6a0a3-165d-4895-9096-3d6a2e38e8c3', '929', 'RMD5-2F ', '노선안내표시기5-2 통신 상태(ROUTE MAP DISPLAY 5-2 FAULT)', '0 : 통신정상, 1 : 통신고장', 'Woojin', 'PIC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'RMD5-2F = 노선안내표시기5-2 통신 상태(ROUTE MAP DISPLAY 5-2 FAULT). 0 : 통신정상, 1 : 통신고장', '우진200량-3단계'), ('8d292210-602e-4282-a120-6a507ba9309f', '63', 'ASCOCK2 ', 'AS 압력 코크 스위치2 미동작(NO AIR SPRING CUT-OUT COCK #2)', 'AS cock cutout 시 : 0, 그 외의 경우 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'ASCOCK2 = AS 압력 코크 스위치2 미동작(NO AIR SPRING CUT-OUT COCK #2). AS cock cutout 시 : 0, 그 외의 경우 : 1', '우진200량-3단계'), ('8d590644-5bd3-4d09-87b5-a433af08860a', '765', 'ACOC ', 'AC 출력 과전류 검지(AC Output Over Current)', '0 : 이외의 조건, 1 : 입력 과전류 검지 시', 'Woojin', 'SIV', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'ACOC = AC 출력 과전류 검지(AC Output Over Current). 0 : 이외의 조건, 1 : 입력 과전류 검지 시', '우진200량-3단계'), ('8df36797-2155-4f91-88fe-7d53071d7f32', '383', 'NO_MP3 ', '문구 없음 정보(NO MP3)', '0 : 문구 있음, 1 : 문구 없음', 'Woojin', 'AVC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'NO_MP3 = 문구 없음 정보(NO MP3). 0 : 문구 있음, 1 : 문구 없음 ', '우진200량-3단계'), ('8e958246-00f4-49ad-95f1-c98b36cfe7e8', '870', 'HSINKOT ', '방열판 과온(Heatsink Over Temperature)', '1 : 고장, 0 : 정상', 'Woojin', 'CMSB', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'HSINKOT = 방열판 과온(Heatsink Over Temperature). 1 : 고장, 0 : 정상', '우진200량-3단계'), ('8eca3eff-a70c-4d42-807f-0005474f08d6', '454', 'CR_PAON ', '관재승객방송 동작 정보(CONTROL ROOM PA(PUBLIC ADDRESS) ON)', '0 : 관재승객방송 미 동작, 1 : 관재승객방송 동작', 'Woojin', 'AVC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'CR_PAON = 관재승객방송 동작 정보(CONTROL ROOM PA(PUBLIC ADDRESS) ON). 0 : 관재승객방송 미 동작, 1 : 관재승객방송 동작', '우진200량-3단계'), ('8ef412eb-3fbd-4719-b56f-c3977e68ff42', '142', 'LFF1KCC ', '라인플로우 팬 접촉기 1 개방(LINE FLOW FANS CONTACTOR 1)', '그 외의 경우 : 0, 접촉기 ON시 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'LFF1KCC = 라인플로우 팬 접촉기 1 개방(LINE FLOW FANS CONTACTOR 1). 그 외의 경우 : 0, 접촉기 ON시 : 1', '우진200량-3단계'), ('8f3a356b-7eb3-466e-b0db-fdd720eeeac6', '214', 'DC100N ', 'DC100V 회로차단기 상태(DC 100V CIRCUIT BREAKER CLOSED)', '트립시 : 0, 정상시 : 1', 'Woojin', 'M2', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'DC100N = DC100V 회로차단기 상태(DC 100V CIRCUIT BREAKER CLOSED). 트립시 : 0, 정상시 : 1', '우진200량-3단계'), ('8f444d31-4343-49a1-97ba-7326f74a9bbc', '667', 'MCOK34CC ', 'MCOK3,4 Close 지령(MCOK3,4 Close Command)', '0 : 각 접촉기의 Close 지령 Off 중 1 : 각 접촉기의 Close 지령 출력 중', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'MCOK34CC = MCOK3,4 Close 지령(MCOK3,4 Close Command). 0 : 각 접촉기의 Close 지령 Off 중 1 : 각 접촉기의 Close 지령 출력 중', '우진200량-3단계'), ('8f44a54a-baa1-4ed9-aef5-03a13eadc0ab', '895', 'SOC ', '배터리 용량(State Of Charge)', '0~100%', 'Woojin', 'BMS', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'SOC = 배터리 용량(State Of Charge). 0~100%', '우진200량-3단계'), ('8fe053e2-a1cc-41f5-aaa8-6491fe9b495f', '772', 'GDFWZ1 ', '인버터1 Gate Driver W상 고장 검지(Gate Driver Fault W1)', '0 : 이외의 조건, 1 : 인버터2 Gate Driver W상 고장 검지 시', 'Woojin', 'SIV', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'GDFWZ1 = 인버터1 Gate Driver W상 고장 검지(Gate Driver Fault W1). 0 : 이외의 조건, 1 : 인버터2 Gate Driver W상 고장 검지 시', '우진200량-3단계'), ('8ffebe2a-bf2b-455a-bc47-58a47d1190df', '238', 'ECUF ', 'BOU ECU 전원 고장 신호(ECU POWER SUPPLY FAULT)', '그 외의 경우 : 1, ECU Power fault 검지 : 0', 'Woojin', 'T1', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'ECUF = BOU ECU 전원 고장 신호(ECU POWER SUPPLY FAULT). 그 외의 경우 : 1, ECU Power fault 검지 : 0', '우진200량-3단계'), ('902dc64d-8001-49d2-ba2f-fd3228130af8', '420', 'AMP2-6F ', 'M1 (CAR 6) AMP 2 고장 정보(AMPLIFIER 2-6 FAULT)', '0 : 정상, 1 : 고장', 'Woojin', 'AVC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'AMP2-6F = M1 (CAR 6) AMP 2 고장 정보(AMPLIFIER 2-6 FAULT). 0 : 정상, 1 : 고장', '우진200량-3단계'), ('9057dd22-0e5b-43f1-a6f2-97ead59e1cbe', '961', 'RMD3-7F ', '노선안내표시기3-7 통신 상태(ROUTE MAP DISPLAY 3-7 FAULT)', '0 : 통신정상, 1 : 통신고장', 'Woojin', 'PIC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'RMD3-7F = 노선안내표시기3-7 통신 상태(ROUTE MAP DISPLAY 3-7 FAULT). 0 : 통신정상, 1 : 통신고장', '우진200량-3단계'), ('9089e87c-ffa6-4e6b-bd60-3f32b9c5ccf5', '287', 'ILCR3 ', 'DC 실내등 컨텍터 ON 명령(INTERIOR DC LIGHTS CONTACTOR)', '접촉기 ON시 : 0, 접촉기 OFF시 : 1', 'Woojin', 'T2', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'ILCR3 = DC 실내등 컨텍터 ON 명령(INTERIOR DC LIGHTS CONTACTOR). 접촉기 ON시 : 0, 접촉기 OFF시 : 1', '우진200량-3단계'), ('90b2ed68-e15b-429a-9618-7e43d6257837', '463', 'EFAN_SDR ', '운전자가 강제로 실내환기를 하려고 할 경우(Emergency Fan)', '0 : 정지, 1 : 동작', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'EFAN_SDR = 운전자가 강제로 실내환기를 하려고 할 경우(Emergency Fan). 0 : 정지, 1 : 동작', '우진200량-3단계'), ('90b7ca23-d3cf-4b3d-a8ee-10430916f1a7', '337', 'DCW_VAL ', '출입문 닫힘 경고 신호 유효(DCW Valid)', 'No DCW Valid: 0, DCW Valid : 1', 'Woojin', 'ATC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'DCW_VAL = 출입문 닫힘 경고 신호 유효(DCW Valid). No DCW Valid: 0, DCW Valid : 1', '우진200량-3단계'), ('910241db-e439-489b-b08c-bc03156c46b7', '690', 'VFC ', 'FC전압 값(FC Voltage)', null, 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'VFC = FC전압 값(FC Voltage).', '우진200량-3단계'), ('911d749d-baff-4c92-b6ac-c2cbb7288954', '539', 'CRRHT2F ', '전자접촉기 차량 히터 2 고장(Car Room Room Heater 2 Fault)', '1 : 고장 , 0 : 정상', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'CRRHT2F = 전자접촉기 차량 히터 2 고장(Car Room Room Heater 2 Fault). 1 : 고장 , 0 : 정상 ', '우진200량-3단계'), ('912f38f5-baf2-4ce1-92e0-05d13713e851', '448', 'PEI2-4 ', '비상인터폰 호출 위치 CAR 4 2위(PASSENGER EMERGENCY INTERCOM 2-4 CALL)', '0 : 미호출, 1 : 호출', 'Woojin', 'AVC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'PEI2-4 = 비상인터폰 호출 위치 CAR 4 2위(PASSENGER EMERGENCY INTERCOM 2-4 CALL). 0 : 미호출, 1 : 호출', '우진200량-3단계'), ('9141040d-3c19-4419-b5a5-448253cc188f', '443', 'PEI1-1 ', '비상인터폰 호출 위치 CAR 1 1위(PASSENGER EMERGENCY INTERCOM 1-1 CALL)', '0 : 미호출, 1 : 호출', 'Woojin', 'AVC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'PEI1-1 = 비상인터폰 호출 위치 CAR 1 1위(PASSENGER EMERGENCY INTERCOM 1-1 CALL). 0 : 미호출, 1 : 호출', '우진200량-3단계'), ('915a17c1-25bb-44c8-a15f-094a491e01b2', '851', 'RF1TX ', '1계 스크린도어 명령 송신상태(RF1 Transmitter State)', '0 : 닫힘, 1 : 제어명령 송신됨, 2 : 지상장치로부터 응답 대기 중, 3 : 종료됨, 0 : Default', 'Woojin', 'PSD', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'RF1TX = 1계 스크린도어 명령 송신상태(RF1 Transmitter State). 0 : 닫힘, 1 : 제어명령 송신됨, 2 : 지상장치로부터 응답 대기 중, 3 : 종료됨, 0 : Default', '우진200량-3단계'), ('916a0a00-0a35-409a-8900-c5ef45131c48', '536', 'CRCM3F ', '전자접촉기 압축기 3 고장(Car Room Compressor Motor 3 Fault)', '1 : 고장, 0 : 정상', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'CRCM3F = 전자접촉기 압축기 3 고장(Car Room Compressor Motor 3 Fault). 1 : 고장, 0 : 정상 ', '우진200량-3단계'), ('91ac37fa-cef2-4455-a229-15fb458977d0', '626', 'INVOK ', '인버터 정상(INVERTER OK)', '0 : 보호검지 1 : 정상', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'INVOK = 인버터 정상(INVERTER OK). 0 : 보호검지 1 : 정상', '우진200량-3단계'), ('91b7d696-d52b-40b0-8fb8-8c17a674e6c0', '492', 'SC_NG ', '시험 항목 결과NG모드(Self Check Result NG)', '1 : 검사결과 NG모드, 0 : 검사결과 NG모드 아님', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'SC_NG = 시험 항목 결과NG모드(Self Check Result NG). 1 : 검사결과 NG모드, 0 : 검사결과 NG모드 아님', '우진200량-3단계'), ('92221e78-0fb7-4759-b8ab-6914f0cf0c85', '298', 'DST_CODE_SDR ', '종착역 번호(Destination Station)', '0 ~ 255', 'Woojin', 'ATC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'DST_CODE_SDR = 종착역 번호(Destination Station). 0 ~ 255', '우진200량-3단계'), ('926dcba4-157e-4ebc-abae-af3d65d9d37a', '344', 'MAN_EB ', '마스콘 비상위치 상태(Manual EB)', 'No Mascon EB : 0, Mascon EB : 1', 'Woojin', 'ATC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'MAN_EB = 마스콘 비상위치 상태(Manual EB). No Mascon EB : 0, Mascon EB : 1', '우진200량-3단계'), ('92860d08-563f-4d97-8ab1-758d4312dd2d', '980', 'UPDATE ', 'NVR 펌웨어 업데이트 중(UPDATE)', '0 : 이외의 조건, 1 : 업데이트 중', 'Woojin', 'NVR', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'UPDATE = NVR 펌웨어 업데이트 중(UPDATE). 0 : 이외의 조건, 1 : 업데이트 중', '우진200량-3단계'), ('92990940-ede0-4560-a419-e8029b234a59', '1070', 'PEI1-3E ', '3호차 1위 비상인터폰 종료상태(PASSENGER EMERGENCY INTERCOM 1-3 END)', '1 : 연결됨, 0 : 연결안됨', 'Woojin', 'TRS', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'PEI1-3E = 3호차 1위 비상인터폰 종료상태(PASSENGER EMERGENCY INTERCOM 1-3 END). 1 : 연결됨, 0 : 연결안됨', '우진200량-3단계'), ('92ab36c5-befa-4715-93a2-ee4b93329301', '472', '1P3H ', '1/3난방(350W) 운전모드(1/3 Heating Mode)', '1 : 1/3난방모드, 0 : 1/3난방모드 아님', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', '1P3H = 1/3난방(350W) 운전모드(1/3 Heating Mode). 1 : 1/3난방모드, 0 : 1/3난방모드 아님', '우진200량-3단계'), ('92bc09cf-c9ba-4bc9-b2e2-3f0aa804ca20', '379', 'NXTCODE ', '다음역 번호(NEXT CODE)', '1~255', 'Woojin', 'AVC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'NXTCODE = 다음역 번호(NEXT CODE). 1~255', '우진200량-3단계'), ('92d7779b-c676-46d2-8ab1-48bbedebb731', '643', 'REVERSE ', '후진방향(REVERSE)', '0 : Reverse 신호 수신 시 이외의 경우(TC2 방향 이외의 경우)1 : Reverse 신호 수신 시(TC2 방향)', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'REVERSE = 후진방향(REVERSE). 0 : Reverse 신호 수신 시 이외의 경우(TC2 방향 이외의 경우)1 : Reverse 신호 수신 시(TC2 방향)', '우진200량-3단계'), ('930fc98f-fa67-4c7f-8f5e-403a1b29cd49', '1037', 'SCAM1-8R ', '8호차 3번 CCTV 카메라 녹화중(SALOON CAMERA 3-8 RECORD)', '0 : 이외의 조건, 1 : 이벤트 녹화 중', 'Woojin', 'NVR', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'SCAM1-8R = 8호차 3번 CCTV 카메라 녹화중(SALOON CAMERA 3-8 RECORD). 0 : 이외의 조건, 1 : 이벤트 녹화 중', '우진200량-3단계'), ('9310f4e7-ae99-4621-a524-ffcd4ec54ff7', '689', 'ILINE ', '가선전류 값(Filter Capacitor Voltage)', null, 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'ILINE = 가선전류 값(Filter Capacitor Voltage).', '우진200량-3단계'), ('93920a28-07fb-4d23-aa80-7cd42f31cf36', '307', 'NOT_EB ', '차량 EB 체결상태(Train EB StatusTrain EB)', 'Applied : 1, Train EB Not Applied : 0', 'Woojin', 'ATC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'NOT_EB = 차량 EB 체결상태(Train EB StatusTrain EB). Applied : 1, Train EB Not Applied : 0', '우진200량-3단계'), ('93c24be7-a838-4352-9933-b4f640c3b97c', '774', 'GDFVY2 ', '인버터2 Gate Driver V상 고장 검지(Gate Driver Fault V2)', '0 : 이외의 조건, 1 : 인버터2 Gate Driver V상 고장 검지 시', 'Woojin', 'SIV', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'GDFVY2 = 인버터2 Gate Driver V상 고장 검지(Gate Driver Fault V2). 0 : 이외의 조건, 1 : 인버터2 Gate Driver V상 고장 검지 시', '우진200량-3단계'), ('941f5235-9a51-4c01-8995-7886040dbf86', '567', 'X1DVF ', '전두대차 덤프밸브 고장(X1 Dump Valve Fault)', '0 : 정상, 1 : 고장검지', 'Woojin', 'BECU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'X1DVF = 전두대차 덤프밸브 고장(X1 Dump Valve Fault). 0 : 정상, 1 : 고장검지', '우진200량-3단계'), ('945702c2-aabe-4dd6-9622-54060b29487b', '136', 'FSBC ', '최대상용제동 지령(FULL SERVICE BRAKE COMMAND)', '그 외의 경우 : 0, 최대상용제동 지령시 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'FSBC = 최대상용제동 지령(FULL SERVICE BRAKE COMMAND). 그 외의 경우 : 0, 최대상용제동 지령시 : 1', '우진200량-3단계'), ('94c30cb0-105e-41a6-9cc9-7d5b708a8eb4', '430', 'SOBIN8F ', 'TC2 (CAR 8) SOB IN(매립형) 고장 정보(SIDE OPERATION BOX-IN 8 FAULT)', '0 : 정상, 1 : 고장', 'Woojin', 'AVC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'SOBIN8F = TC2 (CAR 8) SOB IN(매립형) 고장 정보(SIDE OPERATION BOX-IN 8 FAULT). 0 : 정상, 1 : 고장', '우진200량-3단계'), ('952c96bd-bb5d-4193-8d56-5151399701de', '367', 'DSTCODE_SDR ', '종착역 번호(Destination Code)', '1~255', 'Woojin', 'AVC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'DSTCODE_SDR = 종착역 번호(Destination Code). 1~255', '우진200량-3단계'), ('953e7bcd-8f63-44d7-b76c-3936029069ae', '695', 'ISOC ', '입력 과전류 검지(Input Over Current)', '0 : 정상, 1 : 고장검지', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'ISOC = 입력 과전류 검지(Input Over Current). 0 : 정상, 1 : 고장검지', '우진200량-3단계'), ('956352b9-bf18-4291-96e9-b4fb9589a38d', '14', 'ATC_DRCL ', 'ATC장치의 출입문 닫힘신호(DOOR CLOSED ATC)', null, 'Woojin', 'TIB', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'ATC_DRCL = ATC장치의 출입문 닫힘신호(DOOR CLOSED ATC)', '우진200량-3단계'), ('95a462f3-3934-4010-9684-f1499da4dbb4', '948', 'RMD4-5F ', '노선안내표시기4-5 통신 상태(ROUTE MAP DISPLAY 4-5 FAULT)', '0 : 통신정상, 1 : 통신고장', 'Woojin', 'PIC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'RMD4-5F = 노선안내표시기4-5 통신 상태(ROUTE MAP DISPLAY 4-5 FAULT). 0 : 통신정상, 1 : 통신고장', '우진200량-3단계'), ('95af9c3d-fb55-4b6c-85a3-68de38e17e9a', '775', 'GDFWZ2 ', '인버터2 Gate Driver W상 고장 검지(Gate Driver Fault W2)', '0 : 이외의 조건, 1 : 인버터2 Gate Driver W상 고장 검지 시', 'Woojin', 'SIV', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'GDFWZ2 = 인버터2 Gate Driver W상 고장 검지(Gate Driver Fault W2). 0 : 이외의 조건, 1 : 인버터2 Gate Driver W상 고장 검지 시', '우진200량-3단계'), ('95c0787b-2979-4fd7-bfb4-929331bd09ca', '26', 'ATO PWM ', 'ATO PWM(ATO Pulse Width Modulation)', null, 'Woojin', 'TIB', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'ATO PWM = ATO PWM(ATO Pulse Width Modulation)', '우진200량-3단계'), ('95dca584-e5fc-4031-bb73-c67fdd89d0e7', '1117', 'ST+5 ', '운전실 선택(캠) 스위치에 의해 기준온도가 실내기준온도+5도로 설정(Standard Temperature +5℃)', '1 : 동작중, 0 : 중지상태, Default : 0', 'Woojin', 'CHVAC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'ST+5 = 운전실 선택(캠) 스위치에 의해 기준온도가 실내기준온도+5도로 설정(Standard Temperature +5℃). 1 : 동작중, 0 : 중지상태, Default : 0', '우진200량-3단계'), ('95f8e12d-c492-4e93-8b9e-b65407a9a6e1', '888', 'MAS_SW ', '마스콘 스위치 상태(Mascon Switch)', '0 : OFF, 1 : ON', 'Woojin', 'BMS', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'MAS_SW = 마스콘 스위치 상태(Mascon Switch). 0 : OFF, 1 : ON', '우진200량-3단계'), ('96235f40-8b94-4cbd-945a-24baf73aa938', '1107', 'ST+4 ', '운전실 선택(캠) 스위치에 의해 기준온도가 실내기준온도+4도로 설정(Standard Temperature +4℃)', '1 : 동작중, 0 : 중지상태, Default : 0', 'Woojin', 'CHVAC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'ST+4 = 운전실 선택(캠) 스위치에 의해 기준온도가 실내기준온도+4도로 설정(Standard Temperature +4℃). 1 : 동작중, 0 : 중지상태, Default : 0', '우진200량-3단계'), ('96619a8b-61dc-4282-9e3b-a3a607e22c2f', '231', 'SBRCOCK ', '상용제동 차단 코크 스위치 미동작(NO SERVICE BRAKE CUT-OUT COCK)', 'SB cock cutout 시 : 0, 그 외의 경우 : 1', 'Woojin', 'T1', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'SBRCOCK = 상용제동 차단 코크 스위치 미동작(NO SERVICE BRAKE CUT-OUT COCK). SB cock cutout 시 : 0, 그 외의 경우 : 1', '우진200량-3단계'), ('967272d5-1761-4581-8788-d296d2626944', '758', 'SIVK ', 'SIVK 접촉기 투입 정보(SIVK ON)', '0 : 이외의 조건, 1 : SIVK 투입 시', 'Woojin', 'SIV', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'SIVK = SIVK 접촉기 투입 정보(SIVK ON). 0 : 이외의 조건, 1 : SIVK 투입 시', '우진200량-3단계'), ('968b41c4-3f8c-49a2-88e1-43161e5965d7', '1074', 'PEI2-7E ', '7호차 2위 비상인터폰 종료상태(PASSENGER EMERGENCY INTERCOM 2-7 END)', '1 : 연결됨, 0 : 연결안됨', 'Woojin', 'TRS', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'PEI2-7E = 7호차 2위 비상인터폰 종료상태(PASSENGER EMERGENCY INTERCOM 2-7 END). 1 : 연결됨, 0 : 연결안됨', '우진200량-3단계'), ('96bf5c1c-e79a-41e2-b7d5-9ef7add43657', '605', 'ASP ', 'AS압력 값(Air Spring Pressure)', '0~765kpa', 'Woojin', 'BECU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'ASP = AS압력 값(Air Spring Pressure). 0~765kpa', '우진200량-3단계'), ('96d975ea-454a-486e-8510-3a5e65405f00', '601', 'ZVR ', '정지상태 검지(Zero Velocity Relay)', '0 : NO HB, 1 : HB', 'Woojin', 'BECU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'ZVR = 정지상태 검지(Zero Velocity Relay). 0 : NO HB, 1 : HB', '우진200량-3단계'), ('96f3aa27-0590-4463-9b04-6fbe0c2f7901', '1209', 'HUMID7 ', '7호차 객실 습도(room Humidity Car7)', '0 ~ 100 (%)', 'Woojin', 'AIRP', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'HUMID7 = 7호차 객실 습도(room Humidity Car7). 0 ~ 100 (%)', '우진200량-3단계'), ('96f96b24-01db-43b1-8487-b8966fa329ef', '1207', 'HUMID5 ', '5호차 객실 습도(room Humidity Car5)', '0 ~ 100 (%)', 'Woojin', 'AIRP', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'HUMID5 = 5호차 객실 습도(room Humidity Car5). 0 ~ 100 (%)', '우진200량-3단계'), ('97000b59-5043-4a3b-952b-0e18521acfc1', '1090', 'DID8F ', 'TC2 DID장치 고장 상태 정보(DID car8 Fault)', '1 : 고장, 0 : 정상, Default : 0', 'Woojin', 'TRS', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'DID8F = TC2 DID장치 고장 상태 정보(DID car8 Fault). 1 : 고장, 0 : 정상, Default : 0', '우진200량-3단계'), ('971cc0c4-a600-44b1-b734-9dd0e11d8e89', '148', 'DOR ', '오른쪽 도어 열림(DOOR OPEN RIGHT)', '그 외의 경우 : 0, 우측 출입문 열림시 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'DOR = 오른쪽 도어 열림(DOOR OPEN RIGHT). 그 외의 경우 : 0, 우측 출입문 열림시 : 1', '우진200량-3단계'), ('9737c047-826e-46c6-95b6-7ba9a9260beb', '444', 'PEI2-8 ', '비상인터폰 호출 위치 CAR 8 2위(PASSENGER EMERGENCY INTERCOM 2-8 CALL)', '0 : 미호출, 1 : 호출', 'Woojin', 'AVC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'PEI2-8 = 비상인터폰 호출 위치 CAR 8 2위(PASSENGER EMERGENCY INTERCOM 2-8 CALL). 0 : 미호출, 1 : 호출', '우진200량-3단계'), ('97a6dbd9-8112-4bff-8261-0cc971bfea33', '1170', 'AP1-2S ', '2호차 공기정화기1 동작상태(Air Purifier1 Car2 State)', '0 : OFF, 1 : 약, 2 : 중, 3 : 강', 'Woojin', 'AIRP', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'AP1-2S = 2호차 공기정화기1 동작상태(Air Purifier1 Car2 State). 0 : OFF, 1 : 약, 2 : 중, 3 : 강', '우진200량-3단계'), ('97b2879a-a7d5-4811-a017-62306fe19a3e', '13', 'MASEB ', '마스콘 비상제동신호(Mascon Emergency Brake)', null, 'Woojin', 'TIB', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'MASEB = 마스콘 비상제동신호(Mascon Emergency Brake)', '우진200량-3단계'), ('97bd4e3e-05a7-4a19-b22e-1c04a76e7e7f', '159', 'BRCOCK2 ', '제동 차단 코크3 스위치 미동작(BOGIE #2)(NO BRAKE CUT-OUT COCK BOGIE #2)', 'BC cock cutout 시 : 0, 그 외의 경우 : 1', 'Woojin', 'M1', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'BRCOCK2 = 제동 차단 코크3 스위치 미동작(BOGIE #2)(NO BRAKE CUT-OUT COCK BOGIE #2). BC cock cutout 시 : 0, 그 외의 경우 : 1', '우진200량-3단계'), ('98259c60-96d7-467a-bdb0-419810802bbf', '606', 'LW ', '응하중 값(Load Weight)', '0~102%', 'Woojin', 'BECU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'LW = 응하중 값(Load Weight). 0~102%', '우진200량-3단계'), ('9829dd62-e5c2-48bb-884e-11b146528eac', '64', 'ASCOCK1 ', 'AS 압력 코크 스위치1 미동작(NO AIR SPRING CUT-OUT COCK #1)', 'AS cock cutout 시 : 0, 그 외의 경우 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'ASCOCK1 = AS 압력 코크 스위치1 미동작(NO AIR SPRING CUT-OUT COCK #1). AS cock cutout 시 : 0, 그 외의 경우 : 1', '우진200량-3단계'), ('985bd9d1-e548-43d6-b34a-345fd743d6d5', '216', 'AC380_AN ', 'AC 380V NFB 트립(객실에어컨, 라인플로워)(CIRCUIT BREAKERS 380V 60Hz CLOSED (AIR.CON))', '트립시 : 0, 정상시 : 1', 'Woojin', 'M2', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'AC380_AN = AC 380V NFB 트립(객실에어컨, 라인플로워)(CIRCUIT BREAKERS 380V 60Hz CLOSED (AIR.CON)). 트립시 : 0, 정상시 : 1', '우진200량-3단계'), ('98931035-415f-4d36-ab22-8cb07e681a88', '1140', 'DDS3-4F ', '4호차 미세먼지센서3 고장상태(Dust Detector Sensor AP3 Car4 Fault)', '1 : 고장, 0 : 정상', 'Woojin', 'AIRP', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'DDS3-4F = 4호차 미세먼지센서3 고장상태(Dust Detector Sensor AP3 Car4 Fault). 1 : 고장, 0 : 정상', '우진200량-3단계'), ('98aca823-4b3c-4907-b10e-a79b0b64abc9', '75', 'RO_R2 ', '신차 고장 -> 기존차 구원(RESCUE OPERATION NBL BY BL (R2))', '그 외의 경우 : 0, 스위치 조작시 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'RO_R2 = 신차 고장 -> 기존차 구원(RESCUE OPERATION NBL BY BL (R2)). 그 외의 경우 : 0, 스위치 조작시 : 1', '우진200량-3단계'), ('98d63767-b920-4c36-b0c0-8da868650776', '222', 'ILCR1 ', 'AC 실내등 컨텍터 1 ON 상태확인(CONTACTOR 1 INTERIOR LIGHTS CLOSED)', '그 외의 경우 : 0, 접촉기 ON시 : 1', 'Woojin', 'M2', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'ILCR1 = AC 실내등 컨텍터 1 ON 상태확인(CONTACTOR 1 INTERIOR LIGHTS CLOSED). 그 외의 경우 : 0, 접촉기 ON시 : 1', '우진200량-3단계'), ('98e152eb-bf98-4afe-80d3-647981030cdf', '87', 'PANUPB1 ', '판토 상승 데스크 스위치 동작-1(PANTOGRAPH UP(GREEN))', '그 외의 경우 : 0, 스위치 ON시 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'PANUPB1 = 판토 상승 데스크 스위치 동작-1(PANTOGRAPH UP(GREEN)). 그 외의 경우 : 0, 스위치 ON시 : 1', '우진200량-3단계'), ('99089d8b-f1f0-4e37-8c82-aec70c75e249', '253', 'FA1 ', '화재감지기 고장(FIRE DETECTION UNIT FAULT)', '그 외의 경우 : 1, 고장시 : 0', 'Woojin', 'T1', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'FA1 = 화재감지기 고장(FIRE DETECTION UNIT FAULT). 그 외의 경우 : 1, 고장시 : 0', '우진200량-3단계'), ('9a196b83-5f67-4c8c-a245-ef45363d0f83', '262', 'SBRCOCK ', '상용제동 차단 코크 스위치 미동작(NO SERVICE BRAKE CUT-OUT COCK)', 'SB cock cutout 시 : 0, 그 외의 경우 : 1', 'Woojin', 'T2', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'SBRCOCK = 상용제동 차단 코크 스위치 미동작(NO SERVICE BRAKE CUT-OUT COCK). SB cock cutout 시 : 0, 그 외의 경우 : 1', '우진200량-3단계'), ('9a51ef0d-7022-4263-a12e-bd818e5ccbdb', '1139', 'DDS4-4F ', '4호차 미세먼지센서4 고장상태(Dust Detector Sensor AP4 Car4 Fault)', '1 : 고장, 0 : 정상', 'Woojin', 'AIRP', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'DDS4-4F = 4호차 미세먼지센서4 고장상태(Dust Detector Sensor AP4 Car4 Fault). 1 : 고장, 0 : 정상', '우진200량-3단계'), ('9a9efa88-f727-44d6-9511-c4fd78fe7401', '442', 'PEI1-2 ', '비상인터폰 호출 위치 CAR 2 1위(PASSENGER EMERGENCY INTERCOM 1-2 CALL)', '0 : 미호출, 1 : 호출', 'Woojin', 'AVC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'PEI1-2 = 비상인터폰 호출 위치 CAR 2 1위(PASSENGER EMERGENCY INTERCOM 1-2 CALL). 0 : 미호출, 1 : 호출', '우진200량-3단계'), ('9ac6d36b-25d2-46b6-bcf5-9a1b53c4ae6c', '891', 'SHORT ', '배터리 단락(Short)', null, 'Woojin', 'BMS', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'SHORT = 배터리 단락(Short). ', '우진200량-3단계'), ('9b0ef727-7ea7-4cb9-a661-2982db8a32bc', '323', 'RDE ', 'ATCATO의 Right Door Enable 출력 상태(RDE Command)', 'No RDE : 0, RDE : 1', 'Woojin', 'ATC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'RDE = ATCATO의 Right Door Enable 출력 상태(RDE Command). No RDE : 0, RDE : 1', '우진200량-3단계'), ('9b94c9f9-a5a4-4717-8cda-22e27d9bd524', '852', 'RF1DOOR ', '1계 스크린도어 명령(RF1 Door Command)', '0 : 닫힘 1 : 우측열림 2 : 좌측열림 3 : 비상열림 0 : Default', 'Woojin', 'PSD', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'RF1DOOR = 1계 스크린도어 명령(RF1 Door Command). 0 : 닫힘 1 : 우측열림 2 : 좌측열림 3 : 비상열림 0 : Default', '우진200량-3단계'), ('9bf6afe2-17d3-42de-945d-121407377a58', '483', 'U2HALFC ', 'UNIT2 반냉방 운전모드(Unit2 Half Cooling Mode)', '1 : UNIT2 반냉방모드, 0 : UNIT2 반냉방모드 아님', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'U2HALFC = UNIT2 반냉방 운전모드(Unit2 Half Cooling Mode). 1 : UNIT2 반냉방모드, 0 : UNIT2 반냉방모드 아님', '우진200량-3단계'), ('9c12dadc-2ddc-4ad6-ad72-a40658de0e2c', '392', 'PEI1-1F ', 'TC1 (CAR 1) PEI 1 고장 정보(PASSENGER EMERGENCY INTERCOM 1-1 FAULT)', '0 : 정상, 1 : 고장', 'Woojin', 'AVC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'PEI1-1F = TC1 (CAR 1) PEI 1 고장 정보(PASSENGER EMERGENCY INTERCOM 1-1 FAULT). 0 : 정상, 1 : 고장', '우진200량-3단계'), ('9c2f09d5-7641-4e4f-b3a2-4d05420bb9e9', '827', 'MEF ', '모터 / 인코더 또는 DCU의 모터 / 인코더 회로 오류 발생(Motor / Encoder failure)', '0 : 정상 1 : 고장', 'Woojin', 'DCU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'MEF = 모터 / 인코더 또는 DCU의 모터 / 인코더 회로 오류 발생(Motor / Encoder failure). 0 : 정상 1 : 고장', '우진200량-3단계'), ('9c855deb-1442-4825-a09b-74537f601f1c', '877', 'RUNTM ', '당일 가동시간[분](Run Time)', '0~255', 'Woojin', 'CMSB', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'RUNTM = 당일 가동시간[분](Run Time). 0~255', '우진200량-3단계'), ('9cfcab94-bfac-49d4-9db6-2be537f5ad20', '916', 'HCR1 ', '선두차 정보 1호차 HCR(HCR CAR1)', '0 : 이외의 조건, 1 : 1호차(TC)에 대한 HCR 정보', 'Woojin', 'PIC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'HCR1 = 선두차 정보 1호차 HCR(HCR CAR1). 0 : 이외의 조건, 1 : 1호차(TC)에 대한 HCR 정보', '우진200량-3단계'), ('9d14abc5-765d-433f-a786-740920440e9f', '158', 'ASCOCK1 ', 'AS 압력 코크 스위치1 미동작(NO AIR SPRING CUT-OUT COCK #1)', 'AS cock cutout 시 : 0, 그 외의 경우 : 1', 'Woojin', 'M1', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'ASCOCK1 = AS 압력 코크 스위치1 미동작(NO AIR SPRING CUT-OUT COCK #1). AS cock cutout 시 : 0, 그 외의 경우 : 1', '우진200량-3단계'), ('9d1bdbc4-0a0e-4f7a-8249-5986aa0e690e', '1002', 'SCAM3-3F ', '3호차 1번 CCTV 카메라 고장상태(SALOON CAMERA 1-3 FAULT)', '0 : 정상 상태 (상시 녹화 중), 1 : 카메라 고장 시', 'Woojin', 'NVR', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'SCAM3-3F = 3호차 1번 CCTV 카메라 고장상태(SALOON CAMERA 1-3 FAULT). 0 : 정상 상태 (상시 녹화 중), 1 : 카메라 고장 시', '우진200량-3단계'), ('9d3eed7d-90c3-4368-ba13-1af3cd296f73', '591', 'DCI ', '출입문 닫힘 상태(Door Closed Information)', '0 : 출입문 열림, 1 : 출입문 닫힘', 'Woojin', 'BECU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'DCI = 출입문 닫힘 상태(Door Closed Information). 0 : 출입문 열림, 1 : 출입문 닫힘', '우진200량-3단계'), ('9d42b392-f638-4774-b646-6dbf488b401d', '1080', 'PEI2-1E ', '1호차 2위 비상인터폰 종료상태(PASSENGER EMERGENCY INTERCOM 2-1 END)', '1 : 연결됨, 0 : 연결안됨', 'Woojin', 'TRS', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'PEI2-1E = 1호차 2위 비상인터폰 종료상태(PASSENGER EMERGENCY INTERCOM 2-1 END). 1 : 연결됨, 0 : 연결안됨', '우진200량-3단계'), ('9d67ae71-315a-42ae-9ce2-5db61aab3de0', '619', 'SPEED1 ', '1축 속도(Speed1)', '0~127.5km/h', 'Woojin', 'BECU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'SPEED1 = 1축 속도(Speed1). 0~127.5km/h', '우진200량-3단계'), ('9d93c037-601d-41a3-acc7-9b3900ff8ee3', '178', 'DC100N ', 'DC100V 회로차단기 상태(DC 100V CIRCUIT BREAKER CLOSED)', '트립시 : 0, 정상시 : 1', 'Woojin', 'M1', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'DC100N = DC100V 회로차단기 상태(DC 100V CIRCUIT BREAKER CLOSED). 트립시 : 0, 정상시 : 1', '우진200량-3단계'), ('9dac9dbe-4ae4-4740-98f7-0a9a98998a4f', '1038', 'SCAM3-7R ', '7호차 1번 CCTV 카메라 녹화중(SALOON CAMERA 1-7 RECORD)', '0 : 이외의 조건, 1 : 이벤트 녹화 중', 'Woojin', 'NVR', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'SCAM3-7R = 7호차 1번 CCTV 카메라 녹화중(SALOON CAMERA 1-7 RECORD). 0 : 이외의 조건, 1 : 이벤트 녹화 중', '우진200량-3단계'), ('9dea1079-59d5-4dc0-915e-5c4abf9d37b3', '99', 'SU1CUN ', 'DC 100V TCMS CU1의 제어전원 NFB 입력신호(SUPPLY UNIT 1 CU)', '트립시 : 0, 정상시 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'SU1CUN = DC 100V TCMS CU1의 제어전원 NFB 입력신호(SUPPLY UNIT 1 CU). 트립시 : 0, 정상시 : 1', '우진200량-3단계'), ('9df4f5ce-6f9b-40b9-9fe6-6313649e21f9', '318', 'PB_PSD ', 'PSD고장으로 인한 AUTO발차불가(Propulsion Block by detecting PSD open)', '정상 : 0, 오토발차 불가 : 1 (비고:5초 지연 후 현시)', 'Woojin', 'ATC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'PB_PSD = PSD고장으로 인한 AUTO발차불가(Propulsion Block by detecting PSD open). 정상 : 0, 오토발차 불가 : 1 (비고:5초 지연 후 현시)', '우진200량-3단계'), ('9e7fb94c-3963-408d-9f56-b39f80518ba9', '730', 'PWMERR ', 'PWM 노치 고장(PWM Notch Error)', '0 : 정상, 1 : 고장검지', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'PWMERR = PWM 노치 고장(PWM Notch Error). 0 : 정상, 1 : 고장검지', '우진200량-3단계'), ('9ed0ef27-fe6b-41a5-b3ab-8dfef5fca8f8', '789', 'DCINV ', 'DC 입력 전압 정보(DC Input Voltage)', '0~3000V', 'Woojin', 'SIV', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'DCINV = DC 입력 전압 정보(DC Input Voltage). 0~3000V', '우진200량-3단계'), ('9ef61c6f-bbae-4e3c-8ba3-e7fe7bed1e5d', '1104', 'EFON ', '냉방장치의 증발기 동작상태(Evaporator Fan ON)', '1 : 동작중, 0 : 중지상태, Default : 0', 'Woojin', 'CHVAC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'EFON = 냉방장치의 증발기 동작상태(Evaporator Fan ON). 1 : 동작중, 0 : 중지상태, Default : 0', '우진200량-3단계'), ('9f0cb93c-b237-431f-bf6f-7450c36d5b43', '270', 'ISBD ', '제동부족 감지 인통선 신호(INSUFFICIENT BRAKE DETECTED(ISBD))', '그 외의 경우 : 0, ISBD 검지시 : 1', 'Woojin', 'T2', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'ISBD = 제동부족 감지 인통선 신호(INSUFFICIENT BRAKE DETECTED(ISBD)). 그 외의 경우 : 0, ISBD 검지시 : 1', '우진200량-3단계'), ('9f15ad17-ade3-42f7-bd81-506a506d07f8', '478', 'FASTH ', '보조히터 전난방(6000W) 운전모드(Fast Heating Mode)', '1 : 급속난방모드, 0 : 급속난방모드 아님', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'FASTH = 보조히터 전난방(6000W) 운전모드(Fast Heating Mode). 1 : 급속난방모드, 0 : 급속난방모드 아님 ', '우진200량-3단계'), ('9f52286e-2053-40ec-ba97-503a9b6be571', '168', 'NRBD ', '제동불완해 감지 인통선 신호(NON-RELEASE BRAKE DETECTED(NRBD))', '그 외의 경우 : 0, NRBD 검지시 : 1', 'Woojin', 'M1', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'NRBD = 제동불완해 감지 인통선 신호(NON-RELEASE BRAKE DETECTED(NRBD)). 그 외의 경우 : 0, NRBD 검지시 : 1', '우진200량-3단계'), ('9f7882bf-df36-404b-94ac-fd7b718dca60', '761', 'DCINOV ', 'DC 입력 과전압 검지(DC Input Over Voltage)', '0 : 이외의 조건, 1 : BC 출력 과전류 검지 시', 'Woojin', 'SIV', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'DCINOV = DC 입력 과전압 검지(DC Input Over Voltage). 0 : 이외의 조건, 1 : BC 출력 과전류 검지 시', '우진200량-3단계'), ('9f9af1fe-39c5-49c0-b43d-412c006d8c16', '314', 'ACTIVE ', 'ATC 동작상태(Operating ATC)', 'Not Operating : 0, Operating ATC : 1', 'Woojin', 'ATC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'ACTIVE = ATC 동작상태(Operating ATC). Not Operating : 0, Operating ATC : 1', '우진200량-3단계'), ('9fce07ed-2033-4a21-994c-6af74c54a329', '429', 'SOBOUT8F ', 'TC2 (CAR 8) SOB OUT(돌출형) 고장 정보(SIDE OPERATION BOX-OUT 8 FAULT)', '0 : 정상, 1 : 고장', 'Woojin', 'AVC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'SOBOUT8F = TC2 (CAR 8) SOB OUT(돌출형) 고장 정보(SIDE OPERATION BOX-OUT 8 FAULT). 0 : 정상, 1 : 고장', '우진200량-3단계'), ('a007762d-7a38-4a26-9e71-b954c9e9d5c0', '421', 'PIB7F ', 'M2 (CAR 7) PIB 고장 정보(PASSENGER INFORMATION BOARD 7 FAULT)', '0 : 정상, 1 : 고장', 'Woojin', 'AVC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'PIB7F = M2 (CAR 7) PIB 고장 정보(PASSENGER INFORMATION BOARD 7 FAULT). 0 : 정상, 1 : 고장', '우진200량-3단계'), ('a098160e-47d2-4a1c-a707-fb6b3a38d7c0', '144', 'ILCR2C ', 'AC 실내등 컨텍터 2 ON 명령(INTERIOR LIGHTS CONTACTOR 2)', '그 외의 경우 : 0, 접촉기 ON시 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'ILCR2C = AC 실내등 컨텍터 2 ON 명령(INTERIOR LIGHTS CONTACTOR 2). 그 외의 경우 : 0, 접촉기 ON시 : 1', '우진200량-3단계'), ('a09b12cd-4910-4849-bbe1-2fccd5bcf2dc', '1203', 'HUMID1 ', '1호차 객실 습도(room Humidity Car1)', '0 ~ 100 (%)', 'Woojin', 'AIRP', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'HUMID1 = 1호차 객실 습도(room Humidity Car1). 0 ~ 100 (%)', '우진200량-3단계'), ('a1730662-a399-4e2e-bf30-a27fa1314ac5', '534', 'CRCM1F ', '전자접촉기 압축기 1 고장(Car Room Compressor Motor 1 Fault)', '1 : 고장, 0 : 정상', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'CRCM1F = 전자접촉기 압축기 1 고장(Car Room Compressor Motor 1 Fault). 1 : 고장, 0 : 정상 ', '우진200량-3단계'), ('a21549d4-d967-4bb0-97e1-7ebd644b75a9', '20', 'PWM ', 'PWM(Pulse Width Modulation)', null, 'Woojin', 'TIB', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'PWM = PWM(Pulse Width Modulation)', '우진200량-3단계'), ('a2351dd9-319a-4407-80ed-3106243a4645', '1109', 'ST+2 ', '운전실 선택(캠) 스위치에 의해 기준온도가 실내기준온도+2도로 설정(Standard Temperature +2℃)', '1 : 동작중, 0 : 중지상태, Default : 0', 'Woojin', 'CHVAC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'ST+2 = 운전실 선택(캠) 스위치에 의해 기준온도가 실내기준온도+2도로 설정(Standard Temperature +2℃). 1 : 동작중, 0 : 중지상태, Default : 0', '우진200량-3단계'), ('a23f36b1-d229-4fb4-90d6-b703bcbe781e', '1050', 'PEI1-7C ', '7호차 1위 비상인터폰 연결상태(PASSENGER EMERGENCY INTERCOM 1-7 CALL)', '1 : 연결됨, 0 : 연결안됨', 'Woojin', 'TRS', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'PEI1-7C = 7호차 1위 비상인터폰 연결상태(PASSENGER EMERGENCY INTERCOM 1-7 CALL). 1 : 연결됨, 0 : 연결안됨', '우진200량-3단계'), ('a2742f1a-5bdb-40a2-96ee-599b2ea77efb', '927', 'RMD1-1F ', '노선안내표시기1-1 통신 상태(ROUTE MAP DISPLAY 1-1 FAULT)', '0 : 통신정상, 1 : 통신고장', 'Woojin', 'PIC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'RMD1-1F = 노선안내표시기1-1 통신 상태(ROUTE MAP DISPLAY 1-1 FAULT). 0 : 통신정상, 1 : 통신고장', '우진200량-3단계'), ('a2d8e390-4238-4cf4-bd53-ba109092b075', '538', 'CRRHT1F ', '전자접촉기 차량 히터 1 고장(Car Room Room Heater 1 Fault)', '1 : 고장 , 0 : 정상', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'CRRHT1F = 전자접촉기 차량 히터 1 고장(Car Room Room Heater 1 Fault). 1 : 고장 , 0 : 정상', '우진200량-3단계'), ('a2f202cf-c9f8-41f8-abde-ab0b630f5a1a', '56', 'EBR ', '비상제동 인통선 릴레이(SAFETY LOOP NO EMERGENCY BRAKE)', '그 외의 경우 : 0, EBR 여자시 EB완해 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'EBR = 비상제동 인통선 릴레이(SAFETY LOOP NO EMERGENCY BRAKE). 그 외의 경우 : 0, EBR 여자시 EB완해 : 1', '우진200량-3단계'), ('a375dd48-9d3d-4b1a-ae9e-f3035a2ac584', '941', 'RMD5-4F ', '노선안내표시기5-4 통신 상태(ROUTE MAP DISPLAY 5-4 FAULT)', '0 : 통신정상, 1 : 통신고장', 'Woojin', 'PIC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'RMD5-4F = 노선안내표시기5-4 통신 상태(ROUTE MAP DISPLAY 5-4 FAULT). 0 : 통신정상, 1 : 통신고장', '우진200량-3단계'), ('a3d61ab5-f6eb-4723-8b49-440eeb4b8260', '1105', 'CMON ', '냉방장치의 압축기 동작상태(Compressor ON)', '1 : 동작중, 0 : 중지상태, Default : 0', 'Woojin', 'CHVAC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'CMON = 냉방장치의 압축기 동작상태(Compressor ON). 1 : 동작중, 0 : 중지상태, Default : 0', '우진200량-3단계'), ('a41ff6e1-bc82-4250-9db3-365d1ad6446e', '715', 'WSD ', '대활주/대공전(Wheel Slip/Slide Detect)', '0 : 정상, 1 : 고장검지', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'WSD = 대활주/대공전(Wheel Slip/Slide Detect). 0 : 정상, 1 : 고장검지', '우진200량-3단계'), ('a476f454-f45b-4f55-baa7-a8fb810d75a5', '386', 'COB1F ', 'TC1 (CAR 1) COB 고장 정보(CENTER OPERATION BOX 1 FAULT)', '0 : 정상, 1 : 고장', 'Woojin', 'AVC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'COB1F = TC1 (CAR 1) COB 고장 정보(CENTER OPERATION BOX 1 FAULT). 0 : 정상, 1 : 고장', '우진200량-3단계'), ('a4a65e80-66b5-4e50-9a8b-16e01e87a29e', '872', 'CMST ', 'CM 기동(CM Start)', '1 : CMSB 기동, 0 : CMSB 미기동', 'Woojin', 'CMSB', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'CMST = CM 기동(CM Start). 1 : CMSB 기동, 0 : CMSB 미기동', '우진200량-3단계'), ('a50bad74-b701-4804-bdbb-c8006adc22bd', '388', 'FDI1F ', 'TC1 (CAR 1) FDI 고장 정보(FRONT DESTINATION INDICATOR 1 FAULT)', '0 : 정상, 1 : 고장', 'Woojin', 'AVC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'FDI1F = TC1 (CAR 1) FDI 고장 정보(FRONT DESTINATION INDICATOR 1 FAULT). 0 : 정상, 1 : 고장', '우진200량-3단계'), ('a548d19e-3f90-47cf-a4ce-b557f4221975', '722', 'CLVD_P2 ', '제어전원 전압이상(PWM2)(Control Low Voltage Detect Pwm2)', '0 : 정상, 1 : 고장검지', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'CLVD_P2 = 제어전원 전압이상(PWM2)(Control Low Voltage Detect Pwm2). 0 : 정상, 1 : 고장검지', '우진200량-3단계'), ('a5897067-54d6-4c5e-a717-1743c370538a', '357', 'DRVCAMF ', '운전모드 스위치 입력 오류(CAM Switch in Illegal Position)', '운전 모드입력 정상 : 0, 운전 모드입력 에러 : 1', 'Woojin', 'ATC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'DRVCAMF = 운전모드 스위치 입력 오류(CAM Switch in Illegal Position). 운전 모드입력 정상 : 0, 운전 모드입력 에러 : 1', '우진200량-3단계'), ('a5da0eb0-d15c-4227-b253-0ad5ddf057e8', '846', 'PSDOP ', '스크린도어 열림(PSD Open)', '1 : 열림, 0 : 닫힘, Default : 0', 'Woojin', 'PSD', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'PSDOP = 스크린도어 열림(PSD Open). 1 : 열림, 0 : 닫힘, Default : 0', '우진200량-3단계'), ('a5e99772-8bd0-488e-8c37-24de6d2da30b', '48', 'FMC ', '운전모드 완전수동모드(FULL MANUAL MODE)', '그 외의 경우 : 0, 완전수동모드 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'FMC = 운전모드 완전수동모드(FULL MANUAL MODE). 그 외의 경우 : 0, 완전수동모드 : 1', '우진200량-3단계'), ('a5ff58ac-e8ce-4d23-9350-97a2050bb559', '447', 'PEI2-5 ', '비상인터폰 호출 위치 CAR 5 2위(PASSENGER EMERGENCY INTERCOM 2-5 CALL)', '0 : 미호출, 1 : 호출', 'Woojin', 'AVC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'PEI2-5 = 비상인터폰 호출 위치 CAR 5 2위(PASSENGER EMERGENCY INTERCOM 2-5 CALL). 0 : 미호출, 1 : 호출', '우진200량-3단계'), ('a648a73c-c95d-4fa3-a626-dc4fe916fced', '409', 'AMP1-4F ', 'T1 (CAR 4) AMP 1 고장 정보(AMPLIFIER 1-4 FAULT)', '0 : 정상, 1 : 고장', 'Woojin', 'AVC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'AMP1-4F = T1 (CAR 4) AMP 1 고장 정보(AMPLIFIER 1-4 FAULT). 0 : 정상, 1 : 고장', '우진200량-3단계'), ('a6806aa8-74c1-494f-9f02-8520c01e9a6b', '754', 'MJFR ', 'SIV Major Fault 정보(Major Fault)', '0 : 이외의 조건, 1 : SIV Major Fault 발생 시', 'Woojin', 'SIV', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'MJFR = SIV Major Fault 정보(Major Fault). 0 : 이외의 조건, 1 : SIV Major Fault 발생 시', '우진200량-3단계'), ('a6b78542-18c4-43e2-8f21-5aa5ab3aaf53', '406', 'PIB4F ', 'T1 (CAR 4) PIB 고장 정보(PASSENGER INFORMATION BOARD 4 FAULT)', '0 : 정상, 1 : 고장', 'Woojin', 'AVC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'PIB4F = T1 (CAR 4) PIB 고장 정보(PASSENGER INFORMATION BOARD 4 FAULT). 0 : 정상, 1 : 고장', '우진200량-3단계'), ('a6ebcee2-caf5-443c-ab14-4cf31107ab6e', '563', 'RAMF ', 'RAM 점검 고장(RAM Fault)', '0 : 정상, 1 : 고장검지', 'Woojin', 'BECU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'RAMF = RAM 점검 고장(RAM Fault). 0 : 정상, 1 : 고장검지', '우진200량-3단계'), ('a736898e-c9e7-4d65-be59-2670d91a1604', '286', 'SOTS1 ', '열차분리검지 1(SEPARATION OF TRAIN SET1)', '그 외의 경우 : 1, 고장시 : 0', 'Woojin', 'T2', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'SOTS1 = 열차분리검지 1(SEPARATION OF TRAIN SET1). 그 외의 경우 : 1, 고장시 : 0', '우진200량-3단계'), ('a745e537-0678-4b2d-896f-cc179f5e41cd', '465', 'UG_SDR ', '지하구간(Under Ground)', '0 : 정지, 1 : 동작', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'UG_SDR = 지하구간(Under Ground). 0 : 정지, 1 : 동작', '우진200량-3단계'), ('a78a8a49-aed0-4a1f-bd8b-59c3624ad410', '936', 'RMD4-3F ', '노선안내표시기4-3 통신 상태(ROUTE MAP DISPLAY 4-3 FAULT)', '0 : 통신정상, 1 : 통신고장', 'Woojin', 'PIC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'RMD4-3F = 노선안내표시기4-3 통신 상태(ROUTE MAP DISPLAY 4-3 FAULT). 0 : 통신정상, 1 : 통신고장', '우진200량-3단계'), ('a7a9645d-cb3c-47f9-9227-2324d225f9d0', '110', 'ILCR1 ', 'AC 실내등 컨텍터 1 ON 상태확인(CONTACTOR 1 INTERIOR LIGHTS CLOSED)', '그 외의 경우 : 0, 접촉기 ON시 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'ILCR1 = AC 실내등 컨텍터 1 ON 상태확인(CONTACTOR 1 INTERIOR LIGHTS CLOSED). 그 외의 경우 : 0, 접촉기 ON시 : 1', '우진200량-3단계'), ('a7d865c8-2a2f-42c4-be3e-522087d13157', '981', 'REC_R ', '구원 인터폰 이벤트 녹화 중(RECORD RESCUE)', '0 : 이외의 조건, 1 : 이벤트 녹화 중', 'Woojin', 'NVR', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'REC_R = 구원 인터폰 이벤트 녹화 중(RECORD RESCUE). 0 : 이외의 조건, 1 : 이벤트 녹화 중', '우진200량-3단계'), ('a7e4c403-7cb8-4506-a66a-80a991829fc7', '304', 'ATCSTAT ', 'ATC 상태(ATC/ATO Status)', 'ATC/ATO1계(Good/Active)-ATC/ATO2계(Good/Standby): 14, ATC/ATO1계(Good/Standby-ATC/ATO2계(Good/Active) : 11, ATC/ATO1계(Good/Active)-ATC/ATO2 (Bad/Standby) : 12, ATC/ATO1계(Bad/Standby)-ATC/ATO2계(Good/Active) : 13, ATC/ATO1계(Good/Active)-ATC/ATO2계(Good/Active) : 15, ATC/ATO1계(Good/Standby)-ATC/ATO2계(Good/Standby) : 10', 'Woojin', 'ATC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'ATCSTAT = ATC 상태(ATC/ATO Status). ATC/ATO1계(Good/Active)-ATC/ATO2계(Good/Standby): 14, ATC/ATO1계(Good/Standby-ATC/ATO2계(Good/Active) : 11, ATC/ATO1계(Good/Active)-ATC/ATO2 (Bad/Standby) : 12, ATC/ATO1계(Bad/Standby)-ATC/ATO2계(Good/Active) : 13, ATC/ATO1계(Good/Active)-ATC/ATO2계(Good/Active) : 15, ATC/ATO1계(Good/Standby)-ATC/ATO2계(Good/Standby) : 10', '우진200량-3단계'), ('a89b4173-6ed4-4d71-8825-09a19698b1e0', '697', 'OVCTD ', 'OVT 고장 과전류 검지(OVCT Detect)', '0 : 정상, 1 : 고장검지', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'OVCTD = OVT 고장 과전류 검지(OVCT Detect). 0 : 정상, 1 : 고장검지', '우진200량-3단계'), ('a8dea80d-14fe-4f2e-a49e-3df59f9a36b3', '764', 'INV1OC ', '인버터 입력 과전류 검지(INV1 Over Current)', '0 : 이외의 조건, 1 : AC 출력 과전류 검지 시', 'Woojin', 'SIV', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'INV1OC = 인버터 입력 과전류 검지(INV1 Over Current). 0 : 이외의 조건, 1 : AC 출력 과전류 검지 시', '우진200량-3단계'), ('a8ea42cf-a2ab-46d6-a31b-abad84dcaf4e', '507', 'U1DSP1LP ', 'UNIT1 압력스위치1 LP 신호(UNIT1 Differential Pressure Switch1 Low Pressure)', '1 : UNIT1 DPS1 LP 고장, 0 : 정상', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'U1DSP1LP = UNIT1 압력스위치1 LP 신호(UNIT1 Differential Pressure Switch1 Low Pressure). 1 : UNIT1 DPS1 LP 고장, 0 : 정상', '우진200량-3단계'), ('a9397e95-f5b0-452c-9cee-994c9ee5a52b', '1124', 'CFOL ', '응축기 과부하 상태(Condencer Fan Over Load)', '1 : 과부하, 0 : 정상, Default : 0', 'Woojin', 'CHVAC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'CFOL = 응축기 과부하 상태(Condencer Fan Over Load). 1 : 과부하, 0 : 정상, Default : 0', '우진200량-3단계'), ('a95d633a-9a03-447e-95ec-86f2e3feacf5', '818', 'EAD ', '외부 비상핸들 작동(Emergency Access Device)', '0 : 정상 1 : 외부 비상핸들 작동', 'Woojin', 'DCU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'EAD = 외부 비상핸들 작동(Emergency Access Device). 0 : 정상 1 : 외부 비상핸들 작동', '우진200량-3단계'), ('a99f7a49-4645-47db-9183-457c484df532', '831', 'MAJERF ', '도어 시스템 중고장 발생(Major failure)', '0 : 정상 1 : 고장', 'Woojin', 'DCU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'MAJERF = 도어 시스템 중고장 발생(Major failure). 0 : 정상 1 : 고장', '우진200량-3단계'), ('a9d3fffd-0b06-4f7f-a1da-68fadb503a39', '1073', 'PEI2-8E ', '8호차 2위 비상인터폰 종료상태(PASSENGER EMERGENCY INTERCOM 2-8 END)', '1 : 연결됨, 0 : 연결안됨', 'Woojin', 'TRS', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'PEI2-8E = 8호차 2위 비상인터폰 종료상태(PASSENGER EMERGENCY INTERCOM 2-8 END). 1 : 연결됨, 0 : 연결안됨', '우진200량-3단계'), ('a9e2c970-0f81-41ad-8fd5-5b967c4c2269', '1151', 'DDS4-5F ', '5호차 미세먼지센서4 고장상태(Dust Detector Sensor AP4 Car5 Fault)', '1 : 고장, 0 : 정상', 'Woojin', 'AIRP', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'DDS4-5F = 5호차 미세먼지센서4 고장상태(Dust Detector Sensor AP4 Car5 Fault). 1 : 고장, 0 : 정상', '우진200량-3단계'), ('a9fe795e-ad4f-49fe-a199-122e9b158d48', '952', 'RMD6-6F ', '노선안내표시기6-6 통신 상태(ROUTE MAP DISPLAY 6-6 FAULT)', '0 : 통신정상, 1 : 통신고장', 'Woojin', 'PIC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'RMD6-6F = 노선안내표시기6-6 통신 상태(ROUTE MAP DISPLAY 6-6 FAULT). 0 : 통신정상, 1 : 통신고장', '우진200량-3단계'), ('aa816e49-f5e7-4086-a17b-6c9004b7eb17', '1132', 'DDS3-2F ', '2호차 미세먼지센서3 고장상태(Dust Detector Sensor AP3 Car2 Fault)', '1 : 고장, 0 : 정상', 'Woojin', 'AIRP', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'DDS3-2F = 2호차 미세먼지센서3 고장상태(Dust Detector Sensor AP3 Car2 Fault). 1 : 고장, 0 : 정상', '우진200량-3단계'), ('aafa8ba6-2865-4d9b-b4bc-e28f9e137b19', '395', 'AMP2-1F ', 'TC1 (CAR 1) AMP 2 고장 정보(AMPLIFIER 2-1 FAULT)', '0 : 정상, 1 : 고장', 'Woojin', 'AVC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'AMP2-1F = TC1 (CAR 1) AMP 2 고장 정보(AMPLIFIER 2-1 FAULT). 0 : 정상, 1 : 고장', '우진200량-3단계'), ('ab2e2450-7a95-49f8-b359-9c3c14571cab', '776', 'INV1THF ', '인버터1 과온 검지(INV1 Thermal Fault)', '0 : 이외의 조건, 1 : 인버터1 과온 검지 시', 'Woojin', 'SIV', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'INV1THF = 인버터1 과온 검지(INV1 Thermal Fault). 0 : 이외의 조건, 1 : 인버터1 과온 검지 시', '우진200량-3단계'), ('ab35fb58-c53a-45cb-bbcc-fdb196fdc049', '755', 'EPAND ', '비상 판토 하강 정보(Pan Down)', '0 : 이외의 조건, 1 : 비상 판토 하강 스위치 취급 시', 'Woojin', 'SIV', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'EPAND = 비상 판토 하강 정보(Pan Down). 0 : 이외의 조건, 1 : 비상 판토 하강 스위치 취급 시 ', '우진200량-3단계'), ('ab4cb8d4-e321-4608-aa4d-122516a8c7d0', '377', 'MASTER ', '차량 Master 정보(MASTER)', '0 : Master 미설정, 1 : Master 설정', 'Woojin', 'AVC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'MASTER = 차량 Master 정보(MASTER). 0 : Master 미설정, 1 : Master 설정', '우진200량-3단계'), ('ab778de3-ecc3-45cb-b504-39b34f189e1e', '364', 'STCODE_SDR ', '출발역 번호(Start Code)', '1~255', 'Woojin', 'AVC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'STCODE_SDR = 출발역 번호(Start Code). 1~255', '우진200량-3단계'), ('ab7c18ed-9ab4-4f57-a9e7-970fab01dbf7', '1005', 'SCAM3-6F ', '6호차 1번 CCTV 카메라 고장상태(SALOON CAMERA 1-6 FAULT)', '0 : 정상 상태 (상시 녹화 중), 1 : 카메라 고장 시', 'Woojin', 'NVR', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'SCAM3-6F = 6호차 1번 CCTV 카메라 고장상태(SALOON CAMERA 1-6 FAULT). 0 : 정상 상태 (상시 녹화 중), 1 : 카메라 고장 시', '우진200량-3단계'), ('abbcee8f-2301-4dfa-b597-99b22cd3f465', '676', 'SPEED3 ', '3축 속도 값(Moter Shaft 3 Speed)', '0∼255km/h', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'SPEED3 = 3축 속도 값(Moter Shaft 3 Speed). 0∼255km/h', '우진200량-3단계'), ('abe0994a-455e-4361-8c49-f94a8978e512', '1048', '열차번호 ', '열차번호(Train Number)', null, 'Woojin', 'TRS', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', '열차번호 = 열차번호(Train Number). ', '우진200량-3단계'), ('abeb65dc-2c68-4759-9c18-6988a8b50265', '1111', 'ST ', '운전실 선택(캠) 스위치에 의해 기준온도가 실내기준온도로 설정(Standard Temperature)', '1 : 동작중, 0 : 중지상태, Default : 0', 'Woojin', 'CHVAC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'ST = 운전실 선택(캠) 스위치에 의해 기준온도가 실내기준온도로 설정(Standard Temperature). 1 : 동작중, 0 : 중지상태, Default : 0', '우진200량-3단계'), ('abebcc36-30cc-4d75-ad31-b8121027bb16', '333', 'ROMVER ', '롬버전(ATC/ATO SW version)', null, 'Woojin', 'ATC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'ROMVER = 롬버전(ATC/ATO SW version).', '우진200량-3단계'), ('ac51ccdc-0da1-4ad9-bd43-ea09c391e21c', '883', 'ON_CH ', '배터리 충전 운영모드 표시(On Charge)', '0 : 충전하지 않을 때, 1 : 충전 중일 때', 'Woojin', 'BMS', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'ON_CH = 배터리 충전 운영모드 표시(On Charge). 0 : 충전하지 않을 때, 1 : 충전 중일 때', '우진200량-3단계'), ('ac858bb8-0425-48e5-86ed-d25473053703', '987', 'FCAM1R ', '1호차 전면 카메라 이벤트 녹화상태(FRONT CAMERA 1 RECORD)', '0 : 이외의 조건, 1 : 이벤트 녹화 중', 'Woojin', 'NVR', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'FCAM1R = 1호차 전면 카메라 이벤트 녹화상태(FRONT CAMERA 1 RECORD). 0 : 이외의 조건, 1 : 이벤트 녹화 중', '우진200량-3단계'), ('acf19b95-c828-4b9e-8eca-04ec6c4f8020', '461', 'WATCHDOG ', '통신 생존 확인을 위한 Count 값 1씩 증가(WATCHDOG)', '0~255', 'Woojin', 'AVC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'WATCHDOG = 통신 생존 확인을 위한 Count 값 1씩 증가(WATCHDOG). 0~255', '우진200량-3단계'), ('acf3daf9-71e9-4410-9047-f1b04f7612d8', '224', 'FD1 ', '화재감지(FIRE DETECTION)', '그 외의 경우 : 0, 화재검지시 : 1', 'Woojin', 'M2', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'FD1 = 화재감지(FIRE DETECTION). 그 외의 경우 : 0, 화재검지시 : 1', '우진200량-3단계'), ('acf81f9a-6960-4bc8-899c-b1c1988c46d4', '58', 'SIVK ', 'SIV 컨텍터 동작(SIV CONTACTOR CLOSED(SIV OK))', '그 외의 경우 : 0, SIC기동 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'SIVK = SIV 컨텍터 동작(SIV CONTACTOR CLOSED(SIV OK)). 그 외의 경우 : 0, SIC기동 : 1', '우진200량-3단계'), ('ad15bfde-0c9d-4c57-8e0e-353e938a2b71', '1059', 'PEI2-6C ', '6호차 2위 비상인터폰 연결상태(PASSENGER EMERGENCY INTERCOM 2-6 CALL)', '1 : 연결됨, 0 : 연결안됨', 'Woojin', 'TRS', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'PEI2-6C = 6호차 2위 비상인터폰 연결상태(PASSENGER EMERGENCY INTERCOM 2-6 CALL). 1 : 연결됨, 0 : 연결안됨', '우진200량-3단계'), ('ad2892d8-269b-4d3f-a400-b403dc313ddf', '514', 'U1DSP1RL ', 'UNIT1 압력스위치1 냉매부족 신호(UNIT1 Differential Pressure Switch1 Refrigerant Low)', '1 : 냉매부족, 0 : 정상', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'U1DSP1RL = UNIT1 압력스위치1 냉매부족 신호(UNIT1 Differential Pressure Switch1 Refrigerant Low). 1 : 냉매부족, 0 : 정상', '우진200량-3단계'), ('ad596bd3-9ec7-4371-9217-3a8445a5f36a', '546', 'U1AHOH ', 'UNIT1 보조히터 과열 발생 신호(UNIT1 Auxiliary Heater Over Heat)', '1 : UNIT1 보조히터 과열 발생, 0 : 정상', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'U1AHOH = UNIT1 보조히터 과열 발생 신호(UNIT1 Auxiliary Heater Over Heat). 1 : UNIT1 보조히터 과열 발생, 0 : 정상', '우진200량-3단계'), ('ad8e5343-997a-49a1-887c-c1236bc33fad', '861', 'GPSD2CNG ', '2계 지상 스크린도어 닫힘 NG(Ground PSD2 Closed NG)', '1 : NG, 0 : 정상, Default : 0', 'Woojin', 'PSD', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'GPSD2CNG = 2계 지상 스크린도어 닫힘 NG(Ground PSD2 Closed NG). 1 : NG, 0 : 정상, Default : 0', '우진200량-3단계'), ('ad9e3a3a-4434-4ec6-8e25-bb454b22b60a', '394', 'AMP1-1F ', 'TC1 (CAR 1) AMP 1 고장 정보(AMPLIFIER 1-1 FAULT)', '0 : 정상, 1 : 고장', 'Woojin', 'AVC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'AMP1-1F = TC1 (CAR 1) AMP 1 고장 정보(AMPLIFIER 1-1 FAULT). 0 : 정상, 1 : 고장', '우진200량-3단계'), ('adb15ad9-b893-44cd-987f-c04055b387fa', '1164', 'AP3-1S ', '1호차 공기정화기3 동작상태(Air Purifier3 Car1 State)', '0 : OFF, 1 : 약, 2 : 중, 3 : 강', 'Woojin', 'AIRP', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'AP3-1S = 1호차 공기정화기3 동작상태(Air Purifier3 Car1 State). 0 : OFF, 1 : 약, 2 : 중, 3 : 강', '우진200량-3단계'), ('adb17ab9-7380-467a-b899-3ad5ad8f9a4d', '237', 'CPRS ', '강제완해 스위치 동작(COMPULSORY RELEASE)', '그 외의 경우 : 0, 스위치 ON시 : 1', 'Woojin', 'T1', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'CPRS = 강제완해 스위치 동작(COMPULSORY RELEASE). 그 외의 경우 : 0, 스위치 ON시 : 1', '우진200량-3단계'), ('adb50280-56b4-4f2e-89b3-3d83d7b267ed', '647', 'LB1CC ', 'LB1 Close 지령(LB 1 Close Command)', '0 : 각 접촉기의 투입지령 Off 중 1 : 각 접촉기의 투입지령 출력 중', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'LB1CC = LB1 Close 지령(LB 1 Close Command). 0 : 각 접촉기의 투입지령 Off 중 1 : 각 접촉기의 투입지령 출력 중', '우진200량-3단계'), ('ade7ca8f-de7a-4eed-adce-73244871d4e2', '1094', 'ONDNLD ', '전면USB로 다운로드 중(Downloading)', '0 : 다운로드 중이 아님, 1 : 다운로드 중', 'Woojin', 'EVR', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'ONDNLD = 전면USB로 다운로드 중(Downloading). 0 : 다운로드 중이 아님, 1 : 다운로드 중', '우진200량-3단계'), ('ae15f702-a989-41ed-a2ba-43743c5cf3c3', '508', 'U1DSP2HP ', 'UNIT1 압력스위치2 HP 신호(UNIT1 Differential Pressure Switch2 High Pressure)', '1 : UNIT1 DPS2 HP 고장, 0 : 정상', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'U1DSP2HP = UNIT1 압력스위치2 HP 신호(UNIT1 Differential Pressure Switch2 High Pressure). 1 : UNIT1 DPS2 HP 고장, 0 : 정상', '우진200량-3단계'), ('ae25a04e-fec5-4331-985b-8e77c563eb81', '645', 'POWER ', '추진상태(Powering)', '0 : 마스콘으로부터 역행 DI신호를 입력받지 못한 경우1 : 마스콘으로부터 역행 DI신호를 입력받은 경', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'POWER = 추진상태(Powering). 0 : 마스콘으로부터 역행 DI신호를 입력받지 못한 경우1 : 마스콘으로부터 역행 DI신호를 입력받은 경', '우진200량-3단계'), ('ae3ff869-86aa-44b2-9510-b7d12333797e', '1000', 'SCAM2-4F ', '4호차 2번 CCTV 카메라 고장상태(SALOON CAMERA 2-4 FAULT)', '0 : 정상 상태 (상시 녹화 중), 1 : 카메라 고장 시', 'Woojin', 'NVR', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'SCAM2-4F = 4호차 2번 CCTV 카메라 고장상태(SALOON CAMERA 2-4 FAULT). 0 : 정상 상태 (상시 녹화 중), 1 : 카메라 고장 시', '우진200량-3단계'), ('ae4c918d-04ee-42ad-ae1f-bee154d99cf7', '869', 'SHORT ', '출력 단락(Short)', '1 : 고장, 0 : 정상', 'Woojin', 'CMSB', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'SHORT = 출력 단락(Short). 1 : 고장, 0 : 정상', '우진200량-3단계'), ('ae815ea3-38f8-4784-a706-1718831c1575', '784', 'IVSa ', 'IVS 스위치 투입 정보(IVS ON)', '0 : 이외의 조건, 1 : IVS 투입 시', 'Woojin', 'SIV', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'IVSa = IVS 스위치 투입 정보(IVS ON). 0 : 이외의 조건, 1 : IVS 투입 시', '우진200량-3단계'), ('ae89acd5-29a7-46fa-9de3-948bb5eaf046', '260', 'LFF1CR ', 'LINE FLOW FANS CONTACTOR 1 ON 명령(LINE FLOW FANS CONTACTOR 1)', '그 외의 경우 : 0, 접촉기 ON시 : 1', 'Woojin', 'T1', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'LFF1CR = LINE FLOW FANS CONTACTOR 1 ON 명령(LINE FLOW FANS CONTACTOR 1). 그 외의 경우 : 0, 접촉기 ON시 : 1', '우진200량-3단계'), ('ae8ea8ef-adcf-471c-b156-dc36f1aadf51', '942', 'RMD4-4F ', '노선안내표시기4-4 통신 상태(ROUTE MAP DISPLAY 4-4 FAULT)', '0 : 통신정상, 1 : 통신고장', 'Woojin', 'PIC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'RMD4-4F = 노선안내표시기4-4 통신 상태(ROUTE MAP DISPLAY 4-4 FAULT). 0 : 통신정상, 1 : 통신고장', '우진200량-3단계'), ('aecb792b-f42a-46d4-a968-b55cc34f76b4', '1157', 'DDS2-8F ', '8호차 미세먼지센서2 고장상태(Dust Detector Sensor AP2 Car8 Fault)', '1 : 고장, 0 : 정상', 'Woojin', 'AIRP', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'DDS2-8F = 8호차 미세먼지센서2 고장상태(Dust Detector Sensor AP2 Car8 Fault). 1 : 고장, 0 : 정상', '우진200량-3단계'), ('af108357-8c3c-4421-8be1-c6d464292d6b', '839', 'ROMVER ', '소프트웨어 버전(Rom version)', null, 'Woojin', 'DCU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'ROMVER = 소프트웨어 버전(Rom version). ', '우진200량-3단계'), ('af48d78f-b8f6-492d-8975-4e55c185b6b5', '422', 'PEI1-7F ', 'M2 (CAR 7) PEI 1 고장 정보(PASSENGER EMERGENCY INTERCOM 1-7 FAULT)', '0 : 정상, 1 : 고장', 'Woojin', 'AVC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'PEI1-7F = M2 (CAR 7) PEI 1 고장 정보(PASSENGER EMERGENCY INTERCOM 1-7 FAULT). 0 : 정상, 1 : 고장', '우진200량-3단계'), ('afaedc5c-cb8e-4028-8b39-594dce922d5e', '211', 'TCN ', '추진 회로의 회로차단기 상태(TRACTION CIRCUIT BREAKER CLOSED)', '트립시 : 0, 정상시 : 1', 'Woojin', 'M2', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'TCN = 추진 회로의 회로차단기 상태(TRACTION CIRCUIT BREAKER CLOSED). 트립시 : 0, 정상시 : 1', '우진200량-3단계'), ('afdf8340-a6f7-4707-8e73-a90808646be3', '641', 'NORMAL ', '인버터 정상모드(NORMAL MODE)', '0 : CCOS가 TEST 위치 1 : CCOS가 NORMAL 위치', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'NORMAL = 인버터 정상모드(NORMAL MODE). 0 : CCOS가 TEST 위치 1 : CCOS가 NORMAL 위치', '우진200량-3단계'), ('b0327d12-7986-4cfc-aa29-db48f07b82e1', '698', 'PUD ', '상전류 불평형(Phase Unbalance Detect)', '0 : 정상, 1 : 고장검지', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'PUD = 상전류 불평형(Phase Unbalance Detect). 0 : 정상, 1 : 고장검지', '우진200량-3단계'), ('b034f4d8-0a37-4674-9054-2e68562fe3fe', '731', 'INZ-RST ', 'TCU 초기화(Initialize Reset)', '0 : 정상, 1 : 고장검지', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'INZ-RST = TCU 초기화(Initialize Reset). 0 : 정상, 1 : 고장검지', '우진200량-3단계'), ('b0c75248-7238-47f9-aefe-afd4ad758111', '45', 'SOTS2 ', '열차분리검지2(SEPARATION OF TRAIN SET2)', '그 외의 경우 : 1, 고장시 : 0', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'SOTS2 = 열차분리검지2(SEPARATION OF TRAIN SET2). 그 외의 경우 : 1, 고장시 : 0', '우진200량-3단계'), ('b124318c-2ef7-46c5-b3ca-0de89972b1b3', '768', 'BCOC ', 'BC 출력 과전류 검지(BC Output Over Current)', '0 : 이외의 조건, 1 : DC 입력 과전압 검지 시', 'Woojin', 'SIV', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'BCOC = BC 출력 과전류 검지(BC Output Over Current). 0 : 이외의 조건, 1 : DC 입력 과전압 검지 시', '우진200량-3단계'), ('b15db997-1484-4f6e-b6c2-db647764f98f', '350', 'OV_STOP1 ', '정위치 지점 통과 (+50cm 이내) 정차 시(Minor Over Stop Error)', '과주 정차 아님 : 0, 과주 정차 : 1', 'Woojin', 'ATC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'OV_STOP1 = 정위치 지점 통과 (+50cm 이내) 정차 시(Minor Over Stop Error). 과주 정차 아님 : 0, 과주 정차 : 1', '우진200량-3단계'), ('b17d390d-07b2-4319-a7a1-ef85cef428cb', '351', 'SH_STOP2 ', '정위치 지점 도착 전 (-50cm 이상) 정차 시(Major Short Stop Error)', '미달 정차 아님 : 0, 미달 정차 : 1', 'Woojin', 'ATC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'SH_STOP2 = 정위치 지점 도착 전 (-50cm 이상) 정차 시(Major Short Stop Error). 미달 정차 아님 : 0, 미달 정차 : 1', '우진200량-3단계'), ('b1c9677c-5b00-4a07-ae6e-1c9fb3efe590', '769', 'BCOV ', 'BC 출력 과전압 검지(BC Output Over Voltage)', '0 : 이외의 조건, 1 : BC 출력 과전압 검지 시', 'Woojin', 'SIV', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'BCOV = BC 출력 과전압 검지(BC Output Over Voltage). 0 : 이외의 조건, 1 : BC 출력 과전압 검지 시', '우진200량-3단계'), ('b1f64a40-e05a-49e4-a432-38ed50e4b807', '1071', 'PEI1-2E ', '2호차 1위 비상인터폰 종료상태(PASSENGER EMERGENCY INTERCOM 1-2 END)', '1 : 연결됨, 0 : 연결안됨', 'Woojin', 'TRS', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'PEI1-2E = 2호차 1위 비상인터폰 종료상태(PASSENGER EMERGENCY INTERCOM 1-2 END). 1 : 연결됨, 0 : 연결안됨', '우진200량-3단계'), ('b24116ca-966b-4af0-8fba-96e91749d385', '794', 'BCC ', 'BC 출력 전류 정보(BC Output Current)', '0~500A', 'Woojin', 'SIV', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'BCC = BC 출력 전류 정보(BC Output Current). 0~500A', '우진200량-3단계'), ('b2a08e3e-6837-41e5-a02e-70b9f4872773', '368', 'DEADMAN_SDR ', '데드맨 알람(DEAD MAN)', '0 : Dead Man Alaram OFF, Dead Man Alaram On', 'Woojin', 'AVC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'DEADMAN_SDR = 데드맨 알람(DEAD MAN). 0 : Dead Man Alaram OFF, Dead Man Alaram On', '우진200량-3단계'), ('b2a1f0fe-8ce4-4b93-b709-00eeb6ed7133', '1206', 'HUMID4 ', '4호차 객실 습도(room Humidity Car4)', '0 ~ 100 (%)', 'Woojin', 'AIRP', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'HUMID4 = 4호차 객실 습도(room Humidity Car4). 0 ~ 100 (%)', '우진200량-3단계'), ('b2a6e098-5b55-45ec-9e8a-99a95c47f8ff', '52', 'EBS ', '비상제동 체결 스위치(데스크) EMERGENCY BRAKE PUSH-BUTTON(DESK) ON)', '비상제동 체결시 : 0, 비상제동 체결 아님 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'EBS = 비상제동 체결 스위치(데스크) EMERGENCY BRAKE PUSH-BUTTON(DESK) ON). 비상제동 체결시 : 0, 비상제동 체결 아님 : 1', '우진200량-3단계'), ('b2ac0d87-c88c-401e-8a7d-f95d043c5474', '496', 'T_HEAT ', '난방시험 황목 번호(Test Heating Mode)', '1 : 난방시험 결과 NG 모드, 0 : 난방시험 결과 NG모드아님', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'T_HEAT = 난방시험 황목 번호(Test Heating Mode). 1 : 난방시험 결과 NG 모드, 0 : 난방시험 결과 NG모드아님', '우진200량-3단계'), ('b2afbfa4-b4fb-41d0-b86d-41bf7d50635e', '524', 'U1DSENSF ', 'UNIT1 토출 SENSOR 고장 신호(UNIT1 Discharge Sensor Fault)', '1 : UNIT1 토출 센서 이상 발생, 0 : 정상', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'U1DSENSF = UNIT1 토출 SENSOR 고장 신호(UNIT1 Discharge Sensor Fault). 1 : UNIT1 토출 센서 이상 발생, 0 : 정상', '우진200량-3단계'), ('b2dcc92f-4cdc-4f36-876c-fc8dfc3682f3', '1077', 'PEI2-4E ', '4호차 2위 비상인터폰 종료상태(PASSENGER EMERGENCY INTERCOM 2-4 END)', '1 : 연결됨, 0 : 연결안됨', 'Woojin', 'TRS', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'PEI2-4E = 4호차 2위 비상인터폰 종료상태(PASSENGER EMERGENCY INTERCOM 2-4 END). 1 : 연결됨, 0 : 연결안됨', '우진200량-3단계'), ('b2e7b797-dfba-472b-a3c5-93c62b838316', '509', 'U1DSP2LP ', 'UNIT1 압력스위치2 LP 신호(UNIT1 Differential Pressure Switch2 Low Pressure)', '1 : UNIT1 DPS2 LP 고장, 0 : 정상', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'U1DSP2LP = UNIT1 압력스위치2 LP 신호(UNIT1 Differential Pressure Switch2 Low Pressure). 1 : UNIT1 DPS2 LP 고장, 0 : 정상', '우진200량-3단계'), ('b2fbfc2f-08dd-49a0-ae38-5129423a479b', '156', 'SBRCOCK ', '상용제동 차단 코크 스위치 미동작(NO SERVICE BRAKE CUT-OUT COCK)', 'SB cock cutout 시 : 0, 그 외의 경우 : 1', 'Woojin', 'M1', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'SBRCOCK = 상용제동 차단 코크 스위치 미동작(NO SERVICE BRAKE CUT-OUT COCK). SB cock cutout 시 : 0, 그 외의 경우 : 1', '우진200량-3단계'), ('b31ce6b6-3da7-461a-ab8c-9f255cf76cc6', '455', 'PA_CAB ', '운전실간 통화 동작 정보(PUBLIC ADDRESS-CAB)', '0 : 운전실간 통화 미 동작, 1 : 운전실간 통화 동작', 'Woojin', 'AVC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'PA_CAB = 운전실간 통화 동작 정보(PUBLIC ADDRESS-CAB). 0 : 운전실간 통화 미 동작, 1 : 운전실간 통화 동작', '우진200량-3단계'), ('b37e6832-6059-4548-9f77-43b548912b75', '699', 'ESLVD ', '가선 저전압 검지(Line Low Voltage)', '0 : 정상, 1 : 고장검지', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'ESLVD = 가선 저전압 검지(Line Low Voltage). 0 : 정상, 1 : 고장검지', '우진200량-3단계'), ('b41c47d2-1e6a-4725-8e01-2f5b108ad1d3', '662', 'FSB ', 'Full Service Brake 상태(Full Service Brake)', '0 : Normal 상태 1 : FSB 체결상태', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'FSB = Full Service Brake 상태(Full Service Brake). 0 : Normal 상태 1 : FSB 체결상태', '우진200량-3단계'), ('b45312c0-1e41-477e-a543-5f656b72cd08', '248', 'EDF ', '단부도어 고장(END DOOR FAULT)', '그 외의 경우 : 0, 고장시 : 1', 'Woojin', 'T1', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'EDF = 단부도어 고장(END DOOR FAULT). 그 외의 경우 : 0, 고장시 : 1', '우진200량-3단계'), ('b495eaac-66a3-4b31-bde3-54c762faff9b', '35', 'L_DORPBD ', '오른쪽 출입문 열림버튼 (Door Open Right Push Button Data)', '1초 안에 50ms 단위로 체크, 한번이라도 검지되면 ON으로 1이 올라옴.', 'Woojin', '출입문 50ms', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'L_DORPBD = 1초 안에 50ms 단위로 체크, 한번이라도 검지되면 ON으로 1이 올라옴.', '우진200량-3단계'), ('b4a50bbe-15a0-4003-9bc2-784273424075', '212', 'BCN ', '제동 회로의 회로차단기 상태(BRAKE CIRCUIT BREAKER CLOSED)', '트립시 : 0, 정상시 : 1', 'Woojin', 'M2', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'BCN = 제동 회로의 회로차단기 상태(BRAKE CIRCUIT BREAKER CLOSED). 트립시 : 0, 정상시 : 1', '우진200량-3단계'), ('b4ceb225-c999-47d0-9e78-a1862f0e2ca2', '763', 'INV2OV ', '인버터2 입력 과전압 검지(INV2 Over Voltage)', '0 : 이외의 조건, 1 : AC 출력 과전압 검지 시', 'Woojin', 'SIV', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'INV2OV = 인버터2 입력 과전압 검지(INV2 Over Voltage). 0 : 이외의 조건, 1 : AC 출력 과전압 검지 시', '우진200량-3단계'), ('b53c972e-d875-402d-a66f-5e02dd8ce0e0', '657', 'TBSD ', '후진검지(Train Backward Speed Detect)', '0 : Normal 상태 1 : 후진검지', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'TBSD = 후진검지(Train Backward Speed Detect). 0 : Normal 상태 1 : 후진검지', '우진200량-3단계'), ('b588ae4a-0a51-478f-a31b-6b5ec45d02b3', '380', 'DSTCODE ', '종착역 번호(DESTINATION CODE)', '1~255', 'Woojin', 'AVC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'DSTCODE = 종착역 번호(DESTINATION CODE). 1~255', '우진200량-3단계'), ('b588e704-ebac-4d0d-86ff-b837cef03b60', '589', 'PECUF ', 'TCMS 파트너차 ECU고장에 대한 Feedback신호(Partner ECU Fault)', '0 : 정상, 1 : 파트너차 ECU 고장', 'Woojin', 'BECU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'PECUF = TCMS 파트너차 ECU고장에 대한 Feedback신호(Partner ECU Fault). 0 : 정상, 1 : 파트너차 ECU 고장', '우진200량-3단계'), ('b5b8dd77-522a-4dfa-819d-8172c9c9703e', '995', 'SCAM1-2F ', '2호차 3번 CCTV 카메라 고장상태(SALOON CAMERA 3-2 FAULT)', '0 : 정상 상태 (상시 녹화 중), 1 : 카메라 고장 시', 'Woojin', 'NVR', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'SCAM1-2F = 2호차 3번 CCTV 카메라 고장상태(SALOON CAMERA 3-2 FAULT). 0 : 정상 상태 (상시 녹화 중), 1 : 카메라 고장 시', '우진200량-3단계'), ('b5c7d611-14de-4abb-b8cd-7d8b30de2c19', '352', 'SH_STOP1 ', '정위치 지점 도착 전 (-50cm 이내) 정차 시(Minor Short Stop Error)', '미달 정차 아님 : 0, 미달 정차 : 1', 'Woojin', 'ATC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'SH_STOP1 = 정위치 지점 도착 전 (-50cm 이내) 정차 시(Minor Short Stop Error). 미달 정차 아님 : 0, 미달 정차 : 1', '우진200량-3단계'), ('b677099e-ecf0-47c7-bfc1-2cc3453e464e', '150', 'LIUBKUP ', '내부 절체용(LIU1/LIU2) (LIU2 BACKUP COMMAND)', '그 외의 경우 : 0, 절체시 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'LIUBKUP = 내부 절체용(LIU1/LIU2) (LIU2 BACKUP COMMAND). 그 외의 경우 : 0, 절체시 : 1', '우진200량-3단계'), ('b685fc21-ec72-4993-8046-01b03e1188c5', '871', 'OOL ', '출력 과부하(Output Over Load)', '1 : 고장, 0 : 정상', 'Woojin', 'CMSB', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'OOL = 출력 과부하(Output Over Load). 1 : 고장, 0 : 정상', '우진200량-3단계'), ('b6bcc01a-7d73-425c-8be3-bf2361a4cbd1', '629', 'INVCUT ', '인버터 중고장(INVERTER Cutout)', '0 : 정상 1 : 록 아웃(Lock-out)', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'INVCUT = 인버터 중고장(INVERTER Cutout). 0 : 정상 1 : 록 아웃(Lock-out)', '우진200량-3단계'), ('b6c6b1df-5494-4d92-afd9-75738879266d', '949', 'RMD3-5F ', '노선안내표시기3-5 통신 상태(ROUTE MAP DISPLAY 3-5 FAULT)', '0 : 통신정상, 1 : 통신고장', 'Woojin', 'PIC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'RMD3-5F = 노선안내표시기3-5 통신 상태(ROUTE MAP DISPLAY 3-5 FAULT). 0 : 통신정상, 1 : 통신고장', '우진200량-3단계'), ('b72108b1-bc06-4e53-b50e-68ed49e8dd2e', '195', 'PANUPR ', '판토 상승 계전기(PANTOGRAPH UP RELAY)', '그 외의 경우 : 0, 판토상승시 : 1', 'Woojin', 'M1', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'PANUPR = 판토 상승 계전기(PANTOGRAPH UP RELAY). 그 외의 경우 : 0, 판토상승시 : 1', '우진200량-3단계'), ('b77c02eb-549a-4437-ba12-3fb818930265', '625', '데이터 정의BCP ', null, null, 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', '데이터 정의BCP = DATA TYPE', '우진200량-3단계'), ('b88c8c7a-893b-48b7-9bf7-a8659b88c5bb', '747', 'T_START ', '시험 시작 응답(Test Start)', '0 : 이외의 조건, 1 : 시험시작응답', 'Woojin', 'SIV', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'T_START = 시험 시작 응답(Test Start). 0 : 이외의 조건, 1 : 시험시작응답', '우진200량-3단계'), ('b8a11d65-b487-422e-a933-c3f5d0feb979', '175', 'TCN ', '추진 회로의 회로차단기 상태(TRACTION CIRCUIT BREAKER CLOSED)', '트립시 : 0, 정상시 : 1', 'Woojin', 'M1', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'TCN = 추진 회로의 회로차단기 상태(TRACTION CIRCUIT BREAKER CLOSED). 트립시 : 0, 정상시 : 1', '우진200량-3단계'), ('b8c59bda-de93-45ec-a586-8284d250f60f', '822', 'DFO ', '도어 열림 또는 닫힘 중 장애물 감지 상태(Door Fully Open)', '0 : 정상 1 : 장애물 감지', 'Woojin', 'DCU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'DFO = 도어 열림 또는 닫힘 중 장애물 감지 상태(Door Fully Open). 0 : 정상 1 : 장애물 감지', '우진200량-3단계'), ('b8e72f7e-a7ba-415c-8a92-5f0be6b8d247', '1152', 'DDS3-5F ', '5호차 미세먼지센서3 고장상태(Dust Detector Sensor AP3 Car5 Fault)', '1 : 고장, 0 : 정상', 'Woojin', 'AIRP', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'DDS3-5F = 5호차 미세먼지센서3 고장상태(Dust Detector Sensor AP3 Car5 Fault). 1 : 고장, 0 : 정상', '우진200량-3단계'), ('b901e656-d73a-40ce-9e7d-7b7d5d5d155d', '113', 'DNOBSW ', '출입문 장애물 없음(DOOR NOT OBSRACLE)', '그 외의 경우 : 0, 스위치 ON시 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'DNOBSW = 출입문 장애물 없음(DOOR NOT OBSRACLE). 그 외의 경우 : 0, 스위치 ON시 : 1', '우진200량-3단계'), ('b943c1b6-5bd3-490e-bd81-57b0d99f5fae', '1018', 'SCAM2-2R ', '2호차 2번 CCTV 카메라 녹화중(SALOON CAMERA 2-2 RECORD)', '0 : 이외의 조건, 1 : 이벤트 녹화 중', 'Woojin', 'NVR', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'SCAM2-2R = 2호차 2번 CCTV 카메라 녹화중(SALOON CAMERA 2-2 RECORD). 0 : 이외의 조건, 1 : 이벤트 녹화 중', '우진200량-3단계'), ('ba06f8c7-fa39-4c4b-8d9b-a17733477cfd', '887', 'MAN_SW ', '매뉴얼 스위치 상태(Manual Switch)', '0 : OFF, 1 : ON', 'Woojin', 'BMS', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'MAN_SW = 매뉴얼 스위치 상태(Manual Switch). 0 : OFF, 1 : ON', '우진200량-3단계'), ('ba734760-9e09-4040-b97c-5c1f8598144f', '1022', 'SCAM1-1R ', '1호차 3번 CCTV 카메라 녹화중(SALOON CAMERA 3-1 RECORD)', '0 : 이외의 조건, 1 : 이벤트 녹화 중', 'Woojin', 'NVR', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'SCAM1-1R = 1호차 3번 CCTV 카메라 녹화중(SALOON CAMERA 3-1 RECORD). 0 : 이외의 조건, 1 : 이벤트 녹화 중', '우진200량-3단계'), ('ba81ad65-3db8-4ac3-9fbd-65ccdff35e63', '991', 'FCAM1F ', '1호차 전면 카메라 고장상태(FRONT CAMERA 1 FAULT)', '0 : 이외의 조건, 1 : 전면 카메라 고장 시', 'Woojin', 'NVR', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'FCAM1F = 1호차 전면 카메라 고장상태(FRONT CAMERA 1 FAULT). 0 : 이외의 조건, 1 : 전면 카메라 고장 시', '우진200량-3단계'), ('ba96aa28-7982-4530-aeca-6345f2e0f087', '712', 'FCLCD ', 'FC 용량 저하(FC Low Voltage Detect)', '0 : 정상, 1 : 고장검지', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'FCLCD = FC 용량 저하(FC Low Voltage Detect). 0 : 정상, 1 : 고장검지', '우진200량-3단계'), ('ba9ff998-2ee1-418e-91ff-2bf26ece5443', '122', 'DOLPBS ', '좌측 출입문 열림(사이드패널)(DOORS OPEN LEFT(SIDE PANEL))', '그 외의 경우 : 0, 스위치 ON시 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'DOLPBS = 좌측 출입문 열림(사이드패널)(DOORS OPEN LEFT(SIDE PANEL)). 그 외의 경우 : 0, 스위치 ON시 : 1', '우진200량-3단계'), ('bb20a36c-0f26-4fae-865e-add607c7d2b7', '748', 'FT_OK ', 'SIV의 기본시험2 주파수(f)의 결과를 송신(Frequency Test OK)', '0 : 이외의 조건, 1 : OK 시', 'Woojin', 'SIV', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'FT_OK = SIV의 기본시험2 주파수(f)의 결과를 송신(Frequency Test OK). 0 : 이외의 조건, 1 : OK 시', '우진200량-3단계'), ('bb246b02-9857-413b-859f-49d58df47df6', '9', 'TC2HCR ', 'TC2 차량 선두차(TC2 HeadCarRelay)', null, 'Woojin', 'TIB', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'TC2HCR = TC2 차량 선두차(TC2 HeadCarRelay)', '우진200량-3단계'), ('bb6bbc7e-76be-4193-a253-ac08418a782f', '1125', 'COOLF ', '냉방시험 NG상태(Cool Fault)', '1 : 냉방시험NG, 0 : 정상, Default : 0', 'Woojin', 'CHVAC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'COOLF = 냉방시험 NG상태(Cool Fault). 1 : 냉방시험NG, 0 : 정상, Default : 0', '우진200량-3단계'), ('bc2a6bad-64cf-4c17-940e-ccff1acea146', '456', 'PA_FIRE ', '화재방송 동작 정보(PUBLIC ADDRESS FIRE)', '0 : 화재방송 미 동작, 1 : 화재방송 동작', 'Woojin', 'AVC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'PA_FIRE = 화재방송 동작 정보(PUBLIC ADDRESS FIRE). 0 : 화재방송 미 동작, 1 : 화재방송 동작', '우진200량-3단계'), ('bc36335c-4a3d-4ec0-95f7-04508d8ed9d2', '77', 'RO_R1 ', '기존차고장 -> 신차 구원(RESCUE OPERATION BL BY NBL (R1))', '그 외의 경우 : 0, 스위치 조작시 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'RO_R1 = 기존차고장 -> 신차 구원(RESCUE OPERATION BL BY NBL (R1)). 그 외의 경우 : 0, 스위치 조작시 : 1', '우진200량-3단계'), ('bc52c98d-f33f-4260-bef8-8cda3ec864de', '118', 'DCRPBS ', '우측 출입문 닫힘(사이드패널)(DOORS CLOSE RIGHT(SIDE PANEL))', '그 외의 경우 : 0, 스위치 ON시 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'DCRPBS = 우측 출입문 닫힘(사이드패널)(DOORS CLOSE RIGHT(SIDE PANEL)). 그 외의 경우 : 0, 스위치 ON시 : 1', '우진200량-3단계'), ('bcf5544b-2dff-413d-abad-e45d748da59b', '654', 'EDP1 ', 'TC1 방향 비상구원 Powering(EOMODE Powering TC1)', '0 : Normal 상태 1 : 비상구원운전 TC1방향 견인모드', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'EDP1 = TC1 방향 비상구원 Powering(EOMODE Powering TC1). 0 : Normal 상태 1 : 비상구원운전 TC1방향 견인모드', '우진200량-3단계'), ('bda3c93e-1239-4cea-a090-2cf417534371', '130', 'DRORPBD ', '우측 출입문 재열림(데스크)(DOORS REOPEN RIGHT(DESK))', '그 외의 경우 : 0, 스위치 ON시 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'DRORPBD = 우측 출입문 재열림(데스크)(DOORS REOPEN RIGHT(DESK)). 그 외의 경우 : 0, 스위치 ON시 : 1', '우진200량-3단계'), ('bda66db5-59c8-47d9-86dc-624d78126862', '552', 'FADAMPOP ', '신선공기 댐퍼 열림 시(Fresh Air Damper Open)', '1 : 열림, 0 : 닫힘', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'FADAMPOP = 신선공기 댐퍼 열림 시(Fresh Air Damper Open). 1 : 열림, 0 : 닫힘', '우진200량-3단계'), ('bda80b2f-75db-4110-ba61-86214c6df898', '218', 'EDF ', '단부도어 고장(END DOOR FAULT)', '그 외의 경우 : 0, 고장시 : 1', 'Woojin', 'M2', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'EDF = 단부도어 고장(END DOOR FAULT). 그 외의 경우 : 0, 고장시 : 1', '우진200량-3단계'), ('bdd737c1-0c07-4d4e-92a0-b64293f0f92b', '499', 'U2EF1OL ', 'UNIT2 증발기1 과부하 신호(UNIT2 Evaporator Fan1 Over Load)', '1 : 과부하, 0 : 정상', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'U2EF1OL = UNIT2 증발기1 과부하 신호(UNIT2 Evaporator Fan1 Over Load). 1 : 과부하, 0 : 정상', '우진200량-3단계'), ('bdff914f-e559-4d3d-af4a-cffaadff9888', '994', 'SCAM2-2F ', '2호차 2번 CCTV 카메라 고장상태(SALOON CAMERA 2-2 FAULT)', '0 : 정상 상태 (상시 녹화 중), 1 : 카메라 고장 시', 'Woojin', 'NVR', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'SCAM2-2F = 2호차 2번 CCTV 카메라 고장상태(SALOON CAMERA 2-2 FAULT). 0 : 정상 상태 (상시 녹화 중), 1 : 카메라 고장 시', '우진200량-3단계'), ('be039809-5e6a-41b9-9695-2a313c97a189', '440', 'PEI1-4 ', '비상인터폰 호출 위치 CAR 4 1위(PASSENGER EMERGENCY INTERCOM 1-4 CALL)', '0 : 미호출, 1 : 호출', 'Woojin', 'AVC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'PEI1-4 = 비상인터폰 호출 위치 CAR 4 1위(PASSENGER EMERGENCY INTERCOM 1-4 CALL). 0 : 미호출, 1 : 호출', '우진200량-3단계'), ('bf13ca39-fdba-4436-84a5-c179dbe89644', '820', 'CPOVF ', '차량으로부터 인가되는 공급전원이 125Vdc 이상(High voltage)', '0 : 정상 1 : 고전압', 'Woojin', 'DCU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'CPOVF = 차량으로부터 인가되는 공급전원이 125Vdc 이상(High voltage). 0 : 정상 1 : 고전압', '우진200량-3단계'), ('bf8630c7-ddae-40a0-8b3e-040ad79d61da', '225', 'SOTS2 ', '열차분리검지 2(SEPARATION OF TRAIN SET2)', '그 외의 경우 : 1, 고장시 : 0', 'Woojin', 'M2', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'SOTS2 = 열차분리검지 2(SEPARATION OF TRAIN SET2). 그 외의 경우 : 1, 고장시 : 0', '우진200량-3단계'), ('bfa7da73-51b7-4080-98e1-6465c92bfb16', '445', 'PEI2-7 ', '비상인터폰 호출 위치 CAR 7 2위(PASSENGER EMERGENCY INTERCOM 2-7 CALL)', '0 : 미호출, 1 : 호출', 'Woojin', 'AVC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'PEI2-7 = 비상인터폰 호출 위치 CAR 7 2위(PASSENGER EMERGENCY INTERCOM 2-7 CALL). 0 : 미호출, 1 : 호출', '우진200량-3단계'), ('bfedf113-7a5c-414a-810d-bc19578082af', '635', 'PBLOCK ', '추진 차단(Powering Block)', '0 : Normal 상태 1 : 보호검지 또는 Cut-out에 의해 역행동작을 하지 않을 때', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'PBLOCK = 추진 차단(Powering Block). 0 : Normal 상태 1 : 보호검지 또는 Cut-out에 의해 역행동작을 하지 않을 때', '우진200량-3단계'), ('c06f51df-f900-4ff7-8cb6-247ca46cbdfc', '1015', 'SCAM2-7F ', '7호차 2번 CCTV 카메라 고장상태(SALOON CAMERA 2-7 FAULT)', '0 : 정상 상태 (상시 녹화 중), 1 : 카메라 고장 시', 'Woojin', 'NVR', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'SCAM2-7F = 7호차 2번 CCTV 카메라 고장상태(SALOON CAMERA 2-7 FAULT). 0 : 정상 상태 (상시 녹화 중), 1 : 카메라 고장 시', '우진200량-3단계'), ('c09e22bc-16f1-470a-ac6f-49a9baf2ab31', '147', 'DOL ', '왼쪽 도어 열림(DOOR OPEN LEFT)', '그 외의 경우 : 0, 좌측 출입문 열림시 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'DOL = 왼쪽 도어 열림(DOOR OPEN LEFT). 그 외의 경우 : 0, 좌측 출입문 열림시 : 1', '우진200량-3단계'), ('c0e8829b-3089-4dc0-a13b-dff96274ee11', '173', 'P2PSR ', '판토2 상승상태 (PANPS2)(PANTOGRAPH 2 UP)', '그 외의 경우 : 0, 판토상승시 : 1', 'Woojin', 'M1', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'P2PSR = 판토2 상승상태 (PANPS2)(PANTOGRAPH 2 UP). 그 외의 경우 : 0, 판토상승시 : 1', '우진200량-3단계'), ('c1350567-b728-4bae-b296-da7f4cac8129', '450', 'PEI2-2 ', '비상인터폰 호출 위치 CAR 2 2위(PASSENGER EMERGENCY INTERCOM 2-2 CALL)', '0 : 미호출, 1 : 호출', 'Woojin', 'AVC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'PEI2-2 = 비상인터폰 호출 위치 CAR 2 2위(PASSENGER EMERGENCY INTERCOM 2-2 CALL). 0 : 미호출, 1 : 호출', '우진200량-3단계'), ('c1bad32f-dc3c-4ef5-8f42-df1822b8c023', '126', 'PSDCO ', 'PSD 닫힘 출력(PSD CLOSE OUTPUT)', '그 외의 경우 : 0, PSD 닫힘 상태시 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'PSDCO = PSD 닫힘 출력(PSD CLOSE OUTPUT). 그 외의 경우 : 0, PSD 닫힘 상태시 : 1', '우진200량-3단계'), ('c1d606a7-472e-4d25-9129-b44713a4d1d9', '373', 'DCW_SDR ', '출입문 닫힘 예고 신호(Door Close Warning)', '0 : DCW OFF, 1 : 출입문 닫힘 예고', 'Woojin', 'AVC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'DCW_SDR = 출입문 닫힘 예고 신호(Door Close Warning). 0 : DCW OFF, 1 : 출입문 닫힘 예고', '우진200량-3단계'), ('c2d1290c-c9ed-46b9-b263-cd559021931b', '1168', 'AP3-2S ', '2호차 공기정화기3 동작상태(Air Purifier3 Car2 State)', '0 : OFF, 1 : 약, 2 : 중, 3 : 강', 'Woojin', 'AIRP', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'AP3-2S = 2호차 공기정화기3 동작상태(Air Purifier3 Car2 State). 0 : OFF, 1 : 약, 2 : 중, 3 : 강', '우진200량-3단계'), ('c2dbc5ac-4923-45c3-bfb8-1cfb3bba4acc', '410', 'AMP2-4F ', 'T1 (CAR 4) AMP 2 고장 정보(AMPLIFIER 2-4 FAULT)', '0 : 정상, 1 : 고장', 'Woojin', 'AVC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'AMP2-4F = T1 (CAR 4) AMP 2 고장 정보(AMPLIFIER 2-4 FAULT). 0 : 정상, 1 : 고장', '우진200량-3단계'), ('c2ee96ae-9133-4725-8414-2f0317024b50', '914', 'DCW ', '출입문 닫힘 예고 신호(DOOR CLOSE WARNING)', '0 : 이외의 조건, 1 : 출입문 닫힘 예고 신호', 'Woojin', 'PIC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'DCW = 출입문 닫힘 예고 신호(DOOR CLOSE WARNING). 0 : 이외의 조건, 1 : 출입문 닫힘 예고 신호', '우진200량-3단계'), ('c3064e78-2442-4683-9709-7c3b14f2c9c1', '510', 'U2DSP1HP ', 'UNIT2 압력스위치1 HP 신호(UNIT2 Differential Pressure Switch1 High Pressure)', '1 : UNIT2 DPS1 HP 고장, 0 : 정상', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'U2DSP1HP = UNIT2 압력스위치1 HP 신호(UNIT2 Differential Pressure Switch1 High Pressure). 1 : UNIT2 DPS1 HP 고장, 0 : 정상', '우진200량-3단계'), ('c32a5ac8-f117-41e0-9196-8aa4c7c7caba', '310', 'ATCCODE ', 'ATC로부터 수신받은 속도코드(ATC Speed Code)', '02코드(Nocode) : 0, 01코드(0Km/h) : 1, 25코드(25Km/h) : 2, 40코드(40Km/h) : 3, 55코드(55Km/h) : 4, 65코드(65Km/h) : 5, 75코드(75Km/h) : 6, D코드(열차검지) : 7, DE(Door East) : 8, DW(Door West) : 9, Other : None', 'Woojin', 'ATC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'ATCCODE = ATC로부터 수신받은 속도코드(ATC Speed Code). 02코드(Nocode) : 0, 01코드(0Km/h) : 1, 25코드(25Km/h) : 2, 40코드(40Km/h) : 3, 55코드(55Km/h) : 4, 65코드(65Km/h) : 5, 75코드(75Km/h) : 6, D코드(열차검지) : 7, DE(Door East) : 8, DW(Door West) : 9, Other : None', '우진200량-3단계'), ('c377ba6b-e71e-49ae-887f-5b38567ee663', '140', 'SIVOFF ', '보조전원장치 정지(SIV OFF)', '그 외의 경우 : 0, SIV OFF시 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'SIVOFF = 보조전원장치 정지(SIV OFF). 그 외의 경우 : 0, SIV OFF시 : 1', '우진200량-3단계'), ('c3d0ee44-614d-4a90-ae0e-daf83bd2594e', '1010', 'SCAM1-5F ', '5호차 3번 CCTV 카메라 고장상태(SALOON CAMERA 3-5 FAULT)', '0 : 정상 상태 (상시 녹화 중), 1 : 카메라 고장 시', 'Woojin', 'NVR', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'SCAM1-5F = 5호차 3번 CCTV 카메라 고장상태(SALOON CAMERA 3-5 FAULT). 0 : 정상 상태 (상시 녹화 중), 1 : 카메라 고장 시', '우진200량-3단계'), ('c3e9518c-de58-4632-b9d4-e29b3d018fc9', '495', 'T_COOL ', '냉방시험 항목 번호(Test Cooling Mode)', '1 : 냉방시험 결과 NG 모드, 0 : 냉방시험 결과 NG모드아님', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'T_COOL = 냉방시험 항목 번호(Test Cooling Mode). 1 : 냉방시험 결과 NG 모드, 0 : 냉방시험 결과 NG모드아님', '우진200량-3단계'), ('c4892885-e766-405c-ae54-b71a246e6fd0', '511', 'U2DSP1LP ', 'UNIT2 압력스위치1 LP 신호(UNIT2 Differential Pressure Switch1 Low Pressure)', '1 : UNIT2 DPS1 LP 고장, 0 : 정상', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'U2DSP1LP = UNIT2 압력스위치1 LP 신호(UNIT2 Differential Pressure Switch1 Low Pressure). 1 : UNIT2 DPS1 LP 고장, 0 : 정상', '우진200량-3단계'), ('c54ef828-67a3-43d6-a310-d9245caf95e6', '988', 'CCAM1R ', '1호차 운전실 카메라 이벤트 녹화상태(CAB CAMERA 1 RECORD)', '0 : 이외의 조건, 1 : 이벤트 녹화 중', 'Woojin', 'NVR', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'CCAM1R = 1호차 운전실 카메라 이벤트 녹화상태(CAB CAMERA 1 RECORD). 0 : 이외의 조건, 1 : 이벤트 녹화 중', '우진200량-3단계'), ('c55c8dfd-c667-4c4e-b0f5-33f92a414b92', '43', 'TCR ', '후부차량 릴레이(TAIL CONTROL RELAY)', '그 외의 경우 : 0, 후부차 취급시 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'TCR = 후부차량 릴레이(TAIL CONTROL RELAY). 그 외의 경우 : 0, 후부차 취급시 : 1', '우진200량-3단계'), ('c5897404-a6bf-4e68-bdee-ea622dca660d', '1193', 'AP2-8S ', '8호차 공기정화기2 동작상태(Air Purifier2 Car8 State)', '0 : OFF, 1 : 약, 2 : 중, 3 : 강', 'Woojin', 'AIRP', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'AP2-8S = 8호차 공기정화기2 동작상태(Air Purifier2 Car8 State). 0 : OFF, 1 : 약, 2 : 중, 3 : 강', '우진200량-3단계'), ('c5c905a9-a8ea-4dfc-9b31-d89f7699ae31', '205', 'CPRS ', '강제완해 스위치 동작(COMPULSORY RELEASE)', '그 외의 경우 : 0, 스위치 ON시 : 1', 'Woojin', 'M2', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'CPRS = 강제완해 스위치 동작(COMPULSORY RELEASE). 그 외의 경우 : 0, 스위치 ON시 : 1', '우진200량-3단계'), ('c5e0c236-b6bd-4183-9b1f-8fe137eee881', '713', 'BPD ', 'BRAKE PATTERN 이상검지(Braking Pattern Failure Detect)', '0 : 정상, 1 : 고장검지', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'BPD = BRAKE PATTERN 이상검지(Braking Pattern Failure Detect). 0 : 정상, 1 : 고장검지', '우진200량-3단계'), ('c63d0e1c-af02-42d9-ab3f-4bed64477541', '565', 'PVLF ', '응하중 비정상(Passenger Load Weight Fault)', '0 : 정상, 1 : 고장검지', 'Woojin', 'BECU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'PVLF = 응하중 비정상(Passenger Load Weight Fault). 0 : 정상, 1 : 고장검지', '우진200량-3단계'), ('c65966a5-5d45-4a87-bd09-f24f18037bfa', '710', 'PBRF ', '역행/회생 이상검지(Powering Braking Failure)', '0 : 정상, 1 : 고장검지', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'PBRF = 역행/회생 이상검지(Powering Braking Failure). 0 : 정상, 1 : 고장검지', '우진200량-3단계'), ('c6a3c773-86bb-4243-9ccc-91bae407fe42', '1183', 'AP4-6S ', '6호차 공기정화기4 동작상태(Air Purifier4 Car6 State)', '0 : OFF, 1 : 약, 2 : 중, 3 : 강', 'Woojin', 'AIRP', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'AP4-6S = 6호차 공기정화기4 동작상태(Air Purifier4 Car6 State). 0 : OFF, 1 : 약, 2 : 중, 3 : 강', '우진200량-3단계'), ('c6a5bf0c-1094-4742-a23b-ec89415cc59c', '1190', 'AP1-7S ', '7호차 공기정화기1 동작상태(Air Purifier1 Car7 State)', '0 : OFF, 1 : 약, 2 : 중, 3 : 강', 'Woojin', 'AIRP', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'AP1-7S = 7호차 공기정화기1 동작상태(Air Purifier1 Car7 State). 0 : OFF, 1 : 약, 2 : 중, 3 : 강', '우진200량-3단계'), ('c784c387-bb69-4c0b-8f60-cf986f7a887f', '1136', 'DDS3-1F ', '1호차 미세먼지센서3 고장상태(Dust Detector Sensor AP3 Car1 Fault)', '1 : 고장, 0 : 정상', 'Woojin', 'AIRP', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'DDS3-1F = 1호차 미세먼지센서3 고장상태(Dust Detector Sensor AP3 Car1 Fault). 1 : 고장, 0 : 정상', '우진200량-3단계'), ('c806c1f3-7731-4e6d-9a40-174727cbd8fb', '116', 'LFF2K ', '라인플로우 팬 접촉기 2 투입(LINE FLOW FANS CONTACTOR 2 CLOSED)', '그 외의 경우 : 0, 접촉기 ON시 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'LFF2K = 라인플로우 팬 접촉기 2 투입(LINE FLOW FANS CONTACTOR 2 CLOSED). 그 외의 경우 : 0, 접촉기 ON시 : 1', '우진200량-3단계'), ('c82feb3d-1146-4d34-8167-25fb7501a4cb', '317', 'P ', 'ATCATO의 Powering 출력 상태(Powering Command)', 'No Powering : 0, Powering : 1', 'Woojin', 'ATC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'P = ATCATO의 Powering 출력 상태(Powering Command). No Powering : 0, Powering : 1', '우진200량-3단계'), ('c833a837-27f7-4e6b-9c94-3bc032c4eb25', '372', 'DOW_SDR ', '출입문 열림 신호(Door Open Warning)', '0 : DOW OFF, 1 : 출입문 열림', 'Woojin', 'AVC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'DOW_SDR = 출입문 열림 신호(Door Open Warning). 0 : DOW OFF, 1 : 출입문 열림', '우진200량-3단계'), ('c852ad90-d874-4051-8a54-3a1b9ac79657', '959', 'RMD5-7F ', '노선안내표시기5-7 통신 상태(ROUTE MAP DISPLAY 5-7 FAULT)', '0 : 통신정상, 1 : 통신고장', 'Woojin', 'PIC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'RMD5-7F = 노선안내표시기5-7 통신 상태(ROUTE MAP DISPLAY 5-7 FAULT). 0 : 통신정상, 1 : 통신고장', '우진200량-3단계'), ('c8a5ec7a-04cb-4d29-9f45-be6dabb4599b', '706', 'LGD ', '주회로 접지검지(Line Grounding)', '0 : 정상, 1 : 고장검지', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'LGD = 주회로 접지검지(Line Grounding). 0 : 정상, 1 : 고장검지', '우진200량-3단계'), ('c8b8b286-490b-4511-b024-e80437445e41', '701', 'OVD1 ', 'FC 과전압 검지(Over Voltage Detect)', '0 : 정상, 1 : 고장검지', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'OVD1 = FC 과전압 검지(Over Voltage Detect). 0 : 정상, 1 : 고장검지', '우진200량-3단계'), ('c8c18670-4b47-4ac4-9183-cd956bc2f2a4', '1100', 'WATCHDOG ', '워치독(Watchdog Counter)', '(0~255)', 'Woojin', 'CHVAC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'WATCHDOG = 워치독(Watchdog Counter). (0~255)', '우진200량-3단계'), ('c8cf4843-45ce-4b4c-8860-1866dac462b3', '345', 'ATOLSPD ', 'ATO 목표 운행 속도 (CSC / TASC)(ATO Limited Speed)', '0~255, 1 km/h', 'Woojin', 'ATC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'ATOLSPD = ATO 목표 운행 속도 (CSC / TASC)(ATO Limited Speed). 0~255, 1 km/h', '우진200량-3단계'), ('c9004a7d-d8b3-4133-9032-c3bd0675be0d', '1014', 'SCAM3-7F ', '7호차 1번 CCTV 카메라 고장상태(SALOON CAMERA 1-7 FAULT)', '0 : 정상 상태 (상시 녹화 중), 1 : 카메라 고장 시', 'Woojin', 'NVR', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'SCAM3-7F = 7호차 1번 CCTV 카메라 고장상태(SALOON CAMERA 1-7 FAULT). 0 : 정상 상태 (상시 녹화 중), 1 : 카메라 고장 시', '우진200량-3단계'), ('c93085d6-6bc5-4296-9638-b78bd271b5f0', '229', 'LFF1CR ', 'LINE FLOW FANS CONTACTOR 1 ON 명령(LINE FLOW FANS CONTACTOR 1)', '그 외의 경우 : 0, 접촉기 ON시 : 1', 'Woojin', 'M2', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'LFF1CR = LINE FLOW FANS CONTACTOR 1 ON 명령(LINE FLOW FANS CONTACTOR 1). 그 외의 경우 : 0, 접촉기 ON시 : 1', '우진200량-3단계'), ('c99c2481-9cdf-496b-b517-a64ab364fae9', '1122', 'EFOL ', '증발기 과부하 상태(Evaporator Fan Over Load)', '1 : 과부하, 0 : 정상, Default : 0', 'Woojin', 'CHVAC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'EFOL = 증발기 과부하 상태(Evaporator Fan Over Load). 1 : 과부하, 0 : 정상, Default : 0', '우진200량-3단계'), ('c9ed1b5e-928b-47c0-98e8-b403faf50e50', '305', 'TRSIZE ', '열차 길이정보(Train Length)', '6량 : 0, 8량 : 1, 10량 : 2', 'Woojin', 'ATC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'TRSIZE = 열차 길이정보(Train Length). 6량 : 0, 8량 : 1, 10량 : 2', '우진200량-3단계'), ('c9fa8817-e9fe-45fc-8694-6481da4119a3', '512', 'U2DSP2HP ', 'UNIT2 압력스위치2 HP 신호(UNIT2 Differential Pressure Switch2 High Pressure)', '1 : UNIT2 DPS2 HP 고장, 0 : 정상', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'U2DSP2HP = UNIT2 압력스위치2 HP 신호(UNIT2 Differential Pressure Switch2 High Pressure). 1 : UNIT2 DPS2 HP 고장, 0 : 정상', '우진200량-3단계'), ('c9faf025-a47c-460d-96d5-6a07fcbc8fa3', '296', 'PRE_CODE_SDR ', '현재역 번호(Present Station)', '0 ~ 255', 'Woojin', 'ATC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'PRE_CODE_SDR = 현재역 번호(Present Station). 0 ~ 255', '우진200량-3단계'), ('ca4d2de4-4ac1-4a58-92df-e8f415d00297', '1211', 'ROMVER ', 'AIRP 장치의 소프트웨어 버전(ROM Version)', '0 ~ 255 (ver)', 'Woojin', 'AIRP', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'ROMVER = AIRP 장치의 소프트웨어 버전(ROM Version). 0 ~ 255 (ver)', '우진200량-3단계'), ('ca7e4a3d-80c1-45ac-b893-908e2f9b349d', '919', 'OP-PICF ', '반대편 PIC 통신 상태(OPPSITE PASSENGER INFORMATION CONTROLLER FAULT)', '0 : 통신정상, 1 : 통신고장', 'Woojin', 'PIC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'OP-PICF = 반대편 PIC 통신 상태(OPPSITE PASSENGER INFORMATION CONTROLLER FAULT). 0 : 통신정상, 1 : 통신고장', '우진200량-3단계'), ('ca9bb47f-ab65-4697-96d3-a064db6915ab', '1060', 'PEI2-5C ', '5호차 2위 비상인터폰 연결상태(PASSENGER EMERGENCY INTERCOM 2-5 CALL)', '1 : 연결됨, 0 : 연결안됨', 'Woojin', 'TRS', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'PEI2-5C = 5호차 2위 비상인터폰 연결상태(PASSENGER EMERGENCY INTERCOM 2-5 CALL). 1 : 연결됨, 0 : 연결안됨', '우진200량-3단계'), ('cb01bd67-eed3-4f60-a79e-80760d9ccf51', '257', 'ILCR3 ', 'DC 실내등 컨텍터 ON 명령(INTERIOR DC LIGHTS CONTACTOR)', '접촉기 ON시 : 0, 접촉기 OFF시 : 1', 'Woojin', 'T1', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'ILCR3 = DC 실내등 컨텍터 ON 명령(INTERIOR DC LIGHTS CONTACTOR). 접촉기 ON시 : 0, 접촉기 OFF시 : 1', '우진200량-3단계'), ('cb03d301-a5e5-4eda-9a7e-c8900fe520da', '599', 'ATO_FSB ', 'ATO요구 최대상용제동(ATO_Full Service Brake)', '0 : ATO-FSB 미수신, 1 : ATO-FBS 수신', 'Woojin', 'BECU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'ATO_FSB = ATO요구 최대상용제동(ATO_Full Service Brake). 0 : ATO-FSB 미수신, 1 : ATO-FBS 수신', '우진200량-3단계'), ('cb43e42e-4127-4b7a-9c6c-9f89aba718d1', '494', 'OPCMDFB ', '운전 Command Feedback(Operation Command FeedBack)', '0 : OFF 1 : 1/3 난방 2 : 2/3 난방 3 : 전난방 6 : 반냉 7 : 전냉 8 : 자동', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'OPCMDFB = 운전 Command Feedback(Operation Command FeedBack). 0 : OFF 1 : 1/3 난방 2 : 2/3 난방 3 : 전난방 6 : 반냉 7 : 전냉 8 : 자동 ', '우진200량-3단계'), ('cb60bbdd-02ea-44d4-a55e-90a4928a754d', '911', 'DOOR-L ', '선두차량의 좌측 출입문 열림/닫힘 정보(DOOR LEFT)', '0 : 이외의 조건, 1 : 좌측 출입문 전체 닫힘', 'Woojin', 'PIC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'DOOR-L = 선두차량의 좌측 출입문 열림/닫힘 정보(DOOR LEFT). 0 : 이외의 조건, 1 : 좌측 출입문 전체 닫힘', '우진200량-3단계'), ('cb61e30d-0a70-44bd-a541-47d5e8317f70', '319', 'OVSW ', '과속 경고 상태(OverSpeed Warning)', 'Overspeed Warning is not set : 0, Overspeed Warning is set : 1', 'Woojin', 'ATC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'OVSW = 과속 경고 상태(OverSpeed Warning). Overspeed Warning is not set : 0, Overspeed Warning is set : 1', '우진200량-3단계'), ('cb91e44d-6f8d-499a-bd89-2b87d9877d9d', '221', 'ILCR2 ', 'AC 실내등 컨텍터 2 ON 상태확인(CONTACTOR 2 INTERIOR LIGHTS CLOSED)', '그 외의 경우 : 0, 접촉기 ON시 : 1', 'Woojin', 'M2', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'ILCR2 = AC 실내등 컨텍터 2 ON 상태확인(CONTACTOR 2 INTERIOR LIGHTS CLOSED). 그 외의 경우 : 0, 접촉기 ON시 : 1', '우진200량-3단계'), ('cbe1a5e9-9958-4c86-83df-4637983b12c3', '569', 'AS1PSF ', '전두대차 AS 압력센서 고장(Air Spring1 Pressure Sensor Fault)', '0 : 정상, 1 : 고장검지', 'Woojin', 'BECU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'AS1PSF = 전두대차 AS 압력센서 고장(Air Spring1 Pressure Sensor Fault). 0 : 정상, 1 : 고장검지', '우진200량-3단계'), ('cbf17490-231b-4f3a-9cbc-ea5027aa6c11', '129', 'DORPBD ', '우측 출입문 열림(데스크)(DOORS OPEN RIGHT(DESK))', '그 외의 경우 : 0, 스위치 ON시 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'DORPBD = 우측 출입문 열림(데스크)(DOORS OPEN RIGHT(DESK)). 그 외의 경우 : 0, 스위치 ON시 : 1', '우진200량-3단계'), ('cc08f066-941e-4053-af3f-17976239cd31', '598', 'EO ', '비상운전모드(Emergency Operation Mode)', '0 : EO 미검지, 1 : EO 검지', 'Woojin', 'BECU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'EO = 비상운전모드(Emergency Operation Mode). 0 : EO 미검지, 1 : EO 검지', '우진200량-3단계'), ('cc950dce-e2fa-40ba-acff-ffb786765b33', '22', '다음역코드 ', '다음역코드', null, 'Woojin', 'TIB', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', '다음역코드 = 다음역코드', '우진200량-3단계'), ('ccb678ea-383c-46a4-ac6e-ac18a6f11b41', '80', 'PANDPB2 ', '판토 하강 데스크 스위치 동작 상태-2(PANTOGRAPH DOWN(RED))', '그 외의 경우 : 0, 스위치 ON시 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'PANDPB2 = 판토 하강 데스크 스위치 동작 상태-2(PANTOGRAPH DOWN(RED)). 그 외의 경우 : 0, 스위치 ON시 : 1', '우진200량-3단계'), ('cd028377-830a-45dc-9dc9-2f7bfe566974', '389', 'SOBOUT1F ', 'TC1 (CAR 1) SOB OUT(돌출형) 고장 정보(SIDE OPERATION BOX-OUT 1 FAULT)', '0 : 정상, 1 : 고장', 'Woojin', 'AVC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'SOBOUT1F = TC1 (CAR 1) SOB OUT(돌출형) 고장 정보(SIDE OPERATION BOX-OUT 1 FAULT). 0 : 정상, 1 : 고장', '우진200량-3단계'), ('cd0dda2b-4b23-4fb5-8f2d-1e5836dfac3c', '728', 'RETRY ', '탈조검지(Rotor Step Out Failure)', '0 : 정상, 1 : 고장검지', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'RETRY = 탈조검지(Rotor Step Out Failure). 0 : 정상, 1 : 고장검지', '우진200량-3단계'), ('cdbd6152-4902-4848-ab59-9b00e55dc4bc', '786', 'OUTF ', 'AC 출력 주파수 정보(AC Output Frequency)', '0~60Hz', 'Woojin', 'SIV', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'OUTF = AC 출력 주파수 정보(AC Output Frequency). 0~60Hz', '우진200량-3단계'), ('cdcc9c19-3c28-4b05-9801-18298e47fb9f', '564', 'REGF ', '회생제동 요구 비정상(Regenerative brake Fault)', '0 : 정상, 1 : 고장검지', 'Woojin', 'BECU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'REGF = 회생제동 요구 비정상(Regenerative brake Fault). 0 : 정상, 1 : 고장검지', '우진200량-3단계'), ('ce16bc8d-5df4-4a81-a2d0-88532e664fbc', '555', 'OUTTEMP ', 'CAR에 설치된 실외 온도 센서 값(TC CAR ANLY)(Outdoor Temperature)', '실외 온도 센서 값 -128~127, 유효범위 -30°C~+50°C', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'OUTTEMP = CAR에 설치된 실외 온도 센서 값(TC CAR ANLY)(Outdoor Temperature). 실외 온도 센서 값 -128~127, 유효범위 -30°C~+50°C', '우진200량-3단계'), ('ce314252-7ab6-4fc0-a2f4-be31555f8198', '811', 'WATCHDOG ', '워치독(Life Sign)', null, 'Woojin', 'FDU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'WATCHDOG = 워치독(Life Sign). ', '우진200량-3단계'), ('ce45bdea-f990-4f11-b206-8998b20203c0', '787', 'OUTV ', 'AC 출력 전압 정보(AC Output Voltage)', '0~750V', 'Woojin', 'SIV', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'OUTV = AC 출력 전압 정보(AC Output Voltage). 0~750V', '우진200량-3단계'), ('ce92f23a-0432-40ec-904f-c1855c492f80', '339', 'PRE_CODE ', '현재역 번호(Present Station)', '1 ~ 255', 'Woojin', 'ATC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'PRE_CODE = 현재역 번호(Present Station). 1 ~ 255 ', '우진200량-3단계'), ('cecac019-83cb-4ef5-8c1e-19f49435bfb5', '294', 'LDOP_SDR ', '좌측 출입문 열림상태(Left Door Open Status)', 'Left Door Opened : 1, Not Open : 0', 'Woojin', 'ATC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'LDOP_SDR = 좌측 출입문 열림상태(Left Door Open Status). Left Door Opened : 1, Not Open : 0', '우진200량-3단계'), ('cf58718b-98bf-4c73-b827-590c3835d0fc', '31', '열차번호 ', '열차번호', null, 'Woojin', 'TIB', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', '열차번호 = 열차번호', '우진200량-3단계'), ('cf68a375-33cd-4163-a91b-cf6051c20f56', '767', 'ACUV ', 'AC 출력 저전압 검지(AC Output Under Voltage)', '0 : 이외의 조건, 1 : FC1 입력 과전압 검지 시', 'Woojin', 'SIV', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'ACUV = AC 출력 저전압 검지(AC Output Under Voltage). 0 : 이외의 조건, 1 : FC1 입력 과전압 검지 시', '우진200량-3단계'), ('cfa2d629-32e7-4f75-b552-df167bf4e39b', '247', 'AC380_HN ', 'AC 380V NFB 트립(객실히터)(CIRCUIT BREAKERS 380V 60Hz CLOSED (HEATER))', '트립시 : 0, 정상시 : 1', 'Woojin', 'T1', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'AC380_HN = AC 380V NFB 트립(객실히터)(CIRCUIT BREAKERS 380V 60Hz CLOSED (HEATER)). 트립시 : 0, 정상시 : 1', '우진200량-3단계'), ('cfcc06fc-b599-4de0-a83a-592f8c41cc91', '245', 'AC380_EN ', 'AC 380V NFB 트립(OTHERS,ETC)(CIRCUIT BREAKERS 380V 60Hz CLOSED (OTHERS))', '트립시 : 0, 정상시 : 1', 'Woojin', 'T1', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'AC380_EN = AC 380V NFB 트립(OTHERS,ETC)(CIRCUIT BREAKERS 380V 60Hz CLOSED (OTHERS)). 트립시 : 0, 정상시 : 1', '우진200량-3단계'), ('cfd40ec0-0c49-4851-b7ff-509d1f6d1b60', '289', 'LFF1CR ', 'LINE FLOW FANS CONTACTOR 1 ON 명령(LINE FLOW FANS CONTACTOR 1)', '그 외의 경우 : 0, 접촉기 ON시 : 1', 'Woojin', 'T2', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'LFF1CR = LINE FLOW FANS CONTACTOR 1 ON 명령(LINE FLOW FANS CONTACTOR 1). 그 외의 경우 : 0, 접촉기 ON시 : 1', '우진200량-3단계'), ('d0492560-0a91-489d-a1fe-6f3b78422e47', '1103', 'DAMPOPEN ', '냉방장치의 댐퍼상태(Damper Open state)', '1 : 동작중, 0 : 중지상태, Default : 0', 'Woojin', 'CHVAC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'DAMPOPEN = 냉방장치의 댐퍼상태(Damper Open state). 1 : 동작중, 0 : 중지상태, Default : 0', '우진200량-3단계'), ('d0a18a6c-cf3c-4736-8fb0-272c4071ed55', '1129', 'OUTTEMP ', '실외 온도 센서값(Outdoor Temperature)', '-30℃ ~ +50℃', 'Woojin', 'CHVAC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'OUTTEMP = 실외 온도 센서값(Outdoor Temperature). -30℃ ~ +50℃', '우진200량-3단계'), ('d10895c4-df10-4978-9e48-92a414dd46bf', '1126', 'V380F ', '주전원 이상 상태(Voltage 380V Fault)', '1 : 주전원이상, 0 : 정상, Default : 0', 'Woojin', 'CHVAC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'V380F = 주전원 이상 상태(Voltage 380V Fault). 1 : 주전원이상, 0 : 정상, Default : 0', '우진200량-3단계'), ('d123d0cb-cda2-44b3-941b-3377fb2ae103', '946', 'RMD6-5F ', '노선안내표시기6-5 통신 상태(ROUTE MAP DISPLAY 6-5 FAULT)', '0 : 통신정상, 1 : 통신고장', 'Woojin', 'PIC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'RMD6-5F = 노선안내표시기6-5 통신 상태(ROUTE MAP DISPLAY 6-5 FAULT). 0 : 통신정상, 1 : 통신고장', '우진200량-3단계'), ('d13eecc2-adf6-44f7-8427-36a85857c2d0', '610', 'ACP ', 'AC 압력 값(Air Cylinder Pressure)', '0~765kpa', 'Woojin', 'BECU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'ACP = AC 압력 값(Air Cylinder Pressure). 0~765kpa', '우진200량-3단계'), ('d1753f86-9727-4277-9f25-7fde8e3d08a3', '1082', 'TM_VLD ', '시간 유효(Time Valide)', '1 : 표준시각 유효, 0 : 유효하지 않음', 'Woojin', 'TRS', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'TM_VLD = 시간 유효(Time Valide). 1 : 표준시각 유효, 0 : 유효하지 않음', '우진200량-3단계'), ('d17ad7f8-be90-4656-9fdc-59dce9394886', '1106', 'CFON ', '냉방장치의 응축기 동작상태(Condencer Fan ON)', '1 : 동작중, 0 : 중지상태, Default : 0', 'Woojin', 'CHVAC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'CFON = 냉방장치의 응축기 동작상태(Condencer Fan ON). 1 : 동작중, 0 : 중지상태, Default : 0', '우진200량-3단계'), ('d17b99c0-1887-4f64-afb7-c9b880413f7b', '797', 'FDS4OP ', '차량별 사용되는 감지기 수량에 따라 해당 감지기의 사용유무를 나타낸다. 부산1호선의 경우 네 개의 감지기로 고정.(Fire Detector State4 Operation)', '0 : 사용하지 않음, 1 : 사용함', 'Woojin', 'FDU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'FDS4OP = 차량별 사용되는 감지기 수량에 따라 해당 감지기의 사용유무를 나타낸다. 부산1호선의 경우 네 개의 감지기로 고정.(Fire Detector State4 Operation). 0 : 사용하지 않음, 1 : 사용함', '우진200량-3단계'), ('d1fbc873-0c52-4cd4-8606-07362b214dee', '330', 'BERTH ', '열차 역사 정위치정차(Train Berth)', '열차 정위치 정차 실패 : 0, 열차 정위치 정차 성공 : 1', 'Woojin', 'ATC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'BERTH = 열차 역사 정위치정차(Train Berth). 열차 정위치 정차 실패 : 0, 열차 정위치 정차 성공 : 1', '우진200량-3단계'), ('d2275838-2ab0-40dc-9f26-9dd2f72313c4', '840', 'WATCHDOG ', '워치독(Life Sign)', null, 'Woojin', 'DCU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'WATCHDOG = 워치독(Life Sign). ', '우진200량-3단계'), ('d229609d-0d16-48fc-a059-07aebd178ea0', '1210', 'HUMID8 ', '8호차 객실 습도(room Humidity Car8)', '0 ~ 100 (%)', 'Woojin', 'AIRP', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'HUMID8 = 8호차 객실 습도(room Humidity Car8). 0 ~ 100 (%)', '우진200량-3단계'), ('d2ca2c79-e49f-4cb2-a322-b896dd2c4964', '881', 'CHK ', '충전 Contactor 상태 표시(Charge Contactor)', '0 : OFF, 1 : ON', 'Woojin', 'BMS', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'CHK = 충전 Contactor 상태 표시(Charge Contactor). 0 : OFF, 1 : ON', '우진200량-3단계'), ('d2de6d60-6ebb-4fc5-bfff-05a9be2df346', '70', 'ISBD ', '제동부족 감지 인통선 신호(INSUFFICIENT BRAKE DETECTED(ISBD))', '그 외의 경우 : 0, ISBD 검지 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'ISBD = 제동부족 감지 인통선 신호(INSUFFICIENT BRAKE DETECTED(ISBD)). 그 외의 경우 : 0, ISBD 검지 : 1', '우진200량-3단계'), ('d35b0db8-3c43-4ef5-bc8c-5339558dbe5b', '210', 'EMTR ', '비상판토 트립 동작 상태(NO EMERGENCY PANTOGRAPH TRIP)', '트립시 : 0, 정상시 : 1', 'Woojin', 'M2', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'EMTR = 비상판토 트립 동작 상태(NO EMERGENCY PANTOGRAPH TRIP). 트립시 : 0, 정상시 : 1', '우진200량-3단계'), ('d3918bf2-1861-412d-8555-b012101890d7', '226', 'SOTS1 ', '열차분리검지 1(SEPARATION OF TRAIN SET1)', '그 외의 경우 : 1, 고장시 : 0', 'Woojin', 'M2', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'SOTS1 = 열차분리검지 1(SEPARATION OF TRAIN SET1). 그 외의 경우 : 1, 고장시 : 0', '우진200량-3단계'), ('d3a67627-6492-4df4-afb7-54498a9b2298', '332', 'TACHO_R ', '신호장치 타코메타 이동 방향(Tacho Direction)', 'Forward : 0, Reverse : 1', 'Woojin', 'ATC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'TACHO_R = 신호장치 타코메타 이동 방향(Tacho Direction). Forward : 0, Reverse : 1', '우진200량-3단계'), ('d3f76fb2-1382-4ea3-a6a4-4d11973c0972', '387', 'AVC1F ', 'TC1 (CAR 1) AVC 고장 정보(AUDIO VIDEO CONTROLLER 1 FAULT)', '0 : 정상, 1 : 고장', 'Woojin', 'AVC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'AVC1F = TC1 (CAR 1) AVC 고장 정보(AUDIO VIDEO CONTROLLER 1 FAULT). 0 : 정상, 1 : 고장', '우진200량-3단계'), ('d4636b1d-998e-4a8f-a8dd-92befcff14f2', '189', 'SOTS2 ', '열차분리검지 2(SEPARATION OF TRAIN SET2)', '그 외의 경우 : 1, 고장시 : 0', 'Woojin', 'M1', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'SOTS2 = 열차분리검지 2(SEPARATION OF TRAIN SET2). 그 외의 경우 : 1, 고장시 : 0', '우진200량-3단계'), ('d467d6a8-88f4-4cdc-b690-957e10d5bef0', '115', 'LFFSW ', '운전석 라인플로우 팬 ON(LINE FLOW FANS ON(CAB))', '그 외의 경우 : 0, 접촉기 ON시 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'LFFSW = 운전석 라인플로우 팬 ON(LINE FLOW FANS ON(CAB)). 그 외의 경우 : 0, 접촉기 ON시 : 1', '우진200량-3단계'), ('d4858d15-4e19-4c4a-a3e3-8f69b7523f9c', '968', 'RMD2-8F ', '노선안내표시기2-8 통신 상태(ROUTE MAP DISPLAY 2-8 FAULT)', '0 : 통신정상, 1 : 통신고장', 'Woojin', 'PIC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'RMD2-8F = 노선안내표시기2-8 통신 상태(ROUTE MAP DISPLAY 2-8 FAULT). 0 : 통신정상, 1 : 통신고장', '우진200량-3단계'), ('d497a372-4d29-4535-a15e-617833f514bd', '702', 'ZVRD ', 'ZVR 이상검지(ZVR Fault)', '0 : 정상, 1 : 고장검지', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'ZVRD = ZVR 이상검지(ZVR Fault). 0 : 정상, 1 : 고장검지', '우진200량-3단계'), ('d4a4f5c8-6276-4b90-889f-24d6cd95f549', '750', 'VT_OK ', 'SIV의 기본시험1 전압(V)의 결과를 송신(Voltage Test OK)', '0 : 이외의 조건, 1 : OK 시', 'Woojin', 'SIV', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'VT_OK = SIV의 기본시험1 전압(V)의 결과를 송신(Voltage Test OK). 0 : 이외의 조건, 1 : OK 시', '우진200량-3단계'), ('d4bad744-222c-4cfb-9d3d-a96a0bc7ea33', '732', 'MCOKNC ', 'MCOK 투입불량(MCOK NO Close)', '0 : 정상, 1 : 고장검지', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'MCOKNC = MCOK 투입불량(MCOK NO Close). 0 : 정상, 1 : 고장검지', '우진200량-3단계'), ('d54a497e-90c8-47cf-9615-e3092beb7fb7', '365', 'CURCODE_SDR ', '현재역 번호(Current Code)', '1~255', 'Woojin', 'AVC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'CURCODE_SDR = 현재역 번호(Current Code). 1~255', '우진200량-3단계'), ('d59c291e-845c-40ff-9eac-0c5a0a7c9dc6', '1131', 'DDS4-2F ', '2호차 미세먼지센서4 고장상태(Dust Detector Sensor AP4 Car2 Fault)', '1 : 고장, 0 : 정상', 'Woojin', 'AIRP', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'DDS4-2F = 2호차 미세먼지센서4 고장상태(Dust Detector Sensor AP4 Car2 Fault). 1 : 고장, 0 : 정상', '우진200량-3단계'), ('d5b4bcb9-97c7-4dfe-9486-3736a3f5f84d', '1072', 'PEI1-1E ', '1호차 1위 비상인터폰 종료상태(PASSENGER EMERGENCY INTERCOM 1-1 END)', '1 : 연결됨, 0 : 연결안됨', 'Woojin', 'TRS', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'PEI1-1E = 1호차 1위 비상인터폰 종료상태(PASSENGER EMERGENCY INTERCOM 1-1 END). 1 : 연결됨, 0 : 연결안됨', '우진200량-3단계'), ('d5bad7c9-c126-43ec-814d-15e8948ceef5', '65', 'BRCOCK2 ', '제동 차단 코크3 스위치 미동작(BOGIE #2) (NO BRAKE CUT-OUT COCK BOGIE #2)', '그 외의 경우 : 0, BC cock cutout 시 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'BRCOCK2 = 제동 차단 코크3 스위치 미동작(BOGIE #2) (NO BRAKE CUT-OUT COCK BOGIE #2). 그 외의 경우 : 0, BC cock cutout 시 : 1', '우진200량-3단계'), ('d5c81ac9-22d1-4bed-89c5-bed2c0e730e0', '439', 'PEI1-5 ', '비상인터폰 호출 위치 CAR 5 1위(PASSENGER EMERGENCY INTERCOM 1-5 CALL)', '0 : 미호출, 1 : 호출', 'Woojin', 'AVC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'PEI1-5 = 비상인터폰 호출 위치 CAR 5 1위(PASSENGER EMERGENCY INTERCOM 1-5 CALL). 0 : 미호출, 1 : 호출', '우진200량-3단계'), ('d5d36278-739c-45b7-b8ea-669111051aed', '153', 'MF1D ', '메인퓨즈1 용단(MF1 DISCONNECTED)', '그 외의 경우 : 0, 퓨즈 용단시 : 1', 'Woojin', 'M1', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'MF1D = 메인퓨즈1 용단(MF1 DISCONNECTED). 그 외의 경우 : 0, 퓨즈 용단시 : 1', '우진200량-3단계'), ('d5f98632-aafd-4522-9b48-779101a366a4', '301', 'FORMNO ', '편성번호(Car Formation Number)', '0~255', 'Woojin', 'ATC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'FORMNO = 편성번호(Car Formation Number). 0~255', '우진200량-3단계'), ('d61d7790-765a-4022-b999-e905c2398ddc', '74', 'CMINVRUN ', 'CMSB 인버터 기동신호(INVERTER RUN FOR CMSB)', '그 외의 경우 : 0, 인버터 기동신호 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'CMINVRUN = CMSB 인버터 기동신호(INVERTER RUN FOR CMSB). 그 외의 경우 : 0, 인버터 기동신호 : 1', '우진200량-3단계'), ('d68fef87-98f9-4a8a-a07a-3c040a6e1f33', '912', 'DOOR-R ', '선두차량의 우측 출입문 열림/닫힘 정보(DOOR RIGHT)', '0 : 이외의 조건, 1 : 우측 출입문 전체 닫힘', 'Woojin', 'PIC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'DOOR-R = 선두차량의 우측 출입문 열림/닫힘 정보(DOOR RIGHT). 0 : 이외의 조건, 1 : 우측 출입문 전체 닫힘', '우진200량-3단계'), ('d6fe8e69-0882-4122-a4b4-c18afeb46c23', '990', 'CCAM8F ', '8호차 운전실 카메라 고장상태(CAB CAMERA 8 FAULT)', '0 : 이외의 조건, 1 : 운전실 카메라 고장 시', 'Woojin', 'NVR', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'CCAM8F = 8호차 운전실 카메라 고장상태(CAB CAMERA 8 FAULT). 0 : 이외의 조건, 1 : 운전실 카메라 고장 시', '우진200량-3단계'), ('d740bc57-de68-414a-bd02-c954089e8302', '288', 'LFF2CR ', 'LINE FLOW FANS CONTACTOR 2 ON 명령(LINE FLOW FANS CONTACTOR 2)', '그 외의 경우 : 0, 접촉기 ON시 : 1', 'Woojin', 'T2', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'LFF2CR = LINE FLOW FANS CONTACTOR 2 ON 명령(LINE FLOW FANS CONTACTOR 2). 그 외의 경우 : 0, 접촉기 ON시 : 1', '우진200량-3단계'), ('d78e633b-f2ec-41e8-900e-2a3e3eb4840d', '428', 'FDI8F ', 'TC2 (CAR 8) FDI 고장 정보(FRONT DESTINATION INDICATOR 8 FAULT)', '0 : 정상, 1 : 고장', 'Woojin', 'AVC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'FDI8F = TC2 (CAR 8) FDI 고장 정보(FRONT DESTINATION INDICATOR 8 FAULT). 0 : 정상, 1 : 고장', '우진200량-3단계'), ('d7d87e9b-5621-4e42-b601-44fa8e185c41', '890', 'FUSE ', '퓨즈 오픈(Fuse)', null, 'Woojin', 'BMS', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'FUSE = 퓨즈 오픈(Fuse). ', '우진200량-3단계'), ('d836841c-8573-48e4-a8b5-f75fa320e942', '479', 'OPMODE ', '운영모드(Operation Mode)', '1 : OP모드, 0 : OP모드 아님', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'OPMODE = 운영모드(Operation Mode). 1 : OP모드, 0 : OP모드 아님', '우진200량-3단계'), ('d84f73f5-0f9e-4cce-9e00-8763e5d72a6b', '139', 'LIU2AC ', 'TCMS 2중계 활성 신호(TCMS LIU2 Active)', '그 외의 경우 : 0, 2중계 활성화시 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'LIU2AC = TCMS 2중계 활성 신호(TCMS LIU2 Active). 그 외의 경우 : 0, 2중계 활성화시 : 1', '우진200량-3단계'), ('d8502a28-b49a-4383-a9c9-cc2dc38d9a21', '54', 'EBCOS ', '비상제동 차단 스위치(EMERGENCY BRAKE CUT-OUT)', '비상제동 차단 스위치 OFF : 0, 비상제동 차단 스위치 ON : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'EBCOS = 비상제동 차단 스위치(EMERGENCY BRAKE CUT-OUT). 비상제동 차단 스위치 OFF : 0, 비상제동 차단 스위치 ON : 1', '우진200량-3단계'), ('d8ee907d-3adb-47da-b761-347469af605b', '1130', 'EFCTEMP ', '증발기 코일온도 센서값(Evaporator Fan Coil Temperature)', '-30℃ ~ +65℃', 'Woojin', 'CHVAC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'EFCTEMP = 증발기 코일온도 센서값(Evaporator Fan Coil Temperature). -30℃ ~ +65℃', '우진200량-3단계'), ('d91058b0-d10b-4d58-9d31-cb04a5ed51a0', '855', 'GPSD1ONG ', '1계 지상 스크린도어 열림 NG(Ground PSD1 Open NG)', '1 : NG, 0 : 정상, Default : 0', 'Woojin', 'PSD', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'GPSD1ONG = 1계 지상 스크린도어 열림 NG(Ground PSD1 Open NG). 1 : NG, 0 : 정상, Default : 0', '우진200량-3단계'), ('db1aaab2-38cc-4664-804a-92b2b300d292', '490', 'T_STATE2 ', '자체 검사 OK모드(Test Execution status)', '1 : 시험중모드, 2 : 시험완료모드, 0 : 초기상태모드', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'T_STATE2 = 자체 검사 OK모드(Test Execution status). 1 : 시험중모드, 2 : 시험완료모드, 0 : 초기상태모드', '우진200량-3단계'), ('db1ae6c7-d6b4-49c1-97f0-3e0b173ebd77', '1165', 'AP2-1S ', '1호차 공기정화기2 동작상태(Air Purifier2 Car1 State)', '0 : OFF, 1 : 약, 2 : 중, 3 : 강', 'Woojin', 'AIRP', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'AP2-1S = 1호차 공기정화기2 동작상태(Air Purifier2 Car1 State). 0 : OFF, 1 : 약, 2 : 중, 3 : 강', '우진200량-3단계'), ('db1f82ab-6d1b-4f51-910b-d1094b98c350', '274', 'DC100N ', 'DC100V 회로차단기 상태(DC 100V CIRCUIT BREAKER CLOSED)', '트립시 : 0, 정상시 : 1', 'Woojin', 'T2', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'DC100N = DC100V 회로차단기 상태(DC 100V CIRCUIT BREAKER CLOSED). 트립시 : 0, 정상시 : 1', '우진200량-3단계'), ('dbf1ad42-9287-433c-bcb5-bb3ce79867a2', '28', '운전모드 ', '신호장치의 운전모드 단 FMC는 접점입력', null, 'Woojin', 'TIB', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', '운전모드 = 신호장치의 운전모드 단 FMC는 접점입력', '우진200량-3단계'), ('dca7f4b1-2982-4fae-9488-d4b736fb8344', '523', 'U1RSENSF ', 'UNIT1 리턴 SENSOR 고장 신호(UNIT1 Return Sensor Fault)', '1 : UNIT1 리턴 센서 이상 발생, 0 : 정상', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'U1RSENSF = UNIT1 리턴 SENSOR 고장 신호(UNIT1 Return Sensor Fault). 1 : UNIT1 리턴 센서 이상 발생, 0 : 정상', '우진200량-3단계'), ('dcfd5c8a-4fe6-45fb-ab07-bbb4fe64fb26', '548', '380LVF ', 'HVAC로부터 380V 고장 신호(380V Low Voltage Fault)', '1 : 380V 전원 미만, 0 : 정상', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', '380LVF = HVAC로부터 380V 고장 신호(380V Low Voltage Fault). 1 : 380V 전원 미만, 0 : 정상', '우진200량-3단계'), ('dcfd9cb1-67d0-4125-9adb-cefa06694daa', '1093', '데이터정의 ', '데이터 타입(DATA TYPE)', null, 'Woojin', 'EVR', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', '데이터정의 = 데이터 타입(DATA TYPE). ', '우진200량-3단계'), ('dd493eef-0872-4d95-83fc-8c32356185c0', '967', 'RMD3-8F ', '노선안내표시기3-8 통신 상태(ROUTE MAP DISPLAY 3-8 FAULT)', '0 : 통신정상, 1 : 통신고장', 'Woojin', 'PIC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'RMD3-8F = 노선안내표시기3-8 통신 상태(ROUTE MAP DISPLAY 3-8 FAULT). 0 : 통신정상, 1 : 통신고장', '우진200량-3단계'), ('dd67d3bf-d55c-4795-999e-11f45886bd3f', '469', 'LRR_SDR ', '연장급전상태에서 부하반감 상태(Load Reduction Relay)', '0 : 정지, 1 : 동작', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'LRR_SDR = 연장급전상태에서 부하반감 상태(Load Reduction Relay). 0 : 정지, 1 : 동작', '우진200량-3단계'), ('ddac9be7-389f-4988-8b54-a1d1edb8b145', '152', 'MF2D ', '메인퓨즈2 용단(MF2 DISCONNECTED)', '그 외의 경우 : 0, 퓨즈 용단시 : 1', 'Woojin', 'M1', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'MF2D = 메인퓨즈2 용단(MF2 DISCONNECTED). 그 외의 경우 : 0, 퓨즈 용단시 : 1', '우진200량-3단계'), ('de3ecd09-24a3-4efc-bf4b-f3b6529df7a7', '947', 'RMD5-5F ', '노선안내표시기5-5 통신 상태(ROUTE MAP DISPLAY 5-5 FAULT)', '0 : 통신정상, 1 : 통신고장', 'Woojin', 'PIC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'RMD5-5F = 노선안내표시기5-5 통신 상태(ROUTE MAP DISPLAY 5-5 FAULT). 0 : 통신정상, 1 : 통신고장', '우진200량-3단계'), ('de506592-b0df-4fd6-ad57-7a7dea8a4996', '315', 'DC ', 'ATCATO의 Door Close 출력 상태(Door Close Command)', 'No Door Close : 0, Door Close : 1', 'Woojin', 'ATC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'DC = ATCATO의 Door Close 출력 상태(Door Close Command). No Door Close : 0, Door Close : 1', '우진200량-3단계'), ('de620925-849a-46b4-a3d8-8cee865db5bd', '196', 'LFF2CR ', 'LINE FLOW FANS CONTACTOR 2 ON 명령(LINE FLOW FANS CONTACTOR 2)', '그 외의 경우 : 0, 접촉기 ON시 : 1', 'Woojin', 'M1', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'LFF2CR = LINE FLOW FANS CONTACTOR 2 ON 명령(LINE FLOW FANS CONTACTOR 2). 그 외의 경우 : 0, 접촉기 ON시 : 1', '우진200량-3단계'), ('de6375a2-9c75-44fd-87d4-5f5f59552980', '607', 'BED ', '회생 제동력 요구 값(Brake Effective Demand)', '0~102%', 'Woojin', 'BECU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'BED = 회생 제동력 요구 값(Brake Effective Demand). 0~102%', '우진200량-3단계'), ('de6b29c8-c4a4-4086-9b47-e2b40579217e', '1188', 'AP3-7S ', '7호차 공기정화기3 동작상태(Air Purifier3 Car7 State)', '0 : OFF, 1 : 약, 2 : 중, 3 : 강', 'Woojin', 'AIRP', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'AP3-7S = 7호차 공기정화기3 동작상태(Air Purifier3 Car7 State). 0 : OFF, 1 : 약, 2 : 중, 3 : 강', '우진200량-3단계'), ('de6f3b81-ef8e-4855-817d-fe2a09333630', '592', 'SCB ', '보안제동 체결 상태(SECURITY BRAKE)', '0 : SCB 미체결, 1 : SCB 체결', 'Woojin', 'BECU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'SCB = 보안제동 체결 상태(SECURITY BRAKE). 0 : SCB 미체결, 1 : SCB 체결', '우진200량-3단계'), ('de73f54b-1203-409c-ab7d-72279798716e', '1123', 'CMOL ', '압축기 과부하 상태(Compressor Over Load)', '1 : 과부하, 0 : 정상, Default : 0', 'Woojin', 'CHVAC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'CMOL = 압축기 과부하 상태(Compressor Over Load). 1 : 과부하, 0 : 정상, Default : 0', '우진200량-3단계'), ('df11b3e8-586f-4bb9-b7eb-5e67cb17ce94', '1154', 'DDS1-5F ', '5호차 미세먼지센서1 고장상태(Dust Detector Sensor AP1 Car5 Fault)', '1 : 고장, 0 : 정상', 'Woojin', 'AIRP', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'DDS1-5F = 5호차 미세먼지센서1 고장상태(Dust Detector Sensor AP1 Car5 Fault). 1 : 고장, 0 : 정상', '우진200량-3단계'), ('df173ff2-228e-4252-beec-ed16e30ae9ba', '575', 'SP3F ', '3축 속도신호의 비정상(Speed3 Fault)', '0 : 정상, 1 : 고장검지', 'Woojin', 'BECU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'SP3F = 3축 속도신호의 비정상(Speed3 Fault). 0 : 정상, 1 : 고장검지', '우진200량-3단계'), ('df4943db-c6fd-4df9-b07a-e780137e9f5a', '138', 'BALPC ', '제동 데스크 램프 ON 명령(BRAKE APPLIDED(YELLOW))', '그 외의 경우 : 0, 제동시 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'BALPC = 제동 데스크 램프 ON 명령(BRAKE APPLIDED(YELLOW)). 그 외의 경우 : 0, 제동시 : 1', '우진200량-3단계'), ('df761f41-2cb6-4d9f-b949-e15ffa5bd98c', '651', 'LB1ON ', 'LB1 Close 상태(LB 1 ON)', '0 : 각 접촉기 Off 상태 1 : 각 접촉기 On 상태', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'LB1ON = LB1 Close 상태(LB 1 ON). 0 : 각 접촉기 Off 상태 1 : 각 접촉기 On 상태', '우진200량-3단계'), ('dfe6b1d3-dc59-43f5-9b6b-e87c0696cdd3', '520', 'CO2SENS1F ', 'CO2 SENSOR 1 고장 신호(CO2 Sensor1 Fault)', '1 : CO2 이상 발생, 0 : 정상', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'CO2SENS1F = CO2 SENSOR 1 고장 신호(CO2 Sensor1 Fault). 1 : CO2 이상 발생, 0 : 정상', '우진200량-3단계'), ('e02c6b52-a91b-4d9e-b155-8b80d881e5c2', '972', 'TC2HCR ', 'TC2 HCR 투입여부(TC2 HeadCarRelay)', '0 : 이외의 조건, 1 : TC2 HCR 투입 시', 'Woojin', 'NVR', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'TC2HCR = TC2 HCR 투입여부(TC2 HeadCarRelay). 0 : 이외의 조건, 1 : TC2 HCR 투입 시', '우진200량-3단계'), ('e02e7f66-1867-431f-966d-07cd862df341', '435', 'AMP2-8F ', 'TC2 (CAR 8) AMP 2 고장 정보(AMPLIFIER 1-8 FAULT)', '0 : 정상, 1 : 고장', 'Woojin', 'AVC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'AMP2-8F = TC2 (CAR 8) AMP 2 고장 정보(AMPLIFIER 1-8 FAULT). 0 : 정상, 1 : 고장', '우진200량-3단계'), ('e0479bd8-ccb3-41ac-90e4-0ae530389070', '272', 'BCN ', '제동 회로의 회로차단기 상태(BRAKE CIRCUIT BREAKER CLOSED)', '트립시 : 0, 정상시 : 1', 'Woojin', 'T2', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'BCN = 제동 회로의 회로차단기 상태(BRAKE CIRCUIT BREAKER CLOSED). 트립시 : 0, 정상시 : 1', '우진200량-3단계'), ('e0816463-4438-44fa-81aa-270253af017a', '993', 'SCAM3-2F ', '2호차 1번 CCTV 카메라 고장상태(SALOON CAMERA 1-2 FAULT)', '0 : 정상 상태 (상시 녹화 중), 1 : 카메라 고장 시', 'Woojin', 'NVR', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'SCAM3-2F = 2호차 1번 CCTV 카메라 고장상태(SALOON CAMERA 1-2 FAULT). 0 : 정상 상태 (상시 녹화 중), 1 : 카메라 고장 시', '우진200량-3단계'), ('e0c1a2a9-06ae-4a33-a6d8-fbab75646f29', '176', 'BCN ', '제동 회로의 회로차단기 상태(BRAKE CIRCUIT BREAKER CLOSED)', '트립시 : 0, 정상시 : 1', 'Woojin', 'M1', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'BCN = 제동 회로의 회로차단기 상태(BRAKE CIRCUIT BREAKER CLOSED). 트립시 : 0, 정상시 : 1', '우진200량-3단계'), ('e138abb4-3c8d-41c8-a291-bf112ee24083', '897', 'ROMVER ', '롬버전(ROM Version)', null, 'Woojin', 'BMS', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'ROMVER = 롬버전(ROM Version). ', '우진200량-3단계'), ('e1b98b8a-20de-4eab-b59f-0e11b1ba5860', '90', 'FD1 ', '화재감지(FIRE DETECTION)', '그 외의 경우 : 0, 화재검지시 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'FD1 = 화재감지(FIRE DETECTION). 그 외의 경우 : 0, 화재검지시 : 1', '우진200량-3단계'), ('e1fd1fae-38d5-411f-ab14-f8195a4347c8', '460', 'PA_AUTO ', '자동방송 동작 정보(PUBLIC ADDRESS-AUTO)', '0 : 자동방송 미동작, 1 : 자동방송 동작', 'Woojin', 'AVC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'PA_AUTO = 자동방송 동작 정보(PUBLIC ADDRESS-AUTO). 0 : 자동방송 미동작, 1 : 자동방송 동작', '우진200량-3단계'), ('e23d4aec-a5b8-4d0c-b430-d0e5603863b1', '204', 'BRCOCK ', '제동 차단 코크1 스위치 미동작(ROOM)(NO BRAKE CUT-OUT COCK# ROOM)', '그 외의 경우 : 0, BC cock cutout 시 : 1', 'Woojin', 'M2', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'BRCOCK = 제동 차단 코크1 스위치 미동작(ROOM)(NO BRAKE CUT-OUT COCK# ROOM). 그 외의 경우 : 0, BC cock cutout 시 : 1', '우진200량-3단계'), ('e24090ae-3bcb-4432-ae7f-4c12a5ddcc91', '255', 'SOTS2 ', '열차분리검지 2(SEPARATION OF TRAIN SET2)', '그 외의 경우 : 1, 고장시 : 0', 'Woojin', 'T1', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'SOTS2 = 열차분리검지 2(SEPARATION OF TRAIN SET2). 그 외의 경우 : 1, 고장시 : 0', '우진200량-3단계'), ('e2d48905-d61a-48d1-ac36-d8cbabea0e12', '771', 'GDFVY1 ', '인버터1 Gate Driver V상 고장 검지(Gate Driver Fault V1)', '0 : 이외의 조건, 1 : 인버터2 Gate Driver V상 고장 검지 시', 'Woojin', 'SIV', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'GDFVY1 = 인버터1 Gate Driver V상 고장 검지(Gate Driver Fault V1). 0 : 이외의 조건, 1 : 인버터2 Gate Driver V상 고장 검지 시', '우진200량-3단계'), ('e31946f0-848a-4013-8553-5618dd984372', '402', 'PEI1-3F ', 'M2 (CAR 3) PEI 1 고장 정보(PASSENGER EMERGENCY INTERCOM 1-3 FAULT)', '0 : 정상, 1 : 고장', 'Woojin', 'AVC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'PEI1-3F = M2 (CAR 3) PEI 1 고장 정보(PASSENGER EMERGENCY INTERCOM 1-3 FAULT). 0 : 정상, 1 : 고장', '우진200량-3단계'), ('e39ac2de-71b7-463c-8ac1-ae85af33fc11', '1128', 'INTEMP ', '실내 온도 센서값(Indoor Temperature)', '-30℃ ~ +65℃', 'Woojin', 'CHVAC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'INTEMP = 실내 온도 센서값(Indoor Temperature). -30℃ ~ +65℃', '우진200량-3단계'), ('e39be84f-1f05-40e6-be33-05b71419656b', '361', 'PG32F ', 'PG3-2 지상자 미 검지(ATO PG32 Missed Error)', 'PG3-2 정상 검지: 0, PG3-2 미 검지 : 1', 'Woojin', 'ATC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'PG32F = PG3-2 지상자 미 검지(ATO PG32 Missed Error). PG3-2 정상 검지: 0, PG3-2 미 검지 : 1', '우진200량-3단계'), ('e3a1afa1-9bcd-49f9-80b7-c1ff26ff1b1c', '105', 'DOORN ', 'DC 100V 도어 NFB 트립(DOOR CIRCUIT BREAKER CLOSED)', '트립시 : 0, 정상시 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'DOORN = DC 100V 도어 NFB 트립(DOOR CIRCUIT BREAKER CLOSED). 트립시 : 0, 정상시 : 1', '우진200량-3단계'), ('e3f9bd8d-59dc-43b5-ba00-2c789a4dd168', '817', 'EED ', '내부 비상핸들 작동(Emergency Egress Device)', '0 : 정상 1 : 내부 비상핸들 작동', 'Woojin', 'DCU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'EED = 내부 비상핸들 작동(Emergency Egress Device). 0 : 정상 1 : 내부 비상핸들 작동', '우진200량-3단계'), ('e3fd2d25-4ad9-4b38-ae67-ecda67404bb6', '843', 'RF2A ', '2계 상태(RF2 Access)', '1 : 운전모드, 0 : Idle, Default : 0', 'Woojin', 'PSD', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'RF2A = 2계 상태(RF2 Access). 1 : 운전모드, 0 : Idle, Default : 0', '우진200량-3단계'), ('e435459e-ce5b-4ac7-8eaf-d766c181d46c', '284', 'FD1 ', '화재감지(FIRE DETECTION)', '그 외의 경우 : 0, 화재검지시 : 1', 'Woojin', 'T2', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'FD1 = 화재감지(FIRE DETECTION). 그 외의 경우 : 0, 화재검지시 : 1', '우진200량-3단계'), ('e4497aa7-6a74-4789-abb0-b74ff4e6b57a', '850', 'RF2DOOR ', '2계 스크린도어 명령(RF2 Door Command)', '0 : 닫힘 1 : 우측열림 2 : 좌측열림 3 : 비상열림 0 : Default', 'Woojin', 'PSD', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'RF2DOOR = 2계 스크린도어 명령(RF2 Door Command). 0 : 닫힘 1 : 우측열림 2 : 좌측열림 3 : 비상열림 0 : Default', '우진200량-3단계'), ('e4541586-5c68-4a7d-8613-7fca4b11f287', '1142', 'DDS1-4F ', '4호차 미세먼지센서1 고장상태(Dust Detector Sensor AP1 Car4 Fault)', '1 : 고장, 0 : 정상', 'Woojin', 'AIRP', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'DDS1-4F = 4호차 미세먼지센서1 고장상태(Dust Detector Sensor AP1 Car4 Fault). 1 : 고장, 0 : 정상', '우진200량-3단계'), ('e4885974-0590-496b-b97a-7ae365aaad7a', '561', 'AIRF ', '공기제동 장치고장(AirBrake Fault)', '0 : 정상, 1 : 고장검지', 'Woojin', 'BECU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'AIRF = 공기제동 장치고장(AirBrake Fault). 0 : 정상, 1 : 고장검지', '우진200량-3단계'), ('e49e657c-2eb9-4797-bb90-93419ad2d30e', '66', 'BRCOCK1 ', '제동 차단 코크2 스위치 미동작(BOGIE #1) (NO BRAKE CUT-OUT COCK BOGIE #1)', '그 외의 경우 : 0, BC cock cutout 시 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'BRCOCK1 = 제동 차단 코크2 스위치 미동작(BOGIE #1) (NO BRAKE CUT-OUT COCK BOGIE #1). 그 외의 경우 : 0, BC cock cutout 시 : 1', '우진200량-3단계'), ('e4a36194-0e7d-48f5-9daf-9e58cd78a4cd', '906', 'STCODE ', '출발역 번호(START CODE)', '0~255', 'Woojin', 'PIC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'STCODE = 출발역 번호(START CODE). 0~255', '우진200량-3단계'), ('e4cac6df-67e0-4424-a7ed-fb45353ba306', '378', 'CURCODE ', '현재역 번호(CURRENT CODE)', '1~255', 'Woojin', 'AVC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'CURCODE = 현재역 번호(CURRENT CODE). 1~255', '우진200량-3단계'), ('e4dc4e4b-65a8-4765-a1cf-fa6e66386329', '398', 'PEI2-2F ', 'M1 (CAR 2) PEI 2 고장 정보(PASSENGER EMERGENCY INTERCOM 2-2 FAULT)', '0 : 정상, 1 : 고장', 'Woojin', 'AVC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'PEI2-2F = M1 (CAR 2) PEI 2 고장 정보(PASSENGER EMERGENCY INTERCOM 2-2 FAULT). 0 : 정상, 1 : 고장', '우진200량-3단계'), ('e4f3b22e-35a2-4c6c-8a71-bd8cf59a14e1', '1177', 'AP2-4S ', '4호차 공기정화기2 동작상태(Air Purifier2 Car4 State)', '0 : OFF, 1 : 약, 2 : 중, 3 : 강', 'Woojin', 'AIRP', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'AP2-4S = 4호차 공기정화기2 동작상태(Air Purifier2 Car4 State). 0 : OFF, 1 : 약, 2 : 중, 3 : 강', '우진200량-3단계'), ('e59592bc-14ca-4d25-9dce-408041f38dd4', '162', 'CPRS ', '강제완해 스위치 동작(COMPULSORY RELEASE)', '그 외의 경우 : 0, 스위치 ON시 : 1', 'Woojin', 'M1', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'CPRS = 강제완해 스위치 동작(COMPULSORY RELEASE). 그 외의 경우 : 0, 스위치 ON시 : 1', '우진200량-3단계'), ('e5a57cbc-85c9-4b23-8d80-74d189c4df2e', '799', 'FDS2OP ', '차량별 사용되는 감지기 수량에 따라 해당 감지기의 사용유무를 나타낸다. 부산1호선의 경우 네 개의 감지기로 고정.(Fire Detector State2 Operation)', '0 : 사용하지 않음, 1 : 사용함', 'Woojin', 'FDU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'FDS2OP = 차량별 사용되는 감지기 수량에 따라 해당 감지기의 사용유무를 나타낸다. 부산1호선의 경우 네 개의 감지기로 고정.(Fire Detector State2 Operation). 0 : 사용하지 않음, 1 : 사용함', '우진200량-3단계'), ('e6d4cc12-cf26-4b82-af31-cd7770514eed', '1058', 'PEI2-7C ', '7호차 2위 비상인터폰 연결상태(PASSENGER EMERGENCY INTERCOM 2-7 CALL)', '1 : 연결됨, 0 : 연결안됨', 'Woojin', 'TRS', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'PEI2-7C = 7호차 2위 비상인터폰 연결상태(PASSENGER EMERGENCY INTERCOM 2-7 CALL). 1 : 연결됨, 0 : 연결안됨', '우진200량-3단계'), ('e6fdc265-f89c-4a73-b05b-5ee5a18fc485', '819', 'CPLVF ', '차량으로부터 인가되는 공급전원이 70Vdc 이하(Low voltage)', '0 : 정상 1 : 저전압', 'Woojin', 'DCU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'CPLVF = 차량으로부터 인가되는 공급전원이 70Vdc 이하(Low voltage). 0 : 정상 1 : 저전압', '우진200량-3단계'), ('e728b9cb-4db5-4675-ae4d-25af8af9f056', '416', 'PIB6F ', 'M1 (CAR 6) PIB 고장 정보(PASSENGER INFORMATION BOARD 6 FAULT)', '0 : 정상, 1 : 고장', 'Woojin', 'AVC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'PIB6F = M1 (CAR 6) PIB 고장 정보(PASSENGER INFORMATION BOARD 6 FAULT). 0 : 정상, 1 : 고장', '우진200량-3단계'), ('e76b950d-9483-4f50-92af-7fcf089fd21c', '838', 'MODULEF ', '2중계 DCU의 'A' 모듈과 'B' 모듈 간, 상태체크 기능에 이상이 생긴 경우 고장 발생(Module check error)', '0 : 정상, 1 : 고장', 'Woojin', 'DCU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'MODULEF = 2중계 DCU의 'A' 모듈과 'B' 모듈 간, 상태체크 기능에 이상이 생긴 경우 고장 발생(Module check error). 0 : 정상, 1 : 고장', '우진200량-3단계'), ('e7796f89-bdf7-4f32-8206-6c7ccbcb1e03', '893', 'BATA ', '배터리 전류(Battery Amppere)', '-127~255A', 'Woojin', 'BMS', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'BATA = 배터리 전류(Battery Amppere). -127~255A', '우진200량-3단계'), ('e7e0f114-3c7f-4ad7-9f0c-2d71c54a8258', '631', 'BKWH ', '회생 전력량(Braking Kilowatt)', 'TCU에서 연산한 전력량을 1kWh마다 1초간 “1”을 출력한다.', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'BKWH = 회생 전력량(Braking Kilowatt). TCU에서 연산한 전력량을 1kWh마다 1초간 “1”을 출력한다.', '우진200량-3단계'), ('e80dabe1-bba5-43bb-9b33-ca3620771ad3', '989', 'FCAM8F ', '8호차 전면 카메라 고장상태(FRONT CAMERA 8 FAULT)', '0 : 이외의 조건, 1 : 전면 카메라 고장 시', 'Woojin', 'NVR', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'FCAM8F = 8호차 전면 카메라 고장상태(FRONT CAMERA 8 FAULT). 0 : 이외의 조건, 1 : 전면 카메라 고장 시', '우진200량-3단계'), ('e8101881-3986-430d-aaff-9ee6f6e7b32d', '960', 'RMD4-7F ', '노선안내표시기4-7 통신 상태(ROUTE MAP DISPLAY 4-7 FAULT)', '0 : 통신정상, 1 : 통신고장', 'Woojin', 'PIC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'RMD4-7F = 노선안내표시기4-7 통신 상태(ROUTE MAP DISPLAY 4-7 FAULT). 0 : 통신정상, 1 : 통신고장', '우진200량-3단계'), ('e827b04f-072a-4705-9f7b-fa8adbb0b4ba', '44', 'HCR ', '선두차량 릴레이(HEAD CONTROL RELAY)', '그 외의 경우 : 0, 선두차 취급시 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'HCR = 선두차량 릴레이(HEAD CONTROL RELAY). 그 외의 경우 : 0, 선두차 취급시 : 1', '우진200량-3단계'), ('e8c645e6-a259-43be-83a5-b1aa5464964e', '414', 'AMP1-5F ', 'T2 (CAR 5) AMP 1 고장 정보(AMPLIFIER 1-5 FAULT)', '0 : 정상, 1 : 고장', 'Woojin', 'AVC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'AMP1-5F = T2 (CAR 5) AMP 1 고장 정보(AMPLIFIER 1-5 FAULT). 0 : 정상, 1 : 고장', '우진200량-3단계'), ('e9d2118b-9339-467e-9568-2bb70a5fa312', '777', 'INV2THF ', '인버터2 과온 검지(INV2 Thermal Fault)', '0 : 이외의 조건, 1 : 인버터2 과온 검지 시', 'Woojin', 'SIV', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'INV2THF = 인버터2 과온 검지(INV2 Thermal Fault). 0 : 이외의 조건, 1 : 인버터2 과온 검지 시', '우진200량-3단계'), ('ea0fedc0-748c-41dc-98c3-dc1c750854ae', '290', 'CAB_NO_SDR ', '운전실 위치정보(CAB No. information)', 'TC1 : 1, TC2 : 0', 'Woojin', 'ATC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'CAB_NO_SDR = 운전실 위치정보(CAB No. information). TC1 : 1, TC2 : 0', '우진200량-3단계'), ('ea1460bd-a167-4232-9648-e1c9d864b4d1', '161', 'BRCOCK ', '제동 차단 코크1 스위치 미동작(ROOM)(NO BRAKE CUT-OUT COCK# ROOM)', '그 외의 경우 : 0, BC cock cutout 시 : 1', 'Woojin', 'M1', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'BRCOCK = 제동 차단 코크1 스위치 미동작(ROOM)(NO BRAKE CUT-OUT COCK# ROOM). 그 외의 경우 : 0, BC cock cutout 시 : 1', '우진200량-3단계'), ('ea592ffe-0c0c-4922-a2f8-7170610d857c', '762', 'INV1OV ', '인버터1 입력 과전압 검지(INV1 Over Voltage)', '0 : 이외의 조건, 1 : AC 출력 저전압 검지 시', 'Woojin', 'SIV', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'INV1OV = 인버터1 입력 과전압 검지(INV1 Over Voltage). 0 : 이외의 조건, 1 : AC 출력 저전압 검지 시', '우진200량-3단계'), ('eb10fbd5-f18c-4a6c-bf22-8725569e0eeb', '640', 'TSTART ', '시험시작 신호(Test Mode Start)', '0 : Normal 상태 1 : 차상시험 개시시', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'TSTART = 시험시작 신호(Test Mode Start). 0 : Normal 상태 1 : 차상시험 개시시', '우진200량-3단계'), ('eb29361b-3666-4419-98f0-d1ad052e5170', '89', 'FA1 ', '화재 감지기 고장(FIRE DETECTION UNIT FAULT)', '그 외의 경우 : 1, FAULT 시 : 0', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'FA1 = 화재 감지기 고장(FIRE DETECTION UNIT FAULT). 그 외의 경우 : 1, FAULT 시 : 0', '우진200량-3단계'), ('eb5626db-693a-47d2-a506-ef93bf7aebce', '11', 'MAS_BKR ', '마스콘 제동신호(MASCON BRAKING)', null, 'Woojin', 'TIB', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'MAS_BKR = 마스콘 제동신호(MASCON BRAKING)', '우진200량-3단계'), ('eb9ee3e8-88fe-45ae-bf32-715707c61259', '682', 'PWM노치 ', 'PWM 노치 값(PWM Notch)', '0∼100%', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'PWM노치 = PWM 노치 값(PWM Notch). 0∼100%', '우진200량-3단계'), ('ebda18f0-5fc2-4283-91a2-86736ac1a75e', '1119', 'OSFA ', '실외센서 이상 상태(Outdoor Static Fault Alarm)', '1 : 센서이상, 0 : 정상, Default : 0', 'Woojin', 'CHVAC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'OSFA = 실외센서 이상 상태(Outdoor Static Fault Alarm). 1 : 센서이상, 0 : 정상, Default : 0', '우진200량-3단계'), ('ecca230e-0cb4-4c43-8c6a-12f8ae8f3907', '1172', 'AP3-3S ', '3호차 공기정화기3 동작상태(Air Purifier3 Car3 State)', '0 : OFF, 1 : 약, 2 : 중, 3 : 강', 'Woojin', 'AIRP', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'AP3-3S = 3호차 공기정화기3 동작상태(Air Purifier3 Car3 State). 0 : OFF, 1 : 약, 2 : 중, 3 : 강', '우진200량-3단계'), ('ed1fb8c0-d57e-4d2d-91ed-3d3fcfd41797', '209', 'MDSa1 ', 'MDS 박스 내의 MDSa1 접점 동작상태(SERVICE POSITION(MDS BOX) - MDSa1)', '그 외의 경우 : 0, ON시 : 1', 'Woojin', 'M2', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'MDSa1 = MDS 박스 내의 MDSa1 접점 동작상태(SERVICE POSITION(MDS BOX) - MDSa1). 그 외의 경우 : 0, ON시 : 1', '우진200량-3단계'), ('eda89895-57cd-4fd5-95f5-072deb6ce78f', '233', 'ASCOCK1 ', 'AS 압력 코크 스위치1 미동작(NO AIR SPRING CUT-OUT COCK #1)', 'AS cock cutout 시 : 0, 그 외의 경우 : 1', 'Woojin', 'T1', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'ASCOCK1 = AS 압력 코크 스위치1 미동작(NO AIR SPRING CUT-OUT COCK #1). AS cock cutout 시 : 0, 그 외의 경우 : 1', '우진200량-3단계'), ('edc62cca-f2d2-4338-9b14-7834e06b28e4', '735', 'LB2NO ', 'LB2 고착(LB2 NO Open)', '0 : 정상, 1 : 고장검지', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'LB2NO = LB2 고착(LB2 NO Open). 0 : 정상, 1 : 고장검지', '우진200량-3단계'), ('ede66713-1091-4fbc-beda-fc0b3596cd92', '33', 'L_DCRPBD ', '오른쪽 출입문 닫힘버튼 (Door Close Right Push Button Data)', '1초 안에 50ms 단위로 체크, 한번이라도 검지되면 ON으로 1이 올라옴.', 'Woojin', '출입문 50ms', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'L_DCRPBD = 1초 안에 50ms 단위로 체크, 한번이라도 검지되면 ON으로 1이 올라옴.', '우진200량-3단계'), ('ee1c4755-6767-4bc8-ba66-d8cf97e9be52', '183', 'LFF2K ', 'LINE FLOW FANS CONTACTOR 2 ON(LINE FLOW FANS CONTACTOR 2 CLOSED)', '그 외의 경우 : 0, 접촉기 ON시 : 1', 'Woojin', 'M1', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'LFF2K = LINE FLOW FANS CONTACTOR 2 ON(LINE FLOW FANS CONTACTOR 2 CLOSED). 그 외의 경우 : 0, 접촉기 ON시 : 1', '우진200량-3단계'), ('ee5c3e5b-c508-4c78-a460-146f8fcbd93c', '1009', 'SCAM2-5F ', '5호차 2번 CCTV 카메라 고장상태(SALOON CAMERA 2-5 FAULT)', '0 : 정상 상태 (상시 녹화 중), 1 : 카메라 고장 시', 'Woojin', 'NVR', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'SCAM2-5F = 5호차 2번 CCTV 카메라 고장상태(SALOON CAMERA 2-5 FAULT). 0 : 정상 상태 (상시 녹화 중), 1 : 카메라 고장 시', '우진200량-3단계'), ('ee7b3c5e-afee-46cd-85b4-d2193cdebfd1', '441', 'PEI1-3 ', '비상인터폰 호출 위치 CAR 3 1위(PASSENGER EMERGENCY INTERCOM 1-3 CALL)', '0 : 미호출, 1 : 호출', 'Woojin', 'AVC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'PEI1-3 = 비상인터폰 호출 위치 CAR 3 1위(PASSENGER EMERGENCY INTERCOM 1-3 CALL). 0 : 미호출, 1 : 호출', '우진200량-3단계'), ('ee8af8ad-4cca-4dcd-ad80-f406070546bf', '102', 'ATCN ', 'DC 100V ATO NFB 트립(ATC CIRCUIT BREAKER CLOSED)', '트립시 : 0, 정상시 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'ATCN = DC 100V ATO NFB 트립(ATC CIRCUIT BREAKER CLOSED). 트립시 : 0, 정상시 : 1', '우진200량-3단계'), ('eee49d0f-e943-4660-ba8b-7ae3ec78ddd6', '206', 'ECUF ', 'BOU ECU 전원 고장 신호(ECU POWER SUPPLY FAULT)', '그 외의 경우 : 1, ECU Power fault 검지 : 0', 'Woojin', 'M2', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'ECUF = BOU ECU 전원 고장 신호(ECU POWER SUPPLY FAULT). 그 외의 경우 : 1, ECU Power fault 검지 : 0', '우진200량-3단계'), ('eeef5a46-1e9e-4b02-910a-b6696834c652', '680', 'Iq ', '토크 전류(절대값)(Q Axis Current)', '0∼2,000A (2,000A/100h)', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'Iq = 토크 전류(절대값)(Q Axis Current). 0∼2,000A (2,000A/100h)', '우진200량-3단계'), ('ef271a82-503f-4cc5-976e-5a77ccbcabf0', '21', '현재역코드 ', '현재역코드', null, 'Woojin', 'TIB', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', '현재역코드 = 현재역코드', '우진200량-3단계'), ('efe2cda0-2562-40b0-9c8d-71d9c5ffe60a', '163', 'ACMS ', '보조공기 압축기 동작 스위치(AUXILIARY COMPRESSOR ON)', '그 외의 경우 : 0, 스위치 ON시 : 1', 'Woojin', 'M1', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'ACMS = 보조공기 압축기 동작 스위치(AUXILIARY COMPRESSOR ON). 그 외의 경우 : 0, 스위치 ON시 : 1', '우진200량-3단계'), ('effa0b2d-dbe6-4c94-9fca-e863dea4b523', '1181', 'AP2-5S ', '5호차 공기정화기2 동작상태(Air Purifier2 Car5 State)', '0 : OFF, 1 : 약, 2 : 중, 3 : 강', 'Woojin', 'AIRP', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'AP2-5S = 5호차 공기정화기2 동작상태(Air Purifier2 Car5 State). 0 : OFF, 1 : 약, 2 : 중, 3 : 강', '우진200량-3단계'), ('effabd6d-acb4-417a-9457-35c8fab049c0', '760', 'LK ', 'LK 접촉기 투입 정보(LK ON)', '0 : 이외의 조건, 1 : LK 투입 시', 'Woojin', 'SIV', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'LK = LK 접촉기 투입 정보(LK ON). 0 : 이외의 조건, 1 : LK 투입 시', '우진200량-3단계'), ('f00183c5-40f4-4411-8afe-69fe1c3a8041', '114', 'DCTR ', '열차 내 모든 출입문 닫힘(ALL DOORS CLOSED IN TRAIN)', '그 외의 경우 : 0, 접촉기 ON시 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'DCTR = 열차 내 모든 출입문 닫힘(ALL DOORS CLOSED IN TRAIN). 그 외의 경우 : 0, 접촉기 ON시 : 1', '우진200량-3단계'), ('f06a8b3f-c707-4781-9ec7-c1bc5bd5f001', '933', 'RMD1-2F ', '노선안내표시기1-2 통신 상태(ROUTE MAP DISPLAY 1-2 FAULT)', '0 : 통신정상, 1 : 통신고장', 'Woojin', 'PIC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'RMD1-2F = 노선안내표시기1-2 통신 상태(ROUTE MAP DISPLAY 1-2 FAULT). 0 : 통신정상, 1 : 통신고장', '우진200량-3단계'), ('f0bda1a5-0fe8-4346-bfd1-1c8e1a44c3e7', '1108', 'ST+3 ', '운전실 선택(캠) 스위치에 의해 기준온도가 실내기준온도+3도로 설정(Standard Temperature +3℃)', '1 : 동작중, 0 : 중지상태, Default : 0', 'Woojin', 'CHVAC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'ST+3 = 운전실 선택(캠) 스위치에 의해 기준온도가 실내기준온도+3도로 설정(Standard Temperature +3℃). 1 : 동작중, 0 : 중지상태, Default : 0', '우진200량-3단계'), ('f0e6bc6f-239b-4c55-bbeb-81786f72ad32', '1032', 'SCAM3-5R ', '5호차 1번 CCTV 카메라 녹화중(SALOON CAMERA 1-5 RECORD)', '0 : 이외의 조건, 1 : 이벤트 녹화 중', 'Woojin', 'NVR', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'SCAM3-5R = 5호차 1번 CCTV 카메라 녹화중(SALOON CAMERA 1-5 RECORD). 0 : 이외의 조건, 1 : 이벤트 녹화 중', '우진200량-3단계'), ('f113481d-ef61-404f-8899-8d2fbe32cdc2', '408', 'PEI2-4F ', 'T1 (CAR 4) PEI 2 고장 정보(PASSENGER EMERGENCY INTERCOM 2-4 FAULT)', '0 : 정상, 1 : 고장', 'Woojin', 'AVC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'PEI2-4F = T1 (CAR 4) PEI 2 고장 정보(PASSENGER EMERGENCY INTERCOM 2-4 FAULT). 0 : 정상, 1 : 고장', '우진200량-3단계'), ('f132afd2-fdf0-452d-a1c1-439437c01e18', '894', 'BATTEMP ', '배터리 온도(Battery Temperature)', '-128~127℃', 'Woojin', 'BMS', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'BATTEMP = 배터리 온도(Battery Temperature). -128~127℃', '우진200량-3단계'), ('f14bd357-7df2-4d2f-b4d6-27d798f5e123', '830', 'DLSF ', '도어 닫힘 상태에서 DLS 스위치 작동 되지 않음(DLS failure)', '0 : 정상 1 : 고장', 'Woojin', 'DCU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'DLSF = 도어 닫힘 상태에서 DLS 스위치 작동 되지 않음(DLS failure). 0 : 정상 1 : 고장', '우진200량-3단계'), ('f1a57699-e7b6-4132-bd44-e8338ebb5d2f', '553', 'FASTHEND ', '급속난방종료(Fast Heating End)', '1 : 급속난방종료, 0 : Normal', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'FASTHEND = 급속난방종료(Fast Heating End). 1 : 급속난방종료, 0 : Normal', '우진200량-3단계'), ('f1abd254-e101-4812-87d2-1e1b3062f8ee', '47', 'MANUAL ', '운전모드 수동모드(YARD, MCS, FMC MODE)', '그 외의 경우 : 0, 수동모드 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'MANUAL = 운전모드 수동모드(YARD, MCS, FMC MODE). 그 외의 경우 : 0, 수동모드 : 1', '우진200량-3단계'), ('f1d9832d-6159-462f-ac02-bcb55ada8f98', '1192', 'AP3-8S ', '8호차 공기정화기3 동작상태(Air Purifier3 Car8 State)', '0 : OFF, 1 : 약, 2 : 중, 3 : 강', 'Woojin', 'AIRP', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'AP3-8S = 8호차 공기정화기3 동작상태(Air Purifier3 Car8 State). 0 : OFF, 1 : 약, 2 : 중, 3 : 강', '우진200량-3단계'), ('f211ecc4-f799-4cc5-8ca4-bdb80bdd0f8a', '568', 'X2DVF ', '후미대차 덤프밸브 고장(X2 Dump Valve Fault)', '0 : 정상, 1 : 고장검지', 'Woojin', 'BECU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'X2DVF = 후미대차 덤프밸브 고장(X2 Dump Valve Fault). 0 : 정상, 1 : 고장검지', '우진200량-3단계'), ('f219caf9-4378-4170-802b-ff87cc99d43c', '734', 'LB2NC ', 'LB2 투입불량(B2 NO Close)', '0 : 정상, 1 : 고장검지', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'LB2NC = LB2 투입불량(B2 NO Close). 0 : 정상, 1 : 고장검지', '우진200량-3단계'), ('f2444786-8271-4a54-a2b2-9591afd06b91', '488', 'TST_OK ', 'UNIT1 전냉방 운전모드(Test-Item result OK)', '1 : 시험결과 OK모드, 0 : 시험결과 OK모드 아님', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'TST_OK = UNIT1 전냉방 운전모드(Test-Item result OK). 1 : 시험결과 OK모드, 0 : 시험결과 OK모드 아님', '우진200량-3단계'), ('f26541dc-413b-4c6d-a31e-67a4e32f092f', '1065', 'PEI1-8E ', '8호차 1위 비상인터폰 종료상태(PASSENGER EMERGENCY INTERCOM 1-8 END)', '1 : 연결됨, 0 : 연결안됨', 'Woojin', 'TRS', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'PEI1-8E = 8호차 1위 비상인터폰 종료상태(PASSENGER EMERGENCY INTERCOM 1-8 END). 1 : 연결됨, 0 : 연결안됨', '우진200량-3단계'), ('f269830a-5c82-4304-8c02-e189f3cf1719', '1021', 'SCAM2-1R ', '1호차 2번 CCTV 카메라 녹화중(SALOON CAMERA 2-1 RECORD)', '0 : 이외의 조건, 1 : 이벤트 녹화 중', 'Woojin', 'NVR', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'SCAM2-1R = 1호차 2번 CCTV 카메라 녹화중(SALOON CAMERA 2-1 RECORD). 0 : 이외의 조건, 1 : 이벤트 녹화 중', '우진200량-3단계'), ('f29f984d-c5ee-4e60-9b41-6f1ce3243bcf', '25', '현재속도 ', '선두차량의 현재 속도 / FMC 모드에선 BECU-SPEED / 그 외에는 신호장치 속도', null, 'Woojin', 'TIB', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', '현재속도 = 선두차량의 현재 속도 / FMC 모드에선 BECU-SPEED / 그 외에는 신호장치 속도', '우진200량-3단계'), ('f2f021ca-783e-4b9c-849d-aca0a2127c72', '1007', 'SCAM1-6F ', '6호차 3번 CCTV 카메라 고장상태(SALOON CAMERA 3-6 FAULT)', '0 : 정상 상태 (상시 녹화 중), 1 : 카메라 고장 시', 'Woojin', 'NVR', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'SCAM1-6F = 6호차 3번 CCTV 카메라 고장상태(SALOON CAMERA 3-6 FAULT). 0 : 정상 상태 (상시 녹화 중), 1 : 카메라 고장 시', '우진200량-3단계'), ('f325b2a5-4122-44f1-bde6-da1e3b2118d0', '884', 'TEST_OK ', '시험결과 OK(Test-Item Result OK)', '0 : 실험결과 OK모드 아님, 1 : 실험결과 NG 모드', 'Woojin', 'BMS', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'TEST_OK = 시험결과 OK(Test-Item Result OK). 0 : 실험결과 OK모드 아님, 1 : 실험결과 NG 모드', '우진200량-3단계'), ('f3459431-2cdf-4d7d-805d-83221b25b377', '104', 'DC100N ', 'DC 100V NFB 트립(OTHERS) (DC 100V CIRCUIT BREAKER CLOSED)', '트립시 : 0, 정상시 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'DC100N = DC 100V NFB 트립(OTHERS) (DC 100V CIRCUIT BREAKER CLOSED). 트립시 : 0, 정상시 : 1', '우진200량-3단계'), ('f3ec0988-7bad-49fc-b5ba-cca237346d85', '186', 'ILCR1 ', 'AC 실내등 컨텍터 1 ON 상태확인(CONTACTOR 1 INTERIOR LIGHTS CLOSED)', '그 외의 경우 : 0, 접촉기 ON시 : 1', 'Woojin', 'M1', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'ILCR1 = AC 실내등 컨텍터 1 ON 상태확인(CONTACTOR 1 INTERIOR LIGHTS CLOSED). 그 외의 경우 : 0, 접촉기 ON시 : 1', '우진200량-3단계'), ('f43a68cd-83cd-4d34-bcf9-b95dfde278bc', '549', 'DAMPOPF ', '배기댐퍼 열림고장(Damper Open Fault)', '1 : 배기 댐퍼 열림 고장 , 0 : 정상', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'DAMPOPF = 배기댐퍼 열림고장(Damper Open Fault). 1 : 배기 댐퍼 열림 고장 , 0 : 정상', '우진200량-3단계'), ('f51ab8c9-a8f0-497d-8140-966d65095121', '795', 'ROMVER ', '소프트웨어 버전(Rom Version)', null, 'Woojin', 'SIV', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'ROMVER = 소프트웨어 버전(Rom Version). ', '우진200량-3단계'), ('f54c6282-c1b5-4fcf-a89c-07752c346cf0', '191', 'ILCR3 ', 'DC 실내등 컨텍터 ON 명령(INTERIOR DC LIGHTS CONTACTOR)', '접촉기 ON시 : 0, 접촉기 OFF시 : 1', 'Woojin', 'M1', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'ILCR3 = DC 실내등 컨텍터 ON 명령(INTERIOR DC LIGHTS CONTACTOR). 접촉기 ON시 : 0, 접촉기 OFF시 : 1', '우진200량-3단계'), ('f5514111-eafb-4eac-a4f2-244e7081bac4', '50', 'EBS2_3 ', '비상제동 체결 스위치(사이드) EMERGENCY BRAKE PUSH-BUTTON(SIDE)', '비상제동 체결시 : 0, 비상제동 체결 아님 : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'EBS2_3 = 비상제동 체결 스위치(사이드) EMERGENCY BRAKE PUSH-BUTTON(SIDE). 비상제동 체결시 : 0, 비상제동 체결 아님 : 1', '우진200량-3단계'), ('f5a4a60c-1c0a-4b6b-b8da-aa50f2c67b20', '412', 'PEI1-5F ', 'T2 (CAR 5) PEI 1 고장 정보(PASSENGER EMERGENCY INTERCOM 1-5 FAULT)', '0 : 정상, 1 : 고장', 'Woojin', 'AVC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'PEI1-5F = T2 (CAR 5) PEI 1 고장 정보(PASSENGER EMERGENCY INTERCOM 1-5 FAULT). 0 : 정상, 1 : 고장', '우진200량-3단계'), ('f5a7cb16-5f59-4300-95dc-c9fe1c8f0e65', '271', 'NRBD ', '제동불완해 감지 인통선 신호(NON-RELEASE BRAKE DETECTED(NRBD))', '그 외의 경우 : 0, NRBD 검지시 : 1', 'Woojin', 'T2', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'NRBD = 제동불완해 감지 인통선 신호(NON-RELEASE BRAKE DETECTED(NRBD)). 그 외의 경우 : 0, NRBD 검지시 : 1', '우진200량-3단계'), ('f5b46aec-d86a-41a6-a091-6fd7854fe984', '836', 'OPTMF ', '도어 열림 동작시간이 6초 이상 지연됨(Open timeout)', '0 : 정상 1 : 고장', 'Woojin', 'DCU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'OPTMF = 도어 열림 동작시간이 6초 이상 지연됨(Open timeout). 0 : 정상 1 : 고장', '우진200량-3단계'), ('f60103ca-cc67-4587-a7fa-837f863ea2ba', '611', 'BCP ', 'BC 압력 값(Brake Cylinder Pressure)', '0~765kpa', 'Woojin', 'BECU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'BCP = BC 압력 값(Brake Cylinder Pressure). 0~765kpa', '우진200량-3단계'), ('f6443538-5286-4257-9c39-28b6841f5007', '1012', 'SCAM2-8F ', '8호차 2번 CCTV 카메라 고장상태(SALOON CAMERA 2-8 FAULT)', '0 : 정상 상태 (상시 녹화 중), 1 : 카메라 고장 시', 'Woojin', 'NVR', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'SCAM2-8F = 8호차 2번 CCTV 카메라 고장상태(SALOON CAMERA 2-8 FAULT). 0 : 정상 상태 (상시 녹화 중), 1 : 카메라 고장 시', '우진200량-3단계'), ('f6940e14-84e2-4d5f-a4b9-bebec2812ab4', '999', 'SCAM3-4F ', '4호차 1번 CCTV 카메라 고장상태(SALOON CAMERA 1-4 FAULT)', '0 : 정상 상태 (상시 녹화 중), 1 : 카메라 고장 시', 'Woojin', 'NVR', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'SCAM3-4F = 4호차 1번 CCTV 카메라 고장상태(SALOON CAMERA 1-4 FAULT). 0 : 정상 상태 (상시 녹화 중), 1 : 카메라 고장 시', '우진200량-3단계'), ('f6ab4968-25da-4569-9540-5c2f34461a77', '217', 'AC380_HN ', 'AC 380V NFB 트립(객실히터)(CIRCUIT BREAKERS 380V 60Hz CLOSED (HEATER))', '트립시 : 0, 정상시 : 1', 'Woojin', 'M2', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'AC380_HN = AC 380V NFB 트립(객실히터)(CIRCUIT BREAKERS 380V 60Hz CLOSED (HEATER)). 트립시 : 0, 정상시 : 1', '우진200량-3단계'), ('f6e55868-109b-445f-9388-305490a11c6f', '533', 'CREF4F ', '전자접촉기 증발기 4 고장(Car Room Evaporator Fan 4 Fault)', '1 : 고장, 0 : 정상', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'CREF4F = 전자접촉기 증발기 4 고장(Car Room Evaporator Fan 4 Fault). 1 : 고장, 0 : 정상 ', '우진200량-3단계'), ('f6f724ac-55a7-4fd1-8810-08ee726deab2', '1186', 'AP1-6S ', '6호차 공기정화기1 동작상태(Air Purifier1 Car6 State)', '0 : OFF, 1 : 약, 2 : 중, 3 : 강', 'Woojin', 'AIRP', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'AP1-6S = 6호차 공기정화기1 동작상태(Air Purifier1 Car6 State). 0 : OFF, 1 : 약, 2 : 중, 3 : 강', '우진200량-3단계'), ('f70ecca9-c581-4627-84d1-504619f829ff', '848', 'PSDBYP ', 'PSD 바이 패스(PSD Bypass)', null, 'Woojin', 'PSD', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'PSDBYP = PSD 바이 패스(PSD Bypass). ', '우진200량-3단계'), ('f73aa0ea-0cc5-4d5b-9da2-db52a044d3d3', '51', 'MRPS ', '주공기압(OFF MAIN RESERVOIR PRESSURE SWITCH OFF)', 'MRPS 스위치 OFF : 0, MRPS 스위치 ON : 1', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'MRPS = 주공기압(OFF MAIN RESERVOIR PRESSURE SWITCH OFF). MRPS 스위치 OFF : 0, MRPS 스위치 ON : 1', '우진200량-3단계'), ('f75de786-73d3-47fa-8d8a-8eb6d1806f46', '292', 'TRN_EB_SDR ', '비상제동 체결상태(Train EB Status)', 'Train EB Applied : 1, Train EB Not Applied : 0', 'Woojin', 'ATC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'TRN_EB_SDR = 비상제동 체결상태(Train EB Status). Train EB Applied : 1, Train EB Not Applied : 0', '우진200량-3단계'), ('f76e746b-4d5b-47f4-a3ec-ba5aec04ba14', '411', 'PIB5F ', 'T2 (CAR 5) PIB 고장 정보(PASSENGER INFORMATION BOARD 5 FAULT)', '0 : 정상, 1 : 고장', 'Woojin', 'AVC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'PIB5F = T2 (CAR 5) PIB 고장 정보(PASSENGER INFORMATION BOARD 5 FAULT). 0 : 정상, 1 : 고장', '우진200량-3단계'), ('f7739830-4b06-47fa-8224-56e88f7681be', '468', 'NEAR_FD_SDR ', '인접차에 화재신호가 검지(Near Fire Detected)', '0 : 정지, 1 : 동작', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'NEAR_FD_SDR = 인접차에 화재신호가 검지(Near Fire Detected). 0 : 정지, 1 : 동작', '우진200량-3단계'), ('f777a181-20de-4c4b-bbbc-c566adca3ddb', '1066', 'PEI1-7E ', '7호차 1위 비상인터폰 종료상태(PASSENGER EMERGENCY INTERCOM 1-7 END)', '1 : 연결됨, 0 : 연결안됨', 'Woojin', 'TRS', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'PEI1-7E = 7호차 1위 비상인터폰 종료상태(PASSENGER EMERGENCY INTERCOM 1-7 END). 1 : 연결됨, 0 : 연결안됨', '우진200량-3단계'), ('f7d392f9-edaa-4f0c-a19d-a0bc3f76915b', '69', 'ECUF ', 'BOU ECU 전원 고장 신호(ECU POWER SUPPLY FAULT)', '그 외의 경우 : 1, ECU Power fault 검지 : 0', 'Woojin', 'CU', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'ECUF = BOU ECU 전원 고장 신호(ECU POWER SUPPLY FAULT). 그 외의 경우 : 1, ECU Power fault 검지 : 0', '우진200량-3단계'), ('f81f9197-c89f-4eb9-9cdb-26ae31438222', '1053', 'PEI1-4C ', '4호차 1위 비상인터폰 연결상태(PASSENGER EMERGENCY INTERCOM 1-4 CALL)', '1 : 연결됨, 0 : 연결안됨', 'Woojin', 'TRS', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'PEI1-4C = 4호차 1위 비상인터폰 연결상태(PASSENGER EMERGENCY INTERCOM 1-4 CALL). 1 : 연결됨, 0 : 연결안됨', '우진200량-3단계'), ('f8470dae-b317-41d9-984c-f606313ab8b1', '1063', 'PEI2-2C ', '2호차 2위 비상인터폰 연결상태(PASSENGER EMERGENCY INTERCOM 2-2 CALL)', '1 : 연결됨, 0 : 연결안됨', 'Woojin', 'TRS', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'PEI2-2C = 2호차 2위 비상인터폰 연결상태(PASSENGER EMERGENCY INTERCOM 2-2 CALL). 1 : 연결됨, 0 : 연결안됨', '우진200량-3단계'), ('f8611c4b-47f9-4719-8b4f-eee273ae46ad', '875', 'MRPSLP ', '주공기압저압상태(Main Reservoir Pressure Switch Low Pressure)', '1 : 저압상태, 0 : 저압상태아님', 'Woojin', 'CMSB', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'MRPSLP = 주공기압저압상태(Main Reservoir Pressure Switch Low Pressure). 1 : 저압상태, 0 : 저압상태아님', '우진200량-3단계'), ('f866e34b-1034-4716-bc6c-ef6f4be1f72c', '804', 'D1STATE ', '각 감지기의 상태(정상, 화재, 고장)를 나타낸다.(Detector1 State)', '0 : 정상, 3 : 화재, 2 : 고장, Default : 0', 'Woojin', 'FDU', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'D1STATE = 각 감지기의 상태(정상, 화재, 고장)를 나타낸다.(Detector1 State). 0 : 정상, 3 : 화재, 2 : 고장, Default : 0', '우진200량-3단계'), ('f8acd4e5-4987-4357-ba4f-39d9df8b2b86', '955', 'RMD3-6F ', '노선안내표시기3-6 통신 상태(ROUTE MAP DISPLAY 3-6 FAULT)', '0 : 통신정상, 1 : 통신고장', 'Woojin', 'PIC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'RMD3-6F = 노선안내표시기3-6 통신 상태(ROUTE MAP DISPLAY 3-6 FAULT). 0 : 통신정상, 1 : 통신고장', '우진200량-3단계'), ('f8bc7c3e-6bb9-4b1a-a448-3d59e9af62e8', '197', 'LFF1CR ', 'LINE FLOW FANS CONTACTOR 1 ON 명령(LINE FLOW FANS CONTACTOR 1)', '그 외의 경우 : 0, 접촉기 ON시 : 1', 'Woojin', 'M1', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'LFF1CR = LINE FLOW FANS CONTACTOR 1 ON 명령(LINE FLOW FANS CONTACTOR 1). 그 외의 경우 : 0, 접촉기 ON시 : 1', '우진200량-3단계'), ('f9362cee-31fe-4c49-89f9-9e8017c01bfe', '326', 'FSB ', 'ATCATO의 FSB 출력 상태(FSB Command)', 'No FSB : 0, FSB : 1', 'Woojin', 'ATC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'FSB = ATCATO의 FSB 출력 상태(FSB Command). No FSB : 0, FSB : 1', '우진200량-3단계'), ('f969bdda-cb14-4e2f-b672-980c32e15625', '311', 'DR_MOD ', '출입문 모드 설정 상태(Door Mode)', 'None : 0, MM : 1, AM : 2, AA : 3', 'Woojin', 'ATC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'DR_MOD = 출입문 모드 설정 상태(Door Mode). None : 0, MM : 1, AM : 2, AA : 3', '우진200량-3단계'), ('f96d1978-85c8-4abb-a000-20fb50339a43', '674', 'SPEED1 ', '1축 속도 값(Moter Shaft 1 Speed)', '0∼255km/h', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'SPEED1 = 1축 속도 값(Moter Shaft 1 Speed). 0∼255km/h', '우진200량-3단계'), ('f98babde-5ccb-4a6f-aa39-a993b1c04313', '1049', 'PEI1-8C ', '8호차 1위 비상인터폰 연결상태(PASSENGER EMERGENCY INTERCOM 1-8 CALL)', '1 : 연결됨, 0 : 연결안됨', 'Woojin', 'TRS', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'PEI1-8C = 8호차 1위 비상인터폰 연결상태(PASSENGER EMERGENCY INTERCOM 1-8 CALL). 1 : 연결됨, 0 : 연결안됨', '우진200량-3단계'), ('f9c5990e-5cda-4cf2-98ca-74dc261ce001', '1160', 'DDS3-7F ', '7호차 미세먼지센서3 고장상태(Dust Detector Sensor AP3 Car7 Fault)', '1 : 고장, 0 : 정상', 'Woojin', 'AIRP', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'DDS3-7F = 7호차 미세먼지센서3 고장상태(Dust Detector Sensor AP3 Car7 Fault). 1 : 고장, 0 : 정상', '우진200량-3단계'), ('f9d96264-f8c4-4e87-b5db-2c8b44856e01', '220', 'LFF1K ', 'LINE FLOW FANS CONTACTOR 1 ON(LINE FLOW FANS CONTACTOR 1 CLOSED)', '그 외의 경우 : 0, 접촉기 ON시 : 1', 'Woojin', 'M2', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'LFF1K = LINE FLOW FANS CONTACTOR 1 ON(LINE FLOW FANS CONTACTOR 1 CLOSED). 그 외의 경우 : 0, 접촉기 ON시 : 1', '우진200량-3단계'), ('f9fab657-67d4-4751-a1a4-a5b812afef6f', '1195', 'FDUST1 ', '1호차 미세먼지 농도(Fine Dust Car1)', '0 ~ 255 (㎍/㎥)', 'Woojin', 'AIRP', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'FDUST1 = 1호차 미세먼지 농도(Fine Dust Car1). 0 ~ 255 (㎍/㎥)', '우진200량-3단계'), ('fa3cc0fc-af39-4e0c-874d-71189627d054', '531', 'CREF2F ', '전자접촉기 증발기 2 고장(Car Room Evaporator Fan 2 Fault)', '1 : 고장, 0 : 정상', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'CREF2F = 전자접촉기 증발기 2 고장(Car Room Evaporator Fan 2 Fault). 1 : 고장, 0 : 정상', '우진200량-3단계'), ('fa717f88-b4ae-4d95-920c-2215a1ae9be8', '1145', 'DDS2-3F ', '3호차 미세먼지센서2 고장상태(Dust Detector Sensor AP2 Car3 Fault)', '1 : 고장, 0 : 정상', 'Woojin', 'AIRP', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'DDS2-3F = 3호차 미세먼지센서2 고장상태(Dust Detector Sensor AP2 Car3 Fault). 1 : 고장, 0 : 정상', '우진200량-3단계'), ('fa84e7dc-c870-4993-bd24-80908cd7aaa3', '466', 'FD_SDR ', '자차에 화재신호가 검지될 경우(Fire Detected)', '0 : 정지, 1 : 동작', 'Woojin', 'HVAC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'FD_SDR = 자차에 화재신호가 검지될 경우(Fire Detected). 0 : 정지, 1 : 동작', '우진200량-3단계'), ('fa87cb21-54ae-4149-a9d5-b9f330cba6a3', '263', 'ASCOCK2 ', 'AS 압력 코크 스위치2 미동작(NO AIR SPRING CUT-OUT COCK #2)', 'AS cock cutout 시 : 0, 그 외의 경우 : 1', 'Woojin', 'T2', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'ASCOCK2 = AS 압력 코크 스위치2 미동작(NO AIR SPRING CUT-OUT COCK #2). AS cock cutout 시 : 0, 그 외의 경우 : 1', '우진200량-3단계'), ('fa881963-5b76-4197-8e43-1c49dbac7aae', '958', 'RMD6-7F ', '노선안내표시기6-7 통신 상태(ROUTE MAP DISPLAY 6-7 FAULT)', '0 : 통신정상, 1 : 통신고장', 'Woojin', 'PIC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'RMD6-7F = 노선안내표시기6-7 통신 상태(ROUTE MAP DISPLAY 6-7 FAULT). 0 : 통신정상, 1 : 통신고장', '우진200량-3단계'), ('faa7e32a-937d-436c-a9cd-b14d895b67a8', '847', 'PS ', '역행 상태(Powering State)', null, 'Woojin', 'PSD', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'PS = 역행 상태(Powering State). ', '우진200량-3단계'), ('faaad96b-0bb0-40f2-ad2b-f2595e09f329', '458', 'PA_PR ', '홍보방송 동작 정보(PUBLIC ADDRESS-PROMOTION)', '0 : 홍보방송 미 동작, 1 : 홍보방송 동작', 'Woojin', 'AVC', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'PA_PR = 홍보방송 동작 정보(PUBLIC ADDRESS-PROMOTION). 0 : 홍보방송 미 동작, 1 : 홍보방송 동작', '우진200량-3단계'), ('faaf2789-6942-4e75-8e3f-ce9096973ccc', '889', 'BUV_A ', '저전압 알람(Battery Under Voltage Alarm)', null, 'Woojin', 'BMS', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'BUV_A = 저전압 알람(Battery Under Voltage Alarm). ', '우진200량-3단계'), ('fac04835-5194-4b8d-88e6-e85d13e7f4ba', '845', 'RFGCOMF ', '차상/지상간 통신상태(RF Ground Communication Fault)', '1 : 통신연결, 0 : 통신없음, Default : 0', 'Woojin', 'PSD', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'RFGCOMF = 차상/지상간 통신상태(RF Ground Communication Fault). 1 : 통신연결, 0 : 통신없음, Default : 0', '우진200량-3단계'), ('fb506cc0-766f-4a56-91c7-75cc7299caf9', '865', 'WATCHDOG ', '워치독(Watchdog Counter)', null, 'Woojin', 'CMSB', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'WATCHDOG = 워치독(Watchdog Counter). ', '우진200량-3단계'), ('fba21183-5c5b-4c1e-8e0b-c4b21acc2524', '268', 'CPRS ', '강제완해 스위치 동작(COMPULSORY RELEASE)', '그 외의 경우 : 0, 스위치 ON시 : 1', 'Woojin', 'T2', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'CPRS = 강제완해 스위치 동작(COMPULSORY RELEASE). 그 외의 경우 : 0, 스위치 ON시 : 1', '우진200량-3단계'), ('fbb2c00e-9ff8-49c0-90f4-b76b7c904338', '782', 'INV1LV ', '인버터 1 저전압 검지 시(INV1 Input Low Voltage)', '0 : 이외의 조건, 1 : FC1 입력 저전압 검지 시', 'Woojin', 'SIV', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'INV1LV = 인버터 1 저전압 검지 시(INV1 Input Low Voltage). 0 : 이외의 조건, 1 : FC1 입력 저전압 검지 시', '우진200량-3단계'), ('fbea6daa-bd2c-40f1-9a63-8d4bb8ee78d0', '300', 'WATCHDOG ', '워치독(Watchdog Counter)', null, 'Woojin', 'ATC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'WATCHDOG = 워치독(Watchdog Counter). ', '우진200량-3단계'), ('fbf96783-6fbe-4af6-87cc-f417a58d9faf', '924', 'RMD4-1F ', '노선안내표시기4-1 통신 상태(ROUTE MAP DISPLAY 4-1 FAULT)', '0 : 통신정상, 1 : 통신고장', 'Woojin', 'PIC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'RMD4-1F = 노선안내표시기4-1 통신 상태(ROUTE MAP DISPLAY 4-1 FAULT). 0 : 통신정상, 1 : 통신고장', '우진200량-3단계'), ('fc4840e8-8c84-4962-8755-cb474ff2f6ef', '1133', 'DDS2-2F ', '2호차 미세먼지센서2 고장상태(Dust Detector Sensor AP2 Car2 Fault)', '1 : 고장, 0 : 정상', 'Woojin', 'AIRP', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'DDS2-2F = 2호차 미세먼지센서2 고장상태(Dust Detector Sensor AP2 Car2 Fault). 1 : 고장, 0 : 정상', '우진200량-3단계'), ('fc493a32-bd10-4e4d-aa19-aab4b5a9c665', '302', 'TRNO ', '열차번호(Train Number)', null, 'Woojin', 'ATC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'TRNO = 열차번호(Train Number).', '우진200량-3단계'), ('fcef5ca4-53e4-420a-a55a-f02dca8c3354', '733', 'MCOKNO ', 'MCOK 고착(MCOK NO Open)', '0 : 정상, 1 : 고장검지', 'Woojin', 'VVVF', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'MCOKNO = MCOK 고착(MCOK NO Open). 0 : 정상, 1 : 고장검지', '우진200량-3단계'), ('fd277e4d-e14e-4eb4-90df-5ad78442c739', '996', 'SCAM3-1F ', '1호차 1번 CCTV 카메라 고장상태(SALOON CAMERA 1-1 FAULT)', '0 : 정상 상태 (상시 녹화 중), 1 : 카메라 고장 시', 'Woojin', 'NVR', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'SCAM3-1F = 1호차 1번 CCTV 카메라 고장상태(SALOON CAMERA 1-1 FAULT). 0 : 정상 상태 (상시 녹화 중), 1 : 카메라 고장 시', '우진200량-3단계'), ('fd2f7f75-c0d4-436c-9421-ea7e94b913f5', '279', 'LFF2K ', 'LINE FLOW FANS CONTACTOR 2 ON(LINE FLOW FANS CONTACTOR 2 CLOSED)', '그 외의 경우 : 0, 접촉기 ON시 : 1', 'Woojin', 'T2', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'LFF2K = LINE FLOW FANS CONTACTOR 2 ON(LINE FLOW FANS CONTACTOR 2 CLOSED). 그 외의 경우 : 0, 접촉기 ON시 : 1', '우진200량-3단계'), ('fd42280d-9913-4c81-b837-d3959c9e5634', '1097', 'MEMF ', 'CPM 내부 메모리에 쓰기 중 오류 발생(Memory Full)', '0 : 정상, 1 : 오류', 'Woojin', 'EVR', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'MEMF = CPM 내부 메모리에 쓰기 중 오류 발생(Memory Full). 0 : 정상, 1 : 오류', '우진200량-3단계'), ('fe191a98-3158-44c6-9fe4-a66d28d677b7', '171', 'COPANTO2 ', '판토2 코크 차단 상태(NO PANTOGRAPH CUT-OUT COCK2)', '그 외의 경우 : 0, 코크차단시 : 1', 'Woojin', 'M1', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'COPANTO2 = 판토2 코크 차단 상태(NO PANTOGRAPH CUT-OUT COCK2). 그 외의 경우 : 0, 코크차단시 : 1', '우진200량-3단계'), ('fe638a5a-7c0f-4c55-841f-be408bb6c19e', '1039', 'SCAM2-7R ', '7호차 2번 CCTV 카메라 녹화중(SALOON CAMERA 2-7 RECORD)', '0 : 이외의 조건, 1 : 이벤트 녹화 중', 'Woojin', 'NVR', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'SCAM2-7R = 7호차 2번 CCTV 카메라 녹화중(SALOON CAMERA 2-7 RECORD). 0 : 이외의 조건, 1 : 이벤트 녹화 중', '우진200량-3단계'), ('fe794f31-c3be-4476-83d6-b90e3be6adbc', '384', 'AMPOVOL ', 'PAMP 실외 볼륨정보(AMPLIFIER OUTSIDE VOLUMN)', '0~10', 'Woojin', 'AVC', '2025-10-10 07:23:48.639225+00', '2025-10-10 07:23:48.639225+00', 'AMPOVOL = PAMP 실외 볼륨정보(AMPLIFIER OUTSIDE VOLUMN). 0~10', '우진200량-3단계'), ('fe820401-58d4-4321-8877-9ce4469fa964', '1003', 'SCAM2-3F ', '3호차 2번 CCTV 카메라 고장상태(SALOON CAMERA 2-3 FAULT)', '0 : 정상 상태 (상시 녹화 중), 1 : 카메라 고장 시', 'Woojin', 'NVR', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'SCAM2-3F = 3호차 2번 CCTV 카메라 고장상태(SALOON CAMERA 2-3 FAULT). 0 : 정상 상태 (상시 녹화 중), 1 : 카메라 고장 시', '우진200량-3단계'), ('fea0b663-9458-4864-8f4b-6d6c92d14ddf', '1143', 'DDS4-3F ', '3호차 미세먼지센서4 고장상태(Dust Detector Sensor AP4 Car3 Fault)', '1 : 고장, 0 : 정상', 'Woojin', 'AIRP', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'DDS4-3F = 3호차 미세먼지센서4 고장상태(Dust Detector Sensor AP4 Car3 Fault). 1 : 고장, 0 : 정상', '우진200량-3단계'), ('ffaacf88-087e-495a-b4aa-5c55be2a1aa1', '934', 'RMD6-3F ', '노선안내표시기6-3 통신 상태(ROUTE MAP DISPLAY 6-3 FAULT)', '0 : 통신정상, 1 : 통신고장', 'Woojin', 'PIC', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'RMD6-3F = 노선안내표시기6-3 통신 상태(ROUTE MAP DISPLAY 6-3 FAULT). 0 : 통신정상, 1 : 통신고장', '우진200량-3단계'), ('ffc303ba-53a3-4bc5-8261-f834a29fa002', '856', 'GPSD1CNG ', '1계 지상 스크린도어 닫힘 NG(Ground PSD1 Closed NG)', '1 : NG, 0 : 정상, Default : 0', 'Woojin', 'PSD', '2025-10-10 07:23:48.759111+00', '2025-10-10 07:23:48.759111+00', 'GPSD1CNG = 1계 지상 스크린도어 닫힘 NG(Ground PSD1 Closed NG). 1 : NG, 0 : 정상, Default : 0', '우진200량-3단계'), ('ffdad53f-67a6-42ae-8da9-6e9d484b407c', '1099', 'ROMVER ', 'EVR 장치 보드의 프로그램 버전 정보(ROM Version)', null, 'Woojin', 'EVR', '2025-10-10 07:23:48.874447+00', '2025-10-10 07:23:48.874447+00', 'ROMVER = EVR 장치 보드의 프로그램 버전 정보(ROM Version). ', '우진200량-3단계'); \ No newline at end of file diff --git a/ori_data/Stations_rows.sql b/ori_data/Stations_rows.sql new file mode 100644 index 0000000..91262dd --- /dev/null +++ b/ori_data/Stations_rows.sql @@ -0,0 +1 @@ +INSERT INTO "public"."Stations" ("line_number", "station_id", "station_name", "station_map", "is_underground", "is_island", "is_exchange", "is_end", "has_siding_track", "has_signal_room", "etc1", "etc2", "etc3", "updated_at", "created_at", "id") VALUES ('1', '130', '구서', null, 'false', 'false', 'false', 'false', 'false', 'false', null, null, null, '2025-10-10 07:37:07.436477+00', '2025-10-10 07:37:07.436477+00', '09202d2b-4968-487f-a4ea-f43cf215fe10'), ('1', '132', '남산', null, 'true', 'false', 'false', 'false', 'false', 'false', null, null, null, '2025-10-10 07:37:07.436477+00', '2025-10-10 07:37:07.436477+00', '0f05883e-18ec-4a3f-81c8-03344df8022c'), ('1', '108', '동대신', null, 'true', 'false', 'false', 'false', 'false', 'false', null, null, null, '2025-10-10 07:37:07.436477+00', '2025-10-10 07:37:07.436477+00', '1c9bbddb-7fed-40b5-8e29-1f256639f390'), ('1', '106', '대티', null, 'true', 'true', 'false', 'false', 'false', 'false', null, null, null, '2025-10-10 07:37:07.436477+00', '2025-10-10 07:37:07.436477+00', '224e74d4-a3e3-4d6b-89dd-a21cedaca357'), ('1', '100.9', '신평기지구내', null, 'false', 'false', 'false', 'true', 'true', 'false', null, null, null, '2025-10-10 07:37:07.436477+00', '2025-10-10 07:37:07.436477+00', '251e7ac5-3509-4018-b9a7-eba88464435a'), ('1', '134.2', '노포입출고선', null, 'false', 'false', 'false', 'true', 'true', 'false', null, null, null, '2025-10-10 07:37:07.436477+00', '2025-10-10 07:37:07.436477+00', '25e09924-5da0-4c18-88f2-deb35c53bd5d'), ('1', '95', '다대포해수욕장', null, 'true', 'false', 'false', 'true', 'false', 'false', null, null, null, '2025-10-10 07:37:07.436477+00', '2025-10-10 07:37:07.436477+00', '34293430-07d4-4c1c-a621-04c02a596f7d'), ('1', '129', '장전', null, 'false', 'false', 'false', 'false', 'false', 'true', null, null, null, '2025-10-10 07:37:07.436477+00', '2025-10-10 07:37:07.436477+00', '3b332b1f-4d84-4f08-a3e0-f0605f2fc3e4'), ('1', '114', '초량', null, 'true', 'false', 'false', 'false', 'false', 'false', null, null, null, '2025-10-10 07:37:07.436477+00', '2025-10-10 07:37:07.436477+00', '3b9efd48-2195-4f77-9669-2faf929a06bb'), ('1', '115', '부산진', null, 'true', 'false', 'false', 'false', 'true', 'true', null, null, null, '2025-10-10 07:37:07.436477+00', '2025-10-10 07:37:07.436477+00', '3ce9979a-b2d9-4a50-963f-38a2e1200ae0'), ('1', '100.7', '신평회차선', null, 'false', 'false', 'false', 'true', 'true', 'false', null, null, null, '2025-10-10 07:37:07.436477+00', '2025-10-10 07:37:07.436477+00', '488942cb-87fd-482a-930f-a36261550e8b'), ('1', '134.1', '노포회차선', null, 'false', 'false', 'false', 'true', 'true', 'false', null, null, null, '2025-10-10 07:37:07.436477+00', '2025-10-10 07:37:07.436477+00', '4c71ab16-249f-4d50-b1be-80299f6dfa27'), ('1', '128', '부산대', null, 'false', 'false', 'false', 'false', 'false', 'false', null, null, null, '2025-10-10 07:37:07.436477+00', '2025-10-10 07:37:07.436477+00', '4e37035f-281d-4157-9c26-770e570178f8'), ('1', '109', '토성', null, 'true', 'false', 'false', 'false', 'false', 'false', null, null, null, '2025-10-10 07:37:07.436477+00', '2025-10-10 07:37:07.436477+00', '5801825b-77eb-48a8-940d-7c0e322d3ecf'), ('1', '119', '서면', null, 'true', 'false', 'true', 'false', 'false', 'false', null, null, null, '2025-10-10 07:37:07.436477+00', '2025-10-10 07:37:07.436477+00', '5925dcbd-f13b-48b8-aaa1-0331f15b6f53'), ('1', '110', '자갈치', null, 'true', 'false', 'false', 'false', 'false', 'false', null, null, null, '2025-10-10 07:37:07.436477+00', '2025-10-10 07:37:07.436477+00', '5be46249-4539-4cea-bdf5-ce4a81395bd3'), ('1', '116', '좌천', null, 'true', 'false', 'false', 'false', 'false', 'false', null, null, null, '2025-10-10 07:37:07.436477+00', '2025-10-10 07:37:07.436477+00', '5ec5cce9-812a-4499-a319-9ff3553794c9'), ('1', '117', '범일', null, 'true', 'false', 'false', 'false', 'false', 'false', null, null, null, '2025-10-10 07:37:07.436477+00', '2025-10-10 07:37:07.436477+00', '6d16806c-58bf-4cc3-9977-295c754e3690'), ('1', '96', '다대포항', null, 'true', 'false', 'false', 'false', 'false', 'false', null, null, null, '2025-10-10 07:37:07.436477+00', '2025-10-10 07:37:07.436477+00', '73f8287e-fa27-4f49-acc9-43f770b95a7c'), ('1', '124', '교대 ', null, 'true', 'false', 'true', 'false', 'false', 'false', null, null, null, '2025-10-10 07:37:07.436477+00', '2025-10-10 07:37:07.436477+00', '74e61d4b-a8d6-417d-aea0-c67fc93a9ac0'), ('1', '127', '온천장', null, 'false', 'false', 'false', 'false', 'false', 'false', null, null, null, '2025-10-10 07:37:07.436477+00', '2025-10-10 07:37:07.436477+00', '8065e1a1-262c-452b-94be-60f6951a9eb8'), ('1', '105', '괴정', null, 'true', 'false', 'false', 'false', 'false', 'false', null, null, null, '2025-10-10 07:37:07.436477+00', '2025-10-10 07:37:07.436477+00', '8080b177-f536-4cfd-acef-a77a0f879cd2'), ('1', '103', '당리', null, 'true', 'false', 'false', 'false', 'false', 'false', null, null, null, '2025-10-10 07:37:07.436477+00', '2025-10-10 07:37:07.436477+00', '8466e229-16d5-4875-b668-c1b1638c7311'), ('1', '133', '범어사', null, 'true', 'false', 'false', 'false', 'true', 'true', null, null, null, '2025-10-10 07:37:07.436477+00', '2025-10-10 07:37:07.436477+00', '87ceec0a-15ed-41eb-9ac9-16bdf0f9bce1'), ('1', '98', '신장림', null, 'true', 'false', 'false', 'false', 'false', 'false', null, null, null, '2025-10-10 07:37:07.436477+00', '2025-10-10 07:37:07.436477+00', '89d52346-6908-4975-baac-99a8cda2eddf'), ('1', '113', '부산', null, 'true', 'false', 'true', 'false', 'false', 'false', null, null, null, '2025-10-10 07:37:07.436477+00', '2025-10-10 07:37:07.436477+00', '91d32d7c-75ab-4503-adf9-62d9d47fde52'), ('1', '121', '양정', null, 'true', 'false', 'false', 'false', 'false', 'true', null, null, null, '2025-10-10 07:37:07.436477+00', '2025-10-10 07:37:07.436477+00', '9840d5a7-9620-4679-bcbc-3aeda3476dbd'), ('1', '104', '사하', null, 'true', 'false', 'false', 'false', 'false', 'true', null, null, null, '2025-10-10 07:37:07.436477+00', '2025-10-10 07:37:07.436477+00', '9b647539-8d7b-4f74-b762-5f3589d27246'), ('1', '131', '두실', null, 'true', 'false', 'false', 'false', 'false', 'false', null, null, null, '2025-10-10 07:37:07.436477+00', '2025-10-10 07:37:07.436477+00', 'a1b630e6-e6b0-46fb-8968-b8bea7fa5f15'), ('1', '134.3', '노포기지구내', null, 'false', 'false', 'false', 'true', 'true', 'false', null, null, null, '2025-10-10 07:37:07.436477+00', '2025-10-10 07:37:07.436477+00', 'a51c9151-dbb8-4eeb-a676-dbdc9b140eca'), ('1', '94', '다대회차선', null, 'true', 'false', 'false', 'true', 'true', 'false', null, null, null, '2025-10-10 07:37:07.436477+00', '2025-10-10 07:37:07.436477+00', 'a66525e5-5ede-4445-a32f-e9ffe9a13343'), ('1', '123', '연산', null, 'true', 'false', 'true', 'false', 'true', 'true', null, null, null, '2025-10-10 07:37:07.436477+00', '2025-10-10 07:37:07.436477+00', 'a682ef1a-c78c-4549-9251-a8d6b46fbe8b'), ('1', '101', '신평', null, 'false', 'false', 'false', 'true', 'true', 'true', null, null, null, '2025-10-10 07:37:07.436477+00', '2025-10-10 07:37:07.436477+00', 'af6333ef-3167-4309-a339-f301e6a7e7b8'), ('1', '107', '서대신', null, 'true', 'true', 'false', 'false', 'true', 'true', null, null, null, '2025-10-10 07:37:07.436477+00', '2025-10-10 07:37:07.436477+00', 'b0c4df20-2032-4d03-a526-283f7bb4f524'), ('1', '134', '노포', null, 'true', 'false', 'true', 'true', 'true', 'false', null, null, null, '2025-10-10 07:37:07.436477+00', '2025-10-10 07:37:07.436477+00', 'b159a2c6-ccce-4131-bbd6-08466ca8361c'), ('1', '100.8', '신평입출고선', null, 'false', 'false', 'false', 'true', 'true', 'false', null, null, null, '2025-10-10 07:37:07.436477+00', '2025-10-10 07:37:07.436477+00', 'b1b23654-c7ec-40d9-ac72-a2b80d3c390c'), ('1', '118', '범내골', null, 'true', 'true', 'false', 'false', 'false', 'true', null, null, null, '2025-10-10 07:37:07.436477+00', '2025-10-10 07:37:07.436477+00', 'b65c0318-f558-4a2b-8600-226ad16943ec'), ('1', '120', '부전', null, 'true', 'false', 'false', 'false', 'false', 'false', null, null, null, '2025-10-10 07:37:07.436477+00', '2025-10-10 07:37:07.436477+00', 'b78d9e9a-abee-4bfd-961a-4931d48510cf'), ('1', '102', '하단', null, 'true', 'false', 'false', 'false', 'false', 'false', null, null, null, '2025-10-10 07:37:07.436477+00', '2025-10-10 07:37:07.436477+00', 'b80f5752-445e-4484-aeea-c5cc5e83d02b'), ('1', '125', '동래', null, 'false', 'false', 'true', 'false', 'false', 'false', null, null, null, '2025-10-10 07:37:07.436477+00', '2025-10-10 07:37:07.436477+00', 'd0653bb7-87b5-45b8-beb6-e33fadd55484'), ('1', '99', '장림', null, 'true', 'false', 'false', 'false', 'false', 'false', null, null, null, '2025-10-10 07:37:07.436477+00', '2025-10-10 07:37:07.436477+00', 'd9ce0f89-cd61-437e-adaf-5d6edfa72742'), ('1', '100', '동매', null, 'true', 'false', 'false', 'false', 'false', 'false', null, null, null, '2025-10-10 07:37:07.436477+00', '2025-10-10 07:37:07.436477+00', 'dce6a12d-cc96-49e4-8b79-4f1d07eeb7ac'), ('1', '112', '중앙', null, 'true', 'true', 'false', 'false', 'false', 'true', null, null, null, '2025-10-10 07:37:07.436477+00', '2025-10-10 07:37:07.436477+00', 'e415de2e-1e0b-40a3-8837-cdb8235c4b21'), ('1', '126', '명륜', null, 'false', 'false', 'false', 'false', 'false', 'true', null, null, null, '2025-10-10 07:37:07.436477+00', '2025-10-10 07:37:07.436477+00', 'eb025ee0-d53e-496c-9dcf-374639d02fbb'), ('1', '111', '남포', null, 'true', 'false', 'false', 'false', 'false', 'false', null, null, null, '2025-10-10 07:37:07.436477+00', '2025-10-10 07:37:07.436477+00', 'f0f30b72-525a-40c3-a4c8-cddd1bb16f4f'), ('1', '97', '낫개', null, 'true', 'false', 'false', 'false', 'false', 'false', null, null, null, '2025-10-10 07:37:07.436477+00', '2025-10-10 07:37:07.436477+00', 'f42054bf-ee38-4578-bb6f-b3dc356e43ce'), ('1', '122', '시청', null, 'true', 'false', 'false', 'false', 'false', 'false', null, null, null, '2025-10-10 07:37:07.436477+00', '2025-10-10 07:37:07.436477+00', 'fd367056-883c-4f16-9ea0-ba608f5814c4'); \ No newline at end of file diff --git a/ori_data/drawer_abbreviation_rows.sql b/ori_data/drawer_abbreviation_rows.sql new file mode 100644 index 0000000..af2f61e --- /dev/null +++ b/ori_data/drawer_abbreviation_rows.sql @@ -0,0 +1 @@ +INSERT INTO "public"."drawer_abbreviation" ("id", "abb", "classification", "Related_drawings", "drawing_id", "created_at", "updated_at", "manufacturer", "term", "pages") VALUES ('008d16c2-aac9-449a-a05b-5a33b4268ed0', 'CE.DEFR', 'CARBODY EQUIPMENT', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'DEFROSTER', '37'), ('00a5004b-a3c1-4e5a-a22d-640ec817f52a', 'IDU4', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'INFORMATION DISPLAY UNIT 4', null), ('00d050bb-5d55-4d75-aa2e-4dc68a0b8977', 'VC.SWILO', 'VEHICLE COMMAND', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'INTERIOR LIGHTS ON SWITCH', '33'), ('00e4462f-1532-4210-ba8c-819ad56b7a1b', 'VC.DSWTTL', 'VEHICLE COMMAND', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'TIME TABLE LIGHT DIMMER SWITCH', '33'), ('014f8c32-30b8-42fc-b847-a8305f36e286', 'CE.FT3ILL', 'CARBODY EQUIPMENT', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'INTERIOR LIGHT 3 LEFT', '33'), ('0202205c-11eb-4b0f-8246-e65ffb0be076', 'AP.CBSUTU', 'AUXILIARY POWER(DC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'SUPPLY UNIT TU CIRCUIT BREAKER', '30-32'), ('026e4efb-7dcd-4c8a-8bc3-94abbd3493be', 'VC.RL1TC', 'VEHICLE COMMAND', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'TAIL CONTROL RELAY 1', '8'), ('035ac39c-2618-48d9-b633-1f09a7b9296d', 'FACKLpPB', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'FAULT ACKNOWLEDGE LAMP PUSH BUTTON', null), ('036ea657-01a7-4897-841a-82b6f19b3614', 'SO96VCB', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'SOCKET OUTLET 96 VOLT CIRCUIT BREAKER', null), ('039a0792-07a6-431b-aa5e-0cfd74693916', 'AP.DDBA#1', 'AUXILIARY POWER(DC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'BATTERY DIODE#1', '29'), ('039ead19-562d-4293-b042-a0f34ef05d92', 'AP.RL3APDR', 'AUXILIARY POWER(DC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'AP UNIT #3 RELAY', '03,51'), ('03a3ce70-cd5d-41e9-bd6d-ac9ad93590bd', 'TWCANT', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'TWC ANTENNA', null), ('043d735d-fa05-4862-a21e-91940994dcad', 'HV.MVPAN1', 'HIGH VOLTAGE', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'PANTOGRAPH 1 MAGNET VALVE', '24'), ('046ef1dc-cff3-4029-8ddd-0fd59514b156', 'MRPSBPR', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'MAIN RESERVOIR PRESSURE SWITCH BYPASS RELAY', null), ('0485e89e-abdb-411b-913c-80dd17c27aec', 'AP.CBSU1CU', 'AUXILIARY POWER(DC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'SUPPLY UNIT#1 CU CIRCUIT BREAKER', '29'), ('048febdc-2d73-4575-b18c-fb2d65ccc539', 'ACUTCB', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'AIRCON.UNIT THERSTAT CIRCUIT BREAKER', null), ('0575f49d-03c0-4805-b355-4b0011c56301', 'INDCLSW', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'INTERIORDCLIGHTSON/OFFSWITCH', null), ('06003182-a765-4385-9fbd-2cd44bcf6a73', 'BC.SWAS1CO', 'BRAKE AND COMPRESSED AIR', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'AIR SPRING CUT OUT COCK BOGIE1', '19-21'), ('060eb6ae-5ee9-40ee-942d-acf4b050b23b', 'RHT5L', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'ROOM HEATER 5 LEFT', null), ('0659788f-cdd5-4b2a-be1c-caf7792d874e', 'CT.ANTATCTWCR', 'CONTROL', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'ATC_TWC ANTENNA RIGHT', '47'), ('065c9874-1255-47fc-ad39-774a9fa06962', 'LFF1MO', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'LINE FLOW FAN 1 MOTOR', null), ('0784673a-7e27-49b7-bc96-a327bfe100d5', 'CE.LPDOR', 'CARBODY EQUIPMENT', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'DOOR OPEN INDICATING LAMPRIGHT', '39-40'), ('07f0830a-d1f2-4326-abe3-f2890eaec575', 'VC.PBDOR', 'VEHICLE COMMAND', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'DOOR OPEN RIGHT PUSH BUTTON', '39'), ('07f0d6a5-bf98-475f-a018-26291e35c9f5', 'CE.RLDIR', 'CARBODY EQUIPMENT', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'DOORS INTERLOCK RELAY RIGHT', '39-40'), ('089859b9-8731-402e-ba25-a927f0fe3614', 'BC.MCU', 'BRAKE AND COMPRESSED AIR', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'MAIN COMPRESSOR UNIT', '22'), ('094c82c3-b5d6-4ce4-8f64-7c9277881fc5', 'HV.RLP2PS', 'HIGH VOLTAGE', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'PANTOGRAPH 2 PRESSURE SWITCH RELAY', '24'), ('0970260b-8b82-4694-8623-05a8a6fcd9bc', 'ST2', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'SPEED SENSOR 2', null), ('0a233cd1-c868-4c5c-a986-eaaca8f9826c', 'CABHTLCB', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'CAB HEATER LEFT CIRCUIT BREAKER', null), ('0aa82911-9acd-4596-9842-5f3b1efcd84c', 'VC.WIMO', 'VEHICLE COMMAND', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'WIPER MOTER', '38'), ('0adc5d2d-9d28-4de3-acf2-74521932c507', 'ASPS2', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'AIR SPRING PRESURE SWITCH BOGIE 2', null), ('0bc7184e-1ce8-495d-bdb9-3e88ffb2b4c3', 'LFFCCB', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'LINE FLOW FAN CAB CIRCUIT BREAKER', null), ('0c417f53-73a1-47cd-8248-f2708195dfc1', 'DCPB3', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'DOOR CLOSE PUSH BUTTON 3', null), ('0cc3e8a1-57a7-4dc6-a29f-45ab143376b0', 'AP.CBDEFR', 'AUXILIARY POWER(AC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'DEFROSTER CIRCUIT BREAKER', '27'), ('0cd073b6-3766-4707-9a7e-dbc5d2b40831', 'CT.MMI', 'CONTROL', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'MAN-MACHINE INTERFACE', '47'), ('0cf533af-3a77-4755-ace5-1988336162a4', 'SU2TCCB', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'SUPPLY UNIT 2 TC CIRCUIT BREAKER', null), ('0d18cc74-e6fa-4343-9c8a-05b2088172dc', 'CE.HTR6R', 'CARBODY EQUIPMENT', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'ROOM HEATER 6 RIGHT', '36'), ('0d859fe9-7f6a-4508-b7a8-ce2df98a04f5', 'DO1CCCB', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'DIGITAL OUTPUTS GR 1 CC CIRCUIT BREAKER', null), ('0de93a4b-07d6-4929-a2a0-43626a66ca51', 'IDU1', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'INFORMATION DISPLAY UNIT 1', null), ('0e5189b8-7951-48ae-b6e5-15f96e5ff82e', 'CE.CRLFF1', 'CARBODY EQUIPMENT', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'LINE FLOWFANS CONTACTOR1', '37'), ('0e5d4f23-0b67-497f-91a8-1b3bacd323fd', 'BECUCB', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'BRAKE EBU CIRCUIT BREAKER', null), ('0e727105-f8c7-4588-8346-c8e81362f9e8', 'VC.RLVFM1', 'VEHICLE COMMAND', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'VEHICLE FULL MANUAL CONTROL RELAY1', '8'), ('0f7e3a25-920a-415d-83f8-0a42d0e7d78d', 'DROPB1', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'DOOR REOPEN PUSH BUTTON 1', null), ('1003b8ff-b086-4cac-9d1a-0ac5d037cbf0', 'STPRPB', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'STOP & PROCEED PUSH BUTTON', null), ('101321c4-33d6-4be5-ae94-1cc5f89f572b', 'AP.CBBMCB', 'AUXILIARY POWER(DC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'BATTERY MAIN CIRCUIT BREAKER', '29'), ('101c0936-8c5a-4051-862e-6d155036f1df', 'HV.PAN1', 'HIGH VOLTAGE', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'PANTOGRAPH 1', '15'), ('113a9754-f2a9-490a-9a09-5ad8b8c3463c', 'AP.CBCABACT', 'AUXILIARY POWER(DC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'CAB ACTIVATION CIRCUIT BREAKER', '29'), ('11444fda-ea44-4f73-8817-697e585e3116', 'VTFCB', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'VENTILATION FANS CIRCUIT BREAKER', null), ('118e8177-4210-4610-862e-98ce785ed9a2', 'DO4TCCB', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'DIGITAL OUTPUTS GR 4 TC CIRCUIT BREAKER', null), ('1197f423-c360-4313-a5bc-9f743c162988', 'CE.SP5RM', 'CARBODY EQUIPMENT', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'ROOM SPEAKER5', '41'), ('12996119-2fc8-4479-ae54-3d5672410218', 'MAMIL', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'MANUAL MODE INDICATION LED', null), ('12c577c6-323f-4f6f-a463-fcc8c14ca2b9', 'HV.TM3', 'HIGH VOLTAGE', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'TRACTION MOTOR 3', '15'), ('12da76bb-b21f-4455-a8be-f30ce71853f7', 'VC.SWLFF', 'VEHICLE COMMAND', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'LINE FLOW FANS SWITCH', '37'), ('12f68b32-65c1-48d4-8e38-85355f05bea4', 'DCPB1', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'DOOR CLOSE PUSH BUTTON 1', null), ('13607bef-b5fc-47ab-bd22-a47f0c86062a', 'ST4', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'SPEED SENSOR 4', null), ('14015b85-6c13-48b5-9a35-c5e560604acc', 'CE.FT9ILR', 'CARBODY EQUIPMENT', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'INTERIOR LIGHT 9 RIGHT', '33'), ('14aa7b57-35b0-4d45-b09d-9a6e258af08f', 'ET', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'EARTHING UNIT', null), ('1562ab48-988c-4ba4-94e2-08b7ea2abad6', 'DCOCCB', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'DOORS CLOSED IN OTHER CAR CIRCUIT BREAKER', null), ('16f9dab6-2b64-4325-adf4-f055ec2913ec', 'DOILL', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'DOOR OPEN INDICATING LAMP LEFT', null), ('1788d6b9-4147-4914-a5f7-aeca113645b4', 'AP.CBLVD', 'AUXILIARY POWER(AC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'LOAD VOLTAGE DETECT CIRCUIT BREAKER', '35'), ('17c1e34b-fce6-4394-be8d-d36e51dd0737', 'DEFR', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'DEFROSTER', null), ('17cd2aad-3c3a-4607-9efc-5e981c5bf81e', 'RHT6L', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'ROOM HEATER 6 LEFT', null), ('194d53ad-2b4e-45dc-9791-7ced570ede66', 'AP.CBAPDF', 'AUXILIARY POWER(AC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'AIR PURIFIER DUST FAN CIRCUIT BREAKER', '27-28'), ('19eb2f35-3c79-4e87-b1b1-ac9c5760f8b8', 'CT.ENCO', 'CONTROL', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'ENCODER', '8'), ('1a20f998-f8cc-4dd1-9d5a-b3d7eb016edf', 'AP.CBALPS', 'AUXILIARY POWER(DC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'ADVERTISING LIGHTING POWER SUPPLY CIRCUIT BREAKER', '029-032'), ('1a55019a-4d8a-49a7-ade1-517670d4a5f2', 'BC.MOACO', 'BRAKE AND COMPRESSED AIR', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'AUXILIARY COMPRESSOR MOTOR', '20'), ('1b3959cb-a3da-4119-a91a-eb10486f19f5', 'HV.LB', 'HIGH VOLTAGE', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'LINE BREAKER BOX', '15'), ('1b49dc13-cea4-4779-b110-db984c18e2c8', 'LFFSW', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'LINE FLOW FANS SWITCH', null), ('1b874c50-2fec-44ee-8e6e-4a3f469b3116', 'CE.FT6ILR', 'CARBODY EQUIPMENT', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'INTERIOR LIGHT 6 RIGHT', '33'), ('1bd64c57-8a12-438e-a175-70c117809ef7', 'APESW', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'AUXILIARY POWER EARTHING SWITCH', null), ('1c7e486e-c4d6-4189-838e-005642c0e116', 'ATCUCB', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'ATC FRAME UNIT CIRCUIT BREAKER', null), ('1cd06c46-9e6b-474a-8635-c5ca0cc6b823', 'TRAANT', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'TRA ANTENNA', null), ('1d05f90a-434f-4ae5-a2a4-62863808939a', 'CE.FT4ILL', 'CARBODY EQUIPMENT', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'INTERIOR LIGHT 4 LEFT', '33'), ('1d17dc74-f035-41f9-a85e-bd5742f19e4d', 'SBAILp', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'SECURITY BRAKE APPLIED INDICATION LAMP', null), ('1d7cd9e7-895d-49a1-a782-abbaf9b27f26', 'BATCOR', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'BATTERY CONTACTOR OFF RELAY', null), ('1dcc5af2-1653-43f5-bd3f-4ab7c1a35001', 'CCU', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'CAR COMPUTER UNIT', null), ('1e90990b-38f8-456e-9906-441505a260a6', 'ILFLTL6', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'INTERIOR LIGHT FLUORESCENT TUBE 6 LEFT', null), ('1e9253cc-ad53-45ce-a4b1-dc877fbded79', 'PANDLBO', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'PANTO.DOWN/LINEBREAKEROPEN', null), ('1ee85d9e-f911-421d-b6c6-4013c7e13b49', 'TWCUCB', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'TWC FRAME UNIT CIRCUIT BREAKER', null), ('1f2be6b5-f08b-4377-af5d-030d3d07d5d6', 'PANR', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'PANTOGRAPH RELAY', null), ('1f9fd909-311c-41ec-b317-1284634d9c7e', 'AP.CBPSDU', 'AUXILIARY POWER(DC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'PLATFORM SCREEN DOOR UNIT CIRCUIT BREAKER', '29'), ('1fbeef4f-12bd-4534-9166-769a35aab78b', 'DBRe', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'DYNAMIC BRAKE RESISTOR', null), ('1fff50f5-46f2-4673-b07c-59167cf81878', 'MCMSE', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'MAIN COMPRESSOR STARTING EQUIPMENT', null), ('200c5834-95e8-4c57-ba56-3f6846343a12', 'CE.PWAU1', 'CARBODY EQUIPMENT', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'POWER AMP LIFIER UNIT1', '41-44'), ('2075d8ba-7be9-43a7-8600-d4faa95573b0', 'VC.PBDROR', 'VEHICLE COMMAND', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'DOOR REOPEN RIGHT PUSH BUTTON', '39'), ('207a4fcb-1f52-486e-8333-bdeae1868404', 'HV.RLP1PS', 'HIGH VOLTAGE', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'PANTOGRAPH 1 PRESSURE SWITCH RELAY', '24'), ('219895ff-746b-4997-800a-dbecf4ad9ff5', 'AP.CBIL', 'AUXILIARY POWER(DC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'INTERIOR LIGHTS CIRCUIT BREAKER', '29-30'), ('21a6b409-83c3-4fe7-80ab-cf9ad5295764', 'DU', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'DISPLAY UNIT', null), ('222fc849-c541-4c21-88a1-f2e2b049fadb', 'BC.ST4', 'BRAKE AND COMPRESSED AIR', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'SPEED SENSOR 4', '19-21'), ('2307be8c-d2bd-4d7a-9589-993efae72f2a', 'VC.PBPABRR', 'VEHICLE COMMAND', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'PARKING BRAKE RELEASE PUSH BUTTON', '18'), ('23bb2435-ee1e-4aa6-82c7-215d70facf9a', 'VC.SWERO', 'VEHICLE COMMAND', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'EMERGENCY/RESCUE OPERATION SWITCH', '23'), ('23c04f0b-a4bb-492e-933c-dd7da5a5875b', 'CE.LPHLR', 'CARBODY EQUIPMENT', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'HEAD LIGHT RIGHT', '34'), ('242687ce-3f00-452b-b23e-1ff343a85cc1', 'CDX11', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'RESCUE OPERATION CONNECTOR LEFT SIDE', null), ('24f05361-a6bc-4c1b-b6eb-9ba230449382', 'CDX5', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'AC-POWER CONNECTOR B-END LEFT SIDE', null), ('2513290a-fb53-4e0a-aaf4-a91aaffe3c6d', 'FL', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'FILTER REACTOR', null), ('2526b8c4-ef45-4d0f-b8a3-c0d9cb71b72d', 'CHTL', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'CAB HEATER LEFT', null), ('25654ca9-0ad9-40dc-a7a9-f320ed7d2431', 'DEMORL', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'DOORS EMERGENCY OPEN RELAY LEFT', null), ('25922a74-18d6-4c8e-bb4e-ba596a8607ef', 'CE.MOVENT1', 'CARBODY EQUIPMENT', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'VENTILATION FAN 1 MOTOR', '37'), ('25abaccb-8b94-4048-bf87-91aec63f8ec2', 'SCBRMV', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'SECURITY BRAKE MAGNET VALVE', null), ('2632f90c-0e89-474d-a2fd-dcd858f6725e', 'TM2', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'TRACTION MOTOR 2', null), ('26ec386a-a524-420f-aaa4-b9006e9e9889', 'AP.CBVVFIC', 'AUXILIARY POWER(DC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'VVVF INVERTER CONTROL CIRCUIT BREAKER', '30-31'), ('27368e07-e0af-4d15-b66a-e6387f1171e3', 'HCR1', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'HEAD CONTROL RELAY 1', null), ('273c53b9-8335-4035-9317-7ae0e0681b40', 'EXTILp', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'EXTENSION SUPPLY INDICATION LAMP', null), ('27bbe938-16f4-492d-8557-490e2c2b748f', 'PANPS1', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'PANTOGRAPH 1 PRESSURE SWITCH', null), ('284ecfb4-762d-463c-928d-ab81695d17d6', 'CE.FT5ILL', 'CARBODY EQUIPMENT', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'INTERIOR LIGHT 5 LEFT', '33'), ('289d42e7-e523-4c2c-b751-0938db0396fe', 'CLRCB', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'CAB LIGHT RIGHT CIRCUIT BREAKER', null), ('28c1e5c5-1d27-4342-b55b-412d0d61e48d', 'CE.HTR2R', 'CARBODY EQUIPMENT', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'ROOM HEATER 2 RIGHT', '36'), ('2917deda-b4cb-42af-871a-20e36035e3fa', 'ADVHE', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'ADV HEATER', null), ('29a340ce-cd64-4d09-9c89-9c20e8065396', 'CE.FT6ILL', 'CARBODY EQUIPMENT', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'INTERIOR LIGHT 6 LEFT', '33'), ('29d555d2-d597-42de-bdea-6902f12d896a', 'RSPK3', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'ROOM SPEAKER 3', null), ('2a10b14a-f66a-4960-8704-f65241e3f8b3', 'BC.CRACMC', 'BRAKE AND COMPRESSED AIR', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'AUXILIARY COMPRESSOR MOTOR CONTACTOR', '20'), ('2a9b6652-0ba6-47f2-9b94-e2ac0e571bf6', 'LFF3MO', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'LINE FLOW FAN 3 MOTOR', null), ('2afa12f9-f278-43c3-92b7-908b8c729498', 'CE.MOLFF2', 'CARBODY EQUIPMENT', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'LINE FLOW FAN2MOTOR', '37'), ('2b341833-69e6-4f02-8b78-ac52aa3a5728', 'HV.RLPANDN', 'HIGH VOLTAGE', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'PANTO GRAPH DOWN RELAY', '24'), ('2b3c89f1-c648-47ae-9f42-c46ca64f5388', 'BC.CMG', 'BRAKE AND COMPRESSED AIR', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'COMPRESSOR MOTOR GOVERNOR PRESSURE SWITCH', '22'), ('2c8a8b8b-1522-4fc4-88b6-b01b6f37f0f8', 'LFFCR', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'LINE FLOW FANS CONTACTOR', null), ('2d00c6cc-57ee-4967-b25b-9447d50f2fcd', 'VC.PBDOL', 'VEHICLE COMMAND', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'DOOR OPEN LEFT PUSH BUTTON', '39'), ('2d5b7f75-24fa-4875-978f-c3b44de878a8', 'CE.LPTT', 'CARBODY EQUIPMENT', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'TIME TABLE LIGHT', '33'), ('2e17bfe0-dbb3-4feb-ac19-e2951af097db', 'SUMCU', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'SUPPLY UNIT MCU', null), ('2e2b9de3-4b63-4c68-8114-52c0bb3682fc', 'AP.CBAHORN', 'AUXILIARY POWER(DC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'AIR HORN CIRCUIT BREAKER', '29'), ('2e7f97ca-c898-4125-a5d2-9cdf1778c02c', 'EMBCOSW', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'EMERGENCY BRAKE CUTOUT SWITCH', null), ('2e84c047-becc-4261-b016-cce11bfc0184', 'AP.CBACO', 'AUXILIARY POWER(DC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'AUXILIARY COMPRESSOR CIRCUIT BREAKER', '30'), ('2e95b3ef-a10e-4236-941f-39e80ae88fe7', 'CE.LPHLL', 'CARBODY EQUIPMENT', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'HEAD LIGHT LEFT', '34'), ('2ef63afb-a412-4104-841c-cf63e9fbfc80', 'BC.RL3ERO', 'BRAKE AND COMPRESSED AIR', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'EMERGENCY/RESCUE OPERATION RELAY 3', '18'), ('2ef86934-3836-408d-974c-c3b045ee75c8', 'CE.HTCR', 'CARBODY EQUIPMENT', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'DRIVER'S SEAT(FAN) HEATER', '36'), ('2f68b2fd-4809-44b3-9c32-5d10dd9608ab', 'LFF2MO', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'LINE FLOW FAN 2 MOTOR', null), ('2f71b116-a448-4c3a-93f8-03c0b88a7ea2', 'DSTSUCB', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'DESTINATION SIGN UNITS CIRCUIT BREAKER', null), ('2f785007-4e2a-4cf4-8099-8b39d62446cd', 'VC.PBDROL(SIDE)', 'VEHICLE COMMAND', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'DOOR REOPEN LEFT PUSH BUTTON(SIDE)', '39'), ('2f9ca212-fdea-4ae0-a3bd-7ede3ce74809', 'HV.TM4', 'HIGH VOLTAGE', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'TRACTION MOTOR 4', '15'), ('2fa6d055-1160-40d1-b801-11b1da196ea8', 'AP.CBILIC', 'AUXILIARY POWER(DC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'INTERIOR LIGHT ILLUMINATION CONTROL CIRCUIT BREAKER', '29-30'), ('2fabda37-ad75-44d0-9796-9c0b44c6fec6', 'VC.ILDC', 'VEHICLE COMMAND', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'ALL DOOR CLOSED INDICATION LAMP', '39'), ('2ffa7f9f-47cc-48f1-a3b8-531e809cfa39', 'CDX7', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'DC-POWER CONNECTOR B-END LEFT SIDE', null), ('2ffc91a1-5a7b-4460-a58d-de58ccfca148', 'DOLPB2', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'DOOR OPEN LEFT PUSH BUTTON 2', null), ('300e8c7c-6e6d-49e4-8595-d3a8785f26ac', 'PABRAMV', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'PARKING BRAKE APPLY MAGNET VALVE', null), ('3010e0f6-cdd6-45ea-b382-5eb5d9b26510', 'CADRU', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'CARD DRIVE UNIT', null), ('3066472c-8301-4a3f-9432-fa19e72b5577', 'CE.SP4RM', 'CARBODY EQUIPMENT', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'ROOM SPEAKER4', '41'), ('306e6147-a8c0-49eb-86fc-108d36bcf1dc', 'LFFCMO', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'LINE FLOW FAN CAB MOTOR', null), ('30d1010b-d568-4698-870d-e7106762c01a', 'AP.CRBAC', 'AUXILIARY POWER(DC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'BATTERY CONTACTOR', '29'), ('30e37859-c99e-4b41-be10-70e5a703c6c0', 'AP.CREXT', 'AUXILIARY POWER(AC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'EXTENTION SUPPLY CONTACTOR', '28'), ('324b27d9-0a0f-4408-9ed9-c51e94f82d54', 'ACUCB1', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'AIR CONDITION UNIT 1 CIRCUIT BREAKER', null), ('32a3cc65-0b6a-4921-b77a-1521fdaf9b00', 'SU1TCCB', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'SUPPLY UNIT 1 TC CIRCUIT BREAKER', null), ('32cdb238-cdd2-4a36-8cee-42cf20d11824', 'HV.MF1', 'HIGH VOLTAGE', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'MAIN FUSE 1', '15'), ('334e1416-421a-4ef5-b4e4-8dacff737171', 'BC.SWBRCO', 'BRAKE AND COMPRESSED AIR', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'BRAKE CUT OUT COCK ROOM', '19-21'), ('33a23082-0bab-4441-af16-30f4aed8462e', 'VC.PBPANU', 'VEHICLE COMMAND', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'PANTOGRAPH UP PUSH BUTTON', '24'), ('33c630ee-5078-4024-abe1-8b7cfef3d6b3', 'AP.CBDICU', 'AUXILIARY POWER(DC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'DIGITAL INPUTS CU CIRCUIT BREAKER', '29'), ('33fd0a56-6041-4a28-b7b4-2052fc8c176c', 'PAU', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'PA UNIT', null), ('348d714e-e534-4203-acf9-5770be84ca01', 'TLL', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'TAIL LIGHT LEFT', null), ('34e25996-3636-4333-ae06-01d5c4c5d6ea', 'AP.CBDCUL', 'AUXILIARY POWER(DC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'DCU LEFT CIRCUIT BREAKER', '29-32'), ('35137fd7-4e9b-4455-ac9b-e5eaa2c3ccab', 'REOU', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'RESCUE OPERATION UNIT', null), ('35794ada-9f69-4818-b9a8-44523d5355ec', 'ATCANTL', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'ATC ANTENNA LEFT', null), ('35cb2af2-511e-4705-8628-d9ec4cd7e40b', 'DSTSUL', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'DESTINATION SIGN UNIT LEFT', null), ('36285ea0-e2a0-4181-ae2d-8c49c7cf1a63', 'CT.CPCU', 'CONTROL', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'CENTRAL UNIT', '009-10'), ('363f63b4-056d-4107-99a6-bd271e6978bd', 'RHT7L', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'ROOM HEATER 7 LEFT', null), ('36794191-ae03-4d3b-9cca-242e3a8082e8', 'AP.CRAPDR', 'AUXILIARY POWER(DC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'ROOM FOR AP DUST FAN CONTACTOR', '03,51'), ('388988dd-ca28-4e3c-9100-9b796c20328a', 'ILFLTL4', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'INTERIOR LIGHT FLUORESCENT TUBE 4 LEFT', null), ('38ca353b-bf14-4bea-9656-87ae1a303ce5', 'VC.ILEBCO', 'VEHICLE COMMAND', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'EMERGENCY BRAKE CUTOUT INDICATION LAMP', '18'), ('3948043f-1ba4-445b-955f-8744b42c01f2', 'PANDLBOILp', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'PANTO.DOWN/LINEBREAKEROPENINDICATIONLAMP', null), ('397c7617-3941-4ecc-b2d1-824c174ad937', 'AP.CBDCUR', 'AUXILIARY POWER(DC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'DCU RIGHT CIRCUIT BREAKER', '29-32'), ('3a64ef31-fc5a-477c-a153-e298ff7c75bf', 'CHRE', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'CHARGING RESISTOR', null), ('3aa9ec5a-d346-4fb4-b7dc-acf7a6e70a35', 'HLBDSW', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'HEADLIGHTSBRIGHT/DIMSWITCH', null), ('3ac632b4-3e10-49cd-bb8f-a9de158a915a', 'ILFLTL3', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'INTERIOR LIGHT FLUORESCENT TUBE 3 LEFT', null), ('3ace2bc8-876a-497c-a73d-f6ed95406063', 'CDX6', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'AC-POWER CONNECTOR B-END RIGHT SIDE', null), ('3b34c8b6-fa3d-4558-80c1-f0d182a1cfb7', 'PABAPB', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'PARKING BRAKE APPLY PUSH BUTTON', null), ('3b371d01-b73a-482a-b36d-5ece7437641e', 'DEFRCB', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'DEFROSTER CIRCUIT BREAKER', null), ('3b6653c1-8376-472e-a7d2-5bf93599a706', 'DIRR', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'DOORS INTERLOCK RELAY RIGHT', null), ('3bea8b47-0a13-4ef0-b819-4508f6a72974', 'ANSMV1', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'ANTI-SKID VALVE BOGIE 1', null), ('3c3908a5-cb09-4db5-9cb7-3a5c0f8ff055', 'AP.CB1RHT', 'AUXILIARY POWER(AC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'ROOM HEATERS CIRCUIT BREAKER1', '35'), ('3c64b22d-8b19-4cf5-9071-5f660bf30f06', 'BCU', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'BRAKE CONTROL UNIT', null), ('3c7d3c11-3bbd-4afa-85fe-87bdd1acbe41', 'RHTCB1', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'ROOM HEATERS CIRCUIT BREAKER 1', null), ('3c8f6006-7c76-4314-a314-8c19d492ec5d', 'ILFLTL11', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'INTERIOR LIGHT FLUORESCENT TUBE 11 LEFT', null), ('3cc050de-1ac6-4550-9a1d-5966a76d94bb', 'AP.CBDOTU', 'AUXILIARY POWER(DC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'DIGITAL OUTPUTS TU CIRCUIT BREAKER', '30-32'), ('3dbceb1e-dbb4-4ea0-96e4-819680c688a0', 'VC.SWRESCBP', 'VEHICLE COMMAND', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'EXTENSION SUPPLY CONTACTOR MANUAL OPERATION SWITCH', '27'), ('3de099cd-70b0-4287-8382-03b74cd0e597', 'CE.HTR5R', 'CARBODY EQUIPMENT', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'ROOM HEATER 5 RIGHT', '36'), ('3df03019-03ec-44ca-b430-7b090e90314f', 'VC.PBPABRA', 'VEHICLE COMMAND', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'PARKING BRAKE APPLY PUSH BUTTON', '18'), ('3e7f8761-3626-4683-b39e-03b2f5e51a4b', 'TM4', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'TRACTION MOTOR 4', null), ('3e8a533d-f956-4d4d-8b9e-3b322ab8805d', 'AP.CBFDU', 'AUXILIARY POWER(DC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'FIRE DETECTION UNIT CIRCUIT BREAKER', '29-30'), ('3e9b5d73-d803-4dd2-be99-c2f28d262a55', 'AP.CBATCI', 'AUXILIARY POWER(DC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'ATC CONTROL INPUT CIRCUIT BREAKER', '29'), ('3e9f6058-bb81-482c-8a9c-5c9d201464a2', 'AP.RL2APDR', 'AUXILIARY POWER(DC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'AP UNIT #2 RELAY', '03,51'), ('3edf4d25-687f-43ab-a28d-f3d9251fd130', 'ILFLTL9', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'INTERIOR LIGHT FLUORESCENT TUBE 9 LEFT', null), ('3f7210d5-999b-4b0b-ab38-bf3ddc910e6c', 'ILFLTL2', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'INTERIOR LIGHT FLUORESCENT TUBE 2 LEFT', null), ('3f8147df-2f7d-4988-98ff-506e1b46f400', 'PAOPUL', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'PA OPERATING UNIT LEFT', null), ('3fdfdfb9-72ae-483b-b14f-a7973de470c1', 'ATC/OMSW', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'ATO/ATCMODESWITCH', null), ('403f64ac-616f-4b38-80e9-95670ffc1a4f', 'CE.SP1RM', 'CARBODY EQUIPMENT', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'ROOM SPEAKER1', '41'), ('40ad7e64-51f8-4714-84bb-8dba86729e83', 'BRCOCK2', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'BRAKE CUT OUT COCK BOGIE 2', null), ('40dc636f-dc51-4e2c-874a-d3e10e439d28', 'ILFLTR8', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'INTERIOR LIGHT FLUORESCENT TUBE 8 RIGHT', null), ('40dca78e-7107-4bfa-b251-c292cac08342', 'CE.SP3RM', 'CARBODY EQUIPMENT', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'ROOM SPEAKER3', '41'), ('41e427de-a37d-4e52-aea2-49c8c70b0e7d', 'CE.MOLFFC', 'CARBODY EQUIPMENT', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'LINE FLOW FANCAB MOTOR', '37'), ('41fa6540-ea7a-4be1-9bad-1061c6cdaf39', 'AP.CBPIB', 'AUXILIARY POWER(DC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'PASSENGER INFORMATION BOARD CIRCUIT BRAKER', '29-30'), ('42047c92-6257-4a00-b347-134a3a29ca4c', 'BC.SWBR2CO', 'BRAKE AND COMPRESSED AIR', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'BRAKE CUT OUT COCK BOGIE 2', '19-21'), ('422758bd-71b2-49bc-ae34-31356f16cf79', 'RHTTE', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'ROOM HEATERS THERMOSTAT', null), ('42770672-c923-4f98-a5fd-17138cf3f994', 'VC.PBEB', 'VEHICLE COMMAND', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'EMERGENCY BRAKE PUSH BUTTON', '18'), ('42ccea36-2aaf-46f9-b6d8-9fcf0982d747', 'VC.SWILDCO', 'VEHICLE COMMAND', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'INTERIOR DC LIGHTS ON SWITCH', '33'), ('42dfa1c6-f913-4fb3-8065-d0ccaaef1dd7', 'LFF5MO', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'LINE FLOW FAN 5 MOTOR', null), ('4455b94b-8e23-4669-8fc3-0c07f5be4c3a', 'CE.RLDCT', 'CARBODY EQUIPMENT', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'DOORS CLOSED IN TRAIN RELAY', '39'), ('447f35ea-9ba6-44fc-a4ec-19289f69d252', 'AP.CBTRPS', 'AUXILIARY POWER(DC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'TRAIN RESCUE POWER SOURCE CIRCUIT BREAKER', '29'), ('44cc68fb-e7a7-45a6-a504-11dc605dfefb', 'PANMV1', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'PANTOGRAPH 1 MAGNET VALVE', null), ('4524b446-16a1-4323-a1b5-d990f510e2fc', 'CE.RLDIL', 'CARBODY EQUIPMENT', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'DOORS INTERLOCK RELAY LEFT', '39-40'), ('459fb809-f3a2-4883-b40c-00d119408ccd', 'PABRRMV', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'PARKING BRAKE RELEASE MAGNET VALVE', null), ('4650d20c-5bf1-417b-a1ea-d5b067a30513', 'SO220V', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', '220V AC CONSENT', null), ('47191c59-d529-41d7-b86c-97c18a5476bd', 'AP.CBEC', 'AUXILIARY POWER(DC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'EMERGENCY CONTROLLER CIRCUIT BREAKER', '29-30'), ('475722f2-a588-4ec2-af42-7717b0e01fe2', 'EMIPU', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'EMERGENCY INTERPHONE UNIT', null), ('47d5039c-bf02-4624-8180-40ca9fbaed34', 'AP.CBMMI', 'AUXILIARY POWER(DC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'MAN-MACHINE INTERFACE CIRCUIT BREAKER', '29'), ('48903785-b45d-4675-8bb3-e767267c2b70', 'HV.PSPAN2', 'HIGH VOLTAGE', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'PANTOGRAPH 2 PRESSURE SWITCH', '24'), ('48ff021c-fe55-4cc3-964b-d2e437077819', 'TRU', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'TRAIN RADIO UNIT', null), ('49291664-c251-491c-aae0-d7e435a02079', 'AP.EMCB1', 'AUXILIARY POWER(DC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'EMERGENCY POWER#1 CIRCUIT BREAKER', '29'), ('494ca242-d1d5-4158-ba25-d9f8ceebdff4', 'BATVVM', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'BATTERY VOLTAGE VOLTMETER', null), ('49893819-ac51-48f2-8aa5-be5a40a23b00', 'FLTBZ', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'FAULT BUZZER', null), ('49b45e37-8c5a-4f8d-8ef2-cb5b2450f8c1', 'CDX1', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'LOW-TENSION CONNECTOR B-END RIGHT SIDE', null), ('4a706fd4-d2fc-4f37-b63b-90e9f640219d', 'HV.EB', 'HIGH VOLTAGE', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'EARTH BRUSH', '15'), ('4acd2c4a-1182-4563-85e7-6db2da2540c6', 'PAOPUR', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'PA OPERATING UNIT RIGHT', null), ('4b628087-e7b4-4be9-abb0-f2fc936b7cae', 'EBCOILp', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'EMERGENCY BRAKE CUTOUT INDICATION LAMP', null), ('4bc5b160-3a13-4f37-a8df-366ffb7905cb', 'BC.SWSBRCO', 'BRAKE AND COMPRESSED AIR', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'NO SERVICE BRAKE CUT OUT COCK', '19-21'), ('4c8cd180-edfe-4991-a1a2-81c7c1536ff0', 'PANULBCPB', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'PANTOGRAPHUP/LINEBREAKERCLOSEPUSHBUTTON', null), ('4d84d8f1-0317-4a1e-ad14-442e0c4a9aa0', 'VC.VMBA', 'VEHICLE COMMAND', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'BATTERY VOLTAGE VOLTMETER', '34'), ('4e7d9f38-00a0-487b-90b3-5f07c82e0239', 'ILFLTR12', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'INTERIOR LIGHT FLUORESCENT TUBE 12 RIGHT', null), ('4ef59094-1370-4c3a-aef9-2d62f88c1112', 'AP.CBLFF2', 'AUXILIARY POWER(AC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'LINE FLOW FANS CIRCUIT BREAKER 2', '27-28'), ('4f915950-6cae-4375-968c-2e1e8e8a4897', 'VC.PBDROR(SIDE)', 'VEHICLE COMMAND', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'DOOR REOPEN RIGHT PUSH BUTTON(SIDE)', '39'), ('501ae228-c36a-4b97-a0c4-7affad857735', 'BC.MVPABRA', 'BRAKE AND COMPRESSED AIR', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'PARKING BRAKE APPLY MAGNET VALVE', '18'), ('508d1d9f-9a4e-470f-97ec-544c355a38d4', 'EMTCB', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'EMERGENCY TRIP CIRCUIT BREAKER', null), ('50a5c100-8519-480c-a172-905664e38f85', 'VC.ATOSPB1', 'VEHICLE COMMAND', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'DEPARTURE PUSH BUTTON#1', '8'), ('50b73455-1447-42ae-a60a-ecb049c4282c', 'HV.TM2', 'HIGH VOLTAGE', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'TRACTION MOTOR 2', '15'), ('51e7c0b1-e482-4029-84ad-0b95bbea327c', 'DO5TCCB', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'DIGITAL OUTPUTS GR 5 TC CIRCUIT BREAKER', null), ('529f4762-e66e-40f4-a97b-38df79284c0a', 'HV.DBRe', 'HIGH VOLTAGE', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'DYNAMIC BRAKE RESISTOR', '15'), ('52e5fa25-5836-4a73-96f6-3f9c991dbb65', 'AP.CB2IL', 'AUXILIARY POWER(AC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'INTERIOR LIGHTS CIRCUIT BREAKER2', '27-28'), ('52f3fb32-ee45-415d-9418-36e19870ee88', 'VC.PBAIRH', 'VEHICLE COMMAND', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'AIR.HORN ON PUSH BUTTON', '34'), ('534512a3-096f-4d74-943d-3e3981ad73ba', 'BATCR', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'BATTERY CONTACTOR', null), ('538a58be-6cb6-485c-93c6-02aa7fa48fa6', 'ILFLTL5', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'INTERIOR LIGHT FLUORESCENT TUBE 5 LEFT', null), ('53e02b7a-f029-4e34-bd88-99aebe01145b', 'VC.TRDM1', 'VEHICLE COMMAND', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'DEAD MAN TIME RELAY 1(3 SEC)', '8'), ('540cd99d-8184-4f20-8e5f-bc96da5078e5', 'CE.CR1RHT', 'CARBODY EQUIPMENT', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'ROOM HEATERS CONTACTOR1', '35'), ('54bdb5bc-b43b-42b4-b112-27b10cc0e19b', 'CE.SP2RM', 'CARBODY EQUIPMENT', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'ROOM SPEAKER2', '41'), ('54d26447-3cf7-46d5-9522-aa6cf7eccb5c', 'VC.PBPDSE', 'VEHICLE COMMAND', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'PSD EMERGENCY PUSH BUTTON', '49'), ('54f96229-e109-4e54-af6e-428d3f9a4091', 'AP.CBSIVC', 'AUXILIARY POWER(DC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'SIVCONTROL CIRCUIT BREAKER', '29'), ('5530167b-93f9-4645-b87e-39ef57a7cd5e', 'EMTR', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'EMERGENCY TRIP RELAY', null), ('55a9d2d1-cb74-483a-ac0c-aa2bfd15102f', 'CE.CR1IL', 'CARBODY EQUIPMENT', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'INTERIOR LIGHTS CONTACTOR1', '33'), ('56a92621-d7f3-433b-ae30-19752dbb9d1b', 'BCPS', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'BRAKE CYLINDER PRESSURE SWITCH', null), ('5745116d-f570-4544-9f98-9f17ae0556bd', 'MCMU', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'MAIN COMPRESSOR UNIT', null), ('57e52990-c72e-44c1-bf27-47327394f019', 'AP.CBME', 'AUXILIARY POWER(DC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'METERS CIRCUIT BREAKER', '29'), ('5816eba7-8ae6-4443-8324-b262db12c5b5', 'AF', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'AUX.FUSE', null), ('593ac1d7-ca68-426f-929d-3c0166efa008', 'AP.CBATC1', 'AUXILIARY POWER(DC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'ATC#1UNIT CIRCUIT BREAKER', '29'), ('599adbbc-7737-47c9-8cfb-cfb021f4ec9c', 'AP.CBWIFI', 'AUXILIARY POWER(AC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'WIFIPOWER CIRCUIT BREAKER', '27-28'), ('59a78709-b55f-4af8-af5a-57f386a3921a', 'OCAR', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'OTHER CAB ACTIVATED RELAY', null), ('5a9793bc-afd7-489e-acda-5856aea41e85', 'VC.WIPUMO', 'VEHICLE COMMAND', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'WIPER PUMP MOTOR', '38'), ('5b03a415-2fdc-4e1f-b826-22bfc1c8682a', 'SB1KPHRL', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'SPEED BELOW 1KPH RELAY LEFT', null), ('5b636ab1-b3c4-4679-80e9-d5a9633e533f', 'VC.TREEL', 'VEHICLE COMMAND', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'EMERGENCY POWER LINE TIMER RELAY', '29'), ('5b8dea92-10db-46a3-9f18-2aee70eca2ba', 'CE.LPTLR', 'CARBODY EQUIPMENT', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'TAIL LIGHT RIGHT', '34'), ('5bdbca0c-fb76-4d7f-9d9a-e345acd1bd5b', 'HV.RLPAN', 'HIGH VOLTAGE', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'PANTO GRAPH RELAY', '24'), ('5c2dde8c-d30f-4f7f-93d2-199da035d3f9', 'HV.FL', 'HIGH VOLTAGE', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'FILTER REACTOR', '15'), ('5c4bc89c-fdba-41cc-a2b3-f1308fa28cf8', 'VC.PBEDO', 'VEHICLE COMMAND', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'ENDDOOR OPEN PUSH BUTTON', '50'), ('5c6ef778-9172-45b6-b66d-f0b3d43962dd', 'CE.TRCP', 'CARBODY EQUIPMENT', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'TRAIN RADIO CONTROL PANEL', '45'), ('5c722b88-0da4-4024-93c2-75d98ac7ab6e', 'DOILR', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'DOOR OPEN INDICATING LAMP RIGHT', null), ('5d53fca4-f263-4602-baa6-3b7bbff77ee0', 'VC.PBDCAC', 'VEHICLE COMMAND', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'DOOR CLOSE ATO CUTOUT PUSH BUTTON', '39'), ('5d691706-d298-4f35-a1f6-63759c7510d1', 'DOMSW', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'DOOR MODE SWITCH', null), ('5db34fb2-5c13-4028-bc1f-d34a96410c17', 'PBRR', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'PARKING BRAKE RELEASED RELAY', null), ('5ede30a2-ba3b-4208-9ada-94d964b3e5db', 'TTL', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'TIME TABLE LIGHT', null), ('5f0141d4-3209-44bd-9693-289285f5c687', 'INLSW', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'INTERIORLIGHTSON/OFFSWITCH', null), ('5ff7c32b-007f-4343-939d-34344f7577a0', 'BC.ADMV', 'BRAKE AND COMPRESSED AIR', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'AUTO DRAIN MAGNET VALVE', '22'), ('5ffd1b93-4f9a-442a-b102-0f80dc3c5ecb', 'AP.CRAPDC', 'AUXILIARY POWER(DC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'CAB FOR AP DUST FAN CONTACTOR', '03,51'), ('602786ac-18d1-45e6-9164-92f2870688f5', 'AP.SO100V', 'AUXILIARY POWER(DC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', '100V SOCKET OUTLET', '29'), ('6068238e-51d4-4b30-88bf-e297dea5a597', 'VC.RL3HC', 'VEHICLE COMMAND', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'HEAD CONTROL RELAY3', '8'), ('60c16b1e-0c75-4362-8860-8f5d6efe4eef', 'RHT8L', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'ROOM HEATER 8 LEFT', null), ('60f6b055-7b80-4f77-bafd-5afc1307684d', 'ST3', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'SPEED SENSOR 3', null), ('612bb6eb-794f-4051-a69b-eec2f434bf62', 'HTLLCB', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'HEAD/TAILLIGHTLEFTCIRCUITBREAKER', null), ('61beac66-4785-4a86-b4f5-e00aa8889f9d', 'BC.RL1ERO', 'BRAKE AND COMPRESSED AIR', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'EMERGENCY/RESCUE OPERATION RELAY1', '23'), ('64673709-0086-454f-8712-022fb0a485b7', 'CE.CR3IL', 'CARBODY EQUIPMENT', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'INTERIOR DC LIGHTS CONTACTOR', '33'), ('6480216d-aa68-420b-accc-89b9628e7f10', 'BC.CMSB', 'BRAKE AND COMPRESSED AIR', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'COMPRESSOR MOTOR STARTING BOX', '22'), ('64a90b79-21e0-48f2-8def-1c9645a5b3b9', 'DISPUCB', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'DISPLAY UNIT CIRCUIT BREAKER', null), ('64f4c9a2-5654-414d-b824-7dcfb216c614', 'LFF4MO', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'LINE FLOW FAN 4 MOTOR', null), ('65611f80-63ab-45e6-9b06-f11d319cd6d4', 'IDUCR', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'INFORMATION DISPLAY UNIT CONTACTOR', null), ('661fe807-d4a3-425c-b16f-062b6191c28f', 'VC.RLDB', 'VEHICLE COMMAND', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'MANUAL DRIVING BRAKE RELAY', '8'), ('666fab48-190d-4f4f-96d1-26299f427d04', 'VC.RLVFM2', 'VEHICLE COMMAND', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'VEHICLE FULL MANUAL CONTROL RELAY 2', '8'), ('6691781d-8caf-4a86-ba60-a2f1191cad69', 'BATCCDD', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'BATTERY CONTACTOR CONTROL DIODE', null), ('66bc568d-264d-4569-ba9f-58f218cb88e4', 'CE.SPMTR', 'CARBODY EQUIPMENT', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'MONITOR SPEAKER', '41'), ('671dc21b-fca7-495e-89b8-416a81b0dd49', 'CLLCB', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'CAB LIGHT LEFT CIRCUIT BREAKER', null), ('6776ab8a-2f0b-4532-8e98-b060c419eacf', 'AP.CBDSHTR', 'AUXILIARY POWER(AC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'DRIVER'S SEAT HEATER CIRCUIT BREAKER', '27'), ('6939a25d-0377-45f9-b337-552d17668dc0', 'ARR', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'DC ARRESTER', null), ('695fcf42-aba7-4997-93e6-6211385f149b', 'CE.HTR4L', 'CARBODY EQUIPMENT', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'ROOM HEATER 4 LEFT', '36'), ('697b5a83-1b52-47ac-a3c1-451cad50bc25', 'BATVMRE1', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'BATTERY VOLTAGE MEASURING RESISTOR 1', null), ('69e854f2-fcbd-4e8a-85c9-6c0d596ad2bb', 'TLR', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'TAIL LIGHT RIGHT', null), ('6bbe3432-9e5e-45a0-83ad-d0427d01c57f', 'VC.RL2TC', 'VEHICLE COMMAND', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'TAIL CONTROL RELAY 2', '8'), ('6be0df6e-b27c-43ea-a8ef-6956e21e1ed0', 'VC.SWADBP', 'VEHICLE COMMAND', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'ALL DOOR BY_PASS SWITCH', '39'), ('6c7a1580-f20a-4e41-9e8c-030340f2dd62', 'BOUCB', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'BRAKE OPERATION UNIT CIRCUIT BREAKER', null), ('6cadcf60-88ae-4967-bb83-d5951c3d0af5', 'BC.SWSBCO', 'BRAKE AND COMPRESSED AIR', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'NOSECURITYCUT OUT COCK', '19-21'), ('6d6a63b5-5d37-43b6-a345-da1e88db8c43', 'DSTCUCB', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'DESTINATION CONTROLLER UNIT CIRCUIT BREAKER', null), ('6dff88d4-47b0-4016-8366-8aa7fab65210', 'CE.FT2ILR', 'CARBODY EQUIPMENT', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'INTERIOR LIGHT 2 RIGHT', '33'), ('6e17043e-753c-4e6d-bedb-7cd1551d754c', 'ILFLTR6', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'INTERIOR LIGHT FLUORESCENT TUBE 6 RIGHT', null), ('6e7a6484-be4a-4da0-ac8e-f1a7f57b99ff', 'CE.FT5ILR', 'CARBODY EQUIPMENT', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'INTERIOR LIGHT 5 RIGHT', '33'), ('6e804fc9-fe5e-4507-9178-e5dab5645a81', 'EXTSC', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'EXTENTION SUPPLY CONTACTOR', null), ('6ee2ee89-9731-4ba2-a187-704dc28d3b99', 'VC.ILPAND', 'VEHICLE COMMAND', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'PANTO.DOWN INDICATING LAMP', '24'), ('6ef76a5c-de35-489a-88a9-19e342ba7013', 'BC.ST1', 'BRAKE AND COMPRESSED AIR', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'SPEED SENSOR1', '19-21'), ('6f053bdd-d7f5-496c-b0c2-0e94d82355c3', 'SUCCU', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'SUPPLY UNIT CCU', null), ('6f4548f9-8881-4b39-b26a-edd738cf6fad', 'AP.CBEMBR', 'AUXILIARY POWER(DC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'EMERGENCY BRAKE CIRCUIT BREAKER', '29'), ('6f885a16-1cc8-4995-9c37-f0a7f3f643bf', 'AP.CBDITU', 'AUXILIARY POWER(DC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'DIGITAL INPUTS TU CIRCUIT BREAKER', '30-32'), ('6f92283d-2da5-4065-97c1-f26af176d810', 'HV.IVS', 'HIGH VOLTAGE', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'INVERTER SWITCH', '25-26'), ('70039e17-60a7-41be-bd57-dfa8627a7a8c', 'VC.AHMV', 'VEHICLE COMMAND', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'AIR.HORN MAGNET VALVE', '34'), ('7014d59f-4e3c-4924-8c8e-593370b9b392', 'TRNUSU', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'TRAIN NUMBER SIGN UNIT', null), ('703b004e-0659-4c3f-beb1-ee77772b32bb', 'BC.RLEBRR', 'BRAKE AND COMPRESSED AIR', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'EMERGENCY BRAKE RELEASED RELAY', '18'), ('70834897-c7d1-4797-adf0-8bd83a3b3922', 'BRCOCK1', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'BRAKE CUT OUT COCK BOGIE 1', null), ('70c31c10-4bbd-43ac-b237-3b4ef95a6864', 'CE.LPDOL', 'CARBODY EQUIPMENT', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'DOOR OPEN INDICATING LAMPLEFT', '39-40'), ('71059e7b-5a7b-4ee9-ae1b-0287039d2aa7', 'AP.RL1APDR', 'AUXILIARY POWER(DC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'AP UNIT #1 RELAY', '03,51'), ('715b448f-882a-4ad9-bcda-6c2b9ffad087', 'EMTPB', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'EMERGENCY TRIP PUSH BUTTON', null), ('71cef5c9-a426-4ff2-98df-4bf20d6de06c', 'AP.DDBA#2', 'AUXILIARY POWER(DC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'BATTERY DIODE#2', '29'), ('720af881-d1fd-4e49-aa36-b5e148791903', 'CE.CRLFF2', 'CARBODY EQUIPMENT', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'LINE FLOWFANS CONTACTOR2', '37'), ('7265b0a7-8ccc-4990-8592-0ef5474c9376', 'DO3CCCB', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'DIGITAL OUTPUTS GR 3 CC CIRCUIT BREAKER', null), ('72f41365-40b8-465b-a6e4-ccbba2fca977', 'LFFCB', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'LINE FLOW FANS CIRCUIT BREAKER', null), ('732c8eb2-d4be-4890-9d80-1f3f903b6ced', 'DORPB2', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'DOOR OPEN RIGHT PUSH BUTTON 2', null), ('737a817d-332c-44a0-99b9-4c1cbf3bdf60', 'VC.RLSFD', 'VEHICLE COMMAND', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'SIV FAULT DETECTOR RELAY', '27'), ('73ec57c1-793c-4ae8-bd31-c0dac8e35a37', 'VC.PBDOL(SIDE)', 'VEHICLE COMMAND', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'DOOR OPEN LEFT PUSH BUTTON(SIDE)', '39'), ('75166be9-5d32-44f9-948b-8f7d9b8fdeb8', 'ACMCB', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'AUXILIARY COMPRESSOR CIRCUIT BREAKER', null), ('760590ec-3621-4926-842a-3f842fd0d7fa', 'CE.HTCL', 'CARBODY EQUIPMENT', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'CAB HEATER', '36'), ('76f5a0d5-d445-4bde-a4e0-a44f936ec7b7', 'MF1', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'MAIN FUSE 1', null), ('7731ecac-483e-4791-9523-55b5255b778b', 'HTLRCB', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'HEAD/TAILLIGHTRIGHTCIRCUITBREAKER', null), ('7755b410-3b8f-4476-8e36-2bc81a604301', 'HV.AF', 'HIGH VOLTAGE', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'AUX.FUSE', '15'), ('7770cd49-0d68-4dfb-9e63-6876a05b253e', 'TM3', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'TRACTION MOTOR 3', null), ('77cdcf14-1172-434e-81fb-dd6963c0d5a8', 'BC.PSACMG', 'BRAKE AND COMPRESSED AIR', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'AUXILIARY COMPRESSOR MOTOR GOVERNOR PRESSURE SWITCH', '20'), ('77ef8ef0-05da-4f93-87e1-6beeea2c23bd', 'PABRPB', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'PARKIN BRAKE RELEASE PUSH BUTTON', null), ('77f06ec8-cf49-4dea-a602-f663f4afa06d', 'BATLVIR', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'BATTERY LOW VOLTAGE INTERLOCK RELAY', null), ('781c9220-e3ef-4109-bd1b-552e5dd2153e', 'BATFUN', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'BATTERY FUSE NEGATIVE', null), ('7893695a-fe2b-4201-b975-e0f686bc3b21', 'VC.PBDCL(SIDE)', 'VEHICLE COMMAND', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'DOOR CLOSE LEFT PUSH BUTTON(SIDE)', '39'), ('79606c0d-96b3-4aa6-af15-dd434ecbaf97', 'VC.RL1HC', 'VEHICLE COMMAND', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'HEAD CONTROL RELAY 1', '8'), ('7b193202-5618-4c2d-b678-03deac5d5c01', 'BATFUP', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'BATTERY FUSE POSITIVE', null), ('7bdcaf56-cdcc-4bc2-a40d-12e15276058b', 'CT.ATCU', 'CONTROL', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'ATC UNIT', '046-047'), ('7d28edb7-0004-4ea9-b47b-05bb6f58ab7d', 'AP.EMCB2', 'AUXILIARY POWER(DC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'EMERGENCY POWER#2 CIRCUIT BREAKER', '29'), ('7da32a6d-e6ce-4d6b-a235-3b93ef7602db', 'CMCPS', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'COMPRESSOR CONTROL PRESSURE SWITCH', null), ('7dbb5379-19ba-4b9f-a258-240bb58f2b0f', 'HV.ARR', 'HIGH VOLTAGE', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'DC ARRESTER', '15'), ('7debf14f-b2ff-45b2-b722-6526e5ccfed4', 'VC.RLTZV', 'VEHICLE COMMAND', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'ZERO SPEED FOR ATC RELAY', '46'), ('7e0e3f50-2725-4c48-b8b8-a2e532699680', 'BC.CPECU', 'BRAKE AND COMPRESSED AIR', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'BRAKE ELECTRONIC UNIT', '19-21'), ('7ec0c3aa-f589-4a1d-9a69-896d9c681d8d', 'AP.CBTMDC', 'AUXILIARY POWER(DC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'TWO MAN DOOR CONTROL CIRCUIT BREAKER', '29'), ('7f0e8259-370f-4094-a54f-6821a347b21b', 'RSPK1', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'ROOM SPEAKER 1', null), ('7f9c25f9-2196-4d98-a1d9-1937d48705f3', 'CE.HTR5L', 'CARBODY EQUIPMENT', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'ROOM HEATER 5 LEFT', '36'), ('8018aa8a-4a7f-480b-a0d0-a15a318ef20b', 'PAN2', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'PANTOGRAPH 2', null), ('803045c5-234a-45ba-a9bc-2a88a3e46398', 'PBPS', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'PARKING BRAKE PRESSURE SWITCH', null), ('80351097-edc0-4c0b-8c97-f150c3b2f1e8', 'RHT1L', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'ROOM HEATER 1 LEFT', null), ('804db992-1f4c-4013-9def-c59dc65c9b99', 'ACMMO', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'AUXILIARY COMPRESSOR MOTOR', null), ('80b92879-5f5c-4228-ac68-d0574a837b0c', 'BC.ST2', 'BRAKE AND COMPRESSED AIR', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'SPEED SENSOR 2', '19-21'), ('81105735-b221-40f6-9fb1-c437cffbabf8', 'CE.PSDC', 'CARBODY EQUIPMENT', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'PLATFORM SCREEN DOOR CONTROLLER', '49'), ('816930c7-b0f1-4cfb-ba9e-2b39f2b8134b', 'DOLPB1', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'DOOR OPEN LEFT PUSH BUTTON 1', null), ('81d380ec-a505-43f7-ba40-643dd2f6e936', 'SUCCCB', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'SUPPLY UNIT CC CIRCUIT BREAKER', null), ('82dbbf2a-3778-4d7b-96bd-cb649f21e700', 'RHT4R', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'ROOM HEATER 4 RIGHT', null), ('83c014a7-cb6a-4343-b795-5bcd22b61b0e', 'VC.PBDCR', 'VEHICLE COMMAND', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'DOOR CLOSE RIGHT PUSH BUTTON', '39'), ('8429c811-ea43-4675-8cb9-1d0b7588b838', 'HV.VINV', 'HIGH VOLTAGE', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'VVVF INVERTER UNIT', '15-17'), ('843d6f86-f52a-4c2d-9b45-3b4165691380', 'ATCTACHO', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'ATC SPEED TACHOMETER', null), ('8459e89e-131f-4f7c-acb4-7a2663113691', 'BATSW', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'BATTERY SWITCH', null), ('846d3447-3d08-450a-ac8d-64bf3528738a', 'AP.DDBC', 'AUXILIARY POWER(DC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'BATTERY CONTACTOR CONTROL DIODE', '29'), ('8489b2db-56f2-429d-9141-898e7a2b337b', 'PAPAUCB', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'PA POWER AMPLIFIER UNIT CIRCUIT BREAKER', null), ('848a98d5-e20e-426b-b1cb-50560a02abaa', 'TM1', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'TRACTION MOTOR 1', null), ('8524d3b6-182c-4695-8332-7ab0e9b656fa', 'CE.CR2IL', 'CARBODY EQUIPMENT', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'INTERIOR LIGHTS CONTACTOR2', '33'), ('85521ad9-3dcd-4cf8-b7d5-65c12e07dd79', 'AP.CBEDC', 'AUXILIARY POWER(DC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'ENDDOOR CONTROL CIRCUIT BREAKER', '29-30'), ('8581876c-541c-4bf7-b47d-f7e1e9a4e2e0', 'CE.PIB', 'CARBODY EQUIPMENT', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'PASSENGER INFORMATION BOARD', '43'), ('8598afe9-4f9a-4f41-b661-c302b4565363', 'AP.CBWIPER', 'AUXILIARY POWER(DC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'WINDOW WIPER CIRCUIT BREAKER', '29'), ('860b2ea0-4c64-49d0-b8de-9abd84560949', 'REOEMBR', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'RESCUE OPERATION EMERGENCY BRAKE RELAY', null), ('873dfa10-fb9d-43e6-9a60-70fe44b75392', 'VC.PBCMPR', 'VEHICLE COMMAND', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'COMPULSORY RELEASE PUSH BUTTON', '19'), ('87eb6e6c-daae-48e8-84de-0cefe6cebf0d', 'MSPK', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'MONITOR SPEAKER', null), ('8821b5bc-a20d-4f4a-a4ad-78b88000d2ce', 'BATDD', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'BATTERY DIODE', null), ('886fa506-59b0-4f12-985b-490b7fe6455e', 'AP.CRBADC', 'AUXILIARY POWER(DC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'BATTERY DCCONTACTOR', '29'), ('88e18043-5bce-47ab-99da-435dc2fc1cd8', 'VC.PBDCR(SIDE)', 'VEHICLE COMMAND', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'DOOR CLOSE RIGHT PUSH BUTTON(SIDE)', '39'), ('89d4a36c-3da9-4bed-a5fc-9bbe865eb13a', 'RESOR1', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'RESCUE OPERATION RELAY 1', null), ('89def071-6be7-43dd-8474-3a2aa904be89', 'CE.SPOUTR', 'CARBODY EQUIPMENT', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'OUTSIDE SPEAKER RIGHT', '41'), ('89e85421-168b-49a7-b39b-1db52de88055', 'BC.RLPBR', 'BRAKE AND COMPRESSED AIR', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'PARKING BRAKE RELEASED RELAY', '18'), ('8a2945b3-d1bc-4018-a1db-c6700888ae4b', 'VC.RL2HC', 'VEHICLE COMMAND', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'HEAD CONTROL RELAY 2', '8'), ('8a2ead6b-a819-4b25-802a-7712cbbeff3d', 'PAOPUC', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'PA OPERATING UNIT CENTER', null), ('8a3c52d2-2a98-46c2-aaa8-cf8a3c36990e', 'AP.CBMCMC', 'AUXILIARY POWER(DC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'MAIN COMPRESSOR CONTROL CIRCUIT BRAKER', '29'), ('8a622b97-6b0f-4103-bda3-d9dcdf6e3b7b', 'AP.CBTBC', 'AUXILIARY POWER(DC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'TRACTION BRAKE CONTROLLER CIRCUIT BREAKER', '29'), ('8a99dec0-9cd2-40bd-915f-58b3d84bf247', 'DLMIL', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'DRIVERLESS MODE INDICATION LED', null), ('8a9d7f26-72de-4649-b6d8-6f968c094a7d', 'EMBRPB', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'EMERGENCY BRAKE PUSH BUTTON', null), ('8aa49860-87af-420b-b04b-87bf762e1670', 'AP.ACCON', 'AUXILIARY POWER(AC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'AIR CONDITION UNIT CONTROL CIRCUIT BREAKER', '35'), ('8aa9dec0-0f18-488f-ae1c-63146ecd40b6', 'ASCOCK1', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'AIR SPRING CUT OUT COCK BOGIE 1', null), ('8aea88b8-6d18-48e1-8d84-8e0ded368813', 'EMEBMR', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'NO EMERGENCY BRAKE IN EMERGENCY MODE RELAY', null), ('8cea30b0-a5c6-47ac-afe6-95539453efd4', 'ACMCO', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'AUXILIARY COMPRESSOR CONTACTOR', null), ('8df4ff66-c57f-474c-ad9a-787f6c0f3e26', 'ASPS1', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'AIR SPRING PRESURE SWITCH BOGIE 1', null), ('8eb236c7-c6f3-4d88-acd2-43a61be4ee81', 'ILFLTL1', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'INTERIOR LIGHT FLUORESCENT TUBE 1 LEFT', null), ('8eb457b3-9779-4d91-a303-f194604c2c0c', 'DITCCB', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'DIGITAL INPUTS TC CIRCUIT BREAKER', null), ('8f2d416b-98c2-41c8-81d1-a168c8a2b060', 'BC.PSPB', 'BRAKE AND COMPRESSED AIR', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'PARKING BRAKE PRESSURE SWITCH', '18'), ('8f54a48f-8763-4e8c-810d-7109b9d27445', 'VC.ATOSPB2', 'VEHICLE COMMAND', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'DEPARTURE PUSH BUTTON#2', '8'), ('9057ec76-b076-4865-af94-19405491ff42', 'CE.MOVENT2', 'CARBODY EQUIPMENT', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'VENTILATION FAN 2 MOTOR', '37'), ('9142c9e1-fd23-4af4-94de-4fef80d93b7c', 'AP.CBSO', 'AUXILIARY POWER(AC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', '22OV AC CONSENT CIRCUIT BREAKER', '27-28'), ('915c0d08-0501-4c71-b293-a1fcc7846628', 'PAABZ', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'PASSENGER ALARM BUZZER', null), ('9165cb51-a7ee-4be4-81a5-8295b07b25c9', 'RSPK2', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'ROOM SPEAKER 2', null), ('91828464-843b-4b1c-ae9b-6229ef693986', 'HV.RLPANUP', 'HIGH VOLTAGE', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'PANTO GRAPH UP RELAY', '24'), ('91c64b29-af11-46d2-8cec-72b5179e9a58', 'ECRE', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'ECONOMIZING RESISTOR', null), ('92adf151-454f-4d7b-935d-ba37dccd3232', 'VC.SWEBCO', 'VEHICLE COMMAND', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'EMERGENCY BRAKE CUTOUT SWITCH', '18'), ('92c90a3b-b692-47f3-aac3-31153653f507', 'BC.TADRU', 'BRAKE AND COMPRESSED AIR', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'AUTO DRAIN VALVE', '22'), ('9306cc32-2eb2-4f70-9d5a-03875de2bb01', 'VC.PBDCL', 'VEHICLE COMMAND', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'DOOR CLOSE LEFT PUSH BUTTON', '39'), ('933a34f8-74ab-4a5c-9e23-03205c25e7e8', 'VVVFCCB', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'VVVF INVERTER CONTROL CIRCUIT BREAKER', null), ('9389f8d8-82f7-4a12-92a3-e216505dd1a8', 'VC.GADPR', 'VEHICLE COMMAND', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'DUPLEX PRESSURE GAUGE', '34'), ('949cce8c-1b63-40b4-91e5-19f72a426764', 'SCPABRCB', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'SECURITY/PARKINGBRAKECIRCUITBREAKER', null), ('955986fa-e349-49fe-8c70-1fd62b107747', 'ILFLTR4', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'INTERIOR LIGHT FLUORESCENT TUBE 4 RIGHT', null), ('9579d062-7784-4f0f-ae72-d1c386efa078', 'AP.CBD01CU', 'AUXILIARY POWER(DC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'DIGITAL OUTPUTS 1 CU CIRCUIT BREAKER', '29'), ('95cb1bab-d33c-4573-83e0-886769801a91', 'AP.CBDIL', 'AUXILIARY POWER(DC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'DOOR INTERLOCK CIRCUIT BREAKER', '29'), ('966816bb-ae7a-46dc-8cd1-b6f59f011f85', 'MASCON', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'MASTER CONTROLLER', null), ('96998de5-425a-4136-8dc5-60cb6a91eef4', 'DEMORR', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'DOORS EMERGENCY OPEN RELAY RIGHT', null), ('973cc53e-5539-42ab-bbaf-55b7dabad946', 'HVACSW', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'HVAC MODE SWITCH', null), ('97c836db-107d-48c6-a66d-825e0ed86be9', 'BC.SWAS2CO', 'BRAKE AND COMPRESSED AIR', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'AIR SPRING CUT OUT COCK BOGIE2', '19-21'), ('97cc8c2d-0de1-4a17-9764-70e0b574c725', 'HLOOSW', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'HEADLIGHTSON/OFFSWITCH', null), ('97deb368-662c-461d-be15-a69dd9d4a718', 'BATBFMOC', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'BATTERY BOX FAN MOTOR CAPACITOR', null), ('98bd3573-e619-4187-8e0d-30cfa0419266', 'MRPS', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'MAIN RESERVOIR PRESSURE SWITCH', null), ('9914c5cb-9737-4f86-a07c-a7a411dc8e7d', 'PANDLBOPB', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'PANTOGRAPHDOWN/LINEBREAKEROPENPUSHBUTTON', null), ('99b4ef79-330c-45ea-b668-5d08ec3de143', 'SB1KPHRR', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'SPEED BELOW 1KPH RELAY RIGHT', null), ('99b8b989-454a-4e86-b114-f38b4f422e14', 'AP.CBSU2CU', 'AUXILIARY POWER(DC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'SUPPLY UNIT#2 CU CIRCUIT BREAKER', '29'), ('9aa0fd3f-9195-42b0-b75e-f363ab041f4d', 'CE.FT4ILR', 'CARBODY EQUIPMENT', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'INTERIOR LIGHT 4 RIGHT', '33'), ('9aac1cf4-6137-4ea7-8277-185fe9e7d42a', 'SIVC', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'SIV CONTROL', null), ('9aac6915-2e7f-486b-8730-23a1903f35da', 'AAPS', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'AUXILIARY AIR PRESSURE SWITCH', null), ('9b31a457-d59e-4c25-98a2-0971a7ea494b', 'VC.PBDROL', 'VEHICLE COMMAND', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'DOOR REOPEN LEFT PUSH BUTTON', '39'), ('9b4f1251-c98f-4224-89ee-1a9b53e85edc', 'AP.CB2RHT', 'AUXILIARY POWER(AC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'ROOM HEATERS CIRCUIT BREAKER 2', '35'), ('9b54a1dd-399b-4411-9811-fc5cdfde2b73', 'RHTCR2', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'ROOM HEATERS CONTACTOR 2', null), ('9bbbf0b7-3136-4bad-99b2-24ce1a1e783b', 'VC.RLTMC', 'VEHICLE COMMAND', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'TWOMAN DOOR CONTROL RELAY', '39'), ('9bcc6a25-1984-45a3-b21d-86b0e1bdc472', 'OSPKR', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'OUTSIDE SPEAKER RIGHT', null), ('9c4dd80b-615e-4313-8cff-6008c2e43cc7', 'VC.TRDM2', 'VEHICLE COMMAND', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'DEAD MAN TIME RELAY 2(5SEC)', '8'), ('9c5c5fa7-6576-4849-912b-0cdf2cf69961', 'VC.RLZV1', 'VEHICLE COMMAND', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'ZERO SPEED RELAY1', '8'), ('9cc84be2-a636-4a4f-b9de-4f6489d31328', 'CE.FT3ILR', 'CARBODY EQUIPMENT', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'INTERIOR LIGHT 3 RIGHT', '33'), ('9d89768d-3568-4b3a-aa8d-4e111d5f3cfc', 'AP.CBPANMV', 'AUXILIARY POWER(DC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'PANTO MAGNET VALVE CIRCUIT BREAKER', '30'), ('9da3fadc-0bea-4b7a-ae0a-e91145f204b1', 'CB220V', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', '220V AC CONSENT CIRCUIT BREAKER', null), ('9dd1f197-cac3-4313-ba59-e5cf606746c1', 'PAUCB', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'PUBLIC ADRESS UNIT CIRCUIT BREAKER', null), ('9e939264-6878-4b53-89e2-8219c35a057b', 'AP.CBMC', 'AUXILIARY POWER(AC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'MAIN COMPRESSOR CIRCUIT BREAKER', '27'), ('9ee02c51-e339-4593-9326-ff2af0ef18a3', 'DO1TCCB', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'DIGITAL OUTPUTS GR 1 TC CIRCUIT BREAKER', null), ('9f00f8c1-2d83-441f-996b-93047ba895de', 'DO6TCCB', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'DIGITAL OUTPUTS GR 6 TC CIRCUIT BREAKER', null), ('9fb67c08-5631-448d-ad92-8460f908bc39', 'LINEVVM', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'LINE VOLTAGE VOLTMETER', null), ('a0d0c253-463b-4b96-8b2c-2572b4a868d8', 'PBAILp', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'PARKING APPLIED INDICATING LAMP', null), ('a0d736eb-2e33-4d9c-9e56-2f66052042ec', 'VC.CRHLH', 'VEHICLE COMMAND', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'HEAD LIGHT BEAM HIGH CONTACTOR RELAY', '34'), ('a0e708c2-944d-49df-9af7-ce552b4f57d1', 'AP.CBTRU', 'AUXILIARY POWER(DC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'TRAINRADIO UNIT CIRCUIT BREAKER', '29'), ('a172229b-51df-40ec-bd97-64f187506d9d', 'AP.CBCCTV', 'AUXILIARY POWER(DC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'CLOSED CIRCUIT TELEVISION CIRCUIT BREAKER', '29'), ('a1e587a5-4472-4dab-a976-0f394e7a33b9', 'CE.FTCLR', 'CARBODY EQUIPMENT', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'CAB CEILING DC LIGHT', '33'), ('a1f6c2a2-702b-43c4-89f7-148b6ade3489', 'DPTPBR', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'DEPARTURE PUSH BUTTON RIGHT', null), ('a258d26c-82b6-4120-bbd5-420236b07ce7', 'AP.CBLPTT', 'AUXILIARY POWER(DC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'TIME TABLE LIGHT CIRCUIT BREAKER', '29'), ('a3058d3e-b202-4b68-b5af-df345e513823', 'AP.CBDC', 'AUXILIARY POWER(DC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'DOOR CONTROL CIRCUIT BREAKER', '29'), ('a33d168f-7dd0-43b8-ae2b-91050a786c3f', 'VC.SWHL', 'VEHICLE COMMAND', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'HEAD LIGHT SWITCH', '34'), ('a435dae0-bfec-4384-9dc1-84b6c078b498', 'RHT4L', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'ROOM HEATER 4 LEFT', null), ('a524bea3-7d22-4d44-bebf-8cdc74759991', 'CE.SPOUTL', 'CARBODY EQUIPMENT', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'OUTSIDE SPEAKER LEFT', '41'), ('a5573229-1952-43fd-a73c-ee650643ffb9', 'ILFLTR3', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'INTERIOR LIGHT FLUORESCENT TUBE 3 RIGHT', null), ('a662c62c-a63a-4143-8ad8-6fcac21bff65', 'LBHR', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'LINE BREAKER HOLD RELAY', null), ('a6e063dd-45b7-4860-b3a4-a314f9d173ca', 'BECUHT', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'BRAKE ECU BOX HEATER', null), ('a7191cfb-d5f4-46d1-8c52-c46ac0a56023', 'ST1', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'SPEED SENSOR 1', null), ('a7877b17-9214-4de0-8825-70d39a483709', 'DR4LSW', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'DOOR R4 LIMIT SWITCH', null), ('a7a185fa-3412-4c85-9d3b-c0cbabb89398', 'ILCB2', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'INTERIOR LIGHTS CIRCUIT BREAKER 2', null), ('a92aef4c-c803-4f5c-a29e-3aa1f5f5c281', 'CE.HTR6L', 'CARBODY EQUIPMENT', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'ROOM HEATER 6 LEFT', '36'), ('a9616f65-7998-4ec9-aebf-83fae8eed554', 'DROPB3', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'DOOR REOPEN PUSH BUTTON 3', null), ('a96868f6-69ab-4e0b-9132-8b89d7d240cd', 'PAPWAU', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'PA POWER AMPLIFIER UNIT', null), ('a9db05ba-e71d-4c0c-a575-e455c0597f72', 'TCR1', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'TAIL CONTROL RELAY 1', null), ('aa292925-d9dd-4a2a-a92f-3337025a61d7', 'DORPB1', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'DOOR OPEN RIGHT PUSH BUTTON 1', null), ('aa93a5e0-fec1-428d-b787-c67a9f5d95e9', 'BC.ST3', 'BRAKE AND COMPRESSED AIR', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'SPEED SENSOR3', '19-21'), ('aa9dafa2-9112-492d-a5c1-79fc9e76a992', 'RSPK4', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'ROOM SPEAKER 4', null), ('ab5eb608-9e0b-4e5b-a8ec-1be336db08c7', 'TNSCB', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'TRAIN NUMBER SIGN CIRCUIT BREAKER', null), ('ab825062-e803-4f18-9dd6-52ed31b12927', 'CE.EMIP1', 'CARBODY EQUIPMENT', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'PASSENGER EMERGENCY INTERPHONE1', '41'), ('ab9dba2f-a6ae-4a71-90e8-8560a7d1e507', 'CE.FT7ILL', 'CARBODY EQUIPMENT', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'INTERIOR LIGHT 7 LEFT', '33'), ('ac226269-983f-47ea-94d0-61dbfcdf00e8', 'DO4CCCB', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'DIGITAL OUTPUTS GR 4 CC CIRCUIT BREAKER', null), ('ac7f1e75-01c9-4e73-9905-0d4535b5aeb6', 'VC.CRHLL', 'VEHICLE COMMAND', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'HEAD LIGHT BEAM LOW CONTACTOR RELAY', '34'), ('acef985c-91d9-4338-88a5-bbaa73c4aa45', 'DO2TCCB', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'DIGITAL OUTPUTS GR 2 TC CIRCUIT BREAKER', null), ('ad02d8f9-72b3-4eaf-9384-b9edac2c60bd', 'CLFLTR', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'CAB LIGHT FLUORESCENT TUBE RIGHT', null), ('ad1b00c6-b31d-4088-984a-fae7118ecb81', 'CT.DISPU', 'CONTROL', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'DISPLAY UNIT', '9'), ('ad5196ab-5d4a-4101-a7a7-9cae58776bc6', 'ADVHECB', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'ADV HEATER CIRCUIT BREAKER', null), ('ad9ae366-3891-47c8-9d12-375dfe83c383', 'DSTCU', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'DESTINATION SIGN CONTROLLER UNIT', null), ('adeabd6d-638c-42ff-8a15-73f242db47d9', 'RHTCR1', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'ROOM HEATERS CONTACTOR 1', null), ('ae36fe6d-1cd9-44cb-98c3-de828c8ea6fd', 'ILFLTR5', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'INTERIOR LIGHT FLUORESCENT TUBE 5 RIGHT', null), ('ae922d85-d24b-4b39-9237-7ba2d21756b6', 'ILFLTL7', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'INTERIOR LIGHT FLUORESCENT TUBE 7 LEFT', null), ('af3beeef-0085-48d8-b130-e6ea8fa5d859', 'BC.MV1AS', 'BRAKE AND COMPRESSED AIR', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'ANTI-SKID VALVE BOGIE 1', '19-21'), ('afad0e83-538e-4e2b-be03-9bea691271e8', 'AP.CB3RHT', 'AUXILIARY POWER(AC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'ROOM HEATERS CIRCUIT BREAKER3', '35'), ('b1812c25-a7c5-4dcd-9fbc-7b994ad0d45d', 'CPRPB', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'COMPULSORY RELEASE PUSH BUTTON', null), ('b1a50c9c-60cb-4cb3-952d-53e6f176868e', 'HV.MVPAN2', 'HIGH VOLTAGE', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'PANTOGRAPH 2 MAGNET VALVE', '24'), ('b21efaff-8c5c-4ffa-9920-359ec286d6d6', 'AP.CBLFFC', 'AUXILIARY POWER(AC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'LINE FLOW FAN CAB CIRCUIT BREAKER', '27'), ('b2772de0-bd98-4d1b-b7a9-2d724108909d', 'ADU', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'ASPECT DISPLAY UNIT', null), ('b2bd09a6-9fcd-4185-855c-3bffead551cc', 'DROPB2', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'DOOR REOPEN PUSH BUTTON 2', null), ('b3230415-8b5d-4f93-8956-9a40a4cfdbbd', 'AP.CBAHeN', 'AUXILIARY POWER(AC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'AUXILIARY HEATER CIRCUIT BREAKER', '35'), ('b3aaeafe-e7ef-4482-b445-601b81d9fa59', 'MCMCB', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'MAIN COMPRESSOR CIRCUIT BREAKER', null), ('b43e2823-65a2-49a4-9a2c-4c3f84dda916', 'CE.HTR3L', 'CARBODY EQUIPMENT', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'ROOM HEATER 3 LEFT', '36'), ('b4e61117-d9bd-47d5-afa5-1e8b45a38099', 'ATOCU', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'ATO COMPUTER', null), ('b5590591-46a4-4262-927d-a5900e71d7bf', 'HV.PSPAN1', 'HIGH VOLTAGE', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'PANTOGRAPH 1 PRESSURE SWITCH', '24'), ('b5739de2-99ab-4495-8c74-dff2041f4e92', 'VC.SWHVAC', 'VEHICLE COMMAND', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'HVAC MODE SWITCH', '35'), ('b5aeb667-ad6c-4500-8527-589a176bb29d', 'HLL', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'HEAD LIGHT LEFT', null), ('b6e947b1-2705-45d8-897b-32d13f0c1826', 'VC.SWPBBP', 'VEHICLE COMMAND', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'PARKING BRAKE BY_PASS SWITCH', '24'), ('b74fef52-072f-401f-a860-498a61f822a2', 'EMBRCB', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'EMERGENCY BRAKE CIRCUIT BREAKER', null), ('b767d0d1-60fb-4fa3-8b64-9c2d4bfe38ca', 'CE.FT10ILR', 'CARBODY EQUIPMENT', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'INTERIOR LIGHT 1O RIGHT', '33'), ('b7ea25de-442f-4735-9aa8-258620242aa6', 'CDX8', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'DC-POWER CONNECTOR B-END RIGHT SIDE', null), ('b94a6f6e-a367-41d2-a150-2077db7d0766', 'DSTSUF', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'DESTINATION SIGN UNIT FRONT', null), ('ba3e8b7c-c3e8-4a65-8c44-520a8b65e7ad', 'AP.CBPAU#1', 'AUXILIARY POWER(DC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'POWER AMP LIFIER UNIT#1 CIRCUIT BREAKER', '29-30'), ('ba762bd3-7ff0-454b-8047-feb5afd0b2a4', 'ILCR2', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'INTERIOR LIGHTS CONTACTOR 2', null), ('bb800573-cd15-488e-8304-033ee863d8eb', 'PANPS2', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'PANTOGRAPH 2 PRESSURE SWITCH', null), ('bbbf10bf-ba90-4ac1-87af-5b2913b25f5e', 'BC.RL2ERO', 'BRAKE AND COMPRESSED AIR', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'EMERGENCY/RESCUE OPERATION RELAY2', '18'), ('bbd68d73-3143-4f34-84d3-beab6355931f', 'ILFLTR1', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'INTERIOR LIGHT FLUORESCENT TUBE 1 RIGHT', null), ('bc69a3e6-ce84-4144-af08-a477100556ca', 'RESOR2', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'RESCUE OPERATION RELAY 2', null), ('bcff2cab-c7e5-43ec-be7f-55231932cf66', 'ADRU', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'AIR DRYER UNIT', null), ('bd8d0353-b960-4ef5-b6e8-c49ceac7b3f4', 'VC.SWWC', 'VEHICLE COMMAND', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'WIPER CONTROL SWITCH', '18'), ('be080d1e-9a30-4272-9a10-c40012d1cb32', 'SCBRSW', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'SECURITY BRAKE SWITCH', null), ('be2cf2e1-8f4c-4534-9294-628886f1e298', 'AP.CBACU2', 'AUXILIARY POWER(AC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'AIR CONDITION UNIT 2 CIRCUIT BREAKER', '35'), ('be42a038-7903-4420-81cc-585a1e559192', 'BATCCCB', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'BATTERY CONTACTOR CONTROL CIRCUIT BREAKER', null), ('be471c2c-f60e-4ce5-a14b-85fce896712b', 'VC.SWPCBP', 'VEHICLE COMMAND', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'PSD CLOSE BY_PASS SWITCH', '49'), ('be613374-ebc9-40a9-ba70-eaf66a284dd3', 'HV.SIV', 'HIGH VOLTAGE', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'SIV BOX', '25'), ('be734a62-24c3-4aa8-8a2e-d0fadb49fa63', 'TRANT', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'TRAIN RADIO ANTENNA', null), ('bece246f-2dd1-4ac0-9440-6f279cb2ccd6', 'BATCIDR', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'BATTERY CONTROL IN DRIVERLESS RELAY', null), ('bfc1c06b-2a6d-4a3e-a8df-f5042007fea1', 'RHT2R', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'ROOM HEATER 2 RIGHT', null), ('c0295bd2-b1f3-498f-a05a-dadf3f934718', 'VC.ILBA', 'VEHICLE COMMAND', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'BRAKE APPLIED INDICATION LAMP', '18'), ('c05028a5-4929-4dc5-a5fa-7ee449e69824', 'LRR', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'LOAD REDUCTION RELAY', null), ('c0d39a2c-ff7b-46d2-a2d4-76f96be7ab86', 'VC.PBACOO', 'VEHICLE COMMAND', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'AUXILIARY COMPRESSOR ON PUSH BUTTON', '20'), ('c257a89b-df16-4aa7-b593-a66bd17949b4', 'RHT6R', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'ROOM HEATER 6 RIGHT', null), ('c25be056-d1a7-4621-b504-9798c12217e5', 'CE.MOLFF1', 'CARBODY EQUIPMENT', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'LINE FLOW FAN1MOTOR', '37'), ('c2c2a423-f190-476b-ad6d-53d49a2807c6', 'DO2CCCB', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'DIGITAL OUTPUTS GR 2 CC CIRCUIT BREAKER', null), ('c2ff5313-49cc-46ad-9eb4-4e448e1a029e', 'VC.ILDO', 'VEHICLE COMMAND', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'ALL DOOR OPEN INDICATION LAMP', '39'), ('c36bde40-dc42-4709-b404-48763bb9d29a', 'VC.ILOCA', 'VEHICLE COMMAND', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'OTHER CAB OCCUPIED INDICATION LAMP', '8'), ('c3998345-01eb-4dcc-a21a-538a6cacb4e9', 'BC.MV2AS', 'BRAKE AND COMPRESSED AIR', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'ANTI-SKID VALVE BOGIE 2', '19-21'), ('c3ebf8be-8d16-44a9-8195-1556508e255e', 'CE.LPTLL', 'CARBODY EQUIPMENT', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'TAIL LIGHT LEFT', '34'), ('c452f71e-6f54-4823-ac2f-91795b9d1049', 'BATCSO96V', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'BATTERY CHARGEING SOCKET 96 VOLT', null), ('c476acab-d640-4f54-ae53-4b6cce86e244', 'AP.CBLFF1', 'AUXILIARY POWER(AC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'LINE FLOW FANS CIRCUIT BREAKER 1', '27-28'), ('c4982198-88e5-4946-81bd-a22708ce36f7', 'AP.CBECCL', 'AUXILIARY POWER(DC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'CAB LIGHT CIRCUIT BREAKER', '29'), ('c4a7f4c5-1dbe-4729-b190-325143b5dc8a', 'RHT3R', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'ROOM HEATER 3 RIGHT', null), ('c4ea0bbb-1e06-434a-b349-d4954327d60b', 'AP.EMCB3', 'AUXILIARY POWER(DC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'EMERGENCY POWER#3 CIRCUIT BREAKER', '29'), ('c4f0dc11-96ff-4cb6-9dee-d153b7775213', 'ACMOPB', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'AUXILIARY COMPRESSOR ON PUSH BUTTON', null), ('c5431236-26d2-4972-9e04-d7d4f66fc7b7', 'DCOCR', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'DOORS CLOSED IN OTHER CAR RELAY', null), ('c5e76343-e959-4075-bb71-bbafb14d975b', 'AUMIL', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'AUTOMATIC MODE INDICATION LED', null), ('c6111fb3-e9a7-465e-a159-2ed77a1f0f06', 'RHT7R', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'ROOM HEATER 7 RIGHT', null), ('c63ca2d0-28ff-4f91-90f2-98f4616431ab', 'RHT5R', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'ROOM HEATER 5 RIGHT', null), ('c700cf9c-8864-4644-82cc-91fde53ff2ef', 'BC.SWBR1CO', 'BRAKE AND COMPRESSED AIR', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'BRAKE CUT OUT COCK BOGIE 1', '19-21'), ('c74e33e9-0c24-4504-a2b5-bca2af9d1cf1', 'BCPSR', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'BRAKE CYLINDER PRESSURE SWITCH RELAY', null), ('c754e608-880b-459d-9ed5-5bc49412a802', 'CE.FT9ILL', 'CARBODY EQUIPMENT', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'INTERIOR LIGHT 9 LEFT', '33'), ('c7dc21d2-8386-47a0-b640-d6e63903fada', 'CT.STATC', 'CONTROL', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'ATC SPEED TACHOMETER', '47'), ('c7e80019-d3c7-484c-b926-8d5657d0b238', 'DO6CCCB', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'DIGITAL OUTPUTS GR 6 CC CIRCUIT BREAKER', null), ('c86f9f47-8cd2-48a0-8dda-125e85a54365', 'HV.TM1', 'HIGH VOLTAGE', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'TRACTION MOTOR 1', '15'), ('c8ec4c9c-ab26-4ab9-b09e-e054235d82f0', 'CE.HTR1L', 'CARBODY EQUIPMENT', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'ROOM HEATER 1 LEFT', '36'), ('c96e3f42-fe58-435e-9f98-baeaba69af46', 'HLR', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'HEAD LIGHT RIGHT', null), ('ca2281ea-b98b-45db-af91-7fb366d5f986', 'AP.CBDISPU', 'AUXILIARY POWER(DC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'DISPLAY UNIT CIRCUIT BREAKER', '29'), ('cabbd681-4aee-4786-a6dd-52e7cf4fae3d', 'AP.CBRTD', 'AUXILIARY POWER(DC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'RADIO TRANSMISSION DEVICE CIRCUIT BREAKER', '29'), ('cbcfd31c-d28a-4c4a-88e9-994b07cf4d19', 'CE.FT8ILL', 'CARBODY EQUIPMENT', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'INTERIOR LIGHT 8 LEFT', '33'), ('cc05e47d-8607-4c49-a652-a91f53d5f6b9', 'ILFLTL12', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'INTERIOR LIGHT FLUORESCENT TUBE 12 LEFT', null), ('cc3c8575-993a-48a4-bc2c-d4a0b87d8488', 'VC.SWZSBP', 'VEHICLE COMMAND', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'ZERO SPEED BY_PASSSWTICH', '18'), ('cc4321ec-a18d-4887-bca4-3603ec421655', 'ILFLTL10', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'INTERIOR LIGHT FLUORESCENT TUBE 10 LEFT', null), ('cc4f1c7e-2177-4c56-9061-2f740b76d90a', 'CE.HTR4R', 'CARBODY EQUIPMENT', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'ROOM HEATER 4 RIGHT', '36'), ('cc829230-07ca-42ac-893e-55615338946c', 'PAACKPB', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'PASSENGER ALARM ACKNOWLEDGE PUSH BUTTON', null), ('cc88e8bf-9d50-45df-999d-83f55a196ebe', 'TCU', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'TRAIN COMPUTER UNIT', null), ('cc9a00eb-b684-4fe5-963d-f19ede2909a9', 'CE.MOLFF3', 'CARBODY EQUIPMENT', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'LINE FLOW FAN3MOTOR', '37'), ('cd494b01-c7d4-47e3-b6bd-5d06baa489c2', 'DO5CCCB', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'DIGITAL OUTPUTS GR 5 CC CIRCUIT BREAKER', null), ('cd759c6d-21cd-4d60-819d-c5221564e610', 'IDU2', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'INFORMATION DISPLAY UNIT 2', null), ('cd85efe0-1860-4ede-a027-50fe4e1e1e8b', 'DO3TCCB', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'DIGITAL OUTPUTS GR 3 TC CIRCUIT BREAKER', null), ('cde55cac-bb72-456c-bad9-6808963a6180', 'CE.FT10ILL', 'CARBODY EQUIPMENT', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'INTERIOR LIGHT 1O LEFT', '33'), ('cde62a40-8af9-4110-ae89-31425e0e7008', 'VC.ILPBA', 'VEHICLE COMMAND', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'PARKING BRAKE APPLIED INDICATING LAMP', '18'), ('ce0a521a-df7f-4d84-8313-ad5e7f795466', 'BC.TADRU', 'BRAKE AND COMPRESSED AIR', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'TWIN TOWER AIR DRYERUNIT', '22'), ('cf0d75d1-b264-4c54-92b3-0e48b723afc9', 'CDX13', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'RESCUE OPERATION CONNECTOR RIGHT SIDE', null), ('cf713290-3b18-4285-9aa1-df8a55454751', 'CPRILp', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'COMPULSORY RELEASED INDICATION LAMP', null), ('cf7b6f09-8627-4fd0-b0dd-9cd47947648b', 'AP.CBBECU', 'AUXILIARY POWER(DC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'BRAKE ELECTRONIC CONTROL CIRCUIT BREAKER', '029-032'), ('cf8db83e-69c4-419b-aa30-6ef386c678d8', 'CE.ACU2', 'CARBODY EQUIPMENT', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'AIR CONDITION UNIT 2', '35'), ('d01d9a17-ddbe-4ac9-8acb-03bf707646dc', 'DPTPBL', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'DEPARTURE PUSH BUTTON LEFT', null), ('d1526e2f-2b44-4709-95df-5066df9f889c', 'AP.RLEXT', 'AUXILIARY POWER(DC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'EXTENSION SUPPLY RELAY', '28'), ('d1aec918-23ec-489b-a61a-8890b7d55f9c', 'ILCR3', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'INTERIOR LIGHTS CONTACTOR 3', null), ('d2230c49-080e-455c-9d99-04db3548278e', 'INSTTLCB', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'INSTRUMENT/TIMETABLELIGHTSCIRCUITBREAKER', null), ('d2b6ba74-615f-4292-8b6d-369ff5810fba', 'VC.RLVZV', 'VEHICLE COMMAND', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'ZERO SPEED FOR VVVF RELAY', '24'), ('d3f1dde1-c595-4b11-829e-4f186d94ecae', 'ILFLTR10', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'INTERIOR LIGHT FLUORESCENT TUBE 10 RIGHT', null), ('d415ffee-fcbc-4c4e-9e8d-79bb3fd145f9', 'AP.CBENC', 'AUXILIARY POWER(DC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'ENCODER CIRCUIT BREAKER', '29'), ('d4372c65-f6fa-435b-9c23-577c7983336f', 'EMMIL', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'EMERGENCY MODE INDICATION LED', null), ('d4cdc495-f395-49fe-ac1f-4e8d1c721713', 'VC.ILEBA', 'VEHICLE COMMAND', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'EMERGENCY BRAKE APPLIED INDICATION LAMP', '18'), ('d67e63dd-5a36-4d8d-b6ca-1bda5cd2c283', 'CT.ANTATCTWCL', 'CONTROL', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'ATC_TWC ANTENNA LEFT', '47'), ('d69ea25d-5a8c-49eb-a17a-d8756bfea599', 'CE.HTR2L', 'CARBODY EQUIPMENT', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'ROOM HEATER 2 LEFT', '36'), ('d6b5dd92-bce1-4dd6-b97c-4ff36df6f427', 'VC.RLZV2', 'VEHICLE COMMAND', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'ZERO SPEED RELAY 2', '8'), ('d7d3c7f3-a75f-4dd5-b621-8e241faf3d6f', 'AP.CBCLL', 'AUXILIARY POWER(AC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'CAB CEILING LIGHT CIRCUIT BREAKER', '27'), ('d8bdeb58-5337-4eb5-9bc3-0ee7527f3750', 'CABHTRCB', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'CAB HEATER RIGHT CIRCUIT BREAKER', null), ('d9146d1b-48fe-42dc-83ae-e66e2035fda7', 'AP.CBPAU#2', 'AUXILIARY POWER(DC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'POWER AMP LIFIER UNIT#2 CIRCUIT BREAKER', '29-30'), ('da7a003b-4be4-4943-9e5f-30eb2be32009', 'VC.AMLINE', 'VEHICLE COMMAND', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'LINE CURRENT METER', '34'), ('dac2ffd7-f168-4a44-aae7-91f0dc451d7a', 'CE.RTD', 'CARBODY EQUIPMENT', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'REMOTE TRANSMIT DEVICE', '600'), ('db698dc4-73db-447e-9f67-04624f3c4948', 'CE.FT11ILL', 'CARBODY EQUIPMENT', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'INTERIOR LIGHT 11 LEFT', '33'), ('dbe6404b-3d3f-45b2-9c39-63658cc33481', 'VC.PBPAND', 'VEHICLE COMMAND', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'PANTOGRAPH DOWN PUSH BUTTON', '24'), ('dc0f6f7c-ee8c-4166-a0de-87c23acff36d', 'HV.MF', 'HIGH VOLTAGE', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'LINE FUSE BOX', '15'), ('dc75c0a5-3795-42c9-ba93-ae3415252d9f', 'CE.FT1ILL', 'CARBODY EQUIPMENT', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'INTERIOR LIGHT 1 LEFT', '33'), ('dda954b3-243d-4b5e-a3c3-334caa88bab2', 'DCPB2', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'DOOR CLOSE PUSH BUTTON 2', null), ('de2ffbe5-bdc8-41c7-918f-9428da4c4122', 'ILCB3', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'INTERIOR LIGHTS CIRCUIT BREAKER 3', null), ('de63687b-0f26-4aa8-9968-42251e27ba1c', 'ILCB', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'INTERIOR LIGHTS CIRCUIT BREAKER', null), ('de8bac9a-87f4-4896-a847-880f8f2d543f', 'CE.SP6RM', 'CARBODY EQUIPMENT', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'ROOM SPEAKER6', '41'), ('dec252cb-65ab-4e80-877c-d39ba026dc75', 'LBCR', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'LINE BREAKER CLOSE RELAY', null), ('dee32d89-752f-4e6b-a60a-ba331678d076', 'ILCR1', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'INTERIOR LIGHTS CONTACTOR 1', null), ('df5dc402-ce19-450e-accd-7e6dc8a6b961', 'CE.ACU1', 'CARBODY EQUIPMENT', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'AIR CONDITION UNIT 1', '35'), ('dfa1b88f-f5f3-48d6-8cb2-0dc9418c1af6', 'RHT3L', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'ROOM HEATER 3 LEFT', null), ('dfc6fb1e-db25-4725-b2ea-9d6611d5e193', 'RHTCB3', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'ROOM HEATERS CIRCUIT BREAKER 3', null), ('e021d593-0867-48c3-b166-84e32a482026', 'LICA', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'LINE CURRENT AMMETER', null), ('e08abae9-7dac-4065-9601-d87aa1f42764', 'ATDRAV', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'AUTOMATIC DRAIN VALVE', null), ('e0a233db-c2d2-4edc-868c-17aed3e34dd4', 'HBCCB', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'HB CONTROL', null), ('e166ddb0-d26f-4b7a-af88-2312b97baec1', 'IDUCB', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'INFORMATION DISPLAY UNIT CIRCUIT BREAKER', null), ('e16c5731-2ca6-4b22-b9e0-51c6555af4e4', 'CE.PWAU2', 'CARBODY EQUIPMENT', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'POWER AMP LIFIER UNIT2', '41-44'), ('e247201f-3ecf-4e3e-aeb6-98ce888ddc8e', 'EBAILp', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'EMERGENCY BRAKE APPLIED INDICATION LAMP', null), ('e28d258f-abb8-4b2b-a03c-4cc35e311e1e', 'ACU2', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'AIR CONDITION UNIT 2', null), ('e2c66cd2-3e26-4aa5-ab15-7b7a2b44296f', 'VC.TRDMR', 'VEHICLE COMMAND', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'DEAD MAN RELAY', '8'), ('e32e5b78-15b9-49a7-a746-b3841b64c063', 'AP.CB1IL', 'AUXILIARY POWER(AC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'INTERIOR LIGHTS CIRCUIT BREAKER1', '27-28'), ('e3b18887-c01d-41f3-aa56-1de3d4102f9a', 'CE.CR2RHT', 'CARBODY EQUIPMENT', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'ROOM HEATERS CONTACTOR2', '35'), ('e3b5098b-1649-47fa-80aa-8425723d05ca', 'TRUCB', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'TRAIN RADIO CIRCUIT BREAKER', null), ('e3d9e32b-268b-4a96-9656-e9e54e3ec380', 'CT.ANTATO', 'CONTROL', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'ATO ANTENNA', '47'), ('e423c6ba-118f-4a75-8990-ee260c60e711', 'EMLCB', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'EMERGENCY LIGHTS CIRCUIT BREAKER', null), ('e4688baa-3c98-4d9a-bc10-61b04f845bab', 'AP.CBATC2', 'AUXILIARY POWER(DC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'ATC#2UNIT CIRCUIT BREAKER', '29'), ('e46a201a-960e-433a-96c4-16712eb851d7', 'DIRL', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'DOORS INTERLOCK RELAY LEFT', null), ('e46a2d39-fde6-4f2c-b127-66d5bb3cf9df', 'ILFLTR11', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'INTERIOR LIGHT FLUORESCENT TUBE 11 RIGHT', null), ('e46ace8b-43c0-4632-9525-e0edcd0ab3ad', 'IDU3', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'INFORMATION DISPLAY UNIT 3', null), ('e4bd9d2f-6a6d-472f-92bf-b00d72dba9ce', 'ATCU', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'ATC UNIT', null), ('e4cf9cc0-5e49-4d16-b37b-a1b1fc6915eb', 'CE.FT11ILR', 'CARBODY EQUIPMENT', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'INTERIOR LIGHT 11 RIGHT', '33'), ('e502a516-8180-45f8-a825-4f3ccc4d19be', 'DCTR', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'DOORS CLOSED IN TRAIN RELAY', null), ('e5f16a21-7b40-496d-b47f-e34e37b2ac3f', 'MCEBR', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'MASTER CONTROLLER EMERGENCY BRAKE RELAY', null), ('e653abe2-a4d5-428e-818b-5a37dab6308e', 'HV.MF2', 'HIGH VOLTAGE', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'MAIN FUSE 2', '15'), ('e6ae7c98-5af6-4edd-90b4-7ed6f8a4e5c2', 'RHT1R', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'ROOM HEATER 1 RIGHT', null), ('e6c64a9f-af21-4d33-8a45-aa29660bde53', 'CE.FT8ILR', 'CARBODY EQUIPMENT', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'INTERIOR LIGHT 8 RIGHT', '33'), ('e6e5e02a-b8b8-4609-8502-7573a3f95965', 'AP.CBSCPABR', 'AUXILIARY POWER(DC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'PARKING BRAKE CONTROL CIRCUIT BREAKER', '29'), ('e6ed8228-dfeb-43a2-99a3-eb30a40db59a', 'BC.MVPABRR', 'BRAKE AND COMPRESSED AIR', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'PARKING BRAKE RELEASE MAGNET VALVE', '18'), ('e6ff251c-1ad5-4410-925c-7d451c6e391b', 'AP.CBAVCON', 'AUXILIARY POWER(DC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'AUDIO&VIDEO CONTROLLER CIRCUIT BREAKER', '29'), ('e7d342fc-7afd-4ca9-8f5e-26a12a0da70d', 'BC.BOU', 'BRAKE AND COMPRESSED AIR', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'BRAKE OPERATING UNIT', '19-21'), ('e850bd7c-3e3f-4a7a-a28e-bd681fcf2d21', 'DIRC', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'DIRECTION CONTROLLER', null), ('e91c804a-6af6-4989-9642-5062ced1a384', 'EXTSR', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'EXTENTION SUPPLY RELAY', null), ('e9328e47-1636-4fd8-8e62-a5d30bc7eee5', 'AP.CBCABHTL', 'AUXILIARY POWER(AC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'CAB HEATER CIRCUIT BREAKER', '27'), ('e93f8fa2-d7da-47ff-98cf-c6bb32223821', 'AP.CBD02CU', 'AUXILIARY POWER(DC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'DIGITAL OUTPUTS2 CU CIRCUIT BREAKER', '29'), ('e9536ad4-d46c-471c-9be4-e996dda837aa', 'CDX2', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'LOW-TENSION CONNECTOR B-END LEFT SIDE', null), ('e9a3cad2-3392-402b-b14f-facf8b326483', 'ACU1', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'AIR CONDITION UNIT 1', null), ('ea8d6e7b-a1fc-40ff-bbda-341277dc1129', 'VC.CNTMA', 'VEHICLE COMMAND', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'MASTER CONTROLLER', '8'), ('ea9ef3ef-ae8e-417f-bc76-5452a49ce1c0', 'BATVMRE2', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'BATTERY VOLTAGE MEASURING RESISTOR 2', null), ('eab82993-7d0b-4fad-9681-e79b49ff4eca', 'DSTSUR', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'DESTINATION SIGN UNIT RIGHT', null), ('eb46ab37-69a6-43d8-89a2-15d99860b65d', 'ILFLTL8', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'INTERIOR LIGHT FLUORESCENT TUBE 8 LEFT', null), ('ebc067de-c946-4188-a117-90339bb9e75e', 'VC.SWDMODE', 'VEHICLE COMMAND', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'DRIVING MODE SWITCH', '8'), ('ebefcb47-b38c-4aca-abd2-166acfa7407e', 'AP.CBATCCI', 'AUXILIARY POWER(DC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'ATC CONTROL INPUT CIRCUIT BREAKER', '29'), ('ed0bafe7-1270-447c-8b42-53ecad4d0d65', 'HV.MDS', 'HIGH VOLTAGE', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'MAIN DISCONNECTING SWITCH BOX', '15,24'), ('ed6d30ac-3eaf-4660-b7a3-c1729eb85945', 'ASCOCK2', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'AIR SPRING CUT OUT COCK BOGIE 2', null), ('ed89426c-4aed-45d9-b179-c1bc598db913', 'CE.HTR1R', 'CARBODY EQUIPMENT', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'ROOM HEATER 1 RIGHT', '36'), ('ee662e67-10c6-4504-8ae5-84c54a01946d', 'TRAU', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'TRA UNIT', null), ('ee815bf0-1de4-4976-aea5-1212f6bb7119', 'MCMCCB', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'MAIN COMPRESSOR CONTROL CIRCUIT BREAKER', null), ('ee85487b-11d7-4d24-a01c-84c4b617c1f9', 'ILFLTR2', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'INTERIOR LIGHT FLUORESCENT TUBE 2 RIGHT', null), ('eed9c743-51ca-4e7a-9167-1470b266cef7', 'CT.CPTU', 'CONTROL', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'TERMINAL UNIT', '013-014'), ('ef0a54b3-d4cd-4ee1-885f-76c9d230111e', 'VC.VMLINE', 'VEHICLE COMMAND', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'LINE VOLTAGE VOLTMETER', '34'), ('ef43ea17-d7a7-4281-a09b-76b0c4fd7e96', 'CE.CCAL', 'CARBODY EQUIPMENT', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'CAB CEILING AC LIGHT', '33'), ('efcbe1e0-f652-4e38-a582-96c7b1b485a6', 'ACUCB2', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'AIR CONDITION UNIT 2 CIRCUIT BREAKER', null), ('f042bc96-9973-4e55-a405-e311a016603d', 'CLFLTL', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'CAB LIGHT FLUORESCENT TUBE LEFT', null), ('f067dea0-dc3c-4589-b1eb-33cf0c1e0e72', 'AP.CBHTL', 'AUXILIARY POWER(DC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'HEAD/TAIL LIGHT CIRCUIT BREAKER', '29'), ('f09d614e-42b7-4a65-b00a-79ee1fc66bda', 'OSPKL', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'OUTSIDE SPEAKER LEFT', null), ('f0b0c829-b441-4d7a-bc69-26f8ce797dae', 'AP.CBACU1', 'AUXILIARY POWER(AC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'AIR CONDITION UNIT 1 CIRCUIT BREAKER', '35'), ('f0eea0b4-6082-4a14-83f8-6b3522a90d74', 'BECU', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'BRAKE ELECTRONIC UNIT', null), ('f14b7234-5f9a-4038-a16c-8bfe390bd1ac', 'AP.CBCAPDF', 'AUXILIARY POWER(AC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'CAB AIR PURIFIER DUST FAN CIRCUIT BRAKER', '27'), ('f19903a5-a695-4e20-87f6-12ad3610aefa', 'ILFLTR9', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'INTERIOR LIGHT FLUORESCENT TUBE 9 RIGHT', null), ('f1fdfeb8-1ed4-42e2-8654-c3f78d45c46e', 'MF2', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'MAIN FUSE 2', null), ('f250678d-70ad-4212-9d8b-e31f7c4a7349', 'ILFLTR7', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'INTERIOR LIGHT FLUORESCENT TUBE 7 RIGHT', null), ('f2e689fe-acf9-47e4-aa3b-c9a589641c5d', 'PAN1', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'PANTOGRAPH 1', null), ('f2eea56e-6a43-4c43-985e-6aafa7886eaa', 'HV.PAN2', 'HIGH VOLTAGE', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'PANTOGRAPH 2', '15'), ('f35b38e2-ec50-4aca-aae2-e975d77509e5', 'CE.MOLFF4', 'CARBODY EQUIPMENT', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'LINE FLOW FAN4MOTOR', '37'), ('f3b0b9ae-2479-44b6-b8f0-53e67e67538a', 'VC.PBET', 'VEHICLE COMMAND', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'EMERGENCY PANTO DOWN PUSH BUTTON', '24'), ('f3f24562-f2e6-42d7-bdb3-66e9ee58bbfd', 'CE.FT1ILR', 'CARBODY EQUIPMENT', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'INTERIOR LIGHT 1 RIGHT', '33'), ('f429a503-88e3-4f05-80b4-aedd71d21c40', 'ILCB1', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'INTERIOR LIGHTS CIRCUIT BREAKER 1', null), ('f4af0574-61aa-40a5-8be3-a44c4582c7fa', 'VC.SWSCBR', 'VEHICLE COMMAND', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'SECURITY BRAKE SWITCH', '18'), ('f6a59fe7-c2cf-43cc-bc54-2553cd4f5fa3', 'CE.FT2ILL', 'CARBODY EQUIPMENT', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'INTERIOR LIGHT 2 LEFT', '33'), ('f746cfcd-2772-4595-baf7-02d8ac5643c3', 'RHT2L', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'ROOM HEATER 2 LEFT', null), ('f7fcb90d-c26e-4752-b083-61a57452b61d', 'ATCANTR', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'ATC ANTENNA RIGHT', null), ('f8a5a540-f108-4b20-9c99-a77ff8d45d75', 'AP.CBPBBP', 'AUXILIARY POWER(DC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'PARKING BRAKE BYPASS CIRCUIT BREAKER', '29'), ('f92186d0-d551-4a6a-9455-9876ff8911bd', 'AP.CBVF', 'AUXILIARY POWER(AC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'VENTILATION FANS CIRCUIT BREAKER', '35'), ('f9374ec9-dd1c-4d39-8b52-af5ff4e04937', 'ANSMV2', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'ANTI-SKID VALVE BOGIE 2', null), ('fa22b4da-9155-4189-b3bc-b0231fd2dfe9', 'BC.RLEB', 'BRAKE AND COMPRESSED AIR', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'EMERGENCY BRAKE RELAY', '18'), ('fb196634-ea57-4a64-b034-669b246fc4bb', 'DILCB', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'DOOR INTERLOCK CIRCUIT BREAKER', null), ('fb8276f9-7e71-45d8-be52-1b301f5cd16b', 'VC.PBDOR(SIDE)', 'VEHICLE COMMAND', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'DOOR OPEN RIGHT PUSH BUTTON(SIDE)', '39'), ('fbaef76a-2d0e-4e0b-b6de-c0b910b81175', 'TRCP', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'TRAIN RADIO CONTROL PANEL', null), ('fbbd4158-24fb-495e-9140-1e6ae58b0a5e', 'AP.CBET', 'AUXILIARY POWER(DC)', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'EMERGENCY PANTO DOWN CIRCUIT BREAKER', '29'), ('fbc8ce84-e2f0-4a2a-87fe-86dcba643f36', 'VC.RLFMM', 'VEHICLE COMMAND', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'FULL MANUAL CONTROL(FMC) RELAY', '8'), ('fc14e6fb-93df-4de4-9c0b-ff2557246692', 'PANMV2', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'PANTOGRAPH 2 MAGNET VALVE', null), ('fc6f48f6-04e1-43a8-87f0-da5e4fb1d8f2', 'CHTR', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'CAB HEATER RIGHT', null), ('fca25036-6702-4169-850c-83b6c9fbed9d', 'CE.FT7ILR', 'CARBODY EQUIPMENT', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'INTERIOR LIGHT 7 RIGHT', '33'), ('fcbe21f9-ca48-4b2d-827e-88c53199b17c', 'CE.EMIP2', 'CARBODY EQUIPMENT', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'PASSENGER EMERGENCY INTERPHONE1', '41'), ('fcfa4143-187f-41c8-b79e-89b82dca83df', 'CE.HTR3R', 'CARBODY EQUIPMENT', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'ROOM HEATER 3 RIGHT', '36'), ('fd4284e8-27b7-4263-8d20-2336604b7497', 'YDMIL', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'YARD MODE INDICATION LED', null), ('fe285a78-e9c5-49b9-bdb1-657c99daa7af', 'RHTCB2', null, null, null, '2025-10-20 15:17:14.789566+00', '2025-10-20 15:17:14.789566+00', 'Woojin', 'ROOM HEATERS CIRCUIT BREAKER 2', null), ('fe3f8429-d997-44c0-974b-0d254fabf8e4', 'VC.SWDNOB', 'VEHICLE COMMAND', null, null, '2025-10-23 06:37:24.9444+00', '2025-10-23 06:37:24.9444+00', 'Woojin', 'DOOR NOT OBSTACLE BY_PASS SWITCH', '39'); \ No newline at end of file diff --git a/quick_test.py b/quick_test.py new file mode 100644 index 0000000..0df166b --- /dev/null +++ b/quick_test.py @@ -0,0 +1,32 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +""" +빠른 초기화 테스트 +""" + +try: + from core.logger import get_logger + from database.crud import CRUDManager + from services.weather_service import WeatherService + + logger = get_logger(__name__) + logger.info("초기화 테스트 시작") + + # CRUD 테스트 + crud = CRUDManager() + logger.info("CRUD 초기화 성공") + + # 날씨 서비스 테스트 + weather_service = WeatherService() + logger.info("날씨 서비스 초기화 성공") + + # 근무 형태별 날씨 테스트 + result = weather_service.get_weather_for_shift('주간') + logger.info(f"근무 형태별 날씨 조회 성공: 데이터 포인트 {result.get('data_points', 0)}개") + + print("모든 초기화 테스트 통과!") + +except Exception as e: + print(f"초기화 오류: {e}") + import traceback + traceback.print_exc() diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..3f10769 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,31 @@ +# 전동차 업무 인수인계 및 고장관리 프로그램 +# Python 3.11+ + +# GUI Framework +PySide6>=6.6.0 + +# Database +# SQLite는 Python 내장 + +# HTTP Requests (날씨 API, 업데이트 등) +requests>=2.31.0 + +# 비동기 처리 +aiohttp>=3.9.0 + +# 환경 설정 +python-dotenv>=1.0.0 + +# 유틸리티 +python-dateutil>=2.8.2 + +# 이미지 처리 (썸네일 생성 등) +Pillow>=10.0.0 + +# Supabase 연동 (추후 활성화) +# supabase>=2.0.0 + +# 패키징 (배포 시) +# pyinstaller>=6.0.0 + + diff --git a/scripts/load_common_data.py b/scripts/load_common_data.py new file mode 100644 index 0000000..7dab0c7 --- /dev/null +++ b/scripts/load_common_data.py @@ -0,0 +1,35 @@ +# -*- coding: utf-8 -*- +""" +공통 데이터 로드 스크립트 +ori_data 디렉토리의 SQL 파일에서 데이터를 로드하여 공통 데이터베이스에 삽입합니다. +""" + +import sys +from pathlib import Path + +# 프로젝트 루트를 경로에 추가 +project_root = Path(__file__).parent.parent +sys.path.insert(0, str(project_root)) + +from database.common_db_manager import CommonDatabaseManager +from core.logger import get_logger + +logger = get_logger(__name__) + + +def main(): + """메인 함수""" + logger.info("공통 데이터 로드 시작") + + # 공통 데이터베이스 관리자 초기화 + common_db = CommonDatabaseManager() + + # SQL 파일에서 데이터 로드 + common_db.load_data_from_sql_files() + + logger.info("공통 데이터 로드 완료") + + +if __name__ == "__main__": + main() + diff --git a/services/__init__.py b/services/__init__.py new file mode 100644 index 0000000..621a507 --- /dev/null +++ b/services/__init__.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- +""" +Services 모듈 패키지 +비즈니스 로직을 처리하는 서비스들의 집합 + +이 패키지는 다음을 포함합니다: +- auth_service: 인증 및 권한 서비스 +- weather_service: 날씨 정보 서비스 +- update_service: 업데이트 서비스 +- backup_service: 백업 서비스 +- notification_service: 알림 서비스 +""" + +from .auth_service import AuthService +from .weather_service import WeatherService +from .update_service import UpdateService + +__all__ = [ + 'AuthService', + 'WeatherService', + 'UpdateService', +] + + diff --git a/services/auth_service.py b/services/auth_service.py new file mode 100644 index 0000000..bbf28d5 --- /dev/null +++ b/services/auth_service.py @@ -0,0 +1,261 @@ +# -*- coding: utf-8 -*- +""" +인증 서비스 모듈 +사용자 인증 및 권한 관리를 담당합니다. +""" + +import hashlib +from typing import Optional + +from database.crud import CRUDManager +from database.models import User +from core.config import ConfigManager +from core.signals import GlobalSignals +from core.constants import DEPARTMENT_PERMISSIONS +from core.logger import get_logger +from core.exceptions import ( + InvalidCredentialsError, + PermissionDeniedError, + UserNotActiveError, +) + +logger = get_logger(__name__) + + +class AuthService: + """ + 인증 서비스 클래스 + + 사용자 로그인, 로그아웃, 권한 확인 등을 담당합니다. + + Attributes: + current_user: 현재 로그인한 사용자 + is_authenticated: 인증 여부 + + Examples: + >>> auth = AuthService() + >>> auth.login("admin", "password") + >>> auth.has_permission("create") + True + """ + + _instance: Optional['AuthService'] = None + + def __new__(cls): + """싱글톤 패턴""" + if cls._instance is None: + cls._instance = super().__new__(cls) + cls._instance._initialized = False + return cls._instance + + def __init__(self): + if self._initialized: + return + + self.crud = CRUDManager() + self.config = ConfigManager() + self.signals = GlobalSignals() + + self.current_user: Optional[User] = None + self._initialized = True + + logger.info("인증 서비스 초기화 완료") + + @property + def is_authenticated(self) -> bool: + """인증 여부""" + return self.current_user is not None + + def login(self, username: str, password: str) -> User: + """ + 로그인 + + Args: + username: 사용자명 + password: 비밀번호 + + Returns: + 로그인한 사용자 + + Raises: + InvalidCredentialsError: 잘못된 자격 증명 + UserNotActiveError: 비활성 사용자 + """ + user = self.crud.get_user_by_username(username) + + if not user: + logger.warning(f"로그인 실패: 사용자 없음 - {username}") + raise InvalidCredentialsError() + + # 비밀번호 확인 + if not self._verify_password(password, user.password_hash): + logger.warning(f"로그인 실패: 비밀번호 불일치 - {username}") + raise InvalidCredentialsError() + + # 활성 상태 확인 + if not user.is_active: + logger.warning(f"로그인 실패: 비활성 사용자 - {username}") + raise UserNotActiveError() + + # 로그인 성공 + self.current_user = user + + # 설정 저장 + if self.config.get('user', 'remember_login', True): + self.config.set('user', 'last_user_id', user.id) + self.config.save() + + # 시그널 발생 + self.signals.user_logged_in.emit(user.id, user.name) + + logger.info(f"로그인 성공: {user.name} ({user.department})") + return user + + def logout(self): + """로그아웃""" + if self.current_user: + logger.info(f"로그아웃: {self.current_user.name}") + + self.current_user = None + self.signals.user_logged_out.emit() + + def has_permission(self, action: str) -> bool: + """ + 권한 확인 + + Args: + action: 동작 (create, read, update, delete) + + Returns: + 권한 여부 + """ + if not self.current_user: + return False + + return self.current_user.has_permission(action) + + def require_permission(self, action: str): + """ + 권한 요구 (없으면 예외 발생) + + Args: + action: 동작 + + Raises: + PermissionDeniedError: 권한 없음 + """ + if not self.has_permission(action): + raise PermissionDeniedError(action) + + def is_admin(self) -> bool: + """관리자 여부""" + if not self.current_user: + return False + return self.current_user.is_admin() + + def change_password(self, old_password: str, new_password: str) -> bool: + """ + 비밀번호 변경 + + Args: + old_password: 기존 비밀번호 + new_password: 새 비밀번호 + + Returns: + 변경 성공 여부 + """ + if not self.current_user: + return False + + # 기존 비밀번호 확인 + if not self._verify_password(old_password, self.current_user.password_hash): + return False + + # 새 비밀번호 해시 + new_hash = self._hash_password(new_password) + + # 업데이트 + self.crud.update_user(self.current_user.id, password_hash=new_hash) + self.current_user.password_hash = new_hash + + logger.info(f"비밀번호 변경: {self.current_user.name}") + return True + + def create_user( + self, + username: str, + password: str, + name: str, + department: str, + role: str = None + ) -> User: + """ + 사용자 생성 (관리자 전용) + + Args: + username: 사용자명 + password: 비밀번호 + name: 이름 + department: 부서 + role: 역할 (None이면 부서 기본값) + + Returns: + 생성된 사용자 + """ + self.require_permission('create') + + # 역할 결정 + if role is None: + role = DEPARTMENT_PERMISSIONS.get(department, 'viewer') + + # 비밀번호 해시 + password_hash = self._hash_password(password) + + # 생성 + user = self.crud.create_user( + username=username, + password_hash=password_hash, + name=name, + department=department, + role=role, + is_active=True, + ) + + logger.info(f"사용자 생성: {name} ({department})") + return user + + def auto_login(self) -> bool: + """ + 자동 로그인 (마지막 사용자) + + Returns: + 로그인 성공 여부 + """ + if not self.config.get('user', 'remember_login', True): + return False + + last_user_id = self.config.get('user', 'last_user_id', 0) + if not last_user_id: + return False + + user = self.crud.get_user(last_user_id) + if user and user.is_active: + self.current_user = user + self.signals.user_logged_in.emit(user.id, user.name) + logger.info(f"자동 로그인: {user.name}") + return True + + return False + + @staticmethod + def _hash_password(password: str) -> str: + """비밀번호 해시""" + # 간단한 해시 (실제로는 bcrypt 등 사용 권장) + return hashlib.sha256(password.encode()).hexdigest() + + @staticmethod + def _verify_password(password: str, password_hash: str) -> bool: + """비밀번호 검증""" + return AuthService._hash_password(password) == password_hash + + diff --git a/services/storage_service.py b/services/storage_service.py new file mode 100644 index 0000000..124231c --- /dev/null +++ b/services/storage_service.py @@ -0,0 +1,623 @@ +# -*- coding: utf-8 -*- +""" +파일 저장소 서비스 모듈 +첨부파일(사진, PDF, HWP 등)을 관리하는 서비스입니다. + +storage/ +├── 사진/ +│ └── 2025/ +│ └── (20251202) 7편성 3호차 2위 출입문/ +│ └── photo1.jpg +└── 보고서/ + ├── 01.출입문/ + ├── 02.ATCATO/ + ├── ... + └── 17.기타/ + └── (20251202) 1호선 제2107열차 7편성 3호차 2위 출입문 닫힘 고장 동향보고.pdf +""" + +import os +import uuid +import shutil +from pathlib import Path +from typing import List, Dict, Optional, Tuple +from dataclasses import dataclass, field, asdict +from datetime import datetime, date +import json + +from core.constants import ROOT_DIR +from core.logger import get_logger + +logger = get_logger(__name__) + +# 저장소 기본 경로 +STORAGE_DIR = ROOT_DIR / "storage" +IMAGES_DIR = STORAGE_DIR / "사진" +REPORTS_DIR = STORAGE_DIR / "보고서" + +# 지원 파일 형식 +SUPPORTED_IMAGE_EXTENSIONS = {'.jpg', '.jpeg', '.png', '.gif', '.bmp', '.webp'} +SUPPORTED_REPORT_EXTENSIONS = {'.pdf', '.hwp', '.hwpx', '.doc', '.docx'} + +# 보고서 장치 분류 폴더 +REPORT_CATEGORIES = [ + "01.출입문", + "02.ATCATO", + "03.VVVF", + "04.SIV", + "05.공조장치", + "06.제동장치", + "07.대차", + "08.집전장치", + "09.차체", + "10.조명", + "11.방송", + "12.TCMS", + "13.객실설비", + "14.VOC", + "15.상시급전", + "16.기상상황", + "17.기타", +] + + +@dataclass +class Attachment: + """첨부파일 정보""" + id: str = "" # UUID + title: str = "" # 제목 (예: "3호차 2위 출입문 사진") + filename: str = "" # 원본 파일명 + filepath: str = "" # 저장 경로 (상대경로) + file_type: str = "" # image, pdf, hwp, doc + file_size: int = 0 # 바이트 + created_at: str = "" # ISO 형식 + record_type: str = "" # faults, works 등 + record_id: int = 0 + group_id: str = "" # 그룹 ID (여러 파일을 하나의 제목으로 묶을 때) + order: int = 0 # 그룹 내 순서 + + def to_dict(self) -> Dict: + return asdict(self) + + @classmethod + def from_dict(cls, data: Dict) -> 'Attachment': + return cls(**data) + + def get_full_path(self) -> Path: + """전체 경로 반환""" + return STORAGE_DIR / self.filepath + + def get_thumbnail_path(self) -> Optional[Path]: + """썸네일 경로 반환 (이미지만)""" + if self.file_type != 'image': + return None + full_path = self.get_full_path() + thumb_dir = full_path.parent / "thumbnails" + return thumb_dir / f"thumb_{full_path.name}" + + +@dataclass +class AttachmentGroup: + """첨부파일 그룹 (하나의 제목에 여러 파일)""" + id: str = "" # UUID + title: str = "" # 그룹 제목 + attachments: List[Attachment] = field(default_factory=list) + created_at: str = "" + + def to_dict(self) -> Dict: + return { + 'id': self.id, + 'title': self.title, + 'attachments': [a.to_dict() for a in self.attachments], + 'created_at': self.created_at + } + + +class StorageService: + """파일 저장소 서비스""" + + def __init__(self): + self._ensure_directories() + self._attachments_cache: Dict[str, List[Attachment]] = {} + + def _ensure_directories(self): + """필요한 디렉토리 생성""" + STORAGE_DIR.mkdir(exist_ok=True) + IMAGES_DIR.mkdir(exist_ok=True) + REPORTS_DIR.mkdir(exist_ok=True) + + # 보고서 장치분류별 폴더 생성 + for category in REPORT_CATEGORIES: + (REPORTS_DIR / category).mkdir(exist_ok=True) + + def _get_image_dir(self, folder_title: str, folder_date: Optional[date] = None) -> Path: + """ + 사진 저장 디렉토리 반환 + + 구조: storage/사진/2025/(20251202) 7편성 3호차 2위 출입문/ + + Args: + folder_title: 폴더 제목 (예: "7편성 3호차 2위 출입문") + folder_date: 날짜 (기본값: 오늘) + + Returns: + 사진 저장 경로 + """ + if folder_date is None: + folder_date = date.today() + + year = str(folder_date.year) + date_str = folder_date.strftime("%Y%m%d") + folder_name = f"({date_str}) {folder_title}" + + image_dir = IMAGES_DIR / year / folder_name + image_dir.mkdir(parents=True, exist_ok=True) + return image_dir + + def _get_report_dir(self, device_category: str) -> Path: + """ + 보고서 저장 디렉토리 반환 + + 구조: storage/보고서/01.출입문/ + + Args: + device_category: 장치분류 번호 또는 이름 (예: "01.출입문" 또는 "출입문" 또는 "1") + + Returns: + 보고서 저장 경로 + """ + # 번호로 입력된 경우 매칭 + category_folder = self._match_category(device_category) + + report_dir = REPORTS_DIR / category_folder + report_dir.mkdir(parents=True, exist_ok=True) + return report_dir + + def _match_category(self, device_category: str) -> str: + """장치분류 매칭""" + if not device_category: + return "17.기타" + + # 이미 전체 이름인 경우 + for cat in REPORT_CATEGORIES: + if cat == device_category: + return cat + + # 번호만 입력된 경우 (예: "1", "01") + try: + num = int(device_category.lstrip('0')) + for cat in REPORT_CATEGORIES: + cat_num = int(cat.split('.')[0]) + if cat_num == num: + return cat + except ValueError: + pass + + # 이름만 입력된 경우 (예: "출입문") + for cat in REPORT_CATEGORIES: + if device_category in cat: + return cat + + return "17.기타" + + def _get_file_type(self, filename: str) -> str: + """파일 확장자로 타입 판별""" + ext = Path(filename).suffix.lower() + if ext in SUPPORTED_IMAGE_EXTENSIONS: + return 'image' + elif ext == '.pdf': + return 'pdf' + elif ext in {'.hwp', '.hwpx'}: + return 'hwp' + elif ext in {'.doc', '.docx'}: + return 'doc' + return 'unknown' + + def _generate_thumbnail(self, image_path: Path) -> Optional[Path]: + """이미지 썸네일 생성""" + try: + from PIL import Image + + thumb_dir = image_path.parent / "thumbnails" + thumb_dir.mkdir(exist_ok=True) + thumb_path = thumb_dir / f"thumb_{image_path.name}" + + with Image.open(image_path) as img: + # EXIF 회전 정보 적용 + try: + from PIL import ImageOps + img = ImageOps.exif_transpose(img) + except Exception: + pass + + # 썸네일 크기 (150x150) + img.thumbnail((150, 150), Image.Resampling.LANCZOS) + + # RGB로 변환 (PNG 알파 채널 처리) + if img.mode in ('RGBA', 'P'): + img = img.convert('RGB') + + img.save(thumb_path, 'JPEG', quality=85) + + return thumb_path + except Exception as e: + logger.error(f"썸네일 생성 실패: {e}") + return None + + def save_image( + self, + file_path: str, + record_type: str, + record_id: int, + folder_title: str, + folder_date: Optional[date] = None, + group_id: str = "", + order: int = 0 + ) -> Optional[Attachment]: + """ + 사진 파일 저장 + + 구조: storage/사진/2025/(20251202) 7편성 3호차 2위 출입문/photo.jpg + + Args: + file_path: 원본 파일 경로 + record_type: 레코드 타입 (faults, works 등) + record_id: 레코드 ID + folder_title: 폴더 제목 (예: "7편성 3호차 2위 출입문") + folder_date: 날짜 (기본값: 오늘) + group_id: 그룹 ID (여러 파일을 하나의 제목으로 묶을 때) + order: 그룹 내 순서 + + Returns: + 저장된 첨부파일 정보 + """ + try: + source_path = Path(file_path) + if not source_path.exists(): + logger.error(f"파일이 존재하지 않습니다: {file_path}") + return None + + filename = source_path.name + file_type = self._get_file_type(filename) + + if file_type != 'image': + logger.error(f"이미지 파일이 아닙니다: {filename}") + return None + + # 사진 저장 디렉토리 + save_dir = self._get_image_dir(folder_title, folder_date) + + # 파일명 (순서 포함) + file_id = str(uuid.uuid4())[:8] + dest_path = save_dir / f"{file_id}_{filename}" + + # 파일 복사 + shutil.copy2(source_path, dest_path) + + # 썸네일 생성 + self._generate_thumbnail(dest_path) + + # 상대 경로 계산 + relative_path = dest_path.relative_to(STORAGE_DIR) + + # 첨부파일 정보 생성 + attachment = Attachment( + id=file_id, + title=folder_title, + filename=filename, + filepath=str(relative_path), + file_type=file_type, + file_size=dest_path.stat().st_size, + created_at=datetime.now().isoformat(), + record_type=record_type, + record_id=record_id, + group_id=group_id or file_id, + order=order + ) + + # 메타데이터 저장 + self._save_metadata(record_type, record_id, attachment) + + logger.info(f"사진 저장 완료: {filename} -> {dest_path}") + return attachment + + except Exception as e: + logger.error(f"사진 저장 실패: {e}") + return None + + def save_report( + self, + file_path: str, + record_type: str, + record_id: int, + device_category: str, + report_title: str = "", + report_date: Optional[date] = None + ) -> Optional[Attachment]: + """ + 보고서 파일 저장 + + 구조: storage/보고서/01.출입문/(20251202) 1호선 제2107열차 7편성 3호차 2위 출입문 닫힘 고장 동향보고.pdf + + Args: + file_path: 원본 파일 경로 + record_type: 레코드 타입 (faults, works 등) + record_id: 레코드 ID + device_category: 장치분류 (예: "출입문", "01.출입문", "1") + report_title: 보고서 제목 (날짜 제외, 예: "1호선 제2107열차 7편성 3호차 2위 출입문 닫힘 고장 동향보고") + report_date: 보고서 날짜 (기본값: 오늘) + + Returns: + 저장된 첨부파일 정보 + """ + try: + source_path = Path(file_path) + if not source_path.exists(): + logger.error(f"파일이 존재하지 않습니다: {file_path}") + return None + + filename = source_path.name + file_type = self._get_file_type(filename) + + if file_type not in ('pdf', 'hwp', 'doc'): + logger.error(f"보고서 파일 형식이 아닙니다: {filename}") + return None + + # 보고서 저장 디렉토리 + save_dir = self._get_report_dir(device_category) + + # 파일명 생성: (YYYYMMDD) 제목.확장자 + if report_date is None: + report_date = date.today() + + date_str = report_date.strftime("%Y%m%d") + ext = source_path.suffix + + # 제목이 없으면 원본 파일명 사용 (확장자 제외) + if not report_title: + report_title = source_path.stem + + # 새 파일명 + new_filename = f"({date_str}) {report_title}{ext}" + dest_path = save_dir / new_filename + + # 동일 파일명 존재시 고유 ID 추가 + if dest_path.exists(): + file_id = str(uuid.uuid4())[:4] + new_filename = f"({date_str}) {report_title}_{file_id}{ext}" + dest_path = save_dir / new_filename + + # 파일 복사 + shutil.copy2(source_path, dest_path) + + # 상대 경로 계산 + relative_path = dest_path.relative_to(STORAGE_DIR) + file_id = str(uuid.uuid4())[:8] + + # 첨부파일 정보 생성 + attachment = Attachment( + id=file_id, + title=report_title, + filename=new_filename, + filepath=str(relative_path), + file_type=file_type, + file_size=dest_path.stat().st_size, + created_at=datetime.now().isoformat(), + record_type=record_type, + record_id=record_id, + group_id=file_id, + order=0 + ) + + # 메타데이터 저장 + self._save_metadata(record_type, record_id, attachment) + + logger.info(f"보고서 저장 완료: {new_filename} -> {dest_path}") + return attachment + + except Exception as e: + logger.error(f"보고서 저장 실패: {e}") + return None + + def save_images( + self, + file_paths: List[str], + record_type: str, + record_id: int, + folder_title: str, + folder_date: Optional[date] = None + ) -> List[Attachment]: + """ + 여러 사진 파일 저장 (하나의 폴더/그룹으로) + + Args: + file_paths: 파일 경로 리스트 + record_type: 레코드 타입 + record_id: 레코드 ID + folder_title: 폴더 제목 (예: "7편성 3호차 2위 출입문") + folder_date: 날짜 (기본값: 오늘) + + Returns: + 저장된 첨부파일 리스트 + """ + if not file_paths: + return [] + + group_id = str(uuid.uuid4())[:8] + attachments = [] + + for i, file_path in enumerate(file_paths): + attachment = self.save_image( + file_path=file_path, + record_type=record_type, + record_id=record_id, + folder_title=folder_title, + folder_date=folder_date, + group_id=group_id, + order=i + ) + if attachment: + attachments.append(attachment) + + return attachments + + def _get_metadata_path(self, record_type: str, record_id: int) -> Path: + """메타데이터 파일 경로""" + return STORAGE_DIR / f"{record_type}_{record_id}_meta.json" + + def _save_metadata(self, record_type: str, record_id: int, attachment: Attachment): + """메타데이터 저장""" + meta_path = self._get_metadata_path(record_type, record_id) + + # 기존 메타데이터 로드 + attachments = self.get_attachments(record_type, record_id) + + # 중복 제거 후 추가 + attachments = [a for a in attachments if a.id != attachment.id] + attachments.append(attachment) + + # 저장 + data = [a.to_dict() for a in attachments] + with open(meta_path, 'w', encoding='utf-8') as f: + json.dump(data, f, ensure_ascii=False, indent=2) + + def get_attachments(self, record_type: str, record_id: int) -> List[Attachment]: + """레코드의 첨부파일 목록 조회""" + meta_path = self._get_metadata_path(record_type, record_id) + + if not meta_path.exists(): + return [] + + try: + with open(meta_path, 'r', encoding='utf-8') as f: + data = json.load(f) + return [Attachment.from_dict(d) for d in data] + except Exception as e: + logger.error(f"메타데이터 로드 실패: {e}") + return [] + + def get_attachments_by_type( + self, + record_type: str, + record_id: int, + file_type: str + ) -> List[Attachment]: + """파일 타입별 첨부파일 조회""" + attachments = self.get_attachments(record_type, record_id) + return [a for a in attachments if a.file_type == file_type] + + def get_attachment_groups( + self, + record_type: str, + record_id: int + ) -> List[AttachmentGroup]: + """그룹별 첨부파일 조회""" + attachments = self.get_attachments(record_type, record_id) + + # 그룹별로 분류 + groups: Dict[str, AttachmentGroup] = {} + for attachment in attachments: + group_id = attachment.group_id + if group_id not in groups: + groups[group_id] = AttachmentGroup( + id=group_id, + title=attachment.title, + attachments=[], + created_at=attachment.created_at + ) + groups[group_id].attachments.append(attachment) + + # 그룹 내 정렬 + for group in groups.values(): + group.attachments.sort(key=lambda a: a.order) + + return list(groups.values()) + + def delete_attachment(self, record_type: str, record_id: int, attachment_id: str) -> bool: + """첨부파일 삭제""" + attachments = self.get_attachments(record_type, record_id) + + target = None + for a in attachments: + if a.id == attachment_id: + target = a + break + + if not target: + return False + + try: + # 파일 삭제 + full_path = target.get_full_path() + if full_path.exists(): + full_path.unlink() + + # 썸네일 삭제 + thumb_path = target.get_thumbnail_path() + if thumb_path and thumb_path.exists(): + thumb_path.unlink() + + # 메타데이터 업데이트 + attachments = [a for a in attachments if a.id != attachment_id] + meta_path = self._get_metadata_path(record_type, record_id) + data = [a.to_dict() for a in attachments] + with open(meta_path, 'w', encoding='utf-8') as f: + json.dump(data, f, ensure_ascii=False, indent=2) + + logger.info(f"첨부파일 삭제: {attachment_id}") + return True + + except Exception as e: + logger.error(f"첨부파일 삭제 실패: {e}") + return False + + def get_attachment_count(self, record_type: str, record_id: int) -> int: + """첨부파일 개수 조회""" + return len(self.get_attachments(record_type, record_id)) + + def update_attachment(self, attachment: Attachment) -> bool: + """첨부파일 메타데이터 업데이트 + + Args: + attachment: 업데이트할 첨부파일 객체 (record_type, record_id, id 필요) + + Returns: + 성공 여부 + """ + try: + self._save_metadata( + attachment.record_type, + attachment.record_id, + attachment + ) + return True + except Exception as e: + logger.error(f"첨부파일 업데이트 실패: {e}") + return False + + def open_file(self, attachment: Attachment) -> bool: + """파일 열기 (시스템 기본 프로그램)""" + try: + full_path = attachment.get_full_path() + if not full_path.exists(): + logger.error(f"파일이 존재하지 않습니다: {full_path}") + return False + + os.startfile(str(full_path)) + return True + except Exception as e: + logger.error(f"파일 열기 실패: {e}") + return False + + +# 싱글톤 인스턴스 +_storage_service: Optional[StorageService] = None + + +def get_storage_service() -> StorageService: + """StorageService 싱글톤 인스턴스 반환""" + global _storage_service + if _storage_service is None: + _storage_service = StorageService() + return _storage_service + diff --git a/services/update_service.py b/services/update_service.py new file mode 100644 index 0000000..6fd8783 --- /dev/null +++ b/services/update_service.py @@ -0,0 +1,285 @@ +# -*- coding: utf-8 -*- +""" +업데이트 서비스 모듈 +애플리케이션 업데이트를 확인하고 설치합니다. +""" + +import sys +import os +import shutil +import subprocess +import requests +from pathlib import Path +from typing import Optional +import urllib3 + +# SSL 경고 숨기기 +urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) + +from PySide6.QtCore import QObject, QTimer, QThread, Signal + +from core.config import ConfigManager +from core.signals import GlobalSignals +from core.constants import APP_VERSION, UPDATE_CHECK_INTERVAL +from core.logger import get_logger + +logger = get_logger(__name__) + +# Supabase Configuration +SUPABASE_URL = "https://kong.humetrain.me" +SUPABASE_KEY = "INSERT_ANON_KEY_HERE" # TODO: Replace with actual key or load from secure config + + +class UpdateChecker(QObject): + """업데이트 확인 워커""" + + update_available = Signal(str, str) # 새 버전, 다운로드 URL + no_update = Signal() + error = Signal(str) + + def __init__(self, current_version: str): + super().__init__() + self.current_version = current_version + + def run(self): + """업데이트 확인""" + try: + # Supabase에서 최신 버전 정보 조회 + # 테이블: app_versions + # 쿼리: select=version,download_url&order=created_at.desc&limit=1 + + headers = { + "apikey": SUPABASE_KEY, + "Authorization": f"Bearer {SUPABASE_KEY}" + } + + url = f"{SUPABASE_URL}/rest/v1/app_versions?select=version,download_url&order=created_at.desc&limit=1" + + # SSL 인증서 오류 방지를 위해 verify=False 추가 (임시) + # 실제 배포 시에는 올바른 인증서 처리가 필요함 + try: + response = requests.get(url, headers=headers, timeout=10, verify=False) + except requests.exceptions.SSLError: + logger.warning("SSL 인증 실패. 업데이트 확인을 건너뜁니다.") + self.no_update.emit() + return + except requests.exceptions.ConnectionError: + logger.warning("서버 연결 실패. 업데이트 확인을 건너뜁니다.") + self.no_update.emit() + return + + if response.status_code == 200: + data = response.json() + if data and len(data) > 0: + latest_info = data[0] + latest_version = latest_info.get("version") + download_url = latest_info.get("download_url") + + if latest_version and self._compare_versions(latest_version, self.current_version) > 0: + self.update_available.emit(latest_version, download_url) + return + elif response.status_code == 401: + # 키가 없거나 잘못된 경우 (개발 중) + logger.warning("Supabase 인증 실패. 업데이트 확인을 건너뜁니다.") + elif response.status_code == 525: + # SSL Handshake Failed + logger.warning("SSL 핸드셰이크 실패 (Cloudflare 525). 업데이트 확인을 건너뜁니다.") + else: + logger.warning(f"업데이트 확인 실패: {response.status_code} {response.text}") + + self.no_update.emit() + + except Exception as e: + logger.error(f"업데이트 확인 중 오류 발생: {e}") + # 백그라운드 확인 시 사용자에게 에러를 띄우지 않도록 함 + # self.error.emit(str(e)) + self.no_update.emit() + + @staticmethod + def _compare_versions(v1: str, v2: str) -> int: + """ + 버전 비교 + Returns: v1 > v2: 1, v1 == v2: 0, v1 < v2: -1 + """ + def parse_version(v): + return [int(x) for x in v.split('.') if x.isdigit()] + + parts1 = parse_version(v1) + parts2 = parse_version(v2) + + for i in range(max(len(parts1), len(parts2))): + p1 = parts1[i] if i < len(parts1) else 0 + p2 = parts2[i] if i < len(parts2) else 0 + + if p1 > p2: + return 1 + elif p1 < p2: + return -1 + + return 0 + + +class UpdateService(QObject): + """ + 업데이트 서비스 클래스 + 주기적으로 업데이트를 확인하고 알림을 표시합니다. + """ + + def __init__(self): + super().__init__() + + self.config = ConfigManager() + self.signals = GlobalSignals() + + self._timer = QTimer() + self._timer.timeout.connect(self.check_for_updates) + + self._thread: Optional[QThread] = None + self._checker: Optional[UpdateChecker] = None + + self._show_no_update = False + + logger.info("업데이트 서비스 초기화 완료") + + def start(self): + """서비스 시작""" + if not self.config.get('app', 'check_updates', True): + return + + # 주기적 확인 시작 + interval = self.config.get('app', 'update_check_interval', UPDATE_CHECK_INTERVAL) + self._timer.start(interval * 1000) + + logger.info("업데이트 서비스 시작") + + def stop(self): + """서비스 중지""" + self._timer.stop() + + if self._thread and self._thread.isRunning(): + self._thread.quit() + self._thread.wait() + + logger.info("업데이트 서비스 중지") + + def check_for_updates(self, show_no_update: bool = False): + """ + 업데이트 확인 + Args: + show_no_update: 업데이트 없을 때도 알림 표시 + """ + self._show_no_update = show_no_update + + if self._thread and self._thread.isRunning(): + return + + self._thread = QThread() + self._checker = UpdateChecker(APP_VERSION) + self._checker.moveToThread(self._thread) + + self._thread.started.connect(self._checker.run) + self._checker.update_available.connect(self._on_update_available) + self._checker.no_update.connect(self._on_no_update) + self._checker.error.connect(self._on_error) + self._checker.update_available.connect(self._thread.quit) + self._checker.no_update.connect(self._thread.quit) + self._checker.error.connect(self._thread.quit) + + self._thread.start() + + logger.debug("업데이트 확인 시작") + + def _on_update_available(self, version: str, download_url: str): + """업데이트 가능""" + logger.info(f"업데이트 가능: v{version}") + + # UI에 알림 (다운로드 URL도 함께 전달하기 위해 시그널 변경 필요할 수 있음) + # 현재는 GlobalSignals.update_available(str) 만 정의되어 있다고 가정 + # 따라서 메인 윈도우에서 이 서비스를 직접 참조하거나, 시그널을 확장해야 함. + # 여기서는 편의상 GlobalSignals를 통해 버전만 알리고, + # 실제 업데이트 진행 시 이 서비스의 trigger_update를 호출하도록 함. + + # 임시 저장 (메인 윈도우에서 접근 가능하도록) + self.latest_version = version + self.download_url = download_url + + self.signals.update_available.emit(version) + + # 시스템 알림 + self.signals.notification.emit( + "업데이트 가능", + f"새 버전 v{version}이 있습니다.", + "info" + ) + + def _on_no_update(self): + """업데이트 없음""" + logger.debug("최신 버전입니다.") + if self._show_no_update: + self.signals.status_message.emit("최신 버전입니다.", 3000) + + def _on_error(self, error_msg: str): + """업데이트 확인 오류""" + if self._show_no_update: + self.signals.status_message.emit(f"업데이트 확인 실패: {error_msg}", 3000) + + def trigger_update(self): + """ + 업데이트 프로세스 시작 + 1. updater.exe를 임시 폴더로 복사 + 2. updater.exe 실행 + 3. 앱 종료 + """ + if not hasattr(self, 'download_url') or not self.download_url: + logger.error("다운로드 URL이 없습니다.") + return + + try: + # 현재 실행 파일 경로 + if getattr(sys, 'frozen', False): + base_dir = Path(sys.executable).parent + exe_name = Path(sys.executable).name + else: + # 개발 환경 + base_dir = Path(__file__).parent.parent + exe_name = "main.py" # 개발 환경에서는 재시작이 다를 수 있음 + + updater_src = base_dir / "updater.exe" + + # 개발 환경 대응: updater.exe가 없으면 updater.py 사용 (복잡하므로 생략, 배포 환경 기준) + if not updater_src.exists(): + logger.warning("updater.exe를 찾을 수 없습니다. (개발 환경일 수 있음)") + # 개발 환경에서는 단순히 로그만 남기고 종료 + return + + # 임시 폴더 생성 + temp_dir = Path(os.environ.get('TEMP', '')) / "handover_updater" + if temp_dir.exists(): + shutil.rmtree(temp_dir) + temp_dir.mkdir(parents=True) + + # updater 복사 + updater_dst = temp_dir / "updater.exe" + shutil.copy2(updater_src, updater_dst) + + # updater 실행 + # args: --url [URL] --target [DIR] --restart [EXE_NAME] + cmd = [ + str(updater_dst), + "--url", self.download_url, + "--target", str(base_dir), + "--restart", exe_name + ] + + logger.info(f"업데이트 시작: {cmd}") + subprocess.Popen(cmd) + + # 앱 종료 요청 + self.signals.app_quit_requested.emit() + + except Exception as e: + logger.error(f"업데이트 트리거 실패: {e}") + self.signals.status_message.emit(f"업데이트 시작 실패: {e}", 3000) + + + diff --git a/services/weather_service.py b/services/weather_service.py new file mode 100644 index 0000000..87ce705 --- /dev/null +++ b/services/weather_service.py @@ -0,0 +1,886 @@ +# -*- coding: utf-8 -*- +""" +날씨 서비스 모듈 +날씨 정보를 가져와 업데이트합니다. +""" + +import json +import os +from datetime import datetime, timedelta, date +from pathlib import Path +from typing import Optional, Dict, Any, List + +from PySide6.QtCore import QObject, QTimer, QThread, Signal + +from core.config import ConfigManager +from core.signals import GlobalSignals +from core.constants import WEATHER_UPDATE_INTERVAL, DATA_DIR +from core.logger import get_logger +from database.crud import CRUDManager + +logger = get_logger(__name__) + +# 날씨 HTML 파일 경로 +WEATHER_HTML_FILE = DATA_DIR / "weather_debug.html" +WEATHER_TIMESTAMP_FILE = DATA_DIR / "weather_timestamp.txt" +WEATHER_CACHE_DURATION = timedelta(hours=2) # 2시간 + + +class WeatherWorker(QObject): + """날씨 정보 가져오기 워커""" + + finished = Signal(dict) + error = Signal(str) + + def __init__(self, lat: float, lon: float, code: str, force_refresh: bool = False): + super().__init__() + self.lat = lat + self.lon = lon + self.code = code + self.force_refresh = force_refresh + self.crud = CRUDManager() + + def run(self): + """날씨 정보 가져오기""" + try: + # HTML 파일이 있고 2시간 이내면 파일에서 로드 + if not self.force_refresh and self._is_cache_valid(): + logger.info("캐시된 날씨 데이터 사용") + html_content = self._load_html_file() + if html_content: + weather_data = self._parse_weather_data(html_content) + if weather_data: + self.finished.emit(weather_data) + return + + # 네트워크에서 새로 가져오기 + logger.info("기상청 API에서 날씨 정보 가져오기") + html_content = self._fetch_weather_html() + + if html_content: + # HTML 파일 저장 + self._save_html_file(html_content) + # 타임스탬프 저장 + self._save_timestamp() + + # 파싱 + weather_data = self._parse_weather_data(html_content) + if weather_data: + self.finished.emit(weather_data) + else: + self.error.emit("날씨 데이터 파싱 실패") + else: + self.error.emit("날씨 정보를 가져올 수 없습니다") + + except Exception as e: + logger.error(f"날씨 정보 가져오기 실패: {e}") + self.error.emit(str(e)) + + def _is_cache_valid(self) -> bool: + """캐시가 유효한지 확인 (2시간 이내)""" + if not WEATHER_HTML_FILE.exists() or not WEATHER_TIMESTAMP_FILE.exists(): + return False + + try: + with open(WEATHER_TIMESTAMP_FILE, 'r', encoding='utf-8') as f: + timestamp_str = f.read().strip() + timestamp = datetime.fromisoformat(timestamp_str) + elapsed = datetime.now() - timestamp + return elapsed < WEATHER_CACHE_DURATION + except Exception as e: + logger.error(f"타임스탬프 확인 실패: {e}") + return False + + def _load_html_file(self) -> Optional[str]: + """HTML 파일 로드""" + try: + if WEATHER_HTML_FILE.exists(): + with open(WEATHER_HTML_FILE, 'r', encoding='utf-8') as f: + return f.read() + except Exception as e: + logger.error(f"HTML 파일 로드 실패: {e}") + return None + + def _save_html_file(self, content: str): + """HTML 파일 저장""" + try: + DATA_DIR.mkdir(parents=True, exist_ok=True) + with open(WEATHER_HTML_FILE, 'w', encoding='utf-8') as f: + f.write(content) + logger.info(f"날씨 HTML 파일 저장: {WEATHER_HTML_FILE}") + except Exception as e: + logger.error(f"HTML 파일 저장 실패: {e}") + + def _save_timestamp(self): + """타임스탬프 저장""" + try: + DATA_DIR.mkdir(parents=True, exist_ok=True) + with open(WEATHER_TIMESTAMP_FILE, 'w', encoding='utf-8') as f: + f.write(datetime.now().isoformat()) + except Exception as e: + logger.error(f"타임스탬프 저장 실패: {e}") + + def _get_timestamp(self) -> Optional[datetime]: + """저장된 타임스탬프 가져오기""" + try: + if WEATHER_TIMESTAMP_FILE.exists(): + with open(WEATHER_TIMESTAMP_FILE, 'r', encoding='utf-8') as f: + timestamp_str = f.read().strip() + return datetime.fromisoformat(timestamp_str) + except Exception as e: + logger.error(f"타임스탬프 읽기 실패: {e}") + return None + + def _fetch_weather_html(self) -> Optional[str]: + """기상청 API에서 HTML 가져오기""" + try: + from curl_cffi import requests + + url = "https://www.weather.go.kr/w/wnuri-fct2021/main/digital-forecast.do" + params = { + "code": self.code, + "unit": "m/s", + "hr1": "Y", + "lat": str(self.lat), + "lon": str(self.lon) + } + headers = { + "User-Agent": "Mozilla/5.0", + "Referer": "https://www.weather.go.kr/w/index.do", + "X-Requested-With": "XMLHttpRequest" + } + + response = requests.get(url, params=params, headers=headers, impersonate="chrome120", timeout=30) + response.raise_for_status() + + return response.text + except Exception as e: + logger.error(f"기상청 API 요청 실패: {e}") + return None + + def _parse_weather_data(self, html_content: str) -> Optional[Dict[str, Any]]: + """HTML에서 날씨 데이터 파싱""" + try: + from selectolax.parser import HTMLParser + + tree = HTMLParser(html_content) + slides = tree.css("div.slide-wrap div.slide") + + if not slides: + logger.warning("날씨 데이터 슬라이드를 찾지 못했습니다") + return None + + # 현재 시간 기준으로 가장 가까운 데이터 찾기 + now = datetime.now() + current_hour = now.hour + + weather_items = [] + + for slide in slides: + daily_node = slide.css_first("div.daily") + if not daily_node: + continue + + date_str = daily_node.attributes.get('data-date', '').strip() + ul_items = daily_node.css("ul") + + for ul in ul_items: + if "item" not in ul.attributes.get("class", ""): + continue + + w_data = { + "time": "-", "weather": "-", "temp": "-", + "feels_like": "-", "prob": "-", "wind": "-", "humid": "-" + } + + if 'data-time' in ul.attributes: + w_data['time'] = ul.attributes['data-time'] + + lis = ul.css("li") + for li in lis: + label_node = li.css_first("span.hid") + if not label_node: + continue + + label_text = label_node.text(strip=True) + + if "시각" in label_text and w_data['time'] == "-": + val = li.css_first("span:not(.hid)") + if val: + w_data['time'] = val.text(strip=True) + elif "날씨" in label_text: + wic = li.css_first(".wic") + if wic: + w_data['weather'] = wic.attributes.get("title") or wic.text(strip=True) + elif "기온" in label_text: + feel_node = li.css_first(".feel") + if feel_node: + w_data['temp'] = feel_node.text(deep=False, strip=True) + elif "체감온도" in label_text and "기온" not in label_text: + spans = li.css("span") + if len(spans) > 1: + w_data['feels_like'] = spans[-1].text(strip=True) + elif "강수확률" in label_text: + spans = li.css("span") + if len(spans) > 1: + prob = spans[-1].text(strip=True) + w_data['prob'] = prob if prob else "-" + elif "바람" in label_text: + wd_node = li.css_first(".wdic") + ws_node = li.css_first(".wspd:not(.qwsd)") + wd = wd_node.text(strip=True) if wd_node else "" + ws = ws_node.text(strip=True) if ws_node else "" + w_data['wind'] = f"{wd} {ws}".strip() + elif "습도" in label_text: + spans = li.css("span") + if len(spans) > 1: + w_data['humid'] = spans[-1].text(strip=True) + + if w_data['time'] != "-": + weather_items.append({ + 'date': date_str, + 'time': w_data['time'], + **w_data + }) + + if not weather_items: + return None + + # 현재 시간에 가장 가까운 데이터 찾기 + current_data = self._find_current_weather(weather_items, current_hour) + + # 주간조(09~18시)일 경우 추가 정보 계산 + if 9 <= current_hour <= 18: + day_data = self._calculate_daytime_stats(weather_items, current_hour) + current_data.update(day_data) + + # 타임스탬프 정보 추가 + timestamp = self._get_timestamp() + current_data['fetched_at'] = timestamp.isoformat() if timestamp else None + + # 모든 날씨 데이터를 DB에 저장 + try: + all_weather_data = WeatherService._parse_all_weather_items(html_content) + WeatherService._save_weather_data_to_db_static(all_weather_data, self.code) + except Exception as e: + logger.error(f"날씨 데이터 DB 저장 실패: {e}") + + return current_data + + except Exception as e: + logger.error(f"날씨 데이터 파싱 실패: {e}") + return None + + def _find_current_weather(self, items: List[Dict], current_hour: int) -> Dict[str, Any]: + """현재 시간에 가장 가까운 날씨 데이터 찾기""" + if not items: + return {} + + # 현재 시간과 가장 가까운 항목 찾기 + best_item = items[0] + min_diff = float('inf') + + for item in items: + try: + time_str = item['time'] + # "24:00" 같은 경우 처리 + if time_str.endswith(':00'): + hour_str = time_str.split(':')[0] + hour = int(hour_str) + if hour == 24: + hour = 0 + + diff = abs(hour - current_hour) + if diff < min_diff: + min_diff = diff + best_item = item + except (ValueError, KeyError): + continue + + # 기본 데이터 구조 생성 + result = { + "temp": self._parse_temp(best_item.get('temp', '-')), + "condition": best_item.get('weather', '정보 없음'), + "icon": self._get_weather_icon_from_text(best_item.get('weather', '')), + "humidity": self._parse_percentage(best_item.get('humid', '-')), + "wind_speed": best_item.get('wind', '-'), + "feels_like": self._parse_temp(best_item.get('feels_like', '-')), + "precipitation_prob": self._parse_percentage(best_item.get('prob', '-')), + } + + return result + + def _calculate_daytime_stats(self, items: List[Dict], current_hour: int) -> Dict[str, Any]: + """주간조(09~18시) 통계 계산""" + # 09~18시 데이터만 필터링 + daytime_items = [] + for item in items: + try: + time_str = item['time'] + if time_str.endswith(':00'): + hour_str = time_str.split(':')[0] + hour = int(hour_str) + if hour == 24: + hour = 0 + if 9 <= hour <= 18: + daytime_items.append(item) + except (ValueError, KeyError): + continue + + if not daytime_items: + return {} + + # 온도 추출 + temps = [] + feels_likes = [] + precip_probs = [] + + for item in daytime_items: + temp = self._parse_temp(item.get('temp', '-')) + feels = self._parse_temp(item.get('feels_like', '-')) + prob = self._parse_percentage(item.get('prob', '-')) + + if temp is not None: + temps.append(temp) + if feels is not None: + feels_likes.append(feels) + if prob is not None: + precip_probs.append(prob) + + result = {} + + if temps: + result['temp_min'] = min(temps) + result['temp_max'] = max(temps) + + if feels_likes: + result['feels_like_min'] = min(feels_likes) + result['feels_like_max'] = max(feels_likes) + + if precip_probs: + result['precipitation_prob_max'] = max(precip_probs) + + return result + + def _parse_temp(self, temp_str: str) -> Optional[int]: + """온도 문자열 파싱 (예: "4℃" -> 4)""" + try: + if temp_str == "-" or not temp_str: + return None + # 숫자만 추출 + import re + match = re.search(r'-?\d+', temp_str) + if match: + return int(match.group()) + except (ValueError, AttributeError): + pass + return None + + def _parse_percentage(self, percent_str: str) -> Optional[int]: + """퍼센트 문자열 파싱 (예: "60%" -> 60)""" + try: + if percent_str == "-" or not percent_str: + return None + import re + match = re.search(r'\d+', percent_str) + if match: + return int(match.group()) + except (ValueError, AttributeError): + pass + return None + + @staticmethod + def _get_weather_icon_from_text(weather_text: str) -> str: + """날씨 텍스트에서 아이콘 추출""" + if "맑음" in weather_text: + return "☀️" + elif "구름" in weather_text: + if "많음" in weather_text: + return "☁️" + else: + return "⛅" + elif "흐림" in weather_text: + return "☁️" + elif "비" in weather_text: + return "🌧️" + elif "눈" in weather_text: + return "❄️" + elif "천둥" in weather_text or "번개" in weather_text: + return "⛈️" + elif "안개" in weather_text or " fog" in weather_text.lower(): + return "🌫️" + else: + return "🌤️" + + +class WeatherService(QObject): + """ + 날씨 서비스 클래스 + + 주기적으로 날씨 정보를 가져와 업데이트합니다. + 2시간마다 자동으로 업데이트하며, HTML 파일로 캐시합니다. + + Examples: + >>> weather = WeatherService() + >>> weather.start() + >>> weather.refresh() # 즉시 새로고침 + """ + + def __init__(self): + super().__init__() + + self.config = ConfigManager() + self.signals = GlobalSignals() + + # 2시간마다 체크하는 타이머 (1분마다 체크) + self._check_timer = QTimer() + self._check_timer.timeout.connect(self._check_and_update) + + self._thread: Optional[QThread] = None + self._worker: Optional[WeatherWorker] = None + + self._last_data: Dict[str, Any] = {} + + logger.info("날씨 서비스 초기화 완료") + + def start(self): + """서비스 시작""" + if not self.config.get('weather', 'enabled', True): + return + + # 즉시 한 번 업데이트 + self.update_weather() + + # 1분마다 체크 (2시간 경과 확인) + self._check_timer.start(60 * 1000) # 1분 + + logger.info("날씨 서비스 시작") + + def stop(self): + """서비스 중지""" + self._check_timer.stop() + + if self._thread and self._thread.isRunning(): + self._thread.quit() + self._thread.wait() + + logger.info("날씨 서비스 중지") + + def _check_and_update(self): + """2시간 경과 확인 후 업데이트""" + if not WEATHER_TIMESTAMP_FILE.exists(): + # 타임스탬프 파일이 없으면 업데이트 + self.update_weather() + return + + try: + with open(WEATHER_TIMESTAMP_FILE, 'r', encoding='utf-8') as f: + timestamp_str = f.read().strip() + timestamp = datetime.fromisoformat(timestamp_str) + elapsed = datetime.now() - timestamp + + if elapsed >= WEATHER_CACHE_DURATION: + logger.info("2시간 경과, 날씨 정보 업데이트") + self.update_weather() + except Exception as e: + logger.error(f"타임스탬프 확인 실패: {e}") + + def update_weather(self, force_refresh: bool = False): + """ + 날씨 정보 업데이트 + + Args: + force_refresh: True면 캐시 무시하고 강제 새로고침 + """ + # 이전 작업이 실행 중이면 건너뛰기 + if self._thread and self._thread.isRunning(): + return + + lat = self.config.get('weather', 'location_lat', 35.1796) + lon = self.config.get('weather', 'location_lon', 129.0756) + + # 지역 코드 가져오기 (기본값: 부산) + location_name = self.config.get('weather', 'location_name', '부산') + code = self._get_location_code(location_name) + + # 워커 생성 + self._thread = QThread() + self._worker = WeatherWorker(lat, lon, code, force_refresh) + self._worker.moveToThread(self._thread) + + # 시그널 연결 + self._thread.started.connect(self._worker.run) + self._worker.finished.connect(self._on_weather_received) + self._worker.finished.connect(self._thread.quit) + self._worker.error.connect(self._on_weather_error) + + # 스레드 시작 + self._thread.start() + + def refresh(self): + """즉시 날씨 정보 새로고침""" + logger.info("날씨 정보 강제 새로고침") + self.update_weather(force_refresh=True) + + def _get_location_code(self, location_name: str) -> str: + """지역명으로 코드 가져오기""" + # 설정에서 지역 코드 가져오기 + code = self.config.get('weather', 'location_code', '') + if code: + return code + + # 설정에 없으면 기본 매핑 사용 + location_codes = { + '부산': '2638057200', + '서울': '1168000000', + '대구': '2720000000', + '인천': '2810000000', + '광주': '2911000000', + '대전': '3011000000', + '울산': '3117000000', + '수원': '4111000000', + '고양': '4128000000', + '용인': '4146000000', + '성남': '4113000000', + '부천': '4119000000', + '화성': '4159000000', + '안산': '4127000000', + '안양': '4117000000', + '평택': '4122000000', + '의정부': '4115000000', + '시흥': '4153000000', + '김포': '4157000000', + '광명': '4121000000', + '이천': '4150000000', + } + return location_codes.get(location_name, '2638057200') + + def _on_weather_received(self, data: dict): + """날씨 정보 수신""" + self._last_data = data + + # JSON으로 변환하여 시그널 발생 + json_data = json.dumps(data, ensure_ascii=False) + self.signals.weather_updated.emit(json_data) + + logger.debug(f"날씨 업데이트: {data.get('temp')}°C, {data.get('condition')}") + + def _on_weather_error(self, error_msg: str): + """날씨 오류""" + self.signals.weather_error.emit(error_msg) + + def get_last_weather(self) -> Dict[str, Any]: + """마지막 날씨 정보 반환""" + return self._last_data.copy() + + def get_fetched_time(self) -> Optional[datetime]: + """가져온 시간 반환""" + if not WEATHER_TIMESTAMP_FILE.exists(): + return None + + try: + with open(WEATHER_TIMESTAMP_FILE, 'r', encoding='utf-8') as f: + timestamp_str = f.read().strip() + return datetime.fromisoformat(timestamp_str) + except Exception as e: + logger.error(f"타임스탬프 읽기 실패: {e}") + return None + + def get_weather_for_shift(self, shift_type: str) -> Dict[str, Any]: + """ + 현재 근무 형태에 따른 날씨 정보를 반환합니다. + + Args: + shift_type: 근무 유형 ("주간" 또는 "야간") + + Returns: + 날씨 통계 데이터 + """ + try: + crud = CRUDManager() + location_code = self._get_location_code(self.config.get('weather', 'location_name', '부산')) + + # 오늘 날짜 + today = date.today() + + # 근무 시간대의 날씨 통계 가져오기 + stats = crud.get_weather_stats_for_shift(shift_type, today, location_code) + + # 현재 날씨 정보와 통합 + current_weather = self.get_last_weather() + + result = { + "current_temp": current_weather.get("temp"), + "current_condition": current_weather.get("condition", "정보 없음"), + "current_icon": current_weather.get("icon", "🌤"), + "shift_type": shift_type, + "temp_min": stats.get("temp_min"), + "temp_max": stats.get("temp_max"), + "feels_like_min": stats.get("feels_like_min"), + "feels_like_max": stats.get("feels_like_max"), + "max_precipitation_prob": stats.get("max_precipitation_prob"), + "data_points": stats.get("data_points", 0) + } + + return result + + except Exception as e: + logger.error(f"근무 형태 날씨 정보 조회 실패: {e}") + # 오류 시 현재 날씨 정보만 반환 + current_weather = self.get_last_weather() + return { + "current_temp": current_weather.get("temp"), + "current_condition": current_weather.get("condition", "정보 없음"), + "current_icon": current_weather.get("icon", "🌤"), + "shift_type": shift_type, + "temp_min": None, + "temp_max": None, + "feels_like_min": None, + "feels_like_max": None, + "max_precipitation_prob": None, + "data_points": 0 + } + + def get_all_weather_items(self) -> List[Dict[str, Any]]: + """ + 모든 날씨 아이템 반환 (상세 다이얼로그용) + + Returns: + 날씨 아이템 리스트 (날짜, 시간, 온도, 체감온도, 강수확률, 바람, 습도, 날씨 포함) + """ + if not WEATHER_HTML_FILE.exists(): + return [] + + try: + with open(WEATHER_HTML_FILE, 'r', encoding='utf-8') as f: + html_content = f.read() + + return WeatherService._parse_all_weather_items(html_content) + except Exception as e: + logger.error(f"날씨 아이템 로드 실패: {e}") + return [] + + @staticmethod + def _parse_temp(temp_str: str) -> Optional[int]: + """온도 문자열 파싱 (예: "4℃" -> 4)""" + try: + if temp_str == "-" or not temp_str: + return None + # 숫자만 추출 + import re + match = re.search(r'-?\d+', temp_str) + if match: + return int(match.group()) + except (ValueError, AttributeError): + pass + return None + + @staticmethod + def _parse_percentage(percent_str: str) -> Optional[int]: + """퍼센트 문자열 파싱 (예: "60%" -> 60)""" + try: + if percent_str == "-" or not percent_str: + return None + import re + match = re.search(r'\d+', percent_str) + if match: + return int(match.group()) + except (ValueError, AttributeError): + pass + return None + + @staticmethod + def _get_weather_icon_from_text(weather_text: str) -> str: + """날씨 텍스트에서 아이콘 추출""" + if "맑음" in weather_text: + return "☀️" + elif "구름" in weather_text: + if "많음" in weather_text: + return "☁️" + else: + return "⛅" + elif "흐림" in weather_text: + return "☁️" + elif "비" in weather_text: + return "🌧️" + elif "눈" in weather_text: + return "❄️" + elif "천둥" in weather_text or "번개" in weather_text: + return "⛈️" + elif "안개" in weather_text or " fog" in weather_text.lower(): + return "🌫️" + else: + return "🌤️" + + @staticmethod + def _parse_all_weather_items(html_content: str) -> List[Dict[str, Any]]: + """HTML에서 모든 날씨 아이템 파싱""" + try: + from selectolax.parser import HTMLParser + + tree = HTMLParser(html_content) + slides = tree.css("div.slide-wrap div.slide") + + if not slides: + return [] + + weather_items = [] + + for slide in slides: + daily_node = slide.css_first("div.daily") + if not daily_node: + continue + + date_str = daily_node.attributes.get('data-date', '').strip() + ul_items = daily_node.css("ul") + + for ul in ul_items: + if "item" not in ul.attributes.get("class", ""): + continue + + w_data = { + "time": "-", "weather": "-", "temp": "-", + "feels_like": "-", "prob": "-", "wind": "-", "humid": "-" + } + + if 'data-time' in ul.attributes: + w_data['time'] = ul.attributes['data-time'] + + lis = ul.css("li") + for li in lis: + label_node = li.css_first("span.hid") + if not label_node: + continue + + label_text = label_node.text(strip=True) + + if "시각" in label_text and w_data['time'] == "-": + val = li.css_first("span:not(.hid)") + if val: + w_data['time'] = val.text(strip=True) + elif "날씨" in label_text: + wic = li.css_first(".wic") + if wic: + w_data['weather'] = wic.attributes.get("title") or wic.text(strip=True) + elif "기온" in label_text: + feel_node = li.css_first(".feel") + if feel_node: + w_data['temp'] = feel_node.text(deep=False, strip=True) + elif "체감온도" in label_text and "기온" not in label_text: + spans = li.css("span") + if len(spans) > 1: + w_data['feels_like'] = spans[-1].text(strip=True) + elif "강수확률" in label_text: + spans = li.css("span") + if len(spans) > 1: + prob = spans[-1].text(strip=True) + w_data['prob'] = prob if prob else "-" + elif "바람" in label_text: + wd_node = li.css_first(".wdic") + ws_node = li.css_first(".wspd:not(.qwsd)") + wd = wd_node.text(strip=True) if wd_node else "" + ws = ws_node.text(strip=True) if ws_node else "" + w_data['wind'] = f"{wd} {ws}".strip() + elif "습도" in label_text: + spans = li.css("span") + if len(spans) > 1: + w_data['humid'] = spans[-1].text(strip=True) + + if w_data['time'] != "-": + # 날짜와 시간을 합쳐서 datetime 객체 생성 + try: + # date_str 형식: "2026-01-04" + # time_str 형식: "23:00" 또는 "24:00" + time_str = w_data['time'] + if time_str.endswith(':00'): + hour_str = time_str.split(':')[0] + hour = int(hour_str) + if hour == 24: + hour = 0 + # 다음 날로 처리 + date_obj = datetime.strptime(date_str, "%Y-%m-%d") + date_obj = date_obj + timedelta(days=1) + else: + date_obj = datetime.strptime(date_str, "%Y-%m-%d") + + dt = date_obj.replace(hour=hour, minute=0, second=0, microsecond=0) + + # 현재 시간 이후의 데이터만 포함 + if dt >= datetime.now().replace(minute=0, second=0, microsecond=0): + weather_items.append({ + 'datetime': dt, + 'date': date_str, + 'time': w_data['time'], + 'temp': WeatherService._parse_temp(w_data['temp']), + 'feels_like': WeatherService._parse_temp(w_data['feels_like']), + 'precipitation_prob': WeatherService._parse_percentage(w_data['prob']), + 'wind': w_data['wind'], + 'humidity': WeatherService._parse_percentage(w_data['humid']), + 'weather': w_data['weather'], + 'icon': WeatherService._get_weather_icon_from_text(w_data['weather']) + }) + except (ValueError, KeyError) as e: + logger.debug(f"날짜/시간 파싱 실패: {date_str} {w_data['time']} - {e}") + continue + + # datetime 기준으로 정렬 + weather_items.sort(key=lambda x: x['datetime']) + + return weather_items + + except Exception as e: + logger.error(f"날씨 아이템 파싱 실패: {e}") + return [] + + @staticmethod + def _save_weather_data_to_db_static(weather_items: List[Dict[str, Any]], location_code: str): + """ + 파싱된 날씨 데이터를 데이터베이스에 저장합니다. + + Args: + weather_items: 날씨 아이템 리스트 + location_code: 지역코드 + """ + if not weather_items: + return + + try: + # 지역명 가져오기 (설정에서) + config = ConfigManager() + location_name = config.get('weather', 'location_name', '부산') + + crud = CRUDManager() + + saved_count = 0 + for item in weather_items: + try: + crud.upsert_weather( + datetime=item['datetime'], + location_name=location_name, + location_code=location_code, + temp=item.get('temp'), + feels_like=item.get('feels_like'), + humidity=item.get('humidity'), + wind_speed=item.get('wind', ''), + wind_direction='', # 풍향 정보는 파싱하지 않음 + precipitation_prob=item.get('precipitation_prob'), + weather_condition=item.get('weather', ''), + weather_icon=item.get('icon', '') + ) + saved_count += 1 + except Exception as e: + logger.debug(f"날씨 데이터 저장 실패 ({item.get('datetime')}): {e}") + continue + + logger.info(f"날씨 데이터 {saved_count}개 DB에 저장됨") + + # 오래된 데이터 정리 (7일 이상 된 데이터 삭제) + try: + crud.cleanup_old_weather_data(7) + except Exception as e: + logger.error(f"오래된 날씨 데이터 정리 실패: {e}") + + except Exception as e: + logger.error(f"날씨 데이터 DB 저장 중 오류: {e}") + + diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..3b39e4d --- /dev/null +++ b/setup.py @@ -0,0 +1,33 @@ +import sys +import os +from cx_Freeze import setup, Executable + +# Dependencies are automatically detected, but it might need fine tuning. +build_exe_options = { + "packages": ["os", "sys", "requests", "aiohttp", "certifi", "idna", "urllib3", "PySide6"], + "excludes": ["tkinter", "unittest", "email", "html", "http", "xml"], + "include_files": [ + ("assets", "assets"), + ("config.ini", "config.ini"), + ("ARCHITECTURE.md", "ARCHITECTURE.md"), + ("database", "database"), # Ensure database folder structure exists + ], + "include_msvcr": True, +} + +# GUI applications require a different base on Windows (the default is for a +# console application). +base = None +if sys.platform == "win32": + base = "Win32GUI" + +setup( + name="HandoverSystem", + version="1.0.0", + description="전동차 업무 인수인계 및 고장관리 프로그램", + options={"build_exe": build_exe_options}, + executables=[ + Executable("main.py", base=base, target_name="HandoverSystem.exe", icon="assets/icons/app_icon.ico" if os.path.exists("assets/icons/app_icon.ico") else None), + Executable("updater.py", base=base, target_name="updater.exe") # Pack updater together + ], +) diff --git a/setup_test.py b/setup_test.py new file mode 100644 index 0000000..369f569 --- /dev/null +++ b/setup_test.py @@ -0,0 +1,9 @@ +import sys +from cx_Freeze import setup, Executable + +setup( + name="TestBuild", + version="0.1", + description="Test Build", + executables=[Executable("main.py")] +) diff --git a/storage/faults_1_meta.json b/storage/faults_1_meta.json new file mode 100644 index 0000000..31060e7 --- /dev/null +++ b/storage/faults_1_meta.json @@ -0,0 +1,67 @@ +[ + { + "id": "6d55583b", + "title": "118B편성 6호차 출입문 123123", + "filename": "1.png", + "filepath": "사진\\2026\\(20260129) 118B편성 6호차 출입문 123123\\6d55583b_1.png", + "file_type": "image", + "file_size": 176588, + "created_at": "2026-01-05T16:29:44.425984", + "record_type": "faults", + "record_id": 1, + "group_id": "e66435ae", + "order": 0 + }, + { + "id": "2f837eb6", + "title": "118B편성 6호차 출입문 123123", + "filename": "4.png", + "filepath": "사진\\2026\\(20260129) 118B편성 6호차 출입문 123123\\2f837eb6_4.png", + "file_type": "image", + "file_size": 777762, + "created_at": "2026-01-05T16:29:44.436985", + "record_type": "faults", + "record_id": 1, + "group_id": "e66435ae", + "order": 1 + }, + { + "id": "e03a10af", + "title": "118B편성 6호차 출입문 123123", + "filename": "a.png", + "filepath": "사진\\2026\\(20260129) 118B편성 6호차 출입문 123123\\e03a10af_a.png", + "file_type": "image", + "file_size": 957880, + "created_at": "2026-01-05T16:29:44.448984", + "record_type": "faults", + "record_id": 1, + "group_id": "e66435ae", + "order": 2 + }, + { + "id": "b54357c3", + "title": "118B편성 6호차 출입문 123123", + "filename": "(20260129) 118B편성 6호차 출입문 123123.pdf", + "filepath": "보고서\\01.출입문\\(20260129) 118B편성 6호차 출입문 123123.pdf", + "file_type": "pdf", + "file_size": 453521, + "created_at": "2026-01-05T16:30:00.900617", + "record_type": "faults", + "record_id": 1, + "group_id": "b54357c3", + "order": 0 + }, + { + "id": "d351bf79", + "title": "다대노포선로형상도", + "filename": "(20260129) 다대노포선로형상도.pdf", + "filepath": "보고서\\01.출입문\\(20260129) 다대노포선로형상도.pdf", + "file_type": "pdf", + "file_size": 18459036, + "created_at": "2026-01-05T16:30:50.465920", + "record_type": "faults", + "record_id": 1, + "group_id": "d351bf79", + "order": 0 + } +] \ No newline at end of file diff --git a/storage/보고서/01.출입문/(20240107) 39편성 2222열차 7호차 1위 출입문 닫힘 불량 동향보고.hwp b/storage/보고서/01.출입문/(20240107) 39편성 2222열차 7호차 1위 출입문 닫힘 불량 동향보고.hwp new file mode 100644 index 0000000..c0df6f0 Binary files /dev/null and b/storage/보고서/01.출입문/(20240107) 39편성 2222열차 7호차 1위 출입문 닫힘 불량 동향보고.hwp differ diff --git a/storage/보고서/01.출입문/(20240108) 29편성 1017열차 5호차 2위 출입문 닫힘 불량 동향보고.hwp b/storage/보고서/01.출입문/(20240108) 29편성 1017열차 5호차 2위 출입문 닫힘 불량 동향보고.hwp new file mode 100644 index 0000000..db4fe9d Binary files /dev/null and b/storage/보고서/01.출입문/(20240108) 29편성 1017열차 5호차 2위 출입문 닫힘 불량 동향보고.hwp differ diff --git a/storage/보고서/01.출입문/(20240108) 29편성 5호차 2위 출입문 닫힘 불량.hwp b/storage/보고서/01.출입문/(20240108) 29편성 5호차 2위 출입문 닫힘 불량.hwp new file mode 100644 index 0000000..27577d0 Binary files /dev/null and b/storage/보고서/01.출입문/(20240108) 29편성 5호차 2위 출입문 닫힘 불량.hwp differ diff --git a/storage/보고서/01.출입문/(20240110) 12편성 신평역 출입문 미닫힘 동향보고.hwp b/storage/보고서/01.출입문/(20240110) 12편성 신평역 출입문 미닫힘 동향보고.hwp new file mode 100644 index 0000000..05f8950 Binary files /dev/null and b/storage/보고서/01.출입문/(20240110) 12편성 신평역 출입문 미닫힘 동향보고.hwp differ diff --git a/storage/보고서/01.출입문/(20240113) 34편성 2294열차 7호차 1위 출입문 열림 불량 동향보고.hwp b/storage/보고서/01.출입문/(20240113) 34편성 2294열차 7호차 1위 출입문 열림 불량 동향보고.hwp new file mode 100644 index 0000000..b958fd5 Binary files /dev/null and b/storage/보고서/01.출입문/(20240113) 34편성 2294열차 7호차 1위 출입문 열림 불량 동향보고.hwp differ diff --git a/storage/보고서/01.출입문/(20240311) 13편성 자갈치역 출입문DCU고장 동향보고.hwp b/storage/보고서/01.출입문/(20240311) 13편성 자갈치역 출입문DCU고장 동향보고.hwp new file mode 100644 index 0000000..003e563 Binary files /dev/null and b/storage/보고서/01.출입문/(20240311) 13편성 자갈치역 출입문DCU고장 동향보고.hwp differ diff --git a/storage/보고서/01.출입문/(20240402) 20편성 출입문 닫힘 불량.hwp b/storage/보고서/01.출입문/(20240402) 20편성 출입문 닫힘 불량.hwp new file mode 100644 index 0000000..fb7b5b4 Binary files /dev/null and b/storage/보고서/01.출입문/(20240402) 20편성 출입문 닫힘 불량.hwp differ diff --git a/storage/보고서/01.출입문/(20240402) 제1069열차 20편성 출입문 닫힘 불량 동향보고.hwp b/storage/보고서/01.출입문/(20240402) 제1069열차 20편성 출입문 닫힘 불량 동향보고.hwp new file mode 100644 index 0000000..9fbb244 Binary files /dev/null and b/storage/보고서/01.출입문/(20240402) 제1069열차 20편성 출입문 닫힘 불량 동향보고.hwp differ diff --git a/storage/보고서/01.출입문/(20240402) 제1069열차 20편성 출입문 닫힘 불량 조치 결과보고.hwp b/storage/보고서/01.출입문/(20240402) 제1069열차 20편성 출입문 닫힘 불량 조치 결과보고.hwp new file mode 100644 index 0000000..dde35a1 Binary files /dev/null and b/storage/보고서/01.출입문/(20240402) 제1069열차 20편성 출입문 닫힘 불량 조치 결과보고.hwp differ diff --git a/storage/보고서/01.출입문/(20240524) 34편성 7호차 4위 출입문 열림불량.hwp b/storage/보고서/01.출입문/(20240524) 34편성 7호차 4위 출입문 열림불량.hwp new file mode 100644 index 0000000..c3f1e24 Binary files /dev/null and b/storage/보고서/01.출입문/(20240524) 34편성 7호차 4위 출입문 열림불량.hwp differ diff --git a/storage/보고서/01.출입문/(20240607) 1호선 제44편성 출입문 열림 불량 조치결과 보고(차량처) 2분 전자변코일.hwp b/storage/보고서/01.출입문/(20240607) 1호선 제44편성 출입문 열림 불량 조치결과 보고(차량처) 2분 전자변코일.hwp new file mode 100644 index 0000000..57b93d1 Binary files /dev/null and b/storage/보고서/01.출입문/(20240607) 1호선 제44편성 출입문 열림 불량 조치결과 보고(차량처) 2분 전자변코일.hwp differ diff --git a/storage/보고서/01.출입문/(20240614) 1호선 7호차 노포회차선에서 본선으로 이동.hwp b/storage/보고서/01.출입문/(20240614) 1호선 7호차 노포회차선에서 본선으로 이동.hwp new file mode 100644 index 0000000..0897252 Binary files /dev/null and b/storage/보고서/01.출입문/(20240614) 1호선 7호차 노포회차선에서 본선으로 이동.hwp differ diff --git a/storage/보고서/01.출입문/(20240627) 41편성 출입문 열림불량 관련 동향보고-복사.pdf b/storage/보고서/01.출입문/(20240627) 41편성 출입문 열림불량 관련 동향보고-복사.pdf new file mode 100644 index 0000000..de322fa Binary files /dev/null and b/storage/보고서/01.출입문/(20240627) 41편성 출입문 열림불량 관련 동향보고-복사.pdf differ diff --git a/storage/보고서/01.출입문/(20240821) 1호선 제46편성 출입문 장애물검지 관련 동향보고 (1).hwp b/storage/보고서/01.출입문/(20240821) 1호선 제46편성 출입문 장애물검지 관련 동향보고 (1).hwp new file mode 100644 index 0000000..201b1bf Binary files /dev/null and b/storage/보고서/01.출입문/(20240821) 1호선 제46편성 출입문 장애물검지 관련 동향보고 (1).hwp differ diff --git a/storage/보고서/01.출입문/(20260105)1호선 118B편성 6호차 123123 동향보고.hwp b/storage/보고서/01.출입문/(20260105)1호선 118B편성 6호차 123123 동향보고.hwp new file mode 100644 index 0000000..c0df6f0 Binary files /dev/null and b/storage/보고서/01.출입문/(20260105)1호선 118B편성 6호차 123123 동향보고.hwp differ diff --git a/storage/보고서/01.출입문/(20260129) 118B편성 6호차 출입문 123123.pdf b/storage/보고서/01.출입문/(20260129) 118B편성 6호차 출입문 123123.pdf new file mode 100644 index 0000000..4d0ddb9 Binary files /dev/null and b/storage/보고서/01.출입문/(20260129) 118B편성 6호차 출입문 123123.pdf differ diff --git a/storage/보고서/01.출입문/(20260129) 다대노포선로형상도.pdf b/storage/보고서/01.출입문/(20260129) 다대노포선로형상도.pdf new file mode 100644 index 0000000..805a75c Binary files /dev/null and b/storage/보고서/01.출입문/(20260129) 다대노포선로형상도.pdf differ diff --git a/storage/보고서/01.출입문/20편성 출고점검 시.hwp b/storage/보고서/01.출입문/20편성 출고점검 시.hwp new file mode 100644 index 0000000..f771a61 Binary files /dev/null and b/storage/보고서/01.출입문/20편성 출고점검 시.hwp differ diff --git a/storage/사진/2026/(20260129) 118B편성 6호차 출입문 123123/2f837eb6_4.png b/storage/사진/2026/(20260129) 118B편성 6호차 출입문 123123/2f837eb6_4.png new file mode 100644 index 0000000..73a3e1e Binary files /dev/null and b/storage/사진/2026/(20260129) 118B편성 6호차 출입문 123123/2f837eb6_4.png differ diff --git a/storage/사진/2026/(20260129) 118B편성 6호차 출입문 123123/6d55583b_1.png b/storage/사진/2026/(20260129) 118B편성 6호차 출입문 123123/6d55583b_1.png new file mode 100644 index 0000000..8af03e8 Binary files /dev/null and b/storage/사진/2026/(20260129) 118B편성 6호차 출입문 123123/6d55583b_1.png differ diff --git a/storage/사진/2026/(20260129) 118B편성 6호차 출입문 123123/e03a10af_a.png b/storage/사진/2026/(20260129) 118B편성 6호차 출입문 123123/e03a10af_a.png new file mode 100644 index 0000000..cabf945 Binary files /dev/null and b/storage/사진/2026/(20260129) 118B편성 6호차 출입문 123123/e03a10af_a.png differ diff --git a/storage/사진/2026/(20260129) 118B편성 6호차 출입문 123123/thumbnails/thumb_2f837eb6_4.png b/storage/사진/2026/(20260129) 118B편성 6호차 출입문 123123/thumbnails/thumb_2f837eb6_4.png new file mode 100644 index 0000000..c1dc046 Binary files /dev/null and b/storage/사진/2026/(20260129) 118B편성 6호차 출입문 123123/thumbnails/thumb_2f837eb6_4.png differ diff --git a/storage/사진/2026/(20260129) 118B편성 6호차 출입문 123123/thumbnails/thumb_6d55583b_1.png b/storage/사진/2026/(20260129) 118B편성 6호차 출입문 123123/thumbnails/thumb_6d55583b_1.png new file mode 100644 index 0000000..ea2a732 Binary files /dev/null and b/storage/사진/2026/(20260129) 118B편성 6호차 출입문 123123/thumbnails/thumb_6d55583b_1.png differ diff --git a/storage/사진/2026/(20260129) 118B편성 6호차 출입문 123123/thumbnails/thumb_e03a10af_a.png b/storage/사진/2026/(20260129) 118B편성 6호차 출입문 123123/thumbnails/thumb_e03a10af_a.png new file mode 100644 index 0000000..811864c Binary files /dev/null and b/storage/사진/2026/(20260129) 118B편성 6호차 출입문 123123/thumbnails/thumb_e03a10af_a.png differ diff --git a/test/canvas_img.py b/test/canvas_img.py new file mode 100644 index 0000000..d5db807 --- /dev/null +++ b/test/canvas_img.py @@ -0,0 +1,748 @@ + +try: + from PyQt5.QtGui import * + from PyQt5.QtCore import * + from PyQt5.QtWidgets import * +except ImportError: + from PyQt4.QtGui import * + from PyQt4.QtCore import * + +# from PyQt4.QtOpenGL import * + +from libs.shape import Shape +from libs.utils import distance + +CURSOR_DEFAULT = Qt.ArrowCursor +CURSOR_POINT = Qt.PointingHandCursor +CURSOR_DRAW = Qt.CrossCursor +CURSOR_MOVE = Qt.ClosedHandCursor +CURSOR_GRAB = Qt.OpenHandCursor + +# class Canvas(QGLWidget): + + +class Canvas(QWidget): + zoomRequest = pyqtSignal(int) + lightRequest = pyqtSignal(int) + scrollRequest = pyqtSignal(int, int) + newShape = pyqtSignal() + selectionChanged = pyqtSignal(bool) + shapeMoved = pyqtSignal() + drawingPolygon = pyqtSignal(bool) + + CREATE, EDIT = list(range(2)) + + epsilon = 24.0 + + def __init__(self, *args, **kwargs): + super(Canvas, self).__init__(*args, **kwargs) + # Initialise local state. + self.mode = self.EDIT + self.shapes = [] + self.current = None + self.selected_shape = None # save the selected shape here + self.selected_shape_copy = None + self.drawing_line_color = QColor(0, 0, 255) + self.drawing_rect_color = QColor(0, 0, 255) + self.line = Shape(line_color=self.drawing_line_color) + self.prev_point = QPointF() + self.offsets = QPointF(), QPointF() + self.scale = 1.0 + self.overlay_color = None + self.label_font_size = 8 + self.pixmap = QPixmap() + self.visible = {} + self._hide_background = False + self.hide_background = False + self.h_shape = None + self.h_vertex = None + self._painter = QPainter() + self._cursor = CURSOR_DEFAULT + # Menus: + self.menus = (QMenu(), QMenu()) + # Set widget options. + self.setMouseTracking(True) + self.setFocusPolicy(Qt.WheelFocus) + self.verified = False + self.draw_square = False + + # initialisation for panning + self.pan_initial_pos = QPoint() + + def set_drawing_color(self, qcolor): + self.drawing_line_color = qcolor + self.drawing_rect_color = qcolor + + def enterEvent(self, ev): + self.override_cursor(self._cursor) + + def leaveEvent(self, ev): + self.restore_cursor() + + def focusOutEvent(self, ev): + self.restore_cursor() + + def isVisible(self, shape): + return self.visible.get(shape, True) + + def drawing(self): + return self.mode == self.CREATE + + def editing(self): + return self.mode == self.EDIT + + def set_editing(self, value=True): + self.mode = self.EDIT if value else self.CREATE + if not value: # Create + self.un_highlight() + self.de_select_shape() + self.prev_point = QPointF() + self.repaint() + + def un_highlight(self, shape=None): + if shape == None or shape == self.h_shape: + if self.h_shape: + self.h_shape.highlight_clear() + self.h_vertex = self.h_shape = None + + def selected_vertex(self): + return self.h_vertex is not None + + def mouseMoveEvent(self, ev): + """Update line with last point and current coordinates.""" + pos = self.transform_pos(ev.pos()) + + # Update coordinates in status bar if image is opened + window = self.parent().window() + if window.file_path is not None: + self.parent().window().label_coordinates.setText( + 'X: %d; Y: %d' % (pos.x(), pos.y())) + + # Polygon drawing. + if self.drawing(): + self.override_cursor(CURSOR_DRAW) + if self.current: + # Display annotation width and height while drawing + current_width = abs(self.current[0].x() - pos.x()) + current_height = abs(self.current[0].y() - pos.y()) + self.parent().window().label_coordinates.setText( + 'Width: %d, Height: %d / X: %d; Y: %d' % (current_width, current_height, pos.x(), pos.y())) + + color = self.drawing_line_color + if self.out_of_pixmap(pos): + # Don't allow the user to draw outside the pixmap. + # Clip the coordinates to 0 or max, + # if they are outside the range [0, max] + size = self.pixmap.size() + clipped_x = min(max(0, pos.x()), size.width()) + clipped_y = min(max(0, pos.y()), size.height()) + pos = QPointF(clipped_x, clipped_y) + elif len(self.current) > 1 and self.close_enough(pos, self.current[0]): + # Attract line to starting point and colorise to alert the + # user: + pos = self.current[0] + color = self.current.line_color + self.override_cursor(CURSOR_POINT) + self.current.highlight_vertex(0, Shape.NEAR_VERTEX) + + if self.draw_square: + init_pos = self.current[0] + min_x = init_pos.x() + min_y = init_pos.y() + min_size = min(abs(pos.x() - min_x), abs(pos.y() - min_y)) + direction_x = -1 if pos.x() - min_x < 0 else 1 + direction_y = -1 if pos.y() - min_y < 0 else 1 + self.line[1] = QPointF(min_x + direction_x * min_size, min_y + direction_y * min_size) + else: + self.line[1] = pos + + self.line.line_color = color + self.prev_point = QPointF() + self.current.highlight_clear() + else: + self.prev_point = pos + self.repaint() + return + + # Polygon copy moving. + if Qt.RightButton & ev.buttons(): + if self.selected_shape_copy and self.prev_point: + self.override_cursor(CURSOR_MOVE) + self.bounded_move_shape(self.selected_shape_copy, pos) + self.repaint() + elif self.selected_shape: + self.selected_shape_copy = self.selected_shape.copy() + self.repaint() + return + + # Polygon/Vertex moving. + if Qt.LeftButton & ev.buttons(): + if self.selected_vertex(): + self.bounded_move_vertex(pos) + self.shapeMoved.emit() + self.repaint() + + # Display annotation width and height while moving vertex + point1 = self.h_shape[1] + point3 = self.h_shape[3] + current_width = abs(point1.x() - point3.x()) + current_height = abs(point1.y() - point3.y()) + self.parent().window().label_coordinates.setText( + 'Width: %d, Height: %d / X: %d; Y: %d' % (current_width, current_height, pos.x(), pos.y())) + elif self.selected_shape and self.prev_point: + self.override_cursor(CURSOR_MOVE) + self.bounded_move_shape(self.selected_shape, pos) + self.shapeMoved.emit() + self.repaint() + + # Display annotation width and height while moving shape + point1 = self.selected_shape[1] + point3 = self.selected_shape[3] + current_width = abs(point1.x() - point3.x()) + current_height = abs(point1.y() - point3.y()) + self.parent().window().label_coordinates.setText( + 'Width: %d, Height: %d / X: %d; Y: %d' % (current_width, current_height, pos.x(), pos.y())) + else: + # pan + delta = ev.pos() - self.pan_initial_pos + self.scrollRequest.emit(delta.x(), Qt.Horizontal) + self.scrollRequest.emit(delta.y(), Qt.Vertical) + self.update() + return + + # Just hovering over the canvas, 2 possibilities: + # - Highlight shapes + # - Highlight vertex + # Update shape/vertex fill and tooltip value accordingly. + self.setToolTip("Image") + priority_list = self.shapes + ([self.selected_shape] if self.selected_shape else []) + for shape in reversed([s for s in priority_list if self.isVisible(s)]): + # Look for a nearby vertex to highlight. If that fails, + # check if we happen to be inside a shape. + index = shape.nearest_vertex(pos, self.epsilon) + if index is not None: + if self.selected_vertex(): + self.h_shape.highlight_clear() + self.h_vertex, self.h_shape = index, shape + shape.highlight_vertex(index, shape.MOVE_VERTEX) + self.override_cursor(CURSOR_POINT) + self.setToolTip("Click & drag to move point") + self.setStatusTip(self.toolTip()) + self.update() + break + elif shape.contains_point(pos): + if self.selected_vertex(): + self.h_shape.highlight_clear() + self.h_vertex, self.h_shape = None, shape + self.setToolTip( + "Click & drag to move shape '%s'" % shape.label) + self.setStatusTip(self.toolTip()) + self.override_cursor(CURSOR_GRAB) + self.update() + + # Display annotation width and height while hovering inside + point1 = self.h_shape[1] + point3 = self.h_shape[3] + current_width = abs(point1.x() - point3.x()) + current_height = abs(point1.y() - point3.y()) + self.parent().window().label_coordinates.setText( + 'Width: %d, Height: %d / X: %d; Y: %d' % (current_width, current_height, pos.x(), pos.y())) + break + else: # Nothing found, clear highlights, reset state. + if self.h_shape: + self.h_shape.highlight_clear() + self.update() + self.h_vertex, self.h_shape = None, None + self.override_cursor(CURSOR_DEFAULT) + + def mousePressEvent(self, ev): + pos = self.transform_pos(ev.pos()) + + if ev.button() == Qt.LeftButton: + if self.drawing(): + self.handle_drawing(pos) + else: + selection = self.select_shape_point(pos) + self.prev_point = pos + + if selection is None: + # pan + QApplication.setOverrideCursor(QCursor(Qt.OpenHandCursor)) + self.pan_initial_pos = ev.pos() + + elif ev.button() == Qt.RightButton and self.editing(): + self.select_shape_point(pos) + self.prev_point = pos + self.update() + + def mouseReleaseEvent(self, ev): + if ev.button() == Qt.RightButton: + menu = self.menus[bool(self.selected_shape_copy)] + self.restore_cursor() + if not menu.exec_(self.mapToGlobal(ev.pos()))\ + and self.selected_shape_copy: + # Cancel the move by deleting the shadow copy. + self.selected_shape_copy = None + self.repaint() + elif ev.button() == Qt.LeftButton and self.selected_shape: + if self.selected_vertex(): + self.override_cursor(CURSOR_POINT) + else: + self.override_cursor(CURSOR_GRAB) + elif ev.button() == Qt.LeftButton: + pos = self.transform_pos(ev.pos()) + if self.drawing(): + self.handle_drawing(pos) + else: + # pan + QApplication.restoreOverrideCursor() + + def end_move(self, copy=False): + assert self.selected_shape and self.selected_shape_copy + shape = self.selected_shape_copy + # del shape.fill_color + # del shape.line_color + if copy: + self.shapes.append(shape) + self.selected_shape.selected = False + self.selected_shape = shape + self.repaint() + else: + self.selected_shape.points = [p for p in shape.points] + self.selected_shape_copy = None + + def hide_background_shapes(self, value): + self.hide_background = value + if self.selected_shape: + # Only hide other shapes if there is a current selection. + # Otherwise the user will not be able to select a shape. + self.set_hiding(True) + self.repaint() + + def handle_drawing(self, pos): + if self.current and self.current.reach_max_points() is False: + init_pos = self.current[0] + min_x = init_pos.x() + min_y = init_pos.y() + target_pos = self.line[1] + max_x = target_pos.x() + max_y = target_pos.y() + self.current.add_point(QPointF(max_x, min_y)) + self.current.add_point(target_pos) + self.current.add_point(QPointF(min_x, max_y)) + self.finalise() + elif not self.out_of_pixmap(pos): + self.current = Shape() + self.current.add_point(pos) + self.line.points = [pos, pos] + self.set_hiding() + self.drawingPolygon.emit(True) + self.update() + + def set_hiding(self, enable=True): + self._hide_background = self.hide_background if enable else False + + def can_close_shape(self): + return self.drawing() and self.current and len(self.current) > 2 + + def mouseDoubleClickEvent(self, ev): + # We need at least 4 points here, since the mousePress handler + # adds an extra one before this handler is called. + if self.can_close_shape() and len(self.current) > 3: + self.current.pop_point() + self.finalise() + + def select_shape(self, shape): + self.de_select_shape() + shape.selected = True + self.selected_shape = shape + self.set_hiding() + self.selectionChanged.emit(True) + self.update() + + def select_shape_point(self, point): + """Select the first shape created which contains this point.""" + self.de_select_shape() + if self.selected_vertex(): # A vertex is marked for selection. + index, shape = self.h_vertex, self.h_shape + shape.highlight_vertex(index, shape.MOVE_VERTEX) + self.select_shape(shape) + return self.h_vertex + for shape in reversed(self.shapes): + if self.isVisible(shape) and shape.contains_point(point): + self.select_shape(shape) + self.calculate_offsets(shape, point) + return self.selected_shape + return None + + def calculate_offsets(self, shape, point): + rect = shape.bounding_rect() + x1 = rect.x() - point.x() + y1 = rect.y() - point.y() + x2 = (rect.x() + rect.width()) - point.x() + y2 = (rect.y() + rect.height()) - point.y() + self.offsets = QPointF(x1, y1), QPointF(x2, y2) + + def snap_point_to_canvas(self, x, y): + """ + Moves a point x,y to within the boundaries of the canvas. + :return: (x,y,snapped) where snapped is True if x or y were changed, False if not. + """ + if x < 0 or x > self.pixmap.width() or y < 0 or y > self.pixmap.height(): + x = max(x, 0) + y = max(y, 0) + x = min(x, self.pixmap.width()) + y = min(y, self.pixmap.height()) + return x, y, True + + return x, y, False + + def bounded_move_vertex(self, pos): + index, shape = self.h_vertex, self.h_shape + point = shape[index] + if self.out_of_pixmap(pos): + size = self.pixmap.size() + clipped_x = min(max(0, pos.x()), size.width()) + clipped_y = min(max(0, pos.y()), size.height()) + pos = QPointF(clipped_x, clipped_y) + + if self.draw_square: + opposite_point_index = (index + 2) % 4 + opposite_point = shape[opposite_point_index] + + min_size = min(abs(pos.x() - opposite_point.x()), abs(pos.y() - opposite_point.y())) + direction_x = -1 if pos.x() - opposite_point.x() < 0 else 1 + direction_y = -1 if pos.y() - opposite_point.y() < 0 else 1 + shift_pos = QPointF(opposite_point.x() + direction_x * min_size - point.x(), + opposite_point.y() + direction_y * min_size - point.y()) + else: + shift_pos = pos - point + + shape.move_vertex_by(index, shift_pos) + + left_index = (index + 1) % 4 + right_index = (index + 3) % 4 + left_shift = None + right_shift = None + if index % 2 == 0: + right_shift = QPointF(shift_pos.x(), 0) + left_shift = QPointF(0, shift_pos.y()) + else: + left_shift = QPointF(shift_pos.x(), 0) + right_shift = QPointF(0, shift_pos.y()) + shape.move_vertex_by(right_index, right_shift) + shape.move_vertex_by(left_index, left_shift) + + def bounded_move_shape(self, shape, pos): + if self.out_of_pixmap(pos): + return False # No need to move + o1 = pos + self.offsets[0] + if self.out_of_pixmap(o1): + pos -= QPointF(min(0, o1.x()), min(0, o1.y())) + o2 = pos + self.offsets[1] + if self.out_of_pixmap(o2): + pos += QPointF(min(0, self.pixmap.width() - o2.x()), + min(0, self.pixmap.height() - o2.y())) + # The next line tracks the new position of the cursor + # relative to the shape, but also results in making it + # a bit "shaky" when nearing the border and allows it to + # go outside of the shape's area for some reason. XXX + # self.calculateOffsets(self.selectedShape, pos) + dp = pos - self.prev_point + if dp: + shape.move_by(dp) + self.prev_point = pos + return True + return False + + def de_select_shape(self): + if self.selected_shape: + self.selected_shape.selected = False + self.selected_shape = None + self.set_hiding(False) + self.selectionChanged.emit(False) + self.update() + + def delete_selected(self): + if self.selected_shape: + shape = self.selected_shape + self.un_highlight(shape) + self.shapes.remove(self.selected_shape) + self.selected_shape = None + self.update() + return shape + + def copy_selected_shape(self): + if self.selected_shape: + shape = self.selected_shape.copy() + self.de_select_shape() + self.shapes.append(shape) + shape.selected = True + self.selected_shape = shape + self.bounded_shift_shape(shape) + return shape + + def bounded_shift_shape(self, shape): + # Try to move in one direction, and if it fails in another. + # Give up if both fail. + point = shape[0] + offset = QPointF(2.0, 2.0) + self.calculate_offsets(shape, point) + self.prev_point = point + if not self.bounded_move_shape(shape, point - offset): + self.bounded_move_shape(shape, point + offset) + + def paintEvent(self, event): + if not self.pixmap: + return super(Canvas, self).paintEvent(event) + + p = self._painter + p.begin(self) + p.setRenderHint(QPainter.Antialiasing) + p.setRenderHint(QPainter.HighQualityAntialiasing) + p.setRenderHint(QPainter.SmoothPixmapTransform) + + p.scale(self.scale, self.scale) + p.translate(self.offset_to_center()) + + temp = self.pixmap + if self.overlay_color: + temp = QPixmap(self.pixmap) + painter = QPainter(temp) + painter.setCompositionMode(painter.CompositionMode_Overlay) + painter.fillRect(temp.rect(), self.overlay_color) + painter.end() + + p.drawPixmap(0, 0, temp) + Shape.scale = self.scale + Shape.label_font_size = self.label_font_size + for shape in self.shapes: + if (shape.selected or not self._hide_background) and self.isVisible(shape): + shape.fill = shape.selected or shape == self.h_shape + shape.paint(p) + if self.current: + self.current.paint(p) + self.line.paint(p) + if self.selected_shape_copy: + self.selected_shape_copy.paint(p) + + # Paint rect + if self.current is not None and len(self.line) == 2: + left_top = self.line[0] + right_bottom = self.line[1] + rect_width = right_bottom.x() - left_top.x() + rect_height = right_bottom.y() - left_top.y() + p.setPen(self.drawing_rect_color) + brush = QBrush(Qt.BDiagPattern) + p.setBrush(brush) + p.drawRect(int(left_top.x()), int(left_top.y()), int(rect_width), int(rect_height)) + + if self.drawing() and not self.prev_point.isNull() and not self.out_of_pixmap(self.prev_point): + p.setPen(QColor(0, 0, 0)) + p.drawLine(int(self.prev_point.x()), 0, int(self.prev_point.x()), int(self.pixmap.height())) + p.drawLine(0, int(self.prev_point.y()), int(self.pixmap.width()), int(self.prev_point.y())) + + self.setAutoFillBackground(True) + if self.verified: + pal = self.palette() + pal.setColor(self.backgroundRole(), QColor(184, 239, 38, 128)) + self.setPalette(pal) + else: + pal = self.palette() + pal.setColor(self.backgroundRole(), QColor(232, 232, 232, 255)) + self.setPalette(pal) + + p.end() + + def transform_pos(self, point): + """Convert from widget-logical coordinates to painter-logical coordinates.""" + return point / self.scale - self.offset_to_center() + + def offset_to_center(self): + s = self.scale + area = super(Canvas, self).size() + w, h = self.pixmap.width() * s, self.pixmap.height() * s + aw, ah = area.width(), area.height() + x = (aw - w) / (2 * s) if aw > w else 0 + y = (ah - h) / (2 * s) if ah > h else 0 + return QPointF(x, y) + + def out_of_pixmap(self, p): + w, h = self.pixmap.width(), self.pixmap.height() + return not (0 <= p.x() <= w and 0 <= p.y() <= h) + + def finalise(self): + assert self.current + if self.current.points[0] == self.current.points[-1]: + self.current = None + self.drawingPolygon.emit(False) + self.update() + return + + self.current.close() + self.shapes.append(self.current) + self.current = None + self.set_hiding(False) + self.newShape.emit() + self.update() + + def close_enough(self, p1, p2): + # d = distance(p1 - p2) + # m = (p1-p2).manhattanLength() + # print "d %.2f, m %d, %.2f" % (d, m, d - m) + return distance(p1 - p2) < self.epsilon + + # These two, along with a call to adjustSize are required for the + # scroll area. + def sizeHint(self): + return self.minimumSizeHint() + + def minimumSizeHint(self): + if self.pixmap: + return self.scale * self.pixmap.size() + return super(Canvas, self).minimumSizeHint() + + def wheelEvent(self, ev): + qt_version = 4 if hasattr(ev, "delta") else 5 + if qt_version == 4: + if ev.orientation() == Qt.Vertical: + v_delta = ev.delta() + h_delta = 0 + else: + h_delta = ev.delta() + v_delta = 0 + else: + delta = ev.angleDelta() + h_delta = delta.x() + v_delta = delta.y() + + mods = ev.modifiers() + if int(Qt.ControlModifier) | int(Qt.ShiftModifier) == int(mods) and v_delta: + self.lightRequest.emit(v_delta) + elif Qt.ControlModifier == int(mods) and v_delta: + self.zoomRequest.emit(v_delta) + else: + v_delta and self.scrollRequest.emit(v_delta, Qt.Vertical) + h_delta and self.scrollRequest.emit(h_delta, Qt.Horizontal) + ev.accept() + + def keyPressEvent(self, ev): + key = ev.key() + if key == Qt.Key_Escape and self.current: + print('ESC press') + self.current = None + self.drawingPolygon.emit(False) + self.update() + elif key == Qt.Key_Return and self.can_close_shape(): + self.finalise() + elif key == Qt.Key_Left and self.selected_shape: + self.move_one_pixel('Left') + elif key == Qt.Key_Right and self.selected_shape: + self.move_one_pixel('Right') + elif key == Qt.Key_Up and self.selected_shape: + self.move_one_pixel('Up') + elif key == Qt.Key_Down and self.selected_shape: + self.move_one_pixel('Down') + + def move_one_pixel(self, direction): + # print(self.selectedShape.points) + if direction == 'Left' and not self.move_out_of_bound(QPointF(-1.0, 0)): + # print("move Left one pixel") + self.selected_shape.points[0] += QPointF(-1.0, 0) + self.selected_shape.points[1] += QPointF(-1.0, 0) + self.selected_shape.points[2] += QPointF(-1.0, 0) + self.selected_shape.points[3] += QPointF(-1.0, 0) + elif direction == 'Right' and not self.move_out_of_bound(QPointF(1.0, 0)): + # print("move Right one pixel") + self.selected_shape.points[0] += QPointF(1.0, 0) + self.selected_shape.points[1] += QPointF(1.0, 0) + self.selected_shape.points[2] += QPointF(1.0, 0) + self.selected_shape.points[3] += QPointF(1.0, 0) + elif direction == 'Up' and not self.move_out_of_bound(QPointF(0, -1.0)): + # print("move Up one pixel") + self.selected_shape.points[0] += QPointF(0, -1.0) + self.selected_shape.points[1] += QPointF(0, -1.0) + self.selected_shape.points[2] += QPointF(0, -1.0) + self.selected_shape.points[3] += QPointF(0, -1.0) + elif direction == 'Down' and not self.move_out_of_bound(QPointF(0, 1.0)): + # print("move Down one pixel") + self.selected_shape.points[0] += QPointF(0, 1.0) + self.selected_shape.points[1] += QPointF(0, 1.0) + self.selected_shape.points[2] += QPointF(0, 1.0) + self.selected_shape.points[3] += QPointF(0, 1.0) + self.shapeMoved.emit() + self.repaint() + + def move_out_of_bound(self, step): + points = [p1 + p2 for p1, p2 in zip(self.selected_shape.points, [step] * 4)] + return True in map(self.out_of_pixmap, points) + + def set_last_label(self, text, line_color=None, fill_color=None): + assert text + self.shapes[-1].label = text + if line_color: + self.shapes[-1].line_color = line_color + + if fill_color: + self.shapes[-1].fill_color = fill_color + + return self.shapes[-1] + + def undo_last_line(self): + assert self.shapes + self.current = self.shapes.pop() + self.current.set_open() + self.line.points = [self.current[-1], self.current[0]] + self.drawingPolygon.emit(True) + + def reset_all_lines(self): + assert self.shapes + self.current = self.shapes.pop() + self.current.set_open() + self.line.points = [self.current[-1], self.current[0]] + self.drawingPolygon.emit(True) + self.current = None + self.drawingPolygon.emit(False) + self.update() + + def load_pixmap(self, pixmap): + self.pixmap = pixmap + self.shapes = [] + self.repaint() + + def load_shapes(self, shapes): + self.shapes = list(shapes) + self.current = None + self.repaint() + + def set_shape_visible(self, shape, value): + self.visible[shape] = value + self.repaint() + + def current_cursor(self): + cursor = QApplication.overrideCursor() + if cursor is not None: + cursor = cursor.shape() + return cursor + + def override_cursor(self, cursor): + self._cursor = cursor + if self.current_cursor() is None: + QApplication.setOverrideCursor(cursor) + else: + QApplication.changeOverrideCursor(cursor) + + def restore_cursor(self): + QApplication.restoreOverrideCursor() + + def reset_state(self): + self.de_select_shape() + self.un_highlight() + self.selected_shape_copy = None + + self.restore_cursor() + self.pixmap = None + self.update() + + def set_drawing_shape_to_square(self, status): + self.draw_square = status \ No newline at end of file diff --git a/test/canvas_me.py b/test/canvas_me.py new file mode 100644 index 0000000..3730cf9 --- /dev/null +++ b/test/canvas_me.py @@ -0,0 +1,1201 @@ +from __future__ import annotations + +import collections +import enum +from typing import Literal + +import imgviz +import numpy as np +import osam +from loguru import logger +from PyQt5 import QtCore +from PyQt5 import QtGui +from PyQt5 import QtWidgets +from PyQt5.QtCore import QPoint +from PyQt5.QtCore import QPointF +from PyQt5.QtCore import Qt + +import labelme.utils +from labelme._automation import polygon_from_mask +from labelme.shape import Shape + +from .download import download_ai_model + +# TODO(unknown): +# - [maybe] Find optimal epsilon value. + + +CURSOR_DEFAULT = Qt.ArrowCursor +CURSOR_POINT = Qt.PointingHandCursor +CURSOR_DRAW = Qt.CrossCursor +CURSOR_MOVE = Qt.ClosedHandCursor +CURSOR_GRAB = Qt.OpenHandCursor + +MOVE_SPEED = 5.0 + + +class CanvasMode(enum.Enum): + CREATE = enum.auto() + EDIT = enum.auto() + + +class Canvas(QtWidgets.QWidget): + pixmap: QtGui.QPixmap + _cursor: QtCore.Qt.CursorShape + shapes: list[Shape] + shapesBackups: list[list[Shape]] + movingShape: bool + selectedShapes: list[Shape] + selectedShapesCopy: list[Shape] + current: Shape | None + hShape: Shape | None + prevhShape: Shape | None + hVertex: int | None + prevhVertex: int | None + hEdge: int | None + prevhEdge: int | None + + zoomRequest = QtCore.pyqtSignal(int, QPointF) + scrollRequest = QtCore.pyqtSignal(int, int) + newShape = QtCore.pyqtSignal() + selectionChanged = QtCore.pyqtSignal(list) + shapeMoved = QtCore.pyqtSignal() + drawingPolygon = QtCore.pyqtSignal(bool) + vertexSelected = QtCore.pyqtSignal(bool) + mouseMoved = QtCore.pyqtSignal(QPointF) + statusUpdated = QtCore.pyqtSignal(str) + + mode: CanvasMode = CanvasMode.EDIT + + # polygon, rectangle, line, or point + _createMode = "polygon" + + _fill_drawing = False + + prevPoint: QPointF + prevMovePoint: QPointF + offsets: tuple[QPointF, QPointF] + + _dragging_start_pos: QPointF + _is_dragging: bool + _is_dragging_enabled: bool + + _ai_model_name: str = "sam2:latest" + _ai_model_cache: osam.types.Model | None = None + _ai_image_embedding_cache: collections.deque[tuple[str, osam.types.ImageEmbedding]] + + def __init__(self, *args, **kwargs): + self.epsilon = kwargs.pop("epsilon", 10.0) + self.double_click = kwargs.pop("double_click", "close") + if self.double_click not in [None, "close"]: + raise ValueError( + f"Unexpected value for double_click event: {self.double_click}" + ) + self.num_backups = kwargs.pop("num_backups", 10) + self._crosshair = kwargs.pop( + "crosshair", + { + "polygon": False, + "rectangle": True, + "circle": False, + "line": False, + "point": False, + "linestrip": False, + "ai_polygon": False, + "ai_mask": False, + }, + ) + super().__init__(*args, **kwargs) + + self.resetState() + + # self.line represents: + # - createMode == 'polygon': edge from last point to current + # - createMode == 'rectangle': diagonal line of the rectangle + # - createMode == 'line': the line + # - createMode == 'point': the point + self.line = Shape() + self.prevPoint = QPointF() + self.prevMovePoint = QPointF() + self.offsets = QPointF(), QPointF() + self.scale = 1.0 + self._ai_image_embedding_cache = collections.deque(maxlen=3) + self.visible = {} + self._hideBackround = False + self.hideBackround = False + self.snapping = True + self.hShapeIsSelected = False + self._painter = QtGui.QPainter() + self._dragging_start_pos = QPointF() + self._is_dragging = False + self._is_dragging_enabled = False + # Menus: + # 0: right-click without selection and dragging of shapes + # 1: right-click with selection and dragging of shapes + self.menus = (QtWidgets.QMenu(), QtWidgets.QMenu()) + # Set widget options. + self.setMouseTracking(True) + self.setFocusPolicy(Qt.WheelFocus) + + def fillDrawing(self): + return self._fill_drawing + + def setFillDrawing(self, value): + self._fill_drawing = value + + @property + def createMode(self): + return self._createMode + + @createMode.setter + def createMode(self, value): + if value not in [ + "polygon", + "rectangle", + "circle", + "line", + "point", + "linestrip", + "ai_polygon", + "ai_mask", + ]: + raise ValueError(f"Unsupported createMode: {value}") + self._createMode = value + + def set_ai_model_name(self, model_name: str) -> None: + logger.debug("Setting AI model to {!r}", model_name) + self._ai_model_name = model_name + + def _get_ai_model(self) -> osam.types.Model: + if self._ai_model_cache and self._ai_model_cache.name == self._ai_model_name: + return self._ai_model_cache + + model_type = osam.apis.get_model_type_by_name(self._ai_model_name) + + self._ai_model_cache = model_type() + return self._ai_model_cache + + def _get_ai_image_embedding(self) -> osam.types.ImageEmbedding: + qimage: QtGui.QImage = self.pixmap.toImage() + + def pixmap_hash() -> int: + bits = qimage.constBits() + if bits is None: + return hash(None) + return hash(bits.asstring(qimage.sizeInBytes())) + + cache_key: str = f"{self._ai_model_name}_{pixmap_hash()}" + key: str + image_embedding: osam.types.ImageEmbedding + for key, image_embedding in self._ai_image_embedding_cache: + if key == cache_key: + return image_embedding + + image: np.ndarray = labelme.utils.img_qt_to_arr(img_qt=qimage) + image_embedding = self._get_ai_model().encode_image(image=imgviz.asrgb(image)) + self._ai_image_embedding_cache.append((cache_key, image_embedding)) + logger.debug("cached image embedding for key: {!r}", cache_key) + return image_embedding + + def storeShapes(self): + shapesBackup = [] + for shape in self.shapes: + shapesBackup.append(shape.copy()) + if len(self.shapesBackups) > self.num_backups: + self.shapesBackups = self.shapesBackups[-self.num_backups - 1 :] + self.shapesBackups.append(shapesBackup) + + @property + def isShapeRestorable(self): + # We save the state AFTER each edit (not before) so for an + # edit to be undoable, we expect the CURRENT and the PREVIOUS state + # to be in the undo stack. + if len(self.shapesBackups) < 2: + return False + return True + + def restoreShape(self): + # This does _part_ of the job of restoring shapes. + # The complete process is also done in app.py::undoShapeEdit + # and app.py::loadShapes and our own Canvas::loadShapes function. + if not self.isShapeRestorable: + return + self.shapesBackups.pop() # latest + + # The application will eventually call Canvas.loadShapes which will + # push this right back onto the stack. + shapesBackup = self.shapesBackups.pop() + self.shapes = shapesBackup + self.selectedShapes = [] + for shape in self.shapes: + shape.selected = False + self.update() + + def enterEvent(self, a0: QtCore.QEvent) -> None: + self.overrideCursor(self._cursor) + self._update_status() + + def leaveEvent(self, a0: QtCore.QEvent) -> None: + self.unHighlight() + self.restoreCursor() + self._update_status() + + def focusOutEvent(self, a0: QtGui.QFocusEvent) -> None: + self.restoreCursor() + self._update_status() + + def isVisible(self, shape): # type: ignore[override] + return self.visible.get(shape, True) + + def drawing(self): + return self.mode == CanvasMode.CREATE + + def editing(self): + return self.mode == CanvasMode.EDIT + + def setEditing(self, value=True): + self.mode = CanvasMode.EDIT if value else CanvasMode.CREATE + if self.mode == CanvasMode.EDIT: + # CREATE -> EDIT + self.repaint() # clear crosshair + else: + # EDIT -> CREATE + self.unHighlight() + self.deSelectShape() + + def unHighlight(self): + if self.hShape: + self.hShape.highlightClear() + self.update() + self.prevhShape = self.hShape + self.prevhVertex = self.hVertex + self.prevhEdge = self.hEdge + self.hShape = self.hVertex = self.hEdge = None + + def selectedVertex(self): + return self.hVertex is not None + + def selectedEdge(self): + return self.hEdge is not None + + def _update_status(self, extra_messages: list[str] | None = None) -> None: + messages: list[str] = [] + if self.drawing(): + messages.append(self.tr("Creating %r") % self.createMode) + messages.append(self._get_create_mode_message()) + if self.current: + messages.append(self.tr("ESC to cancel")) + if self.canCloseShape(): + messages.append(self.tr("Enter or Space to finalize")) + else: + assert self.editing() + messages.append(self.tr("Editing shapes")) + if extra_messages: + messages.extend(extra_messages) + self.statusUpdated.emit(" • ".join(messages)) + + def _get_create_mode_message(self) -> str: + assert self.drawing() + isNew: bool = self.current is None + if self.createMode == "ai_polygon": + return self.tr( + "Click points to include or Shift+Click to exclude for ai_polygon" + ) + if self.createMode == "ai_mask": + return self.tr( + "Click points to include or Shift+Click to exclude for ai_mask" + ) + if self.createMode == "line": + if isNew: + return self.tr("Click start point for line") + else: + return self.tr("Click end point for line") + if self.createMode == "linestrip": + if isNew: + return self.tr("Click start point for linestrip") + else: + return self.tr( + "Click next point or finish by Ctrl/Cmd+Click for linestrip" + ) + if self.createMode == "circle": + if isNew: + return self.tr("Click center point for circle") + else: + return self.tr("Click point on circumference for circle") + if self.createMode == "rectangle": + if isNew: + return self.tr("Click first corner for rectangle") + else: + return self.tr("Click opposite corner for rectangle") + return self.tr("Click to add point") + + def mouseMoveEvent(self, a0: QtGui.QMouseEvent) -> None: + """Update line with last point and current coordinates.""" + try: + pos = self.transformPos(a0.localPos()) + except AttributeError: + return + + self.mouseMoved.emit(pos) + + self.prevMovePoint = pos + + is_shift_pressed = a0.modifiers() & Qt.ShiftModifier + + if self._is_dragging: + self.overrideCursor(CURSOR_GRAB) + delta: QPointF = pos - self._dragging_start_pos + self.scrollRequest.emit(int(delta.x()), Qt.Horizontal) + self.scrollRequest.emit(int(delta.y()), Qt.Vertical) + return + + # Polygon drawing. + if self.drawing(): + if self.createMode in ["ai_polygon", "ai_mask"]: + self.line.shape_type = "points" + else: + self.line.shape_type = self.createMode + + self.overrideCursor(CURSOR_DRAW) + if not self.current: + self.repaint() # draw crosshair + self._update_status() + return + + if self.outOfPixmap(pos): + # Don't allow the user to draw outside the pixmap. + # Project the point to the pixmap's edges. + pos = self.intersectionPoint(self.current[-1], pos) + elif ( + self.snapping + and len(self.current) > 1 + and self.createMode == "polygon" + and self.closeEnough(pos, self.current[0]) + ): + # Attract line to starting point and + # colorise to alert the user. + pos = self.current[0] + self.overrideCursor(CURSOR_POINT) + self.current.highlightVertex(0, Shape.NEAR_VERTEX) + if self.createMode in ["polygon", "linestrip"]: + self.line.points = [self.current[-1], pos] + self.line.point_labels = [1, 1] + elif self.createMode in ["ai_polygon", "ai_mask"]: + self.line.points = [self.current.points[-1], pos] + self.line.point_labels = [ + self.current.point_labels[-1], + 0 if is_shift_pressed else 1, + ] + elif self.createMode == "rectangle": + self.line.points = [self.current[0], pos] + self.line.point_labels = [1, 1] + self.line.close() + elif self.createMode == "circle": + self.line.points = [self.current[0], pos] + self.line.point_labels = [1, 1] + self.line.shape_type = "circle" + elif self.createMode == "line": + self.line.points = [self.current[0], pos] + self.line.point_labels = [1, 1] + self.line.close() + elif self.createMode == "point": + self.line.points = [self.current[0]] + self.line.point_labels = [1] + self.line.close() + assert len(self.line.points) == len(self.line.point_labels) + self.repaint() + self.current.highlightClear() + self._update_status() + return + + # Polygon copy moving. + if Qt.RightButton & a0.buttons(): + if self.selectedShapesCopy and self.prevPoint is not None: + self.overrideCursor(CURSOR_MOVE) + self.boundedMoveShapes(self.selectedShapesCopy, pos) + self.repaint() + elif self.selectedShapes: + self.selectedShapesCopy = [s.copy() for s in self.selectedShapes] + self.repaint() + self._update_status() + return + + # Polygon/Vertex moving. + if Qt.LeftButton & a0.buttons(): + if self.selectedVertex(): + self.boundedMoveVertex(pos) + self.repaint() + self.movingShape = True + elif self.selectedShapes and self.prevPoint is not None: + self.overrideCursor(CURSOR_MOVE) + self.boundedMoveShapes(self.selectedShapes, pos) + self.repaint() + self.movingShape = True + return + + # Just hovering over the canvas, 2 possibilities: + # - Highlight shapes + # - Highlight vertex + # Update shape/vertex fill and tooltip value accordingly. + status_messages: list[str] = [] + for shape in ([self.hShape] if self.hShape else []) + [ + s for s in reversed(self.shapes) if self.isVisible(s) and s != self.hShape + ]: + # Look for a nearby vertex to highlight. If that fails, + # check if we happen to be inside a shape. + index = shape.nearestVertex(pos, self.epsilon) + index_edge = shape.nearestEdge(pos, self.epsilon) + if index is not None: + if self.selectedVertex() and self.hShape: + self.hShape.highlightClear() + self.prevhVertex = self.hVertex = index + self.prevhShape = self.hShape = shape + self.prevhEdge = self.hEdge + self.hEdge = None + shape.highlightVertex(index, shape.MOVE_VERTEX) + self.overrideCursor(CURSOR_POINT) + status_messages.append(self.tr("Click & drag to move point")) + if shape.canRemovePoint(): + status_messages.append( + self.tr("ALT + SHIFT + Click to delete point") + ) + self.update() + break + elif index_edge is not None and shape.canAddPoint(): + if self.selectedVertex() and self.hShape: + self.hShape.highlightClear() + self.prevhVertex = self.hVertex + self.hVertex = None + self.prevhShape = self.hShape = shape + self.prevhEdge = self.hEdge = index_edge + self.overrideCursor(CURSOR_POINT) + status_messages.append(self.tr("ALT + Click to create point on shape")) + self.update() + break + elif shape.containsPoint(pos): + if self.selectedVertex() and self.hShape: + self.hShape.highlightClear() + self.prevhVertex = self.hVertex + self.hVertex = None + self.prevhShape = self.hShape = shape + self.prevhEdge = self.hEdge + self.hEdge = None + status_messages.extend( + [ + self.tr("Click & drag to move shape"), + self.tr("Right-click & drag to copy shape"), + ] + ) + self.overrideCursor(CURSOR_GRAB) + self.update() + break + else: # Nothing found, clear highlights, reset state. + self.restoreCursor() + self.unHighlight() + self.vertexSelected.emit(self.hVertex is not None) + self._update_status(extra_messages=status_messages) + + def addPointToEdge(self): + shape = self.prevhShape + index = self.prevhEdge + point = self.prevMovePoint + if shape is None or index is None or point is None: + return + shape.insertPoint(index, point) + shape.highlightVertex(index, shape.MOVE_VERTEX) + self.hShape = shape + self.hVertex = index + self.hEdge = None + self.movingShape = True + + def removeSelectedPoint(self): + shape = self.prevhShape + index = self.prevhVertex + if shape is None or index is None: + return + shape.removePoint(index) + shape.highlightClear() + self.hShape = shape + self.prevhVertex = None + self.movingShape = True # Save changes + + def mousePressEvent(self, a0: QtGui.QMouseEvent) -> None: + pos: QPointF = self.transformPos(a0.localPos()) + + is_shift_pressed = a0.modifiers() & Qt.ShiftModifier + + if a0.button() == Qt.LeftButton: + if self.drawing(): + if self.current: + # Add point to existing shape. + if self.createMode == "polygon": + self.current.addPoint(self.line[1]) + self.line[0] = self.current[-1] + if self.current.isClosed(): + self.finalise() + elif self.createMode in ["rectangle", "circle", "line"]: + assert len(self.current.points) == 1 + self.current.points = self.line.points + self.finalise() + elif self.createMode == "linestrip": + self.current.addPoint(self.line[1]) + self.line[0] = self.current[-1] + if int(a0.modifiers()) == Qt.ControlModifier: + self.finalise() + elif self.createMode in ["ai_polygon", "ai_mask"]: + self.current.addPoint( + self.line.points[1], + label=self.line.point_labels[1], + ) + self.line.points[0] = self.current.points[-1] + self.line.point_labels[0] = self.current.point_labels[-1] + if a0.modifiers() & Qt.ControlModifier: + self.finalise() + elif not self.outOfPixmap(pos): + if self.createMode in ["ai_polygon", "ai_mask"]: + if not download_ai_model( + model_name=self._ai_model_name, parent=self + ): + return + + # Create new shape. + self.current = Shape( + shape_type="points" + if self.createMode in ["ai_polygon", "ai_mask"] + else self.createMode + ) + self.current.addPoint(pos, label=0 if is_shift_pressed else 1) + if self.createMode == "point": + self.finalise() + elif ( + self.createMode in ["ai_polygon", "ai_mask"] + and a0.modifiers() & Qt.ControlModifier + ): + self.finalise() + else: + if self.createMode == "circle": + self.current.shape_type = "circle" + self.line.points = [pos, pos] + if ( + self.createMode in ["ai_polygon", "ai_mask"] + and is_shift_pressed + ): + self.line.point_labels = [0, 0] + else: + self.line.point_labels = [1, 1] + self.setHiding() + self.drawingPolygon.emit(True) + self.update() + elif self.editing(): + if self.selectedEdge() and a0.modifiers() == Qt.AltModifier: + self.addPointToEdge() + elif self.selectedVertex() and a0.modifiers() == ( + Qt.AltModifier | Qt.ShiftModifier + ): + self.removeSelectedPoint() + + group_mode = int(a0.modifiers()) == Qt.ControlModifier + self.selectShapePoint(pos, multiple_selection_mode=group_mode) + self.prevPoint = pos + self.repaint() + elif a0.button() == Qt.RightButton and self.editing(): + group_mode = int(a0.modifiers()) == Qt.ControlModifier + if not self.selectedShapes or ( + self.hShape is not None and self.hShape not in self.selectedShapes + ): + self.selectShapePoint(pos, multiple_selection_mode=group_mode) + self.repaint() + self.prevPoint = pos + elif a0.button() == Qt.MiddleButton and self._is_dragging_enabled: + self.overrideCursor(CURSOR_GRAB) + self._dragging_start_pos = pos + self._is_dragging = True + self._update_status() + + def mouseReleaseEvent(self, a0: QtGui.QMouseEvent) -> None: + if a0.button() == Qt.RightButton: + menu = self.menus[len(self.selectedShapesCopy) > 0] + self.restoreCursor() + if not menu.exec_(self.mapToGlobal(a0.pos())) and self.selectedShapesCopy: # type: ignore + # Cancel the move by deleting the shadow copy. + self.selectedShapesCopy = [] + self.repaint() + elif a0.button() == Qt.LeftButton: + if self.editing(): + if ( + self.hShape is not None + and self.hShapeIsSelected + and not self.movingShape + ): + self.selectionChanged.emit( + [x for x in self.selectedShapes if x != self.hShape] + ) + elif a0.button() == Qt.MiddleButton: + self._is_dragging = False + self.restoreCursor() + + if self.movingShape and self.hShape: + index = self.shapes.index(self.hShape) + if self.shapesBackups[-1][index].points != self.shapes[index].points: + self.storeShapes() + self.shapeMoved.emit() + + self.movingShape = False + self._update_status() + + def endMove(self, copy): + assert self.selectedShapes and self.selectedShapesCopy + assert len(self.selectedShapesCopy) == len(self.selectedShapes) + if copy: + for i, shape in enumerate(self.selectedShapesCopy): + self.shapes.append(shape) + self.selectedShapes[i].selected = False + self.selectedShapes[i] = shape + else: + for i, shape in enumerate(self.selectedShapesCopy): + self.selectedShapes[i].points = shape.points + self.selectedShapesCopy = [] + self.repaint() + self.storeShapes() + return True + + def hideBackroundShapes(self, value): + self.hideBackround = value + if self.selectedShapes: + # Only hide other shapes if there is a current selection. + # Otherwise the user will not be able to select a shape. + self.setHiding(True) + self.update() + + def setHiding(self, enable=True): + self._hideBackround = self.hideBackround if enable else False + + def canCloseShape(self) -> bool: + if not self.drawing(): + return False + if not self.current: + return False + if self.createMode in ["ai_polygon", "ai_mask"]: + return True + if self.createMode == "linestrip": + return len(self.current) >= 2 + return len(self.current) >= 3 + + def mouseDoubleClickEvent(self, a0: QtGui.QMouseEvent) -> None: + if self.double_click != "close": + return + + if self.canCloseShape(): + self.finalise() + + def selectShapes(self, shapes): + self.setHiding() + self.selectionChanged.emit(shapes) + self.update() + + def selectShapePoint(self, point, multiple_selection_mode): + """Select the first shape created which contains this point.""" + if self.hVertex is not None: + assert self.hShape is not None + self.hShape.highlightVertex(i=self.hVertex, action=self.hShape.MOVE_VERTEX) + else: + shape: Shape + for shape in reversed(self.shapes): + if self.isVisible(shape) and shape.containsPoint(point): + self.setHiding() + if shape not in self.selectedShapes: + if multiple_selection_mode: + self.selectionChanged.emit(self.selectedShapes + [shape]) + else: + self.selectionChanged.emit([shape]) + self.hShapeIsSelected = False + else: + self.hShapeIsSelected = True + self.calculateOffsets(point) + return + self.deSelectShape() + + def calculateOffsets(self, point: QPointF) -> None: + left = self.pixmap.width() - 1 + right = 0 + top = self.pixmap.height() - 1 + bottom = 0 + for s in self.selectedShapes: + rect = s.boundingRect() + if rect.left() < left: + left = rect.left() + if rect.right() > right: + right = rect.right() + if rect.top() < top: + top = rect.top() + if rect.bottom() > bottom: + bottom = rect.bottom() + + x1 = left - point.x() + y1 = top - point.y() + x2 = right - point.x() + y2 = bottom - point.y() + self.offsets = QPointF(x1, y1), QPointF(x2, y2) + + def boundedMoveVertex(self, pos: QPointF) -> None: + if self.hVertex is None: + logger.warning("hVertex is None, so cannot move vertex: pos=%r", pos) + return + assert self.hShape is not None + + point: QPointF = self.hShape[self.hVertex] + if self.outOfPixmap(pos): + pos = self.intersectionPoint(point, pos) + self.hShape.moveVertexBy(i=self.hVertex, offset=pos - point) + + def boundedMoveShapes(self, shapes, pos): + if self.outOfPixmap(pos): + return False # No need to move + o1 = pos + self.offsets[0] + if self.outOfPixmap(o1): + pos -= QPointF(min(0, o1.x()), min(0, o1.y())) + o2 = pos + self.offsets[1] + if self.outOfPixmap(o2): + pos += QPointF( + min(0, self.pixmap.width() - o2.x()), + min(0, self.pixmap.height() - o2.y()), + ) + # XXX: The next line tracks the new position of the cursor + # relative to the shape, but also results in making it + # a bit "shaky" when nearing the border and allows it to + # go outside of the shape's area for some reason. + # self.calculateOffsets(self.selectedShapes, pos) + dp = pos - self.prevPoint + if dp: + for shape in shapes: + shape.moveBy(dp) + self.prevPoint = pos + return True + return False + + def deSelectShape(self): + if self.selectedShapes: + self.setHiding(False) + self.selectionChanged.emit([]) + self.hShapeIsSelected = False + self.update() + + def deleteSelected(self): + deleted_shapes = [] + if self.selectedShapes: + for shape in self.selectedShapes: + self.shapes.remove(shape) + deleted_shapes.append(shape) + self.storeShapes() + self.selectedShapes = [] + self.update() + return deleted_shapes + + def deleteShape(self, shape): + if shape in self.selectedShapes: + self.selectedShapes.remove(shape) + if shape in self.shapes: + self.shapes.remove(shape) + self.storeShapes() + self.update() + + def paintEvent(self, a0: QtGui.QPaintEvent) -> None: + if not self.pixmap: + return super().paintEvent(a0) + + p = self._painter + p.begin(self) + p.setRenderHint(QtGui.QPainter.Antialiasing) + p.setRenderHint(QtGui.QPainter.HighQualityAntialiasing) + p.setRenderHint(QtGui.QPainter.SmoothPixmapTransform) + + p.scale(self.scale, self.scale) + p.translate(self.offsetToCenter()) + + p.drawPixmap(0, 0, self.pixmap) + + p.scale(1 / self.scale, 1 / self.scale) + + # draw crosshair + if ( + self._crosshair[self._createMode] + and self.drawing() + and self.prevMovePoint is not None + and not self.outOfPixmap(self.prevMovePoint) + ): + p.setPen(QtGui.QColor(0, 0, 0)) + p.drawLine( + 0, + int(self.prevMovePoint.y() * self.scale), + self.width() - 1, + int(self.prevMovePoint.y() * self.scale), + ) + p.drawLine( + int(self.prevMovePoint.x() * self.scale), + 0, + int(self.prevMovePoint.x() * self.scale), + self.height() - 1, + ) + + Shape.scale = self.scale + for shape in self.shapes: + if (shape.selected or not self._hideBackround) and self.isVisible(shape): + shape.fill = shape.selected or shape == self.hShape + shape.paint(p) + if self.current: + self.current.paint(p) + assert len(self.line.points) == len(self.line.point_labels) + self.line.paint(p) + if self.selectedShapesCopy: + for s in self.selectedShapesCopy: + s.paint(p) + + if not self.current or self.createMode not in [ + "polygon", + "ai_polygon", + "ai_mask", + ]: + p.end() + return + + drawing_shape: Shape = self.current.copy() + if self.createMode == "polygon": + if self.fillDrawing() and len(self.current.points) >= 2: + assert drawing_shape.fill_color is not None + if drawing_shape.fill_color.getRgb()[3] == 0: + logger.warning( + "fill_drawing=true, but fill_color is transparent," + " so forcing to be opaque." + ) + drawing_shape.fill_color.setAlpha(64) + drawing_shape.addPoint(self.line[1]) + elif self.createMode in ["ai_polygon", "ai_mask"]: + drawing_shape.addPoint( + point=self.line.points[1], + label=self.line.point_labels[1], + ) + _update_shape_with_sam( + sam=self._get_ai_model(), + image_embedding=self._get_ai_image_embedding(), + shape=drawing_shape, + createMode=self.createMode, + ) + drawing_shape.fill = self.fillDrawing() + drawing_shape.selected = self.fillDrawing() + drawing_shape.paint(p) + p.end() + + def transformPos(self, point: QPointF) -> QPointF: + """Convert from widget-logical coordinates to painter-logical ones.""" + return point / self.scale - self.offsetToCenter() + + def enableDragging(self, enabled: bool): + self._is_dragging_enabled = enabled + + def offsetToCenter(self) -> QPointF: + s = self.scale + area = super().size() + w, h = self.pixmap.width() * s, self.pixmap.height() * s + aw, ah = area.width(), area.height() + x = (aw - w) / (2 * s) if aw > w else 0 + y = (ah - h) / (2 * s) if ah > h else 0 + return QPointF(x, y) + + def outOfPixmap(self, p: QPointF) -> bool: + w, h = self.pixmap.width(), self.pixmap.height() + return not (0 <= p.x() <= w - 1 and 0 <= p.y() <= h - 1) + + def finalise(self): + assert self.current + if self.createMode in ["ai_polygon", "ai_mask"]: + _update_shape_with_sam( + sam=self._get_ai_model(), + image_embedding=self._get_ai_image_embedding(), + shape=self.current, + createMode=self.createMode, + ) + self.current.close() + + self.shapes.append(self.current) + self.storeShapes() + self.current = None + self.setHiding(False) + self.newShape.emit() + self.update() + + def closeEnough(self, p1, p2): + # d = distance(p1 - p2) + # m = (p1-p2).manhattanLength() + # print "d %.2f, m %d, %.2f" % (d, m, d - m) + # divide by scale to allow more precision when zoomed in + return labelme.utils.distance(p1 - p2) < (self.epsilon / self.scale) + + def intersectionPoint(self, p1: QPointF, p2: QPointF) -> QPointF: + # Cycle through each image edge in clockwise fashion, + # and find the one intersecting the current line segment. + # http://paulbourke.net/geometry/lineline2d/ + size = self.pixmap.size() + points = [ + (0, 0), + (size.width() - 1, 0), + (size.width() - 1, size.height() - 1), + (0, size.height() - 1), + ] + # x1, y1 should be in the pixmap, x2, y2 should be out of the pixmap + x1 = min(max(p1.x(), 0), size.width() - 1) + y1 = min(max(p1.y(), 0), size.height() - 1) + x2, y2 = p2.x(), p2.y() + d, i, (x, y) = min(self.intersectingEdges((x1, y1), (x2, y2), points)) + x3, y3 = points[i] + x4, y4 = points[(i + 1) % 4] + if (x, y) == (x1, y1): + # Handle cases where previous point is on one of the edges. + if x3 == x4: + return QPointF(x3, min(max(0, y2), max(y3, y4))) + else: # y3 == y4 + return QPointF(min(max(0, x2), max(x3, x4)), y3) + return QPointF(x, y) + + def intersectingEdges(self, point1, point2, points): + """Find intersecting edges. + + For each edge formed by `points', yield the intersection + with the line segment `(x1,y1) - (x2,y2)`, if it exists. + Also return the distance of `(x2,y2)' to the middle of the + edge along with its index, so that the one closest can be chosen. + """ + (x1, y1) = point1 + (x2, y2) = point2 + for i in range(4): + x3, y3 = points[i] + x4, y4 = points[(i + 1) % 4] + denom = (y4 - y3) * (x2 - x1) - (x4 - x3) * (y2 - y1) + nua = (x4 - x3) * (y1 - y3) - (y4 - y3) * (x1 - x3) + nub = (x2 - x1) * (y1 - y3) - (y2 - y1) * (x1 - x3) + if denom == 0: + # This covers two cases: + # nua == nub == 0: Coincident + # otherwise: Parallel + continue + ua, ub = nua / denom, nub / denom + if 0 <= ua <= 1 and 0 <= ub <= 1: + x = x1 + ua * (x2 - x1) + y = y1 + ua * (y2 - y1) + m = QPointF((x3 + x4) / 2, (y3 + y4) / 2) + d = labelme.utils.distance(m - QPointF(x2, y2)) + yield d, i, (x, y) + + # These two, along with a call to adjustSize are required for the + # scroll area. + def sizeHint(self): + return self.minimumSizeHint() + + def minimumSizeHint(self): + if not self.pixmap: + return super().minimumSizeHint() + + min_size = self.scale * self.pixmap.size() + if self._is_dragging_enabled: + # When drag buffer should be enabled, add a bit of buffer around the image + # This lets dragging the image around have a bit of give on the edges + min_size = 1.167 * min_size + return min_size + + def wheelEvent(self, a0: QtGui.QWheelEvent) -> None: + mods: Qt.KeyboardModifiers = a0.modifiers() + delta: QPoint = a0.angleDelta() + if Qt.ControlModifier == int(mods): + # with Ctrl/Command key + # zoom + self.zoomRequest.emit(delta.y(), a0.posF()) + else: + # scroll + self.scrollRequest.emit(delta.x(), Qt.Horizontal) + self.scrollRequest.emit(delta.y(), Qt.Vertical) + a0.accept() + + def moveByKeyboard(self, offset): + if self.selectedShapes: + self.boundedMoveShapes(self.selectedShapes, self.prevPoint + offset) + self.repaint() + self.movingShape = True + + def keyPressEvent(self, a0: QtGui.QKeyEvent) -> None: + modifiers = a0.modifiers() + key = a0.key() + if self.drawing(): + if key == Qt.Key_Escape and self.current: + self.current = None + self.drawingPolygon.emit(False) + self.update() + elif ( + key in (QtCore.Qt.Key_Return, QtCore.Qt.Key_Space) + and self.canCloseShape() + ): + self.finalise() + elif modifiers == Qt.AltModifier: + self.snapping = False + elif self.editing(): + if key == Qt.Key_Up: + self.moveByKeyboard(QPointF(0.0, -MOVE_SPEED)) + elif key == Qt.Key_Down: + self.moveByKeyboard(QPointF(0.0, MOVE_SPEED)) + elif key == Qt.Key_Left: + self.moveByKeyboard(QPointF(-MOVE_SPEED, 0.0)) + elif key == Qt.Key_Right: + self.moveByKeyboard(QPointF(MOVE_SPEED, 0.0)) + self._update_status() + + def keyReleaseEvent(self, a0: QtGui.QKeyEvent) -> None: + modifiers = a0.modifiers() + if self.drawing(): + if int(modifiers) == 0: + self.snapping = True + elif self.editing(): + if self.movingShape and self.selectedShapes: + index = self.shapes.index(self.selectedShapes[0]) + if self.shapesBackups[-1][index].points != self.shapes[index].points: + self.storeShapes() + self.shapeMoved.emit() + + self.movingShape = False + + def setLastLabel(self, text, flags): + assert text + self.shapes[-1].label = text + self.shapes[-1].flags = flags + self.shapesBackups.pop() + self.storeShapes() + return self.shapes[-1] + + def undoLastLine(self): + assert self.shapes + self.current = self.shapes.pop() + self.current.setOpen() + self.current.restoreShapeRaw() + if self.createMode in ["polygon", "linestrip"]: + self.line.points = [self.current[-1], self.current[0]] + elif self.createMode in ["rectangle", "line", "circle"]: + self.current.points = self.current.points[0:1] + elif self.createMode == "point": + self.current = None + self.drawingPolygon.emit(True) + + def undoLastPoint(self): + if not self.current or self.current.isClosed(): + return + self.current.popPoint() + if len(self.current) > 0: + self.line[0] = self.current[-1] + else: + self.current = None + self.drawingPolygon.emit(False) + self.update() + + def loadPixmap(self, pixmap, clear_shapes=True): + self.pixmap = pixmap + if clear_shapes: + self.shapes = [] + self.update() + + def loadShapes(self, shapes, replace=True): + if replace: + self.shapes = list(shapes) + else: + self.shapes.extend(shapes) + self.storeShapes() + self.current = None + self.hShape = None + self.hVertex = None + self.hEdge = None + self.update() + + def setShapeVisible(self, shape, value): + self.visible[shape] = value + self.update() + + def overrideCursor(self, cursor): + if cursor == self._cursor: + return + self.restoreCursor() + self._cursor = cursor + QtWidgets.QApplication.setOverrideCursor(cursor) + + def restoreCursor(self): + self._cursor = CURSOR_DEFAULT + QtWidgets.QApplication.restoreOverrideCursor() + + def resetState(self): + self.restoreCursor() + self.pixmap = QtGui.QPixmap() + self.shapes = [] + self.shapesBackups = [] + self.movingShape = False + self.selectedShapes = [] + self.selectedShapesCopy = [] + self.current = None + self.hShape = None + self.prevhShape = None + self.hVertex = None + self.prevhVertex = None + self.hEdge = None + self.prevhEdge = None + self.update() + + +def _update_shape_with_sam( + sam: osam.types.Model, + image_embedding: osam.types.ImageEmbedding, + shape: Shape, + createMode: Literal["ai_polygon", "ai_mask"], +) -> None: + if createMode not in ["ai_polygon", "ai_mask"]: + raise ValueError( + f"createMode must be 'ai_polygon' or 'ai_mask', not {createMode}" + ) + + response: osam.types.GenerateResponse = sam.generate( + request=osam.types.GenerateRequest( + model=sam.name, + image_embedding=image_embedding, + prompt=osam.types.Prompt( + points=np.array([[point.x(), point.y()] for point in shape.points]), + point_labels=np.array(shape.point_labels), + ), + ) + ) + if not response.annotations: + logger.warning("No annotations returned by model {!r}", sam) + return + + if createMode == "ai_mask": + y1: int + x1: int + y2: int + x2: int + if response.annotations[0].bounding_box is None: + y1, x1, y2, x2 = imgviz.instances.mask_to_bbox( + [response.annotations[0].mask] + )[0].astype(int) + else: + y1 = response.annotations[0].bounding_box.ymin + x1 = response.annotations[0].bounding_box.xmin + y2 = response.annotations[0].bounding_box.ymax + x2 = response.annotations[0].bounding_box.xmax + shape.setShapeRefined( + shape_type="mask", + points=[QPointF(x1, y1), QPointF(x2, y2)], + point_labels=[1, 1], + mask=response.annotations[0].mask[y1 : y2 + 1, x1 : x2 + 1], + ) + elif createMode == "ai_polygon": + points = polygon_from_mask.compute_polygon_from_mask( + mask=response.annotations[0].mask + ) + if len(points) < 2: + return + shape.setShapeRefined( + shape_type="polygon", + points=[QPointF(point[0], point[1]) for point in points], + point_labels=[1] * len(points), + ) \ No newline at end of file diff --git a/test/nlp_test/nlp.py b/test/nlp_test/nlp.py new file mode 100644 index 0000000..e69de29 diff --git a/test/weather.py b/test/weather.py new file mode 100644 index 0000000..02ee9ec --- /dev/null +++ b/test/weather.py @@ -0,0 +1,144 @@ +from selectolax.parser import HTMLParser +from curl_cffi import requests +import os + +def parse_weather_data(html_content): + tree = HTMLParser(html_content) + + print(f"{'날짜':<12} {'시간':<6} {'날씨':<8} {'기온':<6} {'체감':<6} {'강수확률':<8} {'바람':<14} {'습도':<6}") + print("-" * 80) + + # [수정 1] 타겟 슬라이더 변경 + # dfs-daily-slide(위쪽 요약) 대신 slide-wrap 안의 slide(아래쪽 상세)를 찾아야 함 + # 구조:
->
->
+ slides = tree.css("div.slide-wrap div.slide") + + if not slides: + print(">> 데이터를 포함한 슬라이드를 찾지 못했습니다. HTML 구조가 변경되었을 수 있습니다.") + return + + for slide in slides: + # 날짜는 slide 바로 아래 div.daily 태그의 data-date 속성에 있습니다. + daily_node = slide.css_first("div.daily") + if not daily_node: + continue + + date_str = daily_node.attributes.get('data-date', '').strip() + + # [수정 2] 상세 데이터 리스트 찾기 + #
    형태를 모두 찾습니다. + ul_items = daily_node.css("ul") # daily_node 내부에서 검색 + + for ul in ul_items: + # class에 'item'이 없는 ul(헤더 등)은 건너뜀 + if "item" not in ul.attributes.get("class", ""): + continue + + # 데이터를 저장할 딕셔너리 + w_data = { + "time": "-", "weather": "-", "temp": "-", + "feels_like": "-", "prob": "-", "wind": "-", "humid": "-" + } + + # 속성에서 시간 가져오기 (가장 정확함) + if 'data-time' in ul.attributes: + w_data['time'] = ul.attributes['data-time'] + + # li 태그 순회 (숨겨진 라벨 기반 매핑) + lis = ul.css("li") + for li in lis: + label_node = li.css_first("span.hid") + if not label_node: + continue + + label_text = label_node.text(strip=True) + + # 1. 시각 (속성값이 없을 경우 대비) + if "시각" in label_text and w_data['time'] == "-": + val = li.css_first("span:not(.hid)") + if val: w_data['time'] = val.text(strip=True) + + # 2. 날씨 + elif "날씨" in label_text: + wic = li.css_first(".wic") + if wic: + w_data['weather'] = wic.attributes.get("title") or wic.text(strip=True) + + # 3. 기온 (체감온도 괄호 제거) + elif "기온" in label_text: + feel_node = li.css_first(".feel") + if feel_node: + # deep=False로 자식 노드 제외하고 순수 텍스트만 추출 + w_data['temp'] = feel_node.text(deep=False, strip=True) + + # 4. 체감온도 + elif "체감온도" in label_text and "기온" not in label_text: + spans = li.css("span") + if len(spans) > 1: + w_data['feels_like'] = spans[-1].text(strip=True) + + # 5. 강수확률 + elif "강수확률" in label_text: + spans = li.css("span") + if len(spans) > 1: + prob = spans[-1].text(strip=True) + w_data['prob'] = prob if prob else "-" + + # 6. 바람 (텍스트 정제) + elif "바람" in label_text: + wd_node = li.css_first(".wdic") + # 약/강 텍스트(.qwsd) 제외하고 숫자(.wspd)만 + ws_node = li.css_first(".wspd:not(.qwsd)") + + wd = wd_node.text(strip=True) if wd_node else "" + ws = ws_node.text(strip=True) if ws_node else "" + w_data['wind'] = f"{wd} {ws}".strip() + + # 7. 습도 + elif "습도" in label_text: + spans = li.css("span") + if len(spans) > 1: + w_data['humid'] = spans[-1].text(strip=True) + + # 데이터 출력 + if w_data['time'] != "-": + print(f"{date_str:<12} {w_data['time']:<6} {w_data['weather']:<8} " + f"{w_data['temp']:<6} {w_data['feels_like']:<6} " + f"{w_data['prob']:<8} {w_data['wind']:<14} {w_data['humid']:<6}") + +# ========================================== +# 실행 부 +# ========================================== +if __name__ == "__main__": + filename = "weather_debug.html" + + # 1. 파일이 있으면 파일로 테스트 + if os.path.exists(filename): + print(f"📂 파일 '{filename}'을 로드합니다...") + with open(filename, "r", encoding="utf-8") as f: + parse_weather_data(f.read()) + + # 2. 파일이 없으면 네트워크 요청 (실제 사용 시) + else: + print("🌐 네트워크 요청을 시작합니다...") + url = "https://www.weather.go.kr/w/wnuri-fct2021/main/digital-forecast.do" + params = { + "code": "2638057200", + "unit": "m/s", + "hr1": "Y", + "lat": "35.0952286648109", + "lon": "128.960618556493" + } + headers = { + "User-Agent": "Mozilla/5.0", + "Referer": "https://www.weather.go.kr/w/index.do", + "X-Requested-With": "XMLHttpRequest" + } + try: + res = requests.get(url, params=params, headers=headers, impersonate="chrome120") + if res.status_code == 200: + parse_weather_data(res.text) + else: + print("통신 오류") + except Exception as e: + print(e) \ No newline at end of file diff --git a/test/weather_debug.html b/test/weather_debug.html new file mode 100644 index 0000000..d762f48 --- /dev/null +++ b/test/weather_debug.html @@ -0,0 +1,3923 @@ + + + + + +
    +

    일별 예보

    +
    +
      +
    • 날짜
    • +
    • 시각
    • +
    • 날씨
    • +
    • 기온
    • +
    • 강수확률
    • +
    +
    +
    + + + + + + +
    +
    +

    4일(일)오늘

    + +
    + + +
    오전
    + + +
    -
    + +
    +
    오후
    + + +
    -
    + +
    +
    +
    최저 : -1℃
    +
    최고 : 9℃
    +
    +
    오전 강수확률-
    +
    오후 강수확률-
    + + + +
    +
    +
    + + + + + + + +
    +
    +

    5일(월)내일

    + +
    + + +
    오전
    + +
    구름많음
    + + +
    +
    오후
    + +
    맑음
    + + +
    +
    +
    최저 : 1℃
    +
    최고 : 8℃
    +
    +
    오전 강수확률20%
    +
    오후 강수확률10%
    + + + +
    +
    +
    + + + + + + + +
    +
    +

    6일(화)모레

    + +
    + + +
    오전
    + +
    맑음
    + + +
    +
    오후
    + +
    구름많음
    + + +
    +
    +
    최저 : -2℃
    +
    최고 : 8℃
    +
    +
    오전 강수확률0%
    +
    오후 강수확률20%
    + + + +
    +
    +
    + + + + + + + +
    +
    + +

    7일(수)

    +
    + + +
    오전
    + +
    맑음
    + + +
    +
    오후
    + +
    맑음
    + + +
    +
    +
    최저 : 0℃
    +
    최고 : 9℃
    +
    +
    오전 강수확률10%
    +
    오후 강수확률0%
    + + + +
    +
    +
    + + + + + + + +
    +
    + +

    8일(목)

    +
    + + +
    오전
    + +
    맑음
    + + +
    +
    오후
    + +
    맑음
    + + +
    +
    +
    최저 : -3℃
    +
    최고 : 5℃
    +
    +
    오전 강수확률0%
    +
    오후 강수확률0%
    + + + +
    +
    +
    + + + + + + + +
    +
    + +

    9일(금)

    +
    + + +
    오전
    + +
    맑음
    + + +
    +
    오후
    + +
    구름많음
    + + +
    +
    +
    최저 : -2℃
    +
    최고 : 9℃
    +
    +
    오전 강수확률10%
    +
    오후 강수확률30%
    + + + +
    +
    +
    + + + + + + + +
    +
    + +

    10일(토)

    +
    + + +
    오전
    + +
    구름많음
    + + +
    +
    오후
    + +
    맑음
    + + +
    +
    +
    최저 : 2℃
    +
    최고 : 9℃
    +
    +
    오전 강수확률30%
    +
    오후 강수확률20%
    + + + +
    +
    +
    + + + + + + + +
    +
    + +

    11일(일)

    +
    + + +
    오전
    + +
    맑음
    + + +
    +
    오후
    + +
    맑음
    + + +
    +
    +
    최저 : -2℃
    +
    최고 : 6℃
    +
    +
    오전 강수확률20%
    +
    오후 강수확률20%
    + + + +
    +
    +
    + + + + + + + +
    +
    + +

    12일(월)

    +
    + + + +
    종일
    맑음
    +
    +
    최저 : 0℃
    +
    최고 : 7℃
    +
    +
    강수확률10%
    + + +
    +
    +
    + + + + + + + +
    +
    + +

    13일(화)

    +
    + + + +
    종일
    맑음
    +
    +
    최저 : -1℃
    +
    최고 : 7℃
    +
    +
    강수확률10%
    + + +
    +
    +
    + + + + + + + +
    +
    + +

    14일(수)

    +
    + + + +
    종일
    맑음
    +
    +
    최저 : 0℃
    +
    최고 : 9℃
    +
    +
    강수확률10%
    + + +
    +
    +
    + + +
    +
    +
    +
    +
    +
    +

    시간별 예보

    + +
    +
    + +
    + 닫기 +

    시계열 표현

    + +
    +
    + +
    +

    + 예보요소별 시간안내(1시간 간격) * 시각: 01시 기준 예시 -날씨: 이전 1시간(00시~01시)의 날씨-기온: 01시 정시 기온-체감온도: 01시 정시 체감온도 -강수량: 이전 1시간(00시~01시) 강수량 * '~1'은 1mm미만(예상강수량<1)을 나타냄 -강수강도: 이전 1시간(00시~01시) 강수량 또는 신적설을 텍스트 기반 체감도 높은 정보로 표출 -강수확률: 이전 1시간(00시~01시) 강수확률 -바람: 01시 정시 바람(풍향 및 강도, 풍속) -습도: 01시 정시 습도

    + +
      +
    • 시각
    • +
    • 날씨
    • +
    • 기온
    • +
    • 강수량(mm)
    • +
    • 강수강도
    • +
    • 적설(cm)
    • +
    • 강수확률
    • +
    • 풍향
      풍속(m/s)
    • +
    • 습도
    • +
    +
      +
    • 날짜
    • +
    • 날씨
    • +
    • 기온
    • +
    • 강수확률
    • +
    +
    +
    + + +
    +

    오늘

    +
    +
    + 4일(일) + +
      +
    • 시각
    • +
    • 날씨
    • +
    • 기온
      (체감)
    • +
    • 강수량
    • + +
    • 강수강도
    • +
    • 강수
      확률
    • +
    • 바람
    • +
    • 습도
    • +
    • 한파
      영향
    • +
    +
    +
    + + + + + +
      +
    • 시각: 23시
    • +
    • 날씨: 흐림
    • +
    • 기온(체감온도) 4℃(1℃)
    • +
    • 체감온도: 1℃
    • +
    • 강수량: -
    • +
    • + + + + + + - + + +
    • +
    • 강수확률:  
    • + + +
    • + + + 바람: 북서풍 + + + + + 3m/s +
    • + + + +
    • 습도: 60%
    • +
    • 한파영향:
    • +
    + + + + + + +
      +
    • 시각: 0시
    • +
    • 날씨: 구름 많음
    • +
    • 기온(체감온도) 4℃(1℃)
    • +
    • 체감온도: 1℃
    • +
    • 강수량: -
    • +
    • + + + + + + - + + +
    • +
    • 강수확률:  
    • + + +
    • + + + 바람: 북서풍 + + + + + 3m/s +
    • + + + +
    • 습도: 60%
    • +
    • 한파영향:
    • +
    + + + + +
    +
    +
    + + + +
    +

    내일

    +
    +
    + 5일(월) + + 최저1℃최고8℃ + +
      +
    • 시각
    • +
    • 날씨
    • +
    • 기온
      (체감)
    • +
    • 강수량
    • + +
    • 강수강도
    • +
    • 강수
      확률
    • +
    • 바람
    • +
    • 습도
    • +
    • 한파
      영향
    • +
    +
    +
    + + + + + +
      +
    • 시각: 01시
    • +
    • 날씨: 구름 많음
    • +
    • 기온(체감온도) 3℃(1℃)
    • +
    • 체감온도: 1℃
    • +
    • 강수량: -
    • +
    • + + + + + + - + + +
    • +
    • 강수확률:  
    • + + +
    • + + + 바람: 북서풍 + + + + + 2m/s +
    • + + + +
    • 습도: 50%
    • +
    • 한파영향:
    • +
    + + + + + + +
      +
    • 시각: 02시
    • +
    • 날씨: 구름 많음
    • +
    • 기온(체감온도) 3℃(3℃)
    • +
    • 체감온도: 3℃
    • +
    • 강수량: -
    • +
    • + + + + + + - + + +
    • +
    • 강수확률:  
    • + + +
    • + + + 바람: 북서풍 + + + + + 1m/s +
    • + + + +
    • 습도: 50%
    • +
    • 한파영향:
    • +
    + + + + + + +
      +
    • 시각: 03시
    • +
    • 날씨: 흐림
    • +
    • 기온(체감온도) 3℃(3℃)
    • +
    • 체감온도: 3℃
    • +
    • 강수량: -
    • +
    • + + + + + + - + + +
    • +
    • 강수확률:  
    • + + + +
    • 바람: -
    • + + +
    • 습도: 60%
    • +
    • 한파영향:
    • +
    + + + + + + +
      +
    • 시각: 04시
    • +
    • 날씨: 구름 많음
    • +
    • 기온(체감온도) 3℃(3℃)
    • +
    • 체감온도: 3℃
    • +
    • 강수량: -
    • +
    • + + + + + + - + + +
    • +
    • 강수확률:  
    • + + + +
    • 바람: -
    • + + +
    • 습도: 65%
    • +
    • 한파영향:
    • +
    + + + + + + + +
      +
    • 시각: 05시
    • +
    • 날씨: 구름 많음
    • +
    • 기온(체감온도) 3℃(3℃)
    • +
    • 체감온도: 3℃
    • +
    • 강수량: -
    • +
    • + + + + + + - + + +
    • +
    • 강수확률: 20%
    • + + +
    • + + + 바람: 북서풍 + + + + + 1m/s +
    • + + + +
    • 습도: 70%
    • +
    • 한파영향:
    • +
    + + + + + + +
      +
    • 시각: 06시
    • +
    • 날씨: 구름 많음
    • +
    • 기온(체감온도) 3℃(3℃)
    • +
    • 체감온도: 3℃
    • +
    • 강수량: -
    • +
    • + + + + + + - + + +
    • +
    • 강수확률: 20%
    • + + + +
    • 바람: -
    • + + +
    • 습도: 65%
    • +
    • 한파영향:
    • +
    + + + + + + +
      +
    • 시각: 07시
    • +
    • 날씨: 구름 많음
    • +
    • 기온(체감온도) 3℃(3℃)
    • +
    • 체감온도: 3℃
    • +
    • 강수량: -
    • +
    • + + + + + + - + + +
    • +
    • 강수확률: 20%
    • + + +
    • + + + 바람: 북서풍 + + + + + 1m/s +
    • + + + +
    • 습도: 65%
    • +
    • 한파영향:
    • +
    + + + + + + +
      +
    • 시각: 08시
    • +
    • 날씨: 구름 많음
    • +
    • 기온(체감온도) 3℃(3℃)
    • +
    • 체감온도: 3℃
    • +
    • 강수량: -
    • +
    • + + + + + + - + + +
    • +
    • 강수확률: 20%
    • + + +
    • + + + 바람: 북서풍 + + + + + 1m/s +
    • + + + +
    • 습도: 65%
    • +
    • 한파영향:
    • +
    + + + + + + +
      +
    • 시각: 09시
    • +
    • 날씨: 흐림
    • +
    • 기온(체감온도) 3℃(3℃)
    • +
    • 체감온도: 3℃
    • +
    • 강수량: -
    • +
    • + + + + + + - + + +
    • +
    • 강수확률: 30%
    • + + +
    • + + + 바람: 북서풍 + + + + + 1m/s +
    • + + + +
    • 습도: 60%
    • +
    • 한파영향:
    • +
    + + + + + + +
      +
    • 시각: 10시
    • +
    • 날씨: 구름 많음
    • +
    • 기온(체감온도) 4℃(2℃)
    • +
    • 체감온도: 2℃
    • +
    • 강수량: -
    • +
    • + + + + + + - + + +
    • +
    • 강수확률: 20%
    • + + +
    • + + + 바람: 북서풍 + + + + + 2m/s +
    • + + + +
    • 습도: 50%
    • +
    • 한파영향:
    • +
    + + + + + + +
      +
    • 시각: 11시
    • +
    • 날씨: 구름 많음
    • +
    • 기온(체감온도) 5℃(3℃)
    • +
    • 체감온도: 3℃
    • +
    • 강수량: -
    • +
    • + + + + + + - + + +
    • +
    • 강수확률: 20%
    • + + +
    • + + + 바람: 북서풍 + + + + + 3m/s +
    • + + + +
    • 습도: 45%
    • +
    • 한파영향:
    • +
    + + + + + + +
      +
    • 시각: 12시
    • +
    • 날씨: 구름 많음
    • +
    • 기온(체감온도) 6℃(4℃)
    • +
    • 체감온도: 4℃
    • +
    • 강수량: -
    • +
    • + + + + + + - + + +
    • +
    • 강수확률: 20%
    • + + +
    • + + + 바람: 북서풍 + + + + + 2m/s +
    • + + + +
    • 습도: 35%
    • +
    • 한파영향:
    • +
    + + + + + + +
      +
    • 시각: 13시
    • +
    • 날씨: 구름 많음
    • +
    • 기온(체감온도) 7℃(5℃)
    • +
    • 체감온도: 5℃
    • +
    • 강수량: -
    • +
    • + + + + + + - + + +
    • +
    • 강수확률: 20%
    • + + +
    • + + + 바람: 북서풍 + + + + + 3m/s +
    • + + + +
    • 습도: 35%
    • +
    • 한파영향:
    • +
    + + + + + + +
      +
    • 시각: 14시
    • +
    • 날씨: 구름 많음
    • +
    • 기온(체감온도) 8℃(7℃)
    • +
    • 체감온도: 7℃
    • +
    • 강수량: -
    • +
    • + + + + + + - + + +
    • +
    • 강수확률: 20%
    • + + +
    • + + + 바람: 북서풍 + + + + + 2m/s +
    • + + + +
    • 습도: 25%
    • +
    • 한파영향:
    • +
    + + + + + + +
      +
    • 시각: 15시
    • +
    • 날씨: 구름 많음
    • +
    • 기온(체감온도) 8℃(7℃)
    • +
    • 체감온도: 7℃
    • +
    • 강수량: -
    • +
    • + + + + + + - + + +
    • +
    • 강수확률: 20%
    • + + +
    • + + + 바람: 북서풍 + + + + + 2m/s +
    • + + + +
    • 습도: 25%
    • +
    • 한파영향:
    • +
    + + + + + + +
      +
    • 시각: 16시
    • +
    • 날씨: 구름 많음
    • +
    • 기온(체감온도) 7℃(7℃)
    • +
    • 체감온도: 7℃
    • +
    • 강수량: -
    • +
    • + + + + + + - + + +
    • +
    • 강수확률: 20%
    • + + + +
    • 바람: -
    • + + +
    • 습도: 25%
    • +
    • 한파영향:
    • +
    + + + + + + +
      +
    • 시각: 17시
    • +
    • 날씨: 구름 많음
    • +
    • 기온(체감온도) 6℃(6℃)
    • +
    • 체감온도: 6℃
    • +
    • 강수량: -
    • +
    • + + + + + + - + + +
    • +
    • 강수확률: 20%
    • + + +
    • + + + 바람: 북풍 + + + + + 1m/s +
    • + + + +
    • 습도: 25%
    • +
    • 한파영향:
    • +
    + + + + + + +
      +
    • 시각: 18시
    • +
    • 날씨: 맑음
    • +
    • 기온(체감온도) 4℃(4℃)
    • +
    • 체감온도: 4℃
    • +
    • 강수량: -
    • +
    • + + + + + + - + + +
    • +
    • 강수확률: 0%
    • + + +
    • + + + 바람: 북풍 + + + + + 1m/s +
    • + + + +
    • 습도: 25%
    • +
    • 한파영향:
    • +
    + + + + + + +
      +
    • 시각: 19시
    • +
    • 날씨: 맑음
    • +
    • 기온(체감온도) 3℃(3℃)
    • +
    • 체감온도: 3℃
    • +
    • 강수량: -
    • +
    • + + + + + + - + + +
    • +
    • 강수확률: 0%
    • + + +
    • + + + 바람: 북풍 + + + + + 1m/s +
    • + + + +
    • 습도: 25%
    • +
    • 한파영향:
    • +
    + + + + + + +
      +
    • 시각: 20시
    • +
    • 날씨: 맑음
    • +
    • 기온(체감온도) 2℃(2℃)
    • +
    • 체감온도: 2℃
    • +
    • 강수량: -
    • +
    • + + + + + + - + + +
    • +
    • 강수확률: 0%
    • + + +
    • + + + 바람: 북풍 + + + + + 1m/s +
    • + + + +
    • 습도: 25%
    • +
    • 한파영향:
    • +
    + + + + + + +
      +
    • 시각: 21시
    • +
    • 날씨: 맑음
    • +
    • 기온(체감온도) 1℃(1℃)
    • +
    • 체감온도: 1℃
    • +
    • 강수량: -
    • +
    • + + + + + + - + + +
    • +
    • 강수확률: 0%
    • + + +
    • + + + 바람: 북서풍 + + + + + 1m/s +
    • + + + +
    • 습도: 25%
    • +
    • 한파영향:
    • +
    + + + + + + +
      +
    • 시각: 22시
    • +
    • 날씨: 맑음
    • +
    • 기온(체감온도) 1℃(1℃)
    • +
    • 체감온도: 1℃
    • +
    • 강수량: -
    • +
    • + + + + + + - + + +
    • +
    • 강수확률: 0%
    • + + +
    • + + + 바람: 북서풍 + + + + + 1m/s +
    • + + + +
    • 습도: 25%
    • +
    • 한파영향:
    • +
    + + + + + + +
      +
    • 시각: 23시
    • +
    • 날씨: 맑음
    • +
    • 기온(체감온도) 0℃(0℃)
    • +
    • 체감온도: 0℃
    • +
    • 강수량: -
    • +
    • + + + + + + - + + +
    • +
    • 강수확률: 0%
    • + + +
    • + + + 바람: 북서풍 + + + + + 1m/s +
    • + + + +
    • 습도: 25%
    • +
    • 한파영향:
    • +
    + + + + + + +
      +
    • 시각: 0시
    • +
    • 날씨: 맑음
    • +
    • 기온(체감온도) -1℃(-1℃)
    • +
    • 체감온도: -1℃
    • +
    • 강수량: -
    • +
    • + + + + + + - + + +
    • +
    • 강수확률: 0%
    • + + +
    • + + + 바람: 북서풍 + + + + + 1m/s +
    • + + + +
    • 습도: 25%
    • +
    • 한파영향:
    • +
    + + + +
    +
    +
    + + + +
    +

    모레

    +
    +
    + 6일(화) + + 최저-2℃최고8℃ + +
      +
    • 시각
    • +
    • 날씨
    • +
    • 기온
      (체감)
    • +
    • 강수량
    • + +
    • 강수강도
    • +
    • 강수
      확률
    • +
    • 바람
    • +
    • 습도
    • +
    • 한파
      영향
    • +
    +
    +
    + + + + + + +
      +
    • 시각: 01시
    • +
    • 날씨: 맑음
    • +
    • 기온(체감온도) -1℃(-1℃)
    • +
    • 체감온도: -1℃
    • +
    • 강수량: -
    • +
    • + + + + + + - + + +
    • +
    • 강수확률: 0%
    • + + + +
    • 바람: -
    • + + +
    • 습도: 30%
    • +
    • 한파영향:
    • +
    + + + + + + +
      +
    • 시각: 02시
    • +
    • 날씨: 맑음
    • +
    • 기온(체감온도) -1℃(-1℃)
    • +
    • 체감온도: -1℃
    • +
    • 강수량: -
    • +
    • + + + + + + - + + +
    • +
    • 강수확률: 0%
    • + + + +
    • 바람: -
    • + + +
    • 습도: 35%
    • +
    • 한파영향:
    • +
    + + + + + + +
      +
    • 시각: 03시
    • +
    • 날씨: 맑음
    • +
    • 기온(체감온도) -1℃(-1℃)
    • +
    • 체감온도: -1℃
    • +
    • 강수량: -
    • +
    • + + + + + + - + + +
    • +
    • 강수확률: 0%
    • + + +
    • + + + 바람: 북풍 + + + + + 1m/s +
    • + + + +
    • 습도: 35%
    • +
    • 한파영향:
    • +
    + + + + + + +
      +
    • 시각: 04시
    • +
    • 날씨: 맑음
    • +
    • 기온(체감온도) -2℃(-2℃)
    • +
    • 체감온도: -2℃
    • +
    • 강수량: -
    • +
    • + + + + + + - + + +
    • +
    • 강수확률: 0%
    • + + +
    • + + + 바람: 북풍 + + + + + 1m/s +
    • + + + +
    • 습도: 40%
    • +
    • 한파영향:
    • +
    + + + + + + +
      +
    • 시각: 05시
    • +
    • 날씨: 맑음
    • +
    • 기온(체감온도) -2℃(-2℃)
    • +
    • 체감온도: -2℃
    • +
    • 강수량: -
    • +
    • + + + + + + - + + +
    • +
    • 강수확률: 0%
    • + + +
    • + + + 바람: 북풍 + + + + + 1m/s +
    • + + + +
    • 습도: 45%
    • +
    • 한파영향:
    • +
    + + + + + + +
      +
    • 시각: 06시
    • +
    • 날씨: 맑음
    • +
    • 기온(체감온도) -2℃(-2℃)
    • +
    • 체감온도: -2℃
    • +
    • 강수량: -
    • +
    • + + + + + + - + + +
    • +
    • 강수확률: 0%
    • + + +
    • + + + 바람: 북풍 + + + + + 1m/s +
    • + + + +
    • 습도: 45%
    • +
    • 한파영향:
    • +
    + + + + + + +
      +
    • 시각: 07시
    • +
    • 날씨: 맑음
    • +
    • 기온(체감온도) -2℃(-2℃)
    • +
    • 체감온도: -2℃
    • +
    • 강수량: -
    • +
    • + + + + + + - + + +
    • +
    • 강수확률: 0%
    • + + + +
    • 바람: -
    • + + +
    • 습도: 45%
    • +
    • 한파영향:
    • +
    + + + + + + +
      +
    • 시각: 08시
    • +
    • 날씨: 맑음
    • +
    • 기온(체감온도) -2℃(-2℃)
    • +
    • 체감온도: -2℃
    • +
    • 강수량: -
    • +
    • + + + + + + - + + +
    • +
    • 강수확률: 0%
    • + + + +
    • 바람: -
    • + + +
    • 습도: 45%
    • +
    • 한파영향:
    • +
    + + + + + + +
      +
    • 시각: 09시
    • +
    • 날씨: 맑음
    • +
    • 기온(체감온도) 0℃(0℃)
    • +
    • 체감온도: 0℃
    • +
    • 강수량: -
    • +
    • + + + + + + - + + +
    • +
    • 강수확률: 0%
    • + + +
    • + + + 바람: 서풍 + + + + + 1m/s +
    • + + + +
    • 습도: 40%
    • +
    • 한파영향:
    • +
    + + + + + + +
      +
    • 시각: 10시
    • +
    • 날씨: 맑음
    • +
    • 기온(체감온도) 2℃(2℃)
    • +
    • 체감온도: 2℃
    • +
    • 강수량: -
    • +
    • + + + + + + - + + +
    • +
    • 강수확률: 0%
    • + + +
    • + + + 바람: 서풍 + + + + + 1m/s +
    • + + + +
    • 습도: 35%
    • +
    • 한파영향:
    • +
    + + + + + + +
      +
    • 시각: 11시
    • +
    • 날씨: 맑음
    • +
    • 기온(체감온도) 3℃(1℃)
    • +
    • 체감온도: 1℃
    • +
    • 강수량: -
    • +
    • + + + + + + - + + +
    • +
    • 강수확률: 0%
    • + + +
    • + + + 바람: 서풍 + + + + + 2m/s +
    • + + + +
    • 습도: 35%
    • +
    • 한파영향:
    • +
    + + + + + + +
      +
    • 시각: 12시
    • +
    • 날씨: 맑음
    • +
    • 기온(체감온도) 5℃(3℃)
    • +
    • 체감온도: 3℃
    • +
    • 강수량: -
    • +
    • + + + + + + - + + +
    • +
    • 강수확률: 0%
    • + + +
    • + + + 바람: 서풍 + + + + + 2m/s +
    • + + + +
    • 습도: 30%
    • +
    • 한파영향:
    • +
    + + + + + + +
      +
    • 시각: 13시
    • +
    • 날씨: 맑음
    • +
    • 기온(체감온도) 7℃(5℃)
    • +
    • 체감온도: 5℃
    • +
    • 강수량: -
    • +
    • + + + + + + - + + +
    • +
    • 강수확률: 0%
    • + + +
    • + + + 바람: 서풍 + + + + + 3m/s +
    • + + + +
    • 습도: 25%
    • +
    • 한파영향:
    • +
    + + + + + + +
      +
    • 시각: 14시
    • +
    • 날씨: 맑음
    • +
    • 기온(체감온도) 8℃(6℃)
    • +
    • 체감온도: 6℃
    • +
    • 강수량: -
    • +
    • + + + + + + - + + +
    • +
    • 강수확률: 0%
    • + + +
    • + + + 바람: 서풍 + + + + + 3m/s +
    • + + + +
    • 습도: 25%
    • +
    • 한파영향:
    • +
    + + + + + + +
      +
    • 시각: 15시
    • +
    • 날씨: 맑음
    • +
    • 기온(체감온도) 8℃(6℃)
    • +
    • 체감온도: 6℃
    • +
    • 강수량: -
    • +
    • + + + + + + - + + +
    • +
    • 강수확률: 0%
    • + + +
    • + + + 바람: 서풍 + + + + + 3m/s +
    • + + + +
    • 습도: 20%
    • +
    • 한파영향:
    • +
    + + + + + + +
      +
    • 시각: 16시
    • +
    • 날씨: 맑음
    • +
    • 기온(체감온도) 7℃(6℃)
    • +
    • 체감온도: 6℃
    • +
    • 강수량: -
    • +
    • + + + + + + - + + +
    • +
    • 강수확률: 0%
    • + + +
    • + + + 바람: 서풍 + + + + + 2m/s +
    • + + + +
    • 습도: 25%
    • +
    • 한파영향:
    • +
    + + + + + + +
      +
    • 시각: 17시
    • +
    • 날씨: 구름 많음
    • +
    • 기온(체감온도) 6℃(5℃)
    • +
    • 체감온도: 5℃
    • +
    • 강수량: -
    • +
    • + + + + + + - + + +
    • +
    • 강수확률: 20%
    • + + +
    • + + + 바람: 서풍 + + + + + 2m/s +
    • + + + +
    • 습도: 30%
    • +
    • 한파영향:
    • +
    + + + + + + +
      +
    • 시각: 18시
    • +
    • 날씨: 흐림
    • +
    • 기온(체감온도) 4℃(4℃)
    • +
    • 체감온도: 4℃
    • +
    • 강수량: -
    • +
    • + + + + + + - + + +
    • +
    • 강수확률: 30%
    • + + +
    • + + + 바람: 서풍 + + + + + 1m/s +
    • + + + +
    • 습도: 35%
    • +
    • 한파영향:
    • +
    + + + + + + +
      +
    • 시각: 19시
    • +
    • 날씨: 구름 많음
    • +
    • 기온(체감온도) 4℃(4℃)
    • +
    • 체감온도: 4℃
    • +
    • 강수량: -
    • +
    • + + + + + + - + + +
    • +
    • 강수확률: 20%
    • + + +
    • + + + 바람: 서풍 + + + + + 1m/s +
    • + + + +
    • 습도: 35%
    • +
    • 한파영향:
    • +
    + + + + + + +
      +
    • 시각: 20시
    • +
    • 날씨: 구름 많음
    • +
    • 기온(체감온도) 3℃(3℃)
    • +
    • 체감온도: 3℃
    • +
    • 강수량: -
    • +
    • + + + + + + - + + +
    • +
    • 강수확률: 20%
    • + + + +
    • 바람: -
    • + + +
    • 습도: 40%
    • +
    • 한파영향:
    • +
    + + + + + + +
      +
    • 시각: 21시
    • +
    • 날씨: 구름 많음
    • +
    • 기온(체감온도) 3℃(3℃)
    • +
    • 체감온도: 3℃
    • +
    • 강수량: -
    • +
    • + + + + + + - + + +
    • +
    • 강수확률: 20%
    • + + +
    • + + + 바람: 북풍 + + + + + 1m/s +
    • + + + +
    • 습도: 40%
    • +
    • 한파영향:
    • +
    + + + + + + +
      +
    • 시각: 22시
    • +
    • 날씨: 흐림
    • +
    • 기온(체감온도) 3℃(2℃)
    • +
    • 체감온도: 2℃
    • +
    • 강수량: -
    • +
    • + + + + + + - + + +
    • +
    • 강수확률: 30%
    • + + +
    • + + + 바람: 북풍 + + + + + 2m/s +
    • + + + +
    • 습도: 40%
    • +
    • 한파영향:
    • +
    + + + + + + +
      +
    • 시각: 23시
    • +
    • 날씨: 흐림
    • +
    • 기온(체감온도) 2℃(1℃)
    • +
    • 체감온도: 1℃
    • +
    • 강수량: -
    • +
    • + + + + + + - + + +
    • +
    • 강수확률: 30%
    • + + +
    • + + + 바람: 북서풍 + + + + + 2m/s +
    • + + + +
    • 습도: 40%
    • +
    • 한파영향:
    • +
    + + + + + + +
      +
    • 시각: 0시
    • +
    • 날씨: 흐림
    • +
    • 기온(체감온도) 2℃(1℃)
    • +
    • 체감온도: 1℃
    • +
    • 강수량: -
    • +
    • + + + + + + - + + +
    • +
    • 강수확률: 30%
    • + + +
    • + + + 바람: 북서풍 + + + + + 1m/s +
    • + + + +
    • 습도: 40%
    • +
    • 한파영향:
    • +
    + + + +
    +
    +
    + + + +
    +

    글피

    +
    +
    + 7일(수) + + 최저0℃최고9℃ + +
      +
    • 시각
    • +
    • 날씨
    • +
    • 기온
      (체감)
    • +
    • 강수량
    • + +
    • 강수강도
    • +
    • 강수
      확률
    • +
    • 바람
    • +
    • 습도
    • +
    • 한파
      영향
    • +
    +
    +
    + + + + + + +
      +
    • 시각: 01시
    • +
    • 날씨: 흐림
    • +
    • 기온(체감온도) 2℃(0℃)
    • +
    • 체감온도: 0℃
    • +
    • 강수량: -
    • +
    • + + + + + + - + + +
    • +
    • 강수확률: 30%
    • + + +
    • + + + 바람: 북서풍 + + + + + 2m/s +
    • + + + +
    • 습도: 40%
    • +
    • 한파영향:
    • +
    + + + + + + +
      +
    • 시각: 02시
    • +
    • 날씨: 흐림
    • +
    • 기온(체감온도) 2℃(-1℃)
    • +
    • 체감온도: -1℃
    • +
    • 강수량: -
    • +
    • + + + + + + - + + +
    • +
    • 강수확률: 30%
    • + + +
    • + + + 바람: 북서풍 + + + + + 2m/s +
    • + + + +
    • 습도: 50%
    • +
    • 한파영향:
    • +
    + + + + + + +
      +
    • 시각: 03시
    • +
    • 날씨: 구름 많음
    • +
    • 기온(체감온도) 1℃(-2℃)
    • +
    • 체감온도: -2℃
    • +
    • 강수량: -
    • +
    • + + + + + + - + + +
    • +
    • 강수확률: 20%
    • + + +
    • + + + 바람: 북서풍 + + + + + 3m/s +
    • + + + +
    • 습도: 50%
    • +
    • 한파영향:
    • +
    + + + + + + +
      +
    • 시각: 04시
    • +
    • 날씨: 맑음
    • +
    • 기온(체감온도) 1℃(-2℃)
    • +
    • 체감온도: -2℃
    • +
    • 강수량: -
    • +
    • + + + + + + - + + +
    • +
    • 강수확률: 0%
    • + + +
    • + + + 바람: 북서풍 + + + + + 3m/s +
    • + + + +
    • 습도: 55%
    • +
    • 한파영향:
    • +
    + + + + + + +
      +
    • 시각: 05시
    • +
    • 날씨: 맑음
    • +
    • 기온(체감온도) 1℃(-2℃)
    • +
    • 체감온도: -2℃
    • +
    • 강수량: -
    • +
    • + + + + + + - + + +
    • +
    • 강수확률: 0%
    • + + +
    • + + + 바람: 북서풍 + + + + + 2m/s +
    • + + + +
    • 습도: 60%
    • +
    • 한파영향:
    • +
    + + + + + + +
      +
    • 시각: 06시
    • +
    • 날씨: 맑음
    • +
    • 기온(체감온도) 1℃(-1℃)
    • +
    • 체감온도: -1℃
    • +
    • 강수량: -
    • +
    • + + + + + + - + + +
    • +
    • 강수확률: 0%
    • + + +
    • + + + 바람: 북서풍 + + + + + 2m/s +
    • + + + +
    • 습도: 60%
    • +
    • 한파영향:
    • +
    + + + + + + +
      +
    • 시각: 07시
    • +
    • 날씨: 맑음
    • +
    • 기온(체감온도) 1℃(-1℃)
    • +
    • 체감온도: -1℃
    • +
    • 강수량: -
    • +
    • + + + + + + - + + +
    • +
    • 강수확률: 0%
    • + + +
    • + + + 바람: 북서풍 + + + + + 2m/s +
    • + + + +
    • 습도: 60%
    • +
    • 한파영향:
    • +
    + + + + + + +
      +
    • 시각: 08시
    • +
    • 날씨: 맑음
    • +
    • 기온(체감온도) 1℃(-1℃)
    • +
    • 체감온도: -1℃
    • +
    • 강수량: -
    • +
    • + + + + + + - + + +
    • +
    • 강수확률: 0%
    • + + +
    • + + + 바람: 서풍 + + + + + 2m/s +
    • + + + +
    • 습도: 65%
    • +
    • 한파영향:
    • +
    + + + + + + +
      +
    • 시각: 09시
    • +
    • 날씨: 맑음
    • +
    • 기온(체감온도) 2℃(-1℃)
    • +
    • 체감온도: -1℃
    • +
    • 강수량: -
    • +
    • + + + + + + - + + +
    • +
    • 강수확률: 0%
    • + + +
    • + + + 바람: 서풍 + + + + + 2m/s +
    • + + + +
    • 습도: 60%
    • +
    • 한파영향:
    • +
    + + + + + + +
      +
    • 시각: 10시
    • +
    • 날씨: 맑음
    • +
    • 기온(체감온도) 5℃(2℃)
    • +
    • 체감온도: 2℃
    • +
    • 강수량: -
    • +
    • + + + + + + - + + +
    • +
    • 강수확률: 0%
    • + + +
    • + + + 바람: 서풍 + + + + + 3m/s +
    • + + + +
    • 습도: 55%
    • +
    • 한파영향:
    • +
    + + + + + + +
      +
    • 시각: 11시
    • +
    • 날씨: 맑음
    • +
    • 기온(체감온도) 6℃(3℃)
    • +
    • 체감온도: 3℃
    • +
    • 강수량: -
    • +
    • + + + + + + - + + +
    • +
    • 강수확률: 0%
    • + + +
    • + + + 바람: 서풍 + + + + + 4m/s +
    • + + + +
    • 습도: 50%
    • +
    • 한파영향:
    • +
    + + + + + + +
      +
    • 시각: 12시
    • +
    • 날씨: 맑음
    • +
    • 기온(체감온도) 7℃(4℃)
    • +
    • 체감온도: 4℃
    • +
    • 강수량: -
    • +
    • + + + + + + - + + +
    • +
    • 강수확률: 0%
    • + + +
    • + + + 바람: 서풍 + + + + 약간 강 + 4m/s +
    • + + + +
    • 습도: 45%
    • +
    • 한파영향:
    • +
    + + + + + + +
      +
    • 시각: 13시
    • +
    • 날씨: 맑음
    • +
    • 기온(체감온도) 8℃(5℃)
    • +
    • 체감온도: 5℃
    • +
    • 강수량: -
    • +
    • + + + + + + - + + +
    • +
    • 강수확률: 0%
    • + + +
    • + + + 바람: 북서풍 + + + + 약간 강 + 5m/s +
    • + + + +
    • 습도: 40%
    • +
    • 한파영향:
    • +
    + + + + + + +
      +
    • 시각: 14시
    • +
    • 날씨: 맑음
    • +
    • 기온(체감온도) 9℃(7℃)
    • +
    • 체감온도: 7℃
    • +
    • 강수량: -
    • +
    • + + + + + + - + + +
    • +
    • 강수확률: 0%
    • + + +
    • + + + 바람: 북서풍 + + + + 약간 강 + 5m/s +
    • + + + +
    • 습도: 35%
    • +
    • 한파영향:
    • +
    + + + + + + +
      +
    • 시각: 15시
    • +
    • 날씨: 맑음
    • +
    • 기온(체감온도) 9℃(7℃)
    • +
    • 체감온도: 7℃
    • +
    • 강수량: -
    • +
    • + + + + + + - + + +
    • +
    • 강수확률: 0%
    • + + +
    • + + + 바람: 북서풍 + + + + + 4m/s +
    • + + + +
    • 습도: 35%
    • +
    • 한파영향:
    • +
    + + + + + + +
      +
    • 시각: 16시
    • +
    • 날씨: 맑음
    • +
    • 기온(체감온도) 8℃(6℃)
    • +
    • 체감온도: 6℃
    • +
    • 강수량: -
    • +
    • + + + + + + - + + +
    • +
    • 강수확률: 0%
    • + + +
    • + + + 바람: 북서풍 + + + + + 3m/s +
    • + + + +
    • 습도: 35%
    • +
    • 한파영향:
    • +
    + + + + + + +
      +
    • 시각: 17시
    • +
    • 날씨: 맑음
    • +
    • 기온(체감온도) 7℃(6℃)
    • +
    • 체감온도: 6℃
    • +
    • 강수량: -
    • +
    • + + + + + + - + + +
    • +
    • 강수확률: 0%
    • + + +
    • + + + 바람: 북서풍 + + + + + 2m/s +
    • + + + +
    • 습도: 40%
    • +
    • 한파영향:
    • +
    + + + + + + +
      +
    • 시각: 18시
    • +
    • 날씨: 맑음
    • +
    • 기온(체감온도) 5℃(5℃)
    • +
    • 체감온도: 5℃
    • +
    • 강수량: -
    • +
    • + + + + + + - + + +
    • +
    • 강수확률: 0%
    • + + +
    • + + + 바람: 북풍 + + + + + 1m/s +
    • + + + +
    • 습도: 45%
    • +
    • 한파영향:
    • +
    + + + + + + +
      +
    • 시각: 19시
    • +
    • 날씨: 맑음
    • +
    • 기온(체감온도) 5℃(5℃)
    • +
    • 체감온도: 5℃
    • +
    • 강수량: -
    • +
    • + + + + + + - + + +
    • +
    • 강수확률: 0%
    • + + +
    • + + + 바람: 북풍 + + + + + 1m/s +
    • + + + +
    • 습도: 50%
    • +
    • 한파영향:
    • +
    + + + + + + +
      +
    • 시각: 20시
    • +
    • 날씨: 맑음
    • +
    • 기온(체감온도) 4℃(3℃)
    • +
    • 체감온도: 3℃
    • +
    • 강수량: -
    • +
    • + + + + + + - + + +
    • +
    • 강수확률: 0%
    • + + +
    • + + + 바람: 북풍 + + + + + 2m/s +
    • + + + +
    • 습도: 50%
    • +
    • 한파영향:
    • +
    + + + + + + +
      +
    • 시각: 21시
    • +
    • 날씨: 맑음
    • +
    • 기온(체감온도) 3℃(1℃)
    • +
    • 체감온도: 1℃
    • +
    • 강수량: -
    • +
    • + + + + + + - + + +
    • +
    • 강수확률: 0%
    • + + +
    • + + + 바람: 북서풍 + + + + + 2m/s +
    • + + + +
    • 습도: 50%
    • +
    • 한파영향:
    • +
    + + + + + + +
      +
    • 시각: 22시
    • +
    • 날씨: 맑음
    • +
    • 기온(체감온도) 2℃(0℃)
    • +
    • 체감온도: 0℃
    • +
    • 강수량: -
    • +
    • + + + + + + - + + +
    • +
    • 강수확률: 0%
    • + + +
    • + + + 바람: 북서풍 + + + + + 2m/s +
    • + + + +
    • 습도: 50%
    • +
    • 한파영향:
    • +
    + + + + + + +
      +
    • 시각: 23시
    • +
    • 날씨: 맑음
    • +
    • 기온(체감온도) 0℃(-3℃)
    • +
    • 체감온도: -3℃
    • +
    • 강수량: -
    • +
    • + + + + + + - + + +
    • +
    • 강수확률: 0%
    • + + +
    • + + + 바람: 북서풍 + + + + + 3m/s +
    • + + + +
    • 습도: 50%
    • +
    • 한파영향:
    • +
    + + + + + + +
      +
    • 시각: 0시
    • +
    • 날씨: 맑음
    • +
    • 기온(체감온도) 0℃(-4℃)
    • +
    • 체감온도: -4℃
    • +
    • 강수량: -
    • +
    • + + + + + + - + + +
    • +
    • 강수확률: 0%
    • + + +
    • + + + 바람: 북서풍 + + + + + 3m/s +
    • + + + +
    • 습도: 50%
    • +
    • 한파영향:
    • +
    + + + +
    +
    +
    + + + + + + + + + + + + + + + + +
    +
    +
    +
    +
    +
    +
    초단기 10분강수예측
    +
    +
    +
    +
    +
    + +
    + 시계열예보안내 + 최근발표시각 +
    +
    + 닫기 +
    최근발표시각
    +
    초단기예보(현재부터 +6시간까지):
    01.04.(일) 22:30
    +
    단기예보(초단기예보 이후 모레까지):
    01.04.(일) 20:00
    +
    중기예보(단기예보 이후 10일까지):
    01.04.(일) 18:00
    +
    +
    +
    +
    +

    대기질정보

    + +
    +
    +
    + 닫기 +
    초미세먼지(㎛)
    +

    입자의 크기가 2.5㎛ 이하인 먼지

    +
      +
    • 좋음
      (0~15)
    • +
    • 보통
      (16~35)
    • +
    • 나쁨
      (36~75)
    • +
    • 매우나쁨
      (76~)
    • +
    +
    +
    +
    +
    + 닫기 +
    미세먼지(㎛)
    +

    입자의 크기가 10㎛ 이하인 먼지

    +
      +
    • 좋음
      (0~30)
    • +
    • 보통
      (31~80)
    • +
    • 나쁨
      (81~150)
    • +
    • 매우나쁨
      (151~)
    • +
    +
    +
    +
    +
    + 닫기 +
    오존(ppm)
    +
      +
    • 좋음
      (0~0.03)
    • +
    • 보통
      (0.031~0.09)
    • +
    • 나쁨
      (0.091~0.15)
    • +
    • 매우나쁨
      (0.151~)
    • +
    +
    +
    +
    +
    + +
    +

    장림동측정소(도시대기) 01.04.(일) 22:00 기준

    +

    제공: 한국환경공단

    +
    + diff --git a/test_supabase.py b/test_supabase.py new file mode 100644 index 0000000..0467c71 --- /dev/null +++ b/test_supabase.py @@ -0,0 +1,68 @@ +# -*- coding: utf-8 -*- +""" +Supabase 동기화 테스트 스크립트 +""" + +import logging +logging.basicConfig(level=logging.DEBUG, format='%(levelname)s: %(message)s') + +from core.supabase_client import SupabaseClient, SupabaseSyncManager + +def main(): + # 연결 테스트 + client = SupabaseClient() + print('=== Supabase 연결 테스트 ===') + if client.test_connection(): + print('연결 성공!') + else: + print('연결 실패') + return + + # 편성 정보 조회 + print('\n=== 편성 정보 조회 ===') + trains = client.get_trains() + print(f'조회된 편성 수: {len(trains)}') + if trains: + for t in trains[:5]: + print(f' - 편성 {t.train_set}: {t.train_id}, 제조사={t.manufacturer}, 신형={t.is_new}') + + # 역 정보 조회 + print('\n=== 역 정보 조회 (1호선) ===') + stations = client.get_stations(line_number=1) + print(f'조회된 역 수: {len(stations)}') + if stations: + for s in stations[:5]: + print(f' - {s.station_id}: {s.station_name}') + + # 제조사 정보 조회 + print('\n=== 제조사 정보 조회 ===') + manufacturers = client.get_manufacturers() + print(f'조회된 제조사 수: {len(manufacturers)}') + for m in manufacturers: + print(f' - {m.id}: {m.manufact}') + + # 동기화 테스트 + print('\n=== 마스터 데이터 동기화 ===') + sync_manager = SupabaseSyncManager() + results = sync_manager.sync_all() + print(f'동기화 결과: {results}') + + # 로컬 DB에서 확인 + print('\n=== 로컬 DB 확인 ===') + from core.settings_manager import get_settings_manager + settings = get_settings_manager() + + local_trains = settings.get_all_trains() + print(f'로컬 편성 수: {len(local_trains)}') + + local_stations = settings.get_all_stations() + print(f'로컬 역 수: {len(local_stations)}') + + local_manufacturers = settings.get_all_manufacturers() + print(f'로컬 제조사 수: {len(local_manufacturers)}') + + print('\n=== 테스트 완료 ===') + +if __name__ == '__main__': + main() + diff --git a/test_weather_db.py b/test_weather_db.py new file mode 100644 index 0000000..415eba6 --- /dev/null +++ b/test_weather_db.py @@ -0,0 +1,40 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +""" +날씨 DB 기능 테스트 +""" + +from database.crud import CRUDManager +from datetime import datetime + +def test_weather_db(): + """날씨 DB 기능 테스트""" + crud = CRUDManager() + + # 테스트 날씨 데이터 저장 + test_datetime = datetime(2026, 1, 10, 12, 0) + weather = crud.upsert_weather( + datetime=test_datetime, + location_name='부산', + location_code='2638057200', + temp=15, + feels_like=16, + weather_condition='맑음', + weather_icon='☀️' + ) + print(f'Weather data saved: {weather.temp}°C, {weather.weather_condition}') + + # 저장된 데이터 조회 + weather_data = crud.get_weather_by_datetime_range( + start_datetime=datetime(2026, 1, 10, 0, 0), + end_datetime=datetime(2026, 1, 10, 23, 59), + location_code='2638057200' + ) + print(f'Found {len(weather_data)} weather records') + + # 근무 형태별 통계 조회 + stats = crud.get_weather_stats_for_shift('주간', datetime(2026, 1, 10).date(), '2638057200') + print(f'Shift stats: {stats}') + +if __name__ == '__main__': + test_weather_db() diff --git a/test_weather_fix.py b/test_weather_fix.py new file mode 100644 index 0000000..01db553 --- /dev/null +++ b/test_weather_fix.py @@ -0,0 +1,40 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +""" +날씨 기능 수정 테스트 +""" + +from database.crud import CRUDManager +from datetime import datetime + +def test_weather_fix(): + """날씨 기능 수정 테스트""" + crud = CRUDManager() + print('Testing weather CRUD...') + + try: + # 간단한 날씨 데이터 저장 + weather = crud.upsert_weather( + datetime=datetime(2026, 1, 10, 12, 0), + location_name='부산', + location_code='2638057200', + temp=15, + weather_condition='맑음' + ) + print(f'Success: Saved weather {weather.temp}°C') + + # 통계 조회 + stats = crud.get_weather_stats_for_shift('주간', datetime(2026, 1, 10).date(), '2638057200') + print(f'Stats: {stats}') + + # 오래된 데이터 정리 테스트 + crud.cleanup_old_weather_data(7) + print('Cleanup completed') + + except Exception as e: + print(f'Error: {e}') + import traceback + traceback.print_exc() + +if __name__ == '__main__': + test_weather_fix() diff --git a/ui/__init__.py b/ui/__init__.py new file mode 100644 index 0000000..9acca12 --- /dev/null +++ b/ui/__init__.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +""" +UI 모듈 패키지 +사용자 인터페이스 관련 모듈들의 집합 + +이 패키지는 다음을 포함합니다: +- main_window: 메인 윈도우 +- base/: 기본 UI 컴포넌트 +- components/: 재사용 가능 컴포넌트 +- panels/: 패널 (영역별 UI) +- sections/: 섹션별 UI +- dialogs/: 다이얼로그 +- widgets/: Todo/메모 관련 위젯 +""" + +from .main_window import MainWindow + +__all__ = [ + 'MainWindow', +] + + diff --git a/ui/base/__init__.py b/ui/base/__init__.py new file mode 100644 index 0000000..dca0574 --- /dev/null +++ b/ui/base/__init__.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +""" +Base UI 컴포넌트 패키지 +기본 위젯, 다이얼로그, 섹션, 테이블 클래스 정의 + +모든 UI 컴포넌트는 이 패키지의 기본 클래스를 상속받아 구현됩니다. +""" + +from .base_widget import BaseWidget +from .base_dialog import BaseDialog +from .base_section import BaseSection +from .base_table import BaseTable + +__all__ = [ + 'BaseWidget', + 'BaseDialog', + 'BaseSection', + 'BaseTable', +] + + diff --git a/ui/base/base_dialog.py b/ui/base/base_dialog.py new file mode 100644 index 0000000..18bc393 --- /dev/null +++ b/ui/base/base_dialog.py @@ -0,0 +1,502 @@ +# -*- coding: utf-8 -*- +""" +기본 다이얼로그 클래스 모듈 +모든 커스텀 다이얼로그의 기반 클래스를 정의합니다. + +- 프레임리스 다이얼로그 +- 드래그 이동 및 크기 조정 지원 +- 공통 버튼 레이아웃 + +중요: +- 다이얼로그 내부 컴포넌트(필터카드 등)까지 QLabel 전역 스타일이 전파되어 + 폰트/높이 충돌로 잘림이 발생할 수 있어, + QLabel 스타일 범위를 #dialogContainer 내부로 제한합니다. +""" + +from PySide6.QtWidgets import ( + QDialog, QVBoxLayout, QHBoxLayout, QWidget, + QPushButton, QLabel, QGraphicsDropShadowEffect +) +from PySide6.QtCore import Qt, Signal, QPoint +from PySide6.QtGui import QColor, QFont, QMouseEvent, QKeyEvent + +from core.logger import get_logger +from core.config import ConfigManager +from core.signals import GlobalSignals +from ui.styles.style_manager import StyleManager + +logger = get_logger(__name__) + +RESIZE_MARGIN = 8 + + +class BaseDialog(QDialog): + dialog_confirmed = Signal() + dialog_cancelled = Signal() + + def __init__( + self, + parent=None, + title: str = "", + width: int = 400, + height: int = 300, + min_width: int = 300, + min_height: int = 200, + modal: bool = True, + frameless: bool = True, + resizable: bool = True + ): + super().__init__(parent) + + self.config = ConfigManager() + self.signals = GlobalSignals() + self.style_manager = StyleManager() + + self.title_text = title + self._drag_position = QPoint() + self._is_dragging = False + self._resizable = resizable + self._resize_direction = None + self._resize_start_pos = QPoint() + self._resize_start_geometry = None + + self._setup_window(width, height, min_width, min_height, modal, frameless, resizable) + self._setup_base_ui() + + logger.debug("%s 초기화", self.__class__.__name__) + + + def _setup_window( + self, + width: int, + height: int, + min_width: int, + min_height: int, + modal: bool, + frameless: bool, + resizable: bool + ): + self.resize(width, height) + self.setMinimumSize(min_width, min_height) + self.setModal(modal) + + if not resizable: + self.setFixedSize(width, height) + + if frameless: + self.setWindowFlags(Qt.Dialog | Qt.FramelessWindowHint) + self.setAttribute(Qt.WA_TranslucentBackground) + + self.setMouseTracking(True) + + def _setup_base_ui(self): + main_layout = QVBoxLayout(self) + main_layout.setContentsMargins(0, 0, 0, 0) + main_layout.setSpacing(0) + + self.container = QWidget() + self.container.setObjectName("dialogContainer") + main_layout.addWidget(self.container) + + self.container_layout = QVBoxLayout(self.container) + self.container_layout.setContentsMargins(24, 20, 24, 24) + self.container_layout.setSpacing(16) + + self._create_header() + + self.content_widget = QWidget() + self.content_layout = QVBoxLayout(self.content_widget) + self.content_layout.setContentsMargins(0, 0, 0, 0) + self.content_layout.setSpacing(12) + self.container_layout.addWidget(self.content_widget, 1) + + self.button_widget = QWidget() + self.button_layout = QHBoxLayout(self.button_widget) + self.button_layout.setContentsMargins(0, 12, 0, 0) + self.button_layout.setSpacing(12) + self.container_layout.addWidget(self.button_widget) + + self._add_shadow() + self._apply_style() + + def _create_header(self): + header = QWidget() + header_layout = QHBoxLayout(header) + header_layout.setContentsMargins(0, 0, 0, 0) + header_layout.setSpacing(0) + + self.title_label = QLabel(self.title_text) + self.title_label.setObjectName("dialogTitle") + header_layout.addWidget(self.title_label) + + header_layout.addStretch() + + self.close_btn = QPushButton("✕") + self.close_btn.setObjectName("closeButton") + self.close_btn.setFixedSize(32, 32) + self.close_btn.setCursor(Qt.PointingHandCursor) + self.close_btn.clicked.connect(self.close) + header_layout.addWidget(self.close_btn) + + self.container_layout.addWidget(header) + + def _add_shadow(self): + shadow = QGraphicsDropShadowEffect(self.container) + shadow.setBlurRadius(30) + shadow.setOffset(0, 10) + shadow.setColor(QColor(0, 0, 0, 80)) + self.container.setGraphicsEffect(shadow) + + def _apply_style(self): + colors = self.style_manager.get_colors() + dialog_font = self.style_manager.get_font("dialog", "title") + label_font = self.style_manager.get_font("dialog", "label") + + dialog_style = self.style_manager.get_dialog_stylesheet() + + self.title_label.setFont(dialog_font) + + label_height = self.style_manager.calculate_label_height( + font=label_font, area="dialog", style="label" + ) + + self.setStyleSheet(f""" + {dialog_style} + + #dialogContainer {{ + background-color: {colors['bg_secondary']}; + border: 1px solid {colors['border']}; + border-radius: 16px; + }} + + #dialogTitle {{ + color: {colors['text_primary']}; + font-family: '{dialog_font.family()}'; + font-size: {dialog_font.pointSize()}pt; + font-weight: bold; + min-height: {label_height}px; + }} + + #closeButton {{ + background-color: transparent; + border: none; + color: {colors['text_primary']}; + font-size: 16px; + border-radius: 16px; + }} + + #closeButton:hover {{ + background-color: {colors['error']}; + color: white; + }} + + /* ✅ 중요: QLabel 전역 적용 금지 → 다이얼로그 컨테이너 내부로 범위 제한 */ + #dialogContainer QLabel {{ + color: {colors['text_primary']}; + font-family: '{label_font.family()}'; + font-size: {label_font.pointSize()}pt; + min-height: {label_height}px; + }} + + {self.style_manager.get_input_stylesheet(area="dialog", style="input")} + {self.style_manager.get_label_stylesheet(area="dialog", style="label")} + """) + + def add_button(self, text: str, callback=None, primary: bool = False, danger: bool = False) -> QPushButton: + btn = QPushButton(text) + btn.setFixedHeight(40) + btn.setCursor(Qt.PointingHandCursor) + if callback: + btn.clicked.connect(callback) + + if primary: + btn.setStyleSheet(""" + QPushButton { + background-color: #3b82f6; + color: white; + border: none; + border-radius: 8px; + padding: 0 24px; + font-weight: bold; + } + QPushButton:hover { background-color: #2563eb; } + QPushButton:pressed { background-color: #1d4ed8; } + """) + elif danger: + btn.setStyleSheet(""" + QPushButton { + background-color: #ef4444; + color: white; + border: none; + border-radius: 8px; + padding: 0 24px; + font-weight: bold; + } + QPushButton:hover { background-color: #dc2626; } + QPushButton:pressed { background-color: #b91c1c; } + """) + else: + btn.setStyleSheet(""" + QPushButton { + background-color: #64748b; + color: white; + border: none; + border-radius: 8px; + padding: 0 24px; + } + QPushButton:hover { background-color: #475569; } + QPushButton:pressed { background-color: #334155; } + """) + + self.button_layout.addWidget(btn) + return btn + + def add_confirm_cancel_buttons(self, confirm_text: str = "확인", cancel_text: str = "취소"): + self.button_layout.addStretch() + self.cancel_btn = self.add_button(cancel_text, self._on_cancel) + self.confirm_btn = self.add_button(confirm_text, self._on_confirm, primary=True) + # 확인 버튼을 기본 버튼으로 설정 (엔터키로 활성화) + self.confirm_btn.setDefault(True) + self.confirm_btn.setAutoDefault(True) + + def _on_confirm(self): + self.dialog_confirmed.emit() + self.accept() + + def _on_cancel(self): + self.dialog_cancelled.emit() + self.reject() + + def keyPressEvent(self, event: QKeyEvent): + """키보드 이벤트 처리""" + # ESC키: 다이얼로그 닫기 + if event.key() == Qt.Key_Escape: + self._on_cancel() + return + + # 엔터키: 확인 버튼 클릭 (입력 필드에 포커스가 있을 때는 제외) + if event.key() in (Qt.Key_Return, Qt.Key_Enter): + # 현재 포커스가 있는 위젯 확인 + focused_widget = self.focusWidget() + + # 텍스트 입력 필드나 멀티라인 입력 필드에서는 기본 동작 허용 + from PySide6.QtWidgets import QLineEdit, QTextEdit, QPlainTextEdit, QSpinBox, QComboBox + if isinstance(focused_widget, (QLineEdit, QTextEdit, QPlainTextEdit, QSpinBox, QComboBox)): + # 입력 필드에서 엔터키는 기본 동작 (줄바꿈 등) 허용 + super().keyPressEvent(event) + return + + # 확인 버튼이 있으면 클릭, 없으면 accept() + if hasattr(self, 'confirm_btn') and self.confirm_btn: + self.confirm_btn.click() + else: + # 확인 버튼이 없으면 기본 accept() 동작 + self._on_confirm() + return + + super().keyPressEvent(event) + + # ===== resize/drag 로직은 기존 유지 ===== + def _get_resize_direction(self, pos: QPoint) -> str: + if not self._resizable: + return '' + rect = self.rect() + x, y = pos.x(), pos.y() + w, h = rect.width(), rect.height() + + left = x < RESIZE_MARGIN + right = x > w - RESIZE_MARGIN + top = y < RESIZE_MARGIN + bottom = y > h - RESIZE_MARGIN + + if top and left: + return 'top-left' + elif top and right: + return 'top-right' + elif bottom and left: + return 'bottom-left' + elif bottom and right: + return 'bottom-right' + elif left: + return 'left' + elif right: + return 'right' + elif top: + return 'top' + elif bottom: + return 'bottom' + return '' + + def _update_cursor(self, direction: str): + cursors = { + 'left': Qt.SizeHorCursor, + 'right': Qt.SizeHorCursor, + 'top': Qt.SizeVerCursor, + 'bottom': Qt.SizeVerCursor, + 'top-left': Qt.SizeFDiagCursor, + 'bottom-right': Qt.SizeFDiagCursor, + 'top-right': Qt.SizeBDiagCursor, + 'bottom-left': Qt.SizeBDiagCursor, + } + self.setCursor(cursors.get(direction, Qt.ArrowCursor)) + + def mousePressEvent(self, event: QMouseEvent): + if event.button() == Qt.LeftButton: + pos = event.position().toPoint() + direction = self._get_resize_direction(pos) + if direction: + self._resize_direction = direction + self._resize_start_pos = event.globalPosition().toPoint() + self._resize_start_geometry = self.geometry() + else: + self._drag_position = event.globalPosition().toPoint() - self.frameGeometry().topLeft() + self._is_dragging = True + super().mousePressEvent(event) + + def mouseMoveEvent(self, event: QMouseEvent): + pos = event.position().toPoint() + if self._resize_direction and event.buttons() == Qt.LeftButton: + self._do_resize(event.globalPosition().toPoint()) + elif self._is_dragging and event.buttons() == Qt.LeftButton: + self.move(event.globalPosition().toPoint() - self._drag_position) + else: + direction = self._get_resize_direction(pos) + self._update_cursor(direction) + super().mouseMoveEvent(event) + + def _do_resize(self, global_pos: QPoint): + if not self._resize_start_geometry: + return + dx = global_pos.x() - self._resize_start_pos.x() + dy = global_pos.y() - self._resize_start_pos.y() + + geo = self._resize_start_geometry + new_geo = self.geometry() + + min_w = self.minimumWidth() + min_h = self.minimumHeight() + + direction = self._resize_direction + + if 'right' in direction: + new_geo.setWidth(max(min_w, geo.width() + dx)) + if 'left' in direction: + new_w = max(min_w, geo.width() - dx) + if new_w != geo.width(): + new_geo.setLeft(geo.left() + (geo.width() - new_w)) + new_geo.setWidth(new_w) + if 'bottom' in direction: + new_geo.setHeight(max(min_h, geo.height() + dy)) + if 'top' in direction: + new_h = max(min_h, geo.height() - dy) + if new_h != geo.height(): + new_geo.setTop(geo.top() + (geo.height() - new_h)) + new_geo.setHeight(new_h) + + self.setGeometry(new_geo) + + def mouseReleaseEvent(self, event: QMouseEvent): + self._is_dragging = False + self._resize_direction = None + self._resize_start_geometry = None + super().mouseReleaseEvent(event) + + def resizeEvent(self, event): + super().resizeEvent(event) + if self._resizable: + self._apply_text_scaling() + + def _apply_text_scaling(self): + base_width = 400 + base_height = 300 + + scale_x = self.width() / base_width + scale_y = self.height() / base_height + scale = min(scale_x, scale_y) + scale = max(0.8, min(1.5, scale)) + + colors = self.style_manager.get_colors() + + base_title_font = self.style_manager.get_font("dialog", "title") + title_size = int(base_title_font.pointSize() * scale) + title_font = QFont(base_title_font.family(), title_size, base_title_font.weight()) + self.title_label.setFont(title_font) + + base_label_font = self.style_manager.get_font("dialog", "label") + label_size = int(base_label_font.pointSize() * scale) + label_font = QFont(base_label_font.family(), label_size, base_label_font.weight()) + + base_input_font = self.style_manager.get_font("dialog", "input") + input_size = int(base_input_font.pointSize() * scale) + input_font = QFont(base_input_font.family(), input_size, base_input_font.weight()) + + label_height = self.style_manager.calculate_label_height(font=label_font, area="dialog", style="label") + input_height = self.style_manager.calculate_input_height(font=input_font, area="dialog", style="input") + + self.setStyleSheet(f""" + {self.style_manager.get_dialog_stylesheet()} + + #dialogContainer {{ + background-color: {colors['bg_secondary']}; + border: 1px solid {colors['border']}; + border-radius: 16px; + }} + + #dialogTitle {{ + color: {colors['text_primary']}; + font-family: '{title_font.family()}'; + font-size: {title_size}pt; + font-weight: bold; + min-height: {label_height}px; + }} + + #closeButton {{ + background-color: transparent; + border: none; + color: {colors['text_primary']}; + font-size: {int(16 * scale)}px; + border-radius: 16px; + }} + + #closeButton:hover {{ + background-color: {colors['error']}; + color: white; + }} + + /* ✅ 중요: QLabel 범위 제한 */ + #dialogContainer QLabel {{ + color: {colors['text_primary']}; + font-family: '{label_font.family()}'; + font-size: {label_size}pt; + min-height: {label_height}px; + }} + + QLineEdit, QTextEdit, QComboBox, QSpinBox {{ + background-color: {colors['input_bg']}; + color: {colors['input_text']}; + border: 1px solid {colors['input_border']}; + border-radius: 6px; + padding: {input_height // 4}px 12px; + font-family: '{input_font.family()}'; + font-size: {input_size}pt; + min-height: {input_height}px; + }} + + QLineEdit:focus, QTextEdit:focus, QComboBox:focus, QSpinBox:focus {{ + border-color: {colors['input_focus']}; + outline: none; + }} + """) + + self._on_text_scale_changed(scale, label_font, input_font) + + def _on_text_scale_changed(self, scale: float, label_font: QFont, input_font: QFont): + _ = (scale, label_font, input_font) + + def get_text_scale_factor(self) -> float: + base_width = 400 + base_height = 300 + scale_x = self.width() / base_width + scale_y = self.height() / base_height + scale = min(scale_x, scale_y) + return max(0.8, min(1.5, scale)) diff --git a/ui/base/base_section.py b/ui/base/base_section.py new file mode 100644 index 0000000..725512b --- /dev/null +++ b/ui/base/base_section.py @@ -0,0 +1,1263 @@ +# -*- coding: utf-8 -*- +""" +기본 섹션 클래스 모듈 +모든 섹션(지시, 고장, 작업, 기타)의 기반 클래스를 정의합니다. + +이 모듈은 다음 기능을 제공합니다: +- 테이블 뷰 통합 +- 필드 설정 +- CRUD 연동 +- 필터링 및 검색 +""" + +from datetime import date +from typing import List, Any, Optional, Type +from PySide6.QtWidgets import ( + QWidget, QVBoxLayout, QHBoxLayout, QTableWidget, QTableWidgetItem, + QHeaderView, QPushButton, QLineEdit, QMenu, QAbstractItemView +) +from PySide6.QtCore import Qt, Signal, QPoint +from PySide6.QtGui import QAction +import json + +from .base_widget import BaseWidget +from core.logger import get_logger +from database.crud import CRUDManager +from database.models import BaseModel, SectionBase + +# 로거 설정 +logger = get_logger(__name__) + + +class FieldConfig: + """ + 필드 설정 클래스 + + 섹션 테이블의 각 필드(컬럼) 설정을 정의합니다. + + Attributes: + name: 필드 이름 (DB 컬럼명) + label: 표시 레이블 + width: 컬럼 너비 + required: 필수 여부 + visible: 표시 여부 + editable: 편집 가능 여부 + field_type: 필드 타입 (text, date, time, checkbox, dropdown, button) + options: 드롭다운 옵션 (field_type이 dropdown인 경우) + """ + + def __init__( + self, + name: str, + label: str, + width: int = 100, + required: bool = False, + visible: bool = True, + editable: bool = True, + field_type: str = "text", + options: List[str] = None, + display_format: str = None + ): + self.name = name + self.label = label + self.width = width + self.required = required + self.visible = visible + self.editable = editable + self.field_type = field_type + self.options = options or [] + self.display_format = display_format # 표시형식 (예: "full", "short", "month_day") + + +class BaseSection(BaseWidget): + """ + 기본 섹션 클래스 + + 모든 섹션(지시, 고장, 작업, 기타)이 상속받는 기반 클래스입니다. + 테이블 기반의 데이터 표시 및 CRUD 기능을 제공합니다. + + Attributes: + table_name: 데이터베이스 테이블 이름 + model_class: 모델 클래스 + fields: 필드 설정 리스트 + crud: CRUD 관리자 + + Examples: + >>> class InstructionSection(BaseSection): + ... def __init__(self, parent=None): + ... super().__init__(parent, "instructions", Instruction) + ... self.setup_fields() + """ + + # 시그널 + record_selected = Signal(int) # 레코드 ID + record_double_clicked = Signal(int) # 레코드 ID + data_refreshed = Signal() + + def __init__( + self, + parent=None, + table_name: str = "", + model_class: Type[SectionBase] = None + ): + super().__init__(parent) + + self.table_name = table_name + self.model_class = model_class + self.fields: List[FieldConfig] = [] + self.crud = CRUDManager() + self.current_records: List[BaseModel] = [] + self._current_team = self.config.current_team + self._section_name = self._get_section_name() # 섹션 이름 (지시, 고장, 작업, 기타) + + # 기본 필드 설정 + self._setup_default_fields() + + # UI 설정 + self._setup_section_ui() + + # 시그널 연결 + self._connect_signals() + + logger.info(f"섹션 초기화: {table_name}") + + def _post_init(self): + """초기화 후 처리 (자식 클래스의 _setup_fields 후 호출)""" + # 저장된 필드 설정 로드 + self._load_field_settings() + + def _setup_default_fields(self): + """기본 필드 설정 (모든 섹션 공통)""" + self.fields = [ + FieldConfig("created_date", "생성일", width=100, required=True, editable=False), + FieldConfig("created_team", "생성팀", width=80, required=True, editable=False), + ] + + # 설정에서 필드 표시 여부 읽어오기 + self._load_field_visibility() + + def _load_field_visibility(self): + """ + 설정에서 필드 표시 여부 읽어오기 + + 각 필드의 visible 속성을 설정에서 읽어와서 업데이트합니다. + """ + # 기본적으로 모든 필드는 표시됨 + # 필요시 설정에서 읽어와서 업데이트할 수 있음 + pass + + def _load_field_settings(self): + """저장된 필드 설정 로드""" + if not self._section_name: + return + + try: + # 저장된 설정을 필드에 적용 + self.config.apply_field_settings_to_fields( + self._current_team, + self._section_name, + self.fields + ) + logger.debug(f"필드 설정 로드 완료: {self._section_name}") + except Exception as e: + logger.error(f"필드 설정 로드 실패: {e}") + + def _get_section_name(self) -> str: + """ + 섹션 이름 반환 + + table_name을 기반으로 한글 섹션 이름을 반환합니다. + + Returns: + 섹션 이름 (지시, 고장, 작업, 기타) + """ + name_map = { + "instructions": "지시", + "faults": "고장", + "works": "작업", + "miscs": "기타", + } + return name_map.get(self.table_name, self.table_name) + + def _setup_section_ui(self): + """섹션 UI 설정""" + layout = QVBoxLayout(self) + layout.setContentsMargins(0, 0, 0, 0) + layout.setSpacing(8) + + # 툴바 + self._create_toolbar(layout) + + # 테이블 + self._create_table(layout) + + def _create_toolbar(self, layout: QVBoxLayout): + """툴바 생성""" + toolbar = QWidget() + toolbar_layout = QHBoxLayout(toolbar) + toolbar_layout.setContentsMargins(0, 0, 0, 0) + toolbar_layout.setSpacing(8) + + # 추가 버튼 + self.add_btn = QPushButton("+ 추가") + self.add_btn.setObjectName("addButton") + self.add_btn.setCursor(Qt.PointingHandCursor) + self.add_btn.clicked.connect(self.on_add_clicked) + toolbar_layout.addWidget(self.add_btn) + + # 새로고침 버튼 + self.refresh_btn = QPushButton("↻ 새로고침") + self.refresh_btn.setCursor(Qt.PointingHandCursor) + self.refresh_btn.clicked.connect(self.refresh_data) + toolbar_layout.addWidget(self.refresh_btn) + + toolbar_layout.addStretch() + + # 검색 입력 + self.search_input = QLineEdit() + self.search_input.setPlaceholderText("검색...") + self.search_input.setFixedWidth(200) + self.search_input.textChanged.connect(self.on_search_changed) + toolbar_layout.addWidget(self.search_input) + + # 필드 설정 저장 버튼 + self.field_btn = QPushButton("💾 필드저장") + self.field_btn.setCursor(Qt.PointingHandCursor) + self.field_btn.setToolTip("현재 필드 설정(표시여부, 너비, 표시형식)을 저장합니다.\n우클릭으로 필드 표시/숨김, 드래그로 너비 조정 후 저장하세요.") + self.field_btn.clicked.connect(self.save_field_settings) + toolbar_layout.addWidget(self.field_btn) + + # 기록보기 버튼 + self.history_btn = QPushButton("📋 기록보기") + self.history_btn.setCursor(Qt.PointingHandCursor) + self.history_btn.clicked.connect(self.show_history_dialog) + toolbar_layout.addWidget(self.history_btn) + + layout.addWidget(toolbar) + + self._apply_toolbar_style() + + def _apply_toolbar_style(self): + """툴바 스타일 적용""" + theme = self.config.theme + + if theme == 'dark': + btn_bg = "#334155" + btn_hover = "#475569" + input_bg = "#1e293b" + input_border = "#475569" + text_color = "#f8fafc" + primary_bg = "#3b82f6" + primary_hover = "#2563eb" + else: + btn_bg = "#e2e8f0" + btn_hover = "#cbd5e1" + input_bg = "#ffffff" + input_border = "#e2e8f0" + text_color = "#1e293b" + primary_bg = "#3b82f6" + primary_hover = "#2563eb" + + self.setStyleSheet(f""" + QPushButton {{ + background-color: {btn_bg}; + color: {text_color}; + border: none; + border-radius: 6px; + padding: 8px 16px; + font-weight: 500; + }} + QPushButton:hover {{ + background-color: {btn_hover}; + }} + + #addButton {{ + background-color: {primary_bg}; + color: white; + }} + #addButton:hover {{ + background-color: {primary_hover}; + }} + + QLineEdit {{ + background-color: {input_bg}; + color: {text_color}; + border: 1px solid {input_border}; + border-radius: 6px; + padding: 8px 12px; + }} + QLineEdit:focus {{ + border-color: {primary_bg}; + }} + """) + + def _create_table(self, layout: QVBoxLayout): + """테이블 생성""" + self.table = QTableWidget() + self.table.setObjectName("sectionTable") + + # 테이블 설정 + self.table.setSelectionBehavior(QAbstractItemView.SelectRows) + self.table.setSelectionMode(QAbstractItemView.SingleSelection) + self.table.setAlternatingRowColors(True) + self.table.setShowGrid(False) + self.table.setContextMenuPolicy(Qt.CustomContextMenu) + + # 행 높이 설정 (드래그로 조정 가능하게) + self.table.verticalHeader().setVisible(True) # 행 헤더 표시 (드래그 조정용) + self.table.verticalHeader().setDefaultSectionSize(40) + self.table.verticalHeader().setMinimumSectionSize(36) + self.table.verticalHeader().setSectionResizeMode(QHeaderView.Interactive) # 드래그로 조정 가능 + self.table.verticalHeader().setSectionsMovable(False) # 행 이동 비활성화 + + # 편집 트리거 비활성화 (더블클릭 시 특정 필드만 편집 가능하게) + self.table.setEditTriggers(QAbstractItemView.NoEditTriggers) + + # 현재 편집 중인 셀 정보 + self._editing_cell = None # (row, col) 튜플 + + # 헤더 설정 + header = self.table.horizontalHeader() + header.setStretchLastSection(True) + header.setSectionResizeMode(QHeaderView.Interactive) + header.setContextMenuPolicy(Qt.CustomContextMenu) + header.customContextMenuRequested.connect(self._show_header_context_menu) + header.sectionEntered.connect(self._on_header_section_entered) + header.sectionResized.connect(self._on_column_resized) + + # 시그널 연결 + self.table.itemSelectionChanged.connect(self._on_selection_changed) + self.table.itemDoubleClicked.connect(self._on_double_clicked) + self.table.customContextMenuRequested.connect(self._show_context_menu) + self.table.cellChanged.connect(self._on_cell_changed) + + layout.addWidget(self.table) + + self._apply_table_style() + + def _apply_table_style(self): + """테이블 스타일 적용""" + theme = self.config.theme + + if theme == 'dark': + bg_color = "#0f172a" + alt_bg = "#1e293b" + header_bg = "#334155" + text_color = "#f8fafc" + selected_bg = "#3b82f6" + border_color = "#334155" + gridline_color = "#475569" # 다크 테마용 구분선 색상 + else: + bg_color = "#ffffff" + alt_bg = "#f8fafc" + header_bg = "#e2e8f0" + text_color = "#1e293b" + selected_bg = "#3b82f6" + border_color = "#e2e8f0" + gridline_color = "#cbd5e1" # 라이트 테마용 구분선 색상 + + self.table.setStyleSheet(f""" + QTableWidget {{ + background-color: {bg_color}; + color: {text_color}; + border: 1px solid {border_color}; + border-radius: 8px; + gridline-color: {gridline_color}; + }} + + QTableWidget::item {{ + padding: 8px; + border-bottom: 1px solid {border_color}; + border-right: 1px solid {gridline_color}; + }} + + QTableWidget::item:selected {{ + background-color: {selected_bg}; + color: white; + border-right: 1px solid {gridline_color}; + }} + + QTableWidget::item:alternate {{ + background-color: {alt_bg}; + }} + + QHeaderView::section {{ + background-color: {header_bg}; + color: {text_color}; + padding: 10px; + border: none; + border-bottom: 2px solid {border_color}; + border-right: 1px solid {gridline_color}; + font-weight: bold; + }} + + QHeaderView::section:last {{ + border-right: none; + }} + + /* 위젯이 있는 셀에도 구분선 적용 */ + QTableWidget QWidget {{ + border-right: 1px solid {gridline_color}; + }} + """) + + def _connect_signals(self): + """시그널 연결""" + # 데이터 변경 시그널 + self.signals.data_changed.connect(self._on_data_changed) + + # 팀 변경 시그널 + self.signals.team_changed.connect(self._on_team_changed) + + # 필드 설정 변경 시그널 + self.signals.data_changed.connect(self._on_field_settings_changed) + + # ======================================================================== + # 데이터 관리 + # ======================================================================== + + def refresh_data(self): + """데이터 새로고침""" + self.load_data() + self.data_refreshed.emit() + logger.debug(f"섹션 데이터 새로고침: {self.table_name}") + + def load_data(self, **filters): + """ + 데이터 로드 + + Args: + **filters: 필터 조건 + """ + try: + # 데이터 조회 (자식 클래스에서 구현) + self.current_records = self._fetch_data(**filters) + + # 테이블 업데이트 + self._update_table() + + except Exception as e: + logger.error(f"데이터 로드 실패: {e}") + self.show_error(f"데이터 로드 실패: {e}") + + def _fetch_data(self, **filters) -> List[BaseModel]: + """ + 데이터 조회 (자식 클래스에서 오버라이드) + + Returns: + 모델 인스턴스 리스트 + """ + # 기본 구현: 전체 조회 + _ = filters # 자식 클래스에서 사용 + return [] + + def _update_table(self): + """테이블 업데이트""" + self.table.setRowCount(0) + + # 표시할 필드만 필터링 + visible_fields = [f for f in self.fields if f.visible] + + # 컬럼 설정 + self.table.setColumnCount(len(visible_fields)) + + # 헤더 아이템 설정 (툴팁 포함) + for i, field in enumerate(visible_fields): + # 헤더 아이템 생성 + header_item = QTableWidgetItem(field.label) + header_item.setToolTip(f"우클릭하여 '{field.label}' 필드를 숨기거나 표시할 수 있습니다.") + self.table.setHorizontalHeaderItem(i, header_item) + + # 컬럼 너비 설정 + self.table.setColumnWidth(i, field.width) + + # 데이터 채우기 (완료된 레코드는 제외) + for record in self.current_records: + # 완료된 레코드는 섹션에서 숨김 (DB에는 유지) + if hasattr(record, 'is_completed') and record.is_completed: + continue + + row = self.table.rowCount() + self.table.insertRow(row) + + max_height = int(40 * 1.15) # 기본 높이 15% 증가 (46px) + for col, field in enumerate(visible_fields): + value = getattr(record, field.name, "") + + # 완료 필드는 버튼 위젯으로 표시 + if field.name == "is_completed": + self._set_completion_button(row, col, record) + else: + item = self._create_table_item(field, value, record) + self.table.setItem(row, col, item) + + # 셀 내용에 따른 높이 계산 (특히 내용 필드) + if item.text(): + text = item.text() + lines = text.count('\n') + 1 + + # 폰트 메트릭을 사용한 정확한 높이 계산 + font_metrics = self.table.fontMetrics() + text_width = font_metrics.horizontalAdvance(text) + col_width = self.table.columnWidth(col) + + # 내용 필드인 경우 더 자세히 계산 + is_content_field = field.name in ['fault_content', 'action_taken', 'instruction_content', + 'work_details', 'report_content', 'content'] + + if is_content_field: + # 내용 필드는 더 넓은 공간 필요 + if col_width > 0: + # 줄바꿈이 필요한 경우 + chars_per_line = max(1, col_width // font_metrics.averageCharWidth()) + lines = max(lines, (len(text) // chars_per_line) + 1) + + # 줄바꿈이 필요한 경우 + elif text_width > col_width and col_width > 0: + lines = max(lines, (text_width // col_width) + 1) + + # 각 줄당 높이 계산 (패딩 포함) + line_height = font_metrics.height() + 16 # 폰트 높이 + 패딩 + calculated_height = max(int(40 * 1.15), lines * line_height) # 최소 높이도 15% 증가 + max_height = max(max_height, calculated_height) + + # 행 높이 설정 (내용에 맞게 자동 조정) + self.table.setRowHeight(row, max_height) + + # 레코드 ID 저장 + self.table.item(row, 0).setData(Qt.UserRole, record.id) + + def _create_table_item( + self, + field: FieldConfig, + value: Any, + record: BaseModel + ) -> QTableWidgetItem: + """ + 테이블 아이템 생성 + + Args: + field: 필드 설정 + value: 필드 값 + record: 레코드 (자식 클래스에서 사용 가능) + + Returns: + QTableWidgetItem + """ + # 팀확인 필드는 특별 처리 + if field.name == "team_confirmations": + # 확인한 팀만 표시 + try: + confirmations = json.loads(value) if isinstance(value, str) else value + if not isinstance(confirmations, dict): + confirmations = {} + confirmed_teams = [team for team, confirmed in confirmations.items() if confirmed] + display_value = ", ".join(confirmed_teams) if confirmed_teams else "-" + except (json.JSONDecodeError, TypeError): + display_value = "-" + else: + # 값 포맷팅 + display_value = self._format_value(field, value) + + item = QTableWidgetItem(display_value) + item.setTextAlignment(Qt.AlignLeft | Qt.AlignVCenter) # 왼쪽 정렬로 변경 (텍스트 가독성) + + # 텍스트 줄바꿈 활성화 (긴 텍스트 표시) + item.setTextAlignment(item.textAlignment() | Qt.TextWordWrap) + + # 편집 불가능 설정 + if not field.editable: + item.setFlags(item.flags() & ~Qt.ItemIsEditable) + + # 레코드 정보 저장 (팀확인 위젯 생성 시 사용) + if field.name == "team_confirmations": + item.setData(Qt.UserRole + 1, record) # 레코드 저장 + + return item + + def _format_value(self, field: FieldConfig, value: Any) -> str: + """ + 값 포맷팅 + + Args: + field: 필드 설정 + value: 필드 값 + + Returns: + 포맷된 문자열 + """ + if value is None: + return "" + + if field.field_type == "date": + if isinstance(value, date): + # 표시형식에 따라 포맷 변경 + if field.display_format == "short": # 26-01-04 + return value.strftime("%y-%m-%d") + elif field.display_format == "month_day": # 01-04 + return value.strftime("%m-%d") + else: # 기본값 또는 "full": 2026-01-04 + return value.strftime("%Y-%m-%d") + elif isinstance(value, str) and value: + # 문자열인 경우 파싱 후 포맷 적용 + try: + from datetime import datetime + parsed_date = datetime.strptime(value[:10], "%Y-%m-%d").date() + if field.display_format == "short": # 26-01-04 + return parsed_date.strftime("%y-%m-%d") + elif field.display_format == "month_day": # 01-04 + return parsed_date.strftime("%m-%d") + else: # 기본값 또는 "full": 2026-01-04 + return parsed_date.strftime("%Y-%m-%d") + except Exception: + return value[:10] # 파싱 실패 시 원본 반환 + + elif field.field_type == "time": + if hasattr(value, 'strftime'): + return value.strftime("%H:%M") + elif isinstance(value, str) and value: + return value[:5] # HH:MM + + elif field.field_type == "checkbox": + return "✓" if value else "" + + elif field.name == "is_completed": + # 완료 필드는 버튼으로 표시되므로 여기서는 빈 문자열 반환 + return "" + + return str(value) + + # ======================================================================== + # 이벤트 핸들러 + # ======================================================================== + + def _on_selection_changed(self): + """선택 변경 이벤트""" + selected_items = self.table.selectedItems() + if not selected_items: + return + + row = selected_items[0].row() + + # 첫 번째 셀이 아이템인 경우 + first_item = self.table.item(row, 0) + if first_item: + record_id = first_item.data(Qt.UserRole) + if record_id: + self.record_selected.emit(record_id) + else: + # 첫 번째 셀이 위젯인 경우 + widget = self.table.cellWidget(row, 0) + if widget: + record_id = widget.property("record_id") + if record_id: + self.record_selected.emit(record_id) + + def _on_double_clicked(self, item: QTableWidgetItem): + """더블클릭 이벤트 - 해당 필드만 편집 가능하게 변경""" + row = item.row() + col = item.column() + + # 레코드 ID 가져오기 + record_id = None + first_item = self.table.item(row, 0) + if first_item: + record_id = first_item.data(Qt.UserRole) + else: + widget = self.table.cellWidget(row, 0) + if widget: + record_id = widget.property("record_id") + + if not record_id: + return + + # 현재 필드 정보 확인 + visible_fields = [f for f in self.fields if f.visible] + if col >= len(visible_fields): + return + + field = visible_fields[col] + + # 레코드 찾기 + record = None + for r in self.current_records: + if r.id == record_id: + record = r + break + + if not record: + return + + # 팀확인 필드인 경우 다이얼로그 표시 + if field.name == "team_confirmations": + self._show_team_confirmation_dialog(record_id, record) + return + + # 완료 필드인 경우 - 버튼이 있으면 버튼 클릭으로만 처리 + # (더블클릭으로는 처리하지 않음) + if field.name == "is_completed": + return + + # 편집 불가능한 필드인 경우 다이얼로그로 전체 편집 + if not field.editable: + self.record_double_clicked.emit(record_id) + self.on_edit_clicked(record_id) + return + + # 편집 가능한 필드인 경우 해당 셀만 편집 모드로 전환 + self._enable_cell_editing(row, col, field) + + def _show_context_menu(self, position: QPoint): + """컨텍스트 메뉴 표시""" + menu = QMenu(self) + + # 편집 + edit_action = QAction("편집", self) + edit_action.triggered.connect(lambda: self._context_edit()) + menu.addAction(edit_action) + + # 삭제 + delete_action = QAction("삭제", self) + delete_action.triggered.connect(lambda: self._context_delete()) + menu.addAction(delete_action) + + menu.exec(self.table.viewport().mapToGlobal(position)) + + def _context_edit(self): + """컨텍스트 메뉴 - 편집""" + selected = self.get_selected_record_id() + if selected: + self.on_edit_clicked(selected) + + def _context_delete(self): + """컨텍스트 메뉴 - 삭제""" + selected = self.get_selected_record_id() + if selected: + self.on_delete_clicked(selected) + + def _on_data_changed(self, table_name: str): + """데이터 변경 이벤트""" + if table_name == self.table_name: + self.refresh_data() + + def _on_field_settings_changed(self, table_name: str): + """필드 설정 변경 이벤트""" + if table_name == "field_settings": + # 필드 설정 다시 로드 + self._load_field_settings() + # 테이블 업데이트 + self.refresh_data() + + def _on_team_changed(self, team: str): + """팀 변경 이벤트""" + self._current_team = team + + # 필드 설정 다시 로드 + self._load_field_settings() + + # 테이블 업데이트 + self.refresh_data() + + def on_search_changed(self, text: str): + """검색어 변경 (자식 클래스에서 오버라이드)""" + _ = text # 자식 클래스에서 사용 + + def _enable_cell_editing(self, row: int, col: int, field: 'FieldConfig'): + """ + 특정 셀을 편집 모드로 전환 + + Args: + row: 행 인덱스 + col: 열 인덱스 + field: 필드 설정 + """ + # 이전 편집 중인 셀이 있으면 편집 해제 + if self._editing_cell: + prev_row, prev_col = self._editing_cell + prev_item = self.table.item(prev_row, prev_col) + if prev_item: + prev_item.setFlags(prev_item.flags() & ~Qt.ItemIsEditable) + + # 해당 셀 편집 가능하게 설정 + item = self.table.item(row, col) + if item: + item.setFlags(item.flags() | Qt.ItemIsEditable) + self._editing_cell = (row, col) + + # 행 높이 증가 (편집 시 글자가 잘 보이도록) + current_height = self.table.rowHeight(row) + self.table.setRowHeight(row, max(current_height, 44)) + + # 편집 시작 + self.table.editItem(item) + + logger.debug(f"셀 편집 모드 활성화: row={row}, col={col}, field={field.name}") + + def _on_cell_changed(self, row: int, col: int): + """ + 셀 값 변경 시 호출 + + Args: + row: 행 인덱스 + col: 열 인덱스 + """ + # 편집 중인 셀이 아니면 무시 + if self._editing_cell != (row, col): + return + + item = self.table.item(row, col) + if not item: + return + + # 레코드 ID 가져오기 + record_id = None + first_item = self.table.item(row, 0) + if first_item: + record_id = first_item.data(Qt.UserRole) + else: + widget = self.table.cellWidget(row, 0) + if widget: + record_id = widget.property("record_id") + if not record_id: + return + + # 필드 정보 가져오기 + visible_fields = [f for f in self.fields if f.visible] + if col >= len(visible_fields): + return + + field = visible_fields[col] + new_value = item.text() + + # 시그널 차단 (재귀 호출 방지) + self.table.blockSignals(True) + + try: + # 셀 편집 해제 + item.setFlags(item.flags() & ~Qt.ItemIsEditable) + self._editing_cell = None + + # 행 높이 원복 (15% 증가된 기본 높이) + self.table.setRowHeight(row, int(40 * 1.15)) + finally: + # 시그널 차단 해제 + self.table.blockSignals(False) + + # 값 업데이트 (자식 클래스에서 구현) + self._update_field_value(record_id, field.name, new_value) + + logger.debug(f"셀 값 변경: record_id={record_id}, field={field.name}, value={new_value}") + + def _update_field_value(self, record_id: int, field_name: str, value: str): + """ + 필드 값 업데이트 (자식 클래스에서 오버라이드) + + Args: + record_id: 레코드 ID + field_name: 필드 이름 + value: 새 값 + """ + # 기본 구현: 자식 클래스에서 오버라이드 + _ = (record_id, field_name, value) # 자식 클래스에서 사용 + + # ======================================================================== + # CRUD 액션 + # ======================================================================== + + def on_add_clicked(self): + """추가 버튼 클릭 (자식 클래스에서 오버라이드)""" + logger.debug("추가 버튼 클릭") + + def on_edit_clicked(self, record_id: int): + """편집 버튼 클릭 (자식 클래스에서 오버라이드)""" + logger.debug(f"편집: {record_id}") + + def on_delete_clicked(self, record_id: int): + """삭제 버튼 클릭 (자식 클래스에서 오버라이드)""" + from .base_dialog import ConfirmDialog + + if ConfirmDialog.ask(self, "삭제 확인", "정말 삭제하시겠습니까?"): + self._delete_record(record_id) + + def _delete_record(self, record_id: int): + """레코드 삭제""" + # 자식 클래스에서 구현 + pass + + # ======================================================================== + # 유틸리티 + # ======================================================================== + + def get_selected_record_id(self) -> Optional[int]: + """선택된 레코드 ID 반환""" + selected_items = self.table.selectedItems() + if not selected_items: + return None + + row = selected_items[0].row() + + # 첫 번째 셀이 아이템인 경우 + first_item = self.table.item(row, 0) + if first_item: + return first_item.data(Qt.UserRole) + + # 첫 번째 셀이 위젯인 경우 + widget = self.table.cellWidget(row, 0) + if widget: + return widget.property("record_id") + + return None + + def get_selected_record(self) -> Optional[BaseModel]: + """선택된 레코드 반환""" + record_id = self.get_selected_record_id() + if record_id: + for record in self.current_records: + if record.id == record_id: + return record + return None + + def save_field_settings(self): + """현재 필드 설정(표시여부, 너비, 표시형식)을 저장""" + from core.config import FieldSetting + + if not self._section_name: + return + + try: + field_settings = [] + visible_fields = [f for f in self.fields if f.visible] + + for field in self.fields: + # 현재 테이블에서 너비 가져오기 (표시된 필드만) + width = field.width + if field.visible: + try: + col_index = visible_fields.index(field) + width = self.table.columnWidth(col_index) + except (ValueError, IndexError): + pass + + field_setting = FieldSetting( + name=field.name, + visible=field.visible, + width=width, + display_format=field.display_format + ) + field_settings.append(field_setting) + + # 설정 저장 + self.config.save_field_settings( + self._current_team, + self._section_name, + field_settings + ) + + # 필드 객체에도 너비 업데이트 + for field in self.fields: + if field.visible: + try: + col_index = visible_fields.index(field) + field.width = self.table.columnWidth(col_index) + except (ValueError, IndexError): + pass + + logger.info(f"필드 설정 저장 완료: {self._section_name} ({self._current_team})") + self.signals.status_message.emit(f"'{self._section_name}' 필드 설정이 저장되었습니다.", 3000) + + except Exception as e: + logger.error(f"필드 설정 저장 실패: {e}") + self.show_error(f"필드 설정 저장 실패: {e}") + + def set_field_visible(self, field_name: str, visible: bool): + """필드 표시/숨김 설정""" + for field in self.fields: + if field.name == field_name: + field.visible = visible + break + + self._update_table() + + def set_field_display_format(self, field_name: str, display_format: str): + """필드 표시형식 설정""" + for field in self.fields: + if field.name == field_name: + field.display_format = display_format + break + + self._update_table() + + def _on_column_resized(self, logical_index: int, old_size: int, new_size: int): + """컬럼 너비 변경 시 호출""" + # 너비가 실제로 변경된 경우에만 처리 + if old_size == new_size: + return + + visible_fields = [f for f in self.fields if f.visible] + if logical_index < len(visible_fields): + field = visible_fields[logical_index] + field.width = new_size + logger.debug(f"컬럼 너비 변경: {field.label} = {new_size}px") + + def _on_header_section_entered(self, logical_index: int): + """헤더 섹션 호버 시 툴팁 표시""" + visible_fields = [f for f in self.fields if f.visible] + if logical_index < len(visible_fields): + field = visible_fields[logical_index] + header_item = self.table.horizontalHeaderItem(logical_index) + if header_item: + header_item.setToolTip(f"우클릭하여 '{field.label}' 필드를 숨기거나 표시할 수 있습니다.") + + def _show_header_context_menu(self, position): + """헤더 우클릭 시 컨텍스트 메뉴 표시""" + header = self.table.horizontalHeader() + col = header.logicalIndexAt(position) + + if col < 0: + return + + # 표시된 필드 목록 + visible_fields = [f for f in self.fields if f.visible] + if col >= len(visible_fields): + return + + field = visible_fields[col] + + # 숨긴 필드 목록 + hidden_fields = [f for f in self.fields if not f.visible] + + # 컨텍스트 메뉴 생성 + menu = QMenu(self) + + # 현재 필드 숨기기 + hide_action = QAction(f"{field.label} 숨기기", self) + hide_action.triggered.connect(lambda: self.set_field_visible(field.name, False)) + menu.addAction(hide_action) + + # 표시형식 설정 (발생일 필드만) + if field.field_type == "date" and field.name == "occurrence_date": + menu.addSeparator() + format_submenu = QMenu("표시형식", self) + + # 전체 날짜: 2026-01-04 + full_action = QAction("2026-01-04", self) + full_action.setCheckable(True) + full_action.setChecked(field.display_format is None or field.display_format == "full") + full_action.triggered.connect( + lambda: self.set_field_display_format(field.name, "full") + ) + format_submenu.addAction(full_action) + + # 짧은 형식: 26-01-04 + short_action = QAction("26-01-04", self) + short_action.setCheckable(True) + short_action.setChecked(field.display_format == "short") + short_action.triggered.connect( + lambda: self.set_field_display_format(field.name, "short") + ) + format_submenu.addAction(short_action) + + # 월-일만: 01-04 + month_day_action = QAction("01-04(일)", self) + month_day_action.setCheckable(True) + month_day_action.setChecked(field.display_format == "month_day") + month_day_action.triggered.connect( + lambda: self.set_field_display_format(field.name, "month_day") + ) + format_submenu.addAction(month_day_action) + + menu.addMenu(format_submenu) + + # 숨긴 필드 보기 (하위 메뉴) + if hidden_fields: + menu.addSeparator() + show_submenu = QMenu("숨긴 필드 보기", self) + + for hidden_field in hidden_fields: + show_action = QAction(hidden_field.label, self) + show_action.triggered.connect( + lambda checked=False, name=hidden_field.name: self.set_field_visible(name, True) + ) + show_submenu.addAction(show_action) + + menu.addMenu(show_submenu) + + # 메뉴 표시 + global_pos = header.mapToGlobal(position) + menu.exec(global_pos) + + def show_history_dialog(self): + """기록보기 다이얼로그 표시""" + from ui.dialogs.history_dialog import HistoryDialog + dialog = HistoryDialog(self, self.table_name, self.model_class) + dialog.exec() + + def _show_team_confirmation_dialog(self, record_id: int, record: BaseModel): + """팀확인 다이얼로그 표시""" + from ui.dialogs.team_confirmation_dialog import TeamConfirmationDialog + + dialog = TeamConfirmationDialog(self, record) + if dialog.exec() == 1: # QDialog.Accepted + confirmations = dialog.get_confirmations() + # DB 업데이트 + self._update_team_confirmations(record_id, confirmations) + self.refresh_data() + + def _update_team_confirmations(self, record_id: int, confirmations: dict): + """팀확인 상태 업데이트""" + # 자식 클래스에서 구현 + pass + + def _handle_completion(self, record_id: int, record: BaseModel): + """완료 처리""" + # 모든 팀이 확인되었는지 확인 + if hasattr(record, 'all_teams_confirmed'): + if not record.all_teams_confirmed(): + self.show_error("모든 팀이 확인해야 완료할 수 있습니다.") + return + + # 완료 처리 + self._mark_as_completed(record_id) + self.refresh_data() + + def _mark_as_completed(self, record_id: int): + """레코드를 완료로 표시""" + # 자식 클래스에서 구현 + pass + + def _set_completion_button(self, row: int, col: int, record: BaseModel): + """완료 라벨 설정 (ClickableLabel 사용, 공간 효율 최대화)""" + from ui.widgets.clickableLabel import ClickableLabel + from PySide6.QtWidgets import QWidget, QHBoxLayout, QToolTip + from core.constants import TEAMS + import json + + # 완료 가능 조건 체크 및 비활성화 이유 수집 + incomplete_reasons = [] + + # 1. 모든 팀이 확인되었는지 확인 + all_confirmed = False + confirmed_count = 0 + if hasattr(record, 'team_confirmations'): + try: + confirmations = json.loads(record.team_confirmations) if isinstance(record.team_confirmations, str) else record.team_confirmations + if isinstance(confirmations, dict): + confirmed_count = sum(1 for team in TEAMS if confirmations.get(team, False)) + all_confirmed = confirmed_count == len(TEAMS) + except (json.JSONDecodeError, TypeError): + pass + + if not all_confirmed: + not_confirmed = len(TEAMS) - confirmed_count + incomplete_reasons.append(f"모든 팀이 확인하지 않았습니다. ({not_confirmed}팀 미확인)") + + # 2. 조치팀이 설정되어 있는지 확인 (고장 섹션만) + has_action_team = True + if hasattr(record, 'action_team'): + action_team = getattr(record, 'action_team', None) + has_action_team = bool(action_team and str(action_team).strip()) + if not has_action_team: + incomplete_reasons.append("조치팀이 설정되지 않았습니다.") + + # 3. 조치내용이 있는지 확인 (고장 섹션만) + has_action_content = True + if hasattr(record, 'action_content'): + action_content = getattr(record, 'action_content', None) + has_action_content = bool(action_content and str(action_content).strip()) + if not has_action_content: + incomplete_reasons.append("조치내용이 입력되지 않았습니다.") + + # 완료 가능 여부 판단 + can_complete = all_confirmed and has_action_team and has_action_content + + theme = self.config.theme + unified_color = "#64748b" # 통일된 회색 계열 + + # ClickableLabel 생성 - "✓" 또는 "-" 표시 + display_text = "✓" if can_complete else "-" + label = ClickableLabel(display_text, enable_hover=True) + label.setAlignment(Qt.AlignCenter) + + # 색상 설정 + if can_complete: + bg_color = "#22c55e" # 초록색 (완료 가능) + text_color = "#ffffff" + else: + bg_color = unified_color + text_color = "#94a3b8" if theme == 'dark' else "#cbd5e1" + + # 통일된 스타일 적용 (다른 필드와 동일하게) + if theme == 'dark': + label.setStyleSheet(f""" + QLabel {{ + background-color: {bg_color}; + color: {text_color}; + border: 1px solid rgba(255,255,255,0.2); + border-radius: 0px; + padding: 0px; + margin: 0px; + font-weight: 600; + font-size: 14px; + }} + QLabel:hover {{ + background-color: {bg_color}; + border-color: rgba(255,255,255,0.4); + }} + """) + else: + label.setStyleSheet(f""" + QLabel {{ + background-color: {bg_color}; + color: {text_color}; + border: 1px solid rgba(0,0,0,0.1); + border-radius: 0px; + padding: 0px; + margin: 0px; + font-weight: 600; + font-size: 14px; + }} + QLabel:hover {{ + background-color: {bg_color}; + border-color: rgba(0,0,0,0.2); + }} + """) + + # 툴팁 설정 (비활성화 이유 표시) + if incomplete_reasons: + # 번호를 매겨 이유 표시 + tooltip_lines = ["[완료 불가 사유]"] + for i, reason in enumerate(incomplete_reasons, 1): + tooltip_lines.append(f"{i}. {reason}") + label.setToolTip("\n".join(tooltip_lines)) + else: + label.setToolTip("클릭하여 완료 처리") + + # 클릭 이벤트 연결 + if can_complete: + label.clicked.connect(lambda r=record: self._handle_completion(r.id, r)) + else: + # 비활성화 상태에서 클릭 시 툴팁 표시 + def show_incomplete_popup(): + from PySide6.QtCore import QPoint + from PySide6.QtGui import QCursor + QToolTip.showText(QCursor.pos(), label.toolTip(), label) + label.clicked.connect(show_incomplete_popup) + + # 레코드 정보 저장 + label.setProperty("record_id", record.id) + + # 컨테이너 위젯으로 감싸기 (여백 없이) + container = QWidget() + container_layout = QHBoxLayout(container) + container_layout.setContentsMargins(0, 0, 0, 0) + container_layout.setSpacing(0) + container_layout.addWidget(label) + + # 구분선 스타일 적용 + gridline_color = "#475569" if theme == 'dark' else "#cbd5e1" + container.setStyleSheet(f"border-right: 1px solid {gridline_color};") + + # 셀에 위젯 설정 + self.table.setCellWidget(row, col, container) + + diff --git a/ui/base/base_table.py b/ui/base/base_table.py new file mode 100644 index 0000000..e633923 --- /dev/null +++ b/ui/base/base_table.py @@ -0,0 +1,400 @@ +# -*- coding: utf-8 -*- +""" +기본 테이블 클래스 모듈 +커스텀 테이블 위젯의 기반 클래스를 정의합니다. + +이 모듈은 다음 기능을 제공합니다: +- 커스텀 스타일링 +- 팀 확인 체크박스 +- 편성 팝업 지원 +- 드래그 앤 드롭 +""" + +from typing import List, Dict, Any, Optional +from PySide6.QtWidgets import ( + QTableWidget, QTableWidgetItem, QHeaderView, + QWidget, QHBoxLayout, QCheckBox, QPushButton, + QAbstractItemView, QStyledItemDelegate +) +from PySide6.QtCore import Qt, Signal, QPoint, QRect +from PySide6.QtGui import QFont, QColor, QPainter, QBrush, QPen + +from core.logger import get_logger +from core.config import ConfigManager +from core.signals import GlobalSignals +from core.constants import TEAMS + +# 로거 설정 +logger = get_logger(__name__) + + +class TeamConfirmationWidget(QWidget): + """ + 팀 확인 체크박스 위젯 + + 각 팀의 확인 상태를 표시하는 체크박스 그룹입니다. + """ + + confirmation_changed = Signal(str, bool) # 팀명, 확인여부 + + def __init__(self, confirmations: Dict[str, bool] = None, parent=None): + super().__init__(parent) + + self.confirmations = confirmations or {team: False for team in TEAMS} + self.checkboxes: Dict[str, QCheckBox] = {} + + self._setup_ui() + + def _setup_ui(self): + """UI 설정""" + layout = QHBoxLayout(self) + layout.setContentsMargins(4, 2, 4, 2) + layout.setSpacing(2) + + for team in TEAMS: + checkbox = QCheckBox() + checkbox.setChecked(self.confirmations.get(team, False)) + checkbox.setToolTip(team) + checkbox.stateChanged.connect( + lambda state, t=team: self._on_state_changed(t, state) + ) + + # 팀 이니셜 라벨 + checkbox.setStyleSheet(f""" + QCheckBox {{ + spacing: 2px; + }} + QCheckBox::indicator {{ + width: 16px; + height: 16px; + }} + QCheckBox::indicator:checked {{ + background-color: #22c55e; + border-radius: 3px; + }} + QCheckBox::indicator:unchecked {{ + background-color: #64748b; + border-radius: 3px; + }} + """) + + layout.addWidget(checkbox) + self.checkboxes[team] = checkbox + + def _on_state_changed(self, team: str, state: int): + """체크박스 상태 변경""" + checked = state == Qt.Checked + self.confirmations[team] = checked + self.confirmation_changed.emit(team, checked) + + def set_confirmations(self, confirmations: Dict[str, bool]): + """확인 상태 설정""" + self.confirmations = confirmations + for team, checkbox in self.checkboxes.items(): + checkbox.blockSignals(True) + checkbox.setChecked(confirmations.get(team, False)) + checkbox.blockSignals(False) + + def get_confirmations(self) -> Dict[str, bool]: + """확인 상태 반환""" + return self.confirmations.copy() + + def all_confirmed(self) -> bool: + """모든 팀 확인 여부""" + return all(self.confirmations.values()) + + +class TrainNumberDelegate(QStyledItemDelegate): + """ + 편성번호 셀 델리게이트 + + 편성번호 위에 마우스를 올리면 최근 고장 목록 팝업을 표시합니다. + """ + + train_hovered = Signal(str, int, int) # 편성번호, x, y + train_left = Signal() + + def __init__(self, parent=None): + super().__init__(parent) + self.signals = GlobalSignals() + + def paint(self, painter: QPainter, option, index): + """셀 렌더링""" + super().paint(painter, option, index) + + # 값 가져오기 + value = index.data(Qt.DisplayRole) + if not value: + return + + # 작업 여부 확인 (노란 느낌표) + has_work = index.data(Qt.UserRole + 1) + if has_work: + self._draw_work_indicator(painter, option.rect) + + # 청소 유형 확인 + cleaning_type = index.data(Qt.UserRole + 2) + if cleaning_type == "중청소": + self._draw_cleaning_indicator(painter, option.rect, "medium") + elif cleaning_type == "대청소": + self._draw_cleaning_indicator(painter, option.rect, "large") + + def _draw_work_indicator(self, painter: QPainter, rect: QRect): + """작업 표시 (노란 느낌표)""" + painter.save() + + # 느낌표 위치 (오른쪽 상단) + x = rect.right() - 12 + y = rect.top() + 4 + + painter.setPen(QPen(QColor("#f59e0b"), 2)) + painter.setFont(QFont("Arial", 10, QFont.Bold)) + painter.drawText(x, y + 10, "!") + + painter.restore() + + def _draw_cleaning_indicator(self, painter: QPainter, rect: QRect, cleaning_type: str): + """청소 표시 (파란 네모 / 빨간 동그라미)""" + painter.save() + + # 표시 위치 (왼쪽 상단) + x = rect.left() + 2 + y = rect.top() + 2 + size = 12 + + if cleaning_type == "medium": + # 파란 네모 + painter.setPen(QPen(QColor("#3b82f6"), 2)) + painter.setBrush(Qt.NoBrush) + painter.drawRect(x, y, size, size) + elif cleaning_type == "large": + # 빨간 동그라미 + painter.setPen(QPen(QColor("#ef4444"), 2)) + painter.setBrush(Qt.NoBrush) + painter.drawEllipse(x, y, size, size) + + painter.restore() + + def editorEvent(self, event, model, option, index): + """에디터 이벤트 처리""" + from PySide6.QtCore import QEvent + + if event.type() == QEvent.MouseMove: + value = index.data(Qt.DisplayRole) + if value: + pos = event.globalPosition().toPoint() + self.train_hovered.emit(value, pos.x(), pos.y()) + + return super().editorEvent(event, model, option, index) + + +class BaseTable(QTableWidget): + """ + 기본 테이블 클래스 + + 모든 커스텀 테이블이 상속받는 기반 클래스입니다. + + Attributes: + config: 설정 관리자 + signals: 전역 시그널 + """ + + # 시그널 + row_selected = Signal(int) + row_double_clicked = Signal(int) + cell_edited = Signal(int, str, str) # row, column_name, new_value + + def __init__(self, parent=None): + super().__init__(parent) + + self.config = ConfigManager() + self.signals = GlobalSignals() + + self._setup_table() + self._apply_style() + + def _setup_table(self): + """테이블 설정""" + # 기본 설정 + self.setSelectionBehavior(QAbstractItemView.SelectRows) + self.setSelectionMode(QAbstractItemView.SingleSelection) + self.setAlternatingRowColors(True) + self.setShowGrid(False) + self.verticalHeader().setVisible(False) + + # 헤더 설정 + header = self.horizontalHeader() + header.setStretchLastSection(True) + header.setSectionResizeMode(QHeaderView.Interactive) + header.setDefaultAlignment(Qt.AlignCenter) + + # 행 높이 + self.verticalHeader().setDefaultSectionSize(40) + + # 시그널 연결 + self.itemSelectionChanged.connect(self._on_selection_changed) + self.itemDoubleClicked.connect(self._on_double_clicked) + self.itemChanged.connect(self._on_item_changed) + + def _apply_style(self): + """스타일 적용""" + theme = self.config.theme + + if theme == 'dark': + bg_color = "#0f172a" + alt_bg = "#1e293b" + header_bg = "#334155" + text_color = "#f8fafc" + selected_bg = "#3b82f6" + border_color = "#334155" + hover_bg = "#1e3a5f" + else: + bg_color = "#ffffff" + alt_bg = "#f8fafc" + header_bg = "#e2e8f0" + text_color = "#1e293b" + selected_bg = "#3b82f6" + border_color = "#e2e8f0" + hover_bg = "#dbeafe" + + self.setStyleSheet(f""" + QTableWidget {{ + background-color: {bg_color}; + color: {text_color}; + border: 1px solid {border_color}; + border-radius: 8px; + font-family: 'GmarketSans'; + font-size: 13px; + }} + + QTableWidget::item {{ + padding: 8px; + border-bottom: 1px solid {border_color}; + }} + + QTableWidget::item:selected {{ + background-color: {selected_bg}; + color: white; + }} + + QTableWidget::item:hover {{ + background-color: {hover_bg}; + }} + + QTableWidget::item:alternate {{ + background-color: {alt_bg}; + }} + + QHeaderView::section {{ + background-color: {header_bg}; + color: {text_color}; + padding: 12px 8px; + border: none; + border-bottom: 2px solid {border_color}; + font-weight: bold; + font-size: 13px; + }} + + QScrollBar:vertical {{ + background-color: {bg_color}; + width: 10px; + border-radius: 5px; + }} + + QScrollBar::handle:vertical {{ + background-color: {border_color}; + border-radius: 5px; + min-height: 20px; + }} + + QScrollBar::handle:vertical:hover {{ + background-color: {selected_bg}; + }} + """) + + def _on_selection_changed(self): + """선택 변경 이벤트""" + selected = self.selectedItems() + if selected: + self.row_selected.emit(selected[0].row()) + + def _on_double_clicked(self, item: QTableWidgetItem): + """더블클릭 이벤트""" + self.row_double_clicked.emit(item.row()) + + def _on_item_changed(self, item: QTableWidgetItem): + """아이템 변경 이벤트""" + column_name = self.horizontalHeaderItem(item.column()).text() + self.cell_edited.emit(item.row(), column_name, item.text()) + + def set_columns(self, columns: List[Dict[str, Any]]): + """ + 컬럼 설정 + + Args: + columns: 컬럼 설정 리스트 + [{"name": "id", "label": "ID", "width": 50}, ...] + """ + self.setColumnCount(len(columns)) + + for i, col in enumerate(columns): + header = QTableWidgetItem(col.get("label", col["name"])) + self.setHorizontalHeaderItem(i, header) + + if "width" in col: + self.setColumnWidth(i, col["width"]) + + def add_row(self, data: List[Any], row_data: Any = None): + """ + 행 추가 + + Args: + data: 셀 데이터 리스트 + row_data: 행에 저장할 추가 데이터 (레코드 ID 등) + """ + row = self.rowCount() + self.insertRow(row) + + for col, value in enumerate(data): + item = QTableWidgetItem(str(value) if value else "") + item.setTextAlignment(Qt.AlignCenter) + + if row_data is not None: + item.setData(Qt.UserRole, row_data) + + self.setItem(row, col, item) + + def get_row_data(self, row: int) -> Any: + """ + 행의 추가 데이터 반환 + + Args: + row: 행 인덱스 + + Returns: + 저장된 데이터 + """ + item = self.item(row, 0) + if item: + return item.data(Qt.UserRole) + return None + + def clear_rows(self): + """모든 행 삭제""" + self.setRowCount(0) + + def get_selected_row(self) -> int: + """선택된 행 인덱스 반환""" + selected = self.selectedItems() + if selected: + return selected[0].row() + return -1 + + def get_selected_data(self) -> Any: + """선택된 행의 데이터 반환""" + row = self.get_selected_row() + if row >= 0: + return self.get_row_data(row) + return None + + diff --git a/ui/base/base_widget.py b/ui/base/base_widget.py new file mode 100644 index 0000000..0f4b1c1 --- /dev/null +++ b/ui/base/base_widget.py @@ -0,0 +1,298 @@ +# -*- coding: utf-8 -*- +""" +기본 위젯 클래스 모듈 +모든 커스텀 위젯의 기반 클래스를 정의합니다. + +이 모듈은 다음 기능을 제공합니다: +- 공통 스타일링 +- 이벤트 처리 +- 로깅 통합 +- 시그널 연결 +""" + +from PySide6.QtWidgets import QWidget, QVBoxLayout, QHBoxLayout, QGraphicsDropShadowEffect +from PySide6.QtCore import Qt, Signal, QPropertyAnimation, QEasingCurve +from PySide6.QtGui import QColor, QFont + +from core.logger import get_logger +from core.config import ConfigManager +from core.signals import GlobalSignals + +# 로거 설정 +logger = get_logger(__name__) + + +class BaseWidget(QWidget): + """ + 기본 위젯 클래스 + + 모든 커스텀 위젯이 상속받는 기반 클래스입니다. + 공통 기능과 스타일링을 제공합니다. + + Attributes: + config: 설정 관리자 + signals: 전역 시그널 + + Examples: + >>> class MyWidget(BaseWidget): + ... def __init__(self, parent=None): + ... super().__init__(parent) + ... self.setup_ui() + """ + + # 커스텀 시그널 + widget_ready = Signal() + widget_error = Signal(str) + + def __init__(self, parent=None): + """ + 위젯 초기화 + + Args: + parent: 부모 위젯 + """ + super().__init__(parent) + + # 공통 객체 초기화 + self.config = ConfigManager() + self.signals = GlobalSignals() + + # 기본 설정 + self._setup_base() + + logger.debug(f"{self.__class__.__name__} 초기화") + + def _setup_base(self): + """기본 설정""" + # 폰트 설정 + self._apply_font() + + # 기본 속성 + self.setAttribute(Qt.WA_StyledBackground, True) + + def _apply_font(self): + """폰트 적용""" + font = QFont(self.config.get('app', 'font_family', 'GmarketSans')) + font.setPixelSize(self.config.get('app', 'font_size', 14)) + self.setFont(font) + + def add_shadow(self, blur_radius: int = 20, offset: tuple = (0, 4), color: str = "#00000040"): + """ + 위젯에 그림자 효과를 추가합니다. + + Args: + blur_radius: 블러 반경 + offset: 그림자 오프셋 (x, y) + color: 그림자 색상 + """ + shadow = QGraphicsDropShadowEffect(self) + shadow.setBlurRadius(blur_radius) + shadow.setOffset(*offset) + shadow.setColor(QColor(color)) + self.setGraphicsEffect(shadow) + + def create_fade_animation( + self, + start_value: float = 0.0, + end_value: float = 1.0, + duration: int = 300 + ) -> QPropertyAnimation: + """ + 페이드 애니메이션을 생성합니다. + + Args: + start_value: 시작 투명도 + end_value: 종료 투명도 + duration: 애니메이션 시간 (ms) + + Returns: + QPropertyAnimation 객체 + """ + from PySide6.QtWidgets import QGraphicsOpacityEffect + + opacity_effect = QGraphicsOpacityEffect(self) + self.setGraphicsEffect(opacity_effect) + + animation = QPropertyAnimation(opacity_effect, b"opacity") + animation.setDuration(duration) + animation.setStartValue(start_value) + animation.setEndValue(end_value) + animation.setEasingCurve(QEasingCurve.InOutQuad) + + return animation + + def fade_in(self, duration: int = 300): + """페이드 인 효과""" + anim = self.create_fade_animation(0.0, 1.0, duration) + anim.start() + + def fade_out(self, duration: int = 300): + """페이드 아웃 효과""" + anim = self.create_fade_animation(1.0, 0.0, duration) + anim.start() + + def apply_theme(self, theme: str = None): + """ + 테마를 적용합니다. + + Args: + theme: 테마 이름 ('dark' 또는 'light') + """ + if theme is None: + theme = self.config.theme + + # 자식 클래스에서 오버라이드 + pass + + def show_error(self, message: str): + """ + 에러 메시지를 표시합니다. + + Args: + message: 에러 메시지 + """ + logger.error(f"{self.__class__.__name__}: {message}") + self.widget_error.emit(message) + self.signals.error_occurred.emit(self.__class__.__name__, message) + + def show_status(self, message: str, timeout: int = 3000): + """ + 상태 메시지를 표시합니다. + + Args: + message: 상태 메시지 + timeout: 표시 시간 (ms) + """ + self.signals.status_message.emit(message, timeout) + + +class CardWidget(BaseWidget): + """ + 카드 스타일 위젯 + + 둥근 모서리와 그림자가 있는 카드 형태의 위젯입니다. + """ + + def __init__(self, parent=None, padding: int = 16, radius: int = 12): + """ + 카드 위젯 초기화 + + Args: + parent: 부모 위젯 + padding: 내부 여백 + radius: 모서리 반경 + """ + super().__init__(parent) + + self.padding = padding + self.radius = radius + + self._setup_card() + + def _setup_card(self): + """카드 스타일 설정""" + # 레이아웃 설정 + self.layout = QVBoxLayout(self) + self.layout.setContentsMargins( + self.padding, self.padding, + self.padding, self.padding + ) + self.layout.setSpacing(8) + + # 그림자 추가 + self.add_shadow() + + # 스타일 적용 + self._apply_card_style() + + def _apply_card_style(self): + """카드 스타일시트 적용""" + theme = self.config.theme + + if theme == 'dark': + bg_color = "#1e293b" + border_color = "#334155" + else: + bg_color = "#ffffff" + border_color = "#e2e8f0" + + self.setStyleSheet(f""" + CardWidget {{ + background-color: {bg_color}; + border: 1px solid {border_color}; + border-radius: {self.radius}px; + }} + """) + + +class ContainerWidget(BaseWidget): + """ + 컨테이너 위젯 + + 다른 위젯들을 담는 컨테이너 역할을 합니다. + 수직 또는 수평 레이아웃을 지원합니다. + """ + + def __init__( + self, + parent=None, + orientation: str = 'vertical', + spacing: int = 8, + margins: tuple = (0, 0, 0, 0) + ): + """ + 컨테이너 위젯 초기화 + + Args: + parent: 부모 위젯 + orientation: 레이아웃 방향 ('vertical' 또는 'horizontal') + spacing: 위젯 간 간격 + margins: 여백 (left, top, right, bottom) + """ + super().__init__(parent) + + self.orientation = orientation + self.spacing = spacing + self.margins = margins + + self._setup_container() + + def _setup_container(self): + """컨테이너 설정""" + if self.orientation == 'vertical': + self.layout = QVBoxLayout(self) + else: + self.layout = QHBoxLayout(self) + + self.layout.setSpacing(self.spacing) + self.layout.setContentsMargins(*self.margins) + + def add_widget(self, widget: QWidget, stretch: int = 0): + """ + 위젯을 추가합니다. + + Args: + widget: 추가할 위젯 + stretch: 늘어남 비율 + """ + self.layout.addWidget(widget, stretch) + + def add_spacing(self, size: int): + """ + 간격을 추가합니다. + + Args: + size: 간격 크기 + """ + self.layout.addSpacing(size) + + def add_stretch(self, stretch: int = 1): + """ + 늘어남 영역을 추가합니다. + + Args: + stretch: 늘어남 비율 + """ + self.layout.addStretch(stretch) + + diff --git a/ui/components/__init__.py b/ui/components/__init__.py new file mode 100644 index 0000000..200220c --- /dev/null +++ b/ui/components/__init__.py @@ -0,0 +1,39 @@ +# -*- coding: utf-8 -*- +""" +재사용 가능 UI 컴포넌트 패키지 +커스텀 버튼, 입력 필드, 테이블 등 재사용 가능한 위젯 정의 +""" + +from .custom_button import CustomButton, IconButton, ToggleButton +from .custom_input import CustomLineEdit, CustomTextEdit, CustomComboBox +from .custom_table import CustomTable +from .custom_calendar import CustomCalendar +from .toggle_switch import ToggleSwitch +from .dropdown import Dropdown +from .splitter import CustomSplitter +from .popup_widget import PopupWidget +from .train_info_popup import TrainInfoPopup +from .flow_layout import FlowLayout +from .chips import FilterChipButton, ChoiceChipButton, ChipTheme + +__all__ = [ + 'CustomButton', + 'IconButton', + 'ToggleButton', + 'CustomLineEdit', + 'CustomTextEdit', + 'CustomComboBox', + 'CustomTable', + 'CustomCalendar', + 'ToggleSwitch', + 'Dropdown', + 'CustomSplitter', + 'PopupWidget', + 'TrainInfoPopup', + 'FlowLayout', + 'FilterChipButton', + 'ChoiceChipButton', + 'ChipTheme', +] + + diff --git a/ui/components/_old_filter_chip_button.py b/ui/components/_old_filter_chip_button.py new file mode 100644 index 0000000..a4f789c --- /dev/null +++ b/ui/components/_old_filter_chip_button.py @@ -0,0 +1,229 @@ +# -*- coding: utf-8 -*- +""" +필터 칩 버튼 모듈 +- 칩 자체가 버튼(QToolButton)이며 클릭하면 제거 신호 발생 +- hover 시 "삭제 가능" 시각적 강조 +- 라디오 모드 지원 (단일 선택) +""" + +from __future__ import annotations + +from dataclasses import dataclass +from typing import Optional + +from PySide6.QtWidgets import QToolButton, QSizePolicy +from PySide6.QtCore import Qt, Signal, QSize + +from core.logger import get_logger + +logger = get_logger(__name__) + + +try: + from ui.styles.style_manager import StyleManager # type: ignore +except Exception: + StyleManager = None # noqa: N816 + + +@dataclass(frozen=True) +class ChipButtonTheme: + height: int = 28 + padding_x: int = 10 + radius: int = 14 + font_px: int = 12 + max_width: Optional[int] = None # 필요시 칩 최대폭 제한 + + +class FilterChipButton(QToolButton): + """ + 필터 칩(버튼) + - 클릭하면 removed(filter_key) 신호를 발생 + - hover 시 강조 + 툴팁 "클릭하여 제거" + - 라디오 모드 지원 (단일 선택) + """ + + removed = Signal(str) # filter_key + + def __init__( + self, + text: str, + filter_key: str, + filter_type: str = "", + color: Optional[str] = None, + theme: ChipButtonTheme = ChipButtonTheme(), + parent=None, + radio_mode: bool = False, + checkbox_mode: bool = False, + radio_group: Optional[dict] = None, + is_selected: bool = False, + ): + super().__init__(parent) + + self._text = text + self.filter_key = filter_key + self.filter_type = filter_type + self.theme = theme + self._radio_mode = radio_mode + self._checkbox_mode = checkbox_mode + self._radio_group = radio_group or {} + self._is_selected = is_selected + + self._style_manager = StyleManager() if StyleManager else None + self._bg = color or self._get_default_color(filter_type) + + self.setText(text) + self.setCursor(Qt.PointingHandCursor) + self.setAutoRaise(True) + self.setFocusPolicy(Qt.NoFocus) + + # 레이아웃/FlowLayout에서 안정적으로 보이도록 + self.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed) + self.setFixedHeight(self.theme.height) + + if self.theme.max_width: + self.setMaximumWidth(self.theme.max_width) + + # 툴팁 설정 + if self._radio_mode: + self.setToolTip("클릭하여 선택") + elif self._checkbox_mode: + self.setToolTip("클릭하여 토글") + else: + self.setToolTip("클릭하여 제거") + + # 클릭 이벤트 연결 + if self._radio_mode: + self.clicked.connect(self._on_radio_clicked) + elif self._checkbox_mode: + self.clicked.connect(self._on_checkbox_clicked) + else: + self.clicked.connect(self._on_clicked) + + # hover 스타일용 dynamic property + self.setProperty("chipHover", False) + + self._apply_style() + + self.setMinimumHeight(self.theme.height) + self.setMinimumWidth(40) # 너무 좁게 눌리는 것 방지 + + def sizeHint(self) -> QSize: + # 텍스트 길이에 따라 폭이 자연스럽게 늘어나도록 + hint = super().sizeHint() + h = self.theme.height + return QSize(max(hint.width() + 6, 40), h) + + def enterEvent(self, event): + self.setProperty("chipHover", True) + self.style().unpolish(self) + self.style().polish(self) + super().enterEvent(event) + + def leaveEvent(self, event): + self.setProperty("chipHover", False) + self.style().unpolish(self) + self.style().polish(self) + super().leaveEvent(event) + + def _on_clicked(self): + """필터 모드 클릭 처리""" + self.removed.emit(self.filter_key) + + def _on_radio_clicked(self): + """라디오 모드 클릭 처리""" + # 같은 그룹의 다른 칩들 선택 해제 + for chip in self._radio_group.values(): + if chip != self: + chip.set_selected(False) + + # 자신 선택 + self.set_selected(True) + + def _on_checkbox_clicked(self): + """체크박스 모드 클릭 처리""" + # 선택 상태 토글 + self.set_selected(not self._is_selected) + + def set_selected(self, selected: bool): + """선택 상태 설정 (라디오 모드용)""" + self._is_selected = selected + self._apply_style() + + def is_selected(self) -> bool: + """선택 상태 반환""" + return self._is_selected + + def set_radio_group(self, group: dict): + """라디오 그룹 설정""" + self._radio_group = group + + def _get_default_color(self, filter_type: str) -> str: + color_map = { + "date": "#7c4dff", + "team": "#2979ff", + "status": "#00bfa5", + "search": "#ff4081", + "device": "#ff9800", + "train": "#607d8b", + } + return color_map.get(filter_type, "#64748b") + + def _apply_style(self): + # 폰트는 StyleManager 있으면 사용 + if self._style_manager: + try: + f = self._style_manager.get_font("dialog", "content") + self.setFont(f) + except Exception: + logger.debug("StyleManager 폰트 적용 실패. 시스템 기본 폰트 사용") + + h = self.theme.height + r = self.theme.radius + px = self.theme.padding_x + + # 선택 상태에 따른 배경색 + if (self._radio_mode or self._checkbox_mode) and self._is_selected: + bg_color = self._bg + border_color = "rgba(255,255,255,0.8)" + elif self._radio_mode or self._checkbox_mode: + # 라디오/체크박스 모드이지만 선택되지 않은 경우 + bg_color = "rgba(0,0,0,0.1)" + border_color = "rgba(0,0,0,0.2)" + else: + bg_color = self._bg + border_color = "rgba(0,0,0,0.12)" + + # hover/pressed는 오버레이로 처리 (배경색은 유지하면서 강조) + self.setStyleSheet(f""" + QToolButton {{ + background: {bg_color}; + color: {'#ffffff' if ((self._radio_mode or self._checkbox_mode) and self._is_selected) or not (self._radio_mode or self._checkbox_mode) else '#64748b'}; + border: 2px solid {border_color}; + border-radius: {r}px; + padding-left: {px}px; + padding-right: {px}px; + min-height: {h}px; + max-height: {h}px; + font-size: {self.theme.font_px}px; + font-weight: {'bold' if ((self._radio_mode or self._checkbox_mode) and self._is_selected) or not (self._radio_mode or self._checkbox_mode) else 'normal'}; + }} + + /* hover 강조: 살짝 밝아지고 테두리 강조 + 그림자 느낌 */ + QToolButton[chipHover="true"] {{ + border: 2px solid rgba(255,255,255,0.55); + background: qlineargradient( + x1:0, y1:0, x2:0, y2:1, + stop:0 rgba(255,255,255,0.15), + stop:1 rgba(255,255,255,0.00) + ), {bg_color}; + }} + + /* pressed: 더 강한 오버레이 */ + QToolButton:pressed {{ + background: qlineargradient( + x1:0, y1:0, x2:0, y2:1, + stop:0 rgba(0,0,0,0.18), + stop:1 rgba(0,0,0,0.05) + ), {bg_color}; + }} + """) diff --git a/ui/components/alarm_widget.py b/ui/components/alarm_widget.py new file mode 100644 index 0000000..edede11 --- /dev/null +++ b/ui/components/alarm_widget.py @@ -0,0 +1,101 @@ +# -*- coding: utf-8 -*- +""" +알람 위젯 모듈 +알람 설정(켜기/끄기, 시간 설정)을 위한 재사용 가능한 위젯입니다. +""" + +from datetime import time, datetime +from typing import Optional + +from PySide6.QtWidgets import ( + QWidget, QHBoxLayout, QLabel, QCheckBox +) +from PySide6.QtCore import Qt, Signal, QTime +from PySide6.QtGui import QFont + +from ui.components.custom_calendar import TimeSelector +from core.config import ConfigManager + +class AlarmWidget(QWidget): + """ + 알람 설정 위젯 + + 알람 활성화 여부와 시간을 설정할 수 있습니다. + """ + + alarm_changed = Signal(bool, object) # is_enabled, time (QTime) + + def __init__(self, parent=None, initial_time: Optional[time] = None): + super().__init__(parent) + + self.config = ConfigManager() + self._is_enabled = False + + self._setup_ui() + + if initial_time: + self.set_alarm(True, initial_time) + + def _setup_ui(self): + """UI 설정""" + layout = QHBoxLayout(self) + layout.setContentsMargins(0, 0, 0, 0) + layout.setSpacing(12) + + theme = self.config.theme + text_color = "#f8fafc" if theme == 'dark' else "#1e293b" + + # 알람 토글 + self.toggle = QCheckBox("알람") + self.toggle.setFont(QFont("GmarketSans", 11)) + self.toggle.setStyleSheet(f""" + QCheckBox {{ + color: {text_color}; + spacing: 8px; + }} + QCheckBox::indicator {{ + width: 20px; + height: 20px; + border: 2px solid {'#475569' if theme == 'dark' else '#e2e8f0'}; + border-radius: 4px; + }} + QCheckBox::indicator:checked {{ + background-color: #3b82f6; + border-color: #3b82f6; + }} + """) + self.toggle.stateChanged.connect(self._on_toggle_changed) + layout.addWidget(self.toggle) + + # 시간 선택기 + self.time_selector = TimeSelector(minute_step=10) + self.time_selector.time_changed.connect(self._on_time_changed) + self.time_selector.setVisible(False) + layout.addWidget(self.time_selector) + + layout.addStretch() + + def _on_toggle_changed(self, state: int): + """토글 변경 시""" + self._is_enabled = (state == Qt.Checked) + self.time_selector.setVisible(self._is_enabled) + + current_time = self.time_selector.get_time() + self.alarm_changed.emit(self._is_enabled, current_time) + + def _on_time_changed(self, t: time): + """시간 변경 시""" + if self._is_enabled: + self.alarm_changed.emit(True, t) + + def set_alarm(self, enabled: bool, t: Optional[time] = None): + """알람 설정""" + self.toggle.setChecked(enabled) + if t: + self.time_selector.set_time(t) + + def get_alarm(self) -> tuple[bool, Optional[time]]: + """알람 설정 반환""" + if not self._is_enabled: + return False, None + return True, self.time_selector.get_time() diff --git a/ui/components/chips/__init__.py b/ui/components/chips/__init__.py new file mode 100644 index 0000000..8963c4e --- /dev/null +++ b/ui/components/chips/__init__.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- +""" +칩 버튼 컴포넌트 패키지 +- ChipBaseButton: 공통 베이스 +- FilterChipButton: 필터용 (제거 액션) +- ChoiceChipButton: 선택용 (체크박스/라디오) +""" + +from .chip_base_button import ChipBaseButton, ChipTheme +from .filter_chip_button import FilterChipButton +from .choice_chip_button import ChoiceChipButton + +__all__ = [ + 'ChipBaseButton', + 'ChipTheme', + 'FilterChipButton', + 'ChoiceChipButton', +] + + + + + diff --git a/ui/components/chips/chip_base_button.py b/ui/components/chips/chip_base_button.py new file mode 100644 index 0000000..a001064 --- /dev/null +++ b/ui/components/chips/chip_base_button.py @@ -0,0 +1,181 @@ +# -*- coding: utf-8 -*- +""" +공통 칩 버튼 베이스 +- 색상/크기/hover/checked(선택) 시각 처리 +- 선택형 칩(Choice)과 필터 칩(Filter)의 공통 기반 +""" + +from __future__ import annotations + +from dataclasses import dataclass +from typing import Optional + +from PySide6.QtWidgets import QToolButton, QSizePolicy +from PySide6.QtCore import Qt, Signal, QSize + +from core.logger import get_logger + +logger = get_logger(__name__) + +try: + from ui.styles.style_manager import StyleManager # type: ignore +except Exception: + StyleManager = None # noqa: N816 + + +@dataclass(frozen=True) +class ChipTheme: + height: int = 28 + padding_x: int = 10 + radius: int = 14 + font_px: int = 12 + max_width: Optional[int] = None + + +class ChipBaseButton(QToolButton): + """ + 공통 칩 버튼 + - key 기반 신호 제공 + - 선택형(checked) 시각 지원 + """ + + clicked_key = Signal(str) + toggled_key = Signal(str, bool) + + def __init__( + self, + text: str, + key: str, + bg: str = "#64748b", + fg: str = "#ffffff", + theme: ChipTheme = ChipTheme(), + checkable: bool = False, + parent=None, + ): + super().__init__(parent) + + self._style_manager = StyleManager() if StyleManager else None + + self.key = key + self._bg = bg + self._fg = fg + self.theme = theme + + self.setText(text) + self.setCursor(Qt.PointingHandCursor) + self.setAutoRaise(True) + self.setFocusPolicy(Qt.NoFocus) + + self.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed) + self.setFixedHeight(self.theme.height) + self.setMinimumWidth(40) + + if self.theme.max_width: + self.setMaximumWidth(self.theme.max_width) + + self.setProperty("chipHover", False) + + # 선택형 지원 + self.setCheckable(checkable) + + # 신호 연결 + self.clicked.connect(self._on_clicked) + self.toggled.connect(self._on_toggled) + + self._apply_style() + + def sizeHint(self) -> QSize: + hint = super().sizeHint() + h = self.theme.height + return QSize(max(hint.width() + 6, 40), h) + + def enterEvent(self, event): + self.setProperty("chipHover", True) + self.style().unpolish(self) + self.style().polish(self) + super().enterEvent(event) + + def leaveEvent(self, event): + self.setProperty("chipHover", False) + self.style().unpolish(self) + self.style().polish(self) + super().leaveEvent(event) + + def _on_clicked(self): + self.clicked_key.emit(self.key) + + def _on_toggled(self, checked: bool): + self.toggled_key.emit(self.key, checked) + # checked 시각 반영을 위해 re-polish + self.style().unpolish(self) + self.style().polish(self) + + def set_bg(self, bg: str): + """배경색 설정""" + self._bg = bg + self._apply_style() + + def set_fg(self, fg: str): + """전경색 설정""" + self._fg = fg + self._apply_style() + + def _apply_style(self): + # 폰트(StyleManager가 있으면 dialog.content 기반) + if self._style_manager: + try: + f = self._style_manager.get_font("dialog", "content") + self.setFont(f) + except Exception: + logger.debug("StyleManager 폰트 적용 실패. 시스템 기본 폰트 사용") + + h = self.theme.height + r = self.theme.radius + px = self.theme.padding_x + + self.setStyleSheet(f""" + QToolButton {{ + background: {self._bg}; + color: {self._fg}; + border: 1px solid rgba(0,0,0,0.12); + border-radius: {r}px; + padding-left: {px}px; + padding-right: {px}px; + min-height: {h}px; + max-height: {h}px; + font-size: {self.theme.font_px}px; + font-weight: 700; + }} + + QToolButton[chipHover="true"] {{ + border: 1px solid rgba(255,255,255,0.55); + background: qlineargradient( + x1:0, y1:0, x2:0, y2:1, + stop:0 rgba(255,255,255,0.15), + stop:1 rgba(255,255,255,0.00) + ), {self._bg}; + }} + + /* 선택됨(checked) 강조 */ + QToolButton:checked {{ + border: 1px solid rgba(255,255,255,0.80); + background: qlineargradient( + x1:0, y1:0, x2:0, y2:1, + stop:0 rgba(255,255,255,0.25), + stop:1 rgba(0,0,0,0.10) + ), {self._bg}; + }} + + QToolButton:pressed {{ + background: qlineargradient( + x1:0, y1:0, x2:0, y2:1, + stop:0 rgba(0,0,0,0.18), + stop:1 rgba(0,0,0,0.05) + ), {self._bg}; + }} + """) + + + + + diff --git a/ui/components/chips/choice_chip_button.py b/ui/components/chips/choice_chip_button.py new file mode 100644 index 0000000..1c85bb5 --- /dev/null +++ b/ui/components/chips/choice_chip_button.py @@ -0,0 +1,39 @@ +# -*- coding: utf-8 -*- +""" +선택(Choice) 칩 +- 다중선택: checkable=True 로 토글 +- 단일선택: QButtonGroup(외부에서)으로 exclusive=True 처리 +""" + +from __future__ import annotations + +from ui.components.chips.chip_base_button import ChipBaseButton, ChipTheme + + +class ChoiceChipButton(ChipBaseButton): + """ + 선택용 칩 버튼 + - 다중선택: checkable=True로 토글 가능 + - 단일선택: QButtonGroup으로 exclusive 처리 + """ + + def __init__( + self, + text: str, + key: str, + bg: str = "#334155", + fg: str = "#ffffff", + theme: ChipTheme = ChipTheme(), + parent=None, + ): + super().__init__( + text=text, + key=key, + bg=bg, + fg=fg, + theme=theme, + checkable=True, # 핵심: 선택 가능하게 설정 + parent=parent, + ) + self.setToolTip("클릭하여 선택/해제") + diff --git a/ui/components/chips/filter_chip_button.py b/ui/components/chips/filter_chip_button.py new file mode 100644 index 0000000..ba77de7 --- /dev/null +++ b/ui/components/chips/filter_chip_button.py @@ -0,0 +1,66 @@ +# -*- coding: utf-8 -*- +""" +필터 칩 +- 클릭하면 removed(key) 발생 (선택 개념 없음) +""" + +from __future__ import annotations + +from typing import Optional + +from PySide6.QtCore import Signal + +from ui.components.chips.chip_base_button import ChipBaseButton, ChipTheme + + +class FilterChipButton(ChipBaseButton): + """ + 필터 칩 버튼 + - 클릭하면 removed(filter_key) 신호 발생 + - hover 시 "삭제 가능" 시각적 강조 + """ + + removed = Signal(str) # filter_key + + def __init__( + self, + text: str, + filter_key: str, + filter_type: str = "", + color: Optional[str] = None, + theme: ChipTheme = ChipTheme(), + parent=None, + ): + bg = color or self._default_color(filter_type) + super().__init__( + text=text, + key=filter_key, + bg=bg, + theme=theme, + checkable=False, + parent=parent, + ) + self.setToolTip("클릭하여 제거") + self.clicked_key.connect(self._emit_removed) + + def _emit_removed(self, key: str): + """제거 신호 발생""" + self.removed.emit(key) + + @staticmethod + def _default_color(filter_type: str) -> str: + """필터 타입별 기본 색상""" + color_map = { + "date": "#7c4dff", + "team": "#2979ff", + "status": "#00bfa5", + "search": "#ff4081", + "device": "#ff9800", + "train": "#607d8b", + } + return color_map.get(filter_type, "#64748b") + + + + + diff --git a/ui/components/custom_button.py b/ui/components/custom_button.py new file mode 100644 index 0000000..b1ee9a0 --- /dev/null +++ b/ui/components/custom_button.py @@ -0,0 +1,378 @@ +# -*- coding: utf-8 -*- +""" +커스텀 버튼 모듈 +다양한 스타일의 커스텀 버튼을 정의합니다. + +이 모듈은 다음 버튼 유형을 제공합니다: +- CustomButton: 기본 커스텀 버튼 +- IconButton: 아이콘 버튼 +- ToggleButton: 토글 버튼 +""" + +from PySide6.QtWidgets import QPushButton, QGraphicsDropShadowEffect +from PySide6.QtCore import Qt, Signal, QPropertyAnimation, QEasingCurve, Property +from PySide6.QtGui import QColor, QFont, QIcon, QPainter, QLinearGradient + +from core.config import ConfigManager +from core.logger import get_logger + +logger = get_logger(__name__) + + +class CustomButton(QPushButton): + """ + 커스텀 스타일 버튼 + + 현대적인 디자인의 커스텀 버튼입니다. + 다양한 스타일(primary, secondary, danger, success)을 지원합니다. + + Attributes: + style_type: 버튼 스타일 유형 + + Examples: + >>> btn = CustomButton("저장", style_type="primary") + >>> btn.clicked.connect(self.on_save) + """ + + STYLES = { + "primary": { + "bg": "#3b82f6", + "bg_hover": "#2563eb", + "bg_pressed": "#1d4ed8", + "text": "#ffffff", + }, + "secondary": { + "bg": "#64748b", + "bg_hover": "#475569", + "bg_pressed": "#334155", + "text": "#ffffff", + }, + "danger": { + "bg": "#ef4444", + "bg_hover": "#dc2626", + "bg_pressed": "#b91c1c", + "text": "#ffffff", + }, + "success": { + "bg": "#22c55e", + "bg_hover": "#16a34a", + "bg_pressed": "#15803d", + "text": "#ffffff", + }, + "warning": { + "bg": "#f59e0b", + "bg_hover": "#d97706", + "bg_pressed": "#b45309", + "text": "#ffffff", + }, + "outline": { + "bg": "transparent", + "bg_hover": "#f1f5f9", + "bg_pressed": "#e2e8f0", + "text": "#3b82f6", + "border": "#3b82f6", + }, + "ghost": { + "bg": "transparent", + "bg_hover": "#f1f5f9", + "bg_pressed": "#e2e8f0", + "text": "#64748b", + }, + } + + def __init__( + self, + text: str = "", + parent=None, + style_type: str = "primary", + icon: QIcon = None, + fixed_width: int = None, + fixed_height: int = 40 + ): + super().__init__(text, parent) + + self.config = ConfigManager() + self.style_type = style_type + + # 기본 설정 + self.setCursor(Qt.PointingHandCursor) + self.setFont(QFont("GmarketSans", 13)) + + if icon: + self.setIcon(icon) + + if fixed_width: + self.setFixedWidth(fixed_width) + + if fixed_height: + self.setFixedHeight(fixed_height) + + self._apply_style() + + def apply_style(self, style_type: str): + """외부에서 동적으로 스타일을 변경할 때 사용""" + self.style_type = style_type + self._apply_style() + + def _apply_style(self): + """스타일 적용""" + style = self.STYLES.get(self.style_type, self.STYLES["primary"]) + + border = f"border: 2px solid {style.get('border', 'transparent')};" + + self.setStyleSheet(f""" + QPushButton {{ + background-color: {style['bg']}; + color: {style['text']}; + {border} + border-radius: 8px; + padding: 8px 20px; + font-weight: 600; + }} + + QPushButton:hover {{ + background-color: {style['bg_hover']}; + }} + + QPushButton:pressed {{ + background-color: {style['bg_pressed']}; + }} + + QPushButton:disabled {{ + background-color: #94a3b8; + color: #cbd5e1; + }} + """) + + def set_style_type(self, style_type: str): + """스타일 유형 변경""" + self.style_type = style_type + self._apply_style() + + +class IconButton(QPushButton): + """ + 아이콘 버튼 + + 아이콘만 표시되는 원형 또는 사각형 버튼입니다. + + Examples: + >>> btn = IconButton("🔄", tooltip="새로고침") + >>> btn.clicked.connect(self.on_refresh) + """ + + def __init__( + self, + icon_text: str = "", + parent=None, + size: int = 36, + circle: bool = True, + tooltip: str = "" + ): + super().__init__(icon_text, parent) + + self.config = ConfigManager() + self._size = size + self._circle = circle + + # 기본 설정 + self.setFixedSize(size, size) + self.setCursor(Qt.PointingHandCursor) + self.setFont(QFont("Segoe UI Emoji", size // 2)) + + if tooltip: + self.setToolTip(tooltip) + + self._apply_style() + + def _apply_style(self): + """스타일 적용""" + theme = self.config.theme + radius = self._size // 2 if self._circle else 8 + + if theme == 'dark': + bg = "#334155" + bg_hover = "#475569" + text_color = "#f8fafc" + else: + bg = "#e2e8f0" + bg_hover = "#cbd5e1" + text_color = "#1e293b" + + self.setStyleSheet(f""" + QPushButton {{ + background-color: {bg}; + color: {text_color}; + border: none; + border-radius: {radius}px; + }} + + QPushButton:hover {{ + background-color: {bg_hover}; + }} + + QPushButton:pressed {{ + background-color: {bg}; + }} + """) + + +class ToggleButton(QPushButton): + """ + 토글 버튼 + + 켜짐/꺼짐 상태를 전환하는 버튼입니다. + + Signals: + toggled_signal: 토글 상태 변경 시그널 (bool) + + Examples: + >>> btn = ToggleButton("알림", initial_state=True) + >>> btn.toggled_signal.connect(self.on_toggle) + """ + + toggled_signal = Signal(bool) + + def __init__( + self, + text: str = "", + parent=None, + initial_state: bool = False, + on_text: str = None, + off_text: str = None + ): + super().__init__(text, parent) + + self.config = ConfigManager() + self._is_on = initial_state + self._on_text = on_text or text + self._off_text = off_text or text + + # 기본 설정 + self.setCheckable(True) + self.setChecked(initial_state) + self.setCursor(Qt.PointingHandCursor) + self.setFont(QFont("GmarketSans", 13)) + self.setFixedHeight(40) + + # 시그널 연결 + self.clicked.connect(self._on_clicked) + + self._update_state() + + def _on_clicked(self): + """클릭 이벤트""" + self._is_on = self.isChecked() + self._update_state() + self.toggled_signal.emit(self._is_on) + + def _update_state(self): + """상태 업데이트""" + self.setText(self._on_text if self._is_on else self._off_text) + self._apply_style() + + def _apply_style(self): + """스타일 적용""" + if self._is_on: + bg = "#22c55e" + bg_hover = "#16a34a" + else: + bg = "#64748b" + bg_hover = "#475569" + + self.setStyleSheet(f""" + QPushButton {{ + background-color: {bg}; + color: white; + border: none; + border-radius: 8px; + padding: 8px 20px; + font-weight: 600; + }} + + QPushButton:hover {{ + background-color: {bg_hover}; + }} + """) + + @property + def is_on(self) -> bool: + """현재 상태 반환""" + return self._is_on + + def set_state(self, state: bool): + """상태 설정""" + self._is_on = state + self.setChecked(state) + self._update_state() + + +class GradientButton(QPushButton): + """ + 그라데이션 버튼 + + 배경에 그라데이션 효과가 있는 버튼입니다. + """ + + def __init__( + self, + text: str = "", + parent=None, + start_color: str = "#3b82f6", + end_color: str = "#8b5cf6" + ): + super().__init__(text, parent) + + self.start_color = start_color + self.end_color = end_color + + # 기본 설정 + self.setCursor(Qt.PointingHandCursor) + self.setFont(QFont("GmarketSans", 13, QFont.Bold)) + self.setFixedHeight(44) + + self._apply_style() + + def _apply_style(self): + """스타일 적용""" + self.setStyleSheet(f""" + QPushButton {{ + background: qlineargradient( + x1:0, y1:0, x2:1, y2:0, + stop:0 {self.start_color}, + stop:1 {self.end_color} + ); + color: white; + border: none; + border-radius: 10px; + padding: 10px 24px; + font-weight: bold; + }} + + QPushButton:hover {{ + background: qlineargradient( + x1:0, y1:0, x2:1, y2:0, + stop:0 {self._darken(self.start_color)}, + stop:1 {self._darken(self.end_color)} + ); + }} + + QPushButton:pressed {{ + background: qlineargradient( + x1:0, y1:0, x2:1, y2:0, + stop:0 {self._darken(self.start_color, 0.2)}, + stop:1 {self._darken(self.end_color, 0.2)} + ); + }} + """) + + @staticmethod + def _darken(hex_color: str, amount: float = 0.1) -> str: + """색상을 어둡게""" + color = QColor(hex_color) + h, s, l, a = color.getHslF() + l = max(0, l - amount) + color.setHslF(h, s, l, a) + return color.name() + + diff --git a/ui/components/custom_calendar.py b/ui/components/custom_calendar.py new file mode 100644 index 0000000..a7295df --- /dev/null +++ b/ui/components/custom_calendar.py @@ -0,0 +1,851 @@ +# -*- coding: utf-8 -*- +""" +커스텀 캘린더 모듈 +날짜 및 기간 선택을 위한 커스텀 캘린더 위젯입니다. + +기능: +- 단일 날짜 선택 +- 기간(시작~종료) 선택 토글 +- 시간 선택 (시/분, 30분 단위) +- 날짜 강조 표시 +- 현대적인 UI 스타일 +""" + +from datetime import date, datetime, time +from typing import Optional, Tuple + +from PySide6.QtWidgets import ( + QCalendarWidget, QWidget, QVBoxLayout, QHBoxLayout, + QPushButton, QLabel, QSpinBox, QComboBox +) +from PySide6.QtCore import Qt, Signal, QDate, QTime +from PySide6.QtGui import QFont, QColor, QTextCharFormat, QPainter, QPen, QBrush + +from core.config import ConfigManager +from core.logger import get_logger + +logger = get_logger(__name__) + + +class RangeCalendarWidget(QCalendarWidget): + """ + 기간 선택을 지원하는 캘린더 위젯 + + paintCell을 오버라이드하여 기간 범위를 시각적으로 표시합니다. + """ + + def __init__(self, parent=None): + super().__init__(parent) + + self.config = ConfigManager() + self._start_date: Optional[QDate] = None + self._end_date: Optional[QDate] = None + self._range_mode = False + + # 기본 설정 + self.setVerticalHeaderFormat(QCalendarWidget.NoVerticalHeader) + self.setHorizontalHeaderFormat(QCalendarWidget.ShortDayNames) + self.setGridVisible(False) + self.setNavigationBarVisible(True) + + self._apply_style() + + def set_range_mode(self, enabled: bool): + """기간 선택 모드 설정""" + self._range_mode = enabled + if not enabled: + self._start_date = None + self._end_date = None + self.updateCells() + + def set_range(self, start: Optional[QDate], end: Optional[QDate]): + """기간 설정""" + self._start_date = start + self._end_date = end + self.updateCells() + + def get_range(self) -> Tuple[Optional[date], Optional[date]]: + """선택된 기간 반환""" + start = None + end = None + + if self._start_date: + start = date(self._start_date.year(), self._start_date.month(), self._start_date.day()) + if self._end_date: + end = date(self._end_date.year(), self._end_date.month(), self._end_date.day()) + + return start, end + + def paintCell(self, painter: QPainter, rect, qdate: QDate): + """셀 그리기 (기간 범위 표시)""" + painter.save() + + theme = self.config.theme + is_dark = theme == 'dark' + + # 색상 정의 + if is_dark: + text_color = QColor("#f8fafc") + range_bg = QColor("#3b82f6") + range_bg.setAlpha(60) + start_end_bg = QColor("#3b82f6") + today_border = QColor("#22c55e") + other_month_text = QColor("#64748b") + else: + text_color = QColor("#1e293b") + range_bg = QColor("#3b82f6") + range_bg.setAlpha(40) + start_end_bg = QColor("#3b82f6") + today_border = QColor("#22c55e") + other_month_text = QColor("#94a3b8") + + # 현재 보이는 달인지 확인 + is_current_month = qdate.month() == self.monthShown() and qdate.year() == self.yearShown() + + # 기간 모드에서 범위 내 날짜인지 확인 + in_range = False + is_start = False + is_end = False + + if self._range_mode and self._start_date and self._end_date: + start = self._start_date + end = self._end_date + if start > end: + start, end = end, start + + in_range = start <= qdate <= end + is_start = qdate == start + is_end = qdate == end + elif self._range_mode and self._start_date: + is_start = qdate == self._start_date + + # 배경 그리기 + if is_start or is_end: + # 시작/종료 날짜: 원형 배경 + painter.setBrush(QBrush(start_end_bg)) + painter.setPen(Qt.NoPen) + center = rect.center() + radius = min(rect.width(), rect.height()) // 2 - 4 + painter.drawEllipse(center, radius, radius) + text_color = QColor("#ffffff") + elif in_range: + # 범위 내 날짜: 연한 배경 + painter.fillRect(rect, range_bg) + + # 오늘 날짜 테두리 + if qdate == QDate.currentDate(): + painter.setPen(QPen(today_border, 2)) + painter.setBrush(Qt.NoBrush) + center = rect.center() + radius = min(rect.width(), rect.height()) // 2 - 4 + painter.drawEllipse(center, radius, radius) + + # 텍스트 그리기 + if not is_current_month: + painter.setPen(other_month_text) + elif is_start or is_end: + painter.setPen(QColor("#ffffff")) + else: + painter.setPen(text_color) + + painter.setFont(QFont("GmarketSans", 11)) + painter.drawText(rect, Qt.AlignCenter, str(qdate.day())) + + painter.restore() + + def _apply_style(self): + """스타일 적용""" + theme = self.config.theme + + if theme == 'dark': + bg = "#1e293b" + header_bg = "#334155" + text = "#f8fafc" + hover_bg = "#475569" + nav_bg = "#0f172a" + border = "#334155" + else: + bg = "#ffffff" + header_bg = "#f1f5f9" + text = "#1e293b" + hover_bg = "#e2e8f0" + nav_bg = "#f8fafc" + border = "#e2e8f0" + + self.setStyleSheet(f""" + QCalendarWidget {{ + background-color: {bg}; + font-family: 'GmarketSans'; + border: 1px solid {border}; + border-radius: 8px; + }} + + QCalendarWidget QToolButton {{ + background-color: {nav_bg}; + color: {text}; + font-size: 13px; + font-weight: bold; + padding: 6px 12px; + border-radius: 6px; + margin: 2px; + }} + + QCalendarWidget QToolButton:hover {{ + background-color: {hover_bg}; + }} + + QCalendarWidget QToolButton::menu-indicator {{ + image: none; + }} + + QCalendarWidget QWidget#qt_calendar_navigationbar {{ + background-color: {nav_bg}; + padding: 4px; + border-top-left-radius: 8px; + border-top-right-radius: 8px; + }} + + QCalendarWidget QTableView {{ + background-color: {bg}; + outline: none; + selection-background-color: transparent; + selection-color: {text}; + }} + + QCalendarWidget QHeaderView::section {{ + background-color: {header_bg}; + color: {text}; + padding: 6px; + border: none; + font-weight: bold; + font-size: 11px; + }} + """) + + +class TimeSelector(QWidget): + """ + 시간 선택 위젯 + + 시간과 분을 선택할 수 있습니다. + 분은 30분 단위 (00, 30)로 기본 설정됩니다. + + Signals: + time_changed: 시간이 변경되었을 때 (QTime) + """ + + time_changed = Signal(object) # QTime + + def __init__(self, parent=None, minute_step: int = 30): + """ + Args: + parent: 부모 위젯 + minute_step: 분 단위 (기본 30분) + """ + super().__init__(parent) + + self.config = ConfigManager() + self._minute_step = minute_step + + self._setup_ui() + + def _setup_ui(self): + """UI 설정""" + layout = QHBoxLayout(self) + layout.setContentsMargins(0, 0, 0, 0) + layout.setSpacing(4) + + theme = self.config.theme + is_dark = theme == 'dark' + + # 시간 선택 + self.hour_spin = QSpinBox() + self.hour_spin.setRange(0, 23) + self.hour_spin.setSuffix("시") + self.hour_spin.setFont(QFont("GmarketSans", 12)) + self.hour_spin.valueChanged.connect(self._on_time_changed) + layout.addWidget(self.hour_spin) + + # 구분자 + colon = QLabel(":") + colon.setFont(QFont("GmarketSans", 14, QFont.Bold)) + colon.setStyleSheet(f"color: {'#f8fafc' if is_dark else '#1e293b'};") + layout.addWidget(colon) + + # 분 선택 (스텝이 1이면 스핀박스, 아니면 드롭다운) + if self._minute_step == 1: + self.minute_spin = QSpinBox() + self.minute_spin.setRange(0, 59) + self.minute_spin.setSuffix("분") + self.minute_spin.setFont(QFont("GmarketSans", 12)) + self.minute_spin.valueChanged.connect(self._on_time_changed) + self.minute_combo = None + layout.addWidget(self.minute_spin) + else: + self.minute_spin = None + self.minute_combo = QComboBox() + self.minute_combo.setFont(QFont("GmarketSans", 12)) + + # 분 옵션 생성 (30분 단위) + minutes = [] + for m in range(0, 60, self._minute_step): + minutes.append(f"{m:02d}분") + self.minute_combo.addItems(minutes) + self.minute_combo.currentIndexChanged.connect(self._on_time_changed) + layout.addWidget(self.minute_combo) + + self._apply_style() + + def _apply_style(self): + """스타일 적용""" + theme = self.config.theme + + if theme == 'dark': + bg = "#1e293b" + text = "#f8fafc" + border = "#475569" + hover = "#334155" + else: + bg = "#ffffff" + text = "#1e293b" + border = "#e2e8f0" + hover = "#f1f5f9" + + style = f""" + QSpinBox, QComboBox {{ + background-color: {bg}; + color: {text}; + border: 1px solid {border}; + border-radius: 6px; + padding: 6px 10px; + min-width: 70px; + }} + QSpinBox:hover, QComboBox:hover {{ + border-color: #3b82f6; + }} + QSpinBox::up-button, QSpinBox::down-button {{ + width: 20px; + background-color: {hover}; + border: none; + }} + QSpinBox::up-button:hover, QSpinBox::down-button:hover {{ + background-color: #3b82f6; + }} + QComboBox::drop-down {{ + border: none; + width: 25px; + }} + QComboBox::down-arrow {{ + image: none; + border-left: 5px solid transparent; + border-right: 5px solid transparent; + border-top: 6px solid {text}; + margin-right: 5px; + }} + QComboBox QAbstractItemView {{ + background-color: {bg}; + color: {text}; + border: 1px solid {border}; + selection-background-color: #3b82f6; + }} + """ + self.setStyleSheet(style) + + def _on_time_changed(self): + """시간 변경 시""" + current_time = self.get_time() + self.time_changed.emit(current_time) + + def get_time(self) -> time: + """현재 선택된 시간 반환""" + hour = self.hour_spin.value() + if self._minute_step == 1 and self.minute_spin: + minute = self.minute_spin.value() + else: + minute_idx = self.minute_combo.currentIndex() + minute = minute_idx * self._minute_step + return time(hour, minute) + + def set_time(self, t: time): + """시간 설정""" + self.hour_spin.setValue(t.hour) + if self._minute_step == 1 and self.minute_spin: + self.minute_spin.setValue(t.minute) + else: + # 가장 가까운 분 단위로 반올림 + minute_idx = round(t.minute / self._minute_step) + if minute_idx >= self.minute_combo.count(): + minute_idx = 0 + self.minute_combo.setCurrentIndex(minute_idx) + + def get_qtime(self) -> QTime: + """QTime으로 반환""" + t = self.get_time() + return QTime(t.hour, t.minute) + + +class CustomCalendar(QWidget): + """ + 커스텀 캘린더 위젯 + + 날짜 또는 기간 선택 기능을 제공합니다. + '기간' 토글을 활성화하면 시작일과 종료일을 선택할 수 있습니다. + 시간 선택 옵션을 활성화하면 시/분도 선택할 수 있습니다. + + Signals: + date_selected: 단일 날짜 선택 시그널 (date) + range_selected: 기간 선택 시그널 (start: date, end: date) + datetime_selected: 날짜+시간 선택 시그널 (datetime) + range_datetime_selected: 기간+시간 선택 시그널 (start: datetime, end: datetime) + + Examples: + >>> calendar = CustomCalendar(show_time=True) + >>> calendar.date_selected.connect(self.on_date_selected) + >>> calendar.datetime_selected.connect(self.on_datetime_selected) + """ + + date_selected = Signal(object) # date + range_selected = Signal(object, object) # start_date, end_date + datetime_selected = Signal(object) # datetime + range_datetime_selected = Signal(object, object) # start_datetime, end_datetime + + def __init__( + self, + parent=None, + show_range_toggle: bool = True, + show_time: bool = False, + minute_step: int = 30 + ): + """ + Args: + parent: 부모 위젯 + show_range_toggle: 기간 토글 버튼 표시 여부 + show_time: 시간 선택 표시 여부 + minute_step: 분 단위 (기본 30분) + """ + super().__init__(parent) + + self.config = ConfigManager() + self._show_range_toggle = show_range_toggle + self._show_time = show_time + self._minute_step = minute_step + self._range_mode = False + self._first_click = True # 기간 모드에서 첫 번째 클릭인지 + self._start_date: Optional[QDate] = None + self._end_date: Optional[QDate] = None + + self._setup_ui() + self._connect_signals() + + def _setup_ui(self): + """UI 설정""" + layout = QVBoxLayout(self) + layout.setContentsMargins(0, 0, 0, 0) + layout.setSpacing(8) + + theme = self.config.theme + is_dark = theme == 'dark' + + # 상단 툴바 (기간 토글, 날짜 표시) + toolbar = QWidget() + toolbar_layout = QHBoxLayout(toolbar) + toolbar_layout.setContentsMargins(8, 4, 8, 4) + toolbar_layout.setSpacing(8) + + # 선택된 날짜/기간 표시 + self.date_label = QLabel("날짜를 선택하세요") + self.date_label.setFont(QFont("GmarketSans", 11)) + self.date_label.setStyleSheet(f"color: {'#94a3b8' if is_dark else '#64748b'};") + toolbar_layout.addWidget(self.date_label) + + toolbar_layout.addStretch() + + # 기간 토글 버튼 + if self._show_range_toggle: + self.range_btn = QPushButton("📅 기간") + self.range_btn.setCheckable(True) + self.range_btn.setFont(QFont("GmarketSans", 11)) + self.range_btn.setCursor(Qt.PointingHandCursor) + self.range_btn.clicked.connect(self._toggle_range_mode) + + btn_style = f""" + QPushButton {{ + background-color: {'#334155' if is_dark else '#e2e8f0'}; + color: {'#f8fafc' if is_dark else '#1e293b'}; + border: none; + border-radius: 6px; + padding: 6px 12px; + }} + QPushButton:hover {{ + background-color: {'#475569' if is_dark else '#cbd5e1'}; + }} + QPushButton:checked {{ + background-color: #3b82f6; + color: white; + }} + """ + self.range_btn.setStyleSheet(btn_style) + toolbar_layout.addWidget(self.range_btn) + else: + self.range_btn = None + + layout.addWidget(toolbar) + + # 캘린더 + self.calendar = RangeCalendarWidget() + layout.addWidget(self.calendar) + + # 시간 선택 영역 (옵션) + if self._show_time: + time_container = QWidget() + time_layout = QHBoxLayout(time_container) + time_layout.setContentsMargins(8, 8, 8, 8) + time_layout.setSpacing(16) + + # 시작 시간 (기간 모드) + self.start_time_label = QLabel("시작 시간:") + self.start_time_label.setFont(QFont("GmarketSans", 11)) + self.start_time_label.setStyleSheet(f"color: {'#f8fafc' if is_dark else '#1e293b'};") + self.start_time_label.setVisible(False) + time_layout.addWidget(self.start_time_label) + + self.start_time_selector = TimeSelector(minute_step=self._minute_step) + self.start_time_selector.time_changed.connect(self._on_time_changed) + time_layout.addWidget(self.start_time_selector) + + # 종료 시간 (기간 모드) + self.end_time_label = QLabel("→ 종료 시간:") + self.end_time_label.setFont(QFont("GmarketSans", 11)) + self.end_time_label.setStyleSheet(f"color: {'#f8fafc' if is_dark else '#1e293b'};") + self.end_time_label.setVisible(False) + time_layout.addWidget(self.end_time_label) + + self.end_time_selector = TimeSelector(minute_step=self._minute_step) + self.end_time_selector.time_changed.connect(self._on_time_changed) + self.end_time_selector.setVisible(False) + time_layout.addWidget(self.end_time_selector) + + time_layout.addStretch() + layout.addWidget(time_container) + else: + self.start_time_selector = None + self.end_time_selector = None + + # 하단 버튼 + btn_container = QWidget() + btn_layout = QHBoxLayout(btn_container) + btn_layout.setContentsMargins(8, 4, 8, 8) + btn_layout.setSpacing(8) + + # 오늘 버튼 + self.today_btn = QPushButton("오늘") + self.today_btn.setFont(QFont("GmarketSans", 11)) + self.today_btn.setCursor(Qt.PointingHandCursor) + self.today_btn.clicked.connect(self._go_to_today) + self.today_btn.setStyleSheet(f""" + QPushButton {{ + background-color: {'#334155' if is_dark else '#e2e8f0'}; + color: {'#f8fafc' if is_dark else '#1e293b'}; + border: none; + border-radius: 6px; + padding: 6px 16px; + }} + QPushButton:hover {{ + background-color: {'#475569' if is_dark else '#cbd5e1'}; + }} + """) + btn_layout.addWidget(self.today_btn) + + btn_layout.addStretch() + + # 초기화 버튼 + self.clear_btn = QPushButton("초기화") + self.clear_btn.setFont(QFont("GmarketSans", 11)) + self.clear_btn.setCursor(Qt.PointingHandCursor) + self.clear_btn.clicked.connect(self._clear_selection) + self.clear_btn.setStyleSheet(f""" + QPushButton {{ + background-color: {'#334155' if is_dark else '#e2e8f0'}; + color: {'#f8fafc' if is_dark else '#1e293b'}; + border: none; + border-radius: 6px; + padding: 6px 16px; + }} + QPushButton:hover {{ + background-color: {'#475569' if is_dark else '#cbd5e1'}; + }} + """) + btn_layout.addWidget(self.clear_btn) + + layout.addWidget(btn_container) + + def _connect_signals(self): + """시그널 연결""" + self.calendar.clicked.connect(self._on_date_clicked) + + def _toggle_range_mode(self): + """기간 선택 모드 토글""" + if self.range_btn: + self._range_mode = self.range_btn.isChecked() + else: + self._range_mode = not self._range_mode + + self._first_click = True + self._start_date = None + self._end_date = None + self.calendar.set_range_mode(self._range_mode) + + # 시간 선택기 표시/숨김 + if self._show_time: + self.start_time_label.setVisible(self._range_mode) + self.end_time_label.setVisible(self._range_mode) + self.end_time_selector.setVisible(self._range_mode) + + self._update_date_label() + + def set_range_mode(self, enabled: bool): + """외부에서 기간 모드 설정""" + if self.range_btn: + self.range_btn.setChecked(enabled) + self._range_mode = enabled + self.calendar.set_range_mode(enabled) + + if self._show_time: + self.start_time_label.setVisible(enabled) + self.end_time_label.setVisible(enabled) + self.end_time_selector.setVisible(enabled) + + self._update_date_label() + + def _on_date_clicked(self, qdate: QDate): + """날짜 클릭 이벤트""" + if self._range_mode: + # 기간 선택 모드 + if self._first_click: + # 첫 번째 클릭: 시작일 설정 + self._start_date = qdate + self._end_date = None + self._first_click = False + self.calendar.set_range(self._start_date, None) + else: + # 두 번째 클릭: 종료일 설정 + self._end_date = qdate + self._first_click = True + + # 시작일이 종료일보다 크면 스왑 + if self._start_date > self._end_date: + self._start_date, self._end_date = self._end_date, self._start_date + + self.calendar.set_range(self._start_date, self._end_date) + + # 시그널 발생 + start = date(self._start_date.year(), self._start_date.month(), self._start_date.day()) + end = date(self._end_date.year(), self._end_date.month(), self._end_date.day()) + + if self._show_time: + start_time = self.start_time_selector.get_time() + end_time = self.end_time_selector.get_time() + start_dt = datetime.combine(start, start_time) + end_dt = datetime.combine(end, end_time) + self.range_datetime_selected.emit(start_dt, end_dt) + else: + self.range_selected.emit(start, end) + else: + # 단일 날짜 선택 모드 + selected_date = date(qdate.year(), qdate.month(), qdate.day()) + + if self._show_time: + selected_time = self.start_time_selector.get_time() + selected_dt = datetime.combine(selected_date, selected_time) + self.datetime_selected.emit(selected_dt) + else: + self.date_selected.emit(selected_date) + + self._update_date_label() + + def _on_time_changed(self, _time): + """시간 변경 시""" + # 날짜가 선택된 상태에서 시간만 변경되면 시그널 발생 + if self._range_mode: + if self._start_date and self._end_date: + start = date(self._start_date.year(), self._start_date.month(), self._start_date.day()) + end = date(self._end_date.year(), self._end_date.month(), self._end_date.day()) + start_time = self.start_time_selector.get_time() + end_time = self.end_time_selector.get_time() + start_dt = datetime.combine(start, start_time) + end_dt = datetime.combine(end, end_time) + self.range_datetime_selected.emit(start_dt, end_dt) + else: + qdate = self.calendar.selectedDate() + selected_date = date(qdate.year(), qdate.month(), qdate.day()) + selected_time = self.start_time_selector.get_time() + selected_dt = datetime.combine(selected_date, selected_time) + self.datetime_selected.emit(selected_dt) + + self._update_date_label() + + def _update_date_label(self): + """날짜 라벨 업데이트""" + theme = self.config.theme + is_dark = theme == 'dark' + + if self._range_mode: + if self._start_date and self._end_date: + start = self._start_date + end = self._end_date + text = f"{start.year()}.{start.month():02d}.{start.day():02d}" + + if self._show_time: + st = self.start_time_selector.get_time() + text += f" {st.hour:02d}:{st.minute:02d}" + + text += f" ~ {end.year()}.{end.month():02d}.{end.day():02d}" + + if self._show_time: + et = self.end_time_selector.get_time() + text += f" {et.hour:02d}:{et.minute:02d}" + + self.date_label.setStyleSheet(f"color: {'#f8fafc' if is_dark else '#1e293b'}; font-weight: bold;") + elif self._start_date: + text = f"{self._start_date.year()}.{self._start_date.month():02d}.{self._start_date.day():02d} ~ ?" + self.date_label.setStyleSheet(f"color: {'#f8fafc' if is_dark else '#1e293b'};") + else: + text = "시작일을 선택하세요" + self.date_label.setStyleSheet(f"color: {'#94a3b8' if is_dark else '#64748b'};") + else: + qdate = self.calendar.selectedDate() + text = f"{qdate.year()}.{qdate.month():02d}.{qdate.day():02d}" + + if self._show_time: + t = self.start_time_selector.get_time() + text += f" {t.hour:02d}:{t.minute:02d}" + + self.date_label.setStyleSheet(f"color: {'#f8fafc' if is_dark else '#1e293b'}; font-weight: bold;") + + self.date_label.setText(text) + + def _go_to_today(self): + """오늘 날짜로 이동""" + self.calendar.setSelectedDate(QDate.currentDate()) + + if not self._range_mode: + today = date.today() + if self._show_time: + now = datetime.now() + self.start_time_selector.set_time(now.time()) + self.datetime_selected.emit(now) + else: + self.date_selected.emit(today) + + self._update_date_label() + + def _clear_selection(self): + """선택 초기화""" + self._first_click = True + self._start_date = None + self._end_date = None + self.calendar.set_range(None, None) + + if self._show_time: + self.start_time_selector.set_time(time(0, 0)) + if self.end_time_selector: + self.end_time_selector.set_time(time(0, 0)) + + self._update_date_label() + + def set_date(self, d: date): + """날짜 설정""" + self.calendar.setSelectedDate(QDate(d.year, d.month, d.day)) + self._update_date_label() + + def get_date(self) -> date: + """선택된 날짜 반환""" + qdate = self.calendar.selectedDate() + return date(qdate.year(), qdate.month(), qdate.day()) + + def set_datetime(self, dt: datetime): + """날짜와 시간 설정""" + self.calendar.setSelectedDate(QDate(dt.year, dt.month, dt.day)) + if self._show_time: + self.start_time_selector.set_time(dt.time()) + self._update_date_label() + + def get_datetime(self) -> datetime: + """선택된 날짜+시간 반환""" + qdate = self.calendar.selectedDate() + d = date(qdate.year(), qdate.month(), qdate.day()) + + if self._show_time: + t = self.start_time_selector.get_time() + else: + t = time(0, 0) + + return datetime.combine(d, t) + + def set_range(self, start: date, end: date): + """기간 설정""" + self._range_mode = True + if self.range_btn: + self.range_btn.setChecked(True) + + self._start_date = QDate(start.year, start.month, start.day) + self._end_date = QDate(end.year, end.month, end.day) + self._first_click = True + + self.calendar.set_range_mode(True) + self.calendar.set_range(self._start_date, self._end_date) + + if self._show_time: + self.start_time_label.setVisible(True) + self.end_time_label.setVisible(True) + self.end_time_selector.setVisible(True) + + self._update_date_label() + + def set_range_datetime(self, start: datetime, end: datetime): + """기간 + 시간 설정""" + self.set_range(start.date(), end.date()) + + if self._show_time: + self.start_time_selector.set_time(start.time()) + self.end_time_selector.set_time(end.time()) + + self._update_date_label() + + def get_range(self) -> Tuple[Optional[date], Optional[date]]: + """선택된 기간 반환""" + return self.calendar.get_range() + + def get_range_datetime(self) -> Tuple[Optional[datetime], Optional[datetime]]: + """선택된 기간 + 시간 반환""" + start_date, end_date = self.calendar.get_range() + + if start_date and end_date: + if self._show_time: + start_time = self.start_time_selector.get_time() + end_time = self.end_time_selector.get_time() + else: + start_time = time(0, 0) + end_time = time(23, 59) + + return ( + datetime.combine(start_date, start_time), + datetime.combine(end_date, end_time) + ) + + return None, None + + def highlight_dates(self, dates: list, color: str = "#3b82f6"): + """ + 여러 날짜 강조 표시 + + Args: + dates: date 리스트 + color: 강조 색상 + """ + highlight_format = QTextCharFormat() + highlight_format.setBackground(QColor(color)) + highlight_format.setForeground(QColor("#ffffff")) + + for d in dates: + self.calendar.setDateTextFormat(QDate(d.year, d.month, d.day), highlight_format) diff --git a/ui/components/custom_checkbox.py b/ui/components/custom_checkbox.py new file mode 100644 index 0000000..361ff01 --- /dev/null +++ b/ui/components/custom_checkbox.py @@ -0,0 +1,101 @@ +# -*- coding: utf-8 -*- +""" +커스텀 체크박스 모듈 +현대적인 디자인의 체크박스 위젯입니다. +""" + +from PySide6.QtWidgets import QCheckBox, QStyleOptionButton, QStyle +from PySide6.QtCore import Qt, QRect +from PySide6.QtGui import QPainter, QColor, QPen + +from ui.styles.style_manager import StyleManager +from core.logger import get_logger + +logger = get_logger(__name__) + + +class CustomCheckBox(QCheckBox): + """ + 커스텀 체크박스 위젯 + + 현대적인 디자인의 체크박스입니다. + """ + + def __init__(self, parent=None): + super().__init__(parent) + self.style_manager = StyleManager() + self._apply_style() + + def _apply_style(self): + """스타일 적용""" + colors = self.style_manager.get_colors() + + self.setStyleSheet(f""" + QCheckBox {{ + spacing: 8px; + }} + QCheckBox::indicator {{ + width: 24px; + height: 24px; + border: 2px solid {colors['border']}; + border-radius: 6px; + background-color: {colors['input_bg']}; + }} + QCheckBox::indicator:hover {{ + border-color: {colors['accent']}; + background-color: {colors['bg_hover']}; + }} + QCheckBox::indicator:checked {{ + background-color: {colors['accent']}; + border-color: {colors['accent']}; + }} + QCheckBox::indicator:checked:hover {{ + background-color: {colors['accent_hover']}; + border-color: {colors['accent_hover']}; + }} + """) + + def paintEvent(self, event): + """체크 표시 커스텀 그리기""" + super().paintEvent(event) + + if self.isChecked(): + # 체크 표시 그리기 + painter = QPainter(self) + painter.setRenderHint(QPainter.Antialiasing) + + # 인디케이터 영역 찾기 + opt = QStyleOptionButton() + self.initStyleOption(opt) + + indicator_rect = self.style().subElementRect( + QStyle.SubElement.SE_CheckBoxIndicator, + opt, + self + ) + + if indicator_rect.isValid(): + # 체크 표시 그리기 (✓) + painter.setPen(QPen(QColor("#ffffff"), 3)) + painter.setRenderHint(QPainter.Antialiasing) + + # 체크 표시 위치 계산 + x = indicator_rect.x() + y = indicator_rect.y() + w = indicator_rect.width() + h = indicator_rect.height() + + # ✓ 그리기 (V 모양) + center_x = x + w // 2 + center_y = y + h // 2 + + # 체크 표시 (V 모양 - 두 선) + painter.drawLine( + center_x - 5, center_y, + center_x - 1, center_y + 4 + ) + painter.drawLine( + center_x - 1, center_y + 4, + center_x + 5, center_y - 4 + ) + diff --git a/ui/components/custom_input.py b/ui/components/custom_input.py new file mode 100644 index 0000000..1b7e8bf --- /dev/null +++ b/ui/components/custom_input.py @@ -0,0 +1,780 @@ +# -*- coding: utf-8 -*- +""" +커스텀 입력 필드 모듈 +다양한 스타일의 커스텀 입력 필드를 정의합니다. + +이 모듈은 다음 입력 필드를 제공합니다: +- CustomLineEdit: 한 줄 입력 필드 +- CustomTextEdit: 여러 줄 입력 필드 +- CustomComboBox: 드롭다운 선택 필드 +- CustomDateInput: 날짜 입력 필드 (달력 팝업) +- CustomDateRangeInput: 기간 입력 필드 (달력 팝업) +""" + +from datetime import date +from typing import List, Optional, Tuple + +from PySide6.QtWidgets import ( + QLineEdit, QTextEdit, QComboBox, QWidget, QVBoxLayout, + QHBoxLayout, QLabel, QCompleter, QPushButton, QFrame +) +from PySide6.QtCore import Qt, Signal, QStringListModel, QPoint +from PySide6.QtGui import QFont, QColor + +from core.config import ConfigManager +from core.logger import get_logger +from ui.styles.style_manager import StyleManager + +logger = get_logger(__name__) + + +class CustomLineEdit(QLineEdit): + """ + 커스텀 한 줄 입력 필드 + + 현대적인 디자인의 입력 필드입니다. + 플레이스홀더, 아이콘, 유효성 검사 기능을 제공합니다. + + Attributes: + label: 입력 필드 라벨 + required: 필수 입력 여부 + + Examples: + >>> input_field = CustomLineEdit( + ... placeholder="이름을 입력하세요", + ... label="이름", + ... required=True + ... ) + """ + + # 시그널 + validation_changed = Signal(bool) # 유효성 변경 시그널 + + def __init__( + self, + parent=None, + placeholder: str = "", + label: str = "", + required: bool = False, + prefix_icon: str = "", + suffix_icon: str = "", + max_length: int = None, + completions: List[str] = None + ): + super().__init__(parent) + + self.config = ConfigManager() + self.style_manager = StyleManager() + self._label = label + self._required = required + self._is_valid = True + + # 기본 설정 + self.setPlaceholderText(placeholder) + + # 폰트 설정 (스타일 관리자 사용) + input_font = self.style_manager.get_font("dialog", "input") + self.setFont(input_font) + + if max_length: + self.setMaxLength(max_length) + + # 자동 완성 + if completions: + completer = QCompleter(completions) + completer.setCaseSensitivity(Qt.CaseInsensitive) + self.setCompleter(completer) + + # 유효성 검사 연결 + self.textChanged.connect(self._validate) + + self._apply_style() + + def _apply_style(self): + """스타일 적용""" + colors = self.style_manager.get_colors() + input_font = self.style_manager.get_font("dialog", "input") + + # 높이 자동 계산 + height = self.style_manager.calculate_input_height( + font=input_font, area="dialog", style="input" + ) + + border_color = colors['error'] if not self._is_valid else colors['input_border'] + + self.setStyleSheet(f""" + QLineEdit {{ + background-color: {colors['input_bg']}; + color: {colors['input_text']}; + border: 1px solid {border_color}; + border-radius: 6px; + padding: {height // 4}px 12px; + font-family: '{input_font.family()}'; + font-size: {input_font.pointSize()}pt; + min-height: {height}px; + }} + + QLineEdit:focus {{ + border-color: {colors['input_focus']}; + outline: none; + }} + + QLineEdit:disabled {{ + background-color: {colors['bg_tertiary']}; + color: {colors['text_disabled']}; + }} + + QLineEdit::placeholder {{ + color: {colors['text_tertiary']}; + }} + """) + + def _validate(self): + """유효성 검사""" + if self._required and not self.text().strip(): + self._is_valid = False + else: + self._is_valid = True + + self._apply_style() + self.validation_changed.emit(self._is_valid) + + @property + def is_valid(self) -> bool: + """유효성 상태 반환""" + return self._is_valid + + def set_error(self, is_error: bool): + """에러 상태 설정""" + self._is_valid = not is_error + self._apply_style() + + +class CustomTextEdit(QTextEdit): + """ + 커스텀 여러 줄 입력 필드 + + 여러 줄의 텍스트를 입력할 수 있는 필드입니다. + + Examples: + >>> text_edit = CustomTextEdit(placeholder="내용을 입력하세요") + """ + + # 시그널 + text_changed_signal = Signal(str) + + def __init__( + self, + parent=None, + placeholder: str = "", + min_height: int = 100, + max_height: int = None, + read_only: bool = False + ): + super().__init__(parent) + + self.config = ConfigManager() + + # 기본 설정 + self.setPlaceholderText(placeholder) + self.setFont(QFont("GmarketSans", 13)) + self.setMinimumHeight(min_height) + self.setReadOnly(read_only) + + if max_height: + self.setMaximumHeight(max_height) + + # 시그널 연결 + self.textChanged.connect(lambda: self.text_changed_signal.emit(self.toPlainText())) + + self._apply_style() + + def _apply_style(self): + """스타일 적용""" + theme = self.config.theme + + if theme == 'dark': + bg = "#1e293b" + border = "#334155" + text = "#f8fafc" + placeholder = "#64748b" + focus_border = "#3b82f6" + scrollbar_bg = "#1e293b" + scrollbar_handle = "#475569" + else: + bg = "#ffffff" + border = "#e2e8f0" + text = "#1e293b" + placeholder = "#94a3b8" + focus_border = "#3b82f6" + scrollbar_bg = "#f8fafc" + scrollbar_handle = "#cbd5e1" + + self.setStyleSheet(f""" + QTextEdit {{ + background-color: {bg}; + color: {text}; + border: 2px solid {border}; + border-radius: 8px; + padding: 10px; + font-size: 14px; + }} + + QTextEdit:focus {{ + border-color: {focus_border}; + }} + + QScrollBar:vertical {{ + background-color: {scrollbar_bg}; + width: 10px; + border-radius: 5px; + }} + + QScrollBar::handle:vertical {{ + background-color: {scrollbar_handle}; + border-radius: 5px; + min-height: 20px; + }} + + QScrollBar::handle:vertical:hover {{ + background-color: {focus_border}; + }} + """) + + def set_text(self, text: str): + """텍스트 설정""" + self.setPlainText(text) + + def get_text(self) -> str: + """텍스트 반환""" + return self.toPlainText() + + +class CustomComboBox(QComboBox): + """ + 커스텀 드롭다운 선택 필드 + + 목록에서 항목을 선택할 수 있는 드롭다운입니다. + + Examples: + >>> combo = CustomComboBox( + ... items=["옵션1", "옵션2", "옵션3"], + ... placeholder="선택하세요" + ... ) + """ + + # 시그널 + selection_changed = Signal(str) + + def __init__( + self, + parent=None, + items: List[str] = None, + placeholder: str = "", + editable: bool = False, + current_index: int = -1 + ): + super().__init__(parent) + + self.config = ConfigManager() + self.style_manager = StyleManager() + + # 기본 설정 + input_font = self.style_manager.get_font("dialog", "input") + self.setFont(input_font) + self.setEditable(editable) + + # 플레이스홀더 + if placeholder: + self.addItem(placeholder) + self.setCurrentIndex(0) + self.model().item(0).setEnabled(False) + + # 아이템 추가 + if items: + self.addItems(items) + + if current_index >= 0: + actual_index = current_index + (1 if placeholder else 0) + self.setCurrentIndex(actual_index) + + # 시그널 연결 + self.currentTextChanged.connect(self.selection_changed.emit) + + self._apply_style() + + def _apply_style(self): + """스타일 적용""" + colors = self.style_manager.get_colors() + input_font = self.style_manager.get_font("dialog", "input") + + # 높이 자동 계산 + height = self.style_manager.calculate_input_height( + font=input_font, area="dialog", style="input" + ) + + self.setStyleSheet(f""" + QComboBox {{ + background-color: {colors['input_bg']}; + color: {colors['input_text']}; + border: 1px solid {colors['input_border']}; + border-radius: 6px; + padding: {height // 4}px 12px; + font-family: '{input_font.family()}'; + font-size: {input_font.pointSize()}pt; + min-height: {height}px; + }} + + QComboBox:hover {{ + border-color: {colors['input_focus']}; + }} + + QComboBox:focus {{ + border-color: {colors['input_focus']}; + outline: none; + }} + + QComboBox::drop-down {{ + border: none; + width: 25px; + }} + + QComboBox::down-arrow {{ + image: none; + border-left: 5px solid transparent; + border-right: 5px solid transparent; + border-top: 6px solid {colors['input_text']}; + margin-right: 5px; + }} + + QComboBox QAbstractItemView {{ + background-color: {colors['input_bg']}; + color: {colors['input_text']}; + border: 1px solid {colors['input_border']}; + border-radius: 8px; + padding: 4px; + selection-background-color: {colors['accent']}; + selection-color: {colors['btn_primary_text']}; + }} + + QComboBox QAbstractItemView::item {{ + padding: 8px 12px; + border-radius: 4px; + }} + + QComboBox QAbstractItemView::item:hover {{ + background-color: {colors['bg_hover']}; + }} + """) + + def get_selected_value(self) -> Optional[str]: + """선택된 값 반환""" + text = self.currentText() + # 플레이스홀더 체크 + if self.currentIndex() == 0 and not self.itemData(0): + return None + return text + + def set_selected_value(self, value: str): + """값으로 선택""" + index = self.findText(value) + if index >= 0: + self.setCurrentIndex(index) + + def clear_selection(self): + """선택 초기화""" + if self.count() > 0: + self.setCurrentIndex(0) + + +class LabeledInput(QWidget): + """ + 라벨이 있는 입력 필드 컨테이너 + + 라벨과 입력 필드를 함께 제공합니다. + """ + + def __init__( + self, + label: str, + input_widget: QWidget, + parent=None, + required: bool = False, + horizontal: bool = False + ): + super().__init__(parent) + + self.config = ConfigManager() + self.style_manager = StyleManager() + self.input_widget = input_widget + + self._setup_ui(label, required, horizontal) + + def _setup_ui(self, label: str, required: bool, horizontal: bool): + """UI 설정""" + if horizontal: + layout = QHBoxLayout(self) + else: + layout = QVBoxLayout(self) + + layout.setContentsMargins(0, 0, 0, 0) + layout.setSpacing(6) + + # 라벨 + label_text = f"{label} *" if required else label + self.label = QLabel(label_text) + + # 폰트 설정 (스타일 관리자 사용) + label_font = self.style_manager.get_font("dialog", "label") + self.label.setFont(label_font) + + # 높이 계산 + label_height = self.style_manager.calculate_label_height( + font=label_font, area="dialog", style="label" + ) + + # 색상 설정 + colors = self.style_manager.get_colors() + text_color = colors['text_primary'] + required_color = colors['error'] + + self.label.setStyleSheet(f""" + QLabel {{ + color: {text_color}; + font-family: '{label_font.family()}'; + font-size: {label_font.pointSize()}pt; + min-height: {label_height}px; + }} + """) + + layout.addWidget(self.label) + layout.addWidget(self.input_widget, 1 if horizontal else 0) + + def get_value(self): + """입력 값 반환""" + if isinstance(self.input_widget, QLineEdit): + return self.input_widget.text() + elif isinstance(self.input_widget, QTextEdit): + return self.input_widget.toPlainText() + elif isinstance(self.input_widget, QComboBox): + return self.input_widget.currentText() + return None + + def set_value(self, value): + """입력 값 설정""" + if isinstance(self.input_widget, QLineEdit): + self.input_widget.setText(str(value) if value else "") + elif isinstance(self.input_widget, QTextEdit): + self.input_widget.setPlainText(str(value) if value else "") + elif isinstance(self.input_widget, QComboBox): + self.input_widget.setCurrentText(str(value) if value else "") + + +class CalendarPopup(QFrame): + """ + 달력 팝업 프레임 + + 날짜 입력 필드에서 사용하는 팝업 달력입니다. + """ + + date_selected = Signal(object) # date + range_selected = Signal(object, object) # start_date, end_date + closed = Signal() + + def __init__(self, parent=None, range_mode: bool = False): + super().__init__(parent, Qt.Popup | Qt.FramelessWindowHint) + + self.config = ConfigManager() + self._range_mode = range_mode + + self._setup_ui() + self._apply_style() + + def _setup_ui(self): + """UI 설정""" + from ui.components.custom_calendar import CustomCalendar + + layout = QVBoxLayout(self) + layout.setContentsMargins(0, 0, 0, 0) + layout.setSpacing(0) + + self.calendar = CustomCalendar(show_range_toggle=self._range_mode) + self.calendar.date_selected.connect(self._on_date_selected) + self.calendar.range_selected.connect(self._on_range_selected) + + layout.addWidget(self.calendar) + + def _apply_style(self): + """스타일 적용""" + theme = self.config.theme + + if theme == 'dark': + bg = "#1e293b" + border = "#334155" + else: + bg = "#ffffff" + border = "#e2e8f0" + + self.setStyleSheet(f""" + CalendarPopup {{ + background-color: {bg}; + border: 1px solid {border}; + border-radius: 12px; + }} + """) + + def _on_date_selected(self, selected_date: date): + """날짜 선택됨""" + self.date_selected.emit(selected_date) + if not self._range_mode: + self.close() + + def _on_range_selected(self, start: date, end: date): + """기간 선택됨""" + self.range_selected.emit(start, end) + self.close() + + def set_date(self, d: date): + """날짜 설정""" + self.calendar.set_date(d) + + def set_range(self, start: date, end: date): + """기간 설정""" + self.calendar.set_range(start, end) + + def closeEvent(self, event): + """닫기 이벤트""" + self.closed.emit() + super().closeEvent(event) + + +class CustomDateInput(QWidget): + """ + 커스텀 날짜 입력 필드 + + 클릭 시 달력 팝업이 표시됩니다. + + Signals: + date_changed: 날짜 변경 시그널 (date) + + Examples: + >>> date_input = CustomDateInput(placeholder="날짜 선택") + >>> date_input.date_changed.connect(self.on_date_changed) + """ + + date_changed = Signal(object) # date + + def __init__( + self, + parent=None, + placeholder: str = "날짜 선택", + initial_date: date = None + ): + super().__init__(parent) + + self.config = ConfigManager() + self._date = initial_date or date.today() + self._popup: Optional[CalendarPopup] = None + + self._setup_ui(placeholder) + + def _setup_ui(self, placeholder: str): + """UI 설정""" + layout = QHBoxLayout(self) + layout.setContentsMargins(0, 0, 0, 0) + layout.setSpacing(0) + + theme = self.config.theme + is_dark = theme == 'dark' + + # 날짜 표시 버튼 (클릭 가능) + self.date_btn = QPushButton() + self.date_btn.setFont(QFont("GmarketSans", 13)) + self.date_btn.setCursor(Qt.PointingHandCursor) + self.date_btn.clicked.connect(self._show_calendar) + + self._update_display() + + self.date_btn.setStyleSheet(f""" + QPushButton {{ + background-color: {'#1e293b' if is_dark else '#ffffff'}; + color: {'#f8fafc' if is_dark else '#1e293b'}; + border: 2px solid {'#334155' if is_dark else '#e2e8f0'}; + border-radius: 8px; + padding: 10px 14px; + text-align: left; + }} + QPushButton:hover {{ + border-color: #3b82f6; + }} + QPushButton:focus {{ + border-color: #3b82f6; + }} + """) + + layout.addWidget(self.date_btn) + + def _update_display(self): + """날짜 표시 업데이트""" + if self._date: + text = f"📅 {self._date.year}.{self._date.month:02d}.{self._date.day:02d}" + else: + text = "📅 날짜 선택" + self.date_btn.setText(text) + + def _show_calendar(self): + """달력 팝업 표시""" + if self._popup and self._popup.isVisible(): + self._popup.close() + return + + self._popup = CalendarPopup(self, range_mode=False) + self._popup.date_selected.connect(self._on_date_selected) + self._popup.closed.connect(self._on_popup_closed) + + if self._date: + self._popup.set_date(self._date) + + # 팝업 위치 계산 + pos = self.mapToGlobal(QPoint(0, self.height() + 4)) + self._popup.move(pos) + self._popup.show() + + def _on_date_selected(self, selected_date: date): + """날짜 선택됨""" + self._date = selected_date + self._update_display() + self.date_changed.emit(selected_date) + + def _on_popup_closed(self): + """팝업 닫힘""" + self._popup = None + + def get_date(self) -> Optional[date]: + """선택된 날짜 반환""" + return self._date + + def set_date(self, d: date): + """날짜 설정""" + self._date = d + self._update_display() + + +class CustomDateRangeInput(QWidget): + """ + 커스텀 기간 입력 필드 + + 클릭 시 기간 선택이 가능한 달력 팝업이 표시됩니다. + + Signals: + range_changed: 기간 변경 시그널 (start: date, end: date) + + Examples: + >>> range_input = CustomDateRangeInput() + >>> range_input.range_changed.connect(self.on_range_changed) + """ + + range_changed = Signal(object, object) # start_date, end_date + + def __init__( + self, + parent=None, + placeholder: str = "기간 선택", + initial_start: date = None, + initial_end: date = None + ): + super().__init__(parent) + + self.config = ConfigManager() + self._start_date = initial_start + self._end_date = initial_end + self._popup: Optional[CalendarPopup] = None + + self._setup_ui(placeholder) + + def _setup_ui(self, placeholder: str): + """UI 설정""" + layout = QHBoxLayout(self) + layout.setContentsMargins(0, 0, 0, 0) + layout.setSpacing(0) + + theme = self.config.theme + is_dark = theme == 'dark' + + # 기간 표시 버튼 (클릭 가능) + self.range_btn = QPushButton() + self.range_btn.setFont(QFont("GmarketSans", 13)) + self.range_btn.setCursor(Qt.PointingHandCursor) + self.range_btn.clicked.connect(self._show_calendar) + + self._update_display() + + self.range_btn.setStyleSheet(f""" + QPushButton {{ + background-color: {'#1e293b' if is_dark else '#ffffff'}; + color: {'#f8fafc' if is_dark else '#1e293b'}; + border: 2px solid {'#334155' if is_dark else '#e2e8f0'}; + border-radius: 8px; + padding: 10px 14px; + text-align: left; + }} + QPushButton:hover {{ + border-color: #3b82f6; + }} + QPushButton:focus {{ + border-color: #3b82f6; + }} + """) + + layout.addWidget(self.range_btn) + + def _update_display(self): + """기간 표시 업데이트""" + if self._start_date and self._end_date: + text = ( + f"📅 {self._start_date.year}.{self._start_date.month:02d}.{self._start_date.day:02d}" + f" ~ {self._end_date.year}.{self._end_date.month:02d}.{self._end_date.day:02d}" + ) + else: + text = "📅 기간 선택" + self.range_btn.setText(text) + + def _show_calendar(self): + """달력 팝업 표시""" + if self._popup and self._popup.isVisible(): + self._popup.close() + return + + self._popup = CalendarPopup(self, range_mode=True) + self._popup.range_selected.connect(self._on_range_selected) + self._popup.closed.connect(self._on_popup_closed) + + if self._start_date and self._end_date: + self._popup.set_range(self._start_date, self._end_date) + + # 팝업 위치 계산 + pos = self.mapToGlobal(QPoint(0, self.height() + 4)) + self._popup.move(pos) + self._popup.show() + + def _on_range_selected(self, start: date, end: date): + """기간 선택됨""" + self._start_date = start + self._end_date = end + self._update_display() + self.range_changed.emit(start, end) + + def _on_popup_closed(self): + """팝업 닫힘""" + self._popup = None + + def get_range(self) -> Tuple[Optional[date], Optional[date]]: + """선택된 기간 반환""" + return self._start_date, self._end_date + + def set_range(self, start: date, end: date): + """기간 설정""" + self._start_date = start + self._end_date = end + self._update_display() + diff --git a/ui/components/custom_table.py b/ui/components/custom_table.py new file mode 100644 index 0000000..af9c06a --- /dev/null +++ b/ui/components/custom_table.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +""" +커스텀 테이블 모듈 +고급 기능이 포함된 커스텀 테이블 위젯입니다. +""" + +from .train_info_popup import TrainInfoMixin +from ..base.base_table import BaseTable + +class CustomTable(BaseTable, TrainInfoMixin): + """ + 커스텀 테이블 + + 편성 정보 팝업 기능이 포함된 테이블입니다. + """ + + def __init__(self, parent=None): + super().__init__(parent) + self.setup_train_popup() + + diff --git a/ui/components/dropdown.py b/ui/components/dropdown.py new file mode 100644 index 0000000..9368e58 --- /dev/null +++ b/ui/components/dropdown.py @@ -0,0 +1,13 @@ +# -*- coding: utf-8 -*- +""" +드롭다운 모듈 +커스텀 드롭다운 위젯입니다. +CustomComboBox의 별칭입니다. +""" + +from .custom_input import CustomComboBox + +# CustomComboBox를 Dropdown으로 별칭 지정 +Dropdown = CustomComboBox + + diff --git a/ui/components/filter_card.py b/ui/components/filter_card.py new file mode 100644 index 0000000..4364e45 --- /dev/null +++ b/ui/components/filter_card.py @@ -0,0 +1,166 @@ +# -*- coding: utf-8 -*- +""" +필터 카드 컴포넌트 +- 카드(QFrame) 자체 클릭(혹은 헤더 클릭) 시 QMenu 팝업을 카드 아래에 표시 +- 카드 내부에 칩(활성 필터) 영역 포함 +""" + +from __future__ import annotations + +from typing import Callable, Optional + +from PySide6.QtWidgets import QFrame, QVBoxLayout, QHBoxLayout, QLabel, QWidget, QMenu +from PySide6.QtCore import Qt, Signal, QPoint +from PySide6.QtGui import QCursor, QMouseEvent + +from ui.components.flow_layout import FlowLayout +from ui.components.filter_chip_button import FilterChipButton + +from core.logger import get_logger + +logger = get_logger(__name__) + +try: + from ui.styles.style_manager import StyleManager # type: ignore +except Exception: + StyleManager = None # noqa: N816 + + +class FilterCard(QFrame): + """ + 필터 카드 + - header 영역 클릭 시 팝업(QMenu) + - 내부 chips_area에 FilterChipButton을 추가해서 활성 필터 표시 + """ + + opened = Signal() # 카드가 열림(팝업 표시 시점) - 필요시 사용 + + def __init__( + self, + title: str, + icon: str = "", + popup_builder: Optional[Callable[[QMenu], None]] = None, + parent=None + ): + super().__init__(parent) + + self._style_manager = StyleManager() if StyleManager else None + self._popup_builder = popup_builder + + self.setObjectName("FilterCard") + self.setCursor(Qt.PointingHandCursor) + + self._build_ui(title, icon) + self._apply_style() + + def _build_ui(self, title: str, icon: str): + layout = QVBoxLayout(self) + layout.setContentsMargins(10, 10, 10, 10) + layout.setSpacing(8) + + # 헤더(아이콘 + 제목) + header = QWidget(self) + header.setObjectName("CardHeader") + header_layout = QHBoxLayout(header) + header_layout.setContentsMargins(0, 0, 0, 0) + header_layout.setSpacing(8) + + self.icon_label = QLabel(icon) + self.icon_label.setObjectName("CardIcon") + self.icon_label.setAlignment(Qt.AlignCenter) + self.icon_label.setFixedWidth(18) + + self.title_label = QLabel(title) + self.title_label.setObjectName("CardTitle") + self.title_label.setAlignment(Qt.AlignVCenter | Qt.AlignLeft) + + header_layout.addWidget(self.icon_label, 0) + header_layout.addWidget(self.title_label, 1) + + layout.addWidget(header) + + # 칩 영역(이 카드의 활성 필터들 표시) + self.chips_area = QWidget(self) + self.chips_area.setObjectName("CardChipsArea") + self.chips_area.setMinimumHeight(28) # 최소 한 줄 보장 + + self.flow_layout = FlowLayout(self.chips_area, margin=0, h_spacing=6, v_spacing=6) + + layout.addWidget(self.chips_area) + + # 빈 상태 힌트 + self.empty_hint = QLabel("없음") + self.empty_hint.setObjectName("CardEmptyHint") + self.empty_hint.setAlignment(Qt.AlignLeft | Qt.AlignVCenter) + layout.addWidget(self.empty_hint) + + self._sync_empty_hint() + + def _apply_style(self): + colors = self._style_manager.get_colors() if self._style_manager else { + "bg_primary": "#151515", + "bg_secondary": "#1e1e1e", + "text_primary": "#f0f0f0", + } + + self.setStyleSheet(f""" + QFrame#FilterCard {{ + background-color: {colors.get('bg_secondary')}; + border: 1px solid rgba(255,255,255,0.10); + border-radius: 12px; + }} + QFrame#FilterCard:hover {{ + border: 1px solid rgba(255,255,255,0.22); + background-color: rgba(255,255,255,0.03); + }} + + QWidget#CardHeader {{ + background: transparent; + }} + + QLabel#CardTitle {{ + color: {colors.get('text_primary', '#f0f0f0')}; + font-weight: 800; + font-size: 9px; + min-height: 0px; /* 핵심 */ + padding: 0px; /* 여백 강제 제거 */ + + }} + QLabel#CardEmptyHint {{ + color: rgba(255,255,255,0.65); + font-size: 11px; + min-height: 0px; /* 핵심 */ + padding: 0px; /* 여백 강제 제거 */ + + }} + """) + + def set_popup_builder(self, builder: Callable[[QMenu], None]): + self._popup_builder = builder + + def show_popup(self): + if not self._popup_builder: + return + menu = QMenu(self) + self._popup_builder(menu) + + # 카드 아래에 뜨도록 위치 결정 + global_pos = self.mapToGlobal(QPoint(10, self.height() - 6)) + self.opened.emit() + menu.exec(global_pos) + + def mousePressEvent(self, event: QMouseEvent): + if event.button() == Qt.LeftButton: + self.show_popup() + event.accept() + return + super().mousePressEvent(event) + + def _sync_empty_hint(self): + chips = self.chips_area.findChildren(FilterChipButton) + self.empty_hint.setVisible(len(chips) == 0) + + def notify_chips_changed(self): + self._sync_empty_hint() + self.chips_area.updateGeometry() + self.chips_area.repaint() diff --git a/ui/components/filter_chip.py b/ui/components/filter_chip.py new file mode 100644 index 0000000..52acc83 --- /dev/null +++ b/ui/components/filter_chip.py @@ -0,0 +1,165 @@ +# -*- coding: utf-8 -*- +""" +필터 칩 버튼 모듈 +- 칩 자체가 버튼(QToolButton)이며 클릭하면 제거 신호 발생 +- hover 시 "삭제 가능" 시각적 강조 +""" + +from __future__ import annotations + +from dataclasses import dataclass +from typing import Optional + +from PySide6.QtWidgets import QToolButton, QSizePolicy +from PySide6.QtCore import Qt, Signal, QSize + +from core.logger import get_logger + +logger = get_logger(__name__) + + +try: + from ui.styles.style_manager import StyleManager # type: ignore +except Exception: + StyleManager = None # noqa: N816 + + +@dataclass(frozen=True) +class ChipButtonTheme: + height: int = 28 + padding_x: int = 10 + radius: int = 14 + font_px: int = 12 + max_width: Optional[int] = None # 필요시 칩 최대폭 제한 + + +class FilterChipButton(QToolButton): + """ + 필터 칩(버튼) + - 클릭하면 removed(filter_key) 신호를 발생 + - hover 시 강조 + 툴팁 "클릭하여 제거" + """ + + removed = Signal(str) # filter_key + + def __init__( + self, + text: str, + filter_key: str, + filter_type: str = "", + color: Optional[str] = None, + theme: ChipButtonTheme = ChipButtonTheme(), + parent=None, + ): + super().__init__(parent) + + self._text = text + self.filter_key = filter_key + self.filter_type = filter_type + self.theme = theme + + self._style_manager = StyleManager() if StyleManager else None + self._bg = color or self._get_default_color(filter_type) + + self.setText(text) + self.setCursor(Qt.PointingHandCursor) + self.setAutoRaise(True) + self.setFocusPolicy(Qt.NoFocus) + + # 레이아웃/FlowLayout에서 안정적으로 보이도록 + self.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed) + self.setFixedHeight(self.theme.height) + + if self.theme.max_width: + self.setMaximumWidth(self.theme.max_width) + + # 툴팁: hover 시 사용자에게 "삭제" 행동을 안내 + self.setToolTip("클릭하여 제거") + + # 클릭하면 제거 + self.clicked.connect(self._on_clicked) + + # hover 스타일용 dynamic property + self.setProperty("chipHover", False) + + self._apply_style() + + def sizeHint(self) -> QSize: + # 텍스트 길이에 따라 폭이 자연스럽게 늘어나도록 + hint = super().sizeHint() + h = self.theme.height + return QSize(max(hint.width() + 6, 40), h) + + def enterEvent(self, event): + self.setProperty("chipHover", True) + self.style().unpolish(self) + self.style().polish(self) + super().enterEvent(event) + + def leaveEvent(self, event): + self.setProperty("chipHover", False) + self.style().unpolish(self) + self.style().polish(self) + super().leaveEvent(event) + + def _on_clicked(self): + self.removed.emit(self.filter_key) + + def _get_default_color(self, filter_type: str) -> str: + color_map = { + "date": "#7c4dff", + "team": "#2979ff", + "status": "#00bfa5", + "search": "#ff4081", + "device": "#ff9800", + "train": "#607d8b", + } + return color_map.get(filter_type, "#64748b") + + def _apply_style(self): + # 폰트는 StyleManager 있으면 사용 + if self._style_manager: + try: + f = self._style_manager.get_font("dialog", "content") + self.setFont(f) + except Exception: + logger.debug("StyleManager 폰트 적용 실패. 시스템 기본 폰트 사용") + + h = self.theme.height + r = self.theme.radius + px = self.theme.padding_x + + # hover/pressed는 오버레이로 처리 (배경색은 유지하면서 강조) + self.setStyleSheet(f""" + QToolButton {{ + background: {self._bg}; + color: #ffffff; + border: 1px solid rgba(0,0,0,0.12); + border-radius: {r}px; + padding-left: {px}px; + padding-right: {px}px; + min-height: {h}px; + max-height: {h}px; + font-size: {self.theme.font_px}px; + font-weight: 600; + }} + + /* hover 강조: 살짝 밝아지고 테두리 강조 + 그림자 느낌 */ + QToolButton[chipHover="true"] {{ + border: 1px solid rgba(255,255,255,0.55); + background: qlineargradient( + x1:0, y1:0, x2:0, y2:1, + stop:0 rgba(255,255,255,0.15), + stop:1 rgba(255,255,255,0.00) + ), {self._bg}; + }} + + /* pressed: 더 강한 오버레이 */ + QToolButton:pressed {{ + background: qlineargradient( + x1:0, y1:0, x2:0, y2:1, + stop:0 rgba(0,0,0,0.18), + stop:1 rgba(0,0,0,0.05) + ), {self._bg}; + }} + """) diff --git a/ui/components/flow_layout.py b/ui/components/flow_layout.py new file mode 100644 index 0000000..2cb9634 --- /dev/null +++ b/ui/components/flow_layout.py @@ -0,0 +1,107 @@ +# -*- coding: utf-8 -*- +""" +Flow Layout 모듈 +칩이나 태그가 자동으로 줄바꿈되는 레이아웃입니다. +""" + +from PySide6.QtWidgets import QLayout +from PySide6.QtCore import Qt, QRect, QPoint, QSize + +from core.logger import get_logger + +logger = get_logger(__name__) + + +class FlowLayout(QLayout): + """ + Flow Layout + + 가로 공간이 부족하면 자동으로 다음 줄로 넘어가는 레이아웃입니다. + 칩이나 태그 UI에 사용됩니다. + """ + + def __init__(self, parent=None, margin=0, h_spacing=10, v_spacing=10): + super().__init__(parent) + self.h_spacing = h_spacing + self.v_spacing = v_spacing + self.items = [] + self.setContentsMargins(margin, margin, margin, margin) + + def addItem(self, item): + """아이템 추가""" + self.items.append(item) + + def count(self): + """아이템 개수""" + return len(self.items) + + def itemAt(self, index): + """인덱스로 아이템 가져오기""" + if 0 <= index < len(self.items): + return self.items[index] + return None + + def takeAt(self, index): + """인덱스로 아이템 제거""" + if 0 <= index < len(self.items): + return self.items.pop(index) + return None + + def expandingDirections(self): + """확장 방향""" + return Qt.Orientations(Qt.Orientation(0)) + + def hasHeightForWidth(self): + """너비에 따른 높이 지원""" + return True + + def heightForWidth(self, width): + """너비에 따른 높이 계산""" + return self._do_layout(QRect(0, 0, width, 0), True) + + def setGeometry(self, rect): + """지오메트리 설정""" + super().setGeometry(rect) + self._do_layout(rect, False) + + def sizeHint(self): + """크기 힌트""" + return self.minimumSize() + + def minimumSize(self): + """최소 크기""" + size = QSize() + for item in self.items: + size = size.expandedTo(item.minimumSize()) + size += QSize(2 * self.contentsMargins().top(), 2 * self.contentsMargins().top()) + return size + + def _do_layout(self, rect, test_only): + """레이아웃 수행""" + x, y = rect.x(), rect.y() + line_height = 0 + + for item in self.items: + wid = item.widget() + space_x = self.h_spacing + space_y = self.v_spacing + next_x = x + item.sizeHint().width() + space_x + + if next_x - space_x > rect.right() and line_height > 0: + x = rect.x() + y = y + line_height + space_y + next_x = x + item.sizeHint().width() + space_x + line_height = 0 + + if not test_only: + item.setGeometry(QRect(QPoint(x, y), item.sizeHint())) + + x = next_x + line_height = max(line_height, item.sizeHint().height()) + + return y + line_height - rect.y() + + + + + diff --git a/ui/components/popup_widget.py b/ui/components/popup_widget.py new file mode 100644 index 0000000..4d66d17 --- /dev/null +++ b/ui/components/popup_widget.py @@ -0,0 +1,299 @@ +# -*- coding: utf-8 -*- +""" +팝업 위젯 모듈 +마우스 호버 시 표시되는 팝업 위젯을 정의합니다. +""" + +from PySide6.QtWidgets import ( + QWidget, QVBoxLayout, QHBoxLayout, QLabel, + QPushButton, QGraphicsDropShadowEffect +) +from PySide6.QtCore import Qt, Signal, QTimer, QPoint +from PySide6.QtGui import QFont, QColor + +from core.config import ConfigManager +from core.logger import get_logger + +logger = get_logger(__name__) + + +class PopupWidget(QWidget): + """ + 팝업 위젯 + + 마우스 호버 시 표시되는 팝업 정보 창입니다. + 일정 시간 후 자동으로 사라집니다. + + Signals: + action_clicked: 액션 버튼 클릭 시그널 + popup_closed: 팝업 닫힘 시그널 + + Examples: + >>> popup = PopupWidget(title="정보") + >>> popup.add_row("항목1", "값1") + >>> popup.show_at(QPoint(100, 100)) + """ + + action_clicked = Signal(str) # 액션 ID + popup_closed = Signal() + + def __init__( + self, + parent=None, + title: str = "", + width: int = 280, + auto_hide: bool = True, + auto_hide_delay: int = 3000 + ): + super().__init__(parent) + + self.config = ConfigManager() + self.title_text = title + self._width = width + self._auto_hide = auto_hide + self._auto_hide_delay = auto_hide_delay + + # 숨김 타이머 + self._hide_timer = QTimer() + self._hide_timer.setSingleShot(True) + self._hide_timer.timeout.connect(self.hide_popup) + + # 윈도우 설정 + self.setWindowFlags( + Qt.ToolTip | + Qt.FramelessWindowHint | + Qt.WindowStaysOnTopHint + ) + self.setAttribute(Qt.WA_TranslucentBackground) + + self._setup_ui() + + def _setup_ui(self): + """UI 설정""" + # 메인 레이아웃 + main_layout = QVBoxLayout(self) + main_layout.setContentsMargins(0, 0, 0, 0) + + # 컨테이너 + self.container = QWidget() + self.container.setObjectName("popupContainer") + self.container.setFixedWidth(self._width) + main_layout.addWidget(self.container) + + # 컨테이너 레이아웃 + self.container_layout = QVBoxLayout(self.container) + self.container_layout.setContentsMargins(16, 12, 16, 12) + self.container_layout.setSpacing(8) + + # 헤더 + if self.title_text: + self.title_label = QLabel(self.title_text) + self.title_label.setObjectName("popupTitle") + self.title_label.setFont(QFont("GmarketSans", 13, QFont.Bold)) + self.container_layout.addWidget(self.title_label) + + # 컨텐츠 영역 + self.content_widget = QWidget() + self.content_layout = QVBoxLayout(self.content_widget) + self.content_layout.setContentsMargins(0, 0, 0, 0) + self.content_layout.setSpacing(6) + self.container_layout.addWidget(self.content_widget) + + # 액션 영역 + self.action_widget = QWidget() + self.action_layout = QHBoxLayout(self.action_widget) + self.action_layout.setContentsMargins(0, 8, 0, 0) + self.action_layout.setSpacing(8) + self.action_widget.hide() + self.container_layout.addWidget(self.action_widget) + + # 그림자 효과 + shadow = QGraphicsDropShadowEffect() + shadow.setBlurRadius(20) + shadow.setOffset(0, 4) + shadow.setColor(QColor(0, 0, 0, 60)) + self.container.setGraphicsEffect(shadow) + + # 스타일 적용 + self._apply_style() + + def _apply_style(self): + """스타일 적용""" + theme = self.config.theme + + if theme == 'dark': + bg = "#1e293b" + border = "#334155" + text = "#f8fafc" + secondary = "#94a3b8" + else: + bg = "#ffffff" + border = "#e2e8f0" + text = "#1e293b" + secondary = "#64748b" + + self.setStyleSheet(f""" + #popupContainer {{ + background-color: {bg}; + border: 1px solid {border}; + border-radius: 12px; + }} + + #popupTitle {{ + color: {text}; + font-weight: bold; + }} + + QLabel {{ + color: {text}; + }} + + .secondary {{ + color: {secondary}; + }} + """) + + def add_row(self, label: str, value: str, is_secondary: bool = False): + """ + 행 추가 + + Args: + label: 라벨 + value: 값 + is_secondary: 보조 텍스트 여부 + """ + row = QWidget() + row_layout = QHBoxLayout(row) + row_layout.setContentsMargins(0, 0, 0, 0) + row_layout.setSpacing(8) + + label_widget = QLabel(label) + label_widget.setFont(QFont("GmarketSans", 12)) + if is_secondary: + label_widget.setProperty("class", "secondary") + + value_widget = QLabel(value) + value_widget.setFont(QFont("GmarketSans", 12)) + value_widget.setAlignment(Qt.AlignRight) + + row_layout.addWidget(label_widget) + row_layout.addStretch() + row_layout.addWidget(value_widget) + + self.content_layout.addWidget(row) + + def add_text(self, text: str, is_secondary: bool = False): + """ + 텍스트 추가 + + Args: + text: 텍스트 + is_secondary: 보조 텍스트 여부 + """ + label = QLabel(text) + label.setFont(QFont("GmarketSans", 12)) + label.setWordWrap(True) + + if is_secondary: + label.setProperty("class", "secondary") + + self.content_layout.addWidget(label) + + def add_action(self, text: str, action_id: str, primary: bool = False): + """ + 액션 버튼 추가 + + Args: + text: 버튼 텍스트 + action_id: 액션 ID + primary: 주요 버튼 여부 + """ + self.action_widget.show() + + btn = QPushButton(text) + btn.setCursor(Qt.PointingHandCursor) + btn.setFont(QFont("GmarketSans", 11)) + btn.clicked.connect(lambda: self._on_action_clicked(action_id)) + + if primary: + btn.setStyleSheet(""" + QPushButton { + background-color: #3b82f6; + color: white; + border: none; + border-radius: 6px; + padding: 6px 12px; + } + QPushButton:hover { + background-color: #2563eb; + } + """) + else: + btn.setStyleSheet(""" + QPushButton { + background-color: transparent; + color: #3b82f6; + border: none; + padding: 6px 12px; + } + QPushButton:hover { + background-color: #f1f5f9; + border-radius: 6px; + } + """) + + self.action_layout.addWidget(btn) + + def _on_action_clicked(self, action_id: str): + """액션 버튼 클릭""" + self.action_clicked.emit(action_id) + self.hide_popup() + + def show_at(self, position: QPoint): + """ + 지정된 위치에 팝업 표시 + + Args: + position: 표시 위치 + """ + self.adjustSize() + self.move(position) + self.show() + + if self._auto_hide: + self._hide_timer.start(self._auto_hide_delay) + + def hide_popup(self): + """팝업 숨기기""" + self._hide_timer.stop() + self.hide() + self.popup_closed.emit() + + def clear(self): + """컨텐츠 초기화""" + # 컨텐츠 위젯 비우기 + while self.content_layout.count(): + item = self.content_layout.takeAt(0) + if item.widget(): + item.widget().deleteLater() + + # 액션 위젯 비우기 + while self.action_layout.count(): + item = self.action_layout.takeAt(0) + if item.widget(): + item.widget().deleteLater() + + self.action_widget.hide() + + def enterEvent(self, event): + """마우스 진입 - 자동 숨김 중지""" + self._hide_timer.stop() + super().enterEvent(event) + + def leaveEvent(self, event): + """마우스 이탈 - 자동 숨김 재시작""" + if self._auto_hide: + self._hide_timer.start(self._auto_hide_delay) + super().leaveEvent(event) + + diff --git a/ui/components/splitter.py b/ui/components/splitter.py new file mode 100644 index 0000000..ba8b90b --- /dev/null +++ b/ui/components/splitter.py @@ -0,0 +1,148 @@ +# -*- coding: utf-8 -*- +""" +커스텀 분리바 모듈 +드래그로 크기를 조절할 수 있는 분리바를 정의합니다. +""" + +from PySide6.QtWidgets import QSplitter, QSplitterHandle, QWidget +from PySide6.QtCore import Qt +from PySide6.QtGui import QPainter, QColor, QPen + +from core.config import ConfigManager +from core.logger import get_logger + +logger = get_logger(__name__) + + +class CustomSplitterHandle(QSplitterHandle): + """ + 커스텀 분리바 핸들 + + 드래그 가능한 분리바 핸들입니다. + 중앙에 점 표시를 제공합니다. + """ + + def __init__(self, orientation, parent): + super().__init__(orientation, parent) + + self.config = ConfigManager() + self._is_hovered = False + + def paintEvent(self, event): + """페인트 이벤트""" + painter = QPainter(self) + painter.setRenderHint(QPainter.Antialiasing) + + theme = self.config.theme + + if theme == 'dark': + bg_color = "#1e293b" if not self._is_hovered else "#334155" + dot_color = "#475569" if not self._is_hovered else "#64748b" + else: + bg_color = "#f1f5f9" if not self._is_hovered else "#e2e8f0" + dot_color = "#cbd5e1" if not self._is_hovered else "#94a3b8" + + # 배경 + painter.fillRect(self.rect(), QColor(bg_color)) + + # 점 표시 + painter.setPen(Qt.NoPen) + painter.setBrush(QColor(dot_color)) + + if self.orientation() == Qt.Horizontal: + # 수직 분리바 - 가로로 점 3개 + cx = self.width() // 2 + cy = self.height() // 2 + for i in range(-1, 2): + painter.drawEllipse(cx - 2, cy + (i * 8) - 2, 4, 4) + else: + # 수평 분리바 - 세로로 점 3개 + cx = self.width() // 2 + cy = self.height() // 2 + for i in range(-1, 2): + painter.drawEllipse(cx + (i * 8) - 2, cy - 2, 4, 4) + + def enterEvent(self, event): + """마우스 진입 이벤트""" + self._is_hovered = True + self.update() + super().enterEvent(event) + + def leaveEvent(self, event): + """마우스 이탈 이벤트""" + self._is_hovered = False + self.update() + super().leaveEvent(event) + + +class CustomSplitter(QSplitter): + """ + 커스텀 분리바 위젯 + + 두 위젯 사이에 드래그로 크기를 조절할 수 있는 분리바를 제공합니다. + + Examples: + >>> splitter = CustomSplitter(Qt.Horizontal) + >>> splitter.addWidget(left_widget) + >>> splitter.addWidget(right_widget) + >>> splitter.setSizes([700, 300]) + """ + + def __init__(self, orientation=Qt.Horizontal, parent=None): + super().__init__(orientation, parent) + + self.config = ConfigManager() + + # 핸들 크기 설정 + self.setHandleWidth(6) + + # 스타일 적용 + self._apply_style() + + def createHandle(self): + """핸들 생성 오버라이드""" + return CustomSplitterHandle(self.orientation(), self) + + def _apply_style(self): + """스타일 적용""" + theme = self.config.theme + + if theme == 'dark': + bg = "#0f172a" + else: + bg = "#f8fafc" + + self.setStyleSheet(f""" + QSplitter {{ + background-color: {bg}; + }} + + QSplitter::handle {{ + background-color: transparent; + }} + """) + + def set_ratios(self, ratios: list): + """ + 비율로 크기 설정 + + Args: + ratios: 비율 리스트 (예: [70, 30]) + """ + total = self.width() if self.orientation() == Qt.Horizontal else self.height() + ratio_sum = sum(ratios) + + sizes = [int(total * r / ratio_sum) for r in ratios] + self.setSizes(sizes) + + def get_ratios(self) -> list: + """현재 비율 반환""" + sizes = self.sizes() + total = sum(sizes) + + if total == 0: + return [50, 50] + + return [int(s * 100 / total) for s in sizes] + + diff --git a/ui/components/team_confirmation_widget.py b/ui/components/team_confirmation_widget.py new file mode 100644 index 0000000..9be0053 --- /dev/null +++ b/ui/components/team_confirmation_widget.py @@ -0,0 +1,112 @@ +# -*- coding: utf-8 -*- +""" +팀 확인 위젯 모듈 +각 팀의 확인 상태를 토글 방식으로 표시하는 위젯입니다. +""" + +from typing import Dict, List +from PySide6.QtWidgets import QWidget, QGridLayout, QLabel +from PySide6.QtCore import Qt, Signal + +from ui.components.toggle_switch import ToggleSwitch +from ui.styles.style_manager import StyleManager +from core.constants import TEAMS +from core.logger import get_logger + +logger = get_logger(__name__) + + +class TeamConfirmationWidget(QWidget): + """ + 팀 확인 위젯 + + 각 팀의 확인 상태를 토글 스위치로 표시합니다. + 확인한 팀만 표시되며, 2열로 배치됩니다. + """ + + confirmation_changed = Signal(str, bool) # 팀명, 확인여부 + + def __init__(self, confirmations: Dict[str, bool] = None, parent=None): + super().__init__(parent) + + self.style_manager = StyleManager() + self.confirmations = confirmations or {team: False for team in TEAMS} + self.toggles: Dict[str, ToggleSwitch] = {} + + self._setup_ui() + + def _setup_ui(self): + """UI 설정""" + layout = QGridLayout(self) + layout.setContentsMargins(4, 4, 4, 4) + layout.setSpacing(8) + + colors = self.style_manager.get_colors() + + # 2열로 배치: 1열에 1팀,2팀, 2열에 3팀,4팀 + for idx, team in enumerate(TEAMS): + row = idx // 2 # 0 또는 1 + col = idx % 2 # 0 또는 1 + + # 팀명 레이블 + team_label = QLabel(team) + team_font = self.style_manager.get_font("section", "content") + team_label.setFont(team_font) + team_label.setStyleSheet(f"color: {colors['text_secondary']};") + team_label.setAlignment(Qt.AlignLeft | Qt.AlignVCenter) + + # 토글 스위치 + toggle = ToggleSwitch( + initial_state=self.confirmations.get(team, False), + width=45, + height=24 + ) + toggle.toggled.connect(lambda checked, t=team: self._on_toggle_changed(t, checked)) + self.toggles[team] = toggle + + # 레이아웃에 추가 + layout.addWidget(team_label, row, col * 2) # 팀명은 0, 2 열 + layout.addWidget(toggle, row, col * 2 + 1) # 토글은 1, 3 열 + + # 열 비율 설정 + layout.setColumnStretch(0, 1) + layout.setColumnStretch(1, 0) + layout.setColumnStretch(2, 1) + layout.setColumnStretch(3, 0) + + def _on_toggle_changed(self, team: str, checked: bool): + """토글 변경 이벤트""" + self.confirmations[team] = checked + self.confirmation_changed.emit(team, checked) + logger.debug(f"팀 확인 상태 변경: {team} = {checked}") + + def set_confirmations(self, confirmations: Dict[str, bool]): + """확인 상태 설정""" + self.confirmations = confirmations + for team, toggle in self.toggles.items(): + toggle.blockSignals(True) + toggle.set_state(confirmations.get(team, False), animate=False) + toggle.blockSignals(False) + + def get_confirmations(self) -> Dict[str, bool]: + """확인 상태 반환""" + return self.confirmations.copy() + + def get_confirmed_teams(self) -> List[str]: + """확인한 팀 목록 반환""" + return [team for team, confirmed in self.confirmations.items() if confirmed] + + def all_confirmed(self) -> bool: + """모든 팀 확인 여부""" + return all(self.confirmations.values()) + + def update_display(self): + """표시 업데이트 (확인한 팀만 표시)""" + # 현재는 모든 팀을 표시하되, 확인한 팀은 토글이 켜진 상태로 표시 + # 필요시 확인한 팀만 표시하도록 변경 가능 + pass + + + + + diff --git a/ui/components/toggle_switch.py b/ui/components/toggle_switch.py new file mode 100644 index 0000000..5ad7cc5 --- /dev/null +++ b/ui/components/toggle_switch.py @@ -0,0 +1,207 @@ +# -*- coding: utf-8 -*- +""" +토글 스위치 모듈 +iOS 스타일의 토글 스위치 위젯을 정의합니다. +""" + +from PySide6.QtWidgets import QWidget, QHBoxLayout, QLabel +from PySide6.QtCore import Qt, Signal, Property, QPropertyAnimation, QEasingCurve, QRectF +from PySide6.QtGui import QPainter, QColor, QBrush, QPen, QFont + +from core.config import ConfigManager +from core.logger import get_logger + +logger = get_logger(__name__) + + +class ToggleSwitch(QWidget): + """ + 토글 스위치 위젯 + + iOS 스타일의 슬라이딩 토글 스위치입니다. + 부드러운 애니메이션 효과를 제공합니다. + + Signals: + toggled: 토글 상태 변경 시그널 (bool) + + Examples: + >>> switch = ToggleSwitch(initial_state=True) + >>> switch.toggled.connect(self.on_toggle) + """ + + toggled = Signal(bool) + + def __init__( + self, + parent=None, + initial_state: bool = False, + width: int = 50, + height: int = 26, + on_color: str = "#22c55e", + off_color: str = "#64748b" + ): + super().__init__(parent) + + self.config = ConfigManager() + self._is_on = initial_state + self._width = width + self._height = height + self._on_color = on_color + self._off_color = off_color + + # 핸들 위치 (애니메이션용) + self._handle_position = width - height + 4 if initial_state else 4 + + # 크기 설정 + self.setFixedSize(width, height) + self.setCursor(Qt.PointingHandCursor) + + # 애니메이션 + self._animation = QPropertyAnimation(self, b"handle_position") + self._animation.setDuration(150) + self._animation.setEasingCurve(QEasingCurve.InOutQuad) + + def get_handle_position(self) -> float: + """핸들 위치 반환""" + return self._handle_position + + def set_handle_position(self, value: float): + """핸들 위치 설정""" + self._handle_position = value + self.update() + + handle_position = Property(float, get_handle_position, set_handle_position) + + def paintEvent(self, event): + """페인트 이벤트""" + painter = QPainter(self) + painter.setRenderHint(QPainter.Antialiasing) + + # 배경 (라운드 렉트) + if self._is_on: + bg_color = QColor(self._on_color) + else: + bg_color = QColor(self._off_color) + + painter.setBrush(QBrush(bg_color)) + painter.setPen(Qt.NoPen) + painter.drawRoundedRect( + 0, 0, self._width, self._height, + self._height // 2, self._height // 2 + ) + + # 핸들 (원) + handle_size = self._height - 8 + painter.setBrush(QBrush(QColor("#ffffff"))) + painter.drawEllipse( + int(self._handle_position), + 4, + handle_size, + handle_size + ) + + def mousePressEvent(self, event): + """마우스 클릭 이벤트""" + if event.button() == Qt.LeftButton: + self.toggle() + + def toggle(self): + """토글 상태 전환""" + self._is_on = not self._is_on + + # 애니메이션 실행 + end_position = self._width - self._height + 4 if self._is_on else 4 + self._animation.setStartValue(self._handle_position) + self._animation.setEndValue(end_position) + self._animation.start() + + self.toggled.emit(self._is_on) + + @property + def is_on(self) -> bool: + """현재 상태 반환""" + return self._is_on + + def set_state(self, state: bool, animate: bool = True): + """ + 상태 설정 + + Args: + state: 새로운 상태 + animate: 애니메이션 여부 + """ + if state == self._is_on: + return + + self._is_on = state + end_position = self._width - self._height + 4 if state else 4 + + if animate: + self._animation.setStartValue(self._handle_position) + self._animation.setEndValue(end_position) + self._animation.start() + else: + self._handle_position = end_position + self.update() + + +class LabeledToggle(QWidget): + """ + 라벨이 있는 토글 스위치 + + 라벨과 토글 스위치를 함께 제공합니다. + """ + + toggled = Signal(bool) + + def __init__( + self, + label: str, + parent=None, + initial_state: bool = False, + label_position: str = "left" + ): + super().__init__(parent) + + self.config = ConfigManager() + + self._setup_ui(label, initial_state, label_position) + + def _setup_ui(self, label: str, initial_state: bool, label_position: str): + """UI 설정""" + layout = QHBoxLayout(self) + layout.setContentsMargins(0, 0, 0, 0) + layout.setSpacing(12) + + # 라벨 + self.label = QLabel(label) + self.label.setFont(QFont("GmarketSans", 13)) + + theme = self.config.theme + text_color = "#f8fafc" if theme == 'dark' else "#1e293b" + self.label.setStyleSheet(f"color: {text_color};") + + # 토글 스위치 + self.switch = ToggleSwitch(initial_state=initial_state) + self.switch.toggled.connect(self.toggled.emit) + + # 레이아웃 + if label_position == "left": + layout.addWidget(self.label) + layout.addStretch() + layout.addWidget(self.switch) + else: + layout.addWidget(self.switch) + layout.addWidget(self.label) + layout.addStretch() + + @property + def is_on(self) -> bool: + """현재 상태 반환""" + return self.switch.is_on + + def set_state(self, state: bool): + """상태 설정""" + self.switch.set_state(state) + + diff --git a/ui/components/train_info_popup.py b/ui/components/train_info_popup.py new file mode 100644 index 0000000..7e36b23 --- /dev/null +++ b/ui/components/train_info_popup.py @@ -0,0 +1,219 @@ +# -*- coding: utf-8 -*- +""" +편성 정보 팝업 모듈 +편성번호 위에 마우스를 올리면 표시되는 최근 고장 목록 팝업입니다. +""" + +from typing import List +from datetime import date +from PySide6.QtCore import Qt, Signal, QPoint +from PySide6.QtWidgets import QVBoxLayout, QLabel, QWidget, QScrollArea +from PySide6.QtGui import QFont + +from .popup_widget import PopupWidget +from database.crud import CRUDManager +from database.models import Fault +from core.config import ConfigManager +from core.signals import GlobalSignals +from core.logger import get_logger + +logger = get_logger(__name__) + + +class TrainInfoPopup(PopupWidget): + """ + 편성 정보 팝업 + + 편성번호 필드 위에 마우스를 올리면 해당 편성의 최근 고장 목록을 표시합니다. + + Signals: + detail_requested: 상세 보기 요청 시그널 (편성번호) + + Examples: + >>> popup = TrainInfoPopup() + >>> popup.show_train_info("001", QPoint(100, 100)) + """ + + detail_requested = Signal(str) # 편성번호 + + def __init__(self, parent=None): + super().__init__( + parent, + title="", + width=320, + auto_hide=True, + auto_hide_delay=5000 + ) + + self.crud = CRUDManager() + self.signals = GlobalSignals() + self._current_train = "" + + # 시그널 연결 + self.signals.show_train_popup.connect(self._on_show_popup) + self.signals.hide_train_popup.connect(self.hide_popup) + + def show_train_info(self, train_number: str, position: QPoint): + """ + 편성 정보 팝업 표시 + + Args: + train_number: 편성번호 + position: 표시 위치 + """ + if not train_number: + return + + self._current_train = train_number + + # 컨텐츠 초기화 + self.clear() + + # 제목 업데이트 + if hasattr(self, 'title_label'): + self.title_label.setText(f"편성 {train_number} 최근 고장") + + # 최근 고장 목록 조회 + faults = self.crud.get_faults_by_train(train_number, limit=5) + + if faults: + self._add_fault_list(faults) + else: + self.add_text("최근 고장 기록이 없습니다.", is_secondary=True) + + # 액션 버튼 + self.action_layout.addStretch() + self.add_action("자세히 보기", "detail", primary=True) + + # 팝업 표시 + self.show_at(position) + + def _add_fault_list(self, faults: List[Fault]): + """ + 고장 목록 추가 + + Args: + faults: 고장 리스트 + """ + for fault in faults: + self._add_fault_item(fault) + + def _add_fault_item(self, fault: Fault): + """ + 고장 항목 추가 + + Args: + fault: 고장 객체 + """ + item = QWidget() + item_layout = QVBoxLayout(item) + item_layout.setContentsMargins(8, 8, 8, 8) + item_layout.setSpacing(4) + + theme = self.config.theme + + if theme == 'dark': + bg = "#334155" + text = "#f8fafc" + secondary = "#94a3b8" + else: + bg = "#f1f5f9" + text = "#1e293b" + secondary = "#64748b" + + item.setStyleSheet(f""" + background-color: {bg}; + border-radius: 8px; + """) + + # 날짜 + 호차 + date_str = "" + if fault.occurrence_date: + if isinstance(fault.occurrence_date, date): + date_str = fault.occurrence_date.strftime("%Y-%m-%d") + else: + date_str = str(fault.occurrence_date)[:10] + + header = QLabel(f"{date_str} | {fault.car_number or ''}호차") + header.setFont(QFont("GmarketSans", 11)) + header.setStyleSheet(f"color: {secondary}; background: transparent;") + item_layout.addWidget(header) + + # 고장 내용 + content = fault.fault_content or "" + if len(content) > 40: + content = content[:40] + "..." + + content_label = QLabel(content) + content_label.setFont(QFont("GmarketSans", 12)) + content_label.setWordWrap(True) + content_label.setStyleSheet(f"color: {text}; background: transparent;") + item_layout.addWidget(content_label) + + # 장치분류 + 고장코드 + if fault.device_category or fault.fault_code: + tag_text = f"{fault.device_category or ''} {fault.fault_code or ''}".strip() + tag_label = QLabel(tag_text) + tag_label.setFont(QFont("GmarketSans", 10)) + tag_label.setStyleSheet(f"color: {secondary}; background: transparent;") + item_layout.addWidget(tag_label) + + self.content_layout.addWidget(item) + + def _on_show_popup(self, train_number: str, x: int, y: int): + """시그널 핸들러: 팝업 표시""" + self.show_train_info(train_number, QPoint(x, y)) + + def _on_action_clicked(self, action_id: str): + """액션 버튼 클릭""" + if action_id == "detail": + self.detail_requested.emit(self._current_train) + + super()._on_action_clicked(action_id) + + +class TrainInfoMixin: + """ + 편성 정보 팝업 믹스인 + + 편성번호 필드가 있는 위젯에서 사용할 수 있는 믹스인입니다. + 마우스 호버 이벤트를 처리하여 팝업을 표시합니다. + + Examples: + >>> class MyTable(BaseTable, TrainInfoMixin): + ... def __init__(self): + ... super().__init__() + ... self.setup_train_popup() + """ + + def setup_train_popup(self): + """편성 팝업 초기화""" + self._train_popup = TrainInfoPopup(self) + self._train_popup.detail_requested.connect(self.on_train_detail_requested) + + def show_train_popup(self, train_number: str, position: QPoint): + """ + 편성 팝업 표시 + + Args: + train_number: 편성번호 + position: 표시 위치 + """ + if hasattr(self, '_train_popup'): + self._train_popup.show_train_info(train_number, position) + + def hide_train_popup(self): + """편성 팝업 숨기기""" + if hasattr(self, '_train_popup'): + self._train_popup.hide_popup() + + def on_train_detail_requested(self, train_number: str): + """ + 편성 상세 정보 요청 (오버라이드 가능) + + Args: + train_number: 편성번호 + """ + logger.info(f"편성 상세 정보 요청: {train_number}") + + diff --git a/ui/components/train_selection.py b/ui/components/train_selection.py new file mode 100644 index 0000000..ed02948 --- /dev/null +++ b/ui/components/train_selection.py @@ -0,0 +1,283 @@ +# -*- coding: utf-8 -*- +""" +편성 선택 위젯 모듈 +편성을 칩 형태로 표시하고 선택할 수 있는 재사용 가능한 위젯입니다. +""" + +from typing import List, Dict, Any, Optional + +from PySide6.QtWidgets import ( + QWidget, QVBoxLayout, QHBoxLayout, QLabel, QPushButton, + QScrollArea, QButtonGroup, QFrame +) +from PySide6.QtCore import Qt, Signal +from PySide6.QtGui import QFont + +from ui.components.chips.choice_chip_button import ChoiceChipButton +from ui.components.flow_layout import FlowLayout +from core.config import ConfigManager +from database.common_db_manager import CommonDatabaseManager + + +class TrainChip(QPushButton): + """ + 편성 선택 칩 + + 편성 번호를 표시하며, 신차/구차에 따라 다른 색상을 적용합니다. + - 구차: 파란색 배경 + - 신차: 주황색 배경 + """ + + chip_selected = Signal(int, str) # train_id, train_number + + def __init__(self, train_id: int, train_number: str, is_new: bool, parent=None): + super().__init__(parent) + + self.config = ConfigManager() + self.train_id = train_id + self.train_number = train_number + self.is_new = is_new + self._is_selected = False + + self.setText(self.train_number) + self.setFixedSize(60, 32) + self.setCursor(Qt.PointingHandCursor) + self.setFont(QFont("GmarketSans", 10, QFont.Bold)) + + self.clicked.connect(self._on_clicked) + self._apply_style() + + def _on_clicked(self): + """클릭 이벤트""" + self.chip_selected.emit(self.train_id, self.train_number) + + def set_selected(self, selected: bool): + """선택 상태 설정""" + self._is_selected = selected + self._apply_style() + + def _apply_style(self): + """스타일 적용""" + # 구차: 파란색, 신차: 주황색 + if not self.is_new: + base_color = "#3b82f6" + selected_border = "#1d4ed8" + else: + base_color = "#f97316" + selected_border = "#c2410c" + + if self._is_selected: + self.setStyleSheet(f""" + QPushButton {{ + background-color: {base_color}; + color: white; + border: 3px solid {selected_border}; + border-radius: 8px; + font-weight: bold; + }} + """) + else: + theme = self.config.theme + if theme == 'dark': + bg = "#334155" + text = "#94a3b8" + else: + bg = "#e2e8f0" + text = "#64748b" + + self.setStyleSheet(f""" + QPushButton {{ + background-color: {bg}; + color: {text}; + border: 2px solid transparent; + border-radius: 8px; + }} + QPushButton:hover {{ + background-color: {base_color}; + color: white; + }} + """) + + +class TrainSelectionWidget(QWidget): + """ + 편성 선택 위젯 + + 편성 목록을 로드하고 칩 형태로 표시합니다. + 배속 필터링(전체/신평/노포) 기능을 제공합니다. + """ + + train_selected = Signal(str) # train_number + + def __init__(self, parent=None, existing_trains: List[str] = None): + super().__init__(parent) + + self.config = ConfigManager() + self.db = CommonDatabaseManager() + self.existing_trains = existing_trains or [] + + self._selected_train_number: str = "" + self._train_chips: List[TrainChip] = [] + + self._setup_ui() + self._load_trains(depot_filter="신평") # 기본값 + + def _setup_ui(self): + """UI 설정""" + layout = QVBoxLayout(self) + layout.setContentsMargins(0, 0, 0, 0) + layout.setSpacing(8) + + theme = self.config.theme + text_color = "#f8fafc" if theme == 'dark' else "#1e293b" + border_color = "#334155" if theme == 'dark' else "#e2e8f0" + + # 헤더 (라벨 + 필터) + header = QWidget() + header_layout = QHBoxLayout(header) + header_layout.setContentsMargins(0, 0, 0, 0) + + # 배속 필터 + self.depot_group = QButtonGroup() + self.depot_group.setExclusive(True) + self.selected_depot = "신평" + + depot_container = QWidget() + depot_layout = QHBoxLayout(depot_container) + depot_layout.setContentsMargins(0, 0, 0, 0) + depot_layout.setSpacing(4) + + def create_depot_chip(text: str, key: str): + is_selected = (key == self.selected_depot) + bg_color = "#3b82f6" if is_selected else "#404040" + + chip = ChoiceChipButton(text=text, key=key, bg=bg_color) + chip.setFixedHeight(28) + chip.setFont(QFont("GmarketSans", 10, QFont.Bold)) + self.depot_group.addButton(chip) + depot_layout.addWidget(chip) + + if is_selected: + chip.setChecked(True) + + def make_handler(depot_key: str): + def handler(): + self.selected_depot = depot_key + for btn in self.depot_group.buttons(): + if isinstance(btn, ChoiceChipButton): + if btn.key == depot_key: + btn.set_bg("#3b82f6") + else: + btn.set_bg("#404040") + self._on_depot_filter_changed(depot_key) + return handler + + chip.clicked_key.connect(make_handler(key)) + return chip + + create_depot_chip("전체", "전체") + create_depot_chip("신평", "신평") + create_depot_chip("노포", "노포") + + header_layout.addWidget(depot_container) + header_layout.addStretch() + + layout.addWidget(header) + + # 편성 칩 컨테이너 (스크롤) + self.train_scroll = QScrollArea() + self.train_scroll.setWidgetResizable(True) + self.train_scroll.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) + self.train_scroll.setVerticalScrollBarPolicy(Qt.ScrollBarAsNeeded) + self.train_scroll.setMinimumHeight(160) + self.train_scroll.setMaximumHeight(180) + + scroll_bg = "#1e293b" if theme == 'dark' else "#f8fafc" + self.train_scroll.setStyleSheet(f""" + QScrollArea {{ + background-color: {scroll_bg}; + border: 1px solid {border_color}; + border-radius: 8px; + }} + QScrollArea > QWidget > QWidget {{ + background-color: {scroll_bg}; + }} + """) + + self.train_container = QWidget() + self.train_flow_layout = FlowLayout(margin=8, h_spacing=6, v_spacing=6) + self.train_container.setLayout(self.train_flow_layout) + self.train_scroll.setWidget(self.train_container) + + layout.addWidget(self.train_scroll) + + def _load_trains(self, depot_filter: str = None): + """DB에서 편성 목록 로드""" + query = "SELECT * FROM train_formations WHERE 1=1" + params = [] + + if depot_filter and depot_filter != "전체": + query += " AND depot = ?" + params.append(depot_filter) + + query += " ORDER BY train_number" + + trains = self.db.fetch_all(query, tuple(params) if params else None) + self._create_train_chips(trains) + + def _create_train_chips(self, trains: List[Dict[str, Any]]): + """편성 칩 생성""" + for chip in self._train_chips: + chip.deleteLater() + self._train_chips.clear() + + for train in trains: + train_id = train.get('id') + train_number = train.get('train_number', '') + is_new = bool(train.get('is_new_train', True)) + + chip = TrainChip(train_id, train_number, is_new) + chip.chip_selected.connect(self._on_train_selected) + + if train_number in self.existing_trains and train_number != self._selected_train_number: + chip.setEnabled(False) + chip.setToolTip("이미 다른 슬롯에 등록된 편성입니다.") + chip.setStyleSheet(f""" + QPushButton {{ + background-color: {'#404040' if self.config.theme == 'dark' else '#e2e8f0'}; + color: {'#737373' if self.config.theme == 'dark' else '#94a3b8'}; + border: 1px solid transparent; + border-radius: 8px; + }} + """) + + if self._selected_train_number == train_number: + chip.set_selected(True) + + self._train_chips.append(chip) + self.train_flow_layout.addWidget(chip) + + self.train_container.updateGeometry() + + def _on_depot_filter_changed(self, depot: str): + """배속 필터 변경""" + self._load_trains(depot_filter=depot) + + def _on_train_selected(self, train_id: int, train_number: str): + """편성 선택""" + for chip in self._train_chips: + chip.set_selected(chip.train_number == train_number) + + self._selected_train_number = train_number + self.train_selected.emit(train_number) + + def set_selected_train(self, train_number: str): + """선택된 편성 설정""" + self._selected_train_number = train_number + # 현재 로드된 칩들 중에서 찾아서 선택 상태 업데이트 + for chip in self._train_chips: + chip.set_selected(chip.train_number == train_number) + + def get_selected_train(self) -> str: + """선택된 편성 반환""" + return self._selected_train_number \ No newline at end of file diff --git a/ui/dialogs/__init__.py b/ui/dialogs/__init__.py new file mode 100644 index 0000000..add7327 --- /dev/null +++ b/ui/dialogs/__init__.py @@ -0,0 +1,31 @@ +# -*- coding: utf-8 -*- +""" +다이얼로그 패키지 +로그인, 설정, 사용자 관리, 입력 다이얼로그 정의 +""" + +from .login_dialog import LoginDialog +from .settings_dialog import SettingsDialog +from .user_management_dialog import UserManagementDialog +from .input_dialog import InputDialog +from .train_input_dialog import TrainInputDialog +from .todo_input_dialog import TodoInputDialog +from .memo_input_dialog import MemoInputDialog +from .weather_detail_dialog import WeatherDetailDialog +from .weather_location_dialog import WeatherLocationDialog +from .handover_dialog import HandoverDialog + +__all__ = [ + 'LoginDialog', + 'SettingsDialog', + 'UserManagementDialog', + 'InputDialog', + 'TrainInputDialog', + 'TodoInputDialog', + 'MemoInputDialog', + 'WeatherDetailDialog', + 'WeatherLocationDialog', + 'HandoverDialog', +] + + diff --git a/ui/dialogs/action_step_dialog.py b/ui/dialogs/action_step_dialog.py new file mode 100644 index 0000000..c2cbe03 --- /dev/null +++ b/ui/dialogs/action_step_dialog.py @@ -0,0 +1,203 @@ +# -*- coding: utf-8 -*- +""" +조치 단계 다이얼로그 모듈 +조치 단계를 추가/편집하는 다이얼로그입니다. +""" + +from typing import Optional, Dict, Any +from PySide6.QtWidgets import ( + QWidget, QVBoxLayout, QHBoxLayout, QPushButton, QLabel +) +from PySide6.QtCore import Qt + +from PySide6.QtCore import QPoint +from ui.base.base_dialog import BaseDialog +from ui.components.custom_input import CustomTextEdit +from ui.widgets.clickableLabel import ClickableLabel +from core.constants import TEAMS +from core.logger import get_logger + +logger = get_logger(__name__) + + +class ActionStepDialog(BaseDialog): + """조치 단계 다이얼로그""" + + def __init__(self, parent=None, step_data: Optional[Dict[str, Any]] = None): + super().__init__( + parent=parent, + title="조치 단계 편집" if step_data else "조치 단계 추가", + width=500, + height=400, + min_width=450, + min_height=350 + ) + + self.step_data = step_data + self._selected_team = "" + + self._setup_ui() + self._apply_black_theme() + + if step_data: + self._load_step_data(step_data) + + def _setup_ui(self): + """UI 설정""" + # 조치 내용 + content_label = QLabel("조치 내용 *") + content_label.setStyleSheet("color: #e0e0e0; font-size: 11pt; font-weight: bold;") + self.content_layout.addWidget(content_label) + + self.content_input = CustomTextEdit( + placeholder="조치 내용을 입력하세요\n예: 리셋 후 정상 복구 확인.", + min_height=150 + ) + self.content_layout.addWidget(self.content_input) + + # 조치팀 + team_label = QLabel("조치팀") + team_label.setStyleSheet("color: #e0e0e0; font-size: 11pt; font-weight: bold;") + self.content_layout.addWidget(team_label) + + self.team_label = ClickableLabel("선택", enable_hover=True) + self.team_label.setStyleSheet(""" + QLabel { + background-color: #2a2a2a; + color: #ffffff; + border: 1px solid #404040; + border-radius: 6px; + padding: 8px 12px; + font-size: 11pt; + } + QLabel:hover { + border-color: #3b82f6; + } + """) + self.team_label.clicked.connect(self._show_team_popup) + self.content_layout.addWidget(self.team_label) + + # 버튼 + self.add_confirm_cancel_buttons() + + def _show_team_popup(self): + """조치팀 선택 팝업""" + from ui.components.chips.choice_chip_button import ChoiceChipButton + from ui.components.popup_widget import PopupWidget + from PySide6.QtWidgets import QHBoxLayout, QWidget, QButtonGroup + + popup = PopupWidget(self, title="조치팀 선택", width=300, auto_hide=False) + + chip_container = QWidget() + chip_layout = QHBoxLayout(chip_container) + chip_layout.setContentsMargins(8, 8, 8, 8) + chip_layout.setSpacing(8) + + button_group = QButtonGroup() + button_group.setExclusive(True) + + current_team = self._selected_team or "" + + def on_team_selected(team_key: str): + self._selected_team = team_key + self.team_label.setText(team_key) + popup.hide_popup() + + for team in TEAMS: + chip_bg = "#64748b" if team == current_team else "#2979ff" + + chip = ChoiceChipButton(text=team, key=team, bg=chip_bg) + button_group.addButton(chip) + chip_layout.addWidget(chip) + + if team == current_team: + chip.setChecked(True) + + def make_chip_handler(team_key: str): + def handler(): + for btn in button_group.buttons(): + if isinstance(btn, ChoiceChipButton): + if btn.key == team_key: + btn.set_bg("#64748b") + else: + btn.set_bg("#2979ff") + on_team_selected(team_key) + return handler + + chip.clicked_key.connect(make_chip_handler(team)) + + chip_layout.addStretch() + popup.content_layout.addWidget(chip_container) + + label_pos = self.team_label.mapToGlobal(QPoint(0, 0)) + popup_pos = QPoint(label_pos.x(), label_pos.y() + self.team_label.height() + 5) + popup.show_at(popup_pos) + + def _load_step_data(self, step_data: Dict[str, Any]): + """조치 단계 데이터 로드""" + self.content_input.set_text(step_data.get('action_content', '')) + team = step_data.get('action_team', '') + if team: + self._selected_team = team + self.team_label.setText(team) + + def _apply_black_theme(self): + """블랙 테마 적용""" + self.setStyleSheet(""" + QDialog { + background-color: #0a0a0a; + } + + #dialogContainer { + background-color: #1a1a1a; + border: 1px solid #333333; + border-radius: 16px; + } + + #dialogTitle { + color: #ffffff; + font-family: 'GmarketSans'; + font-size: 18pt; + font-weight: bold; + } + + #closeButton { + background-color: transparent; + border: none; + color: #ffffff; + font-size: 16px; + border-radius: 16px; + } + + #closeButton:hover { + background-color: #dc2626; + color: white; + } + + QLabel { + color: #e0e0e0; + font-family: 'GmarketSans'; + font-size: 11pt; + } + """) + + def get_data(self) -> Dict[str, Any]: + """입력 데이터 반환""" + return { + 'action_content': self.content_input.get_text(), + 'action_team': self._selected_team + } + + def validate(self) -> bool: + """입력 유효성 검사""" + if not self.content_input.get_text().strip(): + from PySide6.QtWidgets import QMessageBox + QMessageBox.warning(self, "입력 오류", "조치 내용을 입력해주세요.") + return False + return True + + def _on_confirm(self): + """확인 버튼 클릭""" + if self.validate(): + super()._on_confirm() + diff --git a/ui/dialogs/attachment_dialog.py b/ui/dialogs/attachment_dialog.py new file mode 100644 index 0000000..255580c --- /dev/null +++ b/ui/dialogs/attachment_dialog.py @@ -0,0 +1,1382 @@ +# -*- coding: utf-8 -*- +""" +첨부파일 관리 다이얼로그 모듈 +사진, PDF, HWP 등의 첨부파일을 업로드하고 관리하는 다이얼로그입니다. +""" + +from typing import List +from pathlib import Path +from datetime import date + +from PySide6.QtWidgets import ( + QWidget, QVBoxLayout, QHBoxLayout, QTabWidget, QLabel, + QScrollArea, QGridLayout, QFrame, QPushButton, QLineEdit, + QFileDialog, QMenu, QDateEdit, QApplication, QInputDialog, QMessageBox +) +from PySide6.QtCore import Qt, Signal, QDate +from PySide6.QtGui import QPixmap, QDragEnterEvent, QDropEvent, QKeyEvent + +from ui.base.base_dialog import BaseDialog +from services.storage_service import ( + get_storage_service, Attachment, + SUPPORTED_IMAGE_EXTENSIONS, SUPPORTED_REPORT_EXTENSIONS, + REPORTS_DIR +) +from core.logger import get_logger + +logger = get_logger(__name__) + + +class DropZone(QFrame): + """드래그 앤 드롭 영역""" + + files_dropped = Signal(list) # 파일 경로 리스트 + + def __init__(self, accept_types: str = "all", parent=None): + """ + Args: + accept_types: "all", "image", "report" + """ + super().__init__(parent) + self.accept_types = accept_types + self.setAcceptDrops(True) + self.setMinimumHeight(100) + self.setFrameStyle(QFrame.StyledPanel | QFrame.Sunken) + + self._setup_ui() + + def _setup_ui(self): + layout = QVBoxLayout(self) + layout.setAlignment(Qt.AlignCenter) + + icon_label = QLabel("📁") + icon_label.setStyleSheet("font-size: 32px;") + icon_label.setAlignment(Qt.AlignCenter) + layout.addWidget(icon_label) + + if self.accept_types == "image": + text = "이미지 파일을 여기에 드롭하세요\n(jpg, png, gif, bmp, webp)\n\n💡 Ctrl+V: 클립보드에서 붙여넣기" + elif self.accept_types == "report": + text = "보고서 파일을 여기에 드롭하세요\n(pdf, hwp, doc, docx)" + else: + text = "파일을 여기에 드롭하세요" + + text_label = QLabel(text) + text_label.setAlignment(Qt.AlignCenter) + text_label.setStyleSheet("color: #64748b;") + layout.addWidget(text_label) + + # 기본 스타일 + self._set_normal_style() + + def _set_normal_style(self): + self.setStyleSheet(""" + DropZone { + background-color: #1e293b; + border: 2px dashed #475569; + border-radius: 8px; + } + """) + + def _set_hover_style(self): + self.setStyleSheet(""" + DropZone { + background-color: #334155; + border: 2px dashed #3b82f6; + border-radius: 8px; + } + """) + + def dragEnterEvent(self, event: QDragEnterEvent): + if event.mimeData().hasUrls(): + # 파일 타입 검증 + urls = event.mimeData().urls() + valid = False + for url in urls: + if url.isLocalFile(): + ext = Path(url.toLocalFile()).suffix.lower() + if self.accept_types == "image": + valid = ext in SUPPORTED_IMAGE_EXTENSIONS + elif self.accept_types == "report": + valid = ext in SUPPORTED_REPORT_EXTENSIONS + else: + valid = ext in SUPPORTED_IMAGE_EXTENSIONS | SUPPORTED_REPORT_EXTENSIONS + if valid: + break + + if valid: + event.acceptProposedAction() + self._set_hover_style() + else: + event.ignore() + + def dragLeaveEvent(self, event): + self._set_normal_style() + + def dropEvent(self, event: QDropEvent): + self._set_normal_style() + + files = [] + for url in event.mimeData().urls(): + if url.isLocalFile(): + file_path = url.toLocalFile() + ext = Path(file_path).suffix.lower() + + valid = False + if self.accept_types == "image": + valid = ext in SUPPORTED_IMAGE_EXTENSIONS + elif self.accept_types == "report": + valid = ext in SUPPORTED_REPORT_EXTENSIONS + else: + valid = ext in SUPPORTED_IMAGE_EXTENSIONS | SUPPORTED_REPORT_EXTENSIONS + + if valid: + files.append(file_path) + + if files: + self.files_dropped.emit(files) + event.acceptProposedAction() + + +class ImageThumbnail(QFrame): + """이미지 썸네일 위젯""" + + clicked = Signal(object) # Attachment + delete_requested = Signal(object) # Attachment + open_folder_requested = Signal(object) # Attachment + rename_requested = Signal(object) # Attachment - 이름 변경 요청 + + def __init__(self, attachment: Attachment, parent=None): + super().__init__(parent) + self.attachment = attachment + self.setFixedSize(120, 140) + self.setCursor(Qt.PointingHandCursor) + self.setContextMenuPolicy(Qt.CustomContextMenu) + self.customContextMenuRequested.connect(self._show_context_menu) + + self._setup_ui() + + def _setup_ui(self): + layout = QVBoxLayout(self) + layout.setContentsMargins(4, 4, 4, 4) + layout.setSpacing(4) + + # 썸네일 이미지 + self.image_label = QLabel() + self.image_label.setFixedSize(110, 100) + self.image_label.setAlignment(Qt.AlignCenter) + self.image_label.setStyleSheet(""" + QLabel { + background-color: #0f172a; + border: 1px solid #334155; + border-radius: 4px; + } + """) + + # 썸네일 로드 + thumb_path = self.attachment.get_thumbnail_path() + if thumb_path and thumb_path.exists(): + pixmap = QPixmap(str(thumb_path)) + else: + full_path = self.attachment.get_full_path() + if full_path.exists(): + pixmap = QPixmap(str(full_path)) + else: + pixmap = QPixmap() + + if not pixmap.isNull(): + pixmap = pixmap.scaled( + 100, 90, + Qt.KeepAspectRatio, + Qt.SmoothTransformation + ) + self.image_label.setPixmap(pixmap) + + layout.addWidget(self.image_label) + + # 제목 + title = self.attachment.title + if len(title) > 12: + title = title[:10] + "..." + + title_label = QLabel(title) + title_label.setAlignment(Qt.AlignCenter) + title_label.setStyleSheet("font-size: 10px; color: #94a3b8;") + title_label.setToolTip(self.attachment.title) + layout.addWidget(title_label) + + # 프레임 스타일 + self.setStyleSheet(""" + ImageThumbnail { + background-color: #1e293b; + border: 1px solid #334155; + border-radius: 6px; + } + ImageThumbnail:hover { + border-color: #3b82f6; + } + """) + + def mousePressEvent(self, event): + if event.button() == Qt.LeftButton: + self.clicked.emit(self.attachment) + super().mousePressEvent(event) + + def _show_context_menu(self, pos): + menu = QMenu(self) + + open_action = menu.addAction("📷 열기") + open_action.triggered.connect(lambda: self.clicked.emit(self.attachment)) + + menu.addSeparator() + + rename_action = menu.addAction("✏️ 파일 이름 변경") + rename_action.triggered.connect(lambda: self.rename_requested.emit(self.attachment)) + + folder_action = menu.addAction("📂 폴더 위치 열기") + folder_action.triggered.connect(lambda: self.open_folder_requested.emit(self.attachment)) + + menu.addSeparator() + + delete_action = menu.addAction("🗑 삭제") + delete_action.triggered.connect(lambda: self.delete_requested.emit(self.attachment)) + + menu.exec(self.mapToGlobal(pos)) + + +class TemplateFileItem(QFrame): + """템플릿 파일 항목 위젯 (보고서 작성 탭용)""" + + clicked = Signal(str) # 파일 경로 - 클릭하면 보고서 작성 시작 + file_opened = Signal(str) # 파일 경로 - 파일명 클릭 시 파일 열기 + rename_requested = Signal(str) # 파일 경로 - 이름 변경 요청 + + def __init__(self, file_path: Path, parent=None): + super().__init__(parent) + self.file_path = file_path + self.setContextMenuPolicy(Qt.CustomContextMenu) + self.customContextMenuRequested.connect(self._show_context_menu) + + self._setup_ui() + + def _setup_ui(self): + layout = QHBoxLayout(self) + layout.setContentsMargins(12, 10, 12, 10) + + # 아이콘 + ext = self.file_path.suffix.lower() + icon = "📝" if ext in {'.hwp', '.hwpx'} else "📄" + icon_label = QLabel(icon) + icon_label.setStyleSheet("font-size: 20px;") + layout.addWidget(icon_label) + + # 파일명 (클릭 가능한 링크 스타일) + filename = self.file_path.name + self.title_label = QLabel(f'{filename}') + self.title_label.setTextFormat(Qt.RichText) + self.title_label.setCursor(Qt.PointingHandCursor) + self.title_label.setToolTip(f"클릭하여 열기: {self.file_path}") + self.title_label.linkActivated.connect(lambda: self._open_file()) + layout.addWidget(self.title_label, 1) + + # 수정일 + mtime = self.file_path.stat().st_mtime + from datetime import datetime + mtime_str = datetime.fromtimestamp(mtime).strftime("%Y-%m-%d") + mtime_label = QLabel(mtime_str) + mtime_label.setStyleSheet("color: #64748b; font-size: 11px;") + layout.addWidget(mtime_label) + + # 이 템플릿으로 작성 버튼 + use_btn = QPushButton("✏️ 이 템플릿 사용") + use_btn.setCursor(Qt.PointingHandCursor) + use_btn.clicked.connect(lambda: self.clicked.emit(str(self.file_path))) + use_btn.setStyleSheet(""" + QPushButton { + background-color: #22c55e; + color: white; + border: none; + border-radius: 6px; + padding: 8px 14px; + font-size: 11px; + font-weight: bold; + } + QPushButton:hover { + background-color: #16a34a; + } + """) + layout.addWidget(use_btn) + + def _open_file(self): + """파일 열기""" + import os + if self.file_path.exists(): + os.startfile(str(self.file_path)) + self.file_opened.emit(str(self.file_path)) + + def _open_folder(self): + """파일 위치 열기 (탐색기에서 파일 선택)""" + import subprocess + if self.file_path.exists(): + subprocess.run(['explorer', '/select,', str(self.file_path)], check=False) + + def _show_context_menu(self, pos): + """컨텍스트 메뉴 표시""" + menu = QMenu(self) + + # 파일 열기 + open_action = menu.addAction("📄 파일 열기") + open_action.triggered.connect(self._open_file) + + # 파일 위치 열기 + folder_action = menu.addAction("📂 파일 위치 열기") + folder_action.triggered.connect(self._open_folder) + + menu.addSeparator() + + # 파일 이름 변경 + rename_action = menu.addAction("✏️ 파일 이름 변경") + rename_action.triggered.connect(lambda: self.rename_requested.emit(str(self.file_path))) + + menu.addSeparator() + + # 이 템플릿으로 작성 + use_action = menu.addAction("📝 이 템플릿으로 새 보고서 작성") + use_action.triggered.connect(lambda: self.clicked.emit(str(self.file_path))) + + menu.exec(self.mapToGlobal(pos)) + + # 프레임 스타일 + self.setStyleSheet(""" + TemplateFileItem { + background-color: #1e293b; + border: 1px solid #334155; + border-radius: 8px; + } + TemplateFileItem:hover { + border-color: #3b82f6; + background-color: #334155; + } + """) + + +class ReportItem(QFrame): + """보고서 항목 위젯""" + + clicked = Signal(object) # Attachment + delete_requested = Signal(object) # Attachment + open_folder_requested = Signal(object) # Attachment + rename_requested = Signal(object) # Attachment - 이름 변경 요청 + + def __init__(self, attachment: Attachment, parent=None): + super().__init__(parent) + self.attachment = attachment + self.setCursor(Qt.PointingHandCursor) + self.setContextMenuPolicy(Qt.CustomContextMenu) + self.customContextMenuRequested.connect(self._show_context_menu) + + self._setup_ui() + + def _setup_ui(self): + layout = QHBoxLayout(self) + layout.setContentsMargins(8, 8, 8, 8) + + # 아이콘 + icon = "📄" if self.attachment.file_type == 'pdf' else "📝" + icon_label = QLabel(icon) + icon_label.setStyleSheet("font-size: 20px;") + layout.addWidget(icon_label) + + # 제목 (링크 스타일) + title_label = QLabel(f'{self.attachment.title}') + title_label.setTextFormat(Qt.RichText) + title_label.setCursor(Qt.PointingHandCursor) + layout.addWidget(title_label, 1) + + # 파일 크기 + size_kb = self.attachment.file_size / 1024 + if size_kb > 1024: + size_str = f"{size_kb / 1024:.1f} MB" + else: + size_str = f"{size_kb:.1f} KB" + + size_label = QLabel(size_str) + size_label.setStyleSheet("color: #64748b; font-size: 11px;") + layout.addWidget(size_label) + + # 프레임 스타일 + self.setStyleSheet(""" + ReportItem { + background-color: #1e293b; + border: 1px solid #334155; + border-radius: 6px; + } + ReportItem:hover { + border-color: #3b82f6; + background-color: #334155; + } + """) + + def mousePressEvent(self, event): + if event.button() == Qt.LeftButton: + self.clicked.emit(self.attachment) + super().mousePressEvent(event) + + def _show_context_menu(self, pos): + menu = QMenu(self) + + open_action = menu.addAction("📄 열기") + open_action.triggered.connect(lambda: self.clicked.emit(self.attachment)) + + menu.addSeparator() + + rename_action = menu.addAction("✏️ 파일 이름 변경") + rename_action.triggered.connect(lambda: self.rename_requested.emit(self.attachment)) + + folder_action = menu.addAction("📂 폴더 위치 열기") + folder_action.triggered.connect(lambda: self.open_folder_requested.emit(self.attachment)) + + menu.addSeparator() + + delete_action = menu.addAction("🗑 삭제") + delete_action.triggered.connect(lambda: self.delete_requested.emit(self.attachment)) + + menu.exec(self.mapToGlobal(pos)) + + +class AttachmentDialog(BaseDialog): + """첨부파일 관리 다이얼로그""" + + def __init__( + self, + parent=None, + record_type: str = "faults", + record_id: int = 0, + device_category: str = "", + record_info: dict = None # 레코드 정보 (파일명 생성용) + ): + super().__init__( + parent, + title="관련자료", + width=900, + height=600, + resizable=True + ) + + self.record_type = record_type + self.record_id = record_id + self.device_category = device_category + self.record_info = record_info or {} # 레코드 정보 저장 + self.storage = get_storage_service() + + self._setup_attachment_ui() + self._set_default_titles() # 기본 제목 설정 + self._load_attachments() + + # 닫기 버튼만 + self.add_button("닫기", self.close) + + def _generate_default_folder_title(self) -> str: + """기본 폴더 제목 생성 (레코드 정보 기반)""" + parts = [] + + # 편성번호 + train_number = self.record_info.get("train_number", "") + if train_number: + parts.append(f"{train_number}편성") + + # 호차 + car_number = self.record_info.get("car_number", "") + if car_number: + parts.append(f"{car_number}호차") + + # 장치분류 + device_category = self.record_info.get("device_category", "") + if device_category: + parts.append(device_category) + + # 고장내용 요약 + fault_content = self.record_info.get("fault_content", "") + if fault_content: + summary = self._summarize_fault_content(fault_content) + if summary: + parts.append(summary) + + return " ".join(parts) if parts else "" + + def _summarize_fault_content(self, content: str) -> str: + """ + 고장내용 요약 (NLP 도입 전 임시 메서드) + + 추후 NLP(자연어처리)를 도입하여 고장내용을 분석하고 + 핵심 키워드를 추출하는 방식으로 개선 예정 + """ + # TODO: NLP 도입 시 이 메서드를 개선 + if not content: + return "" + + # 현재는 단순히 앞부분만 사용 + max_len = 20 + if len(content) <= max_len: + return content + return content[:max_len] + "..." + + def _set_default_titles(self): + """기본 제목 설정""" + # 레코드 정보가 있으면 기본 폴더명 설정 + default_title = self._generate_default_folder_title() + if default_title: + self.image_title_input.setText(default_title) + self.report_title_input.setText(default_title) # 보고서 제목도 동일하게 + + # 발생일자가 있으면 날짜도 설정 + occurrence_date = self.record_info.get("occurrence_date") + if occurrence_date: + if isinstance(occurrence_date, date): + self.image_date_edit.setDate( + QDate(occurrence_date.year, occurrence_date.month, occurrence_date.day) + ) + self.report_date_edit.setDate( + QDate(occurrence_date.year, occurrence_date.month, occurrence_date.day) + ) + + def _setup_attachment_ui(self): + """첨부파일 UI 설정""" + # 탭 위젯 + self.tabs = QTabWidget() + self.tabs.setStyleSheet(""" + QTabWidget::pane { + border: 1px solid #334155; + border-radius: 8px; + background-color: #1e293b; + } + QTabBar::tab { + background-color: #1e293b; + color: #94a3b8; + padding: 10px 20px; + border-top-left-radius: 6px; + border-top-right-radius: 6px; + } + QTabBar::tab:selected { + background-color: #334155; + color: #f8fafc; + } + """) + + # 사진 탭 + self.image_tab = self._create_image_tab() + self.tabs.addTab(self.image_tab, "📷 사진") + + # 보고서 탭 + self.report_tab = self._create_report_tab() + self.tabs.addTab(self.report_tab, "📄 보고서") + + # 보고서 작성 탭 + self.report_writer_tab = self._create_report_writer_tab() + self.tabs.addTab(self.report_writer_tab, "✏️ 보고서 작성") + + self.content_layout.addWidget(self.tabs) + + def _create_image_tab(self) -> QWidget: + """사진 탭 생성""" + tab = QWidget() + layout = QVBoxLayout(tab) + layout.setContentsMargins(10, 10, 10, 10) + layout.setSpacing(10) + + # 상단 헤더 (폴더 열기 버튼) + header_widget = QWidget() + header_layout = QHBoxLayout(header_widget) + header_layout.setContentsMargins(0, 0, 0, 0) + header_layout.setSpacing(8) + + header_label = QLabel("📷 사진 첨부") + header_label.setStyleSheet("font-weight: bold; color: #f8fafc; font-size: 14px;") + header_layout.addWidget(header_label) + + open_image_folder_btn = QPushButton("📁 사진 폴더 열기") + open_image_folder_btn.setCursor(Qt.PointingHandCursor) + open_image_folder_btn.clicked.connect(self._open_images_folder) + open_image_folder_btn.setStyleSheet(""" + QPushButton { + background-color: #475569; + color: white; + border: none; + border-radius: 6px; + padding: 6px 12px; + font-size: 11px; + font-weight: bold; + } + QPushButton:hover { + background-color: #64748b; + } + """) + header_layout.addWidget(open_image_folder_btn) + header_layout.addStretch(1) + + layout.addWidget(header_widget) + + # 업로드 영역 + upload_widget = QWidget() + upload_layout = QHBoxLayout(upload_widget) + upload_layout.setContentsMargins(0, 0, 0, 0) + + # 날짜 선택 + self.image_date_edit = QDateEdit() + self.image_date_edit.setDate(QDate.currentDate()) + self.image_date_edit.setCalendarPopup(True) + self.image_date_edit.setDisplayFormat("yyyy-MM-dd") + self.image_date_edit.setFixedWidth(140) + self.image_date_edit.setStyleSheet(""" + QDateEdit { + background-color: #0f172a; + color: #f8fafc; + border: 1px solid #334155; + border-radius: 6px; + padding: 8px 8px; + } + QDateEdit:focus { + border-color: #3b82f6; + } + QDateEdit::drop-down { + border: none; + width: 20px; + } + """) + upload_layout.addWidget(self.image_date_edit) + + # 제목 입력 + self.image_title_input = QLineEdit() + self.image_title_input.setPlaceholderText("폴더명 (예: 7편성 3호차 2위 출입문)") + self.image_title_input.setStyleSheet(""" + QLineEdit { + background-color: #0f172a; + color: #f8fafc; + border: 1px solid #334155; + border-radius: 6px; + padding: 8px 12px; + } + QLineEdit:focus { + border-color: #3b82f6; + } + """) + upload_layout.addWidget(self.image_title_input, 1) + + # 파일 선택 버튼 + select_btn = QPushButton("파일 선택") + select_btn.setCursor(Qt.PointingHandCursor) + select_btn.clicked.connect(self._select_images) + select_btn.setStyleSheet(""" + QPushButton { + background-color: #3b82f6; + color: white; + border: none; + border-radius: 6px; + padding: 8px 16px; + font-weight: bold; + } + QPushButton:hover { + background-color: #2563eb; + } + """) + upload_layout.addWidget(select_btn) + + layout.addWidget(upload_widget) + + # 드롭 영역 + self.image_drop_zone = DropZone(accept_types="image") + self.image_drop_zone.files_dropped.connect(self._on_images_dropped) + layout.addWidget(self.image_drop_zone) + + # 이미지 목록 (스크롤 가능) + scroll = QScrollArea() + scroll.setWidgetResizable(True) + scroll.setStyleSheet("QScrollArea { border: none; }") + + self.image_grid_widget = QWidget() + self.image_grid_layout = QGridLayout(self.image_grid_widget) + self.image_grid_layout.setSpacing(10) + self.image_grid_layout.setAlignment(Qt.AlignLeft | Qt.AlignTop) + + scroll.setWidget(self.image_grid_widget) + layout.addWidget(scroll, 1) + + return tab + + def _create_report_tab(self) -> QWidget: + """보고서 탭 생성 (PDF/HWP 통합)""" + tab = QWidget() + layout = QVBoxLayout(tab) + layout.setContentsMargins(10, 10, 10, 10) + layout.setSpacing(10) + + # 상단 헤더 (폴더 열기 버튼) + header_widget = QWidget() + header_layout = QHBoxLayout(header_widget) + header_layout.setContentsMargins(0, 0, 0, 0) + header_layout.setSpacing(8) + + header_label = QLabel("📄 보고서 첨부") + header_label.setStyleSheet("font-weight: bold; color: #f8fafc; font-size: 14px;") + header_layout.addWidget(header_label) + + open_report_folder_btn = QPushButton("📁 보고서 폴더 열기") + open_report_folder_btn.setCursor(Qt.PointingHandCursor) + open_report_folder_btn.clicked.connect(self._open_attached_reports_folder) + open_report_folder_btn.setStyleSheet(""" + QPushButton { + background-color: #475569; + color: white; + border: none; + border-radius: 6px; + padding: 6px 12px; + font-size: 11px; + font-weight: bold; + } + QPushButton:hover { + background-color: #64748b; + } + """) + header_layout.addWidget(open_report_folder_btn) + header_layout.addStretch(1) + + layout.addWidget(header_widget) + + # 업로드 영역 (사진 탭과 동일한 형태) + upload_widget = QWidget() + upload_layout = QHBoxLayout(upload_widget) + upload_layout.setContentsMargins(0, 0, 0, 0) + + # 날짜 선택 + self.report_date_edit = QDateEdit() + self.report_date_edit.setDate(QDate.currentDate()) + self.report_date_edit.setCalendarPopup(True) + self.report_date_edit.setDisplayFormat("yyyy-MM-dd") + self.report_date_edit.setFixedWidth(140) + self.report_date_edit.setStyleSheet(""" + QDateEdit { + background-color: #0f172a; + color: #f8fafc; + border: 1px solid #334155; + border-radius: 6px; + padding: 8px 8px; + } + QDateEdit:focus { + border-color: #3b82f6; + } + QDateEdit::drop-down { + border: none; + width: 20px; + } + """) + upload_layout.addWidget(self.report_date_edit) + + # 제목 입력 + self.report_title_input = QLineEdit() + self.report_title_input.setPlaceholderText("보고서 제목 (예: 7편성 3호차 2위 출입문 닫힘 고장 동향보고)") + self.report_title_input.setStyleSheet(""" + QLineEdit { + background-color: #0f172a; + color: #f8fafc; + border: 1px solid #334155; + border-radius: 6px; + padding: 8px 12px; + } + QLineEdit:focus { + border-color: #3b82f6; + } + """) + upload_layout.addWidget(self.report_title_input, 1) + + # 파일 선택 버튼 + select_btn = QPushButton("파일 선택") + select_btn.setCursor(Qt.PointingHandCursor) + select_btn.clicked.connect(self._select_reports) + select_btn.setStyleSheet(""" + QPushButton { + background-color: #3b82f6; + color: white; + border: none; + border-radius: 6px; + padding: 8px 16px; + font-weight: bold; + } + QPushButton:hover { + background-color: #2563eb; + } + """) + upload_layout.addWidget(select_btn) + + layout.addWidget(upload_widget) + + # 드롭 영역 + self.report_drop_zone = DropZone(accept_types="report") + self.report_drop_zone.files_dropped.connect(self._on_reports_dropped) + layout.addWidget(self.report_drop_zone) + + # 보고서 목록 (스크롤 가능) + scroll = QScrollArea() + scroll.setWidgetResizable(True) + scroll.setStyleSheet("QScrollArea { border: none; }") + + self.report_list_widget = QWidget() + self.report_list_layout = QVBoxLayout(self.report_list_widget) + self.report_list_layout.setSpacing(8) + self.report_list_layout.setAlignment(Qt.AlignTop) + + scroll.setWidget(self.report_list_widget) + layout.addWidget(scroll, 1) + + return tab + + def _create_report_writer_tab(self) -> QWidget: + """보고서 작성 탭 생성 - 템플릿 목록만 표시하고 클릭 시 별도 다이얼로그 열기""" + tab = QWidget() + layout = QVBoxLayout(tab) + layout.setContentsMargins(10, 10, 10, 10) + layout.setSpacing(10) + + # 상단 안내 영역 + header_widget = QWidget() + header_layout = QHBoxLayout(header_widget) + header_layout.setContentsMargins(0, 0, 0, 0) + header_layout.setSpacing(10) + + # 왼쪽: 카테고리 정보 및 안내 + left_info = QWidget() + left_layout = QVBoxLayout(left_info) + left_layout.setContentsMargins(0, 0, 0, 0) + left_layout.setSpacing(4) + + category_name = self._get_device_category_name() + category_label = QLabel(f"📂 {category_name} 폴더의 기존 보고서") + category_label.setStyleSheet("font-weight: bold; color: #f8fafc; font-size: 14px;") + left_layout.addWidget(category_label) + + info_label = QLabel("아래 목록에서 참고할 보고서를 선택하면 보고서 작성 화면이 열립니다.") + info_label.setStyleSheet("color: #94a3b8; font-size: 12px;") + left_layout.addWidget(info_label) + + header_layout.addWidget(left_info, 1) + + # 오른쪽: 보고서 폴더 열기 버튼 + open_folder_btn = QPushButton("📁 보고서 폴더 열기") + open_folder_btn.setCursor(Qt.PointingHandCursor) + open_folder_btn.clicked.connect(self._open_reports_folder) + open_folder_btn.setStyleSheet(""" + QPushButton { + background-color: #475569; + color: white; + border: none; + border-radius: 6px; + padding: 8px 14px; + font-size: 11px; + } + QPushButton:hover { + background-color: #64748b; + } + """) + header_layout.addWidget(open_folder_btn) + + layout.addWidget(header_widget) + + # 템플릿 목록 스크롤 + scroll = QScrollArea() + scroll.setWidgetResizable(True) + scroll.setStyleSheet(""" + QScrollArea { + border: 1px solid #334155; + border-radius: 8px; + background-color: #0f172a; + } + """) + + self.template_list_widget = QWidget() + self.template_list_widget.setStyleSheet("background-color: #0f172a;") + self.template_list_layout = QVBoxLayout(self.template_list_widget) + self.template_list_layout.setContentsMargins(8, 8, 8, 8) + self.template_list_layout.setSpacing(6) + self.template_list_layout.setAlignment(Qt.AlignTop) + + scroll.setWidget(self.template_list_widget) + layout.addWidget(scroll, 1) + + # 템플릿 목록 로드 + self._load_template_list() + + return tab + + def _get_device_category_name(self) -> str: + """장치분류명 반환""" + category = self.device_category or "17.기타" + # "01.출입문" -> "출입문" + if "." in category: + return category.split(".", 1)[1] + return category + + def _get_device_category_folder(self) -> Path: + """장치분류 폴더 경로 반환""" + category = self.storage._match_category(self.device_category) + return REPORTS_DIR / category + + def _load_template_list(self): + """템플릿(기존 보고서) 목록 로드""" + layout = self.template_list_layout + + # 기존 위젯 제거 + while layout.count(): + item = layout.takeAt(0) + if item.widget(): + item.widget().deleteLater() + + # 장치분류 폴더에서 HWP 파일 검색 + category_folder = self._get_device_category_folder() + + if not category_folder.exists(): + no_files_label = QLabel("📁 보고서 폴더가 없습니다") + no_files_label.setStyleSheet("color: #64748b; padding: 40px; font-size: 13px;") + no_files_label.setAlignment(Qt.AlignCenter) + layout.addWidget(no_files_label) + return + + # HWP, HWPX 파일 검색 (하위 폴더 포함) + hwp_files = [] + for ext in ['*.hwp', '*.hwpx', '*.HWP', '*.HWPX']: + hwp_files.extend(category_folder.rglob(ext)) + + # 수정일 기준 정렬 (최신순) + hwp_files.sort(key=lambda x: x.stat().st_mtime, reverse=True) + + if not hwp_files: + no_files_label = QLabel("📝 HWP 보고서가 없습니다\n\n이 폴더에 참고할 보고서 파일을 추가하세요.") + no_files_label.setStyleSheet("color: #64748b; padding: 40px; font-size: 13px;") + no_files_label.setAlignment(Qt.AlignCenter) + layout.addWidget(no_files_label) + return + + for file_path in hwp_files: + item = TemplateFileItem(file_path) + # 클릭 시 보고서 작성 다이얼로그 열기 + item.clicked.connect(self._on_open_report_writer) + item.rename_requested.connect(self._on_rename_template_file) + layout.addWidget(item) + + def _open_reports_folder(self): + """보고서 작성 탭 - 템플릿 보고서 폴더 열기 (storage/보고서)""" + import subprocess + + if REPORTS_DIR.exists(): + subprocess.run(['explorer', str(REPORTS_DIR)], check=False) + else: + # 폴더가 없으면 생성 후 열기 + REPORTS_DIR.mkdir(parents=True, exist_ok=True) + subprocess.run(['explorer', str(REPORTS_DIR)], check=False) + + def _open_images_folder(self): + """사진 탭 - 첨부된 사진 폴더 열기""" + import subprocess + from services.storage_service import STORAGE_DIR + + # 현재 레코드의 사진 저장 폴더 + images_folder = STORAGE_DIR / self.record_type / str(self.record_id) / "images" + + if images_folder.exists(): + subprocess.run(['explorer', str(images_folder)], check=False) + else: + # 폴더가 없으면 상위 레코드 폴더 열기 + record_folder = STORAGE_DIR / self.record_type / str(self.record_id) + if record_folder.exists(): + subprocess.run(['explorer', str(record_folder)], check=False) + else: + # 레코드 폴더도 없으면 storage 폴더 열기 + subprocess.run(['explorer', str(STORAGE_DIR)], check=False) + + def _open_attached_reports_folder(self): + """보고서 탭 - 첨부된 보고서 폴더 열기""" + import subprocess + from services.storage_service import STORAGE_DIR + + # 현재 레코드의 보고서 저장 폴더 + reports_folder = STORAGE_DIR / self.record_type / str(self.record_id) / "reports" + + if reports_folder.exists(): + subprocess.run(['explorer', str(reports_folder)], check=False) + else: + # 폴더가 없으면 상위 레코드 폴더 열기 + record_folder = STORAGE_DIR / self.record_type / str(self.record_id) + if record_folder.exists(): + subprocess.run(['explorer', str(record_folder)], check=False) + else: + # 레코드 폴더도 없으면 storage 폴더 열기 + subprocess.run(['explorer', str(STORAGE_DIR)], check=False) + + def _on_open_report_writer(self, template_path: str): + """보고서 작성 시작 - 원본/새파일을 좌우로 배치하여 한글 실행""" + from ui.dialogs.report_writer_dialog import start_report_writing + + # 보고서 작성 시작 (원본: 왼쪽, 새파일: 오른쪽) + self._current_report_writer = start_report_writing( + template_path=template_path, + device_category=self.device_category, + record_info=self.record_info + ) + + # 다이얼로그 닫기 + self.close() + + def _on_report_saved(self, file_path: str): + """보고서 저장 완료 시 호출""" + logger.info(f"보고서 저장됨: {file_path}") + # 템플릿 목록 새로고침 + self._load_template_list() + + def _load_attachments(self): + """첨부파일 로드""" + # 이미지 로드 + self._load_images() + + # 보고서 로드 + self._load_reports() + + def _load_images(self): + """이미지 목록 로드""" + # 기존 위젯 제거 + while self.image_grid_layout.count(): + item = self.image_grid_layout.takeAt(0) + if item.widget(): + item.widget().deleteLater() + + images = self.storage.get_attachments_by_type( + self.record_type, self.record_id, "image" + ) + + for i, attachment in enumerate(images): + row, col = divmod(i, 5) # 5열 + thumb = ImageThumbnail(attachment) + thumb.clicked.connect(self._on_image_clicked) + thumb.delete_requested.connect(self._on_delete_attachment) + thumb.open_folder_requested.connect(self._on_open_folder) + thumb.rename_requested.connect(self._on_rename_attachment) + self.image_grid_layout.addWidget(thumb, row, col) + + def _load_reports(self): + """보고서 목록 로드 (PDF + HWP 통합)""" + layout = self.report_list_layout + + # 기존 위젯 제거 + while layout.count(): + item = layout.takeAt(0) + if item.widget(): + item.widget().deleteLater() + + # PDF와 HWP 모두 로드 + all_reports = [] + for report_type in ["pdf", "hwp", "doc"]: + reports = self.storage.get_attachments_by_type( + self.record_type, self.record_id, report_type + ) + all_reports.extend(reports) + + # 날짜순 정렬 (최신순) + all_reports.sort(key=lambda x: x.created_at, reverse=True) + + for attachment in all_reports: + item = ReportItem(attachment) + item.clicked.connect(self._on_report_clicked) + item.delete_requested.connect(self._on_delete_attachment) + item.open_folder_requested.connect(self._on_open_folder) + item.rename_requested.connect(self._on_rename_attachment) + layout.addWidget(item) + + def _select_images(self): + """이미지 파일 선택""" + files, _ = QFileDialog.getOpenFileNames( + self, + "이미지 선택", + "", + "이미지 파일 (*.jpg *.jpeg *.png *.gif *.bmp *.webp)" + ) + + if files: + self._upload_images(files) + + def _select_reports(self): + """보고서 파일 선택""" + files, _ = QFileDialog.getOpenFileNames( + self, + "보고서 선택", + "", + "보고서 파일 (*.pdf *.hwp *.hwpx *.doc *.docx)" + ) + + if files: + self._upload_reports(files) + + def _on_images_dropped(self, files: List[str]): + """이미지 드롭""" + self._upload_images(files) + + def _on_reports_dropped(self, files: List[str]): + """보고서 드롭""" + self._upload_reports(files) + + def _upload_images(self, files: List[str]): + """이미지 업로드""" + folder_title = self.image_title_input.text().strip() + if not folder_title: + folder_title = "사진" + + # QDate -> date 변환 + qdate = self.image_date_edit.date() + folder_date = date(qdate.year(), qdate.month(), qdate.day()) + + self.storage.save_images( + file_paths=files, + record_type=self.record_type, + record_id=self.record_id, + folder_title=folder_title, + folder_date=folder_date + ) + + self.image_title_input.clear() + self._load_images() + + def _upload_reports(self, files: List[str]): + """보고서 업로드""" + title = self.report_title_input.text().strip() + qdate = self.report_date_edit.date() + + # QDate -> date 변환 + report_date = date(qdate.year(), qdate.month(), qdate.day()) + + # 장치분류는 레코드 정보에서 가져옴 + category = self.device_category or "17.기타" + + for file_path in files: + file_title = title or Path(file_path).stem + self.storage.save_report( + file_path=file_path, + record_type=self.record_type, + record_id=self.record_id, + device_category=category, + report_title=file_title, + report_date=report_date + ) + + self.report_title_input.clear() + self._load_reports() + + def _on_image_clicked(self, attachment: Attachment): + """이미지 클릭 - 뷰어 열기""" + from ui.dialogs.image_viewer_dialog import ImageViewerDialog + + # 현재 이미지 목록 + images = self.storage.get_attachments_by_type( + self.record_type, self.record_id, "image" + ) + + # 현재 이미지 인덱스 찾기 + current_index = 0 + for i, img in enumerate(images): + if img.id == attachment.id: + current_index = i + break + + dialog = ImageViewerDialog( + self, + images, + current_index, + record_info=self.record_info + ) + dialog.exec() + + # 저장 후 목록 새로고침 + self._load_images() + + def _on_report_clicked(self, attachment: Attachment): + """보고서 클릭 - 파일 열기""" + self.storage.open_file(attachment) + + def _on_delete_attachment(self, attachment: Attachment): + """첨부파일 삭제""" + result = self.storage.delete_attachment( + self.record_type, self.record_id, attachment.id + ) + + if result: + self._load_attachments() + + def _on_open_folder(self, attachment: Attachment): + """폴더 위치 열기""" + import subprocess + + full_path = attachment.get_full_path() + folder_path = full_path.parent + + if folder_path.exists(): + # Windows에서 탐색기로 폴더 열기 (파일 선택 상태로) + subprocess.run(['explorer', '/select,', str(full_path)], check=False) + + def _on_rename_attachment(self, attachment: Attachment): + """첨부파일 이름 변경 (사진, 보고서)""" + full_path = attachment.get_full_path() + if not full_path.exists(): + logger.warning(f"파일이 존재하지 않습니다: {full_path}") + return + + old_name = full_path.stem # 확장자 제외 파일명 + ext = full_path.suffix # 확장자 + + # 새 이름 입력받기 + new_name, ok = QInputDialog.getText( + self, + "파일 이름 변경", + f"새 파일 이름을 입력하세요:\n(확장자 {ext}는 자동으로 추가됩니다)", + text=old_name + ) + + if not ok or not new_name.strip(): + return + + new_name = new_name.strip() + + # 새 경로 생성 + new_path = full_path.parent / f"{new_name}{ext}" + + if new_path.exists(): + QMessageBox.warning(self, "오류", f"'{new_name}{ext}' 파일이 이미 존재합니다.") + return + + try: + # 파일 이름 변경 + full_path.rename(new_path) + + # 썸네일도 있으면 이름 변경 + thumb_path = attachment.get_thumbnail_path() + if thumb_path and thumb_path.exists(): + new_thumb_name = f"{new_name}_thumb{thumb_path.suffix}" + new_thumb_path = thumb_path.parent / new_thumb_name + thumb_path.rename(new_thumb_path) + + # attachment 객체 업데이트 및 DB 저장 + attachment.filename = f"{new_name}{ext}" + attachment.title = new_name + get_storage_service().update_attachment(attachment) + + logger.info(f"파일 이름 변경: {old_name}{ext} -> {new_name}{ext}") + + # 목록 새로고침 + self._load_images() + self._load_reports() + + except Exception as e: + logger.error(f"파일 이름 변경 실패: {e}") + QMessageBox.warning(self, "오류", f"파일 이름 변경에 실패했습니다:\n{e}") + + def _on_rename_template_file(self, file_path: str): + """템플릿 파일 이름 변경 (보고서 작성 탭)""" + path = Path(file_path) + if not path.exists(): + logger.warning(f"파일이 존재하지 않습니다: {path}") + return + + old_name = path.stem # 확장자 제외 파일명 + ext = path.suffix # 확장자 + + # 새 이름 입력받기 + new_name, ok = QInputDialog.getText( + self, + "파일 이름 변경", + f"새 파일 이름을 입력하세요:\n(확장자 {ext}는 자동으로 추가됩니다)", + text=old_name + ) + + if not ok or not new_name.strip(): + return + + new_name = new_name.strip() + + # 새 경로 생성 + new_path = path.parent / f"{new_name}{ext}" + + if new_path.exists(): + QMessageBox.warning(self, "오류", f"'{new_name}{ext}' 파일이 이미 존재합니다.") + return + + try: + # 파일 이름 변경 + path.rename(new_path) + logger.info(f"템플릿 파일 이름 변경: {old_name}{ext} -> {new_name}{ext}") + + # 목록 새로고침 + self._load_template_list() + + except Exception as e: + logger.error(f"파일 이름 변경 실패: {e}") + QMessageBox.warning(self, "오류", f"파일 이름 변경에 실패했습니다:\n{e}") + + def keyPressEvent(self, event: QKeyEvent): + """키 이벤트 - Ctrl+V로 클립보드 이미지 붙여넣기""" + if event.modifiers() == Qt.ControlModifier and event.key() == Qt.Key_V: + # 사진 탭이 활성화되어 있을 때만 + if self.tabs.currentWidget() == self.image_tab: + if self._paste_image_from_clipboard(): + event.accept() + return + + super().keyPressEvent(event) + + def _paste_image_from_clipboard(self) -> bool: + """클립보드에서 이미지 붙여넣기 + + Returns: + 성공 여부 + """ + import tempfile + from datetime import datetime + + clipboard = QApplication.clipboard() + mime_data = clipboard.mimeData() + + # 이미지가 있는지 확인 + if mime_data.hasImage(): + image = clipboard.image() + if image.isNull(): + return False + + # 임시 파일로 저장 + timestamp = datetime.now().strftime("%Y%m%d_%H%M%S") + temp_dir = Path(tempfile.gettempdir()) + temp_file = temp_dir / f"clipboard_{timestamp}.png" + + # QImage를 파일로 저장 + if image.save(str(temp_file), "PNG"): + # 업로드 + self._upload_images([str(temp_file)]) + + # 임시 파일 삭제 시도 (실패해도 무시) + try: + temp_file.unlink() + except Exception: + pass + + logger.info("클립보드에서 이미지 붙여넣기 완료") + return True + + # 파일 URL이 있는 경우 (파일 복사 후 붙여넣기) + elif mime_data.hasUrls(): + files = [] + for url in mime_data.urls(): + if url.isLocalFile(): + file_path = url.toLocalFile() + ext = Path(file_path).suffix.lower() + if ext in SUPPORTED_IMAGE_EXTENSIONS: + files.append(file_path) + + if files: + self._upload_images(files) + logger.info("클립보드에서 %d개 이미지 파일 붙여넣기 완료", len(files)) + return True + + return False + diff --git a/ui/dialogs/date_filter_dialog.py b/ui/dialogs/date_filter_dialog.py new file mode 100644 index 0000000..c72ceb9 --- /dev/null +++ b/ui/dialogs/date_filter_dialog.py @@ -0,0 +1,63 @@ +# -*- coding: utf-8 -*- +""" +날짜 필터 다이얼로그 모듈 +날짜 범위를 선택하는 다이얼로그입니다. +""" + +from typing import Optional, Tuple +from datetime import date +from PySide6.QtWidgets import QDialogButtonBox, QVBoxLayout +from PySide6.QtCore import Qt + +from ui.base.base_dialog import BaseDialog +from ui.components.custom_input import CustomDateRangeInput +from core.logger import get_logger + +logger = get_logger(__name__) + + +class DateFilterDialog(BaseDialog): + """ + 날짜 필터 다이얼로그 + + 날짜 범위를 선택합니다. + """ + + def __init__(self, parent=None): + super().__init__(parent, title="날짜 필터", width=400, height=300) + + self.date_from: Optional[date] = None + self.date_to: Optional[date] = None + + self._setup_ui() + + def _setup_ui(self): + """UI 설정""" + # 날짜 범위 입력 + self.date_range_input = CustomDateRangeInput() + self.date_range_input.range_changed.connect(self._on_range_changed) + self.content_layout.addWidget(self.date_range_input) + + # 버튼 + button_box = QDialogButtonBox( + QDialogButtonBox.Ok | QDialogButtonBox.Cancel, + Qt.Horizontal, + self + ) + button_box.accepted.connect(self.accept) + button_box.rejected.connect(self.reject) + self.content_layout.addWidget(button_box) + + def _on_range_changed(self, start: date, end: date): + """날짜 범위 변경""" + self.date_from = start + self.date_to = end + + def get_range(self) -> Tuple[Optional[date], Optional[date]]: + """선택된 날짜 범위 반환""" + return self.date_from, self.date_to + + + + + diff --git a/ui/dialogs/duty_dialog.py b/ui/dialogs/duty_dialog.py new file mode 100644 index 0000000..e66a14d --- /dev/null +++ b/ui/dialogs/duty_dialog.py @@ -0,0 +1,333 @@ +# -*- coding: utf-8 -*- +""" +당무 변경 다이얼로그 +오늘의 당무자(부팀장, 운용)를 선택합니다. +""" + +from datetime import date +from typing import Optional + +from PySide6.QtWidgets import ( + QWidget, QVBoxLayout, QHBoxLayout, QLabel +) +from PySide6.QtCore import Qt, Signal +from PySide6.QtGui import QFont + +from ui.base.base_dialog import BaseDialog +from ui.components.custom_input import CustomComboBox, LabeledInput +from ui.styles.style_manager import StyleManager +from database.crud import CRUDManager +from database.models import TeamMember +from core.logger import get_logger + +logger = get_logger(__name__) + + +class DutyChangeDialog(BaseDialog): + """ + 당무 변경 다이얼로그 + + 오늘의 당무자를 선택합니다. + 부팀장과 운용을 각각 선택할 수 있습니다. + """ + + duty_changed = Signal(str, str) # vice_leader_name, operator_name + + def __init__( + self, + parent=None, + team: str = "", + shift: str = "" + ): + self.team = team + self.shift = shift + self.crud = CRUDManager() + self.style_manager = StyleManager() + + super().__init__( + parent, + title=f"당무 변경 - {team} {shift}", + width=400, + height=350, + min_width=350, + min_height=600, + resizable=True + ) + + self._setup_content() + self.add_confirm_cancel_buttons("저장", "취소") + + self._load_current_duty() + + def change_UI_Info(self, team: str, shift: str): + """UI 정보 변경""" + self.team = team + self.shift = shift + self.title = f"당무 변경 - {team} {shift}" + self.setWindowTitle(self.title) + self._setup_content() + self._load_current_duty() + self.add_confirm_cancel_buttons("저장", "취소") + + def _setup_content(self): + """컨텐츠 설정""" + colors = self.style_manager.get_colors() + + # 날짜 표시 + today = date.today() + date_label = QLabel(f"📅 {today.year}년 {today.month}월 {today.day}일") + date_font = self.style_manager.get_font("dialog", "title") + date_label.setFont(date_font) + date_label.setAlignment(Qt.AlignCenter) + date_height = self.style_manager.calculate_label_height( + font=date_font, area="dialog", style="title" + ) + date_label.setStyleSheet(f""" + color: {colors['text_primary']}; + min-height: {date_height}px; + """) + self.content_layout.addWidget(date_label) + + # 팀/근무 정보 + info_label = QLabel(f"🏢 {self.team} | {self.shift}") + info_font = self.style_manager.get_font("dialog", "label") + info_label.setFont(info_font) + info_label.setAlignment(Qt.AlignCenter) + info_height = self.style_manager.calculate_label_height( + font=info_font, area="dialog", style="label" + ) + info_label.setStyleSheet(f""" + color: {colors['text_tertiary']}; + min-height: {info_height}px; + margin-bottom: 16px; + """) + self.content_layout.addWidget(info_label) + + # 부팀장 선택 + self.vice_leader_combo = CustomComboBox( + placeholder="부팀장 선택" + ) + self._load_vice_leaders() + self.content_layout.addWidget( + LabeledInput("부팀장 당무", self.vice_leader_combo) + ) + + # 운용 선택 + self.operator_combo = CustomComboBox( + placeholder="운용 선택" + ) + self._load_operators() + self.content_layout.addWidget( + LabeledInput("운용 당무", self.operator_combo) + ) + + # 자동 선택 버튼들 + auto_section = QWidget() + auto_layout = QHBoxLayout(auto_section) + auto_layout.setContentsMargins(0, 16, 0, 0) + auto_layout.setSpacing(8) + + from ui.components.custom_button import CustomButton + + # 다음 순번 버튼 + next_btn = CustomButton( + "다음 순번 자동선택", + style_type="outline", + fixed_height=36 + ) + next_btn.clicked.connect(self._select_next_duty) + auto_layout.addWidget(next_btn) + + self.content_layout.addWidget(auto_section) + + self.content_layout.addStretch() + + def _on_text_scale_changed(self, scale: float, label_font, input_font): + """ + 텍스트 스케일 변경 시 호출 + + 당무 변경 다이얼로그의 텍스트만 동적으로 조정합니다. + """ + colors = self.style_manager.get_colors() + + # 날짜 라벨 폰트 조정 + base_date_font = self.style_manager.get_font("dialog", "title") + date_size = int(base_date_font.pointSize() * scale) + date_font = QFont(base_date_font.family(), date_size, base_date_font.weight()) + date_height = self.style_manager.calculate_label_height( + font=date_font, area="dialog", style="title" + ) + + # 날짜 라벨 찾기 및 업데이트 + for i in range(self.content_layout.count()): + widget = self.content_layout.itemAt(i).widget() + if isinstance(widget, QLabel) and "📅" in widget.text(): + widget.setFont(date_font) + widget.setStyleSheet(f""" + color: {colors['text_primary']}; + min-height: {date_height}px; + """) + break + + # 팀/근무 정보 라벨 폰트 조정 + base_info_font = self.style_manager.get_font("dialog", "label") + info_size = int(base_info_font.pointSize() * scale) + info_font = QFont(base_info_font.family(), info_size, base_info_font.weight()) + info_height = self.style_manager.calculate_label_height( + font=info_font, area="dialog", style="label" + ) + + # 팀/근무 정보 라벨 찾기 및 업데이트 + for i in range(self.content_layout.count()): + widget = self.content_layout.itemAt(i).widget() + if isinstance(widget, QLabel) and "🏢" in widget.text(): + widget.setFont(info_font) + widget.setStyleSheet(f""" + color: {colors['text_tertiary']}; + min-height: {info_height}px; + margin-bottom: 16px; + """) + break + + # LabeledInput 내부 라벨 및 입력 필드도 조정 + for i in range(self.content_layout.count()): + item = self.content_layout.itemAt(i) + if item and item.widget(): + widget = item.widget() + if isinstance(widget, LabeledInput): + # 라벨 폰트 조정 + label = widget.label + label.setFont(label_font) + label_height = self.style_manager.calculate_label_height( + font=label_font, area="dialog", style="label" + ) + label.setStyleSheet(f""" + color: {colors['text_primary']}; + font-family: '{label_font.family()}'; + font-size: {label_font.pointSize()}pt; + min-height: {label_height}px; + """) + + # 입력 필드 폰트 및 높이 조정 + input_widget = widget.input_widget + if hasattr(input_widget, 'setFont'): + input_widget.setFont(input_font) + input_height = self.style_manager.calculate_input_height( + font=input_font, area="dialog", style="input" + ) + if hasattr(input_widget, 'setMinimumHeight'): + input_widget.setMinimumHeight(input_height) + + def _load_vice_leaders(self): + """부팀장 목록 로드""" + members = self.crud.get_team_members_by_team( + self.team, + "부팀장", + active_only=True + ) + + for member in members: + self.vice_leader_combo.addItem(member.name, member.id) + + def _load_operators(self): + """운용 목록 로드""" + members = self.crud.get_team_members_by_team( + self.team, + "운용", + active_only=True + ) + + for member in members: + self.operator_combo.addItem(member.name, member.id) + + def _load_current_duty(self): + """현재 당무 정보 로드""" + today = date.today() + duty = self.crud.get_duty_schedule(today, self.team, self.shift) + + if duty: + # 부팀장 선택 + if duty.vice_leader_name: + idx = self.vice_leader_combo.findText(duty.vice_leader_name) + if idx >= 0: + self.vice_leader_combo.setCurrentIndex(idx) + + # 운용 선택 + if duty.operator_name: + idx = self.operator_combo.findText(duty.operator_name) + if idx >= 0: + self.operator_combo.setCurrentIndex(idx) + + def _select_next_duty(self): + """다음 순번 자동 선택""" + today = date.today() + + # 현재 당무 정보 조회 + current_duty = self.crud.get_duty_schedule(today, self.team, self.shift) + + # 부팀장 다음 순번 + current_vice_leader_id = current_duty.vice_leader_id if current_duty else None + next_vice_leader = self.crud.get_next_duty_member( + self.team, + "부팀장", + current_vice_leader_id + ) + + if next_vice_leader: + idx = self.vice_leader_combo.findText(next_vice_leader.name) + if idx >= 0: + self.vice_leader_combo.setCurrentIndex(idx) + + # 운용 다음 순번 + current_operator_id = current_duty.operator_id if current_duty else None + next_operator = self.crud.get_next_duty_member( + self.team, + "운용", + current_operator_id + ) + + if next_operator: + idx = self.operator_combo.findText(next_operator.name) + if idx >= 0: + self.operator_combo.setCurrentIndex(idx) + + def _on_confirm(self): + """저장 버튼 클릭""" + today = date.today() + + # 선택된 부팀장 + vice_leader_name = self.vice_leader_combo.currentText() + vice_leader_id = self.vice_leader_combo.currentData() + + # 선택된 운용 + operator_name = self.operator_combo.currentText() + operator_id = self.operator_combo.currentData() + + # placeholder 체크 + if self.vice_leader_combo.currentIndex() == 0: + vice_leader_name = "" + vice_leader_id = None + + if self.operator_combo.currentIndex() == 0: + operator_name = "" + operator_id = None + + # DB에 저장 + self.crud.upsert_duty_schedule( + duty_date=today, + team=self.team, + shift_type=self.shift, + vice_leader_id=vice_leader_id, + operator_id=operator_id, + vice_leader_name=vice_leader_name, + operator_name=operator_name + ) + + logger.info( + "당무 변경: %s %s - 부팀장: %s, 운용: %s", + self.team, self.shift, vice_leader_name, operator_name + ) + + self.duty_changed.emit(vice_leader_name, operator_name) + self.accept() + diff --git a/ui/dialogs/handover_dialog.py b/ui/dialogs/handover_dialog.py new file mode 100644 index 0000000..cb2c757 --- /dev/null +++ b/ui/dialogs/handover_dialog.py @@ -0,0 +1,938 @@ +# -*- coding: utf-8 -*- +""" +인수/인계 다이얼로그 모듈 +팀 간 업무 인수인계를 처리합니다. +""" + +from datetime import datetime, date +from typing import Optional, List, Dict, Any +from PySide6.QtWidgets import ( + QWidget, QVBoxLayout, QHBoxLayout, QLabel, QFrame, + QTabWidget, QTableWidget, QTableWidgetItem, QHeaderView, + QScrollArea, QSplitter, QPushButton, QCheckBox +) +from PySide6.QtCore import Qt, Signal +from PySide6.QtGui import QFont + +from ui.base.base_dialog import BaseDialog +from ui.components.custom_button import CustomButton +from ui.components.custom_input import CustomComboBox +from core.config import ConfigManager +from core.constants import TEAMS +from core.logger import get_logger +from database.crud import CRUDManager +from services.weather_service import WeatherService + +logger = get_logger(__name__) + +# 팀 순환 순서 (4->3->2->1->4...) +TEAM_CYCLE = ["4팀", "3팀", "2팀", "1팀"] + + +def get_next_team(current_team: str) -> str: + """다음 순번 팀 반환 (4->3->2->1->4)""" + try: + idx = TEAM_CYCLE.index(current_team) + return TEAM_CYCLE[(idx + 1) % len(TEAM_CYCLE)] + except ValueError: + return "1팀" + + +def get_handover_info(current_team: str, current_shift: str) -> Dict[str, str]: + """ + 인계팀/인수팀 정보 반환 + + 주간->야간, 야간->주간 인계 + 같은 근무유형 내에서 4->3->2->1 순환 + + Returns: + { + 'handing_team': 인계팀, + 'handing_shift': 인계 근무, + 'receiving_team': 인수팀, + 'receiving_shift': 인수 근무, + } + """ + if current_shift == "주간": + # 주간 -> 야간 인계 + # 야간팀은 같은 순환에서 다음 팀 + receiving_shift = "야간" + receiving_team = get_next_team(current_team) + else: + # 야간 -> 주간 인계 + # 주간팀은 같은 순환에서 다음 팀 + receiving_shift = "주간" + receiving_team = get_next_team(current_team) + + return { + 'handing_team': current_team, + 'handing_shift': current_shift, + 'receiving_team': receiving_team, + 'receiving_shift': receiving_shift, + } + + +class HandoverDialog(BaseDialog): + """ + 인수/인계 다이얼로그 + + 팀 간 업무 인수인계를 처리합니다. + - 왼쪽: 인계팀 정보 + - 오른쪽: 인수팀 정보 + - 가운데: 섹션별 인계 내용 + """ + + handover_completed = Signal() + + def __init__( + self, + parent=None, + current_team: str = "1팀", + current_shift: str = "주간" + ): + self.config = ConfigManager() + self.crud = CRUDManager() + self.weather_service = WeatherService() + + # 인계/인수 팀 정보 계산 + self.handover_info = get_handover_info(current_team, current_shift) + self.handing_team = self.handover_info['handing_team'] + self.handing_shift = self.handover_info['handing_shift'] + self.receiving_team = self.handover_info['receiving_team'] + self.receiving_shift = self.handover_info['receiving_shift'] + + # 인계할 항목 추적 + self._handover_items = { + 'instructions': [], + 'faults': [], + 'works': [], + 'miscs': [], + } + + # 할일 목록에 추가할 항목 + self._todo_items = [] + + super().__init__( + parent, + title="인수/인계", + width=1400, + height=900, + min_width=1200, + min_height=700, + resizable=True + ) + + self._setup_content() + self._load_data() + + def change_UI_Info(self, handing_team: str, handing_shift: str, receiving_team: str, receiving_shift: str): + """UI 정보 변경""" + self.handing_team = handing_team + self.handing_shift = handing_shift + self.receiving_team = receiving_team + self.receiving_shift = receiving_shift + self.title = f"인수/인계 - {handing_team} {handing_shift} → {receiving_team} {receiving_shift}" + self.setWindowTitle(self.title) + self._setup_content() + self._load_data() + + def _setup_content(self): + """컨텐츠 설정""" + theme = self.config.theme + is_dark = theme == 'dark' + + # 메인 레이아웃 + main_widget = QWidget() + main_layout = QVBoxLayout(main_widget) + main_layout.setContentsMargins(0, 0, 0, 0) + main_layout.setSpacing(16) + + # 상단 정보 영역 + self._create_header_section(main_layout) + + # 중앙 콘텐츠 영역 (좌/우/중앙) + self._create_main_content(main_layout) + + # 하단 버튼 영역 + self._create_footer_section(main_layout) + + self.content_layout.addWidget(main_widget) + + def _create_header_section(self, layout: QVBoxLayout): + """상단 정보 섹션 생성""" + theme = self.config.theme + is_dark = theme == 'dark' + + header = QWidget() + header_layout = QHBoxLayout(header) + header_layout.setContentsMargins(16, 8, 16, 8) + header_layout.setSpacing(24) + + # 날짜 + today = date.today() + date_label = QLabel(f"📅 {today.year}년 {today.month}월 {today.day}일") + date_label.setFont(QFont("GmarketSans", 16, QFont.Bold)) + date_label.setStyleSheet(f"color: {'#f8fafc' if is_dark else '#1e293b'};") + header_layout.addWidget(date_label) + + # 날씨 + weather_data = self.weather_service.get_last_weather() + weather_icon = weather_data.get('icon', '🌤') + weather_temp = weather_data.get('temp', '--') + weather_cond = weather_data.get('condition', '정보 없음') + + weather_label = QLabel(f"{weather_icon} {weather_temp}°C {weather_cond}") + weather_label.setFont(QFont("GmarketSans", 14)) + weather_label.setStyleSheet(f"color: {'#94a3b8' if is_dark else '#64748b'};") + header_layout.addWidget(weather_label) + + header_layout.addStretch() + + # 인계 방향 표시 + arrow_label = QLabel( + f"📤 {self.handing_team} {self.handing_shift} → " + f"📥 {self.receiving_team} {self.receiving_shift}" + ) + arrow_label.setFont(QFont("GmarketSans", 16, QFont.Bold)) + arrow_label.setStyleSheet(f"color: {'#3b82f6' if is_dark else '#2563eb'};") + header_layout.addWidget(arrow_label) + + # 헤더 스타일 + header.setStyleSheet(f""" + QWidget {{ + background-color: {'#1e293b' if is_dark else '#f1f5f9'}; + border-radius: 8px; + }} + """) + + layout.addWidget(header) + + def _create_main_content(self, layout: QVBoxLayout): + """메인 콘텐츠 영역 생성""" + theme = self.config.theme + is_dark = theme == 'dark' + + # 스플리터로 좌/중앙/우 분할 + splitter = QSplitter(Qt.Horizontal) + + # 왼쪽: 인계팀 정보 + left_panel = self._create_team_panel( + "인계팀", + self.handing_team, + self.handing_shift, + is_handing=True + ) + splitter.addWidget(left_panel) + + # 가운데: 섹션별 내용 + center_panel = self._create_center_panel() + splitter.addWidget(center_panel) + + # 오른쪽: 인수팀 정보 + right_panel = self._create_team_panel( + "인수팀", + self.receiving_team, + self.receiving_shift, + is_handing=False + ) + splitter.addWidget(right_panel) + + # 비율 설정 (2:6:2) + splitter.setSizes([200, 600, 200]) + + layout.addWidget(splitter, 1) + + def _create_team_panel( + self, + title: str, + team: str, + shift: str, + is_handing: bool + ) -> QWidget: + """팀 패널 생성""" + theme = self.config.theme + is_dark = theme == 'dark' + + panel = QWidget() + panel_layout = QVBoxLayout(panel) + panel_layout.setContentsMargins(12, 12, 12, 12) + panel_layout.setSpacing(12) + + # 제목 + title_label = QLabel(f"{title}") + title_label.setFont(QFont("GmarketSans", 14, QFont.Bold)) + title_label.setStyleSheet(f"color: {'#f8fafc' if is_dark else '#1e293b'};") + title_label.setAlignment(Qt.AlignCenter) + panel_layout.addWidget(title_label) + + # 팀/근무 정보 + shift_icon = "☀️" if shift == "주간" else "🌙" + team_label = QLabel(f"{team} {shift} {shift_icon}") + team_label.setFont(QFont("GmarketSans", 18, QFont.Bold)) + team_label.setStyleSheet(f"color: {'#3b82f6' if is_dark else '#2563eb'};") + team_label.setAlignment(Qt.AlignCenter) + panel_layout.addWidget(team_label) + + # 구분선 + separator = QFrame() + separator.setFrameShape(QFrame.HLine) + separator.setStyleSheet(f"color: {'#334155' if is_dark else '#e2e8f0'};") + panel_layout.addWidget(separator) + + # 당무 정보 + self._create_duty_info(panel_layout, team, shift, is_handing) + + # 구분선 + separator2 = QFrame() + separator2.setFrameShape(QFrame.HLine) + separator2.setStyleSheet(f"color: {'#334155' if is_dark else '#e2e8f0'};") + panel_layout.addWidget(separator2) + + # 일상검수/청소 정보 + self._create_daily_info(panel_layout, team, shift, is_handing) + + panel_layout.addStretch() + + # 패널 스타일 + panel.setStyleSheet(f""" + QWidget {{ + background-color: {'#1e293b' if is_dark else '#ffffff'}; + border: 1px solid {'#334155' if is_dark else '#e2e8f0'}; + border-radius: 8px; + }} + """) + + return panel + + def _create_duty_info( + self, + layout: QVBoxLayout, + team: str, + shift: str, + is_handing: bool + ): + """당무 정보 생성""" + theme = self.config.theme + is_dark = theme == 'dark' + + # 당무 정보 조회 + today = date.today() + duty = self.crud.get_duty_schedule(today, team, shift) + + vice_leader = duty.vice_leader_name if duty else "미지정" + operator = duty.operator_name if duty else "미지정" + + # 부팀장 당무 + vice_widget = QWidget() + vice_layout = QHBoxLayout(vice_widget) + vice_layout.setContentsMargins(0, 0, 0, 0) + + vice_label = QLabel("부팀장 당무:") + vice_label.setFont(QFont("GmarketSans", 11)) + vice_label.setStyleSheet(f"color: {'#94a3b8' if is_dark else '#64748b'};") + vice_layout.addWidget(vice_label) + + if is_handing: + # 인계팀은 표시만 + vice_value = QLabel(vice_leader) + vice_value.setFont(QFont("GmarketSans", 12, QFont.Bold)) + vice_value.setStyleSheet(f"color: {'#f8fafc' if is_dark else '#1e293b'};") + vice_layout.addWidget(vice_value) + else: + # 인수팀은 변경 가능 + self.receiving_vice_combo = CustomComboBox(placeholder="선택") + members = self.crud.get_team_members_by_team(team, "부팀장", active_only=True) + for m in members: + self.receiving_vice_combo.addItem(m.name, m.id) + if vice_leader and vice_leader != "미지정": + idx = self.receiving_vice_combo.findText(vice_leader) + if idx >= 0: + self.receiving_vice_combo.setCurrentIndex(idx) + vice_layout.addWidget(self.receiving_vice_combo) + + layout.addWidget(vice_widget) + + # 운용 당무 + op_widget = QWidget() + op_layout = QHBoxLayout(op_widget) + op_layout.setContentsMargins(0, 0, 0, 0) + + op_label = QLabel("운용 당무:") + op_label.setFont(QFont("GmarketSans", 11)) + op_label.setStyleSheet(f"color: {'#94a3b8' if is_dark else '#64748b'};") + op_layout.addWidget(op_label) + + if is_handing: + op_value = QLabel(operator) + op_value.setFont(QFont("GmarketSans", 12, QFont.Bold)) + op_value.setStyleSheet(f"color: {'#f8fafc' if is_dark else '#1e293b'};") + op_layout.addWidget(op_value) + else: + self.receiving_op_combo = CustomComboBox(placeholder="선택") + members = self.crud.get_team_members_by_team(team, "운용", active_only=True) + for m in members: + self.receiving_op_combo.addItem(m.name, m.id) + if operator and operator != "미지정": + idx = self.receiving_op_combo.findText(operator) + if idx >= 0: + self.receiving_op_combo.setCurrentIndex(idx) + op_layout.addWidget(self.receiving_op_combo) + + layout.addWidget(op_widget) + + def _create_daily_info( + self, + layout: QVBoxLayout, + team: str, + shift: str, + is_handing: bool + ): + """일상검수/청소 정보 생성""" + theme = self.config.theme + is_dark = theme == 'dark' + + # 일상차량 레이블 + daily_label = QLabel("일상검수 차량") + daily_label.setFont(QFont("GmarketSans", 11, QFont.Bold)) + daily_label.setStyleSheet(f"color: {'#94a3b8' if is_dark else '#64748b'};") + layout.addWidget(daily_label) + + # TODO: 일상검수 차량 목록 표시 + daily_info = QLabel("(일상검수 정보)") + daily_info.setFont(QFont("GmarketSans", 10)) + daily_info.setStyleSheet(f"color: {'#64748b' if is_dark else '#94a3b8'};") + layout.addWidget(daily_info) + + # 청소 레이블 + cleaning_label = QLabel("청소") + cleaning_label.setFont(QFont("GmarketSans", 11, QFont.Bold)) + cleaning_label.setStyleSheet(f"color: {'#94a3b8' if is_dark else '#64748b'};") + layout.addWidget(cleaning_label) + + # TODO: 청소 정보 표시 + cleaning_info = QLabel("(청소 정보)") + cleaning_info.setFont(QFont("GmarketSans", 10)) + cleaning_info.setStyleSheet(f"color: {'#64748b' if is_dark else '#94a3b8'};") + layout.addWidget(cleaning_info) + + def _create_center_panel(self) -> QWidget: + """중앙 패널 생성 (섹션별 탭)""" + theme = self.config.theme + is_dark = theme == 'dark' + + panel = QWidget() + panel_layout = QVBoxLayout(panel) + panel_layout.setContentsMargins(0, 0, 0, 0) + panel_layout.setSpacing(0) + + # 탭 위젯 + self.section_tabs = QTabWidget() + self.section_tabs.setFont(QFont("GmarketSans", 12)) + + # 탭 스타일 + if is_dark: + self.section_tabs.setStyleSheet(""" + QTabWidget::pane { + border: 1px solid #334155; + border-radius: 8px; + background-color: #1e293b; + } + QTabBar::tab { + background-color: #1e293b; + color: #94a3b8; + padding: 10px 20px; + border-top-left-radius: 6px; + border-top-right-radius: 6px; + margin-right: 2px; + } + QTabBar::tab:selected { + background-color: #334155; + color: #f8fafc; + } + """) + else: + self.section_tabs.setStyleSheet(""" + QTabWidget::pane { + border: 1px solid #e2e8f0; + border-radius: 8px; + background-color: #ffffff; + } + QTabBar::tab { + background-color: #f1f5f9; + color: #64748b; + padding: 10px 20px; + border-top-left-radius: 6px; + border-top-right-radius: 6px; + margin-right: 2px; + } + QTabBar::tab:selected { + background-color: #ffffff; + color: #1e293b; + } + """) + + # 섹션별 탭 생성 + sections = [ + ("지시사항", "instructions"), + ("고장", "faults"), + ("작업", "works"), + ("기타", "miscs"), + ] + + self.section_widgets = {} + for title, key in sections: + tab = self._create_section_tab(key) + self.section_tabs.addTab(tab, title) + self.section_widgets[key] = tab + + panel_layout.addWidget(self.section_tabs) + + return panel + + def _create_section_tab(self, section_key: str) -> QWidget: + """섹션 탭 생성""" + theme = self.config.theme + is_dark = theme == 'dark' + + tab = QWidget() + tab_layout = QHBoxLayout(tab) + tab_layout.setContentsMargins(8, 8, 8, 8) + tab_layout.setSpacing(8) + + # 왼쪽: 인계팀 항목 (인계 버튼 포함) + left_widget = self._create_handing_section(section_key) + tab_layout.addWidget(left_widget, 1) + + # 오른쪽: 인수팀 항목 (할일 추가 버튼 포함) + right_widget = self._create_receiving_section(section_key) + tab_layout.addWidget(right_widget, 1) + + return tab + + def _create_handing_section(self, section_key: str) -> QWidget: + """인계팀 섹션 생성""" + theme = self.config.theme + is_dark = theme == 'dark' + + widget = QWidget() + layout = QVBoxLayout(widget) + layout.setContentsMargins(8, 8, 8, 8) + layout.setSpacing(8) + + # 제목 + title = QLabel(f"📤 {self.handing_team} 인계 항목") + title.setFont(QFont("GmarketSans", 12, QFont.Bold)) + title.setStyleSheet(f"color: {'#f8fafc' if is_dark else '#1e293b'};") + layout.addWidget(title) + + # 스크롤 영역 + scroll = QScrollArea() + scroll.setWidgetResizable(True) + scroll.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) + + content = QWidget() + content_layout = QVBoxLayout(content) + content_layout.setContentsMargins(4, 4, 4, 4) + content_layout.setSpacing(8) + + # 항목들은 나중에 로드 + setattr(self, f"handing_{section_key}_layout", content_layout) + + content_layout.addStretch() + scroll.setWidget(content) + + # 스크롤 스타일 + scroll.setStyleSheet(f""" + QScrollArea {{ + border: 1px solid {'#334155' if is_dark else '#e2e8f0'}; + border-radius: 6px; + background-color: {'#0f172a' if is_dark else '#f8fafc'}; + }} + """) + + layout.addWidget(scroll, 1) + + return widget + + def _create_receiving_section(self, section_key: str) -> QWidget: + """인수팀 섹션 생성""" + theme = self.config.theme + is_dark = theme == 'dark' + + widget = QWidget() + layout = QVBoxLayout(widget) + layout.setContentsMargins(8, 8, 8, 8) + layout.setSpacing(8) + + # 제목 + 직접추가 버튼 + header = QWidget() + header_layout = QHBoxLayout(header) + header_layout.setContentsMargins(0, 0, 0, 0) + + title = QLabel(f"📥 {self.receiving_team} 인수 항목") + title.setFont(QFont("GmarketSans", 12, QFont.Bold)) + title.setStyleSheet(f"color: {'#f8fafc' if is_dark else '#1e293b'};") + header_layout.addWidget(title) + + header_layout.addStretch() + + # 직접추가 버튼 + add_btn = CustomButton("+ 직접추가", style_type="outline", fixed_height=28) + add_btn.clicked.connect(lambda: self._on_add_item_clicked(section_key)) + header_layout.addWidget(add_btn) + + layout.addWidget(header) + + # 스크롤 영역 + scroll = QScrollArea() + scroll.setWidgetResizable(True) + scroll.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) + + content = QWidget() + content_layout = QVBoxLayout(content) + content_layout.setContentsMargins(4, 4, 4, 4) + content_layout.setSpacing(8) + + # 항목들은 나중에 로드 + setattr(self, f"receiving_{section_key}_layout", content_layout) + + content_layout.addStretch() + scroll.setWidget(content) + + scroll.setStyleSheet(f""" + QScrollArea {{ + border: 1px solid {'#334155' if is_dark else '#e2e8f0'}; + border-radius: 6px; + background-color: {'#0f172a' if is_dark else '#f8fafc'}; + }} + """) + + layout.addWidget(scroll, 1) + + return widget + + def _create_footer_section(self, layout: QVBoxLayout): + """하단 버튼 영역 생성""" + theme = self.config.theme + is_dark = theme == 'dark' + + footer = QWidget() + footer_layout = QHBoxLayout(footer) + footer_layout.setContentsMargins(16, 8, 16, 8) + footer_layout.setSpacing(16) + + footer_layout.addStretch() + + # 취소 버튼 + cancel_btn = CustomButton("취소", style_type="secondary", fixed_height=40) + cancel_btn.setFixedWidth(120) + cancel_btn.clicked.connect(self.reject) + footer_layout.addWidget(cancel_btn) + + # 인수인계 완료 버튼 + complete_btn = CustomButton( + "✅ 인수/인계 완료", + style_type="primary", + fixed_height=40 + ) + complete_btn.setFixedWidth(180) + complete_btn.clicked.connect(self._on_complete_clicked) + footer_layout.addWidget(complete_btn) + + layout.addWidget(footer) + + def _load_data(self): + """데이터 로드""" + self._load_section_data("instructions") + self._load_section_data("faults") + self._load_section_data("works") + self._load_section_data("miscs") + + def _load_section_data(self, section_key: str): + """섹션 데이터 로드""" + theme = self.config.theme + is_dark = theme == 'dark' + + # 인계팀 데이터 로드 + handing_layout = getattr(self, f"handing_{section_key}_layout", None) + if not handing_layout: + return + + # 기존 항목 제거 (stretch 제외) + while handing_layout.count() > 1: + item = handing_layout.takeAt(0) + if item.widget(): + item.widget().deleteLater() + + # 데이터 조회 + today = date.today() + items = [] + + if section_key == "instructions": + # get_instructions_by_date 사용 (팀 필터링은 나중에) + all_items = self.crud.get_instructions_by_date(today, include_continuous=True) + # 팀 필터링 + items = [item for item in all_items if item.created_team == self.handing_team] + elif section_key == "faults": + items = self.crud.get_faults_by_date_range( + today, today, + team=self.handing_team + ) + elif section_key == "works": + items = self.crud.get_works_by_date_range( + today, today, + team=self.handing_team + ) + elif section_key == "miscs": + items = self.crud.get_miscs_by_date_range( + today, today, + team=self.handing_team + ) + + # 항목 추가 + for item in items: + item_widget = self._create_handing_item_widget(section_key, item) + handing_layout.insertWidget(handing_layout.count() - 1, item_widget) + + def _create_handing_item_widget(self, section_key: str, item) -> QWidget: + """인계 항목 위젯 생성""" + theme = self.config.theme + is_dark = theme == 'dark' + + widget = QWidget() + layout = QHBoxLayout(widget) + layout.setContentsMargins(8, 8, 8, 8) + layout.setSpacing(8) + + # 내용 + content = self._get_item_display_text(section_key, item) + content_label = QLabel(content) + content_label.setFont(QFont("GmarketSans", 11)) + content_label.setStyleSheet(f"color: {'#f8fafc' if is_dark else '#1e293b'};") + content_label.setWordWrap(True) + layout.addWidget(content_label, 1) + + # 인계 버튼 + handover_btn = CustomButton("인계 →", style_type="primary", fixed_height=28) + handover_btn.setFixedWidth(70) + handover_btn.clicked.connect( + lambda: self._on_handover_item_clicked(section_key, item) + ) + layout.addWidget(handover_btn) + + # 위젯 스타일 + widget.setStyleSheet(f""" + QWidget {{ + background-color: {'#1e293b' if is_dark else '#ffffff'}; + border: 1px solid {'#334155' if is_dark else '#e2e8f0'}; + border-radius: 6px; + }} + """) + + return widget + + def _create_receiving_item_widget( + self, + section_key: str, + item, + content: str + ) -> QWidget: + """인수 항목 위젯 생성""" + theme = self.config.theme + is_dark = theme == 'dark' + + widget = QWidget() + layout = QHBoxLayout(widget) + layout.setContentsMargins(8, 8, 8, 8) + layout.setSpacing(8) + + # 할일 추가 버튼 + todo_btn = CustomButton("📝", style_type="text", fixed_height=28) + todo_btn.setFixedWidth(36) + todo_btn.setToolTip("할일 목록에 추가") + todo_btn.clicked.connect( + lambda: self._on_add_to_todo_clicked(section_key, item, content) + ) + layout.addWidget(todo_btn) + + # 내용 + content_label = QLabel(content) + content_label.setFont(QFont("GmarketSans", 11)) + content_label.setStyleSheet(f"color: {'#f8fafc' if is_dark else '#1e293b'};") + content_label.setWordWrap(True) + layout.addWidget(content_label, 1) + + # 위젯 스타일 + widget.setStyleSheet(f""" + QWidget {{ + background-color: {'#22c55e20' if is_dark else '#dcfce7'}; + border: 1px solid {'#22c55e' if is_dark else '#86efac'}; + border-radius: 6px; + }} + """) + + return widget + + def _get_item_display_text(self, section_key: str, item) -> str: + """항목 표시 텍스트 생성""" + if section_key == "instructions": + return f"[{item.instructor}] {item.instruction_content[:50]}..." + elif section_key == "faults": + return f"[{item.train_number}] {item.fault_content[:50]}..." + elif section_key == "works": + return f"[{item.work_type}] {item.work_content[:50]}..." + elif section_key == "miscs": + return f"{item.content[:60]}..." + return str(item) + + def _on_handover_item_clicked(self, section_key: str, item): + """인계 버튼 클릭""" + # 인수팀 영역에 추가 + receiving_layout = getattr(self, f"receiving_{section_key}_layout", None) + if not receiving_layout: + return + + content = self._get_item_display_text(section_key, item) + item_widget = self._create_receiving_item_widget(section_key, item, content) + receiving_layout.insertWidget(receiving_layout.count() - 1, item_widget) + + # 인계 항목 추적 + self._handover_items[section_key].append(item) + + logger.info("항목 인계: %s - ID %s", section_key, item.id) + + def _on_add_to_todo_clicked(self, section_key: str, item, content: str): + """할일 추가 버튼 클릭""" + self._todo_items.append({ + 'section': section_key, + 'item': item, + 'content': content, + }) + logger.info("할일 추가: %s", content[:30]) + + def _on_add_item_clicked(self, section_key: str): + """직접추가 버튼 클릭""" + from ui.dialogs.input_dialog import InputDialog + + dialog = InputDialog( + self, + title="항목 직접 추가", + label="내용을 입력하세요:", + multiline=True + ) + + if dialog.exec(): + content = dialog.get_value() + if content: + # 인수팀 영역에 추가 + receiving_layout = getattr(self, f"receiving_{section_key}_layout", None) + if receiving_layout: + # 직접 추가 항목 위젯 + item_widget = self._create_manual_item_widget(section_key, content) + receiving_layout.insertWidget(receiving_layout.count() - 1, item_widget) + + # 할일 목록에도 추가 + self._todo_items.append({ + 'section': section_key, + 'item': None, + 'content': content, + }) + + def _create_manual_item_widget(self, section_key: str, content: str) -> QWidget: + """직접 추가 항목 위젯 생성""" + theme = self.config.theme + is_dark = theme == 'dark' + + widget = QWidget() + layout = QHBoxLayout(widget) + layout.setContentsMargins(8, 8, 8, 8) + layout.setSpacing(8) + + # 직접추가 표시 + tag_label = QLabel("📌") + layout.addWidget(tag_label) + + # 내용 + content_label = QLabel(content) + content_label.setFont(QFont("GmarketSans", 11)) + content_label.setStyleSheet(f"color: {'#f8fafc' if is_dark else '#1e293b'};") + content_label.setWordWrap(True) + layout.addWidget(content_label, 1) + + # 위젯 스타일 + widget.setStyleSheet(f""" + QWidget {{ + background-color: {'#f59e0b20' if is_dark else '#fef3c7'}; + border: 1px solid {'#f59e0b' if is_dark else '#fcd34d'}; + border-radius: 6px; + }} + """) + + return widget + + def _on_complete_clicked(self): + """인수인계 완료 버튼 클릭""" + today = date.today() + + # 인수팀 당무 저장 + if hasattr(self, 'receiving_vice_combo') and hasattr(self, 'receiving_op_combo'): + vice_name = self.receiving_vice_combo.currentText() + vice_id = self.receiving_vice_combo.currentData() + op_name = self.receiving_op_combo.currentText() + op_id = self.receiving_op_combo.currentData() + + if vice_name or op_name: + self.crud.upsert_duty_schedule( + duty_date=today, + team=self.receiving_team, + shift_type=self.receiving_shift, + vice_leader_id=vice_id, + vice_leader_name=vice_name, + operator_id=op_id, + operator_name=op_name + ) + + # 할일 목록에 추가 + for todo_item in self._todo_items: + self.crud.create_todo( + created_date=today, + created_team=self.receiving_team, + content=todo_item['content'], + is_completed=False + ) + + # 인계 항목들의 팀 확인 상태 업데이트 + for section_key, items in self._handover_items.items(): + for item in items: + item.set_team_confirmation(self.receiving_team, True) + # 업데이트 + if section_key == "instructions": + self.crud.update_instruction( + item.id, + team_confirmations=item.team_confirmations + ) + elif section_key == "faults": + self.crud.update_fault( + item.id, + team_confirmations=item.team_confirmations + ) + elif section_key == "works": + self.crud.update_work( + item.id, + team_confirmations=item.team_confirmations + ) + elif section_key == "miscs": + self.crud.update_misc( + item.id, + team_confirmations=item.team_confirmations + ) + + logger.info( + "인수인계 완료: %s %s -> %s %s", + self.handing_team, self.handing_shift, + self.receiving_team, self.receiving_shift + ) + + self.handover_completed.emit() + self.accept() + diff --git a/ui/dialogs/history_dialog.py b/ui/dialogs/history_dialog.py new file mode 100644 index 0000000..b78d3a1 --- /dev/null +++ b/ui/dialogs/history_dialog.py @@ -0,0 +1,1776 @@ +# -*- coding: utf-8 -*- +""" +HistoryDialog (재설계 전체 코드) + +요구사항 반영: +1) 검색: 라벨 제거, 1줄 입력 + 돋보기/리셋 아이콘 버튼, 검색 칩 내장(검색도 카드로 처리) +2) 각 필터: 카드(QFrame) + 카드 클릭 시 QMenu 팝업(별도 다이얼로그 없음) +3) 활성 필터 칩: "별도 영역" 제거, 각 카드 내부에 표시 +4) 제목 섹션 삭제 +5) 날짜 필터: QMenu 내부에 캘린더(기간 선택) 위젯 완전 구현 (단일 캘린더 범위 선택 + 하단 적용/해제) +6) 장치/편성 필터: 트리(계통→장치→부품) + 체크 + 검색, 선택 즉시 칩 반영 + +주의: +- 본 코드는 HistoryDialog 단일 파일로 "바로 복붙" 가능한 형태를 목표로 했습니다. +- 다만, 프로젝트에 이미 존재하는 클래스/모듈: + BaseDialog, StyleManager, FlowLayout, FilterChipButton(=filter_chip_button.py), CRUDManager, models 등은 + 기존 프로젝트 구조를 그대로 사용합니다. +- 장치/편성 트리 데이터는 "예시 데이터"를 기본 제공하며, + 실제 DB/모델 기반으로 채우도록 _load_device_tree_data(), _load_train_tree_data()에서 교체하세요. +""" + +from __future__ import annotations + +from typing import List, Type, Dict, Any, Optional, Callable, Tuple +from datetime import date, datetime, timedelta + +from PySide6.QtWidgets import ( + QWidget, QVBoxLayout, QHBoxLayout, QFrame, QLabel, QLineEdit, QToolButton, + QSplitter, QTabWidget, QTableWidget, QTableWidgetItem, QHeaderView, + QAbstractItemView, QMenu, QWidgetAction, QPushButton, QCalendarWidget, + QTreeWidget, QTreeWidgetItem, QSizePolicy +) +from PySide6.QtCore import Qt, Signal, QPoint, QTimer, QDate +from PySide6.QtGui import QAction, QTextCharFormat, QColor, QPainter, QFont + +from ui.base.base_dialog import BaseDialog +from ui.styles.style_manager import StyleManager +from ui.components.flow_layout import FlowLayout +from ui.components.chips.filter_chip_button import FilterChipButton +from ui.components.chips.chip_base_button import ChipTheme +from ui.widgets.clickableLabel import ClickableLabel +from database.crud import CRUDManager +from database.models import BaseModel, SectionBase +from core.constants import TEAMS +from core.logger import get_logger + +import json + +logger = get_logger(__name__) + + +# ========================================================= +# 공용: 카드 베이스 (클릭하면 QMenu 팝업) +# ========================================================= +class FilterCard(QFrame): + """ + 필터 카드: + - 카드 자체 클릭 시 QMenu 팝업을 카드 하단에 띄움 + - 내부에 chips_area(FlowLayout) 포함 + - 제목은 ClickableLabel로 클릭 가능하며 hover 시 힌트 표시 + """ + # 필터 타입별 배경색 (다크 테마 기준) + FILTER_COLORS = { + "date": "#1e3a5f", # 날짜: 진한 파란색 + "team": "#3d2e4f", # 팀: 보라색 계열 + "status": "#2d4a2d", # 상태: 초록색 계열 + "device": "#4a3d2e", # 장치: 갈색 계열 + "train": "#3d4a5f", # 편성: 청록색 계열 + "default": "#1e293b", # 기본: 다크 그레이 + } + + # 필터 타입별 사용방법 힌트 + FILTER_HINTS = { + "date": "날짜 필터\n• 날짜를 2번 클릭하여 기간 선택\n• 빠른 기간 버튼(30일, 90일 등) 클릭 시 즉시 적용", + "team": "팀 필터\n• 체크박스로 여러 팀 선택 가능\n• 선택 즉시 필터 적용", + "status": "상태 필터\n• 완료/진행중 중 선택\n• 선택 즉시 필터 적용", + "device": "장치 필터\n• 트리 구조에서 장치 선택\n• 검색 기능으로 빠르게 찾기\n• 선택 즉시 필터 적용", + "train": "편성 필터\n• 트리 구조에서 편성 선택\n• 검색 기능으로 빠르게 찾기\n• 선택 즉시 필터 적용", + "default": "필터 카드\n• 카드 클릭 시 필터 메뉴 표시\n• 선택한 필터는 칩으로 표시", + } + + def __init__( + self, + title: str, + icon: str, + style_manager: StyleManager, + popup_builder: Optional[Callable[[QMenu], None]] = None, + filter_type: str = "default", + parent: Optional[QWidget] = None + ): + super().__init__(parent) + self.style_manager = style_manager + self._popup_builder = popup_builder + self.filter_type = filter_type + + self.setObjectName(f"FilterCard_{filter_type}") + self.setCursor(Qt.PointingHandCursor) + + self._build_ui(title, icon) + self._apply_style() + + def _build_ui(self, title: str, icon: str): + lay = QVBoxLayout(self) + lay.setContentsMargins(10, 10, 10, 10) + lay.setSpacing(8) + + header = QWidget(self) + header_lay = QHBoxLayout(header) + header_lay.setContentsMargins(0, 0, 0, 0) + header_lay.setSpacing(8) + + self.icon_label = QLabel(icon) + self.icon_label.setFixedWidth(18) + self.icon_label.setAlignment(Qt.AlignCenter) + + # 제목을 ClickableLabel로 변경 + self.title_label = ClickableLabel( + title, + parent=self, + enable_click=True, + enable_double_click=False, + enable_hover=True + ) + self.title_label.setAlignment(Qt.AlignVCenter | Qt.AlignLeft) + # hover 시 힌트 표시 + hint_text = self.FILTER_HINTS.get(self.filter_type, self.FILTER_HINTS["default"]) + self.title_label.set_hover_text(hint_text) + # 클릭 시 팝업 표시 + self.title_label.clicked.connect(self.show_popup) + + header_lay.addWidget(self.icon_label, 0) + header_lay.addWidget(self.title_label, 1) + + lay.addWidget(header) + + self.chips_area = QWidget(self) + self.chips_area.setObjectName("CardChipsArea") + self.chips_area.setMinimumHeight(28) + self.flow_layout = FlowLayout(self.chips_area, margin=0, h_spacing=6, v_spacing=6) + lay.addWidget(self.chips_area) + + self.empty_hint = QLabel("없음") + self.empty_hint.setObjectName("CardEmptyHint") + self.empty_hint.setAlignment(Qt.AlignLeft | Qt.AlignVCenter) + lay.addWidget(self.empty_hint) + + self.sync_empty_hint() + + def _apply_style(self): + colors = self.style_manager.get_colors() + # 필터 카드는 작은 공간에 들어가므로 더 작은 폰트 사용 + label_font = self.style_manager.get_font("dialog", "label") + # 폰트 크기를 10pt로 제한 (다이얼로그 기본 12pt보다 작게) + card_font_size = min(10, label_font.pointSize() - 2) + + # 필터 타입별 배경색 가져오기 + bg_color = self.FILTER_COLORS.get(self.filter_type, self.FILTER_COLORS["default"]) + # 다크/라이트 테마에 따라 색상 조정 + theme = self.style_manager.config.theme + if theme == "light": + # 라이트 테마: 색상을 밝게 조정 + bg_color = self._lighten_color(bg_color) + + self.setStyleSheet(f""" + QFrame#FilterCard_{self.filter_type} {{ + background-color: {bg_color}; + border: 1px solid rgba(255,255,255,0.15); + border-radius: 12px; + }} + QFrame#FilterCard_{self.filter_type}:hover {{ + border: 1px solid rgba(255,255,255,0.30); + background-color: {self._adjust_brightness(bg_color, 1.15)}; + }} + QFrame#FilterCard_{self.filter_type} QLabel {{ + background: transparent; + color: {colors.get('text_primary', '#f0f0f0')}; + font-family: '{label_font.family()}'; + font-size: {card_font_size}pt; + min-height: {max(18, card_font_size + 4)}px; + }} + QLabel#CardEmptyHint {{ + color: rgba(255,255,255,0.65); + font-size: 10px; + min-height: 16px; + }} + """) + + def _lighten_color(self, hex_color: str) -> str: + """라이트 테마용 색상을 밝게 조정""" + # 간단한 밝기 조정 (실제로는 HSL 변환 권장) + if hex_color.startswith("#"): + r = int(hex_color[1:3], 16) + g = int(hex_color[3:5], 16) + b = int(hex_color[5:7], 16) + # 밝게 조정 + r = min(255, int(r * 2.5)) + g = min(255, int(g * 2.5)) + b = min(255, int(b * 2.5)) + return f"#{r:02x}{g:02x}{b:02x}" + return hex_color + + def _adjust_brightness(self, hex_color: str, factor: float) -> str: + """색상 밝기 조정""" + if hex_color.startswith("#"): + r = int(hex_color[1:3], 16) + g = int(hex_color[3:5], 16) + b = int(hex_color[5:7], 16) + r = min(255, int(r * factor)) + g = min(255, int(g * factor)) + b = min(255, int(b * factor)) + return f"#{r:02x}{g:02x}{b:02x}" + return hex_color + + def set_popup_builder(self, builder: Callable[[QMenu], None]): + self._popup_builder = builder + + def show_popup(self): + if not self._popup_builder: + return + menu = QMenu(self) + self._popup_builder(menu) + + # 카드 하단에 표시 + global_pos = self.mapToGlobal(QPoint(10, self.height() - 6)) + menu.exec(global_pos) + + def mousePressEvent(self, event): + if event.button() == Qt.LeftButton: + self.show_popup() + event.accept() + return + super().mousePressEvent(event) + + def sync_empty_hint(self): + # FlowLayout에 실제 칩이 있는지 여부는 외부에서 dict로 관리하므로, + # 여기서는 간단히 chips_area 내 자식 FilterChipButton 개수로 판단 + chips = self.chips_area.findChildren(FilterChipButton) + self.empty_hint.setVisible(len(chips) == 0) + + +# ========================================================= +# 검색 카드: 입력 + 돋보기/리셋 + 검색 칩 내장 +# ========================================================= +class SearchCard(QFrame): + """ + 검색 카드: + - QLineEdit 1줄 + - 돋보기/리셋 아이콘 버튼(QToolButton) + - 검색 칩 내장(FlowLayout) + """ + search_requested = Signal(str) # 검색 실행 요청 + reset_requested = Signal() # 전체 초기화 요청(필터+검색) + search_cleared = Signal() # 검색만 제거 요청 + + # 최소 높이 상수 + MIN_INPUT_HEIGHT = 32 + MIN_BUTTON_SIZE = 28 + MIN_CHIPS_HEIGHT = 32 + MIN_CARD_HEIGHT = 100 + + def __init__(self, style_manager: StyleManager, parent: Optional[QWidget] = None): + super().__init__(parent) + self.style_manager = style_manager + self.setObjectName("SearchCard") + self._build_ui() + self._apply_style() + + def _build_ui(self): + lay = QVBoxLayout(self) + lay.setContentsMargins(12, 10, 12, 10) + lay.setSpacing(8) + + # 상단 입력줄 + row = QWidget(self) + row.setMinimumHeight(self.MIN_INPUT_HEIGHT) + row_lay = QHBoxLayout(row) + row_lay.setContentsMargins(0, 0, 0, 0) + row_lay.setSpacing(4) + + self.input = QLineEdit() + self.input.setPlaceholderText("검색어 입력…") + self.input.setMinimumHeight(self.MIN_INPUT_HEIGHT) + self.input.returnPressed.connect(self._on_search_clicked) + row_lay.addWidget(self.input, 1) + + self.btn_search = QToolButton() + self.btn_search.setText("🔍") + self.btn_search.setToolTip("검색") + self.btn_search.setMinimumSize(self.MIN_BUTTON_SIZE, self.MIN_BUTTON_SIZE) + self.btn_search.clicked.connect(self._on_search_clicked) + row_lay.addWidget(self.btn_search, 0) + + self.btn_reset = QToolButton() + self.btn_reset.setText("↺") + self.btn_reset.setToolTip("초기화") + self.btn_reset.setMinimumSize(self.MIN_BUTTON_SIZE, self.MIN_BUTTON_SIZE) + self.btn_reset.clicked.connect(lambda: self.reset_requested.emit()) + row_lay.addWidget(self.btn_reset, 0) + + lay.addWidget(row) + + # 검색 칩 영역 (검색 없음 라벨과 통합) + self.chips_container = QWidget(self) + self.chips_container.setMinimumHeight(self.MIN_CHIPS_HEIGHT) + chips_lay = QHBoxLayout(self.chips_container) + chips_lay.setContentsMargins(0, 0, 0, 0) + chips_lay.setSpacing(0) + + self.chips_area = QWidget(self.chips_container) + self.flow_layout = FlowLayout(self.chips_area, margin=0, h_spacing=6, v_spacing=4) + chips_lay.addWidget(self.chips_area, 1) + + lay.addWidget(self.chips_container) + + self.empty_hint = QLabel("검색 없음") + self.empty_hint.setAlignment(Qt.AlignLeft | Qt.AlignVCenter) + self.empty_hint.setMinimumHeight(20) + lay.addWidget(self.empty_hint) + + # 카드 최소 높이 설정 + self.setMinimumHeight(self.MIN_CARD_HEIGHT) + + self.sync_empty_hint() + + def _apply_style(self): + colors = self.style_manager.get_colors() + label_font = self.style_manager.get_font("dialog", "label") + card_font_size = max(9, min(10, label_font.pointSize() - 2)) + input_font = self.style_manager.get_font("dialog", "input") + input_font_size = max(10, min(11, input_font.pointSize() - 1)) + + self.setStyleSheet(f""" + QFrame#SearchCard {{ + background-color: {colors['bg_secondary']}; + border: 1px solid rgba(255,255,255,0.10); + border-radius: 10px; + }} + QFrame#SearchCard QLineEdit {{ + border: 1px solid rgba(255,255,255,0.15); + border-radius: 6px; + background: rgba(0,0,0,0.2); + padding: 6px 10px; + color: {colors.get('text_primary', '#f0f0f0')}; + font-family: '{input_font.family()}'; + font-size: {input_font_size}pt; + min-height: {self.MIN_INPUT_HEIGHT - 12}px; + }} + QFrame#SearchCard QLineEdit:focus {{ + border: 1px solid rgba(100,150,255,0.5); + }} + QFrame#SearchCard QToolButton {{ + border: 1px solid rgba(255,255,255,0.1); + border-radius: 6px; + background: rgba(255,255,255,0.05); + padding: 4px; + color: {colors.get('text_primary', '#f0f0f0')}; + font-size: {card_font_size + 2}pt; + min-width: {self.MIN_BUTTON_SIZE}px; + min-height: {self.MIN_BUTTON_SIZE}px; + }} + QFrame#SearchCard QToolButton:hover {{ + background: rgba(255,255,255,0.12); + border-color: rgba(255,255,255,0.2); + }} + QFrame#SearchCard QLabel {{ + background: transparent; + color: {colors.get('text_secondary', '#888888')}; + font-family: '{label_font.family()}'; + font-size: {card_font_size}pt; + }} + """) + + def _on_search_clicked(self): + text = self.input.text().strip() + self.search_requested.emit(text) + + def clear_input(self): + self.input.clear() + + def sync_empty_hint(self): + chips = self.chips_area.findChildren(FilterChipButton) + self.empty_hint.setVisible(len(chips) == 0) + self.chips_area.setVisible(len(chips) > 0) + + +# ========================================================= +# 커스텀 캘린더 위젯: 날짜 아래 특정 문자 표시 지원 +# ========================================================= +class CustomCalendarWidget(QCalendarWidget): + """ + 날짜 아래에 특정 문자를 표시할 수 있는 커스텀 캘린더 위젯 + 근무조는 날짜를 그릴 때마다 동적으로 계산됩니다. + """ + def __init__(self, parent=None): + super().__init__(parent) + # 날짜별 표시할 문자 딕셔너리: {date: "DC", ...} + # (수동으로 설정한 마커만 저장, 근무조는 동적 계산) + self.date_markers: Dict[date, str] = {} + + # 근무조 계산 기준일 설정 + self.BASE_DATE = date(2026, 1, 5) # 기준일: 2026-01-05 (주간 A조, 야간 B조 → AB) + self.BASE_DAY_SHIFT = "A" # 기준일의 주간조 + self.BASE_NIGHT_SHIFT = "B" # 기준일의 야간조 + + # 주간조 순서: A → D → C → B (4일 주기) + self.DAY_SHIFTS = ["A", "D", "C", "B"] + # 야간조 순서: B → A → D → C (4일 주기) + self.NIGHT_SHIFTS = ["B", "A", "D", "C"] + + # 기준일의 인덱스 + self.base_day_idx = self.DAY_SHIFTS.index(self.BASE_DAY_SHIFT) + self.base_night_idx = self.NIGHT_SHIFTS.index(self.BASE_NIGHT_SHIFT) + + def calculate_shift_marker(self, target_date: date) -> str: + """ + 특정 날짜의 근무조 마커를 계산 + + Args: + target_date: 계산할 날짜 + + Returns: + 근무조 마커 문자열 (예: "AB", "DA", "CD") + """ + # 기준일로부터 경과 일수 계산 + days_diff = (target_date - self.BASE_DATE).days + + # 주간조 계산 (4일 주기) + day_shift_idx = (self.base_day_idx + days_diff) % 4 + day_shift = self.DAY_SHIFTS[day_shift_idx] + + # 야간조 계산 (4일 주기) + night_shift_idx = (self.base_night_idx + days_diff) % 4 + night_shift = self.NIGHT_SHIFTS[night_shift_idx] + + # 마커 생성 (주간조 + 야간조) + return f"{day_shift}{night_shift}" + + def set_date_marker(self, target_date: date, marker: str): + """ + 특정 날짜에 마커 문자 설정 + + Args: + target_date: 날짜 + marker: 표시할 문자 (예: "DC", "AB", "AC") + """ + self.date_markers[target_date] = marker + self.updateCells() + + def set_date_markers(self, markers: Dict[date, str]): + """ + 여러 날짜의 마커를 한번에 설정 + + Args: + markers: {date: "marker"} 딕셔너리 + """ + self.date_markers.update(markers) + self.updateCells() + + def clear_date_marker(self, target_date: date): + """특정 날짜의 마커 제거""" + self.date_markers.pop(target_date, None) + self.updateCells() + + def clear_all_markers(self): + """모든 마커 제거""" + self.date_markers.clear() + self.updateCells() + + def paintCell(self, painter: QPainter, rect, qdate: QDate): + """날짜 셀 그리기 오버라이드""" + # 기본 그리기 + super().paintCell(painter, rect, qdate) + + # 날짜 아래에 마커 표시 + target_date = qdate.toPython() + + # 마커 결정: 수동 설정된 마커가 있으면 사용, 없으면 근무조 자동 계산 + if target_date in self.date_markers: + marker = self.date_markers[target_date] + else: + # 근무조를 동적으로 계산 + marker = self.calculate_shift_marker(target_date) + + if marker: + painter.save() + # 더 큰 폰트로 마커 표시 + marker_font = QFont(painter.font()) + marker_font.setPointSize(9) # 7에서 9로 증가 + marker_font.setBold(True) # 굵게 표시 + painter.setFont(marker_font) + + # 날짜 텍스트 아래 중앙에 마커 표시 + # 날짜 숫자가 보통 상단 중앙에 있으므로, 그 아래에 마커 표시 + marker_y = rect.top() + rect.height() * 0.65 # 날짜 아래 약간 + marker_rect = rect.adjusted(0, int(marker_y - rect.top()), 0, 0) + painter.setPen(QColor(100, 150, 255)) # 파란색 계열 + painter.drawText(marker_rect, Qt.AlignHCenter | Qt.AlignTop, marker) + painter.restore() + + +# ========================================================= +# 날짜 범위 선택: QMenu 내부 위젯(단일 캘린더 범위 선택) +# ========================================================= +class RangeCalendarWidget(QWidget): + """ + 단일 캘린더에서 날짜 범위를 선택: + - 순서에 상관없이 2번 클릭 시 자동으로 기간 설정 + - 첫 클릭이 종료일이어도 정상 동작 + - 선택 범위를 캘린더에 하이라이트 + """ + range_changed = Signal(object, object) # (date|None, date|None) + range_applied = Signal(object, object) # (date|None, date|None) - 범위 완성 시 자동 적용 + + def __init__(self, parent: Optional[QWidget] = None): + super().__init__(parent) + + self.start_date: Optional[date] = None + self.end_date: Optional[date] = None + self._click_count = 0 # 클릭 횟수 추적 + + self._fmt_normal = QTextCharFormat() + self._fmt_selected = QTextCharFormat() + self._fmt_selected.setBackground(QColor(80, 160, 255, 80)) # 반투명 하이라이트 + + self._fmt_endpoints = QTextCharFormat() + self._fmt_endpoints.setBackground(QColor(80, 160, 255, 140)) + + lay = QVBoxLayout(self) + lay.setContentsMargins(8, 8, 8, 8) + lay.setSpacing(8) + + self.calendar = CustomCalendarWidget() + self.calendar.setGridVisible(True) + self.calendar.clicked.connect(self._on_clicked) + lay.addWidget(self.calendar, 1) + + # 날짜별 마커 데이터 (예시: 실제로는 DB나 설정에서 가져와야 함) + self._date_markers: Dict[date, str] = {} + + self.label = QLabel("범위를 선택하세요: 날짜를 2번 클릭하세요") + self.label.setAlignment(Qt.AlignLeft | Qt.AlignVCenter) + lay.addWidget(self.label) + + btn_row = QHBoxLayout() + btn_row.setSpacing(6) + + self.btn_today = QPushButton("오늘") + self.btn_30d = QPushButton("최근 30일") + self.btn_90d = QPushButton("최근 90일") + self.btn_180d = QPushButton("최근 180일") + self.btn_365d = QPushButton("최근 365일") + self.btn_clear = QPushButton("해제") + + # 빠른 기간 버튼 클릭 시 바로 적용되도록 수정 + self.btn_today.clicked.connect(lambda: self.set_range(date.today(), date.today(), auto_apply=True)) + self.btn_30d.clicked.connect(lambda: self.set_range(date.today() - timedelta(days=29), date.today(), auto_apply=True)) + self.btn_90d.clicked.connect(lambda: self.set_range(date.today() - timedelta(days=89), date.today(), auto_apply=True)) + self.btn_180d.clicked.connect(lambda: self.set_range(date.today() - timedelta(days=179), date.today(), auto_apply=True)) + self.btn_365d.clicked.connect(lambda: self.set_range(date.today() - timedelta(days=364), date.today(), auto_apply=True)) + self.btn_clear.clicked.connect(lambda: self.clear_range()) + + btn_row.addWidget(self.btn_today) + btn_row.addWidget(self.btn_30d) + btn_row.addWidget(self.btn_90d) + btn_row.addWidget(self.btn_180d) + btn_row.addWidget(self.btn_365d) + btn_row.addStretch(1) + btn_row.addWidget(self.btn_clear) + + lay.addLayout(btn_row) + + def _on_clicked(self, qdate: QDate): + d = qdate.toPython() # datetime.date + + # 순서에 상관없이 2번 클릭 시 자동으로 기간 설정 + if self._click_count == 0: + # 첫 번째 클릭: 임시로 첫 날짜 저장 + self.start_date = d + self.end_date = None + self._click_count = 1 + elif self._click_count == 1: + # 두 번째 클릭: 두 날짜를 비교하여 작은 날짜를 시작일, 큰 날짜를 종료일로 설정 + if d < self.start_date: + # 두 번째 클릭이 더 이전 날짜인 경우 + self.end_date = self.start_date + self.start_date = d + else: + # 두 번째 클릭이 더 이후 날짜인 경우 + self.end_date = d + self._click_count = 0 # 리셋하여 다음 범위 선택 준비 + + # 범위가 완성되었으므로 자동 적용 시그널 발생 + self._refresh_formats() + self._update_label() + self.range_changed.emit(self.start_date, self.end_date) + self.range_applied.emit(self.start_date, self.end_date) + return + + self._refresh_formats() + self._update_label() + self.range_changed.emit(self.start_date, self.end_date) + + def set_range(self, start: date, end: date, auto_apply: bool = False): + self.start_date = start + self.end_date = end if end >= start else start + self._click_count = 0 # 클릭 횟수 리셋 + self.calendar.setSelectedDate(QDate(self.end_date.year, self.end_date.month, self.end_date.day)) + self._refresh_formats() + self._update_label() + self.range_changed.emit(self.start_date, self.end_date) + if auto_apply: + self.range_applied.emit(self.start_date, self.end_date) + + def clear_range(self): + self.start_date = None + self.end_date = None + self._click_count = 0 # 클릭 횟수 리셋 + self._refresh_formats() + self._update_label() + self.range_changed.emit(None, None) + + def _update_label(self): + if not self.start_date and not self.end_date: + self.label.setText("범위를 선택하세요: 날짜를 2번 클릭하세요") + return + if self.start_date and not self.end_date: + self.label.setText(f"첫 번째 날짜: {self.start_date:%Y-%m-%d} (두 번째 날짜를 클릭하세요)") + return + if self.start_date and self.end_date: + self.label.setText(f"선택: {self.start_date:%Y-%m-%d} ~ {self.end_date:%Y-%m-%d}") + + def _refresh_formats(self): + # 전체 포맷 초기화(성능: 월 단위만 처리) + # 현재 표시 월 기준으로 1~31만 초기화/적용 + shown_year = self.calendar.yearShown() + shown_month = self.calendar.monthShown() + + # 일단 그 달의 모든 날짜 포맷 초기화 + for day in range(1, 32): + qd = QDate(shown_year, shown_month, day) + if qd.isValid(): + self.calendar.setDateTextFormat(qd, self._fmt_normal) + + if not self.start_date: + return + + # start만 있는 경우 + if self.start_date and not self.end_date: + qd = QDate(self.start_date.year, self.start_date.month, self.start_date.day) + if qd.isValid() and qd.year() == shown_year and qd.month() == shown_month: + self.calendar.setDateTextFormat(qd, self._fmt_endpoints) + return + + # start~end 범위 하이라이트(보이는 달 안에서만) + if self.start_date and self.end_date: + cur = self.start_date + while cur <= self.end_date: + if cur.year == shown_year and cur.month == shown_month: + qd = QDate(cur.year, cur.month, cur.day) + if qd.isValid(): + self.calendar.setDateTextFormat(qd, self._fmt_selected) + cur += timedelta(days=1) + + # endpoints 강조 + s = QDate(self.start_date.year, self.start_date.month, self.start_date.day) + e = QDate(self.end_date.year, self.end_date.month, self.end_date.day) + if s.isValid() and s.year() == shown_year and s.month() == shown_month: + self.calendar.setDateTextFormat(s, self._fmt_endpoints) + if e.isValid() and e.year() == shown_year and e.month() == shown_month: + self.calendar.setDateTextFormat(e, self._fmt_endpoints) + + def get_range(self) -> Tuple[Optional[date], Optional[date]]: + return self.start_date, self.end_date + + def set_date_markers(self, markers: Dict[date, str]): + """ + 날짜별 마커 설정 + + Args: + markers: {date: "marker"} 딕셔너리 (예: {date(2024, 1, 15): "DC", ...}) + """ + self._date_markers = markers + self.calendar.set_date_markers(markers) + + def set_date_marker(self, target_date: date, marker: str): + """ + 특정 날짜에 마커 설정 + + Args: + target_date: 날짜 + marker: 표시할 문자 (예: "DC", "AB", "AC") + """ + self._date_markers[target_date] = marker + self.calendar.set_date_marker(target_date, marker) + + def clear_date_marker(self, target_date: date): + """특정 날짜의 마커 제거""" + self._date_markers.pop(target_date, None) + self.calendar.clear_date_marker(target_date) + + def clear_all_markers(self): + """모든 마커 제거""" + self._date_markers.clear() + self.calendar.clear_all_markers() + + +# ========================================================= +# 트리 필터 팝업 위젯: 검색 + 트리(체크) + 선택 즉시 반영 +# ========================================================= +class TreeFilterWidget(QWidget): + """ + 트리(계통→장치→부품) + 체크 + 검색 + - 체크 변화 시 선택이 즉시 반영되도록 시그널 발생 + """ + selection_changed = Signal(list) # 선택된 path 리스트 (["계통/장치/부품", ...]) + + def __init__(self, title: str = "필터", parent: Optional[QWidget] = None): + super().__init__(parent) + + self.setObjectName("TreeFilterWidget") + self._block_signals = False + + lay = QVBoxLayout(self) + lay.setContentsMargins(8, 8, 8, 8) + lay.setSpacing(8) + + head = QLabel(title) + head.setAlignment(Qt.AlignLeft | Qt.AlignVCenter) + lay.addWidget(head) + + self.search = QLineEdit() + self.search.setPlaceholderText("검색… (계통/장치/부품)") + self.search.textChanged.connect(self._apply_filter) + lay.addWidget(self.search) + + self.tree = QTreeWidget() + self.tree.setHeaderHidden(True) + self.tree.itemChanged.connect(self._on_item_changed) + self.tree.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) + lay.addWidget(self.tree, 1) + + btn_row = QHBoxLayout() + btn_row.setSpacing(6) + + self.btn_expand = QPushButton("펼치기") + self.btn_collapse = QPushButton("접기") + self.btn_clear = QPushButton("해제") + + self.btn_expand.clicked.connect(lambda: self.tree.expandAll()) + self.btn_collapse.clicked.connect(lambda: self.tree.collapseAll()) + self.btn_clear.clicked.connect(self.clear_checks) + + btn_row.addWidget(self.btn_expand) + btn_row.addWidget(self.btn_collapse) + btn_row.addStretch(1) + btn_row.addWidget(self.btn_clear) + + lay.addLayout(btn_row) + + def set_tree_data(self, data: Dict[str, Any]): + """ + data 예시: + { + "추진": { + "인버터": ["게이트드라이버", "IGBT"], + "전동기": ["베어링", "코일"] + }, + "제동": {...} + } + """ + self._block_signals = True + self.tree.clear() + + for system, devices in data.items(): + root = QTreeWidgetItem([system]) + root.setFlags(root.flags() | Qt.ItemIsUserCheckable) + root.setCheckState(0, Qt.Unchecked) + + for device, parts in devices.items(): + dev_item = QTreeWidgetItem([device]) + dev_item.setFlags(dev_item.flags() | Qt.ItemIsUserCheckable) + dev_item.setCheckState(0, Qt.Unchecked) + + for part in parts: + part_item = QTreeWidgetItem([part]) + part_item.setFlags(part_item.flags() | Qt.ItemIsUserCheckable) + part_item.setCheckState(0, Qt.Unchecked) + dev_item.addChild(part_item) + + root.addChild(dev_item) + + self.tree.addTopLevelItem(root) + + self.tree.expandToDepth(1) + self._block_signals = False + + self._emit_selection() + + def clear_checks(self): + self._block_signals = True + root_count = self.tree.topLevelItemCount() + for i in range(root_count): + root = self.tree.topLevelItem(i) + self._set_check_recursive(root, Qt.Unchecked) + self._block_signals = False + self._emit_selection() + + def _set_check_recursive(self, item: QTreeWidgetItem, state: Qt.CheckState): + item.setCheckState(0, state) + for j in range(item.childCount()): + self._set_check_recursive(item.child(j), state) + + def _on_item_changed(self, item: QTreeWidgetItem, col: int): + if self._block_signals: + return + + self._block_signals = True + + state = item.checkState(0) + # 아래로 전파 + for j in range(item.childCount()): + self._set_check_recursive(item.child(j), state) + + # 위로 집계(부모 체크 상태 반영) + self._update_parent_states(item) + + self._block_signals = False + self._emit_selection() + + def _update_parent_states(self, item: QTreeWidgetItem): + parent = item.parent() + if not parent: + return + + checked = 0 + partial = 0 + total = parent.childCount() + for i in range(total): + c = parent.child(i).checkState(0) + if c == Qt.Checked: + checked += 1 + elif c == Qt.PartiallyChecked: + partial += 1 + + if checked == total: + parent.setCheckState(0, Qt.Checked) + elif checked == 0 and partial == 0: + parent.setCheckState(0, Qt.Unchecked) + else: + parent.setCheckState(0, Qt.PartiallyChecked) + + self._update_parent_states(parent) + + def _emit_selection(self): + paths: List[str] = [] + root_count = self.tree.topLevelItemCount() + for i in range(root_count): + root = self.tree.topLevelItem(i) + self._collect_checked_leaf_paths(root, [], paths) + + self.selection_changed.emit(paths) + + def _collect_checked_leaf_paths(self, item: QTreeWidgetItem, prefix: List[str], out: List[str]): + name = item.text(0) + new_prefix = prefix + [name] + + if item.childCount() == 0: + # leaf + if item.checkState(0) == Qt.Checked: + out.append("/".join(new_prefix)) + return + + for i in range(item.childCount()): + self._collect_checked_leaf_paths(item.child(i), new_prefix, out) + + def _apply_filter(self, text: str): + text = (text or "").strip().lower() + + def match_item(it: QTreeWidgetItem) -> bool: + if text == "": + return True + # 현재 item + 자식 중 하나라도 매칭되면 표시 + if text in it.text(0).lower(): + return True + for k in range(it.childCount()): + if match_item(it.child(k)): + return True + return False + + root_count = self.tree.topLevelItemCount() + for i in range(root_count): + root = self.tree.topLevelItem(i) + self._set_visible_recursive(root, match_item(root), text) + + def _set_visible_recursive(self, item: QTreeWidgetItem, visible: bool, text: str): + item.setHidden(not visible) + # 자식도 판정 + for i in range(item.childCount()): + child = item.child(i) + child_visible = True + if text: + # 자식 단독 매칭이거나 자식의 자식 매칭 + child_visible = (text in child.text(0).lower()) + for k in range(child.childCount()): + if self._any_match(child.child(k), text): + child_visible = True + break + self._set_visible_recursive(child, child_visible, text) + + def _any_match(self, item: QTreeWidgetItem, text: str) -> bool: + if text in item.text(0).lower(): + return True + for i in range(item.childCount()): + if self._any_match(item.child(i), text): + return True + return False + + +# ========================================================= +# HistoryDialog 본체 +# ========================================================= +class HistoryDialog(BaseDialog): + """ + 기록보기 다이얼로그 (재설계) + - 좌측: 검색 카드 + 필터 카드들(날짜/팀/상태/장치/편성) + - 우측: 탭(지시/고장/작업/기타) + 테이블 + """ + + def __init__(self, parent=None, table_name: str = "", model_class: Type[SectionBase] = None): + super().__init__(parent, title="기록보기", width=1200, height=800) + + self.table_name = table_name + self.model_class = model_class + + self.crud = CRUDManager() + self.style_manager = StyleManager() + + # 필터 상태 + self.active_filters: Dict[str, Any] = {} + self.search_text: str = "" + + # 필터 칩 저장(키->chip 위젯) + self.filter_chips: Dict[str, FilterChipButton] = {} + + # 디바운스(트리 체크 변경시 _load_data 난사 방지) + self._reload_timer = QTimer(self) + self._reload_timer.setSingleShot(True) + self._reload_timer.timeout.connect(self._load_data) + + self._setup_ui() + self._load_data() + + # ---------------------------- + # 키 이벤트 처리 (엔터키로 다이얼로그 닫히는 것 방지) + # ---------------------------- + def keyPressEvent(self, event): + """엔터키로 다이얼로그가 닫히지 않도록 처리""" + if event.key() in (Qt.Key_Return, Qt.Key_Enter): + # 엔터키는 무시 (검색 입력창에서는 search_requested 시그널로 처리됨) + event.accept() + return + super().keyPressEvent(event) + + # ---------------------------- + # UI 구성 + # ---------------------------- + def _setup_ui(self): + root = QWidget() + root_lay = QHBoxLayout(root) + root_lay.setContentsMargins(12, 12, 12, 12) + root_lay.setSpacing(10) + + self.splitter = QSplitter(Qt.Horizontal) + self.splitter.setChildrenCollapsible(False) + root_lay.addWidget(self.splitter, 1) + + # 좌측(필터) + left = QWidget() + left_lay = QVBoxLayout(left) + left_lay.setContentsMargins(0, 0, 0, 0) + left_lay.setSpacing(10) + + # 검색 카드(칩 내장) + self.search_card = SearchCard(self.style_manager, parent=left) + self.search_card.search_requested.connect(self._on_search_requested) + self.search_card.reset_requested.connect(self._reset_filters) + left_lay.addWidget(self.search_card) + + # 필터 카드들 (각각 다른 배경색과 힌트를 가짐) + self.card_date = FilterCard("날짜", "📅", self.style_manager, filter_type="date", parent=left) + self.card_team = FilterCard("팀", "👥", self.style_manager, filter_type="team", parent=left) + self.card_status = FilterCard("상태", "✓", self.style_manager, filter_type="status", parent=left) + self.card_device = FilterCard("장치", "🔧", self.style_manager, filter_type="device", parent=left) + self.card_train = FilterCard("편성", "🚆", self.style_manager, filter_type="train", parent=left) + + logger.debug(f"CardTitle minH={self.title_label.minimumHeight()}, font={self.title_label.font().pointSize()}pt") + logger.debug(f"CardTitle minH={self.card_date.title_label.minimumHeight()}, font={self.card_date.title_label.font().pointSize()}pt") + logger.debug(f"CardTitle minH={self.card_team.title_label.minimumHeight()}, font={self.card_team.title_label.font().pointSize()}pt") + logger.debug(f"CardTitle minH={self.card_status.title_label.minimumHeight()}, font={self.card_status.title_label.font().pointSize()}pt") + logger.debug(f"CardTitle minH={self.card_device.title_label.minimumHeight()}, font={self.card_device.title_label.font().pointSize()}pt") + logger.debug(f"CardTitle minH={self.card_train.title_label.minimumHeight()}, font={self.card_train.title_label.font().pointSize()}pt") + + # 팝업 빌더 연결(QMenu 내부 위젯) + self.card_date.set_popup_builder(self._build_date_popup_menu) + self.card_team.set_popup_builder(self._build_team_popup_menu) + self.card_status.set_popup_builder(self._build_status_popup_menu) + self.card_device.set_popup_builder(self._build_device_popup_menu) + self.card_train.set_popup_builder(self._build_train_popup_menu) + + left_lay.addWidget(self.card_date) + left_lay.addWidget(self.card_team) + left_lay.addWidget(self.card_status) + left_lay.addWidget(self.card_device) + left_lay.addWidget(self.card_train) + left_lay.addStretch(1) + + # 우측(내용) + right = QWidget() + right_lay = QVBoxLayout(right) + right_lay.setContentsMargins(0, 0, 0, 0) + right_lay.setSpacing(10) + + self.tab_widget = QTabWidget() + right_lay.addWidget(self.tab_widget, 1) + + self._create_section_tabs() + + self.splitter.addWidget(left) + self.splitter.addWidget(right) + self.splitter.setStretchFactor(0, 1) + self.splitter.setStretchFactor(1, 4) + self.splitter.setSizes([320, 880]) + + self.content_layout.addWidget(root) + + # ---------------------------- + # 탭/테이블 + # ---------------------------- + def _create_section_tabs(self): + sections = [ + ("instructions", "지시"), + ("faults", "고장"), + ("works", "작업"), + ("miscs", "기타"), + ] + for table_name, label in sections: + tab = self._create_section_tab(table_name) + self.tab_widget.addTab(tab, label) + + def _create_section_tab(self, table_name: str) -> QWidget: + widget = QWidget() + layout = QVBoxLayout(widget) + layout.setContentsMargins(0, 0, 0, 0) + + table = QTableWidget() + table.setSelectionBehavior(QAbstractItemView.SelectRows) + table.setAlternatingRowColors(True) + table.setShowGrid(False) + table.verticalHeader().setVisible(False) + table.horizontalHeader().setStretchLastSection(True) + table.horizontalHeader().setSectionResizeMode(QHeaderView.Interactive) + + layout.addWidget(table, 1) + + widget.table = table + widget.table_name = table_name + return widget + + # ========================================================= + # 칩 관리 공통 + # ========================================================= + def _chip_theme_for_type(self, filter_type: str) -> ChipTheme: + # 색상은 filter_chip_button.py 내부의 _get_default_color()를 사용하므로, + # 여기서는 size/shape만 통일 + return ChipTheme(height=28, radius=14, padding_x=10, font_px=12) + + def _add_chip(self, owner: str, filter_key: str, text: str, filter_type: str): + """ + owner: 'search' | 'date' | 'team' | 'status' | 'device' | 'train' + """ + # 기존 칩 제거 + if filter_key in self.filter_chips: + self._remove_chip(filter_key) + + card = self._get_owner_card(owner) + if not card: + return + + chip = FilterChipButton( + text=text, + filter_key=filter_key, + filter_type=filter_type, + theme=self._chip_theme_for_type(filter_type), + parent=card.chips_area + ) + chip.removed.connect(self._on_chip_removed) + + card.flow_layout.addWidget(chip) + self.filter_chips[filter_key] = chip + card.sync_empty_hint() + + def _remove_chip(self, filter_key: str): + chip = self.filter_chips.pop(filter_key, None) + if not chip: + return + parent = chip.parentWidget() + chip.setParent(None) + chip.deleteLater() + + # 카드 힌트 갱신 + for c in [self.search_card, self.card_date, self.card_team, self.card_status, self.card_device, self.card_train]: + if hasattr(c, "sync_empty_hint"): + c.sync_empty_hint() + + if parent: + parent.updateGeometry() + parent.repaint() + + def _get_owner_card(self, owner: str): + if owner == "search": + return self.search_card + if owner == "date": + return self.card_date + if owner == "team": + return self.card_team + if owner == "status": + return self.card_status + if owner == "device": + return self.card_device + if owner == "train": + return self.card_train + return None + + def _on_chip_removed(self, filter_key: str): + # 라우팅: filter_key 규칙에 따라 해당 필터 제거 + if filter_key == "search": + self._remove_search_filter() + return + + if filter_key == "date": + self._remove_date_filter() + return + + if filter_key == "status": + self._remove_status_filter() + return + + if filter_key.startswith("team:"): + team = filter_key.split("team:", 1)[1] + self._remove_team_filter(team) + return + + if filter_key.startswith("device:"): + path = filter_key.split("device:", 1)[1] + self._remove_device_path(path) + return + + if filter_key.startswith("train:"): + path = filter_key.split("train:", 1)[1] + self._remove_train_path(path) + return + + # 알 수 없는 키면 그냥 칩 제거 + self._remove_chip(filter_key) + self._request_reload() + + # ========================================================= + # 검색 + # ========================================================= + def _on_search_requested(self, text: str): + # 검색 실행(빈 문자열이면 검색 제거) + if not text: + self._remove_search_filter() + return + + self.search_text = text + self._add_chip("search", "search", f"검색: {text}", "search") + self.search_card.sync_empty_hint() + self._request_reload() + + def _remove_search_filter(self): + self.search_text = "" + self.search_card.clear_input() + self._remove_chip("search") + self._request_reload() + + # ========================================================= + # 날짜 필터: QMenu 내부 캘린더 범위 선택 + # ========================================================= + def _build_date_popup_menu(self, menu: QMenu): + # QWidgetAction으로 RangeCalendarWidget 삽입 (적용/닫기 버튼 제거) + container = QWidget() + lay = QVBoxLayout(container) + lay.setContentsMargins(6, 6, 6, 6) + lay.setSpacing(6) + container.setMinimumHeight(400) + container.setMinimumWidth(600) + + cal = RangeCalendarWidget(container) + + # 기존 값 반영 + df = self.active_filters.get("date_from") + dt = self.active_filters.get("date_to") + if isinstance(df, date) and isinstance(dt, date): + cal.set_range(df, dt) + elif isinstance(df, date) and dt is None: + cal.set_range(df, df) + + # 날짜별 마커 데이터 로드 및 설정 + date_markers = self._load_date_markers() + if date_markers: + cal.set_date_markers(date_markers) + + # 범위가 완성되면(2번 클릭 또는 빠른 기간 버튼 클릭) 자동으로 적용하고 메뉴 닫기 + def on_range_applied(d_from, d_to): + if d_from and d_to: + self._add_date_filter(d_from, d_to) + elif d_from and not d_to: + self._add_date_filter(d_from, d_from) + else: + self._remove_date_filter() + menu.close() + + cal.range_applied.connect(on_range_applied) + + lay.addWidget(cal, 1) + + act = QWidgetAction(menu) + act.setDefaultWidget(container) + menu.addAction(act) + + def _add_date_filter(self, date_from: Optional[date], date_to: Optional[date]): + # 저장 + self.active_filters["date_from"] = date_from + self.active_filters["date_to"] = date_to + + if date_from and date_to: + text = f"{date_from:%Y-%m-%d} ~ {date_to:%Y-%m-%d}" + elif date_from: + text = f"{date_from:%Y-%m-%d}" + else: + self._remove_date_filter() + return + + self._add_chip("date", "date", text, "date") + self.card_date.sync_empty_hint() + self._request_reload() + + def _remove_date_filter(self): + self.active_filters.pop("date_from", None) + self.active_filters.pop("date_to", None) + self._remove_chip("date") + self._request_reload() + + # ========================================================= + # 팀 필터: 체크 토글 메뉴 + # ========================================================= + def _build_team_popup_menu(self, menu: QMenu): + current = self.active_filters.get("team", []) + if not isinstance(current, list): + current = [current] if current else [] + + for team in TEAMS: + act = QAction(team, menu) + act.setCheckable(True) + act.setChecked(team in current) + + def toggle(_, t=team): + if "team" not in self.active_filters: + self.active_filters["team"] = [] + if t in self.active_filters["team"]: + self._remove_team_filter(t) + else: + self._add_team_filter(t) + + act.triggered.connect(toggle) + menu.addAction(act) + + menu.addSeparator() + clear = QAction("팀 필터 전체 해제", menu) + clear.triggered.connect(self._clear_team_filters) + menu.addAction(clear) + + def _add_team_filter(self, team: str): + if "team" not in self.active_filters: + self.active_filters["team"] = [] + if team not in self.active_filters["team"]: + self.active_filters["team"].append(team) + + self._add_chip("team", f"team:{team}", team, "team") + self.card_team.sync_empty_hint() + self._request_reload() + + def _remove_team_filter(self, team: str): + if "team" in self.active_filters and isinstance(self.active_filters["team"], list): + if team in self.active_filters["team"]: + self.active_filters["team"].remove(team) + if not self.active_filters["team"]: + self.active_filters.pop("team", None) + + self._remove_chip(f"team:{team}") + self._request_reload() + + def _clear_team_filters(self): + teams = self.active_filters.get("team", []) + if isinstance(teams, list): + for t in list(teams): + self._remove_team_filter(t) + + # ========================================================= + # 상태 필터 + # ========================================================= + def _build_status_popup_menu(self, menu: QMenu): + a_completed = QAction("완료", menu) + a_pending = QAction("진행중", menu) + a_clear = QAction("해제", menu) + + a_completed.triggered.connect(lambda: self._add_status_filter("completed")) + a_pending.triggered.connect(lambda: self._add_status_filter("pending")) + a_clear.triggered.connect(self._remove_status_filter) + + menu.addAction(a_completed) + menu.addAction(a_pending) + menu.addSeparator() + menu.addAction(a_clear) + + def _add_status_filter(self, status: str): + self.active_filters["status"] = status + text = "완료" if status == "completed" else "진행중" + self._add_chip("status", "status", text, "status") + self.card_status.sync_empty_hint() + self._request_reload() + + def _remove_status_filter(self): + self.active_filters.pop("status", None) + self._remove_chip("status") + self._request_reload() + + # ========================================================= + # 장치/편성: QMenu 내부 트리 위젯(검색+체크, 선택 즉시 칩 반영) + # ========================================================= + def _build_device_popup_menu(self, menu: QMenu): + widget = TreeFilterWidget("장치 필터") + widget.set_tree_data(self._load_device_tree_data()) + + # 기존 선택 반영(leaf 경로 기준) + selected_paths = self.active_filters.get("device_paths", []) + if isinstance(selected_paths, list) and selected_paths: + self._apply_tree_checked_paths(widget.tree, selected_paths) + + widget.selection_changed.connect(lambda paths: self._on_device_paths_changed(paths)) + self._wrap_widget_in_menu(menu, widget, width=360, height=420) + + def _build_train_popup_menu(self, menu: QMenu): + widget = TreeFilterWidget("편성 필터") + widget.set_tree_data(self._load_train_tree_data()) + + selected_paths = self.active_filters.get("train_paths", []) + if isinstance(selected_paths, list) and selected_paths: + self._apply_tree_checked_paths(widget.tree, selected_paths) + + widget.selection_changed.connect(lambda paths: self._on_train_paths_changed(paths)) + self._wrap_widget_in_menu(menu, widget, width=360, height=420) + + def _wrap_widget_in_menu(self, menu: QMenu, widget: QWidget, width: int = 360, height: int = 420): + container = QFrame() + lay = QVBoxLayout(container) + lay.setContentsMargins(6, 6, 6, 6) + lay.addWidget(widget, 1) + + # 닫기 버튼만 제공(선택은 즉시 반영) + btn_row = QHBoxLayout() + btn_row.addStretch(1) + btn_close = QPushButton("닫기") + btn_close.clicked.connect(menu.close) + btn_row.addWidget(btn_close) + lay.addLayout(btn_row) + + container.setMinimumSize(width, height) + + act = QWidgetAction(menu) + act.setDefaultWidget(container) + menu.addAction(act) + + def _apply_tree_checked_paths(self, tree: QTreeWidget, paths: List[str]): + # paths: ["계통/장치/부품", ...] + # 트리 생성 직후에 체크를 적용하는 용도(최소 구현) + def traverse(item: QTreeWidgetItem, prefix: List[str]): + name = item.text(0) + new_prefix = prefix + [name] + + if item.childCount() == 0: + full = "/".join(new_prefix) + if full in paths: + item.setCheckState(0, Qt.Checked) + return + for i in range(item.childCount()): + traverse(item.child(i), new_prefix) + + root_count = tree.topLevelItemCount() + for i in range(root_count): + traverse(tree.topLevelItem(i), []) + + def _on_device_paths_changed(self, paths: List[str]): + # 선택 즉시 칩 반영(전체 동기화) + self.active_filters["device_paths"] = paths + + # 기존 device 칩 모두 제거 후 재생성 + for k in list(self.filter_chips.keys()): + if k.startswith("device:"): + self._remove_chip(k) + + for p in paths: + # 칩 텍스트는 "마지막 노드"만 표시(부품명), 필요하면 p 전체를 쓰세요. + text = p.split("/")[-1] + self._add_chip("device", f"device:{p}", text, "device") + + self.card_device.sync_empty_hint() + self._request_reload(debounce_ms=150) + + def _on_train_paths_changed(self, paths: List[str]): + self.active_filters["train_paths"] = paths + + for k in list(self.filter_chips.keys()): + if k.startswith("train:"): + self._remove_chip(k) + + for p in paths: + text = p.split("/")[-1] + self._add_chip("train", f"train:{p}", text, "team") # 편성은 별도 타입이 없다면 team 색 계열 재사용 + self.card_train.sync_empty_hint() + self._request_reload(debounce_ms=150) + + def _remove_device_path(self, path: str): + paths = self.active_filters.get("device_paths", []) + if isinstance(paths, list) and path in paths: + paths.remove(path) + if not paths: + self.active_filters.pop("device_paths", None) + self._remove_chip(f"device:{path}") + self._request_reload() + + def _remove_train_path(self, path: str): + paths = self.active_filters.get("train_paths", []) + if isinstance(paths, list) and path in paths: + paths.remove(path) + if not paths: + self.active_filters.pop("train_paths", None) + self._remove_chip(f"train:{path}") + self._request_reload() + + # ---------------------------- + # 날짜 마커 데이터 로드 + # ---------------------------- + def _load_date_markers(self) -> Dict[date, str]: + """ + 수동으로 설정된 날짜별 마커 데이터 로드 + + 주의: 근무조 마커는 paintCell에서 동적으로 계산되므로, + 여기서는 수동으로 설정한 특별한 마커만 반환합니다. + + Returns: + {date: "marker"} 딕셔너리 (수동 설정된 마커만) + """ + # 수동으로 설정된 마커가 있다면 여기서 로드 + # 예: 특별한 날짜에만 다른 마커를 표시하고 싶을 때 + markers: Dict[date, str] = {} + + # TODO: 필요시 수동 마커를 DB나 설정에서 로드 + # 예: markers = self.crud.get_custom_date_markers() + + return markers + + # ---------------------------- + # 트리 데이터 로드(예시) + # ---------------------------- + def _load_device_tree_data(self) -> Dict[str, Any]: + """ + TODO: 실제 DB/모델 기반으로 교체 + 예시 데이터: 계통 -> 장치 -> 부품 + """ + return { + "추진": { + "인버터": ["게이트드라이버", "IGBT", "DC링크"], + "전동기": ["베어링", "코일", "엔코더"], + }, + "제동": { + "제동제어": ["BCU", "센서", "릴레이"], + "공기계통": ["컴프레서", "레귤레이터", "밸브"], + }, + "출입문": { + "도어구동": ["모터", "감속기", "벨트"], + "안전장치": ["장애물검지", "도어스위치", "인터록"], + } + } + + def _load_train_tree_data(self) -> Dict[str, Any]: + """ + TODO: 실제 편성/차호/장치 구조로 교체 + 요구사항: 계통→장치→부품 트리 형태 유지 + """ + return { + "41편성": { + "추진": ["인버터", "전동기", "센서"], + "출입문": ["모터", "감속기", "검지"], + }, + "32편성": { + "추진": ["인버터", "전동기", "DC링크"], + "제동": ["BCU", "밸브", "센서"], + }, + "전체": { + "공통": ["TCMS", "SIV", "배터리"], + } + } + + # ========================================================= + # 필터 초기화 + # ========================================================= + def _reset_filters(self): + # 칩 제거 + for k in list(self.filter_chips.keys()): + self._remove_chip(k) + + # 상태 초기화 + self.active_filters = {} + self.search_text = "" + self.search_card.clear_input() + + # empty hint 갱신 + self.search_card.sync_empty_hint() + self.card_date.sync_empty_hint() + self.card_team.sync_empty_hint() + self.card_status.sync_empty_hint() + self.card_device.sync_empty_hint() + self.card_train.sync_empty_hint() + + self._request_reload() + + # ========================================================= + # 데이터 로딩/필터 적용(기존 로직 최대 유지) + # ========================================================= + def _request_reload(self, debounce_ms: int = 0): + if debounce_ms <= 0: + self._load_data() + return + self._reload_timer.stop() + self._reload_timer.start(debounce_ms) + + def _load_data(self): + for i in range(self.tab_widget.count()): + tab = self.tab_widget.widget(i) + table_name = tab.table_name + + from database.models import Instruction, Fault, Work, Misc + model_map = { + "instructions": Instruction, + "faults": Fault, + "works": Work, + "miscs": Misc, + } + model_class = model_map.get(table_name) + if not model_class: + continue + + records = self._fetch_records(table_name, model_class) + self._update_table(tab.table, records, model_class) + + def _fetch_records(self, table_name: str, model_class: Type[SectionBase]) -> List[BaseModel]: + if table_name == "instructions": + records = self.crud.get_all_instructions() + elif table_name == "faults": + records = self.crud.get_all_faults() + elif table_name == "works": + records = self.crud.get_all_works() + elif table_name == "miscs": + records = self.crud.get_all_miscs() + else: + records = [] + + if self.active_filters: + records = self._apply_filters(records) + + if self.search_text: + records = self._apply_search(records, self.search_text) + + return records + + def _apply_filters(self, records: List[BaseModel]) -> List[BaseModel]: + filtered = records + + # 날짜 + date_from = self.active_filters.get("date_from") + date_to = self.active_filters.get("date_to") + if date_from or date_to: + filtered = [r for r in filtered if self._matches_date_filter(r, date_from, date_to)] + + # 팀 + if "team" in self.active_filters: + teams = self.active_filters["team"] + if isinstance(teams, list): + filtered = [r for r in filtered if hasattr(r, 'created_team') and r.created_team in teams] + else: + filtered = [r for r in filtered if hasattr(r, 'created_team') and r.created_team == teams] + + # 상태 + if "status" in self.active_filters: + status = self.active_filters["status"] + if status == "completed": + filtered = [r for r in filtered if hasattr(r, 'is_completed') and r.is_completed] + elif status == "pending": + filtered = [r for r in filtered if not (hasattr(r, 'is_completed') and r.is_completed)] + + # 장치/편성: 현재는 record 구조가 불명확하므로 "후킹 포인트"만 제공 + # 실제 필드(예: record.system, record.device, record.part, record.train_number 등)로 조건을 바꾸세요. + device_paths = self.active_filters.get("device_paths", []) + if isinstance(device_paths, list) and device_paths: + filtered = [r for r in filtered if self._matches_device_paths(r, device_paths)] + + train_paths = self.active_filters.get("train_paths", []) + if isinstance(train_paths, list) and train_paths: + filtered = [r for r in filtered if self._matches_train_paths(r, train_paths)] + + return filtered + + def _matches_device_paths(self, record: BaseModel, device_paths: List[str]) -> bool: + """ + TODO: 프로젝트의 실제 레코드 필드에 맞게 구현 + 기본은 "텍스트 검색" 형태로 방어적으로 처리 + """ + try: + # 예: system/device/part 조합이 record에 있다면 가장 이상적 + # system = getattr(record, "system", "") + # device = getattr(record, "device", "") + # part = getattr(record, "part", "") + # path = f"{system}/{device}/{part}" + # return path in device_paths + + # 임시: 레코드의 문자열 필드들에 device_paths leaf(부품명) 중 하나라도 포함되면 True + leafs = [p.split("/")[-1] for p in device_paths] + for attr_name in dir(record): + if attr_name.startswith("_"): + continue + v = getattr(record, attr_name, None) + if isinstance(v, str): + lv = v.lower() + for leaf in leafs: + if leaf.lower() in lv: + return True + except Exception: + pass + return True # 필드가 불명확한 상황에서는 너무 공격적으로 필터링하지 않음 + + def _matches_train_paths(self, record: BaseModel, train_paths: List[str]) -> bool: + """ + TODO: 실제 train_number 필드 등으로 정확 매칭 권장 + """ + try: + # 임시: Fault 모델에는 train_number 등이 있을 수 있으니 그걸 먼저 확인 + tn = getattr(record, "train_number", None) + if tn: + # train_paths에 "41편성/..." 같은 형태가 들어오므로 앞부분만 비교 + for p in train_paths: + if p.startswith(str(tn)): + return True + # 방어적 텍스트 매칭 + head = [p.split("/")[0] for p in train_paths] + for attr_name in dir(record): + if attr_name.startswith("_"): + continue + v = getattr(record, attr_name, None) + if isinstance(v, str): + lv = v.lower() + for h in head: + if h.lower() in lv: + return True + except Exception: + pass + return True + + def _matches_date_filter(self, record: BaseModel, date_from: Optional[date], date_to: Optional[date]) -> bool: + if hasattr(record, 'created_date'): + record_date = record.created_date + if isinstance(record_date, str): + try: + record_date = datetime.fromisoformat(record_date).date() + except Exception: + return True + + if date_from and record_date < date_from: + return False + if date_to and record_date > date_to: + return False + return True + + def _apply_search(self, records: List[BaseModel], search_text: str) -> List[BaseModel]: + search_lower = search_text.lower() + results = [] + for record in records: + for attr_name in dir(record): + if attr_name.startswith('_'): + continue + try: + value = getattr(record, attr_name) + if isinstance(value, str) and search_lower in value.lower(): + results.append(record) + break + except Exception: + pass + return results + + def _update_table(self, table: QTableWidget, records: List[BaseModel], model_class: Type[SectionBase]): + fields = self._get_model_fields(model_class) + table.setColumnCount(len(fields)) + table.setHorizontalHeaderLabels([f["label"] for f in fields]) + + table.setRowCount(0) + for record in records: + row = table.rowCount() + table.insertRow(row) + for col, field in enumerate(fields): + value = getattr(record, field["name"], "") + display_value = self._format_value(field, value, record) + + item = QTableWidgetItem(display_value) + item.setTextAlignment(Qt.AlignLeft | Qt.AlignVCenter) + table.setItem(row, col, item) + + def _get_model_fields(self, model_class: Type[SectionBase]) -> List[Dict[str, str]]: + fields = [ + {"name": "created_date", "label": "생성일"}, + {"name": "created_team", "label": "생성팀"}, + ] + if model_class.__name__ == "Instruction": + fields.extend([ + {"name": "instructor", "label": "지시자"}, + {"name": "instruction_content", "label": "지시내용"}, + ]) + elif model_class.__name__ == "Fault": + fields.extend([ + {"name": "train_number", "label": "편성"}, + {"name": "fault_content", "label": "고장내용"}, + ]) + elif model_class.__name__ == "Work": + fields.extend([ + {"name": "work_entity", "label": "작업주체"}, + {"name": "work_content", "label": "작업내용"}, + ]) + elif model_class.__name__ == "Misc": + fields.extend([ + {"name": "reporter", "label": "전달자"}, + {"name": "report_content", "label": "전달내용"}, + ]) + + fields.extend([ + {"name": "team_confirmations", "label": "확인팀"}, + {"name": "is_completed", "label": "완료"}, + ]) + return fields + + def _format_value(self, field: Dict[str, str], value: Any, record: BaseModel) -> str: + if value is None: + return "" + if field["name"] == "team_confirmations": + try: + confirmations = json.loads(value) if isinstance(value, str) else value + if not isinstance(confirmations, dict): + confirmations = {} + confirmed_teams = [team for team, confirmed in confirmations.items() if confirmed] + return ", ".join(confirmed_teams) if confirmed_teams else "-" + except Exception: + return "-" + if field["name"] == "is_completed": + return "완료" if value else "-" + if isinstance(value, date): + return value.strftime("%Y-%m-%d") + return str(value) diff --git a/ui/dialogs/image_viewer_dialog.py b/ui/dialogs/image_viewer_dialog.py new file mode 100644 index 0000000..c54520f --- /dev/null +++ b/ui/dialogs/image_viewer_dialog.py @@ -0,0 +1,2796 @@ +# -*- coding: utf-8 -*- +""" +이미지 뷰어/편집기 다이얼로그 모듈 +이미지를 확대/축소하고 편집할 수 있는 다이얼로그입니다. + +기능: +- 마우스 휠: 이전/다음 이미지 +- Ctrl + 마우스 휠: 확대/축소 (마우스 커서 중심) +- 드래그: 이미지 이동 (확대 시) / 도형 그리기 (편집 모드) +- 더블클릭: 원본 크기로 보기/맞춤 +- 도형: 사각형, 원, 선, 화살표 +- 텍스트: 텍스트 박스 추가 +- 효과: 색상, 두께, 그림자 +- Ctrl+Z: 실행 취소 (Undo) +- Ctrl+Y: 다시 실행 (Redo) +- 꼭지점 드래그로 도형 크기 조절 +""" + +from typing import List, Optional, Dict, Any, Tuple +from enum import Enum +from dataclasses import dataclass + +from PySide6.QtWidgets import ( + QDialog, QVBoxLayout, QHBoxLayout, QLabel, + QWidget, QGraphicsView, QGraphicsScene, QGraphicsPixmapItem, + QGraphicsRectItem, QGraphicsEllipseItem, QGraphicsLineItem, + QGraphicsTextItem, QGraphicsPolygonItem, QGraphicsItem, + QGraphicsDropShadowEffect, QPushButton, QToolButton, + QColorDialog, QSpinBox, QApplication, QButtonGroup, + QFrame, QInputDialog, QMessageBox, QMenu, QComboBox, + QGraphicsItemGroup +) +from PySide6.QtCore import Qt, QPointF, Signal, QRectF, QLineF +from PySide6.QtGui import ( + QPixmap, QWheelEvent, QMouseEvent, QPainter, QKeyEvent, + QColor, QPen, QBrush, QFont, QPolygonF +) + +# 지원 폰트 목록 (지마켓산스 + 공공기관/무료 웹폰트) +AVAILABLE_FONTS = [ + "GmarketSansMedium", # 지마켓산스 + "Pretendard", # 프리텐다드 (가장 인기) + "Noto Sans KR", # 구글 노토산스 + "Spoqa Han Sans Neo", # 스포카한산스 + "SUIT", # SUIT 폰트 + "Wanted Sans", # 원티드산스 + "Nanum Gothic", # 네이버 나눔고딕 + "Nanum Myeongjo", # 네이버 나눔명조 + "KoPub Dotum", # 문체부 KoPub돋움 + "IBM Plex Sans KR", # IBM 플렉스 + "맑은 고딕", # 시스템 기본 +] + +from services.storage_service import Attachment +from core.logger import get_logger + +logger = get_logger(__name__) + + +# 커서 상수 +CURSOR_DEFAULT = Qt.ArrowCursor +CURSOR_POINT = Qt.PointingHandCursor +CURSOR_DRAW = Qt.CrossCursor +CURSOR_MOVE = Qt.ClosedHandCursor +CURSOR_GRAB = Qt.OpenHandCursor +CURSOR_SIZE_ALL = Qt.SizeAllCursor + +# 버텍스 감지 거리 +VERTEX_EPSILON = 10.0 + + +class EditTool(Enum): + """편집 도구""" + SELECT = "select" + RECT = "rect" + ELLIPSE = "ellipse" + LINE = "line" + ARROW = "arrow" + TEXT = "text" + FREEHAND = "freehand" + + +class OutlineTextItem(QGraphicsTextItem): + """돋보이기(외곽선) 효과가 적용된 텍스트 아이템 + + 8방향으로 외곽선 색상을 렌더링하여 배경에 상관없이 + 글자가 잘 보이도록 합니다. + """ + + def __init__(self, text: str = "", parent=None): + super().__init__(text, parent) + self._outline_color: Optional[QColor] = None + self._outline_offset = 2 # 외곽선 두께 + + def set_outline_color(self, color: Optional[QColor]): + """외곽선 색상 설정""" + self._outline_color = color + self.update() + + def get_outline_color(self) -> Optional[QColor]: + """외곽선 색상 반환""" + return self._outline_color + + def paint(self, painter: QPainter, option, widget=None): + """페인트 이벤트 - 8방향 외곽선 렌더링""" + # 외곽선 효과가 있으면 8방향으로 렌더링 + if self._outline_color: + painter.save() + + # 원래 색상 저장 + original_color = self.defaultTextColor() + + # 8방향 오프셋 + offsets = [ + (-self._outline_offset, -self._outline_offset), + (0, -self._outline_offset), + (self._outline_offset, -self._outline_offset), + (-self._outline_offset, 0), + (self._outline_offset, 0), + (-self._outline_offset, self._outline_offset), + (0, self._outline_offset), + (self._outline_offset, self._outline_offset), + ] + + # 외곽선 색상으로 8방향 렌더링 + self.setDefaultTextColor(self._outline_color) + for dx, dy in offsets: + painter.translate(dx, dy) + super().paint(painter, option, widget) + painter.translate(-dx, -dy) + + # 원래 색상 복원 + self.setDefaultTextColor(original_color) + painter.restore() + + # 원래 텍스트 렌더링 + super().paint(painter, option, widget) + + +@dataclass +class EditAction: + """편집 액션 (Undo/Redo용)""" + action_type: str # "add", "delete", "move", "resize" + items: List[QGraphicsItem] + old_data: Optional[Any] = None + new_data: Optional[Any] = None + + +class EditableGraphicsView(QGraphicsView): + """편집 가능한 이미지 뷰""" + + image_changed = Signal(int) + editing_changed = Signal(bool) + undo_redo_changed = Signal(bool, bool) # can_undo, can_redo + + def __init__(self, parent=None): + super().__init__(parent) + + self.scene = QGraphicsScene(self) + self.setScene(self.scene) + + self.pixmap_item: Optional[QGraphicsPixmapItem] = None + self.current_scale = 1.0 + self.min_scale = 0.05 + self.max_scale = 50.0 # 최대 50배 확대 + + # 이미지 목록 + self.images: List[Attachment] = [] + self.current_index = 0 + self.original_pixmap: Optional[QPixmap] = None + + # 편집 상태 + self.current_tool = EditTool.SELECT + self.is_editing = False + self.drawing_item = None + self.drawing_start = QPointF() + + # 편집 설정 + self.pen_color = QColor("#ef4444") # 빨간색 + self.fill_color = QColor(0, 0, 0, 0) # 투명 + self.pen_width = 3 + self.font = QFont("맑은 고딕", 14) + self.font_bold = False + self.font_underline = False + self.text_outline_color: Optional[QColor] = None # 돋보이기 효과 색상 + self.use_shadow = True + + # 복사용 상태 + self._is_copying = False + + # Alt 키 상태 (정사각형/원 그리기) + self._alt_pressed = False + + # 그룹 관리 + self.item_groups: List[QGraphicsItemGroup] = [] + + # 편집 아이템들 + self.edit_items: List[QGraphicsItem] = [] + + # Undo/Redo 스택 + self.undo_stack: List[EditAction] = [] + self.redo_stack: List[EditAction] = [] + + # 상태 관리 + self._cursor = CURSOR_DEFAULT + self._is_panning = False + self._is_drawing = False + self._is_moving = False + self._is_resizing = False + + # 선택/이동/리사이즈 상태 + self._last_mouse_pos = QPointF() + self._pan_start_pos = QPointF() + self._move_start_positions: Dict[QGraphicsItem, QPointF] = {} + self._resize_item: Optional[QGraphicsItem] = None + self._resize_vertex_index: int = -1 + self._resize_start_rect: Optional[QRectF] = None + + # 호버 상태 + self._hover_item: Optional[QGraphicsItem] = None + self._hover_vertex: int = -1 + + # 프리핸드 경로 + self._freehand_points = [] + + # 설정 + self.setRenderHint(QPainter.Antialiasing) + self.setRenderHint(QPainter.SmoothPixmapTransform) + self.setDragMode(QGraphicsView.NoDrag) + self.setTransformationAnchor(QGraphicsView.AnchorUnderMouse) + self.setResizeAnchor(QGraphicsView.AnchorUnderMouse) + self.setVerticalScrollBarPolicy(Qt.ScrollBarAsNeeded) + self.setHorizontalScrollBarPolicy(Qt.ScrollBarAsNeeded) + self.setBackgroundBrush(QColor("#0f0f0f")) + self.setMouseTracking(True) # 마우스 추적 활성화 + + self.setStyleSheet(""" + QGraphicsView { + border: none; + background-color: #0f0f0f; + } + """) + + def _override_cursor(self, cursor): + """커서 변경""" + if cursor != self._cursor: + self._cursor = cursor + self.setCursor(cursor) + + def _restore_cursor(self): + """기본 커서로 복원""" + if self.current_tool == EditTool.SELECT: + self._override_cursor(CURSOR_DEFAULT) + else: + self._override_cursor(CURSOR_DRAW) + + def set_tool(self, tool: EditTool): + """편집 도구 설정""" + self.current_tool = tool + self.is_editing = (tool != EditTool.SELECT) + self.editing_changed.emit(self.is_editing) + + if tool == EditTool.SELECT: + self._override_cursor(CURSOR_DEFAULT) + else: + self._override_cursor(CURSOR_DRAW) + + # 선택 해제 + self.scene.clearSelection() + + def set_images(self, images: List[Attachment], start_index: int = 0): + """이미지 목록 설정""" + self.images = images + self.current_index = max(0, min(start_index, len(images) - 1)) + self._load_current_image() + + def _load_current_image(self): + """현재 이미지 로드""" + if not self.images or self.current_index >= len(self.images): + return + + attachment = self.images[self.current_index] + full_path = attachment.get_full_path() + + if not full_path.exists(): + logger.error("이미지 파일이 없습니다: %s", full_path) + return + + pixmap = QPixmap(str(full_path)) + + if pixmap.isNull(): + logger.error("이미지 로드 실패: %s", full_path) + return + + # 기존 아이템 제거 + self.scene.clear() + self.edit_items.clear() + self.undo_stack.clear() + self.redo_stack.clear() + self._emit_undo_redo_state() + + # 원본 저장 + self.original_pixmap = pixmap + + # 새 이미지 추가 + self.pixmap_item = self.scene.addPixmap(pixmap) + self.pixmap_item.setZValue(-1) + self.scene.setSceneRect(pixmap.rect().toRectF()) + + # 화면에 맞춤 + self._fit_to_view() + + self.image_changed.emit(self.current_index) + + def _emit_undo_redo_state(self): + """Undo/Redo 상태 시그널 발생""" + can_undo = len(self.undo_stack) > 0 + can_redo = len(self.redo_stack) > 0 + self.undo_redo_changed.emit(can_undo, can_redo) + + def get_current_image_info(self) -> Dict[str, Any]: + """현재 이미지 정보 반환""" + if not self.images or self.current_index >= len(self.images): + return {} + + attachment = self.images[self.current_index] + full_path = attachment.get_full_path() + + info = { + "filename": attachment.filename, + "title": attachment.title, + "path": str(full_path), + } + + if self.original_pixmap and not self.original_pixmap.isNull(): + info["width"] = self.original_pixmap.width() + info["height"] = self.original_pixmap.height() + + if full_path.exists(): + size_bytes = full_path.stat().st_size + if size_bytes > 1024 * 1024: + info["size"] = f"{size_bytes / (1024 * 1024):.1f} MB" + else: + info["size"] = f"{size_bytes / 1024:.1f} KB" + + return info + + def _fit_to_view(self): + """이미지를 뷰에 맞춤""" + if not self.pixmap_item: + return + + self.resetTransform() + self.current_scale = 1.0 + + view_rect = self.viewport().rect() + scene_rect = self.sceneRect() + + if scene_rect.width() == 0 or scene_rect.height() == 0: + return + + margin = 40 + scale_x = (view_rect.width() - margin) / scene_rect.width() + scale_y = (view_rect.height() - margin) / scene_rect.height() + scale = min(scale_x, scale_y) + + self.scale(scale, scale) + self.current_scale = scale + self.centerOn(self.pixmap_item) + + def show_original_size(self): + """원본 크기로 표시""" + if not self.pixmap_item: + return + + self.resetTransform() + self.current_scale = 1.0 + self.centerOn(self.pixmap_item) + + def zoom_in(self, factor: float = 1.25, anchor_point: QPointF = None): + """확대""" + new_scale = self.current_scale * factor + if new_scale > self.max_scale: + return + + if anchor_point: + # 마우스 위치 기준으로 확대 + old_pos = self.mapToScene(anchor_point.toPoint()) + self.scale(factor, factor) + new_pos = self.mapToScene(anchor_point.toPoint()) + delta = old_pos - new_pos # 방향 수정 + self.horizontalScrollBar().setValue( + self.horizontalScrollBar().value() - int(delta.x() * self.current_scale) + ) + self.verticalScrollBar().setValue( + self.verticalScrollBar().value() - int(delta.y() * self.current_scale) + ) + else: + self.scale(factor, factor) + + self.current_scale = new_scale + + def zoom_out(self, factor: float = 1.25, anchor_point: QPointF = None): + """축소""" + new_scale = self.current_scale / factor + if new_scale < self.min_scale: + return + + if anchor_point: + # 마우스 위치 기준으로 축소 + old_pos = self.mapToScene(anchor_point.toPoint()) + self.scale(1 / factor, 1 / factor) + new_pos = self.mapToScene(anchor_point.toPoint()) + delta = old_pos - new_pos # 방향 수정 + self.horizontalScrollBar().setValue( + self.horizontalScrollBar().value() - int(delta.x() * self.current_scale) + ) + self.verticalScrollBar().setValue( + self.verticalScrollBar().value() - int(delta.y() * self.current_scale) + ) + else: + self.scale(1 / factor, 1 / factor) + + self.current_scale = new_scale + + def next_image(self): + """다음 이미지""" + if self.current_index < len(self.images) - 1: + self.current_index += 1 + self._load_current_image() + + def prev_image(self): + """이전 이미지""" + if self.current_index > 0: + self.current_index -= 1 + self._load_current_image() + + def _create_pen(self) -> QPen: + """현재 설정으로 펜 생성""" + pen = QPen(self.pen_color, self.pen_width) + pen.setJoinStyle(Qt.RoundJoin) + pen.setCapStyle(Qt.RoundCap) + return pen + + def _create_brush(self) -> QBrush: + """현재 설정으로 브러시 생성""" + return QBrush(self.fill_color) + + def _apply_shadow(self, item: QGraphicsItem): + """그림자 효과 적용""" + if self.use_shadow: + shadow = QGraphicsDropShadowEffect() + shadow.setBlurRadius(8) + shadow.setColor(QColor(0, 0, 0, 100)) + shadow.setOffset(3, 3) + item.setGraphicsEffect(shadow) + + def _create_arrow_polygon(self, start: QPointF, end: QPointF) -> QPolygonF: + """화살표 폴리곤 생성""" + import math + + arrow_size = 15 + dx = end.x() - start.x() + dy = end.y() - start.y() + length = math.sqrt(dx * dx + dy * dy) + + if length == 0: + return QPolygonF() + + angle = math.atan2(dy, dx) + p1 = end + p2 = QPointF( + end.x() - arrow_size * math.cos(angle - math.pi / 6), + end.y() - arrow_size * math.sin(angle - math.pi / 6) + ) + p3 = QPointF( + end.x() - arrow_size * math.cos(angle + math.pi / 6), + end.y() - arrow_size * math.sin(angle + math.pi / 6) + ) + + return QPolygonF([p1, p2, p3]) + + def _get_item_vertices(self, item: QGraphicsItem) -> List[QPointF]: + """아이템의 버텍스(꼭지점) 목록 반환""" + vertices = [] + + if isinstance(item, (QGraphicsRectItem, QGraphicsEllipseItem)): + rect = item.rect() + pos = item.pos() + vertices = [ + pos + rect.topLeft(), + pos + rect.topRight(), + pos + rect.bottomRight(), + pos + rect.bottomLeft(), + ] + elif isinstance(item, QGraphicsLineItem): + line = item.line() + pos = item.pos() + vertices = [ + pos + line.p1(), + pos + line.p2(), + ] + elif isinstance(item, QGraphicsTextItem): + # 텍스트 아이템도 핸들 지원 + rect = item.boundingRect() + pos = item.pos() + vertices = [ + pos + rect.topLeft(), + pos + rect.topRight(), + pos + rect.bottomRight(), + pos + rect.bottomLeft(), + ] + + return vertices + + def _find_vertex_at(self, pos: QPointF) -> Tuple[Optional[QGraphicsItem], int]: + """주어진 위치에서 가장 가까운 버텍스 찾기""" + for item in reversed(self.edit_items): + vertices = self._get_item_vertices(item) + for i, vertex in enumerate(vertices): + if self._distance(pos, vertex) < VERTEX_EPSILON / self.current_scale: + return item, i + return None, -1 + + def _find_item_at(self, pos: QPointF) -> Optional[QGraphicsItem]: + """주어진 위치의 편집 아이템 찾기""" + items = self.scene.items(pos) + for item in items: + if item in self.edit_items: + return item + return None + + def _distance(self, p1: QPointF, p2: QPointF) -> float: + """두 점 사이의 거리""" + import math + dx = p1.x() - p2.x() + dy = p1.y() - p2.y() + return math.sqrt(dx * dx + dy * dy) + + def _add_edit_item(self, item: QGraphicsItem, already_in_scene: bool = False): + """편집 아이템 추가 (Undo 지원) + + Args: + item: 추가할 그래픽 아이템 + already_in_scene: 이미 scene에 추가되어 있는지 여부 + """ + if not already_in_scene: + self.scene.addItem(item) + self.edit_items.append(item) + + action = EditAction(action_type="add", items=[item]) + self.undo_stack.append(action) + self.redo_stack.clear() + self._emit_undo_redo_state() + + def add_text(self, pos: QPointF, text: str = "텍스트"): + """텍스트 추가""" + text_item = OutlineTextItem(text) + text_item.setPos(pos) + + # 폰트 설정 적용 + font = QFont(self.font) + font.setBold(self.font_bold) + font.setUnderline(self.font_underline) + text_item.setFont(font) + text_item.setDefaultTextColor(self.pen_color) + text_item.setFlags( + QGraphicsItem.ItemIsMovable | + QGraphicsItem.ItemIsSelectable + ) + + # 돋보이기 효과 적용 + if self.text_outline_color: + text_item.set_outline_color(self.text_outline_color) + + self._apply_shadow(text_item) + self._add_edit_item(text_item) + + return text_item + + def _copy_item(self, item: QGraphicsItem) -> Optional[QGraphicsItem]: + """아이템 복사""" + copied = None + + if isinstance(item, QGraphicsRectItem): + copied = QGraphicsRectItem(item.rect()) + copied.setPen(item.pen()) + copied.setBrush(item.brush()) + elif isinstance(item, QGraphicsEllipseItem): + copied = QGraphicsEllipseItem(item.rect()) + copied.setPen(item.pen()) + copied.setBrush(item.brush()) + elif isinstance(item, QGraphicsLineItem): + copied = QGraphicsLineItem(item.line()) + copied.setPen(item.pen()) + elif isinstance(item, OutlineTextItem): + copied = OutlineTextItem(item.toPlainText()) + copied.setFont(item.font()) + copied.setDefaultTextColor(item.defaultTextColor()) + copied.set_outline_color(item.get_outline_color()) + elif isinstance(item, QGraphicsTextItem): + copied = OutlineTextItem(item.toPlainText()) + copied.setFont(item.font()) + copied.setDefaultTextColor(item.defaultTextColor()) + elif isinstance(item, QGraphicsPolygonItem): + copied = QGraphicsPolygonItem(item.polygon()) + copied.setPen(item.pen()) + copied.setBrush(item.brush()) + + if copied: + copied.setFlags( + QGraphicsItem.ItemIsMovable | + QGraphicsItem.ItemIsSelectable + ) + # 그림자 효과 복사 + if item.graphicsEffect(): + self._apply_shadow(copied) + + return copied + + def group_selected(self): + """선택된 아이템들 그룹화""" + selected = [item for item in self.scene.selectedItems() if item in self.edit_items] + if len(selected) < 2: + return + + group = self.scene.createItemGroup(selected) + group.setFlags( + QGraphicsItem.ItemIsMovable | + QGraphicsItem.ItemIsSelectable + ) + + # 그룹에서 개별 아이템 제거하고 그룹 추가 + for item in selected: + if item in self.edit_items: + self.edit_items.remove(item) + + self.edit_items.append(group) + self.item_groups.append(group) + + action = EditAction(action_type="add", items=[group], old_data=selected) + self.undo_stack.append(action) + self.redo_stack.clear() + self._emit_undo_redo_state() + + def ungroup_selected(self): + """선택된 그룹 해제""" + selected = self.scene.selectedItems() + + for item in selected: + if isinstance(item, QGraphicsItemGroup) and item in self.item_groups: + children = item.childItems() + self.scene.destroyItemGroup(item) + + if item in self.edit_items: + self.edit_items.remove(item) + if item in self.item_groups: + self.item_groups.remove(item) + + for child in children: + child.setFlags( + QGraphicsItem.ItemIsMovable | + QGraphicsItem.ItemIsSelectable + ) + self.edit_items.append(child) + + def bring_to_front(self): + """선택된 아이템을 맨 앞으로""" + selected = self.scene.selectedItems() + for item in selected: + if item in self.edit_items: + max_z = max((i.zValue() for i in self.edit_items), default=0) + item.setZValue(max_z + 1) + + def send_to_back(self): + """선택된 아이템을 맨 뒤로""" + selected = self.scene.selectedItems() + for item in selected: + if item in self.edit_items: + min_z = min((i.zValue() for i in self.edit_items), default=0) + item.setZValue(min_z - 1) + + def bring_forward(self): + """선택된 아이템을 한 단계 앞으로""" + selected = self.scene.selectedItems() + for item in selected: + if item in self.edit_items: + item.setZValue(item.zValue() + 1) + + def send_backward(self): + """선택된 아이템을 한 단계 뒤로""" + selected = self.scene.selectedItems() + for item in selected: + if item in self.edit_items: + item.setZValue(item.zValue() - 1) + + def undo(self): + """실행 취소""" + if not self.undo_stack: + return + + action = self.undo_stack.pop() + + if action.action_type == "add": + for item in action.items: + if item in self.edit_items: + self.edit_items.remove(item) + self.scene.removeItem(item) + + elif action.action_type == "delete": + for item in action.items: + self.scene.addItem(item) + self.edit_items.append(item) + + elif action.action_type == "move": + if action.old_data: + for item, old_pos in zip(action.items, action.old_data): + item.setPos(old_pos) + + elif action.action_type == "resize": + if action.old_data: + item = action.items[0] + old_rect = action.old_data + if isinstance(item, (QGraphicsRectItem, QGraphicsEllipseItem)): + item.setRect(old_rect) + elif isinstance(item, QGraphicsLineItem): + item.setLine(QLineF(old_rect.topLeft(), old_rect.bottomRight())) + + self.redo_stack.append(action) + self._emit_undo_redo_state() + + def redo(self): + """다시 실행""" + if not self.redo_stack: + return + + action = self.redo_stack.pop() + + if action.action_type == "add": + for item in action.items: + self.scene.addItem(item) + self.edit_items.append(item) + + elif action.action_type == "delete": + for item in action.items: + if item in self.edit_items: + self.edit_items.remove(item) + self.scene.removeItem(item) + + elif action.action_type == "move": + if action.new_data: + for item, new_pos in zip(action.items, action.new_data): + item.setPos(new_pos) + + elif action.action_type == "resize": + if action.new_data: + item = action.items[0] + new_rect = action.new_data + if isinstance(item, (QGraphicsRectItem, QGraphicsEllipseItem)): + item.setRect(new_rect) + elif isinstance(item, QGraphicsLineItem): + item.setLine(QLineF(new_rect.topLeft(), new_rect.bottomRight())) + + self.undo_stack.append(action) + self._emit_undo_redo_state() + + def delete_selected(self): + """선택된 아이템 삭제""" + selected = self.scene.selectedItems() + if not selected: + return + + items_to_delete = [item for item in selected if item in self.edit_items] + if not items_to_delete: + return + + action = EditAction(action_type="delete", items=items_to_delete) + self.undo_stack.append(action) + self.redo_stack.clear() + + for item in items_to_delete: + self.edit_items.remove(item) + self.scene.removeItem(item) + + self._emit_undo_redo_state() + + def clear_edits(self): + """모든 편집 내용 삭제""" + if not self.edit_items: + return + + action = EditAction(action_type="delete", items=list(self.edit_items)) + self.undo_stack.append(action) + self.redo_stack.clear() + + for item in self.edit_items: + self.scene.removeItem(item) + self.edit_items.clear() + + self._emit_undo_redo_state() + + def update_selected_color(self, color: QColor): + """선택된 아이템의 색상 변경""" + selected = self.scene.selectedItems() + if not selected: + return + + for item in selected: + if item not in self.edit_items: + continue + + if isinstance(item, (QGraphicsRectItem, QGraphicsEllipseItem)): + pen = item.pen() + pen.setColor(color) + item.setPen(pen) + elif isinstance(item, QGraphicsLineItem): + pen = item.pen() + pen.setColor(color) + item.setPen(pen) + elif isinstance(item, QGraphicsPolygonItem): + pen = item.pen() + pen.setColor(color) + item.setPen(pen) + brush = item.brush() + brush.setColor(color) + item.setBrush(brush) + elif isinstance(item, QGraphicsTextItem): + item.setDefaultTextColor(color) + + self.viewport().update() + + def update_selected_width(self, width: int): + """선택된 아이템의 두께 변경""" + selected = self.scene.selectedItems() + if not selected: + return + + for item in selected: + if item not in self.edit_items: + continue + + if isinstance(item, (QGraphicsRectItem, QGraphicsEllipseItem, + QGraphicsLineItem, QGraphicsPolygonItem)): + pen = item.pen() + pen.setWidth(width) + item.setPen(pen) + elif isinstance(item, QGraphicsTextItem): + font = item.font() + # 텍스트는 두께 대신 폰트 크기 조정 (두께 * 5) + font.setPointSize(max(10, width * 5)) + item.setFont(font) + + self.viewport().update() + + def save_edited_image(self, save_path: str = None) -> bool: + """편집된 이미지 저장""" + if not self.pixmap_item: + return False + + try: + # 저장 전 선택 해제 (선택 핸들이 저장되지 않도록) + self.scene.clearSelection() + + rect = self.scene.sceneRect() + pixmap = QPixmap(int(rect.width()), int(rect.height())) + pixmap.fill(Qt.transparent) + + painter = QPainter(pixmap) + painter.setRenderHint(QPainter.Antialiasing) + painter.setRenderHint(QPainter.SmoothPixmapTransform) + self.scene.render(painter) + painter.end() + + if not save_path: + attachment = self.images[self.current_index] + full_path = attachment.get_full_path() + stem = full_path.stem + suffix = full_path.suffix + save_path = str(full_path.parent / f"{stem}_edited{suffix}") + + success = pixmap.save(save_path) + + if success: + logger.info("편집된 이미지 저장: %s", save_path) + + return success + + except Exception as e: + logger.error("이미지 저장 실패: %s", e) + return False + + def wheelEvent(self, event: QWheelEvent): + """마우스 휠 이벤트""" + modifiers = event.modifiers() + + if modifiers & Qt.ControlModifier: + # Ctrl + 휠: 확대/축소 + try: + anchor_point = QPointF(event.position()) + except AttributeError: + anchor_point = QPointF(event.pos()) + + if event.angleDelta().y() > 0: + self.zoom_in(1.15, anchor_point) + else: + self.zoom_out(1.15, anchor_point) + event.accept() + else: + # 휠만: 이전/다음 이미지 + if event.angleDelta().y() > 0: + self.prev_image() + else: + self.next_image() + event.accept() + + def mouseMoveEvent(self, event: QMouseEvent): + """마우스 이동 이벤트""" + scene_pos = self.mapToScene(event.pos()) + + # 패닝 중 + if self._is_panning: + delta = event.pos() - self._last_mouse_pos.toPoint() + self._last_mouse_pos = QPointF(event.pos()) + + self.horizontalScrollBar().setValue( + self.horizontalScrollBar().value() - delta.x() + ) + self.verticalScrollBar().setValue( + self.verticalScrollBar().value() - delta.y() + ) + event.accept() + return + + # 리사이즈 중 + if self._is_resizing and self._resize_item: + self._handle_resize(scene_pos) + event.accept() + return + + # 이동 중 + if self._is_moving: + delta = scene_pos - self._last_mouse_pos + self._last_mouse_pos = scene_pos + + for item in self.scene.selectedItems(): + if item in self.edit_items: + item.moveBy(delta.x(), delta.y()) + + event.accept() + return + + # 그리기 중 + if self._is_drawing: + self._update_drawing(scene_pos) + super().mouseMoveEvent(event) + return + + # 호버 처리 (SELECT 모드) + if self.current_tool == EditTool.SELECT: + # 버텍스 호버 체크 + vertex_item, vertex_idx = self._find_vertex_at(scene_pos) + if vertex_item and vertex_idx >= 0: + self._hover_item = vertex_item + self._hover_vertex = vertex_idx + self._override_cursor(CURSOR_SIZE_ALL) + self.viewport().update() + return + + # 아이템 호버 체크 + hover_item = self._find_item_at(scene_pos) + if hover_item: + self._hover_item = hover_item + self._hover_vertex = -1 + self._override_cursor(CURSOR_GRAB) + self.viewport().update() + return + + # 아무것도 없으면 + self._hover_item = None + self._hover_vertex = -1 + self._restore_cursor() + + super().mouseMoveEvent(event) + + def _handle_resize(self, pos: QPointF): + """리사이즈 처리""" + if not self._resize_item or not self._resize_start_rect: + return + + item = self._resize_item + idx = self._resize_vertex_index + start_rect = self._resize_start_rect + + if isinstance(item, (QGraphicsRectItem, QGraphicsEllipseItem)): + # 사각형/타원 리사이즈 + item_pos = item.pos() + local_pos = pos - item_pos + + if idx == 0: # top-left + new_rect = QRectF(local_pos, start_rect.bottomRight()) + elif idx == 1: # top-right + new_rect = QRectF( + QPointF(start_rect.left(), local_pos.y()), + QPointF(local_pos.x(), start_rect.bottom()) + ) + elif idx == 2: # bottom-right + new_rect = QRectF(start_rect.topLeft(), local_pos) + elif idx == 3: # bottom-left + new_rect = QRectF( + QPointF(local_pos.x(), start_rect.top()), + QPointF(start_rect.right(), local_pos.y()) + ) + else: + return + + new_rect = new_rect.normalized() + + # Alt 누르면 정사각형/원 + if self._alt_pressed: + size = max(new_rect.width(), new_rect.height()) + new_rect.setWidth(size) + new_rect.setHeight(size) + + item.setRect(new_rect) + + elif isinstance(item, QGraphicsLineItem): + # 선 리사이즈 + item_pos = item.pos() + local_pos = pos - item_pos + line = item.line() + + if idx == 0: + item.setLine(QLineF(local_pos, line.p2())) + elif idx == 1: + item.setLine(QLineF(line.p1(), local_pos)) + + elif isinstance(item, QGraphicsTextItem): + # 텍스트 아이템 리사이즈 - 폰트 크기 조절 + item_pos = item.pos() + local_pos = pos - item_pos + + # 우하단 꼭지점 기준으로 폰트 크기 계산 + if idx == 2: # bottom-right + new_height = max(10, local_pos.y()) + font = item.font() + # 높이에 비례해서 폰트 크기 조절 + new_font_size = max(8, int(new_height / 1.5)) + font.setPointSize(new_font_size) + item.setFont(font) + + self.viewport().update() + + def mousePressEvent(self, event: QMouseEvent): + """마우스 누름 이벤트""" + scene_pos = self.mapToScene(event.pos()) + + if event.button() == Qt.LeftButton: + if self.current_tool == EditTool.SELECT: + # 버텍스 리사이즈 시작 체크 + vertex_item, vertex_idx = self._find_vertex_at(scene_pos) + if vertex_item and vertex_idx >= 0: + self._is_resizing = True + self._resize_item = vertex_item + self._resize_vertex_index = vertex_idx + + if isinstance(vertex_item, (QGraphicsRectItem, QGraphicsEllipseItem)): + self._resize_start_rect = vertex_item.rect() + elif isinstance(vertex_item, QGraphicsLineItem): + line = vertex_item.line() + self._resize_start_rect = QRectF(line.p1(), line.p2()) + elif isinstance(vertex_item, QGraphicsTextItem): + self._resize_start_rect = vertex_item.boundingRect() + + self._override_cursor(CURSOR_SIZE_ALL) + event.accept() + return + + # 아이템 이동 시작 체크 + click_item = self._find_item_at(scene_pos) + if click_item: + # 아이템 선택 + modifiers = QApplication.keyboardModifiers() + if not (modifiers & Qt.ControlModifier): + self.scene.clearSelection() + click_item.setSelected(True) + + # Ctrl+드래그 = 복사 + self._is_copying = bool(modifiers & Qt.ControlModifier) + + # 이동 시작 + self._is_moving = True + self._last_mouse_pos = scene_pos + self._move_start_positions.clear() + + for item in self.scene.selectedItems(): + if item in self.edit_items: + self._move_start_positions[item] = item.pos() + + self._override_cursor(CURSOR_MOVE) + event.accept() + return + + # 빈 공간 클릭: 선택 해제 및 패닝 시작 + self.scene.clearSelection() + self._is_panning = True + self._last_mouse_pos = QPointF(event.pos()) + self._override_cursor(CURSOR_GRAB) + event.accept() + return + + else: + # 그리기 모드 + self._is_drawing = True + self.drawing_start = scene_pos + self._start_drawing(scene_pos) + + elif event.button() == Qt.MiddleButton: + # 중간 버튼: 패닝 + self._is_panning = True + self._last_mouse_pos = QPointF(event.pos()) + self._override_cursor(CURSOR_GRAB) + event.accept() + return + + super().mousePressEvent(event) + + def _start_drawing(self, pos: QPointF): + """그리기 시작""" + pen = self._create_pen() + brush = self._create_brush() + + if self.current_tool == EditTool.RECT: + self.drawing_item = QGraphicsRectItem(QRectF(pos, pos)) + self.drawing_item.setPen(pen) + self.drawing_item.setBrush(brush) + + elif self.current_tool == EditTool.ELLIPSE: + self.drawing_item = QGraphicsEllipseItem(QRectF(pos, pos)) + self.drawing_item.setPen(pen) + self.drawing_item.setBrush(brush) + + elif self.current_tool == EditTool.LINE: + self.drawing_item = QGraphicsLineItem(QLineF(pos, pos)) + self.drawing_item.setPen(pen) + + elif self.current_tool == EditTool.ARROW: + self.drawing_item = QGraphicsLineItem(QLineF(pos, pos)) + self.drawing_item.setPen(pen) + + elif self.current_tool == EditTool.TEXT: + text, ok = QInputDialog.getText(self, "텍스트 입력", "텍스트:") + if ok and text: + self.add_text(pos, text) + self._is_drawing = False + return + + elif self.current_tool == EditTool.FREEHAND: + self._freehand_points = [pos] + return + + if self.drawing_item: + self.scene.addItem(self.drawing_item) + + def _update_drawing(self, pos: QPointF): + """그리기 업데이트""" + if not self.drawing_item: + if self.current_tool == EditTool.FREEHAND: + self._freehand_points.append(pos) + return + + start = self.drawing_start + + if self.current_tool == EditTool.RECT: + rect = QRectF(start, pos).normalized() + # Alt 누르면 정사각형 + if self._alt_pressed: + size = max(rect.width(), rect.height()) + rect.setWidth(size) + rect.setHeight(size) + self.drawing_item.setRect(rect) + + elif self.current_tool == EditTool.ELLIPSE: + rect = QRectF(start, pos).normalized() + # Alt 누르면 원 + if self._alt_pressed: + size = max(rect.width(), rect.height()) + rect.setWidth(size) + rect.setHeight(size) + self.drawing_item.setRect(rect) + + elif self.current_tool in (EditTool.LINE, EditTool.ARROW): + self.drawing_item.setLine(QLineF(start, pos)) + + def mouseReleaseEvent(self, event: QMouseEvent): + """마우스 놓음 이벤트""" + if event.button() == Qt.LeftButton: + if self._is_panning: + self._is_panning = False + self._restore_cursor() + + elif self._is_resizing: + # 리사이즈 완료 - Undo 스택에 추가 + if self._resize_item and self._resize_start_rect: + if isinstance(self._resize_item, (QGraphicsRectItem, QGraphicsEllipseItem)): + new_rect = self._resize_item.rect() + elif isinstance(self._resize_item, QGraphicsLineItem): + line = self._resize_item.line() + new_rect = QRectF(line.p1(), line.p2()) + else: + new_rect = None + + if new_rect and new_rect != self._resize_start_rect: + action = EditAction( + action_type="resize", + items=[self._resize_item], + old_data=self._resize_start_rect, + new_data=new_rect + ) + self.undo_stack.append(action) + self.redo_stack.clear() + self._emit_undo_redo_state() + + self._is_resizing = False + self._resize_item = None + self._resize_start_rect = None + self._restore_cursor() + + elif self._is_moving: + # 이동 완료 - Undo 스택에 추가 + if self._move_start_positions: + items = list(self._move_start_positions.keys()) + old_positions = list(self._move_start_positions.values()) + new_positions = [item.pos() for item in items] + + moved = any( + old != new + for old, new in zip(old_positions, new_positions) + ) + + if moved: + if self._is_copying: + # 복사 모드: 원본을 원래 위치로, 새 복사본 생성 + for item, old_pos in zip(items, old_positions): + item.setPos(old_pos) + + # 복사본 생성 + copied_items = [] + for item, new_pos in zip(items, new_positions): + copied = self._copy_item(item) + if copied: + copied.setPos(new_pos) + self.scene.addItem(copied) + self.edit_items.append(copied) + copied_items.append(copied) + + if copied_items: + action = EditAction(action_type="add", items=copied_items) + self.undo_stack.append(action) + self.redo_stack.clear() + self._emit_undo_redo_state() + else: + # 일반 이동 + action = EditAction( + action_type="move", + items=items, + old_data=old_positions, + new_data=new_positions + ) + self.undo_stack.append(action) + self.redo_stack.clear() + self._emit_undo_redo_state() + + self._is_moving = False + self._is_copying = False + self._move_start_positions.clear() + self._restore_cursor() + + elif self._is_drawing: + self._finish_drawing() + self._is_drawing = False + + elif event.button() == Qt.MiddleButton: + if self._is_panning: + self._is_panning = False + self._restore_cursor() + + super().mouseReleaseEvent(event) + + def _finish_drawing(self): + """그리기 완료""" + if self.drawing_item: + # 선택/이동 가능하게 설정 + self.drawing_item.setFlags( + QGraphicsItem.ItemIsMovable | + QGraphicsItem.ItemIsSelectable + ) + + # 화살표인 경우 머리 추가 + if self.current_tool == EditTool.ARROW: + line = self.drawing_item.line() + arrow_head = self._create_arrow_polygon(line.p1(), line.p2()) + if not arrow_head.isEmpty(): + arrow_item = QGraphicsPolygonItem(arrow_head) + arrow_item.setPen(self._create_pen()) + arrow_item.setBrush(QBrush(self.pen_color)) + arrow_item.setFlags( + QGraphicsItem.ItemIsMovable | + QGraphicsItem.ItemIsSelectable + ) + self._apply_shadow(arrow_item) + self.scene.addItem(arrow_item) + self.edit_items.append(arrow_item) + + action = EditAction(action_type="add", items=[self.drawing_item, arrow_item]) + self.undo_stack.append(action) + self.redo_stack.clear() + self._emit_undo_redo_state() + + self._apply_shadow(self.drawing_item) + self.edit_items.append(self.drawing_item) + self.drawing_item = None + return + + self._apply_shadow(self.drawing_item) + # 이미 _start_drawing에서 scene에 추가됨 + self._add_edit_item(self.drawing_item, already_in_scene=True) + self.drawing_item = None + + elif self.current_tool == EditTool.FREEHAND and len(self._freehand_points) > 1: + pen = self._create_pen() + freehand_items = [] + + for i in range(len(self._freehand_points) - 1): + line = QGraphicsLineItem(QLineF( + self._freehand_points[i], + self._freehand_points[i + 1] + )) + line.setPen(pen) + line.setFlags( + QGraphicsItem.ItemIsMovable | + QGraphicsItem.ItemIsSelectable + ) + self.scene.addItem(line) + self.edit_items.append(line) + freehand_items.append(line) + + if freehand_items: + action = EditAction(action_type="add", items=freehand_items) + self.undo_stack.append(action) + self.redo_stack.clear() + self._emit_undo_redo_state() + + self._freehand_points.clear() + + def mouseDoubleClickEvent(self, event: QMouseEvent): + """더블클릭 이벤트""" + if event.button() == Qt.LeftButton and self.current_tool == EditTool.SELECT: + scene_pos = self.mapToScene(event.pos()) + click_item = self._find_item_at(scene_pos) + + if not click_item: + # 빈 공간 더블클릭: 줌 토글 + if abs(self.current_scale - 1.0) < 0.1: + self._fit_to_view() + else: + self.show_original_size() + return + + super().mouseDoubleClickEvent(event) + + def contextMenuEvent(self, event): + """컨텍스트 메뉴""" + scene_pos = self.mapToScene(event.pos()) + click_item = self._find_item_at(scene_pos) + + menu = QMenu(self) + menu.setStyleSheet(""" + QMenu { + background-color: #1e293b; + color: #f8fafc; + border: 1px solid #334155; + padding: 4px; + } + QMenu::item { + padding: 6px 24px; + } + QMenu::item:selected { + background-color: #3b82f6; + } + QMenu::separator { + height: 1px; + background-color: #334155; + margin: 4px 8px; + } + """) + + selected = self.scene.selectedItems() + + if click_item or selected: + # 객체가 있는 경우 + if click_item and click_item not in selected: + self.scene.clearSelection() + click_item.setSelected(True) + selected = [click_item] + + # 복사 + copy_action = menu.addAction("📋 복사") + copy_action.triggered.connect(lambda: self._copy_selected_to_clipboard()) + + # 삭제 + delete_action = menu.addAction("🗑 삭제") + delete_action.triggered.connect(self.delete_selected) + + menu.addSeparator() + + # 배치 + arrange_menu = menu.addMenu("📐 배치") + front_action = arrange_menu.addAction("맨 앞으로") + front_action.triggered.connect(self.bring_to_front) + forward_action = arrange_menu.addAction("앞으로") + forward_action.triggered.connect(self.bring_forward) + backward_action = arrange_menu.addAction("뒤로") + backward_action.triggered.connect(self.send_backward) + back_action = arrange_menu.addAction("맨 뒤로") + back_action.triggered.connect(self.send_to_back) + + menu.addSeparator() + + # 그룹 + if len(selected) >= 2: + group_action = menu.addAction("🔗 그룹 묶기") + group_action.triggered.connect(self.group_selected) + + has_group = any(isinstance(item, QGraphicsItemGroup) for item in selected) + if has_group: + ungroup_action = menu.addAction("🔓 그룹 풀기") + ungroup_action.triggered.connect(self.ungroup_selected) + else: + # 빈 공간 + paste_action = menu.addAction("📋 붙여넣기") + paste_action.triggered.connect(lambda: self._paste_from_clipboard(scene_pos)) + + menu.addSeparator() + + select_all_action = menu.addAction("전체 선택") + select_all_action.triggered.connect(self.select_all) + + menu.exec(event.globalPos()) + + def _copy_selected_to_clipboard(self): + """선택된 아이템을 클립보드에 복사 (내부용)""" + selected = [item for item in self.scene.selectedItems() if item in self.edit_items] + if selected: + self._clipboard_items = selected + + def _paste_from_clipboard(self, pos: QPointF): + """클립보드에서 붙여넣기""" + if not hasattr(self, '_clipboard_items') or not self._clipboard_items: + return + + pasted_items = [] + for item in self._clipboard_items: + copied = self._copy_item(item) + if copied: + # 약간 오프셋을 주어 붙여넣기 + copied.setPos(pos) + self.scene.addItem(copied) + self.edit_items.append(copied) + pasted_items.append(copied) + + if pasted_items: + action = EditAction(action_type="add", items=pasted_items) + self.undo_stack.append(action) + self.redo_stack.clear() + self._emit_undo_redo_state() + + def select_all(self): + """모든 편집 아이템 선택""" + for item in self.edit_items: + item.setSelected(True) + + def keyPressEvent(self, event: QKeyEvent): + """키 누름 이벤트""" + if event.key() == Qt.Key_Alt: + self._alt_pressed = True + super().keyPressEvent(event) + + def keyReleaseEvent(self, event: QKeyEvent): + """키 놓음 이벤트""" + if event.key() == Qt.Key_Alt: + self._alt_pressed = False + super().keyReleaseEvent(event) + + def paintEvent(self, event): + """페인트 이벤트 - 버텍스 핸들 그리기""" + super().paintEvent(event) + + # 선택된 아이템이나 호버 아이템의 버텍스 핸들 그리기 + if self.current_tool != EditTool.SELECT: + return + + painter = QPainter(self.viewport()) + painter.setRenderHint(QPainter.Antialiasing) + + items_to_draw = set() + + # 선택된 아이템 + for item in self.scene.selectedItems(): + if item in self.edit_items: + items_to_draw.add(item) + + # 호버 아이템 + if self._hover_item and self._hover_item in self.edit_items: + items_to_draw.add(self._hover_item) + + for item in items_to_draw: + vertices = self._get_item_vertices(item) + for i, vertex in enumerate(vertices): + # Scene 좌표를 View 좌표로 변환 + view_pos = self.mapFromScene(vertex) + + # 호버된 버텍스는 크게 + if item == self._hover_item and i == self._hover_vertex: + size = 10 + painter.setBrush(QBrush(QColor("#3b82f6"))) + else: + size = 7 + painter.setBrush(QBrush(QColor("#ffffff"))) + + painter.setPen(QPen(QColor("#1e293b"), 2)) + painter.drawEllipse(view_pos, size, size) + + painter.end() + + # resizeEvent를 오버라이드하지 않음 - 확대 상태 유지를 위해 + # 초기 로드 시에만 _fit_to_view가 호출됨 + + +class ToolButton(QToolButton): + """도구 버튼""" + + def __init__(self, text: str, tooltip: str = "", checkable: bool = True, size: int = 42, parent=None): + super().__init__(parent) + self.setText(text) + self.setToolTip(tooltip) + self.setCheckable(checkable) + self.setFixedSize(size, size) + self.setCursor(Qt.PointingHandCursor) + self.setStyleSheet(f""" + QToolButton {{ + background-color: #334155; + color: #ffffff; + border: none; + border-radius: 6px; + font-size: {int(size * 0.45)}px; + }} + QToolButton:hover {{ + background-color: #475569; + }} + QToolButton:checked {{ + background-color: #3b82f6; + }} + QToolButton:disabled {{ + background-color: #1e293b; + color: #475569; + }} + """) + + +class ColorButton(QPushButton): + """색상 선택 버튼""" + + color_changed = Signal(QColor) + + def __init__(self, color: QColor, parent=None): + super().__init__(parent) + self._color = color + self.setFixedSize(28, 28) + self.setCursor(Qt.PointingHandCursor) + self.clicked.connect(self._on_clicked) + self._update_style() + + def _update_style(self): + self.setStyleSheet(f""" + QPushButton {{ + background-color: {self._color.name()}; + border: 2px solid #ffffff; + border-radius: 14px; + }} + QPushButton:hover {{ + border: 2px solid #3b82f6; + }} + """) + + def _on_clicked(self): + color = QColorDialog.getColor(self._color, self, "색상 선택") + if color.isValid(): + self._color = color + self._update_style() + self.color_changed.emit(color) + + def color(self) -> QColor: + return self._color + + def set_color(self, color: QColor): + self._color = color + self._update_style() + + +class ImageViewerDialog(QDialog): + """이미지 뷰어/편집기 다이얼로그""" + + # 저장 방식 상수 + SAVE_COPY = "copy" # 사본 저장 + SAVE_ORIGINAL = "original" # 원본 저장 + + def __init__( + self, + parent=None, + images: List[Attachment] = None, + start_index: int = 0, + record_info: dict = None # 레코드 정보 (파일명 생성용) + ): + super().__init__(parent) + + self.images = images or [] + self.start_index = start_index + self.record_info = record_info or {} + self.save_mode = self.SAVE_ORIGINAL # 기본값: 원본 저장 + self._is_saved = True # 편집 후 저장 여부 + + self._setup_window() + self._setup_ui() + + if self.images: + self.image_view.set_images(self.images, start_index) + self._update_info() + + # 편집 변경 시 저장 상태 업데이트 + self.image_view.undo_redo_changed.connect(self._on_edit_changed) + + def _setup_window(self): + """창 설정""" + self.setWindowTitle("이미지 뷰어") + self.setModal(True) + self.resize(1200, 900) + self.setMinimumSize(800, 600) + + self.setWindowFlags(Qt.Dialog | Qt.FramelessWindowHint) + self.setAttribute(Qt.WA_TranslucentBackground, False) + + self.setStyleSheet(""" + QDialog { + background-color: #0f0f0f; + } + """) + + def _setup_ui(self): + """UI 설정""" + layout = QVBoxLayout(self) + layout.setContentsMargins(0, 0, 0, 0) + layout.setSpacing(0) + + self.image_view = EditableGraphicsView() + self.image_view.image_changed.connect(self._update_info) + self.image_view.undo_redo_changed.connect(self._on_undo_redo_changed) + + self._create_top_bar(layout) + self._create_toolbar(layout) + + # 메인 영역: 이미지뷰 + 오른쪽 명령어 패널 + main_widget = QWidget() + main_layout = QHBoxLayout(main_widget) + main_layout.setContentsMargins(0, 0, 0, 0) + main_layout.setSpacing(0) + + main_layout.addWidget(self.image_view, 1) + self._create_command_panel(main_layout) + + layout.addWidget(main_widget, 1) + + self._create_bottom_bar(layout) + + def _create_top_bar(self, layout: QVBoxLayout): + """상단 바 생성""" + bar = QWidget() + bar.setFixedHeight(50) + bar.setStyleSheet("background-color: #1a1a1a;") + + bar_layout = QHBoxLayout(bar) + bar_layout.setContentsMargins(16, 8, 16, 8) + + self.info_label = QLabel() + self.info_label.setStyleSheet("color: #94a3b8; font-size: 12px;") + bar_layout.addWidget(self.info_label, 1) + + close_btn = QPushButton("✕") + close_btn.setFixedSize(32, 32) + close_btn.setCursor(Qt.PointingHandCursor) + close_btn.clicked.connect(self.close) + close_btn.setStyleSheet(""" + QPushButton { + background-color: transparent; + color: #ffffff; + border: none; + border-radius: 16px; + font-size: 18px; + } + QPushButton:hover { + background-color: #ef4444; + } + """) + bar_layout.addWidget(close_btn) + + layout.addWidget(bar) + + def _create_toolbar(self, layout: QVBoxLayout): + """도구 바 생성 (툴박스만 - 높이 1.5배)""" + toolbar = QWidget() + toolbar.setFixedHeight(75) # 50 * 1.5 = 75 + toolbar.setStyleSheet("background-color: #1e293b; border-bottom: 1px solid #334155;") + + toolbar_layout = QHBoxLayout(toolbar) + toolbar_layout.setContentsMargins(16, 12, 16, 12) + toolbar_layout.setSpacing(10) + + # Undo/Redo + self.undo_btn = ToolButton("↶", "실행 취소 (Ctrl+Z)", checkable=False, size=48) + self.undo_btn.setEnabled(False) + self.undo_btn.clicked.connect(self.image_view.undo) + toolbar_layout.addWidget(self.undo_btn) + + self.redo_btn = ToolButton("↷", "다시 실행 (Ctrl+Y)", checkable=False, size=48) + self.redo_btn.setEnabled(False) + self.redo_btn.clicked.connect(self.image_view.redo) + toolbar_layout.addWidget(self.redo_btn) + + toolbar_layout.addWidget(self._create_separator()) + + # 도구 버튼 + self.tool_group = QButtonGroup(self) + self.tool_group.setExclusive(True) + + tools = [ + ("🖱", "선택/이동 [V]\n방향키: 미세이동\nShift+방향키: 10px 이동", EditTool.SELECT), + ("▢", "사각형 [R]", EditTool.RECT), + ("○", "원/타원 [E]", EditTool.ELLIPSE), + ("╱", "직선 [L]", EditTool.LINE), + ("→", "화살표 [A]", EditTool.ARROW), + ("T", "텍스트 [T]", EditTool.TEXT), + ("✏", "자유선 [P]", EditTool.FREEHAND), + ] + + self.tool_buttons = {} + for text, tooltip, tool in tools: + btn = ToolButton(text, tooltip, size=48) + btn.clicked.connect(lambda checked, t=tool: self.image_view.set_tool(t)) + self.tool_group.addButton(btn) + toolbar_layout.addWidget(btn) + self.tool_buttons[tool] = btn + + if tool == EditTool.SELECT: + btn.setChecked(True) + + toolbar_layout.addWidget(self._create_separator()) + + # 색상 + color_label = QLabel("색상:") + color_label.setStyleSheet("color: #94a3b8; font-size: 12px;") + toolbar_layout.addWidget(color_label) + + self.color_btn = ColorButton(QColor("#ef4444")) + self.color_btn.color_changed.connect(self._on_color_changed) + toolbar_layout.addWidget(self.color_btn) + + # 색상명과 단축키 매핑 + self.quick_colors = [ + ("#ef4444", "빨강", "1"), + ("#f97316", "주황", "2"), + ("#eab308", "노랑", "3"), + ("#22c55e", "초록", "4"), + ("#3b82f6", "파랑", "5"), + ("#8b5cf6", "보라", "6"), + ("#ffffff", "흰색", "7"), + ("#000000", "검정", "8"), + ] + for color_hex, color_name, shortcut in self.quick_colors: + btn = QPushButton() + btn.setFixedSize(24, 24) + btn.setCursor(Qt.PointingHandCursor) + btn.setToolTip(f"{color_name} [{shortcut}]") + btn.setStyleSheet(f""" + QPushButton {{ + background-color: {color_hex}; + border: 1px solid #475569; + border-radius: 4px; + }} + QPushButton:hover {{ + border: 2px solid #ffffff; + }} + """) + btn.clicked.connect(lambda checked, c=color_hex: self._set_quick_color(c)) + toolbar_layout.addWidget(btn) + + toolbar_layout.addWidget(self._create_separator()) + + # 두께 + width_label = QLabel("두께:") + width_label.setStyleSheet("color: #94a3b8; font-size: 12px;") + toolbar_layout.addWidget(width_label) + + self.width_spin = QSpinBox() + self.width_spin.setRange(1, 20) + self.width_spin.setValue(3) + self.width_spin.setFixedSize(60, 32) + self.width_spin.setToolTip("선 두께 [ ] 또는 +/-") + self.width_spin.valueChanged.connect(self._on_width_changed) + self.width_spin.setStyleSheet(""" + QSpinBox { + background-color: #334155; + color: #ffffff; + border: 1px solid #475569; + border-radius: 4px; + padding: 2px 4px; + font-size: 12px; + } + QSpinBox::up-button, QSpinBox::down-button { + width: 16px; + background-color: #475569; + border: none; + } + QSpinBox::up-button:hover, QSpinBox::down-button:hover { + background-color: #64748b; + } + """) + toolbar_layout.addWidget(self.width_spin) + + toolbar_layout.addWidget(self._create_separator()) + + # 그림자 + self.shadow_btn = ToolButton("◐", "그림자 효과 [S]", size=48) + self.shadow_btn.setChecked(True) + self.shadow_btn.clicked.connect(self._on_shadow_toggled) + toolbar_layout.addWidget(self.shadow_btn) + + toolbar_layout.addStretch() + + layout.addWidget(toolbar) + + # 텍스트 전용 툴바 (두번째 줄) + self._create_text_toolbar(layout) + + def _create_text_toolbar(self, layout: QVBoxLayout): + """텍스트 전용 툴바 생성""" + toolbar = QWidget() + toolbar.setFixedHeight(50) + toolbar.setStyleSheet("background-color: #1e293b; border-bottom: 1px solid #334155;") + + toolbar_layout = QHBoxLayout(toolbar) + toolbar_layout.setContentsMargins(16, 8, 16, 8) + toolbar_layout.setSpacing(8) + + # 폰트 라벨 + font_label = QLabel("📝 글꼴:") + font_label.setStyleSheet("color: #94a3b8; font-size: 12px;") + toolbar_layout.addWidget(font_label) + + # 폰트 선택 콤보박스 + self.font_combo = QComboBox() + self.font_combo.setFixedWidth(150) + self.font_combo.setStyleSheet(""" + QComboBox { + background-color: #334155; + color: #ffffff; + border: 1px solid #475569; + border-radius: 4px; + padding: 4px 8px; + font-size: 11px; + } + QComboBox::drop-down { + border: none; + width: 20px; + } + QComboBox QAbstractItemView { + background-color: #1e293b; + color: #ffffff; + selection-background-color: #3b82f6; + border: 1px solid #475569; + } + """) + + # 사용 가능한 폰트만 추가 + for font_name in AVAILABLE_FONTS: + self.font_combo.addItem(font_name) + + self.font_combo.setCurrentText("맑은 고딕") + self.font_combo.currentTextChanged.connect(self._on_font_changed) + toolbar_layout.addWidget(self.font_combo) + + toolbar_layout.addWidget(self._create_separator()) + + # 폰트 크기 + size_label = QLabel("크기:") + size_label.setStyleSheet("color: #94a3b8; font-size: 12px;") + toolbar_layout.addWidget(size_label) + + self.font_size_spin = QSpinBox() + self.font_size_spin.setRange(8, 200) + self.font_size_spin.setValue(14) + self.font_size_spin.setFixedSize(60, 28) + self.font_size_spin.valueChanged.connect(self._on_font_size_changed) + self.font_size_spin.setStyleSheet(""" + QSpinBox { + background-color: #334155; + color: #ffffff; + border: 1px solid #475569; + border-radius: 4px; + padding: 2px 4px; + font-size: 11px; + } + QSpinBox::up-button, QSpinBox::down-button { + width: 14px; + background-color: #475569; + border: none; + } + """) + toolbar_layout.addWidget(self.font_size_spin) + + toolbar_layout.addWidget(self._create_separator()) + + # 굵게 + self.bold_btn = ToolButton("B", "굵게", size=32) + self.bold_btn.setStyleSheet(self.bold_btn.styleSheet() + """ + QToolButton { font-weight: bold; } + """) + self.bold_btn.clicked.connect(self._on_bold_toggled) + toolbar_layout.addWidget(self.bold_btn) + + # 밑줄 + self.underline_btn = ToolButton("U", "밑줄", size=32) + self.underline_btn.setStyleSheet(self.underline_btn.styleSheet() + """ + QToolButton { text-decoration: underline; } + """) + self.underline_btn.clicked.connect(self._on_underline_toggled) + toolbar_layout.addWidget(self.underline_btn) + + toolbar_layout.addWidget(self._create_separator()) + + # 돋보이기 (외곽선 효과) + outline_label = QLabel("돋보이기:") + outline_label.setStyleSheet("color: #94a3b8; font-size: 12px;") + toolbar_layout.addWidget(outline_label) + + self.outline_white_btn = QPushButton("흰색") + self.outline_white_btn.setCheckable(True) + self.outline_white_btn.setFixedSize(50, 28) + self.outline_white_btn.setCursor(Qt.PointingHandCursor) + self.outline_white_btn.clicked.connect(lambda: self._set_outline_color("#ffffff")) + self.outline_white_btn.setStyleSheet(""" + QPushButton { + background-color: #ffffff; + color: #000000; + border: 2px solid #475569; + border-radius: 4px; + font-size: 10px; + } + QPushButton:checked { + border: 2px solid #3b82f6; + } + """) + toolbar_layout.addWidget(self.outline_white_btn) + + self.outline_black_btn = QPushButton("검정") + self.outline_black_btn.setCheckable(True) + self.outline_black_btn.setFixedSize(50, 28) + self.outline_black_btn.setCursor(Qt.PointingHandCursor) + self.outline_black_btn.clicked.connect(lambda: self._set_outline_color("#000000")) + self.outline_black_btn.setStyleSheet(""" + QPushButton { + background-color: #000000; + color: #ffffff; + border: 2px solid #475569; + border-radius: 4px; + font-size: 10px; + } + QPushButton:checked { + border: 2px solid #3b82f6; + } + """) + toolbar_layout.addWidget(self.outline_black_btn) + + self.outline_none_btn = QPushButton("없음") + self.outline_none_btn.setCheckable(True) + self.outline_none_btn.setChecked(True) + self.outline_none_btn.setFixedSize(50, 28) + self.outline_none_btn.setCursor(Qt.PointingHandCursor) + self.outline_none_btn.clicked.connect(lambda: self._set_outline_color(None)) + self.outline_none_btn.setStyleSheet(""" + QPushButton { + background-color: #334155; + color: #94a3b8; + border: 2px solid #475569; + border-radius: 4px; + font-size: 10px; + } + QPushButton:checked { + border: 2px solid #3b82f6; + color: #ffffff; + } + """) + toolbar_layout.addWidget(self.outline_none_btn) + + # 돋보이기 버튼 그룹 (단일 선택) + self.outline_group = QButtonGroup(self) + self.outline_group.setExclusive(True) + self.outline_group.addButton(self.outline_white_btn) + self.outline_group.addButton(self.outline_black_btn) + self.outline_group.addButton(self.outline_none_btn) + + toolbar_layout.addStretch() + + layout.addWidget(toolbar) + + def _create_command_panel(self, layout: QHBoxLayout): + """오른쪽 명령어 패널 생성""" + panel = QWidget() + panel.setFixedWidth(100) + panel.setStyleSheet("background-color: #1e293b; border-left: 1px solid #334155;") + + panel_layout = QVBoxLayout(panel) + panel_layout.setContentsMargins(8, 16, 8, 16) + panel_layout.setSpacing(8) + + # 저장 방식 라벨 + save_mode_label = QLabel("저장방식") + save_mode_label.setAlignment(Qt.AlignCenter) + save_mode_label.setStyleSheet("color: #64748b; font-size: 10px; border: none;") + panel_layout.addWidget(save_mode_label) + + # 저장 방식 선택 버튼 + self.save_mode_group = QButtonGroup(self) + self.save_mode_group.setExclusive(True) + + self.save_original_btn = QPushButton("원본저장") + self.save_original_btn.setCheckable(True) + self.save_original_btn.setChecked(True) + self.save_original_btn.setCursor(Qt.PointingHandCursor) + self.save_original_btn.clicked.connect(lambda: self._set_save_mode(self.SAVE_ORIGINAL)) + self.save_original_btn.setStyleSheet(self._get_cmd_btn_style(True)) + panel_layout.addWidget(self.save_original_btn) + self.save_mode_group.addButton(self.save_original_btn) + + self.save_copy_btn = QPushButton("사본저장") + self.save_copy_btn.setCheckable(True) + self.save_copy_btn.setCursor(Qt.PointingHandCursor) + self.save_copy_btn.clicked.connect(lambda: self._set_save_mode(self.SAVE_COPY)) + self.save_copy_btn.setStyleSheet(self._get_cmd_btn_style(False)) + panel_layout.addWidget(self.save_copy_btn) + self.save_mode_group.addButton(self.save_copy_btn) + + # 구분선 + sep = QFrame() + sep.setFixedHeight(1) + sep.setStyleSheet("background-color: #334155; border: none;") + panel_layout.addWidget(sep) + + panel_layout.addStretch() + + # 삭제 버튼 + delete_btn = QPushButton("🗑 객체삭제") + delete_btn.setCursor(Qt.PointingHandCursor) + delete_btn.clicked.connect(self.image_view.delete_selected) + delete_btn.setStyleSheet(""" + QPushButton { + background-color: #475569; + color: #ffffff; + border: none; + border-radius: 6px; + padding: 10px 8px; + font-size: 11px; + } + QPushButton:hover { + background-color: #ef4444; + } + """) + panel_layout.addWidget(delete_btn) + + # 초기화 버튼 + clear_btn = QPushButton("↺ 초기화") + clear_btn.setCursor(Qt.PointingHandCursor) + clear_btn.clicked.connect(self.image_view.clear_edits) + clear_btn.setStyleSheet(""" + QPushButton { + background-color: #475569; + color: #ffffff; + border: none; + border-radius: 6px; + padding: 10px 8px; + font-size: 11px; + } + QPushButton:hover { + background-color: #f97316; + } + """) + panel_layout.addWidget(clear_btn) + + # 구분선 + sep2 = QFrame() + sep2.setFixedHeight(1) + sep2.setStyleSheet("background-color: #334155; border: none;") + panel_layout.addWidget(sep2) + + # 저장 버튼 + save_btn = QPushButton("💾 저장") + save_btn.setCursor(Qt.PointingHandCursor) + save_btn.clicked.connect(self._save_image) + save_btn.setStyleSheet(""" + QPushButton { + background-color: #22c55e; + color: #ffffff; + border: none; + border-radius: 6px; + padding: 12px 8px; + font-size: 12px; + font-weight: bold; + } + QPushButton:hover { + background-color: #16a34a; + } + """) + panel_layout.addWidget(save_btn) + + # 구분선 + sep3 = QFrame() + sep3.setFixedHeight(1) + sep3.setStyleSheet("background-color: #334155; border: none;") + panel_layout.addWidget(sep3) + + # 도움말 버튼 + help_btn = QPushButton("❓ 도움말") + help_btn.setCursor(Qt.PointingHandCursor) + help_btn.setToolTip("단축키 및 기능 설명 [F1]") + help_btn.clicked.connect(self._show_help) + help_btn.setStyleSheet(""" + QPushButton { + background-color: #334155; + color: #94a3b8; + border: none; + border-radius: 6px; + padding: 10px 8px; + font-size: 11px; + } + QPushButton:hover { + background-color: #475569; + color: #ffffff; + } + """) + panel_layout.addWidget(help_btn) + + layout.addWidget(panel) + + def _show_help(self): + """도움말 다이얼로그 표시""" + help_text = """ +

    📷 이미지 편집기 단축키

    + +

    🔧 도구 선택

    + + + + + + + + + +
    V선택/이동 도구
    R사각형
    E원/타원
    L직선
    A화살표
    T텍스트
    P자유선 (펜)
    Space / ESC선택 모드로 전환
    + +

    🎨 스타일

    + + + + + +
    1~8빠른 색상 선택
    [ 또는 -두께 감소
    ] 또는 +두께 증가
    S그림자 효과 토글
    + +

    📐 객체 조작

    + + + + + + + + +
    방향키선택 객체 1px 이동
    Shift+방향키선택 객체 10px 이동
    Delete선택 객체 삭제
    Ctrl+A모두 선택
    Ctrl+드래그객체 복사
    Alt+그리기정사각형/원 그리기
    우클릭컨텍스트 메뉴 (그룹/배치)
    + +

    🔍 보기

    + + + + + + + +
    Ctrl+휠확대/축소
    이전/다음 이미지
    더블클릭원본/맞춤 크기 토글
    0창 크기에 맞춤
    1원본 크기
    ← →이전/다음 이미지
    + +

    💾 파일

    + + + + + + +
    Ctrl+S저장
    Ctrl+Z실행 취소
    Ctrl+Y다시 실행
    ESC닫기 (선택 모드일 때)
    F1도움말
    + +

    🖱️ 마우스

    +
      +
    • 드래그: 도형 그리기 또는 객체 이동
    • +
    • 꼭지점 드래그: 도형 크기 조절
    • +
    • 중간 버튼 드래그: 화면 이동
    • +
    +""" + msg = QMessageBox(self) + msg.setWindowTitle("도움말") + msg.setTextFormat(Qt.RichText) + msg.setText(help_text) + msg.setStyleSheet(""" + QMessageBox { + background-color: #1e293b; + } + QMessageBox QLabel { + color: #f8fafc; + font-size: 11px; + } + QPushButton { + background-color: #3b82f6; + color: white; + border: none; + border-radius: 4px; + padding: 8px 16px; + } + QPushButton:hover { + background-color: #2563eb; + } + """) + msg.exec() + + def _get_cmd_btn_style(self, is_checked: bool) -> str: + """명령어 패널 버튼 스타일""" + if is_checked: + return """ + QPushButton { + background-color: #3b82f6; + color: #ffffff; + border: none; + border-radius: 4px; + padding: 8px 4px; + font-size: 10px; + } + """ + else: + return """ + QPushButton { + background-color: #334155; + color: #94a3b8; + border: none; + border-radius: 4px; + padding: 8px 4px; + font-size: 10px; + } + QPushButton:hover { + background-color: #475569; + color: #ffffff; + } + """ + + def _create_separator(self) -> QFrame: + """구분선 생성""" + sep = QFrame() + sep.setFixedWidth(1) + sep.setStyleSheet("background-color: #475569;") + return sep + + def _create_bottom_bar(self, layout: QVBoxLayout): + """하단 바 생성""" + bar = QWidget() + bar.setFixedHeight(50) + bar.setStyleSheet("background-color: #1a1a1a;") + + bar_layout = QHBoxLayout(bar) + bar_layout.setContentsMargins(16, 8, 16, 8) + + prev_btn = QPushButton("◀ 이전") + prev_btn.setCursor(Qt.PointingHandCursor) + prev_btn.clicked.connect(self.image_view.prev_image) + prev_btn.setStyleSheet(""" + QPushButton { + background-color: #334155; + color: #ffffff; + border: none; + border-radius: 6px; + padding: 8px 16px; + } + QPushButton:hover { + background-color: #475569; + } + """) + bar_layout.addWidget(prev_btn) + + bar_layout.addStretch() + + self.index_label = QLabel() + self.index_label.setStyleSheet("color: #94a3b8; font-size: 13px;") + bar_layout.addWidget(self.index_label) + + bar_layout.addStretch() + + next_btn = QPushButton("다음 ▶") + next_btn.setCursor(Qt.PointingHandCursor) + next_btn.clicked.connect(self.image_view.next_image) + next_btn.setStyleSheet(""" + QPushButton { + background-color: #334155; + color: #ffffff; + border: none; + border-radius: 6px; + padding: 8px 16px; + } + QPushButton:hover { + background-color: #475569; + } + """) + bar_layout.addWidget(next_btn) + + help_label = QLabel("휠: 이전/다음 | Ctrl+휠: 확대/축소 | Ctrl+Z: 실행취소 | 꼭지점 드래그: 크기조절") + help_label.setStyleSheet("color: #64748b; font-size: 11px; margin-left: 16px;") + bar_layout.addWidget(help_label) + + layout.addWidget(bar) + + def _update_info(self): + """정보 업데이트""" + if not self.images: + return + + current = self.image_view.current_index + total = len(self.images) + + info = self.image_view.get_current_image_info() + if info: + info_text = f"📷 {info.get('filename', '')} | " + if 'width' in info and 'height' in info: + info_text += f"🖼 {info['width']} × {info['height']} | " + if 'size' in info: + info_text += f"📦 {info['size']}" + self.info_label.setText(info_text) + + self.index_label.setText(f"{current + 1} / {total}") + + def _on_undo_redo_changed(self, can_undo: bool, can_redo: bool): + """Undo/Redo 상태 변경""" + self.undo_btn.setEnabled(can_undo) + self.redo_btn.setEnabled(can_redo) + + def _on_color_changed(self, color: QColor): + """색상 변경""" + self.image_view.pen_color = color + # 선택된 아이템도 업데이트 + self.image_view.update_selected_color(color) + + def _set_quick_color(self, color_hex: str): + """빠른 색상 설정""" + color = QColor(color_hex) + self.color_btn.set_color(color) + self.image_view.pen_color = color + # 선택된 아이템도 업데이트 + self.image_view.update_selected_color(color) + + def _on_width_changed(self, value: int): + """두께 변경""" + self.image_view.pen_width = value + # 선택된 아이템도 업데이트 + self.image_view.update_selected_width(value) + + def _on_font_changed(self, font_name: str): + """폰트 변경""" + font = QFont(font_name, self.font_size_spin.value()) + font.setBold(self.bold_btn.isChecked()) + font.setUnderline(self.underline_btn.isChecked()) + self.image_view.font = font + + # 선택된 텍스트 아이템 업데이트 + for item in self.image_view.scene.selectedItems(): + if isinstance(item, QGraphicsTextItem): + item.setFont(font) + + def _on_font_size_changed(self, size: int): + """폰트 크기 변경""" + font = QFont(self.font_combo.currentText(), size) + font.setBold(self.bold_btn.isChecked()) + font.setUnderline(self.underline_btn.isChecked()) + self.image_view.font = font + + # 선택된 텍스트 아이템 업데이트 + for item in self.image_view.scene.selectedItems(): + if isinstance(item, QGraphicsTextItem): + item.setFont(font) + + def _on_bold_toggled(self, checked: bool): + """굵게 토글""" + self.image_view.font_bold = checked + font = self.image_view.font + font.setBold(checked) + self.image_view.font = font + + # 선택된 텍스트 아이템 업데이트 + for item in self.image_view.scene.selectedItems(): + if isinstance(item, QGraphicsTextItem): + f = item.font() + f.setBold(checked) + item.setFont(f) + + def _on_underline_toggled(self, checked: bool): + """밑줄 토글""" + self.image_view.font_underline = checked + font = self.image_view.font + font.setUnderline(checked) + self.image_view.font = font + + # 선택된 텍스트 아이템 업데이트 + for item in self.image_view.scene.selectedItems(): + if isinstance(item, QGraphicsTextItem): + f = item.font() + f.setUnderline(checked) + item.setFont(f) + + def _set_outline_color(self, color_hex: Optional[str]): + """돋보이기(외곽선) 색상 설정""" + if color_hex: + self.image_view.text_outline_color = QColor(color_hex) + else: + self.image_view.text_outline_color = None + + # 선택된 텍스트 아이템에 외곽선 효과 적용 + for item in self.image_view.scene.selectedItems(): + if isinstance(item, OutlineTextItem): + outline_color = QColor(color_hex) if color_hex else None + item.set_outline_color(outline_color) + elif isinstance(item, QGraphicsTextItem): + # 기존 QGraphicsTextItem을 OutlineTextItem으로 교체 + pass # 현재는 건너뜀 + + def _on_shadow_toggled(self, checked: bool): + """그림자 효과 토글""" + self.image_view.use_shadow = checked + + def _on_edit_changed(self, can_undo: bool, can_redo: bool): + """편집 상태 변경""" + # 편집 내용이 있으면 저장 필요 + if can_undo or self.image_view.edit_items: + self._is_saved = False + + + def _set_save_mode(self, mode: str): + """저장 방식 설정""" + self.save_mode = mode + self.save_original_btn.setStyleSheet( + self._get_cmd_btn_style(mode == self.SAVE_ORIGINAL) + ) + self.save_copy_btn.setStyleSheet( + self._get_cmd_btn_style(mode == self.SAVE_COPY) + ) + + def _generate_default_filename(self) -> str: + """기본 파일명 생성 (레코드 정보 기반)""" + from datetime import date as date_type + + # 디버깅 로그 + logger.debug("record_info: %s", self.record_info) + + parts = [] + + # 날짜 (발생일자) + occurrence_date = self.record_info.get("occurrence_date") + if occurrence_date: + if isinstance(occurrence_date, date_type): + parts.append(f"({occurrence_date.strftime('%Y%m%d')})") + elif isinstance(occurrence_date, str): + # 문자열일 경우 그대로 사용 + parts.append(f"({occurrence_date.replace('-', '')})") + + # 열번 + column_number = self.record_info.get("column_number", "") + if column_number: + parts.append(f"제{column_number}열차") + + # 편성번호 + train_number = self.record_info.get("train_number", "") + if train_number: + parts.append(f"{train_number}편성") + + # 호차 + car_number = self.record_info.get("car_number", "") + if car_number: + parts.append(f"{car_number}호차") + + # 장치분류 + device_category = self.record_info.get("device_category", "") + if device_category: + parts.append(device_category) + + # 고장내용 (요약) + fault_content = self.record_info.get("fault_content", "") + if fault_content: + summary = self._summarize_fault_content(fault_content) + if summary: + parts.append(summary) + + if parts: + return " ".join(parts) + return "사진" + + def _summarize_fault_content(self, content: str) -> str: + """ + 고장내용 요약 (NLP 도입 전 임시 메서드) + + 추후 NLP(자연어처리)를 도입하여 고장내용을 분석하고 + 핵심 키워드를 추출하는 방식으로 개선 예정 + + Args: + content: 원본 고장내용 텍스트 + + Returns: + 요약된 텍스트 (현재는 앞 20자 반환) + """ + # TODO: NLP 도입 시 이 메서드를 개선 + # - 형태소 분석으로 핵심 명사 추출 + # - 고장 유형 키워드 매칭 + # - 위치 정보 추출 등 + + logger.debug("fault_content 원본: [%s]", content) + + if not content: + logger.debug("fault_content가 비어있음") + return "" + + # 현재는 단순히 앞부분만 사용 + max_len = 20 + if len(content) <= max_len: + result = content + else: + result = content[:max_len] + "..." + + logger.debug("fault_content 요약: [%s]", result) + return result + + def _get_save_path(self) -> str: + """저장 경로 결정""" + attachment = self.images[self.image_view.current_index] + full_path = attachment.get_full_path() + + if self.save_mode == self.SAVE_ORIGINAL: + # 원본 경로에 그대로 저장 + return str(full_path) + else: + # 사본: 기본 파일명으로 새 파일 생성 + default_name = self._generate_default_filename() + suffix = full_path.suffix + + # 같은 폴더에 여러 장이면 번호 붙이기 + base_path = full_path.parent / f"{default_name}{suffix}" + + if base_path.exists(): + # 번호 붙이기 + counter = 1 + while True: + numbered_path = full_path.parent / f"{default_name}_{counter}{suffix}" + if not numbered_path.exists(): + return str(numbered_path) + counter += 1 + + return str(base_path) + + def _save_image(self): + """이미지 저장""" + if not self.image_view.edit_items: + QMessageBox.information(self, "저장", "편집 내용이 없습니다.") + return + + save_path = self._get_save_path() + success = self.image_view.save_edited_image(save_path) + + if success: + self._is_saved = True + from pathlib import Path + save_path_obj = Path(save_path) + filename = save_path_obj.name + + # 썸네일 갱신 + self._regenerate_thumbnail(save_path_obj) + + QMessageBox.information( + self, + "저장 완료", + f"이미지가 저장되었습니다.\n\n{filename}" + ) + else: + QMessageBox.warning(self, "저장 실패", "이미지 저장에 실패했습니다.") + + def _regenerate_thumbnail(self, image_path): + """썸네일 재생성""" + from pathlib import Path + try: + from PIL import Image, ImageOps + + image_path = Path(image_path) + thumb_dir = image_path.parent / "thumbnails" + thumb_dir.mkdir(exist_ok=True) + thumb_path = thumb_dir / f"thumb_{image_path.name}" + + with Image.open(image_path) as img: + # EXIF 회전 정보 적용 + try: + img = ImageOps.exif_transpose(img) + except Exception: + pass + + # 썸네일 크기 (150x150) + img.thumbnail((150, 150), Image.Resampling.LANCZOS) + + # RGB로 변환 (PNG 알파 채널 처리) + if img.mode in ('RGBA', 'P'): + img = img.convert('RGB') + + img.save(thumb_path, 'JPEG', quality=85) + + logger.info("썸네일 갱신: %s", thumb_path) + except Exception as e: + logger.error("썸네일 갱신 실패: %s", e) + + def _ask_save_before_close(self) -> bool: + """닫기 전 저장 여부 확인. True면 닫아도 됨""" + if self._is_saved or not self.image_view.edit_items: + return True + + reply = QMessageBox.question( + self, + "저장 확인", + "편집 내용이 저장되지 않았습니다.\n저장하시겠습니까?", + QMessageBox.Save | QMessageBox.Discard | QMessageBox.Cancel, + QMessageBox.Save + ) + + if reply == QMessageBox.Save: + self._save_image() + return self._is_saved # 저장 성공 시에만 닫기 + elif reply == QMessageBox.Discard: + return True # 저장 안 하고 닫기 + else: + return False # 취소 - 닫지 않음 + + def closeEvent(self, event): + """닫기 이벤트""" + if self._ask_save_before_close(): + event.accept() + else: + event.ignore() + + def keyPressEvent(self, event: QKeyEvent): + """키 이벤트""" + modifiers = event.modifiers() + key = event.key() + + # Ctrl 단축키 + if modifiers == Qt.ControlModifier: + if key == Qt.Key_Z: + self.image_view.undo() + return + elif key == Qt.Key_Y: + self.image_view.redo() + return + elif key == Qt.Key_S: + self._save_image() + return + elif key == Qt.Key_A: + # 모두 선택 + for item in self.image_view.edit_items: + item.setSelected(True) + return + + # 선택된 객체가 있을 때 방향키로 이동 + selected = self.image_view.scene.selectedItems() + if selected and key in (Qt.Key_Left, Qt.Key_Right, Qt.Key_Up, Qt.Key_Down): + # Shift 누르면 10px, 아니면 1px + step = 10 if modifiers & Qt.ShiftModifier else 1 + dx, dy = 0, 0 + + if key == Qt.Key_Left: + dx = -step + elif key == Qt.Key_Right: + dx = step + elif key == Qt.Key_Up: + dy = -step + elif key == Qt.Key_Down: + dy = step + + for item in selected: + if item in self.image_view.edit_items: + item.moveBy(dx, dy) + return + + # Space 또는 ESC: 선택 모드로 전환 (편집 도구 사용 중일 때) + if key == Qt.Key_Space or key == Qt.Key_Escape: + if self.image_view.current_tool != EditTool.SELECT: + self.tool_buttons[EditTool.SELECT].setChecked(True) + self.image_view.set_tool(EditTool.SELECT) + return + elif key == Qt.Key_Escape: + self.close() + return + + # 일반 단축키 + if key == Qt.Key_Escape: + pass # 위에서 처리됨 + elif key == Qt.Key_Delete: + self.image_view.delete_selected() + # 두께 조절: [ ] 또는 숫자패드 +/- + elif key == Qt.Key_BracketRight or (key == Qt.Key_Plus and modifiers != Qt.ControlModifier): + # 두께 증가 + new_val = min(20, self.width_spin.value() + 1) + self.width_spin.setValue(new_val) + elif key == Qt.Key_BracketLeft or (key == Qt.Key_Minus and modifiers != Qt.ControlModifier): + # 두께 감소 + new_val = max(1, self.width_spin.value() - 1) + self.width_spin.setValue(new_val) + # 확대/축소: Ctrl + +/-는 위에서 처리 안함, 여기서는 이미지 없는 경우 대비 + elif key == Qt.Key_0: + self.image_view._fit_to_view() + elif key == Qt.Key_1: + self.image_view.show_original_size() + # 도구 선택 + elif key == Qt.Key_V: + self.tool_buttons[EditTool.SELECT].setChecked(True) + self.image_view.set_tool(EditTool.SELECT) + elif key == Qt.Key_R: + self.tool_buttons[EditTool.RECT].setChecked(True) + self.image_view.set_tool(EditTool.RECT) + elif key == Qt.Key_E: + self.tool_buttons[EditTool.ELLIPSE].setChecked(True) + self.image_view.set_tool(EditTool.ELLIPSE) + elif key == Qt.Key_L: + self.tool_buttons[EditTool.LINE].setChecked(True) + self.image_view.set_tool(EditTool.LINE) + elif key == Qt.Key_A and modifiers != Qt.ControlModifier: + self.tool_buttons[EditTool.ARROW].setChecked(True) + self.image_view.set_tool(EditTool.ARROW) + elif key == Qt.Key_T: + self.tool_buttons[EditTool.TEXT].setChecked(True) + self.image_view.set_tool(EditTool.TEXT) + elif key == Qt.Key_P: + self.tool_buttons[EditTool.FREEHAND].setChecked(True) + self.image_view.set_tool(EditTool.FREEHAND) + elif key == Qt.Key_S and modifiers != Qt.ControlModifier: + # 그림자 토글 (Ctrl+S는 저장) + self.shadow_btn.setChecked(not self.shadow_btn.isChecked()) + self._on_shadow_toggled(self.shadow_btn.isChecked()) + # 숫자 키로 색상 선택 (1-8) + elif key in (Qt.Key_1, Qt.Key_2, Qt.Key_3, Qt.Key_4, + Qt.Key_5, Qt.Key_6, Qt.Key_7, Qt.Key_8) and modifiers == Qt.NoModifier: + color_index = key - Qt.Key_1 # 0-7 + if 0 <= color_index < len(self.quick_colors): + color_hex = self.quick_colors[color_index][0] + self._set_quick_color(color_hex) + # 도움말 + elif key == Qt.Key_F1: + self._show_help() + # 이전/다음 이미지 (객체 선택 안 된 경우에만) + elif key == Qt.Key_Left: + self.image_view.prev_image() + elif key == Qt.Key_Right: + self.image_view.next_image() + else: + super().keyPressEvent(event) + + def mousePressEvent(self, event: QMouseEvent): + """마우스 누름 이벤트 (창 드래그)""" + if event.button() == Qt.LeftButton: + self._drag_pos = event.globalPosition().toPoint() - self.frameGeometry().topLeft() + super().mousePressEvent(event) + + def mouseMoveEvent(self, event: QMouseEvent): + """마우스 이동 이벤트""" + if event.buttons() == Qt.LeftButton and hasattr(self, '_drag_pos'): + self.move(event.globalPosition().toPoint() - self._drag_pos) + super().mouseMoveEvent(event) diff --git a/ui/dialogs/input_dialog.py b/ui/dialogs/input_dialog.py new file mode 100644 index 0000000..0534316 --- /dev/null +++ b/ui/dialogs/input_dialog.py @@ -0,0 +1,82 @@ +# -*- coding: utf-8 -*- +""" +입력 다이얼로그 모듈 +섹션 데이터 입력을 위한 기본 다이얼로그입니다. +""" + +from PySide6.QtWidgets import QWidget + +from ui.base.base_dialog import BaseDialog +from database.models import BaseModel +from core.config import ConfigManager +from core.logger import get_logger + +logger = get_logger(__name__) + + +class InputDialog(BaseDialog): + """ + 기본 입력 다이얼로그 + + 데이터 입력을 위한 기본 다이얼로그입니다. + """ + + def __init__( + self, + parent=None, + title: str = "입력", + width: int = 400, + height: int = 600 + ): + super().__init__(parent, title=title, width=width, height=height) + + # 확인/취소 버튼 + self.add_confirm_cancel_buttons() + + +class SectionInputDialog(InputDialog): + """ + 섹션 입력 다이얼로그 + + 섹션 데이터 입력을 위한 다이얼로그입니다. + """ + + def __init__( + self, + parent=None, + title: str = "입력", + record: BaseModel = None, + width: int = 400, + height: int = 600 + ): + super().__init__(parent, title=title, width=width, height=height) + + self.record = record + self.config = ConfigManager() + + def get_data(self) -> dict: + """ + 입력 데이터 반환 (자식 클래스에서 오버라이드) + + Returns: + 입력 데이터 딕셔너리 + """ + return {} + + def validate(self) -> bool: + """ + 입력 유효성 검사 (자식 클래스에서 오버라이드) + + Returns: + 유효 여부 + """ + return True + + def _on_confirm(self): + """확인 버튼 클릭""" + if self.validate(): + super()._on_confirm() + else: + self.signals.status_message.emit("필수 항목을 입력해주세요.", 3000) + + diff --git a/ui/dialogs/login_dialog.py b/ui/dialogs/login_dialog.py new file mode 100644 index 0000000..88f1984 --- /dev/null +++ b/ui/dialogs/login_dialog.py @@ -0,0 +1,102 @@ +# -*- coding: utf-8 -*- +""" +로그인 다이얼로그 모듈 +사용자 로그인을 위한 다이얼로그입니다. +""" + +from PySide6.QtWidgets import QLabel +from PySide6.QtCore import Qt +from PySide6.QtGui import QFont + +from ui.base.base_dialog import BaseDialog +from ui.components.custom_input import CustomLineEdit, LabeledInput +from ui.components.toggle_switch import LabeledToggle +from services.auth_service import AuthService +from core.exceptions import InvalidCredentialsError, UserNotActiveError +from core.logger import get_logger + +logger = get_logger(__name__) + + +class LoginDialog(BaseDialog): + """ + 로그인 다이얼로그 + + 사용자 인증을 위한 다이얼로그입니다. + """ + + def __init__(self, parent=None): + super().__init__(parent, title="로그인", width=380, height=320) + + self.auth = AuthService() + + self._setup_fields() + self.add_confirm_cancel_buttons("로그인", "취소") + + def _setup_fields(self): + """필드 설정""" + # 안내 메시지 + info = QLabel("아이디와 비밀번호를 입력하세요.") + info.setFont(QFont("GmarketSans", 12)) + info.setAlignment(Qt.AlignCenter) + self.content_layout.addWidget(info) + + self.content_layout.addSpacing(12) + + # 아이디 + self.username_input = CustomLineEdit(placeholder="아이디") + self.content_layout.addWidget( + LabeledInput("아이디", self.username_input, required=True) + ) + + # 비밀번호 + self.password_input = CustomLineEdit(placeholder="비밀번호") + self.password_input.setEchoMode(CustomLineEdit.Password) + self.content_layout.addWidget( + LabeledInput("비밀번호", self.password_input, required=True) + ) + + # 로그인 유지 + self.remember_toggle = LabeledToggle("로그인 유지", initial_state=True) + self.content_layout.addWidget(self.remember_toggle) + + # 오류 메시지 + self.error_label = QLabel("") + self.error_label.setStyleSheet("color: #ef4444;") + self.error_label.setAlignment(Qt.AlignCenter) + self.error_label.hide() + self.content_layout.addWidget(self.error_label) + + self.content_layout.addStretch() + + def _on_confirm(self): + """로그인 버튼 클릭""" + username = self.username_input.text().strip() + password = self.password_input.text() + + if not username or not password: + self._show_error("아이디와 비밀번호를 입력하세요.") + return + + try: + self.auth.login(username, password) + + # 로그인 유지 설정 + self.config.set('user', 'remember_login', self.remember_toggle.is_on) + self.config.save() + + self.accept() + + except InvalidCredentialsError: + self._show_error("아이디 또는 비밀번호가 올바르지 않습니다.") + except UserNotActiveError: + self._show_error("비활성화된 계정입니다.") + except Exception as e: + self._show_error(f"로그인 실패: {e}") + + def _show_error(self, message: str): + """오류 메시지 표시""" + self.error_label.setText(message) + self.error_label.show() + + diff --git a/ui/dialogs/memo_input_dialog.py b/ui/dialogs/memo_input_dialog.py new file mode 100644 index 0000000..999c7f8 --- /dev/null +++ b/ui/dialogs/memo_input_dialog.py @@ -0,0 +1,66 @@ +# -*- coding: utf-8 -*- +""" +메모 입력 다이얼로그 모듈 +메모 입력을 위한 다이얼로그입니다. +""" + +from datetime import date + +from ui.base.base_dialog import BaseDialog +from ui.components.custom_input import CustomTextEdit, LabeledInput +from database.models import Memo +from core.logger import get_logger + +logger = get_logger(__name__) + + +class MemoInputDialog(BaseDialog): + """ + 메모 입력 다이얼로그 + + 메모 내용을 입력합니다. + """ + + def __init__( + self, + parent=None, + memo_date: date = None, + memo: Memo = None + ): + title = "메모 추가" if memo is None else "메모 편집" + super().__init__(parent, title=title, width=450, height=350) + + self.memo_date = memo_date or date.today() + self.memo = memo + + self._setup_fields() + self.add_confirm_cancel_buttons() + + if memo: + self._load_memo(memo) + + def _setup_fields(self): + """필드 설정""" + # 내용 + self.content_input = CustomTextEdit( + placeholder="메모 내용을 입력하세요", + min_height=150 + ) + self.content_layout.addWidget( + LabeledInput("메모", self.content_input, required=True) + ) + + self.content_layout.addStretch() + + def _load_memo(self, memo: Memo): + """메모 데이터 로드""" + self.content_input.set_text(memo.content or "") + + def get_data(self) -> dict: + """입력 데이터 반환""" + return { + "memo_date": self.memo_date.isoformat(), + "content": self.content_input.get_text(), + } + + diff --git a/ui/dialogs/report_writer_dialog.py b/ui/dialogs/report_writer_dialog.py new file mode 100644 index 0000000..d3d2ae2 --- /dev/null +++ b/ui/dialogs/report_writer_dialog.py @@ -0,0 +1,346 @@ +# -*- coding: utf-8 -*- +""" +보고서 작성 모듈 +원본 파일과 새 파일을 좌우로 배치하여 한글 프로그램을 실행합니다. +파일 수정 여부를 MD5 해시로 확인하여 미수정 파일은 자동 삭제합니다. +""" + +import os +import shutil +import hashlib +import ctypes +import subprocess +import time +from pathlib import Path +from datetime import datetime +from typing import List, Tuple + +from PySide6.QtCore import Signal, QObject, QThread + +from services.storage_service import REPORTS_DIR +from core.logger import get_logger + +logger = get_logger(__name__) + +# Windows API +try: + import win32gui + import win32con + WIN32_AVAILABLE = True +except ImportError: + WIN32_AVAILABLE = False + logger.warning("pywin32가 설치되어 있지 않습니다.") + + +def calculate_file_hash(file_path: Path) -> str: + """파일의 MD5 해시 계산""" + if not file_path.exists(): + return "" + + hash_md5 = hashlib.md5() + with open(file_path, "rb") as f: + for chunk in iter(lambda: f.read(4096), b""): + hash_md5.update(chunk) + return hash_md5.hexdigest() + + +def get_screen_size() -> Tuple[int, int]: + """화면 크기 가져오기""" + user32 = ctypes.windll.user32 + width = user32.GetSystemMetrics(0) + height = user32.GetSystemMetrics(1) + return width, height + + +def open_file(file_path: str): + """파일 열기 (시스템 기본 프로그램)""" + if Path(file_path).exists(): + os.startfile(file_path) + + +def get_hwp_windows() -> List[int]: + """현재 열린 한글 창 목록 가져오기""" + if not WIN32_AVAILABLE: + return [] + + windows = [] + + def enum_callback(hwnd, results): + if win32gui.IsWindowVisible(hwnd): + class_name = win32gui.GetClassName(hwnd) + title = win32gui.GetWindowText(hwnd) + # 한글 창 클래스명 패턴 + if any(x in class_name for x in ['Hwp', 'HNC', 'Hnc']) or \ + any(x in title for x in ['.hwp', '.HWP', '한글', '한컴']): + results.append(hwnd) + return True + + try: + win32gui.EnumWindows(enum_callback, windows) + except Exception: + pass + + return windows + + +def move_window(hwnd: int, x: int, y: int, width: int, height: int): + """창 위치 및 크기 조정""" + if not WIN32_AVAILABLE: + return + + try: + # 최대화 상태 해제 + win32gui.ShowWindow(hwnd, win32con.SW_RESTORE) + time.sleep(0.1) + + # 위치 및 크기 조정 + win32gui.SetWindowPos( + hwnd, + win32con.HWND_TOP, + x, y, width, height, + win32con.SWP_SHOWWINDOW + ) + except Exception as e: + logger.error(f"창 이동 실패: {e}") + + +class WindowArrangeThread(QThread): + """창 배치를 위한 백그라운드 스레드""" + + finished = Signal() + + def __init__(self, before_windows: List[int], parent=None): + super().__init__(parent) + self.before_windows = set(before_windows) + self.screen_width, self.screen_height = get_screen_size() + + def run(self): + """새로 열린 창 2개를 찾아서 좌우로 배치""" + half_width = self.screen_width // 2 + + # 최대 10초 동안 새 창 2개가 열릴 때까지 대기 + new_windows = [] + for _ in range(20): # 0.5초 * 20 = 10초 + time.sleep(0.5) + + current_windows = get_hwp_windows() + new_windows = [w for w in current_windows if w not in self.before_windows] + + if len(new_windows) >= 2: + break + + # 찾은 창들 배치 + if len(new_windows) >= 2: + # 첫 번째 창 (먼저 열린 것) -> 왼쪽 + move_window(new_windows[0], 0, 0, half_width, self.screen_height) + time.sleep(0.2) + + # 두 번째 창 (나중에 열린 것) -> 오른쪽 + move_window(new_windows[1], half_width, 0, half_width, self.screen_height) + + logger.info(f"창 배치 완료: 왼쪽={new_windows[0]}, 오른쪽={new_windows[1]}") + elif len(new_windows) == 1: + # 창이 하나만 열린 경우 (같은 프로세스에서 2개 탭으로 열릴 수 있음) + logger.warning("한글 창이 1개만 감지됨. 탭으로 열렸을 수 있습니다.") + else: + logger.warning("새로 열린 한글 창을 찾지 못했습니다.") + + self.finished.emit() + + +class ReportWriter(QObject): + """보고서 작성기 + + 원본 파일은 화면 왼쪽 절반에, 새 파일은 오른쪽 절반에 배치하여 + 두 개의 한글 프로그램을 동시에 실행합니다. + """ + + # 보고서 작성 완료 시그널 + report_saved = Signal(str) + + def __init__( + self, + template_path: str, + device_category: str = "", + record_info: dict = None + ): + super().__init__() + + self.template_path = template_path + self.device_category = device_category + self.record_info = record_info or {} + + self._current_new_report_path: Path = None + self._original_hash: str = "" + self._arrange_thread: WindowArrangeThread = None + + def _get_category_folder(self) -> Path: + """장치분류 폴더 경로 반환""" + category = self._match_category(self.device_category) + return REPORTS_DIR / category + + def _match_category(self, device_category: str) -> str: + """장치분류 매칭""" + from services.storage_service import REPORT_CATEGORIES + + if not device_category: + return "17.기타" + + for cat in REPORT_CATEGORIES: + if cat == device_category: + return cat + + try: + num = int(device_category.lstrip('0')) + for cat in REPORT_CATEGORIES: + cat_num = int(cat.split('.')[0]) + if cat_num == num: + return cat + except ValueError: + pass + + for cat in REPORT_CATEGORIES: + if device_category in cat: + return cat + + return "17.기타" + + def _generate_new_report_filename(self) -> str: + """새 보고서 파일명 생성""" + today_str = datetime.now().strftime("%Y%m%d") + + train_no = self.record_info.get("train_no", "") + train_number = self.record_info.get("train_number", "") + car_number = self.record_info.get("car_number", "") + fault_content = self.record_info.get("fault_content", "") + + parts = [f"({today_str})1호선"] + + if train_no: + parts.append(f"제{train_no}열차") + + if train_number: + parts.append(f"{train_number}편성") + + if car_number: + parts.append(f"{car_number}호차") + + if fault_content: + summary = fault_content[:30].strip() + parts.append(summary) + + template_name = Path(self.template_path).stem.lower() + if "동향" in template_name: + parts.append("동향보고") + elif "조치결과" in template_name: + parts.append("조치결과보고") + elif "분석" in template_name: + parts.append("분석보고") + else: + parts.append("동향보고") + + filename = " ".join(parts) + + invalid_chars = '<>:"/\\|?*' + for char in invalid_chars: + filename = filename.replace(char, '') + + return filename + + def start_writing(self) -> bool: + """보고서 작성 시작 - 두 개의 한글 창을 좌우로 배치""" + if not self.template_path or not Path(self.template_path).exists(): + logger.error("템플릿 파일이 존재하지 않습니다.") + return False + + # 파일명 생성 + new_filename = self._generate_new_report_filename() + if not new_filename.lower().endswith(('.hwp', '.hwpx')): + new_filename += '.hwp' + + # 저장 경로 + category_folder = self._get_category_folder() + category_folder.mkdir(parents=True, exist_ok=True) + + new_file_path = category_folder / new_filename + + # 파일 복사 + try: + shutil.copy2(self.template_path, new_file_path) + self._current_new_report_path = new_file_path + self._original_hash = calculate_file_hash(new_file_path) + logger.info(f"새 보고서 파일 생성: {new_file_path}") + except Exception as e: + logger.error(f"파일 복사 실패: {e}") + return False + + # 현재 열린 한글 창 목록 저장 (나중에 새 창 구분용) + before_windows = get_hwp_windows() + + # 원본 파일 열기 + subprocess.Popen(['cmd', '/c', 'start', '', self.template_path], shell=False) + + # 약간 대기 후 새 파일 열기 + time.sleep(0.5) + subprocess.Popen(['cmd', '/c', 'start', '', str(new_file_path)], shell=False) + + # 백그라운드에서 창 배치 + self._arrange_thread = WindowArrangeThread(before_windows) + self._arrange_thread.start() + + return True + + def is_file_modified(self) -> bool: + """파일이 수정되었는지 확인 (MD5 해시 비교)""" + if not self._current_new_report_path or not self._current_new_report_path.exists(): + return False + + if not self._original_hash: + return True + + current_hash = calculate_file_hash(self._current_new_report_path) + return current_hash != self._original_hash + + def cleanup_if_unmodified(self) -> bool: + """수정되지 않은 파일 삭제. 삭제되면 True 반환""" + if self._current_new_report_path and self._current_new_report_path.exists(): + if not self.is_file_modified(): + try: + self._current_new_report_path.unlink() + logger.info(f"미수정 파일 삭제: {self._current_new_report_path}") + return True + except Exception as e: + logger.error(f"파일 삭제 실패: {e}") + return False + + def get_new_file_path(self) -> Path: + """새 파일 경로 반환""" + return self._current_new_report_path + + +def start_report_writing( + template_path: str, + device_category: str = "", + record_info: dict = None +) -> ReportWriter: + """보고서 작성 시작 (간편 함수) + + 원본 파일과 새 파일을 좌우로 배치하여 한글을 실행합니다. + + Args: + template_path: 템플릿 파일 경로 + device_category: 장치분류 + record_info: 레코드 정보 (파일명 생성용) + + Returns: + ReportWriter 인스턴스 (나중에 수정 여부 확인용) + """ + writer = ReportWriter( + template_path=template_path, + device_category=device_category, + record_info=record_info + ) + + writer.start_writing() + + return writer diff --git a/ui/dialogs/settings_dialog.py b/ui/dialogs/settings_dialog.py new file mode 100644 index 0000000..9c2923d --- /dev/null +++ b/ui/dialogs/settings_dialog.py @@ -0,0 +1,875 @@ +# -*- coding: utf-8 -*- +""" +설정 다이얼로그 모듈 +환경설정을 위한 다이얼로그입니다. +""" + +from PySide6.QtWidgets import ( + QWidget, QVBoxLayout, QHBoxLayout, QTabWidget, + QLabel, QFrame, QScrollArea, QSpinBox, QComboBox, + QGridLayout, QGroupBox, QPushButton, QTableWidget, + QTableWidgetItem, QHeaderView +) +from PySide6.QtCore import Qt +from PySide6.QtGui import QFont, QColor + +from ui.base.base_dialog import BaseDialog +from ui.components.custom_input import CustomLineEdit, CustomComboBox, LabeledInput +from ui.components.toggle_switch import LabeledToggle +from ui.components.custom_button import CustomButton +from core.config import ConfigManager +from core.signals import GlobalSignals +from core.constants import FONT_FAMILY +from core.logger import get_logger + +logger = get_logger(__name__) + + +# 사용 가능한 폰트 목록 +AVAILABLE_FONTS = [ + "GmarketSans", + "Pretendard", + "Noto Sans KR", + "Spoqa Han Sans Neo", + "맑은 고딕", + "나눔고딕", + "Arial", + "Segoe UI", +] + +# 폰트 굵기 옵션 +FONT_WEIGHTS = ["normal", "medium", "bold"] + + +class FontSettingRow(QWidget): + """폰트 설정 행 위젯""" + + def __init__( + self, + label: str, + initial_family: str = FONT_FAMILY, + initial_size: int = 13, + initial_weight: str = "normal", + parent=None + ): + super().__init__(parent) + + self.config = ConfigManager() + theme = self.config.theme + is_dark = theme == 'dark' + + layout = QHBoxLayout(self) + layout.setContentsMargins(0, 4, 0, 4) + layout.setSpacing(8) + + # 레이블 + self.label = QLabel(label) + self.label.setFont(QFont("GmarketSans", 12)) + self.label.setFixedWidth(100) + self.label.setStyleSheet(f"color: {'#f8fafc' if is_dark else '#1e293b'};") + layout.addWidget(self.label) + + # 폰트 패밀리 + self.family_combo = QComboBox() + self.family_combo.addItems(AVAILABLE_FONTS) + self.family_combo.setCurrentText(initial_family) + self.family_combo.setFixedWidth(150) + self.family_combo.setFont(QFont("GmarketSans", 11)) + layout.addWidget(self.family_combo) + + # 폰트 크기 + self.size_spin = QSpinBox() + self.size_spin.setRange(8, 32) + self.size_spin.setValue(initial_size) + self.size_spin.setSuffix("px") + self.size_spin.setFixedWidth(70) + self.size_spin.setFont(QFont("GmarketSans", 11)) + layout.addWidget(self.size_spin) + + # 폰트 굵기 + self.weight_combo = QComboBox() + self.weight_combo.addItems(FONT_WEIGHTS) + self.weight_combo.setCurrentText(initial_weight) + self.weight_combo.setFixedWidth(80) + self.weight_combo.setFont(QFont("GmarketSans", 11)) + layout.addWidget(self.weight_combo) + + layout.addStretch() + + self._apply_style() + + def _apply_style(self): + """스타일 적용""" + theme = self.config.theme + + if theme == 'dark': + bg = "#1e293b" + text = "#f8fafc" + border = "#475569" + else: + bg = "#ffffff" + text = "#1e293b" + border = "#e2e8f0" + + style = f""" + QComboBox, QSpinBox {{ + background-color: {bg}; + color: {text}; + border: 1px solid {border}; + border-radius: 6px; + padding: 4px 8px; + }} + QComboBox:hover, QSpinBox:hover {{ + border-color: #3b82f6; + }} + QComboBox::drop-down {{ + border: none; + width: 20px; + }} + QComboBox QAbstractItemView {{ + background-color: {bg}; + color: {text}; + border: 1px solid {border}; + selection-background-color: #3b82f6; + }} + """ + self.setStyleSheet(style) + + def get_values(self): + """현재 값 반환""" + return { + "family": self.family_combo.currentText(), + "size": self.size_spin.value(), + "weight": self.weight_combo.currentText(), + } + + def set_values(self, family: str, size: int, weight: str): + """값 설정""" + self.family_combo.setCurrentText(family) + self.size_spin.setValue(size) + self.weight_combo.setCurrentText(weight) + + +class SettingsDialog(BaseDialog): + """ + 설정 다이얼로그 + + 애플리케이션 환경설정을 위한 다이얼로그입니다. + """ + + def __init__(self, parent=None): + super().__init__(parent, title="환경설정", width=700, height=600, resizable=True) + + self._font_settings = {} # 영역별 폰트 설정 위젯 저장 + + self._setup_tabs() + self.add_confirm_cancel_buttons("저장", "취소") + + def _setup_tabs(self): + """탭 설정""" + self.tabs = QTabWidget() + self.tabs.setFont(QFont("GmarketSans", 12)) + + # 일반 탭 + self.tabs.addTab(self._create_general_tab(), "일반") + + # 레이아웃 탭 + self.tabs.addTab(self._create_layout_tab(), "레이아웃") + + # UI 폰트 탭 + self.tabs.addTab(self._create_font_tab(), "폰트 설정") + + # 편성 설정 탭 + self.tabs.addTab(self._create_train_tab(), "편성 설정") + + # 날씨 탭 + self.tabs.addTab(self._create_weather_tab(), "날씨") + + # 스타일 적용 + theme = self.config.theme + if theme == 'dark': + self.tabs.setStyleSheet(""" + QTabWidget::pane { + border: 1px solid #334155; + border-radius: 8px; + background-color: #1e293b; + } + QTabBar::tab { + background-color: #1e293b; + color: #94a3b8; + padding: 8px 16px; + border-top-left-radius: 6px; + border-top-right-radius: 6px; + } + QTabBar::tab:selected { + background-color: #334155; + color: #f8fafc; + } + """) + else: + self.tabs.setStyleSheet(""" + QTabWidget::pane { + border: 1px solid #e2e8f0; + border-radius: 8px; + background-color: #ffffff; + } + QTabBar::tab { + background-color: #f1f5f9; + color: #64748b; + padding: 8px 16px; + border-top-left-radius: 6px; + border-top-right-radius: 6px; + } + QTabBar::tab:selected { + background-color: #ffffff; + color: #1e293b; + } + """) + + self.content_layout.addWidget(self.tabs) + + def _create_general_tab(self) -> QWidget: + """일반 탭 생성""" + tab = QWidget() + layout = QVBoxLayout(tab) + layout.setContentsMargins(16, 16, 16, 16) + layout.setSpacing(16) + + # 테마 + themes = ["다크", "라이트"] + self.theme_combo = CustomComboBox(items=themes) + current_theme = "다크" if self.config.theme == 'dark' else "라이트" + self.theme_combo.set_selected_value(current_theme) + layout.addWidget(LabeledInput("테마", self.theme_combo)) + + # 자동 저장 + self.auto_save_toggle = LabeledToggle( + "자동 저장", + initial_state=self.config.get('app', 'auto_save', True) + ) + layout.addWidget(self.auto_save_toggle) + + # 업데이트 확인 + self.update_toggle = LabeledToggle( + "업데이트 자동 확인", + initial_state=self.config.get('app', 'check_updates', True) + ) + layout.addWidget(self.update_toggle) + + layout.addStretch() + return tab + + def _create_layout_tab(self) -> QWidget: + """레이아웃 탭 생성""" + tab = QWidget() + layout = QVBoxLayout(tab) + layout.setContentsMargins(16, 16, 16, 16) + layout.setSpacing(16) + + # 섹션/Todo 비율 + info = QLabel("섹션 패널과 Todo 패널의 비율을 설정합니다.\n드래그로도 조절할 수 있습니다.") + info.setFont(QFont("GmarketSans", 11)) + info.setWordWrap(True) + + theme = self.config.theme + info.setStyleSheet(f"color: {'#94a3b8' if theme == 'dark' else '#64748b'};") + layout.addWidget(info) + + # 섹션 비율 + self.section_ratio_input = CustomLineEdit( + placeholder="70" + ) + self.section_ratio_input.setText( + str(int(self.config.get('layout', 'section_panel_ratio', 70))) + ) + layout.addWidget(LabeledInput("섹션 패널 비율 (%)", self.section_ratio_input)) + + layout.addStretch() + return tab + + def _create_font_tab(self) -> QWidget: + """UI 폰트 설정 탭 생성""" + tab = QWidget() + main_layout = QVBoxLayout(tab) + main_layout.setContentsMargins(8, 8, 8, 8) + main_layout.setSpacing(8) + + # 스크롤 영역 + scroll = QScrollArea() + scroll.setWidgetResizable(True) + scroll.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) + + content = QWidget() + layout = QVBoxLayout(content) + layout.setContentsMargins(8, 8, 8, 8) + layout.setSpacing(16) + + theme = self.config.theme + is_dark = theme == 'dark' + + # 설명 + info = QLabel("각 UI 영역별 폰트를 설정합니다.") + info.setFont(QFont("GmarketSans", 11)) + info.setStyleSheet(f"color: {'#94a3b8' if is_dark else '#64748b'};") + layout.addWidget(info) + + # 영역별 폰트 설정 + font_areas = [ + ("인포바", [ + ("info_bar", "title", "제목"), + ("info_bar", "content", "내용"), + ]), + ("섹션 (지시/고장/작업/기타)", [ + ("section", "title", "제목"), + ("section", "header", "테이블 헤더"), + ("section", "content", "테이블 내용"), + ]), + ("할일 목록", [ + ("todo", "title", "제목"), + ("todo", "content", "내용"), + ]), + ("메모", [ + ("memo", "title", "제목"), + ("memo", "content", "내용"), + ]), + ("일상검수", [ + ("daily", "title", "제목"), + ("daily", "content", "내용"), + ("daily", "train", "편성번호"), + ]), + ("상태바", [ + ("status", "content", "내용"), + ]), + ("다이얼로그", [ + ("dialog", "title", "제목"), + ("dialog", "label", "레이블"), + ("dialog", "input", "입력"), + ("dialog", "button", "버튼"), + ]), + ] + + for area_name, settings in font_areas: + group = QGroupBox(area_name) + group.setFont(QFont("GmarketSans", 12, QFont.Bold)) + + if is_dark: + group.setStyleSheet(""" + QGroupBox { + color: #f8fafc; + border: 1px solid #334155; + border-radius: 8px; + margin-top: 12px; + padding-top: 8px; + } + QGroupBox::title { + subcontrol-origin: margin; + left: 12px; + padding: 0 6px; + } + """) + else: + group.setStyleSheet(""" + QGroupBox { + color: #1e293b; + border: 1px solid #e2e8f0; + border-radius: 8px; + margin-top: 12px; + padding-top: 8px; + } + QGroupBox::title { + subcontrol-origin: margin; + left: 12px; + padding: 0 6px; + } + """) + + group_layout = QVBoxLayout(group) + group_layout.setContentsMargins(12, 16, 12, 12) + group_layout.setSpacing(4) + + for area, style, label in settings: + # 현재 설정값 가져오기 + current = self.config.get_ui_font(area, style) + + row = FontSettingRow( + label, + initial_family=current.get("family", FONT_FAMILY), + initial_size=current.get("size", 13), + initial_weight=current.get("weight", "normal"), + ) + group_layout.addWidget(row) + + # 저장을 위해 참조 보관 + key = f"{area}_{style}" + self._font_settings[key] = row + + layout.addWidget(group) + + layout.addStretch() + + # 초기화 버튼 + reset_btn = CustomButton("폰트 설정 초기화", style_type="secondary") + reset_btn.clicked.connect(self._reset_font_settings) + layout.addWidget(reset_btn) + + scroll.setWidget(content) + + # 스크롤바 스타일 + if is_dark: + scroll.setStyleSheet(""" + QScrollArea { + border: none; + background-color: #1e293b; + } + QScrollBar:vertical { + background-color: #1e293b; + width: 10px; + border-radius: 5px; + } + QScrollBar::handle:vertical { + background-color: #475569; + border-radius: 5px; + min-height: 30px; + } + QScrollBar::handle:vertical:hover { + background-color: #64748b; + } + QScrollBar::add-line:vertical, QScrollBar::sub-line:vertical { + height: 0px; + } + """) + else: + scroll.setStyleSheet(""" + QScrollArea { + border: none; + background-color: #ffffff; + } + QScrollBar:vertical { + background-color: #f1f5f9; + width: 10px; + border-radius: 5px; + } + QScrollBar::handle:vertical { + background-color: #cbd5e1; + border-radius: 5px; + min-height: 30px; + } + QScrollBar::handle:vertical:hover { + background-color: #94a3b8; + } + QScrollBar::add-line:vertical, QScrollBar::sub-line:vertical { + height: 0px; + } + """) + + main_layout.addWidget(scroll) + return tab + + def _create_train_tab(self) -> QWidget: + """편성 설정 탭 생성""" + tab = QWidget() + main_layout = QVBoxLayout(tab) + main_layout.setContentsMargins(16, 16, 16, 16) + main_layout.setSpacing(12) + + theme = self.config.theme + is_dark = theme == 'dark' + text_color = "#f8fafc" if is_dark else "#1e293b" + sub_color = "#94a3b8" if is_dark else "#64748b" + + # 설명 + info = QLabel("각 편성의 차량 유형을 설정합니다.\nA: 구형차량 (파란색), B: 신형차량 (주황색)") + info.setFont(QFont("GmarketSans", 11)) + info.setStyleSheet(f"color: {sub_color};") + info.setWordWrap(True) + main_layout.addWidget(info) + + # 일괄 설정 버튼 + btn_container = QWidget() + btn_layout = QHBoxLayout(btn_container) + btn_layout.setContentsMargins(0, 0, 0, 0) + btn_layout.setSpacing(8) + + all_a_btn = QPushButton("전체 A(구형)") + all_a_btn.setFont(QFont("GmarketSans", 11)) + all_a_btn.setCursor(Qt.PointingHandCursor) + all_a_btn.clicked.connect(lambda: self._set_all_trains('A')) + all_a_btn.setStyleSheet(f""" + QPushButton {{ + background-color: #3b82f6; + color: white; + border: none; + border-radius: 6px; + padding: 8px 16px; + }} + QPushButton:hover {{ + background-color: #2563eb; + }} + """) + btn_layout.addWidget(all_a_btn) + + all_b_btn = QPushButton("전체 B(신형)") + all_b_btn.setFont(QFont("GmarketSans", 11)) + all_b_btn.setCursor(Qt.PointingHandCursor) + all_b_btn.clicked.connect(lambda: self._set_all_trains('B')) + all_b_btn.setStyleSheet(f""" + QPushButton {{ + background-color: #f97316; + color: white; + border: none; + border-radius: 6px; + padding: 8px 16px; + }} + QPushButton:hover {{ + background-color: #ea580c; + }} + """) + btn_layout.addWidget(all_b_btn) + + reset_btn = QPushButton("기본값으로 초기화") + reset_btn.setFont(QFont("GmarketSans", 11)) + reset_btn.setCursor(Qt.PointingHandCursor) + reset_btn.clicked.connect(self._reset_train_settings) + reset_btn.setStyleSheet(f""" + QPushButton {{ + background-color: {'#334155' if is_dark else '#e2e8f0'}; + color: {text_color}; + border: none; + border-radius: 6px; + padding: 8px 16px; + }} + QPushButton:hover {{ + background-color: {'#475569' if is_dark else '#cbd5e1'}; + }} + """) + btn_layout.addWidget(reset_btn) + + btn_layout.addStretch() + main_layout.addWidget(btn_container) + + # 편성 테이블 + self.train_table = QTableWidget() + self.train_table.setColumnCount(6) + self.train_table.setHorizontalHeaderLabels(["편성", "유형", "표시", "편성", "유형", "표시"]) + self.train_table.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch) + self.train_table.verticalHeader().setVisible(False) + self.train_table.setSelectionMode(QTableWidget.NoSelection) + self.train_table.setEditTriggers(QTableWidget.NoEditTriggers) + + # 테이블 스타일 + if is_dark: + self.train_table.setStyleSheet(""" + QTableWidget { + background-color: #1e293b; + color: #f8fafc; + border: 1px solid #334155; + border-radius: 8px; + gridline-color: #334155; + } + QTableWidget::item { + padding: 4px; + } + QHeaderView::section { + background-color: #334155; + color: #f8fafc; + padding: 8px; + border: none; + font-weight: bold; + } + """) + else: + self.train_table.setStyleSheet(""" + QTableWidget { + background-color: #ffffff; + color: #1e293b; + border: 1px solid #e2e8f0; + border-radius: 8px; + gridline-color: #e2e8f0; + } + QTableWidget::item { + padding: 4px; + } + QHeaderView::section { + background-color: #f1f5f9; + color: #1e293b; + padding: 8px; + border: none; + font-weight: bold; + } + """) + + # 테이블 데이터 채우기 + self._load_train_table() + + main_layout.addWidget(self.train_table, 1) + + return tab + + def _load_train_table(self): + """편성 테이블 데이터 로드""" + train_config = self.config.settings.train + + # 51개 편성을 2열로 표시 (왼쪽 26개, 오른쪽 25개) + rows = 26 + self.train_table.setRowCount(rows) + + for row in range(rows): + # 왼쪽 열 (1~26편성) + train_num = row + 1 + if train_num <= 51: + self._set_train_row(row, 0, train_num, train_config) + + # 오른쪽 열 (27~51편성) + train_num = row + 27 + if train_num <= 51: + self._set_train_row(row, 3, train_num, train_config) + + def _set_train_row(self, row: int, col_offset: int, train_num: int, train_config): + """테이블 한 행 설정""" + key = f"train_{train_num}_type" + train_type = getattr(train_config, key, 'A') + display_num = 100 + train_num + display = f"{display_num}{train_type}" + + # 편성 번호 + num_item = QTableWidgetItem(str(train_num)) + num_item.setTextAlignment(Qt.AlignCenter) + self.train_table.setItem(row, col_offset, num_item) + + # 유형 토글 버튼 + type_btn = QPushButton(train_type) + type_btn.setFont(QFont("GmarketSans", 11, QFont.Bold)) + type_btn.setCursor(Qt.PointingHandCursor) + type_btn.setProperty("train_num", train_num) + type_btn.clicked.connect(lambda checked, btn=type_btn: self._toggle_train_type(btn)) + self._update_train_btn_style(type_btn, train_type) + self.train_table.setCellWidget(row, col_offset + 1, type_btn) + + # 표시 + display_item = QTableWidgetItem(display) + display_item.setTextAlignment(Qt.AlignCenter) + if train_type == 'A': + display_item.setForeground(QColor("#3b82f6")) + else: + display_item.setForeground(QColor("#f97316")) + self.train_table.setItem(row, col_offset + 2, display_item) + + def _update_train_btn_style(self, btn: QPushButton, train_type: str): + """편성 버튼 스타일 업데이트""" + if train_type == 'A': + btn.setStyleSheet(""" + QPushButton { + background-color: #3b82f6; + color: white; + border: none; + border-radius: 4px; + padding: 4px 8px; + min-width: 30px; + } + QPushButton:hover { + background-color: #2563eb; + } + """) + else: + btn.setStyleSheet(""" + QPushButton { + background-color: #f97316; + color: white; + border: none; + border-radius: 4px; + padding: 4px 8px; + min-width: 30px; + } + QPushButton:hover { + background-color: #ea580c; + } + """) + + def _toggle_train_type(self, btn: QPushButton): + """편성 유형 토글""" + train_num = btn.property("train_num") + current = btn.text() + new_type = 'B' if current == 'A' else 'A' + + btn.setText(new_type) + self._update_train_btn_style(btn, new_type) + + # 설정 업데이트 + key = f"train_{train_num}_type" + setattr(self.config.settings.train, key, new_type) + + # 표시 업데이트 + self._load_train_table() + + def _set_all_trains(self, train_type: str): + """모든 편성 유형 일괄 설정""" + train_config = self.config.settings.train + for i in range(1, 52): + key = f"train_{i}_type" + setattr(train_config, key, train_type) + self._load_train_table() + + def _reset_train_settings(self): + """편성 설정 초기화""" + self.config.reset_to_default('train') + self._load_train_table() + self.signals.status_message.emit("편성 설정이 초기화되었습니다.", 2000) + + def _create_weather_tab(self) -> QWidget: + """날씨 탭 생성""" + tab = QWidget() + layout = QVBoxLayout(tab) + layout.setContentsMargins(16, 16, 16, 16) + layout.setSpacing(16) + + theme = self.config.theme + is_dark = theme == 'dark' + sub_color = "#94a3b8" if is_dark else "#64748b" + + # 설명 + info = QLabel("날씨 정보 표시 및 지역 설정을 관리합니다.") + info.setFont(QFont("GmarketSans", 11)) + info.setStyleSheet(f"color: {sub_color};") + info.setWordWrap(True) + layout.addWidget(info) + + # 날씨 활성화 + self.weather_toggle = LabeledToggle( + "날씨 정보 표시", + initial_state=self.config.get('weather', 'enabled', True) + ) + layout.addWidget(self.weather_toggle) + + # API 키 + self.api_key_input = CustomLineEdit( + placeholder="OpenWeatherMap API 키" + ) + self.api_key_input.setText(self.config.get('weather', 'api_key', '')) + layout.addWidget(LabeledInput("API 키", self.api_key_input)) + + # 지역 설정 + from ui.dialogs.weather_location_dialog import CITIES + self.location_combo = CustomComboBox(items=CITIES) + current_location = self.config.get('weather', 'location_name', '부산') + if current_location in CITIES: + self.location_combo.set_selected_value(current_location) + else: + self.location_combo.set_selected_value('부산') + layout.addWidget(LabeledInput("지역", self.location_combo)) + + # 예보 단위 설정 + forecast_units = ["1시간 단위", "3시간 단위"] + self.forecast_unit_combo = CustomComboBox(items=forecast_units) + current_unit = self.config.get('weather', 'forecast_unit', '1시간 단위') + if current_unit in forecast_units: + self.forecast_unit_combo.set_selected_value(current_unit) + else: + self.forecast_unit_combo.set_selected_value('1시간 단위') + layout.addWidget(LabeledInput("예보 단위", self.forecast_unit_combo)) + + # 업데이트 주기 + update_intervals = ["10분", "30분", "1시간", "2시간"] + self.update_interval_combo = CustomComboBox(items=update_intervals) + current_interval_sec = self.config.get('weather', 'update_interval', 1800) + current_interval_min = current_interval_sec // 60 + if current_interval_min == 10: + interval_str = "10분" + elif current_interval_min == 30: + interval_str = "30분" + elif current_interval_min == 60: + interval_str = "1시간" + elif current_interval_min == 120: + interval_str = "2시간" + else: + interval_str = "30분" + self.update_interval_combo.set_selected_value(interval_str) + layout.addWidget(LabeledInput("업데이트 주기", self.update_interval_combo)) + + layout.addStretch() + return tab + + def _reset_font_settings(self): + """폰트 설정 초기화""" + self.config.reset_to_default('ui_font') + + # UI 업데이트 + for key, row in self._font_settings.items(): + area, style = key.rsplit('_', 1) + current = self.config.get_ui_font(area, style) + row.set_values( + current.get("family", FONT_FAMILY), + current.get("size", 13), + current.get("weight", "normal") + ) + + self.signals.status_message.emit("폰트 설정이 초기화되었습니다.", 2000) + + def _on_confirm(self): + """저장 버튼 클릭""" + # 일반 설정 + theme = 'dark' if self.theme_combo.currentText() == "다크" else 'light' + self.config.theme = theme + self.config.set('app', 'auto_save', self.auto_save_toggle.is_on) + self.config.set('app', 'check_updates', self.update_toggle.is_on) + + # 레이아웃 설정 + try: + section_ratio = int(self.section_ratio_input.text()) + section_ratio = max(30, min(80, section_ratio)) + self.config.set('layout', 'section_panel_ratio', section_ratio) + self.config.set('layout', 'todo_panel_ratio', 100 - section_ratio) + except ValueError: + pass + + # 폰트 설정 + for key, row in self._font_settings.items(): + area, style = key.rsplit('_', 1) + values = row.get_values() + self.config.set_ui_font( + area, style, + family=values["family"], + size=values["size"], + weight=values["weight"] + ) + + # 날씨 설정 + self.config.set('weather', 'enabled', self.weather_toggle.is_on) + self.config.set('weather', 'api_key', self.api_key_input.text()) + + # 지역 설정 + selected_city = self.location_combo.currentText() + self.config.set('weather', 'location_name', selected_city) + + # 지역 좌표 업데이트 + from ui.dialogs.weather_location_dialog import CITY_COORDINATES + if selected_city in CITY_COORDINATES: + lat, lon = CITY_COORDINATES[selected_city] + self.config.set('weather', 'location_lat', lat) + self.config.set('weather', 'location_lon', lon) + + # 예보 단위 설정 + forecast_unit = self.forecast_unit_combo.currentText() + self.config.set('weather', 'forecast_unit', forecast_unit) + + # 업데이트 주기 설정 + interval_str = self.update_interval_combo.currentText() + if interval_str == "10분": + interval_sec = 600 + elif interval_str == "30분": + interval_sec = 1800 + elif interval_str == "1시간": + interval_sec = 3600 + elif interval_str == "2시간": + interval_sec = 7200 + else: + interval_sec = 1800 + self.config.set('weather', 'update_interval', interval_sec) + + # 저장 + self.config.save() + + # 테마 변경 시그널 + self.signals.theme_changed.emit(theme) + self.signals.layout_changed.emit() + + self.accept() diff --git a/ui/dialogs/status_filter_dialog.py b/ui/dialogs/status_filter_dialog.py new file mode 100644 index 0000000..287e5a2 --- /dev/null +++ b/ui/dialogs/status_filter_dialog.py @@ -0,0 +1,109 @@ +# -*- coding: utf-8 -*- +""" +상태 필터 다이얼로그 모듈 +상태를 선택하는 다이얼로그입니다. +""" + +from typing import Optional +from PySide6.QtWidgets import QDialogButtonBox, QVBoxLayout, QRadioButton, QButtonGroup +from PySide6.QtCore import Qt + +from ui.base.base_dialog import BaseDialog +from ui.styles.style_manager import StyleManager +from core.logger import get_logger + +logger = get_logger(__name__) + + +class StatusFilterDialog(BaseDialog): + """ + 상태 필터 다이얼로그 + + 상태를 선택합니다 (완료/진행중). + """ + + def __init__(self, parent=None): + super().__init__(parent, title="상태 필터", width=250, height=200) + + self.button_group = QButtonGroup(self) + self.status: Optional[str] = None + self.style_manager = StyleManager() + + self._setup_ui() + + def _setup_ui(self): + """UI 설정""" + colors = self.style_manager.get_colors() + content_font = self.style_manager.get_font("dialog", "content") + + # 공통 스타일 + radio_style = f""" + QRadioButton {{ + color: {colors['text_primary']}; + font-family: '{content_font.family()}'; + font-size: {content_font.pointSize()}pt; + font-weight: {content_font.weight()}; + spacing: 8px; + }} + QRadioButton::indicator {{ + width: 20px; + height: 20px; + border: 2px solid {colors['border']}; + border-radius: 10px; + background-color: {colors['input_bg']}; + }} + QRadioButton::indicator:hover {{ + border-color: {colors['accent']}; + }} + QRadioButton::indicator:checked {{ + background-color: {colors['accent']}; + border-color: {colors['accent']}; + }} + """ + + # 상태 라디오 버튼들 + all_radio = QRadioButton("전체") + all_radio.setChecked(True) + all_radio.setFont(content_font) + all_radio.setStyleSheet(radio_style) + self.button_group.addButton(all_radio, 0) + self.content_layout.addWidget(all_radio) + + pending_radio = QRadioButton("진행중") + pending_radio.setFont(content_font) + pending_radio.setStyleSheet(radio_style) + self.button_group.addButton(pending_radio, 1) + self.content_layout.addWidget(pending_radio) + + completed_radio = QRadioButton("완료") + completed_radio.setFont(content_font) + completed_radio.setStyleSheet(radio_style) + self.button_group.addButton(completed_radio, 2) + self.content_layout.addWidget(completed_radio) + + # 버튼 + button_box = QDialogButtonBox( + QDialogButtonBox.Ok | QDialogButtonBox.Cancel, + Qt.Horizontal, + self + ) + button_box.accepted.connect(self.accept) + button_box.rejected.connect(self.reject) + self.content_layout.addWidget(button_box) + + def accept(self): + """확인 버튼 클릭""" + checked_id = self.button_group.checkedId() + if checked_id == 1: + self.status = "pending" + elif checked_id == 2: + self.status = "completed" + else: + self.status = None + + super().accept() + + def get_status(self) -> Optional[str]: + """선택된 상태 반환""" + return self.status + diff --git a/ui/dialogs/team_confirmation_dialog.py b/ui/dialogs/team_confirmation_dialog.py new file mode 100644 index 0000000..9ca4da2 --- /dev/null +++ b/ui/dialogs/team_confirmation_dialog.py @@ -0,0 +1,72 @@ +# -*- coding: utf-8 -*- +""" +팀확인 다이얼로그 모듈 +레코드의 팀 확인 상태를 관리하는 다이얼로그입니다. +""" + +from typing import Dict +from PySide6.QtWidgets import QVBoxLayout, QDialogButtonBox +from PySide6.QtCore import Qt + +from ui.base.base_dialog import BaseDialog +from ui.components.team_confirmation_widget import TeamConfirmationWidget +from database.models import SectionBase +from core.logger import get_logger +import json + +logger = get_logger(__name__) + + +class TeamConfirmationDialog(BaseDialog): + """ + 팀확인 다이얼로그 + + 레코드의 팀 확인 상태를 토글 방식으로 관리합니다. + """ + + def __init__(self, parent=None, record: SectionBase = None): + super().__init__(parent, title="팀 확인") + + self.record = record + self.confirmations = {} + + if record: + try: + self.confirmations = json.loads(record.team_confirmations) if isinstance(record.team_confirmations, str) else record.team_confirmations + if not isinstance(self.confirmations, dict): + self.confirmations = {} + except (json.JSONDecodeError, TypeError): + self.confirmations = {} + + self._setup_ui() + + def _setup_ui(self): + """UI 설정""" + # 팀확인 위젯 + self.confirmation_widget = TeamConfirmationWidget(self.confirmations, self) + self.confirmation_widget.confirmation_changed.connect(self._on_confirmation_changed) + self.content_layout.addWidget(self.confirmation_widget) + + # 버튼 + button_box = QDialogButtonBox( + QDialogButtonBox.Ok | QDialogButtonBox.Cancel, + Qt.Horizontal, + self + ) + button_box.accepted.connect(self.accept) + button_box.rejected.connect(self.reject) + self.content_layout.addWidget(button_box) + + def _on_confirmation_changed(self, team: str, confirmed: bool): + """확인 상태 변경""" + self.confirmations[team] = confirmed + logger.debug(f"팀 확인 상태 변경: {team} = {confirmed}") + + def get_confirmations(self) -> Dict[str, bool]: + """확인 상태 반환""" + return self.confirmations.copy() + + + + + diff --git a/ui/dialogs/team_filter_dialog.py b/ui/dialogs/team_filter_dialog.py new file mode 100644 index 0000000..508de89 --- /dev/null +++ b/ui/dialogs/team_filter_dialog.py @@ -0,0 +1,82 @@ +# -*- coding: utf-8 -*- +""" +팀 필터 다이얼로그 모듈 +팀을 선택하는 다이얼로그입니다. +""" + +from typing import List +from PySide6.QtWidgets import QDialogButtonBox, QVBoxLayout, QCheckBox +from PySide6.QtCore import Qt + +from ui.base.base_dialog import BaseDialog +from ui.styles.style_manager import StyleManager +from core.constants import TEAMS +from core.logger import get_logger + +logger = get_logger(__name__) + + +class TeamFilterDialog(BaseDialog): + """ + 팀 필터 다이얼로그 + + 팀을 선택합니다 (다중 선택 가능). + """ + + def __init__(self, parent=None): + super().__init__(parent, title="팀 필터", width=300, height=250) + + self.checkboxes: dict = {} + self.style_manager = StyleManager() + + self._setup_ui() + + def _setup_ui(self): + """UI 설정""" + colors = self.style_manager.get_colors() + content_font = self.style_manager.get_font("dialog", "content") + + # 팀 체크박스들 + for team in TEAMS: + checkbox = QCheckBox(team) + checkbox.setFont(content_font) + checkbox.setStyleSheet(f""" + QCheckBox {{ + color: {colors['text_primary']}; + font-family: '{content_font.family()}'; + font-size: {content_font.pointSize()}pt; + font-weight: {content_font.weight()}; + spacing: 8px; + }} + QCheckBox::indicator {{ + width: 20px; + height: 20px; + border: 2px solid {colors['border']}; + border-radius: 4px; + background-color: {colors['input_bg']}; + }} + QCheckBox::indicator:hover {{ + border-color: {colors['accent']}; + }} + QCheckBox::indicator:checked {{ + background-color: {colors['accent']}; + border-color: {colors['accent']}; + }} + """) + self.checkboxes[team] = checkbox + self.content_layout.addWidget(checkbox) + + # 버튼 + button_box = QDialogButtonBox( + QDialogButtonBox.Ok | QDialogButtonBox.Cancel, + Qt.Horizontal, + self + ) + button_box.accepted.connect(self.accept) + button_box.rejected.connect(self.reject) + self.content_layout.addWidget(button_box) + + def get_selected_teams(self) -> List[str]: + """선택된 팀 목록 반환""" + return [team for team, checkbox in self.checkboxes.items() if checkbox.isChecked()] + diff --git a/ui/dialogs/team_settings_dialog.py b/ui/dialogs/team_settings_dialog.py new file mode 100644 index 0000000..34e0c30 --- /dev/null +++ b/ui/dialogs/team_settings_dialog.py @@ -0,0 +1,780 @@ +# -*- coding: utf-8 -*- +""" +팀 인원 설정 다이얼로그 +각 팀의 부팀장과 운용 인원을 설정합니다. +""" + +from typing import List, Optional, Dict +from PySide6.QtWidgets import ( + QWidget, QVBoxLayout, QHBoxLayout, QTabWidget, + QLabel, QPushButton, QLineEdit, QListWidget, QListWidgetItem, + QMessageBox +) +from PySide6.QtCore import Qt, Signal, QSize, QTimer +from PySide6.QtGui import QColor, QPainter, QPen, QBrush + +from ui.base.base_dialog import BaseDialog +from ui.components.custom_input import CustomLineEdit +from ui.components.custom_button import CustomButton +from ui.components.custom_checkbox import CustomCheckBox +from ui.styles.style_manager import StyleManager +from database.crud import CRUDManager +from database.models import TeamMember +from core.constants import TEAMS +from core.logger import get_logger + +logger = get_logger(__name__) + + +class PositionBox(QWidget): + """직책 표시 박스 (부팀장/운용)""" + + position_toggled = Signal(int, str) # member_id, new_position + + def __init__(self, member_id: int, position: str, parent=None): + super().__init__(parent) + self.member_id = member_id + self.position = position + self.style_manager = StyleManager() + self.setFixedSize(60, 30) + self.setCursor(Qt.PointingHandCursor) + + def paintEvent(self, _event): + """그리기""" + painter = QPainter(self) + painter.setRenderHint(QPainter.Antialiasing) + + colors = self.style_manager.get_colors() + font = self.style_manager.get_font("dialog", "content") + + # 직책에 따른 색상 구분 + if self.position == "부팀장": + bg_color = QColor("#3b82f6") # 파란색 + text_color = QColor("#ffffff") + else: # 운용 + bg_color = QColor("#22c55e") # 초록색 + text_color = QColor("#ffffff") + + # 배경 + rect = self.rect().adjusted(2, 2, -2, -2) + painter.setBrush(QBrush(bg_color)) + painter.setPen(QPen(QColor(colors['border']), 1)) + painter.drawRoundedRect(rect, 4, 4) + + # 텍스트 + painter.setPen(text_color) + painter.setFont(font) + painter.drawText(rect, Qt.AlignCenter, self.position) + + def mousePressEvent(self, _event): + """클릭으로 직책 토글""" + if _event.button() == Qt.LeftButton: + new_position = "운용" if self.position == "부팀장" else "부팀장" + self.position = new_position + self.position_toggled.emit(self.member_id, new_position) + self.update() + + +class NameLabel(QLabel): + """이름 레이블 (더블클릭으로 수정)""" + + name_changed = Signal(int, str) # member_id, new_name + + def __init__(self, member_id: int, name: str, parent=None): + super().__init__(name, parent) + self.member_id = member_id + self._original_name = name + self._is_editing = False + self.edit_widget = None + self.style_manager = StyleManager() + self.setCursor(Qt.PointingHandCursor) + + def mouseDoubleClickEvent(self, _event): + """더블클릭으로 수정 모드""" + if self._is_editing: + return + + self._is_editing = True + self._original_name = self.text() + + # 다이얼로그 레벨로 편집 위젯 생성 + dialog = self._find_dialog() + if not dialog: + return + + # 편집 모드로 전환 (다이얼로그 위에 표시) + self.edit_widget = QLineEdit(self.text(), dialog) + + # 리스트 항목의 전역 좌표로 위치 설정 + # NameLabel의 부모(MemberListItem)를 통해 위치 계산 + parent_widget = self.parent() + if parent_widget: + # MemberListItem의 전역 위치 + item_global_pos = parent_widget.mapToGlobal(parent_widget.rect().topLeft()) + # 다이얼로그의 전역 위치 + dialog_global_pos = dialog.mapToGlobal(dialog.rect().topLeft()) + # 상대 위치 계산 + relative_x = item_global_pos.x() - dialog_global_pos.x() + relative_y = item_global_pos.y() - dialog_global_pos.y() + + # NameLabel의 상대 위치 추가 (부모 위젯 내에서의 위치) + name_pos_in_parent = self.pos() + relative_x += name_pos_in_parent.x() + relative_y += name_pos_in_parent.y() + else: + # 폴백: 다이얼로그 중앙 + relative_x = dialog.width() // 2 - 150 + relative_y = dialog.height() // 2 + + # 다이얼로그 내 위치로 조정 + self.edit_widget.setGeometry( + relative_x, + relative_y, + max(self.width(), 200), # 최소 너비 + max(self.height(), 40) # 최소 높이 + ) + + # 스타일 적용 + colors = self.style_manager.get_colors() + input_font = self.style_manager.get_font("dialog", "input") + input_height = self.style_manager.calculate_input_height( + font=input_font, area="dialog", style="input" + ) + self.edit_widget.setStyleSheet(f""" + QLineEdit {{ + background-color: {colors['input_bg']}; + color: {colors['input_text']}; + border: 2px solid {colors['accent']}; + border-radius: 6px; + padding: {input_height // 4}px 12px; + font-family: '{input_font.family()}'; + font-size: {input_font.pointSize()}pt; + min-height: {input_height}px; + }} + QLineEdit:focus {{ + border-color: {colors['accent']}; + outline: none; + }} + """) + self.edit_widget.setFont(input_font) + + # z-order 최상위로 + self.edit_widget.raise_() + self.edit_widget.selectAll() + self.edit_widget.setFocus() + self.edit_widget.show() + + # 엔터 키 처리 (다이얼로그 닫힘 방지) + def handle_return_pressed(): + self._finish_edit() + + self.edit_widget.returnPressed.connect(handle_return_pressed) + self.edit_widget.editingFinished.connect(self._finish_edit) + + # keyPressEvent 오버라이드하여 엔터 키가 다이얼로그로 전파되지 않도록 + original_key_press = self.edit_widget.keyPressEvent + def key_press_handler(event): + if event.key() == Qt.Key_Return or event.key() == Qt.Key_Enter: + self._finish_edit() + event.accept() # 이벤트 소비하여 전파 방지 + else: + original_key_press(event) + self.edit_widget.keyPressEvent = key_press_handler + + # focusOutEvent 오버라이드 + original_focus_out = self.edit_widget.focusOutEvent + def focus_out_handler(event): + original_focus_out(event) + self._finish_edit() + self.edit_widget.focusOutEvent = focus_out_handler + + def _find_dialog(self): + """다이얼로그 찾기""" + parent = self.parent() + while parent: + from ui.base.base_dialog import BaseDialog + if isinstance(parent, BaseDialog): + return parent + parent = parent.parent() + return None + + def _finish_edit(self): + """편집 완료""" + if not self._is_editing or not self.edit_widget: + return + + new_name = self.edit_widget.text().strip() + if new_name and new_name != self._original_name: + # 이름 변경 시그널 발생 + self.name_changed.emit(self.member_id, new_name) + # 리스트 아이템 텍스트 업데이트 + self.setText(new_name) + + # 편집 위젯 제거 + self.edit_widget.deleteLater() + self.edit_widget = None + self._is_editing = False + + +class MemberListItem(QWidget): + """인원 리스트 항목 위젯""" + + # 시그널 + position_toggled = Signal(int, str) # member_id, new_position + name_changed = Signal(int, str) # member_id, new_name + delete_requested = Signal(int) # member_id + + def __init__(self, member: TeamMember, group_number: int, parent=None): + super().__init__(parent) + self.member = member + self.group_number = group_number + self.style_manager = StyleManager() + self._setup_ui() + + def _setup_ui(self): + """UI 설정""" + layout = QHBoxLayout(self) + layout.setContentsMargins(8, 4, 8, 4) + layout.setSpacing(8) + + colors = self.style_manager.get_colors() + + # 체크박스 (커스텀) + self.checkbox = CustomCheckBox() + self.checkbox.setFixedSize(24, 24) + self.checkbox.stateChanged.connect(self._on_checkbox_changed) + layout.addWidget(self.checkbox) + + # 직책 박스 + self.position_box = PositionBox(self.member.id, self.member.position, self) + self.position_box.position_toggled.connect(self._on_position_toggled) + layout.addWidget(self.position_box) + + # 이름 + self.name_label = NameLabel(self.member.id, self.member.name, self) + name_font = self.style_manager.get_font("dialog", "content") + self.name_label.setFont(name_font) + name_height = self.style_manager.calculate_label_height( + font=name_font, area="dialog", style="content" + ) + self.name_label.setMinimumHeight(name_height) + self.name_label.name_changed.connect(self._on_name_changed) + layout.addWidget(self.name_label, 1) + + # 그룹번호 + if self.group_number > 0: + group_label = QLabel(f"그룹{self.group_number}") + group_font = self.style_manager.get_font("dialog", "content") + group_label.setFont(group_font) + group_label.setStyleSheet(f"color: {colors['text_tertiary']};") + layout.addWidget(group_label) + else: + layout.addWidget(QLabel("")) # 공간 확보 + + # 삭제 버튼 + self.delete_btn = QPushButton("삭제") + self.delete_btn.setFixedSize(50, 28) + self.delete_btn.setStyleSheet(f""" + QPushButton {{ + background-color: {colors['error']}; + color: white; + border: none; + border-radius: 4px; + font-size: 11pt; + }} + QPushButton:hover {{ + background-color: #dc2626; + }} + """) + self.delete_btn.clicked.connect(self._on_delete_clicked) + layout.addWidget(self.delete_btn) + + def _on_position_toggled(self, member_id: int, new_position: str): + """직책 토글""" + self.member.position = new_position + # 시그널 emit + self.position_toggled.emit(member_id, new_position) + + def _on_name_changed(self, member_id: int, new_name: str): + """이름 변경""" + self.member.name = new_name + self.name_label.setText(new_name) + # 시그널 emit + self.name_changed.emit(member_id, new_name) + + def _on_delete_clicked(self): + """삭제 버튼 클릭""" + # 시그널 emit + self.delete_requested.emit(self.member.id) + + def set_group_color(self, color: str): + """그룹 배경색 설정""" + self.setStyleSheet(f"background-color: {color}; border-radius: 4px;") + + def _on_checkbox_changed(self, state): + """체크박스 변경 시""" + self._notify_selection_change() + + def _notify_selection_change(self): + """체크박스 변경 알림""" + # MemberListWidget 찾기 + parent = self.parent() + while parent: + if isinstance(parent, MemberListWidget): + parent.check_selection() + break + parent = parent.parent() + + +class MemberListWidget(QWidget): + """인원 목록 위젯""" + + member_changed = Signal() + + def __init__( + self, + parent=None, + team: str = "", + position: Optional[str] = None, + max_members: int = 3 + ): + super().__init__(parent) + + self.team = team + self.position = position + self.max_members = max_members + self.crud = CRUDManager() + self.style_manager = StyleManager() + self.members: List[TeamMember] = [] + self.group_colors: Dict[int, str] = {} + + self._setup_ui() + self._load_members() + + def _setup_ui(self): + """UI 설정""" + layout = QVBoxLayout(self) + layout.setContentsMargins(0, 0, 0, 0) + layout.setSpacing(8) + + colors = self.style_manager.get_colors() + + # 제목 + if self.position: + title_text = f"{self.position} ({self.max_members}명)" + else: + title_text = "인원 목록" + title = QLabel(title_text) + title_font = self.style_manager.get_font("dialog", "label") + title.setFont(title_font) + title_height = self.style_manager.calculate_label_height( + font=title_font, area="dialog", style="label" + ) + title.setStyleSheet(f""" + color: {colors['text_primary']}; + font-weight: bold; + min-height: {title_height}px; + """) + layout.addWidget(title) + + # 리스트 + self.list_widget = QListWidget() + self.list_widget.setFont(self.style_manager.get_font("dialog", "content")) + self.list_widget.setMaximumHeight(300) + self.list_widget.setStyleSheet(f""" + QListWidget {{ + background-color: {colors['bg_secondary']}; + border: 1px solid {colors['border']}; + border-radius: 6px; + }} + QListWidget::item {{ + border-bottom: 1px solid {colors['border']}; + }} + QListWidget::item:last {{ + border-bottom: none; + }} + """) + layout.addWidget(self.list_widget) + + # 입력 영역 + input_layout = QHBoxLayout() + input_layout.setSpacing(8) + + self.name_input = CustomLineEdit(placeholder="이름 입력") + # 엔터 키 이벤트 처리 (다이얼로그 닫힘 방지) + def handle_return_pressed(): + self._add_member() + self.name_input.returnPressed.connect(handle_return_pressed) + + # 엔터 키가 다이얼로그로 전파되지 않도록 처리 + original_key_press = self.name_input.keyPressEvent + def key_press_handler(event): + if event.key() == Qt.Key_Return or event.key() == Qt.Key_Enter: + self._add_member() + event.accept() + else: + original_key_press(event) + self.name_input.keyPressEvent = key_press_handler + + input_layout.addWidget(self.name_input, 1) + + self.add_btn = CustomButton("추가", style_type="primary", fixed_height=36) + self.add_btn.clicked.connect(self._add_member) + input_layout.addWidget(self.add_btn) + + self.group_btn = CustomButton("그룹묶기", style_type="outline", fixed_height=36) + self.group_btn.setEnabled(False) + self.group_btn.clicked.connect(self._toggle_group) + input_layout.addWidget(self.group_btn) + + layout.addLayout(input_layout) + + # 선택 변경 타이머 (너무 빈번한 호출 방지) + self._selection_timer = QTimer() + self._selection_timer.setSingleShot(True) + self._selection_timer.timeout.connect(self._update_group_button_state) + + + def _load_members(self): + """인원 목록 로드""" + self.list_widget.clear() + self.members = [] + + # 디버깅: 조회 파라미터 로그 + logger.debug("인원 목록 로드: 팀=%s, 직책=%s, 활성화만=%s", + self.team, self.position, True) + + all_members = self.crud.get_team_members_by_team( + self.team, + position=None, # 모든 직책 + active_only=True + ) + + # 디버깅: 조회 결과 로그 + logger.debug("조회된 멤버 수: %d (팀=%s)", len(all_members), self.team) + if all_members: + logger.debug("멤버 목록: %s", [f"{m.name}({m.position})" for m in all_members]) + + # 그룹 번호 계산 + group_map = self._calculate_groups(all_members) + + # 모든 인원 표시 (직책 필터링 없음) + for member in all_members: + self.members.append(member) + group_number = group_map.get(member.id, 0) + + # 리스트 항목 생성 + item = QListWidgetItem() + item.setSizeHint(QSize(0, 40)) + + member_widget = MemberListItem(member, group_number, self) + member_widget.position_toggled.connect(self._on_position_toggled) + member_widget.name_changed.connect(self._on_name_changed) + member_widget.delete_requested.connect(self._on_delete_requested) + + # 그룹 배경색 설정 + if group_number > 0: + color = self._get_group_color(group_number) + member_widget.set_group_color(color) + + self.list_widget.addItem(item) + self.list_widget.setItemWidget(item, member_widget) + + self._update_group_button_state() + + def _calculate_groups(self, members: List[TeamMember]) -> Dict[int, int]: + """그룹 번호 계산""" + group_map = {} + group_counter = 1 + + for member in members: + if member.partner_id and member.id not in group_map: + # 파트너 찾기 + partner = next((m for m in members if m.id == member.partner_id), None) + if partner and partner.id not in group_map: + group_num = group_counter + group_counter += 1 + group_map[member.id] = group_num + group_map[partner.id] = group_num + + return group_map + + def _get_group_color(self, group_number: int) -> str: + """그룹별 색상 반환""" + colors = [ + "#e0f2fe", # 그룹1 - 연한 파랑 + "#fef3c7", # 그룹2 - 연한 노랑 + "#fce7f3", # 그룹3 - 연한 분홍 + "#d1fae5", # 그룹4 - 연한 초록 + "#e9d5ff", # 그룹5 - 연한 보라 + ] + theme = self.style_manager.config.theme + if theme == 'dark': + colors = [ + "#1e3a5f", # 그룹1 - 어두운 파랑 + "#5a4a1f", # 그룹2 - 어두운 노랑 + "#5a2a4a", # 그룹3 - 어두운 분홍 + "#1a4a2f", # 그룹4 - 어두운 초록 + "#4a2a5a", # 그룹5 - 어두운 보라 + ] + + return colors[(group_number - 1) % len(colors)] + + def check_selection(self): + """체크박스 변경 감지 (public 메서드)""" + self._selection_timer.start(100) # 100ms 후 호출 + + + def _update_group_button_state(self): + """체크된 아이템을 분석하여 그룹 버튼 활성화 여부 결정""" + checked_widgets = [] + for i in range(self.list_widget.count()): + item = self.list_widget.item(i) + widget = self.list_widget.itemWidget(item) + if isinstance(widget, MemberListItem) and widget.checkbox.isChecked(): + checked_widgets.append(widget) + + # 초기화 + self.group_btn.setEnabled(False) + self.group_btn.setText("그룹묶기") + + # 조건: 정확히 2명 선택 + if len(checked_widgets) != 2: + return + + w1, w2 = checked_widgets[0], checked_widgets[1] + + # DB에서 최신 데이터 가져오기 + m1 = self.crud.get_team_member(w1.member.id) + m2 = self.crud.get_team_member(w2.member.id) + + if not m1 or not m2: + return + + # 위젯의 member 객체도 업데이트 + w1.member = m1 + w2.member = m2 + + # 조건: 부팀장 1명 + 운용 1명 + positions = {m1.position, m2.position} + if "부팀장" not in positions or "운용" not in positions: + return + + # 로직: 이미 짝궁인가? (양방향 체크) + is_partners = (m1.partner_id == m2.id) or (m2.partner_id == m1.id) + + if is_partners: + # 이미 그룹임 -> 그룹 해제 모드 + self.group_btn.setText("그룹해제") + self.group_btn.setEnabled(True) + else: + # 그룹이 아님 -> 그룹 묶기 모드 + self.group_btn.setText("그룹묶기") + self.group_btn.setEnabled(True) + + def _add_member(self): + """인원 추가""" + name = self.name_input.text().strip() + if not name: + return + + # 최대 인원 확인 (제한이 있는 경우만) + if self.max_members > 0 and len(self.members) >= self.max_members: + QMessageBox.warning( + self, + "인원 초과", + f"최대 {self.max_members}명까지 등록 가능합니다." + ) + return + + # 순서 결정 + order = len(self.members) + + # DB에 추가 (기본 부팀장) + try: + new_member = self.crud.create_team_member( + team=self.team, + position="부팀장", # 기본값 + name=name, + order=order + ) + logger.info("팀 인원 추가 성공: 팀=%s, 이름=%s, 직책=%s, ID=%s", + self.team, name, "부팀장", new_member.id if new_member else "None") + except Exception as e: + logger.error("팀 인원 추가 실패: 팀=%s, 이름=%s, 오류=%s", self.team, name, e) + QMessageBox.warning( + self, + "추가 실패", + f"인원 추가에 실패했습니다.\n오류: {str(e)}" + ) + return + + self.name_input.clear() + self.name_input.setFocus() # 포커스 유지 + self._load_members() + self.member_changed.emit() + + def _on_position_toggled(self, member_id: int, new_position: str): + """직책 토글""" + self.crud.update_team_member(member_id, position=new_position) + self._load_members() + self.member_changed.emit() + + def _on_name_changed(self, member_id: int, new_name: str): + """이름 변경""" + self.crud.update_team_member(member_id, name=new_name) + self.member_changed.emit() + + def _on_delete_requested(self, member_id: int): + """삭제 요청""" + # 확인 메시지 + reply = QMessageBox.question( + self, + "삭제 확인", + "정말 삭제하시겠습니까?", + QMessageBox.Yes | QMessageBox.No + ) + + if reply == QMessageBox.Yes: + self.crud.delete_team_member(member_id) + self._load_members() + self.member_changed.emit() + logger.info("팀 인원 삭제: ID %s", member_id) + + def _toggle_group(self): + """그룹 묶기/해제""" + checked_items = [] + + for i in range(self.list_widget.count()): + item = self.list_widget.item(i) + widget = self.list_widget.itemWidget(item) + if isinstance(widget, MemberListItem) and widget.checkbox.isChecked(): + checked_items.append(widget.member) + + if len(checked_items) != 2: + return + + member1 = checked_items[0] + member2 = checked_items[1] + + if self.group_btn.text() == "그룹해제": + # 그룹 해제 + self.crud.set_partner(member1.id, None) + self.crud.set_partner(member2.id, None) + else: + # 그룹 묶기 + self.crud.set_partner(member1.id, member2.id) + + # 체크박스 해제 + for i in range(self.list_widget.count()): + item = self.list_widget.item(i) + widget = self.list_widget.itemWidget(item) + if isinstance(widget, MemberListItem): + widget.checkbox.setChecked(False) + + self._load_members() + self.member_changed.emit() + + +class TeamSettingsDialog(BaseDialog): + """ + 팀 인원 설정 다이얼로그 + + 각 팀의 부팀장과 운용 인원을 설정합니다. + """ + + def __init__(self, parent=None): + super().__init__( + parent, + title="팀 인원 설정", + width=400, + height=600, + min_width=300, + min_height=500 + ) + + self.style_manager = StyleManager() + self._setup_content() + self.add_button("닫기", self.close, primary=True) + + def keyPressEvent(self, event): + """키 이벤트 처리 - 편집 중일 때 엔터 키가 다이얼로그를 닫지 않도록""" + # 편집 중인 위젯이 있는지 확인 + for tab_idx in range(self.tabs.count()): + tab = self.tabs.widget(tab_idx) + member_list = tab.findChild(MemberListWidget) + if member_list: + for i in range(member_list.list_widget.count()): + item = member_list.list_widget.item(i) + widget = member_list.list_widget.itemWidget(item) + if isinstance(widget, MemberListItem): + name_label = widget.name_label + if name_label._is_editing and name_label.edit_widget: + # 편집 중이면 엔터 키를 무시 + if event.key() == Qt.Key_Return or event.key() == Qt.Key_Enter: + event.accept() + return + + # 편집 중이 아니면 기본 동작 수행 + super().keyPressEvent(event) + + def _setup_content(self): + """컨텐츠 설정""" + colors = self.style_manager.get_colors() + + # 탭 위젯 + self.tabs = QTabWidget() + tab_font = self.style_manager.get_font("dialog", "label") + self.tabs.setFont(tab_font) + + # 탭 스타일 적용 + self.tabs.setStyleSheet(f""" + QTabWidget::pane {{ + border: 1px solid {colors['border']}; + border-radius: 8px; + background-color: {colors['bg_secondary']}; + }} + QTabBar::tab {{ + background-color: {colors['bg_tertiary']}; + color: {colors['text_secondary']}; + padding: 8px 16px; + border-top-left-radius: 6px; + border-top-right-radius: 6px; + font-family: '{tab_font.family()}'; + font-size: {tab_font.pointSize()}pt; + min-height: {self.style_manager.calculate_label_height(font=tab_font, area="dialog", style="label")}px; + }} + QTabBar::tab:selected {{ + background-color: {colors['bg_secondary']}; + color: {colors['text_primary']}; + font-weight: bold; + }} + QTabBar::tab:hover {{ + background-color: {colors['bg_hover']}; + }} + """) + + # 각 팀별 탭 생성 + for team in TEAMS: + tab = self._create_team_tab(team) + self.tabs.addTab(tab, team) + + self.content_layout.addWidget(self.tabs) + + def _create_team_tab(self, team: str) -> QWidget: + """팀별 탭 생성""" + tab = QWidget() + layout = QVBoxLayout(tab) + layout.setContentsMargins(16, 16, 16, 16) + layout.setSpacing(16) + + # 통합 인원 목록 (부팀장과 운용 모두) + member_list = MemberListWidget( + parent=tab, + team=team, + position=None, # 모든 직책 + max_members=10 # 제한 없음 + ) + layout.addWidget(member_list, 1) + + return tab diff --git a/ui/dialogs/todo_input_dialog.py b/ui/dialogs/todo_input_dialog.py new file mode 100644 index 0000000..956c99c --- /dev/null +++ b/ui/dialogs/todo_input_dialog.py @@ -0,0 +1,205 @@ +# -*- coding: utf-8 -*- +""" +할일 입력 다이얼로그 모듈 +할일 입력을 위한 다이얼로그입니다. +""" + +from datetime import date, datetime, time +from typing import List, Optional + +from PySide6.QtWidgets import ( + QWidget, QHBoxLayout, QVBoxLayout, QLabel, QPushButton +) +from PySide6.QtCore import Qt, Signal +from PySide6.QtGui import QFont + +from ui.base.base_dialog import BaseDialog +from ui.components.custom_input import CustomLineEdit, CustomTextEdit, LabeledInput +from database.models import Todo, TodoCategory +from core.config import ConfigManager +from core.logger import get_logger + +logger = get_logger(__name__) + + +class CategoryChip(QPushButton): + """카테고리 선택 칩""" + + chip_selected = Signal(str) # category + + def __init__(self, category: str, icon: str = "", parent=None): + super().__init__(parent) + + self.config = ConfigManager() + self.category = category + self._is_selected = False + + if category == TodoCategory.ARRIVAL_INSPECTION: + self.setText(f"🚃 {category}") + self.icon_color = "#8b5cf6" + elif category == TodoCategory.TASK: + self.setText(f"🔧 {category}") + self.icon_color = "#f59e0b" + else: + self.setText(f"📝 {category}") + self.icon_color = "#3b82f6" + + self.setMinimumWidth(90) + self.setFixedHeight(36) + self.setCursor(Qt.PointingHandCursor) + self.setFont(QFont("GmarketSans", 11, QFont.Bold)) + + self.clicked.connect(self._on_clicked) + self._apply_style() + + def _on_clicked(self): + """클릭 이벤트""" + self.chip_selected.emit(self.category) + + def set_selected(self, selected: bool): + """선택 상태 설정""" + self._is_selected = selected + self._apply_style() + + def _apply_style(self): + """스타일 적용""" + theme = self.config.theme + + if self._is_selected: + self.setStyleSheet(f""" + QPushButton {{ + background-color: {self.icon_color}; + color: white; + border: 3px solid {self.icon_color}; + border-radius: 8px; + padding: 0 12px; + font-weight: bold; + }} + """) + else: + if theme == 'dark': + bg = "#334155" + text = "#94a3b8" + else: + bg = "#e2e8f0" + text = "#64748b" + + self.setStyleSheet(f""" + QPushButton {{ + background-color: {bg}; + color: {text}; + border: 2px solid transparent; + border-radius: 8px; + padding: 0 12px; + }} + QPushButton:hover {{ + background-color: {self.icon_color}; + color: white; + }} + """) + + +class TodoInputDialog(BaseDialog): + """할일 입력 다이얼로그""" + + def __init__( + self, + parent=None, + todo_date: date = None, + todo: Todo = None + ): + title = "할일 추가" if todo is None else "할일 편집" + super().__init__(parent, title=title, width=450, height=500) + + self.todo_date = todo_date or date.today() + self.todo = todo + + self._selected_category: str = TodoCategory.GENERAL + self._category_chips: List[CategoryChip] = [] + + self._setup_fields() + self.add_confirm_cancel_buttons() + + if todo: + self._load_todo(todo) + + def _setup_fields(self): + """필드 설정""" + theme = self.config.theme + text_color = "#f8fafc" if theme == 'dark' else "#1e293b" + + # 카테고리 섹션 + category_label = QLabel("카테고리") + category_label.setFont(QFont("GmarketSans", 12, QFont.Bold)) + category_label.setStyleSheet(f"color: {text_color};") + self.content_layout.addWidget(category_label) + + # 카테고리 칩 컨테이너 + category_container = QWidget() + category_layout = QHBoxLayout(category_container) + category_layout.setContentsMargins(0, 0, 0, 0) + category_layout.setSpacing(8) + + categories = [TodoCategory.GENERAL, TodoCategory.ARRIVAL_INSPECTION, TodoCategory.TASK] + for cat in categories: + chip = CategoryChip(cat) + chip.chip_selected.connect(self._on_category_selected) + self._category_chips.append(chip) + category_layout.addWidget(chip) + + # 기본 선택: 일반 + self._category_chips[0].set_selected(True) + + category_layout.addStretch() + self.content_layout.addWidget(category_container) + + # 내용 + self.content_input = CustomTextEdit( + placeholder="할일 내용을 입력하세요", + min_height=80 + ) + self.content_layout.addWidget( + LabeledInput("내용", self.content_input, required=True) + ) + + # 대상편성 + self.train_input = CustomLineEdit(placeholder="예: 151A (선택)") + self.content_layout.addWidget( + LabeledInput("대상편성", self.train_input) + ) + + # 일정 + self.schedule_input = CustomLineEdit(placeholder="예: 오전 10시 (선택)") + self.content_layout.addWidget( + LabeledInput("일정", self.schedule_input) + ) + + self.content_layout.addStretch() + + def _on_category_selected(self, category: str): + """카테고리 선택""" + for chip in self._category_chips: + chip.set_selected(chip.category == category) + + self._selected_category = category + + def _load_todo(self, todo: Todo): + """할일 데이터 로드""" + self.content_input.set_text(todo.content or "") + self.train_input.setText(todo.target_train or "") + self.schedule_input.setText(todo.schedule or "") + + # 카테고리 선택 + category = todo.category or TodoCategory.GENERAL + self._on_category_selected(category) + + def get_data(self) -> dict: + """입력 데이터 반환""" + return { + "todo_date": self.todo_date.isoformat(), + "category": self._selected_category, + "content": self.content_input.get_text(), + "target_train": self.train_input.text(), + "schedule": self.schedule_input.text(), + "is_completed": False, + } diff --git a/ui/dialogs/train_formation_dialog.py b/ui/dialogs/train_formation_dialog.py new file mode 100644 index 0000000..692943b --- /dev/null +++ b/ui/dialogs/train_formation_dialog.py @@ -0,0 +1,902 @@ +# -*- coding: utf-8 -*- +""" +전동차 편성관리 다이얼로그 모듈 +편성번호별 전동차 정보를 관리하는 다이얼로그입니다. +""" + +from datetime import date +from typing import Optional, Dict, Any +from PySide6.QtWidgets import ( + QWidget, QVBoxLayout, QHBoxLayout, QTableWidget, QTableWidgetItem, + QPushButton, QLineEdit, QComboBox, QDateEdit, QSpinBox, + QLabel, QHeaderView, QAbstractItemView, QMessageBox, QButtonGroup +) +from PySide6.QtCore import Qt, QDate, Signal +from PySide6.QtGui import QFont + +from ui.base.base_dialog import BaseDialog +from ui.components.chips.choice_chip_button import ChoiceChipButton +from database.common_db_manager import CommonDatabaseManager +from database.models import TrainFormation +from core.logger import get_logger + +logger = get_logger(__name__) + + +class TrainFormationDialog(BaseDialog): + """전동차 편성관리 다이얼로그""" + + def __init__(self, parent=None): + super().__init__( + parent=parent, + title="전동차 편성관리", + width=1200, + height=700, + min_width=1000, + min_height=600 + ) + + self.db = CommonDatabaseManager() + self.current_formation_id = None + + self._setup_ui() + self._load_formations() + self._apply_black_theme() + + def _setup_ui(self): + """UI 설정""" + # 검색 및 필터 영역 + filter_widget = QWidget() + filter_layout = QHBoxLayout(filter_widget) + filter_layout.setContentsMargins(0, 0, 0, 0) + filter_layout.setSpacing(12) + + # 검색 입력 + self.search_input = QLineEdit() + self.search_input.setPlaceholderText("편성번호로 검색...") + self.search_input.textChanged.connect(self._on_search_changed) + filter_layout.addWidget(QLabel("검색:")) + filter_layout.addWidget(self.search_input) + + # 배속지 필터 (필터 칩 사용) + filter_layout.addWidget(QLabel("배속지:")) + + depot_chip_container = QWidget() + depot_chip_layout = QHBoxLayout(depot_chip_container) + depot_chip_layout.setContentsMargins(0, 0, 0, 0) + depot_chip_layout.setSpacing(8) + + self.depot_filter_group = QButtonGroup() + self.depot_filter_group.setExclusive(True) + self.selected_depot = "전체" + + def create_depot_chip(text: str, key: str): + # 초기 상태: 전체가 선택된 상태 + is_selected = (key == "전체") + bg_color = "#3b82f6" if is_selected else "#404040" + + chip = ChoiceChipButton(text=text, key=key, bg=bg_color) + self.depot_filter_group.addButton(chip) + depot_chip_layout.addWidget(chip) + + if is_selected: + chip.setChecked(True) + + def make_depot_handler(depot_key: str): + def handler(): + self.selected_depot = depot_key + # 선택된 칩 색상 변경 + for btn in self.depot_filter_group.buttons(): + if isinstance(btn, ChoiceChipButton): + if btn.key == depot_key: + btn.set_bg("#3b82f6") # 선택됨: 파란색 + else: + btn.set_bg("#404040") # 선택안됨: 회색 + self._on_filter_changed(depot_key) + return handler + + chip.clicked_key.connect(make_depot_handler(key)) + return chip + + create_depot_chip("전체", "전체") + create_depot_chip("신평", "신평") + create_depot_chip("노포", "노포") + + filter_layout.addWidget(depot_chip_container) + + filter_layout.addStretch() + + # 추가 버튼 + self.add_btn = QPushButton("추가") + self.add_btn.clicked.connect(self._on_add) + filter_layout.addWidget(self.add_btn) + + self.content_layout.addWidget(filter_widget) + + # 테이블 + self.table = QTableWidget() + self.table.setColumnCount(9) + self.table.setHorizontalHeaderLabels([ + "편성번호", "신차/구차", "제조사", "도입일", + "배속지", "별칭", "도입단계", "도입량", "관리" + ]) + + # 테이블 설정 + self.table.setSelectionBehavior(QAbstractItemView.SelectRows) + self.table.setSelectionMode(QAbstractItemView.SingleSelection) + self.table.setAlternatingRowColors(True) + self.table.setShowGrid(False) + self.table.verticalHeader().setVisible(False) + self.table.setEditTriggers(QAbstractItemView.NoEditTriggers) + + # 헤더 설정 + header = self.table.horizontalHeader() + header.setStretchLastSection(False) + header.setSectionResizeMode(QHeaderView.Interactive) + header.setDefaultAlignment(Qt.AlignCenter) + + # 컬럼 너비 설정 + self.table.setColumnWidth(0, 100) # 편성번호 + self.table.setColumnWidth(1, 100) # 신차/구차 + self.table.setColumnWidth(2, 120) # 제조사 + self.table.setColumnWidth(3, 120) # 도입일 + self.table.setColumnWidth(4, 100) # 배속지 + self.table.setColumnWidth(5, 150) # 별칭 + self.table.setColumnWidth(6, 120) # 도입단계 + self.table.setColumnWidth(7, 100) # 도입량 + self.table.setColumnWidth(8, 150) # 관리 + + self.content_layout.addWidget(self.table, 1) + + # 버튼 영역 + button_layout = QHBoxLayout() + button_layout.addStretch() + + self.close_btn = QPushButton("닫기") + self.close_btn.clicked.connect(self.close) + button_layout.addWidget(self.close_btn) + + self.content_layout.addLayout(button_layout) + + def _apply_black_theme(self): + """블랙 테마 적용""" + self.setStyleSheet(""" + QDialog { + background-color: #0a0a0a; + } + + #dialogContainer { + background-color: #1a1a1a; + border: 1px solid #333333; + border-radius: 16px; + } + + #dialogTitle { + color: #ffffff; + font-family: 'GmarketSans'; + font-size: 18pt; + font-weight: bold; + } + + #closeButton { + background-color: transparent; + border: none; + color: #ffffff; + font-size: 16px; + border-radius: 16px; + } + + #closeButton:hover { + background-color: #dc2626; + color: white; + } + + QLabel { + color: #e0e0e0; + font-family: 'GmarketSans'; + font-size: 11pt; + } + + QLineEdit, QComboBox, QDateEdit, QSpinBox { + background-color: #2a2a2a; + color: #ffffff; + border: 1px solid #404040; + border-radius: 6px; + padding: 8px 12px; + font-family: 'GmarketSans'; + font-size: 11pt; + } + + QLineEdit:focus, QComboBox:focus, QDateEdit:focus, QSpinBox:focus { + border-color: #3b82f6; + outline: none; + } + + QComboBox::drop-down { + border: none; + background-color: #404040; + width: 30px; + } + + QComboBox::down-arrow { + image: none; + border-left: 5px solid transparent; + border-right: 5px solid transparent; + border-top: 6px solid #ffffff; + width: 0; + height: 0; + } + + QComboBox QAbstractItemView { + background-color: #2a2a2a; + color: #ffffff; + border: 1px solid #404040; + selection-background-color: #3b82f6; + } + + QDateEdit::drop-down { + border: none; + background-color: #404040; + width: 30px; + } + + QPushButton { + background-color: #3b82f6; + color: white; + border: none; + border-radius: 8px; + padding: 8px 20px; + font-family: 'GmarketSans'; + font-size: 11pt; + font-weight: bold; + } + + QPushButton:hover { + background-color: #2563eb; + } + + QPushButton:pressed { + background-color: #1d4ed8; + } + + QPushButton#editBtn { + background-color: #64748b; + } + + QPushButton#editBtn:hover { + background-color: #475569; + } + + QPushButton#deleteBtn { + background-color: #ef4444; + } + + QPushButton#deleteBtn:hover { + background-color: #dc2626; + } + + QTableWidget { + background-color: #1a1a1a; + color: #ffffff; + border: 1px solid #333333; + border-radius: 8px; + gridline-color: #333333; + font-family: 'GmarketSans'; + font-size: 11pt; + } + + QTableWidget::item { + padding: 8px; + border: none; + } + + QTableWidget::item:selected { + background-color: #3b82f6; + color: white; + } + + QTableWidget::item:alternate { + background-color: #222222; + } + + QHeaderView::section { + background-color: #2a2a2a; + color: #ffffff; + padding: 10px; + border: none; + border-bottom: 2px solid #3b82f6; + font-family: 'GmarketSans'; + font-size: 11pt; + font-weight: bold; + } + + QCheckBox { + color: #ffffff; + font-family: 'GmarketSans'; + font-size: 11pt; + } + + QCheckBox::indicator { + width: 18px; + height: 18px; + border: 2px solid #404040; + border-radius: 4px; + background-color: #2a2a2a; + } + + QCheckBox::indicator:checked { + background-color: #3b82f6; + border-color: #3b82f6; + } + """) + + def _load_formations(self, search_text: str = "", depot_filter: str = "전체"): + """편성 목록 로드""" + self.table.setRowCount(0) + + query = "SELECT * FROM train_formations WHERE 1=1" + params = [] + + if search_text: + query += " AND train_number LIKE ?" + params.append(f"%{search_text}%") + + if depot_filter != "전체": + query += " AND depot = ?" + params.append(depot_filter) + + query += " ORDER BY train_number" + + formations = self.db.fetch_all(query, tuple(params) if params else None) + + for formation in formations: + self._add_table_row(formation) + + def _add_table_row(self, formation: Dict[str, Any]): + """테이블에 행 추가""" + row = self.table.rowCount() + self.table.insertRow(row) + + # 편성번호 + train_number_item = QTableWidgetItem(formation.get('train_number', '')) + train_number_item.setTextAlignment(Qt.AlignCenter) + train_number_item.setData(Qt.UserRole, formation.get('id')) + self.table.setItem(row, 0, train_number_item) + + # 신차/구차 + is_new = formation.get('is_new_train', 1) + new_old_item = QTableWidgetItem("신차" if is_new else "구차") + new_old_item.setTextAlignment(Qt.AlignCenter) + self.table.setItem(row, 1, new_old_item) + + # 제조사 + manufacturer_item = QTableWidgetItem(formation.get('manufacturer', '')) + manufacturer_item.setTextAlignment(Qt.AlignCenter) + self.table.setItem(row, 2, manufacturer_item) + + # 도입일 + intro_date = formation.get('introduction_date') + if intro_date: + if isinstance(intro_date, str): + date_str = intro_date + else: + date_str = intro_date.strftime('%Y-%m-%d') + else: + date_str = "" + date_item = QTableWidgetItem(date_str) + date_item.setTextAlignment(Qt.AlignCenter) + self.table.setItem(row, 3, date_item) + + # 배속지 + depot_item = QTableWidgetItem(formation.get('depot', '')) + depot_item.setTextAlignment(Qt.AlignCenter) + self.table.setItem(row, 4, depot_item) + + # 별칭 + alias_item = QTableWidgetItem(formation.get('alias', '')) + alias_item.setTextAlignment(Qt.AlignCenter) + self.table.setItem(row, 5, alias_item) + + # 도입단계 + stage_item = QTableWidgetItem(formation.get('introduction_stage', '')) + stage_item.setTextAlignment(Qt.AlignCenter) + self.table.setItem(row, 6, stage_item) + + # 도입량 + count_item = QTableWidgetItem(str(formation.get('introduction_count', 0))) + count_item.setTextAlignment(Qt.AlignCenter) + self.table.setItem(row, 7, count_item) + + # 관리 버튼 + button_widget = QWidget() + button_layout = QHBoxLayout(button_widget) + button_layout.setContentsMargins(4, 4, 4, 4) + button_layout.setSpacing(4) + + edit_btn = QPushButton("수정") + edit_btn.setObjectName("editBtn") + edit_btn.setFixedHeight(32) + edit_btn.clicked.connect(lambda checked, fid=formation.get('id'): self._on_edit(fid)) + button_layout.addWidget(edit_btn) + + delete_btn = QPushButton("삭제") + delete_btn.setObjectName("deleteBtn") + delete_btn.setFixedHeight(32) + delete_btn.clicked.connect(lambda checked, fid=formation.get('id'): self._on_delete(fid)) + button_layout.addWidget(delete_btn) + + self.table.setCellWidget(row, 8, button_widget) + + def _on_search_changed(self, text: str): + """검색어 변경""" + self._load_formations(text, self.selected_depot) + + def _on_filter_changed(self, depot_filter: str = None): + """필터 변경""" + if depot_filter is None: + depot_filter = self.selected_depot + search_text = self.search_input.text() + self._load_formations(search_text, depot_filter) + + def _on_add(self): + """추가 버튼 클릭""" + dialog = TrainFormationEditDialog(self) + if dialog.exec(): + self._load_formations() + + def _on_edit(self, formation_id: int): + """수정 버튼 클릭""" + formation = self.db.fetch_one( + "SELECT * FROM train_formations WHERE id = ?", + (formation_id,) + ) + if formation: + dialog = TrainFormationEditDialog(self, formation) + if dialog.exec(): + self._load_formations() + + def _on_delete(self, formation_id: int): + """삭제 버튼 클릭""" + reply = QMessageBox.question( + self, + "삭제 확인", + "정말 삭제하시겠습니까?", + QMessageBox.Yes | QMessageBox.No, + QMessageBox.No + ) + + if reply == QMessageBox.Yes: + try: + self.db.execute( + "DELETE FROM train_formations WHERE id = ?", + (formation_id,) + ) + self.db.commit() + self._load_formations() + except Exception as e: + logger.error(f"편성 삭제 실패: {e}") + QMessageBox.critical(self, "오류", f"삭제 중 오류가 발생했습니다: {e}") + + +class TrainFormationEditDialog(BaseDialog): + """편성 편집 다이얼로그""" + + def __init__(self, parent=None, formation: Optional[Dict[str, Any]] = None): + super().__init__( + parent=parent, + title="편성 정보 편집" if formation else "편성 추가", + width=500, + height=600, + min_width=450, + min_height=550 + ) + + self.db = CommonDatabaseManager() + self.formation = formation + + self._setup_ui() + self._apply_black_theme() + + if formation: + self._load_formation_data(formation) + + def _setup_ui(self): + """UI 설정""" + # 편성번호 + self.train_number_input = QLineEdit() + self.train_number_input.setPlaceholderText("예: 134a, 134b, 1A") + self._add_form_row("편성번호 *", self.train_number_input) + + # 신차/구차 (필터 칩 사용) + new_old_container = QWidget() + new_old_layout = QHBoxLayout(new_old_container) + new_old_layout.setContentsMargins(0, 0, 0, 0) + new_old_layout.setSpacing(8) + + self.new_old_group = QButtonGroup() + self.new_old_group.setExclusive(True) + self.is_new_train = True + + def create_new_old_chip(text: str, key: bool): + # 초기 상태: True(신차)가 기본값 + is_selected = (key == True) + bg_color = "#3b82f6" if is_selected else "#404040" + + chip = ChoiceChipButton(text=text, key=str(key), bg=bg_color) + self.new_old_group.addButton(chip) + new_old_layout.addWidget(chip) + + if is_selected: + chip.setChecked(True) + + def make_handler(is_new: bool): + def handler(): + self.is_new_train = is_new + # 선택된 칩 색상 변경 + for btn in self.new_old_group.buttons(): + if isinstance(btn, ChoiceChipButton): + if btn.key == str(is_new): + btn.set_bg("#3b82f6") # 선택됨: 파란색 + else: + btn.set_bg("#404040") # 선택안됨: 회색 + return handler + + chip.clicked_key.connect(make_handler(key)) + return chip + + create_new_old_chip("신차", True) + create_new_old_chip("구차", False) + + new_old_layout.addStretch() + + row = QWidget() + row_layout = QHBoxLayout(row) + row_layout.setContentsMargins(0, 0, 0, 0) + row_layout.setSpacing(12) + + label = QLabel("신차/구차") + label.setMinimumWidth(100) + row_layout.addWidget(label) + row_layout.addWidget(new_old_container, 1) + + self.content_layout.addWidget(row) + + # 제조사 + self.manufacturer_input = QLineEdit() + self.manufacturer_input.setPlaceholderText("제조사명 입력") + self._add_form_row("제조사", self.manufacturer_input) + + # 도입일 + self.introduction_date_input = QDateEdit() + self.introduction_date_input.setCalendarPopup(True) + self.introduction_date_input.setDate(QDate.currentDate()) + self.introduction_date_input.setDisplayFormat("yyyy-MM-dd") + self._add_form_row("도입일", self.introduction_date_input) + + # 배속지 (필터 칩 사용) + depot_container = QWidget() + depot_layout = QHBoxLayout(depot_container) + depot_layout.setContentsMargins(0, 0, 0, 0) + depot_layout.setSpacing(8) + + self.depot_group = QButtonGroup() + self.depot_group.setExclusive(True) + self.selected_depot_edit = "신평" # 기본값 + + def create_depot_chip(text: str, key: str): + # 초기 상태: 신평이 기본값 + is_selected = (key == "신평") + bg_color = "#3b82f6" if is_selected else "#404040" + + chip = ChoiceChipButton(text=text, key=key, bg=bg_color) + self.depot_group.addButton(chip) + depot_layout.addWidget(chip) + + if is_selected: + chip.setChecked(True) + + def make_handler(depot_key: str): + def handler(): + self.selected_depot_edit = depot_key + # 선택된 칩 색상 변경 + for btn in self.depot_group.buttons(): + if isinstance(btn, ChoiceChipButton): + if btn.key == depot_key: + btn.set_bg("#3b82f6") # 선택됨: 파란색 + else: + btn.set_bg("#404040") # 선택안됨: 회색 + return handler + + chip.clicked_key.connect(make_handler(key)) + return chip + + create_depot_chip("신평", "신평") + create_depot_chip("노포", "노포") + + depot_layout.addStretch() + + row = QWidget() + row_layout = QHBoxLayout(row) + row_layout.setContentsMargins(0, 0, 0, 0) + row_layout.setSpacing(12) + + label = QLabel("배속지") + label.setMinimumWidth(100) + row_layout.addWidget(label) + row_layout.addWidget(depot_container, 1) + + self.content_layout.addWidget(row) + + # 별칭 + self.alias_input = QLineEdit() + self.alias_input.setPlaceholderText("별칭 입력") + self._add_form_row("별칭", self.alias_input) + + # 도입단계 + self.stage_input = QLineEdit() + self.stage_input.setPlaceholderText("도입단계 입력") + self._add_form_row("도입단계", self.stage_input) + + # 도입량 + self.count_input = QSpinBox() + self.count_input.setMinimum(0) + self.count_input.setMaximum(9999) + self.count_input.setValue(0) + self._add_form_row("도입량", self.count_input) + + # 버튼 + self.add_confirm_cancel_buttons() + + def _add_form_row(self, label_text: str, widget: QWidget): + """폼 행 추가""" + row = QWidget() + row_layout = QHBoxLayout(row) + row_layout.setContentsMargins(0, 0, 0, 0) + row_layout.setSpacing(12) + + label = QLabel(label_text) + label.setMinimumWidth(100) + row_layout.addWidget(label) + + row_layout.addWidget(widget, 1) + + self.content_layout.addWidget(row) + + def _load_formation_data(self, formation: Dict[str, Any]): + """편성 데이터 로드""" + self.train_number_input.setText(formation.get('train_number', '')) + + # 신차/구차 설정 + is_new = bool(formation.get('is_new_train', True)) + self.is_new_train = is_new + for btn in self.new_old_group.buttons(): + if isinstance(btn, ChoiceChipButton): + if btn.key == str(is_new): + btn.setChecked(True) + btn.set_bg("#3b82f6") # 선택됨: 파란색 + else: + btn.setChecked(False) + btn.set_bg("#404040") # 선택안됨: 회색 + + manufacturer = formation.get('manufacturer', '') + if manufacturer: + self.manufacturer_input.setText(manufacturer) + + intro_date = formation.get('introduction_date') + if intro_date: + if isinstance(intro_date, str): + date_obj = QDate.fromString(intro_date, "yyyy-MM-dd") + else: + date_obj = QDate.fromString(intro_date.strftime('%Y-%m-%d'), "yyyy-MM-dd") + if date_obj.isValid(): + self.introduction_date_input.setDate(date_obj) + + # 배속지 설정 + depot = formation.get('depot', '') + self.selected_depot_edit = depot + for btn in self.depot_group.buttons(): + if isinstance(btn, ChoiceChipButton): + if btn.key == depot: + btn.setChecked(True) + btn.set_bg("#3b82f6") # 선택됨: 파란색 + else: + btn.setChecked(False) + btn.set_bg("#404040") # 선택안됨: 회색 + + alias = formation.get('alias', '') + if alias: + self.alias_input.setText(alias) + + stage = formation.get('introduction_stage', '') + if stage: + self.stage_input.setText(stage) + + count = formation.get('introduction_count', 0) + self.count_input.setValue(int(count) if count else 0) + + def _apply_black_theme(self): + """블랙 테마 적용""" + self.setStyleSheet(""" + QDialog { + background-color: #0a0a0a; + } + + #dialogContainer { + background-color: #1a1a1a; + border: 1px solid #333333; + border-radius: 16px; + } + + #dialogTitle { + color: #ffffff; + font-family: 'GmarketSans'; + font-size: 18pt; + font-weight: bold; + } + + #closeButton { + background-color: transparent; + border: none; + color: #ffffff; + font-size: 16px; + border-radius: 16px; + } + + #closeButton:hover { + background-color: #dc2626; + color: white; + } + + QLabel { + color: #e0e0e0; + font-family: 'GmarketSans'; + font-size: 11pt; + } + + QLineEdit, QComboBox, QDateEdit, QSpinBox { + background-color: #2a2a2a; + color: #ffffff; + border: 1px solid #404040; + border-radius: 6px; + padding: 8px 12px; + font-family: 'GmarketSans'; + font-size: 11pt; + } + + QLineEdit:focus, QComboBox:focus, QDateEdit:focus, QSpinBox:focus { + border-color: #3b82f6; + outline: none; + } + + QComboBox::drop-down { + border: none; + background-color: #404040; + width: 30px; + } + + QComboBox::down-arrow { + image: none; + border-left: 5px solid transparent; + border-right: 5px solid transparent; + border-top: 6px solid #ffffff; + width: 0; + height: 0; + } + + QComboBox QAbstractItemView { + background-color: #2a2a2a; + color: #ffffff; + border: 1px solid #404040; + selection-background-color: #3b82f6; + } + + QDateEdit::drop-down { + border: none; + background-color: #404040; + width: 30px; + } + + QPushButton { + background-color: #3b82f6; + color: white; + border: none; + border-radius: 8px; + padding: 8px 20px; + font-family: 'GmarketSans'; + font-size: 11pt; + font-weight: bold; + } + + QPushButton:hover { + background-color: #2563eb; + } + + QPushButton:pressed { + background-color: #1d4ed8; + } + + QPushButton#editBtn { + background-color: #64748b; + } + + QPushButton#editBtn:hover { + background-color: #475569; + } + + QPushButton#deleteBtn { + background-color: #ef4444; + } + + QPushButton#deleteBtn:hover { + background-color: #dc2626; + } + + QCheckBox { + color: #ffffff; + font-family: 'GmarketSans'; + font-size: 11pt; + } + + QCheckBox::indicator { + width: 18px; + height: 18px; + border: 2px solid #404040; + border-radius: 4px; + background-color: #2a2a2a; + } + + QCheckBox::indicator:checked { + background-color: #3b82f6; + border-color: #3b82f6; + } + """) + + def _on_confirm(self): + """확인 버튼 클릭""" + train_number = self.train_number_input.text().strip() + + if not train_number: + QMessageBox.warning(self, "입력 오류", "편성번호를 입력해주세요.") + return + + try: + is_new = 1 if self.is_new_train else 0 + manufacturer = self.manufacturer_input.text().strip() or None + qdate = self.introduction_date_input.date() + intro_date = date(qdate.year(), qdate.month(), qdate.day()) if qdate.isValid() else None + depot = self.selected_depot_edit or None + alias = self.alias_input.text().strip() or None + stage = self.stage_input.text().strip() or None + count = self.count_input.value() + + if self.formation: + # 수정 + self.db.execute(""" + UPDATE train_formations + SET train_number = ?, is_new_train = ?, manufacturer = ?, + introduction_date = ?, depot = ?, alias = ?, + introduction_stage = ?, introduction_count = ?, + updated_at = CURRENT_TIMESTAMP + WHERE id = ? + """, ( + train_number, is_new, manufacturer, intro_date, + depot, alias, stage, count, self.formation.get('id') + )) + else: + # 추가 + self.db.execute(""" + INSERT INTO train_formations + (train_number, is_new_train, manufacturer, introduction_date, + depot, alias, introduction_stage, introduction_count) + VALUES (?, ?, ?, ?, ?, ?, ?, ?) + """, ( + train_number, is_new, manufacturer, intro_date, + depot, alias, stage, count + )) + + self.db.commit() + self.accept() + + except Exception as e: + logger.error(f"편성 저장 실패: {e}") + QMessageBox.critical(self, "오류", f"저장 중 오류가 발생했습니다: {e}") diff --git a/ui/dialogs/train_input_dialog.py b/ui/dialogs/train_input_dialog.py new file mode 100644 index 0000000..cd9c980 --- /dev/null +++ b/ui/dialogs/train_input_dialog.py @@ -0,0 +1,456 @@ +# -*- coding: utf-8 -*- +""" +편성 입력 다이얼로그 모듈 +일상검수 편성 입력을 위한 다이얼로그입니다. +""" + +from datetime import date +from typing import Optional, List, Dict, Any + +from PySide6.QtWidgets import ( + QWidget, QVBoxLayout, QHBoxLayout, QLabel, + QPushButton, QFrame, QScrollArea, QButtonGroup, + QTextEdit, QCheckBox, QLineEdit +) +from PySide6.QtCore import Qt, Signal +from PySide6.QtGui import QFont + +from ui.base.base_dialog import BaseDialog +from ui.components.chips.choice_chip_button import ChoiceChipButton +from ui.components.flow_layout import FlowLayout +from ui.components.train_selection import TrainSelectionWidget +from core.config import ConfigManager +from core.logger import get_logger +from database.common_db_manager import CommonDatabaseManager + +logger = get_logger(__name__) + + + + + +class CleaningChip(QPushButton): + """ + 청소유형 선택 칩 + + 청소유형을 표시하며, 유형에 따라 다른 아이콘을 표시합니다. + - 없음: 기본 + - 중청소: 파란 네모 □ + - 대청소: 빨간 동그라미 ○ + """ + + chip_selected = Signal(str) # cleaning_type + + def __init__(self, cleaning_type: str, parent=None): + super().__init__(parent) + + self.config = ConfigManager() + self.cleaning_type = cleaning_type + self._is_selected = False + + # 아이콘과 텍스트 설정 + if cleaning_type == "중청소": + self.setText("□ 중청소") + self.icon_color = "#3b82f6" # 파란색 + elif cleaning_type == "대청소": + self.setText("○ 대청소") + self.icon_color = "#ef4444" # 빨간색 + else: + self.setText("없음") + self.icon_color = "#64748b" + + self.setMinimumWidth(80) + self.setFixedHeight(36) + self.setCursor(Qt.PointingHandCursor) + self.setFont(QFont("GmarketSans", 11, QFont.Bold)) + + self.clicked.connect(self._on_clicked) + self._apply_style() + + def _on_clicked(self): + """클릭 이벤트""" + self.chip_selected.emit(self.cleaning_type) + + def set_selected(self, selected: bool): + """선택 상태 설정""" + self._is_selected = selected + self._apply_style() + + def _apply_style(self): + """스타일 적용""" + theme = self.config.theme + + if self._is_selected: + self.setStyleSheet(f""" + QPushButton {{ + background-color: {self.icon_color}; + color: white; + border: 3px solid {'#1d4ed8' if self.cleaning_type == '중청소' else '#b91c1c' if self.cleaning_type == '대청소' else '#475569'}; + border-radius: 8px; + padding: 0 12px; + font-weight: bold; + }} + """) + else: + if theme == 'dark': + bg = "#334155" + text = "#94a3b8" + else: + bg = "#e2e8f0" + text = "#64748b" + + self.setStyleSheet(f""" + QPushButton {{ + background-color: {bg}; + color: {text}; + border: 2px solid transparent; + border-radius: 8px; + padding: 0 12px; + }} + QPushButton:hover {{ + background-color: {self.icon_color}; + color: white; + }} + """) + + +class WorkChip(QPushButton): + """ + 작업여부 선택 칩 + + 작업여부를 표시합니다. + - 없음: 기본 + - 있음: 노란색 느낌표 + """ + + chip_selected = Signal(bool) # has_work + + def __init__(self, has_work: bool, label: str, parent=None): + super().__init__(parent) + + self.config = ConfigManager() + self.has_work = has_work + self.label = label + self._is_selected = False + + # 텍스트 설정 + if has_work: + self.setText("! 있음") + self.icon_color = "#f59e0b" # 노란색 + else: + self.setText("없음") + self.icon_color = "#64748b" + + self.setMinimumWidth(70) + self.setFixedHeight(36) + self.setCursor(Qt.PointingHandCursor) + self.setFont(QFont("GmarketSans", 11, QFont.Bold)) + + self.clicked.connect(self._on_clicked) + self._apply_style() + + def _on_clicked(self): + """클릭 이벤트""" + self.chip_selected.emit(self.has_work) + + def set_selected(self, selected: bool): + """선택 상태 설정""" + self._is_selected = selected + self._apply_style() + + def _apply_style(self): + """스타일 적용""" + theme = self.config.theme + + if self._is_selected: + self.setStyleSheet(f""" + QPushButton {{ + background-color: {self.icon_color}; + color: white; + border: 3px solid {'#d97706' if self.has_work else '#475569'}; + border-radius: 8px; + padding: 0 12px; + font-weight: bold; + }} + """) + else: + if theme == 'dark': + bg = "#334155" + text = "#94a3b8" + else: + bg = "#e2e8f0" + text = "#64748b" + + self.setStyleSheet(f""" + QPushButton {{ + background-color: {bg}; + color: {text}; + border: 2px solid transparent; + border-radius: 8px; + padding: 0 12px; + }} + QPushButton:hover {{ + background-color: {self.icon_color}; + color: white; + }} + """) + + +class TrainInputDialog(BaseDialog): + """ + 편성 입력 다이얼로그 + + 일상검수 편성 및 청소 유형을 입력합니다. + """ + + def __init__( + self, + parent=None, + shift_type: str = "", + slot_number: int = 0, + inspection_date: date = None, + existing_trains: List[str] = None + ): + super().__init__( + parent, + title=f"{shift_type} {slot_number}번 슬롯", + width=420, + height=700 + ) + + self.db = CommonDatabaseManager() + self.shift_type = shift_type + self.slot_number = slot_number + self.inspection_date = inspection_date or date.today() + self.existing_trains = existing_trains or [] + + self._selected_train_number: str = "" + self._selected_cleaning: str = "없음" + self._selected_has_work: bool = False + self._work_content: str = "" + self._is_work_completed: bool = False + + # self._train_chips: List[TrainChip] = [] # Removed + self._cleaning_chips: List[CleaningChip] = [] + self._work_chips: List[WorkChip] = [] + + self._setup_fields() + self.add_confirm_cancel_buttons() + + def _setup_fields(self): + """필드 설정""" + theme = self.config.theme + text_color = "#f8fafc" if theme == 'dark' else "#1e293b" + sub_text_color = "#94a3b8" if theme == 'dark' else "#64748b" + border_color = "#334155" if theme == 'dark' else "#e2e8f0" + + # === 편성번호 섹션 === + train_section = QWidget() + train_layout = QVBoxLayout(train_section) + train_layout.setContentsMargins(0, 0, 0, 0) + train_layout.setSpacing(8) + + # 헤더 (라벨 + 토글) + header = QWidget() + header_layout = QHBoxLayout(header) + header_layout.setContentsMargins(0, 0, 0, 0) + header_layout.setSpacing(8) + + train_label = QLabel("편성번호") + train_label.setFont(QFont("GmarketSans", 12, QFont.Bold)) + train_label.setStyleSheet(f"color: {text_color};") + header_layout.addWidget(train_label) + + required_mark = QLabel("*") + required_mark.setFont(QFont("GmarketSans", 12, QFont.Bold)) + required_mark.setStyleSheet("color: #ef4444;") + header_layout.addWidget(required_mark) + + header_layout.addStretch() + + # 편성 선택 위젯 + self.train_selection = TrainSelectionWidget(existing_trains=self.existing_trains) + self.train_selection.train_selected.connect(self._on_train_selected) + train_layout.addWidget(self.train_selection) + + self.content_layout.addWidget(train_section) + + # 구분선 + separator1 = QFrame() + separator1.setFrameShape(QFrame.HLine) + separator1.setStyleSheet(f"color: {border_color};") + self.content_layout.addWidget(separator1) + + # === 청소유형 섹션 === + cleaning_section = QWidget() + cleaning_layout = QVBoxLayout(cleaning_section) + cleaning_layout.setContentsMargins(0, 0, 0, 0) + cleaning_layout.setSpacing(8) + + cleaning_label = QLabel("청소유형") + cleaning_label.setFont(QFont("GmarketSans", 12, QFont.Bold)) + cleaning_label.setStyleSheet(f"color: {text_color};") + cleaning_layout.addWidget(cleaning_label) + + # 청소유형 칩 컨테이너 + cleaning_container = QWidget() + cleaning_chip_layout = QHBoxLayout(cleaning_container) + cleaning_chip_layout.setContentsMargins(0, 0, 0, 0) + cleaning_chip_layout.setSpacing(8) + + cleaning_options = ["없음", "중청소", "대청소"] + for option in cleaning_options: + chip = CleaningChip(option) + chip.chip_selected.connect(self._on_cleaning_selected) + self._cleaning_chips.append(chip) + cleaning_chip_layout.addWidget(chip) + + # 기본 선택: 없음 + self._cleaning_chips[0].set_selected(True) + + cleaning_chip_layout.addStretch() + cleaning_layout.addWidget(cleaning_container) + + self.content_layout.addWidget(cleaning_section) + + # 구분선 + separator2 = QFrame() + separator2.setFrameShape(QFrame.HLine) + separator2.setStyleSheet(f"color: {border_color};") + self.content_layout.addWidget(separator2) + + # === 작업여부 섹션 === + work_section = QWidget() + work_layout = QVBoxLayout(work_section) + work_layout.setContentsMargins(0, 0, 0, 0) + work_layout.setSpacing(8) + + work_label = QLabel("작업여부") + work_label.setFont(QFont("GmarketSans", 12, QFont.Bold)) + work_label.setStyleSheet(f"color: {text_color};") + work_layout.addWidget(work_label) + + # 작업여부 칩 컨테이너 + work_container = QWidget() + work_chip_layout = QHBoxLayout(work_container) + work_chip_layout.setContentsMargins(0, 0, 0, 0) + work_chip_layout.setSpacing(8) + + # 없음, 있음 칩 + work_none = WorkChip(False, "없음") + work_none.chip_selected.connect(self._on_work_selected) + self._work_chips.append(work_none) + work_chip_layout.addWidget(work_none) + + work_has = WorkChip(True, "있음") + work_has.chip_selected.connect(self._on_work_selected) + self._work_chips.append(work_has) + work_chip_layout.addWidget(work_has) + + # 기본 선택: 없음 + self._work_chips[0].set_selected(True) + + work_chip_layout.addStretch() + work_layout.addWidget(work_container) + + # 작업 상세 입력 (작업 있음 선택 시 표시) + self.work_detail_container = QWidget() + work_detail_layout = QVBoxLayout(self.work_detail_container) + work_detail_layout.setContentsMargins(0, 0, 0, 0) + work_detail_layout.setSpacing(8) + + # 작업 내용 입력 + work_content_label = QLabel("작업 내용") + work_content_label.setFont(QFont("GmarketSans", 11)) + work_content_label.setStyleSheet(f"color: {text_color};") + work_detail_layout.addWidget(work_content_label) + + self.work_content_edit = QTextEdit() + self.work_content_edit.setPlaceholderText("작업 내용을 입력하세요...") + self.work_content_edit.setFixedHeight(80) + self.work_content_edit.setStyleSheet(f""" + QTextEdit {{ + background-color: {'#334155' if theme == 'dark' else '#f1f5f9'}; + border: 1px solid {border_color}; + border-radius: 8px; + padding: 8px; + color: {text_color}; + }} + """) + work_detail_layout.addWidget(self.work_content_edit) + + # 작업 완료 여부 + self.work_completed_check = QCheckBox("작업 완료") + self.work_completed_check.setFont(QFont("GmarketSans", 11)) + self.work_completed_check.setStyleSheet(f""" + QCheckBox {{ + color: {text_color}; + spacing: 8px; + }} + QCheckBox::indicator {{ + width: 20px; + height: 20px; + border: 2px solid {border_color}; + border-radius: 4px; + }} + QCheckBox::indicator:checked {{ + background-color: #3b82f6; + border-color: #3b82f6; + image: url(resources/icons/check.png); /* 아이콘이 없다면 체크 표시만 */ + }} + """) + work_detail_layout.addWidget(self.work_completed_check) + + self.work_detail_container.setVisible(False) + work_layout.addWidget(self.work_detail_container) + + + self.content_layout.addWidget(work_section) + self.content_layout.addStretch() + + # 초기 편성 칩 생성 (신평 모드로 시작) + # self._load_trains(depot_filter="신평") # Handled by widget + + # def _load_trains(self, depot_filter: str = None): ... (Removed) + + # def _create_train_chips(self, trains: List[Dict[str, Any]]): ... (Removed) + + # def _on_depot_filter_changed(self, depot: str): ... (Removed) + + def _on_train_selected(self, train_number: str): + """편성 선택""" + self._selected_train_number = train_number + + # 라벨 업데이트 (Optional, widget handles selection visual) + # theme = self.config.theme + # text_color = "#f8fafc" if theme == 'dark' else "#1e293b" + # self.selected_train_label.setText(f"선택: {train_number}") + # self.selected_train_label.setStyleSheet(f"color: {text_color}; font-weight: bold;") + + def _on_cleaning_selected(self, cleaning_type: str): + """청소유형 선택""" + for chip in self._cleaning_chips: + chip.set_selected(chip.cleaning_type == cleaning_type) + + self._selected_cleaning = cleaning_type + + def _on_work_selected(self, has_work: bool): + """작업여부 선택""" + for chip in self._work_chips: + chip.set_selected(chip.has_work == has_work) + + self._selected_has_work = has_work + self.work_detail_container.setVisible(has_work) + + # 다이얼로그 크기 조정 (내용에 맞게) + self.adjustSize() + + def get_data(self) -> dict: + """입력 데이터 반환""" + return { + "train_number": self._selected_train_number, + "cleaning_type": self._selected_cleaning, + "has_work": self._selected_has_work, + "work_content": self.work_content_edit.toPlainText(), + "is_work_completed": self.work_completed_check.isChecked(), + } diff --git a/ui/dialogs/ui_settings_dialog.py b/ui/dialogs/ui_settings_dialog.py new file mode 100644 index 0000000..e44d93a --- /dev/null +++ b/ui/dialogs/ui_settings_dialog.py @@ -0,0 +1,209 @@ +# -*- coding: utf-8 -*- +""" +UI 설정 다이얼로그 모듈 +섹션별 필드의 보이기/숨기기를 설정하는 다이얼로그입니다. +""" + +from PySide6.QtWidgets import ( + QWidget, QVBoxLayout, QHBoxLayout, QTabWidget, + QLabel, QFrame, QScrollArea, QCheckBox, + QGroupBox, QGridLayout +) +from PySide6.QtCore import Qt +from PySide6.QtGui import QFont + +from ui.base.base_dialog import BaseDialog +from ui.components.custom_button import CustomButton +from core.config import ConfigManager +from core.logger import get_logger + +logger = get_logger(__name__) + + +class UiSettingsDialog(BaseDialog): + """ + UI 설정 다이얼로그 + + 섹션별 필드의 보이기/숨기기를 설정합니다. + """ + + # 섹션별 필드 정의 + SECTION_FIELDS = { + "지시": [ + ("created_date", "생성일", True), # 필수 필드는 항상 표시 + ("created_team", "생성팀", True), + ("instructor", "지시자", False), + ("instruction_content", "지시내용", False), + ("instruction_date", "지시일자", False), + ("is_continuous", "지속", False), + ("team_confirmations", "확인팀", False), + ("is_completed", "완료", False), + ], + "고장": [ + ("created_date", "생성일", True), + ("created_team", "생성팀", True), + ("occurrence_date", "발생일", False), + ("train_number", "편성", False), + ("car_number", "호차", False), + ("fault_code", "고장코드", False), + ("device_category", "장치분류", False), + ("occurrence_station", "발생역", False), + ("occurrence_time", "발생시간", False), + ("fault_content", "고장내용", False), + ("action_content", "조치내용", False), + ("action_team", "조치팀", False), + ("team_confirmations", "확인팀", False), + ("is_completed", "완료", False), + ], + "작업": [ + ("created_date", "생성일", True), + ("created_team", "생성팀", True), + ("work_date", "작업일", False), + ("work_entity", "작업주체", False), + ("target_train", "대상편성", False), + ("target_device", "대상기기", False), + ("work_content", "작업내용", False), + ("remarks", "특이사항", False), + ("team_confirmations", "확인팀", False), + ("is_completed", "완료", False), + ], + "기타": [ + ("created_date", "생성일", True), + ("created_team", "생성팀", True), + ("reporter", "전달자", False), + ("report_content", "전달내용", False), + ("remarks", "특이사항", False), + ("related_document", "관련문서", False), + ("team_confirmations", "확인팀", False), + ("is_completed", "완료", False), + ], + } + + def __init__(self, parent=None): + super().__init__(parent, title="UI 설정", width=600, height=700, resizable=True) + + self.config = ConfigManager() + self.field_checkboxes = {} # 섹션별 필드 체크박스 저장 + + self._setup_tabs() + self.add_confirm_cancel_buttons("저장", "취소") + + def _setup_tabs(self): + """탭 설정""" + self.tabs = QTabWidget() + self.tabs.setFont(QFont("GmarketSans", 12)) + + # 각 섹션별 탭 생성 + for section_name in self.SECTION_FIELDS.keys(): + tab = self._create_section_tab(section_name) + self.tabs.addTab(tab, section_name) + + # 스타일 적용 + theme = self.config.theme + if theme == 'dark': + self.tabs.setStyleSheet(""" + QTabWidget::pane { + border: 1px solid #334155; + border-radius: 8px; + background-color: #1e293b; + } + QTabBar::tab { + background-color: #1e293b; + color: #94a3b8; + padding: 8px 16px; + border-top-left-radius: 6px; + border-top-right-radius: 6px; + } + QTabBar::tab:selected { + background-color: #334155; + color: #f8fafc; + } + """) + else: + self.tabs.setStyleSheet(""" + QTabWidget::pane { + border: 1px solid #e2e8f0; + border-radius: 8px; + background-color: #ffffff; + } + QTabBar::tab { + background-color: #f8fafc; + color: #64748b; + padding: 8px 16px; + border-top-left-radius: 6px; + border-top-right-radius: 6px; + } + QTabBar::tab:selected { + background-color: #ffffff; + color: #1e293b; + } + """) + + self.content_layout.addWidget(self.tabs) + + def _create_section_tab(self, section_name: str) -> QWidget: + """섹션별 탭 생성""" + widget = QWidget() + layout = QVBoxLayout(widget) + layout.setContentsMargins(20, 20, 20, 20) + layout.setSpacing(20) + + # 설명 라벨 + info_label = QLabel(f"{section_name} 섹션의 표시할 필드를 선택하세요.") + info_label.setWordWrap(True) + layout.addWidget(info_label) + + # 스크롤 영역 + scroll = QScrollArea() + scroll.setWidgetResizable(True) + scroll.setFrameShape(QFrame.NoFrame) + + scroll_widget = QWidget() + scroll_layout = QVBoxLayout(scroll_widget) + scroll_layout.setContentsMargins(0, 0, 0, 0) + scroll_layout.setSpacing(10) + + # 필드 체크박스들 + self.field_checkboxes[section_name] = {} + fields = self.SECTION_FIELDS[section_name] + + for field_name, field_label, is_required in fields: + checkbox = QCheckBox(field_label) + + # 필수 필드는 체크 불가능하게 설정 + if is_required: + checkbox.setChecked(True) + checkbox.setEnabled(False) + checkbox.setStyleSheet("color: #64748b;") # 회색으로 표시 + else: + # 설정에서 읽어오기 + config_key = f"field_visible_{section_name}_{field_name}" + is_visible = self.config.get('ui', config_key, True) + checkbox.setChecked(is_visible) + + self.field_checkboxes[section_name][field_name] = checkbox + scroll_layout.addWidget(checkbox) + + scroll_layout.addStretch() + scroll.setWidget(scroll_widget) + layout.addWidget(scroll) + + return widget + + def accept(self): + """저장""" + # 설정 저장 + for section_name, checkboxes in self.field_checkboxes.items(): + for field_name, checkbox in checkboxes.items(): + config_key = f"field_visible_{section_name}_{field_name}" + self.config.set('ui', config_key, checkbox.isChecked()) + + self.config.save() + logger.info("UI 설정 저장 완료") + + super().accept() + + + + + diff --git a/ui/dialogs/user_management_dialog.py b/ui/dialogs/user_management_dialog.py new file mode 100644 index 0000000..4b6a980 --- /dev/null +++ b/ui/dialogs/user_management_dialog.py @@ -0,0 +1,34 @@ +# -*- coding: utf-8 -*- +""" +사용자 관리 다이얼로그 모듈 +사용자 관리를 위한 다이얼로그입니다. +""" + +from ui.base.base_dialog import BaseDialog +from core.logger import get_logger + +logger = get_logger(__name__) + + +class UserManagementDialog(BaseDialog): + """ + 사용자 관리 다이얼로그 + + 사용자 추가, 편집, 삭제를 위한 다이얼로그입니다. + (추후 구현) + """ + + def __init__(self, parent=None): + super().__init__(parent, title="사용자 관리", width=600, height=450) + + # TODO: 사용자 관리 UI 구현 + from PySide6.QtWidgets import QLabel + from PySide6.QtCore import Qt + + info = QLabel("사용자 관리 기능은 추후 구현 예정입니다.") + info.setAlignment(Qt.AlignCenter) + self.content_layout.addWidget(info) + + self.add_button("닫기", self.accept, primary=True) + + diff --git a/ui/dialogs/weather_detail_dialog.py b/ui/dialogs/weather_detail_dialog.py new file mode 100644 index 0000000..895c798 --- /dev/null +++ b/ui/dialogs/weather_detail_dialog.py @@ -0,0 +1,368 @@ +# -*- coding: utf-8 -*- +""" +날씨 상세 다이얼로그 모듈 +3일간의 상세 날씨 정보를 표시합니다. +""" + +from datetime import datetime +from PySide6.QtWidgets import ( + QWidget, QVBoxLayout, QHBoxLayout, QLabel, QTableWidget, + QTableWidgetItem, QHeaderView, QScrollArea, QFrame +) +from PySide6.QtCore import Qt +from PySide6.QtGui import QFont + +from ui.base.base_dialog import BaseDialog +from core.config import ConfigManager +from core.logger import get_logger +from services.weather_service import WeatherService + +logger = get_logger(__name__) + + +class WeatherDetailDialog(BaseDialog): + """ + 날씨 상세 다이얼로그 + + 3일간의 1시간 단위 날씨 정보를 표시합니다. + 온도, 체감온도, 강수량, 바람세기 등을 포함합니다. + """ + + def __init__(self, parent=None): + self.config = ConfigManager() + self.weather_service = WeatherService() + + location_name = self.config.get('weather', 'location_name', '부산') + super().__init__( + parent, + title=f"날씨 상세 정보 - {location_name}", + width=900, + height=700, + resizable=True + ) + + self._setup_content() + self.add_button("닫기", self.accept, primary=True) + self._load_weather_data() + + def _setup_content(self): + """컨텐츠 설정""" + theme = self.config.theme + is_dark = theme == 'dark' + + # 스크롤 영역 + scroll = QScrollArea() + scroll.setWidgetResizable(True) + scroll.setHorizontalScrollBarPolicy(Qt.ScrollBarAsNeeded) + + # 스크롤 영역 스타일 (다크 테마 지원) + if is_dark: + scroll.setStyleSheet(""" + QScrollArea { + background-color: #1e293b; + border: none; + } + QScrollBar:vertical { + background-color: #1e293b; + width: 10px; + border-radius: 5px; + } + QScrollBar::handle:vertical { + background-color: #475569; + border-radius: 5px; + min-height: 20px; + } + QScrollBar::handle:vertical:hover { + background-color: #64748b; + } + QScrollBar::add-line:vertical, QScrollBar::sub-line:vertical { + height: 0px; + } + """) + else: + scroll.setStyleSheet(""" + QScrollArea { + background-color: #ffffff; + border: none; + } + """) + + content = QWidget() + # 컨텐츠 위젯 배경색 설정 + if is_dark: + content.setStyleSheet("background-color: #1e293b;") + else: + content.setStyleSheet("background-color: #ffffff;") + + layout = QVBoxLayout(content) + layout.setContentsMargins(16, 16, 16, 16) + layout.setSpacing(16) + + # 현재 날씨 정보 + self._create_current_weather_section(layout) + + # 구분선 + separator = QFrame() + separator.setFrameShape(QFrame.HLine) + separator.setStyleSheet(f""" + QFrame {{ + color: {'#334155' if is_dark else '#e2e8f0'}; + max-height: 1px; + }} + """) + layout.addWidget(separator) + + # 3일간 예보 테이블 + self._create_forecast_table(layout) + + # 특보 정보 + self._create_warning_section(layout) + + scroll.setWidget(content) + self.content_layout.addWidget(scroll) + + def _create_current_weather_section(self, layout: QVBoxLayout): + """현재 날씨 섹션 생성""" + theme = self.config.theme + is_dark = theme == 'dark' + + current_widget = QWidget() + current_layout = QHBoxLayout(current_widget) + current_layout.setContentsMargins(0, 0, 0, 0) + current_layout.setSpacing(16) + + # 현재 날씨 데이터 가져오기 + weather_data = self.weather_service.get_last_weather() + logger.debug(f"현재 날씨 데이터: {weather_data}") + + # 아이콘 + icon_label = QLabel(weather_data.get("icon", "🌤")) + icon_label.setFont(QFont("Segoe UI Emoji", 48)) + current_layout.addWidget(icon_label) + + # 정보 + info_widget = QWidget() + info_layout = QVBoxLayout(info_widget) + info_layout.setContentsMargins(0, 0, 0, 0) + info_layout.setSpacing(4) + + # 온도 표시 (기온(체감온도) 형식) + temp = weather_data.get('temp') + feels_like = weather_data.get("feels_like") + + # 데이터 검증 및 안전한 표시 + if temp is not None and isinstance(temp, (int, float)): + if feels_like is not None and isinstance(feels_like, (int, float)): + temp_text = f"{temp}°C({feels_like}°C)" + else: + temp_text = f"{temp}°C" + else: + temp_text = "--°C" + + temp_label = QLabel(temp_text) + temp_label.setFont(QFont("GmarketSans", 32, QFont.Bold)) + temp_label.setStyleSheet(f"color: {'#f8fafc' if is_dark else '#1e293b'};") + info_layout.addWidget(temp_label) + + condition_label = QLabel(weather_data.get("condition", "정보 없음")) + condition_label.setFont(QFont("GmarketSans", 16)) + condition_label.setStyleSheet(f"color: {'#94a3b8' if is_dark else '#64748b'};") + info_layout.addWidget(condition_label) + + # 추가 정보 + detail_layout = QHBoxLayout() + detail_layout.setSpacing(16) + + humidity = weather_data.get("humidity") + wind_speed = weather_data.get("wind_speed", "--") + precipitation_prob = weather_data.get("precipitation_prob") + + # 습도 + if humidity is not None and isinstance(humidity, (int, float)): + humidity_label = QLabel(f"습도: {humidity}%") + humidity_label.setFont(QFont("GmarketSans", 12)) + humidity_label.setStyleSheet(f"color: {'#94a3b8' if is_dark else '#64748b'};") + detail_layout.addWidget(humidity_label) + + # 강수확률 + if precipitation_prob is not None and isinstance(precipitation_prob, (int, float)): + prob_label = QLabel(f"강수확률: {precipitation_prob}%") + prob_label.setFont(QFont("GmarketSans", 12)) + prob_label.setStyleSheet(f"color: {'#94a3b8' if is_dark else '#64748b'};") + detail_layout.addWidget(prob_label) + + # 바람 + if wind_speed and wind_speed != "--": + wind_label = QLabel(f"바람: {wind_speed}") + wind_label.setFont(QFont("GmarketSans", 12)) + wind_label.setStyleSheet(f"color: {'#94a3b8' if is_dark else '#64748b'};") + detail_layout.addWidget(wind_label) + + detail_layout.addStretch() + info_layout.addLayout(detail_layout) + + current_layout.addWidget(info_widget) + current_layout.addStretch() + + layout.addWidget(current_widget) + + def _create_forecast_table(self, layout: QVBoxLayout): + """예보 테이블 생성""" + theme = self.config.theme + is_dark = theme == 'dark' + + # 테이블 생성 + self.forecast_table = QTableWidget() + self.forecast_table.setColumnCount(6) + self.forecast_table.setHorizontalHeaderLabels([ + "날짜/시간", "온도", "체감온도", "강수확률", "바람", "날씨" + ]) + self.forecast_table.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch) + self.forecast_table.verticalHeader().setVisible(False) + self.forecast_table.setSelectionMode(QTableWidget.NoSelection) + self.forecast_table.setEditTriggers(QTableWidget.NoEditTriggers) + + # 테이블 스타일 + if is_dark: + self.forecast_table.setStyleSheet(""" + QTableWidget { + background-color: #1e293b; + color: #f8fafc; + border: 1px solid #334155; + border-radius: 8px; + gridline-color: #334155; + } + QTableWidget::item { + padding: 8px; + } + QHeaderView::section { + background-color: #334155; + color: #f8fafc; + padding: 8px; + border: none; + font-weight: bold; + } + """) + else: + self.forecast_table.setStyleSheet(""" + QTableWidget { + background-color: #ffffff; + color: #1e293b; + border: 1px solid #e2e8f0; + border-radius: 8px; + gridline-color: #e2e8f0; + } + QTableWidget::item { + padding: 8px; + } + QHeaderView::section { + background-color: #e2e8f0; + color: #1e293b; + padding: 8px; + border: none; + font-weight: bold; + } + """) + + layout.addWidget(self.forecast_table) + + def _create_warning_section(self, layout: QVBoxLayout): + """특보 정보 섹션 생성""" + theme = self.config.theme + is_dark = theme == 'dark' + + warning_label = QLabel("특보 정보") + warning_label.setFont(QFont("GmarketSans", 14, QFont.Bold)) + warning_label.setStyleSheet(f"color: {'#f8fafc' if is_dark else '#1e293b'};") + layout.addWidget(warning_label) + + self.warning_text = QLabel("특보 정보가 없습니다.") + self.warning_text.setFont(QFont("GmarketSans", 12)) + self.warning_text.setStyleSheet(f""" + color: {'#94a3b8' if is_dark else '#64748b'}; + padding: 8px; + border: 1px solid {'#334155' if is_dark else '#e2e8f0'}; + border-radius: 4px; + """) + self.warning_text.setWordWrap(True) + layout.addWidget(self.warning_text) + + def _load_weather_data(self): + """날씨 데이터 로드""" + try: + # WeatherService에서 모든 날씨 아이템 가져오기 + weather_items = self.weather_service.get_all_weather_items() + + if not weather_items: + # 데이터가 없으면 메시지 표시 + self.forecast_table.setRowCount(1) + no_data_item = QTableWidgetItem("날씨 데이터를 불러올 수 없습니다. 잠시 후 다시 시도해주세요.") + no_data_item.setTextAlignment(Qt.AlignCenter) + self.forecast_table.setItem(0, 0, no_data_item) + self.forecast_table.setSpan(0, 0, 1, 6) + self.warning_text.setText("날씨 정보를 불러올 수 없습니다.") + return + + # 최대 3일치 데이터만 표시 (약 72시간) + max_items = min(len(weather_items), 72) + display_items = weather_items[:max_items] + + # 테이블에 데이터 추가 + self.forecast_table.setRowCount(len(display_items)) + + for row_idx, item in enumerate(display_items): + # 날짜/시간 + dt = item.get('datetime') + if dt: + dt_str = dt.strftime("%m/%d %H:%M") + else: + date_str = item.get('date', '') + time_str = item.get('time', '') + dt_str = f"{date_str} {time_str}" if date_str and time_str else "-" + + dt_item = QTableWidgetItem(dt_str) + self.forecast_table.setItem(row_idx, 0, dt_item) + + # 온도 + temp = item.get('temp') + temp_str = f"{temp}°C" if temp is not None else "-" + temp_item = QTableWidgetItem(temp_str) + self.forecast_table.setItem(row_idx, 1, temp_item) + + # 체감온도 + feels_like = item.get('feels_like') + feels_str = f"{feels_like}°C" if feels_like is not None else "-" + feels_item = QTableWidgetItem(feels_str) + self.forecast_table.setItem(row_idx, 2, feels_item) + + # 강수확률 (강수량 대신 강수확률 표시) + prob = item.get('precipitation_prob') + prob_str = f"{prob}%" if prob is not None else "-" + prec_item = QTableWidgetItem(prob_str) + self.forecast_table.setItem(row_idx, 3, prec_item) + + # 바람 + wind = item.get('wind', '-') + wind_str = str(wind) if wind != '-' else "-" + wind_item = QTableWidgetItem(wind_str) + self.forecast_table.setItem(row_idx, 4, wind_item) + + # 날씨 + weather = item.get('weather', '정보 없음') + icon = item.get('icon', '🌤') + weather_str = f"{icon} {weather}" + weather_item = QTableWidgetItem(weather_str) + self.forecast_table.setItem(row_idx, 5, weather_item) + + # 특보 정보 + self.warning_text.setText("현재 특보 정보가 없습니다.") + + except Exception as e: + logger.error(f"날씨 데이터 로드 실패: {e}") + self.forecast_table.setRowCount(1) + error_item = QTableWidgetItem(f"오류: {str(e)}") + error_item.setTextAlignment(Qt.AlignCenter) + self.forecast_table.setItem(0, 0, error_item) + self.forecast_table.setSpan(0, 0, 1, 6) + self.warning_text.setText("날씨 정보를 불러오는 중 오류가 발생했습니다.") + diff --git a/ui/dialogs/weather_location_dialog.py b/ui/dialogs/weather_location_dialog.py new file mode 100644 index 0000000..96c0d54 --- /dev/null +++ b/ui/dialogs/weather_location_dialog.py @@ -0,0 +1,140 @@ +# -*- coding: utf-8 -*- +""" +날씨 지역 설정 다이얼로그 모듈 +날씨 정보를 표시할 지역을 설정합니다. +""" + +from PySide6.QtWidgets import QLabel +from PySide6.QtGui import QFont + +from ui.base.base_dialog import BaseDialog +from ui.components.custom_input import CustomComboBox, LabeledInput +from core.config import ConfigManager +from core.logger import get_logger + +logger = get_logger(__name__) + +# 주요 도시 목록 +CITIES = [ + "서울", "부산", "대구", "인천", "광주", "대전", "울산", + "수원", "고양", "용인", "성남", "부천", "화성", "안산", + "안양", "평택", "의정부", "시흥", "김포", "광명", "이천" +] + +# 도시별 좌표 (위도, 경도) +CITY_COORDINATES = { + "서울": (37.5665, 126.9780), + "부산": (35.1796, 129.0756), + "대구": (35.8714, 128.6014), + "인천": (37.4563, 126.7052), + "광주": (35.1595, 126.8526), + "대전": (36.3504, 127.3845), + "울산": (35.5384, 129.3114), + "수원": (37.2636, 127.0286), + "고양": (37.6584, 126.8320), + "용인": (37.2411, 127.1776), + "성남": (37.4201, 127.1267), + "부천": (37.5034, 126.7660), + "화성": (37.1995, 126.8311), + "안산": (37.3219, 126.8309), + "안양": (37.3925, 126.9269), + "평택": (36.9909, 127.0856), + "의정부": (37.7381, 127.0477), + "시흥": (37.3800, 126.8029), + "김포": (37.6156, 126.7155), + "광명": (37.4783, 126.8646), + "이천": (37.2720, 127.4420), +} + +# 도시별 기상청 지역 코드 +CITY_CODES = { + "서울": "1168000000", + "부산": "2638057200", + "대구": "2720000000", + "인천": "2810000000", + "광주": "2911000000", + "대전": "3011000000", + "울산": "3117000000", + "수원": "4111000000", + "고양": "4128000000", + "용인": "4146000000", + "성남": "4113000000", + "부천": "4119000000", + "화성": "4159000000", + "안산": "4127000000", + "안양": "4117000000", + "평택": "4122000000", + "의정부": "4115000000", + "시흥": "4153000000", + "김포": "4157000000", + "광명": "4121000000", + "이천": "4150000000", +} + + +class WeatherLocationDialog(BaseDialog): + """ + 날씨 지역 설정 다이얼로그 + + 날씨 정보를 표시할 지역을 선택합니다. + """ + + def __init__(self, parent=None): + self.config = ConfigManager() + + super().__init__( + parent, + title="날씨 지역 설정", + width=400, + height=300, + resizable=False + ) + + self._setup_content() + self.add_confirm_cancel_buttons("저장", "취소") + + def _setup_content(self): + """컨텐츠 설정""" + theme = self.config.theme + is_dark = theme == 'dark' + + # 설명 + info = QLabel("날씨 정보를 표시할 지역을 선택하세요.") + info.setFont(QFont("GmarketSans", 11)) + info.setStyleSheet(f"color: {'#94a3b8' if is_dark else '#64748b'};") + info.setWordWrap(True) + self.content_layout.addWidget(info) + + # 지역 선택 + self.location_combo = CustomComboBox(items=CITIES) + current_location = self.config.get('weather', 'location_name', '부산') + if current_location in CITIES: + self.location_combo.set_selected_value(current_location) + else: + self.location_combo.set_selected_value('부산') + + self.content_layout.addWidget( + LabeledInput("지역", self.location_combo) + ) + + self.content_layout.addStretch() + + def _on_confirm(self): + """저장 버튼 클릭""" + selected_city = self.location_combo.currentText() + + if selected_city in CITY_COORDINATES: + lat, lon = CITY_COORDINATES[selected_city] + code = CITY_CODES.get(selected_city, "2638057200") # 기본값: 부산 + + # 설정 저장 + self.config.set('weather', 'location_name', selected_city) + self.config.set('weather', 'location_lat', lat) + self.config.set('weather', 'location_lon', lon) + self.config.set('weather', 'location_code', code) # 지역 코드도 저장 + self.config.save() + + logger.info("날씨 지역 변경: %s (%.4f, %.4f, %s)", selected_city, lat, lon, code) + + self.accept() + diff --git a/ui/main_window.py b/ui/main_window.py new file mode 100644 index 0000000..090138a --- /dev/null +++ b/ui/main_window.py @@ -0,0 +1,483 @@ +# -*- coding: utf-8 -*- +""" +메인 윈도우 모듈 +애플리케이션의 메인 윈도우를 정의합니다. + +이 모듈은 다음을 포함합니다: +- 메인 윈도우 레이아웃 +- 메뉴바 +- 인포바, 컨텐츠, 상태바 통합 +""" + +import sys +from PySide6.QtWidgets import ( + QMainWindow, QWidget, QVBoxLayout, QMenuBar, QMenu, + QSystemTrayIcon, QApplication, QMessageBox +) +from PySide6.QtCore import Qt, QTimer +from PySide6.QtGui import QIcon, QAction, QFont, QFontDatabase + +from ui.panels.info_bar import InfoBar +from ui.panels.content_panel import ContentPanel +from ui.panels.status_bar import StatusBar +from ui.dialogs.login_dialog import LoginDialog +from ui.dialogs.settings_dialog import SettingsDialog +from core.config import ConfigManager +from core.signals import GlobalSignals +from core.constants import APP_NAME, APP_VERSION, FONTS_DIR +from core.logger import get_logger, setup_logger +from database.db_manager import DatabaseManager +from services.auth_service import AuthService +from services.weather_service import WeatherService +from services.update_service import UpdateService + +# 로거 설정 +logger = get_logger(__name__) + + +class MainWindow(QMainWindow): + """ + 메인 윈도우 클래스 + + 애플리케이션의 메인 윈도우입니다. + 인포바, 컨텐츠 패널, 상태바를 포함합니다. + + Examples: + >>> app = QApplication(sys.argv) + >>> window = MainWindow() + >>> window.show() + >>> app.exec() + """ + + def __init__(self, config_manager: ConfigManager = None): + super().__init__() + + # 설정 및 시그널 + self.config = config_manager or ConfigManager() + self.signals = GlobalSignals() + + # 서비스 초기화 + self._init_services() + + # 폰트 로드 + self._load_fonts() + + # UI 설정 + self._setup_window() + self._setup_menu() + self._setup_ui() + + # 시그널 연결 + self._connect_signals() + + # 초기 데이터 로드 + QTimer.singleShot(100, self._initial_load) + + logger.info("메인 윈도우 초기화 완료") + + def _init_services(self): + """서비스 초기화""" + # 데이터베이스 + self.db = DatabaseManager() + + # 인증 서비스 + self.auth = AuthService() + + # 날씨 서비스 + self.weather = WeatherService() + + # 업데이트 서비스 + self.update_service = UpdateService() + + def _load_fonts(self): + """폰트 로드""" + # GmarketSans 폰트 로드 시도 + font_paths = [ + FONTS_DIR / "GmarketSans" / "GmarketSansTTFLight.ttf", + FONTS_DIR / "GmarketSans" / "GmarketSansTTFMedium.ttf", + FONTS_DIR / "GmarketSans" / "GmarketSansTTFBold.ttf", + ] + + for path in font_paths: + if path.exists(): + font_id = QFontDatabase.addApplicationFont(str(path)) + if font_id >= 0: + logger.debug(f"폰트 로드: {path.name}") + + # 기본 폰트 설정 + app = QApplication.instance() + if app: + font = QFont("GmarketSans", 12) + app.setFont(font) + + def _setup_window(self): + """윈도우 설정""" + self.setWindowTitle(f"{APP_NAME} v{APP_VERSION}") + + # 윈도우 크기 + width = self.config.get('layout', 'window_width', 1600) + height = self.config.get('layout', 'window_height', 900) + self.resize(width, height) + + # 윈도우 위치 + x = self.config.get('layout', 'window_x', -1) + y = self.config.get('layout', 'window_y', -1) + + if x >= 0 and y >= 0: + self.move(x, y) + else: + # 화면 중앙 + screen = QApplication.primaryScreen().geometry() + self.move( + (screen.width() - width) // 2, + (screen.height() - height) // 2 + ) + + # 테마 적용 + self._apply_theme() + + def _setup_menu(self): + """메뉴바 설정""" + menubar = self.menuBar() + menubar.setFont(QFont("GmarketSans", 11)) + + # 파일 메뉴 + file_menu = menubar.addMenu("파일(&F)") + + refresh_action = QAction("새로고침", self) + refresh_action.setShortcut("F5") + refresh_action.triggered.connect(self._on_refresh) + file_menu.addAction(refresh_action) + + file_menu.addSeparator() + + exit_action = QAction("종료(&X)", self) + exit_action.setShortcut("Alt+F4") + exit_action.triggered.connect(self.close) + file_menu.addAction(exit_action) + + # 편집 메뉴 + edit_menu = menubar.addMenu("편집(&E)") + + # 전동차 편성관리 + train_formation_action = QAction("전동차 편성관리...", self) + train_formation_action.triggered.connect(self._on_train_formation_management) + edit_menu.addAction(train_formation_action) + + # 보기 메뉴 + view_menu = menubar.addMenu("보기(&V)") + + # 설정 메뉴 + settings_menu = menubar.addMenu("설정(&S)") + + settings_action = QAction("환경설정...", self) + settings_action.triggered.connect(self._on_settings) + settings_menu.addAction(settings_action) + + ui_settings_action = QAction("UI 설정...", self) + ui_settings_action.triggered.connect(self._on_ui_settings) + settings_menu.addAction(ui_settings_action) + + # 날씨 지역 설정 + weather_location_action = QAction("날씨 지역 설정...", self) + weather_location_action.triggered.connect(self._on_weather_location_settings) + settings_menu.addAction(weather_location_action) + + settings_menu.addSeparator() + + # 테마 서브메뉴 + theme_menu = settings_menu.addMenu("테마") + + dark_action = QAction("다크 테마", self) + dark_action.setCheckable(True) + dark_action.setChecked(self.config.theme == 'dark') + dark_action.triggered.connect(lambda: self._change_theme('dark')) + theme_menu.addAction(dark_action) + + light_action = QAction("라이트 테마", self) + light_action.setCheckable(True) + light_action.setChecked(self.config.theme == 'light') + light_action.triggered.connect(lambda: self._change_theme('light')) + theme_menu.addAction(light_action) + + self._theme_actions = [dark_action, light_action] + + # 도움말 메뉴 + help_menu = menubar.addMenu("도움말(&H)") + + about_action = QAction("정보", self) + about_action.triggered.connect(self._on_about) + help_menu.addAction(about_action) + + check_update_action = QAction("업데이트 확인", self) + check_update_action.triggered.connect(self._on_check_update) + help_menu.addAction(check_update_action) + + def _setup_ui(self): + """UI 설정""" + # 중앙 위젯 + central_widget = QWidget() + self.setCentralWidget(central_widget) + + # 메인 레이아웃 + layout = QVBoxLayout(central_widget) + layout.setContentsMargins(0, 0, 0, 0) + layout.setSpacing(0) + + # 인포바 (상단 10%) + self.info_bar = InfoBar() + layout.addWidget(self.info_bar) + + # 컨텐츠 패널 (중앙 80%) + self.content_panel = ContentPanel() + layout.addWidget(self.content_panel, 1) + + # 상태바 (하단 10%) + self.status_bar = StatusBar() + layout.addWidget(self.status_bar) + + def _apply_theme(self): + """테마 적용""" + theme = self.config.theme + + if theme == 'dark': + bg = "#0f172a" + text = "#f8fafc" + border = "#334155" + menu_bg = "#1e293b" + menu_hover = "#334155" + else: + bg = "#f8fafc" + text = "#1e293b" + border = "#e2e8f0" + menu_bg = "#ffffff" + menu_hover = "#f1f5f9" + + self.setStyleSheet(f""" + QMainWindow {{ + background-color: {bg}; + }} + + QMenuBar {{ + background-color: {menu_bg}; + color: {text}; + border-bottom: 1px solid {border}; + padding: 4px; + }} + + QMenuBar::item {{ + padding: 6px 12px; + border-radius: 4px; + }} + + QMenuBar::item:selected {{ + background-color: {menu_hover}; + }} + + QMenu {{ + background-color: {menu_bg}; + color: {text}; + border: 1px solid {border}; + border-radius: 8px; + padding: 4px; + }} + + QMenu::item {{ + padding: 8px 24px; + border-radius: 4px; + }} + + QMenu::item:selected {{ + background-color: {menu_hover}; + }} + + QMenu::separator {{ + height: 1px; + background-color: {border}; + margin: 4px 8px; + }} + """) + + def _connect_signals(self): + """시그널 연결""" + # 테마 변경 + self.signals.theme_changed.connect(self._on_theme_changed) + + # 앱 종료 요청 + self.signals.app_quit_requested.connect(self.close) + + # 날씨 업데이트 + self.signals.weather_updated.connect(self._on_weather_updated) + + # 날씨 지역 변경 + self.signals.weather_location_changed.connect(self._on_weather_location_changed) + + # 날씨 새로고침 요청 + self.signals.weather_refresh_requested.connect(self._on_weather_refresh_requested) + + # 업데이트 가능 + self.signals.update_available.connect(self._on_update_available) + + def _initial_load(self): + """초기 데이터 로드""" + # 컨텐츠 로드 + self.content_panel.refresh_all() + + # 날씨 업데이트 시작 + self.weather.start() + + # 업데이트 확인 + if self.config.get('app', 'check_updates', True): + self.update_service.check_for_updates() + + # 상태바 메시지 + self.status_bar.show_message("준비 완료", 3000) + + # ======================================================================== + # 이벤트 핸들러 + # ======================================================================== + + def _on_refresh(self): + """새로고침""" + self.content_panel.refresh_all() + self.status_bar.show_message("새로고침 완료", 2000) + + def _on_settings(self): + """설정 다이얼로그""" + dialog = SettingsDialog(self) + dialog.exec() + + def _on_ui_settings(self): + """UI 설정 다이얼로그""" + # 환경설정과 동일한 다이얼로그 사용 + dialog = SettingsDialog(self) + dialog.exec() + + def _on_about(self): + """정보 다이얼로그""" + from ui.base.base_dialog import BaseDialog + from PySide6.QtWidgets import QLabel + from PySide6.QtCore import Qt + + dialog = BaseDialog(self, title="정보", width=350, height=250) + + info = QLabel(f""" +
    +

    {APP_NAME}

    +

    버전 {APP_VERSION}

    +
    +

    전동차 운용실 업무 인수인계 및
    고장관리 프로그램

    +
    +

    © 2026 검수팀

    +
    + """) + info.setAlignment(Qt.AlignCenter) + dialog.content_layout.addWidget(info) + + dialog.add_button("확인", dialog.accept, primary=True) + dialog.exec() + + def _on_check_update(self): + """업데이트 확인""" + self.update_service.check_for_updates(show_no_update=True) + + def _on_weather_location_settings(self): + """날씨 지역 설정""" + from ui.dialogs.weather_location_dialog import WeatherLocationDialog + + dialog = WeatherLocationDialog(self) + if dialog.exec(): + # 날씨 정보 다시 로드 + self._on_weather_location_changed() + self.status_bar.show_message("날씨 지역이 변경되었습니다.", 2000) + + def _on_train_formation_management(self): + """전동차 편성관리 다이얼로그""" + from ui.dialogs.train_formation_dialog import TrainFormationDialog + + dialog = TrainFormationDialog(self) + dialog.exec() + + def _on_weather_location_changed(self): + """날씨 지역 변경 시그널 수신""" + # 날씨 정보 강제 새로고침 (지역 변경 시) + self.weather.update_weather(force_refresh=True) + + def _on_weather_refresh_requested(self): + """날씨 새로고침 요청""" + self.weather.refresh() + self.status_bar.show_message("날씨 정보 새로고침 중...", 2000) + + def _change_theme(self, theme: str): + """테마 변경""" + self.config.theme = theme + self.config.save() + self.signals.theme_changed.emit(theme) + + # 체크 상태 업데이트 + for action in self._theme_actions: + if action.text() == "다크 테마": + action.setChecked(theme == 'dark') + else: + action.setChecked(theme == 'light') + + def _on_theme_changed(self, theme: str): + """테마 변경 시그널 수신""" + self._apply_theme() + + # 상태바 메시지 + theme_name = "다크" if theme == 'dark' else "라이트" + self.status_bar.show_message(f"{theme_name} 테마로 변경되었습니다.", 2000) + + def _on_weather_updated(self, weather_json: str): + """날씨 업데이트 수신""" + import json + try: + data = json.loads(weather_json) + self.info_bar.update_weather(data) + except json.JSONDecodeError: + pass + + def _on_update_available(self, version: str): + """업데이트 가능 시그널 수신""" + reply = QMessageBox.question( + self, + "업데이트 가능", + f"새로운 버전(v{version})이 있습니다.\n지금 업데이트하시겠습니까?\n\n(업데이트 시 프로그램이 재시작됩니다.)", + QMessageBox.Yes | QMessageBox.No, + QMessageBox.Yes + ) + + if reply == QMessageBox.Yes: + self.update_service.trigger_update() + + # ======================================================================== + # 윈도우 이벤트 + # ======================================================================== + + def closeEvent(self, event): + """윈도우 닫힘 이벤트""" + # 윈도우 크기/위치 저장 + self.config.set('layout', 'window_width', self.width()) + self.config.set('layout', 'window_height', self.height()) + self.config.set('layout', 'window_x', self.x()) + self.config.set('layout', 'window_y', self.y()) + self.config.save() + + # 서비스 정리 + self.weather.stop() + + # 데이터베이스 연결 종료 + self.db.close() + + logger.info("애플리케이션 종료") + event.accept() + + def resizeEvent(self, event): + """윈도우 크기 변경 이벤트""" + super().resizeEvent(event) + + def moveEvent(self, event): + """윈도우 이동 이벤트""" + super().moveEvent(event) + diff --git a/ui/panels/__init__.py b/ui/panels/__init__.py new file mode 100644 index 0000000..e622709 --- /dev/null +++ b/ui/panels/__init__.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +""" +패널 UI 패키지 +영역별 UI 패널 정의 (인포바, 상태바, 컨텐츠 등) +""" + +from .info_bar import InfoBar +from .status_bar import StatusBar +from .content_panel import ContentPanel +from .section_panel import SectionPanel +from .todo_panel import TodoPanel + +__all__ = [ + 'InfoBar', + 'StatusBar', + 'ContentPanel', + 'SectionPanel', + 'TodoPanel', +] + + diff --git a/ui/panels/content_panel.py b/ui/panels/content_panel.py new file mode 100644 index 0000000..0de4440 --- /dev/null +++ b/ui/panels/content_panel.py @@ -0,0 +1,141 @@ +# -*- coding: utf-8 -*- +""" +컨텐츠 패널 모듈 +화면 중앙의 메인 컨텐츠 영역입니다. + +섹션 패널(왼쪽 70%)과 Todo 패널(오른쪽 30%)을 포함합니다. +""" + +from PySide6.QtWidgets import QWidget, QHBoxLayout +from PySide6.QtCore import Qt + +from ui.base.base_widget import BaseWidget +from ui.components.splitter import CustomSplitter +from .section_panel import SectionPanel +from .todo_panel import TodoPanel +from core.config import ConfigManager +from core.signals import GlobalSignals +from core.logger import get_logger + +logger = get_logger(__name__) + + +class ContentPanel(BaseWidget): + """ + 컨텐츠 패널 위젯 + + 화면 중앙 80% 영역에 표시되는 메인 컨텐츠 영역입니다. + 분리바로 구분된 섹션 패널과 Todo 패널을 포함합니다. + + Examples: + >>> content = ContentPanel() + >>> content.section_panel.load_data() + """ + + def __init__(self, parent=None): + super().__init__(parent) + + self._setup_ui() + self._connect_signals() + + logger.info("컨텐츠 패널 초기화 완료") + + def _setup_ui(self): + """UI 설정""" + layout = QHBoxLayout(self) + layout.setContentsMargins(0, 0, 0, 0) + layout.setSpacing(0) + + # 분리바 (수평) + self.splitter = CustomSplitter(Qt.Horizontal) + + # 섹션 패널 (왼쪽) + self.section_panel = SectionPanel() + self.splitter.addWidget(self.section_panel) + + # Todo 패널 (오른쪽) + self.todo_panel = TodoPanel() + self.splitter.addWidget(self.todo_panel) + + # 초기 비율 설정 (저장된 값 불러오기) - showEvent에서 처리 + # self._restore_layout() + + # 비율 변경 저장 + self.splitter.splitterMoved.connect(self._on_splitter_moved) + + layout.addWidget(self.splitter) + + # 스타일 적용 + self._apply_style() + + # 레이아웃 복원 여부 플래그 + self._layout_restored = False + + def showEvent(self, event): + """화면 표시 이벤트""" + super().showEvent(event) + if not self._layout_restored: + self._restore_layout() + self._layout_restored = True + + def _restore_layout(self): + """레이아웃 복원""" + # 위젯 너비가 유효하지 않으면 대기 + if self.width() <= 0: + return + + # 기본값 60:40 + default_section = 60.0 + default_todo = 40.0 + + try: + section_ratio = float(self.config.get('layout', 'section_panel_ratio', default_section)) + todo_ratio = float(self.config.get('layout', 'todo_panel_ratio', default_todo)) + except (ValueError, TypeError): + section_ratio = default_section + todo_ratio = default_todo + + logger.debug(f"레이아웃 복원: section={section_ratio}, todo={todo_ratio}") + self.splitter.set_ratios([section_ratio, todo_ratio]) + + def _apply_style(self): + """스타일 적용""" + theme = self.config.theme + + if theme == 'dark': + bg = "#0f172a" + else: + bg = "#f1f5f9" + + self.setStyleSheet(f""" + ContentPanel {{ + background-color: {bg}; + }} + """) + + def _connect_signals(self): + """시그널 연결""" + self.signals.layout_changed.connect(self._on_layout_changed) + + def _on_splitter_moved(self, pos: int, index: int): + """분리바 이동""" + ratios = self.splitter.get_ratios() + + # 설정 저장 + self.config.set('layout', 'section_panel_ratio', ratios[0]) + self.config.set('layout', 'todo_panel_ratio', ratios[1]) + self.config.save() + + logger.debug(f"레이아웃 비율 변경 및 저장: {ratios}") + + def _on_layout_changed(self): + """레이아웃 변경 시그널""" + # 레이아웃 변경 시그널이 오면 저장된 값을 다시 불러옴 (초기화 아님) + self._restore_layout() + + def refresh_all(self): + """모든 데이터 새로고침""" + self.section_panel.refresh_data() + self.todo_panel.refresh_data() + + diff --git a/ui/panels/info_bar.py b/ui/panels/info_bar.py new file mode 100644 index 0000000..528325a --- /dev/null +++ b/ui/panels/info_bar.py @@ -0,0 +1,1079 @@ +# -*- coding: utf-8 -*- +""" +인포바 모듈 +화면 상단의 정보 표시 바입니다. + +오늘 날짜, 현재 팀, 근무 유형, 날씨 정보 등을 표시합니다. +""" + +from datetime import datetime, date +import webbrowser +from PySide6.QtWidgets import ( + QWidget, QHBoxLayout, QVBoxLayout, QLabel, QFrame, QMenu, QMessageBox +) +from PySide6.QtCore import Qt, Signal, QTimer, QPoint +from PySide6.QtGui import QFont, QAction, QMouseEvent, QEnterEvent, QCursor + + +from ui.widgets.clickableLabel import ClickableLabel + +from ui.base.base_widget import BaseWidget +from ui.components.custom_button import CustomButton +from ui.dialogs.duty_dialog import DutyChangeDialog +from ui.dialogs.weather_detail_dialog import WeatherDetailDialog +from ui.dialogs.weather_location_dialog import WeatherLocationDialog +from ui.dialogs.settings_dialog import SettingsDialog +from core.constants import TEAMS +from core.logger import get_logger +from database.crud import CRUDManager +from ui.dialogs.handover_dialog import HandoverDialog +from services.weather_service import WeatherService + +logger = get_logger(__name__) + +class InfoBar(BaseWidget): + """ + 인포바 위젯 + + 화면 상단 10% 영역에 표시되는 정보 바입니다. + 날짜, 팀, 근무 유형, 팀 변경 버튼, 당무 정보, 날씨 정보 등을 포함합니다. + + Signals: + team_change_requested: 팀 변경 요청 시그널 + duty_change_requested: 당무 변경 요청 시그널 + team_settings_requested: 팀 인원 설정 요청 시그널 + + Examples: + >>> info_bar = InfoBar() + >>> info_bar.update_weather({"temp": 15, "condition": "맑음"}) + """ + + team_change_requested = Signal() + duty_change_requested = Signal() + team_settings_requested = Signal() + + def __init__(self, parent=None): + super().__init__(parent) + + self._current_date = date.today() + self._current_team = self.config.current_team + self._current_shift = self.config.current_shift + self._weather_data = {} + + self.crud = CRUDManager() + self.duty_dialog = DutyChangeDialog() + self.handover_dialog = HandoverDialog() + self.weather_service = WeatherService() + + # 당무 정보 + self._duty_vice_leader = "" # 당무 부팀장 + self._duty_operator = "" # 당무 운용 + + self._setup_ui() + self._connect_signals() + self._start_clock() + self._load_duty_info() + self._update_weather_time() # 초기 날씨 시간 표시 + + logger.info("인포바 초기화 완료") + + def _setup_ui(self): + """UI 설정""" + layout = QHBoxLayout(self) + layout.setContentsMargins(24, 12, 24, 12) + layout.setSpacing(24) + + # 날짜 정보 + self._create_date_section(layout) + + # 구분선 + self._add_separator(layout) + + # 팀/근무 통합 정보 + self._create_team_shift_section(layout) + + # 구분선 + self._add_separator(layout) + + # 당무 정보 섹션 + self._create_duty_section(layout) + + # 늘어남 영역 + layout.addStretch() + + # 인수/인계 버튼 + self._create_handover_button(layout) + + # 구분선 + self._add_separator(layout) + + # 팀 인원 설정 버튼 + self._create_team_settings_button(layout) + + # 구분선 + self._add_separator(layout) + + # 시계 + self._create_clock(layout) + + # 구분선 + self._add_separator(layout) + + # 날씨 정보 + self._create_weather_section(layout) + + # 스타일 적용 + self._apply_style() + + def _create_date_section(self, layout: QHBoxLayout): + """날짜 섹션 생성""" + date_widget = QWidget() + date_layout = QVBoxLayout(date_widget) + date_layout.setContentsMargins(0, 0, 0, 0) + date_layout.setSpacing(2) + + # 년월일 + self.date_label = QLabel() + self.date_label.setObjectName("dateLabel") + self.date_label.setFont(QFont("GmarketSans", 18, QFont.Bold)) + + # 요일 + self.weekday_label = QLabel() + self.weekday_label.setObjectName("weekdayLabel") + self.weekday_label.setFont(QFont("GmarketSans", 12)) + + self._update_date() + + date_layout.addWidget(self.date_label) + date_layout.addWidget(self.weekday_label) + + layout.addWidget(date_widget) + + def _create_team_shift_section(self, layout: QHBoxLayout): + """팀/근무 통합 섹션 생성""" + team_shift_widget = QWidget() + team_shift_layout = QVBoxLayout(team_shift_widget) + team_shift_layout.setContentsMargins(0, 0, 0, 0) + team_shift_layout.setSpacing(2) + + team_shift_title = QLabel("현재 팀/근무") + team_shift_title.setObjectName("sectionTitle") + team_shift_title.setFont(QFont("GmarketSans", 11)) + + # 팀/근무 통합 레이블 (더블클릭 가능) + shift_icon = "☀️" if self._current_shift == "주간" else "🌙" + self.team_shift_label = ClickableLabel(f"{self._current_team} {self._current_shift} {shift_icon}") + self.team_shift_label.setObjectName("teamShiftLabel") + self.team_shift_label.setFont(QFont("GmarketSans", 20, QFont.Bold)) + # 더블클릭 이벤트 연결 + self.team_shift_label.clicked.connect(self._on_team_shift_clicked) + self.team_shift_label.hover_entered.connect(lambda: self._on_team_shift_hover_entered(shift_icon)) + self.team_shift_label.hover_left.connect(lambda: self._on_team_shift_hover_left()) + + + team_shift_layout.addWidget(team_shift_title) + team_shift_layout.addWidget(self.team_shift_label) + + layout.addWidget(team_shift_widget) + + def _on_team_shift_hover_entered(self, shift_icon: str): + """팀/근무 레이블 호버 진입""" + self.team_shift_label.set_hover_text(f"팀 / 근무 변경하기") + def _on_team_shift_hover_left(self): + """팀/근무 레이블 호버 이탈""" + self.team_shift_label.clear_hover_text() + + def _create_duty_section(self, layout: QHBoxLayout): + """당무 정보 섹션 생성""" + duty_widget = QWidget() + duty_layout = QHBoxLayout(duty_widget) + duty_layout.setContentsMargins(0, 0, 0, 0) + duty_layout.setSpacing(16) + + # 부팀장 당무 + vice_leader_widget = QWidget() + vice_leader_layout = QVBoxLayout(vice_leader_widget) + vice_leader_layout.setContentsMargins(0, 0, 0, 0) + vice_leader_layout.setSpacing(2) + + vice_leader_title = QLabel("부팀장 당무") + vice_leader_title.setObjectName("sectionTitle") + vice_leader_title.setFont(QFont("GmarketSans", 11)) + + self.vice_leader_label = ClickableLabel("미지정") + self.vice_leader_label.setObjectName("dutyLabel") + self.vice_leader_label.setFont(QFont("GmarketSans", 14, QFont.Bold)) + self.vice_leader_label.clicked.connect(lambda: self._on_duty_label_clicked("vice_leader")) + self.vice_leader_label.hover_entered.connect(lambda: self._on_duty_label_hover_entered(self.vice_leader_label,"부팀장 당무 변경하기")) + self.vice_leader_label.hover_left.connect(lambda: self._on_duty_label_hover_left(self.vice_leader_label)) + + vice_leader_layout.addWidget(vice_leader_title) + vice_leader_layout.addWidget(self.vice_leader_label) + duty_layout.addWidget(vice_leader_widget) + + # 운용 당무 + operator_widget = QWidget() + operator_layout = QVBoxLayout(operator_widget) + operator_layout.setContentsMargins(0, 0, 0, 0) + operator_layout.setSpacing(2) + + operator_title = QLabel("운용 당무") + operator_title.setObjectName("sectionTitle") + operator_title.setFont(QFont("GmarketSans", 11)) + + self.operator_label = ClickableLabel("미지정") + self.operator_label.setObjectName("dutyLabel") + self.operator_label.setFont(QFont("GmarketSans", 14, QFont.Bold)) + self.operator_label.clicked.connect(lambda: self._on_duty_label_clicked("operator")) + self.operator_label.hover_entered.connect(lambda: self._on_duty_label_hover_entered(self.operator_label, "운용 당무 변경하기")) + self.operator_label.hover_left.connect(lambda: self._on_duty_label_hover_left(self.operator_label)) + + operator_layout.addWidget(operator_title) + operator_layout.addWidget(self.operator_label) + duty_layout.addWidget(operator_widget) + + layout.addWidget(duty_widget) + + def _on_duty_label_hover_entered(self, label: ClickableLabel, hover_text: str): + """당무 레이블 호버 진입""" + label.set_hover_text(hover_text) + def _on_duty_label_hover_left(self, label: ClickableLabel): + """당무 레이블 호버 이탈""" + label.clear_hover_text() + + def _create_handover_button(self, layout: QHBoxLayout): + """인수/인계 버튼 생성""" + self.handover_btn = CustomButton( + "📋 인수/인계", + style_type="primary", + fixed_height=36 + ) + self.handover_btn.clicked.connect(self._on_handover_clicked) + + layout.addWidget(self.handover_btn) + + def _create_team_settings_button(self, layout: QHBoxLayout): + """팀 인원 설정 버튼 생성""" + self.team_settings_btn = CustomButton( + "⚙️ 인원 설정", + style_type="text", + fixed_height=36 + ) + self.team_settings_btn.clicked.connect(self._on_team_settings_clicked) + + layout.addWidget(self.team_settings_btn) + + def _create_clock(self, layout: QHBoxLayout): + """시계 생성""" + self.clock_label = QLabel() + self.clock_label.setObjectName("clockLabel") + self.clock_label.setFont(QFont("GmarketSans", 24, QFont.Bold)) + self.clock_label.setAlignment(Qt.AlignCenter) + + self._update_clock() + + layout.addWidget(self.clock_label) + + def _create_weather_section(self, layout: QHBoxLayout): + """날씨 섹션 생성""" + weather_widget = QWidget() + weather_layout = QHBoxLayout(weather_widget) + weather_layout.setContentsMargins(0, 0, 0, 0) + weather_layout.setSpacing(12) + + # 날씨 아이콘 + self.weather_icon = QLabel("🌤") + self.weather_icon.setFont(QFont("Segoe UI Emoji", 24)) + self.weather_icon.setCursor(Qt.PointingHandCursor) + + # 날씨 정보 + weather_info = QWidget() + weather_info_layout = QVBoxLayout(weather_info) + weather_info_layout.setContentsMargins(0, 0, 0, 0) + weather_info_layout.setSpacing(2) + + self.temp_label = QLabel("--°C") + self.temp_label.setObjectName("tempLabel") + self.temp_label.setFont(QFont("GmarketSans", 16, QFont.Bold)) + self.temp_label.setCursor(Qt.PointingHandCursor) + + self.weather_desc_label = QLabel("날씨 정보 없음") + self.weather_desc_label.setObjectName("weatherDesc") + self.weather_desc_label.setFont(QFont("GmarketSans", 11)) + self.weather_desc_label.setCursor(Qt.PointingHandCursor) + + # 주간조 추가 정보 레이블 + self.weather_extra_label = QLabel("") + self.weather_extra_label.setObjectName("weatherExtra") + self.weather_extra_label.setFont(QFont("GmarketSans", 9)) + self.weather_extra_label.setCursor(Qt.PointingHandCursor) + self.weather_extra_label.hide() # 초기에는 숨김 + + # 가져온 시간 레이블 + self.weather_time_label = QLabel("") + self.weather_time_label.setObjectName("weatherTime") + self.weather_time_label.setFont(QFont("GmarketSans", 9)) + self.weather_time_label.setCursor(Qt.PointingHandCursor) + + weather_info_layout.addWidget(self.temp_label) + weather_info_layout.addWidget(self.weather_desc_label) + weather_info_layout.addWidget(self.weather_extra_label) + weather_info_layout.addWidget(self.weather_time_label) + + weather_layout.addWidget(self.weather_icon) + weather_layout.addWidget(weather_info) + + # 새로고침 버튼 + self.weather_refresh_btn = CustomButton( + "🔄", + style_type="text", + fixed_height=32, + fixed_width=32 + ) + self.weather_refresh_btn.setToolTip("날씨 새로고침") + self.weather_refresh_btn.clicked.connect(self._on_weather_refresh_clicked) + + weather_layout.addWidget(self.weather_refresh_btn) + + # 날씨 위젯 전체에 이벤트 연결 + weather_widget.setCursor(Qt.PointingHandCursor) + weather_widget.mousePressEvent = self._on_weather_clicked + weather_widget.mouseDoubleClickEvent = self._on_weather_double_clicked + weather_widget.setContextMenuPolicy(Qt.CustomContextMenu) + weather_widget.customContextMenuRequested.connect(self._on_weather_right_clicked) + + self.weather_widget = weather_widget # 참조 저장 + + layout.addWidget(weather_widget) + + def _add_separator(self, layout: QHBoxLayout): + """구분선 추가""" + separator = QFrame() + separator.setFrameShape(QFrame.VLine) + separator.setObjectName("separator") + layout.addWidget(separator) + + def _apply_style(self): + """스타일 적용""" + theme = self.config.theme + + if theme == 'dark': + bg = "#0f172a" + text = "#f8fafc" + secondary = "#94a3b8" + accent = "#3b82f6" + separator = "#334155" + else: + bg = "#ffffff" + text = "#1e293b" + secondary = "#64748b" + accent = "#3b82f6" + separator = "#e2e8f0" + + self.setStyleSheet(f""" + InfoBar {{ + background-color: {bg}; + border-bottom: 1px solid {separator}; + }} + + #dateLabel, #clockLabel, #tempLabel {{ + color: {text}; + }} + + #weekdayLabel, #sectionTitle, #weatherDesc, #weatherExtra, #weatherTime {{ + color: {secondary}; + }} + + #teamShiftLabel {{ + color: {accent}; + }} + + #dutyLabel {{ + color: {text}; + }} + + #separator {{ + color: {separator}; + }} + """) + + def _connect_signals(self): + """시그널 연결""" + self.signals.team_changed.connect(self._on_team_changed) + self.signals.shift_changed.connect(self._on_shift_changed) + self.signals.weather_updated.connect(self._on_weather_updated) + self.signals.weather_refresh_requested.connect(self._on_weather_refresh_requested) + + def _start_clock(self): + """시계 타이머 시작""" + self._clock_timer = QTimer() + self._clock_timer.timeout.connect(self._update_clock) + self._clock_timer.start(1000) # 1초마다 업데이트 + + def _update_date(self): + """날짜 업데이트""" + today = date.today() + self._current_date = today + + # 한국어 요일 + weekdays = ["월요일", "화요일", "수요일", "목요일", "금요일", "토요일", "일요일"] + weekday = weekdays[today.weekday()] + + self.date_label.setText(today.strftime("%Y년 %m월 %d일")) + self.weekday_label.setText(weekday) + + def _update_clock(self): + """시계 업데이트""" + now = datetime.now() + self.clock_label.setText(now.strftime("%H:%M:%S")) + + # 날짜가 바뀌었는지 확인 + if now.date() != self._current_date: + self._update_date() + + def _on_team_shift_clicked(self): + """팀/근무 레이블 더블클릭""" + self.team_change_requested.emit() + self._show_team_selector() + + def _on_team_change_clicked(self): + """팀 변경 버튼 클릭 (호환성 유지)""" + self.team_change_requested.emit() + self._show_team_selector() + + def _show_team_selector(self): + """팀 선택 메뉴 표시 (서브메뉴로 주/야 선택)""" + # 메뉴 스타일 + theme = self.config.theme + if theme == 'dark': + menu_style = """ + QMenu { + background-color: #1e293b; + color: #f8fafc; + border: 1px solid #334155; + border-radius: 8px; + padding: 4px; + } + QMenu::item { + padding: 8px 24px; + border-radius: 4px; + } + QMenu::item:selected { + background-color: #3b82f6; + } + QMenu::item:checked { + background-color: #22c55e; + } + QMenu::separator { + height: 1px; + background-color: #334155; + margin: 4px 8px; + } + """ + else: + menu_style = """ + QMenu { + background-color: #ffffff; + color: #1e293b; + border: 1px solid #e2e8f0; + border-radius: 8px; + padding: 4px; + } + QMenu::item { + padding: 8px 24px; + border-radius: 4px; + } + QMenu::item:selected { + background-color: #3b82f6; + color: white; + } + QMenu::item:checked { + background-color: #22c55e; + color: white; + } + QMenu::separator { + height: 1px; + background-color: #e2e8f0; + margin: 4px 8px; + } + """ + + menu = QMenu(self) + menu.setStyleSheet(menu_style) + + # 각 팀마다 서브메뉴로 주간/야간 선택 + for team in TEAMS: + team_menu = menu.addMenu(f"🏢 {team}") + team_menu.setStyleSheet(menu_style) + + # 주간 + day_action = QAction("☀️ 주간", self) + day_action.triggered.connect( + lambda checked, t=team, s="주간": self._select_team_and_shift(t, s) + ) + # 현재 선택된 팀/근무 표시 + if team == self._current_team and self._current_shift == "주간": + day_action.setCheckable(True) + day_action.setChecked(True) + team_menu.addAction(day_action) + + # 야간 + night_action = QAction("🌙 야간", self) + night_action.triggered.connect( + lambda checked, t=team, s="야간": self._select_team_and_shift(t, s) + ) + if team == self._current_team and self._current_shift == "야간": + night_action.setCheckable(True) + night_action.setChecked(True) + team_menu.addAction(night_action) + + # 레이블 위치에 메뉴 표시 + pos = self.team_shift_label.mapToGlobal( + self.team_shift_label.rect().bottomLeft() + ) + menu.exec(pos) + + def _select_team_and_shift(self, team: str, shift: str): + """팀과 근무 유형 동시 선택""" + # 팀 변경 + self._current_team = team + self.config.current_team = team + + # 근무 유형 변경 + self._current_shift = shift + self.config.current_shift = shift + + # 통합 레이블 업데이트 + shift_icon = "☀️" if shift == "주간" else "🌙" + self.team_shift_label.setText(f"{team} {shift} {shift_icon}") + + self.config.save() + + # 당무 정보 업데이트 (팀 변경 시 메시지 표시) + self._load_duty_info(show_message=True) + + # 시그널 발생 (시그널 핸들러에서는 메시지 표시 안 함) + self.signals.team_changed.emit(team) + self.signals.shift_changed.emit(shift) + + logger.info("팀/근무 변경: %s %s", team, shift) + + def _select_team(self, team: str): + """팀 선택""" + self._current_team = team + self.team_label.setText(team) + self.config.current_team = team + self.config.save() + self.signals.team_changed.emit(team) + logger.info("팀 변경: %s", team) + + def _select_shift(self, shift: str): + """근무 유형 선택""" + self._current_shift = shift + self.shift_label.setText(shift) + self.config.current_shift = shift + self.config.save() + self.signals.shift_changed.emit(shift) + logger.info("근무 유형 변경: %s", shift) + + def _on_team_changed(self, team: str): + """팀 변경 시그널 수신""" + self._current_team = team + shift_icon = "☀️" if self._current_shift == "주간" else "🌙" + self.team_shift_label.setText(f"{team} {self._current_shift} {shift_icon}") + # 당무 정보 업데이트 (시그널로 인한 호출이므로 메시지 표시 안 함) + self._load_duty_info(show_message=False) + + def _on_shift_changed(self, shift: str): + """근무 유형 변경 시그널 수신""" + self._current_shift = shift + shift_icon = "☀️" if shift == "주간" else "🌙" + self.team_shift_label.setText(f"{self._current_team} {shift} {shift_icon}") + # 당무 정보 업데이트 (시그널로 인한 호출이므로 메시지 표시 안 함) + self._load_duty_info(show_message=False) + # 날씨 정보 업데이트 (근무 형태 변경으로 인해 표시되는 통계가 바뀔 수 있음) + if self._weather_data: + self.update_weather(self._weather_data) + + def _on_weather_updated(self, weather_json: str): + """날씨 업데이트 시그널 수신""" + import json + try: + data = json.loads(weather_json) + self.update_weather(data) + except json.JSONDecodeError: + pass + + def update_weather(self, data: dict): + """ + 날씨 정보 업데이트 + + Args: + data: 날씨 데이터 + {"temp": 15, "condition": "맑음", "icon": "☀️", ...} + """ + self._weather_data = data + + # 근무 형태에 따른 날씨 정보 가져오기 + try: + shift_weather_data = self.weather_service.get_weather_for_shift(self._current_shift) + except Exception as e: + logger.error(f"근무 형태 날씨 정보 조회 실패: {e}") + shift_weather_data = None + + # 현재 온도 표시 + current_temp = data.get("temp", "--") + current_condition = data.get("condition", "정보 없음") + current_icon = data.get("icon", "🌤") + wind_speed = data.get("wind_speed", "--") + precipitation_prob = data.get("precipitation_prob") + + # 온도 표시 (현재 기온 표시) + if current_temp != "--" and current_temp is not None: + temp_text = f"{current_temp}°C" + else: + temp_text = "--°C" + + self.temp_label.setText(temp_text) + self.weather_icon.setText(current_icon) + + # 날씨 설명 레이블에 날씨 상태, 풍속, 강수 정보 표시 + desc_parts = [current_condition] + + # 풍속 정보 추가 + if wind_speed and wind_speed != "--" and wind_speed != "-": + desc_parts.append(f"바람 {wind_speed}") + + # 강수확률 정보 추가 + if precipitation_prob is not None and precipitation_prob != "--": + desc_parts.append(f"강수 {precipitation_prob}%") + + self.weather_desc_label.setText(" | ".join(desc_parts)) + + # 근무 시간대의 통계 정보 표시 + if shift_weather_data and shift_weather_data.get("data_points", 0) > 0: + extra_parts = [] + + # 최저/최고 기온 + temp_min = shift_weather_data.get("temp_min") + temp_max = shift_weather_data.get("temp_max") + if temp_min is not None and temp_max is not None: + extra_parts.append(f"기온 최저 {temp_min}°C / 최고 {temp_max}°C") + + # 최저/최고 체감온도 + feels_min = shift_weather_data.get("feels_like_min") + feels_max = shift_weather_data.get("feels_like_max") + if feels_min is not None and feels_max is not None and (feels_min != temp_min or feels_max != temp_max): + extra_parts.append(f"체감 최저 {feels_min}°C / 최고 {feels_max}°C") + + # 최대 강수확률 + max_precip = shift_weather_data.get("max_precipitation_prob") + if max_precip is not None and max_precip > 0: + extra_parts.append(f"강수 최대 {max_precip}%") + + if extra_parts: + self.weather_extra_label.setText(" | ".join(extra_parts)) + self.weather_extra_label.show() + else: + self.weather_extra_label.hide() + else: + # 데이터가 없을 경우 기존 로직으로 폴백 + self.weather_extra_label.hide() + + # 가져온 시간 표시 + fetched_at = data.get("fetched_at") + if fetched_at: + try: + fetched_time = datetime.fromisoformat(fetched_at) + time_str = fetched_time.strftime("%H:%M") + self.weather_time_label.setText(f"업데이트: {time_str}") + except (ValueError, TypeError): + self._update_weather_time() + else: + self._update_weather_time() + + def _update_weather_time(self): + """가져온 시간 업데이트""" + try: + from services.weather_service import WEATHER_TIMESTAMP_FILE + if WEATHER_TIMESTAMP_FILE.exists(): + with open(WEATHER_TIMESTAMP_FILE, 'r', encoding='utf-8') as f: + timestamp_str = f.read().strip() + fetched_time = datetime.fromisoformat(timestamp_str) + time_str = fetched_time.strftime("%H:%M") + self.weather_time_label.setText(f"업데이트: {time_str}") + else: + self.weather_time_label.setText("") + except Exception as e: + logger.error(f"날씨 시간 업데이트 실패: {e}") + self.weather_time_label.setText("") + + # ======================================================================== + # 당무 관련 메서드 + # ======================================================================== + + def _load_duty_info(self, show_message: bool = False): + """ + 당무 정보 로드 + + Args: + show_message: 저장되지 않은 경우 메시지를 표시할지 여부 + """ + + try: + today = date.today() + + # 오늘 날짜, 현재 팀, 현재 근무 유형의 당무 정보 조회 + duty = self.crud.get_duty_schedule( + today, + self._current_team, + self._current_shift + ) + + if duty: + self._duty_vice_leader = duty.vice_leader_name or "미지정" + self._duty_operator = duty.operator_name or "미지정" + else: + self._duty_vice_leader = "미지정" + self._duty_operator = "미지정" + + self.vice_leader_label.setText(self._duty_vice_leader) + self.operator_label.setText(self._duty_operator) + + # 저장되지 않은 경우 사용자에게 알림 (팀 변경 시에만) + if show_message and (not duty or (not duty.vice_leader_name and not duty.operator_name)): + logger.info("당무 정보가 저장되지 않음: 팀=%s, 근무=%s", + self._current_team, self._current_shift) + # 사용자에게 알림 메시지 표시 + QMessageBox.information( + self, + "당무 정보 없음", + f"{self._current_team} {self._current_shift}의 당무 정보가 저장되지 않았습니다.\n\n" + f"부팀장 당무와 운용 당무를 클릭하여 설정해주세요." + ) + + except Exception as e: + logger.error("당무 정보 로드 실패: %s", e) + self._duty_vice_leader = "미지정" + self._duty_operator = "미지정" + self.vice_leader_label.setText("미지정") + self.operator_label.setText("미지정") + + def _on_duty_label_clicked(self, duty_type: str): + """당무 레이블 클릭""" + # 간단한 선택 메뉴 표시 + menu = QMenu(self) + theme = self.config.theme + + if theme == 'dark': + menu_style = """ + QMenu { + background-color: #1e293b; + color: #f8fafc; + border: 1px solid #334155; + border-radius: 8px; + padding: 4px; + } + QMenu::item { + padding: 8px 24px; + border-radius: 4px; + } + QMenu::item:selected { + background-color: #3b82f6; + } + """ + else: + menu_style = """ + QMenu { + background-color: #ffffff; + color: #1e293b; + border: 1px solid #e2e8f0; + border-radius: 8px; + padding: 4px; + } + QMenu::item { + padding: 8px 24px; + border-radius: 4px; + } + QMenu::item:selected { + background-color: #3b82f6; + color: white; + } + """ + menu.setStyleSheet(menu_style) + + # 팀 멤버 목록 가져오기 + try: + position = "부팀장" if duty_type == "vice_leader" else "운용" + + # 디버깅: 조회 파라미터 로그 + logger.debug("당무 멤버 조회: 팀=%s, 직책=%s, 활성화만=%s", + self._current_team, position, True) + + # 팀 멤버 목록 가져오기 + members = self.crud.get_team_members_by_team( + self._current_team, + position, + active_only=True + ) + + current_name = self._duty_vice_leader if duty_type == "vice_leader" else self._duty_operator + + # 디버깅: 조회 결과 로그 + logger.debug("조회된 멤버 수: %d", len(members)) + if members: + logger.debug("멤버 목록: %s", [m.name for m in members]) + else: + # 전체 멤버 조회해서 문제 확인 + all_members = self.crud.get_team_members_by_team( + self._current_team, + position=None, + active_only=False + ) + logger.debug("전체 멤버 수 (비활성 포함): %d", len(all_members)) + active_members = self.crud.get_team_members_by_team( + self._current_team, + position=None, + active_only=True + ) + logger.debug("활성 멤버 수: %d", len(active_members)) + if active_members: + logger.debug("활성 멤버 직책: %s", [f"{m.name}({m.position})" for m in active_members]) + + # 멤버 목록이 비어있으면 사용자에게 알림 + if not members: + logger.warning("당무 선택 가능한 멤버가 없습니다: 팀=%s, 직책=%s, 타입=%s", + self._current_team, position, duty_type) + + # 사용자에게 안내 메시지 표시 + QMessageBox.information( + self, + "멤버 없음", + f"{self._current_team}의 {position} 직책 멤버가 없습니다.\n\n" + f"인원 설정에서 {self._current_team}에 {position} 직책의 멤버를 추가해주세요." + ) + return + + # 멤버 목록 추가 + for member in members: + action = QAction(member.name, self) + if member.name == current_name: + action.setCheckable(True) + action.setChecked(True) + action.triggered.connect( + lambda checked, m=member, dt=duty_type: self._select_duty_member(m.name, dt) + ) + menu.addAction(action) + + # 마우스 커서 위치에 메뉴 표시 + menu.exec(QCursor.pos()) + except Exception as e: + logger.error("당무 메뉴 표시 실패: %s", e) + + def _select_duty_member(self, name: str, duty_type: str): + """당무 멤버 선택""" + + today = date.today() + + # 기존 당무 정보 가져오기 + existing_duty = self.crud.get_duty_schedule(today, self._current_team, self._current_shift) + + if duty_type == "vice_leader": + # 부팀장 선택 + members = self.crud.get_team_members_by_team(self._current_team, "부팀장", active_only=True) + member = next((m for m in members if m.name == name), None) + if member: + self.crud.upsert_duty_schedule( + duty_date=today, + team=self._current_team, + shift_type=self._current_shift, + vice_leader_id=member.id, + vice_leader_name=name, + operator_id=existing_duty.operator_id if existing_duty else None, + operator_name=existing_duty.operator_name if existing_duty else "" + ) + self._duty_vice_leader = name + self.vice_leader_label.setText(name) + else: + # 운용 선택 + members = self.crud.get_team_members_by_team(self._current_team, "운용", active_only=True) + member = next((m for m in members if m.name == name), None) + if member: + self.crud.upsert_duty_schedule( + duty_date=today, + team=self._current_team, + shift_type=self._current_shift, + operator_id=member.id, + operator_name=name, + vice_leader_id=existing_duty.vice_leader_id if existing_duty else None, + vice_leader_name=existing_duty.vice_leader_name if existing_duty else "" + ) + self._duty_operator = name + self.operator_label.setText(name) + + logger.info("당무 선택: %s - %s", duty_type, name) + + def _on_duty_change_clicked(self): + """당무 변경 버튼 클릭 (호환성 유지)""" + self.duty_change_requested.emit() + self._show_duty_selector() + + def _show_duty_selector(self): + """당무 선택 다이얼로그 표시""" + self.duty_dialog.change_UI_Info(self._current_team, self._current_shift) + + if self.duty_dialog.exec(): + # 당무 정보 다시 로드 + self._load_duty_info() + + def _on_handover_clicked(self): + """인수/인계 버튼 클릭""" + + self.handover_dialog.change_UI_Info(self._current_team, self._current_shift) + + # dialog = HandoverDialog( + # self, + # current_team=self._current_team, + # current_shift=self._current_shift + # ) + + if self.handover_dialog.exec(): + # 인수인계 완료 시 팀/근무 변경 + new_team = self.handover_dialog.receiving_team + new_shift = self.handover_dialog.receiving_shift + self._select_team_and_shift(new_team, new_shift) + + # 당무 정보 다시 로드 + self._load_duty_info() + + def _on_team_settings_clicked(self): + """팀 인원 설정 버튼 클릭""" + self.team_settings_requested.emit() + self._show_team_settings() + + def _show_team_settings(self): + """팀 인원 설정 다이얼로그 표시""" + from ui.dialogs.team_settings_dialog import TeamSettingsDialog + + dialog = TeamSettingsDialog(self) + dialog.exec() + + def update_duty_info(self, vice_leader: str, operator: str): + """ + 당무 정보 업데이트 + + Args: + vice_leader: 부팀장 당무 + operator: 운용 당무 + """ + self._duty_vice_leader = vice_leader + self._duty_operator = operator + self.vice_leader_label.setText(vice_leader or "미지정") + self.operator_label.setText(operator or "미지정") + + def _on_weather_clicked(self, event): + """날씨 클릭 - 상세 다이얼로그 표시""" + # 더블클릭이 아닌 경우에만 실행 + if event.button() == Qt.LeftButton: + dialog = WeatherDetailDialog(self) + dialog.exec() + + def _on_weather_double_clicked(self, event): + """날씨 더블클릭 - 기상청 홈페이지 열기""" + # 현재 설정된 지역 가져오기 + location_name = self.config.get('weather', 'location_name', '부산') + + # 기상청 홈페이지 URL (지역별) + # 부산: stn=159 + city_urls = { + '부산': "https://www.weather.go.kr/w/weather/forecast/short-term.do?stn=159&x=24&y=5", + '서울': "https://www.weather.go.kr/w/weather/forecast/short-term.do?stn=108&x=60&y=127", + '대구': "https://www.weather.go.kr/w/weather/forecast/short-term.do?stn=143&x=89&y=90", + '인천': "https://www.weather.go.kr/w/weather/forecast/short-term.do?stn=112&x=55&y=124", + '광주': "https://www.weather.go.kr/w/weather/forecast/short-term.do?stn=156&x=58&y=74", + '대전': "https://www.weather.go.kr/w/weather/forecast/short-term.do?stn=133&x=68&y=100", + '울산': "https://www.weather.go.kr/w/weather/forecast/short-term.do?stn=152&x=102&y=84", + } + + url = city_urls.get(location_name, "https://www.weather.go.kr/w/index.do") + webbrowser.open(url) + logger.info("기상청 홈페이지 열기: %s - %s", location_name, url) + + def _on_weather_right_clicked(self, pos): + """날씨 우클릭 - 지역 설정 메뉴""" + menu = QMenu(self) + theme = self.config.theme + + if theme == 'dark': + menu_style = """ + QMenu { + background-color: #1e293b; + color: #f8fafc; + border: 1px solid #334155; + border-radius: 8px; + padding: 4px; + } + QMenu::item { + padding: 8px 24px; + border-radius: 4px; + } + QMenu::item:selected { + background-color: #3b82f6; + } + """ + else: + menu_style = """ + QMenu { + background-color: #ffffff; + color: #1e293b; + border: 1px solid #e2e8f0; + border-radius: 8px; + padding: 4px; + } + QMenu::item { + padding: 8px 24px; + border-radius: 4px; + } + QMenu::item:selected { + background-color: #3b82f6; + color: white; + } + """ + menu.setStyleSheet(menu_style) + + # 지역 설정 액션 + location_action = QAction("지역 설정", self) + location_action.triggered.connect(self._show_weather_location_settings) + menu.addAction(location_action) + + # 날씨 설정 액션 + settings_action = QAction("날씨 설정", self) + settings_action.triggered.connect(self._show_weather_settings) + menu.addAction(settings_action) + + menu.exec(self.weather_widget.mapToGlobal(pos)) + + def _show_weather_location_settings(self): + """날씨 지역 설정 다이얼로그 표시""" + dialog = WeatherLocationDialog(self) + if dialog.exec(): + # 날씨 정보 다시 로드 (시그널을 통해) + self.signals.weather_location_changed.emit() + + def _show_weather_settings(self): + """날씨 설정 다이얼로그 표시""" + dialog = SettingsDialog(self) + # 날씨 탭으로 이동 + dialog.tabs.setCurrentIndex(4) # 날씨 탭 인덱스 + dialog.exec() + + def _on_weather_refresh_clicked(self): + """날씨 새로고침 버튼 클릭""" + # 시그널을 통해 새로고침 요청 + self.signals.weather_refresh_requested.emit() + logger.info("날씨 새로고침 요청") + + def _on_weather_refresh_requested(self): + """날씨 새로고침 요청 시그널 수신 (외부에서 호출)""" + # 실제 새로고침은 MainWindow에서 처리 + pass diff --git a/ui/panels/section_panel.py b/ui/panels/section_panel.py new file mode 100644 index 0000000..5280b35 --- /dev/null +++ b/ui/panels/section_panel.py @@ -0,0 +1,238 @@ +# -*- coding: utf-8 -*- +""" +섹션 패널 모듈 +지시, 고장, 작업, 기타 섹션을 탭으로 관리하는 패널입니다. +""" + +from PySide6.QtWidgets import ( + QWidget, QVBoxLayout, QTabWidget, QTabBar +) +from PySide6.QtCore import Qt, Signal +from PySide6.QtGui import QFont + +from ui.base.base_widget import BaseWidget +from ui.sections.instruction_section import InstructionSection +from ui.sections.fault_section import FaultSection +from ui.sections.work_section import WorkSection +from ui.sections.misc_section import MiscSection +from core.config import ConfigManager +from core.signals import GlobalSignals +from core.logger import get_logger + +logger = get_logger(__name__) + + +class SectionPanel(BaseWidget): + """ + 섹션 패널 위젯 + + 지시, 고장, 작업, 기타 섹션을 탭으로 관리합니다. + + Signals: + section_changed: 섹션 변경 시그널 (섹션 이름) + + Examples: + >>> panel = SectionPanel() + >>> panel.set_current_section("fault") + """ + + section_changed = Signal(str) + + # 섹션 정의 + SECTIONS = { + "instruction": {"name": "지시", "icon": "📋"}, + "fault": {"name": "고장", "icon": "⚠️"}, + "work": {"name": "작업", "icon": "🔧"}, + "misc": {"name": "기타", "icon": "📝"}, + } + + def __init__(self, parent=None): + super().__init__(parent) + + self._current_section = "instruction" + self._sections = {} + + self.setMinimumWidth(400) + + self._setup_ui() + self._connect_signals() + + logger.info("섹션 패널 초기화 완료") + + def _setup_ui(self): + """UI 설정""" + layout = QVBoxLayout(self) + layout.setContentsMargins(16, 16, 16, 16) + layout.setSpacing(0) + + # 탭 위젯 + self.tab_widget = QTabWidget() + self.tab_widget.setObjectName("sectionTabWidget") + self.tab_widget.setFont(QFont("GmarketSans", 13)) + self.tab_widget.setDocumentMode(True) + + # 섹션 추가 + self._create_sections() + + # 탭 변경 시그널 + self.tab_widget.currentChanged.connect(self._on_tab_changed) + + layout.addWidget(self.tab_widget) + + # 스타일 적용 + self._apply_style() + + def _create_sections(self): + """섹션 생성""" + # 지시 섹션 + self.instruction_section = InstructionSection() + self._sections["instruction"] = self.instruction_section + self.tab_widget.addTab( + self.instruction_section, + f"{self.SECTIONS['instruction']['icon']} {self.SECTIONS['instruction']['name']}" + ) + + # 고장 섹션 + self.fault_section = FaultSection() + self._sections["fault"] = self.fault_section + self.tab_widget.addTab( + self.fault_section, + f"{self.SECTIONS['fault']['icon']} {self.SECTIONS['fault']['name']}" + ) + + # 작업 섹션 + self.work_section = WorkSection() + self._sections["work"] = self.work_section + self.tab_widget.addTab( + self.work_section, + f"{self.SECTIONS['work']['icon']} {self.SECTIONS['work']['name']}" + ) + + # 기타 섹션 + self.misc_section = MiscSection() + self._sections["misc"] = self.misc_section + self.tab_widget.addTab( + self.misc_section, + f"{self.SECTIONS['misc']['icon']} {self.SECTIONS['misc']['name']}" + ) + + def _apply_style(self): + """스타일 적용""" + theme = self.config.theme + + if theme == 'dark': + bg = "#0f172a" + tab_bg = "#1e293b" + tab_selected = "#3b82f6" + tab_text = "#94a3b8" + tab_text_selected = "#ffffff" + border = "#334155" + else: + bg = "#f8fafc" + tab_bg = "#ffffff" + tab_selected = "#3b82f6" + tab_text = "#64748b" + tab_text_selected = "#ffffff" + border = "#e2e8f0" + + self.setStyleSheet(f""" + SectionPanel {{ + background-color: {bg}; + }} + + #sectionTabWidget {{ + background-color: {bg}; + }} + + #sectionTabWidget::pane {{ + background-color: {tab_bg}; + border: 1px solid {border}; + border-radius: 12px; + border-top-left-radius: 0; + padding: 8px; + }} + + #sectionTabWidget QTabBar::tab {{ + background-color: {tab_bg}; + color: {tab_text}; + border: 1px solid {border}; + border-bottom: none; + padding: 10px 20px; + margin-right: 4px; + border-top-left-radius: 8px; + border-top-right-radius: 8px; + font-weight: 500; + }} + + #sectionTabWidget QTabBar::tab:selected {{ + background-color: {tab_selected}; + color: {tab_text_selected}; + border-color: {tab_selected}; + font-weight: bold; + }} + + #sectionTabWidget QTabBar::tab:hover:!selected {{ + background-color: {border}; + }} + """) + + def _connect_signals(self): + """시그널 연결""" + self.signals.section_tab_changed.connect(self._on_section_signal) + + def _on_tab_changed(self, index: int): + """탭 변경""" + section_keys = list(self.SECTIONS.keys()) + if 0 <= index < len(section_keys): + self._current_section = section_keys[index] + self.section_changed.emit(self._current_section) + self.signals.section_tab_changed.emit(self._current_section) + logger.debug(f"섹션 변경: {self._current_section}") + + def _on_section_signal(self, section: str): + """외부 섹션 변경 시그널""" + self.set_current_section(section) + + def set_current_section(self, section: str): + """ + 현재 섹션 설정 + + Args: + section: 섹션 키 (instruction, fault, work, misc) + """ + section_keys = list(self.SECTIONS.keys()) + if section in section_keys: + index = section_keys.index(section) + self.tab_widget.setCurrentIndex(index) + + def get_current_section(self) -> str: + """현재 섹션 반환""" + return self._current_section + + def get_section(self, section: str) -> QWidget: + """ + 섹션 위젯 반환 + + Args: + section: 섹션 키 + + Returns: + 섹션 위젯 + """ + return self._sections.get(section) + + def refresh_data(self): + """모든 섹션 데이터 새로고침""" + for section in self._sections.values(): + if hasattr(section, 'refresh_data'): + section.refresh_data() + + def refresh_all_sections(self): + """모든 섹션 새로고침 (필드 표시 설정 포함)""" + for section in self._sections.values(): + if hasattr(section, '_load_field_visibility'): + section._load_field_visibility() + if hasattr(section, 'refresh_data'): + section.refresh_data() + + diff --git a/ui/panels/status_bar.py b/ui/panels/status_bar.py new file mode 100644 index 0000000..5678df3 --- /dev/null +++ b/ui/panels/status_bar.py @@ -0,0 +1,343 @@ +# -*- coding: utf-8 -*- +""" +상태바 모듈 +화면 하단의 상태 표시 바입니다. + +접속자 정보, DB 상태, 동기화 상태, 버전 정보 등을 표시합니다. +""" + +from datetime import datetime +from PySide6.QtWidgets import ( + QWidget, QHBoxLayout, QLabel, QFrame, + QProgressBar +) +from PySide6.QtCore import Qt, Signal, QTimer +from PySide6.QtGui import QFont + +from ui.base.base_widget import BaseWidget +from core.config import ConfigManager +from core.signals import GlobalSignals +from core.constants import APP_VERSION +from core.logger import get_logger + +logger = get_logger(__name__) + + +class StatusBar(BaseWidget): + """ + 상태바 위젯 + + 화면 하단 10% 영역에 표시되는 상태 바입니다. + 접속자, DB 상태, 마지막 동기화, 버전 정보 등을 포함합니다. + + Examples: + >>> status_bar = StatusBar() + >>> status_bar.set_user_info("홍길동", "검수팀") + """ + + def __init__(self, parent=None): + super().__init__(parent) + + self._user_name = "" + self._user_department = "" + self._db_status = "정상" + self._sync_time = None + self._message = "" + self._message_timer = QTimer() + self._message_timer.setSingleShot(True) + self._message_timer.timeout.connect(self._clear_message) + + self._setup_ui() + self._connect_signals() + + logger.info("상태바 초기화 완료") + + def _setup_ui(self): + """UI 설정""" + layout = QHBoxLayout(self) + layout.setContentsMargins(24, 8, 24, 8) + layout.setSpacing(16) + + # 사용자 정보 + self._create_user_section(layout) + + # 구분선 + self._add_separator(layout) + + # DB 상태 + self._create_db_section(layout) + + # 구분선 + self._add_separator(layout) + + # 동기화 상태 + self._create_sync_section(layout) + + # 늘어남 영역 + layout.addStretch() + + # 상태 메시지 + self._create_message_section(layout) + + # 늘어남 영역 + layout.addStretch() + + # 프로그레스바 (숨김) + self._create_progress_section(layout) + + # 구분선 + self._add_separator(layout) + + # 버전 정보 + self._create_version_section(layout) + + # 스타일 적용 + self._apply_style() + + def _create_user_section(self, layout: QHBoxLayout): + """사용자 섹션 생성""" + self.user_icon = QLabel("👤") + self.user_icon.setFont(QFont("Segoe UI Emoji", 14)) + + self.user_label = QLabel("로그인 필요") + self.user_label.setObjectName("userLabel") + self.user_label.setFont(QFont("GmarketSans", 12)) + + layout.addWidget(self.user_icon) + layout.addWidget(self.user_label) + + def _create_db_section(self, layout: QHBoxLayout): + """DB 상태 섹션 생성""" + self.db_icon = QLabel("🗄️") + self.db_icon.setFont(QFont("Segoe UI Emoji", 14)) + + self.db_label = QLabel("DB 상태: 정상") + self.db_label.setObjectName("dbLabel") + self.db_label.setFont(QFont("GmarketSans", 12)) + + layout.addWidget(self.db_icon) + layout.addWidget(self.db_label) + + def _create_sync_section(self, layout: QHBoxLayout): + """동기화 상태 섹션 생성""" + self.sync_icon = QLabel("🔄") + self.sync_icon.setFont(QFont("Segoe UI Emoji", 14)) + + self.sync_label = QLabel("동기화: 로컬 전용") + self.sync_label.setObjectName("syncLabel") + self.sync_label.setFont(QFont("GmarketSans", 12)) + + layout.addWidget(self.sync_icon) + layout.addWidget(self.sync_label) + + def _create_message_section(self, layout: QHBoxLayout): + """상태 메시지 섹션 생성""" + self.message_label = QLabel("") + self.message_label.setObjectName("messageLabel") + self.message_label.setFont(QFont("GmarketSans", 12)) + self.message_label.setAlignment(Qt.AlignCenter) + + layout.addWidget(self.message_label) + + def _create_progress_section(self, layout: QHBoxLayout): + """프로그레스바 섹션 생성""" + self.progress_bar = QProgressBar() + self.progress_bar.setObjectName("progressBar") + self.progress_bar.setFixedWidth(150) + self.progress_bar.setFixedHeight(6) + self.progress_bar.setTextVisible(False) + self.progress_bar.hide() + + layout.addWidget(self.progress_bar) + + def _create_version_section(self, layout: QHBoxLayout): + """버전 섹션 생성""" + self.version_label = QLabel(f"v{APP_VERSION}") + self.version_label.setObjectName("versionLabel") + self.version_label.setFont(QFont("GmarketSans", 11)) + + layout.addWidget(self.version_label) + + def _add_separator(self, layout: QHBoxLayout): + """구분선 추가""" + separator = QFrame() + separator.setFrameShape(QFrame.VLine) + separator.setObjectName("separator") + layout.addWidget(separator) + + def _apply_style(self): + """스타일 적용""" + theme = self.config.theme + + if theme == 'dark': + bg = "#0f172a" + text = "#94a3b8" + separator = "#334155" + success = "#22c55e" + warning = "#f59e0b" + error = "#ef4444" + progress_bg = "#334155" + progress_fill = "#3b82f6" + else: + bg = "#f8fafc" + text = "#64748b" + separator = "#e2e8f0" + success = "#22c55e" + warning = "#f59e0b" + error = "#ef4444" + progress_bg = "#e2e8f0" + progress_fill = "#3b82f6" + + self.setStyleSheet(f""" + StatusBar {{ + background-color: {bg}; + border-top: 1px solid {separator}; + }} + + QLabel {{ + color: {text}; + }} + + #separator {{ + color: {separator}; + }} + + #progressBar {{ + background-color: {progress_bg}; + border: none; + border-radius: 3px; + }} + + #progressBar::chunk {{ + background-color: {progress_fill}; + border-radius: 3px; + }} + """) + + def _connect_signals(self): + """시그널 연결""" + self.signals.user_logged_in.connect(self._on_user_logged_in) + self.signals.user_logged_out.connect(self._on_user_logged_out) + self.signals.sync_completed.connect(self._on_sync_completed) + self.signals.sync_error.connect(self._on_sync_error) + self.signals.status_message.connect(self.show_message) + self.signals.update_progress.connect(self._on_update_progress) + + # ======================================================================== + # 공개 메서드 + # ======================================================================== + + def set_user_info(self, name: str, department: str): + """ + 사용자 정보 설정 + + Args: + name: 사용자 이름 + department: 부서명 + """ + self._user_name = name + self._user_department = department + self.user_label.setText(f"{name} ({department})") + + def set_db_status(self, status: str, is_error: bool = False): + """ + DB 상태 설정 + + Args: + status: 상태 텍스트 + is_error: 오류 여부 + """ + self._db_status = status + self.db_label.setText(f"DB 상태: {status}") + + if is_error: + self.db_icon.setText("⚠️") + else: + self.db_icon.setText("🗄️") + + def set_sync_time(self, sync_time: datetime = None): + """ + 동기화 시간 설정 + + Args: + sync_time: 동기화 시간 + """ + self._sync_time = sync_time + + if sync_time: + time_str = sync_time.strftime("%H:%M") + self.sync_label.setText(f"마지막 동기화: {time_str}") + else: + self.sync_label.setText("동기화: 로컬 전용") + + def show_message(self, message: str, timeout: int = 3000): + """ + 상태 메시지 표시 + + Args: + message: 메시지 텍스트 + timeout: 표시 시간 (ms) + """ + self._message = message + self.message_label.setText(message) + + if timeout > 0: + self._message_timer.start(timeout) + + def _clear_message(self): + """메시지 지우기""" + self._message = "" + self.message_label.setText("") + + def show_progress(self, value: int = -1): + """ + 프로그레스바 표시 + + Args: + value: 진행률 (0-100), -1이면 무한 + """ + self.progress_bar.show() + + if value < 0: + self.progress_bar.setRange(0, 0) # 무한 프로그레스 + else: + self.progress_bar.setRange(0, 100) + self.progress_bar.setValue(value) + + def hide_progress(self): + """프로그레스바 숨기기""" + self.progress_bar.hide() + + # ======================================================================== + # 시그널 핸들러 + # ======================================================================== + + def _on_user_logged_in(self, user_id: int, username: str): + """사용자 로그인""" + # TODO: DB에서 사용자 정보 조회 + self.set_user_info(username, "") + + def _on_user_logged_out(self): + """사용자 로그아웃""" + self._user_name = "" + self._user_department = "" + self.user_label.setText("로그인 필요") + + def _on_sync_completed(self): + """동기화 완료""" + self.set_sync_time(datetime.now()) + self.show_message("동기화 완료", 2000) + + def _on_sync_error(self, error_msg: str): + """동기화 오류""" + self.sync_icon.setText("⚠️") + self.show_message(f"동기화 오류: {error_msg}", 5000) + + def _on_update_progress(self, value: int): + """업데이트 진행률""" + if value >= 100: + self.hide_progress() + else: + self.show_progress(value) + + diff --git a/ui/panels/todo_panel.py b/ui/panels/todo_panel.py new file mode 100644 index 0000000..0b4bc84 --- /dev/null +++ b/ui/panels/todo_panel.py @@ -0,0 +1,143 @@ +# -*- coding: utf-8 -*- +""" +Todo 패널 모듈 +일상검수, 할일 목록, 메모를 관리하는 오른쪽 패널입니다. +""" + +from PySide6.QtWidgets import ( + QWidget, QVBoxLayout, QScrollArea, QFrame +) +from PySide6.QtCore import Qt +from PySide6.QtGui import QFont + +from ui.base.base_widget import BaseWidget +from ui.widgets.daily_inspection import DailyInspectionWidget +from ui.widgets.todo_list import TodoListWidget +from ui.widgets.memo_widget import MemoWidget +from core.config import ConfigManager +from core.signals import GlobalSignals +from core.logger import get_logger + +logger = get_logger(__name__) + + +class TodoPanel(BaseWidget): + """ + Todo 패널 위젯 + + 화면 오른쪽 30% 영역에 표시되는 패널입니다. + 일상검수(30%), 할일 목록(35%), 메모(35%) 영역을 포함합니다. + + Examples: + >>> panel = TodoPanel() + >>> panel.refresh_data() + """ + + def __init__(self, parent=None): + super().__init__(parent) + + self.setMinimumWidth(300) + + self._setup_ui() + self._connect_signals() + + logger.info("Todo 패널 초기화 완료") + + def _setup_ui(self): + """UI 설정""" + layout = QVBoxLayout(self) + layout.setContentsMargins(8, 16, 16, 16) + layout.setSpacing(12) + + # 스크롤 영역 + scroll = QScrollArea() + scroll.setWidgetResizable(True) + scroll.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) + scroll.setFrameShape(QFrame.NoFrame) + + # 스크롤 컨테이너 + container = QWidget() + container_layout = QVBoxLayout(container) + container_layout.setContentsMargins(0, 0, 0, 0) + container_layout.setSpacing(16) + + # 일상검수 영역 (30%) + self.daily_inspection = DailyInspectionWidget() + container_layout.addWidget(self.daily_inspection) + + # 할일 목록 영역 (35%) + self.todo_list = TodoListWidget() + container_layout.addWidget(self.todo_list, 1) + + # 메모 영역 (35%) + self.memo = MemoWidget() + container_layout.addWidget(self.memo, 1) + + scroll.setWidget(container) + layout.addWidget(scroll) + + # 스타일 적용 + self._apply_style() + + def _apply_style(self): + """스타일 적용""" + theme = self.config.theme + + if theme == 'dark': + bg = "#0f172a" + scrollbar_bg = "#1e293b" + scrollbar_handle = "#475569" + else: + bg = "#f1f5f9" + scrollbar_bg = "#f8fafc" + scrollbar_handle = "#cbd5e1" + + self.setStyleSheet(f""" + TodoPanel {{ + background-color: {bg}; + }} + + QScrollArea {{ + background-color: transparent; + border: none; + }} + + QScrollBar:vertical {{ + background-color: {scrollbar_bg}; + width: 8px; + border-radius: 4px; + }} + + QScrollBar::handle:vertical {{ + background-color: {scrollbar_handle}; + border-radius: 4px; + min-height: 20px; + }} + + QScrollBar::handle:vertical:hover {{ + background-color: #3b82f6; + }} + + QScrollBar::add-line:vertical, + QScrollBar::sub-line:vertical {{ + height: 0; + }} + """) + + def _connect_signals(self): + """시그널 연결""" + # 데이터 변경 시그널 + self.signals.data_changed.connect(self._on_data_changed) + + def _on_data_changed(self, table_name: str): + """데이터 변경 시그널""" + if table_name in ['daily_inspections', 'todos', 'memos']: + self.refresh_data() + + def refresh_data(self): + """데이터 새로고침""" + self.daily_inspection.load_data() + self.todo_list.load_data() + self.memo.load_data() + + diff --git a/ui/sections/__init__.py b/ui/sections/__init__.py new file mode 100644 index 0000000..6ac34da --- /dev/null +++ b/ui/sections/__init__.py @@ -0,0 +1,19 @@ +# -*- coding: utf-8 -*- +""" +섹션별 UI 패키지 +지시, 고장, 작업, 기타 섹션 정의 +""" + +from .instruction_section import InstructionSection +from .fault_section import FaultSection +from .work_section import WorkSection +from .misc_section import MiscSection + +__all__ = [ + 'InstructionSection', + 'FaultSection', + 'WorkSection', + 'MiscSection', +] + + diff --git a/ui/sections/fault_section.py b/ui/sections/fault_section.py new file mode 100644 index 0000000..dbd0109 --- /dev/null +++ b/ui/sections/fault_section.py @@ -0,0 +1,3117 @@ +# -*- coding: utf-8 -*- +""" +고장 섹션 모듈 +전동차 고장 정보를 관리하는 섹션입니다. +""" + +from datetime import date, time, datetime +from typing import List, Optional, Any + +from PySide6.QtWidgets import QDialog, QPushButton, QLabel, QWidget +from PySide6.QtCore import Qt, QPoint + +from ui.base.base_section import BaseSection, FieldConfig +from ui.dialogs.input_dialog import SectionInputDialog +from ui.widgets.clickableLabel import ClickableLabel +from ui.components.popup_widget import PopupWidget +from database.models import Fault +from database.db_manager import DatabaseManager +from core.constants import DEVICE_CATEGORIES, FAULT_SOURCES +from core.logger import get_logger + +logger = get_logger(__name__) + + +class FaultSection(BaseSection): + """ + 고장 섹션 + + 전동차 고장 정보를 표시하고 관리합니다. + + 필드: + - 발생일자, 편성, 호차, 고장코드, 장치분류, 발생역, 발생시간, + 고장내용, 조치내용, 조치팀, 팀확인, 완료 + """ + + def __init__(self, parent=None): + super().__init__(parent, "faults", Fault) + + # 필드 설정 + self._setup_fields() + + # 초기화 후 처리 (설정 로드) + self._post_init() + + # 팝업 추적용 + self._current_popup: Optional[PopupWidget] = None + self._current_team_popup: Optional[PopupWidget] = None # 조치팀/확인팀 팝업 추적 + + # 초기 데이터 로드 + self.load_data() + + logger.info("고장 섹션 초기화 완료") + + def _setup_fields(self): + """필드 설정""" + self.fields = [ + FieldConfig("occurrence_date", "발생일", width=70, field_type="date"), + FieldConfig("column_number", "열번", width=60), + FieldConfig("train_number", "편성", width=50), + FieldConfig("car_number", "호차", width=50), + FieldConfig("fault_code", "고장코드", width=70), + FieldConfig("device_category", "장치분류", width=110), + FieldConfig("occurrence_station", "발생역", width=90), + FieldConfig("occurrence_time", "발생시간", width=90, field_type="time"), + FieldConfig("fault_content", "고장내용", width=300), + FieldConfig("action_content", "조치내용", width=300), + FieldConfig("fault_source", "고장출처", width=100), + FieldConfig("attachments", "자료", width=50), # 관련자료 + FieldConfig("action_team", "조치팀", width=90), + FieldConfig("team_confirmations", "확인팀", width=110), + FieldConfig("is_completed", "완료", width=40, field_type="checkbox"), + ] + + def _fetch_data(self, **filters) -> List[Fault]: + """데이터 조회""" + return self.crud.get_all_faults() + + def on_add_clicked(self): + """추가 버튼 클릭""" + dialog = FaultInputDialog(self) + if dialog.exec() == QDialog.Accepted: + data = dialog.get_data() + fault = self.crud.create_fault(**data) + # 조치 단계 저장 + if fault and fault.id and hasattr(dialog, '_save_action_steps'): + dialog._save_action_steps(fault.id) + self.refresh_data() + + def on_edit_clicked(self, record_id: int): + """편집 버튼 클릭""" + record = self.crud.get_fault(record_id) + if record: + dialog = FaultInputDialog(self, record) + if dialog.exec() == QDialog.Accepted: + data = dialog.get_data() + self.crud.update_fault(record_id, **data) + # 조치 단계 저장 + if hasattr(dialog, '_save_action_steps'): + dialog._save_action_steps(record_id) + self.refresh_data() + + def _delete_record(self, record_id: int): + """레코드 삭제""" + self.crud.delete_fault(record_id) + self.refresh_data() + + def on_search_changed(self, text: str): + """검색어 변경""" + if text: + results = self.crud.search_faults(text) + self.current_records = results + self._update_table() + else: + self.load_data() + + def _update_team_confirmations(self, record_id: int, confirmations: dict): + """팀확인 상태 업데이트""" + import json + self.crud.update_fault(record_id, team_confirmations=json.dumps(confirmations, ensure_ascii=False)) + self.signals.data_changed.emit(self.table_name) + + def _mark_as_completed(self, record_id: int): + """레코드를 완료로 표시""" + from datetime import datetime + self.crud.update_fault(record_id, is_completed=True, completed_at=datetime.now()) + self.signals.data_changed.emit(self.table_name) + + def _on_double_clicked(self, item): + """더블클릭 이벤트 오버라이드""" + row = item.row() + col = item.column() + + # 위젯인 경우 (ClickableLabel 등) + widget = self.table.cellWidget(row, col) + if widget: + record_id = widget.property("record_id") + if not record_id: + # 첫 번째 셀에서 레코드 ID 가져오기 + first_item = self.table.item(row, 0) + if first_item: + record_id = first_item.data(Qt.UserRole) + + if record_id: + visible_fields = [f for f in self.fields if f.visible] + if col < len(visible_fields): + field = visible_fields[col] + record = self.crud.get_fault(record_id) + if record: + self._edit_field_inline(row, col, field, record) + return + + # 일반 아이템인 경우 부모 클래스 처리 + super()._on_double_clicked(item) + + def _edit_field_inline(self, row: int, col: int, field: FieldConfig, record: Fault): + """인라인 필드 편집""" + if field.name == "train_number": + self._edit_train_number(row, col, record) + elif field.name == "column_number": + self._edit_column_number(row, col, record) + elif field.name == "device_category": + self._edit_device_category(row, col, record) + elif field.name == "fault_code": + self._edit_fault_code(row, col, record) + elif field.name == "occurrence_station": + self._edit_occurrence_station(row, col, record) + elif field.name == "car_number": + self._edit_car_number(row, col, record) + elif field.name == "occurrence_date": + self._edit_occurrence_date(row, col, record) + elif field.name == "occurrence_time": + self._edit_occurrence_time(row, col, record) + elif field.name == "fault_source": + self._edit_fault_source(row, col, record) + elif field.name == "action_team": + self._edit_action_team(row, col, record) + elif field.name == "team_confirmations": + self._edit_team_confirmations(row, col, record) + elif field.name == "fault_content": + self._edit_fault_content(row, col, record) + elif field.name == "action_content": + self._edit_action_content(row, col, record) + else: + # 기본 편집 모드 + self._enable_cell_editing(row, col, field) + + def _edit_train_number(self, row: int, col: int, record: Fault): + """편성번호 편집""" + from ui.dialogs.train_input_dialog import TrainInputDialog + + dialog = TrainInputDialog(self, "", 0, date.today()) + dialog.sinpyeong_toggle.set_state(True) + + # 현재 편성번호 설정 + if record.train_number: + # 편성번호에서 숫자 추출 (예: "151A" -> 51) + try: + train_num_str = record.train_number.replace("1", "").rstrip("AB") + train_num = int(train_num_str) + dialog._selected_train = train_num # type: ignore + dialog._selected_train_display = record.train_number # type: ignore + except Exception: + pass + + if dialog.exec() == QDialog.Accepted: + data = dialog.get_data() + train_number = data.get("train_number", "") + if train_number: + self.crud.update_fault(record.id, train_number=train_number) + self.refresh_data() + + def _edit_device_category(self, row: int, col: int, record: Fault): + """장치분류 편집""" + from ui.components.custom_input import CustomComboBox + from PySide6.QtWidgets import QDialog, QVBoxLayout, QDialogButtonBox + + dialog = QDialog(self) + dialog.setWindowTitle("장치분류 선택") + dialog.setModal(True) + layout = QVBoxLayout(dialog) + + combo = CustomComboBox(items=DEVICE_CATEGORIES, placeholder="장치분류 선택") + if record.device_category: + combo.set_selected_value(record.device_category) + layout.addWidget(combo) + + buttons = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel) + buttons.accepted.connect(dialog.accept) + buttons.rejected.connect(dialog.reject) + layout.addWidget(buttons) + + if dialog.exec() == QDialog.Accepted: + device_category = combo.get_selected_value() or "" + self.crud.update_fault(record.id, device_category=device_category) + self.refresh_data() + + def _edit_fault_code(self, row: int, col: int, record: Fault): + """고장코드 편집""" + from ui.components.custom_input import CustomLineEdit + from PySide6.QtWidgets import QDialog, QVBoxLayout, QDialogButtonBox + + dialog = QDialog(self) + dialog.setWindowTitle("고장코드 입력") + dialog.setModal(True) + layout = QVBoxLayout(dialog) + + input_field = CustomLineEdit(placeholder="고장코드") + if record.fault_code: + input_field.setText(record.fault_code) + layout.addWidget(input_field) + + buttons = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel) + buttons.accepted.connect(dialog.accept) + buttons.rejected.connect(dialog.reject) + layout.addWidget(buttons) + + if dialog.exec() == QDialog.Accepted: + fault_code = input_field.text() + self.crud.update_fault(record.id, fault_code=fault_code) + self.refresh_data() + + def _edit_occurrence_station(self, row: int, col: int, record: Fault): + """발생역 편집""" + from ui.components.custom_input import CustomLineEdit + from PySide6.QtWidgets import QDialog, QVBoxLayout, QDialogButtonBox + + dialog = QDialog(self) + dialog.setWindowTitle("발생역 입력") + dialog.setModal(True) + layout = QVBoxLayout(dialog) + + input_field = CustomLineEdit(placeholder="발생역") + if record.occurrence_station: + input_field.setText(record.occurrence_station) + layout.addWidget(input_field) + + buttons = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel) + buttons.accepted.connect(dialog.accept) + buttons.rejected.connect(dialog.reject) + layout.addWidget(buttons) + + if dialog.exec() == QDialog.Accepted: + occurrence_station = input_field.text() + self.crud.update_fault(record.id, occurrence_station=occurrence_station) + self.refresh_data() + + def _edit_column_number(self, row: int, col: int, record: Fault): + """열번 편집 (4개 스핀박스: 1000자리, 100자리, 10자리, 1자리)""" + from ui.components.popup_widget import PopupWidget + from PySide6.QtWidgets import QSpinBox, QHBoxLayout, QWidget, QLabel, QPushButton + + # 기존 팝업이 있으면 닫기 + if self._current_team_popup: + self._current_team_popup.hide_popup() + self._current_team_popup = None + + # 현재 열번 파싱 (4자리 숫자) + current_column = record.column_number or "" + d1000, d100, d10, d1 = 1, 0, 0, 1 # 기본값 + if current_column and len(current_column) == 4 and current_column.isdigit(): + d1000 = int(current_column[0]) + d100 = int(current_column[1]) + d10 = int(current_column[2]) + d1 = int(current_column[3]) + + # 팝업 생성 + popup = PopupWidget(self, title="열번 선택", width=280, auto_hide=False) + self._current_team_popup = popup + + # 스핀박스 컨테이너 + container = QWidget() + layout = QHBoxLayout(container) + layout.setContentsMargins(0, 0, 0, 0) + layout.setSpacing(4) + + theme = self.config.theme + + spinbox_style_dark = """ + QSpinBox { + background-color: #334155; + color: #f8fafc; + border: 1px solid #475569; + border-radius: 4px; + padding: 4px; + font-size: 14px; + font-weight: 600; + } + QSpinBox::up-button, QSpinBox::down-button { + background-color: #475569; + border: none; + width: 14px; + } + QSpinBox::up-button:hover, QSpinBox::down-button:hover { + background-color: #64748b; + } + """ + + spinbox_style_light = """ + QSpinBox { + background-color: #f8fafc; + color: #1e293b; + border: 1px solid #cbd5e1; + border-radius: 4px; + padding: 4px; + font-size: 14px; + font-weight: 600; + } + QSpinBox::up-button, QSpinBox::down-button { + background-color: #e2e8f0; + border: none; + width: 14px; + } + QSpinBox::up-button:hover, QSpinBox::down-button:hover { + background-color: #cbd5e1; + } + """ + + spinbox_style = spinbox_style_dark if theme == 'dark' else spinbox_style_light + + # 1000자리 스핀박스 (1~9: 정기, 회송, 시운전, 구간, 임시열차) + spin_1000 = QSpinBox() + spin_1000.setRange(1, 9) + spin_1000.setValue(d1000) + spin_1000.setFixedWidth(45) + spin_1000.setStyleSheet(spinbox_style) + spin_1000.setToolTip( + "[1호선] 열차종별\n" + "정기: 1(상), 2(하)\n" + "회송: 3(상), 4(하)\n" + "시운전: 5(상), 6(하)\n" + "구간: 7(상), 8(하)\n" + "임시: 9" + ) + + # 100자리 스핀박스 (0~8) + spin_100 = QSpinBox() + spin_100.setRange(0, 8) + spin_100.setValue(d100) + spin_100.setFixedWidth(45) + spin_100.setStyleSheet(spinbox_style) + spin_100.setToolTip("[1호선] 100자리") + + # 10자리 스핀박스 (0~9) + spin_10 = QSpinBox() + spin_10.setRange(0, 9) + spin_10.setValue(d10) + spin_10.setFixedWidth(45) + spin_10.setStyleSheet(spinbox_style) + spin_10.setToolTip("[1호선] 10자리") + + # 1자리 스핀박스 (0~9) + spin_1 = QSpinBox() + spin_1.setRange(0, 9) + spin_1.setValue(d1) + spin_1.setFixedWidth(45) + spin_1.setStyleSheet(spinbox_style) + spin_1.setToolTip( + "[1호선] 1자리\n" + "홀수: 상행\n" + "짝수: 하행" + ) + + layout.addWidget(spin_1000) + layout.addWidget(spin_100) + layout.addWidget(spin_10) + layout.addWidget(spin_1) + + popup.content_layout.addWidget(container) + + # 확인 버튼 + btn_container = QWidget() + btn_layout = QHBoxLayout(btn_container) + btn_layout.setContentsMargins(0, 8, 0, 0) + btn_layout.setSpacing(8) + + confirm_btn = QPushButton("확인") + confirm_btn.setCursor(Qt.PointingHandCursor) + confirm_btn.setFixedWidth(60) + + if theme == 'dark': + confirm_btn.setStyleSheet(""" + QPushButton { + background-color: #2979ff; + color: #ffffff; + border: none; + border-radius: 4px; + padding: 6px 12px; + font-weight: 600; + } + QPushButton:hover { + background-color: #1e40af; + } + """) + else: + confirm_btn.setStyleSheet(""" + QPushButton { + background-color: #2979ff; + color: #ffffff; + border: none; + border-radius: 4px; + padding: 6px 12px; + font-weight: 600; + } + QPushButton:hover { + background-color: #1e40af; + } + """) + + def on_confirm(): + # 4자리 열번 생성 + column_number = f"{spin_1000.value()}{spin_100.value()}{spin_10.value()}{spin_1.value()}" + self.crud.update_fault(record.id, column_number=column_number) + self.refresh_data() + popup.hide_popup() + self._current_team_popup = None + + confirm_btn.clicked.connect(on_confirm) + + btn_layout.addStretch() + btn_layout.addWidget(confirm_btn) + + popup.content_layout.addWidget(btn_container) + + # 팝업이 마우스 밖으로 나가면 닫기 + original_leave_event = popup.leaveEvent + def on_popup_leave(event): + if self._current_team_popup == popup: + popup.hide_popup() + self._current_team_popup = None + original_leave_event(event) + popup.leaveEvent = on_popup_leave + + # 마우스 추적 활성화 + popup.setMouseTracking(True) + popup.container.setMouseTracking(True) + + # 셀 위치 기준으로 팝업 위치 계산 + widget = self.table.cellWidget(row, col) + if widget: + widget_pos = widget.mapToGlobal(QPoint(0, 0)) + popup_pos = QPoint(widget_pos.x(), widget_pos.y() + widget.height() + 5) + else: + rect = self.table.visualItemRect(self.table.item(row, col)) + table_pos = self.table.viewport().mapToGlobal(rect.topLeft()) + popup_pos = QPoint(table_pos.x(), table_pos.y() + rect.height() + 5) + + popup.show_at(popup_pos) + + def _edit_car_number(self, row: int, col: int, record: Fault): + """호차 편집 (팝업 스핀박스)""" + from ui.components.popup_widget import PopupWidget + from PySide6.QtWidgets import QSpinBox, QHBoxLayout, QWidget, QLabel + + # 기존 팝업이 있으면 닫기 + if self._current_team_popup: + self._current_team_popup.hide_popup() + self._current_team_popup = None + + current_car = int(record.car_number) if record.car_number else 1 + + # 팝업 생성 + popup = PopupWidget(self, title="호차 선택", width=120, auto_hide=False) + self._current_team_popup = popup + + # 스핀박스 컨테이너 + container = QWidget() + layout = QHBoxLayout(container) + layout.setContentsMargins(0, 0, 0, 0) + layout.setSpacing(8) + + # 스핀박스 생성 (1~8) + spinbox = QSpinBox() + spinbox.setRange(1, 8) + spinbox.setValue(current_car) + spinbox.setFixedWidth(60) + + theme = self.config.theme + if theme == 'dark': + spinbox.setStyleSheet(""" + QSpinBox { + background-color: #334155; + color: #f8fafc; + border: 1px solid #475569; + border-radius: 4px; + padding: 4px 8px; + font-size: 14px; + } + QSpinBox::up-button, QSpinBox::down-button { + background-color: #475569; + border: none; + width: 16px; + } + QSpinBox::up-button:hover, QSpinBox::down-button:hover { + background-color: #64748b; + } + """) + else: + spinbox.setStyleSheet(""" + QSpinBox { + background-color: #f8fafc; + color: #1e293b; + border: 1px solid #cbd5e1; + border-radius: 4px; + padding: 4px 8px; + font-size: 14px; + } + QSpinBox::up-button, QSpinBox::down-button { + background-color: #e2e8f0; + border: none; + width: 16px; + } + QSpinBox::up-button:hover, QSpinBox::down-button:hover { + background_color: #cbd5e1; + } + """) + + # 값 변경 시 즉시 저장 (팝업은 닫지 않음) + def on_value_changed(value: int): + self.crud.update_fault(record.id, car_number=value) + # refresh_data()를 호출하면 테이블이 다시 그려지면서 팝업이 닫힐 수 있음 + # 대신 시그널만 발생시켜 다른 곳에서 필요시 반영하도록 함 + self.signals.data_changed.emit(self.table_name) + + spinbox.valueChanged.connect(on_value_changed) + + label = QLabel("호차") + if theme == 'dark': + label.setStyleSheet("color: #94a3b8;") + else: + label.setStyleSheet("color: #64748b;") + + layout.addWidget(spinbox) + layout.addWidget(label) + layout.addStretch() + + popup.content_layout.addWidget(container) + + # 팝업이 마우스 밖으로 나가면 닫기 + original_leave_event = popup.leaveEvent + def on_popup_leave(event): + if self._current_team_popup == popup: + popup.hide_popup() + self._current_team_popup = None + # 팝업 닫힐 때 테이블 새로고침 + self.refresh_data() + original_leave_event(event) + popup.leaveEvent = on_popup_leave + + # 마우스 추적 활성화 + popup.setMouseTracking(True) + popup.container.setMouseTracking(True) + + # 셀 위치 기준으로 팝업 위치 계산 + widget = self.table.cellWidget(row, col) + if widget: + widget_pos = widget.mapToGlobal(QPoint(0, 0)) + popup_pos = QPoint(widget_pos.x(), widget_pos.y() + widget.height() + 5) + else: + rect = self.table.visualItemRect(self.table.item(row, col)) + table_pos = self.table.viewport().mapToGlobal(rect.topLeft()) + popup_pos = QPoint(table_pos.x(), table_pos.y() + rect.height() + 5) + + popup.show_at(popup_pos) + + def _edit_occurrence_date(self, row: int, col: int, record: Fault): + """발생일 편집 (캘린더 팝업)""" + from ui.components.custom_calendar import CustomCalendar + from PySide6.QtWidgets import QDialog, QVBoxLayout, QDialogButtonBox + from PySide6.QtCore import QDate + + dialog = QDialog(self) + dialog.setWindowTitle("발생일 선택") + dialog.setModal(True) + layout = QVBoxLayout(dialog) + + # 캘린더 위젯 생성 + calendar = CustomCalendar(show_range_toggle=False, show_time=False) + if record.occurrence_date: + qdate = QDate.fromString(record.occurrence_date.isoformat(), Qt.ISODate) + calendar.calendar.setSelectedDate(qdate) + layout.addWidget(calendar) + + buttons = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel) + buttons.accepted.connect(dialog.accept) + buttons.rejected.connect(dialog.reject) + layout.addWidget(buttons) + + if dialog.exec() == QDialog.Accepted: + selected_date = calendar.get_selected_date() + if selected_date: + self.crud.update_fault(record.id, occurrence_date=selected_date) + self.refresh_data() + + def _edit_occurrence_time(self, row: int, col: int, record: Fault): + """발생시간 편집 (시간 피커 팝업)""" + from ui.components.custom_calendar import TimeSelector + from PySide6.QtWidgets import QDialog, QVBoxLayout, QDialogButtonBox, QLabel + from datetime import time as dt_time + + dialog = QDialog(self) + dialog.setWindowTitle("발생시간 선택") + dialog.setModal(True) + layout = QVBoxLayout(dialog) + + # 시간 선택 위젯 생성 (1분 단위로 스크롤 가능) + time_selector = TimeSelector(minute_step=1) + if record.occurrence_time: + if isinstance(record.occurrence_time, dt_time): + time_selector.set_time(record.occurrence_time) + elif isinstance(record.occurrence_time, str): + try: + t = dt_time.fromisoformat(record.occurrence_time) + time_selector.set_time(t) + except Exception: + pass + + layout.addWidget(time_selector) + + buttons = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel) + buttons.accepted.connect(dialog.accept) + buttons.rejected.connect(dialog.reject) + layout.addWidget(buttons) + + if dialog.exec() == QDialog.Accepted: + selected_time = time_selector.get_time() + self.crud.update_fault(record.id, occurrence_time=selected_time) + self.refresh_data() + + def _edit_fault_source(self, row: int, col: int, record: Fault): + """고장출처 편집""" + # ClickableLabel에서 클릭 이벤트로 처리 + widget = self.table.cellWidget(row, col) + if widget: + label = widget.findChild(ClickableLabel) + if label: + self._show_fault_source_popup(record, label) + + def _edit_action_team(self, row: int, col: int, record: Fault): + """조치팀 편집""" + # ClickableLabel에서 클릭 이벤트로 처리 + widget = self.table.cellWidget(row, col) + if widget: + label = widget.findChild(ClickableLabel) + if label: + self._show_action_team_popup(record, label) + + def _edit_team_confirmations(self, row: int, col: int, record: Fault): + """확인팀 편집 (다중선택)""" + # ClickableLabel에서 클릭 이벤트로 처리 + widget = self.table.cellWidget(row, col) + if widget: + label = widget.findChild(ClickableLabel) + if label: + self._show_team_confirmations_popup(record, label) + + def _edit_fault_content(self, row: int, col: int, record: Fault): + """고장내용 편집""" + from ui.components.custom_input import CustomTextEdit, LabeledInput + from PySide6.QtWidgets import QDialog, QVBoxLayout, QDialogButtonBox + + dialog = QDialog(self) + dialog.setWindowTitle("고장내용 편집") + dialog.setModal(True) + layout = QVBoxLayout(dialog) + + # 텍스트 입력 필드 + text_input = CustomTextEdit(placeholder="고장 내용을 입력하세요", min_height=150) + text_input.set_text(record.fault_content or "") + layout.addWidget(LabeledInput("고장내용", text_input, required=True)) + + # 버튼 + buttons = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel) + buttons.accepted.connect(dialog.accept) + buttons.rejected.connect(dialog.reject) + layout.addWidget(buttons) + + if dialog.exec() == QDialog.Accepted: + new_content = text_input.get_text() + self.crud.update_fault(record.id, fault_content=new_content) + self.refresh_data() + + def _edit_action_content(self, row: int, col: int, record: Fault): + """조치내용 편집""" + from ui.components.custom_input import CustomTextEdit, LabeledInput + from PySide6.QtWidgets import QDialog, QVBoxLayout, QDialogButtonBox + + dialog = QDialog(self) + dialog.setWindowTitle("조치내용 편집") + dialog.setModal(True) + layout = QVBoxLayout(dialog) + + # 텍스트 입력 필드 + text_input = CustomTextEdit(placeholder="조치 내용을 입력하세요", min_height=150) + text_input.set_text(record.action_content or "") + layout.addWidget(LabeledInput("조치내용", text_input)) + + # 버튼 + buttons = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel) + buttons.accepted.connect(dialog.accept) + buttons.rejected.connect(dialog.reject) + layout.addWidget(buttons) + + if dialog.exec() == QDialog.Accepted: + new_content = text_input.get_text() + self.crud.update_fault(record.id, action_content=new_content) + self.refresh_data() + + def _update_table(self): + """테이블 업데이트 (오버라이드)""" + self.table.setRowCount(0) + + # 표시할 필드만 필터링 + visible_fields = [f for f in self.fields if f.visible] + + # 컬럼 설정 + self.table.setColumnCount(len(visible_fields)) + self.table.setHorizontalHeaderLabels([f.label for f in visible_fields]) + + # 컬럼 너비 설정 + for i, field in enumerate(visible_fields): + self.table.setColumnWidth(i, field.width) + + # 데이터 채우기 (완료된 레코드는 제외) + for record in self.current_records: + # 완료된 레코드는 섹션에서 숨김 (DB에는 유지) + if hasattr(record, 'is_completed') and record.is_completed: + continue + + row = self.table.rowCount() + self.table.insertRow(row) + + max_height = int(40 * 1.15) # 기본 높이 15% 증가 (46px) + for col, field in enumerate(visible_fields): + value = getattr(record, field.name, "") + + # 완료 필드는 버튼 위젯으로 표시 + if field.name == "is_completed": + self._set_completion_button(row, col, record) + # 관련자료 필드는 ClickableLabel로 표시 + elif field.name == "attachments": + self._set_attachment_label(row, col, record) + # 편성, 열번, 장치분류, 고장코드, 발생역, 호차, 발생일, 발생시간, 고장출처는 ClickableLabel로 표시 + elif field.name in ["train_number", "column_number", "device_category", "fault_code", "occurrence_station", "car_number", "occurrence_date", "occurrence_time", "fault_source"]: + self._set_clickable_label(row, col, field, value, record) + # 조치팀, 확인팀은 ClickableLabel로 표시 + elif field.name in ["action_team", "team_confirmations"]: + self._set_team_label(row, col, field, value, record) + # 고장내용은 줄바꿈이 가능한 위젯으로 표시 + elif field.name == "fault_content": + content_height = self._set_content_label(row, col, field, value, record) + if content_height: + max_height = max(max_height, content_height) + # 조치내용은 조치 단계 요약으로 표시 + elif field.name == "action_content": + content_height = self._set_action_content_label(row, col, field, record) + if content_height: + max_height = max(max_height, content_height) + else: + item = self._create_table_item(field, value, record) + self.table.setItem(row, col, item) + + # 셀 내용에 따른 높이 계산 + if item.text(): + text = item.text() + lines = text.count('\n') + 1 + + font_metrics = self.table.fontMetrics() + text_width = font_metrics.horizontalAdvance(text) + col_width = self.table.columnWidth(col) + + is_content_field = field.name in ['action_taken', 'instruction_content', + 'work_details', 'report_content', 'content'] + + if is_content_field: + if col_width > 0: + chars_per_line = max(1, col_width // font_metrics.averageCharWidth()) + lines = max(lines, (len(text) // chars_per_line) + 1) + elif text_width > col_width and col_width > 0: + lines = max(lines, (text_width // col_width) + 1) + + line_height = font_metrics.height() + 16 + calculated_height = max(int(40 * 1.15), lines * line_height) + max_height = max(max_height, calculated_height) + + # 행 높이 설정 + self.table.setRowHeight(row, max_height) + + # 레코드 ID 저장 (첫 번째 셀에) + first_item = self.table.item(row, 0) + if first_item: + first_item.setData(Qt.UserRole, record.id) + else: + # 첫 번째 셀이 위젯인 경우 (완료 버튼 등) + widget = self.table.cellWidget(row, 0) + if widget: + widget.setProperty("record_id", record.id) + + def _set_clickable_label(self, row: int, col: int, field: FieldConfig, value: Any, record: Fault): + """ClickableLabel 설정""" + from PySide6.QtWidgets import QWidget, QHBoxLayout + + # 편성번호는 중간 2글자만 표시 (예: 132B -> 32) + if field.name == "train_number" and value: + import re + train_str = str(value).strip() + # 숫자 부분에서 마지막 2자리 추출 (예: 132B -> 32, 101A -> 01) + match = re.match(r'^\d*(\d{2})[AB]?$', train_str) + if match: + display_value = match.group(1) + else: + # 다른 형식인 경우 원본 표시 + display_value = train_str + else: + display_value = self._format_value(field, value) if value else "" + + # ClickableLabel 생성 + label = ClickableLabel(display_value or "미지정", enable_hover=True) + label.setAlignment(Qt.AlignCenter) # 중앙 정렬 + label.setWordWrap(True) # 텍스트 잘림 방지 (줄바꿈 허용) + + # 통일된 색상 적용 (알록달록하지 않게) + theme = self.config.theme + # 모든 필드에 동일한 색상 사용 + unified_color = "#64748b" # 통일된 회색 계열 + + if theme == 'dark': + label.setStyleSheet(f""" + QLabel {{ + background-color: {unified_color}; + color: #ffffff; + border: 1px solid rgba(255,255,255,0.2); + border-radius: 0px; + padding: 0px; + margin: 0px; + font-weight: 600; + font-size: 12px; + }} + QLabel:hover {{ + background-color: {unified_color}; + border-color: rgba(255,255,255,0.4); + }} + """) + else: + label.setStyleSheet(f""" + QLabel {{ + background-color: {unified_color}; + color: #ffffff; + border: 1px solid rgba(0,0,0,0.1); + border-radius: 0px; + padding: 0px; + margin: 0px; + font-weight: 600; + font-size: 12px; + }} + QLabel:hover {{ + background-color: {unified_color}; + border-color: rgba(0,0,0,0.2); + }} + """) + + # 호버 시 팝업 표시 (편성, 장치분류, 고장코드만, 고장출처는 제외) + if field.name in ["train_number", "device_category", "fault_code"]: + def on_hover_enter(): + if value: # 값이 있을 때만 팝업 표시 + self._show_fault_history_popup(field.name, value, record, label) + + def on_hover_leave(): + if self._current_popup: + self._current_popup.hide_popup() + self._current_popup = None + + label.hover_entered.connect(on_hover_enter) + label.hover_left.connect(on_hover_leave) + + # 더블클릭 시 편집 + def on_double_clicked(): + self._edit_field_inline(row, col, field, record) + + label.double_clicked.connect(on_double_clicked) + + # 고장출처는 클릭으로도 편집 가능 + if field.name == "fault_source": + def on_clicked(): + self._edit_field_inline(row, col, field, record) + label.clicked.connect(on_clicked) + + # 레코드 정보 저장 + label.setProperty("record_id", record.id) + label.setProperty("field_name", field.name) + label.setProperty("field_value", value or "") + + # 컨테이너 위젯으로 감싸서 구분선 적용 (여백 없이) + container = QWidget() + container_layout = QHBoxLayout(container) + container_layout.setContentsMargins(0, 0, 0, 0) # 여백 완전 제거 + container_layout.setSpacing(0) + container_layout.addWidget(label) + + # 구분선 스타일 적용 + gridline_color = "#475569" if theme == 'dark' else "#cbd5e1" + container.setStyleSheet(f"border-right: 1px solid {gridline_color};") + + # 셀에 위젯 설정 + self.table.setCellWidget(row, col, container) + + # 기본 높이 반환 + return int(40 * 1.15) + + def _set_action_content_label(self, row: int, col: int, field: FieldConfig, record: Fault) -> int: + """조치내용 라벨 설정 (조치 단계 요약 표시) + + Returns: + 계산된 셀 높이 (픽셀) + """ + from PySide6.QtWidgets import QWidget, QVBoxLayout + + # 조치 단계 조회 + db = DatabaseManager() + steps = db.fetch_all( + "SELECT step_number, action_content, action_team, created_at FROM action_steps WHERE fault_id = ? ORDER BY step_number", + (record.id,) + ) + + if not steps: + # 조치 단계가 없으면 기존 action_content 표시 + display_value = record.action_content or "" + return self._set_content_label(row, col, field, display_value, record) + + # 조치 단계 요약 생성 + step_texts = [] + for step in steps: + step_num = step.get('step_number', 0) + content = step.get('action_content', '') + team = step.get('action_team', '') + created_at = step.get('created_at', '') + + # 시간 포맷팅 + if isinstance(created_at, str): + try: + dt = datetime.fromisoformat(created_at.replace('Z', '+00:00')) + time_str = dt.strftime("%m/%d %H:%M") + except: + time_str = "" + else: + time_str = "" + + # 요약 텍스트 생성 + summary = f"[{step_num}]" + if team: + summary += f" {team}" + if time_str: + summary += f" ({time_str})" + if content: + # 내용이 길면 잘라서 표시 + content_preview = content[:50] + "..." if len(content) > 50 else content + summary += f": {content_preview}" + + step_texts.append(summary) + + display_value = "\n".join(step_texts) + + # ClickableLabel 생성 + label = ClickableLabel(display_value, enable_hover=False, enable_double_click=True) + label.setWordWrap(True) + label.setAlignment(Qt.AlignLeft | Qt.AlignTop) + label.setTextInteractionFlags(Qt.TextSelectableByMouse) + + # 레코드 정보 저장 + label.setProperty("record_id", record.id) + label.setProperty("field_name", field.name) + + # 더블클릭 시 조치 단계 다이얼로그 열기 + def on_double_clicked(): + dialog = FaultInputDialog(self, record) + dialog.exec() + self.refresh_data() + + label.double_clicked.connect(on_double_clicked) + + # 컨테이너 위젯으로 감싸기 + container = QWidget() + container_layout = QVBoxLayout(container) + container_layout.setContentsMargins(8, 4, 8, 4) + container_layout.setSpacing(0) + container_layout.addWidget(label) + + # 스타일 적용 + theme = self.config.theme + gridline_color = "#475569" if theme == 'dark' else "#cbd5e1" + text_color = "#f8fafc" if theme == 'dark' else "#1e293b" + + label.setStyleSheet(f""" + QLabel {{ + color: {text_color}; + font-size: 11pt; + background-color: transparent; + }} + """) + + container.setStyleSheet(f"border-right: 1px solid {gridline_color};") + + # 셀에 위젯 설정 + self.table.setCellWidget(row, col, container) + + # 높이 계산 + font_metrics = self.table.fontMetrics() + lines = len(step_texts) + line_height = font_metrics.height() + 8 + calculated_height = max(int(40 * 1.15), lines * line_height) + + return calculated_height + + def _set_content_label(self, row: int, col: int, field: FieldConfig, value: Any, record: Fault) -> int: + """고장내용 라벨 설정 (줄바꿈 지원, ClickableLabel 사용) + + Returns: + 계산된 셀 높이 (픽셀) + """ + from PySide6.QtWidgets import QWidget, QVBoxLayout + + display_value = self._format_value(field, value) if value else "" + + # ClickableLabel 생성 (줄바꿈 지원) + label = ClickableLabel(display_value or "", enable_hover=False, enable_double_click=True, enable_right_click=True) + label.setWordWrap(True) # 자동 줄바꿈 활성화 + label.setAlignment(Qt.AlignLeft | Qt.AlignTop) # 왼쪽 위 정렬 + label.setTextInteractionFlags(Qt.TextSelectableByMouse) # 텍스트 선택 가능 + + # 레코드 정보 저장 + label.setProperty("record_id", record.id) + label.setProperty("field_name", field.name) + label.setProperty("field_value", value or "") + + # 더블클릭 시 편집 + def on_double_clicked(): + self._edit_field_inline(row, col, field, record) + + label.double_clicked.connect(on_double_clicked) + + # 우클릭 컨텍스트 메뉴 + def on_right_clicked(pos): + from PySide6.QtWidgets import QMenu + menu = QMenu(self) + + edit_action = menu.addAction("편집") + edit_action.triggered.connect(lambda: self._edit_field_inline(row, col, field, record)) + + menu.exec_(label.mapToGlobal(pos)) + + label.right_clicked.connect(on_right_clicked) + + # 컨테이너 위젯으로 감싸서 구분선 적용 + container = QWidget() + container_layout = QVBoxLayout(container) + container_layout.setContentsMargins(8, 4, 8, 4) + container_layout.setSpacing(0) + container_layout.addWidget(label) + + # 구분선 및 텍스트 색상 스타일 적용 + theme = self.config.theme + gridline_color = "#475569" if theme == 'dark' else "#cbd5e1" + # 텍스트 색상: 다크 테마는 밝은 색, 라이트 테마는 어두운 색 + text_color = "#f8fafc" if theme == 'dark' else "#1e293b" + + # 높이 계산 및 줄바꿈 여부 확인 (텍스트 길이에 따라) + font_metrics = self.table.fontMetrics() + base_font_size = 13 # 기본 폰트 크기 (테이블 기본값) + col_width = self.table.columnWidth(col) + needs_wrap = False + calculated_height = int(40 * 1.15) # 기본 높이 + + if display_value and col_width > 0: + # 컬럼 너비에 맞춰 줄 수 계산 (패딩 고려) + available_width = col_width - 16 # 좌우 패딩 8px씩 + text_width = font_metrics.horizontalAdvance(display_value) + + # 줄바꿈이 필요한지 확인 + if text_width > available_width: + needs_wrap = True + # 줄바꿈 시 폰트 크기를 2포인트 작게 (11px) + wrap_font_size = base_font_size - 2 + + # 작은 폰트로 다시 계산 + from PySide6.QtGui import QFont, QFontMetrics + small_font = QFont(self.table.font()) + small_font.setPointSize(wrap_font_size) + small_font_metrics = QFontMetrics(small_font) + + # 작은 폰트 기준으로 줄 수 계산 + chars_per_line = max(1, available_width // small_font_metrics.averageCharWidth()) + lines = max(1, (len(display_value) // chars_per_line) + 1) + line_height = small_font_metrics.height() + 6 # 줄 간격 (작은 폰트 고려) + calculated_height = max(int(40 * 1.15), lines * line_height + 8) # 상하 패딩 + else: + # 한 줄로 표시 가능 + calculated_height = int(40 * 1.15) + + # 라벨에 텍스트 색상 및 폰트 크기 적용 + if needs_wrap: + wrap_font_size = base_font_size - 2 + label.setStyleSheet(f""" + QLabel {{ + color: {text_color}; + background-color: transparent; + font-size: {wrap_font_size}px; + }} + """) + else: + label.setStyleSheet(f""" + QLabel {{ + color: {text_color}; + background-color: transparent; + }} + """) + + container.setStyleSheet(f"border-right: 1px solid {gridline_color};") + + # 셀에 위젯 설정 + self.table.setCellWidget(row, col, container) + + return calculated_height + + def _set_fault_source_label(self, row: int, col: int, field: FieldConfig, value: Any, record: Fault): + """고장출처 라벨 설정""" + from PySide6.QtWidgets import QWidget, QHBoxLayout + + display_value = value if value else "" + chip_color = "#8b5cf6" # 고장출처 보라색 + + # ClickableLabel 생성 + if not display_value: + # 미지정이면 빈칸처럼 보이게 + label = ClickableLabel(" ", enable_hover=False) # 공백 하나 + else: + label = ClickableLabel(display_value or "미지정", enable_hover=False) + + label.setAlignment(Qt.AlignLeft | Qt.AlignVCenter) + + # 칩 스타일 배경색 적용 + theme = self.config.theme + + # 고장출처가 미지정이면 투명하게 + if not display_value: + bg_color = "transparent" + text_color = "transparent" + border_color = "transparent" + else: + bg_color = chip_color + text_color = "#ffffff" + border_color = "rgba(255,255,255,0.2)" if theme == 'dark' else "rgba(0,0,0,0.1)" + + if theme == 'dark': + label.setStyleSheet(f""" + QLabel {{ + background-color: {bg_color}; + color: {text_color}; + border: 1px solid {border_color}; + border-radius: 14px; + padding: 4px 10px; + font-weight: 600; + font-size: 12px; + }} + QLabel:hover {{ + background-color: {bg_color if bg_color != 'transparent' else chip_color}; + border-color: rgba(255,255,255,0.4); + }} + """) + else: + label.setStyleSheet(f""" + QLabel {{ + background-color: {bg_color}; + color: {text_color}; + border: 1px solid {border_color}; + border-radius: 14px; + padding: 4px 10px; + font-weight: 600; + font-size: 12px; + }} + QLabel:hover {{ + background-color: {bg_color if bg_color != 'transparent' else chip_color}; + border-color: rgba(0,0,0,0.2); + }} + """) + + # 클릭/더블클릭 이벤트 연결 + def on_clicked(): + self._show_fault_source_popup(record, label) + + def on_double_clicked(): + self._edit_field_inline(row, col, field, record) + + label.clicked.connect(on_clicked) + label.double_clicked.connect(on_double_clicked) + + # 레코드 정보 저장 + label.setProperty("record_id", record.id) + label.setProperty("field_name", field.name) + + # 컨테이너 위젯으로 감싸서 구분선 적용 + container = QWidget() + container_layout = QHBoxLayout(container) + container_layout.setContentsMargins(8, 0, 8, 0) + container_layout.setSpacing(4) + container_layout.addWidget(label) + + # 고장출처인 경우 리셋 버튼 추가 + if display_value: + from PySide6.QtWidgets import QToolButton + reset_btn = QToolButton() + reset_btn.setText("↻") + reset_btn.setToolTip("고장출처 리셋") + reset_btn.setFixedSize(20, 20) + reset_btn.setCursor(Qt.PointingHandCursor) + + # 리셋 버튼 스타일 + if theme == 'dark': + reset_btn.setStyleSheet(""" + QToolButton { + background-color: transparent; + color: #94a3b8; + border: none; + border-radius: 4px; + font-size: 12px; + } + QToolButton:hover { + background-color: #475569; + color: #f8fafc; + } + """) + else: + reset_btn.setStyleSheet(""" + QToolButton { + background-color: transparent; + color: #64748b; + border: none; + border-radius: 4px; + font-size: 12px; + } + QToolButton:hover { + background-color: #e2e8f0; + color: #1e293b; + } + """) + + # 리셋 버튼 클릭 시 고장출처 리셋 + def on_reset_clicked(): + self.crud.update_fault(record.id, fault_source="") + self.refresh_data() + + reset_btn.clicked.connect(on_reset_clicked) + container_layout.addWidget(reset_btn) + + # 구분선 스타일 적용 + gridline_color = "#475569" if theme == 'dark' else "#cbd5e1" + container.setStyleSheet(f"border-right: 1px solid {gridline_color};") + + # 셀에 위젯 설정 + self.table.setCellWidget(row, col, container) + + def _set_team_label(self, row: int, col: int, field: FieldConfig, value: Any, record: Fault): + """조치팀/확인팀 라벨 설정 (공간 효율 최대화)""" + from PySide6.QtWidgets import QWidget, QHBoxLayout + import json + + theme = self.config.theme + unified_color = "#64748b" # 통일된 회색 계열 (다른 필드와 동일) + + if field.name == "action_team": + # 조치팀: 숫자만 표시 (예: "1팀" -> "1") + if value: + display_value = value.replace("팀", "") + else: + display_value = "-" + else: # team_confirmations + # 확인팀: 확인된 팀 숫자만 표시 (예: "1 2 4") + try: + confirmations = json.loads(value) if isinstance(value, str) else value + if isinstance(confirmations, dict): + # 팀 이름에서 숫자만 추출하여 정렬 + confirmed_nums = sorted([ + team.replace("팀", "") + for team, confirmed in confirmations.items() + if confirmed + ]) + display_value = " ".join(confirmed_nums) if confirmed_nums else "-" + else: + display_value = "-" + except Exception: + display_value = "-" + + # ClickableLabel 생성 + label = ClickableLabel(display_value, enable_hover=False) + label.setAlignment(Qt.AlignCenter) + + # 통일된 스타일 적용 (다른 필드와 동일하게) + if theme == 'dark': + label.setStyleSheet(f""" + QLabel {{ + background-color: {unified_color}; + color: #ffffff; + border: 1px solid rgba(255,255,255,0.2); + border-radius: 0px; + padding: 0px; + margin: 0px; + font-weight: 600; + font-size: 12px; + }} + QLabel:hover {{ + background-color: {unified_color}; + border-color: rgba(255,255,255,0.4); + }} + """) + else: + label.setStyleSheet(f""" + QLabel {{ + background-color: {unified_color}; + color: #ffffff; + border: 1px solid rgba(0,0,0,0.1); + border-radius: 0px; + padding: 0px; + margin: 0px; + font-weight: 600; + font-size: 12px; + }} + QLabel:hover {{ + background-color: {unified_color}; + border-color: rgba(0,0,0,0.2); + }} + """) + + # 클릭/더블클릭 이벤트 연결 + def on_clicked(): + if field.name == "action_team": + self._show_action_team_popup(record, label) + elif field.name == "team_confirmations": + self._show_team_confirmations_popup(record, label) + + def on_double_clicked(): + self._edit_field_inline(row, col, field, record) + + label.clicked.connect(on_clicked) + label.double_clicked.connect(on_double_clicked) + + # 레코드 정보 저장 + label.setProperty("record_id", record.id) + label.setProperty("field_name", field.name) + + # 컨테이너 위젯으로 감싸서 구분선 적용 (여백 없이) + container = QWidget() + container_layout = QHBoxLayout(container) + container_layout.setContentsMargins(0, 0, 0, 0) + container_layout.setSpacing(0) + container_layout.addWidget(label) + + # 구분선 스타일 적용 + gridline_color = "#475569" if theme == 'dark' else "#cbd5e1" + container.setStyleSheet(f"border-right: 1px solid {gridline_color};") + + # 셀에 위젯 설정 + self.table.setCellWidget(row, col, container) + + def _set_attachment_label(self, row: int, col: int, record: Fault): + """관련자료 라벨 설정 (공간 효율 최대화)""" + from PySide6.QtWidgets import QWidget, QHBoxLayout + from services.storage_service import get_storage_service + + theme = self.config.theme + storage = get_storage_service() + + # 첨부파일 개수 조회 + count = storage.get_attachment_count("faults", record.id) + + # 표시 텍스트: 첨부 파일 개수 또는 "+" + if count > 0: + display_value = str(count) + # 파일이 있으면 강조 색상 + bg_color = "#3b82f6" # 파란색 + else: + display_value = "+" + bg_color = "#64748b" # 통일된 회색 + + # ClickableLabel 생성 + label = ClickableLabel(display_value, enable_hover=True) + label.setAlignment(Qt.AlignCenter) + + # 스타일 적용 + if theme == 'dark': + label.setStyleSheet(f""" + QLabel {{ + background-color: {bg_color}; + color: #ffffff; + border: 1px solid rgba(255,255,255,0.2); + border-radius: 0px; + padding: 0px; + margin: 0px; + font-weight: 600; + font-size: 12px; + }} + QLabel:hover {{ + background-color: {bg_color}; + border-color: rgba(255,255,255,0.4); + }} + """) + else: + label.setStyleSheet(f""" + QLabel {{ + background-color: {bg_color}; + color: #ffffff; + border: 1px solid rgba(0,0,0,0.1); + border-radius: 0px; + padding: 0px; + margin: 0px; + font-weight: 600; + font-size: 12px; + }} + QLabel:hover {{ + background-color: {bg_color}; + border-color: rgba(0,0,0,0.2); + }} + """) + + # 클릭 시 첨부파일 다이얼로그 열기 + def on_clicked(): + self._show_attachment_dialog(record) + + label.clicked.connect(on_clicked) + + # 툴팁 + if count > 0: + label.setToolTip(f"첨부파일 {count}개 (클릭하여 보기)") + else: + label.setToolTip("클릭하여 첨부파일 추가") + + # 레코드 정보 저장 + label.setProperty("record_id", record.id) + + # 컨테이너 위젯으로 감싸기 (여백 없이) + container = QWidget() + container_layout = QHBoxLayout(container) + container_layout.setContentsMargins(0, 0, 0, 0) + container_layout.setSpacing(0) + container_layout.addWidget(label) + + # 구분선 스타일 적용 + gridline_color = "#475569" if theme == 'dark' else "#cbd5e1" + container.setStyleSheet(f"border-right: 1px solid {gridline_color};") + + # 셀에 위젯 설정 + self.table.setCellWidget(row, col, container) + + def _show_attachment_dialog(self, record: Fault): + """첨부파일 다이얼로그 표시""" + from ui.dialogs.attachment_dialog import AttachmentDialog + + device_category = record.device_category or "" + + # 레코드 정보 (파일명 생성용) + record_info = { + "occurrence_date": record.occurrence_date, + "column_number": record.column_number or "", + "train_number": record.train_number or "", + "car_number": record.car_number or "", + "device_category": device_category, + "fault_content": record.fault_content or "", + } + + dialog = AttachmentDialog( + self, + record_type="faults", + record_id=record.id, + device_category=device_category, + record_info=record_info + ) + dialog.exec() + + # 다이얼로그 닫힌 후 테이블 새로고침 (첨부파일 개수 업데이트) + self.refresh_data() + + def _show_fault_source_popup(self, record: Fault, label: ClickableLabel): + """고장출처 선택 팝업 표시 (단일선택)""" + from ui.components.chips.choice_chip_button import ChoiceChipButton + from ui.components.popup_widget import PopupWidget + from PySide6.QtWidgets import QVBoxLayout, QWidget, QButtonGroup + + # 기존 팝업이 있으면 닫기 + if self._current_team_popup: + self._current_team_popup.hide_popup() + self._current_team_popup = None + + current_source = record.fault_source or "" + + # 팝업 생성 (세로 배치에 맞게 너비 조정) + popup = PopupWidget(self, title="고장출처 선택", width=200, auto_hide=False) + self._current_team_popup = popup + + # 칩 그룹 생성 (단일선택용 QButtonGroup) + button_group = QButtonGroup() + button_group.setExclusive(True) # 단일선택 + + chip_container = QWidget() + chip_layout = QVBoxLayout(chip_container) # 세로 배치 + chip_layout.setContentsMargins(0, 0, 0, 0) + chip_layout.setSpacing(6) + + def on_source_selected(source_key: str): + """출처 선택 시 바로 처리하고 팝업 닫기""" + self.crud.update_fault(record.id, fault_source=source_key) + self.refresh_data() + popup.hide_popup() + self._current_team_popup = None + + for source in FAULT_SOURCES: + # 선택된 출처는 회색, 선택되지 않은 출처는 파란색 + chip_bg = "#64748b" if source == current_source else "#2979ff" + + chip = ChoiceChipButton( + text=source, + key=source, + bg=chip_bg + ) + chip.setMinimumWidth(160) # 최소 너비 설정으로 텍스트 전체 표시 + button_group.addButton(chip) + chip_layout.addWidget(chip) + + # 현재 선택된 출처 설정 + if source == current_source: + chip.setChecked(True) + + # 칩 클릭 시 색상 변경 및 처리 + def make_chip_handler(source_key: str): + def handler(): + # 모든 칩 색상 업데이트 + for btn in button_group.buttons(): + if isinstance(btn, ChoiceChipButton): + if btn.key == source_key: + btn.set_bg("#64748b") # 선택된 출처는 회색 + else: + btn.set_bg("#2979ff") # 선택되지 않은 출처는 파란색 + on_source_selected(source_key) + return handler + + chip.clicked_key.connect(make_chip_handler(source)) + + popup.content_layout.addWidget(chip_container) + + # 팝업 크기 자동 조정 (세로 배치에 맞게) + chip_container.adjustSize() + popup_width = 200 # 고정 너비 + popup.container.setFixedWidth(popup_width) + + # 팝업이 마우스 밖으로 나가면 닫기 + original_leave_event = popup.leaveEvent + def on_popup_leave(event): + if self._current_team_popup == popup: + popup.hide_popup() + self._current_team_popup = None + original_leave_event(event) + popup.leaveEvent = on_popup_leave + + # 마우스 추적 활성화 + popup.setMouseTracking(True) + popup.container.setMouseTracking(True) + + # 라벨 위치 기준으로 팝업 위치 계산 + label_pos = label.mapToGlobal(QPoint(0, 0)) + popup_pos = QPoint(label_pos.x(), label_pos.y() + label.height() + 5) + popup.show_at(popup_pos) + + def _show_action_team_popup(self, record: Fault, label: ClickableLabel): + """조치팀 선택 팝업 표시 (단일선택)""" + from ui.components.chips.choice_chip_button import ChoiceChipButton + from ui.components.popup_widget import PopupWidget + from core.constants import TEAMS + from PySide6.QtWidgets import QHBoxLayout, QWidget, QButtonGroup + + # 기존 팝업이 있으면 닫기 + if self._current_team_popup: + self._current_team_popup.hide_popup() + self._current_team_popup = None + + current_team = record.action_team or "" + + # 팝업 생성 + popup = PopupWidget(self, title="조치팀 선택", width=400, auto_hide=False) + self._current_team_popup = popup + + # 칩 그룹 생성 (단일선택용 QButtonGroup) + button_group = QButtonGroup() + button_group.setExclusive(True) # 단일선택 + + chip_container = QWidget() + chip_layout = QHBoxLayout(chip_container) + chip_layout.setContentsMargins(0, 0, 0, 0) + chip_layout.setSpacing(8) + + def on_team_selected(team_key: str): + """팀 선택 시 바로 처리하고 팝업 닫기""" + self.crud.update_fault(record.id, action_team=team_key) + self.refresh_data() + popup.hide_popup() + self._current_team_popup = None + + for team in TEAMS: + # 선택된 팀은 회색, 선택되지 않은 팀은 파란색 + chip_bg = "#64748b" if team == current_team else "#2979ff" + + chip = ChoiceChipButton( + text=team, + key=team, + bg=chip_bg + ) + button_group.addButton(chip) + chip_layout.addWidget(chip) + + # 현재 선택된 팀 설정 + if team == current_team: + chip.setChecked(True) + + # 칩 클릭 시 색상 변경 및 처리 + def make_chip_handler(team_key: str): + def handler(): + # 모든 칩 색상 업데이트 + for btn in button_group.buttons(): + if isinstance(btn, ChoiceChipButton): + if btn.key == team_key: + btn.set_bg("#64748b") # 선택된 팀은 회색 + else: + btn.set_bg("#2979ff") # 선택되지 않은 팀은 파란색 + on_team_selected(team_key) + return handler + + chip.clicked_key.connect(make_chip_handler(team)) + + chip_layout.addStretch() + popup.content_layout.addWidget(chip_container) + + # 팝업 크기 자동 조정 (칩 개수에 맞게) + chip_container.adjustSize() + chip_width = chip_container.sizeHint().width() + popup_width = max(200, min(400, chip_width + 40)) # 최소 200, 최대 400, 여백 40 + popup.container.setFixedWidth(popup_width) + + # 팝업이 마우스 밖으로 나가면 닫기 + original_leave_event = popup.leaveEvent + def on_popup_leave(event): + if self._current_team_popup == popup: + popup.hide_popup() + self._current_team_popup = None + original_leave_event(event) + popup.leaveEvent = on_popup_leave + + # 마우스 추적 활성화 + popup.setMouseTracking(True) + popup.container.setMouseTracking(True) + + # 라벨 위치 기준으로 팝업 위치 계산 + label_pos = label.mapToGlobal(QPoint(0, 0)) + popup_pos = QPoint(label_pos.x(), label_pos.y() + label.height() + 5) + popup.show_at(popup_pos) + + def _show_team_confirmations_popup(self, record: Fault, label: ClickableLabel): + """확인팀 선택 팝업 표시 (다중선택)""" + from ui.components.chips.choice_chip_button import ChoiceChipButton + from ui.components.popup_widget import PopupWidget + from core.constants import TEAMS + from PySide6.QtWidgets import QHBoxLayout, QWidget + import json + + # 기존 팝업이 있으면 닫기 + if self._current_team_popup: + self._current_team_popup.hide_popup() + self._current_team_popup = None + + # 현재 확인된 팀 찾기 + current_confirmations = {} + try: + confirmations = json.loads(record.team_confirmations) if isinstance(record.team_confirmations, str) else record.team_confirmations + if isinstance(confirmations, dict): + current_confirmations = confirmations + except Exception: + pass + + # 팝업 생성 + popup = PopupWidget(self, title="확인팀 선택", width=320, auto_hide=False) + self._current_team_popup = popup + + # 칩 그룹 생성 (다중선택용) + chip_group = {} + chip_container = QWidget() + chip_layout = QHBoxLayout(chip_container) + chip_layout.setContentsMargins(0, 0, 0, 0) + chip_layout.setSpacing(8) + + def update_confirmations(): + """확인 상태 업데이트""" + confirmations = {team: chip.isChecked() for team, chip in chip_group.items()} + self._update_team_confirmations(record.id, confirmations) + self.refresh_data() + + for team in TEAMS: + # 선택된 팀은 회색, 선택되지 않은 팀은 청록색 + is_checked = current_confirmations.get(team, False) + chip_bg = "#64748b" if is_checked else "#00bfa5" + + chip = ChoiceChipButton( + text=team, + key=team, + bg=chip_bg + ) + chip_group[team] = chip + chip_layout.addWidget(chip) + + # 현재 확인된 팀 설정 + if is_checked: + chip.setChecked(True) + + # 칩 토글 시 색상 변경 및 업데이트 + def make_toggle_handler(team_key: str): + def handler(_key: str, checked: bool): + chip = chip_group[team_key] + if checked: + chip.set_bg("#64748b") # 선택된 팀은 회색 + else: + chip.set_bg("#00bfa5") # 선택되지 않은 팀은 청록색 + update_confirmations() + return handler + + chip.toggled_key.connect(make_toggle_handler(team)) + + chip_layout.addStretch() + popup.content_layout.addWidget(chip_container) + + # 팝업 크기 자동 조정 (칩 개수에 맞게) + chip_container.adjustSize() + chip_width = chip_container.sizeHint().width() + popup_width = max(200, min(400, chip_width + 40)) # 최소 200, 최대 400, 여백 40 + popup.container.setFixedWidth(popup_width) + + # 팝업이 마우스 밖으로 나가면 닫기 + original_leave_event = popup.leaveEvent + def on_popup_leave(event): + if self._current_team_popup == popup: + popup.hide_popup() + self._current_team_popup = None + original_leave_event(event) + popup.leaveEvent = on_popup_leave + + # 마우스 추적 활성화 + popup.setMouseTracking(True) + popup.container.setMouseTracking(True) + + # 라벨 위치 기준으로 팝업 위치 계산 + label_pos = label.mapToGlobal(QPoint(0, 0)) + popup_pos = QPoint(label_pos.x(), label_pos.y() + label.height() + 5) + popup.show_at(popup_pos) + + def _create_fault_history_popup(self, field_name: str, field_value: str, current_record: Fault) -> PopupWidget: + """고장 기록 팝업 생성""" + faults: List[Fault] = [] + title = "" + + if field_name == "train_number" and field_value: + faults = self.crud.get_faults_by_train(field_value, limit=20, months_back=3) + title = f"편성 {field_value} 고장 기록" + elif field_name == "device_category" and field_value: + faults = self.crud.get_faults_by_device(field_value, limit=20, months_back=3) + title = f"장치분류 {field_value} 고장 기록" + elif field_name == "fault_code" and field_value: + faults = self.crud.get_faults_by_code(field_value, limit=20, months_back=3) + title = f"고장코드 {field_value} 고장 기록" + + # 현재 레코드 제외 + faults = [f for f in faults if f.id != current_record.id] + + # 팝업 생성 + popup = PopupWidget(self, title=title, width=320, auto_hide=False) + + if not faults: + popup.add_text("최근 3달 이내 관련 기록이 없습니다.", is_secondary=True) + else: + popup.add_text(f"총 {len(faults)}건의 기록이 있습니다.", is_secondary=True) + + # 각 고장 기록을 버튼으로 표시 + for fault in faults[:10]: # 최대 10개만 표시 + # 날짜 포맷팅 (date 객체 또는 문자열 처리) + if fault.occurrence_date: + if isinstance(fault.occurrence_date, date): + date_str = fault.occurrence_date.strftime("%Y-%m-%d") + elif isinstance(fault.occurrence_date, str): + date_str = fault.occurrence_date[:10] if len(fault.occurrence_date) >= 10 else fault.occurrence_date + else: + date_str = str(fault.occurrence_date) + else: + date_str = "-" + + # 시간 포맷팅 (time 객체 또는 문자열 처리) + if fault.occurrence_time: + if hasattr(fault.occurrence_time, 'strftime'): + time_str = fault.occurrence_time.strftime("%H:%M") + elif isinstance(fault.occurrence_time, str): + # 문자열인 경우 (예: "14:30:00" 또는 "14:30") + time_str = fault.occurrence_time[:5] if len(fault.occurrence_time) >= 5 else fault.occurrence_time + else: + time_str = str(fault.occurrence_time) + else: + time_str = "-" + + summary = f"{date_str} {time_str} | {fault.fault_content[:30] if fault.fault_content else '-'}" + + btn = QPushButton(summary) + btn.setCursor(Qt.PointingHandCursor) + btn.setProperty("fault_id", fault.id) + btn.setProperty("filter_type", field_name) + btn.setProperty("filter_value", field_value) + btn.clicked.connect(lambda checked=False, f=fault, ft=field_name, fv=field_value: + self._open_fault_dialog_with_filter(f.id, ft, fv)) + + # 버튼 스타일 + theme = self.config.theme + if theme == 'dark': + btn.setStyleSheet(""" + QPushButton { + background-color: #334155; + color: #f8fafc; + border: 1px solid #475569; + border-radius: 6px; + padding: 8px; + text-align: left; + } + QPushButton:hover { + background-color: #475569; + border-color: #64748b; + } + """) + else: + btn.setStyleSheet(""" + QPushButton { + background-color: #f8fafc; + color: #1e293b; + border: 1px solid #e2e8f0; + border-radius: 6px; + padding: 8px; + text-align: left; + } + QPushButton:hover { + background-color: #e2e8f0; + border-color: #cbd5e1; + } + """) + + popup.content_layout.addWidget(btn) + + return popup + + def _show_fault_history_popup(self, field_name: str, field_value: str, record: Fault, label: ClickableLabel): + """고장 기록 팝업 표시""" + if not field_value: + return + + popup = self._create_fault_history_popup(field_name, field_value, record) + + # 라벨 위치 기준으로 팝업 위치 계산 + label_pos = label.mapToGlobal(QPoint(0, 0)) + popup_pos = QPoint(label_pos.x() + label.width() + 10, label_pos.y()) + + popup.show_at(popup_pos) + + # 팝업을 라벨과 연결하여 마우스 이탈 시 닫기 + self._current_popup = popup + + def _open_fault_dialog_with_filter(self, fault_id: int, filter_type: str = "", filter_value: str = ""): + """필터가 적용된 상태로 고장 다이얼로그 열기""" + # 사용하지 않는 매개변수 무시 + _ = (filter_type, filter_value) + + # 고장 다이얼로그 열기 + record = self.crud.get_fault(fault_id) + if record: + dialog = FaultInputDialog(self, record) + dialog.exec() + + # 팝업 닫기 + self._close_current_popup() + + +class FaultInputDialog(SectionInputDialog): + """ + 고장 입력 다이얼로그 + + 개선된 레이아웃: + - 상단: 고장내용/조치내용을 크게 좌우 배치 + - 하단: 날짜, 편성, 호차 등 기타 정보 + - 키보드 탭 네비게이션 지원 + - ClickableLabel 팝업 방식의 편성 선택 + """ + + def __init__(self, parent=None, record: Fault = None): + super().__init__( + parent, + title="고장 추가" if record is None else "고장 편집", + record=record, + width=900, + height=700 + ) + + self._selected_train: Optional[str] = None + self._selected_source: Optional[str] = None + self._current_popup = None # 현재 열린 팝업 추적 + + self._setup_improved_layout() + self._setup_tab_order() + + if record: + self._load_record(record) + + def _setup_improved_layout(self): + """개선된 레이아웃 설정""" + from ui.components.custom_input import CustomLineEdit, CustomTextEdit, CustomComboBox, LabeledInput + from PySide6.QtWidgets import ( + QHBoxLayout, QVBoxLayout, QWidget, QGridLayout, + QSpinBox, QFrame, QSizePolicy + ) + from PySide6.QtCore import QDate, QTime + from PySide6.QtGui import QFont + + theme = self.config.theme + is_dark = theme == 'dark' + + # ===================================================================== + # 상단 영역: 고장내용 / 조치내용 (좌우 크게 배치) + # ===================================================================== + content_area = QWidget() + content_layout = QHBoxLayout(content_area) + content_layout.setContentsMargins(0, 0, 0, 0) + content_layout.setSpacing(16) + + # 고장내용 (좌측) + fault_container = QWidget() + fault_layout = QVBoxLayout(fault_container) + fault_layout.setContentsMargins(0, 0, 0, 0) + fault_layout.setSpacing(4) + + fault_label = self._create_section_label("고장내용 *", is_dark) + fault_layout.addWidget(fault_label) + + self.fault_content_input = CustomTextEdit( + placeholder="고장 내용을 입력하세요\n예: TCU 고장 발생. 추진력 감소 현상.", + min_height=180 + ) + fault_layout.addWidget(self.fault_content_input) + content_layout.addWidget(fault_container, 1) + + # 조치내용 (우측) - 단계별 리스트 + action_container = QWidget() + action_layout = QVBoxLayout(action_container) + action_layout.setContentsMargins(0, 0, 0, 0) + action_layout.setSpacing(4) + + # 헤더 (라벨 + 추가 버튼) + action_header = QWidget() + action_header_layout = QHBoxLayout(action_header) + action_header_layout.setContentsMargins(0, 0, 0, 0) + action_header_layout.setSpacing(8) + + action_label = self._create_section_label("조치내용", is_dark) + action_header_layout.addWidget(action_label) + + from PySide6.QtWidgets import QPushButton + add_action_btn = QPushButton("+ 추가") + add_action_btn.setFixedHeight(28) + add_action_btn.setCursor(Qt.PointingHandCursor) + add_action_btn.clicked.connect(self._add_action_step) + add_action_btn.setStyleSheet(""" + QPushButton { + background-color: #3b82f6; + color: white; + border: none; + border-radius: 6px; + padding: 4px 12px; + font-size: 11pt; + font-weight: bold; + } + QPushButton:hover { + background-color: #2563eb; + } + """) + action_header_layout.addWidget(add_action_btn) + action_header_layout.addStretch() + + action_layout.addWidget(action_header) + + # 조치 단계 리스트 스크롤 영역 + from PySide6.QtWidgets import QScrollArea + self.action_steps_scroll = QScrollArea() + self.action_steps_scroll.setWidgetResizable(True) + self.action_steps_scroll.setMinimumHeight(180) + self.action_steps_scroll.setMaximumHeight(400) + + # 다크모드 배경색 설정 + theme = self.config.theme + scroll_bg = "#0f172a" if theme == 'dark' else "#ffffff" + self.action_steps_scroll.setStyleSheet(f""" + QScrollArea {{ + border: none; + background-color: {scroll_bg}; + }} + """) + + self.action_steps_container = QWidget() + # 컨테이너 배경색도 설정 + self.action_steps_container.setStyleSheet(f""" + QWidget {{ + background-color: {scroll_bg}; + }} + """) + self.action_steps_layout = QVBoxLayout(self.action_steps_container) + self.action_steps_layout.setContentsMargins(0, 0, 0, 0) + self.action_steps_layout.setSpacing(8) + self.action_steps_layout.addStretch() + + self.action_steps_scroll.setWidget(self.action_steps_container) + action_layout.addWidget(self.action_steps_scroll) + + # 조치 단계 리스트 저장 + self.action_steps = [] # [(step_number, content, team, created_at), ...] + + content_layout.addWidget(action_container, 1) + + self.content_layout.addWidget(content_area) + + # ===================================================================== + # 구분선 + # ===================================================================== + separator = QFrame() + separator.setFrameShape(QFrame.HLine) + separator.setStyleSheet(f"background-color: {'#475569' if is_dark else '#e2e8f0'};") + separator.setFixedHeight(1) + self.content_layout.addWidget(separator) + + # ===================================================================== + # 하단 영역: 날짜, 시간, 편성, 호차 등 기타 정보 + # ===================================================================== + info_area = QWidget() + info_layout = QGridLayout(info_area) + info_layout.setContentsMargins(0, 8, 0, 0) + info_layout.setSpacing(12) + info_layout.setColumnStretch(0, 1) + info_layout.setColumnStretch(1, 1) + info_layout.setColumnStretch(2, 1) + info_layout.setColumnStretch(3, 1) + + row = 0 + + # 첫 번째 행: 발생일자, 발생시간, 열번, 편성 + # 발생일자 (클릭 시 캘린더) + self.date_label = self._create_clickable_field( + "발생일자", date.today().strftime("%Y-%m-%d"), self._show_date_picker + ) + info_layout.addWidget(self._wrap_with_label("발생일자", self.date_label), row, 0) + + # 발생시간 (스핀박스) + time_widget = self._create_time_spinbox() + info_layout.addWidget(self._wrap_with_label("발생시간", time_widget), row, 1) + + # 열번 (4개 스핀박스) + column_widget = self._create_column_spinbox() + info_layout.addWidget(self._wrap_with_label("열번", column_widget), row, 2) + + # 편성 (클릭 시 팝업 칩 선택) + self.train_label = self._create_clickable_field( + "편성 선택", "선택", self._show_train_popup + ) + info_layout.addWidget(self._wrap_with_label("편성 *", self.train_label), row, 3) + + row += 1 + + # 두 번째 행: 호차, 발생역, 장치분류, 고장코드 + # 호차 (스핀박스 1~8) + car_widget = self._create_car_spinbox() + info_layout.addWidget(self._wrap_with_label("호차", car_widget), row, 0) + + # 발생역 + self.station_input = CustomLineEdit(placeholder="발생역") + self.station_input.setMinimumHeight(36) + self.station_input.textChanged.connect(self._estimate_time_from_column_station) + info_layout.addWidget(self._wrap_with_label("발생역", self.station_input), row, 1) + + # 장치분류 + self.device_input = CustomComboBox(items=DEVICE_CATEGORIES, placeholder="장치분류") + self.device_input.setMinimumHeight(36) + info_layout.addWidget(self._wrap_with_label("장치분류", self.device_input), row, 2) + + # 고장코드 + self.code_input = CustomLineEdit(placeholder="고장코드") + self.code_input.setMinimumHeight(36) + info_layout.addWidget(self._wrap_with_label("고장코드", self.code_input), row, 3) + + row += 1 + + # 세 번째 행: 고장출처, 조치팀 + # 고장출처 (클릭 시 팝업 칩 선택) + self.source_label = self._create_clickable_field( + "고장출처 선택", "선택", self._show_source_popup + ) + info_layout.addWidget(self._wrap_with_label("고장출처", self.source_label), row, 0) + + # 조치팀 (클릭 시 팝업 칩 선택) + self.team_label = self._create_clickable_field( + "조치팀 선택", "선택", self._show_team_popup + ) + info_layout.addWidget(self._wrap_with_label("조치팀", self.team_label), row, 1) + + # 빈 공간 + info_layout.addWidget(QWidget(), row, 2) + info_layout.addWidget(QWidget(), row, 3) + + self.content_layout.addWidget(info_area) + + # 스트레치 추가 + self.content_layout.addStretch() + + def _create_section_label(self, text: str, is_dark: bool) -> QLabel: + """섹션 라벨 생성""" + from PySide6.QtWidgets import QLabel + from PySide6.QtGui import QFont + + label = QLabel(text) + label.setFont(QFont("GmarketSans", 11, QFont.Bold)) + label.setStyleSheet(f"color: {'#f8fafc' if is_dark else '#1e293b'}; min-height: 24px;") + return label + + def _wrap_with_label(self, label_text: str, widget) -> QWidget: + """라벨과 위젯을 감싸는 컨테이너 생성""" + from PySide6.QtWidgets import QVBoxLayout, QWidget, QLabel + from PySide6.QtGui import QFont + + container = QWidget() + layout = QVBoxLayout(container) + layout.setContentsMargins(0, 0, 0, 0) + layout.setSpacing(2) + + theme = self.config.theme + is_dark = theme == 'dark' + + label = QLabel(label_text) + label.setFont(QFont("GmarketSans", 9)) + label.setStyleSheet(f"color: {'#94a3b8' if is_dark else '#64748b'}; min-height: 16px;") + layout.addWidget(label) + layout.addWidget(widget) + + return container + + def _create_clickable_field(self, placeholder: str, default_text: str, click_handler) -> ClickableLabel: + """클릭 가능한 필드 생성""" + theme = self.config.theme + is_dark = theme == 'dark' + + label = ClickableLabel(default_text, enable_hover=True) + label.setMinimumHeight(36) + label.setAlignment(Qt.AlignCenter) + + if is_dark: + label.setStyleSheet(""" + QLabel { + border: 1px solid #475569; + border-radius: 6px; + padding: 6px 12px; + background-color: #334155; + color: #f8fafc; + font-size: 12px; + } + QLabel:hover { + background-color: #475569; + border-color: #64748b; + } + """) + else: + label.setStyleSheet(""" + QLabel { + border: 1px solid #cbd5e1; + border-radius: 6px; + padding: 6px 12px; + background-color: #f8fafc; + color: #1e293b; + font-size: 12px; + } + QLabel:hover { + background-color: #e2e8f0; + border-color: #94a3b8; + } + """) + + label.clicked.connect(click_handler) + return label + + def _create_time_spinbox(self) -> QWidget: + """시간 입력 스핀박스 생성 (시:분)""" + from PySide6.QtWidgets import QHBoxLayout, QWidget, QSpinBox, QLabel + from datetime import datetime + + container = QWidget() + layout = QHBoxLayout(container) + layout.setContentsMargins(0, 0, 0, 0) + layout.setSpacing(4) + + theme = self.config.theme + spinbox_style = self._get_spinbox_style() + + # 시간 스핀박스 + self.hour_spin = QSpinBox() + self.hour_spin.setRange(0, 23) + self.hour_spin.setValue(datetime.now().hour) + self.hour_spin.setFixedWidth(50) + self.hour_spin.setStyleSheet(spinbox_style) + layout.addWidget(self.hour_spin) + + # 구분자 + colon = QLabel(":") + colon.setStyleSheet(f"color: {'#f8fafc' if theme == 'dark' else '#1e293b'};") + layout.addWidget(colon) + + # 분 스핀박스 + self.minute_spin = QSpinBox() + self.minute_spin.setRange(0, 59) + self.minute_spin.setValue(datetime.now().minute) + self.minute_spin.setFixedWidth(50) + self.minute_spin.setStyleSheet(spinbox_style) + layout.addWidget(self.minute_spin) + + layout.addStretch() + return container + + def _create_column_spinbox(self) -> QWidget: + """열번 입력 스핀박스 생성 (4자리)""" + from PySide6.QtWidgets import QHBoxLayout, QWidget, QSpinBox + + container = QWidget() + layout = QHBoxLayout(container) + layout.setContentsMargins(0, 0, 0, 0) + layout.setSpacing(2) + + spinbox_style = self._get_spinbox_style() + + # 1000자리 (1~9) + self.column_1000 = QSpinBox() + self.column_1000.setRange(1, 9) + self.column_1000.setValue(1) + self.column_1000.setFixedWidth(40) + self.column_1000.setStyleSheet(spinbox_style) + self.column_1000.setToolTip("열차종별: 1,2=정기, 3,4=회송, 5,6=시운전, 7,8=구간, 9=임시") + layout.addWidget(self.column_1000) + + # 100자리 (0~8) + self.column_100 = QSpinBox() + self.column_100.setRange(0, 8) + self.column_100.setValue(0) + self.column_100.setFixedWidth(40) + self.column_100.setStyleSheet(spinbox_style) + layout.addWidget(self.column_100) + + # 10자리 (0~9) + self.column_10 = QSpinBox() + self.column_10.setRange(0, 9) + self.column_10.setValue(0) + self.column_10.setFixedWidth(40) + self.column_10.setStyleSheet(spinbox_style) + layout.addWidget(self.column_10) + + # 1자리 (0~9) + self.column_1 = QSpinBox() + self.column_1.setRange(0, 9) + self.column_1.setValue(1) + self.column_1.setFixedWidth(40) + self.column_1.setStyleSheet(spinbox_style) + self.column_1.setToolTip("홀수=상행, 짝수=하행") + layout.addWidget(self.column_1) + + # 열번 변경 시 발생시각 자동 추정 + def on_column_changed(): + self._estimate_time_from_column_station() + + self.column_1000.valueChanged.connect(on_column_changed) + self.column_100.valueChanged.connect(on_column_changed) + self.column_10.valueChanged.connect(on_column_changed) + self.column_1.valueChanged.connect(on_column_changed) + + layout.addStretch() + return container + + def _create_car_spinbox(self) -> QWidget: + """호차 입력 스핀박스 생성 (1~8)""" + from PySide6.QtWidgets import QHBoxLayout, QWidget, QSpinBox, QLabel + + container = QWidget() + layout = QHBoxLayout(container) + layout.setContentsMargins(0, 0, 0, 0) + layout.setSpacing(4) + + spinbox_style = self._get_spinbox_style() + + self.car_spin = QSpinBox() + self.car_spin.setRange(1, 8) + self.car_spin.setValue(1) + self.car_spin.setFixedWidth(50) + self.car_spin.setStyleSheet(spinbox_style) + layout.addWidget(self.car_spin) + + theme = self.config.theme + suffix = QLabel("호차") + suffix.setStyleSheet(f"color: {'#94a3b8' if theme == 'dark' else '#64748b'};") + layout.addWidget(suffix) + + layout.addStretch() + return container + + def _get_spinbox_style(self) -> str: + """스핀박스 스타일 반환""" + theme = self.config.theme + + if theme == 'dark': + return """ + QSpinBox { + background-color: #334155; + color: #f8fafc; + border: 1px solid #475569; + border-radius: 4px; + padding: 4px; + font-size: 12px; + } + QSpinBox::up-button, QSpinBox::down-button { + background-color: #475569; + border: none; + width: 14px; + } + QSpinBox::up-button:hover, QSpinBox::down-button:hover { + background-color: #64748b; + } + """ + else: + return """ + QSpinBox { + background-color: #f8fafc; + color: #1e293b; + border: 1px solid #cbd5e1; + border-radius: 4px; + padding: 4px; + font-size: 12px; + } + QSpinBox::up-button, QSpinBox::down-button { + background-color: #e2e8f0; + border: none; + width: 14px; + } + QSpinBox::up-button:hover, QSpinBox::down-button:hover { + background-color: #cbd5e1; + } + """ + + def _setup_tab_order(self): + """탭 순서 설정""" + # 고장내용 -> 날짜 -> 시간 -> 열번 -> 편성 -> 호차 -> 발생역 -> 장치분류 -> 고장코드 + self.setTabOrder(self.fault_content_input, self.hour_spin) + self.setTabOrder(self.hour_spin, self.minute_spin) + self.setTabOrder(self.minute_spin, self.column_1000) + self.setTabOrder(self.column_1000, self.column_100) + self.setTabOrder(self.column_100, self.column_10) + self.setTabOrder(self.column_10, self.column_1) + self.setTabOrder(self.column_1, self.car_spin) + self.setTabOrder(self.car_spin, self.station_input) + self.setTabOrder(self.station_input, self.device_input) + self.setTabOrder(self.device_input, self.code_input) + + def _close_current_popup(self): + """현재 열린 팝업 닫기""" + if self._current_popup: + # BaseDialog인 경우 accept() 또는 close() 사용 + if hasattr(self._current_popup, 'accept'): + self._current_popup.accept() + elif hasattr(self._current_popup, 'hide_popup'): + self._current_popup.hide_popup() + else: + self._current_popup.close() + self._current_popup = None + + def _show_date_picker(self): + """날짜 선택기 표시""" + from ui.components.custom_calendar import CustomCalendar + from ui.components.popup_widget import PopupWidget + + self._close_current_popup() + + popup = PopupWidget(self, title="발생일 선택", width=300, auto_hide=False) + self._current_popup = popup + + calendar = CustomCalendar(show_range_toggle=False, show_time=False) + + # 현재 선택된 날짜 설정 + try: + current_date_str = self.date_label.text() + current_date = datetime.strptime(current_date_str, "%Y-%m-%d").date() + calendar.set_date(current_date) + except Exception: + calendar.set_date(date.today()) + + def on_date_selected(selected_date): + self.date_label.setText(selected_date.strftime("%Y-%m-%d")) + # 날짜 변경 시 시간 재추정 + self._estimate_time_from_column_station() + if hasattr(popup, 'hide_popup'): + popup.hide_popup() + else: + popup.close() + self._current_popup = None + + calendar.date_selected.connect(on_date_selected) + popup.content_layout.addWidget(calendar) + + # 팝업 위치 + label_pos = self.date_label.mapToGlobal(QPoint(0, 0)) + popup_pos = QPoint(label_pos.x(), label_pos.y() + self.date_label.height() + 5) + popup.show_at(popup_pos) + + def _estimate_time_from_column_station(self): + """열번과 역명으로 발생시각 자동 추정""" + try: + from core.dia_data_loader import estimate_time_by_column_station + + # 열번 조합 + column_number = f"{self.column_1000.value()}{self.column_100.value()}{self.column_10.value()}{self.column_1.value()}" + + # 발생역 가져오기 + station = self.station_input.text().strip() + + if not station: + return + + # 발생일자 가져오기 + occurrence_date = None + try: + date_str = self.date_label.text() + occurrence_date = datetime.strptime(date_str, "%Y-%m-%d").date() + except Exception: + occurrence_date = date.today() + + # 시간 추정 + estimated_time = estimate_time_by_column_station( + column_number, station, occurrence_date + ) + + if estimated_time: + self.hour_spin.setValue(estimated_time.hour) + self.minute_spin.setValue(estimated_time.minute) + + except Exception as e: + logger.debug(f"시간 추정 실패: {e}") + + def _show_train_popup(self): + """편성 선택 팝업 표시 (칩 방식) - train_formations 테이블 사용""" + from ui.components.chips.choice_chip_button import ChoiceChipButton + from ui.base.base_dialog import BaseDialog + from PySide6.QtWidgets import ( + QGridLayout, QWidget, QButtonGroup, QScrollArea, + QHBoxLayout, QVBoxLayout, QLabel + ) + + self._close_current_popup() + + popup = BaseDialog( + self, + title="편성 선택", + width=500, + height=500, + min_width=400, + min_height=400, + modal=True, + frameless=True, + resizable=True + ) + self._current_popup = popup + + # 데이터베이스에서 편성 목록 가져오기 + from database.common_db_manager import CommonDatabaseManager + db = CommonDatabaseManager() + all_formations = db.fetch_all( + "SELECT train_number, depot FROM train_formations ORDER BY train_number" + ) + + # 배속지 필터 영역 (필터 칩 사용) + filter_widget = QWidget() + filter_layout = QVBoxLayout(filter_widget) + filter_layout.setContentsMargins(0, 0, 0, 0) + filter_layout.setSpacing(8) + + filter_label = QLabel("배속지:") + filter_label.setStyleSheet("color: #e0e0e0; font-size: 11pt; font-weight: bold;") + filter_layout.addWidget(filter_label) + + depot_chip_container = QWidget() + depot_chip_layout = QHBoxLayout(depot_chip_container) + depot_chip_layout.setContentsMargins(0, 0, 0, 0) + depot_chip_layout.setSpacing(8) + + depot_filter_group = QButtonGroup() + depot_filter_group.setExclusive(True) + + selected_depot = ["전체"] # 선택된 배속지 저장 (리스트로 참조 전달) + + def create_depot_chip(text: str, key: str): + chip = ChoiceChipButton(text=text, key=key, bg="#3b82f6") + depot_filter_group.addButton(chip) + depot_chip_layout.addWidget(chip) + + if key == "전체": + chip.setChecked(True) + + def make_depot_handler(depot_key: str): + def handler(): + selected_depot[0] = depot_key + # 선택된 칩 색상 변경 + for btn in depot_filter_group.buttons(): + if isinstance(btn, ChoiceChipButton): + if btn.key == depot_key: + btn.set_bg("#64748b") + else: + btn.set_bg("#3b82f6") + update_chips(depot_key) + return handler + + chip.clicked_key.connect(make_depot_handler(key)) + return chip + + create_depot_chip("전체", "전체") + create_depot_chip("신평", "신평") + create_depot_chip("노포", "노포") + + depot_chip_layout.addStretch() + filter_layout.addWidget(depot_chip_container) + + popup.content_layout.addWidget(filter_widget) + + # 스크롤 가능한 영역 + scroll = QScrollArea() + scroll.setWidgetResizable(True) + scroll.setMaximumHeight(350) + scroll.setStyleSheet("QScrollArea { border: none; background-color: transparent; }") + + chip_container = QWidget() + chip_layout = QGridLayout(chip_container) + chip_layout.setContentsMargins(8, 8, 8, 8) + chip_layout.setSpacing(4) + + current_train = self._selected_train or "" + + def update_chips(depot_filter_value: str = "전체"): + """칩 목록 업데이트""" + # 기존 칩 제거 + while chip_layout.count(): + item = chip_layout.takeAt(0) + if item: + widget = item.widget() + if widget: + widget.deleteLater() + + # 버튼 그룹 초기화 + button_group = QButtonGroup() + button_group.setExclusive(True) + + # 필터링된 편성 목록 + if depot_filter_value == "전체": + filtered_formations = all_formations + else: + filtered_formations = [ + f for f in all_formations + if f.get('depot') == depot_filter_value + ] + + # 선택된 편성을 앞쪽으로 정렬 + if current_train: + selected_formations = [ + f for f in filtered_formations + if f.get('train_number') == current_train + ] + unselected_formations = [ + f for f in filtered_formations + if f.get('train_number') != current_train + ] + # 선택된 편성을 앞에, 나머지를 뒤에 배치 + sorted_formations = selected_formations + unselected_formations + else: + sorted_formations = filtered_formations + + # 편성번호를 그리드로 배치 (5열) + col_count = 5 + for idx, formation in enumerate(sorted_formations): + train_number = formation.get('train_number', '') + if not train_number: + continue + + row_idx = idx // col_count + col_idx = idx % col_count + + is_selected = train_number == current_train + chip_bg = "#64748b" if is_selected else "#3b82f6" + + chip = ChoiceChipButton(text=train_number, key=train_number, bg=chip_bg) + chip.setMinimumWidth(70) + button_group.addButton(chip) + chip_layout.addWidget(chip, row_idx, col_idx) + + if is_selected: + chip.setChecked(True) + + # 클로저 문제 해결: train_number를 명시적으로 캡처 + def make_handler(tn: str): + def handler(): + self._selected_train = tn + self.train_label.setText(tn) + popup.accept() + self._current_popup = None + return handler + + chip.clicked_key.connect(make_handler(train_number)) + + # 빈 공간이 있으면 stretch 추가 + chip_layout.setRowStretch(chip_layout.rowCount(), 1) + + # 초기 칩 로드 + update_chips() + + scroll.setWidget(chip_container) + popup.content_layout.addWidget(scroll, 1) + + # 다이얼로그 스타일 적용 + popup.setStyleSheet(""" + QDialog { + background-color: #0a0a0a; + } + + #dialogContainer { + background-color: #1a1a1a; + border: 1px solid #333333; + border-radius: 16px; + } + + QLabel { + color: #e0e0e0; + font-family: 'GmarketSans'; + font-size: 11pt; + } + + QScrollArea { + border: none; + background-color: transparent; + } + """) + + # 팝업 위치 (화면 중앙) + popup.exec() + + def _show_source_popup(self): + """고장출처 선택 팝업 표시""" + from ui.components.chips.choice_chip_button import ChoiceChipButton + from ui.components.popup_widget import PopupWidget + from PySide6.QtWidgets import QVBoxLayout, QWidget, QButtonGroup + + self._close_current_popup() + + popup = PopupWidget(self, title="고장출처 선택", width=180, auto_hide=False) + self._current_popup = popup + + button_group = QButtonGroup() + button_group.setExclusive(True) + + chip_container = QWidget() + chip_layout = QVBoxLayout(chip_container) + chip_layout.setContentsMargins(0, 0, 0, 0) + chip_layout.setSpacing(4) + + current_source = self._selected_source or "" + + for source in FAULT_SOURCES: + is_selected = source == current_source + chip_bg = "#64748b" if is_selected else "#8b5cf6" + + chip = ChoiceChipButton(text=source, key=source, bg=chip_bg) + chip.setMinimumWidth(150) + button_group.addButton(chip) + chip_layout.addWidget(chip) + + if is_selected: + chip.setChecked(True) + + def make_handler(source_key: str): + def handler(): + self._selected_source = source_key + self.source_label.setText(source_key) + popup.hide_popup() + self._current_popup = None + return handler + + chip.clicked_key.connect(make_handler(source)) + + popup.content_layout.addWidget(chip_container) + + label_pos = self.source_label.mapToGlobal(QPoint(0, 0)) + popup_pos = QPoint(label_pos.x(), label_pos.y() + self.source_label.height() + 5) + popup.show_at(popup_pos) + + def _show_team_popup(self): + """조치팀 선택 팝업 표시""" + from ui.components.chips.choice_chip_button import ChoiceChipButton + from ui.components.popup_widget import PopupWidget + from core.constants import TEAMS + from PySide6.QtWidgets import QHBoxLayout, QWidget, QButtonGroup + + self._close_current_popup() + + popup = PopupWidget(self, title="조치팀 선택", width=280, auto_hide=False) + self._current_popup = popup + + button_group = QButtonGroup() + button_group.setExclusive(True) + + chip_container = QWidget() + chip_layout = QHBoxLayout(chip_container) + chip_layout.setContentsMargins(0, 0, 0, 0) + chip_layout.setSpacing(4) + + current_team = self.team_label.text() if self.team_label.text() != "선택" else "" + + for team in TEAMS: + is_selected = team == current_team + chip_bg = "#64748b" if is_selected else "#10b981" + + chip = ChoiceChipButton(text=team, key=team, bg=chip_bg) + button_group.addButton(chip) + chip_layout.addWidget(chip) + + if is_selected: + chip.setChecked(True) + + def make_handler(team_key: str): + def handler(): + self.team_label.setText(team_key) + popup.hide_popup() + self._current_popup = None + return handler + + chip.clicked_key.connect(make_handler(team)) + + popup.content_layout.addWidget(chip_container) + + label_pos = self.team_label.mapToGlobal(QPoint(0, 0)) + popup_pos = QPoint(label_pos.x(), label_pos.y() + self.team_label.height() + 5) + popup.show_at(popup_pos) + + def _load_record(self, record: Fault): + """레코드 데이터 로드""" + # 날짜 + if record.occurrence_date: + if isinstance(record.occurrence_date, date): + self.date_label.setText(record.occurrence_date.strftime("%Y-%m-%d")) + + # 시간 + if record.occurrence_time: + if isinstance(record.occurrence_time, time): + self.hour_spin.setValue(record.occurrence_time.hour) + self.minute_spin.setValue(record.occurrence_time.minute) + + # 열번 + column = record.column_number or "" + if len(column) == 4 and column.isdigit(): + self.column_1000.setValue(int(column[0])) + self.column_100.setValue(int(column[1])) + self.column_10.setValue(int(column[2])) + self.column_1.setValue(int(column[3])) + + # 편성번호 + if record.train_number: + self._selected_train = record.train_number + self.train_label.setText(record.train_number) + + # 호차 + if record.car_number: + try: + self.car_spin.setValue(int(record.car_number)) + except ValueError: + pass + + # 발생역 + self.station_input.setText(record.occurrence_station or "") + + # 장치분류 + if record.device_category: + self.device_input.set_selected_value(record.device_category) + + # 고장코드 + self.code_input.setText(record.fault_code or "") + + # 고장출처 + if record.fault_source: + self._selected_source = record.fault_source + self.source_label.setText(record.fault_source) + + # 조치팀 + if record.action_team: + self.team_label.setText(record.action_team) + + # 고장내용 + self.fault_content_input.set_text(record.fault_content or "") + + # 조치 단계 로드 + self._load_action_steps(record.id if record.id else None) + + def get_data(self) -> dict: + """입력 데이터 반환""" + # 날짜 + try: + occurrence_date = datetime.strptime(self.date_label.text(), "%Y-%m-%d").date() + except ValueError: + occurrence_date = date.today() + + # 시간 + occurrence_time = time(self.hour_spin.value(), self.minute_spin.value()) + + # 열번 + column_number = f"{self.column_1000.value()}{self.column_100.value()}{self.column_10.value()}{self.column_1.value()}" + + # 조치팀 + action_team = self.team_label.text() if self.team_label.text() != "선택" else "" + + return { + "created_date": date.today().isoformat(), + "created_team": self.config.current_team, + "occurrence_date": occurrence_date.isoformat(), + "occurrence_time": occurrence_time.isoformat(), + "column_number": column_number, + "train_number": self._selected_train or "", + "car_number": str(self.car_spin.value()), + "device_category": self.device_input.get_selected_value() or "", + "fault_code": self.code_input.text(), + "occurrence_station": self.station_input.text(), + "fault_source": self._selected_source or "", + "action_team": action_team, + "fault_content": self.fault_content_input.get_text(), + "action_content": "", # 조치 단계로 관리하므로 빈 문자열 + } + + def validate(self) -> bool: + """입력 유효성 검사""" + if not self._selected_train: + self.signals.status_message.emit("편성번호를 선택해주세요.", 3000) + return False + if not self.fault_content_input.get_text().strip(): + self.signals.status_message.emit("고장내용을 입력해주세요.", 3000) + return False + return True + + def _add_action_step(self): + """조치 단계 추가""" + from ui.dialogs.action_step_dialog import ActionStepDialog + + dialog = ActionStepDialog(self) + if dialog.exec(): + step_data = dialog.get_data() + step_number = len(self.action_steps) + 1 + self.action_steps.append({ + 'step_number': step_number, + 'action_content': step_data.get('action_content', ''), + 'action_team': step_data.get('action_team', ''), + 'created_at': datetime.now() + }) + self._refresh_action_steps_display() + + def _edit_action_step(self, step_index: int): + """조치 단계 편집""" + from ui.dialogs.action_step_dialog import ActionStepDialog + + if step_index < 0 or step_index >= len(self.action_steps): + return + + step_data = self.action_steps[step_index] + dialog = ActionStepDialog(self, step_data) + if dialog.exec(): + updated_data = dialog.get_data() + self.action_steps[step_index].update({ + 'action_content': updated_data.get('action_content', ''), + 'action_team': updated_data.get('action_team', ''), + }) + self._refresh_action_steps_display() + + def _delete_action_step(self, step_index: int): + """조치 단계 삭제""" + if step_index < 0 or step_index >= len(self.action_steps): + return + + from PySide6.QtWidgets import QMessageBox + reply = QMessageBox.question( + self, + "삭제 확인", + "정말 이 조치 단계를 삭제하시겠습니까?", + QMessageBox.Yes | QMessageBox.No, + QMessageBox.No + ) + + if reply == QMessageBox.Yes: + self.action_steps.pop(step_index) + # 단계 번호 재정렬 + for i, step in enumerate(self.action_steps): + step['step_number'] = i + 1 + self._refresh_action_steps_display() + + def _refresh_action_steps_display(self): + """조치 단계 표시 새로고침""" + # 기존 위젯 제거 + while self.action_steps_layout.count() > 1: # stretch 제외 + item = self.action_steps_layout.takeAt(0) + if item.widget(): + item.widget().deleteLater() + + # 조치 단계 위젯 추가 + for idx, step in enumerate(self.action_steps): + step_widget = self._create_action_step_widget(idx, step) + self.action_steps_layout.insertWidget(idx, step_widget) + + def _create_action_step_widget(self, step_index: int, step_data: dict) -> QWidget: + """조치 단계 위젯 생성""" + from PySide6.QtWidgets import QFrame, QHBoxLayout, QVBoxLayout, QPushButton, QLabel + + step_widget = QFrame() + step_widget.setFrameShape(QFrame.Box) + step_layout = QVBoxLayout(step_widget) + step_layout.setContentsMargins(12, 8, 12, 8) + step_layout.setSpacing(4) + + theme = self.config.theme + bg_color = "#1e293b" if theme == 'dark' else "#f8fafc" + border_color = "#334155" if theme == 'dark' else "#e2e8f0" + text_color = "#f8fafc" if theme == 'dark' else "#1e293b" + secondary_color = "#94a3b8" if theme == 'dark' else "#64748b" + + step_widget.setStyleSheet(f""" + QFrame {{ + background-color: {bg_color}; + border: 1px solid {border_color}; + border-radius: 8px; + }} + """) + + # 헤더 (단계 번호, 조치팀, 시간, 버튼) + header_layout = QHBoxLayout() + header_layout.setContentsMargins(0, 0, 0, 0) + header_layout.setSpacing(8) + + step_number_label = QLabel(f"단계 {step_data.get('step_number', step_index + 1)}") + step_number_label.setStyleSheet(f"color: {text_color}; font-weight: bold; font-size: 11pt;") + header_layout.addWidget(step_number_label) + + team_label = QLabel(step_data.get('action_team', '')) + team_label.setStyleSheet(f"color: {secondary_color}; font-size: 10pt;") + header_layout.addWidget(team_label) + + created_at = step_data.get('created_at') + if isinstance(created_at, datetime): + time_str = created_at.strftime("%Y-%m-%d %H:%M") + elif isinstance(created_at, str): + time_str = created_at + else: + time_str = datetime.now().strftime("%Y-%m-%d %H:%M") + + time_label = QLabel(time_str) + time_label.setStyleSheet(f"color: {secondary_color}; font-size: 9pt;") + header_layout.addWidget(time_label) + header_layout.addStretch() + + # 편집/삭제 버튼 (ClickableLabel로 변경) + edit_label = ClickableLabel("편집", enable_hover=True) + edit_label.setCursor(Qt.PointingHandCursor) + edit_label.clicked.connect(lambda: self._edit_action_step(step_index)) + edit_label.setStyleSheet(f""" + QLabel {{ + background-color: #64748b; + color: white; + border: none; + border-radius: 4px; + padding: 2px 8px; + font-size: 10pt; + font-weight: 500; + }} + QLabel:hover {{ + background-color: #475569; + }} + """) + header_layout.addWidget(edit_label) + + delete_label = ClickableLabel("삭제", enable_hover=True) + delete_label.setCursor(Qt.PointingHandCursor) + delete_label.clicked.connect(lambda: self._delete_action_step(step_index)) + delete_label.setStyleSheet(f""" + QLabel {{ + background-color: #ef4444; + color: white; + border: none; + border-radius: 4px; + padding: 2px 8px; + font-size: 10pt; + font-weight: 500; + }} + QLabel:hover {{ + background-color: #dc2626; + }} + """) + header_layout.addWidget(delete_label) + + step_layout.addLayout(header_layout) + + # 조치 내용 + content_label = QLabel(step_data.get('action_content', '')) + content_label.setWordWrap(True) + content_label.setStyleSheet(f"color: {text_color}; font-size: 11pt; padding: 4px 0;") + step_layout.addWidget(content_label) + + return step_widget + + def _load_action_steps(self, fault_id: Optional[int]): + """조치 단계 로드""" + self.action_steps = [] + + if not fault_id: + return + + db = DatabaseManager() + steps = db.fetch_all( + "SELECT * FROM action_steps WHERE fault_id = ? ORDER BY step_number", + (fault_id,) + ) + + for step in steps: + created_at_str = step.get('created_at') + if isinstance(created_at_str, str): + try: + created_at = datetime.fromisoformat(created_at_str.replace('Z', '+00:00')) + except: + created_at = datetime.now() + else: + created_at = datetime.now() + + self.action_steps.append({ + 'id': step.get('id'), + 'step_number': step.get('step_number', 0), + 'action_content': step.get('action_content', ''), + 'action_team': step.get('action_team', ''), + 'created_at': created_at + }) + + self._refresh_action_steps_display() + + def _save_action_steps(self, fault_id: int): + """조치 단계 저장""" + db = DatabaseManager() + + # 기존 조치 단계 삭제 + db.execute("DELETE FROM action_steps WHERE fault_id = ?", (fault_id,)) + + # 새로운 조치 단계 저장 + for step in self.action_steps: + db.execute(""" + INSERT INTO action_steps (fault_id, step_number, action_content, action_team) + VALUES (?, ?, ?, ?) + """, ( + fault_id, + step.get('step_number', 0), + step.get('action_content', ''), + step.get('action_team', '') + )) + + diff --git a/ui/sections/instruction_section.py b/ui/sections/instruction_section.py new file mode 100644 index 0000000..c21e87e --- /dev/null +++ b/ui/sections/instruction_section.py @@ -0,0 +1,940 @@ +# -*- coding: utf-8 -*- +""" +지시 섹션 모듈 +상위부서나 상급자의 지시사항을 관리하는 섹션입니다. +""" + +from datetime import date +from typing import List, Optional, Any + +from PySide6.QtWidgets import QDialog, QPushButton +from PySide6.QtCore import Qt, QPoint + +from ui.base.base_section import BaseSection, FieldConfig +from ui.dialogs.input_dialog import SectionInputDialog +from ui.widgets.clickableLabel import ClickableLabel +from ui.components.popup_widget import PopupWidget +from database.models import Instruction +from database.crud import CRUDManager +from core.logger import get_logger + +logger = get_logger(__name__) + + +class InstructionSection(BaseSection): + """ + 지시 섹션 + + 상위부서나 상급자의 지시사항을 표시하고 관리합니다. + + 필드: + - 생성일, 생성팀, 지시자, 지시내용, 지시일자, 지속여부, 팀확인, 완료 + """ + + def __init__(self, parent=None): + super().__init__(parent, "instructions", Instruction) + + # 필드 설정 + self._setup_fields() + + # 초기화 후 처리 (설정 로드) + self._post_init() + + # 팝업 추적용 + self._current_popup: Optional[PopupWidget] = None + self._current_team_popup: Optional[PopupWidget] = None + + # 초기 데이터 로드 + self.load_data() + + logger.info("지시 섹션 초기화 완료") + + def _setup_fields(self): + """필드 설정""" + self.fields = [ + FieldConfig("created_date", "생성일", width=80, required=True, editable=False, field_type="date"), + FieldConfig("created_team", "생성팀", width=60, required=True, editable=False), + FieldConfig("instructor", "지시자", width=80), + FieldConfig("instruction_content", "지시내용", width=350), + FieldConfig("instruction_date", "지시일자", width=80, field_type="date"), + FieldConfig("is_continuous", "지속", width=50, field_type="checkbox"), + FieldConfig("team_confirmations", "확인팀", width=110), + FieldConfig("is_completed", "완료", width=40, field_type="checkbox"), + ] + + def _fetch_data(self, **filters) -> List[Instruction]: + """데이터 조회""" + # 오늘 날짜의 지시 + 지속 지시 조회 + today = date.today() + return self.crud.get_instructions_by_date(today, include_continuous=True) + + def on_add_clicked(self): + """추가 버튼 클릭""" + dialog = InstructionInputDialog(self) + if dialog.exec() == QDialog.Accepted: + data = dialog.get_data() + self.crud.create_instruction(**data) + self.refresh_data() + + def on_edit_clicked(self, record_id: int): + """편집 버튼 클릭""" + record = self.crud.get_instruction(record_id) + if record: + dialog = InstructionInputDialog(self, record) + if dialog.exec() == QDialog.Accepted: + data = dialog.get_data() + self.crud.update_instruction(record_id, **data) + self.refresh_data() + + def _delete_record(self, record_id: int): + """레코드 삭제""" + self.crud.delete_instruction(record_id) + self.refresh_data() + + def on_search_changed(self, text: str): + """검색어 변경""" + if text: + # 검색 결과로 필터링 + results = self.crud._search( + "instructions", + Instruction, + ["instructor", "instruction_content"], + text + ) + self.current_records = results + self._update_table() + else: + self.load_data() + + def _update_team_confirmations(self, record_id: int, confirmations: dict): + """팀확인 상태 업데이트""" + import json + self.crud.update_instruction(record_id, team_confirmations=json.dumps(confirmations, ensure_ascii=False)) + self.signals.data_changed.emit(self.table_name) + + def _mark_as_completed(self, record_id: int): + """레코드를 완료로 표시""" + from datetime import datetime + self.crud.update_instruction(record_id, is_completed=True, completed_at=datetime.now()) + self.signals.data_changed.emit(self.table_name) + + def _on_double_clicked(self, item): + """더블클릭 이벤트 오버라이드""" + row = item.row() + col = item.column() + + # 위젯인 경우 (ClickableLabel 등) + widget = self.table.cellWidget(row, col) + if widget: + record_id = widget.property("record_id") + if not record_id: + # 첫 번째 셀에서 레코드 ID 가져오기 + first_item = self.table.item(row, 0) + if first_item: + record_id = first_item.data(Qt.UserRole) + + if record_id: + visible_fields = [f for f in self.fields if f.visible] + if col < len(visible_fields): + field = visible_fields[col] + record = self.crud.get_instruction(record_id) + if record: + self._edit_field_inline(row, col, field, record) + return + + # 일반 아이템인 경우 부모 클래스 처리 + super()._on_double_clicked(item) + + def _edit_field_inline(self, row: int, col: int, field: FieldConfig, record: Instruction): + """인라인 필드 편집""" + if field.name == "instructor": + self._edit_instructor(row, col, record) + elif field.name == "instruction_date": + self._edit_instruction_date(row, col, record) + elif field.name == "is_continuous": + self._edit_is_continuous(row, col, record) + elif field.name == "instruction_content": + self._edit_instruction_content(row, col, record) + elif field.name == "team_confirmations": + self._edit_team_confirmations(row, col, record) + elif field.name == "created_team": + self._edit_created_team(row, col, record) + else: + # 기본 편집 모드 + self._enable_cell_editing(row, col, field) + + def _edit_instructor(self, row: int, col: int, record: Instruction): + """지시자 편집""" + from ui.components.custom_input import CustomLineEdit + from PySide6.QtWidgets import QDialog, QVBoxLayout, QDialogButtonBox + + dialog = QDialog(self) + dialog.setWindowTitle("지시자 입력") + dialog.setModal(True) + layout = QVBoxLayout(dialog) + + input_field = CustomLineEdit(placeholder="지시자 이름") + if record.instructor: + input_field.setText(record.instructor) + layout.addWidget(input_field) + + buttons = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel) + buttons.accepted.connect(dialog.accept) + buttons.rejected.connect(dialog.reject) + layout.addWidget(buttons) + + if dialog.exec() == QDialog.Accepted: + instructor = input_field.text() + self.crud.update_instruction(record.id, instructor=instructor) + self.refresh_data() + + def _edit_instruction_date(self, row: int, col: int, record: Instruction): + """지시일자 편집 (캘린더 팝업)""" + from ui.components.custom_calendar import CustomCalendar + from PySide6.QtWidgets import QDialog, QVBoxLayout, QDialogButtonBox + from PySide6.QtCore import QDate + + dialog = QDialog(self) + dialog.setWindowTitle("지시일자 선택") + dialog.setModal(True) + layout = QVBoxLayout(dialog) + + # 캘린더 위젯 생성 + calendar = CustomCalendar(show_range_toggle=False, show_time=False) + if record.instruction_date: + qdate = QDate.fromString(record.instruction_date.isoformat(), Qt.ISODate) + calendar.calendar.setSelectedDate(qdate) + layout.addWidget(calendar) + + buttons = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel) + buttons.accepted.connect(dialog.accept) + buttons.rejected.connect(dialog.reject) + layout.addWidget(buttons) + + if dialog.exec() == QDialog.Accepted: + selected_date = calendar.get_selected_date() + if selected_date: + self.crud.update_instruction(record.id, instruction_date=selected_date) + self.refresh_data() + + def _edit_is_continuous(self, row: int, col: int, record: Instruction): + """지속여부 토글""" + new_value = not record.is_continuous + self.crud.update_instruction(record.id, is_continuous=new_value) + self.refresh_data() + + def _edit_instruction_content(self, row: int, col: int, record: Instruction): + """지시내용 편집""" + from ui.components.custom_input import CustomTextEdit, LabeledInput + from PySide6.QtWidgets import QDialog, QVBoxLayout, QDialogButtonBox + + dialog = QDialog(self) + dialog.setWindowTitle("지시내용 편집") + dialog.setModal(True) + layout = QVBoxLayout(dialog) + + # 텍스트 입력 필드 + text_input = CustomTextEdit(placeholder="지시 내용을 입력하세요", min_height=150) + text_input.set_text(record.instruction_content or "") + layout.addWidget(LabeledInput("지시내용", text_input, required=True)) + + # 버튼 + buttons = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel) + buttons.accepted.connect(dialog.accept) + buttons.rejected.connect(dialog.reject) + layout.addWidget(buttons) + + if dialog.exec() == QDialog.Accepted: + new_content = text_input.get_text() + self.crud.update_instruction(record.id, instruction_content=new_content) + self.refresh_data() + + def _edit_team_confirmations(self, row: int, col: int, record: Instruction): + """확인팀 편집 (다중선택)""" + widget = self.table.cellWidget(row, col) + if widget: + label = widget.findChild(ClickableLabel) + if label: + self._show_team_confirmations_popup(record, label) + + def _edit_created_team(self, row: int, col: int, record: Instruction): + """생성팀 편집""" + widget = self.table.cellWidget(row, col) + if widget: + label = widget.findChild(ClickableLabel) + if label: + self._show_created_team_popup(record, label) + + def _update_table(self): + """테이블 업데이트 (오버라이드)""" + self.table.setRowCount(0) + + # 표시할 필드만 필터링 + visible_fields = [f for f in self.fields if f.visible] + + # 컬럼 설정 + self.table.setColumnCount(len(visible_fields)) + self.table.setHorizontalHeaderLabels([f.label for f in visible_fields]) + + # 컬럼 너비 설정 + for i, field in enumerate(visible_fields): + self.table.setColumnWidth(i, field.width) + + # 데이터 채우기 (완료된 레코드는 제외) + for record in self.current_records: + # 완료된 레코드는 섹션에서 숨김 (DB에는 유지) + if hasattr(record, 'is_completed') and record.is_completed: + continue + + row = self.table.rowCount() + self.table.insertRow(row) + + max_height = int(40 * 1.15) # 기본 높이 15% 증가 (46px) + for col, field in enumerate(visible_fields): + value = getattr(record, field.name, "") + + # 완료 필드는 버튼 위젯으로 표시 + if field.name == "is_completed": + self._set_completion_button(row, col, record) + # 확인팀은 ClickableLabel로 표시 + elif field.name == "team_confirmations": + self._set_team_label(row, col, field, value, record) + # 생성팀은 ClickableLabel로 표시 + elif field.name == "created_team": + self._set_clickable_label(row, col, field, value, record) + # 지시자는 ClickableLabel로 표시 + elif field.name == "instructor": + self._set_clickable_label(row, col, field, value, record) + # 지시일자는 ClickableLabel로 표시 + elif field.name in ["instruction_date", "created_date"]: + self._set_clickable_label(row, col, field, value, record) + # 지속여부는 ClickableLabel로 표시 + elif field.name == "is_continuous": + self._set_continuous_label(row, col, field, value, record) + # 지시내용은 줄바꿈이 가능한 위젯으로 표시 + elif field.name == "instruction_content": + content_height = self._set_content_label(row, col, field, value, record) + if content_height: + max_height = max(max_height, content_height) + else: + item = self._create_table_item(field, value, record) + self.table.setItem(row, col, item) + + # 행 높이 설정 + self.table.setRowHeight(row, max_height) + + # 레코드 ID 저장 (첫 번째 셀에) + first_item = self.table.item(row, 0) + if first_item: + first_item.setData(Qt.UserRole, record.id) + else: + # 첫 번째 셀이 위젯인 경우 + widget = self.table.cellWidget(row, 0) + if widget: + widget.setProperty("record_id", record.id) + + def _set_clickable_label(self, row: int, col: int, field: FieldConfig, value: Any, record: Instruction): + """ClickableLabel 설정""" + from PySide6.QtWidgets import QWidget, QHBoxLayout + + display_value = self._format_value(field, value) if value else "" + + # ClickableLabel 생성 + label = ClickableLabel(display_value or "미지정", enable_hover=True) + label.setAlignment(Qt.AlignCenter) + label.setWordWrap(True) + + # 통일된 색상 적용 + theme = self.config.theme + unified_color = "#64748b" + + if theme == 'dark': + label.setStyleSheet(f""" + QLabel {{ + background-color: {unified_color}; + color: #ffffff; + border: 1px solid rgba(255,255,255,0.2); + border-radius: 0px; + padding: 0px; + margin: 0px; + font-weight: 600; + font-size: 12px; + }} + QLabel:hover {{ + background-color: {unified_color}; + border-color: rgba(255,255,255,0.4); + }} + """) + else: + label.setStyleSheet(f""" + QLabel {{ + background-color: {unified_color}; + color: #ffffff; + border: 1px solid rgba(0,0,0,0.1); + border-radius: 0px; + padding: 0px; + margin: 0px; + font-weight: 600; + font-size: 12px; + }} + QLabel:hover {{ + background-color: {unified_color}; + border-color: rgba(0,0,0,0.2); + }} + """) + + # 더블클릭 시 편집 + def on_double_clicked(): + self._edit_field_inline(row, col, field, record) + + label.double_clicked.connect(on_double_clicked) + + # 레코드 정보 저장 + label.setProperty("record_id", record.id) + label.setProperty("field_name", field.name) + label.setProperty("field_value", value or "") + + # 컨테이너 위젯으로 감싸서 구분선 적용 + container = QWidget() + container_layout = QHBoxLayout(container) + container_layout.setContentsMargins(0, 0, 0, 0) + container_layout.setSpacing(0) + container_layout.addWidget(label) + + # 구분선 스타일 적용 + gridline_color = "#475569" if theme == 'dark' else "#cbd5e1" + container.setStyleSheet(f"border-right: 1px solid {gridline_color};") + + # 셀에 위젯 설정 + self.table.setCellWidget(row, col, container) + + def _set_continuous_label(self, row: int, col: int, field: FieldConfig, value: Any, record: Instruction): + """지속여부 라벨 설정 (토글 가능)""" + from PySide6.QtWidgets import QWidget, QHBoxLayout + + is_continuous = bool(value) + display_value = "✓" if is_continuous else "-" + + # ClickableLabel 생성 + label = ClickableLabel(display_value, enable_hover=True) + label.setAlignment(Qt.AlignCenter) + + theme = self.config.theme + + # 지속이면 초록색, 아니면 회색 + if is_continuous: + bg_color = "#22c55e" + text_color = "#ffffff" + else: + bg_color = "#64748b" + text_color = "#94a3b8" if theme == 'dark' else "#cbd5e1" + + if theme == 'dark': + label.setStyleSheet(f""" + QLabel {{ + background-color: {bg_color}; + color: {text_color}; + border: 1px solid rgba(255,255,255,0.2); + border-radius: 0px; + padding: 0px; + margin: 0px; + font-weight: 600; + font-size: 14px; + }} + QLabel:hover {{ + background-color: {bg_color}; + border-color: rgba(255,255,255,0.4); + }} + """) + else: + label.setStyleSheet(f""" + QLabel {{ + background-color: {bg_color}; + color: {text_color}; + border: 1px solid rgba(0,0,0,0.1); + border-radius: 0px; + padding: 0px; + margin: 0px; + font-weight: 600; + font-size: 14px; + }} + QLabel:hover {{ + background-color: {bg_color}; + border-color: rgba(0,0,0,0.2); + }} + """) + + # 클릭 시 토글 + def on_clicked(): + self._edit_is_continuous(row, col, record) + + label.clicked.connect(on_clicked) + label.setToolTip("클릭하여 지속 여부 토글") + + # 레코드 정보 저장 + label.setProperty("record_id", record.id) + label.setProperty("field_name", field.name) + + # 컨테이너 위젯으로 감싸기 + container = QWidget() + container_layout = QHBoxLayout(container) + container_layout.setContentsMargins(0, 0, 0, 0) + container_layout.setSpacing(0) + container_layout.addWidget(label) + + # 구분선 스타일 적용 + gridline_color = "#475569" if theme == 'dark' else "#cbd5e1" + container.setStyleSheet(f"border-right: 1px solid {gridline_color};") + + # 셀에 위젯 설정 + self.table.setCellWidget(row, col, container) + + def _set_team_label(self, row: int, col: int, field: FieldConfig, value: Any, record: Instruction): + """확인팀 라벨 설정 (공간 효율 최대화)""" + from PySide6.QtWidgets import QWidget, QHBoxLayout + import json + + theme = self.config.theme + unified_color = "#64748b" + + # 확인팀: 확인된 팀 숫자만 표시 (예: "1 2 4") + try: + confirmations = json.loads(value) if isinstance(value, str) else value + if isinstance(confirmations, dict): + # 팀 이름에서 숫자만 추출하여 정렬 + confirmed_nums = sorted([ + team.replace("팀", "") + for team, confirmed in confirmations.items() + if confirmed + ]) + display_value = " ".join(confirmed_nums) if confirmed_nums else "-" + else: + display_value = "-" + except Exception: + display_value = "-" + + # ClickableLabel 생성 + label = ClickableLabel(display_value, enable_hover=False) + label.setAlignment(Qt.AlignCenter) + + # 통일된 스타일 적용 + if theme == 'dark': + label.setStyleSheet(f""" + QLabel {{ + background-color: {unified_color}; + color: #ffffff; + border: 1px solid rgba(255,255,255,0.2); + border-radius: 0px; + padding: 0px; + margin: 0px; + font-weight: 600; + font-size: 12px; + }} + QLabel:hover {{ + background-color: {unified_color}; + border-color: rgba(255,255,255,0.4); + }} + """) + else: + label.setStyleSheet(f""" + QLabel {{ + background-color: {unified_color}; + color: #ffffff; + border: 1px solid rgba(0,0,0,0.1); + border-radius: 0px; + padding: 0px; + margin: 0px; + font-weight: 600; + font-size: 12px; + }} + QLabel:hover {{ + background-color: {unified_color}; + border-color: rgba(0,0,0,0.2); + }} + """) + + # 클릭/더블클릭 이벤트 연결 + def on_clicked(): + self._show_team_confirmations_popup(record, label) + + def on_double_clicked(): + self._edit_field_inline(row, col, field, record) + + label.clicked.connect(on_clicked) + label.double_clicked.connect(on_double_clicked) + + # 레코드 정보 저장 + label.setProperty("record_id", record.id) + label.setProperty("field_name", field.name) + + # 컨테이너 위젯으로 감싸기 + container = QWidget() + container_layout = QHBoxLayout(container) + container_layout.setContentsMargins(0, 0, 0, 0) + container_layout.setSpacing(0) + container_layout.addWidget(label) + + # 구분선 스타일 적용 + gridline_color = "#475569" if theme == 'dark' else "#cbd5e1" + container.setStyleSheet(f"border-right: 1px solid {gridline_color};") + + # 셀에 위젯 설정 + self.table.setCellWidget(row, col, container) + + def _set_content_label(self, row: int, col: int, field: FieldConfig, value: Any, record: Instruction) -> int: + """지시내용 라벨 설정 (줄바꿈 지원) + + Returns: + 계산된 셀 높이 (픽셀) + """ + from PySide6.QtWidgets import QWidget, QVBoxLayout + + display_value = self._format_value(field, value) if value else "" + + # ClickableLabel 생성 (줄바꿈 지원) + label = ClickableLabel(display_value or "", enable_hover=False, enable_double_click=True, enable_right_click=True) + label.setWordWrap(True) + label.setAlignment(Qt.AlignLeft | Qt.AlignTop) + label.setTextInteractionFlags(Qt.TextSelectableByMouse) + + # 레코드 정보 저장 + label.setProperty("record_id", record.id) + label.setProperty("field_name", field.name) + label.setProperty("field_value", value or "") + + # 더블클릭 시 편집 + def on_double_clicked(): + self._edit_field_inline(row, col, field, record) + + label.double_clicked.connect(on_double_clicked) + + # 우클릭 컨텍스트 메뉴 + def on_right_clicked(pos): + from PySide6.QtWidgets import QMenu + menu = QMenu(self) + + edit_action = menu.addAction("편집") + edit_action.triggered.connect(lambda: self._edit_field_inline(row, col, field, record)) + + menu.exec_(label.mapToGlobal(pos)) + + label.right_clicked.connect(on_right_clicked) + + # 컨테이너 위젯으로 감싸기 + container = QWidget() + container_layout = QVBoxLayout(container) + container_layout.setContentsMargins(8, 4, 8, 4) + container_layout.setSpacing(0) + container_layout.addWidget(label) + + # 구분선 및 텍스트 색상 스타일 적용 + theme = self.config.theme + gridline_color = "#475569" if theme == 'dark' else "#cbd5e1" + text_color = "#f8fafc" if theme == 'dark' else "#1e293b" + + # 높이 계산 + font_metrics = self.table.fontMetrics() + base_font_size = 13 + col_width = self.table.columnWidth(col) + needs_wrap = False + calculated_height = int(40 * 1.15) + + if display_value and col_width > 0: + available_width = col_width - 16 + text_width = font_metrics.horizontalAdvance(display_value) + + if text_width > available_width: + needs_wrap = True + wrap_font_size = base_font_size - 2 + + from PySide6.QtGui import QFont, QFontMetrics + small_font = QFont(self.table.font()) + small_font.setPointSize(wrap_font_size) + small_font_metrics = QFontMetrics(small_font) + + chars_per_line = max(1, available_width // small_font_metrics.averageCharWidth()) + lines = max(1, (len(display_value) // chars_per_line) + 1) + line_height = small_font_metrics.height() + 6 + calculated_height = max(int(40 * 1.15), lines * line_height + 8) + else: + calculated_height = int(40 * 1.15) + + # 라벨에 스타일 적용 + if needs_wrap: + wrap_font_size = base_font_size - 2 + label.setStyleSheet(f""" + QLabel {{ + color: {text_color}; + background-color: transparent; + font-size: {wrap_font_size}px; + }} + """) + else: + label.setStyleSheet(f""" + QLabel {{ + color: {text_color}; + background-color: transparent; + }} + """) + + container.setStyleSheet(f"border-right: 1px solid {gridline_color};") + + # 셀에 위젯 설정 + self.table.setCellWidget(row, col, container) + + return calculated_height + + def _show_team_confirmations_popup(self, record: Instruction, label: ClickableLabel): + """확인팀 선택 팝업 표시 (다중선택)""" + from ui.components.chips.choice_chip_button import ChoiceChipButton + from ui.components.popup_widget import PopupWidget + from core.constants import TEAMS + from PySide6.QtWidgets import QHBoxLayout, QWidget + import json + + # 기존 팝업이 있으면 닫기 + if self._current_team_popup: + self._current_team_popup.hide_popup() + self._current_team_popup = None + + # 현재 확인된 팀 찾기 + current_confirmations = {} + try: + confirmations = json.loads(record.team_confirmations) if isinstance(record.team_confirmations, str) else record.team_confirmations + if isinstance(confirmations, dict): + current_confirmations = confirmations + except Exception: + pass + + # 팝업 생성 + popup = PopupWidget(self, title="확인팀 선택", width=320, auto_hide=False) + self._current_team_popup = popup + + # 칩 그룹 생성 (다중선택용) + chip_group = {} + chip_container = QWidget() + chip_layout = QHBoxLayout(chip_container) + chip_layout.setContentsMargins(0, 0, 0, 0) + chip_layout.setSpacing(8) + + def update_confirmations(): + """확인 상태 업데이트""" + confirmations = {team: chip.isChecked() for team, chip in chip_group.items()} + self._update_team_confirmations(record.id, confirmations) + self.refresh_data() + + for team in TEAMS: + is_checked = current_confirmations.get(team, False) + chip_bg = "#64748b" if is_checked else "#00bfa5" + + chip = ChoiceChipButton( + text=team, + key=team, + bg=chip_bg + ) + chip_group[team] = chip + chip_layout.addWidget(chip) + + if is_checked: + chip.setChecked(True) + + def make_toggle_handler(team_key: str): + def handler(_key: str, checked: bool): + chip = chip_group[team_key] + if checked: + chip.set_bg("#64748b") + else: + chip.set_bg("#00bfa5") + update_confirmations() + return handler + + chip.toggled_key.connect(make_toggle_handler(team)) + + chip_layout.addStretch() + popup.content_layout.addWidget(chip_container) + + # 팝업 크기 자동 조정 + chip_container.adjustSize() + chip_width = chip_container.sizeHint().width() + popup_width = max(200, min(400, chip_width + 40)) + popup.container.setFixedWidth(popup_width) + + # 팝업이 마우스 밖으로 나가면 닫기 + original_leave_event = popup.leaveEvent + def on_popup_leave(event): + if self._current_team_popup == popup: + popup.hide_popup() + self._current_team_popup = None + original_leave_event(event) + popup.leaveEvent = on_popup_leave + + # 마우스 추적 활성화 + popup.setMouseTracking(True) + popup.container.setMouseTracking(True) + + # 라벨 위치 기준으로 팝업 위치 계산 + label_pos = label.mapToGlobal(QPoint(0, 0)) + popup_pos = QPoint(label_pos.x(), label_pos.y() + label.height() + 5) + popup.show_at(popup_pos) + + def _show_created_team_popup(self, record: Instruction, label: ClickableLabel): + """생성팀 선택 팝업 표시 (단일선택)""" + from ui.components.chips.choice_chip_button import ChoiceChipButton + from ui.components.popup_widget import PopupWidget + from core.constants import TEAMS + from PySide6.QtWidgets import QHBoxLayout, QWidget, QButtonGroup + + # 기존 팝업이 있으면 닫기 + if self._current_team_popup: + self._current_team_popup.hide_popup() + self._current_team_popup = None + + current_team = record.created_team or "" + + # 팝업 생성 + popup = PopupWidget(self, title="생성팀 선택", width=400, auto_hide=False) + self._current_team_popup = popup + + # 칩 그룹 생성 (단일선택용) + button_group = QButtonGroup() + button_group.setExclusive(True) + + chip_container = QWidget() + chip_layout = QHBoxLayout(chip_container) + chip_layout.setContentsMargins(0, 0, 0, 0) + chip_layout.setSpacing(8) + + def on_team_selected(team_key: str): + self.crud.update_instruction(record.id, created_team=team_key) + self.refresh_data() + popup.hide_popup() + self._current_team_popup = None + + for team in TEAMS: + chip_bg = "#64748b" if team == current_team else "#2979ff" + + chip = ChoiceChipButton( + text=team, + key=team, + bg=chip_bg + ) + button_group.addButton(chip) + chip_layout.addWidget(chip) + + if team == current_team: + chip.setChecked(True) + + def make_chip_handler(team_key: str): + def handler(): + for btn in button_group.buttons(): + if isinstance(btn, ChoiceChipButton): + if btn.key == team_key: + btn.set_bg("#64748b") + else: + btn.set_bg("#2979ff") + on_team_selected(team_key) + return handler + + chip.clicked_key.connect(make_chip_handler(team)) + + chip_layout.addStretch() + popup.content_layout.addWidget(chip_container) + + # 팝업 크기 자동 조정 + chip_container.adjustSize() + chip_width = chip_container.sizeHint().width() + popup_width = max(200, min(400, chip_width + 40)) + popup.container.setFixedWidth(popup_width) + + # 팝업이 마우스 밖으로 나가면 닫기 + original_leave_event = popup.leaveEvent + def on_popup_leave(event): + if self._current_team_popup == popup: + popup.hide_popup() + self._current_team_popup = None + original_leave_event(event) + popup.leaveEvent = on_popup_leave + + popup.setMouseTracking(True) + popup.container.setMouseTracking(True) + + label_pos = label.mapToGlobal(QPoint(0, 0)) + popup_pos = QPoint(label_pos.x(), label_pos.y() + label.height() + 5) + popup.show_at(popup_pos) + + +class InstructionInputDialog(SectionInputDialog): + """지시 입력 다이얼로그""" + + def __init__(self, parent=None, record: Instruction = None): + super().__init__( + parent, + title="지시 추가" if record is None else "지시 편집", + record=record + ) + + self._setup_instruction_fields() + + if record: + self._load_record(record) + + def _setup_instruction_fields(self): + """지시 필드 설정""" + from ui.components.custom_input import CustomLineEdit, CustomTextEdit, LabeledInput + from ui.components.toggle_switch import LabeledToggle + from ui.components.custom_calendar import CustomCalendar + from PySide6.QtWidgets import QDateEdit + from PySide6.QtCore import QDate + from datetime import date + + # 지시자 + self.instructor_input = CustomLineEdit(placeholder="지시자 이름") + self.content_layout.addWidget(LabeledInput("지시자", self.instructor_input)) + + # 지시내용 + self.content_input = CustomTextEdit(placeholder="지시 내용을 입력하세요", min_height=80) + self.content_layout.addWidget(LabeledInput("지시내용", self.content_input, required=True)) + + # 지시일자 + self.date_input = QDateEdit() + self.date_input.setDate(QDate.currentDate()) + self.date_input.setCalendarPopup(True) + self.content_layout.addWidget(LabeledInput("지시일자", self.date_input)) + + # 지속여부 + self.continuous_toggle = LabeledToggle("지속 지시", initial_state=False) + self.content_layout.addWidget(self.continuous_toggle) + + def _load_record(self, record: Instruction): + """레코드 데이터 로드""" + self.instructor_input.setText(record.instructor or "") + self.content_input.set_text(record.instruction_content or "") + + if record.instruction_date: + from PySide6.QtCore import QDate + if isinstance(record.instruction_date, date): + self.date_input.setDate(QDate( + record.instruction_date.year, + record.instruction_date.month, + record.instruction_date.day + )) + + self.continuous_toggle.set_state(record.is_continuous) + + def get_data(self) -> dict: + """입력 데이터 반환""" + from datetime import date + + qdate = self.date_input.date() + instruction_date = date(qdate.year(), qdate.month(), qdate.day()) + + return { + "created_date": date.today().isoformat(), + "created_team": self.config.current_team, + "instructor": self.instructor_input.text(), + "instruction_content": self.content_input.get_text(), + "instruction_date": instruction_date.isoformat(), + "is_continuous": self.continuous_toggle.is_on, + } + + diff --git a/ui/sections/misc_section.py b/ui/sections/misc_section.py new file mode 100644 index 0000000..028f8fb --- /dev/null +++ b/ui/sections/misc_section.py @@ -0,0 +1,842 @@ +# -*- coding: utf-8 -*- +""" +기타 섹션 모듈 +전동차 관련 작업 외 나머지 사항을 관리하는 섹션입니다. +""" + +from datetime import date +from typing import List, Optional, Any + +from PySide6.QtWidgets import QDialog +from PySide6.QtCore import Qt, QPoint + +from ui.base.base_section import BaseSection, FieldConfig +from ui.dialogs.input_dialog import SectionInputDialog +from ui.widgets.clickableLabel import ClickableLabel +from ui.components.popup_widget import PopupWidget +from database.models import Misc +from core.logger import get_logger + +logger = get_logger(__name__) + + +class MiscSection(BaseSection): + """ + 기타 섹션 + + 전동차 관련 작업 외 나머지 사항을 표시하고 관리합니다. + + 필드: + - 전달자, 전달내용, 특이사항, 관련문서, 팀확인, 완료 + """ + + def __init__(self, parent=None): + super().__init__(parent, "miscs", Misc) + + # 필드 설정 + self._setup_fields() + + # 초기화 후 처리 (설정 로드) + self._post_init() + + # 팝업 추적용 + self._current_popup: Optional[PopupWidget] = None + self._current_team_popup: Optional[PopupWidget] = None + + # 초기 데이터 로드 + self.load_data() + + logger.info("기타 섹션 초기화 완료") + + def _setup_fields(self): + """필드 설정""" + self.fields = [ + FieldConfig("created_date", "생성일", width=80, required=True, editable=False, field_type="date"), + FieldConfig("created_team", "생성팀", width=60, required=True, editable=False), + FieldConfig("reporter", "전달자", width=80), + FieldConfig("report_content", "전달내용", width=350), + FieldConfig("remarks", "특이사항", width=180), + FieldConfig("related_document", "관련문서", width=100), + FieldConfig("team_confirmations", "확인팀", width=110), + FieldConfig("is_completed", "완료", width=40, field_type="checkbox"), + ] + + def _fetch_data(self, **filters) -> List[Misc]: + """데이터 조회""" + return self.crud.get_all_miscs() + + def on_add_clicked(self): + """추가 버튼 클릭""" + dialog = MiscInputDialog(self) + if dialog.exec() == QDialog.Accepted: + data = dialog.get_data() + self.crud.create_misc(**data) + self.refresh_data() + + def on_edit_clicked(self, record_id: int): + """편집 버튼 클릭""" + record = self.crud.get_misc(record_id) + if record: + dialog = MiscInputDialog(self, record) + if dialog.exec() == QDialog.Accepted: + data = dialog.get_data() + self.crud.update_misc(record_id, **data) + self.refresh_data() + + def _delete_record(self, record_id: int): + """레코드 삭제""" + self.crud.delete_misc(record_id) + self.refresh_data() + + def on_search_changed(self, text: str): + """검색어 변경""" + if text: + results = self.crud._search( + "miscs", + Misc, + ["reporter", "report_content", "remarks"], + text + ) + self.current_records = results + self._update_table() + else: + self.load_data() + + def _update_team_confirmations(self, record_id: int, confirmations: dict): + """팀확인 상태 업데이트""" + import json + self.crud.update_misc(record_id, team_confirmations=json.dumps(confirmations, ensure_ascii=False)) + self.signals.data_changed.emit(self.table_name) + + def _mark_as_completed(self, record_id: int): + """레코드를 완료로 표시""" + from datetime import datetime + self.crud.update_misc(record_id, is_completed=True, completed_at=datetime.now()) + self.signals.data_changed.emit(self.table_name) + + def _on_double_clicked(self, item): + """더블클릭 이벤트 오버라이드""" + row = item.row() + col = item.column() + + # 위젯인 경우 (ClickableLabel 등) + widget = self.table.cellWidget(row, col) + if widget: + record_id = widget.property("record_id") + if not record_id: + # 첫 번째 셀에서 레코드 ID 가져오기 + first_item = self.table.item(row, 0) + if first_item: + record_id = first_item.data(Qt.UserRole) + + if record_id: + visible_fields = [f for f in self.fields if f.visible] + if col < len(visible_fields): + field = visible_fields[col] + record = self.crud.get_misc(record_id) + if record: + self._edit_field_inline(row, col, field, record) + return + + # 일반 아이템인 경우 부모 클래스 처리 + super()._on_double_clicked(item) + + def _edit_field_inline(self, row: int, col: int, field: FieldConfig, record: Misc): + """인라인 필드 편집""" + if field.name == "reporter": + self._edit_reporter(row, col, record) + elif field.name == "report_content": + self._edit_report_content(row, col, record) + elif field.name == "remarks": + self._edit_remarks(row, col, record) + elif field.name == "related_document": + self._edit_related_document(row, col, record) + elif field.name == "team_confirmations": + self._edit_team_confirmations(row, col, record) + elif field.name == "created_team": + self._edit_created_team(row, col, record) + else: + # 기본 편집 모드 + self._enable_cell_editing(row, col, field) + + def _edit_reporter(self, row: int, col: int, record: Misc): + """전달자 편집""" + from ui.components.custom_input import CustomLineEdit + from PySide6.QtWidgets import QDialog, QVBoxLayout, QDialogButtonBox + + dialog = QDialog(self) + dialog.setWindowTitle("전달자 입력") + dialog.setModal(True) + layout = QVBoxLayout(dialog) + + input_field = CustomLineEdit(placeholder="전달자 이름") + if record.reporter: + input_field.setText(record.reporter) + layout.addWidget(input_field) + + buttons = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel) + buttons.accepted.connect(dialog.accept) + buttons.rejected.connect(dialog.reject) + layout.addWidget(buttons) + + if dialog.exec() == QDialog.Accepted: + reporter = input_field.text() + self.crud.update_misc(record.id, reporter=reporter) + self.refresh_data() + + def _edit_report_content(self, row: int, col: int, record: Misc): + """전달내용 편집""" + from ui.components.custom_input import CustomTextEdit, LabeledInput + from PySide6.QtWidgets import QDialog, QVBoxLayout, QDialogButtonBox + + dialog = QDialog(self) + dialog.setWindowTitle("전달내용 편집") + dialog.setModal(True) + layout = QVBoxLayout(dialog) + + text_input = CustomTextEdit(placeholder="전달 내용을 입력하세요", min_height=150) + text_input.set_text(record.report_content or "") + layout.addWidget(LabeledInput("전달내용", text_input, required=True)) + + buttons = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel) + buttons.accepted.connect(dialog.accept) + buttons.rejected.connect(dialog.reject) + layout.addWidget(buttons) + + if dialog.exec() == QDialog.Accepted: + new_content = text_input.get_text() + self.crud.update_misc(record.id, report_content=new_content) + self.refresh_data() + + def _edit_remarks(self, row: int, col: int, record: Misc): + """특이사항 편집""" + from ui.components.custom_input import CustomTextEdit, LabeledInput + from PySide6.QtWidgets import QDialog, QVBoxLayout, QDialogButtonBox + + dialog = QDialog(self) + dialog.setWindowTitle("특이사항 편집") + dialog.setModal(True) + layout = QVBoxLayout(dialog) + + text_input = CustomTextEdit(placeholder="특이사항을 입력하세요", min_height=100) + text_input.set_text(record.remarks or "") + layout.addWidget(LabeledInput("특이사항", text_input)) + + buttons = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel) + buttons.accepted.connect(dialog.accept) + buttons.rejected.connect(dialog.reject) + layout.addWidget(buttons) + + if dialog.exec() == QDialog.Accepted: + new_remarks = text_input.get_text() + self.crud.update_misc(record.id, remarks=new_remarks) + self.refresh_data() + + def _edit_related_document(self, row: int, col: int, record: Misc): + """관련문서 편집""" + from ui.components.custom_input import CustomLineEdit + from PySide6.QtWidgets import QDialog, QVBoxLayout, QDialogButtonBox + + dialog = QDialog(self) + dialog.setWindowTitle("관련문서 입력") + dialog.setModal(True) + layout = QVBoxLayout(dialog) + + input_field = CustomLineEdit(placeholder="관련 문서 (파일명 또는 링크)") + if record.related_document: + input_field.setText(record.related_document) + layout.addWidget(input_field) + + buttons = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel) + buttons.accepted.connect(dialog.accept) + buttons.rejected.connect(dialog.reject) + layout.addWidget(buttons) + + if dialog.exec() == QDialog.Accepted: + related_document = input_field.text() + self.crud.update_misc(record.id, related_document=related_document) + self.refresh_data() + + def _edit_team_confirmations(self, row: int, col: int, record: Misc): + """확인팀 편집 (다중선택)""" + widget = self.table.cellWidget(row, col) + if widget: + label = widget.findChild(ClickableLabel) + if label: + self._show_team_confirmations_popup(record, label) + + def _edit_created_team(self, row: int, col: int, record: Misc): + """생성팀 편집""" + widget = self.table.cellWidget(row, col) + if widget: + label = widget.findChild(ClickableLabel) + if label: + self._show_created_team_popup(record, label) + + def _update_table(self): + """테이블 업데이트 (오버라이드)""" + self.table.setRowCount(0) + + # 표시할 필드만 필터링 + visible_fields = [f for f in self.fields if f.visible] + + # 컬럼 설정 + self.table.setColumnCount(len(visible_fields)) + self.table.setHorizontalHeaderLabels([f.label for f in visible_fields]) + + # 컬럼 너비 설정 + for i, field in enumerate(visible_fields): + self.table.setColumnWidth(i, field.width) + + # 데이터 채우기 (완료된 레코드는 제외) + for record in self.current_records: + # 완료된 레코드는 섹션에서 숨김 (DB에는 유지) + if hasattr(record, 'is_completed') and record.is_completed: + continue + + row = self.table.rowCount() + self.table.insertRow(row) + + max_height = int(40 * 1.15) # 기본 높이 15% 증가 (46px) + for col, field in enumerate(visible_fields): + value = getattr(record, field.name, "") + + # 완료 필드는 버튼 위젯으로 표시 + if field.name == "is_completed": + self._set_completion_button(row, col, record) + # 확인팀은 ClickableLabel로 표시 + elif field.name == "team_confirmations": + self._set_team_label(row, col, field, value, record) + # 생성팀, 전달자, 관련문서는 ClickableLabel로 표시 + elif field.name in ["created_team", "reporter", "related_document"]: + self._set_clickable_label(row, col, field, value, record) + # 날짜 필드는 ClickableLabel로 표시 + elif field.name == "created_date": + self._set_clickable_label(row, col, field, value, record) + # 전달내용, 특이사항은 줄바꿈이 가능한 위젯으로 표시 + elif field.name in ["report_content", "remarks"]: + content_height = self._set_content_label(row, col, field, value, record) + if content_height: + max_height = max(max_height, content_height) + else: + item = self._create_table_item(field, value, record) + self.table.setItem(row, col, item) + + # 행 높이 설정 + self.table.setRowHeight(row, max_height) + + # 레코드 ID 저장 (첫 번째 셀에) + first_item = self.table.item(row, 0) + if first_item: + first_item.setData(Qt.UserRole, record.id) + else: + # 첫 번째 셀이 위젯인 경우 + widget = self.table.cellWidget(row, 0) + if widget: + widget.setProperty("record_id", record.id) + + def _set_clickable_label(self, row: int, col: int, field: FieldConfig, value: Any, record: Misc): + """ClickableLabel 설정""" + from PySide6.QtWidgets import QWidget, QHBoxLayout + + display_value = self._format_value(field, value) if value else "" + + # ClickableLabel 생성 + label = ClickableLabel(display_value or "미지정", enable_hover=True) + label.setAlignment(Qt.AlignCenter) + label.setWordWrap(True) + + # 통일된 색상 적용 + theme = self.config.theme + unified_color = "#64748b" + + if theme == 'dark': + label.setStyleSheet(f""" + QLabel {{ + background-color: {unified_color}; + color: #ffffff; + border: 1px solid rgba(255,255,255,0.2); + border-radius: 0px; + padding: 0px; + margin: 0px; + font-weight: 600; + font-size: 12px; + }} + QLabel:hover {{ + background-color: {unified_color}; + border-color: rgba(255,255,255,0.4); + }} + """) + else: + label.setStyleSheet(f""" + QLabel {{ + background-color: {unified_color}; + color: #ffffff; + border: 1px solid rgba(0,0,0,0.1); + border-radius: 0px; + padding: 0px; + margin: 0px; + font-weight: 600; + font-size: 12px; + }} + QLabel:hover {{ + background-color: {unified_color}; + border-color: rgba(0,0,0,0.2); + }} + """) + + # 더블클릭 시 편집 + def on_double_clicked(): + self._edit_field_inline(row, col, field, record) + + label.double_clicked.connect(on_double_clicked) + + # 레코드 정보 저장 + label.setProperty("record_id", record.id) + label.setProperty("field_name", field.name) + label.setProperty("field_value", value or "") + + # 컨테이너 위젯으로 감싸서 구분선 적용 + container = QWidget() + container_layout = QHBoxLayout(container) + container_layout.setContentsMargins(0, 0, 0, 0) + container_layout.setSpacing(0) + container_layout.addWidget(label) + + # 구분선 스타일 적용 + gridline_color = "#475569" if theme == 'dark' else "#cbd5e1" + container.setStyleSheet(f"border-right: 1px solid {gridline_color};") + + # 셀에 위젯 설정 + self.table.setCellWidget(row, col, container) + + def _set_team_label(self, row: int, col: int, field: FieldConfig, value: Any, record: Misc): + """확인팀 라벨 설정 (공간 효율 최대화)""" + from PySide6.QtWidgets import QWidget, QHBoxLayout + import json + + theme = self.config.theme + unified_color = "#64748b" + + # 확인팀: 확인된 팀 숫자만 표시 (예: "1 2 4") + try: + confirmations = json.loads(value) if isinstance(value, str) else value + if isinstance(confirmations, dict): + # 팀 이름에서 숫자만 추출하여 정렬 + confirmed_nums = sorted([ + team.replace("팀", "") + for team, confirmed in confirmations.items() + if confirmed + ]) + display_value = " ".join(confirmed_nums) if confirmed_nums else "-" + else: + display_value = "-" + except Exception: + display_value = "-" + + # ClickableLabel 생성 + label = ClickableLabel(display_value, enable_hover=False) + label.setAlignment(Qt.AlignCenter) + + # 통일된 스타일 적용 + if theme == 'dark': + label.setStyleSheet(f""" + QLabel {{ + background-color: {unified_color}; + color: #ffffff; + border: 1px solid rgba(255,255,255,0.2); + border-radius: 0px; + padding: 0px; + margin: 0px; + font-weight: 600; + font-size: 12px; + }} + QLabel:hover {{ + background-color: {unified_color}; + border-color: rgba(255,255,255,0.4); + }} + """) + else: + label.setStyleSheet(f""" + QLabel {{ + background-color: {unified_color}; + color: #ffffff; + border: 1px solid rgba(0,0,0,0.1); + border-radius: 0px; + padding: 0px; + margin: 0px; + font-weight: 600; + font-size: 12px; + }} + QLabel:hover {{ + background-color: {unified_color}; + border-color: rgba(0,0,0,0.2); + }} + """) + + # 클릭/더블클릭 이벤트 연결 + def on_clicked(): + self._show_team_confirmations_popup(record, label) + + def on_double_clicked(): + self._edit_field_inline(row, col, field, record) + + label.clicked.connect(on_clicked) + label.double_clicked.connect(on_double_clicked) + + # 레코드 정보 저장 + label.setProperty("record_id", record.id) + label.setProperty("field_name", field.name) + + # 컨테이너 위젯으로 감싸기 + container = QWidget() + container_layout = QHBoxLayout(container) + container_layout.setContentsMargins(0, 0, 0, 0) + container_layout.setSpacing(0) + container_layout.addWidget(label) + + # 구분선 스타일 적용 + gridline_color = "#475569" if theme == 'dark' else "#cbd5e1" + container.setStyleSheet(f"border-right: 1px solid {gridline_color};") + + # 셀에 위젯 설정 + self.table.setCellWidget(row, col, container) + + def _set_content_label(self, row: int, col: int, field: FieldConfig, value: Any, record: Misc) -> int: + """전달내용/특이사항 라벨 설정 (줄바꿈 지원) + + Returns: + 계산된 셀 높이 (픽셀) + """ + from PySide6.QtWidgets import QWidget, QVBoxLayout + + display_value = self._format_value(field, value) if value else "" + + # ClickableLabel 생성 (줄바꿈 지원) + label = ClickableLabel(display_value or "", enable_hover=False, enable_double_click=True, enable_right_click=True) + label.setWordWrap(True) + label.setAlignment(Qt.AlignLeft | Qt.AlignTop) + label.setTextInteractionFlags(Qt.TextSelectableByMouse) + + # 레코드 정보 저장 + label.setProperty("record_id", record.id) + label.setProperty("field_name", field.name) + label.setProperty("field_value", value or "") + + # 더블클릭 시 편집 + def on_double_clicked(): + self._edit_field_inline(row, col, field, record) + + label.double_clicked.connect(on_double_clicked) + + # 우클릭 컨텍스트 메뉴 + def on_right_clicked(pos): + from PySide6.QtWidgets import QMenu + menu = QMenu(self) + + edit_action = menu.addAction("편집") + edit_action.triggered.connect(lambda: self._edit_field_inline(row, col, field, record)) + + menu.exec_(label.mapToGlobal(pos)) + + label.right_clicked.connect(on_right_clicked) + + # 컨테이너 위젯으로 감싸기 + container = QWidget() + container_layout = QVBoxLayout(container) + container_layout.setContentsMargins(8, 4, 8, 4) + container_layout.setSpacing(0) + container_layout.addWidget(label) + + # 구분선 및 텍스트 색상 스타일 적용 + theme = self.config.theme + gridline_color = "#475569" if theme == 'dark' else "#cbd5e1" + text_color = "#f8fafc" if theme == 'dark' else "#1e293b" + + # 높이 계산 + font_metrics = self.table.fontMetrics() + base_font_size = 13 + col_width = self.table.columnWidth(col) + needs_wrap = False + calculated_height = int(40 * 1.15) + + if display_value and col_width > 0: + available_width = col_width - 16 + text_width = font_metrics.horizontalAdvance(display_value) + + if text_width > available_width: + needs_wrap = True + wrap_font_size = base_font_size - 2 + + from PySide6.QtGui import QFont, QFontMetrics + small_font = QFont(self.table.font()) + small_font.setPointSize(wrap_font_size) + small_font_metrics = QFontMetrics(small_font) + + chars_per_line = max(1, available_width // small_font_metrics.averageCharWidth()) + lines = max(1, (len(display_value) // chars_per_line) + 1) + line_height = small_font_metrics.height() + 6 + calculated_height = max(int(40 * 1.15), lines * line_height + 8) + else: + calculated_height = int(40 * 1.15) + + # 라벨에 스타일 적용 + if needs_wrap: + wrap_font_size = base_font_size - 2 + label.setStyleSheet(f""" + QLabel {{ + color: {text_color}; + background-color: transparent; + font-size: {wrap_font_size}px; + }} + """) + else: + label.setStyleSheet(f""" + QLabel {{ + color: {text_color}; + background-color: transparent; + }} + """) + + container.setStyleSheet(f"border-right: 1px solid {gridline_color};") + + # 셀에 위젯 설정 + self.table.setCellWidget(row, col, container) + + return calculated_height + + def _show_team_confirmations_popup(self, record: Misc, label: ClickableLabel): + """확인팀 선택 팝업 표시 (다중선택)""" + from ui.components.chips.choice_chip_button import ChoiceChipButton + from ui.components.popup_widget import PopupWidget + from core.constants import TEAMS + from PySide6.QtWidgets import QHBoxLayout, QWidget + import json + + # 기존 팝업이 있으면 닫기 + if self._current_team_popup: + self._current_team_popup.hide_popup() + self._current_team_popup = None + + # 현재 확인된 팀 찾기 + current_confirmations = {} + try: + confirmations = json.loads(record.team_confirmations) if isinstance(record.team_confirmations, str) else record.team_confirmations + if isinstance(confirmations, dict): + current_confirmations = confirmations + except Exception: + pass + + # 팝업 생성 + popup = PopupWidget(self, title="확인팀 선택", width=320, auto_hide=False) + self._current_team_popup = popup + + # 칩 그룹 생성 (다중선택용) + chip_group = {} + chip_container = QWidget() + chip_layout = QHBoxLayout(chip_container) + chip_layout.setContentsMargins(0, 0, 0, 0) + chip_layout.setSpacing(8) + + def update_confirmations(): + """확인 상태 업데이트""" + confirmations = {team: chip.isChecked() for team, chip in chip_group.items()} + self._update_team_confirmations(record.id, confirmations) + self.refresh_data() + + for team in TEAMS: + is_checked = current_confirmations.get(team, False) + chip_bg = "#64748b" if is_checked else "#00bfa5" + + chip = ChoiceChipButton( + text=team, + key=team, + bg=chip_bg + ) + chip_group[team] = chip + chip_layout.addWidget(chip) + + if is_checked: + chip.setChecked(True) + + def make_toggle_handler(team_key: str): + def handler(_key: str, checked: bool): + chip = chip_group[team_key] + if checked: + chip.set_bg("#64748b") + else: + chip.set_bg("#00bfa5") + update_confirmations() + return handler + + chip.toggled_key.connect(make_toggle_handler(team)) + + chip_layout.addStretch() + popup.content_layout.addWidget(chip_container) + + # 팝업 크기 자동 조정 + chip_container.adjustSize() + chip_width = chip_container.sizeHint().width() + popup_width = max(200, min(400, chip_width + 40)) + popup.container.setFixedWidth(popup_width) + + # 팝업이 마우스 밖으로 나가면 닫기 + original_leave_event = popup.leaveEvent + def on_popup_leave(event): + if self._current_team_popup == popup: + popup.hide_popup() + self._current_team_popup = None + original_leave_event(event) + popup.leaveEvent = on_popup_leave + + # 마우스 추적 활성화 + popup.setMouseTracking(True) + popup.container.setMouseTracking(True) + + # 라벨 위치 기준으로 팝업 위치 계산 + label_pos = label.mapToGlobal(QPoint(0, 0)) + popup_pos = QPoint(label_pos.x(), label_pos.y() + label.height() + 5) + popup.show_at(popup_pos) + + def _show_created_team_popup(self, record: Misc, label: ClickableLabel): + """생성팀 선택 팝업 표시 (단일선택)""" + from ui.components.chips.choice_chip_button import ChoiceChipButton + from ui.components.popup_widget import PopupWidget + from core.constants import TEAMS + from PySide6.QtWidgets import QHBoxLayout, QWidget, QButtonGroup + + # 기존 팝업이 있으면 닫기 + if self._current_team_popup: + self._current_team_popup.hide_popup() + self._current_team_popup = None + + current_team = record.created_team or "" + + # 팝업 생성 + popup = PopupWidget(self, title="생성팀 선택", width=400, auto_hide=False) + self._current_team_popup = popup + + # 칩 그룹 생성 (단일선택용) + button_group = QButtonGroup() + button_group.setExclusive(True) + + chip_container = QWidget() + chip_layout = QHBoxLayout(chip_container) + chip_layout.setContentsMargins(0, 0, 0, 0) + chip_layout.setSpacing(8) + + def on_team_selected(team_key: str): + self.crud.update_misc(record.id, created_team=team_key) + self.refresh_data() + popup.hide_popup() + self._current_team_popup = None + + for team in TEAMS: + chip_bg = "#64748b" if team == current_team else "#2979ff" + + chip = ChoiceChipButton( + text=team, + key=team, + bg=chip_bg + ) + button_group.addButton(chip) + chip_layout.addWidget(chip) + + if team == current_team: + chip.setChecked(True) + + def make_chip_handler(team_key: str): + def handler(): + for btn in button_group.buttons(): + if isinstance(btn, ChoiceChipButton): + if btn.key == team_key: + btn.set_bg("#64748b") + else: + btn.set_bg("#2979ff") + on_team_selected(team_key) + return handler + + chip.clicked_key.connect(make_chip_handler(team)) + + chip_layout.addStretch() + popup.content_layout.addWidget(chip_container) + + # 팝업 크기 자동 조정 + chip_container.adjustSize() + chip_width = chip_container.sizeHint().width() + popup_width = max(200, min(400, chip_width + 40)) + popup.container.setFixedWidth(popup_width) + + # 팝업이 마우스 밖으로 나가면 닫기 + original_leave_event = popup.leaveEvent + def on_popup_leave(event): + if self._current_team_popup == popup: + popup.hide_popup() + self._current_team_popup = None + original_leave_event(event) + popup.leaveEvent = on_popup_leave + + popup.setMouseTracking(True) + popup.container.setMouseTracking(True) + + label_pos = label.mapToGlobal(QPoint(0, 0)) + popup_pos = QPoint(label_pos.x(), label_pos.y() + label.height() + 5) + popup.show_at(popup_pos) + + +class MiscInputDialog(SectionInputDialog): + """기타 입력 다이얼로그""" + + def __init__(self, parent=None, record: Misc = None): + super().__init__( + parent, + title="기타 추가" if record is None else "기타 편집", + record=record, + width=450, + height=650 + ) + + self._setup_misc_fields() + + if record: + self._load_record(record) + + def _setup_misc_fields(self): + """기타 필드 설정""" + from ui.components.custom_input import CustomLineEdit, CustomTextEdit, LabeledInput + + # 전달자 + self.reporter_input = CustomLineEdit(placeholder="전달자 이름") + self.content_layout.addWidget(LabeledInput("전달자", self.reporter_input)) + + # 전달내용 + self.content_input = CustomTextEdit(placeholder="전달 내용을 입력하세요", min_height=80) + self.content_layout.addWidget(LabeledInput("전달내용", self.content_input, required=True)) + + # 특이사항 + self.remarks_input = CustomTextEdit(placeholder="특이사항을 입력하세요", min_height=60) + self.content_layout.addWidget(LabeledInput("특이사항", self.remarks_input)) + + # 관련문서 + self.document_input = CustomLineEdit(placeholder="관련 문서 (파일명 또는 링크)") + self.content_layout.addWidget(LabeledInput("관련문서", self.document_input)) + + def _load_record(self, record: Misc): + """레코드 데이터 로드""" + self.reporter_input.setText(record.reporter or "") + self.content_input.set_text(record.report_content or "") + self.remarks_input.set_text(record.remarks or "") + self.document_input.setText(record.related_document or "") + + def get_data(self) -> dict: + """입력 데이터 반환""" + return { + "created_date": date.today().isoformat(), + "created_team": self.config.current_team, + "reporter": self.reporter_input.text(), + "report_content": self.content_input.get_text(), + "remarks": self.remarks_input.get_text(), + "related_document": self.document_input.text(), + } + + diff --git a/ui/sections/work_section.py b/ui/sections/work_section.py new file mode 100644 index 0000000..862abb1 --- /dev/null +++ b/ui/sections/work_section.py @@ -0,0 +1,836 @@ +# -*- coding: utf-8 -*- +""" +작업 섹션 모듈 +전동차 관련 작업일정을 관리하는 섹션입니다. +""" + +from datetime import date +from typing import List, Optional, Any + +from PySide6.QtWidgets import QDialog +from PySide6.QtCore import Qt, QPoint + +from ui.base.base_section import BaseSection, FieldConfig +from ui.dialogs.input_dialog import SectionInputDialog +from ui.widgets.clickableLabel import ClickableLabel +from ui.components.popup_widget import PopupWidget +from database.models import Work +from core.logger import get_logger + +logger = get_logger(__name__) + + +class WorkSection(BaseSection): + """ + 작업 섹션 + + 전동차 관련 작업일정을 표시하고 관리합니다. + + 필드: + - 작업일정, 작업주체, 대상편성, 대상기기, 작업내용, 특이사항, 팀확인, 완료 + """ + + def __init__(self, parent=None): + super().__init__(parent, "works", Work) + + # 필드 설정 + self._setup_fields() + + # 초기화 후 처리 (설정 로드) + self._post_init() + + # 팝업 추적용 + self._current_popup: Optional[PopupWidget] = None + self._current_team_popup: Optional[PopupWidget] = None + + # 초기 데이터 로드 + self.load_data() + + logger.info("작업 섹션 초기화 완료") + + def _setup_fields(self): + """필드 설정""" + self.fields = [ + FieldConfig("work_date", "작업일", width=80, field_type="date"), + FieldConfig("work_entity", "작업주체", width=90), + FieldConfig("target_train", "대상편성", width=70), + FieldConfig("target_device", "대상기기", width=90), + FieldConfig("work_content", "작업내용", width=280), + FieldConfig("remarks", "특이사항", width=180), + FieldConfig("team_confirmations", "확인팀", width=110), + FieldConfig("is_completed", "완료", width=40, field_type="checkbox"), + ] + + def _fetch_data(self, **filters) -> List[Work]: + """데이터 조회""" + return self.crud.get_all_works() + + def on_add_clicked(self): + """추가 버튼 클릭""" + dialog = WorkInputDialog(self) + if dialog.exec() == QDialog.Accepted: + data = dialog.get_data() + self.crud.create_work(**data) + self.refresh_data() + + def on_edit_clicked(self, record_id: int): + """편집 버튼 클릭""" + record = self.crud.get_work(record_id) + if record: + dialog = WorkInputDialog(self, record) + if dialog.exec() == QDialog.Accepted: + data = dialog.get_data() + self.crud.update_work(record_id, **data) + self.refresh_data() + + def _delete_record(self, record_id: int): + """레코드 삭제""" + self.crud.delete_work(record_id) + self.refresh_data() + + def on_search_changed(self, text: str): + """검색어 변경""" + if text: + results = self.crud._search( + "works", + Work, + ["work_entity", "target_train", "work_content", "remarks"], + text + ) + self.current_records = results + self._update_table() + else: + self.load_data() + + def _update_team_confirmations(self, record_id: int, confirmations: dict): + """팀확인 상태 업데이트""" + import json + self.crud.update_work(record_id, team_confirmations=json.dumps(confirmations, ensure_ascii=False)) + self.signals.data_changed.emit(self.table_name) + + def _mark_as_completed(self, record_id: int): + """레코드를 완료로 표시""" + from datetime import datetime + self.crud.update_work(record_id, is_completed=True, completed_at=datetime.now()) + self.signals.data_changed.emit(self.table_name) + + def _on_double_clicked(self, item): + """더블클릭 이벤트 오버라이드""" + row = item.row() + col = item.column() + + # 위젯인 경우 (ClickableLabel 등) + widget = self.table.cellWidget(row, col) + if widget: + record_id = widget.property("record_id") + if not record_id: + # 첫 번째 셀에서 레코드 ID 가져오기 + first_item = self.table.item(row, 0) + if first_item: + record_id = first_item.data(Qt.UserRole) + + if record_id: + visible_fields = [f for f in self.fields if f.visible] + if col < len(visible_fields): + field = visible_fields[col] + record = self.crud.get_work(record_id) + if record: + self._edit_field_inline(row, col, field, record) + return + + # 일반 아이템인 경우 부모 클래스 처리 + super()._on_double_clicked(item) + + def _edit_field_inline(self, row: int, col: int, field: FieldConfig, record: Work): + """인라인 필드 편집""" + if field.name == "work_date": + self._edit_work_date(row, col, record) + elif field.name == "work_entity": + self._edit_work_entity(row, col, record) + elif field.name == "target_train": + self._edit_target_train(row, col, record) + elif field.name == "target_device": + self._edit_target_device(row, col, record) + elif field.name == "work_content": + self._edit_work_content(row, col, record) + elif field.name == "remarks": + self._edit_remarks(row, col, record) + elif field.name == "team_confirmations": + self._edit_team_confirmations(row, col, record) + else: + # 기본 편집 모드 + self._enable_cell_editing(row, col, field) + + def _edit_work_date(self, row: int, col: int, record: Work): + """작업일 편집 (캘린더 팝업)""" + from ui.components.custom_calendar import CustomCalendar + from PySide6.QtWidgets import QDialog, QVBoxLayout, QDialogButtonBox + from PySide6.QtCore import QDate + + dialog = QDialog(self) + dialog.setWindowTitle("작업일 선택") + dialog.setModal(True) + layout = QVBoxLayout(dialog) + + # 캘린더 위젯 생성 + calendar = CustomCalendar(show_range_toggle=False, show_time=False) + if record.work_date: + qdate = QDate.fromString(record.work_date.isoformat(), Qt.ISODate) + calendar.calendar.setSelectedDate(qdate) + layout.addWidget(calendar) + + buttons = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel) + buttons.accepted.connect(dialog.accept) + buttons.rejected.connect(dialog.reject) + layout.addWidget(buttons) + + if dialog.exec() == QDialog.Accepted: + selected_date = calendar.get_selected_date() + if selected_date: + self.crud.update_work(record.id, work_date=selected_date) + self.refresh_data() + + def _edit_work_entity(self, row: int, col: int, record: Work): + """작업주체 편집""" + from ui.components.custom_input import CustomLineEdit + from PySide6.QtWidgets import QDialog, QVBoxLayout, QDialogButtonBox + + dialog = QDialog(self) + dialog.setWindowTitle("작업주체 입력") + dialog.setModal(True) + layout = QVBoxLayout(dialog) + + input_field = CustomLineEdit(placeholder="작업주체") + if record.work_entity: + input_field.setText(record.work_entity) + layout.addWidget(input_field) + + buttons = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel) + buttons.accepted.connect(dialog.accept) + buttons.rejected.connect(dialog.reject) + layout.addWidget(buttons) + + if dialog.exec() == QDialog.Accepted: + work_entity = input_field.text() + self.crud.update_work(record.id, work_entity=work_entity) + self.refresh_data() + + def _edit_target_train(self, row: int, col: int, record: Work): + """대상편성 편집""" + from ui.components.custom_input import CustomLineEdit + from PySide6.QtWidgets import QDialog, QVBoxLayout, QDialogButtonBox + + dialog = QDialog(self) + dialog.setWindowTitle("대상편성 입력") + dialog.setModal(True) + layout = QVBoxLayout(dialog) + + input_field = CustomLineEdit(placeholder="대상편성") + if record.target_train: + input_field.setText(record.target_train) + layout.addWidget(input_field) + + buttons = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel) + buttons.accepted.connect(dialog.accept) + buttons.rejected.connect(dialog.reject) + layout.addWidget(buttons) + + if dialog.exec() == QDialog.Accepted: + target_train = input_field.text() + self.crud.update_work(record.id, target_train=target_train) + self.refresh_data() + + def _edit_target_device(self, row: int, col: int, record: Work): + """대상기기 편집""" + from ui.components.custom_input import CustomLineEdit + from PySide6.QtWidgets import QDialog, QVBoxLayout, QDialogButtonBox + + dialog = QDialog(self) + dialog.setWindowTitle("대상기기 입력") + dialog.setModal(True) + layout = QVBoxLayout(dialog) + + input_field = CustomLineEdit(placeholder="대상기기") + if record.target_device: + input_field.setText(record.target_device) + layout.addWidget(input_field) + + buttons = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel) + buttons.accepted.connect(dialog.accept) + buttons.rejected.connect(dialog.reject) + layout.addWidget(buttons) + + if dialog.exec() == QDialog.Accepted: + target_device = input_field.text() + self.crud.update_work(record.id, target_device=target_device) + self.refresh_data() + + def _edit_work_content(self, row: int, col: int, record: Work): + """작업내용 편집""" + from ui.components.custom_input import CustomTextEdit, LabeledInput + from PySide6.QtWidgets import QDialog, QVBoxLayout, QDialogButtonBox + + dialog = QDialog(self) + dialog.setWindowTitle("작업내용 편집") + dialog.setModal(True) + layout = QVBoxLayout(dialog) + + text_input = CustomTextEdit(placeholder="작업 내용을 입력하세요", min_height=150) + text_input.set_text(record.work_content or "") + layout.addWidget(LabeledInput("작업내용", text_input, required=True)) + + buttons = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel) + buttons.accepted.connect(dialog.accept) + buttons.rejected.connect(dialog.reject) + layout.addWidget(buttons) + + if dialog.exec() == QDialog.Accepted: + new_content = text_input.get_text() + self.crud.update_work(record.id, work_content=new_content) + self.refresh_data() + + def _edit_remarks(self, row: int, col: int, record: Work): + """특이사항 편집""" + from ui.components.custom_input import CustomTextEdit, LabeledInput + from PySide6.QtWidgets import QDialog, QVBoxLayout, QDialogButtonBox + + dialog = QDialog(self) + dialog.setWindowTitle("특이사항 편집") + dialog.setModal(True) + layout = QVBoxLayout(dialog) + + text_input = CustomTextEdit(placeholder="특이사항을 입력하세요", min_height=100) + text_input.set_text(record.remarks or "") + layout.addWidget(LabeledInput("특이사항", text_input)) + + buttons = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel) + buttons.accepted.connect(dialog.accept) + buttons.rejected.connect(dialog.reject) + layout.addWidget(buttons) + + if dialog.exec() == QDialog.Accepted: + new_remarks = text_input.get_text() + self.crud.update_work(record.id, remarks=new_remarks) + self.refresh_data() + + def _edit_team_confirmations(self, row: int, col: int, record: Work): + """확인팀 편집 (다중선택)""" + widget = self.table.cellWidget(row, col) + if widget: + label = widget.findChild(ClickableLabel) + if label: + self._show_team_confirmations_popup(record, label) + + def _update_table(self): + """테이블 업데이트 (오버라이드)""" + self.table.setRowCount(0) + + # 표시할 필드만 필터링 + visible_fields = [f for f in self.fields if f.visible] + + # 컬럼 설정 + self.table.setColumnCount(len(visible_fields)) + self.table.setHorizontalHeaderLabels([f.label for f in visible_fields]) + + # 컬럼 너비 설정 + for i, field in enumerate(visible_fields): + self.table.setColumnWidth(i, field.width) + + # 데이터 채우기 (완료된 레코드는 제외) + for record in self.current_records: + # 완료된 레코드는 섹션에서 숨김 (DB에는 유지) + if hasattr(record, 'is_completed') and record.is_completed: + continue + + row = self.table.rowCount() + self.table.insertRow(row) + + max_height = int(40 * 1.15) # 기본 높이 15% 증가 (46px) + for col, field in enumerate(visible_fields): + value = getattr(record, field.name, "") + + # 완료 필드는 버튼 위젯으로 표시 + if field.name == "is_completed": + self._set_completion_button(row, col, record) + # 확인팀은 ClickableLabel로 표시 + elif field.name == "team_confirmations": + self._set_team_label(row, col, field, value, record) + # 작업일, 작업주체, 대상편성, 대상기기는 ClickableLabel로 표시 + elif field.name in ["work_date", "work_entity", "target_train", "target_device"]: + self._set_clickable_label(row, col, field, value, record) + # 작업내용, 특이사항은 줄바꿈이 가능한 위젯으로 표시 + elif field.name in ["work_content", "remarks"]: + content_height = self._set_content_label(row, col, field, value, record) + if content_height: + max_height = max(max_height, content_height) + else: + item = self._create_table_item(field, value, record) + self.table.setItem(row, col, item) + + # 행 높이 설정 + self.table.setRowHeight(row, max_height) + + # 레코드 ID 저장 (첫 번째 셀에) + first_item = self.table.item(row, 0) + if first_item: + first_item.setData(Qt.UserRole, record.id) + else: + # 첫 번째 셀이 위젯인 경우 + widget = self.table.cellWidget(row, 0) + if widget: + widget.setProperty("record_id", record.id) + + def _set_clickable_label(self, row: int, col: int, field: FieldConfig, value: Any, record: Work): + """ClickableLabel 설정""" + from PySide6.QtWidgets import QWidget, QHBoxLayout + + display_value = self._format_value(field, value) if value else "" + + # ClickableLabel 생성 + label = ClickableLabel(display_value or "미지정", enable_hover=True) + label.setAlignment(Qt.AlignCenter) + label.setWordWrap(True) + + # 통일된 색상 적용 + theme = self.config.theme + unified_color = "#64748b" + + if theme == 'dark': + label.setStyleSheet(f""" + QLabel {{ + background-color: {unified_color}; + color: #ffffff; + border: 1px solid rgba(255,255,255,0.2); + border-radius: 0px; + padding: 0px; + margin: 0px; + font-weight: 600; + font-size: 12px; + }} + QLabel:hover {{ + background-color: {unified_color}; + border-color: rgba(255,255,255,0.4); + }} + """) + else: + label.setStyleSheet(f""" + QLabel {{ + background-color: {unified_color}; + color: #ffffff; + border: 1px solid rgba(0,0,0,0.1); + border-radius: 0px; + padding: 0px; + margin: 0px; + font-weight: 600; + font-size: 12px; + }} + QLabel:hover {{ + background-color: {unified_color}; + border-color: rgba(0,0,0,0.2); + }} + """) + + # 더블클릭 시 편집 + def on_double_clicked(): + self._edit_field_inline(row, col, field, record) + + label.double_clicked.connect(on_double_clicked) + + # 레코드 정보 저장 + label.setProperty("record_id", record.id) + label.setProperty("field_name", field.name) + label.setProperty("field_value", value or "") + + # 컨테이너 위젯으로 감싸서 구분선 적용 + container = QWidget() + container_layout = QHBoxLayout(container) + container_layout.setContentsMargins(0, 0, 0, 0) + container_layout.setSpacing(0) + container_layout.addWidget(label) + + # 구분선 스타일 적용 + gridline_color = "#475569" if theme == 'dark' else "#cbd5e1" + container.setStyleSheet(f"border-right: 1px solid {gridline_color};") + + # 셀에 위젯 설정 + self.table.setCellWidget(row, col, container) + + def _set_team_label(self, row: int, col: int, field: FieldConfig, value: Any, record: Work): + """확인팀 라벨 설정 (공간 효율 최대화)""" + from PySide6.QtWidgets import QWidget, QHBoxLayout + import json + + theme = self.config.theme + unified_color = "#64748b" + + # 확인팀: 확인된 팀 숫자만 표시 (예: "1 2 4") + try: + confirmations = json.loads(value) if isinstance(value, str) else value + if isinstance(confirmations, dict): + # 팀 이름에서 숫자만 추출하여 정렬 + confirmed_nums = sorted([ + team.replace("팀", "") + for team, confirmed in confirmations.items() + if confirmed + ]) + display_value = " ".join(confirmed_nums) if confirmed_nums else "-" + else: + display_value = "-" + except Exception: + display_value = "-" + + # ClickableLabel 생성 + label = ClickableLabel(display_value, enable_hover=False) + label.setAlignment(Qt.AlignCenter) + + # 통일된 스타일 적용 + if theme == 'dark': + label.setStyleSheet(f""" + QLabel {{ + background-color: {unified_color}; + color: #ffffff; + border: 1px solid rgba(255,255,255,0.2); + border-radius: 0px; + padding: 0px; + margin: 0px; + font-weight: 600; + font-size: 12px; + }} + QLabel:hover {{ + background-color: {unified_color}; + border-color: rgba(255,255,255,0.4); + }} + """) + else: + label.setStyleSheet(f""" + QLabel {{ + background-color: {unified_color}; + color: #ffffff; + border: 1px solid rgba(0,0,0,0.1); + border-radius: 0px; + padding: 0px; + margin: 0px; + font-weight: 600; + font-size: 12px; + }} + QLabel:hover {{ + background-color: {unified_color}; + border-color: rgba(0,0,0,0.2); + }} + """) + + # 클릭/더블클릭 이벤트 연결 + def on_clicked(): + self._show_team_confirmations_popup(record, label) + + def on_double_clicked(): + self._edit_field_inline(row, col, field, record) + + label.clicked.connect(on_clicked) + label.double_clicked.connect(on_double_clicked) + + # 레코드 정보 저장 + label.setProperty("record_id", record.id) + label.setProperty("field_name", field.name) + + # 컨테이너 위젯으로 감싸기 + container = QWidget() + container_layout = QHBoxLayout(container) + container_layout.setContentsMargins(0, 0, 0, 0) + container_layout.setSpacing(0) + container_layout.addWidget(label) + + # 구분선 스타일 적용 + gridline_color = "#475569" if theme == 'dark' else "#cbd5e1" + container.setStyleSheet(f"border-right: 1px solid {gridline_color};") + + # 셀에 위젯 설정 + self.table.setCellWidget(row, col, container) + + def _set_content_label(self, row: int, col: int, field: FieldConfig, value: Any, record: Work) -> int: + """작업내용/특이사항 라벨 설정 (줄바꿈 지원) + + Returns: + 계산된 셀 높이 (픽셀) + """ + from PySide6.QtWidgets import QWidget, QVBoxLayout + + display_value = self._format_value(field, value) if value else "" + + # ClickableLabel 생성 (줄바꿈 지원) + label = ClickableLabel(display_value or "", enable_hover=False, enable_double_click=True, enable_right_click=True) + label.setWordWrap(True) + label.setAlignment(Qt.AlignLeft | Qt.AlignTop) + label.setTextInteractionFlags(Qt.TextSelectableByMouse) + + # 레코드 정보 저장 + label.setProperty("record_id", record.id) + label.setProperty("field_name", field.name) + label.setProperty("field_value", value or "") + + # 더블클릭 시 편집 + def on_double_clicked(): + self._edit_field_inline(row, col, field, record) + + label.double_clicked.connect(on_double_clicked) + + # 우클릭 컨텍스트 메뉴 + def on_right_clicked(pos): + from PySide6.QtWidgets import QMenu + menu = QMenu(self) + + edit_action = menu.addAction("편집") + edit_action.triggered.connect(lambda: self._edit_field_inline(row, col, field, record)) + + menu.exec_(label.mapToGlobal(pos)) + + label.right_clicked.connect(on_right_clicked) + + # 컨테이너 위젯으로 감싸기 + container = QWidget() + container_layout = QVBoxLayout(container) + container_layout.setContentsMargins(8, 4, 8, 4) + container_layout.setSpacing(0) + container_layout.addWidget(label) + + # 구분선 및 텍스트 색상 스타일 적용 + theme = self.config.theme + gridline_color = "#475569" if theme == 'dark' else "#cbd5e1" + text_color = "#f8fafc" if theme == 'dark' else "#1e293b" + + # 높이 계산 + font_metrics = self.table.fontMetrics() + base_font_size = 13 + col_width = self.table.columnWidth(col) + needs_wrap = False + calculated_height = int(40 * 1.15) + + if display_value and col_width > 0: + available_width = col_width - 16 + text_width = font_metrics.horizontalAdvance(display_value) + + if text_width > available_width: + needs_wrap = True + wrap_font_size = base_font_size - 2 + + from PySide6.QtGui import QFont, QFontMetrics + small_font = QFont(self.table.font()) + small_font.setPointSize(wrap_font_size) + small_font_metrics = QFontMetrics(small_font) + + chars_per_line = max(1, available_width // small_font_metrics.averageCharWidth()) + lines = max(1, (len(display_value) // chars_per_line) + 1) + line_height = small_font_metrics.height() + 6 + calculated_height = max(int(40 * 1.15), lines * line_height + 8) + else: + calculated_height = int(40 * 1.15) + + # 라벨에 스타일 적용 + if needs_wrap: + wrap_font_size = base_font_size - 2 + label.setStyleSheet(f""" + QLabel {{ + color: {text_color}; + background-color: transparent; + font-size: {wrap_font_size}px; + }} + """) + else: + label.setStyleSheet(f""" + QLabel {{ + color: {text_color}; + background-color: transparent; + }} + """) + + container.setStyleSheet(f"border-right: 1px solid {gridline_color};") + + # 셀에 위젯 설정 + self.table.setCellWidget(row, col, container) + + return calculated_height + + def _show_team_confirmations_popup(self, record: Work, label: ClickableLabel): + """확인팀 선택 팝업 표시 (다중선택)""" + from ui.components.chips.choice_chip_button import ChoiceChipButton + from ui.components.popup_widget import PopupWidget + from core.constants import TEAMS + from PySide6.QtWidgets import QHBoxLayout, QWidget + import json + + # 기존 팝업이 있으면 닫기 + if self._current_team_popup: + self._current_team_popup.hide_popup() + self._current_team_popup = None + + # 현재 확인된 팀 찾기 + current_confirmations = {} + try: + confirmations = json.loads(record.team_confirmations) if isinstance(record.team_confirmations, str) else record.team_confirmations + if isinstance(confirmations, dict): + current_confirmations = confirmations + except Exception: + pass + + # 팝업 생성 + popup = PopupWidget(self, title="확인팀 선택", width=320, auto_hide=False) + self._current_team_popup = popup + + # 칩 그룹 생성 (다중선택용) + chip_group = {} + chip_container = QWidget() + chip_layout = QHBoxLayout(chip_container) + chip_layout.setContentsMargins(0, 0, 0, 0) + chip_layout.setSpacing(8) + + def update_confirmations(): + """확인 상태 업데이트""" + confirmations = {team: chip.isChecked() for team, chip in chip_group.items()} + self._update_team_confirmations(record.id, confirmations) + self.refresh_data() + + for team in TEAMS: + is_checked = current_confirmations.get(team, False) + chip_bg = "#64748b" if is_checked else "#00bfa5" + + chip = ChoiceChipButton( + text=team, + key=team, + bg=chip_bg + ) + chip_group[team] = chip + chip_layout.addWidget(chip) + + if is_checked: + chip.setChecked(True) + + def make_toggle_handler(team_key: str): + def handler(_key: str, checked: bool): + chip = chip_group[team_key] + if checked: + chip.set_bg("#64748b") + else: + chip.set_bg("#00bfa5") + update_confirmations() + return handler + + chip.toggled_key.connect(make_toggle_handler(team)) + + chip_layout.addStretch() + popup.content_layout.addWidget(chip_container) + + # 팝업 크기 자동 조정 + chip_container.adjustSize() + chip_width = chip_container.sizeHint().width() + popup_width = max(200, min(400, chip_width + 40)) + popup.container.setFixedWidth(popup_width) + + # 팝업이 마우스 밖으로 나가면 닫기 + original_leave_event = popup.leaveEvent + def on_popup_leave(event): + if self._current_team_popup == popup: + popup.hide_popup() + self._current_team_popup = None + original_leave_event(event) + popup.leaveEvent = on_popup_leave + + # 마우스 추적 활성화 + popup.setMouseTracking(True) + popup.container.setMouseTracking(True) + + # 라벨 위치 기준으로 팝업 위치 계산 + label_pos = label.mapToGlobal(QPoint(0, 0)) + popup_pos = QPoint(label_pos.x(), label_pos.y() + label.height() + 5) + popup.show_at(popup_pos) + + +class WorkInputDialog(SectionInputDialog): + """작업 입력 다이얼로그""" + + def __init__(self, parent=None, record: Work = None): + super().__init__( + parent, + title="작업 추가" if record is None else "작업 편집", + record=record, + width=450, + height=700 + ) + + self._setup_work_fields() + + if record: + self._load_record(record) + + def _setup_work_fields(self): + """작업 필드 설정""" + from ui.components.custom_input import CustomLineEdit, CustomTextEdit, LabeledInput + from PySide6.QtWidgets import QDateEdit, QHBoxLayout, QWidget + from PySide6.QtCore import QDate + + # 작업일정 + self.date_input = QDateEdit() + self.date_input.setDate(QDate.currentDate()) + self.date_input.setCalendarPopup(True) + self.content_layout.addWidget(LabeledInput("작업일정", self.date_input)) + + # 작업주체 + 대상편성 (가로 배치) + entity_widget = QWidget() + entity_layout = QHBoxLayout(entity_widget) + entity_layout.setContentsMargins(0, 0, 0, 0) + entity_layout.setSpacing(12) + + self.entity_input = CustomLineEdit(placeholder="작업주체") + entity_layout.addWidget(LabeledInput("작업주체", self.entity_input)) + + self.train_input = CustomLineEdit(placeholder="대상편성") + entity_layout.addWidget(LabeledInput("대상편성", self.train_input)) + + self.content_layout.addWidget(entity_widget) + + # 대상기기 + self.device_input = CustomLineEdit(placeholder="대상기기") + self.content_layout.addWidget(LabeledInput("대상기기", self.device_input)) + + # 작업내용 + self.work_content_input = CustomTextEdit(placeholder="작업 내용을 입력하세요", min_height=80) + self.content_layout.addWidget(LabeledInput("작업내용", self.work_content_input, required=True)) + + # 특이사항 + self.remarks_input = CustomTextEdit(placeholder="특이사항을 입력하세요", min_height=60) + self.content_layout.addWidget(LabeledInput("특이사항", self.remarks_input)) + + def _load_record(self, record: Work): + """레코드 데이터 로드""" + from PySide6.QtCore import QDate + + if record.work_date: + if isinstance(record.work_date, date): + self.date_input.setDate(QDate( + record.work_date.year, + record.work_date.month, + record.work_date.day + )) + + self.entity_input.setText(record.work_entity or "") + self.train_input.setText(record.target_train or "") + self.device_input.setText(record.target_device or "") + self.work_content_input.set_text(record.work_content or "") + self.remarks_input.set_text(record.remarks or "") + + def get_data(self) -> dict: + """입력 데이터 반환""" + qdate = self.date_input.date() + work_date = date(qdate.year(), qdate.month(), qdate.day()) + + return { + "created_date": date.today().isoformat(), + "created_team": self.config.current_team, + "work_date": work_date.isoformat(), + "work_entity": self.entity_input.text(), + "target_train": self.train_input.text(), + "target_device": self.device_input.text(), + "work_content": self.work_content_input.get_text(), + "remarks": self.remarks_input.get_text(), + } + + diff --git a/ui/styles/__init__.py b/ui/styles/__init__.py new file mode 100644 index 0000000..5265da8 --- /dev/null +++ b/ui/styles/__init__.py @@ -0,0 +1,5 @@ +# -*- coding: utf-8 -*- +""" +UI 스타일 관리 모듈 +""" + diff --git a/ui/styles/style_manager.py b/ui/styles/style_manager.py new file mode 100644 index 0000000..9935abb --- /dev/null +++ b/ui/styles/style_manager.py @@ -0,0 +1,458 @@ +# -*- coding: utf-8 -*- +""" +스타일 관리자 모듈 +UI 스타일을 중앙에서 관리합니다. + +이 모듈은 다음 기능을 제공합니다: +- 테마별 색상 관리 +- 폰트 설정 관리 +- 위젯별 스타일시트 생성 +- 텍스트 크기 기반 높이 계산 +""" + +from typing import Dict, Optional +from PySide6.QtGui import QFont, QFontMetrics + +from core.config import ConfigManager +from core.logger import get_logger + +logger = get_logger(__name__) + + +class StyleManager: + """ + 스타일 관리자 클래스 + + 싱글톤 패턴으로 애플리케이션 전역에서 하나의 인스턴스만 사용합니다. + """ + + _instance: Optional['StyleManager'] = None + _initialized = False + + def __new__(cls): + """싱글톤 패턴 구현""" + if cls._instance is None: + cls._instance = super().__new__(cls) + return cls._instance + + def __init__(self): + """스타일 관리자 초기화""" + if StyleManager._initialized: + return + + self.config = ConfigManager() + StyleManager._initialized = True + logger.info("스타일 관리자 초기화 완료") + + # ======================================================================== + # 색상 관리 + # ======================================================================== + + def get_colors(self) -> Dict[str, str]: + """ + 현재 테마의 색상 딕셔너리 반환 + + Returns: + 색상 딕셔너리 + """ + theme = self.config.theme + + if theme == 'dark': + return { + # 배경 + "bg_primary": "#0f172a", + "bg_secondary": "#1e293b", + "bg_tertiary": "#334155", + "bg_hover": "#475569", + + # 텍스트 + "text_primary": "#f8fafc", # 밝은 텍스트 (어두운 배경용) + "text_secondary": "#cbd5e1", + "text_tertiary": "#94a3b8", + "text_disabled": "#64748b", + + # 테두리 + "border": "#334155", + "border_light": "#475569", + "border_dark": "#1e293b", + + # 강조 + "accent": "#3b82f6", + "accent_hover": "#2563eb", + "accent_light": "#60a5fa", + + # 상태 + "success": "#22c55e", + "warning": "#f59e0b", + "error": "#ef4444", + "info": "#3b82f6", + + # 입력 필드 + "input_bg": "#1e293b", + "input_border": "#475569", + "input_focus": "#3b82f6", + "input_text": "#f8fafc", + + # 버튼 + "btn_primary_bg": "#3b82f6", + "btn_primary_hover": "#2563eb", + "btn_primary_text": "#ffffff", + "btn_secondary_bg": "#334155", + "btn_secondary_hover": "#475569", + "btn_secondary_text": "#f8fafc", + } + else: # light + return { + # 배경 + "bg_primary": "#ffffff", + "bg_secondary": "#f8fafc", + "bg_tertiary": "#f1f5f9", + "bg_hover": "#e2e8f0", + + # 텍스트 + "text_primary": "#1e293b", # 어두운 텍스트 (밝은 배경용) + "text_secondary": "#475569", + "text_tertiary": "#64748b", + "text_disabled": "#94a3b8", + + # 테두리 + "border": "#e2e8f0", + "border_light": "#f1f5f9", + "border_dark": "#cbd5e1", + + # 강조 + "accent": "#3b82f6", + "accent_hover": "#2563eb", + "accent_light": "#60a5fa", + + # 상태 + "success": "#22c55e", + "warning": "#f59e0b", + "error": "#ef4444", + "info": "#3b82f6", + + # 입력 필드 + "input_bg": "#ffffff", + "input_border": "#e2e8f0", + "input_focus": "#3b82f6", + "input_text": "#1e293b", + + # 버튼 + "btn_primary_bg": "#3b82f6", + "btn_primary_hover": "#2563eb", + "btn_primary_text": "#ffffff", + "btn_secondary_bg": "#e2e8f0", + "btn_secondary_hover": "#cbd5e1", + "btn_secondary_text": "#1e293b", + } + + def get_color(self, key: str) -> str: + """ + 특정 색상 가져오기 + + Args: + key: 색상 키 + + Returns: + 색상 코드 + """ + colors = self.get_colors() + return colors.get(key, "#000000") + + # ======================================================================== + # 폰트 관리 + # ======================================================================== + + def get_font(self, area: str, style: str) -> QFont: + """ + UI 영역별 폰트 반환 + + Args: + area: 영역 (info_bar, section, todo, memo, daily, status, dialog) + style: 스타일 (title, content, header, label, input, button 등) + + Returns: + QFont 객체 + """ + font_config = self.config.get_ui_font(area, style) + + font = QFont( + font_config.get("family", "GmarketSans"), + font_config.get("size", 13) + ) + + weight = font_config.get("weight", "normal") + if weight == "bold": + font.setWeight(QFont.Bold) + elif weight == "medium": + font.setWeight(QFont.Medium) + else: + font.setWeight(QFont.Normal) + + return font + + def get_font_size(self, area: str, style: str) -> int: + """폰트 크기만 반환""" + font_config = self.config.get_ui_font(area, style) + return font_config.get("size", 13) + + # ======================================================================== + # 높이 계산 + # ======================================================================== + + def calculate_input_height( + self, + font: Optional[QFont] = None, + area: str = "dialog", + style: str = "input", + min_height: int = 32, + padding: int = 8 + ) -> int: + """ + 텍스트 크기를 기반으로 입력 필드 높이 계산 + + Args: + font: QFont 객체 (None이면 area, style로부터 가져옴) + area: UI 영역 + style: 스타일 + min_height: 최소 높이 + padding: 상하 패딩 + + Returns: + 계산된 높이 (픽셀) + """ + if font is None: + font = self.get_font(area, style) + + metrics = QFontMetrics(font) + font_height = metrics.height() + + # 폰트 높이 + 상하 패딩 + calculated_height = font_height + (padding * 2) + + # 최소 높이 보장 + return max(calculated_height, min_height) + + def calculate_label_height( + self, + font: Optional[QFont] = None, + area: str = "dialog", + style: str = "label", + min_height: int = 20, + padding: int = 4 + ) -> int: + """ + 텍스트 크기를 기반으로 레이블 높이 계산 + + Args: + font: QFont 객체 + area: UI 영역 + style: 스타일 + min_height: 최소 높이 + padding: 상하 패딩 + + Returns: + 계산된 높이 (픽셀) + """ + if font is None: + font = self.get_font(area, style) + + metrics = QFontMetrics(font) + font_height = metrics.height() + + calculated_height = font_height + (padding * 2) + return max(calculated_height, min_height) + + # ======================================================================== + # 스타일시트 생성 + # ======================================================================== + + def get_input_stylesheet( + self, + area: str = "dialog", + style: str = "input", + height: Optional[int] = None + ) -> str: + """ + 입력 필드 스타일시트 생성 + + Args: + area: UI 영역 + style: 스타일 + height: 높이 (None이면 자동 계산) + + Returns: + 스타일시트 문자열 + """ + colors = self.get_colors() + + if height is None: + height = self.calculate_input_height(area=area, style=style) + + font = self.get_font(area, style) + font_size = font.pointSize() + font_family = font.family() + + return f""" + QLineEdit, QTextEdit, QComboBox, QSpinBox {{ + background-color: {colors['input_bg']}; + color: {colors['input_text']}; + border: 1px solid {colors['input_border']}; + border-radius: 6px; + padding: {height // 4}px 12px; + font-family: '{font_family}'; + font-size: {font_size}pt; + min-height: {height}px; + }} + QLineEdit:focus, QTextEdit:focus, QComboBox:focus, QSpinBox:focus {{ + border-color: {colors['input_focus']}; + outline: none; + }} + QComboBox::drop-down {{ + border: none; + width: 25px; + }} + QComboBox::down-arrow {{ + image: none; + border-left: 5px solid transparent; + border-right: 5px solid transparent; + border-top: 6px solid {colors['input_text']}; + margin-right: 5px; + }} + QComboBox QAbstractItemView {{ + background-color: {colors['input_bg']}; + color: {colors['input_text']}; + border: 1px solid {colors['input_border']}; + selection-background-color: {colors['accent']}; + selection-color: {colors['btn_primary_text']}; + }} + """ + + def get_label_stylesheet( + self, + area: str = "dialog", + style: str = "label", + height: Optional[int] = None + ) -> str: + """ + 레이블 스타일시트 생성 + + Args: + area: UI 영역 + style: 스타일 + height: 높이 (None이면 자동 계산) + + Returns: + 스타일시트 문자열 + """ + colors = self.get_colors() + + if height is None: + height = self.calculate_label_height(area=area, style=style) + + font = self.get_font(area, style) + font_size = font.pointSize() + font_family = font.family() + font_weight = "bold" if font.weight() == QFont.Bold else "normal" + + return f""" + QLabel[dialogLabel="true"] {{ + color: {colors['text_primary']}; + font-family: '{font_family}'; + font-size: {font_size}pt; + font-weight: {font_weight}; + min-height: {height}px; + padding: {height // 4}px 0px; + }} + """ + + def get_button_stylesheet( + self, + style_type: str = "primary", + area: str = "dialog", + style: str = "button" + ) -> str: + """ + 버튼 스타일시트 생성 + + Args: + style_type: 버튼 타입 (primary, secondary, outline, danger) + area: UI 영역 + style: 스타일 + + Returns: + 스타일시트 문자열 + """ + colors = self.get_colors() + font = self.get_font(area, style) + font_size = font.pointSize() + font_family = font.family() + + if style_type == "primary": + bg = colors['btn_primary_bg'] + hover = colors['btn_primary_hover'] + text = colors['btn_primary_text'] + elif style_type == "secondary": + bg = colors['btn_secondary_bg'] + hover = colors['btn_secondary_hover'] + text = colors['btn_secondary_text'] + elif style_type == "outline": + bg = "transparent" + hover = colors['bg_hover'] + text = colors['text_primary'] + border_value = f"1px solid {colors['border']}" + elif style_type == "danger": + bg = colors['error'] + hover = "#dc2626" + text = "#ffffff" + border_value = "none" + else: + bg = colors['btn_secondary_bg'] + hover = colors['btn_secondary_hover'] + text = colors['btn_secondary_text'] + border_value = "none" + + border_style = f"border: {border_value};" + + return f""" + QPushButton {{ + background-color: {bg}; + color: {text}; + {border_style} + border-radius: 6px; + padding: 8px 16px; + font-family: '{font_family}'; + font-size: {font_size}pt; + min-height: {self.calculate_input_height(area=area, style=style)}px; + }} + QPushButton:hover {{ + background-color: {hover}; + }} + QPushButton:pressed {{ + background-color: {hover}; + opacity: 0.9; + }} + QPushButton:disabled {{ + background-color: {colors['bg_tertiary']}; + color: {colors['text_disabled']}; + opacity: 0.5; + }} + """ + + def get_dialog_stylesheet(self) -> str: + """다이얼로그 전체 스타일시트 생성""" + colors = self.get_colors() + + return f""" + QDialog {{ + background-color: {colors['bg_secondary']}; + color: {colors['text_primary']}; + }} + """ + + +# 편의 함수 +def get_style_manager() -> StyleManager: + """스타일 관리자 인스턴스 반환""" + return StyleManager() + diff --git a/ui/widgets/__init__.py b/ui/widgets/__init__.py new file mode 100644 index 0000000..f1eefdf --- /dev/null +++ b/ui/widgets/__init__.py @@ -0,0 +1,17 @@ +# -*- coding: utf-8 -*- +""" +위젯 패키지 +일상검수, 할일 목록, 메모 위젯 정의 +""" + +from .daily_inspection import DailyInspectionWidget +from .todo_list import TodoListWidget +from .memo_widget import MemoWidget + +__all__ = [ + 'DailyInspectionWidget', + 'TodoListWidget', + 'MemoWidget', +] + + diff --git a/ui/widgets/clickableLabel.py b/ui/widgets/clickableLabel.py new file mode 100644 index 0000000..9841286 --- /dev/null +++ b/ui/widgets/clickableLabel.py @@ -0,0 +1,445 @@ +from PySide6.QtWidgets import QLabel, QMenu, QVBoxLayout, QWidget +from PySide6.QtCore import Qt,Signal, QPoint +from PySide6.QtGui import QMouseEvent, QEnterEvent, QDragLeaveEvent, QCursor +from core.logger import get_logger + +logger = get_logger(__name__) + +class ClickableLabel(QLabel): + """ + 클릭 / 더블클릭 / 우클릭 컨텍스트 메뉴 / 마우스 호버링 / 드래그 / 그리드 스냅 지원 QLabel + + [Signals] + - clicked(): 좌클릭 + - double_clicked(): 좌측 더블클릭 + - right_clicked(pos: QPoint): 우클릭 (로컬 좌표) + - hover_entered(): 마우스 진입 + - hover_left(): 마우스 이탈 + - drag_started(pos: QPoint): 드래그 시작 + - dragging(delta: QPoint): 드래그 중 (이동량) + - drag_finished(): 드래그 종료 + + /사용예시 + label = ClickableLabel("클릭해보세요") + label.clicked.connect(lambda: logger.info("원클릭")) + label.double_clicked.connect(lambda: logger.info("더블클릭")) + label.hover_entered.connect(lambda: logger.info("마우스 진입")) + label.hover_left.connect(lambda: logger.info("마우스 이탈")) + + /우클릭 컨텍스트 + label.right_clicked.connect( + lambda pos: logger.info(f"우클릭 위치: {pos}") + ) + + /드래그 + label.drag_started.connect( + lambda pos: logger.info(f"드래그 시작 위치: {pos}") + ) + label.dragging.connect( + lambda delta: logger.info(f"드래그 이동량: {delta}") + ) + label.drag_finished.connect(lambda: logger.info("드래그 종료")) + + def on_drag(delta: QPoint): + label.move(label.pos() + delta) + label.dragging.connect(on_drag) + + /드래그 시작 시 UI 반응 정의 : 배경색 변경 + label.drag_started.connect(lambda _: label.setStyleSheet("background:#d0ebff")) + label.drag_finished.connect(lambda: label.setStyleSheet("")) + + 호버링 (호버링 사용시 setMouseTracking(True) 필요) + def on_hover_enter(): + label.setStyleSheet("background-color: #f0f0f0;") + + def on_hover_leave(): + label.setStyleSheet("background-color: none;") + + label.hover_entered.connect(on_hover_enter) + label.hover_left.connect(on_hover_leave) + + + """ + + clicked = Signal() # 좌클릭 + double_clicked = Signal() # 더블클릭 + right_clicked = Signal(QPoint) # 우클릭 + + hover_entered = Signal() # 마우스 진입 + hover_left = Signal() # 마우스 이탈 + + drag_started = Signal(QPoint) # 드래그 시작 위치 + dragging = Signal(QPoint) # 드래그 이동량 + drag_finished = Signal() # 드래그 종료 + + def __init__( + self, + text: str = "", + parent=None, + hover_text=None, + *, + enable_click: bool = True, + enable_double_click: bool = True, + enable_right_click: bool = False, + enable_hover: bool = True, + enable_drag: bool = False, + enable_context_menu: bool = False, + context_menu_builder=None, + enable_grid_snap: bool = False, + grid_size: int = 20, + **kwargs + ): + + super().__init__(text, parent) + + + # ----------------------------- + # 기능 활성화 플래그 + # ----------------------------- + self.enable_click = enable_click + self.enable_double_click = enable_double_click + self.enable_right_click = enable_right_click + self.enable_hover = enable_hover + self.enable_drag = enable_drag + self.enable_context_menu = enable_context_menu + self._context_menu_builder = context_menu_builder + self.enable_grid_snap = enable_grid_snap + + # ----------------------------- + # 드래그 / 그리드 설정 + # ----------------------------- + self.grid_size = grid_size + self._drag_threshold = 5 # px (클릭 vs 드래그 구분) + + self._press_pos: QPoint | None = None + self._dragging = False + + # ----------------------------- + # UI 기본 설정 + # ----------------------------- + self.setCursor(Qt.PointingHandCursor) + + # 텍스트 중앙 정렬 + self.setAlignment(Qt.AlignCenter) + + self._hover_text = hover_text + self._hover_text_provider: callable | None = None + self._hover_popup = None + + # hover는 mouse tracking 필수 + if self.enable_hover: + self.setMouseTracking(True) + else: + self.setMouseTracking(False) + + # ------------------------------------------------- + # 마우스 누름 + # ------------------------------------------------- + def mousePressEvent(self, event: QMouseEvent): + if event.button() == Qt.LeftButton: + if self.enable_click: + self.clicked.emit() + + if self.enable_drag: + self._press_pos = event.pos() + self._dragging = False + + elif event.button() == Qt.RightButton: + if self.enable_right_click: + self.right_clicked.emit(event.pos()) + + if self.enable_context_menu: + self._show_context_menu(event.globalPos()) + + super().mousePressEvent(event) + + # ------------------------------------------------- + # 마우스 이동 (드래그) + # ------------------------------------------------- + def mouseMoveEvent(self, event: QMouseEvent): + if not self.enable_drag or self._press_pos is None: + super().mouseMoveEvent(event) + return + + delta = event.pos() - self._press_pos + + if not self._dragging and delta.manhattanLength() >= self._drag_threshold: + self._dragging = True + self.drag_started.emit(self._press_pos) + + if self._dragging: + self.dragging.emit(delta) + self._move_with_grid_snap(delta) + + super().mouseMoveEvent(event) + + # ------------------------------------------------- + # 마우스 해제 + # ------------------------------------------------- + def mouseReleaseEvent(self, event: QMouseEvent): + if event.button() == Qt.LeftButton and self.enable_drag: + if self._dragging: + self.drag_finished.emit() + + self._dragging = False + self._press_pos = None + + super().mouseReleaseEvent(event) + + # ------------------------------------------------- + # 더블클릭 + # ------------------------------------------------- + def mouseDoubleClickEvent(self, event: QMouseEvent): + if event.button() == Qt.LeftButton and self.enable_double_click: + self.double_clicked.emit() + super().mouseDoubleClickEvent(event) + + # ------------------------------------------------- + # 호버 + + # 사용법 (주의:provider 함수에서 DB 조회, 네트워크 요청, 긴 계산 등을 포함하면 안됨,필요한 경우 캐시+갱신 이벤트구조로 구현) + + # label.set_hover_text_provider( + # lambda: f""" + # 상태: {node.status} + # 전압: {node.voltage}V + # 최근 점검: {node.last_check} + # """.strip() + # ) + + # ------------------------------------------------- + def enterEvent(self, event: QEnterEvent): + if self.enable_hover: + self.hover_entered.emit() + text = self._get_hover_text() + if text: + self._hover_popup = HoverInfoPopup(text) + pos = QCursor.pos() + QPoint(10, 10) # 마우스 커서 위치에서 약간 오프셋 + self._hover_popup.move(pos) + self._hover_popup.show() + + super().enterEvent(event) + + def leaveEvent(self, event: QDragLeaveEvent): + + if not self.enable_hover: + super().leaveEvent(event) + return + + # popup이 있고, 마우스가 popup 안에 있으면 닫지 않음 + if self._hover_popup and self._hover_popup.is_mouse_inside(): + return + + self.hover_left.emit() + + if self.enable_hover: + if self._hover_popup: + self._hover_popup.close() + self._hover_popup = None + super().leaveEvent(event) + + def set_hover_text(self, text: str): + """ + hover 정보 텍스트 설정 (즉시 반영) + """ + self._hover_text = text + self._hover_text_provider = None + + if self._hover_popup: + self._hover_popup.set_text(text) + + def _get_hover_text(self) -> str | None: + if self._hover_text_provider: + return self._hover_text_provider() + return self._hover_text + + def clear_hover_text(self): + """ + hover 정보 제거 + """ + self._hover_text = None + self._hover_text_provider = None + + if self._hover_popup: + self._hover_popup.close() + self._hover_popup = None + + def set_hover_text_provider(self, provider: callable): + """ + hover 시점에 호출되는 함수 등록 + """ + self._hover_text_provider = provider + self._hover_text = None + + if self._hover_popup: + self._hover_popup.set_text(provider()) + + + # ================================================= + # 내부 기능 + # ================================================= + def _show_context_menu(self, global_pos): + if not self._context_menu_builder: + return + + menu = QMenu(self) + self._context_menu_builder(menu, self) # 컨텍스트 메뉴 빌더 호출 + menu.exec(global_pos) + + ''' 외부에서 컨텍스트 메뉴 빌더 정의 + def build_label_menu(menu: QMenu, label: ClickableLabel): + menu.addAction("편집", lambda: edit_label(label)) + menu.addAction("삭제", lambda: delete_label(label)) + menu.addSeparator() + menu.addAction("정보", lambda: show_info(label)) + + def edit_label(label): + logger.info(f"편집: {label.text()}") + + def delete_label(label): + label.deleteLater() + + def show_info(label): + logger.info(f"위치: {label.pos()}") + + 객체 생성시 컨텍스트 메뉴 빌더 전달 + label = ClickableLabel( + "NODE-1", + context_menu_builder=build_label_menu + ) + ''' + + def _move_with_grid_snap(self, delta: QPoint): + new_pos = self.pos() + delta + + if self.enable_grid_snap: + x = round(new_pos.x() / self.grid_size) * self.grid_size + y = round(new_pos.y() / self.grid_size) * self.grid_size + self.move(QPoint(x, y)) + else: + self.move(new_pos) + + + +class PopupTheme: + LIGHT = "light" + DARK = "dark" + + +class HoverInfoPopup(QWidget): + """ + 마우스 호버 시 정보 팝업 표시 QWidget + + 사용예시 + popup = HoverInfoPopup("호버 정보") + popup.show() + """ + def __init__(self, text: str, theme=PopupTheme.DARK, parent=None): + super().__init__(parent) + + # ----------------------------- + # 테마 설정 + # ----------------------------- + self._theme = theme + self.setWindowFlags( + Qt.ToolTip | + Qt.FramelessWindowHint | + Qt.BypassWindowManagerHint + ) + + self.setAttribute(Qt.WA_ShowWithoutActivating) + + self.apply_theme(theme) + + # ----------------------------- + # 윈도우 설정 + # ----------------------------- + self.setAttribute(Qt.WA_TransparentForMouseEvents, False) + + # ----------------------------- + # 드래그 설정 + # ----------------------------- + self._drag_start_pos = None + + # ----------------------------- + # UI 설정 + # ----------------------------- + layout = QVBoxLayout(self) + layout.setContentsMargins(8, 6, 8, 6) + + # ----------------------------- + # 라벨 설정 + # ----------------------------- + self.label = QLabel(text) + self.label.setTextInteractionFlags( + Qt.TextSelectableByMouse | Qt.TextSelectableByKeyboard + ) + + layout.addWidget(self.label) + + self.setStyleSheet(""" + QWidget { + background-color: #ffffe1; + border: 1px solid #c8c8a9; + border-radius: 4px; + font-size: 12px; + } + """) + + # ----------------------------- + # 드래그 이동 + # ----------------------------- + def mousePressEvent(self, event: QMouseEvent): + if event.button() == Qt.LeftButton: + self._drag_start_pos = event.globalPos() - self.frameGeometry().topLeft() + + def mouseMoveEvent(self, event: QMouseEvent): + if self._drag_start_pos: + self.move(event.globalPos() - self._drag_start_pos) + + def mouseReleaseEvent(self, event: QMouseEvent): + self._drag_start_pos = None + + # ------------------------------------------------- + # 텍스트 설정 + # ------------------------------------------------- + def set_text(self, text: str): + self.label.setText(text) + self.adjustSize() # 내용 바뀌면 크기 자동 조정 + + # ------------------------------------------------- + # 마우스 위치 확인 + # ------------------------------------------------- + def is_mouse_inside(self) -> bool: + pos = QCursor.pos() + return self.geometry().contains(pos) + + # ------------------------------------------------- + # 마우스 이탈 시 팝업 닫기 + # ------------------------------------------------- + def leaveEvent(self, event): + self.close() + super().leaveEvent(event) + + # ------------------------------------------------- + # 테마 적용 + # ------------------------------------------------- + def apply_theme(self, theme: str): + if theme == PopupTheme.DARK: + self.setStyleSheet(""" + QWidget { + background-color: #2b2b2b; + color: #eaeaea; + border: 1px solid #555; + border-radius: 6px; + } + """) + else: + self.setStyleSheet(""" + QWidget { + background-color: #ffffe1; + color: #202020; + border: 1px solid #c8c8a9; + border-radius: 6px; + } + """) \ No newline at end of file diff --git a/ui/widgets/daily_inspection.py b/ui/widgets/daily_inspection.py new file mode 100644 index 0000000..6f10cf5 --- /dev/null +++ b/ui/widgets/daily_inspection.py @@ -0,0 +1,376 @@ +# -*- coding: utf-8 -*- +""" +일상검수 위젯 모듈 +일상검수 대상 편성을 표시하고 관리하는 위젯입니다. +""" + +from datetime import date +from typing import List, Optional + +from PySide6.QtWidgets import ( + QWidget, QVBoxLayout, QHBoxLayout, QGridLayout, + QLabel, QPushButton, QFrame, QDialog +) +from PySide6.QtCore import Qt, Signal +from PySide6.QtGui import QFont, QColor, QPainter, QPen + +from ui.base.base_widget import BaseWidget, CardWidget +from ui.components.custom_button import CustomButton +from ui.dialogs.train_input_dialog import TrainInputDialog +from database.crud import CRUDManager +from database.models import DailyInspection +from core.constants import DAILY_INSPECTION_SLOTS, CLEANING_TYPES, SHIFT_TYPES +from core.config import ConfigManager +from core.signals import GlobalSignals +from core.logger import get_logger + +logger = get_logger(__name__) + + +class TrainSlot(QPushButton): + """ + 편성 슬롯 위젯 + + 일상검수 편성 하나를 표시하는 슬롯입니다. + 청소 유형에 따라 다른 표시를 합니다. + """ + + slot_clicked = Signal(int) # 슬롯 번호 + + def __init__( + self, + slot_number: int, + parent=None, + train_number: str = "", + cleaning_type: str = "없음", + has_work: bool = False + ): + super().__init__(parent) + + self.config = ConfigManager() + self.slot_number = slot_number + self._train_number = train_number + self._cleaning_type = cleaning_type + self._has_work = has_work + + # 기본 설정 - 151A 형식 표시를 위해 크기 조정 + self.setFixedSize(70, 50) + self.setCursor(Qt.PointingHandCursor) + self.setFont(QFont("GmarketSans", 12, QFont.Bold)) + + self.clicked.connect(lambda: self.slot_clicked.emit(self.slot_number)) + + self._update_display() + + def _update_display(self): + """표시 업데이트""" + if self._train_number: + self.setText(self._train_number) + else: + self.setText("+") + + self._apply_style() + + def _apply_style(self): + """스타일 적용""" + theme = self.config.theme + + if theme == 'dark': + bg = "#334155" + bg_hover = "#475569" + text = "#f8fafc" + empty_bg = "#1e293b" + empty_text = "#64748b" + else: + bg = "#e2e8f0" + bg_hover = "#cbd5e1" + text = "#1e293b" + empty_bg = "#f1f5f9" + empty_text = "#94a3b8" + + if self._train_number: + self.setStyleSheet(f""" + QPushButton {{ + background-color: {bg}; + color: {text}; + border: none; + border-radius: 8px; + font-weight: bold; + }} + QPushButton:hover {{ + background-color: {bg_hover}; + }} + """) + else: + self.setStyleSheet(f""" + QPushButton {{ + background-color: {empty_bg}; + color: {empty_text}; + border: 2px dashed {empty_text}; + border-radius: 8px; + font-size: 20px; + }} + QPushButton:hover {{ + border-color: {text}; + color: {text}; + }} + """) + + def paintEvent(self, event): + """페인트 이벤트 (청소/작업 표시)""" + super().paintEvent(event) + + if not self._train_number: + return + + painter = QPainter(self) + painter.setRenderHint(QPainter.Antialiasing) + + # 청소 표시 + if self._cleaning_type == "중청소": + # 파란 네모 + painter.setPen(QPen(QColor("#3b82f6"), 2)) + painter.setBrush(Qt.NoBrush) + painter.drawRect(4, 4, 14, 14) + elif self._cleaning_type == "대청소": + # 빨간 동그라미 + painter.setPen(QPen(QColor("#ef4444"), 2)) + painter.setBrush(Qt.NoBrush) + painter.drawEllipse(4, 4, 14, 14) + + # 작업 표시 (노란 느낌표) + if self._has_work: + painter.setPen(QPen(QColor("#f59e0b"), 2)) + painter.setFont(QFont("Arial", 10, QFont.Bold)) + painter.drawText(self.width() - 14, 14, "!") + + def set_data(self, train_number: str, cleaning_type: str, has_work: bool): + """데이터 설정""" + self._train_number = train_number + self._cleaning_type = cleaning_type + self._has_work = has_work + self._update_display() + self.update() + + def clear(self): + """슬롯 비우기""" + self._train_number = "" + self._cleaning_type = "없음" + self._has_work = False + self._update_display() + self.update() + + +class ShiftInspectionRow(QWidget): + """ + 근무 유형별 일상검수 행 + + 주간/야간 각각의 5개 슬롯을 표시합니다. + """ + + slot_clicked = Signal(str, int) # 근무유형, 슬롯번호 + + def __init__(self, shift_type: str, parent=None): + super().__init__(parent) + + self.config = ConfigManager() + self.shift_type = shift_type + self.slots: List[TrainSlot] = [] + + self._setup_ui() + + def _setup_ui(self): + """UI 설정""" + layout = QHBoxLayout(self) + layout.setContentsMargins(0, 0, 0, 0) + layout.setSpacing(8) + + # 근무 유형 라벨 + shift_label = QLabel(self.shift_type) + shift_label.setFixedWidth(40) + shift_label.setFont(QFont("GmarketSans", 11, QFont.Bold)) + shift_label.setAlignment(Qt.AlignCenter) + + theme = self.config.theme + text_color = "#f8fafc" if theme == 'dark' else "#1e293b" + shift_label.setStyleSheet(f"color: {text_color};") + + layout.addWidget(shift_label) + + # 슬롯들 + for i in range(DAILY_INSPECTION_SLOTS): + slot = TrainSlot(i + 1) + slot.slot_clicked.connect( + lambda num, st=self.shift_type: self.slot_clicked.emit(st, num) + ) + self.slots.append(slot) + layout.addWidget(slot) + + layout.addStretch() + + def set_slot_data(self, slot_number: int, train_number: str, cleaning_type: str, has_work: bool): + """슬롯 데이터 설정""" + if 1 <= slot_number <= len(self.slots): + self.slots[slot_number - 1].set_data(train_number, cleaning_type, has_work) + + def clear_all(self): + """모든 슬롯 비우기""" + for slot in self.slots: + slot.clear() + + +class DailyInspectionWidget(CardWidget): + """ + 일상검수 위젯 + + 주간/야간 일상검수 편성을 표시하고 관리합니다. + + Examples: + >>> widget = DailyInspectionWidget() + >>> widget.load_data() + """ + + def __init__(self, parent=None): + super().__init__(parent, padding=12, radius=12) + + self.crud = CRUDManager() + self._current_date = date.today() + + self._setup_ui() + self._connect_signals() + + logger.info("일상검수 위젯 초기화 완료") + + def _setup_ui(self): + """UI 설정""" + # 헤더 + header = QWidget() + header_layout = QHBoxLayout(header) + header_layout.setContentsMargins(0, 0, 0, 0) + + title = QLabel("📋 일상검수") + title.setFont(QFont("GmarketSans", 14, QFont.Bold)) + + theme = self.config.theme + text_color = "#f8fafc" if theme == 'dark' else "#1e293b" + title.setStyleSheet(f"color: {text_color};") + + header_layout.addWidget(title) + header_layout.addStretch() + + self.layout.addWidget(header) + + # 구분선 + separator = QFrame() + separator.setFrameShape(QFrame.HLine) + separator.setStyleSheet("color: #334155;" if theme == 'dark' else "color: #e2e8f0;") + self.layout.addWidget(separator) + + # 주간/야간 행 + self.day_row = ShiftInspectionRow("주간") + self.day_row.slot_clicked.connect(self._on_slot_clicked) + self.layout.addWidget(self.day_row) + + self.night_row = ShiftInspectionRow("야간") + self.night_row.slot_clicked.connect(self._on_slot_clicked) + self.layout.addWidget(self.night_row) + + # 범례 + self._create_legend() + + def _create_legend(self): + """범례 생성""" + legend = QWidget() + legend_layout = QHBoxLayout(legend) + legend_layout.setContentsMargins(0, 8, 0, 0) + legend_layout.setSpacing(16) + + theme = self.config.theme + text_color = "#94a3b8" if theme == 'dark' else "#64748b" + + items = [ + ("□", "#3b82f6", "중청소"), + ("○", "#ef4444", "대청소"), + ("!", "#f59e0b", "작업"), + ] + + for symbol, color, label in items: + item = QLabel(f'{symbol} {label}') + item.setFont(QFont("GmarketSans", 10)) + item.setStyleSheet(f"color: {text_color};") + legend_layout.addWidget(item) + + legend_layout.addStretch() + self.layout.addWidget(legend) + + def _connect_signals(self): + """시그널 연결""" + self.signals.daily_inspection_changed.connect(self._on_inspection_changed) + + def load_data(self): + """데이터 로드""" + # 주간 데이터 + day_inspections = self.crud.get_daily_inspections_by_date( + self._current_date, "주간" + ) + self.day_row.clear_all() + for inspection in day_inspections: + self.day_row.set_slot_data( + inspection.slot_number, + inspection.train_number or "", + inspection.cleaning_type or "없음", + inspection.has_work + ) + + # 야간 데이터 + night_inspections = self.crud.get_daily_inspections_by_date( + self._current_date, "야간" + ) + self.night_row.clear_all() + for inspection in night_inspections: + self.night_row.set_slot_data( + inspection.slot_number, + inspection.train_number or "", + inspection.cleaning_type or "없음", + inspection.has_work + ) + + def _on_slot_clicked(self, shift_type: str, slot_number: int): + """슬롯 클릭""" + # 현재 등록된 모든 편성 조회 (중복 방지용) + existing_trains = [] + day_inspections = self.crud.get_daily_inspections_by_date(self._current_date, "주간") + night_inspections = self.crud.get_daily_inspections_by_date(self._current_date, "야간") + + for insp in day_inspections + night_inspections: + if insp.train_number: + existing_trains.append(insp.train_number) + + dialog = TrainInputDialog( + self, + shift_type, + slot_number, + self._current_date, + existing_trains=existing_trains + ) + + if dialog.exec() == QDialog.Accepted: + data = dialog.get_data() + self.crud.upsert_daily_inspection( + inspection_date=self._current_date, + shift_type=shift_type, + slot_number=slot_number, + train_number=data.get("train_number", ""), + cleaning_type=data.get("cleaning_type", "없음"), + has_work=data.get("has_work", False), + work_content=data.get("work_content", ""), + is_work_completed=data.get("is_work_completed", False), + ) + self.load_data() + self.signals.daily_inspection_changed.emit(shift_type, slot_number, data.get("train_number", "")) + + def _on_inspection_changed(self, shift_type: str, slot_number: int, train_number: str): + """일상검수 변경 시그널""" + self.load_data() + + diff --git a/ui/widgets/memo_widget.py b/ui/widgets/memo_widget.py new file mode 100644 index 0000000..d96302d --- /dev/null +++ b/ui/widgets/memo_widget.py @@ -0,0 +1,221 @@ +# -*- coding: utf-8 -*- +""" +메모 위젯 모듈 +메모를 표시하고 관리하는 위젯입니다. +""" + +from datetime import date + +from PySide6.QtWidgets import ( + QWidget, QVBoxLayout, QHBoxLayout, QLabel, + QFrame, QTextEdit, QDialog +) +from PySide6.QtCore import Qt, Signal, QTimer +from PySide6.QtGui import QFont + +from ui.base.base_widget import BaseWidget, CardWidget +from ui.components.custom_button import IconButton +from ui.components.custom_input import CustomTextEdit +from ui.dialogs.memo_input_dialog import MemoInputDialog +from database.crud import CRUDManager +from database.models import Memo +from core.config import ConfigManager +from core.signals import GlobalSignals +from core.constants import AUTO_SAVE_INTERVAL +from core.logger import get_logger + +logger = get_logger(__name__) + + +class MemoWidget(CardWidget): + """ + 메모 위젯 + + 메모를 표시하고 관리합니다. + 더블클릭으로 편집 모드로 전환됩니다. + + Examples: + >>> widget = MemoWidget() + >>> widget.load_data() + """ + + memo_changed = Signal() + + def __init__(self, parent=None): + super().__init__(parent, padding=12, radius=12) + + self.crud = CRUDManager() + self._current_date = date.today() + self._current_memo: Memo = None + self._is_editing = False + + # 자동 저장 타이머 + self._save_timer = QTimer() + self._save_timer.setSingleShot(True) + self._save_timer.timeout.connect(self._auto_save) + + self._setup_ui() + self._connect_signals() + + logger.info("메모 위젯 초기화 완료") + + def _setup_ui(self): + """UI 설정""" + # 헤더 + header = QWidget() + header_layout = QHBoxLayout(header) + header_layout.setContentsMargins(0, 0, 0, 0) + + title = QLabel("📝 메모") + title.setFont(QFont("GmarketSans", 14, QFont.Bold)) + + theme = self.config.theme + text_color = "#f8fafc" if theme == 'dark' else "#1e293b" + title.setStyleSheet(f"color: {text_color};") + + header_layout.addWidget(title) + header_layout.addStretch() + + # 편집 버튼 + self.edit_btn = IconButton("✏️", size=28, tooltip="메모 편집") + self.edit_btn.clicked.connect(self._on_edit_clicked) + header_layout.addWidget(self.edit_btn) + + self.layout.addWidget(header) + + # 구분선 + separator = QFrame() + separator.setFrameShape(QFrame.HLine) + separator.setStyleSheet("color: #334155;" if theme == 'dark' else "color: #e2e8f0;") + self.layout.addWidget(separator) + + # 메모 내용 (표시 모드) + self.memo_display = QLabel("메모가 없습니다. 더블클릭하여 추가하세요.") + self.memo_display.setFont(QFont("GmarketSans", 12)) + self.memo_display.setWordWrap(True) + self.memo_display.setAlignment(Qt.AlignTop | Qt.AlignLeft) + self.memo_display.setMinimumHeight(100) + self.memo_display.setCursor(Qt.PointingHandCursor) + self.memo_display.mouseDoubleClickEvent = lambda e: self._on_edit_clicked() + + if theme == 'dark': + self.memo_display.setStyleSheet("color: #e2e8f0;") + else: + self.memo_display.setStyleSheet("color: #374151;") + + self.layout.addWidget(self.memo_display, 1) + + # 메모 내용 (편집 모드) + self.memo_edit = CustomTextEdit( + placeholder="메모를 입력하세요...", + min_height=100 + ) + self.memo_edit.text_changed_signal.connect(self._on_text_changed) + self.memo_edit.hide() + + self.layout.addWidget(self.memo_edit, 1) + + # 저장/취소 버튼 (편집 모드) + self.button_widget = QWidget() + button_layout = QHBoxLayout(self.button_widget) + button_layout.setContentsMargins(0, 8, 0, 0) + button_layout.setSpacing(8) + button_layout.addStretch() + + self.cancel_btn = IconButton("✕", size=28, tooltip="취소") + self.cancel_btn.clicked.connect(self._on_cancel_clicked) + button_layout.addWidget(self.cancel_btn) + + self.save_btn = IconButton("✓", size=28, tooltip="저장") + self.save_btn.clicked.connect(self._on_save_clicked) + button_layout.addWidget(self.save_btn) + + self.button_widget.hide() + self.layout.addWidget(self.button_widget) + + def _connect_signals(self): + """시그널 연결""" + self.signals.memo_changed.connect(self._on_memo_signal_changed) + + def load_data(self): + """데이터 로드""" + self._current_memo = self.crud.get_latest_memo(self._current_date) + + if self._current_memo and self._current_memo.content: + self.memo_display.setText(self._current_memo.content) + else: + theme = self.config.theme + placeholder_color = "#64748b" if theme == 'dark' else "#94a3b8" + self.memo_display.setText("메모가 없습니다. 더블클릭하여 추가하세요.") + self.memo_display.setStyleSheet(f"color: {placeholder_color};") + + def _on_edit_clicked(self): + """편집 버튼 클릭""" + self._is_editing = True + + # 표시 모드 숨기기 + self.memo_display.hide() + self.edit_btn.hide() + + # 편집 모드 표시 + self.memo_edit.show() + self.button_widget.show() + + # 현재 내용 설정 + if self._current_memo and self._current_memo.content: + self.memo_edit.set_text(self._current_memo.content) + else: + self.memo_edit.set_text("") + + self.memo_edit.setFocus() + + def _on_save_clicked(self): + """저장 버튼 클릭""" + content = self.memo_edit.get_text() + + self.crud.upsert_memo( + memo_date=self._current_date, + content=content + ) + + self._exit_edit_mode() + self.load_data() + self.memo_changed.emit() + + def _on_cancel_clicked(self): + """취소 버튼 클릭""" + self._exit_edit_mode() + + def _exit_edit_mode(self): + """편집 모드 종료""" + self._is_editing = False + self._save_timer.stop() + + # 편집 모드 숨기기 + self.memo_edit.hide() + self.button_widget.hide() + + # 표시 모드 표시 + self.memo_display.show() + self.edit_btn.show() + + def _on_text_changed(self, text: str): + """텍스트 변경 시 자동 저장 타이머 시작""" + if self._is_editing: + self._save_timer.start(AUTO_SAVE_INTERVAL * 1000) + + def _auto_save(self): + """자동 저장""" + if self._is_editing: + content = self.memo_edit.get_text() + self.crud.upsert_memo( + memo_date=self._current_date, + content=content + ) + logger.debug("메모 자동 저장") + + def _on_memo_signal_changed(self, memo_id: int): + """메모 변경 시그널""" + self.load_data() + + diff --git a/ui/widgets/todo_list.py b/ui/widgets/todo_list.py new file mode 100644 index 0000000..2d88448 --- /dev/null +++ b/ui/widgets/todo_list.py @@ -0,0 +1,494 @@ +# -*- coding: utf-8 -*- +""" +할일 목록 위젯 모듈 +할일 목록을 표시하고 관리하는 위젯입니다. +""" + +from datetime import date, datetime +from typing import List, Dict + +from PySide6.QtWidgets import ( + QWidget, QVBoxLayout, QHBoxLayout, QLabel, + QPushButton, QFrame, QScrollArea, QCheckBox, QDialog, + QMenu +) +from PySide6.QtCore import Qt, Signal +from PySide6.QtGui import QFont + +from ui.base.base_widget import BaseWidget, CardWidget +from ui.components.custom_button import CustomButton, IconButton +from ui.dialogs.todo_input_dialog import TodoInputDialog +from database.crud import CRUDManager +from database.models import Todo, TodoCategory +from core.config import ConfigManager +from core.signals import GlobalSignals +from core.logger import get_logger + +logger = get_logger(__name__) + + +# 카테고리별 색상 및 아이콘 +CATEGORY_STYLES = { + TodoCategory.GENERAL: { + "icon": "📝", + "color": "#3b82f6", + "label": "일반", + }, + TodoCategory.ARRIVAL_INSPECTION: { + "icon": "🚃", + "color": "#8b5cf6", + "label": "도착검수", + }, + TodoCategory.TASK: { + "icon": "🔧", + "color": "#f59e0b", + "label": "작업", + }, +} + + +class TodoItem(QWidget): + """ + 할일 항목 위젯 + + 할일 하나를 표시하는 위젯입니다. + """ + + status_changed = Signal(int, bool) # todo_id, is_completed + item_clicked = Signal(int) # todo_id + category_changed = Signal(int, str) # todo_id, new_category + + def __init__(self, todo: Todo, parent=None): + super().__init__(parent) + + self.config = ConfigManager() + self.todo = todo + + self._setup_ui() + + def _setup_ui(self): + """UI 설정""" + layout = QHBoxLayout(self) + layout.setContentsMargins(8, 8, 8, 8) + layout.setSpacing(12) + + # 카테고리 아이콘 + category = self.todo.category or TodoCategory.GENERAL + style = CATEGORY_STYLES.get(category, CATEGORY_STYLES[TodoCategory.GENERAL]) + + category_label = QLabel(style["icon"]) + category_label.setFixedWidth(24) + category_label.setFont(QFont("Segoe UI Emoji", 14)) + layout.addWidget(category_label) + + # 체크박스 + self.checkbox = QCheckBox() + self.checkbox.setChecked(self.todo.is_completed) + self.checkbox.stateChanged.connect(self._on_checkbox_changed) + layout.addWidget(self.checkbox) + + # 내용 + content_widget = QWidget() + content_widget.setCursor(Qt.PointingHandCursor) + content_layout = QVBoxLayout(content_widget) + content_layout.setContentsMargins(0, 0, 0, 0) + content_layout.setSpacing(2) + + # 할일 내용 + self.content_label = QLabel(self.todo.content or "") + self.content_label.setFont(QFont("GmarketSans", 12)) + self.content_label.setWordWrap(True) + + # 부가 정보 + info_parts = [] + if self.todo.target_train: + info_parts.append(f"편성: {self.todo.target_train}") + if self.todo.schedule: + info_parts.append(self.todo.schedule) + + self.info_label = QLabel(" | ".join(info_parts) if info_parts else "") + self.info_label.setFont(QFont("GmarketSans", 10)) + + content_layout.addWidget(self.content_label) + if info_parts: + content_layout.addWidget(self.info_label) + + layout.addWidget(content_widget, 1) + + # 카테고리 태그 + if category != TodoCategory.GENERAL: + tag = QLabel(style["label"]) + tag.setFont(QFont("GmarketSans", 9)) + tag.setStyleSheet(f""" + background-color: {style['color']}; + color: white; + padding: 2px 6px; + border-radius: 4px; + """) + layout.addWidget(tag) + + # 클릭 이벤트 + content_widget.mousePressEvent = lambda e: self.item_clicked.emit(self.todo.id) + + self._apply_style() + + def _apply_style(self): + """스타일 적용""" + theme = self.config.theme + category = self.todo.category or TodoCategory.GENERAL + cat_style = CATEGORY_STYLES.get(category, CATEGORY_STYLES[TodoCategory.GENERAL]) + + if theme == 'dark': + bg = "#1e293b" + text = "#f8fafc" + secondary = "#64748b" + completed_text = "#475569" + else: + bg = "#ffffff" + text = "#1e293b" + secondary = "#94a3b8" + completed_text = "#cbd5e1" + + if self.todo.is_completed: + text = completed_text + self.content_label.setStyleSheet(f"color: {text}; text-decoration: line-through;") + else: + self.content_label.setStyleSheet(f"color: {text};") + + self.info_label.setStyleSheet(f"color: {secondary};") + + # 카테고리에 따른 왼쪽 테두리 색상 + border_color = cat_style["color"] + + self.setStyleSheet(f""" + TodoItem {{ + background-color: {bg}; + border-radius: 8px; + border-left: 3px solid {border_color}; + }} + + QCheckBox::indicator {{ + width: 18px; + height: 18px; + border-radius: 4px; + }} + + QCheckBox::indicator:unchecked {{ + border: 2px solid #64748b; + background-color: transparent; + }} + + QCheckBox::indicator:checked {{ + border: 2px solid #22c55e; + background-color: #22c55e; + }} + """) + + def _on_checkbox_changed(self, state: int): + """체크박스 상태 변경""" + is_completed = state == Qt.Checked + self.todo.is_completed = is_completed + self._apply_style() + self.status_changed.emit(self.todo.id, is_completed) + + def contextMenuEvent(self, event): + """컨텍스트 메뉴 이벤트""" + menu = QMenu(self) + + # 스타일 설정 + theme = self.config.theme + bg_color = "#334155" if theme == 'dark' else "#ffffff" + text_color = "#f8fafc" if theme == 'dark' else "#1e293b" + border_color = "#475569" if theme == 'dark' else "#e2e8f0" + + menu.setStyleSheet(f""" + QMenu {{ + background-color: {bg_color}; + color: {text_color}; + border: 1px solid {border_color}; + border-radius: 8px; + padding: 4px; + }} + QMenu::item {{ + padding: 6px 24px; + border-radius: 4px; + }} + QMenu::item:selected {{ + background-color: #3b82f6; + color: white; + }} + """) + + # 이동 가능한 카테고리 + # '고장', '지시', '작업', '기타'는 TodoCategory에 정의된 상수나 문자열이어야 함 + # models.py의 TodoCategory는 Enum이 아닐 수도 있음. 확인 필요하지만 일단 문자열로 처리 + # TodoCategory.GENERAL="일반", ARRIVAL="도착검수", TASK="작업" + # 사용자가 요청한 "고장", "지시", "기타"는 TodoCategory에 없을 수 있음. + # 하지만 models.py를 보면 TodoCategory는 클래스로 정의되어 있고 상수가 있음. + # 일단 요청대로 문자열을 사용. + + actions = [ + ("🔧 작업으로 이동", "작업"), + ("⚠️ 고장으로 이동", "고장"), + ("📢 지시로 이동", "지시"), + ("📝 기타로 이동", "기타"), + ("📄 일반으로 이동", "일반"), + ] + + current_category = self.todo.category or "일반" + + for label, category in actions: + if category != current_category: + action = menu.addAction(label) + # lambda capture issue fix + action.triggered.connect(lambda checked=False, c=category: self.category_changed.emit(self.todo.id, c)) + + menu.exec(event.globalPos()) + + +class CategoryFilterChip(QPushButton): + """카테고리 필터 칩""" + + filter_changed = Signal(str, bool) # category, is_active + + def __init__(self, category: str, parent=None): + super().__init__(parent) + + self.config = ConfigManager() + self.category = category + self._is_active = True + + style = CATEGORY_STYLES.get(category, CATEGORY_STYLES[TodoCategory.GENERAL]) + self.setText(f"{style['icon']} {style['label']}") + self.icon_color = style["color"] + + self.setFont(QFont("GmarketSans", 10)) + self.setCursor(Qt.PointingHandCursor) + self.setFixedHeight(28) + + self.clicked.connect(self._on_clicked) + self._apply_style() + + def _on_clicked(self): + """클릭 이벤트""" + self._is_active = not self._is_active + self._apply_style() + self.filter_changed.emit(self.category, self._is_active) + + def _apply_style(self): + """스타일 적용""" + theme = self.config.theme + + if self._is_active: + self.setStyleSheet(f""" + QPushButton {{ + background-color: {self.icon_color}; + color: white; + border: none; + border-radius: 4px; + padding: 0 8px; + }} + QPushButton:hover {{ + opacity: 0.8; + }} + """) + else: + if theme == 'dark': + bg = "#334155" + text = "#64748b" + else: + bg = "#e2e8f0" + text = "#94a3b8" + + self.setStyleSheet(f""" + QPushButton {{ + background-color: {bg}; + color: {text}; + border: none; + border-radius: 4px; + padding: 0 8px; + }} + QPushButton:hover {{ + color: {self.icon_color}; + }} + """) + + +class TodoListWidget(CardWidget): + """ + 할일 목록 위젯 + + 할일 목록을 표시하고 관리합니다. + 카테고리별로 필터링할 수 있습니다. + + Examples: + >>> widget = TodoListWidget() + >>> widget.load_data() + """ + + def __init__(self, parent=None): + super().__init__(parent, padding=12, radius=12) + + self.crud = CRUDManager() + self._current_date = date.today() + self._todo_items: List[TodoItem] = [] + self._active_filters: Dict[str, bool] = { + TodoCategory.GENERAL: True, + TodoCategory.ARRIVAL_INSPECTION: True, + TodoCategory.TASK: True, + } + + self._setup_ui() + self._connect_signals() + + logger.info("할일 목록 위젯 초기화 완료") + + def _setup_ui(self): + """UI 설정""" + # 헤더 + header = QWidget() + header_layout = QHBoxLayout(header) + header_layout.setContentsMargins(0, 0, 0, 0) + + title = QLabel("✅ 할일 목록") + title.setFont(QFont("GmarketSans", 14, QFont.Bold)) + + theme = self.config.theme + text_color = "#f8fafc" if theme == 'dark' else "#1e293b" + title.setStyleSheet(f"color: {text_color};") + + header_layout.addWidget(title) + header_layout.addStretch() + + # 추가 버튼 + add_btn = IconButton("+", size=28, tooltip="할일 추가") + add_btn.clicked.connect(self._on_add_clicked) + header_layout.addWidget(add_btn) + + self.layout.addWidget(header) + + # 카테고리 필터 + filter_container = QWidget() + filter_layout = QHBoxLayout(filter_container) + filter_layout.setContentsMargins(0, 4, 0, 4) + filter_layout.setSpacing(6) + + self._filter_chips = [] + for category in [TodoCategory.GENERAL, TodoCategory.ARRIVAL_INSPECTION, TodoCategory.TASK]: + chip = CategoryFilterChip(category) + chip.filter_changed.connect(self._on_filter_changed) + self._filter_chips.append(chip) + filter_layout.addWidget(chip) + + filter_layout.addStretch() + self.layout.addWidget(filter_container) + + # 구분선 + separator = QFrame() + separator.setFrameShape(QFrame.HLine) + separator.setStyleSheet("color: #334155;" if theme == 'dark' else "color: #e2e8f0;") + self.layout.addWidget(separator) + + # 스크롤 영역 + scroll = QScrollArea() + scroll.setWidgetResizable(True) + scroll.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) + scroll.setFrameShape(QFrame.NoFrame) + scroll.setStyleSheet("background: transparent;") + + # 할일 컨테이너 + self.todo_container = QWidget() + self.todo_layout = QVBoxLayout(self.todo_container) + self.todo_layout.setContentsMargins(0, 0, 0, 0) + self.todo_layout.setSpacing(8) + self.todo_layout.addStretch() + + scroll.setWidget(self.todo_container) + self.layout.addWidget(scroll, 1) + + def _connect_signals(self): + """시그널 연결""" + self.signals.todo_added.connect(self._on_todo_added) + self.signals.todo_status_changed.connect(self._on_todo_status_changed) + + def _on_filter_changed(self, category: str, is_active: bool): + """필터 변경""" + self._active_filters[category] = is_active + self._apply_filter() + + def _apply_filter(self): + """필터 적용""" + for item in self._todo_items: + category = item.todo.category or TodoCategory.GENERAL + should_show = self._active_filters.get(category, True) + item.setVisible(should_show) + + def load_data(self): + """데이터 로드""" + # 기존 아이템 제거 + for item in self._todo_items: + self.todo_layout.removeWidget(item) + item.deleteLater() + self._todo_items.clear() + + # 할일 조회 + todos = self.crud.get_todos_by_date(self._current_date, include_incomplete=True) + + # 카테고리별로 정렬 (도착검수 > 작업 > 일반) + category_order = { + TodoCategory.ARRIVAL_INSPECTION: 0, + TodoCategory.TASK: 1, + TodoCategory.GENERAL: 2, + } + todos.sort(key=lambda t: (t.is_completed, category_order.get(t.category or TodoCategory.GENERAL, 2))) + + # 할일 아이템 추가 + for todo in todos: + item = TodoItem(todo) + item.status_changed.connect(self._on_item_status_changed) + item.item_clicked.connect(self._on_item_clicked) + item.category_changed.connect(self._on_category_changed) + + # stretch 앞에 삽입 + self.todo_layout.insertWidget(self.todo_layout.count() - 1, item) + self._todo_items.append(item) + + # 필터 적용 + self._apply_filter() + + def _on_add_clicked(self): + """추가 버튼 클릭""" + dialog = TodoInputDialog(self, self._current_date) + if dialog.exec() == QDialog.Accepted: + data = dialog.get_data() + self.crud.create_todo(**data) + self.load_data() + + def _on_item_status_changed(self, todo_id: int, is_completed: bool): + """할일 상태 변경""" + completed_at = datetime.now().isoformat() if is_completed else None + self.crud.update_todo(todo_id, is_completed=is_completed, completed_at=completed_at) + + def _on_item_clicked(self, todo_id: int): + """할일 항목 클릭 (편집)""" + todo = self.crud.get_todo(todo_id) + if todo: + dialog = TodoInputDialog(self, self._current_date, todo) + if dialog.exec() == QDialog.Accepted: + data = dialog.get_data() + self.crud.update_todo(todo_id, **data) + self.load_data() + + def _on_todo_added(self, todo_id: int): + """할일 추가 시그널""" + self.load_data() + + def _on_todo_status_changed(self, todo_id: int, is_completed: bool): + """할일 상태 변경 시그널""" + # 이미 처리됨 + pass + + def _on_category_changed(self, todo_id: int, new_category: str): + """카테고리 변경""" + self.crud.update_todo(todo_id, category=new_category) + self.load_data() diff --git a/updater.py b/updater.py new file mode 100644 index 0000000..8ddeda6 --- /dev/null +++ b/updater.py @@ -0,0 +1,159 @@ +# -*- coding: utf-8 -*- +""" +Updater Application +Downloads and extracts updates for the Handover System. +""" + +import sys +import os +import time +import zipfile +import argparse +import shutil +import subprocess +import requests +from pathlib import Path +from PySide6.QtWidgets import ( + QApplication, QWidget, QVBoxLayout, QLabel, QProgressBar, QMessageBox +) +from PySide6.QtCore import Qt, QThread, Signal + +class UpdateWorker(QThread): + progress_changed = Signal(int) + status_changed = Signal(str) + finished = Signal(bool, str) + + def __init__(self, download_url, target_dir, restart_exe): + super().__init__() + self.download_url = download_url + self.target_dir = Path(target_dir) + self.restart_exe = restart_exe + + def run(self): + try: + # 1. Wait for main application to close + self.status_changed.emit("메인 애플리케이션 종료 대기 중...") + time.sleep(2) # Give it a moment + + # Simple check: try to rename the executable. If it fails, it's still running. + # A more robust way would be checking process list, but this is simple and effective. + exe_path = self.target_dir / self.restart_exe + max_retries = 10 + for i in range(max_retries): + try: + if exe_path.exists(): + # Try to open for exclusive access + with open(exe_path, 'ab'): + pass + break + except IOError: + if i == max_retries - 1: + raise Exception("애플리케이션이 종료되지 않았습니다. 수동으로 종료해주세요.") + time.sleep(1) + + # 2. Download Update + self.status_changed.emit("업데이트 다운로드 중...") + local_zip = self.target_dir / "update.zip" + + response = requests.get(self.download_url, stream=True) + response.raise_for_status() + + total_size = int(response.headers.get('content-length', 0)) + block_size = 8192 + downloaded = 0 + + with open(local_zip, 'wb') as f: + for chunk in response.iter_content(chunk_size=block_size): + if chunk: + f.write(chunk) + downloaded += len(chunk) + if total_size > 0: + percent = int((downloaded / total_size) * 50) # First 50% is download + self.progress_changed.emit(percent) + + # 3. Extract Update + self.status_changed.emit("업데이트 설치 중...") + with zipfile.ZipFile(local_zip, 'r') as zip_ref: + file_list = zip_ref.namelist() + total_files = len(file_list) + + for idx, file in enumerate(file_list): + zip_ref.extract(file, self.target_dir) + percent = 50 + int((idx / total_files) * 50) # Last 50% is extraction + self.progress_changed.emit(percent) + + # Cleanup + try: + os.remove(local_zip) + except: + pass + + self.progress_changed.emit(100) + self.status_changed.emit("업데이트 완료!") + self.finished.emit(True, "성공") + + except Exception as e: + self.finished.emit(False, str(e)) + +class UpdaterWindow(QWidget): + def __init__(self, download_url, target_dir, restart_exe): + super().__init__() + self.download_url = download_url + self.target_dir = target_dir + self.restart_exe = restart_exe + + self.init_ui() + self.start_update() + + def init_ui(self): + self.setWindowTitle("소프트웨어 업데이트") + self.setFixedSize(400, 150) + + layout = QVBoxLayout() + + self.status_label = QLabel("준비 중...") + self.status_label.setAlignment(Qt.AlignCenter) + layout.addWidget(self.status_label) + + self.progress_bar = QProgressBar() + self.progress_bar.setRange(0, 100) + layout.addWidget(self.progress_bar) + + self.setLayout(layout) + + def start_update(self): + self.worker = UpdateWorker(self.download_url, self.target_dir, self.restart_exe) + self.worker.progress_changed.connect(self.progress_bar.setValue) + self.worker.status_changed.connect(self.status_label.setText) + self.worker.finished.connect(self.on_finished) + self.worker.start() + + def on_finished(self, success, message): + if success: + # Restart application + exe_path = Path(self.target_dir) / self.restart_exe + if exe_path.exists(): + subprocess.Popen([str(exe_path)]) + else: + QMessageBox.warning(self, "오류", f"실행 파일을 찾을 수 없습니다:\n{exe_path}") + + self.close() + else: + QMessageBox.critical(self, "업데이트 실패", f"오류가 발생했습니다:\n{message}") + self.close() + +def main(): + parser = argparse.ArgumentParser(description='Handover System Updater') + parser.add_argument('--url', required=True, help='Download URL for the update') + parser.add_argument('--target', required=True, help='Target installation directory') + parser.add_argument('--restart', required=True, help='Executable name to restart') + + args = parser.parse_args() + + app = QApplication(sys.argv) + window = UpdaterWindow(args.url, args.target, args.restart) + window.show() + sys.exit(app.exec()) + +if __name__ == "__main__": + main() diff --git a/updater.spec b/updater.spec new file mode 100644 index 0000000..7cb0c9c --- /dev/null +++ b/updater.spec @@ -0,0 +1,39 @@ +# -*- mode: python ; coding: utf-8 -*- + + +a = Analysis( + ['updater.py'], + pathex=[], + binaries=[], + datas=[], + hiddenimports=[], + hookspath=[], + hooksconfig={}, + runtime_hooks=[], + excludes=[], + noarchive=False, + optimize=0, +) +pyz = PYZ(a.pure) + +exe = EXE( + pyz, + a.scripts, + a.binaries, + a.datas, + [], + name='updater', + debug=False, + bootloader_ignore_signals=False, + strip=False, + upx=True, + upx_exclude=[], + runtime_tmpdir=None, + console=False, + disable_windowed_traceback=False, + argv_emulation=False, + target_arch=None, + codesign_identity=None, + entitlements_file=None, + icon=['assets\\icons\\app_icon.ico'], +) diff --git a/utils/__init__.py b/utils/__init__.py new file mode 100644 index 0000000..d46b21b --- /dev/null +++ b/utils/__init__.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +""" +Utils 모듈 패키지 +유틸리티 함수들의 집합 + +이 패키지는 다음을 포함합니다: +- helpers: 헬퍼 함수 +- validators: 유효성 검사 +- formatters: 포맷터 +- common_methods: 공통 메서드 (편성 팝업 등) +""" + +from .helpers import * +from .validators import * +from .formatters import * +from .common_methods import TrainInfoMixin + +__all__ = [ + 'TrainInfoMixin', +] + + diff --git a/utils/common_methods.py b/utils/common_methods.py new file mode 100644 index 0000000..7843a25 --- /dev/null +++ b/utils/common_methods.py @@ -0,0 +1,191 @@ +# -*- coding: utf-8 -*- +""" +공통 메서드 모듈 +여러 모듈에서 반복 사용되는 공통 기능을 제공합니다. +""" + +from typing import List, Optional +from datetime import date + +from PySide6.QtCore import QPoint + +from database.crud import CRUDManager +from database.models import Fault +from core.signals import GlobalSignals +from core.logger import get_logger + +logger = get_logger(__name__) + + +class TrainInfoMixin: + """ + 편성 정보 관련 공통 기능을 제공하는 Mixin 클래스 + + 편성번호 필드가 있는 위젯에서 사용합니다. + 마우스 호버 시 최근 고장 목록 팝업을 표시합니다. + + Examples: + >>> class MyTable(QTableWidget, TrainInfoMixin): + ... def __init__(self): + ... super().__init__() + ... self.setup_train_info() + """ + + def setup_train_info(self): + """편성 정보 기능 초기화""" + self.crud = CRUDManager() + self.signals = GlobalSignals() + self._train_popup = None + + def get_recent_faults(self, train_number: str, limit: int = 10) -> List[Fault]: + """ + 특정 편성의 최근 고장 목록 조회 + + Args: + train_number: 편성번호 + limit: 최대 개수 + + Returns: + 고장 리스트 + """ + if not hasattr(self, 'crud'): + self.crud = CRUDManager() + + return self.crud.get_faults_by_train(train_number, limit) + + def show_train_popup(self, train_number: str, position: QPoint): + """ + 편성 정보 팝업 표시 + + Args: + train_number: 편성번호 + position: 표시 위치 + """ + if not train_number: + return + + # 팝업이 없으면 생성 + if self._train_popup is None: + from ui.components.train_info_popup import TrainInfoPopup + self._train_popup = TrainInfoPopup() + self._train_popup.detail_requested.connect(self.open_train_detail) + + self._train_popup.show_train_info(train_number, position) + + def hide_train_popup(self): + """편성 팝업 숨기기""" + if self._train_popup: + self._train_popup.hide_popup() + + def open_train_detail(self, train_number: str): + """ + 편성 상세 정보 다이얼로그 열기 + + Args: + train_number: 편성번호 + """ + logger.info(f"편성 상세 정보 요청: {train_number}") + # TODO: 편성 상세 다이얼로그 구현 + + def check_train_has_work(self, train_number: str, target_date: date = None) -> bool: + """ + 해당 편성에 작업이 있는지 확인 + + Args: + train_number: 편성번호 + target_date: 확인 날짜 (기본: 오늘) + + Returns: + 작업 존재 여부 + """ + if not hasattr(self, 'crud'): + self.crud = CRUDManager() + + if target_date is None: + target_date = date.today() + + return self.crud.check_train_has_work(train_number, target_date) + + def on_train_hover(self, train_number: str, x: int, y: int): + """ + 편성 필드 위에 마우스 호버 시 호출 + + 시그널을 통해 팝업 표시를 요청합니다. + + Args: + train_number: 편성번호 + x: 마우스 X 좌표 + y: 마우스 Y 좌표 + """ + if not hasattr(self, 'signals'): + self.signals = GlobalSignals() + + self.signals.show_train_popup.emit(train_number, x, y) + + def on_train_leave(self): + """편성 필드에서 마우스가 벗어났을 때 호출""" + if not hasattr(self, 'signals'): + self.signals = GlobalSignals() + + self.signals.hide_train_popup.emit() + + +def format_fault_summary(fault: Fault) -> str: + """ + 고장 요약 문자열 생성 + + Args: + fault: 고장 객체 + + Returns: + 요약 문자열 + """ + parts = [] + + if fault.occurrence_date: + if isinstance(fault.occurrence_date, date): + parts.append(fault.occurrence_date.strftime("%m/%d")) + else: + parts.append(str(fault.occurrence_date)[:5]) + + if fault.car_number: + parts.append(f"{fault.car_number}호차") + + if fault.device_category: + parts.append(fault.device_category) + + content = fault.fault_content or "" + if len(content) > 30: + content = content[:30] + "..." + parts.append(content) + + return " | ".join(parts) + + +def create_fault_popup_content(faults: List[Fault]) -> str: + """ + 팝업에 표시할 고장 목록 HTML 생성 + + Args: + faults: 고장 리스트 + + Returns: + HTML 문자열 + """ + if not faults: + return "

    최근 고장 기록이 없습니다.

    " + + html_parts = ["
      "] + + for fault in faults[:5]: # 최대 5개 + summary = format_fault_summary(fault) + html_parts.append(f"
    • {summary}
    • ") + + html_parts.append("
    ") + + if len(faults) > 5: + html_parts.append(f"

    ... 외 {len(faults) - 5}건

    ") + + return "\n".join(html_parts) + + diff --git a/utils/formatters.py b/utils/formatters.py new file mode 100644 index 0000000..159df69 --- /dev/null +++ b/utils/formatters.py @@ -0,0 +1,224 @@ +# -*- coding: utf-8 -*- +""" +포맷터 모듈 +데이터 포맷팅 함수를 제공합니다. +""" + +import json +from datetime import datetime, date, time +from typing import Any, Dict + +from core.logger import get_logger + +logger = get_logger(__name__) + + +def format_team_confirmations(confirmations: str) -> str: + """ + 팀 확인 상태 포맷팅 + + Args: + confirmations: JSON 문자열 + + Returns: + 포맷된 문자열 (예: "A✓ B✓ C✗ D✗") + """ + try: + data = json.loads(confirmations) + except (json.JSONDecodeError, TypeError): + data = {} + + result = [] + for team in ["A팀", "B팀", "C팀", "D팀"]: + initial = team[0] + if data.get(team, False): + result.append(f"{initial}✓") + else: + result.append(f"{initial}✗") + + return " ".join(result) + + +def format_bool(value: bool, true_text: str = "예", false_text: str = "아니오") -> str: + """ + 불린 값 포맷팅 + + Args: + value: 불린 값 + true_text: True일 때 텍스트 + false_text: False일 때 텍스트 + + Returns: + 포맷된 문자열 + """ + return true_text if value else false_text + + +def format_bool_check(value: bool) -> str: + """ + 불린 값을 체크 표시로 포맷팅 + + Args: + value: 불린 값 + + Returns: + ✓ 또는 빈 문자열 + """ + return "✓" if value else "" + + +def format_cleaning_type(cleaning_type: str) -> str: + """ + 청소 유형 포맷팅 + + Args: + cleaning_type: 청소 유형 + + Returns: + 아이콘과 함께 포맷된 문자열 + """ + if cleaning_type == "중청소": + return "□ 중청소" + elif cleaning_type == "대청소": + return "○ 대청소" + else: + return "" + + +def format_file_size(size_bytes: int) -> str: + """ + 파일 크기 포맷팅 + + Args: + size_bytes: 바이트 크기 + + Returns: + 포맷된 문자열 (예: "1.5 MB") + """ + if size_bytes < 1024: + return f"{size_bytes} B" + elif size_bytes < 1024 * 1024: + return f"{size_bytes / 1024:.1f} KB" + elif size_bytes < 1024 * 1024 * 1024: + return f"{size_bytes / 1024 / 1024:.1f} MB" + else: + return f"{size_bytes / 1024 / 1024 / 1024:.1f} GB" + + +def format_duration(seconds: int) -> str: + """ + 시간 길이 포맷팅 + + Args: + seconds: 초 + + Returns: + 포맷된 문자열 (예: "1시간 30분") + """ + if seconds < 60: + return f"{seconds}초" + elif seconds < 3600: + minutes = seconds // 60 + secs = seconds % 60 + if secs > 0: + return f"{minutes}분 {secs}초" + return f"{minutes}분" + else: + hours = seconds // 3600 + minutes = (seconds % 3600) // 60 + if minutes > 0: + return f"{hours}시간 {minutes}분" + return f"{hours}시간" + + +def format_relative_date(d: date) -> str: + """ + 상대적 날짜 포맷팅 + + Args: + d: date 객체 + + Returns: + 상대적 날짜 문자열 (예: "오늘", "어제", "2일 전") + """ + if d is None: + return "" + + today = date.today() + delta = (today - d).days + + if delta == 0: + return "오늘" + elif delta == 1: + return "어제" + elif delta == 2: + return "그저께" + elif delta < 7: + return f"{delta}일 전" + elif delta < 30: + weeks = delta // 7 + return f"{weeks}주 전" + elif delta < 365: + months = delta // 30 + return f"{months}개월 전" + else: + years = delta // 365 + return f"{years}년 전" + + +def format_train_display( + train_number: str, + cleaning_type: str = "없음", + has_work: bool = False +) -> str: + """ + 편성 표시 포맷팅 + + Args: + train_number: 편성번호 + cleaning_type: 청소유형 + has_work: 작업여부 + + Returns: + 포맷된 문자열 + """ + result = train_number + + if cleaning_type == "중청소": + result = f"[{result}]" # 대괄호 = 파란 네모 + elif cleaning_type == "대청소": + result = f"({result})" # 소괄호 = 빨간 동그라미 + + if has_work: + result = f"{result}!" # 느낌표 = 작업 있음 + + return result + + +def record_to_dict(record: Any, exclude_fields: list = None) -> Dict[str, Any]: + """ + 레코드를 딕셔너리로 변환 + + Args: + record: 레코드 객체 + exclude_fields: 제외할 필드 + + Returns: + 딕셔너리 + """ + exclude = exclude_fields or [] + + if hasattr(record, 'to_dict'): + data = record.to_dict() + elif hasattr(record, '__dict__'): + data = record.__dict__.copy() + else: + return {} + + # 제외 필드 제거 + for field in exclude: + data.pop(field, None) + + return data + + diff --git a/utils/helpers.py b/utils/helpers.py new file mode 100644 index 0000000..52440c4 --- /dev/null +++ b/utils/helpers.py @@ -0,0 +1,206 @@ +# -*- coding: utf-8 -*- +""" +헬퍼 함수 모듈 +다양한 유틸리티 함수를 제공합니다. +""" + +import os +import sys +from datetime import datetime, date, time +from typing import Any, Optional +from pathlib import Path + +from core.logger import get_logger + +logger = get_logger(__name__) + + +def get_app_path() -> Path: + """ + 애플리케이션 경로 반환 + + PyInstaller로 패키징된 경우와 개발 환경을 모두 처리합니다. + """ + if getattr(sys, 'frozen', False): + # PyInstaller 패키징된 경우 + return Path(sys.executable).parent + else: + # 개발 환경 + return Path(__file__).parent.parent + + +def format_date(d: date, format_str: str = "%Y-%m-%d") -> str: + """ + 날짜 포맷팅 + + Args: + d: date 객체 + format_str: 포맷 문자열 + + Returns: + 포맷된 문자열 + """ + if d is None: + return "" + if isinstance(d, str): + return d[:10] + return d.strftime(format_str) + + +def format_time(t: time, format_str: str = "%H:%M") -> str: + """ + 시간 포맷팅 + + Args: + t: time 객체 + format_str: 포맷 문자열 + + Returns: + 포맷된 문자열 + """ + if t is None: + return "" + if isinstance(t, str): + return t[:5] + return t.strftime(format_str) + + +def format_datetime(dt: datetime, format_str: str = "%Y-%m-%d %H:%M") -> str: + """ + 날짜시간 포맷팅 + + Args: + dt: datetime 객체 + format_str: 포맷 문자열 + + Returns: + 포맷된 문자열 + """ + if dt is None: + return "" + if isinstance(dt, str): + return dt[:16] + return dt.strftime(format_str) + + +def parse_date(date_str: str) -> Optional[date]: + """ + 문자열을 date로 파싱 + + Args: + date_str: 날짜 문자열 (YYYY-MM-DD) + + Returns: + date 객체 또는 None + """ + if not date_str: + return None + try: + return datetime.strptime(date_str[:10], "%Y-%m-%d").date() + except ValueError: + return None + + +def parse_time(time_str: str) -> Optional[time]: + """ + 문자열을 time으로 파싱 + + Args: + time_str: 시간 문자열 (HH:MM) + + Returns: + time 객체 또는 None + """ + if not time_str: + return None + try: + return datetime.strptime(time_str[:5], "%H:%M").time() + except ValueError: + return None + + +def truncate_string(s: str, max_length: int = 50, suffix: str = "...") -> str: + """ + 문자열 자르기 + + Args: + s: 원본 문자열 + max_length: 최대 길이 + suffix: 말줄임 접미사 + + Returns: + 잘린 문자열 + """ + if not s: + return "" + if len(s) <= max_length: + return s + return s[:max_length - len(suffix)] + suffix + + +def get_weekday_name(d: date) -> str: + """ + 요일 이름 반환 (한국어) + + Args: + d: date 객체 + + Returns: + 요일 이름 + """ + weekdays = ["월요일", "화요일", "수요일", "목요일", "금요일", "토요일", "일요일"] + return weekdays[d.weekday()] + + +def ensure_dir(path: Path) -> bool: + """ + 디렉토리 생성 확인 + + Args: + path: 디렉토리 경로 + + Returns: + 성공 여부 + """ + try: + path.mkdir(parents=True, exist_ok=True) + return True + except Exception as e: + logger.error(f"디렉토리 생성 실패: {path} - {e}") + return False + + +def safe_int(value: Any, default: int = 0) -> int: + """ + 안전한 int 변환 + + Args: + value: 변환할 값 + default: 기본값 + + Returns: + 정수 + """ + try: + return int(value) + except (ValueError, TypeError): + return default + + +def safe_float(value: Any, default: float = 0.0) -> float: + """ + 안전한 float 변환 + + Args: + value: 변환할 값 + default: 기본값 + + Returns: + 실수 + """ + try: + return float(value) + except (ValueError, TypeError): + return default + + diff --git a/utils/validators.py b/utils/validators.py new file mode 100644 index 0000000..0eed9b1 --- /dev/null +++ b/utils/validators.py @@ -0,0 +1,221 @@ +# -*- coding: utf-8 -*- +""" +유효성 검사 모듈 +다양한 입력 유효성 검사 함수를 제공합니다. +""" + +import re +from datetime import date, time +from typing import Optional + +from core.logger import get_logger + +logger = get_logger(__name__) + + +def is_valid_train_number(train_number: str) -> bool: + """ + 편성번호 유효성 검사 + + Args: + train_number: 편성번호 (예: "001", "123") + + Returns: + 유효 여부 + """ + if not train_number: + return False + + # 숫자로만 구성되고 1-3자리 + pattern = r"^\d{1,3}$" + return bool(re.match(pattern, train_number)) + + +def is_valid_car_number(car_number: str) -> bool: + """ + 호차 유효성 검사 + + Args: + car_number: 호차 (예: "1", "10") + + Returns: + 유효 여부 + """ + if not car_number: + return False + + try: + num = int(car_number) + return 1 <= num <= 10 # 보통 1~10호차 + except ValueError: + return False + + +def is_valid_date_string(date_str: str) -> bool: + """ + 날짜 문자열 유효성 검사 + + Args: + date_str: 날짜 문자열 (YYYY-MM-DD) + + Returns: + 유효 여부 + """ + if not date_str: + return False + + pattern = r"^\d{4}-\d{2}-\d{2}$" + if not re.match(pattern, date_str): + return False + + try: + year, month, day = map(int, date_str.split('-')) + date(year, month, day) + return True + except ValueError: + return False + + +def is_valid_time_string(time_str: str) -> bool: + """ + 시간 문자열 유효성 검사 + + Args: + time_str: 시간 문자열 (HH:MM) + + Returns: + 유효 여부 + """ + if not time_str: + return False + + pattern = r"^\d{2}:\d{2}$" + if not re.match(pattern, time_str): + return False + + try: + hour, minute = map(int, time_str.split(':')) + time(hour, minute) + return True + except ValueError: + return False + + +def is_valid_fault_code(fault_code: str) -> bool: + """ + 고장코드 유효성 검사 + + Args: + fault_code: 고장코드 + + Returns: + 유효 여부 + """ + if not fault_code: + return True # 선택 필드 + + # 알파벳과 숫자 조합, 최대 20자 + pattern = r"^[A-Za-z0-9\-_]{1,20}$" + return bool(re.match(pattern, fault_code)) + + +def is_required_field(value: Optional[str], field_name: str = "") -> tuple: + """ + 필수 필드 검사 + + Args: + value: 필드 값 + field_name: 필드 이름 + + Returns: + (유효 여부, 오류 메시지) + """ + if value is None or (isinstance(value, str) and not value.strip()): + return False, f"'{field_name}' 필드는 필수입니다." if field_name else "필수 필드입니다." + return True, "" + + +def validate_instruction_data(data: dict) -> tuple: + """ + 지시 데이터 유효성 검사 + + Args: + data: 지시 데이터 + + Returns: + (유효 여부, 오류 메시지 리스트) + """ + errors = [] + + # 필수 필드 + if not data.get('instruction_content'): + errors.append("지시내용은 필수입니다.") + + return len(errors) == 0, errors + + +def validate_fault_data(data: dict) -> tuple: + """ + 고장 데이터 유효성 검사 + + Args: + data: 고장 데이터 + + Returns: + (유효 여부, 오류 메시지 리스트) + """ + errors = [] + + # 필수 필드 + if not data.get('fault_content'): + errors.append("고장내용은 필수입니다.") + + # 편성번호 유효성 + if data.get('train_number') and not is_valid_train_number(data['train_number']): + errors.append("편성번호 형식이 올바르지 않습니다.") + + # 호차 유효성 + if data.get('car_number') and not is_valid_car_number(data['car_number']): + errors.append("호차 형식이 올바르지 않습니다.") + + return len(errors) == 0, errors + + +def validate_work_data(data: dict) -> tuple: + """ + 작업 데이터 유효성 검사 + + Args: + data: 작업 데이터 + + Returns: + (유효 여부, 오류 메시지 리스트) + """ + errors = [] + + # 필수 필드 + if not data.get('work_content'): + errors.append("작업내용은 필수입니다.") + + return len(errors) == 0, errors + + +def validate_misc_data(data: dict) -> tuple: + """ + 기타 데이터 유효성 검사 + + Args: + data: 기타 데이터 + + Returns: + (유효 여부, 오류 메시지 리스트) + """ + errors = [] + + # 필수 필드 + if not data.get('report_content'): + errors.append("전달내용은 필수입니다.") + + return len(errors) == 0, errors + +